tx · GpW6EFDpGAaQEzuU1vKeeLRo4VvLQ7F1aPWj2XBMKgek 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm: -0.10700000 Waves 2023.10.09 17:55 [2791239] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves
{ "type": 13, "id": "GpW6EFDpGAaQEzuU1vKeeLRo4VvLQ7F1aPWj2XBMKgek", "fee": 10700000, "feeAssetId": null, "timestamp": 1696863375723, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "3Adbi4WNjpD4yCxkebxcBmSkBHxjm6H3rEG8aHHrkkTXWjXRbAqtvQXUvpHZz7ywnKJMZVPn2BiGfEqTQ25SD6WM" ], "script": "base64:BgLhAQgCEgMKAQgSBAoCCAESAwoBBBIAEgMKAQgSABIDCgEIEgQKAgEIEgQKAgEIEgQKAgICEgUKAwEBARIAEgQKAggIEgASABIECgICAhIAEgMKAQgSBAoCCAgSAwoBGBIECgIICBIECgIICBIDCgEIEgMKARgSAwoBCBIFCgMICAgSBAoCCAgSBwoFAQEBAQESAwoBARIFCgMBAQgSAwoBCBIDCgEIEgASBAoCCAESBAoCCAESAwoBCBIECgIICBIDCgEIEgASAwoBCBIDCgEIEgMKAQgSBAoCAgISBAoCAgISAJwCAAlEQVlNSUxMSVMAgLiZKQEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBGFkZHIJAKwCAgIQbGFzdEFyYlRpbWVVc2VyXwUEYWRkcgAGU0NBTEU4AIDC1y8ADHhwTGV2ZWxTY2FsZQCAGQAPeHBMZXZlbFJlY2lwUG93AKAfABJudW1Qb2ludHNPbkxldmVsVXAAAwAOcm9iYmVyeUNvc3RNaW4AgMLXLwAUcm9iYmVyeUNvb2xkb3duQ29lZmYAkAMADHJlcXVpcmVtZW50cwkAzAgCAghTdHJlbmd0aAkAzAgCAghBY2N1cmFjeQkAzAgCAglJbnRlbGxlY3QJAMwIAgIJRW5kdXJhbmNlCQDMCAICCURleHRlcml0eQkAzAgCAgVMZXZlbAkAzAgCAgZIZWFsdGgFA25pbAAMY2hhclN0cmVuZ3RoAAAADGNoYXJBY2N1cmFjeQABAA1jaGFySW50ZWxsZWN0AAIADWNoYXJFbmR1cmFuY2UAAwANY2hhckRleHRlcml0eQAEAAtzZWdCYWNrcGFjawAAAAtOVU1TRUdNRU5UUwAGAApOVU1NQUlOQVVYAAIACE1BWFNMT1RTAAIADU1BWFBST0RJTlNMT1QAHgAQbGFuZFJvYkNvb2xkb3ducwkAzAgCAAAJAMwIAgDAzyQJAMwIAgCg9zYJAMwIAgCA3MwUCQDMCAIAgK6mCgUDbmlsAA5NSU5fUkVTX1RPX1JPQgCA2sQJAAxyb2JJZHhMb2NrZWQAAQALZHVja0lkeEZyZWUAAAAQZHVja0lkeFByZXBhcmluZwABAQ1rZXlEdWNrSGVhbHRoAQtkdWNrQXNzZXRJZAkArAICAgtkdWNrSGVhbHRoXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tDaGFycwELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0NoYXJzXwULZHVja0Fzc2V0SWQBCWtleUR1Y2tYUAELZHVja0Fzc2V0SWQJAKwCAgIHZHVja1hQXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tMZXZlbAELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0xldmVsXwULZHVja0Fzc2V0SWQBEWtleUR1Y2tGcmVlUG9pbnRzAQtkdWNrQXNzZXRJZAkArAICAg9kdWNrRnJlZVBvaW50c18FC2R1Y2tBc3NldElkARBrZXlEdWNrRXF1aXBtZW50AQtkdWNrQXNzZXRJZAkArAICAg5kdWNrRXF1aXBtZW50XwULZHVja0Fzc2V0SWQBCWtleVVzZXJYUAEEYWRkcgkArAICAgd1c2VyWFBfBQRhZGRyAQxrZXlVc2VyTGV2ZWwBBGFkZHIJAKwCAgIKdXNlckxldmVsXwUEYWRkcgERa2V5VXNlckZyZWVQb2ludHMBBGFkZHIJAKwCAgIPdXNlckZyZWVQb2ludHNfBQRhZGRyAQ5rZXlTYXZlZEhlYWx0aAELZHVja0Fzc2V0SWQJAKwCAgIMc2F2ZWRIZWFsdGhfBQtkdWNrQXNzZXRJZAEQa2V5U2F2ZWRMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgIOc2F2ZWRMb2NhdGlvbl8FC2R1Y2tBc3NldElkAQxrZXlEdWNrQnVmZnMBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tCdWZmc18FC2R1Y2tBc3NldElkARhrZXlMYXN0Um9iYmVyeVRpbWVCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEGxhc3RSb2JiZXJ5VGltZV8FC2R1Y2tBc3NldElkARhrZXlMYXN0Um9iYmVyeUNvc3RCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEGxhc3RSb2JiZXJ5Q29zdF8FC2R1Y2tBc3NldElkARNrZXlMYW5kUm9iYmVyeVN0YXRlAQtsYW5kQXNzZXRJZAkArAICAhFsYW5kUm9iYmVyeVN0YXRlXwULbGFuZEFzc2V0SWQBEmtleUxhbmRDb29sZG93bkVUQQELbGFuZEFzc2V0SWQJAKwCAgIQbGFuZENvb2xkb3duRVRBXwULbGFuZEFzc2V0SWQBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBC2R1Y2tBc3NldElkCQCsAgICEWR1Y2tSb2JiZXJ5U3RhdGVfBQtkdWNrQXNzZXRJZAETa2V5TG9ja2VkTGFuZEJ5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIRbG9ja2VkTGFuZEJ5RHVja18FC2R1Y2tBc3NldElkARZrZXlEZWxpdmVyeURlbGF5QnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAhRkZWxpdmVyeURlbGF5QnlEdWNrXwULZHVja0Fzc2V0SWQAB3hwQ2xhaW0AkE4AD3hwU3VjY2Vzc0ZsaWdodACQTgAMeHBGYWlsRmxpZ2h0ANAPAAh4cENhbGxFUwCgjQYADHhwQ3VzdG9tTmFtZQDAhD0ACnhwTmV3U0xhbmQAwJaxAgAOeHBVcGdyYWRlSW5mcmEAkE4AB3hwTWVyZ2UAwIQ9AAl4cE9uYm9hcmQAwIQ9AAZ4cEhlYWwAkE4BCWxldmVsQnlYUAECeHAJAGsDBQx4cExldmVsU2NhbGUJAGwGBQJ4cAAEBQ94cExldmVsUmVjaXBQb3cABAAEBQRET1dOBQZTQ0FMRTgBCW1heEhlYWx0aAEFbGV2ZWwJAGQCAGQFBWxldmVsAQdsZXZlbFVwAgljdXJyTGV2ZWwFbmV3WFAECG5ld0xldmVsCQEJbGV2ZWxCeVhQAQUFbmV3WFAJAMwIAgUIbmV3TGV2ZWwJAMwIAgkAaAIFEm51bVBvaW50c09uTGV2ZWxVcAkAZQIFCG5ld0xldmVsBQljdXJyTGV2ZWwFA25pbAEMZ2V0RHVja1N0YXRzBA9zdGFraW5nQ29udHJhY3QLZHVja0Fzc2V0SWQKYnVmZkVmZmVjdApmb3JjZUJ1ZmZzBAVjaGFycwkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleUR1Y2tDaGFycwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzACAV8EA2x2bAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAZoZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkCQEJbWF4SGVhbHRoAQUDbHZsBApzdGF0ZUJ1ZmZzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAIBXwkAzggCCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhclN0cmVuZ3RoCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhckFjY3VyYWN5CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckludGVsbGVjdAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJFbmR1cmFuY2UJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRGV4dGVyaXR5CQDMCAIFA2x2bAkAzAgCBQZoZWFsdGgFA25pbAMFCmZvcmNlQnVmZnMJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0BQNuaWwJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDGNoYXJTdHJlbmd0aAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUMY2hhckFjY3VyYWN5CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQ1jaGFySW50ZWxsZWN0CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQ1jaGFyRW5kdXJhbmNlCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQ1jaGFyRGV4dGVyaXR5BQNuaWwBDmdldFJvYmJlcnlEYXRhAg9zdGFraW5nQ29udHJhY3QLZHVja0Fzc2V0SWQEC2xhc3RSb2JDb3N0CQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBGGtleUxhc3RSb2JiZXJ5Q29zdEJ5RHVjawEFC2R1Y2tBc3NldElkAAAEC2xhc3RSb2JUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBGGtleUxhc3RSb2JiZXJ5VGltZUJ5RHVjawEFC2R1Y2tBc3NldElkAAAEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEB3JvYkNvc3QJAJYDAQkAzAgCBQ5yb2JiZXJ5Q29zdE1pbgkAzAgCCQBlAgULbGFzdFJvYkNvc3QJAGgCBRRyb2JiZXJ5Q29vbGRvd25Db2VmZgkAZQIFA25vdwULbGFzdFJvYlRpbWUFA25pbAQJZHVja1N0YXRlCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBBQtkdWNrQXNzZXRJZAAABApsb2NrZWRMYW5kCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBE2tleUxvY2tlZExhbmRCeUR1Y2sBBQtkdWNrQXNzZXRJZAIABAdsYW5kRVRBCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBEmtleUxhbmRDb29sZG93bkVUQQEFCmxvY2tlZExhbmQAAAkAlwoFBQdyb2JDb3N0BQtsYXN0Um9iVGltZQUJZHVja1N0YXRlBQpsb2NrZWRMYW5kBQdsYW5kRVRBAApMQU5EUFJFRklYAgRMQU5EAApEVUNLUFJFRklYAgREVUNLAApBUlRQUkVTQUxFAgdQUkVTQUxFAAZOVU1SRVMABgAYTUFYX0xBTkRTX1NUQUtFRF9CWV9VU0VSABkAD0RBSUxZUkVTQllQSUVDRQCA+NIBAAxXSE1VTFRJUExJRVIAgMivoCUAD0RFRkFVTFRMT0NBVElPTgIPQWZyaWNhX0ZfQWZyaWNhABBSRVNPVVJDRVBSSUNFTUlOANW1AgAKRVNTRUxMQ09FRgAKABVNSU5fVVNEVF9GRUVfREVMSVZFUlkA0IYDABJURU5fTUlOVVRFU19NSUxMSVMAwM8kAAlwcm9kVHlwZXMJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMQkAzAgCAhBGaXJzdCBBaWQgS2l0IEwyCQDMCAICEEZpcnN0IEFpZCBLaXQgTDMJAMwIAgILQmFja3BhY2sgTDEJAMwIAgILQmFja3BhY2sgTDIJAMwIAgILQmFja3BhY2sgTDMJAMwIAgIORm9vZCBSYXRpb24gTDEJAMwIAgIORm9vZCBSYXRpb24gTDIJAMwIAgIORm9vZCBSYXRpb24gTDMJAMwIAgILSmV0IFBhY2sgTDEJAMwIAgILSmV0IFBhY2sgTDIJAMwIAgILSmV0IFBhY2sgTDMJAMwIAgIJU2hpZWxkIEwxCQDMCAICCVNoaWVsZCBMMgkAzAgCAglTaGllbGQgTDMJAMwIAgIHTWluZSBMMQkAzAgCAgdNaW5lIEwyCQDMCAICB01pbmUgTDMJAMwIAgIHVHJhcCBMMQkAzAgCAgdUcmFwIEwyCQDMCAICB1RyYXAgTDMFA25pbAAKY29udGluZW50cwkAzAgCAghBbWVyaWNhcwkAzAgCAgZFdXJvcGUJAMwIAgIEQXNpYQkAzAgCAgZBZnJpY2EJAMwIAgIHT2NlYW5pYQUDbmlsAAlDT0VGRjJNQVQAgK3iBAAQZm9ydEFsbG93ZWRQcm9kcwkAzAgCAA8JAMwIAgAQCQDMCAIAEQkAzAgCABIJAMwIAgATCQDMCAIAFAUDbmlsABBwcm9kdWN0aW9uTWF0cml4CQDMCAICJThfOF84XzE3XzE3XzQyXzEyXzBfMzBfMCwwLDAsMCwwLDAsMF8JAMwIAgIlOF84XzhfMTdfMTdfNDJfMjRfMF82MF8wLDAsNSwyLDAsMCwwXwkAzAgCAic4XzhfOF8xN18xN180Ml8zNl8wXzEyMF8wLDAsMTAsNCwwLDAsMF8JAMwIAgIpOF8xOV8xOV84XzI3XzE5XzI2XzFfMjBfMCwwLDAsMCwwLDAsMF8wMDEJAMwIAgIpOF8xOV8xOV84XzI3XzE5XzUyXzFfNDBfMCwwLDAsMCwwLDAsMF8wMDEJAMwIAgIpOF8xOV8xOV84XzI3XzE5Xzc4XzFfODBfMCwwLDAsMCwwLDAsMF8wMDEJAMwIAgIlOF84XzhfOF84XzYwXzEzXzJfMl8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAiU4XzhfOF84XzhfNjBfMjZfMl80XzAsMCwwLDAsMCwwLDBfMDExCQDMCAICJThfOF84XzhfOF82MF8zOV8yXzhfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIpMzBfMzBfM18xN18xN18zXzMwXzNfMzBfMCwwLDAsMCwwLDAsMF8xMTEJAMwIAgIpMzBfMzBfM18xN18xN18zXzYwXzNfNTBfMCwwLDAsMCwwLDAsMF8xMTEJAMwIAgIpMzBfMzBfM18xN18xN18zXzkwXzNfNzBfMCwwLDAsMCwwLDAsMF8xMTEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMTFfNF8xMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8yMl80XzIwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzMzXzRfMzBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIqNF8xM18yMl80XzM1XzIyXzIzXzBfNTAsMSwwXzAsMCwwLDAsMCwwLDBfCQDMCAICKjRfMTNfMjJfNF8zNV8yMl80Nl8wXzUwLDEsMV8wLDIsNSwwLDAsMCwwXwkAzAgCAis0XzEzXzIyXzRfMzVfMjJfNjlfMF81MCwyLDFfMCw1LDEwLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV8yMF8xXzMwLDEsMV8wLDAsMCwwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfNDBfMV8zMCwxLDJfMiwxLDMsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzYwXzFfMzAsMSwzXzUsMiw4LDAsMCwwLDBfBQNuaWwACXJJZHhDb2VmZgAGAApySWR4RWZmZWN0AAgAEHJJZHhSZXF1aXJlbWVudHMACQAJcklkeFNsb3RzAAoADlBST0RVQ1RQS0dTSVpFAAoAC3doSWR4TGV2ZWxzAAAACHdoSWR4UmVzAAEACHdoSWR4TWF0AAIACXdoSWR4UHJvZAADAAl3aElkeExPRlQABAAJdm9sTG9ja2VkAAAAC3ZvbE9jY3VwaWVkAAEAB3ZvbEZyZWUAAgAIdm9sVG90YWwAAwAKYnBJZHhMZXZlbAAAAAhicElkeFJlcwABAAhicElkeE1hdAACAAlicElkeFByb2QAAwAPbG9jSWR4Q29udGluZW50AAAACmxvY0lkeFR5cGUAAQAIbG9jSWR4SWQAAgEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQdhc3NldElkCQCsAgICA25vXwUHYXNzZXRJZAEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIFbGNuYV8FB2Fzc2V0SWQBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBB2Fzc2V0SWQJAKwCAgIDc3RfBQdhc3NldElkASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIEdHlwZQdhc3NldElkCQC5CQIJAMwIAgIDbGFzCQDMCAIFBHR5cGUJAMwIAgUHYXNzZXRJZAUDbmlsAgFfASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwduZnRUeXBlB2Fzc2V0SWQJb3duZXJBZGRyCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIGc3R0YW9fBQduZnRUeXBlAgFfBQdhc3NldElkAgFfBQlvd25lckFkZHIBEmtleVdhcmVob3VzZUJ5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIDd2hfBQtsYW5kQXNzZXRJZAEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAgtpbmZyYUxldmVsXwUHYXNzZXRJZAEXa2V5Rm9ydGlmaWNhdGlvbnNCeUxhbmQBC2xhbmRBc3NldElkCQCsAgICD2ZvcnRpZmljYXRpb25zXwULbGFuZEFzc2V0SWQBGmtleUR1Y2tBc3NldElkVG9DdXN0b21OYW1lAQdhc3NldElkCQCsAgICGGR1Y2tDdXN0b21OYW1lQnlBc3NldElkXwUHYXNzZXRJZAEWa2V5QWRkcmVzc1RvQ3VzdG9tTmFtZQEEYWRkcgkArAICAhhhY2NvdW50Q3VzdG9tTmFtZUJ5QWRkcl8FBGFkZHIBD2tleUFkZHJlc3NSZWZCeQEEYWRkcgkArAICAglhY2NSZWZCeV8FBGFkZHIBHGtleU9uYm9hcmRBcnRBY3RpdmF0ZWRPbkR1Y2sBC2R1Y2tBc3NldElkCQCsAgICGm9uYm9hcmRBcnRBY3RpdmF0ZWRPbkR1Y2tfBQtkdWNrQXNzZXRJZAEca2V5T25ib2FyZEFydER1Y2tBY3RpdmF0ZWRCeQEEYWRkcgkArAICAhpvbmJvYXJkQXJ0QWN0aXZhdGVkRHVja0J5XwUEYWRkcgETa2V5QWRkcmVzc1JlZmVycmFscwEEYWRkcgkArAICAg1hY2NSZWZlcnJhbHNfBQRhZGRyARBrZXlEdWNrSWRUb093bmVyAQdhc3NldElkCQCsAgICCmR1Y2tPd25lcl8FB2Fzc2V0SWQBFGtleVN0YWtlZER1Y2tCeU93bmVyAQlvd25lckFkZHIJAKwCAgISc3Rha2VkRHVja0J5T3duZXJfBQlvd25lckFkZHIBEWtleUJhY2twYWNrQnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAgliYWNrUGFja18FC2R1Y2tBc3NldElkAQ9rZXlEdWNrTG9jYXRpb24BC2R1Y2tBc3NldElkCQCsAgICDWR1Y2tMb2NhdGlvbl8FC2R1Y2tBc3NldElkARVrZXlVc2VyR3dsUmVsZWFzZVRpbWUBCHVzZXJBZGRyCQCsAgICGiVzJXNfX3VzZXJHd2xSZWxlYXNlVGltZV9fBQh1c2VyQWRkcgEOa2V5RXNXYXJlaG91c2UAAhplbWVyZ2VuY3lXYXJlaG91c2VQcm9kdWN0cwAPZGVsaXZlcnlGdW5kS2V5AgxkZWxpdmVyeUZ1bmQAEWRlbGl2ZXJ5TG9ja2VkS2V5Ag5kZWxpdmVyeUxvY2tlZAANbGFzdFRvdXJJZEtleQIOJXNfX2xhc3RUb3VySWQBFWtleVRvdXJTdGF0aWNEYXRhQnlJZAEDdElkCQCsAgICFiVzJWRfX3RvdXJTdGF0aWNEYXRhX18JAKQDAQUDdElkARZrZXlUb3VyRHluYW1pY0RhdGFCeUlkAQN0SWQJAKwCAgIXJXMlZF9fdG91ckR5bmFtaWNEYXRhX18JAKQDAQUDdElkARprZXlCZXN0UmVzdWx0QnlUb3VyQW5kRHVjawIDdElkC2R1Y2tBc3NldElkCQC5CQIJAMwIAgIfJXMlZCVzX19iZXN0UmVzdWx0QnlUb3VyQW5kRHVjawkAzAgCCQCkAwEFA3RJZAkAzAgCBQtkdWNrQXNzZXRJZAUDbmlsAgJfXwAJaWR4U3RhdGljAAAACmlkeER5bmFtaWMAAQAKdFN0YXRpY0VuZAAGAA50RHluYW1pY1N0YXR1cwABAQtnZXRUb3VyRGF0YQIMdG91ckNvbnRyYWN0A3RJZAQGc3RhdGljCQC1CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQx0b3VyQ29udHJhY3QJARVrZXlUb3VyU3RhdGljRGF0YUJ5SWQBBQN0SWQJAKwCAgkArAICAhlFcnJvciByZWFkaW5nIHRvdXJuYW1lbnQgCQCkAwEFA3RJZAIFIGRhdGECAl9fBAdkeW5hbWljCQC8CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQx0b3VyQ29udHJhY3QJARZrZXlUb3VyRHluYW1pY0RhdGFCeUlkAQUDdElkCQCsAgIJAKwCAgIZRXJyb3IgcmVhZGluZyB0b3VybmFtZW50IAkApAMBBQN0SWQCBSBkYXRhAgJfXwkAzAgCBQZzdGF0aWMJAMwIAgUHZHluYW1pYwUDbmlsAQ5pc0luVG91cm5hbWVudAIMdG91ckNvbnRyYWN0CGxvY2F0aW9uBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUMdG91ckNvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFDHRvdXJDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwMDAwkAAAIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFUCQAAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUPbG9jSWR4Q29udGluZW50BQZsYXN0SWQHCQAAAgkAkQMCBQdkeW5hbWljBQ50RHluYW1pY1N0YXR1cwIKSU5QUk9HUkVTUwcJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBQp0U3RhdGljRW5kBQNub3cHAQxpc0luRGVsaXZlcnkBCGxvY2F0aW9uBANsb2MJALUJAgUIbG9jYXRpb24CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECXN0YXJ0VGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUPbG9jSWR4Q29udGluZW50BAhkaXN0YW5jZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUIbG9jSWR4SWQDAwkAAAIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFECQBmAgUDbm93CQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMHCQBnAgADBQhkaXN0YW5jZQcBD2lzVXN1YWxMb2NhdGlvbgEIbG9jYXRpb24EB2xvY1R5cGUJAJEDAgkAtQkCBQhsb2NhdGlvbgIBXwUKbG9jSWR4VHlwZQMJAQIhPQIFB2xvY1R5cGUCAVQJAQIhPQIFB2xvY1R5cGUCAUQHAQxub3RPbk1pc3Npb24CDHRvdXJDb250cmFjdAhsb2NhdGlvbgQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFDHRvdXJDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABANsb2MJALUJAgUIbG9jYXRpb24CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBXREYXRhCQELZ2V0VG91ckRhdGECBQx0b3VyQ29udHJhY3QFBmxhc3RJZAQGc3RhdGljCQCRAwIFBXREYXRhBQlpZHhTdGF0aWMEB2R5bmFtaWMJAJEDAgUFdERhdGEFCmlkeER5bmFtaWMEB2xvY1R5cGUJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAwMJAQIhPQIFB2xvY1R5cGUCAVQJAQIhPQIFB2xvY1R5cGUCAUQHBgkBASEBAwMDCQAAAgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAVQJAAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAcJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcBEmdldFJlY2lwZU1hdGVyaWFscwEGcmVjaXBlCQBoAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnJlY2lwZQUJcklkeENvZWZmBQlDT0VGRjJNQVQBDGNoZWF0QXR0ZW1wdAMGb2xkTG9jBm5ld0xvYwljaGVhdENhc2UJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIWQ2hlYXQgYXR0ZW1wdDogb2xkTG9jPQUGb2xkTG9jAgksIG5ld0xvYz0FBm5ld0xvYwIHLCBjYXNlPQkApAMBBQljaGVhdENhc2UAFktTX1NFUEFSQVRFX1BVQkxJQ19LRVkHABhLU19BTExPV19CSUdfSU5GUkFfTUVSR0UHABFLU19BTExPV19ERUxJVkVSWQYABWNoYWluCQDJAQIJAMoBAggFBHRoaXMFYnl0ZXMAAQABAAt1c2R0QXNzZXRJZAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAEghNp6sggDP07Ru8qO7ouTvMmC3Qtd+geWqNQj+agP/7kDCQAAAgEBVAUHJG1hdGNoMAEgVbHYn3KHgu/l41uNrAWrZd6aQ6EvFrsF8xq3h6XxxRgJAAIBAg1Vbmtub3duIGNoYWluABVkZWZhdWx0UmVzdEFkZHJlc3NTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQUUN1dkZidmg0TGtQVW5yblUxejNqbmJBMXA5bTNXTmh2AwkAAAIBAVQFByRtYXRjaDACIzNNdW1rR0d6dENLQVhwV0RxeGtkZG9mcVhTVWJxUWt2U0p5CQACAQINVW5rbm93biBjaGFpbgARSW5mcmFVcGdyYWRlQ29zdFMEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAgMivoCUDCQAAAgEBVAUHJG1hdGNoMACAwtcvCQACAQINVW5rbm93biBjaGFpbgAOYXJiaXRyYWdlRGVsYXkEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAgLiZKQMJAAACAQFUBQckbWF0Y2gwAODUAwkAAgECDVVua25vd24gY2hhaW4AA1NFUAICX18ABU1VTFQ2AMCEPQAFTVVMVDgAgMLXLwAFU1NJWkUAGQAFTVNJWkUAZAAFTFNJWkUA4QEABlhMU0laRQCQAwAHWFhMU0laRQDxBAAFSVRFUjYJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUFA25pbAEPZ2V0U3RyaW5nT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFB2FkZHJlc3MFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgAAEUlkeENmZ1N0YWtpbmdEYXBwAAEAEUlkeENmZ0Vjb25vbXlEYXBwAAIAFElkeENmZ0dvdmVybmFuY2VEYXBwAAMADUlkeENmZ1dsZ0RhcHAABAAUSWR4Q2ZnVG91cm5hbWVudERhcHAABwAPSWR4Q2ZnQWNyZXNEYXBwAAgBCmtleVJlc3RDZmcAAg4lc19fcmVzdENvbmZpZwEOa2V5UmVzdEFkZHJlc3MAAgwlc19fcmVzdEFkZHIBEXJlYWRSZXN0Q2ZnT3JGYWlsAQRyZXN0CQC8CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQRyZXN0CQEKa2V5UmVzdENmZwAFA1NFUAEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgdyZXN0Q2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHcmVzdENmZwUDaWR4CQCsAgICKlJlc3QgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgADHJlc3RDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5UmVzdEFkZHJlc3MABRVkZWZhdWx0UmVzdEFkZHJlc3NTdHIAB3Jlc3RDZmcJARFyZWFkUmVzdENmZ09yRmFpbAEFDHJlc3RDb250cmFjdAAPc3Rha2luZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnU3Rha2luZ0RhcHAAD2Vjb25vbXlDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ0Vjb25vbXlEYXBwAAtnb3ZDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ0dvdmVybmFuY2VEYXBwAAt3bGdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFDUlkeENmZ1dsZ0RhcHAAEnRvdXJuYW1lbnRDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ1RvdXJuYW1lbnREYXBwAA1hY3Jlc0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUPSWR4Q2ZnQWNyZXNEYXBwAApyZWNMYW5kTnVtAAAAC3JlY0xhbmRTaXplAAEAC3JlY1RlcnJhaW5zAAIADHJlY0NvbnRpbmVudAADAA13bGdBc3NldElkS2V5Agt3bGdfYXNzZXRJZAAKd2xnQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFC3dsZ0NvbnRyYWN0BQ13bGdBc3NldElkS2V5AhhXTEdPTEQgaXMgbm90IGlzc3VlZCB5ZXQAD2FjcmVzQXNzZXRJZEtleQIMYWNyZXNBc3NldElkAAxhY3Jlc0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQ1hY3Jlc0NvbnRyYWN0BQ9hY3Jlc0Fzc2V0SWRLZXkCF0FDUkVTIGlzIG5vdCBpc3N1ZWQgeWV0AAtyYW5kb21EZWxheQACAQlrZXlDb21taXQBB2FkZHJlc3MJAKwCAgITZmluaXNoQmxvY2tGb3JBZGRyXwUHYWRkcmVzcwERa2V5UmVzUHJvcG9ydGlvbnMAAhNyZXNUeXBlc1Byb3BvcnRpb25zARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQljb250aW5lbnQJAKwCAgIUcmVzVHlwZXNCeUNvbnRpbmVudF8FCWNvbnRpbmVudAEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQlvd25lckFkZHIJAKwCAgITc3Rha2VkTGFuZHNCeU93bmVyXwUJb3duZXJBZGRyARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQlvd25lckFkZHIJAKwCAgIUc3Rha2VkUGllY2VzQnlPd25lcl8FCW93bmVyQWRkcgEIYXNTdHJpbmcBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQIYZmFpbCB0byBjYXN0IGludG8gU3RyaW5nAQVhc0ludAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgNJbnQEAW4FByRtYXRjaDAFAW4JAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBCWFzQW55TGlzdAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAglMaXN0W0FueV0EAWwFByRtYXRjaDAFAWwJAAIBAhtmYWlsIHRvIGNhc3QgaW50byBMaXN0W0FueV0BCWFzQm9vbGVhbgEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAFzBQckbWF0Y2gwBQFzCQACAQIZZmFpbCB0byBjYXN0IGludG8gQm9vbGVhbgEQYXNTdHJpbmdJbnRUdXBsZQEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAINKFN0cmluZywgSW50KQQCdDIFByRtYXRjaDAFAnQyCQACAQIfZmFpbCB0byBjYXN0IGludG8gKFN0cmluZywgSW50KQEPbnVtUGllY2VzQnlTaXplAQhsYW5kU2l6ZQQHJG1hdGNoMAUIbGFuZFNpemUDCQAAAgIBUwUHJG1hdGNoMAUFU1NJWkUDCQAAAgIBTQUHJG1hdGNoMAUFTVNJWkUDCQAAAgIBTAUHJG1hdGNoMAUFTFNJWkUDCQAAAgICWEwFByRtYXRjaDAFBlhMU0laRQMJAAACAgNYWEwFByRtYXRjaDAFB1hYTFNJWkUJAAIBAhFVbmtub3duIGxhbmQgc2l6ZQEHaXNEaWdpdAEBcwkBCWlzRGVmaW5lZAEJALYJAQUBcwEKa2V5QmxvY2tlZAACEGNvbnRyYWN0c0Jsb2NrZWQBEWtleUxhc3RUeElkQnlVc2VyAQRhZGRyCQCsAgICD2xhc3RUeElkQnlVc2VyXwUEYWRkcgEKZml4ZWRQb2ludAIDdmFsCGRlY2ltYWxzBAZ0ZW5Qb3cJAGwGAAoAAAUIZGVjaW1hbHMAAAAABQRET1dOBAdsb3dQYXJ0CQCkAwEJAGoCBQN2YWwFBnRlblBvdwQGemVyb2VzCQCwAgIJAKQDAQUGdGVuUG93CQBkAgABCQCxAgEFB2xvd1BhcnQJAKwCAgkArAICCQCsAgIJAKQDAQkAaQIFA3ZhbAUGdGVuUG93AgEuBQZ6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BQlvd25lckFkZHIBEWtleUxhbmROdW1Ub093bmVyAQdsYW5kTnVtCQCsAgICA2xvXwUHbGFuZE51bQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBBG5hbWUJAKwCAgIRZHVja0J5Q3VzdG9tTmFtZV8FBG5hbWUBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBBG5hbWUJAKwCAgIUYWNjb3VudEJ5Q3VzdG9tTmFtZV8FBG5hbWUBCWtleU9sZGllcwACCm9sZGllc0xpc3QAC2NsYWltTW9kZVdoAAAADWNsYWltTW9kZUR1Y2sAAQATY2xhaW1Nb2RlV2hUaGVuRHVjawACAAhmbEhlYWx0aAAAAAtmbFRpbWVzdGFtcAAFAAdmbEJvbnVzAAYAC2ZsUHJvZHNVc2VkAAcBB25mdE5hbWUCB2xhbmROdW0IbGFuZFNpemUJAKwCAgkArAICBQpMQU5EUFJFRklYBQdsYW5kTnVtBQhsYW5kU2l6ZQEIdG9Wb2x1bWUCBmFtb3VudAdwa2dTaXplBARwa2dzAwkAZwIFBmFtb3VudAAACQBpAgkAZQIJAGQCBQZhbW91bnQFB3BrZ1NpemUAAQUHcGtnU2l6ZQkBAS0BCQBpAgkAZQIJAGQCCQEBLQEFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQBoAgUEcGtncwUFTVVMVDgBE2Rpc3RyaWJ1dGVCeVdlaWdodHMCBXRvdGFsB3dlaWdodHMEA3N1bQkAZAIJAGQCCQBkAgkAZAIJAGQCCQCRAwIFB3dlaWdodHMAAAkAkQMCBQd3ZWlnaHRzAAEJAJEDAgUHd2VpZ2h0cwACCQCRAwIFB3dlaWdodHMAAwkAkQMCBQd3ZWlnaHRzAAQJAJEDAgUHd2VpZ2h0cwAFAwkAZwIAAAUDc3VtCQACAQIQWmVybyB3ZWlnaHRzIHN1bQQFbm9ybTYJAGsDBQV0b3RhbAUFTVVMVDYFA3N1bQoBCm5vcm1hbGl6ZXICA2FjYwRlbGVtCQDNCAIFA2FjYwkAawMFBGVsZW0FBW5vcm02BQVNVUxUNgoAAiRsBQd3ZWlnaHRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpub3JtYWxpemVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGARJnZXROZWVkZWRNYXRlcmlhbHMBBXRvdGFsBAVwcm9wcwkAtQkCCQEFdmFsdWUBCQCiCAEJARFrZXlSZXNQcm9wb3J0aW9ucwACAV8DCQECIT0CCQCQAwEFBXByb3BzBQZOVU1SRVMJAAIBAhZXcm9uZyBwcm9wb3J0aW9ucyBkYXRhBAFyCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAACQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwABCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwACCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwADCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAECQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAFBQNuaWwJARNkaXN0cmlidXRlQnlXZWlnaHRzAgUFdG90YWwFAXIBEXN1YnRyYWN0TWF0ZXJpYWxzAwxzaG91bGRVc2VNYXQDaGFzCXRvdGFsTmVlZAQEbmVlZAkBEmdldE5lZWRlZE1hdGVyaWFscwEFCXRvdGFsTmVlZAoBCnN1YnRyYWN0b3ICA2FjYwNpZHgEBnJlc3VsdAkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNoYXMFA2lkeAkAkQMCBQRuZWVkBQNpZHgDCQBmAgAABQZyZXN1bHQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIYTm90IGVub3VnaCBtYXRlcmlhbCBpZHg9CQCkAwEFA2lkeAILLCB5b3UgaGF2ZSAJAJEDAgUDaGFzBQNpZHgCCywgYnV0IG5lZWQgCQCkAwEJAJEDAgUEbmVlZAUDaWR4CQDNCAIFA2FjYwkApAMBBQZyZXN1bHQDBQxzaG91bGRVc2VNYXQKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCnN1YnRyYWN0b3ICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYFA2hhcwERc3VidHJhY3RFcXVpcG1lbnQCBW9sZEVxBXBVc2VkAwkAAAIFBXBVc2VkAgAJAJQKAgUFb2xkRXEHCgEHc3ViVXNlZAIDYWNjBmlkeEFtdAQFcGFydHMJALUJAgUGaWR4QW10AgEsAwkBAiE9AgkAkAMBBQVwYXJ0cwACCQACAQIoSW5jb3JyZWN0IGZvcm1hdCwgc2hvdWxkIGJlIGluZGV4LGFtb3VudAQDaWR4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAAMDCQBmAgAABQNpZHgGCQBnAgUDaWR4CQCQAwEFEHByb2R1Y3Rpb25NYXRyaXgJAAIBAhNVbmtub3duIHByb2R1Y3QgaWR4BANhbXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwABBAdlcVBhcnRzCQC1CQIIBQNhY2MCXzEJAKwCAgkAkQMCBQVwYXJ0cwAAAgE6AwkBAiE9AgkAkAMBBQdlcVBhcnRzAAIJAAIBCQCsAgIJAKwCAgIPWW91IGRvbid0IGhhdmUgCQCRAwIFCXByb2RUeXBlcwUDaWR4AgkgZXF1aXBwZWQEA3RtcAkAkQMCBQdlcVBhcnRzAAEEBm51bUxlbgMJAQdpc0RpZ2l0AQkArwICCQCwAgIFA3RtcAABAAEAAgABBARjdXJyCQENcGFyc2VJbnRWYWx1ZQEJAK8CAgUDdG1wBQZudW1MZW4EBHRhaWwJALACAgUDdG1wBQZudW1MZW4EBm5ld0FtdAMJAGcCBQRjdXJyBQNhbXQJAGUCBQRjdXJyBQNhbXQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgINWW91IGVxdWlw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ZXhjZWVkcyA3CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcBCnBsYWNlUHJvZEIGBmlkeENudAVwTGlzdAppc1Bvc2l0aXZlCWR1Y2tTdGF0cwhvY2N1cGllZARmcmVlBAVwYXJ0cwkAtQkCBQZpZHhDbnQCAToDCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAihJbmNvcnJlY3QgZm9ybWF0LCBzaG91bGQgYmUgaW5kZXg6YW1vdW50AwMJAQEhAQUKaXNQb3NpdGl2ZQkBAiE9AgkAsQIBCQCRAwIFBXBhcnRzAAAAAgcJAAIBAitQcm9kdWN0IGlkeCBzaG91bGQgYmUgMiBkaWdpdHMsIHplcm8gcGFkZGVkBApwcm9kdWN0SWR4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAAQFY291bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwABAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgUQZm9ydEFsbG93ZWRQcm9kcwUKcHJvZHVjdElkeAkAAgEJAKwCAgkArAICAglQcm9kdWN0ICcJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AiEnIGNhbm5vdCBiZSB1c2VkIGZvciBsYW5kIGRlZmVuc2UDCQBmAgAABQVjb3VudAkAAgECF0NvdW50IGNhbid0IGJlIG5lZ2F0aXZlAwkAZgIFBWNvdW50BQ1NQVhQUk9ESU5TTE9UCQACAQkArAICCQCsAgIJAKwCAgIUQ2FuJ3QgcHV0IG1vcmUgdGhhbiAJAKQDAQUNTUFYUFJPRElOU0xPVAIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgDCQAAAgUFY291bnQAAAkAlQoDBQVwTGlzdAUIb2NjdXBpZWQFBGZyZWUEBGhlYWQJAMkBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgEBGN1cnIJALEJAQkAyQECCQDKAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4AAgEBHRhaWwJAMoBAgUFcExpc3QJAGgCAAgJAGQCBQpwcm9kdWN0SWR4AAEEBnJlY2lwZQkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgFCnByb2R1Y3RJZHgCAV8DAwkBASEBBQppc1Bvc2l0aXZlCQBmAgUFY291bnQFBGN1cnIHCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCVlvdSBoYXZlIAkApAMBBQRjdXJyAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAITLCBidXQgdHJpZWQgdG8gdXNlIAkApAMBBQVjb3VudAQGbmV3QW10AwMJAQEhAQUKaXNQb3NpdGl2ZQkBFWNoZWNrU3RhdFJlcXVpcmVtZW50cwIFCWR1Y2tTdGF0cwkAtQkCCQCRAwIFBnJlY2lwZQUQcklkeFJlcXVpcmVtZW50cwIBLAcJAGUCBQRjdXJyBQVjb3VudAkAZAIFBGN1cnIFBWNvdW50BAhkZWx0YVZvbAkAZQIJAQh0b1ZvbHVtZQIFBm5ld0FtdAUOUFJPRFVDVFBLR1NJWkUJAQh0b1ZvbHVtZQIFBGN1cnIFDlBST0RVQ1RQS0dTSVpFCQCVCgMJAMsBAgkAywECBQRoZWFkCQCaAwEFBm5ld0FtdAUEdGFpbAkAZAIFCG9jY3VwaWVkBQhkZWx0YVZvbAkAZQIFBGZyZWUFCGRlbHRhVm9sAQhhZGRQcm9kQgcGaWR4Q250BXBMaXN0CmlzUG9zaXRpdmUHc2VnbWVudAdtYWluQXV4BHNsb3QJZHVja1N0YXRzBAVwYXJ0cwkAtQkCBQZpZHhDbnQCAToDCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAihJbmNvcnJlY3QgZm9ybWF0LCBzaG91bGQgYmUgaW5kZXg6YW1vdW50AwMJAQEhAQUKaXNQb3NpdGl2ZQkBAiE9AgkAsQIBCQCRAwIFBXBhcnRzAAAAAgcJAAIBAitQcm9kdWN0IGlkeCBzaG91bGQgYmUgMiBkaWdpdHMsIHplcm8gcGFkZGVkBApwcm9kdWN0SWR4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAAQFY291bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwABAwMJAGYCAAAFCnByb2R1Y3RJZHgGCQBnAgUKcHJvZHVjdElkeAkAkAMBBRBwcm9kdWN0aW9uTWF0cml4CQACAQITVW5rbm93biBwcm9kdWN0IGlkeAMJAGYCAAAFBWNvdW50CQACAQIXQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmUDCQBmAgUFY291bnQFDU1BWFBST0RJTlNMT1QJAAIBCQCsAgIJAKwCAgkArAICAhRDYW4ndCBwdXQgbW9yZSB0aGFuIAkApAMBBQ1NQVhQUk9ESU5TTE9UAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAMJAAACBQVjb3VudAAACQCUCgIFBXBMaXN0BwQEaGVhZAkAyQECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAQEY3VycgkAsQkBCQDJAQIJAMoBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgACAQEdGFpbAkAygECBQVwTGlzdAkAaAIACAkAZAIFCnByb2R1Y3RJZHgAAQQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAUKcHJvZHVjdElkeAIBXwMDCQEBIQEFCmlzUG9zaXRpdmUJAGYCBQVjb3VudAUEY3VycgcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJWW91IGhhdmUgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AhMsIGJ1dCB0cmllZCB0byB1c2UgCQCkAwEFBWNvdW50BAlpc0JpZ0l0ZW0DAwkBASEBBQppc1Bvc2l0aXZlCQEVY2hlY2tTdGF0UmVxdWlyZW1lbnRzAgUJZHVja1N0YXRzCQC1CQIJAJEDAgUGcmVjaXBlBRBySWR4UmVxdWlyZW1lbnRzAgEsBwQGY29tcGF0CQCRAwIFBnJlY2lwZQUJcklkeFNsb3RzAwkAAAIFBmNvbXBhdAIACQACAQIXSXRlbSBjYW5ub3QgYmUgZXF1aXBwZWQEAWMJAQ1wYXJzZUludFZhbHVlAQUGY29tcGF0BARjU2VnCQBpAgUBYwBkAwkBAiE9AgUHc2VnbWVudAUEY1NlZwkAAgECFFNlZ21lbnQgaW5jb21wYXRpYmxlBAhjTWFpbkF1eAkAaQIJAGoCBQFjAGQACgMJAQIhPQIFB21haW5BdXgFCGNNYWluQXV4CQACAQIRU2xvdCBpbmNvbXBhdGlibGUECWNOdW1TbG90cwkAagIFAWMACgMDCQECIT0CBQRzbG90AAAJAGYCBQljTnVtU2xvdHMAAQcJAAIBAh5CaWcgaXRlbXMgc2hvdWxkIG9jY3VweSBzbG90IDAJAGYCBQljTnVtU2xvdHMAAQcJAJQKAgkAywECCQDLAQIFBGhlYWQJAJoDAQkAZAIFBGN1cnIDBQppc1Bvc2l0aXZlBQVjb3VudAkBAS0BBQVjb3VudAUEdGFpbAUJaXNCaWdJdGVtAQtzbG90c0dyb3VwQgYBZwRicEluCmlzUG9zaXRpdmUHc2VnbWVudAdtYWluQXV4BXN0YXRzAwkBAiE9AgUBZwIABAVzbG90cwkAtQkCBQFnAgEsAwkAZgIJAJADAQUFc2xvdHMFCE1BWFNMT1RTCQACAQISV3Jvbmcgc2xvdHMgZm9ybWF0BAJzMAkAkQMCBQVzbG90cwAABAJzMQMJAGYCCQCQAwEFBXNsb3RzAAEJAJEDAgUFc2xvdHMAAQIAAwMJAAACBQJzMAIACQAAAgUCczECAAcFBGJwSW4EBXRtcFMwAwkBAiE9AgUCczACAAkBCGFkZFByb2RCBwUCczAFBGJwSW4FCmlzUG9zaXRpdmUFB3NlZ21lbnQFB21haW5BdXgAAAUFc3RhdHMJAJQKAgUEYnBJbgcDCQECIT0CBQJzMQIAAwgFBXRtcFMwAl8yCQACAQIeQmlnIGl0ZW0gYWxyZWFkeSBvY2N1cGllcyBzbG90CAkBCGFkZFByb2RCBwUCczEIBQV0bXBTMAJfMQUKaXNQb3NpdGl2ZQUHc2VnbWVudAUHbWFpbkF1eAABBQVzdGF0cwJfMQgFBXRtcFMwAl8xBQRicEluAQZkcmVzc0IEB3NlZ0xpc3QGcEJ5dGVzCmlzUG9zaXRpdmUFc3RhdHMKAQdzZWdtZW50AgNhY2MDc2VnBAFqCAUDYWNjAl8xBAdtYWluQXV4CQC1CQIFA3NlZwIBOwMJAQIhPQIJAJADAQUHbWFpbkF1eAUKTlVNTUFJTkFVWAkAAgECFFdyb25nIHNlZ21lbnQgZm9ybWF0BAFtCQCRAwIFB21haW5BdXgAAAQBYQkAkQMCBQdtYWluQXV4AAEDAwkAAAIFAW0CAAkAAAIFAWECAAcJAJQKAgkAZAIFAWoAAQgFA2FjYwJfMgQEdG1wTQkBC3Nsb3RzR3JvdXBCBgUBbQgFA2FjYwJfMgUKaXNQb3NpdGl2ZQUBagAABQVzdGF0cwkAlAoCCQBkAgUBagABCQELc2xvdHNHcm91cEIGBQFhBQR0bXBNBQppc1Bvc2l0aXZlBQFqAAEFBXN0YXRzCAoAAiRsBQdzZWdMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCAAAFBnBCeXRlcwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHc2VnbWVudAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgJfMgEFZm9ydEIGB3NlZ0xpc3QGcEJ5dGVzCG9jY3VwaWVkBGZyZWUKaXNQb3NpdGl2ZQlkdWNrU3RhdHMDCQBmAgADCQCQAwEFB3NlZ0xpc3QJAAIBAjFBdCBsZWFzdCBkdWNrLCBtaW5lcyBhbmQgdHJhcHMgcGFydHMgYXJlIHJlcXVpcmVkCgEHc2VnbWVudAIDYWNjA3NlZwQBaggFA2FjYwJfMQMJAAACBQFqAAAJAJYKBAkAZAIFAWoAAQgFA2FjYwJfMggFA2FjYwJfMwgFA2FjYwJfNAQBcAkBCnBsYWNlUHJvZEIGBQNzZWcIBQNhY2MCXzIFCmlzUG9zaXRpdmUFCWR1Y2tTdGF0cwgFA2FjYwJfMwgFA2FjYwJfNAkAlgoECQBkAgUBagABCAUBcAJfMQgFAXACXzIIBQFwAl8zBAF0CgACJGwFB3NlZ0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQAAAUGcEJ5dGVzBQhvY2N1cGllZAUEZnJlZQoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHc2VnbWVudAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgkAlQoDCAUBdAJfMggFAXQCXzMIBQF0Al80ARdjYW5XZWFyQ3VycmVudEVxdWlwbWVudAELZHVja0Fzc2V0SWQEBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAZjdXJyRXEJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywCAV8ECXRlbXBQcm9kQgkBBmRyZXNzQgQFBmN1cnJFcQUMRU1QVFlfUFJPRDUwBgUDbmlsBAhzZWdCcEF1eAkAkQMCCQC1CQIJAJEDAgUGY3VyckVxBQtzZWdCYWNrcGFjawIBOwABBApidWZmRWZmZWN0AwkAAAIFCHNlZ0JwQXV4AgAAAAQEYXV4MAkAkQMCCQC1CQIFCHNlZ0JwQXV4AgEsAAADCQAAAgUEYXV4MAIAAAAEBmlkeENudAkAtQkCBQRhdXgwAgE6BANpZHgJAJEDAgUGaWR4Q250AAAEA2NudAkAkQMCBQZpZHhDbnQAAQMDAwMDCQAAAgUDaWR4AgIwNgYJAAACBQNpZHgCAjA3BgkAAAIFA2lkeAICMDgJAQIhPQIFA2NudAIABwkAZgIJAQ1wYXJzZUludFZhbHVlAQUDY250AAAHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgJAQ1wYXJzZUludFZhbHVlAQUDaWR4AgFfBQpySWR4RWZmZWN0AAAEBXN0YXRzCQEMZ2V0RHVja1N0YXRzBAUEdGhpcwULZHVja0Fzc2V0SWQFCmJ1ZmZFZmZlY3QGBAhuZXdQcm9kQgkBBmRyZXNzQgQFBmN1cnJFcQUJdGVtcFByb2RCBwUFc3RhdHMJAAACBQhuZXdQcm9kQgUIbmV3UHJvZEIBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECHByb3BMaXN0DXRlcnJhaW5Db3VudHMNbGFuZFNpemVJbmRleARzaWduAwkB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aG91c2VPY2N1cGllZFZvbAEFAndoBAZ3aExvZnQDCQBmAgAFCQCQAwEFAndoCQC5CQIJAMwIAgIBMAkAzAgCCQCkAwEFCndoT2NjdXBpZWQJAMwIAgkApAMBCQBlAgUHd2hUb3RhbAUKd2hPY2N1cGllZAkAzAgCCQCkAwEFB3doVG90YWwFA25pbAIBXwQEbG9mdAkAtQkCCQCRAwIFAndoBQl3aElkeExPRlQCAV8ECHdoTG9ja2VkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUJdm9sTG9ja2VkBANvY2MDCQBmAgkAkAMBBQRsb2Z0AAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAUKd2hPY2N1cGllZAkAuQkCCQDMCAIJAKQDAQUId2hMb2NrZWQJAMwIAgkApAMBBQNvY2MJAMwIAgkApAMBCQBlAgkAZQIFB3doVG90YWwFCHdoTG9ja2VkBQNvY2MJAMwIAgkApAMBBQd3aFRvdGFsBQNuaWwCAV8JAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQJ3aAUId2hJZHhSZXMCAV8FBk5VTVJFUwkAkQMCBQJ3aAUId2hJZHhSZXMCCzBfMF8wXzBfMF8wCQDMCAIDCQAAAgkAkAMBCQC1CQIJAJEDAgUCd2gFCHdoSWR4TWF0AgFfBQZOVU1SRVMJAJEDAgUCd2gFCHdoSWR4TWF0AgswXzBfMF8wXzBfMAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgUGd2hMb2Z0BQNuaWwBFWdldFdhcmVob3VzZVNwYWNlTGVmdAEJY3VycmVudFdoBAtvY2N1cGllZFZvbAkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUJY3VycmVudFdoBA9jdXJyV2hMb2NrZWRWb2wJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQCAV8FCXZvbExvY2tlZAkAZQIJAGUCCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMFC29jY3VwaWVkVm9sBQ9jdXJyV2hMb2NrZWRWb2wBCW1vdmVTdHVmZgMKY2FyZ29QYXJ0cwljdXJyZW50V2gLY3VycmVudFBhY2sDCQECIT0CCQCQAwEFCmNhcmdvUGFydHMAAwkAAgECNGNhcmdvTGlzdFN0ciBzaG91bGQgY29udGFpbiBleGFjdGx5IDIgJzonIHNlcGFyYXRvcnMECHJlc1BhcnRzCQC1CQIJAJEDAgUKY2FyZ29QYXJ0cwAAAgFfBAhtYXRQYXJ0cwkAtQkCCQCRAwIFCmNhcmdvUGFydHMAAQIBXwQJcHJvZFBhcnRzAwkAAAIJAJEDAgUKY2FyZ29QYXJ0cwACAgAFA25pbAkAvAkCCQCRAwIFCmNhcmdvUGFydHMAAgIBXwMJAQIhPQIJAJADAQUIcmVzUGFydHMFBk5VTVJFUwkAAgECIEFsbCA2IHJlc291cmNlcyBzaG91bGQgYmUgcGFzc2VkAwkBAiE9AgkAkAMBBQhtYXRQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgbWF0ZXJpYWxzIHNob3VsZCBiZSBwYXNzZWQEC3doU3BhY2VMZWZ0CQEVZ2V0V2FyZWhvdXNlU3BhY2VMZWZ0AQUJY3VycmVudFdoBAljdXJyV2hSZXMJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfBAljdXJyV2hNYXQJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4TWF0AgFfBApjdXJyV2hQcm9kAwkAAAIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAV8EDmN1cnJlbnRQYWNrUmVzCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBA5jdXJyZW50UGFja01hdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQPY3VycmVudFBhY2tQcm9kAwkAAAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgFfCgEDbXZSAgNhY2MEaXRlbQQBaQgFA2FjYwJfMQQCYW0JAQ1wYXJzZUludFZhbHVlAQUEaXRlbQQDd2hy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MV8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgoBA212UAIDYWNjBGl0ZW0EAWkIBQNhY2MCXzEEAmFtCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0EA3docAMJAGYCCQCQAwEFCmN1cnJXaFByb2QFAWkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpjdXJyV2hQcm9kBQFpAAAEA2JwcAMJAGYCCQCQAwEFD2N1cnJlbnRQYWNrUHJvZAUBaQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFD2N1cnJlbnRQYWNrUHJvZAUBaQAAAwkAAAIFAmFtAAAJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEFA3docAkAzQgCCAUDYWNjAl8zCQCkAwEFA2JwcAgFA2FjYwJfNAMJAGYCBQJhbQAAAwkAZgIFAmFtBQNicHAJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAFBGl0ZW0CGSBmcm9tIGJhY2twYWNrLCBidXQgb25seSAJAKQDAQUDYnBwAgogYXZhaWxhYmxlBAhkZWx0YVZvbAkAZQIJAQh0b1ZvbHVtZQIJAGQCBQN3aHAFAmFtBQ5QUk9EVUNUUEtHU0laRQkBCHRvVm9sdW1lAgUDd2hwBQ5QUk9EVUNUUEtHU0laRQkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFA3docAUCYW0JAM0IAggFA2FjYwJfMwkApAMBCQBlAgUDYnBwBQJhbQkAZAIIBQNhY2MCXzQFCGRlbHRhVm9sAwkAZgIJAQEtAQUCYW0FA3docAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAkApAMBCQEBLQEFAmFtAhogZnJvbSB3YXJlaG91c2UsIGJ1dCBvbmx5IAkApAMBBQN3aHACCiBhdmFpbGFibGUECGRlbHRhVm9sCQBlAgkBCHRvVm9sdW1lAgkAZAIFA3docAUCYW0FDlBST0RVQ1RQS0dTSVpFCQEIdG9Wb2x1bWUCBQN3aHAFDlBST0RVQ1RQS0dTSVpFCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2hwBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicHAFAmFtCQBkAggFA2FjYwJfNAUIZGVsdGFWb2wEAXADCQECIT0CCQCQAwEFCXByb2RQYXJ0cwAACgACJGwFCXByb2RQYXJ0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAAABQNuaWwFA25pbAgFAW0CXzQKAQUkZjJfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBA212UAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMl8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjJfMgIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyCQCWCgQAAAUKY3VycldoUHJvZAUPY3VycmVudFBhY2tQcm9kCAUBbQJfNAQIdm9sU2FsZG8IBQFwAl80AwkAZgIFCHZvbFNhbGRvBQt3aFNwYWNlTGVmdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIVQXR0ZW1wdCB0byBwdXQgdG90YWwgCQCkAwEFCHZvbFNhbGRvAhEgc3R1ZmYsIGJ1dCBvbmx5IAkApAMBBQt3aFNwYWNlTGVmdAIVIHdhcmVob3VzZSBzcGFjZSBsZWZ0CQCZCgcJALkJAggFAXICXzICAV8JALkJAggFAW0CXzICAV8JALoJAggFAXACXzICAV8JALkJAggFAXICXzMCAV8JALkJAggFAW0CXzMCAV8JALoJAggFAXACXzMCAV8FCHZvbFNhbGRvARJleHBlZGl0aW9uSW50ZXJuYWwCBmNhbGxlcgR0eElkBAh1c2VyQWRkcgkApQgBBQZjYWxsZXIEBmJpZ051bQkBA2FicwEJAJ4DAQUEdHhJZAQHZnJlZU51bQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFD1BSRVNBTEVOVU1MQU5EUwABBAdsYW5kTnVtCQCkAwEFB2ZyZWVOdW0EDGNvbnRpbmVudElkeAkAoAMBCQC7AgIFBmJpZ051bQUFRklWRVgECHRlcnJhaW5zCQELZ2VuVGVycmFpbnMCBQZiaWdOdW0FDGNvbnRpbmVudElkeAQJY29udGluZW50CQCRAwIFCmNvbnRpbmVudHMFDGNvbnRpbmVudElkeAQFaXNzdWUJAMIIBQkBB25mdE5hbWUCBQdsYW5kTnVtAgFTCQC5CQIJAMwIAgUHbGFuZE51bQkAzAgCAgFTCQDMCAIFCHRlcnJhaW5zCQDMCAIFCWNvbnRpbmVudAUDbmlsAgFfAAEAAAcEB2Fzc2V0SWQJALgIAQUFaXNzdWUEAmlkCQDYBAEFB2Fzc2V0SWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQdmcmVlTnVtAAEJAMwIAgUFaXNzdWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleUxhbmRUb0Fzc2V0SWQBBQdsYW5kTnVtBQJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUCaWQFCHVzZXJBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0FCHVzZXJBZGRyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFAmlkAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQJpZAUIdXNlckFkZHIAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIAAQUHYXNzZXRJZAUDbmlsCQCUCgIFAmlkBQljb250aW5lbnQBDGZsaWdodENvbW1vbgMIdXNlckFkZHIHbWVzc2FnZQNzaWcDCQEBIQEJAMQTAwUHbWVzc2FnZQUDc2lnBQNwdWIJAAIBAhhzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gEBXBhcnRzCQC8CQIJALAJAQUHbWVzc2FnZQIBOwQJZmxpZ2h0TG9nCQC8CQIJAJEDAgUFcGFydHMAAAIBfAQCaHAJALUJAgkAkQMCBQlmbGlnaHRMb2cFCGZsSGVhbHRoAgFfBAVjdXJIUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmhwAAAEBW5ld0hQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAQQLbmV3TG9jVHhWZXIJALUJAgkAkQMCBQVwYXJ0cwABAgE6BAtuZXdMb2NhdGlvbgkAkQMCBQtuZXdMb2NUeFZlcgAABAR0aW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJZmxpZ2h0TG9nBQtmbFRpbWVzdGFtcAMDCQBmAgUEdGltZQkAZAIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBRFGSVZFTUlOVVRFU01JTExJUwYJAGYCCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBQR0aW1lCQACAQkArAICCQCsAgIJAKwCAgIcc2lnbmF0dXJlIG91dGRhdGVkOiBsb2dUaW1lPQkApAMBBQR0aW1lAgksIGJjVGltZT0JAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAECXR4RnJvbU1zZwkAkQMCBQtuZXdMb2NUeFZlcgABBAZsYXN0VHgJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBEWtleUxhc3RUeElkQnlVc2VyAQUIdXNlckFkZHICAAMJAQIhPQIFBmxhc3RUeAUJdHhGcm9tTXNnCQACAQkArAICCQCsAgIJAKwCAgIeVHggaWRzIGRvbid0IG1hdGNoISBJbiBzdGF0ZTogBQZsYXN0VHgCCiwgaW4gbXNnOiAFCXR4RnJvbU1zZwQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQh1c2VyQWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAEDG9sZEZyb21TdGF0ZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkBAiE9AgUMb2xkRnJvbVN0YXRlBQVjdXJIUAkAAgEJAKwCAgkArAICCQCsAgICCm9sZEhlYWx0aD0JAKQDAQUMb2xkRnJvbVN0YXRlAi8gZnJvbSBzdGF0ZSBkb2VzIG5vdCBtYXRjaCBvbmUgZnJvbSBmbGlnaHQgbG9nPQkApAMBBQVjdXJIUAMJAGcCAAAFBWN1ckhQCQACAQIeWW91IGNhbid0IGZseSB3aXRoIHplcm8gaGVhbHRoAwkBASEBCQEXY2FuV2VhckN1cnJlbnRFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFkVxdWlwbWVudCBpbmNvbXBhdGlibGUEBWJvbnVzAwkAZgIJAJADAQUJZmxpZ2h0TG9nBQdmbEJvbnVzCQCRAwIFCWZsaWdodExvZwUHZmxCb251cwIABAhwcm9kVXNlZAMJAGYCCQCQAwEFCWZsaWdodExvZwULZmxQcm9kc1VzZWQJAJEDAgUJZmxpZ2h0TG9nBQtmbFByb2RzVXNlZAIABApzZW50QW1vdW50AwMJAGYCBQVuZXdIUAAACQAAAgUFYm9udXMCASQHCQEFYXNJbnQBCQD8BwQFDHJlc3RDb250cmFjdAINc2VuZFVzZHRQcml6ZQkAzAgCBQh1c2VyQWRkcgUDbmlsBQNuaWwAAAkAlwoFBQVuZXdIUAULZHVja0Fzc2V0SWQFCnNlbnRBbW91bnQFC25ld0xvY2F0aW9uBQhwcm9kVXNlZAEMYXBwbHlCb251c2VzAgtsYW5kQXNzZXRJZAZwaWVjZXMECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAlhcnRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQAAAQEYWRkNgkAaQIFCmluZnJhTGV2ZWwABgQEYWRkNwkAaQIFCmluZnJhTGV2ZWwABwkAZAIJAGQCBQ9EQUlMWVJFU0JZUElFQ0UJAGsDBQ9EQUlMWVJFU0JZUElFQ0UJAGQCCQBkAgUKaW5mcmFMZXZlbAUEYWRkNgkAaAIAAgUEYWRkNwAFCQBrAwUPREFJTFlSRVNCWVBJRUNFBQlhcnRQaWVjZXMJAGgCBQZwaWVjZXMABQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBGFkZHIJY2xhaW1Nb2RlDWxhbmRBc3NldElkSW4EDSR0MDMzNzM4MzQyNzcDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAlAoCBQ1sYW5kQXNzZXRJZEluCQELdmFsdWVPckVsc2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMCQCUCgIJAJEDAgUDbG9jBQhsb2NJZHhJZAULZHVja0Fzc2V0SWQEC2xhbmRBc3NldElkCAUNJHQwMzM3MzgzNDI3NwJfMQQGZHVja0lkCAUNJHQwMzM3MzgzNDI3NwJfMgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUHdGltZUtleQkArAICCQCsAgICBUxhbmQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwkAlgoEBQZkdWNrSWQFC2xhbmRBc3NldElkBQFkBQlzYXZlZFRpbWUBEGNsYWltUmVzSW50ZXJuYWwEBGFkZHIGYW1vdW50CWNsYWltTW9kZQ1sYW5kQXNzZXRJZEluAwkAZgIAAAUGYW1vdW50CQACAQIPTmVnYXRpdmUgYW1vdW50BAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBQljbGFpbU1vZGUFDWxhbmRBc3NldElkSW4ECGxhbmRTaXplCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIIBQFjAl8zBQtyZWNUZXJyYWlucwQJZGVsdGFUaW1lCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAIBQFjAl80AwkAZgIAAAUJZGVsdGFUaW1lCQACAQkArAICCQCsAgIJAKwCAgImU2F2ZWQgdGltZXN0YW1wIGlzIGluIGZ1dHVyZSwgc2F2ZWQgPSAJAKQDAQgFAWMCXzQCDCwgY3VycmVudCA9IAkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUEFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQxhcHBseUJvbnVzZXMCCAUBYwJfMgUGcGllY2VzBAhhdmFpbFJlcwkAawMFCWRlbHRhVGltZQkAaAIFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UFBnBpZWNlcwUJREFZTUlMTElTAwkAZgIFBmFtb3VudAUIYXZhaWxSZXMJAAIBCQCsAgIJAKwCAgkArAICAiJOb3QgZW5vdWdoIHJlc291cmNlcywgYXZhaWxhYmxlID0gCQCkAwEFCGF2YWlsUmVzAg4sIHJlcXVlc3RlZCA9IAkApAMBBQZhbW91bnQEDG5ld0RlbHRhVGltZQkAawMJAGUCBQhhdmFpbFJlcwUGYW1vdW50BQlEQVlNSUxMSVMJAGgCBRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBQZwaWVjZXMEDG5ld1RpbWVzdGFtcAkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQxuZXdEZWx0YVRpbWUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUECnJlc1RvQ2xhaW0JAQl2aXJ0Q2xhaW0EBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBCAUBYwJfMgQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEIBQFjAl8yAAAECWN1cnJlbnRXaAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBGxvZnQJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwQLd2hTcGFjZUxlZnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlAwMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQBmAgUGYW1vdW50BQt3aFNwYWNlTGVmdAcJAAIBCQCsAgIJAKwCAgIFT25seSAJAKQDAQULd2hTcGFjZUxlZnQCGCBzcGFjZSBsZWZ0IGluIHdhcmVob3VzZQQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEIBQFjAl8xBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEDmN1cnJlbnRQYWNrUmVzCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBAxjdXJyZW50V2hSZXMJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfBA0kdDAzNjY1MTM3NTIyAwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAJYKBAkBBmFkZFJlcwUFDGN1cnJlbnRXaFJlcwUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCAUKcmVzVG9DbGFpbQJfMgkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCAUKcmVzVG9DbGFpbQJfMgMJAAACBQljbGFpbU1vZGUFDWNsYWltTW9kZUR1Y2sJAJYKBAkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzCQEGYWRkUmVzBQUOY3VycmVudFBhY2tSZXMFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBAVkaXN0cgkBDWRpc3RyaWJ1dGVSZXMEBQxjdXJyZW50V2hSZXMFDmN1cnJlbnRQYWNrUmVzBQpyZXNUb0NsYWltBQt3aFNwYWNlTGVmdAQEd2hBbQkAlwMBCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCQDMCAIIBQpyZXNUb0NsYWltAl8yBQNuaWwJAJYKBAgFBWRpc3RyAl8xCAUFZGlzdHICXzIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQFBHdoQW0JAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQUEd2hBbQQFd2hSZXMIBQ0kdDAzNjY1MTM3NTIyAl8xBAVicFJlcwgFDSR0MDM2NjUxMzc1MjICXzIEBWxvZnRPCAUNJHQwMzY2NTEzNzUyMgJfMwQFbG9mdEYIBQ0kdDAzNjY1MTM3NTIyAl80CQCXCgUJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQgFAWMCXzIFDG5ld1RpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYCAUBYwJfMgUEYWRkcgUMbmV3VGltZXN0YW1wBQNuaWwFBWJwS2V5CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgUFYnBSZXMJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwFBXdoS2V5CQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCBQV3aFJlcwkAzAgCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQJAMwIAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAkAzAgCCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAJEDAgUEbG9mdAUIdm9sVG90YWwFA25pbAIBXwUDbmlsAQhjbGFpbUFsbAQEYWRkcgtsYW5kQXNzZXRJZAZwaWVjZXMJY2xhaW1Nb2RlBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJAQV2YWx1ZQEJAJ8IAQUHdGltZUtleQQIYXZhaWxSZXMJAGgCCQBrAwkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQlzYXZlZFRpbWUJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBQlEQVlNSUxMSVMFBnBpZWNlcwkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQhhdmFpbFJlcwUJY2xhaW1Nb2RlBQtsYW5kQXNzZXRJZAENdXBJbmZyYUNvbW1vbgQMc2hvdWxkVXNlTWF0BmNhbGxlcg1wYXltZW50QW1vdW50C2xhbmRBc3NldElkBARhZGRyCQClCAEFBmNhbGxlcgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUTY2xhaW1Nb2RlV2hUaGVuRHVjawULbGFuZEFzc2V0SWQEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBAhpbmZyYUtleQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBCAUBYwJfMgQIY3VyTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUIaW5mcmFLZXkAAAMDCQEBIQEFGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQkAZwIFCGN1ckxldmVsAAMHCQACAQImQ3VycmVudGx5IG1heCBpbmZyYXN0cnVjdHVyZSBsZXZlbCA9IDMECG1heEluZnJhCQBkAgkAaQIJAQRzcXJ0BAUGcGllY2VzAAAAAAUERE9XTgAFAAIECG5ld0xldmVsCQBkAgUIY3VyTGV2ZWwAAQMDBRhLU19BTExPV19CSUdfSU5GUkFfTUVSR0UJAGYCBQhuZXdMZXZlbAUIbWF4SW5mcmEHCQACAQkArAICAiVDdXJyZW50bHkgbWF4IGluZnJhc3RydWN0dXJlIGxldmVsID0gCQCkAwEFCG1heEluZnJhBARjb3N0CQBrAwUVSW5mcmFVcGdyYWRlQ29zdFNVc2R0CQBoAgUGcGllY2VzBQhuZXdMZXZlbAUFU1NJWkUDAwkBASEBBQxzaG91bGRVc2VNYXQJAQIhPQIFDXBheW1lbnRBbW91bnQFBGNvc3QHCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUEY29zdAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEIBQFjAl8xBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW1MaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBAdtYXRVc2VkCQBrAwURSW5mcmFVcGdyYWRlQ29zdFMJAGgCBQZwaWVjZXMFCG5ld0xldmVsBQVTU0laRQQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMFDHNob3VsZFVzZU1hdAUFbUxpc3QFB21hdFVzZWQCAV8EC2NsYWltUmVzdWx0CQEIY2xhaW1BbGwEBQRhZGRyCAUBYwJfMgUGcGllY2VzBRNjbGFpbU1vZGVXaFRoZW5EdWNrBAZ3aERhdGEIBQtjbGFpbVJlc3VsdAJfNQQGb2xkVm9sCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFBndoRGF0YQULd2hJZHhMZXZlbHMECm5ld1ZvbERhdGEJALkJAgkAzAgCCQCRAwIJALUJAgkAkQMCBQZ3aERhdGEFC3doSWR4TGV2ZWxzAgFfAAAJAMwIAgkApAMBBQhuZXdMZXZlbAUDbmlsAgFfBAZuZXdWb2wJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEFCm5ld1ZvbERhdGEEBGxvZnQJALUJAgkAkQMCBQZ3aERhdGEFCXdoSWR4TE9GVAIBXwQKbmV3TG9mdFN0cgkAuQkCCQDMCAIJAJEDAgUEbG9mdAUJdm9sTG9ja2VkCQDMCAIJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQJAMwIAgkApAMBCQBlAgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBQZuZXdWb2wFBm9sZFZvbAkAzAgCCQCkAwEFBm5ld1ZvbAUDbmlsAgFfCQCVCgMJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUIaW5mcmFLZXkFCG5ld0xldmVsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAggFAWMCXzIFBGFkZHIFCG5ld0xldmVsCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIIBQtjbGFpbVJlc3VsdAJfMwUIYnBJZHhSZXMJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfNAkAuQkCCQDMCAIFCm5ld1ZvbERhdGEJAMwIAgkAkQMCBQZ3aERhdGEFCHdoSWR4UmVzCQDMCAIJAJEDAgUGd2hEYXRhBQh3aElkeE1hdAkAzAgCCQCRAwIFBndoRGF0YQUJd2hJZHhQcm9kCQDMCAIFCm5ld0xvZnRTdHIFA25pbAIBOgUDbmlsCAULY2xhaW1SZXN1bHQCXzEFCG5ld0xldmVsBQdtYXRVc2VkARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAILZHVja0Fzc2V0SWQHZGVsdGFYUAQGbHZsS2V5CQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQEBXhwS2V5CQEJa2V5RHVja1hQAQULZHVja0Fzc2V0SWQEAnhwCQELdmFsdWVPckVsc2UCCQCfCAEFBXhwS2V5AAAEBW5ld1hQCQBkAgUCeHAFB2RlbHRhWFAECWx2bFBvaW50cwkBB2xldmVsVXACCQELdmFsdWVPckVsc2UCCQCfCAEFBmx2bEtleQAABQVuZXdYUAQJa2V5UG9pbnRzCQERa2V5RHVja0ZyZWVQb2ludHMBBQtkdWNrQXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQZsdmxLZXkJAJEDAgUJbHZsUG9pbnRzAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFBXhwS2V5BQVuZXdYUAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5UG9pbnRzCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlQb2ludHMAAAkAkQMCBQlsdmxQb2ludHMAAQUDbmlsBQVuZXdYUAEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIEYWRkcgdkZWx0YVhQBAZsdmxLZXkJAQxrZXlVc2VyTGV2ZWwBBQRhZGRyBAV4cEtleQkBCWtleVVzZXJYUAEFBGFkZHIEAnhwCQELdmFsdWVPckVsc2UCCQCfCAEFBXhwS2V5AAAEBW5ld1hQCQBkAgUCeHAFB2RlbHRhWFAECWx2bFBvaW50cwkBB2xldmVsVXACCQELdmFsdWVPckVsc2UCCQCfCAEFBmx2bEtleQAABQVuZXdYUAQJa2V5UG9pbnRzCQERa2V5VXNlckZyZWVQb2ludHMBBQRhZGRyCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFBmx2bEtleQkAkQMCBQlsdmxQb2ludHMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUFeHBLZXkFBW5ld1hQCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlQb2ludHMJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleVBvaW50cwAACQCRAwIFCWx2bFBvaW50cwABBQNuaWwFBW5ld1hQARJhY3RpdmF0ZU9uYm9hcmRBcnQBBGFkZHIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQIcmVmQnlLZXkJAQ9rZXlBZGRyZXNzUmVmQnkBBQRhZGRyBAVyZWZCeQkAoggBBQhyZWZCeUtleQMJAQEhAQkBCWlzRGVmaW5lZAEFBXJlZkJ5CQACAQIpWW91IGFyZSBub3QgZWxpZ2libGUgZm9yIE9OQk9BUkQgYXJ0aWZhY3QEBmFydEtleQkBHGtleU9uYm9hcmRBcnREdWNrQWN0aXZhdGVkQnkBBQRhZGRyBAdhcnREdWNrCQCiCAEFBmFydEtleQMJAQlpc0RlZmluZWQBBQdhcnREdWNrCQACAQkArAICAi9Zb3UgYWxyZWFkeSB1c2VkIHlvdXIgT05CT0FSRCBhcnRpZmFjdCBvbiBkdWNrIAkBBXZhbHVlAQUHYXJ0RHVjawQQZHVja0FjdGl2YXRvcktleQkBHGtleU9uYm9hcmRBcnRBY3RpdmF0ZWRPbkR1Y2sBBQtkdWNrQXNzZXRJZAQNZHVja0FjdGl2YXRvcgkAoggBBRBkdWNrQWN0aXZhdG9yS2V5AwkBCWlzRGVmaW5lZAEFDWR1Y2tBY3RpdmF0b3IJAAIBCQCsAgIJAKwCAgkArAICAglUaGUgZHVjayAFC2R1Y2tBc3NldElkAjQgYWxyZWFkeSBnb3QgcG9pbnRzIGZyb20gT05CT0FSRCBhcnRpZmFjdCBmcm9tIHVzZXIgCQEFdmFsdWUBBQ1kdWNrQWN0aXZhdG9yCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGYXJ0S2V5BQtkdWNrQXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCBRBkdWNrQWN0aXZhdG9yS2V5BQRhZGRyBQNuaWwICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUJeHBPbmJvYXJkAl8xARJhY3RpdmF0ZVByZXNhbGVBcnQCBGFkZHINbGFuZEFzc2V0SWRJbgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUTY2xhaW1Nb2RlV2hUaGVuRHVjawUNbGFuZEFzc2V0SWRJbgQLbGFuZEFzc2V0SWQIBQFjAl8yBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQNYWN0aXZhdGlvbktleQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQDCQBmAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ1hY3RpdmF0aW9uS2V5AAAAAAkAAgECJVByZXNhbGUgYXJ0aWZhY3QgaXMgYWxyZWFkeSBhY3RpdmF0ZWQDCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIIBQFjAl8zBQpyZWNMYW5kTnVtBQ9QUkVTQUxFTlVNTEFORFMJAAIBCQCsAgIJAKwCAgkArAICBQpMQU5EUFJFRklYAgEgBQtsYW5kQXNzZXRJZAIlIGlzIG5vdCBlbGlnaWJsZSBmb3IgcHJlc2FsZSBhcnRpZmFjdAQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIFC2xhbmRBc3NldElkBQZwaWVjZXMFE2NsYWltTW9kZVdoVGhlbkR1Y2sJAM0IAgkAzQgCCQDNCAIIBQtjbGFpbVJlc3VsdAJfMQkBDEludGVnZXJFbnRyeQIFDWFjdGl2YXRpb25LZXkFBnBpZWNlcwkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al8yCQC5CQIIBQtjbGFpbVJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al80CQC5CQIIBQtjbGFpbVJlc3VsdAJfNQIBOgEPY2hlY2tUb3VybmFtZW50AQtkdWNrQXNzZXRJZAQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAV0RGF0YQkBC2dldFRvdXJEYXRhAgUSdG91cm5hbWVudENvbnRyYWN0BQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBVAcDAwMJAAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FD2xvY0lkeENvbnRpbmVudAUGbGFzdElkCQAAAgkAkQMCBQdkeW5hbWljBQ50RHluYW1pY1N0YXR1cwIKSU5QUk9HUkVTUwcJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBQp0U3RhdGljRW5kBQNub3cHCQACAQIqWW91ciBkdWNrIGlzIHRha2luZyBwYXJ0IGluIHRoZSB0b3VybmFtZW50CQEJYXNCb29sZWFuAQkA/AcEBQR0aGlzAhZleGl0VG91cm5hbWVudEludGVybmFsCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAENY2hlY2tEZWxpdmVyeQELZHVja0Fzc2V0SWQDCQEBIQEFEUtTX0FMTE9XX0RFTElWRVJZBwQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAMJAQIhPQIJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUCAUQHBAlzdGFydFRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUPbG9jSWR4Q29udGluZW50BAhkaXN0YW5jZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQhsb2NJZHhJZAMDCQBmAgUDbm93CQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMJAGYCAAMFCGRpc3RhbmNlBwkAAgECIFlvdXIgZHVjayBpcyBvbiBkZWxpdmVyeSBtaXNzaW9uCQEJYXNCb29sZWFuAQkA/AcEBQR0aGlzAhRleGl0RGVsaXZlcnlJbnRlcm5hbAkAzAgCBQtkdWNrQXNzZXRJZAUDbmlsBQNuaWwBEmV4aXREZWxpdmVyeUNvbW1vbgELZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECXN0YXJ0VGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQ9sb2NJZHhDb250aW5lbnQECGRpc3RhbmNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FCGxvY0lkeElkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQULZHVja0Fzc2V0SWQCFE5GVCBkdWNrIGlzIG9ycGhhbmVkBAloZWFsdGhLZXkJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQECWN1ckhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQUJaGVhbHRoS2V5BA5vdXRjb21lQWN0aW9ucwMJAGcCBQhkaXN0YW5jZQADBAZyZXdhcmQJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhJzZW5kRGVsaXZlcnlSZXdhcmQJAMwIAgUFb3duZXIFA25pbAUDbmlsAwkAAAIFBnJld2FyZAUGcmV3YXJkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQBmAgUDbm93CQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMJAAIBAiZZb3VyIGR1Y2sgaXMgc3RpbGwgb24gZGVsaXZlcnkgbWlzc2lvbgQLbG9ja2VkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BRFkZWxpdmVyeUxvY2tlZEtleQAABAZ1bmxvY2sJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhR1cGRhdGVEZWxpdmVyeUxvY2tlZAkAzAgCCQBlAgULbG9ja2VkVG90YWwFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUDbmlsBQNuaWwDCQAAAgUGdW5sb2NrBQZ1bmxvY2sDCQBnAgAABQljdXJIZWFsdGgFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleURlbGl2ZXJ5RGVsYXlCeUR1Y2sBBQtkdWNrQXNzZXRJZAkAZAIFCXN0YXJ0VGltZQUJREFZTUlMTElTBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EC3NhdmVkSGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAQNc2F2ZWRMb2NhdGlvbgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAlgoEBQ5vdXRjb21lQWN0aW9ucwkAzAgCCQEMSW50ZWdlckVudHJ5AgUJaGVhbHRoS2V5BQtzYXZlZEhlYWx0aAkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFDXNhdmVkTG9jYXRpb24FA25pbAUNc2F2ZWRMb2NhdGlvbgULc2F2ZWRIZWFsdGgBDW1lcmdlSW50ZXJuYWwGC25ld0xhbmRTaXplCG5ld0xldmVsB2Zvcm11bGEEYWRkcgxsYW5kQXNzZXRJZHMHbmVlZE1hdAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIdbWVyZ2VJbnRlcm5hbF9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIbbWVyZ2VJbnRlcm5hbF9jaGVja0RlbGl2ZXJ5CgEKY2hlY2tNZXJnZQIDYWNjC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQd0aW1lS2V5CQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8ECWNvbnRpbmVudAkAkQMCBQFkBQxyZWNDb250aW5lbnQDAwkBAiE9AggFA2FjYwJfMwIACQECIT0CCAUDYWNjAl8zBQljb250aW5lbnQHCQACAQIuTGFuZHMgc2hvdWxkIGJlIG9uIHRoZSBzYW1lIGNvbnRpbmVudCB0byBtZXJnZQQIbGFuZFNpemUJAJEDAgUBZAULcmVjTGFuZFNpemUEB3NpemVzSW4IBQNhY2MCXzEEAWkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAswkCBQdzaXplc0luBQhsYW5kU2l6ZQInWW91IGhhdmVuJ3QgcGFzc2VkIGFsbCB0aGUgbGFuZHMgbmVlZGVkBAhzaXplc091dAkArAICCQCvAgIFB3NpemVzSW4FAWkJALACAgUHc2l6ZXNJbgkAZAIFAWkAAQQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUEBGFydHMJAGQCCAUDYWNjAl8yCQELdmFsdWVPckVsc2UCCQCfCAEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAAAECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAhyZXFMZXZlbAQHJG1hdGNoMAUIbGFuZFNpemUDCQAAAgIBUwUHJG1hdGNoMAADAwkAAAICAU0FByRtYXRjaDAABAMJAAACAgFMBQckbWF0Y2gwAAUDCQAAAgICWEwFByRtYXRjaDAABgkAAgECGk9ubHkgUywgTSwgTCwgWEwgY2FuIG1lcmdlAwkBAiE9AgUKaW5mcmFMZXZlbAUIcmVxTGV2ZWwJAAIBAiJBbGwgbGFuZHMgc2hvdWxkIGJlIG1heGVkIHRvIG1lcmdlBAdsYW5kTnVtCQCRAwIFAWQFCnJlY0xhbmROdW0EDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQJZGVsdGFUaW1lCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCXNhdmVkVGltZQMJAGYCAAAFCWRlbHRhVGltZQkAAgEJAKwCAgkArAICCQCsAgICJlNhdmVkIHRpbWVzdGFtcCBpcyBpbiBmdXR1cmUsIHNhdmVkID0gCQCkAwEFCXNhdmVkVGltZQIMLCBjdXJyZW50ID0gCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBBZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFYnBSZXMJAQZhZGRSZXMFCQC1CQIIBQNhY2MCXzQCAV8FDXRlcnJhaW5Db3VudHMFCWRlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBAVwcm9wcwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjAl82BQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQGY1Byb3BzCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIBQNhY2MDXzEwBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQLc3VtVGVycmFpbnMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwJfOQUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAEEBWxhbmRzCAUDYWNjAl83BANpZHgJAM8IAgUFbGFuZHMFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQUDaWR4CQACAQkArAICAiBZb3VyIHN0YWtlZCBsYW5kcyBkb24ndCBjb250YWluIAULbGFuZEFzc2V0SWQECWN1c3RvbUtleQkBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQULbGFuZEFzc2V0SWQECmN1c3RvbU5hbWUJAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VzdG9tS2V5AgAJAJwKCgUIc2l6ZXNPdXQFBGFydHMFCWNvbnRpbmVudAUFYnBSZXMJAM4IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIIBQNhY2MCXzUJAQtEZWxldGVFbnRyeQEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFBGFkZHIJAQtEZWxldGVFbnRyeQEJARBrZXlMYW5kVG9Bc3NldElkAQUHbGFuZE51bQkBC0RlbGV0ZUVudHJ5AQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgULbGFuZEFzc2V0SWQFBGFkZHIJAQtEZWxldGVFbnRyeQEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQERa2V5TGFuZE51bVRvT3duZXIBBQdsYW5kTnVtCQELRGVsZXRlRW50cnkBCQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEFCWN1c3RvbUtleQkBBEJ1cm4CCQDZBAEFC2xhbmRBc3NldElkAAEDCQECIT0CBQpjdXN0b21OYW1lAgAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQUDbmlsBQNuaWwFBXByb3BzCQDRCAIFBWxhbmRzCQEFdmFsdWUBBQNpZHgJAGQCCAUDYWNjAl84BQZwaWVjZXMFC3N1bVRlcnJhaW5zBQZjUHJvcHMEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9wTGlzdAkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJARFrZXlSZXNQcm9wb3J0aW9ucwACCzBfMF8wXzBfMF8wAgFfBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFBGFkZHIECGxhbmRzU3RyCQCiCAEFCGxhbmRzS2V5BAdsYW5kc0luAwkBCWlzRGVmaW5lZAEFCGxhbmRzU3RyCQC9CQIJAQV2YWx1ZQEFCGxhbmRzU3RyAgFfBQNuaWwEBWNvbnQwCQCRAwIJALUJAggJAQV2YWx1ZQEJAOwHAQkA2QQBCQCRAwIFDGxhbmRBc3NldElkcwAAC2Rlc2NyaXB0aW9uAgFfBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQUFY29udDACCzBfMF8wXzBfMF8wAgFfBAFyCgACJGwFDGxhbmRBc3NldElkcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJwKCgUHZm9ybXVsYQAAAgAJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzBQNuaWwFCHByb3BMaXN0BQdsYW5kc0luAAAJALUJAgILMF8wXzBfMF8wXzACAV8FCWNvbnRQcm9wcwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKY2hlY2tNZXJnZQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUECWNvbnRpbmVudAgFAXICXzMEDGNvbnRpbmVudElkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDPCAIFCmNvbnRpbmVudHMFCWNvbnRpbmVudAkArAICAhNVbmtub3duIGNvbnRpbmVudDogBQljb250aW5lbnQECHRlcnJhaW5zCQETZ2VuVGVycmFpbnNGb3JNZXJnZQIIBQFyAl85CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEFC25ld0xhbmRTaXplBQVTU0laRQQHZnJlZU51bQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFD1BSRVNBTEVOVU1MQU5EUwABBApuZXdMYW5kTnVtCQCkAwEFB2ZyZWVOdW0EBWlzc3VlCQDCCAUJAQduZnROYW1lAgUKbmV3TGFuZE51bQULbmV3TGFuZFNpemUJALkJAgkAzAgCBQpuZXdMYW5kTnVtCQDMCAIFC25ld0xhbmRTaXplCQDMCAIFCHRlcnJhaW5zCQDMCAIFCWNvbnRpbmVudAUDbmlsAgFfAAEAAAcEB2Fzc2V0SWQJALgIAQUFaXNzdWUEDm5ld0xhbmRBc3NldElkCQDYBAEFB2Fzc2V0SWQEBm5ld01hdAkAuQkCCQERc3VidHJhY3RNYXRlcmlhbHMDCQBmAgUHbmVlZE1hdAAACQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBQduZWVkTWF0AgFfBAlwaWVjZXNLZXkJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUEYWRkcgQMc3Rha2VkUGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEFCXBpZWNlc0tleQAACQCUCgIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIIBQFyAl81AwkAZgIJAJADAQgFAXICXzcAAAkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAggFAXICXzcCAV8JAQtEZWxldGVFbnRyeQEFCGxhbmRzS2V5CQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5AwkAZgIIBQFyAl84BQxzdGFrZWRQaWVjZXMAAAkAZQIFDHN0YWtlZFBpZWNlcwgFAXICXzgJAQxJbnRlZ2VyRW50cnkCCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFB2ZyZWVOdW0AAQUFaXNzdWUJAQtTdHJpbmdFbnRyeQIJARBrZXlMYW5kVG9Bc3NldElkAQUKbmV3TGFuZE51bQUObmV3TGFuZEFzc2V0SWQJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQ5uZXdMYW5kQXNzZXRJZAUEYWRkcgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUKbmV3TGFuZE51bQUEYWRkcgkBDEludGVnZXJFbnRyeQIJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFDm5ld0xhbmRBc3NldElkCAUBcgJfMgkBDEludGVnZXJFbnRyeQIJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQUObmV3TGFuZEFzc2V0SWQFCG5ld0xldmVsCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFDm5ld0xhbmRBc3NldElkBQRhZGRyBQhuZXdMZXZlbAkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIIBQFyAl80CQDMCAIFBm5ld01hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAkAuQkCCAUBcgJfNgIBXwkBC1N0cmluZ0VudHJ5AgkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBBQljb250aW5lbnQJALkJAggFAXIDXzEwAgFfCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQJALkJAgkAzAgCBQljb250aW5lbnQJAMwIAgIBTAkAzAgCBQ5uZXdMYW5kQXNzZXRJZAUDbmlsAgFfCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQRhZGRyAAEFB2Fzc2V0SWQFDm5ld0xhbmRBc3NldElkAQNzMm0CBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAU0AAwIEU1NTUwUEYWRkcgUMbGFuZEFzc2V0SWRzAAABA20ybAIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgIBTAAEAgNTTU0FBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTAAQBBGwyeGwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAlhMAAUCBVNTU01MBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwAvAQZ4bDJ4eGwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCA1hYTAAGAgNMWEwFBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTADYBC21lcmdlQ29tbW9uAgRhZGRyDGxhbmRBc3NldElkcwQHJG1hdGNoMAkAkAMBBQxsYW5kQXNzZXRJZHMDCQAAAgAEBQckbWF0Y2gwCQEDczJtAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIAAwUHJG1hdGNoMAkBA20ybAIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAUFByRtYXRjaDAJAQRsMnhsAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIAAgUHJG1hdGNoMAkBBnhsMnh4bAIFBGFkZHIFDGxhbmRBc3NldElkcwkAAgECDVVua25vd24gbWVyZ2UBFWNoZWNrT3V0ZGF0ZWREZWxpdmVyeQEIdXNlckFkZHIEBGR1Y2sJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUIdXNlckFkZHIDAwURS1NfQUxMT1dfREVMSVZFUlkJAQlpc0RlZmluZWQBBQRkdWNrBwQLZHVja0Fzc2V0SWQJAQV2YWx1ZQEFBGR1Y2sEBmxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBANsb2MJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQZsb2NLZXkFD0RFRkFVTFRMT0NBVElPTgIBXwQJc3RhcnRUaW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQDAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUQGCQBmAggFCWxhc3RCbG9jawl0aW1lc3RhbXAJAGQCBQlzdGFydFRpbWUFElRFTl9NSU5VVEVTX01JTExJUwUDbmlsBAloZWFsdGhLZXkJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQDCQBnAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUIbG9jSWR4SWQAAwQGcmV3YXJkCQD8BwQFD2Vjb25vbXlDb250cmFjdAISc2VuZERlbGl2ZXJ5UmV3YXJkCQDMCAIFCHVzZXJBZGRyBQNuaWwFA25pbAMJAAACBQZyZXdhcmQFBnJld2FyZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDNCAIJAM0IAgQLbG9ja2VkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BRFkZWxpdmVyeUxvY2tlZEtleQAABAZ1bmxvY2sJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhR1cGRhdGVEZWxpdmVyeUxvY2tlZAkAzAgCCQBlAgULbG9ja2VkVG90YWwFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUDbmlsBQNuaWwDCQAAAgUGdW5sb2NrBQZ1bmxvY2sDCQBnAgAACQERQGV4dHJOYXRpdmUoMTA1NSkBBQloZWFsdGhLZXkFA25pbAQKcHVuaXNobWVudAkA/AcEBQR0aGlzAgtzYXZlSW50ZWdlcgkAzAgCCQEWa2V5RGVsaXZlcnlEZWxheUJ5RHVjawEFC2R1Y2tBc3NldElkCQDMCAIJAGQCBQlzdGFydFRpbWUFCURBWU1JTExJUwUDbmlsBQNuaWwDCQAAAgUKcHVuaXNobWVudAUKcHVuaXNobWVudAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQEMSW50ZWdlckVudHJ5AgUJaGVhbHRoS2V5CQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAkBC1N0cmluZ0VudHJ5AgUGbG9jS2V5CQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQNuaWwBBnByb2xvZwEBaQMDCQECIT0CCAUBaQxvcmlnaW5DYWxsZXIFDHJlc3RDb250cmFjdAkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEKa2V5QmxvY2tlZAAHBwkAAgECH0NvbnRyYWN0cyBhcmUgdW5kZXIgbWFpbnRlbmFuY2UECHVzZXJBZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgkAzQgCCQEVY2hlY2tPdXRkYXRlZERlbGl2ZXJ5AQUIdXNlckFkZHIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYXN0VHhJZEJ5VXNlcgEFCHVzZXJBZGRyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQBDHByb2xvZ0ZsaWdodAEBaQMDCQECIT0CCAUBaQxvcmlnaW5DYWxsZXIFDHJlc3RDb250cmFjdAkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEKa2V5QmxvY2tlZAAHBwkAAgECH0NvbnRyYWN0cyBhcmUgdW5kZXIgbWFpbnRlbmFuY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhc3RUeElkQnlVc2VyAQkApQgBCAUBaQxvcmlnaW5DYWxsZXIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAUDbmlsLQFpAQ1jb25zdHJ1Y3RvclYxAQhyZXN0QWRkcgMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlSZXN0QWRkcmVzcwAFCHJlc3RBZGRyBQNuaWwBaQELc2F2ZUludGVnZXICA2tleQZhbW91bnQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAiBzYXZlSW50ZWdlciBpcyBub3QgcHVibGljIG1ldGhvZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUDa2V5BQZhbW91bnQFA25pbAFpAQpzZXRCbG9ja2VkAQlpc0Jsb2NrZWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBCmtleUJsb2NrZWQABQlpc0Jsb2NrZWQFA25pbAFpAQlzdGFrZUxhbmQABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAdhc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyAwkBAiE9AggFA3BtdAZhbW91bnQAAQkAAgEJAKwCAgkArAICAgRORlQgBQpMQU5EUFJFRklYAiQgdG9rZW4gc2hvdWxkIGJlIGF0dGFjaGVkIGFzIHBheW1lbnQEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQDCQECIT0CCAUFYXNzZXQGaXNzdWVyBQR0aGlzCQACAQIXVW5rbm93biBpc3N1ZXIgb2YgdG9rZW4DCQEBIQEJAQhjb250YWlucwIIBQVhc3NldARuYW1lBQpMQU5EUFJFRklYCQACAQkArAICCQCsAgICCU9ubHkgTkZUIAUKTEFORFBSRUZJWAIUIHRva2VucyBhcmUgYWNjZXB0ZWQEC2xhbmROdW1TaXplCQCwAgIIBQVhc3NldARuYW1lAAQEB2xhbmROdW0DCQEIY29udGFpbnMCBQtsYW5kTnVtU2l6ZQIDWFhMCQCzAgIFC2xhbmROdW1TaXplAAMDCQEIY29udGFpbnMCBQtsYW5kTnVtU2l6ZQICWEwJALMCAgULbGFuZE51bVNpemUAAgkAswICBQtsYW5kTnVtU2l6ZQABAwkBASEBCQEJaXNEZWZpbmVkAQkAtgkBBQdsYW5kTnVtCQACAQkArAICAh5DYW5ub3QgcGFyc2UgbGFuZCBudW1iZXIgZnJvbSAIBQVhc3NldARuYW1lBAtsYW5kQXNzZXRJZAkA2AQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAwkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQISIGlzIGFscmVhZHkgc3Rha2VkBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIFAWQFC3JlY1RlcnJhaW5zBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAlsYW5kSW5kZXgJAGkCBQZwaWVjZXMFBVNTSVpFBAVwcm9wcwkBEXVwZGF0ZVByb3BvcnRpb25zAwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAEEDHJlc0J5Q29udEtleQkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBCQCRAwIFAWQFDHJlY0NvbnRpbmVudAQJY29udFByb3BzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUMcmVzQnlDb250S2V5AgswXzBfMF8wXzBfMAIBXwQQdXBkYXRlZENvbnRQcm9wcwkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCWNvbnRQcm9wcwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAECAV8ECGxhbmRzS2V5CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUHYWRkcmVzcwQIbGFuZHNTdHIJAKIIAQUIbGFuZHNLZXkEBWxhbmRzAwkBCWlzRGVmaW5lZAEFCGxhbmRzU3RyCQC9CQIJAQV2YWx1ZQEFCGxhbmRzU3RyAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUFbGFuZHMFC2xhbmRBc3NldElkCQACAQkArAICAiJZb3VyIHN0YWtlZCBsYW5kcyBhbHJlYWR5IGNvbnRhaW4gBQtsYW5kQXNzZXRJZAMJAGcCCQCQAwEFBWxhbmRzBRhNQVhfTEFORFNfU1RBS0VEX0JZX1VTRVIJAAIBCQCsAgIJAKwCAgIZWW91ciBhbHJlYWR5IHN0YWtlZCBtYXggKAkApAMBBRhNQVhfTEFORFNfU1RBS0VEX0JZX1VTRVICBykgbGFuZHMECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAlwaWVjZXNLZXkJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUHYWRkcmVzcwQJb2xkUGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEFCXBpZWNlc0tleQAABAl3bGdSZXN1bHQJAPwHBAULd2xnQ29udHJhY3QCEm9uU3Rha2VVbnN0YWtlTGFuZAkAzAgCBQdhZGRyZXNzBQNuaWwFA25pbAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFB3RpbWVLZXkIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgFC2xhbmRBc3NldElkBQdhZGRyZXNzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQELU3RyaW5nRW50cnkCBQhsYW5kc0tleQkAuwkCCQDNCAIFBWxhbmRzBQtsYW5kQXNzZXRJZAIBXwkAzAgCCQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5CQBkAgUJb2xkUGllY2VzBQZwaWVjZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkBQdhZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0FB2FkZHJlc3MJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQtsYW5kQXNzZXRJZAUHYWRkcmVzcwUKaW5mcmFMZXZlbAkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMABQVwcm9wcwkAzAgCCQELU3RyaW5nRW50cnkCBQxyZXNCeUNvbnRLZXkFEHVwZGF0ZWRDb250UHJvcHMFA25pbAUNcHJvbG9nQWN0aW9ucwUJd2xnUmVzdWx0AWkBC3Vuc3Rha2VMYW5kAQ1sYW5kQXNzZXRJZEluBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpBmNhbGxlcgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUNY2xhaW1Nb2RlRHVjawUNbGFuZEFzc2V0SWRJbgQLbGFuZEFzc2V0SWQIBQFjAl8yBAFkCAUBYwJfMwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQRhZGRyBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBXByb3BzCQERdXBkYXRlUHJvcG9ydGlvbnMDBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQMcmVzQnlDb250S2V5CQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJAJEDAgUBZAUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQxyZXNCeUNvbnRLZXkCCzBfMF8wXzBfMF8wAgFfBBB1cGRhdGVkQ29udFByb3BzCQC5CQIJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAUJY29udFByb3BzBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQIBXwQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIFC2xhbmRBc3NldElkBQZwaWVjZXMFDWNsYWltTW9kZUR1Y2sEBWxhbmRzCQC9CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUIbGFuZHNLZXkCAAIBXwQDaWR4CQDPCAIFBWxhbmRzBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEFA2lkeAkAAgEJAKwCAgIgWW91ciBzdGFrZWQgbGFuZHMgZG9uJ3QgY29udGFpbiAFC2xhbmRBc3NldElkBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBA5nb3ZSZWxlYXNlVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQtnb3ZDb250cmFjdAkBFWtleVVzZXJHd2xSZWxlYXNlVGltZQEFBGFkZHIAAAMJAGcCBQ5nb3ZSZWxlYXNlVGltZQUDbm93CQACAQkArAICAjlZb3VyIGdXTCBhcmUgdGFraW5nIHBhcnQgaW4gdm90aW5nLCBjYW5ub3QgdW5zdGFrZSB1bnRpbCAJAKQDAQUOZ292UmVsZWFzZVRpbWUEDmFyYlJlbGVhc2VUaW1lCQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQt3bGdDb250cmFjdAkBFGtleUxhc3RBcmJUaW1lQnlVc2VyAQUEYWRkcgAABQ5hcmJpdHJhZ2VEZWxheQMJAGYCBQ5hcmJSZWxlYXNlVGltZQUDbm93CQACAQkArAICAj9Zb3VyIHN0YWtlZCBsYW5kcyB0b29rIHBhcnQgaW4gYXJiaXRyYWdlLCBjYW5ub3QgdW5zdGFrZSB1bnRpbCAJAKQDAQUOYXJiUmVsZWFzZVRpbWUECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQRhZGRyBAxzdGFrZWRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAECW5ld1BpZWNlcwMJAGYCBQZwaWVjZXMFDHN0YWtlZFBpZWNlcwAACQBlAgUMc3Rha2VkUGllY2VzBQZwaWVjZXMECXdsZ1Jlc3VsdAkA/AcEBQt3bGdDb250cmFjdAISb25TdGFrZVVuc3Rha2VMYW5kCQDMCAIFBGFkZHIFA25pbAUDbmlsCQCUCgIJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQkA2QQBBQtsYW5kQXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFBGFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAUFcHJvcHMJAMwIAgkBC1N0cmluZ0VudHJ5AgUMcmVzQnlDb250S2V5BRB1cGRhdGVkQ29udFByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfMgkAuQkCCAULY2xhaW1SZXN1bHQCXzMCAToJAMwIAgMJAGYCCQCQAwEFBWxhbmRzAAEJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIJANEIAgUFbGFuZHMJAQV2YWx1ZQEFA2lkeAIBXwkBC0RlbGV0ZUVudHJ5AQUIbGFuZHNLZXkJAMwIAgkBDEludGVnZXJFbnRyeQIFCXBpZWNlc0tleQUJbmV3UGllY2VzBQNuaWwFDXByb2xvZ0FjdGlvbnMFCXdsZ1Jlc3VsdAFpAQlzdGFrZUR1Y2sABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAdhc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyAwkBAiE9AggFA3BtdAZhbW91bnQAAQkAAgEJAKwCAgkArAICAgRORlQgBQpEVUNLUFJFRklYAiQgdG9rZW4gc2hvdWxkIGJlIGF0dGFjaGVkIGFzIHBheW1lbnQEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQDAwkBAiE9AggFBWFzc2V0Bmlzc3VlcgUNaW5jdWJhdG9yQWRkcgkBAiE9AggFBWFzc2V0Bmlzc3VlcgULYnJlZWRlckFkZHIHCQACAQkArAICCQCsAgICElVua25vd24gaXNzdWVyIG9mIAUKRFVDS1BSRUZJWAIGIHRva2VuAwkBASEBCQEIY29udGFpbnMCCAUFYXNzZXQEbmFtZQUKRFVDS1BSRUZJWAkAAgEJAKwCAgkArAICAglPbmx5IE5GVCAFCkRVQ0tQUkVGSVgCFCB0b2tlbnMgYXJlIGFjY2VwdGVkBAphc3NldElkU3RyCQDYBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUKYXNzZXRJZFN0cgMJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCEiBpcyBhbHJlYWR5IHN0YWtlZAMJAQlpc0RlZmluZWQBCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAAIBCQCsAgICHVlvdSBhbHJlYWR5IHN0YWtlZCBvbmUgZHVjazogCAUFYXNzZXQEbmFtZQQGbG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgQIbG9jYXRpb24JAKIIAQUGbG9jS2V5BAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQUKYXNzZXRJZFN0cgQIYmFja3BhY2sJAKIIAQUFYnBLZXkECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQphc3NldElkU3RyBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFCmFzc2V0SWRTdHIAAAQJY3VySGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFAJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKRFVDS1BSRUZJWAkA2AQBBQdhc3NldElkBQdhZGRyZXNzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIFB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwUKYXNzZXRJZFN0cgUDbmlsAwkBCWlzRGVmaW5lZAEFCGxvY2F0aW9uBQNuaWwJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZsb2NLZXkFD0RFRkFVTFRMT0NBVElPTgUDbmlsAwkBCWlzRGVmaW5lZAEFCGJhY2twYWNrBQNuaWwJAM4IAgkAzQgCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5AhowOjBfMF8wXzBfMF8wOjBfMF8wXzBfMF8wOgUDbmlsCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQljdXJIZWFsdGgFDXByb2xvZ0FjdGlvbnMBaQELdW5zdGFrZUR1Y2sBCmFzc2V0SWRTdHIEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEB2Fzc2V0SWQJANkEAQUKYXNzZXRJZFN0cgQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUKYXNzZXRJZFN0cgMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQDCQEBIQEJAQlpc0RlZmluZWQBCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAAIBCQCsAgIJAKwCAgIJVGhlIGR1Y2sgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleUR1Y2tJZFRvT3duZXIBBQphc3NldElkU3RyCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQdhZGRyZXNzCQACAQIXU3Rha2VkIE5GVCBpcyBub3QgeW91cnMDCQEPY2hlY2tUb3VybmFtZW50AQUKYXNzZXRJZFN0cgkAAgECG3Vuc3Rha2VEdWNrX2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQUKYXNzZXRJZFN0cgkAAgECGXVuc3Rha2VEdWNrX2NoZWNrRGVsaXZlcnkECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQphc3NldElkU3RyBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFCmFzc2V0SWRTdHIAAAQGaGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBmAgUFbWF4SFAFBmhlYWx0aAkAAgEJAKwCAgkArAICAhlQbGVhc2UgaGVhbCB5b3VyIGR1Y2sgdG8gCQCkAwEFBW1heEhQAhNocCBiZWZvcmUgdW5zdGFraW5nCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEFB2Fzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQUHdGltZUtleQkAzAgCCQELRGVsZXRlRW50cnkBBQlrZXlIZWFsdGgJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBD2tleUR1Y2tMb2NhdGlvbgEFCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEGtleUR1Y2tJZFRvT3duZXIBBQphc3NldElkU3RyCQDMCAIJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKRFVDS1BSRUZJWAUKYXNzZXRJZFN0cgUHYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzBQNuaWwFDXByb2xvZ0FjdGlvbnMBaQEIY2xhaW1SZXMCBmFtb3VudA5sYW5kQXNzZXRJZFN0cgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBnJlc3VsdAkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQZhbW91bnQFDWNsYWltTW9kZUR1Y2sFDmxhbmRBc3NldElkU3RyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQJAJQKAgkAzggCCQDNCAIJAM0IAgkAzggCCAUGcmVzdWx0Al8xCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQJAGsDBQd4cENsYWltBQZhbW91bnQFBU1VTFQ4Al8xCQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al8yCQC5CQIIBQZyZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzQJALkJAggFBnJlc3VsdAJfNQIBOgUNcHJvbG9nQWN0aW9ucwkAkQMCCAUGcmVzdWx0Al8zBQhicElkeFJlcwFpAQxjbGFpbVJlc1RvV0gCBmFtb3VudA5sYW5kQXNzZXRJZFN0cgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBnJlc3VsdAkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQZhbW91bnQFC2NsYWltTW9kZVdoBQ5sYW5kQXNzZXRJZFN0cgkAlAoCCQDOCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIJAGsDBQd4cENsYWltBQZhbW91bnQFBU1VTFQ4Al8xCQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al8yCQC5CQIIBQZyZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzQJALkJAggFBnJlc3VsdAJfNQIBOgUNcHJvbG9nQWN0aW9ucwkAkQMCCAUGcmVzdWx0Al81BQh3aElkeFJlcwFpAQZmbGlnaHQCB21lc3NhZ2UDc2lnBA1wcm9sb2dBY3Rpb25zCQEMcHJvbG9nRmxpZ2h0AQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAh1c2VyQWRkcgkApQgBCAUBaQZjYWxsZXIEAWYJAQxmbGlnaHRDb21tb24DBQh1c2VyQWRkcgUHbWVzc2FnZQUDc2lnBAVuZXdIUAgFAWYCXzEEC2R1Y2tBc3NldElkCAUBZgJfMgQGbG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFBmxvY0tleQUPREVGQVVMVExPQ0FUSU9OBAtuZXdMb2NhdGlvbggFAWYCXzQDCQAAAgULbmV3TG9jYXRpb24FC2N1ckxvY2F0aW9uCQACAQIiWW91IGNhbid0IGZseSB0byB0aGUgc2FtZSBsb2NhdGlvbgQGbmV3TG9jCQC1CQIFC25ld0xvY2F0aW9uAgFfBAZpc1RvdXIJAAACCQCRAwIFBm5ld0xvYwUKbG9jSWR4VHlwZQIBVAQHaXNEZWxpdgkAAAIJAJEDAgUGbmV3TG9jBQpsb2NJZHhUeXBlAgFEBAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQJY3VycmVudEVxCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAQNJHQwNzAyMDQ3MDMwMQkBEXN1YnRyYWN0RXF1aXBtZW50AgUJY3VycmVudEVxCAUBZgJfNQQFbmV3RXEIBQ0kdDA3MDIwNDcwMzAxAl8xBA9zaG91bGRaZXJvQnVmZnMIBQ0kdDA3MDIwNDcwMzAxAl8yBA0kdDA3MDMwNDczMzU3AwkBDG5vdE9uTWlzc2lvbgIFEnRvdXJuYW1lbnRDb250cmFjdAULY3VyTG9jYXRpb24DCQEBIQEJAQ9pc1VzdWFsTG9jYXRpb24BBQtuZXdMb2NhdGlvbgkBDGNoZWF0QXR0ZW1wdAMFC2N1ckxvY2F0aW9uBQtuZXdMb2NhdGlvbgAFAwkAZgIFBW5ld0hQAAAJAJQKAgULbmV3TG9jYXRpb24FBW5ld0hQCQCUCgIFC2N1ckxvY2F0aW9uAAADCQEOaXNJblRvdXJuYW1lbnQCBRJ0b3VybmFtZW50Q29udHJhY3QFC2N1ckxvY2F0aW9uAwkBASEBCQEOaXNJblRvdXJuYW1lbnQCBRJ0b3VybmFtZW50Q29udHJhY3QFC25ld0xvY2F0aW9uCQACAQIqWW91ciBkdWNrIGlzIHRha2luZyBwYXJ0IGluIHRoZSB0b3VybmFtZW50BAVzY29yZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBm5ld0xvYwUIbG9jSWR4SWQEBmN1ckxvYwkAtQkCBQtjdXJMb2NhdGlvbgIBXwQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAUNbGFzdFRvdXJJZEtleQAAAwkBAiE9AgUFc2NvcmUJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGY3VyTG9jBQhsb2NJZHhJZAABCQEMY2hlYXRBdHRlbXB0AwULY3VyTG9jYXRpb24FC25ld0xvY2F0aW9uAAcDCQBmAgUFbmV3SFAAAAQJbG9jYWxCZXN0CQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAkBGmtleUJlc3RSZXN1bHRCeVRvdXJBbmREdWNrAgUGbGFzdElkBQtkdWNrQXNzZXRJZAAABAh1cGRMb2NhbAMJAGYCBQVzY29yZQUJbG9jYWxCZXN0CQD8BwQFEnRvdXJuYW1lbnRDb250cmFjdAIOc2F2ZUR1Y2tSZXN1bHQJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUFc2NvcmUFA25pbAUDbmlsBQR1bml0AwkAAAIFCHVwZExvY2FsBQh1cGRMb2NhbAkAlAoCBQtuZXdMb2NhdGlvbgUFbmV3SFAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJQKAgULY3VyTG9jYXRpb24AAAMJAQEhAQkBDGlzSW5EZWxpdmVyeQEFC2N1ckxvY2F0aW9uBAlsb2NIZWFsdGgJARBhc1N0cmluZ0ludFR1cGxlAQkA/AcEBQR0aGlzAhBhdXRvRXhpdERlbGl2ZXJ5CQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAMJAAACBQlsb2NIZWFsdGgFCWxvY0hlYWx0aAMFB2lzRGVsaXYFCWxvY0hlYWx0aAMJAGYCBQVuZXdIUAAACQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAkAlAoCCAUJbG9jSGVhbHRoAl8xAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQEBIQEFB2lzRGVsaXYJAAIBAiRZb3VyIGR1Y2sgaXMgdGFraW5nIHBhcnQgaW4gZGVsaXZlcnkDCQEBIQEJAQxpc0luRGVsaXZlcnkBBQtuZXdMb2NhdGlvbgkBDGNoZWF0QXR0ZW1wdAMFC2N1ckxvY2F0aW9uBQtuZXdMb2NhdGlvbgANBAVzY29yZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBm5ld0xvYwUIbG9jSWR4SWQEBmN1ckxvYwkAtQkCBQtjdXJMb2NhdGlvbgIBXwMJAQIhPQIFBXNjb3JlCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBmN1ckxvYwUIbG9jSWR4SWQAAQkBDGNoZWF0QXR0ZW1wdAMFC2N1ckxvY2F0aW9uBQtuZXdMb2NhdGlvbgAOAwMJAGYCBQVuZXdIUAAACQBmAgADBQVzY29yZQcJAJQKAgULbmV3TG9jYXRpb24FBW5ld0hQBAlsb2NIZWFsdGgJARBhc1N0cmluZ0ludFR1cGxlAQkA/AcEBQR0aGlzAhBhdXRvRXhpdERlbGl2ZXJ5CQDMCAIFC2R1Y2tBc3NldElkBQNuaWwFA25pbAMJAAACBQlsb2NIZWFsdGgFCWxvY0hlYWx0aAUJbG9jSGVhbHRoCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAlsb2NUb1NhdmUIBQ0kdDA3MDMwNDczMzU3Al8xBAhocFRvU2F2ZQgFDSR0MDcwMzA0NzMzNTcCXzIJAJQKAgkAzggCCQDOCAIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZsb2NLZXkFCWxvY1RvU2F2ZQkAzAgCCQELU3RyaW5nRW50cnkCBQVlcUtleQUFbmV3RXEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFBW5ld0hQBQNuaWwFDXByb2xvZ0FjdGlvbnMDBQ9zaG91bGRaZXJvQnVmZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzAFA25pbAUDbmlsCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQDCQBmAgUFbmV3SFAAAAUPeHBTdWNjZXNzRmxpZ2h0BQx4cEZhaWxGbGlnaHQCXzEIBQFmAl8zAWkBBGhlYWwDCnF1YW50aXR5TDEKcXVhbnRpdHlMMgpxdWFudGl0eUwzBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMDAwkAZgIAAAUKcXVhbnRpdHlMMQYJAGYCAAAFCnF1YW50aXR5TDIGCQBmAgAABQpxdWFudGl0eUwzCQACAQIbUXVhbnRpdHkgY2Fubm90IGJlIG5lZ2F0aXZlBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIUaGVhbF9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQISaGVhbF9jaGVja0RlbGl2ZXJ5BANxdHMJAMwIAgUKcXVhbnRpdHlMMQkAzAgCBQpxdWFudGl0eUwyCQDMCAIFCnF1YW50aXR5TDMFA25pbAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAECW9sZEhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkAZwIFCW9sZEhlYWx0aAUFbWF4SFAJAAIBCQCsAgIJAKwCAgIPSFAgc2hvdWxkIGJlIDwgCQCkAwEFBW1heEhQAgggdG8gaGVhbAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkECHByb2RMaXN0AwkAAAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgFfCgELaXRlcmF0ZVByb2QCA2FjYwZyZWNpcGUEAW4IBQNhY2MCXzIEAXgDCQBmAgkAkAMBBQhwcm9kTGlzdAUBbgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0BQFuAAADCQBmAgADBQFuBAFxCQCRAwIFA3F0cwUBbgMJAGYCBQFxBQF4CQACAQkArAICCQCsAgIJAKwCAgIOWW91IGhhdmUgb25seSAJAKQDAQUBeAIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFAW4JAJUKAwkAzQgCCAUDYWNjAl8xCQCkAwEJAGUCBQF4BQFxCQBkAgUBbgABCQBkAggFA2FjYwJfMwkAaAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIFBnJlY2lwZQIBXwUKcklkeEVmZmVjdAUBcQkAlQoDCQDNCAIIBQNhY2MCXzEJAKQDAQUBeAkAZAIFAW4AAQgFA2FjYwJfMwQGcmVzdWx0CgACJGwFEHByb2R1Y3Rpb25NYXRyaXgKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCVCgMFA25pbAAAAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBC2l0ZXJhdGVQcm9kAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA1MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIECW5ld0hlYWx0aAkAlwMBCQDMCAIFBW1heEhQCQDMCAIJAGQCBQlvbGRIZWFsdGgIBQZyZXN1bHQCXzMFA25pbAkAlAoCCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQluZXdIZWFsdGgJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALoJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0CQDMCAIJALkJAggFBnJlc3VsdAJfMQIBXwUDbmlsAgE6BQNuaWwFDXByb2xvZ0FjdGlvbnMICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAaAIFBnhwSGVhbAkAZAIJAGQCBQpxdWFudGl0eUwxBQpxdWFudGl0eUwyBQpxdWFudGl0eUwzAl8xBQluZXdIZWFsdGgBaQEGaGVhbEVTAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFmhlYWxFU19jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIUaGVhbEVTX2NoZWNrRGVsaXZlcnkECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAlvbGRIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGYCBQlvbGRIZWFsdGgAAAkAAgECKEhQIHNob3VsZCBiZSAwIHRvIGNhbGwgRW1lcmdlbmN5IFNlcnZpY2UEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwQNbWVkS2l0QW1vdW50MQMJAGYCCQCQAwEFCHByb2RMaXN0AAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAAAAAAEDW1lZEtpdEFtb3VudDIDCQBmAgkAkAMBBQhwcm9kTGlzdAABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAQAABA1tZWRLaXRBbW91bnQzAwkAZgIJAJADAQUIcHJvZExpc3QAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAIAAAMDAwkAZgIFDW1lZEtpdEFtb3VudDEAAAYJAGYCBQ1tZWRLaXRBbW91bnQyAAAGCQBmAgUNbWVkS2l0QW1vdW50MwAACQACAQIfWW91IGhhdmUgdG8gdXNlIG93biBNZWRpY2FsIEtpdAQIZXhpc3RTdHIJAJ0IAgUPZWNvbm9teUNvbnRyYWN0CQEOa2V5RXNXYXJlaG91c2UABAxleGlzdEFtb3VudHMDCQEJaXNEZWZpbmVkAQUIZXhpc3RTdHIJALwJAgkBBXZhbHVlAQUIZXhpc3RTdHICAV8FA25pbAQLZXhpc3RBbW91bnQDCQBmAgkAkAMBBQxleGlzdEFtb3VudHMAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGV4aXN0QW1vdW50cwAAAAADCQBnAgAABQtleGlzdEFtb3VudAkAAgECOVRoZXJlIGFyZSBubyBNZWRpY2FsIEtpdHMgTDEgYXQgRW1lcmdlbmN5IFNlcnZpY2Ugc3RvcmFnZQQJbmV3SGVhbHRoCQBkAgUJb2xkSGVhbHRoCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgAAAIBXwUKcklkeEVmZmVjdAQFbmV3RVMJALkJAgkAzAgCCQCkAwEJAGUCBQtleGlzdEFtb3VudAABCQDRCAIFDGV4aXN0QW1vdW50cwAAAgFfBAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4AAACAV8ECHRvdGFsTWF0CQESZ2V0UmVjaXBlTWF0ZXJpYWxzAQUGcmVjaXBlBAlzZWxsUHJpY2UJAGsDCQBoAgUIdG90YWxNYXQFCkVTU0VMTENPRUYFEFJFU09VUkNFUFJJQ0VNSU4JAGgCBQVNVUxUOAUOUFJPRFVDVFBLR1NJWkUDCQECIT0CCAUDcG10BmFtb3VudAUJc2VsbFByaWNlCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUJc2VsbFByaWNlBAZyZXN1bHQJAQhhc1N0cmluZwEJAPwHBAUPZWNvbm9teUNvbnRyYWN0Ag91cGRhdGVFc1N0b3JhZ2UJAMwIAgUFbmV3RVMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgULdXNkdEFzc2V0SWQFCXNlbGxQcmljZQUDbmlsCQCUCgIJAM4IAgkAzQgCBQ1wcm9sb2dBY3Rpb25zCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQluZXdIZWFsdGgICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUIeHBDYWxsRVMCXzEFBnJlc3VsdAFpAQ51cGRhdGVCYWNrcGFjawILZHVja0Fzc2V0SWQHbmV3UGFjawMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQIRcGVybWlzc2lvbiBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAUHbmV3UGFjawUDbmlsBQduZXdQYWNrAWkBD2NvbW1pdEZvclJhbmRvbQAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpBAtmaW5pc2hCbG9jawkAZAIFBmhlaWdodAULcmFuZG9tRGVsYXkEBGFkZHIJAKUIAQgFAWkGY2FsbGVyCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCWtleUNvbW1pdAEFBGFkZHIFC2ZpbmlzaEJsb2NrBQNuaWwFDXByb2xvZ0FjdGlvbnMFC2ZpbmlzaEJsb2NrAWkBCGJ1eVNMYW5kAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQMJAQIhPQIIBQNwbXQGYW1vdW50BQdFWFBVU0RUCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUHRVhQVVNEVAQGcmVzdWx0CQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAthY3Jlc1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ1hY3Jlc0NvbnRyYWN0AglidXJuQWNyZXMJAMwIAgUMU19DT1NUX0FDUkVTBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAgkAzQgCCAUGcmVzdWx0Al8xCQEOU2NyaXB0VHJhbnNmZXIDBQ9lY29ub215Q29udHJhY3QIBQNwbXQGYW1vdW50BQt1c2R0QXNzZXRJZAgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgkApQgBCAUBaQZjYWxsZXIFCnhwTmV3U0xhbmQCXzEFDXByb2xvZ0FjdGlvbnMJAJQKAggIBQZyZXN1bHQCXzICXzEFC2FjcmVzUmVzdWx0AWkBCmV4cGVkaXRpb24CB21lc3NhZ2UDc2lnBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAh1c2VyQWRkcgkApQgBCAUBaQZjYWxsZXIEAWYJAQxmbGlnaHRDb21tb24DBQh1c2VyQWRkcgUHbWVzc2FnZQUDc2lnBAtkdWNrQXNzZXRJZAgFAWYCXzIECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW1MaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwYFBW1MaXN0BQxFWFBNQVRFUklBTFMCAV8EBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAljdXJyZW50RXEJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssBA0kdDA4MDc5NDgwODkxCQERc3VidHJhY3RFcXVpcG1lbnQCBQljdXJyZW50RXEIBQFmAl81BAVuZXdFcQgFDSR0MDgwNzk0ODA4OTECXzEED3Nob3VsZFplcm9CdWZmcwgFDSR0MDgwNzk0ODA4OTECXzIEAWUJARJleHBlZGl0aW9uSW50ZXJuYWwCCAUBaQZjYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQEAmlkCAgFAWUCXzICXzEEBnJlc3VsdAMJAGcCAAAIBQFmAl8xCQCVCgMJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAAACQDMCAIJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQVuZXdFcQUDbmlsAgAAAAkAlQoDCQDOCAIIBQFlAl8xAwUPc2hvdWxkWmVyb0J1ZmZzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wBQNuaWwJAM0IAgkAzQgCCQDNCAIJAM0IAgUDbmlsCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQJALkJAgkAzAgCCAgFAWUCXzICXzIJAMwIAgIBTAkAzAgCBQJpZAUDbmlsAgFfCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoCAUBZgJfMQkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxCQELU3RyaW5nRW50cnkCBQVicEtleQkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6BQJpZAgFAWYCXzMDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhpleHBlZGl0aW9uX2NoZWNrVG91cm5hbWVudAMJAQ1jaGVja0RlbGl2ZXJ5AQULZHVja0Fzc2V0SWQJAAIBAhhleHBlZGl0aW9uX2NoZWNrRGVsaXZlcnkEC2FjcmVzUmVzdWx0CQEFYXNJbnQBCQD8BwQFDWFjcmVzQ29udHJhY3QCCWJ1cm5BY3JlcwkAzAgCBQxTX0NPU1RfQUNSRVMFA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCCAUGcmVzdWx0Al8xCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFCnhwTmV3U0xhbmQCXzEFDXByb2xvZ0FjdGlvbnMJAJUKAwgFBnJlc3VsdAJfMggFBnJlc3VsdAJfMwULYWNyZXNSZXN1bHQBaQEQYnV5U0xhbmRGb3JBY3JlcwAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEA2FtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQxhY3Jlc0Fzc2V0SWQJAAIBAhRBQ1JFUyBwYXltZW50cyBvbmx5IQMJAQIhPQIFA2FtdAUMU19DT1NUX0FDUkVTCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUMU19DT1NUX0FDUkVTBAZyZXN1bHQJARJleHBlZGl0aW9uSW50ZXJuYWwCCAUBaQZjYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQEC2FjcmVzUmVzdWx0CQEFYXNJbnQBCQD8BwQFDWFjcmVzQ29udHJhY3QCCWJ1cm5BY3JlcwkAzAgCBQxTX0NPU1RfQUNSRVMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUMYWNyZXNBc3NldElkBQNhbXQFA25pbAkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgkApQgBCAUBaQZjYWxsZXIFCnhwTmV3U0xhbmQCXzEFDXByb2xvZ0FjdGlvbnMJAJQKAggIBQZyZXN1bHQCXzICXzEFC2FjcmVzUmVzdWx0AWkBDHVwZ3JhZGVJbmZyYQELbGFuZEFzc2V0SWQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBnJlc3VsdAkBDXVwSW5mcmFDb21tb24EBggFAWkGY2FsbGVyAAAFC2xhbmRBc3NldElkBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkCQCUCgIJAM4IAgkAzggCCAUGcmVzdWx0Al8xBQ1wcm9sb2dBY3Rpb25zCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQJAGsDBQ54cFVwZ3JhZGVJbmZyYQgFBnJlc3VsdAJfMwUFTVVMVDgCXzEIBQZyZXN1bHQCXzIBaQEQYWN0aXZhdGVBcnRpZmFjdAIHYXJ0TmFtZQ5sYW5kQXNzZXRJZE9wdAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQZjYWxsZXIEBnJlc3VsdAQHJG1hdGNoMAUHYXJ0TmFtZQMJAAACAgdQUkVTQUxFBQckbWF0Y2gwCQESYWN0aXZhdGVQcmVzYWxlQXJ0AgUEYWRkcgUObGFuZEFzc2V0SWRPcHQDCQAAAgIHT05CT0FSRAUHJG1hdGNoMAkBEmFjdGl2YXRlT25ib2FyZEFydAEFBGFkZHIJAAIBAhBVbmtub3duIGFydGlmYWN0CQDOCAIFBnJlc3VsdAUNcHJvbG9nQWN0aW9ucwFpAQptZXJnZUxhbmRzAQxsYW5kQXNzZXRJZHMEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBnJlc3VsdAkBC21lcmdlQ29tbW9uAgkApQgBCAUBaQZjYWxsZXIFDGxhbmRBc3NldElkcwkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQUNcHJvbG9nQWN0aW9ucwgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgkApQgBCAUBaQZjYWxsZXIFB3hwTWVyZ2UCXzEIBQZyZXN1bHQCXzIBaQENY2FyZ29FeGNoYW5nZQIMY2FyZ29MaXN0U3RyC2xhbmRBc3NldElkBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBApjYXJnb1BhcnRzCQC8CQIFDGNhcmdvTGlzdFN0cgIBOgQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OBANsb2MJALUJAgkBBXZhbHVlAQULY3VyTG9jYXRpb24CAV8DCQECIT0CCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBTAkAAgEJAKwCAgkArAICAhZEdWNrIGxvY2F0aW9uIHR5cGUgaXMgCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIRLCBidXQgc2hvdWxkIGJlIEwDCQECIT0CCQCRAwIFA2xvYwUIbG9jSWR4SWQFC2xhbmRBc3NldElkCQACAQkArAICAhtEdWNrIHNob3VsZCBiZSBvbiB0aGUgbGFuZCAFC2xhbmRBc3NldElkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAljdXJyZW50V2gJAQxnZXRXYXJlaG91c2UDBQV3aEtleQUJbGFuZEluZGV4BQppbmZyYUxldmVsBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQGcmVzdWx0CQEJbW92ZVN0dWZmAwUKY2FyZ29QYXJ0cwUJY3VycmVudFdoBQtjdXJyZW50UGFjawQEbG9mdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBAVsb2Z0TwkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAgFBnJlc3VsdAJfNwQFbG9mdEYJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQgFBnJlc3VsdAJfNwkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCAUGcmVzdWx0Al80CQDMCAIIBQZyZXN1bHQCXzUJAMwIAggFBnJlc3VsdAJfNgUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5CQC6CQIJAMwIAgkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzCQDMCAIIBQZyZXN1bHQCXzEJAMwIAggFBnJlc3VsdAJfMgkAzAgCCAUGcmVzdWx0Al8zCQDMCAIJALkJAgkAzAgCCQCRAwIFBGxvZnQFCXZvbExvY2tlZAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkAkQMCBQRsb2Z0BQh2b2xUb3RhbAUDbmlsAgFfBQNuaWwCAToFA25pbAUNcHJvbG9nQWN0aW9ucwFpAQ1zYXZlV2FyZWhvdXNlAgV3aFN0cgtsYW5kQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAQCd2gJALwJAgUFd2hTdHICAToDCQECIT0CCQCQAwEFAndoAAUJAAIBAjB3YXJlaG91c2Ugc3RyaW5nIHNob3VsZCBjb250YWluIDQgJzonIHNlcGFyYXRvcnMEBWxvZnRMCQCRAwIJALUJAgkAkQMCBQJ3aAUJd2hJZHhMT0ZUAgFfBQl2b2xMb2NrZWQEBWxvZnRPCQEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBBQJ3aAQFbG9mdFQJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUCd2gFC3doSWR4TGV2ZWxzBAVsb2Z0RgkAZQIJAGUCBQVsb2Z0VAkBDXBhcnNlSW50VmFsdWUBBQVsb2Z0TAUFbG9mdE8ECG5ld1doU3RyCQC6CQIJAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgkAkQMCBQJ3aAUId2hJZHhSZXMJAMwIAgkAkQMCBQJ3aAUId2hJZHhNYXQJAMwIAgkAkQMCBQJ3aAUJd2hJZHhQcm9kCQDMCAIJALkJAgkAzAgCBQVsb2Z0TAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkApAMBBQVsb2Z0VAUDbmlsAgFfBQNuaWwCAToJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQV3aEtleQUIbmV3V2hTdHIFA25pbAUIbmV3V2hTdHIBaQESZml4V2FyZWhvdXNlRm9ybWF0AQtsYW5kQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUMcmVzdENvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplBQVTU0laRQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAEAndoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQFbG9mdEwJAQVhc0ludAEJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhpyZWNhbGNMb2NrZWRWb2x1bWVSRUFET05MWQkAzAgCBQtsYW5kQXNzZXRJZAkAzAgCBQJ3aAUDbmlsBQNuaWwEBWxvZnRPCQEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBBQJ3aAQFbG9mdFQJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUCd2gFC3doSWR4TGV2ZWxzBAVsb2Z0RgkAZQIJAGUCBQVsb2Z0VAUFbG9mdEwFBWxvZnRPBAhuZXdXaFN0cgkAugkCCQDMCAIJAJEDAgUCd2gFC3doSWR4TGV2ZWxzCQDMCAIJAJEDAgUCd2gFCHdoSWR4UmVzCQDMCAIJAJEDAgUCd2gFCHdoSWR4TWF0CQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCCQC5CQIJAMwIAgkApAMBBQVsb2Z0TAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkApAMBBQVsb2Z0VAUDbmlsAgFfBQNuaWwCAToJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQV3aEtleQUIbmV3V2hTdHIFA25pbAUIbmV3V2hTdHIBaQEXZml4Q29udGluZW50UHJvcG9ydGlvbnMBDGxhbmRBc3NldElkcwMJAQIhPQIIBQFpBmNhbGxlcgUMcmVzdENvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAoBCGdldFByb3BzAgNhY2MEY29udAkAzQgCBQNhY2MJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBBQRjb250AgswXzBfMF8wXzBfMAQBcAoAAiRsBQpjb250aW5lbnRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhnZXRQcm9wcwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUKAQlwcm9jZXNzb3ICA2FjYwtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8ECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBQVTU0laRQQEY29udAkAkQMCBQFkBQxyZWNDb250aW5lbnQEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQMY29udGluZW50SWR4CQEFdmFsdWUBCQDPCAIFCmNvbnRpbmVudHMFBGNvbnQECWNvbnRQcm9wcwkAtQkCCQCRAwIFA2FjYwUMY29udGluZW50SWR4AgFfBAd1cGRhdGVkCQC5CQIJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAUJY29udFByb3BzBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQIBXwQHJG1hdGNoMAUEY29udAMJAAACAghBbWVyaWNhcwUHJG1h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VABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBAghBbWVyaWNhcwkAkQMCBQFyAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBAgZFdXJvcGUJAJEDAgUBcgABCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIEQXNpYQkAkQMCBQFyAAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBAgZBZnJpY2EJAJEDAgUBcgADCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQIHT2NlYW5pYQkAkQMCBQFyAAQFA25pbAAAAWkBD2ZpeFN0YWtlZFBpZWNlcwEHYWRkcmVzcwMJAQIhPQIIBQFpBmNhbGxlcgUMcmVzdENvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAQMc3Rha2VkUGllY2VzAwkAAAIFB2FkZHJlc3MCAAAABAhsYW5kc1N0cgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQdhZGRyZXNzBAVsYW5kcwMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwUDbmlsCgEHb25lTGFuZAIDYWNjC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAhsYW5kU2l6ZQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUJAGQCBQNhY2MJAQ9udW1QaWVjZXNCeVNpemUBBQhsYW5kU2l6ZQoAAiRsBQVsYW5kcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHb25lTGFuZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIVTGlzdCBzaXplIGV4Y2VlZHMgMTAwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQdhZGRyZXNzBQxzdGFrZWRQaWVjZXMFA25pbAUMc3Rha2VkUGllY2VzAWkBDXNldEN1c3RvbU5hbWUDB2Fzc2V0SWQKY3VzdG9tTmFtZQR0eXBlBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhAwkBAiE9AggFA3BtdAZhbW91bnQFDFJFTkFNSU5HQ09TVAkAAgEJAKwCAgISUGF5bWVudCBzaG91bGQgYmUgCQCkAwEFDFJFTkFNSU5HQ09TVAMJAQhjb250YWlucwIFCmN1c3RvbU5hbWUCAl9fCQACAQkArAICAh5OYW1lIHNob3VsZCBub3QgY29udGFpbiAnX18nOiAFCmN1c3RvbU5hbWUDCQBmAgkAsQIBBQpjdXN0b21OYW1lBQpNQVhOQU1FTEVOCQACAQkArAICAhlOYW1lIHRvbyBsb25nLCBtYXhMZW5ndGg9CQCkAwEFCk1BWE5BTUVMRU4EBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAdhY3Rpb25zBAckbWF0Y2gwBQR0eXBlAwkAAAICB0FDQ09VTlQFByRtYXRjaDAECnJldmVyc2VLZXkJARZrZXlDdXN0b21OYW1lVG9BZGRyZXNzAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA1hZGRyVG9OYW1lS2V5CQEWa2V5QWRkcmVzc1RvQ3VzdG9tTmFtZQEFBGFkZHIEB29sZE5hbWUJAKIIAQUNYWRkclRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARZrZXlDdXN0b21OYW1lVG9BZGRyZXNzAQkBBXZhbHVlAQUHb2xkTmFtZQUDbmlsBQNuaWwJAM4IAgkAzQgCCQDNCAIFB2ZyZWVPbGQJAQtTdHJpbmdFbnRyeQIFDWFkZHJUb05hbWVLZXkFCmN1c3RvbU5hbWUJAQtTdHJpbmdFbnRyeQIFCnJldmVyc2VLZXkFBGFkZHIICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFDHhwQ3VzdG9tTmFtZQJfMQMJAAACAgRMQU5EBQckbWF0Y2gwBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUHYXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQdhc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBApyZXZlcnNlS2V5CQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lBAluYW1lT3duZXIJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQluYW1lT3duZXIJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUEDmFzc2V0VG9OYW1lS2V5CQEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBBQdhc3NldElkBAdvbGROYW1lCQCiCAEFDmFzc2V0VG9OYW1lS2V5BAdmcmVlT2xkAwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQkBBXZhbHVlAQUHb2xkTmFtZQUDbmlsBQNuaWwJAM4IAgkAzQgCCQDNCAIFB2ZyZWVPbGQJAQtTdHJpbmdFbnRyeQIFDmFzc2V0VG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQdhc3NldElkCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQx4cEN1c3RvbU5hbWUCXzEDCQAAAgIERFVDSwUHJG1hdGNoMAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFB2Fzc2V0SWQDAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5BgkBASEBCQEJaXNEZWZpbmVkAQkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyCQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleUR1Y2tJZFRvT3duZXIBBQdhc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpEVUNLUFJFRklYAg0gaXMgbm90IHlvdXJzBApyZXZlcnNlS2V5CQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lBAluYW1lT3duZXIJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQluYW1lT3duZXIJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUEDmFzc2V0VG9OYW1lS2V5CQEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBBQdhc3NldElkBAdvbGROYW1lCQCiCAEFDmFzc2V0VG9OYW1lS2V5BAdmcmVlT2xkAwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleUR1Y2tDdXN0b21OYW1lVG9Bc3NldElkAQkBBXZhbHVlAQUHb2xkTmFtZQUDbmlsBQNuaWwJAM4IAgkAzQgCCQDNCAIFB2ZyZWVPbGQJAQtTdHJpbmdFbnRyeQIFDmFzc2V0VG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQdhc3NldElkCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgUHYXNzZXRJZAUMeHBDdXN0b21OYW1lAl8xCQACAQITVW5rbm93biBlbnRpdHkgdHlwZQkAlAoCCQDOCAIJAM0IAgUHYWN0aW9ucwkBDlNjcmlwdFRyYW5zZmVyAwUPZWNvbm9teUNvbnRyYWN0CAUDcG10BmFtb3VudAULdXNkdEFzc2V0SWQFDXByb2xvZ0FjdGlvbnMAAAFpAQxzZXRSZWZlcnJhbHMCCW9sZFBsYXllcgluZXdQbGF5ZXIDCQECIT0CCAUBaQ9jYWxsZXJQdWJsaWNLZXkFA3B1YgkAAgECEVBlcm1pc3Npb24gZGVuaWVkBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkAwkBASEBCQEJaXNEZWZpbmVkAQkApggBBQlvbGRQbGF5ZXIJAAIBCQCsAgICEUludmFsaWQgYWRkcmVzczogBQlvbGRQbGF5ZXIDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFCW5ld1BsYXllcgkAAgEJAKwCAgIRSW52YWxpZCBhZGRyZXNzOiAFCW5ld1BsYXllcgQHb2xkc0tleQkBCWtleU9sZGllcwAEBG9sZHMJAKIIAQUHb2xkc0tleQQGb2xkaWVzAwkBCWlzRGVmaW5lZAEFBG9sZHMJALwJAgkBBXZhbHVlAQUEb2xkcwIBXwUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFBm9sZGllcwUJbmV3UGxheWVyCQACAQkArAICBQluZXdQbGF5ZXICJiBpcyBub3QgbmV3YmllIChhbHJlYWR5IGhhcyByZWZlcnJhbHMpBAhyZWZCeUtleQkBD2tleUFkZHJlc3NSZWZCeQEFCW5ld1BsYXllcgQFcmVmQnkJAKIIAQUIcmVmQnlLZXkDAwkBCWlzRGVmaW5lZAEFBXJlZkJ5CQEJaXNEZWZpbmVkAQkApggBCQEFdmFsdWUBBQVyZWZCeQcJAAIBCQCsAgIJAKwCAgUJbmV3UGxheWVyAhQgYWxyZWFkeSBoYXMgcmVmQnk6IAkBBXZhbHVlAQUFcmVmQnkEB3JlZnNLZXkJARNrZXlBZGRyZXNzUmVmZXJyYWxzAQUJb2xkUGxheWVyBARyZWZzCQCiCAEFB3JlZnNLZXkECXJlZnNBcnJheQMJAQlpc0RlZmluZWQBBQRyZWZzCQC8CQIJAQV2YWx1ZQEFBHJlZnMCAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQlyZWZzQXJyYXkFCW5ld1BsYXllcgkAAgEJAKwCAgkArAICCQCsAgIFCW9sZFBsYXllcgISIGFscmVhZHkgY29udGFpbnMgBQluZXdQbGF5ZXICESB3aXRoaW4gcmVmZXJyYWxzBAduZXdSZWZzCQC6CQIJAM0IAgUJcmVmc0FycmF5BQluZXdQbGF5ZXICAV8EB25ld09sZHMDCQEPY29udGFpbnNFbGVtZW50AgUGb2xkaWVzBQlvbGRQbGF5ZXIJAQV2YWx1ZQEFBG9sZHMJALoJAgkAzQgCBQZvbGRpZXMFCW9sZFBsYXllcgIBXwkAlAoCCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUIcmVmQnlLZXkFCW9sZFBsYXllcgkAzAgCCQELU3RyaW5nRW50cnkCBQdyZWZzS2V5BQduZXdSZWZzCQDMCAIJAQtTdHJpbmdFbnRyeQIFB29sZHNLZXkFB25ld09sZHMFA25pbAUNcHJvbG9nQWN0aW9ucwAAAWkBEGRpc3RyaWJ1dGVQb2ludHMFCHN0cmVuZ3RoCGFjY3VyYWN5CWludGVsbGVjdAllbmR1cmFuY2UJZGV4dGVyaXR5BA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQLdmlydFdsZ0RhdGEJAQlhc0FueUxpc3QBCQD8BwQFC3dsZ0NvbnRyYWN0AhJjaGVja1dsZ1hwUkVBRE9OTFkJAMwIAgUEYWRkcgUDbmlsBQNuaWwEDXZpcnRXbGdQb2ludHMJAQVhc0ludAEJAJEDAgULdmlydFdsZ0RhdGEAAQQNJHQwOTYyNzY5NjY2NgMJAGcCAAAFDXZpcnRXbGdQb2ludHMJAJQKAgAABQNuaWwEB2RlbHRhWFAJAQVhc0ludAEJAPwHBAULd2xnQ29udHJhY3QCCXRha2VXbGdYcAkAzAgCBQRhZGRyBQNuaWwFA25pbAMJAAACBQdkZWx0YVhQBQdkZWx0YVhQCQCUCgIFDXZpcnRXbGdQb2ludHMJAMwIAgkBDEludGVnZXJFbnRyeQIJAQxrZXlVc2VyTGV2ZWwBBQRhZGRyCQEFYXNJbnQBCQCRAwIFC3ZpcnRXbGdEYXRhAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQlrZXlVc2VyWFABBQRhZGRyCQEFYXNJbnQBCQCRAwIFC3ZpcnRXbGdEYXRhAAIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQJd2xnUG9pbnRzCAUNJHQwOTYyNzY5NjY2NgJfMQQKd2xnQWN0aW9ucwgFDSR0MDk2Mjc2OTY2NjYCXzIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQKZnJlZUtleUFjYwkBEWtleVVzZXJGcmVlUG9pbnRzAQUEYWRkcgQNZnJlZVBvaW50c0FjYwkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUKZnJlZUtleUFjYwAABQl3bGdQb2ludHMEC2ZyZWVLZXlEdWNrCQERa2V5RHVja0ZyZWVQb2ludHMBBQtkdWNrQXNzZXRJZAQOZnJlZVBvaW50c0R1Y2sJAQt2YWx1ZU9yRWxzZQIJAJ8IAQULZnJlZUtleUR1Y2sAAAQHc3VtRnJlZQkAZAIFDWZyZWVQb2ludHNBY2MFDmZyZWVQb2ludHNEdWNrBA9zdW1Ub0Rpc3RyaWJ1dGUJAGQCCQBkAgkAZAIJAGQCBQhzdHJlbmd0aAUIYWNjdXJhY3kFCWludGVsbGVjdAUJZW5kdXJhbmNlBQlkZXh0ZXJpdHkDCQBmAgUPc3VtVG9EaXN0cmlidXRlBQdzdW1GcmVlCQACAQkArAICCQCsAgICD1RoZXJlIGFyZSBvbmx5IAkApAMBBQdzdW1GcmVlAhogZnJlZSBwb2ludHMgdG8gZGlzdHJpYnV0ZQQIY2hhcnNLZXkJAQxrZXlEdWNrQ2hhcnMBBQtkdWNrQXNzZXRJZAQFY2hhcnMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQhjaGFyc0tleQIJMF8wXzBfMF8wAgFfBAZuZXdBY2MJAGUCBQ1mcmVlUG9pbnRzQWNjBQ9zdW1Ub0Rpc3RyaWJ1dGUJAJQKAgkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCmZyZWVLZXlBY2MDCQBmAgAABQZuZXdBY2MAAAUGbmV3QWNjCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQtmcmVlS2V5RHVjawMJAGYCAAAFBm5ld0FjYwkAZAIFDmZyZWVQb2ludHNEdWNrBQZuZXdBY2MFDmZyZWVQb2ludHNEdWNrCQDMCAIJAQtTdHJpbmdFbnRyeQIFCGNoYXJzS2V5CQC5CQIJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyU3RyZW5ndGgFCHN0cmVuZ3RoCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhckFjY3VyYWN5BQhhY2N1cmFjeQkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJJbnRlbGxlY3QFCWludGVsbGVjdAkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJFbmR1cmFuY2UFCWVuZHVyYW5jZQkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJEZXh0ZXJpdHkFCWRleHRlcml0eQUDbmlsAgFfBQNuaWwFDXByb2xvZ0FjdGlvbnMFCndsZ0FjdGlvbnMAAAFpARxzcGxpdEJ5R2xvYmFsV2VpZ2h0c1JFQURPTkxZAQZhbW91bnQJAJQKAgUDbmlsCQESZ2V0TmVlZGVkTWF0ZXJpYWxzAQUGYW1vdW50AWkBJHNwbGl0QnlHbG9iYWxBbmRMb2NhbFdlaWdodHNSRUFET05MWQMJbWF0QW1vdW50CXJlc0Ftb3VudAh0ZXJyYWlucwQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBBQh0ZXJyYWlucwkAlAoCBQNuaWwJAJQKAgkBEmdldE5lZWRlZE1hdGVyaWFscwEFCW1hdEFtb3VudAkBE2Rpc3RyaWJ1dGVCeVdlaWdodHMCBQlyZXNBbW91bnQFDXRlcnJhaW5Db3VudHMBaQETZ2V0QmFja3BhY2tSRUFET05MWQELZHVja0Fzc2V0SWQJAJQKAgUDbmlsCQC5CQIJAQtnZXRCYWNrcGFjawEJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkAgE6AWkBFGdldFdhcmVob3VzZVJFQURPTkxZAQtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplBQVTU0laRQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAJAJQKAgUDbmlsCQC6CQIJAQxnZXRXYXJlaG91c2UDCQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAIBOgFpAQpzYXZlTGFzdFR4AAMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUPZWNvbm9teUNvbnRyYWN0CQDMCAIFEnRvdXJuYW1lbnRDb250cmFjdAkAzAgCBQ1hY3Jlc0NvbnRyYWN0BQNuaWwIBQFpBmNhbGxlcgkAAgECDUFjY2VzcyBkZW5pZWQJAJQKAgkBBnByb2xvZwEFAWkAKgFpAQ91cGRhdGVEdWNrU3RhdHMCC2R1Y2tBc3NldElkB2RlbHRhWFADCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQdkZWx0YVhQAWkBDnVwZGF0ZUFjY1N0YXRzAgRhZGRyB2RlbHRhWFADCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFD2Vjb25vbXlDb250cmFjdAkAzAgCBQ1hY3Jlc0NvbnRyYWN0BQNuaWwIBQFpBmNhbGxlcgkAAgECDUFjY2VzcyBkZW5pZWQJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgUHZGVsdGFYUAFpAQllcXVpcER1Y2sBCWVxdWlwbWVudAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECGWVxdWlwRHVja19jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIXZXF1aXBEdWNrX2NoZWNrRGVsaXZlcnkEBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAtjdXJyZW50U2VncwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAIBXwQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW5ld0VxCQC1CQIFCWVxdWlwbWVudAIBXwMJAQIhPQIJAJADAQUFbmV3RXEFC05VTVNFR01FTlRTCQACAQIWV3JvbmcgZXF1aXBtZW50IHN0cmluZwQJdGVtcFByb2RCCQEGZHJlc3NCBAULY3VycmVudFNlZ3MJAQ5wcm9kU3RyVG9CeXRlcwEJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAYFA25pbAQIc2VnQnBBdXgJAJEDAgkAtQkCCQCRAwIFBW5ld0VxBQtzZWdCYWNrcGFjawIBOwABBApidWZmRWZmZWN0AwkAAAIFCHNlZ0JwQXV4AgAAAAQEYXV4MAkAkQMCCQC1CQIFCHNlZ0JwQXV4AgEsAAADCQAAAgUEYXV4MAIAAAAEBmlkeENudAkAtQkCBQRhdXgwAgE6BANpZHgJAJEDAgUGaWR4Q250AAAEA2NudAkAkQMCBQZpZHhDbnQAAQMDAwMDCQAAAgUDaWR4AgIwNgYJAAACBQNpZHgCAjA3BgkAAAIFA2lkeAICMDgJAQIhPQIFA2NudAIABwkAZgIJAQ1wYXJzZUludFZhbHVlAQUDY250AAAHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgJAQ1wYXJzZUludFZhbHVlAQUDaWR4AgFfBQpySWR4RWZmZWN0AAAEBXN0YXRzCQEMZ2V0RHVja1N0YXRzBAUEdGhpcwULZHVja0Fzc2V0SWQFCmJ1ZmZFZmZlY3QGBAhuZXdQcm9kQgkBBmRyZXNzQgQFBW5ld0VxBQl0ZW1wUHJvZEIHBQVzdGF0cwQKbmV3UHJvZFN0cgkBDmJ5dGVzVG9Qcm9kU3RyAQUIbmV3UHJvZEIJAJQKAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQllcXVpcG1lbnQJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALoJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0CQDMCAIFCm5ld1Byb2RTdHIFA25pbAIBOgkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQJALkJAgkAzAgCCQCkAwEJAJEDAgUFc3RhdHMABwkAzAgCCQCkAwEJAJEDAgUFc3RhdHMACAkAzAgCCQCkAwEJAJEDAgUFc3RhdHMACQkAzAgCCQCkAwEJAJEDAgUFc3RhdHMACgkAzAgCCQCkAwEJAJEDAgUFc3RhdHMACwUDbmlsAgFfBQNuaWwFDXByb2xvZ0FjdGlvbnMAAAFpAQ9mb3J0aWZpY2F0ZUxhbmQCC2xhbmRBc3NldElkBHBsYW4EDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAtkdWNrQXNzZXRJZAkBC3ZhbHVlT3JFbHNlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAgAECWR1Y2tTdGF0cwkBDGdldER1Y2tTdGF0cwQFBHRoaXMFC2R1Y2tBc3NldElkAAAHBAdmb3J0S2V5CQEXa2V5Rm9ydGlmaWNhdGlvbnNCeUxhbmQBBQtsYW5kQXNzZXRJZAQMY3VycmVudEZvcnRzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUHZm9ydEtleQIMOjBfMTU6MF8xODowAgFfBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAQCd2gJAQxnZXRXYXJlaG91c2UDBQV3aEtleQUJbGFuZEluZGV4BQppbmZyYUxldmVsBAdjdXJMb2Z0CQC1CQIJAJEDAgUCd2gFCXdoSWR4TE9GVAIBXwQEY3VyTwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB2N1ckxvZnQFC3ZvbE9jY3VwaWVkBARjdXJGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHY3VyTG9mdAUHdm9sRnJlZQQIbmV3Rm9ydHMJALUJAgUEcGxhbgIBXwQPJHQwMTAzNTA0MTAzNjE5CQEFZm9ydEIGBQxjdXJyZW50Rm9ydHMJAQ5wcm9kU3RyVG9CeXRlcwEJAJEDAgUCd2gFCXdoSWR4UHJvZAUEY3VyTwUEY3VyRgYFA25pbAQJdGVtcFByb2RCCAUPJHQwMTAzNTA0MTAzNjE5Al8xBAV0ZW1wTwgFDyR0MDEwMzUwNDEwMzYxOQJfMgQFdGVtcEYIBQ8kdDAxMDM1MDQxMDM2MTkCXzMEDyR0MDEwMzYyMjEwMzcxOAkBBWZvcnRCBgUIbmV3Rm9ydHMFCXRlbXBQcm9kQgUFdGVtcE8FBXRlbXBGBwUJZHVja1N0YXRzBAhuZXdQcm9kQggFDyR0MDEwMzYyMjEwMzcxOAJfMQQEbmV3TwgFDyR0MDEwMzYyMjEwMzcxOAJfMgQEbmV3RggFDyR0MDEwMzYyMjEwMzcxOAJfMwQKbmV3UHJvZFN0cgkBDmJ5dGVzVG9Qcm9kU3RyAQUIbmV3UHJvZEIECm5ld0xvZnRTdHIJALkJAgkAzAgCCQCRAwIFB2N1ckxvZnQFCXZvbExvY2tlZAkAzAgCCQCkAwEFBG5ld08JAMwIAgkApAMBBQRuZXdGCQDMCAIJAJEDAgUHY3VyTG9mdAUIdm9sVG90YWwFA25pbAIBXwkAlAoCCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUHZm9ydEtleQUEcGxhbgkAzAgCCQELU3RyaW5nRW50cnkCBQV3aEtleQkAugkCCQDMCAIJAJEDAgUCd2gFC3doSWR4TGV2ZWxzCQDMCAIJAJEDAgUCd2gFCHdoSWR4UmVzCQDMCAIJAJEDAgUCd2gFCHdoSWR4TWF0CQDMCAIFCm5ld1Byb2RTdHIJAMwIAgUKbmV3TG9mdFN0cgUDbmlsAgE6BQNuaWwFDXByb2xvZ0FjdGlvbnMAAAFpARNpbml0RHVja1RvdXJBdHRlbXB0AQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUSdG91cm5hbWVudENvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAECWN1ckhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQBAljdXJMb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VyTG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQMdG91ckxvY2F0aW9uCQCsAgIJAKQDAQUGbGFzdElkAgRfVF8wCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBQljdXJIZWFsdGgJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUFbWF4SFAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAULY3VyTG9jYXRpb24JAMwIAgkBC1N0cmluZ0VudHJ5AgUJY3VyTG9jS2V5BQx0b3VyTG9jYXRpb24FA25pbAUMdG91ckxvY2F0aW9uAWkBDGJyZWFrQXR0ZW1wdAAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAljdXJMb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VyTG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04DCQECIT0CCQCRAwIJALUJAgULY3VyTG9jYXRpb24CAV8FCmxvY0lkeFR5cGUCAVQJAAIBAiJZb3VyIGR1Y2sgaXMgbm90IGluIHRoZSB0b3VybmFtZW50BAtzYXZlZEhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQEDXNhdmVkTG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQJAJQKAgkAzQgCCQDNCAIFDXByb2xvZ0FjdGlvbnMJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQtzYXZlZEhlYWx0aAkBC1N0cmluZ0VudHJ5AgUJY3VyTG9jS2V5BQ1zYXZlZExvY2F0aW9uBQtjdXJMb2NhdGlvbgFpARZleGl0VG91cm5hbWVudEludGVybmFsAQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDUFjY2VzcyBkZW5pZWQEC3NhdmVkSGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAQNc2F2ZWRMb2NhdGlvbgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQtzYXZlZEhlYWx0aAkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFDXNhdmVkTG9jYXRpb24FA25pbAcBaQEUZXhpdERlbGl2ZXJ5SW50ZXJuYWwBC2R1Y2tBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQINQWNjZXNzIGRlbmllZAQBZQkBEmV4aXREZWxpdmVyeUNvbW1vbgEFC2R1Y2tBc3NldElkCQCUCgIJAM4IAggFAWUCXzEIBQFlAl8yBwFpARBhdXRvRXhpdERlbGl2ZXJ5AQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDUFjY2VzcyBkZW5pZWQEAWUJARJleGl0RGVsaXZlcnlDb21tb24BBQtkdWNrQXNzZXRJZAkAlAoCCAUBZQJfMQkAlAoCCAUBZQJfMwgFAWUCXzQBaQEOcHJlcGFyZVJvYmJlcnkCB21lc3NhZ2UDc2lnBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAZ3bGdBbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUKd2xnQXNzZXRJZAkAAgECFVdMR09MRCBwYXltZW50cyBvbmx5IQQFcGFydHMJALUJAgkAsAkBBQdtZXNzYWdlAgF8AwkBAiE9AgkAkAMBBQVwYXJ0cwACCQACAQIUV3JvbmcgbWVzc2FnZSBmb3JtYXQEC2R1Y2tBc3NldElkCQCRAwIFBXBhcnRzAAADCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAh5wcmVwYXJlUm9iYmVyeV9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIccHJlcGFyZVJvYmJlcnlfY2hlY2tEZWxpdmVyeQQHcm9iQ29zdAgJAQ5nZXRSb2JiZXJ5RGF0YQIFBHRoaXMFC2R1Y2tBc3NldElkAl8xAwkAZgIFB3JvYkNvc3QFBndsZ0FtdAkAAgEJAKwCAgkArAICCQCsAgICCFBheW1lbnQgCQCkAwEFBndsZ0FtdAIMIDwgcmVxdWlyZWQgCQCkAwEFB3JvYkNvc3QECmNhbmRpZGF0ZXMJALUJAgkAkQMCBQVwYXJ0cwABAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlkdWNrU3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBBQtkdWNrQXNzZXRJZAAABApsb2NrZWRMYW5kCQELdmFsdWVPckVsc2UCCQCiCAEJARNrZXlMb2NrZWRMYW5kQnlEdWNrAQULZHVja0Fzc2V0SWQCAAQHbGFuZEVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TGFuZENvb2xkb3duRVRBAQUKbG9ja2VkTGFuZAAAAwMJAQIhPQIFCWR1Y2tTdGF0ZQULZHVja0lkeEZyZWUJAGYCBQdsYW5kRVRBBQNub3cHCQACAQkArAICAidZb3UgYWxyZWFkeSBzdGFydGVkIHJvYmJpbmcsIHdhaXQgdGlsbCAJAKQDAQUHbGFuZEVUQQoBB2NoZWNrZXICA2FjYwtsYW5kQXNzZXRJZAQFc3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleUxhbmRSb2JiZXJ5U3RhdGUBBQtsYW5kQXNzZXRJZAAABAtjb29sZG93bkVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TGFuZENvb2xkb3duRVRBAQULbGFuZEFzc2V0SWQAAAMJAGYCBQVzdGF0ZQkAkAMBBRBsYW5kUm9iQ29vbGRvd25zCQACAQINSW52YWxpZCBzdGF0ZQMJAGYCBQNub3cFC2Nvb2xkb3duRVRBBApzdGFrZWRUaW1lCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAMJAGcCAAAFCnN0YWtlZFRpbWUFA2FjYwQBYQkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAFkCQC1CQIIBQFhC2Rlc2NyaXB0aW9uAgFfBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAxwcm9kdWN0aXZpdHkJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBAlkZWx0YVRpbWUJAGUCBQNub3cFCnN0YWtlZFRpbWUECGF2YWlsUmVzCQBrAwUJZGVsdGFUaW1lCQBoAgUMcHJvZHVjdGl2aXR5BQZwaWVjZXMFCURBWU1JTExJUwMJAGYCBQ5NSU5fUkVTX1RPX1JPQgUIYXZhaWxSZXMFA2FjYwkAzQgCBQNhY2MFC2xhbmRBc3NldElkBQNhY2MECGZpbHRlcmVkCgACJGwFCmNhbmRpZGF0ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2NoZWNrZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoDCQAAAgkAkAMBBQhmaWx0ZXJlZAAACQACAQIZTm8gY2FuZGlkYXRlcyBmb3Igcm9iYmVyeQQGcm5kSWR4CQEPZ2V0UmFuZG9tTnVtYmVyAwkAkAMBBQhmaWx0ZXJlZAUGaGVpZ2h0CQDLAQIFA3NpZwgFAWkNdHJhbnNhY3Rpb25JZAQLbGFuZEFzc2V0SWQJAJEDAgUIZmlsdGVyZWQFBnJuZElkeAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJARNrZXlMYW5kUm9iYmVyeVN0YXRlAQULbGFuZEFzc2V0SWQFDHJvYklkeExvY2tlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleUxhbmRDb29sZG93bkVUQQEFC2xhbmRBc3NldElkCQBkAgUDbm93CQCRAwIFEGxhbmRSb2JDb29sZG93bnMFDHJvYklkeExvY2tlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBBQtkdWNrQXNzZXRJZAUQZHVja0lkeFByZXBhcmluZwkAzAgCCQELU3RyaW5nRW50cnkCCQETa2V5TG9ja2VkTGFuZEJ5RHVjawEFC2R1Y2tBc3NldElkBQtsYW5kQXNzZXRJZAUDbmlsBQ1wcm9sb2dBY3Rpb25zBQtsYW5kQXNzZXRJZAFpAQdyb2JMYW5kAgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQEBIQEJAMQTAwUHbWVzc2FnZQUDc2lnBQNwdWIJAAIBAhhzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQh1c2VyQWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAlAoCCQDNCAIFDXByb2xvZ0FjdGlvbnMJAQxJbnRlZ2VyRW50cnkCCQEYa2V5TGFzdFJvYmJlcnlUaW1lQnlEdWNrAQULZHVja0Fzc2V0SWQFA25vdwAAAWkBDmFjY2VwdERlbGl2ZXJ5AAMJAQEhAQURS1NfQUxMT1dfREVMSVZFUlkJAAIBAh9EZWxpdmVyeSBmZWF0dXJlIGlzIHR1cm5lZCBvZmYhBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAlmdW5kVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BQ9kZWxpdmVyeUZ1bmRLZXkAAAQLbG9ja2VkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZWNvbm9teUNvbnRyYWN0BRFkZWxpdmVyeUxvY2tlZEtleQAAAwkAZgIFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQkAZQIFCWZ1bmRUb3RhbAULbG9ja2VkVG90YWwJAAIBCQCsAgIJAKwCAgkArAICAiBEZWxpdmVyeSBpcyBub3QgYXZhaWxhYmxlLCBmdW5kPQkBCmZpeGVkUG9pbnQCBQlmdW5kVG90YWwABgIJLCBsb2NrZWQ9CQEKZml4ZWRQb2ludAIFC2xvY2tlZFRvdGFsAAYEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECGRlbGF5RVRBCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlEZWxpdmVyeURlbGF5QnlEdWNrAQULZHVja0Fzc2V0SWQAAAMJAGYCBQhkZWxheUVUQQUDbm93CQACAQkArAICAipEZWxpdmVyeSBpcyBmb3JiaWRkZW4gZm9yIHlvdXIgZHVjayB1bnRpbCAJAKQDAQUIZGVsYXlFVEEDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAh5hY2NlcHREZWxpdmVyeV9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIcYWNjZXB0RGVsaXZlcnlfY2hlY2tEZWxpdmVyeQQObmV3TG9ja2VkVG90YWwJAQVhc0ludAEJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhR1cGRhdGVEZWxpdmVyeUxvY2tlZAkAzAgCCQBkAgULbG9ja2VkVG90YWwFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUDbmlsBQNuaWwECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OBBBkZWxpdmVyeUxvY2F0aW9uCQCsAgIJAKQDAQUDbm93AgRfRF8wCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQFCWN1ckhlYWx0aAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQVtYXhIUAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQtjdXJMb2NhdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCBQljdXJMb2NLZXkFEGRlbGl2ZXJ5TG9jYXRpb24FA25pbAUNcHJvbG9nQWN0aW9ucwkAlAoCBRBkZWxpdmVyeUxvY2F0aW9uBQ5uZXdMb2NrZWRUb3RhbAAtCYnp", "height": 2791239, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EcjTyiw2Xoru6qU2xVh7co2e5YwtAr2sXagZifxYY8qm Next: 2X3Etifu3P4bLPxK2bKFWqLs1UbDvqyrJGaApqAa1sZU Diff:
Old | New | Differences | |
---|---|---|---|
391 | 391 | func cn (co) = (parseIntValue(co[aT]) * aQ) | |
392 | 392 | ||
393 | 393 | ||
394 | - | func cp (cq,cr) = throw(((("Cheat attempt: oldLoc=" + cq) + ", newLoc=") + cr)) | |
395 | - | ||
396 | - | ||
397 | - | let cs = false | |
394 | + | func cp (cq,cr,cs) = throw(((((("Cheat attempt: oldLoc=" + cq) + ", newLoc=") + cr) + ", case=") + toString(cs))) | |
395 | + | ||
398 | 396 | ||
399 | 397 | let ct = false | |
400 | 398 | ||
401 | - | let cu = true | |
402 | - | ||
403 | - | let cv = take(drop(this.bytes, 1), 1) | |
404 | - | ||
405 | - | let cw = { | |
406 | - | let cx = cv | |
407 | - | if ((base58'2W' == cx)) | |
399 | + | let cu = false | |
400 | + | ||
401 | + | let cv = true | |
402 | + | ||
403 | + | let cw = take(drop(this.bytes, 1), 1) | |
404 | + | ||
405 | + | let cx = { | |
406 | + | let cy = cw | |
407 | + | if ((base58'2W' == cy)) | |
408 | 408 | then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
409 | - | else if ((base58'2T' == | |
409 | + | else if ((base58'2T' == cy)) | |
410 | 410 | then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63' | |
411 | 411 | else throw("Unknown chain") | |
412 | 412 | } | |
413 | 413 | ||
414 | - | let | |
415 | - | let | |
416 | - | if ((base58'2W' == | |
414 | + | let cz = { | |
415 | + | let cy = cw | |
416 | + | if ((base58'2W' == cy)) | |
417 | 417 | then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv" | |
418 | - | else if ((base58'2T' == | |
418 | + | else if ((base58'2T' == cy)) | |
419 | 419 | then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy" | |
420 | 420 | else throw("Unknown chain") | |
421 | 421 | } | |
422 | 422 | ||
423 | - | let | |
424 | - | let | |
425 | - | if ((base58'2W' == | |
423 | + | let cA = { | |
424 | + | let cy = cw | |
425 | + | if ((base58'2W' == cy)) | |
426 | 426 | then 10000000000 | |
427 | - | else if ((base58'2T' == | |
427 | + | else if ((base58'2T' == cy)) | |
428 | 428 | then 100000000 | |
429 | 429 | else throw("Unknown chain") | |
430 | 430 | } | |
431 | 431 | ||
432 | - | let | |
433 | - | let | |
434 | - | if ((base58'2W' == | |
432 | + | let cB = { | |
433 | + | let cy = cw | |
434 | + | if ((base58'2W' == cy)) | |
435 | 435 | then 86400000 | |
436 | - | else if ((base58'2T' == | |
436 | + | else if ((base58'2T' == cy)) | |
437 | 437 | then 60000 | |
438 | 438 | else throw("Unknown chain") | |
439 | 439 | } | |
440 | 440 | ||
441 | - | let | |
442 | - | ||
443 | - | let | |
444 | - | ||
445 | - | let | |
446 | - | ||
447 | - | let | |
448 | - | ||
449 | - | let | |
450 | - | ||
451 | - | let | |
452 | - | ||
453 | - | let | |
454 | - | ||
455 | - | let | |
456 | - | ||
457 | - | let | |
458 | - | ||
459 | - | func | |
460 | - | ||
461 | - | ||
462 | - | let | |
463 | - | ||
464 | - | let | |
465 | - | ||
466 | - | let | |
467 | - | ||
468 | - | let | |
469 | - | ||
470 | - | let | |
471 | - | ||
472 | - | let | |
473 | - | ||
474 | - | func | |
475 | - | ||
476 | - | ||
477 | - | func | |
478 | - | ||
479 | - | ||
480 | - | func | |
481 | - | ||
482 | - | ||
483 | - | func | |
484 | - | ||
485 | - | ||
486 | - | let | |
487 | - | ||
488 | - | let | |
489 | - | ||
490 | - | let an = | |
491 | - | ||
492 | - | let | |
493 | - | ||
494 | - | let | |
495 | - | ||
496 | - | let | |
497 | - | ||
498 | - | let | |
499 | - | ||
500 | - | let | |
501 | - | ||
502 | - | let | |
503 | - | ||
504 | - | let | |
505 | - | ||
506 | - | let | |
507 | - | ||
508 | - | let | |
509 | - | ||
510 | - | let | |
511 | - | ||
512 | - | let | |
513 | - | ||
514 | - | let | |
515 | - | ||
516 | - | let | |
517 | - | ||
518 | - | let | |
519 | - | ||
520 | - | func | |
521 | - | ||
522 | - | ||
523 | - | func | |
524 | - | ||
525 | - | ||
526 | - | func | |
527 | - | ||
528 | - | ||
529 | - | func | |
530 | - | ||
531 | - | ||
532 | - | func | |
533 | - | ||
534 | - | ||
535 | - | func | |
536 | - | let | |
537 | - | if ($isInstanceOf( | |
441 | + | let cC = "__" | |
442 | + | ||
443 | + | let cD = 1000000 | |
444 | + | ||
445 | + | let cE = 100000000 | |
446 | + | ||
447 | + | let cF = 25 | |
448 | + | ||
449 | + | let cG = 100 | |
450 | + | ||
451 | + | let cH = 225 | |
452 | + | ||
453 | + | let cI = 400 | |
454 | + | ||
455 | + | let cJ = 625 | |
456 | + | ||
457 | + | let cK = [0, 1, 2, 3, 4, 5] | |
458 | + | ||
459 | + | func cL (cM,cN) = valueOrErrorMessage(getString(cM, cN), makeString(["mandatory ", toString(cM), ".", cN, " is not defined"], "")) | |
460 | + | ||
461 | + | ||
462 | + | let cO = 1 | |
463 | + | ||
464 | + | let cP = 2 | |
465 | + | ||
466 | + | let cQ = 3 | |
467 | + | ||
468 | + | let cR = 4 | |
469 | + | ||
470 | + | let cS = 7 | |
471 | + | ||
472 | + | let cT = 8 | |
473 | + | ||
474 | + | func cU () = "%s__restConfig" | |
475 | + | ||
476 | + | ||
477 | + | func cV () = "%s__restAddr" | |
478 | + | ||
479 | + | ||
480 | + | func cW (cX) = split_4C(cL(cX, cU()), cC) | |
481 | + | ||
482 | + | ||
483 | + | func cY (cZ,da) = valueOrErrorMessage(addressFromString(cZ[da]), ("Rest cfg doesn't contain address at index " + toString(da))) | |
484 | + | ||
485 | + | ||
486 | + | let db = addressFromStringValue(valueOrElse(getString(this, cV()), cz)) | |
487 | + | ||
488 | + | let cZ = cW(db) | |
489 | + | ||
490 | + | let an = cY(cZ, cO) | |
491 | + | ||
492 | + | let dc = cY(cZ, cP) | |
493 | + | ||
494 | + | let dd = cY(cZ, cQ) | |
495 | + | ||
496 | + | let de = cY(cZ, cR) | |
497 | + | ||
498 | + | let df = cY(cZ, cS) | |
499 | + | ||
500 | + | let dg = cY(cZ, cT) | |
501 | + | ||
502 | + | let dh = 0 | |
503 | + | ||
504 | + | let di = 1 | |
505 | + | ||
506 | + | let dj = 2 | |
507 | + | ||
508 | + | let dk = 3 | |
509 | + | ||
510 | + | let dl = "wlg_assetId" | |
511 | + | ||
512 | + | let dm = valueOrErrorMessage(getBinary(de, dl), "WLGOLD is not issued yet") | |
513 | + | ||
514 | + | let dn = "acresAssetId" | |
515 | + | ||
516 | + | let do = valueOrErrorMessage(getBinary(dg, dn), "ACRES is not issued yet") | |
517 | + | ||
518 | + | let dp = 2 | |
519 | + | ||
520 | + | func dq (cM) = ("finishBlockForAddr_" + cM) | |
521 | + | ||
522 | + | ||
523 | + | func dr () = "resTypesProportions" | |
524 | + | ||
525 | + | ||
526 | + | func ds (dt) = ("resTypesByContinent_" + dt) | |
527 | + | ||
528 | + | ||
529 | + | func du (bw) = ("stakedLandsByOwner_" + bw) | |
530 | + | ||
531 | + | ||
532 | + | func dv (bw) = ("stakedPiecesByOwner_" + bw) | |
533 | + | ||
534 | + | ||
535 | + | func dw (dx) = { | |
536 | + | let cy = dx | |
537 | + | if ($isInstanceOf(cy, "String")) | |
538 | 538 | then { | |
539 | - | let | |
540 | - | | |
539 | + | let dy = cy | |
540 | + | dy | |
541 | 541 | } | |
542 | 542 | else throw("fail to cast into String") | |
543 | 543 | } | |
544 | 544 | ||
545 | 545 | ||
546 | - | func | |
547 | - | let | |
548 | - | if ($isInstanceOf( | |
546 | + | func dz (dx) = { | |
547 | + | let cy = dx | |
548 | + | if ($isInstanceOf(cy, "Int")) | |
549 | 549 | then { | |
550 | - | let | |
551 | - | | |
550 | + | let dA = cy | |
551 | + | dA | |
552 | 552 | } | |
553 | 553 | else throw("fail to cast into Int") | |
554 | 554 | } | |
555 | 555 | ||
556 | 556 | ||
557 | - | func | |
558 | - | let | |
559 | - | if ($isInstanceOf( | |
557 | + | func dB (dx) = { | |
558 | + | let cy = dx | |
559 | + | if ($isInstanceOf(cy, "List[Any]")) | |
560 | 560 | then { | |
561 | - | let | |
562 | - | | |
561 | + | let dC = cy | |
562 | + | dC | |
563 | 563 | } | |
564 | 564 | else throw("fail to cast into List[Any]") | |
565 | 565 | } | |
566 | 566 | ||
567 | 567 | ||
568 | - | func | |
569 | - | let | |
570 | - | if ($isInstanceOf( | |
568 | + | func dD (dx) = { | |
569 | + | let cy = dx | |
570 | + | if ($isInstanceOf(cy, "Boolean")) | |
571 | 571 | then { | |
572 | - | let | |
573 | - | | |
572 | + | let dy = cy | |
573 | + | dy | |
574 | 574 | } | |
575 | 575 | else throw("fail to cast into Boolean") | |
576 | 576 | } | |
577 | 577 | ||
578 | 578 | ||
579 | - | func | |
580 | - | let | |
581 | - | if ($isInstanceOf( | |
579 | + | func dE (dF) = { | |
580 | + | let cy = dF | |
581 | + | if ($isInstanceOf(cy, "(String, Int)")) | |
582 | 582 | then { | |
583 | - | let | |
584 | - | | |
583 | + | let dG = cy | |
584 | + | dG | |
585 | 585 | } | |
586 | 586 | else throw("fail to cast into (String, Int)") | |
587 | 587 | } | |
588 | 588 | ||
589 | 589 | ||
590 | - | func | |
591 | - | let | |
592 | - | if (("S" == | |
593 | - | then | |
594 | - | else if (("M" == | |
595 | - | then | |
596 | - | else if (("L" == | |
597 | - | then | |
598 | - | else if (("XL" == | |
599 | - | then | |
600 | - | else if (("XXL" == | |
601 | - | then | |
590 | + | func dH (dI) = { | |
591 | + | let cy = dI | |
592 | + | if (("S" == cy)) | |
593 | + | then cF | |
594 | + | else if (("M" == cy)) | |
595 | + | then cG | |
596 | + | else if (("L" == cy)) | |
597 | + | then cH | |
598 | + | else if (("XL" == cy)) | |
599 | + | then cI | |
600 | + | else if (("XXL" == cy)) | |
601 | + | then cJ | |
602 | 602 | else throw("Unknown land size") | |
603 | 603 | } | |
604 | 604 | ||
605 | 605 | ||
606 | - | func | |
607 | - | ||
608 | - | ||
609 | - | func | |
610 | - | ||
611 | - | ||
612 | - | func | |
613 | - | ||
614 | - | ||
615 | - | func | |
616 | - | let | |
617 | - | let | |
618 | - | let | |
619 | - | (((toString(( | |
620 | - | } | |
621 | - | ||
622 | - | ||
623 | - | func | |
624 | - | let | |
625 | - | let | |
626 | - | (toInt( | |
627 | - | } | |
628 | - | ||
629 | - | ||
630 | - | let | |
631 | - | let | |
632 | - | if ((base58'2W' == | |
606 | + | func dJ (dy) = isDefined(parseInt(dy)) | |
607 | + | ||
608 | + | ||
609 | + | func dK () = "contractsBlocked" | |
610 | + | ||
611 | + | ||
612 | + | func dL (c) = ("lastTxIdByUser_" + c) | |
613 | + | ||
614 | + | ||
615 | + | func dM (dF,dN) = { | |
616 | + | let dO = pow(10, 0, dN, 0, 0, DOWN) | |
617 | + | let dP = toString((dF % dO)) | |
618 | + | let dQ = drop(toString(dO), (1 + size(dP))) | |
619 | + | (((toString((dF / dO)) + ".") + dQ) + dP) | |
620 | + | } | |
621 | + | ||
622 | + | ||
623 | + | func dR (dS,dT,dU) = { | |
624 | + | let dV = value(blockInfoByHeight(dT)) | |
625 | + | let dW = sha256((value(dV.vrf) + dU)) | |
626 | + | (toInt(dW) % dS) | |
627 | + | } | |
628 | + | ||
629 | + | ||
630 | + | let dX = { | |
631 | + | let cy = cw | |
632 | + | if ((base58'2W' == cy)) | |
633 | 633 | then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv") | |
634 | - | else if ((base58'2T' == | |
634 | + | else if ((base58'2T' == cy)) | |
635 | 635 | then this | |
636 | 636 | else throw("Unknown chain") | |
637 | 637 | } | |
638 | 638 | ||
639 | - | let | |
640 | - | let | |
641 | - | if ((base58'2W' == | |
639 | + | let dY = { | |
640 | + | let cy = cw | |
641 | + | if ((base58'2W' == cy)) | |
642 | 642 | then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb") | |
643 | - | else if ((base58'2T' == | |
643 | + | else if ((base58'2T' == cy)) | |
644 | 644 | then this | |
645 | 645 | else throw("Unknown chain") | |
646 | 646 | } | |
647 | 647 | ||
648 | - | let | |
649 | - | let | |
650 | - | if ((base58'2W' == | |
651 | - | then if ( | |
648 | + | let dZ = { | |
649 | + | let cy = cw | |
650 | + | if ((base58'2W' == cy)) | |
651 | + | then if (ct) | |
652 | 652 | then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm' | |
653 | 653 | else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
654 | - | else if ((base58'2T' == | |
654 | + | else if ((base58'2T' == cy)) | |
655 | 655 | then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
656 | 656 | else throw("Unknown chain") | |
657 | 657 | } | |
658 | 658 | ||
659 | - | let | |
660 | - | ||
661 | - | let | |
662 | - | ||
663 | - | let | |
664 | - | ||
665 | - | let | |
666 | - | ||
667 | - | let | |
668 | - | ||
669 | - | let | |
670 | - | let | |
671 | - | if ((base58'2W' == | |
659 | + | let ea = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' | |
660 | + | ||
661 | + | let eb = 300000 | |
662 | + | ||
663 | + | let ec = 5000000 | |
664 | + | ||
665 | + | let ed = 50 | |
666 | + | ||
667 | + | let ee = 10000000 | |
668 | + | ||
669 | + | let ef = { | |
670 | + | let cy = cw | |
671 | + | if ((base58'2W' == cy)) | |
672 | 672 | then 252289527462 | |
673 | - | else if ((base58'2T' == | |
673 | + | else if ((base58'2T' == cy)) | |
674 | 674 | then 2522895274 | |
675 | 675 | else throw("Unknown chain") | |
676 | 676 | } | |
677 | 677 | ||
678 | - | let | |
679 | - | let | |
680 | - | if ((base58'2W' == | |
678 | + | let eg = { | |
679 | + | let cy = cw | |
680 | + | if ((base58'2W' == cy)) | |
681 | 681 | then 250000000 | |
682 | - | else if ((base58'2T' == | |
682 | + | else if ((base58'2T' == cy)) | |
683 | 683 | then 250000000 | |
684 | 684 | else throw("Unknown chain") | |
685 | 685 | } | |
686 | 686 | ||
687 | - | let | |
688 | - | ||
689 | - | let | |
690 | - | ||
691 | - | let | |
692 | - | ||
693 | - | let | |
694 | - | ||
695 | - | let | |
696 | - | ||
697 | - | let | |
698 | - | ||
699 | - | let | |
700 | - | ||
701 | - | let | |
702 | - | ||
703 | - | func | |
704 | - | ||
705 | - | ||
706 | - | func | |
707 | - | ||
708 | - | ||
709 | - | func | |
710 | - | ||
711 | - | ||
712 | - | func | |
713 | - | ||
714 | - | ||
715 | - | func | |
716 | - | ||
717 | - | ||
718 | - | func | |
719 | - | ||
720 | - | ||
721 | - | func | |
722 | - | ||
723 | - | ||
724 | - | func | |
725 | - | ||
726 | - | ||
727 | - | let | |
728 | - | ||
729 | - | let | |
730 | - | ||
731 | - | let | |
732 | - | ||
733 | - | let | |
734 | - | ||
735 | - | let | |
736 | - | ||
737 | - | let | |
738 | - | ||
739 | - | let | |
740 | - | ||
741 | - | func | |
742 | - | ||
743 | - | ||
744 | - | func | |
745 | - | let | |
746 | - | then ((( | |
747 | - | else -((((-( | |
748 | - | ( | |
749 | - | } | |
750 | - | ||
751 | - | ||
752 | - | func | |
753 | - | let | |
754 | - | if ((0 >= | |
687 | + | let eh = 2500000000 | |
688 | + | ||
689 | + | let ei = toBigInt(5) | |
690 | + | ||
691 | + | let ej = toBigInt(20) | |
692 | + | ||
693 | + | let ek = toBigInt((20 * 20)) | |
694 | + | ||
695 | + | let el = toBigInt(((20 * 20) * 20)) | |
696 | + | ||
697 | + | let em = toBigInt((((20 * 20) * 20) * 20)) | |
698 | + | ||
699 | + | let en = toBigInt(((((20 * 20) * 20) * 20) * 20)) | |
700 | + | ||
701 | + | let eo = 500 | |
702 | + | ||
703 | + | func ep () = "nextLandNum" | |
704 | + | ||
705 | + | ||
706 | + | func eq (er) = ("lcn_" + er) | |
707 | + | ||
708 | + | ||
709 | + | func es (et) = ("la_" + et) | |
710 | + | ||
711 | + | ||
712 | + | func eu (bp,bw) = ((("ilao_" + bp) + "_") + bw) | |
713 | + | ||
714 | + | ||
715 | + | func ev (et) = ("lo_" + et) | |
716 | + | ||
717 | + | ||
718 | + | func ew (er) = ("duckByCustomName_" + er) | |
719 | + | ||
720 | + | ||
721 | + | func ex (er) = ("accountByCustomName_" + er) | |
722 | + | ||
723 | + | ||
724 | + | func ey () = "oldiesList" | |
725 | + | ||
726 | + | ||
727 | + | let ez = 0 | |
728 | + | ||
729 | + | let eA = 1 | |
730 | + | ||
731 | + | let eB = 2 | |
732 | + | ||
733 | + | let eC = 0 | |
734 | + | ||
735 | + | let eD = 5 | |
736 | + | ||
737 | + | let eE = 6 | |
738 | + | ||
739 | + | let eF = 7 | |
740 | + | ||
741 | + | func eG (et,dI) = ((aC + et) + dI) | |
742 | + | ||
743 | + | ||
744 | + | func eH (eI,eJ) = { | |
745 | + | let eK = if ((eI >= 0)) | |
746 | + | then (((eI + eJ) - 1) / eJ) | |
747 | + | else -((((-(eI) + eJ) - 1) / eJ)) | |
748 | + | (eK * cE) | |
749 | + | } | |
750 | + | ||
751 | + | ||
752 | + | func eL (eM,eN) = { | |
753 | + | let eO = (((((eN[0] + eN[1]) + eN[2]) + eN[3]) + eN[4]) + eN[5]) | |
754 | + | if ((0 >= eO)) | |
755 | 755 | then throw("Zero weights sum") | |
756 | 756 | else { | |
757 | - | let | |
758 | - | func | |
759 | - | ||
760 | - | let | |
761 | - | let | |
762 | - | let | |
763 | - | func | |
764 | - | then | |
765 | - | else | |
766 | - | ||
767 | - | func | |
768 | - | then | |
757 | + | let eP = fraction(eM, cD, eO) | |
758 | + | func eQ (eR,eS) = (eR :+ fraction(eS, eP, cD)) | |
759 | + | ||
760 | + | let eT = eN | |
761 | + | let eU = size(eT) | |
762 | + | let eV = nil | |
763 | + | func eW (eX,eY) = if ((eY >= eU)) | |
764 | + | then eX | |
765 | + | else eQ(eX, eT[eY]) | |
766 | + | ||
767 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
768 | + | then eX | |
769 | 769 | else throw("List size exceeds 6") | |
770 | 770 | ||
771 | - | | |
772 | - | } | |
773 | - | } | |
774 | - | ||
775 | - | ||
776 | - | func | |
777 | - | let | |
778 | - | if ((size( | |
771 | + | eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6) | |
772 | + | } | |
773 | + | } | |
774 | + | ||
775 | + | ||
776 | + | func fa (eM) = { | |
777 | + | let fb = split(value(getString(dr())), "_") | |
778 | + | if ((size(fb) != aF)) | |
779 | 779 | then throw("Wrong proportions data") | |
780 | 780 | else { | |
781 | - | let | |
782 | - | | |
783 | - | } | |
784 | - | } | |
785 | - | ||
786 | - | ||
787 | - | func | |
788 | - | let | |
789 | - | func | |
790 | - | let | |
791 | - | if ((0 > | |
792 | - | then throw(((((("Not enough material idx=" + toString( | |
793 | - | else ( | |
781 | + | let fc = [parseIntValue(fb[0]), parseIntValue(fb[1]), parseIntValue(fb[2]), parseIntValue(fb[3]), parseIntValue(fb[4]), parseIntValue(fb[5])] | |
782 | + | eL(eM, fc) | |
783 | + | } | |
784 | + | } | |
785 | + | ||
786 | + | ||
787 | + | func fd (fe,ff,fg) = { | |
788 | + | let fh = fa(fg) | |
789 | + | func fi (eR,da) = { | |
790 | + | let fj = (parseIntValue(ff[da]) - fh[da]) | |
791 | + | if ((0 > fj)) | |
792 | + | then throw(((((("Not enough material idx=" + toString(da)) + ", you have ") + ff[da]) + ", but need ") + toString(fh[da]))) | |
793 | + | else (eR :+ toString(fj)) | |
794 | 794 | } | |
795 | 795 | ||
796 | - | if ( | |
796 | + | if (fe) | |
797 | 797 | then { | |
798 | - | let | |
799 | - | let | |
800 | - | let | |
801 | - | func | |
802 | - | then | |
803 | - | else | |
804 | - | ||
805 | - | func | |
806 | - | then | |
798 | + | let eT = cK | |
799 | + | let eU = size(eT) | |
800 | + | let eV = nil | |
801 | + | func eW (eX,eY) = if ((eY >= eU)) | |
802 | + | then eX | |
803 | + | else fi(eX, eT[eY]) | |
804 | + | ||
805 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
806 | + | then eX | |
807 | 807 | else throw("List size exceeds 6") | |
808 | 808 | ||
809 | - | | |
810 | - | } | |
811 | - | else | |
812 | - | } | |
813 | - | ||
814 | - | ||
815 | - | func | |
816 | - | then $Tuple2( | |
809 | + | eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6) | |
810 | + | } | |
811 | + | else ff | |
812 | + | } | |
813 | + | ||
814 | + | ||
815 | + | func fk (fl,fm) = if ((fm == "")) | |
816 | + | then $Tuple2(fl, false) | |
817 | 817 | else { | |
818 | - | func | |
819 | - | let | |
820 | - | if ((size( | |
818 | + | func fn (eR,fo) = { | |
819 | + | let fp = split(fo, ",") | |
820 | + | if ((size(fp) != 2)) | |
821 | 821 | then throw("Incorrect format, should be index,amount") | |
822 | 822 | else { | |
823 | - | let | |
824 | - | if (if ((0 > | |
823 | + | let da = parseIntValue(fp[0]) | |
824 | + | if (if ((0 > da)) | |
825 | 825 | then true | |
826 | - | else ( | |
826 | + | else (da >= size(aS))) | |
827 | 827 | then throw("Unknown product idx") | |
828 | 828 | else { | |
829 | - | let | |
830 | - | let | |
831 | - | if ((size( | |
832 | - | then throw((("You don't have " + aO[ | |
829 | + | let fq = parseIntValue(fp[1]) | |
830 | + | let fr = split(eR._1, (fp[0] + ":")) | |
831 | + | if ((size(fr) != 2)) | |
832 | + | then throw((("You don't have " + aO[da]) + " equipped")) | |
833 | 833 | else { | |
834 | - | let | |
835 | - | let | |
834 | + | let fs = fr[1] | |
835 | + | let ft = if (dJ(take(drop(fs, 1), 1))) | |
836 | 836 | then 2 | |
837 | 837 | else 1 | |
838 | - | let | |
839 | - | let | |
840 | - | let | |
841 | - | then ( | |
842 | - | else throw(((((("You equipped " + toString( | |
843 | - | $Tuple2((((( | |
838 | + | let fu = parseIntValue(take(fs, ft)) | |
839 | + | let fv = drop(fs, ft) | |
840 | + | let fw = if ((fu >= fq)) | |
841 | + | then (fu - fq) | |
842 | + | else throw(((((("You equipped " + toString(fu)) + " of ") + aO[da]) + ", but tried to use ") + toString(fq))) | |
843 | + | $Tuple2(((((fr[0] + fp[0]) + ":") + toString(fw)) + fv), if (eR._2) | |
844 | 844 | then true | |
845 | - | else if (if (( | |
846 | - | then (8 >= | |
845 | + | else if (if ((da >= 6)) | |
846 | + | then (8 >= da) | |
847 | 847 | else false) | |
848 | - | then ( | |
848 | + | then (fw == 0) | |
849 | 849 | else false) | |
850 | 850 | } | |
851 | 851 | } | |
852 | 852 | } | |
853 | 853 | } | |
854 | 854 | ||
855 | - | let | |
856 | - | let | |
857 | - | let | |
858 | - | func | |
859 | - | then | |
860 | - | else | |
861 | - | ||
862 | - | func | |
863 | - | then | |
855 | + | let eT = split(fm, "_") | |
856 | + | let eU = size(eT) | |
857 | + | let eV = $Tuple2(fl, false) | |
858 | + | func eW (eX,eY) = if ((eY >= eU)) | |
859 | + | then eX | |
860 | + | else fn(eX, eT[eY]) | |
861 | + | ||
862 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
863 | + | then eX | |
864 | 864 | else throw("List size exceeds 10") | |
865 | 865 | ||
866 | - | | |
866 | + | eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
867 | 867 | } | |
868 | 868 | ||
869 | 869 | ||
870 | - | func | |
871 | - | let | |
870 | + | func fx (fy) = { | |
871 | + | let fz = if ((fy == "")) | |
872 | 872 | then nil | |
873 | - | else split_4C( | |
874 | - | func | |
875 | - | let | |
876 | - | let | |
877 | - | then parseIntValue( | |
873 | + | else split_4C(fy, "_") | |
874 | + | func fA (eR,co) = { | |
875 | + | let fB = (size(eR) / 8) | |
876 | + | let fu = if ((size(fz) > fB)) | |
877 | + | then parseIntValue(fz[fB]) | |
878 | 878 | else 0 | |
879 | - | ( | |
879 | + | (eR + toBytes(fu)) | |
880 | 880 | } | |
881 | 881 | ||
882 | - | let | |
883 | - | let | |
884 | - | let | |
885 | - | func | |
886 | - | then | |
887 | - | else | |
888 | - | ||
889 | - | func | |
890 | - | then | |
882 | + | let eT = aS | |
883 | + | let eU = size(eT) | |
884 | + | let eV = base58'' | |
885 | + | func eW (eX,eY) = if ((eY >= eU)) | |
886 | + | then eX | |
887 | + | else fA(eX, eT[eY]) | |
888 | + | ||
889 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
890 | + | then eX | |
891 | 891 | else throw("List size exceeds 50") | |
892 | 892 | ||
893 | - | | |
894 | - | } | |
895 | - | ||
896 | - | ||
897 | - | func | |
898 | - | func | |
899 | - | let | |
900 | - | let | |
901 | - | ( | |
893 | + | eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 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) | |
894 | + | } | |
895 | + | ||
896 | + | ||
897 | + | func fC (fD) = { | |
898 | + | func fE (eR,co) = { | |
899 | + | let fB = size(eR) | |
900 | + | let fF = take(drop(fD, (8 * fB)), 8) | |
901 | + | (eR :+ toString(toInt(fF))) | |
902 | 902 | } | |
903 | 903 | ||
904 | 904 | makeString_2C({ | |
905 | - | let | |
906 | - | let | |
907 | - | let | |
908 | - | func | |
909 | - | then | |
910 | - | else | |
911 | - | ||
912 | - | func | |
913 | - | then | |
905 | + | let eT = aS | |
906 | + | let eU = size(eT) | |
907 | + | let eV = nil | |
908 | + | func eW (eX,eY) = if ((eY >= eU)) | |
909 | + | then eX | |
910 | + | else fE(eX, eT[eY]) | |
911 | + | ||
912 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
913 | + | then eX | |
914 | 914 | else throw("List size exceeds 50") | |
915 | 915 | ||
916 | - | | |
916 | + | eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 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) | |
917 | 917 | }, "_") | |
918 | 918 | } | |
919 | 919 | ||
920 | 920 | ||
921 | - | func | |
922 | - | func | |
923 | - | let | |
924 | - | then | |
921 | + | func fG (fH,fI) = { | |
922 | + | func fJ (eR,fB) = { | |
923 | + | let fK = if ((size(fH) > (7 + fB))) | |
924 | + | then fH[(7 + fB)] | |
925 | 925 | else 0 | |
926 | - | if ((parseIntValue( | |
927 | - | then throw(("Requirement not satisfied: " + j[ | |
926 | + | if ((parseIntValue(fI[fB]) > (fH[fB] + fK))) | |
927 | + | then throw(("Requirement not satisfied: " + j[fB])) | |
928 | 928 | else true | |
929 | 929 | } | |
930 | 930 | ||
931 | - | let | |
932 | - | let | |
933 | - | let | |
934 | - | func | |
935 | - | then | |
936 | - | else | |
937 | - | ||
938 | - | func | |
939 | - | then | |
931 | + | let eT = [0, 1, 2, 3, 4, 5, 6] | |
932 | + | let eU = size(eT) | |
933 | + | let eV = false | |
934 | + | func eW (eX,eY) = if ((eY >= eU)) | |
935 | + | then eX | |
936 | + | else fJ(eX, eT[eY]) | |
937 | + | ||
938 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
939 | + | then eX | |
940 | 940 | else throw("List size exceeds 7") | |
941 | 941 | ||
942 | - | | |
943 | - | } | |
944 | - | ||
945 | - | ||
946 | - | func | |
947 | - | let | |
948 | - | if ((size( | |
942 | + | eZ(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7) | |
943 | + | } | |
944 | + | ||
945 | + | ||
946 | + | func fL (fM,fz,fN,fH,fO,fP) = { | |
947 | + | let fp = split(fM, ":") | |
948 | + | if ((size(fp) != 2)) | |
949 | 949 | then throw("Incorrect format, should be index:amount") | |
950 | - | else if (if (!( | |
951 | - | then (size( | |
950 | + | else if (if (!(fN)) | |
951 | + | then (size(fp[0]) != 2) | |
952 | 952 | else false) | |
953 | 953 | then throw("Product idx should be 2 digits, zero padded") | |
954 | 954 | else { | |
955 | - | let | |
956 | - | let | |
957 | - | if (!(containsElement(aR, | |
958 | - | then throw((("Product '" + aO[ | |
959 | - | else if ((0 > | |
955 | + | let fQ = parseIntValue(fp[0]) | |
956 | + | let fR = parseIntValue(fp[1]) | |
957 | + | if (!(containsElement(aR, fQ))) | |
958 | + | then throw((("Product '" + aO[fQ]) + "' cannot be used for land defense")) | |
959 | + | else if ((0 > fR)) | |
960 | 960 | then throw("Count can't be negative") | |
961 | - | else if (( | |
962 | - | then throw(((("Can't put more than " + toString(t)) + " of ") + aO[ | |
963 | - | else if (( | |
964 | - | then $Tuple3( | |
961 | + | else if ((fR > t)) | |
962 | + | then throw(((("Can't put more than " + toString(t)) + " of ") + aO[fQ])) | |
963 | + | else if ((fR == 0)) | |
964 | + | then $Tuple3(fz, fO, fP) | |
965 | 965 | else { | |
966 | - | let | |
967 | - | let | |
968 | - | let | |
969 | - | let co = split(aS[ | |
970 | - | if (if (!( | |
971 | - | then ( | |
966 | + | let fS = take(fz, (8 * fQ)) | |
967 | + | let fu = toInt(take(drop(fz, (8 * fQ)), 8)) | |
968 | + | let fv = drop(fz, (8 * (fQ + 1))) | |
969 | + | let co = split(aS[fQ], "_") | |
970 | + | if (if (!(fN)) | |
971 | + | then (fR > fu) | |
972 | 972 | else false) | |
973 | - | then throw(((((("You have " + toString( | |
973 | + | then throw(((((("You have " + toString(fu)) + " of ") + aO[fQ]) + ", but tried to use ") + toString(fR))) | |
974 | 974 | else { | |
975 | - | let | |
976 | - | then | |
975 | + | let fw = if (if (!(fN)) | |
976 | + | then fG(fH, split(co[aV], ",")) | |
977 | 977 | else false) | |
978 | - | then ( | |
979 | - | else ( | |
980 | - | let | |
981 | - | $Tuple3((( | |
978 | + | then (fu - fR) | |
979 | + | else (fu + fR) | |
980 | + | let fT = (eH(fw, aX) - eH(fu, aX)) | |
981 | + | $Tuple3(((fS + toBytes(fw)) + fv), (fO + fT), (fP - fT)) | |
982 | 982 | } | |
983 | 983 | } | |
984 | 984 | } | |
985 | 985 | } | |
986 | 986 | ||
987 | 987 | ||
988 | - | func | |
989 | - | let | |
990 | - | if ((size( | |
988 | + | func fU (fM,fz,fN,fV,fW,fX,fH) = { | |
989 | + | let fp = split(fM, ":") | |
990 | + | if ((size(fp) != 2)) | |
991 | 991 | then throw("Incorrect format, should be index:amount") | |
992 | - | else if (if (!( | |
993 | - | then (size( | |
992 | + | else if (if (!(fN)) | |
993 | + | then (size(fp[0]) != 2) | |
994 | 994 | else false) | |
995 | 995 | then throw("Product idx should be 2 digits, zero padded") | |
996 | 996 | else { | |
997 | - | let | |
998 | - | let | |
999 | - | if (if ((0 > | |
997 | + | let fQ = parseIntValue(fp[0]) | |
998 | + | let fR = parseIntValue(fp[1]) | |
999 | + | if (if ((0 > fQ)) | |
1000 | 1000 | then true | |
1001 | - | else ( | |
1001 | + | else (fQ >= size(aS))) | |
1002 | 1002 | then throw("Unknown product idx") | |
1003 | - | else if ((0 > | |
1003 | + | else if ((0 > fR)) | |
1004 | 1004 | then throw("Count can't be negative") | |
1005 | - | else if (( | |
1006 | - | then throw(((("Can't put more than " + toString(t)) + " of ") + aO[ | |
1007 | - | else if (( | |
1008 | - | then $Tuple2( | |
1005 | + | else if ((fR > t)) | |
1006 | + | then throw(((("Can't put more than " + toString(t)) + " of ") + aO[fQ])) | |
1007 | + | else if ((fR == 0)) | |
1008 | + | then $Tuple2(fz, false) | |
1009 | 1009 | else { | |
1010 | - | let | |
1011 | - | let | |
1012 | - | let | |
1013 | - | let co = split(aS[ | |
1014 | - | if (if (!( | |
1015 | - | then ( | |
1010 | + | let fS = take(fz, (8 * fQ)) | |
1011 | + | let fu = toInt(take(drop(fz, (8 * fQ)), 8)) | |
1012 | + | let fv = drop(fz, (8 * (fQ + 1))) | |
1013 | + | let co = split(aS[fQ], "_") | |
1014 | + | if (if (!(fN)) | |
1015 | + | then (fR > fu) | |
1016 | 1016 | else false) | |
1017 | - | then throw(((((("You have " + toString( | |
1017 | + | then throw(((((("You have " + toString(fu)) + " of ") + aO[fQ]) + ", but tried to use ") + toString(fR))) | |
1018 | 1018 | else { | |
1019 | - | let | |
1020 | - | then | |
1019 | + | let fY = if (if (!(fN)) | |
1020 | + | then fG(fH, split(co[aV], ",")) | |
1021 | 1021 | else false) | |
1022 | 1022 | then { | |
1023 | - | let | |
1024 | - | if (( | |
1023 | + | let fZ = co[aW] | |
1024 | + | if ((fZ == "")) | |
1025 | 1025 | then throw("Item cannot be equipped") | |
1026 | 1026 | else { | |
1027 | - | let | |
1028 | - | let | |
1029 | - | if (( | |
1027 | + | let ga = parseIntValue(fZ) | |
1028 | + | let gb = (ga / 100) | |
1029 | + | if ((fV != gb)) | |
1030 | 1030 | then throw("Segment incompatible") | |
1031 | 1031 | else { | |
1032 | - | let | |
1033 | - | if (( | |
1032 | + | let gc = ((ga % 100) / 10) | |
1033 | + | if ((fW != gc)) | |
1034 | 1034 | then throw("Slot incompatible") | |
1035 | 1035 | else { | |
1036 | - | let | |
1037 | - | if (if (( | |
1038 | - | then ( | |
1036 | + | let gd = (ga % 10) | |
1037 | + | if (if ((fX != 0)) | |
1038 | + | then (gd > 1) | |
1039 | 1039 | else false) | |
1040 | 1040 | then throw("Big items should occupy slot 0") | |
1041 | - | else ( | |
1041 | + | else (gd > 1) | |
1042 | 1042 | } | |
1043 | 1043 | } | |
1044 | 1044 | } | |
1045 | 1045 | } | |
1046 | 1046 | else false | |
1047 | - | $Tuple2((( | |
1048 | - | then | |
1049 | - | else -( | |
1047 | + | $Tuple2(((fS + toBytes((fu + (if (fN) | |
1048 | + | then fR | |
1049 | + | else -(fR))))) + fv), fY) | |
1050 | 1050 | } | |
1051 | 1051 | } | |
1052 | 1052 | } | |
1053 | 1053 | } | |
1054 | 1054 | ||
1055 | 1055 | ||
1056 | - | func | |
1056 | + | func ge (gf,gg,fN,fV,fW,gh) = if ((gf != "")) | |
1057 | 1057 | then { | |
1058 | - | let | |
1059 | - | if ((size( | |
1058 | + | let gi = split(gf, ",") | |
1059 | + | if ((size(gi) > s)) | |
1060 | 1060 | then throw("Wrong slots format") | |
1061 | 1061 | else { | |
1062 | - | let | |
1063 | - | let | |
1064 | - | then | |
1062 | + | let gj = gi[0] | |
1063 | + | let gk = if ((size(gi) > 1)) | |
1064 | + | then gi[1] | |
1065 | 1065 | else "" | |
1066 | - | if (if (( | |
1067 | - | then ( | |
1066 | + | if (if ((gj == "")) | |
1067 | + | then (gk == "") | |
1068 | 1068 | else false) | |
1069 | - | then | |
1069 | + | then gg | |
1070 | 1070 | else { | |
1071 | - | let | |
1072 | - | then | |
1073 | - | else $Tuple2( | |
1074 | - | if (( | |
1075 | - | then if ( | |
1071 | + | let gl = if ((gj != "")) | |
1072 | + | then fU(gj, gg, fN, fV, fW, 0, gh) | |
1073 | + | else $Tuple2(gg, false) | |
1074 | + | if ((gk != "")) | |
1075 | + | then if (gl._2) | |
1076 | 1076 | then throw("Big item already occupies slot") | |
1077 | - | else | |
1078 | - | else | |
1077 | + | else fU(gk, gl._1, fN, fV, fW, 1, gh)._1 | |
1078 | + | else gl._1 | |
1079 | 1079 | } | |
1080 | 1080 | } | |
1081 | 1081 | } | |
1082 | - | else | |
1083 | - | ||
1084 | - | ||
1085 | - | func | |
1086 | - | func | |
1087 | - | let | |
1088 | - | let | |
1089 | - | if ((size( | |
1082 | + | else gg | |
1083 | + | ||
1084 | + | ||
1085 | + | func gm (gn,go,fN,gh) = { | |
1086 | + | func fV (eR,gp) = { | |
1087 | + | let fB = eR._1 | |
1088 | + | let fW = split(gp, ";") | |
1089 | + | if ((size(fW) != r)) | |
1090 | 1090 | then throw("Wrong segment format") | |
1091 | 1091 | else { | |
1092 | - | let | |
1093 | - | let | |
1094 | - | if (if (( | |
1095 | - | then ( | |
1092 | + | let gq = fW[0] | |
1093 | + | let gr = fW[1] | |
1094 | + | if (if ((gq == "")) | |
1095 | + | then (gr == "") | |
1096 | 1096 | else false) | |
1097 | - | then $Tuple2(( | |
1097 | + | then $Tuple2((fB + 1), eR._2) | |
1098 | 1098 | else { | |
1099 | - | let | |
1100 | - | $Tuple2(( | |
1099 | + | let gs = ge(gq, eR._2, fN, fB, 0, gh) | |
1100 | + | $Tuple2((fB + 1), ge(gr, gs, fN, fB, 1, gh)) | |
1101 | 1101 | } | |
1102 | 1102 | } | |
1103 | 1103 | } | |
1104 | 1104 | ||
1105 | - | ( let | |
1106 | - | let | |
1107 | - | let | |
1108 | - | func | |
1109 | - | then | |
1110 | - | else | |
1111 | - | ||
1112 | - | func | |
1113 | - | then | |
1105 | + | ( let eT = gn | |
1106 | + | let eU = size(eT) | |
1107 | + | let eV = $Tuple2(0, go) | |
1108 | + | func eW (eX,eY) = if ((eY >= eU)) | |
1109 | + | then eX | |
1110 | + | else fV(eX, eT[eY]) | |
1111 | + | ||
1112 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
1113 | + | then eX | |
1114 | 1114 | else throw("List size exceeds 6") | |
1115 | 1115 | ||
1116 | - | | |
1117 | - | } | |
1118 | - | ||
1119 | - | ||
1120 | - | func | |
1116 | + | eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6))._2 | |
1117 | + | } | |
1118 | + | ||
1119 | + | ||
1120 | + | func gt (gn,go,fO,fP,fN,fH) = if ((3 > size(gn))) | |
1121 | 1121 | then throw("At least duck, mines and traps parts are required") | |
1122 | 1122 | else { | |
1123 | - | func | |
1124 | - | let | |
1125 | - | if (( | |
1126 | - | then $Tuple4(( | |
1123 | + | func fV (eR,gp) = { | |
1124 | + | let fB = eR._1 | |
1125 | + | if ((fB == 0)) | |
1126 | + | then $Tuple4((fB + 1), eR._2, eR._3, eR._4) | |
1127 | 1127 | else { | |
1128 | - | let | |
1129 | - | $Tuple4(( | |
1128 | + | let gu = fL(gp, eR._2, fN, fH, eR._3, eR._4) | |
1129 | + | $Tuple4((fB + 1), gu._1, gu._2, gu._3) | |
1130 | 1130 | } | |
1131 | 1131 | } | |
1132 | 1132 | ||
1133 | - | let | |
1134 | - | let | |
1135 | - | let | |
1136 | - | let | |
1137 | - | func | |
1138 | - | then | |
1139 | - | else | |
1140 | - | ||
1141 | - | func | |
1142 | - | then | |
1133 | + | let gv = { | |
1134 | + | let eT = gn | |
1135 | + | let eU = size(eT) | |
1136 | + | let eV = $Tuple4(0, go, fO, fP) | |
1137 | + | func eW (eX,eY) = if ((eY >= eU)) | |
1138 | + | then eX | |
1139 | + | else fV(eX, eT[eY]) | |
1140 | + | ||
1141 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
1142 | + | then eX | |
1143 | 1143 | else throw("List size exceeds 10") | |
1144 | 1144 | ||
1145 | - | | |
1146 | - | } | |
1147 | - | $Tuple3( | |
1145 | + | eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1146 | + | } | |
1147 | + | $Tuple3(gv._2, gv._3, gv._4) | |
1148 | 1148 | } | |
1149 | 1149 | ||
1150 | 1150 | ||
1151 | - | func | |
1152 | - | let | |
1153 | - | let | |
1154 | - | let | |
1155 | - | let | |
1156 | - | let ao = if (( | |
1151 | + | func gw (A) = { | |
1152 | + | let gx = F(A) | |
1153 | + | let gy = split(valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
1154 | + | let gz = gm(gy, ea, true, nil) | |
1155 | + | let gA = split(gy[p], ";")[1] | |
1156 | + | let ao = if ((gA == "")) | |
1157 | 1157 | then 0 | |
1158 | 1158 | else { | |
1159 | - | let | |
1160 | - | if (( | |
1159 | + | let gB = split(gA, ",")[0] | |
1160 | + | if ((gB == "")) | |
1161 | 1161 | then 0 | |
1162 | 1162 | else { | |
1163 | - | let | |
1164 | - | let | |
1165 | - | let | |
1166 | - | if (if (if (if (if (( | |
1163 | + | let fM = split(gB, ":") | |
1164 | + | let da = fM[0] | |
1165 | + | let gC = fM[1] | |
1166 | + | if (if (if (if (if ((da == "06")) | |
1167 | 1167 | then true | |
1168 | - | else ( | |
1168 | + | else (da == "07")) | |
1169 | 1169 | then true | |
1170 | - | else ( | |
1171 | - | then ( | |
1170 | + | else (da == "08")) | |
1171 | + | then (gC != "") | |
1172 | 1172 | else false) | |
1173 | - | then (parseIntValue( | |
1173 | + | then (parseIntValue(gC) > 0) | |
1174 | 1174 | else false) | |
1175 | - | then parseIntValue(split(aS[parseIntValue( | |
1175 | + | then parseIntValue(split(aS[parseIntValue(da)], "_")[aU]) | |
1176 | 1176 | else 0 | |
1177 | 1177 | } | |
1178 | 1178 | } | |
1179 | - | let | |
1180 | - | let | |
1181 | - | ( | |
1182 | - | } | |
1183 | - | ||
1184 | - | ||
1185 | - | func | |
1179 | + | let gh = am(this, A, ao, true) | |
1180 | + | let gD = gm(gy, gz, false, gh) | |
1181 | + | (gD == gD) | |
1182 | + | } | |
1183 | + | ||
1184 | + | ||
1185 | + | func gE (gF,gG,gH,gI) = if ((size(gF) != aF)) | |
1186 | 1186 | then throw("Wrong proportions data") | |
1187 | 1187 | else { | |
1188 | - | func | |
1189 | - | let | |
1190 | - | if ((0 > | |
1191 | - | then throw(((((((("Panic! Pieces of type=" + toString( | |
1192 | - | else ( | |
1193 | - | } | |
1194 | - | ||
1195 | - | let | |
1196 | - | let | |
1197 | - | let | |
1198 | - | func | |
1199 | - | then | |
1200 | - | else | |
1201 | - | ||
1202 | - | func | |
1203 | - | then | |
1188 | + | func gJ (eR,gK) = { | |
1189 | + | let fj = (parseIntValue(gF[gK]) + ((gI * gG[gK]) * gH)) | |
1190 | + | if ((0 > fj)) | |
1191 | + | then throw(((((((("Panic! Pieces of type=" + toString(gK)) + ", sign=") + toString(gI)) + ", terrainCounts[i]=") + toString(gG[gK])) + ", landSizeIndex=") + toString(gH))) | |
1192 | + | else (eR :+ toString(fj)) | |
1193 | + | } | |
1194 | + | ||
1195 | + | let eT = cK | |
1196 | + | let eU = size(eT) | |
1197 | + | let eV = nil | |
1198 | + | func eW (eX,eY) = if ((eY >= eU)) | |
1199 | + | then eX | |
1200 | + | else gJ(eX, eT[eY]) | |
1201 | + | ||
1202 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
1203 | + | then eX | |
1204 | 1204 | else throw("List size exceeds 6") | |
1205 | 1205 | ||
1206 | - | | |
1206 | + | eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6) | |
1207 | 1207 | } | |
1208 | 1208 | ||
1209 | 1209 | ||
1210 | - | func | |
1211 | - | let | |
1212 | - | makeString( | |
1213 | - | } | |
1214 | - | ||
1215 | - | ||
1216 | - | func | |
1217 | - | ||
1218 | - | ||
1219 | - | func | |
1220 | - | func | |
1221 | - | let | |
1222 | - | ( | |
1210 | + | func gL (gG,gH,gI) = { | |
1211 | + | let gF = split(valueOrElse(getString(dr()), "0_0_0_0_0_0"), "_") | |
1212 | + | makeString(gE(gF, gG, gH, gI), "_") | |
1213 | + | } | |
1214 | + | ||
1215 | + | ||
1216 | + | func gM (gN) = [(size(split(gN, "A")) - 1), (size(split(gN, "B")) - 1), (size(split(gN, "C")) - 1), (size(split(gN, "D")) - 1), (size(split(gN, "E")) - 1), (size(split(gN, "F")) - 1)] | |
1217 | + | ||
1218 | + | ||
1219 | + | func gO (gP,gG,gQ,gH,gR) = { | |
1220 | + | func gS (eR,gK) = { | |
1221 | + | let gT = ((fraction(gQ, gR, a) * gG[gK]) * gH) | |
1222 | + | (eR :+ toString((parseIntValue(gP[gK]) + gT))) | |
1223 | 1223 | } | |
1224 | 1224 | ||
1225 | - | let | |
1226 | - | let | |
1227 | - | let | |
1228 | - | let | |
1229 | - | func | |
1230 | - | then | |
1231 | - | else | |
1232 | - | ||
1233 | - | func | |
1234 | - | then | |
1225 | + | let fc = { | |
1226 | + | let eT = cK | |
1227 | + | let eU = size(eT) | |
1228 | + | let eV = nil | |
1229 | + | func eW (eX,eY) = if ((eY >= eU)) | |
1230 | + | then eX | |
1231 | + | else gS(eX, eT[eY]) | |
1232 | + | ||
1233 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
1234 | + | then eX | |
1235 | 1235 | else throw("List size exceeds 6") | |
1236 | 1236 | ||
1237 | - | | |
1237 | + | eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6) | |
1238 | 1238 | } | |
1239 | - | makeString( | |
1240 | - | } | |
1241 | - | ||
1242 | - | ||
1243 | - | func | |
1244 | - | func | |
1245 | - | let | |
1246 | - | $Tuple2(( | |
1239 | + | makeString(fc, "_") | |
1240 | + | } | |
1241 | + | ||
1242 | + | ||
1243 | + | func gU (gG,gQ,gH,gR) = { | |
1244 | + | func gS (eR,gK) = { | |
1245 | + | let gT = ((fraction(gQ, gR, a) * gG[gK]) * gH) | |
1246 | + | $Tuple2((eR._1 :+ gT), (eR._2 + gT)) | |
1247 | 1247 | } | |
1248 | 1248 | ||
1249 | - | let | |
1250 | - | let | |
1251 | - | let | |
1252 | - | func | |
1253 | - | then | |
1254 | - | else | |
1255 | - | ||
1256 | - | func | |
1257 | - | then | |
1249 | + | let eT = cK | |
1250 | + | let eU = size(eT) | |
1251 | + | let eV = $Tuple2(nil, 0) | |
1252 | + | func eW (eX,eY) = if ((eY >= eU)) | |
1253 | + | then eX | |
1254 | + | else gS(eX, eT[eY]) | |
1255 | + | ||
1256 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
1257 | + | then eX | |
1258 | 1258 | else throw("List size exceeds 6") | |
1259 | 1259 | ||
1260 | - | | |
1261 | - | } | |
1262 | - | ||
1263 | - | ||
1264 | - | func | |
1265 | - | let | |
1266 | - | let | |
1267 | - | if (( | |
1268 | - | then $Tuple2(makeString( | |
1269 | - | else if (( | |
1260 | + | eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6) | |
1261 | + | } | |
1262 | + | ||
1263 | + | ||
1264 | + | func gV (gW,gX,gY,gZ) = { | |
1265 | + | let ha = gY._1 | |
1266 | + | let hb = gY._2 | |
1267 | + | if ((hb == 0)) | |
1268 | + | then $Tuple2(makeString(gW, "_"), makeString(gX, "_")) | |
1269 | + | else if ((gZ >= hb)) | |
1270 | 1270 | then { | |
1271 | - | func | |
1272 | - | ||
1273 | - | let | |
1274 | - | let | |
1275 | - | let | |
1276 | - | let | |
1277 | - | func | |
1278 | - | then | |
1279 | - | else | |
1280 | - | ||
1281 | - | func | |
1282 | - | then | |
1271 | + | func hc (eR,gK) = (eR :+ toString((parseIntValue(gW[gK]) + ha[gK]))) | |
1272 | + | ||
1273 | + | let fc = { | |
1274 | + | let eT = cK | |
1275 | + | let eU = size(eT) | |
1276 | + | let eV = nil | |
1277 | + | func eW (eX,eY) = if ((eY >= eU)) | |
1278 | + | then eX | |
1279 | + | else hc(eX, eT[eY]) | |
1280 | + | ||
1281 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
1282 | + | then eX | |
1283 | 1283 | else throw("List size exceeds 6") | |
1284 | 1284 | ||
1285 | - | | |
1285 | + | eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6) | |
1286 | 1286 | } | |
1287 | - | $Tuple2(makeString( | |
1287 | + | $Tuple2(makeString(fc, "_"), makeString(gX, "_")) | |
1288 | 1288 | } | |
1289 | 1289 | else { | |
1290 | - | func | |
1291 | - | let | |
1292 | - | $Tuple2(( | |
1290 | + | func hd (eR,gK) = { | |
1291 | + | let he = fraction(ha[gK], gZ, hb) | |
1292 | + | $Tuple2((eR._1 :+ toString((parseIntValue(gW[gK]) + he))), (eR._2 :+ toString(((parseIntValue(gX[gK]) + ha[gK]) - he)))) | |
1293 | 1293 | } | |
1294 | 1294 | ||
1295 | - | let | |
1296 | - | let | |
1297 | - | let | |
1298 | - | let | |
1299 | - | func | |
1300 | - | then | |
1301 | - | else | |
1302 | - | ||
1303 | - | func | |
1304 | - | then | |
1295 | + | let fc = { | |
1296 | + | let eT = cK | |
1297 | + | let eU = size(eT) | |
1298 | + | let eV = $Tuple2(nil, nil) | |
1299 | + | func eW (eX,eY) = if ((eY >= eU)) | |
1300 | + | then eX | |
1301 | + | else hd(eX, eT[eY]) | |
1302 | + | ||
1303 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
1304 | + | then eX | |
1305 | 1305 | else throw("List size exceeds 6") | |
1306 | 1306 | ||
1307 | - | | |
1307 | + | eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6) | |
1308 | 1308 | } | |
1309 | - | $Tuple2(makeString( | |
1309 | + | $Tuple2(makeString(fc._1, "_"), makeString(fc._2, "_")) | |
1310 | 1310 | } | |
1311 | 1311 | } | |
1312 | 1312 | ||
1313 | 1313 | ||
1314 | - | func | |
1315 | - | then | |
1316 | - | else -( | |
1317 | - | ||
1318 | - | ||
1319 | - | let | |
1320 | - | ||
1321 | - | func | |
1322 | - | let | |
1323 | - | let | |
1314 | + | func hf (hg) = if ((hg >= toBigInt(0))) | |
1315 | + | then hg | |
1316 | + | else -(hg) | |
1317 | + | ||
1318 | + | ||
1319 | + | let hh = [[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]] | |
1320 | + | ||
1321 | + | func hi (dA,hj) = { | |
1322 | + | let hk = toInt((dA % ej)) | |
1323 | + | let hl = if ((hj[0] > hk)) | |
1324 | 1324 | then "A" | |
1325 | - | else if (( | |
1325 | + | else if ((hj[1] > hk)) | |
1326 | 1326 | then "B" | |
1327 | - | else if (( | |
1327 | + | else if ((hj[2] > hk)) | |
1328 | 1328 | then "C" | |
1329 | - | else if (( | |
1329 | + | else if ((hj[3] > hk)) | |
1330 | 1330 | then "D" | |
1331 | - | else if (( | |
1331 | + | else if ((hj[4] > hk)) | |
1332 | 1332 | then "E" | |
1333 | 1333 | else "F" | |
1334 | - | | |
1335 | - | } | |
1336 | - | ||
1337 | - | ||
1338 | - | func | |
1339 | - | let | |
1340 | - | func | |
1341 | - | ||
1342 | - | let | |
1343 | - | let | |
1344 | - | let | |
1345 | - | let | |
1346 | - | func | |
1347 | - | then | |
1348 | - | else | |
1349 | - | ||
1350 | - | func | |
1351 | - | then | |
1334 | + | hl | |
1335 | + | } | |
1336 | + | ||
1337 | + | ||
1338 | + | func hm (hn,ho) = { | |
1339 | + | let hp = hh[ho] | |
1340 | + | func hq (eR,eS) = $Tuple2((((((eR._1 + hi(eR._2, hp)) + hi((eR._2 / ej), hp)) + hi((eR._2 / ek), hp)) + hi((eR._2 / el), hp)) + hi((eR._2 / em), hp)), (eR._2 / en)) | |
1341 | + | ||
1342 | + | let gv = { | |
1343 | + | let eT = [1, 2, 3, 4, 5] | |
1344 | + | let eU = size(eT) | |
1345 | + | let eV = $Tuple2("", (hn / ei)) | |
1346 | + | func eW (eX,eY) = if ((eY >= eU)) | |
1347 | + | then eX | |
1348 | + | else hq(eX, eT[eY]) | |
1349 | + | ||
1350 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
1351 | + | then eX | |
1352 | 1352 | else throw("List size exceeds 5") | |
1353 | 1353 | ||
1354 | - | | |
1354 | + | eZ(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5) | |
1355 | 1355 | } | |
1356 | - | | |
1357 | - | } | |
1358 | - | ||
1359 | - | ||
1360 | - | let | |
1361 | - | ||
1362 | - | let | |
1363 | - | ||
1364 | - | func | |
1365 | - | func | |
1366 | - | let | |
1367 | - | let | |
1368 | - | let | |
1356 | + | gv._1 | |
1357 | + | } | |
1358 | + | ||
1359 | + | ||
1360 | + | let hr = [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] | |
1361 | + | ||
1362 | + | let hs = ["A", "B", "C", "D", "E", "F"] | |
1363 | + | ||
1364 | + | func ht (hu,gH) = { | |
1365 | + | func hv (eR,dy) = { | |
1366 | + | let fB = eR._2 | |
1367 | + | let hw = parseIntValue(dy) | |
1368 | + | let hg = if ((hw == 0)) | |
1369 | 1369 | then 0 | |
1370 | - | else if (( | |
1371 | - | then ( | |
1372 | - | else if (( | |
1370 | + | else if ((hw >= (4 * gH))) | |
1371 | + | then (hw / gH) | |
1372 | + | else if ((hw > (3 * gH))) | |
1373 | 1373 | then 3 | |
1374 | - | else ((( | |
1375 | - | $Tuple3(( | |
1374 | + | else (((hw - 1) / gH) + 1) | |
1375 | + | $Tuple3((eR._1 :+ hg), (eR._2 + 1), (eR._3 + hg)) | |
1376 | 1376 | } | |
1377 | 1377 | ||
1378 | - | let | |
1379 | - | let | |
1380 | - | let | |
1381 | - | let | |
1382 | - | func | |
1383 | - | then | |
1384 | - | else | |
1385 | - | ||
1386 | - | func | |
1387 | - | then | |
1378 | + | let gv = { | |
1379 | + | let eT = hu | |
1380 | + | let eU = size(eT) | |
1381 | + | let eV = $Tuple3(nil, 0, 0) | |
1382 | + | func eW (eX,eY) = if ((eY >= eU)) | |
1383 | + | then eX | |
1384 | + | else hv(eX, eT[eY]) | |
1385 | + | ||
1386 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
1387 | + | then eX | |
1388 | 1388 | else throw("List size exceeds 6") | |
1389 | 1389 | ||
1390 | - | | |
1390 | + | eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6) | |
1391 | 1391 | } | |
1392 | - | let | |
1393 | - | let | |
1394 | - | let | |
1395 | - | func | |
1396 | - | let | |
1397 | - | then ( | |
1398 | - | else | |
1399 | - | let | |
1392 | + | let hx = gv._1 | |
1393 | + | let hy = value(indexOf(hx, max(hx))) | |
1394 | + | let hz = (gv._3 - 25) | |
1395 | + | func hA (eR,da) = { | |
1396 | + | let dF = if ((da == hy)) | |
1397 | + | then (hx[da] - hz) | |
1398 | + | else hx[da] | |
1399 | + | let dQ = if ((dF == 0)) | |
1400 | 1400 | then nil | |
1401 | - | else split(drop(toString(pow(10, 0, | |
1402 | - | let | |
1403 | - | func | |
1404 | - | ||
1405 | - | let | |
1406 | - | let | |
1407 | - | let | |
1408 | - | let | |
1409 | - | func | |
1410 | - | then | |
1411 | - | else | |
1412 | - | ||
1413 | - | func | |
1414 | - | then | |
1401 | + | else split(drop(toString(pow(10, 0, dF, 0, 0, DOWN)), 1), "") | |
1402 | + | let ga = hs[da] | |
1403 | + | func hB (hC,hD) = (hC :+ ga) | |
1404 | + | ||
1405 | + | let hE = { | |
1406 | + | let eT = dQ | |
1407 | + | let eU = size(eT) | |
1408 | + | let eV = nil | |
1409 | + | func hF (eX,eY) = if ((eY >= eU)) | |
1410 | + | then eX | |
1411 | + | else hB(eX, eT[eY]) | |
1412 | + | ||
1413 | + | func hG (eX,eY) = if ((eY >= eU)) | |
1414 | + | then eX | |
1415 | 1415 | else throw("List size exceeds 25") | |
1416 | 1416 | ||
1417 | - | hF( | |
1418 | - | } | |
1419 | - | ( | |
1417 | + | hG(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(eV, 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) | |
1418 | + | } | |
1419 | + | (eR ++ hE) | |
1420 | 1420 | } | |
1421 | 1421 | ||
1422 | - | let | |
1423 | - | let | |
1424 | - | let | |
1425 | - | let | |
1426 | - | func | |
1427 | - | then | |
1428 | - | else | |
1429 | - | ||
1430 | - | func | |
1431 | - | then | |
1422 | + | let fc = { | |
1423 | + | let eT = cK | |
1424 | + | let eU = size(eT) | |
1425 | + | let eV = nil | |
1426 | + | func hF (eX,eY) = if ((eY >= eU)) | |
1427 | + | then eX | |
1428 | + | else hA(eX, eT[eY]) | |
1429 | + | ||
1430 | + | func hG (eX,eY) = if ((eY >= eU)) | |
1431 | + | then eX | |
1432 | 1432 | else throw("List size exceeds 6") | |
1433 | 1433 | ||
1434 | - | hF( | |
1434 | + | hG(hF(hF(hF(hF(hF(hF(eV, 0), 1), 2), 3), 4), 5), 6) | |
1435 | 1435 | } | |
1436 | - | func | |
1437 | - | ||
1438 | - | let | |
1439 | - | let | |
1440 | - | let | |
1441 | - | func | |
1442 | - | then | |
1443 | - | else | |
1444 | - | ||
1445 | - | func | |
1446 | - | then | |
1436 | + | func hH (eR,fB) = (eR + fc[fB]) | |
1437 | + | ||
1438 | + | let eT = hr | |
1439 | + | let eU = size(eT) | |
1440 | + | let eV = "" | |
1441 | + | func hI (eX,eY) = if ((eY >= eU)) | |
1442 | + | then eX | |
1443 | + | else hH(eX, eT[eY]) | |
1444 | + | ||
1445 | + | func hJ (eX,eY) = if ((eY >= eU)) | |
1446 | + | then eX | |
1447 | 1447 | else throw("List size exceeds 25") | |
1448 | 1448 | ||
1449 | - | hI( | |
1450 | - | } | |
1451 | - | ||
1452 | - | ||
1453 | - | func | |
1454 | - | let | |
1455 | - | [toString(valueOrElse(parseInt( | |
1456 | - | then | |
1457 | - | else "0_0_0_0_0_0", if ((size(split( | |
1458 | - | then | |
1459 | - | else "0_0_0_0_0_0", | |
1460 | - | } | |
1461 | - | ||
1462 | - | ||
1463 | - | func | |
1464 | - | let | |
1465 | - | ((aI * (parseIntValue( | |
1466 | - | } | |
1467 | - | ||
1468 | - | ||
1469 | - | func | |
1470 | - | let | |
1471 | - | func | |
1472 | - | ||
1473 | - | func | |
1474 | - | let | |
1475 | - | let | |
1476 | - | $Tuple2(( | |
1449 | + | hJ(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(eV, 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) | |
1450 | + | } | |
1451 | + | ||
1452 | + | ||
1453 | + | func hK (hL) = { | |
1454 | + | let gu = split(valueOrElse(getString(hL), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":") | |
1455 | + | [toString(valueOrElse(parseInt(gu[bh]), 0)), if ((size(split(gu[bi], "_")) == aF)) | |
1456 | + | then gu[bi] | |
1457 | + | else "0_0_0_0_0_0", if ((size(split(gu[bj], "_")) == aF)) | |
1458 | + | then gu[bj] | |
1459 | + | else "0_0_0_0_0_0", gu[bk]] | |
1460 | + | } | |
1461 | + | ||
1462 | + | ||
1463 | + | func hM (hN) = { | |
1464 | + | let fp = split(hN, "_") | |
1465 | + | ((aI * (parseIntValue(fp[1]) + 1)) * parseIntValue(fp[0])) | |
1466 | + | } | |
1467 | + | ||
1468 | + | ||
1469 | + | func hO (hP) = { | |
1470 | + | let hQ = hP[bb] | |
1471 | + | func hR (eR,hS) = (eR + parseIntValue(hS)) | |
1472 | + | ||
1473 | + | func hT (eR,hS) = { | |
1474 | + | let da = eR._1 | |
1475 | + | let eK = (((parseIntValue(hS) + aX) - 1) / aX) | |
1476 | + | $Tuple2((da + 1), (eR._2 + (eK * cE))) | |
1477 | 1477 | } | |
1478 | 1478 | ||
1479 | - | let | |
1480 | - | let | |
1481 | - | let | |
1482 | - | let | |
1483 | - | func | |
1484 | - | then | |
1485 | - | else | |
1486 | - | ||
1487 | - | func | |
1488 | - | then | |
1479 | + | let hU = { | |
1480 | + | let eT = split(hP[aZ], "_") | |
1481 | + | let eU = size(eT) | |
1482 | + | let eV = 0 | |
1483 | + | func eW (eX,eY) = if ((eY >= eU)) | |
1484 | + | then eX | |
1485 | + | else hR(eX, eT[eY]) | |
1486 | + | ||
1487 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
1488 | + | then eX | |
1489 | 1489 | else throw("List size exceeds 6") | |
1490 | 1490 | ||
1491 | - | | |
1491 | + | eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6) | |
1492 | 1492 | } | |
1493 | - | let | |
1494 | - | let | |
1495 | - | let | |
1496 | - | let | |
1497 | - | func | |
1498 | - | then | |
1499 | - | else | |
1500 | - | ||
1501 | - | func | |
1502 | - | then | |
1493 | + | let hV = { | |
1494 | + | let eT = split(hP[ba], "_") | |
1495 | + | let eU = size(eT) | |
1496 | + | let eV = 0 | |
1497 | + | func hF (eX,eY) = if ((eY >= eU)) | |
1498 | + | then eX | |
1499 | + | else hR(eX, eT[eY]) | |
1500 | + | ||
1501 | + | func hG (eX,eY) = if ((eY >= eU)) | |
1502 | + | then eX | |
1503 | 1503 | else throw("List size exceeds 6") | |
1504 | 1504 | ||
1505 | - | hF( | |
1505 | + | hG(hF(hF(hF(hF(hF(hF(eV, 0), 1), 2), 3), 4), 5), 6) | |
1506 | 1506 | } | |
1507 | - | let | |
1507 | + | let hW = if ((hQ == "")) | |
1508 | 1508 | then 0 | |
1509 | - | else ( let | |
1510 | - | let | |
1511 | - | let | |
1512 | - | func | |
1513 | - | then | |
1514 | - | else | |
1515 | - | ||
1516 | - | func | |
1517 | - | then | |
1509 | + | else ( let eT = split_4C(hQ, "_") | |
1510 | + | let eU = size(eT) | |
1511 | + | let eV = $Tuple2(0, 0) | |
1512 | + | func hI (eX,eY) = if ((eY >= eU)) | |
1513 | + | then eX | |
1514 | + | else hT(eX, eT[eY]) | |
1515 | + | ||
1516 | + | func hJ (eX,eY) = if ((eY >= eU)) | |
1517 | + | then eX | |
1518 | 1518 | else throw("List size exceeds 50") | |
1519 | 1519 | ||
1520 | - | hI( | |
1521 | - | (( | |
1522 | - | } | |
1523 | - | ||
1524 | - | ||
1525 | - | func | |
1526 | - | let | |
1527 | - | let | |
1528 | - | let | |
1529 | - | let | |
1530 | - | let | |
1531 | - | let | |
1532 | - | then makeString(["0", toString( | |
1520 | + | hJ(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(eV, 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 | |
1521 | + | ((hU + hV) + hW) | |
1522 | + | } | |
1523 | + | ||
1524 | + | ||
1525 | + | func hX (hY,hZ,ia) = { | |
1526 | + | let hN = ((toString(hZ) + "_") + toString(ia)) | |
1527 | + | let ib = hM(hN) | |
1528 | + | let ic = valueOrElse(getString(hY), (hN + ":0_0_0_0_0_0:0_0_0_0_0_0::0")) | |
1529 | + | let id = split_4C(ic, ":") | |
1530 | + | let ie = hO(id) | |
1531 | + | let if = if ((5 > size(id))) | |
1532 | + | then makeString(["0", toString(ie), toString((ib - ie)), toString(ib)], "_") | |
1533 | 1533 | else { | |
1534 | - | let | |
1535 | - | let | |
1536 | - | let | |
1537 | - | then parseIntValue( | |
1538 | - | else | |
1539 | - | makeString([toString( | |
1540 | - | } | |
1541 | - | [ | |
1542 | - | then | |
1543 | - | else "0_0_0_0_0_0", if ((size(split( | |
1544 | - | then | |
1545 | - | else "0_0_0_0_0_0", | |
1546 | - | } | |
1547 | - | ||
1548 | - | ||
1549 | - | func | |
1550 | - | let | |
1551 | - | let | |
1552 | - | (( | |
1553 | - | } | |
1554 | - | ||
1555 | - | ||
1556 | - | func | |
1534 | + | let ig = split(id[bc], "_") | |
1535 | + | let ih = parseIntValue(ig[bd]) | |
1536 | + | let ii = if ((size(ig) > 1)) | |
1537 | + | then parseIntValue(ig[be]) | |
1538 | + | else ie | |
1539 | + | makeString([toString(ih), toString(ii), toString(((ib - ih) - ii)), toString(ib)], "_") | |
1540 | + | } | |
1541 | + | [id[aY], if ((size(split(id[aZ], "_")) == aF)) | |
1542 | + | then id[aZ] | |
1543 | + | else "0_0_0_0_0_0", if ((size(split(id[ba], "_")) == aF)) | |
1544 | + | then id[ba] | |
1545 | + | else "0_0_0_0_0_0", id[bb], if] | |
1546 | + | } | |
1547 | + | ||
1548 | + | ||
1549 | + | func ij (hP) = { | |
1550 | + | let ik = hO(hP) | |
1551 | + | let il = parseIntValue(split(hP[bc], "_")[bd]) | |
1552 | + | ((hM(hP[aY]) - ik) - il) | |
1553 | + | } | |
1554 | + | ||
1555 | + | ||
1556 | + | func im (in,hP,io) = if ((size(in) != 3)) | |
1557 | 1557 | then throw("cargoListStr should contain exactly 2 ':' separators") | |
1558 | 1558 | else { | |
1559 | - | let | |
1560 | - | let | |
1561 | - | let | |
1559 | + | let ip = split(in[0], "_") | |
1560 | + | let iq = split(in[1], "_") | |
1561 | + | let ir = if ((in[2] == "")) | |
1562 | 1562 | then nil | |
1563 | - | else split_4C( | |
1564 | - | if ((size( | |
1563 | + | else split_4C(in[2], "_") | |
1564 | + | if ((size(ip) != aF)) | |
1565 | 1565 | then throw("All 6 resources should be passed") | |
1566 | - | else if ((size( | |
1566 | + | else if ((size(iq) != aF)) | |
1567 | 1567 | then throw("All 6 materials should be passed") | |
1568 | 1568 | else { | |
1569 | - | let | |
1570 | - | let | |
1571 | - | let | |
1572 | - | let | |
1569 | + | let gZ = ij(hP) | |
1570 | + | let is = split(hP[aZ], "_") | |
1571 | + | let it = split(hP[ba], "_") | |
1572 | + | let iu = if ((hP[bb] == "")) | |
1573 | 1573 | then nil | |
1574 | - | else split_4C( | |
1575 | - | let | |
1576 | - | let | |
1577 | - | let | |
1574 | + | else split_4C(hP[bb], "_") | |
1575 | + | let gX = split(io[bi], "_") | |
1576 | + | let iv = split(io[bj], "_") | |
1577 | + | let iw = if ((io[bk] == "")) | |
1578 | 1578 | then nil | |
1579 | - | else split_4C( | |
1580 | - | func | |
1581 | - | let | |
1582 | - | let | |
1583 | - | let | |
1584 | - | let | |
1585 | - | if (( | |
1586 | - | then $Tuple4(( | |
1587 | - | else if (( | |
1588 | - | then if (( | |
1589 | - | then throw((((("Attempt to take " + | |
1590 | - | else $Tuple4(( | |
1591 | - | else if ((-( | |
1592 | - | then throw((((("Attempt to take " + toString(-( | |
1593 | - | else $Tuple4(( | |
1579 | + | else split_4C(io[bk], "_") | |
1580 | + | func ix (eR,hS) = { | |
1581 | + | let gK = eR._1 | |
1582 | + | let iy = parseIntValue(hS) | |
1583 | + | let iz = parseIntValue(is[gK]) | |
1584 | + | let iA = parseIntValue(gX[gK]) | |
1585 | + | if ((iy == 0)) | |
1586 | + | then $Tuple4((gK + 1), (eR._2 :+ is[gK]), (eR._3 :+ gX[gK]), eR._4) | |
1587 | + | else if ((iy > 0)) | |
1588 | + | then if ((iy > iA)) | |
1589 | + | then throw((((("Attempt to take " + hS) + " from backpack, but only ") + toString(iA)) + " available")) | |
1590 | + | else $Tuple4((gK + 1), (eR._2 :+ toString((iz + iy))), (eR._3 :+ toString((iA - iy))), (eR._4 + iy)) | |
1591 | + | else if ((-(iy) > iz)) | |
1592 | + | then throw((((("Attempt to take " + toString(-(iy))) + " from warehouse, but only ") + toString(iz)) + " available")) | |
1593 | + | else $Tuple4((gK + 1), (eR._2 :+ toString((iz + iy))), (eR._3 :+ toString((iA - iy))), (eR._4 + iy)) | |
1594 | 1594 | } | |
1595 | 1595 | ||
1596 | - | let | |
1597 | - | let | |
1598 | - | let | |
1599 | - | let | |
1600 | - | func | |
1601 | - | then | |
1602 | - | else | |
1603 | - | ||
1604 | - | func | |
1605 | - | then | |
1596 | + | let fc = { | |
1597 | + | let eT = ip | |
1598 | + | let eU = size(eT) | |
1599 | + | let eV = $Tuple4(0, nil, nil, 0) | |
1600 | + | func eW (eX,eY) = if ((eY >= eU)) | |
1601 | + | then eX | |
1602 | + | else ix(eX, eT[eY]) | |
1603 | + | ||
1604 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
1605 | + | then eX | |
1606 | 1606 | else throw("List size exceeds 6") | |
1607 | 1607 | ||
1608 | - | | |
1608 | + | eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6) | |
1609 | 1609 | } | |
1610 | - | func | |
1611 | - | let | |
1612 | - | let | |
1613 | - | let | |
1614 | - | let | |
1615 | - | if (( | |
1616 | - | then $Tuple4(( | |
1617 | - | else if (( | |
1618 | - | then if (( | |
1619 | - | then throw((((("Attempt to take " + | |
1620 | - | else $Tuple4(( | |
1621 | - | else if ((-( | |
1622 | - | then throw((((("Attempt to take " + toString(-( | |
1623 | - | else $Tuple4(( | |
1610 | + | func iB (eR,hS) = { | |
1611 | + | let gK = eR._1 | |
1612 | + | let iy = parseIntValue(hS) | |
1613 | + | let iC = parseIntValue(it[gK]) | |
1614 | + | let iD = parseIntValue(iv[gK]) | |
1615 | + | if ((iy == 0)) | |
1616 | + | then $Tuple4((gK + 1), (eR._2 :+ it[gK]), (eR._3 :+ iv[gK]), eR._4) | |
1617 | + | else if ((iy > 0)) | |
1618 | + | then if ((iy > iD)) | |
1619 | + | then throw((((("Attempt to take " + hS) + " from backpack, but only ") + toString(iD)) + " available")) | |
1620 | + | else $Tuple4((gK + 1), (eR._2 :+ toString((iC + iy))), (eR._3 :+ toString((iD - iy))), (eR._4 + iy)) | |
1621 | + | else if ((-(iy) > iC)) | |
1622 | + | then throw((((("Attempt to take " + toString(-(iy))) + " from warehouse, but only ") + toString(iC)) + " available")) | |
1623 | + | else $Tuple4((gK + 1), (eR._2 :+ toString((iC + iy))), (eR._3 :+ toString((iD - iy))), (eR._4 + iy)) | |
1624 | 1624 | } | |
1625 | 1625 | ||
1626 | - | let | |
1627 | - | let | |
1628 | - | let | |
1629 | - | let | |
1630 | - | func | |
1631 | - | then | |
1632 | - | else | |
1633 | - | ||
1634 | - | func | |
1635 | - | then | |
1626 | + | let gq = { | |
1627 | + | let eT = iq | |
1628 | + | let eU = size(eT) | |
1629 | + | let eV = $Tuple4(0, nil, nil, fc._4) | |
1630 | + | func hF (eX,eY) = if ((eY >= eU)) | |
1631 | + | then eX | |
1632 | + | else iB(eX, eT[eY]) | |
1633 | + | ||
1634 | + | func hG (eX,eY) = if ((eY >= eU)) | |
1635 | + | then eX | |
1636 | 1636 | else throw("List size exceeds 6") | |
1637 | 1637 | ||
1638 | - | hF( | |
1638 | + | hG(hF(hF(hF(hF(hF(hF(eV, 0), 1), 2), 3), 4), 5), 6) | |
1639 | 1639 | } | |
1640 | - | func | |
1641 | - | let | |
1642 | - | let | |
1643 | - | let | |
1644 | - | then parseIntValue( | |
1640 | + | func iE (eR,hS) = { | |
1641 | + | let gK = eR._1 | |
1642 | + | let iy = parseIntValue(hS) | |
1643 | + | let iF = if ((size(iu) > gK)) | |
1644 | + | then parseIntValue(iu[gK]) | |
1645 | 1645 | else 0 | |
1646 | - | let | |
1647 | - | then parseIntValue( | |
1646 | + | let iG = if ((size(iw) > gK)) | |
1647 | + | then parseIntValue(iw[gK]) | |
1648 | 1648 | else 0 | |
1649 | - | if (( | |
1650 | - | then $Tuple4(( | |
1651 | - | else if (( | |
1652 | - | then if (( | |
1653 | - | then throw((((("Attempt to take " + | |
1649 | + | if ((iy == 0)) | |
1650 | + | then $Tuple4((gK + 1), (eR._2 :+ toString(iF)), (eR._3 :+ toString(iG)), eR._4) | |
1651 | + | else if ((iy > 0)) | |
1652 | + | then if ((iy > iG)) | |
1653 | + | then throw((((("Attempt to take " + hS) + " from backpack, but only ") + toString(iG)) + " available")) | |
1654 | 1654 | else { | |
1655 | - | let | |
1656 | - | $Tuple4(( | |
1655 | + | let fT = (eH((iF + iy), aX) - eH(iF, aX)) | |
1656 | + | $Tuple4((gK + 1), (eR._2 :+ toString((iF + iy))), (eR._3 :+ toString((iG - iy))), (eR._4 + fT)) | |
1657 | 1657 | } | |
1658 | - | else if ((-( | |
1659 | - | then throw((((("Attempt to take " + toString(-( | |
1658 | + | else if ((-(iy) > iF)) | |
1659 | + | then throw((((("Attempt to take " + toString(-(iy))) + " from warehouse, but only ") + toString(iF)) + " available")) | |
1660 | 1660 | else { | |
1661 | - | let | |
1662 | - | $Tuple4(( | |
1661 | + | let fT = (eH((iF + iy), aX) - eH(iF, aX)) | |
1662 | + | $Tuple4((gK + 1), (eR._2 :+ toString((iF + iy))), (eR._3 :+ toString((iG - iy))), (eR._4 + fT)) | |
1663 | 1663 | } | |
1664 | 1664 | } | |
1665 | 1665 | ||
1666 | - | let | |
1666 | + | let gu = if ((size(ir) != 0)) | |
1667 | 1667 | then { | |
1668 | - | let | |
1669 | - | let | |
1670 | - | let | |
1671 | - | func | |
1672 | - | then | |
1673 | - | else | |
1674 | - | ||
1675 | - | func | |
1676 | - | then | |
1668 | + | let eT = ir | |
1669 | + | let eU = size(eT) | |
1670 | + | let eV = $Tuple4(0, nil, nil, gq._4) | |
1671 | + | func hI (eX,eY) = if ((eY >= eU)) | |
1672 | + | then eX | |
1673 | + | else iE(eX, eT[eY]) | |
1674 | + | ||
1675 | + | func hJ (eX,eY) = if ((eY >= eU)) | |
1676 | + | then eX | |
1677 | 1677 | else throw("List size exceeds 50") | |
1678 | 1678 | ||
1679 | - | hI( | |
1679 | + | hJ(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(eV, 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) | |
1680 | 1680 | } | |
1681 | - | else $Tuple4(0, | |
1682 | - | let | |
1683 | - | if (( | |
1684 | - | then throw((((("Attempt to put total " + toString( | |
1685 | - | else $Tuple7(makeString( | |
1681 | + | else $Tuple4(0, iu, iw, gq._4) | |
1682 | + | let iH = gu._4 | |
1683 | + | if ((iH > gZ)) | |
1684 | + | then throw((((("Attempt to put total " + toString(iH)) + " stuff, but only ") + toString(gZ)) + " warehouse space left")) | |
1685 | + | else $Tuple7(makeString(fc._2, "_"), makeString(gq._2, "_"), makeString_2C(gu._2, "_"), makeString(fc._3, "_"), makeString(gq._3, "_"), makeString_2C(gu._3, "_"), iH) | |
1686 | 1686 | } | |
1687 | 1687 | } | |
1688 | 1688 | ||
1689 | 1689 | ||
1690 | - | func | |
1691 | - | let bL = toString( | |
1692 | - | let | |
1693 | - | let | |
1694 | - | let | |
1695 | - | let | |
1696 | - | let | |
1697 | - | let | |
1698 | - | let | |
1699 | - | let bp = calculateAssetId( | |
1700 | - | let | |
1701 | - | $Tuple2([IntegerEntry( | |
1702 | - | } | |
1703 | - | ||
1704 | - | ||
1705 | - | func | |
1690 | + | func iI (iJ,iK) = { | |
1691 | + | let bL = toString(iJ) | |
1692 | + | let iL = hf(toBigInt(iK)) | |
1693 | + | let iM = valueOrElse(getInteger(ep()), (eo + 1)) | |
1694 | + | let et = toString(iM) | |
1695 | + | let ho = toInt((iL % ei)) | |
1696 | + | let gN = hm(iL, ho) | |
1697 | + | let dt = aP[ho] | |
1698 | + | let iN = Issue(eG(et, "S"), makeString([et, "S", gN, dt], "_"), 1, 0, false) | |
1699 | + | let bp = calculateAssetId(iN) | |
1700 | + | let iO = toBase58String(bp) | |
1701 | + | $Tuple2([IntegerEntry(ep(), (iM + 1)), iN, StringEntry(es(et), iO), StringEntry(bo(iO), bL), StringEntry(ev(et), bL), IntegerEntry(by(iO), 0), IntegerEntry(eu(iO, bL), 0), ScriptTransfer(iJ, 1, bp)], $Tuple2(iO, dt)) | |
1702 | + | } | |
1703 | + | ||
1704 | + | ||
1705 | + | func iP (bL,iQ,iR) = if (!(sigVerify_8Kb(iQ, iR, dZ))) | |
1706 | 1706 | then throw("signature does not match") | |
1707 | 1707 | else { | |
1708 | - | let | |
1709 | - | let | |
1710 | - | let | |
1711 | - | let | |
1712 | - | let | |
1713 | - | let | |
1714 | - | let | |
1715 | - | let | |
1716 | - | if (if (( | |
1708 | + | let fp = split_4C(toUtf8String(iQ), ";") | |
1709 | + | let iS = split_4C(fp[0], "|") | |
1710 | + | let iT = split(iS[eC], "_") | |
1711 | + | let iU = parseIntValue(iT[0]) | |
1712 | + | let iV = parseIntValue(iT[1]) | |
1713 | + | let iW = split(fp[1], ":") | |
1714 | + | let iX = iW[0] | |
1715 | + | let iY = parseIntValue(iS[eD]) | |
1716 | + | if (if ((iY > (lastBlock.timestamp + eb))) | |
1717 | 1717 | then true | |
1718 | - | else ((lastBlock.timestamp - | |
1719 | - | then throw(((("signature outdated: logTime=" + toString( | |
1718 | + | else ((lastBlock.timestamp - eb) > iY)) | |
1719 | + | then throw(((("signature outdated: logTime=" + toString(iY)) + ", bcTime=") + toString(lastBlock.timestamp))) | |
1720 | 1720 | else { | |
1721 | - | let | |
1722 | - | let | |
1723 | - | if (( | |
1724 | - | then throw(((("Tx ids don't match! In state: " + | |
1721 | + | let iZ = iW[1] | |
1722 | + | let ja = valueOrElse(getString(dL(bL)), "") | |
1723 | + | if ((ja != iZ)) | |
1724 | + | then throw(((("Tx ids don't match! In state: " + ja) + ", in msg: ") + iZ)) | |
1725 | 1725 | else { | |
1726 | 1726 | let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked") | |
1727 | - | let | |
1728 | - | let | |
1729 | - | let | |
1730 | - | if (( | |
1731 | - | then throw(((("oldHealth=" + toString( | |
1732 | - | else if ((0 >= | |
1727 | + | let jb = z(A) | |
1728 | + | let jc = ag(valueOrElse(getInteger(D(A)), 0)) | |
1729 | + | let jd = valueOrElse(getInteger(jb), jc) | |
1730 | + | if ((jd != iU)) | |
1731 | + | then throw(((("oldHealth=" + toString(jd)) + " from state does not match one from flight log=") + toString(iU))) | |
1732 | + | else if ((0 >= iU)) | |
1733 | 1733 | then throw("You can't fly with zero health") | |
1734 | - | else if (!( | |
1734 | + | else if (!(gw(A))) | |
1735 | 1735 | then throw("Equipment incompatible") | |
1736 | 1736 | else { | |
1737 | - | let | |
1738 | - | then | |
1737 | + | let je = if ((size(iS) > eE)) | |
1738 | + | then iS[eE] | |
1739 | 1739 | else "" | |
1740 | - | let | |
1741 | - | then | |
1740 | + | let jf = if ((size(iS) > eF)) | |
1741 | + | then iS[eF] | |
1742 | 1742 | else "" | |
1743 | - | let | |
1744 | - | then ( | |
1743 | + | let jg = if (if ((iV > 0)) | |
1744 | + | then (je == "$") | |
1745 | 1745 | else false) | |
1746 | - | then | |
1746 | + | then dz(invoke(db, "sendUsdtPrize", [bL], nil)) | |
1747 | 1747 | else 0 | |
1748 | - | $Tuple5( | |
1748 | + | $Tuple5(iV, A, jg, iX, jf) | |
1749 | 1749 | } | |
1750 | 1750 | } | |
1751 | 1751 | } | |
1752 | 1752 | } | |
1753 | 1753 | ||
1754 | 1754 | ||
1755 | - | func | |
1756 | - | let | |
1757 | - | let | |
1758 | - | let | |
1759 | - | let | |
1760 | - | ((aH + fraction(aH, (( | |
1761 | - | } | |
1762 | - | ||
1763 | - | ||
1764 | - | func | |
1765 | - | let | |
1766 | - | then $Tuple2( | |
1755 | + | func jh (P,ji) = { | |
1756 | + | let ia = valueOrElse(getInteger(by(P)), 0) | |
1757 | + | let jj = valueOrElse(getInteger(bs(aE, P)), 0) | |
1758 | + | let jk = (ia / 6) | |
1759 | + | let jl = (ia / 7) | |
1760 | + | ((aH + fraction(aH, ((ia + jk) + (2 * jl)), 5)) + fraction(aH, jj, (ji * 5))) | |
1761 | + | } | |
1762 | + | ||
1763 | + | ||
1764 | + | func jm (c,jn,jo) = { | |
1765 | + | let jp = if ((jn == ez)) | |
1766 | + | then $Tuple2(jo, valueOrElse(getString(bH(c)), "")) | |
1767 | 1767 | else { | |
1768 | 1768 | let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked") | |
1769 | - | let | |
1770 | - | let cf = split(value( | |
1769 | + | let jq = valueOrElse(getString(bJ(A)), aJ) | |
1770 | + | let cf = split(value(jq), "_") | |
1771 | 1771 | if ((cf[bm] != "L")) | |
1772 | 1772 | then throw((("Duck location type is " + cf[bm]) + ", but should be L")) | |
1773 | 1773 | else $Tuple2(cf[bn], A) | |
1774 | 1774 | } | |
1775 | - | let P = | |
1776 | - | let | |
1777 | - | let | |
1778 | - | let | |
1779 | - | let | |
1780 | - | let | |
1781 | - | if (( | |
1775 | + | let P = jp._1 | |
1776 | + | let jr = jp._2 | |
1777 | + | let js = value(assetInfo(fromBase58String(P))) | |
1778 | + | let jt = br(P) | |
1779 | + | let ju = valueOrErrorMessage(getInteger(jt), (("Land " + js.name) + " is not staked")) | |
1780 | + | let jv = valueOrErrorMessage(getString(bo(P)), (("NFT " + js.name) + " is orphaned")) | |
1781 | + | if ((jv != c)) | |
1782 | 1782 | then throw((aC + " is not yours")) | |
1783 | 1783 | else { | |
1784 | - | let | |
1785 | - | $Tuple4( | |
1786 | - | } | |
1787 | - | } | |
1788 | - | ||
1789 | - | ||
1790 | - | func | |
1784 | + | let jw = split(js.description, "_") | |
1785 | + | $Tuple4(jr, P, jw, ju) | |
1786 | + | } | |
1787 | + | } | |
1788 | + | ||
1789 | + | ||
1790 | + | func jx (c,eI,jn,jo) = if ((0 > eI)) | |
1791 | 1791 | then throw("Negative amount") | |
1792 | 1792 | else { | |
1793 | - | let | |
1794 | - | let | |
1795 | - | let | |
1796 | - | let | |
1797 | - | if ((0 > | |
1798 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1793 | + | let ga = jm(c, jn, jo) | |
1794 | + | let dI = ga._3[di] | |
1795 | + | let gG = gM(ga._3[dj]) | |
1796 | + | let gQ = (lastBlock.timestamp - ga._4) | |
1797 | + | if ((0 > gQ)) | |
1798 | + | then throw(((("Saved timestamp is in future, saved = " + toString(ga._4)) + ", current = ") + toString(lastBlock.timestamp))) | |
1799 | 1799 | else { | |
1800 | - | let | |
1801 | - | let | |
1802 | - | let | |
1803 | - | if (( | |
1804 | - | then throw(((("Not enough resources, available = " + toString( | |
1800 | + | let ji = dH(dI) | |
1801 | + | let jy = jh(ga._2, ji) | |
1802 | + | let jz = fraction(gQ, (jy * ji), a) | |
1803 | + | if ((eI > jz)) | |
1804 | + | then throw(((("Not enough resources, available = " + toString(jz)) + ", requested = ") + toString(eI))) | |
1805 | 1805 | else { | |
1806 | - | let | |
1807 | - | let | |
1808 | - | let | |
1809 | - | let | |
1810 | - | let | |
1811 | - | let | |
1812 | - | let | |
1813 | - | let | |
1814 | - | let | |
1815 | - | if (if (( | |
1816 | - | then ( | |
1806 | + | let jA = fraction((jz - eI), a, (jy * ji)) | |
1807 | + | let jB = (lastBlock.timestamp - jA) | |
1808 | + | let hZ = (ji / cF) | |
1809 | + | let gY = gU(gG, (gQ - jA), hZ, jy) | |
1810 | + | let hY = bx(ga._2) | |
1811 | + | let ia = valueOrElse(getInteger(by(ga._2)), 0) | |
1812 | + | let hP = hX(hY, hZ, ia) | |
1813 | + | let ig = split(hP[bc], "_") | |
1814 | + | let gZ = parseIntValue(ig[bf]) | |
1815 | + | if (if ((jn == ez)) | |
1816 | + | then (eI > gZ) | |
1817 | 1817 | else false) | |
1818 | - | then throw((("Only " + toString( | |
1818 | + | then throw((("Only " + toString(gZ)) + " space left in warehouse")) | |
1819 | 1819 | else { | |
1820 | - | let | |
1821 | - | let | |
1822 | - | let | |
1823 | - | let | |
1824 | - | let | |
1825 | - | then $Tuple4( | |
1826 | - | else if (( | |
1827 | - | then $Tuple4( | |
1820 | + | let hL = bI(ga._1) | |
1821 | + | let io = hK(hL) | |
1822 | + | let gX = split(io[bi], "_") | |
1823 | + | let gW = split(hP[aZ], "_") | |
1824 | + | let jC = if ((jn == ez)) | |
1825 | + | then $Tuple4(gO(gW, gG, (gQ - jA), hZ, jy), io[bi], (parseIntValue(ig[be]) + gY._2), (parseIntValue(ig[bf]) - gY._2)) | |
1826 | + | else if ((jn == eA)) | |
1827 | + | then $Tuple4(hP[aZ], gO(gX, gG, (gQ - jA), hZ, jy), parseIntValue(ig[be]), parseIntValue(ig[bf])) | |
1828 | 1828 | else { | |
1829 | - | let | |
1830 | - | let | |
1831 | - | $Tuple4( | |
1829 | + | let jD = gV(gW, gX, gY, gZ) | |
1830 | + | let jE = min([parseIntValue(ig[bf]), gY._2]) | |
1831 | + | $Tuple4(jD._1, jD._2, (parseIntValue(ig[be]) + jE), (parseIntValue(ig[bf]) - jE)) | |
1832 | 1832 | } | |
1833 | - | let | |
1834 | - | let | |
1835 | - | let | |
1836 | - | let | |
1837 | - | $Tuple5([IntegerEntry(br( | |
1833 | + | let jF = jC._1 | |
1834 | + | let jG = jC._2 | |
1835 | + | let jH = jC._3 | |
1836 | + | let jI = jC._4 | |
1837 | + | $Tuple5([IntegerEntry(br(ga._2), jB), IntegerEntry(bu(aC, ga._2, c), jB)], hL, [io[bh], jG, io[bj], io[bk]], hY, [hP[aY], jF, hP[ba], hP[bb], makeString([ig[bd], toString(jH), toString(jI), ig[bg]], "_")]) | |
1838 | 1838 | } | |
1839 | 1839 | } | |
1840 | 1840 | } | |
1841 | 1841 | } | |
1842 | 1842 | ||
1843 | 1843 | ||
1844 | - | func | |
1845 | - | let | |
1846 | - | let | |
1847 | - | let | |
1848 | - | | |
1849 | - | } | |
1850 | - | ||
1851 | - | ||
1852 | - | func | |
1853 | - | let c = toString( | |
1854 | - | let | |
1855 | - | let | |
1856 | - | let | |
1857 | - | let | |
1858 | - | if (if (!( | |
1859 | - | then ( | |
1844 | + | func jJ (c,P,ji,jn) = { | |
1845 | + | let jt = br(P) | |
1846 | + | let ju = value(getInteger(jt)) | |
1847 | + | let jz = (fraction((lastBlock.timestamp - ju), jh(P, ji), a) * ji) | |
1848 | + | jx(c, jz, jn, P) | |
1849 | + | } | |
1850 | + | ||
1851 | + | ||
1852 | + | func jK (fe,iJ,jL,P) = { | |
1853 | + | let c = toString(iJ) | |
1854 | + | let ga = jm(c, eB, P) | |
1855 | + | let ji = dH(ga._3[di]) | |
1856 | + | let jM = by(ga._2) | |
1857 | + | let jN = valueOrElse(getInteger(jM), 0) | |
1858 | + | if (if (!(cu)) | |
1859 | + | then (jN >= 3) | |
1860 | 1860 | else false) | |
1861 | 1861 | then throw("Currently max infrastructure level = 3") | |
1862 | 1862 | else { | |
1863 | - | let | |
1864 | - | let al = ( | |
1865 | - | if (if ( | |
1866 | - | then (al > | |
1863 | + | let jO = ((sqrt(ji, 0, 0, DOWN) / 5) + 2) | |
1864 | + | let al = (jN + 1) | |
1865 | + | if (if (cu) | |
1866 | + | then (al > jO) | |
1867 | 1867 | else false) | |
1868 | - | then throw(("Currently max infrastructure level = " + toString( | |
1868 | + | then throw(("Currently max infrastructure level = " + toString(jO))) | |
1869 | 1869 | else { | |
1870 | - | let | |
1871 | - | if (if (!( | |
1872 | - | then ( | |
1870 | + | let jP = fraction(ee, (ji * al), cF) | |
1871 | + | if (if (!(fe)) | |
1872 | + | then (jL != jP) | |
1873 | 1873 | else false) | |
1874 | - | then throw(("Payment attached should be " + toString( | |
1874 | + | then throw(("Payment attached should be " + toString(jP))) | |
1875 | 1875 | else { | |
1876 | - | let | |
1877 | - | let | |
1878 | - | let | |
1879 | - | let | |
1880 | - | let | |
1881 | - | let | |
1882 | - | let | |
1883 | - | let | |
1884 | - | let | |
1885 | - | let | |
1886 | - | let | |
1887 | - | let | |
1888 | - | $Tuple3(([IntegerEntry( | |
1876 | + | let hL = bI(ga._1) | |
1877 | + | let io = hK(hL) | |
1878 | + | let jQ = split(io[bj], "_") | |
1879 | + | let jR = fraction(cA, (ji * al), cF) | |
1880 | + | let jS = makeString(fd(fe, jQ, jR), "_") | |
1881 | + | let jT = jJ(c, ga._2, ji, eB) | |
1882 | + | let jU = jT._5 | |
1883 | + | let jV = hM(jU[aY]) | |
1884 | + | let jW = makeString([split(jU[aY], "_")[0], toString(al)], "_") | |
1885 | + | let jX = hM(jW) | |
1886 | + | let ig = split(jU[bc], "_") | |
1887 | + | let jY = makeString([ig[bd], ig[be], toString(((parseIntValue(ig[bf]) + jX) - jV)), toString(jX)], "_") | |
1888 | + | $Tuple3(([IntegerEntry(jM, al), IntegerEntry(eu(ga._2, c), al), StringEntry(hL, makeString([io[bh], jT._3[bi], jS, io[bk]], ":")), StringEntry(jT._4, makeString([jW, jU[aZ], jU[ba], jU[bb], jY], ":"))] ++ jT._1), al, jR) | |
1889 | 1889 | } | |
1890 | 1890 | } | |
1891 | 1891 | } | |
1892 | 1892 | } | |
1893 | 1893 | ||
1894 | 1894 | ||
1895 | - | func | |
1896 | - | let | |
1897 | - | let | |
1898 | - | let af = valueOrElse(getInteger( | |
1899 | - | let ak = (af + | |
1900 | - | let | |
1901 | - | let | |
1902 | - | $Tuple2([IntegerEntry( | |
1903 | - | } | |
1904 | - | ||
1905 | - | ||
1906 | - | func | |
1907 | - | let | |
1908 | - | let | |
1909 | - | let af = valueOrElse(getInteger( | |
1910 | - | let ak = (af + | |
1911 | - | let | |
1912 | - | let | |
1913 | - | $Tuple2([IntegerEntry( | |
1914 | - | } | |
1915 | - | ||
1916 | - | ||
1917 | - | func | |
1895 | + | func jZ (A,ka) = { | |
1896 | + | let kb = D(A) | |
1897 | + | let kc = C(A) | |
1898 | + | let af = valueOrElse(getInteger(kc), 0) | |
1899 | + | let ak = (af + ka) | |
1900 | + | let kd = ai(valueOrElse(getInteger(kb), 0), ak) | |
1901 | + | let ke = E(A) | |
1902 | + | $Tuple2([IntegerEntry(kb, kd[0]), IntegerEntry(kc, ak), IntegerEntry(ke, (valueOrElse(getInteger(ke), 0) + kd[1]))], ak) | |
1903 | + | } | |
1904 | + | ||
1905 | + | ||
1906 | + | func kf (c,ka) = { | |
1907 | + | let kb = H(c) | |
1908 | + | let kc = G(c) | |
1909 | + | let af = valueOrElse(getInteger(kc), 0) | |
1910 | + | let ak = (af + ka) | |
1911 | + | let kd = ai(valueOrElse(getInteger(kb), 0), ak) | |
1912 | + | let ke = I(c) | |
1913 | + | $Tuple2([IntegerEntry(kb, kd[0]), IntegerEntry(kc, ak), IntegerEntry(ke, (valueOrElse(getInteger(ke), 0) + kd[1]))], ak) | |
1914 | + | } | |
1915 | + | ||
1916 | + | ||
1917 | + | func kg (c) = { | |
1918 | 1918 | let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked") | |
1919 | - | let | |
1920 | - | let | |
1921 | - | if (!(isDefined( | |
1919 | + | let kh = bC(c) | |
1920 | + | let ki = getString(kh) | |
1921 | + | if (!(isDefined(ki))) | |
1922 | 1922 | then throw("You are not eligible for ONBOARD artifact") | |
1923 | 1923 | else { | |
1924 | - | let | |
1925 | - | let | |
1926 | - | if (isDefined( | |
1927 | - | then throw(("You already used your ONBOARD artifact on duck " + value( | |
1924 | + | let kj = bE(c) | |
1925 | + | let kk = getString(kj) | |
1926 | + | if (isDefined(kk)) | |
1927 | + | then throw(("You already used your ONBOARD artifact on duck " + value(kk))) | |
1928 | 1928 | else { | |
1929 | - | let | |
1930 | - | let | |
1931 | - | if (isDefined( | |
1932 | - | then throw(((("The duck " + A) + " already got points from ONBOARD artifact from user ") + value( | |
1933 | - | else ([StringEntry( | |
1929 | + | let kl = bD(A) | |
1930 | + | let km = getString(kl) | |
1931 | + | if (isDefined(km)) | |
1932 | + | then throw(((("The duck " + A) + " already got points from ONBOARD artifact from user ") + value(km))) | |
1933 | + | else ([StringEntry(kj, A), StringEntry(kl, c)] ++ jZ(A, ac)._1) | |
1934 | 1934 | } | |
1935 | 1935 | } | |
1936 | 1936 | } | |
1937 | 1937 | ||
1938 | 1938 | ||
1939 | - | func | |
1940 | - | let | |
1941 | - | let P = | |
1942 | - | let | |
1943 | - | let | |
1944 | - | if ((valueOrElse(getInteger( | |
1939 | + | func kn (c,jo) = { | |
1940 | + | let ga = jm(c, eB, jo) | |
1941 | + | let P = ga._2 | |
1942 | + | let ji = dH(ga._3[di]) | |
1943 | + | let ko = bs(aE, P) | |
1944 | + | if ((valueOrElse(getInteger(ko), 0) > 0)) | |
1945 | 1945 | then throw("Presale artifact is already activated") | |
1946 | - | else if ((parseIntValue( | |
1946 | + | else if ((parseIntValue(ga._3[dh]) > eo)) | |
1947 | 1947 | then throw((((aC + " ") + P) + " is not eligible for presale artifact")) | |
1948 | 1948 | else { | |
1949 | - | let | |
1950 | - | ((( | |
1949 | + | let jT = jJ(c, P, ji, eB) | |
1950 | + | (((jT._1 :+ IntegerEntry(ko, ji)) :+ StringEntry(jT._2, makeString(jT._3, ":"))) :+ StringEntry(jT._4, makeString(jT._5, ":"))) | |
1951 | 1951 | } | |
1952 | 1952 | } | |
1953 | 1953 | ||
1954 | 1954 | ||
1955 | - | func | |
1956 | - | let ce = valueOrElse(getInteger( | |
1957 | - | let | |
1955 | + | func kp (A) = { | |
1956 | + | let ce = valueOrElse(getInteger(df, bP), 0) | |
1957 | + | let jq = split(valueOrElse(getString(bJ(A)), aJ), "_") | |
1958 | 1958 | let ax = lastBlock.timestamp | |
1959 | - | let cg = bY( | |
1959 | + | let cg = bY(df, ce) | |
1960 | 1960 | let ca = cg[bU] | |
1961 | 1961 | let cb = cg[bV] | |
1962 | - | if (( | |
1962 | + | if ((jq[bm] != "T")) | |
1963 | 1963 | then false | |
1964 | - | else if (if (if ((parseIntValue( | |
1964 | + | else if (if (if ((parseIntValue(jq[bl]) == ce)) | |
1965 | 1965 | then (cb[bX] == "INPROGRESS") | |
1966 | 1966 | else false) | |
1967 | 1967 | then (parseIntValue(ca[bW]) > ax) | |
1968 | 1968 | else false) | |
1969 | 1969 | then throw("Your duck is taking part in the tournament") | |
1970 | - | else | |
1971 | - | } | |
1972 | - | ||
1973 | - | ||
1974 | - | func | |
1970 | + | else dD(invoke(this, "exitTournamentInternal", [A], nil)) | |
1971 | + | } | |
1972 | + | ||
1973 | + | ||
1974 | + | func kq (A) = if (!(cv)) | |
1975 | 1975 | then false | |
1976 | 1976 | else { | |
1977 | - | let | |
1977 | + | let jq = split(valueOrElse(getString(bJ(A)), aJ), "_") | |
1978 | 1978 | let ax = lastBlock.timestamp | |
1979 | - | if (( | |
1979 | + | if ((jq[bm] != "D")) | |
1980 | 1980 | then false | |
1981 | 1981 | else { | |
1982 | - | let ci = parseIntValue( | |
1983 | - | let cj = parseIntValue( | |
1982 | + | let ci = parseIntValue(jq[bl]) | |
1983 | + | let cj = parseIntValue(jq[bn]) | |
1984 | 1984 | if (if ((ax > (ci + aN))) | |
1985 | 1985 | then (3 > cj) | |
1986 | 1986 | else false) | |
1987 | 1987 | then throw("Your duck is on delivery mission") | |
1988 | - | else | |
1988 | + | else dD(invoke(this, "exitDeliveryInternal", [A], nil)) | |
1989 | 1989 | } | |
1990 | 1990 | } | |
1991 | 1991 | ||
1992 | 1992 | ||
1993 | - | func | |
1994 | - | let | |
1993 | + | func kr (A) = { | |
1994 | + | let jq = split(valueOrElse(getString(bJ(A)), aJ), "_") | |
1995 | 1995 | let ax = lastBlock.timestamp | |
1996 | - | let ci = parseIntValue( | |
1997 | - | let cj = parseIntValue( | |
1998 | - | let | |
1999 | - | let | |
2000 | - | let | |
2001 | - | let | |
1996 | + | let ci = parseIntValue(jq[bl]) | |
1997 | + | let cj = parseIntValue(jq[bn]) | |
1998 | + | let jv = valueOrErrorMessage(getString(bG(A)), "NFT duck is orphaned") | |
1999 | + | let ks = z(A) | |
2000 | + | let kt = getIntegerValue(ks) | |
2001 | + | let ku = if ((cj >= 3)) | |
2002 | 2002 | then { | |
2003 | - | let | |
2004 | - | if (( | |
2003 | + | let kv = invoke(dc, "sendDeliveryReward", [jv], nil) | |
2004 | + | if ((kv == kv)) | |
2005 | 2005 | then nil | |
2006 | 2006 | else throw("Strict value is not equal to itself.") | |
2007 | 2007 | } | |
2008 | 2008 | else if ((ax > (ci + aN))) | |
2009 | 2009 | then throw("Your duck is still on delivery mission") | |
2010 | 2010 | else { | |
2011 | - | let | |
2012 | - | let | |
2013 | - | if (( | |
2014 | - | then if ((0 >= | |
2011 | + | let kw = valueOrElse(getInteger(dc, bO), 0) | |
2012 | + | let kx = invoke(dc, "updateDeliveryLocked", [(kw - aM)], nil) | |
2013 | + | if ((kx == kx)) | |
2014 | + | then if ((0 >= kt)) | |
2015 | 2015 | then nil | |
2016 | 2016 | else [IntegerEntry(T(A), (ci + a))] | |
2017 | 2017 | else throw("Strict value is not equal to itself.") | |
2018 | 2018 | } | |
2019 | - | let | |
2020 | - | let | |
2021 | - | $Tuple4( | |
2022 | - | } | |
2023 | - | ||
2024 | - | ||
2025 | - | func | |
2019 | + | let ky = getIntegerValue(J(A)) | |
2020 | + | let kz = getStringValue(K(A)) | |
2021 | + | $Tuple4(ku, [IntegerEntry(ks, ky), StringEntry(bJ(A), kz)], kz, ky) | |
2022 | + | } | |
2023 | + | ||
2024 | + | ||
2025 | + | func kA (kB,al,kC,c,kD,kE) = { | |
2026 | 2026 | let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked") | |
2027 | - | if ( | |
2027 | + | if (kp(A)) | |
2028 | 2028 | then throw("mergeInternal_checkTournament") | |
2029 | - | else if ( | |
2029 | + | else if (kq(A)) | |
2030 | 2030 | then throw("mergeInternal_checkDelivery") | |
2031 | 2031 | else { | |
2032 | - | func | |
2033 | - | let | |
2034 | - | let | |
2035 | - | let | |
2036 | - | let | |
2037 | - | if (( | |
2032 | + | func kF (eR,P) = { | |
2033 | + | let js = value(assetInfo(fromBase58String(P))) | |
2034 | + | let jt = br(P) | |
2035 | + | let ju = valueOrErrorMessage(getInteger(jt), (("NFT " + js.name) + " is not staked")) | |
2036 | + | let jv = valueOrErrorMessage(getString(bo(P)), (("NFT " + js.name) + " is orphaned")) | |
2037 | + | if ((jv != c)) | |
2038 | 2038 | then throw((aC + " is not yours")) | |
2039 | 2039 | else { | |
2040 | - | let | |
2041 | - | let | |
2042 | - | if (if (( | |
2043 | - | then ( | |
2040 | + | let jw = split(js.description, "_") | |
2041 | + | let dt = jw[dk] | |
2042 | + | if (if ((eR._3 != "")) | |
2043 | + | then (eR._3 != dt) | |
2044 | 2044 | else false) | |
2045 | 2045 | then throw("Lands should be on the same continent to merge") | |
2046 | 2046 | else { | |
2047 | - | let | |
2048 | - | let | |
2049 | - | let | |
2050 | - | let | |
2051 | - | let | |
2052 | - | let | |
2053 | - | let | |
2054 | - | let | |
2055 | - | let | |
2056 | - | if (("S" == | |
2047 | + | let dI = jw[di] | |
2048 | + | let kG = eR._1 | |
2049 | + | let gK = valueOrErrorMessage(indexOf(kG, dI), "You haven't passed all the lands needed") | |
2050 | + | let kH = (take(kG, gK) + drop(kG, (gK + 1))) | |
2051 | + | let ji = dH(dI) | |
2052 | + | let kI = (eR._2 + valueOrElse(getInteger(bs(aE, P)), 0)) | |
2053 | + | let ia = valueOrElse(getInteger(by(P)), 0) | |
2054 | + | let kJ = { | |
2055 | + | let cy = dI | |
2056 | + | if (("S" == cy)) | |
2057 | 2057 | then 3 | |
2058 | - | else if (("M" == | |
2058 | + | else if (("M" == cy)) | |
2059 | 2059 | then 4 | |
2060 | - | else if (("L" == | |
2060 | + | else if (("L" == cy)) | |
2061 | 2061 | then 5 | |
2062 | - | else if (("XL" == | |
2062 | + | else if (("XL" == cy)) | |
2063 | 2063 | then 6 | |
2064 | 2064 | else throw("Only S, M, L, XL can merge") | |
2065 | 2065 | } | |
2066 | - | if (( | |
2066 | + | if ((ia != kJ)) | |
2067 | 2067 | then throw("All lands should be maxed to merge") | |
2068 | 2068 | else { | |
2069 | - | let | |
2070 | - | let | |
2071 | - | let | |
2072 | - | if ((0 > | |
2073 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
2069 | + | let et = jw[dh] | |
2070 | + | let gG = gM(jw[dj]) | |
2071 | + | let gQ = (lastBlock.timestamp - ju) | |
2072 | + | if ((0 > gQ)) | |
2073 | + | then throw(((("Saved timestamp is in future, saved = " + toString(ju)) + ", current = ") + toString(lastBlock.timestamp))) | |
2074 | 2074 | else { | |
2075 | - | let | |
2076 | - | let | |
2077 | - | let | |
2078 | - | let | |
2079 | - | let | |
2080 | - | let | |
2081 | - | let | |
2082 | - | let | |
2083 | - | if (!(isDefined( | |
2075 | + | let jy = jh(P, ji) | |
2076 | + | let hZ = (ji / cF) | |
2077 | + | let jG = gO(split(eR._4, "_"), gG, gQ, hZ, jy) | |
2078 | + | let fb = gE(eR._6, gG, hZ, -1) | |
2079 | + | let kK = gE(eR._10, gG, hZ, -1) | |
2080 | + | let hu = gE(eR._9, gG, hZ, 1) | |
2081 | + | let kL = eR._7 | |
2082 | + | let da = indexOf(kL, P) | |
2083 | + | if (!(isDefined(da))) | |
2084 | 2084 | then throw(("Your staked lands don't contain " + P)) | |
2085 | 2085 | else { | |
2086 | - | let | |
2087 | - | let | |
2088 | - | $Tuple10( | |
2089 | - | then [DeleteEntry( | |
2090 | - | else nil)), | |
2086 | + | let kM = bq(P) | |
2087 | + | let kN = valueOrElse(getString(kM), "") | |
2088 | + | $Tuple10(kH, kI, dt, jG, ((((((((((((eR._5 :+ DeleteEntry(br(P))) :+ DeleteEntry(bu(aC, P, c))) :+ DeleteEntry(es(et))) :+ DeleteEntry(bo(P))) :+ DeleteEntry(by(P))) :+ DeleteEntry(eu(P, c))) :+ DeleteEntry(bs(aE, P))) :+ DeleteEntry(ev(et))) :+ DeleteEntry(bx(P))) :+ DeleteEntry(kM)) :+ Burn(fromBase58String(P), 1)) ++ (if ((kN != "")) | |
2089 | + | then [DeleteEntry(eq(kN))] | |
2090 | + | else nil)), fb, removeByIndex(kL, value(da)), (eR._8 + ji), hu, kK) | |
2091 | 2091 | } | |
2092 | 2092 | } | |
2093 | 2093 | } | |
2095 | 2095 | } | |
2096 | 2096 | } | |
2097 | 2097 | ||
2098 | - | let | |
2099 | - | let | |
2100 | - | let | |
2101 | - | let | |
2102 | - | let | |
2103 | - | let | |
2104 | - | then split_51C(value( | |
2098 | + | let hL = bI(A) | |
2099 | + | let io = hK(hL) | |
2100 | + | let gF = split(valueOrElse(getString(dr()), "0_0_0_0_0_0"), "_") | |
2101 | + | let kO = du(c) | |
2102 | + | let kP = getString(kO) | |
2103 | + | let kQ = if (isDefined(kP)) | |
2104 | + | then split_51C(value(kP), "_") | |
2105 | 2105 | else nil | |
2106 | - | let | |
2107 | - | let | |
2108 | - | let | |
2109 | - | let | |
2110 | - | let | |
2111 | - | let | |
2112 | - | func | |
2113 | - | then | |
2114 | - | else | |
2115 | - | ||
2116 | - | func | |
2117 | - | then | |
2106 | + | let kR = split(value(assetInfo(fromBase58String(kD[0]))).description, "_")[dk] | |
2107 | + | let kS = split(valueOrElse(getString(ds(kR)), "0_0_0_0_0_0"), "_") | |
2108 | + | let fc = { | |
2109 | + | let eT = kD | |
2110 | + | let eU = size(eT) | |
2111 | + | let eV = $Tuple10(kC, 0, "", io[bi], nil, gF, kQ, 0, split("0_0_0_0_0_0", "_"), kS) | |
2112 | + | func eW (eX,eY) = if ((eY >= eU)) | |
2113 | + | then eX | |
2114 | + | else kF(eX, eT[eY]) | |
2115 | + | ||
2116 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
2117 | + | then eX | |
2118 | 2118 | else throw("List size exceeds 5") | |
2119 | 2119 | ||
2120 | - | | |
2120 | + | eZ(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5) | |
2121 | 2121 | } | |
2122 | - | let | |
2123 | - | let | |
2124 | - | let | |
2125 | - | let | |
2126 | - | let | |
2127 | - | let | |
2128 | - | let bp = calculateAssetId( | |
2129 | - | let | |
2130 | - | let | |
2131 | - | let | |
2132 | - | let | |
2133 | - | $Tuple2(((((((((((((((( | |
2134 | - | then StringEntry( | |
2135 | - | else DeleteEntry( | |
2122 | + | let dt = fc._3 | |
2123 | + | let ho = valueOrErrorMessage(indexOf(aP, dt), ("Unknown continent: " + dt)) | |
2124 | + | let gN = ht(fc._9, (dH(kB) / cF)) | |
2125 | + | let iM = valueOrElse(getInteger(ep()), (eo + 1)) | |
2126 | + | let kT = toString(iM) | |
2127 | + | let iN = Issue(eG(kT, kB), makeString([kT, kB, gN, dt], "_"), 1, 0, false) | |
2128 | + | let bp = calculateAssetId(iN) | |
2129 | + | let kU = toBase58String(bp) | |
2130 | + | let jS = makeString(fd((kE > 0), split(io[bj], "_"), kE), "_") | |
2131 | + | let kV = dv(c) | |
2132 | + | let kW = valueOrElse(getInteger(kV), 0) | |
2133 | + | $Tuple2((((((((((((((((fc._5 :+ (if ((size(fc._7) > 0)) | |
2134 | + | then StringEntry(kO, makeString_11C(fc._7, "_")) | |
2135 | + | else DeleteEntry(kO))) :+ IntegerEntry(kV, if ((fc._8 > kW)) | |
2136 | 2136 | then 0 | |
2137 | - | else ( | |
2137 | + | else (kW - fc._8))) :+ IntegerEntry(ep(), (iM + 1))) :+ iN) :+ StringEntry(es(kT), kU)) :+ StringEntry(bo(kU), c)) :+ StringEntry(ev(kT), c)) :+ IntegerEntry(bs(aE, kU), fc._2)) :+ IntegerEntry(by(kU), al)) :+ IntegerEntry(eu(kU, c), al)) :+ StringEntry(hL, makeString([io[bh], fc._4, jS, io[bk]], ":"))) :+ StringEntry(dr(), makeString(fc._6, "_"))) :+ StringEntry(ds(dt), makeString(fc._10, "_"))) :+ StringEntry(bJ(A), makeString([dt, "L", kU], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bp)), kU) | |
2138 | 2138 | } | |
2139 | 2139 | } | |
2140 | 2140 | ||
2141 | 2141 | ||
2142 | - | func | |
2143 | - | ||
2144 | - | ||
2145 | - | func | |
2146 | - | ||
2147 | - | ||
2148 | - | func | |
2149 | - | ||
2150 | - | ||
2151 | - | func | |
2152 | - | ||
2153 | - | ||
2154 | - | func | |
2155 | - | let | |
2156 | - | if ((4 == | |
2157 | - | then | |
2158 | - | else if ((3 == | |
2159 | - | then | |
2160 | - | else if ((5 == | |
2161 | - | then | |
2162 | - | else if ((2 == | |
2163 | - | then | |
2142 | + | func kX (c,kD) = kA("M", 3, "SSSS", c, kD, 0) | |
2143 | + | ||
2144 | + | ||
2145 | + | func kY (c,kD) = kA("L", 4, "SMM", c, kD, (cA * 4)) | |
2146 | + | ||
2147 | + | ||
2148 | + | func kZ (c,kD) = kA("XL", 5, "SSSML", c, kD, (cA * 47)) | |
2149 | + | ||
2150 | + | ||
2151 | + | func la (c,kD) = kA("XXL", 6, "LXL", c, kD, (cA * 54)) | |
2152 | + | ||
2153 | + | ||
2154 | + | func lb (c,kD) = { | |
2155 | + | let cy = size(kD) | |
2156 | + | if ((4 == cy)) | |
2157 | + | then kX(c, kD) | |
2158 | + | else if ((3 == cy)) | |
2159 | + | then kY(c, kD) | |
2160 | + | else if ((5 == cy)) | |
2161 | + | then kZ(c, kD) | |
2162 | + | else if ((2 == cy)) | |
2163 | + | then la(c, kD) | |
2164 | 2164 | else throw("Unknown merge") | |
2165 | 2165 | } | |
2166 | 2166 | ||
2167 | 2167 | ||
2168 | - | func | |
2169 | - | let | |
2170 | - | if (if ( | |
2171 | - | then isDefined( | |
2168 | + | func lc (bL) = { | |
2169 | + | let ld = getString(bH(bL)) | |
2170 | + | if (if (cv) | |
2171 | + | then isDefined(ld) | |
2172 | 2172 | else false) | |
2173 | 2173 | then { | |
2174 | - | let A = value( | |
2175 | - | let | |
2176 | - | let cf = split(valueOrElse(getString( | |
2174 | + | let A = value(ld) | |
2175 | + | let le = bJ(A) | |
2176 | + | let cf = split(valueOrElse(getString(le), aJ), "_") | |
2177 | 2177 | let ci = parseIntValue(cf[bl]) | |
2178 | 2178 | if (if ((cf[bm] != "D")) | |
2179 | 2179 | then true | |
2180 | 2180 | else (lastBlock.timestamp > (ci + aN))) | |
2181 | 2181 | then nil | |
2182 | 2182 | else { | |
2183 | - | let | |
2183 | + | let ks = z(A) | |
2184 | 2184 | if ((parseIntValue(cf[bn]) >= 3)) | |
2185 | 2185 | then { | |
2186 | - | let | |
2187 | - | if (( | |
2186 | + | let kv = invoke(dc, "sendDeliveryReward", [bL], nil) | |
2187 | + | if ((kv == kv)) | |
2188 | 2188 | then nil | |
2189 | 2189 | else throw("Strict value is not equal to itself.") | |
2190 | 2190 | } | |
2191 | 2191 | else (({ | |
2192 | - | let | |
2193 | - | let | |
2194 | - | if (( | |
2195 | - | then if ((0 >= getIntegerValue( | |
2192 | + | let kw = valueOrElse(getInteger(dc, bO), 0) | |
2193 | + | let kx = invoke(dc, "updateDeliveryLocked", [(kw - aM)], nil) | |
2194 | + | if ((kx == kx)) | |
2195 | + | then if ((0 >= getIntegerValue(ks))) | |
2196 | 2196 | then nil | |
2197 | 2197 | else { | |
2198 | - | let | |
2199 | - | if (( | |
2198 | + | let lf = invoke(this, "saveInteger", [T(A), (ci + a)], nil) | |
2199 | + | if ((lf == lf)) | |
2200 | 2200 | then nil | |
2201 | 2201 | else throw("Strict value is not equal to itself.") | |
2202 | 2202 | } | |
2203 | 2203 | else throw("Strict value is not equal to itself.") | |
2204 | - | } :+ IntegerEntry( | |
2204 | + | } :+ IntegerEntry(ks, getIntegerValue(J(A)))) :+ StringEntry(le, getStringValue(K(A)))) | |
2205 | 2205 | } | |
2206 | 2206 | } | |
2207 | 2207 | else nil | |
2208 | 2208 | } | |
2209 | 2209 | ||
2210 | 2210 | ||
2211 | - | func | |
2212 | - | then valueOrElse(getBoolean( | |
2211 | + | func lg (gK) = if (if ((gK.originCaller != db)) | |
2212 | + | then valueOrElse(getBoolean(dK()), false) | |
2213 | 2213 | else false) | |
2214 | 2214 | then throw("Contracts are under maintenance") | |
2215 | 2215 | else { | |
2216 | - | let bL = toString( | |
2217 | - | ( | |
2216 | + | let bL = toString(gK.originCaller) | |
2217 | + | (lc(bL) :+ StringEntry(dL(bL), toBase58String(gK.transactionId))) | |
2218 | 2218 | } | |
2219 | 2219 | ||
2220 | 2220 | ||
2221 | - | func | |
2222 | - | then valueOrElse(getBoolean( | |
2221 | + | func lh (gK) = if (if ((gK.originCaller != db)) | |
2222 | + | then valueOrElse(getBoolean(dK()), false) | |
2223 | 2223 | else false) | |
2224 | 2224 | then throw("Contracts are under maintenance") | |
2225 | - | else [StringEntry( | |
2226 | - | ||
2227 | - | ||
2228 | - | @Callable( | |
2229 | - | func constructorV1 ( | |
2225 | + | else [StringEntry(dL(toString(gK.originCaller)), toBase58String(gK.transactionId))] | |
2226 | + | ||
2227 | + | ||
2228 | + | @Callable(gK) | |
2229 | + | func constructorV1 (li) = if ((gK.caller != this)) | |
2230 | 2230 | then throw("Permission denied") | |
2231 | - | else [StringEntry( | |
2232 | - | ||
2233 | - | ||
2234 | - | ||
2235 | - | @Callable( | |
2236 | - | func saveInteger ( | |
2231 | + | else [StringEntry(cV(), li)] | |
2232 | + | ||
2233 | + | ||
2234 | + | ||
2235 | + | @Callable(gK) | |
2236 | + | func saveInteger (cN,eI) = if ((gK.caller != this)) | |
2237 | 2237 | then throw("saveInteger is not public method") | |
2238 | - | else [IntegerEntry( | |
2239 | - | ||
2240 | - | ||
2241 | - | ||
2242 | - | @Callable( | |
2243 | - | func setBlocked ( | |
2238 | + | else [IntegerEntry(cN, eI)] | |
2239 | + | ||
2240 | + | ||
2241 | + | ||
2242 | + | @Callable(gK) | |
2243 | + | func setBlocked (lj) = if ((gK.caller != this)) | |
2244 | 2244 | then throw("permission denied") | |
2245 | - | else [BooleanEntry( | |
2246 | - | ||
2247 | - | ||
2248 | - | ||
2249 | - | @Callable( | |
2245 | + | else [BooleanEntry(dK(), lj)] | |
2246 | + | ||
2247 | + | ||
2248 | + | ||
2249 | + | @Callable(gK) | |
2250 | 2250 | func stakeLand () = { | |
2251 | - | let | |
2252 | - | if ((size( | |
2251 | + | let lk = lg(gK) | |
2252 | + | if ((size(gK.payments) != 1)) | |
2253 | 2253 | then throw("Exactly one payment required") | |
2254 | 2254 | else { | |
2255 | - | let | |
2256 | - | let bp = value( | |
2257 | - | let | |
2258 | - | if (( | |
2255 | + | let ll = value(gK.payments[0]) | |
2256 | + | let bp = value(ll.assetId) | |
2257 | + | let cM = toString(gK.caller) | |
2258 | + | if ((ll.amount != 1)) | |
2259 | 2259 | then throw((("NFT " + aC) + " token should be attached as payment")) | |
2260 | 2260 | else { | |
2261 | - | let | |
2262 | - | if (( | |
2261 | + | let js = value(assetInfo(bp)) | |
2262 | + | if ((js.issuer != this)) | |
2263 | 2263 | then throw("Unknown issuer of token") | |
2264 | - | else if (!(contains( | |
2264 | + | else if (!(contains(js.name, aC))) | |
2265 | 2265 | then throw((("Only NFT " + aC) + " tokens are accepted")) | |
2266 | 2266 | else { | |
2267 | - | let | |
2268 | - | let | |
2269 | - | then dropRight( | |
2270 | - | else if (contains( | |
2271 | - | then dropRight( | |
2272 | - | else dropRight( | |
2273 | - | if (!(isDefined(parseInt( | |
2274 | - | then throw(("Cannot parse land number from " + | |
2267 | + | let lm = drop(js.name, 4) | |
2268 | + | let et = if (contains(lm, "XXL")) | |
2269 | + | then dropRight(lm, 3) | |
2270 | + | else if (contains(lm, "XL")) | |
2271 | + | then dropRight(lm, 2) | |
2272 | + | else dropRight(lm, 1) | |
2273 | + | if (!(isDefined(parseInt(et)))) | |
2274 | + | then throw(("Cannot parse land number from " + js.name)) | |
2275 | 2275 | else { | |
2276 | 2276 | let P = toBase58String(bp) | |
2277 | - | let | |
2278 | - | if (isDefined(getInteger( | |
2279 | - | then throw((("NFT " + | |
2277 | + | let jt = br(P) | |
2278 | + | if (isDefined(getInteger(jt))) | |
2279 | + | then throw((("NFT " + js.name) + " is already staked")) | |
2280 | 2280 | else { | |
2281 | - | let | |
2282 | - | let | |
2283 | - | let | |
2284 | - | let | |
2285 | - | let | |
2286 | - | let | |
2287 | - | let | |
2288 | - | let | |
2289 | - | let | |
2290 | - | let | |
2291 | - | let | |
2292 | - | then split_51C(value( | |
2281 | + | let jw = split(js.description, "_") | |
2282 | + | let gG = gM(jw[dj]) | |
2283 | + | let ji = dH(jw[di]) | |
2284 | + | let hZ = (ji / cF) | |
2285 | + | let fb = gL(gG, hZ, 1) | |
2286 | + | let ln = ds(jw[dk]) | |
2287 | + | let kS = split(valueOrElse(getString(ln), "0_0_0_0_0_0"), "_") | |
2288 | + | let lo = makeString(gE(kS, gG, hZ, 1), "_") | |
2289 | + | let kO = du(cM) | |
2290 | + | let kP = getString(kO) | |
2291 | + | let kL = if (isDefined(kP)) | |
2292 | + | then split_51C(value(kP), "_") | |
2293 | 2293 | else nil | |
2294 | - | if (containsElement( | |
2294 | + | if (containsElement(kL, P)) | |
2295 | 2295 | then throw(("Your staked lands already contain " + P)) | |
2296 | - | else if ((size( | |
2296 | + | else if ((size(kL) >= aG)) | |
2297 | 2297 | then throw((("Your already staked max (" + toString(aG)) + ") lands")) | |
2298 | 2298 | else { | |
2299 | - | let | |
2300 | - | let | |
2301 | - | let | |
2302 | - | let | |
2303 | - | $Tuple2(([IntegerEntry( | |
2299 | + | let ia = valueOrElse(getInteger(by(P)), 0) | |
2300 | + | let kV = dv(cM) | |
2301 | + | let lp = valueOrElse(getInteger(kV), 0) | |
2302 | + | let lq = invoke(de, "onStakeUnstakeLand", [cM], nil) | |
2303 | + | $Tuple2(([IntegerEntry(jt, lastBlock.timestamp), IntegerEntry(bu(aC, P, cM), lastBlock.timestamp), StringEntry(kO, makeString_11C((kL :+ P), "_")), IntegerEntry(kV, (lp + ji)), StringEntry(bo(P), cM), StringEntry(ev(et), cM), IntegerEntry(eu(P, cM), ia), StringEntry(dr(), fb), StringEntry(ln, lo)] ++ lk), lq) | |
2304 | 2304 | } | |
2305 | 2305 | } | |
2306 | 2306 | } | |
2311 | 2311 | ||
2312 | 2312 | ||
2313 | 2313 | ||
2314 | - | @Callable( | |
2315 | - | func unstakeLand ( | |
2316 | - | let | |
2317 | - | if ((size( | |
2314 | + | @Callable(gK) | |
2315 | + | func unstakeLand (jo) = { | |
2316 | + | let lk = lg(gK) | |
2317 | + | if ((size(gK.payments) != 0)) | |
2318 | 2318 | then throw("No payments required") | |
2319 | 2319 | else { | |
2320 | - | let c = toString( | |
2321 | - | let | |
2322 | - | let P = | |
2323 | - | let | |
2324 | - | let | |
2325 | - | let | |
2326 | - | let | |
2327 | - | let | |
2328 | - | let | |
2329 | - | let | |
2330 | - | let | |
2331 | - | let | |
2332 | - | let | |
2333 | - | let | |
2334 | - | let | |
2335 | - | if (!(isDefined( | |
2320 | + | let c = toString(gK.caller) | |
2321 | + | let ga = jm(c, eA, jo) | |
2322 | + | let P = ga._2 | |
2323 | + | let jw = ga._3 | |
2324 | + | let kO = du(c) | |
2325 | + | let gG = gM(jw[dj]) | |
2326 | + | let ji = dH(jw[di]) | |
2327 | + | let hZ = (ji / cF) | |
2328 | + | let fb = gL(gG, hZ, -1) | |
2329 | + | let ln = ds(jw[dk]) | |
2330 | + | let kS = split(valueOrElse(getString(ln), "0_0_0_0_0_0"), "_") | |
2331 | + | let lo = makeString(gE(kS, gG, hZ, -1), "_") | |
2332 | + | let jT = jJ(c, P, ji, eA) | |
2333 | + | let kL = split_51C(valueOrElse(getString(kO), ""), "_") | |
2334 | + | let da = indexOf(kL, P) | |
2335 | + | if (!(isDefined(da))) | |
2336 | 2336 | then throw(("Your staked lands don't contain " + P)) | |
2337 | 2337 | else { | |
2338 | 2338 | let ax = lastBlock.timestamp | |
2339 | - | let | |
2340 | - | if (( | |
2341 | - | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString( | |
2339 | + | let lr = valueOrElse(getInteger(dd, bK(c)), 0) | |
2340 | + | if ((lr >= ax)) | |
2341 | + | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lr))) | |
2342 | 2342 | else { | |
2343 | - | let | |
2344 | - | if (( | |
2345 | - | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString( | |
2343 | + | let ls = (valueOrElse(getInteger(de, b(c)), 0) + cB) | |
2344 | + | if ((ls > ax)) | |
2345 | + | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(ls))) | |
2346 | 2346 | else { | |
2347 | - | let | |
2348 | - | let | |
2349 | - | let | |
2347 | + | let kV = dv(c) | |
2348 | + | let kW = valueOrElse(getInteger(kV), 0) | |
2349 | + | let lt = if ((ji > kW)) | |
2350 | 2350 | then 0 | |
2351 | - | else ( | |
2352 | - | let | |
2353 | - | $Tuple2(([ScriptTransfer( | |
2354 | - | then StringEntry( | |
2355 | - | else DeleteEntry( | |
2351 | + | else (kW - ji) | |
2352 | + | let lq = invoke(de, "onStakeUnstakeLand", [c], nil) | |
2353 | + | $Tuple2(([ScriptTransfer(gK.caller, 1, fromBase58String(P)), DeleteEntry(br(P)), DeleteEntry(bu(aC, P, c)), StringEntry(dr(), fb), StringEntry(ln, lo), StringEntry(jT._2, makeString(jT._3, ":")), if ((size(kL) > 1)) | |
2354 | + | then StringEntry(kO, makeString_11C(removeByIndex(kL, value(da)), "_")) | |
2355 | + | else DeleteEntry(kO), IntegerEntry(kV, lt)] ++ lk), lq) | |
2356 | 2356 | } | |
2357 | 2357 | } | |
2358 | 2358 | } | |
2361 | 2361 | ||
2362 | 2362 | ||
2363 | 2363 | ||
2364 | - | @Callable( | |
2364 | + | @Callable(gK) | |
2365 | 2365 | func stakeDuck () = { | |
2366 | - | let | |
2367 | - | if ((size( | |
2366 | + | let lk = lg(gK) | |
2367 | + | if ((size(gK.payments) != 1)) | |
2368 | 2368 | then throw("Exactly one payment required") | |
2369 | 2369 | else { | |
2370 | - | let | |
2371 | - | let bp = value( | |
2372 | - | let | |
2373 | - | if (( | |
2370 | + | let ll = value(gK.payments[0]) | |
2371 | + | let bp = value(ll.assetId) | |
2372 | + | let cM = toString(gK.caller) | |
2373 | + | if ((ll.amount != 1)) | |
2374 | 2374 | then throw((("NFT " + aD) + " token should be attached as payment")) | |
2375 | 2375 | else { | |
2376 | - | let | |
2377 | - | if (if (( | |
2378 | - | then ( | |
2376 | + | let js = value(assetInfo(bp)) | |
2377 | + | if (if ((js.issuer != dX)) | |
2378 | + | then (js.issuer != dY) | |
2379 | 2379 | else false) | |
2380 | 2380 | then throw((("Unknown issuer of " + aD) + " token")) | |
2381 | - | else if (!(contains( | |
2381 | + | else if (!(contains(js.name, aD))) | |
2382 | 2382 | then throw((("Only NFT " + aD) + " tokens are accepted")) | |
2383 | 2383 | else { | |
2384 | - | let | |
2385 | - | let | |
2386 | - | if (isDefined(getInteger( | |
2387 | - | then throw((("NFT " + | |
2388 | - | else if (isDefined(getString(bH( | |
2389 | - | then throw(("You already staked one duck: " + | |
2384 | + | let lu = toBase58String(bp) | |
2385 | + | let jt = br(lu) | |
2386 | + | if (isDefined(getInteger(jt))) | |
2387 | + | then throw((("NFT " + js.name) + " is already staked")) | |
2388 | + | else if (isDefined(getString(bH(cM)))) | |
2389 | + | then throw(("You already staked one duck: " + js.name)) | |
2390 | 2390 | else { | |
2391 | - | let | |
2392 | - | let cd = getString( | |
2393 | - | let | |
2394 | - | let | |
2395 | - | let | |
2396 | - | let | |
2397 | - | let | |
2398 | - | ([IntegerEntry( | |
2391 | + | let le = bJ(lu) | |
2392 | + | let cd = getString(le) | |
2393 | + | let hL = bI(lu) | |
2394 | + | let lv = getString(hL) | |
2395 | + | let jb = z(lu) | |
2396 | + | let jc = ag(valueOrElse(getInteger(D(lu)), 0)) | |
2397 | + | let kt = valueOrElse(getInteger(jb), jc) | |
2398 | + | ([IntegerEntry(jt, lastBlock.timestamp), IntegerEntry(bu(aD, toBase58String(bp), cM), lastBlock.timestamp), StringEntry(bG(lu), cM), StringEntry(bH(cM), lu)] ++ (if (isDefined(cd)) | |
2399 | 2399 | then nil | |
2400 | - | else ([StringEntry( | |
2400 | + | else ([StringEntry(le, aJ)] ++ (if (isDefined(lv)) | |
2401 | 2401 | then nil | |
2402 | - | else (([StringEntry( | |
2402 | + | else (([StringEntry(hL, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jb, kt)) ++ lk))))) | |
2403 | 2403 | } | |
2404 | 2404 | } | |
2405 | 2405 | } | |
2408 | 2408 | ||
2409 | 2409 | ||
2410 | 2410 | ||
2411 | - | @Callable( | |
2412 | - | func unstakeDuck ( | |
2413 | - | let | |
2414 | - | if ((size( | |
2411 | + | @Callable(gK) | |
2412 | + | func unstakeDuck (lu) = { | |
2413 | + | let lk = lg(gK) | |
2414 | + | if ((size(gK.payments) != 0)) | |
2415 | 2415 | then throw("No payments required") | |
2416 | 2416 | else { | |
2417 | - | let bp = fromBase58String( | |
2418 | - | let | |
2419 | - | let | |
2420 | - | let | |
2421 | - | if (!(isDefined(getInteger( | |
2422 | - | then throw((("NFT " + | |
2423 | - | else if (!(isDefined(getString(bH( | |
2424 | - | then throw((("The duck " + | |
2417 | + | let bp = fromBase58String(lu) | |
2418 | + | let cM = toString(gK.caller) | |
2419 | + | let js = value(assetInfo(bp)) | |
2420 | + | let jt = br(lu) | |
2421 | + | if (!(isDefined(getInteger(jt)))) | |
2422 | + | then throw((("NFT " + js.name) + " is not staked")) | |
2423 | + | else if (!(isDefined(getString(bH(cM))))) | |
2424 | + | then throw((("The duck " + js.name) + " is not staked")) | |
2425 | 2425 | else { | |
2426 | - | let | |
2427 | - | if (( | |
2426 | + | let jv = valueOrErrorMessage(getString(bG(lu)), (("NFT " + js.name) + " is orphaned")) | |
2427 | + | if ((jv != cM)) | |
2428 | 2428 | then throw("Staked NFT is not yours") | |
2429 | - | else if ( | |
2429 | + | else if (kp(lu)) | |
2430 | 2430 | then throw("unstakeDuck_checkTournament") | |
2431 | - | else if ( | |
2431 | + | else if (kq(lu)) | |
2432 | 2432 | then throw("unstakeDuck_checkDelivery") | |
2433 | 2433 | else { | |
2434 | - | let | |
2435 | - | let | |
2436 | - | let as = valueOrElse(getInteger( | |
2437 | - | if (( | |
2438 | - | then throw((("Please heal your duck to " + toString( | |
2439 | - | else ([ScriptTransfer( | |
2434 | + | let jb = z(lu) | |
2435 | + | let jc = ag(valueOrElse(getInteger(D(lu)), 0)) | |
2436 | + | let as = valueOrElse(getInteger(jb), jc) | |
2437 | + | if ((jc > as)) | |
2438 | + | then throw((("Please heal your duck to " + toString(jc)) + "hp before unstaking")) | |
2439 | + | else ([ScriptTransfer(gK.caller, 1, bp), DeleteEntry(jt), DeleteEntry(jb), DeleteEntry(bJ(lu)), DeleteEntry(bG(lu)), DeleteEntry(bu(aD, lu, cM)), DeleteEntry(bH(cM))] ++ lk) | |
2440 | 2440 | } | |
2441 | 2441 | } | |
2442 | 2442 | } | |
2444 | 2444 | ||
2445 | 2445 | ||
2446 | 2446 | ||
2447 | - | @Callable( | |
2448 | - | func claimRes ( | |
2449 | - | let | |
2450 | - | if ((size( | |
2447 | + | @Callable(gK) | |
2448 | + | func claimRes (eI,lw) = { | |
2449 | + | let lk = lg(gK) | |
2450 | + | if ((size(gK.payments) != 0)) | |
2451 | 2451 | then throw("No payments required") | |
2452 | 2452 | else { | |
2453 | - | let c = toString( | |
2454 | - | let | |
2453 | + | let c = toString(gK.originCaller) | |
2454 | + | let fj = jx(c, eI, eA, lw) | |
2455 | 2455 | let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked") | |
2456 | - | $Tuple2((((( | |
2457 | - | } | |
2458 | - | } | |
2459 | - | ||
2460 | - | ||
2461 | - | ||
2462 | - | @Callable( | |
2463 | - | func claimResToWH ( | |
2464 | - | let | |
2465 | - | if ((size( | |
2456 | + | $Tuple2(((((fj._1 ++ jZ(A, fraction(U, eI, cE))._1) :+ StringEntry(fj._2, makeString(fj._3, ":"))) :+ StringEntry(fj._4, makeString(fj._5, ":"))) ++ lk), fj._3[bi]) | |
2457 | + | } | |
2458 | + | } | |
2459 | + | ||
2460 | + | ||
2461 | + | ||
2462 | + | @Callable(gK) | |
2463 | + | func claimResToWH (eI,lw) = { | |
2464 | + | let lk = lg(gK) | |
2465 | + | if ((size(gK.payments) != 0)) | |
2466 | 2466 | then throw("No payments required") | |
2467 | 2467 | else { | |
2468 | - | let c = toString( | |
2469 | - | let | |
2470 | - | $Tuple2((((( | |
2471 | - | } | |
2472 | - | } | |
2473 | - | ||
2474 | - | ||
2475 | - | ||
2476 | - | @Callable( | |
2477 | - | func flight ( | |
2478 | - | let | |
2479 | - | if ((size( | |
2468 | + | let c = toString(gK.originCaller) | |
2469 | + | let fj = jx(c, eI, ez, lw) | |
2470 | + | $Tuple2(((((fj._1 ++ kf(c, fraction(U, eI, cE))._1) :+ StringEntry(fj._2, makeString(fj._3, ":"))) :+ StringEntry(fj._4, makeString(fj._5, ":"))) ++ lk), fj._5[aZ]) | |
2471 | + | } | |
2472 | + | } | |
2473 | + | ||
2474 | + | ||
2475 | + | ||
2476 | + | @Callable(gK) | |
2477 | + | func flight (iQ,iR) = { | |
2478 | + | let lk = lh(gK) | |
2479 | + | if ((size(gK.payments) != 0)) | |
2480 | 2480 | then throw("No payments required") | |
2481 | 2481 | else { | |
2482 | - | let bL = toString( | |
2483 | - | let | |
2484 | - | let | |
2485 | - | let A = | |
2486 | - | let | |
2487 | - | let | |
2488 | - | let | |
2489 | - | if (( | |
2482 | + | let bL = toString(gK.caller) | |
2483 | + | let hp = iP(bL, iQ, iR) | |
2484 | + | let iV = hp._1 | |
2485 | + | let A = hp._2 | |
2486 | + | let le = bJ(A) | |
2487 | + | let jq = valueOrElse(getString(le), aJ) | |
2488 | + | let iX = hp._4 | |
2489 | + | if ((iX == jq)) | |
2490 | 2490 | then throw("You can't fly to the same location") | |
2491 | 2491 | else { | |
2492 | - | let cr = split( | |
2493 | - | let | |
2494 | - | let | |
2495 | - | let | |
2496 | - | let | |
2497 | - | let | |
2498 | - | let | |
2499 | - | let | |
2500 | - | let | |
2501 | - | then if (!(ck( | |
2502 | - | then cp( | |
2503 | - | else if (( | |
2504 | - | then $Tuple2( | |
2505 | - | else $Tuple2( | |
2506 | - | else if (cc( | |
2507 | - | then if (!(cc( | |
2492 | + | let cr = split(iX, "_") | |
2493 | + | let lx = (cr[bm] == "T") | |
2494 | + | let ly = (cr[bm] == "D") | |
2495 | + | let gx = F(A) | |
2496 | + | let lz = valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2497 | + | let lA = fk(lz, hp._5) | |
2498 | + | let lB = lA._1 | |
2499 | + | let lC = lA._2 | |
2500 | + | let lD = if (cm(df, jq)) | |
2501 | + | then if (!(ck(iX))) | |
2502 | + | then cp(jq, iX, 5) | |
2503 | + | else if ((iV > 0)) | |
2504 | + | then $Tuple2(iX, iV) | |
2505 | + | else $Tuple2(jq, 0) | |
2506 | + | else if (cc(df, jq)) | |
2507 | + | then if (!(cc(df, iX))) | |
2508 | 2508 | then throw("Your duck is taking part in the tournament") | |
2509 | 2509 | else { | |
2510 | - | let | |
2511 | - | let | |
2512 | - | let ce = valueOrElse(getInteger( | |
2513 | - | if (( | |
2514 | - | then cp( | |
2515 | - | else if (( | |
2510 | + | let lE = parseIntValue(cr[bn]) | |
2511 | + | let lF = split(jq, "_") | |
2512 | + | let ce = valueOrElse(getInteger(df, bP), 0) | |
2513 | + | if ((lE != (parseIntValue(lF[bn]) + 1))) | |
2514 | + | then cp(jq, iX, 7) | |
2515 | + | else if ((iV > 0)) | |
2516 | 2516 | then { | |
2517 | - | let | |
2518 | - | let | |
2519 | - | then invoke( | |
2517 | + | let lG = valueOrElse(getInteger(df, bT(ce, A)), 0) | |
2518 | + | let lH = if ((lE > lG)) | |
2519 | + | then invoke(df, "saveDuckResult", [A, lE], nil) | |
2520 | 2520 | else unit | |
2521 | - | if (( | |
2522 | - | then $Tuple2( | |
2521 | + | if ((lH == lH)) | |
2522 | + | then $Tuple2(iX, iV) | |
2523 | 2523 | else throw("Strict value is not equal to itself.") | |
2524 | 2524 | } | |
2525 | - | else $Tuple2( | |
2525 | + | else $Tuple2(jq, 0) | |
2526 | 2526 | } | |
2527 | - | else if (!(ch( | |
2527 | + | else if (!(ch(jq))) | |
2528 | 2528 | then { | |
2529 | - | let | |
2530 | - | if (( | |
2531 | - | then if ( | |
2532 | - | then | |
2533 | - | else if (( | |
2534 | - | then $Tuple2( | |
2535 | - | else $Tuple2( | |
2529 | + | let lI = dE(invoke(this, "autoExitDelivery", [A], nil)) | |
2530 | + | if ((lI == lI)) | |
2531 | + | then if (ly) | |
2532 | + | then lI | |
2533 | + | else if ((iV > 0)) | |
2534 | + | then $Tuple2(iX, iV) | |
2535 | + | else $Tuple2(lI._1, 0) | |
2536 | 2536 | else throw("Strict value is not equal to itself.") | |
2537 | 2537 | } | |
2538 | - | else if (!( | |
2538 | + | else if (!(ly)) | |
2539 | 2539 | then throw("Your duck is taking part in delivery") | |
2540 | - | else if (!(ch( | |
2541 | - | then cp( | |
2540 | + | else if (!(ch(iX))) | |
2541 | + | then cp(jq, iX, 13) | |
2542 | 2542 | else { | |
2543 | - | let | |
2544 | - | let | |
2545 | - | if (( | |
2546 | - | then cp( | |
2547 | - | else if (if (( | |
2548 | - | then (3 > | |
2543 | + | let lE = parseIntValue(cr[bn]) | |
2544 | + | let lF = split(jq, "_") | |
2545 | + | if ((lE != (parseIntValue(lF[bn]) + 1))) | |
2546 | + | then cp(jq, iX, 14) | |
2547 | + | else if (if ((iV > 0)) | |
2548 | + | then (3 > lE) | |
2549 | 2549 | else false) | |
2550 | - | then $Tuple2( | |
2550 | + | then $Tuple2(iX, iV) | |
2551 | 2551 | else { | |
2552 | - | let | |
2553 | - | if (( | |
2554 | - | then | |
2552 | + | let lI = dE(invoke(this, "autoExitDelivery", [A], nil)) | |
2553 | + | if ((lI == lI)) | |
2554 | + | then lI | |
2555 | 2555 | else throw("Strict value is not equal to itself.") | |
2556 | 2556 | } | |
2557 | 2557 | } | |
2558 | - | let | |
2559 | - | let | |
2560 | - | $Tuple2(((([StringEntry( | |
2558 | + | let lJ = lD._1 | |
2559 | + | let lK = lD._2 | |
2560 | + | $Tuple2(((([StringEntry(le, lJ), StringEntry(gx, lB), IntegerEntry(z(A), iV)] ++ lk) ++ (if (lC) | |
2561 | 2561 | then [StringEntry(L(A), "0_0_0_0_0")] | |
2562 | - | else nil)) ++ | |
2562 | + | else nil)) ++ jZ(A, if ((iV > 0)) | |
2563 | 2563 | then V | |
2564 | - | else W)._1), | |
2564 | + | else W)._1), hp._3) | |
2565 | 2565 | } | |
2566 | 2566 | } | |
2567 | 2567 | } | |
2568 | 2568 | ||
2569 | 2569 | ||
2570 | 2570 | ||
2571 | - | @Callable(gJ) | |
2572 | - | func heal (lK,lL,lM) = { | |
2573 | - | let lj = lf(gJ) | |
2574 | - | if (if (if ((0 > lK)) | |
2575 | - | then true | |
2576 | - | else (0 > lL)) | |
2571 | + | @Callable(gK) | |
2572 | + | func heal (lL,lM,lN) = { | |
2573 | + | let lk = lg(gK) | |
2574 | + | if (if (if ((0 > lL)) | |
2577 | 2575 | then true | |
2578 | 2576 | else (0 > lM)) | |
2577 | + | then true | |
2578 | + | else (0 > lN)) | |
2579 | 2579 | then throw("Quantity cannot be negative") | |
2580 | 2580 | else { | |
2581 | - | let A = valueOrErrorMessage(getString(bH(toString( | |
2582 | - | if ( | |
2581 | + | let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked") | |
2582 | + | if (kp(A)) | |
2583 | 2583 | then throw("heal_checkTournament") | |
2584 | - | else if ( | |
2584 | + | else if (kq(A)) | |
2585 | 2585 | then throw("heal_checkDelivery") | |
2586 | 2586 | else { | |
2587 | - | let | |
2588 | - | let | |
2589 | - | let | |
2590 | - | let | |
2591 | - | if (( | |
2592 | - | then throw((("HP should be < " + toString( | |
2587 | + | let lO = [lL, lM, lN] | |
2588 | + | let jb = z(A) | |
2589 | + | let jc = ag(valueOrElse(getInteger(D(A)), 0)) | |
2590 | + | let lP = valueOrElse(getInteger(jb), jc) | |
2591 | + | if ((lP >= jc)) | |
2592 | + | then throw((("HP should be < " + toString(jc)) + " to heal")) | |
2593 | 2593 | else { | |
2594 | - | let | |
2595 | - | let | |
2596 | - | let | |
2594 | + | let hL = bI(A) | |
2595 | + | let io = hK(hL) | |
2596 | + | let lQ = if ((io[bk] == "")) | |
2597 | 2597 | then nil | |
2598 | - | else split_4C( | |
2599 | - | func | |
2600 | - | let | |
2601 | - | let | |
2602 | - | then parseIntValue( | |
2598 | + | else split_4C(io[bk], "_") | |
2599 | + | func lR (eR,co) = { | |
2600 | + | let dA = eR._2 | |
2601 | + | let hg = if ((size(lQ) > dA)) | |
2602 | + | then parseIntValue(lQ[dA]) | |
2603 | 2603 | else 0 | |
2604 | - | if ((3 > | |
2604 | + | if ((3 > dA)) | |
2605 | 2605 | then { | |
2606 | - | let | |
2607 | - | if (( | |
2608 | - | then throw(((("You have only " + toString( | |
2609 | - | else $Tuple3(( | |
2606 | + | let lS = lO[dA] | |
2607 | + | if ((lS > hg)) | |
2608 | + | then throw(((("You have only " + toString(hg)) + " of ") + aO[dA])) | |
2609 | + | else $Tuple3((eR._1 :+ toString((hg - lS))), (dA + 1), (eR._3 + (parseIntValue(split(co, "_")[aU]) * lS))) | |
2610 | 2610 | } | |
2611 | - | else $Tuple3(( | |
2611 | + | else $Tuple3((eR._1 :+ toString(hg)), (dA + 1), eR._3) | |
2612 | 2612 | } | |
2613 | 2613 | ||
2614 | - | let | |
2615 | - | let | |
2616 | - | let | |
2617 | - | let | |
2618 | - | func | |
2619 | - | then | |
2620 | - | else | |
2621 | - | ||
2622 | - | func | |
2623 | - | then | |
2614 | + | let fj = { | |
2615 | + | let eT = aS | |
2616 | + | let eU = size(eT) | |
2617 | + | let eV = $Tuple3(nil, 0, 0) | |
2618 | + | func eW (eX,eY) = if ((eY >= eU)) | |
2619 | + | then eX | |
2620 | + | else lR(eX, eT[eY]) | |
2621 | + | ||
2622 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
2623 | + | then eX | |
2624 | 2624 | else throw("List size exceeds 50") | |
2625 | 2625 | ||
2626 | - | | |
2626 | + | eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 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) | |
2627 | 2627 | } | |
2628 | - | let | |
2629 | - | $Tuple2((([IntegerEntry( | |
2628 | + | let lT = min([jc, (lP + fj._3)]) | |
2629 | + | $Tuple2((([IntegerEntry(jb, lT), StringEntry(hL, makeString_2C([io[bh], io[bi], io[bj], makeString(fj._1, "_")], ":"))] ++ lk) ++ jZ(A, (ad * ((lL + lM) + lN)))._1), lT) | |
2630 | 2630 | } | |
2631 | 2631 | } | |
2632 | 2632 | } | |
2634 | 2634 | ||
2635 | 2635 | ||
2636 | 2636 | ||
2637 | - | @Callable( | |
2637 | + | @Callable(gK) | |
2638 | 2638 | func healES () = { | |
2639 | - | let | |
2640 | - | if ((size( | |
2639 | + | let lk = lg(gK) | |
2640 | + | if ((size(gK.payments) != 1)) | |
2641 | 2641 | then throw("Exactly one payment required") | |
2642 | 2642 | else { | |
2643 | - | let | |
2644 | - | if (( | |
2643 | + | let ll = value(gK.payments[0]) | |
2644 | + | if ((ll.assetId != cx)) | |
2645 | 2645 | then throw("Allowed USDT payment only!") | |
2646 | 2646 | else { | |
2647 | - | let A = valueOrErrorMessage(getString(bH(toString( | |
2648 | - | if ( | |
2647 | + | let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked") | |
2648 | + | if (kp(A)) | |
2649 | 2649 | then throw("healES_checkTournament") | |
2650 | - | else if ( | |
2650 | + | else if (kq(A)) | |
2651 | 2651 | then throw("healES_checkDelivery") | |
2652 | 2652 | else { | |
2653 | - | let | |
2654 | - | let | |
2655 | - | let | |
2656 | - | if (( | |
2653 | + | let jb = z(A) | |
2654 | + | let jc = ag(valueOrElse(getInteger(D(A)), 0)) | |
2655 | + | let lP = valueOrElse(getInteger(jb), jc) | |
2656 | + | if ((lP > 0)) | |
2657 | 2657 | then throw("HP should be 0 to call Emergency Service") | |
2658 | 2658 | else { | |
2659 | - | let | |
2660 | - | let | |
2661 | - | let | |
2659 | + | let hL = bI(A) | |
2660 | + | let io = hK(hL) | |
2661 | + | let lQ = if ((io[bk] == "")) | |
2662 | 2662 | then nil | |
2663 | - | else split_4C( | |
2664 | - | let | |
2665 | - | then parseIntValue( | |
2663 | + | else split_4C(io[bk], "_") | |
2664 | + | let lU = if ((size(lQ) > 0)) | |
2665 | + | then parseIntValue(lQ[0]) | |
2666 | 2666 | else 0 | |
2667 | - | let | |
2668 | - | then parseIntValue( | |
2667 | + | let lV = if ((size(lQ) > 1)) | |
2668 | + | then parseIntValue(lQ[1]) | |
2669 | 2669 | else 0 | |
2670 | - | let | |
2671 | - | then parseIntValue( | |
2670 | + | let lW = if ((size(lQ) > 2)) | |
2671 | + | then parseIntValue(lQ[2]) | |
2672 | 2672 | else 0 | |
2673 | - | if (if (if ((lT > 0)) | |
2674 | - | then true | |
2675 | - | else (lU > 0)) | |
2673 | + | if (if (if ((lU > 0)) | |
2676 | 2674 | then true | |
2677 | 2675 | else (lV > 0)) | |
2676 | + | then true | |
2677 | + | else (lW > 0)) | |
2678 | 2678 | then throw("You have to use own Medical Kit") | |
2679 | 2679 | else { | |
2680 | - | let | |
2681 | - | let | |
2682 | - | then split_4C(value( | |
2680 | + | let lX = getString(dc, bM()) | |
2681 | + | let lY = if (isDefined(lX)) | |
2682 | + | then split_4C(value(lX), "_") | |
2683 | 2683 | else nil | |
2684 | - | let | |
2685 | - | then parseIntValue( | |
2684 | + | let lZ = if ((size(lY) > 0)) | |
2685 | + | then parseIntValue(lY[0]) | |
2686 | 2686 | else 0 | |
2687 | - | if ((0 >= | |
2687 | + | if ((0 >= lZ)) | |
2688 | 2688 | then throw("There are no Medical Kits L1 at Emergency Service storage") | |
2689 | 2689 | else { | |
2690 | - | let | |
2691 | - | let | |
2690 | + | let lT = (lP + parseIntValue(split(aS[0], "_")[aU])) | |
2691 | + | let ma = makeString([toString((lZ - 1)), removeByIndex(lY, 0)], "_") | |
2692 | 2692 | let co = split(aS[0], "_") | |
2693 | - | let | |
2694 | - | let | |
2695 | - | if (( | |
2696 | - | then throw(("Payment attached should be " + toString( | |
2693 | + | let mb = cn(co) | |
2694 | + | let mc = fraction((mb * aL), aK, (cE * aX)) | |
2695 | + | if ((ll.amount != mc)) | |
2696 | + | then throw(("Payment attached should be " + toString(mc))) | |
2697 | 2697 | else { | |
2698 | - | let | |
2699 | - | $Tuple2((( | |
2698 | + | let fj = dw(invoke(dc, "updateEsStorage", [ma], [AttachedPayment(cx, mc)])) | |
2699 | + | $Tuple2(((lk :+ IntegerEntry(jb, lT)) ++ jZ(A, X)._1), fj) | |
2700 | 2700 | } | |
2701 | 2701 | } | |
2702 | 2702 | } | |
2708 | 2708 | ||
2709 | 2709 | ||
2710 | 2710 | ||
2711 | - | @Callable( | |
2712 | - | func updateBackpack (A, | |
2711 | + | @Callable(gK) | |
2712 | + | func updateBackpack (A,md) = if ((gK.caller != dc)) | |
2713 | 2713 | then throw("permission denied") | |
2714 | - | else $Tuple2([StringEntry(bI(A), | |
2715 | - | ||
2716 | - | ||
2717 | - | ||
2718 | - | @Callable( | |
2714 | + | else $Tuple2([StringEntry(bI(A), md)], md) | |
2715 | + | ||
2716 | + | ||
2717 | + | ||
2718 | + | @Callable(gK) | |
2719 | 2719 | func commitForRandom () = { | |
2720 | - | let | |
2721 | - | let | |
2722 | - | let c = toString( | |
2723 | - | $Tuple2(([IntegerEntry( | |
2724 | - | } | |
2725 | - | ||
2726 | - | ||
2727 | - | ||
2728 | - | @Callable( | |
2720 | + | let lk = lg(gK) | |
2721 | + | let me = (height + dp) | |
2722 | + | let c = toString(gK.caller) | |
2723 | + | $Tuple2(([IntegerEntry(dq(c), me)] ++ lk), me) | |
2724 | + | } | |
2725 | + | ||
2726 | + | ||
2727 | + | ||
2728 | + | @Callable(gK) | |
2729 | 2729 | func buySLand () = { | |
2730 | - | let | |
2731 | - | if ((size( | |
2730 | + | let lk = lg(gK) | |
2731 | + | if ((size(gK.payments) != 1)) | |
2732 | 2732 | then throw("Exactly one payment required") | |
2733 | 2733 | else { | |
2734 | - | let | |
2735 | - | if (( | |
2734 | + | let ll = value(gK.payments[0]) | |
2735 | + | if ((ll.assetId != cx)) | |
2736 | 2736 | then throw("Allowed USDT payment only!") | |
2737 | - | else if (( | |
2738 | - | then throw(("Payment attached should be " + toString( | |
2737 | + | else if ((ll.amount != eg)) | |
2738 | + | then throw(("Payment attached should be " + toString(eg))) | |
2739 | 2739 | else { | |
2740 | - | let | |
2741 | - | let | |
2742 | - | $Tuple2(((( | |
2740 | + | let fj = iI(gK.caller, gK.transactionId) | |
2741 | + | let mf = dz(invoke(dg, "burnAcres", [eh], nil)) | |
2742 | + | $Tuple2((((fj._1 :+ ScriptTransfer(dc, ll.amount, cx)) ++ kf(toString(gK.caller), Z)._1) ++ lk), $Tuple2(fj._2._1, mf)) | |
2743 | 2743 | } | |
2744 | 2744 | } | |
2745 | 2745 | } | |
2746 | 2746 | ||
2747 | 2747 | ||
2748 | 2748 | ||
2749 | - | @Callable( | |
2750 | - | func expedition ( | |
2751 | - | let | |
2752 | - | if ((size( | |
2749 | + | @Callable(gK) | |
2750 | + | func expedition (iQ,iR) = { | |
2751 | + | let lk = lg(gK) | |
2752 | + | if ((size(gK.payments) != 0)) | |
2753 | 2753 | then throw("No payments required") | |
2754 | 2754 | else { | |
2755 | - | let bL = toString( | |
2756 | - | let | |
2757 | - | let A = | |
2758 | - | let | |
2759 | - | let | |
2760 | - | let | |
2761 | - | let | |
2762 | - | let | |
2763 | - | let | |
2764 | - | let | |
2765 | - | let | |
2766 | - | let | |
2767 | - | let | |
2768 | - | let | |
2769 | - | let | |
2770 | - | let | |
2771 | - | then $Tuple3([IntegerEntry( | |
2772 | - | else $Tuple3(( | |
2755 | + | let bL = toString(gK.caller) | |
2756 | + | let hp = iP(bL, iQ, iR) | |
2757 | + | let A = hp._2 | |
2758 | + | let jb = z(A) | |
2759 | + | let hL = bI(A) | |
2760 | + | let io = hK(hL) | |
2761 | + | let jQ = split(io[bj], "_") | |
2762 | + | let jS = makeString(fd(true, jQ, ef), "_") | |
2763 | + | let gx = F(A) | |
2764 | + | let lz = valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2765 | + | let mg = fk(lz, hp._5) | |
2766 | + | let lB = mg._1 | |
2767 | + | let lC = mg._2 | |
2768 | + | let mh = iI(gK.caller, gK.transactionId) | |
2769 | + | let iO = mh._2._1 | |
2770 | + | let fj = if ((0 >= hp._1)) | |
2771 | + | then $Tuple3([IntegerEntry(jb, 0), StringEntry(gx, lB)], "", 0) | |
2772 | + | else $Tuple3((mh._1 ++ (if (lC) | |
2773 | 2773 | then [StringEntry(L(A), "0_0_0_0_0")] | |
2774 | - | else ((((nil :+ StringEntry(bJ(A), makeString([ | |
2775 | - | if ( | |
2774 | + | else ((((nil :+ StringEntry(bJ(A), makeString([mh._2._2, "L", iO], "_"))) :+ IntegerEntry(jb, hp._1)) :+ StringEntry(gx, lB)) :+ StringEntry(hL, makeString([io[bh], io[bi], jS, io[bk]], ":"))))), iO, hp._3) | |
2775 | + | if (kp(A)) | |
2776 | 2776 | then throw("expedition_checkTournament") | |
2777 | - | else if ( | |
2777 | + | else if (kq(A)) | |
2778 | 2778 | then throw("expedition_checkDelivery") | |
2779 | 2779 | else { | |
2780 | - | let | |
2781 | - | $Tuple2((( | |
2780 | + | let mf = dz(invoke(dg, "burnAcres", [eh], nil)) | |
2781 | + | $Tuple2(((fj._1 ++ jZ(A, Z)._1) ++ lk), $Tuple3(fj._2, fj._3, mf)) | |
2782 | 2782 | } | |
2783 | 2783 | } | |
2784 | 2784 | } | |
2785 | 2785 | ||
2786 | 2786 | ||
2787 | 2787 | ||
2788 | - | @Callable( | |
2788 | + | @Callable(gK) | |
2789 | 2789 | func buySLandForAcres () = { | |
2790 | - | let | |
2791 | - | if ((size( | |
2790 | + | let lk = lg(gK) | |
2791 | + | if ((size(gK.payments) != 1)) | |
2792 | 2792 | then throw("exactly 1 payment must be attached") | |
2793 | 2793 | else { | |
2794 | - | let | |
2795 | - | let | |
2796 | - | if (if (!(isDefined( | |
2794 | + | let ll = gK.payments[0] | |
2795 | + | let fq = ll.amount | |
2796 | + | if (if (!(isDefined(ll.assetId))) | |
2797 | 2797 | then true | |
2798 | - | else (value( | |
2798 | + | else (value(ll.assetId) != do)) | |
2799 | 2799 | then throw("ACRES payments only!") | |
2800 | - | else if (( | |
2801 | - | then throw(("Payment attached should be " + toString( | |
2800 | + | else if ((fq != eh)) | |
2801 | + | then throw(("Payment attached should be " + toString(eh))) | |
2802 | 2802 | else { | |
2803 | - | let | |
2804 | - | let | |
2805 | - | $Tuple2((( | |
2803 | + | let fj = iI(gK.caller, gK.transactionId) | |
2804 | + | let mf = dz(invoke(dg, "burnAcres", [eh], [AttachedPayment(do, fq)])) | |
2805 | + | $Tuple2(((fj._1 ++ kf(toString(gK.caller), Z)._1) ++ lk), $Tuple2(fj._2._1, mf)) | |
2806 | 2806 | } | |
2807 | 2807 | } | |
2808 | 2808 | } | |
2809 | 2809 | ||
2810 | 2810 | ||
2811 | 2811 | ||
2812 | - | @Callable( | |
2812 | + | @Callable(gK) | |
2813 | 2813 | func upgradeInfra (P) = { | |
2814 | - | let | |
2815 | - | if ((size( | |
2814 | + | let lk = lg(gK) | |
2815 | + | if ((size(gK.payments) != 0)) | |
2816 | 2816 | then throw("No payments required") | |
2817 | 2817 | else { | |
2818 | - | let | |
2819 | - | let A = valueOrErrorMessage(getString(bH(toString( | |
2820 | - | $Tuple2((( | |
2821 | - | } | |
2822 | - | } | |
2823 | - | ||
2824 | - | ||
2825 | - | ||
2826 | - | @Callable( | |
2827 | - | func activateArtifact ( | |
2828 | - | let | |
2829 | - | if ((size( | |
2818 | + | let fj = jK(true, gK.caller, 0, P) | |
2819 | + | let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked") | |
2820 | + | $Tuple2(((fj._1 ++ lk) ++ jZ(A, fraction(aa, fj._3, cE))._1), fj._2) | |
2821 | + | } | |
2822 | + | } | |
2823 | + | ||
2824 | + | ||
2825 | + | ||
2826 | + | @Callable(gK) | |
2827 | + | func activateArtifact (mi,mj) = { | |
2828 | + | let lk = lg(gK) | |
2829 | + | if ((size(gK.payments) != 0)) | |
2830 | 2830 | then throw("No payments required") | |
2831 | 2831 | else { | |
2832 | - | let c = toString( | |
2833 | - | let | |
2834 | - | let | |
2835 | - | if (("PRESALE" == | |
2836 | - | then | |
2837 | - | else if (("ONBOARD" == | |
2838 | - | then | |
2832 | + | let c = toString(gK.caller) | |
2833 | + | let fj = { | |
2834 | + | let cy = mi | |
2835 | + | if (("PRESALE" == cy)) | |
2836 | + | then kn(c, mj) | |
2837 | + | else if (("ONBOARD" == cy)) | |
2838 | + | then kg(c) | |
2839 | 2839 | else throw("Unknown artifact") | |
2840 | 2840 | } | |
2841 | - | ( | |
2842 | - | } | |
2843 | - | } | |
2844 | - | ||
2845 | - | ||
2846 | - | ||
2847 | - | @Callable( | |
2848 | - | func mergeLands ( | |
2849 | - | let | |
2850 | - | if ((size( | |
2841 | + | (fj ++ lk) | |
2842 | + | } | |
2843 | + | } | |
2844 | + | ||
2845 | + | ||
2846 | + | ||
2847 | + | @Callable(gK) | |
2848 | + | func mergeLands (kD) = { | |
2849 | + | let lk = lg(gK) | |
2850 | + | if ((size(gK.payments) != 0)) | |
2851 | 2851 | then throw("No payments required") | |
2852 | 2852 | else { | |
2853 | - | let | |
2854 | - | $Tuple2((( | |
2855 | - | } | |
2856 | - | } | |
2857 | - | ||
2858 | - | ||
2859 | - | ||
2860 | - | @Callable( | |
2861 | - | func cargoExchange ( | |
2862 | - | let | |
2863 | - | if ((size( | |
2853 | + | let fj = lb(toString(gK.caller), kD) | |
2854 | + | $Tuple2(((fj._1 ++ lk) ++ kf(toString(gK.caller), ab)._1), fj._2) | |
2855 | + | } | |
2856 | + | } | |
2857 | + | ||
2858 | + | ||
2859 | + | ||
2860 | + | @Callable(gK) | |
2861 | + | func cargoExchange (mk,P) = { | |
2862 | + | let lk = lg(gK) | |
2863 | + | if ((size(gK.payments) != 0)) | |
2864 | 2864 | then throw("No payments required") | |
2865 | 2865 | else { | |
2866 | - | let | |
2867 | - | let c = toString( | |
2868 | - | let | |
2869 | - | let | |
2870 | - | if (!(isDefined(getInteger( | |
2871 | - | then throw(( | |
2866 | + | let in = split_4C(mk, ":") | |
2867 | + | let c = toString(gK.originCaller) | |
2868 | + | let js = value(assetInfo(fromBase58String(P))) | |
2869 | + | let jt = br(P) | |
2870 | + | if (!(isDefined(getInteger(jt)))) | |
2871 | + | then throw((js.name + " is not staked")) | |
2872 | 2872 | else { | |
2873 | - | let | |
2874 | - | if (( | |
2873 | + | let jv = valueOrErrorMessage(getString(bo(P)), (("NFT " + js.name) + " is orphaned")) | |
2874 | + | if ((jv != c)) | |
2875 | 2875 | then throw((aC + " is not yours")) | |
2876 | 2876 | else { | |
2877 | - | let | |
2878 | - | let | |
2877 | + | let hZ = (dH(split(js.description, "_")[di]) / cF) | |
2878 | + | let ia = valueOrElse(getInteger(by(P)), 0) | |
2879 | 2879 | let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked") | |
2880 | - | let | |
2881 | - | let cf = split(value( | |
2880 | + | let jq = valueOrElse(getString(bJ(A)), aJ) | |
2881 | + | let cf = split(value(jq), "_") | |
2882 | 2882 | if ((cf[bm] != "L")) | |
2883 | 2883 | then throw((("Duck location type is " + cf[bm]) + ", but should be L")) | |
2884 | 2884 | else if ((cf[bn] != P)) | |
2885 | 2885 | then throw(("Duck should be on the land " + P)) | |
2886 | 2886 | else { | |
2887 | - | let | |
2888 | - | let | |
2889 | - | let | |
2890 | - | let | |
2891 | - | let | |
2892 | - | let | |
2893 | - | let | |
2894 | - | let | |
2895 | - | ([StringEntry( | |
2887 | + | let hY = bx(P) | |
2888 | + | let hP = hX(hY, hZ, ia) | |
2889 | + | let hL = bI(A) | |
2890 | + | let io = hK(hL) | |
2891 | + | let fj = im(in, hP, io) | |
2892 | + | let ig = split(hP[bc], "_") | |
2893 | + | let jH = (parseIntValue(ig[be]) + fj._7) | |
2894 | + | let jI = (parseIntValue(ig[bf]) - fj._7) | |
2895 | + | ([StringEntry(hL, makeString_2C([io[bh], fj._4, fj._5, fj._6], ":")), StringEntry(hY, makeString_2C([hP[aY], fj._1, fj._2, fj._3, makeString([ig[bd], toString(jH), toString(jI), ig[bg]], "_")], ":"))] ++ lk) | |
2896 | 2896 | } | |
2897 | 2897 | } | |
2898 | 2898 | } | |
2901 | 2901 | ||
2902 | 2902 | ||
2903 | 2903 | ||
2904 | - | @Callable( | |
2905 | - | func saveWarehouse ( | |
2904 | + | @Callable(gK) | |
2905 | + | func saveWarehouse (ic,P) = if ((gK.caller != dc)) | |
2906 | 2906 | then throw("Access denied") | |
2907 | 2907 | else { | |
2908 | - | let | |
2909 | - | let | |
2910 | - | if ((size( | |
2908 | + | let hY = bx(P) | |
2909 | + | let id = split_4C(ic, ":") | |
2910 | + | if ((size(id) != 5)) | |
2911 | 2911 | then throw("warehouse string should contain 4 ':' separators") | |
2912 | 2912 | else { | |
2913 | - | let | |
2914 | - | let | |
2915 | - | let | |
2916 | - | let | |
2917 | - | let | |
2918 | - | $Tuple2([StringEntry( | |
2913 | + | let ml = split(id[bc], "_")[bd] | |
2914 | + | let jH = hO(id) | |
2915 | + | let mm = hM(id[aY]) | |
2916 | + | let jI = ((mm - parseIntValue(ml)) - jH) | |
2917 | + | let mn = makeString_2C([id[aY], id[aZ], id[ba], id[bb], makeString([ml, toString(jH), toString(jI), toString(mm)], "_")], ":") | |
2918 | + | $Tuple2([StringEntry(hY, mn)], mn) | |
2919 | 2919 | } | |
2920 | 2920 | } | |
2921 | 2921 | ||
2922 | 2922 | ||
2923 | 2923 | ||
2924 | - | @Callable( | |
2925 | - | func fixWarehouseFormat (P) = if (( | |
2924 | + | @Callable(gK) | |
2925 | + | func fixWarehouseFormat (P) = if ((gK.caller != db)) | |
2926 | 2926 | then throw("Access denied") | |
2927 | 2927 | else { | |
2928 | - | let | |
2929 | - | let | |
2930 | - | let | |
2931 | - | let | |
2932 | - | let | |
2933 | - | let | |
2934 | - | let | |
2935 | - | let | |
2936 | - | let | |
2937 | - | let | |
2938 | - | $Tuple2([StringEntry( | |
2928 | + | let hY = bx(P) | |
2929 | + | let js = value(assetInfo(fromBase58String(P))) | |
2930 | + | let hZ = (dH(split(js.description, "_")[di]) / cF) | |
2931 | + | let ia = valueOrElse(getInteger(by(P)), 0) | |
2932 | + | let id = hX(hY, hZ, ia) | |
2933 | + | let ml = dz(invoke(dc, "recalcLockedVolumeREADONLY", [P, id], nil)) | |
2934 | + | let jH = hO(id) | |
2935 | + | let mm = hM(id[aY]) | |
2936 | + | let jI = ((mm - ml) - jH) | |
2937 | + | let mn = makeString_2C([id[aY], id[aZ], id[ba], id[bb], makeString([toString(ml), toString(jH), toString(jI), toString(mm)], "_")], ":") | |
2938 | + | $Tuple2([StringEntry(hY, mn)], mn) | |
2939 | 2939 | } | |
2940 | 2940 | ||
2941 | 2941 | ||
2942 | 2942 | ||
2943 | - | @Callable( | |
2944 | - | func fixContinentProportions ( | |
2943 | + | @Callable(gK) | |
2944 | + | func fixContinentProportions (kD) = if ((gK.caller != db)) | |
2945 | 2945 | then throw("Access denied") | |
2946 | 2946 | else { | |
2947 | - | func | |
2948 | - | ||
2949 | - | let | |
2950 | - | let | |
2951 | - | let | |
2952 | - | let | |
2953 | - | func | |
2954 | - | then | |
2955 | - | else | |
2956 | - | ||
2957 | - | func | |
2958 | - | then | |
2947 | + | func mo (eR,mp) = (eR :+ valueOrElse(getString(ds(mp)), "0_0_0_0_0_0")) | |
2948 | + | ||
2949 | + | let gu = { | |
2950 | + | let eT = aP | |
2951 | + | let eU = size(eT) | |
2952 | + | let eV = nil | |
2953 | + | func eW (eX,eY) = if ((eY >= eU)) | |
2954 | + | then eX | |
2955 | + | else mo(eX, eT[eY]) | |
2956 | + | ||
2957 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
2958 | + | then eX | |
2959 | 2959 | else throw("List size exceeds 5") | |
2960 | 2960 | ||
2961 | - | | |
2962 | - | } | |
2963 | - | func | |
2964 | - | let | |
2965 | - | let | |
2966 | - | let | |
2967 | - | let | |
2968 | - | let | |
2969 | - | let | |
2970 | - | let | |
2971 | - | let | |
2972 | - | let | |
2973 | - | if (("Americas" == | |
2974 | - | then [ | |
2975 | - | else if (("Europe" == | |
2976 | - | then [ | |
2977 | - | else if (("Asia" == | |
2978 | - | then [ | |
2979 | - | else if (("Africa" == | |
2980 | - | then [ | |
2981 | - | else if (("Oceania" == | |
2982 | - | then [ | |
2961 | + | eZ(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5) | |
2962 | + | } | |
2963 | + | func mq (eR,P) = { | |
2964 | + | let js = value(assetInfo(fromBase58String(P))) | |
2965 | + | let jw = split(js.description, "_") | |
2966 | + | let hZ = (dH(jw[di]) / cF) | |
2967 | + | let mp = jw[dk] | |
2968 | + | let gG = gM(jw[dj]) | |
2969 | + | let ho = value(indexOf(aP, mp)) | |
2970 | + | let kS = split(eR[ho], "_") | |
2971 | + | let mr = makeString(gE(kS, gG, hZ, 1), "_") | |
2972 | + | let cy = mp | |
2973 | + | if (("Americas" == cy)) | |
2974 | + | then [mr, eR[1], eR[2], eR[3], eR[4]] | |
2975 | + | else if (("Europe" == cy)) | |
2976 | + | then [eR[0], mr, eR[2], eR[3], eR[4]] | |
2977 | + | else if (("Asia" == cy)) | |
2978 | + | then [eR[0], eR[1], mr, eR[3], eR[4]] | |
2979 | + | else if (("Africa" == cy)) | |
2980 | + | then [eR[0], eR[1], eR[2], mr, eR[4]] | |
2981 | + | else if (("Oceania" == cy)) | |
2982 | + | then [eR[0], eR[1], eR[2], eR[3], mr] | |
2983 | 2983 | else throw("wrong continent") | |
2984 | 2984 | } | |
2985 | 2985 | ||
2986 | - | let | |
2987 | - | let | |
2988 | - | let | |
2989 | - | let | |
2990 | - | func | |
2991 | - | then | |
2992 | - | else | |
2993 | - | ||
2994 | - | func | |
2995 | - | then | |
2986 | + | let fc = { | |
2987 | + | let eT = kD | |
2988 | + | let eU = size(eT) | |
2989 | + | let eV = gu | |
2990 | + | func hF (eX,eY) = if ((eY >= eU)) | |
2991 | + | then eX | |
2992 | + | else mq(eX, eT[eY]) | |
2993 | + | ||
2994 | + | func hG (eX,eY) = if ((eY >= eU)) | |
2995 | + | then eX | |
2996 | 2996 | else throw("List size exceeds 100") | |
2997 | 2997 | ||
2998 | - | hF( | |
2999 | - | } | |
3000 | - | $Tuple2([StringEntry( | |
2998 | + | hG(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(eV, 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), 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) | |
2999 | + | } | |
3000 | + | $Tuple2([StringEntry(ds("Americas"), fc[0]), StringEntry(ds("Europe"), fc[1]), StringEntry(ds("Asia"), fc[2]), StringEntry(ds("Africa"), fc[3]), StringEntry(ds("Oceania"), fc[4])], 0) | |
3001 | 3001 | } | |
3002 | 3002 | ||
3003 | 3003 | ||
3004 | 3004 | ||
3005 | - | @Callable( | |
3006 | - | func fixStakedPieces ( | |
3005 | + | @Callable(gK) | |
3006 | + | func fixStakedPieces (cM) = if ((gK.caller != db)) | |
3007 | 3007 | then throw("Access denied") | |
3008 | 3008 | else { | |
3009 | - | let | |
3009 | + | let kW = if ((cM == "")) | |
3010 | 3010 | then 0 | |
3011 | 3011 | else { | |
3012 | - | let | |
3013 | - | let | |
3014 | - | then split_51C(value( | |
3012 | + | let kP = getString(an, du(cM)) | |
3013 | + | let kL = if (isDefined(kP)) | |
3014 | + | then split_51C(value(kP), "_") | |
3015 | 3015 | else nil | |
3016 | - | func | |
3017 | - | let | |
3018 | - | let | |
3019 | - | ( | |
3016 | + | func ms (eR,P) = { | |
3017 | + | let js = value(assetInfo(fromBase58String(P))) | |
3018 | + | let dI = split(js.description, "_")[di] | |
3019 | + | (eR + dH(dI)) | |
3020 | 3020 | } | |
3021 | 3021 | ||
3022 | - | let | |
3023 | - | let | |
3024 | - | let | |
3025 | - | func | |
3026 | - | then | |
3027 | - | else | |
3028 | - | ||
3029 | - | func | |
3030 | - | then | |
3022 | + | let eT = kL | |
3023 | + | let eU = size(eT) | |
3024 | + | let eV = 0 | |
3025 | + | func eW (eX,eY) = if ((eY >= eU)) | |
3026 | + | then eX | |
3027 | + | else ms(eX, eT[eY]) | |
3028 | + | ||
3029 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
3030 | + | then eX | |
3031 | 3031 | else throw("List size exceeds 100") | |
3032 | 3032 | ||
3033 | - | | |
3033 | + | eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 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), 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) | |
3034 | 3034 | } | |
3035 | - | $Tuple2([IntegerEntry( | |
3035 | + | $Tuple2([IntegerEntry(dv(cM), kW)], kW) | |
3036 | 3036 | } | |
3037 | 3037 | ||
3038 | 3038 | ||
3039 | 3039 | ||
3040 | - | @Callable( | |
3041 | - | func setCustomName (bp, | |
3042 | - | let | |
3043 | - | if ((size( | |
3040 | + | @Callable(gK) | |
3041 | + | func setCustomName (bp,kN,bt) = { | |
3042 | + | let lk = lg(gK) | |
3043 | + | if ((size(gK.payments) != 1)) | |
3044 | 3044 | then throw("Exactly one payment required") | |
3045 | 3045 | else { | |
3046 | - | let | |
3047 | - | if (( | |
3046 | + | let ll = value(gK.payments[0]) | |
3047 | + | if ((ll.assetId != cx)) | |
3048 | 3048 | then throw("Allowed USDT payment only!") | |
3049 | - | else if (( | |
3050 | - | then throw(("Payment should be " + toString( | |
3051 | - | else if (contains( | |
3052 | - | then throw(("Name should not contain '__': " + | |
3053 | - | else if ((size( | |
3054 | - | then throw(("Name too long, maxLength=" + toString( | |
3049 | + | else if ((ll.amount != ec)) | |
3050 | + | then throw(("Payment should be " + toString(ec))) | |
3051 | + | else if (contains(kN, "__")) | |
3052 | + | then throw(("Name should not contain '__': " + kN)) | |
3053 | + | else if ((size(kN) > ed)) | |
3054 | + | then throw(("Name too long, maxLength=" + toString(ed))) | |
3055 | 3055 | else { | |
3056 | - | let c = toString( | |
3057 | - | let | |
3058 | - | let | |
3059 | - | if (("ACCOUNT" == | |
3056 | + | let c = toString(gK.originCaller) | |
3057 | + | let mt = { | |
3058 | + | let cy = bt | |
3059 | + | if (("ACCOUNT" == cy)) | |
3060 | 3060 | then { | |
3061 | - | let | |
3062 | - | let | |
3063 | - | if (isDefined( | |
3064 | - | then throw(("Name already registered: " + | |
3061 | + | let mu = ex(kN) | |
3062 | + | let mv = getString(mu) | |
3063 | + | if (isDefined(mv)) | |
3064 | + | then throw(("Name already registered: " + kN)) | |
3065 | 3065 | else { | |
3066 | - | let | |
3067 | - | let | |
3068 | - | let | |
3069 | - | then [DeleteEntry( | |
3066 | + | let mw = bB(c) | |
3067 | + | let mx = getString(mw) | |
3068 | + | let my = if (isDefined(mx)) | |
3069 | + | then [DeleteEntry(ex(value(mx)))] | |
3070 | 3070 | else nil | |
3071 | - | ((( | |
3071 | + | (((my :+ StringEntry(mw, kN)) :+ StringEntry(mu, c)) ++ kf(c, Y)._1) | |
3072 | 3072 | } | |
3073 | 3073 | } | |
3074 | - | else if (("LAND" == | |
3074 | + | else if (("LAND" == cy)) | |
3075 | 3075 | then { | |
3076 | - | let | |
3077 | - | let | |
3078 | - | if (!(isDefined(getInteger( | |
3079 | - | then throw(( | |
3076 | + | let js = value(assetInfo(fromBase58String(bp))) | |
3077 | + | let jt = br(bp) | |
3078 | + | if (!(isDefined(getInteger(jt)))) | |
3079 | + | then throw((js.name + " is not staked")) | |
3080 | 3080 | else { | |
3081 | - | let | |
3082 | - | if (( | |
3081 | + | let jv = valueOrErrorMessage(getString(bo(bp)), (("NFT " + js.name) + " is orphaned")) | |
3082 | + | if ((jv != c)) | |
3083 | 3083 | then throw((aC + " is not yours")) | |
3084 | 3084 | else { | |
3085 | - | let | |
3086 | - | let | |
3087 | - | if (isDefined( | |
3088 | - | then throw(("Name already registered: " + | |
3085 | + | let mu = eq(kN) | |
3086 | + | let mv = getString(mu) | |
3087 | + | if (isDefined(mv)) | |
3088 | + | then throw(("Name already registered: " + kN)) | |
3089 | 3089 | else { | |
3090 | - | let | |
3091 | - | let | |
3092 | - | let | |
3093 | - | then [DeleteEntry( | |
3090 | + | let mz = bq(bp) | |
3091 | + | let mx = getString(mz) | |
3092 | + | let my = if (isDefined(mx)) | |
3093 | + | then [DeleteEntry(eq(value(mx)))] | |
3094 | 3094 | else nil | |
3095 | - | ((( | |
3095 | + | (((my :+ StringEntry(mz, kN)) :+ StringEntry(mu, bp)) ++ kf(c, Y)._1) | |
3096 | 3096 | } | |
3097 | 3097 | } | |
3098 | 3098 | } | |
3099 | 3099 | } | |
3100 | - | else if (("DUCK" == | |
3100 | + | else if (("DUCK" == cy)) | |
3101 | 3101 | then { | |
3102 | - | let | |
3103 | - | let | |
3104 | - | if (if (!(isDefined(getInteger( | |
3102 | + | let js = value(assetInfo(fromBase58String(bp))) | |
3103 | + | let jt = br(bp) | |
3104 | + | if (if (!(isDefined(getInteger(jt)))) | |
3105 | 3105 | then true | |
3106 | 3106 | else !(isDefined(getString(bH(c))))) | |
3107 | - | then throw(( | |
3107 | + | then throw((js.name + " is not staked")) | |
3108 | 3108 | else { | |
3109 | - | let | |
3110 | - | if (( | |
3109 | + | let jv = valueOrErrorMessage(getString(bG(bp)), (("NFT " + js.name) + " is orphaned")) | |
3110 | + | if ((jv != c)) | |
3111 | 3111 | then throw((aD + " is not yours")) | |
3112 | 3112 | else { | |
3113 | - | let | |
3114 | - | let | |
3115 | - | if (isDefined( | |
3116 | - | then throw(("Name already registered: " + | |
3113 | + | let mu = ew(kN) | |
3114 | + | let mv = getString(mu) | |
3115 | + | if (isDefined(mv)) | |
3116 | + | then throw(("Name already registered: " + kN)) | |
3117 | 3117 | else { | |
3118 | - | let | |
3119 | - | let | |
3120 | - | let | |
3121 | - | then [DeleteEntry( | |
3118 | + | let mz = bA(bp) | |
3119 | + | let mx = getString(mz) | |
3120 | + | let my = if (isDefined(mx)) | |
3121 | + | then [DeleteEntry(ew(value(mx)))] | |
3122 | 3122 | else nil | |
3123 | - | ((( | |
3123 | + | (((my :+ StringEntry(mz, kN)) :+ StringEntry(mu, bp)) ++ jZ(bp, Y)._1) | |
3124 | 3124 | } | |
3125 | 3125 | } | |
3126 | 3126 | } | |
3127 | 3127 | } | |
3128 | 3128 | else throw("Unknown entity type") | |
3129 | 3129 | } | |
3130 | - | $Tuple2((( | |
3130 | + | $Tuple2(((mt :+ ScriptTransfer(dc, ll.amount, cx)) ++ lk), 0) | |
3131 | 3131 | } | |
3132 | 3132 | } | |
3133 | 3133 | } | |
3134 | 3134 | ||
3135 | 3135 | ||
3136 | 3136 | ||
3137 | - | @Callable( | |
3138 | - | func setReferrals ( | |
3137 | + | @Callable(gK) | |
3138 | + | func setReferrals (mA,mB) = if ((gK.callerPublicKey != dZ)) | |
3139 | 3139 | then throw("Permission denied") | |
3140 | 3140 | else { | |
3141 | - | let | |
3142 | - | if ((size( | |
3141 | + | let lk = lg(gK) | |
3142 | + | if ((size(gK.payments) != 0)) | |
3143 | 3143 | then throw("No payments required") | |
3144 | - | else if (!(isDefined(addressFromString( | |
3145 | - | then throw(("Invalid address: " + | |
3146 | - | else if (!(isDefined(addressFromString( | |
3147 | - | then throw(("Invalid address: " + | |
3144 | + | else if (!(isDefined(addressFromString(mA)))) | |
3145 | + | then throw(("Invalid address: " + mA)) | |
3146 | + | else if (!(isDefined(addressFromString(mB)))) | |
3147 | + | then throw(("Invalid address: " + mB)) | |
3148 | 3148 | else { | |
3149 | - | let | |
3150 | - | let | |
3151 | - | let | |
3152 | - | then split_4C(value( | |
3149 | + | let mC = ey() | |
3150 | + | let mD = getString(mC) | |
3151 | + | let mE = if (isDefined(mD)) | |
3152 | + | then split_4C(value(mD), "_") | |
3153 | 3153 | else nil | |
3154 | - | if (containsElement( | |
3155 | - | then throw(( | |
3154 | + | if (containsElement(mE, mB)) | |
3155 | + | then throw((mB + " is not newbie (already has referrals)")) | |
3156 | 3156 | else { | |
3157 | - | let | |
3158 | - | let | |
3159 | - | if (if (isDefined( | |
3160 | - | then isDefined(addressFromString(value( | |
3157 | + | let kh = bC(mB) | |
3158 | + | let ki = getString(kh) | |
3159 | + | if (if (isDefined(ki)) | |
3160 | + | then isDefined(addressFromString(value(ki))) | |
3161 | 3161 | else false) | |
3162 | - | then throw((( | |
3162 | + | then throw(((mB + " already has refBy: ") + value(ki))) | |
3163 | 3163 | else { | |
3164 | - | let | |
3165 | - | let | |
3166 | - | let | |
3167 | - | then split_4C(value( | |
3164 | + | let mF = bF(mA) | |
3165 | + | let mG = getString(mF) | |
3166 | + | let mH = if (isDefined(mG)) | |
3167 | + | then split_4C(value(mG), "_") | |
3168 | 3168 | else nil | |
3169 | - | if (containsElement( | |
3170 | - | then throw(((( | |
3169 | + | if (containsElement(mH, mB)) | |
3170 | + | then throw((((mA + " already contains ") + mB) + " within referrals")) | |
3171 | 3171 | else { | |
3172 | - | let | |
3173 | - | let | |
3174 | - | then value( | |
3175 | - | else makeString_2C(( | |
3176 | - | $Tuple2(([StringEntry( | |
3172 | + | let mI = makeString_2C((mH :+ mB), "_") | |
3173 | + | let mJ = if (containsElement(mE, mA)) | |
3174 | + | then value(mD) | |
3175 | + | else makeString_2C((mE :+ mA), "_") | |
3176 | + | $Tuple2(([StringEntry(kh, mA), StringEntry(mF, mI), StringEntry(mC, mJ)] ++ lk), 0) | |
3177 | 3177 | } | |
3178 | 3178 | } | |
3179 | 3179 | } | |
3182 | 3182 | ||
3183 | 3183 | ||
3184 | 3184 | ||
3185 | - | @Callable( | |
3186 | - | func distributePoints ( | |
3187 | - | let | |
3188 | - | if ((size( | |
3185 | + | @Callable(gK) | |
3186 | + | func distributePoints (mK,mL,mM,mN,mO) = { | |
3187 | + | let lk = lg(gK) | |
3188 | + | if ((size(gK.payments) != 0)) | |
3189 | 3189 | then throw("No payments required") | |
3190 | 3190 | else { | |
3191 | - | let c = toString( | |
3192 | - | let | |
3193 | - | let | |
3194 | - | let | |
3191 | + | let c = toString(gK.originCaller) | |
3192 | + | let mP = dB(invoke(de, "checkWlgXpREADONLY", [c], nil)) | |
3193 | + | let mQ = dz(mP[1]) | |
3194 | + | let mR = if ((0 >= mQ)) | |
3195 | 3195 | then $Tuple2(0, nil) | |
3196 | 3196 | else { | |
3197 | - | let | |
3198 | - | if (( | |
3199 | - | then $Tuple2( | |
3197 | + | let ka = dz(invoke(de, "takeWlgXp", [c], nil)) | |
3198 | + | if ((ka == ka)) | |
3199 | + | then $Tuple2(mQ, [IntegerEntry(H(c), dz(mP[0])), IntegerEntry(G(c), dz(mP[2]))]) | |
3200 | 3200 | else throw("Strict value is not equal to itself.") | |
3201 | 3201 | } | |
3202 | - | let | |
3203 | - | let | |
3202 | + | let mS = mR._1 | |
3203 | + | let mT = mR._2 | |
3204 | 3204 | let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked") | |
3205 | - | let | |
3206 | - | let | |
3207 | - | let | |
3208 | - | let | |
3209 | - | let | |
3210 | - | let | |
3211 | - | if (( | |
3212 | - | then throw((("There are only " + toString( | |
3205 | + | let mU = I(c) | |
3206 | + | let mV = (valueOrElse(getInteger(mU), 0) + mS) | |
3207 | + | let mW = E(A) | |
3208 | + | let mX = valueOrElse(getInteger(mW), 0) | |
3209 | + | let mY = (mV + mX) | |
3210 | + | let mZ = ((((mK + mL) + mM) + mN) + mO) | |
3211 | + | if ((mZ > mY)) | |
3212 | + | then throw((("There are only " + toString(mY)) + " free points to distribute")) | |
3213 | 3213 | else { | |
3214 | - | let | |
3215 | - | let aq = split(valueOrElse(getString( | |
3216 | - | let | |
3217 | - | $Tuple2((([IntegerEntry( | |
3214 | + | let na = B(A) | |
3215 | + | let aq = split(valueOrElse(getString(na), "0_0_0_0_0"), "_") | |
3216 | + | let nb = (mV - mZ) | |
3217 | + | $Tuple2((([IntegerEntry(mU, if ((0 > nb)) | |
3218 | 3218 | then 0 | |
3219 | - | else | |
3220 | - | then ( | |
3221 | - | else | |
3219 | + | else nb), IntegerEntry(mW, if ((0 > nb)) | |
3220 | + | then (mX + nb) | |
3221 | + | else mX), StringEntry(na, makeString([toString((parseIntValue(aq[k]) + mK)), toString((parseIntValue(aq[l]) + mL)), toString((parseIntValue(aq[m]) + mM)), toString((parseIntValue(aq[n]) + mN)), toString((parseIntValue(aq[o]) + mO))], "_"))] ++ lk) ++ mT), 0) | |
3222 | 3222 | } | |
3223 | 3223 | } | |
3224 | 3224 | } | |
3225 | 3225 | ||
3226 | 3226 | ||
3227 | 3227 | ||
3228 | - | @Callable( | |
3229 | - | func splitByGlobalWeightsREADONLY ( | |
3230 | - | ||
3231 | - | ||
3232 | - | ||
3233 | - | @Callable( | |
3234 | - | func splitByGlobalAndLocalWeightsREADONLY ( | |
3235 | - | let | |
3236 | - | $Tuple2(nil, $Tuple2( | |
3237 | - | } | |
3238 | - | ||
3239 | - | ||
3240 | - | ||
3241 | - | @Callable( | |
3242 | - | func getBackpackREADONLY (A) = $Tuple2(nil, makeString( | |
3243 | - | ||
3244 | - | ||
3245 | - | ||
3246 | - | @Callable( | |
3228 | + | @Callable(gK) | |
3229 | + | func splitByGlobalWeightsREADONLY (eI) = $Tuple2(nil, fa(eI)) | |
3230 | + | ||
3231 | + | ||
3232 | + | ||
3233 | + | @Callable(gK) | |
3234 | + | func splitByGlobalAndLocalWeightsREADONLY (nc,nd,gN) = { | |
3235 | + | let gG = gM(gN) | |
3236 | + | $Tuple2(nil, $Tuple2(fa(nc), eL(nd, gG))) | |
3237 | + | } | |
3238 | + | ||
3239 | + | ||
3240 | + | ||
3241 | + | @Callable(gK) | |
3242 | + | func getBackpackREADONLY (A) = $Tuple2(nil, makeString(hK(bI(A)), ":")) | |
3243 | + | ||
3244 | + | ||
3245 | + | ||
3246 | + | @Callable(gK) | |
3247 | 3247 | func getWarehouseREADONLY (P) = { | |
3248 | - | let | |
3249 | - | let | |
3250 | - | let | |
3251 | - | $Tuple2(nil, makeString_2C( | |
3252 | - | } | |
3253 | - | ||
3254 | - | ||
3255 | - | ||
3256 | - | @Callable( | |
3257 | - | func saveLastTx () = if (!(containsElement([ | |
3248 | + | let js = value(assetInfo(fromBase58String(P))) | |
3249 | + | let hZ = (dH(split(js.description, "_")[di]) / cF) | |
3250 | + | let ia = valueOrElse(getInteger(by(P)), 0) | |
3251 | + | $Tuple2(nil, makeString_2C(hX(bx(P), hZ, ia), ":")) | |
3252 | + | } | |
3253 | + | ||
3254 | + | ||
3255 | + | ||
3256 | + | @Callable(gK) | |
3257 | + | func saveLastTx () = if (!(containsElement([de, dc, df, dg], gK.caller))) | |
3258 | 3258 | then throw("Access denied") | |
3259 | - | else $Tuple2( | |
3260 | - | ||
3261 | - | ||
3262 | - | ||
3263 | - | @Callable( | |
3264 | - | func updateDuckStats (A, | |
3259 | + | else $Tuple2(lg(gK), 42) | |
3260 | + | ||
3261 | + | ||
3262 | + | ||
3263 | + | @Callable(gK) | |
3264 | + | func updateDuckStats (A,ka) = if ((gK.caller != dc)) | |
3265 | 3265 | then throw("Access denied") | |
3266 | - | else | |
3267 | - | ||
3268 | - | ||
3269 | - | ||
3270 | - | @Callable( | |
3271 | - | func updateAccStats (c, | |
3266 | + | else jZ(A, ka) | |
3267 | + | ||
3268 | + | ||
3269 | + | ||
3270 | + | @Callable(gK) | |
3271 | + | func updateAccStats (c,ka) = if (!(containsElement([de, dc, dg], gK.caller))) | |
3272 | 3272 | then throw("Access denied") | |
3273 | - | else | |
3274 | - | ||
3275 | - | ||
3276 | - | ||
3277 | - | @Callable( | |
3278 | - | func equipDuck ( | |
3279 | - | let | |
3280 | - | if ((size( | |
3273 | + | else kf(c, ka) | |
3274 | + | ||
3275 | + | ||
3276 | + | ||
3277 | + | @Callable(gK) | |
3278 | + | func equipDuck (ne) = { | |
3279 | + | let lk = lg(gK) | |
3280 | + | if ((size(gK.payments) != 0)) | |
3281 | 3281 | then throw("No payments required") | |
3282 | 3282 | else { | |
3283 | - | let c = toString( | |
3283 | + | let c = toString(gK.originCaller) | |
3284 | 3284 | let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked") | |
3285 | - | if ( | |
3285 | + | if (kp(A)) | |
3286 | 3286 | then throw("equipDuck_checkTournament") | |
3287 | - | else if ( | |
3287 | + | else if (kq(A)) | |
3288 | 3288 | then throw("equipDuck_checkDelivery") | |
3289 | 3289 | else { | |
3290 | - | let | |
3291 | - | let | |
3292 | - | let | |
3293 | - | let | |
3294 | - | let | |
3295 | - | if ((size( | |
3290 | + | let gx = F(A) | |
3291 | + | let nf = split(valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
3292 | + | let hL = bI(A) | |
3293 | + | let io = hK(hL) | |
3294 | + | let lB = split(ne, "_") | |
3295 | + | if ((size(lB) != q)) | |
3296 | 3296 | then throw("Wrong equipment string") | |
3297 | 3297 | else { | |
3298 | - | let | |
3299 | - | let | |
3300 | - | let ao = if (( | |
3298 | + | let gz = gm(nf, fx(io[bk]), true, nil) | |
3299 | + | let gA = split(lB[p], ";")[1] | |
3300 | + | let ao = if ((gA == "")) | |
3301 | 3301 | then 0 | |
3302 | 3302 | else { | |
3303 | - | let | |
3304 | - | if (( | |
3303 | + | let gB = split(gA, ",")[0] | |
3304 | + | if ((gB == "")) | |
3305 | 3305 | then 0 | |
3306 | 3306 | else { | |
3307 | - | let | |
3308 | - | let | |
3309 | - | let | |
3310 | - | if (if (if (if (if (( | |
3307 | + | let fM = split(gB, ":") | |
3308 | + | let da = fM[0] | |
3309 | + | let gC = fM[1] | |
3310 | + | if (if (if (if (if ((da == "06")) | |
3311 | 3311 | then true | |
3312 | - | else ( | |
3312 | + | else (da == "07")) | |
3313 | 3313 | then true | |
3314 | - | else ( | |
3315 | - | then ( | |
3314 | + | else (da == "08")) | |
3315 | + | then (gC != "") | |
3316 | 3316 | else false) | |
3317 | - | then (parseIntValue( | |
3317 | + | then (parseIntValue(gC) > 0) | |
3318 | 3318 | else false) | |
3319 | - | then parseIntValue(split(aS[parseIntValue( | |
3319 | + | then parseIntValue(split(aS[parseIntValue(da)], "_")[aU]) | |
3320 | 3320 | else 0 | |
3321 | 3321 | } | |
3322 | 3322 | } | |
3323 | - | let | |
3324 | - | let | |
3325 | - | let | |
3326 | - | $Tuple2(([StringEntry( | |
3323 | + | let gh = am(this, A, ao, true) | |
3324 | + | let gD = gm(lB, gz, false, gh) | |
3325 | + | let ng = fC(gD) | |
3326 | + | $Tuple2(([StringEntry(gx, ne), StringEntry(hL, makeString_2C([io[bh], io[bi], io[bj], ng], ":")), StringEntry(L(A), makeString([toString(gh[7]), toString(gh[8]), toString(gh[9]), toString(gh[10]), toString(gh[11])], "_"))] ++ lk), 0) | |
3327 | 3327 | } | |
3328 | 3328 | } | |
3329 | 3329 | } | |
3331 | 3331 | ||
3332 | 3332 | ||
3333 | 3333 | ||
3334 | - | @Callable( | |
3335 | - | func fortificateLand (P, | |
3336 | - | let | |
3337 | - | if ((size( | |
3334 | + | @Callable(gK) | |
3335 | + | func fortificateLand (P,nh) = { | |
3336 | + | let lk = lg(gK) | |
3337 | + | if ((size(gK.payments) != 0)) | |
3338 | 3338 | then throw("No payments required") | |
3339 | 3339 | else { | |
3340 | - | let c = toString( | |
3340 | + | let c = toString(gK.originCaller) | |
3341 | 3341 | let A = valueOrElse(getString(bH(c)), "") | |
3342 | - | let | |
3343 | - | let | |
3344 | - | let | |
3345 | - | let | |
3346 | - | let | |
3347 | - | let | |
3348 | - | let | |
3349 | - | let | |
3350 | - | let | |
3351 | - | let | |
3352 | - | let | |
3353 | - | let | |
3354 | - | let | |
3355 | - | let | |
3356 | - | let | |
3357 | - | let | |
3358 | - | let | |
3359 | - | let | |
3360 | - | let | |
3361 | - | let | |
3362 | - | let | |
3363 | - | let | |
3364 | - | $Tuple2(([StringEntry( | |
3365 | - | } | |
3366 | - | } | |
3367 | - | ||
3368 | - | ||
3369 | - | ||
3370 | - | @Callable( | |
3371 | - | func initDuckTourAttempt (A) = if (( | |
3342 | + | let fH = am(this, A, 0, false) | |
3343 | + | let ni = bz(P) | |
3344 | + | let nj = split(valueOrElse(getString(ni), ":0_15:0_18:0"), "_") | |
3345 | + | let js = value(assetInfo(fromBase58String(P))) | |
3346 | + | let hZ = (dH(split(js.description, "_")[di]) / cF) | |
3347 | + | let ia = valueOrElse(getInteger(by(P)), 0) | |
3348 | + | let hY = bx(P) | |
3349 | + | let id = hX(hY, hZ, ia) | |
3350 | + | let nk = split(id[bc], "_") | |
3351 | + | let nl = parseIntValue(nk[be]) | |
3352 | + | let nm = parseIntValue(nk[bf]) | |
3353 | + | let nn = split(nh, "_") | |
3354 | + | let no = gt(nj, fx(id[bb]), nl, nm, true, nil) | |
3355 | + | let gz = no._1 | |
3356 | + | let np = no._2 | |
3357 | + | let nq = no._3 | |
3358 | + | let nr = gt(nn, gz, np, nq, false, fH) | |
3359 | + | let gD = nr._1 | |
3360 | + | let ns = nr._2 | |
3361 | + | let nt = nr._3 | |
3362 | + | let ng = fC(gD) | |
3363 | + | let jY = makeString([nk[bd], toString(ns), toString(nt), nk[bg]], "_") | |
3364 | + | $Tuple2(([StringEntry(ni, nh), StringEntry(hY, makeString_2C([id[aY], id[aZ], id[ba], ng, jY], ":"))] ++ lk), 0) | |
3365 | + | } | |
3366 | + | } | |
3367 | + | ||
3368 | + | ||
3369 | + | ||
3370 | + | @Callable(gK) | |
3371 | + | func initDuckTourAttempt (A) = if ((gK.caller != df)) | |
3372 | 3372 | then throw("Access denied") | |
3373 | 3373 | else { | |
3374 | - | let | |
3375 | - | let | |
3376 | - | let | |
3377 | - | let | |
3378 | - | let | |
3379 | - | let ce = valueOrElse(getInteger( | |
3380 | - | let | |
3381 | - | $Tuple2([IntegerEntry(J(A), | |
3374 | + | let jb = z(A) | |
3375 | + | let jc = ag(valueOrElse(getInteger(D(A)), 0)) | |
3376 | + | let kt = valueOrElse(getInteger(jb), jc) | |
3377 | + | let nu = bJ(A) | |
3378 | + | let jq = valueOrElse(getString(nu), aJ) | |
3379 | + | let ce = valueOrElse(getInteger(df, bP), 0) | |
3380 | + | let nv = (toString(ce) + "_T_0") | |
3381 | + | $Tuple2([IntegerEntry(J(A), kt), IntegerEntry(jb, jc), StringEntry(K(A), jq), StringEntry(nu, nv)], nv) | |
3382 | 3382 | } | |
3383 | 3383 | ||
3384 | 3384 | ||
3385 | 3385 | ||
3386 | - | @Callable( | |
3386 | + | @Callable(gK) | |
3387 | 3387 | func breakAttempt () = { | |
3388 | - | let | |
3389 | - | let A = valueOrErrorMessage(getString(bH(toString( | |
3390 | - | let | |
3391 | - | let | |
3392 | - | if ((split( | |
3388 | + | let lk = lg(gK) | |
3389 | + | let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked") | |
3390 | + | let nu = bJ(A) | |
3391 | + | let jq = valueOrElse(getString(nu), aJ) | |
3392 | + | if ((split(jq, "_")[bm] != "T")) | |
3393 | 3393 | then throw("Your duck is not in the tournament") | |
3394 | 3394 | else { | |
3395 | - | let | |
3396 | - | let | |
3397 | - | $Tuple2((( | |
3398 | - | } | |
3399 | - | } | |
3400 | - | ||
3401 | - | ||
3402 | - | ||
3403 | - | @Callable( | |
3404 | - | func exitTournamentInternal (A) = if (( | |
3395 | + | let ky = getIntegerValue(J(A)) | |
3396 | + | let kz = getStringValue(K(A)) | |
3397 | + | $Tuple2(((lk :+ IntegerEntry(z(A), ky)) :+ StringEntry(nu, kz)), jq) | |
3398 | + | } | |
3399 | + | } | |
3400 | + | ||
3401 | + | ||
3402 | + | ||
3403 | + | @Callable(gK) | |
3404 | + | func exitTournamentInternal (A) = if ((gK.caller != this)) | |
3405 | 3405 | then throw("Access denied") | |
3406 | 3406 | else { | |
3407 | - | let | |
3408 | - | let | |
3409 | - | $Tuple2([IntegerEntry(z(A), | |
3407 | + | let ky = getIntegerValue(J(A)) | |
3408 | + | let kz = getStringValue(K(A)) | |
3409 | + | $Tuple2([IntegerEntry(z(A), ky), StringEntry(bJ(A), kz)], false) | |
3410 | 3410 | } | |
3411 | 3411 | ||
3412 | 3412 | ||
3413 | 3413 | ||
3414 | - | @Callable( | |
3415 | - | func exitDeliveryInternal (A) = if (( | |
3414 | + | @Callable(gK) | |
3415 | + | func exitDeliveryInternal (A) = if ((gK.caller != this)) | |
3416 | 3416 | then throw("Access denied") | |
3417 | 3417 | else { | |
3418 | - | let | |
3419 | - | $Tuple2(( | |
3418 | + | let mh = kr(A) | |
3419 | + | $Tuple2((mh._1 ++ mh._2), false) | |
3420 | 3420 | } | |
3421 | 3421 | ||
3422 | 3422 | ||
3423 | 3423 | ||
3424 | - | @Callable( | |
3425 | - | func autoExitDelivery (A) = if (( | |
3424 | + | @Callable(gK) | |
3425 | + | func autoExitDelivery (A) = if ((gK.caller != this)) | |
3426 | 3426 | then throw("Access denied") | |
3427 | 3427 | else { | |
3428 | - | let | |
3429 | - | $Tuple2( | |
3428 | + | let mh = kr(A) | |
3429 | + | $Tuple2(mh._1, $Tuple2(mh._3, mh._4)) | |
3430 | 3430 | } | |
3431 | 3431 | ||
3432 | 3432 | ||
3433 | 3433 | ||
3434 | - | @Callable( | |
3435 | - | func prepareRobbery ( | |
3436 | - | let | |
3437 | - | if (!(sigVerify_8Kb( | |
3434 | + | @Callable(gK) | |
3435 | + | func prepareRobbery (iQ,iR) = { | |
3436 | + | let lk = lg(gK) | |
3437 | + | if (!(sigVerify_8Kb(iQ, iR, dZ))) | |
3438 | 3438 | then throw("signature does not match") | |
3439 | - | else if ((size( | |
3439 | + | else if ((size(gK.payments) != 1)) | |
3440 | 3440 | then throw("exactly 1 payment must be attached") | |
3441 | 3441 | else { | |
3442 | - | let | |
3443 | - | let | |
3444 | - | if (if (!(isDefined( | |
3442 | + | let ll = gK.payments[0] | |
3443 | + | let nw = ll.amount | |
3444 | + | if (if (!(isDefined(ll.assetId))) | |
3445 | 3445 | then true | |
3446 | - | else (value( | |
3446 | + | else (value(ll.assetId) != dm)) | |
3447 | 3447 | then throw("WLGOLD payments only!") | |
3448 | 3448 | else { | |
3449 | - | let | |
3450 | - | if ((size( | |
3449 | + | let fp = split(toUtf8String(iQ), "|") | |
3450 | + | if ((size(fp) != 2)) | |
3451 | 3451 | then throw("Wrong message format") | |
3452 | 3452 | else { | |
3453 | - | let A = | |
3454 | - | if ( | |
3453 | + | let A = fp[0] | |
3454 | + | if (kp(A)) | |
3455 | 3455 | then throw("prepareRobbery_checkTournament") | |
3456 | - | else if ( | |
3456 | + | else if (kq(A)) | |
3457 | 3457 | then throw("prepareRobbery_checkDelivery") | |
3458 | 3458 | else { | |
3459 | 3459 | let ay = au(this, A)._1 | |
3460 | - | if ((ay > | |
3461 | - | then throw(((("Payment " + toString( | |
3460 | + | if ((ay > nw)) | |
3461 | + | then throw(((("Payment " + toString(nw)) + " < required ") + toString(ay))) | |
3462 | 3462 | else { | |
3463 | - | let | |
3463 | + | let nx = split(fp[1], "_") | |
3464 | 3464 | let ax = lastBlock.timestamp | |
3465 | 3465 | let az = valueOrElse(getInteger(R(A)), 0) | |
3466 | 3466 | let aA = valueOrElse(getString(S(A)), "") | |
3470 | 3470 | else false) | |
3471 | 3471 | then throw(("You already started robbing, wait till " + toString(aB))) | |
3472 | 3472 | else { | |
3473 | - | func | |
3474 | - | let | |
3475 | - | let | |
3476 | - | if (( | |
3473 | + | func ny (eR,P) = { | |
3474 | + | let nz = valueOrElse(getInteger(O(P)), 0) | |
3475 | + | let nA = valueOrElse(getInteger(Q(P)), 0) | |
3476 | + | if ((nz > size(u))) | |
3477 | 3477 | then throw("Invalid state") | |
3478 | - | else if ((ax > | |
3478 | + | else if ((ax > nA)) | |
3479 | 3479 | then { | |
3480 | - | let | |
3481 | - | if ((0 >= | |
3482 | - | then | |
3480 | + | let nB = valueOrElse(getInteger(br(P)), 0) | |
3481 | + | if ((0 >= nB)) | |
3482 | + | then eR | |
3483 | 3483 | else { | |
3484 | - | let | |
3485 | - | let | |
3486 | - | let | |
3487 | - | let | |
3488 | - | let | |
3489 | - | let | |
3490 | - | if ((v > | |
3491 | - | then | |
3492 | - | else ( | |
3484 | + | let gr = value(assetInfo(fromBase58String(P))) | |
3485 | + | let jw = split(gr.description, "_") | |
3486 | + | let ji = dH(jw[di]) | |
3487 | + | let nC = jh(P, ji) | |
3488 | + | let gQ = (ax - nB) | |
3489 | + | let jz = fraction(gQ, (nC * ji), a) | |
3490 | + | if ((v > jz)) | |
3491 | + | then eR | |
3492 | + | else (eR :+ P) | |
3493 | 3493 | } | |
3494 | 3494 | } | |
3495 | - | else | |
3495 | + | else eR | |
3496 | 3496 | } | |
3497 | 3497 | ||
3498 | - | let | |
3499 | - | let | |
3500 | - | let | |
3501 | - | let | |
3502 | - | func | |
3503 | - | then | |
3504 | - | else | |
3505 | - | ||
3506 | - | func | |
3507 | - | then | |
3498 | + | let nD = { | |
3499 | + | let eT = nx | |
3500 | + | let eU = size(eT) | |
3501 | + | let eV = nil | |
3502 | + | func eW (eX,eY) = if ((eY >= eU)) | |
3503 | + | then eX | |
3504 | + | else ny(eX, eT[eY]) | |
3505 | + | ||
3506 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
3507 | + | then eX | |
3508 | 3508 | else throw("List size exceeds 10") | |
3509 | 3509 | ||
3510 | - | | |
3510 | + | eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
3511 | 3511 | } | |
3512 | - | if ((size( | |
3512 | + | if ((size(nD) == 0)) | |
3513 | 3513 | then throw("No candidates for robbery") | |
3514 | 3514 | else { | |
3515 | - | let | |
3516 | - | let P = | |
3517 | - | $Tuple2(([IntegerEntry(O(P), w), IntegerEntry(Q(P), (ax + u[w])), IntegerEntry(R(A), y), StringEntry(S(A), P)] ++ | |
3515 | + | let nE = dR(size(nD), height, (iR + gK.transactionId)) | |
3516 | + | let P = nD[nE] | |
3517 | + | $Tuple2(([IntegerEntry(O(P), w), IntegerEntry(Q(P), (ax + u[w])), IntegerEntry(R(A), y), StringEntry(S(A), P)] ++ lk), P) | |
3518 | 3518 | } | |
3519 | 3519 | } | |
3520 | 3520 | } | |
3526 | 3526 | ||
3527 | 3527 | ||
3528 | 3528 | ||
3529 | - | @Callable( | |
3530 | - | func robLand ( | |
3531 | - | let | |
3532 | - | if (!(sigVerify_8Kb( | |
3529 | + | @Callable(gK) | |
3530 | + | func robLand (iQ,iR) = { | |
3531 | + | let lk = lg(gK) | |
3532 | + | if (!(sigVerify_8Kb(iQ, iR, dZ))) | |
3533 | 3533 | then throw("signature does not match") | |
3534 | 3534 | else { | |
3535 | - | let bL = toString( | |
3535 | + | let bL = toString(gK.caller) | |
3536 | 3536 | let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked") | |
3537 | 3537 | let ax = lastBlock.timestamp | |
3538 | - | $Tuple2(( | |
3539 | - | } | |
3540 | - | } | |
3541 | - | ||
3542 | - | ||
3543 | - | ||
3544 | - | @Callable( | |
3545 | - | func acceptDelivery () = if (!( | |
3538 | + | $Tuple2((lk :+ IntegerEntry(M(A), ax)), 0) | |
3539 | + | } | |
3540 | + | } | |
3541 | + | ||
3542 | + | ||
3543 | + | ||
3544 | + | @Callable(gK) | |
3545 | + | func acceptDelivery () = if (!(cv)) | |
3546 | 3546 | then throw("Delivery feature is turned off!") | |
3547 | 3547 | else { | |
3548 | - | let | |
3549 | - | let bL = toString( | |
3548 | + | let lk = lg(gK) | |
3549 | + | let bL = toString(gK.caller) | |
3550 | 3550 | let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked") | |
3551 | - | let | |
3552 | - | let | |
3553 | - | if ((aM > ( | |
3554 | - | then throw(((("Delivery is not available, fund=" + | |
3551 | + | let nF = valueOrElse(getInteger(dc, bN), 0) | |
3552 | + | let kw = valueOrElse(getInteger(dc, bO), 0) | |
3553 | + | if ((aM > (nF - kw))) | |
3554 | + | then throw(((("Delivery is not available, fund=" + dM(nF, 6)) + ", locked=") + dM(kw, 6))) | |
3555 | 3555 | else { | |
3556 | 3556 | let ax = lastBlock.timestamp | |
3557 | - | let | |
3558 | - | if (( | |
3559 | - | then throw(("Delivery is forbidden for your duck until " + toString( | |
3560 | - | else if ( | |
3557 | + | let nG = valueOrElse(getInteger(T(A)), 0) | |
3558 | + | if ((nG > ax)) | |
3559 | + | then throw(("Delivery is forbidden for your duck until " + toString(nG))) | |
3560 | + | else if (kp(A)) | |
3561 | 3561 | then throw("acceptDelivery_checkTournament") | |
3562 | - | else if ( | |
3562 | + | else if (kq(A)) | |
3563 | 3563 | then throw("acceptDelivery_checkDelivery") | |
3564 | 3564 | else { | |
3565 | - | let | |
3566 | - | let | |
3567 | - | let | |
3568 | - | let | |
3569 | - | let | |
3570 | - | let | |
3571 | - | let | |
3572 | - | $Tuple2(([IntegerEntry(J(A), | |
3565 | + | let nH = dz(invoke(dc, "updateDeliveryLocked", [(kw + aM)], nil)) | |
3566 | + | let jb = z(A) | |
3567 | + | let jc = ag(valueOrElse(getInteger(D(A)), 0)) | |
3568 | + | let kt = valueOrElse(getInteger(jb), jc) | |
3569 | + | let nu = bJ(A) | |
3570 | + | let jq = valueOrElse(getString(nu), aJ) | |
3571 | + | let nI = (toString(ax) + "_D_0") | |
3572 | + | $Tuple2(([IntegerEntry(J(A), kt), IntegerEntry(jb, jc), StringEntry(K(A), jq), StringEntry(nu, nI)] ++ lk), $Tuple2(nI, nH)) | |
3573 | 3573 | } | |
3574 | 3574 | } | |
3575 | 3575 | } |
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 | let d = 100000000 | |
10 | 10 | ||
11 | 11 | let e = 3200 | |
12 | 12 | ||
13 | 13 | let f = 4000 | |
14 | 14 | ||
15 | 15 | let g = 3 | |
16 | 16 | ||
17 | 17 | let h = 100000000 | |
18 | 18 | ||
19 | 19 | let i = 400 | |
20 | 20 | ||
21 | 21 | let j = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"] | |
22 | 22 | ||
23 | 23 | let k = 0 | |
24 | 24 | ||
25 | 25 | let l = 1 | |
26 | 26 | ||
27 | 27 | let m = 2 | |
28 | 28 | ||
29 | 29 | let n = 3 | |
30 | 30 | ||
31 | 31 | let o = 4 | |
32 | 32 | ||
33 | 33 | let p = 0 | |
34 | 34 | ||
35 | 35 | let q = 6 | |
36 | 36 | ||
37 | 37 | let r = 2 | |
38 | 38 | ||
39 | 39 | let s = 2 | |
40 | 40 | ||
41 | 41 | let t = 30 | |
42 | 42 | ||
43 | 43 | let u = [0, 600000, 900000, 43200000, 21600000] | |
44 | 44 | ||
45 | 45 | let v = 20000000 | |
46 | 46 | ||
47 | 47 | let w = 1 | |
48 | 48 | ||
49 | 49 | let x = 0 | |
50 | 50 | ||
51 | 51 | let y = 1 | |
52 | 52 | ||
53 | 53 | func z (A) = ("duckHealth_" + A) | |
54 | 54 | ||
55 | 55 | ||
56 | 56 | func B (A) = ("duckChars_" + A) | |
57 | 57 | ||
58 | 58 | ||
59 | 59 | func C (A) = ("duckXP_" + A) | |
60 | 60 | ||
61 | 61 | ||
62 | 62 | func D (A) = ("duckLevel_" + A) | |
63 | 63 | ||
64 | 64 | ||
65 | 65 | func E (A) = ("duckFreePoints_" + A) | |
66 | 66 | ||
67 | 67 | ||
68 | 68 | func F (A) = ("duckEquipment_" + A) | |
69 | 69 | ||
70 | 70 | ||
71 | 71 | func G (c) = ("userXP_" + c) | |
72 | 72 | ||
73 | 73 | ||
74 | 74 | func H (c) = ("userLevel_" + c) | |
75 | 75 | ||
76 | 76 | ||
77 | 77 | func I (c) = ("userFreePoints_" + c) | |
78 | 78 | ||
79 | 79 | ||
80 | 80 | func J (A) = ("savedHealth_" + A) | |
81 | 81 | ||
82 | 82 | ||
83 | 83 | func K (A) = ("savedLocation_" + A) | |
84 | 84 | ||
85 | 85 | ||
86 | 86 | func L (A) = ("duckBuffs_" + A) | |
87 | 87 | ||
88 | 88 | ||
89 | 89 | func M (A) = ("lastRobberyTime_" + A) | |
90 | 90 | ||
91 | 91 | ||
92 | 92 | func N (A) = ("lastRobberyCost_" + A) | |
93 | 93 | ||
94 | 94 | ||
95 | 95 | func O (P) = ("landRobberyState_" + P) | |
96 | 96 | ||
97 | 97 | ||
98 | 98 | func Q (P) = ("landCooldownETA_" + P) | |
99 | 99 | ||
100 | 100 | ||
101 | 101 | func R (A) = ("duckRobberyState_" + A) | |
102 | 102 | ||
103 | 103 | ||
104 | 104 | func S (A) = ("lockedLandByDuck_" + A) | |
105 | 105 | ||
106 | 106 | ||
107 | 107 | func T (A) = ("deliveryDelayByDuck_" + A) | |
108 | 108 | ||
109 | 109 | ||
110 | 110 | let U = 10000 | |
111 | 111 | ||
112 | 112 | let V = 10000 | |
113 | 113 | ||
114 | 114 | let W = 2000 | |
115 | 115 | ||
116 | 116 | let X = 100000 | |
117 | 117 | ||
118 | 118 | let Y = 1000000 | |
119 | 119 | ||
120 | 120 | let Z = 5000000 | |
121 | 121 | ||
122 | 122 | let aa = 10000 | |
123 | 123 | ||
124 | 124 | let ab = 1000000 | |
125 | 125 | ||
126 | 126 | let ac = 1000000 | |
127 | 127 | ||
128 | 128 | let ad = 10000 | |
129 | 129 | ||
130 | 130 | func ae (af) = fraction(e, pow(af, 4, f, 4, 4, DOWN), d) | |
131 | 131 | ||
132 | 132 | ||
133 | 133 | func ag (ah) = (100 + ah) | |
134 | 134 | ||
135 | 135 | ||
136 | 136 | func ai (aj,ak) = { | |
137 | 137 | let al = ae(ak) | |
138 | 138 | [al, (g * (al - aj))] | |
139 | 139 | } | |
140 | 140 | ||
141 | 141 | ||
142 | 142 | func am (an,A,ao,ap) = { | |
143 | 143 | let aq = split(valueOrElse(getString(an, B(A)), "0_0_0_0_0"), "_") | |
144 | 144 | let ar = valueOrElse(getInteger(an, D(A)), 0) | |
145 | 145 | let as = valueOrElse(getInteger(an, z(A)), ag(ar)) | |
146 | 146 | let at = split(valueOrElse(getString(an, L(A)), "0_0_0_0_0"), "_") | |
147 | 147 | ([parseIntValue(aq[k]), parseIntValue(aq[l]), parseIntValue(aq[m]), parseIntValue(aq[n]), parseIntValue(aq[o]), ar, as] ++ (if (ap) | |
148 | 148 | then [ao, ao, ao, ao, ao] | |
149 | 149 | else [parseIntValue(at[k]), parseIntValue(at[l]), parseIntValue(at[m]), parseIntValue(at[n]), parseIntValue(at[o])])) | |
150 | 150 | } | |
151 | 151 | ||
152 | 152 | ||
153 | 153 | func au (an,A) = { | |
154 | 154 | let av = valueOrElse(getInteger(an, N(A)), 0) | |
155 | 155 | let aw = valueOrElse(getInteger(an, M(A)), 0) | |
156 | 156 | let ax = lastBlock.timestamp | |
157 | 157 | let ay = max([h, (av - (i * (ax - aw)))]) | |
158 | 158 | let az = valueOrElse(getInteger(an, R(A)), 0) | |
159 | 159 | let aA = valueOrElse(getString(an, S(A)), "") | |
160 | 160 | let aB = valueOrElse(getInteger(an, Q(aA)), 0) | |
161 | 161 | $Tuple5(ay, aw, az, aA, aB) | |
162 | 162 | } | |
163 | 163 | ||
164 | 164 | ||
165 | 165 | let aC = "LAND" | |
166 | 166 | ||
167 | 167 | let aD = "DUCK" | |
168 | 168 | ||
169 | 169 | let aE = "PRESALE" | |
170 | 170 | ||
171 | 171 | let aF = 6 | |
172 | 172 | ||
173 | 173 | let aG = 25 | |
174 | 174 | ||
175 | 175 | let aH = 3456000 | |
176 | 176 | ||
177 | 177 | let aI = 10000000000 | |
178 | 178 | ||
179 | 179 | let aJ = "Africa_F_Africa" | |
180 | 180 | ||
181 | 181 | let aK = 39637 | |
182 | 182 | ||
183 | 183 | let aL = 10 | |
184 | 184 | ||
185 | 185 | let aM = 50000 | |
186 | 186 | ||
187 | 187 | let aN = 600000 | |
188 | 188 | ||
189 | 189 | let aO = ["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"] | |
190 | 190 | ||
191 | 191 | let aP = ["Americas", "Europe", "Asia", "Africa", "Oceania"] | |
192 | 192 | ||
193 | 193 | let aQ = 10000000 | |
194 | 194 | ||
195 | 195 | let aR = [15, 16, 17, 18, 19, 20] | |
196 | 196 | ||
197 | 197 | let aS = ["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_"] | |
198 | 198 | ||
199 | 199 | let aT = 6 | |
200 | 200 | ||
201 | 201 | let aU = 8 | |
202 | 202 | ||
203 | 203 | let aV = 9 | |
204 | 204 | ||
205 | 205 | let aW = 10 | |
206 | 206 | ||
207 | 207 | let aX = 10 | |
208 | 208 | ||
209 | 209 | let aY = 0 | |
210 | 210 | ||
211 | 211 | let aZ = 1 | |
212 | 212 | ||
213 | 213 | let ba = 2 | |
214 | 214 | ||
215 | 215 | let bb = 3 | |
216 | 216 | ||
217 | 217 | let bc = 4 | |
218 | 218 | ||
219 | 219 | let bd = 0 | |
220 | 220 | ||
221 | 221 | let be = 1 | |
222 | 222 | ||
223 | 223 | let bf = 2 | |
224 | 224 | ||
225 | 225 | let bg = 3 | |
226 | 226 | ||
227 | 227 | let bh = 0 | |
228 | 228 | ||
229 | 229 | let bi = 1 | |
230 | 230 | ||
231 | 231 | let bj = 2 | |
232 | 232 | ||
233 | 233 | let bk = 3 | |
234 | 234 | ||
235 | 235 | let bl = 0 | |
236 | 236 | ||
237 | 237 | let bm = 1 | |
238 | 238 | ||
239 | 239 | let bn = 2 | |
240 | 240 | ||
241 | 241 | func bo (bp) = ("no_" + bp) | |
242 | 242 | ||
243 | 243 | ||
244 | 244 | func bq (bp) = ("lcna_" + bp) | |
245 | 245 | ||
246 | 246 | ||
247 | 247 | func br (bp) = ("st_" + bp) | |
248 | 248 | ||
249 | 249 | ||
250 | 250 | func bs (bt,bp) = makeString(["las", bt, bp], "_") | |
251 | 251 | ||
252 | 252 | ||
253 | 253 | func bu (bv,bp,bw) = ((((("sttao_" + bv) + "_") + bp) + "_") + bw) | |
254 | 254 | ||
255 | 255 | ||
256 | 256 | func bx (P) = ("wh_" + P) | |
257 | 257 | ||
258 | 258 | ||
259 | 259 | func by (bp) = ("infraLevel_" + bp) | |
260 | 260 | ||
261 | 261 | ||
262 | 262 | func bz (P) = ("fortifications_" + P) | |
263 | 263 | ||
264 | 264 | ||
265 | 265 | func bA (bp) = ("duckCustomNameByAssetId_" + bp) | |
266 | 266 | ||
267 | 267 | ||
268 | 268 | func bB (c) = ("accountCustomNameByAddr_" + c) | |
269 | 269 | ||
270 | 270 | ||
271 | 271 | func bC (c) = ("accRefBy_" + c) | |
272 | 272 | ||
273 | 273 | ||
274 | 274 | func bD (A) = ("onboardArtActivatedOnDuck_" + A) | |
275 | 275 | ||
276 | 276 | ||
277 | 277 | func bE (c) = ("onboardArtActivatedDuckBy_" + c) | |
278 | 278 | ||
279 | 279 | ||
280 | 280 | func bF (c) = ("accReferrals_" + c) | |
281 | 281 | ||
282 | 282 | ||
283 | 283 | func bG (bp) = ("duckOwner_" + bp) | |
284 | 284 | ||
285 | 285 | ||
286 | 286 | func bH (bw) = ("stakedDuckByOwner_" + bw) | |
287 | 287 | ||
288 | 288 | ||
289 | 289 | func bI (A) = ("backPack_" + A) | |
290 | 290 | ||
291 | 291 | ||
292 | 292 | func bJ (A) = ("duckLocation_" + A) | |
293 | 293 | ||
294 | 294 | ||
295 | 295 | func bK (bL) = ("%s%s__userGwlReleaseTime__" + bL) | |
296 | 296 | ||
297 | 297 | ||
298 | 298 | func bM () = "emergencyWarehouseProducts" | |
299 | 299 | ||
300 | 300 | ||
301 | 301 | let bN = "deliveryFund" | |
302 | 302 | ||
303 | 303 | let bO = "deliveryLocked" | |
304 | 304 | ||
305 | 305 | let bP = "%s__lastTourId" | |
306 | 306 | ||
307 | 307 | func bQ (bR) = ("%s%d__tourStaticData__" + toString(bR)) | |
308 | 308 | ||
309 | 309 | ||
310 | 310 | func bS (bR) = ("%s%d__tourDynamicData__" + toString(bR)) | |
311 | 311 | ||
312 | 312 | ||
313 | 313 | func bT (bR,A) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bR), A], "__") | |
314 | 314 | ||
315 | 315 | ||
316 | 316 | let bU = 0 | |
317 | 317 | ||
318 | 318 | let bV = 1 | |
319 | 319 | ||
320 | 320 | let bW = 6 | |
321 | 321 | ||
322 | 322 | let bX = 1 | |
323 | 323 | ||
324 | 324 | func bY (bZ,bR) = { | |
325 | 325 | let ca = split(valueOrErrorMessage(getString(bZ, bQ(bR)), (("Error reading tournament " + toString(bR)) + " data")), "__") | |
326 | 326 | let cb = split_4C(valueOrErrorMessage(getString(bZ, bS(bR)), (("Error reading tournament " + toString(bR)) + " data")), "__") | |
327 | 327 | [ca, cb] | |
328 | 328 | } | |
329 | 329 | ||
330 | 330 | ||
331 | 331 | func cc (bZ,cd) = { | |
332 | 332 | let ce = valueOrElse(getInteger(bZ, bP), 0) | |
333 | 333 | let cf = split(cd, "_") | |
334 | 334 | let ax = lastBlock.timestamp | |
335 | 335 | let cg = bY(bZ, ce) | |
336 | 336 | let ca = cg[bU] | |
337 | 337 | let cb = cg[bV] | |
338 | 338 | if (if (if ((cf[bm] == "T")) | |
339 | 339 | then (parseIntValue(cf[bl]) == ce) | |
340 | 340 | else false) | |
341 | 341 | then (cb[bX] == "INPROGRESS") | |
342 | 342 | else false) | |
343 | 343 | then (parseIntValue(ca[bW]) > ax) | |
344 | 344 | else false | |
345 | 345 | } | |
346 | 346 | ||
347 | 347 | ||
348 | 348 | func ch (cd) = { | |
349 | 349 | let cf = split(cd, "_") | |
350 | 350 | let ax = lastBlock.timestamp | |
351 | 351 | let ci = parseIntValue(cf[bl]) | |
352 | 352 | let cj = parseIntValue(cf[bn]) | |
353 | 353 | if (if ((cf[bm] == "D")) | |
354 | 354 | then (ax > (ci + aN)) | |
355 | 355 | else false) | |
356 | 356 | then (3 >= cj) | |
357 | 357 | else false | |
358 | 358 | } | |
359 | 359 | ||
360 | 360 | ||
361 | 361 | func ck (cd) = { | |
362 | 362 | let cl = split(cd, "_")[bm] | |
363 | 363 | if ((cl != "T")) | |
364 | 364 | then (cl != "D") | |
365 | 365 | else false | |
366 | 366 | } | |
367 | 367 | ||
368 | 368 | ||
369 | 369 | func cm (bZ,cd) = { | |
370 | 370 | let ce = valueOrElse(getInteger(bZ, bP), 0) | |
371 | 371 | let cf = split(cd, "_") | |
372 | 372 | let ax = lastBlock.timestamp | |
373 | 373 | let cg = bY(bZ, ce) | |
374 | 374 | let ca = cg[bU] | |
375 | 375 | let cb = cg[bV] | |
376 | 376 | let cl = cf[bm] | |
377 | 377 | if (if ((cl != "T")) | |
378 | 378 | then (cl != "D") | |
379 | 379 | else false) | |
380 | 380 | then true | |
381 | 381 | else !(if (if (if ((cf[bm] == "T")) | |
382 | 382 | then (parseIntValue(cf[bl]) == ce) | |
383 | 383 | else false) | |
384 | 384 | then (cb[bX] == "INPROGRESS") | |
385 | 385 | else false) | |
386 | 386 | then (parseIntValue(ca[bW]) > ax) | |
387 | 387 | else false) | |
388 | 388 | } | |
389 | 389 | ||
390 | 390 | ||
391 | 391 | func cn (co) = (parseIntValue(co[aT]) * aQ) | |
392 | 392 | ||
393 | 393 | ||
394 | - | func cp (cq,cr) = throw(((("Cheat attempt: oldLoc=" + cq) + ", newLoc=") + cr)) | |
395 | - | ||
396 | - | ||
397 | - | let cs = false | |
394 | + | func cp (cq,cr,cs) = throw(((((("Cheat attempt: oldLoc=" + cq) + ", newLoc=") + cr) + ", case=") + toString(cs))) | |
395 | + | ||
398 | 396 | ||
399 | 397 | let ct = false | |
400 | 398 | ||
401 | - | let cu = true | |
402 | - | ||
403 | - | let cv = take(drop(this.bytes, 1), 1) | |
404 | - | ||
405 | - | let cw = { | |
406 | - | let cx = cv | |
407 | - | if ((base58'2W' == cx)) | |
399 | + | let cu = false | |
400 | + | ||
401 | + | let cv = true | |
402 | + | ||
403 | + | let cw = take(drop(this.bytes, 1), 1) | |
404 | + | ||
405 | + | let cx = { | |
406 | + | let cy = cw | |
407 | + | if ((base58'2W' == cy)) | |
408 | 408 | then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
409 | - | else if ((base58'2T' == | |
409 | + | else if ((base58'2T' == cy)) | |
410 | 410 | then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63' | |
411 | 411 | else throw("Unknown chain") | |
412 | 412 | } | |
413 | 413 | ||
414 | - | let | |
415 | - | let | |
416 | - | if ((base58'2W' == | |
414 | + | let cz = { | |
415 | + | let cy = cw | |
416 | + | if ((base58'2W' == cy)) | |
417 | 417 | then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv" | |
418 | - | else if ((base58'2T' == | |
418 | + | else if ((base58'2T' == cy)) | |
419 | 419 | then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy" | |
420 | 420 | else throw("Unknown chain") | |
421 | 421 | } | |
422 | 422 | ||
423 | - | let | |
424 | - | let | |
425 | - | if ((base58'2W' == | |
423 | + | let cA = { | |
424 | + | let cy = cw | |
425 | + | if ((base58'2W' == cy)) | |
426 | 426 | then 10000000000 | |
427 | - | else if ((base58'2T' == | |
427 | + | else if ((base58'2T' == cy)) | |
428 | 428 | then 100000000 | |
429 | 429 | else throw("Unknown chain") | |
430 | 430 | } | |
431 | 431 | ||
432 | - | let | |
433 | - | let | |
434 | - | if ((base58'2W' == | |
432 | + | let cB = { | |
433 | + | let cy = cw | |
434 | + | if ((base58'2W' == cy)) | |
435 | 435 | then 86400000 | |
436 | - | else if ((base58'2T' == | |
436 | + | else if ((base58'2T' == cy)) | |
437 | 437 | then 60000 | |
438 | 438 | else throw("Unknown chain") | |
439 | 439 | } | |
440 | 440 | ||
441 | - | let | |
442 | - | ||
443 | - | let | |
444 | - | ||
445 | - | let | |
446 | - | ||
447 | - | let | |
448 | - | ||
449 | - | let | |
450 | - | ||
451 | - | let | |
452 | - | ||
453 | - | let | |
454 | - | ||
455 | - | let | |
456 | - | ||
457 | - | let | |
458 | - | ||
459 | - | func | |
460 | - | ||
461 | - | ||
462 | - | let | |
463 | - | ||
464 | - | let | |
465 | - | ||
466 | - | let | |
467 | - | ||
468 | - | let | |
469 | - | ||
470 | - | let | |
471 | - | ||
472 | - | let | |
473 | - | ||
474 | - | func | |
475 | - | ||
476 | - | ||
477 | - | func | |
478 | - | ||
479 | - | ||
480 | - | func | |
481 | - | ||
482 | - | ||
483 | - | func | |
484 | - | ||
485 | - | ||
486 | - | let | |
487 | - | ||
488 | - | let | |
489 | - | ||
490 | - | let an = | |
491 | - | ||
492 | - | let | |
493 | - | ||
494 | - | let | |
495 | - | ||
496 | - | let | |
497 | - | ||
498 | - | let | |
499 | - | ||
500 | - | let | |
501 | - | ||
502 | - | let | |
503 | - | ||
504 | - | let | |
505 | - | ||
506 | - | let | |
507 | - | ||
508 | - | let | |
509 | - | ||
510 | - | let | |
511 | - | ||
512 | - | let | |
513 | - | ||
514 | - | let | |
515 | - | ||
516 | - | let | |
517 | - | ||
518 | - | let | |
519 | - | ||
520 | - | func | |
521 | - | ||
522 | - | ||
523 | - | func | |
524 | - | ||
525 | - | ||
526 | - | func | |
527 | - | ||
528 | - | ||
529 | - | func | |
530 | - | ||
531 | - | ||
532 | - | func | |
533 | - | ||
534 | - | ||
535 | - | func | |
536 | - | let | |
537 | - | if ($isInstanceOf( | |
441 | + | let cC = "__" | |
442 | + | ||
443 | + | let cD = 1000000 | |
444 | + | ||
445 | + | let cE = 100000000 | |
446 | + | ||
447 | + | let cF = 25 | |
448 | + | ||
449 | + | let cG = 100 | |
450 | + | ||
451 | + | let cH = 225 | |
452 | + | ||
453 | + | let cI = 400 | |
454 | + | ||
455 | + | let cJ = 625 | |
456 | + | ||
457 | + | let cK = [0, 1, 2, 3, 4, 5] | |
458 | + | ||
459 | + | func cL (cM,cN) = valueOrErrorMessage(getString(cM, cN), makeString(["mandatory ", toString(cM), ".", cN, " is not defined"], "")) | |
460 | + | ||
461 | + | ||
462 | + | let cO = 1 | |
463 | + | ||
464 | + | let cP = 2 | |
465 | + | ||
466 | + | let cQ = 3 | |
467 | + | ||
468 | + | let cR = 4 | |
469 | + | ||
470 | + | let cS = 7 | |
471 | + | ||
472 | + | let cT = 8 | |
473 | + | ||
474 | + | func cU () = "%s__restConfig" | |
475 | + | ||
476 | + | ||
477 | + | func cV () = "%s__restAddr" | |
478 | + | ||
479 | + | ||
480 | + | func cW (cX) = split_4C(cL(cX, cU()), cC) | |
481 | + | ||
482 | + | ||
483 | + | func cY (cZ,da) = valueOrErrorMessage(addressFromString(cZ[da]), ("Rest cfg doesn't contain address at index " + toString(da))) | |
484 | + | ||
485 | + | ||
486 | + | let db = addressFromStringValue(valueOrElse(getString(this, cV()), cz)) | |
487 | + | ||
488 | + | let cZ = cW(db) | |
489 | + | ||
490 | + | let an = cY(cZ, cO) | |
491 | + | ||
492 | + | let dc = cY(cZ, cP) | |
493 | + | ||
494 | + | let dd = cY(cZ, cQ) | |
495 | + | ||
496 | + | let de = cY(cZ, cR) | |
497 | + | ||
498 | + | let df = cY(cZ, cS) | |
499 | + | ||
500 | + | let dg = cY(cZ, cT) | |
501 | + | ||
502 | + | let dh = 0 | |
503 | + | ||
504 | + | let di = 1 | |
505 | + | ||
506 | + | let dj = 2 | |
507 | + | ||
508 | + | let dk = 3 | |
509 | + | ||
510 | + | let dl = "wlg_assetId" | |
511 | + | ||
512 | + | let dm = valueOrErrorMessage(getBinary(de, dl), "WLGOLD is not issued yet") | |
513 | + | ||
514 | + | let dn = "acresAssetId" | |
515 | + | ||
516 | + | let do = valueOrErrorMessage(getBinary(dg, dn), "ACRES is not issued yet") | |
517 | + | ||
518 | + | let dp = 2 | |
519 | + | ||
520 | + | func dq (cM) = ("finishBlockForAddr_" + cM) | |
521 | + | ||
522 | + | ||
523 | + | func dr () = "resTypesProportions" | |
524 | + | ||
525 | + | ||
526 | + | func ds (dt) = ("resTypesByContinent_" + dt) | |
527 | + | ||
528 | + | ||
529 | + | func du (bw) = ("stakedLandsByOwner_" + bw) | |
530 | + | ||
531 | + | ||
532 | + | func dv (bw) = ("stakedPiecesByOwner_" + bw) | |
533 | + | ||
534 | + | ||
535 | + | func dw (dx) = { | |
536 | + | let cy = dx | |
537 | + | if ($isInstanceOf(cy, "String")) | |
538 | 538 | then { | |
539 | - | let | |
540 | - | | |
539 | + | let dy = cy | |
540 | + | dy | |
541 | 541 | } | |
542 | 542 | else throw("fail to cast into String") | |
543 | 543 | } | |
544 | 544 | ||
545 | 545 | ||
546 | - | func | |
547 | - | let | |
548 | - | if ($isInstanceOf( | |
546 | + | func dz (dx) = { | |
547 | + | let cy = dx | |
548 | + | if ($isInstanceOf(cy, "Int")) | |
549 | 549 | then { | |
550 | - | let | |
551 | - | | |
550 | + | let dA = cy | |
551 | + | dA | |
552 | 552 | } | |
553 | 553 | else throw("fail to cast into Int") | |
554 | 554 | } | |
555 | 555 | ||
556 | 556 | ||
557 | - | func | |
558 | - | let | |
559 | - | if ($isInstanceOf( | |
557 | + | func dB (dx) = { | |
558 | + | let cy = dx | |
559 | + | if ($isInstanceOf(cy, "List[Any]")) | |
560 | 560 | then { | |
561 | - | let | |
562 | - | | |
561 | + | let dC = cy | |
562 | + | dC | |
563 | 563 | } | |
564 | 564 | else throw("fail to cast into List[Any]") | |
565 | 565 | } | |
566 | 566 | ||
567 | 567 | ||
568 | - | func | |
569 | - | let | |
570 | - | if ($isInstanceOf( | |
568 | + | func dD (dx) = { | |
569 | + | let cy = dx | |
570 | + | if ($isInstanceOf(cy, "Boolean")) | |
571 | 571 | then { | |
572 | - | let | |
573 | - | | |
572 | + | let dy = cy | |
573 | + | dy | |
574 | 574 | } | |
575 | 575 | else throw("fail to cast into Boolean") | |
576 | 576 | } | |
577 | 577 | ||
578 | 578 | ||
579 | - | func | |
580 | - | let | |
581 | - | if ($isInstanceOf( | |
579 | + | func dE (dF) = { | |
580 | + | let cy = dF | |
581 | + | if ($isInstanceOf(cy, "(String, Int)")) | |
582 | 582 | then { | |
583 | - | let | |
584 | - | | |
583 | + | let dG = cy | |
584 | + | dG | |
585 | 585 | } | |
586 | 586 | else throw("fail to cast into (String, Int)") | |
587 | 587 | } | |
588 | 588 | ||
589 | 589 | ||
590 | - | func | |
591 | - | let | |
592 | - | if (("S" == | |
593 | - | then | |
594 | - | else if (("M" == | |
595 | - | then | |
596 | - | else if (("L" == | |
597 | - | then | |
598 | - | else if (("XL" == | |
599 | - | then | |
600 | - | else if (("XXL" == | |
601 | - | then | |
590 | + | func dH (dI) = { | |
591 | + | let cy = dI | |
592 | + | if (("S" == cy)) | |
593 | + | then cF | |
594 | + | else if (("M" == cy)) | |
595 | + | then cG | |
596 | + | else if (("L" == cy)) | |
597 | + | then cH | |
598 | + | else if (("XL" == cy)) | |
599 | + | then cI | |
600 | + | else if (("XXL" == cy)) | |
601 | + | then cJ | |
602 | 602 | else throw("Unknown land size") | |
603 | 603 | } | |
604 | 604 | ||
605 | 605 | ||
606 | - | func | |
607 | - | ||
608 | - | ||
609 | - | func | |
610 | - | ||
611 | - | ||
612 | - | func | |
613 | - | ||
614 | - | ||
615 | - | func | |
616 | - | let | |
617 | - | let | |
618 | - | let | |
619 | - | (((toString(( | |
620 | - | } | |
621 | - | ||
622 | - | ||
623 | - | func | |
624 | - | let | |
625 | - | let | |
626 | - | (toInt( | |
627 | - | } | |
628 | - | ||
629 | - | ||
630 | - | let | |
631 | - | let | |
632 | - | if ((base58'2W' == | |
606 | + | func dJ (dy) = isDefined(parseInt(dy)) | |
607 | + | ||
608 | + | ||
609 | + | func dK () = "contractsBlocked" | |
610 | + | ||
611 | + | ||
612 | + | func dL (c) = ("lastTxIdByUser_" + c) | |
613 | + | ||
614 | + | ||
615 | + | func dM (dF,dN) = { | |
616 | + | let dO = pow(10, 0, dN, 0, 0, DOWN) | |
617 | + | let dP = toString((dF % dO)) | |
618 | + | let dQ = drop(toString(dO), (1 + size(dP))) | |
619 | + | (((toString((dF / dO)) + ".") + dQ) + dP) | |
620 | + | } | |
621 | + | ||
622 | + | ||
623 | + | func dR (dS,dT,dU) = { | |
624 | + | let dV = value(blockInfoByHeight(dT)) | |
625 | + | let dW = sha256((value(dV.vrf) + dU)) | |
626 | + | (toInt(dW) % dS) | |
627 | + | } | |
628 | + | ||
629 | + | ||
630 | + | let dX = { | |
631 | + | let cy = cw | |
632 | + | if ((base58'2W' == cy)) | |
633 | 633 | then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv") | |
634 | - | else if ((base58'2T' == | |
634 | + | else if ((base58'2T' == cy)) | |
635 | 635 | then this | |
636 | 636 | else throw("Unknown chain") | |
637 | 637 | } | |
638 | 638 | ||
639 | - | let | |
640 | - | let | |
641 | - | if ((base58'2W' == | |
639 | + | let dY = { | |
640 | + | let cy = cw | |
641 | + | if ((base58'2W' == cy)) | |
642 | 642 | then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb") | |
643 | - | else if ((base58'2T' == | |
643 | + | else if ((base58'2T' == cy)) | |
644 | 644 | then this | |
645 | 645 | else throw("Unknown chain") | |
646 | 646 | } | |
647 | 647 | ||
648 | - | let | |
649 | - | let | |
650 | - | if ((base58'2W' == | |
651 | - | then if ( | |
648 | + | let dZ = { | |
649 | + | let cy = cw | |
650 | + | if ((base58'2W' == cy)) | |
651 | + | then if (ct) | |
652 | 652 | then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm' | |
653 | 653 | else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
654 | - | else if ((base58'2T' == | |
654 | + | else if ((base58'2T' == cy)) | |
655 | 655 | then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
656 | 656 | else throw("Unknown chain") | |
657 | 657 | } | |
658 | 658 | ||
659 | - | let | |
660 | - | ||
661 | - | let | |
662 | - | ||
663 | - | let | |
664 | - | ||
665 | - | let | |
666 | - | ||
667 | - | let | |
668 | - | ||
669 | - | let | |
670 | - | let | |
671 | - | if ((base58'2W' == | |
659 | + | let ea = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' | |
660 | + | ||
661 | + | let eb = 300000 | |
662 | + | ||
663 | + | let ec = 5000000 | |
664 | + | ||
665 | + | let ed = 50 | |
666 | + | ||
667 | + | let ee = 10000000 | |
668 | + | ||
669 | + | let ef = { | |
670 | + | let cy = cw | |
671 | + | if ((base58'2W' == cy)) | |
672 | 672 | then 252289527462 | |
673 | - | else if ((base58'2T' == | |
673 | + | else if ((base58'2T' == cy)) | |
674 | 674 | then 2522895274 | |
675 | 675 | else throw("Unknown chain") | |
676 | 676 | } | |
677 | 677 | ||
678 | - | let | |
679 | - | let | |
680 | - | if ((base58'2W' == | |
678 | + | let eg = { | |
679 | + | let cy = cw | |
680 | + | if ((base58'2W' == cy)) | |
681 | 681 | then 250000000 | |
682 | - | else if ((base58'2T' == | |
682 | + | else if ((base58'2T' == cy)) | |
683 | 683 | then 250000000 | |
684 | 684 | else throw("Unknown chain") | |
685 | 685 | } | |
686 | 686 | ||
687 | - | let | |
688 | - | ||
689 | - | let | |
690 | - | ||
691 | - | let | |
692 | - | ||
693 | - | let | |
694 | - | ||
695 | - | let | |
696 | - | ||
697 | - | let | |
698 | - | ||
699 | - | let | |
700 | - | ||
701 | - | let | |
702 | - | ||
703 | - | func | |
704 | - | ||
705 | - | ||
706 | - | func | |
707 | - | ||
708 | - | ||
709 | - | func | |
710 | - | ||
711 | - | ||
712 | - | func | |
713 | - | ||
714 | - | ||
715 | - | func | |
716 | - | ||
717 | - | ||
718 | - | func | |
719 | - | ||
720 | - | ||
721 | - | func | |
722 | - | ||
723 | - | ||
724 | - | func | |
725 | - | ||
726 | - | ||
727 | - | let | |
728 | - | ||
729 | - | let | |
730 | - | ||
731 | - | let | |
732 | - | ||
733 | - | let | |
734 | - | ||
735 | - | let | |
736 | - | ||
737 | - | let | |
738 | - | ||
739 | - | let | |
740 | - | ||
741 | - | func | |
742 | - | ||
743 | - | ||
744 | - | func | |
745 | - | let | |
746 | - | then ((( | |
747 | - | else -((((-( | |
748 | - | ( | |
749 | - | } | |
750 | - | ||
751 | - | ||
752 | - | func | |
753 | - | let | |
754 | - | if ((0 >= | |
687 | + | let eh = 2500000000 | |
688 | + | ||
689 | + | let ei = toBigInt(5) | |
690 | + | ||
691 | + | let ej = toBigInt(20) | |
692 | + | ||
693 | + | let ek = toBigInt((20 * 20)) | |
694 | + | ||
695 | + | let el = toBigInt(((20 * 20) * 20)) | |
696 | + | ||
697 | + | let em = toBigInt((((20 * 20) * 20) * 20)) | |
698 | + | ||
699 | + | let en = toBigInt(((((20 * 20) * 20) * 20) * 20)) | |
700 | + | ||
701 | + | let eo = 500 | |
702 | + | ||
703 | + | func ep () = "nextLandNum" | |
704 | + | ||
705 | + | ||
706 | + | func eq (er) = ("lcn_" + er) | |
707 | + | ||
708 | + | ||
709 | + | func es (et) = ("la_" + et) | |
710 | + | ||
711 | + | ||
712 | + | func eu (bp,bw) = ((("ilao_" + bp) + "_") + bw) | |
713 | + | ||
714 | + | ||
715 | + | func ev (et) = ("lo_" + et) | |
716 | + | ||
717 | + | ||
718 | + | func ew (er) = ("duckByCustomName_" + er) | |
719 | + | ||
720 | + | ||
721 | + | func ex (er) = ("accountByCustomName_" + er) | |
722 | + | ||
723 | + | ||
724 | + | func ey () = "oldiesList" | |
725 | + | ||
726 | + | ||
727 | + | let ez = 0 | |
728 | + | ||
729 | + | let eA = 1 | |
730 | + | ||
731 | + | let eB = 2 | |
732 | + | ||
733 | + | let eC = 0 | |
734 | + | ||
735 | + | let eD = 5 | |
736 | + | ||
737 | + | let eE = 6 | |
738 | + | ||
739 | + | let eF = 7 | |
740 | + | ||
741 | + | func eG (et,dI) = ((aC + et) + dI) | |
742 | + | ||
743 | + | ||
744 | + | func eH (eI,eJ) = { | |
745 | + | let eK = if ((eI >= 0)) | |
746 | + | then (((eI + eJ) - 1) / eJ) | |
747 | + | else -((((-(eI) + eJ) - 1) / eJ)) | |
748 | + | (eK * cE) | |
749 | + | } | |
750 | + | ||
751 | + | ||
752 | + | func eL (eM,eN) = { | |
753 | + | let eO = (((((eN[0] + eN[1]) + eN[2]) + eN[3]) + eN[4]) + eN[5]) | |
754 | + | if ((0 >= eO)) | |
755 | 755 | then throw("Zero weights sum") | |
756 | 756 | else { | |
757 | - | let | |
758 | - | func | |
759 | - | ||
760 | - | let | |
761 | - | let | |
762 | - | let | |
763 | - | func | |
764 | - | then | |
765 | - | else | |
766 | - | ||
767 | - | func | |
768 | - | then | |
757 | + | let eP = fraction(eM, cD, eO) | |
758 | + | func eQ (eR,eS) = (eR :+ fraction(eS, eP, cD)) | |
759 | + | ||
760 | + | let eT = eN | |
761 | + | let eU = size(eT) | |
762 | + | let eV = nil | |
763 | + | func eW (eX,eY) = if ((eY >= eU)) | |
764 | + | then eX | |
765 | + | else eQ(eX, eT[eY]) | |
766 | + | ||
767 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
768 | + | then eX | |
769 | 769 | else throw("List size exceeds 6") | |
770 | 770 | ||
771 | - | | |
772 | - | } | |
773 | - | } | |
774 | - | ||
775 | - | ||
776 | - | func | |
777 | - | let | |
778 | - | if ((size( | |
771 | + | eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6) | |
772 | + | } | |
773 | + | } | |
774 | + | ||
775 | + | ||
776 | + | func fa (eM) = { | |
777 | + | let fb = split(value(getString(dr())), "_") | |
778 | + | if ((size(fb) != aF)) | |
779 | 779 | then throw("Wrong proportions data") | |
780 | 780 | else { | |
781 | - | let | |
782 | - | | |
783 | - | } | |
784 | - | } | |
785 | - | ||
786 | - | ||
787 | - | func | |
788 | - | let | |
789 | - | func | |
790 | - | let | |
791 | - | if ((0 > | |
792 | - | then throw(((((("Not enough material idx=" + toString( | |
793 | - | else ( | |
781 | + | let fc = [parseIntValue(fb[0]), parseIntValue(fb[1]), parseIntValue(fb[2]), parseIntValue(fb[3]), parseIntValue(fb[4]), parseIntValue(fb[5])] | |
782 | + | eL(eM, fc) | |
783 | + | } | |
784 | + | } | |
785 | + | ||
786 | + | ||
787 | + | func fd (fe,ff,fg) = { | |
788 | + | let fh = fa(fg) | |
789 | + | func fi (eR,da) = { | |
790 | + | let fj = (parseIntValue(ff[da]) - fh[da]) | |
791 | + | if ((0 > fj)) | |
792 | + | then throw(((((("Not enough material idx=" + toString(da)) + ", you have ") + ff[da]) + ", but need ") + toString(fh[da]))) | |
793 | + | else (eR :+ toString(fj)) | |
794 | 794 | } | |
795 | 795 | ||
796 | - | if ( | |
796 | + | if (fe) | |
797 | 797 | then { | |
798 | - | let | |
799 | - | let | |
800 | - | let | |
801 | - | func | |
802 | - | then | |
803 | - | else | |
804 | - | ||
805 | - | func | |
806 | - | then | |
798 | + | let eT = cK | |
799 | + | let eU = size(eT) | |
800 | + | let eV = nil | |
801 | + | func eW (eX,eY) = if ((eY >= eU)) | |
802 | + | then eX | |
803 | + | else fi(eX, eT[eY]) | |
804 | + | ||
805 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
806 | + | then eX | |
807 | 807 | else throw("List size exceeds 6") | |
808 | 808 | ||
809 | - | | |
810 | - | } | |
811 | - | else | |
812 | - | } | |
813 | - | ||
814 | - | ||
815 | - | func | |
816 | - | then $Tuple2( | |
809 | + | eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6) | |
810 | + | } | |
811 | + | else ff | |
812 | + | } | |
813 | + | ||
814 | + | ||
815 | + | func fk (fl,fm) = if ((fm == "")) | |
816 | + | then $Tuple2(fl, false) | |
817 | 817 | else { | |
818 | - | func | |
819 | - | let | |
820 | - | if ((size( | |
818 | + | func fn (eR,fo) = { | |
819 | + | let fp = split(fo, ",") | |
820 | + | if ((size(fp) != 2)) | |
821 | 821 | then throw("Incorrect format, should be index,amount") | |
822 | 822 | else { | |
823 | - | let | |
824 | - | if (if ((0 > | |
823 | + | let da = parseIntValue(fp[0]) | |
824 | + | if (if ((0 > da)) | |
825 | 825 | then true | |
826 | - | else ( | |
826 | + | else (da >= size(aS))) | |
827 | 827 | then throw("Unknown product idx") | |
828 | 828 | else { | |
829 | - | let | |
830 | - | let | |
831 | - | if ((size( | |
832 | - | then throw((("You don't have " + aO[ | |
829 | + | let fq = parseIntValue(fp[1]) | |
830 | + | let fr = split(eR._1, (fp[0] + ":")) | |
831 | + | if ((size(fr) != 2)) | |
832 | + | then throw((("You don't have " + aO[da]) + " equipped")) | |
833 | 833 | else { | |
834 | - | let | |
835 | - | let | |
834 | + | let fs = fr[1] | |
835 | + | let ft = if (dJ(take(drop(fs, 1), 1))) | |
836 | 836 | then 2 | |
837 | 837 | else 1 | |
838 | - | let | |
839 | - | let | |
840 | - | let | |
841 | - | then ( | |
842 | - | else throw(((((("You equipped " + toString( | |
843 | - | $Tuple2((((( | |
838 | + | let fu = parseIntValue(take(fs, ft)) | |
839 | + | let fv = drop(fs, ft) | |
840 | + | let fw = if ((fu >= fq)) | |
841 | + | then (fu - fq) | |
842 | + | else throw(((((("You equipped " + toString(fu)) + " of ") + aO[da]) + ", but tried to use ") + toString(fq))) | |
843 | + | $Tuple2(((((fr[0] + fp[0]) + ":") + toString(fw)) + fv), if (eR._2) | |
844 | 844 | then true | |
845 | - | else if (if (( | |
846 | - | then (8 >= | |
845 | + | else if (if ((da >= 6)) | |
846 | + | then (8 >= da) | |
847 | 847 | else false) | |
848 | - | then ( | |
848 | + | then (fw == 0) | |
849 | 849 | else false) | |
850 | 850 | } | |
851 | 851 | } | |
852 | 852 | } | |
853 | 853 | } | |
854 | 854 | ||
855 | - | let | |
856 | - | let | |
857 | - | let | |
858 | - | func | |
859 | - | then | |
860 | - | else | |
861 | - | ||
862 | - | func | |
863 | - | then | |
855 | + | let eT = split(fm, "_") | |
856 | + | let eU = size(eT) | |
857 | + | let eV = $Tuple2(fl, false) | |
858 | + | func eW (eX,eY) = if ((eY >= eU)) | |
859 | + | then eX | |
860 | + | else fn(eX, eT[eY]) | |
861 | + | ||
862 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
863 | + | then eX | |
864 | 864 | else throw("List size exceeds 10") | |
865 | 865 | ||
866 | - | | |
866 | + | eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
867 | 867 | } | |
868 | 868 | ||
869 | 869 | ||
870 | - | func | |
871 | - | let | |
870 | + | func fx (fy) = { | |
871 | + | let fz = if ((fy == "")) | |
872 | 872 | then nil | |
873 | - | else split_4C( | |
874 | - | func | |
875 | - | let | |
876 | - | let | |
877 | - | then parseIntValue( | |
873 | + | else split_4C(fy, "_") | |
874 | + | func fA (eR,co) = { | |
875 | + | let fB = (size(eR) / 8) | |
876 | + | let fu = if ((size(fz) > fB)) | |
877 | + | then parseIntValue(fz[fB]) | |
878 | 878 | else 0 | |
879 | - | ( | |
879 | + | (eR + toBytes(fu)) | |
880 | 880 | } | |
881 | 881 | ||
882 | - | let | |
883 | - | let | |
884 | - | let | |
885 | - | func | |
886 | - | then | |
887 | - | else | |
888 | - | ||
889 | - | func | |
890 | - | then | |
882 | + | let eT = aS | |
883 | + | let eU = size(eT) | |
884 | + | let eV = base58'' | |
885 | + | func eW (eX,eY) = if ((eY >= eU)) | |
886 | + | then eX | |
887 | + | else fA(eX, eT[eY]) | |
888 | + | ||
889 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
890 | + | then eX | |
891 | 891 | else throw("List size exceeds 50") | |
892 | 892 | ||
893 | - | | |
894 | - | } | |
895 | - | ||
896 | - | ||
897 | - | func | |
898 | - | func | |
899 | - | let | |
900 | - | let | |
901 | - | ( | |
893 | + | eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 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) | |
894 | + | } | |
895 | + | ||
896 | + | ||
897 | + | func fC (fD) = { | |
898 | + | func fE (eR,co) = { | |
899 | + | let fB = size(eR) | |
900 | + | let fF = take(drop(fD, (8 * fB)), 8) | |
901 | + | (eR :+ toString(toInt(fF))) | |
902 | 902 | } | |
903 | 903 | ||
904 | 904 | makeString_2C({ | |
905 | - | let | |
906 | - | let | |
907 | - | let | |
908 | - | func | |
909 | - | then | |
910 | - | else | |
911 | - | ||
912 | - | func | |
913 | - | then | |
905 | + | let eT = aS | |
906 | + | let eU = size(eT) | |
907 | + | let eV = nil | |
908 | + | func eW (eX,eY) = if ((eY >= eU)) | |
909 | + | then eX | |
910 | + | else fE(eX, eT[eY]) | |
911 | + | ||
912 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
913 | + | then eX | |
914 | 914 | else throw("List size exceeds 50") | |
915 | 915 | ||
916 | - | | |
916 | + | eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 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) | |
917 | 917 | }, "_") | |
918 | 918 | } | |
919 | 919 | ||
920 | 920 | ||
921 | - | func | |
922 | - | func | |
923 | - | let | |
924 | - | then | |
921 | + | func fG (fH,fI) = { | |
922 | + | func fJ (eR,fB) = { | |
923 | + | let fK = if ((size(fH) > (7 + fB))) | |
924 | + | then fH[(7 + fB)] | |
925 | 925 | else 0 | |
926 | - | if ((parseIntValue( | |
927 | - | then throw(("Requirement not satisfied: " + j[ | |
926 | + | if ((parseIntValue(fI[fB]) > (fH[fB] + fK))) | |
927 | + | then throw(("Requirement not satisfied: " + j[fB])) | |
928 | 928 | else true | |
929 | 929 | } | |
930 | 930 | ||
931 | - | let | |
932 | - | let | |
933 | - | let | |
934 | - | func | |
935 | - | then | |
936 | - | else | |
937 | - | ||
938 | - | func | |
939 | - | then | |
931 | + | let eT = [0, 1, 2, 3, 4, 5, 6] | |
932 | + | let eU = size(eT) | |
933 | + | let eV = false | |
934 | + | func eW (eX,eY) = if ((eY >= eU)) | |
935 | + | then eX | |
936 | + | else fJ(eX, eT[eY]) | |
937 | + | ||
938 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
939 | + | then eX | |
940 | 940 | else throw("List size exceeds 7") | |
941 | 941 | ||
942 | - | | |
943 | - | } | |
944 | - | ||
945 | - | ||
946 | - | func | |
947 | - | let | |
948 | - | if ((size( | |
942 | + | eZ(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7) | |
943 | + | } | |
944 | + | ||
945 | + | ||
946 | + | func fL (fM,fz,fN,fH,fO,fP) = { | |
947 | + | let fp = split(fM, ":") | |
948 | + | if ((size(fp) != 2)) | |
949 | 949 | then throw("Incorrect format, should be index:amount") | |
950 | - | else if (if (!( | |
951 | - | then (size( | |
950 | + | else if (if (!(fN)) | |
951 | + | then (size(fp[0]) != 2) | |
952 | 952 | else false) | |
953 | 953 | then throw("Product idx should be 2 digits, zero padded") | |
954 | 954 | else { | |
955 | - | let | |
956 | - | let | |
957 | - | if (!(containsElement(aR, | |
958 | - | then throw((("Product '" + aO[ | |
959 | - | else if ((0 > | |
955 | + | let fQ = parseIntValue(fp[0]) | |
956 | + | let fR = parseIntValue(fp[1]) | |
957 | + | if (!(containsElement(aR, fQ))) | |
958 | + | then throw((("Product '" + aO[fQ]) + "' cannot be used for land defense")) | |
959 | + | else if ((0 > fR)) | |
960 | 960 | then throw("Count can't be negative") | |
961 | - | else if (( | |
962 | - | then throw(((("Can't put more than " + toString(t)) + " of ") + aO[ | |
963 | - | else if (( | |
964 | - | then $Tuple3( | |
961 | + | else if ((fR > t)) | |
962 | + | then throw(((("Can't put more than " + toString(t)) + " of ") + aO[fQ])) | |
963 | + | else if ((fR == 0)) | |
964 | + | then $Tuple3(fz, fO, fP) | |
965 | 965 | else { | |
966 | - | let | |
967 | - | let | |
968 | - | let | |
969 | - | let co = split(aS[ | |
970 | - | if (if (!( | |
971 | - | then ( | |
966 | + | let fS = take(fz, (8 * fQ)) | |
967 | + | let fu = toInt(take(drop(fz, (8 * fQ)), 8)) | |
968 | + | let fv = drop(fz, (8 * (fQ + 1))) | |
969 | + | let co = split(aS[fQ], "_") | |
970 | + | if (if (!(fN)) | |
971 | + | then (fR > fu) | |
972 | 972 | else false) | |
973 | - | then throw(((((("You have " + toString( | |
973 | + | then throw(((((("You have " + toString(fu)) + " of ") + aO[fQ]) + ", but tried to use ") + toString(fR))) | |
974 | 974 | else { | |
975 | - | let | |
976 | - | then | |
975 | + | let fw = if (if (!(fN)) | |
976 | + | then fG(fH, split(co[aV], ",")) | |
977 | 977 | else false) | |
978 | - | then ( | |
979 | - | else ( | |
980 | - | let | |
981 | - | $Tuple3((( | |
978 | + | then (fu - fR) | |
979 | + | else (fu + fR) | |
980 | + | let fT = (eH(fw, aX) - eH(fu, aX)) | |
981 | + | $Tuple3(((fS + toBytes(fw)) + fv), (fO + fT), (fP - fT)) | |
982 | 982 | } | |
983 | 983 | } | |
984 | 984 | } | |
985 | 985 | } | |
986 | 986 | ||
987 | 987 | ||
988 | - | func | |
989 | - | let | |
990 | - | if ((size( | |
988 | + | func fU (fM,fz,fN,fV,fW,fX,fH) = { | |
989 | + | let fp = split(fM, ":") | |
990 | + | if ((size(fp) != 2)) | |
991 | 991 | then throw("Incorrect format, should be index:amount") | |
992 | - | else if (if (!( | |
993 | - | then (size( | |
992 | + | else if (if (!(fN)) | |
993 | + | then (size(fp[0]) != 2) | |
994 | 994 | else false) | |
995 | 995 | then throw("Product idx should be 2 digits, zero padded") | |
996 | 996 | else { | |
997 | - | let | |
998 | - | let | |
999 | - | if (if ((0 > | |
997 | + | let fQ = parseIntValue(fp[0]) | |
998 | + | let fR = parseIntValue(fp[1]) | |
999 | + | if (if ((0 > fQ)) | |
1000 | 1000 | then true | |
1001 | - | else ( | |
1001 | + | else (fQ >= size(aS))) | |
1002 | 1002 | then throw("Unknown product idx") | |
1003 | - | else if ((0 > | |
1003 | + | else if ((0 > fR)) | |
1004 | 1004 | then throw("Count can't be negative") | |
1005 | - | else if (( | |
1006 | - | then throw(((("Can't put more than " + toString(t)) + " of ") + aO[ | |
1007 | - | else if (( | |
1008 | - | then $Tuple2( | |
1005 | + | else if ((fR > t)) | |
1006 | + | then throw(((("Can't put more than " + toString(t)) + " of ") + aO[fQ])) | |
1007 | + | else if ((fR == 0)) | |
1008 | + | then $Tuple2(fz, false) | |
1009 | 1009 | else { | |
1010 | - | let | |
1011 | - | let | |
1012 | - | let | |
1013 | - | let co = split(aS[ | |
1014 | - | if (if (!( | |
1015 | - | then ( | |
1010 | + | let fS = take(fz, (8 * fQ)) | |
1011 | + | let fu = toInt(take(drop(fz, (8 * fQ)), 8)) | |
1012 | + | let fv = drop(fz, (8 * (fQ + 1))) | |
1013 | + | let co = split(aS[fQ], "_") | |
1014 | + | if (if (!(fN)) | |
1015 | + | then (fR > fu) | |
1016 | 1016 | else false) | |
1017 | - | then throw(((((("You have " + toString( | |
1017 | + | then throw(((((("You have " + toString(fu)) + " of ") + aO[fQ]) + ", but tried to use ") + toString(fR))) | |
1018 | 1018 | else { | |
1019 | - | let | |
1020 | - | then | |
1019 | + | let fY = if (if (!(fN)) | |
1020 | + | then fG(fH, split(co[aV], ",")) | |
1021 | 1021 | else false) | |
1022 | 1022 | then { | |
1023 | - | let | |
1024 | - | if (( | |
1023 | + | let fZ = co[aW] | |
1024 | + | if ((fZ == "")) | |
1025 | 1025 | then throw("Item cannot be equipped") | |
1026 | 1026 | else { | |
1027 | - | let | |
1028 | - | let | |
1029 | - | if (( | |
1027 | + | let ga = parseIntValue(fZ) | |
1028 | + | let gb = (ga / 100) | |
1029 | + | if ((fV != gb)) | |
1030 | 1030 | then throw("Segment incompatible") | |
1031 | 1031 | else { | |
1032 | - | let | |
1033 | - | if (( | |
1032 | + | let gc = ((ga % 100) / 10) | |
1033 | + | if ((fW != gc)) | |
1034 | 1034 | then throw("Slot incompatible") | |
1035 | 1035 | else { | |
1036 | - | let | |
1037 | - | if (if (( | |
1038 | - | then ( | |
1036 | + | let gd = (ga % 10) | |
1037 | + | if (if ((fX != 0)) | |
1038 | + | then (gd > 1) | |
1039 | 1039 | else false) | |
1040 | 1040 | then throw("Big items should occupy slot 0") | |
1041 | - | else ( | |
1041 | + | else (gd > 1) | |
1042 | 1042 | } | |
1043 | 1043 | } | |
1044 | 1044 | } | |
1045 | 1045 | } | |
1046 | 1046 | else false | |
1047 | - | $Tuple2((( | |
1048 | - | then | |
1049 | - | else -( | |
1047 | + | $Tuple2(((fS + toBytes((fu + (if (fN) | |
1048 | + | then fR | |
1049 | + | else -(fR))))) + fv), fY) | |
1050 | 1050 | } | |
1051 | 1051 | } | |
1052 | 1052 | } | |
1053 | 1053 | } | |
1054 | 1054 | ||
1055 | 1055 | ||
1056 | - | func | |
1056 | + | func ge (gf,gg,fN,fV,fW,gh) = if ((gf != "")) | |
1057 | 1057 | then { | |
1058 | - | let | |
1059 | - | if ((size( | |
1058 | + | let gi = split(gf, ",") | |
1059 | + | if ((size(gi) > s)) | |
1060 | 1060 | then throw("Wrong slots format") | |
1061 | 1061 | else { | |
1062 | - | let | |
1063 | - | let | |
1064 | - | then | |
1062 | + | let gj = gi[0] | |
1063 | + | let gk = if ((size(gi) > 1)) | |
1064 | + | then gi[1] | |
1065 | 1065 | else "" | |
1066 | - | if (if (( | |
1067 | - | then ( | |
1066 | + | if (if ((gj == "")) | |
1067 | + | then (gk == "") | |
1068 | 1068 | else false) | |
1069 | - | then | |
1069 | + | then gg | |
1070 | 1070 | else { | |
1071 | - | let | |
1072 | - | then | |
1073 | - | else $Tuple2( | |
1074 | - | if (( | |
1075 | - | then if ( | |
1071 | + | let gl = if ((gj != "")) | |
1072 | + | then fU(gj, gg, fN, fV, fW, 0, gh) | |
1073 | + | else $Tuple2(gg, false) | |
1074 | + | if ((gk != "")) | |
1075 | + | then if (gl._2) | |
1076 | 1076 | then throw("Big item already occupies slot") | |
1077 | - | else | |
1078 | - | else | |
1077 | + | else fU(gk, gl._1, fN, fV, fW, 1, gh)._1 | |
1078 | + | else gl._1 | |
1079 | 1079 | } | |
1080 | 1080 | } | |
1081 | 1081 | } | |
1082 | - | else | |
1083 | - | ||
1084 | - | ||
1085 | - | func | |
1086 | - | func | |
1087 | - | let | |
1088 | - | let | |
1089 | - | if ((size( | |
1082 | + | else gg | |
1083 | + | ||
1084 | + | ||
1085 | + | func gm (gn,go,fN,gh) = { | |
1086 | + | func fV (eR,gp) = { | |
1087 | + | let fB = eR._1 | |
1088 | + | let fW = split(gp, ";") | |
1089 | + | if ((size(fW) != r)) | |
1090 | 1090 | then throw("Wrong segment format") | |
1091 | 1091 | else { | |
1092 | - | let | |
1093 | - | let | |
1094 | - | if (if (( | |
1095 | - | then ( | |
1092 | + | let gq = fW[0] | |
1093 | + | let gr = fW[1] | |
1094 | + | if (if ((gq == "")) | |
1095 | + | then (gr == "") | |
1096 | 1096 | else false) | |
1097 | - | then $Tuple2(( | |
1097 | + | then $Tuple2((fB + 1), eR._2) | |
1098 | 1098 | else { | |
1099 | - | let | |
1100 | - | $Tuple2(( | |
1099 | + | let gs = ge(gq, eR._2, fN, fB, 0, gh) | |
1100 | + | $Tuple2((fB + 1), ge(gr, gs, fN, fB, 1, gh)) | |
1101 | 1101 | } | |
1102 | 1102 | } | |
1103 | 1103 | } | |
1104 | 1104 | ||
1105 | - | ( let | |
1106 | - | let | |
1107 | - | let | |
1108 | - | func | |
1109 | - | then | |
1110 | - | else | |
1111 | - | ||
1112 | - | func | |
1113 | - | then | |
1105 | + | ( let eT = gn | |
1106 | + | let eU = size(eT) | |
1107 | + | let eV = $Tuple2(0, go) | |
1108 | + | func eW (eX,eY) = if ((eY >= eU)) | |
1109 | + | then eX | |
1110 | + | else fV(eX, eT[eY]) | |
1111 | + | ||
1112 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
1113 | + | then eX | |
1114 | 1114 | else throw("List size exceeds 6") | |
1115 | 1115 | ||
1116 | - | | |
1117 | - | } | |
1118 | - | ||
1119 | - | ||
1120 | - | func | |
1116 | + | eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6))._2 | |
1117 | + | } | |
1118 | + | ||
1119 | + | ||
1120 | + | func gt (gn,go,fO,fP,fN,fH) = if ((3 > size(gn))) | |
1121 | 1121 | then throw("At least duck, mines and traps parts are required") | |
1122 | 1122 | else { | |
1123 | - | func | |
1124 | - | let | |
1125 | - | if (( | |
1126 | - | then $Tuple4(( | |
1123 | + | func fV (eR,gp) = { | |
1124 | + | let fB = eR._1 | |
1125 | + | if ((fB == 0)) | |
1126 | + | then $Tuple4((fB + 1), eR._2, eR._3, eR._4) | |
1127 | 1127 | else { | |
1128 | - | let | |
1129 | - | $Tuple4(( | |
1128 | + | let gu = fL(gp, eR._2, fN, fH, eR._3, eR._4) | |
1129 | + | $Tuple4((fB + 1), gu._1, gu._2, gu._3) | |
1130 | 1130 | } | |
1131 | 1131 | } | |
1132 | 1132 | ||
1133 | - | let | |
1134 | - | let | |
1135 | - | let | |
1136 | - | let | |
1137 | - | func | |
1138 | - | then | |
1139 | - | else | |
1140 | - | ||
1141 | - | func | |
1142 | - | then | |
1133 | + | let gv = { | |
1134 | + | let eT = gn | |
1135 | + | let eU = size(eT) | |
1136 | + | let eV = $Tuple4(0, go, fO, fP) | |
1137 | + | func eW (eX,eY) = if ((eY >= eU)) | |
1138 | + | then eX | |
1139 | + | else fV(eX, eT[eY]) | |
1140 | + | ||
1141 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
1142 | + | then eX | |
1143 | 1143 | else throw("List size exceeds 10") | |
1144 | 1144 | ||
1145 | - | | |
1146 | - | } | |
1147 | - | $Tuple3( | |
1145 | + | eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1146 | + | } | |
1147 | + | $Tuple3(gv._2, gv._3, gv._4) | |
1148 | 1148 | } | |
1149 | 1149 | ||
1150 | 1150 | ||
1151 | - | func | |
1152 | - | let | |
1153 | - | let | |
1154 | - | let | |
1155 | - | let | |
1156 | - | let ao = if (( | |
1151 | + | func gw (A) = { | |
1152 | + | let gx = F(A) | |
1153 | + | let gy = split(valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
1154 | + | let gz = gm(gy, ea, true, nil) | |
1155 | + | let gA = split(gy[p], ";")[1] | |
1156 | + | let ao = if ((gA == "")) | |
1157 | 1157 | then 0 | |
1158 | 1158 | else { | |
1159 | - | let | |
1160 | - | if (( | |
1159 | + | let gB = split(gA, ",")[0] | |
1160 | + | if ((gB == "")) | |
1161 | 1161 | then 0 | |
1162 | 1162 | else { | |
1163 | - | let | |
1164 | - | let | |
1165 | - | let | |
1166 | - | if (if (if (if (if (( | |
1163 | + | let fM = split(gB, ":") | |
1164 | + | let da = fM[0] | |
1165 | + | let gC = fM[1] | |
1166 | + | if (if (if (if (if ((da == "06")) | |
1167 | 1167 | then true | |
1168 | - | else ( | |
1168 | + | else (da == "07")) | |
1169 | 1169 | then true | |
1170 | - | else ( | |
1171 | - | then ( | |
1170 | + | else (da == "08")) | |
1171 | + | then (gC != "") | |
1172 | 1172 | else false) | |
1173 | - | then (parseIntValue( | |
1173 | + | then (parseIntValue(gC) > 0) | |
1174 | 1174 | else false) | |
1175 | - | then parseIntValue(split(aS[parseIntValue( | |
1175 | + | then parseIntValue(split(aS[parseIntValue(da)], "_")[aU]) | |
1176 | 1176 | else 0 | |
1177 | 1177 | } | |
1178 | 1178 | } | |
1179 | - | let | |
1180 | - | let | |
1181 | - | ( | |
1182 | - | } | |
1183 | - | ||
1184 | - | ||
1185 | - | func | |
1179 | + | let gh = am(this, A, ao, true) | |
1180 | + | let gD = gm(gy, gz, false, gh) | |
1181 | + | (gD == gD) | |
1182 | + | } | |
1183 | + | ||
1184 | + | ||
1185 | + | func gE (gF,gG,gH,gI) = if ((size(gF) != aF)) | |
1186 | 1186 | then throw("Wrong proportions data") | |
1187 | 1187 | else { | |
1188 | - | func | |
1189 | - | let | |
1190 | - | if ((0 > | |
1191 | - | then throw(((((((("Panic! Pieces of type=" + toString( | |
1192 | - | else ( | |
1193 | - | } | |
1194 | - | ||
1195 | - | let | |
1196 | - | let | |
1197 | - | let | |
1198 | - | func | |
1199 | - | then | |
1200 | - | else | |
1201 | - | ||
1202 | - | func | |
1203 | - | then | |
1188 | + | func gJ (eR,gK) = { | |
1189 | + | let fj = (parseIntValue(gF[gK]) + ((gI * gG[gK]) * gH)) | |
1190 | + | if ((0 > fj)) | |
1191 | + | then throw(((((((("Panic! Pieces of type=" + toString(gK)) + ", sign=") + toString(gI)) + ", terrainCounts[i]=") + toString(gG[gK])) + ", landSizeIndex=") + toString(gH))) | |
1192 | + | else (eR :+ toString(fj)) | |
1193 | + | } | |
1194 | + | ||
1195 | + | let eT = cK | |
1196 | + | let eU = size(eT) | |
1197 | + | let eV = nil | |
1198 | + | func eW (eX,eY) = if ((eY >= eU)) | |
1199 | + | then eX | |
1200 | + | else gJ(eX, eT[eY]) | |
1201 | + | ||
1202 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
1203 | + | then eX | |
1204 | 1204 | else throw("List size exceeds 6") | |
1205 | 1205 | ||
1206 | - | | |
1206 | + | eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6) | |
1207 | 1207 | } | |
1208 | 1208 | ||
1209 | 1209 | ||
1210 | - | func | |
1211 | - | let | |
1212 | - | makeString( | |
1213 | - | } | |
1214 | - | ||
1215 | - | ||
1216 | - | func | |
1217 | - | ||
1218 | - | ||
1219 | - | func | |
1220 | - | func | |
1221 | - | let | |
1222 | - | ( | |
1210 | + | func gL (gG,gH,gI) = { | |
1211 | + | let gF = split(valueOrElse(getString(dr()), "0_0_0_0_0_0"), "_") | |
1212 | + | makeString(gE(gF, gG, gH, gI), "_") | |
1213 | + | } | |
1214 | + | ||
1215 | + | ||
1216 | + | func gM (gN) = [(size(split(gN, "A")) - 1), (size(split(gN, "B")) - 1), (size(split(gN, "C")) - 1), (size(split(gN, "D")) - 1), (size(split(gN, "E")) - 1), (size(split(gN, "F")) - 1)] | |
1217 | + | ||
1218 | + | ||
1219 | + | func gO (gP,gG,gQ,gH,gR) = { | |
1220 | + | func gS (eR,gK) = { | |
1221 | + | let gT = ((fraction(gQ, gR, a) * gG[gK]) * gH) | |
1222 | + | (eR :+ toString((parseIntValue(gP[gK]) + gT))) | |
1223 | 1223 | } | |
1224 | 1224 | ||
1225 | - | let | |
1226 | - | let | |
1227 | - | let | |
1228 | - | let | |
1229 | - | func | |
1230 | - | then | |
1231 | - | else | |
1232 | - | ||
1233 | - | func | |
1234 | - | then | |
1225 | + | let fc = { | |
1226 | + | let eT = cK | |
1227 | + | let eU = size(eT) | |
1228 | + | let eV = nil | |
1229 | + | func eW (eX,eY) = if ((eY >= eU)) | |
1230 | + | then eX | |
1231 | + | else gS(eX, eT[eY]) | |
1232 | + | ||
1233 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
1234 | + | then eX | |
1235 | 1235 | else throw("List size exceeds 6") | |
1236 | 1236 | ||
1237 | - | | |
1237 | + | eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6) | |
1238 | 1238 | } | |
1239 | - | makeString( | |
1240 | - | } | |
1241 | - | ||
1242 | - | ||
1243 | - | func | |
1244 | - | func | |
1245 | - | let | |
1246 | - | $Tuple2(( | |
1239 | + | makeString(fc, "_") | |
1240 | + | } | |
1241 | + | ||
1242 | + | ||
1243 | + | func gU (gG,gQ,gH,gR) = { | |
1244 | + | func gS (eR,gK) = { | |
1245 | + | let gT = ((fraction(gQ, gR, a) * gG[gK]) * gH) | |
1246 | + | $Tuple2((eR._1 :+ gT), (eR._2 + gT)) | |
1247 | 1247 | } | |
1248 | 1248 | ||
1249 | - | let | |
1250 | - | let | |
1251 | - | let | |
1252 | - | func | |
1253 | - | then | |
1254 | - | else | |
1255 | - | ||
1256 | - | func | |
1257 | - | then | |
1249 | + | let eT = cK | |
1250 | + | let eU = size(eT) | |
1251 | + | let eV = $Tuple2(nil, 0) | |
1252 | + | func eW (eX,eY) = if ((eY >= eU)) | |
1253 | + | then eX | |
1254 | + | else gS(eX, eT[eY]) | |
1255 | + | ||
1256 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
1257 | + | then eX | |
1258 | 1258 | else throw("List size exceeds 6") | |
1259 | 1259 | ||
1260 | - | | |
1261 | - | } | |
1262 | - | ||
1263 | - | ||
1264 | - | func | |
1265 | - | let | |
1266 | - | let | |
1267 | - | if (( | |
1268 | - | then $Tuple2(makeString( | |
1269 | - | else if (( | |
1260 | + | eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6) | |
1261 | + | } | |
1262 | + | ||
1263 | + | ||
1264 | + | func gV (gW,gX,gY,gZ) = { | |
1265 | + | let ha = gY._1 | |
1266 | + | let hb = gY._2 | |
1267 | + | if ((hb == 0)) | |
1268 | + | then $Tuple2(makeString(gW, "_"), makeString(gX, "_")) | |
1269 | + | else if ((gZ >= hb)) | |
1270 | 1270 | then { | |
1271 | - | func | |
1272 | - | ||
1273 | - | let | |
1274 | - | let | |
1275 | - | let | |
1276 | - | let | |
1277 | - | func | |
1278 | - | then | |
1279 | - | else | |
1280 | - | ||
1281 | - | func | |
1282 | - | then | |
1271 | + | func hc (eR,gK) = (eR :+ toString((parseIntValue(gW[gK]) + ha[gK]))) | |
1272 | + | ||
1273 | + | let fc = { | |
1274 | + | let eT = cK | |
1275 | + | let eU = size(eT) | |
1276 | + | let eV = nil | |
1277 | + | func eW (eX,eY) = if ((eY >= eU)) | |
1278 | + | then eX | |
1279 | + | else hc(eX, eT[eY]) | |
1280 | + | ||
1281 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
1282 | + | then eX | |
1283 | 1283 | else throw("List size exceeds 6") | |
1284 | 1284 | ||
1285 | - | | |
1285 | + | eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6) | |
1286 | 1286 | } | |
1287 | - | $Tuple2(makeString( | |
1287 | + | $Tuple2(makeString(fc, "_"), makeString(gX, "_")) | |
1288 | 1288 | } | |
1289 | 1289 | else { | |
1290 | - | func | |
1291 | - | let | |
1292 | - | $Tuple2(( | |
1290 | + | func hd (eR,gK) = { | |
1291 | + | let he = fraction(ha[gK], gZ, hb) | |
1292 | + | $Tuple2((eR._1 :+ toString((parseIntValue(gW[gK]) + he))), (eR._2 :+ toString(((parseIntValue(gX[gK]) + ha[gK]) - he)))) | |
1293 | 1293 | } | |
1294 | 1294 | ||
1295 | - | let | |
1296 | - | let | |
1297 | - | let | |
1298 | - | let | |
1299 | - | func | |
1300 | - | then | |
1301 | - | else | |
1302 | - | ||
1303 | - | func | |
1304 | - | then | |
1295 | + | let fc = { | |
1296 | + | let eT = cK | |
1297 | + | let eU = size(eT) | |
1298 | + | let eV = $Tuple2(nil, nil) | |
1299 | + | func eW (eX,eY) = if ((eY >= eU)) | |
1300 | + | then eX | |
1301 | + | else hd(eX, eT[eY]) | |
1302 | + | ||
1303 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
1304 | + | then eX | |
1305 | 1305 | else throw("List size exceeds 6") | |
1306 | 1306 | ||
1307 | - | | |
1307 | + | eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6) | |
1308 | 1308 | } | |
1309 | - | $Tuple2(makeString( | |
1309 | + | $Tuple2(makeString(fc._1, "_"), makeString(fc._2, "_")) | |
1310 | 1310 | } | |
1311 | 1311 | } | |
1312 | 1312 | ||
1313 | 1313 | ||
1314 | - | func | |
1315 | - | then | |
1316 | - | else -( | |
1317 | - | ||
1318 | - | ||
1319 | - | let | |
1320 | - | ||
1321 | - | func | |
1322 | - | let | |
1323 | - | let | |
1314 | + | func hf (hg) = if ((hg >= toBigInt(0))) | |
1315 | + | then hg | |
1316 | + | else -(hg) | |
1317 | + | ||
1318 | + | ||
1319 | + | let hh = [[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]] | |
1320 | + | ||
1321 | + | func hi (dA,hj) = { | |
1322 | + | let hk = toInt((dA % ej)) | |
1323 | + | let hl = if ((hj[0] > hk)) | |
1324 | 1324 | then "A" | |
1325 | - | else if (( | |
1325 | + | else if ((hj[1] > hk)) | |
1326 | 1326 | then "B" | |
1327 | - | else if (( | |
1327 | + | else if ((hj[2] > hk)) | |
1328 | 1328 | then "C" | |
1329 | - | else if (( | |
1329 | + | else if ((hj[3] > hk)) | |
1330 | 1330 | then "D" | |
1331 | - | else if (( | |
1331 | + | else if ((hj[4] > hk)) | |
1332 | 1332 | then "E" | |
1333 | 1333 | else "F" | |
1334 | - | | |
1335 | - | } | |
1336 | - | ||
1337 | - | ||
1338 | - | func | |
1339 | - | let | |
1340 | - | func | |
1341 | - | ||
1342 | - | let | |
1343 | - | let | |
1344 | - | let | |
1345 | - | let | |
1346 | - | func | |
1347 | - | then | |
1348 | - | else | |
1349 | - | ||
1350 | - | func | |
1351 | - | then | |
1334 | + | hl | |
1335 | + | } | |
1336 | + | ||
1337 | + | ||
1338 | + | func hm (hn,ho) = { | |
1339 | + | let hp = hh[ho] | |
1340 | + | func hq (eR,eS) = $Tuple2((((((eR._1 + hi(eR._2, hp)) + hi((eR._2 / ej), hp)) + hi((eR._2 / ek), hp)) + hi((eR._2 / el), hp)) + hi((eR._2 / em), hp)), (eR._2 / en)) | |
1341 | + | ||
1342 | + | let gv = { | |
1343 | + | let eT = [1, 2, 3, 4, 5] | |
1344 | + | let eU = size(eT) | |
1345 | + | let eV = $Tuple2("", (hn / ei)) | |
1346 | + | func eW (eX,eY) = if ((eY >= eU)) | |
1347 | + | then eX | |
1348 | + | else hq(eX, eT[eY]) | |
1349 | + | ||
1350 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
1351 | + | then eX | |
1352 | 1352 | else throw("List size exceeds 5") | |
1353 | 1353 | ||
1354 | - | | |
1354 | + | eZ(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5) | |
1355 | 1355 | } | |
1356 | - | | |
1357 | - | } | |
1358 | - | ||
1359 | - | ||
1360 | - | let | |
1361 | - | ||
1362 | - | let | |
1363 | - | ||
1364 | - | func | |
1365 | - | func | |
1366 | - | let | |
1367 | - | let | |
1368 | - | let | |
1356 | + | gv._1 | |
1357 | + | } | |
1358 | + | ||
1359 | + | ||
1360 | + | let hr = [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] | |
1361 | + | ||
1362 | + | let hs = ["A", "B", "C", "D", "E", "F"] | |
1363 | + | ||
1364 | + | func ht (hu,gH) = { | |
1365 | + | func hv (eR,dy) = { | |
1366 | + | let fB = eR._2 | |
1367 | + | let hw = parseIntValue(dy) | |
1368 | + | let hg = if ((hw == 0)) | |
1369 | 1369 | then 0 | |
1370 | - | else if (( | |
1371 | - | then ( | |
1372 | - | else if (( | |
1370 | + | else if ((hw >= (4 * gH))) | |
1371 | + | then (hw / gH) | |
1372 | + | else if ((hw > (3 * gH))) | |
1373 | 1373 | then 3 | |
1374 | - | else ((( | |
1375 | - | $Tuple3(( | |
1374 | + | else (((hw - 1) / gH) + 1) | |
1375 | + | $Tuple3((eR._1 :+ hg), (eR._2 + 1), (eR._3 + hg)) | |
1376 | 1376 | } | |
1377 | 1377 | ||
1378 | - | let | |
1379 | - | let | |
1380 | - | let | |
1381 | - | let | |
1382 | - | func | |
1383 | - | then | |
1384 | - | else | |
1385 | - | ||
1386 | - | func | |
1387 | - | then | |
1378 | + | let gv = { | |
1379 | + | let eT = hu | |
1380 | + | let eU = size(eT) | |
1381 | + | let eV = $Tuple3(nil, 0, 0) | |
1382 | + | func eW (eX,eY) = if ((eY >= eU)) | |
1383 | + | then eX | |
1384 | + | else hv(eX, eT[eY]) | |
1385 | + | ||
1386 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
1387 | + | then eX | |
1388 | 1388 | else throw("List size exceeds 6") | |
1389 | 1389 | ||
1390 | - | | |
1390 | + | eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6) | |
1391 | 1391 | } | |
1392 | - | let | |
1393 | - | let | |
1394 | - | let | |
1395 | - | func | |
1396 | - | let | |
1397 | - | then ( | |
1398 | - | else | |
1399 | - | let | |
1392 | + | let hx = gv._1 | |
1393 | + | let hy = value(indexOf(hx, max(hx))) | |
1394 | + | let hz = (gv._3 - 25) | |
1395 | + | func hA (eR,da) = { | |
1396 | + | let dF = if ((da == hy)) | |
1397 | + | then (hx[da] - hz) | |
1398 | + | else hx[da] | |
1399 | + | let dQ = if ((dF == 0)) | |
1400 | 1400 | then nil | |
1401 | - | else split(drop(toString(pow(10, 0, | |
1402 | - | let | |
1403 | - | func | |
1404 | - | ||
1405 | - | let | |
1406 | - | let | |
1407 | - | let | |
1408 | - | let | |
1409 | - | func | |
1410 | - | then | |
1411 | - | else | |
1412 | - | ||
1413 | - | func | |
1414 | - | then | |
1401 | + | else split(drop(toString(pow(10, 0, dF, 0, 0, DOWN)), 1), "") | |
1402 | + | let ga = hs[da] | |
1403 | + | func hB (hC,hD) = (hC :+ ga) | |
1404 | + | ||
1405 | + | let hE = { | |
1406 | + | let eT = dQ | |
1407 | + | let eU = size(eT) | |
1408 | + | let eV = nil | |
1409 | + | func hF (eX,eY) = if ((eY >= eU)) | |
1410 | + | then eX | |
1411 | + | else hB(eX, eT[eY]) | |
1412 | + | ||
1413 | + | func hG (eX,eY) = if ((eY >= eU)) | |
1414 | + | then eX | |
1415 | 1415 | else throw("List size exceeds 25") | |
1416 | 1416 | ||
1417 | - | hF( | |
1418 | - | } | |
1419 | - | ( | |
1417 | + | hG(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(eV, 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) | |
1418 | + | } | |
1419 | + | (eR ++ hE) | |
1420 | 1420 | } | |
1421 | 1421 | ||
1422 | - | let | |
1423 | - | let | |
1424 | - | let | |
1425 | - | let | |
1426 | - | func | |
1427 | - | then | |
1428 | - | else | |
1429 | - | ||
1430 | - | func | |
1431 | - | then | |
1422 | + | let fc = { | |
1423 | + | let eT = cK | |
1424 | + | let eU = size(eT) | |
1425 | + | let eV = nil | |
1426 | + | func hF (eX,eY) = if ((eY >= eU)) | |
1427 | + | then eX | |
1428 | + | else hA(eX, eT[eY]) | |
1429 | + | ||
1430 | + | func hG (eX,eY) = if ((eY >= eU)) | |
1431 | + | then eX | |
1432 | 1432 | else throw("List size exceeds 6") | |
1433 | 1433 | ||
1434 | - | hF( | |
1434 | + | hG(hF(hF(hF(hF(hF(hF(eV, 0), 1), 2), 3), 4), 5), 6) | |
1435 | 1435 | } | |
1436 | - | func | |
1437 | - | ||
1438 | - | let | |
1439 | - | let | |
1440 | - | let | |
1441 | - | func | |
1442 | - | then | |
1443 | - | else | |
1444 | - | ||
1445 | - | func | |
1446 | - | then | |
1436 | + | func hH (eR,fB) = (eR + fc[fB]) | |
1437 | + | ||
1438 | + | let eT = hr | |
1439 | + | let eU = size(eT) | |
1440 | + | let eV = "" | |
1441 | + | func hI (eX,eY) = if ((eY >= eU)) | |
1442 | + | then eX | |
1443 | + | else hH(eX, eT[eY]) | |
1444 | + | ||
1445 | + | func hJ (eX,eY) = if ((eY >= eU)) | |
1446 | + | then eX | |
1447 | 1447 | else throw("List size exceeds 25") | |
1448 | 1448 | ||
1449 | - | hI( | |
1450 | - | } | |
1451 | - | ||
1452 | - | ||
1453 | - | func | |
1454 | - | let | |
1455 | - | [toString(valueOrElse(parseInt( | |
1456 | - | then | |
1457 | - | else "0_0_0_0_0_0", if ((size(split( | |
1458 | - | then | |
1459 | - | else "0_0_0_0_0_0", | |
1460 | - | } | |
1461 | - | ||
1462 | - | ||
1463 | - | func | |
1464 | - | let | |
1465 | - | ((aI * (parseIntValue( | |
1466 | - | } | |
1467 | - | ||
1468 | - | ||
1469 | - | func | |
1470 | - | let | |
1471 | - | func | |
1472 | - | ||
1473 | - | func | |
1474 | - | let | |
1475 | - | let | |
1476 | - | $Tuple2(( | |
1449 | + | hJ(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(eV, 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) | |
1450 | + | } | |
1451 | + | ||
1452 | + | ||
1453 | + | func hK (hL) = { | |
1454 | + | let gu = split(valueOrElse(getString(hL), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":") | |
1455 | + | [toString(valueOrElse(parseInt(gu[bh]), 0)), if ((size(split(gu[bi], "_")) == aF)) | |
1456 | + | then gu[bi] | |
1457 | + | else "0_0_0_0_0_0", if ((size(split(gu[bj], "_")) == aF)) | |
1458 | + | then gu[bj] | |
1459 | + | else "0_0_0_0_0_0", gu[bk]] | |
1460 | + | } | |
1461 | + | ||
1462 | + | ||
1463 | + | func hM (hN) = { | |
1464 | + | let fp = split(hN, "_") | |
1465 | + | ((aI * (parseIntValue(fp[1]) + 1)) * parseIntValue(fp[0])) | |
1466 | + | } | |
1467 | + | ||
1468 | + | ||
1469 | + | func hO (hP) = { | |
1470 | + | let hQ = hP[bb] | |
1471 | + | func hR (eR,hS) = (eR + parseIntValue(hS)) | |
1472 | + | ||
1473 | + | func hT (eR,hS) = { | |
1474 | + | let da = eR._1 | |
1475 | + | let eK = (((parseIntValue(hS) + aX) - 1) / aX) | |
1476 | + | $Tuple2((da + 1), (eR._2 + (eK * cE))) | |
1477 | 1477 | } | |
1478 | 1478 | ||
1479 | - | let | |
1480 | - | let | |
1481 | - | let | |
1482 | - | let | |
1483 | - | func | |
1484 | - | then | |
1485 | - | else | |
1486 | - | ||
1487 | - | func | |
1488 | - | then | |
1479 | + | let hU = { | |
1480 | + | let eT = split(hP[aZ], "_") | |
1481 | + | let eU = size(eT) | |
1482 | + | let eV = 0 | |
1483 | + | func eW (eX,eY) = if ((eY >= eU)) | |
1484 | + | then eX | |
1485 | + | else hR(eX, eT[eY]) | |
1486 | + | ||
1487 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
1488 | + | then eX | |
1489 | 1489 | else throw("List size exceeds 6") | |
1490 | 1490 | ||
1491 | - | | |
1491 | + | eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6) | |
1492 | 1492 | } | |
1493 | - | let | |
1494 | - | let | |
1495 | - | let | |
1496 | - | let | |
1497 | - | func | |
1498 | - | then | |
1499 | - | else | |
1500 | - | ||
1501 | - | func | |
1502 | - | then | |
1493 | + | let hV = { | |
1494 | + | let eT = split(hP[ba], "_") | |
1495 | + | let eU = size(eT) | |
1496 | + | let eV = 0 | |
1497 | + | func hF (eX,eY) = if ((eY >= eU)) | |
1498 | + | then eX | |
1499 | + | else hR(eX, eT[eY]) | |
1500 | + | ||
1501 | + | func hG (eX,eY) = if ((eY >= eU)) | |
1502 | + | then eX | |
1503 | 1503 | else throw("List size exceeds 6") | |
1504 | 1504 | ||
1505 | - | hF( | |
1505 | + | hG(hF(hF(hF(hF(hF(hF(eV, 0), 1), 2), 3), 4), 5), 6) | |
1506 | 1506 | } | |
1507 | - | let | |
1507 | + | let hW = if ((hQ == "")) | |
1508 | 1508 | then 0 | |
1509 | - | else ( let | |
1510 | - | let | |
1511 | - | let | |
1512 | - | func | |
1513 | - | then | |
1514 | - | else | |
1515 | - | ||
1516 | - | func | |
1517 | - | then | |
1509 | + | else ( let eT = split_4C(hQ, "_") | |
1510 | + | let eU = size(eT) | |
1511 | + | let eV = $Tuple2(0, 0) | |
1512 | + | func hI (eX,eY) = if ((eY >= eU)) | |
1513 | + | then eX | |
1514 | + | else hT(eX, eT[eY]) | |
1515 | + | ||
1516 | + | func hJ (eX,eY) = if ((eY >= eU)) | |
1517 | + | then eX | |
1518 | 1518 | else throw("List size exceeds 50") | |
1519 | 1519 | ||
1520 | - | hI( | |
1521 | - | (( | |
1522 | - | } | |
1523 | - | ||
1524 | - | ||
1525 | - | func | |
1526 | - | let | |
1527 | - | let | |
1528 | - | let | |
1529 | - | let | |
1530 | - | let | |
1531 | - | let | |
1532 | - | then makeString(["0", toString( | |
1520 | + | hJ(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(eV, 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 | |
1521 | + | ((hU + hV) + hW) | |
1522 | + | } | |
1523 | + | ||
1524 | + | ||
1525 | + | func hX (hY,hZ,ia) = { | |
1526 | + | let hN = ((toString(hZ) + "_") + toString(ia)) | |
1527 | + | let ib = hM(hN) | |
1528 | + | let ic = valueOrElse(getString(hY), (hN + ":0_0_0_0_0_0:0_0_0_0_0_0::0")) | |
1529 | + | let id = split_4C(ic, ":") | |
1530 | + | let ie = hO(id) | |
1531 | + | let if = if ((5 > size(id))) | |
1532 | + | then makeString(["0", toString(ie), toString((ib - ie)), toString(ib)], "_") | |
1533 | 1533 | else { | |
1534 | - | let | |
1535 | - | let | |
1536 | - | let | |
1537 | - | then parseIntValue( | |
1538 | - | else | |
1539 | - | makeString([toString( | |
1540 | - | } | |
1541 | - | [ | |
1542 | - | then | |
1543 | - | else "0_0_0_0_0_0", if ((size(split( | |
1544 | - | then | |
1545 | - | else "0_0_0_0_0_0", | |
1546 | - | } | |
1547 | - | ||
1548 | - | ||
1549 | - | func | |
1550 | - | let | |
1551 | - | let | |
1552 | - | (( | |
1553 | - | } | |
1554 | - | ||
1555 | - | ||
1556 | - | func | |
1534 | + | let ig = split(id[bc], "_") | |
1535 | + | let ih = parseIntValue(ig[bd]) | |
1536 | + | let ii = if ((size(ig) > 1)) | |
1537 | + | then parseIntValue(ig[be]) | |
1538 | + | else ie | |
1539 | + | makeString([toString(ih), toString(ii), toString(((ib - ih) - ii)), toString(ib)], "_") | |
1540 | + | } | |
1541 | + | [id[aY], if ((size(split(id[aZ], "_")) == aF)) | |
1542 | + | then id[aZ] | |
1543 | + | else "0_0_0_0_0_0", if ((size(split(id[ba], "_")) == aF)) | |
1544 | + | then id[ba] | |
1545 | + | else "0_0_0_0_0_0", id[bb], if] | |
1546 | + | } | |
1547 | + | ||
1548 | + | ||
1549 | + | func ij (hP) = { | |
1550 | + | let ik = hO(hP) | |
1551 | + | let il = parseIntValue(split(hP[bc], "_")[bd]) | |
1552 | + | ((hM(hP[aY]) - ik) - il) | |
1553 | + | } | |
1554 | + | ||
1555 | + | ||
1556 | + | func im (in,hP,io) = if ((size(in) != 3)) | |
1557 | 1557 | then throw("cargoListStr should contain exactly 2 ':' separators") | |
1558 | 1558 | else { | |
1559 | - | let | |
1560 | - | let | |
1561 | - | let | |
1559 | + | let ip = split(in[0], "_") | |
1560 | + | let iq = split(in[1], "_") | |
1561 | + | let ir = if ((in[2] == "")) | |
1562 | 1562 | then nil | |
1563 | - | else split_4C( | |
1564 | - | if ((size( | |
1563 | + | else split_4C(in[2], "_") | |
1564 | + | if ((size(ip) != aF)) | |
1565 | 1565 | then throw("All 6 resources should be passed") | |
1566 | - | else if ((size( | |
1566 | + | else if ((size(iq) != aF)) | |
1567 | 1567 | then throw("All 6 materials should be passed") | |
1568 | 1568 | else { | |
1569 | - | let | |
1570 | - | let | |
1571 | - | let | |
1572 | - | let | |
1569 | + | let gZ = ij(hP) | |
1570 | + | let is = split(hP[aZ], "_") | |
1571 | + | let it = split(hP[ba], "_") | |
1572 | + | let iu = if ((hP[bb] == "")) | |
1573 | 1573 | then nil | |
1574 | - | else split_4C( | |
1575 | - | let | |
1576 | - | let | |
1577 | - | let | |
1574 | + | else split_4C(hP[bb], "_") | |
1575 | + | let gX = split(io[bi], "_") | |
1576 | + | let iv = split(io[bj], "_") | |
1577 | + | let iw = if ((io[bk] == "")) | |
1578 | 1578 | then nil | |
1579 | - | else split_4C( | |
1580 | - | func | |
1581 | - | let | |
1582 | - | let | |
1583 | - | let | |
1584 | - | let | |
1585 | - | if (( | |
1586 | - | then $Tuple4(( | |
1587 | - | else if (( | |
1588 | - | then if (( | |
1589 | - | then throw((((("Attempt to take " + | |
1590 | - | else $Tuple4(( | |
1591 | - | else if ((-( | |
1592 | - | then throw((((("Attempt to take " + toString(-( | |
1593 | - | else $Tuple4(( | |
1579 | + | else split_4C(io[bk], "_") | |
1580 | + | func ix (eR,hS) = { | |
1581 | + | let gK = eR._1 | |
1582 | + | let iy = parseIntValue(hS) | |
1583 | + | let iz = parseIntValue(is[gK]) | |
1584 | + | let iA = parseIntValue(gX[gK]) | |
1585 | + | if ((iy == 0)) | |
1586 | + | then $Tuple4((gK + 1), (eR._2 :+ is[gK]), (eR._3 :+ gX[gK]), eR._4) | |
1587 | + | else if ((iy > 0)) | |
1588 | + | then if ((iy > iA)) | |
1589 | + | then throw((((("Attempt to take " + hS) + " from backpack, but only ") + toString(iA)) + " available")) | |
1590 | + | else $Tuple4((gK + 1), (eR._2 :+ toString((iz + iy))), (eR._3 :+ toString((iA - iy))), (eR._4 + iy)) | |
1591 | + | else if ((-(iy) > iz)) | |
1592 | + | then throw((((("Attempt to take " + toString(-(iy))) + " from warehouse, but only ") + toString(iz)) + " available")) | |
1593 | + | else $Tuple4((gK + 1), (eR._2 :+ toString((iz + iy))), (eR._3 :+ toString((iA - iy))), (eR._4 + iy)) | |
1594 | 1594 | } | |
1595 | 1595 | ||
1596 | - | let | |
1597 | - | let | |
1598 | - | let | |
1599 | - | let | |
1600 | - | func | |
1601 | - | then | |
1602 | - | else | |
1603 | - | ||
1604 | - | func | |
1605 | - | then | |
1596 | + | let fc = { | |
1597 | + | let eT = ip | |
1598 | + | let eU = size(eT) | |
1599 | + | let eV = $Tuple4(0, nil, nil, 0) | |
1600 | + | func eW (eX,eY) = if ((eY >= eU)) | |
1601 | + | then eX | |
1602 | + | else ix(eX, eT[eY]) | |
1603 | + | ||
1604 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
1605 | + | then eX | |
1606 | 1606 | else throw("List size exceeds 6") | |
1607 | 1607 | ||
1608 | - | | |
1608 | + | eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6) | |
1609 | 1609 | } | |
1610 | - | func | |
1611 | - | let | |
1612 | - | let | |
1613 | - | let | |
1614 | - | let | |
1615 | - | if (( | |
1616 | - | then $Tuple4(( | |
1617 | - | else if (( | |
1618 | - | then if (( | |
1619 | - | then throw((((("Attempt to take " + | |
1620 | - | else $Tuple4(( | |
1621 | - | else if ((-( | |
1622 | - | then throw((((("Attempt to take " + toString(-( | |
1623 | - | else $Tuple4(( | |
1610 | + | func iB (eR,hS) = { | |
1611 | + | let gK = eR._1 | |
1612 | + | let iy = parseIntValue(hS) | |
1613 | + | let iC = parseIntValue(it[gK]) | |
1614 | + | let iD = parseIntValue(iv[gK]) | |
1615 | + | if ((iy == 0)) | |
1616 | + | then $Tuple4((gK + 1), (eR._2 :+ it[gK]), (eR._3 :+ iv[gK]), eR._4) | |
1617 | + | else if ((iy > 0)) | |
1618 | + | then if ((iy > iD)) | |
1619 | + | then throw((((("Attempt to take " + hS) + " from backpack, but only ") + toString(iD)) + " available")) | |
1620 | + | else $Tuple4((gK + 1), (eR._2 :+ toString((iC + iy))), (eR._3 :+ toString((iD - iy))), (eR._4 + iy)) | |
1621 | + | else if ((-(iy) > iC)) | |
1622 | + | then throw((((("Attempt to take " + toString(-(iy))) + " from warehouse, but only ") + toString(iC)) + " available")) | |
1623 | + | else $Tuple4((gK + 1), (eR._2 :+ toString((iC + iy))), (eR._3 :+ toString((iD - iy))), (eR._4 + iy)) | |
1624 | 1624 | } | |
1625 | 1625 | ||
1626 | - | let | |
1627 | - | let | |
1628 | - | let | |
1629 | - | let | |
1630 | - | func | |
1631 | - | then | |
1632 | - | else | |
1633 | - | ||
1634 | - | func | |
1635 | - | then | |
1626 | + | let gq = { | |
1627 | + | let eT = iq | |
1628 | + | let eU = size(eT) | |
1629 | + | let eV = $Tuple4(0, nil, nil, fc._4) | |
1630 | + | func hF (eX,eY) = if ((eY >= eU)) | |
1631 | + | then eX | |
1632 | + | else iB(eX, eT[eY]) | |
1633 | + | ||
1634 | + | func hG (eX,eY) = if ((eY >= eU)) | |
1635 | + | then eX | |
1636 | 1636 | else throw("List size exceeds 6") | |
1637 | 1637 | ||
1638 | - | hF( | |
1638 | + | hG(hF(hF(hF(hF(hF(hF(eV, 0), 1), 2), 3), 4), 5), 6) | |
1639 | 1639 | } | |
1640 | - | func | |
1641 | - | let | |
1642 | - | let | |
1643 | - | let | |
1644 | - | then parseIntValue( | |
1640 | + | func iE (eR,hS) = { | |
1641 | + | let gK = eR._1 | |
1642 | + | let iy = parseIntValue(hS) | |
1643 | + | let iF = if ((size(iu) > gK)) | |
1644 | + | then parseIntValue(iu[gK]) | |
1645 | 1645 | else 0 | |
1646 | - | let | |
1647 | - | then parseIntValue( | |
1646 | + | let iG = if ((size(iw) > gK)) | |
1647 | + | then parseIntValue(iw[gK]) | |
1648 | 1648 | else 0 | |
1649 | - | if (( | |
1650 | - | then $Tuple4(( | |
1651 | - | else if (( | |
1652 | - | then if (( | |
1653 | - | then throw((((("Attempt to take " + | |
1649 | + | if ((iy == 0)) | |
1650 | + | then $Tuple4((gK + 1), (eR._2 :+ toString(iF)), (eR._3 :+ toString(iG)), eR._4) | |
1651 | + | else if ((iy > 0)) | |
1652 | + | then if ((iy > iG)) | |
1653 | + | then throw((((("Attempt to take " + hS) + " from backpack, but only ") + toString(iG)) + " available")) | |
1654 | 1654 | else { | |
1655 | - | let | |
1656 | - | $Tuple4(( | |
1655 | + | let fT = (eH((iF + iy), aX) - eH(iF, aX)) | |
1656 | + | $Tuple4((gK + 1), (eR._2 :+ toString((iF + iy))), (eR._3 :+ toString((iG - iy))), (eR._4 + fT)) | |
1657 | 1657 | } | |
1658 | - | else if ((-( | |
1659 | - | then throw((((("Attempt to take " + toString(-( | |
1658 | + | else if ((-(iy) > iF)) | |
1659 | + | then throw((((("Attempt to take " + toString(-(iy))) + " from warehouse, but only ") + toString(iF)) + " available")) | |
1660 | 1660 | else { | |
1661 | - | let | |
1662 | - | $Tuple4(( | |
1661 | + | let fT = (eH((iF + iy), aX) - eH(iF, aX)) | |
1662 | + | $Tuple4((gK + 1), (eR._2 :+ toString((iF + iy))), (eR._3 :+ toString((iG - iy))), (eR._4 + fT)) | |
1663 | 1663 | } | |
1664 | 1664 | } | |
1665 | 1665 | ||
1666 | - | let | |
1666 | + | let gu = if ((size(ir) != 0)) | |
1667 | 1667 | then { | |
1668 | - | let | |
1669 | - | let | |
1670 | - | let | |
1671 | - | func | |
1672 | - | then | |
1673 | - | else | |
1674 | - | ||
1675 | - | func | |
1676 | - | then | |
1668 | + | let eT = ir | |
1669 | + | let eU = size(eT) | |
1670 | + | let eV = $Tuple4(0, nil, nil, gq._4) | |
1671 | + | func hI (eX,eY) = if ((eY >= eU)) | |
1672 | + | then eX | |
1673 | + | else iE(eX, eT[eY]) | |
1674 | + | ||
1675 | + | func hJ (eX,eY) = if ((eY >= eU)) | |
1676 | + | then eX | |
1677 | 1677 | else throw("List size exceeds 50") | |
1678 | 1678 | ||
1679 | - | hI( | |
1679 | + | hJ(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(hI(eV, 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) | |
1680 | 1680 | } | |
1681 | - | else $Tuple4(0, | |
1682 | - | let | |
1683 | - | if (( | |
1684 | - | then throw((((("Attempt to put total " + toString( | |
1685 | - | else $Tuple7(makeString( | |
1681 | + | else $Tuple4(0, iu, iw, gq._4) | |
1682 | + | let iH = gu._4 | |
1683 | + | if ((iH > gZ)) | |
1684 | + | then throw((((("Attempt to put total " + toString(iH)) + " stuff, but only ") + toString(gZ)) + " warehouse space left")) | |
1685 | + | else $Tuple7(makeString(fc._2, "_"), makeString(gq._2, "_"), makeString_2C(gu._2, "_"), makeString(fc._3, "_"), makeString(gq._3, "_"), makeString_2C(gu._3, "_"), iH) | |
1686 | 1686 | } | |
1687 | 1687 | } | |
1688 | 1688 | ||
1689 | 1689 | ||
1690 | - | func | |
1691 | - | let bL = toString( | |
1692 | - | let | |
1693 | - | let | |
1694 | - | let | |
1695 | - | let | |
1696 | - | let | |
1697 | - | let | |
1698 | - | let | |
1699 | - | let bp = calculateAssetId( | |
1700 | - | let | |
1701 | - | $Tuple2([IntegerEntry( | |
1702 | - | } | |
1703 | - | ||
1704 | - | ||
1705 | - | func | |
1690 | + | func iI (iJ,iK) = { | |
1691 | + | let bL = toString(iJ) | |
1692 | + | let iL = hf(toBigInt(iK)) | |
1693 | + | let iM = valueOrElse(getInteger(ep()), (eo + 1)) | |
1694 | + | let et = toString(iM) | |
1695 | + | let ho = toInt((iL % ei)) | |
1696 | + | let gN = hm(iL, ho) | |
1697 | + | let dt = aP[ho] | |
1698 | + | let iN = Issue(eG(et, "S"), makeString([et, "S", gN, dt], "_"), 1, 0, false) | |
1699 | + | let bp = calculateAssetId(iN) | |
1700 | + | let iO = toBase58String(bp) | |
1701 | + | $Tuple2([IntegerEntry(ep(), (iM + 1)), iN, StringEntry(es(et), iO), StringEntry(bo(iO), bL), StringEntry(ev(et), bL), IntegerEntry(by(iO), 0), IntegerEntry(eu(iO, bL), 0), ScriptTransfer(iJ, 1, bp)], $Tuple2(iO, dt)) | |
1702 | + | } | |
1703 | + | ||
1704 | + | ||
1705 | + | func iP (bL,iQ,iR) = if (!(sigVerify_8Kb(iQ, iR, dZ))) | |
1706 | 1706 | then throw("signature does not match") | |
1707 | 1707 | else { | |
1708 | - | let | |
1709 | - | let | |
1710 | - | let | |
1711 | - | let | |
1712 | - | let | |
1713 | - | let | |
1714 | - | let | |
1715 | - | let | |
1716 | - | if (if (( | |
1708 | + | let fp = split_4C(toUtf8String(iQ), ";") | |
1709 | + | let iS = split_4C(fp[0], "|") | |
1710 | + | let iT = split(iS[eC], "_") | |
1711 | + | let iU = parseIntValue(iT[0]) | |
1712 | + | let iV = parseIntValue(iT[1]) | |
1713 | + | let iW = split(fp[1], ":") | |
1714 | + | let iX = iW[0] | |
1715 | + | let iY = parseIntValue(iS[eD]) | |
1716 | + | if (if ((iY > (lastBlock.timestamp + eb))) | |
1717 | 1717 | then true | |
1718 | - | else ((lastBlock.timestamp - | |
1719 | - | then throw(((("signature outdated: logTime=" + toString( | |
1718 | + | else ((lastBlock.timestamp - eb) > iY)) | |
1719 | + | then throw(((("signature outdated: logTime=" + toString(iY)) + ", bcTime=") + toString(lastBlock.timestamp))) | |
1720 | 1720 | else { | |
1721 | - | let | |
1722 | - | let | |
1723 | - | if (( | |
1724 | - | then throw(((("Tx ids don't match! In state: " + | |
1721 | + | let iZ = iW[1] | |
1722 | + | let ja = valueOrElse(getString(dL(bL)), "") | |
1723 | + | if ((ja != iZ)) | |
1724 | + | then throw(((("Tx ids don't match! In state: " + ja) + ", in msg: ") + iZ)) | |
1725 | 1725 | else { | |
1726 | 1726 | let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked") | |
1727 | - | let | |
1728 | - | let | |
1729 | - | let | |
1730 | - | if (( | |
1731 | - | then throw(((("oldHealth=" + toString( | |
1732 | - | else if ((0 >= | |
1727 | + | let jb = z(A) | |
1728 | + | let jc = ag(valueOrElse(getInteger(D(A)), 0)) | |
1729 | + | let jd = valueOrElse(getInteger(jb), jc) | |
1730 | + | if ((jd != iU)) | |
1731 | + | then throw(((("oldHealth=" + toString(jd)) + " from state does not match one from flight log=") + toString(iU))) | |
1732 | + | else if ((0 >= iU)) | |
1733 | 1733 | then throw("You can't fly with zero health") | |
1734 | - | else if (!( | |
1734 | + | else if (!(gw(A))) | |
1735 | 1735 | then throw("Equipment incompatible") | |
1736 | 1736 | else { | |
1737 | - | let | |
1738 | - | then | |
1737 | + | let je = if ((size(iS) > eE)) | |
1738 | + | then iS[eE] | |
1739 | 1739 | else "" | |
1740 | - | let | |
1741 | - | then | |
1740 | + | let jf = if ((size(iS) > eF)) | |
1741 | + | then iS[eF] | |
1742 | 1742 | else "" | |
1743 | - | let | |
1744 | - | then ( | |
1743 | + | let jg = if (if ((iV > 0)) | |
1744 | + | then (je == "$") | |
1745 | 1745 | else false) | |
1746 | - | then | |
1746 | + | then dz(invoke(db, "sendUsdtPrize", [bL], nil)) | |
1747 | 1747 | else 0 | |
1748 | - | $Tuple5( | |
1748 | + | $Tuple5(iV, A, jg, iX, jf) | |
1749 | 1749 | } | |
1750 | 1750 | } | |
1751 | 1751 | } | |
1752 | 1752 | } | |
1753 | 1753 | ||
1754 | 1754 | ||
1755 | - | func | |
1756 | - | let | |
1757 | - | let | |
1758 | - | let | |
1759 | - | let | |
1760 | - | ((aH + fraction(aH, (( | |
1761 | - | } | |
1762 | - | ||
1763 | - | ||
1764 | - | func | |
1765 | - | let | |
1766 | - | then $Tuple2( | |
1755 | + | func jh (P,ji) = { | |
1756 | + | let ia = valueOrElse(getInteger(by(P)), 0) | |
1757 | + | let jj = valueOrElse(getInteger(bs(aE, P)), 0) | |
1758 | + | let jk = (ia / 6) | |
1759 | + | let jl = (ia / 7) | |
1760 | + | ((aH + fraction(aH, ((ia + jk) + (2 * jl)), 5)) + fraction(aH, jj, (ji * 5))) | |
1761 | + | } | |
1762 | + | ||
1763 | + | ||
1764 | + | func jm (c,jn,jo) = { | |
1765 | + | let jp = if ((jn == ez)) | |
1766 | + | then $Tuple2(jo, valueOrElse(getString(bH(c)), "")) | |
1767 | 1767 | else { | |
1768 | 1768 | let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked") | |
1769 | - | let | |
1770 | - | let cf = split(value( | |
1769 | + | let jq = valueOrElse(getString(bJ(A)), aJ) | |
1770 | + | let cf = split(value(jq), "_") | |
1771 | 1771 | if ((cf[bm] != "L")) | |
1772 | 1772 | then throw((("Duck location type is " + cf[bm]) + ", but should be L")) | |
1773 | 1773 | else $Tuple2(cf[bn], A) | |
1774 | 1774 | } | |
1775 | - | let P = | |
1776 | - | let | |
1777 | - | let | |
1778 | - | let | |
1779 | - | let | |
1780 | - | let | |
1781 | - | if (( | |
1775 | + | let P = jp._1 | |
1776 | + | let jr = jp._2 | |
1777 | + | let js = value(assetInfo(fromBase58String(P))) | |
1778 | + | let jt = br(P) | |
1779 | + | let ju = valueOrErrorMessage(getInteger(jt), (("Land " + js.name) + " is not staked")) | |
1780 | + | let jv = valueOrErrorMessage(getString(bo(P)), (("NFT " + js.name) + " is orphaned")) | |
1781 | + | if ((jv != c)) | |
1782 | 1782 | then throw((aC + " is not yours")) | |
1783 | 1783 | else { | |
1784 | - | let | |
1785 | - | $Tuple4( | |
1786 | - | } | |
1787 | - | } | |
1788 | - | ||
1789 | - | ||
1790 | - | func | |
1784 | + | let jw = split(js.description, "_") | |
1785 | + | $Tuple4(jr, P, jw, ju) | |
1786 | + | } | |
1787 | + | } | |
1788 | + | ||
1789 | + | ||
1790 | + | func jx (c,eI,jn,jo) = if ((0 > eI)) | |
1791 | 1791 | then throw("Negative amount") | |
1792 | 1792 | else { | |
1793 | - | let | |
1794 | - | let | |
1795 | - | let | |
1796 | - | let | |
1797 | - | if ((0 > | |
1798 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1793 | + | let ga = jm(c, jn, jo) | |
1794 | + | let dI = ga._3[di] | |
1795 | + | let gG = gM(ga._3[dj]) | |
1796 | + | let gQ = (lastBlock.timestamp - ga._4) | |
1797 | + | if ((0 > gQ)) | |
1798 | + | then throw(((("Saved timestamp is in future, saved = " + toString(ga._4)) + ", current = ") + toString(lastBlock.timestamp))) | |
1799 | 1799 | else { | |
1800 | - | let | |
1801 | - | let | |
1802 | - | let | |
1803 | - | if (( | |
1804 | - | then throw(((("Not enough resources, available = " + toString( | |
1800 | + | let ji = dH(dI) | |
1801 | + | let jy = jh(ga._2, ji) | |
1802 | + | let jz = fraction(gQ, (jy * ji), a) | |
1803 | + | if ((eI > jz)) | |
1804 | + | then throw(((("Not enough resources, available = " + toString(jz)) + ", requested = ") + toString(eI))) | |
1805 | 1805 | else { | |
1806 | - | let | |
1807 | - | let | |
1808 | - | let | |
1809 | - | let | |
1810 | - | let | |
1811 | - | let | |
1812 | - | let | |
1813 | - | let | |
1814 | - | let | |
1815 | - | if (if (( | |
1816 | - | then ( | |
1806 | + | let jA = fraction((jz - eI), a, (jy * ji)) | |
1807 | + | let jB = (lastBlock.timestamp - jA) | |
1808 | + | let hZ = (ji / cF) | |
1809 | + | let gY = gU(gG, (gQ - jA), hZ, jy) | |
1810 | + | let hY = bx(ga._2) | |
1811 | + | let ia = valueOrElse(getInteger(by(ga._2)), 0) | |
1812 | + | let hP = hX(hY, hZ, ia) | |
1813 | + | let ig = split(hP[bc], "_") | |
1814 | + | let gZ = parseIntValue(ig[bf]) | |
1815 | + | if (if ((jn == ez)) | |
1816 | + | then (eI > gZ) | |
1817 | 1817 | else false) | |
1818 | - | then throw((("Only " + toString( | |
1818 | + | then throw((("Only " + toString(gZ)) + " space left in warehouse")) | |
1819 | 1819 | else { | |
1820 | - | let | |
1821 | - | let | |
1822 | - | let | |
1823 | - | let | |
1824 | - | let | |
1825 | - | then $Tuple4( | |
1826 | - | else if (( | |
1827 | - | then $Tuple4( | |
1820 | + | let hL = bI(ga._1) | |
1821 | + | let io = hK(hL) | |
1822 | + | let gX = split(io[bi], "_") | |
1823 | + | let gW = split(hP[aZ], "_") | |
1824 | + | let jC = if ((jn == ez)) | |
1825 | + | then $Tuple4(gO(gW, gG, (gQ - jA), hZ, jy), io[bi], (parseIntValue(ig[be]) + gY._2), (parseIntValue(ig[bf]) - gY._2)) | |
1826 | + | else if ((jn == eA)) | |
1827 | + | then $Tuple4(hP[aZ], gO(gX, gG, (gQ - jA), hZ, jy), parseIntValue(ig[be]), parseIntValue(ig[bf])) | |
1828 | 1828 | else { | |
1829 | - | let | |
1830 | - | let | |
1831 | - | $Tuple4( | |
1829 | + | let jD = gV(gW, gX, gY, gZ) | |
1830 | + | let jE = min([parseIntValue(ig[bf]), gY._2]) | |
1831 | + | $Tuple4(jD._1, jD._2, (parseIntValue(ig[be]) + jE), (parseIntValue(ig[bf]) - jE)) | |
1832 | 1832 | } | |
1833 | - | let | |
1834 | - | let | |
1835 | - | let | |
1836 | - | let | |
1837 | - | $Tuple5([IntegerEntry(br( | |
1833 | + | let jF = jC._1 | |
1834 | + | let jG = jC._2 | |
1835 | + | let jH = jC._3 | |
1836 | + | let jI = jC._4 | |
1837 | + | $Tuple5([IntegerEntry(br(ga._2), jB), IntegerEntry(bu(aC, ga._2, c), jB)], hL, [io[bh], jG, io[bj], io[bk]], hY, [hP[aY], jF, hP[ba], hP[bb], makeString([ig[bd], toString(jH), toString(jI), ig[bg]], "_")]) | |
1838 | 1838 | } | |
1839 | 1839 | } | |
1840 | 1840 | } | |
1841 | 1841 | } | |
1842 | 1842 | ||
1843 | 1843 | ||
1844 | - | func | |
1845 | - | let | |
1846 | - | let | |
1847 | - | let | |
1848 | - | | |
1849 | - | } | |
1850 | - | ||
1851 | - | ||
1852 | - | func | |
1853 | - | let c = toString( | |
1854 | - | let | |
1855 | - | let | |
1856 | - | let | |
1857 | - | let | |
1858 | - | if (if (!( | |
1859 | - | then ( | |
1844 | + | func jJ (c,P,ji,jn) = { | |
1845 | + | let jt = br(P) | |
1846 | + | let ju = value(getInteger(jt)) | |
1847 | + | let jz = (fraction((lastBlock.timestamp - ju), jh(P, ji), a) * ji) | |
1848 | + | jx(c, jz, jn, P) | |
1849 | + | } | |
1850 | + | ||
1851 | + | ||
1852 | + | func jK (fe,iJ,jL,P) = { | |
1853 | + | let c = toString(iJ) | |
1854 | + | let ga = jm(c, eB, P) | |
1855 | + | let ji = dH(ga._3[di]) | |
1856 | + | let jM = by(ga._2) | |
1857 | + | let jN = valueOrElse(getInteger(jM), 0) | |
1858 | + | if (if (!(cu)) | |
1859 | + | then (jN >= 3) | |
1860 | 1860 | else false) | |
1861 | 1861 | then throw("Currently max infrastructure level = 3") | |
1862 | 1862 | else { | |
1863 | - | let | |
1864 | - | let al = ( | |
1865 | - | if (if ( | |
1866 | - | then (al > | |
1863 | + | let jO = ((sqrt(ji, 0, 0, DOWN) / 5) + 2) | |
1864 | + | let al = (jN + 1) | |
1865 | + | if (if (cu) | |
1866 | + | then (al > jO) | |
1867 | 1867 | else false) | |
1868 | - | then throw(("Currently max infrastructure level = " + toString( | |
1868 | + | then throw(("Currently max infrastructure level = " + toString(jO))) | |
1869 | 1869 | else { | |
1870 | - | let | |
1871 | - | if (if (!( | |
1872 | - | then ( | |
1870 | + | let jP = fraction(ee, (ji * al), cF) | |
1871 | + | if (if (!(fe)) | |
1872 | + | then (jL != jP) | |
1873 | 1873 | else false) | |
1874 | - | then throw(("Payment attached should be " + toString( | |
1874 | + | then throw(("Payment attached should be " + toString(jP))) | |
1875 | 1875 | else { | |
1876 | - | let | |
1877 | - | let | |
1878 | - | let | |
1879 | - | let | |
1880 | - | let | |
1881 | - | let | |
1882 | - | let | |
1883 | - | let | |
1884 | - | let | |
1885 | - | let | |
1886 | - | let | |
1887 | - | let | |
1888 | - | $Tuple3(([IntegerEntry( | |
1876 | + | let hL = bI(ga._1) | |
1877 | + | let io = hK(hL) | |
1878 | + | let jQ = split(io[bj], "_") | |
1879 | + | let jR = fraction(cA, (ji * al), cF) | |
1880 | + | let jS = makeString(fd(fe, jQ, jR), "_") | |
1881 | + | let jT = jJ(c, ga._2, ji, eB) | |
1882 | + | let jU = jT._5 | |
1883 | + | let jV = hM(jU[aY]) | |
1884 | + | let jW = makeString([split(jU[aY], "_")[0], toString(al)], "_") | |
1885 | + | let jX = hM(jW) | |
1886 | + | let ig = split(jU[bc], "_") | |
1887 | + | let jY = makeString([ig[bd], ig[be], toString(((parseIntValue(ig[bf]) + jX) - jV)), toString(jX)], "_") | |
1888 | + | $Tuple3(([IntegerEntry(jM, al), IntegerEntry(eu(ga._2, c), al), StringEntry(hL, makeString([io[bh], jT._3[bi], jS, io[bk]], ":")), StringEntry(jT._4, makeString([jW, jU[aZ], jU[ba], jU[bb], jY], ":"))] ++ jT._1), al, jR) | |
1889 | 1889 | } | |
1890 | 1890 | } | |
1891 | 1891 | } | |
1892 | 1892 | } | |
1893 | 1893 | ||
1894 | 1894 | ||
1895 | - | func | |
1896 | - | let | |
1897 | - | let | |
1898 | - | let af = valueOrElse(getInteger( | |
1899 | - | let ak = (af + | |
1900 | - | let | |
1901 | - | let | |
1902 | - | $Tuple2([IntegerEntry( | |
1903 | - | } | |
1904 | - | ||
1905 | - | ||
1906 | - | func | |
1907 | - | let | |
1908 | - | let | |
1909 | - | let af = valueOrElse(getInteger( | |
1910 | - | let ak = (af + | |
1911 | - | let | |
1912 | - | let | |
1913 | - | $Tuple2([IntegerEntry( | |
1914 | - | } | |
1915 | - | ||
1916 | - | ||
1917 | - | func | |
1895 | + | func jZ (A,ka) = { | |
1896 | + | let kb = D(A) | |
1897 | + | let kc = C(A) | |
1898 | + | let af = valueOrElse(getInteger(kc), 0) | |
1899 | + | let ak = (af + ka) | |
1900 | + | let kd = ai(valueOrElse(getInteger(kb), 0), ak) | |
1901 | + | let ke = E(A) | |
1902 | + | $Tuple2([IntegerEntry(kb, kd[0]), IntegerEntry(kc, ak), IntegerEntry(ke, (valueOrElse(getInteger(ke), 0) + kd[1]))], ak) | |
1903 | + | } | |
1904 | + | ||
1905 | + | ||
1906 | + | func kf (c,ka) = { | |
1907 | + | let kb = H(c) | |
1908 | + | let kc = G(c) | |
1909 | + | let af = valueOrElse(getInteger(kc), 0) | |
1910 | + | let ak = (af + ka) | |
1911 | + | let kd = ai(valueOrElse(getInteger(kb), 0), ak) | |
1912 | + | let ke = I(c) | |
1913 | + | $Tuple2([IntegerEntry(kb, kd[0]), IntegerEntry(kc, ak), IntegerEntry(ke, (valueOrElse(getInteger(ke), 0) + kd[1]))], ak) | |
1914 | + | } | |
1915 | + | ||
1916 | + | ||
1917 | + | func kg (c) = { | |
1918 | 1918 | let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked") | |
1919 | - | let | |
1920 | - | let | |
1921 | - | if (!(isDefined( | |
1919 | + | let kh = bC(c) | |
1920 | + | let ki = getString(kh) | |
1921 | + | if (!(isDefined(ki))) | |
1922 | 1922 | then throw("You are not eligible for ONBOARD artifact") | |
1923 | 1923 | else { | |
1924 | - | let | |
1925 | - | let | |
1926 | - | if (isDefined( | |
1927 | - | then throw(("You already used your ONBOARD artifact on duck " + value( | |
1924 | + | let kj = bE(c) | |
1925 | + | let kk = getString(kj) | |
1926 | + | if (isDefined(kk)) | |
1927 | + | then throw(("You already used your ONBOARD artifact on duck " + value(kk))) | |
1928 | 1928 | else { | |
1929 | - | let | |
1930 | - | let | |
1931 | - | if (isDefined( | |
1932 | - | then throw(((("The duck " + A) + " already got points from ONBOARD artifact from user ") + value( | |
1933 | - | else ([StringEntry( | |
1929 | + | let kl = bD(A) | |
1930 | + | let km = getString(kl) | |
1931 | + | if (isDefined(km)) | |
1932 | + | then throw(((("The duck " + A) + " already got points from ONBOARD artifact from user ") + value(km))) | |
1933 | + | else ([StringEntry(kj, A), StringEntry(kl, c)] ++ jZ(A, ac)._1) | |
1934 | 1934 | } | |
1935 | 1935 | } | |
1936 | 1936 | } | |
1937 | 1937 | ||
1938 | 1938 | ||
1939 | - | func | |
1940 | - | let | |
1941 | - | let P = | |
1942 | - | let | |
1943 | - | let | |
1944 | - | if ((valueOrElse(getInteger( | |
1939 | + | func kn (c,jo) = { | |
1940 | + | let ga = jm(c, eB, jo) | |
1941 | + | let P = ga._2 | |
1942 | + | let ji = dH(ga._3[di]) | |
1943 | + | let ko = bs(aE, P) | |
1944 | + | if ((valueOrElse(getInteger(ko), 0) > 0)) | |
1945 | 1945 | then throw("Presale artifact is already activated") | |
1946 | - | else if ((parseIntValue( | |
1946 | + | else if ((parseIntValue(ga._3[dh]) > eo)) | |
1947 | 1947 | then throw((((aC + " ") + P) + " is not eligible for presale artifact")) | |
1948 | 1948 | else { | |
1949 | - | let | |
1950 | - | ((( | |
1949 | + | let jT = jJ(c, P, ji, eB) | |
1950 | + | (((jT._1 :+ IntegerEntry(ko, ji)) :+ StringEntry(jT._2, makeString(jT._3, ":"))) :+ StringEntry(jT._4, makeString(jT._5, ":"))) | |
1951 | 1951 | } | |
1952 | 1952 | } | |
1953 | 1953 | ||
1954 | 1954 | ||
1955 | - | func | |
1956 | - | let ce = valueOrElse(getInteger( | |
1957 | - | let | |
1955 | + | func kp (A) = { | |
1956 | + | let ce = valueOrElse(getInteger(df, bP), 0) | |
1957 | + | let jq = split(valueOrElse(getString(bJ(A)), aJ), "_") | |
1958 | 1958 | let ax = lastBlock.timestamp | |
1959 | - | let cg = bY( | |
1959 | + | let cg = bY(df, ce) | |
1960 | 1960 | let ca = cg[bU] | |
1961 | 1961 | let cb = cg[bV] | |
1962 | - | if (( | |
1962 | + | if ((jq[bm] != "T")) | |
1963 | 1963 | then false | |
1964 | - | else if (if (if ((parseIntValue( | |
1964 | + | else if (if (if ((parseIntValue(jq[bl]) == ce)) | |
1965 | 1965 | then (cb[bX] == "INPROGRESS") | |
1966 | 1966 | else false) | |
1967 | 1967 | then (parseIntValue(ca[bW]) > ax) | |
1968 | 1968 | else false) | |
1969 | 1969 | then throw("Your duck is taking part in the tournament") | |
1970 | - | else | |
1971 | - | } | |
1972 | - | ||
1973 | - | ||
1974 | - | func | |
1970 | + | else dD(invoke(this, "exitTournamentInternal", [A], nil)) | |
1971 | + | } | |
1972 | + | ||
1973 | + | ||
1974 | + | func kq (A) = if (!(cv)) | |
1975 | 1975 | then false | |
1976 | 1976 | else { | |
1977 | - | let | |
1977 | + | let jq = split(valueOrElse(getString(bJ(A)), aJ), "_") | |
1978 | 1978 | let ax = lastBlock.timestamp | |
1979 | - | if (( | |
1979 | + | if ((jq[bm] != "D")) | |
1980 | 1980 | then false | |
1981 | 1981 | else { | |
1982 | - | let ci = parseIntValue( | |
1983 | - | let cj = parseIntValue( | |
1982 | + | let ci = parseIntValue(jq[bl]) | |
1983 | + | let cj = parseIntValue(jq[bn]) | |
1984 | 1984 | if (if ((ax > (ci + aN))) | |
1985 | 1985 | then (3 > cj) | |
1986 | 1986 | else false) | |
1987 | 1987 | then throw("Your duck is on delivery mission") | |
1988 | - | else | |
1988 | + | else dD(invoke(this, "exitDeliveryInternal", [A], nil)) | |
1989 | 1989 | } | |
1990 | 1990 | } | |
1991 | 1991 | ||
1992 | 1992 | ||
1993 | - | func | |
1994 | - | let | |
1993 | + | func kr (A) = { | |
1994 | + | let jq = split(valueOrElse(getString(bJ(A)), aJ), "_") | |
1995 | 1995 | let ax = lastBlock.timestamp | |
1996 | - | let ci = parseIntValue( | |
1997 | - | let cj = parseIntValue( | |
1998 | - | let | |
1999 | - | let | |
2000 | - | let | |
2001 | - | let | |
1996 | + | let ci = parseIntValue(jq[bl]) | |
1997 | + | let cj = parseIntValue(jq[bn]) | |
1998 | + | let jv = valueOrErrorMessage(getString(bG(A)), "NFT duck is orphaned") | |
1999 | + | let ks = z(A) | |
2000 | + | let kt = getIntegerValue(ks) | |
2001 | + | let ku = if ((cj >= 3)) | |
2002 | 2002 | then { | |
2003 | - | let | |
2004 | - | if (( | |
2003 | + | let kv = invoke(dc, "sendDeliveryReward", [jv], nil) | |
2004 | + | if ((kv == kv)) | |
2005 | 2005 | then nil | |
2006 | 2006 | else throw("Strict value is not equal to itself.") | |
2007 | 2007 | } | |
2008 | 2008 | else if ((ax > (ci + aN))) | |
2009 | 2009 | then throw("Your duck is still on delivery mission") | |
2010 | 2010 | else { | |
2011 | - | let | |
2012 | - | let | |
2013 | - | if (( | |
2014 | - | then if ((0 >= | |
2011 | + | let kw = valueOrElse(getInteger(dc, bO), 0) | |
2012 | + | let kx = invoke(dc, "updateDeliveryLocked", [(kw - aM)], nil) | |
2013 | + | if ((kx == kx)) | |
2014 | + | then if ((0 >= kt)) | |
2015 | 2015 | then nil | |
2016 | 2016 | else [IntegerEntry(T(A), (ci + a))] | |
2017 | 2017 | else throw("Strict value is not equal to itself.") | |
2018 | 2018 | } | |
2019 | - | let | |
2020 | - | let | |
2021 | - | $Tuple4( | |
2022 | - | } | |
2023 | - | ||
2024 | - | ||
2025 | - | func | |
2019 | + | let ky = getIntegerValue(J(A)) | |
2020 | + | let kz = getStringValue(K(A)) | |
2021 | + | $Tuple4(ku, [IntegerEntry(ks, ky), StringEntry(bJ(A), kz)], kz, ky) | |
2022 | + | } | |
2023 | + | ||
2024 | + | ||
2025 | + | func kA (kB,al,kC,c,kD,kE) = { | |
2026 | 2026 | let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked") | |
2027 | - | if ( | |
2027 | + | if (kp(A)) | |
2028 | 2028 | then throw("mergeInternal_checkTournament") | |
2029 | - | else if ( | |
2029 | + | else if (kq(A)) | |
2030 | 2030 | then throw("mergeInternal_checkDelivery") | |
2031 | 2031 | else { | |
2032 | - | func | |
2033 | - | let | |
2034 | - | let | |
2035 | - | let | |
2036 | - | let | |
2037 | - | if (( | |
2032 | + | func kF (eR,P) = { | |
2033 | + | let js = value(assetInfo(fromBase58String(P))) | |
2034 | + | let jt = br(P) | |
2035 | + | let ju = valueOrErrorMessage(getInteger(jt), (("NFT " + js.name) + " is not staked")) | |
2036 | + | let jv = valueOrErrorMessage(getString(bo(P)), (("NFT " + js.name) + " is orphaned")) | |
2037 | + | if ((jv != c)) | |
2038 | 2038 | then throw((aC + " is not yours")) | |
2039 | 2039 | else { | |
2040 | - | let | |
2041 | - | let | |
2042 | - | if (if (( | |
2043 | - | then ( | |
2040 | + | let jw = split(js.description, "_") | |
2041 | + | let dt = jw[dk] | |
2042 | + | if (if ((eR._3 != "")) | |
2043 | + | then (eR._3 != dt) | |
2044 | 2044 | else false) | |
2045 | 2045 | then throw("Lands should be on the same continent to merge") | |
2046 | 2046 | else { | |
2047 | - | let | |
2048 | - | let | |
2049 | - | let | |
2050 | - | let | |
2051 | - | let | |
2052 | - | let | |
2053 | - | let | |
2054 | - | let | |
2055 | - | let | |
2056 | - | if (("S" == | |
2047 | + | let dI = jw[di] | |
2048 | + | let kG = eR._1 | |
2049 | + | let gK = valueOrErrorMessage(indexOf(kG, dI), "You haven't passed all the lands needed") | |
2050 | + | let kH = (take(kG, gK) + drop(kG, (gK + 1))) | |
2051 | + | let ji = dH(dI) | |
2052 | + | let kI = (eR._2 + valueOrElse(getInteger(bs(aE, P)), 0)) | |
2053 | + | let ia = valueOrElse(getInteger(by(P)), 0) | |
2054 | + | let kJ = { | |
2055 | + | let cy = dI | |
2056 | + | if (("S" == cy)) | |
2057 | 2057 | then 3 | |
2058 | - | else if (("M" == | |
2058 | + | else if (("M" == cy)) | |
2059 | 2059 | then 4 | |
2060 | - | else if (("L" == | |
2060 | + | else if (("L" == cy)) | |
2061 | 2061 | then 5 | |
2062 | - | else if (("XL" == | |
2062 | + | else if (("XL" == cy)) | |
2063 | 2063 | then 6 | |
2064 | 2064 | else throw("Only S, M, L, XL can merge") | |
2065 | 2065 | } | |
2066 | - | if (( | |
2066 | + | if ((ia != kJ)) | |
2067 | 2067 | then throw("All lands should be maxed to merge") | |
2068 | 2068 | else { | |
2069 | - | let | |
2070 | - | let | |
2071 | - | let | |
2072 | - | if ((0 > | |
2073 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
2069 | + | let et = jw[dh] | |
2070 | + | let gG = gM(jw[dj]) | |
2071 | + | let gQ = (lastBlock.timestamp - ju) | |
2072 | + | if ((0 > gQ)) | |
2073 | + | then throw(((("Saved timestamp is in future, saved = " + toString(ju)) + ", current = ") + toString(lastBlock.timestamp))) | |
2074 | 2074 | else { | |
2075 | - | let | |
2076 | - | let | |
2077 | - | let | |
2078 | - | let | |
2079 | - | let | |
2080 | - | let | |
2081 | - | let | |
2082 | - | let | |
2083 | - | if (!(isDefined( | |
2075 | + | let jy = jh(P, ji) | |
2076 | + | let hZ = (ji / cF) | |
2077 | + | let jG = gO(split(eR._4, "_"), gG, gQ, hZ, jy) | |
2078 | + | let fb = gE(eR._6, gG, hZ, -1) | |
2079 | + | let kK = gE(eR._10, gG, hZ, -1) | |
2080 | + | let hu = gE(eR._9, gG, hZ, 1) | |
2081 | + | let kL = eR._7 | |
2082 | + | let da = indexOf(kL, P) | |
2083 | + | if (!(isDefined(da))) | |
2084 | 2084 | then throw(("Your staked lands don't contain " + P)) | |
2085 | 2085 | else { | |
2086 | - | let | |
2087 | - | let | |
2088 | - | $Tuple10( | |
2089 | - | then [DeleteEntry( | |
2090 | - | else nil)), | |
2086 | + | let kM = bq(P) | |
2087 | + | let kN = valueOrElse(getString(kM), "") | |
2088 | + | $Tuple10(kH, kI, dt, jG, ((((((((((((eR._5 :+ DeleteEntry(br(P))) :+ DeleteEntry(bu(aC, P, c))) :+ DeleteEntry(es(et))) :+ DeleteEntry(bo(P))) :+ DeleteEntry(by(P))) :+ DeleteEntry(eu(P, c))) :+ DeleteEntry(bs(aE, P))) :+ DeleteEntry(ev(et))) :+ DeleteEntry(bx(P))) :+ DeleteEntry(kM)) :+ Burn(fromBase58String(P), 1)) ++ (if ((kN != "")) | |
2089 | + | then [DeleteEntry(eq(kN))] | |
2090 | + | else nil)), fb, removeByIndex(kL, value(da)), (eR._8 + ji), hu, kK) | |
2091 | 2091 | } | |
2092 | 2092 | } | |
2093 | 2093 | } | |
2094 | 2094 | } | |
2095 | 2095 | } | |
2096 | 2096 | } | |
2097 | 2097 | ||
2098 | - | let | |
2099 | - | let | |
2100 | - | let | |
2101 | - | let | |
2102 | - | let | |
2103 | - | let | |
2104 | - | then split_51C(value( | |
2098 | + | let hL = bI(A) | |
2099 | + | let io = hK(hL) | |
2100 | + | let gF = split(valueOrElse(getString(dr()), "0_0_0_0_0_0"), "_") | |
2101 | + | let kO = du(c) | |
2102 | + | let kP = getString(kO) | |
2103 | + | let kQ = if (isDefined(kP)) | |
2104 | + | then split_51C(value(kP), "_") | |
2105 | 2105 | else nil | |
2106 | - | let | |
2107 | - | let | |
2108 | - | let | |
2109 | - | let | |
2110 | - | let | |
2111 | - | let | |
2112 | - | func | |
2113 | - | then | |
2114 | - | else | |
2115 | - | ||
2116 | - | func | |
2117 | - | then | |
2106 | + | let kR = split(value(assetInfo(fromBase58String(kD[0]))).description, "_")[dk] | |
2107 | + | let kS = split(valueOrElse(getString(ds(kR)), "0_0_0_0_0_0"), "_") | |
2108 | + | let fc = { | |
2109 | + | let eT = kD | |
2110 | + | let eU = size(eT) | |
2111 | + | let eV = $Tuple10(kC, 0, "", io[bi], nil, gF, kQ, 0, split("0_0_0_0_0_0", "_"), kS) | |
2112 | + | func eW (eX,eY) = if ((eY >= eU)) | |
2113 | + | then eX | |
2114 | + | else kF(eX, eT[eY]) | |
2115 | + | ||
2116 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
2117 | + | then eX | |
2118 | 2118 | else throw("List size exceeds 5") | |
2119 | 2119 | ||
2120 | - | | |
2120 | + | eZ(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5) | |
2121 | 2121 | } | |
2122 | - | let | |
2123 | - | let | |
2124 | - | let | |
2125 | - | let | |
2126 | - | let | |
2127 | - | let | |
2128 | - | let bp = calculateAssetId( | |
2129 | - | let | |
2130 | - | let | |
2131 | - | let | |
2132 | - | let | |
2133 | - | $Tuple2(((((((((((((((( | |
2134 | - | then StringEntry( | |
2135 | - | else DeleteEntry( | |
2122 | + | let dt = fc._3 | |
2123 | + | let ho = valueOrErrorMessage(indexOf(aP, dt), ("Unknown continent: " + dt)) | |
2124 | + | let gN = ht(fc._9, (dH(kB) / cF)) | |
2125 | + | let iM = valueOrElse(getInteger(ep()), (eo + 1)) | |
2126 | + | let kT = toString(iM) | |
2127 | + | let iN = Issue(eG(kT, kB), makeString([kT, kB, gN, dt], "_"), 1, 0, false) | |
2128 | + | let bp = calculateAssetId(iN) | |
2129 | + | let kU = toBase58String(bp) | |
2130 | + | let jS = makeString(fd((kE > 0), split(io[bj], "_"), kE), "_") | |
2131 | + | let kV = dv(c) | |
2132 | + | let kW = valueOrElse(getInteger(kV), 0) | |
2133 | + | $Tuple2((((((((((((((((fc._5 :+ (if ((size(fc._7) > 0)) | |
2134 | + | then StringEntry(kO, makeString_11C(fc._7, "_")) | |
2135 | + | else DeleteEntry(kO))) :+ IntegerEntry(kV, if ((fc._8 > kW)) | |
2136 | 2136 | then 0 | |
2137 | - | else ( | |
2137 | + | else (kW - fc._8))) :+ IntegerEntry(ep(), (iM + 1))) :+ iN) :+ StringEntry(es(kT), kU)) :+ StringEntry(bo(kU), c)) :+ StringEntry(ev(kT), c)) :+ IntegerEntry(bs(aE, kU), fc._2)) :+ IntegerEntry(by(kU), al)) :+ IntegerEntry(eu(kU, c), al)) :+ StringEntry(hL, makeString([io[bh], fc._4, jS, io[bk]], ":"))) :+ StringEntry(dr(), makeString(fc._6, "_"))) :+ StringEntry(ds(dt), makeString(fc._10, "_"))) :+ StringEntry(bJ(A), makeString([dt, "L", kU], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bp)), kU) | |
2138 | 2138 | } | |
2139 | 2139 | } | |
2140 | 2140 | ||
2141 | 2141 | ||
2142 | - | func | |
2143 | - | ||
2144 | - | ||
2145 | - | func | |
2146 | - | ||
2147 | - | ||
2148 | - | func | |
2149 | - | ||
2150 | - | ||
2151 | - | func | |
2152 | - | ||
2153 | - | ||
2154 | - | func | |
2155 | - | let | |
2156 | - | if ((4 == | |
2157 | - | then | |
2158 | - | else if ((3 == | |
2159 | - | then | |
2160 | - | else if ((5 == | |
2161 | - | then | |
2162 | - | else if ((2 == | |
2163 | - | then | |
2142 | + | func kX (c,kD) = kA("M", 3, "SSSS", c, kD, 0) | |
2143 | + | ||
2144 | + | ||
2145 | + | func kY (c,kD) = kA("L", 4, "SMM", c, kD, (cA * 4)) | |
2146 | + | ||
2147 | + | ||
2148 | + | func kZ (c,kD) = kA("XL", 5, "SSSML", c, kD, (cA * 47)) | |
2149 | + | ||
2150 | + | ||
2151 | + | func la (c,kD) = kA("XXL", 6, "LXL", c, kD, (cA * 54)) | |
2152 | + | ||
2153 | + | ||
2154 | + | func lb (c,kD) = { | |
2155 | + | let cy = size(kD) | |
2156 | + | if ((4 == cy)) | |
2157 | + | then kX(c, kD) | |
2158 | + | else if ((3 == cy)) | |
2159 | + | then kY(c, kD) | |
2160 | + | else if ((5 == cy)) | |
2161 | + | then kZ(c, kD) | |
2162 | + | else if ((2 == cy)) | |
2163 | + | then la(c, kD) | |
2164 | 2164 | else throw("Unknown merge") | |
2165 | 2165 | } | |
2166 | 2166 | ||
2167 | 2167 | ||
2168 | - | func | |
2169 | - | let | |
2170 | - | if (if ( | |
2171 | - | then isDefined( | |
2168 | + | func lc (bL) = { | |
2169 | + | let ld = getString(bH(bL)) | |
2170 | + | if (if (cv) | |
2171 | + | then isDefined(ld) | |
2172 | 2172 | else false) | |
2173 | 2173 | then { | |
2174 | - | let A = value( | |
2175 | - | let | |
2176 | - | let cf = split(valueOrElse(getString( | |
2174 | + | let A = value(ld) | |
2175 | + | let le = bJ(A) | |
2176 | + | let cf = split(valueOrElse(getString(le), aJ), "_") | |
2177 | 2177 | let ci = parseIntValue(cf[bl]) | |
2178 | 2178 | if (if ((cf[bm] != "D")) | |
2179 | 2179 | then true | |
2180 | 2180 | else (lastBlock.timestamp > (ci + aN))) | |
2181 | 2181 | then nil | |
2182 | 2182 | else { | |
2183 | - | let | |
2183 | + | let ks = z(A) | |
2184 | 2184 | if ((parseIntValue(cf[bn]) >= 3)) | |
2185 | 2185 | then { | |
2186 | - | let | |
2187 | - | if (( | |
2186 | + | let kv = invoke(dc, "sendDeliveryReward", [bL], nil) | |
2187 | + | if ((kv == kv)) | |
2188 | 2188 | then nil | |
2189 | 2189 | else throw("Strict value is not equal to itself.") | |
2190 | 2190 | } | |
2191 | 2191 | else (({ | |
2192 | - | let | |
2193 | - | let | |
2194 | - | if (( | |
2195 | - | then if ((0 >= getIntegerValue( | |
2192 | + | let kw = valueOrElse(getInteger(dc, bO), 0) | |
2193 | + | let kx = invoke(dc, "updateDeliveryLocked", [(kw - aM)], nil) | |
2194 | + | if ((kx == kx)) | |
2195 | + | then if ((0 >= getIntegerValue(ks))) | |
2196 | 2196 | then nil | |
2197 | 2197 | else { | |
2198 | - | let | |
2199 | - | if (( | |
2198 | + | let lf = invoke(this, "saveInteger", [T(A), (ci + a)], nil) | |
2199 | + | if ((lf == lf)) | |
2200 | 2200 | then nil | |
2201 | 2201 | else throw("Strict value is not equal to itself.") | |
2202 | 2202 | } | |
2203 | 2203 | else throw("Strict value is not equal to itself.") | |
2204 | - | } :+ IntegerEntry( | |
2204 | + | } :+ IntegerEntry(ks, getIntegerValue(J(A)))) :+ StringEntry(le, getStringValue(K(A)))) | |
2205 | 2205 | } | |
2206 | 2206 | } | |
2207 | 2207 | else nil | |
2208 | 2208 | } | |
2209 | 2209 | ||
2210 | 2210 | ||
2211 | - | func | |
2212 | - | then valueOrElse(getBoolean( | |
2211 | + | func lg (gK) = if (if ((gK.originCaller != db)) | |
2212 | + | then valueOrElse(getBoolean(dK()), false) | |
2213 | 2213 | else false) | |
2214 | 2214 | then throw("Contracts are under maintenance") | |
2215 | 2215 | else { | |
2216 | - | let bL = toString( | |
2217 | - | ( | |
2216 | + | let bL = toString(gK.originCaller) | |
2217 | + | (lc(bL) :+ StringEntry(dL(bL), toBase58String(gK.transactionId))) | |
2218 | 2218 | } | |
2219 | 2219 | ||
2220 | 2220 | ||
2221 | - | func | |
2222 | - | then valueOrElse(getBoolean( | |
2221 | + | func lh (gK) = if (if ((gK.originCaller != db)) | |
2222 | + | then valueOrElse(getBoolean(dK()), false) | |
2223 | 2223 | else false) | |
2224 | 2224 | then throw("Contracts are under maintenance") | |
2225 | - | else [StringEntry( | |
2226 | - | ||
2227 | - | ||
2228 | - | @Callable( | |
2229 | - | func constructorV1 ( | |
2225 | + | else [StringEntry(dL(toString(gK.originCaller)), toBase58String(gK.transactionId))] | |
2226 | + | ||
2227 | + | ||
2228 | + | @Callable(gK) | |
2229 | + | func constructorV1 (li) = if ((gK.caller != this)) | |
2230 | 2230 | then throw("Permission denied") | |
2231 | - | else [StringEntry( | |
2232 | - | ||
2233 | - | ||
2234 | - | ||
2235 | - | @Callable( | |
2236 | - | func saveInteger ( | |
2231 | + | else [StringEntry(cV(), li)] | |
2232 | + | ||
2233 | + | ||
2234 | + | ||
2235 | + | @Callable(gK) | |
2236 | + | func saveInteger (cN,eI) = if ((gK.caller != this)) | |
2237 | 2237 | then throw("saveInteger is not public method") | |
2238 | - | else [IntegerEntry( | |
2239 | - | ||
2240 | - | ||
2241 | - | ||
2242 | - | @Callable( | |
2243 | - | func setBlocked ( | |
2238 | + | else [IntegerEntry(cN, eI)] | |
2239 | + | ||
2240 | + | ||
2241 | + | ||
2242 | + | @Callable(gK) | |
2243 | + | func setBlocked (lj) = if ((gK.caller != this)) | |
2244 | 2244 | then throw("permission denied") | |
2245 | - | else [BooleanEntry( | |
2246 | - | ||
2247 | - | ||
2248 | - | ||
2249 | - | @Callable( | |
2245 | + | else [BooleanEntry(dK(), lj)] | |
2246 | + | ||
2247 | + | ||
2248 | + | ||
2249 | + | @Callable(gK) | |
2250 | 2250 | func stakeLand () = { | |
2251 | - | let | |
2252 | - | if ((size( | |
2251 | + | let lk = lg(gK) | |
2252 | + | if ((size(gK.payments) != 1)) | |
2253 | 2253 | then throw("Exactly one payment required") | |
2254 | 2254 | else { | |
2255 | - | let | |
2256 | - | let bp = value( | |
2257 | - | let | |
2258 | - | if (( | |
2255 | + | let ll = value(gK.payments[0]) | |
2256 | + | let bp = value(ll.assetId) | |
2257 | + | let cM = toString(gK.caller) | |
2258 | + | if ((ll.amount != 1)) | |
2259 | 2259 | then throw((("NFT " + aC) + " token should be attached as payment")) | |
2260 | 2260 | else { | |
2261 | - | let | |
2262 | - | if (( | |
2261 | + | let js = value(assetInfo(bp)) | |
2262 | + | if ((js.issuer != this)) | |
2263 | 2263 | then throw("Unknown issuer of token") | |
2264 | - | else if (!(contains( | |
2264 | + | else if (!(contains(js.name, aC))) | |
2265 | 2265 | then throw((("Only NFT " + aC) + " tokens are accepted")) | |
2266 | 2266 | else { | |
2267 | - | let | |
2268 | - | let | |
2269 | - | then dropRight( | |
2270 | - | else if (contains( | |
2271 | - | then dropRight( | |
2272 | - | else dropRight( | |
2273 | - | if (!(isDefined(parseInt( | |
2274 | - | then throw(("Cannot parse land number from " + | |
2267 | + | let lm = drop(js.name, 4) | |
2268 | + | let et = if (contains(lm, "XXL")) | |
2269 | + | then dropRight(lm, 3) | |
2270 | + | else if (contains(lm, "XL")) | |
2271 | + | then dropRight(lm, 2) | |
2272 | + | else dropRight(lm, 1) | |
2273 | + | if (!(isDefined(parseInt(et)))) | |
2274 | + | then throw(("Cannot parse land number from " + js.name)) | |
2275 | 2275 | else { | |
2276 | 2276 | let P = toBase58String(bp) | |
2277 | - | let | |
2278 | - | if (isDefined(getInteger( | |
2279 | - | then throw((("NFT " + | |
2277 | + | let jt = br(P) | |
2278 | + | if (isDefined(getInteger(jt))) | |
2279 | + | then throw((("NFT " + js.name) + " is already staked")) | |
2280 | 2280 | else { | |
2281 | - | let | |
2282 | - | let | |
2283 | - | let | |
2284 | - | let | |
2285 | - | let | |
2286 | - | let | |
2287 | - | let | |
2288 | - | let | |
2289 | - | let | |
2290 | - | let | |
2291 | - | let | |
2292 | - | then split_51C(value( | |
2281 | + | let jw = split(js.description, "_") | |
2282 | + | let gG = gM(jw[dj]) | |
2283 | + | let ji = dH(jw[di]) | |
2284 | + | let hZ = (ji / cF) | |
2285 | + | let fb = gL(gG, hZ, 1) | |
2286 | + | let ln = ds(jw[dk]) | |
2287 | + | let kS = split(valueOrElse(getString(ln), "0_0_0_0_0_0"), "_") | |
2288 | + | let lo = makeString(gE(kS, gG, hZ, 1), "_") | |
2289 | + | let kO = du(cM) | |
2290 | + | let kP = getString(kO) | |
2291 | + | let kL = if (isDefined(kP)) | |
2292 | + | then split_51C(value(kP), "_") | |
2293 | 2293 | else nil | |
2294 | - | if (containsElement( | |
2294 | + | if (containsElement(kL, P)) | |
2295 | 2295 | then throw(("Your staked lands already contain " + P)) | |
2296 | - | else if ((size( | |
2296 | + | else if ((size(kL) >= aG)) | |
2297 | 2297 | then throw((("Your already staked max (" + toString(aG)) + ") lands")) | |
2298 | 2298 | else { | |
2299 | - | let | |
2300 | - | let | |
2301 | - | let | |
2302 | - | let | |
2303 | - | $Tuple2(([IntegerEntry( | |
2299 | + | let ia = valueOrElse(getInteger(by(P)), 0) | |
2300 | + | let kV = dv(cM) | |
2301 | + | let lp = valueOrElse(getInteger(kV), 0) | |
2302 | + | let lq = invoke(de, "onStakeUnstakeLand", [cM], nil) | |
2303 | + | $Tuple2(([IntegerEntry(jt, lastBlock.timestamp), IntegerEntry(bu(aC, P, cM), lastBlock.timestamp), StringEntry(kO, makeString_11C((kL :+ P), "_")), IntegerEntry(kV, (lp + ji)), StringEntry(bo(P), cM), StringEntry(ev(et), cM), IntegerEntry(eu(P, cM), ia), StringEntry(dr(), fb), StringEntry(ln, lo)] ++ lk), lq) | |
2304 | 2304 | } | |
2305 | 2305 | } | |
2306 | 2306 | } | |
2307 | 2307 | } | |
2308 | 2308 | } | |
2309 | 2309 | } | |
2310 | 2310 | } | |
2311 | 2311 | ||
2312 | 2312 | ||
2313 | 2313 | ||
2314 | - | @Callable( | |
2315 | - | func unstakeLand ( | |
2316 | - | let | |
2317 | - | if ((size( | |
2314 | + | @Callable(gK) | |
2315 | + | func unstakeLand (jo) = { | |
2316 | + | let lk = lg(gK) | |
2317 | + | if ((size(gK.payments) != 0)) | |
2318 | 2318 | then throw("No payments required") | |
2319 | 2319 | else { | |
2320 | - | let c = toString( | |
2321 | - | let | |
2322 | - | let P = | |
2323 | - | let | |
2324 | - | let | |
2325 | - | let | |
2326 | - | let | |
2327 | - | let | |
2328 | - | let | |
2329 | - | let | |
2330 | - | let | |
2331 | - | let | |
2332 | - | let | |
2333 | - | let | |
2334 | - | let | |
2335 | - | if (!(isDefined( | |
2320 | + | let c = toString(gK.caller) | |
2321 | + | let ga = jm(c, eA, jo) | |
2322 | + | let P = ga._2 | |
2323 | + | let jw = ga._3 | |
2324 | + | let kO = du(c) | |
2325 | + | let gG = gM(jw[dj]) | |
2326 | + | let ji = dH(jw[di]) | |
2327 | + | let hZ = (ji / cF) | |
2328 | + | let fb = gL(gG, hZ, -1) | |
2329 | + | let ln = ds(jw[dk]) | |
2330 | + | let kS = split(valueOrElse(getString(ln), "0_0_0_0_0_0"), "_") | |
2331 | + | let lo = makeString(gE(kS, gG, hZ, -1), "_") | |
2332 | + | let jT = jJ(c, P, ji, eA) | |
2333 | + | let kL = split_51C(valueOrElse(getString(kO), ""), "_") | |
2334 | + | let da = indexOf(kL, P) | |
2335 | + | if (!(isDefined(da))) | |
2336 | 2336 | then throw(("Your staked lands don't contain " + P)) | |
2337 | 2337 | else { | |
2338 | 2338 | let ax = lastBlock.timestamp | |
2339 | - | let | |
2340 | - | if (( | |
2341 | - | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString( | |
2339 | + | let lr = valueOrElse(getInteger(dd, bK(c)), 0) | |
2340 | + | if ((lr >= ax)) | |
2341 | + | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lr))) | |
2342 | 2342 | else { | |
2343 | - | let | |
2344 | - | if (( | |
2345 | - | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString( | |
2343 | + | let ls = (valueOrElse(getInteger(de, b(c)), 0) + cB) | |
2344 | + | if ((ls > ax)) | |
2345 | + | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(ls))) | |
2346 | 2346 | else { | |
2347 | - | let | |
2348 | - | let | |
2349 | - | let | |
2347 | + | let kV = dv(c) | |
2348 | + | let kW = valueOrElse(getInteger(kV), 0) | |
2349 | + | let lt = if ((ji > kW)) | |
2350 | 2350 | then 0 | |
2351 | - | else ( | |
2352 | - | let | |
2353 | - | $Tuple2(([ScriptTransfer( | |
2354 | - | then StringEntry( | |
2355 | - | else DeleteEntry( | |
2351 | + | else (kW - ji) | |
2352 | + | let lq = invoke(de, "onStakeUnstakeLand", [c], nil) | |
2353 | + | $Tuple2(([ScriptTransfer(gK.caller, 1, fromBase58String(P)), DeleteEntry(br(P)), DeleteEntry(bu(aC, P, c)), StringEntry(dr(), fb), StringEntry(ln, lo), StringEntry(jT._2, makeString(jT._3, ":")), if ((size(kL) > 1)) | |
2354 | + | then StringEntry(kO, makeString_11C(removeByIndex(kL, value(da)), "_")) | |
2355 | + | else DeleteEntry(kO), IntegerEntry(kV, lt)] ++ lk), lq) | |
2356 | 2356 | } | |
2357 | 2357 | } | |
2358 | 2358 | } | |
2359 | 2359 | } | |
2360 | 2360 | } | |
2361 | 2361 | ||
2362 | 2362 | ||
2363 | 2363 | ||
2364 | - | @Callable( | |
2364 | + | @Callable(gK) | |
2365 | 2365 | func stakeDuck () = { | |
2366 | - | let | |
2367 | - | if ((size( | |
2366 | + | let lk = lg(gK) | |
2367 | + | if ((size(gK.payments) != 1)) | |
2368 | 2368 | then throw("Exactly one payment required") | |
2369 | 2369 | else { | |
2370 | - | let | |
2371 | - | let bp = value( | |
2372 | - | let | |
2373 | - | if (( | |
2370 | + | let ll = value(gK.payments[0]) | |
2371 | + | let bp = value(ll.assetId) | |
2372 | + | let cM = toString(gK.caller) | |
2373 | + | if ((ll.amount != 1)) | |
2374 | 2374 | then throw((("NFT " + aD) + " token should be attached as payment")) | |
2375 | 2375 | else { | |
2376 | - | let | |
2377 | - | if (if (( | |
2378 | - | then ( | |
2376 | + | let js = value(assetInfo(bp)) | |
2377 | + | if (if ((js.issuer != dX)) | |
2378 | + | then (js.issuer != dY) | |
2379 | 2379 | else false) | |
2380 | 2380 | then throw((("Unknown issuer of " + aD) + " token")) | |
2381 | - | else if (!(contains( | |
2381 | + | else if (!(contains(js.name, aD))) | |
2382 | 2382 | then throw((("Only NFT " + aD) + " tokens are accepted")) | |
2383 | 2383 | else { | |
2384 | - | let | |
2385 | - | let | |
2386 | - | if (isDefined(getInteger( | |
2387 | - | then throw((("NFT " + | |
2388 | - | else if (isDefined(getString(bH( | |
2389 | - | then throw(("You already staked one duck: " + | |
2384 | + | let lu = toBase58String(bp) | |
2385 | + | let jt = br(lu) | |
2386 | + | if (isDefined(getInteger(jt))) | |
2387 | + | then throw((("NFT " + js.name) + " is already staked")) | |
2388 | + | else if (isDefined(getString(bH(cM)))) | |
2389 | + | then throw(("You already staked one duck: " + js.name)) | |
2390 | 2390 | else { | |
2391 | - | let | |
2392 | - | let cd = getString( | |
2393 | - | let | |
2394 | - | let | |
2395 | - | let | |
2396 | - | let | |
2397 | - | let | |
2398 | - | ([IntegerEntry( | |
2391 | + | let le = bJ(lu) | |
2392 | + | let cd = getString(le) | |
2393 | + | let hL = bI(lu) | |
2394 | + | let lv = getString(hL) | |
2395 | + | let jb = z(lu) | |
2396 | + | let jc = ag(valueOrElse(getInteger(D(lu)), 0)) | |
2397 | + | let kt = valueOrElse(getInteger(jb), jc) | |
2398 | + | ([IntegerEntry(jt, lastBlock.timestamp), IntegerEntry(bu(aD, toBase58String(bp), cM), lastBlock.timestamp), StringEntry(bG(lu), cM), StringEntry(bH(cM), lu)] ++ (if (isDefined(cd)) | |
2399 | 2399 | then nil | |
2400 | - | else ([StringEntry( | |
2400 | + | else ([StringEntry(le, aJ)] ++ (if (isDefined(lv)) | |
2401 | 2401 | then nil | |
2402 | - | else (([StringEntry( | |
2402 | + | else (([StringEntry(hL, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jb, kt)) ++ lk))))) | |
2403 | 2403 | } | |
2404 | 2404 | } | |
2405 | 2405 | } | |
2406 | 2406 | } | |
2407 | 2407 | } | |
2408 | 2408 | ||
2409 | 2409 | ||
2410 | 2410 | ||
2411 | - | @Callable( | |
2412 | - | func unstakeDuck ( | |
2413 | - | let | |
2414 | - | if ((size( | |
2411 | + | @Callable(gK) | |
2412 | + | func unstakeDuck (lu) = { | |
2413 | + | let lk = lg(gK) | |
2414 | + | if ((size(gK.payments) != 0)) | |
2415 | 2415 | then throw("No payments required") | |
2416 | 2416 | else { | |
2417 | - | let bp = fromBase58String( | |
2418 | - | let | |
2419 | - | let | |
2420 | - | let | |
2421 | - | if (!(isDefined(getInteger( | |
2422 | - | then throw((("NFT " + | |
2423 | - | else if (!(isDefined(getString(bH( | |
2424 | - | then throw((("The duck " + | |
2417 | + | let bp = fromBase58String(lu) | |
2418 | + | let cM = toString(gK.caller) | |
2419 | + | let js = value(assetInfo(bp)) | |
2420 | + | let jt = br(lu) | |
2421 | + | if (!(isDefined(getInteger(jt)))) | |
2422 | + | then throw((("NFT " + js.name) + " is not staked")) | |
2423 | + | else if (!(isDefined(getString(bH(cM))))) | |
2424 | + | then throw((("The duck " + js.name) + " is not staked")) | |
2425 | 2425 | else { | |
2426 | - | let | |
2427 | - | if (( | |
2426 | + | let jv = valueOrErrorMessage(getString(bG(lu)), (("NFT " + js.name) + " is orphaned")) | |
2427 | + | if ((jv != cM)) | |
2428 | 2428 | then throw("Staked NFT is not yours") | |
2429 | - | else if ( | |
2429 | + | else if (kp(lu)) | |
2430 | 2430 | then throw("unstakeDuck_checkTournament") | |
2431 | - | else if ( | |
2431 | + | else if (kq(lu)) | |
2432 | 2432 | then throw("unstakeDuck_checkDelivery") | |
2433 | 2433 | else { | |
2434 | - | let | |
2435 | - | let | |
2436 | - | let as = valueOrElse(getInteger( | |
2437 | - | if (( | |
2438 | - | then throw((("Please heal your duck to " + toString( | |
2439 | - | else ([ScriptTransfer( | |
2434 | + | let jb = z(lu) | |
2435 | + | let jc = ag(valueOrElse(getInteger(D(lu)), 0)) | |
2436 | + | let as = valueOrElse(getInteger(jb), jc) | |
2437 | + | if ((jc > as)) | |
2438 | + | then throw((("Please heal your duck to " + toString(jc)) + "hp before unstaking")) | |
2439 | + | else ([ScriptTransfer(gK.caller, 1, bp), DeleteEntry(jt), DeleteEntry(jb), DeleteEntry(bJ(lu)), DeleteEntry(bG(lu)), DeleteEntry(bu(aD, lu, cM)), DeleteEntry(bH(cM))] ++ lk) | |
2440 | 2440 | } | |
2441 | 2441 | } | |
2442 | 2442 | } | |
2443 | 2443 | } | |
2444 | 2444 | ||
2445 | 2445 | ||
2446 | 2446 | ||
2447 | - | @Callable( | |
2448 | - | func claimRes ( | |
2449 | - | let | |
2450 | - | if ((size( | |
2447 | + | @Callable(gK) | |
2448 | + | func claimRes (eI,lw) = { | |
2449 | + | let lk = lg(gK) | |
2450 | + | if ((size(gK.payments) != 0)) | |
2451 | 2451 | then throw("No payments required") | |
2452 | 2452 | else { | |
2453 | - | let c = toString( | |
2454 | - | let | |
2453 | + | let c = toString(gK.originCaller) | |
2454 | + | let fj = jx(c, eI, eA, lw) | |
2455 | 2455 | let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked") | |
2456 | - | $Tuple2((((( | |
2457 | - | } | |
2458 | - | } | |
2459 | - | ||
2460 | - | ||
2461 | - | ||
2462 | - | @Callable( | |
2463 | - | func claimResToWH ( | |
2464 | - | let | |
2465 | - | if ((size( | |
2456 | + | $Tuple2(((((fj._1 ++ jZ(A, fraction(U, eI, cE))._1) :+ StringEntry(fj._2, makeString(fj._3, ":"))) :+ StringEntry(fj._4, makeString(fj._5, ":"))) ++ lk), fj._3[bi]) | |
2457 | + | } | |
2458 | + | } | |
2459 | + | ||
2460 | + | ||
2461 | + | ||
2462 | + | @Callable(gK) | |
2463 | + | func claimResToWH (eI,lw) = { | |
2464 | + | let lk = lg(gK) | |
2465 | + | if ((size(gK.payments) != 0)) | |
2466 | 2466 | then throw("No payments required") | |
2467 | 2467 | else { | |
2468 | - | let c = toString( | |
2469 | - | let | |
2470 | - | $Tuple2((((( | |
2471 | - | } | |
2472 | - | } | |
2473 | - | ||
2474 | - | ||
2475 | - | ||
2476 | - | @Callable( | |
2477 | - | func flight ( | |
2478 | - | let | |
2479 | - | if ((size( | |
2468 | + | let c = toString(gK.originCaller) | |
2469 | + | let fj = jx(c, eI, ez, lw) | |
2470 | + | $Tuple2(((((fj._1 ++ kf(c, fraction(U, eI, cE))._1) :+ StringEntry(fj._2, makeString(fj._3, ":"))) :+ StringEntry(fj._4, makeString(fj._5, ":"))) ++ lk), fj._5[aZ]) | |
2471 | + | } | |
2472 | + | } | |
2473 | + | ||
2474 | + | ||
2475 | + | ||
2476 | + | @Callable(gK) | |
2477 | + | func flight (iQ,iR) = { | |
2478 | + | let lk = lh(gK) | |
2479 | + | if ((size(gK.payments) != 0)) | |
2480 | 2480 | then throw("No payments required") | |
2481 | 2481 | else { | |
2482 | - | let bL = toString( | |
2483 | - | let | |
2484 | - | let | |
2485 | - | let A = | |
2486 | - | let | |
2487 | - | let | |
2488 | - | let | |
2489 | - | if (( | |
2482 | + | let bL = toString(gK.caller) | |
2483 | + | let hp = iP(bL, iQ, iR) | |
2484 | + | let iV = hp._1 | |
2485 | + | let A = hp._2 | |
2486 | + | let le = bJ(A) | |
2487 | + | let jq = valueOrElse(getString(le), aJ) | |
2488 | + | let iX = hp._4 | |
2489 | + | if ((iX == jq)) | |
2490 | 2490 | then throw("You can't fly to the same location") | |
2491 | 2491 | else { | |
2492 | - | let cr = split( | |
2493 | - | let | |
2494 | - | let | |
2495 | - | let | |
2496 | - | let | |
2497 | - | let | |
2498 | - | let | |
2499 | - | let | |
2500 | - | let | |
2501 | - | then if (!(ck( | |
2502 | - | then cp( | |
2503 | - | else if (( | |
2504 | - | then $Tuple2( | |
2505 | - | else $Tuple2( | |
2506 | - | else if (cc( | |
2507 | - | then if (!(cc( | |
2492 | + | let cr = split(iX, "_") | |
2493 | + | let lx = (cr[bm] == "T") | |
2494 | + | let ly = (cr[bm] == "D") | |
2495 | + | let gx = F(A) | |
2496 | + | let lz = valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2497 | + | let lA = fk(lz, hp._5) | |
2498 | + | let lB = lA._1 | |
2499 | + | let lC = lA._2 | |
2500 | + | let lD = if (cm(df, jq)) | |
2501 | + | then if (!(ck(iX))) | |
2502 | + | then cp(jq, iX, 5) | |
2503 | + | else if ((iV > 0)) | |
2504 | + | then $Tuple2(iX, iV) | |
2505 | + | else $Tuple2(jq, 0) | |
2506 | + | else if (cc(df, jq)) | |
2507 | + | then if (!(cc(df, iX))) | |
2508 | 2508 | then throw("Your duck is taking part in the tournament") | |
2509 | 2509 | else { | |
2510 | - | let | |
2511 | - | let | |
2512 | - | let ce = valueOrElse(getInteger( | |
2513 | - | if (( | |
2514 | - | then cp( | |
2515 | - | else if (( | |
2510 | + | let lE = parseIntValue(cr[bn]) | |
2511 | + | let lF = split(jq, "_") | |
2512 | + | let ce = valueOrElse(getInteger(df, bP), 0) | |
2513 | + | if ((lE != (parseIntValue(lF[bn]) + 1))) | |
2514 | + | then cp(jq, iX, 7) | |
2515 | + | else if ((iV > 0)) | |
2516 | 2516 | then { | |
2517 | - | let | |
2518 | - | let | |
2519 | - | then invoke( | |
2517 | + | let lG = valueOrElse(getInteger(df, bT(ce, A)), 0) | |
2518 | + | let lH = if ((lE > lG)) | |
2519 | + | then invoke(df, "saveDuckResult", [A, lE], nil) | |
2520 | 2520 | else unit | |
2521 | - | if (( | |
2522 | - | then $Tuple2( | |
2521 | + | if ((lH == lH)) | |
2522 | + | then $Tuple2(iX, iV) | |
2523 | 2523 | else throw("Strict value is not equal to itself.") | |
2524 | 2524 | } | |
2525 | - | else $Tuple2( | |
2525 | + | else $Tuple2(jq, 0) | |
2526 | 2526 | } | |
2527 | - | else if (!(ch( | |
2527 | + | else if (!(ch(jq))) | |
2528 | 2528 | then { | |
2529 | - | let | |
2530 | - | if (( | |
2531 | - | then if ( | |
2532 | - | then | |
2533 | - | else if (( | |
2534 | - | then $Tuple2( | |
2535 | - | else $Tuple2( | |
2529 | + | let lI = dE(invoke(this, "autoExitDelivery", [A], nil)) | |
2530 | + | if ((lI == lI)) | |
2531 | + | then if (ly) | |
2532 | + | then lI | |
2533 | + | else if ((iV > 0)) | |
2534 | + | then $Tuple2(iX, iV) | |
2535 | + | else $Tuple2(lI._1, 0) | |
2536 | 2536 | else throw("Strict value is not equal to itself.") | |
2537 | 2537 | } | |
2538 | - | else if (!( | |
2538 | + | else if (!(ly)) | |
2539 | 2539 | then throw("Your duck is taking part in delivery") | |
2540 | - | else if (!(ch( | |
2541 | - | then cp( | |
2540 | + | else if (!(ch(iX))) | |
2541 | + | then cp(jq, iX, 13) | |
2542 | 2542 | else { | |
2543 | - | let | |
2544 | - | let | |
2545 | - | if (( | |
2546 | - | then cp( | |
2547 | - | else if (if (( | |
2548 | - | then (3 > | |
2543 | + | let lE = parseIntValue(cr[bn]) | |
2544 | + | let lF = split(jq, "_") | |
2545 | + | if ((lE != (parseIntValue(lF[bn]) + 1))) | |
2546 | + | then cp(jq, iX, 14) | |
2547 | + | else if (if ((iV > 0)) | |
2548 | + | then (3 > lE) | |
2549 | 2549 | else false) | |
2550 | - | then $Tuple2( | |
2550 | + | then $Tuple2(iX, iV) | |
2551 | 2551 | else { | |
2552 | - | let | |
2553 | - | if (( | |
2554 | - | then | |
2552 | + | let lI = dE(invoke(this, "autoExitDelivery", [A], nil)) | |
2553 | + | if ((lI == lI)) | |
2554 | + | then lI | |
2555 | 2555 | else throw("Strict value is not equal to itself.") | |
2556 | 2556 | } | |
2557 | 2557 | } | |
2558 | - | let | |
2559 | - | let | |
2560 | - | $Tuple2(((([StringEntry( | |
2558 | + | let lJ = lD._1 | |
2559 | + | let lK = lD._2 | |
2560 | + | $Tuple2(((([StringEntry(le, lJ), StringEntry(gx, lB), IntegerEntry(z(A), iV)] ++ lk) ++ (if (lC) | |
2561 | 2561 | then [StringEntry(L(A), "0_0_0_0_0")] | |
2562 | - | else nil)) ++ | |
2562 | + | else nil)) ++ jZ(A, if ((iV > 0)) | |
2563 | 2563 | then V | |
2564 | - | else W)._1), | |
2564 | + | else W)._1), hp._3) | |
2565 | 2565 | } | |
2566 | 2566 | } | |
2567 | 2567 | } | |
2568 | 2568 | ||
2569 | 2569 | ||
2570 | 2570 | ||
2571 | - | @Callable(gJ) | |
2572 | - | func heal (lK,lL,lM) = { | |
2573 | - | let lj = lf(gJ) | |
2574 | - | if (if (if ((0 > lK)) | |
2575 | - | then true | |
2576 | - | else (0 > lL)) | |
2571 | + | @Callable(gK) | |
2572 | + | func heal (lL,lM,lN) = { | |
2573 | + | let lk = lg(gK) | |
2574 | + | if (if (if ((0 > lL)) | |
2577 | 2575 | then true | |
2578 | 2576 | else (0 > lM)) | |
2577 | + | then true | |
2578 | + | else (0 > lN)) | |
2579 | 2579 | then throw("Quantity cannot be negative") | |
2580 | 2580 | else { | |
2581 | - | let A = valueOrErrorMessage(getString(bH(toString( | |
2582 | - | if ( | |
2581 | + | let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked") | |
2582 | + | if (kp(A)) | |
2583 | 2583 | then throw("heal_checkTournament") | |
2584 | - | else if ( | |
2584 | + | else if (kq(A)) | |
2585 | 2585 | then throw("heal_checkDelivery") | |
2586 | 2586 | else { | |
2587 | - | let | |
2588 | - | let | |
2589 | - | let | |
2590 | - | let | |
2591 | - | if (( | |
2592 | - | then throw((("HP should be < " + toString( | |
2587 | + | let lO = [lL, lM, lN] | |
2588 | + | let jb = z(A) | |
2589 | + | let jc = ag(valueOrElse(getInteger(D(A)), 0)) | |
2590 | + | let lP = valueOrElse(getInteger(jb), jc) | |
2591 | + | if ((lP >= jc)) | |
2592 | + | then throw((("HP should be < " + toString(jc)) + " to heal")) | |
2593 | 2593 | else { | |
2594 | - | let | |
2595 | - | let | |
2596 | - | let | |
2594 | + | let hL = bI(A) | |
2595 | + | let io = hK(hL) | |
2596 | + | let lQ = if ((io[bk] == "")) | |
2597 | 2597 | then nil | |
2598 | - | else split_4C( | |
2599 | - | func | |
2600 | - | let | |
2601 | - | let | |
2602 | - | then parseIntValue( | |
2598 | + | else split_4C(io[bk], "_") | |
2599 | + | func lR (eR,co) = { | |
2600 | + | let dA = eR._2 | |
2601 | + | let hg = if ((size(lQ) > dA)) | |
2602 | + | then parseIntValue(lQ[dA]) | |
2603 | 2603 | else 0 | |
2604 | - | if ((3 > | |
2604 | + | if ((3 > dA)) | |
2605 | 2605 | then { | |
2606 | - | let | |
2607 | - | if (( | |
2608 | - | then throw(((("You have only " + toString( | |
2609 | - | else $Tuple3(( | |
2606 | + | let lS = lO[dA] | |
2607 | + | if ((lS > hg)) | |
2608 | + | then throw(((("You have only " + toString(hg)) + " of ") + aO[dA])) | |
2609 | + | else $Tuple3((eR._1 :+ toString((hg - lS))), (dA + 1), (eR._3 + (parseIntValue(split(co, "_")[aU]) * lS))) | |
2610 | 2610 | } | |
2611 | - | else $Tuple3(( | |
2611 | + | else $Tuple3((eR._1 :+ toString(hg)), (dA + 1), eR._3) | |
2612 | 2612 | } | |
2613 | 2613 | ||
2614 | - | let | |
2615 | - | let | |
2616 | - | let | |
2617 | - | let | |
2618 | - | func | |
2619 | - | then | |
2620 | - | else | |
2621 | - | ||
2622 | - | func | |
2623 | - | then | |
2614 | + | let fj = { | |
2615 | + | let eT = aS | |
2616 | + | let eU = size(eT) | |
2617 | + | let eV = $Tuple3(nil, 0, 0) | |
2618 | + | func eW (eX,eY) = if ((eY >= eU)) | |
2619 | + | then eX | |
2620 | + | else lR(eX, eT[eY]) | |
2621 | + | ||
2622 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
2623 | + | then eX | |
2624 | 2624 | else throw("List size exceeds 50") | |
2625 | 2625 | ||
2626 | - | | |
2626 | + | eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 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) | |
2627 | 2627 | } | |
2628 | - | let | |
2629 | - | $Tuple2((([IntegerEntry( | |
2628 | + | let lT = min([jc, (lP + fj._3)]) | |
2629 | + | $Tuple2((([IntegerEntry(jb, lT), StringEntry(hL, makeString_2C([io[bh], io[bi], io[bj], makeString(fj._1, "_")], ":"))] ++ lk) ++ jZ(A, (ad * ((lL + lM) + lN)))._1), lT) | |
2630 | 2630 | } | |
2631 | 2631 | } | |
2632 | 2632 | } | |
2633 | 2633 | } | |
2634 | 2634 | ||
2635 | 2635 | ||
2636 | 2636 | ||
2637 | - | @Callable( | |
2637 | + | @Callable(gK) | |
2638 | 2638 | func healES () = { | |
2639 | - | let | |
2640 | - | if ((size( | |
2639 | + | let lk = lg(gK) | |
2640 | + | if ((size(gK.payments) != 1)) | |
2641 | 2641 | then throw("Exactly one payment required") | |
2642 | 2642 | else { | |
2643 | - | let | |
2644 | - | if (( | |
2643 | + | let ll = value(gK.payments[0]) | |
2644 | + | if ((ll.assetId != cx)) | |
2645 | 2645 | then throw("Allowed USDT payment only!") | |
2646 | 2646 | else { | |
2647 | - | let A = valueOrErrorMessage(getString(bH(toString( | |
2648 | - | if ( | |
2647 | + | let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked") | |
2648 | + | if (kp(A)) | |
2649 | 2649 | then throw("healES_checkTournament") | |
2650 | - | else if ( | |
2650 | + | else if (kq(A)) | |
2651 | 2651 | then throw("healES_checkDelivery") | |
2652 | 2652 | else { | |
2653 | - | let | |
2654 | - | let | |
2655 | - | let | |
2656 | - | if (( | |
2653 | + | let jb = z(A) | |
2654 | + | let jc = ag(valueOrElse(getInteger(D(A)), 0)) | |
2655 | + | let lP = valueOrElse(getInteger(jb), jc) | |
2656 | + | if ((lP > 0)) | |
2657 | 2657 | then throw("HP should be 0 to call Emergency Service") | |
2658 | 2658 | else { | |
2659 | - | let | |
2660 | - | let | |
2661 | - | let | |
2659 | + | let hL = bI(A) | |
2660 | + | let io = hK(hL) | |
2661 | + | let lQ = if ((io[bk] == "")) | |
2662 | 2662 | then nil | |
2663 | - | else split_4C( | |
2664 | - | let | |
2665 | - | then parseIntValue( | |
2663 | + | else split_4C(io[bk], "_") | |
2664 | + | let lU = if ((size(lQ) > 0)) | |
2665 | + | then parseIntValue(lQ[0]) | |
2666 | 2666 | else 0 | |
2667 | - | let | |
2668 | - | then parseIntValue( | |
2667 | + | let lV = if ((size(lQ) > 1)) | |
2668 | + | then parseIntValue(lQ[1]) | |
2669 | 2669 | else 0 | |
2670 | - | let | |
2671 | - | then parseIntValue( | |
2670 | + | let lW = if ((size(lQ) > 2)) | |
2671 | + | then parseIntValue(lQ[2]) | |
2672 | 2672 | else 0 | |
2673 | - | if (if (if ((lT > 0)) | |
2674 | - | then true | |
2675 | - | else (lU > 0)) | |
2673 | + | if (if (if ((lU > 0)) | |
2676 | 2674 | then true | |
2677 | 2675 | else (lV > 0)) | |
2676 | + | then true | |
2677 | + | else (lW > 0)) | |
2678 | 2678 | then throw("You have to use own Medical Kit") | |
2679 | 2679 | else { | |
2680 | - | let | |
2681 | - | let | |
2682 | - | then split_4C(value( | |
2680 | + | let lX = getString(dc, bM()) | |
2681 | + | let lY = if (isDefined(lX)) | |
2682 | + | then split_4C(value(lX), "_") | |
2683 | 2683 | else nil | |
2684 | - | let | |
2685 | - | then parseIntValue( | |
2684 | + | let lZ = if ((size(lY) > 0)) | |
2685 | + | then parseIntValue(lY[0]) | |
2686 | 2686 | else 0 | |
2687 | - | if ((0 >= | |
2687 | + | if ((0 >= lZ)) | |
2688 | 2688 | then throw("There are no Medical Kits L1 at Emergency Service storage") | |
2689 | 2689 | else { | |
2690 | - | let | |
2691 | - | let | |
2690 | + | let lT = (lP + parseIntValue(split(aS[0], "_")[aU])) | |
2691 | + | let ma = makeString([toString((lZ - 1)), removeByIndex(lY, 0)], "_") | |
2692 | 2692 | let co = split(aS[0], "_") | |
2693 | - | let | |
2694 | - | let | |
2695 | - | if (( | |
2696 | - | then throw(("Payment attached should be " + toString( | |
2693 | + | let mb = cn(co) | |
2694 | + | let mc = fraction((mb * aL), aK, (cE * aX)) | |
2695 | + | if ((ll.amount != mc)) | |
2696 | + | then throw(("Payment attached should be " + toString(mc))) | |
2697 | 2697 | else { | |
2698 | - | let | |
2699 | - | $Tuple2((( | |
2698 | + | let fj = dw(invoke(dc, "updateEsStorage", [ma], [AttachedPayment(cx, mc)])) | |
2699 | + | $Tuple2(((lk :+ IntegerEntry(jb, lT)) ++ jZ(A, X)._1), fj) | |
2700 | 2700 | } | |
2701 | 2701 | } | |
2702 | 2702 | } | |
2703 | 2703 | } | |
2704 | 2704 | } | |
2705 | 2705 | } | |
2706 | 2706 | } | |
2707 | 2707 | } | |
2708 | 2708 | ||
2709 | 2709 | ||
2710 | 2710 | ||
2711 | - | @Callable( | |
2712 | - | func updateBackpack (A, | |
2711 | + | @Callable(gK) | |
2712 | + | func updateBackpack (A,md) = if ((gK.caller != dc)) | |
2713 | 2713 | then throw("permission denied") | |
2714 | - | else $Tuple2([StringEntry(bI(A), | |
2715 | - | ||
2716 | - | ||
2717 | - | ||
2718 | - | @Callable( | |
2714 | + | else $Tuple2([StringEntry(bI(A), md)], md) | |
2715 | + | ||
2716 | + | ||
2717 | + | ||
2718 | + | @Callable(gK) | |
2719 | 2719 | func commitForRandom () = { | |
2720 | - | let | |
2721 | - | let | |
2722 | - | let c = toString( | |
2723 | - | $Tuple2(([IntegerEntry( | |
2724 | - | } | |
2725 | - | ||
2726 | - | ||
2727 | - | ||
2728 | - | @Callable( | |
2720 | + | let lk = lg(gK) | |
2721 | + | let me = (height + dp) | |
2722 | + | let c = toString(gK.caller) | |
2723 | + | $Tuple2(([IntegerEntry(dq(c), me)] ++ lk), me) | |
2724 | + | } | |
2725 | + | ||
2726 | + | ||
2727 | + | ||
2728 | + | @Callable(gK) | |
2729 | 2729 | func buySLand () = { | |
2730 | - | let | |
2731 | - | if ((size( | |
2730 | + | let lk = lg(gK) | |
2731 | + | if ((size(gK.payments) != 1)) | |
2732 | 2732 | then throw("Exactly one payment required") | |
2733 | 2733 | else { | |
2734 | - | let | |
2735 | - | if (( | |
2734 | + | let ll = value(gK.payments[0]) | |
2735 | + | if ((ll.assetId != cx)) | |
2736 | 2736 | then throw("Allowed USDT payment only!") | |
2737 | - | else if (( | |
2738 | - | then throw(("Payment attached should be " + toString( | |
2737 | + | else if ((ll.amount != eg)) | |
2738 | + | then throw(("Payment attached should be " + toString(eg))) | |
2739 | 2739 | else { | |
2740 | - | let | |
2741 | - | let | |
2742 | - | $Tuple2(((( | |
2740 | + | let fj = iI(gK.caller, gK.transactionId) | |
2741 | + | let mf = dz(invoke(dg, "burnAcres", [eh], nil)) | |
2742 | + | $Tuple2((((fj._1 :+ ScriptTransfer(dc, ll.amount, cx)) ++ kf(toString(gK.caller), Z)._1) ++ lk), $Tuple2(fj._2._1, mf)) | |
2743 | 2743 | } | |
2744 | 2744 | } | |
2745 | 2745 | } | |
2746 | 2746 | ||
2747 | 2747 | ||
2748 | 2748 | ||
2749 | - | @Callable( | |
2750 | - | func expedition ( | |
2751 | - | let | |
2752 | - | if ((size( | |
2749 | + | @Callable(gK) | |
2750 | + | func expedition (iQ,iR) = { | |
2751 | + | let lk = lg(gK) | |
2752 | + | if ((size(gK.payments) != 0)) | |
2753 | 2753 | then throw("No payments required") | |
2754 | 2754 | else { | |
2755 | - | let bL = toString( | |
2756 | - | let | |
2757 | - | let A = | |
2758 | - | let | |
2759 | - | let | |
2760 | - | let | |
2761 | - | let | |
2762 | - | let | |
2763 | - | let | |
2764 | - | let | |
2765 | - | let | |
2766 | - | let | |
2767 | - | let | |
2768 | - | let | |
2769 | - | let | |
2770 | - | let | |
2771 | - | then $Tuple3([IntegerEntry( | |
2772 | - | else $Tuple3(( | |
2755 | + | let bL = toString(gK.caller) | |
2756 | + | let hp = iP(bL, iQ, iR) | |
2757 | + | let A = hp._2 | |
2758 | + | let jb = z(A) | |
2759 | + | let hL = bI(A) | |
2760 | + | let io = hK(hL) | |
2761 | + | let jQ = split(io[bj], "_") | |
2762 | + | let jS = makeString(fd(true, jQ, ef), "_") | |
2763 | + | let gx = F(A) | |
2764 | + | let lz = valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2765 | + | let mg = fk(lz, hp._5) | |
2766 | + | let lB = mg._1 | |
2767 | + | let lC = mg._2 | |
2768 | + | let mh = iI(gK.caller, gK.transactionId) | |
2769 | + | let iO = mh._2._1 | |
2770 | + | let fj = if ((0 >= hp._1)) | |
2771 | + | then $Tuple3([IntegerEntry(jb, 0), StringEntry(gx, lB)], "", 0) | |
2772 | + | else $Tuple3((mh._1 ++ (if (lC) | |
2773 | 2773 | then [StringEntry(L(A), "0_0_0_0_0")] | |
2774 | - | else ((((nil :+ StringEntry(bJ(A), makeString([ | |
2775 | - | if ( | |
2774 | + | else ((((nil :+ StringEntry(bJ(A), makeString([mh._2._2, "L", iO], "_"))) :+ IntegerEntry(jb, hp._1)) :+ StringEntry(gx, lB)) :+ StringEntry(hL, makeString([io[bh], io[bi], jS, io[bk]], ":"))))), iO, hp._3) | |
2775 | + | if (kp(A)) | |
2776 | 2776 | then throw("expedition_checkTournament") | |
2777 | - | else if ( | |
2777 | + | else if (kq(A)) | |
2778 | 2778 | then throw("expedition_checkDelivery") | |
2779 | 2779 | else { | |
2780 | - | let | |
2781 | - | $Tuple2((( | |
2780 | + | let mf = dz(invoke(dg, "burnAcres", [eh], nil)) | |
2781 | + | $Tuple2(((fj._1 ++ jZ(A, Z)._1) ++ lk), $Tuple3(fj._2, fj._3, mf)) | |
2782 | 2782 | } | |
2783 | 2783 | } | |
2784 | 2784 | } | |
2785 | 2785 | ||
2786 | 2786 | ||
2787 | 2787 | ||
2788 | - | @Callable( | |
2788 | + | @Callable(gK) | |
2789 | 2789 | func buySLandForAcres () = { | |
2790 | - | let | |
2791 | - | if ((size( | |
2790 | + | let lk = lg(gK) | |
2791 | + | if ((size(gK.payments) != 1)) | |
2792 | 2792 | then throw("exactly 1 payment must be attached") | |
2793 | 2793 | else { | |
2794 | - | let | |
2795 | - | let | |
2796 | - | if (if (!(isDefined( | |
2794 | + | let ll = gK.payments[0] | |
2795 | + | let fq = ll.amount | |
2796 | + | if (if (!(isDefined(ll.assetId))) | |
2797 | 2797 | then true | |
2798 | - | else (value( | |
2798 | + | else (value(ll.assetId) != do)) | |
2799 | 2799 | then throw("ACRES payments only!") | |
2800 | - | else if (( | |
2801 | - | then throw(("Payment attached should be " + toString( | |
2800 | + | else if ((fq != eh)) | |
2801 | + | then throw(("Payment attached should be " + toString(eh))) | |
2802 | 2802 | else { | |
2803 | - | let | |
2804 | - | let | |
2805 | - | $Tuple2((( | |
2803 | + | let fj = iI(gK.caller, gK.transactionId) | |
2804 | + | let mf = dz(invoke(dg, "burnAcres", [eh], [AttachedPayment(do, fq)])) | |
2805 | + | $Tuple2(((fj._1 ++ kf(toString(gK.caller), Z)._1) ++ lk), $Tuple2(fj._2._1, mf)) | |
2806 | 2806 | } | |
2807 | 2807 | } | |
2808 | 2808 | } | |
2809 | 2809 | ||
2810 | 2810 | ||
2811 | 2811 | ||
2812 | - | @Callable( | |
2812 | + | @Callable(gK) | |
2813 | 2813 | func upgradeInfra (P) = { | |
2814 | - | let | |
2815 | - | if ((size( | |
2814 | + | let lk = lg(gK) | |
2815 | + | if ((size(gK.payments) != 0)) | |
2816 | 2816 | then throw("No payments required") | |
2817 | 2817 | else { | |
2818 | - | let | |
2819 | - | let A = valueOrErrorMessage(getString(bH(toString( | |
2820 | - | $Tuple2((( | |
2821 | - | } | |
2822 | - | } | |
2823 | - | ||
2824 | - | ||
2825 | - | ||
2826 | - | @Callable( | |
2827 | - | func activateArtifact ( | |
2828 | - | let | |
2829 | - | if ((size( | |
2818 | + | let fj = jK(true, gK.caller, 0, P) | |
2819 | + | let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked") | |
2820 | + | $Tuple2(((fj._1 ++ lk) ++ jZ(A, fraction(aa, fj._3, cE))._1), fj._2) | |
2821 | + | } | |
2822 | + | } | |
2823 | + | ||
2824 | + | ||
2825 | + | ||
2826 | + | @Callable(gK) | |
2827 | + | func activateArtifact (mi,mj) = { | |
2828 | + | let lk = lg(gK) | |
2829 | + | if ((size(gK.payments) != 0)) | |
2830 | 2830 | then throw("No payments required") | |
2831 | 2831 | else { | |
2832 | - | let c = toString( | |
2833 | - | let | |
2834 | - | let | |
2835 | - | if (("PRESALE" == | |
2836 | - | then | |
2837 | - | else if (("ONBOARD" == | |
2838 | - | then | |
2832 | + | let c = toString(gK.caller) | |
2833 | + | let fj = { | |
2834 | + | let cy = mi | |
2835 | + | if (("PRESALE" == cy)) | |
2836 | + | then kn(c, mj) | |
2837 | + | else if (("ONBOARD" == cy)) | |
2838 | + | then kg(c) | |
2839 | 2839 | else throw("Unknown artifact") | |
2840 | 2840 | } | |
2841 | - | ( | |
2842 | - | } | |
2843 | - | } | |
2844 | - | ||
2845 | - | ||
2846 | - | ||
2847 | - | @Callable( | |
2848 | - | func mergeLands ( | |
2849 | - | let | |
2850 | - | if ((size( | |
2841 | + | (fj ++ lk) | |
2842 | + | } | |
2843 | + | } | |
2844 | + | ||
2845 | + | ||
2846 | + | ||
2847 | + | @Callable(gK) | |
2848 | + | func mergeLands (kD) = { | |
2849 | + | let lk = lg(gK) | |
2850 | + | if ((size(gK.payments) != 0)) | |
2851 | 2851 | then throw("No payments required") | |
2852 | 2852 | else { | |
2853 | - | let | |
2854 | - | $Tuple2((( | |
2855 | - | } | |
2856 | - | } | |
2857 | - | ||
2858 | - | ||
2859 | - | ||
2860 | - | @Callable( | |
2861 | - | func cargoExchange ( | |
2862 | - | let | |
2863 | - | if ((size( | |
2853 | + | let fj = lb(toString(gK.caller), kD) | |
2854 | + | $Tuple2(((fj._1 ++ lk) ++ kf(toString(gK.caller), ab)._1), fj._2) | |
2855 | + | } | |
2856 | + | } | |
2857 | + | ||
2858 | + | ||
2859 | + | ||
2860 | + | @Callable(gK) | |
2861 | + | func cargoExchange (mk,P) = { | |
2862 | + | let lk = lg(gK) | |
2863 | + | if ((size(gK.payments) != 0)) | |
2864 | 2864 | then throw("No payments required") | |
2865 | 2865 | else { | |
2866 | - | let | |
2867 | - | let c = toString( | |
2868 | - | let | |
2869 | - | let | |
2870 | - | if (!(isDefined(getInteger( | |
2871 | - | then throw(( | |
2866 | + | let in = split_4C(mk, ":") | |
2867 | + | let c = toString(gK.originCaller) | |
2868 | + | let js = value(assetInfo(fromBase58String(P))) | |
2869 | + | let jt = br(P) | |
2870 | + | if (!(isDefined(getInteger(jt)))) | |
2871 | + | then throw((js.name + " is not staked")) | |
2872 | 2872 | else { | |
2873 | - | let | |
2874 | - | if (( | |
2873 | + | let jv = valueOrErrorMessage(getString(bo(P)), (("NFT " + js.name) + " is orphaned")) | |
2874 | + | if ((jv != c)) | |
2875 | 2875 | then throw((aC + " is not yours")) | |
2876 | 2876 | else { | |
2877 | - | let | |
2878 | - | let | |
2877 | + | let hZ = (dH(split(js.description, "_")[di]) / cF) | |
2878 | + | let ia = valueOrElse(getInteger(by(P)), 0) | |
2879 | 2879 | let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked") | |
2880 | - | let | |
2881 | - | let cf = split(value( | |
2880 | + | let jq = valueOrElse(getString(bJ(A)), aJ) | |
2881 | + | let cf = split(value(jq), "_") | |
2882 | 2882 | if ((cf[bm] != "L")) | |
2883 | 2883 | then throw((("Duck location type is " + cf[bm]) + ", but should be L")) | |
2884 | 2884 | else if ((cf[bn] != P)) | |
2885 | 2885 | then throw(("Duck should be on the land " + P)) | |
2886 | 2886 | else { | |
2887 | - | let | |
2888 | - | let | |
2889 | - | let | |
2890 | - | let | |
2891 | - | let | |
2892 | - | let | |
2893 | - | let | |
2894 | - | let | |
2895 | - | ([StringEntry( | |
2887 | + | let hY = bx(P) | |
2888 | + | let hP = hX(hY, hZ, ia) | |
2889 | + | let hL = bI(A) | |
2890 | + | let io = hK(hL) | |
2891 | + | let fj = im(in, hP, io) | |
2892 | + | let ig = split(hP[bc], "_") | |
2893 | + | let jH = (parseIntValue(ig[be]) + fj._7) | |
2894 | + | let jI = (parseIntValue(ig[bf]) - fj._7) | |
2895 | + | ([StringEntry(hL, makeString_2C([io[bh], fj._4, fj._5, fj._6], ":")), StringEntry(hY, makeString_2C([hP[aY], fj._1, fj._2, fj._3, makeString([ig[bd], toString(jH), toString(jI), ig[bg]], "_")], ":"))] ++ lk) | |
2896 | 2896 | } | |
2897 | 2897 | } | |
2898 | 2898 | } | |
2899 | 2899 | } | |
2900 | 2900 | } | |
2901 | 2901 | ||
2902 | 2902 | ||
2903 | 2903 | ||
2904 | - | @Callable( | |
2905 | - | func saveWarehouse ( | |
2904 | + | @Callable(gK) | |
2905 | + | func saveWarehouse (ic,P) = if ((gK.caller != dc)) | |
2906 | 2906 | then throw("Access denied") | |
2907 | 2907 | else { | |
2908 | - | let | |
2909 | - | let | |
2910 | - | if ((size( | |
2908 | + | let hY = bx(P) | |
2909 | + | let id = split_4C(ic, ":") | |
2910 | + | if ((size(id) != 5)) | |
2911 | 2911 | then throw("warehouse string should contain 4 ':' separators") | |
2912 | 2912 | else { | |
2913 | - | let | |
2914 | - | let | |
2915 | - | let | |
2916 | - | let | |
2917 | - | let | |
2918 | - | $Tuple2([StringEntry( | |
2913 | + | let ml = split(id[bc], "_")[bd] | |
2914 | + | let jH = hO(id) | |
2915 | + | let mm = hM(id[aY]) | |
2916 | + | let jI = ((mm - parseIntValue(ml)) - jH) | |
2917 | + | let mn = makeString_2C([id[aY], id[aZ], id[ba], id[bb], makeString([ml, toString(jH), toString(jI), toString(mm)], "_")], ":") | |
2918 | + | $Tuple2([StringEntry(hY, mn)], mn) | |
2919 | 2919 | } | |
2920 | 2920 | } | |
2921 | 2921 | ||
2922 | 2922 | ||
2923 | 2923 | ||
2924 | - | @Callable( | |
2925 | - | func fixWarehouseFormat (P) = if (( | |
2924 | + | @Callable(gK) | |
2925 | + | func fixWarehouseFormat (P) = if ((gK.caller != db)) | |
2926 | 2926 | then throw("Access denied") | |
2927 | 2927 | else { | |
2928 | - | let | |
2929 | - | let | |
2930 | - | let | |
2931 | - | let | |
2932 | - | let | |
2933 | - | let | |
2934 | - | let | |
2935 | - | let | |
2936 | - | let | |
2937 | - | let | |
2938 | - | $Tuple2([StringEntry( | |
2928 | + | let hY = bx(P) | |
2929 | + | let js = value(assetInfo(fromBase58String(P))) | |
2930 | + | let hZ = (dH(split(js.description, "_")[di]) / cF) | |
2931 | + | let ia = valueOrElse(getInteger(by(P)), 0) | |
2932 | + | let id = hX(hY, hZ, ia) | |
2933 | + | let ml = dz(invoke(dc, "recalcLockedVolumeREADONLY", [P, id], nil)) | |
2934 | + | let jH = hO(id) | |
2935 | + | let mm = hM(id[aY]) | |
2936 | + | let jI = ((mm - ml) - jH) | |
2937 | + | let mn = makeString_2C([id[aY], id[aZ], id[ba], id[bb], makeString([toString(ml), toString(jH), toString(jI), toString(mm)], "_")], ":") | |
2938 | + | $Tuple2([StringEntry(hY, mn)], mn) | |
2939 | 2939 | } | |
2940 | 2940 | ||
2941 | 2941 | ||
2942 | 2942 | ||
2943 | - | @Callable( | |
2944 | - | func fixContinentProportions ( | |
2943 | + | @Callable(gK) | |
2944 | + | func fixContinentProportions (kD) = if ((gK.caller != db)) | |
2945 | 2945 | then throw("Access denied") | |
2946 | 2946 | else { | |
2947 | - | func | |
2948 | - | ||
2949 | - | let | |
2950 | - | let | |
2951 | - | let | |
2952 | - | let | |
2953 | - | func | |
2954 | - | then | |
2955 | - | else | |
2956 | - | ||
2957 | - | func | |
2958 | - | then | |
2947 | + | func mo (eR,mp) = (eR :+ valueOrElse(getString(ds(mp)), "0_0_0_0_0_0")) | |
2948 | + | ||
2949 | + | let gu = { | |
2950 | + | let eT = aP | |
2951 | + | let eU = size(eT) | |
2952 | + | let eV = nil | |
2953 | + | func eW (eX,eY) = if ((eY >= eU)) | |
2954 | + | then eX | |
2955 | + | else mo(eX, eT[eY]) | |
2956 | + | ||
2957 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
2958 | + | then eX | |
2959 | 2959 | else throw("List size exceeds 5") | |
2960 | 2960 | ||
2961 | - | | |
2962 | - | } | |
2963 | - | func | |
2964 | - | let | |
2965 | - | let | |
2966 | - | let | |
2967 | - | let | |
2968 | - | let | |
2969 | - | let | |
2970 | - | let | |
2971 | - | let | |
2972 | - | let | |
2973 | - | if (("Americas" == | |
2974 | - | then [ | |
2975 | - | else if (("Europe" == | |
2976 | - | then [ | |
2977 | - | else if (("Asia" == | |
2978 | - | then [ | |
2979 | - | else if (("Africa" == | |
2980 | - | then [ | |
2981 | - | else if (("Oceania" == | |
2982 | - | then [ | |
2961 | + | eZ(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5) | |
2962 | + | } | |
2963 | + | func mq (eR,P) = { | |
2964 | + | let js = value(assetInfo(fromBase58String(P))) | |
2965 | + | let jw = split(js.description, "_") | |
2966 | + | let hZ = (dH(jw[di]) / cF) | |
2967 | + | let mp = jw[dk] | |
2968 | + | let gG = gM(jw[dj]) | |
2969 | + | let ho = value(indexOf(aP, mp)) | |
2970 | + | let kS = split(eR[ho], "_") | |
2971 | + | let mr = makeString(gE(kS, gG, hZ, 1), "_") | |
2972 | + | let cy = mp | |
2973 | + | if (("Americas" == cy)) | |
2974 | + | then [mr, eR[1], eR[2], eR[3], eR[4]] | |
2975 | + | else if (("Europe" == cy)) | |
2976 | + | then [eR[0], mr, eR[2], eR[3], eR[4]] | |
2977 | + | else if (("Asia" == cy)) | |
2978 | + | then [eR[0], eR[1], mr, eR[3], eR[4]] | |
2979 | + | else if (("Africa" == cy)) | |
2980 | + | then [eR[0], eR[1], eR[2], mr, eR[4]] | |
2981 | + | else if (("Oceania" == cy)) | |
2982 | + | then [eR[0], eR[1], eR[2], eR[3], mr] | |
2983 | 2983 | else throw("wrong continent") | |
2984 | 2984 | } | |
2985 | 2985 | ||
2986 | - | let | |
2987 | - | let | |
2988 | - | let | |
2989 | - | let | |
2990 | - | func | |
2991 | - | then | |
2992 | - | else | |
2993 | - | ||
2994 | - | func | |
2995 | - | then | |
2986 | + | let fc = { | |
2987 | + | let eT = kD | |
2988 | + | let eU = size(eT) | |
2989 | + | let eV = gu | |
2990 | + | func hF (eX,eY) = if ((eY >= eU)) | |
2991 | + | then eX | |
2992 | + | else mq(eX, eT[eY]) | |
2993 | + | ||
2994 | + | func hG (eX,eY) = if ((eY >= eU)) | |
2995 | + | then eX | |
2996 | 2996 | else throw("List size exceeds 100") | |
2997 | 2997 | ||
2998 | - | hF( | |
2999 | - | } | |
3000 | - | $Tuple2([StringEntry( | |
2998 | + | hG(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(hF(eV, 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), 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) | |
2999 | + | } | |
3000 | + | $Tuple2([StringEntry(ds("Americas"), fc[0]), StringEntry(ds("Europe"), fc[1]), StringEntry(ds("Asia"), fc[2]), StringEntry(ds("Africa"), fc[3]), StringEntry(ds("Oceania"), fc[4])], 0) | |
3001 | 3001 | } | |
3002 | 3002 | ||
3003 | 3003 | ||
3004 | 3004 | ||
3005 | - | @Callable( | |
3006 | - | func fixStakedPieces ( | |
3005 | + | @Callable(gK) | |
3006 | + | func fixStakedPieces (cM) = if ((gK.caller != db)) | |
3007 | 3007 | then throw("Access denied") | |
3008 | 3008 | else { | |
3009 | - | let | |
3009 | + | let kW = if ((cM == "")) | |
3010 | 3010 | then 0 | |
3011 | 3011 | else { | |
3012 | - | let | |
3013 | - | let | |
3014 | - | then split_51C(value( | |
3012 | + | let kP = getString(an, du(cM)) | |
3013 | + | let kL = if (isDefined(kP)) | |
3014 | + | then split_51C(value(kP), "_") | |
3015 | 3015 | else nil | |
3016 | - | func | |
3017 | - | let | |
3018 | - | let | |
3019 | - | ( | |
3016 | + | func ms (eR,P) = { | |
3017 | + | let js = value(assetInfo(fromBase58String(P))) | |
3018 | + | let dI = split(js.description, "_")[di] | |
3019 | + | (eR + dH(dI)) | |
3020 | 3020 | } | |
3021 | 3021 | ||
3022 | - | let | |
3023 | - | let | |
3024 | - | let | |
3025 | - | func | |
3026 | - | then | |
3027 | - | else | |
3028 | - | ||
3029 | - | func | |
3030 | - | then | |
3022 | + | let eT = kL | |
3023 | + | let eU = size(eT) | |
3024 | + | let eV = 0 | |
3025 | + | func eW (eX,eY) = if ((eY >= eU)) | |
3026 | + | then eX | |
3027 | + | else ms(eX, eT[eY]) | |
3028 | + | ||
3029 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
3030 | + | then eX | |
3031 | 3031 | else throw("List size exceeds 100") | |
3032 | 3032 | ||
3033 | - | | |
3033 | + | eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 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), 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) | |
3034 | 3034 | } | |
3035 | - | $Tuple2([IntegerEntry( | |
3035 | + | $Tuple2([IntegerEntry(dv(cM), kW)], kW) | |
3036 | 3036 | } | |
3037 | 3037 | ||
3038 | 3038 | ||
3039 | 3039 | ||
3040 | - | @Callable( | |
3041 | - | func setCustomName (bp, | |
3042 | - | let | |
3043 | - | if ((size( | |
3040 | + | @Callable(gK) | |
3041 | + | func setCustomName (bp,kN,bt) = { | |
3042 | + | let lk = lg(gK) | |
3043 | + | if ((size(gK.payments) != 1)) | |
3044 | 3044 | then throw("Exactly one payment required") | |
3045 | 3045 | else { | |
3046 | - | let | |
3047 | - | if (( | |
3046 | + | let ll = value(gK.payments[0]) | |
3047 | + | if ((ll.assetId != cx)) | |
3048 | 3048 | then throw("Allowed USDT payment only!") | |
3049 | - | else if (( | |
3050 | - | then throw(("Payment should be " + toString( | |
3051 | - | else if (contains( | |
3052 | - | then throw(("Name should not contain '__': " + | |
3053 | - | else if ((size( | |
3054 | - | then throw(("Name too long, maxLength=" + toString( | |
3049 | + | else if ((ll.amount != ec)) | |
3050 | + | then throw(("Payment should be " + toString(ec))) | |
3051 | + | else if (contains(kN, "__")) | |
3052 | + | then throw(("Name should not contain '__': " + kN)) | |
3053 | + | else if ((size(kN) > ed)) | |
3054 | + | then throw(("Name too long, maxLength=" + toString(ed))) | |
3055 | 3055 | else { | |
3056 | - | let c = toString( | |
3057 | - | let | |
3058 | - | let | |
3059 | - | if (("ACCOUNT" == | |
3056 | + | let c = toString(gK.originCaller) | |
3057 | + | let mt = { | |
3058 | + | let cy = bt | |
3059 | + | if (("ACCOUNT" == cy)) | |
3060 | 3060 | then { | |
3061 | - | let | |
3062 | - | let | |
3063 | - | if (isDefined( | |
3064 | - | then throw(("Name already registered: " + | |
3061 | + | let mu = ex(kN) | |
3062 | + | let mv = getString(mu) | |
3063 | + | if (isDefined(mv)) | |
3064 | + | then throw(("Name already registered: " + kN)) | |
3065 | 3065 | else { | |
3066 | - | let | |
3067 | - | let | |
3068 | - | let | |
3069 | - | then [DeleteEntry( | |
3066 | + | let mw = bB(c) | |
3067 | + | let mx = getString(mw) | |
3068 | + | let my = if (isDefined(mx)) | |
3069 | + | then [DeleteEntry(ex(value(mx)))] | |
3070 | 3070 | else nil | |
3071 | - | ((( | |
3071 | + | (((my :+ StringEntry(mw, kN)) :+ StringEntry(mu, c)) ++ kf(c, Y)._1) | |
3072 | 3072 | } | |
3073 | 3073 | } | |
3074 | - | else if (("LAND" == | |
3074 | + | else if (("LAND" == cy)) | |
3075 | 3075 | then { | |
3076 | - | let | |
3077 | - | let | |
3078 | - | if (!(isDefined(getInteger( | |
3079 | - | then throw(( | |
3076 | + | let js = value(assetInfo(fromBase58String(bp))) | |
3077 | + | let jt = br(bp) | |
3078 | + | if (!(isDefined(getInteger(jt)))) | |
3079 | + | then throw((js.name + " is not staked")) | |
3080 | 3080 | else { | |
3081 | - | let | |
3082 | - | if (( | |
3081 | + | let jv = valueOrErrorMessage(getString(bo(bp)), (("NFT " + js.name) + " is orphaned")) | |
3082 | + | if ((jv != c)) | |
3083 | 3083 | then throw((aC + " is not yours")) | |
3084 | 3084 | else { | |
3085 | - | let | |
3086 | - | let | |
3087 | - | if (isDefined( | |
3088 | - | then throw(("Name already registered: " + | |
3085 | + | let mu = eq(kN) | |
3086 | + | let mv = getString(mu) | |
3087 | + | if (isDefined(mv)) | |
3088 | + | then throw(("Name already registered: " + kN)) | |
3089 | 3089 | else { | |
3090 | - | let | |
3091 | - | let | |
3092 | - | let | |
3093 | - | then [DeleteEntry( | |
3090 | + | let mz = bq(bp) | |
3091 | + | let mx = getString(mz) | |
3092 | + | let my = if (isDefined(mx)) | |
3093 | + | then [DeleteEntry(eq(value(mx)))] | |
3094 | 3094 | else nil | |
3095 | - | ((( | |
3095 | + | (((my :+ StringEntry(mz, kN)) :+ StringEntry(mu, bp)) ++ kf(c, Y)._1) | |
3096 | 3096 | } | |
3097 | 3097 | } | |
3098 | 3098 | } | |
3099 | 3099 | } | |
3100 | - | else if (("DUCK" == | |
3100 | + | else if (("DUCK" == cy)) | |
3101 | 3101 | then { | |
3102 | - | let | |
3103 | - | let | |
3104 | - | if (if (!(isDefined(getInteger( | |
3102 | + | let js = value(assetInfo(fromBase58String(bp))) | |
3103 | + | let jt = br(bp) | |
3104 | + | if (if (!(isDefined(getInteger(jt)))) | |
3105 | 3105 | then true | |
3106 | 3106 | else !(isDefined(getString(bH(c))))) | |
3107 | - | then throw(( | |
3107 | + | then throw((js.name + " is not staked")) | |
3108 | 3108 | else { | |
3109 | - | let | |
3110 | - | if (( | |
3109 | + | let jv = valueOrErrorMessage(getString(bG(bp)), (("NFT " + js.name) + " is orphaned")) | |
3110 | + | if ((jv != c)) | |
3111 | 3111 | then throw((aD + " is not yours")) | |
3112 | 3112 | else { | |
3113 | - | let | |
3114 | - | let | |
3115 | - | if (isDefined( | |
3116 | - | then throw(("Name already registered: " + | |
3113 | + | let mu = ew(kN) | |
3114 | + | let mv = getString(mu) | |
3115 | + | if (isDefined(mv)) | |
3116 | + | then throw(("Name already registered: " + kN)) | |
3117 | 3117 | else { | |
3118 | - | let | |
3119 | - | let | |
3120 | - | let | |
3121 | - | then [DeleteEntry( | |
3118 | + | let mz = bA(bp) | |
3119 | + | let mx = getString(mz) | |
3120 | + | let my = if (isDefined(mx)) | |
3121 | + | then [DeleteEntry(ew(value(mx)))] | |
3122 | 3122 | else nil | |
3123 | - | ((( | |
3123 | + | (((my :+ StringEntry(mz, kN)) :+ StringEntry(mu, bp)) ++ jZ(bp, Y)._1) | |
3124 | 3124 | } | |
3125 | 3125 | } | |
3126 | 3126 | } | |
3127 | 3127 | } | |
3128 | 3128 | else throw("Unknown entity type") | |
3129 | 3129 | } | |
3130 | - | $Tuple2((( | |
3130 | + | $Tuple2(((mt :+ ScriptTransfer(dc, ll.amount, cx)) ++ lk), 0) | |
3131 | 3131 | } | |
3132 | 3132 | } | |
3133 | 3133 | } | |
3134 | 3134 | ||
3135 | 3135 | ||
3136 | 3136 | ||
3137 | - | @Callable( | |
3138 | - | func setReferrals ( | |
3137 | + | @Callable(gK) | |
3138 | + | func setReferrals (mA,mB) = if ((gK.callerPublicKey != dZ)) | |
3139 | 3139 | then throw("Permission denied") | |
3140 | 3140 | else { | |
3141 | - | let | |
3142 | - | if ((size( | |
3141 | + | let lk = lg(gK) | |
3142 | + | if ((size(gK.payments) != 0)) | |
3143 | 3143 | then throw("No payments required") | |
3144 | - | else if (!(isDefined(addressFromString( | |
3145 | - | then throw(("Invalid address: " + | |
3146 | - | else if (!(isDefined(addressFromString( | |
3147 | - | then throw(("Invalid address: " + | |
3144 | + | else if (!(isDefined(addressFromString(mA)))) | |
3145 | + | then throw(("Invalid address: " + mA)) | |
3146 | + | else if (!(isDefined(addressFromString(mB)))) | |
3147 | + | then throw(("Invalid address: " + mB)) | |
3148 | 3148 | else { | |
3149 | - | let | |
3150 | - | let | |
3151 | - | let | |
3152 | - | then split_4C(value( | |
3149 | + | let mC = ey() | |
3150 | + | let mD = getString(mC) | |
3151 | + | let mE = if (isDefined(mD)) | |
3152 | + | then split_4C(value(mD), "_") | |
3153 | 3153 | else nil | |
3154 | - | if (containsElement( | |
3155 | - | then throw(( | |
3154 | + | if (containsElement(mE, mB)) | |
3155 | + | then throw((mB + " is not newbie (already has referrals)")) | |
3156 | 3156 | else { | |
3157 | - | let | |
3158 | - | let | |
3159 | - | if (if (isDefined( | |
3160 | - | then isDefined(addressFromString(value( | |
3157 | + | let kh = bC(mB) | |
3158 | + | let ki = getString(kh) | |
3159 | + | if (if (isDefined(ki)) | |
3160 | + | then isDefined(addressFromString(value(ki))) | |
3161 | 3161 | else false) | |
3162 | - | then throw((( | |
3162 | + | then throw(((mB + " already has refBy: ") + value(ki))) | |
3163 | 3163 | else { | |
3164 | - | let | |
3165 | - | let | |
3166 | - | let | |
3167 | - | then split_4C(value( | |
3164 | + | let mF = bF(mA) | |
3165 | + | let mG = getString(mF) | |
3166 | + | let mH = if (isDefined(mG)) | |
3167 | + | then split_4C(value(mG), "_") | |
3168 | 3168 | else nil | |
3169 | - | if (containsElement( | |
3170 | - | then throw(((( | |
3169 | + | if (containsElement(mH, mB)) | |
3170 | + | then throw((((mA + " already contains ") + mB) + " within referrals")) | |
3171 | 3171 | else { | |
3172 | - | let | |
3173 | - | let | |
3174 | - | then value( | |
3175 | - | else makeString_2C(( | |
3176 | - | $Tuple2(([StringEntry( | |
3172 | + | let mI = makeString_2C((mH :+ mB), "_") | |
3173 | + | let mJ = if (containsElement(mE, mA)) | |
3174 | + | then value(mD) | |
3175 | + | else makeString_2C((mE :+ mA), "_") | |
3176 | + | $Tuple2(([StringEntry(kh, mA), StringEntry(mF, mI), StringEntry(mC, mJ)] ++ lk), 0) | |
3177 | 3177 | } | |
3178 | 3178 | } | |
3179 | 3179 | } | |
3180 | 3180 | } | |
3181 | 3181 | } | |
3182 | 3182 | ||
3183 | 3183 | ||
3184 | 3184 | ||
3185 | - | @Callable( | |
3186 | - | func distributePoints ( | |
3187 | - | let | |
3188 | - | if ((size( | |
3185 | + | @Callable(gK) | |
3186 | + | func distributePoints (mK,mL,mM,mN,mO) = { | |
3187 | + | let lk = lg(gK) | |
3188 | + | if ((size(gK.payments) != 0)) | |
3189 | 3189 | then throw("No payments required") | |
3190 | 3190 | else { | |
3191 | - | let c = toString( | |
3192 | - | let | |
3193 | - | let | |
3194 | - | let | |
3191 | + | let c = toString(gK.originCaller) | |
3192 | + | let mP = dB(invoke(de, "checkWlgXpREADONLY", [c], nil)) | |
3193 | + | let mQ = dz(mP[1]) | |
3194 | + | let mR = if ((0 >= mQ)) | |
3195 | 3195 | then $Tuple2(0, nil) | |
3196 | 3196 | else { | |
3197 | - | let | |
3198 | - | if (( | |
3199 | - | then $Tuple2( | |
3197 | + | let ka = dz(invoke(de, "takeWlgXp", [c], nil)) | |
3198 | + | if ((ka == ka)) | |
3199 | + | then $Tuple2(mQ, [IntegerEntry(H(c), dz(mP[0])), IntegerEntry(G(c), dz(mP[2]))]) | |
3200 | 3200 | else throw("Strict value is not equal to itself.") | |
3201 | 3201 | } | |
3202 | - | let | |
3203 | - | let | |
3202 | + | let mS = mR._1 | |
3203 | + | let mT = mR._2 | |
3204 | 3204 | let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked") | |
3205 | - | let | |
3206 | - | let | |
3207 | - | let | |
3208 | - | let | |
3209 | - | let | |
3210 | - | let | |
3211 | - | if (( | |
3212 | - | then throw((("There are only " + toString( | |
3205 | + | let mU = I(c) | |
3206 | + | let mV = (valueOrElse(getInteger(mU), 0) + mS) | |
3207 | + | let mW = E(A) | |
3208 | + | let mX = valueOrElse(getInteger(mW), 0) | |
3209 | + | let mY = (mV + mX) | |
3210 | + | let mZ = ((((mK + mL) + mM) + mN) + mO) | |
3211 | + | if ((mZ > mY)) | |
3212 | + | then throw((("There are only " + toString(mY)) + " free points to distribute")) | |
3213 | 3213 | else { | |
3214 | - | let | |
3215 | - | let aq = split(valueOrElse(getString( | |
3216 | - | let | |
3217 | - | $Tuple2((([IntegerEntry( | |
3214 | + | let na = B(A) | |
3215 | + | let aq = split(valueOrElse(getString(na), "0_0_0_0_0"), "_") | |
3216 | + | let nb = (mV - mZ) | |
3217 | + | $Tuple2((([IntegerEntry(mU, if ((0 > nb)) | |
3218 | 3218 | then 0 | |
3219 | - | else | |
3220 | - | then ( | |
3221 | - | else | |
3219 | + | else nb), IntegerEntry(mW, if ((0 > nb)) | |
3220 | + | then (mX + nb) | |
3221 | + | else mX), StringEntry(na, makeString([toString((parseIntValue(aq[k]) + mK)), toString((parseIntValue(aq[l]) + mL)), toString((parseIntValue(aq[m]) + mM)), toString((parseIntValue(aq[n]) + mN)), toString((parseIntValue(aq[o]) + mO))], "_"))] ++ lk) ++ mT), 0) | |
3222 | 3222 | } | |
3223 | 3223 | } | |
3224 | 3224 | } | |
3225 | 3225 | ||
3226 | 3226 | ||
3227 | 3227 | ||
3228 | - | @Callable( | |
3229 | - | func splitByGlobalWeightsREADONLY ( | |
3230 | - | ||
3231 | - | ||
3232 | - | ||
3233 | - | @Callable( | |
3234 | - | func splitByGlobalAndLocalWeightsREADONLY ( | |
3235 | - | let | |
3236 | - | $Tuple2(nil, $Tuple2( | |
3237 | - | } | |
3238 | - | ||
3239 | - | ||
3240 | - | ||
3241 | - | @Callable( | |
3242 | - | func getBackpackREADONLY (A) = $Tuple2(nil, makeString( | |
3243 | - | ||
3244 | - | ||
3245 | - | ||
3246 | - | @Callable( | |
3228 | + | @Callable(gK) | |
3229 | + | func splitByGlobalWeightsREADONLY (eI) = $Tuple2(nil, fa(eI)) | |
3230 | + | ||
3231 | + | ||
3232 | + | ||
3233 | + | @Callable(gK) | |
3234 | + | func splitByGlobalAndLocalWeightsREADONLY (nc,nd,gN) = { | |
3235 | + | let gG = gM(gN) | |
3236 | + | $Tuple2(nil, $Tuple2(fa(nc), eL(nd, gG))) | |
3237 | + | } | |
3238 | + | ||
3239 | + | ||
3240 | + | ||
3241 | + | @Callable(gK) | |
3242 | + | func getBackpackREADONLY (A) = $Tuple2(nil, makeString(hK(bI(A)), ":")) | |
3243 | + | ||
3244 | + | ||
3245 | + | ||
3246 | + | @Callable(gK) | |
3247 | 3247 | func getWarehouseREADONLY (P) = { | |
3248 | - | let | |
3249 | - | let | |
3250 | - | let | |
3251 | - | $Tuple2(nil, makeString_2C( | |
3252 | - | } | |
3253 | - | ||
3254 | - | ||
3255 | - | ||
3256 | - | @Callable( | |
3257 | - | func saveLastTx () = if (!(containsElement([ | |
3248 | + | let js = value(assetInfo(fromBase58String(P))) | |
3249 | + | let hZ = (dH(split(js.description, "_")[di]) / cF) | |
3250 | + | let ia = valueOrElse(getInteger(by(P)), 0) | |
3251 | + | $Tuple2(nil, makeString_2C(hX(bx(P), hZ, ia), ":")) | |
3252 | + | } | |
3253 | + | ||
3254 | + | ||
3255 | + | ||
3256 | + | @Callable(gK) | |
3257 | + | func saveLastTx () = if (!(containsElement([de, dc, df, dg], gK.caller))) | |
3258 | 3258 | then throw("Access denied") | |
3259 | - | else $Tuple2( | |
3260 | - | ||
3261 | - | ||
3262 | - | ||
3263 | - | @Callable( | |
3264 | - | func updateDuckStats (A, | |
3259 | + | else $Tuple2(lg(gK), 42) | |
3260 | + | ||
3261 | + | ||
3262 | + | ||
3263 | + | @Callable(gK) | |
3264 | + | func updateDuckStats (A,ka) = if ((gK.caller != dc)) | |
3265 | 3265 | then throw("Access denied") | |
3266 | - | else | |
3267 | - | ||
3268 | - | ||
3269 | - | ||
3270 | - | @Callable( | |
3271 | - | func updateAccStats (c, | |
3266 | + | else jZ(A, ka) | |
3267 | + | ||
3268 | + | ||
3269 | + | ||
3270 | + | @Callable(gK) | |
3271 | + | func updateAccStats (c,ka) = if (!(containsElement([de, dc, dg], gK.caller))) | |
3272 | 3272 | then throw("Access denied") | |
3273 | - | else | |
3274 | - | ||
3275 | - | ||
3276 | - | ||
3277 | - | @Callable( | |
3278 | - | func equipDuck ( | |
3279 | - | let | |
3280 | - | if ((size( | |
3273 | + | else kf(c, ka) | |
3274 | + | ||
3275 | + | ||
3276 | + | ||
3277 | + | @Callable(gK) | |
3278 | + | func equipDuck (ne) = { | |
3279 | + | let lk = lg(gK) | |
3280 | + | if ((size(gK.payments) != 0)) | |
3281 | 3281 | then throw("No payments required") | |
3282 | 3282 | else { | |
3283 | - | let c = toString( | |
3283 | + | let c = toString(gK.originCaller) | |
3284 | 3284 | let A = valueOrErrorMessage(getString(bH(c)), "You don't have a duck staked") | |
3285 | - | if ( | |
3285 | + | if (kp(A)) | |
3286 | 3286 | then throw("equipDuck_checkTournament") | |
3287 | - | else if ( | |
3287 | + | else if (kq(A)) | |
3288 | 3288 | then throw("equipDuck_checkDelivery") | |
3289 | 3289 | else { | |
3290 | - | let | |
3291 | - | let | |
3292 | - | let | |
3293 | - | let | |
3294 | - | let | |
3295 | - | if ((size( | |
3290 | + | let gx = F(A) | |
3291 | + | let nf = split(valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
3292 | + | let hL = bI(A) | |
3293 | + | let io = hK(hL) | |
3294 | + | let lB = split(ne, "_") | |
3295 | + | if ((size(lB) != q)) | |
3296 | 3296 | then throw("Wrong equipment string") | |
3297 | 3297 | else { | |
3298 | - | let | |
3299 | - | let | |
3300 | - | let ao = if (( | |
3298 | + | let gz = gm(nf, fx(io[bk]), true, nil) | |
3299 | + | let gA = split(lB[p], ";")[1] | |
3300 | + | let ao = if ((gA == "")) | |
3301 | 3301 | then 0 | |
3302 | 3302 | else { | |
3303 | - | let | |
3304 | - | if (( | |
3303 | + | let gB = split(gA, ",")[0] | |
3304 | + | if ((gB == "")) | |
3305 | 3305 | then 0 | |
3306 | 3306 | else { | |
3307 | - | let | |
3308 | - | let | |
3309 | - | let | |
3310 | - | if (if (if (if (if (( | |
3307 | + | let fM = split(gB, ":") | |
3308 | + | let da = fM[0] | |
3309 | + | let gC = fM[1] | |
3310 | + | if (if (if (if (if ((da == "06")) | |
3311 | 3311 | then true | |
3312 | - | else ( | |
3312 | + | else (da == "07")) | |
3313 | 3313 | then true | |
3314 | - | else ( | |
3315 | - | then ( | |
3314 | + | else (da == "08")) | |
3315 | + | then (gC != "") | |
3316 | 3316 | else false) | |
3317 | - | then (parseIntValue( | |
3317 | + | then (parseIntValue(gC) > 0) | |
3318 | 3318 | else false) | |
3319 | - | then parseIntValue(split(aS[parseIntValue( | |
3319 | + | then parseIntValue(split(aS[parseIntValue(da)], "_")[aU]) | |
3320 | 3320 | else 0 | |
3321 | 3321 | } | |
3322 | 3322 | } | |
3323 | - | let | |
3324 | - | let | |
3325 | - | let | |
3326 | - | $Tuple2(([StringEntry( | |
3323 | + | let gh = am(this, A, ao, true) | |
3324 | + | let gD = gm(lB, gz, false, gh) | |
3325 | + | let ng = fC(gD) | |
3326 | + | $Tuple2(([StringEntry(gx, ne), StringEntry(hL, makeString_2C([io[bh], io[bi], io[bj], ng], ":")), StringEntry(L(A), makeString([toString(gh[7]), toString(gh[8]), toString(gh[9]), toString(gh[10]), toString(gh[11])], "_"))] ++ lk), 0) | |
3327 | 3327 | } | |
3328 | 3328 | } | |
3329 | 3329 | } | |
3330 | 3330 | } | |
3331 | 3331 | ||
3332 | 3332 | ||
3333 | 3333 | ||
3334 | - | @Callable( | |
3335 | - | func fortificateLand (P, | |
3336 | - | let | |
3337 | - | if ((size( | |
3334 | + | @Callable(gK) | |
3335 | + | func fortificateLand (P,nh) = { | |
3336 | + | let lk = lg(gK) | |
3337 | + | if ((size(gK.payments) != 0)) | |
3338 | 3338 | then throw("No payments required") | |
3339 | 3339 | else { | |
3340 | - | let c = toString( | |
3340 | + | let c = toString(gK.originCaller) | |
3341 | 3341 | let A = valueOrElse(getString(bH(c)), "") | |
3342 | - | let | |
3343 | - | let | |
3344 | - | let | |
3345 | - | let | |
3346 | - | let | |
3347 | - | let | |
3348 | - | let | |
3349 | - | let | |
3350 | - | let | |
3351 | - | let | |
3352 | - | let | |
3353 | - | let | |
3354 | - | let | |
3355 | - | let | |
3356 | - | let | |
3357 | - | let | |
3358 | - | let | |
3359 | - | let | |
3360 | - | let | |
3361 | - | let | |
3362 | - | let | |
3363 | - | let | |
3364 | - | $Tuple2(([StringEntry( | |
3365 | - | } | |
3366 | - | } | |
3367 | - | ||
3368 | - | ||
3369 | - | ||
3370 | - | @Callable( | |
3371 | - | func initDuckTourAttempt (A) = if (( | |
3342 | + | let fH = am(this, A, 0, false) | |
3343 | + | let ni = bz(P) | |
3344 | + | let nj = split(valueOrElse(getString(ni), ":0_15:0_18:0"), "_") | |
3345 | + | let js = value(assetInfo(fromBase58String(P))) | |
3346 | + | let hZ = (dH(split(js.description, "_")[di]) / cF) | |
3347 | + | let ia = valueOrElse(getInteger(by(P)), 0) | |
3348 | + | let hY = bx(P) | |
3349 | + | let id = hX(hY, hZ, ia) | |
3350 | + | let nk = split(id[bc], "_") | |
3351 | + | let nl = parseIntValue(nk[be]) | |
3352 | + | let nm = parseIntValue(nk[bf]) | |
3353 | + | let nn = split(nh, "_") | |
3354 | + | let no = gt(nj, fx(id[bb]), nl, nm, true, nil) | |
3355 | + | let gz = no._1 | |
3356 | + | let np = no._2 | |
3357 | + | let nq = no._3 | |
3358 | + | let nr = gt(nn, gz, np, nq, false, fH) | |
3359 | + | let gD = nr._1 | |
3360 | + | let ns = nr._2 | |
3361 | + | let nt = nr._3 | |
3362 | + | let ng = fC(gD) | |
3363 | + | let jY = makeString([nk[bd], toString(ns), toString(nt), nk[bg]], "_") | |
3364 | + | $Tuple2(([StringEntry(ni, nh), StringEntry(hY, makeString_2C([id[aY], id[aZ], id[ba], ng, jY], ":"))] ++ lk), 0) | |
3365 | + | } | |
3366 | + | } | |
3367 | + | ||
3368 | + | ||
3369 | + | ||
3370 | + | @Callable(gK) | |
3371 | + | func initDuckTourAttempt (A) = if ((gK.caller != df)) | |
3372 | 3372 | then throw("Access denied") | |
3373 | 3373 | else { | |
3374 | - | let | |
3375 | - | let | |
3376 | - | let | |
3377 | - | let | |
3378 | - | let | |
3379 | - | let ce = valueOrElse(getInteger( | |
3380 | - | let | |
3381 | - | $Tuple2([IntegerEntry(J(A), | |
3374 | + | let jb = z(A) | |
3375 | + | let jc = ag(valueOrElse(getInteger(D(A)), 0)) | |
3376 | + | let kt = valueOrElse(getInteger(jb), jc) | |
3377 | + | let nu = bJ(A) | |
3378 | + | let jq = valueOrElse(getString(nu), aJ) | |
3379 | + | let ce = valueOrElse(getInteger(df, bP), 0) | |
3380 | + | let nv = (toString(ce) + "_T_0") | |
3381 | + | $Tuple2([IntegerEntry(J(A), kt), IntegerEntry(jb, jc), StringEntry(K(A), jq), StringEntry(nu, nv)], nv) | |
3382 | 3382 | } | |
3383 | 3383 | ||
3384 | 3384 | ||
3385 | 3385 | ||
3386 | - | @Callable( | |
3386 | + | @Callable(gK) | |
3387 | 3387 | func breakAttempt () = { | |
3388 | - | let | |
3389 | - | let A = valueOrErrorMessage(getString(bH(toString( | |
3390 | - | let | |
3391 | - | let | |
3392 | - | if ((split( | |
3388 | + | let lk = lg(gK) | |
3389 | + | let A = valueOrErrorMessage(getString(bH(toString(gK.caller))), "You don't have a duck staked") | |
3390 | + | let nu = bJ(A) | |
3391 | + | let jq = valueOrElse(getString(nu), aJ) | |
3392 | + | if ((split(jq, "_")[bm] != "T")) | |
3393 | 3393 | then throw("Your duck is not in the tournament") | |
3394 | 3394 | else { | |
3395 | - | let | |
3396 | - | let | |
3397 | - | $Tuple2((( | |
3398 | - | } | |
3399 | - | } | |
3400 | - | ||
3401 | - | ||
3402 | - | ||
3403 | - | @Callable( | |
3404 | - | func exitTournamentInternal (A) = if (( | |
3395 | + | let ky = getIntegerValue(J(A)) | |
3396 | + | let kz = getStringValue(K(A)) | |
3397 | + | $Tuple2(((lk :+ IntegerEntry(z(A), ky)) :+ StringEntry(nu, kz)), jq) | |
3398 | + | } | |
3399 | + | } | |
3400 | + | ||
3401 | + | ||
3402 | + | ||
3403 | + | @Callable(gK) | |
3404 | + | func exitTournamentInternal (A) = if ((gK.caller != this)) | |
3405 | 3405 | then throw("Access denied") | |
3406 | 3406 | else { | |
3407 | - | let | |
3408 | - | let | |
3409 | - | $Tuple2([IntegerEntry(z(A), | |
3407 | + | let ky = getIntegerValue(J(A)) | |
3408 | + | let kz = getStringValue(K(A)) | |
3409 | + | $Tuple2([IntegerEntry(z(A), ky), StringEntry(bJ(A), kz)], false) | |
3410 | 3410 | } | |
3411 | 3411 | ||
3412 | 3412 | ||
3413 | 3413 | ||
3414 | - | @Callable( | |
3415 | - | func exitDeliveryInternal (A) = if (( | |
3414 | + | @Callable(gK) | |
3415 | + | func exitDeliveryInternal (A) = if ((gK.caller != this)) | |
3416 | 3416 | then throw("Access denied") | |
3417 | 3417 | else { | |
3418 | - | let | |
3419 | - | $Tuple2(( | |
3418 | + | let mh = kr(A) | |
3419 | + | $Tuple2((mh._1 ++ mh._2), false) | |
3420 | 3420 | } | |
3421 | 3421 | ||
3422 | 3422 | ||
3423 | 3423 | ||
3424 | - | @Callable( | |
3425 | - | func autoExitDelivery (A) = if (( | |
3424 | + | @Callable(gK) | |
3425 | + | func autoExitDelivery (A) = if ((gK.caller != this)) | |
3426 | 3426 | then throw("Access denied") | |
3427 | 3427 | else { | |
3428 | - | let | |
3429 | - | $Tuple2( | |
3428 | + | let mh = kr(A) | |
3429 | + | $Tuple2(mh._1, $Tuple2(mh._3, mh._4)) | |
3430 | 3430 | } | |
3431 | 3431 | ||
3432 | 3432 | ||
3433 | 3433 | ||
3434 | - | @Callable( | |
3435 | - | func prepareRobbery ( | |
3436 | - | let | |
3437 | - | if (!(sigVerify_8Kb( | |
3434 | + | @Callable(gK) | |
3435 | + | func prepareRobbery (iQ,iR) = { | |
3436 | + | let lk = lg(gK) | |
3437 | + | if (!(sigVerify_8Kb(iQ, iR, dZ))) | |
3438 | 3438 | then throw("signature does not match") | |
3439 | - | else if ((size( | |
3439 | + | else if ((size(gK.payments) != 1)) | |
3440 | 3440 | then throw("exactly 1 payment must be attached") | |
3441 | 3441 | else { | |
3442 | - | let | |
3443 | - | let | |
3444 | - | if (if (!(isDefined( | |
3442 | + | let ll = gK.payments[0] | |
3443 | + | let nw = ll.amount | |
3444 | + | if (if (!(isDefined(ll.assetId))) | |
3445 | 3445 | then true | |
3446 | - | else (value( | |
3446 | + | else (value(ll.assetId) != dm)) | |
3447 | 3447 | then throw("WLGOLD payments only!") | |
3448 | 3448 | else { | |
3449 | - | let | |
3450 | - | if ((size( | |
3449 | + | let fp = split(toUtf8String(iQ), "|") | |
3450 | + | if ((size(fp) != 2)) | |
3451 | 3451 | then throw("Wrong message format") | |
3452 | 3452 | else { | |
3453 | - | let A = | |
3454 | - | if ( | |
3453 | + | let A = fp[0] | |
3454 | + | if (kp(A)) | |
3455 | 3455 | then throw("prepareRobbery_checkTournament") | |
3456 | - | else if ( | |
3456 | + | else if (kq(A)) | |
3457 | 3457 | then throw("prepareRobbery_checkDelivery") | |
3458 | 3458 | else { | |
3459 | 3459 | let ay = au(this, A)._1 | |
3460 | - | if ((ay > | |
3461 | - | then throw(((("Payment " + toString( | |
3460 | + | if ((ay > nw)) | |
3461 | + | then throw(((("Payment " + toString(nw)) + " < required ") + toString(ay))) | |
3462 | 3462 | else { | |
3463 | - | let | |
3463 | + | let nx = split(fp[1], "_") | |
3464 | 3464 | let ax = lastBlock.timestamp | |
3465 | 3465 | let az = valueOrElse(getInteger(R(A)), 0) | |
3466 | 3466 | let aA = valueOrElse(getString(S(A)), "") | |
3467 | 3467 | let aB = valueOrElse(getInteger(Q(aA)), 0) | |
3468 | 3468 | if (if ((az != x)) | |
3469 | 3469 | then (aB > ax) | |
3470 | 3470 | else false) | |
3471 | 3471 | then throw(("You already started robbing, wait till " + toString(aB))) | |
3472 | 3472 | else { | |
3473 | - | func | |
3474 | - | let | |
3475 | - | let | |
3476 | - | if (( | |
3473 | + | func ny (eR,P) = { | |
3474 | + | let nz = valueOrElse(getInteger(O(P)), 0) | |
3475 | + | let nA = valueOrElse(getInteger(Q(P)), 0) | |
3476 | + | if ((nz > size(u))) | |
3477 | 3477 | then throw("Invalid state") | |
3478 | - | else if ((ax > | |
3478 | + | else if ((ax > nA)) | |
3479 | 3479 | then { | |
3480 | - | let | |
3481 | - | if ((0 >= | |
3482 | - | then | |
3480 | + | let nB = valueOrElse(getInteger(br(P)), 0) | |
3481 | + | if ((0 >= nB)) | |
3482 | + | then eR | |
3483 | 3483 | else { | |
3484 | - | let | |
3485 | - | let | |
3486 | - | let | |
3487 | - | let | |
3488 | - | let | |
3489 | - | let | |
3490 | - | if ((v > | |
3491 | - | then | |
3492 | - | else ( | |
3484 | + | let gr = value(assetInfo(fromBase58String(P))) | |
3485 | + | let jw = split(gr.description, "_") | |
3486 | + | let ji = dH(jw[di]) | |
3487 | + | let nC = jh(P, ji) | |
3488 | + | let gQ = (ax - nB) | |
3489 | + | let jz = fraction(gQ, (nC * ji), a) | |
3490 | + | if ((v > jz)) | |
3491 | + | then eR | |
3492 | + | else (eR :+ P) | |
3493 | 3493 | } | |
3494 | 3494 | } | |
3495 | - | else | |
3495 | + | else eR | |
3496 | 3496 | } | |
3497 | 3497 | ||
3498 | - | let | |
3499 | - | let | |
3500 | - | let | |
3501 | - | let | |
3502 | - | func | |
3503 | - | then | |
3504 | - | else | |
3505 | - | ||
3506 | - | func | |
3507 | - | then | |
3498 | + | let nD = { | |
3499 | + | let eT = nx | |
3500 | + | let eU = size(eT) | |
3501 | + | let eV = nil | |
3502 | + | func eW (eX,eY) = if ((eY >= eU)) | |
3503 | + | then eX | |
3504 | + | else ny(eX, eT[eY]) | |
3505 | + | ||
3506 | + | func eZ (eX,eY) = if ((eY >= eU)) | |
3507 | + | then eX | |
3508 | 3508 | else throw("List size exceeds 10") | |
3509 | 3509 | ||
3510 | - | | |
3510 | + | eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
3511 | 3511 | } | |
3512 | - | if ((size( | |
3512 | + | if ((size(nD) == 0)) | |
3513 | 3513 | then throw("No candidates for robbery") | |
3514 | 3514 | else { | |
3515 | - | let | |
3516 | - | let P = | |
3517 | - | $Tuple2(([IntegerEntry(O(P), w), IntegerEntry(Q(P), (ax + u[w])), IntegerEntry(R(A), y), StringEntry(S(A), P)] ++ | |
3515 | + | let nE = dR(size(nD), height, (iR + gK.transactionId)) | |
3516 | + | let P = nD[nE] | |
3517 | + | $Tuple2(([IntegerEntry(O(P), w), IntegerEntry(Q(P), (ax + u[w])), IntegerEntry(R(A), y), StringEntry(S(A), P)] ++ lk), P) | |
3518 | 3518 | } | |
3519 | 3519 | } | |
3520 | 3520 | } | |
3521 | 3521 | } | |
3522 | 3522 | } | |
3523 | 3523 | } | |
3524 | 3524 | } | |
3525 | 3525 | } | |
3526 | 3526 | ||
3527 | 3527 | ||
3528 | 3528 | ||
3529 | - | @Callable( | |
3530 | - | func robLand ( | |
3531 | - | let | |
3532 | - | if (!(sigVerify_8Kb( | |
3529 | + | @Callable(gK) | |
3530 | + | func robLand (iQ,iR) = { | |
3531 | + | let lk = lg(gK) | |
3532 | + | if (!(sigVerify_8Kb(iQ, iR, dZ))) | |
3533 | 3533 | then throw("signature does not match") | |
3534 | 3534 | else { | |
3535 | - | let bL = toString( | |
3535 | + | let bL = toString(gK.caller) | |
3536 | 3536 | let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked") | |
3537 | 3537 | let ax = lastBlock.timestamp | |
3538 | - | $Tuple2(( | |
3539 | - | } | |
3540 | - | } | |
3541 | - | ||
3542 | - | ||
3543 | - | ||
3544 | - | @Callable( | |
3545 | - | func acceptDelivery () = if (!( | |
3538 | + | $Tuple2((lk :+ IntegerEntry(M(A), ax)), 0) | |
3539 | + | } | |
3540 | + | } | |
3541 | + | ||
3542 | + | ||
3543 | + | ||
3544 | + | @Callable(gK) | |
3545 | + | func acceptDelivery () = if (!(cv)) | |
3546 | 3546 | then throw("Delivery feature is turned off!") | |
3547 | 3547 | else { | |
3548 | - | let | |
3549 | - | let bL = toString( | |
3548 | + | let lk = lg(gK) | |
3549 | + | let bL = toString(gK.caller) | |
3550 | 3550 | let A = valueOrErrorMessage(getString(bH(bL)), "You don't have a duck staked") | |
3551 | - | let | |
3552 | - | let | |
3553 | - | if ((aM > ( | |
3554 | - | then throw(((("Delivery is not available, fund=" + | |
3551 | + | let nF = valueOrElse(getInteger(dc, bN), 0) | |
3552 | + | let kw = valueOrElse(getInteger(dc, bO), 0) | |
3553 | + | if ((aM > (nF - kw))) | |
3554 | + | then throw(((("Delivery is not available, fund=" + dM(nF, 6)) + ", locked=") + dM(kw, 6))) | |
3555 | 3555 | else { | |
3556 | 3556 | let ax = lastBlock.timestamp | |
3557 | - | let | |
3558 | - | if (( | |
3559 | - | then throw(("Delivery is forbidden for your duck until " + toString( | |
3560 | - | else if ( | |
3557 | + | let nG = valueOrElse(getInteger(T(A)), 0) | |
3558 | + | if ((nG > ax)) | |
3559 | + | then throw(("Delivery is forbidden for your duck until " + toString(nG))) | |
3560 | + | else if (kp(A)) | |
3561 | 3561 | then throw("acceptDelivery_checkTournament") | |
3562 | - | else if ( | |
3562 | + | else if (kq(A)) | |
3563 | 3563 | then throw("acceptDelivery_checkDelivery") | |
3564 | 3564 | else { | |
3565 | - | let | |
3566 | - | let | |
3567 | - | let | |
3568 | - | let | |
3569 | - | let | |
3570 | - | let | |
3571 | - | let | |
3572 | - | $Tuple2(([IntegerEntry(J(A), | |
3565 | + | let nH = dz(invoke(dc, "updateDeliveryLocked", [(kw + aM)], nil)) | |
3566 | + | let jb = z(A) | |
3567 | + | let jc = ag(valueOrElse(getInteger(D(A)), 0)) | |
3568 | + | let kt = valueOrElse(getInteger(jb), jc) | |
3569 | + | let nu = bJ(A) | |
3570 | + | let jq = valueOrElse(getString(nu), aJ) | |
3571 | + | let nI = (toString(ax) + "_D_0") | |
3572 | + | $Tuple2(([IntegerEntry(J(A), kt), IntegerEntry(jb, jc), StringEntry(K(A), jq), StringEntry(nu, nI)] ++ lk), $Tuple2(nI, nH)) | |
3573 | 3573 | } | |
3574 | 3574 | } | |
3575 | 3575 | } | |
3576 | 3576 | ||
3577 | 3577 |
github/deemru/w8io/169f3d6 1680.76 ms ◑