tx · 4bYSQ8bV2UdUvgPLQRd7Wr1mkEpn2VKxPDdQskB9ydQX 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm: -0.09700000 Waves 2023.08.29 17:23 [2732104] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves
{ "type": 13, "id": "4bYSQ8bV2UdUvgPLQRd7Wr1mkEpn2VKxPDdQskB9ydQX", "fee": 9700000, "feeAssetId": null, "timestamp": 1693319073240, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "4y711qnjeNNyWeW5aeaLGDotF5c2AUdaQSVW5B1eVixzTfjEpNoMCzKZhRDiyT2yHhTkTLkVXRBntdwtqjMGyGnE" ], "script": "base64:BgLHAQgCEgMKAQgSAwoBBBIAEgMKAQgSABIDCgEIEgQKAgEIEgQKAgEIEgQKAgICEgUKAwEBARIAEgQKAggIEgASABIECgICAhIDCgEIEgQKAggIEgMKARgSBAoCCAgSBAoCCAgSAwoBCBIDCgEYEgMKAQgSBQoDCAgIEgQKAggIEgcKBQEBAQEBEgMKAQESBQoDAQEIEgMKAQgSAwoBCBIAEgQKAggBEgQKAggBEgMKAQgSBAoCCAgSAwoBCBIAEgMKAQgSBAoCAgKHAgEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBGFkZHIJAKwCAgIQbGFzdEFyYlRpbWVVc2VyXwUEYWRkcgAGU0NBTEU4AIDC1y8ADHhwTGV2ZWxTY2FsZQCAGQAPeHBMZXZlbFJlY2lwUG93AKAfABJudW1Qb2ludHNPbkxldmVsVXAAAwAOcm9iYmVyeUNvc3RNaW4AgMLXLwAUcm9iYmVyeUNvb2xkb3duQ29lZmYAkAMADHJlcXVpcmVtZW50cwkAzAgCAghTdHJlbmd0aAkAzAgCAghBY2N1cmFjeQkAzAgCAglJbnRlbGxlY3QJAMwIAgIJRW5kdXJhbmNlCQDMCAICCURleHRlcml0eQkAzAgCAgVMZXZlbAkAzAgCAgZIZWFsdGgFA25pbAAMY2hhclN0cmVuZ3RoAAAADGNoYXJBY2N1cmFjeQABAA1jaGFySW50ZWxsZWN0AAIADWNoYXJFbmR1cmFuY2UAAwANY2hhckRleHRlcml0eQAEAAtzZWdCYWNrcGFjawAAAAtOVU1TRUdNRU5UUwAGAApOVU1NQUlOQVVYAAIACE1BWFNMT1RTAAIADU1BWFBST0RJTlNMT1QAHgAQbGFuZFJvYkNvb2xkb3ducwkAzAgCAAAJAMwIAgDAzyQJAMwIAgCg9zYJAMwIAgCA3MwUCQDMCAIAgK6mCgUDbmlsAA5NSU5fUkVTX1RPX1JPQgCA2sQJAAxyb2JJZHhMb2NrZWQAAQALZHVja0lkeEZyZWUAAAAQZHVja0lkeFByZXBhcmluZwABAQ1rZXlEdWNrSGVhbHRoAQtkdWNrQXNzZXRJZAkArAICAgtkdWNrSGVhbHRoXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tDaGFycwELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0NoYXJzXwULZHVja0Fzc2V0SWQBCWtleUR1Y2tYUAELZHVja0Fzc2V0SWQJAKwCAgIHZHVja1hQXwULZHVja0Fzc2V0SWQBDGtleUR1Y2tMZXZlbAELZHVja0Fzc2V0SWQJAKwCAgIKZHVja0xldmVsXwULZHVja0Fzc2V0SWQBEWtleUR1Y2tGcmVlUG9pbnRzAQtkdWNrQXNzZXRJZAkArAICAg9kdWNrRnJlZVBvaW50c18FC2R1Y2tBc3NldElkARBrZXlEdWNrRXF1aXBtZW50AQtkdWNrQXNzZXRJZAkArAICAg5kdWNrRXF1aXBtZW50XwULZHVja0Fzc2V0SWQBCWtleVVzZXJYUAEEYWRkcgkArAICAgd1c2VyWFBfBQRhZGRyAQxrZXlVc2VyTGV2ZWwBBGFkZHIJAKwCAgIKdXNlckxldmVsXwUEYWRkcgERa2V5VXNlckZyZWVQb2ludHMBBGFkZHIJAKwCAgIPdXNlckZyZWVQb2ludHNfBQRhZGRyAQ5rZXlTYXZlZEhlYWx0aAELZHVja0Fzc2V0SWQJAKwCAgIMc2F2ZWRIZWFsdGhfBQtkdWNrQXNzZXRJZAEQa2V5U2F2ZWRMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgIOc2F2ZWRMb2NhdGlvbl8FC2R1Y2tBc3NldElkAQxrZXlEdWNrQnVmZnMBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tCdWZmc18FC2R1Y2tBc3NldElkARhrZXlMYXN0Um9iYmVyeVRpbWVCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEGxhc3RSb2JiZXJ5VGltZV8FC2R1Y2tBc3NldElkARhrZXlMYXN0Um9iYmVyeUNvc3RCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEGxhc3RSb2JiZXJ5Q29zdF8FC2R1Y2tBc3NldElkARNrZXlMYW5kUm9iYmVyeVN0YXRlAQtsYW5kQXNzZXRJZAkArAICAhFsYW5kUm9iYmVyeVN0YXRlXwULbGFuZEFzc2V0SWQBEmtleUxhbmRDb29sZG93bkVUQQELbGFuZEFzc2V0SWQJAKwCAgIQbGFuZENvb2xkb3duRVRBXwULbGFuZEFzc2V0SWQBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBC2R1Y2tBc3NldElkCQCsAgICEWR1Y2tSb2JiZXJ5U3RhdGVfBQtkdWNrQXNzZXRJZAETa2V5TG9ja2VkTGFuZEJ5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIRbG9ja2VkTGFuZEJ5RHVja18FC2R1Y2tBc3NldElkAAd4cENsYWltAJBOAA94cFN1Y2Nlc3NGbGlnaHQAkE4ADHhwRmFpbEZsaWdodADQDwAIeHBDYWxsRVMAoI0GAAx4cEN1c3RvbU5hbWUAwIQ9AAp4cE5ld1NMYW5kAMCWsQIADnhwVXBncmFkZUluZnJhAJBOAAd4cE1lcmdlAMCEPQAJeHBPbmJvYXJkAMCEPQAGeHBIZWFsAJBOAQlsZXZlbEJ5WFABAnhwCQBrAwUMeHBMZXZlbFNjYWxlCQBsBgUCeHAABAUPeHBMZXZlbFJlY2lwUG93AAQABAUERE9XTgUGU0NBTEU4AQltYXhIZWFsdGgBBWxldmVsCQBkAgBkBQVsZXZlbAEHbGV2ZWxVcAIJY3VyckxldmVsBW5ld1hQBAhuZXdMZXZlbAkBCWxldmVsQnlYUAEFBW5ld1hQCQDMCAIFCG5ld0xldmVsCQDMCAIJAGgCBRJudW1Qb2ludHNPbkxldmVsVXAJAGUCBQhuZXdMZXZlbAUJY3VyckxldmVsBQNuaWwBDGdldER1Y2tTdGF0cwQPc3Rha2luZ0NvbnRyYWN0C2R1Y2tBc3NldElkCmJ1ZmZFZmZlY3QKZm9yY2VCdWZmcwQFY2hhcnMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrQ2hhcnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wAgFfBANsdmwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQGaGVhbHRoCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAkBCW1heEhlYWx0aAEFA2x2bAQKc3RhdGVCdWZmcwkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzACAV8JAM4IAgkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJTdHJlbmd0aAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJBY2N1cmFjeQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJJbnRlbGxlY3QJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRW5kdXJhbmNlCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckRleHRlcml0eQkAzAgCBQNsdmwJAMwIAgUGaGVhbHRoBQNuaWwDBQpmb3JjZUJ1ZmZzCQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAUDbmlsCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQxjaGFyU3RyZW5ndGgJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDGNoYXJBY2N1cmFjeQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUNY2hhckludGVsbGVjdAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUNY2hhckVuZHVyYW5jZQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUNY2hhckRleHRlcml0eQUDbmlsAQ5nZXRSb2JiZXJ5RGF0YQIPc3Rha2luZ0NvbnRyYWN0C2R1Y2tBc3NldElkBAtsYXN0Um9iQ29zdAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARhrZXlMYXN0Um9iYmVyeUNvc3RCeUR1Y2sBBQtkdWNrQXNzZXRJZAAABAtsYXN0Um9iVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARhrZXlMYXN0Um9iYmVyeVRpbWVCeUR1Y2sBBQtkdWNrQXNzZXRJZAAABANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAdyb2JDb3N0CQCWAwEJAMwIAgUOcm9iYmVyeUNvc3RNaW4JAMwIAgkAZQIFC2xhc3RSb2JDb3N0CQBoAgUUcm9iYmVyeUNvb2xkb3duQ29lZmYJAGUCBQNub3cFC2xhc3RSb2JUaW1lBQNuaWwECWR1Y2tTdGF0ZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARNrZXlEdWNrUm9iYmVyeVN0YXRlAQULZHVja0Fzc2V0SWQAAAQKbG9ja2VkTGFuZAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARNrZXlMb2NrZWRMYW5kQnlEdWNrAQULZHVja0Fzc2V0SWQCAAQHbGFuZEVUQQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARJrZXlMYW5kQ29vbGRvd25FVEEBBQpsb2NrZWRMYW5kAAAJAJcKBQUHcm9iQ29zdAULbGFzdFJvYlRpbWUFCWR1Y2tTdGF0ZQUKbG9ja2VkTGFuZAUHbGFuZEVUQQAKTEFORFBSRUZJWAIETEFORAAKRFVDS1BSRUZJWAIERFVDSwAKQVJUUFJFU0FMRQIHUFJFU0FMRQAGTlVNUkVTAAYAGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgAZAA9EQUlMWVJFU0JZUElFQ0UAgPjSAQAJREFZTUlMTElTAIC4mSkADFdITVVMVElQTElFUgCAyK+gJQAPREVGQVVMVExPQ0FUSU9OAg9BZnJpY2FfRl9BZnJpY2EAEFJFU09VUkNFUFJJQ0VNSU4A1bUCAApFU1NFTExDT0VGAAoACXByb2RUeXBlcwkAzAgCAhBGaXJzdCBBaWQgS2l0IEwxCQDMCAICEEZpcnN0IEFpZCBLaXQgTDIJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMwkAzAgCAgtCYWNrcGFjayBMMQkAzAgCAgtCYWNrcGFjayBMMgkAzAgCAgtCYWNrcGFjayBMMwkAzAgCAg5Gb29kIFJhdGlvbiBMMQkAzAgCAg5Gb29kIFJhdGlvbiBMMgkAzAgCAg5Gb29kIFJhdGlvbiBMMwkAzAgCAgtKZXQgUGFjayBMMQkAzAgCAgtKZXQgUGFjayBMMgkAzAgCAgtKZXQgUGFjayBMMwkAzAgCAglTaGllbGQgTDEJAMwIAgIJU2hpZWxkIEwyCQDMCAICCVNoaWVsZCBMMwkAzAgCAgdNaW5lIEwxCQDMCAICB01pbmUgTDIJAMwIAgIHTWluZSBMMwkAzAgCAgdUcmFwIEwxCQDMCAICB1RyYXAgTDIJAMwIAgIHVHJhcCBMMwUDbmlsAApjb250aW5lbnRzCQDMCAICCEFtZXJpY2FzCQDMCAICBkV1cm9wZQkAzAgCAgRBc2lhCQDMCAICBkFmcmljYQkAzAgCAgdPY2VhbmlhBQNuaWwACUNPRUZGMk1BVACAreIEABBmb3J0QWxsb3dlZFByb2RzCQDMCAIADwkAzAgCABAJAMwIAgARCQDMCAIAEgkAzAgCABMJAMwIAgAUBQNuaWwAEHByb2R1Y3Rpb25NYXRyaXgJAMwIAgIlOF84XzhfMTdfMTdfNDJfMTJfMF8zMF8wLDAsMCwwLDAsMCwwXwkAzAgCAiU4XzhfOF8xN18xN180Ml8yNF8wXzYwXzAsMCw1LDIsMCwwLDBfCQDMCAICJzhfOF84XzE3XzE3XzQyXzM2XzBfMTIwXzAsMCwxMCw0LDAsMCwwXwkAzAgCAik4XzE5XzE5XzhfMjdfMTlfMjZfMV8yMF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNTJfMV80MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNzhfMV84MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAiU4XzhfOF84XzhfNjBfMTNfMl8yXzAsMCwwLDAsMCwwLDBfMDExCQDMCAICJThfOF84XzhfOF82MF8yNl8yXzRfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIlOF84XzhfOF84XzYwXzM5XzJfOF8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfMzBfM18zMF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfNjBfM181MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfOTBfM183MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8xMV80XzMwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzIyXzRfNTBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMzNfNF83MF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAio0XzEzXzIyXzRfMzVfMjJfMjNfMF81MCwxLDBfMCwwLDAsMCwwLDAsMF8JAMwIAgIqNF8xM18yMl80XzM1XzIyXzQ2XzBfNTAsMSwxXzAsMiw1LDAsMCwwLDBfCQDMCAICKzRfMTNfMjJfNF8zNV8yMl82OV8wXzUwLDIsMV8wLDUsMTAsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzIwXzFfMzAsMSwxXzAsMCwwLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV80MF8xXzMwLDEsMl8yLDEsMywwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfNjBfMV8zMCwxLDNfNSwyLDgsMCwwLDAsMF8FA25pbAAJcklkeENvZWZmAAYACnJJZHhFZmZlY3QACAAQcklkeFJlcXVpcmVtZW50cwAJAAlySWR4U2xvdHMACgAOUFJPRFVDVFBLR1NJWkUACgALd2hJZHhMZXZlbHMAAAAId2hJZHhSZXMAAQAId2hJZHhNYXQAAgAJd2hJZHhQcm9kAAMACXdoSWR4TE9GVAAEAAl2b2xMb2NrZWQAAAALdm9sT2NjdXBpZWQAAQAHdm9sRnJlZQACAAh2b2xUb3RhbAADAApicElkeExldmVsAAAACGJwSWR4UmVzAAEACGJwSWR4TWF0AAIACWJwSWR4UHJvZAADARFrZXlMYXN0VHhJZEJ5VXNlcgEEYWRkcgkArAICAg9sYXN0VHhJZEJ5VXNlcl8FBGFkZHIBFWtleUxhbmRBc3NldElkVG9Pd25lcgEHYXNzZXRJZAkArAICAgluZnRPd25lcl8FB2Fzc2V0SWQBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQdhc3NldElkCQCsAgICGGxhbmRDdXN0b21OYW1lQnlBc3NldElkXwUHYXNzZXRJZAEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAgtzdGFrZWRUaW1lXwUHYXNzZXRJZAEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBHR5cGUHYXNzZXRJZAkAuQkCCQDMCAICDWxhbmRBcnRTdGF0dXMJAMwIAgUEdHlwZQkAzAgCBQdhc3NldElkBQNuaWwCAV8BImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDB25mdFR5cGUHYXNzZXRJZAlvd25lckFkZHIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAiBzdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyXwUHbmZ0VHlwZQIBXwUHYXNzZXRJZAIBXwUJb3duZXJBZGRyARJrZXlXYXJlaG91c2VCeUxhbmQBC2xhbmRBc3NldElkCQCsAgICCndhcmVIb3VzZV8FC2xhbmRBc3NldElkARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQdhc3NldElkCQCsAgICC2luZnJhTGV2ZWxfBQdhc3NldElkARdrZXlGb3J0aWZpY2F0aW9uc0J5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIPZm9ydGlmaWNhdGlvbnNfBQtsYW5kQXNzZXRJZAEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIYZHVja0N1c3RvbU5hbWVCeUFzc2V0SWRfBQdhc3NldElkARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQRhZGRyCQCsAgICGGFjY291bnRDdXN0b21OYW1lQnlBZGRyXwUEYWRkcgEPa2V5QWRkcmVzc1JlZkJ5AQRhZGRyCQCsAgICCWFjY1JlZkJ5XwUEYWRkcgEca2V5T25ib2FyZEFydEFjdGl2YXRlZE9uRHVjawELZHVja0Fzc2V0SWQJAKwCAgIab25ib2FyZEFydEFjdGl2YXRlZE9uRHVja18FC2R1Y2tBc3NldElkARxrZXlPbmJvYXJkQXJ0RHVja0FjdGl2YXRlZEJ5AQRhZGRyCQCsAgICGm9uYm9hcmRBcnRBY3RpdmF0ZWREdWNrQnlfBQRhZGRyARNrZXlBZGRyZXNzUmVmZXJyYWxzAQRhZGRyCQCsAgICDWFjY1JlZmVycmFsc18FBGFkZHIBEGtleUR1Y2tJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIKZHVja093bmVyXwUHYXNzZXRJZAEUa2V5U3Rha2VkRHVja0J5T3duZXIBCW93bmVyQWRkcgkArAICAhJzdGFrZWREdWNrQnlPd25lcl8FCW93bmVyQWRkcgERa2V5QmFja3BhY2tCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICCWJhY2tQYWNrXwULZHVja0Fzc2V0SWQBD2tleUR1Y2tMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgINZHVja0xvY2F0aW9uXwULZHVja0Fzc2V0SWQBCmtleUJsb2NrZWQAAhBjb250cmFjdHNCbG9ja2VkARVrZXlVc2VyR3dsUmVsZWFzZVRpbWUBCHVzZXJBZGRyCQCsAgICGiVzJXNfX3VzZXJHd2xSZWxlYXNlVGltZV9fBQh1c2VyQWRkcgEOa2V5RXNXYXJlaG91c2UAAhplbWVyZ2VuY3lXYXJlaG91c2VQcm9kdWN0cwANbGFzdFRvdXJJZEtleQIOJXNfX2xhc3RUb3VySWQBFWtleVRvdXJTdGF0aWNEYXRhQnlJZAEDdElkCQCsAgICFiVzJWRfX3RvdXJTdGF0aWNEYXRhX18JAKQDAQUDdElkARZrZXlUb3VyRHluYW1pY0RhdGFCeUlkAQN0SWQJAKwCAgIXJXMlZF9fdG91ckR5bmFtaWNEYXRhX18JAKQDAQUDdElkAAlpZHhTdGF0aWMAAAAKaWR4RHluYW1pYwABAQtnZXRUb3VyRGF0YQIMdG91ckNvbnRyYWN0A3RJZAQGc3RhdGljCQC1CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQx0b3VyQ29udHJhY3QJARVrZXlUb3VyU3RhdGljRGF0YUJ5SWQBBQN0SWQJAKwCAgkArAICAhlFcnJvciByZWFkaW5nIHRvdXJuYW1lbnQgCQCkAwEFA3RJZAIFIGRhdGECAl9fBAdkeW5hbWljCQC1CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQx0b3VyQ29udHJhY3QJARZrZXlUb3VyRHluYW1pY0RhdGFCeUlkAQUDdElkCQCsAgIJAKwCAgIZRXJyb3IgcmVhZGluZyB0b3VybmFtZW50IAkApAMBBQN0SWQCBSBkYXRhAgJfXwkAzAgCBQZzdGF0aWMJAMwIAgUHZHluYW1pYwUDbmlsAAp0U3RhdGljRW5kAAYADnREeW5hbWljU3RhdHVzAAEAEXREeW5hbWljV2luUmVzdWx0AAMAD2xvY0lkeENvbnRpbmVudAAAAApsb2NJZHhUeXBlAAEACGxvY0lkeElkAAIBGmtleUJlc3RSZXN1bHRCeVRvdXJBbmREdWNrAgN0SWQLZHVja0Fzc2V0SWQJALkJAgkAzAgCAh8lcyVkJXNfX2Jlc3RSZXN1bHRCeVRvdXJBbmREdWNrCQDMCAIJAKQDAQUDdElkCQDMCAIFC2R1Y2tBc3NldElkBQNuaWwCAl9fARJnZXRSZWNpcGVNYXRlcmlhbHMBBnJlY2lwZQkAaAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZyZWNpcGUFCXJJZHhDb2VmZgUJQ09FRkYyTUFUABZLU19TRVBBUkFURV9QVUJMSUNfS0VZBwAYS1NfQUxMT1dfQklHX0lORlJBX01FUkdFBwAFY2hhaW4JAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEAC3VzZHRBc3NldElkBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwASCE2nqyCAM/TtG7yo7ui5O8yYLdC136B5ao1CP5qA//uQMJAAACAQFUBQckbWF0Y2gwASBVsdifcoeC7+XjW42sBatl3ppDoS8WuwXzGreHpfHFGAkAAgECDVVua25vd24gY2hhaW4AFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAIjM1BRQ3V2RmJ2aDRMa1BVbnJuVTF6M2puYkExcDltM1dOaHYDCQAAAgEBVAUHJG1hdGNoMAIjM011bWtHR3p0Q0tBWHBXRHF4a2Rkb2ZxWFNVYnFRa3ZTSnkJAAIBAg1Vbmtub3duIGNoYWluABFJbmZyYVVwZ3JhZGVDb3N0UwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACAyK+gJQMJAAACAQFUBQckbWF0Y2gwAIDC1y8JAAIBAg1Vbmtub3duIGNoYWluAA5hcmJpdHJhZ2VEZWxheQQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACAuJkpAwkAAAIBAVQFByRtYXRjaDAA4NQDCQACAQINVW5rbm93biBjaGFpbgADU0VQAgJfXwAFTVVMVDYAwIQ9AAVNVUxUOACAwtcvAAVTU0laRQAZAAVNU0laRQBkAAVMU0laRQDhAQAGWExTSVpFAJADAAdYWExTSVpFAPEEAAVJVEVSNgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQUDbmlsAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAARSWR4Q2ZnU3Rha2luZ0RhcHAAAQARSWR4Q2ZnRWNvbm9teURhcHAAAgAUSWR4Q2ZnR292ZXJuYW5jZURhcHAAAwANSWR4Q2ZnV2xnRGFwcAAEABRJZHhDZmdUb3VybmFtZW50RGFwcAAHAQprZXlSZXN0Q2ZnAAIOJXNfX3Jlc3RDb25maWcBDmtleVJlc3RBZGRyZXNzAAIMJXNfX3Jlc3RBZGRyARFyZWFkUmVzdENmZ09yRmFpbAEEcmVzdAkAvAkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUEcmVzdAkBCmtleVJlc3RDZmcABQNTRVABGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIHcmVzdENmZwNpZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFB3Jlc3RDZmcFA2lkeAkArAICAipSZXN0IGNmZyBkb2Vzbid0IGNvbnRhaW4gYWRkcmVzcyBhdCBpbmRleCAJAKQDAQUDaWR4AAxyZXN0Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBDmtleVJlc3RBZGRyZXNzAAUVZGVmYXVsdFJlc3RBZGRyZXNzU3RyAAdyZXN0Q2ZnCQERcmVhZFJlc3RDZmdPckZhaWwBBQxyZXN0Q29udHJhY3QAD3N0YWtpbmdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ1N0YWtpbmdEYXBwAA9lY29ub215Q29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdFY29ub215RGFwcAALZ292Q29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRRJZHhDZmdHb3Zlcm5hbmNlRGFwcAALd2xnQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBQ1JZHhDZmdXbGdEYXBwABJ0b3VybmFtZW50Q29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRRJZHhDZmdUb3VybmFtZW50RGFwcAAKcmVjTGFuZE51bQAAAAtyZWNMYW5kU2l6ZQABAAtyZWNUZXJyYWlucwACAAxyZWNDb250aW5lbnQAAwANd2xnQXNzZXRJZEtleQILd2xnX2Fzc2V0SWQACndsZ0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQt3bGdDb250cmFjdAUNd2xnQXNzZXRJZEtleQITTm90IGluaXRpYWxpemVkIHlldAALcmFuZG9tRGVsYXkAAgEJa2V5Q29tbWl0AQdhZGRyZXNzCQCsAgICE2ZpbmlzaEJsb2NrRm9yQWRkcl8FB2FkZHJlc3MBEWtleVJlc1Byb3BvcnRpb25zAAITcmVzVHlwZXNQcm9wb3J0aW9ucwEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJY29udGluZW50CQCsAgICFHJlc1R5cGVzQnlDb250aW5lbnRfBQljb250aW5lbnQBFWtleVN0YWtlZExhbmRzQnlPd25lcgEJb3duZXJBZGRyCQCsAgICE3N0YWtlZExhbmRzQnlPd25lcl8FCW93bmVyQWRkcgEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEJb3duZXJBZGRyCQCsAgICFHN0YWtlZFBpZWNlc0J5T3duZXJfBQlvd25lckFkZHIBCGFzU3RyaW5nAQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgECGGZhaWwgdG8gY2FzdCBpbnRvIFN0cmluZwEFYXNJbnQBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIDSW50BAFuBQckbWF0Y2gwBQFuCQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQlhc0Jvb2xlYW4BAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBcwUHJG1hdGNoMAUBcwkAAgECGWZhaWwgdG8gY2FzdCBpbnRvIEJvb2xlYW4BD251bVBpZWNlc0J5U2l6ZQEIbGFuZFNpemUEByRtYXRjaDAFCGxhbmRTaXplAwkAAAICAVMFByRtYXRjaDAFBVNTSVpFAwkAAAICAU0FByRtYXRjaDAFBU1TSVpFAwkAAAICAUwFByRtYXRjaDAFBUxTSVpFAwkAAAICAlhMBQckbWF0Y2gwBQZYTFNJWkUDCQAAAgIDWFhMBQckbWF0Y2gwBQdYWExTSVpFCQACAQIRVW5rbm93biBsYW5kIHNpemUBB2lzRGlnaXQBAXMJAQlpc0RlZmluZWQBCQC2CQEFAXMBD2dldFJhbmRvbU51bWJlcgMIbWF4VmFsdWUMZmluaXNoSGVpZ2h0CmF1eEVudHJvcHkED3JhbmRvbVNlZWRCbG9jawkBBXZhbHVlAQkA7QcBBQxmaW5pc2hIZWlnaHQECnJhbmRvbUhhc2gJAPcDAQkAywECCQEFdmFsdWUBCAUPcmFuZG9tU2VlZEJsb2NrA3ZyZgUKYXV4RW50cm9weQkAagIJALEJAQUKcmFuZG9tSGFzaAUIbWF4VmFsdWUADWluY3ViYXRvckFkZHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQRWt0VnV4MlJoY2hTTjYzRHNEbzRiNG16NFFxektTZUR2AwkAAAIBAVQFByRtYXRjaDAFBHRoaXMJAAIBAg1Vbmtub3duIGNoYWluAAticmVlZGVyQWRkcgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BEVnVVNDVIN0VoNWRtdE5iblJOUlN0R3dVTEE3Tlk2SGIDCQAAAgEBVAUHJG1hdGNoMAUEdGhpcwkAAgECDVVua25vd24gY2hhaW4AA3B1YgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAMFFktTX1NFUEFSQVRFX1BVQkxJQ19LRVkBIKsXV48VZ+NZVEGw1nLrZpvEo9NmXtWZhlDfmDcfsgkIASBPU+IaP1So1p1SThMdRidVvbNT8yx7yVRUsP9DwbQUKAMJAAACAQFUBQckbWF0Y2gwASBPU+IaP1So1p1SThMdRidVvbNT8yx7yVRUsP9DwbQUKAkAAgECDVVua25vd24gY2hhaW4ADEVNUFRZX1BST0Q1MAGQAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEUZJVkVNSU5VVEVTTUlMTElTAOCnEgAMUkVOQU1JTkdDT1NUAMCWsQIACk1BWE5BTUVMRU4AMgAVSW5mcmFVcGdyYWRlQ29zdFNVc2R0AICt4gQADEVYUE1BVEVSSUFMUwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACm3YLtqwcDCQAAAgEBVAUHJG1hdGNoMACqp4GzCQkAAgECDVVua25vd24gY2hhaW4AB0VYUFVTRFQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAgOWadwMJAAACAQFUBQckbWF0Y2gwAIDlmncJAAIBAg1Vbmtub3duIGNoYWluAAVGSVZFWAkAtgIBAAUAB1RXRU5UWVgJALYCAQAUAAhUV0VOVFkyWAkAtgIBCQBoAgAUABQACFRXRU5UWTNYCQC2AgEJAGgCCQBoAgAUABQAFAAIVFdFTlRZNFgJALYCAQkAaAIJAGgCCQBoAgAUABQAFAAUAAhUV0VOVFk1WAkAtgIBCQBoAgkAaAIJAGgCCQBoAgAUABQAFAAUABQAD1BSRVNBTEVOVU1MQU5EUwD0AwESa2V5TmV4dEZyZWVMYW5kTnVtAAILbmV4dExhbmROdW0BGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQRuYW1lCQCsAgICEWxhbmRCeUN1c3RvbU5hbWVfBQRuYW1lARBrZXlMYW5kVG9Bc3NldElkAQdsYW5kTnVtCQCsAgICDGxhbmRUb0Fzc2V0XwUHbGFuZE51bQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgdhc3NldElkCW93bmVyQWRkcgkArAICCQCsAgIJAKwCAgIcaW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyXwUHYXNzZXRJZAIBXwUJb3duZXJBZGRyARFrZXlMYW5kTnVtVG9Pd25lcgEHbGFuZE51bQkArAICAgpsYW5kT3duZXJfBQdsYW5kTnVtARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEEbmFtZQkArAICAhFkdWNrQnlDdXN0b21OYW1lXwUEbmFtZQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEEbmFtZQkArAICAhRhY2NvdW50QnlDdXN0b21OYW1lXwUEbmFtZQEJa2V5T2xkaWVzAAIKb2xkaWVzTGlzdAALY2xhaW1Nb2RlV2gAAAANY2xhaW1Nb2RlRHVjawABABNjbGFpbU1vZGVXaFRoZW5EdWNrAAIACGZsSGVhbHRoAAAAC2ZsVGltZXN0YW1wAAUAB2ZsQm9udXMABgALZmxQcm9kc1VzZWQABwEHbmZ0TmFtZQIHbGFuZE51bQhsYW5kU2l6ZQkArAICCQCsAgIFCkxBTkRQUkVGSVgFB2xhbmROdW0FCGxhbmRTaXplAQh0b1ZvbHVtZQIGYW1vdW50B3BrZ1NpemUEBHBrZ3MDCQBnAgUGYW1vdW50AAAJAGkCCQBlAgkAZAIFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQEBLQEJAGkCCQBlAgkAZAIJAQEtAQUGYW1vdW50BQdwa2dTaXplAAEFB3BrZ1NpemUJAGgCBQRwa2dzBQVNVUxUOAETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFdG90YWwHd2VpZ2h0cwQDc3VtCQBkAgkAZAIJAGQCCQBkAgkAZAIJAJEDAgUHd2VpZ2h0cwAACQCRAwIFB3dlaWdodHMAAQkAkQMCBQd3ZWlnaHRzAAIJAJEDAgUHd2VpZ2h0cwADCQCRAwIFB3dlaWdodHMABAkAkQMCBQd3ZWlnaHRzAAUDCQBnAgAABQNzdW0JAAIBAhBaZXJvIHdlaWdodHMgc3VtBAVub3JtNgkAawMFBXRvdGFsBQVNVUxUNgUDc3VtCgEKbm9ybWFsaXplcgIDYWNjBGVsZW0JAM0IAgUDYWNjCQBrAwUEZWxlbQUFbm9ybTYFBU1VTFQ2CgACJGwFB3dlaWdodHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCm5vcm1hbGl6ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBEmdldE5lZWRlZE1hdGVyaWFscwEFdG90YWwEBXByb3BzCQC1CQIJAQV2YWx1ZQEJAKIIAQkBEWtleVJlc1Byb3BvcnRpb25zAAIBXwMJAQIhPQIJAJADAQUFcHJvcHMFBk5VTVJFUwkAAgECFldyb25nIHByb3BvcnRpb25zIGRhdGEEAXIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAAJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAEJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAMJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAQJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXByb3BzAAUFA25pbAkBE2Rpc3RyaWJ1dGVCeVdlaWdodHMCBQV0b3RhbAUBcgERc3VidHJhY3RNYXRlcmlhbHMDDHNob3VsZFVzZU1hdANoYXMJdG90YWxOZWVkBARuZWVkCQESZ2V0TmVlZGVkTWF0ZXJpYWxzAQUJdG90YWxOZWVkCgEKc3VidHJhY3RvcgIDYWNjA2lkeAQGcmVzdWx0CQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2hhcwUDaWR4CQCRAwIFBG5lZWQFA2lkeAMJAGYCAAAFBnJlc3VsdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhhOb3QgZW5vdWdoIG1hdGVyaWFsIGlkeD0JAKQDAQUDaWR4AgssIHlvdSBoYXZlIAkAkQMCBQNoYXMFA2lkeAILLCBidXQgbmVlZCAJAKQDAQkAkQMCBQRuZWVkBQNpZHgJAM0IAgUDYWNjCQCkAwEFBnJlc3VsdAMFDHNob3VsZFVzZU1hdAoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKc3VidHJhY3RvcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgUDaGFzARFzdWJ0cmFjdEVxdWlwbWVudAIFb2xkRXEFcFVzZWQDCQAAAgUFcFVzZWQCAAkAlAoCBQVvbGRFcQcKAQdzdWJVc2VkAgNhY2MGaWR4QW10BAVwYXJ0cwkAtQkCBQZpZHhBbXQCASwDCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAihJbmNvcnJlY3QgZm9ybWF0LCBzaG91bGQgYmUgaW5kZXgsYW1vdW50BANpZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAAAwMJAGYCAAAFA2lkeAYJAGcCBQNpZHgJAJADAQUQcHJvZHVjdGlvbk1hdHJpeAkAAgECE1Vua25vd24gcHJvZHVjdCBpZHgEA2FtdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEEB2VxUGFydHMJALUJAggFA2FjYwJfMQkArAICCQCRAwIFBXBhcnRzAAACAToDCQECIT0CCQCQAwEFB2VxUGFydHMAAgkAAgEJAKwCAgkArAICAg9Zb3UgZG9uJ3QgaGF2ZSAJAJEDAgUJcHJvZFR5cGVzBQNpZHgCCSBlcXVpcHBlZAQDdG1wCQCRAwIFB2VxUGFydHMAAQQGbnVtTGVuAwkBB2lzRGlnaXQBCQCvAgIJALACAgUDdG1wAAEAAQACAAEEBGN1cnIJAQ1wYXJzZUludFZhbHVlAQkArwICBQN0bXAFBm51bUxlbgQEdGFpbAkAsAICBQN0bXAFBm51bUxlbgQGbmV3QW10AwkAZwIFBGN1cnIFA2FtdAkAZQIFBGN1cnIFA2FtdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg1Zb3UgZXF1aXBwZWQgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQNpZHgCEywgYnV0IHRyaWVkIHRvIHVzZSAJAKQDAQUDYW10CQCUCgIJAKwCAgkArAICCQCsAgIJAKwCAgkAkQMCBQdlcVBhcnRzAAAJAJEDAgUFcGFydHMAAAIBOgkApAMBBQZuZXdBbXQFBHRhaWwDCAUDYWNjAl8yBgMDCQBnAgUDaWR4AAYJAGcCAAgFA2lkeAcJAAACBQZuZXdBbXQAAAcKAAIkbAkAtQkCBQVwVXNlZAIBXwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUFb2xkRXEHCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzdWJVc2VkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRm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CQEBIQEJAQ9jb250YWluc0VsZW1lbnQCBRBmb3J0QWxsb3dlZFByb2RzBQpwcm9kdWN0SWR4CQACAQkArAICCQCsAgICCVByb2R1Y3QgJwkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgCIScgY2Fubm90IGJlIHVzZWQgZm9yIGxhbmQgZGVmZW5zZQMJAGYCAAAFBWNvdW50CQACAQIXQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmUDCQBmAgUFY291bnQFDU1BWFBST0RJTlNMT1QJAAIBCQCsAgIJAKwCAgkArAICAhRDYW4ndCBwdXQgbW9yZSB0aGFuIAkApAMBBQ1NQVhQUk9ESU5TTE9UAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAMJAAACBQVjb3VudAAACQCVCgMFBXBMaXN0BQhvY2N1cGllZAUEZnJlZQQEaGVhZAkAyQECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAQEY3VycgkAsQkBCQDJAQIJAMoBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgACAQEdGFpbAkAygECBQVwTGlzdAkAaAIACAkAZAIFCnByb2R1Y3RJZHgAAQQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAUKcHJvZHVjdElkeAIBXwMDCQEBIQEFCmlzUG9zaXRpdmUJAGYCBQVjb3VudAUEY3VycgcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJWW91IGhhdmUgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AhMsIGJ1dCB0cmllZCB0byB1c2UgCQCkAwEFBWNvdW50BAZuZXdBbXQDAwkBASEBBQppc1Bvc2l0aXZlCQEVY2hlY2tTdGF0UmVxdWlyZW1lbnRzAgUJZHVja1N0YXRzCQC1CQIJAJEDAgUGcmVjaXBlBRBySWR4UmVxdWlyZW1lbnRzAgEsBwkAZQIFBGN1cnIFBWNvdW50CQBkAgUEY3VycgUFY291bnQECGRlbHRhVm9sCQBlAgkBCHRvVm9sdW1lAgUGbmV3QW10BQ5QUk9EVUNUUEtHU0laRQkBCHRvVm9sdW1lAgUEY3VycgUOUFJPRFVDVFBLR1NJWkUJAJUKAwkAywECCQDLAQIFBGhlYWQJAJoDAQUGbmV3QW10BQR0YWlsCQBkAgUIb2NjdXBpZWQFCGRlbHRhVm9sCQBlAgUEZnJlZQUIZGVsdGFWb2wBCGFkZFByb2RCBwZpZHhDbnQFcExpc3QKaXNQb3NpdGl2ZQdzZWdtZW50B21haW5BdXgEc2xvdAlkdWNrU3RhdHMEBXBhcnRzCQC1CQIFBmlkeENudAIBOgMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKEluY29ycmVjdCBmb3JtYXQsIHNob3VsZCBiZSBpbmRleDphbW91bnQDAwkBASEBBQppc1Bvc2l0aXZlCQECIT0CCQCxAgEJAJEDAgUFcGFydHMAAAACBwkAAgECK1Byb2R1Y3QgaWR4IHNob3VsZCBiZSAyIGRpZ2l0cywgemVybyBwYWRkZWQECnByb2R1Y3RJZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAABAVjb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEDAwkAZgIAAAUKcHJvZHVjdElkeAYJAGcCBQpwcm9kdWN0SWR4CQCQAwEFEHByb2R1Y3Rpb25NYXRyaXgJAAIBAhNVbmtub3duIHByb2R1Y3QgaWR4AwkAZgIAAAUFY291bnQJAAIBAhdDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZQMJAGYCBQVjb3VudAUNTUFYUFJPRElOU0xPVAkAAgEJAKwCAgkArAICCQCsAgICFENhbid0IHB1dCBtb3JlIHRoYW4gCQCkAwEFDU1BWFBST0RJTlNMT1QCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AwkAAAIFBWNvdW50AAAJAJQKAgUFcExpc3QHBARoZWFkCQDJAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4BARjdXJyCQCxCQEJAMkBAgkAygECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAAIBAR0YWlsCQDKAQIFBXBMaXN0CQBoAgAICQBkAgUKcHJvZHVjdElkeAABBAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4BQpwcm9kdWN0SWR4AgFfAwMJAQEhAQUKaXNQb3NpdGl2ZQkAZgIFBWNvdW50BQRjdXJyBwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglZb3UgaGF2ZSAJAKQDAQUEY3VycgIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgCEywgYnV0IHRyaWVkIHRvIHVzZSAJAKQDAQUFY291bnQECWlzQmlnSXRlbQMDCQEBIQEFCmlzUG9zaXRpdmUJARVjaGVja1N0YXRSZXF1aXJlbWVudHMCBQlkdWNrU3RhdHMJALUJAgkAkQMCBQZyZWNpcGUFEHJJZHhSZXF1aXJlbWVudHMCASwHBAZjb21wYXQJAJEDAgUGcmVjaXBlBQlySWR4U2xvdHMDCQAAAgUGY29tcGF0AgAJAAIBAhdJdGVtIGNhbm5vdCBiZSBlcXVpcHBlZAQBYwkBDXBhcnNlSW50VmFsdWUBBQZjb21wYXQEBGNTZWcJAGkCBQFjAGQDCQECIT0CBQdzZWdtZW50BQRjU2VnCQACAQIUU2VnbWVudCBpbmNvbXBhdGlibGUECGNNYWluQXV4CQBpAgkAagIFAWMAZAAKAwkBAiE9AgUHbWFpbkF1eAUIY01haW5BdXgJAAIBAhFTbG90IGluY29tcGF0aWJsZQQJY051bVNsb3RzCQBqAgUBYwAKAwMJAQIhPQIFBHNsb3QAAAkAZgIFCWNOdW1TbG90cwABBwkAAgECHkJpZyBpdGVtcyBzaG91bGQgb2NjdXB5IHNsb3QgMAkAZgIFCWNOdW1TbG90cwABBwkAlAoCCQDLAQIJAMsBAgUEaGVhZAkAmgMBCQBkAgUEY3VycgMFCmlzUG9zaXRpdmUFBWNvdW50CQEBLQEFBWNvdW50BQR0YWlsBQlpc0JpZ0l0ZW0BC3Nsb3RzR3JvdXBCBgFnBGJwSW4KaXNQb3NpdGl2ZQdzZWdtZW50B21haW5BdXgFc3RhdHMDCQECIT0CBQFnAgAEBXNsb3RzCQC1CQIFAWcCASwDCQBmAgkAkAMBBQVzbG90cwUITUFYU0xPVFMJAAIBAhJXcm9uZyBzbG90cyBmb3JtYXQEAnMwCQCRAwIFBXNsb3RzAAAEAnMxAwkAZgIJAJADAQUFc2xvdHMAAQkAkQMCBQVzbG90cwABAgADAwkAAAIFAnMwAgAJAAACBQJzMQIABwUEYnBJbgQFdG1wUzADCQEC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c2VnQnBBdXgCASwAAAMJAAACBQRhdXgwAgAAAAQGaWR4Q250CQC1CQIFBGF1eDACAToEA2lkeAkAkQMCBQZpZHhDbnQAAAQDY250CQCRAwIFBmlkeENudAABAwMDAwMJAAACBQNpZHgCAjA2BgkAAAIFA2lkeAICMDcGCQAAAgUDaWR4AgIwOAkBAiE9AgUDY250AgAHCQBmAgkBDXBhcnNlSW50VmFsdWUBBQNjbnQAAAcJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAkBDXBhcnNlSW50VmFsdWUBBQNpZHgCAV8FCnJJZHhFZmZlY3QAAAQFc3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAUKYnVmZkVmZmVjdAYECG5ld1Byb2RCCQEGZHJlc3NCBAUGY3VyckVxBQl0ZW1wUHJvZEIHBQVzdGF0cwkAAAIFCG5ld1Byb2RCBQhuZXdQcm9kQgEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIcHJvcExpc3QNdGVycmFpbkNvdW50cw1sYW5kU2l6ZUluZGV4BHNpZ24DCQECIT0CCQCQAwEFCHByb3BMaXN0BQZOVU1SRVMJAAIBAhZXcm9uZyBwcm9wb3J0aW9ucyBkYXRhCgEHdXBkYXRlcgIDYWNjAWkEBnJlc3VsdAkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9wTGlzdAUBaQkAaAIJAGgCBQRzaWduCQCRAwIFDXRlcnJhaW5Db3VudHMFAWkFDWxhbmRTaXplSW5kZXgDCQBmAgAABQZyZXN1bHQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICFlBhbmljISBQaWVjZXMgb2YgdHlwZT0JAKQDAQUBaQIHLCBzaWduPQkApAMBBQRzaWduAhMsIHRlcnJhaW5Db3VudHNbaV09CQCkAwEJAJEDAgUNdGVycmFpbkNvdW50cwUBaQIQLCBsYW5kU2l6ZUluZGV4PQkApAMBBQ1sYW5kU2l6ZUluZGV4CQDNCAIFA2FjYwkApAMBBQZyZXN1bHQKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3VwZGF0ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBEXVwZGF0ZVByb3BvcnRpb25zAw10ZXJyYWluQ291bnRzDWxhbmRTaXplSW5kZXgEc2lnbgQIcHJvcExpc3QJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCHByb3BMaXN0BQ10ZXJyYWluQ291bnRzBQ1sYW5kU2l6ZUluZGV4BQRzaWduAgFfAQ1jb3VudFRlcnJhaW5zAQh0ZXJyYWlucwkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFBAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBQgABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUMAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFEAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBRQABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUYAAQUDbmlsAQZhZGRSZXMFCmN1cnJlbnRSZXMNdGVycmFpbkNvdW50cwlkZWx0YVRpbWUNbGFuZFNpemVJbmRleBdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwoBBWFkZGVyAgNhY2MBaQQJcmVzT2ZUeXBlCQBoAgkAaAIJAGsDBQlkZWx0YVRpbWUFF2RhaWx5QnlQaWVjZVdpdGhCb251c2VzBQlEQVlNSUxMSVMJAJEDAgUNdGVycmFpbkNvdW50cwUBaQUNbGFuZFNpemVJbmRleAkAzQgCBQNhY2MJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpjdXJyZW50UmVzBQFpBQlyZXNPZlR5cGUEAXIKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWFkZGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCQC5CQIFAXICAV8BCXZpcnRDbGFpbQQNdGVycmFpbkNvdW50cwlkZWx0YVRpbWUNbGFuZFNpemVJbmRleBdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwoBBWFkZGVyAgNhY2MBaQQJcmVzT2ZUeXBlCQBoAgkAaAIJAGsDBQlkZWx0YVRpbWUFF2RhaWx5QnlQaWVjZVdpdGhCb251c2VzBQlEQVlNSUxMSVMJAJEDAgUNdGVycmFpbkNvdW50cwUBaQUNbGFuZFNpemVJbmRleAkAlAoCCQDNCAIIBQNhY2MCXzEFCXJlc09mVHlwZQkAZAIIBQNhY2MCXzIFCXJlc09mVHlwZQoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWFkZGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAQ1kaXN0cmlidXRlUmVzBAxjdXJyZW50V2hSZXMOY3VycmVudFBhY2tSZXMKcmVzVG9DbGFpbQt3aFNwYWNlTGVmdAQOcmVzTGlzdFRvQ2xhaW0IBQpyZXNUb0NsYWltAl8xBAxyZXNBbVRvQ2xhaW0IBQpyZXNUb0NsYWltAl8yAwkAAAIFDHJlc0FtVG9DbGFpbQAACQCUCgIJALkJAgUMY3VycmVudFdoUmVzAgFfCQC5CQIFDmN1cnJlbnRQYWNrUmVzAgFfAwkAZwIFC3doU3BhY2VMZWZ0BQxyZXNBbVRvQ2xhaW0KAQhhZGRMaXN0cwIDYWNjAWkJAM0IAgUDYWNjCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUMY3VycmVudFdoUmVzBQFpCQCRAwIFDnJlc0xpc3RUb0NsYWltBQFpBAFyCgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhhZGRMaXN0cwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAlAoCCQC5CQIFAXICAV8JALkJAgUOY3VycmVudFBhY2tSZXMCAV8KAQxhZGRQYXJ0TGlzdHMCA2FjYwFpBAZ3aFBhcnQJAGsDCQCRAwIFDnJlc0xpc3RUb0NsYWltBQFpBQt3aFNwYWNlTGVmdAUMcmVzQW1Ub0NsYWltCQCUCgIJAM0IAggFA2FjYwJfMQkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGN1cnJlbnRXaFJlcwUBaQUGd2hQYXJ0CQDNCAIIBQNhY2MCXzIJAKQDAQkAZQIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOY3VycmVudFBhY2tSZXMFAWkJAJEDAgUOcmVzTGlzdFRvQ2xhaW0FAWkFBndoUGFydAQBcgoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDGFkZFBhcnRMaXN0cwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAlAoCCQC5CQIIBQFyAl8xAgFfCQC5CQIIBQFyAl8yAgFfAQNhYnMBAXgDCQDAAgIFAXgJALYCAQAABQF4CQC+AgEFAXgABGZyZXEJAMwIAgkAzAgCAAYJAMwIAgAJCQDMCAIADgkAzAgCAA8JAMwIAgAQBQNuaWwJAMwIAgkAzAgCAAUJAMwIAgAICQDMCAIADQkAzAgCAA4JAMwIAgAPBQNuaWwJAMwIAgkAzAgCAAEJAMwIAgAECQDMCAIACQkAzAgCAAoJAMwIAgAPBQNuaWwJAMwIAgkAzAgCAAEJAMwIAgAGCQDMCAIABwkAzAgCAA8JAMwIAgATBQNuaWwJAMwIAgkAzAgCAAQJAMwIAgAHCQDMCAIACAkAzAgCAA0JAMwIAgASBQNuaWwFA25pbAEHZ2VuQ2hhcgIBbgVmcmVxcwQDcmVtCQCgAwEJALsCAgUBbgUHVFdFTlRZWAQGbGV0dGVyAwkAZgIJAJEDAgUFZnJlcXMAAAUDcmVtAgFBAwkAZgIJAJEDAgUFZnJlcXMAAQUDcmVtAgFCAwkAZgIJAJEDAgUFZnJlcXMAAgUDcmVtAgFDAwkAZgIJAJEDAgUFZnJlcXMAAwUDcmVtAgFEAwkAZgIJAJEDAgUFZnJlcXMABAUDcmVtAgFFAgFGBQZsZXR0ZXIBC2dlblRlcnJhaW5zAgRzZWVkDGNvbnRpbmVudElkeAQBZgkAkQMCBQRmcmVxBQxjb250aW5lbnRJZHgKARB0ZXJyYWluR2VuZXJhdG9yAgNhY2MEZWxlbQkAlAoCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAggFA2FjYwJfMQkBB2dlbkNoYXICCAUDYWNjAl8yBQFmCQEHZ2VuQ2hhcgIJALoCAggFA2FjYwJfMgUHVFdFTlRZWAUBZgkBB2dlbkNoYXICCQC6AgIIBQNhY2MCXzIFCFRXRU5UWTJYBQFmCQEHZ2VuQ2hhcgIJALoCAggFA2FjYwJfMgUIVFdFTlRZM1gFAWYJAQdnZW5DaGFyAgkAugICCAUDYWNjAl8yBQhUV0VOVFk0WAUBZgkA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dmVscwkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAndoBQh3aElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAndoBQh3aElkeFJlcwILMF8wXzBfMF8wXzAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQJ3aAUId2hJZHhNYXQCAV8FBk5VTVJFUwkAkQMCBQJ3aAUId2hJZHhNYXQCCzBfMF8wXzBfMF8wCQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCBQZ3aExvZnQFA25pbAEVZ2V0V2FyZWhvdXNlU3BhY2VMZWZ0AQljdXJyZW50V2gEC29jY3VwaWVkVm9sCQEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBBQljdXJyZW50V2gED2N1cnJXaExvY2tlZFZvbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkCQBlAgkAZQIJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwULb2NjdXBpZWRWb2wFD2N1cnJXaExvY2tlZFZvbAEJbW92ZVN0dWZmAwpjYXJnb1BhcnRzCWN1cnJlbnRXaAtjdXJyZW50UGFjawMJAQIhPQIJAJADAQUKY2FyZ29QYXJ0cwADCQACAQI0Y2FyZ29MaXN0U3RyIHNob3VsZCBjb250YWluIGV4YWN0bHkgMiAnOicgc2VwYXJhdG9ycwQIcmVzUGFydHMJALUJAgkAkQMCBQpjYXJnb1BhcnRzAAACAV8ECG1hdFBhcnRzCQC1CQIJAJEDAgUKY2FyZ29QYXJ0cwABAgFfBAlwcm9kUGFydHMDCQAAAgkAkQMCBQpjYXJnb1BhcnRzAAICAAUDbmlsCQC8CQIJAJEDAgUKY2FyZ29QYXJ0cwACAgFfAwkBAiE9AgkAkAMBBQhyZXNQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgcmVzb3VyY2VzIHNob3VsZCBiZSBwYXNzZWQDCQECIT0CCQCQAwEFCG1hdFBhcnRzBQZOVU1SRVMJAAIBAiBBbGwgNiBtYXRlcmlhbHMgc2hvdWxkIGJlIHBhc3NlZAQLd2hTcGFjZUxlZnQJARVnZXRXYXJlaG91c2VTcGFjZUxlZnQBBQljdXJyZW50V2gECWN1cnJXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8ECWN1cnJXaE1hdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8ECmN1cnJXaFByb2QDCQAAAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIBXwQOY3VycmVudFBhY2tSZXMJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDmN1cnJlbnRQYWNrTWF0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBA9jdXJyZW50UGFja1Byb2QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8KAQNtdlICA2FjYwRpdGVtBAFpCAUDYWNjAl8xBAJhbQkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAN3aHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQljdXJyV2hSZXMFAWkEA2JwcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpAwkAAAIFAmFtAAAJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCRAwIFCWN1cnJXaFJlcwUBaQkAzQgCCAUDYWNjAl8zCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpCAUDYWNjAl80AwkAZgIFAmFtAAADCQBmAgUCYW0FA2JwcgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAUEaXRlbQIZIGZyb20gYmFja3BhY2ssIGJ1dCBvbmx5IAkApAMBBQNicHICCiBhdmFpbGFibGUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aHIFAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwcgUCYW0JAGQCCAUDYWNjAl80BQJhbQMJAGYCCQEBLQEFAmFtBQN3aHIJAAIBCQCsAgIJ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BQVGSVZFWAQIdGVycmFpbnMJAQtnZW5UZXJyYWlucwIFBmJpZ051bQUMY29udGluZW50SWR4BAljb250aW5lbnQJAJEDAgUKY29udGluZW50cwUMY29udGluZW50SWR4BAVpc3N1ZQkAwggFCQEHbmZ0TmFtZQIFB2xhbmROdW0CAVMJALkJAgkAzAgCBQdsYW5kTnVtCQDMCAICAVMJAMwIAgUIdGVycmFpbnMJAMwIAgUJY29udGluZW50BQNuaWwCAV8AAQAABwQHYXNzZXRJZAkAuAgBBQVpc3N1ZQQCaWQJANgEAQUHYXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFB2ZyZWVOdW0AAQkAzAgCBQVpc3N1ZQkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5TGFuZFRvQXNzZXRJZAEFB2xhbmROdW0FAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQJpZAUIdXNlckFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUIdXNlckFkZHIJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQUCaWQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFAmlkBQh1c2VyQWRkcgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgABBQdhc3NldElkBQNuaWwJAJQKAgUCaWQFCWNvbnRpbmVudAEMZmxpZ2h0Q29tbW9uAwh1c2VyQWRkcgdtZXNzYWdlA3NpZwMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAQFcGFydHMJALUJAgkAsAkBBQdtZXNzYWdlAgE7BAlmbGlnaHRMb2cJALUJAgkAkQMCBQVwYXJ0cwAAAgF8BAJocAkAtQkCCQCRAwIFCWZsaWdodExvZwUIZmxIZWFsdGgCAV8EBWN1ckhQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAAQFbmV3SFAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJocAABBAtuZXdMb2NUeFZlcgkAtQkCCQCRAwIFBXBhcnRzAAECAToEC25ld0xvY2F0aW9uCQCRAwIFC25ld0xvY1R4VmVyAAAEBHRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlmbGlnaHRMb2cFC2ZsVGltZXN0YW1wAwMJAGYCBQR0aW1lCQBkAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBgkAZgIJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAURRklWRU1JTlVURVNNSUxMSVMFBHRpbWUJAAIBCQCsAgIJAKwCAgkArAICAhxzaWduYXR1cmUgb3V0ZGF0ZWQ6IGxvZ1RpbWU9CQCkAwEFBHRpbWUCCSwgYmNUaW1lPQkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJdHhGcm9tTXNnCQCRAwIFC25ld0xvY1R4VmVyAAEEBmxhc3RUeAkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5TGFzdFR4SWRCeVVzZXIBBQh1c2VyQWRkcgIAAwkBAiE9AgUGbGFzdFR4BQl0eEZyb21Nc2cJAAIBCQCsAgIJAKwCAgkArAICAh5UeCBpZHMgZG9uJ3QgbWF0Y2ghIEluIHN0YXRlOiAFBmxhc3RUeAIKLCBpbiBtc2c6IAUJdHhGcm9tTXNnBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQMb2xkRnJvbVN0YXRlCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQECIT0CBQxvbGRGcm9tU3RhdGUFBWN1ckhQCQACAQkArAICCQCsAgIJAKwCAgIKb2xkSGVhbHRoPQkApAMBBQxvbGRGcm9tU3RhdGUCLyBmcm9tIHN0YXRlIGRvZXMgbm90IG1hdGNoIG9uZSBmcm9tIGZsaWdodCBsb2c9CQCkAwEFBWN1ckhQAwkAZwIAAAUFY3VySFAJAAIBAh5Zb3UgY2FuJ3QgZmx5IHdpdGggemVybyBoZWFsdGgDCQEBIQEJARdjYW5XZWFyQ3VycmVudEVxdWlwbWVudAEFC2R1Y2tBc3NldElkCQACAQIWRXF1aXBtZW50IGluY29tcGF0aWJsZQQFYm9udXMDCQBmAgkAkAMBBQlmbGlnaHRMb2cFB2ZsQm9udXMJAJEDAgUJZmxpZ2h0TG9nBQdmbEJvbnVzAgAECHByb2RVc2VkAwkAZgIJAJADAQUJZmxpZ2h0TG9nBQtmbFByb2RzVXNlZAkAkQMCBQlmbGlnaHRMb2cFC2ZsUHJvZHNVc2VkAgAECnNlbnRBbW91bnQDAwkAZgIFBW5ld0hQAAAJAAACBQVib251cwIBJAcJAQVhc0ludAEJAPwHBAUMcmVzdENvbnRyYWN0Ag1zZW5kVXNkdFByaXplCQDMCAIFCHVzZXJBZGRyBQNuaWwFA25pbAAACQCXCgUFBW5ld0hQBQtkdWNrQXNzZXRJZAUKc2VudEFtb3VudAULbmV3TG9jYXRpb24FCHByb2RVc2VkARBleHBlZGl0aW9uQ29tbW9uBAZjYWxsZXIEdHhJZAdtZXNzYWdlA3NpZwQIdXNlckFkZHIJAKUIAQUGY2FsbGVyBAFmCQEMZmxpZ2h0Q29tbW9uAwUIdXNlckFkZHIFB21lc3NhZ2UFA3NpZwQLZHVja0Fzc2V0SWQIBQFmAl8yBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVtTGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMGBQVtTGlzdAUMRVhQTUFURVJJQUxTAgFfBAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQJY3VycmVudEVxCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAQNJHQwMzM5MDMzNDAwMAkBEXN1YnRyYWN0RXF1aXBtZW50AgUJY3VycmVudEVxCAUBZgJfNQQFbmV3RXEIBQ0kdDAzMzkwMzM0MDAwAl8xBA9zaG91bGRaZXJvQnVmZnMIBQ0kdDAzMzkwMzM0MDAwAl8yAwkAZwIAAAgFAWYCXzEJAJUKAwkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxBQNuaWwCAAAABAFlCQESZXhwZWRpdGlvbkludGVybmFsAgUGY2FsbGVyBQR0eElkBAJpZAgIBQFlAl8yAl8xCQCVCgMJAM4IAggFAWUCXzEDBQ9zaG91bGRaZXJvQnVmZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzAFA25pbAkAzQgCCQDNCAIJAM0IAgkAzQgCBQNuaWwJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIICAUBZQJfMgJfMgkAzAgCAgFMCQDMCAIFAmlkBQNuaWwCAV8JAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgIBQFmAl8xCQELU3RyaW5nRW50cnkCBQVlcUtleQUFbmV3RXEJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToFAmlkCAUBZgJfMwEMYXBwbHlCb251c2VzAgtsYW5kQXNzZXRJZAZwaWVjZXMECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAlhcnRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQAAAQEYWRkNgkAaQIFCmluZnJhTGV2ZWwABgQEYWRkNwkAaQIFCmluZnJhTGV2ZWwABwkAZAIJAGQCBQ9EQUlMWVJFU0JZUElFQ0UJAGsDBQ9EQUlMWVJFU0JZUElFQ0UJAGQCCQBkAgUKaW5mcmFMZXZlbAUEYWRkNgkAaAIAAgUEYWRkNwAFCQBrAwUPREFJTFlSRVNCWVBJRUNFBQlhcnRQaWVjZXMJAGgCBQZwaWVjZXMABQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBGFkZHIJY2xhaW1Nb2RlDWxhbmRBc3NldElkSW4EDSR0MDM1MjIwMzU3NTkDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAlAoCBQ1sYW5kQXNzZXRJZEluCQELdmFsdWVPckVsc2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMCQCUCgIJAJEDAgUDbG9jBQhsb2NJZHhJZAULZHVja0Fzc2V0SWQEC2xhbmRBc3NldElkCAUNJHQwMzUyMjAzNTc1OQJfMQQGZHVja0lkCAUNJHQwMzUyMjAzNTc1OQJfMgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUHdGltZUtleQkArAICCQCsAgICBUxhbmQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwkAlgoEBQZkdWNrSWQFC2xhbmRBc3NldElkBQFkBQlzYXZlZFRpbWUBEGNsYWltUmVzSW50ZXJuYWwEBGFkZHIGYW1vdW50CWNsYWltTW9kZQ1sYW5kQXNzZXRJZEluAwkAZgIAAAUGYW1vdW50CQACAQIPTmVnYXRpdmUgYW1vdW50BAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBQljbGFpbU1vZGUFDWxhbmRBc3NldElkSW4ECGxhbmRTaXplCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIIBQFjAl8zBQtyZWNUZXJyYWlucwQJZGVsdGFUaW1lCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAIBQFjAl80AwkAZgIAAAUJZGVsdGFUaW1lCQACAQkArAICCQCsAgIJAKwCAgImU2F2ZWQgdGltZXN0YW1wIGlzIGluIGZ1dHVyZSwgc2F2ZWQgPSAJAKQDAQgFAWMCXzQCDCwgY3VycmVudCA9IAkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUEFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQxhcHBseUJvbnVzZXMCCAUBYwJfMgUGcGllY2VzBAhhdmFpbFJlcwkAawMFCWRlbHRhVGltZQkAaAIFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UFBnBpZWNlcwUJREFZTUlMTElTAwkAZgIFBmFtb3VudAUIYXZhaWxSZXMJAAIBCQCsAgIJAKwCAgkArAICAiJOb3QgZW5vdWdoIHJlc291cmNlcywgYXZhaWxhYmxlID0gCQCkAwEFCGF2YWlsUmVzAg4sIHJlcXVlc3RlZCA9IAkApAMBBQZhbW91bnQEDG5ld0RlbHRhVGltZQkAawMJAGUCBQhhdmFpbFJlcwUGYW1vdW50BQlEQVlNSUxMSVMJAGgCBRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBQZwaWVjZXMEDG5ld1RpbWVzdGFtcAkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQxuZXdEZWx0YVRpbWUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUECnJlc1RvQ2xhaW0JAQl2aXJ0Q2xhaW0EBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBCAUBYwJfMgQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEIBQFjAl8yAAAECWN1cnJlbnRXaAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBGxvZnQJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwQLd2hTcGFjZUxlZnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlAwMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQBmAgUGYW1vdW50BQt3aFNwYWNlTGVmdAcJAAIBCQCsAgIJAKwCAgIFT25seSAJAKQDAQULd2hTcGFjZUxlZnQCGCBzcGFjZSBsZWZ0IGluIHdhcmVob3VzZQQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEIBQFjAl8xBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEDmN1cnJlbnRQYWNrUmVzCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBAxjdXJyZW50V2hSZXMJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfBA0kdDAzODEzMzM5MDA0AwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAJYKBAkBBmFkZFJlcwUFDGN1cnJlbnRXaFJlcwUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCAUKcmVzVG9DbGFpbQJfMgkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCAUKcmVzVG9DbGFpbQJfMgMJAAACBQljbGFpbU1vZGUFDWNsYWltTW9kZUR1Y2sJAJYKBAkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzCQEGYWRkUmVzBQUOY3VycmVudFBhY2tSZXMFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBAVkaXN0cgkBDWRpc3RyaWJ1dGVSZXMEBQxjdXJyZW50V2hSZXMFDmN1cnJlbnRQYWNrUmVzBQpyZXNUb0NsYWltBQt3aFNwYWNlTGVmdAQEd2hBbQkAlwMBCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlCQDMCAIIBQpyZXNUb0NsYWltAl8yBQNuaWwJAJYKBAgFBWRpc3RyAl8xCAUFZGlzdHICXzIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQFBHdoQW0JAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQUEd2hBbQQFd2hSZXMIBQ0kdDAzODEzMzM5MDA0Al8xBAVicFJlcwgFDSR0MDM4MTMzMzkwMDQCXzIEBWxvZnRPCAUNJHQwMzgxMzMzOTAwNAJfMwQFbG9mdEYIBQ0kdDAzODEzMzM5MDA0Al80CQCXCgUJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQgFAWMCXzIFDG5ld1RpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYCAUBYwJfMgUEYWRkcgUMbmV3VGltZXN0YW1wBQNuaWwFBWJwS2V5CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgUFYnBSZXMJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwFBXdoS2V5CQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCBQV3aFJlcwkAzAgCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQJAMwIAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAkAzAgCCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAJEDAgUEbG9mdAUIdm9sVG90YWwFA25pbAIBXwUDbmlsAQhjbGFpbUFsbAQEYWRkcgtsYW5kQXNzZXRJZAZwaWVjZXMJY2xhaW1Nb2RlBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJAQV2YWx1ZQEJAJ8IAQUHdGltZUtleQQIYXZhaWxSZXMJAGgCCQBrAwkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQlzYXZlZFRpbWUJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBQlEQVlNSUxMSVMFBnBpZWNlcwkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQhhdmFpbFJlcwUJY2xhaW1Nb2RlBQtsYW5kQXNzZXRJZAENdXBJbmZyYUNvbW1vbgQMc2hvdWxkVXNlTWF0BmNhbGxlcg1wYXltZW50QW1vdW50C2xhbmRBc3NldElkBARhZGRyCQClCAEFBmNhbGxlcgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUTY2xhaW1Nb2RlV2hUaGVuRHVjawULbGFuZEFzc2V0SWQEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBAhpbmZyYUtleQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBCAUBYwJfMgQIY3VyTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUIaW5mcmFLZXkAAAMDCQEBIQEFGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQkAZwIFCGN1ckxldmVsAAMHCQACAQImQ3VycmVudGx5IG1heCBpbmZyYXN0cnVjdHVyZSBsZXZlbCA9IDMECG1heEluZnJhCQBkAgkAaQIJAQRzcXJ0BAUGcGllY2VzAAAAAAUERE9XTgAFAAIECG5ld0xldmVsCQBkAgUIY3VyTGV2ZWwAAQMDBRhLU19BTExPV19CSUdfSU5GUkFfTUVSR0UJAGYCBQhuZXdMZXZlbAUIbWF4SW5mcmEHCQACAQkArAICAiVDdXJyZW50bHkgbWF4IGluZnJhc3RydWN0dXJlIGxldmVsID0gCQCkAwEFCG1heEluZnJhBARjb3N0CQBrAwUVSW5mcmFVcGdyYWRlQ29zdFNVc2R0CQBoAgUGcGllY2VzBQhuZXdMZXZlbAUFU1NJWkUDAwkBASEBBQxzaG91bGRVc2VNYXQJAQIhPQIFDXBheW1lbnRBbW91bnQFBGNvc3QHCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUEY29zdAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEIBQFjAl8xBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW1MaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBAdtYXRVc2VkCQBrAwURSW5mcmFVcGdyYWRlQ29zdFMJAGgCBQZwaWVjZXMFCG5ld0xldmVsBQVTU0laRQQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMFDHNob3VsZFVzZU1hdAUFbUxpc3QFB21hdFVzZWQCAV8EC2NsYWltUmVzdWx0CQEIY2xhaW1BbGwEBQRhZGRyCAUBYwJfMgUGcGllY2VzBRNjbGFpbU1vZGVXaFRoZW5EdWNrBAZ3aERhdGEIBQtjbGFpbVJlc3VsdAJfNQQGb2xkVm9sCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFBndoRGF0YQULd2hJZHhMZXZlbHMECm5ld1ZvbERhdGEJALkJAgkAzAgCCQCRAwIJALUJAgkAkQMCBQZ3aERhdGEFC3doSWR4TGV2ZWxzAgFfAAAJAMwIAgkApAMBBQhuZXdMZXZlbAUDbmlsAgFfBAZuZXdWb2wJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEFCm5ld1ZvbERhdGEEBGxvZnQJALUJAgkAkQMCBQZ3aERhdGEFCXdoSWR4TE9GVAIBXwQKbmV3TG9mdFN0cgkAuQkCCQDMCAIJAJEDAgUEbG9mdAUJdm9sTG9ja2VkCQDMCAIJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQJAMwIAgkApAMBCQBlAgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBQZuZXdWb2wFBm9sZFZvbAkAzAgCCQCkAwEFBm5ld1ZvbAUDbmlsAgFfCQCVCgMJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUIaW5mcmFLZXkFCG5ld0xldmVsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAggFAWMCXzIFBGFkZHIFCG5ld0xldmVsCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIIBQtjbGFpbVJlc3VsdAJfMwUIYnBJZHhSZXMJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfNAkAuQkCCQDMCAIFCm5ld1ZvbERhdGEJAMwIAgkAkQMCBQZ3aERhdGEFCHdoSWR4UmVzCQDMCAIJAJEDAgUGd2hEYXRhBQh3aElkeE1hdAkAzAgCCQCRAwIFBndoRGF0YQUJd2hJZHhQcm9kCQDMCAIFCm5ld0xvZnRTdHIFA25pbAIBOgUDbmlsCAULY2xhaW1SZXN1bHQCXzEFCG5ld0xldmVsBQdtYXRVc2VkARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAILZHVja0Fzc2V0SWQHZGVsdGFYUAQGbHZsS2V5CQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQEBXhwS2V5CQEJa2V5RHVja1hQAQULZHVja0Fzc2V0SWQEAnhwCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAUFeHBLZXkAAAQFbmV3WFAJAGQCBQJ4cAUHZGVsdGFYUAQJbHZsUG9pbnRzCQEHbGV2ZWxVcAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0BQZsdmxLZXkAAAUFbmV3WFAECWtleVBvaW50cwkBEWtleUR1Y2tGcmVlUG9pbnRzAQULZHVja0Fzc2V0SWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUGbHZsS2V5CQCRAwIFCWx2bFBvaW50cwAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQV4cEtleQUFbmV3WFAJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleVBvaW50cwkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5UG9pbnRzAAAJAJEDAgUJbHZsUG9pbnRzAAEFA25pbAUFbmV3WFABFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBGFkZHIHZGVsdGFYUAQGbHZsS2V5CQEMa2V5VXNlckxldmVsAQUEYWRkcgQFeHBLZXkJAQlrZXlVc2VyWFABBQRhZGRyBAJ4cAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QFBXhwS2V5AAAEBW5ld1hQCQBkAgUCeHAFB2RlbHRhWFAECWx2bFBvaW50cwkBB2xldmVsVXACCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAUGbHZsS2V5AAAFBW5ld1hQBAlrZXlQb2ludHMJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUGbHZsS2V5CQCRAwIFCWx2bFBvaW50cwAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQV4cEtleQUFbmV3WFAJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleVBvaW50cwkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5UG9pbnRzAAAJAJEDAgUJbHZsUG9pbnRzAAEFA25pbAUFbmV3WFABEmFjdGl2YXRlT25ib2FyZEFydAEEYWRkcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAhyZWZCeUtleQkBD2tleUFkZHJlc3NSZWZCeQEFBGFkZHIEBXJlZkJ5CQCiCAEFCHJlZkJ5S2V5AwkBASEBCQEJaXNEZWZpbmVkAQUFcmVmQnkJAAIBAilZb3UgYXJlIG5vdCBlbGlnaWJsZSBmb3IgT05CT0FSRCBhcnRpZmFjdAQGYXJ0S2V5CQEca2V5T25ib2FyZEFydER1Y2tBY3RpdmF0ZWRCeQEFBGFkZHIEB2FydER1Y2sJAKIIAQUGYXJ0S2V5AwkBCWlzRGVmaW5lZAEFB2FydER1Y2sJAAIBCQCsAgICL1lvdSBhbHJlYWR5IHVzZWQgeW91ciBPTkJPQVJEIGFydGlmYWN0IG9uIGR1Y2sgCQEFdmFsdWUBBQdhcnREdWNrBBBkdWNrQWN0aXZhdG9yS2V5CQEca2V5T25ib2FyZEFydEFjdGl2YXRlZE9uRHVjawEFC2R1Y2tBc3NldElkBA1kdWNrQWN0aXZhdG9yCQCiCAEFEGR1Y2tBY3RpdmF0b3JLZXkDCQEJaXNEZWZpbmVkAQUNZHVja0FjdGl2YXRvcgkAAgEJAKwCAgkArAICCQCsAgICCVRoZSBkdWNrIAULZHVja0Fzc2V0SWQCNCBhbHJlYWR5IGdvdCBwb2ludHMgZnJvbSBPTkJPQVJEIGFydGlmYWN0IGZyb20gdXNlciAJAQV2YWx1ZQEFDWR1Y2tBY3RpdmF0b3IJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZhcnRLZXkFC2R1Y2tBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIFEGR1Y2tBY3RpdmF0b3JLZXkFBGFkZHIFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQl4cE9uYm9hcmQCXzEBEmFjdGl2YXRlUHJlc2FsZUFydAIEYWRkcg1sYW5kQXNzZXRJZEluBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBRNjbGFpbU1vZGVXaFRoZW5EdWNrBQ1sYW5kQXNzZXRJZEluBAtsYW5kQXNzZXRJZAgFAWMCXzIEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBA1hY3RpdmF0aW9uS2V5CQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAMJAGYCCQELdmFsdWVPckVsc2UCCQCfCAEFDWFjdGl2YXRpb25LZXkAAAAACQACAQIlUHJlc2FsZSBhcnRpZmFjdCBpcyBhbHJlYWR5IGFjdGl2YXRlZAMJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAggFAWMCXzMFCnJlY0xhbmROdW0FD1BSRVNBTEVOVU1MQU5EUwkAAgEJAKwCAgkArAICCQCsAgIFCkxBTkRQUkVGSVgCASAFC2xhbmRBc3NldElkAiUgaXMgbm90IGVsaWdpYmxlIGZvciBwcmVzYWxlIGFydGlmYWN0BAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcgULbGFuZEFzc2V0SWQFBnBpZWNlcwUTY2xhaW1Nb2RlV2hUaGVuRHVjawkAzQgCCQDNCAIJAM0IAggFC2NsYWltUmVzdWx0Al8xCQEMSW50ZWdlckVudHJ5AgUNYWN0aXZhdGlvbktleQUGcGllY2VzCQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzIJALkJAggFC2NsYWltUmVzdWx0Al8zAgE6CQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzQJALkJAggFC2NsYWltUmVzdWx0Al81AgE6AQ9jaGVja1RvdXJuYW1lbnQBC2R1Y2tBc3NldElkBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBXREYXRhCQELZ2V0VG91ckRhdGECBRJ0b3VybmFtZW50Q29udHJhY3QFBmxhc3RJZAQGc3RhdGljCQCRAwIFBXREYXRhBQlpZHhTdGF0aWMEB2R5bmFtaWMJAJEDAgUFdERhdGEFCmlkeER5bmFtaWMDCQECIT0CCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlAgFUBwMDAwkAAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUPbG9jSWR4Q29udGluZW50BQZsYXN0SWQJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcJAAIBAipZb3VyIGR1Y2sgaXMgdGFraW5nIHBhcnQgaW4gdGhlIHRvdXJuYW1lbnQJAQlhc0Jvb2xlYW4BCQD8BwQFBHRoaXMCFmV4aXRUb3VybmFtZW50SW50ZXJuYWwJAMwIAgULZHVja0Fzc2V0SWQFA25pbAUDbmlsAQ1tZXJnZUludGVybmFsBgtuZXdMYW5kU2l6ZQhuZXdMZXZlbAdmb3JtdWxhBGFkZHIMbGFuZEFzc2V0SWRzB25lZWRNYXQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECHW1lcmdlSW50ZXJuYWxfY2hlY2tUb3VybmFtZW50CgEKY2hlY2tNZXJnZQIDYWNjC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQd0aW1lS2V5CQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8ECWNvbnRpbmVudAkAkQMCBQFkBQxyZWNDb250aW5lbnQDAwkBAiE9AggFA2FjYwJfMwIACQECIT0CCAUDYWNjAl8zBQljb250aW5lbnQHCQACAQIuTGFuZHMgc2hvdWxkIGJlIG9uIHRoZSBzYW1lIGNvbnRpbmVudCB0byBtZXJnZQQIbGFuZFNpemUJAJEDAgUBZAULcmVjTGFuZFNpemUEB3NpemVzSW4IBQNhY2MCXzEEAWkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAswkCBQdzaXplc0luBQhsYW5kU2l6ZQInWW91IGhhdmVuJ3QgcGFzc2VkIGFsbCB0aGUgbGFuZHMgbmVlZGVkBAhzaXplc091dAkArAICCQCvAgIFB3NpemVzSW4FAWkJALACAgUHc2l6ZXNJbgkAZAIFAWkAAQQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUEBGFydHMJAGQCCAUDYWNjAl8yCQELdmFsdWVPckVsc2UCCQCfCAEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAAAECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAhyZXFMZXZlbAQHJG1hdGNoMAUIbGFuZFNpemUDCQAAAgIBUwUHJG1hdGNoMAADAwkAAAICAU0FByRtYXRjaDAABAMJAAACAgFMBQckbWF0Y2gwAAUDCQAAAgICWEwFByRtYXRjaDAABgkAAgECGk9ubHkgUywgTSwgTCwgWEwgY2FuIG1lcmdlAwkBAiE9AgUKaW5mcmFMZXZlbAUIcmVxTGV2ZWwJAAIBAiJBbGwgbGFuZHMgc2hvdWxkIGJlIG1heGVkIHRvIG1lcmdlBAdsYW5kTnVtCQCRAwIFAWQFCnJlY0xhbmROdW0EDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQJZGVsdGFUaW1lCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCXNhdmVkVGltZQMJAGYCAAAFCWRlbHRhVGltZQkAAgEJAKwCAgkArAICCQCsAgICJlNhdmVkIHRpbWVzdGFtcCBpcyBpbiBmdXR1cmUsIHNhdmVkID0gCQCkAwEFCXNhdmVkVGltZQIMLCBjdXJyZW50ID0gCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBBZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFYnBSZXMJAQZhZGRSZXMFCQC1CQIIBQNhY2MCXzQCAV8FDXRlcnJhaW5Db3VudHMFCWRlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBAVwcm9wcwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjAl82BQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQGY1Byb3BzCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIBQNhY2MDXzEwBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQLc3VtVGVycmFpbnMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwJfOQUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAEEBWxhbmRzCAUDYWNjAl83BANpZHgJAM8IAgUFbGFuZHMFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQUDaWR4CQACAQkArAICAiBZb3VyIHN0YWtlZCBsYW5kcyBkb24ndCBjb250YWluIAULbGFuZEFzc2V0SWQECWN1c3RvbUtleQkBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQULbGFuZEFzc2V0SWQECmN1c3RvbU5hbWUJAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VzdG9tS2V5AgAJAJwKCgUIc2l6ZXNPdXQFBGFydHMFCWNvbnRpbmVudAUFYnBSZXMJAM4IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIIBQNhY2MCXzUJAQtEZWxldGVFbnRyeQEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFBGFkZHIJAQtEZWxldGVFbnRyeQEJARBrZXlMYW5kVG9Bc3NldElkAQUHbGFuZE51bQkBC0RlbGV0ZUVudHJ5AQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgULbGFuZEFzc2V0SWQFBGFkZHIJAQtEZWxldGVFbnRyeQEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQERa2V5TGFuZE51bVRvT3duZXIBBQdsYW5kTnVtCQELRGVsZXRlRW50cnkBCQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEFCWN1c3RvbUtleQkBBEJ1cm4CCQDZBAEFC2xhbmRBc3NldElkAAEDCQECIT0CBQpjdXN0b21OYW1lAgAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQUDbmlsBQNuaWwFBXByb3BzCQDRCAIFBWxhbmRzCQEFdmFsdWUBBQNpZHgJAGQCCAUDYWNjAl84BQZwaWVjZXMFC3N1bVRlcnJhaW5zBQZjUHJvcHMEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9wTGlzdAkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJARFrZXlSZXNQcm9wb3J0aW9ucwACCzBfMF8wXzBfMF8wAgFfBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFBGFkZHIECGxhbmRzU3RyCQCiCAEFCGxhbmRzS2V5BAdsYW5kc0luAwkBCWlzRGVmaW5lZAEFCGxhbmRzU3RyCQC9CQIJAQV2YWx1ZQEFCGxhbmRzU3RyAgFfBQNuaWwEBWNvbnQwCQCRAwIJALUJAggJAQV2YWx1ZQEJAOwHAQkA2QQBCQCRAwIFDGxhbmRBc3NldElkcwAAC2Rlc2NyaXB0aW9uAgFfBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQUFY29udDACCzBfMF8wXzBfMF8wAgFfBAFyCgACJGwFDGxhbmRBc3NldElkcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJwKCgUHZm9ybXVsYQAAAgAJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzBQNuaWwFCHByb3BMaXN0BQdsYW5kc0luAAAJALUJAgILMF8wXzBfMF8wXzACAV8FCWNvbnRQcm9wcwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKY2hlY2tNZXJnZQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUECWNvbnRpbmVudAgFAXICXzMEDGNvbnRpbmVudElkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDPCAIFCmNvbnRpbmVudHMFCWNvbnRpbmVudAkArAICAhNVbmtub3duIGNvbnRpbmVudDogBQljb250aW5lbnQECHRlcnJhaW5zCQETZ2VuVGVycmFpbnNGb3JNZXJnZQIIBQFyAl85CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEFC25ld0xhbmRTaXplBQVTU0laRQQHZnJlZU51bQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFD1BSRVNBTEVOVU1MQU5EUwABBApuZXdMYW5kTnVtCQCkAwEFB2ZyZWVOdW0EBWlzc3VlCQDCCAUJAQduZnROYW1lAgUKbmV3TGFuZE51bQULbmV3TGFuZFNpemUJALkJAgkAzAgCBQpuZXdMYW5kTnVtCQDMCAIFC25ld0xhbmRTaXplCQDMCAIFCHRlcnJhaW5zCQDMCAIFCWNvbnRpbmVudAUDbmlsAgFfAAEAAAcEB2Fzc2V0SWQJALgIAQUFaXNzdWUEDm5ld0xhbmRBc3NldElkCQDYBAEFB2Fzc2V0SWQEBm5ld01hdAkAuQkCCQERc3VidHJhY3RNYXRlcmlhbHMDCQBmAgUHbmVlZE1hdAAACQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBQduZWVkTWF0AgFfBAlwaWVjZXNLZXkJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUEYWRkcgQMc3Rha2VkUGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEFCXBpZWNlc0tleQAACQCUCgIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIIBQFyAl81AwkAZgIJAJADAQgFAXICXzcAAAkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAggFAXICXzcCAV8JAQtEZWxldGVFbnRyeQEFCGxhbmRzS2V5CQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5AwkAZgIIBQFyAl84BQxzdGFrZWRQaWVjZXMAAAkAZQIFDHN0YWtlZFBpZWNlcwgFAXICXzgJAQxJbnRlZ2VyRW50cnkCCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFB2ZyZWVOdW0AAQUFaXNzdWUJAQtTdHJpbmdFbnRyeQIJARBrZXlMYW5kVG9Bc3NldElkAQUKbmV3TGFuZE51bQUObmV3TGFuZEFzc2V0SWQJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQ5uZXdMYW5kQXNzZXRJZAUEYWRkcgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUKbmV3TGFuZE51bQUEYWRkcgkBDEludGVnZXJFbnRyeQIJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFDm5ld0xhbmRBc3NldElkCAUBcgJfMgkBDEludGVnZXJFbnRyeQIJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQUObmV3TGFuZEFzc2V0SWQFCG5ld0xldmVsCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFDm5ld0xhbmRBc3NldElkBQRhZGRyBQhuZXdMZXZlbAkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIIBQFyAl80CQDMCAIFBm5ld01hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAkAuQkCCAUBcgJfNgIBXwkBC1N0cmluZ0VudHJ5AgkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBBQljb250aW5lbnQJALkJAggFAXIDXzEwAgFfCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQJALkJAgkAzAgCBQljb250aW5lbnQJAMwIAgIBTAkAzAgCBQ5uZXdMYW5kQXNzZXRJZAUDbmlsAgFfCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQRhZGRyAAEFB2Fzc2V0SWQFDm5ld0xhbmRBc3NldElkAQNzMm0CBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAU0AAwIEU1NTUwUEYWRkcgUMbGFuZEFzc2V0SWRzAAABA20ybAIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgIBTAAEAgNTTU0FBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTAAQBBGwyeGwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAlhMAAUCBVNTU01MBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwAvAQZ4bDJ4eGwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCA1hYTAAGAgNMWEwFBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTADYBC21lcmdlQ29tbW9uAgRhZGRyDGxhbmRBc3NldElkcwQHJG1hdGNoMAkAkAMBBQxsYW5kQXNzZXRJZHMDCQAAAgAEBQckbWF0Y2gwCQEDczJtAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIAAwUHJG1hdGNoMAkBA20ybAIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAUFByRtYXRjaDAJAQRsMnhsAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIAAgUHJG1hdGNoMAkBBnhsMnh4bAIFBGFkZHIFDGxhbmRBc3NldElkcwkAAgECDVVua25vd24gbWVyZ2UBBnByb2xvZwEBaQMDCQECIT0CCAUBaQxvcmlnaW5DYWxsZXIFDHJlc3RDb250cmFjdAkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEKa2V5QmxvY2tlZAAHBwkAAgECH0NvbnRyYWN0cyBhcmUgdW5kZXIgbWFpbnRlbmFuY2UJAQtTdHJpbmdFbnRyeQIJARFrZXlMYXN0VHhJZEJ5VXNlcgEJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQnAWkBDWNvbnN0cnVjdG9yVjEBCHJlc3RBZGRyAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleVJlc3RBZGRyZXNzAAUIcmVzdEFkZHIFA25pbAFpAQpzZXRCbG9ja2VkAQlpc0Jsb2NrZWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBCmtleUJsb2NrZWQABQlpc0Jsb2NrZWQFA25pbAFpAQlzdGFrZUxhbmQABAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkxBTkRQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMJAQIhPQIIBQVhc3NldAZpc3N1ZXIFBHRoaXMJAAIBAhdVbmtub3duIGlzc3VlciBvZiB0b2tlbgMJAQEhAQkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFCkxBTkRQUkVGSVgJAAIBCQCsAgIJAKwCAgIJT25seSBORlQgBQpMQU5EUFJFRklYAhQgdG9rZW5zIGFyZSBhY2NlcHRlZAQLbGFuZE51bVNpemUJALACAggFBWFzc2V0BG5hbWUABAQHbGFuZE51bQMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgNYWEwJALMCAgULbGFuZE51bVNpemUAAwMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgJYTAkAswICBQtsYW5kTnVtU2l6ZQACCQCzAgIFC2xhbmROdW1TaXplAAEDCQEBIQEJAQlpc0RlZmluZWQBCQC2CQEFB2xhbmROdW0JAAIBCQCsAgICHkNhbm5vdCBwYXJzZSBsYW5kIG51bWJlciBmcm9tIAgFBWFzc2V0BG5hbWUEC2xhbmRBc3NldElkCQDYBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQDCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAhIgaXMgYWxyZWFkeSBzdGFrZWQEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBXByb3BzCQERdXBkYXRlUHJvcG9ydGlvbnMDBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQQMcmVzQnlDb250S2V5CQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJAJEDAgUBZAUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQxyZXNCeUNvbnRLZXkCCzBfMF8wXzBfMF8wAgFfBBB1cGRhdGVkQ29udFByb3BzCQC5CQIJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAUJY29udFByb3BzBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQIBXwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQdhZGRyZXNzBAhsYW5kc1N0cgkAoggBBQhsYW5kc0tleQQFbGFuZHMDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQVsYW5kcwULbGFuZEFzc2V0SWQJAAIBCQCsAgICIllvdXIgc3Rha2VkIGxhbmRzIGFscmVhZHkgY29udGFpbiAFC2xhbmRBc3NldElkAwkAZwIJAJADAQUFbGFuZHMFGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgkAAgEJAKwCAgkArAICAhlZb3VyIGFscmVhZHkgc3Rha2VkIG1heCAoCQCkAwEFGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgIHKSBsYW5kcwQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQdhZGRyZXNzBAlvbGRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAECXdsZ1Jlc3VsdAkA/AcEBQt3bGdDb250cmFjdAISb25TdGFrZVVuc3Rha2VMYW5kCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFB3RpbWVLZXkIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgFC2xhbmRBc3NldElkBQdhZGRyZXNzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQELU3RyaW5nRW50cnkCBQhsYW5kc0tleQkAuwkCCQDNCAIFBWxhbmRzBQtsYW5kQXNzZXRJZAIBXwkAzAgCCQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5CQBkAgUJb2xkUGllY2VzBQZwaWVjZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkBQdhZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0FB2FkZHJlc3MJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQtsYW5kQXNzZXRJZAUHYWRkcmVzcwUKaW5mcmFMZXZlbAkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMABQVwcm9wcwkAzAgCCQELU3RyaW5nRW50cnkCBQxyZXNCeUNvbnRLZXkFEHVwZGF0ZWRDb250UHJvcHMJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwFCXdsZ1Jlc3VsdAFpAQt1bnN0YWtlTGFuZAENbGFuZEFzc2V0SWRJbgQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpBmNhbGxlcgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUNY2xhaW1Nb2RlRHVjawUNbGFuZEFzc2V0SWRJbgQLbGFuZEFzc2V0SWQIBQFjAl8yBAFkCAUBYwJfMwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQRhZGRyBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBXByb3BzCQERdXBkYXRlUHJvcG9ydGlvbnMDBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQMcmVzQnlDb250S2V5CQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJAJEDAgUBZAUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQxyZXNCeUNvbnRLZXkCCzBfMF8wXzBfMF8wAgFfBBB1cGRhdGVkQ29udFByb3BzCQC5CQIJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAUJY29udFByb3BzBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQIBXwQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIFC2xhbmRBc3NldElkBQZwaWVjZXMFDWNsYWltTW9kZUR1Y2sEBWxhbmRzCQC9CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUIbGFuZHNLZXkCAAIBXwQDaWR4CQDPCAIFBWxhbmRzBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEFA2lkeAkAAgEJAKwCAgIgWW91ciBzdGFrZWQgbGFuZHMgZG9uJ3QgY29udGFpbiAFC2xhbmRBc3NldElkBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBA5nb3ZSZWxlYXNlVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQtnb3ZDb250cmFjdAkBFWtleVVzZXJHd2xSZWxlYXNlVGltZQEFBGFkZHIAAAMJAGcCBQ5nb3ZSZWxlYXNlVGltZQUDbm93CQACAQkArAICAjlZb3VyIGdXTCBhcmUgdGFraW5nIHBhcnQgaW4gdm90aW5nLCBjYW5ub3QgdW5zdGFrZSB1bnRpbCAJAKQDAQUOZ292UmVsZWFzZVRpbWUEDmFyYlJlbGVhc2VUaW1lCQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQt3bGdDb250cmFjdAkBFGtleUxhc3RBcmJUaW1lQnlVc2VyAQUEYWRkcgAABQ5hcmJpdHJhZ2VEZWxheQMJAGYCBQ5hcmJSZWxlYXNlVGltZQUDbm93CQACAQkArAICAj9Zb3VyIHN0YWtlZCBsYW5kcyB0b29rIHBhcnQgaW4gYXJiaXRyYWdlLCBjYW5ub3QgdW5zdGFrZSB1bnRpbCAJAKQDAQUOYXJiUmVsZWFzZVRpbWUECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQRhZGRyBAxzdGFrZWRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAECW5ld1BpZWNlcwMJAGYCBQZwaWVjZXMFDHN0YWtlZFBpZWNlcwAACQBlAgUMc3Rha2VkUGllY2VzBQZwaWVjZXMECXdsZ1Jlc3VsdAkA/AcEBQt3bGdDb250cmFjdAISb25TdGFrZVVuc3Rha2VMYW5kCQDMCAIFBGFkZHIFA25pbAUDbmlsCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEJANkEAQULbGFuZEFzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgFC2xhbmRBc3NldElkBQRhZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAFBXByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIFDHJlc0J5Q29udEtleQUQdXBkYXRlZENvbnRQcm9wcwkAzAgCCQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzIJALkJAggFC2NsYWltUmVzdWx0Al8zAgE6CQDMCAIDCQBmAgkAkAMBBQVsYW5kcwABCQELU3RyaW5nRW50cnkCBQhsYW5kc0tleQkAuwkCCQDRCAIFBWxhbmRzCQEFdmFsdWUBBQNpZHgCAV8JAQtEZWxldGVFbnRyeQEFCGxhbmRzS2V5CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkFCW5ld1BpZWNlcwkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAUJd2xnUmVzdWx0AWkBCXN0YWtlRHVjawAEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHYXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIIBQNwbXQGYW1vdW50AAEJAAIBCQCsAgIJAKwCAgIETkZUIAUKRFVDS1BSRUZJWAIkIHRva2VuIHNob3VsZCBiZSBhdHRhY2hlZCBhcyBwYXltZW50BAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkAwMJAQIhPQIIBQVhc3NldAZpc3N1ZXIFDWluY3ViYXRvckFkZHIJAQIhPQIIBQVhc3NldAZpc3N1ZXIFC2JyZWVkZXJBZGRyBwkAAgEJAKwCAgkArAICAhJVbmtub3duIGlzc3VlciBvZiAFCkRVQ0tQUkVGSVgCBiB0b2tlbgMJAQEhAQkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFCkRVQ0tQUkVGSVgJAAIBCQCsAgIJAKwCAgIJT25seSBORlQgBQpEVUNLUFJFRklYAhQgdG9rZW5zIGFyZSBhY2NlcHRlZAQKYXNzZXRJZFN0cgkA2AQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFCmFzc2V0SWRTdHIDCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAhIgaXMgYWxyZWFkeSBzdGFrZWQDCQEJaXNEZWZpbmVkAQkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzCQACAQkArAICAh1Zb3UgYWxyZWFkeSBzdGFrZWQgb25lIGR1Y2s6IAgFBWFzc2V0BG5hbWUDCQEPY2hlY2tUb3VybmFtZW50AQUKYXNzZXRJZFN0cgkAAgECGXN0YWtlRHVja19jaGVja1RvdXJuYW1lbnQEBmxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFCmFzc2V0SWRTdHIECGxvY2F0aW9uCQCiCAEFBmxvY0tleQQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFCmFzc2V0SWRTdHIECGJhY2twYWNrCQCiCAEFBWJwS2V5BAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQUKYXNzZXRJZFN0cgQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQphc3NldElkU3RyAAAECWN1ckhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFB3RpbWVLZXkIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkRVQ0tQUkVGSVgJANgEAQUHYXNzZXRJZAUHYWRkcmVzcwgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleUR1Y2tJZFRvT3duZXIBBQphc3NldElkU3RyBQdhZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MFCmFzc2V0SWRTdHIFA25pbAMJAQlpc0RlZmluZWQBBQhsb2NhdGlvbgUDbmlsCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04FA25pbAMJAQlpc0RlZmluZWQBBQhiYWNrcGFjawUDbmlsCQDNCAIJAM0IAgkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQIaMDowXzBfMF8wXzBfMDowXzBfMF8wXzBfMDoFA25pbAkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJY3VySGVhbHRoBQxwcm9sb2dBY3Rpb24BaQELdW5zdGFrZUR1Y2sBCmFzc2V0SWRTdHIEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQHYXNzZXRJZAkA2QQBBQphc3NldElkU3RyBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQphc3NldElkU3RyAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAAgEJAKwCAgkArAICAglUaGUgZHVjayAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFB2FkZHJlc3MJAAIBAhdTdGFrZWQgTkZUIGlzIG5vdCB5b3VycwMJAQ9jaGVja1RvdXJuYW1lbnQBBQphc3NldElkU3RyCQACAQIbdW5zdGFrZUR1Y2tfY2hlY2tUb3VybmFtZW50BAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQUKYXNzZXRJZFN0cgQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQphc3NldElkU3RyAAAEBmhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkAZgIFBW1heEhQBQZoZWFsdGgJAAIBCQCsAgIJAKwCAgIZUGxlYXNlIGhlYWwgeW91ciBkdWNrIHRvIAkApAMBBQVtYXhIUAITaHAgYmVmb3JlIHVuc3Rha2luZwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHYXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBBQd0aW1lS2V5CQDMCAIJAQtEZWxldGVFbnRyeQEFCWtleUhlYWx0aAkAzAgCCQELRGVsZXRlRW50cnkBCQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgkAzAgCCQELRGVsZXRlRW50cnkBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYBQphc3NldElkU3RyBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwBaQEIY2xhaW1SZXMCBmFtb3VudA5sYW5kQXNzZXRJZFN0cgQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAUNY2xhaW1Nb2RlRHVjawUObGFuZEFzc2V0SWRTdHIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDNCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAawMFB3hwQ2xhaW0FBmFtb3VudAUFTVVMVDgCXzEJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzIJALkJAggFBnJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfNAkAuQkCCAUGcmVzdWx0Al81AgE6BQxwcm9sb2dBY3Rpb24JAJEDAggFBnJlc3VsdAJfMwUIYnBJZHhSZXMBaQEMY2xhaW1SZXNUb1dIAgZhbW91bnQObGFuZEFzc2V0SWRTdHIEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBnJlc3VsdAkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQZhbW91bnQFC2NsYWltTW9kZVdoBQ5sYW5kQXNzZXRJZFN0cgkAlAoCCQDNCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIJAGsDBQd4cENsYWltBQZhbW91bnQFBU1VTFQ4Al8xCQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al8yCQC5CQIIBQZyZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzQJALkJAggFBnJlc3VsdAJfNQIBOgUMcHJvbG9nQWN0aW9uCQCRAwIIBQZyZXN1bHQCXzUFCHdoSWR4UmVzAWkBBmZsaWdodAIHbWVzc2FnZQNzaWcEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAFmCQEMZmxpZ2h0Q29tbW9uAwUIdXNlckFkZHIFB21lc3NhZ2UFA3NpZwQLZHVja0Fzc2V0SWQIBQFmAl8yBAtuZXdMb2NhdGlvbggFAWYCXzQEBm5ld0xvYwkAtQkCBQtuZXdMb2NhdGlvbgIBXwQGaXNUb3VyCQAAAgkAkQMCBQZuZXdMb2MFCmxvY0lkeFR5cGUCAVQDAwkBASEBBQZpc1RvdXIJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAcJAAIBAhZmbGlnaHRfY2hlY2tUb3VybmFtZW50BAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04ECXRvdXJTdHVmZgMFBmlzVG91cgQGb2xkTG9jCQC1CQIFC2N1ckxvY2F0aW9uAgFfBAlvbGRJc1RvdXIJAAACCQCRAwIFBm9sZExvYwUKbG9jSWR4VHlwZQIBVAQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAV0RGF0YQkBC2dldFRvdXJEYXRhAgUSdG91cm5hbWVudENvbnRyYWN0BQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljAwMDCQECIT0CCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGbmV3TG9jBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAYJAQIhPQIJAJEDAgUHZHluYW1pYwUOdER5bmFtaWNTdGF0dXMCCklOUFJPR1JFU1MGCQBmAgUDbm93CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBQp0U3RhdGljRW5kBQR1bml0BAVzY29yZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBm5ld0xvYwUIbG9jSWR4SWQECmdsb2JhbEJlc3QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdkeW5hbWljBRF0RHluYW1pY1dpblJlc3VsdAMDAwkBASEBBQlvbGRJc1RvdXIGCQECIT0CCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGb2xkTG9jBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAYJAQIhPQIFBXNjb3JlCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBm9sZExvYwUIbG9jSWR4SWQAAQkAAgEJAKwCAgkArAICCQCsAgICFkNoZWF0IGF0dGVtcHQ6IG9sZExvYz0FC2N1ckxvY2F0aW9uAgksIG5ld0xvYz0FC25ld0xvY2F0aW9uBAlsb2NhbEJlc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0CQEaa2V5QmVzdFJlc3VsdEJ5VG91ckFuZER1Y2sCBQZsYXN0SWQFC2R1Y2tBc3NldElkAAAEBWxvY2FsAwkAZgIFBXNjb3JlBQlsb2NhbEJlc3QJAPwHBAUSdG91cm5hbWVudENvbnRyYWN0Ag5zYXZlRHVja1Jlc3VsdAkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQVzY29yZQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUFbG9jYWwFBWxvY2FsAwkAZwIFCmdsb2JhbEJlc3QFBXNjb3JlBQR1bml0CQD8BwQFEnRvdXJuYW1lbnRDb250cmFjdAIRdXBkYXRlRHluYW1pY0RhdGEJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUFc2NvcmUFA25pbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQR1bml0AwkAAAIFCXRvdXJTdHVmZgUJdG91clN0dWZmAwkAAAIFC25ld0xvY2F0aW9uBQtjdXJMb2NhdGlvbgkAAgECIllvdSBjYW4ndCBmbHkgdG8gdGhlIHNhbWUgbG9jYXRpb24EBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAljdXJyZW50RXEJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssBA0kdDA2ODg2NjY5MDQyCQERc3VidHJhY3RFcXVpcG1lbnQCBQljdXJyZW50RXEIBQFmAl81BAVuZXdFcQgFDSR0MDY4ODY2NjkwNDICXzEED3Nob3VsZFplcm9CdWZmcwgFDSR0MDY4ODY2NjkwNDICXzIJAJQKAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmxvY0tleQMJAGYCCAUBZgJfMQAABQtuZXdMb2NhdGlvbgULY3VyTG9jYXRpb24JAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkCAUBZgJfMQkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAMFD3Nob3VsZFplcm9CdWZmcwkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAUDbmlsCQDOCAIFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkAwkAZgIIBQFmAl8xAAAFD3hwU3VjY2Vzc0ZsaWdodAUMeHBGYWlsRmxpZ2h0Al8xCAUBZgJfMwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQRoZWFsAwpxdWFudGl0eUwxCnF1YW50aXR5TDIKcXVhbnRpdHlMMwQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMDAwkAZgIAAAUKcXVhbnRpdHlMMQYJAGYCAAAFCnF1YW50aXR5TDIGCQBmAgAABQpxdWFudGl0eUwzCQACAQIbUXVhbnRpdHkgY2Fubm90IGJlIG5lZ2F0aXZlBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIUaGVhbF9jaGVja1RvdXJuYW1lbnQEA3F0cwkAzAgCBQpxdWFudGl0eUwxCQDMCAIFCnF1YW50aXR5TDIJAMwIAgUKcXVhbnRpdHlMMwUDbmlsBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJb2xkSGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBnAgUJb2xkSGVhbHRoBQVtYXhIUAkAAgEJAKwCAgkArAICAg9IUCBzaG91bGQgYmUgPCAJAKQDAQUFbWF4SFACCCB0byBoZWFsBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvZExpc3QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8KAQtpdGVyYXRlUHJvZAIDYWNjBnJlY2lwZQQBbggFA2FjYwJfMgQBeAMJAGYCCQCQAwEFCHByb2RMaXN0BQFuCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QFAW4AAAMJAGYCAAMFAW4EAXEJAJEDAgUDcXRzBQFuAwkAZgIFAXEFAXgJAAIBCQCsAgIJAKwCAgkArAICAg5Zb3UgaGF2ZSBvbmx5IAkApAMBBQF4AgQgb2YgCQCRAwIFCXByb2RUeXBlcwUBbgkAlQoDCQDNCAIIBQNhY2MCXzEJAKQDAQkAZQIFAXgFAXEJAGQCBQFuAAEJAGQCCAUDYWNjAl8zCQBoAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgUGcmVjaXBlAgFfBQpySWR4RWZmZWN0BQFxCQCVCgMJAM0IAggFA2FjYwJfMQkApAMBBQF4CQBkAgUBbgABCAUDYWNjAl8zBAZyZXN1bHQKAAIkbAUQcHJvZHVjdGlvbk1hdHJpeAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwUDbmlsAAAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQELaXRlcmF0ZVByb2QCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDUwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgQJbmV3SGVhbHRoCQCXAwEJAMwIAgUFbWF4SFAJAMwIAgkAZAIFCW9sZEhlYWx0aAgFBnJlc3VsdAJfMwUDbmlsCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQluZXdIZWFsdGgJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALoJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0CQDMCAIJALkJAggFBnJlc3VsdAJfMQIBXwUDbmlsAgE6CQDMCAIFDHByb2xvZ0FjdGlvbgUDbmlsCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQJAGgCBQZ4cEhlYWwJAGQCCQBkAgUKcXVhbnRpdHlMMQUKcXVhbnRpdHlMMgUKcXVhbnRpdHlMMwJfMQUJbmV3SGVhbHRoAWkBBmhlYWxFUwAEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFmhlYWxFU19jaGVja1RvdXJuYW1lbnQECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAlvbGRIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGYCBQlvbGRIZWFsdGgAAAkAAgECKEhQIHNob3VsZCBiZSAwIHRvIGNhbGwgRW1lcmdlbmN5IFNlcnZpY2UEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwQNbWVkS2l0QW1vdW50MQMJAGYCCQCQAwEFCHByb2RMaXN0AAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAAAAAAEDW1lZEtpdEFtb3VudDIDCQBmAgkAkAMBBQhwcm9kTGlzdAABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAQAABA1tZWRLaXRBbW91bnQzAwkAZgIJAJADAQUIcHJvZExpc3QAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAIAAAMDAwkAZgIFDW1lZEtpdEFtb3VudDEAAAYJAGYCBQ1tZWRLaXRBbW91bnQyAAAGCQBmAgUNbWVkS2l0QW1vdW50MwAACQACAQIfWW91IGhhdmUgdG8gdXNlIG93biBNZWRpY2FsIEtpdAQIZXhpc3RTdHIJAJ0IAgUPZWNvbm9teUNvbnRyYWN0CQEOa2V5RXNXYXJlaG91c2UABAxleGlzdEFtb3VudHMDCQEJaXNEZWZpbmVkAQUIZXhpc3RTdHIJALwJAgkBBXZhbHVlAQUIZXhpc3RTdHICAV8FA25pbAQLZXhpc3RBbW91bnQDCQBmAgkAkAMBBQxleGlzdEFtb3VudHMAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGV4aXN0QW1vdW50cwAAAAADCQBnAgAABQtleGlzdEFtb3VudAkAAgECOVRoZXJlIGFyZSBubyBNZWRpY2FsIEtpdHMgTDEgYXQgRW1lcmdlbmN5IFNlcnZpY2Ugc3RvcmFnZQQJbmV3SGVhbHRoCQBkAgUJb2xkSGVhbHRoCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgAAAIBXwUKcklkeEVmZmVjdAQFbmV3RVMJALkJAgkAzAgCCQCkAwEJAGUCBQtleGlzdEFtb3VudAABCQDRCAIFDGV4aXN0QW1vdW50cwAAAgFfBAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4AAACAV8ECHRvdGFsTWF0CQESZ2V0UmVjaXBlTWF0ZXJpYWxzAQUGcmVjaXBlBAlzZWxsUHJpY2UJAGsDCQBoAgUIdG90YWxNYXQFCkVTU0VMTENPRUYFEFJFU09VUkNFUFJJQ0VNSU4JAGgCBQVNVUxUOAUOUFJPRFVDVFBLR1NJWkUDCQECIT0CCAUDcG10BmFtb3VudAUJc2VsbFByaWNlCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUJc2VsbFByaWNlBAZyZXN1bHQJAQhhc1N0cmluZwEJAPwHBAUPZWNvbm9teUNvbnRyYWN0Ag91cGRhdGVFc1N0b3JhZ2UJAMwIAgUFbmV3RVMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgULdXNkdEFzc2V0SWQFCXNlbGxQcmljZQUDbmlsCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQluZXdIZWFsdGgJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUIeHBDYWxsRVMCXzEFBnJlc3VsdAFpAQ51cGRhdGVCYWNrcGFjawILZHVja0Fzc2V0SWQHbmV3UGFjawMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQIRcGVybWlzc2lvbiBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAUHbmV3UGFjawUDbmlsBQduZXdQYWNrAWkBD2NvbW1pdEZvclJhbmRvbQAEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkEC2ZpbmlzaEJsb2NrCQBkAgUGaGVpZ2h0BQtyYW5kb21EZWxheQQEYWRkcgkApQgBCAUBaQZjYWxsZXIJAJQKAgkAzQgCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEJa2V5Q29tbWl0AQUEYWRkcgULZmluaXNoQmxvY2sFA25pbAUMcHJvbG9nQWN0aW9uBQtmaW5pc2hCbG9jawFpAQhidXlTTGFuZAAEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQMJAQIhPQIIBQNwbXQGYW1vdW50BQdFWFBVU0RUCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUHRVhQVVNEVAQGcmVzdWx0CQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkCQCUCgIJAM0IAgkAzggCCQDNCAIIBQZyZXN1bHQCXzEJAQ5TY3JpcHRUcmFuc2ZlcgMFD2Vjb25vbXlDb250cmFjdAgFA3BtdAZhbW91bnQFC3VzZHRBc3NldElkCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCCQClCAEIBQFpBmNhbGxlcgUKeHBOZXdTTGFuZAJfMQUMcHJvbG9nQWN0aW9uCAgFBnJlc3VsdAJfMgJfMQFpAQpleHBlZGl0aW9uAgdtZXNzYWdlA3NpZwQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJARBleHBlZGl0aW9uQ29tbW9uBAgFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBQdtZXNzYWdlBQNzaWcEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhpleHBlZGl0aW9uX2NoZWNrVG91cm5hbWVudAkAlAoCCQDNCAIJAM4IAggFBnJlc3VsdAJfMQgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQp4cE5ld1NMYW5kAl8xBQxwcm9sb2dBY3Rpb24JAJQKAggFBnJlc3VsdAJfMggFBnJlc3VsdAJfMwFpAQx1cGdyYWRlSW5mcmEBC2xhbmRBc3NldElkBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBnJlc3VsdAkBDXVwSW5mcmFDb21tb24EBggFAWkGY2FsbGVyAAAFC2xhbmRBc3NldElkBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkCQCUCgIJAM4IAgkAzQgCCAUGcmVzdWx0Al8xBQxwcm9sb2dBY3Rpb24ICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAawMFDnhwVXBncmFkZUluZnJhCAUGcmVzdWx0Al8zBQVNVUxUOAJfMQgFBnJlc3VsdAJfMgFpARBhY3RpdmF0ZUFydGlmYWN0AgdhcnROYW1lDmxhbmRBc3NldElkT3B0BAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAZyZXN1bHQEByRtYXRjaDAFB2FydE5hbWUDCQAAAgIHUFJFU0FMRQUHJG1hdGNoMAkBEmFjdGl2YXRlUHJlc2FsZUFydAIFBGFkZHIFDmxhbmRBc3NldElkT3B0AwkAAAICB09OQk9BUkQFByRtYXRjaDAJARJhY3RpdmF0ZU9uYm9hcmRBcnQBBQRhZGRyCQACAQIQVW5rbm93biBhcnRpZmFjdAkAzQgCBQZyZXN1bHQFDHByb2xvZ0FjdGlvbgFpAQptZXJnZUxhbmRzAQxsYW5kQXNzZXRJZHMEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQGcmVzdWx0CQELbWVyZ2VDb21tb24CCQClCAEIBQFpBmNhbGxlcgUMbGFuZEFzc2V0SWRzCQCUCgIJAM4IAgkAzQgCCAUGcmVzdWx0Al8xBQxwcm9sb2dBY3Rpb24ICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQd4cE1lcmdlAl8xCAUGcmVzdWx0Al8yAWkBDWNhcmdvRXhjaGFuZ2UCDGNhcmdvTGlzdFN0cgtsYW5kQXNzZXRJZAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBApjYXJnb1BhcnRzCQC8CQIFDGNhcmdvTGlzdFN0cgIBOgQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OBANsb2MJALUJAgkBBXZhbHVlAQULY3VyTG9jYXRpb24CAV8DCQECIT0CCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBTAkAAgEJAKwCAgkArAICAhZEdWNrIGxvY2F0aW9uIHR5cGUgaXMgCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIRLCBidXQgc2hvdWxkIGJlIEwDCQECIT0CCQCRAwIFA2xvYwUIbG9jSWR4SWQFC2xhbmRBc3NldElkCQACAQkArAICAhtEdWNrIHNob3VsZCBiZSBvbiB0aGUgbGFuZCAFC2xhbmRBc3NldElkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAljdXJyZW50V2gJAQxnZXRXYXJlaG91c2UDBQV3aEtleQUJbGFuZEluZGV4BQppbmZyYUxldmVsBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQGcmVzdWx0CQEJbW92ZVN0dWZmAwUKY2FyZ29QYXJ0cwUJY3VycmVudFdoBQtjdXJyZW50UGFjawQEbG9mdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBAVsb2Z0TwkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAgFBnJlc3VsdAJfNwQFbG9mdEYJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQgFBnJlc3VsdAJfNwkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAggFBnJlc3VsdAJfNAkAzAgCCAUGcmVzdWx0Al81CQDMCAIIBQZyZXN1bHQCXzYFA25pbAIBOgkAzAgCCQELU3RyaW5nRW50cnkCBQV3aEtleQkAugkCCQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCCAUGcmVzdWx0Al8xCQDMCAIIBQZyZXN1bHQCXzIJAMwIAggFBnJlc3VsdAJfMwkAzAgCCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAJEDAgUEbG9mdAUIdm9sVG90YWwFA25pbAIBXwUDbmlsAgE6CQDMCAIFDHByb2xvZ0FjdGlvbgUDbmlsAWkBDXNhdmVXYXJlaG91c2UCBXdoU3RyC2xhbmRBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAJ3aAkAvAkCBQV3aFN0cgIBOgMJAQIhPQIJAJADAQUCd2gABQkAAgECMHdhcmVob3VzZSBzdHJpbmcgc2hvdWxkIGNvbnRhaW4gNCAnOicgc2VwYXJhdG9ycwQFbG9mdEwJAJEDAgkAtQkCCQCRAwIFAndoBQl3aElkeExPRlQCAV8FCXZvbExvY2tlZAQFbG9mdE8JARdnZXRXYXJlaG91c2VPY2N1cGllZFZvbAEFAndoBAVsb2Z0VAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQkAkQMCBQJ3aAULd2hJZHhMZXZlbHMEBWxvZnRGCQBlAgkAZQIFBWxvZnRUCQENcGFyc2VJbnRWYWx1ZQEFBWxvZnRMBQVsb2Z0TwQIbmV3V2hTdHIJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgkAuQkCCQDMCAIFBWxvZnRMCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCkAwEFBWxvZnRUBQNuaWwCAV8FA25pbAIBOgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5BQhuZXdXaFN0cgUDbmlsBQhuZXdXaFN0cgFpARJmaXhXYXJlaG91c2VGb3JtYXQBC2xhbmRBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQxyZXN0Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQCd2gJAQxnZXRXYXJlaG91c2UDBQV3aEtleQUJbGFuZEluZGV4BQppbmZyYUxldmVsBAVsb2Z0TAkBBWFzSW50AQkA/AcEBQ9lY29ub215Q29udHJhY3QCGnJlY2FsY0xvY2tlZFZvbHVtZVJFQURPTkxZCQDMCAIFC2xhbmRBc3NldElkCQDMCAIFAndoBQNuaWwFA25pbAQFbG9mdE8JARdnZXRXYXJlaG91c2VPY2N1cGllZFZvbAEFAndoBAVsb2Z0VAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQkAkQMCBQJ3aAULd2hJZHhMZXZlbHMEBWxvZnRGCQBlAgkAZQIFBWxvZnRUBQVsb2Z0TAUFbG9mdE8ECG5ld1doU3RyCQC6CQIJAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgkAkQMCBQJ3aAUId2hJZHhSZXMJAMwIAgkAkQMCBQJ3aAUId2hJZHhNYXQJAMwIAgkAkQMCBQJ3aAUJd2hJZHhQcm9kCQDMCAIJALkJAgkAzAgCCQCkAwEFBWxvZnRMCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCkAwEFBWxvZnRUBQNuaWwCAV8FA25pbAIBOgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5BQhuZXdXaFN0cgUDbmlsBQhuZXdXaFN0cgFpARdmaXhDb250aW5lbnRQcm9wb3J0aW9ucwEMbGFuZEFzc2V0SWRzAwkBAiE9AggFAWkGY2FsbGVyBQxyZXN0Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkCgEIZ2V0UHJvcHMCA2FjYwRjb250CQDNCAIFA2FjYwkBC3ZhbHVlT3JFbHNlAgkAoggBCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEFBGNvbnQCCzBfMF8wXzBfMF8wBAFwCgACJGwFCmNvbnRpbmVudHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGdldFByb3BzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQoBCXByb2Nlc3NvcgIDYWNjC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUFBVNTSVpFBARjb250CQCRAwIFAWQFDHJlY0NvbnRpbmVudAQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIFAWQFC3JlY1RlcnJhaW5zBAxjb250aW5lbnRJZHgJAQV2YWx1ZQEJAM8IAgUKY29udGluZW50cwUEY29udAQJY29udFByb3BzCQC1CQIJAJEDAgUDYWNjBQxjb250aW5lbnRJZHgCAV8EB3VwZGF0ZWQJALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQljb250UHJvcHMFDXRlcnJhaW5Db3VudHMF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OwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAECCEFtZXJpY2FzCQCRAwIFAXIAAAkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAECBkV1cm9wZQkAkQMCBQFyAAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBAgRBc2lhCQCRAwIFAXIAAgkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAECBkFmcmljYQkAkQMCBQFyAAMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBAgdPY2VhbmlhCQCRAwIFAXIABAUDbmlsAAABaQEPZml4U3Rha2VkUGllY2VzAQdhZGRyZXNzAwkBAiE9AggFAWkGY2FsbGVyBQxyZXN0Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAxzdGFrZWRQaWVjZXMDCQAAAgUHYWRkcmVzcwIAAAAECGxhbmRzU3RyCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFB2FkZHJlc3MEBWxhbmRzAwkBCWlzRGVmaW5lZAEFCGxhbmRzU3RyCQC9CQIJAQV2YWx1ZQEFCGxhbmRzU3RyAgFfBQNuaWwKAQdvbmVMYW5kAgNhY2MLbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECGxhbmRTaXplCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQkAZAIFA2FjYwkBD251bVBpZWNlc0J5U2l6ZQEFCGxhbmRTaXplCgACJGwFBWxhbmRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdvbmVMYW5kAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhVMaXN0IHNpemUgZXhjZWVkcyAxMDAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFB2FkZHJlc3MFDHN0YWtlZFBpZWNlcwUDbmlsBQxzdGFrZWRQaWVjZXMBaQENc2V0Q3VzdG9tTmFtZQMHYXNzZXRJZApjdXN0b21OYW1lBHR5cGUEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQMJAQIhPQIIBQNwbXQGYW1vdW50BQxSRU5BTUlOR0NPU1QJAAIBCQCsAgICElBheW1lbnQgc2hvdWxkIGJlIAkApAMBBQxSRU5BTUlOR0NPU1QDCQEIY29udGFpbnMCBQpjdXN0b21OYW1lAgJfXwkAAgEJAKwCAgIeTmFtZSBzaG91bGQgbm90IGNvbnRhaW4gJ19fJzogBQpjdXN0b21OYW1lAwkAZgIJALECAQUKY3VzdG9tTmFtZQUKTUFYTkFNRUxFTgkAAgEJAKwCAgIZTmFtZSB0b28gbG9uZywgbWF4TGVuZ3RoPQkApAMBBQpNQVhOQU1FTEVOBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQHYWN0aW9ucwQHJG1hdGNoMAUEdHlwZQMJAAACAgdBQ0NPVU5UBQckbWF0Y2gwBApyZXZlcnNlS2V5CQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEFCmN1c3RvbU5hbWUECW5hbWVPd25lcgkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFCW5hbWVPd25lcgkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQQNYWRkclRvTmFtZUtleQkBFmtleUFkZHJlc3NUb0N1c3RvbU5hbWUBBQRhZGRyBAdvbGROYW1lCQCiCAEFDWFkZHJUb05hbWVLZXkEB2ZyZWVPbGQDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ1hZGRyVG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQRhZGRyCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQx4cEN1c3RvbU5hbWUCXzEDCQAAAgIETEFORAUHJG1hdGNoMAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFB2Fzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQKcmV2ZXJzZUtleQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA5hc3NldFRvTmFtZUtleQkBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQUHYXNzZXRJZAQHb2xkTmFtZQkAoggBBQ5hc3NldFRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ5hc3NldFRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUHYXNzZXRJZAgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgUMeHBDdXN0b21OYW1lAl8xAwkAAAICBERVQ0sFByRtYXRjaDAEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQdhc3NldElkAwMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQYJAQEhAQkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKRFVDS1BSRUZJWAINIGlzIG5vdCB5b3VycwQKcmV2ZXJzZUtleQkBGmtleUR1Y2tDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA5hc3NldFRvTmFtZUtleQkBGmtleUR1Y2tBc3NldElkVG9DdXN0b21OYW1lAQUHYXNzZXRJZAQHb2xkTmFtZQkAoggBBQ5hc3NldFRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ5hc3NldFRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUHYXNzZXRJZAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFB2Fzc2V0SWQFDHhwQ3VzdG9tTmFtZQJfMQkAAgECE1Vua25vd24gZW50aXR5IHR5cGUJAJQKAgkAzQgCCQDNCAIFB2FjdGlvbnMJAQ5TY3JpcHRUcmFuc2ZlcgMFD2Vjb25vbXlDb250cmFjdAgFA3BtdAZhbW91bnQFC3VzZHRBc3NldElkBQxwcm9sb2dBY3Rpb24AAAFpAQxzZXRSZWZlcnJhbHMCCW9sZFBsYXllcgluZXdQbGF5ZXIDCQECIT0CCAUBaQ9jYWxsZXJQdWJsaWNLZXkFA3B1YgkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFCW9sZFBsYXllcgkAAgEJAKwCAgIRSW52YWxpZCBhZGRyZXNzOiAFCW9sZFBsYXllcgMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUJbmV3UGxheWVyCQACAQkArAICAhFJbnZhbGlkIGFkZHJlc3M6IAUJbmV3UGxheWVyBAdvbGRzS2V5CQEJa2V5T2xkaWVzAAQEb2xkcwkAoggBBQdvbGRzS2V5BAZvbGRpZXMDCQEJaXNEZWZpbmVkAQUEb2xkcwkAvAkCCQEFdmFsdWUBBQRvbGRzAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUGb2xkaWVzBQluZXdQbGF5ZXIJAAIBCQCsAgIFCW5ld1BsYXllcgImIGlzIG5vdCBuZXdiaWUgKGFscmVhZHkgaGFzIHJlZmVycmFscykECHJlZkJ5S2V5CQEPa2V5QWRkcmVzc1JlZkJ5AQUJbmV3UGxheWVyBAVyZWZCeQkAoggBBQhyZWZCeUtleQMDCQEJaXNEZWZpbmVkAQUFcmVmQnkJAQlpc0RlZmluZWQBCQCmCAEJAQV2YWx1ZQEFBXJlZkJ5BwkAAgEJAKwCAgkArAICBQluZXdQbGF5ZXICFCBhbHJlYWR5IGhhcyByZWZCeTogCQEFdmFsdWUBBQVyZWZCeQQHcmVmc0tleQkBE2tleUFkZHJlc3NSZWZlcnJhbHMBBQlvbGRQbGF5ZXIEBHJlZnMJAKIIAQUHcmVmc0tleQQJcmVmc0FycmF5AwkBCWlzRGVmaW5lZAEFBHJlZnMJALwJAgkBBXZhbHVlAQUEcmVmcwIBXwUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFCXJlZnNBcnJheQUJbmV3UGxheWVyCQACAQkArAICCQCsAgIJAKwCAgUJb2xkUGxheWVyAhIgYWxyZWFkeSBjb250YWlucyAFCW5ld1BsYXllcgIRIHdpdGhpbiByZWZlcnJhbHMEB25ld1JlZnMJALoJAgkAzQgCBQlyZWZzQXJyYXkFCW5ld1BsYXllcgIBXwQHbmV3T2xkcwMJAQ9jb250YWluc0VsZW1lbnQCBQZvbGRpZXMFCW9sZFBsYXllcgkBBXZhbHVlAQUEb2xkcwkAugkCCQDNCAIFBm9sZGllcwUJb2xkUGxheWVyAgFfCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUIcmVmQnlLZXkFCW9sZFBsYXllcgkAzAgCCQELU3RyaW5nRW50cnkCBQdyZWZzS2V5BQduZXdSZWZzCQDMCAIJAQtTdHJpbmdFbnRyeQIFB29sZHNLZXkFB25ld09sZHMJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwAAAFpARBkaXN0cmlidXRlUG9pbnRzBQhzdHJlbmd0aAhhY2N1cmFjeQlpbnRlbGxlY3QJZW5kdXJhbmNlCWRleHRlcml0eQQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBApmcmVlS2V5QWNjCQERa2V5VXNlckZyZWVQb2ludHMBBQRhZGRyBA1mcmVlUG9pbnRzQWNjCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAUKZnJlZUtleUFjYwAABAtmcmVlS2V5RHVjawkBEWtleUR1Y2tGcmVlUG9pbnRzAQULZHVja0Fzc2V0SWQEDmZyZWVQb2ludHNEdWNrCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAULZnJlZUtleUR1Y2sAAAQHc3VtRnJlZQkAZAIFDWZyZWVQb2ludHNBY2MFDmZyZWVQb2ludHNEdWNrBA9zdW1Ub0Rpc3RyaWJ1dGUJAGQCCQBkAgkAZAIJAGQCBQhzdHJlbmd0aAUIYWNjdXJhY3kFCWludGVsbGVjdAUJZW5kdXJhbmNlBQlkZXh0ZXJpdHkDCQBmAgUPc3VtVG9EaXN0cmlidXRlBQdzdW1GcmVlCQACAQkArAICCQCsAgICD1RoZXJlIGFyZSBvbmx5IAkApAMBBQdzdW1GcmVlAhogZnJlZSBwb2ludHMgdG8gZGlzdHJpYnV0ZQQIY2hhcnNLZXkJAQxrZXlEdWNrQ2hhcnMBBQtkdWNrQXNzZXRJZAQFY2hhcnMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QFCGNoYXJzS2V5AgkwXzBfMF8wXzACAV8EBm5ld0FjYwkAZQIFDWZyZWVQb2ludHNBY2MFD3N1bVRvRGlzdHJpYnV0ZQkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQpmcmVlS2V5QWNjAwkAZgIAAAUGbmV3QWNjAAAFBm5ld0FjYwkAzAgCCQEMSW50ZWdlckVudHJ5AgULZnJlZUtleUR1Y2sDCQBmAgAABQZuZXdBY2MJAGQCBQ5mcmVlUG9pbnRzRHVjawUGbmV3QWNjBQ5mcmVlUG9pbnRzRHVjawkAzAgCCQELU3RyaW5nRW50cnkCBQhjaGFyc0tleQkAuQkCCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhclN0cmVuZ3RoBQhzdHJlbmd0aAkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJBY2N1cmFjeQUIYWNjdXJhY3kJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFySW50ZWxsZWN0BQlpbnRlbGxlY3QJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRW5kdXJhbmNlBQllbmR1cmFuY2UJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRGV4dGVyaXR5BQlkZXh0ZXJpdHkFA25pbAIBXwkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAAAAWkBHHNwbGl0QnlHbG9iYWxXZWlnaHRzUkVBRE9OTFkBBmFtb3VudAkAlAoCBQNuaWwJARJnZXROZWVkZWRNYXRlcmlhbHMBBQZhbW91bnQBaQEkc3BsaXRCeUdsb2JhbEFuZExvY2FsV2VpZ2h0c1JFQURPTkxZAwltYXRBbW91bnQJcmVzQW1vdW50CHRlcnJhaW5zBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEFCHRlcnJhaW5zCQCUCgIFA25pbAkAlAoCCQESZ2V0TmVlZGVkTWF0ZXJpYWxzAQUJbWF0QW1vdW50CQETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFCXJlc0Ftb3VudAUNdGVycmFpbkNvdW50cwFpARNnZXRCYWNrcGFja1JFQURPTkxZAQtkdWNrQXNzZXRJZAkAlAoCBQNuaWwJALkJAgkBC2dldEJhY2twYWNrAQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQCAToBaQEUZ2V0V2FyZWhvdXNlUkVBRE9OTFkBC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAkAlAoCBQNuaWwJALoJAgkBDGdldFdhcmVob3VzZQMJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAUJbGFuZEluZGV4BQppbmZyYUxldmVsAgE6AWkBCnNhdmVMYXN0VHgABAZjYWxsZXIIBQFpBmNhbGxlcgMDAwkBAiE9AgUGY2FsbGVyBQt3bGdDb250cmFjdAkBAiE9AgUGY2FsbGVyBQ9lY29ub215Q29udHJhY3QHCQECIT0CBQZjYWxsZXIFEnRvdXJuYW1lbnRDb250cmFjdAcJAAIBAg1BY2Nlc3MgZGVuaWVkCQCUCgIJAMwIAgkBBnByb2xvZwEFAWkFA25pbAAqAWkBD3VwZGF0ZUR1Y2tTdGF0cwILZHVja0Fzc2V0SWQHZGVsdGFYUAMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFB2RlbHRhWFABaQEOdXBkYXRlQWNjU3RhdHMCBGFkZHIHZGVsdGFYUAMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQdkZWx0YVhQAWkBCWVxdWlwRHVjawEJZXF1aXBtZW50BAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhllcXVpcER1Y2tfY2hlY2tUb3VybmFtZW50BAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQLY3VycmVudFNlZ3MJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywCAV8EBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVuZXdFcQkAtQkCBQllcXVpcG1lbnQCAV8DCQECIT0CCQCQAwEFBW5ld0VxBQtOVU1TRUdNRU5UUwkAAgECFldyb25nIGVxdWlwbWVudCBzdHJpbmcECXRlbXBQcm9kQgkBBmRyZXNzQgQFC2N1cnJlbnRTZWdzCQEOcHJvZFN0clRvQnl0ZXMBCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QGBQNuaWwECHNlZ0JwQXV4CQCRAwIJALUJAgkAkQMCBQVuZXdFcQULc2VnQmFja3BhY2sCATsAAQQKYnVmZkVmZmVjdAMJAAACBQhzZWdCcEF1eAIAAAAEBGF1eDAJAJEDAgkAtQkCBQhzZWdCcEF1eAIBLAAAAwkAAAIFBGF1eDACAAAABAZpZHhDbnQJALUJAgUEYXV4MAIBOgQDaWR4CQCRAwIFBmlkeENudAAABANjbnQJAJEDAgUGaWR4Q250AAEDAwMDAwkAAAIFA2lkeAICMDYGCQAAAgUDaWR4AgIwNwYJAAACBQNpZHgCAjA4CQECIT0CBQNjbnQCAAcJAGYCCQENcGFyc2VJbnRWYWx1ZQEFA2NudAAABwkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4CQENcGFyc2VJbnRWYWx1ZQEFA2lkeAIBXwUKcklkeEVmZmVjdAAABAVzdGF0cwkBDGdldER1Y2tTdGF0cwQFBHRoaXMFC2R1Y2tBc3NldElkBQpidWZmRWZmZWN0BgQIbmV3UHJvZEIJAQZkcmVzc0IEBQVuZXdFcQUJdGVtcFByb2RCBwUFc3RhdHMECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCG5ld1Byb2RCCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFCWVxdWlwbWVudAkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgUKbmV3UHJvZFN0cgUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAHCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAICQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAJCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAKCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwALBQNuaWwCAV8JAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwAAAFpAQ9mb3J0aWZpY2F0ZUxhbmQCC2xhbmRBc3NldElkBHBsYW4EDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEC2R1Y2tBc3NldElkCQELdmFsdWVPckVsc2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICAAQJZHVja1N0YXRzCQEMZ2V0RHVja1N0YXRzBAUEdGhpcwULZHVja0Fzc2V0SWQAAAcEB2ZvcnRLZXkJARdrZXlGb3J0aWZpY2F0aW9uc0J5TGFuZAEFC2xhbmRBc3NldElkBAxjdXJyZW50Rm9ydHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQdmb3J0S2V5Agw6MF8xNTowXzE4OjACAV8EBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAJ3aAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEB2N1ckxvZnQJALUJAgkAkQMCBQJ3aAUJd2hJZHhMT0ZUAgFfBARjdXJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHY3VyTG9mdAULdm9sT2NjdXBpZWQEBGN1ckYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdjdXJMb2Z0BQd2b2xGcmVlBAhuZXdGb3J0cwkAtQkCBQRwbGFuAgFfBA0kdDA5NTg4ODk2MDAzCQEFZm9ydEIGBQxjdXJyZW50Rm9ydHMJAQ5wcm9kU3RyVG9CeXRlcwEJAJEDAgUCd2gFCXdoSWR4UHJvZAUEY3VyTwUEY3VyRgYFA25pbAQJdGVtcFByb2RCCAUNJHQwOTU4ODg5NjAwMwJfMQQFdGVtcE8IBQ0kdDA5NTg4ODk2MDAzAl8yBAV0ZW1wRggFDSR0MDk1ODg4OTYwMDMCXzMEDSR0MDk2MDA2OTYxMDIJAQVmb3J0QgYFCG5ld0ZvcnRzBQl0ZW1wUHJvZEIFBXRlbXBPBQV0ZW1wRgcFCWR1Y2tTdGF0cwQIbmV3UHJvZEIIBQ0kdDA5NjAwNjk2MTAyAl8xBARuZXdPCAUNJHQwOTYwMDY5NjEwMgJfMgQEbmV3RggFDSR0MDk2MDA2OTYxMDICXzMECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCG5ld1Byb2RCBApuZXdMb2Z0U3RyCQC5CQIJAMwIAgkAkQMCBQdjdXJMb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQRuZXdPCQDMCAIJAKQDAQUEbmV3RgkAzAgCCQCRAwIFB2N1ckxvZnQFCHZvbFRvdGFsBQNuaWwCAV8JAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQdmb3J0S2V5BQRwbGFuCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5CQC6CQIJAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgkAkQMCBQJ3aAUId2hJZHhSZXMJAMwIAgkAkQMCBQJ3aAUId2hJZHhNYXQJAMwIAgUKbmV3UHJvZFN0cgkAzAgCBQpuZXdMb2Z0U3RyBQNuaWwCAToJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwAAAFpARNpbml0RHVja1RvdXJBdHRlbXB0AQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUSdG91cm5hbWVudENvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAECWN1ckhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQBAljdXJMb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VyTG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQMdG91ckxvY2F0aW9uCQCsAgIJAKQDAQUGbGFzdElkAgRfVF8wCQCUCgIJAMwIAgUMcHJvbG9nQWN0aW9uCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAUJY3VySGVhbHRoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFBW1heEhQCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFC2N1ckxvY2F0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUMdG91ckxvY2F0aW9uBQNuaWwFDHRvdXJMb2NhdGlvbgFpAQxicmVha0F0dGVtcHQABAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAljdXJMb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VyTG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04DCQECIT0CCQCRAwIJALUJAgULY3VyTG9jYXRpb24CAV8FCmxvY0lkeFR5cGUCAVQJAAIBAiJZb3VyIGR1Y2sgaXMgbm90IGluIHRoZSB0b3VybmFtZW50BAtzYXZlZEhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQEDXNhdmVkTG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQJAJQKAgkAzAgCBQxwcm9sb2dBY3Rpb24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFC3NhdmVkSGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUNc2F2ZWRMb2NhdGlvbgUDbmlsBQtjdXJMb2NhdGlvbgFpARZleGl0VG91cm5hbWVudEludGVybmFsAQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDUFjY2VzcyBkZW5pZWQEC3NhdmVkSGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAQNc2F2ZWRMb2NhdGlvbgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQtzYXZlZEhlYWx0aAkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFDXNhdmVkTG9jYXRpb24FA25pbAcBaQEOcHJlcGFyZVJvYmJlcnkCB21lc3NhZ2UDc2lnBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBASEBCQDEEwMFB21lc3NhZ2UFA3NpZwUDcHViCQACAQIYc2lnbmF0dXJlIGRvZXMgbm90IG1hdGNoAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEBndsZ0FtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQp3bGdBc3NldElkCQACAQIVV0xHT0xEIHBheW1lbnRzIG9ubHkhBAVwYXJ0cwkAtQkCCQCwCQEFB21lc3NhZ2UCAXwDCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAhRXcm9uZyBtZXNzYWdlIGZvcm1hdAQLZHVja0Fzc2V0SWQJAJEDAgUFcGFydHMAAAQHcm9iQ29zdAgJAQ5nZXRSb2JiZXJ5RGF0YQIFBHRoaXMFC2R1Y2tBc3NldElkAl8xAwkAZgIFB3JvYkNvc3QFBndsZ0FtdAkAAgEJAKwCAgkArAICCQCsAgICCFBheW1lbnQgCQCkAwEFBndsZ0FtdAIMIDwgcmVxdWlyZWQgCQCkAwEFB3JvYkNvc3QECmNhbmRpZGF0ZXMJALUJAgkAkQMCBQVwYXJ0cwABAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlkdWNrU3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleUR1Y2tSb2JiZXJ5U3RhdGUBBQtkdWNrQXNzZXRJZAAABApsb2NrZWRMYW5kCQELdmFsdWVPckVsc2UCCQCiCAEJARNrZXlMb2NrZWRMYW5kQnlEdWNrAQULZHVja0Fzc2V0SWQCAAQHbGFuZEVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TGFuZENvb2xkb3duRVRBAQUKbG9ja2VkTGFuZAAAAwMJAQIhPQIFCWR1Y2tTdGF0ZQULZHVja0lkeEZyZWUJAGYCBQdsYW5kRVRBBQNub3cHCQACAQkArAICAidZb3UgYWxyZWFkeSBzdGFydGVkIHJvYmJpbmcsIHdhaXQgdGlsbCAJAKQDAQUHbGFuZEVUQQoBB2NoZWNrZXICA2FjYwtsYW5kQXNzZXRJZAQFc3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleUxhbmRSb2JiZXJ5U3RhdGUBBQtsYW5kQXNzZXRJZAAABAtjb29sZG93bkVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TGFuZENvb2xkb3duRVRBAQULbGFuZEFzc2V0SWQAAAMJAGYCBQVzdGF0ZQkAkAMBBRBsYW5kUm9iQ29vbGRvd25zCQACAQINSW52YWxpZCBzdGF0ZQMJAGYCBQNub3cFC2Nvb2xkb3duRVRBBApzdGFrZWRUaW1lCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAMJAGcCAAAFCnN0YWtlZFRpbWUFA2FjYwQBYQkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAFkCQC1CQIIBQFhC2Rlc2NyaXB0aW9uAgFfBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAxwcm9kdWN0aXZpdHkJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBAlkZWx0YVRpbWUJAGUCBQNub3cFCnN0YWtlZFRpbWUECGF2YWlsUmVzCQBrAwUJZGVsdGFUaW1lCQBoAgUMcHJvZHVjdGl2aXR5BQZwaWVjZXMFCURBWU1JTExJUwMJAGYCBQ5NSU5fUkVTX1RPX1JPQgUIYXZhaWxSZXMFA2FjYwkAzQgCBQNhY2MFC2xhbmRBc3NldElkBQNhY2MECGZpbHRlcmVkCgACJGwFCmNhbmRpZGF0ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2NoZWNrZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoDCQAAAgkAkAMBBQhmaWx0ZXJlZAAACQACAQIZTm8gY2FuZGlkYXRlcyBmb3Igcm9iYmVyeQQGcm5kSWR4CQEPZ2V0UmFuZG9tTnVtYmVyAwkAkAMBBQhmaWx0ZXJlZAUGaGVpZ2h0CQDLAQIFA3NpZwgFAWkNdHJhbnNhY3Rpb25JZAQLbGFuZEFzc2V0SWQJAJEDAgUIZmlsdGVyZWQFBnJuZElkeAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQETa2V5TGFuZFJvYmJlcnlTdGF0ZQEFC2xhbmRBc3NldElkBQxyb2JJZHhMb2NrZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARJrZXlMYW5kQ29vbGRvd25FVEEBBQtsYW5kQXNzZXRJZAkAZAIFA25vdwkAkQMCBRBsYW5kUm9iQ29vbGRvd25zBQxyb2JJZHhMb2NrZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARNrZXlEdWNrUm9iYmVyeVN0YXRlAQULZHVja0Fzc2V0SWQFEGR1Y2tJZHhQcmVwYXJpbmcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBE2tleUxvY2tlZExhbmRCeUR1Y2sBBQtkdWNrQXNzZXRJZAULbGFuZEFzc2V0SWQJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwFC2xhbmRBc3NldElkABzEREE=", "height": 2732104, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: ExHCXk3siyLGC5MAn48MckLCiryUuSVKwCNo8ZhnwVLR Next: J6qXLBzd4qVBBc7gFweQwQYitY7ktBkt2CYrqb5bkDz5 Diff:
Old | New | Differences | |
---|---|---|---|
322 | 322 | ||
323 | 323 | let bY = 2 | |
324 | 324 | ||
325 | - | func bZ (ca) = (parseIntValue(ca[aQ]) * aN) | |
326 | - | ||
327 | - | ||
328 | - | let cb = false | |
325 | + | func bZ (bL,z) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bL), z], "__") | |
326 | + | ||
327 | + | ||
328 | + | func ca (cb) = (parseIntValue(cb[aQ]) * aN) | |
329 | + | ||
329 | 330 | ||
330 | 331 | let cc = false | |
331 | 332 | ||
332 | - | let cd = take(drop(this.bytes, 1), 1) | |
333 | - | ||
334 | - | let ce = { | |
335 | - | let cf = cd | |
336 | - | if ((base58'2W' == cf)) | |
333 | + | let cd = false | |
334 | + | ||
335 | + | let ce = take(drop(this.bytes, 1), 1) | |
336 | + | ||
337 | + | let cf = { | |
338 | + | let cg = ce | |
339 | + | if ((base58'2W' == cg)) | |
337 | 340 | then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
338 | - | else if ((base58'2T' == | |
341 | + | else if ((base58'2T' == cg)) | |
339 | 342 | then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63' | |
340 | 343 | else throw("Unknown chain") | |
341 | 344 | } | |
342 | 345 | ||
343 | - | let | |
344 | - | let | |
345 | - | if ((base58'2W' == | |
346 | + | let ch = { | |
347 | + | let cg = ce | |
348 | + | if ((base58'2W' == cg)) | |
346 | 349 | then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv" | |
347 | - | else if ((base58'2T' == | |
350 | + | else if ((base58'2T' == cg)) | |
348 | 351 | then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy" | |
349 | 352 | else throw("Unknown chain") | |
350 | 353 | } | |
351 | 354 | ||
352 | - | let | |
353 | - | let | |
354 | - | if ((base58'2W' == | |
355 | + | let ci = { | |
356 | + | let cg = ce | |
357 | + | if ((base58'2W' == cg)) | |
355 | 358 | then 10000000000 | |
356 | - | else if ((base58'2T' == | |
359 | + | else if ((base58'2T' == cg)) | |
357 | 360 | then 100000000 | |
358 | 361 | else throw("Unknown chain") | |
359 | 362 | } | |
360 | 363 | ||
361 | - | let | |
362 | - | let | |
363 | - | if ((base58'2W' == | |
364 | + | let cj = { | |
365 | + | let cg = ce | |
366 | + | if ((base58'2W' == cg)) | |
364 | 367 | then 86400000 | |
365 | - | else if ((base58'2T' == | |
368 | + | else if ((base58'2T' == cg)) | |
366 | 369 | then 60000 | |
367 | 370 | else throw("Unknown chain") | |
368 | 371 | } | |
369 | 372 | ||
370 | - | let | |
371 | - | ||
372 | - | let | |
373 | - | ||
374 | - | let | |
375 | - | ||
376 | - | let | |
377 | - | ||
378 | - | let | |
379 | - | ||
380 | - | let | |
381 | - | ||
382 | - | let | |
383 | - | ||
384 | - | let | |
385 | - | ||
386 | - | let | |
387 | - | ||
388 | - | func | |
389 | - | ||
390 | - | ||
391 | - | let | |
392 | - | ||
393 | - | let | |
394 | - | ||
395 | - | let | |
396 | - | ||
397 | - | let | |
398 | - | ||
399 | - | let | |
400 | - | ||
401 | - | func | |
402 | - | ||
403 | - | ||
404 | - | func | |
405 | - | ||
406 | - | ||
407 | - | func | |
408 | - | ||
409 | - | ||
410 | - | func | |
411 | - | ||
412 | - | ||
413 | - | let | |
414 | - | ||
415 | - | let | |
416 | - | ||
417 | - | let al = | |
418 | - | ||
419 | - | let | |
420 | - | ||
421 | - | let | |
422 | - | ||
423 | - | let | |
424 | - | ||
425 | - | let | |
426 | - | ||
427 | - | let | |
428 | - | ||
429 | - | let | |
430 | - | ||
431 | - | let | |
432 | - | ||
433 | - | let | |
434 | - | ||
435 | - | let | |
436 | - | ||
437 | - | let | |
438 | - | ||
439 | - | let | |
440 | - | ||
441 | - | func | |
442 | - | ||
443 | - | ||
444 | - | func | |
445 | - | ||
446 | - | ||
447 | - | func | |
448 | - | ||
449 | - | ||
450 | - | func | |
451 | - | ||
452 | - | ||
453 | - | func | |
454 | - | ||
455 | - | ||
456 | - | func | |
457 | - | let | |
458 | - | if ($isInstanceOf( | |
373 | + | let ck = "__" | |
374 | + | ||
375 | + | let cl = 1000000 | |
376 | + | ||
377 | + | let cm = 100000000 | |
378 | + | ||
379 | + | let cn = 25 | |
380 | + | ||
381 | + | let co = 100 | |
382 | + | ||
383 | + | let cp = 225 | |
384 | + | ||
385 | + | let cq = 400 | |
386 | + | ||
387 | + | let cr = 625 | |
388 | + | ||
389 | + | let cs = [0, 1, 2, 3, 4, 5] | |
390 | + | ||
391 | + | func ct (cu,cv) = valueOrErrorMessage(getString(cu, cv), makeString(["mandatory ", toString(cu), ".", cv, " is not defined"], "")) | |
392 | + | ||
393 | + | ||
394 | + | let cw = 1 | |
395 | + | ||
396 | + | let cx = 2 | |
397 | + | ||
398 | + | let cy = 3 | |
399 | + | ||
400 | + | let cz = 4 | |
401 | + | ||
402 | + | let cA = 7 | |
403 | + | ||
404 | + | func cB () = "%s__restConfig" | |
405 | + | ||
406 | + | ||
407 | + | func cC () = "%s__restAddr" | |
408 | + | ||
409 | + | ||
410 | + | func cD (cE) = split_4C(ct(cE, cB()), ck) | |
411 | + | ||
412 | + | ||
413 | + | func cF (cG,cH) = valueOrErrorMessage(addressFromString(cG[cH]), ("Rest cfg doesn't contain address at index " + toString(cH))) | |
414 | + | ||
415 | + | ||
416 | + | let cI = addressFromStringValue(valueOrElse(getString(this, cC()), ch)) | |
417 | + | ||
418 | + | let cG = cD(cI) | |
419 | + | ||
420 | + | let al = cF(cG, cw) | |
421 | + | ||
422 | + | let cJ = cF(cG, cx) | |
423 | + | ||
424 | + | let cK = cF(cG, cy) | |
425 | + | ||
426 | + | let cL = cF(cG, cz) | |
427 | + | ||
428 | + | let cM = cF(cG, cA) | |
429 | + | ||
430 | + | let cN = 0 | |
431 | + | ||
432 | + | let cO = 1 | |
433 | + | ||
434 | + | let cP = 2 | |
435 | + | ||
436 | + | let cQ = 3 | |
437 | + | ||
438 | + | let cR = "wlg_assetId" | |
439 | + | ||
440 | + | let cS = valueOrErrorMessage(getBinary(cL, cR), "Not initialized yet") | |
441 | + | ||
442 | + | let cT = 2 | |
443 | + | ||
444 | + | func cU (cu) = ("finishBlockForAddr_" + cu) | |
445 | + | ||
446 | + | ||
447 | + | func cV () = "resTypesProportions" | |
448 | + | ||
449 | + | ||
450 | + | func cW (cX) = ("resTypesByContinent_" + cX) | |
451 | + | ||
452 | + | ||
453 | + | func cY (br) = ("stakedLandsByOwner_" + br) | |
454 | + | ||
455 | + | ||
456 | + | func cZ (br) = ("stakedPiecesByOwner_" + br) | |
457 | + | ||
458 | + | ||
459 | + | func da (db) = { | |
460 | + | let cg = db | |
461 | + | if ($isInstanceOf(cg, "String")) | |
459 | 462 | then { | |
460 | - | let | |
461 | - | | |
463 | + | let dc = cg | |
464 | + | dc | |
462 | 465 | } | |
463 | 466 | else throw("fail to cast into String") | |
464 | 467 | } | |
465 | 468 | ||
466 | 469 | ||
467 | - | func | |
468 | - | let | |
469 | - | if ($isInstanceOf( | |
470 | + | func dd (db) = { | |
471 | + | let cg = db | |
472 | + | if ($isInstanceOf(cg, "Int")) | |
470 | 473 | then { | |
471 | - | let | |
472 | - | | |
474 | + | let de = cg | |
475 | + | de | |
473 | 476 | } | |
474 | 477 | else throw("fail to cast into Int") | |
475 | 478 | } | |
476 | 479 | ||
477 | 480 | ||
478 | - | func de (df) = { | |
479 | - | let cf = df | |
480 | - | if (("S" == cf)) | |
481 | - | then cm | |
482 | - | else if (("M" == cf)) | |
483 | - | then cn | |
484 | - | else if (("L" == cf)) | |
485 | - | then co | |
486 | - | else if (("XL" == cf)) | |
487 | - | then cp | |
488 | - | else if (("XXL" == cf)) | |
489 | - | then cq | |
481 | + | func df (db) = { | |
482 | + | let cg = db | |
483 | + | if ($isInstanceOf(cg, "Boolean")) | |
484 | + | then { | |
485 | + | let dc = cg | |
486 | + | dc | |
487 | + | } | |
488 | + | else throw("fail to cast into Boolean") | |
489 | + | } | |
490 | + | ||
491 | + | ||
492 | + | func dg (dh) = { | |
493 | + | let cg = dh | |
494 | + | if (("S" == cg)) | |
495 | + | then cn | |
496 | + | else if (("M" == cg)) | |
497 | + | then co | |
498 | + | else if (("L" == cg)) | |
499 | + | then cp | |
500 | + | else if (("XL" == cg)) | |
501 | + | then cq | |
502 | + | else if (("XXL" == cg)) | |
503 | + | then cr | |
490 | 504 | else throw("Unknown land size") | |
491 | 505 | } | |
492 | 506 | ||
493 | 507 | ||
494 | - | func | |
495 | - | ||
496 | - | ||
497 | - | func | |
498 | - | let | |
499 | - | let | |
500 | - | (toInt( | |
501 | - | } | |
502 | - | ||
503 | - | ||
504 | - | let | |
505 | - | let | |
506 | - | if ((base58'2W' == | |
508 | + | func di (dc) = isDefined(parseInt(dc)) | |
509 | + | ||
510 | + | ||
511 | + | func dj (dk,dl,dm) = { | |
512 | + | let dn = value(blockInfoByHeight(dl)) | |
513 | + | let do = sha256((value(dn.vrf) + dm)) | |
514 | + | (toInt(do) % dk) | |
515 | + | } | |
516 | + | ||
517 | + | ||
518 | + | let dp = { | |
519 | + | let cg = ce | |
520 | + | if ((base58'2W' == cg)) | |
507 | 521 | then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv") | |
508 | - | else if ((base58'2T' == | |
522 | + | else if ((base58'2T' == cg)) | |
509 | 523 | then this | |
510 | 524 | else throw("Unknown chain") | |
511 | 525 | } | |
512 | 526 | ||
513 | - | let | |
514 | - | let | |
515 | - | if ((base58'2W' == | |
527 | + | let dq = { | |
528 | + | let cg = ce | |
529 | + | if ((base58'2W' == cg)) | |
516 | 530 | then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb") | |
517 | - | else if ((base58'2T' == | |
531 | + | else if ((base58'2T' == cg)) | |
518 | 532 | then this | |
519 | 533 | else throw("Unknown chain") | |
520 | 534 | } | |
521 | 535 | ||
522 | - | let | |
523 | - | let | |
524 | - | if ((base58'2W' == | |
525 | - | then if ( | |
536 | + | let dr = { | |
537 | + | let cg = ce | |
538 | + | if ((base58'2W' == cg)) | |
539 | + | then if (cc) | |
526 | 540 | then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm' | |
527 | 541 | else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
528 | - | else if ((base58'2T' == | |
542 | + | else if ((base58'2T' == cg)) | |
529 | 543 | then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
530 | 544 | else throw("Unknown chain") | |
531 | 545 | } | |
532 | 546 | ||
533 | - | let | |
534 | - | ||
535 | - | let | |
536 | - | ||
537 | - | let | |
538 | - | ||
539 | - | let | |
540 | - | ||
541 | - | let | |
542 | - | ||
543 | - | let | |
544 | - | let | |
545 | - | if ((base58'2W' == | |
547 | + | let ds = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' | |
548 | + | ||
549 | + | let dt = 300000 | |
550 | + | ||
551 | + | let du = 5000000 | |
552 | + | ||
553 | + | let dv = 50 | |
554 | + | ||
555 | + | let dw = 10000000 | |
556 | + | ||
557 | + | let dx = { | |
558 | + | let cg = ce | |
559 | + | if ((base58'2W' == cg)) | |
546 | 560 | then 252289527462 | |
547 | - | else if ((base58'2T' == | |
561 | + | else if ((base58'2T' == cg)) | |
548 | 562 | then 2522895274 | |
549 | 563 | else throw("Unknown chain") | |
550 | 564 | } | |
551 | 565 | ||
552 | - | let | |
553 | - | let | |
554 | - | if ((base58'2W' == | |
566 | + | let dy = { | |
567 | + | let cg = ce | |
568 | + | if ((base58'2W' == cg)) | |
555 | 569 | then 250000000 | |
556 | - | else if ((base58'2T' == | |
570 | + | else if ((base58'2T' == cg)) | |
557 | 571 | then 250000000 | |
558 | 572 | else throw("Unknown chain") | |
559 | 573 | } | |
560 | 574 | ||
561 | - | let | |
562 | - | ||
563 | - | let | |
564 | - | ||
565 | - | let | |
566 | - | ||
567 | - | let | |
568 | - | ||
569 | - | let | |
570 | - | ||
571 | - | let | |
572 | - | ||
573 | - | let | |
574 | - | ||
575 | - | func | |
576 | - | ||
577 | - | ||
578 | - | func | |
579 | - | ||
580 | - | ||
581 | - | func | |
582 | - | ||
583 | - | ||
584 | - | func | |
585 | - | ||
586 | - | ||
587 | - | func | |
588 | - | ||
589 | - | ||
590 | - | func | |
591 | - | ||
592 | - | ||
593 | - | func | |
594 | - | ||
595 | - | ||
596 | - | func | |
597 | - | ||
598 | - | ||
599 | - | let | |
600 | - | ||
601 | - | let | |
602 | - | ||
603 | - | let | |
604 | - | ||
605 | - | let | |
606 | - | ||
607 | - | let | |
608 | - | ||
609 | - | let | |
610 | - | ||
611 | - | let | |
612 | - | ||
613 | - | func | |
614 | - | ||
615 | - | ||
616 | - | func | |
617 | - | let | |
618 | - | then ((( | |
619 | - | else -((((-( | |
620 | - | ( | |
621 | - | } | |
622 | - | ||
623 | - | ||
624 | - | func | |
625 | - | let | |
626 | - | if ((0 >= | |
575 | + | let dz = toBigInt(5) | |
576 | + | ||
577 | + | let dA = toBigInt(20) | |
578 | + | ||
579 | + | let dB = toBigInt((20 * 20)) | |
580 | + | ||
581 | + | let dC = toBigInt(((20 * 20) * 20)) | |
582 | + | ||
583 | + | let dD = toBigInt((((20 * 20) * 20) * 20)) | |
584 | + | ||
585 | + | let dE = toBigInt(((((20 * 20) * 20) * 20) * 20)) | |
586 | + | ||
587 | + | let dF = 500 | |
588 | + | ||
589 | + | func dG () = "nextLandNum" | |
590 | + | ||
591 | + | ||
592 | + | func dH (dI) = ("landByCustomName_" + dI) | |
593 | + | ||
594 | + | ||
595 | + | func dJ (dK) = ("landToAsset_" + dK) | |
596 | + | ||
597 | + | ||
598 | + | func dL (bk,br) = ((("infraLevelByAssetIdAndOwner_" + bk) + "_") + br) | |
599 | + | ||
600 | + | ||
601 | + | func dM (dK) = ("landOwner_" + dK) | |
602 | + | ||
603 | + | ||
604 | + | func dN (dI) = ("duckByCustomName_" + dI) | |
605 | + | ||
606 | + | ||
607 | + | func dO (dI) = ("accountByCustomName_" + dI) | |
608 | + | ||
609 | + | ||
610 | + | func dP () = "oldiesList" | |
611 | + | ||
612 | + | ||
613 | + | let dQ = 0 | |
614 | + | ||
615 | + | let dR = 1 | |
616 | + | ||
617 | + | let dS = 2 | |
618 | + | ||
619 | + | let dT = 0 | |
620 | + | ||
621 | + | let dU = 5 | |
622 | + | ||
623 | + | let dV = 6 | |
624 | + | ||
625 | + | let dW = 7 | |
626 | + | ||
627 | + | func dX (dK,dh) = ((aA + dK) + dh) | |
628 | + | ||
629 | + | ||
630 | + | func dY (dZ,ea) = { | |
631 | + | let eb = if ((dZ >= 0)) | |
632 | + | then (((dZ + ea) - 1) / ea) | |
633 | + | else -((((-(dZ) + ea) - 1) / ea)) | |
634 | + | (eb * cm) | |
635 | + | } | |
636 | + | ||
637 | + | ||
638 | + | func ec (ed,ee) = { | |
639 | + | let ef = (((((ee[0] + ee[1]) + ee[2]) + ee[3]) + ee[4]) + ee[5]) | |
640 | + | if ((0 >= ef)) | |
627 | 641 | then throw("Zero weights sum") | |
628 | 642 | else { | |
629 | - | let | |
630 | - | func | |
631 | - | ||
632 | - | let | |
633 | - | let | |
634 | - | let | |
635 | - | func | |
636 | - | then | |
637 | - | else | |
638 | - | ||
639 | - | func | |
640 | - | then | |
643 | + | let eg = fraction(ed, cl, ef) | |
644 | + | func eh (ei,ej) = (ei :+ fraction(ej, eg, cl)) | |
645 | + | ||
646 | + | let ek = ee | |
647 | + | let el = size(ek) | |
648 | + | let em = nil | |
649 | + | func en (eo,ep) = if ((ep >= el)) | |
650 | + | then eo | |
651 | + | else eh(eo, ek[ep]) | |
652 | + | ||
653 | + | func eq (eo,ep) = if ((ep >= el)) | |
654 | + | then eo | |
641 | 655 | else throw("List size exceeds 6") | |
642 | 656 | ||
643 | - | | |
644 | - | } | |
645 | - | } | |
646 | - | ||
647 | - | ||
648 | - | func | |
649 | - | let | |
650 | - | if ((size( | |
657 | + | eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6) | |
658 | + | } | |
659 | + | } | |
660 | + | ||
661 | + | ||
662 | + | func er (ed) = { | |
663 | + | let es = split(value(getString(cV())), "_") | |
664 | + | if ((size(es) != aD)) | |
651 | 665 | then throw("Wrong proportions data") | |
652 | 666 | else { | |
653 | - | let | |
654 | - | | |
655 | - | } | |
656 | - | } | |
657 | - | ||
658 | - | ||
659 | - | func | |
660 | - | let | |
661 | - | func | |
662 | - | let | |
663 | - | if ((0 > | |
664 | - | then throw(((((("Not enough material idx=" + toString( | |
665 | - | else ( | |
667 | + | let et = [parseIntValue(es[0]), parseIntValue(es[1]), parseIntValue(es[2]), parseIntValue(es[3]), parseIntValue(es[4]), parseIntValue(es[5])] | |
668 | + | ec(ed, et) | |
669 | + | } | |
670 | + | } | |
671 | + | ||
672 | + | ||
673 | + | func eu (ev,ew,ex) = { | |
674 | + | let ey = er(ex) | |
675 | + | func ez (ei,cH) = { | |
676 | + | let eA = (parseIntValue(ew[cH]) - ey[cH]) | |
677 | + | if ((0 > eA)) | |
678 | + | then throw(((((("Not enough material idx=" + toString(cH)) + ", you have ") + ew[cH]) + ", but need ") + toString(ey[cH]))) | |
679 | + | else (ei :+ toString(eA)) | |
666 | 680 | } | |
667 | 681 | ||
668 | - | if ( | |
682 | + | if (ev) | |
669 | 683 | then { | |
670 | - | let | |
671 | - | let | |
672 | - | let | |
673 | - | func | |
674 | - | then | |
675 | - | else | |
676 | - | ||
677 | - | func | |
678 | - | then | |
684 | + | let ek = cs | |
685 | + | let el = size(ek) | |
686 | + | let em = nil | |
687 | + | func en (eo,ep) = if ((ep >= el)) | |
688 | + | then eo | |
689 | + | else ez(eo, ek[ep]) | |
690 | + | ||
691 | + | func eq (eo,ep) = if ((ep >= el)) | |
692 | + | then eo | |
679 | 693 | else throw("List size exceeds 6") | |
680 | 694 | ||
681 | - | | |
682 | - | } | |
683 | - | else | |
684 | - | } | |
685 | - | ||
686 | - | ||
687 | - | func | |
688 | - | then $Tuple2( | |
695 | + | eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6) | |
696 | + | } | |
697 | + | else ew | |
698 | + | } | |
699 | + | ||
700 | + | ||
701 | + | func eB (eC,eD) = if ((eD == "")) | |
702 | + | then $Tuple2(eC, false) | |
689 | 703 | else { | |
690 | - | func | |
691 | - | let | |
692 | - | if ((size( | |
704 | + | func eE (ei,eF) = { | |
705 | + | let eG = split(eF, ",") | |
706 | + | if ((size(eG) != 2)) | |
693 | 707 | then throw("Incorrect format, should be index,amount") | |
694 | 708 | else { | |
695 | - | let | |
696 | - | if (if ((0 > | |
709 | + | let cH = parseIntValue(eG[0]) | |
710 | + | if (if ((0 > cH)) | |
697 | 711 | then true | |
698 | - | else ( | |
712 | + | else (cH >= size(aP))) | |
699 | 713 | then throw("Unknown product idx") | |
700 | 714 | else { | |
701 | - | let | |
702 | - | let | |
703 | - | if ((size( | |
704 | - | then throw((("You don't have " + aL[ | |
715 | + | let eH = parseIntValue(eG[1]) | |
716 | + | let eI = split(ei._1, (eG[0] + ":")) | |
717 | + | if ((size(eI) != 2)) | |
718 | + | then throw((("You don't have " + aL[cH]) + " equipped")) | |
705 | 719 | else { | |
706 | - | let | |
707 | - | let | |
720 | + | let eJ = eI[1] | |
721 | + | let eK = if (di(take(drop(eJ, 1), 1))) | |
708 | 722 | then 2 | |
709 | 723 | else 1 | |
710 | - | let | |
711 | - | let | |
712 | - | let | |
713 | - | then ( | |
714 | - | else throw(((((("You equipped " + toString( | |
715 | - | $Tuple2((((( | |
724 | + | let eL = parseIntValue(take(eJ, eK)) | |
725 | + | let eM = drop(eJ, eK) | |
726 | + | let eN = if ((eL >= eH)) | |
727 | + | then (eL - eH) | |
728 | + | else throw(((((("You equipped " + toString(eL)) + " of ") + aL[cH]) + ", but tried to use ") + toString(eH))) | |
729 | + | $Tuple2(((((eI[0] + eG[0]) + ":") + toString(eN)) + eM), if (ei._2) | |
716 | 730 | then true | |
717 | - | else if (if (( | |
718 | - | then (8 >= | |
731 | + | else if (if ((cH >= 6)) | |
732 | + | then (8 >= cH) | |
719 | 733 | else false) | |
720 | - | then ( | |
734 | + | then (eN == 0) | |
721 | 735 | else false) | |
722 | 736 | } | |
723 | 737 | } | |
724 | 738 | } | |
725 | 739 | } | |
726 | 740 | ||
727 | - | let | |
728 | - | let | |
729 | - | let | |
730 | - | func | |
731 | - | then | |
732 | - | else | |
733 | - | ||
734 | - | func | |
735 | - | then | |
741 | + | let ek = split(eD, "_") | |
742 | + | let el = size(ek) | |
743 | + | let em = $Tuple2(eC, false) | |
744 | + | func en (eo,ep) = if ((ep >= el)) | |
745 | + | then eo | |
746 | + | else eE(eo, ek[ep]) | |
747 | + | ||
748 | + | func eq (eo,ep) = if ((ep >= el)) | |
749 | + | then eo | |
736 | 750 | else throw("List size exceeds 10") | |
737 | 751 | ||
738 | - | | |
752 | + | eq(en(en(en(en(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
739 | 753 | } | |
740 | 754 | ||
741 | 755 | ||
742 | - | func | |
743 | - | let | |
756 | + | func eO (eP) = { | |
757 | + | let eQ = if ((eP == "")) | |
744 | 758 | then nil | |
745 | - | else split_4C( | |
746 | - | func | |
747 | - | let | |
748 | - | let | |
749 | - | then parseIntValue( | |
759 | + | else split_4C(eP, "_") | |
760 | + | func eR (ei,cb) = { | |
761 | + | let eS = (size(ei) / 8) | |
762 | + | let eL = if ((size(eQ) > eS)) | |
763 | + | then parseIntValue(eQ[eS]) | |
750 | 764 | else 0 | |
751 | - | ( | |
765 | + | (ei + toBytes(eL)) | |
752 | 766 | } | |
753 | 767 | ||
754 | - | let | |
755 | - | let | |
756 | - | let | |
757 | - | func | |
758 | - | then | |
759 | - | else | |
760 | - | ||
761 | - | func | |
762 | - | then | |
768 | + | let ek = aP | |
769 | + | let el = size(ek) | |
770 | + | let em = base58'' | |
771 | + | func en (eo,ep) = if ((ep >= el)) | |
772 | + | then eo | |
773 | + | else eR(eo, ek[ep]) | |
774 | + | ||
775 | + | func eq (eo,ep) = if ((ep >= el)) | |
776 | + | then eo | |
763 | 777 | else throw("List size exceeds 50") | |
764 | 778 | ||
765 | - | | |
766 | - | } | |
767 | - | ||
768 | - | ||
769 | - | func | |
770 | - | func | |
771 | - | let | |
772 | - | let | |
773 | - | ( | |
779 | + | eq(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50) | |
780 | + | } | |
781 | + | ||
782 | + | ||
783 | + | func eT (eU) = { | |
784 | + | func eV (ei,cb) = { | |
785 | + | let eS = size(ei) | |
786 | + | let eW = take(drop(eU, (8 * eS)), 8) | |
787 | + | (ei :+ toString(toInt(eW))) | |
774 | 788 | } | |
775 | 789 | ||
776 | 790 | makeString_2C({ | |
777 | - | let | |
778 | - | let | |
779 | - | let | |
780 | - | func | |
781 | - | then | |
782 | - | else | |
783 | - | ||
784 | - | func | |
785 | - | then | |
791 | + | let ek = aP | |
792 | + | let el = size(ek) | |
793 | + | let em = nil | |
794 | + | func en (eo,ep) = if ((ep >= el)) | |
795 | + | then eo | |
796 | + | else eV(eo, ek[ep]) | |
797 | + | ||
798 | + | func eq (eo,ep) = if ((ep >= el)) | |
799 | + | then eo | |
786 | 800 | else throw("List size exceeds 50") | |
787 | 801 | ||
788 | - | | |
802 | + | eq(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50) | |
789 | 803 | }, "_") | |
790 | 804 | } | |
791 | 805 | ||
792 | 806 | ||
793 | - | func | |
794 | - | func | |
795 | - | let | |
796 | - | then | |
807 | + | func eX (eY,eZ) = { | |
808 | + | func fa (ei,eS) = { | |
809 | + | let fb = if ((size(eY) > (7 + eS))) | |
810 | + | then eY[(7 + eS)] | |
797 | 811 | else 0 | |
798 | - | if ((parseIntValue( | |
799 | - | then throw(("Requirement not satisfied: " + i[ | |
812 | + | if ((parseIntValue(eZ[eS]) > (eY[eS] + fb))) | |
813 | + | then throw(("Requirement not satisfied: " + i[eS])) | |
800 | 814 | else true | |
801 | 815 | } | |
802 | 816 | ||
803 | - | let | |
804 | - | let | |
805 | - | let | |
806 | - | func | |
807 | - | then | |
808 | - | else | |
809 | - | ||
810 | - | func | |
811 | - | then | |
817 | + | let ek = [0, 1, 2, 3, 4, 5, 6] | |
818 | + | let el = size(ek) | |
819 | + | let em = false | |
820 | + | func en (eo,ep) = if ((ep >= el)) | |
821 | + | then eo | |
822 | + | else fa(eo, ek[ep]) | |
823 | + | ||
824 | + | func eq (eo,ep) = if ((ep >= el)) | |
825 | + | then eo | |
812 | 826 | else throw("List size exceeds 7") | |
813 | 827 | ||
814 | - | | |
815 | - | } | |
816 | - | ||
817 | - | ||
818 | - | func | |
819 | - | let | |
820 | - | if ((size( | |
828 | + | eq(en(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6), 7) | |
829 | + | } | |
830 | + | ||
831 | + | ||
832 | + | func fc (fd,eQ,fe,eY,ff,fg) = { | |
833 | + | let eG = split(fd, ":") | |
834 | + | if ((size(eG) != 2)) | |
821 | 835 | then throw("Incorrect format, should be index:amount") | |
822 | - | else if (if (!( | |
823 | - | then (size( | |
836 | + | else if (if (!(fe)) | |
837 | + | then (size(eG[0]) != 2) | |
824 | 838 | else false) | |
825 | 839 | then throw("Product idx should be 2 digits, zero padded") | |
826 | 840 | else { | |
827 | - | let | |
828 | - | let | |
829 | - | if (!(containsElement(aO, | |
830 | - | then throw((("Product '" + aL[ | |
831 | - | else if ((0 > | |
841 | + | let fh = parseIntValue(eG[0]) | |
842 | + | let fi = parseIntValue(eG[1]) | |
843 | + | if (!(containsElement(aO, fh))) | |
844 | + | then throw((("Product '" + aL[fh]) + "' cannot be used for land defense")) | |
845 | + | else if ((0 > fi)) | |
832 | 846 | then throw("Count can't be negative") | |
833 | - | else if (( | |
834 | - | then throw(((("Can't put more than " + toString(s)) + " of ") + aL[ | |
835 | - | else if (( | |
836 | - | then $Tuple3( | |
847 | + | else if ((fi > s)) | |
848 | + | then throw(((("Can't put more than " + toString(s)) + " of ") + aL[fh])) | |
849 | + | else if ((fi == 0)) | |
850 | + | then $Tuple3(eQ, ff, fg) | |
837 | 851 | else { | |
838 | - | let | |
839 | - | let | |
840 | - | let | |
841 | - | let | |
842 | - | if (if (!( | |
843 | - | then ( | |
852 | + | let fj = take(eQ, (8 * fh)) | |
853 | + | let eL = toInt(take(drop(eQ, (8 * fh)), 8)) | |
854 | + | let eM = drop(eQ, (8 * (fh + 1))) | |
855 | + | let cb = split(aP[fh], "_") | |
856 | + | if (if (!(fe)) | |
857 | + | then (fi > eL) | |
844 | 858 | else false) | |
845 | - | then throw(((((("You have " + toString( | |
859 | + | then throw(((((("You have " + toString(eL)) + " of ") + aL[fh]) + ", but tried to use ") + toString(fi))) | |
846 | 860 | else { | |
847 | - | let | |
848 | - | then | |
861 | + | let eN = if (if (!(fe)) | |
862 | + | then eX(eY, split(cb[aS], ",")) | |
849 | 863 | else false) | |
850 | - | then ( | |
851 | - | else ( | |
852 | - | let | |
853 | - | $Tuple3((( | |
864 | + | then (eL - fi) | |
865 | + | else (eL + fi) | |
866 | + | let fk = (dY(eN, aU) - dY(eL, aU)) | |
867 | + | $Tuple3(((fj + toBytes(eN)) + eM), (ff + fk), (fg - fk)) | |
854 | 868 | } | |
855 | 869 | } | |
856 | 870 | } | |
857 | 871 | } | |
858 | 872 | ||
859 | 873 | ||
860 | - | func | |
861 | - | let | |
862 | - | if ((size( | |
874 | + | func fl (fd,eQ,fe,fm,fn,fo,eY) = { | |
875 | + | let eG = split(fd, ":") | |
876 | + | if ((size(eG) != 2)) | |
863 | 877 | then throw("Incorrect format, should be index:amount") | |
864 | - | else if (if (!( | |
865 | - | then (size( | |
878 | + | else if (if (!(fe)) | |
879 | + | then (size(eG[0]) != 2) | |
866 | 880 | else false) | |
867 | 881 | then throw("Product idx should be 2 digits, zero padded") | |
868 | 882 | else { | |
869 | - | let | |
870 | - | let | |
871 | - | if (if ((0 > | |
883 | + | let fh = parseIntValue(eG[0]) | |
884 | + | let fi = parseIntValue(eG[1]) | |
885 | + | if (if ((0 > fh)) | |
872 | 886 | then true | |
873 | - | else ( | |
887 | + | else (fh >= size(aP))) | |
874 | 888 | then throw("Unknown product idx") | |
875 | - | else if ((0 > | |
889 | + | else if ((0 > fi)) | |
876 | 890 | then throw("Count can't be negative") | |
877 | - | else if (( | |
878 | - | then throw(((("Can't put more than " + toString(s)) + " of ") + aL[ | |
879 | - | else if (( | |
880 | - | then $Tuple2( | |
891 | + | else if ((fi > s)) | |
892 | + | then throw(((("Can't put more than " + toString(s)) + " of ") + aL[fh])) | |
893 | + | else if ((fi == 0)) | |
894 | + | then $Tuple2(eQ, false) | |
881 | 895 | else { | |
882 | - | let | |
883 | - | let | |
884 | - | let | |
885 | - | let | |
886 | - | if (if (!( | |
887 | - | then ( | |
896 | + | let fj = take(eQ, (8 * fh)) | |
897 | + | let eL = toInt(take(drop(eQ, (8 * fh)), 8)) | |
898 | + | let eM = drop(eQ, (8 * (fh + 1))) | |
899 | + | let cb = split(aP[fh], "_") | |
900 | + | if (if (!(fe)) | |
901 | + | then (fi > eL) | |
888 | 902 | else false) | |
889 | - | then throw(((((("You have " + toString( | |
903 | + | then throw(((((("You have " + toString(eL)) + " of ") + aL[fh]) + ", but tried to use ") + toString(fi))) | |
890 | 904 | else { | |
891 | - | let | |
892 | - | then | |
905 | + | let fp = if (if (!(fe)) | |
906 | + | then eX(eY, split(cb[aS], ",")) | |
893 | 907 | else false) | |
894 | 908 | then { | |
895 | - | let | |
896 | - | if (( | |
909 | + | let fq = cb[aT] | |
910 | + | if ((fq == "")) | |
897 | 911 | then throw("Item cannot be equipped") | |
898 | 912 | else { | |
899 | - | let | |
900 | - | let | |
901 | - | if (( | |
913 | + | let fr = parseIntValue(fq) | |
914 | + | let fs = (fr / 100) | |
915 | + | if ((fm != fs)) | |
902 | 916 | then throw("Segment incompatible") | |
903 | 917 | else { | |
904 | - | let | |
905 | - | if (( | |
918 | + | let ft = ((fr % 100) / 10) | |
919 | + | if ((fn != ft)) | |
906 | 920 | then throw("Slot incompatible") | |
907 | 921 | else { | |
908 | - | let | |
909 | - | if (if (( | |
910 | - | then ( | |
922 | + | let fu = (fr % 10) | |
923 | + | if (if ((fo != 0)) | |
924 | + | then (fu > 1) | |
911 | 925 | else false) | |
912 | 926 | then throw("Big items should occupy slot 0") | |
913 | - | else ( | |
927 | + | else (fu > 1) | |
914 | 928 | } | |
915 | 929 | } | |
916 | 930 | } | |
917 | 931 | } | |
918 | 932 | else false | |
919 | - | $Tuple2((( | |
920 | - | then | |
921 | - | else -( | |
933 | + | $Tuple2(((fj + toBytes((eL + (if (fe) | |
934 | + | then fi | |
935 | + | else -(fi))))) + eM), fp) | |
922 | 936 | } | |
923 | 937 | } | |
924 | 938 | } | |
925 | 939 | } | |
926 | 940 | ||
927 | 941 | ||
928 | - | func | |
942 | + | func fv (fw,fx,fe,fm,fn,fy) = if ((fw != "")) | |
929 | 943 | then { | |
930 | - | let | |
931 | - | if ((size( | |
944 | + | let fz = split(fw, ",") | |
945 | + | if ((size(fz) > r)) | |
932 | 946 | then throw("Wrong slots format") | |
933 | 947 | else { | |
934 | - | let | |
935 | - | let | |
936 | - | then | |
948 | + | let fA = fz[0] | |
949 | + | let fB = if ((size(fz) > 1)) | |
950 | + | then fz[1] | |
937 | 951 | else "" | |
938 | - | if (if (( | |
939 | - | then ( | |
952 | + | if (if ((fA == "")) | |
953 | + | then (fB == "") | |
940 | 954 | else false) | |
941 | - | then | |
955 | + | then fx | |
942 | 956 | else { | |
943 | - | let | |
944 | - | then | |
945 | - | else $Tuple2( | |
946 | - | if (( | |
947 | - | then if ( | |
957 | + | let fC = if ((fA != "")) | |
958 | + | then fl(fA, fx, fe, fm, fn, 0, fy) | |
959 | + | else $Tuple2(fx, false) | |
960 | + | if ((fB != "")) | |
961 | + | then if (fC._2) | |
948 | 962 | then throw("Big item already occupies slot") | |
949 | - | else | |
950 | - | else | |
963 | + | else fl(fB, fC._1, fe, fm, fn, 1, fy)._1 | |
964 | + | else fC._1 | |
951 | 965 | } | |
952 | 966 | } | |
953 | 967 | } | |
954 | - | else | |
955 | - | ||
956 | - | ||
957 | - | func | |
958 | - | func | |
959 | - | let | |
960 | - | let | |
961 | - | if ((size( | |
968 | + | else fx | |
969 | + | ||
970 | + | ||
971 | + | func fD (fE,fF,fe,fy) = { | |
972 | + | func fm (ei,fG) = { | |
973 | + | let eS = ei._1 | |
974 | + | let fn = split(fG, ";") | |
975 | + | if ((size(fn) != q)) | |
962 | 976 | then throw("Wrong segment format") | |
963 | 977 | else { | |
964 | - | let | |
965 | - | let | |
966 | - | if (if (( | |
967 | - | then ( | |
978 | + | let fH = fn[0] | |
979 | + | let fI = fn[1] | |
980 | + | if (if ((fH == "")) | |
981 | + | then (fI == "") | |
968 | 982 | else false) | |
969 | - | then $Tuple2(( | |
983 | + | then $Tuple2((eS + 1), ei._2) | |
970 | 984 | else { | |
971 | - | let | |
972 | - | $Tuple2(( | |
985 | + | let fJ = fv(fH, ei._2, fe, eS, 0, fy) | |
986 | + | $Tuple2((eS + 1), fv(fI, fJ, fe, eS, 1, fy)) | |
973 | 987 | } | |
974 | 988 | } | |
975 | 989 | } | |
976 | 990 | ||
977 | - | ( let | |
978 | - | let | |
979 | - | let | |
980 | - | func | |
981 | - | then | |
982 | - | else | |
983 | - | ||
984 | - | func | |
985 | - | then | |
991 | + | ( let ek = fE | |
992 | + | let el = size(ek) | |
993 | + | let em = $Tuple2(0, fF) | |
994 | + | func en (eo,ep) = if ((ep >= el)) | |
995 | + | then eo | |
996 | + | else fm(eo, ek[ep]) | |
997 | + | ||
998 | + | func eq (eo,ep) = if ((ep >= el)) | |
999 | + | then eo | |
986 | 1000 | else throw("List size exceeds 6") | |
987 | 1001 | ||
988 | - | | |
989 | - | } | |
990 | - | ||
991 | - | ||
992 | - | func | |
1002 | + | eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6))._2 | |
1003 | + | } | |
1004 | + | ||
1005 | + | ||
1006 | + | func fK (fE,fF,ff,fg,fe,eY) = if ((3 > size(fE))) | |
993 | 1007 | then throw("At least duck, mines and traps parts are required") | |
994 | 1008 | else { | |
995 | - | func | |
996 | - | let | |
997 | - | if (( | |
998 | - | then $Tuple4(( | |
1009 | + | func fm (ei,fG) = { | |
1010 | + | let eS = ei._1 | |
1011 | + | if ((eS == 0)) | |
1012 | + | then $Tuple4((eS + 1), ei._2, ei._3, ei._4) | |
999 | 1013 | else { | |
1000 | - | let | |
1001 | - | $Tuple4(( | |
1014 | + | let fL = fc(fG, ei._2, fe, eY, ei._3, ei._4) | |
1015 | + | $Tuple4((eS + 1), fL._1, fL._2, fL._3) | |
1002 | 1016 | } | |
1003 | 1017 | } | |
1004 | 1018 | ||
1005 | - | let | |
1006 | - | let | |
1007 | - | let | |
1008 | - | let | |
1009 | - | func | |
1010 | - | then | |
1011 | - | else | |
1012 | - | ||
1013 | - | func | |
1014 | - | then | |
1019 | + | let fM = { | |
1020 | + | let ek = fE | |
1021 | + | let el = size(ek) | |
1022 | + | let em = $Tuple4(0, fF, ff, fg) | |
1023 | + | func en (eo,ep) = if ((ep >= el)) | |
1024 | + | then eo | |
1025 | + | else fm(eo, ek[ep]) | |
1026 | + | ||
1027 | + | func eq (eo,ep) = if ((ep >= el)) | |
1028 | + | then eo | |
1015 | 1029 | else throw("List size exceeds 10") | |
1016 | 1030 | ||
1017 | - | | |
1018 | - | } | |
1019 | - | $Tuple3( | |
1031 | + | eq(en(en(en(en(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1032 | + | } | |
1033 | + | $Tuple3(fM._2, fM._3, fM._4) | |
1020 | 1034 | } | |
1021 | 1035 | ||
1022 | 1036 | ||
1023 | - | func | |
1024 | - | let | |
1025 | - | let | |
1026 | - | let | |
1027 | - | let | |
1028 | - | let am = if (( | |
1037 | + | func fN (z) = { | |
1038 | + | let fO = E(z) | |
1039 | + | let fP = split(valueOrElse(getString(fO), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
1040 | + | let fQ = fD(fP, ds, true, nil) | |
1041 | + | let fR = split(fP[o], ";")[1] | |
1042 | + | let am = if ((fR == "")) | |
1029 | 1043 | then 0 | |
1030 | 1044 | else { | |
1031 | - | let | |
1032 | - | if (( | |
1045 | + | let fS = split(fR, ",")[0] | |
1046 | + | if ((fS == "")) | |
1033 | 1047 | then 0 | |
1034 | 1048 | else { | |
1035 | - | let | |
1036 | - | let | |
1037 | - | let | |
1038 | - | if (if (if (if (if (( | |
1049 | + | let fd = split(fS, ":") | |
1050 | + | let cH = fd[0] | |
1051 | + | let fT = fd[1] | |
1052 | + | if (if (if (if (if ((cH == "06")) | |
1039 | 1053 | then true | |
1040 | - | else ( | |
1054 | + | else (cH == "07")) | |
1041 | 1055 | then true | |
1042 | - | else ( | |
1043 | - | then ( | |
1056 | + | else (cH == "08")) | |
1057 | + | then (fT != "") | |
1044 | 1058 | else false) | |
1045 | - | then (parseIntValue( | |
1059 | + | then (parseIntValue(fT) > 0) | |
1046 | 1060 | else false) | |
1047 | - | then parseIntValue(split(aP[parseIntValue( | |
1061 | + | then parseIntValue(split(aP[parseIntValue(cH)], "_")[aR]) | |
1048 | 1062 | else 0 | |
1049 | 1063 | } | |
1050 | 1064 | } | |
1051 | - | let | |
1052 | - | let | |
1053 | - | ( | |
1054 | - | } | |
1055 | - | ||
1056 | - | ||
1057 | - | func | |
1065 | + | let fy = ak(this, z, am, true) | |
1066 | + | let fU = fD(fP, fQ, false, fy) | |
1067 | + | (fU == fU) | |
1068 | + | } | |
1069 | + | ||
1070 | + | ||
1071 | + | func fV (fW,fX,fY,fZ) = if ((size(fW) != aD)) | |
1058 | 1072 | then throw("Wrong proportions data") | |
1059 | 1073 | else { | |
1060 | - | func | |
1061 | - | let | |
1062 | - | if ((0 > | |
1063 | - | then throw(((((((("Panic! Pieces of type=" + toString( | |
1064 | - | else ( | |
1065 | - | } | |
1066 | - | ||
1067 | - | let | |
1068 | - | let | |
1069 | - | let | |
1070 | - | func | |
1071 | - | then | |
1072 | - | else | |
1073 | - | ||
1074 | - | func | |
1075 | - | then | |
1074 | + | func ga (ei,gb) = { | |
1075 | + | let eA = (parseIntValue(fW[gb]) + ((fZ * fX[gb]) * fY)) | |
1076 | + | if ((0 > eA)) | |
1077 | + | then throw(((((((("Panic! Pieces of type=" + toString(gb)) + ", sign=") + toString(fZ)) + ", terrainCounts[i]=") + toString(fX[gb])) + ", landSizeIndex=") + toString(fY))) | |
1078 | + | else (ei :+ toString(eA)) | |
1079 | + | } | |
1080 | + | ||
1081 | + | let ek = cs | |
1082 | + | let el = size(ek) | |
1083 | + | let em = nil | |
1084 | + | func en (eo,ep) = if ((ep >= el)) | |
1085 | + | then eo | |
1086 | + | else ga(eo, ek[ep]) | |
1087 | + | ||
1088 | + | func eq (eo,ep) = if ((ep >= el)) | |
1089 | + | then eo | |
1076 | 1090 | else throw("List size exceeds 6") | |
1077 | 1091 | ||
1078 | - | | |
1092 | + | eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6) | |
1079 | 1093 | } | |
1080 | 1094 | ||
1081 | 1095 | ||
1082 | - | func | |
1083 | - | let | |
1084 | - | makeString( | |
1085 | - | } | |
1086 | - | ||
1087 | - | ||
1088 | - | func | |
1089 | - | ||
1090 | - | ||
1091 | - | func | |
1092 | - | func | |
1093 | - | let | |
1094 | - | ( | |
1096 | + | func gc (fX,fY,fZ) = { | |
1097 | + | let fW = split(valueOrElse(getString(cV()), "0_0_0_0_0_0"), "_") | |
1098 | + | makeString(fV(fW, fX, fY, fZ), "_") | |
1099 | + | } | |
1100 | + | ||
1101 | + | ||
1102 | + | func gd (ge) = [(size(split(ge, "A")) - 1), (size(split(ge, "B")) - 1), (size(split(ge, "C")) - 1), (size(split(ge, "D")) - 1), (size(split(ge, "E")) - 1), (size(split(ge, "F")) - 1)] | |
1103 | + | ||
1104 | + | ||
1105 | + | func gf (gg,fX,gh,fY,gi) = { | |
1106 | + | func gj (ei,gb) = { | |
1107 | + | let gk = ((fraction(gh, gi, aG) * fX[gb]) * fY) | |
1108 | + | (ei :+ toString((parseIntValue(gg[gb]) + gk))) | |
1095 | 1109 | } | |
1096 | 1110 | ||
1097 | - | let | |
1098 | - | let | |
1099 | - | let | |
1100 | - | let | |
1101 | - | func | |
1102 | - | then | |
1103 | - | else | |
1104 | - | ||
1105 | - | func | |
1106 | - | then | |
1111 | + | let et = { | |
1112 | + | let ek = cs | |
1113 | + | let el = size(ek) | |
1114 | + | let em = nil | |
1115 | + | func en (eo,ep) = if ((ep >= el)) | |
1116 | + | then eo | |
1117 | + | else gj(eo, ek[ep]) | |
1118 | + | ||
1119 | + | func eq (eo,ep) = if ((ep >= el)) | |
1120 | + | then eo | |
1107 | 1121 | else throw("List size exceeds 6") | |
1108 | 1122 | ||
1109 | - | | |
1123 | + | eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6) | |
1110 | 1124 | } | |
1111 | - | makeString( | |
1112 | - | } | |
1113 | - | ||
1114 | - | ||
1115 | - | func | |
1116 | - | func | |
1117 | - | let | |
1118 | - | $Tuple2(( | |
1125 | + | makeString(et, "_") | |
1126 | + | } | |
1127 | + | ||
1128 | + | ||
1129 | + | func gl (fX,gh,fY,gi) = { | |
1130 | + | func gj (ei,gb) = { | |
1131 | + | let gk = ((fraction(gh, gi, aG) * fX[gb]) * fY) | |
1132 | + | $Tuple2((ei._1 :+ gk), (ei._2 + gk)) | |
1119 | 1133 | } | |
1120 | 1134 | ||
1121 | - | let | |
1122 | - | let | |
1123 | - | let | |
1124 | - | func | |
1125 | - | then | |
1126 | - | else | |
1127 | - | ||
1128 | - | func | |
1129 | - | then | |
1135 | + | let ek = cs | |
1136 | + | let el = size(ek) | |
1137 | + | let em = $Tuple2(nil, 0) | |
1138 | + | func en (eo,ep) = if ((ep >= el)) | |
1139 | + | then eo | |
1140 | + | else gj(eo, ek[ep]) | |
1141 | + | ||
1142 | + | func eq (eo,ep) = if ((ep >= el)) | |
1143 | + | then eo | |
1130 | 1144 | else throw("List size exceeds 6") | |
1131 | 1145 | ||
1132 | - | | |
1133 | - | } | |
1134 | - | ||
1135 | - | ||
1136 | - | func | |
1137 | - | let | |
1138 | - | let | |
1139 | - | if (( | |
1140 | - | then $Tuple2(makeString( | |
1141 | - | else if (( | |
1146 | + | eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6) | |
1147 | + | } | |
1148 | + | ||
1149 | + | ||
1150 | + | func gm (gn,go,gp,gq) = { | |
1151 | + | let gr = gp._1 | |
1152 | + | let gs = gp._2 | |
1153 | + | if ((gs == 0)) | |
1154 | + | then $Tuple2(makeString(gn, "_"), makeString(go, "_")) | |
1155 | + | else if ((gq >= gs)) | |
1142 | 1156 | then { | |
1143 | - | func | |
1144 | - | ||
1145 | - | let | |
1146 | - | let | |
1147 | - | let | |
1148 | - | let | |
1149 | - | func | |
1150 | - | then | |
1151 | - | else | |
1152 | - | ||
1153 | - | func | |
1154 | - | then | |
1157 | + | func gt (ei,gb) = (ei :+ toString((parseIntValue(gn[gb]) + gr[gb]))) | |
1158 | + | ||
1159 | + | let et = { | |
1160 | + | let ek = cs | |
1161 | + | let el = size(ek) | |
1162 | + | let em = nil | |
1163 | + | func en (eo,ep) = if ((ep >= el)) | |
1164 | + | then eo | |
1165 | + | else gt(eo, ek[ep]) | |
1166 | + | ||
1167 | + | func eq (eo,ep) = if ((ep >= el)) | |
1168 | + | then eo | |
1155 | 1169 | else throw("List size exceeds 6") | |
1156 | 1170 | ||
1157 | - | | |
1171 | + | eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6) | |
1158 | 1172 | } | |
1159 | - | $Tuple2(makeString( | |
1173 | + | $Tuple2(makeString(et, "_"), makeString(go, "_")) | |
1160 | 1174 | } | |
1161 | 1175 | else { | |
1162 | - | func | |
1163 | - | let | |
1164 | - | $Tuple2(( | |
1176 | + | func gu (ei,gb) = { | |
1177 | + | let gv = fraction(gr[gb], gq, gs) | |
1178 | + | $Tuple2((ei._1 :+ toString((parseIntValue(gn[gb]) + gv))), (ei._2 :+ toString(((parseIntValue(go[gb]) + gr[gb]) - gv)))) | |
1165 | 1179 | } | |
1166 | 1180 | ||
1167 | - | let | |
1168 | - | let | |
1169 | - | let | |
1170 | - | let | |
1171 | - | func | |
1172 | - | then | |
1173 | - | else | |
1174 | - | ||
1175 | - | func | |
1176 | - | then | |
1181 | + | let et = { | |
1182 | + | let ek = cs | |
1183 | + | let el = size(ek) | |
1184 | + | let em = $Tuple2(nil, nil) | |
1185 | + | func en (eo,ep) = if ((ep >= el)) | |
1186 | + | then eo | |
1187 | + | else gu(eo, ek[ep]) | |
1188 | + | ||
1189 | + | func eq (eo,ep) = if ((ep >= el)) | |
1190 | + | then eo | |
1177 | 1191 | else throw("List size exceeds 6") | |
1178 | 1192 | ||
1179 | - | | |
1193 | + | eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6) | |
1180 | 1194 | } | |
1181 | - | $Tuple2(makeString( | |
1195 | + | $Tuple2(makeString(et._1, "_"), makeString(et._2, "_")) | |
1182 | 1196 | } | |
1183 | 1197 | } | |
1184 | 1198 | ||
1185 | 1199 | ||
1186 | - | func | |
1187 | - | then | |
1188 | - | else -( | |
1189 | - | ||
1190 | - | ||
1191 | - | let | |
1192 | - | ||
1193 | - | func | |
1194 | - | let | |
1195 | - | let | |
1200 | + | func gw (gx) = if ((gx >= toBigInt(0))) | |
1201 | + | then gx | |
1202 | + | else -(gx) | |
1203 | + | ||
1204 | + | ||
1205 | + | let gy = [[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]] | |
1206 | + | ||
1207 | + | func gz (de,gA) = { | |
1208 | + | let gB = toInt((de % dA)) | |
1209 | + | let gC = if ((gA[0] > gB)) | |
1196 | 1210 | then "A" | |
1197 | - | else if (( | |
1211 | + | else if ((gA[1] > gB)) | |
1198 | 1212 | then "B" | |
1199 | - | else if (( | |
1213 | + | else if ((gA[2] > gB)) | |
1200 | 1214 | then "C" | |
1201 | - | else if (( | |
1215 | + | else if ((gA[3] > gB)) | |
1202 | 1216 | then "D" | |
1203 | - | else if (( | |
1217 | + | else if ((gA[4] > gB)) | |
1204 | 1218 | then "E" | |
1205 | 1219 | else "F" | |
1206 | - | | |
1207 | - | } | |
1208 | - | ||
1209 | - | ||
1210 | - | func | |
1211 | - | let | |
1212 | - | func | |
1213 | - | ||
1214 | - | let | |
1215 | - | let | |
1216 | - | let | |
1217 | - | let | |
1218 | - | func | |
1219 | - | then | |
1220 | - | else | |
1221 | - | ||
1222 | - | func | |
1223 | - | then | |
1220 | + | gC | |
1221 | + | } | |
1222 | + | ||
1223 | + | ||
1224 | + | func gD (gE,gF) = { | |
1225 | + | let gG = gy[gF] | |
1226 | + | func gH (ei,ej) = $Tuple2((((((ei._1 + gz(ei._2, gG)) + gz((ei._2 / dA), gG)) + gz((ei._2 / dB), gG)) + gz((ei._2 / dC), gG)) + gz((ei._2 / dD), gG)), (ei._2 / dE)) | |
1227 | + | ||
1228 | + | let fM = { | |
1229 | + | let ek = [1, 2, 3, 4, 5] | |
1230 | + | let el = size(ek) | |
1231 | + | let em = $Tuple2("", (gE / dz)) | |
1232 | + | func en (eo,ep) = if ((ep >= el)) | |
1233 | + | then eo | |
1234 | + | else gH(eo, ek[ep]) | |
1235 | + | ||
1236 | + | func eq (eo,ep) = if ((ep >= el)) | |
1237 | + | then eo | |
1224 | 1238 | else throw("List size exceeds 5") | |
1225 | 1239 | ||
1226 | - | | |
1240 | + | eq(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5) | |
1227 | 1241 | } | |
1228 | - | | |
1229 | - | } | |
1230 | - | ||
1231 | - | ||
1232 | - | let | |
1233 | - | ||
1234 | - | let | |
1235 | - | ||
1236 | - | func | |
1237 | - | func | |
1238 | - | let | |
1239 | - | let | |
1240 | - | let | |
1242 | + | fM._1 | |
1243 | + | } | |
1244 | + | ||
1245 | + | ||
1246 | + | let gI = [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] | |
1247 | + | ||
1248 | + | let gJ = ["A", "B", "C", "D", "E", "F"] | |
1249 | + | ||
1250 | + | func gK (gL,fY) = { | |
1251 | + | func gM (ei,dc) = { | |
1252 | + | let eS = ei._2 | |
1253 | + | let gN = parseIntValue(dc) | |
1254 | + | let gx = if ((gN == 0)) | |
1241 | 1255 | then 0 | |
1242 | - | else if (( | |
1243 | - | then ( | |
1244 | - | else if (( | |
1256 | + | else if ((gN >= (4 * fY))) | |
1257 | + | then (gN / fY) | |
1258 | + | else if ((gN > (3 * fY))) | |
1245 | 1259 | then 3 | |
1246 | - | else ((( | |
1247 | - | $Tuple3(( | |
1260 | + | else (((gN - 1) / fY) + 1) | |
1261 | + | $Tuple3((ei._1 :+ gx), (ei._2 + 1), (ei._3 + gx)) | |
1248 | 1262 | } | |
1249 | 1263 | ||
1250 | - | let | |
1251 | - | let | |
1252 | - | let | |
1253 | - | let | |
1254 | - | func | |
1255 | - | then | |
1256 | - | else | |
1257 | - | ||
1258 | - | func | |
1259 | - | then | |
1264 | + | let fM = { | |
1265 | + | let ek = gL | |
1266 | + | let el = size(ek) | |
1267 | + | let em = $Tuple3(nil, 0, 0) | |
1268 | + | func en (eo,ep) = if ((ep >= el)) | |
1269 | + | then eo | |
1270 | + | else gM(eo, ek[ep]) | |
1271 | + | ||
1272 | + | func eq (eo,ep) = if ((ep >= el)) | |
1273 | + | then eo | |
1260 | 1274 | else throw("List size exceeds 6") | |
1261 | 1275 | ||
1262 | - | | |
1276 | + | eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6) | |
1263 | 1277 | } | |
1264 | - | let | |
1265 | - | let | |
1266 | - | let | |
1267 | - | func | |
1268 | - | let | |
1269 | - | then ( | |
1270 | - | else | |
1271 | - | let | |
1278 | + | let gO = fM._1 | |
1279 | + | let gP = value(indexOf(gO, max(gO))) | |
1280 | + | let gQ = (fM._3 - 25) | |
1281 | + | func gR (ei,cH) = { | |
1282 | + | let gS = if ((cH == gP)) | |
1283 | + | then (gO[cH] - gQ) | |
1284 | + | else gO[cH] | |
1285 | + | let gT = if ((gS == 0)) | |
1272 | 1286 | then nil | |
1273 | - | else split(drop(toString(pow(10, 0, | |
1274 | - | let | |
1275 | - | func | |
1276 | - | ||
1277 | - | let | |
1278 | - | let | |
1279 | - | let | |
1280 | - | let | |
1281 | - | func | |
1282 | - | then | |
1283 | - | else | |
1284 | - | ||
1285 | - | func | |
1286 | - | then | |
1287 | + | else split(drop(toString(pow(10, 0, gS, 0, 0, DOWN)), 1), "") | |
1288 | + | let fr = gJ[cH] | |
1289 | + | func gU (gV,gW) = (gV :+ fr) | |
1290 | + | ||
1291 | + | let gX = { | |
1292 | + | let ek = gT | |
1293 | + | let el = size(ek) | |
1294 | + | let em = nil | |
1295 | + | func gY (eo,ep) = if ((ep >= el)) | |
1296 | + | then eo | |
1297 | + | else gU(eo, ek[ep]) | |
1298 | + | ||
1299 | + | func gZ (eo,ep) = if ((ep >= el)) | |
1300 | + | then eo | |
1287 | 1301 | else throw("List size exceeds 25") | |
1288 | 1302 | ||
1289 | - | | |
1290 | - | } | |
1291 | - | ( | |
1303 | + | gZ(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25) | |
1304 | + | } | |
1305 | + | (ei ++ gX) | |
1292 | 1306 | } | |
1293 | 1307 | ||
1294 | - | let | |
1295 | - | let | |
1296 | - | let | |
1297 | - | let | |
1298 | - | func | |
1299 | - | then | |
1300 | - | else | |
1301 | - | ||
1302 | - | func | |
1303 | - | then | |
1308 | + | let et = { | |
1309 | + | let ek = cs | |
1310 | + | let el = size(ek) | |
1311 | + | let em = nil | |
1312 | + | func gY (eo,ep) = if ((ep >= el)) | |
1313 | + | then eo | |
1314 | + | else gR(eo, ek[ep]) | |
1315 | + | ||
1316 | + | func gZ (eo,ep) = if ((ep >= el)) | |
1317 | + | then eo | |
1304 | 1318 | else throw("List size exceeds 6") | |
1305 | 1319 | ||
1306 | - | | |
1320 | + | gZ(gY(gY(gY(gY(gY(gY(em, 0), 1), 2), 3), 4), 5), 6) | |
1307 | 1321 | } | |
1308 | - | func | |
1309 | - | ||
1310 | - | let | |
1311 | - | let | |
1312 | - | let | |
1313 | - | func | |
1314 | - | then | |
1315 | - | else | |
1316 | - | ||
1317 | - | func | |
1318 | - | then | |
1322 | + | func ha (ei,eS) = (ei + et[eS]) | |
1323 | + | ||
1324 | + | let ek = gI | |
1325 | + | let el = size(ek) | |
1326 | + | let em = "" | |
1327 | + | func hb (eo,ep) = if ((ep >= el)) | |
1328 | + | then eo | |
1329 | + | else ha(eo, ek[ep]) | |
1330 | + | ||
1331 | + | func hc (eo,ep) = if ((ep >= el)) | |
1332 | + | then eo | |
1319 | 1333 | else throw("List size exceeds 25") | |
1320 | 1334 | ||
1321 | - | ha(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(ek, 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) | |
1322 | - | } | |
1323 | - | ||
1324 | - | ||
1325 | - | func hb (hc) = { | |
1326 | - | let fJ = split(valueOrElse(getString(hc), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":") | |
1327 | - | [toString(valueOrElse(parseInt(fJ[be]), 0)), if ((size(split(fJ[bf], "_")) == aD)) | |
1328 | - | then fJ[bf] | |
1329 | - | else "0_0_0_0_0_0", if ((size(split(fJ[bg], "_")) == aD)) | |
1330 | - | then fJ[bg] | |
1331 | - | else "0_0_0_0_0_0", fJ[bh]] | |
1335 | + | hc(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25) | |
1332 | 1336 | } | |
1333 | 1337 | ||
1334 | 1338 | ||
1335 | 1339 | func hd (he) = { | |
1336 | - | let eE = split(he, "_") | |
1337 | - | ((aH * (parseIntValue(eE[1]) + 1)) * parseIntValue(eE[0])) | |
1340 | + | let fL = split(valueOrElse(getString(he), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":") | |
1341 | + | [toString(valueOrElse(parseInt(fL[be]), 0)), if ((size(split(fL[bf], "_")) == aD)) | |
1342 | + | then fL[bf] | |
1343 | + | else "0_0_0_0_0_0", if ((size(split(fL[bg], "_")) == aD)) | |
1344 | + | then fL[bg] | |
1345 | + | else "0_0_0_0_0_0", fL[bh]] | |
1338 | 1346 | } | |
1339 | 1347 | ||
1340 | 1348 | ||
1341 | 1349 | func hf (hg) = { | |
1342 | - | let hh = hg[aY] | |
1343 | - | func hi (eg,hj) = (eg + parseIntValue(hj)) | |
1344 | - | ||
1345 | - | func hk (eg,hj) = { | |
1346 | - | let cG = eg._1 | |
1347 | - | let dZ = (((parseIntValue(hj) + aU) - 1) / aU) | |
1348 | - | $Tuple2((cG + 1), (eg._2 + (dZ * cl))) | |
1350 | + | let eG = split(hg, "_") | |
1351 | + | ((aH * (parseIntValue(eG[1]) + 1)) * parseIntValue(eG[0])) | |
1352 | + | } | |
1353 | + | ||
1354 | + | ||
1355 | + | func hh (hi) = { | |
1356 | + | let hj = hi[aY] | |
1357 | + | func hk (ei,hl) = (ei + parseIntValue(hl)) | |
1358 | + | ||
1359 | + | func hm (ei,hl) = { | |
1360 | + | let cH = ei._1 | |
1361 | + | let eb = (((parseIntValue(hl) + aU) - 1) / aU) | |
1362 | + | $Tuple2((cH + 1), (ei._2 + (eb * cm))) | |
1349 | 1363 | } | |
1350 | 1364 | ||
1351 | - | let | |
1352 | - | let | |
1353 | - | let | |
1354 | - | let | |
1355 | - | func | |
1356 | - | then | |
1357 | - | else | |
1358 | - | ||
1359 | - | func | |
1360 | - | then | |
1365 | + | let hn = { | |
1366 | + | let ek = split(hi[aW], "_") | |
1367 | + | let el = size(ek) | |
1368 | + | let em = 0 | |
1369 | + | func en (eo,ep) = if ((ep >= el)) | |
1370 | + | then eo | |
1371 | + | else hk(eo, ek[ep]) | |
1372 | + | ||
1373 | + | func eq (eo,ep) = if ((ep >= el)) | |
1374 | + | then eo | |
1361 | 1375 | else throw("List size exceeds 6") | |
1362 | 1376 | ||
1363 | - | | |
1377 | + | eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6) | |
1364 | 1378 | } | |
1365 | - | let | |
1366 | - | let | |
1367 | - | let | |
1368 | - | let | |
1369 | - | func | |
1370 | - | then | |
1371 | - | else | |
1372 | - | ||
1373 | - | func | |
1374 | - | then | |
1379 | + | let ho = { | |
1380 | + | let ek = split(hi[aX], "_") | |
1381 | + | let el = size(ek) | |
1382 | + | let em = 0 | |
1383 | + | func gY (eo,ep) = if ((ep >= el)) | |
1384 | + | then eo | |
1385 | + | else hk(eo, ek[ep]) | |
1386 | + | ||
1387 | + | func gZ (eo,ep) = if ((ep >= el)) | |
1388 | + | then eo | |
1375 | 1389 | else throw("List size exceeds 6") | |
1376 | 1390 | ||
1377 | - | | |
1391 | + | gZ(gY(gY(gY(gY(gY(gY(em, 0), 1), 2), 3), 4), 5), 6) | |
1378 | 1392 | } | |
1379 | - | let | |
1393 | + | let hp = if ((hj == "")) | |
1380 | 1394 | then 0 | |
1381 | - | else ( let | |
1382 | - | let | |
1383 | - | let | |
1384 | - | func | |
1385 | - | then | |
1386 | - | else | |
1387 | - | ||
1388 | - | func | |
1389 | - | then | |
1395 | + | else ( let ek = split_4C(hj, "_") | |
1396 | + | let el = size(ek) | |
1397 | + | let em = $Tuple2(0, 0) | |
1398 | + | func hb (eo,ep) = if ((ep >= el)) | |
1399 | + | then eo | |
1400 | + | else hm(eo, ek[ep]) | |
1401 | + | ||
1402 | + | func hc (eo,ep) = if ((ep >= el)) | |
1403 | + | then eo | |
1390 | 1404 | else throw("List size exceeds 50") | |
1391 | 1405 | ||
1392 | - | | |
1393 | - | (( | |
1394 | - | } | |
1395 | - | ||
1396 | - | ||
1397 | - | func | |
1398 | - | let | |
1399 | - | let | |
1400 | - | let | |
1401 | - | let | |
1402 | - | let | |
1403 | - | let | |
1404 | - | then makeString(["0", toString( | |
1406 | + | hc(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50))._2 | |
1407 | + | ((hn + ho) + hp) | |
1408 | + | } | |
1409 | + | ||
1410 | + | ||
1411 | + | func hq (hr,hs,ht) = { | |
1412 | + | let hg = ((toString(hs) + "_") + toString(ht)) | |
1413 | + | let hu = hf(hg) | |
1414 | + | let hv = valueOrElse(getString(hr), (hg + ":0_0_0_0_0_0:0_0_0_0_0_0::0")) | |
1415 | + | let hw = split_4C(hv, ":") | |
1416 | + | let hx = hh(hw) | |
1417 | + | let hy = if ((5 > size(hw))) | |
1418 | + | then makeString(["0", toString(hx), toString((hu - hx)), toString(hu)], "_") | |
1405 | 1419 | else { | |
1406 | - | let | |
1407 | - | let | |
1408 | - | let | |
1409 | - | then parseIntValue( | |
1410 | - | else | |
1411 | - | makeString([toString( | |
1412 | - | } | |
1413 | - | [ | |
1414 | - | then | |
1415 | - | else "0_0_0_0_0_0", if ((size(split( | |
1416 | - | then | |
1417 | - | else "0_0_0_0_0_0", | |
1418 | - | } | |
1419 | - | ||
1420 | - | ||
1421 | - | func | |
1422 | - | let | |
1423 | - | let | |
1424 | - | (( | |
1425 | - | } | |
1426 | - | ||
1427 | - | ||
1428 | - | func | |
1420 | + | let hz = split(hw[aZ], "_") | |
1421 | + | let hA = parseIntValue(hz[ba]) | |
1422 | + | let hB = if ((size(hz) > 1)) | |
1423 | + | then parseIntValue(hz[bb]) | |
1424 | + | else hx | |
1425 | + | makeString([toString(hA), toString(hB), toString(((hu - hA) - hB)), toString(hu)], "_") | |
1426 | + | } | |
1427 | + | [hw[aV], if ((size(split(hw[aW], "_")) == aD)) | |
1428 | + | then hw[aW] | |
1429 | + | else "0_0_0_0_0_0", if ((size(split(hw[aX], "_")) == aD)) | |
1430 | + | then hw[aX] | |
1431 | + | else "0_0_0_0_0_0", hw[aY], hy] | |
1432 | + | } | |
1433 | + | ||
1434 | + | ||
1435 | + | func hC (hi) = { | |
1436 | + | let hD = hh(hi) | |
1437 | + | let hE = parseIntValue(split(hi[aZ], "_")[ba]) | |
1438 | + | ((hf(hi[aV]) - hD) - hE) | |
1439 | + | } | |
1440 | + | ||
1441 | + | ||
1442 | + | func hF (hG,hi,hH) = if ((size(hG) != 3)) | |
1429 | 1443 | then throw("cargoListStr should contain exactly 2 ':' separators") | |
1430 | 1444 | else { | |
1431 | - | let | |
1432 | - | let | |
1433 | - | let | |
1445 | + | let hI = split(hG[0], "_") | |
1446 | + | let hJ = split(hG[1], "_") | |
1447 | + | let hK = if ((hG[2] == "")) | |
1434 | 1448 | then nil | |
1435 | - | else split_4C( | |
1436 | - | if ((size( | |
1449 | + | else split_4C(hG[2], "_") | |
1450 | + | if ((size(hI) != aD)) | |
1437 | 1451 | then throw("All 6 resources should be passed") | |
1438 | - | else if ((size( | |
1452 | + | else if ((size(hJ) != aD)) | |
1439 | 1453 | then throw("All 6 materials should be passed") | |
1440 | 1454 | else { | |
1441 | - | let | |
1442 | - | let | |
1443 | - | let | |
1444 | - | let | |
1455 | + | let gq = hC(hi) | |
1456 | + | let hL = split(hi[aW], "_") | |
1457 | + | let hM = split(hi[aX], "_") | |
1458 | + | let hN = if ((hi[aY] == "")) | |
1445 | 1459 | then nil | |
1446 | - | else split_4C( | |
1447 | - | let | |
1448 | - | let | |
1449 | - | let | |
1460 | + | else split_4C(hi[aY], "_") | |
1461 | + | let go = split(hH[bf], "_") | |
1462 | + | let hO = split(hH[bg], "_") | |
1463 | + | let hP = if ((hH[bh] == "")) | |
1450 | 1464 | then nil | |
1451 | - | else split_4C( | |
1452 | - | func | |
1453 | - | let | |
1454 | - | let | |
1455 | - | let | |
1456 | - | let | |
1457 | - | if (( | |
1458 | - | then $Tuple4(( | |
1459 | - | else if (( | |
1460 | - | then if (( | |
1461 | - | then throw((((("Attempt to take " + | |
1462 | - | else $Tuple4(( | |
1463 | - | else if ((-( | |
1464 | - | then throw((((("Attempt to take " + toString(-( | |
1465 | - | else $Tuple4(( | |
1465 | + | else split_4C(hH[bh], "_") | |
1466 | + | func hQ (ei,hl) = { | |
1467 | + | let gb = ei._1 | |
1468 | + | let hR = parseIntValue(hl) | |
1469 | + | let hS = parseIntValue(hL[gb]) | |
1470 | + | let hT = parseIntValue(go[gb]) | |
1471 | + | if ((hR == 0)) | |
1472 | + | then $Tuple4((gb + 1), (ei._2 :+ hL[gb]), (ei._3 :+ go[gb]), ei._4) | |
1473 | + | else if ((hR > 0)) | |
1474 | + | then if ((hR > hT)) | |
1475 | + | then throw((((("Attempt to take " + hl) + " from backpack, but only ") + toString(hT)) + " available")) | |
1476 | + | else $Tuple4((gb + 1), (ei._2 :+ toString((hS + hR))), (ei._3 :+ toString((hT - hR))), (ei._4 + hR)) | |
1477 | + | else if ((-(hR) > hS)) | |
1478 | + | then throw((((("Attempt to take " + toString(-(hR))) + " from warehouse, but only ") + toString(hS)) + " available")) | |
1479 | + | else $Tuple4((gb + 1), (ei._2 :+ toString((hS + hR))), (ei._3 :+ toString((hT - hR))), (ei._4 + hR)) | |
1466 | 1480 | } | |
1467 | 1481 | ||
1468 | - | let | |
1469 | - | let | |
1470 | - | let | |
1471 | - | let | |
1472 | - | func | |
1473 | - | then | |
1474 | - | else | |
1475 | - | ||
1476 | - | func | |
1477 | - | then | |
1482 | + | let et = { | |
1483 | + | let ek = hI | |
1484 | + | let el = size(ek) | |
1485 | + | let em = $Tuple4(0, nil, nil, 0) | |
1486 | + | func en (eo,ep) = if ((ep >= el)) | |
1487 | + | then eo | |
1488 | + | else hQ(eo, ek[ep]) | |
1489 | + | ||
1490 | + | func eq (eo,ep) = if ((ep >= el)) | |
1491 | + | then eo | |
1478 | 1492 | else throw("List size exceeds 6") | |
1479 | 1493 | ||
1480 | - | | |
1494 | + | eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6) | |
1481 | 1495 | } | |
1482 | - | func | |
1483 | - | let | |
1484 | - | let | |
1485 | - | let | |
1486 | - | let | |
1487 | - | if (( | |
1488 | - | then $Tuple4(( | |
1489 | - | else if (( | |
1490 | - | then if (( | |
1491 | - | then throw((((("Attempt to take " + | |
1492 | - | else $Tuple4(( | |
1493 | - | else if ((-( | |
1494 | - | then throw((((("Attempt to take " + toString(-( | |
1495 | - | else $Tuple4(( | |
1496 | + | func hU (ei,hl) = { | |
1497 | + | let gb = ei._1 | |
1498 | + | let hR = parseIntValue(hl) | |
1499 | + | let hV = parseIntValue(hM[gb]) | |
1500 | + | let hW = parseIntValue(hO[gb]) | |
1501 | + | if ((hR == 0)) | |
1502 | + | then $Tuple4((gb + 1), (ei._2 :+ hM[gb]), (ei._3 :+ hO[gb]), ei._4) | |
1503 | + | else if ((hR > 0)) | |
1504 | + | then if ((hR > hW)) | |
1505 | + | then throw((((("Attempt to take " + hl) + " from backpack, but only ") + toString(hW)) + " available")) | |
1506 | + | else $Tuple4((gb + 1), (ei._2 :+ toString((hV + hR))), (ei._3 :+ toString((hW - hR))), (ei._4 + hR)) | |
1507 | + | else if ((-(hR) > hV)) | |
1508 | + | then throw((((("Attempt to take " + toString(-(hR))) + " from warehouse, but only ") + toString(hV)) + " available")) | |
1509 | + | else $Tuple4((gb + 1), (ei._2 :+ toString((hV + hR))), (ei._3 :+ toString((hW - hR))), (ei._4 + hR)) | |
1496 | 1510 | } | |
1497 | 1511 | ||
1498 | - | let | |
1499 | - | let | |
1500 | - | let | |
1501 | - | let | |
1502 | - | func | |
1503 | - | then | |
1504 | - | else | |
1505 | - | ||
1506 | - | func | |
1507 | - | then | |
1512 | + | let fH = { | |
1513 | + | let ek = hJ | |
1514 | + | let el = size(ek) | |
1515 | + | let em = $Tuple4(0, nil, nil, et._4) | |
1516 | + | func gY (eo,ep) = if ((ep >= el)) | |
1517 | + | then eo | |
1518 | + | else hU(eo, ek[ep]) | |
1519 | + | ||
1520 | + | func gZ (eo,ep) = if ((ep >= el)) | |
1521 | + | then eo | |
1508 | 1522 | else throw("List size exceeds 6") | |
1509 | 1523 | ||
1510 | - | | |
1524 | + | gZ(gY(gY(gY(gY(gY(gY(em, 0), 1), 2), 3), 4), 5), 6) | |
1511 | 1525 | } | |
1512 | - | func | |
1513 | - | let | |
1514 | - | let | |
1515 | - | let | |
1516 | - | then parseIntValue( | |
1526 | + | func hX (ei,hl) = { | |
1527 | + | let gb = ei._1 | |
1528 | + | let hR = parseIntValue(hl) | |
1529 | + | let hY = if ((size(hN) > gb)) | |
1530 | + | then parseIntValue(hN[gb]) | |
1517 | 1531 | else 0 | |
1518 | - | let | |
1519 | - | then parseIntValue( | |
1532 | + | let hZ = if ((size(hP) > gb)) | |
1533 | + | then parseIntValue(hP[gb]) | |
1520 | 1534 | else 0 | |
1521 | - | if (( | |
1522 | - | then $Tuple4(( | |
1523 | - | else if (( | |
1524 | - | then if (( | |
1525 | - | then throw((((("Attempt to take " + | |
1535 | + | if ((hR == 0)) | |
1536 | + | then $Tuple4((gb + 1), (ei._2 :+ toString(hY)), (ei._3 :+ toString(hZ)), ei._4) | |
1537 | + | else if ((hR > 0)) | |
1538 | + | then if ((hR > hZ)) | |
1539 | + | then throw((((("Attempt to take " + hl) + " from backpack, but only ") + toString(hZ)) + " available")) | |
1526 | 1540 | else { | |
1527 | - | let | |
1528 | - | $Tuple4(( | |
1541 | + | let fk = (dY((hY + hR), aU) - dY(hY, aU)) | |
1542 | + | $Tuple4((gb + 1), (ei._2 :+ toString((hY + hR))), (ei._3 :+ toString((hZ - hR))), (ei._4 + fk)) | |
1529 | 1543 | } | |
1530 | - | else if ((-( | |
1531 | - | then throw((((("Attempt to take " + toString(-( | |
1544 | + | else if ((-(hR) > hY)) | |
1545 | + | then throw((((("Attempt to take " + toString(-(hR))) + " from warehouse, but only ") + toString(hY)) + " available")) | |
1532 | 1546 | else { | |
1533 | - | let | |
1534 | - | $Tuple4(( | |
1547 | + | let fk = (dY((hY + hR), aU) - dY(hY, aU)) | |
1548 | + | $Tuple4((gb + 1), (ei._2 :+ toString((hY + hR))), (ei._3 :+ toString((hZ - hR))), (ei._4 + fk)) | |
1535 | 1549 | } | |
1536 | 1550 | } | |
1537 | 1551 | ||
1538 | - | let | |
1552 | + | let fL = if ((size(hK) != 0)) | |
1539 | 1553 | then { | |
1540 | - | let | |
1541 | - | let | |
1542 | - | let | |
1543 | - | func | |
1544 | - | then | |
1545 | - | else | |
1546 | - | ||
1547 | - | func | |
1548 | - | then | |
1554 | + | let ek = hK | |
1555 | + | let el = size(ek) | |
1556 | + | let em = $Tuple4(0, nil, nil, fH._4) | |
1557 | + | func hb (eo,ep) = if ((ep >= el)) | |
1558 | + | then eo | |
1559 | + | else hX(eo, ek[ep]) | |
1560 | + | ||
1561 | + | func hc (eo,ep) = if ((ep >= el)) | |
1562 | + | then eo | |
1549 | 1563 | else throw("List size exceeds 50") | |
1550 | 1564 | ||
1551 | - | | |
1565 | + | hc(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50) | |
1552 | 1566 | } | |
1553 | - | else $Tuple4(0, | |
1554 | - | let | |
1555 | - | if (( | |
1556 | - | then throw((((("Attempt to put total " + toString( | |
1557 | - | else $Tuple7(makeString( | |
1567 | + | else $Tuple4(0, hN, hP, fH._4) | |
1568 | + | let ia = fL._4 | |
1569 | + | if ((ia > gq)) | |
1570 | + | then throw((((("Attempt to put total " + toString(ia)) + " stuff, but only ") + toString(gq)) + " warehouse space left")) | |
1571 | + | else $Tuple7(makeString(et._2, "_"), makeString(fH._2, "_"), makeString_2C(fL._2, "_"), makeString(et._3, "_"), makeString(fH._3, "_"), makeString_2C(fL._3, "_"), ia) | |
1558 | 1572 | } | |
1559 | 1573 | } | |
1560 | 1574 | ||
1561 | 1575 | ||
1562 | - | func | |
1563 | - | let bH = toString( | |
1564 | - | let | |
1565 | - | let | |
1566 | - | let | |
1567 | - | let | |
1568 | - | let | |
1569 | - | let | |
1570 | - | let | |
1571 | - | let bk = calculateAssetId( | |
1572 | - | let | |
1573 | - | $Tuple2([IntegerEntry( | |
1574 | - | } | |
1575 | - | ||
1576 | - | ||
1577 | - | func | |
1576 | + | func ib (ic,id) = { | |
1577 | + | let bH = toString(ic) | |
1578 | + | let ie = gw(toBigInt(id)) | |
1579 | + | let if = valueOrElse(getInteger(dG()), (dF + 1)) | |
1580 | + | let dK = toString(if) | |
1581 | + | let gF = toInt((ie % dz)) | |
1582 | + | let ge = gD(ie, gF) | |
1583 | + | let cX = aM[gF] | |
1584 | + | let ig = Issue(dX(dK, "S"), makeString([dK, "S", ge, cX], "_"), 1, 0, false) | |
1585 | + | let bk = calculateAssetId(ig) | |
1586 | + | let ih = toBase58String(bk) | |
1587 | + | $Tuple2([IntegerEntry(dG(), (if + 1)), ig, StringEntry(dJ(dK), ih), StringEntry(bj(ih), bH), StringEntry(dM(dK), bH), IntegerEntry(bt(ih), 0), IntegerEntry(dL(ih, bH), 0), ScriptTransfer(ic, 1, bk)], $Tuple2(ih, cX)) | |
1588 | + | } | |
1589 | + | ||
1590 | + | ||
1591 | + | func ii (bH,ij,ik) = if (!(sigVerify_8Kb(ij, ik, dr))) | |
1578 | 1592 | then throw("signature does not match") | |
1579 | 1593 | else { | |
1580 | - | let | |
1581 | - | let | |
1582 | - | let | |
1583 | - | let | |
1584 | - | let | |
1585 | - | let | |
1586 | - | let | |
1587 | - | let | |
1588 | - | if (if (( | |
1594 | + | let eG = split(toUtf8String(ij), ";") | |
1595 | + | let il = split(eG[0], "|") | |
1596 | + | let im = split(il[dT], "_") | |
1597 | + | let in = parseIntValue(im[0]) | |
1598 | + | let io = parseIntValue(im[1]) | |
1599 | + | let ip = split(eG[1], ":") | |
1600 | + | let iq = ip[0] | |
1601 | + | let ir = parseIntValue(il[dU]) | |
1602 | + | if (if ((ir > (lastBlock.timestamp + dt))) | |
1589 | 1603 | then true | |
1590 | - | else ((lastBlock.timestamp - | |
1591 | - | then throw(((("signature outdated: logTime=" + toString( | |
1604 | + | else ((lastBlock.timestamp - dt) > ir)) | |
1605 | + | then throw(((("signature outdated: logTime=" + toString(ir)) + ", bcTime=") + toString(lastBlock.timestamp))) | |
1592 | 1606 | else { | |
1593 | - | let | |
1594 | - | let | |
1595 | - | if (( | |
1596 | - | then throw(((("Tx ids don't match! In state: " + | |
1607 | + | let is = ip[1] | |
1608 | + | let it = valueOrElse(getString(bi(bH)), "") | |
1609 | + | if ((it != is)) | |
1610 | + | then throw(((("Tx ids don't match! In state: " + it) + ", in msg: ") + is)) | |
1597 | 1611 | else { | |
1598 | 1612 | let z = valueOrErrorMessage(getString(bC(bH)), "You don't have a duck staked") | |
1599 | - | let | |
1600 | - | let | |
1601 | - | let | |
1602 | - | if (( | |
1603 | - | then throw(((("oldHealth=" + toString( | |
1604 | - | else if ((0 >= | |
1613 | + | let iu = y(z) | |
1614 | + | let iv = ae(valueOrElse(getInteger(C(z)), 0)) | |
1615 | + | let iw = valueOrElse(getInteger(iu), iv) | |
1616 | + | if ((iw != in)) | |
1617 | + | then throw(((("oldHealth=" + toString(iw)) + " from state does not match one from flight log=") + toString(in))) | |
1618 | + | else if ((0 >= in)) | |
1605 | 1619 | then throw("You can't fly with zero health") | |
1606 | - | else if (!( | |
1620 | + | else if (!(fN(z))) | |
1607 | 1621 | then throw("Equipment incompatible") | |
1608 | 1622 | else { | |
1609 | - | let | |
1610 | - | then | |
1623 | + | let ix = if ((size(il) > dV)) | |
1624 | + | then il[dV] | |
1611 | 1625 | else "" | |
1612 | - | let | |
1613 | - | then | |
1626 | + | let iy = if ((size(il) > dW)) | |
1627 | + | then il[dW] | |
1614 | 1628 | else "" | |
1615 | - | let | |
1616 | - | then ( | |
1629 | + | let iz = if (if ((io > 0)) | |
1630 | + | then (ix == "$") | |
1617 | 1631 | else false) | |
1618 | - | then | |
1632 | + | then dd(invoke(cI, "sendUsdtPrize", [bH], nil)) | |
1619 | 1633 | else 0 | |
1620 | - | $Tuple5( | |
1634 | + | $Tuple5(io, z, iz, iq, iy) | |
1621 | 1635 | } | |
1622 | 1636 | } | |
1623 | 1637 | } | |
1624 | 1638 | } | |
1625 | 1639 | ||
1626 | 1640 | ||
1627 | - | func | |
1628 | - | let bH = toString( | |
1629 | - | let | |
1630 | - | let z = | |
1631 | - | let | |
1632 | - | let | |
1633 | - | let | |
1634 | - | let | |
1635 | - | let | |
1636 | - | let | |
1637 | - | let | |
1638 | - | let | |
1639 | - | let | |
1640 | - | let | |
1641 | - | if ((0 >= | |
1642 | - | then $Tuple3([IntegerEntry( | |
1641 | + | func iA (ic,id,ij,ik) = { | |
1642 | + | let bH = toString(ic) | |
1643 | + | let gG = ii(bH, ij, ik) | |
1644 | + | let z = gG._2 | |
1645 | + | let iu = y(z) | |
1646 | + | let he = bD(z) | |
1647 | + | let hH = hd(he) | |
1648 | + | let iB = split(hH[bg], "_") | |
1649 | + | let iC = makeString(eu(true, iB, dx), "_") | |
1650 | + | let fO = E(z) | |
1651 | + | let iD = valueOrElse(getString(fO), ",;,_,;,_,;,_,;,_,;,_,;,") | |
1652 | + | let iE = eB(iD, gG._5) | |
1653 | + | let iF = iE._1 | |
1654 | + | let iG = iE._2 | |
1655 | + | if ((0 >= gG._1)) | |
1656 | + | then $Tuple3([IntegerEntry(iu, 0), StringEntry(fO, iF)], "", 0) | |
1643 | 1657 | else { | |
1644 | - | let | |
1645 | - | let | |
1646 | - | $Tuple3(( | |
1658 | + | let iH = ib(ic, id) | |
1659 | + | let ih = iH._2._1 | |
1660 | + | $Tuple3((iH._1 ++ (if (iG) | |
1647 | 1661 | then [StringEntry(K(z), "0_0_0_0_0")] | |
1648 | - | else ((((nil :+ StringEntry(bE(z), makeString([ | |
1649 | - | } | |
1650 | - | } | |
1651 | - | ||
1652 | - | ||
1653 | - | func | |
1654 | - | let | |
1655 | - | let | |
1656 | - | let | |
1657 | - | let | |
1658 | - | ((aF + fraction(aF, (( | |
1659 | - | } | |
1660 | - | ||
1661 | - | ||
1662 | - | func | |
1663 | - | let | |
1664 | - | then $Tuple2( | |
1662 | + | else ((((nil :+ StringEntry(bE(z), makeString([iH._2._2, "L", ih], "_"))) :+ IntegerEntry(iu, gG._1)) :+ StringEntry(fO, iF)) :+ StringEntry(he, makeString([hH[be], hH[bf], iC, hH[bh]], ":"))))), ih, gG._3) | |
1663 | + | } | |
1664 | + | } | |
1665 | + | ||
1666 | + | ||
1667 | + | func iI (O,iJ) = { | |
1668 | + | let ht = valueOrElse(getInteger(bt(O)), 0) | |
1669 | + | let iK = valueOrElse(getInteger(bn(aC, O)), 0) | |
1670 | + | let iL = (ht / 6) | |
1671 | + | let iM = (ht / 7) | |
1672 | + | ((aF + fraction(aF, ((ht + iL) + (2 * iM)), 5)) + fraction(aF, iK, (iJ * 5))) | |
1673 | + | } | |
1674 | + | ||
1675 | + | ||
1676 | + | func iN (b,iO,iP) = { | |
1677 | + | let iQ = if ((iO == dQ)) | |
1678 | + | then $Tuple2(iP, valueOrElse(getString(bC(b)), "")) | |
1665 | 1679 | else { | |
1666 | 1680 | let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked") | |
1667 | - | let | |
1668 | - | let | |
1669 | - | if (( | |
1670 | - | then throw((("Duck location type is " + | |
1671 | - | else $Tuple2( | |
1672 | - | } | |
1673 | - | let O = | |
1674 | - | let | |
1675 | - | let | |
1676 | - | let | |
1677 | - | let | |
1678 | - | let | |
1679 | - | if (( | |
1681 | + | let iR = valueOrElse(getString(bE(z)), aI) | |
1682 | + | let iS = split(value(iR), "_") | |
1683 | + | if ((iS[bX] != "L")) | |
1684 | + | then throw((("Duck location type is " + iS[bX]) + ", but should be L")) | |
1685 | + | else $Tuple2(iS[bY], z) | |
1686 | + | } | |
1687 | + | let O = iQ._1 | |
1688 | + | let iT = iQ._2 | |
1689 | + | let iU = value(assetInfo(fromBase58String(O))) | |
1690 | + | let iV = bm(O) | |
1691 | + | let iW = valueOrErrorMessage(getInteger(iV), (("Land " + iU.name) + " is not staked")) | |
1692 | + | let iX = valueOrErrorMessage(getString(bj(O)), (("NFT " + iU.name) + " is orphaned")) | |
1693 | + | if ((iX != b)) | |
1680 | 1694 | then throw((aA + " is not yours")) | |
1681 | 1695 | else { | |
1682 | - | let | |
1683 | - | $Tuple4( | |
1684 | - | } | |
1685 | - | } | |
1686 | - | ||
1687 | - | ||
1688 | - | func | |
1696 | + | let iY = split(iU.description, "_") | |
1697 | + | $Tuple4(iT, O, iY, iW) | |
1698 | + | } | |
1699 | + | } | |
1700 | + | ||
1701 | + | ||
1702 | + | func iZ (b,dZ,iO,iP) = if ((0 > dZ)) | |
1689 | 1703 | then throw("Negative amount") | |
1690 | 1704 | else { | |
1691 | - | let | |
1692 | - | let | |
1693 | - | let | |
1694 | - | let | |
1695 | - | if ((0 > | |
1696 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1705 | + | let fr = iN(b, iO, iP) | |
1706 | + | let dh = fr._3[cO] | |
1707 | + | let fX = gd(fr._3[cP]) | |
1708 | + | let gh = (lastBlock.timestamp - fr._4) | |
1709 | + | if ((0 > gh)) | |
1710 | + | then throw(((("Saved timestamp is in future, saved = " + toString(fr._4)) + ", current = ") + toString(lastBlock.timestamp))) | |
1697 | 1711 | else { | |
1698 | - | let | |
1699 | - | let | |
1700 | - | let | |
1701 | - | if (( | |
1702 | - | then throw(((("Not enough resources, available = " + toString( | |
1712 | + | let iJ = dg(dh) | |
1713 | + | let ja = iI(fr._2, iJ) | |
1714 | + | let jb = fraction(gh, (ja * iJ), aG) | |
1715 | + | if ((dZ > jb)) | |
1716 | + | then throw(((("Not enough resources, available = " + toString(jb)) + ", requested = ") + toString(dZ))) | |
1703 | 1717 | else { | |
1704 | - | let | |
1705 | - | let | |
1706 | - | let | |
1707 | - | let | |
1708 | - | let | |
1709 | - | let | |
1710 | - | let | |
1711 | - | let | |
1712 | - | let | |
1713 | - | if (if (( | |
1714 | - | then ( | |
1718 | + | let jc = fraction((jb - dZ), aG, (ja * iJ)) | |
1719 | + | let jd = (lastBlock.timestamp - jc) | |
1720 | + | let hs = (iJ / cn) | |
1721 | + | let gp = gl(fX, (gh - jc), hs, ja) | |
1722 | + | let hr = bs(fr._2) | |
1723 | + | let ht = valueOrElse(getInteger(bt(fr._2)), 0) | |
1724 | + | let hi = hq(hr, hs, ht) | |
1725 | + | let hz = split(hi[aZ], "_") | |
1726 | + | let gq = parseIntValue(hz[bc]) | |
1727 | + | if (if ((iO == dQ)) | |
1728 | + | then (dZ > gq) | |
1715 | 1729 | else false) | |
1716 | - | then throw((("Only " + toString( | |
1730 | + | then throw((("Only " + toString(gq)) + " space left in warehouse")) | |
1717 | 1731 | else { | |
1718 | - | let | |
1719 | - | let | |
1720 | - | let | |
1721 | - | let | |
1722 | - | let | |
1723 | - | then $Tuple4( | |
1724 | - | else if (( | |
1725 | - | then $Tuple4( | |
1732 | + | let he = bD(fr._1) | |
1733 | + | let hH = hd(he) | |
1734 | + | let go = split(hH[bf], "_") | |
1735 | + | let gn = split(hi[aW], "_") | |
1736 | + | let je = if ((iO == dQ)) | |
1737 | + | then $Tuple4(gf(gn, fX, (gh - jc), hs, ja), hH[bf], (parseIntValue(hz[bb]) + gp._2), (parseIntValue(hz[bc]) - gp._2)) | |
1738 | + | else if ((iO == dR)) | |
1739 | + | then $Tuple4(hi[aW], gf(go, fX, (gh - jc), hs, ja), parseIntValue(hz[bb]), parseIntValue(hz[bc])) | |
1726 | 1740 | else { | |
1727 | - | let | |
1728 | - | let | |
1729 | - | $Tuple4( | |
1741 | + | let jf = gm(gn, go, gp, gq) | |
1742 | + | let jg = min([parseIntValue(hz[bc]), gp._2]) | |
1743 | + | $Tuple4(jf._1, jf._2, (parseIntValue(hz[bb]) + jg), (parseIntValue(hz[bc]) - jg)) | |
1730 | 1744 | } | |
1731 | - | let | |
1732 | - | let | |
1733 | - | let | |
1734 | - | let | |
1735 | - | $Tuple5([IntegerEntry(bm( | |
1745 | + | let jh = je._1 | |
1746 | + | let ji = je._2 | |
1747 | + | let jj = je._3 | |
1748 | + | let jk = je._4 | |
1749 | + | $Tuple5([IntegerEntry(bm(fr._2), jd), IntegerEntry(bp(aA, fr._2, b), jd)], he, [hH[be], ji, hH[bg], hH[bh]], hr, [hi[aV], jh, hi[aX], hi[aY], makeString([hz[ba], toString(jj), toString(jk), hz[bd]], "_")]) | |
1736 | 1750 | } | |
1737 | 1751 | } | |
1738 | 1752 | } | |
1739 | 1753 | } | |
1740 | 1754 | ||
1741 | 1755 | ||
1742 | - | func | |
1743 | - | let | |
1744 | - | let | |
1745 | - | let | |
1746 | - | | |
1747 | - | } | |
1748 | - | ||
1749 | - | ||
1750 | - | func | |
1751 | - | let b = toString( | |
1752 | - | let | |
1753 | - | let | |
1754 | - | let | |
1755 | - | let | |
1756 | - | if (if (!( | |
1757 | - | then ( | |
1756 | + | func jl (b,O,iJ,iO) = { | |
1757 | + | let iV = bm(O) | |
1758 | + | let iW = value(getInteger(iV)) | |
1759 | + | let jb = (fraction((lastBlock.timestamp - iW), iI(O, iJ), aG) * iJ) | |
1760 | + | iZ(b, jb, iO, O) | |
1761 | + | } | |
1762 | + | ||
1763 | + | ||
1764 | + | func jm (ev,ic,jn,O) = { | |
1765 | + | let b = toString(ic) | |
1766 | + | let fr = iN(b, dS, O) | |
1767 | + | let iJ = dg(fr._3[cO]) | |
1768 | + | let jo = bt(fr._2) | |
1769 | + | let jp = valueOrElse(getInteger(jo), 0) | |
1770 | + | if (if (!(cd)) | |
1771 | + | then (jp >= 3) | |
1758 | 1772 | else false) | |
1759 | 1773 | then throw("Currently max infrastructure level = 3") | |
1760 | 1774 | else { | |
1761 | - | let | |
1762 | - | let aj = ( | |
1763 | - | if (if ( | |
1764 | - | then (aj > | |
1775 | + | let jq = ((sqrt(iJ, 0, 0, DOWN) / 5) + 2) | |
1776 | + | let aj = (jp + 1) | |
1777 | + | if (if (cd) | |
1778 | + | then (aj > jq) | |
1765 | 1779 | else false) | |
1766 | - | then throw(("Currently max infrastructure level = " + toString( | |
1780 | + | then throw(("Currently max infrastructure level = " + toString(jq))) | |
1767 | 1781 | else { | |
1768 | - | let | |
1769 | - | if (if (!( | |
1770 | - | then ( | |
1782 | + | let jr = fraction(dw, (iJ * aj), cn) | |
1783 | + | if (if (!(ev)) | |
1784 | + | then (jn != jr) | |
1771 | 1785 | else false) | |
1772 | - | then throw(("Payment attached should be " + toString( | |
1786 | + | then throw(("Payment attached should be " + toString(jr))) | |
1773 | 1787 | else { | |
1774 | - | let | |
1775 | - | let | |
1776 | - | let | |
1777 | - | let | |
1778 | - | let | |
1779 | - | let | |
1780 | - | let | |
1781 | - | let | |
1782 | - | let | |
1783 | - | let | |
1784 | - | let | |
1785 | - | let | |
1786 | - | $Tuple3(([IntegerEntry( | |
1788 | + | let he = bD(fr._1) | |
1789 | + | let hH = hd(he) | |
1790 | + | let iB = split(hH[bg], "_") | |
1791 | + | let js = fraction(ci, (iJ * aj), cn) | |
1792 | + | let iC = makeString(eu(ev, iB, js), "_") | |
1793 | + | let jt = jl(b, fr._2, iJ, dS) | |
1794 | + | let ju = jt._5 | |
1795 | + | let jv = hf(ju[aV]) | |
1796 | + | let jw = makeString([split(ju[aV], "_")[0], toString(aj)], "_") | |
1797 | + | let jx = hf(jw) | |
1798 | + | let hz = split(ju[aZ], "_") | |
1799 | + | let jy = makeString([hz[ba], hz[bb], toString(((parseIntValue(hz[bc]) + jx) - jv)), toString(jx)], "_") | |
1800 | + | $Tuple3(([IntegerEntry(jo, aj), IntegerEntry(dL(fr._2, b), aj), StringEntry(he, makeString([hH[be], jt._3[bf], iC, hH[bh]], ":")), StringEntry(jt._4, makeString([jw, ju[aW], ju[aX], ju[aY], jy], ":"))] ++ jt._1), aj, js) | |
1787 | 1801 | } | |
1788 | 1802 | } | |
1789 | 1803 | } | |
1790 | 1804 | } | |
1791 | 1805 | ||
1792 | 1806 | ||
1793 | - | func | |
1794 | - | let | |
1795 | - | let | |
1796 | - | let ad = valueOrElse(getInteger(al, | |
1797 | - | let ai = (ad + | |
1798 | - | let | |
1799 | - | let | |
1800 | - | $Tuple2([IntegerEntry( | |
1801 | - | } | |
1802 | - | ||
1803 | - | ||
1804 | - | func | |
1805 | - | let | |
1806 | - | let | |
1807 | - | let ad = valueOrElse(getInteger(al, | |
1808 | - | let ai = (ad + | |
1809 | - | let | |
1810 | - | let | |
1811 | - | $Tuple2([IntegerEntry( | |
1812 | - | } | |
1813 | - | ||
1814 | - | ||
1815 | - | func | |
1807 | + | func jz (z,jA) = { | |
1808 | + | let jB = C(z) | |
1809 | + | let jC = B(z) | |
1810 | + | let ad = valueOrElse(getInteger(al, jC), 0) | |
1811 | + | let ai = (ad + jA) | |
1812 | + | let jD = ag(valueOrElse(getInteger(al, jB), 0), ai) | |
1813 | + | let jE = D(z) | |
1814 | + | $Tuple2([IntegerEntry(jB, jD[0]), IntegerEntry(jC, ai), IntegerEntry(jE, (valueOrElse(getInteger(jE), 0) + jD[1]))], ai) | |
1815 | + | } | |
1816 | + | ||
1817 | + | ||
1818 | + | func jF (b,jA) = { | |
1819 | + | let jB = G(b) | |
1820 | + | let jC = F(b) | |
1821 | + | let ad = valueOrElse(getInteger(al, jC), 0) | |
1822 | + | let ai = (ad + jA) | |
1823 | + | let jD = ag(valueOrElse(getInteger(al, jB), 0), ai) | |
1824 | + | let jE = H(b) | |
1825 | + | $Tuple2([IntegerEntry(jB, jD[0]), IntegerEntry(jC, ai), IntegerEntry(jE, (valueOrElse(getInteger(jE), 0) + jD[1]))], ai) | |
1826 | + | } | |
1827 | + | ||
1828 | + | ||
1829 | + | func jG (b) = { | |
1816 | 1830 | let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked") | |
1817 | - | let | |
1818 | - | let | |
1819 | - | if (!(isDefined( | |
1831 | + | let jH = bx(b) | |
1832 | + | let jI = getString(jH) | |
1833 | + | if (!(isDefined(jI))) | |
1820 | 1834 | then throw("You are not eligible for ONBOARD artifact") | |
1821 | 1835 | else { | |
1822 | - | let | |
1823 | - | let | |
1824 | - | if (isDefined( | |
1825 | - | then throw(("You already used your ONBOARD artifact on duck " + value( | |
1836 | + | let jJ = bz(b) | |
1837 | + | let jK = getString(jJ) | |
1838 | + | if (isDefined(jK)) | |
1839 | + | then throw(("You already used your ONBOARD artifact on duck " + value(jK))) | |
1826 | 1840 | else { | |
1827 | - | let | |
1828 | - | let | |
1829 | - | if (isDefined( | |
1830 | - | then throw(((("The duck " + z) + " already got points from ONBOARD artifact from user ") + value( | |
1831 | - | else ([StringEntry( | |
1841 | + | let jL = by(z) | |
1842 | + | let jM = getString(jL) | |
1843 | + | if (isDefined(jM)) | |
1844 | + | then throw(((("The duck " + z) + " already got points from ONBOARD artifact from user ") + value(jM))) | |
1845 | + | else ([StringEntry(jJ, z), StringEntry(jL, b)] ++ jz(z, aa)._1) | |
1832 | 1846 | } | |
1833 | 1847 | } | |
1834 | 1848 | } | |
1835 | 1849 | ||
1836 | 1850 | ||
1837 | - | func | |
1838 | - | let | |
1839 | - | let O = | |
1840 | - | let | |
1841 | - | let | |
1842 | - | if ((valueOrElse(getInteger( | |
1851 | + | func jN (b,iP) = { | |
1852 | + | let fr = iN(b, dS, iP) | |
1853 | + | let O = fr._2 | |
1854 | + | let iJ = dg(fr._3[cO]) | |
1855 | + | let jO = bn(aC, O) | |
1856 | + | if ((valueOrElse(getInteger(jO), 0) > 0)) | |
1843 | 1857 | then throw("Presale artifact is already activated") | |
1844 | - | else if ((parseIntValue( | |
1858 | + | else if ((parseIntValue(fr._3[cN]) > dF)) | |
1845 | 1859 | then throw((((aA + " ") + O) + " is not eligible for presale artifact")) | |
1846 | 1860 | else { | |
1847 | - | let | |
1848 | - | ((( | |
1861 | + | let jt = jl(b, O, iJ, dS) | |
1862 | + | (((jt._1 :+ IntegerEntry(jO, iJ)) :+ StringEntry(jt._2, makeString(jt._3, ":"))) :+ StringEntry(jt._4, makeString(jt._5, ":"))) | |
1849 | 1863 | } | |
1850 | 1864 | } | |
1851 | 1865 | ||
1852 | 1866 | ||
1853 | - | func | |
1854 | - | let | |
1855 | - | let | |
1867 | + | func jP (z) = { | |
1868 | + | let jQ = valueOrElse(getInteger(cM, bJ), 0) | |
1869 | + | let iR = split(valueOrElse(getString(bE(z)), aI), "_") | |
1856 | 1870 | let av = lastBlock.timestamp | |
1857 | - | let | |
1858 | - | let bR = | |
1859 | - | let bS = | |
1860 | - | if (( | |
1871 | + | let jR = bP(cM, jQ) | |
1872 | + | let bR = jR[bN] | |
1873 | + | let bS = jR[bO] | |
1874 | + | if ((iR[bX] != "T")) | |
1861 | 1875 | then false | |
1862 | - | else { | |
1863 | - | let ey = if (if (if ((parseIntValue(iP[bW]) == jO)) | |
1864 | - | then (bS[bU] == "INPROGRESS") | |
1865 | - | else false) | |
1866 | - | then (parseIntValue(bR[bT]) > av) | |
1867 | - | else false) | |
1868 | - | then throw("Your duck is taking part in the tournament") | |
1869 | - | else invoke(this, "exitTournamentInternal", [z], nil) | |
1870 | - | if ((ey == ey)) | |
1871 | - | then false | |
1872 | - | else throw("Strict value is not equal to itself.") | |
1873 | - | } | |
1874 | - | } | |
1875 | - | ||
1876 | - | ||
1877 | - | func jQ (jR,aj,jS,b,jT,jU) = { | |
1876 | + | else if (if (if ((parseIntValue(iR[bW]) == jQ)) | |
1877 | + | then (bS[bU] == "INPROGRESS") | |
1878 | + | else false) | |
1879 | + | then (parseIntValue(bR[bT]) > av) | |
1880 | + | else false) | |
1881 | + | then throw("Your duck is taking part in the tournament") | |
1882 | + | else df(invoke(this, "exitTournamentInternal", [z], nil)) | |
1883 | + | } | |
1884 | + | ||
1885 | + | ||
1886 | + | func jS (jT,aj,jU,b,jV,jW) = { | |
1878 | 1887 | let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked") | |
1879 | - | if ( | |
1888 | + | if (jP(z)) | |
1880 | 1889 | then throw("mergeInternal_checkTournament") | |
1881 | 1890 | else { | |
1882 | - | func | |
1883 | - | let | |
1884 | - | let | |
1885 | - | let | |
1886 | - | let | |
1887 | - | if (( | |
1891 | + | func jX (ei,O) = { | |
1892 | + | let iU = value(assetInfo(fromBase58String(O))) | |
1893 | + | let iV = bm(O) | |
1894 | + | let iW = valueOrErrorMessage(getInteger(iV), (("NFT " + iU.name) + " is not staked")) | |
1895 | + | let iX = valueOrErrorMessage(getString(bj(O)), (("NFT " + iU.name) + " is orphaned")) | |
1896 | + | if ((iX != b)) | |
1888 | 1897 | then throw((aA + " is not yours")) | |
1889 | 1898 | else { | |
1890 | - | let | |
1891 | - | let | |
1892 | - | if (if (( | |
1893 | - | then ( | |
1899 | + | let iY = split(iU.description, "_") | |
1900 | + | let cX = iY[cQ] | |
1901 | + | if (if ((ei._3 != "")) | |
1902 | + | then (ei._3 != cX) | |
1894 | 1903 | else false) | |
1895 | 1904 | then throw("Lands should be on the same continent to merge") | |
1896 | 1905 | else { | |
1897 | - | let | |
1898 | - | let | |
1899 | - | let | |
1900 | - | let | |
1901 | - | let | |
1902 | - | let | |
1903 | - | let | |
1904 | - | let | |
1905 | - | let | |
1906 | - | if (("S" == | |
1906 | + | let dh = iY[cO] | |
1907 | + | let jY = ei._1 | |
1908 | + | let gb = valueOrErrorMessage(indexOf(jY, dh), "You haven't passed all the lands needed") | |
1909 | + | let jZ = (take(jY, gb) + drop(jY, (gb + 1))) | |
1910 | + | let iJ = dg(dh) | |
1911 | + | let ka = (ei._2 + valueOrElse(getInteger(bn(aC, O)), 0)) | |
1912 | + | let ht = valueOrElse(getInteger(bt(O)), 0) | |
1913 | + | let kb = { | |
1914 | + | let cg = dh | |
1915 | + | if (("S" == cg)) | |
1907 | 1916 | then 3 | |
1908 | - | else if (("M" == | |
1917 | + | else if (("M" == cg)) | |
1909 | 1918 | then 4 | |
1910 | - | else if (("L" == | |
1919 | + | else if (("L" == cg)) | |
1911 | 1920 | then 5 | |
1912 | - | else if (("XL" == | |
1921 | + | else if (("XL" == cg)) | |
1913 | 1922 | then 6 | |
1914 | 1923 | else throw("Only S, M, L, XL can merge") | |
1915 | 1924 | } | |
1916 | - | if (( | |
1925 | + | if ((ht != kb)) | |
1917 | 1926 | then throw("All lands should be maxed to merge") | |
1918 | 1927 | else { | |
1919 | - | let | |
1920 | - | let | |
1921 | - | let | |
1922 | - | if ((0 > | |
1923 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1928 | + | let dK = iY[cN] | |
1929 | + | let fX = gd(iY[cP]) | |
1930 | + | let gh = (lastBlock.timestamp - iW) | |
1931 | + | if ((0 > gh)) | |
1932 | + | then throw(((("Saved timestamp is in future, saved = " + toString(iW)) + ", current = ") + toString(lastBlock.timestamp))) | |
1924 | 1933 | else { | |
1925 | - | let | |
1926 | - | let | |
1927 | - | let | |
1928 | - | let | |
1929 | - | let | |
1930 | - | let | |
1931 | - | let | |
1932 | - | let | |
1933 | - | if (!(isDefined( | |
1934 | + | let ja = iI(O, iJ) | |
1935 | + | let hs = (iJ / cn) | |
1936 | + | let ji = gf(split(ei._4, "_"), fX, gh, hs, ja) | |
1937 | + | let es = fV(ei._6, fX, hs, -1) | |
1938 | + | let kc = fV(ei._10, fX, hs, -1) | |
1939 | + | let gL = fV(ei._9, fX, hs, 1) | |
1940 | + | let kd = ei._7 | |
1941 | + | let cH = indexOf(kd, O) | |
1942 | + | if (!(isDefined(cH))) | |
1934 | 1943 | then throw(("Your staked lands don't contain " + O)) | |
1935 | 1944 | else { | |
1936 | - | let | |
1937 | - | let | |
1938 | - | $Tuple10( | |
1939 | - | then [DeleteEntry( | |
1940 | - | else nil)), | |
1945 | + | let ke = bl(O) | |
1946 | + | let kf = valueOrElse(getString(ke), "") | |
1947 | + | $Tuple10(jZ, ka, cX, ji, ((((((((((((ei._5 :+ DeleteEntry(bm(O))) :+ DeleteEntry(bp(aA, O, b))) :+ DeleteEntry(dJ(dK))) :+ DeleteEntry(bj(O))) :+ DeleteEntry(bt(O))) :+ DeleteEntry(dL(O, b))) :+ DeleteEntry(bn(aC, O))) :+ DeleteEntry(dM(dK))) :+ DeleteEntry(bs(O))) :+ DeleteEntry(ke)) :+ Burn(fromBase58String(O), 1)) ++ (if ((kf != "")) | |
1948 | + | then [DeleteEntry(dH(kf))] | |
1949 | + | else nil)), es, removeByIndex(kd, value(cH)), (ei._8 + iJ), gL, kc) | |
1941 | 1950 | } | |
1942 | 1951 | } | |
1943 | 1952 | } | |
1945 | 1954 | } | |
1946 | 1955 | } | |
1947 | 1956 | ||
1948 | - | let | |
1949 | - | let | |
1950 | - | let | |
1951 | - | let | |
1952 | - | let | |
1953 | - | let | |
1954 | - | then split_51C(value( | |
1957 | + | let he = bD(z) | |
1958 | + | let hH = hd(he) | |
1959 | + | let fW = split(valueOrElse(getString(cV()), "0_0_0_0_0_0"), "_") | |
1960 | + | let kg = cY(b) | |
1961 | + | let kh = getString(kg) | |
1962 | + | let ki = if (isDefined(kh)) | |
1963 | + | then split_51C(value(kh), "_") | |
1955 | 1964 | else nil | |
1956 | - | let | |
1957 | - | let | |
1958 | - | let | |
1959 | - | let | |
1960 | - | let | |
1961 | - | let | |
1962 | - | func | |
1963 | - | then | |
1964 | - | else | |
1965 | - | ||
1966 | - | func | |
1967 | - | then | |
1965 | + | let kj = split(value(assetInfo(fromBase58String(jV[0]))).description, "_")[cQ] | |
1966 | + | let kk = split(valueOrElse(getString(cW(kj)), "0_0_0_0_0_0"), "_") | |
1967 | + | let et = { | |
1968 | + | let ek = jV | |
1969 | + | let el = size(ek) | |
1970 | + | let em = $Tuple10(jU, 0, "", hH[bf], nil, fW, ki, 0, split("0_0_0_0_0_0", "_"), kk) | |
1971 | + | func en (eo,ep) = if ((ep >= el)) | |
1972 | + | then eo | |
1973 | + | else jX(eo, ek[ep]) | |
1974 | + | ||
1975 | + | func eq (eo,ep) = if ((ep >= el)) | |
1976 | + | then eo | |
1968 | 1977 | else throw("List size exceeds 5") | |
1969 | 1978 | ||
1970 | - | | |
1979 | + | eq(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5) | |
1971 | 1980 | } | |
1972 | - | let | |
1973 | - | let | |
1974 | - | let | |
1975 | - | let | |
1976 | - | let | |
1977 | - | let | |
1978 | - | let bk = calculateAssetId( | |
1979 | - | let | |
1980 | - | let | |
1981 | - | let | |
1982 | - | let | |
1983 | - | $Tuple2(((((((((((((((( | |
1984 | - | then StringEntry( | |
1985 | - | else DeleteEntry( | |
1981 | + | let cX = et._3 | |
1982 | + | let gF = valueOrErrorMessage(indexOf(aM, cX), ("Unknown continent: " + cX)) | |
1983 | + | let ge = gK(et._9, (dg(jT) / cn)) | |
1984 | + | let if = valueOrElse(getInteger(dG()), (dF + 1)) | |
1985 | + | let kl = toString(if) | |
1986 | + | let ig = Issue(dX(kl, jT), makeString([kl, jT, ge, cX], "_"), 1, 0, false) | |
1987 | + | let bk = calculateAssetId(ig) | |
1988 | + | let km = toBase58String(bk) | |
1989 | + | let iC = makeString(eu((jW > 0), split(hH[bg], "_"), jW), "_") | |
1990 | + | let kn = cZ(b) | |
1991 | + | let ko = valueOrElse(getInteger(kn), 0) | |
1992 | + | $Tuple2((((((((((((((((et._5 :+ (if ((size(et._7) > 0)) | |
1993 | + | then StringEntry(kg, makeString_11C(et._7, "_")) | |
1994 | + | else DeleteEntry(kg))) :+ IntegerEntry(kn, if ((et._8 > ko)) | |
1986 | 1995 | then 0 | |
1987 | - | else ( | |
1988 | - | } | |
1989 | - | } | |
1990 | - | ||
1991 | - | ||
1992 | - | func | |
1993 | - | ||
1994 | - | ||
1995 | - | func | |
1996 | - | ||
1997 | - | ||
1998 | - | func | |
1999 | - | ||
2000 | - | ||
2001 | - | func | |
2002 | - | ||
2003 | - | ||
2004 | - | func | |
2005 | - | let | |
2006 | - | if ((4 == | |
2007 | - | then | |
2008 | - | else if ((3 == | |
2009 | - | then | |
2010 | - | else if ((5 == | |
2011 | - | then | |
2012 | - | else if ((2 == | |
2013 | - | then | |
1996 | + | else (ko - et._8))) :+ IntegerEntry(dG(), (if + 1))) :+ ig) :+ StringEntry(dJ(kl), km)) :+ StringEntry(bj(km), b)) :+ StringEntry(dM(kl), b)) :+ IntegerEntry(bn(aC, km), et._2)) :+ IntegerEntry(bt(km), aj)) :+ IntegerEntry(dL(km, b), aj)) :+ StringEntry(he, makeString([hH[be], et._4, iC, hH[bh]], ":"))) :+ StringEntry(cV(), makeString(et._6, "_"))) :+ StringEntry(cW(cX), makeString(et._10, "_"))) :+ StringEntry(bE(z), makeString([cX, "L", km], "_"))) :+ ScriptTransfer(addressFromStringValue(b), 1, bk)), km) | |
1997 | + | } | |
1998 | + | } | |
1999 | + | ||
2000 | + | ||
2001 | + | func kp (b,jV) = jS("M", 3, "SSSS", b, jV, 0) | |
2002 | + | ||
2003 | + | ||
2004 | + | func kq (b,jV) = jS("L", 4, "SMM", b, jV, (ci * 4)) | |
2005 | + | ||
2006 | + | ||
2007 | + | func kr (b,jV) = jS("XL", 5, "SSSML", b, jV, (ci * 47)) | |
2008 | + | ||
2009 | + | ||
2010 | + | func ks (b,jV) = jS("XXL", 6, "LXL", b, jV, (ci * 54)) | |
2011 | + | ||
2012 | + | ||
2013 | + | func kt (b,jV) = { | |
2014 | + | let cg = size(jV) | |
2015 | + | if ((4 == cg)) | |
2016 | + | then kp(b, jV) | |
2017 | + | else if ((3 == cg)) | |
2018 | + | then kq(b, jV) | |
2019 | + | else if ((5 == cg)) | |
2020 | + | then kr(b, jV) | |
2021 | + | else if ((2 == cg)) | |
2022 | + | then ks(b, jV) | |
2014 | 2023 | else throw("Unknown merge") | |
2015 | 2024 | } | |
2016 | 2025 | ||
2017 | 2026 | ||
2018 | - | func | |
2027 | + | func ku (gb) = if (if ((gb.originCaller != cI)) | |
2019 | 2028 | then valueOrElse(getBoolean(bF()), false) | |
2020 | 2029 | else false) | |
2021 | 2030 | then throw("Contracts are under maintenance") | |
2022 | - | else StringEntry(bi(toString( | |
2023 | - | ||
2024 | - | ||
2025 | - | @Callable( | |
2026 | - | func constructorV1 ( | |
2031 | + | else StringEntry(bi(toString(gb.originCaller)), toBase58String(gb.transactionId)) | |
2032 | + | ||
2033 | + | ||
2034 | + | @Callable(gb) | |
2035 | + | func constructorV1 (kv) = if ((gb.caller != this)) | |
2027 | 2036 | then throw("Permission denied") | |
2028 | - | else [StringEntry( | |
2029 | - | ||
2030 | - | ||
2031 | - | ||
2032 | - | @Callable( | |
2033 | - | func setBlocked ( | |
2037 | + | else [StringEntry(cC(), kv)] | |
2038 | + | ||
2039 | + | ||
2040 | + | ||
2041 | + | @Callable(gb) | |
2042 | + | func setBlocked (kw) = if ((gb.caller != this)) | |
2034 | 2043 | then throw("permission denied") | |
2035 | - | else [BooleanEntry(bF(), | |
2036 | - | ||
2037 | - | ||
2038 | - | ||
2039 | - | @Callable( | |
2044 | + | else [BooleanEntry(bF(), kw)] | |
2045 | + | ||
2046 | + | ||
2047 | + | ||
2048 | + | @Callable(gb) | |
2040 | 2049 | func stakeLand () = { | |
2041 | - | let | |
2042 | - | if ((size( | |
2050 | + | let kx = ku(gb) | |
2051 | + | if ((size(gb.payments) != 1)) | |
2043 | 2052 | then throw("Exactly one payment required") | |
2044 | 2053 | else { | |
2045 | - | let | |
2046 | - | let bk = value( | |
2047 | - | let | |
2048 | - | if (( | |
2054 | + | let ky = value(gb.payments[0]) | |
2055 | + | let bk = value(ky.assetId) | |
2056 | + | let cu = toString(gb.caller) | |
2057 | + | if ((ky.amount != 1)) | |
2049 | 2058 | then throw((("NFT " + aA) + " token should be attached as payment")) | |
2050 | 2059 | else { | |
2051 | - | let | |
2052 | - | if (( | |
2060 | + | let iU = value(assetInfo(bk)) | |
2061 | + | if ((iU.issuer != this)) | |
2053 | 2062 | then throw("Unknown issuer of token") | |
2054 | - | else if (!(contains( | |
2063 | + | else if (!(contains(iU.name, aA))) | |
2055 | 2064 | then throw((("Only NFT " + aA) + " tokens are accepted")) | |
2056 | 2065 | else { | |
2057 | - | let | |
2058 | - | let | |
2059 | - | then dropRight( | |
2060 | - | else if (contains( | |
2061 | - | then dropRight( | |
2062 | - | else dropRight( | |
2063 | - | if (!(isDefined(parseInt( | |
2064 | - | then throw(("Cannot parse land number from " + | |
2066 | + | let kz = drop(iU.name, 4) | |
2067 | + | let dK = if (contains(kz, "XXL")) | |
2068 | + | then dropRight(kz, 3) | |
2069 | + | else if (contains(kz, "XL")) | |
2070 | + | then dropRight(kz, 2) | |
2071 | + | else dropRight(kz, 1) | |
2072 | + | if (!(isDefined(parseInt(dK)))) | |
2073 | + | then throw(("Cannot parse land number from " + iU.name)) | |
2065 | 2074 | else { | |
2066 | 2075 | let O = toBase58String(bk) | |
2067 | - | let | |
2068 | - | if (isDefined(getInteger( | |
2069 | - | then throw((("NFT " + | |
2076 | + | let iV = bm(O) | |
2077 | + | if (isDefined(getInteger(iV))) | |
2078 | + | then throw((("NFT " + iU.name) + " is already staked")) | |
2070 | 2079 | else { | |
2071 | - | let | |
2072 | - | let | |
2073 | - | let | |
2074 | - | let | |
2075 | - | let | |
2076 | - | let | |
2077 | - | let | |
2078 | - | let | |
2079 | - | let | |
2080 | - | let | |
2081 | - | let | |
2082 | - | then split_51C(value( | |
2080 | + | let iY = split(iU.description, "_") | |
2081 | + | let fX = gd(iY[cP]) | |
2082 | + | let iJ = dg(iY[cO]) | |
2083 | + | let hs = (iJ / cn) | |
2084 | + | let es = gc(fX, hs, 1) | |
2085 | + | let kA = cW(iY[cQ]) | |
2086 | + | let kk = split(valueOrElse(getString(kA), "0_0_0_0_0_0"), "_") | |
2087 | + | let kB = makeString(fV(kk, fX, hs, 1), "_") | |
2088 | + | let kg = cY(cu) | |
2089 | + | let kh = getString(kg) | |
2090 | + | let kd = if (isDefined(kh)) | |
2091 | + | then split_51C(value(kh), "_") | |
2083 | 2092 | else nil | |
2084 | - | if (containsElement( | |
2093 | + | if (containsElement(kd, O)) | |
2085 | 2094 | then throw(("Your staked lands already contain " + O)) | |
2086 | - | else if ((size( | |
2095 | + | else if ((size(kd) >= aE)) | |
2087 | 2096 | then throw((("Your already staked max (" + toString(aE)) + ") lands")) | |
2088 | 2097 | else { | |
2089 | - | let | |
2090 | - | let | |
2091 | - | let | |
2092 | - | let | |
2093 | - | $Tuple2([IntegerEntry( | |
2098 | + | let ht = valueOrElse(getInteger(bt(O)), 0) | |
2099 | + | let kn = cZ(cu) | |
2100 | + | let kC = valueOrElse(getInteger(kn), 0) | |
2101 | + | let kD = invoke(cL, "onStakeUnstakeLand", [cu], nil) | |
2102 | + | $Tuple2([IntegerEntry(iV, lastBlock.timestamp), IntegerEntry(bp(aA, O, cu), lastBlock.timestamp), StringEntry(kg, makeString_11C((kd :+ O), "_")), IntegerEntry(kn, (kC + iJ)), StringEntry(bj(O), cu), StringEntry(dM(dK), cu), IntegerEntry(dL(O, cu), ht), StringEntry(cV(), es), StringEntry(kA, kB), kx], kD) | |
2094 | 2103 | } | |
2095 | 2104 | } | |
2096 | 2105 | } | |
2101 | 2110 | ||
2102 | 2111 | ||
2103 | 2112 | ||
2104 | - | @Callable( | |
2105 | - | func unstakeLand ( | |
2106 | - | let | |
2107 | - | if ((size( | |
2113 | + | @Callable(gb) | |
2114 | + | func unstakeLand (iP) = { | |
2115 | + | let kx = ku(gb) | |
2116 | + | if ((size(gb.payments) != 0)) | |
2108 | 2117 | then throw("No payments required") | |
2109 | 2118 | else { | |
2110 | - | let b = toString( | |
2111 | - | let | |
2112 | - | let O = | |
2113 | - | let | |
2114 | - | let | |
2115 | - | let | |
2116 | - | let | |
2117 | - | let | |
2118 | - | let | |
2119 | - | let | |
2120 | - | let | |
2121 | - | let | |
2122 | - | let | |
2123 | - | let | |
2124 | - | let | |
2125 | - | if (!(isDefined( | |
2119 | + | let b = toString(gb.caller) | |
2120 | + | let fr = iN(b, dR, iP) | |
2121 | + | let O = fr._2 | |
2122 | + | let iY = fr._3 | |
2123 | + | let kg = cY(b) | |
2124 | + | let fX = gd(iY[cP]) | |
2125 | + | let iJ = dg(iY[cO]) | |
2126 | + | let hs = (iJ / cn) | |
2127 | + | let es = gc(fX, hs, -1) | |
2128 | + | let kA = cW(iY[cQ]) | |
2129 | + | let kk = split(valueOrElse(getString(kA), "0_0_0_0_0_0"), "_") | |
2130 | + | let kB = makeString(fV(kk, fX, hs, -1), "_") | |
2131 | + | let jt = jl(b, O, iJ, dR) | |
2132 | + | let kd = split_51C(valueOrElse(getString(kg), ""), "_") | |
2133 | + | let cH = indexOf(kd, O) | |
2134 | + | if (!(isDefined(cH))) | |
2126 | 2135 | then throw(("Your staked lands don't contain " + O)) | |
2127 | 2136 | else { | |
2128 | 2137 | let av = lastBlock.timestamp | |
2129 | - | let | |
2130 | - | if (( | |
2131 | - | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString( | |
2138 | + | let kE = valueOrElse(getInteger(cK, bG(b)), 0) | |
2139 | + | if ((kE >= av)) | |
2140 | + | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(kE))) | |
2132 | 2141 | else { | |
2133 | - | let | |
2134 | - | if (( | |
2135 | - | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString( | |
2142 | + | let kF = (valueOrElse(getInteger(cL, a(b)), 0) + cj) | |
2143 | + | if ((kF > av)) | |
2144 | + | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(kF))) | |
2136 | 2145 | else { | |
2137 | - | let | |
2138 | - | let | |
2139 | - | let | |
2146 | + | let kn = cZ(b) | |
2147 | + | let ko = valueOrElse(getInteger(kn), 0) | |
2148 | + | let kG = if ((iJ > ko)) | |
2140 | 2149 | then 0 | |
2141 | - | else ( | |
2142 | - | let | |
2143 | - | $Tuple2([ScriptTransfer( | |
2144 | - | then StringEntry( | |
2145 | - | else DeleteEntry( | |
2150 | + | else (ko - iJ) | |
2151 | + | let kD = invoke(cL, "onStakeUnstakeLand", [b], nil) | |
2152 | + | $Tuple2([ScriptTransfer(gb.caller, 1, fromBase58String(O)), DeleteEntry(bm(O)), DeleteEntry(bp(aA, O, b)), StringEntry(cV(), es), StringEntry(kA, kB), StringEntry(jt._2, makeString(jt._3, ":")), if ((size(kd) > 1)) | |
2153 | + | then StringEntry(kg, makeString_11C(removeByIndex(kd, value(cH)), "_")) | |
2154 | + | else DeleteEntry(kg), IntegerEntry(kn, kG), kx], kD) | |
2146 | 2155 | } | |
2147 | 2156 | } | |
2148 | 2157 | } | |
2151 | 2160 | ||
2152 | 2161 | ||
2153 | 2162 | ||
2154 | - | @Callable( | |
2163 | + | @Callable(gb) | |
2155 | 2164 | func stakeDuck () = { | |
2156 | - | let | |
2157 | - | if ((size( | |
2165 | + | let kx = ku(gb) | |
2166 | + | if ((size(gb.payments) != 1)) | |
2158 | 2167 | then throw("Exactly one payment required") | |
2159 | 2168 | else { | |
2160 | - | let | |
2161 | - | let bk = value( | |
2162 | - | let | |
2163 | - | if (( | |
2169 | + | let ky = value(gb.payments[0]) | |
2170 | + | let bk = value(ky.assetId) | |
2171 | + | let cu = toString(gb.caller) | |
2172 | + | if ((ky.amount != 1)) | |
2164 | 2173 | then throw((("NFT " + aB) + " token should be attached as payment")) | |
2165 | 2174 | else { | |
2166 | - | let | |
2167 | - | if (if (( | |
2168 | - | then ( | |
2175 | + | let iU = value(assetInfo(bk)) | |
2176 | + | if (if ((iU.issuer != dp)) | |
2177 | + | then (iU.issuer != dq) | |
2169 | 2178 | else false) | |
2170 | 2179 | then throw((("Unknown issuer of " + aB) + " token")) | |
2171 | - | else if (!(contains( | |
2180 | + | else if (!(contains(iU.name, aB))) | |
2172 | 2181 | then throw((("Only NFT " + aB) + " tokens are accepted")) | |
2173 | 2182 | else { | |
2174 | - | let | |
2175 | - | let | |
2176 | - | if (isDefined(getInteger( | |
2177 | - | then throw((("NFT " + | |
2178 | - | else if (isDefined(getString(bC( | |
2179 | - | then throw(("You already staked one duck: " + | |
2180 | - | else if ( | |
2183 | + | let kH = toBase58String(bk) | |
2184 | + | let iV = bm(kH) | |
2185 | + | if (isDefined(getInteger(iV))) | |
2186 | + | then throw((("NFT " + iU.name) + " is already staked")) | |
2187 | + | else if (isDefined(getString(bC(cu)))) | |
2188 | + | then throw(("You already staked one duck: " + iU.name)) | |
2189 | + | else if (jP(kH)) | |
2181 | 2190 | then throw("stakeDuck_checkTournament") | |
2182 | 2191 | else { | |
2183 | - | let | |
2184 | - | let | |
2185 | - | let | |
2186 | - | let | |
2187 | - | let | |
2188 | - | let | |
2189 | - | let | |
2190 | - | ([IntegerEntry( | |
2192 | + | let kI = bE(kH) | |
2193 | + | let kJ = getString(kI) | |
2194 | + | let he = bD(kH) | |
2195 | + | let kK = getString(he) | |
2196 | + | let iu = y(kH) | |
2197 | + | let iv = ae(valueOrElse(getInteger(C(kH)), 0)) | |
2198 | + | let kL = valueOrElse(getInteger(iu), iv) | |
2199 | + | ([IntegerEntry(iV, lastBlock.timestamp), IntegerEntry(bp(aB, toBase58String(bk), cu), lastBlock.timestamp), StringEntry(bB(kH), cu), StringEntry(bC(cu), kH)] ++ (if (isDefined(kJ)) | |
2191 | 2200 | then nil | |
2192 | - | else ([StringEntry( | |
2201 | + | else ([StringEntry(kI, aI)] ++ (if (isDefined(kK)) | |
2193 | 2202 | then nil | |
2194 | - | else (([StringEntry( | |
2203 | + | else (([StringEntry(he, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(iu, kL)) :+ kx))))) | |
2195 | 2204 | } | |
2196 | 2205 | } | |
2197 | 2206 | } | |
2200 | 2209 | ||
2201 | 2210 | ||
2202 | 2211 | ||
2203 | - | @Callable( | |
2204 | - | func unstakeDuck ( | |
2205 | - | let | |
2206 | - | if ((size( | |
2212 | + | @Callable(gb) | |
2213 | + | func unstakeDuck (kH) = { | |
2214 | + | let kx = ku(gb) | |
2215 | + | if ((size(gb.payments) != 0)) | |
2207 | 2216 | then throw("No payments required") | |
2208 | 2217 | else { | |
2209 | - | let bk = fromBase58String( | |
2210 | - | let | |
2211 | - | let | |
2212 | - | let | |
2213 | - | if (!(isDefined(getInteger( | |
2214 | - | then throw((("NFT " + | |
2215 | - | else if (!(isDefined(getString(bC( | |
2216 | - | then throw((("The duck " + | |
2218 | + | let bk = fromBase58String(kH) | |
2219 | + | let cu = toString(gb.caller) | |
2220 | + | let iU = value(assetInfo(bk)) | |
2221 | + | let iV = bm(kH) | |
2222 | + | if (!(isDefined(getInteger(iV)))) | |
2223 | + | then throw((("NFT " + iU.name) + " is not staked")) | |
2224 | + | else if (!(isDefined(getString(bC(cu))))) | |
2225 | + | then throw((("The duck " + iU.name) + " is not staked")) | |
2217 | 2226 | else { | |
2218 | - | let | |
2219 | - | if (( | |
2227 | + | let iX = valueOrErrorMessage(getString(bB(kH)), (("NFT " + iU.name) + " is orphaned")) | |
2228 | + | if ((iX != cu)) | |
2220 | 2229 | then throw("Staked NFT is not yours") | |
2221 | - | else if ( | |
2230 | + | else if (jP(kH)) | |
2222 | 2231 | then throw("unstakeDuck_checkTournament") | |
2223 | 2232 | else { | |
2224 | - | let | |
2225 | - | let | |
2226 | - | let aq = valueOrElse(getInteger( | |
2227 | - | if (( | |
2228 | - | then throw((("Please heal your duck to " + toString( | |
2229 | - | else [ScriptTransfer( | |
2233 | + | let iu = y(kH) | |
2234 | + | let iv = ae(valueOrElse(getInteger(C(kH)), 0)) | |
2235 | + | let aq = valueOrElse(getInteger(iu), iv) | |
2236 | + | if ((iv > aq)) | |
2237 | + | then throw((("Please heal your duck to " + toString(iv)) + "hp before unstaking")) | |
2238 | + | else [ScriptTransfer(gb.caller, 1, bk), DeleteEntry(iV), DeleteEntry(iu), DeleteEntry(bE(kH)), DeleteEntry(bB(kH)), DeleteEntry(bp(aB, kH, cu)), DeleteEntry(bC(cu)), kx] | |
2230 | 2239 | } | |
2231 | 2240 | } | |
2232 | 2241 | } | |
2234 | 2243 | ||
2235 | 2244 | ||
2236 | 2245 | ||
2237 | - | @Callable( | |
2238 | - | func claimRes ( | |
2239 | - | let | |
2240 | - | if ((size( | |
2246 | + | @Callable(gb) | |
2247 | + | func claimRes (dZ,kM) = { | |
2248 | + | let kx = ku(gb) | |
2249 | + | if ((size(gb.payments) != 0)) | |
2241 | 2250 | then throw("No payments required") | |
2242 | 2251 | else { | |
2243 | - | let b = toString( | |
2244 | - | let | |
2252 | + | let b = toString(gb.originCaller) | |
2253 | + | let eA = iZ(b, dZ, dR, kM) | |
2245 | 2254 | let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked") | |
2246 | - | $Tuple2((((( | |
2247 | - | } | |
2248 | - | } | |
2249 | - | ||
2250 | - | ||
2251 | - | ||
2252 | - | @Callable( | |
2253 | - | func claimResToWH ( | |
2254 | - | let | |
2255 | - | if ((size( | |
2255 | + | $Tuple2(((((eA._1 ++ jz(z, fraction(S, dZ, cm))._1) :+ StringEntry(eA._2, makeString(eA._3, ":"))) :+ StringEntry(eA._4, makeString(eA._5, ":"))) :+ kx), eA._3[bf]) | |
2256 | + | } | |
2257 | + | } | |
2258 | + | ||
2259 | + | ||
2260 | + | ||
2261 | + | @Callable(gb) | |
2262 | + | func claimResToWH (dZ,kM) = { | |
2263 | + | let kx = ku(gb) | |
2264 | + | if ((size(gb.payments) != 0)) | |
2256 | 2265 | then throw("No payments required") | |
2257 | 2266 | else { | |
2258 | - | let b = toString( | |
2259 | - | let | |
2260 | - | $Tuple2((((( | |
2261 | - | } | |
2262 | - | } | |
2263 | - | ||
2264 | - | ||
2265 | - | ||
2266 | - | @Callable( | |
2267 | - | func flight ( | |
2268 | - | let | |
2269 | - | if ((size( | |
2267 | + | let b = toString(gb.originCaller) | |
2268 | + | let eA = iZ(b, dZ, dQ, kM) | |
2269 | + | $Tuple2(((((eA._1 ++ jF(b, fraction(S, dZ, cm))._1) :+ StringEntry(eA._2, makeString(eA._3, ":"))) :+ StringEntry(eA._4, makeString(eA._5, ":"))) :+ kx), eA._5[aW]) | |
2270 | + | } | |
2271 | + | } | |
2272 | + | ||
2273 | + | ||
2274 | + | ||
2275 | + | @Callable(gb) | |
2276 | + | func flight (ij,ik) = { | |
2277 | + | let kx = ku(gb) | |
2278 | + | if ((size(gb.payments) != 0)) | |
2270 | 2279 | then throw("No payments required") | |
2271 | 2280 | else { | |
2272 | - | let bH = toString( | |
2273 | - | let | |
2274 | - | let z = | |
2275 | - | let | |
2276 | - | let | |
2277 | - | let | |
2278 | - | if (if (!( | |
2279 | - | then | |
2281 | + | let bH = toString(gb.caller) | |
2282 | + | let gG = ii(bH, ij, ik) | |
2283 | + | let z = gG._2 | |
2284 | + | let iq = gG._4 | |
2285 | + | let kN = split(iq, "_") | |
2286 | + | let kO = (kN[bX] == "T") | |
2287 | + | if (if (!(kO)) | |
2288 | + | then jP(z) | |
2280 | 2289 | else false) | |
2281 | 2290 | then throw("flight_checkTournament") | |
2282 | 2291 | else { | |
2283 | - | let kN = if (kM) | |
2292 | + | let kI = bE(z) | |
2293 | + | let iR = valueOrElse(getString(kI), aI) | |
2294 | + | let kP = if (kO) | |
2284 | 2295 | then { | |
2285 | - | let jO = valueOrElse(getInteger(cL, bJ), 0) | |
2296 | + | let kQ = split(iR, "_") | |
2297 | + | let kR = (kQ[bX] == "T") | |
2298 | + | let jQ = valueOrElse(getInteger(cM, bJ), 0) | |
2286 | 2299 | let av = lastBlock.timestamp | |
2287 | - | let | |
2288 | - | let bR = | |
2289 | - | let bS = | |
2290 | - | if (if (if ((parseIntValue( | |
2300 | + | let jR = bP(cM, jQ) | |
2301 | + | let bR = jR[bN] | |
2302 | + | let bS = jR[bO] | |
2303 | + | if (if (if ((parseIntValue(kN[bW]) != jQ)) | |
2291 | 2304 | then true | |
2292 | 2305 | else (bS[bU] != "INPROGRESS")) | |
2293 | 2306 | then true | |
2294 | 2307 | else (av > parseIntValue(bR[bT]))) | |
2295 | 2308 | then unit | |
2296 | 2309 | else { | |
2297 | - | let kO = parseIntValue(kL[bY]) | |
2298 | - | let kP = parseIntValue(bS[bV]) | |
2299 | - | if ((kP >= kO)) | |
2300 | - | then unit | |
2301 | - | else invoke(cL, "updateDynamicData", [z, kO], nil) | |
2310 | + | let kS = parseIntValue(kN[bY]) | |
2311 | + | let kT = parseIntValue(bS[bV]) | |
2312 | + | if (if (if (!(kR)) | |
2313 | + | then true | |
2314 | + | else (parseIntValue(kQ[bW]) != jQ)) | |
2315 | + | then true | |
2316 | + | else (kS != (parseIntValue(kQ[bY]) + 1))) | |
2317 | + | then throw(((("Cheat attempt: oldLoc=" + iR) + ", newLoc=") + iq)) | |
2318 | + | else { | |
2319 | + | let kU = valueOrElse(getInteger(cM, bZ(jQ, z)), 0) | |
2320 | + | let kV = if ((kS > kU)) | |
2321 | + | then invoke(cM, "saveDuckResult", [z, kS], nil) | |
2322 | + | else unit | |
2323 | + | if ((kV == kV)) | |
2324 | + | then if ((kT >= kS)) | |
2325 | + | then unit | |
2326 | + | else invoke(cM, "updateDynamicData", [z, kS], nil) | |
2327 | + | else throw("Strict value is not equal to itself.") | |
2328 | + | } | |
2302 | 2329 | } | |
2303 | 2330 | } | |
2304 | 2331 | else unit | |
2305 | - | if ((kN == kN)) | |
2306 | - | then { | |
2307 | - | let kG = bE(z) | |
2308 | - | let iP = valueOrElse(getString(kG), aI) | |
2309 | - | if ((io == iP)) | |
2310 | - | then throw("You can't fly to the same location") | |
2311 | - | else { | |
2312 | - | let fM = E(z) | |
2313 | - | let iB = valueOrElse(getString(fM), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2314 | - | let kQ = ez(iB, gE._5) | |
2315 | - | let iD = kQ._1 | |
2316 | - | let iE = kQ._2 | |
2317 | - | $Tuple2(([StringEntry(kG, if ((gE._1 > 0)) | |
2318 | - | then io | |
2319 | - | else iP), StringEntry(fM, iD), IntegerEntry(y(z), gE._1), kv] ++ (if (iE) | |
2320 | - | then [StringEntry(K(z), "0_0_0_0_0")] | |
2321 | - | else (nil ++ jx(z, if ((gE._1 > 0)) | |
2322 | - | then T | |
2323 | - | else U)._1))), gE._3) | |
2324 | - | } | |
2325 | - | } | |
2332 | + | if ((kP == kP)) | |
2333 | + | then if ((iq == iR)) | |
2334 | + | then throw("You can't fly to the same location") | |
2335 | + | else { | |
2336 | + | let fO = E(z) | |
2337 | + | let iD = valueOrElse(getString(fO), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2338 | + | let kW = eB(iD, gG._5) | |
2339 | + | let iF = kW._1 | |
2340 | + | let iG = kW._2 | |
2341 | + | $Tuple2(([StringEntry(kI, if ((gG._1 > 0)) | |
2342 | + | then iq | |
2343 | + | else iR), StringEntry(fO, iF), IntegerEntry(y(z), gG._1), kx] ++ (if (iG) | |
2344 | + | then [StringEntry(K(z), "0_0_0_0_0")] | |
2345 | + | else (nil ++ jz(z, if ((gG._1 > 0)) | |
2346 | + | then T | |
2347 | + | else U)._1))), gG._3) | |
2348 | + | } | |
2326 | 2349 | else throw("Strict value is not equal to itself.") | |
2327 | 2350 | } | |
2328 | 2351 | } | |
2330 | 2353 | ||
2331 | 2354 | ||
2332 | 2355 | ||
2333 | - | @Callable( | |
2334 | - | func heal ( | |
2335 | - | let | |
2336 | - | if (if (if ((0 > | |
2356 | + | @Callable(gb) | |
2357 | + | func heal (kX,kY,kZ) = { | |
2358 | + | let kx = ku(gb) | |
2359 | + | if (if (if ((0 > kX)) | |
2337 | 2360 | then true | |
2338 | - | else (0 > | |
2361 | + | else (0 > kY)) | |
2339 | 2362 | then true | |
2340 | - | else (0 > | |
2363 | + | else (0 > kZ)) | |
2341 | 2364 | then throw("Quantity cannot be negative") | |
2342 | 2365 | else { | |
2343 | - | let z = valueOrErrorMessage(getString(bC(toString( | |
2344 | - | if ( | |
2366 | + | let z = valueOrErrorMessage(getString(bC(toString(gb.caller))), "You don't have a duck staked") | |
2367 | + | if (jP(z)) | |
2345 | 2368 | then throw("heal_checkTournament") | |
2346 | 2369 | else { | |
2347 | - | let | |
2348 | - | let | |
2349 | - | let | |
2350 | - | let | |
2351 | - | if (( | |
2352 | - | then throw((("HP should be < " + toString( | |
2370 | + | let la = [kX, kY, kZ] | |
2371 | + | let iu = y(z) | |
2372 | + | let iv = ae(valueOrElse(getInteger(C(z)), 0)) | |
2373 | + | let lb = valueOrElse(getInteger(iu), iv) | |
2374 | + | if ((lb >= iv)) | |
2375 | + | then throw((("HP should be < " + toString(iv)) + " to heal")) | |
2353 | 2376 | else { | |
2354 | - | let | |
2355 | - | let | |
2356 | - | let | |
2377 | + | let he = bD(z) | |
2378 | + | let hH = hd(he) | |
2379 | + | let lc = if ((hH[bh] == "")) | |
2357 | 2380 | then nil | |
2358 | - | else split_4C( | |
2359 | - | func | |
2360 | - | let | |
2361 | - | let | |
2362 | - | then parseIntValue( | |
2381 | + | else split_4C(hH[bh], "_") | |
2382 | + | func ld (ei,cb) = { | |
2383 | + | let de = ei._2 | |
2384 | + | let gx = if ((size(lc) > de)) | |
2385 | + | then parseIntValue(lc[de]) | |
2363 | 2386 | else 0 | |
2364 | - | if ((3 > | |
2387 | + | if ((3 > de)) | |
2365 | 2388 | then { | |
2366 | - | let | |
2367 | - | if (( | |
2368 | - | then throw(((("You have only " + toString( | |
2369 | - | else $Tuple3(( | |
2389 | + | let le = la[de] | |
2390 | + | if ((le > gx)) | |
2391 | + | then throw(((("You have only " + toString(gx)) + " of ") + aL[de])) | |
2392 | + | else $Tuple3((ei._1 :+ toString((gx - le))), (de + 1), (ei._3 + (parseIntValue(split(cb, "_")[aR]) * le))) | |
2370 | 2393 | } | |
2371 | - | else $Tuple3(( | |
2394 | + | else $Tuple3((ei._1 :+ toString(gx)), (de + 1), ei._3) | |
2372 | 2395 | } | |
2373 | 2396 | ||
2374 | - | let | |
2375 | - | let | |
2376 | - | let | |
2377 | - | let | |
2378 | - | func | |
2379 | - | then | |
2380 | - | else | |
2381 | - | ||
2382 | - | func | |
2383 | - | then | |
2397 | + | let eA = { | |
2398 | + | let ek = aP | |
2399 | + | let el = size(ek) | |
2400 | + | let em = $Tuple3(nil, 0, 0) | |
2401 | + | func en (eo,ep) = if ((ep >= el)) | |
2402 | + | then eo | |
2403 | + | else ld(eo, ek[ep]) | |
2404 | + | ||
2405 | + | func eq (eo,ep) = if ((ep >= el)) | |
2406 | + | then eo | |
2384 | 2407 | else throw("List size exceeds 50") | |
2385 | 2408 | ||
2386 | - | | |
2409 | + | eq(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50) | |
2387 | 2410 | } | |
2388 | - | let | |
2389 | - | $Tuple2(([IntegerEntry( | |
2411 | + | let lf = min([iv, (lb + eA._3)]) | |
2412 | + | $Tuple2(([IntegerEntry(iu, lf), StringEntry(he, makeString_2C([hH[be], hH[bf], hH[bg], makeString(eA._1, "_")], ":")), kx] ++ jz(z, (ab * ((kX + kY) + kZ)))._1), lf) | |
2390 | 2413 | } | |
2391 | 2414 | } | |
2392 | 2415 | } | |
2394 | 2417 | ||
2395 | 2418 | ||
2396 | 2419 | ||
2397 | - | @Callable( | |
2420 | + | @Callable(gb) | |
2398 | 2421 | func healES () = { | |
2399 | - | let | |
2400 | - | if ((size( | |
2422 | + | let kx = ku(gb) | |
2423 | + | if ((size(gb.payments) != 1)) | |
2401 | 2424 | then throw("Exactly one payment required") | |
2402 | 2425 | else { | |
2403 | - | let | |
2404 | - | if (( | |
2426 | + | let ky = value(gb.payments[0]) | |
2427 | + | if ((ky.assetId != cf)) | |
2405 | 2428 | then throw("Allowed USDT payment only!") | |
2406 | 2429 | else { | |
2407 | - | let z = valueOrErrorMessage(getString(bC(toString( | |
2408 | - | if ( | |
2430 | + | let z = valueOrErrorMessage(getString(bC(toString(gb.caller))), "You don't have a duck staked") | |
2431 | + | if (jP(z)) | |
2409 | 2432 | then throw("healES_checkTournament") | |
2410 | 2433 | else { | |
2411 | - | let | |
2412 | - | let | |
2413 | - | let | |
2414 | - | if (( | |
2434 | + | let iu = y(z) | |
2435 | + | let iv = ae(valueOrElse(getInteger(C(z)), 0)) | |
2436 | + | let lb = valueOrElse(getInteger(iu), iv) | |
2437 | + | if ((lb > 0)) | |
2415 | 2438 | then throw("HP should be 0 to call Emergency Service") | |
2416 | 2439 | else { | |
2417 | - | let | |
2418 | - | let | |
2419 | - | let | |
2440 | + | let he = bD(z) | |
2441 | + | let hH = hd(he) | |
2442 | + | let lc = if ((hH[bh] == "")) | |
2420 | 2443 | then nil | |
2421 | - | else split_4C( | |
2422 | - | let | |
2423 | - | then parseIntValue( | |
2444 | + | else split_4C(hH[bh], "_") | |
2445 | + | let lg = if ((size(lc) > 0)) | |
2446 | + | then parseIntValue(lc[0]) | |
2424 | 2447 | else 0 | |
2425 | - | let | |
2426 | - | then parseIntValue( | |
2448 | + | let lh = if ((size(lc) > 1)) | |
2449 | + | then parseIntValue(lc[1]) | |
2427 | 2450 | else 0 | |
2428 | - | let | |
2429 | - | then parseIntValue( | |
2451 | + | let li = if ((size(lc) > 2)) | |
2452 | + | then parseIntValue(lc[2]) | |
2430 | 2453 | else 0 | |
2431 | - | if (if (if (( | |
2454 | + | if (if (if ((lg > 0)) | |
2432 | 2455 | then true | |
2433 | - | else ( | |
2456 | + | else (lh > 0)) | |
2434 | 2457 | then true | |
2435 | - | else ( | |
2458 | + | else (li > 0)) | |
2436 | 2459 | then throw("You have to use own Medical Kit") | |
2437 | 2460 | else { | |
2438 | - | let | |
2439 | - | let | |
2440 | - | then split_4C(value( | |
2461 | + | let lj = getString(cJ, bI()) | |
2462 | + | let lk = if (isDefined(lj)) | |
2463 | + | then split_4C(value(lj), "_") | |
2441 | 2464 | else nil | |
2442 | - | let | |
2443 | - | then parseIntValue( | |
2465 | + | let ll = if ((size(lk) > 0)) | |
2466 | + | then parseIntValue(lk[0]) | |
2444 | 2467 | else 0 | |
2445 | - | if ((0 >= | |
2468 | + | if ((0 >= ll)) | |
2446 | 2469 | then throw("There are no Medical Kits L1 at Emergency Service storage") | |
2447 | 2470 | else { | |
2448 | - | let | |
2449 | - | let | |
2450 | - | let | |
2451 | - | let | |
2452 | - | let | |
2453 | - | if (( | |
2454 | - | then throw(("Payment attached should be " + toString( | |
2471 | + | let lf = (lb + parseIntValue(split(aP[0], "_")[aR])) | |
2472 | + | let lm = makeString([toString((ll - 1)), removeByIndex(lk, 0)], "_") | |
2473 | + | let cb = split(aP[0], "_") | |
2474 | + | let ln = ca(cb) | |
2475 | + | let lo = fraction((ln * aK), aJ, (cm * aU)) | |
2476 | + | if ((ky.amount != lo)) | |
2477 | + | then throw(("Payment attached should be " + toString(lo))) | |
2455 | 2478 | else { | |
2456 | - | let | |
2457 | - | $Tuple2(([IntegerEntry( | |
2479 | + | let eA = da(invoke(cJ, "updateEsStorage", [lm], [AttachedPayment(cf, lo)])) | |
2480 | + | $Tuple2(([IntegerEntry(iu, lf), kx] ++ jz(z, V)._1), eA) | |
2458 | 2481 | } | |
2459 | 2482 | } | |
2460 | 2483 | } | |
2466 | 2489 | ||
2467 | 2490 | ||
2468 | 2491 | ||
2469 | - | @Callable( | |
2470 | - | func updateBackpack (z, | |
2492 | + | @Callable(gb) | |
2493 | + | func updateBackpack (z,lp) = if ((gb.caller != cJ)) | |
2471 | 2494 | then throw("permission denied") | |
2472 | - | else $Tuple2([StringEntry(bD(z), | |
2473 | - | ||
2474 | - | ||
2475 | - | ||
2476 | - | @Callable( | |
2495 | + | else $Tuple2([StringEntry(bD(z), lp)], lp) | |
2496 | + | ||
2497 | + | ||
2498 | + | ||
2499 | + | @Callable(gb) | |
2477 | 2500 | func commitForRandom () = { | |
2478 | - | let | |
2479 | - | let | |
2480 | - | let b = toString( | |
2481 | - | $Tuple2(([IntegerEntry( | |
2482 | - | } | |
2483 | - | ||
2484 | - | ||
2485 | - | ||
2486 | - | @Callable( | |
2501 | + | let kx = ku(gb) | |
2502 | + | let lq = (height + cT) | |
2503 | + | let b = toString(gb.caller) | |
2504 | + | $Tuple2(([IntegerEntry(cU(b), lq)] :+ kx), lq) | |
2505 | + | } | |
2506 | + | ||
2507 | + | ||
2508 | + | ||
2509 | + | @Callable(gb) | |
2487 | 2510 | func buySLand () = { | |
2488 | - | let | |
2489 | - | if ((size( | |
2511 | + | let kx = ku(gb) | |
2512 | + | if ((size(gb.payments) != 1)) | |
2490 | 2513 | then throw("Exactly one payment required") | |
2491 | 2514 | else { | |
2492 | - | let | |
2493 | - | if (( | |
2515 | + | let ky = value(gb.payments[0]) | |
2516 | + | if ((ky.assetId != cf)) | |
2494 | 2517 | then throw("Allowed USDT payment only!") | |
2495 | - | else if (( | |
2496 | - | then throw(("Payment attached should be " + toString( | |
2518 | + | else if ((ky.amount != dy)) | |
2519 | + | then throw(("Payment attached should be " + toString(dy))) | |
2497 | 2520 | else { | |
2498 | - | let | |
2499 | - | $Tuple2(((( | |
2521 | + | let eA = ib(gb.caller, gb.transactionId) | |
2522 | + | $Tuple2((((eA._1 :+ ScriptTransfer(cJ, ky.amount, cf)) ++ jF(toString(gb.caller), X)._1) :+ kx), eA._2._1) | |
2500 | 2523 | } | |
2501 | 2524 | } | |
2502 | 2525 | } | |
2503 | 2526 | ||
2504 | 2527 | ||
2505 | 2528 | ||
2506 | - | @Callable( | |
2507 | - | func expedition ( | |
2508 | - | let | |
2509 | - | if ((size( | |
2529 | + | @Callable(gb) | |
2530 | + | func expedition (ij,ik) = { | |
2531 | + | let kx = ku(gb) | |
2532 | + | if ((size(gb.payments) != 0)) | |
2510 | 2533 | then throw("No payments required") | |
2511 | 2534 | else { | |
2512 | - | let | |
2513 | - | let z = valueOrErrorMessage(getString(bC(toString( | |
2514 | - | if ( | |
2535 | + | let eA = iA(gb.caller, gb.transactionId, ij, ik) | |
2536 | + | let z = valueOrErrorMessage(getString(bC(toString(gb.caller))), "You don't have a duck staked") | |
2537 | + | if (jP(z)) | |
2515 | 2538 | then throw("expedition_checkTournament") | |
2516 | - | else $Tuple2((( | |
2517 | - | } | |
2518 | - | } | |
2519 | - | ||
2520 | - | ||
2521 | - | ||
2522 | - | @Callable( | |
2539 | + | else $Tuple2(((eA._1 ++ jz(z, X)._1) :+ kx), $Tuple2(eA._2, eA._3)) | |
2540 | + | } | |
2541 | + | } | |
2542 | + | ||
2543 | + | ||
2544 | + | ||
2545 | + | @Callable(gb) | |
2523 | 2546 | func upgradeInfra (O) = { | |
2524 | - | let | |
2525 | - | if ((size( | |
2547 | + | let kx = ku(gb) | |
2548 | + | if ((size(gb.payments) != 0)) | |
2526 | 2549 | then throw("No payments required") | |
2527 | 2550 | else { | |
2528 | - | let | |
2529 | - | let z = valueOrErrorMessage(getString(bC(toString( | |
2530 | - | $Tuple2((( | |
2531 | - | } | |
2532 | - | } | |
2533 | - | ||
2534 | - | ||
2535 | - | ||
2536 | - | @Callable( | |
2537 | - | func activateArtifact ( | |
2538 | - | let | |
2539 | - | if ((size( | |
2551 | + | let eA = jm(true, gb.caller, 0, O) | |
2552 | + | let z = valueOrErrorMessage(getString(bC(toString(gb.caller))), "You don't have a duck staked") | |
2553 | + | $Tuple2(((eA._1 :+ kx) ++ jz(z, fraction(Y, eA._3, cm))._1), eA._2) | |
2554 | + | } | |
2555 | + | } | |
2556 | + | ||
2557 | + | ||
2558 | + | ||
2559 | + | @Callable(gb) | |
2560 | + | func activateArtifact (lr,ls) = { | |
2561 | + | let kx = ku(gb) | |
2562 | + | if ((size(gb.payments) != 0)) | |
2540 | 2563 | then throw("No payments required") | |
2541 | 2564 | else { | |
2542 | - | let b = toString( | |
2543 | - | let | |
2544 | - | let | |
2545 | - | if (("PRESALE" == | |
2546 | - | then | |
2547 | - | else if (("ONBOARD" == | |
2548 | - | then | |
2565 | + | let b = toString(gb.caller) | |
2566 | + | let eA = { | |
2567 | + | let cg = lr | |
2568 | + | if (("PRESALE" == cg)) | |
2569 | + | then jN(b, ls) | |
2570 | + | else if (("ONBOARD" == cg)) | |
2571 | + | then jG(b) | |
2549 | 2572 | else throw("Unknown artifact") | |
2550 | 2573 | } | |
2551 | - | ( | |
2552 | - | } | |
2553 | - | } | |
2554 | - | ||
2555 | - | ||
2556 | - | ||
2557 | - | @Callable( | |
2558 | - | func mergeLands ( | |
2559 | - | let | |
2560 | - | if ((size( | |
2574 | + | (eA :+ kx) | |
2575 | + | } | |
2576 | + | } | |
2577 | + | ||
2578 | + | ||
2579 | + | ||
2580 | + | @Callable(gb) | |
2581 | + | func mergeLands (jV) = { | |
2582 | + | let kx = ku(gb) | |
2583 | + | if ((size(gb.payments) != 0)) | |
2561 | 2584 | then throw("No payments required") | |
2562 | 2585 | else { | |
2563 | - | let | |
2564 | - | $Tuple2((( | |
2565 | - | } | |
2566 | - | } | |
2567 | - | ||
2568 | - | ||
2569 | - | ||
2570 | - | @Callable( | |
2571 | - | func cargoExchange ( | |
2572 | - | let | |
2573 | - | if ((size( | |
2586 | + | let eA = kt(toString(gb.caller), jV) | |
2587 | + | $Tuple2(((eA._1 :+ kx) ++ jF(toString(gb.caller), Z)._1), eA._2) | |
2588 | + | } | |
2589 | + | } | |
2590 | + | ||
2591 | + | ||
2592 | + | ||
2593 | + | @Callable(gb) | |
2594 | + | func cargoExchange (lt,O) = { | |
2595 | + | let kx = ku(gb) | |
2596 | + | if ((size(gb.payments) != 0)) | |
2574 | 2597 | then throw("No payments required") | |
2575 | 2598 | else { | |
2576 | - | let | |
2577 | - | let b = toString( | |
2578 | - | let | |
2579 | - | let | |
2580 | - | if (!(isDefined(getInteger( | |
2581 | - | then throw(( | |
2599 | + | let hG = split_4C(lt, ":") | |
2600 | + | let b = toString(gb.originCaller) | |
2601 | + | let iU = value(assetInfo(fromBase58String(O))) | |
2602 | + | let iV = bm(O) | |
2603 | + | if (!(isDefined(getInteger(iV)))) | |
2604 | + | then throw((iU.name + " is not staked")) | |
2582 | 2605 | else { | |
2583 | - | let | |
2584 | - | if (( | |
2606 | + | let iX = valueOrErrorMessage(getString(bj(O)), (("NFT " + iU.name) + " is orphaned")) | |
2607 | + | if ((iX != b)) | |
2585 | 2608 | then throw((aA + " is not yours")) | |
2586 | 2609 | else { | |
2587 | - | let | |
2588 | - | let | |
2610 | + | let hs = (dg(split(iU.description, "_")[cO]) / cn) | |
2611 | + | let ht = valueOrElse(getInteger(bt(O)), 0) | |
2589 | 2612 | let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked") | |
2590 | - | let | |
2591 | - | let | |
2592 | - | if (( | |
2593 | - | then throw((("Duck location type is " + | |
2594 | - | else if (( | |
2613 | + | let iR = valueOrElse(getString(bE(z)), aI) | |
2614 | + | let iS = split(value(iR), "_") | |
2615 | + | if ((iS[bX] != "L")) | |
2616 | + | then throw((("Duck location type is " + iS[bX]) + ", but should be L")) | |
2617 | + | else if ((iS[bY] != O)) | |
2595 | 2618 | then throw(("Duck should be on the land " + O)) | |
2596 | 2619 | else { | |
2597 | - | let | |
2598 | - | let | |
2599 | - | let | |
2600 | - | let | |
2601 | - | let | |
2602 | - | let | |
2603 | - | let | |
2604 | - | let | |
2605 | - | [StringEntry( | |
2620 | + | let hr = bs(O) | |
2621 | + | let hi = hq(hr, hs, ht) | |
2622 | + | let he = bD(z) | |
2623 | + | let hH = hd(he) | |
2624 | + | let eA = hF(hG, hi, hH) | |
2625 | + | let hz = split(hi[aZ], "_") | |
2626 | + | let jj = (parseIntValue(hz[bb]) + eA._7) | |
2627 | + | let jk = (parseIntValue(hz[bc]) - eA._7) | |
2628 | + | [StringEntry(he, makeString_2C([hH[be], eA._4, eA._5, eA._6], ":")), StringEntry(hr, makeString_2C([hi[aV], eA._1, eA._2, eA._3, makeString([hz[ba], toString(jj), toString(jk), hz[bd]], "_")], ":")), kx] | |
2606 | 2629 | } | |
2607 | 2630 | } | |
2608 | 2631 | } | |
2611 | 2634 | ||
2612 | 2635 | ||
2613 | 2636 | ||
2614 | - | @Callable( | |
2615 | - | func saveWarehouse ( | |
2637 | + | @Callable(gb) | |
2638 | + | func saveWarehouse (hv,O) = if ((gb.caller != cJ)) | |
2616 | 2639 | then throw("Access denied") | |
2617 | 2640 | else { | |
2618 | - | let | |
2619 | - | let | |
2620 | - | if ((size( | |
2641 | + | let hr = bs(O) | |
2642 | + | let hw = split_4C(hv, ":") | |
2643 | + | if ((size(hw) != 5)) | |
2621 | 2644 | then throw("warehouse string should contain 4 ':' separators") | |
2622 | 2645 | else { | |
2623 | - | let | |
2624 | - | let | |
2625 | - | let | |
2626 | - | let | |
2627 | - | let | |
2628 | - | $Tuple2([StringEntry( | |
2646 | + | let lu = split(hw[aZ], "_")[ba] | |
2647 | + | let jj = hh(hw) | |
2648 | + | let lv = hf(hw[aV]) | |
2649 | + | let jk = ((lv - parseIntValue(lu)) - jj) | |
2650 | + | let lw = makeString_2C([hw[aV], hw[aW], hw[aX], hw[aY], makeString([lu, toString(jj), toString(jk), toString(lv)], "_")], ":") | |
2651 | + | $Tuple2([StringEntry(hr, lw)], lw) | |
2629 | 2652 | } | |
2630 | 2653 | } | |
2631 | 2654 | ||
2632 | 2655 | ||
2633 | 2656 | ||
2634 | - | @Callable( | |
2635 | - | func fixWarehouseFormat (O) = if (( | |
2657 | + | @Callable(gb) | |
2658 | + | func fixWarehouseFormat (O) = if ((gb.caller != cI)) | |
2636 | 2659 | then throw("Access denied") | |
2637 | 2660 | else { | |
2638 | - | let | |
2639 | - | let | |
2640 | - | let | |
2641 | - | let | |
2642 | - | let | |
2643 | - | let | |
2644 | - | let | |
2645 | - | let | |
2646 | - | let | |
2647 | - | let | |
2648 | - | $Tuple2([StringEntry( | |
2661 | + | let hr = bs(O) | |
2662 | + | let iU = value(assetInfo(fromBase58String(O))) | |
2663 | + | let hs = (dg(split(iU.description, "_")[cO]) / cn) | |
2664 | + | let ht = valueOrElse(getInteger(bt(O)), 0) | |
2665 | + | let hw = hq(hr, hs, ht) | |
2666 | + | let lu = dd(invoke(cJ, "recalcLockedVolumeREADONLY", [O, hw], nil)) | |
2667 | + | let jj = hh(hw) | |
2668 | + | let lv = hf(hw[aV]) | |
2669 | + | let jk = ((lv - lu) - jj) | |
2670 | + | let lw = makeString_2C([hw[aV], hw[aW], hw[aX], hw[aY], makeString([toString(lu), toString(jj), toString(jk), toString(lv)], "_")], ":") | |
2671 | + | $Tuple2([StringEntry(hr, lw)], lw) | |
2649 | 2672 | } | |
2650 | 2673 | ||
2651 | 2674 | ||
2652 | 2675 | ||
2653 | - | @Callable( | |
2654 | - | func fixContinentProportions ( | |
2676 | + | @Callable(gb) | |
2677 | + | func fixContinentProportions (jV) = if ((gb.caller != cI)) | |
2655 | 2678 | then throw("Access denied") | |
2656 | 2679 | else { | |
2657 | - | func | |
2658 | - | ||
2659 | - | let | |
2660 | - | let | |
2661 | - | let | |
2662 | - | let | |
2663 | - | func | |
2664 | - | then | |
2665 | - | else | |
2666 | - | ||
2667 | - | func | |
2668 | - | then | |
2680 | + | func lx (ei,ly) = (ei :+ valueOrElse(getString(cW(ly)), "0_0_0_0_0_0")) | |
2681 | + | ||
2682 | + | let fL = { | |
2683 | + | let ek = aM | |
2684 | + | let el = size(ek) | |
2685 | + | let em = nil | |
2686 | + | func en (eo,ep) = if ((ep >= el)) | |
2687 | + | then eo | |
2688 | + | else lx(eo, ek[ep]) | |
2689 | + | ||
2690 | + | func eq (eo,ep) = if ((ep >= el)) | |
2691 | + | then eo | |
2669 | 2692 | else throw("List size exceeds 5") | |
2670 | 2693 | ||
2671 | - | | |
2672 | - | } | |
2673 | - | func | |
2674 | - | let | |
2675 | - | let | |
2676 | - | let | |
2677 | - | let | |
2678 | - | let | |
2679 | - | let | |
2680 | - | let | |
2681 | - | let | |
2682 | - | let | |
2683 | - | if (("Americas" == | |
2684 | - | then [ | |
2685 | - | else if (("Europe" == | |
2686 | - | then [ | |
2687 | - | else if (("Asia" == | |
2688 | - | then [ | |
2689 | - | else if (("Africa" == | |
2690 | - | then [ | |
2691 | - | else if (("Oceania" == | |
2692 | - | then [ | |
2694 | + | eq(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5) | |
2695 | + | } | |
2696 | + | func lz (ei,O) = { | |
2697 | + | let iU = value(assetInfo(fromBase58String(O))) | |
2698 | + | let iY = split(iU.description, "_") | |
2699 | + | let hs = (dg(iY[cO]) / cn) | |
2700 | + | let ly = iY[cQ] | |
2701 | + | let fX = gd(iY[cP]) | |
2702 | + | let gF = value(indexOf(aM, ly)) | |
2703 | + | let kk = split(ei[gF], "_") | |
2704 | + | let lA = makeString(fV(kk, fX, hs, 1), "_") | |
2705 | + | let cg = ly | |
2706 | + | if (("Americas" == cg)) | |
2707 | + | then [lA, ei[1], ei[2], ei[3], ei[4]] | |
2708 | + | else if (("Europe" == cg)) | |
2709 | + | then [ei[0], lA, ei[2], ei[3], ei[4]] | |
2710 | + | else if (("Asia" == cg)) | |
2711 | + | then [ei[0], ei[1], lA, ei[3], ei[4]] | |
2712 | + | else if (("Africa" == cg)) | |
2713 | + | then [ei[0], ei[1], ei[2], lA, ei[4]] | |
2714 | + | else if (("Oceania" == cg)) | |
2715 | + | then [ei[0], ei[1], ei[2], ei[3], lA] | |
2693 | 2716 | else throw("wrong continent") | |
2694 | 2717 | } | |
2695 | 2718 | ||
2696 | - | let | |
2697 | - | let | |
2698 | - | let | |
2699 | - | let | |
2700 | - | func | |
2701 | - | then | |
2702 | - | else | |
2703 | - | ||
2704 | - | func | |
2705 | - | then | |
2719 | + | let et = { | |
2720 | + | let ek = jV | |
2721 | + | let el = size(ek) | |
2722 | + | let em = fL | |
2723 | + | func gY (eo,ep) = if ((ep >= el)) | |
2724 | + | then eo | |
2725 | + | else lz(eo, ek[ep]) | |
2726 | + | ||
2727 | + | func gZ (eo,ep) = if ((ep >= el)) | |
2728 | + | then eo | |
2706 | 2729 | else throw("List size exceeds 100") | |
2707 | 2730 | ||
2708 | - | | |
2709 | - | } | |
2710 | - | $Tuple2([StringEntry( | |
2731 | + | gZ(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 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) | |
2732 | + | } | |
2733 | + | $Tuple2([StringEntry(cW("Americas"), et[0]), StringEntry(cW("Europe"), et[1]), StringEntry(cW("Asia"), et[2]), StringEntry(cW("Africa"), et[3]), StringEntry(cW("Oceania"), et[4])], 0) | |
2711 | 2734 | } | |
2712 | 2735 | ||
2713 | 2736 | ||
2714 | 2737 | ||
2715 | - | @Callable( | |
2716 | - | func fixStakedPieces ( | |
2738 | + | @Callable(gb) | |
2739 | + | func fixStakedPieces (cu) = if ((gb.caller != cI)) | |
2717 | 2740 | then throw("Access denied") | |
2718 | 2741 | else { | |
2719 | - | let | |
2742 | + | let ko = if ((cu == "")) | |
2720 | 2743 | then 0 | |
2721 | 2744 | else { | |
2722 | - | let | |
2723 | - | let | |
2724 | - | then split_51C(value( | |
2745 | + | let kh = getString(al, cY(cu)) | |
2746 | + | let kd = if (isDefined(kh)) | |
2747 | + | then split_51C(value(kh), "_") | |
2725 | 2748 | else nil | |
2726 | - | func | |
2727 | - | let | |
2728 | - | let | |
2729 | - | ( | |
2749 | + | func lB (ei,O) = { | |
2750 | + | let iU = value(assetInfo(fromBase58String(O))) | |
2751 | + | let dh = split(iU.description, "_")[cO] | |
2752 | + | (ei + dg(dh)) | |
2730 | 2753 | } | |
2731 | 2754 | ||
2732 | - | let | |
2733 | - | let | |
2734 | - | let | |
2735 | - | func | |
2736 | - | then | |
2737 | - | else | |
2738 | - | ||
2739 | - | func | |
2740 | - | then | |
2755 | + | let ek = kd | |
2756 | + | let el = size(ek) | |
2757 | + | let em = 0 | |
2758 | + | func en (eo,ep) = if ((ep >= el)) | |
2759 | + | then eo | |
2760 | + | else lB(eo, ek[ep]) | |
2761 | + | ||
2762 | + | func eq (eo,ep) = if ((ep >= el)) | |
2763 | + | then eo | |
2741 | 2764 | else throw("List size exceeds 100") | |
2742 | 2765 | ||
2743 | - | | |
2766 | + | eq(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 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) | |
2744 | 2767 | } | |
2745 | - | $Tuple2([IntegerEntry( | |
2768 | + | $Tuple2([IntegerEntry(cZ(cu), ko)], ko) | |
2746 | 2769 | } | |
2747 | 2770 | ||
2748 | 2771 | ||
2749 | 2772 | ||
2750 | - | @Callable( | |
2751 | - | func setCustomName (bk, | |
2752 | - | let | |
2753 | - | if ((size( | |
2773 | + | @Callable(gb) | |
2774 | + | func setCustomName (bk,kf,bo) = { | |
2775 | + | let kx = ku(gb) | |
2776 | + | if ((size(gb.payments) != 1)) | |
2754 | 2777 | then throw("Exactly one payment required") | |
2755 | 2778 | else { | |
2756 | - | let | |
2757 | - | if (( | |
2779 | + | let ky = value(gb.payments[0]) | |
2780 | + | if ((ky.assetId != cf)) | |
2758 | 2781 | then throw("Allowed USDT payment only!") | |
2759 | - | else if (( | |
2760 | - | then throw(("Payment should be " + toString( | |
2761 | - | else if (contains( | |
2762 | - | then throw(("Name should not contain '__': " + | |
2763 | - | else if ((size( | |
2764 | - | then throw(("Name too long, maxLength=" + toString( | |
2782 | + | else if ((ky.amount != du)) | |
2783 | + | then throw(("Payment should be " + toString(du))) | |
2784 | + | else if (contains(kf, "__")) | |
2785 | + | then throw(("Name should not contain '__': " + kf)) | |
2786 | + | else if ((size(kf) > dv)) | |
2787 | + | then throw(("Name too long, maxLength=" + toString(dv))) | |
2765 | 2788 | else { | |
2766 | - | let b = toString( | |
2767 | - | let | |
2768 | - | let | |
2769 | - | if (("ACCOUNT" == | |
2789 | + | let b = toString(gb.originCaller) | |
2790 | + | let lC = { | |
2791 | + | let cg = bo | |
2792 | + | if (("ACCOUNT" == cg)) | |
2770 | 2793 | then { | |
2771 | - | let | |
2772 | - | let | |
2773 | - | if (isDefined( | |
2774 | - | then throw(("Name already registered: " + | |
2794 | + | let lD = dO(kf) | |
2795 | + | let lE = getString(lD) | |
2796 | + | if (isDefined(lE)) | |
2797 | + | then throw(("Name already registered: " + kf)) | |
2775 | 2798 | else { | |
2776 | - | let | |
2777 | - | let | |
2778 | - | let | |
2779 | - | then [DeleteEntry( | |
2799 | + | let lF = bw(b) | |
2800 | + | let lG = getString(lF) | |
2801 | + | let lH = if (isDefined(lG)) | |
2802 | + | then [DeleteEntry(dO(value(lG)))] | |
2780 | 2803 | else nil | |
2781 | - | ((( | |
2804 | + | (((lH :+ StringEntry(lF, kf)) :+ StringEntry(lD, b)) ++ jF(b, W)._1) | |
2782 | 2805 | } | |
2783 | 2806 | } | |
2784 | - | else if (("LAND" == | |
2807 | + | else if (("LAND" == cg)) | |
2785 | 2808 | then { | |
2786 | - | let | |
2787 | - | let | |
2788 | - | if (!(isDefined(getInteger( | |
2789 | - | then throw(( | |
2809 | + | let iU = value(assetInfo(fromBase58String(bk))) | |
2810 | + | let iV = bm(bk) | |
2811 | + | if (!(isDefined(getInteger(iV)))) | |
2812 | + | then throw((iU.name + " is not staked")) | |
2790 | 2813 | else { | |
2791 | - | let | |
2792 | - | if (( | |
2814 | + | let iX = valueOrErrorMessage(getString(bj(bk)), (("NFT " + iU.name) + " is orphaned")) | |
2815 | + | if ((iX != b)) | |
2793 | 2816 | then throw((aA + " is not yours")) | |
2794 | 2817 | else { | |
2795 | - | let | |
2796 | - | let | |
2797 | - | if (isDefined( | |
2798 | - | then throw(("Name already registered: " + | |
2818 | + | let lD = dH(kf) | |
2819 | + | let lE = getString(lD) | |
2820 | + | if (isDefined(lE)) | |
2821 | + | then throw(("Name already registered: " + kf)) | |
2799 | 2822 | else { | |
2800 | - | let | |
2801 | - | let | |
2802 | - | let | |
2803 | - | then [DeleteEntry( | |
2823 | + | let lI = bl(bk) | |
2824 | + | let lG = getString(lI) | |
2825 | + | let lH = if (isDefined(lG)) | |
2826 | + | then [DeleteEntry(dH(value(lG)))] | |
2804 | 2827 | else nil | |
2805 | - | ((( | |
2828 | + | (((lH :+ StringEntry(lI, kf)) :+ StringEntry(lD, bk)) ++ jF(b, W)._1) | |
2806 | 2829 | } | |
2807 | 2830 | } | |
2808 | 2831 | } | |
2809 | 2832 | } | |
2810 | - | else if (("DUCK" == | |
2833 | + | else if (("DUCK" == cg)) | |
2811 | 2834 | then { | |
2812 | - | let | |
2813 | - | let | |
2814 | - | if (if (!(isDefined(getInteger( | |
2835 | + | let iU = value(assetInfo(fromBase58String(bk))) | |
2836 | + | let iV = bm(bk) | |
2837 | + | if (if (!(isDefined(getInteger(iV)))) | |
2815 | 2838 | then true | |
2816 | 2839 | else !(isDefined(getString(bC(b))))) | |
2817 | - | then throw(( | |
2840 | + | then throw((iU.name + " is not staked")) | |
2818 | 2841 | else { | |
2819 | - | let | |
2820 | - | if (( | |
2842 | + | let iX = valueOrErrorMessage(getString(bB(bk)), (("NFT " + iU.name) + " is orphaned")) | |
2843 | + | if ((iX != b)) | |
2821 | 2844 | then throw((aB + " is not yours")) | |
2822 | 2845 | else { | |
2823 | - | let | |
2824 | - | let | |
2825 | - | if (isDefined( | |
2826 | - | then throw(("Name already registered: " + | |
2846 | + | let lD = dN(kf) | |
2847 | + | let lE = getString(lD) | |
2848 | + | if (isDefined(lE)) | |
2849 | + | then throw(("Name already registered: " + kf)) | |
2827 | 2850 | else { | |
2828 | - | let | |
2829 | - | let | |
2830 | - | let | |
2831 | - | then [DeleteEntry( | |
2851 | + | let lI = bv(bk) | |
2852 | + | let lG = getString(lI) | |
2853 | + | let lH = if (isDefined(lG)) | |
2854 | + | then [DeleteEntry(dN(value(lG)))] | |
2832 | 2855 | else nil | |
2833 | - | ((( | |
2856 | + | (((lH :+ StringEntry(lI, kf)) :+ StringEntry(lD, bk)) ++ jz(bk, W)._1) | |
2834 | 2857 | } | |
2835 | 2858 | } | |
2836 | 2859 | } | |
2837 | 2860 | } | |
2838 | 2861 | else throw("Unknown entity type") | |
2839 | 2862 | } | |
2840 | - | $Tuple2((( | |
2863 | + | $Tuple2(((lC :+ ScriptTransfer(cJ, ky.amount, cf)) :+ kx), 0) | |
2841 | 2864 | } | |
2842 | 2865 | } | |
2843 | 2866 | } | |
2844 | 2867 | ||
2845 | 2868 | ||
2846 | 2869 | ||
2847 | - | @Callable( | |
2848 | - | func setReferrals ( | |
2870 | + | @Callable(gb) | |
2871 | + | func setReferrals (lJ,lK) = if ((gb.callerPublicKey != dr)) | |
2849 | 2872 | then throw("Permission denied") | |
2850 | 2873 | else { | |
2851 | - | let | |
2852 | - | if ((size( | |
2874 | + | let kx = ku(gb) | |
2875 | + | if ((size(gb.payments) != 0)) | |
2853 | 2876 | then throw("No payments required") | |
2854 | - | else if (!(isDefined(addressFromString( | |
2855 | - | then throw(("Invalid address: " + | |
2856 | - | else if (!(isDefined(addressFromString( | |
2857 | - | then throw(("Invalid address: " + | |
2877 | + | else if (!(isDefined(addressFromString(lJ)))) | |
2878 | + | then throw(("Invalid address: " + lJ)) | |
2879 | + | else if (!(isDefined(addressFromString(lK)))) | |
2880 | + | then throw(("Invalid address: " + lK)) | |
2858 | 2881 | else { | |
2859 | - | let | |
2860 | - | let | |
2861 | - | let | |
2862 | - | then split_4C(value( | |
2882 | + | let lL = dP() | |
2883 | + | let lM = getString(lL) | |
2884 | + | let lN = if (isDefined(lM)) | |
2885 | + | then split_4C(value(lM), "_") | |
2863 | 2886 | else nil | |
2864 | - | if (containsElement( | |
2865 | - | then throw(( | |
2887 | + | if (containsElement(lN, lK)) | |
2888 | + | then throw((lK + " is not newbie (already has referrals)")) | |
2866 | 2889 | else { | |
2867 | - | let | |
2868 | - | let | |
2869 | - | if (if (isDefined( | |
2870 | - | then isDefined(addressFromString(value( | |
2890 | + | let jH = bx(lK) | |
2891 | + | let jI = getString(jH) | |
2892 | + | if (if (isDefined(jI)) | |
2893 | + | then isDefined(addressFromString(value(jI))) | |
2871 | 2894 | else false) | |
2872 | - | then throw((( | |
2895 | + | then throw(((lK + " already has refBy: ") + value(jI))) | |
2873 | 2896 | else { | |
2874 | - | let | |
2875 | - | let | |
2876 | - | let | |
2877 | - | then split_4C(value( | |
2897 | + | let lO = bA(lJ) | |
2898 | + | let lP = getString(lO) | |
2899 | + | let lQ = if (isDefined(lP)) | |
2900 | + | then split_4C(value(lP), "_") | |
2878 | 2901 | else nil | |
2879 | - | if (containsElement( | |
2880 | - | then throw(((( | |
2902 | + | if (containsElement(lQ, lK)) | |
2903 | + | then throw((((lJ + " already contains ") + lK) + " within referrals")) | |
2881 | 2904 | else { | |
2882 | - | let | |
2883 | - | let | |
2884 | - | then value( | |
2885 | - | else makeString_2C(( | |
2886 | - | $Tuple2([StringEntry( | |
2905 | + | let lR = makeString_2C((lQ :+ lK), "_") | |
2906 | + | let lS = if (containsElement(lN, lJ)) | |
2907 | + | then value(lM) | |
2908 | + | else makeString_2C((lN :+ lJ), "_") | |
2909 | + | $Tuple2([StringEntry(jH, lJ), StringEntry(lO, lR), StringEntry(lL, lS), kx], 0) | |
2887 | 2910 | } | |
2888 | 2911 | } | |
2889 | 2912 | } | |
2892 | 2915 | ||
2893 | 2916 | ||
2894 | 2917 | ||
2895 | - | @Callable( | |
2896 | - | func distributePoints ( | |
2897 | - | let | |
2898 | - | if ((size( | |
2918 | + | @Callable(gb) | |
2919 | + | func distributePoints (lT,lU,lV,lW,lX) = { | |
2920 | + | let kx = ku(gb) | |
2921 | + | if ((size(gb.payments) != 0)) | |
2899 | 2922 | then throw("No payments required") | |
2900 | 2923 | else { | |
2901 | - | let b = toString( | |
2924 | + | let b = toString(gb.originCaller) | |
2902 | 2925 | let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked") | |
2903 | - | let | |
2904 | - | let | |
2905 | - | let | |
2906 | - | let | |
2907 | - | let | |
2908 | - | let | |
2909 | - | if (( | |
2910 | - | then throw((("There are only " + toString( | |
2926 | + | let lY = H(b) | |
2927 | + | let lZ = valueOrElse(getInteger(al, lY), 0) | |
2928 | + | let ma = D(z) | |
2929 | + | let mb = valueOrElse(getInteger(al, ma), 0) | |
2930 | + | let mc = (lZ + mb) | |
2931 | + | let md = ((((lT + lU) + lV) + lW) + lX) | |
2932 | + | if ((md > mc)) | |
2933 | + | then throw((("There are only " + toString(mc)) + " free points to distribute")) | |
2911 | 2934 | else { | |
2912 | - | let | |
2913 | - | let ao = split(valueOrElse(getString(al, | |
2914 | - | let | |
2915 | - | $Tuple2([IntegerEntry( | |
2935 | + | let me = A(z) | |
2936 | + | let ao = split(valueOrElse(getString(al, me), "0_0_0_0_0"), "_") | |
2937 | + | let mf = (lZ - md) | |
2938 | + | $Tuple2([IntegerEntry(lY, if ((0 > mf)) | |
2916 | 2939 | then 0 | |
2917 | - | else | |
2918 | - | then ( | |
2919 | - | else | |
2940 | + | else mf), IntegerEntry(ma, if ((0 > mf)) | |
2941 | + | then (mb + mf) | |
2942 | + | else mb), StringEntry(me, makeString([toString((parseIntValue(ao[j]) + lT)), toString((parseIntValue(ao[k]) + lU)), toString((parseIntValue(ao[l]) + lV)), toString((parseIntValue(ao[m]) + lW)), toString((parseIntValue(ao[n]) + lX))], "_")), kx], 0) | |
2920 | 2943 | } | |
2921 | 2944 | } | |
2922 | 2945 | } | |
2923 | 2946 | ||
2924 | 2947 | ||
2925 | 2948 | ||
2926 | - | @Callable( | |
2927 | - | func splitByGlobalWeightsREADONLY ( | |
2928 | - | ||
2929 | - | ||
2930 | - | ||
2931 | - | @Callable( | |
2932 | - | func splitByGlobalAndLocalWeightsREADONLY ( | |
2933 | - | let | |
2934 | - | $Tuple2(nil, $Tuple2( | |
2935 | - | } | |
2936 | - | ||
2937 | - | ||
2938 | - | ||
2939 | - | @Callable( | |
2940 | - | func getBackpackREADONLY (z) = $Tuple2(nil, makeString( | |
2941 | - | ||
2942 | - | ||
2943 | - | ||
2944 | - | @Callable( | |
2949 | + | @Callable(gb) | |
2950 | + | func splitByGlobalWeightsREADONLY (dZ) = $Tuple2(nil, er(dZ)) | |
2951 | + | ||
2952 | + | ||
2953 | + | ||
2954 | + | @Callable(gb) | |
2955 | + | func splitByGlobalAndLocalWeightsREADONLY (mg,mh,ge) = { | |
2956 | + | let fX = gd(ge) | |
2957 | + | $Tuple2(nil, $Tuple2(er(mg), ec(mh, fX))) | |
2958 | + | } | |
2959 | + | ||
2960 | + | ||
2961 | + | ||
2962 | + | @Callable(gb) | |
2963 | + | func getBackpackREADONLY (z) = $Tuple2(nil, makeString(hd(bD(z)), ":")) | |
2964 | + | ||
2965 | + | ||
2966 | + | ||
2967 | + | @Callable(gb) | |
2945 | 2968 | func getWarehouseREADONLY (O) = { | |
2946 | - | let | |
2947 | - | let | |
2948 | - | let | |
2949 | - | $Tuple2(nil, makeString_2C( | |
2950 | - | } | |
2951 | - | ||
2952 | - | ||
2953 | - | ||
2954 | - | @Callable( | |
2969 | + | let iU = value(assetInfo(fromBase58String(O))) | |
2970 | + | let hs = (dg(split(iU.description, "_")[cO]) / cn) | |
2971 | + | let ht = valueOrElse(getInteger(bt(O)), 0) | |
2972 | + | $Tuple2(nil, makeString_2C(hq(bs(O), hs, ht), ":")) | |
2973 | + | } | |
2974 | + | ||
2975 | + | ||
2976 | + | ||
2977 | + | @Callable(gb) | |
2955 | 2978 | func saveLastTx () = { | |
2956 | - | let | |
2957 | - | if (if (if (( | |
2958 | - | then ( | |
2979 | + | let ic = gb.caller | |
2980 | + | if (if (if ((ic != cL)) | |
2981 | + | then (ic != cJ) | |
2959 | 2982 | else false) | |
2960 | - | then ( | |
2983 | + | then (ic != cM) | |
2961 | 2984 | else false) | |
2962 | 2985 | then throw("Access denied") | |
2963 | - | else $Tuple2([ | |
2964 | - | } | |
2965 | - | ||
2966 | - | ||
2967 | - | ||
2968 | - | @Callable( | |
2969 | - | func updateDuckStats (z, | |
2986 | + | else $Tuple2([ku(gb)], 42) | |
2987 | + | } | |
2988 | + | ||
2989 | + | ||
2990 | + | ||
2991 | + | @Callable(gb) | |
2992 | + | func updateDuckStats (z,jA) = if ((gb.caller != cJ)) | |
2970 | 2993 | then throw("Access denied") | |
2971 | - | else | |
2972 | - | ||
2973 | - | ||
2974 | - | ||
2975 | - | @Callable( | |
2976 | - | func updateAccStats (b, | |
2994 | + | else jz(z, jA) | |
2995 | + | ||
2996 | + | ||
2997 | + | ||
2998 | + | @Callable(gb) | |
2999 | + | func updateAccStats (b,jA) = if ((gb.caller != cJ)) | |
2977 | 3000 | then throw("Access denied") | |
2978 | - | else | |
2979 | - | ||
2980 | - | ||
2981 | - | ||
2982 | - | @Callable( | |
2983 | - | func equipDuck ( | |
2984 | - | let | |
2985 | - | if ((size( | |
3001 | + | else jF(b, jA) | |
3002 | + | ||
3003 | + | ||
3004 | + | ||
3005 | + | @Callable(gb) | |
3006 | + | func equipDuck (mi) = { | |
3007 | + | let kx = ku(gb) | |
3008 | + | if ((size(gb.payments) != 0)) | |
2986 | 3009 | then throw("No payments required") | |
2987 | 3010 | else { | |
2988 | - | let b = toString( | |
3011 | + | let b = toString(gb.originCaller) | |
2989 | 3012 | let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked") | |
2990 | - | if ( | |
3013 | + | if (jP(z)) | |
2991 | 3014 | then throw("equipDuck_checkTournament") | |
2992 | 3015 | else { | |
2993 | - | let | |
2994 | - | let | |
2995 | - | let | |
2996 | - | let | |
2997 | - | let | |
2998 | - | if ((size( | |
3016 | + | let fO = E(z) | |
3017 | + | let mj = split(valueOrElse(getString(fO), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
3018 | + | let he = bD(z) | |
3019 | + | let hH = hd(he) | |
3020 | + | let iF = split(mi, "_") | |
3021 | + | if ((size(iF) != p)) | |
2999 | 3022 | then throw("Wrong equipment string") | |
3000 | 3023 | else { | |
3001 | - | let | |
3002 | - | let | |
3003 | - | let am = if (( | |
3024 | + | let fQ = fD(mj, eO(hH[bh]), true, nil) | |
3025 | + | let fR = split(iF[o], ";")[1] | |
3026 | + | let am = if ((fR == "")) | |
3004 | 3027 | then 0 | |
3005 | 3028 | else { | |
3006 | - | let | |
3007 | - | if (( | |
3029 | + | let fS = split(fR, ",")[0] | |
3030 | + | if ((fS == "")) | |
3008 | 3031 | then 0 | |
3009 | 3032 | else { | |
3010 | - | let | |
3011 | - | let | |
3012 | - | let | |
3013 | - | if (if (if (if (if (( | |
3033 | + | let fd = split(fS, ":") | |
3034 | + | let cH = fd[0] | |
3035 | + | let fT = fd[1] | |
3036 | + | if (if (if (if (if ((cH == "06")) | |
3014 | 3037 | then true | |
3015 | - | else ( | |
3038 | + | else (cH == "07")) | |
3016 | 3039 | then true | |
3017 | - | else ( | |
3018 | - | then ( | |
3040 | + | else (cH == "08")) | |
3041 | + | then (fT != "") | |
3019 | 3042 | else false) | |
3020 | - | then (parseIntValue( | |
3043 | + | then (parseIntValue(fT) > 0) | |
3021 | 3044 | else false) | |
3022 | - | then parseIntValue(split(aP[parseIntValue( | |
3045 | + | then parseIntValue(split(aP[parseIntValue(cH)], "_")[aR]) | |
3023 | 3046 | else 0 | |
3024 | 3047 | } | |
3025 | 3048 | } | |
3026 | - | let | |
3027 | - | let | |
3028 | - | let | |
3029 | - | $Tuple2([StringEntry( | |
3049 | + | let fy = ak(this, z, am, true) | |
3050 | + | let fU = fD(iF, fQ, false, fy) | |
3051 | + | let mk = eT(fU) | |
3052 | + | $Tuple2([StringEntry(fO, mi), StringEntry(he, makeString_2C([hH[be], hH[bf], hH[bg], mk], ":")), StringEntry(K(z), makeString([toString(fy[7]), toString(fy[8]), toString(fy[9]), toString(fy[10]), toString(fy[11])], "_")), kx], 0) | |
3030 | 3053 | } | |
3031 | 3054 | } | |
3032 | 3055 | } | |
3034 | 3057 | ||
3035 | 3058 | ||
3036 | 3059 | ||
3037 | - | @Callable( | |
3038 | - | func fortificateLand (O, | |
3039 | - | let | |
3040 | - | if ((size( | |
3060 | + | @Callable(gb) | |
3061 | + | func fortificateLand (O,ml) = { | |
3062 | + | let kx = ku(gb) | |
3063 | + | if ((size(gb.payments) != 0)) | |
3041 | 3064 | then throw("No payments required") | |
3042 | 3065 | else { | |
3043 | - | let b = toString( | |
3066 | + | let b = toString(gb.originCaller) | |
3044 | 3067 | let z = valueOrElse(getString(bC(b)), "") | |
3045 | - | let | |
3046 | - | let | |
3047 | - | let | |
3048 | - | let | |
3049 | - | let | |
3050 | - | let | |
3051 | - | let | |
3052 | - | let | |
3053 | - | let | |
3054 | - | let | |
3055 | - | let | |
3056 | - | let | |
3057 | - | let | |
3058 | - | let | |
3059 | - | let | |
3060 | - | let | |
3061 | - | let | |
3062 | - | let | |
3063 | - | let | |
3064 | - | let | |
3065 | - | let | |
3066 | - | let | |
3067 | - | $Tuple2([StringEntry( | |
3068 | - | } | |
3069 | - | } | |
3070 | - | ||
3071 | - | ||
3072 | - | ||
3073 | - | @Callable( | |
3074 | - | func initDuckTourAttempt (z) = if (( | |
3068 | + | let eY = ak(this, z, 0, false) | |
3069 | + | let mm = bu(O) | |
3070 | + | let mn = split(valueOrElse(getString(mm), ":0_15:0_18:0"), "_") | |
3071 | + | let iU = value(assetInfo(fromBase58String(O))) | |
3072 | + | let hs = (dg(split(iU.description, "_")[cO]) / cn) | |
3073 | + | let ht = valueOrElse(getInteger(bt(O)), 0) | |
3074 | + | let hr = bs(O) | |
3075 | + | let hw = hq(hr, hs, ht) | |
3076 | + | let mo = split(hw[aZ], "_") | |
3077 | + | let mp = parseIntValue(mo[bb]) | |
3078 | + | let mq = parseIntValue(mo[bc]) | |
3079 | + | let mr = split(ml, "_") | |
3080 | + | let ms = fK(mn, eO(hw[aY]), mp, mq, true, nil) | |
3081 | + | let fQ = ms._1 | |
3082 | + | let mt = ms._2 | |
3083 | + | let mu = ms._3 | |
3084 | + | let mv = fK(mr, fQ, mt, mu, false, eY) | |
3085 | + | let fU = mv._1 | |
3086 | + | let mw = mv._2 | |
3087 | + | let mx = mv._3 | |
3088 | + | let mk = eT(fU) | |
3089 | + | let jy = makeString([mo[ba], toString(mw), toString(mx), mo[bd]], "_") | |
3090 | + | $Tuple2([StringEntry(mm, ml), StringEntry(hr, makeString_2C([hw[aV], hw[aW], hw[aX], mk, jy], ":")), kx], 0) | |
3091 | + | } | |
3092 | + | } | |
3093 | + | ||
3094 | + | ||
3095 | + | ||
3096 | + | @Callable(gb) | |
3097 | + | func initDuckTourAttempt (z) = if ((gb.caller != cM)) | |
3075 | 3098 | then throw("Access denied") | |
3076 | 3099 | else { | |
3077 | - | let | |
3078 | - | let | |
3079 | - | let | |
3080 | - | let | |
3081 | - | let | |
3082 | - | let | |
3083 | - | let | |
3084 | - | let | |
3085 | - | $Tuple2([ | |
3100 | + | let kx = ku(gb) | |
3101 | + | let iu = y(z) | |
3102 | + | let iv = ae(valueOrElse(getInteger(C(z)), 0)) | |
3103 | + | let kL = valueOrElse(getInteger(iu), iv) | |
3104 | + | let my = bE(z) | |
3105 | + | let iR = valueOrElse(getString(my), aI) | |
3106 | + | let jQ = valueOrElse(getInteger(cM, bJ), 0) | |
3107 | + | let mz = (toString(jQ) + "_T_0") | |
3108 | + | $Tuple2([kx, IntegerEntry(I(z), kL), IntegerEntry(iu, iv), StringEntry(J(z), iR), StringEntry(my, mz)], mz) | |
3086 | 3109 | } | |
3087 | 3110 | ||
3088 | 3111 | ||
3089 | 3112 | ||
3090 | - | @Callable( | |
3113 | + | @Callable(gb) | |
3091 | 3114 | func breakAttempt () = { | |
3092 | - | let | |
3093 | - | let z = valueOrErrorMessage(getString(bC(toString( | |
3094 | - | let | |
3095 | - | let | |
3096 | - | if ((split( | |
3115 | + | let kx = ku(gb) | |
3116 | + | let z = valueOrErrorMessage(getString(bC(toString(gb.caller))), "You don't have a duck staked") | |
3117 | + | let my = bE(z) | |
3118 | + | let iR = valueOrElse(getString(my), aI) | |
3119 | + | if ((split(iR, "_")[bX] != "T")) | |
3097 | 3120 | then throw("Your duck is not in the tournament") | |
3098 | 3121 | else { | |
3099 | - | let | |
3100 | - | let | |
3101 | - | $Tuple2([ | |
3102 | - | } | |
3103 | - | } | |
3104 | - | ||
3105 | - | ||
3106 | - | ||
3107 | - | @Callable( | |
3108 | - | func exitTournamentInternal (z) = if (( | |
3122 | + | let mA = getIntegerValue(I(z)) | |
3123 | + | let mB = getStringValue(J(z)) | |
3124 | + | $Tuple2([kx, IntegerEntry(y(z), mA), StringEntry(my, mB)], iR) | |
3125 | + | } | |
3126 | + | } | |
3127 | + | ||
3128 | + | ||
3129 | + | ||
3130 | + | @Callable(gb) | |
3131 | + | func exitTournamentInternal (z) = if ((gb.caller != this)) | |
3109 | 3132 | then throw("Access denied") | |
3110 | 3133 | else { | |
3111 | - | let | |
3112 | - | let | |
3113 | - | $Tuple2([IntegerEntry(y(z), | |
3134 | + | let mA = getIntegerValue(I(z)) | |
3135 | + | let mB = getStringValue(J(z)) | |
3136 | + | $Tuple2([IntegerEntry(y(z), mA), StringEntry(bE(z), mB)], false) | |
3114 | 3137 | } | |
3115 | 3138 | ||
3116 | 3139 | ||
3117 | 3140 | ||
3118 | - | @Callable( | |
3119 | - | func prepareRobbery ( | |
3120 | - | let | |
3121 | - | if (!(sigVerify_8Kb( | |
3141 | + | @Callable(gb) | |
3142 | + | func prepareRobbery (ij,ik) = { | |
3143 | + | let kx = ku(gb) | |
3144 | + | if (!(sigVerify_8Kb(ij, ik, dr))) | |
3122 | 3145 | then throw("signature does not match") | |
3123 | - | else if ((size( | |
3146 | + | else if ((size(gb.payments) != 1)) | |
3124 | 3147 | then throw("exactly 1 payment must be attached") | |
3125 | 3148 | else { | |
3126 | - | let | |
3127 | - | let | |
3128 | - | if (if (!(isDefined( | |
3149 | + | let ky = gb.payments[0] | |
3150 | + | let mC = ky.amount | |
3151 | + | if (if (!(isDefined(ky.assetId))) | |
3129 | 3152 | then true | |
3130 | - | else (value( | |
3153 | + | else (value(ky.assetId) != cS)) | |
3131 | 3154 | then throw("WLGOLD payments only!") | |
3132 | 3155 | else { | |
3133 | - | let | |
3134 | - | if ((size( | |
3156 | + | let eG = split(toUtf8String(ij), "|") | |
3157 | + | if ((size(eG) != 2)) | |
3135 | 3158 | then throw("Wrong message format") | |
3136 | 3159 | else { | |
3137 | - | let z = | |
3160 | + | let z = eG[0] | |
3138 | 3161 | let aw = as(this, z)._1 | |
3139 | - | if ((aw > | |
3140 | - | then throw(((("Payment " + toString( | |
3162 | + | if ((aw > mC)) | |
3163 | + | then throw(((("Payment " + toString(mC)) + " < required ") + toString(aw))) | |
3141 | 3164 | else { | |
3142 | - | let | |
3165 | + | let mD = split(eG[1], "_") | |
3143 | 3166 | let av = lastBlock.timestamp | |
3144 | 3167 | let ax = valueOrElse(getInteger(Q(z)), 0) | |
3145 | 3168 | let ay = valueOrElse(getString(R(z)), "") | |
3149 | 3172 | else false) | |
3150 | 3173 | then throw(("You already started robbing, wait till " + toString(az))) | |
3151 | 3174 | else { | |
3152 | - | func | |
3153 | - | let | |
3154 | - | let | |
3155 | - | if (( | |
3175 | + | func mE (ei,O) = { | |
3176 | + | let mF = valueOrElse(getInteger(N(O)), 0) | |
3177 | + | let mG = valueOrElse(getInteger(P(O)), 0) | |
3178 | + | if ((mF > size(t))) | |
3156 | 3179 | then throw("Invalid state") | |
3157 | - | else if ((av > | |
3180 | + | else if ((av > mG)) | |
3158 | 3181 | then { | |
3159 | - | let | |
3160 | - | if ((0 >= | |
3161 | - | then | |
3182 | + | let mH = valueOrElse(getInteger(bm(O)), 0) | |
3183 | + | if ((0 >= mH)) | |
3184 | + | then ei | |
3162 | 3185 | else { | |
3163 | - | let | |
3164 | - | let | |
3165 | - | let | |
3166 | - | let | |
3167 | - | let | |
3168 | - | let | |
3169 | - | if ((u > | |
3170 | - | then | |
3171 | - | else ( | |
3186 | + | let fI = value(assetInfo(fromBase58String(O))) | |
3187 | + | let iY = split(fI.description, "_") | |
3188 | + | let iJ = dg(iY[cO]) | |
3189 | + | let mI = iI(O, iJ) | |
3190 | + | let gh = (av - mH) | |
3191 | + | let jb = fraction(gh, (mI * iJ), aG) | |
3192 | + | if ((u > jb)) | |
3193 | + | then ei | |
3194 | + | else (ei :+ O) | |
3172 | 3195 | } | |
3173 | 3196 | } | |
3174 | - | else | |
3197 | + | else ei | |
3175 | 3198 | } | |
3176 | 3199 | ||
3177 | - | let | |
3178 | - | let | |
3179 | - | let | |
3180 | - | let | |
3181 | - | func | |
3182 | - | then | |
3183 | - | else | |
3184 | - | ||
3185 | - | func | |
3186 | - | then | |
3200 | + | let mJ = { | |
3201 | + | let ek = mD | |
3202 | + | let el = size(ek) | |
3203 | + | let em = nil | |
3204 | + | func en (eo,ep) = if ((ep >= el)) | |
3205 | + | then eo | |
3206 | + | else mE(eo, ek[ep]) | |
3207 | + | ||
3208 | + | func eq (eo,ep) = if ((ep >= el)) | |
3209 | + | then eo | |
3187 | 3210 | else throw("List size exceeds 10") | |
3188 | 3211 | ||
3189 | - | | |
3212 | + | eq(en(en(en(en(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
3190 | 3213 | } | |
3191 | - | if ((size( | |
3214 | + | if ((size(mJ) == 0)) | |
3192 | 3215 | then throw("No candidates for robbery") | |
3193 | 3216 | else { | |
3194 | - | let | |
3195 | - | let O = | |
3196 | - | $Tuple2([IntegerEntry(N(O), v), IntegerEntry(P(O), (av + t[v])), IntegerEntry(Q(z), x), StringEntry(R(z), O), | |
3217 | + | let mK = dj(size(mJ), height, (ik + gb.transactionId)) | |
3218 | + | let O = mJ[mK] | |
3219 | + | $Tuple2([IntegerEntry(N(O), v), IntegerEntry(P(O), (av + t[v])), IntegerEntry(Q(z), x), StringEntry(R(z), O), kx], O) | |
3197 | 3220 | } | |
3198 | 3221 | } | |
3199 | 3222 | } |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func a (b) = ("lastArbTimeUser_" + b) | |
5 | 5 | ||
6 | 6 | ||
7 | 7 | let c = 100000000 | |
8 | 8 | ||
9 | 9 | let d = 3200 | |
10 | 10 | ||
11 | 11 | let e = 4000 | |
12 | 12 | ||
13 | 13 | let f = 3 | |
14 | 14 | ||
15 | 15 | let g = 100000000 | |
16 | 16 | ||
17 | 17 | let h = 400 | |
18 | 18 | ||
19 | 19 | let i = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"] | |
20 | 20 | ||
21 | 21 | let j = 0 | |
22 | 22 | ||
23 | 23 | let k = 1 | |
24 | 24 | ||
25 | 25 | let l = 2 | |
26 | 26 | ||
27 | 27 | let m = 3 | |
28 | 28 | ||
29 | 29 | let n = 4 | |
30 | 30 | ||
31 | 31 | let o = 0 | |
32 | 32 | ||
33 | 33 | let p = 6 | |
34 | 34 | ||
35 | 35 | let q = 2 | |
36 | 36 | ||
37 | 37 | let r = 2 | |
38 | 38 | ||
39 | 39 | let s = 30 | |
40 | 40 | ||
41 | 41 | let t = [0, 600000, 900000, 43200000, 21600000] | |
42 | 42 | ||
43 | 43 | let u = 20000000 | |
44 | 44 | ||
45 | 45 | let v = 1 | |
46 | 46 | ||
47 | 47 | let w = 0 | |
48 | 48 | ||
49 | 49 | let x = 1 | |
50 | 50 | ||
51 | 51 | func y (z) = ("duckHealth_" + z) | |
52 | 52 | ||
53 | 53 | ||
54 | 54 | func A (z) = ("duckChars_" + z) | |
55 | 55 | ||
56 | 56 | ||
57 | 57 | func B (z) = ("duckXP_" + z) | |
58 | 58 | ||
59 | 59 | ||
60 | 60 | func C (z) = ("duckLevel_" + z) | |
61 | 61 | ||
62 | 62 | ||
63 | 63 | func D (z) = ("duckFreePoints_" + z) | |
64 | 64 | ||
65 | 65 | ||
66 | 66 | func E (z) = ("duckEquipment_" + z) | |
67 | 67 | ||
68 | 68 | ||
69 | 69 | func F (b) = ("userXP_" + b) | |
70 | 70 | ||
71 | 71 | ||
72 | 72 | func G (b) = ("userLevel_" + b) | |
73 | 73 | ||
74 | 74 | ||
75 | 75 | func H (b) = ("userFreePoints_" + b) | |
76 | 76 | ||
77 | 77 | ||
78 | 78 | func I (z) = ("savedHealth_" + z) | |
79 | 79 | ||
80 | 80 | ||
81 | 81 | func J (z) = ("savedLocation_" + z) | |
82 | 82 | ||
83 | 83 | ||
84 | 84 | func K (z) = ("duckBuffs_" + z) | |
85 | 85 | ||
86 | 86 | ||
87 | 87 | func L (z) = ("lastRobberyTime_" + z) | |
88 | 88 | ||
89 | 89 | ||
90 | 90 | func M (z) = ("lastRobberyCost_" + z) | |
91 | 91 | ||
92 | 92 | ||
93 | 93 | func N (O) = ("landRobberyState_" + O) | |
94 | 94 | ||
95 | 95 | ||
96 | 96 | func P (O) = ("landCooldownETA_" + O) | |
97 | 97 | ||
98 | 98 | ||
99 | 99 | func Q (z) = ("duckRobberyState_" + z) | |
100 | 100 | ||
101 | 101 | ||
102 | 102 | func R (z) = ("lockedLandByDuck_" + z) | |
103 | 103 | ||
104 | 104 | ||
105 | 105 | let S = 10000 | |
106 | 106 | ||
107 | 107 | let T = 10000 | |
108 | 108 | ||
109 | 109 | let U = 2000 | |
110 | 110 | ||
111 | 111 | let V = 100000 | |
112 | 112 | ||
113 | 113 | let W = 1000000 | |
114 | 114 | ||
115 | 115 | let X = 5000000 | |
116 | 116 | ||
117 | 117 | let Y = 10000 | |
118 | 118 | ||
119 | 119 | let Z = 1000000 | |
120 | 120 | ||
121 | 121 | let aa = 1000000 | |
122 | 122 | ||
123 | 123 | let ab = 10000 | |
124 | 124 | ||
125 | 125 | func ac (ad) = fraction(d, pow(ad, 4, e, 4, 4, DOWN), c) | |
126 | 126 | ||
127 | 127 | ||
128 | 128 | func ae (af) = (100 + af) | |
129 | 129 | ||
130 | 130 | ||
131 | 131 | func ag (ah,ai) = { | |
132 | 132 | let aj = ac(ai) | |
133 | 133 | [aj, (f * (aj - ah))] | |
134 | 134 | } | |
135 | 135 | ||
136 | 136 | ||
137 | 137 | func ak (al,z,am,an) = { | |
138 | 138 | let ao = split(valueOrElse(getString(al, A(z)), "0_0_0_0_0"), "_") | |
139 | 139 | let ap = valueOrElse(getInteger(al, C(z)), 0) | |
140 | 140 | let aq = valueOrElse(getInteger(al, y(z)), ae(ap)) | |
141 | 141 | let ar = split(valueOrElse(getString(al, K(z)), "0_0_0_0_0"), "_") | |
142 | 142 | ([parseIntValue(ao[j]), parseIntValue(ao[k]), parseIntValue(ao[l]), parseIntValue(ao[m]), parseIntValue(ao[n]), ap, aq] ++ (if (an) | |
143 | 143 | then [am, am, am, am, am] | |
144 | 144 | else [parseIntValue(ar[j]), parseIntValue(ar[k]), parseIntValue(ar[l]), parseIntValue(ar[m]), parseIntValue(ar[n])])) | |
145 | 145 | } | |
146 | 146 | ||
147 | 147 | ||
148 | 148 | func as (al,z) = { | |
149 | 149 | let at = valueOrElse(getInteger(al, M(z)), 0) | |
150 | 150 | let au = valueOrElse(getInteger(al, L(z)), 0) | |
151 | 151 | let av = lastBlock.timestamp | |
152 | 152 | let aw = max([g, (at - (h * (av - au)))]) | |
153 | 153 | let ax = valueOrElse(getInteger(al, Q(z)), 0) | |
154 | 154 | let ay = valueOrElse(getString(al, R(z)), "") | |
155 | 155 | let az = valueOrElse(getInteger(al, P(ay)), 0) | |
156 | 156 | $Tuple5(aw, au, ax, ay, az) | |
157 | 157 | } | |
158 | 158 | ||
159 | 159 | ||
160 | 160 | let aA = "LAND" | |
161 | 161 | ||
162 | 162 | let aB = "DUCK" | |
163 | 163 | ||
164 | 164 | let aC = "PRESALE" | |
165 | 165 | ||
166 | 166 | let aD = 6 | |
167 | 167 | ||
168 | 168 | let aE = 25 | |
169 | 169 | ||
170 | 170 | let aF = 3456000 | |
171 | 171 | ||
172 | 172 | let aG = 86400000 | |
173 | 173 | ||
174 | 174 | let aH = 10000000000 | |
175 | 175 | ||
176 | 176 | let aI = "Africa_F_Africa" | |
177 | 177 | ||
178 | 178 | let aJ = 39637 | |
179 | 179 | ||
180 | 180 | let aK = 10 | |
181 | 181 | ||
182 | 182 | let aL = ["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"] | |
183 | 183 | ||
184 | 184 | let aM = ["Americas", "Europe", "Asia", "Africa", "Oceania"] | |
185 | 185 | ||
186 | 186 | let aN = 10000000 | |
187 | 187 | ||
188 | 188 | let aO = [15, 16, 17, 18, 19, 20] | |
189 | 189 | ||
190 | 190 | let aP = ["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_30_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_50_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_70_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_"] | |
191 | 191 | ||
192 | 192 | let aQ = 6 | |
193 | 193 | ||
194 | 194 | let aR = 8 | |
195 | 195 | ||
196 | 196 | let aS = 9 | |
197 | 197 | ||
198 | 198 | let aT = 10 | |
199 | 199 | ||
200 | 200 | let aU = 10 | |
201 | 201 | ||
202 | 202 | let aV = 0 | |
203 | 203 | ||
204 | 204 | let aW = 1 | |
205 | 205 | ||
206 | 206 | let aX = 2 | |
207 | 207 | ||
208 | 208 | let aY = 3 | |
209 | 209 | ||
210 | 210 | let aZ = 4 | |
211 | 211 | ||
212 | 212 | let ba = 0 | |
213 | 213 | ||
214 | 214 | let bb = 1 | |
215 | 215 | ||
216 | 216 | let bc = 2 | |
217 | 217 | ||
218 | 218 | let bd = 3 | |
219 | 219 | ||
220 | 220 | let be = 0 | |
221 | 221 | ||
222 | 222 | let bf = 1 | |
223 | 223 | ||
224 | 224 | let bg = 2 | |
225 | 225 | ||
226 | 226 | let bh = 3 | |
227 | 227 | ||
228 | 228 | func bi (b) = ("lastTxIdByUser_" + b) | |
229 | 229 | ||
230 | 230 | ||
231 | 231 | func bj (bk) = ("nftOwner_" + bk) | |
232 | 232 | ||
233 | 233 | ||
234 | 234 | func bl (bk) = ("landCustomNameByAssetId_" + bk) | |
235 | 235 | ||
236 | 236 | ||
237 | 237 | func bm (bk) = ("stakedTime_" + bk) | |
238 | 238 | ||
239 | 239 | ||
240 | 240 | func bn (bo,bk) = makeString(["landArtStatus", bo, bk], "_") | |
241 | 241 | ||
242 | 242 | ||
243 | 243 | func bp (bq,bk,br) = ((((("stakedTimeByTypeAssetIdAndOwner_" + bq) + "_") + bk) + "_") + br) | |
244 | 244 | ||
245 | 245 | ||
246 | 246 | func bs (O) = ("wareHouse_" + O) | |
247 | 247 | ||
248 | 248 | ||
249 | 249 | func bt (bk) = ("infraLevel_" + bk) | |
250 | 250 | ||
251 | 251 | ||
252 | 252 | func bu (O) = ("fortifications_" + O) | |
253 | 253 | ||
254 | 254 | ||
255 | 255 | func bv (bk) = ("duckCustomNameByAssetId_" + bk) | |
256 | 256 | ||
257 | 257 | ||
258 | 258 | func bw (b) = ("accountCustomNameByAddr_" + b) | |
259 | 259 | ||
260 | 260 | ||
261 | 261 | func bx (b) = ("accRefBy_" + b) | |
262 | 262 | ||
263 | 263 | ||
264 | 264 | func by (z) = ("onboardArtActivatedOnDuck_" + z) | |
265 | 265 | ||
266 | 266 | ||
267 | 267 | func bz (b) = ("onboardArtActivatedDuckBy_" + b) | |
268 | 268 | ||
269 | 269 | ||
270 | 270 | func bA (b) = ("accReferrals_" + b) | |
271 | 271 | ||
272 | 272 | ||
273 | 273 | func bB (bk) = ("duckOwner_" + bk) | |
274 | 274 | ||
275 | 275 | ||
276 | 276 | func bC (br) = ("stakedDuckByOwner_" + br) | |
277 | 277 | ||
278 | 278 | ||
279 | 279 | func bD (z) = ("backPack_" + z) | |
280 | 280 | ||
281 | 281 | ||
282 | 282 | func bE (z) = ("duckLocation_" + z) | |
283 | 283 | ||
284 | 284 | ||
285 | 285 | func bF () = "contractsBlocked" | |
286 | 286 | ||
287 | 287 | ||
288 | 288 | func bG (bH) = ("%s%s__userGwlReleaseTime__" + bH) | |
289 | 289 | ||
290 | 290 | ||
291 | 291 | func bI () = "emergencyWarehouseProducts" | |
292 | 292 | ||
293 | 293 | ||
294 | 294 | let bJ = "%s__lastTourId" | |
295 | 295 | ||
296 | 296 | func bK (bL) = ("%s%d__tourStaticData__" + toString(bL)) | |
297 | 297 | ||
298 | 298 | ||
299 | 299 | func bM (bL) = ("%s%d__tourDynamicData__" + toString(bL)) | |
300 | 300 | ||
301 | 301 | ||
302 | 302 | let bN = 0 | |
303 | 303 | ||
304 | 304 | let bO = 1 | |
305 | 305 | ||
306 | 306 | func bP (bQ,bL) = { | |
307 | 307 | let bR = split(valueOrErrorMessage(getString(bQ, bK(bL)), (("Error reading tournament " + toString(bL)) + " data")), "__") | |
308 | 308 | let bS = split(valueOrErrorMessage(getString(bQ, bM(bL)), (("Error reading tournament " + toString(bL)) + " data")), "__") | |
309 | 309 | [bR, bS] | |
310 | 310 | } | |
311 | 311 | ||
312 | 312 | ||
313 | 313 | let bT = 6 | |
314 | 314 | ||
315 | 315 | let bU = 1 | |
316 | 316 | ||
317 | 317 | let bV = 3 | |
318 | 318 | ||
319 | 319 | let bW = 0 | |
320 | 320 | ||
321 | 321 | let bX = 1 | |
322 | 322 | ||
323 | 323 | let bY = 2 | |
324 | 324 | ||
325 | - | func bZ (ca) = (parseIntValue(ca[aQ]) * aN) | |
326 | - | ||
327 | - | ||
328 | - | let cb = false | |
325 | + | func bZ (bL,z) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bL), z], "__") | |
326 | + | ||
327 | + | ||
328 | + | func ca (cb) = (parseIntValue(cb[aQ]) * aN) | |
329 | + | ||
329 | 330 | ||
330 | 331 | let cc = false | |
331 | 332 | ||
332 | - | let cd = take(drop(this.bytes, 1), 1) | |
333 | - | ||
334 | - | let ce = { | |
335 | - | let cf = cd | |
336 | - | if ((base58'2W' == cf)) | |
333 | + | let cd = false | |
334 | + | ||
335 | + | let ce = take(drop(this.bytes, 1), 1) | |
336 | + | ||
337 | + | let cf = { | |
338 | + | let cg = ce | |
339 | + | if ((base58'2W' == cg)) | |
337 | 340 | then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
338 | - | else if ((base58'2T' == | |
341 | + | else if ((base58'2T' == cg)) | |
339 | 342 | then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63' | |
340 | 343 | else throw("Unknown chain") | |
341 | 344 | } | |
342 | 345 | ||
343 | - | let | |
344 | - | let | |
345 | - | if ((base58'2W' == | |
346 | + | let ch = { | |
347 | + | let cg = ce | |
348 | + | if ((base58'2W' == cg)) | |
346 | 349 | then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv" | |
347 | - | else if ((base58'2T' == | |
350 | + | else if ((base58'2T' == cg)) | |
348 | 351 | then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy" | |
349 | 352 | else throw("Unknown chain") | |
350 | 353 | } | |
351 | 354 | ||
352 | - | let | |
353 | - | let | |
354 | - | if ((base58'2W' == | |
355 | + | let ci = { | |
356 | + | let cg = ce | |
357 | + | if ((base58'2W' == cg)) | |
355 | 358 | then 10000000000 | |
356 | - | else if ((base58'2T' == | |
359 | + | else if ((base58'2T' == cg)) | |
357 | 360 | then 100000000 | |
358 | 361 | else throw("Unknown chain") | |
359 | 362 | } | |
360 | 363 | ||
361 | - | let | |
362 | - | let | |
363 | - | if ((base58'2W' == | |
364 | + | let cj = { | |
365 | + | let cg = ce | |
366 | + | if ((base58'2W' == cg)) | |
364 | 367 | then 86400000 | |
365 | - | else if ((base58'2T' == | |
368 | + | else if ((base58'2T' == cg)) | |
366 | 369 | then 60000 | |
367 | 370 | else throw("Unknown chain") | |
368 | 371 | } | |
369 | 372 | ||
370 | - | let | |
371 | - | ||
372 | - | let | |
373 | - | ||
374 | - | let | |
375 | - | ||
376 | - | let | |
377 | - | ||
378 | - | let | |
379 | - | ||
380 | - | let | |
381 | - | ||
382 | - | let | |
383 | - | ||
384 | - | let | |
385 | - | ||
386 | - | let | |
387 | - | ||
388 | - | func | |
389 | - | ||
390 | - | ||
391 | - | let | |
392 | - | ||
393 | - | let | |
394 | - | ||
395 | - | let | |
396 | - | ||
397 | - | let | |
398 | - | ||
399 | - | let | |
400 | - | ||
401 | - | func | |
402 | - | ||
403 | - | ||
404 | - | func | |
405 | - | ||
406 | - | ||
407 | - | func | |
408 | - | ||
409 | - | ||
410 | - | func | |
411 | - | ||
412 | - | ||
413 | - | let | |
414 | - | ||
415 | - | let | |
416 | - | ||
417 | - | let al = | |
418 | - | ||
419 | - | let | |
420 | - | ||
421 | - | let | |
422 | - | ||
423 | - | let | |
424 | - | ||
425 | - | let | |
426 | - | ||
427 | - | let | |
428 | - | ||
429 | - | let | |
430 | - | ||
431 | - | let | |
432 | - | ||
433 | - | let | |
434 | - | ||
435 | - | let | |
436 | - | ||
437 | - | let | |
438 | - | ||
439 | - | let | |
440 | - | ||
441 | - | func | |
442 | - | ||
443 | - | ||
444 | - | func | |
445 | - | ||
446 | - | ||
447 | - | func | |
448 | - | ||
449 | - | ||
450 | - | func | |
451 | - | ||
452 | - | ||
453 | - | func | |
454 | - | ||
455 | - | ||
456 | - | func | |
457 | - | let | |
458 | - | if ($isInstanceOf( | |
373 | + | let ck = "__" | |
374 | + | ||
375 | + | let cl = 1000000 | |
376 | + | ||
377 | + | let cm = 100000000 | |
378 | + | ||
379 | + | let cn = 25 | |
380 | + | ||
381 | + | let co = 100 | |
382 | + | ||
383 | + | let cp = 225 | |
384 | + | ||
385 | + | let cq = 400 | |
386 | + | ||
387 | + | let cr = 625 | |
388 | + | ||
389 | + | let cs = [0, 1, 2, 3, 4, 5] | |
390 | + | ||
391 | + | func ct (cu,cv) = valueOrErrorMessage(getString(cu, cv), makeString(["mandatory ", toString(cu), ".", cv, " is not defined"], "")) | |
392 | + | ||
393 | + | ||
394 | + | let cw = 1 | |
395 | + | ||
396 | + | let cx = 2 | |
397 | + | ||
398 | + | let cy = 3 | |
399 | + | ||
400 | + | let cz = 4 | |
401 | + | ||
402 | + | let cA = 7 | |
403 | + | ||
404 | + | func cB () = "%s__restConfig" | |
405 | + | ||
406 | + | ||
407 | + | func cC () = "%s__restAddr" | |
408 | + | ||
409 | + | ||
410 | + | func cD (cE) = split_4C(ct(cE, cB()), ck) | |
411 | + | ||
412 | + | ||
413 | + | func cF (cG,cH) = valueOrErrorMessage(addressFromString(cG[cH]), ("Rest cfg doesn't contain address at index " + toString(cH))) | |
414 | + | ||
415 | + | ||
416 | + | let cI = addressFromStringValue(valueOrElse(getString(this, cC()), ch)) | |
417 | + | ||
418 | + | let cG = cD(cI) | |
419 | + | ||
420 | + | let al = cF(cG, cw) | |
421 | + | ||
422 | + | let cJ = cF(cG, cx) | |
423 | + | ||
424 | + | let cK = cF(cG, cy) | |
425 | + | ||
426 | + | let cL = cF(cG, cz) | |
427 | + | ||
428 | + | let cM = cF(cG, cA) | |
429 | + | ||
430 | + | let cN = 0 | |
431 | + | ||
432 | + | let cO = 1 | |
433 | + | ||
434 | + | let cP = 2 | |
435 | + | ||
436 | + | let cQ = 3 | |
437 | + | ||
438 | + | let cR = "wlg_assetId" | |
439 | + | ||
440 | + | let cS = valueOrErrorMessage(getBinary(cL, cR), "Not initialized yet") | |
441 | + | ||
442 | + | let cT = 2 | |
443 | + | ||
444 | + | func cU (cu) = ("finishBlockForAddr_" + cu) | |
445 | + | ||
446 | + | ||
447 | + | func cV () = "resTypesProportions" | |
448 | + | ||
449 | + | ||
450 | + | func cW (cX) = ("resTypesByContinent_" + cX) | |
451 | + | ||
452 | + | ||
453 | + | func cY (br) = ("stakedLandsByOwner_" + br) | |
454 | + | ||
455 | + | ||
456 | + | func cZ (br) = ("stakedPiecesByOwner_" + br) | |
457 | + | ||
458 | + | ||
459 | + | func da (db) = { | |
460 | + | let cg = db | |
461 | + | if ($isInstanceOf(cg, "String")) | |
459 | 462 | then { | |
460 | - | let | |
461 | - | | |
463 | + | let dc = cg | |
464 | + | dc | |
462 | 465 | } | |
463 | 466 | else throw("fail to cast into String") | |
464 | 467 | } | |
465 | 468 | ||
466 | 469 | ||
467 | - | func | |
468 | - | let | |
469 | - | if ($isInstanceOf( | |
470 | + | func dd (db) = { | |
471 | + | let cg = db | |
472 | + | if ($isInstanceOf(cg, "Int")) | |
470 | 473 | then { | |
471 | - | let | |
472 | - | | |
474 | + | let de = cg | |
475 | + | de | |
473 | 476 | } | |
474 | 477 | else throw("fail to cast into Int") | |
475 | 478 | } | |
476 | 479 | ||
477 | 480 | ||
478 | - | func de (df) = { | |
479 | - | let cf = df | |
480 | - | if (("S" == cf)) | |
481 | - | then cm | |
482 | - | else if (("M" == cf)) | |
483 | - | then cn | |
484 | - | else if (("L" == cf)) | |
485 | - | then co | |
486 | - | else if (("XL" == cf)) | |
487 | - | then cp | |
488 | - | else if (("XXL" == cf)) | |
489 | - | then cq | |
481 | + | func df (db) = { | |
482 | + | let cg = db | |
483 | + | if ($isInstanceOf(cg, "Boolean")) | |
484 | + | then { | |
485 | + | let dc = cg | |
486 | + | dc | |
487 | + | } | |
488 | + | else throw("fail to cast into Boolean") | |
489 | + | } | |
490 | + | ||
491 | + | ||
492 | + | func dg (dh) = { | |
493 | + | let cg = dh | |
494 | + | if (("S" == cg)) | |
495 | + | then cn | |
496 | + | else if (("M" == cg)) | |
497 | + | then co | |
498 | + | else if (("L" == cg)) | |
499 | + | then cp | |
500 | + | else if (("XL" == cg)) | |
501 | + | then cq | |
502 | + | else if (("XXL" == cg)) | |
503 | + | then cr | |
490 | 504 | else throw("Unknown land size") | |
491 | 505 | } | |
492 | 506 | ||
493 | 507 | ||
494 | - | func | |
495 | - | ||
496 | - | ||
497 | - | func | |
498 | - | let | |
499 | - | let | |
500 | - | (toInt( | |
501 | - | } | |
502 | - | ||
503 | - | ||
504 | - | let | |
505 | - | let | |
506 | - | if ((base58'2W' == | |
508 | + | func di (dc) = isDefined(parseInt(dc)) | |
509 | + | ||
510 | + | ||
511 | + | func dj (dk,dl,dm) = { | |
512 | + | let dn = value(blockInfoByHeight(dl)) | |
513 | + | let do = sha256((value(dn.vrf) + dm)) | |
514 | + | (toInt(do) % dk) | |
515 | + | } | |
516 | + | ||
517 | + | ||
518 | + | let dp = { | |
519 | + | let cg = ce | |
520 | + | if ((base58'2W' == cg)) | |
507 | 521 | then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv") | |
508 | - | else if ((base58'2T' == | |
522 | + | else if ((base58'2T' == cg)) | |
509 | 523 | then this | |
510 | 524 | else throw("Unknown chain") | |
511 | 525 | } | |
512 | 526 | ||
513 | - | let | |
514 | - | let | |
515 | - | if ((base58'2W' == | |
527 | + | let dq = { | |
528 | + | let cg = ce | |
529 | + | if ((base58'2W' == cg)) | |
516 | 530 | then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb") | |
517 | - | else if ((base58'2T' == | |
531 | + | else if ((base58'2T' == cg)) | |
518 | 532 | then this | |
519 | 533 | else throw("Unknown chain") | |
520 | 534 | } | |
521 | 535 | ||
522 | - | let | |
523 | - | let | |
524 | - | if ((base58'2W' == | |
525 | - | then if ( | |
536 | + | let dr = { | |
537 | + | let cg = ce | |
538 | + | if ((base58'2W' == cg)) | |
539 | + | then if (cc) | |
526 | 540 | then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm' | |
527 | 541 | else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
528 | - | else if ((base58'2T' == | |
542 | + | else if ((base58'2T' == cg)) | |
529 | 543 | then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
530 | 544 | else throw("Unknown chain") | |
531 | 545 | } | |
532 | 546 | ||
533 | - | let | |
534 | - | ||
535 | - | let | |
536 | - | ||
537 | - | let | |
538 | - | ||
539 | - | let | |
540 | - | ||
541 | - | let | |
542 | - | ||
543 | - | let | |
544 | - | let | |
545 | - | if ((base58'2W' == | |
547 | + | let ds = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' | |
548 | + | ||
549 | + | let dt = 300000 | |
550 | + | ||
551 | + | let du = 5000000 | |
552 | + | ||
553 | + | let dv = 50 | |
554 | + | ||
555 | + | let dw = 10000000 | |
556 | + | ||
557 | + | let dx = { | |
558 | + | let cg = ce | |
559 | + | if ((base58'2W' == cg)) | |
546 | 560 | then 252289527462 | |
547 | - | else if ((base58'2T' == | |
561 | + | else if ((base58'2T' == cg)) | |
548 | 562 | then 2522895274 | |
549 | 563 | else throw("Unknown chain") | |
550 | 564 | } | |
551 | 565 | ||
552 | - | let | |
553 | - | let | |
554 | - | if ((base58'2W' == | |
566 | + | let dy = { | |
567 | + | let cg = ce | |
568 | + | if ((base58'2W' == cg)) | |
555 | 569 | then 250000000 | |
556 | - | else if ((base58'2T' == | |
570 | + | else if ((base58'2T' == cg)) | |
557 | 571 | then 250000000 | |
558 | 572 | else throw("Unknown chain") | |
559 | 573 | } | |
560 | 574 | ||
561 | - | let | |
562 | - | ||
563 | - | let | |
564 | - | ||
565 | - | let | |
566 | - | ||
567 | - | let | |
568 | - | ||
569 | - | let | |
570 | - | ||
571 | - | let | |
572 | - | ||
573 | - | let | |
574 | - | ||
575 | - | func | |
576 | - | ||
577 | - | ||
578 | - | func | |
579 | - | ||
580 | - | ||
581 | - | func | |
582 | - | ||
583 | - | ||
584 | - | func | |
585 | - | ||
586 | - | ||
587 | - | func | |
588 | - | ||
589 | - | ||
590 | - | func | |
591 | - | ||
592 | - | ||
593 | - | func | |
594 | - | ||
595 | - | ||
596 | - | func | |
597 | - | ||
598 | - | ||
599 | - | let | |
600 | - | ||
601 | - | let | |
602 | - | ||
603 | - | let | |
604 | - | ||
605 | - | let | |
606 | - | ||
607 | - | let | |
608 | - | ||
609 | - | let | |
610 | - | ||
611 | - | let | |
612 | - | ||
613 | - | func | |
614 | - | ||
615 | - | ||
616 | - | func | |
617 | - | let | |
618 | - | then ((( | |
619 | - | else -((((-( | |
620 | - | ( | |
621 | - | } | |
622 | - | ||
623 | - | ||
624 | - | func | |
625 | - | let | |
626 | - | if ((0 >= | |
575 | + | let dz = toBigInt(5) | |
576 | + | ||
577 | + | let dA = toBigInt(20) | |
578 | + | ||
579 | + | let dB = toBigInt((20 * 20)) | |
580 | + | ||
581 | + | let dC = toBigInt(((20 * 20) * 20)) | |
582 | + | ||
583 | + | let dD = toBigInt((((20 * 20) * 20) * 20)) | |
584 | + | ||
585 | + | let dE = toBigInt(((((20 * 20) * 20) * 20) * 20)) | |
586 | + | ||
587 | + | let dF = 500 | |
588 | + | ||
589 | + | func dG () = "nextLandNum" | |
590 | + | ||
591 | + | ||
592 | + | func dH (dI) = ("landByCustomName_" + dI) | |
593 | + | ||
594 | + | ||
595 | + | func dJ (dK) = ("landToAsset_" + dK) | |
596 | + | ||
597 | + | ||
598 | + | func dL (bk,br) = ((("infraLevelByAssetIdAndOwner_" + bk) + "_") + br) | |
599 | + | ||
600 | + | ||
601 | + | func dM (dK) = ("landOwner_" + dK) | |
602 | + | ||
603 | + | ||
604 | + | func dN (dI) = ("duckByCustomName_" + dI) | |
605 | + | ||
606 | + | ||
607 | + | func dO (dI) = ("accountByCustomName_" + dI) | |
608 | + | ||
609 | + | ||
610 | + | func dP () = "oldiesList" | |
611 | + | ||
612 | + | ||
613 | + | let dQ = 0 | |
614 | + | ||
615 | + | let dR = 1 | |
616 | + | ||
617 | + | let dS = 2 | |
618 | + | ||
619 | + | let dT = 0 | |
620 | + | ||
621 | + | let dU = 5 | |
622 | + | ||
623 | + | let dV = 6 | |
624 | + | ||
625 | + | let dW = 7 | |
626 | + | ||
627 | + | func dX (dK,dh) = ((aA + dK) + dh) | |
628 | + | ||
629 | + | ||
630 | + | func dY (dZ,ea) = { | |
631 | + | let eb = if ((dZ >= 0)) | |
632 | + | then (((dZ + ea) - 1) / ea) | |
633 | + | else -((((-(dZ) + ea) - 1) / ea)) | |
634 | + | (eb * cm) | |
635 | + | } | |
636 | + | ||
637 | + | ||
638 | + | func ec (ed,ee) = { | |
639 | + | let ef = (((((ee[0] + ee[1]) + ee[2]) + ee[3]) + ee[4]) + ee[5]) | |
640 | + | if ((0 >= ef)) | |
627 | 641 | then throw("Zero weights sum") | |
628 | 642 | else { | |
629 | - | let | |
630 | - | func | |
631 | - | ||
632 | - | let | |
633 | - | let | |
634 | - | let | |
635 | - | func | |
636 | - | then | |
637 | - | else | |
638 | - | ||
639 | - | func | |
640 | - | then | |
643 | + | let eg = fraction(ed, cl, ef) | |
644 | + | func eh (ei,ej) = (ei :+ fraction(ej, eg, cl)) | |
645 | + | ||
646 | + | let ek = ee | |
647 | + | let el = size(ek) | |
648 | + | let em = nil | |
649 | + | func en (eo,ep) = if ((ep >= el)) | |
650 | + | then eo | |
651 | + | else eh(eo, ek[ep]) | |
652 | + | ||
653 | + | func eq (eo,ep) = if ((ep >= el)) | |
654 | + | then eo | |
641 | 655 | else throw("List size exceeds 6") | |
642 | 656 | ||
643 | - | | |
644 | - | } | |
645 | - | } | |
646 | - | ||
647 | - | ||
648 | - | func | |
649 | - | let | |
650 | - | if ((size( | |
657 | + | eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6) | |
658 | + | } | |
659 | + | } | |
660 | + | ||
661 | + | ||
662 | + | func er (ed) = { | |
663 | + | let es = split(value(getString(cV())), "_") | |
664 | + | if ((size(es) != aD)) | |
651 | 665 | then throw("Wrong proportions data") | |
652 | 666 | else { | |
653 | - | let | |
654 | - | | |
655 | - | } | |
656 | - | } | |
657 | - | ||
658 | - | ||
659 | - | func | |
660 | - | let | |
661 | - | func | |
662 | - | let | |
663 | - | if ((0 > | |
664 | - | then throw(((((("Not enough material idx=" + toString( | |
665 | - | else ( | |
667 | + | let et = [parseIntValue(es[0]), parseIntValue(es[1]), parseIntValue(es[2]), parseIntValue(es[3]), parseIntValue(es[4]), parseIntValue(es[5])] | |
668 | + | ec(ed, et) | |
669 | + | } | |
670 | + | } | |
671 | + | ||
672 | + | ||
673 | + | func eu (ev,ew,ex) = { | |
674 | + | let ey = er(ex) | |
675 | + | func ez (ei,cH) = { | |
676 | + | let eA = (parseIntValue(ew[cH]) - ey[cH]) | |
677 | + | if ((0 > eA)) | |
678 | + | then throw(((((("Not enough material idx=" + toString(cH)) + ", you have ") + ew[cH]) + ", but need ") + toString(ey[cH]))) | |
679 | + | else (ei :+ toString(eA)) | |
666 | 680 | } | |
667 | 681 | ||
668 | - | if ( | |
682 | + | if (ev) | |
669 | 683 | then { | |
670 | - | let | |
671 | - | let | |
672 | - | let | |
673 | - | func | |
674 | - | then | |
675 | - | else | |
676 | - | ||
677 | - | func | |
678 | - | then | |
684 | + | let ek = cs | |
685 | + | let el = size(ek) | |
686 | + | let em = nil | |
687 | + | func en (eo,ep) = if ((ep >= el)) | |
688 | + | then eo | |
689 | + | else ez(eo, ek[ep]) | |
690 | + | ||
691 | + | func eq (eo,ep) = if ((ep >= el)) | |
692 | + | then eo | |
679 | 693 | else throw("List size exceeds 6") | |
680 | 694 | ||
681 | - | | |
682 | - | } | |
683 | - | else | |
684 | - | } | |
685 | - | ||
686 | - | ||
687 | - | func | |
688 | - | then $Tuple2( | |
695 | + | eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6) | |
696 | + | } | |
697 | + | else ew | |
698 | + | } | |
699 | + | ||
700 | + | ||
701 | + | func eB (eC,eD) = if ((eD == "")) | |
702 | + | then $Tuple2(eC, false) | |
689 | 703 | else { | |
690 | - | func | |
691 | - | let | |
692 | - | if ((size( | |
704 | + | func eE (ei,eF) = { | |
705 | + | let eG = split(eF, ",") | |
706 | + | if ((size(eG) != 2)) | |
693 | 707 | then throw("Incorrect format, should be index,amount") | |
694 | 708 | else { | |
695 | - | let | |
696 | - | if (if ((0 > | |
709 | + | let cH = parseIntValue(eG[0]) | |
710 | + | if (if ((0 > cH)) | |
697 | 711 | then true | |
698 | - | else ( | |
712 | + | else (cH >= size(aP))) | |
699 | 713 | then throw("Unknown product idx") | |
700 | 714 | else { | |
701 | - | let | |
702 | - | let | |
703 | - | if ((size( | |
704 | - | then throw((("You don't have " + aL[ | |
715 | + | let eH = parseIntValue(eG[1]) | |
716 | + | let eI = split(ei._1, (eG[0] + ":")) | |
717 | + | if ((size(eI) != 2)) | |
718 | + | then throw((("You don't have " + aL[cH]) + " equipped")) | |
705 | 719 | else { | |
706 | - | let | |
707 | - | let | |
720 | + | let eJ = eI[1] | |
721 | + | let eK = if (di(take(drop(eJ, 1), 1))) | |
708 | 722 | then 2 | |
709 | 723 | else 1 | |
710 | - | let | |
711 | - | let | |
712 | - | let | |
713 | - | then ( | |
714 | - | else throw(((((("You equipped " + toString( | |
715 | - | $Tuple2((((( | |
724 | + | let eL = parseIntValue(take(eJ, eK)) | |
725 | + | let eM = drop(eJ, eK) | |
726 | + | let eN = if ((eL >= eH)) | |
727 | + | then (eL - eH) | |
728 | + | else throw(((((("You equipped " + toString(eL)) + " of ") + aL[cH]) + ", but tried to use ") + toString(eH))) | |
729 | + | $Tuple2(((((eI[0] + eG[0]) + ":") + toString(eN)) + eM), if (ei._2) | |
716 | 730 | then true | |
717 | - | else if (if (( | |
718 | - | then (8 >= | |
731 | + | else if (if ((cH >= 6)) | |
732 | + | then (8 >= cH) | |
719 | 733 | else false) | |
720 | - | then ( | |
734 | + | then (eN == 0) | |
721 | 735 | else false) | |
722 | 736 | } | |
723 | 737 | } | |
724 | 738 | } | |
725 | 739 | } | |
726 | 740 | ||
727 | - | let | |
728 | - | let | |
729 | - | let | |
730 | - | func | |
731 | - | then | |
732 | - | else | |
733 | - | ||
734 | - | func | |
735 | - | then | |
741 | + | let ek = split(eD, "_") | |
742 | + | let el = size(ek) | |
743 | + | let em = $Tuple2(eC, false) | |
744 | + | func en (eo,ep) = if ((ep >= el)) | |
745 | + | then eo | |
746 | + | else eE(eo, ek[ep]) | |
747 | + | ||
748 | + | func eq (eo,ep) = if ((ep >= el)) | |
749 | + | then eo | |
736 | 750 | else throw("List size exceeds 10") | |
737 | 751 | ||
738 | - | | |
752 | + | eq(en(en(en(en(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
739 | 753 | } | |
740 | 754 | ||
741 | 755 | ||
742 | - | func | |
743 | - | let | |
756 | + | func eO (eP) = { | |
757 | + | let eQ = if ((eP == "")) | |
744 | 758 | then nil | |
745 | - | else split_4C( | |
746 | - | func | |
747 | - | let | |
748 | - | let | |
749 | - | then parseIntValue( | |
759 | + | else split_4C(eP, "_") | |
760 | + | func eR (ei,cb) = { | |
761 | + | let eS = (size(ei) / 8) | |
762 | + | let eL = if ((size(eQ) > eS)) | |
763 | + | then parseIntValue(eQ[eS]) | |
750 | 764 | else 0 | |
751 | - | ( | |
765 | + | (ei + toBytes(eL)) | |
752 | 766 | } | |
753 | 767 | ||
754 | - | let | |
755 | - | let | |
756 | - | let | |
757 | - | func | |
758 | - | then | |
759 | - | else | |
760 | - | ||
761 | - | func | |
762 | - | then | |
768 | + | let ek = aP | |
769 | + | let el = size(ek) | |
770 | + | let em = base58'' | |
771 | + | func en (eo,ep) = if ((ep >= el)) | |
772 | + | then eo | |
773 | + | else eR(eo, ek[ep]) | |
774 | + | ||
775 | + | func eq (eo,ep) = if ((ep >= el)) | |
776 | + | then eo | |
763 | 777 | else throw("List size exceeds 50") | |
764 | 778 | ||
765 | - | | |
766 | - | } | |
767 | - | ||
768 | - | ||
769 | - | func | |
770 | - | func | |
771 | - | let | |
772 | - | let | |
773 | - | ( | |
779 | + | eq(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50) | |
780 | + | } | |
781 | + | ||
782 | + | ||
783 | + | func eT (eU) = { | |
784 | + | func eV (ei,cb) = { | |
785 | + | let eS = size(ei) | |
786 | + | let eW = take(drop(eU, (8 * eS)), 8) | |
787 | + | (ei :+ toString(toInt(eW))) | |
774 | 788 | } | |
775 | 789 | ||
776 | 790 | makeString_2C({ | |
777 | - | let | |
778 | - | let | |
779 | - | let | |
780 | - | func | |
781 | - | then | |
782 | - | else | |
783 | - | ||
784 | - | func | |
785 | - | then | |
791 | + | let ek = aP | |
792 | + | let el = size(ek) | |
793 | + | let em = nil | |
794 | + | func en (eo,ep) = if ((ep >= el)) | |
795 | + | then eo | |
796 | + | else eV(eo, ek[ep]) | |
797 | + | ||
798 | + | func eq (eo,ep) = if ((ep >= el)) | |
799 | + | then eo | |
786 | 800 | else throw("List size exceeds 50") | |
787 | 801 | ||
788 | - | | |
802 | + | eq(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50) | |
789 | 803 | }, "_") | |
790 | 804 | } | |
791 | 805 | ||
792 | 806 | ||
793 | - | func | |
794 | - | func | |
795 | - | let | |
796 | - | then | |
807 | + | func eX (eY,eZ) = { | |
808 | + | func fa (ei,eS) = { | |
809 | + | let fb = if ((size(eY) > (7 + eS))) | |
810 | + | then eY[(7 + eS)] | |
797 | 811 | else 0 | |
798 | - | if ((parseIntValue( | |
799 | - | then throw(("Requirement not satisfied: " + i[ | |
812 | + | if ((parseIntValue(eZ[eS]) > (eY[eS] + fb))) | |
813 | + | then throw(("Requirement not satisfied: " + i[eS])) | |
800 | 814 | else true | |
801 | 815 | } | |
802 | 816 | ||
803 | - | let | |
804 | - | let | |
805 | - | let | |
806 | - | func | |
807 | - | then | |
808 | - | else | |
809 | - | ||
810 | - | func | |
811 | - | then | |
817 | + | let ek = [0, 1, 2, 3, 4, 5, 6] | |
818 | + | let el = size(ek) | |
819 | + | let em = false | |
820 | + | func en (eo,ep) = if ((ep >= el)) | |
821 | + | then eo | |
822 | + | else fa(eo, ek[ep]) | |
823 | + | ||
824 | + | func eq (eo,ep) = if ((ep >= el)) | |
825 | + | then eo | |
812 | 826 | else throw("List size exceeds 7") | |
813 | 827 | ||
814 | - | | |
815 | - | } | |
816 | - | ||
817 | - | ||
818 | - | func | |
819 | - | let | |
820 | - | if ((size( | |
828 | + | eq(en(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6), 7) | |
829 | + | } | |
830 | + | ||
831 | + | ||
832 | + | func fc (fd,eQ,fe,eY,ff,fg) = { | |
833 | + | let eG = split(fd, ":") | |
834 | + | if ((size(eG) != 2)) | |
821 | 835 | then throw("Incorrect format, should be index:amount") | |
822 | - | else if (if (!( | |
823 | - | then (size( | |
836 | + | else if (if (!(fe)) | |
837 | + | then (size(eG[0]) != 2) | |
824 | 838 | else false) | |
825 | 839 | then throw("Product idx should be 2 digits, zero padded") | |
826 | 840 | else { | |
827 | - | let | |
828 | - | let | |
829 | - | if (!(containsElement(aO, | |
830 | - | then throw((("Product '" + aL[ | |
831 | - | else if ((0 > | |
841 | + | let fh = parseIntValue(eG[0]) | |
842 | + | let fi = parseIntValue(eG[1]) | |
843 | + | if (!(containsElement(aO, fh))) | |
844 | + | then throw((("Product '" + aL[fh]) + "' cannot be used for land defense")) | |
845 | + | else if ((0 > fi)) | |
832 | 846 | then throw("Count can't be negative") | |
833 | - | else if (( | |
834 | - | then throw(((("Can't put more than " + toString(s)) + " of ") + aL[ | |
835 | - | else if (( | |
836 | - | then $Tuple3( | |
847 | + | else if ((fi > s)) | |
848 | + | then throw(((("Can't put more than " + toString(s)) + " of ") + aL[fh])) | |
849 | + | else if ((fi == 0)) | |
850 | + | then $Tuple3(eQ, ff, fg) | |
837 | 851 | else { | |
838 | - | let | |
839 | - | let | |
840 | - | let | |
841 | - | let | |
842 | - | if (if (!( | |
843 | - | then ( | |
852 | + | let fj = take(eQ, (8 * fh)) | |
853 | + | let eL = toInt(take(drop(eQ, (8 * fh)), 8)) | |
854 | + | let eM = drop(eQ, (8 * (fh + 1))) | |
855 | + | let cb = split(aP[fh], "_") | |
856 | + | if (if (!(fe)) | |
857 | + | then (fi > eL) | |
844 | 858 | else false) | |
845 | - | then throw(((((("You have " + toString( | |
859 | + | then throw(((((("You have " + toString(eL)) + " of ") + aL[fh]) + ", but tried to use ") + toString(fi))) | |
846 | 860 | else { | |
847 | - | let | |
848 | - | then | |
861 | + | let eN = if (if (!(fe)) | |
862 | + | then eX(eY, split(cb[aS], ",")) | |
849 | 863 | else false) | |
850 | - | then ( | |
851 | - | else ( | |
852 | - | let | |
853 | - | $Tuple3((( | |
864 | + | then (eL - fi) | |
865 | + | else (eL + fi) | |
866 | + | let fk = (dY(eN, aU) - dY(eL, aU)) | |
867 | + | $Tuple3(((fj + toBytes(eN)) + eM), (ff + fk), (fg - fk)) | |
854 | 868 | } | |
855 | 869 | } | |
856 | 870 | } | |
857 | 871 | } | |
858 | 872 | ||
859 | 873 | ||
860 | - | func | |
861 | - | let | |
862 | - | if ((size( | |
874 | + | func fl (fd,eQ,fe,fm,fn,fo,eY) = { | |
875 | + | let eG = split(fd, ":") | |
876 | + | if ((size(eG) != 2)) | |
863 | 877 | then throw("Incorrect format, should be index:amount") | |
864 | - | else if (if (!( | |
865 | - | then (size( | |
878 | + | else if (if (!(fe)) | |
879 | + | then (size(eG[0]) != 2) | |
866 | 880 | else false) | |
867 | 881 | then throw("Product idx should be 2 digits, zero padded") | |
868 | 882 | else { | |
869 | - | let | |
870 | - | let | |
871 | - | if (if ((0 > | |
883 | + | let fh = parseIntValue(eG[0]) | |
884 | + | let fi = parseIntValue(eG[1]) | |
885 | + | if (if ((0 > fh)) | |
872 | 886 | then true | |
873 | - | else ( | |
887 | + | else (fh >= size(aP))) | |
874 | 888 | then throw("Unknown product idx") | |
875 | - | else if ((0 > | |
889 | + | else if ((0 > fi)) | |
876 | 890 | then throw("Count can't be negative") | |
877 | - | else if (( | |
878 | - | then throw(((("Can't put more than " + toString(s)) + " of ") + aL[ | |
879 | - | else if (( | |
880 | - | then $Tuple2( | |
891 | + | else if ((fi > s)) | |
892 | + | then throw(((("Can't put more than " + toString(s)) + " of ") + aL[fh])) | |
893 | + | else if ((fi == 0)) | |
894 | + | then $Tuple2(eQ, false) | |
881 | 895 | else { | |
882 | - | let | |
883 | - | let | |
884 | - | let | |
885 | - | let | |
886 | - | if (if (!( | |
887 | - | then ( | |
896 | + | let fj = take(eQ, (8 * fh)) | |
897 | + | let eL = toInt(take(drop(eQ, (8 * fh)), 8)) | |
898 | + | let eM = drop(eQ, (8 * (fh + 1))) | |
899 | + | let cb = split(aP[fh], "_") | |
900 | + | if (if (!(fe)) | |
901 | + | then (fi > eL) | |
888 | 902 | else false) | |
889 | - | then throw(((((("You have " + toString( | |
903 | + | then throw(((((("You have " + toString(eL)) + " of ") + aL[fh]) + ", but tried to use ") + toString(fi))) | |
890 | 904 | else { | |
891 | - | let | |
892 | - | then | |
905 | + | let fp = if (if (!(fe)) | |
906 | + | then eX(eY, split(cb[aS], ",")) | |
893 | 907 | else false) | |
894 | 908 | then { | |
895 | - | let | |
896 | - | if (( | |
909 | + | let fq = cb[aT] | |
910 | + | if ((fq == "")) | |
897 | 911 | then throw("Item cannot be equipped") | |
898 | 912 | else { | |
899 | - | let | |
900 | - | let | |
901 | - | if (( | |
913 | + | let fr = parseIntValue(fq) | |
914 | + | let fs = (fr / 100) | |
915 | + | if ((fm != fs)) | |
902 | 916 | then throw("Segment incompatible") | |
903 | 917 | else { | |
904 | - | let | |
905 | - | if (( | |
918 | + | let ft = ((fr % 100) / 10) | |
919 | + | if ((fn != ft)) | |
906 | 920 | then throw("Slot incompatible") | |
907 | 921 | else { | |
908 | - | let | |
909 | - | if (if (( | |
910 | - | then ( | |
922 | + | let fu = (fr % 10) | |
923 | + | if (if ((fo != 0)) | |
924 | + | then (fu > 1) | |
911 | 925 | else false) | |
912 | 926 | then throw("Big items should occupy slot 0") | |
913 | - | else ( | |
927 | + | else (fu > 1) | |
914 | 928 | } | |
915 | 929 | } | |
916 | 930 | } | |
917 | 931 | } | |
918 | 932 | else false | |
919 | - | $Tuple2((( | |
920 | - | then | |
921 | - | else -( | |
933 | + | $Tuple2(((fj + toBytes((eL + (if (fe) | |
934 | + | then fi | |
935 | + | else -(fi))))) + eM), fp) | |
922 | 936 | } | |
923 | 937 | } | |
924 | 938 | } | |
925 | 939 | } | |
926 | 940 | ||
927 | 941 | ||
928 | - | func | |
942 | + | func fv (fw,fx,fe,fm,fn,fy) = if ((fw != "")) | |
929 | 943 | then { | |
930 | - | let | |
931 | - | if ((size( | |
944 | + | let fz = split(fw, ",") | |
945 | + | if ((size(fz) > r)) | |
932 | 946 | then throw("Wrong slots format") | |
933 | 947 | else { | |
934 | - | let | |
935 | - | let | |
936 | - | then | |
948 | + | let fA = fz[0] | |
949 | + | let fB = if ((size(fz) > 1)) | |
950 | + | then fz[1] | |
937 | 951 | else "" | |
938 | - | if (if (( | |
939 | - | then ( | |
952 | + | if (if ((fA == "")) | |
953 | + | then (fB == "") | |
940 | 954 | else false) | |
941 | - | then | |
955 | + | then fx | |
942 | 956 | else { | |
943 | - | let | |
944 | - | then | |
945 | - | else $Tuple2( | |
946 | - | if (( | |
947 | - | then if ( | |
957 | + | let fC = if ((fA != "")) | |
958 | + | then fl(fA, fx, fe, fm, fn, 0, fy) | |
959 | + | else $Tuple2(fx, false) | |
960 | + | if ((fB != "")) | |
961 | + | then if (fC._2) | |
948 | 962 | then throw("Big item already occupies slot") | |
949 | - | else | |
950 | - | else | |
963 | + | else fl(fB, fC._1, fe, fm, fn, 1, fy)._1 | |
964 | + | else fC._1 | |
951 | 965 | } | |
952 | 966 | } | |
953 | 967 | } | |
954 | - | else | |
955 | - | ||
956 | - | ||
957 | - | func | |
958 | - | func | |
959 | - | let | |
960 | - | let | |
961 | - | if ((size( | |
968 | + | else fx | |
969 | + | ||
970 | + | ||
971 | + | func fD (fE,fF,fe,fy) = { | |
972 | + | func fm (ei,fG) = { | |
973 | + | let eS = ei._1 | |
974 | + | let fn = split(fG, ";") | |
975 | + | if ((size(fn) != q)) | |
962 | 976 | then throw("Wrong segment format") | |
963 | 977 | else { | |
964 | - | let | |
965 | - | let | |
966 | - | if (if (( | |
967 | - | then ( | |
978 | + | let fH = fn[0] | |
979 | + | let fI = fn[1] | |
980 | + | if (if ((fH == "")) | |
981 | + | then (fI == "") | |
968 | 982 | else false) | |
969 | - | then $Tuple2(( | |
983 | + | then $Tuple2((eS + 1), ei._2) | |
970 | 984 | else { | |
971 | - | let | |
972 | - | $Tuple2(( | |
985 | + | let fJ = fv(fH, ei._2, fe, eS, 0, fy) | |
986 | + | $Tuple2((eS + 1), fv(fI, fJ, fe, eS, 1, fy)) | |
973 | 987 | } | |
974 | 988 | } | |
975 | 989 | } | |
976 | 990 | ||
977 | - | ( let | |
978 | - | let | |
979 | - | let | |
980 | - | func | |
981 | - | then | |
982 | - | else | |
983 | - | ||
984 | - | func | |
985 | - | then | |
991 | + | ( let ek = fE | |
992 | + | let el = size(ek) | |
993 | + | let em = $Tuple2(0, fF) | |
994 | + | func en (eo,ep) = if ((ep >= el)) | |
995 | + | then eo | |
996 | + | else fm(eo, ek[ep]) | |
997 | + | ||
998 | + | func eq (eo,ep) = if ((ep >= el)) | |
999 | + | then eo | |
986 | 1000 | else throw("List size exceeds 6") | |
987 | 1001 | ||
988 | - | | |
989 | - | } | |
990 | - | ||
991 | - | ||
992 | - | func | |
1002 | + | eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6))._2 | |
1003 | + | } | |
1004 | + | ||
1005 | + | ||
1006 | + | func fK (fE,fF,ff,fg,fe,eY) = if ((3 > size(fE))) | |
993 | 1007 | then throw("At least duck, mines and traps parts are required") | |
994 | 1008 | else { | |
995 | - | func | |
996 | - | let | |
997 | - | if (( | |
998 | - | then $Tuple4(( | |
1009 | + | func fm (ei,fG) = { | |
1010 | + | let eS = ei._1 | |
1011 | + | if ((eS == 0)) | |
1012 | + | then $Tuple4((eS + 1), ei._2, ei._3, ei._4) | |
999 | 1013 | else { | |
1000 | - | let | |
1001 | - | $Tuple4(( | |
1014 | + | let fL = fc(fG, ei._2, fe, eY, ei._3, ei._4) | |
1015 | + | $Tuple4((eS + 1), fL._1, fL._2, fL._3) | |
1002 | 1016 | } | |
1003 | 1017 | } | |
1004 | 1018 | ||
1005 | - | let | |
1006 | - | let | |
1007 | - | let | |
1008 | - | let | |
1009 | - | func | |
1010 | - | then | |
1011 | - | else | |
1012 | - | ||
1013 | - | func | |
1014 | - | then | |
1019 | + | let fM = { | |
1020 | + | let ek = fE | |
1021 | + | let el = size(ek) | |
1022 | + | let em = $Tuple4(0, fF, ff, fg) | |
1023 | + | func en (eo,ep) = if ((ep >= el)) | |
1024 | + | then eo | |
1025 | + | else fm(eo, ek[ep]) | |
1026 | + | ||
1027 | + | func eq (eo,ep) = if ((ep >= el)) | |
1028 | + | then eo | |
1015 | 1029 | else throw("List size exceeds 10") | |
1016 | 1030 | ||
1017 | - | | |
1018 | - | } | |
1019 | - | $Tuple3( | |
1031 | + | eq(en(en(en(en(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1032 | + | } | |
1033 | + | $Tuple3(fM._2, fM._3, fM._4) | |
1020 | 1034 | } | |
1021 | 1035 | ||
1022 | 1036 | ||
1023 | - | func | |
1024 | - | let | |
1025 | - | let | |
1026 | - | let | |
1027 | - | let | |
1028 | - | let am = if (( | |
1037 | + | func fN (z) = { | |
1038 | + | let fO = E(z) | |
1039 | + | let fP = split(valueOrElse(getString(fO), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
1040 | + | let fQ = fD(fP, ds, true, nil) | |
1041 | + | let fR = split(fP[o], ";")[1] | |
1042 | + | let am = if ((fR == "")) | |
1029 | 1043 | then 0 | |
1030 | 1044 | else { | |
1031 | - | let | |
1032 | - | if (( | |
1045 | + | let fS = split(fR, ",")[0] | |
1046 | + | if ((fS == "")) | |
1033 | 1047 | then 0 | |
1034 | 1048 | else { | |
1035 | - | let | |
1036 | - | let | |
1037 | - | let | |
1038 | - | if (if (if (if (if (( | |
1049 | + | let fd = split(fS, ":") | |
1050 | + | let cH = fd[0] | |
1051 | + | let fT = fd[1] | |
1052 | + | if (if (if (if (if ((cH == "06")) | |
1039 | 1053 | then true | |
1040 | - | else ( | |
1054 | + | else (cH == "07")) | |
1041 | 1055 | then true | |
1042 | - | else ( | |
1043 | - | then ( | |
1056 | + | else (cH == "08")) | |
1057 | + | then (fT != "") | |
1044 | 1058 | else false) | |
1045 | - | then (parseIntValue( | |
1059 | + | then (parseIntValue(fT) > 0) | |
1046 | 1060 | else false) | |
1047 | - | then parseIntValue(split(aP[parseIntValue( | |
1061 | + | then parseIntValue(split(aP[parseIntValue(cH)], "_")[aR]) | |
1048 | 1062 | else 0 | |
1049 | 1063 | } | |
1050 | 1064 | } | |
1051 | - | let | |
1052 | - | let | |
1053 | - | ( | |
1054 | - | } | |
1055 | - | ||
1056 | - | ||
1057 | - | func | |
1065 | + | let fy = ak(this, z, am, true) | |
1066 | + | let fU = fD(fP, fQ, false, fy) | |
1067 | + | (fU == fU) | |
1068 | + | } | |
1069 | + | ||
1070 | + | ||
1071 | + | func fV (fW,fX,fY,fZ) = if ((size(fW) != aD)) | |
1058 | 1072 | then throw("Wrong proportions data") | |
1059 | 1073 | else { | |
1060 | - | func | |
1061 | - | let | |
1062 | - | if ((0 > | |
1063 | - | then throw(((((((("Panic! Pieces of type=" + toString( | |
1064 | - | else ( | |
1065 | - | } | |
1066 | - | ||
1067 | - | let | |
1068 | - | let | |
1069 | - | let | |
1070 | - | func | |
1071 | - | then | |
1072 | - | else | |
1073 | - | ||
1074 | - | func | |
1075 | - | then | |
1074 | + | func ga (ei,gb) = { | |
1075 | + | let eA = (parseIntValue(fW[gb]) + ((fZ * fX[gb]) * fY)) | |
1076 | + | if ((0 > eA)) | |
1077 | + | then throw(((((((("Panic! Pieces of type=" + toString(gb)) + ", sign=") + toString(fZ)) + ", terrainCounts[i]=") + toString(fX[gb])) + ", landSizeIndex=") + toString(fY))) | |
1078 | + | else (ei :+ toString(eA)) | |
1079 | + | } | |
1080 | + | ||
1081 | + | let ek = cs | |
1082 | + | let el = size(ek) | |
1083 | + | let em = nil | |
1084 | + | func en (eo,ep) = if ((ep >= el)) | |
1085 | + | then eo | |
1086 | + | else ga(eo, ek[ep]) | |
1087 | + | ||
1088 | + | func eq (eo,ep) = if ((ep >= el)) | |
1089 | + | then eo | |
1076 | 1090 | else throw("List size exceeds 6") | |
1077 | 1091 | ||
1078 | - | | |
1092 | + | eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6) | |
1079 | 1093 | } | |
1080 | 1094 | ||
1081 | 1095 | ||
1082 | - | func | |
1083 | - | let | |
1084 | - | makeString( | |
1085 | - | } | |
1086 | - | ||
1087 | - | ||
1088 | - | func | |
1089 | - | ||
1090 | - | ||
1091 | - | func | |
1092 | - | func | |
1093 | - | let | |
1094 | - | ( | |
1096 | + | func gc (fX,fY,fZ) = { | |
1097 | + | let fW = split(valueOrElse(getString(cV()), "0_0_0_0_0_0"), "_") | |
1098 | + | makeString(fV(fW, fX, fY, fZ), "_") | |
1099 | + | } | |
1100 | + | ||
1101 | + | ||
1102 | + | func gd (ge) = [(size(split(ge, "A")) - 1), (size(split(ge, "B")) - 1), (size(split(ge, "C")) - 1), (size(split(ge, "D")) - 1), (size(split(ge, "E")) - 1), (size(split(ge, "F")) - 1)] | |
1103 | + | ||
1104 | + | ||
1105 | + | func gf (gg,fX,gh,fY,gi) = { | |
1106 | + | func gj (ei,gb) = { | |
1107 | + | let gk = ((fraction(gh, gi, aG) * fX[gb]) * fY) | |
1108 | + | (ei :+ toString((parseIntValue(gg[gb]) + gk))) | |
1095 | 1109 | } | |
1096 | 1110 | ||
1097 | - | let | |
1098 | - | let | |
1099 | - | let | |
1100 | - | let | |
1101 | - | func | |
1102 | - | then | |
1103 | - | else | |
1104 | - | ||
1105 | - | func | |
1106 | - | then | |
1111 | + | let et = { | |
1112 | + | let ek = cs | |
1113 | + | let el = size(ek) | |
1114 | + | let em = nil | |
1115 | + | func en (eo,ep) = if ((ep >= el)) | |
1116 | + | then eo | |
1117 | + | else gj(eo, ek[ep]) | |
1118 | + | ||
1119 | + | func eq (eo,ep) = if ((ep >= el)) | |
1120 | + | then eo | |
1107 | 1121 | else throw("List size exceeds 6") | |
1108 | 1122 | ||
1109 | - | | |
1123 | + | eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6) | |
1110 | 1124 | } | |
1111 | - | makeString( | |
1112 | - | } | |
1113 | - | ||
1114 | - | ||
1115 | - | func | |
1116 | - | func | |
1117 | - | let | |
1118 | - | $Tuple2(( | |
1125 | + | makeString(et, "_") | |
1126 | + | } | |
1127 | + | ||
1128 | + | ||
1129 | + | func gl (fX,gh,fY,gi) = { | |
1130 | + | func gj (ei,gb) = { | |
1131 | + | let gk = ((fraction(gh, gi, aG) * fX[gb]) * fY) | |
1132 | + | $Tuple2((ei._1 :+ gk), (ei._2 + gk)) | |
1119 | 1133 | } | |
1120 | 1134 | ||
1121 | - | let | |
1122 | - | let | |
1123 | - | let | |
1124 | - | func | |
1125 | - | then | |
1126 | - | else | |
1127 | - | ||
1128 | - | func | |
1129 | - | then | |
1135 | + | let ek = cs | |
1136 | + | let el = size(ek) | |
1137 | + | let em = $Tuple2(nil, 0) | |
1138 | + | func en (eo,ep) = if ((ep >= el)) | |
1139 | + | then eo | |
1140 | + | else gj(eo, ek[ep]) | |
1141 | + | ||
1142 | + | func eq (eo,ep) = if ((ep >= el)) | |
1143 | + | then eo | |
1130 | 1144 | else throw("List size exceeds 6") | |
1131 | 1145 | ||
1132 | - | | |
1133 | - | } | |
1134 | - | ||
1135 | - | ||
1136 | - | func | |
1137 | - | let | |
1138 | - | let | |
1139 | - | if (( | |
1140 | - | then $Tuple2(makeString( | |
1141 | - | else if (( | |
1146 | + | eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6) | |
1147 | + | } | |
1148 | + | ||
1149 | + | ||
1150 | + | func gm (gn,go,gp,gq) = { | |
1151 | + | let gr = gp._1 | |
1152 | + | let gs = gp._2 | |
1153 | + | if ((gs == 0)) | |
1154 | + | then $Tuple2(makeString(gn, "_"), makeString(go, "_")) | |
1155 | + | else if ((gq >= gs)) | |
1142 | 1156 | then { | |
1143 | - | func | |
1144 | - | ||
1145 | - | let | |
1146 | - | let | |
1147 | - | let | |
1148 | - | let | |
1149 | - | func | |
1150 | - | then | |
1151 | - | else | |
1152 | - | ||
1153 | - | func | |
1154 | - | then | |
1157 | + | func gt (ei,gb) = (ei :+ toString((parseIntValue(gn[gb]) + gr[gb]))) | |
1158 | + | ||
1159 | + | let et = { | |
1160 | + | let ek = cs | |
1161 | + | let el = size(ek) | |
1162 | + | let em = nil | |
1163 | + | func en (eo,ep) = if ((ep >= el)) | |
1164 | + | then eo | |
1165 | + | else gt(eo, ek[ep]) | |
1166 | + | ||
1167 | + | func eq (eo,ep) = if ((ep >= el)) | |
1168 | + | then eo | |
1155 | 1169 | else throw("List size exceeds 6") | |
1156 | 1170 | ||
1157 | - | | |
1171 | + | eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6) | |
1158 | 1172 | } | |
1159 | - | $Tuple2(makeString( | |
1173 | + | $Tuple2(makeString(et, "_"), makeString(go, "_")) | |
1160 | 1174 | } | |
1161 | 1175 | else { | |
1162 | - | func | |
1163 | - | let | |
1164 | - | $Tuple2(( | |
1176 | + | func gu (ei,gb) = { | |
1177 | + | let gv = fraction(gr[gb], gq, gs) | |
1178 | + | $Tuple2((ei._1 :+ toString((parseIntValue(gn[gb]) + gv))), (ei._2 :+ toString(((parseIntValue(go[gb]) + gr[gb]) - gv)))) | |
1165 | 1179 | } | |
1166 | 1180 | ||
1167 | - | let | |
1168 | - | let | |
1169 | - | let | |
1170 | - | let | |
1171 | - | func | |
1172 | - | then | |
1173 | - | else | |
1174 | - | ||
1175 | - | func | |
1176 | - | then | |
1181 | + | let et = { | |
1182 | + | let ek = cs | |
1183 | + | let el = size(ek) | |
1184 | + | let em = $Tuple2(nil, nil) | |
1185 | + | func en (eo,ep) = if ((ep >= el)) | |
1186 | + | then eo | |
1187 | + | else gu(eo, ek[ep]) | |
1188 | + | ||
1189 | + | func eq (eo,ep) = if ((ep >= el)) | |
1190 | + | then eo | |
1177 | 1191 | else throw("List size exceeds 6") | |
1178 | 1192 | ||
1179 | - | | |
1193 | + | eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6) | |
1180 | 1194 | } | |
1181 | - | $Tuple2(makeString( | |
1195 | + | $Tuple2(makeString(et._1, "_"), makeString(et._2, "_")) | |
1182 | 1196 | } | |
1183 | 1197 | } | |
1184 | 1198 | ||
1185 | 1199 | ||
1186 | - | func | |
1187 | - | then | |
1188 | - | else -( | |
1189 | - | ||
1190 | - | ||
1191 | - | let | |
1192 | - | ||
1193 | - | func | |
1194 | - | let | |
1195 | - | let | |
1200 | + | func gw (gx) = if ((gx >= toBigInt(0))) | |
1201 | + | then gx | |
1202 | + | else -(gx) | |
1203 | + | ||
1204 | + | ||
1205 | + | let gy = [[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]] | |
1206 | + | ||
1207 | + | func gz (de,gA) = { | |
1208 | + | let gB = toInt((de % dA)) | |
1209 | + | let gC = if ((gA[0] > gB)) | |
1196 | 1210 | then "A" | |
1197 | - | else if (( | |
1211 | + | else if ((gA[1] > gB)) | |
1198 | 1212 | then "B" | |
1199 | - | else if (( | |
1213 | + | else if ((gA[2] > gB)) | |
1200 | 1214 | then "C" | |
1201 | - | else if (( | |
1215 | + | else if ((gA[3] > gB)) | |
1202 | 1216 | then "D" | |
1203 | - | else if (( | |
1217 | + | else if ((gA[4] > gB)) | |
1204 | 1218 | then "E" | |
1205 | 1219 | else "F" | |
1206 | - | | |
1207 | - | } | |
1208 | - | ||
1209 | - | ||
1210 | - | func | |
1211 | - | let | |
1212 | - | func | |
1213 | - | ||
1214 | - | let | |
1215 | - | let | |
1216 | - | let | |
1217 | - | let | |
1218 | - | func | |
1219 | - | then | |
1220 | - | else | |
1221 | - | ||
1222 | - | func | |
1223 | - | then | |
1220 | + | gC | |
1221 | + | } | |
1222 | + | ||
1223 | + | ||
1224 | + | func gD (gE,gF) = { | |
1225 | + | let gG = gy[gF] | |
1226 | + | func gH (ei,ej) = $Tuple2((((((ei._1 + gz(ei._2, gG)) + gz((ei._2 / dA), gG)) + gz((ei._2 / dB), gG)) + gz((ei._2 / dC), gG)) + gz((ei._2 / dD), gG)), (ei._2 / dE)) | |
1227 | + | ||
1228 | + | let fM = { | |
1229 | + | let ek = [1, 2, 3, 4, 5] | |
1230 | + | let el = size(ek) | |
1231 | + | let em = $Tuple2("", (gE / dz)) | |
1232 | + | func en (eo,ep) = if ((ep >= el)) | |
1233 | + | then eo | |
1234 | + | else gH(eo, ek[ep]) | |
1235 | + | ||
1236 | + | func eq (eo,ep) = if ((ep >= el)) | |
1237 | + | then eo | |
1224 | 1238 | else throw("List size exceeds 5") | |
1225 | 1239 | ||
1226 | - | | |
1240 | + | eq(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5) | |
1227 | 1241 | } | |
1228 | - | | |
1229 | - | } | |
1230 | - | ||
1231 | - | ||
1232 | - | let | |
1233 | - | ||
1234 | - | let | |
1235 | - | ||
1236 | - | func | |
1237 | - | func | |
1238 | - | let | |
1239 | - | let | |
1240 | - | let | |
1242 | + | fM._1 | |
1243 | + | } | |
1244 | + | ||
1245 | + | ||
1246 | + | let gI = [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] | |
1247 | + | ||
1248 | + | let gJ = ["A", "B", "C", "D", "E", "F"] | |
1249 | + | ||
1250 | + | func gK (gL,fY) = { | |
1251 | + | func gM (ei,dc) = { | |
1252 | + | let eS = ei._2 | |
1253 | + | let gN = parseIntValue(dc) | |
1254 | + | let gx = if ((gN == 0)) | |
1241 | 1255 | then 0 | |
1242 | - | else if (( | |
1243 | - | then ( | |
1244 | - | else if (( | |
1256 | + | else if ((gN >= (4 * fY))) | |
1257 | + | then (gN / fY) | |
1258 | + | else if ((gN > (3 * fY))) | |
1245 | 1259 | then 3 | |
1246 | - | else ((( | |
1247 | - | $Tuple3(( | |
1260 | + | else (((gN - 1) / fY) + 1) | |
1261 | + | $Tuple3((ei._1 :+ gx), (ei._2 + 1), (ei._3 + gx)) | |
1248 | 1262 | } | |
1249 | 1263 | ||
1250 | - | let | |
1251 | - | let | |
1252 | - | let | |
1253 | - | let | |
1254 | - | func | |
1255 | - | then | |
1256 | - | else | |
1257 | - | ||
1258 | - | func | |
1259 | - | then | |
1264 | + | let fM = { | |
1265 | + | let ek = gL | |
1266 | + | let el = size(ek) | |
1267 | + | let em = $Tuple3(nil, 0, 0) | |
1268 | + | func en (eo,ep) = if ((ep >= el)) | |
1269 | + | then eo | |
1270 | + | else gM(eo, ek[ep]) | |
1271 | + | ||
1272 | + | func eq (eo,ep) = if ((ep >= el)) | |
1273 | + | then eo | |
1260 | 1274 | else throw("List size exceeds 6") | |
1261 | 1275 | ||
1262 | - | | |
1276 | + | eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6) | |
1263 | 1277 | } | |
1264 | - | let | |
1265 | - | let | |
1266 | - | let | |
1267 | - | func | |
1268 | - | let | |
1269 | - | then ( | |
1270 | - | else | |
1271 | - | let | |
1278 | + | let gO = fM._1 | |
1279 | + | let gP = value(indexOf(gO, max(gO))) | |
1280 | + | let gQ = (fM._3 - 25) | |
1281 | + | func gR (ei,cH) = { | |
1282 | + | let gS = if ((cH == gP)) | |
1283 | + | then (gO[cH] - gQ) | |
1284 | + | else gO[cH] | |
1285 | + | let gT = if ((gS == 0)) | |
1272 | 1286 | then nil | |
1273 | - | else split(drop(toString(pow(10, 0, | |
1274 | - | let | |
1275 | - | func | |
1276 | - | ||
1277 | - | let | |
1278 | - | let | |
1279 | - | let | |
1280 | - | let | |
1281 | - | func | |
1282 | - | then | |
1283 | - | else | |
1284 | - | ||
1285 | - | func | |
1286 | - | then | |
1287 | + | else split(drop(toString(pow(10, 0, gS, 0, 0, DOWN)), 1), "") | |
1288 | + | let fr = gJ[cH] | |
1289 | + | func gU (gV,gW) = (gV :+ fr) | |
1290 | + | ||
1291 | + | let gX = { | |
1292 | + | let ek = gT | |
1293 | + | let el = size(ek) | |
1294 | + | let em = nil | |
1295 | + | func gY (eo,ep) = if ((ep >= el)) | |
1296 | + | then eo | |
1297 | + | else gU(eo, ek[ep]) | |
1298 | + | ||
1299 | + | func gZ (eo,ep) = if ((ep >= el)) | |
1300 | + | then eo | |
1287 | 1301 | else throw("List size exceeds 25") | |
1288 | 1302 | ||
1289 | - | | |
1290 | - | } | |
1291 | - | ( | |
1303 | + | gZ(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25) | |
1304 | + | } | |
1305 | + | (ei ++ gX) | |
1292 | 1306 | } | |
1293 | 1307 | ||
1294 | - | let | |
1295 | - | let | |
1296 | - | let | |
1297 | - | let | |
1298 | - | func | |
1299 | - | then | |
1300 | - | else | |
1301 | - | ||
1302 | - | func | |
1303 | - | then | |
1308 | + | let et = { | |
1309 | + | let ek = cs | |
1310 | + | let el = size(ek) | |
1311 | + | let em = nil | |
1312 | + | func gY (eo,ep) = if ((ep >= el)) | |
1313 | + | then eo | |
1314 | + | else gR(eo, ek[ep]) | |
1315 | + | ||
1316 | + | func gZ (eo,ep) = if ((ep >= el)) | |
1317 | + | then eo | |
1304 | 1318 | else throw("List size exceeds 6") | |
1305 | 1319 | ||
1306 | - | | |
1320 | + | gZ(gY(gY(gY(gY(gY(gY(em, 0), 1), 2), 3), 4), 5), 6) | |
1307 | 1321 | } | |
1308 | - | func | |
1309 | - | ||
1310 | - | let | |
1311 | - | let | |
1312 | - | let | |
1313 | - | func | |
1314 | - | then | |
1315 | - | else | |
1316 | - | ||
1317 | - | func | |
1318 | - | then | |
1322 | + | func ha (ei,eS) = (ei + et[eS]) | |
1323 | + | ||
1324 | + | let ek = gI | |
1325 | + | let el = size(ek) | |
1326 | + | let em = "" | |
1327 | + | func hb (eo,ep) = if ((ep >= el)) | |
1328 | + | then eo | |
1329 | + | else ha(eo, ek[ep]) | |
1330 | + | ||
1331 | + | func hc (eo,ep) = if ((ep >= el)) | |
1332 | + | then eo | |
1319 | 1333 | else throw("List size exceeds 25") | |
1320 | 1334 | ||
1321 | - | ha(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(gZ(ek, 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) | |
1322 | - | } | |
1323 | - | ||
1324 | - | ||
1325 | - | func hb (hc) = { | |
1326 | - | let fJ = split(valueOrElse(getString(hc), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":") | |
1327 | - | [toString(valueOrElse(parseInt(fJ[be]), 0)), if ((size(split(fJ[bf], "_")) == aD)) | |
1328 | - | then fJ[bf] | |
1329 | - | else "0_0_0_0_0_0", if ((size(split(fJ[bg], "_")) == aD)) | |
1330 | - | then fJ[bg] | |
1331 | - | else "0_0_0_0_0_0", fJ[bh]] | |
1335 | + | hc(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25) | |
1332 | 1336 | } | |
1333 | 1337 | ||
1334 | 1338 | ||
1335 | 1339 | func hd (he) = { | |
1336 | - | let eE = split(he, "_") | |
1337 | - | ((aH * (parseIntValue(eE[1]) + 1)) * parseIntValue(eE[0])) | |
1340 | + | let fL = split(valueOrElse(getString(he), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":") | |
1341 | + | [toString(valueOrElse(parseInt(fL[be]), 0)), if ((size(split(fL[bf], "_")) == aD)) | |
1342 | + | then fL[bf] | |
1343 | + | else "0_0_0_0_0_0", if ((size(split(fL[bg], "_")) == aD)) | |
1344 | + | then fL[bg] | |
1345 | + | else "0_0_0_0_0_0", fL[bh]] | |
1338 | 1346 | } | |
1339 | 1347 | ||
1340 | 1348 | ||
1341 | 1349 | func hf (hg) = { | |
1342 | - | let hh = hg[aY] | |
1343 | - | func hi (eg,hj) = (eg + parseIntValue(hj)) | |
1344 | - | ||
1345 | - | func hk (eg,hj) = { | |
1346 | - | let cG = eg._1 | |
1347 | - | let dZ = (((parseIntValue(hj) + aU) - 1) / aU) | |
1348 | - | $Tuple2((cG + 1), (eg._2 + (dZ * cl))) | |
1350 | + | let eG = split(hg, "_") | |
1351 | + | ((aH * (parseIntValue(eG[1]) + 1)) * parseIntValue(eG[0])) | |
1352 | + | } | |
1353 | + | ||
1354 | + | ||
1355 | + | func hh (hi) = { | |
1356 | + | let hj = hi[aY] | |
1357 | + | func hk (ei,hl) = (ei + parseIntValue(hl)) | |
1358 | + | ||
1359 | + | func hm (ei,hl) = { | |
1360 | + | let cH = ei._1 | |
1361 | + | let eb = (((parseIntValue(hl) + aU) - 1) / aU) | |
1362 | + | $Tuple2((cH + 1), (ei._2 + (eb * cm))) | |
1349 | 1363 | } | |
1350 | 1364 | ||
1351 | - | let | |
1352 | - | let | |
1353 | - | let | |
1354 | - | let | |
1355 | - | func | |
1356 | - | then | |
1357 | - | else | |
1358 | - | ||
1359 | - | func | |
1360 | - | then | |
1365 | + | let hn = { | |
1366 | + | let ek = split(hi[aW], "_") | |
1367 | + | let el = size(ek) | |
1368 | + | let em = 0 | |
1369 | + | func en (eo,ep) = if ((ep >= el)) | |
1370 | + | then eo | |
1371 | + | else hk(eo, ek[ep]) | |
1372 | + | ||
1373 | + | func eq (eo,ep) = if ((ep >= el)) | |
1374 | + | then eo | |
1361 | 1375 | else throw("List size exceeds 6") | |
1362 | 1376 | ||
1363 | - | | |
1377 | + | eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6) | |
1364 | 1378 | } | |
1365 | - | let | |
1366 | - | let | |
1367 | - | let | |
1368 | - | let | |
1369 | - | func | |
1370 | - | then | |
1371 | - | else | |
1372 | - | ||
1373 | - | func | |
1374 | - | then | |
1379 | + | let ho = { | |
1380 | + | let ek = split(hi[aX], "_") | |
1381 | + | let el = size(ek) | |
1382 | + | let em = 0 | |
1383 | + | func gY (eo,ep) = if ((ep >= el)) | |
1384 | + | then eo | |
1385 | + | else hk(eo, ek[ep]) | |
1386 | + | ||
1387 | + | func gZ (eo,ep) = if ((ep >= el)) | |
1388 | + | then eo | |
1375 | 1389 | else throw("List size exceeds 6") | |
1376 | 1390 | ||
1377 | - | | |
1391 | + | gZ(gY(gY(gY(gY(gY(gY(em, 0), 1), 2), 3), 4), 5), 6) | |
1378 | 1392 | } | |
1379 | - | let | |
1393 | + | let hp = if ((hj == "")) | |
1380 | 1394 | then 0 | |
1381 | - | else ( let | |
1382 | - | let | |
1383 | - | let | |
1384 | - | func | |
1385 | - | then | |
1386 | - | else | |
1387 | - | ||
1388 | - | func | |
1389 | - | then | |
1395 | + | else ( let ek = split_4C(hj, "_") | |
1396 | + | let el = size(ek) | |
1397 | + | let em = $Tuple2(0, 0) | |
1398 | + | func hb (eo,ep) = if ((ep >= el)) | |
1399 | + | then eo | |
1400 | + | else hm(eo, ek[ep]) | |
1401 | + | ||
1402 | + | func hc (eo,ep) = if ((ep >= el)) | |
1403 | + | then eo | |
1390 | 1404 | else throw("List size exceeds 50") | |
1391 | 1405 | ||
1392 | - | | |
1393 | - | (( | |
1394 | - | } | |
1395 | - | ||
1396 | - | ||
1397 | - | func | |
1398 | - | let | |
1399 | - | let | |
1400 | - | let | |
1401 | - | let | |
1402 | - | let | |
1403 | - | let | |
1404 | - | then makeString(["0", toString( | |
1406 | + | hc(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50))._2 | |
1407 | + | ((hn + ho) + hp) | |
1408 | + | } | |
1409 | + | ||
1410 | + | ||
1411 | + | func hq (hr,hs,ht) = { | |
1412 | + | let hg = ((toString(hs) + "_") + toString(ht)) | |
1413 | + | let hu = hf(hg) | |
1414 | + | let hv = valueOrElse(getString(hr), (hg + ":0_0_0_0_0_0:0_0_0_0_0_0::0")) | |
1415 | + | let hw = split_4C(hv, ":") | |
1416 | + | let hx = hh(hw) | |
1417 | + | let hy = if ((5 > size(hw))) | |
1418 | + | then makeString(["0", toString(hx), toString((hu - hx)), toString(hu)], "_") | |
1405 | 1419 | else { | |
1406 | - | let | |
1407 | - | let | |
1408 | - | let | |
1409 | - | then parseIntValue( | |
1410 | - | else | |
1411 | - | makeString([toString( | |
1412 | - | } | |
1413 | - | [ | |
1414 | - | then | |
1415 | - | else "0_0_0_0_0_0", if ((size(split( | |
1416 | - | then | |
1417 | - | else "0_0_0_0_0_0", | |
1418 | - | } | |
1419 | - | ||
1420 | - | ||
1421 | - | func | |
1422 | - | let | |
1423 | - | let | |
1424 | - | (( | |
1425 | - | } | |
1426 | - | ||
1427 | - | ||
1428 | - | func | |
1420 | + | let hz = split(hw[aZ], "_") | |
1421 | + | let hA = parseIntValue(hz[ba]) | |
1422 | + | let hB = if ((size(hz) > 1)) | |
1423 | + | then parseIntValue(hz[bb]) | |
1424 | + | else hx | |
1425 | + | makeString([toString(hA), toString(hB), toString(((hu - hA) - hB)), toString(hu)], "_") | |
1426 | + | } | |
1427 | + | [hw[aV], if ((size(split(hw[aW], "_")) == aD)) | |
1428 | + | then hw[aW] | |
1429 | + | else "0_0_0_0_0_0", if ((size(split(hw[aX], "_")) == aD)) | |
1430 | + | then hw[aX] | |
1431 | + | else "0_0_0_0_0_0", hw[aY], hy] | |
1432 | + | } | |
1433 | + | ||
1434 | + | ||
1435 | + | func hC (hi) = { | |
1436 | + | let hD = hh(hi) | |
1437 | + | let hE = parseIntValue(split(hi[aZ], "_")[ba]) | |
1438 | + | ((hf(hi[aV]) - hD) - hE) | |
1439 | + | } | |
1440 | + | ||
1441 | + | ||
1442 | + | func hF (hG,hi,hH) = if ((size(hG) != 3)) | |
1429 | 1443 | then throw("cargoListStr should contain exactly 2 ':' separators") | |
1430 | 1444 | else { | |
1431 | - | let | |
1432 | - | let | |
1433 | - | let | |
1445 | + | let hI = split(hG[0], "_") | |
1446 | + | let hJ = split(hG[1], "_") | |
1447 | + | let hK = if ((hG[2] == "")) | |
1434 | 1448 | then nil | |
1435 | - | else split_4C( | |
1436 | - | if ((size( | |
1449 | + | else split_4C(hG[2], "_") | |
1450 | + | if ((size(hI) != aD)) | |
1437 | 1451 | then throw("All 6 resources should be passed") | |
1438 | - | else if ((size( | |
1452 | + | else if ((size(hJ) != aD)) | |
1439 | 1453 | then throw("All 6 materials should be passed") | |
1440 | 1454 | else { | |
1441 | - | let | |
1442 | - | let | |
1443 | - | let | |
1444 | - | let | |
1455 | + | let gq = hC(hi) | |
1456 | + | let hL = split(hi[aW], "_") | |
1457 | + | let hM = split(hi[aX], "_") | |
1458 | + | let hN = if ((hi[aY] == "")) | |
1445 | 1459 | then nil | |
1446 | - | else split_4C( | |
1447 | - | let | |
1448 | - | let | |
1449 | - | let | |
1460 | + | else split_4C(hi[aY], "_") | |
1461 | + | let go = split(hH[bf], "_") | |
1462 | + | let hO = split(hH[bg], "_") | |
1463 | + | let hP = if ((hH[bh] == "")) | |
1450 | 1464 | then nil | |
1451 | - | else split_4C( | |
1452 | - | func | |
1453 | - | let | |
1454 | - | let | |
1455 | - | let | |
1456 | - | let | |
1457 | - | if (( | |
1458 | - | then $Tuple4(( | |
1459 | - | else if (( | |
1460 | - | then if (( | |
1461 | - | then throw((((("Attempt to take " + | |
1462 | - | else $Tuple4(( | |
1463 | - | else if ((-( | |
1464 | - | then throw((((("Attempt to take " + toString(-( | |
1465 | - | else $Tuple4(( | |
1465 | + | else split_4C(hH[bh], "_") | |
1466 | + | func hQ (ei,hl) = { | |
1467 | + | let gb = ei._1 | |
1468 | + | let hR = parseIntValue(hl) | |
1469 | + | let hS = parseIntValue(hL[gb]) | |
1470 | + | let hT = parseIntValue(go[gb]) | |
1471 | + | if ((hR == 0)) | |
1472 | + | then $Tuple4((gb + 1), (ei._2 :+ hL[gb]), (ei._3 :+ go[gb]), ei._4) | |
1473 | + | else if ((hR > 0)) | |
1474 | + | then if ((hR > hT)) | |
1475 | + | then throw((((("Attempt to take " + hl) + " from backpack, but only ") + toString(hT)) + " available")) | |
1476 | + | else $Tuple4((gb + 1), (ei._2 :+ toString((hS + hR))), (ei._3 :+ toString((hT - hR))), (ei._4 + hR)) | |
1477 | + | else if ((-(hR) > hS)) | |
1478 | + | then throw((((("Attempt to take " + toString(-(hR))) + " from warehouse, but only ") + toString(hS)) + " available")) | |
1479 | + | else $Tuple4((gb + 1), (ei._2 :+ toString((hS + hR))), (ei._3 :+ toString((hT - hR))), (ei._4 + hR)) | |
1466 | 1480 | } | |
1467 | 1481 | ||
1468 | - | let | |
1469 | - | let | |
1470 | - | let | |
1471 | - | let | |
1472 | - | func | |
1473 | - | then | |
1474 | - | else | |
1475 | - | ||
1476 | - | func | |
1477 | - | then | |
1482 | + | let et = { | |
1483 | + | let ek = hI | |
1484 | + | let el = size(ek) | |
1485 | + | let em = $Tuple4(0, nil, nil, 0) | |
1486 | + | func en (eo,ep) = if ((ep >= el)) | |
1487 | + | then eo | |
1488 | + | else hQ(eo, ek[ep]) | |
1489 | + | ||
1490 | + | func eq (eo,ep) = if ((ep >= el)) | |
1491 | + | then eo | |
1478 | 1492 | else throw("List size exceeds 6") | |
1479 | 1493 | ||
1480 | - | | |
1494 | + | eq(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6) | |
1481 | 1495 | } | |
1482 | - | func | |
1483 | - | let | |
1484 | - | let | |
1485 | - | let | |
1486 | - | let | |
1487 | - | if (( | |
1488 | - | then $Tuple4(( | |
1489 | - | else if (( | |
1490 | - | then if (( | |
1491 | - | then throw((((("Attempt to take " + | |
1492 | - | else $Tuple4(( | |
1493 | - | else if ((-( | |
1494 | - | then throw((((("Attempt to take " + toString(-( | |
1495 | - | else $Tuple4(( | |
1496 | + | func hU (ei,hl) = { | |
1497 | + | let gb = ei._1 | |
1498 | + | let hR = parseIntValue(hl) | |
1499 | + | let hV = parseIntValue(hM[gb]) | |
1500 | + | let hW = parseIntValue(hO[gb]) | |
1501 | + | if ((hR == 0)) | |
1502 | + | then $Tuple4((gb + 1), (ei._2 :+ hM[gb]), (ei._3 :+ hO[gb]), ei._4) | |
1503 | + | else if ((hR > 0)) | |
1504 | + | then if ((hR > hW)) | |
1505 | + | then throw((((("Attempt to take " + hl) + " from backpack, but only ") + toString(hW)) + " available")) | |
1506 | + | else $Tuple4((gb + 1), (ei._2 :+ toString((hV + hR))), (ei._3 :+ toString((hW - hR))), (ei._4 + hR)) | |
1507 | + | else if ((-(hR) > hV)) | |
1508 | + | then throw((((("Attempt to take " + toString(-(hR))) + " from warehouse, but only ") + toString(hV)) + " available")) | |
1509 | + | else $Tuple4((gb + 1), (ei._2 :+ toString((hV + hR))), (ei._3 :+ toString((hW - hR))), (ei._4 + hR)) | |
1496 | 1510 | } | |
1497 | 1511 | ||
1498 | - | let | |
1499 | - | let | |
1500 | - | let | |
1501 | - | let | |
1502 | - | func | |
1503 | - | then | |
1504 | - | else | |
1505 | - | ||
1506 | - | func | |
1507 | - | then | |
1512 | + | let fH = { | |
1513 | + | let ek = hJ | |
1514 | + | let el = size(ek) | |
1515 | + | let em = $Tuple4(0, nil, nil, et._4) | |
1516 | + | func gY (eo,ep) = if ((ep >= el)) | |
1517 | + | then eo | |
1518 | + | else hU(eo, ek[ep]) | |
1519 | + | ||
1520 | + | func gZ (eo,ep) = if ((ep >= el)) | |
1521 | + | then eo | |
1508 | 1522 | else throw("List size exceeds 6") | |
1509 | 1523 | ||
1510 | - | | |
1524 | + | gZ(gY(gY(gY(gY(gY(gY(em, 0), 1), 2), 3), 4), 5), 6) | |
1511 | 1525 | } | |
1512 | - | func | |
1513 | - | let | |
1514 | - | let | |
1515 | - | let | |
1516 | - | then parseIntValue( | |
1526 | + | func hX (ei,hl) = { | |
1527 | + | let gb = ei._1 | |
1528 | + | let hR = parseIntValue(hl) | |
1529 | + | let hY = if ((size(hN) > gb)) | |
1530 | + | then parseIntValue(hN[gb]) | |
1517 | 1531 | else 0 | |
1518 | - | let | |
1519 | - | then parseIntValue( | |
1532 | + | let hZ = if ((size(hP) > gb)) | |
1533 | + | then parseIntValue(hP[gb]) | |
1520 | 1534 | else 0 | |
1521 | - | if (( | |
1522 | - | then $Tuple4(( | |
1523 | - | else if (( | |
1524 | - | then if (( | |
1525 | - | then throw((((("Attempt to take " + | |
1535 | + | if ((hR == 0)) | |
1536 | + | then $Tuple4((gb + 1), (ei._2 :+ toString(hY)), (ei._3 :+ toString(hZ)), ei._4) | |
1537 | + | else if ((hR > 0)) | |
1538 | + | then if ((hR > hZ)) | |
1539 | + | then throw((((("Attempt to take " + hl) + " from backpack, but only ") + toString(hZ)) + " available")) | |
1526 | 1540 | else { | |
1527 | - | let | |
1528 | - | $Tuple4(( | |
1541 | + | let fk = (dY((hY + hR), aU) - dY(hY, aU)) | |
1542 | + | $Tuple4((gb + 1), (ei._2 :+ toString((hY + hR))), (ei._3 :+ toString((hZ - hR))), (ei._4 + fk)) | |
1529 | 1543 | } | |
1530 | - | else if ((-( | |
1531 | - | then throw((((("Attempt to take " + toString(-( | |
1544 | + | else if ((-(hR) > hY)) | |
1545 | + | then throw((((("Attempt to take " + toString(-(hR))) + " from warehouse, but only ") + toString(hY)) + " available")) | |
1532 | 1546 | else { | |
1533 | - | let | |
1534 | - | $Tuple4(( | |
1547 | + | let fk = (dY((hY + hR), aU) - dY(hY, aU)) | |
1548 | + | $Tuple4((gb + 1), (ei._2 :+ toString((hY + hR))), (ei._3 :+ toString((hZ - hR))), (ei._4 + fk)) | |
1535 | 1549 | } | |
1536 | 1550 | } | |
1537 | 1551 | ||
1538 | - | let | |
1552 | + | let fL = if ((size(hK) != 0)) | |
1539 | 1553 | then { | |
1540 | - | let | |
1541 | - | let | |
1542 | - | let | |
1543 | - | func | |
1544 | - | then | |
1545 | - | else | |
1546 | - | ||
1547 | - | func | |
1548 | - | then | |
1554 | + | let ek = hK | |
1555 | + | let el = size(ek) | |
1556 | + | let em = $Tuple4(0, nil, nil, fH._4) | |
1557 | + | func hb (eo,ep) = if ((ep >= el)) | |
1558 | + | then eo | |
1559 | + | else hX(eo, ek[ep]) | |
1560 | + | ||
1561 | + | func hc (eo,ep) = if ((ep >= el)) | |
1562 | + | then eo | |
1549 | 1563 | else throw("List size exceeds 50") | |
1550 | 1564 | ||
1551 | - | | |
1565 | + | hc(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(hb(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50) | |
1552 | 1566 | } | |
1553 | - | else $Tuple4(0, | |
1554 | - | let | |
1555 | - | if (( | |
1556 | - | then throw((((("Attempt to put total " + toString( | |
1557 | - | else $Tuple7(makeString( | |
1567 | + | else $Tuple4(0, hN, hP, fH._4) | |
1568 | + | let ia = fL._4 | |
1569 | + | if ((ia > gq)) | |
1570 | + | then throw((((("Attempt to put total " + toString(ia)) + " stuff, but only ") + toString(gq)) + " warehouse space left")) | |
1571 | + | else $Tuple7(makeString(et._2, "_"), makeString(fH._2, "_"), makeString_2C(fL._2, "_"), makeString(et._3, "_"), makeString(fH._3, "_"), makeString_2C(fL._3, "_"), ia) | |
1558 | 1572 | } | |
1559 | 1573 | } | |
1560 | 1574 | ||
1561 | 1575 | ||
1562 | - | func | |
1563 | - | let bH = toString( | |
1564 | - | let | |
1565 | - | let | |
1566 | - | let | |
1567 | - | let | |
1568 | - | let | |
1569 | - | let | |
1570 | - | let | |
1571 | - | let bk = calculateAssetId( | |
1572 | - | let | |
1573 | - | $Tuple2([IntegerEntry( | |
1574 | - | } | |
1575 | - | ||
1576 | - | ||
1577 | - | func | |
1576 | + | func ib (ic,id) = { | |
1577 | + | let bH = toString(ic) | |
1578 | + | let ie = gw(toBigInt(id)) | |
1579 | + | let if = valueOrElse(getInteger(dG()), (dF + 1)) | |
1580 | + | let dK = toString(if) | |
1581 | + | let gF = toInt((ie % dz)) | |
1582 | + | let ge = gD(ie, gF) | |
1583 | + | let cX = aM[gF] | |
1584 | + | let ig = Issue(dX(dK, "S"), makeString([dK, "S", ge, cX], "_"), 1, 0, false) | |
1585 | + | let bk = calculateAssetId(ig) | |
1586 | + | let ih = toBase58String(bk) | |
1587 | + | $Tuple2([IntegerEntry(dG(), (if + 1)), ig, StringEntry(dJ(dK), ih), StringEntry(bj(ih), bH), StringEntry(dM(dK), bH), IntegerEntry(bt(ih), 0), IntegerEntry(dL(ih, bH), 0), ScriptTransfer(ic, 1, bk)], $Tuple2(ih, cX)) | |
1588 | + | } | |
1589 | + | ||
1590 | + | ||
1591 | + | func ii (bH,ij,ik) = if (!(sigVerify_8Kb(ij, ik, dr))) | |
1578 | 1592 | then throw("signature does not match") | |
1579 | 1593 | else { | |
1580 | - | let | |
1581 | - | let | |
1582 | - | let | |
1583 | - | let | |
1584 | - | let | |
1585 | - | let | |
1586 | - | let | |
1587 | - | let | |
1588 | - | if (if (( | |
1594 | + | let eG = split(toUtf8String(ij), ";") | |
1595 | + | let il = split(eG[0], "|") | |
1596 | + | let im = split(il[dT], "_") | |
1597 | + | let in = parseIntValue(im[0]) | |
1598 | + | let io = parseIntValue(im[1]) | |
1599 | + | let ip = split(eG[1], ":") | |
1600 | + | let iq = ip[0] | |
1601 | + | let ir = parseIntValue(il[dU]) | |
1602 | + | if (if ((ir > (lastBlock.timestamp + dt))) | |
1589 | 1603 | then true | |
1590 | - | else ((lastBlock.timestamp - | |
1591 | - | then throw(((("signature outdated: logTime=" + toString( | |
1604 | + | else ((lastBlock.timestamp - dt) > ir)) | |
1605 | + | then throw(((("signature outdated: logTime=" + toString(ir)) + ", bcTime=") + toString(lastBlock.timestamp))) | |
1592 | 1606 | else { | |
1593 | - | let | |
1594 | - | let | |
1595 | - | if (( | |
1596 | - | then throw(((("Tx ids don't match! In state: " + | |
1607 | + | let is = ip[1] | |
1608 | + | let it = valueOrElse(getString(bi(bH)), "") | |
1609 | + | if ((it != is)) | |
1610 | + | then throw(((("Tx ids don't match! In state: " + it) + ", in msg: ") + is)) | |
1597 | 1611 | else { | |
1598 | 1612 | let z = valueOrErrorMessage(getString(bC(bH)), "You don't have a duck staked") | |
1599 | - | let | |
1600 | - | let | |
1601 | - | let | |
1602 | - | if (( | |
1603 | - | then throw(((("oldHealth=" + toString( | |
1604 | - | else if ((0 >= | |
1613 | + | let iu = y(z) | |
1614 | + | let iv = ae(valueOrElse(getInteger(C(z)), 0)) | |
1615 | + | let iw = valueOrElse(getInteger(iu), iv) | |
1616 | + | if ((iw != in)) | |
1617 | + | then throw(((("oldHealth=" + toString(iw)) + " from state does not match one from flight log=") + toString(in))) | |
1618 | + | else if ((0 >= in)) | |
1605 | 1619 | then throw("You can't fly with zero health") | |
1606 | - | else if (!( | |
1620 | + | else if (!(fN(z))) | |
1607 | 1621 | then throw("Equipment incompatible") | |
1608 | 1622 | else { | |
1609 | - | let | |
1610 | - | then | |
1623 | + | let ix = if ((size(il) > dV)) | |
1624 | + | then il[dV] | |
1611 | 1625 | else "" | |
1612 | - | let | |
1613 | - | then | |
1626 | + | let iy = if ((size(il) > dW)) | |
1627 | + | then il[dW] | |
1614 | 1628 | else "" | |
1615 | - | let | |
1616 | - | then ( | |
1629 | + | let iz = if (if ((io > 0)) | |
1630 | + | then (ix == "$") | |
1617 | 1631 | else false) | |
1618 | - | then | |
1632 | + | then dd(invoke(cI, "sendUsdtPrize", [bH], nil)) | |
1619 | 1633 | else 0 | |
1620 | - | $Tuple5( | |
1634 | + | $Tuple5(io, z, iz, iq, iy) | |
1621 | 1635 | } | |
1622 | 1636 | } | |
1623 | 1637 | } | |
1624 | 1638 | } | |
1625 | 1639 | ||
1626 | 1640 | ||
1627 | - | func | |
1628 | - | let bH = toString( | |
1629 | - | let | |
1630 | - | let z = | |
1631 | - | let | |
1632 | - | let | |
1633 | - | let | |
1634 | - | let | |
1635 | - | let | |
1636 | - | let | |
1637 | - | let | |
1638 | - | let | |
1639 | - | let | |
1640 | - | let | |
1641 | - | if ((0 >= | |
1642 | - | then $Tuple3([IntegerEntry( | |
1641 | + | func iA (ic,id,ij,ik) = { | |
1642 | + | let bH = toString(ic) | |
1643 | + | let gG = ii(bH, ij, ik) | |
1644 | + | let z = gG._2 | |
1645 | + | let iu = y(z) | |
1646 | + | let he = bD(z) | |
1647 | + | let hH = hd(he) | |
1648 | + | let iB = split(hH[bg], "_") | |
1649 | + | let iC = makeString(eu(true, iB, dx), "_") | |
1650 | + | let fO = E(z) | |
1651 | + | let iD = valueOrElse(getString(fO), ",;,_,;,_,;,_,;,_,;,_,;,") | |
1652 | + | let iE = eB(iD, gG._5) | |
1653 | + | let iF = iE._1 | |
1654 | + | let iG = iE._2 | |
1655 | + | if ((0 >= gG._1)) | |
1656 | + | then $Tuple3([IntegerEntry(iu, 0), StringEntry(fO, iF)], "", 0) | |
1643 | 1657 | else { | |
1644 | - | let | |
1645 | - | let | |
1646 | - | $Tuple3(( | |
1658 | + | let iH = ib(ic, id) | |
1659 | + | let ih = iH._2._1 | |
1660 | + | $Tuple3((iH._1 ++ (if (iG) | |
1647 | 1661 | then [StringEntry(K(z), "0_0_0_0_0")] | |
1648 | - | else ((((nil :+ StringEntry(bE(z), makeString([ | |
1649 | - | } | |
1650 | - | } | |
1651 | - | ||
1652 | - | ||
1653 | - | func | |
1654 | - | let | |
1655 | - | let | |
1656 | - | let | |
1657 | - | let | |
1658 | - | ((aF + fraction(aF, (( | |
1659 | - | } | |
1660 | - | ||
1661 | - | ||
1662 | - | func | |
1663 | - | let | |
1664 | - | then $Tuple2( | |
1662 | + | else ((((nil :+ StringEntry(bE(z), makeString([iH._2._2, "L", ih], "_"))) :+ IntegerEntry(iu, gG._1)) :+ StringEntry(fO, iF)) :+ StringEntry(he, makeString([hH[be], hH[bf], iC, hH[bh]], ":"))))), ih, gG._3) | |
1663 | + | } | |
1664 | + | } | |
1665 | + | ||
1666 | + | ||
1667 | + | func iI (O,iJ) = { | |
1668 | + | let ht = valueOrElse(getInteger(bt(O)), 0) | |
1669 | + | let iK = valueOrElse(getInteger(bn(aC, O)), 0) | |
1670 | + | let iL = (ht / 6) | |
1671 | + | let iM = (ht / 7) | |
1672 | + | ((aF + fraction(aF, ((ht + iL) + (2 * iM)), 5)) + fraction(aF, iK, (iJ * 5))) | |
1673 | + | } | |
1674 | + | ||
1675 | + | ||
1676 | + | func iN (b,iO,iP) = { | |
1677 | + | let iQ = if ((iO == dQ)) | |
1678 | + | then $Tuple2(iP, valueOrElse(getString(bC(b)), "")) | |
1665 | 1679 | else { | |
1666 | 1680 | let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked") | |
1667 | - | let | |
1668 | - | let | |
1669 | - | if (( | |
1670 | - | then throw((("Duck location type is " + | |
1671 | - | else $Tuple2( | |
1672 | - | } | |
1673 | - | let O = | |
1674 | - | let | |
1675 | - | let | |
1676 | - | let | |
1677 | - | let | |
1678 | - | let | |
1679 | - | if (( | |
1681 | + | let iR = valueOrElse(getString(bE(z)), aI) | |
1682 | + | let iS = split(value(iR), "_") | |
1683 | + | if ((iS[bX] != "L")) | |
1684 | + | then throw((("Duck location type is " + iS[bX]) + ", but should be L")) | |
1685 | + | else $Tuple2(iS[bY], z) | |
1686 | + | } | |
1687 | + | let O = iQ._1 | |
1688 | + | let iT = iQ._2 | |
1689 | + | let iU = value(assetInfo(fromBase58String(O))) | |
1690 | + | let iV = bm(O) | |
1691 | + | let iW = valueOrErrorMessage(getInteger(iV), (("Land " + iU.name) + " is not staked")) | |
1692 | + | let iX = valueOrErrorMessage(getString(bj(O)), (("NFT " + iU.name) + " is orphaned")) | |
1693 | + | if ((iX != b)) | |
1680 | 1694 | then throw((aA + " is not yours")) | |
1681 | 1695 | else { | |
1682 | - | let | |
1683 | - | $Tuple4( | |
1684 | - | } | |
1685 | - | } | |
1686 | - | ||
1687 | - | ||
1688 | - | func | |
1696 | + | let iY = split(iU.description, "_") | |
1697 | + | $Tuple4(iT, O, iY, iW) | |
1698 | + | } | |
1699 | + | } | |
1700 | + | ||
1701 | + | ||
1702 | + | func iZ (b,dZ,iO,iP) = if ((0 > dZ)) | |
1689 | 1703 | then throw("Negative amount") | |
1690 | 1704 | else { | |
1691 | - | let | |
1692 | - | let | |
1693 | - | let | |
1694 | - | let | |
1695 | - | if ((0 > | |
1696 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1705 | + | let fr = iN(b, iO, iP) | |
1706 | + | let dh = fr._3[cO] | |
1707 | + | let fX = gd(fr._3[cP]) | |
1708 | + | let gh = (lastBlock.timestamp - fr._4) | |
1709 | + | if ((0 > gh)) | |
1710 | + | then throw(((("Saved timestamp is in future, saved = " + toString(fr._4)) + ", current = ") + toString(lastBlock.timestamp))) | |
1697 | 1711 | else { | |
1698 | - | let | |
1699 | - | let | |
1700 | - | let | |
1701 | - | if (( | |
1702 | - | then throw(((("Not enough resources, available = " + toString( | |
1712 | + | let iJ = dg(dh) | |
1713 | + | let ja = iI(fr._2, iJ) | |
1714 | + | let jb = fraction(gh, (ja * iJ), aG) | |
1715 | + | if ((dZ > jb)) | |
1716 | + | then throw(((("Not enough resources, available = " + toString(jb)) + ", requested = ") + toString(dZ))) | |
1703 | 1717 | else { | |
1704 | - | let | |
1705 | - | let | |
1706 | - | let | |
1707 | - | let | |
1708 | - | let | |
1709 | - | let | |
1710 | - | let | |
1711 | - | let | |
1712 | - | let | |
1713 | - | if (if (( | |
1714 | - | then ( | |
1718 | + | let jc = fraction((jb - dZ), aG, (ja * iJ)) | |
1719 | + | let jd = (lastBlock.timestamp - jc) | |
1720 | + | let hs = (iJ / cn) | |
1721 | + | let gp = gl(fX, (gh - jc), hs, ja) | |
1722 | + | let hr = bs(fr._2) | |
1723 | + | let ht = valueOrElse(getInteger(bt(fr._2)), 0) | |
1724 | + | let hi = hq(hr, hs, ht) | |
1725 | + | let hz = split(hi[aZ], "_") | |
1726 | + | let gq = parseIntValue(hz[bc]) | |
1727 | + | if (if ((iO == dQ)) | |
1728 | + | then (dZ > gq) | |
1715 | 1729 | else false) | |
1716 | - | then throw((("Only " + toString( | |
1730 | + | then throw((("Only " + toString(gq)) + " space left in warehouse")) | |
1717 | 1731 | else { | |
1718 | - | let | |
1719 | - | let | |
1720 | - | let | |
1721 | - | let | |
1722 | - | let | |
1723 | - | then $Tuple4( | |
1724 | - | else if (( | |
1725 | - | then $Tuple4( | |
1732 | + | let he = bD(fr._1) | |
1733 | + | let hH = hd(he) | |
1734 | + | let go = split(hH[bf], "_") | |
1735 | + | let gn = split(hi[aW], "_") | |
1736 | + | let je = if ((iO == dQ)) | |
1737 | + | then $Tuple4(gf(gn, fX, (gh - jc), hs, ja), hH[bf], (parseIntValue(hz[bb]) + gp._2), (parseIntValue(hz[bc]) - gp._2)) | |
1738 | + | else if ((iO == dR)) | |
1739 | + | then $Tuple4(hi[aW], gf(go, fX, (gh - jc), hs, ja), parseIntValue(hz[bb]), parseIntValue(hz[bc])) | |
1726 | 1740 | else { | |
1727 | - | let | |
1728 | - | let | |
1729 | - | $Tuple4( | |
1741 | + | let jf = gm(gn, go, gp, gq) | |
1742 | + | let jg = min([parseIntValue(hz[bc]), gp._2]) | |
1743 | + | $Tuple4(jf._1, jf._2, (parseIntValue(hz[bb]) + jg), (parseIntValue(hz[bc]) - jg)) | |
1730 | 1744 | } | |
1731 | - | let | |
1732 | - | let | |
1733 | - | let | |
1734 | - | let | |
1735 | - | $Tuple5([IntegerEntry(bm( | |
1745 | + | let jh = je._1 | |
1746 | + | let ji = je._2 | |
1747 | + | let jj = je._3 | |
1748 | + | let jk = je._4 | |
1749 | + | $Tuple5([IntegerEntry(bm(fr._2), jd), IntegerEntry(bp(aA, fr._2, b), jd)], he, [hH[be], ji, hH[bg], hH[bh]], hr, [hi[aV], jh, hi[aX], hi[aY], makeString([hz[ba], toString(jj), toString(jk), hz[bd]], "_")]) | |
1736 | 1750 | } | |
1737 | 1751 | } | |
1738 | 1752 | } | |
1739 | 1753 | } | |
1740 | 1754 | ||
1741 | 1755 | ||
1742 | - | func | |
1743 | - | let | |
1744 | - | let | |
1745 | - | let | |
1746 | - | | |
1747 | - | } | |
1748 | - | ||
1749 | - | ||
1750 | - | func | |
1751 | - | let b = toString( | |
1752 | - | let | |
1753 | - | let | |
1754 | - | let | |
1755 | - | let | |
1756 | - | if (if (!( | |
1757 | - | then ( | |
1756 | + | func jl (b,O,iJ,iO) = { | |
1757 | + | let iV = bm(O) | |
1758 | + | let iW = value(getInteger(iV)) | |
1759 | + | let jb = (fraction((lastBlock.timestamp - iW), iI(O, iJ), aG) * iJ) | |
1760 | + | iZ(b, jb, iO, O) | |
1761 | + | } | |
1762 | + | ||
1763 | + | ||
1764 | + | func jm (ev,ic,jn,O) = { | |
1765 | + | let b = toString(ic) | |
1766 | + | let fr = iN(b, dS, O) | |
1767 | + | let iJ = dg(fr._3[cO]) | |
1768 | + | let jo = bt(fr._2) | |
1769 | + | let jp = valueOrElse(getInteger(jo), 0) | |
1770 | + | if (if (!(cd)) | |
1771 | + | then (jp >= 3) | |
1758 | 1772 | else false) | |
1759 | 1773 | then throw("Currently max infrastructure level = 3") | |
1760 | 1774 | else { | |
1761 | - | let | |
1762 | - | let aj = ( | |
1763 | - | if (if ( | |
1764 | - | then (aj > | |
1775 | + | let jq = ((sqrt(iJ, 0, 0, DOWN) / 5) + 2) | |
1776 | + | let aj = (jp + 1) | |
1777 | + | if (if (cd) | |
1778 | + | then (aj > jq) | |
1765 | 1779 | else false) | |
1766 | - | then throw(("Currently max infrastructure level = " + toString( | |
1780 | + | then throw(("Currently max infrastructure level = " + toString(jq))) | |
1767 | 1781 | else { | |
1768 | - | let | |
1769 | - | if (if (!( | |
1770 | - | then ( | |
1782 | + | let jr = fraction(dw, (iJ * aj), cn) | |
1783 | + | if (if (!(ev)) | |
1784 | + | then (jn != jr) | |
1771 | 1785 | else false) | |
1772 | - | then throw(("Payment attached should be " + toString( | |
1786 | + | then throw(("Payment attached should be " + toString(jr))) | |
1773 | 1787 | else { | |
1774 | - | let | |
1775 | - | let | |
1776 | - | let | |
1777 | - | let | |
1778 | - | let | |
1779 | - | let | |
1780 | - | let | |
1781 | - | let | |
1782 | - | let | |
1783 | - | let | |
1784 | - | let | |
1785 | - | let | |
1786 | - | $Tuple3(([IntegerEntry( | |
1788 | + | let he = bD(fr._1) | |
1789 | + | let hH = hd(he) | |
1790 | + | let iB = split(hH[bg], "_") | |
1791 | + | let js = fraction(ci, (iJ * aj), cn) | |
1792 | + | let iC = makeString(eu(ev, iB, js), "_") | |
1793 | + | let jt = jl(b, fr._2, iJ, dS) | |
1794 | + | let ju = jt._5 | |
1795 | + | let jv = hf(ju[aV]) | |
1796 | + | let jw = makeString([split(ju[aV], "_")[0], toString(aj)], "_") | |
1797 | + | let jx = hf(jw) | |
1798 | + | let hz = split(ju[aZ], "_") | |
1799 | + | let jy = makeString([hz[ba], hz[bb], toString(((parseIntValue(hz[bc]) + jx) - jv)), toString(jx)], "_") | |
1800 | + | $Tuple3(([IntegerEntry(jo, aj), IntegerEntry(dL(fr._2, b), aj), StringEntry(he, makeString([hH[be], jt._3[bf], iC, hH[bh]], ":")), StringEntry(jt._4, makeString([jw, ju[aW], ju[aX], ju[aY], jy], ":"))] ++ jt._1), aj, js) | |
1787 | 1801 | } | |
1788 | 1802 | } | |
1789 | 1803 | } | |
1790 | 1804 | } | |
1791 | 1805 | ||
1792 | 1806 | ||
1793 | - | func | |
1794 | - | let | |
1795 | - | let | |
1796 | - | let ad = valueOrElse(getInteger(al, | |
1797 | - | let ai = (ad + | |
1798 | - | let | |
1799 | - | let | |
1800 | - | $Tuple2([IntegerEntry( | |
1801 | - | } | |
1802 | - | ||
1803 | - | ||
1804 | - | func | |
1805 | - | let | |
1806 | - | let | |
1807 | - | let ad = valueOrElse(getInteger(al, | |
1808 | - | let ai = (ad + | |
1809 | - | let | |
1810 | - | let | |
1811 | - | $Tuple2([IntegerEntry( | |
1812 | - | } | |
1813 | - | ||
1814 | - | ||
1815 | - | func | |
1807 | + | func jz (z,jA) = { | |
1808 | + | let jB = C(z) | |
1809 | + | let jC = B(z) | |
1810 | + | let ad = valueOrElse(getInteger(al, jC), 0) | |
1811 | + | let ai = (ad + jA) | |
1812 | + | let jD = ag(valueOrElse(getInteger(al, jB), 0), ai) | |
1813 | + | let jE = D(z) | |
1814 | + | $Tuple2([IntegerEntry(jB, jD[0]), IntegerEntry(jC, ai), IntegerEntry(jE, (valueOrElse(getInteger(jE), 0) + jD[1]))], ai) | |
1815 | + | } | |
1816 | + | ||
1817 | + | ||
1818 | + | func jF (b,jA) = { | |
1819 | + | let jB = G(b) | |
1820 | + | let jC = F(b) | |
1821 | + | let ad = valueOrElse(getInteger(al, jC), 0) | |
1822 | + | let ai = (ad + jA) | |
1823 | + | let jD = ag(valueOrElse(getInteger(al, jB), 0), ai) | |
1824 | + | let jE = H(b) | |
1825 | + | $Tuple2([IntegerEntry(jB, jD[0]), IntegerEntry(jC, ai), IntegerEntry(jE, (valueOrElse(getInteger(jE), 0) + jD[1]))], ai) | |
1826 | + | } | |
1827 | + | ||
1828 | + | ||
1829 | + | func jG (b) = { | |
1816 | 1830 | let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked") | |
1817 | - | let | |
1818 | - | let | |
1819 | - | if (!(isDefined( | |
1831 | + | let jH = bx(b) | |
1832 | + | let jI = getString(jH) | |
1833 | + | if (!(isDefined(jI))) | |
1820 | 1834 | then throw("You are not eligible for ONBOARD artifact") | |
1821 | 1835 | else { | |
1822 | - | let | |
1823 | - | let | |
1824 | - | if (isDefined( | |
1825 | - | then throw(("You already used your ONBOARD artifact on duck " + value( | |
1836 | + | let jJ = bz(b) | |
1837 | + | let jK = getString(jJ) | |
1838 | + | if (isDefined(jK)) | |
1839 | + | then throw(("You already used your ONBOARD artifact on duck " + value(jK))) | |
1826 | 1840 | else { | |
1827 | - | let | |
1828 | - | let | |
1829 | - | if (isDefined( | |
1830 | - | then throw(((("The duck " + z) + " already got points from ONBOARD artifact from user ") + value( | |
1831 | - | else ([StringEntry( | |
1841 | + | let jL = by(z) | |
1842 | + | let jM = getString(jL) | |
1843 | + | if (isDefined(jM)) | |
1844 | + | then throw(((("The duck " + z) + " already got points from ONBOARD artifact from user ") + value(jM))) | |
1845 | + | else ([StringEntry(jJ, z), StringEntry(jL, b)] ++ jz(z, aa)._1) | |
1832 | 1846 | } | |
1833 | 1847 | } | |
1834 | 1848 | } | |
1835 | 1849 | ||
1836 | 1850 | ||
1837 | - | func | |
1838 | - | let | |
1839 | - | let O = | |
1840 | - | let | |
1841 | - | let | |
1842 | - | if ((valueOrElse(getInteger( | |
1851 | + | func jN (b,iP) = { | |
1852 | + | let fr = iN(b, dS, iP) | |
1853 | + | let O = fr._2 | |
1854 | + | let iJ = dg(fr._3[cO]) | |
1855 | + | let jO = bn(aC, O) | |
1856 | + | if ((valueOrElse(getInteger(jO), 0) > 0)) | |
1843 | 1857 | then throw("Presale artifact is already activated") | |
1844 | - | else if ((parseIntValue( | |
1858 | + | else if ((parseIntValue(fr._3[cN]) > dF)) | |
1845 | 1859 | then throw((((aA + " ") + O) + " is not eligible for presale artifact")) | |
1846 | 1860 | else { | |
1847 | - | let | |
1848 | - | ((( | |
1861 | + | let jt = jl(b, O, iJ, dS) | |
1862 | + | (((jt._1 :+ IntegerEntry(jO, iJ)) :+ StringEntry(jt._2, makeString(jt._3, ":"))) :+ StringEntry(jt._4, makeString(jt._5, ":"))) | |
1849 | 1863 | } | |
1850 | 1864 | } | |
1851 | 1865 | ||
1852 | 1866 | ||
1853 | - | func | |
1854 | - | let | |
1855 | - | let | |
1867 | + | func jP (z) = { | |
1868 | + | let jQ = valueOrElse(getInteger(cM, bJ), 0) | |
1869 | + | let iR = split(valueOrElse(getString(bE(z)), aI), "_") | |
1856 | 1870 | let av = lastBlock.timestamp | |
1857 | - | let | |
1858 | - | let bR = | |
1859 | - | let bS = | |
1860 | - | if (( | |
1871 | + | let jR = bP(cM, jQ) | |
1872 | + | let bR = jR[bN] | |
1873 | + | let bS = jR[bO] | |
1874 | + | if ((iR[bX] != "T")) | |
1861 | 1875 | then false | |
1862 | - | else { | |
1863 | - | let ey = if (if (if ((parseIntValue(iP[bW]) == jO)) | |
1864 | - | then (bS[bU] == "INPROGRESS") | |
1865 | - | else false) | |
1866 | - | then (parseIntValue(bR[bT]) > av) | |
1867 | - | else false) | |
1868 | - | then throw("Your duck is taking part in the tournament") | |
1869 | - | else invoke(this, "exitTournamentInternal", [z], nil) | |
1870 | - | if ((ey == ey)) | |
1871 | - | then false | |
1872 | - | else throw("Strict value is not equal to itself.") | |
1873 | - | } | |
1874 | - | } | |
1875 | - | ||
1876 | - | ||
1877 | - | func jQ (jR,aj,jS,b,jT,jU) = { | |
1876 | + | else if (if (if ((parseIntValue(iR[bW]) == jQ)) | |
1877 | + | then (bS[bU] == "INPROGRESS") | |
1878 | + | else false) | |
1879 | + | then (parseIntValue(bR[bT]) > av) | |
1880 | + | else false) | |
1881 | + | then throw("Your duck is taking part in the tournament") | |
1882 | + | else df(invoke(this, "exitTournamentInternal", [z], nil)) | |
1883 | + | } | |
1884 | + | ||
1885 | + | ||
1886 | + | func jS (jT,aj,jU,b,jV,jW) = { | |
1878 | 1887 | let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked") | |
1879 | - | if ( | |
1888 | + | if (jP(z)) | |
1880 | 1889 | then throw("mergeInternal_checkTournament") | |
1881 | 1890 | else { | |
1882 | - | func | |
1883 | - | let | |
1884 | - | let | |
1885 | - | let | |
1886 | - | let | |
1887 | - | if (( | |
1891 | + | func jX (ei,O) = { | |
1892 | + | let iU = value(assetInfo(fromBase58String(O))) | |
1893 | + | let iV = bm(O) | |
1894 | + | let iW = valueOrErrorMessage(getInteger(iV), (("NFT " + iU.name) + " is not staked")) | |
1895 | + | let iX = valueOrErrorMessage(getString(bj(O)), (("NFT " + iU.name) + " is orphaned")) | |
1896 | + | if ((iX != b)) | |
1888 | 1897 | then throw((aA + " is not yours")) | |
1889 | 1898 | else { | |
1890 | - | let | |
1891 | - | let | |
1892 | - | if (if (( | |
1893 | - | then ( | |
1899 | + | let iY = split(iU.description, "_") | |
1900 | + | let cX = iY[cQ] | |
1901 | + | if (if ((ei._3 != "")) | |
1902 | + | then (ei._3 != cX) | |
1894 | 1903 | else false) | |
1895 | 1904 | then throw("Lands should be on the same continent to merge") | |
1896 | 1905 | else { | |
1897 | - | let | |
1898 | - | let | |
1899 | - | let | |
1900 | - | let | |
1901 | - | let | |
1902 | - | let | |
1903 | - | let | |
1904 | - | let | |
1905 | - | let | |
1906 | - | if (("S" == | |
1906 | + | let dh = iY[cO] | |
1907 | + | let jY = ei._1 | |
1908 | + | let gb = valueOrErrorMessage(indexOf(jY, dh), "You haven't passed all the lands needed") | |
1909 | + | let jZ = (take(jY, gb) + drop(jY, (gb + 1))) | |
1910 | + | let iJ = dg(dh) | |
1911 | + | let ka = (ei._2 + valueOrElse(getInteger(bn(aC, O)), 0)) | |
1912 | + | let ht = valueOrElse(getInteger(bt(O)), 0) | |
1913 | + | let kb = { | |
1914 | + | let cg = dh | |
1915 | + | if (("S" == cg)) | |
1907 | 1916 | then 3 | |
1908 | - | else if (("M" == | |
1917 | + | else if (("M" == cg)) | |
1909 | 1918 | then 4 | |
1910 | - | else if (("L" == | |
1919 | + | else if (("L" == cg)) | |
1911 | 1920 | then 5 | |
1912 | - | else if (("XL" == | |
1921 | + | else if (("XL" == cg)) | |
1913 | 1922 | then 6 | |
1914 | 1923 | else throw("Only S, M, L, XL can merge") | |
1915 | 1924 | } | |
1916 | - | if (( | |
1925 | + | if ((ht != kb)) | |
1917 | 1926 | then throw("All lands should be maxed to merge") | |
1918 | 1927 | else { | |
1919 | - | let | |
1920 | - | let | |
1921 | - | let | |
1922 | - | if ((0 > | |
1923 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1928 | + | let dK = iY[cN] | |
1929 | + | let fX = gd(iY[cP]) | |
1930 | + | let gh = (lastBlock.timestamp - iW) | |
1931 | + | if ((0 > gh)) | |
1932 | + | then throw(((("Saved timestamp is in future, saved = " + toString(iW)) + ", current = ") + toString(lastBlock.timestamp))) | |
1924 | 1933 | else { | |
1925 | - | let | |
1926 | - | let | |
1927 | - | let | |
1928 | - | let | |
1929 | - | let | |
1930 | - | let | |
1931 | - | let | |
1932 | - | let | |
1933 | - | if (!(isDefined( | |
1934 | + | let ja = iI(O, iJ) | |
1935 | + | let hs = (iJ / cn) | |
1936 | + | let ji = gf(split(ei._4, "_"), fX, gh, hs, ja) | |
1937 | + | let es = fV(ei._6, fX, hs, -1) | |
1938 | + | let kc = fV(ei._10, fX, hs, -1) | |
1939 | + | let gL = fV(ei._9, fX, hs, 1) | |
1940 | + | let kd = ei._7 | |
1941 | + | let cH = indexOf(kd, O) | |
1942 | + | if (!(isDefined(cH))) | |
1934 | 1943 | then throw(("Your staked lands don't contain " + O)) | |
1935 | 1944 | else { | |
1936 | - | let | |
1937 | - | let | |
1938 | - | $Tuple10( | |
1939 | - | then [DeleteEntry( | |
1940 | - | else nil)), | |
1945 | + | let ke = bl(O) | |
1946 | + | let kf = valueOrElse(getString(ke), "") | |
1947 | + | $Tuple10(jZ, ka, cX, ji, ((((((((((((ei._5 :+ DeleteEntry(bm(O))) :+ DeleteEntry(bp(aA, O, b))) :+ DeleteEntry(dJ(dK))) :+ DeleteEntry(bj(O))) :+ DeleteEntry(bt(O))) :+ DeleteEntry(dL(O, b))) :+ DeleteEntry(bn(aC, O))) :+ DeleteEntry(dM(dK))) :+ DeleteEntry(bs(O))) :+ DeleteEntry(ke)) :+ Burn(fromBase58String(O), 1)) ++ (if ((kf != "")) | |
1948 | + | then [DeleteEntry(dH(kf))] | |
1949 | + | else nil)), es, removeByIndex(kd, value(cH)), (ei._8 + iJ), gL, kc) | |
1941 | 1950 | } | |
1942 | 1951 | } | |
1943 | 1952 | } | |
1944 | 1953 | } | |
1945 | 1954 | } | |
1946 | 1955 | } | |
1947 | 1956 | ||
1948 | - | let | |
1949 | - | let | |
1950 | - | let | |
1951 | - | let | |
1952 | - | let | |
1953 | - | let | |
1954 | - | then split_51C(value( | |
1957 | + | let he = bD(z) | |
1958 | + | let hH = hd(he) | |
1959 | + | let fW = split(valueOrElse(getString(cV()), "0_0_0_0_0_0"), "_") | |
1960 | + | let kg = cY(b) | |
1961 | + | let kh = getString(kg) | |
1962 | + | let ki = if (isDefined(kh)) | |
1963 | + | then split_51C(value(kh), "_") | |
1955 | 1964 | else nil | |
1956 | - | let | |
1957 | - | let | |
1958 | - | let | |
1959 | - | let | |
1960 | - | let | |
1961 | - | let | |
1962 | - | func | |
1963 | - | then | |
1964 | - | else | |
1965 | - | ||
1966 | - | func | |
1967 | - | then | |
1965 | + | let kj = split(value(assetInfo(fromBase58String(jV[0]))).description, "_")[cQ] | |
1966 | + | let kk = split(valueOrElse(getString(cW(kj)), "0_0_0_0_0_0"), "_") | |
1967 | + | let et = { | |
1968 | + | let ek = jV | |
1969 | + | let el = size(ek) | |
1970 | + | let em = $Tuple10(jU, 0, "", hH[bf], nil, fW, ki, 0, split("0_0_0_0_0_0", "_"), kk) | |
1971 | + | func en (eo,ep) = if ((ep >= el)) | |
1972 | + | then eo | |
1973 | + | else jX(eo, ek[ep]) | |
1974 | + | ||
1975 | + | func eq (eo,ep) = if ((ep >= el)) | |
1976 | + | then eo | |
1968 | 1977 | else throw("List size exceeds 5") | |
1969 | 1978 | ||
1970 | - | | |
1979 | + | eq(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5) | |
1971 | 1980 | } | |
1972 | - | let | |
1973 | - | let | |
1974 | - | let | |
1975 | - | let | |
1976 | - | let | |
1977 | - | let | |
1978 | - | let bk = calculateAssetId( | |
1979 | - | let | |
1980 | - | let | |
1981 | - | let | |
1982 | - | let | |
1983 | - | $Tuple2(((((((((((((((( | |
1984 | - | then StringEntry( | |
1985 | - | else DeleteEntry( | |
1981 | + | let cX = et._3 | |
1982 | + | let gF = valueOrErrorMessage(indexOf(aM, cX), ("Unknown continent: " + cX)) | |
1983 | + | let ge = gK(et._9, (dg(jT) / cn)) | |
1984 | + | let if = valueOrElse(getInteger(dG()), (dF + 1)) | |
1985 | + | let kl = toString(if) | |
1986 | + | let ig = Issue(dX(kl, jT), makeString([kl, jT, ge, cX], "_"), 1, 0, false) | |
1987 | + | let bk = calculateAssetId(ig) | |
1988 | + | let km = toBase58String(bk) | |
1989 | + | let iC = makeString(eu((jW > 0), split(hH[bg], "_"), jW), "_") | |
1990 | + | let kn = cZ(b) | |
1991 | + | let ko = valueOrElse(getInteger(kn), 0) | |
1992 | + | $Tuple2((((((((((((((((et._5 :+ (if ((size(et._7) > 0)) | |
1993 | + | then StringEntry(kg, makeString_11C(et._7, "_")) | |
1994 | + | else DeleteEntry(kg))) :+ IntegerEntry(kn, if ((et._8 > ko)) | |
1986 | 1995 | then 0 | |
1987 | - | else ( | |
1988 | - | } | |
1989 | - | } | |
1990 | - | ||
1991 | - | ||
1992 | - | func | |
1993 | - | ||
1994 | - | ||
1995 | - | func | |
1996 | - | ||
1997 | - | ||
1998 | - | func | |
1999 | - | ||
2000 | - | ||
2001 | - | func | |
2002 | - | ||
2003 | - | ||
2004 | - | func | |
2005 | - | let | |
2006 | - | if ((4 == | |
2007 | - | then | |
2008 | - | else if ((3 == | |
2009 | - | then | |
2010 | - | else if ((5 == | |
2011 | - | then | |
2012 | - | else if ((2 == | |
2013 | - | then | |
1996 | + | else (ko - et._8))) :+ IntegerEntry(dG(), (if + 1))) :+ ig) :+ StringEntry(dJ(kl), km)) :+ StringEntry(bj(km), b)) :+ StringEntry(dM(kl), b)) :+ IntegerEntry(bn(aC, km), et._2)) :+ IntegerEntry(bt(km), aj)) :+ IntegerEntry(dL(km, b), aj)) :+ StringEntry(he, makeString([hH[be], et._4, iC, hH[bh]], ":"))) :+ StringEntry(cV(), makeString(et._6, "_"))) :+ StringEntry(cW(cX), makeString(et._10, "_"))) :+ StringEntry(bE(z), makeString([cX, "L", km], "_"))) :+ ScriptTransfer(addressFromStringValue(b), 1, bk)), km) | |
1997 | + | } | |
1998 | + | } | |
1999 | + | ||
2000 | + | ||
2001 | + | func kp (b,jV) = jS("M", 3, "SSSS", b, jV, 0) | |
2002 | + | ||
2003 | + | ||
2004 | + | func kq (b,jV) = jS("L", 4, "SMM", b, jV, (ci * 4)) | |
2005 | + | ||
2006 | + | ||
2007 | + | func kr (b,jV) = jS("XL", 5, "SSSML", b, jV, (ci * 47)) | |
2008 | + | ||
2009 | + | ||
2010 | + | func ks (b,jV) = jS("XXL", 6, "LXL", b, jV, (ci * 54)) | |
2011 | + | ||
2012 | + | ||
2013 | + | func kt (b,jV) = { | |
2014 | + | let cg = size(jV) | |
2015 | + | if ((4 == cg)) | |
2016 | + | then kp(b, jV) | |
2017 | + | else if ((3 == cg)) | |
2018 | + | then kq(b, jV) | |
2019 | + | else if ((5 == cg)) | |
2020 | + | then kr(b, jV) | |
2021 | + | else if ((2 == cg)) | |
2022 | + | then ks(b, jV) | |
2014 | 2023 | else throw("Unknown merge") | |
2015 | 2024 | } | |
2016 | 2025 | ||
2017 | 2026 | ||
2018 | - | func | |
2027 | + | func ku (gb) = if (if ((gb.originCaller != cI)) | |
2019 | 2028 | then valueOrElse(getBoolean(bF()), false) | |
2020 | 2029 | else false) | |
2021 | 2030 | then throw("Contracts are under maintenance") | |
2022 | - | else StringEntry(bi(toString( | |
2023 | - | ||
2024 | - | ||
2025 | - | @Callable( | |
2026 | - | func constructorV1 ( | |
2031 | + | else StringEntry(bi(toString(gb.originCaller)), toBase58String(gb.transactionId)) | |
2032 | + | ||
2033 | + | ||
2034 | + | @Callable(gb) | |
2035 | + | func constructorV1 (kv) = if ((gb.caller != this)) | |
2027 | 2036 | then throw("Permission denied") | |
2028 | - | else [StringEntry( | |
2029 | - | ||
2030 | - | ||
2031 | - | ||
2032 | - | @Callable( | |
2033 | - | func setBlocked ( | |
2037 | + | else [StringEntry(cC(), kv)] | |
2038 | + | ||
2039 | + | ||
2040 | + | ||
2041 | + | @Callable(gb) | |
2042 | + | func setBlocked (kw) = if ((gb.caller != this)) | |
2034 | 2043 | then throw("permission denied") | |
2035 | - | else [BooleanEntry(bF(), | |
2036 | - | ||
2037 | - | ||
2038 | - | ||
2039 | - | @Callable( | |
2044 | + | else [BooleanEntry(bF(), kw)] | |
2045 | + | ||
2046 | + | ||
2047 | + | ||
2048 | + | @Callable(gb) | |
2040 | 2049 | func stakeLand () = { | |
2041 | - | let | |
2042 | - | if ((size( | |
2050 | + | let kx = ku(gb) | |
2051 | + | if ((size(gb.payments) != 1)) | |
2043 | 2052 | then throw("Exactly one payment required") | |
2044 | 2053 | else { | |
2045 | - | let | |
2046 | - | let bk = value( | |
2047 | - | let | |
2048 | - | if (( | |
2054 | + | let ky = value(gb.payments[0]) | |
2055 | + | let bk = value(ky.assetId) | |
2056 | + | let cu = toString(gb.caller) | |
2057 | + | if ((ky.amount != 1)) | |
2049 | 2058 | then throw((("NFT " + aA) + " token should be attached as payment")) | |
2050 | 2059 | else { | |
2051 | - | let | |
2052 | - | if (( | |
2060 | + | let iU = value(assetInfo(bk)) | |
2061 | + | if ((iU.issuer != this)) | |
2053 | 2062 | then throw("Unknown issuer of token") | |
2054 | - | else if (!(contains( | |
2063 | + | else if (!(contains(iU.name, aA))) | |
2055 | 2064 | then throw((("Only NFT " + aA) + " tokens are accepted")) | |
2056 | 2065 | else { | |
2057 | - | let | |
2058 | - | let | |
2059 | - | then dropRight( | |
2060 | - | else if (contains( | |
2061 | - | then dropRight( | |
2062 | - | else dropRight( | |
2063 | - | if (!(isDefined(parseInt( | |
2064 | - | then throw(("Cannot parse land number from " + | |
2066 | + | let kz = drop(iU.name, 4) | |
2067 | + | let dK = if (contains(kz, "XXL")) | |
2068 | + | then dropRight(kz, 3) | |
2069 | + | else if (contains(kz, "XL")) | |
2070 | + | then dropRight(kz, 2) | |
2071 | + | else dropRight(kz, 1) | |
2072 | + | if (!(isDefined(parseInt(dK)))) | |
2073 | + | then throw(("Cannot parse land number from " + iU.name)) | |
2065 | 2074 | else { | |
2066 | 2075 | let O = toBase58String(bk) | |
2067 | - | let | |
2068 | - | if (isDefined(getInteger( | |
2069 | - | then throw((("NFT " + | |
2076 | + | let iV = bm(O) | |
2077 | + | if (isDefined(getInteger(iV))) | |
2078 | + | then throw((("NFT " + iU.name) + " is already staked")) | |
2070 | 2079 | else { | |
2071 | - | let | |
2072 | - | let | |
2073 | - | let | |
2074 | - | let | |
2075 | - | let | |
2076 | - | let | |
2077 | - | let | |
2078 | - | let | |
2079 | - | let | |
2080 | - | let | |
2081 | - | let | |
2082 | - | then split_51C(value( | |
2080 | + | let iY = split(iU.description, "_") | |
2081 | + | let fX = gd(iY[cP]) | |
2082 | + | let iJ = dg(iY[cO]) | |
2083 | + | let hs = (iJ / cn) | |
2084 | + | let es = gc(fX, hs, 1) | |
2085 | + | let kA = cW(iY[cQ]) | |
2086 | + | let kk = split(valueOrElse(getString(kA), "0_0_0_0_0_0"), "_") | |
2087 | + | let kB = makeString(fV(kk, fX, hs, 1), "_") | |
2088 | + | let kg = cY(cu) | |
2089 | + | let kh = getString(kg) | |
2090 | + | let kd = if (isDefined(kh)) | |
2091 | + | then split_51C(value(kh), "_") | |
2083 | 2092 | else nil | |
2084 | - | if (containsElement( | |
2093 | + | if (containsElement(kd, O)) | |
2085 | 2094 | then throw(("Your staked lands already contain " + O)) | |
2086 | - | else if ((size( | |
2095 | + | else if ((size(kd) >= aE)) | |
2087 | 2096 | then throw((("Your already staked max (" + toString(aE)) + ") lands")) | |
2088 | 2097 | else { | |
2089 | - | let | |
2090 | - | let | |
2091 | - | let | |
2092 | - | let | |
2093 | - | $Tuple2([IntegerEntry( | |
2098 | + | let ht = valueOrElse(getInteger(bt(O)), 0) | |
2099 | + | let kn = cZ(cu) | |
2100 | + | let kC = valueOrElse(getInteger(kn), 0) | |
2101 | + | let kD = invoke(cL, "onStakeUnstakeLand", [cu], nil) | |
2102 | + | $Tuple2([IntegerEntry(iV, lastBlock.timestamp), IntegerEntry(bp(aA, O, cu), lastBlock.timestamp), StringEntry(kg, makeString_11C((kd :+ O), "_")), IntegerEntry(kn, (kC + iJ)), StringEntry(bj(O), cu), StringEntry(dM(dK), cu), IntegerEntry(dL(O, cu), ht), StringEntry(cV(), es), StringEntry(kA, kB), kx], kD) | |
2094 | 2103 | } | |
2095 | 2104 | } | |
2096 | 2105 | } | |
2097 | 2106 | } | |
2098 | 2107 | } | |
2099 | 2108 | } | |
2100 | 2109 | } | |
2101 | 2110 | ||
2102 | 2111 | ||
2103 | 2112 | ||
2104 | - | @Callable( | |
2105 | - | func unstakeLand ( | |
2106 | - | let | |
2107 | - | if ((size( | |
2113 | + | @Callable(gb) | |
2114 | + | func unstakeLand (iP) = { | |
2115 | + | let kx = ku(gb) | |
2116 | + | if ((size(gb.payments) != 0)) | |
2108 | 2117 | then throw("No payments required") | |
2109 | 2118 | else { | |
2110 | - | let b = toString( | |
2111 | - | let | |
2112 | - | let O = | |
2113 | - | let | |
2114 | - | let | |
2115 | - | let | |
2116 | - | let | |
2117 | - | let | |
2118 | - | let | |
2119 | - | let | |
2120 | - | let | |
2121 | - | let | |
2122 | - | let | |
2123 | - | let | |
2124 | - | let | |
2125 | - | if (!(isDefined( | |
2119 | + | let b = toString(gb.caller) | |
2120 | + | let fr = iN(b, dR, iP) | |
2121 | + | let O = fr._2 | |
2122 | + | let iY = fr._3 | |
2123 | + | let kg = cY(b) | |
2124 | + | let fX = gd(iY[cP]) | |
2125 | + | let iJ = dg(iY[cO]) | |
2126 | + | let hs = (iJ / cn) | |
2127 | + | let es = gc(fX, hs, -1) | |
2128 | + | let kA = cW(iY[cQ]) | |
2129 | + | let kk = split(valueOrElse(getString(kA), "0_0_0_0_0_0"), "_") | |
2130 | + | let kB = makeString(fV(kk, fX, hs, -1), "_") | |
2131 | + | let jt = jl(b, O, iJ, dR) | |
2132 | + | let kd = split_51C(valueOrElse(getString(kg), ""), "_") | |
2133 | + | let cH = indexOf(kd, O) | |
2134 | + | if (!(isDefined(cH))) | |
2126 | 2135 | then throw(("Your staked lands don't contain " + O)) | |
2127 | 2136 | else { | |
2128 | 2137 | let av = lastBlock.timestamp | |
2129 | - | let | |
2130 | - | if (( | |
2131 | - | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString( | |
2138 | + | let kE = valueOrElse(getInteger(cK, bG(b)), 0) | |
2139 | + | if ((kE >= av)) | |
2140 | + | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(kE))) | |
2132 | 2141 | else { | |
2133 | - | let | |
2134 | - | if (( | |
2135 | - | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString( | |
2142 | + | let kF = (valueOrElse(getInteger(cL, a(b)), 0) + cj) | |
2143 | + | if ((kF > av)) | |
2144 | + | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(kF))) | |
2136 | 2145 | else { | |
2137 | - | let | |
2138 | - | let | |
2139 | - | let | |
2146 | + | let kn = cZ(b) | |
2147 | + | let ko = valueOrElse(getInteger(kn), 0) | |
2148 | + | let kG = if ((iJ > ko)) | |
2140 | 2149 | then 0 | |
2141 | - | else ( | |
2142 | - | let | |
2143 | - | $Tuple2([ScriptTransfer( | |
2144 | - | then StringEntry( | |
2145 | - | else DeleteEntry( | |
2150 | + | else (ko - iJ) | |
2151 | + | let kD = invoke(cL, "onStakeUnstakeLand", [b], nil) | |
2152 | + | $Tuple2([ScriptTransfer(gb.caller, 1, fromBase58String(O)), DeleteEntry(bm(O)), DeleteEntry(bp(aA, O, b)), StringEntry(cV(), es), StringEntry(kA, kB), StringEntry(jt._2, makeString(jt._3, ":")), if ((size(kd) > 1)) | |
2153 | + | then StringEntry(kg, makeString_11C(removeByIndex(kd, value(cH)), "_")) | |
2154 | + | else DeleteEntry(kg), IntegerEntry(kn, kG), kx], kD) | |
2146 | 2155 | } | |
2147 | 2156 | } | |
2148 | 2157 | } | |
2149 | 2158 | } | |
2150 | 2159 | } | |
2151 | 2160 | ||
2152 | 2161 | ||
2153 | 2162 | ||
2154 | - | @Callable( | |
2163 | + | @Callable(gb) | |
2155 | 2164 | func stakeDuck () = { | |
2156 | - | let | |
2157 | - | if ((size( | |
2165 | + | let kx = ku(gb) | |
2166 | + | if ((size(gb.payments) != 1)) | |
2158 | 2167 | then throw("Exactly one payment required") | |
2159 | 2168 | else { | |
2160 | - | let | |
2161 | - | let bk = value( | |
2162 | - | let | |
2163 | - | if (( | |
2169 | + | let ky = value(gb.payments[0]) | |
2170 | + | let bk = value(ky.assetId) | |
2171 | + | let cu = toString(gb.caller) | |
2172 | + | if ((ky.amount != 1)) | |
2164 | 2173 | then throw((("NFT " + aB) + " token should be attached as payment")) | |
2165 | 2174 | else { | |
2166 | - | let | |
2167 | - | if (if (( | |
2168 | - | then ( | |
2175 | + | let iU = value(assetInfo(bk)) | |
2176 | + | if (if ((iU.issuer != dp)) | |
2177 | + | then (iU.issuer != dq) | |
2169 | 2178 | else false) | |
2170 | 2179 | then throw((("Unknown issuer of " + aB) + " token")) | |
2171 | - | else if (!(contains( | |
2180 | + | else if (!(contains(iU.name, aB))) | |
2172 | 2181 | then throw((("Only NFT " + aB) + " tokens are accepted")) | |
2173 | 2182 | else { | |
2174 | - | let | |
2175 | - | let | |
2176 | - | if (isDefined(getInteger( | |
2177 | - | then throw((("NFT " + | |
2178 | - | else if (isDefined(getString(bC( | |
2179 | - | then throw(("You already staked one duck: " + | |
2180 | - | else if ( | |
2183 | + | let kH = toBase58String(bk) | |
2184 | + | let iV = bm(kH) | |
2185 | + | if (isDefined(getInteger(iV))) | |
2186 | + | then throw((("NFT " + iU.name) + " is already staked")) | |
2187 | + | else if (isDefined(getString(bC(cu)))) | |
2188 | + | then throw(("You already staked one duck: " + iU.name)) | |
2189 | + | else if (jP(kH)) | |
2181 | 2190 | then throw("stakeDuck_checkTournament") | |
2182 | 2191 | else { | |
2183 | - | let | |
2184 | - | let | |
2185 | - | let | |
2186 | - | let | |
2187 | - | let | |
2188 | - | let | |
2189 | - | let | |
2190 | - | ([IntegerEntry( | |
2192 | + | let kI = bE(kH) | |
2193 | + | let kJ = getString(kI) | |
2194 | + | let he = bD(kH) | |
2195 | + | let kK = getString(he) | |
2196 | + | let iu = y(kH) | |
2197 | + | let iv = ae(valueOrElse(getInteger(C(kH)), 0)) | |
2198 | + | let kL = valueOrElse(getInteger(iu), iv) | |
2199 | + | ([IntegerEntry(iV, lastBlock.timestamp), IntegerEntry(bp(aB, toBase58String(bk), cu), lastBlock.timestamp), StringEntry(bB(kH), cu), StringEntry(bC(cu), kH)] ++ (if (isDefined(kJ)) | |
2191 | 2200 | then nil | |
2192 | - | else ([StringEntry( | |
2201 | + | else ([StringEntry(kI, aI)] ++ (if (isDefined(kK)) | |
2193 | 2202 | then nil | |
2194 | - | else (([StringEntry( | |
2203 | + | else (([StringEntry(he, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(iu, kL)) :+ kx))))) | |
2195 | 2204 | } | |
2196 | 2205 | } | |
2197 | 2206 | } | |
2198 | 2207 | } | |
2199 | 2208 | } | |
2200 | 2209 | ||
2201 | 2210 | ||
2202 | 2211 | ||
2203 | - | @Callable( | |
2204 | - | func unstakeDuck ( | |
2205 | - | let | |
2206 | - | if ((size( | |
2212 | + | @Callable(gb) | |
2213 | + | func unstakeDuck (kH) = { | |
2214 | + | let kx = ku(gb) | |
2215 | + | if ((size(gb.payments) != 0)) | |
2207 | 2216 | then throw("No payments required") | |
2208 | 2217 | else { | |
2209 | - | let bk = fromBase58String( | |
2210 | - | let | |
2211 | - | let | |
2212 | - | let | |
2213 | - | if (!(isDefined(getInteger( | |
2214 | - | then throw((("NFT " + | |
2215 | - | else if (!(isDefined(getString(bC( | |
2216 | - | then throw((("The duck " + | |
2218 | + | let bk = fromBase58String(kH) | |
2219 | + | let cu = toString(gb.caller) | |
2220 | + | let iU = value(assetInfo(bk)) | |
2221 | + | let iV = bm(kH) | |
2222 | + | if (!(isDefined(getInteger(iV)))) | |
2223 | + | then throw((("NFT " + iU.name) + " is not staked")) | |
2224 | + | else if (!(isDefined(getString(bC(cu))))) | |
2225 | + | then throw((("The duck " + iU.name) + " is not staked")) | |
2217 | 2226 | else { | |
2218 | - | let | |
2219 | - | if (( | |
2227 | + | let iX = valueOrErrorMessage(getString(bB(kH)), (("NFT " + iU.name) + " is orphaned")) | |
2228 | + | if ((iX != cu)) | |
2220 | 2229 | then throw("Staked NFT is not yours") | |
2221 | - | else if ( | |
2230 | + | else if (jP(kH)) | |
2222 | 2231 | then throw("unstakeDuck_checkTournament") | |
2223 | 2232 | else { | |
2224 | - | let | |
2225 | - | let | |
2226 | - | let aq = valueOrElse(getInteger( | |
2227 | - | if (( | |
2228 | - | then throw((("Please heal your duck to " + toString( | |
2229 | - | else [ScriptTransfer( | |
2233 | + | let iu = y(kH) | |
2234 | + | let iv = ae(valueOrElse(getInteger(C(kH)), 0)) | |
2235 | + | let aq = valueOrElse(getInteger(iu), iv) | |
2236 | + | if ((iv > aq)) | |
2237 | + | then throw((("Please heal your duck to " + toString(iv)) + "hp before unstaking")) | |
2238 | + | else [ScriptTransfer(gb.caller, 1, bk), DeleteEntry(iV), DeleteEntry(iu), DeleteEntry(bE(kH)), DeleteEntry(bB(kH)), DeleteEntry(bp(aB, kH, cu)), DeleteEntry(bC(cu)), kx] | |
2230 | 2239 | } | |
2231 | 2240 | } | |
2232 | 2241 | } | |
2233 | 2242 | } | |
2234 | 2243 | ||
2235 | 2244 | ||
2236 | 2245 | ||
2237 | - | @Callable( | |
2238 | - | func claimRes ( | |
2239 | - | let | |
2240 | - | if ((size( | |
2246 | + | @Callable(gb) | |
2247 | + | func claimRes (dZ,kM) = { | |
2248 | + | let kx = ku(gb) | |
2249 | + | if ((size(gb.payments) != 0)) | |
2241 | 2250 | then throw("No payments required") | |
2242 | 2251 | else { | |
2243 | - | let b = toString( | |
2244 | - | let | |
2252 | + | let b = toString(gb.originCaller) | |
2253 | + | let eA = iZ(b, dZ, dR, kM) | |
2245 | 2254 | let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked") | |
2246 | - | $Tuple2((((( | |
2247 | - | } | |
2248 | - | } | |
2249 | - | ||
2250 | - | ||
2251 | - | ||
2252 | - | @Callable( | |
2253 | - | func claimResToWH ( | |
2254 | - | let | |
2255 | - | if ((size( | |
2255 | + | $Tuple2(((((eA._1 ++ jz(z, fraction(S, dZ, cm))._1) :+ StringEntry(eA._2, makeString(eA._3, ":"))) :+ StringEntry(eA._4, makeString(eA._5, ":"))) :+ kx), eA._3[bf]) | |
2256 | + | } | |
2257 | + | } | |
2258 | + | ||
2259 | + | ||
2260 | + | ||
2261 | + | @Callable(gb) | |
2262 | + | func claimResToWH (dZ,kM) = { | |
2263 | + | let kx = ku(gb) | |
2264 | + | if ((size(gb.payments) != 0)) | |
2256 | 2265 | then throw("No payments required") | |
2257 | 2266 | else { | |
2258 | - | let b = toString( | |
2259 | - | let | |
2260 | - | $Tuple2((((( | |
2261 | - | } | |
2262 | - | } | |
2263 | - | ||
2264 | - | ||
2265 | - | ||
2266 | - | @Callable( | |
2267 | - | func flight ( | |
2268 | - | let | |
2269 | - | if ((size( | |
2267 | + | let b = toString(gb.originCaller) | |
2268 | + | let eA = iZ(b, dZ, dQ, kM) | |
2269 | + | $Tuple2(((((eA._1 ++ jF(b, fraction(S, dZ, cm))._1) :+ StringEntry(eA._2, makeString(eA._3, ":"))) :+ StringEntry(eA._4, makeString(eA._5, ":"))) :+ kx), eA._5[aW]) | |
2270 | + | } | |
2271 | + | } | |
2272 | + | ||
2273 | + | ||
2274 | + | ||
2275 | + | @Callable(gb) | |
2276 | + | func flight (ij,ik) = { | |
2277 | + | let kx = ku(gb) | |
2278 | + | if ((size(gb.payments) != 0)) | |
2270 | 2279 | then throw("No payments required") | |
2271 | 2280 | else { | |
2272 | - | let bH = toString( | |
2273 | - | let | |
2274 | - | let z = | |
2275 | - | let | |
2276 | - | let | |
2277 | - | let | |
2278 | - | if (if (!( | |
2279 | - | then | |
2281 | + | let bH = toString(gb.caller) | |
2282 | + | let gG = ii(bH, ij, ik) | |
2283 | + | let z = gG._2 | |
2284 | + | let iq = gG._4 | |
2285 | + | let kN = split(iq, "_") | |
2286 | + | let kO = (kN[bX] == "T") | |
2287 | + | if (if (!(kO)) | |
2288 | + | then jP(z) | |
2280 | 2289 | else false) | |
2281 | 2290 | then throw("flight_checkTournament") | |
2282 | 2291 | else { | |
2283 | - | let kN = if (kM) | |
2292 | + | let kI = bE(z) | |
2293 | + | let iR = valueOrElse(getString(kI), aI) | |
2294 | + | let kP = if (kO) | |
2284 | 2295 | then { | |
2285 | - | let jO = valueOrElse(getInteger(cL, bJ), 0) | |
2296 | + | let kQ = split(iR, "_") | |
2297 | + | let kR = (kQ[bX] == "T") | |
2298 | + | let jQ = valueOrElse(getInteger(cM, bJ), 0) | |
2286 | 2299 | let av = lastBlock.timestamp | |
2287 | - | let | |
2288 | - | let bR = | |
2289 | - | let bS = | |
2290 | - | if (if (if ((parseIntValue( | |
2300 | + | let jR = bP(cM, jQ) | |
2301 | + | let bR = jR[bN] | |
2302 | + | let bS = jR[bO] | |
2303 | + | if (if (if ((parseIntValue(kN[bW]) != jQ)) | |
2291 | 2304 | then true | |
2292 | 2305 | else (bS[bU] != "INPROGRESS")) | |
2293 | 2306 | then true | |
2294 | 2307 | else (av > parseIntValue(bR[bT]))) | |
2295 | 2308 | then unit | |
2296 | 2309 | else { | |
2297 | - | let kO = parseIntValue(kL[bY]) | |
2298 | - | let kP = parseIntValue(bS[bV]) | |
2299 | - | if ((kP >= kO)) | |
2300 | - | then unit | |
2301 | - | else invoke(cL, "updateDynamicData", [z, kO], nil) | |
2310 | + | let kS = parseIntValue(kN[bY]) | |
2311 | + | let kT = parseIntValue(bS[bV]) | |
2312 | + | if (if (if (!(kR)) | |
2313 | + | then true | |
2314 | + | else (parseIntValue(kQ[bW]) != jQ)) | |
2315 | + | then true | |
2316 | + | else (kS != (parseIntValue(kQ[bY]) + 1))) | |
2317 | + | then throw(((("Cheat attempt: oldLoc=" + iR) + ", newLoc=") + iq)) | |
2318 | + | else { | |
2319 | + | let kU = valueOrElse(getInteger(cM, bZ(jQ, z)), 0) | |
2320 | + | let kV = if ((kS > kU)) | |
2321 | + | then invoke(cM, "saveDuckResult", [z, kS], nil) | |
2322 | + | else unit | |
2323 | + | if ((kV == kV)) | |
2324 | + | then if ((kT >= kS)) | |
2325 | + | then unit | |
2326 | + | else invoke(cM, "updateDynamicData", [z, kS], nil) | |
2327 | + | else throw("Strict value is not equal to itself.") | |
2328 | + | } | |
2302 | 2329 | } | |
2303 | 2330 | } | |
2304 | 2331 | else unit | |
2305 | - | if ((kN == kN)) | |
2306 | - | then { | |
2307 | - | let kG = bE(z) | |
2308 | - | let iP = valueOrElse(getString(kG), aI) | |
2309 | - | if ((io == iP)) | |
2310 | - | then throw("You can't fly to the same location") | |
2311 | - | else { | |
2312 | - | let fM = E(z) | |
2313 | - | let iB = valueOrElse(getString(fM), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2314 | - | let kQ = ez(iB, gE._5) | |
2315 | - | let iD = kQ._1 | |
2316 | - | let iE = kQ._2 | |
2317 | - | $Tuple2(([StringEntry(kG, if ((gE._1 > 0)) | |
2318 | - | then io | |
2319 | - | else iP), StringEntry(fM, iD), IntegerEntry(y(z), gE._1), kv] ++ (if (iE) | |
2320 | - | then [StringEntry(K(z), "0_0_0_0_0")] | |
2321 | - | else (nil ++ jx(z, if ((gE._1 > 0)) | |
2322 | - | then T | |
2323 | - | else U)._1))), gE._3) | |
2324 | - | } | |
2325 | - | } | |
2332 | + | if ((kP == kP)) | |
2333 | + | then if ((iq == iR)) | |
2334 | + | then throw("You can't fly to the same location") | |
2335 | + | else { | |
2336 | + | let fO = E(z) | |
2337 | + | let iD = valueOrElse(getString(fO), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2338 | + | let kW = eB(iD, gG._5) | |
2339 | + | let iF = kW._1 | |
2340 | + | let iG = kW._2 | |
2341 | + | $Tuple2(([StringEntry(kI, if ((gG._1 > 0)) | |
2342 | + | then iq | |
2343 | + | else iR), StringEntry(fO, iF), IntegerEntry(y(z), gG._1), kx] ++ (if (iG) | |
2344 | + | then [StringEntry(K(z), "0_0_0_0_0")] | |
2345 | + | else (nil ++ jz(z, if ((gG._1 > 0)) | |
2346 | + | then T | |
2347 | + | else U)._1))), gG._3) | |
2348 | + | } | |
2326 | 2349 | else throw("Strict value is not equal to itself.") | |
2327 | 2350 | } | |
2328 | 2351 | } | |
2329 | 2352 | } | |
2330 | 2353 | ||
2331 | 2354 | ||
2332 | 2355 | ||
2333 | - | @Callable( | |
2334 | - | func heal ( | |
2335 | - | let | |
2336 | - | if (if (if ((0 > | |
2356 | + | @Callable(gb) | |
2357 | + | func heal (kX,kY,kZ) = { | |
2358 | + | let kx = ku(gb) | |
2359 | + | if (if (if ((0 > kX)) | |
2337 | 2360 | then true | |
2338 | - | else (0 > | |
2361 | + | else (0 > kY)) | |
2339 | 2362 | then true | |
2340 | - | else (0 > | |
2363 | + | else (0 > kZ)) | |
2341 | 2364 | then throw("Quantity cannot be negative") | |
2342 | 2365 | else { | |
2343 | - | let z = valueOrErrorMessage(getString(bC(toString( | |
2344 | - | if ( | |
2366 | + | let z = valueOrErrorMessage(getString(bC(toString(gb.caller))), "You don't have a duck staked") | |
2367 | + | if (jP(z)) | |
2345 | 2368 | then throw("heal_checkTournament") | |
2346 | 2369 | else { | |
2347 | - | let | |
2348 | - | let | |
2349 | - | let | |
2350 | - | let | |
2351 | - | if (( | |
2352 | - | then throw((("HP should be < " + toString( | |
2370 | + | let la = [kX, kY, kZ] | |
2371 | + | let iu = y(z) | |
2372 | + | let iv = ae(valueOrElse(getInteger(C(z)), 0)) | |
2373 | + | let lb = valueOrElse(getInteger(iu), iv) | |
2374 | + | if ((lb >= iv)) | |
2375 | + | then throw((("HP should be < " + toString(iv)) + " to heal")) | |
2353 | 2376 | else { | |
2354 | - | let | |
2355 | - | let | |
2356 | - | let | |
2377 | + | let he = bD(z) | |
2378 | + | let hH = hd(he) | |
2379 | + | let lc = if ((hH[bh] == "")) | |
2357 | 2380 | then nil | |
2358 | - | else split_4C( | |
2359 | - | func | |
2360 | - | let | |
2361 | - | let | |
2362 | - | then parseIntValue( | |
2381 | + | else split_4C(hH[bh], "_") | |
2382 | + | func ld (ei,cb) = { | |
2383 | + | let de = ei._2 | |
2384 | + | let gx = if ((size(lc) > de)) | |
2385 | + | then parseIntValue(lc[de]) | |
2363 | 2386 | else 0 | |
2364 | - | if ((3 > | |
2387 | + | if ((3 > de)) | |
2365 | 2388 | then { | |
2366 | - | let | |
2367 | - | if (( | |
2368 | - | then throw(((("You have only " + toString( | |
2369 | - | else $Tuple3(( | |
2389 | + | let le = la[de] | |
2390 | + | if ((le > gx)) | |
2391 | + | then throw(((("You have only " + toString(gx)) + " of ") + aL[de])) | |
2392 | + | else $Tuple3((ei._1 :+ toString((gx - le))), (de + 1), (ei._3 + (parseIntValue(split(cb, "_")[aR]) * le))) | |
2370 | 2393 | } | |
2371 | - | else $Tuple3(( | |
2394 | + | else $Tuple3((ei._1 :+ toString(gx)), (de + 1), ei._3) | |
2372 | 2395 | } | |
2373 | 2396 | ||
2374 | - | let | |
2375 | - | let | |
2376 | - | let | |
2377 | - | let | |
2378 | - | func | |
2379 | - | then | |
2380 | - | else | |
2381 | - | ||
2382 | - | func | |
2383 | - | then | |
2397 | + | let eA = { | |
2398 | + | let ek = aP | |
2399 | + | let el = size(ek) | |
2400 | + | let em = $Tuple3(nil, 0, 0) | |
2401 | + | func en (eo,ep) = if ((ep >= el)) | |
2402 | + | then eo | |
2403 | + | else ld(eo, ek[ep]) | |
2404 | + | ||
2405 | + | func eq (eo,ep) = if ((ep >= el)) | |
2406 | + | then eo | |
2384 | 2407 | else throw("List size exceeds 50") | |
2385 | 2408 | ||
2386 | - | | |
2409 | + | eq(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50) | |
2387 | 2410 | } | |
2388 | - | let | |
2389 | - | $Tuple2(([IntegerEntry( | |
2411 | + | let lf = min([iv, (lb + eA._3)]) | |
2412 | + | $Tuple2(([IntegerEntry(iu, lf), StringEntry(he, makeString_2C([hH[be], hH[bf], hH[bg], makeString(eA._1, "_")], ":")), kx] ++ jz(z, (ab * ((kX + kY) + kZ)))._1), lf) | |
2390 | 2413 | } | |
2391 | 2414 | } | |
2392 | 2415 | } | |
2393 | 2416 | } | |
2394 | 2417 | ||
2395 | 2418 | ||
2396 | 2419 | ||
2397 | - | @Callable( | |
2420 | + | @Callable(gb) | |
2398 | 2421 | func healES () = { | |
2399 | - | let | |
2400 | - | if ((size( | |
2422 | + | let kx = ku(gb) | |
2423 | + | if ((size(gb.payments) != 1)) | |
2401 | 2424 | then throw("Exactly one payment required") | |
2402 | 2425 | else { | |
2403 | - | let | |
2404 | - | if (( | |
2426 | + | let ky = value(gb.payments[0]) | |
2427 | + | if ((ky.assetId != cf)) | |
2405 | 2428 | then throw("Allowed USDT payment only!") | |
2406 | 2429 | else { | |
2407 | - | let z = valueOrErrorMessage(getString(bC(toString( | |
2408 | - | if ( | |
2430 | + | let z = valueOrErrorMessage(getString(bC(toString(gb.caller))), "You don't have a duck staked") | |
2431 | + | if (jP(z)) | |
2409 | 2432 | then throw("healES_checkTournament") | |
2410 | 2433 | else { | |
2411 | - | let | |
2412 | - | let | |
2413 | - | let | |
2414 | - | if (( | |
2434 | + | let iu = y(z) | |
2435 | + | let iv = ae(valueOrElse(getInteger(C(z)), 0)) | |
2436 | + | let lb = valueOrElse(getInteger(iu), iv) | |
2437 | + | if ((lb > 0)) | |
2415 | 2438 | then throw("HP should be 0 to call Emergency Service") | |
2416 | 2439 | else { | |
2417 | - | let | |
2418 | - | let | |
2419 | - | let | |
2440 | + | let he = bD(z) | |
2441 | + | let hH = hd(he) | |
2442 | + | let lc = if ((hH[bh] == "")) | |
2420 | 2443 | then nil | |
2421 | - | else split_4C( | |
2422 | - | let | |
2423 | - | then parseIntValue( | |
2444 | + | else split_4C(hH[bh], "_") | |
2445 | + | let lg = if ((size(lc) > 0)) | |
2446 | + | then parseIntValue(lc[0]) | |
2424 | 2447 | else 0 | |
2425 | - | let | |
2426 | - | then parseIntValue( | |
2448 | + | let lh = if ((size(lc) > 1)) | |
2449 | + | then parseIntValue(lc[1]) | |
2427 | 2450 | else 0 | |
2428 | - | let | |
2429 | - | then parseIntValue( | |
2451 | + | let li = if ((size(lc) > 2)) | |
2452 | + | then parseIntValue(lc[2]) | |
2430 | 2453 | else 0 | |
2431 | - | if (if (if (( | |
2454 | + | if (if (if ((lg > 0)) | |
2432 | 2455 | then true | |
2433 | - | else ( | |
2456 | + | else (lh > 0)) | |
2434 | 2457 | then true | |
2435 | - | else ( | |
2458 | + | else (li > 0)) | |
2436 | 2459 | then throw("You have to use own Medical Kit") | |
2437 | 2460 | else { | |
2438 | - | let | |
2439 | - | let | |
2440 | - | then split_4C(value( | |
2461 | + | let lj = getString(cJ, bI()) | |
2462 | + | let lk = if (isDefined(lj)) | |
2463 | + | then split_4C(value(lj), "_") | |
2441 | 2464 | else nil | |
2442 | - | let | |
2443 | - | then parseIntValue( | |
2465 | + | let ll = if ((size(lk) > 0)) | |
2466 | + | then parseIntValue(lk[0]) | |
2444 | 2467 | else 0 | |
2445 | - | if ((0 >= | |
2468 | + | if ((0 >= ll)) | |
2446 | 2469 | then throw("There are no Medical Kits L1 at Emergency Service storage") | |
2447 | 2470 | else { | |
2448 | - | let | |
2449 | - | let | |
2450 | - | let | |
2451 | - | let | |
2452 | - | let | |
2453 | - | if (( | |
2454 | - | then throw(("Payment attached should be " + toString( | |
2471 | + | let lf = (lb + parseIntValue(split(aP[0], "_")[aR])) | |
2472 | + | let lm = makeString([toString((ll - 1)), removeByIndex(lk, 0)], "_") | |
2473 | + | let cb = split(aP[0], "_") | |
2474 | + | let ln = ca(cb) | |
2475 | + | let lo = fraction((ln * aK), aJ, (cm * aU)) | |
2476 | + | if ((ky.amount != lo)) | |
2477 | + | then throw(("Payment attached should be " + toString(lo))) | |
2455 | 2478 | else { | |
2456 | - | let | |
2457 | - | $Tuple2(([IntegerEntry( | |
2479 | + | let eA = da(invoke(cJ, "updateEsStorage", [lm], [AttachedPayment(cf, lo)])) | |
2480 | + | $Tuple2(([IntegerEntry(iu, lf), kx] ++ jz(z, V)._1), eA) | |
2458 | 2481 | } | |
2459 | 2482 | } | |
2460 | 2483 | } | |
2461 | 2484 | } | |
2462 | 2485 | } | |
2463 | 2486 | } | |
2464 | 2487 | } | |
2465 | 2488 | } | |
2466 | 2489 | ||
2467 | 2490 | ||
2468 | 2491 | ||
2469 | - | @Callable( | |
2470 | - | func updateBackpack (z, | |
2492 | + | @Callable(gb) | |
2493 | + | func updateBackpack (z,lp) = if ((gb.caller != cJ)) | |
2471 | 2494 | then throw("permission denied") | |
2472 | - | else $Tuple2([StringEntry(bD(z), | |
2473 | - | ||
2474 | - | ||
2475 | - | ||
2476 | - | @Callable( | |
2495 | + | else $Tuple2([StringEntry(bD(z), lp)], lp) | |
2496 | + | ||
2497 | + | ||
2498 | + | ||
2499 | + | @Callable(gb) | |
2477 | 2500 | func commitForRandom () = { | |
2478 | - | let | |
2479 | - | let | |
2480 | - | let b = toString( | |
2481 | - | $Tuple2(([IntegerEntry( | |
2482 | - | } | |
2483 | - | ||
2484 | - | ||
2485 | - | ||
2486 | - | @Callable( | |
2501 | + | let kx = ku(gb) | |
2502 | + | let lq = (height + cT) | |
2503 | + | let b = toString(gb.caller) | |
2504 | + | $Tuple2(([IntegerEntry(cU(b), lq)] :+ kx), lq) | |
2505 | + | } | |
2506 | + | ||
2507 | + | ||
2508 | + | ||
2509 | + | @Callable(gb) | |
2487 | 2510 | func buySLand () = { | |
2488 | - | let | |
2489 | - | if ((size( | |
2511 | + | let kx = ku(gb) | |
2512 | + | if ((size(gb.payments) != 1)) | |
2490 | 2513 | then throw("Exactly one payment required") | |
2491 | 2514 | else { | |
2492 | - | let | |
2493 | - | if (( | |
2515 | + | let ky = value(gb.payments[0]) | |
2516 | + | if ((ky.assetId != cf)) | |
2494 | 2517 | then throw("Allowed USDT payment only!") | |
2495 | - | else if (( | |
2496 | - | then throw(("Payment attached should be " + toString( | |
2518 | + | else if ((ky.amount != dy)) | |
2519 | + | then throw(("Payment attached should be " + toString(dy))) | |
2497 | 2520 | else { | |
2498 | - | let | |
2499 | - | $Tuple2(((( | |
2521 | + | let eA = ib(gb.caller, gb.transactionId) | |
2522 | + | $Tuple2((((eA._1 :+ ScriptTransfer(cJ, ky.amount, cf)) ++ jF(toString(gb.caller), X)._1) :+ kx), eA._2._1) | |
2500 | 2523 | } | |
2501 | 2524 | } | |
2502 | 2525 | } | |
2503 | 2526 | ||
2504 | 2527 | ||
2505 | 2528 | ||
2506 | - | @Callable( | |
2507 | - | func expedition ( | |
2508 | - | let | |
2509 | - | if ((size( | |
2529 | + | @Callable(gb) | |
2530 | + | func expedition (ij,ik) = { | |
2531 | + | let kx = ku(gb) | |
2532 | + | if ((size(gb.payments) != 0)) | |
2510 | 2533 | then throw("No payments required") | |
2511 | 2534 | else { | |
2512 | - | let | |
2513 | - | let z = valueOrErrorMessage(getString(bC(toString( | |
2514 | - | if ( | |
2535 | + | let eA = iA(gb.caller, gb.transactionId, ij, ik) | |
2536 | + | let z = valueOrErrorMessage(getString(bC(toString(gb.caller))), "You don't have a duck staked") | |
2537 | + | if (jP(z)) | |
2515 | 2538 | then throw("expedition_checkTournament") | |
2516 | - | else $Tuple2((( | |
2517 | - | } | |
2518 | - | } | |
2519 | - | ||
2520 | - | ||
2521 | - | ||
2522 | - | @Callable( | |
2539 | + | else $Tuple2(((eA._1 ++ jz(z, X)._1) :+ kx), $Tuple2(eA._2, eA._3)) | |
2540 | + | } | |
2541 | + | } | |
2542 | + | ||
2543 | + | ||
2544 | + | ||
2545 | + | @Callable(gb) | |
2523 | 2546 | func upgradeInfra (O) = { | |
2524 | - | let | |
2525 | - | if ((size( | |
2547 | + | let kx = ku(gb) | |
2548 | + | if ((size(gb.payments) != 0)) | |
2526 | 2549 | then throw("No payments required") | |
2527 | 2550 | else { | |
2528 | - | let | |
2529 | - | let z = valueOrErrorMessage(getString(bC(toString( | |
2530 | - | $Tuple2((( | |
2531 | - | } | |
2532 | - | } | |
2533 | - | ||
2534 | - | ||
2535 | - | ||
2536 | - | @Callable( | |
2537 | - | func activateArtifact ( | |
2538 | - | let | |
2539 | - | if ((size( | |
2551 | + | let eA = jm(true, gb.caller, 0, O) | |
2552 | + | let z = valueOrErrorMessage(getString(bC(toString(gb.caller))), "You don't have a duck staked") | |
2553 | + | $Tuple2(((eA._1 :+ kx) ++ jz(z, fraction(Y, eA._3, cm))._1), eA._2) | |
2554 | + | } | |
2555 | + | } | |
2556 | + | ||
2557 | + | ||
2558 | + | ||
2559 | + | @Callable(gb) | |
2560 | + | func activateArtifact (lr,ls) = { | |
2561 | + | let kx = ku(gb) | |
2562 | + | if ((size(gb.payments) != 0)) | |
2540 | 2563 | then throw("No payments required") | |
2541 | 2564 | else { | |
2542 | - | let b = toString( | |
2543 | - | let | |
2544 | - | let | |
2545 | - | if (("PRESALE" == | |
2546 | - | then | |
2547 | - | else if (("ONBOARD" == | |
2548 | - | then | |
2565 | + | let b = toString(gb.caller) | |
2566 | + | let eA = { | |
2567 | + | let cg = lr | |
2568 | + | if (("PRESALE" == cg)) | |
2569 | + | then jN(b, ls) | |
2570 | + | else if (("ONBOARD" == cg)) | |
2571 | + | then jG(b) | |
2549 | 2572 | else throw("Unknown artifact") | |
2550 | 2573 | } | |
2551 | - | ( | |
2552 | - | } | |
2553 | - | } | |
2554 | - | ||
2555 | - | ||
2556 | - | ||
2557 | - | @Callable( | |
2558 | - | func mergeLands ( | |
2559 | - | let | |
2560 | - | if ((size( | |
2574 | + | (eA :+ kx) | |
2575 | + | } | |
2576 | + | } | |
2577 | + | ||
2578 | + | ||
2579 | + | ||
2580 | + | @Callable(gb) | |
2581 | + | func mergeLands (jV) = { | |
2582 | + | let kx = ku(gb) | |
2583 | + | if ((size(gb.payments) != 0)) | |
2561 | 2584 | then throw("No payments required") | |
2562 | 2585 | else { | |
2563 | - | let | |
2564 | - | $Tuple2((( | |
2565 | - | } | |
2566 | - | } | |
2567 | - | ||
2568 | - | ||
2569 | - | ||
2570 | - | @Callable( | |
2571 | - | func cargoExchange ( | |
2572 | - | let | |
2573 | - | if ((size( | |
2586 | + | let eA = kt(toString(gb.caller), jV) | |
2587 | + | $Tuple2(((eA._1 :+ kx) ++ jF(toString(gb.caller), Z)._1), eA._2) | |
2588 | + | } | |
2589 | + | } | |
2590 | + | ||
2591 | + | ||
2592 | + | ||
2593 | + | @Callable(gb) | |
2594 | + | func cargoExchange (lt,O) = { | |
2595 | + | let kx = ku(gb) | |
2596 | + | if ((size(gb.payments) != 0)) | |
2574 | 2597 | then throw("No payments required") | |
2575 | 2598 | else { | |
2576 | - | let | |
2577 | - | let b = toString( | |
2578 | - | let | |
2579 | - | let | |
2580 | - | if (!(isDefined(getInteger( | |
2581 | - | then throw(( | |
2599 | + | let hG = split_4C(lt, ":") | |
2600 | + | let b = toString(gb.originCaller) | |
2601 | + | let iU = value(assetInfo(fromBase58String(O))) | |
2602 | + | let iV = bm(O) | |
2603 | + | if (!(isDefined(getInteger(iV)))) | |
2604 | + | then throw((iU.name + " is not staked")) | |
2582 | 2605 | else { | |
2583 | - | let | |
2584 | - | if (( | |
2606 | + | let iX = valueOrErrorMessage(getString(bj(O)), (("NFT " + iU.name) + " is orphaned")) | |
2607 | + | if ((iX != b)) | |
2585 | 2608 | then throw((aA + " is not yours")) | |
2586 | 2609 | else { | |
2587 | - | let | |
2588 | - | let | |
2610 | + | let hs = (dg(split(iU.description, "_")[cO]) / cn) | |
2611 | + | let ht = valueOrElse(getInteger(bt(O)), 0) | |
2589 | 2612 | let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked") | |
2590 | - | let | |
2591 | - | let | |
2592 | - | if (( | |
2593 | - | then throw((("Duck location type is " + | |
2594 | - | else if (( | |
2613 | + | let iR = valueOrElse(getString(bE(z)), aI) | |
2614 | + | let iS = split(value(iR), "_") | |
2615 | + | if ((iS[bX] != "L")) | |
2616 | + | then throw((("Duck location type is " + iS[bX]) + ", but should be L")) | |
2617 | + | else if ((iS[bY] != O)) | |
2595 | 2618 | then throw(("Duck should be on the land " + O)) | |
2596 | 2619 | else { | |
2597 | - | let | |
2598 | - | let | |
2599 | - | let | |
2600 | - | let | |
2601 | - | let | |
2602 | - | let | |
2603 | - | let | |
2604 | - | let | |
2605 | - | [StringEntry( | |
2620 | + | let hr = bs(O) | |
2621 | + | let hi = hq(hr, hs, ht) | |
2622 | + | let he = bD(z) | |
2623 | + | let hH = hd(he) | |
2624 | + | let eA = hF(hG, hi, hH) | |
2625 | + | let hz = split(hi[aZ], "_") | |
2626 | + | let jj = (parseIntValue(hz[bb]) + eA._7) | |
2627 | + | let jk = (parseIntValue(hz[bc]) - eA._7) | |
2628 | + | [StringEntry(he, makeString_2C([hH[be], eA._4, eA._5, eA._6], ":")), StringEntry(hr, makeString_2C([hi[aV], eA._1, eA._2, eA._3, makeString([hz[ba], toString(jj), toString(jk), hz[bd]], "_")], ":")), kx] | |
2606 | 2629 | } | |
2607 | 2630 | } | |
2608 | 2631 | } | |
2609 | 2632 | } | |
2610 | 2633 | } | |
2611 | 2634 | ||
2612 | 2635 | ||
2613 | 2636 | ||
2614 | - | @Callable( | |
2615 | - | func saveWarehouse ( | |
2637 | + | @Callable(gb) | |
2638 | + | func saveWarehouse (hv,O) = if ((gb.caller != cJ)) | |
2616 | 2639 | then throw("Access denied") | |
2617 | 2640 | else { | |
2618 | - | let | |
2619 | - | let | |
2620 | - | if ((size( | |
2641 | + | let hr = bs(O) | |
2642 | + | let hw = split_4C(hv, ":") | |
2643 | + | if ((size(hw) != 5)) | |
2621 | 2644 | then throw("warehouse string should contain 4 ':' separators") | |
2622 | 2645 | else { | |
2623 | - | let | |
2624 | - | let | |
2625 | - | let | |
2626 | - | let | |
2627 | - | let | |
2628 | - | $Tuple2([StringEntry( | |
2646 | + | let lu = split(hw[aZ], "_")[ba] | |
2647 | + | let jj = hh(hw) | |
2648 | + | let lv = hf(hw[aV]) | |
2649 | + | let jk = ((lv - parseIntValue(lu)) - jj) | |
2650 | + | let lw = makeString_2C([hw[aV], hw[aW], hw[aX], hw[aY], makeString([lu, toString(jj), toString(jk), toString(lv)], "_")], ":") | |
2651 | + | $Tuple2([StringEntry(hr, lw)], lw) | |
2629 | 2652 | } | |
2630 | 2653 | } | |
2631 | 2654 | ||
2632 | 2655 | ||
2633 | 2656 | ||
2634 | - | @Callable( | |
2635 | - | func fixWarehouseFormat (O) = if (( | |
2657 | + | @Callable(gb) | |
2658 | + | func fixWarehouseFormat (O) = if ((gb.caller != cI)) | |
2636 | 2659 | then throw("Access denied") | |
2637 | 2660 | else { | |
2638 | - | let | |
2639 | - | let | |
2640 | - | let | |
2641 | - | let | |
2642 | - | let | |
2643 | - | let | |
2644 | - | let | |
2645 | - | let | |
2646 | - | let | |
2647 | - | let | |
2648 | - | $Tuple2([StringEntry( | |
2661 | + | let hr = bs(O) | |
2662 | + | let iU = value(assetInfo(fromBase58String(O))) | |
2663 | + | let hs = (dg(split(iU.description, "_")[cO]) / cn) | |
2664 | + | let ht = valueOrElse(getInteger(bt(O)), 0) | |
2665 | + | let hw = hq(hr, hs, ht) | |
2666 | + | let lu = dd(invoke(cJ, "recalcLockedVolumeREADONLY", [O, hw], nil)) | |
2667 | + | let jj = hh(hw) | |
2668 | + | let lv = hf(hw[aV]) | |
2669 | + | let jk = ((lv - lu) - jj) | |
2670 | + | let lw = makeString_2C([hw[aV], hw[aW], hw[aX], hw[aY], makeString([toString(lu), toString(jj), toString(jk), toString(lv)], "_")], ":") | |
2671 | + | $Tuple2([StringEntry(hr, lw)], lw) | |
2649 | 2672 | } | |
2650 | 2673 | ||
2651 | 2674 | ||
2652 | 2675 | ||
2653 | - | @Callable( | |
2654 | - | func fixContinentProportions ( | |
2676 | + | @Callable(gb) | |
2677 | + | func fixContinentProportions (jV) = if ((gb.caller != cI)) | |
2655 | 2678 | then throw("Access denied") | |
2656 | 2679 | else { | |
2657 | - | func | |
2658 | - | ||
2659 | - | let | |
2660 | - | let | |
2661 | - | let | |
2662 | - | let | |
2663 | - | func | |
2664 | - | then | |
2665 | - | else | |
2666 | - | ||
2667 | - | func | |
2668 | - | then | |
2680 | + | func lx (ei,ly) = (ei :+ valueOrElse(getString(cW(ly)), "0_0_0_0_0_0")) | |
2681 | + | ||
2682 | + | let fL = { | |
2683 | + | let ek = aM | |
2684 | + | let el = size(ek) | |
2685 | + | let em = nil | |
2686 | + | func en (eo,ep) = if ((ep >= el)) | |
2687 | + | then eo | |
2688 | + | else lx(eo, ek[ep]) | |
2689 | + | ||
2690 | + | func eq (eo,ep) = if ((ep >= el)) | |
2691 | + | then eo | |
2669 | 2692 | else throw("List size exceeds 5") | |
2670 | 2693 | ||
2671 | - | | |
2672 | - | } | |
2673 | - | func | |
2674 | - | let | |
2675 | - | let | |
2676 | - | let | |
2677 | - | let | |
2678 | - | let | |
2679 | - | let | |
2680 | - | let | |
2681 | - | let | |
2682 | - | let | |
2683 | - | if (("Americas" == | |
2684 | - | then [ | |
2685 | - | else if (("Europe" == | |
2686 | - | then [ | |
2687 | - | else if (("Asia" == | |
2688 | - | then [ | |
2689 | - | else if (("Africa" == | |
2690 | - | then [ | |
2691 | - | else if (("Oceania" == | |
2692 | - | then [ | |
2694 | + | eq(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5) | |
2695 | + | } | |
2696 | + | func lz (ei,O) = { | |
2697 | + | let iU = value(assetInfo(fromBase58String(O))) | |
2698 | + | let iY = split(iU.description, "_") | |
2699 | + | let hs = (dg(iY[cO]) / cn) | |
2700 | + | let ly = iY[cQ] | |
2701 | + | let fX = gd(iY[cP]) | |
2702 | + | let gF = value(indexOf(aM, ly)) | |
2703 | + | let kk = split(ei[gF], "_") | |
2704 | + | let lA = makeString(fV(kk, fX, hs, 1), "_") | |
2705 | + | let cg = ly | |
2706 | + | if (("Americas" == cg)) | |
2707 | + | then [lA, ei[1], ei[2], ei[3], ei[4]] | |
2708 | + | else if (("Europe" == cg)) | |
2709 | + | then [ei[0], lA, ei[2], ei[3], ei[4]] | |
2710 | + | else if (("Asia" == cg)) | |
2711 | + | then [ei[0], ei[1], lA, ei[3], ei[4]] | |
2712 | + | else if (("Africa" == cg)) | |
2713 | + | then [ei[0], ei[1], ei[2], lA, ei[4]] | |
2714 | + | else if (("Oceania" == cg)) | |
2715 | + | then [ei[0], ei[1], ei[2], ei[3], lA] | |
2693 | 2716 | else throw("wrong continent") | |
2694 | 2717 | } | |
2695 | 2718 | ||
2696 | - | let | |
2697 | - | let | |
2698 | - | let | |
2699 | - | let | |
2700 | - | func | |
2701 | - | then | |
2702 | - | else | |
2703 | - | ||
2704 | - | func | |
2705 | - | then | |
2719 | + | let et = { | |
2720 | + | let ek = jV | |
2721 | + | let el = size(ek) | |
2722 | + | let em = fL | |
2723 | + | func gY (eo,ep) = if ((ep >= el)) | |
2724 | + | then eo | |
2725 | + | else lz(eo, ek[ep]) | |
2726 | + | ||
2727 | + | func gZ (eo,ep) = if ((ep >= el)) | |
2728 | + | then eo | |
2706 | 2729 | else throw("List size exceeds 100") | |
2707 | 2730 | ||
2708 | - | | |
2709 | - | } | |
2710 | - | $Tuple2([StringEntry( | |
2731 | + | gZ(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(gY(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 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) | |
2732 | + | } | |
2733 | + | $Tuple2([StringEntry(cW("Americas"), et[0]), StringEntry(cW("Europe"), et[1]), StringEntry(cW("Asia"), et[2]), StringEntry(cW("Africa"), et[3]), StringEntry(cW("Oceania"), et[4])], 0) | |
2711 | 2734 | } | |
2712 | 2735 | ||
2713 | 2736 | ||
2714 | 2737 | ||
2715 | - | @Callable( | |
2716 | - | func fixStakedPieces ( | |
2738 | + | @Callable(gb) | |
2739 | + | func fixStakedPieces (cu) = if ((gb.caller != cI)) | |
2717 | 2740 | then throw("Access denied") | |
2718 | 2741 | else { | |
2719 | - | let | |
2742 | + | let ko = if ((cu == "")) | |
2720 | 2743 | then 0 | |
2721 | 2744 | else { | |
2722 | - | let | |
2723 | - | let | |
2724 | - | then split_51C(value( | |
2745 | + | let kh = getString(al, cY(cu)) | |
2746 | + | let kd = if (isDefined(kh)) | |
2747 | + | then split_51C(value(kh), "_") | |
2725 | 2748 | else nil | |
2726 | - | func | |
2727 | - | let | |
2728 | - | let | |
2729 | - | ( | |
2749 | + | func lB (ei,O) = { | |
2750 | + | let iU = value(assetInfo(fromBase58String(O))) | |
2751 | + | let dh = split(iU.description, "_")[cO] | |
2752 | + | (ei + dg(dh)) | |
2730 | 2753 | } | |
2731 | 2754 | ||
2732 | - | let | |
2733 | - | let | |
2734 | - | let | |
2735 | - | func | |
2736 | - | then | |
2737 | - | else | |
2738 | - | ||
2739 | - | func | |
2740 | - | then | |
2755 | + | let ek = kd | |
2756 | + | let el = size(ek) | |
2757 | + | let em = 0 | |
2758 | + | func en (eo,ep) = if ((ep >= el)) | |
2759 | + | then eo | |
2760 | + | else lB(eo, ek[ep]) | |
2761 | + | ||
2762 | + | func eq (eo,ep) = if ((ep >= el)) | |
2763 | + | then eo | |
2741 | 2764 | else throw("List size exceeds 100") | |
2742 | 2765 | ||
2743 | - | | |
2766 | + | eq(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 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) | |
2744 | 2767 | } | |
2745 | - | $Tuple2([IntegerEntry( | |
2768 | + | $Tuple2([IntegerEntry(cZ(cu), ko)], ko) | |
2746 | 2769 | } | |
2747 | 2770 | ||
2748 | 2771 | ||
2749 | 2772 | ||
2750 | - | @Callable( | |
2751 | - | func setCustomName (bk, | |
2752 | - | let | |
2753 | - | if ((size( | |
2773 | + | @Callable(gb) | |
2774 | + | func setCustomName (bk,kf,bo) = { | |
2775 | + | let kx = ku(gb) | |
2776 | + | if ((size(gb.payments) != 1)) | |
2754 | 2777 | then throw("Exactly one payment required") | |
2755 | 2778 | else { | |
2756 | - | let | |
2757 | - | if (( | |
2779 | + | let ky = value(gb.payments[0]) | |
2780 | + | if ((ky.assetId != cf)) | |
2758 | 2781 | then throw("Allowed USDT payment only!") | |
2759 | - | else if (( | |
2760 | - | then throw(("Payment should be " + toString( | |
2761 | - | else if (contains( | |
2762 | - | then throw(("Name should not contain '__': " + | |
2763 | - | else if ((size( | |
2764 | - | then throw(("Name too long, maxLength=" + toString( | |
2782 | + | else if ((ky.amount != du)) | |
2783 | + | then throw(("Payment should be " + toString(du))) | |
2784 | + | else if (contains(kf, "__")) | |
2785 | + | then throw(("Name should not contain '__': " + kf)) | |
2786 | + | else if ((size(kf) > dv)) | |
2787 | + | then throw(("Name too long, maxLength=" + toString(dv))) | |
2765 | 2788 | else { | |
2766 | - | let b = toString( | |
2767 | - | let | |
2768 | - | let | |
2769 | - | if (("ACCOUNT" == | |
2789 | + | let b = toString(gb.originCaller) | |
2790 | + | let lC = { | |
2791 | + | let cg = bo | |
2792 | + | if (("ACCOUNT" == cg)) | |
2770 | 2793 | then { | |
2771 | - | let | |
2772 | - | let | |
2773 | - | if (isDefined( | |
2774 | - | then throw(("Name already registered: " + | |
2794 | + | let lD = dO(kf) | |
2795 | + | let lE = getString(lD) | |
2796 | + | if (isDefined(lE)) | |
2797 | + | then throw(("Name already registered: " + kf)) | |
2775 | 2798 | else { | |
2776 | - | let | |
2777 | - | let | |
2778 | - | let | |
2779 | - | then [DeleteEntry( | |
2799 | + | let lF = bw(b) | |
2800 | + | let lG = getString(lF) | |
2801 | + | let lH = if (isDefined(lG)) | |
2802 | + | then [DeleteEntry(dO(value(lG)))] | |
2780 | 2803 | else nil | |
2781 | - | ((( | |
2804 | + | (((lH :+ StringEntry(lF, kf)) :+ StringEntry(lD, b)) ++ jF(b, W)._1) | |
2782 | 2805 | } | |
2783 | 2806 | } | |
2784 | - | else if (("LAND" == | |
2807 | + | else if (("LAND" == cg)) | |
2785 | 2808 | then { | |
2786 | - | let | |
2787 | - | let | |
2788 | - | if (!(isDefined(getInteger( | |
2789 | - | then throw(( | |
2809 | + | let iU = value(assetInfo(fromBase58String(bk))) | |
2810 | + | let iV = bm(bk) | |
2811 | + | if (!(isDefined(getInteger(iV)))) | |
2812 | + | then throw((iU.name + " is not staked")) | |
2790 | 2813 | else { | |
2791 | - | let | |
2792 | - | if (( | |
2814 | + | let iX = valueOrErrorMessage(getString(bj(bk)), (("NFT " + iU.name) + " is orphaned")) | |
2815 | + | if ((iX != b)) | |
2793 | 2816 | then throw((aA + " is not yours")) | |
2794 | 2817 | else { | |
2795 | - | let | |
2796 | - | let | |
2797 | - | if (isDefined( | |
2798 | - | then throw(("Name already registered: " + | |
2818 | + | let lD = dH(kf) | |
2819 | + | let lE = getString(lD) | |
2820 | + | if (isDefined(lE)) | |
2821 | + | then throw(("Name already registered: " + kf)) | |
2799 | 2822 | else { | |
2800 | - | let | |
2801 | - | let | |
2802 | - | let | |
2803 | - | then [DeleteEntry( | |
2823 | + | let lI = bl(bk) | |
2824 | + | let lG = getString(lI) | |
2825 | + | let lH = if (isDefined(lG)) | |
2826 | + | then [DeleteEntry(dH(value(lG)))] | |
2804 | 2827 | else nil | |
2805 | - | ((( | |
2828 | + | (((lH :+ StringEntry(lI, kf)) :+ StringEntry(lD, bk)) ++ jF(b, W)._1) | |
2806 | 2829 | } | |
2807 | 2830 | } | |
2808 | 2831 | } | |
2809 | 2832 | } | |
2810 | - | else if (("DUCK" == | |
2833 | + | else if (("DUCK" == cg)) | |
2811 | 2834 | then { | |
2812 | - | let | |
2813 | - | let | |
2814 | - | if (if (!(isDefined(getInteger( | |
2835 | + | let iU = value(assetInfo(fromBase58String(bk))) | |
2836 | + | let iV = bm(bk) | |
2837 | + | if (if (!(isDefined(getInteger(iV)))) | |
2815 | 2838 | then true | |
2816 | 2839 | else !(isDefined(getString(bC(b))))) | |
2817 | - | then throw(( | |
2840 | + | then throw((iU.name + " is not staked")) | |
2818 | 2841 | else { | |
2819 | - | let | |
2820 | - | if (( | |
2842 | + | let iX = valueOrErrorMessage(getString(bB(bk)), (("NFT " + iU.name) + " is orphaned")) | |
2843 | + | if ((iX != b)) | |
2821 | 2844 | then throw((aB + " is not yours")) | |
2822 | 2845 | else { | |
2823 | - | let | |
2824 | - | let | |
2825 | - | if (isDefined( | |
2826 | - | then throw(("Name already registered: " + | |
2846 | + | let lD = dN(kf) | |
2847 | + | let lE = getString(lD) | |
2848 | + | if (isDefined(lE)) | |
2849 | + | then throw(("Name already registered: " + kf)) | |
2827 | 2850 | else { | |
2828 | - | let | |
2829 | - | let | |
2830 | - | let | |
2831 | - | then [DeleteEntry( | |
2851 | + | let lI = bv(bk) | |
2852 | + | let lG = getString(lI) | |
2853 | + | let lH = if (isDefined(lG)) | |
2854 | + | then [DeleteEntry(dN(value(lG)))] | |
2832 | 2855 | else nil | |
2833 | - | ((( | |
2856 | + | (((lH :+ StringEntry(lI, kf)) :+ StringEntry(lD, bk)) ++ jz(bk, W)._1) | |
2834 | 2857 | } | |
2835 | 2858 | } | |
2836 | 2859 | } | |
2837 | 2860 | } | |
2838 | 2861 | else throw("Unknown entity type") | |
2839 | 2862 | } | |
2840 | - | $Tuple2((( | |
2863 | + | $Tuple2(((lC :+ ScriptTransfer(cJ, ky.amount, cf)) :+ kx), 0) | |
2841 | 2864 | } | |
2842 | 2865 | } | |
2843 | 2866 | } | |
2844 | 2867 | ||
2845 | 2868 | ||
2846 | 2869 | ||
2847 | - | @Callable( | |
2848 | - | func setReferrals ( | |
2870 | + | @Callable(gb) | |
2871 | + | func setReferrals (lJ,lK) = if ((gb.callerPublicKey != dr)) | |
2849 | 2872 | then throw("Permission denied") | |
2850 | 2873 | else { | |
2851 | - | let | |
2852 | - | if ((size( | |
2874 | + | let kx = ku(gb) | |
2875 | + | if ((size(gb.payments) != 0)) | |
2853 | 2876 | then throw("No payments required") | |
2854 | - | else if (!(isDefined(addressFromString( | |
2855 | - | then throw(("Invalid address: " + | |
2856 | - | else if (!(isDefined(addressFromString( | |
2857 | - | then throw(("Invalid address: " + | |
2877 | + | else if (!(isDefined(addressFromString(lJ)))) | |
2878 | + | then throw(("Invalid address: " + lJ)) | |
2879 | + | else if (!(isDefined(addressFromString(lK)))) | |
2880 | + | then throw(("Invalid address: " + lK)) | |
2858 | 2881 | else { | |
2859 | - | let | |
2860 | - | let | |
2861 | - | let | |
2862 | - | then split_4C(value( | |
2882 | + | let lL = dP() | |
2883 | + | let lM = getString(lL) | |
2884 | + | let lN = if (isDefined(lM)) | |
2885 | + | then split_4C(value(lM), "_") | |
2863 | 2886 | else nil | |
2864 | - | if (containsElement( | |
2865 | - | then throw(( | |
2887 | + | if (containsElement(lN, lK)) | |
2888 | + | then throw((lK + " is not newbie (already has referrals)")) | |
2866 | 2889 | else { | |
2867 | - | let | |
2868 | - | let | |
2869 | - | if (if (isDefined( | |
2870 | - | then isDefined(addressFromString(value( | |
2890 | + | let jH = bx(lK) | |
2891 | + | let jI = getString(jH) | |
2892 | + | if (if (isDefined(jI)) | |
2893 | + | then isDefined(addressFromString(value(jI))) | |
2871 | 2894 | else false) | |
2872 | - | then throw((( | |
2895 | + | then throw(((lK + " already has refBy: ") + value(jI))) | |
2873 | 2896 | else { | |
2874 | - | let | |
2875 | - | let | |
2876 | - | let | |
2877 | - | then split_4C(value( | |
2897 | + | let lO = bA(lJ) | |
2898 | + | let lP = getString(lO) | |
2899 | + | let lQ = if (isDefined(lP)) | |
2900 | + | then split_4C(value(lP), "_") | |
2878 | 2901 | else nil | |
2879 | - | if (containsElement( | |
2880 | - | then throw(((( | |
2902 | + | if (containsElement(lQ, lK)) | |
2903 | + | then throw((((lJ + " already contains ") + lK) + " within referrals")) | |
2881 | 2904 | else { | |
2882 | - | let | |
2883 | - | let | |
2884 | - | then value( | |
2885 | - | else makeString_2C(( | |
2886 | - | $Tuple2([StringEntry( | |
2905 | + | let lR = makeString_2C((lQ :+ lK), "_") | |
2906 | + | let lS = if (containsElement(lN, lJ)) | |
2907 | + | then value(lM) | |
2908 | + | else makeString_2C((lN :+ lJ), "_") | |
2909 | + | $Tuple2([StringEntry(jH, lJ), StringEntry(lO, lR), StringEntry(lL, lS), kx], 0) | |
2887 | 2910 | } | |
2888 | 2911 | } | |
2889 | 2912 | } | |
2890 | 2913 | } | |
2891 | 2914 | } | |
2892 | 2915 | ||
2893 | 2916 | ||
2894 | 2917 | ||
2895 | - | @Callable( | |
2896 | - | func distributePoints ( | |
2897 | - | let | |
2898 | - | if ((size( | |
2918 | + | @Callable(gb) | |
2919 | + | func distributePoints (lT,lU,lV,lW,lX) = { | |
2920 | + | let kx = ku(gb) | |
2921 | + | if ((size(gb.payments) != 0)) | |
2899 | 2922 | then throw("No payments required") | |
2900 | 2923 | else { | |
2901 | - | let b = toString( | |
2924 | + | let b = toString(gb.originCaller) | |
2902 | 2925 | let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked") | |
2903 | - | let | |
2904 | - | let | |
2905 | - | let | |
2906 | - | let | |
2907 | - | let | |
2908 | - | let | |
2909 | - | if (( | |
2910 | - | then throw((("There are only " + toString( | |
2926 | + | let lY = H(b) | |
2927 | + | let lZ = valueOrElse(getInteger(al, lY), 0) | |
2928 | + | let ma = D(z) | |
2929 | + | let mb = valueOrElse(getInteger(al, ma), 0) | |
2930 | + | let mc = (lZ + mb) | |
2931 | + | let md = ((((lT + lU) + lV) + lW) + lX) | |
2932 | + | if ((md > mc)) | |
2933 | + | then throw((("There are only " + toString(mc)) + " free points to distribute")) | |
2911 | 2934 | else { | |
2912 | - | let | |
2913 | - | let ao = split(valueOrElse(getString(al, | |
2914 | - | let | |
2915 | - | $Tuple2([IntegerEntry( | |
2935 | + | let me = A(z) | |
2936 | + | let ao = split(valueOrElse(getString(al, me), "0_0_0_0_0"), "_") | |
2937 | + | let mf = (lZ - md) | |
2938 | + | $Tuple2([IntegerEntry(lY, if ((0 > mf)) | |
2916 | 2939 | then 0 | |
2917 | - | else | |
2918 | - | then ( | |
2919 | - | else | |
2940 | + | else mf), IntegerEntry(ma, if ((0 > mf)) | |
2941 | + | then (mb + mf) | |
2942 | + | else mb), StringEntry(me, makeString([toString((parseIntValue(ao[j]) + lT)), toString((parseIntValue(ao[k]) + lU)), toString((parseIntValue(ao[l]) + lV)), toString((parseIntValue(ao[m]) + lW)), toString((parseIntValue(ao[n]) + lX))], "_")), kx], 0) | |
2920 | 2943 | } | |
2921 | 2944 | } | |
2922 | 2945 | } | |
2923 | 2946 | ||
2924 | 2947 | ||
2925 | 2948 | ||
2926 | - | @Callable( | |
2927 | - | func splitByGlobalWeightsREADONLY ( | |
2928 | - | ||
2929 | - | ||
2930 | - | ||
2931 | - | @Callable( | |
2932 | - | func splitByGlobalAndLocalWeightsREADONLY ( | |
2933 | - | let | |
2934 | - | $Tuple2(nil, $Tuple2( | |
2935 | - | } | |
2936 | - | ||
2937 | - | ||
2938 | - | ||
2939 | - | @Callable( | |
2940 | - | func getBackpackREADONLY (z) = $Tuple2(nil, makeString( | |
2941 | - | ||
2942 | - | ||
2943 | - | ||
2944 | - | @Callable( | |
2949 | + | @Callable(gb) | |
2950 | + | func splitByGlobalWeightsREADONLY (dZ) = $Tuple2(nil, er(dZ)) | |
2951 | + | ||
2952 | + | ||
2953 | + | ||
2954 | + | @Callable(gb) | |
2955 | + | func splitByGlobalAndLocalWeightsREADONLY (mg,mh,ge) = { | |
2956 | + | let fX = gd(ge) | |
2957 | + | $Tuple2(nil, $Tuple2(er(mg), ec(mh, fX))) | |
2958 | + | } | |
2959 | + | ||
2960 | + | ||
2961 | + | ||
2962 | + | @Callable(gb) | |
2963 | + | func getBackpackREADONLY (z) = $Tuple2(nil, makeString(hd(bD(z)), ":")) | |
2964 | + | ||
2965 | + | ||
2966 | + | ||
2967 | + | @Callable(gb) | |
2945 | 2968 | func getWarehouseREADONLY (O) = { | |
2946 | - | let | |
2947 | - | let | |
2948 | - | let | |
2949 | - | $Tuple2(nil, makeString_2C( | |
2950 | - | } | |
2951 | - | ||
2952 | - | ||
2953 | - | ||
2954 | - | @Callable( | |
2969 | + | let iU = value(assetInfo(fromBase58String(O))) | |
2970 | + | let hs = (dg(split(iU.description, "_")[cO]) / cn) | |
2971 | + | let ht = valueOrElse(getInteger(bt(O)), 0) | |
2972 | + | $Tuple2(nil, makeString_2C(hq(bs(O), hs, ht), ":")) | |
2973 | + | } | |
2974 | + | ||
2975 | + | ||
2976 | + | ||
2977 | + | @Callable(gb) | |
2955 | 2978 | func saveLastTx () = { | |
2956 | - | let | |
2957 | - | if (if (if (( | |
2958 | - | then ( | |
2979 | + | let ic = gb.caller | |
2980 | + | if (if (if ((ic != cL)) | |
2981 | + | then (ic != cJ) | |
2959 | 2982 | else false) | |
2960 | - | then ( | |
2983 | + | then (ic != cM) | |
2961 | 2984 | else false) | |
2962 | 2985 | then throw("Access denied") | |
2963 | - | else $Tuple2([ | |
2964 | - | } | |
2965 | - | ||
2966 | - | ||
2967 | - | ||
2968 | - | @Callable( | |
2969 | - | func updateDuckStats (z, | |
2986 | + | else $Tuple2([ku(gb)], 42) | |
2987 | + | } | |
2988 | + | ||
2989 | + | ||
2990 | + | ||
2991 | + | @Callable(gb) | |
2992 | + | func updateDuckStats (z,jA) = if ((gb.caller != cJ)) | |
2970 | 2993 | then throw("Access denied") | |
2971 | - | else | |
2972 | - | ||
2973 | - | ||
2974 | - | ||
2975 | - | @Callable( | |
2976 | - | func updateAccStats (b, | |
2994 | + | else jz(z, jA) | |
2995 | + | ||
2996 | + | ||
2997 | + | ||
2998 | + | @Callable(gb) | |
2999 | + | func updateAccStats (b,jA) = if ((gb.caller != cJ)) | |
2977 | 3000 | then throw("Access denied") | |
2978 | - | else | |
2979 | - | ||
2980 | - | ||
2981 | - | ||
2982 | - | @Callable( | |
2983 | - | func equipDuck ( | |
2984 | - | let | |
2985 | - | if ((size( | |
3001 | + | else jF(b, jA) | |
3002 | + | ||
3003 | + | ||
3004 | + | ||
3005 | + | @Callable(gb) | |
3006 | + | func equipDuck (mi) = { | |
3007 | + | let kx = ku(gb) | |
3008 | + | if ((size(gb.payments) != 0)) | |
2986 | 3009 | then throw("No payments required") | |
2987 | 3010 | else { | |
2988 | - | let b = toString( | |
3011 | + | let b = toString(gb.originCaller) | |
2989 | 3012 | let z = valueOrErrorMessage(getString(bC(b)), "You don't have a duck staked") | |
2990 | - | if ( | |
3013 | + | if (jP(z)) | |
2991 | 3014 | then throw("equipDuck_checkTournament") | |
2992 | 3015 | else { | |
2993 | - | let | |
2994 | - | let | |
2995 | - | let | |
2996 | - | let | |
2997 | - | let | |
2998 | - | if ((size( | |
3016 | + | let fO = E(z) | |
3017 | + | let mj = split(valueOrElse(getString(fO), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
3018 | + | let he = bD(z) | |
3019 | + | let hH = hd(he) | |
3020 | + | let iF = split(mi, "_") | |
3021 | + | if ((size(iF) != p)) | |
2999 | 3022 | then throw("Wrong equipment string") | |
3000 | 3023 | else { | |
3001 | - | let | |
3002 | - | let | |
3003 | - | let am = if (( | |
3024 | + | let fQ = fD(mj, eO(hH[bh]), true, nil) | |
3025 | + | let fR = split(iF[o], ";")[1] | |
3026 | + | let am = if ((fR == "")) | |
3004 | 3027 | then 0 | |
3005 | 3028 | else { | |
3006 | - | let | |
3007 | - | if (( | |
3029 | + | let fS = split(fR, ",")[0] | |
3030 | + | if ((fS == "")) | |
3008 | 3031 | then 0 | |
3009 | 3032 | else { | |
3010 | - | let | |
3011 | - | let | |
3012 | - | let | |
3013 | - | if (if (if (if (if (( | |
3033 | + | let fd = split(fS, ":") | |
3034 | + | let cH = fd[0] | |
3035 | + | let fT = fd[1] | |
3036 | + | if (if (if (if (if ((cH == "06")) | |
3014 | 3037 | then true | |
3015 | - | else ( | |
3038 | + | else (cH == "07")) | |
3016 | 3039 | then true | |
3017 | - | else ( | |
3018 | - | then ( | |
3040 | + | else (cH == "08")) | |
3041 | + | then (fT != "") | |
3019 | 3042 | else false) | |
3020 | - | then (parseIntValue( | |
3043 | + | then (parseIntValue(fT) > 0) | |
3021 | 3044 | else false) | |
3022 | - | then parseIntValue(split(aP[parseIntValue( | |
3045 | + | then parseIntValue(split(aP[parseIntValue(cH)], "_")[aR]) | |
3023 | 3046 | else 0 | |
3024 | 3047 | } | |
3025 | 3048 | } | |
3026 | - | let | |
3027 | - | let | |
3028 | - | let | |
3029 | - | $Tuple2([StringEntry( | |
3049 | + | let fy = ak(this, z, am, true) | |
3050 | + | let fU = fD(iF, fQ, false, fy) | |
3051 | + | let mk = eT(fU) | |
3052 | + | $Tuple2([StringEntry(fO, mi), StringEntry(he, makeString_2C([hH[be], hH[bf], hH[bg], mk], ":")), StringEntry(K(z), makeString([toString(fy[7]), toString(fy[8]), toString(fy[9]), toString(fy[10]), toString(fy[11])], "_")), kx], 0) | |
3030 | 3053 | } | |
3031 | 3054 | } | |
3032 | 3055 | } | |
3033 | 3056 | } | |
3034 | 3057 | ||
3035 | 3058 | ||
3036 | 3059 | ||
3037 | - | @Callable( | |
3038 | - | func fortificateLand (O, | |
3039 | - | let | |
3040 | - | if ((size( | |
3060 | + | @Callable(gb) | |
3061 | + | func fortificateLand (O,ml) = { | |
3062 | + | let kx = ku(gb) | |
3063 | + | if ((size(gb.payments) != 0)) | |
3041 | 3064 | then throw("No payments required") | |
3042 | 3065 | else { | |
3043 | - | let b = toString( | |
3066 | + | let b = toString(gb.originCaller) | |
3044 | 3067 | let z = valueOrElse(getString(bC(b)), "") | |
3045 | - | let | |
3046 | - | let | |
3047 | - | let | |
3048 | - | let | |
3049 | - | let | |
3050 | - | let | |
3051 | - | let | |
3052 | - | let | |
3053 | - | let | |
3054 | - | let | |
3055 | - | let | |
3056 | - | let | |
3057 | - | let | |
3058 | - | let | |
3059 | - | let | |
3060 | - | let | |
3061 | - | let | |
3062 | - | let | |
3063 | - | let | |
3064 | - | let | |
3065 | - | let | |
3066 | - | let | |
3067 | - | $Tuple2([StringEntry( | |
3068 | - | } | |
3069 | - | } | |
3070 | - | ||
3071 | - | ||
3072 | - | ||
3073 | - | @Callable( | |
3074 | - | func initDuckTourAttempt (z) = if (( | |
3068 | + | let eY = ak(this, z, 0, false) | |
3069 | + | let mm = bu(O) | |
3070 | + | let mn = split(valueOrElse(getString(mm), ":0_15:0_18:0"), "_") | |
3071 | + | let iU = value(assetInfo(fromBase58String(O))) | |
3072 | + | let hs = (dg(split(iU.description, "_")[cO]) / cn) | |
3073 | + | let ht = valueOrElse(getInteger(bt(O)), 0) | |
3074 | + | let hr = bs(O) | |
3075 | + | let hw = hq(hr, hs, ht) | |
3076 | + | let mo = split(hw[aZ], "_") | |
3077 | + | let mp = parseIntValue(mo[bb]) | |
3078 | + | let mq = parseIntValue(mo[bc]) | |
3079 | + | let mr = split(ml, "_") | |
3080 | + | let ms = fK(mn, eO(hw[aY]), mp, mq, true, nil) | |
3081 | + | let fQ = ms._1 | |
3082 | + | let mt = ms._2 | |
3083 | + | let mu = ms._3 | |
3084 | + | let mv = fK(mr, fQ, mt, mu, false, eY) | |
3085 | + | let fU = mv._1 | |
3086 | + | let mw = mv._2 | |
3087 | + | let mx = mv._3 | |
3088 | + | let mk = eT(fU) | |
3089 | + | let jy = makeString([mo[ba], toString(mw), toString(mx), mo[bd]], "_") | |
3090 | + | $Tuple2([StringEntry(mm, ml), StringEntry(hr, makeString_2C([hw[aV], hw[aW], hw[aX], mk, jy], ":")), kx], 0) | |
3091 | + | } | |
3092 | + | } | |
3093 | + | ||
3094 | + | ||
3095 | + | ||
3096 | + | @Callable(gb) | |
3097 | + | func initDuckTourAttempt (z) = if ((gb.caller != cM)) | |
3075 | 3098 | then throw("Access denied") | |
3076 | 3099 | else { | |
3077 | - | let | |
3078 | - | let | |
3079 | - | let | |
3080 | - | let | |
3081 | - | let | |
3082 | - | let | |
3083 | - | let | |
3084 | - | let | |
3085 | - | $Tuple2([ | |
3100 | + | let kx = ku(gb) | |
3101 | + | let iu = y(z) | |
3102 | + | let iv = ae(valueOrElse(getInteger(C(z)), 0)) | |
3103 | + | let kL = valueOrElse(getInteger(iu), iv) | |
3104 | + | let my = bE(z) | |
3105 | + | let iR = valueOrElse(getString(my), aI) | |
3106 | + | let jQ = valueOrElse(getInteger(cM, bJ), 0) | |
3107 | + | let mz = (toString(jQ) + "_T_0") | |
3108 | + | $Tuple2([kx, IntegerEntry(I(z), kL), IntegerEntry(iu, iv), StringEntry(J(z), iR), StringEntry(my, mz)], mz) | |
3086 | 3109 | } | |
3087 | 3110 | ||
3088 | 3111 | ||
3089 | 3112 | ||
3090 | - | @Callable( | |
3113 | + | @Callable(gb) | |
3091 | 3114 | func breakAttempt () = { | |
3092 | - | let | |
3093 | - | let z = valueOrErrorMessage(getString(bC(toString( | |
3094 | - | let | |
3095 | - | let | |
3096 | - | if ((split( | |
3115 | + | let kx = ku(gb) | |
3116 | + | let z = valueOrErrorMessage(getString(bC(toString(gb.caller))), "You don't have a duck staked") | |
3117 | + | let my = bE(z) | |
3118 | + | let iR = valueOrElse(getString(my), aI) | |
3119 | + | if ((split(iR, "_")[bX] != "T")) | |
3097 | 3120 | then throw("Your duck is not in the tournament") | |
3098 | 3121 | else { | |
3099 | - | let | |
3100 | - | let | |
3101 | - | $Tuple2([ | |
3102 | - | } | |
3103 | - | } | |
3104 | - | ||
3105 | - | ||
3106 | - | ||
3107 | - | @Callable( | |
3108 | - | func exitTournamentInternal (z) = if (( | |
3122 | + | let mA = getIntegerValue(I(z)) | |
3123 | + | let mB = getStringValue(J(z)) | |
3124 | + | $Tuple2([kx, IntegerEntry(y(z), mA), StringEntry(my, mB)], iR) | |
3125 | + | } | |
3126 | + | } | |
3127 | + | ||
3128 | + | ||
3129 | + | ||
3130 | + | @Callable(gb) | |
3131 | + | func exitTournamentInternal (z) = if ((gb.caller != this)) | |
3109 | 3132 | then throw("Access denied") | |
3110 | 3133 | else { | |
3111 | - | let | |
3112 | - | let | |
3113 | - | $Tuple2([IntegerEntry(y(z), | |
3134 | + | let mA = getIntegerValue(I(z)) | |
3135 | + | let mB = getStringValue(J(z)) | |
3136 | + | $Tuple2([IntegerEntry(y(z), mA), StringEntry(bE(z), mB)], false) | |
3114 | 3137 | } | |
3115 | 3138 | ||
3116 | 3139 | ||
3117 | 3140 | ||
3118 | - | @Callable( | |
3119 | - | func prepareRobbery ( | |
3120 | - | let | |
3121 | - | if (!(sigVerify_8Kb( | |
3141 | + | @Callable(gb) | |
3142 | + | func prepareRobbery (ij,ik) = { | |
3143 | + | let kx = ku(gb) | |
3144 | + | if (!(sigVerify_8Kb(ij, ik, dr))) | |
3122 | 3145 | then throw("signature does not match") | |
3123 | - | else if ((size( | |
3146 | + | else if ((size(gb.payments) != 1)) | |
3124 | 3147 | then throw("exactly 1 payment must be attached") | |
3125 | 3148 | else { | |
3126 | - | let | |
3127 | - | let | |
3128 | - | if (if (!(isDefined( | |
3149 | + | let ky = gb.payments[0] | |
3150 | + | let mC = ky.amount | |
3151 | + | if (if (!(isDefined(ky.assetId))) | |
3129 | 3152 | then true | |
3130 | - | else (value( | |
3153 | + | else (value(ky.assetId) != cS)) | |
3131 | 3154 | then throw("WLGOLD payments only!") | |
3132 | 3155 | else { | |
3133 | - | let | |
3134 | - | if ((size( | |
3156 | + | let eG = split(toUtf8String(ij), "|") | |
3157 | + | if ((size(eG) != 2)) | |
3135 | 3158 | then throw("Wrong message format") | |
3136 | 3159 | else { | |
3137 | - | let z = | |
3160 | + | let z = eG[0] | |
3138 | 3161 | let aw = as(this, z)._1 | |
3139 | - | if ((aw > | |
3140 | - | then throw(((("Payment " + toString( | |
3162 | + | if ((aw > mC)) | |
3163 | + | then throw(((("Payment " + toString(mC)) + " < required ") + toString(aw))) | |
3141 | 3164 | else { | |
3142 | - | let | |
3165 | + | let mD = split(eG[1], "_") | |
3143 | 3166 | let av = lastBlock.timestamp | |
3144 | 3167 | let ax = valueOrElse(getInteger(Q(z)), 0) | |
3145 | 3168 | let ay = valueOrElse(getString(R(z)), "") | |
3146 | 3169 | let az = valueOrElse(getInteger(P(ay)), 0) | |
3147 | 3170 | if (if ((ax != w)) | |
3148 | 3171 | then (az > av) | |
3149 | 3172 | else false) | |
3150 | 3173 | then throw(("You already started robbing, wait till " + toString(az))) | |
3151 | 3174 | else { | |
3152 | - | func | |
3153 | - | let | |
3154 | - | let | |
3155 | - | if (( | |
3175 | + | func mE (ei,O) = { | |
3176 | + | let mF = valueOrElse(getInteger(N(O)), 0) | |
3177 | + | let mG = valueOrElse(getInteger(P(O)), 0) | |
3178 | + | if ((mF > size(t))) | |
3156 | 3179 | then throw("Invalid state") | |
3157 | - | else if ((av > | |
3180 | + | else if ((av > mG)) | |
3158 | 3181 | then { | |
3159 | - | let | |
3160 | - | if ((0 >= | |
3161 | - | then | |
3182 | + | let mH = valueOrElse(getInteger(bm(O)), 0) | |
3183 | + | if ((0 >= mH)) | |
3184 | + | then ei | |
3162 | 3185 | else { | |
3163 | - | let | |
3164 | - | let | |
3165 | - | let | |
3166 | - | let | |
3167 | - | let | |
3168 | - | let | |
3169 | - | if ((u > | |
3170 | - | then | |
3171 | - | else ( | |
3186 | + | let fI = value(assetInfo(fromBase58String(O))) | |
3187 | + | let iY = split(fI.description, "_") | |
3188 | + | let iJ = dg(iY[cO]) | |
3189 | + | let mI = iI(O, iJ) | |
3190 | + | let gh = (av - mH) | |
3191 | + | let jb = fraction(gh, (mI * iJ), aG) | |
3192 | + | if ((u > jb)) | |
3193 | + | then ei | |
3194 | + | else (ei :+ O) | |
3172 | 3195 | } | |
3173 | 3196 | } | |
3174 | - | else | |
3197 | + | else ei | |
3175 | 3198 | } | |
3176 | 3199 | ||
3177 | - | let | |
3178 | - | let | |
3179 | - | let | |
3180 | - | let | |
3181 | - | func | |
3182 | - | then | |
3183 | - | else | |
3184 | - | ||
3185 | - | func | |
3186 | - | then | |
3200 | + | let mJ = { | |
3201 | + | let ek = mD | |
3202 | + | let el = size(ek) | |
3203 | + | let em = nil | |
3204 | + | func en (eo,ep) = if ((ep >= el)) | |
3205 | + | then eo | |
3206 | + | else mE(eo, ek[ep]) | |
3207 | + | ||
3208 | + | func eq (eo,ep) = if ((ep >= el)) | |
3209 | + | then eo | |
3187 | 3210 | else throw("List size exceeds 10") | |
3188 | 3211 | ||
3189 | - | | |
3212 | + | eq(en(en(en(en(en(en(en(en(en(en(em, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
3190 | 3213 | } | |
3191 | - | if ((size( | |
3214 | + | if ((size(mJ) == 0)) | |
3192 | 3215 | then throw("No candidates for robbery") | |
3193 | 3216 | else { | |
3194 | - | let | |
3195 | - | let O = | |
3196 | - | $Tuple2([IntegerEntry(N(O), v), IntegerEntry(P(O), (av + t[v])), IntegerEntry(Q(z), x), StringEntry(R(z), O), | |
3217 | + | let mK = dj(size(mJ), height, (ik + gb.transactionId)) | |
3218 | + | let O = mJ[mK] | |
3219 | + | $Tuple2([IntegerEntry(N(O), v), IntegerEntry(P(O), (av + t[v])), IntegerEntry(Q(z), x), StringEntry(R(z), O), kx], O) | |
3197 | 3220 | } | |
3198 | 3221 | } | |
3199 | 3222 | } | |
3200 | 3223 | } | |
3201 | 3224 | } | |
3202 | 3225 | } | |
3203 | 3226 | } | |
3204 | 3227 | ||
3205 | 3228 |
github/deemru/w8io/169f3d6 2191.32 ms ◑![]()