tx · zecEs2AB1hhbQJDeDeEX9a2A4jQDwMwanF3Xv6msvPM 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm: -0.08100000 Waves 2023.08.06 16:41 [2698802] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves
{ "type": 13, "id": "zecEs2AB1hhbQJDeDeEX9a2A4jQDwMwanF3Xv6msvPM", "fee": 8100000, "feeAssetId": null, "timestamp": 1691329280884, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "4mx1kivd8Nmoq1doQZQWjjXcREdhvmCwCWCkFFkaoYn91LSdYDhpZabV6VDfG7XynFVCkbtwdNrA6tEuP3K3FRjF" ], "script": "base64:BgK2AQgCEgMKAQgSAwoBBBIAEgMKAQgSABIDCgEIEgQKAgEIEgQKAgEIEgQKAgICEgUKAwEBARIAEgQKAggIEgASABIECgICAhIDCgEIEgQKAggIEgMKARgSBAoCCAgSBAoCCAgSAwoBCBIDCgEIEgUKAwgICBIECgIICBIHCgUBAQEBARIDCgEBEgUKAwEBCBIDCgEIEgMKAQgSABIECgIIARIECgIIARIDCgEIEgMKAQgSABIDCgEI6QEBFGtleUxhc3RBcmJUaW1lQnlVc2VyAQRhZGRyCQCsAgICEGxhc3RBcmJUaW1lVXNlcl8FBGFkZHIABlNDQUxFOACAwtcvAAx4cExldmVsU2NhbGUAgBkAD3hwTGV2ZWxSZWNpcFBvdwCgHwASbnVtUG9pbnRzT25MZXZlbFVwAAMADHJlcXVpcmVtZW50cwkAzAgCAghTdHJlbmd0aAkAzAgCAghBY2N1cmFjeQkAzAgCAglJbnRlbGxlY3QJAMwIAgIJRW5kdXJhbmNlCQDMCAICCURleHRlcml0eQkAzAgCAgVMZXZlbAkAzAgCAgZIZWFsdGgFA25pbAAMY2hhclN0cmVuZ3RoAAAADGNoYXJBY2N1cmFjeQABAA1jaGFySW50ZWxsZWN0AAIADWNoYXJFbmR1cmFuY2UAAwANY2hhckRleHRlcml0eQAEAAtOVU1TRUdNRU5UUwAGAApOVU1NQUlOQVVYAAIACE1BWFNMT1RTAAIADU1BWFBST0RJTlNMT1QAHgENa2V5RHVja0hlYWx0aAELZHVja0Fzc2V0SWQJAKwCAgILZHVja0hlYWx0aF8FC2R1Y2tBc3NldElkAQxrZXlEdWNrQ2hhcnMBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tDaGFyc18FC2R1Y2tBc3NldElkAQlrZXlEdWNrWFABC2R1Y2tBc3NldElkCQCsAgICB2R1Y2tYUF8FC2R1Y2tBc3NldElkAQxrZXlEdWNrTGV2ZWwBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tMZXZlbF8FC2R1Y2tBc3NldElkARFrZXlEdWNrRnJlZVBvaW50cwELZHVja0Fzc2V0SWQJAKwCAgIPZHVja0ZyZWVQb2ludHNfBQtkdWNrQXNzZXRJZAEQa2V5RHVja0VxdWlwbWVudAELZHVja0Fzc2V0SWQJAKwCAgIOZHVja0VxdWlwbWVudF8FC2R1Y2tBc3NldElkAQlrZXlVc2VyWFABBGFkZHIJAKwCAgIHdXNlclhQXwUEYWRkcgEMa2V5VXNlckxldmVsAQRhZGRyCQCsAgICCnVzZXJMZXZlbF8FBGFkZHIBEWtleVVzZXJGcmVlUG9pbnRzAQRhZGRyCQCsAgICD3VzZXJGcmVlUG9pbnRzXwUEYWRkcgEOa2V5U2F2ZWRIZWFsdGgBC2R1Y2tBc3NldElkCQCsAgICDHNhdmVkSGVhbHRoXwULZHVja0Fzc2V0SWQBEGtleVNhdmVkTG9jYXRpb24BC2R1Y2tBc3NldElkCQCsAgICDnNhdmVkTG9jYXRpb25fBQtkdWNrQXNzZXRJZAAHeHBDbGFpbQCQTgAPeHBTdWNjZXNzRmxpZ2h0AJBOAAx4cEZhaWxGbGlnaHQA0A8ACHhwQ2FsbEVTAKCNBgAMeHBDdXN0b21OYW1lAMCEPQAKeHBOZXdTTGFuZADAlrECAA54cFVwZ3JhZGVJbmZyYQCQTgAHeHBNZXJnZQDAhD0ACXhwT25ib2FyZADAhD0ABnhwSGVhbACQTgEJbGV2ZWxCeVhQAQJ4cAkAawMFDHhwTGV2ZWxTY2FsZQkAbAYFAnhwAAQFD3hwTGV2ZWxSZWNpcFBvdwAEAAQFBERPV04FBlNDQUxFOAEJbWF4SGVhbHRoAQVsZXZlbAkAZAIAZAUFbGV2ZWwBB2xldmVsVXACCWN1cnJMZXZlbAVuZXdYUAQIbmV3TGV2ZWwJAQlsZXZlbEJ5WFABBQVuZXdYUAkAzAgCBQhuZXdMZXZlbAkAzAgCCQBoAgUSbnVtUG9pbnRzT25MZXZlbFVwCQBlAgUIbmV3TGV2ZWwFCWN1cnJMZXZlbAUDbmlsAQxnZXREdWNrU3RhdHMCD3N0YWtpbmdDb250cmFjdAtkdWNrQXNzZXRJZAQFY2hhcnMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrQ2hhcnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wAgFfBANsdmwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQGaGVhbHRoCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAkBCW1heEhlYWx0aAEFA2x2bAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJTdHJlbmd0aAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJBY2N1cmFjeQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJJbnRlbGxlY3QJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRW5kdXJhbmNlCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckRleHRlcml0eQkAzAgCBQNsdmwJAMwIAgUGaGVhbHRoBQNuaWwACkxBTkRQUkVGSVgCBExBTkQACkRVQ0tQUkVGSVgCBERVQ0sACkFSVFBSRVNBTEUCB1BSRVNBTEUABk5VTVJFUwAGAA9EQUlMWVJFU0JZUElFQ0UAgPjSAQAJREFZTUlMTElTAIC4mSkADFdITVVMVElQTElFUgCAyK+gJQAPREVGQVVMVExPQ0FUSU9OAg9BZnJpY2FfRl9BZnJpY2EAEFJFU09VUkNFUFJJQ0VNSU4A1bUCAApFU1NFTExDT0VGAAoACXByb2RUeXBlcwkAzAgCAhBGaXJzdCBBaWQgS2l0IEwxCQDMCAICEEZpcnN0IEFpZCBLaXQgTDIJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMwkAzAgCAgtCYWNrcGFjayBMMQkAzAgCAgtCYWNrcGFjayBMMgkAzAgCAgtCYWNrcGFjayBMMwkAzAgCAg5Gb29kIFJhdGlvbiBMMQkAzAgCAg5Gb29kIFJhdGlvbiBMMgkAzAgCAg5Gb29kIFJhdGlvbiBMMwkAzAgCAgtKZXQgUGFjayBMMQkAzAgCAgtKZXQgUGFjayBMMgkAzAgCAgtKZXQgUGFjayBMMwkAzAgCAglTaGllbGQgTDEJAMwIAgIJU2hpZWxkIEwyCQDMCAICCVNoaWVsZCBMMwkAzAgCAgdNaW5lIEwxCQDMCAICB01pbmUgTDIJAMwIAgIHTWluZSBMMwkAzAgCAgdUcmFwIEwxCQDMCAICB1RyYXAgTDIJAMwIAgIHVHJhcCBMMwUDbmlsAApjb250aW5lbnRzCQDMCAICCEFtZXJpY2FzCQDMCAICBkV1cm9wZQkAzAgCAgRBc2lhCQDMCAICBkFmcmljYQkAzAgCAgdPY2VhbmlhBQNuaWwACUNPRUZGMk1BVACAreIEABBwcm9kdWN0aW9uTWF0cml4CQDMCAICJThfOF84XzE3XzE3XzQyXzEyXzBfMzBfMCwwLDAsMCwwLDAsMF8JAMwIAgIlOF84XzhfMTdfMTdfNDJfMjRfMF82MF8wLDAsNSwyLDAsMCwwXwkAzAgCAic4XzhfOF8xN18xN180Ml8zNl8wXzEyMF8wLDAsMTAsNCwwLDAsMF8JAMwIAgIpOF8xOV8xOV84XzI3XzE5XzI2XzFfMjBfMCwwLDAsMCwwLDAsMF8wMDEJAMwIAgIpOF8xOV8xOV84XzI3XzE5XzUyXzFfNDBfMCwwLDAsMCwwLDAsMF8wMDEJAMwIAgIpOF8xOV8xOV84XzI3XzE5Xzc4XzFfODBfMCwwLDAsMCwwLDAsMF8wMDEJAMwIAgIiOF84XzhfOF84XzYwXzEzXzJfMl8wLDAsMCwwLDAsMCwwXwkAzAgCAiI4XzhfOF84XzhfNjBfMjZfMl80XzAsMCwwLDAsMCwwLDBfCQDMCAICIjhfOF84XzhfOF82MF8zOV8yXzhfMCwwLDAsMCwwLDAsMF8JAMwIAgIpMzBfMzBfM18xN18xN18zXzMwXzNfMzBfMCwwLDAsMCwwLDAsMF8xMTEJAMwIAgIpMzBfMzBfM18xN18xN18zXzYwXzNfNTBfMCwwLDAsMCwwLDAsMF8xMTEJAMwIAgIpMzBfMzBfM18xN18xN18zXzkwXzNfNzBfMCwwLDAsMCwwLDAsMF8xMTEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMTFfNF8zMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8yMl80XzUwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzMzXzRfNzBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIqNF8xM18yMl80XzM1XzIyXzIzXzBfNTAsMSwwXzAsMCwwLDAsMCwwLDBfCQDMCAICKjRfMTNfMjJfNF8zNV8yMl80Nl8wXzUwLDEsMV8wLDIsNSwwLDAsMCwwXwkAzAgCAis0XzEzXzIyXzRfMzVfMjJfNjlfMF81MCwyLDFfMCw1LDEwLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV8yMF8xXzMwLDEsMV8wLDAsMCwwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfNDBfMV8zMCwxLDJfMiwxLDMsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzYwXzFfMzAsMSwzXzUsMiw4LDAsMCwwLDBfBQNuaWwACXJJZHhDb2VmZgAGABBySWR4UmVxdWlyZW1lbnRzAAkACXJJZHhTbG90cwAKAA5QUk9EVUNUUEtHU0laRQAKAAt3aElkeExldmVscwAAAAh3aElkeFJlcwABAAh3aElkeE1hdAACAAl3aElkeFByb2QAAwAJd2hJZHhMT0ZUAAQACXZvbExvY2tlZAAAAAt2b2xPY2N1cGllZAABAAd2b2xGcmVlAAIACHZvbFRvdGFsAAMACmJwSWR4TGV2ZWwAAAAIYnBJZHhSZXMAAQAIYnBJZHhNYXQAAgAJYnBJZHhQcm9kAAMBEWtleUxhc3RUeElkQnlVc2VyAQRhZGRyCQCsAgICD2xhc3RUeElkQnlVc2VyXwUEYWRkcgEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQdhc3NldElkCQCsAgICCW5mdE93bmVyXwUHYXNzZXRJZAEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIYbGFuZEN1c3RvbU5hbWVCeUFzc2V0SWRfBQdhc3NldElkARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQdhc3NldElkCQCsAgICC3N0YWtlZFRpbWVfBQdhc3NldElkARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQdhc3NldElkCQCsAgICC2luZnJhTGV2ZWxfBQdhc3NldElkASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIEdHlwZQdhc3NldElkCQC5CQIJAMwIAgINbGFuZEFydFN0YXR1cwkAzAgCBQR0eXBlCQDMCAIFB2Fzc2V0SWQFA25pbAIBXwEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMHbmZ0VHlwZQdhc3NldElkCW93bmVyQWRkcgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICIHN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXJfBQduZnRUeXBlAgFfBQdhc3NldElkAgFfBQlvd25lckFkZHIBEmtleVdhcmVob3VzZUJ5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIKd2FyZUhvdXNlXwULbGFuZEFzc2V0SWQBGmtleUR1Y2tBc3NldElkVG9DdXN0b21OYW1lAQdhc3NldElkCQCsAgICGGR1Y2tDdXN0b21OYW1lQnlBc3NldElkXwUHYXNzZXRJZAEWa2V5QWRkcmVzc1RvQ3VzdG9tTmFtZQEEYWRkcgkArAICAhhhY2NvdW50Q3VzdG9tTmFtZUJ5QWRkcl8FBGFkZHIBD2tleUFkZHJlc3NSZWZCeQEEYWRkcgkArAICAglhY2NSZWZCeV8FBGFkZHIBHGtleU9uYm9hcmRBcnRBY3RpdmF0ZWRPbkR1Y2sBC2R1Y2tBc3NldElkCQCsAgICGm9uYm9hcmRBcnRBY3RpdmF0ZWRPbkR1Y2tfBQtkdWNrQXNzZXRJZAEca2V5T25ib2FyZEFydER1Y2tBY3RpdmF0ZWRCeQEEYWRkcgkArAICAhpvbmJvYXJkQXJ0QWN0aXZhdGVkRHVja0J5XwUEYWRkcgETa2V5QWRkcmVzc1JlZmVycmFscwEEYWRkcgkArAICAg1hY2NSZWZlcnJhbHNfBQRhZGRyARBrZXlEdWNrSWRUb093bmVyAQdhc3NldElkCQCsAgICCmR1Y2tPd25lcl8FB2Fzc2V0SWQBFGtleVN0YWtlZER1Y2tCeU93bmVyAQlvd25lckFkZHIJAKwCAgISc3Rha2VkRHVja0J5T3duZXJfBQlvd25lckFkZHIBEWtleUJhY2twYWNrQnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAgliYWNrUGFja18FC2R1Y2tBc3NldElkAQ9rZXlEdWNrTG9jYXRpb24BC2R1Y2tBc3NldElkCQCsAgICDWR1Y2tMb2NhdGlvbl8FC2R1Y2tBc3NldElkAQprZXlCbG9ja2VkAAIQY29udHJhY3RzQmxvY2tlZAEVa2V5VXNlckd3bFJlbGVhc2VUaW1lAQh1c2VyQWRkcgkArAICAholcyVzX191c2VyR3dsUmVsZWFzZVRpbWVfXwUIdXNlckFkZHIBDmtleUVzV2FyZWhvdXNlAAIaZW1lcmdlbmN5V2FyZWhvdXNlUHJvZHVjdHMADWxhc3RUb3VySWRLZXkCDiVzX19sYXN0VG91cklkARVrZXlUb3VyU3RhdGljRGF0YUJ5SWQBA3RJZAkArAICAhYlcyVkX190b3VyU3RhdGljRGF0YV9fCQCkAwEFA3RJZAEWa2V5VG91ckR5bmFtaWNEYXRhQnlJZAEDdElkCQCsAgICFyVzJWRfX3RvdXJEeW5hbWljRGF0YV9fCQCkAwEFA3RJZAAJaWR4U3RhdGljAAAACmlkeER5bmFtaWMAAQELZ2V0VG91ckRhdGECDHRvdXJDb250cmFjdAN0SWQEBnN0YXRpYwkAtQkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUMdG91ckNvbnRyYWN0CQEVa2V5VG91clN0YXRpY0RhdGFCeUlkAQUDdElkCQCsAgIJAKwCAgIZRXJyb3IgcmVhZGluZyB0b3VybmFtZW50IAkApAMBBQN0SWQCBSBkYXRhAgJfXwQHZHluYW1pYwkAtQkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUMdG91ckNvbnRyYWN0CQEWa2V5VG91ckR5bmFtaWNEYXRhQnlJZAEFA3RJZAkArAICCQCsAgICGUVycm9yIHJlYWRpbmcgdG91cm5hbWVudCAJAKQDAQUDdElkAgUgZGF0YQICX18JAMwIAgUGc3RhdGljCQDMCAIFB2R5bmFtaWMFA25pbAAKdFN0YXRpY0VuZAAGAA50RHluYW1pY1N0YXR1cwABAA9sb2NJZHhDb250aW5lbnQAAAAKbG9jSWR4VHlwZQABAAhsb2NJZHhJZAACARJnZXRSZWNpcGVNYXRlcmlhbHMBBnJlY2lwZQkAaAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZyZWNpcGUFCXJJZHhDb2VmZgUJQ09FRkYyTUFUAA9LU0FMTE9XWFBMRVZFTFMHAAVjaGFpbgkAyQECCQDKAQIIBQR0aGlzBWJ5dGVzAAEAAQALdXNkdEFzc2V0SWQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDABIITaerIIAz9O0bvKju6Lk7zJgt0LXfoHlqjUI/moD/+5AwkAAAIBAVQFByRtYXRjaDABIFWx2J9yh4Lv5eNbjawFq2XemkOhLxa7BfMat4el8cUYCQACAQINVW5rbm93biBjaGFpbgAVZGVmYXVsdFJlc3RBZGRyZXNzU3RyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUFFDdXZGYnZoNExrUFVucm5VMXozam5iQTFwOW0zV05odgMJAAACAQFUBQckbWF0Y2gwAiMzTXVta0dHenRDS0FYcFdEcXhrZGRvZnFYU1VicVFrdlNKeQkAAgECDVVua25vd24gY2hhaW4AEUluZnJhVXBncmFkZUNvc3RTBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAIDIr6AlAwkAAAIBAVQFByRtYXRjaDAAgMLXLwkAAgECDVVua25vd24gY2hhaW4ADmFyYml0cmFnZURlbGF5BAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAMDPJAMJAAACAQFUBQckbWF0Y2gwAODUAwkAAgECDVVua25vd24gY2hhaW4AA1NFUAICX18ABU1VTFQ2AMCEPQAFTVVMVDgAgMLXLwAFU1NJWkUAGQAFTVNJWkUAZAAFTFNJWkUA4QEABlhMU0laRQCQAwAHWFhMU0laRQDxBAAFSVRFUjYJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUFA25pbAEPZ2V0U3RyaW5nT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFB2FkZHJlc3MFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgAAEUlkeENmZ1N0YWtpbmdEYXBwAAEAEUlkeENmZ0Vjb25vbXlEYXBwAAIAFElkeENmZ0dvdmVybmFuY2VEYXBwAAMADUlkeENmZ1dsZ0RhcHAABAAUSWR4Q2ZnVG91cm5hbWVudERhcHAABwEKa2V5UmVzdENmZwACDiVzX19yZXN0Q29uZmlnAQ5rZXlSZXN0QWRkcmVzcwACDCVzX19yZXN0QWRkcgERcmVhZFJlc3RDZmdPckZhaWwBBHJlc3QJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFBHJlc3QJAQprZXlSZXN0Q2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCB3Jlc3RDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdyZXN0Q2ZnBQNpZHgJAKwCAgIqUmVzdCBjZmcgZG9lc24ndCBjb250YWluIGFkZHJlc3MgYXQgaW5kZXggCQCkAwEFA2lkeAAMcmVzdENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ5rZXlSZXN0QWRkcmVzcwAFFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgAHcmVzdENmZwkBEXJlYWRSZXN0Q2ZnT3JGYWlsAQUMcmVzdENvbnRyYWN0AA9zdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdTdGFraW5nRGFwcAAPZWNvbm9teUNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnRWNvbm9teURhcHAAC2dvdkNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUUSWR4Q2ZnR292ZXJuYW5jZURhcHAAC3dsZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUNSWR4Q2ZnV2xnRGFwcAASdG91cm5hbWVudENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUUSWR4Q2ZnVG91cm5hbWVudERhcHAACnJlY0xhbmROdW0AAAALcmVjTGFuZFNpemUAAQALcmVjVGVycmFpbnMAAgAMcmVjQ29udGluZW50AAMAC3JhbmRvbURlbGF5AAIBCWtleUNvbW1pdAEHYWRkcmVzcwkArAICAhNmaW5pc2hCbG9ja0ZvckFkZHJfBQdhZGRyZXNzARFrZXlSZXNQcm9wb3J0aW9ucwACE3Jlc1R5cGVzUHJvcG9ydGlvbnMBFWtleVN0YWtlZExhbmRzQnlPd25lcgEJb3duZXJBZGRyCQCsAgICE3N0YWtlZExhbmRzQnlPd25lcl8FCW93bmVyQWRkcgEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEJb3duZXJBZGRyCQCsAgICFHN0YWtlZFBpZWNlc0J5T3duZXJfBQlvd25lckFkZHIBCGFzU3RyaW5nAQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgECGGZhaWwgdG8gY2FzdCBpbnRvIFN0cmluZwEFYXNJbnQBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIDSW50BAFuBQckbWF0Y2gwBQFuCQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQ9udW1QaWVjZXNCeVNpemUBCGxhbmRTaXplBAckbWF0Y2gwBQhsYW5kU2l6ZQMJAAACAgFTBQckbWF0Y2gwBQVTU0laRQMJAAACAgFNBQckbWF0Y2gwBQVNU0laRQMJAAACAgFMBQckbWF0Y2gwBQVMU0laRQMJAAACAgJYTAUHJG1hdGNoMAUGWExTSVpFAwkAAAICA1hYTAUHJG1hdGNoMAUHWFhMU0laRQkAAgECEVVua25vd24gbGFuZCBzaXplAQdpc0RpZ2l0AQFzCQEJaXNEZWZpbmVkAQkAtgkBBQFzAA1pbmN1YmF0b3JBZGRyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUEVrdFZ1eDJSaGNoU042M0RzRG80YjRtejRRcXpLU2VEdgMJAAACAQFUBQckbWF0Y2gwBQR0aGlzCQACAQINVW5rbm93biBjaGFpbgALYnJlZWRlckFkZHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQRFZ1VTQ1SDdFaDVkbXROYm5STlJTdEd3VUxBN05ZNkhiAwkAAAIBAVQFByRtYXRjaDAFBHRoaXMJAAIBAg1Vbmtub3duIGNoYWluAANwdWIBIE9T4ho/VKjWnVJOEx1GJ1W9s1PzLHvJVFSw/0PBtBQoAAhtZWRLaXRIcAkAzAgCAB4JAMwIAgA8CQDMCAIAeAUDbmlsABFGSVZFTUlOVVRFU01JTExJUwDgpxIADFJFTkFNSU5HQ09TVADAlrECAApNQVhOQU1FTEVOADIAFUluZnJhVXBncmFkZUNvc3RTVXNkdACAreIEAAxFWFBNQVRFUklBTFMEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAApt2C7asHAwkAAAIBAVQFByRtYXRjaDAAqqeBswkJAAIBAg1Vbmtub3duIGNoYWluAAdFWFBVU0RUBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAIDlmncDCQAAAgEBVAUHJG1hdGNoMACA5Zp3CQACAQINVW5rbm93biBjaGFpbgAFRklWRVgJALYCAQAFAAdUV0VOVFlYCQC2AgEAFAAIVFdFTlRZMlgJALYCAQkAaAIAFAAUAAhUV0VOVFkzWAkAtgIBCQBoAgkAaAIAFAAUABQACFRXRU5UWTRYCQC2AgEJAGgCCQBoAgkAaAIAFAAUABQAFAAIVFdFTlRZNVgJALYCAQkAaAIJAGgCCQBoAgkAaAIAFAAUABQAFAAUAA9QUkVTQUxFTlVNTEFORFMA9AMBEmtleU5leHRGcmVlTGFuZE51bQACC25leHRMYW5kTnVtARBrZXlMYW5kVG9Bc3NldElkAQdsYW5kTnVtCQCsAgICDGxhbmRUb0Fzc2V0XwUHbGFuZE51bQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBG5hbWUJAKwCAgIRbGFuZEJ5Q3VzdG9tTmFtZV8FBG5hbWUBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIHYXNzZXRJZAlvd25lckFkZHIJAKwCAgkArAICCQCsAgICHGluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcl8FB2Fzc2V0SWQCAV8FCW93bmVyQWRkcgEla2V5TGFuZEFydFN0YXR1c0J5VHlwZUFzc2V0SWRBbmRPd25lcgMEdHlwZQdhc3NldElkCW93bmVyQWRkcgkAuQkCCQDMCAICImxhbmRBcnRTdGF0dXNCeVR5cGVBc3NldElkQW5kT3duZXIJAMwIAgUEdHlwZQkAzAgCBQdhc3NldElkCQDMCAIFCW93bmVyQWRkcgUDbmlsAgFfARFrZXlMYW5kTnVtVG9Pd25lcgEHbGFuZE51bQkArAICAgpsYW5kT3duZXJfBQdsYW5kTnVtARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEEbmFtZQkArAICAhFkdWNrQnlDdXN0b21OYW1lXwUEbmFtZQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEEbmFtZQkArAICAhRhY2NvdW50QnlDdXN0b21OYW1lXwUEbmFtZQEJa2V5T2xkaWVzAAIKb2xkaWVzTGlzdAALY2xhaW1Nb2RlV2gAAAANY2xhaW1Nb2RlRHVjawABABNjbGFpbU1vZGVXaFRoZW5EdWNrAAIACGZsSGVhbHRoAAAAC2ZsVGltZXN0YW1wAAUAB2ZsQm9udXMABgALZmxQcm9kc1VzZWQABwEHbmZ0TmFtZQIHbGFuZE51bQhsYW5kU2l6ZQkArAICCQCsAgIFCkxBTkRQUkVGSVgFB2xhbmROdW0FCGxhbmRTaXplARNkaXN0cmlidXRlQnlXZWlnaHRzAgV0b3RhbAd3ZWlnaHRzBANzdW0JAGQCCQBkAgkAZAIJAGQCCQBkAgkAkQMCBQd3ZWlnaHRzAAAJAJEDAgUHd2VpZ2h0cwABCQCRAwIFB3dlaWdodHMAAgkAkQMCBQd3ZWlnaHRzAAMJAJEDAgUHd2VpZ2h0cwAECQCRAwIFB3dlaWdodHMABQMJAGcCAAAFA3N1bQkAAgECEFplcm8gd2VpZ2h0cyBzdW0EBW5vcm02CQBrAwUFdG90YWwFBU1VTFQ2BQNzdW0KAQpub3JtYWxpemVyAgNhY2MEZWxlbQkAzQgCBQNhY2MJAGsDBQRlbGVtBQVub3JtNgUFTVVMVDYKAAIkbAUHd2VpZ2h0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKbm9ybWFsaXplcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgESZ2V0TmVlZGVkTWF0ZXJpYWxzAQV0b3RhbAQFcHJvcHMJALUJAgkBBXZhbHVlAQkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgFfAwkBAiE9AgkAkAMBBQVwcm9wcwUGTlVNUkVTCQACAQIWV3JvbmcgcHJvcG9ydGlvbnMgZGF0YQQBcgkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAgkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAwkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMABAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMABQUDbmlsCQETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFBXRvdGFsBQFyARFzdWJ0cmFjdE1hdGVyaWFscwMMc2hvdWxkVXNlTWF0A2hhcwl0b3RhbE5lZWQEBG5lZWQJARJnZXROZWVkZWRNYXRlcmlhbHMBBQl0b3RhbE5lZWQKAQpzdWJ0cmFjdG9yAgNhY2MDaWR4BAZyZXN1bHQJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDaGFzBQNpZHgJAJEDAgUEbmVlZAUDaWR4AwkAZgIAAAUGcmVzdWx0CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICGE5vdCBlbm91Z2ggbWF0ZXJpYWwgaWR4PQkApAMBBQNpZHgCCywgeW91IGhhdmUgCQCRAwIFA2hhcwUDaWR4AgssIGJ1dCBuZWVkIAkApAMBCQCRAwIFBG5lZWQFA2lkeAkAzQgCBQNhY2MJAKQDAQUGcmVzdWx0AwUMc2hvdWxkVXNlTWF0CgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpzdWJ0cmFjdG9yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGBQNoYXMBEXN1YnRyYWN0RXF1aXBtZW50AgVvbGRFcQVwVXNlZAMJAAACBQVwVXNlZAIABQVvbGRFcQoBB3N1YlVzZWQCA2FjYwZpZHhBbXQEBXBhcnRzCQC1CQIFBmlkeEFtdAIBLAMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKEluY29ycmVjdCBmb3JtYXQsIHNob3VsZCBiZSBpbmRleCxhbW91bnQEA2lkeAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAADAwkAZgIAAAUDaWR4BgkAZwIFA2lkeAkAkAMBBRBwcm9kdWN0aW9uTWF0cml4CQACAQITVW5rbm93biBwcm9kdWN0IGlkeAQDYW10CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAQQHZXFQYXJ0cwkAtQkCBQNhY2MJAKwCAgkAkQMCBQVwYXJ0cwAAAgE6AwkBAiE9AgkAkAMBBQdlcVBhcnRzAAIJAAIBCQCsAgIJAKwCAgIPWW91IGRvbid0IGhhdmUgCQCRAwIFCXByb2RUeXBlcwUDaWR4AgkgZXF1aXBwZWQEA3RtcAkAkQMCBQdlcVBhcnRzAAEEBm51bUxlbgMJAQdpc0RpZ2l0AQkArwICCQCwAgIFA3RtcAABAAEAAgABBARjdXJyCQENcGFyc2VJbnRWYWx1ZQEJAK8CAgUDdG1wBQZudW1MZW4EBHRhaWwJALACAgUDdG1wBQZudW1MZW4EBm5ld0FtdAMJAGcCBQRjdXJyBQNhbXQJAGUCBQRjdXJyBQNhbXQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgINWW91IGVxdWlwcGVkIAkApAMBBQRjdXJyAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUDaWR4AhMsIGJ1dCB0cmllZCB0byB1c2UgCQCkAwEFA2FtdAkArAICCQCsAgIJAKwCAgkArAICCQCRAwIFB2VxUGFydHMAAAkAkQMCBQVwYXJ0cwAA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bnQDAwkBASEBBQppc1Bvc2l0aXZlCQECIT0CCQCxAgEJAJEDAgUFcGFydHMAAAACBwkAAgECK1Byb2R1Y3QgaWR4IHNob3VsZCBiZSAyIGRpZ2l0cywgemVybyBwYWRkZWQECnByb2R1Y3RJZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAABAVjb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEDAwkAZgIAAAUKcHJvZHVjdElkeAYJAGcCBQpwcm9kdWN0SWR4CQCQAwEFEHByb2R1Y3Rpb25NYXRyaXgJAAIBAhNVbmtub3duIHByb2R1Y3QgaWR4AwkAZgIAAAUFY291bnQJAAIBAhdDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZQMJAGYCBQVjb3VudAUNTUFYUFJPRElOU0xPVAkAAgEJAKwCAgkArAICCQCsAgICFENhbid0IHB1dCBtb3JlIHRoYW4gCQCkAwEFDU1BWFBST0RJTlNMT1QCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AwkAAAIFBWNvdW50AAAJAJQKAgUFcExpc3QHBARoZWFkCQDJAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4BARjdXJyCQCxCQEJAMkBAgkAygECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAAIBAR0YWlsCQDKAQIFBXBMaXN0CQBoAgAICQBkAgUKcHJvZHVjdElkeAABBAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4BQpwcm9kdWN0SWR4AgFfAwMJAQEhAQUKaXNQb3NpdGl2ZQkAZgIFBWNvdW50BQRjdXJyBwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglZb3UgaGF2ZSAJAKQDAQUEY3VycgIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgCEywgYnV0IHRyaWVkIHRvIHVzZSAJAKQDAQUFY291bnQECWlzQmlnSXRlbQMDCQEBIQEFCmlzUG9zaXRpdmUJARVjaGVja1N0YXRSZXF1aXJlbWVudHMCBQlkdWNrU3RhdHMJALUJAgkAkQMCBQZyZWNpcGUFEHJJZHhSZXF1aXJlbWVudHMCASwHBAZjb21wYXQJAJEDAgUGcmVjaXBlBQlySWR4U2xvdHMDCQAAAgUGY29tcGF0AgAJAAIBAhdJdGVtIGNhbm5vdCBiZSBlcXVpcHBlZAQBYwkBDXBhcnNlSW50VmFsdWUBBQZjb21wYXQEBGNTZWcJAGkCBQFjAGQDCQECIT0CBQdzZWdtZW50BQRjU2VnCQACAQIUU2VnbWVudCBpbmNvbXBhdGlibGUECGNNYWluQXV4CQBpAgkAagIFAWMAZAAKAwkBAiE9AgUHbWFpbkF1eAUIY01haW5BdXgJAAIBAhFTbG90IGluY29tcGF0aWJsZQQJY051bVNsb3RzCQBqAgUBYwAKAwMJAQIhPQIFBHNsb3QAAAkAZgIFCWNOdW1TbG90cwABBwkAAgECHkJpZyBpdGVtcyBzaG91bGQgb2NjdXB5IHNsb3QgMAkAZgIFCWNOdW1TbG90cwABBwkAlAoCCQDLAQIJAMsBAgUEaGVhZAkAmgMBCQBkAgUEY3VycgMFCmlzUG9zaXRpdmUFBWNvdW50CQEBLQEFBWNvdW50BQR0YWlsBQlpc0JpZ0l0ZW0BC3Nsb3RzR3JvdXBCBgFnBGJwSW4KaXNQb3NpdGl2ZQdzZWdtZW50B21haW5BdXgEcmVxcwMJAQIhPQIFAWcCAAQFc2xvdHMJALUJAgUBZwIBLAMJAGYCCQCQAwEFBXNsb3RzBQhNQVhTTE9UUwkAAgECEldyb25nIHNsb3RzIGZvcm1hdAQCczAJAJEDAgUFc2xvdHMAAAQCczEDCQBmAgkAkAMBBQVzbG90cwABCQCRAwIFBXNsb3RzAAECAAMDCQAAAgUCczACAAkAAAIFAnMxAgAHBQRicEluBAV0bXBTMAMJAQIhPQIFAnMwAgAJAQhhZGRQcm9kQgcFAnMwBQRicEluBQppc1Bvc2l0aXZlBQdzZWdtZW50BQdtYWluQXV4AAAFBHJlcXMJAJQKAgUEYnBJbgcDCQECIT0CBQJzMQIAAwgFBXRtcFMwAl8yCQACAQIeQmlnIGl0ZW0gYWxyZWFkeSBvY2N1cGllcyBzbG90CAkBCGFkZFByb2RCBwUCczEIBQV0bXBTMAJfMQUKaXNQb3NpdGl2ZQUHc2VnbWVudAUHbWFpbkF1eAABBQRyZXFzAl8xCAUFdG1wUzACXzEFBGJwSW4BBmRyZXNzQgQHc2Vn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AGYCCQCQAwEFBGxvZnQAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkBQp3aE9jY3VwaWVkCQC5CQIJAMwIAgkApAMBBQh3aExvY2tlZAkAzAgCCQCkAwEFA29jYwkAzAgCCQCkAwEJAGUCCQBlAgUHd2hUb3RhbAUId2hMb2NrZWQFA29jYwkAzAgCCQCkAwEFB3doVG90YWwFA25pbAIBXwkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAndoBQh3aElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAndoBQh3aElkeFJlcwILMF8wXzBfMF8wXzAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQJ3aAUId2hJZHhNYXQCAV8FBk5VTVJFUwkAkQMCBQJ3aAUId2hJZHhNYXQCCzBfMF8wXzBfMF8wCQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCBQZ3aExvZnQFA25pbAEVZ2V0V2FyZWhvdXNlU3BhY2VMZWZ0AQljdXJyZW50V2gEC29jY3VwaWVkVm9sCQEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBBQljdXJyZW50V2gED2N1cnJXaExvY2tlZFZvbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkCQBlAgkAZQIJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwULb2NjdXBpZWRWb2wFD2N1cnJXaExvY2tlZFZvbAEIdG9Wb2x1bWUCBmFtb3VudAdwa2dTaXplBARwa2dzAwkAZwIFBmFtb3VudAAACQBpAgkAZQIJAGQCBQZhbW91bnQFB3BrZ1NpemUAAQUHcGtnU2l6ZQkBAS0BCQBpAgkAZQIJAGQCCQEBLQEFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQBoAgUEcGtncwUFTVVMVDgBCW1vdmVTdHVmZgMKY2FyZ29QYXJ0cwljdXJyZW50V2gLY3VycmVudFBhY2sDCQECIT0CCQCQAwEFCmNhcmdvUGFydHMAAwkAAgECNGNhcmdvTGlzdFN0ciBzaG91bGQgY29udGFpbiBleGFjdGx5IDIgJzonIHNlcGFyYXRvcnMECHJlc1BhcnRzCQC1CQIJAJEDAgUKY2FyZ29QYXJ0cwAAAgFfBAhtYXRQYXJ0cwkAtQkCCQCRAwIFCmNhcmdvUGFydHMAAQIBXwQJcHJvZFBhcnRzAwkAAAIJAJEDAgUKY2FyZ29QYXJ0cwACAgAFA25pbAkAtQkCCQCRAwIFCmNhcmdvUGFydHMAAgIBXwMJAQIhPQIJAJADAQUIcmVzUGFydHMFBk5VTVJFUwkAAgECIEFsbCA2IHJlc291cmNlcyBzaG91bGQgYmUgcGFzc2VkAwkBAiE9AgkAkAMBBQhtYXRQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgbWF0ZXJpYWxzIHNob3VsZCBiZSBwYXNzZWQEC3doU3BhY2VMZWZ0CQEVZ2V0V2FyZWhvdXNlU3BhY2VMZWZ0AQUJY3VycmVudFdoBAljdXJyV2hSZXMJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfBAljdXJyV2hNYXQJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4TWF0AgFfBApjdXJyV2hQcm9kAwkAAAIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAAUDbmlsCQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAV8EDmN1cnJlbnRQYWNrUmVzCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBA5jdXJyZW50UGFja01hdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQPY3VycmVudFBhY2tQcm9kAwkAAAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIABQNuaWwJALUJAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgFfCgEDbXZSAgNhY2MEaXRlbQQBaQgFA2FjYwJfMQQCYW0JAQ1wYXJzZUludFZhbHVlAQUEaXRlbQQDd2hyCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJY3VycldoUmVzBQFpBANicHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5jdXJyZW50UGFja1Jl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ZW0EA3docAMJAGYCCQCQAwEFCmN1cnJXaFByb2QFAWkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpjdXJyV2hQcm9kBQFpAAAEA2JwcAMJAGYCCQCQAwEFD2N1cnJlbnRQYWNrUHJvZAUBaQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFD2N1cnJlbnRQYWNrUHJvZAUBaQAAAwkAAAIFAmFtAAAJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEFA3docAkAzQgCCAUDYWNjAl8zCQCkAwEFA2JwcAgFA2FjYwJfNAMJAGYCBQJhbQAAAwkAZgIFAmFtBQNicHAJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAFBGl0ZW0CGSBmcm9tIGJhY2twYWNrLCBidXQgb25seSAJAKQDAQUDYnBwAgogYXZhaWxhYmxlBAhkZWx0YVZvbAkAZQIJAQh0b1ZvbHVtZQIJAGQCBQN3aHAFAmFtBQ5QUk9EVUNUUEtHU0laRQkBCHRvVm9sdW1lAgUDd2hwBQ5QUk9EVUNUUEtHU0laRQkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFA3docAUCYW0JAM0IAggFA2FjYwJfMwkApAMBCQBlAgUDYnBwBQJhbQkAZAIIBQNhY2MCXzQFCGRlbHRhVm9sAwkAZgIJAQEtAQUCYW0FA3docAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAkApAMBCQEBLQEFAmFtAhogZnJvbSB3YXJlaG91c2UsIGJ1dCBvbmx5IAkApAMBBQN3aHACCiBhdmFpbGFibGUECGRlbHRhVm9sCQBlAgkBCHRvVm9sdW1lAgkAZAIFA3docAUCYW0FDlBST0RVQ1RQS0dTSVpFCQEIdG9Wb2x1bWUCBQN3aHAFDlBST0RVQ1RQS0dTSVpFCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2hwBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicHAFAmFtCQBkAggFA2FjYwJfNAUIZGVsdGFWb2wEAXADCQECIT0CCQCQAwEFCXByb2RQYXJ0cwAACgACJGwFCXByb2RQYXJ0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAAABQNuaWwFA25pbAgFAW0CXzQKAQUkZjJfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBA212UAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMl8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjJfMgIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyCQCWCgQAAAUKY3VycldoUHJvZAUPY3VycmVudFBhY2tQcm9kCAUBbQJfNAQIdm9sU2FsZG8IBQFwAl80AwkAZgIFCHZvbFNhbGRvBQt3aFNwYWNlTGVmdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIVQXR0ZW1wdCB0byBwdXQgdG90YWwgCQCkAwEFCHZvbFNhbGRvAhEgc3R1ZmYsIGJ1dCBvbmx5IAkApAMBBQt3aFNwYWNlTGVmdAIVIHdhcmVob3VzZSBzcGFjZSBsZWZ0CQCZCgcJALkJAggFAXICXzICAV8JALkJAggFAW0CXzICAV8JALkJAggFAXACXzICAV8JALkJAggFAXICXzMCAV8JALkJAggFAW0CXzMCAV8JALkJAggFAXACXzMCAV8FCHZvbFNhbGRvARJleHBlZGl0aW9uSW50ZXJuYWwCBmNhbGxlcgR0eElkBAh1c2VyQWRkcgkApQgBBQZjYWxsZXIEBmJpZ051bQkBA2FicwEJAJ4DAQUEdHhJZAQHZnJlZU51bQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFD1BSRVNBTEVOVU1MQU5EUwABBAdsYW5kTnVtCQCkAwEFB2ZyZWVOdW0EDGNvbnRpbmVudElkeAkAoAMBCQC7AgIFBmJpZ051bQUFRklWRVgECHRlcnJhaW5zCQELZ2VuVGVycmFpbnMCBQZiaWdOdW0FDGNvbnRpbmVudElkeAQJY29udGluZW50CQCRAwIFCmNvbnRpbmVudHMFDGNvbnRpbmVudElkeAQFaXNzdWUJAMIIBQkBB25mdE5hbWUCBQdsYW5kTnVtAgFTCQC5CQIJAMwIAgUHbGFuZE51bQkAzAgCAgFTCQDMCAIFCHRlcnJhaW5zCQDMCAIFCWNvbnRpbmVudAUDbmlsAgFfAAEAAAcEB2Fzc2V0SWQJALgIAQUFaXNzdWUEAmlkCQDYBAEFB2Fzc2V0SWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQdmcmVlTnVtAAEJAMwIAgUFaXNzdWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleUxhbmRUb0Fzc2V0SWQBBQdsYW5kTnVtBQJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUCaWQFCHVzZXJBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0FCHVzZXJBZGRyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFAmlkAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQJpZAUIdXNlckFkZHIAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIAAQUHYXNzZXRJZAUDbmlsCQCUCgIFAmlkBQljb250aW5lbnQBDGZsaWdodENvbW1vbgMIdXNlckFkZHIHbWVzc2FnZQNzaWcDCQEBIQEJAMQTAwUHbWVzc2FnZQUDc2lnBQNwdWIJAAIBAhhzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gEBXBhcnRzCQC1CQIJALAJAQUHbWVzc2FnZQIBOwQJZmxpZ2h0TG9nCQC1CQIJAJEDAgUFcGFydHMAAAIBfAQCaHAJALUJAgkAkQMCBQlmbGlnaHRMb2cFCGZsSGVhbHRoAgFfBAVjdXJIUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmhwAAAEBW5ld0hQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAQQLbmV3TG9jVHhWZXIJALUJAgkAkQMCBQVwYXJ0cwABAgE6BAtuZXdMb2NhdGlvbgkAkQMCBQtuZXdMb2NUeFZlcgAABAR0aW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJZmxpZ2h0TG9nBQtmbFRpbWVzdGFtcAMDCQBmAgUEdGltZQkAZAIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBRFGSVZFTUlOVVRFU01JTExJUwYJAGYCCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBQR0aW1lCQACAQkArAICCQCsAgIJAKwCAgIcc2lnbmF0dXJlIG91dGRhdGVkOiBsb2dUaW1lPQkApAMBBQR0aW1lAgksIGJjVGltZT0JAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAECXR4RnJvbU1zZwkAkQMCBQtuZXdMb2NUeFZlcgABBAZsYXN0VHgJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBEWtleUxhc3RUeElkQnlVc2VyAQUIdXNlckFkZHICAAMJAQIhPQIFBmxhc3RUeAUJdHhGcm9tTXNnCQACAQkArAICCQCsAgIJAKwCAgIeVHggaWRzIGRvbid0IG1hdGNoISBJbiBzdGF0ZTogBQZsYXN0VHgCCiwgaW4gbXNnOiAFCXR4RnJvbU1zZwQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQh1c2VyQWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAEDG9sZEZyb21TdGF0ZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkBAiE9AgUMb2xkRnJvbVN0YXRlBQVjdXJIUAkAAgEJAKwCAgkArAICCQCsAgICCm9sZEhlYWx0aD0JAKQDAQUMb2xkRnJvbVN0YXRlAi8gZnJvbSBzdGF0ZSBkb2VzIG5vdCBtYXRjaCBvbmUgZnJvbSBmbGlnaHQgbG9nPQkApAMBBQVjdXJIUAMJAGcCAAAFBWN1ckhQCQACAQIeWW91IGNhbid0IGZseSB3aXRoIHplcm8gaGVhbHRoBAVib251cwMJAGYCCQCQAwEFCWZsaWdodExvZwUHZmxCb251cwkAkQMCBQlmbGlnaHRMb2cFB2ZsQm9udXMCAAQIcHJvZFVzZWQDCQBmAgkAkAMBBQlmbGlnaHRMb2cFC2ZsUHJvZHNVc2VkCQCRAwIFCWZsaWdodExvZwULZmxQcm9kc1VzZWQCAAQKc2VudEFtb3VudAMDCQBmAgUFbmV3SFAAAAkAAAIFBWJvbnVzAgEkBwkBBWFzSW50AQkA/AcEBQxyZXN0Q29udHJhY3QCDXNlbmRVc2R0UHJpemUJAMwIAgUIdXNlckFkZHIFA25pbAUDbmlsAAAJAJcKBQUFbmV3SFAFC2R1Y2tBc3NldElkBQpzZW50QW1vdW50BQtuZXdMb2NhdGlvbgUIcHJvZFVzZWQBEGV4cGVkaXRpb25Db21tb24EBmNhbGxlcgR0eElkB21lc3NhZ2UDc2lnBAh1c2VyQWRkcgkApQgBBQZjYWxsZXIEAWYJAQxmbGlnaHRDb21tb24DBQh1c2VyQWRkcgUHbWVzc2FnZQUDc2lnBAtkdWNrQXNzZXRJZAgFAWYCXzIECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW1MaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwYFBW1MaXN0BQxFWFBNQVRFUklBTFMCAV8EBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAljdXJyZW50RXEJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssBAVuZXdFcQkBEXN1YnRyYWN0RXF1aXBtZW50AgUJY3VycmVudEVxCAUBZgJfNQMJAGcCAAAIBQFmAl8xCQCVCgMJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAAACQDMCAIJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQVuZXdFcQUDbmlsAgAAAAQBZQkBEmV4cGVkaXRpb25JbnRlcm5hbAIFBmNhbGxlcgUEdHhJZAQCaWQICAUBZQJfMgJfMQkAlQoDCQDNCAIJAM0IAgkAzQgCCQDNCAIIBQFlAl8xCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQJALkJAgkAzAgCCAgFAWUCXzICXzIJAMwIAgIBTAkAzAgCBQJpZAUDbmlsAgFfCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoCAUBZgJfMQkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxCQELU3RyaW5nRW50cnkCBQVicEtleQkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6BQJpZAgFAWYCXzMBDGFwcGx5Qm9udXNlcwILbGFuZEFzc2V0SWQGcGllY2VzBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQJYXJ0UGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAAAEBGFkZDYJAGkCBQppbmZyYUxldmVsAAYEBGFkZDcJAGkCBQppbmZyYUxldmVsAAcJAGQCCQBkAgUPREFJTFlSRVNCWVBJRUNFCQBrAwUPREFJTFlSRVNCWVBJRUNFCQBkAgkAZAIFCmluZnJhTGV2ZWwFBGFkZDYJAGgCAAIFBGFkZDcABQkAawMFD0RBSUxZUkVTQllQSUVDRQUJYXJ0UGllY2VzCQBoAgUGcGllY2VzAAUBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwRhZGRyCWNsYWltTW9kZQ1sYW5kQXNzZXRJZEluBA0kdDAyOTkzMTMwNDcwAwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAJQKAgUNbGFuZEFzc2V0SWRJbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAgAEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04EA2xvYwkAtQkCCQEFdmFsdWUBBQtjdXJMb2NhdGlvbgIBXwMJAQIhPQIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFMCQACAQkArAICCQCsAgICFkR1Y2sgbG9jYXRpb24gdHlwZSBpcyAJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAhEsIGJ1dCBzaG91bGQgYmUgTAkAlAoCCQCRAwIFA2xvYwUIbG9jSWR4SWQFC2R1Y2tBc3NldElkBAtsYW5kQXNzZXRJZAgFDSR0MDI5OTMxMzA0NzACXzEEBmR1Y2tJZAgFDSR0MDI5OTMxMzA0NzACXzIEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQECXNhdmVkVGltZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFB3RpbWVLZXkJAKwCAgkArAICAgVMYW5kIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8JAJYKBAUGZHVja0lkBQtsYW5kQXNzZXRJZAUBZAUJc2F2ZWRUaW1lARBjbGFpbVJlc0ludGVybmFsBARhZGRyBmFtb3VudAljbGFpbU1vZGUNbGFuZEFzc2V0SWRJbgMJAGYCAAAFBmFtb3VudAkAAgECD05lZ2F0aXZlIGFtb3VudAQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUJY2xhaW1Nb2RlBQ1sYW5kQXNzZXRJZEluBAhsYW5kU2l6ZQkAkQMCCAUBYwJfMwULcmVjTGFuZFNpemUEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCCAUBYwJfMwULcmVjVGVycmFpbnMECWRlbHRhVGltZQkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wCAUBYwJfNAMJAGYCAAAFCWRlbHRhVGltZQkAAgEJAKwCAgkArAICCQCsAgICJlNhdmVkIHRpbWVzdGFtcCBpcyBpbiBmdXR1cmUsIHNhdmVkID0gCQCkAwEIBQFjAl80AgwsIGN1cnJlbnQgPSAJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEFCGxhbmRTaXplBBZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQEMYXBwbHlCb251c2VzAggFAWMCXzIFBnBpZWNlcwQIYXZhaWxSZXMJAGsDBQlkZWx0YVRpbWUJAGgCBRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBQZwaWVjZXMFCURBWU1JTExJUwMJAGYCBQZhbW91bnQFCGF2YWlsUmVzCQACAQkArAICCQCsAgIJAKwCAgIiTm90IGVub3VnaCByZXNvdXJjZXMsIGF2YWlsYWJsZSA9IAkApAMBBQhhdmFpbFJlcwIOLCByZXF1ZXN0ZWQgPSAJAKQDAQUGYW1vdW50BAxuZXdEZWx0YVRpbWUJAGsDCQBlAgUIYXZhaWxSZXMFBmFtb3VudAUJREFZTUlMTElTCQBoAgUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQUGcGllY2VzBAxuZXdUaW1lc3RhbXAJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUMbmV3RGVsdGFUaW1lBAlsYW5kSW5kZXgJAGkCBQZwaWVjZXMFBVNTSVpFBApyZXNUb0NsYWltCQEJdmlydENsYWltBAUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQgFAWMCXzIECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBCAUBYwJfMgAABAljdXJyZW50V2gJAQxnZXRXYXJlaG91c2UDBQV3aEtleQUJbGFuZEluZGV4BQppbmZyYUxldmVsBARsb2Z0CQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQCAV8EC3doU3BhY2VMZWZ0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQMDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAZgIFBmFtb3VudAULd2hTcGFjZUxlZnQHCQACAQkArAICCQCsAgICBU9ubHkgCQCkAwEFC3doU3BhY2VMZWZ0Ahggc3BhY2UgbGVmdCBpbiB3YXJlaG91c2UEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBCAUBYwJfMQQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BA5jdXJyZW50UGFja1JlcwkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwIBXwQMY3VycmVudFdoUmVzCQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwIBXwQNJHQwMzI4NDQzMzcxNQMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQCWCgQJAQZhZGRSZXMFBQxjdXJyZW50V2hSZXMFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAgFCnJlc1RvQ2xhaW0CXzIJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQgFCnJlc1RvQ2xhaW0CXzIDCQAAAgUJY2xhaW1Nb2RlBQ1jbGFpbU1vZGVEdWNrCQCWCgQJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwkBBmFkZFJlcwUFDmN1cnJlbnRQYWNrUmVzBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQQFZGlzdHIJAQ1kaXN0cmlidXRlUmVzBAUMY3VycmVudFdoUmVzBQ5jdXJyZW50UGFja1JlcwUKcmVzVG9DbGFpbQULd2hTcGFjZUxlZnQEBHdoQW0JAJcDAQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQkAzAgCCAUKcmVzVG9DbGFpbQJfMgUDbmlsCQCWCgQIBQVkaXN0cgJfMQgFBWRpc3RyAl8yCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkBQR3aEFtCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUFBHdoQW0EBXdoUmVzCAUNJHQwMzI4NDQzMzcxNQJfMQQFYnBSZXMIBQ0kdDAzMjg0NDMzNzE1Al8yBAVsb2Z0TwgFDSR0MDMyODQ0MzM3MTUCXzMEBWxvZnRGCAUNJHQwMzI4NDQzMzcxNQJfNAkAlwoFCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEIBQFjAl8yBQxuZXdUaW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAgFAWMCXzIFBGFkZHIFDG5ld1RpbWVzdGFtcAUDbmlsBQVicEtleQkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIFBWJwUmVzCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsBQV3aEtleQkAzAgCCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMJAMwIAgUFd2hSZXMJAMwIAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4TWF0CQDMCAIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QJAMwIAgkAuQkCCQDMCAIJAJEDAgUEbG9mdAUJdm9sTG9ja2VkCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCRAwIFBGxvZnQFCHZvbFRvdGFsBQNuaWwCAV8FA25pbAEIY2xhaW1BbGwEBGFkZHILbGFuZEFzc2V0SWQGcGllY2VzCWNsYWltTW9kZQQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQEFdmFsdWUBCQCfCAEFB3RpbWVLZXkECGF2YWlsUmVzCQBoAgkAawMJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUJc2F2ZWRUaW1lCQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwUJREFZTUlMTElTBQZwaWVjZXMJARBjbGFpbVJlc0ludGVybmFsBAUEYWRkcgUIYXZhaWxSZXMFCWNsYWltTW9kZQULbGFuZEFzc2V0SWQBDXVwSW5mcmFDb21tb24EDHNob3VsZFVzZU1hdAZjYWxsZXINcGF5bWVudEFtb3VudAtsYW5kQXNzZXRJZAQEYWRkcgkApQgBBQZjYWxsZXIEAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFE2NsYWltTW9kZVdoVGhlbkR1Y2sFC2xhbmRBc3NldElkBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQIaW5mcmFLZXkJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQgFAWMCXzIECGN1ckxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEFCGluZnJhS2V5AAADCQBnAgUIY3VyTGV2ZWwAAwkAAgECJkN1cnJlbnRseSBtYXggaW5mcmFzdHJ1Y3R1cmUgbGV2ZWwgPSAzBAhuZXdMZXZlbAkAZAIFCGN1ckxldmVsAAEEBGNvc3QJAGsDBRVJbmZyYVVwZ3JhZGVDb3N0U1VzZHQJAGgCBQZwaWVjZXMFCG5ld0xldmVsBQVTU0laRQMDCQEBIQEFDHNob3VsZFVzZU1hdAkBAiE9AgUNcGF5bWVudEFtb3VudAUEY29zdAcJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQRjb3N0BAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQgFAWMCXzEEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbUxpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8EB21hdFVzZWQJAGsDBRFJbmZyYVVwZ3JhZGVDb3N0UwkAaAIFBnBpZWNlcwUIbmV3TGV2ZWwFBVNTSVpFBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwUMc2hvdWxkVXNlTWF0BQVtTGlzdAUHbWF0VXNlZAIBXwQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIIBQFjAl8yBQZwaWVjZXMFE2NsYWltTW9kZVdoVGhlbkR1Y2sEBndoRGF0YQgFC2NsYWltUmVzdWx0Al81BAZvbGRWb2wJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUGd2hEYXRhBQt3aElkeExldmVscwQKbmV3Vm9sRGF0YQkAuQkCCQDMCAIJAJEDAgkAtQkCCQCRAwIFBndoRGF0YQULd2hJZHhMZXZlbHMCAV8AAAkAzAgCCQCkAwEFCG5ld0xldmVsBQNuaWwCAV8EBm5ld1ZvbAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQUKbmV3Vm9sRGF0YQQEbG9mdAkAtQkCCQCRAwIFBndoRGF0YQUJd2hJZHhMT0ZUAgFfBApuZXdMb2Z0U3RyCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAkAzAgCCQCkAwEJAGUCCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUFBm5ld1ZvbAUGb2xkVm9sCQDMCAIJAKQDAQUGbmV3Vm9sBQNuaWwCAV8JAJUKAwkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQhpbmZyYUtleQUIbmV3TGV2ZWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICCAUBYwJfMgUEYWRkcgUIbmV3TGV2ZWwJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAggFC2NsYWltUmVzdWx0Al8zBQhicElkeFJlcwkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al80CQC5CQIJAMwIAgUKbmV3Vm9sRGF0YQkAzAgCCQCRAwIFBndoRGF0YQUId2hJZHhSZXMJAMwIAgkAkQMCBQZ3aERhdGEFCHdoSWR4TWF0CQDMCAIJAJEDAgUGd2hEYXRhBQl3aElkeFByb2QJAMwIAgUKbmV3TG9mdFN0cgUDbmlsAgE6BQNuaWwIBQtjbGFpbVJlc3VsdAJfMQUIbmV3TGV2ZWwFB21hdFVzZWQBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgtkdWNrQXNzZXRJZAdkZWx0YVhQAwkBASEBBQ9LU0FMTE9XWFBMRVZFTFMJAJQKAgUDbmlsAAAEBmx2bEtleQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkBAV4cEtleQkBCWtleUR1Y2tYUAEFC2R1Y2tBc3NldElkBAJ4cAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QFBXhwS2V5AAAEBW5ld1hQCQBkAgUCeHAFB2RlbHRhWFAECWx2bFBvaW50cwkBB2xldmVsVXACCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAUGbHZsS2V5AAAFBW5ld1hQBAlrZXlQb2ludHMJARFrZXlEdWNrRnJlZVBvaW50cwEFC2R1Y2tBc3NldElkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFBmx2bEtleQkAkQMCBQlsdmxQb2ludHMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUFeHBLZXkFBW5ld1hQCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlQb2ludHMJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleVBvaW50cwAACQCRAwIFCWx2bFBvaW50cwABBQNuaWwFBW5ld1hQARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgRhZGRyB2RlbHRhWFADCQEBIQEFD0tTQUxMT1dYUExFVkVMUwkAlAoCBQNuaWwAAAQGbHZsS2V5CQEMa2V5VXNlckxldmVsAQUEYWRkcgQFeHBLZXkJAQlrZXlVc2VyWFABBQRhZGRyBAJ4cAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QFBXhwS2V5AAAEBW5ld1hQCQBkAgUCeHAFB2RlbHRhWFAECWx2bFBvaW50cwkBB2xldmVsVXACCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAUGbHZsS2V5AAAFBW5ld1hQBAlrZXlQb2ludHMJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUGbHZsS2V5CQCRAwIFCWx2bFBvaW50cwAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQV4cEtleQUFbmV3WFAJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleVBvaW50cwkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5UG9pbnRzAAAJAJEDAgUJbHZsUG9pbnRzAAEFA25pbAUFbmV3WFABEmFjdGl2YXRlT25ib2FyZEFydAEEYWRkcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAhyZWZCeUtleQkBD2tleUFkZHJlc3NSZWZCeQEFBGFkZHIEBXJlZkJ5CQCiCAEFCHJlZkJ5S2V5AwkBASEBCQEJaXNEZWZpbmVkAQUFcmVmQnkJAAIBAilZb3UgYXJlIG5vdCBlbGlnaWJsZSBmb3IgT05CT0FSRCBhcnRpZmFjdAQGYXJ0S2V5CQEca2V5T25ib2FyZEFydER1Y2tBY3RpdmF0ZWRCeQEFBGFkZHIEB2FydER1Y2sJAKIIAQUGYXJ0S2V5AwkBCWlzRGVmaW5lZAEFB2FydER1Y2sJAAIBCQCsAgICL1lvdSBhbHJlYWR5IHVzZWQgeW91ciBPTkJPQVJEIGFydGlmYWN0IG9uIGR1Y2sgCQEFdmFsdWUBBQdhcnREdWNrBBBkdWNrQWN0aXZhdG9yS2V5CQEca2V5T25ib2FyZEFydEFjdGl2YXRlZE9uRHVjawEFC2R1Y2tBc3NldElkBA1kdWNrQWN0aXZhdG9yCQCiCAEFEGR1Y2tBY3RpdmF0b3JLZXkDCQEJaXNEZWZpbmVkAQUNZHVja0FjdGl2YXRvcgkAAgEJAKwCAgkArAICCQCsAgICCVRoZSBkdWNrIAULZHVja0Fzc2V0SWQCNCBhbHJlYWR5IGdvdCBwb2ludHMgZnJvbSBPTkJPQVJEIGFydGlmYWN0IGZyb20gdXNlciAJAQV2YWx1ZQEFDWR1Y2tBY3RpdmF0b3IJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZhcnRLZXkFC2R1Y2tBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIFEGR1Y2tBY3RpdmF0b3JLZXkFBGFkZHIFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQl4cE9uYm9hcmQCXzEBEmFjdGl2YXRlUHJlc2FsZUFydAIEYWRkcg1sYW5kQXNzZXRJZEluBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBRNjbGFpbU1vZGVXaFRoZW5EdWNrBQ1sYW5kQXNzZXRJZEluBAtsYW5kQXNzZXRJZAgFAWMCXzIEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBA1hY3RpdmF0aW9uS2V5CQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAMJAGYCCQELdmFsdWVPckVsc2UCCQCfCAEFDWFjdGl2YXRpb25LZXkAAAAACQACAQIlUHJlc2FsZSBhcnRpZmFjdCBpcyBhbHJlYWR5IGFjdGl2YXRlZAMJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAggFAWMCXzMFCnJlY0xhbmROdW0FD1BSRVNBTEVOVU1MQU5EUwkAAgEJAKwCAgkArAICCQCsAgIFCkxBTkRQUkVGSVgCASAFC2xhbmRBc3NldElkAiUgaXMgbm90IGVsaWdpYmxlIGZvciBwcmVzYWxlIGFydGlmYWN0BAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcgULbGFuZEFzc2V0SWQFBnBpZWNlcwUTY2xhaW1Nb2RlV2hUaGVuRHVjawkAzQgCCQDNCAIJAM0IAgkAzQgCCAULY2xhaW1SZXN1bHQCXzEJAQxJbnRlZ2VyRW50cnkCBQ1hY3RpdmF0aW9uS2V5BQZwaWVjZXMJAQxJbnRlZ2VyRW50cnkCCQEla2V5TGFuZEFydFN0YXR1c0J5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkBQRhZGRyBQZwaWVjZXMJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfMgkAuQkCCAULY2xhaW1SZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfNAkAuQkCCAULY2xhaW1SZXN1bHQCXzUCAToBDW1lcmdlSW50ZXJuYWwGC25ld0xhbmRTaXplCG5ld0xldmVsB2Zvcm11bGEEYWRkcgxsYW5kQXNzZXRJZHMHbmVlZE1hdAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkCgEKY2hlY2tNZXJnZQIDYWNjC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQd0aW1lS2V5CQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8ECWNvbnRpbmVudAkAkQMCBQFkBQxyZWNDb250aW5lbnQDAwkBAiE9AggFA2FjYwJfMwIACQECIT0CCAUDYWNjAl8zBQljb250aW5lbnQHCQACAQIuTGFuZHMgc2hvdWxkIGJlIG9uIHRoZSBzYW1lIGNvbnRpbmVudCB0byBtZXJnZQQIbGFuZFNpemUJAJEDAgUBZAULcmVjTGFuZFNpemUEB3NpemVzSW4IBQNhY2MCXzEEAWkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAswkCBQdzaXplc0luBQhsYW5kU2l6ZQInWW91IGhhdmVuJ3QgcGFzc2VkIGFsbCB0aGUgbGFuZHMgbmVlZGVkBAhzaXplc091dAkArAICCQCvAgIFB3NpemVzSW4FAWkJALACAgUHc2l6ZXNJbgkAZAIFAWkAAQQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUEBGFydHMJAGQCCAUDYWNjAl8yCQELdmFsdWVPckVsc2UCCQCfCAEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAAAECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAhyZXFMZXZlbAQHJG1hdGNoMAUIbGFuZFNpemUDCQAAAgIBUwUHJG1hdGNoMAADAwkAAAICAU0FByRtYXRjaDAABAMJAAACAgFMBQckbWF0Y2gwAAUDCQAAAgICWEwFByRtYXRjaDAABgkAAgECGk9ubHkgUywgTSwgTCwgWEwgY2FuIG1lcmdlAwkBAiE9AgUKaW5mcmFMZXZlbAUIcmVxTGV2ZWwJAAIBAiJBbGwgbGFuZHMgc2hvdWxkIGJlIG1heGVkIHRvIG1lcmdlBAdsYW5kTnVtCQCRAwIFAWQFCnJlY0xhbmROdW0EDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQJZGVsdGFUaW1lCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCXNhdmVkVGltZQMJAGYCAAAFCWRlbHRhVGltZQkAAgEJAKwCAgkArAICCQCsAgICJlNhdmVkIHRpbWVzdGFtcCBpcyBpbiBmdXR1cmUsIHNhdmVkID0gCQCkAwEFCXNhdmVkVGltZQIMLCBjdXJyZW50ID0gCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBBZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFYnBSZXMJAQZhZGRSZXMFCQC1CQIIBQNhY2MCXzQCAV8FDXRlcnJhaW5Db3VudHMFCWRlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBAVwcm9wcwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjAl82BQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgA////////////AQQLc3VtVGVycmFpbnMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwJfOQUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAEEBWxhbmRzCAUDYWNjAl83BANpZHgJAM8IAgUFbGFuZHMFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQUDaWR4CQACAQkArAICAiBZb3VyIHN0YWtlZCBsYW5kcyBkb24ndCBjb250YWluIAULbGFuZEFzc2V0SWQECWN1c3RvbUtleQkBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQULbGFuZEFzc2V0SWQECmN1c3RvbU5hbWUJAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VzdG9tS2V5AgAJAJsKCQUIc2l6ZXNPdXQFBGFydHMFCWNvbnRpbmVudAUFYnBSZXMJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAggFA2FjYwJfNQkBC0RlbGV0ZUVudHJ5AQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUEYWRkcgkBC0RlbGV0ZUVudHJ5AQkBEGtleUxhbmRUb0Fzc2V0SWQBBQdsYW5kTnVtCQELRGVsZXRlRW50cnkBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQtsYW5kQXNzZXRJZAUEYWRkcgkBC0RlbGV0ZUVudHJ5AQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJASVrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQFBGFkZHIJAQtEZWxldGVFbnRyeQEJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0JAQtEZWxldGVFbnRyeQEJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQUJY3VzdG9tS2V5CQELRGVsZXRlRW50cnkBCQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lCQEEQnVybgIJANkEAQULbGFuZEFzc2V0SWQAAQUFcHJvcHMJANEIAgUFbGFuZHMJAQV2YWx1ZQEFA2lkeAkAZAIIBQNhY2MCXzgFBnBpZWNlcwULc3VtVGVycmFpbnMEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9wTGlzdAkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJARFrZXlSZXNQcm9wb3J0aW9ucwACCzBfMF8wXzBfMF8wAgFfBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFBGFkZHIECGxhbmRzU3RyCQCiCAEFCGxhbmRzS2V5BAdsYW5kc0luAwkBCWlzRGVmaW5lZAEFCGxhbmRzU3RyCQC9CQIJAQV2YWx1ZQEFCGxhbmRzU3RyAgFfBQNuaWwEAXIKAAIkbAUMbGFuZEFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAmwoJBQdmb3JtdWxhAAACAAkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMFA25pbAUIcHJvcExpc3QFB2xhbmRzSW4AAAkAtQkCAgswXzBfMF8wXzBfMAIBXwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKY2hlY2tNZXJnZQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUECWNvbnRpbmVudAgFAXICXzMEDGNvbnRpbmVudElkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDPCAIFCmNvbnRpbmVudHMFCWNvbnRpbmVudAkArAICAhNVbmtub3duIGNvbnRpbmVudDogBQljb250aW5lbnQECHRlcnJhaW5zCQETZ2VuVGVycmFpbnNGb3JNZXJnZQIIBQFyAl85CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEFC25ld0xhbmRTaXplBQVTU0laRQQHZnJlZU51bQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFD1BSRVNBTEVOVU1MQU5EUwABBApuZXdMYW5kTnVtCQCkAwEFB2ZyZWVOdW0EBWlzc3VlCQDCCAUJAQduZnROYW1lAgUKbmV3TGFuZE51bQULbmV3TGFuZFNpemUJALkJAgkAzAgCBQpuZXdMYW5kTnVtCQDMCAIFC25ld0xhbmRTaXplCQDMCAIFCHRlcnJhaW5zCQDMCAIFCWNvbnRpbmVudAUDbmlsAgFfAAEAAAcEB2Fzc2V0SWQJALgIAQUFaXNzdWUEDm5ld0xhbmRBc3NldElkCQDYBAEFB2Fzc2V0SWQEBm5ld01hdAkAuQkCCQERc3VidHJhY3RNYXRlcmlhbHMDCQBmAgUHbmVlZE1hdAAACQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBQduZWVkTWF0AgFfBAlwaWVjZXNLZXkJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUEYWRkcgQMc3Rha2VkUGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEFCXBpZWNlc0tleQAACQCUCgIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIIBQFyAl81AwkAZgIJAJADAQgFAXICXzcAAAkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAggFAXICXzcCAV8JAQtEZWxldGVFbnRyeQEFCGxhbmRzS2V5CQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5AwkAZgIIBQFyAl84BQxzdGFrZWRQaWVjZXMAAAkAZQIFDHN0YWtlZFBpZWNlcwgFAXICXzgJAQxJbnRlZ2VyRW50cnkCCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFB2ZyZWVOdW0AAQUFaXNzdWUJAQtTdHJpbmdFbnRyeQIJARBrZXlMYW5kVG9Bc3NldElkAQUKbmV3TGFuZE51bQUObmV3TGFuZEFzc2V0SWQJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQ5uZXdMYW5kQXNzZXRJZAUEYWRkcgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUKbmV3TGFuZE51bQUEYWRkcgkBDEludGVnZXJFbnRyeQIJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFDm5ld0xhbmRBc3NldElkCAUBcgJfMgkBDEludGVnZXJFbnRyeQIJASVrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKQVJUUFJFU0FMRQUObmV3TGFuZEFzc2V0SWQFBGFkZHIIBQFyAl8yCQEMSW50ZWdlckVudHJ5AgkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQ5uZXdMYW5kQXNzZXRJZAUIbmV3TGV2ZWwJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgUObmV3TGFuZEFzc2V0SWQFBGFkZHIFCG5ld0xldmVsCQELU3RyaW5nRW50cnkCBQVicEtleQkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAggFAXICXzQJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6CQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMACQC5CQIIBQFyAl82AgFfCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQJALkJAgkAzAgCBQljb250aW5lbnQJAMwIAgIBTAkAzAgCBQ5uZXdMYW5kQXNzZXRJZAUDbmlsAgFfCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQRhZGRyAAEFB2Fzc2V0SWQFDm5ld0xhbmRBc3NldElkAQNzMm0CBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAU0AAwIEU1NTUwUEYWRkcgUMbGFuZEFzc2V0SWRzAAABA20ybAIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgIBTAAEAgNTTU0FBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTAAQBBGwyeGwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAlhMAAUCBVNTU01MBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwAvAQZ4bDJ4eGwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCA1hYTAAGAgNMWEwFBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTADYBC21lcmdlQ29tbW9uAgRhZGRyDGxhbmRBc3NldElkcwQHJG1hdGNoMAkAkAMBBQxsYW5kQXNzZXRJZHMDCQAAAgAEBQckbWF0Y2gwCQEDczJtAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIAAwUHJG1hdGNoMAkBA20ybAIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAUFByRtYXRjaDAJAQRsMnhsAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIAAgUHJG1hdGNoMAkBBnhsMnh4bAIFBGFkZHIFDGxhbmRBc3NldElkcwkAAgECDVVua25vd24gbWVyZ2UBD2NoZWNrVG91cm5hbWVudAELZHVja0Fzc2V0SWQEBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFEnRvdXJuYW1lbnRDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwMJAQIhPQIJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUCAVQHBAZyZXN1bHQDAwMJAAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FD2xvY0lkeENvbnRpbmVudAUGbGFzdElkCQAAAgkAkQMCBQdkeW5hbWljBQ50RHluYW1pY1N0YXR1cwIKSU5QUk9HUkVTUwcJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBQp0U3RhdGljRW5kBQNub3cHCQACAQIqWW91ciBkdWNrIGlzIHRha2luZyBwYXJ0IGluIHRoZSB0b3VybmFtZW50CQD8BwQFBHRoaXMCFmV4aXRUb3VybmFtZW50SW50ZXJuYWwJAMwIAgULZHVja0Fzc2V0SWQFA25pbAUDbmlsAwkAAAIFBnJlc3VsdAUGcmVzdWx0BwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEGcHJvbG9nAQFpAwMJAQIhPQIIBQFpDG9yaWdpbkNhbGxlcgUMcmVzdENvbnRyYWN0CQELdmFsdWVPckVsc2UCCQCgCAEJAQprZXlCbG9ja2VkAAcHCQACAQIfQ29udHJhY3RzIGFyZSB1bmRlciBtYWludGVuYW5jZQkBC1N0cmluZ0VudHJ5AgkBEWtleUxhc3RUeElkQnlVc2VyAQkApQgBCAUBaQxvcmlnaW5DYWxsZXIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZCQBaQENY29uc3RydWN0b3JWMQEIcmVzdEFkZHIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5UmVzdEFkZHJlc3MABQhyZXN0QWRkcgUDbmlsAWkBCnNldEJsb2NrZWQBCWlzQmxvY2tlZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQxCb29sZWFuRW50cnkCCQEKa2V5QmxvY2tlZAAFCWlzQmxvY2tlZAUDbmlsAWkBCXN0YWtlTGFuZAAEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHYXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIIBQNwbXQGYW1vdW50AAEJAAIBCQCsAgIJAKwCAgIETkZUIAUKTEFORFBSRUZJWAIkIHRva2VuIHNob3VsZCBiZSBhdHRhY2hlZCBhcyBwYXltZW50BAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkAwkBAiE9AggFBWFzc2V0Bmlzc3VlcgUEdGhpcwkAAgECF1Vua25vd24gaXNzdWVyIG9mIHRva2VuAwkBASEBCQEIY29udGFpbnMCCAUFYXNzZXQEbmFtZQUKTEFORFBSRUZJWAkAAgEJAKwCAgkArAICAglPbmx5IE5GVCAFCkxBTkRQUkVGSVgCFCB0b2tlbnMgYXJlIGFjY2VwdGVkBAtsYW5kTnVtU2l6ZQkAsAICCAUFYXNzZXQEbmFtZQAEBAdsYW5kTnVtAwkBCGNvbnRhaW5zAgULbGFuZE51bVNpemUCA1hYTAkAswICBQtsYW5kTnVtU2l6ZQADAwkBCGNvbnRhaW5zAgULbGFuZE51bVNpemUCAlhMCQCzAgIFC2xhbmROdW1TaXplAAIJALMCAgULbGFuZE51bVNpemUAAQMJAQEhAQkBCWlzRGVmaW5lZAEJALYJAQUHbGFuZE51bQkAAgEJAKwCAgIeQ2Fubm90IHBhcnNlIGxhbmQgbnVtYmVyIGZyb20gCAUFYXNzZXQEbmFtZQQLbGFuZEFzc2V0SWQJANgEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAMJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCEiBpcyBhbHJlYWR5IHN0YWtlZAQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8EDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQFcHJvcHMJARF1cGRhdGVQcm9wb3J0aW9ucwMFDXRlcnJhaW5Db3VudHMJAGkCBQZwaWVjZXMFBVNTSVpFAAEECWFydFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAAABAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFB2FkZHJlc3MECGxhbmRzU3RyCQCiCAEFCGxhbmRzS2V5BAVsYW5kcwMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFBWxhbmRzBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgIiWW91ciBzdGFrZWQgbGFuZHMgYWxyZWFkeSBjb250YWluIAULbGFuZEFzc2V0SWQECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAlwaWVjZXNLZXkJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUHYWRkcmVzcwQJb2xkUGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEFCXBpZWNlc0tleQAABAl3bGdSZXN1bHQJAQVhc0ludAEJAPwHBAULd2xnQ29udHJhY3QCEm9uU3Rha2VVbnN0YWtlTGFuZAkAzAgCBQdhZGRyZXNzBQNuaWwFA25pbAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd0aW1lS2V5CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUHYWRkcmVzcwgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAgkAzQgCBQVsYW5kcwULbGFuZEFzc2V0SWQCAV8JAMwIAgkBDEludGVnZXJFbnRyeQIFCXBpZWNlc0tleQkAZAIFCW9sZFBpZWNlcwUGcGllY2VzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5TGFuZE51bVRvT3duZXIBBQdsYW5kTnVtBQdhZGRyZXNzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEla2V5TGFuZEFydFN0YXR1c0J5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkBQdhZGRyZXNzBQlhcnRQaWVjZXMJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQtsYW5kQXNzZXRJZAUHYWRkcmVzcwUKaW5mcmFMZXZlbAkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMABQVwcm9wcwkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAUJd2xnUmVzdWx0AWkBC3Vuc3Rha2VMYW5kAQ1sYW5kQXNzZXRJZEluBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBQ1jbGFpbU1vZGVEdWNrBQ1sYW5kQXNzZXRJZEluBAtsYW5kQXNzZXRJZAgFAWMCXzIECGxhbmRzS2V5CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUEYWRkcgQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIIBQFjAl8zBQtyZWNUZXJyYWlucwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCAUBYwJfMwULcmVjTGFuZFNpemUEBXByb3BzCQERdXBkYXRlUHJvcG9ydGlvbnMDBQ10ZXJyYWluQ291bnRzCQBpAgUGcGllY2VzBQVTU0laRQD///////////8BBAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcgULbGFuZEFzc2V0SWQFBnBpZWNlcwUNY2xhaW1Nb2RlRHVjawQFbGFuZHMJAL0JAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQhsYW5kc0tleQIAAgFfBANpZHgJAM8IAgUFbGFuZHMFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQUDaWR4CQACAQkArAICAiBZb3VyIHN0YWtlZCBsYW5kcyBkb24ndCBjb250YWluIAULbGFuZEFzc2V0SWQEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEDmdvdlJlbGVhc2VUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFC2dvdkNvbnRyYWN0CQEVa2V5VXNlckd3bFJlbGVhc2VUaW1lAQUEYWRkcgAAAwkAZwIFDmdvdlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICOVlvdXIgZ1dMIGFyZSB0YWtpbmcgcGFydCBpbiB2b3RpbmcsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5nb3ZSZWxlYXNlVGltZQQOYXJiUmVsZWFzZVRpbWUJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFC3dsZ0NvbnRyYWN0CQEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBQRhZGRyAAAFDmFyYml0cmFnZURlbGF5AwkAZgIFDmFyYlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICP1lvdXIgc3Rha2VkIGxhbmRzIHRvb2sgcGFydCBpbiBhcmJpdHJhZ2UsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5hcmJSZWxlYXNlVGltZQQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIEDHN0YWtlZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAQJbmV3UGllY2VzAwkAZgIFBnBpZWNlcwUMc3Rha2VkUGllY2VzAAAJAGUCBQxzdGFrZWRQaWVjZXMFBnBpZWNlcwQJd2xnUmVzdWx0CQEFYXNJbnQBCQD8BwQFC3dsZ0NvbnRyYWN0AhJvblN0YWtlVW5zdGFrZUxhbmQJAMwIAgUEYWRkcgUDbmlsBQNuaWwJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQkA2QQBBQtsYW5kQXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFBGFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAUFcHJvcHMJAMwIAgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al8yCQC5CQIIBQtjbGFpbVJlc3VsdAJfMwIBOgkAzAgCAwkAZgIJAJADAQUFbGFuZHMAAQkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAgkA0QgCBQVsYW5kcwkBBXZhbHVlAQUDaWR4AgFfCQELRGVsZXRlRW50cnkBBQhsYW5kc0tleQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5BQluZXdQaWVjZXMJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwFCXdsZ1Jlc3VsdAFpAQlzdGFrZUR1Y2sABAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkRVQ0tQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMDCQECIT0CCAUFYXNzZXQGaXNzdWVyBQ1pbmN1YmF0b3JBZGRyCQECIT0CCAUFYXNzZXQGaXNzdWVyBQticmVlZGVyQWRkcgcJAAIBCQCsAgIJAKwCAgISVW5rbm93biBpc3N1ZXIgb2YgBQpEVUNLUFJFRklYAgYgdG9rZW4DCQEBIQEJAQhjb250YWlucwIIBQVhc3NldARuYW1lBQpEVUNLUFJFRklYCQACAQkArAICCQCsAgICCU9ubHkgTkZUIAUKRFVDS1BSRUZJWAIUIHRva2VucyBhcmUgYWNjZXB0ZWQECmFzc2V0SWRTdHIJANgEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQphc3NldElkU3RyAwkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQISIGlzIGFscmVhZHkgc3Rha2VkAwkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAAgEJAKwCAgIdWW91IGFscmVhZHkgc3Rha2VkIG9uZSBkdWNrOiAIBQVhc3NldARuYW1lBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQphc3NldElkU3RyBAhsb2NhdGlvbgkAoggBBQZsb2NLZXkEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQphc3NldElkU3RyBAhiYWNrcGFjawkAoggBBQVicEtleQQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFCmFzc2V0SWRTdHIEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQUKYXNzZXRJZFN0cgAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd0aW1lS2V5CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYCQDYBAEFB2Fzc2V0SWQFB2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlEdWNrSWRUb093bmVyAQUKYXNzZXRJZFN0cgUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzBQphc3NldElkU3RyBQNuaWwDCQEJaXNEZWZpbmVkAQUIbG9jYXRpb24FA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmxvY0tleQUPREVGQVVMVExPQ0FUSU9OBQNuaWwDCQEJaXNEZWZpbmVkAQUIYmFja3BhY2sFA25pbAkAzQgCCQDNCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkCGjA6MF8wXzBfMF8wXzA6MF8wXzBfMF8wXzA6BQNuaWwJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFCWN1ckhlYWx0aAUMcHJvbG9nQWN0aW9uAWkBC3Vuc3Rha2VEdWNrAQphc3NldElkU3RyBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEB2Fzc2V0SWQJANkEAQUKYXNzZXRJZFN0cgQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQkA2AQBBQdhc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAAgEJAKwCAgkArAICAglUaGUgZHVjayAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5RHVja0lkVG9Pd25lcgEJANgEAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUHYWRkcmVzcwkAAgECF1N0YWtlZCBORlQgaXMgbm90IHlvdXJzBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQUKYXNzZXRJZFN0cgQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQphc3NldElkU3RyAAAEBmhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkAZgIFBW1heEhQBQZoZWFsdGgJAAIBCQCsAgIJAKwCAgIZUGxlYXNlIGhlYWwgeW91ciBkdWNrIHRvIAkApAMBBQVtYXhIUAITaHAgYmVmb3JlIHVuc3Rha2luZwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHYXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBBQd0aW1lS2V5CQDMCAIJAQtEZWxldGVFbnRyeQEFCWtleUhlYWx0aAkAzAgCCQELRGVsZXRlRW50cnkBCQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgkAzAgCCQELRGVsZXRlRW50cnkBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYBQphc3NldElkU3RyBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwBaQEIY2xhaW1SZXMCBmFtb3VudA5sYW5kQXNzZXRJZFN0cgQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAUNY2xhaW1Nb2RlRHVjawUObGFuZEFzc2V0SWRTdHIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDNCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAawMFB3hwQ2xhaW0FBmFtb3VudAUFTVVMVDgCXzEJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzIJALkJAggFBnJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfNAkAuQkCCAUGcmVzdWx0Al81AgE6BQxwcm9sb2dBY3Rpb24JAJEDAggFBnJlc3VsdAJfMwUIYnBJZHhSZXMBaQEMY2xhaW1SZXNUb1dIAgZhbW91bnQObGFuZEFzc2V0SWRTdHIEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBnJlc3VsdAkBEGNsYWltUmVzSW50ZXJuYWwEBQRhZGRyBQZhbW91bnQFC2NsYWltTW9kZVdoBQ5sYW5kQXNzZXRJZFN0cgkAlAoCCQDNCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIJAGsDBQd4cENsYWltBQZhbW91bnQFBU1VTFQ4Al8xCQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al8yCQC5CQIIBQZyZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzQJALkJAggFBnJlc3VsdAJfNQIBOgUMcHJvbG9nQWN0aW9uCQCRAwIIBQZyZXN1bHQCXzUFCHdoSWR4UmVzAWkBBmZsaWdodAIHbWVzc2FnZQNzaWcEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAFmCQEMZmxpZ2h0Q29tbW9uAwUIdXNlckFkZHIFB21lc3NhZ2UFA3NpZwQLZHVja0Fzc2V0SWQIBQFmAl8yBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04DCQAAAggFAWYCXzQFC2N1ckxvY2F0aW9uCQACAQIiWW91IGNhbid0IGZseSB0byB0aGUgc2FtZSBsb2NhdGlvbgQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQECWN1cnJlbnRFcQkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywEBW5ld0VxCQERc3VidHJhY3RFcXVpcG1lbnQCBQljdXJyZW50RXEIBQFmAl81CQCUCgIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZsb2NLZXkDCQBmAggFAWYCXzEAAAgFAWYCXzQFC2N1ckxvY2F0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQVuZXdFcQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAgFAWYCXzEJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAMJAGYCCAUBZgJfMQAABQ94cFN1Y2Nlc3NGbGlnaHQFDHhwRmFpbEZsaWdodAJfMQgFAWYCXzMBaQEEaGVhbAMKcXVhbnRpdHlMMQpxdWFudGl0eUwyCnF1YW50aXR5TDMEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDAwMJAGYCAAAFCnF1YW50aXR5TDEGCQBmAgAABQpxdWFudGl0eUwyBgkAZgIAAAUKcXVhbnRpdHlMMwkAAgECG1F1YW50aXR5IGNhbm5vdCBiZSBuZWdhdGl2ZQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQDcXRzCQDMCAIFCnF1YW50aXR5TDEJAMwIAgUKcXVhbnRpdHlMMgkAzAgCBQpxdWFudGl0eUwzBQNuaWwECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAlvbGRIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGcCBQlvbGRIZWFsdGgFBW1heEhQCQACAQkArAICCQCsAgICD0hQIHNob3VsZCBiZSA8IAkApAMBBQVtYXhIUAIIIHRvIGhlYWwEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwoBC2l0ZXJhdGVQcm9kAgNhY2MLaWdub3JlZEl0ZW0EAW4IBQNhY2MCXzIEAXgD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bHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJb2xkSGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBmAgUJb2xkSGVhbHRoAAAJAAIBAihIUCBzaG91bGQgYmUgMCB0byBjYWxsIEVtZXJnZW5jeSBTZXJ2aWNlBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvZExpc3QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8EDW1lZEtpdEFtb3VudDEDCQBmAgkAkAMBBQhwcm9kTGlzdAAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAAAABA1tZWRLaXRBbW91bnQyAwkAZgIJAJADAQUIcHJvZExpc3QAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAEAAAQNbWVkS2l0QW1vdW50MwMJAGYCCQCQAwEFCHByb2RMaXN0AAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAACAAADAwMJAGYCBQ1tZWRLaXRBbW91bnQxAAAGCQBmAgUNbWVkS2l0QW1vdW50MgAABgkAZgIFDW1lZEtpdEFtb3VudDMAAAkAAgECH1lvdSBoYXZlIHRvIHVzZSBvd24gTWVkaWNhbCBLaXQECGV4aXN0U3RyCQCdCAIFD2Vjb25vbXlDb250cmFjdAkBDmtleUVzV2FyZWhvdXNlAAQMZXhpc3RBbW91bnRzAwkBCWlzRGVmaW5lZAEFCGV4aXN0U3RyCQC1CQIJAQV2YWx1ZQEFCGV4aXN0U3RyAgFfBQNuaWwEC2V4aXN0QW1vdW50AwkAZgIJAJADAQUMZXhpc3RBbW91bnRzAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQxleGlzdEFtb3VudHMAAAAAAwkAZwIAAAULZXhpc3RBbW91bnQJAAIBAjlUaGVyZSBhcmUgbm8gTWVkaWNhbCBLaXRzIEwxIGF0IEVtZXJnZW5jeSBTZXJ2aWNlIHN0b3JhZ2UECW5ld0hlYWx0aAkAZAIFCW9sZEhlYWx0aAkAkQMCBQhtZWRLaXRIcAAABAVuZXdFUwkAuQkCCQDMCAIJAKQDAQkAZQIFC2V4aXN0QW1vdW50AAEJANEIAgUMZXhpc3RBbW91bnRzAAACAV8EBnJlY2lwZQkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgAAAIBXwQIdG90YWxNYXQJARJnZXRSZWNpcGVNYXRlcmlhbHMBBQZyZWNpcGUECXNlbGxQcmljZQkAawMJAGgCBQh0b3RhbE1hdAUKRVNTRUxMQ09FRgUQUkVTT1VSQ0VQUklDRU1JTgkAaAIFBU1VTFQ4BQ5QUk9EVUNUUEtHU0laRQMJAQIhPQIIBQNwbXQGYW1vdW50BQlzZWxsUHJpY2UJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQlzZWxsUHJpY2UEBnJlc3VsdAkBCGFzU3RyaW5nAQkA/AcEBQ9lY29ub215Q29udHJhY3QCD3VwZGF0ZUVzU3RvcmFnZQkAzAgCBQVuZXdFUwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQt1c2R0QXNzZXRJZAUJc2VsbFByaWNlBQNuaWwJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFCW5ld0hlYWx0aAkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQh4cENhbGxFUwJfMQUGcmVzdWx0AWkBDnVwZGF0ZUJhY2twYWNrAgtkdWNrQXNzZXRJZAduZXdQYWNrAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBQduZXdQYWNrBQNuaWwFB25ld1BhY2sBaQEPY29tbWl0Rm9yUmFuZG9tAAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQQLZmluaXNoQmxvY2sJAGQCBQZoZWlnaHQFC3JhbmRvbURlbGF5BARhZGRyCQClCAEIBQFpBmNhbGxlcgkAlAoCCQDNCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQlrZXlDb21taXQBBQRhZGRyBQtmaW5pc2hCbG9jawUDbmlsBQxwcm9sb2dBY3Rpb24FC2ZpbmlzaEJsb2NrAWkBCGJ1eVNMYW5kAAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhAwkBAiE9AggFA3BtdAZhbW91bnQFB0VYUFVTRFQJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQdFWFBVU0RUBAZyZXN1bHQJARJleHBlZGl0aW9uSW50ZXJuYWwCCAUBaQZjYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQJAJQKAgkAzQgCCQDOCAIJAM0IAggFBnJlc3VsdAJfMQkBDlNjcmlwdFRyYW5zZmVyAwUPZWNvbm9teUNvbnRyYWN0CAUDcG10BmFtb3VudAULdXNkdEFzc2V0SWQICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQp4cE5ld1NMYW5kAl8xBQxwcm9sb2dBY3Rpb24ICAUGcmVzdWx0Al8yAl8xAWkBCmV4cGVkaXRpb24CB21lc3NhZ2UDc2lnBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBnJlc3VsdAkBEGV4cGVkaXRpb25Db21tb24ECAUBaQZjYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQFB21lc3NhZ2UFA3NpZwQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDNCAIJAM4IAggFBnJlc3VsdAJfMQgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQp4cE5ld1NMYW5kAl8xBQxwcm9sb2dBY3Rpb24JAJQKAggFBnJlc3VsdAJfMggFBnJlc3VsdAJfMwFpAQx1cGdyYWRlSW5mcmEBC2xhbmRBc3NldElkBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBnJlc3VsdAkBDXVwSW5mcmFDb21tb24EBggFAWkGY2FsbGVyAAAFC2xhbmRBc3NldElkBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkCQCUCgIJAM4IAgkAzQgCCAUGcmVzdWx0Al8xBQxwcm9sb2dBY3Rpb24ICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAawMFDnhwVXBncmFkZUluZnJhCAUGcmVzdWx0Al8zBQVNVUxUOAJfMQgFBnJlc3VsdAJfMgFpARBhY3RpdmF0ZUFydGlmYWN0AgdhcnROYW1lDmxhbmRBc3NldElkT3B0BAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAZyZXN1bHQEByRtYXRjaDAFB2FydE5hbWUDCQAAAgIHUFJFU0FMRQUHJG1hdGNoMAkBEmFjdGl2YXRlUHJlc2FsZUFydAIFBGFkZHIFDmxhbmRBc3NldElkT3B0AwkAAAICB09OQk9BUkQFByRtYXRjaDAJARJhY3RpdmF0ZU9uYm9hcmRBcnQBBQRhZGRyCQACAQIQVW5rbm93biBhcnRpZmFjdAkAzQgCBQZyZXN1bHQFDHByb2xvZ0FjdGlvbgFpAQptZXJnZUxhbmRzAQxsYW5kQXNzZXRJZHMEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQGcmVzdWx0CQELbWVyZ2VDb21tb24CCQClCAEIBQFpBmNhbGxlcgUMbGFuZEFzc2V0SWRzCQCUCgIJAM4IAgkAzQgCCAUGcmVzdWx0Al8xBQxwcm9sb2dBY3Rpb24ICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQd4cE1lcmdlAl8xCAUGcmVzdWx0Al8yAWkBDWNhcmdvRXhjaGFuZ2UCDGNhcmdvTGlzdFN0cgtsYW5kQXNzZXRJZAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBApjYXJnb1BhcnRzCQC8CQIFDGNhcmdvTGlzdFN0cgIBOgQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OBANsb2MJALUJAgkBBXZhbHVlAQULY3VyTG9jYXRpb24CAV8DCQECIT0CCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBTAkAAgEJAKwCAgkArAICAhZEdWNrIGxvY2F0aW9uIHR5cGUgaXMgCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIRLCBidXQgc2hvdWxkIGJlIEwDCQECIT0CCQCRAwIFA2xvYwUIbG9jSWR4SWQFC2xhbmRBc3NldElkCQACAQkArAICAhtEdWNrIHNob3VsZCBiZSBvbiB0aGUgbGFuZCAFC2xhbmRBc3NldElkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAljdXJyZW50V2gJAQxnZXRXYXJlaG91c2UDBQV3aEtleQUJbGFuZEluZGV4BQppbmZyYUxldmVsBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQGcmVzdWx0CQEJbW92ZVN0dWZmAwUKY2FyZ29QYXJ0cwUJY3VycmVudFdoBQtjdXJyZW50UGFjawQEbG9mdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBAVsb2Z0TwkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAgFBnJlc3VsdAJfNwQFbG9mdEYJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQgFBnJlc3VsdAJfNwkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAggFBnJlc3VsdAJfNAkAzAgCCAUGcmVzdWx0Al81CQDMCAIIBQZyZXN1bHQCXzYFA25pbAIBOgkAzAgCCQELU3RyaW5nRW50cnkCBQV3aEtleQkAugkCCQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCCAUGcmVzdWx0Al8xCQDMCAIIBQZyZXN1bHQCXzIJAMwIAggFBnJlc3VsdAJfMwkAzAgCCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAJEDAgUEbG9mdAUIdm9sVG90YWwFA25pbAIBXwUDbmlsAgE6CQDMCAIFDHByb2xvZ0FjdGlvbgUDbmlsAWkBDXNhdmVXYXJlaG91c2UCBXdoU3RyC2xhbmRBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAJ3aAkAvAkCBQV3aFN0cgIBOgMJAQIhPQIJAJADAQUCd2gABQkAAgECMHdhcmVob3VzZSBzdHJpbmcgc2hvdWxkIGNvbnRhaW4gNCAnOicgc2VwYXJhdG9ycwQFbG9mdEwJAJEDAgkAtQkCCQCRAwIFAndoBQl3aElkeExPRlQCAV8FCXZvbExvY2tlZAQFbG9mdE8JARdnZXRXYXJlaG91c2VPY2N1cGllZFZvbAEFAndoBAVsb2Z0VAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQkAkQMCBQJ3aAULd2hJZHhMZXZlbHMEBWxvZnRGCQBlAgkAZQIFBWxvZnRUCQENcGFyc2VJbnRWYWx1ZQEFBWxvZnRMBQVsb2Z0TwQIbmV3V2hTdHIJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgkAuQkCCQDMCAIFBWxvZnRMCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCkAwEFBWxvZnRUBQNuaWwCAV8FA25pbAIBOgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5BQhuZXdXaFN0cgUDbmlsBQhuZXdXaFN0cgFpARJmaXhXYXJlaG91c2VGb3JtYXQBC2xhbmRBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQxyZXN0Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQCd2gJAQxnZXRXYXJlaG91c2UDBQV3aEtleQUJbGFuZEluZGV4BQppbmZyYUxldmVsBAVsb2Z0TAkBBWFzSW50AQkA/AcEBQ9lY29ub215Q29udHJhY3QCGnJlY2FsY0xvY2tlZFZvbHVtZVJFQURPTkxZCQDMCAIFC2xhbmRBc3NldElkCQDMCAIFAndoBQNuaWwFA25pbAQFbG9mdE8JARdnZXRXYXJlaG91c2VPY2N1cGllZFZvbAEFAndoBAVsb2Z0VAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQkAkQMCBQJ3aAULd2hJZHhMZXZlbHMEBWxvZnRGCQBlAgkAZQIFBWxvZnRUBQVsb2Z0TAUFbG9mdE8ECG5ld1doU3RyCQC6CQIJAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgkAkQMCBQJ3aAUId2hJZHhSZXMJAMwIAgkAkQMCBQJ3aAUId2hJZHhNYXQJAMwIAgkAkQMCBQJ3aAUJd2hJZHhQcm9kCQDMCAIJALkJAgkAzAgCCQCkAwEFBWxvZnRMCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCkAwEFBWxvZnRUBQNuaWwCAV8FA25pbAIBOgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5BQhuZXdXaFN0cgUDbmlsBQhuZXdXaFN0cgFpAQ9maXhTdGFrZWRQaWVjZXMBB2FkZHJlc3MDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEDHN0YWtlZFBpZWNlcwMJAAACBQdhZGRyZXNzAgAAAAQIbGFuZHNTdHIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUHYWRkcmVzcwQFbGFuZHMDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAoBB29uZUxhbmQCA2FjYwtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQIbGFuZFNpemUJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplCQBkAgUDYWNjCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUKAAIkbAUFbGFuZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB29uZUxhbmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFUxpc3Qgc2l6ZSBleGNlZWRzIDEwMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQUHYWRkcmVzcwUMc3Rha2VkUGllY2VzBQNuaWwFDHN0YWtlZFBpZWNlcwFpAQ1zZXRDdXN0b21OYW1lAwdhc3NldElkCmN1c3RvbU5hbWUEdHlwZQQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhAwkBAiE9AggFA3BtdAZhbW91bnQFDFJFTkFNSU5HQ09TVAkAAgEJAKwCAgISUGF5bWVudCBzaG91bGQgYmUgCQCkAwEFDFJFTkFNSU5HQ09TVAMJAQhjb250YWlucwIFCmN1c3RvbU5hbWUCAl9fCQACAQkArAICAh5OYW1lIHNob3VsZCBub3QgY29udGFpbiAnX18nOiAFCmN1c3RvbU5hbWUDCQBmAgkAsQIBBQpjdXN0b21OYW1lBQpNQVhOQU1FTEVOCQACAQkArAICAhlOYW1lIHRvbyBsb25nLCBtYXhMZW5ndGg9CQCkAwEFCk1BWE5BTUVMRU4EBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAdhY3Rpb25zBAckbWF0Y2gwBQR0eXBlAwkAAAICB0FDQ09VTlQFByRtYXRjaDAECnJldmVyc2VLZXkJARZrZXlDdXN0b21OYW1lVG9BZGRyZXNzAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA1hZGRyVG9OYW1lS2V5CQEWa2V5QWRkcmVzc1RvQ3VzdG9tTmFtZQEFBGFkZHIEB29sZE5hbWUJAKIIAQUNYWRkclRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARZrZXlDdXN0b21OYW1lVG9BZGRyZXNzAQkBBXZhbHVlAQUHb2xkTmFtZQUDbmlsBQNuaWwJAM4IAgkAzQgCCQDNCAIFB2ZyZWVPbGQJAQtTdHJpbmdFbnRyeQIFDWFkZHJUb05hbWVLZXkFCmN1c3RvbU5hbWUJAQtTdHJpbmdFbnRyeQIFCnJldmVyc2VLZXkFBGFkZHIICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFDHhwQ3VzdG9tTmFtZQJfMQMJAAACAgRMQU5EBQckbWF0Y2gwBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUHYXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQdhc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBApyZXZlcnNlS2V5CQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lBAluYW1lT3duZXIJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQluYW1lT3duZXIJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUEDmFzc2V0VG9OYW1lS2V5CQEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBBQdhc3NldElkBAdvbGROYW1lCQCiCAEFDmFzc2V0VG9OYW1lS2V5BAdmcmVlT2xkAwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQkBBXZhbHVlAQUHb2xkTmFtZQUDbmlsBQNuaWwJAM4IAgkAzQgCCQDNCAIFB2ZyZWVPbGQJAQtTdHJpbmdFbnRyeQIFDmFzc2V0VG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQdhc3NldElkCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQx4cEN1c3RvbU5hbWUCXzEDCQAAAgIERFVDSwUHJG1hdGNoMAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFB2Fzc2V0SWQDAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5BgkBASEBCQEJaXNEZWZpbmVkAQkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyCQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleUR1Y2tJZFRvT3duZXIBBQdhc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpEVUNLUFJFRklYAg0gaXMgbm90IHlvdXJzBApyZXZlcnNlS2V5CQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lBAluYW1lT3duZXIJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQluYW1lT3duZXIJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUEDmFzc2V0VG9OYW1lS2V5CQEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBBQdhc3NldElkBAdvbGROYW1lCQCiCAEFDmFzc2V0VG9OYW1lS2V5BAdmcmVlT2xkAwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleUR1Y2tDdXN0b21OYW1lVG9Bc3NldElkAQkBBXZhbHVlAQUHb2xkTmFtZQUDbmlsBQNuaWwJAM4IAgkAzQgCCQDNCAIFB2ZyZWVPbGQJAQtTdHJpbmdFbnRyeQIFDmFzc2V0VG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQdhc3NldElkCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgUHYXNzZXRJZAUMeHBDdXN0b21OYW1lAl8xCQACAQITVW5rbm93biBlbnRpdHkgdHlwZQkAlAoCCQDNCAIJAM0IAgUHYWN0aW9ucwkBDlNjcmlwdFRyYW5zZmVyAwUPZWNvbm9teUNvbnRyYWN0CAUDcG10BmFtb3VudAULdXNkdEFzc2V0SWQFDHByb2xvZ0FjdGlvbgAAAWkBDHNldFJlZmVycmFscwIJb2xkUGxheWVyCW5ld1BsYXllcgMJAQIhPQIIBQFpD2NhbGxlclB1YmxpY0tleQUDcHViCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUJb2xkUGxheWVyCQACAQkArAICAhFJbnZhbGlkIGFkZHJlc3M6IAUJb2xkUGxheWVyAwkBASEBCQEJaXNEZWZpbmVkAQkApggBBQluZXdQbGF5ZXIJAAIBCQCsAgICEUludmFsaWQgYWRkcmVzczogBQluZXdQbGF5ZXIEB29sZHNLZXkJAQlrZXlPbGRpZXMABARvbGRzCQCiCAEFB29sZHNLZXkEBm9sZGllcwMJAQlpc0RlZmluZWQBBQRvbGRzCQC8CQIJAQV2YWx1ZQEFBG9sZHMCAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQZvbGRpZXMFCW5ld1BsYXllcgkAAgEJAKwCAgUJbmV3UGxheWVyAiYgaXMgbm90IG5ld2JpZSAoYWxyZWFkeSBoYXMgcmVmZXJyYWxzKQQIcmVmQnlLZXkJAQ9rZXlBZGRyZXNzUmVmQnkBBQluZXdQbGF5ZXIEBXJlZkJ5CQCiCAEFCHJlZkJ5S2V5AwMJAQlpc0RlZmluZWQBBQVyZWZCeQkBCWlzRGVmaW5lZAEJAKYIAQkBBXZhbHVlAQUFcmVmQnkHCQACAQkArAICCQCsAgIFCW5ld1BsYXllcgIUIGFscmVhZHkgaGFzIHJlZkJ5OiAJAQV2YWx1ZQEFBXJlZkJ5BAdyZWZzS2V5CQETa2V5QWRkcmVzc1JlZmVycmFscwEFCW9sZFBsYXllcgQEcmVmcwkAoggBBQdyZWZzS2V5BAlyZWZzQXJyYXkDCQEJaXNEZWZpbmVkAQUEcmVmcwkAvAkCCQEFdmFsdWUBBQRyZWZzAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUJcmVmc0FycmF5BQluZXdQbGF5ZXIJAAIBCQCsAgIJAKwCAgkArAICBQlvbGRQbGF5ZXICEiBhbHJlYWR5IGNvbnRhaW5zIAUJbmV3UGxheWVyAhEgd2l0aGluIHJlZmVycmFscwQHbmV3UmVmcwkAugkCCQDNCAIFCXJlZnNBcnJheQUJbmV3UGxheWVyAgFfBAduZXdPbGRzAwkBD2NvbnRhaW5zRWxlbWVudAIFBm9sZGllcwUJb2xkUGxheWVyCQEFdmFsdWUBBQRvbGRzCQC6CQIJAM0IAgUGb2xkaWVzBQlvbGRQbGF5ZXICAV8JAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQhyZWZCeUtleQUJb2xkUGxheWVyCQDMCAIJAQtTdHJpbmdFbnRyeQIFB3JlZnNLZXkFB25ld1JlZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgUHb2xkc0tleQUHbmV3T2xkcwkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAAAAWkBEGRpc3RyaWJ1dGVQb2ludHMFCHN0cmVuZ3RoCGFjY3VyYWN5CWludGVsbGVjdAllbmR1cmFuY2UJZGV4dGVyaXR5BAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECmZyZWVLZXlBY2MJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIEDWZyZWVQb2ludHNBY2MJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0BQpmcmVlS2V5QWNjAAAEC2ZyZWVLZXlEdWNrCQERa2V5RHVja0ZyZWVQb2ludHMBBQtkdWNrQXNzZXRJZAQOZnJlZVBvaW50c0R1Y2sJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0BQtmcmVlS2V5RHVjawAABAdzdW1GcmVlCQBkAgUNZnJlZVBvaW50c0FjYwUOZnJlZVBvaW50c0R1Y2sED3N1bVRvRGlzdHJpYnV0ZQkAZAIJAGQCCQBkAgkAZAIFCHN0cmVuZ3RoBQhhY2N1cmFjeQUJaW50ZWxsZWN0BQllbmR1cmFuY2UFCWRleHRlcml0eQMJAGYCBQ9zdW1Ub0Rpc3RyaWJ1dGUFB3N1bUZyZWUJAAIBCQCsAgIJAKwCAgIPVGhlcmUgYXJlIG9ubHkgCQCkAwEFB3N1bUZyZWUCGiBmcmVlIHBvaW50cyB0byBkaXN0cmlidXRlBAhjaGFyc0tleQkBDGtleUR1Y2tDaGFycwEFC2R1Y2tBc3NldElkBAVjaGFycwkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAUIY2hhcnNLZXkCCTBfMF8wXzBfMAIBXwQGbmV3QWNjCQBlAgUNZnJlZVBvaW50c0FjYwUPc3VtVG9EaXN0cmlidXRlCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFCmZyZWVLZXlBY2MDCQBmAgAABQZuZXdBY2MAAAUGbmV3QWNjCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQtmcmVlS2V5RHVjawMJAGYCAAAFBm5ld0FjYwkAZAIFDmZyZWVQb2ludHNEdWNrBQZuZXdBY2MFDmZyZWVQb2ludHNEdWNrCQDMCAIJAQtTdHJpbmdFbnRyeQIFCGNoYXJzS2V5CQC5CQIJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyU3RyZW5ndGgFCHN0cmVuZ3RoCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhckFjY3VyYWN5BQhhY2N1cmFjeQkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJJbnRlbGxlY3QFCWludGVsbGVjdAkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJFbmR1cmFuY2UFCWVuZHVyYW5jZQkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJEZXh0ZXJpdHkFCWRleHRlcml0eQUDbmlsAgFfCQDMCAIFDHByb2xvZ0FjdGlvbgUDbmlsAAABaQEcc3BsaXRCeUdsb2JhbFdlaWdodHNSRUFET05MWQEGYW1vdW50CQCUCgIFA25pbAkBEmdldE5lZWRlZE1hdGVyaWFscwEFBmFtb3VudAFpASRzcGxpdEJ5R2xvYmFsQW5kTG9jYWxXZWlnaHRzUkVBRE9OTFkDCW1hdEFtb3VudAlyZXNBbW91bnQIdGVycmFpbnMEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQUIdGVycmFpbnMJAJQKAgUDbmlsCQCUCgIJARJnZXROZWVkZWRNYXRlcmlhbHMBBQltYXRBbW91bnQJARNkaXN0cmlidXRlQnlXZWlnaHRzAgUJcmVzQW1vdW50BQ10ZXJyYWluQ291bnRzAWkBE2dldEJhY2twYWNrUkVBRE9OTFkBC2R1Y2tBc3NldElkCQCUCgIFA25pbAkAuQkCCQELZ2V0QmFja3BhY2sBCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAIBOgFpARRnZXRXYXJlaG91c2VSRUFET05MWQELbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAACQCUCgIFA25pbAkAugkCCQEMZ2V0V2FyZWhvdXNlAwkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwCAToBaQEKc2F2ZUxhc3RUeAAEBmNhbGxlcggFAWkGY2FsbGVyAwMDCQECIT0CBQZjYWxsZXIFC3dsZ0NvbnRyYWN0CQECIT0CBQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAcJAQIhPQIFBmNhbGxlcgUSdG91cm5hbWVudENvbnRyYWN0BwkAAgECDUFjY2VzcyBkZW5pZWQJAJQKAgkAzAgCCQEGcHJvbG9nAQUBaQUDbmlsACoBaQEPdXBkYXRlRHVja1N0YXRzAgtkdWNrQXNzZXRJZAdkZWx0YVhQAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkCQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUHZGVsdGFYUAFpAQ51cGRhdGVBY2NTdGF0cwIEYWRkcgdkZWx0YVhQAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkCQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFB2RlbHRhWFABaQEJZXF1aXBEdWNrAQllcXVpcG1lbnQEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECD2NoZWNrVG91cm5hbWVudAQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQEC2N1cnJlbnRTZWdzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssAgFfBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbmV3RXEJALUJAgUJZXF1aXBtZW50AgFfAwkBAiE9AgkAkAMBBQVuZXdFcQULTlVNU0VHTUVOVFMJAAIBAhZXcm9uZyBlcXVpcG1lbnQgc3RyaW5nBARyZXFzCQEMZ2V0RHVja1N0YXRzAgUEdGhpcwULZHVja0Fzc2V0SWQECXRlbXBQcm9kQgkBBmRyZXNzQgQFC2N1cnJlbnRTZWdzCQEOcHJvZFN0clRvQnl0ZXMBCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QGBQRyZXFzBAhuZXdQcm9kQgkBBmRyZXNzQgQFBW5ld0VxBQl0ZW1wUHJvZEIHBQRyZXFzBApuZXdQcm9kU3RyCQEOYnl0ZXNUb1Byb2RTdHIBBQhuZXdQcm9kQgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQllcXVpcG1lbnQJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALoJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0CQDMCAIFCm5ld1Byb2RTdHIFA25pbAIBOgkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAAAAWkBE2luaXREdWNrVG91ckF0dGVtcHQBC2R1Y2tBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBRJ0b3VybmFtZW50Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJY3VySGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFAECWN1ckxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXJMb2NLZXkFD0RFRkFVTFRMT0NBVElPTgQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABAx0b3VyTG9jYXRpb24JAKwCAgkApAMBBQZsYXN0SWQCBF9UXzAJAJQKAgkAzAgCBQxwcm9sb2dBY3Rpb24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBQljdXJIZWFsdGgJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aABkCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFC2N1ckxvY2F0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUMdG91ckxvY2F0aW9uBQNuaWwFDHRvdXJMb2NhdGlvbgFpAQ9leGl0VG91cm5hbWVudHMABAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAljdXJMb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VyTG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04DCQECIT0CCQCRAwIJALUJAgULY3VyTG9jYXRpb24CAV8FCmxvY0lkeFR5cGUCAVQJAAIBAiJZb3VyIGR1Y2sgaXMgbm90IGluIHRoZSB0b3VybmFtZW50BAtzYXZlZEhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQEDXNhdmVkTG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQJAJQKAgkAzAgCBQxwcm9sb2dBY3Rpb24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFC3NhdmVkSGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUNc2F2ZWRMb2NhdGlvbgUDbmlsBQtjdXJMb2NhdGlvbgFpARZleGl0VG91cm5hbWVudEludGVybmFsAQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDUFjY2VzcyBkZW5pZWQEC3NhdmVkSGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAQNc2F2ZWRMb2NhdGlvbgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQtzYXZlZEhlYWx0aAkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFDXNhdmVkTG9jYXRpb24FA25pbAAAALjsqBE=", "height": 2698802, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7eP6qJtzjdYUeyAN5hmAS6RjozUHGApTe6Gha7JhbH8G Next: ELN5oF1je9Nj8PavbF1FEGCVrP7yXsdqdoyDZ7YiEP7q Diff:
Old | New | Differences | |
---|---|---|---|
59 | 59 | func z (b) = ("userFreePoints_" + b) | |
60 | 60 | ||
61 | 61 | ||
62 | - | let A = 10000 | |
63 | - | ||
64 | - | let B = 10000 | |
65 | - | ||
66 | - | let C = 2000 | |
67 | - | ||
68 | - | let D = 100000 | |
69 | - | ||
70 | - | let E = 1000000 | |
71 | - | ||
72 | - | let F = 5000000 | |
73 | - | ||
74 | - | let G = 10000 | |
75 | - | ||
76 | - | let H = 1000000 | |
77 | - | ||
78 | - | let I = 1000000 | |
79 | - | ||
80 | - | let J = 10000 | |
81 | - | ||
82 | - | func K (L) = fraction(d, pow(L, 4, e, 4, 4, DOWN), c) | |
83 | - | ||
84 | - | ||
85 | - | func M (N) = (100 + N) | |
86 | - | ||
87 | - | ||
88 | - | func O (P,Q) = { | |
89 | - | let R = K(Q) | |
90 | - | [R, (f * (R - P))] | |
91 | - | } | |
92 | - | ||
93 | - | ||
94 | - | func S (T,r) = { | |
95 | - | let U = split(valueOrElse(getString(T, s(r)), "0_0_0_0_0"), "_") | |
96 | - | let V = valueOrElse(getInteger(T, u(r)), 0) | |
97 | - | let W = valueOrElse(getInteger(T, q(r)), M(V)) | |
98 | - | [parseIntValue(U[h]), parseIntValue(U[i]), parseIntValue(U[j]), parseIntValue(U[k]), parseIntValue(U[l]), V, W] | |
99 | - | } | |
100 | - | ||
101 | - | ||
102 | - | let X = "LAND" | |
103 | - | ||
104 | - | let Y = "DUCK" | |
105 | - | ||
106 | - | let Z = "PRESALE" | |
107 | - | ||
108 | - | let aa = 6 | |
109 | - | ||
110 | - | let ab = 3456000 | |
111 | - | ||
112 | - | let ac = 86400000 | |
113 | - | ||
114 | - | let ad = 10000000000 | |
115 | - | ||
116 | - | let ae = "Africa_F_Africa" | |
117 | - | ||
118 | - | let af = 39637 | |
119 | - | ||
120 | - | let ag = 10 | |
121 | - | ||
122 | - | let ah = ["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"] | |
123 | - | ||
124 | - | let ai = ["Americas", "Europe", "Asia", "Africa", "Oceania"] | |
125 | - | ||
126 | - | let aj = 10000000 | |
127 | - | ||
128 | - | let ak = ["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_", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_", "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_"] | |
129 | - | ||
130 | - | let al = 6 | |
131 | - | ||
132 | - | let am = 9 | |
133 | - | ||
134 | - | let an = 10 | |
135 | - | ||
136 | - | let ao = 10 | |
137 | - | ||
138 | - | let ap = 0 | |
139 | - | ||
140 | - | let aq = 1 | |
141 | - | ||
142 | - | let ar = 2 | |
143 | - | ||
144 | - | let as = 3 | |
145 | - | ||
146 | - | let at = 4 | |
147 | - | ||
148 | - | let au = 0 | |
149 | - | ||
150 | - | let av = 1 | |
151 | - | ||
152 | - | let aw = 2 | |
153 | - | ||
154 | - | let ax = 3 | |
155 | - | ||
156 | - | let ay = 0 | |
157 | - | ||
158 | - | let az = 1 | |
159 | - | ||
160 | - | let aA = 2 | |
161 | - | ||
162 | - | let aB = 3 | |
163 | - | ||
164 | - | func aC (b) = ("lastTxIdByUser_" + b) | |
165 | - | ||
166 | - | ||
167 | - | func aD (aE) = ("nftOwner_" + aE) | |
168 | - | ||
169 | - | ||
170 | - | func aF (aE) = ("landCustomNameByAssetId_" + aE) | |
171 | - | ||
172 | - | ||
173 | - | func aG (aE) = ("stakedTime_" + aE) | |
174 | - | ||
175 | - | ||
176 | - | func aH (aE) = ("infraLevel_" + aE) | |
177 | - | ||
178 | - | ||
179 | - | func aI (aJ,aE) = makeString(["landArtStatus", aJ, aE], "_") | |
180 | - | ||
181 | - | ||
182 | - | func aK (aL,aE,aM) = ((((("stakedTimeByTypeAssetIdAndOwner_" + aL) + "_") + aE) + "_") + aM) | |
183 | - | ||
184 | - | ||
185 | - | func aN (aO) = ("wareHouse_" + aO) | |
186 | - | ||
187 | - | ||
188 | - | func aP (aE) = ("duckCustomNameByAssetId_" + aE) | |
189 | - | ||
190 | - | ||
191 | - | func aQ (b) = ("accountCustomNameByAddr_" + b) | |
192 | - | ||
193 | - | ||
194 | - | func aR (b) = ("accRefBy_" + b) | |
195 | - | ||
196 | - | ||
197 | - | func aS (r) = ("onboardArtActivatedOnDuck_" + r) | |
198 | - | ||
199 | - | ||
200 | - | func aT (b) = ("onboardArtActivatedDuckBy_" + b) | |
201 | - | ||
202 | - | ||
203 | - | func aU (b) = ("accReferrals_" + b) | |
204 | - | ||
205 | - | ||
206 | - | func aV (aE) = ("duckOwner_" + aE) | |
207 | - | ||
208 | - | ||
209 | - | func aW (aM) = ("stakedDuckByOwner_" + aM) | |
210 | - | ||
211 | - | ||
212 | - | func aX (r) = ("backPack_" + r) | |
213 | - | ||
214 | - | ||
215 | - | func aY (r) = ("duckLocation_" + r) | |
216 | - | ||
217 | - | ||
218 | - | func aZ () = "contractsBlocked" | |
219 | - | ||
220 | - | ||
221 | - | func ba (bb) = ("%s%s__userGwlReleaseTime__" + bb) | |
222 | - | ||
223 | - | ||
224 | - | func bc () = "emergencyWarehouseProducts" | |
225 | - | ||
226 | - | ||
227 | - | let bd = 1 | |
228 | - | ||
229 | - | let be = 2 | |
230 | - | ||
231 | - | func bf (bg) = (parseIntValue(bg[al]) * aj) | |
232 | - | ||
233 | - | ||
234 | - | let bh = false | |
235 | - | ||
236 | - | let bi = take(drop(this.bytes, 1), 1) | |
237 | - | ||
238 | - | let bj = { | |
239 | - | let bk = bi | |
240 | - | if ((base58'2W' == bk)) | |
62 | + | func A (r) = ("savedHealth_" + r) | |
63 | + | ||
64 | + | ||
65 | + | func B (r) = ("savedLocation_" + r) | |
66 | + | ||
67 | + | ||
68 | + | let C = 10000 | |
69 | + | ||
70 | + | let D = 10000 | |
71 | + | ||
72 | + | let E = 2000 | |
73 | + | ||
74 | + | let F = 100000 | |
75 | + | ||
76 | + | let G = 1000000 | |
77 | + | ||
78 | + | let H = 5000000 | |
79 | + | ||
80 | + | let I = 10000 | |
81 | + | ||
82 | + | let J = 1000000 | |
83 | + | ||
84 | + | let K = 1000000 | |
85 | + | ||
86 | + | let L = 10000 | |
87 | + | ||
88 | + | func M (N) = fraction(d, pow(N, 4, e, 4, 4, DOWN), c) | |
89 | + | ||
90 | + | ||
91 | + | func O (P) = (100 + P) | |
92 | + | ||
93 | + | ||
94 | + | func Q (R,S) = { | |
95 | + | let T = M(S) | |
96 | + | [T, (f * (T - R))] | |
97 | + | } | |
98 | + | ||
99 | + | ||
100 | + | func U (V,r) = { | |
101 | + | let W = split(valueOrElse(getString(V, s(r)), "0_0_0_0_0"), "_") | |
102 | + | let X = valueOrElse(getInteger(V, u(r)), 0) | |
103 | + | let Y = valueOrElse(getInteger(V, q(r)), O(X)) | |
104 | + | [parseIntValue(W[h]), parseIntValue(W[i]), parseIntValue(W[j]), parseIntValue(W[k]), parseIntValue(W[l]), X, Y] | |
105 | + | } | |
106 | + | ||
107 | + | ||
108 | + | let Z = "LAND" | |
109 | + | ||
110 | + | let aa = "DUCK" | |
111 | + | ||
112 | + | let ab = "PRESALE" | |
113 | + | ||
114 | + | let ac = 6 | |
115 | + | ||
116 | + | let ad = 3456000 | |
117 | + | ||
118 | + | let ae = 86400000 | |
119 | + | ||
120 | + | let af = 10000000000 | |
121 | + | ||
122 | + | let ag = "Africa_F_Africa" | |
123 | + | ||
124 | + | let ah = 39637 | |
125 | + | ||
126 | + | let ai = 10 | |
127 | + | ||
128 | + | let aj = ["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"] | |
129 | + | ||
130 | + | let ak = ["Americas", "Europe", "Asia", "Africa", "Oceania"] | |
131 | + | ||
132 | + | let al = 10000000 | |
133 | + | ||
134 | + | let am = ["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_", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_", "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_"] | |
135 | + | ||
136 | + | let an = 6 | |
137 | + | ||
138 | + | let ao = 9 | |
139 | + | ||
140 | + | let ap = 10 | |
141 | + | ||
142 | + | let aq = 10 | |
143 | + | ||
144 | + | let ar = 0 | |
145 | + | ||
146 | + | let as = 1 | |
147 | + | ||
148 | + | let at = 2 | |
149 | + | ||
150 | + | let au = 3 | |
151 | + | ||
152 | + | let av = 4 | |
153 | + | ||
154 | + | let aw = 0 | |
155 | + | ||
156 | + | let ax = 1 | |
157 | + | ||
158 | + | let ay = 2 | |
159 | + | ||
160 | + | let az = 3 | |
161 | + | ||
162 | + | let aA = 0 | |
163 | + | ||
164 | + | let aB = 1 | |
165 | + | ||
166 | + | let aC = 2 | |
167 | + | ||
168 | + | let aD = 3 | |
169 | + | ||
170 | + | func aE (b) = ("lastTxIdByUser_" + b) | |
171 | + | ||
172 | + | ||
173 | + | func aF (aG) = ("nftOwner_" + aG) | |
174 | + | ||
175 | + | ||
176 | + | func aH (aG) = ("landCustomNameByAssetId_" + aG) | |
177 | + | ||
178 | + | ||
179 | + | func aI (aG) = ("stakedTime_" + aG) | |
180 | + | ||
181 | + | ||
182 | + | func aJ (aG) = ("infraLevel_" + aG) | |
183 | + | ||
184 | + | ||
185 | + | func aK (aL,aG) = makeString(["landArtStatus", aL, aG], "_") | |
186 | + | ||
187 | + | ||
188 | + | func aM (aN,aG,aO) = ((((("stakedTimeByTypeAssetIdAndOwner_" + aN) + "_") + aG) + "_") + aO) | |
189 | + | ||
190 | + | ||
191 | + | func aP (aQ) = ("wareHouse_" + aQ) | |
192 | + | ||
193 | + | ||
194 | + | func aR (aG) = ("duckCustomNameByAssetId_" + aG) | |
195 | + | ||
196 | + | ||
197 | + | func aS (b) = ("accountCustomNameByAddr_" + b) | |
198 | + | ||
199 | + | ||
200 | + | func aT (b) = ("accRefBy_" + b) | |
201 | + | ||
202 | + | ||
203 | + | func aU (r) = ("onboardArtActivatedOnDuck_" + r) | |
204 | + | ||
205 | + | ||
206 | + | func aV (b) = ("onboardArtActivatedDuckBy_" + b) | |
207 | + | ||
208 | + | ||
209 | + | func aW (b) = ("accReferrals_" + b) | |
210 | + | ||
211 | + | ||
212 | + | func aX (aG) = ("duckOwner_" + aG) | |
213 | + | ||
214 | + | ||
215 | + | func aY (aO) = ("stakedDuckByOwner_" + aO) | |
216 | + | ||
217 | + | ||
218 | + | func aZ (r) = ("backPack_" + r) | |
219 | + | ||
220 | + | ||
221 | + | func ba (r) = ("duckLocation_" + r) | |
222 | + | ||
223 | + | ||
224 | + | func bb () = "contractsBlocked" | |
225 | + | ||
226 | + | ||
227 | + | func bc (bd) = ("%s%s__userGwlReleaseTime__" + bd) | |
228 | + | ||
229 | + | ||
230 | + | func be () = "emergencyWarehouseProducts" | |
231 | + | ||
232 | + | ||
233 | + | let bf = "%s__lastTourId" | |
234 | + | ||
235 | + | func bg (bh) = ("%s%d__tourStaticData__" + toString(bh)) | |
236 | + | ||
237 | + | ||
238 | + | func bi (bh) = ("%s%d__tourDynamicData__" + toString(bh)) | |
239 | + | ||
240 | + | ||
241 | + | let bj = 0 | |
242 | + | ||
243 | + | let bk = 1 | |
244 | + | ||
245 | + | func bl (bm,bh) = { | |
246 | + | let bn = split(valueOrErrorMessage(getString(bm, bg(bh)), (("Error reading tournament " + toString(bh)) + " data")), "__") | |
247 | + | let bo = split(valueOrErrorMessage(getString(bm, bi(bh)), (("Error reading tournament " + toString(bh)) + " data")), "__") | |
248 | + | [bn, bo] | |
249 | + | } | |
250 | + | ||
251 | + | ||
252 | + | let bp = 6 | |
253 | + | ||
254 | + | let bq = 1 | |
255 | + | ||
256 | + | let br = 0 | |
257 | + | ||
258 | + | let bs = 1 | |
259 | + | ||
260 | + | let bt = 2 | |
261 | + | ||
262 | + | func bu (bv) = (parseIntValue(bv[an]) * al) | |
263 | + | ||
264 | + | ||
265 | + | let bw = false | |
266 | + | ||
267 | + | let bx = take(drop(this.bytes, 1), 1) | |
268 | + | ||
269 | + | let by = { | |
270 | + | let bz = bx | |
271 | + | if ((base58'2W' == bz)) | |
241 | 272 | then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
242 | - | else if ((base58'2T' == | |
273 | + | else if ((base58'2T' == bz)) | |
243 | 274 | then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63' | |
244 | 275 | else throw("Unknown chain") | |
245 | 276 | } | |
246 | 277 | ||
247 | - | let | |
248 | - | let | |
249 | - | if ((base58'2W' == | |
278 | + | let bA = { | |
279 | + | let bz = bx | |
280 | + | if ((base58'2W' == bz)) | |
250 | 281 | then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv" | |
251 | - | else if ((base58'2T' == | |
282 | + | else if ((base58'2T' == bz)) | |
252 | 283 | then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy" | |
253 | 284 | else throw("Unknown chain") | |
254 | 285 | } | |
255 | 286 | ||
256 | - | let | |
257 | - | let | |
258 | - | if ((base58'2W' == | |
287 | + | let bB = { | |
288 | + | let bz = bx | |
289 | + | if ((base58'2W' == bz)) | |
259 | 290 | then 10000000000 | |
260 | - | else if ((base58'2T' == | |
291 | + | else if ((base58'2T' == bz)) | |
261 | 292 | then 100000000 | |
262 | 293 | else throw("Unknown chain") | |
263 | 294 | } | |
264 | 295 | ||
265 | - | let | |
266 | - | let | |
267 | - | if ((base58'2W' == | |
296 | + | let bC = { | |
297 | + | let bz = bx | |
298 | + | if ((base58'2W' == bz)) | |
268 | 299 | then 600000 | |
269 | - | else if ((base58'2T' == | |
300 | + | else if ((base58'2T' == bz)) | |
270 | 301 | then 60000 | |
271 | 302 | else throw("Unknown chain") | |
272 | 303 | } | |
273 | 304 | ||
274 | - | let | |
275 | - | ||
276 | - | let | |
277 | - | ||
278 | - | let | |
279 | - | ||
280 | - | let | |
281 | - | ||
282 | - | let | |
283 | - | ||
284 | - | let | |
285 | - | ||
286 | - | let | |
287 | - | ||
288 | - | let | |
289 | - | ||
290 | - | let | |
291 | - | ||
292 | - | func | |
293 | - | ||
294 | - | ||
295 | - | let | |
296 | - | ||
297 | - | let | |
298 | - | ||
299 | - | let | |
300 | - | ||
301 | - | let | |
302 | - | ||
303 | - | let | |
304 | - | ||
305 | - | func | |
306 | - | ||
307 | - | ||
308 | - | func | |
309 | - | ||
310 | - | ||
311 | - | func | |
312 | - | ||
313 | - | ||
314 | - | func | |
315 | - | ||
316 | - | ||
317 | - | let | |
318 | - | ||
319 | - | let | |
320 | - | ||
321 | - | let | |
322 | - | ||
323 | - | let | |
324 | - | ||
325 | - | let | |
326 | - | ||
327 | - | let | |
328 | - | ||
329 | - | let | |
330 | - | ||
331 | - | let | |
332 | - | ||
333 | - | let | |
334 | - | ||
335 | - | let | |
336 | - | ||
337 | - | let | |
338 | - | ||
339 | - | let | |
340 | - | ||
341 | - | func | |
342 | - | ||
343 | - | ||
344 | - | func | |
345 | - | ||
346 | - | ||
347 | - | func | |
348 | - | ||
349 | - | ||
350 | - | func | |
351 | - | ||
352 | - | ||
353 | - | func | |
354 | - | let | |
355 | - | if ($isInstanceOf( | |
305 | + | let bD = "__" | |
306 | + | ||
307 | + | let bE = 1000000 | |
308 | + | ||
309 | + | let bF = 100000000 | |
310 | + | ||
311 | + | let bG = 25 | |
312 | + | ||
313 | + | let bH = 100 | |
314 | + | ||
315 | + | let bI = 225 | |
316 | + | ||
317 | + | let bJ = 400 | |
318 | + | ||
319 | + | let bK = 625 | |
320 | + | ||
321 | + | let bL = [0, 1, 2, 3, 4, 5] | |
322 | + | ||
323 | + | func bM (bN,bO) = valueOrErrorMessage(getString(bN, bO), makeString(["mandatory ", toString(bN), ".", bO, " is not defined"], "")) | |
324 | + | ||
325 | + | ||
326 | + | let bP = 1 | |
327 | + | ||
328 | + | let bQ = 2 | |
329 | + | ||
330 | + | let bR = 3 | |
331 | + | ||
332 | + | let bS = 4 | |
333 | + | ||
334 | + | let bT = 7 | |
335 | + | ||
336 | + | func bU () = "%s__restConfig" | |
337 | + | ||
338 | + | ||
339 | + | func bV () = "%s__restAddr" | |
340 | + | ||
341 | + | ||
342 | + | func bW (bX) = split_4C(bM(bX, bU()), bD) | |
343 | + | ||
344 | + | ||
345 | + | func bY (bZ,ca) = valueOrErrorMessage(addressFromString(bZ[ca]), ("Rest cfg doesn't contain address at index " + toString(ca))) | |
346 | + | ||
347 | + | ||
348 | + | let cb = addressFromStringValue(valueOrElse(getString(this, bV()), bA)) | |
349 | + | ||
350 | + | let bZ = bW(cb) | |
351 | + | ||
352 | + | let V = bY(bZ, bP) | |
353 | + | ||
354 | + | let cc = bY(bZ, bQ) | |
355 | + | ||
356 | + | let cd = bY(bZ, bR) | |
357 | + | ||
358 | + | let ce = bY(bZ, bS) | |
359 | + | ||
360 | + | let cf = bY(bZ, bT) | |
361 | + | ||
362 | + | let cg = 0 | |
363 | + | ||
364 | + | let ch = 1 | |
365 | + | ||
366 | + | let ci = 2 | |
367 | + | ||
368 | + | let cj = 3 | |
369 | + | ||
370 | + | let ck = 2 | |
371 | + | ||
372 | + | func cl (bN) = ("finishBlockForAddr_" + bN) | |
373 | + | ||
374 | + | ||
375 | + | func cm () = "resTypesProportions" | |
376 | + | ||
377 | + | ||
378 | + | func cn (aO) = ("stakedLandsByOwner_" + aO) | |
379 | + | ||
380 | + | ||
381 | + | func co (aO) = ("stakedPiecesByOwner_" + aO) | |
382 | + | ||
383 | + | ||
384 | + | func cp (cq) = { | |
385 | + | let bz = cq | |
386 | + | if ($isInstanceOf(bz, "String")) | |
356 | 387 | then { | |
357 | - | let | |
358 | - | | |
388 | + | let cr = bz | |
389 | + | cr | |
359 | 390 | } | |
360 | 391 | else throw("fail to cast into String") | |
361 | 392 | } | |
362 | 393 | ||
363 | 394 | ||
364 | - | func | |
365 | - | let | |
366 | - | if ($isInstanceOf( | |
395 | + | func cs (cq) = { | |
396 | + | let bz = cq | |
397 | + | if ($isInstanceOf(bz, "Int")) | |
367 | 398 | then { | |
368 | - | let | |
369 | - | | |
399 | + | let ct = bz | |
400 | + | ct | |
370 | 401 | } | |
371 | 402 | else throw("fail to cast into Int") | |
372 | 403 | } | |
373 | 404 | ||
374 | 405 | ||
375 | - | func | |
376 | - | let | |
377 | - | if (("S" == | |
378 | - | then | |
379 | - | else if (("M" == | |
380 | - | then | |
381 | - | else if (("L" == | |
382 | - | then | |
383 | - | else if (("XL" == | |
384 | - | then | |
385 | - | else if (("XXL" == | |
386 | - | then | |
406 | + | func cu (cv) = { | |
407 | + | let bz = cv | |
408 | + | if (("S" == bz)) | |
409 | + | then bG | |
410 | + | else if (("M" == bz)) | |
411 | + | then bH | |
412 | + | else if (("L" == bz)) | |
413 | + | then bI | |
414 | + | else if (("XL" == bz)) | |
415 | + | then bJ | |
416 | + | else if (("XXL" == bz)) | |
417 | + | then bK | |
387 | 418 | else throw("Unknown land size") | |
388 | 419 | } | |
389 | 420 | ||
390 | 421 | ||
391 | - | func | |
392 | - | ||
393 | - | ||
394 | - | let | |
395 | - | let | |
396 | - | if ((base58'2W' == | |
422 | + | func cw (cr) = isDefined(parseInt(cr)) | |
423 | + | ||
424 | + | ||
425 | + | let cx = { | |
426 | + | let bz = bx | |
427 | + | if ((base58'2W' == bz)) | |
397 | 428 | then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv") | |
398 | - | else if ((base58'2T' == | |
429 | + | else if ((base58'2T' == bz)) | |
399 | 430 | then this | |
400 | 431 | else throw("Unknown chain") | |
401 | 432 | } | |
402 | 433 | ||
403 | - | let | |
404 | - | let | |
405 | - | if ((base58'2W' == | |
434 | + | let cy = { | |
435 | + | let bz = bx | |
436 | + | if ((base58'2W' == bz)) | |
406 | 437 | then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb") | |
407 | - | else if ((base58'2T' == | |
438 | + | else if ((base58'2T' == bz)) | |
408 | 439 | then this | |
409 | 440 | else throw("Unknown chain") | |
410 | 441 | } | |
411 | 442 | ||
412 | - | let | |
413 | - | ||
414 | - | let | |
415 | - | ||
416 | - | let | |
417 | - | ||
418 | - | let | |
419 | - | ||
420 | - | let | |
421 | - | ||
422 | - | let | |
423 | - | ||
424 | - | let | |
425 | - | let | |
426 | - | if ((base58'2W' == | |
443 | + | let cz = base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
444 | + | ||
445 | + | let cA = [30, 60, 120] | |
446 | + | ||
447 | + | let cB = 300000 | |
448 | + | ||
449 | + | let cC = 5000000 | |
450 | + | ||
451 | + | let cD = 50 | |
452 | + | ||
453 | + | let cE = 10000000 | |
454 | + | ||
455 | + | let cF = { | |
456 | + | let bz = bx | |
457 | + | if ((base58'2W' == bz)) | |
427 | 458 | then 252289527462 | |
428 | - | else if ((base58'2T' == | |
459 | + | else if ((base58'2T' == bz)) | |
429 | 460 | then 2522895274 | |
430 | 461 | else throw("Unknown chain") | |
431 | 462 | } | |
432 | 463 | ||
433 | - | let | |
434 | - | let | |
435 | - | if ((base58'2W' == | |
464 | + | let cG = { | |
465 | + | let bz = bx | |
466 | + | if ((base58'2W' == bz)) | |
436 | 467 | then 250000000 | |
437 | - | else if ((base58'2T' == | |
468 | + | else if ((base58'2T' == bz)) | |
438 | 469 | then 250000000 | |
439 | 470 | else throw("Unknown chain") | |
440 | 471 | } | |
441 | 472 | ||
442 | - | let | |
443 | - | ||
444 | - | let | |
445 | - | ||
446 | - | let | |
447 | - | ||
448 | - | let | |
449 | - | ||
450 | - | let | |
451 | - | ||
452 | - | let | |
453 | - | ||
454 | - | let | |
455 | - | ||
456 | - | func | |
457 | - | ||
458 | - | ||
459 | - | func | |
460 | - | ||
461 | - | ||
462 | - | func | |
463 | - | ||
464 | - | ||
465 | - | func | |
466 | - | ||
467 | - | ||
468 | - | func | |
469 | - | ||
470 | - | ||
471 | - | func | |
472 | - | ||
473 | - | ||
474 | - | func | |
475 | - | ||
476 | - | ||
477 | - | func | |
478 | - | ||
479 | - | ||
480 | - | func | |
481 | - | ||
482 | - | ||
483 | - | let | |
484 | - | ||
485 | - | let | |
486 | - | ||
487 | - | let | |
488 | - | ||
489 | - | let | |
490 | - | ||
491 | - | let | |
492 | - | ||
493 | - | let | |
494 | - | ||
495 | - | let | |
496 | - | ||
497 | - | func | |
498 | - | ||
499 | - | ||
500 | - | func | |
501 | - | let | |
502 | - | if ((0 >= | |
473 | + | let cH = toBigInt(5) | |
474 | + | ||
475 | + | let cI = toBigInt(20) | |
476 | + | ||
477 | + | let cJ = toBigInt((20 * 20)) | |
478 | + | ||
479 | + | let cK = toBigInt(((20 * 20) * 20)) | |
480 | + | ||
481 | + | let cL = toBigInt((((20 * 20) * 20) * 20)) | |
482 | + | ||
483 | + | let cM = toBigInt(((((20 * 20) * 20) * 20) * 20)) | |
484 | + | ||
485 | + | let cN = 500 | |
486 | + | ||
487 | + | func cO () = "nextLandNum" | |
488 | + | ||
489 | + | ||
490 | + | func cP (cQ) = ("landToAsset_" + cQ) | |
491 | + | ||
492 | + | ||
493 | + | func cR (cS) = ("landByCustomName_" + cS) | |
494 | + | ||
495 | + | ||
496 | + | func cT (aG,aO) = ((("infraLevelByAssetIdAndOwner_" + aG) + "_") + aO) | |
497 | + | ||
498 | + | ||
499 | + | func cU (aL,aG,aO) = makeString(["landArtStatusByTypeAssetIdAndOwner", aL, aG, aO], "_") | |
500 | + | ||
501 | + | ||
502 | + | func cV (cQ) = ("landOwner_" + cQ) | |
503 | + | ||
504 | + | ||
505 | + | func cW (cS) = ("duckByCustomName_" + cS) | |
506 | + | ||
507 | + | ||
508 | + | func cX (cS) = ("accountByCustomName_" + cS) | |
509 | + | ||
510 | + | ||
511 | + | func cY () = "oldiesList" | |
512 | + | ||
513 | + | ||
514 | + | let cZ = 0 | |
515 | + | ||
516 | + | let da = 1 | |
517 | + | ||
518 | + | let db = 2 | |
519 | + | ||
520 | + | let dc = 0 | |
521 | + | ||
522 | + | let dd = 5 | |
523 | + | ||
524 | + | let de = 6 | |
525 | + | ||
526 | + | let df = 7 | |
527 | + | ||
528 | + | func dg (cQ,cv) = ((Z + cQ) + cv) | |
529 | + | ||
530 | + | ||
531 | + | func dh (di,dj) = { | |
532 | + | let dk = (((((dj[0] + dj[1]) + dj[2]) + dj[3]) + dj[4]) + dj[5]) | |
533 | + | if ((0 >= dk)) | |
503 | 534 | then throw("Zero weights sum") | |
504 | 535 | else { | |
505 | - | let | |
506 | - | func | |
507 | - | ||
508 | - | let | |
509 | - | let | |
510 | - | let | |
511 | - | func | |
512 | - | then | |
513 | - | else | |
514 | - | ||
515 | - | func | |
516 | - | then | |
536 | + | let dl = fraction(di, bE, dk) | |
537 | + | func dm (dn,do) = (dn :+ fraction(do, dl, bE)) | |
538 | + | ||
539 | + | let dp = dj | |
540 | + | let dq = size(dp) | |
541 | + | let dr = nil | |
542 | + | func ds (dt,du) = if ((du >= dq)) | |
543 | + | then dt | |
544 | + | else dm(dt, dp[du]) | |
545 | + | ||
546 | + | func dv (dt,du) = if ((du >= dq)) | |
547 | + | then dt | |
517 | 548 | else throw("List size exceeds 6") | |
518 | 549 | ||
519 | - | | |
520 | - | } | |
521 | - | } | |
522 | - | ||
523 | - | ||
524 | - | func | |
525 | - | let | |
526 | - | if ((size( | |
550 | + | dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6) | |
551 | + | } | |
552 | + | } | |
553 | + | ||
554 | + | ||
555 | + | func dw (di) = { | |
556 | + | let dx = split(value(getString(cm())), "_") | |
557 | + | if ((size(dx) != ac)) | |
527 | 558 | then throw("Wrong proportions data") | |
528 | 559 | else { | |
529 | - | let | |
530 | - | | |
531 | - | } | |
532 | - | } | |
533 | - | ||
534 | - | ||
535 | - | func | |
536 | - | let | |
537 | - | func | |
538 | - | let | |
539 | - | if ((0 > | |
540 | - | then throw(((((("Not enough material idx=" + toString( | |
541 | - | else ( | |
542 | - | } | |
543 | - | ||
544 | - | if ( | |
560 | + | let dy = [parseIntValue(dx[0]), parseIntValue(dx[1]), parseIntValue(dx[2]), parseIntValue(dx[3]), parseIntValue(dx[4]), parseIntValue(dx[5])] | |
561 | + | dh(di, dy) | |
562 | + | } | |
563 | + | } | |
564 | + | ||
565 | + | ||
566 | + | func dz (dA,dB,dC) = { | |
567 | + | let dD = dw(dC) | |
568 | + | func dE (dn,ca) = { | |
569 | + | let dF = (parseIntValue(dB[ca]) - dD[ca]) | |
570 | + | if ((0 > dF)) | |
571 | + | then throw(((((("Not enough material idx=" + toString(ca)) + ", you have ") + dB[ca]) + ", but need ") + toString(dD[ca]))) | |
572 | + | else (dn :+ toString(dF)) | |
573 | + | } | |
574 | + | ||
575 | + | if (dA) | |
545 | 576 | then { | |
546 | - | let | |
547 | - | let | |
548 | - | let | |
549 | - | func | |
550 | - | then | |
551 | - | else | |
552 | - | ||
553 | - | func | |
554 | - | then | |
577 | + | let dp = bL | |
578 | + | let dq = size(dp) | |
579 | + | let dr = nil | |
580 | + | func ds (dt,du) = if ((du >= dq)) | |
581 | + | then dt | |
582 | + | else dE(dt, dp[du]) | |
583 | + | ||
584 | + | func dv (dt,du) = if ((du >= dq)) | |
585 | + | then dt | |
555 | 586 | else throw("List size exceeds 6") | |
556 | 587 | ||
557 | - | | |
558 | - | } | |
559 | - | else | |
560 | - | } | |
561 | - | ||
562 | - | ||
563 | - | func | |
564 | - | then | |
588 | + | dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6) | |
589 | + | } | |
590 | + | else dB | |
591 | + | } | |
592 | + | ||
593 | + | ||
594 | + | func dG (dH,dI) = if ((dI == "")) | |
595 | + | then dH | |
565 | 596 | else { | |
566 | - | func | |
567 | - | let | |
568 | - | if ((size( | |
597 | + | func dJ (dn,dK) = { | |
598 | + | let dL = split(dK, ",") | |
599 | + | if ((size(dL) != 2)) | |
569 | 600 | then throw("Incorrect format, should be index,amount") | |
570 | 601 | else { | |
571 | - | let | |
572 | - | if (if ((0 > | |
602 | + | let ca = parseIntValue(dL[0]) | |
603 | + | if (if ((0 > ca)) | |
573 | 604 | then true | |
574 | - | else ( | |
605 | + | else (ca >= size(am))) | |
575 | 606 | then throw("Unknown product idx") | |
576 | 607 | else { | |
577 | - | let | |
578 | - | let | |
579 | - | if ((size( | |
580 | - | then throw((("You don't have " + | |
608 | + | let dM = parseIntValue(dL[1]) | |
609 | + | let dN = split(dn, (dL[0] + ":")) | |
610 | + | if ((size(dN) != 2)) | |
611 | + | then throw((("You don't have " + aj[ca]) + " equipped")) | |
581 | 612 | else { | |
582 | - | let | |
583 | - | let | |
613 | + | let dO = dN[1] | |
614 | + | let dP = if (cw(take(drop(dO, 1), 1))) | |
584 | 615 | then 2 | |
585 | 616 | else 1 | |
586 | - | let | |
587 | - | let | |
588 | - | let | |
589 | - | then ( | |
590 | - | else throw(((((("You equipped " + toString( | |
591 | - | (((( | |
617 | + | let dQ = parseIntValue(take(dO, dP)) | |
618 | + | let dR = drop(dO, dP) | |
619 | + | let dS = if ((dQ >= dM)) | |
620 | + | then (dQ - dM) | |
621 | + | else throw(((((("You equipped " + toString(dQ)) + " of ") + aj[ca]) + ", but tried to use ") + toString(dM))) | |
622 | + | ((((dN[0] + dL[0]) + ":") + toString(dS)) + dR) | |
592 | 623 | } | |
593 | 624 | } | |
594 | 625 | } | |
595 | 626 | } | |
596 | 627 | ||
597 | - | let | |
598 | - | let | |
599 | - | let | |
600 | - | func | |
601 | - | then | |
602 | - | else | |
603 | - | ||
604 | - | func | |
605 | - | then | |
628 | + | let dp = split(dI, "_") | |
629 | + | let dq = size(dp) | |
630 | + | let dr = dH | |
631 | + | func ds (dt,du) = if ((du >= dq)) | |
632 | + | then dt | |
633 | + | else dJ(dt, dp[du]) | |
634 | + | ||
635 | + | func dv (dt,du) = if ((du >= dq)) | |
636 | + | then dt | |
606 | 637 | else throw("List size exceeds 10") | |
607 | 638 | ||
608 | - | | |
609 | - | } | |
610 | - | ||
611 | - | ||
612 | - | func | |
613 | - | let | |
639 | + | dv(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
640 | + | } | |
641 | + | ||
642 | + | ||
643 | + | func dT (dU) = { | |
644 | + | let dV = if ((dU == "")) | |
614 | 645 | then nil | |
615 | - | else split( | |
616 | - | func | |
617 | - | let | |
618 | - | let | |
619 | - | then parseIntValue( | |
646 | + | else split(dU, "_") | |
647 | + | func dW (dn,bv) = { | |
648 | + | let dX = (size(dn) / 8) | |
649 | + | let dQ = if ((size(dV) > dX)) | |
650 | + | then parseIntValue(dV[dX]) | |
620 | 651 | else 0 | |
621 | - | ( | |
622 | - | } | |
623 | - | ||
624 | - | let | |
625 | - | let | |
626 | - | let | |
627 | - | func | |
628 | - | then | |
629 | - | else | |
630 | - | ||
631 | - | func | |
632 | - | then | |
652 | + | (dn + toBytes(dQ)) | |
653 | + | } | |
654 | + | ||
655 | + | let dp = am | |
656 | + | let dq = size(dp) | |
657 | + | let dr = base58'' | |
658 | + | func ds (dt,du) = if ((du >= dq)) | |
659 | + | then dt | |
660 | + | else dW(dt, dp[du]) | |
661 | + | ||
662 | + | func dv (dt,du) = if ((du >= dq)) | |
663 | + | then dt | |
633 | 664 | else throw("List size exceeds 50") | |
634 | 665 | ||
635 | - | | |
636 | - | } | |
637 | - | ||
638 | - | ||
639 | - | func | |
640 | - | func | |
641 | - | let | |
642 | - | let | |
643 | - | ( | |
666 | + | dv(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(dr, 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) | |
667 | + | } | |
668 | + | ||
669 | + | ||
670 | + | func dY (dZ) = { | |
671 | + | func ea (dn,bv) = { | |
672 | + | let dX = size(dn) | |
673 | + | let eb = take(drop(dZ, (8 * dX)), 8) | |
674 | + | (dn :+ toString(toInt(eb))) | |
644 | 675 | } | |
645 | 676 | ||
646 | 677 | makeString({ | |
647 | - | let | |
648 | - | let | |
649 | - | let | |
650 | - | func | |
651 | - | then | |
652 | - | else | |
653 | - | ||
654 | - | func | |
655 | - | then | |
678 | + | let dp = am | |
679 | + | let dq = size(dp) | |
680 | + | let dr = nil | |
681 | + | func ds (dt,du) = if ((du >= dq)) | |
682 | + | then dt | |
683 | + | else ea(dt, dp[du]) | |
684 | + | ||
685 | + | func dv (dt,du) = if ((du >= dq)) | |
686 | + | then dt | |
656 | 687 | else throw("List size exceeds 50") | |
657 | 688 | ||
658 | - | | |
689 | + | dv(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(dr, 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) | |
659 | 690 | }, "_") | |
660 | 691 | } | |
661 | 692 | ||
662 | 693 | ||
663 | - | func | |
664 | - | func | |
665 | - | then throw(("Requirement not satisfied: " + g[ | |
694 | + | func ec (ed,ee) = { | |
695 | + | func ef (dn,dX) = if ((parseIntValue(ee[dX]) > ed[dX])) | |
696 | + | then throw(("Requirement not satisfied: " + g[dX])) | |
666 | 697 | else true | |
667 | 698 | ||
668 | - | let | |
669 | - | let | |
670 | - | let | |
671 | - | func | |
672 | - | then | |
673 | - | else | |
674 | - | ||
675 | - | func | |
676 | - | then | |
699 | + | let dp = [0, 1, 2, 3, 4, 5, 6] | |
700 | + | let dq = size(dp) | |
701 | + | let dr = false | |
702 | + | func ds (dt,du) = if ((du >= dq)) | |
703 | + | then dt | |
704 | + | else ef(dt, dp[du]) | |
705 | + | ||
706 | + | func dv (dt,du) = if ((du >= dq)) | |
707 | + | then dt | |
677 | 708 | else throw("List size exceeds 7") | |
678 | 709 | ||
679 | - | | |
680 | - | } | |
681 | - | ||
682 | - | ||
683 | - | func | |
684 | - | let | |
685 | - | if ((size( | |
710 | + | dv(ds(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6), 7) | |
711 | + | } | |
712 | + | ||
713 | + | ||
714 | + | func eg (eh,dV,ei,ej,ek,el,ed) = { | |
715 | + | let dL = split(eh, ":") | |
716 | + | if ((size(dL) != 2)) | |
686 | 717 | then throw("Incorrect format, should be index:amount") | |
687 | - | else if (if (!( | |
688 | - | then (size( | |
718 | + | else if (if (!(ei)) | |
719 | + | then (size(dL[0]) != 2) | |
689 | 720 | else false) | |
690 | 721 | then throw("Product idx should be 2 digits, zero padded") | |
691 | 722 | else { | |
692 | - | let | |
693 | - | let | |
694 | - | if (if ((0 > | |
723 | + | let em = parseIntValue(dL[0]) | |
724 | + | let en = parseIntValue(dL[1]) | |
725 | + | if (if ((0 > em)) | |
695 | 726 | then true | |
696 | - | else ( | |
727 | + | else (em >= size(am))) | |
697 | 728 | then throw("Unknown product idx") | |
698 | - | else if ((0 > | |
729 | + | else if ((0 > en)) | |
699 | 730 | then throw("Count can't be negative") | |
700 | - | else if (( | |
701 | - | then throw(((("Can't put more than " + toString(p)) + " of ") + | |
702 | - | else if (( | |
703 | - | then $Tuple2( | |
731 | + | else if ((en > p)) | |
732 | + | then throw(((("Can't put more than " + toString(p)) + " of ") + aj[em])) | |
733 | + | else if ((en == 0)) | |
734 | + | then $Tuple2(dV, false) | |
704 | 735 | else { | |
705 | - | let | |
706 | - | let | |
707 | - | let | |
708 | - | let | |
709 | - | if (if (!( | |
710 | - | then ( | |
736 | + | let eo = take(dV, (8 * em)) | |
737 | + | let dQ = toInt(take(drop(dV, (8 * em)), 8)) | |
738 | + | let dR = drop(dV, (8 * (em + 1))) | |
739 | + | let bv = split(am[em], "_") | |
740 | + | if (if (!(ei)) | |
741 | + | then (en > dQ) | |
711 | 742 | else false) | |
712 | - | then throw(((((("You have " + toString( | |
743 | + | then throw(((((("You have " + toString(dQ)) + " of ") + aj[em]) + ", but tried to use ") + toString(en))) | |
713 | 744 | else { | |
714 | - | let | |
715 | - | then | |
745 | + | let ep = if (if (!(ei)) | |
746 | + | then ec(ed, split(bv[ao], ",")) | |
716 | 747 | else false) | |
717 | 748 | then { | |
718 | - | let | |
719 | - | if (( | |
749 | + | let eq = bv[ap] | |
750 | + | if ((eq == "")) | |
720 | 751 | then throw("Item cannot be equipped") | |
721 | 752 | else { | |
722 | - | let | |
723 | - | let | |
724 | - | if (( | |
753 | + | let er = parseIntValue(eq) | |
754 | + | let es = (er / 100) | |
755 | + | if ((ej != es)) | |
725 | 756 | then throw("Segment incompatible") | |
726 | 757 | else { | |
727 | - | let | |
728 | - | if (( | |
758 | + | let et = ((er % 100) / 10) | |
759 | + | if ((ek != et)) | |
729 | 760 | then throw("Slot incompatible") | |
730 | 761 | else { | |
731 | - | let | |
732 | - | if (if (( | |
733 | - | then ( | |
762 | + | let eu = (er % 10) | |
763 | + | if (if ((el != 0)) | |
764 | + | then (eu > 1) | |
734 | 765 | else false) | |
735 | 766 | then throw("Big items should occupy slot 0") | |
736 | - | else ( | |
767 | + | else (eu > 1) | |
737 | 768 | } | |
738 | 769 | } | |
739 | 770 | } | |
740 | 771 | } | |
741 | 772 | else false | |
742 | - | $Tuple2((( | |
743 | - | then | |
744 | - | else -( | |
773 | + | $Tuple2(((eo + toBytes((dQ + (if (ei) | |
774 | + | then en | |
775 | + | else -(en))))) + dR), ep) | |
745 | 776 | } | |
746 | 777 | } | |
747 | 778 | } | |
748 | 779 | } | |
749 | 780 | ||
750 | 781 | ||
751 | - | func | |
782 | + | func ev (ew,ex,ei,ej,ek,ee) = if ((ew != "")) | |
752 | 783 | then { | |
753 | - | let | |
754 | - | if ((size( | |
784 | + | let ey = split(ew, ",") | |
785 | + | if ((size(ey) > o)) | |
755 | 786 | then throw("Wrong slots format") | |
756 | 787 | else { | |
757 | - | let | |
758 | - | let | |
759 | - | then | |
788 | + | let ez = ey[0] | |
789 | + | let eA = if ((size(ey) > 1)) | |
790 | + | then ey[1] | |
760 | 791 | else "" | |
761 | - | if (if (( | |
762 | - | then ( | |
792 | + | if (if ((ez == "")) | |
793 | + | then (eA == "") | |
763 | 794 | else false) | |
764 | - | then | |
795 | + | then ex | |
765 | 796 | else { | |
766 | - | let | |
767 | - | then | |
768 | - | else $Tuple2( | |
769 | - | if (( | |
770 | - | then if ( | |
797 | + | let eB = if ((ez != "")) | |
798 | + | then eg(ez, ex, ei, ej, ek, 0, ee) | |
799 | + | else $Tuple2(ex, false) | |
800 | + | if ((eA != "")) | |
801 | + | then if (eB._2) | |
771 | 802 | then throw("Big item already occupies slot") | |
772 | - | else | |
773 | - | else | |
803 | + | else eg(eA, eB._1, ei, ej, ek, 1, ee)._1 | |
804 | + | else eB._1 | |
774 | 805 | } | |
775 | 806 | } | |
776 | 807 | } | |
777 | - | else | |
778 | - | ||
779 | - | ||
780 | - | func | |
781 | - | func | |
782 | - | let | |
783 | - | let | |
784 | - | if ((size( | |
808 | + | else ex | |
809 | + | ||
810 | + | ||
811 | + | func eC (eD,eE,ei,ee) = { | |
812 | + | func ej (dn,eF) = { | |
813 | + | let dX = dn._1 | |
814 | + | let ek = split(eF, ";") | |
815 | + | if ((size(ek) != n)) | |
785 | 816 | then throw("Wrong segment format") | |
786 | 817 | else { | |
787 | - | let | |
788 | - | let | |
789 | - | if (if (( | |
790 | - | then ( | |
818 | + | let eG = ek[0] | |
819 | + | let eH = ek[1] | |
820 | + | if (if ((eG == "")) | |
821 | + | then (eH == "") | |
791 | 822 | else false) | |
792 | - | then $Tuple2(( | |
823 | + | then $Tuple2((dX + 1), dn._2) | |
793 | 824 | else { | |
794 | - | let | |
795 | - | $Tuple2(( | |
825 | + | let eI = ev(eG, dn._2, ei, dX, 0, ee) | |
826 | + | $Tuple2((dX + 1), ev(eH, eI, ei, dX, 1, ee)) | |
796 | 827 | } | |
797 | 828 | } | |
798 | 829 | } | |
799 | 830 | ||
800 | - | ( let | |
801 | - | let | |
802 | - | let | |
803 | - | func | |
804 | - | then | |
805 | - | else | |
806 | - | ||
807 | - | func | |
808 | - | then | |
831 | + | ( let dp = eD | |
832 | + | let dq = size(dp) | |
833 | + | let dr = $Tuple2(0, eE) | |
834 | + | func ds (dt,du) = if ((du >= dq)) | |
835 | + | then dt | |
836 | + | else ej(dt, dp[du]) | |
837 | + | ||
838 | + | func dv (dt,du) = if ((du >= dq)) | |
839 | + | then dt | |
809 | 840 | else throw("List size exceeds 6") | |
810 | 841 | ||
811 | - | | |
812 | - | } | |
813 | - | ||
814 | - | ||
815 | - | func | |
842 | + | dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6))._2 | |
843 | + | } | |
844 | + | ||
845 | + | ||
846 | + | func eJ (eK,eL,eM,eN) = if ((size(eK) != ac)) | |
816 | 847 | then throw("Wrong proportions data") | |
817 | 848 | else { | |
818 | - | func | |
819 | - | let | |
820 | - | if ((0 > | |
821 | - | then throw(((((((("Panic! Pieces of type=" + toString( | |
822 | - | else ( | |
823 | - | } | |
824 | - | ||
825 | - | let | |
826 | - | let | |
827 | - | let | |
828 | - | func | |
829 | - | then | |
830 | - | else | |
831 | - | ||
832 | - | func | |
833 | - | then | |
849 | + | func eO (dn,eP) = { | |
850 | + | let dF = (parseIntValue(eK[eP]) + ((eN * eL[eP]) * eM)) | |
851 | + | if ((0 > dF)) | |
852 | + | then throw(((((((("Panic! Pieces of type=" + toString(eP)) + ", sign=") + toString(eN)) + ", terrainCounts[i]=") + toString(eL[eP])) + ", landSizeIndex=") + toString(eM))) | |
853 | + | else (dn :+ toString(dF)) | |
854 | + | } | |
855 | + | ||
856 | + | let dp = bL | |
857 | + | let dq = size(dp) | |
858 | + | let dr = nil | |
859 | + | func ds (dt,du) = if ((du >= dq)) | |
860 | + | then dt | |
861 | + | else eO(dt, dp[du]) | |
862 | + | ||
863 | + | func dv (dt,du) = if ((du >= dq)) | |
864 | + | then dt | |
834 | 865 | else throw("List size exceeds 6") | |
835 | 866 | ||
836 | - | | |
837 | - | } | |
838 | - | ||
839 | - | ||
840 | - | func | |
841 | - | let | |
842 | - | makeString( | |
843 | - | } | |
844 | - | ||
845 | - | ||
846 | - | func | |
847 | - | ||
848 | - | ||
849 | - | func | |
850 | - | func | |
851 | - | let | |
852 | - | ( | |
853 | - | } | |
854 | - | ||
855 | - | let | |
856 | - | let | |
857 | - | let | |
858 | - | let | |
859 | - | func | |
860 | - | then | |
861 | - | else | |
862 | - | ||
863 | - | func | |
864 | - | then | |
867 | + | dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6) | |
868 | + | } | |
869 | + | ||
870 | + | ||
871 | + | func eQ (eL,eM,eN) = { | |
872 | + | let eK = split(valueOrElse(getString(cm()), "0_0_0_0_0_0"), "_") | |
873 | + | makeString(eJ(eK, eL, eM, eN), "_") | |
874 | + | } | |
875 | + | ||
876 | + | ||
877 | + | func eR (eS) = [(size(split(eS, "A")) - 1), (size(split(eS, "B")) - 1), (size(split(eS, "C")) - 1), (size(split(eS, "D")) - 1), (size(split(eS, "E")) - 1), (size(split(eS, "F")) - 1)] | |
878 | + | ||
879 | + | ||
880 | + | func eT (eU,eL,eV,eM,eW) = { | |
881 | + | func eX (dn,eP) = { | |
882 | + | let eY = ((fraction(eV, eW, ae) * eL[eP]) * eM) | |
883 | + | (dn :+ toString((parseIntValue(eU[eP]) + eY))) | |
884 | + | } | |
885 | + | ||
886 | + | let dy = { | |
887 | + | let dp = bL | |
888 | + | let dq = size(dp) | |
889 | + | let dr = nil | |
890 | + | func ds (dt,du) = if ((du >= dq)) | |
891 | + | then dt | |
892 | + | else eX(dt, dp[du]) | |
893 | + | ||
894 | + | func dv (dt,du) = if ((du >= dq)) | |
895 | + | then dt | |
865 | 896 | else throw("List size exceeds 6") | |
866 | 897 | ||
867 | - | | |
868 | - | } | |
869 | - | makeString( | |
870 | - | } | |
871 | - | ||
872 | - | ||
873 | - | func | |
874 | - | func | |
875 | - | let | |
876 | - | $Tuple2(( | |
877 | - | } | |
878 | - | ||
879 | - | let | |
880 | - | let | |
881 | - | let | |
882 | - | func | |
883 | - | then | |
884 | - | else | |
885 | - | ||
886 | - | func | |
887 | - | then | |
898 | + | dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6) | |
899 | + | } | |
900 | + | makeString(dy, "_") | |
901 | + | } | |
902 | + | ||
903 | + | ||
904 | + | func eZ (eL,eV,eM,eW) = { | |
905 | + | func eX (dn,eP) = { | |
906 | + | let eY = ((fraction(eV, eW, ae) * eL[eP]) * eM) | |
907 | + | $Tuple2((dn._1 :+ eY), (dn._2 + eY)) | |
908 | + | } | |
909 | + | ||
910 | + | let dp = bL | |
911 | + | let dq = size(dp) | |
912 | + | let dr = $Tuple2(nil, 0) | |
913 | + | func ds (dt,du) = if ((du >= dq)) | |
914 | + | then dt | |
915 | + | else eX(dt, dp[du]) | |
916 | + | ||
917 | + | func dv (dt,du) = if ((du >= dq)) | |
918 | + | then dt | |
888 | 919 | else throw("List size exceeds 6") | |
889 | 920 | ||
890 | - | | |
891 | - | } | |
892 | - | ||
893 | - | ||
894 | - | func | |
895 | - | let | |
896 | - | let | |
897 | - | if (( | |
898 | - | then $Tuple2(makeString( | |
899 | - | else if (( | |
921 | + | dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6) | |
922 | + | } | |
923 | + | ||
924 | + | ||
925 | + | func fa (fb,fc,fd,fe) = { | |
926 | + | let ff = fd._1 | |
927 | + | let fg = fd._2 | |
928 | + | if ((fg == 0)) | |
929 | + | then $Tuple2(makeString(fb, "_"), makeString(fc, "_")) | |
930 | + | else if ((fe >= fg)) | |
900 | 931 | then { | |
901 | - | func | |
902 | - | ||
903 | - | let | |
904 | - | let | |
905 | - | let | |
906 | - | let | |
907 | - | func | |
908 | - | then | |
909 | - | else | |
910 | - | ||
911 | - | func | |
912 | - | then | |
932 | + | func fh (dn,eP) = (dn :+ toString((parseIntValue(fb[eP]) + ff[eP]))) | |
933 | + | ||
934 | + | let dy = { | |
935 | + | let dp = bL | |
936 | + | let dq = size(dp) | |
937 | + | let dr = nil | |
938 | + | func ds (dt,du) = if ((du >= dq)) | |
939 | + | then dt | |
940 | + | else fh(dt, dp[du]) | |
941 | + | ||
942 | + | func dv (dt,du) = if ((du >= dq)) | |
943 | + | then dt | |
913 | 944 | else throw("List size exceeds 6") | |
914 | 945 | ||
915 | - | | |
946 | + | dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6) | |
916 | 947 | } | |
917 | - | $Tuple2(makeString( | |
948 | + | $Tuple2(makeString(dy, "_"), makeString(fc, "_")) | |
918 | 949 | } | |
919 | 950 | else { | |
920 | - | func | |
921 | - | let | |
922 | - | $Tuple2(( | |
951 | + | func fi (dn,eP) = { | |
952 | + | let fj = fraction(ff[eP], fe, fg) | |
953 | + | $Tuple2((dn._1 :+ toString((parseIntValue(fb[eP]) + fj))), (dn._2 :+ toString(((parseIntValue(fc[eP]) + ff[eP]) - fj)))) | |
923 | 954 | } | |
924 | 955 | ||
925 | - | let | |
926 | - | let | |
927 | - | let | |
928 | - | let | |
929 | - | func | |
930 | - | then | |
931 | - | else | |
932 | - | ||
933 | - | func | |
934 | - | then | |
956 | + | let dy = { | |
957 | + | let dp = bL | |
958 | + | let dq = size(dp) | |
959 | + | let dr = $Tuple2(nil, nil) | |
960 | + | func ds (dt,du) = if ((du >= dq)) | |
961 | + | then dt | |
962 | + | else fi(dt, dp[du]) | |
963 | + | ||
964 | + | func dv (dt,du) = if ((du >= dq)) | |
965 | + | then dt | |
935 | 966 | else throw("List size exceeds 6") | |
936 | 967 | ||
937 | - | | |
968 | + | dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6) | |
938 | 969 | } | |
939 | - | $Tuple2(makeString( | |
970 | + | $Tuple2(makeString(dy._1, "_"), makeString(dy._2, "_")) | |
940 | 971 | } | |
941 | 972 | } | |
942 | 973 | ||
943 | 974 | ||
944 | - | func | |
945 | - | then | |
946 | - | else -( | |
947 | - | ||
948 | - | ||
949 | - | let | |
950 | - | ||
951 | - | func | |
952 | - | let | |
953 | - | let | |
975 | + | func fk (fl) = if ((fl >= toBigInt(0))) | |
976 | + | then fl | |
977 | + | else -(fl) | |
978 | + | ||
979 | + | ||
980 | + | let fm = [[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]] | |
981 | + | ||
982 | + | func fn (ct,fo) = { | |
983 | + | let fp = toInt((ct % cI)) | |
984 | + | let fq = if ((fo[0] > fp)) | |
954 | 985 | then "A" | |
955 | - | else if (( | |
986 | + | else if ((fo[1] > fp)) | |
956 | 987 | then "B" | |
957 | - | else if (( | |
988 | + | else if ((fo[2] > fp)) | |
958 | 989 | then "C" | |
959 | - | else if (( | |
990 | + | else if ((fo[3] > fp)) | |
960 | 991 | then "D" | |
961 | - | else if (( | |
992 | + | else if ((fo[4] > fp)) | |
962 | 993 | then "E" | |
963 | 994 | else "F" | |
964 | - | | |
965 | - | } | |
966 | - | ||
967 | - | ||
968 | - | func | |
969 | - | let | |
970 | - | func | |
971 | - | ||
972 | - | let | |
973 | - | let | |
974 | - | let | |
975 | - | let | |
976 | - | func | |
977 | - | then | |
978 | - | else | |
979 | - | ||
980 | - | func | |
981 | - | then | |
995 | + | fq | |
996 | + | } | |
997 | + | ||
998 | + | ||
999 | + | func fr (fs,ft) = { | |
1000 | + | let fu = fm[ft] | |
1001 | + | func fv (dn,do) = $Tuple2((((((dn._1 + fn(dn._2, fu)) + fn((dn._2 / cI), fu)) + fn((dn._2 / cJ), fu)) + fn((dn._2 / cK), fu)) + fn((dn._2 / cL), fu)), (dn._2 / cM)) | |
1002 | + | ||
1003 | + | let fw = { | |
1004 | + | let dp = [1, 2, 3, 4, 5] | |
1005 | + | let dq = size(dp) | |
1006 | + | let dr = $Tuple2("", (fs / cH)) | |
1007 | + | func ds (dt,du) = if ((du >= dq)) | |
1008 | + | then dt | |
1009 | + | else fv(dt, dp[du]) | |
1010 | + | ||
1011 | + | func dv (dt,du) = if ((du >= dq)) | |
1012 | + | then dt | |
982 | 1013 | else throw("List size exceeds 5") | |
983 | 1014 | ||
984 | - | | |
985 | - | } | |
986 | - | | |
987 | - | } | |
988 | - | ||
989 | - | ||
990 | - | let | |
991 | - | ||
992 | - | let | |
993 | - | ||
994 | - | func | |
995 | - | func | |
996 | - | let | |
997 | - | let | |
998 | - | let | |
1015 | + | dv(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5) | |
1016 | + | } | |
1017 | + | fw._1 | |
1018 | + | } | |
1019 | + | ||
1020 | + | ||
1021 | + | let fx = [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] | |
1022 | + | ||
1023 | + | let fy = ["A", "B", "C", "D", "E", "F"] | |
1024 | + | ||
1025 | + | func fz (fA,eM) = { | |
1026 | + | func fB (dn,cr) = { | |
1027 | + | let dX = dn._2 | |
1028 | + | let fC = parseIntValue(cr) | |
1029 | + | let fl = if ((fC == 0)) | |
999 | 1030 | then 0 | |
1000 | - | else if (( | |
1001 | - | then ( | |
1002 | - | else if (( | |
1031 | + | else if ((fC >= (4 * eM))) | |
1032 | + | then (fC / eM) | |
1033 | + | else if ((fC > (3 * eM))) | |
1003 | 1034 | then 3 | |
1004 | - | else ((( | |
1005 | - | $Tuple3(( | |
1006 | - | } | |
1007 | - | ||
1008 | - | let | |
1009 | - | let | |
1010 | - | let | |
1011 | - | let | |
1012 | - | func | |
1013 | - | then | |
1014 | - | else | |
1015 | - | ||
1016 | - | func | |
1017 | - | then | |
1035 | + | else (((fC - 1) / eM) + 1) | |
1036 | + | $Tuple3((dn._1 :+ fl), (dn._2 + 1), (dn._3 + fl)) | |
1037 | + | } | |
1038 | + | ||
1039 | + | let fw = { | |
1040 | + | let dp = fA | |
1041 | + | let dq = size(dp) | |
1042 | + | let dr = $Tuple3(nil, 0, 0) | |
1043 | + | func ds (dt,du) = if ((du >= dq)) | |
1044 | + | then dt | |
1045 | + | else fB(dt, dp[du]) | |
1046 | + | ||
1047 | + | func dv (dt,du) = if ((du >= dq)) | |
1048 | + | then dt | |
1018 | 1049 | else throw("List size exceeds 6") | |
1019 | 1050 | ||
1020 | - | | |
1021 | - | } | |
1022 | - | let | |
1023 | - | let | |
1024 | - | let | |
1025 | - | func | |
1026 | - | let | |
1027 | - | then ( | |
1028 | - | else | |
1029 | - | let | |
1051 | + | dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6) | |
1052 | + | } | |
1053 | + | let fD = fw._1 | |
1054 | + | let fE = value(indexOf(fD, max(fD))) | |
1055 | + | let fF = (fw._3 - 25) | |
1056 | + | func fG (dn,ca) = { | |
1057 | + | let fH = if ((ca == fE)) | |
1058 | + | then (fD[ca] - fF) | |
1059 | + | else fD[ca] | |
1060 | + | let fI = if ((fH == 0)) | |
1030 | 1061 | then nil | |
1031 | - | else split(drop(toString(pow(10, 0, | |
1032 | - | let | |
1033 | - | func | |
1034 | - | ||
1035 | - | let | |
1036 | - | let | |
1037 | - | let | |
1038 | - | let | |
1039 | - | func | |
1040 | - | then | |
1041 | - | else | |
1042 | - | ||
1043 | - | func | |
1044 | - | then | |
1062 | + | else split(drop(toString(pow(10, 0, fH, 0, 0, DOWN)), 1), "") | |
1063 | + | let er = fy[ca] | |
1064 | + | func fJ (fK,fL) = (fK :+ er) | |
1065 | + | ||
1066 | + | let fM = { | |
1067 | + | let dp = fI | |
1068 | + | let dq = size(dp) | |
1069 | + | let dr = nil | |
1070 | + | func fN (dt,du) = if ((du >= dq)) | |
1071 | + | then dt | |
1072 | + | else fJ(dt, dp[du]) | |
1073 | + | ||
1074 | + | func fO (dt,du) = if ((du >= dq)) | |
1075 | + | then dt | |
1045 | 1076 | else throw("List size exceeds 25") | |
1046 | 1077 | ||
1047 | - | | |
1048 | - | } | |
1049 | - | ( | |
1050 | - | } | |
1051 | - | ||
1052 | - | let | |
1053 | - | let | |
1054 | - | let | |
1055 | - | let | |
1056 | - | func | |
1057 | - | then | |
1058 | - | else | |
1059 | - | ||
1060 | - | func | |
1061 | - | then | |
1078 | + | fO(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(dr, 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) | |
1079 | + | } | |
1080 | + | (dn ++ fM) | |
1081 | + | } | |
1082 | + | ||
1083 | + | let dy = { | |
1084 | + | let dp = bL | |
1085 | + | let dq = size(dp) | |
1086 | + | let dr = nil | |
1087 | + | func fN (dt,du) = if ((du >= dq)) | |
1088 | + | then dt | |
1089 | + | else fG(dt, dp[du]) | |
1090 | + | ||
1091 | + | func fO (dt,du) = if ((du >= dq)) | |
1092 | + | then dt | |
1062 | 1093 | else throw("List size exceeds 6") | |
1063 | 1094 | ||
1064 | - | | |
1065 | - | } | |
1066 | - | func | |
1067 | - | ||
1068 | - | let | |
1069 | - | let | |
1070 | - | let | |
1071 | - | func | |
1072 | - | then | |
1073 | - | else | |
1074 | - | ||
1075 | - | func | |
1076 | - | then | |
1095 | + | fO(fN(fN(fN(fN(fN(fN(dr, 0), 1), 2), 3), 4), 5), 6) | |
1096 | + | } | |
1097 | + | func fP (dn,dX) = (dn + dy[dX]) | |
1098 | + | ||
1099 | + | let dp = fx | |
1100 | + | let dq = size(dp) | |
1101 | + | let dr = "" | |
1102 | + | func fQ (dt,du) = if ((du >= dq)) | |
1103 | + | then dt | |
1104 | + | else fP(dt, dp[du]) | |
1105 | + | ||
1106 | + | func fR (dt,du) = if ((du >= dq)) | |
1107 | + | then dt | |
1077 | 1108 | else throw("List size exceeds 25") | |
1078 | 1109 | ||
1079 | - | | |
1080 | - | } | |
1081 | - | ||
1082 | - | ||
1083 | - | func | |
1084 | - | let | |
1085 | - | [toString(valueOrElse(parseInt( | |
1086 | - | then | |
1087 | - | else "0_0_0_0_0_0", if ((size(split( | |
1088 | - | then | |
1089 | - | else "0_0_0_0_0_0", | |
1090 | - | } | |
1091 | - | ||
1092 | - | ||
1093 | - | func | |
1094 | - | let | |
1095 | - | (( | |
1096 | - | } | |
1097 | - | ||
1098 | - | ||
1099 | - | func | |
1100 | - | let | |
1101 | - | func | |
1102 | - | ||
1103 | - | func | |
1104 | - | let | |
1105 | - | let | |
1106 | - | $Tuple2(( | |
1107 | - | } | |
1108 | - | ||
1109 | - | let | |
1110 | - | let | |
1111 | - | let | |
1112 | - | let | |
1113 | - | func | |
1114 | - | then | |
1115 | - | else | |
1116 | - | ||
1117 | - | func | |
1118 | - | then | |
1110 | + | fR(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(dr, 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) | |
1111 | + | } | |
1112 | + | ||
1113 | + | ||
1114 | + | func fS (fT) = { | |
1115 | + | let fU = split(valueOrElse(getString(fT), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":") | |
1116 | + | [toString(valueOrElse(parseInt(fU[aA]), 0)), if ((size(split(fU[aB], "_")) == ac)) | |
1117 | + | then fU[aB] | |
1118 | + | else "0_0_0_0_0_0", if ((size(split(fU[aC], "_")) == ac)) | |
1119 | + | then fU[aC] | |
1120 | + | else "0_0_0_0_0_0", fU[aD]] | |
1121 | + | } | |
1122 | + | ||
1123 | + | ||
1124 | + | func fV (fW) = { | |
1125 | + | let dL = split(fW, "_") | |
1126 | + | ((af * (parseIntValue(dL[1]) + 1)) * parseIntValue(dL[0])) | |
1127 | + | } | |
1128 | + | ||
1129 | + | ||
1130 | + | func fX (fY) = { | |
1131 | + | let fZ = fY[au] | |
1132 | + | func ga (dn,gb) = (dn + parseIntValue(gb)) | |
1133 | + | ||
1134 | + | func gc (dn,gb) = { | |
1135 | + | let ca = dn._1 | |
1136 | + | let gd = (((parseIntValue(gb) + aq) - 1) / aq) | |
1137 | + | $Tuple2((ca + 1), (dn._2 + (gd * bF))) | |
1138 | + | } | |
1139 | + | ||
1140 | + | let ge = { | |
1141 | + | let dp = split(fY[as], "_") | |
1142 | + | let dq = size(dp) | |
1143 | + | let dr = 0 | |
1144 | + | func ds (dt,du) = if ((du >= dq)) | |
1145 | + | then dt | |
1146 | + | else ga(dt, dp[du]) | |
1147 | + | ||
1148 | + | func dv (dt,du) = if ((du >= dq)) | |
1149 | + | then dt | |
1119 | 1150 | else throw("List size exceeds 6") | |
1120 | 1151 | ||
1121 | - | | |
1122 | - | } | |
1123 | - | let | |
1124 | - | let | |
1125 | - | let | |
1126 | - | let | |
1127 | - | func | |
1128 | - | then | |
1129 | - | else | |
1130 | - | ||
1131 | - | func | |
1132 | - | then | |
1152 | + | dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6) | |
1153 | + | } | |
1154 | + | let gf = { | |
1155 | + | let dp = split(fY[at], "_") | |
1156 | + | let dq = size(dp) | |
1157 | + | let dr = 0 | |
1158 | + | func fN (dt,du) = if ((du >= dq)) | |
1159 | + | then dt | |
1160 | + | else ga(dt, dp[du]) | |
1161 | + | ||
1162 | + | func fO (dt,du) = if ((du >= dq)) | |
1163 | + | then dt | |
1133 | 1164 | else throw("List size exceeds 6") | |
1134 | 1165 | ||
1135 | - | | |
1136 | - | } | |
1137 | - | let | |
1166 | + | fO(fN(fN(fN(fN(fN(fN(dr, 0), 1), 2), 3), 4), 5), 6) | |
1167 | + | } | |
1168 | + | let gg = if ((fZ == "")) | |
1138 | 1169 | then 0 | |
1139 | - | else ( let | |
1140 | - | let | |
1141 | - | let | |
1142 | - | func | |
1143 | - | then | |
1144 | - | else | |
1145 | - | ||
1146 | - | func | |
1147 | - | then | |
1170 | + | else ( let dp = split_4C(fZ, "_") | |
1171 | + | let dq = size(dp) | |
1172 | + | let dr = $Tuple2(0, 0) | |
1173 | + | func fQ (dt,du) = if ((du >= dq)) | |
1174 | + | then dt | |
1175 | + | else gc(dt, dp[du]) | |
1176 | + | ||
1177 | + | func fR (dt,du) = if ((du >= dq)) | |
1178 | + | then dt | |
1148 | 1179 | else throw("List size exceeds 50") | |
1149 | 1180 | ||
1150 | - | | |
1151 | - | (( | |
1152 | - | } | |
1153 | - | ||
1154 | - | ||
1155 | - | func | |
1156 | - | let | |
1157 | - | let | |
1158 | - | let | |
1159 | - | let | |
1160 | - | let | |
1161 | - | let | |
1162 | - | then makeString(["0", toString( | |
1181 | + | fR(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(dr, 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 | |
1182 | + | ((ge + gf) + gg) | |
1183 | + | } | |
1184 | + | ||
1185 | + | ||
1186 | + | func gh (gi,gj,gk) = { | |
1187 | + | let fW = ((toString(gj) + "_") + toString(gk)) | |
1188 | + | let gl = fV(fW) | |
1189 | + | let gm = valueOrElse(getString(gi), (fW + ":0_0_0_0_0_0:0_0_0_0_0_0::0")) | |
1190 | + | let gn = split_4C(gm, ":") | |
1191 | + | let go = fX(gn) | |
1192 | + | let gp = if ((5 > size(gn))) | |
1193 | + | then makeString(["0", toString(go), toString((gl - go)), toString(gl)], "_") | |
1163 | 1194 | else { | |
1164 | - | let | |
1165 | - | let | |
1166 | - | let | |
1167 | - | then parseIntValue( | |
1168 | - | else | |
1169 | - | makeString([toString( | |
1170 | - | } | |
1171 | - | [ | |
1172 | - | then | |
1173 | - | else "0_0_0_0_0_0", if ((size(split( | |
1174 | - | then | |
1175 | - | else "0_0_0_0_0_0", | |
1176 | - | } | |
1177 | - | ||
1178 | - | ||
1179 | - | func | |
1180 | - | let | |
1181 | - | let | |
1182 | - | (( | |
1183 | - | } | |
1184 | - | ||
1185 | - | ||
1186 | - | func | |
1187 | - | let | |
1188 | - | then ((( | |
1189 | - | else -((((-( | |
1190 | - | ( | |
1191 | - | } | |
1192 | - | ||
1193 | - | ||
1194 | - | func | |
1195 | + | let gq = split(gn[av], "_") | |
1196 | + | let gr = parseIntValue(gq[aw]) | |
1197 | + | let gs = if ((size(gq) > 1)) | |
1198 | + | then parseIntValue(gq[ax]) | |
1199 | + | else go | |
1200 | + | makeString([toString(gr), toString(gs), toString(((gl - gr) - gs)), toString(gl)], "_") | |
1201 | + | } | |
1202 | + | [gn[ar], if ((size(split(gn[as], "_")) == ac)) | |
1203 | + | then gn[as] | |
1204 | + | else "0_0_0_0_0_0", if ((size(split(gn[at], "_")) == ac)) | |
1205 | + | then gn[at] | |
1206 | + | else "0_0_0_0_0_0", gn[au], gp] | |
1207 | + | } | |
1208 | + | ||
1209 | + | ||
1210 | + | func gt (fY) = { | |
1211 | + | let gu = fX(fY) | |
1212 | + | let gv = parseIntValue(split(fY[av], "_")[aw]) | |
1213 | + | ((fV(fY[ar]) - gu) - gv) | |
1214 | + | } | |
1215 | + | ||
1216 | + | ||
1217 | + | func gw (gx,gy) = { | |
1218 | + | let gd = if ((gx >= 0)) | |
1219 | + | then (((gx + gy) - 1) / gy) | |
1220 | + | else -((((-(gx) + gy) - 1) / gy)) | |
1221 | + | (gd * bF) | |
1222 | + | } | |
1223 | + | ||
1224 | + | ||
1225 | + | func gz (gA,fY,gB) = if ((size(gA) != 3)) | |
1195 | 1226 | then throw("cargoListStr should contain exactly 2 ':' separators") | |
1196 | 1227 | else { | |
1197 | - | let | |
1198 | - | let | |
1199 | - | let | |
1228 | + | let gC = split(gA[0], "_") | |
1229 | + | let gD = split(gA[1], "_") | |
1230 | + | let gE = if ((gA[2] == "")) | |
1200 | 1231 | then nil | |
1201 | - | else split( | |
1202 | - | if ((size( | |
1232 | + | else split(gA[2], "_") | |
1233 | + | if ((size(gC) != ac)) | |
1203 | 1234 | then throw("All 6 resources should be passed") | |
1204 | - | else if ((size( | |
1235 | + | else if ((size(gD) != ac)) | |
1205 | 1236 | then throw("All 6 materials should be passed") | |
1206 | 1237 | else { | |
1207 | - | let | |
1208 | - | let | |
1209 | - | let | |
1210 | - | let | |
1238 | + | let fe = gt(fY) | |
1239 | + | let gF = split(fY[as], "_") | |
1240 | + | let gG = split(fY[at], "_") | |
1241 | + | let gH = if ((fY[au] == "")) | |
1211 | 1242 | then nil | |
1212 | - | else split( | |
1213 | - | let | |
1214 | - | let | |
1215 | - | let | |
1243 | + | else split(fY[au], "_") | |
1244 | + | let fc = split(gB[aB], "_") | |
1245 | + | let gI = split(gB[aC], "_") | |
1246 | + | let gJ = if ((gB[aD] == "")) | |
1216 | 1247 | then nil | |
1217 | - | else split( | |
1218 | - | func | |
1219 | - | let | |
1220 | - | let | |
1221 | - | let | |
1222 | - | let | |
1223 | - | if (( | |
1224 | - | then $Tuple4(( | |
1225 | - | else if (( | |
1226 | - | then if (( | |
1227 | - | then throw((((("Attempt to take " + | |
1228 | - | else $Tuple4(( | |
1229 | - | else if ((-( | |
1230 | - | then throw((((("Attempt to take " + toString(-( | |
1231 | - | else $Tuple4(( | |
1248 | + | else split(gB[aD], "_") | |
1249 | + | func gK (dn,gb) = { | |
1250 | + | let eP = dn._1 | |
1251 | + | let gL = parseIntValue(gb) | |
1252 | + | let gM = parseIntValue(gF[eP]) | |
1253 | + | let gN = parseIntValue(fc[eP]) | |
1254 | + | if ((gL == 0)) | |
1255 | + | then $Tuple4((eP + 1), (dn._2 :+ gF[eP]), (dn._3 :+ fc[eP]), dn._4) | |
1256 | + | else if ((gL > 0)) | |
1257 | + | then if ((gL > gN)) | |
1258 | + | then throw((((("Attempt to take " + gb) + " from backpack, but only ") + toString(gN)) + " available")) | |
1259 | + | else $Tuple4((eP + 1), (dn._2 :+ toString((gM + gL))), (dn._3 :+ toString((gN - gL))), (dn._4 + gL)) | |
1260 | + | else if ((-(gL) > gM)) | |
1261 | + | then throw((((("Attempt to take " + toString(-(gL))) + " from warehouse, but only ") + toString(gM)) + " available")) | |
1262 | + | else $Tuple4((eP + 1), (dn._2 :+ toString((gM + gL))), (dn._3 :+ toString((gN - gL))), (dn._4 + gL)) | |
1232 | 1263 | } | |
1233 | 1264 | ||
1234 | - | let | |
1235 | - | let | |
1236 | - | let | |
1237 | - | let | |
1238 | - | func | |
1239 | - | then | |
1240 | - | else | |
1241 | - | ||
1242 | - | func | |
1243 | - | then | |
1265 | + | let dy = { | |
1266 | + | let dp = gC | |
1267 | + | let dq = size(dp) | |
1268 | + | let dr = $Tuple4(0, nil, nil, 0) | |
1269 | + | func ds (dt,du) = if ((du >= dq)) | |
1270 | + | then dt | |
1271 | + | else gK(dt, dp[du]) | |
1272 | + | ||
1273 | + | func dv (dt,du) = if ((du >= dq)) | |
1274 | + | then dt | |
1244 | 1275 | else throw("List size exceeds 6") | |
1245 | 1276 | ||
1246 | - | | |
1277 | + | dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6) | |
1247 | 1278 | } | |
1248 | - | func | |
1249 | - | let | |
1250 | - | let | |
1251 | - | let | |
1252 | - | let | |
1253 | - | if (( | |
1254 | - | then $Tuple4(( | |
1255 | - | else if (( | |
1256 | - | then if (( | |
1257 | - | then throw((((("Attempt to take " + | |
1258 | - | else $Tuple4(( | |
1259 | - | else if ((-( | |
1260 | - | then throw((((("Attempt to take " + toString(-( | |
1261 | - | else $Tuple4(( | |
1279 | + | func gO (dn,gb) = { | |
1280 | + | let eP = dn._1 | |
1281 | + | let gL = parseIntValue(gb) | |
1282 | + | let gP = parseIntValue(gG[eP]) | |
1283 | + | let gQ = parseIntValue(gI[eP]) | |
1284 | + | if ((gL == 0)) | |
1285 | + | then $Tuple4((eP + 1), (dn._2 :+ gG[eP]), (dn._3 :+ gI[eP]), dn._4) | |
1286 | + | else if ((gL > 0)) | |
1287 | + | then if ((gL > gQ)) | |
1288 | + | then throw((((("Attempt to take " + gb) + " from backpack, but only ") + toString(gQ)) + " available")) | |
1289 | + | else $Tuple4((eP + 1), (dn._2 :+ toString((gP + gL))), (dn._3 :+ toString((gQ - gL))), (dn._4 + gL)) | |
1290 | + | else if ((-(gL) > gP)) | |
1291 | + | then throw((((("Attempt to take " + toString(-(gL))) + " from warehouse, but only ") + toString(gP)) + " available")) | |
1292 | + | else $Tuple4((eP + 1), (dn._2 :+ toString((gP + gL))), (dn._3 :+ toString((gQ - gL))), (dn._4 + gL)) | |
1262 | 1293 | } | |
1263 | 1294 | ||
1264 | - | let | |
1265 | - | let | |
1266 | - | let | |
1267 | - | let | |
1268 | - | func | |
1269 | - | then | |
1270 | - | else | |
1271 | - | ||
1272 | - | func | |
1273 | - | then | |
1295 | + | let eG = { | |
1296 | + | let dp = gD | |
1297 | + | let dq = size(dp) | |
1298 | + | let dr = $Tuple4(0, nil, nil, dy._4) | |
1299 | + | func fN (dt,du) = if ((du >= dq)) | |
1300 | + | then dt | |
1301 | + | else gO(dt, dp[du]) | |
1302 | + | ||
1303 | + | func fO (dt,du) = if ((du >= dq)) | |
1304 | + | then dt | |
1274 | 1305 | else throw("List size exceeds 6") | |
1275 | 1306 | ||
1276 | - | | |
1307 | + | fO(fN(fN(fN(fN(fN(fN(dr, 0), 1), 2), 3), 4), 5), 6) | |
1277 | 1308 | } | |
1278 | - | func | |
1279 | - | let | |
1280 | - | let | |
1281 | - | let | |
1282 | - | then parseIntValue( | |
1309 | + | func gR (dn,gb) = { | |
1310 | + | let eP = dn._1 | |
1311 | + | let gL = parseIntValue(gb) | |
1312 | + | let gS = if ((size(gH) > eP)) | |
1313 | + | then parseIntValue(gH[eP]) | |
1283 | 1314 | else 0 | |
1284 | - | let | |
1285 | - | then parseIntValue( | |
1315 | + | let gT = if ((size(gJ) > eP)) | |
1316 | + | then parseIntValue(gJ[eP]) | |
1286 | 1317 | else 0 | |
1287 | - | if (( | |
1288 | - | then $Tuple4(( | |
1289 | - | else if (( | |
1290 | - | then if (( | |
1291 | - | then throw((((("Attempt to take " + | |
1318 | + | if ((gL == 0)) | |
1319 | + | then $Tuple4((eP + 1), (dn._2 :+ toString(gS)), (dn._3 :+ toString(gT)), dn._4) | |
1320 | + | else if ((gL > 0)) | |
1321 | + | then if ((gL > gT)) | |
1322 | + | then throw((((("Attempt to take " + gb) + " from backpack, but only ") + toString(gT)) + " available")) | |
1292 | 1323 | else { | |
1293 | - | let | |
1294 | - | $Tuple4(( | |
1324 | + | let gU = (gw((gS + gL), aq) - gw(gS, aq)) | |
1325 | + | $Tuple4((eP + 1), (dn._2 :+ toString((gS + gL))), (dn._3 :+ toString((gT - gL))), (dn._4 + gU)) | |
1295 | 1326 | } | |
1296 | - | else if ((-( | |
1297 | - | then throw((((("Attempt to take " + toString(-( | |
1327 | + | else if ((-(gL) > gS)) | |
1328 | + | then throw((((("Attempt to take " + toString(-(gL))) + " from warehouse, but only ") + toString(gS)) + " available")) | |
1298 | 1329 | else { | |
1299 | - | let | |
1300 | - | $Tuple4(( | |
1330 | + | let gU = (gw((gS + gL), aq) - gw(gS, aq)) | |
1331 | + | $Tuple4((eP + 1), (dn._2 :+ toString((gS + gL))), (dn._3 :+ toString((gT - gL))), (dn._4 + gU)) | |
1301 | 1332 | } | |
1302 | 1333 | } | |
1303 | 1334 | ||
1304 | - | let | |
1335 | + | let fU = if ((size(gE) != 0)) | |
1305 | 1336 | then { | |
1306 | - | let | |
1307 | - | let | |
1308 | - | let | |
1309 | - | func | |
1310 | - | then | |
1311 | - | else | |
1312 | - | ||
1313 | - | func | |
1314 | - | then | |
1337 | + | let dp = gE | |
1338 | + | let dq = size(dp) | |
1339 | + | let dr = $Tuple4(0, nil, nil, eG._4) | |
1340 | + | func fQ (dt,du) = if ((du >= dq)) | |
1341 | + | then dt | |
1342 | + | else gR(dt, dp[du]) | |
1343 | + | ||
1344 | + | func fR (dt,du) = if ((du >= dq)) | |
1345 | + | then dt | |
1315 | 1346 | else throw("List size exceeds 50") | |
1316 | 1347 | ||
1317 | - | | |
1348 | + | fR(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(dr, 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) | |
1318 | 1349 | } | |
1319 | - | else $Tuple4(0, | |
1320 | - | let | |
1321 | - | if (( | |
1322 | - | then throw((((("Attempt to put total " + toString( | |
1323 | - | else $Tuple7(makeString( | |
1350 | + | else $Tuple4(0, gH, gJ, eG._4) | |
1351 | + | let gV = fU._4 | |
1352 | + | if ((gV > fe)) | |
1353 | + | then throw((((("Attempt to put total " + toString(gV)) + " stuff, but only ") + toString(fe)) + " warehouse space left")) | |
1354 | + | else $Tuple7(makeString(dy._2, "_"), makeString(eG._2, "_"), makeString(fU._2, "_"), makeString(dy._3, "_"), makeString(eG._3, "_"), makeString(fU._3, "_"), gV) | |
1324 | 1355 | } | |
1325 | 1356 | } | |
1326 | 1357 | ||
1327 | 1358 | ||
1328 | - | func | |
1329 | - | let | |
1330 | - | let | |
1331 | - | let | |
1332 | - | let | |
1333 | - | let | |
1334 | - | let | |
1335 | - | let | |
1336 | - | let | |
1337 | - | let | |
1338 | - | let | |
1339 | - | $Tuple2([IntegerEntry( | |
1340 | - | } | |
1341 | - | ||
1342 | - | ||
1343 | - | func | |
1359 | + | func gW (gX,gY) = { | |
1360 | + | let bd = toString(gX) | |
1361 | + | let gZ = fk(toBigInt(gY)) | |
1362 | + | let ha = valueOrElse(getInteger(cO()), (cN + 1)) | |
1363 | + | let cQ = toString(ha) | |
1364 | + | let ft = toInt((gZ % cH)) | |
1365 | + | let eS = fr(gZ, ft) | |
1366 | + | let hb = ak[ft] | |
1367 | + | let hc = Issue(dg(cQ, "S"), makeString([cQ, "S", eS, hb], "_"), 1, 0, false) | |
1368 | + | let aG = calculateAssetId(hc) | |
1369 | + | let hd = toBase58String(aG) | |
1370 | + | $Tuple2([IntegerEntry(cO(), (ha + 1)), hc, StringEntry(cP(cQ), hd), StringEntry(aF(hd), bd), StringEntry(cV(cQ), bd), IntegerEntry(aJ(hd), 0), IntegerEntry(cT(hd, bd), 0), ScriptTransfer(gX, 1, aG)], $Tuple2(hd, hb)) | |
1371 | + | } | |
1372 | + | ||
1373 | + | ||
1374 | + | func he (bd,hf,hg) = if (!(sigVerify_8Kb(hf, hg, cz))) | |
1344 | 1375 | then throw("signature does not match") | |
1345 | 1376 | else { | |
1346 | - | let | |
1347 | - | let | |
1348 | - | let | |
1349 | - | let | |
1350 | - | let | |
1351 | - | let | |
1352 | - | let | |
1353 | - | let | |
1354 | - | if (if (( | |
1377 | + | let dL = split(toUtf8String(hf), ";") | |
1378 | + | let hh = split(dL[0], "|") | |
1379 | + | let hi = split(hh[dc], "_") | |
1380 | + | let hj = parseIntValue(hi[0]) | |
1381 | + | let hk = parseIntValue(hi[1]) | |
1382 | + | let hl = split(dL[1], ":") | |
1383 | + | let hm = hl[0] | |
1384 | + | let hn = parseIntValue(hh[dd]) | |
1385 | + | if (if ((hn > (lastBlock.timestamp + cB))) | |
1355 | 1386 | then true | |
1356 | - | else ((lastBlock.timestamp - | |
1357 | - | then throw(((("signature outdated: logTime=" + toString( | |
1387 | + | else ((lastBlock.timestamp - cB) > hn)) | |
1388 | + | then throw(((("signature outdated: logTime=" + toString(hn)) + ", bcTime=") + toString(lastBlock.timestamp))) | |
1358 | 1389 | else { | |
1359 | - | let | |
1360 | - | let | |
1361 | - | if (( | |
1362 | - | then throw(((("Tx ids don't match! In state: " + | |
1390 | + | let ho = hl[1] | |
1391 | + | let hp = valueOrElse(getString(aE(bd)), "") | |
1392 | + | if ((hp != ho)) | |
1393 | + | then throw(((("Tx ids don't match! In state: " + hp) + ", in msg: ") + ho)) | |
1363 | 1394 | else { | |
1364 | - | let r = valueOrErrorMessage(getString( | |
1365 | - | let | |
1366 | - | let | |
1367 | - | let | |
1368 | - | if (( | |
1369 | - | then throw(((("oldHealth=" + toString( | |
1370 | - | else if ((0 >= | |
1395 | + | let r = valueOrErrorMessage(getString(aY(bd)), "You don't have a duck staked") | |
1396 | + | let hq = q(r) | |
1397 | + | let hr = O(valueOrElse(getInteger(u(r)), 0)) | |
1398 | + | let hs = valueOrElse(getInteger(hq), hr) | |
1399 | + | if ((hs != hj)) | |
1400 | + | then throw(((("oldHealth=" + toString(hs)) + " from state does not match one from flight log=") + toString(hj))) | |
1401 | + | else if ((0 >= hj)) | |
1371 | 1402 | then throw("You can't fly with zero health") | |
1372 | 1403 | else { | |
1373 | - | let | |
1374 | - | then | |
1404 | + | let ht = if ((size(hh) > de)) | |
1405 | + | then hh[de] | |
1375 | 1406 | else "" | |
1376 | - | let | |
1377 | - | then | |
1407 | + | let hu = if ((size(hh) > df)) | |
1408 | + | then hh[df] | |
1378 | 1409 | else "" | |
1379 | - | let | |
1380 | - | then ( | |
1410 | + | let hv = if (if ((hk > 0)) | |
1411 | + | then (ht == "$") | |
1381 | 1412 | else false) | |
1382 | - | then | |
1413 | + | then cs(invoke(cb, "sendUsdtPrize", [bd], nil)) | |
1383 | 1414 | else 0 | |
1384 | - | $Tuple5( | |
1415 | + | $Tuple5(hk, r, hv, hm, hu) | |
1385 | 1416 | } | |
1386 | 1417 | } | |
1387 | 1418 | } | |
1388 | 1419 | } | |
1389 | 1420 | ||
1390 | 1421 | ||
1391 | - | func | |
1392 | - | let | |
1393 | - | let | |
1394 | - | let r = | |
1395 | - | let | |
1396 | - | let | |
1397 | - | let | |
1398 | - | let | |
1399 | - | let | |
1400 | - | let | |
1401 | - | let | |
1402 | - | let | |
1403 | - | if ((0 >= | |
1404 | - | then $Tuple3([IntegerEntry( | |
1422 | + | func hw (gX,gY,hf,hg) = { | |
1423 | + | let bd = toString(gX) | |
1424 | + | let fu = he(bd, hf, hg) | |
1425 | + | let r = fu._2 | |
1426 | + | let hq = q(r) | |
1427 | + | let fT = aZ(r) | |
1428 | + | let gB = fS(fT) | |
1429 | + | let hx = split(gB[aC], "_") | |
1430 | + | let hy = makeString(dz(true, hx, cF), "_") | |
1431 | + | let hz = w(r) | |
1432 | + | let hA = valueOrElse(getString(hz), ",;,_,;,_,;,_,;,_,;,_,;,") | |
1433 | + | let hB = dG(hA, fu._5) | |
1434 | + | if ((0 >= fu._1)) | |
1435 | + | then $Tuple3([IntegerEntry(hq, 0), StringEntry(hz, hB)], "", 0) | |
1405 | 1436 | else { | |
1406 | - | let | |
1407 | - | let | |
1408 | - | $Tuple3((((( | |
1409 | - | } | |
1410 | - | } | |
1411 | - | ||
1412 | - | ||
1413 | - | func | |
1414 | - | let | |
1415 | - | let | |
1416 | - | let | |
1417 | - | let | |
1418 | - | (( | |
1419 | - | } | |
1420 | - | ||
1421 | - | ||
1422 | - | func | |
1423 | - | let | |
1424 | - | then $Tuple2( | |
1437 | + | let hC = gW(gX, gY) | |
1438 | + | let hd = hC._2._1 | |
1439 | + | $Tuple3(((((hC._1 :+ StringEntry(ba(r), makeString([hC._2._2, "L", hd], "_"))) :+ IntegerEntry(hq, fu._1)) :+ StringEntry(hz, hB)) :+ StringEntry(fT, makeString([gB[aA], gB[aB], hy, gB[aD]], ":"))), hd, fu._3) | |
1440 | + | } | |
1441 | + | } | |
1442 | + | ||
1443 | + | ||
1444 | + | func hD (aQ,hE) = { | |
1445 | + | let gk = valueOrElse(getInteger(aJ(aQ)), 0) | |
1446 | + | let hF = valueOrElse(getInteger(aK(ab, aQ)), 0) | |
1447 | + | let hG = (gk / 6) | |
1448 | + | let hH = (gk / 7) | |
1449 | + | ((ad + fraction(ad, ((gk + hG) + (2 * hH)), 5)) + fraction(ad, hF, (hE * 5))) | |
1450 | + | } | |
1451 | + | ||
1452 | + | ||
1453 | + | func hI (b,hJ,hK) = { | |
1454 | + | let hL = if ((hJ == cZ)) | |
1455 | + | then $Tuple2(hK, valueOrElse(getString(aY(b)), "")) | |
1425 | 1456 | else { | |
1426 | - | let r = valueOrErrorMessage(getString( | |
1427 | - | let | |
1428 | - | let | |
1429 | - | if (( | |
1430 | - | then throw((("Duck location type is " + | |
1431 | - | else $Tuple2( | |
1432 | - | } | |
1433 | - | let | |
1434 | - | let | |
1435 | - | let | |
1436 | - | let | |
1437 | - | let | |
1438 | - | let | |
1439 | - | if (( | |
1440 | - | then throw(( | |
1457 | + | let r = valueOrErrorMessage(getString(aY(b)), "You don't have a duck staked") | |
1458 | + | let hM = valueOrElse(getString(ba(r)), ag) | |
1459 | + | let hN = split(value(hM), "_") | |
1460 | + | if ((hN[bs] != "L")) | |
1461 | + | then throw((("Duck location type is " + hN[bs]) + ", but should be L")) | |
1462 | + | else $Tuple2(hN[bt], r) | |
1463 | + | } | |
1464 | + | let aQ = hL._1 | |
1465 | + | let hO = hL._2 | |
1466 | + | let hP = value(assetInfo(fromBase58String(aQ))) | |
1467 | + | let hQ = aI(aQ) | |
1468 | + | let hR = valueOrErrorMessage(getInteger(hQ), (("Land " + hP.name) + " is not staked")) | |
1469 | + | let hS = valueOrErrorMessage(getString(aF(aQ)), (("NFT " + hP.name) + " is orphaned")) | |
1470 | + | if ((hS != b)) | |
1471 | + | then throw((Z + " is not yours")) | |
1441 | 1472 | else { | |
1442 | - | let | |
1443 | - | $Tuple4( | |
1444 | - | } | |
1445 | - | } | |
1446 | - | ||
1447 | - | ||
1448 | - | func | |
1473 | + | let hT = split(hP.description, "_") | |
1474 | + | $Tuple4(hO, aQ, hT, hR) | |
1475 | + | } | |
1476 | + | } | |
1477 | + | ||
1478 | + | ||
1479 | + | func hU (b,gx,hJ,hK) = if ((0 > gx)) | |
1449 | 1480 | then throw("Negative amount") | |
1450 | 1481 | else { | |
1451 | - | let | |
1452 | - | let | |
1453 | - | let | |
1454 | - | let | |
1455 | - | if ((0 > | |
1456 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1482 | + | let er = hI(b, hJ, hK) | |
1483 | + | let cv = er._3[ch] | |
1484 | + | let eL = eR(er._3[ci]) | |
1485 | + | let eV = (lastBlock.timestamp - er._4) | |
1486 | + | if ((0 > eV)) | |
1487 | + | then throw(((("Saved timestamp is in future, saved = " + toString(er._4)) + ", current = ") + toString(lastBlock.timestamp))) | |
1457 | 1488 | else { | |
1458 | - | let | |
1459 | - | let | |
1460 | - | let | |
1461 | - | if (( | |
1462 | - | then throw(((("Not enough resources, available = " + toString( | |
1489 | + | let hE = cu(cv) | |
1490 | + | let hV = hD(er._2, hE) | |
1491 | + | let hW = fraction(eV, (hV * hE), ae) | |
1492 | + | if ((gx > hW)) | |
1493 | + | then throw(((("Not enough resources, available = " + toString(hW)) + ", requested = ") + toString(gx))) | |
1463 | 1494 | else { | |
1464 | - | let | |
1465 | - | let | |
1466 | - | let | |
1467 | - | let | |
1468 | - | let | |
1469 | - | let | |
1470 | - | let | |
1471 | - | let | |
1472 | - | let | |
1473 | - | if (if (( | |
1474 | - | then ( | |
1495 | + | let hX = fraction((hW - gx), ae, (hV * hE)) | |
1496 | + | let hY = (lastBlock.timestamp - hX) | |
1497 | + | let gj = (hE / bG) | |
1498 | + | let fd = eZ(eL, (eV - hX), gj, hV) | |
1499 | + | let gi = aP(er._2) | |
1500 | + | let gk = valueOrElse(getInteger(aJ(er._2)), 0) | |
1501 | + | let fY = gh(gi, gj, gk) | |
1502 | + | let gq = split(fY[av], "_") | |
1503 | + | let fe = parseIntValue(gq[ay]) | |
1504 | + | if (if ((hJ == cZ)) | |
1505 | + | then (gx > fe) | |
1475 | 1506 | else false) | |
1476 | - | then throw((("Only " + toString( | |
1507 | + | then throw((("Only " + toString(fe)) + " space left in warehouse")) | |
1477 | 1508 | else { | |
1478 | - | let | |
1479 | - | let | |
1480 | - | let | |
1481 | - | let | |
1482 | - | let | |
1483 | - | then $Tuple4( | |
1484 | - | else if (( | |
1485 | - | then $Tuple4( | |
1509 | + | let fT = aZ(er._1) | |
1510 | + | let gB = fS(fT) | |
1511 | + | let fc = split(gB[aB], "_") | |
1512 | + | let fb = split(fY[as], "_") | |
1513 | + | let hZ = if ((hJ == cZ)) | |
1514 | + | then $Tuple4(eT(fb, eL, (eV - hX), gj, hV), gB[aB], (parseIntValue(gq[ax]) + fd._2), (parseIntValue(gq[ay]) - fd._2)) | |
1515 | + | else if ((hJ == da)) | |
1516 | + | then $Tuple4(fY[as], eT(fc, eL, (eV - hX), gj, hV), parseIntValue(gq[ax]), parseIntValue(gq[ay])) | |
1486 | 1517 | else { | |
1487 | - | let | |
1488 | - | let | |
1489 | - | $Tuple4( | |
1518 | + | let ia = fa(fb, fc, fd, fe) | |
1519 | + | let ib = min([parseIntValue(gq[ay]), fd._2]) | |
1520 | + | $Tuple4(ia._1, ia._2, (parseIntValue(gq[ax]) + ib), (parseIntValue(gq[ay]) - ib)) | |
1490 | 1521 | } | |
1491 | - | let | |
1492 | - | let | |
1493 | - | let | |
1494 | - | let | |
1495 | - | $Tuple5([IntegerEntry( | |
1522 | + | let ic = hZ._1 | |
1523 | + | let id = hZ._2 | |
1524 | + | let ie = hZ._3 | |
1525 | + | let if = hZ._4 | |
1526 | + | $Tuple5([IntegerEntry(aI(er._2), hY), IntegerEntry(aM(Z, er._2, b), hY)], fT, [gB[aA], id, gB[aC], gB[aD]], gi, [fY[ar], ic, fY[at], fY[au], makeString([gq[aw], toString(ie), toString(if), gq[az]], "_")]) | |
1496 | 1527 | } | |
1497 | 1528 | } | |
1498 | 1529 | } | |
1499 | 1530 | } | |
1500 | 1531 | ||
1501 | 1532 | ||
1502 | - | func | |
1503 | - | let | |
1504 | - | let | |
1505 | - | let | |
1506 | - | | |
1507 | - | } | |
1508 | - | ||
1509 | - | ||
1510 | - | func | |
1511 | - | let b = toString( | |
1512 | - | let | |
1513 | - | let | |
1514 | - | let | |
1515 | - | let | |
1516 | - | if (( | |
1533 | + | func ig (b,aQ,hE,hJ) = { | |
1534 | + | let hQ = aI(aQ) | |
1535 | + | let hR = value(getInteger(hQ)) | |
1536 | + | let hW = (fraction((lastBlock.timestamp - hR), hD(aQ, hE), ae) * hE) | |
1537 | + | hU(b, hW, hJ, aQ) | |
1538 | + | } | |
1539 | + | ||
1540 | + | ||
1541 | + | func ih (dA,gX,ii,aQ) = { | |
1542 | + | let b = toString(gX) | |
1543 | + | let er = hI(b, db, aQ) | |
1544 | + | let hE = cu(er._3[ch]) | |
1545 | + | let ij = aJ(er._2) | |
1546 | + | let ik = valueOrElse(getInteger(ij), 0) | |
1547 | + | if ((ik >= 3)) | |
1517 | 1548 | then throw("Currently max infrastructure level = 3") | |
1518 | 1549 | else { | |
1519 | - | let | |
1520 | - | let | |
1521 | - | if (if (!( | |
1522 | - | then ( | |
1550 | + | let T = (ik + 1) | |
1551 | + | let il = fraction(cE, (hE * T), bG) | |
1552 | + | if (if (!(dA)) | |
1553 | + | then (ii != il) | |
1523 | 1554 | else false) | |
1524 | - | then throw(("Payment attached should be " + toString( | |
1555 | + | then throw(("Payment attached should be " + toString(il))) | |
1525 | 1556 | else { | |
1526 | - | let | |
1527 | - | let | |
1528 | - | let | |
1529 | - | let | |
1530 | - | let | |
1531 | - | let | |
1532 | - | let | |
1533 | - | let | |
1534 | - | let | |
1535 | - | let | |
1536 | - | let | |
1537 | - | let | |
1538 | - | $Tuple3(([IntegerEntry( | |
1557 | + | let fT = aZ(er._1) | |
1558 | + | let gB = fS(fT) | |
1559 | + | let hx = split(gB[aC], "_") | |
1560 | + | let im = fraction(bB, (hE * T), bG) | |
1561 | + | let hy = makeString(dz(dA, hx, im), "_") | |
1562 | + | let in = ig(b, er._2, hE, db) | |
1563 | + | let io = in._5 | |
1564 | + | let ip = fV(io[ar]) | |
1565 | + | let iq = makeString([split(io[ar], "_")[0], toString(T)], "_") | |
1566 | + | let ir = fV(iq) | |
1567 | + | let gq = split(io[av], "_") | |
1568 | + | let is = makeString([gq[aw], gq[ax], toString(((parseIntValue(gq[ay]) + ir) - ip)), toString(ir)], "_") | |
1569 | + | $Tuple3(([IntegerEntry(ij, T), IntegerEntry(cT(er._2, b), T), StringEntry(fT, makeString([gB[aA], in._3[aB], hy, gB[aD]], ":")), StringEntry(in._4, makeString([iq, io[as], io[at], io[au], is], ":"))] ++ in._1), T, im) | |
1539 | 1570 | } | |
1540 | 1571 | } | |
1541 | 1572 | } | |
1542 | 1573 | ||
1543 | 1574 | ||
1544 | - | func | |
1575 | + | func it (r,iu) = if (!(bw)) | |
1545 | 1576 | then $Tuple2(nil, 0) | |
1546 | 1577 | else { | |
1547 | - | let | |
1548 | - | let | |
1549 | - | let | |
1550 | - | let | |
1551 | - | let | |
1552 | - | let | |
1553 | - | $Tuple2([IntegerEntry( | |
1554 | - | } | |
1555 | - | ||
1556 | - | ||
1557 | - | func | |
1578 | + | let iv = u(r) | |
1579 | + | let iw = t(r) | |
1580 | + | let N = valueOrElse(getInteger(V, iw), 0) | |
1581 | + | let S = (N + iu) | |
1582 | + | let ix = Q(valueOrElse(getInteger(V, iv), 0), S) | |
1583 | + | let iy = v(r) | |
1584 | + | $Tuple2([IntegerEntry(iv, ix[0]), IntegerEntry(iw, S), IntegerEntry(iy, (valueOrElse(getInteger(iy), 0) + ix[1]))], S) | |
1585 | + | } | |
1586 | + | ||
1587 | + | ||
1588 | + | func iz (b,iu) = if (!(bw)) | |
1558 | 1589 | then $Tuple2(nil, 0) | |
1559 | 1590 | else { | |
1560 | - | let | |
1561 | - | let | |
1562 | - | let | |
1563 | - | let | |
1564 | - | let | |
1565 | - | let | |
1566 | - | $Tuple2([IntegerEntry( | |
1567 | - | } | |
1568 | - | ||
1569 | - | ||
1570 | - | func | |
1571 | - | let r = valueOrErrorMessage(getString( | |
1572 | - | let | |
1573 | - | let | |
1574 | - | if (!(isDefined( | |
1591 | + | let iv = y(b) | |
1592 | + | let iw = x(b) | |
1593 | + | let N = valueOrElse(getInteger(V, iw), 0) | |
1594 | + | let S = (N + iu) | |
1595 | + | let ix = Q(valueOrElse(getInteger(V, iv), 0), S) | |
1596 | + | let iy = z(b) | |
1597 | + | $Tuple2([IntegerEntry(iv, ix[0]), IntegerEntry(iw, S), IntegerEntry(iy, (valueOrElse(getInteger(iy), 0) + ix[1]))], S) | |
1598 | + | } | |
1599 | + | ||
1600 | + | ||
1601 | + | func iA (b) = { | |
1602 | + | let r = valueOrErrorMessage(getString(aY(b)), "You don't have a duck staked") | |
1603 | + | let iB = aT(b) | |
1604 | + | let iC = getString(iB) | |
1605 | + | if (!(isDefined(iC))) | |
1575 | 1606 | then throw("You are not eligible for ONBOARD artifact") | |
1576 | 1607 | else { | |
1577 | - | let | |
1578 | - | let | |
1579 | - | if (isDefined( | |
1580 | - | then throw(("You already used your ONBOARD artifact on duck " + value( | |
1608 | + | let iD = aV(b) | |
1609 | + | let iE = getString(iD) | |
1610 | + | if (isDefined(iE)) | |
1611 | + | then throw(("You already used your ONBOARD artifact on duck " + value(iE))) | |
1581 | 1612 | else { | |
1582 | - | let | |
1583 | - | let | |
1584 | - | if (isDefined( | |
1585 | - | then throw(((("The duck " + r) + " already got points from ONBOARD artifact from user ") + value( | |
1586 | - | else ([StringEntry( | |
1613 | + | let iF = aU(r) | |
1614 | + | let iG = getString(iF) | |
1615 | + | if (isDefined(iG)) | |
1616 | + | then throw(((("The duck " + r) + " already got points from ONBOARD artifact from user ") + value(iG))) | |
1617 | + | else ([StringEntry(iD, r), StringEntry(iF, b)] ++ it(r, K)._1) | |
1587 | 1618 | } | |
1588 | 1619 | } | |
1589 | 1620 | } | |
1590 | 1621 | ||
1591 | 1622 | ||
1592 | - | func | |
1593 | - | let | |
1594 | - | let | |
1595 | - | let | |
1596 | - | let | |
1597 | - | if ((valueOrElse(getInteger( | |
1623 | + | func iH (b,hK) = { | |
1624 | + | let er = hI(b, db, hK) | |
1625 | + | let aQ = er._2 | |
1626 | + | let hE = cu(er._3[ch]) | |
1627 | + | let iI = aK(ab, aQ) | |
1628 | + | if ((valueOrElse(getInteger(iI), 0) > 0)) | |
1598 | 1629 | then throw("Presale artifact is already activated") | |
1599 | - | else if ((parseIntValue( | |
1600 | - | then throw(((( | |
1630 | + | else if ((parseIntValue(er._3[cg]) > cN)) | |
1631 | + | then throw((((Z + " ") + aQ) + " is not eligible for presale artifact")) | |
1601 | 1632 | else { | |
1602 | - | let | |
1603 | - | (((( | |
1633 | + | let in = ig(b, aQ, hE, db) | |
1634 | + | ((((in._1 :+ IntegerEntry(iI, hE)) :+ IntegerEntry(cU(ab, aQ, b), hE)) :+ StringEntry(in._2, makeString(in._3, ":"))) :+ StringEntry(in._4, makeString(in._5, ":"))) | |
1604 | 1635 | } | |
1605 | 1636 | } | |
1606 | 1637 | ||
1607 | 1638 | ||
1608 | - | func | |
1609 | - | let r = valueOrErrorMessage(getString( | |
1610 | - | func | |
1611 | - | let | |
1612 | - | let | |
1613 | - | let | |
1614 | - | let | |
1615 | - | if (( | |
1616 | - | then throw(( | |
1639 | + | func iJ (iK,T,iL,b,iM,iN) = { | |
1640 | + | let r = valueOrErrorMessage(getString(aY(b)), "You don't have a duck staked") | |
1641 | + | func iO (dn,aQ) = { | |
1642 | + | let hP = value(assetInfo(fromBase58String(aQ))) | |
1643 | + | let hQ = aI(aQ) | |
1644 | + | let hR = valueOrErrorMessage(getInteger(hQ), (("NFT " + hP.name) + " is not staked")) | |
1645 | + | let hS = valueOrErrorMessage(getString(aF(aQ)), (("NFT " + hP.name) + " is orphaned")) | |
1646 | + | if ((hS != b)) | |
1647 | + | then throw((Z + " is not yours")) | |
1617 | 1648 | else { | |
1618 | - | let | |
1619 | - | let | |
1620 | - | if (if (( | |
1621 | - | then ( | |
1649 | + | let hT = split(hP.description, "_") | |
1650 | + | let hb = hT[cj] | |
1651 | + | if (if ((dn._3 != "")) | |
1652 | + | then (dn._3 != hb) | |
1622 | 1653 | else false) | |
1623 | 1654 | then throw("Lands should be on the same continent to merge") | |
1624 | 1655 | else { | |
1625 | - | let | |
1626 | - | let | |
1627 | - | let | |
1628 | - | let | |
1629 | - | let | |
1630 | - | let | |
1631 | - | let | |
1632 | - | let | |
1633 | - | let | |
1634 | - | if (("S" == | |
1656 | + | let cv = hT[ch] | |
1657 | + | let iP = dn._1 | |
1658 | + | let eP = valueOrErrorMessage(indexOf(iP, cv), "You haven't passed all the lands needed") | |
1659 | + | let iQ = (take(iP, eP) + drop(iP, (eP + 1))) | |
1660 | + | let hE = cu(cv) | |
1661 | + | let iR = (dn._2 + valueOrElse(getInteger(aK(ab, aQ)), 0)) | |
1662 | + | let gk = valueOrElse(getInteger(aJ(aQ)), 0) | |
1663 | + | let iS = { | |
1664 | + | let bz = cv | |
1665 | + | if (("S" == bz)) | |
1635 | 1666 | then 3 | |
1636 | - | else if (("M" == | |
1667 | + | else if (("M" == bz)) | |
1637 | 1668 | then 4 | |
1638 | - | else if (("L" == | |
1669 | + | else if (("L" == bz)) | |
1639 | 1670 | then 5 | |
1640 | - | else if (("XL" == | |
1671 | + | else if (("XL" == bz)) | |
1641 | 1672 | then 6 | |
1642 | 1673 | else throw("Only S, M, L, XL can merge") | |
1643 | 1674 | } | |
1644 | - | if (( | |
1675 | + | if ((gk != iS)) | |
1645 | 1676 | then throw("All lands should be maxed to merge") | |
1646 | 1677 | else { | |
1647 | - | let | |
1648 | - | let | |
1649 | - | let | |
1650 | - | if ((0 > | |
1651 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1678 | + | let cQ = hT[cg] | |
1679 | + | let eL = eR(hT[ci]) | |
1680 | + | let eV = (lastBlock.timestamp - hR) | |
1681 | + | if ((0 > eV)) | |
1682 | + | then throw(((("Saved timestamp is in future, saved = " + toString(hR)) + ", current = ") + toString(lastBlock.timestamp))) | |
1652 | 1683 | else { | |
1653 | - | let | |
1654 | - | let | |
1655 | - | let | |
1656 | - | let | |
1657 | - | let | |
1658 | - | let | |
1659 | - | let | |
1660 | - | if (!(isDefined( | |
1661 | - | then throw(("Your staked lands don't contain " + | |
1684 | + | let hV = hD(aQ, hE) | |
1685 | + | let gj = (hE / bG) | |
1686 | + | let id = eT(split(dn._4, "_"), eL, eV, gj, hV) | |
1687 | + | let dx = eJ(dn._6, eL, gj, -1) | |
1688 | + | let fA = eJ(dn._9, eL, gj, 1) | |
1689 | + | let iT = dn._7 | |
1690 | + | let ca = indexOf(iT, aQ) | |
1691 | + | if (!(isDefined(ca))) | |
1692 | + | then throw(("Your staked lands don't contain " + aQ)) | |
1662 | 1693 | else { | |
1663 | - | let | |
1664 | - | let | |
1665 | - | $Tuple9( | |
1694 | + | let iU = aH(aQ) | |
1695 | + | let iV = valueOrElse(getString(iU), "") | |
1696 | + | $Tuple9(iQ, iR, hb, id, (((((((((((((dn._5 :+ DeleteEntry(aI(aQ))) :+ DeleteEntry(aM(Z, aQ, b))) :+ DeleteEntry(cP(cQ))) :+ DeleteEntry(aF(aQ))) :+ DeleteEntry(aJ(aQ))) :+ DeleteEntry(cT(aQ, b))) :+ DeleteEntry(aK(ab, aQ))) :+ DeleteEntry(cU(ab, aQ, b))) :+ DeleteEntry(cV(cQ))) :+ DeleteEntry(aP(aQ))) :+ DeleteEntry(iU)) :+ DeleteEntry(cR(iV))) :+ Burn(fromBase58String(aQ), 1)), dx, removeByIndex(iT, value(ca)), (dn._8 + hE), fA) | |
1666 | 1697 | } | |
1667 | 1698 | } | |
1668 | 1699 | } | |
1670 | 1701 | } | |
1671 | 1702 | } | |
1672 | 1703 | ||
1673 | - | let | |
1674 | - | let | |
1675 | - | let | |
1676 | - | let | |
1677 | - | let | |
1678 | - | let | |
1679 | - | then split_51C(value( | |
1704 | + | let fT = aZ(r) | |
1705 | + | let gB = fS(fT) | |
1706 | + | let eK = split(valueOrElse(getString(cm()), "0_0_0_0_0_0"), "_") | |
1707 | + | let iW = cn(b) | |
1708 | + | let iX = getString(iW) | |
1709 | + | let iY = if (isDefined(iX)) | |
1710 | + | then split_51C(value(iX), "_") | |
1680 | 1711 | else nil | |
1681 | - | let | |
1682 | - | let | |
1683 | - | let | |
1684 | - | let | |
1685 | - | func | |
1686 | - | then | |
1687 | - | else | |
1688 | - | ||
1689 | - | func | |
1690 | - | then | |
1712 | + | let dy = { | |
1713 | + | let dp = iM | |
1714 | + | let dq = size(dp) | |
1715 | + | let dr = $Tuple9(iL, 0, "", gB[aB], nil, eK, iY, 0, split("0_0_0_0_0_0", "_")) | |
1716 | + | func ds (dt,du) = if ((du >= dq)) | |
1717 | + | then dt | |
1718 | + | else iO(dt, dp[du]) | |
1719 | + | ||
1720 | + | func dv (dt,du) = if ((du >= dq)) | |
1721 | + | then dt | |
1691 | 1722 | else throw("List size exceeds 5") | |
1692 | 1723 | ||
1693 | - | | |
1694 | - | } | |
1695 | - | let | |
1696 | - | let | |
1697 | - | let | |
1698 | - | let | |
1699 | - | let | |
1700 | - | let | |
1701 | - | let | |
1702 | - | let | |
1703 | - | let | |
1704 | - | let | |
1705 | - | let | |
1706 | - | $Tuple2(((((((((((((((( | |
1707 | - | then StringEntry( | |
1708 | - | else DeleteEntry( | |
1724 | + | dv(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5) | |
1725 | + | } | |
1726 | + | let hb = dy._3 | |
1727 | + | let ft = valueOrErrorMessage(indexOf(ak, hb), ("Unknown continent: " + hb)) | |
1728 | + | let eS = fz(dy._9, (cu(iK) / bG)) | |
1729 | + | let ha = valueOrElse(getInteger(cO()), (cN + 1)) | |
1730 | + | let iZ = toString(ha) | |
1731 | + | let hc = Issue(dg(iZ, iK), makeString([iZ, iK, eS, hb], "_"), 1, 0, false) | |
1732 | + | let aG = calculateAssetId(hc) | |
1733 | + | let ja = toBase58String(aG) | |
1734 | + | let hy = makeString(dz((iN > 0), split(gB[aC], "_"), iN), "_") | |
1735 | + | let jb = co(b) | |
1736 | + | let jc = valueOrElse(getInteger(jb), 0) | |
1737 | + | $Tuple2((((((((((((((((dy._5 :+ (if ((size(dy._7) > 0)) | |
1738 | + | then StringEntry(iW, makeString_11C(dy._7, "_")) | |
1739 | + | else DeleteEntry(iW))) :+ IntegerEntry(jb, if ((dy._8 > jc)) | |
1709 | 1740 | then 0 | |
1710 | - | else ( | |
1711 | - | } | |
1712 | - | ||
1713 | - | ||
1714 | - | func | |
1715 | - | ||
1716 | - | ||
1717 | - | func | |
1718 | - | ||
1719 | - | ||
1720 | - | func | |
1721 | - | ||
1722 | - | ||
1723 | - | func | |
1724 | - | ||
1725 | - | ||
1726 | - | func | |
1727 | - | let | |
1728 | - | if ((4 == | |
1729 | - | then | |
1730 | - | else if ((3 == | |
1731 | - | then | |
1732 | - | else if ((5 == | |
1733 | - | then | |
1734 | - | else if ((2 == | |
1735 | - | then | |
1741 | + | else (jc - dy._8))) :+ IntegerEntry(cO(), (ha + 1))) :+ hc) :+ StringEntry(cP(iZ), ja)) :+ StringEntry(aF(ja), b)) :+ StringEntry(cV(iZ), b)) :+ IntegerEntry(aK(ab, ja), dy._2)) :+ IntegerEntry(cU(ab, ja, b), dy._2)) :+ IntegerEntry(aJ(ja), T)) :+ IntegerEntry(cT(ja, b), T)) :+ StringEntry(fT, makeString([gB[aA], dy._4, hy, gB[aD]], ":"))) :+ StringEntry(cm(), makeString(dy._6, "_"))) :+ StringEntry(ba(r), makeString([hb, "L", ja], "_"))) :+ ScriptTransfer(addressFromStringValue(b), 1, aG)), ja) | |
1742 | + | } | |
1743 | + | ||
1744 | + | ||
1745 | + | func jd (b,iM) = iJ("M", 3, "SSSS", b, iM, 0) | |
1746 | + | ||
1747 | + | ||
1748 | + | func je (b,iM) = iJ("L", 4, "SMM", b, iM, (bB * 4)) | |
1749 | + | ||
1750 | + | ||
1751 | + | func jf (b,iM) = iJ("XL", 5, "SSSML", b, iM, (bB * 47)) | |
1752 | + | ||
1753 | + | ||
1754 | + | func jg (b,iM) = iJ("XXL", 6, "LXL", b, iM, (bB * 54)) | |
1755 | + | ||
1756 | + | ||
1757 | + | func jh (b,iM) = { | |
1758 | + | let bz = size(iM) | |
1759 | + | if ((4 == bz)) | |
1760 | + | then jd(b, iM) | |
1761 | + | else if ((3 == bz)) | |
1762 | + | then je(b, iM) | |
1763 | + | else if ((5 == bz)) | |
1764 | + | then jf(b, iM) | |
1765 | + | else if ((2 == bz)) | |
1766 | + | then jg(b, iM) | |
1736 | 1767 | else throw("Unknown merge") | |
1737 | 1768 | } | |
1738 | 1769 | ||
1739 | 1770 | ||
1740 | - | func iT (eA) = if (if ((eA.originCaller != bM)) | |
1741 | - | then valueOrElse(getBoolean(aZ()), false) | |
1771 | + | func ji (r) = { | |
1772 | + | let jj = valueOrElse(getInteger(cf, bf), 0) | |
1773 | + | let hM = split(valueOrElse(getString(ba(r)), ag), "_") | |
1774 | + | let jk = lastBlock.timestamp | |
1775 | + | let jl = bl(cf, jj) | |
1776 | + | let bn = jl[bj] | |
1777 | + | let bo = jl[bk] | |
1778 | + | if ((hM[bs] != "T")) | |
1779 | + | then false | |
1780 | + | else { | |
1781 | + | let dF = if (if (if ((parseIntValue(hM[br]) == jj)) | |
1782 | + | then (bo[bq] == "INPROGRESS") | |
1783 | + | else false) | |
1784 | + | then (parseIntValue(bn[bp]) > jk) | |
1785 | + | else false) | |
1786 | + | then throw("Your duck is taking part in the tournament") | |
1787 | + | else invoke(this, "exitTournamentInternal", [r], nil) | |
1788 | + | if ((dF == dF)) | |
1789 | + | then false | |
1790 | + | else throw("Strict value is not equal to itself.") | |
1791 | + | } | |
1792 | + | } | |
1793 | + | ||
1794 | + | ||
1795 | + | func jm (eP) = if (if ((eP.originCaller != cb)) | |
1796 | + | then valueOrElse(getBoolean(bb()), false) | |
1742 | 1797 | else false) | |
1743 | 1798 | then throw("Contracts are under maintenance") | |
1744 | - | else StringEntry( | |
1745 | - | ||
1746 | - | ||
1747 | - | @Callable( | |
1748 | - | func constructorV1 ( | |
1799 | + | else StringEntry(aE(toString(eP.originCaller)), toBase58String(eP.transactionId)) | |
1800 | + | ||
1801 | + | ||
1802 | + | @Callable(eP) | |
1803 | + | func constructorV1 (jn) = if ((eP.caller != this)) | |
1749 | 1804 | then throw("Permission denied") | |
1750 | - | else [StringEntry( | |
1751 | - | ||
1752 | - | ||
1753 | - | ||
1754 | - | @Callable( | |
1755 | - | func setBlocked ( | |
1805 | + | else [StringEntry(bV(), jn)] | |
1806 | + | ||
1807 | + | ||
1808 | + | ||
1809 | + | @Callable(eP) | |
1810 | + | func setBlocked (jo) = if ((eP.caller != this)) | |
1756 | 1811 | then throw("permission denied") | |
1757 | - | else [BooleanEntry( | |
1758 | - | ||
1759 | - | ||
1760 | - | ||
1761 | - | @Callable( | |
1812 | + | else [BooleanEntry(bb(), jo)] | |
1813 | + | ||
1814 | + | ||
1815 | + | ||
1816 | + | @Callable(eP) | |
1762 | 1817 | func stakeLand () = { | |
1763 | - | let | |
1764 | - | if ((size( | |
1818 | + | let jp = jm(eP) | |
1819 | + | if ((size(eP.payments) != 1)) | |
1765 | 1820 | then throw("Exactly one payment required") | |
1766 | 1821 | else { | |
1767 | - | let | |
1768 | - | let | |
1769 | - | let | |
1770 | - | if (( | |
1771 | - | then throw((("NFT " + | |
1822 | + | let jq = value(eP.payments[0]) | |
1823 | + | let aG = value(jq.assetId) | |
1824 | + | let bN = toString(eP.caller) | |
1825 | + | if ((jq.amount != 1)) | |
1826 | + | then throw((("NFT " + Z) + " token should be attached as payment")) | |
1772 | 1827 | else { | |
1773 | - | let | |
1774 | - | if (( | |
1828 | + | let hP = value(assetInfo(aG)) | |
1829 | + | if ((hP.issuer != this)) | |
1775 | 1830 | then throw("Unknown issuer of token") | |
1776 | - | else if (!(contains( | |
1777 | - | then throw((("Only NFT " + | |
1831 | + | else if (!(contains(hP.name, Z))) | |
1832 | + | then throw((("Only NFT " + Z) + " tokens are accepted")) | |
1778 | 1833 | else { | |
1779 | - | let | |
1780 | - | let | |
1781 | - | then dropRight( | |
1782 | - | else if (contains( | |
1783 | - | then dropRight( | |
1784 | - | else dropRight( | |
1785 | - | if (!(isDefined(parseInt( | |
1786 | - | then throw(("Cannot parse land number from " + | |
1834 | + | let jr = drop(hP.name, 4) | |
1835 | + | let cQ = if (contains(jr, "XXL")) | |
1836 | + | then dropRight(jr, 3) | |
1837 | + | else if (contains(jr, "XL")) | |
1838 | + | then dropRight(jr, 2) | |
1839 | + | else dropRight(jr, 1) | |
1840 | + | if (!(isDefined(parseInt(cQ)))) | |
1841 | + | then throw(("Cannot parse land number from " + hP.name)) | |
1787 | 1842 | else { | |
1788 | - | let | |
1789 | - | let | |
1790 | - | if (isDefined(getInteger( | |
1791 | - | then throw((("NFT " + | |
1843 | + | let aQ = toBase58String(aG) | |
1844 | + | let hQ = aI(aQ) | |
1845 | + | if (isDefined(getInteger(hQ))) | |
1846 | + | then throw((("NFT " + hP.name) + " is already staked")) | |
1792 | 1847 | else { | |
1793 | - | let | |
1794 | - | let | |
1795 | - | let | |
1796 | - | let | |
1797 | - | let | |
1798 | - | let | |
1799 | - | let | |
1800 | - | let | |
1801 | - | then split_51C(value( | |
1848 | + | let hT = split(hP.description, "_") | |
1849 | + | let eL = eR(hT[ci]) | |
1850 | + | let hE = cu(hT[ch]) | |
1851 | + | let dx = eQ(eL, (hE / bG), 1) | |
1852 | + | let hF = valueOrElse(getInteger(aK(ab, aQ)), 0) | |
1853 | + | let iW = cn(bN) | |
1854 | + | let iX = getString(iW) | |
1855 | + | let iT = if (isDefined(iX)) | |
1856 | + | then split_51C(value(iX), "_") | |
1802 | 1857 | else nil | |
1803 | - | if (containsElement( | |
1804 | - | then throw(("Your staked lands already contain " + | |
1858 | + | if (containsElement(iT, aQ)) | |
1859 | + | then throw(("Your staked lands already contain " + aQ)) | |
1805 | 1860 | else { | |
1806 | - | let | |
1807 | - | let | |
1808 | - | let | |
1809 | - | let | |
1810 | - | $Tuple2([IntegerEntry( | |
1861 | + | let gk = valueOrElse(getInteger(aJ(aQ)), 0) | |
1862 | + | let jb = co(bN) | |
1863 | + | let js = valueOrElse(getInteger(jb), 0) | |
1864 | + | let jt = cs(invoke(ce, "onStakeUnstakeLand", [bN], nil)) | |
1865 | + | $Tuple2([IntegerEntry(hQ, lastBlock.timestamp), IntegerEntry(aM(Z, aQ, bN), lastBlock.timestamp), StringEntry(iW, makeString_11C((iT :+ aQ), "_")), IntegerEntry(jb, (js + hE)), StringEntry(aF(aQ), bN), StringEntry(cV(cQ), bN), IntegerEntry(cU(ab, aQ, bN), hF), IntegerEntry(cT(aQ, bN), gk), StringEntry(cm(), dx), jp], jt) | |
1811 | 1866 | } | |
1812 | 1867 | } | |
1813 | 1868 | } | |
1818 | 1873 | ||
1819 | 1874 | ||
1820 | 1875 | ||
1821 | - | @Callable( | |
1822 | - | func unstakeLand ( | |
1823 | - | let | |
1824 | - | if ((size( | |
1876 | + | @Callable(eP) | |
1877 | + | func unstakeLand (hK) = { | |
1878 | + | let jp = jm(eP) | |
1879 | + | if ((size(eP.payments) != 0)) | |
1825 | 1880 | then throw("No payments required") | |
1826 | 1881 | else { | |
1827 | - | let b = toString( | |
1828 | - | let | |
1829 | - | let | |
1830 | - | let | |
1831 | - | let | |
1832 | - | let | |
1833 | - | let | |
1834 | - | let | |
1835 | - | let | |
1836 | - | let | |
1837 | - | if (!(isDefined( | |
1838 | - | then throw(("Your staked lands don't contain " + | |
1882 | + | let b = toString(eP.caller) | |
1883 | + | let er = hI(b, da, hK) | |
1884 | + | let aQ = er._2 | |
1885 | + | let iW = cn(b) | |
1886 | + | let eL = eR(er._3[ci]) | |
1887 | + | let hE = cu(er._3[ch]) | |
1888 | + | let dx = eQ(eL, (hE / bG), -1) | |
1889 | + | let in = ig(b, aQ, hE, da) | |
1890 | + | let iT = split_51C(valueOrElse(getString(iW), ""), "_") | |
1891 | + | let ca = indexOf(iT, aQ) | |
1892 | + | if (!(isDefined(ca))) | |
1893 | + | then throw(("Your staked lands don't contain " + aQ)) | |
1839 | 1894 | else { | |
1840 | - | let | |
1841 | - | let | |
1842 | - | if (( | |
1843 | - | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString( | |
1895 | + | let jk = lastBlock.timestamp | |
1896 | + | let ju = valueOrElse(getInteger(cd, bc(b)), 0) | |
1897 | + | if ((ju >= jk)) | |
1898 | + | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(ju))) | |
1844 | 1899 | else { | |
1845 | - | let | |
1846 | - | if (( | |
1847 | - | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString( | |
1900 | + | let jv = (valueOrElse(getInteger(ce, a(b)), 0) + bC) | |
1901 | + | if ((jv > jk)) | |
1902 | + | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(jv))) | |
1848 | 1903 | else { | |
1849 | - | let | |
1850 | - | let | |
1851 | - | let | |
1904 | + | let jb = co(b) | |
1905 | + | let jc = valueOrElse(getInteger(jb), 0) | |
1906 | + | let jw = if ((hE > jc)) | |
1852 | 1907 | then 0 | |
1853 | - | else ( | |
1854 | - | let | |
1855 | - | $Tuple2([ScriptTransfer( | |
1856 | - | then StringEntry( | |
1857 | - | else DeleteEntry( | |
1908 | + | else (jc - hE) | |
1909 | + | let jt = cs(invoke(ce, "onStakeUnstakeLand", [b], nil)) | |
1910 | + | $Tuple2([ScriptTransfer(eP.caller, 1, fromBase58String(aQ)), DeleteEntry(aI(aQ)), DeleteEntry(aM(Z, aQ, b)), StringEntry(cm(), dx), StringEntry(in._2, makeString(in._3, ":")), if ((size(iT) > 1)) | |
1911 | + | then StringEntry(iW, makeString_11C(removeByIndex(iT, value(ca)), "_")) | |
1912 | + | else DeleteEntry(iW), IntegerEntry(jb, jw), jp], jt) | |
1858 | 1913 | } | |
1859 | 1914 | } | |
1860 | 1915 | } | |
1863 | 1918 | ||
1864 | 1919 | ||
1865 | 1920 | ||
1866 | - | @Callable( | |
1921 | + | @Callable(eP) | |
1867 | 1922 | func stakeDuck () = { | |
1868 | - | let | |
1869 | - | if ((size( | |
1923 | + | let jp = jm(eP) | |
1924 | + | if ((size(eP.payments) != 1)) | |
1870 | 1925 | then throw("Exactly one payment required") | |
1871 | 1926 | else { | |
1872 | - | let | |
1873 | - | let | |
1874 | - | let | |
1875 | - | if (( | |
1876 | - | then throw((("NFT " + | |
1927 | + | let jq = value(eP.payments[0]) | |
1928 | + | let aG = value(jq.assetId) | |
1929 | + | let bN = toString(eP.caller) | |
1930 | + | if ((jq.amount != 1)) | |
1931 | + | then throw((("NFT " + aa) + " token should be attached as payment")) | |
1877 | 1932 | else { | |
1878 | - | let | |
1879 | - | if (if (( | |
1880 | - | then ( | |
1933 | + | let hP = value(assetInfo(aG)) | |
1934 | + | if (if ((hP.issuer != cx)) | |
1935 | + | then (hP.issuer != cy) | |
1881 | 1936 | else false) | |
1882 | - | then throw((("Unknown issuer of " + | |
1883 | - | else if (!(contains( | |
1884 | - | then throw((("Only NFT " + | |
1937 | + | then throw((("Unknown issuer of " + aa) + " token")) | |
1938 | + | else if (!(contains(hP.name, aa))) | |
1939 | + | then throw((("Only NFT " + aa) + " tokens are accepted")) | |
1885 | 1940 | else { | |
1886 | - | let | |
1887 | - | let | |
1888 | - | if (isDefined(getInteger( | |
1889 | - | then throw((("NFT " + | |
1890 | - | else if (isDefined(getString( | |
1891 | - | then throw(("You already staked one duck: " + | |
1941 | + | let jx = toBase58String(aG) | |
1942 | + | let hQ = aI(jx) | |
1943 | + | if (isDefined(getInteger(hQ))) | |
1944 | + | then throw((("NFT " + hP.name) + " is already staked")) | |
1945 | + | else if (isDefined(getString(aY(bN)))) | |
1946 | + | then throw(("You already staked one duck: " + hP.name)) | |
1892 | 1947 | else { | |
1893 | - | let | |
1894 | - | let | |
1895 | - | let | |
1896 | - | let | |
1897 | - | let | |
1898 | - | let | |
1899 | - | let | |
1900 | - | ([IntegerEntry( | |
1948 | + | let jy = ba(jx) | |
1949 | + | let jz = getString(jy) | |
1950 | + | let fT = aZ(jx) | |
1951 | + | let jA = getString(fT) | |
1952 | + | let hq = q(jx) | |
1953 | + | let hr = O(valueOrElse(getInteger(u(jx)), 0)) | |
1954 | + | let jB = valueOrElse(getInteger(hq), hr) | |
1955 | + | ([IntegerEntry(hQ, lastBlock.timestamp), IntegerEntry(aM(aa, toBase58String(aG), bN), lastBlock.timestamp), StringEntry(aX(jx), bN), StringEntry(aY(bN), jx)] ++ (if (isDefined(jz)) | |
1901 | 1956 | then nil | |
1902 | - | else ([StringEntry( | |
1957 | + | else ([StringEntry(jy, ag)] ++ (if (isDefined(jA)) | |
1903 | 1958 | then nil | |
1904 | - | else (([StringEntry( | |
1959 | + | else (([StringEntry(fT, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(hq, jB)) :+ jp))))) | |
1905 | 1960 | } | |
1906 | 1961 | } | |
1907 | 1962 | } | |
1910 | 1965 | ||
1911 | 1966 | ||
1912 | 1967 | ||
1913 | - | @Callable( | |
1914 | - | func unstakeDuck ( | |
1915 | - | let | |
1916 | - | if ((size( | |
1968 | + | @Callable(eP) | |
1969 | + | func unstakeDuck (jx) = { | |
1970 | + | let jp = jm(eP) | |
1971 | + | if ((size(eP.payments) != 0)) | |
1917 | 1972 | then throw("No payments required") | |
1918 | 1973 | else { | |
1919 | - | let | |
1920 | - | let | |
1921 | - | let | |
1922 | - | let | |
1923 | - | if (!(isDefined(getInteger( | |
1924 | - | then throw((("NFT " + | |
1925 | - | else if (!(isDefined(getString( | |
1926 | - | then throw((("The duck " + | |
1974 | + | let aG = fromBase58String(jx) | |
1975 | + | let bN = toString(eP.caller) | |
1976 | + | let hP = value(assetInfo(aG)) | |
1977 | + | let hQ = aI(toBase58String(aG)) | |
1978 | + | if (!(isDefined(getInteger(hQ)))) | |
1979 | + | then throw((("NFT " + hP.name) + " is not staked")) | |
1980 | + | else if (!(isDefined(getString(aY(bN))))) | |
1981 | + | then throw((("The duck " + hP.name) + " is not staked")) | |
1927 | 1982 | else { | |
1928 | - | let | |
1929 | - | if (( | |
1983 | + | let hS = valueOrErrorMessage(getString(aX(toBase58String(aG))), (("NFT " + hP.name) + " is orphaned")) | |
1984 | + | if ((hS != bN)) | |
1930 | 1985 | then throw("Staked NFT is not yours") | |
1931 | 1986 | else { | |
1932 | - | let | |
1933 | - | let | |
1934 | - | let | |
1935 | - | if (( | |
1936 | - | then throw((("Please heal your duck to " + toString( | |
1937 | - | else [ScriptTransfer( | |
1987 | + | let hq = q(jx) | |
1988 | + | let hr = O(valueOrElse(getInteger(u(jx)), 0)) | |
1989 | + | let Y = valueOrElse(getInteger(hq), hr) | |
1990 | + | if ((hr > Y)) | |
1991 | + | then throw((("Please heal your duck to " + toString(hr)) + "hp before unstaking")) | |
1992 | + | else [ScriptTransfer(eP.caller, 1, aG), DeleteEntry(hQ), DeleteEntry(hq), DeleteEntry(ba(jx)), DeleteEntry(aX(jx)), DeleteEntry(aM(aa, jx, bN)), DeleteEntry(aY(bN)), jp] | |
1938 | 1993 | } | |
1939 | 1994 | } | |
1940 | 1995 | } | |
1942 | 1997 | ||
1943 | 1998 | ||
1944 | 1999 | ||
1945 | - | @Callable( | |
1946 | - | func claimRes ( | |
1947 | - | let | |
1948 | - | if ((size( | |
2000 | + | @Callable(eP) | |
2001 | + | func claimRes (gx,jC) = { | |
2002 | + | let jp = jm(eP) | |
2003 | + | if ((size(eP.payments) != 0)) | |
1949 | 2004 | then throw("No payments required") | |
1950 | 2005 | else { | |
1951 | - | let b = toString( | |
1952 | - | let | |
1953 | - | let r = valueOrErrorMessage(getString( | |
1954 | - | $Tuple2((((( | |
1955 | - | } | |
1956 | - | } | |
1957 | - | ||
1958 | - | ||
1959 | - | ||
1960 | - | @Callable( | |
1961 | - | func claimResToWH ( | |
1962 | - | let | |
1963 | - | if ((size( | |
2006 | + | let b = toString(eP.originCaller) | |
2007 | + | let dF = hU(b, gx, da, jC) | |
2008 | + | let r = valueOrErrorMessage(getString(aY(b)), "You don't have a duck staked") | |
2009 | + | $Tuple2(((((dF._1 ++ it(r, fraction(C, gx, bF))._1) :+ StringEntry(dF._2, makeString(dF._3, ":"))) :+ StringEntry(dF._4, makeString(dF._5, ":"))) :+ jp), dF._3[aB]) | |
2010 | + | } | |
2011 | + | } | |
2012 | + | ||
2013 | + | ||
2014 | + | ||
2015 | + | @Callable(eP) | |
2016 | + | func claimResToWH (gx,jC) = { | |
2017 | + | let jp = jm(eP) | |
2018 | + | if ((size(eP.payments) != 0)) | |
1964 | 2019 | then throw("No payments required") | |
1965 | 2020 | else { | |
1966 | - | let b = toString( | |
1967 | - | let | |
1968 | - | $Tuple2((((( | |
1969 | - | } | |
1970 | - | } | |
1971 | - | ||
1972 | - | ||
1973 | - | ||
1974 | - | @Callable( | |
1975 | - | func flight ( | |
1976 | - | let | |
1977 | - | if ((size( | |
2021 | + | let b = toString(eP.originCaller) | |
2022 | + | let dF = hU(b, gx, cZ, jC) | |
2023 | + | $Tuple2(((((dF._1 ++ iz(b, fraction(C, gx, bF))._1) :+ StringEntry(dF._2, makeString(dF._3, ":"))) :+ StringEntry(dF._4, makeString(dF._5, ":"))) :+ jp), dF._5[as]) | |
2024 | + | } | |
2025 | + | } | |
2026 | + | ||
2027 | + | ||
2028 | + | ||
2029 | + | @Callable(eP) | |
2030 | + | func flight (hf,hg) = { | |
2031 | + | let jp = jm(eP) | |
2032 | + | if ((size(eP.payments) != 0)) | |
1978 | 2033 | then throw("No payments required") | |
1979 | 2034 | else { | |
1980 | - | let | |
1981 | - | let | |
1982 | - | let r = | |
1983 | - | let | |
1984 | - | let | |
1985 | - | if (( | |
2035 | + | let bd = toString(eP.caller) | |
2036 | + | let fu = he(bd, hf, hg) | |
2037 | + | let r = fu._2 | |
2038 | + | let jy = ba(r) | |
2039 | + | let hM = valueOrElse(getString(jy), ag) | |
2040 | + | if ((fu._4 == hM)) | |
1986 | 2041 | then throw("You can't fly to the same location") | |
1987 | 2042 | else { | |
1988 | - | let | |
1989 | - | let | |
1990 | - | let | |
1991 | - | $Tuple2(([StringEntry( | |
1992 | - | then | |
1993 | - | else | |
1994 | - | then | |
1995 | - | else | |
2043 | + | let hz = w(r) | |
2044 | + | let hA = valueOrElse(getString(hz), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2045 | + | let hB = dG(hA, fu._5) | |
2046 | + | $Tuple2(([StringEntry(jy, if ((fu._1 > 0)) | |
2047 | + | then fu._4 | |
2048 | + | else hM), StringEntry(hz, hB), IntegerEntry(q(r), fu._1), jp] ++ it(r, if ((fu._1 > 0)) | |
2049 | + | then D | |
2050 | + | else E)._1), fu._3) | |
1996 | 2051 | } | |
1997 | 2052 | } | |
1998 | 2053 | } | |
1999 | 2054 | ||
2000 | 2055 | ||
2001 | 2056 | ||
2002 | - | @Callable( | |
2003 | - | func heal ( | |
2004 | - | let | |
2005 | - | if (if (if ((0 > | |
2057 | + | @Callable(eP) | |
2058 | + | func heal (jD,jE,jF) = { | |
2059 | + | let jp = jm(eP) | |
2060 | + | if (if (if ((0 > jD)) | |
2006 | 2061 | then true | |
2007 | - | else (0 > | |
2062 | + | else (0 > jE)) | |
2008 | 2063 | then true | |
2009 | - | else (0 > | |
2064 | + | else (0 > jF)) | |
2010 | 2065 | then throw("Quantity cannot be negative") | |
2011 | 2066 | else { | |
2012 | - | let r = valueOrErrorMessage(getString( | |
2013 | - | let | |
2014 | - | let | |
2015 | - | let | |
2016 | - | let | |
2017 | - | if (( | |
2018 | - | then throw((("HP should be < " + toString( | |
2067 | + | let r = valueOrErrorMessage(getString(aY(toString(eP.caller))), "You don't have a duck staked") | |
2068 | + | let jG = [jD, jE, jF] | |
2069 | + | let hq = q(r) | |
2070 | + | let hr = O(valueOrElse(getInteger(u(r)), 0)) | |
2071 | + | let jH = valueOrElse(getInteger(hq), hr) | |
2072 | + | if ((jH >= hr)) | |
2073 | + | then throw((("HP should be < " + toString(hr)) + " to heal")) | |
2019 | 2074 | else { | |
2020 | - | let | |
2021 | - | let | |
2022 | - | let | |
2075 | + | let fT = aZ(r) | |
2076 | + | let gB = fS(fT) | |
2077 | + | let jI = if ((gB[aD] == "")) | |
2023 | 2078 | then nil | |
2024 | - | else split( | |
2025 | - | func | |
2026 | - | let | |
2027 | - | let | |
2028 | - | then parseIntValue( | |
2079 | + | else split(gB[aD], "_") | |
2080 | + | func jJ (dn,jK) = { | |
2081 | + | let ct = dn._2 | |
2082 | + | let fl = if ((size(jI) > ct)) | |
2083 | + | then parseIntValue(jI[ct]) | |
2029 | 2084 | else 0 | |
2030 | - | if ((3 > | |
2085 | + | if ((3 > ct)) | |
2031 | 2086 | then { | |
2032 | - | let | |
2033 | - | if (( | |
2034 | - | then throw(((("You have only " + toString( | |
2035 | - | else $Tuple3(( | |
2087 | + | let jL = jG[ct] | |
2088 | + | if ((jL > fl)) | |
2089 | + | then throw(((("You have only " + toString(fl)) + " of ") + aj[ct])) | |
2090 | + | else $Tuple3((dn._1 :+ toString((fl - jL))), (ct + 1), (dn._3 + (cA[ct] * jL))) | |
2036 | 2091 | } | |
2037 | - | else $Tuple3(( | |
2092 | + | else $Tuple3((dn._1 :+ toString(fl)), (ct + 1), dn._3) | |
2038 | 2093 | } | |
2039 | 2094 | ||
2040 | - | let | |
2041 | - | let | |
2042 | - | let | |
2043 | - | let | |
2044 | - | func | |
2045 | - | then | |
2046 | - | else | |
2047 | - | ||
2048 | - | func | |
2049 | - | then | |
2095 | + | let dF = { | |
2096 | + | let dp = am | |
2097 | + | let dq = size(dp) | |
2098 | + | let dr = $Tuple3(nil, 0, 0) | |
2099 | + | func ds (dt,du) = if ((du >= dq)) | |
2100 | + | then dt | |
2101 | + | else jJ(dt, dp[du]) | |
2102 | + | ||
2103 | + | func dv (dt,du) = if ((du >= dq)) | |
2104 | + | then dt | |
2050 | 2105 | else throw("List size exceeds 50") | |
2051 | 2106 | ||
2052 | - | | |
2107 | + | dv(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(dr, 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) | |
2053 | 2108 | } | |
2054 | - | let | |
2055 | - | $Tuple2(([IntegerEntry( | |
2109 | + | let jM = min([hr, (jH + dF._3)]) | |
2110 | + | $Tuple2(([IntegerEntry(hq, jM), StringEntry(fT, makeString_2C([gB[aA], gB[aB], gB[aC], makeString(dF._1, "_")], ":")), jp] ++ it(r, (L * ((jD + jE) + jF)))._1), jM) | |
2056 | 2111 | } | |
2057 | 2112 | } | |
2058 | 2113 | } | |
2059 | 2114 | ||
2060 | 2115 | ||
2061 | 2116 | ||
2062 | - | @Callable( | |
2117 | + | @Callable(eP) | |
2063 | 2118 | func healES () = { | |
2064 | - | let | |
2065 | - | if ((size( | |
2119 | + | let jp = jm(eP) | |
2120 | + | if ((size(eP.payments) != 1)) | |
2066 | 2121 | then throw("Exactly one payment required") | |
2067 | 2122 | else { | |
2068 | - | let | |
2069 | - | if (( | |
2123 | + | let jq = value(eP.payments[0]) | |
2124 | + | if ((jq.assetId != by)) | |
2070 | 2125 | then throw("Allowed USDT payment only!") | |
2071 | 2126 | else { | |
2072 | - | let r = valueOrErrorMessage(getString( | |
2073 | - | let | |
2074 | - | let | |
2075 | - | let | |
2076 | - | if (( | |
2127 | + | let r = valueOrErrorMessage(getString(aY(toString(eP.caller))), "You don't have a duck staked") | |
2128 | + | let hq = q(r) | |
2129 | + | let hr = O(valueOrElse(getInteger(u(r)), 0)) | |
2130 | + | let jH = valueOrElse(getInteger(hq), hr) | |
2131 | + | if ((jH > 0)) | |
2077 | 2132 | then throw("HP should be 0 to call Emergency Service") | |
2078 | 2133 | else { | |
2079 | - | let | |
2080 | - | let | |
2081 | - | let | |
2134 | + | let fT = aZ(r) | |
2135 | + | let gB = fS(fT) | |
2136 | + | let jI = if ((gB[aD] == "")) | |
2082 | 2137 | then nil | |
2083 | - | else split( | |
2084 | - | let | |
2085 | - | then parseIntValue( | |
2138 | + | else split(gB[aD], "_") | |
2139 | + | let jN = if ((size(jI) > 0)) | |
2140 | + | then parseIntValue(jI[0]) | |
2086 | 2141 | else 0 | |
2087 | - | let | |
2088 | - | then parseIntValue( | |
2142 | + | let jO = if ((size(jI) > 1)) | |
2143 | + | then parseIntValue(jI[1]) | |
2089 | 2144 | else 0 | |
2090 | - | let | |
2091 | - | then parseIntValue( | |
2145 | + | let jP = if ((size(jI) > 2)) | |
2146 | + | then parseIntValue(jI[2]) | |
2092 | 2147 | else 0 | |
2093 | - | if (if (if (( | |
2148 | + | if (if (if ((jN > 0)) | |
2094 | 2149 | then true | |
2095 | - | else ( | |
2150 | + | else (jO > 0)) | |
2096 | 2151 | then true | |
2097 | - | else ( | |
2152 | + | else (jP > 0)) | |
2098 | 2153 | then throw("You have to use own Medical Kit") | |
2099 | 2154 | else { | |
2100 | - | let | |
2101 | - | let | |
2102 | - | then split(value( | |
2155 | + | let jQ = getString(cc, be()) | |
2156 | + | let jR = if (isDefined(jQ)) | |
2157 | + | then split(value(jQ), "_") | |
2103 | 2158 | else nil | |
2104 | - | let | |
2105 | - | then parseIntValue( | |
2159 | + | let jS = if ((size(jR) > 0)) | |
2160 | + | then parseIntValue(jR[0]) | |
2106 | 2161 | else 0 | |
2107 | - | if ((0 >= | |
2162 | + | if ((0 >= jS)) | |
2108 | 2163 | then throw("There are no Medical Kits L1 at Emergency Service storage") | |
2109 | 2164 | else { | |
2110 | - | let | |
2111 | - | let | |
2112 | - | let | |
2113 | - | let | |
2114 | - | let | |
2115 | - | if (( | |
2116 | - | then throw(("Payment attached should be " + toString( | |
2165 | + | let jM = (jH + cA[0]) | |
2166 | + | let jT = makeString([toString((jS - 1)), removeByIndex(jR, 0)], "_") | |
2167 | + | let bv = split(am[0], "_") | |
2168 | + | let jU = bu(bv) | |
2169 | + | let jV = fraction((jU * ai), ah, (bF * aq)) | |
2170 | + | if ((jq.amount != jV)) | |
2171 | + | then throw(("Payment attached should be " + toString(jV))) | |
2117 | 2172 | else { | |
2118 | - | let | |
2119 | - | $Tuple2(([IntegerEntry( | |
2173 | + | let dF = cp(invoke(cc, "updateEsStorage", [jT], [AttachedPayment(by, jV)])) | |
2174 | + | $Tuple2(([IntegerEntry(hq, jM), jp] ++ it(r, F)._1), dF) | |
2120 | 2175 | } | |
2121 | 2176 | } | |
2122 | 2177 | } | |
2127 | 2182 | ||
2128 | 2183 | ||
2129 | 2184 | ||
2130 | - | @Callable( | |
2131 | - | func updateBackpack (r, | |
2185 | + | @Callable(eP) | |
2186 | + | func updateBackpack (r,jW) = if ((eP.caller != cc)) | |
2132 | 2187 | then throw("permission denied") | |
2133 | - | else $Tuple2([StringEntry( | |
2134 | - | ||
2135 | - | ||
2136 | - | ||
2137 | - | @Callable( | |
2188 | + | else $Tuple2([StringEntry(aZ(r), jW)], jW) | |
2189 | + | ||
2190 | + | ||
2191 | + | ||
2192 | + | @Callable(eP) | |
2138 | 2193 | func commitForRandom () = { | |
2139 | - | let | |
2140 | - | let | |
2141 | - | let b = toString( | |
2142 | - | $Tuple2(([IntegerEntry( | |
2143 | - | } | |
2144 | - | ||
2145 | - | ||
2146 | - | ||
2147 | - | @Callable( | |
2194 | + | let jp = jm(eP) | |
2195 | + | let jX = (height + ck) | |
2196 | + | let b = toString(eP.caller) | |
2197 | + | $Tuple2(([IntegerEntry(cl(b), jX)] :+ jp), jX) | |
2198 | + | } | |
2199 | + | ||
2200 | + | ||
2201 | + | ||
2202 | + | @Callable(eP) | |
2148 | 2203 | func buySLand () = { | |
2149 | - | let | |
2150 | - | if ((size( | |
2204 | + | let jp = jm(eP) | |
2205 | + | if ((size(eP.payments) != 1)) | |
2151 | 2206 | then throw("Exactly one payment required") | |
2152 | 2207 | else { | |
2153 | - | let | |
2154 | - | if (( | |
2208 | + | let jq = value(eP.payments[0]) | |
2209 | + | if ((jq.assetId != by)) | |
2155 | 2210 | then throw("Allowed USDT payment only!") | |
2156 | - | else if (( | |
2157 | - | then throw(("Payment attached should be " + toString( | |
2211 | + | else if ((jq.amount != cG)) | |
2212 | + | then throw(("Payment attached should be " + toString(cG))) | |
2158 | 2213 | else { | |
2159 | - | let | |
2160 | - | $Tuple2(((( | |
2214 | + | let dF = gW(eP.caller, eP.transactionId) | |
2215 | + | $Tuple2((((dF._1 :+ ScriptTransfer(cc, jq.amount, by)) ++ iz(toString(eP.caller), H)._1) :+ jp), dF._2._1) | |
2161 | 2216 | } | |
2162 | 2217 | } | |
2163 | 2218 | } | |
2164 | 2219 | ||
2165 | 2220 | ||
2166 | 2221 | ||
2167 | - | @Callable( | |
2168 | - | func expedition ( | |
2169 | - | let | |
2170 | - | if ((size( | |
2222 | + | @Callable(eP) | |
2223 | + | func expedition (hf,hg) = { | |
2224 | + | let jp = jm(eP) | |
2225 | + | if ((size(eP.payments) != 0)) | |
2171 | 2226 | then throw("No payments required") | |
2172 | 2227 | else { | |
2173 | - | let | |
2174 | - | let r = valueOrErrorMessage(getString( | |
2175 | - | $Tuple2((( | |
2176 | - | } | |
2177 | - | } | |
2178 | - | ||
2179 | - | ||
2180 | - | ||
2181 | - | @Callable( | |
2182 | - | func upgradeInfra ( | |
2183 | - | let | |
2184 | - | if ((size( | |
2228 | + | let dF = hw(eP.caller, eP.transactionId, hf, hg) | |
2229 | + | let r = valueOrErrorMessage(getString(aY(toString(eP.caller))), "You don't have a duck staked") | |
2230 | + | $Tuple2(((dF._1 ++ it(r, H)._1) :+ jp), $Tuple2(dF._2, dF._3)) | |
2231 | + | } | |
2232 | + | } | |
2233 | + | ||
2234 | + | ||
2235 | + | ||
2236 | + | @Callable(eP) | |
2237 | + | func upgradeInfra (aQ) = { | |
2238 | + | let jp = jm(eP) | |
2239 | + | if ((size(eP.payments) != 0)) | |
2185 | 2240 | then throw("No payments required") | |
2186 | 2241 | else { | |
2187 | - | let | |
2188 | - | let r = valueOrErrorMessage(getString( | |
2189 | - | $Tuple2((( | |
2190 | - | } | |
2191 | - | } | |
2192 | - | ||
2193 | - | ||
2194 | - | ||
2195 | - | @Callable( | |
2196 | - | func activateArtifact ( | |
2197 | - | let | |
2198 | - | if ((size( | |
2242 | + | let dF = ih(true, eP.caller, 0, aQ) | |
2243 | + | let r = valueOrErrorMessage(getString(aY(toString(eP.caller))), "You don't have a duck staked") | |
2244 | + | $Tuple2(((dF._1 :+ jp) ++ it(r, fraction(I, dF._3, bF))._1), dF._2) | |
2245 | + | } | |
2246 | + | } | |
2247 | + | ||
2248 | + | ||
2249 | + | ||
2250 | + | @Callable(eP) | |
2251 | + | func activateArtifact (jY,jZ) = { | |
2252 | + | let jp = jm(eP) | |
2253 | + | if ((size(eP.payments) != 0)) | |
2199 | 2254 | then throw("No payments required") | |
2200 | 2255 | else { | |
2201 | - | let b = toString( | |
2202 | - | let | |
2203 | - | let | |
2204 | - | if (("PRESALE" == | |
2205 | - | then | |
2206 | - | else if (("ONBOARD" == | |
2207 | - | then | |
2256 | + | let b = toString(eP.caller) | |
2257 | + | let dF = { | |
2258 | + | let bz = jY | |
2259 | + | if (("PRESALE" == bz)) | |
2260 | + | then iH(b, jZ) | |
2261 | + | else if (("ONBOARD" == bz)) | |
2262 | + | then iA(b) | |
2208 | 2263 | else throw("Unknown artifact") | |
2209 | 2264 | } | |
2210 | - | ( | |
2211 | - | } | |
2212 | - | } | |
2213 | - | ||
2214 | - | ||
2215 | - | ||
2216 | - | @Callable( | |
2217 | - | func mergeLands ( | |
2218 | - | let | |
2219 | - | if ((size( | |
2265 | + | (dF :+ jp) | |
2266 | + | } | |
2267 | + | } | |
2268 | + | ||
2269 | + | ||
2270 | + | ||
2271 | + | @Callable(eP) | |
2272 | + | func mergeLands (iM) = { | |
2273 | + | let jp = jm(eP) | |
2274 | + | if ((size(eP.payments) != 0)) | |
2220 | 2275 | then throw("No payments required") | |
2221 | 2276 | else { | |
2222 | - | let | |
2223 | - | $Tuple2((( | |
2224 | - | } | |
2225 | - | } | |
2226 | - | ||
2227 | - | ||
2228 | - | ||
2229 | - | @Callable( | |
2230 | - | func cargoExchange ( | |
2231 | - | let | |
2232 | - | if ((size( | |
2277 | + | let dF = jh(toString(eP.caller), iM) | |
2278 | + | $Tuple2(((dF._1 :+ jp) ++ iz(toString(eP.caller), J)._1), dF._2) | |
2279 | + | } | |
2280 | + | } | |
2281 | + | ||
2282 | + | ||
2283 | + | ||
2284 | + | @Callable(eP) | |
2285 | + | func cargoExchange (ka,aQ) = { | |
2286 | + | let jp = jm(eP) | |
2287 | + | if ((size(eP.payments) != 0)) | |
2233 | 2288 | then throw("No payments required") | |
2234 | 2289 | else { | |
2235 | - | let | |
2236 | - | let b = toString( | |
2237 | - | let | |
2238 | - | let | |
2239 | - | if (!(isDefined(getInteger( | |
2240 | - | then throw(( | |
2290 | + | let gA = split_4C(ka, ":") | |
2291 | + | let b = toString(eP.originCaller) | |
2292 | + | let hP = value(assetInfo(fromBase58String(aQ))) | |
2293 | + | let hQ = aI(aQ) | |
2294 | + | if (!(isDefined(getInteger(hQ)))) | |
2295 | + | then throw((hP.name + " is not staked")) | |
2241 | 2296 | else { | |
2242 | - | let | |
2243 | - | if (( | |
2244 | - | then throw(( | |
2297 | + | let hS = valueOrErrorMessage(getString(aF(aQ)), (("NFT " + hP.name) + " is orphaned")) | |
2298 | + | if ((hS != b)) | |
2299 | + | then throw((Z + " is not yours")) | |
2245 | 2300 | else { | |
2246 | - | let | |
2247 | - | let | |
2248 | - | let r = valueOrErrorMessage(getString( | |
2249 | - | let | |
2250 | - | let | |
2251 | - | if (( | |
2252 | - | then throw((("Duck location type is " + | |
2253 | - | else if (( | |
2254 | - | then throw(("Duck should be on the land " + | |
2301 | + | let gj = (cu(split(hP.description, "_")[ch]) / bG) | |
2302 | + | let gk = valueOrElse(getInteger(aJ(aQ)), 0) | |
2303 | + | let r = valueOrErrorMessage(getString(aY(b)), "You don't have a duck staked") | |
2304 | + | let hM = valueOrElse(getString(ba(r)), ag) | |
2305 | + | let hN = split(value(hM), "_") | |
2306 | + | if ((hN[bs] != "L")) | |
2307 | + | then throw((("Duck location type is " + hN[bs]) + ", but should be L")) | |
2308 | + | else if ((hN[bt] != aQ)) | |
2309 | + | then throw(("Duck should be on the land " + aQ)) | |
2255 | 2310 | else { | |
2256 | - | let | |
2257 | - | let | |
2258 | - | let | |
2259 | - | let | |
2260 | - | let | |
2261 | - | let | |
2262 | - | let | |
2263 | - | let | |
2264 | - | [StringEntry( | |
2311 | + | let gi = aP(aQ) | |
2312 | + | let fY = gh(gi, gj, gk) | |
2313 | + | let fT = aZ(r) | |
2314 | + | let gB = fS(fT) | |
2315 | + | let dF = gz(gA, fY, gB) | |
2316 | + | let gq = split(fY[av], "_") | |
2317 | + | let ie = (parseIntValue(gq[ax]) + dF._7) | |
2318 | + | let if = (parseIntValue(gq[ay]) - dF._7) | |
2319 | + | [StringEntry(fT, makeString_2C([gB[aA], dF._4, dF._5, dF._6], ":")), StringEntry(gi, makeString_2C([fY[ar], dF._1, dF._2, dF._3, makeString([gq[aw], toString(ie), toString(if), gq[az]], "_")], ":")), jp] | |
2265 | 2320 | } | |
2266 | 2321 | } | |
2267 | 2322 | } | |
2270 | 2325 | ||
2271 | 2326 | ||
2272 | 2327 | ||
2273 | - | @Callable( | |
2274 | - | func saveWarehouse ( | |
2328 | + | @Callable(eP) | |
2329 | + | func saveWarehouse (gm,aQ) = if ((eP.caller != cc)) | |
2275 | 2330 | then throw("Access denied") | |
2276 | 2331 | else { | |
2277 | - | let | |
2278 | - | let | |
2279 | - | if ((size( | |
2332 | + | let gi = aP(aQ) | |
2333 | + | let gn = split_4C(gm, ":") | |
2334 | + | if ((size(gn) != 5)) | |
2280 | 2335 | then throw("warehouse string should contain 4 ':' separators") | |
2281 | 2336 | else { | |
2282 | - | let | |
2283 | - | let | |
2284 | - | let | |
2285 | - | let | |
2286 | - | let | |
2287 | - | $Tuple2([StringEntry( | |
2337 | + | let kb = split(gn[av], "_")[aw] | |
2338 | + | let ie = fX(gn) | |
2339 | + | let kc = fV(gn[ar]) | |
2340 | + | let if = ((kc - parseIntValue(kb)) - ie) | |
2341 | + | let kd = makeString_2C([gn[ar], gn[as], gn[at], gn[au], makeString([kb, toString(ie), toString(if), toString(kc)], "_")], ":") | |
2342 | + | $Tuple2([StringEntry(gi, kd)], kd) | |
2288 | 2343 | } | |
2289 | 2344 | } | |
2290 | 2345 | ||
2291 | 2346 | ||
2292 | 2347 | ||
2293 | - | @Callable( | |
2294 | - | func fixWarehouseFormat ( | |
2348 | + | @Callable(eP) | |
2349 | + | func fixWarehouseFormat (aQ) = if ((eP.caller != cb)) | |
2295 | 2350 | then throw("Access denied") | |
2296 | 2351 | else { | |
2297 | - | let | |
2298 | - | let | |
2299 | - | let | |
2300 | - | let | |
2301 | - | let | |
2302 | - | let | |
2303 | - | let | |
2304 | - | let | |
2305 | - | let | |
2306 | - | let | |
2307 | - | $Tuple2([StringEntry( | |
2308 | - | } | |
2309 | - | ||
2310 | - | ||
2311 | - | ||
2312 | - | @Callable( | |
2313 | - | func fixStakedPieces ( | |
2352 | + | let gi = aP(aQ) | |
2353 | + | let hP = value(assetInfo(fromBase58String(aQ))) | |
2354 | + | let gj = (cu(split(hP.description, "_")[ch]) / bG) | |
2355 | + | let gk = valueOrElse(getInteger(aJ(aQ)), 0) | |
2356 | + | let gn = gh(gi, gj, gk) | |
2357 | + | let kb = cs(invoke(cc, "recalcLockedVolumeREADONLY", [aQ, gn], nil)) | |
2358 | + | let ie = fX(gn) | |
2359 | + | let kc = fV(gn[ar]) | |
2360 | + | let if = ((kc - kb) - ie) | |
2361 | + | let kd = makeString_2C([gn[ar], gn[as], gn[at], gn[au], makeString([toString(kb), toString(ie), toString(if), toString(kc)], "_")], ":") | |
2362 | + | $Tuple2([StringEntry(gi, kd)], kd) | |
2363 | + | } | |
2364 | + | ||
2365 | + | ||
2366 | + | ||
2367 | + | @Callable(eP) | |
2368 | + | func fixStakedPieces (bN) = if ((eP.caller != cb)) | |
2314 | 2369 | then throw("Access denied") | |
2315 | 2370 | else { | |
2316 | - | let | |
2371 | + | let jc = if ((bN == "")) | |
2317 | 2372 | then 0 | |
2318 | 2373 | else { | |
2319 | - | let | |
2320 | - | let | |
2321 | - | then split_51C(value( | |
2374 | + | let iX = getString(V, cn(bN)) | |
2375 | + | let iT = if (isDefined(iX)) | |
2376 | + | then split_51C(value(iX), "_") | |
2322 | 2377 | else nil | |
2323 | - | func | |
2324 | - | let | |
2325 | - | let | |
2326 | - | ( | |
2378 | + | func ke (dn,aQ) = { | |
2379 | + | let hP = value(assetInfo(fromBase58String(aQ))) | |
2380 | + | let cv = split(hP.description, "_")[ch] | |
2381 | + | (dn + cu(cv)) | |
2327 | 2382 | } | |
2328 | 2383 | ||
2329 | - | let | |
2330 | - | let | |
2331 | - | let | |
2332 | - | func | |
2333 | - | then | |
2334 | - | else | |
2335 | - | ||
2336 | - | func | |
2337 | - | then | |
2384 | + | let dp = iT | |
2385 | + | let dq = size(dp) | |
2386 | + | let dr = 0 | |
2387 | + | func ds (dt,du) = if ((du >= dq)) | |
2388 | + | then dt | |
2389 | + | else ke(dt, dp[du]) | |
2390 | + | ||
2391 | + | func dv (dt,du) = if ((du >= dq)) | |
2392 | + | then dt | |
2338 | 2393 | else throw("List size exceeds 100") | |
2339 | 2394 | ||
2340 | - | | |
2395 | + | dv(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(dr, 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) | |
2341 | 2396 | } | |
2342 | - | $Tuple2([IntegerEntry( | |
2343 | - | } | |
2344 | - | ||
2345 | - | ||
2346 | - | ||
2347 | - | @Callable( | |
2348 | - | func setCustomName ( | |
2349 | - | let | |
2350 | - | if ((size( | |
2397 | + | $Tuple2([IntegerEntry(co(bN), jc)], jc) | |
2398 | + | } | |
2399 | + | ||
2400 | + | ||
2401 | + | ||
2402 | + | @Callable(eP) | |
2403 | + | func setCustomName (aG,iV,aL) = { | |
2404 | + | let jp = jm(eP) | |
2405 | + | if ((size(eP.payments) != 1)) | |
2351 | 2406 | then throw("Exactly one payment required") | |
2352 | 2407 | else { | |
2353 | - | let | |
2354 | - | if (( | |
2408 | + | let jq = value(eP.payments[0]) | |
2409 | + | if ((jq.assetId != by)) | |
2355 | 2410 | then throw("Allowed USDT payment only!") | |
2356 | - | else if (( | |
2357 | - | then throw(("Payment should be " + toString( | |
2358 | - | else if (contains( | |
2359 | - | then throw(("Name should not contain '__': " + | |
2360 | - | else if ((size( | |
2361 | - | then throw(("Name too long, maxLength=" + toString( | |
2411 | + | else if ((jq.amount != cC)) | |
2412 | + | then throw(("Payment should be " + toString(cC))) | |
2413 | + | else if (contains(iV, "__")) | |
2414 | + | then throw(("Name should not contain '__': " + iV)) | |
2415 | + | else if ((size(iV) > cD)) | |
2416 | + | then throw(("Name too long, maxLength=" + toString(cD))) | |
2362 | 2417 | else { | |
2363 | - | let b = toString( | |
2364 | - | let | |
2365 | - | let | |
2366 | - | if (("ACCOUNT" == | |
2418 | + | let b = toString(eP.originCaller) | |
2419 | + | let kf = { | |
2420 | + | let bz = aL | |
2421 | + | if (("ACCOUNT" == bz)) | |
2367 | 2422 | then { | |
2368 | - | let | |
2369 | - | let | |
2370 | - | if (isDefined( | |
2371 | - | then throw(("Name already registered: " + | |
2423 | + | let kg = cX(iV) | |
2424 | + | let kh = getString(kg) | |
2425 | + | if (isDefined(kh)) | |
2426 | + | then throw(("Name already registered: " + iV)) | |
2372 | 2427 | else { | |
2373 | - | let | |
2374 | - | let | |
2375 | - | let | |
2376 | - | then [DeleteEntry( | |
2428 | + | let ki = aS(b) | |
2429 | + | let kj = getString(ki) | |
2430 | + | let kk = if (isDefined(kj)) | |
2431 | + | then [DeleteEntry(cX(value(kj)))] | |
2377 | 2432 | else nil | |
2378 | - | ((( | |
2433 | + | (((kk :+ StringEntry(ki, iV)) :+ StringEntry(kg, b)) ++ iz(b, G)._1) | |
2379 | 2434 | } | |
2380 | 2435 | } | |
2381 | - | else if (("LAND" == | |
2436 | + | else if (("LAND" == bz)) | |
2382 | 2437 | then { | |
2383 | - | let | |
2384 | - | let | |
2385 | - | if (!(isDefined(getInteger( | |
2386 | - | then throw(( | |
2438 | + | let hP = value(assetInfo(fromBase58String(aG))) | |
2439 | + | let hQ = aI(aG) | |
2440 | + | if (!(isDefined(getInteger(hQ)))) | |
2441 | + | then throw((hP.name + " is not staked")) | |
2387 | 2442 | else { | |
2388 | - | let | |
2389 | - | if (( | |
2390 | - | then throw(( | |
2443 | + | let hS = valueOrErrorMessage(getString(aF(aG)), (("NFT " + hP.name) + " is orphaned")) | |
2444 | + | if ((hS != b)) | |
2445 | + | then throw((Z + " is not yours")) | |
2391 | 2446 | else { | |
2392 | - | let | |
2393 | - | let | |
2394 | - | if (isDefined( | |
2395 | - | then throw(("Name already registered: " + | |
2447 | + | let kg = cR(iV) | |
2448 | + | let kh = getString(kg) | |
2449 | + | if (isDefined(kh)) | |
2450 | + | then throw(("Name already registered: " + iV)) | |
2396 | 2451 | else { | |
2397 | - | let | |
2398 | - | let | |
2399 | - | let | |
2400 | - | then [DeleteEntry( | |
2452 | + | let kl = aH(aG) | |
2453 | + | let kj = getString(kl) | |
2454 | + | let kk = if (isDefined(kj)) | |
2455 | + | then [DeleteEntry(cR(value(kj)))] | |
2401 | 2456 | else nil | |
2402 | - | ((( | |
2457 | + | (((kk :+ StringEntry(kl, iV)) :+ StringEntry(kg, aG)) ++ iz(b, G)._1) | |
2403 | 2458 | } | |
2404 | 2459 | } | |
2405 | 2460 | } | |
2406 | 2461 | } | |
2407 | - | else if (("DUCK" == | |
2462 | + | else if (("DUCK" == bz)) | |
2408 | 2463 | then { | |
2409 | - | let | |
2410 | - | let | |
2411 | - | if (if (!(isDefined(getInteger( | |
2464 | + | let hP = value(assetInfo(fromBase58String(aG))) | |
2465 | + | let hQ = aI(aG) | |
2466 | + | if (if (!(isDefined(getInteger(hQ)))) | |
2412 | 2467 | then true | |
2413 | - | else !(isDefined(getString( | |
2414 | - | then throw(( | |
2468 | + | else !(isDefined(getString(aY(b))))) | |
2469 | + | then throw((hP.name + " is not staked")) | |
2415 | 2470 | else { | |
2416 | - | let | |
2417 | - | if (( | |
2418 | - | then throw(( | |
2471 | + | let hS = valueOrErrorMessage(getString(aX(aG)), (("NFT " + hP.name) + " is orphaned")) | |
2472 | + | if ((hS != b)) | |
2473 | + | then throw((aa + " is not yours")) | |
2419 | 2474 | else { | |
2420 | - | let | |
2421 | - | let | |
2422 | - | if (isDefined( | |
2423 | - | then throw(("Name already registered: " + | |
2475 | + | let kg = cW(iV) | |
2476 | + | let kh = getString(kg) | |
2477 | + | if (isDefined(kh)) | |
2478 | + | then throw(("Name already registered: " + iV)) | |
2424 | 2479 | else { | |
2425 | - | let | |
2426 | - | let | |
2427 | - | let | |
2428 | - | then [DeleteEntry( | |
2480 | + | let kl = aR(aG) | |
2481 | + | let kj = getString(kl) | |
2482 | + | let kk = if (isDefined(kj)) | |
2483 | + | then [DeleteEntry(cW(value(kj)))] | |
2429 | 2484 | else nil | |
2430 | - | ((( | |
2485 | + | (((kk :+ StringEntry(kl, iV)) :+ StringEntry(kg, aG)) ++ it(aG, G)._1) | |
2431 | 2486 | } | |
2432 | 2487 | } | |
2433 | 2488 | } | |
2434 | 2489 | } | |
2435 | 2490 | else throw("Unknown entity type") | |
2436 | 2491 | } | |
2437 | - | $Tuple2((( | |
2492 | + | $Tuple2(((kf :+ ScriptTransfer(cc, jq.amount, by)) :+ jp), 0) | |
2438 | 2493 | } | |
2439 | 2494 | } | |
2440 | 2495 | } | |
2441 | 2496 | ||
2442 | 2497 | ||
2443 | 2498 | ||
2444 | - | @Callable( | |
2445 | - | func setReferrals ( | |
2499 | + | @Callable(eP) | |
2500 | + | func setReferrals (km,kn) = if ((eP.callerPublicKey != cz)) | |
2446 | 2501 | then throw("Permission denied") | |
2447 | 2502 | else { | |
2448 | - | let | |
2449 | - | if ((size( | |
2503 | + | let jp = jm(eP) | |
2504 | + | if ((size(eP.payments) != 0)) | |
2450 | 2505 | then throw("No payments required") | |
2451 | - | else if (!(isDefined(addressFromString( | |
2452 | - | then throw(("Invalid address: " + | |
2453 | - | else if (!(isDefined(addressFromString( | |
2454 | - | then throw(("Invalid address: " + | |
2506 | + | else if (!(isDefined(addressFromString(km)))) | |
2507 | + | then throw(("Invalid address: " + km)) | |
2508 | + | else if (!(isDefined(addressFromString(kn)))) | |
2509 | + | then throw(("Invalid address: " + kn)) | |
2455 | 2510 | else { | |
2456 | - | let | |
2457 | - | let | |
2458 | - | let | |
2459 | - | then split_4C(value( | |
2511 | + | let ko = cY() | |
2512 | + | let kp = getString(ko) | |
2513 | + | let kq = if (isDefined(kp)) | |
2514 | + | then split_4C(value(kp), "_") | |
2460 | 2515 | else nil | |
2461 | - | if (containsElement( | |
2462 | - | then throw(( | |
2516 | + | if (containsElement(kq, kn)) | |
2517 | + | then throw((kn + " is not newbie (already has referrals)")) | |
2463 | 2518 | else { | |
2464 | - | let | |
2465 | - | let | |
2466 | - | if (if (isDefined( | |
2467 | - | then isDefined(addressFromString(value( | |
2519 | + | let iB = aT(kn) | |
2520 | + | let iC = getString(iB) | |
2521 | + | if (if (isDefined(iC)) | |
2522 | + | then isDefined(addressFromString(value(iC))) | |
2468 | 2523 | else false) | |
2469 | - | then throw((( | |
2524 | + | then throw(((kn + " already has refBy: ") + value(iC))) | |
2470 | 2525 | else { | |
2471 | - | let | |
2472 | - | let | |
2473 | - | let | |
2474 | - | then split_4C(value( | |
2526 | + | let kr = aW(km) | |
2527 | + | let ks = getString(kr) | |
2528 | + | let kt = if (isDefined(ks)) | |
2529 | + | then split_4C(value(ks), "_") | |
2475 | 2530 | else nil | |
2476 | - | if (containsElement( | |
2477 | - | then throw(((( | |
2531 | + | if (containsElement(kt, kn)) | |
2532 | + | then throw((((km + " already contains ") + kn) + " within referrals")) | |
2478 | 2533 | else { | |
2479 | - | let | |
2480 | - | let | |
2481 | - | then value( | |
2482 | - | else makeString_2C(( | |
2483 | - | $Tuple2([StringEntry( | |
2534 | + | let ku = makeString_2C((kt :+ kn), "_") | |
2535 | + | let kv = if (containsElement(kq, km)) | |
2536 | + | then value(kp) | |
2537 | + | else makeString_2C((kq :+ km), "_") | |
2538 | + | $Tuple2([StringEntry(iB, km), StringEntry(kr, ku), StringEntry(ko, kv), jp], 0) | |
2484 | 2539 | } | |
2485 | 2540 | } | |
2486 | 2541 | } | |
2489 | 2544 | ||
2490 | 2545 | ||
2491 | 2546 | ||
2492 | - | @Callable( | |
2493 | - | func distributePoints ( | |
2494 | - | let | |
2495 | - | if ((size( | |
2547 | + | @Callable(eP) | |
2548 | + | func distributePoints (kw,kx,ky,kz,kA) = { | |
2549 | + | let jp = jm(eP) | |
2550 | + | if ((size(eP.payments) != 0)) | |
2496 | 2551 | then throw("No payments required") | |
2497 | 2552 | else { | |
2498 | - | let b = toString( | |
2499 | - | let r = valueOrErrorMessage(getString( | |
2500 | - | let | |
2501 | - | let | |
2502 | - | let | |
2503 | - | let | |
2504 | - | let | |
2505 | - | let | |
2506 | - | if (( | |
2507 | - | then throw((("There are only " + toString( | |
2553 | + | let b = toString(eP.originCaller) | |
2554 | + | let r = valueOrErrorMessage(getString(aY(b)), "You don't have a duck staked") | |
2555 | + | let kB = z(b) | |
2556 | + | let kC = valueOrElse(getInteger(V, kB), 0) | |
2557 | + | let kD = v(r) | |
2558 | + | let kE = valueOrElse(getInteger(V, kD), 0) | |
2559 | + | let kF = (kC + kE) | |
2560 | + | let kG = ((((kw + kx) + ky) + kz) + kA) | |
2561 | + | if ((kG > kF)) | |
2562 | + | then throw((("There are only " + toString(kF)) + " free points to distribute")) | |
2508 | 2563 | else { | |
2509 | - | let | |
2510 | - | let | |
2511 | - | let | |
2512 | - | $Tuple2([IntegerEntry( | |
2564 | + | let kH = s(r) | |
2565 | + | let W = split(valueOrElse(getString(V, kH), "0_0_0_0_0"), "_") | |
2566 | + | let kI = (kC - kG) | |
2567 | + | $Tuple2([IntegerEntry(kB, if ((0 > kI)) | |
2513 | 2568 | then 0 | |
2514 | - | else | |
2515 | - | then ( | |
2516 | - | else | |
2569 | + | else kI), IntegerEntry(kD, if ((0 > kI)) | |
2570 | + | then (kE + kI) | |
2571 | + | else kE), StringEntry(kH, makeString([toString((parseIntValue(W[h]) + kw)), toString((parseIntValue(W[i]) + kx)), toString((parseIntValue(W[j]) + ky)), toString((parseIntValue(W[k]) + kz)), toString((parseIntValue(W[l]) + kA))], "_")), jp], 0) | |
2517 | 2572 | } | |
2518 | 2573 | } | |
2519 | 2574 | } | |
2520 | 2575 | ||
2521 | 2576 | ||
2522 | 2577 | ||
2523 | - | @Callable( | |
2524 | - | func splitByGlobalWeightsREADONLY ( | |
2525 | - | ||
2526 | - | ||
2527 | - | ||
2528 | - | @Callable( | |
2529 | - | func splitByGlobalAndLocalWeightsREADONLY ( | |
2530 | - | let | |
2531 | - | $Tuple2(nil, $Tuple2( | |
2532 | - | } | |
2533 | - | ||
2534 | - | ||
2535 | - | ||
2536 | - | @Callable( | |
2537 | - | func getBackpackREADONLY (r) = $Tuple2(nil, makeString( | |
2538 | - | ||
2539 | - | ||
2540 | - | ||
2541 | - | @Callable( | |
2542 | - | func getWarehouseREADONLY ( | |
2543 | - | let | |
2544 | - | let | |
2545 | - | let | |
2546 | - | $Tuple2(nil, makeString_2C( | |
2547 | - | } | |
2548 | - | ||
2549 | - | ||
2550 | - | ||
2551 | - | @Callable( | |
2578 | + | @Callable(eP) | |
2579 | + | func splitByGlobalWeightsREADONLY (gx) = $Tuple2(nil, dw(gx)) | |
2580 | + | ||
2581 | + | ||
2582 | + | ||
2583 | + | @Callable(eP) | |
2584 | + | func splitByGlobalAndLocalWeightsREADONLY (kJ,kK,eS) = { | |
2585 | + | let eL = eR(eS) | |
2586 | + | $Tuple2(nil, $Tuple2(dw(kJ), dh(kK, eL))) | |
2587 | + | } | |
2588 | + | ||
2589 | + | ||
2590 | + | ||
2591 | + | @Callable(eP) | |
2592 | + | func getBackpackREADONLY (r) = $Tuple2(nil, makeString(fS(aZ(r)), ":")) | |
2593 | + | ||
2594 | + | ||
2595 | + | ||
2596 | + | @Callable(eP) | |
2597 | + | func getWarehouseREADONLY (aQ) = { | |
2598 | + | let hP = value(assetInfo(fromBase58String(aQ))) | |
2599 | + | let gj = (cu(split(hP.description, "_")[ch]) / bG) | |
2600 | + | let gk = valueOrElse(getInteger(aJ(aQ)), 0) | |
2601 | + | $Tuple2(nil, makeString_2C(gh(aP(aQ), gj, gk), ":")) | |
2602 | + | } | |
2603 | + | ||
2604 | + | ||
2605 | + | ||
2606 | + | @Callable(eP) | |
2552 | 2607 | func saveLastTx () = { | |
2553 | - | let | |
2554 | - | if (if (if (( | |
2555 | - | then ( | |
2608 | + | let gX = eP.caller | |
2609 | + | if (if (if ((gX != ce)) | |
2610 | + | then (gX != cc) | |
2556 | 2611 | else false) | |
2557 | - | then ( | |
2612 | + | then (gX != cf) | |
2558 | 2613 | else false) | |
2559 | 2614 | then throw("Access denied") | |
2560 | - | else $Tuple2([ | |
2561 | - | } | |
2562 | - | ||
2563 | - | ||
2564 | - | ||
2565 | - | @Callable( | |
2566 | - | func updateDuckStats (r, | |
2615 | + | else $Tuple2([jm(eP)], 42) | |
2616 | + | } | |
2617 | + | ||
2618 | + | ||
2619 | + | ||
2620 | + | @Callable(eP) | |
2621 | + | func updateDuckStats (r,iu) = if ((eP.caller != cc)) | |
2567 | 2622 | then throw("Access denied") | |
2568 | - | else | |
2569 | - | ||
2570 | - | ||
2571 | - | ||
2572 | - | @Callable( | |
2573 | - | func updateAccStats (b, | |
2623 | + | else it(r, iu) | |
2624 | + | ||
2625 | + | ||
2626 | + | ||
2627 | + | @Callable(eP) | |
2628 | + | func updateAccStats (b,iu) = if ((eP.caller != cc)) | |
2574 | 2629 | then throw("Access denied") | |
2575 | - | else | |
2576 | - | ||
2577 | - | ||
2578 | - | ||
2579 | - | @Callable( | |
2580 | - | func equipDuck ( | |
2581 | - | let | |
2582 | - | if ((size( | |
2630 | + | else iz(b, iu) | |
2631 | + | ||
2632 | + | ||
2633 | + | ||
2634 | + | @Callable(eP) | |
2635 | + | func equipDuck (kL) = { | |
2636 | + | let jp = jm(eP) | |
2637 | + | if ((size(eP.payments) != 0)) | |
2583 | 2638 | then throw("No payments required") | |
2584 | 2639 | else { | |
2585 | - | let b = toString(eA.originCaller) | |
2586 | - | let r = valueOrErrorMessage(getString(aW(b)), "You don't have a duck staked") | |
2587 | - | let hk = w(r) | |
2588 | - | let ku = split(valueOrElse(getString(hk), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
2589 | - | let fE = aX(r) | |
2590 | - | let gm = fD(fE) | |
2591 | - | let hm = split(kt, "_") | |
2592 | - | if ((size(hm) != m)) | |
2593 | - | then throw("Wrong equipment string") | |
2640 | + | let b = toString(eP.originCaller) | |
2641 | + | let r = valueOrErrorMessage(getString(aY(b)), "You don't have a duck staked") | |
2642 | + | if (ji(r)) | |
2643 | + | then throw("checkTournament") | |
2594 | 2644 | else { | |
2595 | - | let dP = S(this, r) | |
2596 | - | let kv = en(ku, dE(gm[aB]), true, dP) | |
2597 | - | let kw = en(hm, kv, false, dP) | |
2598 | - | let kx = dJ(kw) | |
2599 | - | $Tuple2([StringEntry(hk, kt), StringEntry(fE, makeString_2C([gm[ay], gm[az], gm[aA], kx], ":")), iW], 0) | |
2645 | + | let hz = w(r) | |
2646 | + | let kM = split(valueOrElse(getString(hz), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
2647 | + | let fT = aZ(r) | |
2648 | + | let gB = fS(fT) | |
2649 | + | let hB = split(kL, "_") | |
2650 | + | if ((size(hB) != m)) | |
2651 | + | then throw("Wrong equipment string") | |
2652 | + | else { | |
2653 | + | let ee = U(this, r) | |
2654 | + | let kN = eC(kM, dT(gB[aD]), true, ee) | |
2655 | + | let kO = eC(hB, kN, false, ee) | |
2656 | + | let kP = dY(kO) | |
2657 | + | $Tuple2([StringEntry(hz, kL), StringEntry(fT, makeString_2C([gB[aA], gB[aB], gB[aC], kP], ":")), jp], 0) | |
2658 | + | } | |
2600 | 2659 | } | |
2601 | 2660 | } | |
2602 | 2661 | } | |
2662 | + | ||
2663 | + | ||
2664 | + | ||
2665 | + | @Callable(eP) | |
2666 | + | func initDuckTourAttempt (r) = if ((eP.caller != cf)) | |
2667 | + | then throw("Access denied") | |
2668 | + | else { | |
2669 | + | let jp = jm(eP) | |
2670 | + | let hq = q(r) | |
2671 | + | let hr = O(valueOrElse(getInteger(u(r)), 0)) | |
2672 | + | let jB = valueOrElse(getInteger(hq), hr) | |
2673 | + | let kQ = ba(r) | |
2674 | + | let hM = valueOrElse(getString(kQ), ag) | |
2675 | + | let jj = valueOrElse(getInteger(cf, bf), 0) | |
2676 | + | let kR = (toString(jj) + "_T_0") | |
2677 | + | $Tuple2([jp, IntegerEntry(A(r), jB), IntegerEntry(hq, 100), StringEntry(B(r), hM), StringEntry(kQ, kR)], kR) | |
2678 | + | } | |
2679 | + | ||
2680 | + | ||
2681 | + | ||
2682 | + | @Callable(eP) | |
2683 | + | func exitTournaments () = { | |
2684 | + | let jp = jm(eP) | |
2685 | + | let r = valueOrErrorMessage(getString(aY(toString(eP.caller))), "You don't have a duck staked") | |
2686 | + | let kQ = ba(r) | |
2687 | + | let hM = valueOrElse(getString(kQ), ag) | |
2688 | + | if ((split(hM, "_")[bs] != "T")) | |
2689 | + | then throw("Your duck is not in the tournament") | |
2690 | + | else { | |
2691 | + | let kS = getIntegerValue(A(r)) | |
2692 | + | let kT = getStringValue(B(r)) | |
2693 | + | $Tuple2([jp, IntegerEntry(q(r), kS), StringEntry(kQ, kT)], hM) | |
2694 | + | } | |
2695 | + | } | |
2696 | + | ||
2697 | + | ||
2698 | + | ||
2699 | + | @Callable(eP) | |
2700 | + | func exitTournamentInternal (r) = if ((eP.caller != this)) | |
2701 | + | then throw("Access denied") | |
2702 | + | else { | |
2703 | + | let kS = getIntegerValue(A(r)) | |
2704 | + | let kT = getStringValue(B(r)) | |
2705 | + | $Tuple2([IntegerEntry(q(r), kS), StringEntry(ba(r), kT)], 0) | |
2706 | + | } | |
2603 | 2707 | ||
2604 | 2708 |
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 = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"] | |
16 | 16 | ||
17 | 17 | let h = 0 | |
18 | 18 | ||
19 | 19 | let i = 1 | |
20 | 20 | ||
21 | 21 | let j = 2 | |
22 | 22 | ||
23 | 23 | let k = 3 | |
24 | 24 | ||
25 | 25 | let l = 4 | |
26 | 26 | ||
27 | 27 | let m = 6 | |
28 | 28 | ||
29 | 29 | let n = 2 | |
30 | 30 | ||
31 | 31 | let o = 2 | |
32 | 32 | ||
33 | 33 | let p = 30 | |
34 | 34 | ||
35 | 35 | func q (r) = ("duckHealth_" + r) | |
36 | 36 | ||
37 | 37 | ||
38 | 38 | func s (r) = ("duckChars_" + r) | |
39 | 39 | ||
40 | 40 | ||
41 | 41 | func t (r) = ("duckXP_" + r) | |
42 | 42 | ||
43 | 43 | ||
44 | 44 | func u (r) = ("duckLevel_" + r) | |
45 | 45 | ||
46 | 46 | ||
47 | 47 | func v (r) = ("duckFreePoints_" + r) | |
48 | 48 | ||
49 | 49 | ||
50 | 50 | func w (r) = ("duckEquipment_" + r) | |
51 | 51 | ||
52 | 52 | ||
53 | 53 | func x (b) = ("userXP_" + b) | |
54 | 54 | ||
55 | 55 | ||
56 | 56 | func y (b) = ("userLevel_" + b) | |
57 | 57 | ||
58 | 58 | ||
59 | 59 | func z (b) = ("userFreePoints_" + b) | |
60 | 60 | ||
61 | 61 | ||
62 | - | let A = 10000 | |
63 | - | ||
64 | - | let B = 10000 | |
65 | - | ||
66 | - | let C = 2000 | |
67 | - | ||
68 | - | let D = 100000 | |
69 | - | ||
70 | - | let E = 1000000 | |
71 | - | ||
72 | - | let F = 5000000 | |
73 | - | ||
74 | - | let G = 10000 | |
75 | - | ||
76 | - | let H = 1000000 | |
77 | - | ||
78 | - | let I = 1000000 | |
79 | - | ||
80 | - | let J = 10000 | |
81 | - | ||
82 | - | func K (L) = fraction(d, pow(L, 4, e, 4, 4, DOWN), c) | |
83 | - | ||
84 | - | ||
85 | - | func M (N) = (100 + N) | |
86 | - | ||
87 | - | ||
88 | - | func O (P,Q) = { | |
89 | - | let R = K(Q) | |
90 | - | [R, (f * (R - P))] | |
91 | - | } | |
92 | - | ||
93 | - | ||
94 | - | func S (T,r) = { | |
95 | - | let U = split(valueOrElse(getString(T, s(r)), "0_0_0_0_0"), "_") | |
96 | - | let V = valueOrElse(getInteger(T, u(r)), 0) | |
97 | - | let W = valueOrElse(getInteger(T, q(r)), M(V)) | |
98 | - | [parseIntValue(U[h]), parseIntValue(U[i]), parseIntValue(U[j]), parseIntValue(U[k]), parseIntValue(U[l]), V, W] | |
99 | - | } | |
100 | - | ||
101 | - | ||
102 | - | let X = "LAND" | |
103 | - | ||
104 | - | let Y = "DUCK" | |
105 | - | ||
106 | - | let Z = "PRESALE" | |
107 | - | ||
108 | - | let aa = 6 | |
109 | - | ||
110 | - | let ab = 3456000 | |
111 | - | ||
112 | - | let ac = 86400000 | |
113 | - | ||
114 | - | let ad = 10000000000 | |
115 | - | ||
116 | - | let ae = "Africa_F_Africa" | |
117 | - | ||
118 | - | let af = 39637 | |
119 | - | ||
120 | - | let ag = 10 | |
121 | - | ||
122 | - | let ah = ["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"] | |
123 | - | ||
124 | - | let ai = ["Americas", "Europe", "Asia", "Africa", "Oceania"] | |
125 | - | ||
126 | - | let aj = 10000000 | |
127 | - | ||
128 | - | let ak = ["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_", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_", "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_"] | |
129 | - | ||
130 | - | let al = 6 | |
131 | - | ||
132 | - | let am = 9 | |
133 | - | ||
134 | - | let an = 10 | |
135 | - | ||
136 | - | let ao = 10 | |
137 | - | ||
138 | - | let ap = 0 | |
139 | - | ||
140 | - | let aq = 1 | |
141 | - | ||
142 | - | let ar = 2 | |
143 | - | ||
144 | - | let as = 3 | |
145 | - | ||
146 | - | let at = 4 | |
147 | - | ||
148 | - | let au = 0 | |
149 | - | ||
150 | - | let av = 1 | |
151 | - | ||
152 | - | let aw = 2 | |
153 | - | ||
154 | - | let ax = 3 | |
155 | - | ||
156 | - | let ay = 0 | |
157 | - | ||
158 | - | let az = 1 | |
159 | - | ||
160 | - | let aA = 2 | |
161 | - | ||
162 | - | let aB = 3 | |
163 | - | ||
164 | - | func aC (b) = ("lastTxIdByUser_" + b) | |
165 | - | ||
166 | - | ||
167 | - | func aD (aE) = ("nftOwner_" + aE) | |
168 | - | ||
169 | - | ||
170 | - | func aF (aE) = ("landCustomNameByAssetId_" + aE) | |
171 | - | ||
172 | - | ||
173 | - | func aG (aE) = ("stakedTime_" + aE) | |
174 | - | ||
175 | - | ||
176 | - | func aH (aE) = ("infraLevel_" + aE) | |
177 | - | ||
178 | - | ||
179 | - | func aI (aJ,aE) = makeString(["landArtStatus", aJ, aE], "_") | |
180 | - | ||
181 | - | ||
182 | - | func aK (aL,aE,aM) = ((((("stakedTimeByTypeAssetIdAndOwner_" + aL) + "_") + aE) + "_") + aM) | |
183 | - | ||
184 | - | ||
185 | - | func aN (aO) = ("wareHouse_" + aO) | |
186 | - | ||
187 | - | ||
188 | - | func aP (aE) = ("duckCustomNameByAssetId_" + aE) | |
189 | - | ||
190 | - | ||
191 | - | func aQ (b) = ("accountCustomNameByAddr_" + b) | |
192 | - | ||
193 | - | ||
194 | - | func aR (b) = ("accRefBy_" + b) | |
195 | - | ||
196 | - | ||
197 | - | func aS (r) = ("onboardArtActivatedOnDuck_" + r) | |
198 | - | ||
199 | - | ||
200 | - | func aT (b) = ("onboardArtActivatedDuckBy_" + b) | |
201 | - | ||
202 | - | ||
203 | - | func aU (b) = ("accReferrals_" + b) | |
204 | - | ||
205 | - | ||
206 | - | func aV (aE) = ("duckOwner_" + aE) | |
207 | - | ||
208 | - | ||
209 | - | func aW (aM) = ("stakedDuckByOwner_" + aM) | |
210 | - | ||
211 | - | ||
212 | - | func aX (r) = ("backPack_" + r) | |
213 | - | ||
214 | - | ||
215 | - | func aY (r) = ("duckLocation_" + r) | |
216 | - | ||
217 | - | ||
218 | - | func aZ () = "contractsBlocked" | |
219 | - | ||
220 | - | ||
221 | - | func ba (bb) = ("%s%s__userGwlReleaseTime__" + bb) | |
222 | - | ||
223 | - | ||
224 | - | func bc () = "emergencyWarehouseProducts" | |
225 | - | ||
226 | - | ||
227 | - | let bd = 1 | |
228 | - | ||
229 | - | let be = 2 | |
230 | - | ||
231 | - | func bf (bg) = (parseIntValue(bg[al]) * aj) | |
232 | - | ||
233 | - | ||
234 | - | let bh = false | |
235 | - | ||
236 | - | let bi = take(drop(this.bytes, 1), 1) | |
237 | - | ||
238 | - | let bj = { | |
239 | - | let bk = bi | |
240 | - | if ((base58'2W' == bk)) | |
62 | + | func A (r) = ("savedHealth_" + r) | |
63 | + | ||
64 | + | ||
65 | + | func B (r) = ("savedLocation_" + r) | |
66 | + | ||
67 | + | ||
68 | + | let C = 10000 | |
69 | + | ||
70 | + | let D = 10000 | |
71 | + | ||
72 | + | let E = 2000 | |
73 | + | ||
74 | + | let F = 100000 | |
75 | + | ||
76 | + | let G = 1000000 | |
77 | + | ||
78 | + | let H = 5000000 | |
79 | + | ||
80 | + | let I = 10000 | |
81 | + | ||
82 | + | let J = 1000000 | |
83 | + | ||
84 | + | let K = 1000000 | |
85 | + | ||
86 | + | let L = 10000 | |
87 | + | ||
88 | + | func M (N) = fraction(d, pow(N, 4, e, 4, 4, DOWN), c) | |
89 | + | ||
90 | + | ||
91 | + | func O (P) = (100 + P) | |
92 | + | ||
93 | + | ||
94 | + | func Q (R,S) = { | |
95 | + | let T = M(S) | |
96 | + | [T, (f * (T - R))] | |
97 | + | } | |
98 | + | ||
99 | + | ||
100 | + | func U (V,r) = { | |
101 | + | let W = split(valueOrElse(getString(V, s(r)), "0_0_0_0_0"), "_") | |
102 | + | let X = valueOrElse(getInteger(V, u(r)), 0) | |
103 | + | let Y = valueOrElse(getInteger(V, q(r)), O(X)) | |
104 | + | [parseIntValue(W[h]), parseIntValue(W[i]), parseIntValue(W[j]), parseIntValue(W[k]), parseIntValue(W[l]), X, Y] | |
105 | + | } | |
106 | + | ||
107 | + | ||
108 | + | let Z = "LAND" | |
109 | + | ||
110 | + | let aa = "DUCK" | |
111 | + | ||
112 | + | let ab = "PRESALE" | |
113 | + | ||
114 | + | let ac = 6 | |
115 | + | ||
116 | + | let ad = 3456000 | |
117 | + | ||
118 | + | let ae = 86400000 | |
119 | + | ||
120 | + | let af = 10000000000 | |
121 | + | ||
122 | + | let ag = "Africa_F_Africa" | |
123 | + | ||
124 | + | let ah = 39637 | |
125 | + | ||
126 | + | let ai = 10 | |
127 | + | ||
128 | + | let aj = ["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"] | |
129 | + | ||
130 | + | let ak = ["Americas", "Europe", "Asia", "Africa", "Oceania"] | |
131 | + | ||
132 | + | let al = 10000000 | |
133 | + | ||
134 | + | let am = ["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_", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_", "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_"] | |
135 | + | ||
136 | + | let an = 6 | |
137 | + | ||
138 | + | let ao = 9 | |
139 | + | ||
140 | + | let ap = 10 | |
141 | + | ||
142 | + | let aq = 10 | |
143 | + | ||
144 | + | let ar = 0 | |
145 | + | ||
146 | + | let as = 1 | |
147 | + | ||
148 | + | let at = 2 | |
149 | + | ||
150 | + | let au = 3 | |
151 | + | ||
152 | + | let av = 4 | |
153 | + | ||
154 | + | let aw = 0 | |
155 | + | ||
156 | + | let ax = 1 | |
157 | + | ||
158 | + | let ay = 2 | |
159 | + | ||
160 | + | let az = 3 | |
161 | + | ||
162 | + | let aA = 0 | |
163 | + | ||
164 | + | let aB = 1 | |
165 | + | ||
166 | + | let aC = 2 | |
167 | + | ||
168 | + | let aD = 3 | |
169 | + | ||
170 | + | func aE (b) = ("lastTxIdByUser_" + b) | |
171 | + | ||
172 | + | ||
173 | + | func aF (aG) = ("nftOwner_" + aG) | |
174 | + | ||
175 | + | ||
176 | + | func aH (aG) = ("landCustomNameByAssetId_" + aG) | |
177 | + | ||
178 | + | ||
179 | + | func aI (aG) = ("stakedTime_" + aG) | |
180 | + | ||
181 | + | ||
182 | + | func aJ (aG) = ("infraLevel_" + aG) | |
183 | + | ||
184 | + | ||
185 | + | func aK (aL,aG) = makeString(["landArtStatus", aL, aG], "_") | |
186 | + | ||
187 | + | ||
188 | + | func aM (aN,aG,aO) = ((((("stakedTimeByTypeAssetIdAndOwner_" + aN) + "_") + aG) + "_") + aO) | |
189 | + | ||
190 | + | ||
191 | + | func aP (aQ) = ("wareHouse_" + aQ) | |
192 | + | ||
193 | + | ||
194 | + | func aR (aG) = ("duckCustomNameByAssetId_" + aG) | |
195 | + | ||
196 | + | ||
197 | + | func aS (b) = ("accountCustomNameByAddr_" + b) | |
198 | + | ||
199 | + | ||
200 | + | func aT (b) = ("accRefBy_" + b) | |
201 | + | ||
202 | + | ||
203 | + | func aU (r) = ("onboardArtActivatedOnDuck_" + r) | |
204 | + | ||
205 | + | ||
206 | + | func aV (b) = ("onboardArtActivatedDuckBy_" + b) | |
207 | + | ||
208 | + | ||
209 | + | func aW (b) = ("accReferrals_" + b) | |
210 | + | ||
211 | + | ||
212 | + | func aX (aG) = ("duckOwner_" + aG) | |
213 | + | ||
214 | + | ||
215 | + | func aY (aO) = ("stakedDuckByOwner_" + aO) | |
216 | + | ||
217 | + | ||
218 | + | func aZ (r) = ("backPack_" + r) | |
219 | + | ||
220 | + | ||
221 | + | func ba (r) = ("duckLocation_" + r) | |
222 | + | ||
223 | + | ||
224 | + | func bb () = "contractsBlocked" | |
225 | + | ||
226 | + | ||
227 | + | func bc (bd) = ("%s%s__userGwlReleaseTime__" + bd) | |
228 | + | ||
229 | + | ||
230 | + | func be () = "emergencyWarehouseProducts" | |
231 | + | ||
232 | + | ||
233 | + | let bf = "%s__lastTourId" | |
234 | + | ||
235 | + | func bg (bh) = ("%s%d__tourStaticData__" + toString(bh)) | |
236 | + | ||
237 | + | ||
238 | + | func bi (bh) = ("%s%d__tourDynamicData__" + toString(bh)) | |
239 | + | ||
240 | + | ||
241 | + | let bj = 0 | |
242 | + | ||
243 | + | let bk = 1 | |
244 | + | ||
245 | + | func bl (bm,bh) = { | |
246 | + | let bn = split(valueOrErrorMessage(getString(bm, bg(bh)), (("Error reading tournament " + toString(bh)) + " data")), "__") | |
247 | + | let bo = split(valueOrErrorMessage(getString(bm, bi(bh)), (("Error reading tournament " + toString(bh)) + " data")), "__") | |
248 | + | [bn, bo] | |
249 | + | } | |
250 | + | ||
251 | + | ||
252 | + | let bp = 6 | |
253 | + | ||
254 | + | let bq = 1 | |
255 | + | ||
256 | + | let br = 0 | |
257 | + | ||
258 | + | let bs = 1 | |
259 | + | ||
260 | + | let bt = 2 | |
261 | + | ||
262 | + | func bu (bv) = (parseIntValue(bv[an]) * al) | |
263 | + | ||
264 | + | ||
265 | + | let bw = false | |
266 | + | ||
267 | + | let bx = take(drop(this.bytes, 1), 1) | |
268 | + | ||
269 | + | let by = { | |
270 | + | let bz = bx | |
271 | + | if ((base58'2W' == bz)) | |
241 | 272 | then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
242 | - | else if ((base58'2T' == | |
273 | + | else if ((base58'2T' == bz)) | |
243 | 274 | then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63' | |
244 | 275 | else throw("Unknown chain") | |
245 | 276 | } | |
246 | 277 | ||
247 | - | let | |
248 | - | let | |
249 | - | if ((base58'2W' == | |
278 | + | let bA = { | |
279 | + | let bz = bx | |
280 | + | if ((base58'2W' == bz)) | |
250 | 281 | then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv" | |
251 | - | else if ((base58'2T' == | |
282 | + | else if ((base58'2T' == bz)) | |
252 | 283 | then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy" | |
253 | 284 | else throw("Unknown chain") | |
254 | 285 | } | |
255 | 286 | ||
256 | - | let | |
257 | - | let | |
258 | - | if ((base58'2W' == | |
287 | + | let bB = { | |
288 | + | let bz = bx | |
289 | + | if ((base58'2W' == bz)) | |
259 | 290 | then 10000000000 | |
260 | - | else if ((base58'2T' == | |
291 | + | else if ((base58'2T' == bz)) | |
261 | 292 | then 100000000 | |
262 | 293 | else throw("Unknown chain") | |
263 | 294 | } | |
264 | 295 | ||
265 | - | let | |
266 | - | let | |
267 | - | if ((base58'2W' == | |
296 | + | let bC = { | |
297 | + | let bz = bx | |
298 | + | if ((base58'2W' == bz)) | |
268 | 299 | then 600000 | |
269 | - | else if ((base58'2T' == | |
300 | + | else if ((base58'2T' == bz)) | |
270 | 301 | then 60000 | |
271 | 302 | else throw("Unknown chain") | |
272 | 303 | } | |
273 | 304 | ||
274 | - | let | |
275 | - | ||
276 | - | let | |
277 | - | ||
278 | - | let | |
279 | - | ||
280 | - | let | |
281 | - | ||
282 | - | let | |
283 | - | ||
284 | - | let | |
285 | - | ||
286 | - | let | |
287 | - | ||
288 | - | let | |
289 | - | ||
290 | - | let | |
291 | - | ||
292 | - | func | |
293 | - | ||
294 | - | ||
295 | - | let | |
296 | - | ||
297 | - | let | |
298 | - | ||
299 | - | let | |
300 | - | ||
301 | - | let | |
302 | - | ||
303 | - | let | |
304 | - | ||
305 | - | func | |
306 | - | ||
307 | - | ||
308 | - | func | |
309 | - | ||
310 | - | ||
311 | - | func | |
312 | - | ||
313 | - | ||
314 | - | func | |
315 | - | ||
316 | - | ||
317 | - | let | |
318 | - | ||
319 | - | let | |
320 | - | ||
321 | - | let | |
322 | - | ||
323 | - | let | |
324 | - | ||
325 | - | let | |
326 | - | ||
327 | - | let | |
328 | - | ||
329 | - | let | |
330 | - | ||
331 | - | let | |
332 | - | ||
333 | - | let | |
334 | - | ||
335 | - | let | |
336 | - | ||
337 | - | let | |
338 | - | ||
339 | - | let | |
340 | - | ||
341 | - | func | |
342 | - | ||
343 | - | ||
344 | - | func | |
345 | - | ||
346 | - | ||
347 | - | func | |
348 | - | ||
349 | - | ||
350 | - | func | |
351 | - | ||
352 | - | ||
353 | - | func | |
354 | - | let | |
355 | - | if ($isInstanceOf( | |
305 | + | let bD = "__" | |
306 | + | ||
307 | + | let bE = 1000000 | |
308 | + | ||
309 | + | let bF = 100000000 | |
310 | + | ||
311 | + | let bG = 25 | |
312 | + | ||
313 | + | let bH = 100 | |
314 | + | ||
315 | + | let bI = 225 | |
316 | + | ||
317 | + | let bJ = 400 | |
318 | + | ||
319 | + | let bK = 625 | |
320 | + | ||
321 | + | let bL = [0, 1, 2, 3, 4, 5] | |
322 | + | ||
323 | + | func bM (bN,bO) = valueOrErrorMessage(getString(bN, bO), makeString(["mandatory ", toString(bN), ".", bO, " is not defined"], "")) | |
324 | + | ||
325 | + | ||
326 | + | let bP = 1 | |
327 | + | ||
328 | + | let bQ = 2 | |
329 | + | ||
330 | + | let bR = 3 | |
331 | + | ||
332 | + | let bS = 4 | |
333 | + | ||
334 | + | let bT = 7 | |
335 | + | ||
336 | + | func bU () = "%s__restConfig" | |
337 | + | ||
338 | + | ||
339 | + | func bV () = "%s__restAddr" | |
340 | + | ||
341 | + | ||
342 | + | func bW (bX) = split_4C(bM(bX, bU()), bD) | |
343 | + | ||
344 | + | ||
345 | + | func bY (bZ,ca) = valueOrErrorMessage(addressFromString(bZ[ca]), ("Rest cfg doesn't contain address at index " + toString(ca))) | |
346 | + | ||
347 | + | ||
348 | + | let cb = addressFromStringValue(valueOrElse(getString(this, bV()), bA)) | |
349 | + | ||
350 | + | let bZ = bW(cb) | |
351 | + | ||
352 | + | let V = bY(bZ, bP) | |
353 | + | ||
354 | + | let cc = bY(bZ, bQ) | |
355 | + | ||
356 | + | let cd = bY(bZ, bR) | |
357 | + | ||
358 | + | let ce = bY(bZ, bS) | |
359 | + | ||
360 | + | let cf = bY(bZ, bT) | |
361 | + | ||
362 | + | let cg = 0 | |
363 | + | ||
364 | + | let ch = 1 | |
365 | + | ||
366 | + | let ci = 2 | |
367 | + | ||
368 | + | let cj = 3 | |
369 | + | ||
370 | + | let ck = 2 | |
371 | + | ||
372 | + | func cl (bN) = ("finishBlockForAddr_" + bN) | |
373 | + | ||
374 | + | ||
375 | + | func cm () = "resTypesProportions" | |
376 | + | ||
377 | + | ||
378 | + | func cn (aO) = ("stakedLandsByOwner_" + aO) | |
379 | + | ||
380 | + | ||
381 | + | func co (aO) = ("stakedPiecesByOwner_" + aO) | |
382 | + | ||
383 | + | ||
384 | + | func cp (cq) = { | |
385 | + | let bz = cq | |
386 | + | if ($isInstanceOf(bz, "String")) | |
356 | 387 | then { | |
357 | - | let | |
358 | - | | |
388 | + | let cr = bz | |
389 | + | cr | |
359 | 390 | } | |
360 | 391 | else throw("fail to cast into String") | |
361 | 392 | } | |
362 | 393 | ||
363 | 394 | ||
364 | - | func | |
365 | - | let | |
366 | - | if ($isInstanceOf( | |
395 | + | func cs (cq) = { | |
396 | + | let bz = cq | |
397 | + | if ($isInstanceOf(bz, "Int")) | |
367 | 398 | then { | |
368 | - | let | |
369 | - | | |
399 | + | let ct = bz | |
400 | + | ct | |
370 | 401 | } | |
371 | 402 | else throw("fail to cast into Int") | |
372 | 403 | } | |
373 | 404 | ||
374 | 405 | ||
375 | - | func | |
376 | - | let | |
377 | - | if (("S" == | |
378 | - | then | |
379 | - | else if (("M" == | |
380 | - | then | |
381 | - | else if (("L" == | |
382 | - | then | |
383 | - | else if (("XL" == | |
384 | - | then | |
385 | - | else if (("XXL" == | |
386 | - | then | |
406 | + | func cu (cv) = { | |
407 | + | let bz = cv | |
408 | + | if (("S" == bz)) | |
409 | + | then bG | |
410 | + | else if (("M" == bz)) | |
411 | + | then bH | |
412 | + | else if (("L" == bz)) | |
413 | + | then bI | |
414 | + | else if (("XL" == bz)) | |
415 | + | then bJ | |
416 | + | else if (("XXL" == bz)) | |
417 | + | then bK | |
387 | 418 | else throw("Unknown land size") | |
388 | 419 | } | |
389 | 420 | ||
390 | 421 | ||
391 | - | func | |
392 | - | ||
393 | - | ||
394 | - | let | |
395 | - | let | |
396 | - | if ((base58'2W' == | |
422 | + | func cw (cr) = isDefined(parseInt(cr)) | |
423 | + | ||
424 | + | ||
425 | + | let cx = { | |
426 | + | let bz = bx | |
427 | + | if ((base58'2W' == bz)) | |
397 | 428 | then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv") | |
398 | - | else if ((base58'2T' == | |
429 | + | else if ((base58'2T' == bz)) | |
399 | 430 | then this | |
400 | 431 | else throw("Unknown chain") | |
401 | 432 | } | |
402 | 433 | ||
403 | - | let | |
404 | - | let | |
405 | - | if ((base58'2W' == | |
434 | + | let cy = { | |
435 | + | let bz = bx | |
436 | + | if ((base58'2W' == bz)) | |
406 | 437 | then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb") | |
407 | - | else if ((base58'2T' == | |
438 | + | else if ((base58'2T' == bz)) | |
408 | 439 | then this | |
409 | 440 | else throw("Unknown chain") | |
410 | 441 | } | |
411 | 442 | ||
412 | - | let | |
413 | - | ||
414 | - | let | |
415 | - | ||
416 | - | let | |
417 | - | ||
418 | - | let | |
419 | - | ||
420 | - | let | |
421 | - | ||
422 | - | let | |
423 | - | ||
424 | - | let | |
425 | - | let | |
426 | - | if ((base58'2W' == | |
443 | + | let cz = base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
444 | + | ||
445 | + | let cA = [30, 60, 120] | |
446 | + | ||
447 | + | let cB = 300000 | |
448 | + | ||
449 | + | let cC = 5000000 | |
450 | + | ||
451 | + | let cD = 50 | |
452 | + | ||
453 | + | let cE = 10000000 | |
454 | + | ||
455 | + | let cF = { | |
456 | + | let bz = bx | |
457 | + | if ((base58'2W' == bz)) | |
427 | 458 | then 252289527462 | |
428 | - | else if ((base58'2T' == | |
459 | + | else if ((base58'2T' == bz)) | |
429 | 460 | then 2522895274 | |
430 | 461 | else throw("Unknown chain") | |
431 | 462 | } | |
432 | 463 | ||
433 | - | let | |
434 | - | let | |
435 | - | if ((base58'2W' == | |
464 | + | let cG = { | |
465 | + | let bz = bx | |
466 | + | if ((base58'2W' == bz)) | |
436 | 467 | then 250000000 | |
437 | - | else if ((base58'2T' == | |
468 | + | else if ((base58'2T' == bz)) | |
438 | 469 | then 250000000 | |
439 | 470 | else throw("Unknown chain") | |
440 | 471 | } | |
441 | 472 | ||
442 | - | let | |
443 | - | ||
444 | - | let | |
445 | - | ||
446 | - | let | |
447 | - | ||
448 | - | let | |
449 | - | ||
450 | - | let | |
451 | - | ||
452 | - | let | |
453 | - | ||
454 | - | let | |
455 | - | ||
456 | - | func | |
457 | - | ||
458 | - | ||
459 | - | func | |
460 | - | ||
461 | - | ||
462 | - | func | |
463 | - | ||
464 | - | ||
465 | - | func | |
466 | - | ||
467 | - | ||
468 | - | func | |
469 | - | ||
470 | - | ||
471 | - | func | |
472 | - | ||
473 | - | ||
474 | - | func | |
475 | - | ||
476 | - | ||
477 | - | func | |
478 | - | ||
479 | - | ||
480 | - | func | |
481 | - | ||
482 | - | ||
483 | - | let | |
484 | - | ||
485 | - | let | |
486 | - | ||
487 | - | let | |
488 | - | ||
489 | - | let | |
490 | - | ||
491 | - | let | |
492 | - | ||
493 | - | let | |
494 | - | ||
495 | - | let | |
496 | - | ||
497 | - | func | |
498 | - | ||
499 | - | ||
500 | - | func | |
501 | - | let | |
502 | - | if ((0 >= | |
473 | + | let cH = toBigInt(5) | |
474 | + | ||
475 | + | let cI = toBigInt(20) | |
476 | + | ||
477 | + | let cJ = toBigInt((20 * 20)) | |
478 | + | ||
479 | + | let cK = toBigInt(((20 * 20) * 20)) | |
480 | + | ||
481 | + | let cL = toBigInt((((20 * 20) * 20) * 20)) | |
482 | + | ||
483 | + | let cM = toBigInt(((((20 * 20) * 20) * 20) * 20)) | |
484 | + | ||
485 | + | let cN = 500 | |
486 | + | ||
487 | + | func cO () = "nextLandNum" | |
488 | + | ||
489 | + | ||
490 | + | func cP (cQ) = ("landToAsset_" + cQ) | |
491 | + | ||
492 | + | ||
493 | + | func cR (cS) = ("landByCustomName_" + cS) | |
494 | + | ||
495 | + | ||
496 | + | func cT (aG,aO) = ((("infraLevelByAssetIdAndOwner_" + aG) + "_") + aO) | |
497 | + | ||
498 | + | ||
499 | + | func cU (aL,aG,aO) = makeString(["landArtStatusByTypeAssetIdAndOwner", aL, aG, aO], "_") | |
500 | + | ||
501 | + | ||
502 | + | func cV (cQ) = ("landOwner_" + cQ) | |
503 | + | ||
504 | + | ||
505 | + | func cW (cS) = ("duckByCustomName_" + cS) | |
506 | + | ||
507 | + | ||
508 | + | func cX (cS) = ("accountByCustomName_" + cS) | |
509 | + | ||
510 | + | ||
511 | + | func cY () = "oldiesList" | |
512 | + | ||
513 | + | ||
514 | + | let cZ = 0 | |
515 | + | ||
516 | + | let da = 1 | |
517 | + | ||
518 | + | let db = 2 | |
519 | + | ||
520 | + | let dc = 0 | |
521 | + | ||
522 | + | let dd = 5 | |
523 | + | ||
524 | + | let de = 6 | |
525 | + | ||
526 | + | let df = 7 | |
527 | + | ||
528 | + | func dg (cQ,cv) = ((Z + cQ) + cv) | |
529 | + | ||
530 | + | ||
531 | + | func dh (di,dj) = { | |
532 | + | let dk = (((((dj[0] + dj[1]) + dj[2]) + dj[3]) + dj[4]) + dj[5]) | |
533 | + | if ((0 >= dk)) | |
503 | 534 | then throw("Zero weights sum") | |
504 | 535 | else { | |
505 | - | let | |
506 | - | func | |
507 | - | ||
508 | - | let | |
509 | - | let | |
510 | - | let | |
511 | - | func | |
512 | - | then | |
513 | - | else | |
514 | - | ||
515 | - | func | |
516 | - | then | |
536 | + | let dl = fraction(di, bE, dk) | |
537 | + | func dm (dn,do) = (dn :+ fraction(do, dl, bE)) | |
538 | + | ||
539 | + | let dp = dj | |
540 | + | let dq = size(dp) | |
541 | + | let dr = nil | |
542 | + | func ds (dt,du) = if ((du >= dq)) | |
543 | + | then dt | |
544 | + | else dm(dt, dp[du]) | |
545 | + | ||
546 | + | func dv (dt,du) = if ((du >= dq)) | |
547 | + | then dt | |
517 | 548 | else throw("List size exceeds 6") | |
518 | 549 | ||
519 | - | | |
520 | - | } | |
521 | - | } | |
522 | - | ||
523 | - | ||
524 | - | func | |
525 | - | let | |
526 | - | if ((size( | |
550 | + | dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6) | |
551 | + | } | |
552 | + | } | |
553 | + | ||
554 | + | ||
555 | + | func dw (di) = { | |
556 | + | let dx = split(value(getString(cm())), "_") | |
557 | + | if ((size(dx) != ac)) | |
527 | 558 | then throw("Wrong proportions data") | |
528 | 559 | else { | |
529 | - | let | |
530 | - | | |
531 | - | } | |
532 | - | } | |
533 | - | ||
534 | - | ||
535 | - | func | |
536 | - | let | |
537 | - | func | |
538 | - | let | |
539 | - | if ((0 > | |
540 | - | then throw(((((("Not enough material idx=" + toString( | |
541 | - | else ( | |
542 | - | } | |
543 | - | ||
544 | - | if ( | |
560 | + | let dy = [parseIntValue(dx[0]), parseIntValue(dx[1]), parseIntValue(dx[2]), parseIntValue(dx[3]), parseIntValue(dx[4]), parseIntValue(dx[5])] | |
561 | + | dh(di, dy) | |
562 | + | } | |
563 | + | } | |
564 | + | ||
565 | + | ||
566 | + | func dz (dA,dB,dC) = { | |
567 | + | let dD = dw(dC) | |
568 | + | func dE (dn,ca) = { | |
569 | + | let dF = (parseIntValue(dB[ca]) - dD[ca]) | |
570 | + | if ((0 > dF)) | |
571 | + | then throw(((((("Not enough material idx=" + toString(ca)) + ", you have ") + dB[ca]) + ", but need ") + toString(dD[ca]))) | |
572 | + | else (dn :+ toString(dF)) | |
573 | + | } | |
574 | + | ||
575 | + | if (dA) | |
545 | 576 | then { | |
546 | - | let | |
547 | - | let | |
548 | - | let | |
549 | - | func | |
550 | - | then | |
551 | - | else | |
552 | - | ||
553 | - | func | |
554 | - | then | |
577 | + | let dp = bL | |
578 | + | let dq = size(dp) | |
579 | + | let dr = nil | |
580 | + | func ds (dt,du) = if ((du >= dq)) | |
581 | + | then dt | |
582 | + | else dE(dt, dp[du]) | |
583 | + | ||
584 | + | func dv (dt,du) = if ((du >= dq)) | |
585 | + | then dt | |
555 | 586 | else throw("List size exceeds 6") | |
556 | 587 | ||
557 | - | | |
558 | - | } | |
559 | - | else | |
560 | - | } | |
561 | - | ||
562 | - | ||
563 | - | func | |
564 | - | then | |
588 | + | dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6) | |
589 | + | } | |
590 | + | else dB | |
591 | + | } | |
592 | + | ||
593 | + | ||
594 | + | func dG (dH,dI) = if ((dI == "")) | |
595 | + | then dH | |
565 | 596 | else { | |
566 | - | func | |
567 | - | let | |
568 | - | if ((size( | |
597 | + | func dJ (dn,dK) = { | |
598 | + | let dL = split(dK, ",") | |
599 | + | if ((size(dL) != 2)) | |
569 | 600 | then throw("Incorrect format, should be index,amount") | |
570 | 601 | else { | |
571 | - | let | |
572 | - | if (if ((0 > | |
602 | + | let ca = parseIntValue(dL[0]) | |
603 | + | if (if ((0 > ca)) | |
573 | 604 | then true | |
574 | - | else ( | |
605 | + | else (ca >= size(am))) | |
575 | 606 | then throw("Unknown product idx") | |
576 | 607 | else { | |
577 | - | let | |
578 | - | let | |
579 | - | if ((size( | |
580 | - | then throw((("You don't have " + | |
608 | + | let dM = parseIntValue(dL[1]) | |
609 | + | let dN = split(dn, (dL[0] + ":")) | |
610 | + | if ((size(dN) != 2)) | |
611 | + | then throw((("You don't have " + aj[ca]) + " equipped")) | |
581 | 612 | else { | |
582 | - | let | |
583 | - | let | |
613 | + | let dO = dN[1] | |
614 | + | let dP = if (cw(take(drop(dO, 1), 1))) | |
584 | 615 | then 2 | |
585 | 616 | else 1 | |
586 | - | let | |
587 | - | let | |
588 | - | let | |
589 | - | then ( | |
590 | - | else throw(((((("You equipped " + toString( | |
591 | - | (((( | |
617 | + | let dQ = parseIntValue(take(dO, dP)) | |
618 | + | let dR = drop(dO, dP) | |
619 | + | let dS = if ((dQ >= dM)) | |
620 | + | then (dQ - dM) | |
621 | + | else throw(((((("You equipped " + toString(dQ)) + " of ") + aj[ca]) + ", but tried to use ") + toString(dM))) | |
622 | + | ((((dN[0] + dL[0]) + ":") + toString(dS)) + dR) | |
592 | 623 | } | |
593 | 624 | } | |
594 | 625 | } | |
595 | 626 | } | |
596 | 627 | ||
597 | - | let | |
598 | - | let | |
599 | - | let | |
600 | - | func | |
601 | - | then | |
602 | - | else | |
603 | - | ||
604 | - | func | |
605 | - | then | |
628 | + | let dp = split(dI, "_") | |
629 | + | let dq = size(dp) | |
630 | + | let dr = dH | |
631 | + | func ds (dt,du) = if ((du >= dq)) | |
632 | + | then dt | |
633 | + | else dJ(dt, dp[du]) | |
634 | + | ||
635 | + | func dv (dt,du) = if ((du >= dq)) | |
636 | + | then dt | |
606 | 637 | else throw("List size exceeds 10") | |
607 | 638 | ||
608 | - | | |
609 | - | } | |
610 | - | ||
611 | - | ||
612 | - | func | |
613 | - | let | |
639 | + | dv(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
640 | + | } | |
641 | + | ||
642 | + | ||
643 | + | func dT (dU) = { | |
644 | + | let dV = if ((dU == "")) | |
614 | 645 | then nil | |
615 | - | else split( | |
616 | - | func | |
617 | - | let | |
618 | - | let | |
619 | - | then parseIntValue( | |
646 | + | else split(dU, "_") | |
647 | + | func dW (dn,bv) = { | |
648 | + | let dX = (size(dn) / 8) | |
649 | + | let dQ = if ((size(dV) > dX)) | |
650 | + | then parseIntValue(dV[dX]) | |
620 | 651 | else 0 | |
621 | - | ( | |
622 | - | } | |
623 | - | ||
624 | - | let | |
625 | - | let | |
626 | - | let | |
627 | - | func | |
628 | - | then | |
629 | - | else | |
630 | - | ||
631 | - | func | |
632 | - | then | |
652 | + | (dn + toBytes(dQ)) | |
653 | + | } | |
654 | + | ||
655 | + | let dp = am | |
656 | + | let dq = size(dp) | |
657 | + | let dr = base58'' | |
658 | + | func ds (dt,du) = if ((du >= dq)) | |
659 | + | then dt | |
660 | + | else dW(dt, dp[du]) | |
661 | + | ||
662 | + | func dv (dt,du) = if ((du >= dq)) | |
663 | + | then dt | |
633 | 664 | else throw("List size exceeds 50") | |
634 | 665 | ||
635 | - | | |
636 | - | } | |
637 | - | ||
638 | - | ||
639 | - | func | |
640 | - | func | |
641 | - | let | |
642 | - | let | |
643 | - | ( | |
666 | + | dv(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(dr, 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) | |
667 | + | } | |
668 | + | ||
669 | + | ||
670 | + | func dY (dZ) = { | |
671 | + | func ea (dn,bv) = { | |
672 | + | let dX = size(dn) | |
673 | + | let eb = take(drop(dZ, (8 * dX)), 8) | |
674 | + | (dn :+ toString(toInt(eb))) | |
644 | 675 | } | |
645 | 676 | ||
646 | 677 | makeString({ | |
647 | - | let | |
648 | - | let | |
649 | - | let | |
650 | - | func | |
651 | - | then | |
652 | - | else | |
653 | - | ||
654 | - | func | |
655 | - | then | |
678 | + | let dp = am | |
679 | + | let dq = size(dp) | |
680 | + | let dr = nil | |
681 | + | func ds (dt,du) = if ((du >= dq)) | |
682 | + | then dt | |
683 | + | else ea(dt, dp[du]) | |
684 | + | ||
685 | + | func dv (dt,du) = if ((du >= dq)) | |
686 | + | then dt | |
656 | 687 | else throw("List size exceeds 50") | |
657 | 688 | ||
658 | - | | |
689 | + | dv(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(dr, 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) | |
659 | 690 | }, "_") | |
660 | 691 | } | |
661 | 692 | ||
662 | 693 | ||
663 | - | func | |
664 | - | func | |
665 | - | then throw(("Requirement not satisfied: " + g[ | |
694 | + | func ec (ed,ee) = { | |
695 | + | func ef (dn,dX) = if ((parseIntValue(ee[dX]) > ed[dX])) | |
696 | + | then throw(("Requirement not satisfied: " + g[dX])) | |
666 | 697 | else true | |
667 | 698 | ||
668 | - | let | |
669 | - | let | |
670 | - | let | |
671 | - | func | |
672 | - | then | |
673 | - | else | |
674 | - | ||
675 | - | func | |
676 | - | then | |
699 | + | let dp = [0, 1, 2, 3, 4, 5, 6] | |
700 | + | let dq = size(dp) | |
701 | + | let dr = false | |
702 | + | func ds (dt,du) = if ((du >= dq)) | |
703 | + | then dt | |
704 | + | else ef(dt, dp[du]) | |
705 | + | ||
706 | + | func dv (dt,du) = if ((du >= dq)) | |
707 | + | then dt | |
677 | 708 | else throw("List size exceeds 7") | |
678 | 709 | ||
679 | - | | |
680 | - | } | |
681 | - | ||
682 | - | ||
683 | - | func | |
684 | - | let | |
685 | - | if ((size( | |
710 | + | dv(ds(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6), 7) | |
711 | + | } | |
712 | + | ||
713 | + | ||
714 | + | func eg (eh,dV,ei,ej,ek,el,ed) = { | |
715 | + | let dL = split(eh, ":") | |
716 | + | if ((size(dL) != 2)) | |
686 | 717 | then throw("Incorrect format, should be index:amount") | |
687 | - | else if (if (!( | |
688 | - | then (size( | |
718 | + | else if (if (!(ei)) | |
719 | + | then (size(dL[0]) != 2) | |
689 | 720 | else false) | |
690 | 721 | then throw("Product idx should be 2 digits, zero padded") | |
691 | 722 | else { | |
692 | - | let | |
693 | - | let | |
694 | - | if (if ((0 > | |
723 | + | let em = parseIntValue(dL[0]) | |
724 | + | let en = parseIntValue(dL[1]) | |
725 | + | if (if ((0 > em)) | |
695 | 726 | then true | |
696 | - | else ( | |
727 | + | else (em >= size(am))) | |
697 | 728 | then throw("Unknown product idx") | |
698 | - | else if ((0 > | |
729 | + | else if ((0 > en)) | |
699 | 730 | then throw("Count can't be negative") | |
700 | - | else if (( | |
701 | - | then throw(((("Can't put more than " + toString(p)) + " of ") + | |
702 | - | else if (( | |
703 | - | then $Tuple2( | |
731 | + | else if ((en > p)) | |
732 | + | then throw(((("Can't put more than " + toString(p)) + " of ") + aj[em])) | |
733 | + | else if ((en == 0)) | |
734 | + | then $Tuple2(dV, false) | |
704 | 735 | else { | |
705 | - | let | |
706 | - | let | |
707 | - | let | |
708 | - | let | |
709 | - | if (if (!( | |
710 | - | then ( | |
736 | + | let eo = take(dV, (8 * em)) | |
737 | + | let dQ = toInt(take(drop(dV, (8 * em)), 8)) | |
738 | + | let dR = drop(dV, (8 * (em + 1))) | |
739 | + | let bv = split(am[em], "_") | |
740 | + | if (if (!(ei)) | |
741 | + | then (en > dQ) | |
711 | 742 | else false) | |
712 | - | then throw(((((("You have " + toString( | |
743 | + | then throw(((((("You have " + toString(dQ)) + " of ") + aj[em]) + ", but tried to use ") + toString(en))) | |
713 | 744 | else { | |
714 | - | let | |
715 | - | then | |
745 | + | let ep = if (if (!(ei)) | |
746 | + | then ec(ed, split(bv[ao], ",")) | |
716 | 747 | else false) | |
717 | 748 | then { | |
718 | - | let | |
719 | - | if (( | |
749 | + | let eq = bv[ap] | |
750 | + | if ((eq == "")) | |
720 | 751 | then throw("Item cannot be equipped") | |
721 | 752 | else { | |
722 | - | let | |
723 | - | let | |
724 | - | if (( | |
753 | + | let er = parseIntValue(eq) | |
754 | + | let es = (er / 100) | |
755 | + | if ((ej != es)) | |
725 | 756 | then throw("Segment incompatible") | |
726 | 757 | else { | |
727 | - | let | |
728 | - | if (( | |
758 | + | let et = ((er % 100) / 10) | |
759 | + | if ((ek != et)) | |
729 | 760 | then throw("Slot incompatible") | |
730 | 761 | else { | |
731 | - | let | |
732 | - | if (if (( | |
733 | - | then ( | |
762 | + | let eu = (er % 10) | |
763 | + | if (if ((el != 0)) | |
764 | + | then (eu > 1) | |
734 | 765 | else false) | |
735 | 766 | then throw("Big items should occupy slot 0") | |
736 | - | else ( | |
767 | + | else (eu > 1) | |
737 | 768 | } | |
738 | 769 | } | |
739 | 770 | } | |
740 | 771 | } | |
741 | 772 | else false | |
742 | - | $Tuple2((( | |
743 | - | then | |
744 | - | else -( | |
773 | + | $Tuple2(((eo + toBytes((dQ + (if (ei) | |
774 | + | then en | |
775 | + | else -(en))))) + dR), ep) | |
745 | 776 | } | |
746 | 777 | } | |
747 | 778 | } | |
748 | 779 | } | |
749 | 780 | ||
750 | 781 | ||
751 | - | func | |
782 | + | func ev (ew,ex,ei,ej,ek,ee) = if ((ew != "")) | |
752 | 783 | then { | |
753 | - | let | |
754 | - | if ((size( | |
784 | + | let ey = split(ew, ",") | |
785 | + | if ((size(ey) > o)) | |
755 | 786 | then throw("Wrong slots format") | |
756 | 787 | else { | |
757 | - | let | |
758 | - | let | |
759 | - | then | |
788 | + | let ez = ey[0] | |
789 | + | let eA = if ((size(ey) > 1)) | |
790 | + | then ey[1] | |
760 | 791 | else "" | |
761 | - | if (if (( | |
762 | - | then ( | |
792 | + | if (if ((ez == "")) | |
793 | + | then (eA == "") | |
763 | 794 | else false) | |
764 | - | then | |
795 | + | then ex | |
765 | 796 | else { | |
766 | - | let | |
767 | - | then | |
768 | - | else $Tuple2( | |
769 | - | if (( | |
770 | - | then if ( | |
797 | + | let eB = if ((ez != "")) | |
798 | + | then eg(ez, ex, ei, ej, ek, 0, ee) | |
799 | + | else $Tuple2(ex, false) | |
800 | + | if ((eA != "")) | |
801 | + | then if (eB._2) | |
771 | 802 | then throw("Big item already occupies slot") | |
772 | - | else | |
773 | - | else | |
803 | + | else eg(eA, eB._1, ei, ej, ek, 1, ee)._1 | |
804 | + | else eB._1 | |
774 | 805 | } | |
775 | 806 | } | |
776 | 807 | } | |
777 | - | else | |
778 | - | ||
779 | - | ||
780 | - | func | |
781 | - | func | |
782 | - | let | |
783 | - | let | |
784 | - | if ((size( | |
808 | + | else ex | |
809 | + | ||
810 | + | ||
811 | + | func eC (eD,eE,ei,ee) = { | |
812 | + | func ej (dn,eF) = { | |
813 | + | let dX = dn._1 | |
814 | + | let ek = split(eF, ";") | |
815 | + | if ((size(ek) != n)) | |
785 | 816 | then throw("Wrong segment format") | |
786 | 817 | else { | |
787 | - | let | |
788 | - | let | |
789 | - | if (if (( | |
790 | - | then ( | |
818 | + | let eG = ek[0] | |
819 | + | let eH = ek[1] | |
820 | + | if (if ((eG == "")) | |
821 | + | then (eH == "") | |
791 | 822 | else false) | |
792 | - | then $Tuple2(( | |
823 | + | then $Tuple2((dX + 1), dn._2) | |
793 | 824 | else { | |
794 | - | let | |
795 | - | $Tuple2(( | |
825 | + | let eI = ev(eG, dn._2, ei, dX, 0, ee) | |
826 | + | $Tuple2((dX + 1), ev(eH, eI, ei, dX, 1, ee)) | |
796 | 827 | } | |
797 | 828 | } | |
798 | 829 | } | |
799 | 830 | ||
800 | - | ( let | |
801 | - | let | |
802 | - | let | |
803 | - | func | |
804 | - | then | |
805 | - | else | |
806 | - | ||
807 | - | func | |
808 | - | then | |
831 | + | ( let dp = eD | |
832 | + | let dq = size(dp) | |
833 | + | let dr = $Tuple2(0, eE) | |
834 | + | func ds (dt,du) = if ((du >= dq)) | |
835 | + | then dt | |
836 | + | else ej(dt, dp[du]) | |
837 | + | ||
838 | + | func dv (dt,du) = if ((du >= dq)) | |
839 | + | then dt | |
809 | 840 | else throw("List size exceeds 6") | |
810 | 841 | ||
811 | - | | |
812 | - | } | |
813 | - | ||
814 | - | ||
815 | - | func | |
842 | + | dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6))._2 | |
843 | + | } | |
844 | + | ||
845 | + | ||
846 | + | func eJ (eK,eL,eM,eN) = if ((size(eK) != ac)) | |
816 | 847 | then throw("Wrong proportions data") | |
817 | 848 | else { | |
818 | - | func | |
819 | - | let | |
820 | - | if ((0 > | |
821 | - | then throw(((((((("Panic! Pieces of type=" + toString( | |
822 | - | else ( | |
823 | - | } | |
824 | - | ||
825 | - | let | |
826 | - | let | |
827 | - | let | |
828 | - | func | |
829 | - | then | |
830 | - | else | |
831 | - | ||
832 | - | func | |
833 | - | then | |
849 | + | func eO (dn,eP) = { | |
850 | + | let dF = (parseIntValue(eK[eP]) + ((eN * eL[eP]) * eM)) | |
851 | + | if ((0 > dF)) | |
852 | + | then throw(((((((("Panic! Pieces of type=" + toString(eP)) + ", sign=") + toString(eN)) + ", terrainCounts[i]=") + toString(eL[eP])) + ", landSizeIndex=") + toString(eM))) | |
853 | + | else (dn :+ toString(dF)) | |
854 | + | } | |
855 | + | ||
856 | + | let dp = bL | |
857 | + | let dq = size(dp) | |
858 | + | let dr = nil | |
859 | + | func ds (dt,du) = if ((du >= dq)) | |
860 | + | then dt | |
861 | + | else eO(dt, dp[du]) | |
862 | + | ||
863 | + | func dv (dt,du) = if ((du >= dq)) | |
864 | + | then dt | |
834 | 865 | else throw("List size exceeds 6") | |
835 | 866 | ||
836 | - | | |
837 | - | } | |
838 | - | ||
839 | - | ||
840 | - | func | |
841 | - | let | |
842 | - | makeString( | |
843 | - | } | |
844 | - | ||
845 | - | ||
846 | - | func | |
847 | - | ||
848 | - | ||
849 | - | func | |
850 | - | func | |
851 | - | let | |
852 | - | ( | |
853 | - | } | |
854 | - | ||
855 | - | let | |
856 | - | let | |
857 | - | let | |
858 | - | let | |
859 | - | func | |
860 | - | then | |
861 | - | else | |
862 | - | ||
863 | - | func | |
864 | - | then | |
867 | + | dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6) | |
868 | + | } | |
869 | + | ||
870 | + | ||
871 | + | func eQ (eL,eM,eN) = { | |
872 | + | let eK = split(valueOrElse(getString(cm()), "0_0_0_0_0_0"), "_") | |
873 | + | makeString(eJ(eK, eL, eM, eN), "_") | |
874 | + | } | |
875 | + | ||
876 | + | ||
877 | + | func eR (eS) = [(size(split(eS, "A")) - 1), (size(split(eS, "B")) - 1), (size(split(eS, "C")) - 1), (size(split(eS, "D")) - 1), (size(split(eS, "E")) - 1), (size(split(eS, "F")) - 1)] | |
878 | + | ||
879 | + | ||
880 | + | func eT (eU,eL,eV,eM,eW) = { | |
881 | + | func eX (dn,eP) = { | |
882 | + | let eY = ((fraction(eV, eW, ae) * eL[eP]) * eM) | |
883 | + | (dn :+ toString((parseIntValue(eU[eP]) + eY))) | |
884 | + | } | |
885 | + | ||
886 | + | let dy = { | |
887 | + | let dp = bL | |
888 | + | let dq = size(dp) | |
889 | + | let dr = nil | |
890 | + | func ds (dt,du) = if ((du >= dq)) | |
891 | + | then dt | |
892 | + | else eX(dt, dp[du]) | |
893 | + | ||
894 | + | func dv (dt,du) = if ((du >= dq)) | |
895 | + | then dt | |
865 | 896 | else throw("List size exceeds 6") | |
866 | 897 | ||
867 | - | | |
868 | - | } | |
869 | - | makeString( | |
870 | - | } | |
871 | - | ||
872 | - | ||
873 | - | func | |
874 | - | func | |
875 | - | let | |
876 | - | $Tuple2(( | |
877 | - | } | |
878 | - | ||
879 | - | let | |
880 | - | let | |
881 | - | let | |
882 | - | func | |
883 | - | then | |
884 | - | else | |
885 | - | ||
886 | - | func | |
887 | - | then | |
898 | + | dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6) | |
899 | + | } | |
900 | + | makeString(dy, "_") | |
901 | + | } | |
902 | + | ||
903 | + | ||
904 | + | func eZ (eL,eV,eM,eW) = { | |
905 | + | func eX (dn,eP) = { | |
906 | + | let eY = ((fraction(eV, eW, ae) * eL[eP]) * eM) | |
907 | + | $Tuple2((dn._1 :+ eY), (dn._2 + eY)) | |
908 | + | } | |
909 | + | ||
910 | + | let dp = bL | |
911 | + | let dq = size(dp) | |
912 | + | let dr = $Tuple2(nil, 0) | |
913 | + | func ds (dt,du) = if ((du >= dq)) | |
914 | + | then dt | |
915 | + | else eX(dt, dp[du]) | |
916 | + | ||
917 | + | func dv (dt,du) = if ((du >= dq)) | |
918 | + | then dt | |
888 | 919 | else throw("List size exceeds 6") | |
889 | 920 | ||
890 | - | | |
891 | - | } | |
892 | - | ||
893 | - | ||
894 | - | func | |
895 | - | let | |
896 | - | let | |
897 | - | if (( | |
898 | - | then $Tuple2(makeString( | |
899 | - | else if (( | |
921 | + | dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6) | |
922 | + | } | |
923 | + | ||
924 | + | ||
925 | + | func fa (fb,fc,fd,fe) = { | |
926 | + | let ff = fd._1 | |
927 | + | let fg = fd._2 | |
928 | + | if ((fg == 0)) | |
929 | + | then $Tuple2(makeString(fb, "_"), makeString(fc, "_")) | |
930 | + | else if ((fe >= fg)) | |
900 | 931 | then { | |
901 | - | func | |
902 | - | ||
903 | - | let | |
904 | - | let | |
905 | - | let | |
906 | - | let | |
907 | - | func | |
908 | - | then | |
909 | - | else | |
910 | - | ||
911 | - | func | |
912 | - | then | |
932 | + | func fh (dn,eP) = (dn :+ toString((parseIntValue(fb[eP]) + ff[eP]))) | |
933 | + | ||
934 | + | let dy = { | |
935 | + | let dp = bL | |
936 | + | let dq = size(dp) | |
937 | + | let dr = nil | |
938 | + | func ds (dt,du) = if ((du >= dq)) | |
939 | + | then dt | |
940 | + | else fh(dt, dp[du]) | |
941 | + | ||
942 | + | func dv (dt,du) = if ((du >= dq)) | |
943 | + | then dt | |
913 | 944 | else throw("List size exceeds 6") | |
914 | 945 | ||
915 | - | | |
946 | + | dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6) | |
916 | 947 | } | |
917 | - | $Tuple2(makeString( | |
948 | + | $Tuple2(makeString(dy, "_"), makeString(fc, "_")) | |
918 | 949 | } | |
919 | 950 | else { | |
920 | - | func | |
921 | - | let | |
922 | - | $Tuple2(( | |
951 | + | func fi (dn,eP) = { | |
952 | + | let fj = fraction(ff[eP], fe, fg) | |
953 | + | $Tuple2((dn._1 :+ toString((parseIntValue(fb[eP]) + fj))), (dn._2 :+ toString(((parseIntValue(fc[eP]) + ff[eP]) - fj)))) | |
923 | 954 | } | |
924 | 955 | ||
925 | - | let | |
926 | - | let | |
927 | - | let | |
928 | - | let | |
929 | - | func | |
930 | - | then | |
931 | - | else | |
932 | - | ||
933 | - | func | |
934 | - | then | |
956 | + | let dy = { | |
957 | + | let dp = bL | |
958 | + | let dq = size(dp) | |
959 | + | let dr = $Tuple2(nil, nil) | |
960 | + | func ds (dt,du) = if ((du >= dq)) | |
961 | + | then dt | |
962 | + | else fi(dt, dp[du]) | |
963 | + | ||
964 | + | func dv (dt,du) = if ((du >= dq)) | |
965 | + | then dt | |
935 | 966 | else throw("List size exceeds 6") | |
936 | 967 | ||
937 | - | | |
968 | + | dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6) | |
938 | 969 | } | |
939 | - | $Tuple2(makeString( | |
970 | + | $Tuple2(makeString(dy._1, "_"), makeString(dy._2, "_")) | |
940 | 971 | } | |
941 | 972 | } | |
942 | 973 | ||
943 | 974 | ||
944 | - | func | |
945 | - | then | |
946 | - | else -( | |
947 | - | ||
948 | - | ||
949 | - | let | |
950 | - | ||
951 | - | func | |
952 | - | let | |
953 | - | let | |
975 | + | func fk (fl) = if ((fl >= toBigInt(0))) | |
976 | + | then fl | |
977 | + | else -(fl) | |
978 | + | ||
979 | + | ||
980 | + | let fm = [[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]] | |
981 | + | ||
982 | + | func fn (ct,fo) = { | |
983 | + | let fp = toInt((ct % cI)) | |
984 | + | let fq = if ((fo[0] > fp)) | |
954 | 985 | then "A" | |
955 | - | else if (( | |
986 | + | else if ((fo[1] > fp)) | |
956 | 987 | then "B" | |
957 | - | else if (( | |
988 | + | else if ((fo[2] > fp)) | |
958 | 989 | then "C" | |
959 | - | else if (( | |
990 | + | else if ((fo[3] > fp)) | |
960 | 991 | then "D" | |
961 | - | else if (( | |
992 | + | else if ((fo[4] > fp)) | |
962 | 993 | then "E" | |
963 | 994 | else "F" | |
964 | - | | |
965 | - | } | |
966 | - | ||
967 | - | ||
968 | - | func | |
969 | - | let | |
970 | - | func | |
971 | - | ||
972 | - | let | |
973 | - | let | |
974 | - | let | |
975 | - | let | |
976 | - | func | |
977 | - | then | |
978 | - | else | |
979 | - | ||
980 | - | func | |
981 | - | then | |
995 | + | fq | |
996 | + | } | |
997 | + | ||
998 | + | ||
999 | + | func fr (fs,ft) = { | |
1000 | + | let fu = fm[ft] | |
1001 | + | func fv (dn,do) = $Tuple2((((((dn._1 + fn(dn._2, fu)) + fn((dn._2 / cI), fu)) + fn((dn._2 / cJ), fu)) + fn((dn._2 / cK), fu)) + fn((dn._2 / cL), fu)), (dn._2 / cM)) | |
1002 | + | ||
1003 | + | let fw = { | |
1004 | + | let dp = [1, 2, 3, 4, 5] | |
1005 | + | let dq = size(dp) | |
1006 | + | let dr = $Tuple2("", (fs / cH)) | |
1007 | + | func ds (dt,du) = if ((du >= dq)) | |
1008 | + | then dt | |
1009 | + | else fv(dt, dp[du]) | |
1010 | + | ||
1011 | + | func dv (dt,du) = if ((du >= dq)) | |
1012 | + | then dt | |
982 | 1013 | else throw("List size exceeds 5") | |
983 | 1014 | ||
984 | - | | |
985 | - | } | |
986 | - | | |
987 | - | } | |
988 | - | ||
989 | - | ||
990 | - | let | |
991 | - | ||
992 | - | let | |
993 | - | ||
994 | - | func | |
995 | - | func | |
996 | - | let | |
997 | - | let | |
998 | - | let | |
1015 | + | dv(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5) | |
1016 | + | } | |
1017 | + | fw._1 | |
1018 | + | } | |
1019 | + | ||
1020 | + | ||
1021 | + | let fx = [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] | |
1022 | + | ||
1023 | + | let fy = ["A", "B", "C", "D", "E", "F"] | |
1024 | + | ||
1025 | + | func fz (fA,eM) = { | |
1026 | + | func fB (dn,cr) = { | |
1027 | + | let dX = dn._2 | |
1028 | + | let fC = parseIntValue(cr) | |
1029 | + | let fl = if ((fC == 0)) | |
999 | 1030 | then 0 | |
1000 | - | else if (( | |
1001 | - | then ( | |
1002 | - | else if (( | |
1031 | + | else if ((fC >= (4 * eM))) | |
1032 | + | then (fC / eM) | |
1033 | + | else if ((fC > (3 * eM))) | |
1003 | 1034 | then 3 | |
1004 | - | else ((( | |
1005 | - | $Tuple3(( | |
1006 | - | } | |
1007 | - | ||
1008 | - | let | |
1009 | - | let | |
1010 | - | let | |
1011 | - | let | |
1012 | - | func | |
1013 | - | then | |
1014 | - | else | |
1015 | - | ||
1016 | - | func | |
1017 | - | then | |
1035 | + | else (((fC - 1) / eM) + 1) | |
1036 | + | $Tuple3((dn._1 :+ fl), (dn._2 + 1), (dn._3 + fl)) | |
1037 | + | } | |
1038 | + | ||
1039 | + | let fw = { | |
1040 | + | let dp = fA | |
1041 | + | let dq = size(dp) | |
1042 | + | let dr = $Tuple3(nil, 0, 0) | |
1043 | + | func ds (dt,du) = if ((du >= dq)) | |
1044 | + | then dt | |
1045 | + | else fB(dt, dp[du]) | |
1046 | + | ||
1047 | + | func dv (dt,du) = if ((du >= dq)) | |
1048 | + | then dt | |
1018 | 1049 | else throw("List size exceeds 6") | |
1019 | 1050 | ||
1020 | - | | |
1021 | - | } | |
1022 | - | let | |
1023 | - | let | |
1024 | - | let | |
1025 | - | func | |
1026 | - | let | |
1027 | - | then ( | |
1028 | - | else | |
1029 | - | let | |
1051 | + | dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6) | |
1052 | + | } | |
1053 | + | let fD = fw._1 | |
1054 | + | let fE = value(indexOf(fD, max(fD))) | |
1055 | + | let fF = (fw._3 - 25) | |
1056 | + | func fG (dn,ca) = { | |
1057 | + | let fH = if ((ca == fE)) | |
1058 | + | then (fD[ca] - fF) | |
1059 | + | else fD[ca] | |
1060 | + | let fI = if ((fH == 0)) | |
1030 | 1061 | then nil | |
1031 | - | else split(drop(toString(pow(10, 0, | |
1032 | - | let | |
1033 | - | func | |
1034 | - | ||
1035 | - | let | |
1036 | - | let | |
1037 | - | let | |
1038 | - | let | |
1039 | - | func | |
1040 | - | then | |
1041 | - | else | |
1042 | - | ||
1043 | - | func | |
1044 | - | then | |
1062 | + | else split(drop(toString(pow(10, 0, fH, 0, 0, DOWN)), 1), "") | |
1063 | + | let er = fy[ca] | |
1064 | + | func fJ (fK,fL) = (fK :+ er) | |
1065 | + | ||
1066 | + | let fM = { | |
1067 | + | let dp = fI | |
1068 | + | let dq = size(dp) | |
1069 | + | let dr = nil | |
1070 | + | func fN (dt,du) = if ((du >= dq)) | |
1071 | + | then dt | |
1072 | + | else fJ(dt, dp[du]) | |
1073 | + | ||
1074 | + | func fO (dt,du) = if ((du >= dq)) | |
1075 | + | then dt | |
1045 | 1076 | else throw("List size exceeds 25") | |
1046 | 1077 | ||
1047 | - | | |
1048 | - | } | |
1049 | - | ( | |
1050 | - | } | |
1051 | - | ||
1052 | - | let | |
1053 | - | let | |
1054 | - | let | |
1055 | - | let | |
1056 | - | func | |
1057 | - | then | |
1058 | - | else | |
1059 | - | ||
1060 | - | func | |
1061 | - | then | |
1078 | + | fO(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(fN(dr, 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) | |
1079 | + | } | |
1080 | + | (dn ++ fM) | |
1081 | + | } | |
1082 | + | ||
1083 | + | let dy = { | |
1084 | + | let dp = bL | |
1085 | + | let dq = size(dp) | |
1086 | + | let dr = nil | |
1087 | + | func fN (dt,du) = if ((du >= dq)) | |
1088 | + | then dt | |
1089 | + | else fG(dt, dp[du]) | |
1090 | + | ||
1091 | + | func fO (dt,du) = if ((du >= dq)) | |
1092 | + | then dt | |
1062 | 1093 | else throw("List size exceeds 6") | |
1063 | 1094 | ||
1064 | - | | |
1065 | - | } | |
1066 | - | func | |
1067 | - | ||
1068 | - | let | |
1069 | - | let | |
1070 | - | let | |
1071 | - | func | |
1072 | - | then | |
1073 | - | else | |
1074 | - | ||
1075 | - | func | |
1076 | - | then | |
1095 | + | fO(fN(fN(fN(fN(fN(fN(dr, 0), 1), 2), 3), 4), 5), 6) | |
1096 | + | } | |
1097 | + | func fP (dn,dX) = (dn + dy[dX]) | |
1098 | + | ||
1099 | + | let dp = fx | |
1100 | + | let dq = size(dp) | |
1101 | + | let dr = "" | |
1102 | + | func fQ (dt,du) = if ((du >= dq)) | |
1103 | + | then dt | |
1104 | + | else fP(dt, dp[du]) | |
1105 | + | ||
1106 | + | func fR (dt,du) = if ((du >= dq)) | |
1107 | + | then dt | |
1077 | 1108 | else throw("List size exceeds 25") | |
1078 | 1109 | ||
1079 | - | | |
1080 | - | } | |
1081 | - | ||
1082 | - | ||
1083 | - | func | |
1084 | - | let | |
1085 | - | [toString(valueOrElse(parseInt( | |
1086 | - | then | |
1087 | - | else "0_0_0_0_0_0", if ((size(split( | |
1088 | - | then | |
1089 | - | else "0_0_0_0_0_0", | |
1090 | - | } | |
1091 | - | ||
1092 | - | ||
1093 | - | func | |
1094 | - | let | |
1095 | - | (( | |
1096 | - | } | |
1097 | - | ||
1098 | - | ||
1099 | - | func | |
1100 | - | let | |
1101 | - | func | |
1102 | - | ||
1103 | - | func | |
1104 | - | let | |
1105 | - | let | |
1106 | - | $Tuple2(( | |
1107 | - | } | |
1108 | - | ||
1109 | - | let | |
1110 | - | let | |
1111 | - | let | |
1112 | - | let | |
1113 | - | func | |
1114 | - | then | |
1115 | - | else | |
1116 | - | ||
1117 | - | func | |
1118 | - | then | |
1110 | + | fR(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(dr, 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) | |
1111 | + | } | |
1112 | + | ||
1113 | + | ||
1114 | + | func fS (fT) = { | |
1115 | + | let fU = split(valueOrElse(getString(fT), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":") | |
1116 | + | [toString(valueOrElse(parseInt(fU[aA]), 0)), if ((size(split(fU[aB], "_")) == ac)) | |
1117 | + | then fU[aB] | |
1118 | + | else "0_0_0_0_0_0", if ((size(split(fU[aC], "_")) == ac)) | |
1119 | + | then fU[aC] | |
1120 | + | else "0_0_0_0_0_0", fU[aD]] | |
1121 | + | } | |
1122 | + | ||
1123 | + | ||
1124 | + | func fV (fW) = { | |
1125 | + | let dL = split(fW, "_") | |
1126 | + | ((af * (parseIntValue(dL[1]) + 1)) * parseIntValue(dL[0])) | |
1127 | + | } | |
1128 | + | ||
1129 | + | ||
1130 | + | func fX (fY) = { | |
1131 | + | let fZ = fY[au] | |
1132 | + | func ga (dn,gb) = (dn + parseIntValue(gb)) | |
1133 | + | ||
1134 | + | func gc (dn,gb) = { | |
1135 | + | let ca = dn._1 | |
1136 | + | let gd = (((parseIntValue(gb) + aq) - 1) / aq) | |
1137 | + | $Tuple2((ca + 1), (dn._2 + (gd * bF))) | |
1138 | + | } | |
1139 | + | ||
1140 | + | let ge = { | |
1141 | + | let dp = split(fY[as], "_") | |
1142 | + | let dq = size(dp) | |
1143 | + | let dr = 0 | |
1144 | + | func ds (dt,du) = if ((du >= dq)) | |
1145 | + | then dt | |
1146 | + | else ga(dt, dp[du]) | |
1147 | + | ||
1148 | + | func dv (dt,du) = if ((du >= dq)) | |
1149 | + | then dt | |
1119 | 1150 | else throw("List size exceeds 6") | |
1120 | 1151 | ||
1121 | - | | |
1122 | - | } | |
1123 | - | let | |
1124 | - | let | |
1125 | - | let | |
1126 | - | let | |
1127 | - | func | |
1128 | - | then | |
1129 | - | else | |
1130 | - | ||
1131 | - | func | |
1132 | - | then | |
1152 | + | dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6) | |
1153 | + | } | |
1154 | + | let gf = { | |
1155 | + | let dp = split(fY[at], "_") | |
1156 | + | let dq = size(dp) | |
1157 | + | let dr = 0 | |
1158 | + | func fN (dt,du) = if ((du >= dq)) | |
1159 | + | then dt | |
1160 | + | else ga(dt, dp[du]) | |
1161 | + | ||
1162 | + | func fO (dt,du) = if ((du >= dq)) | |
1163 | + | then dt | |
1133 | 1164 | else throw("List size exceeds 6") | |
1134 | 1165 | ||
1135 | - | | |
1136 | - | } | |
1137 | - | let | |
1166 | + | fO(fN(fN(fN(fN(fN(fN(dr, 0), 1), 2), 3), 4), 5), 6) | |
1167 | + | } | |
1168 | + | let gg = if ((fZ == "")) | |
1138 | 1169 | then 0 | |
1139 | - | else ( let | |
1140 | - | let | |
1141 | - | let | |
1142 | - | func | |
1143 | - | then | |
1144 | - | else | |
1145 | - | ||
1146 | - | func | |
1147 | - | then | |
1170 | + | else ( let dp = split_4C(fZ, "_") | |
1171 | + | let dq = size(dp) | |
1172 | + | let dr = $Tuple2(0, 0) | |
1173 | + | func fQ (dt,du) = if ((du >= dq)) | |
1174 | + | then dt | |
1175 | + | else gc(dt, dp[du]) | |
1176 | + | ||
1177 | + | func fR (dt,du) = if ((du >= dq)) | |
1178 | + | then dt | |
1148 | 1179 | else throw("List size exceeds 50") | |
1149 | 1180 | ||
1150 | - | | |
1151 | - | (( | |
1152 | - | } | |
1153 | - | ||
1154 | - | ||
1155 | - | func | |
1156 | - | let | |
1157 | - | let | |
1158 | - | let | |
1159 | - | let | |
1160 | - | let | |
1161 | - | let | |
1162 | - | then makeString(["0", toString( | |
1181 | + | fR(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(dr, 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 | |
1182 | + | ((ge + gf) + gg) | |
1183 | + | } | |
1184 | + | ||
1185 | + | ||
1186 | + | func gh (gi,gj,gk) = { | |
1187 | + | let fW = ((toString(gj) + "_") + toString(gk)) | |
1188 | + | let gl = fV(fW) | |
1189 | + | let gm = valueOrElse(getString(gi), (fW + ":0_0_0_0_0_0:0_0_0_0_0_0::0")) | |
1190 | + | let gn = split_4C(gm, ":") | |
1191 | + | let go = fX(gn) | |
1192 | + | let gp = if ((5 > size(gn))) | |
1193 | + | then makeString(["0", toString(go), toString((gl - go)), toString(gl)], "_") | |
1163 | 1194 | else { | |
1164 | - | let | |
1165 | - | let | |
1166 | - | let | |
1167 | - | then parseIntValue( | |
1168 | - | else | |
1169 | - | makeString([toString( | |
1170 | - | } | |
1171 | - | [ | |
1172 | - | then | |
1173 | - | else "0_0_0_0_0_0", if ((size(split( | |
1174 | - | then | |
1175 | - | else "0_0_0_0_0_0", | |
1176 | - | } | |
1177 | - | ||
1178 | - | ||
1179 | - | func | |
1180 | - | let | |
1181 | - | let | |
1182 | - | (( | |
1183 | - | } | |
1184 | - | ||
1185 | - | ||
1186 | - | func | |
1187 | - | let | |
1188 | - | then ((( | |
1189 | - | else -((((-( | |
1190 | - | ( | |
1191 | - | } | |
1192 | - | ||
1193 | - | ||
1194 | - | func | |
1195 | + | let gq = split(gn[av], "_") | |
1196 | + | let gr = parseIntValue(gq[aw]) | |
1197 | + | let gs = if ((size(gq) > 1)) | |
1198 | + | then parseIntValue(gq[ax]) | |
1199 | + | else go | |
1200 | + | makeString([toString(gr), toString(gs), toString(((gl - gr) - gs)), toString(gl)], "_") | |
1201 | + | } | |
1202 | + | [gn[ar], if ((size(split(gn[as], "_")) == ac)) | |
1203 | + | then gn[as] | |
1204 | + | else "0_0_0_0_0_0", if ((size(split(gn[at], "_")) == ac)) | |
1205 | + | then gn[at] | |
1206 | + | else "0_0_0_0_0_0", gn[au], gp] | |
1207 | + | } | |
1208 | + | ||
1209 | + | ||
1210 | + | func gt (fY) = { | |
1211 | + | let gu = fX(fY) | |
1212 | + | let gv = parseIntValue(split(fY[av], "_")[aw]) | |
1213 | + | ((fV(fY[ar]) - gu) - gv) | |
1214 | + | } | |
1215 | + | ||
1216 | + | ||
1217 | + | func gw (gx,gy) = { | |
1218 | + | let gd = if ((gx >= 0)) | |
1219 | + | then (((gx + gy) - 1) / gy) | |
1220 | + | else -((((-(gx) + gy) - 1) / gy)) | |
1221 | + | (gd * bF) | |
1222 | + | } | |
1223 | + | ||
1224 | + | ||
1225 | + | func gz (gA,fY,gB) = if ((size(gA) != 3)) | |
1195 | 1226 | then throw("cargoListStr should contain exactly 2 ':' separators") | |
1196 | 1227 | else { | |
1197 | - | let | |
1198 | - | let | |
1199 | - | let | |
1228 | + | let gC = split(gA[0], "_") | |
1229 | + | let gD = split(gA[1], "_") | |
1230 | + | let gE = if ((gA[2] == "")) | |
1200 | 1231 | then nil | |
1201 | - | else split( | |
1202 | - | if ((size( | |
1232 | + | else split(gA[2], "_") | |
1233 | + | if ((size(gC) != ac)) | |
1203 | 1234 | then throw("All 6 resources should be passed") | |
1204 | - | else if ((size( | |
1235 | + | else if ((size(gD) != ac)) | |
1205 | 1236 | then throw("All 6 materials should be passed") | |
1206 | 1237 | else { | |
1207 | - | let | |
1208 | - | let | |
1209 | - | let | |
1210 | - | let | |
1238 | + | let fe = gt(fY) | |
1239 | + | let gF = split(fY[as], "_") | |
1240 | + | let gG = split(fY[at], "_") | |
1241 | + | let gH = if ((fY[au] == "")) | |
1211 | 1242 | then nil | |
1212 | - | else split( | |
1213 | - | let | |
1214 | - | let | |
1215 | - | let | |
1243 | + | else split(fY[au], "_") | |
1244 | + | let fc = split(gB[aB], "_") | |
1245 | + | let gI = split(gB[aC], "_") | |
1246 | + | let gJ = if ((gB[aD] == "")) | |
1216 | 1247 | then nil | |
1217 | - | else split( | |
1218 | - | func | |
1219 | - | let | |
1220 | - | let | |
1221 | - | let | |
1222 | - | let | |
1223 | - | if (( | |
1224 | - | then $Tuple4(( | |
1225 | - | else if (( | |
1226 | - | then if (( | |
1227 | - | then throw((((("Attempt to take " + | |
1228 | - | else $Tuple4(( | |
1229 | - | else if ((-( | |
1230 | - | then throw((((("Attempt to take " + toString(-( | |
1231 | - | else $Tuple4(( | |
1248 | + | else split(gB[aD], "_") | |
1249 | + | func gK (dn,gb) = { | |
1250 | + | let eP = dn._1 | |
1251 | + | let gL = parseIntValue(gb) | |
1252 | + | let gM = parseIntValue(gF[eP]) | |
1253 | + | let gN = parseIntValue(fc[eP]) | |
1254 | + | if ((gL == 0)) | |
1255 | + | then $Tuple4((eP + 1), (dn._2 :+ gF[eP]), (dn._3 :+ fc[eP]), dn._4) | |
1256 | + | else if ((gL > 0)) | |
1257 | + | then if ((gL > gN)) | |
1258 | + | then throw((((("Attempt to take " + gb) + " from backpack, but only ") + toString(gN)) + " available")) | |
1259 | + | else $Tuple4((eP + 1), (dn._2 :+ toString((gM + gL))), (dn._3 :+ toString((gN - gL))), (dn._4 + gL)) | |
1260 | + | else if ((-(gL) > gM)) | |
1261 | + | then throw((((("Attempt to take " + toString(-(gL))) + " from warehouse, but only ") + toString(gM)) + " available")) | |
1262 | + | else $Tuple4((eP + 1), (dn._2 :+ toString((gM + gL))), (dn._3 :+ toString((gN - gL))), (dn._4 + gL)) | |
1232 | 1263 | } | |
1233 | 1264 | ||
1234 | - | let | |
1235 | - | let | |
1236 | - | let | |
1237 | - | let | |
1238 | - | func | |
1239 | - | then | |
1240 | - | else | |
1241 | - | ||
1242 | - | func | |
1243 | - | then | |
1265 | + | let dy = { | |
1266 | + | let dp = gC | |
1267 | + | let dq = size(dp) | |
1268 | + | let dr = $Tuple4(0, nil, nil, 0) | |
1269 | + | func ds (dt,du) = if ((du >= dq)) | |
1270 | + | then dt | |
1271 | + | else gK(dt, dp[du]) | |
1272 | + | ||
1273 | + | func dv (dt,du) = if ((du >= dq)) | |
1274 | + | then dt | |
1244 | 1275 | else throw("List size exceeds 6") | |
1245 | 1276 | ||
1246 | - | | |
1277 | + | dv(ds(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5), 6) | |
1247 | 1278 | } | |
1248 | - | func | |
1249 | - | let | |
1250 | - | let | |
1251 | - | let | |
1252 | - | let | |
1253 | - | if (( | |
1254 | - | then $Tuple4(( | |
1255 | - | else if (( | |
1256 | - | then if (( | |
1257 | - | then throw((((("Attempt to take " + | |
1258 | - | else $Tuple4(( | |
1259 | - | else if ((-( | |
1260 | - | then throw((((("Attempt to take " + toString(-( | |
1261 | - | else $Tuple4(( | |
1279 | + | func gO (dn,gb) = { | |
1280 | + | let eP = dn._1 | |
1281 | + | let gL = parseIntValue(gb) | |
1282 | + | let gP = parseIntValue(gG[eP]) | |
1283 | + | let gQ = parseIntValue(gI[eP]) | |
1284 | + | if ((gL == 0)) | |
1285 | + | then $Tuple4((eP + 1), (dn._2 :+ gG[eP]), (dn._3 :+ gI[eP]), dn._4) | |
1286 | + | else if ((gL > 0)) | |
1287 | + | then if ((gL > gQ)) | |
1288 | + | then throw((((("Attempt to take " + gb) + " from backpack, but only ") + toString(gQ)) + " available")) | |
1289 | + | else $Tuple4((eP + 1), (dn._2 :+ toString((gP + gL))), (dn._3 :+ toString((gQ - gL))), (dn._4 + gL)) | |
1290 | + | else if ((-(gL) > gP)) | |
1291 | + | then throw((((("Attempt to take " + toString(-(gL))) + " from warehouse, but only ") + toString(gP)) + " available")) | |
1292 | + | else $Tuple4((eP + 1), (dn._2 :+ toString((gP + gL))), (dn._3 :+ toString((gQ - gL))), (dn._4 + gL)) | |
1262 | 1293 | } | |
1263 | 1294 | ||
1264 | - | let | |
1265 | - | let | |
1266 | - | let | |
1267 | - | let | |
1268 | - | func | |
1269 | - | then | |
1270 | - | else | |
1271 | - | ||
1272 | - | func | |
1273 | - | then | |
1295 | + | let eG = { | |
1296 | + | let dp = gD | |
1297 | + | let dq = size(dp) | |
1298 | + | let dr = $Tuple4(0, nil, nil, dy._4) | |
1299 | + | func fN (dt,du) = if ((du >= dq)) | |
1300 | + | then dt | |
1301 | + | else gO(dt, dp[du]) | |
1302 | + | ||
1303 | + | func fO (dt,du) = if ((du >= dq)) | |
1304 | + | then dt | |
1274 | 1305 | else throw("List size exceeds 6") | |
1275 | 1306 | ||
1276 | - | | |
1307 | + | fO(fN(fN(fN(fN(fN(fN(dr, 0), 1), 2), 3), 4), 5), 6) | |
1277 | 1308 | } | |
1278 | - | func | |
1279 | - | let | |
1280 | - | let | |
1281 | - | let | |
1282 | - | then parseIntValue( | |
1309 | + | func gR (dn,gb) = { | |
1310 | + | let eP = dn._1 | |
1311 | + | let gL = parseIntValue(gb) | |
1312 | + | let gS = if ((size(gH) > eP)) | |
1313 | + | then parseIntValue(gH[eP]) | |
1283 | 1314 | else 0 | |
1284 | - | let | |
1285 | - | then parseIntValue( | |
1315 | + | let gT = if ((size(gJ) > eP)) | |
1316 | + | then parseIntValue(gJ[eP]) | |
1286 | 1317 | else 0 | |
1287 | - | if (( | |
1288 | - | then $Tuple4(( | |
1289 | - | else if (( | |
1290 | - | then if (( | |
1291 | - | then throw((((("Attempt to take " + | |
1318 | + | if ((gL == 0)) | |
1319 | + | then $Tuple4((eP + 1), (dn._2 :+ toString(gS)), (dn._3 :+ toString(gT)), dn._4) | |
1320 | + | else if ((gL > 0)) | |
1321 | + | then if ((gL > gT)) | |
1322 | + | then throw((((("Attempt to take " + gb) + " from backpack, but only ") + toString(gT)) + " available")) | |
1292 | 1323 | else { | |
1293 | - | let | |
1294 | - | $Tuple4(( | |
1324 | + | let gU = (gw((gS + gL), aq) - gw(gS, aq)) | |
1325 | + | $Tuple4((eP + 1), (dn._2 :+ toString((gS + gL))), (dn._3 :+ toString((gT - gL))), (dn._4 + gU)) | |
1295 | 1326 | } | |
1296 | - | else if ((-( | |
1297 | - | then throw((((("Attempt to take " + toString(-( | |
1327 | + | else if ((-(gL) > gS)) | |
1328 | + | then throw((((("Attempt to take " + toString(-(gL))) + " from warehouse, but only ") + toString(gS)) + " available")) | |
1298 | 1329 | else { | |
1299 | - | let | |
1300 | - | $Tuple4(( | |
1330 | + | let gU = (gw((gS + gL), aq) - gw(gS, aq)) | |
1331 | + | $Tuple4((eP + 1), (dn._2 :+ toString((gS + gL))), (dn._3 :+ toString((gT - gL))), (dn._4 + gU)) | |
1301 | 1332 | } | |
1302 | 1333 | } | |
1303 | 1334 | ||
1304 | - | let | |
1335 | + | let fU = if ((size(gE) != 0)) | |
1305 | 1336 | then { | |
1306 | - | let | |
1307 | - | let | |
1308 | - | let | |
1309 | - | func | |
1310 | - | then | |
1311 | - | else | |
1312 | - | ||
1313 | - | func | |
1314 | - | then | |
1337 | + | let dp = gE | |
1338 | + | let dq = size(dp) | |
1339 | + | let dr = $Tuple4(0, nil, nil, eG._4) | |
1340 | + | func fQ (dt,du) = if ((du >= dq)) | |
1341 | + | then dt | |
1342 | + | else gR(dt, dp[du]) | |
1343 | + | ||
1344 | + | func fR (dt,du) = if ((du >= dq)) | |
1345 | + | then dt | |
1315 | 1346 | else throw("List size exceeds 50") | |
1316 | 1347 | ||
1317 | - | | |
1348 | + | fR(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(fQ(dr, 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) | |
1318 | 1349 | } | |
1319 | - | else $Tuple4(0, | |
1320 | - | let | |
1321 | - | if (( | |
1322 | - | then throw((((("Attempt to put total " + toString( | |
1323 | - | else $Tuple7(makeString( | |
1350 | + | else $Tuple4(0, gH, gJ, eG._4) | |
1351 | + | let gV = fU._4 | |
1352 | + | if ((gV > fe)) | |
1353 | + | then throw((((("Attempt to put total " + toString(gV)) + " stuff, but only ") + toString(fe)) + " warehouse space left")) | |
1354 | + | else $Tuple7(makeString(dy._2, "_"), makeString(eG._2, "_"), makeString(fU._2, "_"), makeString(dy._3, "_"), makeString(eG._3, "_"), makeString(fU._3, "_"), gV) | |
1324 | 1355 | } | |
1325 | 1356 | } | |
1326 | 1357 | ||
1327 | 1358 | ||
1328 | - | func | |
1329 | - | let | |
1330 | - | let | |
1331 | - | let | |
1332 | - | let | |
1333 | - | let | |
1334 | - | let | |
1335 | - | let | |
1336 | - | let | |
1337 | - | let | |
1338 | - | let | |
1339 | - | $Tuple2([IntegerEntry( | |
1340 | - | } | |
1341 | - | ||
1342 | - | ||
1343 | - | func | |
1359 | + | func gW (gX,gY) = { | |
1360 | + | let bd = toString(gX) | |
1361 | + | let gZ = fk(toBigInt(gY)) | |
1362 | + | let ha = valueOrElse(getInteger(cO()), (cN + 1)) | |
1363 | + | let cQ = toString(ha) | |
1364 | + | let ft = toInt((gZ % cH)) | |
1365 | + | let eS = fr(gZ, ft) | |
1366 | + | let hb = ak[ft] | |
1367 | + | let hc = Issue(dg(cQ, "S"), makeString([cQ, "S", eS, hb], "_"), 1, 0, false) | |
1368 | + | let aG = calculateAssetId(hc) | |
1369 | + | let hd = toBase58String(aG) | |
1370 | + | $Tuple2([IntegerEntry(cO(), (ha + 1)), hc, StringEntry(cP(cQ), hd), StringEntry(aF(hd), bd), StringEntry(cV(cQ), bd), IntegerEntry(aJ(hd), 0), IntegerEntry(cT(hd, bd), 0), ScriptTransfer(gX, 1, aG)], $Tuple2(hd, hb)) | |
1371 | + | } | |
1372 | + | ||
1373 | + | ||
1374 | + | func he (bd,hf,hg) = if (!(sigVerify_8Kb(hf, hg, cz))) | |
1344 | 1375 | then throw("signature does not match") | |
1345 | 1376 | else { | |
1346 | - | let | |
1347 | - | let | |
1348 | - | let | |
1349 | - | let | |
1350 | - | let | |
1351 | - | let | |
1352 | - | let | |
1353 | - | let | |
1354 | - | if (if (( | |
1377 | + | let dL = split(toUtf8String(hf), ";") | |
1378 | + | let hh = split(dL[0], "|") | |
1379 | + | let hi = split(hh[dc], "_") | |
1380 | + | let hj = parseIntValue(hi[0]) | |
1381 | + | let hk = parseIntValue(hi[1]) | |
1382 | + | let hl = split(dL[1], ":") | |
1383 | + | let hm = hl[0] | |
1384 | + | let hn = parseIntValue(hh[dd]) | |
1385 | + | if (if ((hn > (lastBlock.timestamp + cB))) | |
1355 | 1386 | then true | |
1356 | - | else ((lastBlock.timestamp - | |
1357 | - | then throw(((("signature outdated: logTime=" + toString( | |
1387 | + | else ((lastBlock.timestamp - cB) > hn)) | |
1388 | + | then throw(((("signature outdated: logTime=" + toString(hn)) + ", bcTime=") + toString(lastBlock.timestamp))) | |
1358 | 1389 | else { | |
1359 | - | let | |
1360 | - | let | |
1361 | - | if (( | |
1362 | - | then throw(((("Tx ids don't match! In state: " + | |
1390 | + | let ho = hl[1] | |
1391 | + | let hp = valueOrElse(getString(aE(bd)), "") | |
1392 | + | if ((hp != ho)) | |
1393 | + | then throw(((("Tx ids don't match! In state: " + hp) + ", in msg: ") + ho)) | |
1363 | 1394 | else { | |
1364 | - | let r = valueOrErrorMessage(getString( | |
1365 | - | let | |
1366 | - | let | |
1367 | - | let | |
1368 | - | if (( | |
1369 | - | then throw(((("oldHealth=" + toString( | |
1370 | - | else if ((0 >= | |
1395 | + | let r = valueOrErrorMessage(getString(aY(bd)), "You don't have a duck staked") | |
1396 | + | let hq = q(r) | |
1397 | + | let hr = O(valueOrElse(getInteger(u(r)), 0)) | |
1398 | + | let hs = valueOrElse(getInteger(hq), hr) | |
1399 | + | if ((hs != hj)) | |
1400 | + | then throw(((("oldHealth=" + toString(hs)) + " from state does not match one from flight log=") + toString(hj))) | |
1401 | + | else if ((0 >= hj)) | |
1371 | 1402 | then throw("You can't fly with zero health") | |
1372 | 1403 | else { | |
1373 | - | let | |
1374 | - | then | |
1404 | + | let ht = if ((size(hh) > de)) | |
1405 | + | then hh[de] | |
1375 | 1406 | else "" | |
1376 | - | let | |
1377 | - | then | |
1407 | + | let hu = if ((size(hh) > df)) | |
1408 | + | then hh[df] | |
1378 | 1409 | else "" | |
1379 | - | let | |
1380 | - | then ( | |
1410 | + | let hv = if (if ((hk > 0)) | |
1411 | + | then (ht == "$") | |
1381 | 1412 | else false) | |
1382 | - | then | |
1413 | + | then cs(invoke(cb, "sendUsdtPrize", [bd], nil)) | |
1383 | 1414 | else 0 | |
1384 | - | $Tuple5( | |
1415 | + | $Tuple5(hk, r, hv, hm, hu) | |
1385 | 1416 | } | |
1386 | 1417 | } | |
1387 | 1418 | } | |
1388 | 1419 | } | |
1389 | 1420 | ||
1390 | 1421 | ||
1391 | - | func | |
1392 | - | let | |
1393 | - | let | |
1394 | - | let r = | |
1395 | - | let | |
1396 | - | let | |
1397 | - | let | |
1398 | - | let | |
1399 | - | let | |
1400 | - | let | |
1401 | - | let | |
1402 | - | let | |
1403 | - | if ((0 >= | |
1404 | - | then $Tuple3([IntegerEntry( | |
1422 | + | func hw (gX,gY,hf,hg) = { | |
1423 | + | let bd = toString(gX) | |
1424 | + | let fu = he(bd, hf, hg) | |
1425 | + | let r = fu._2 | |
1426 | + | let hq = q(r) | |
1427 | + | let fT = aZ(r) | |
1428 | + | let gB = fS(fT) | |
1429 | + | let hx = split(gB[aC], "_") | |
1430 | + | let hy = makeString(dz(true, hx, cF), "_") | |
1431 | + | let hz = w(r) | |
1432 | + | let hA = valueOrElse(getString(hz), ",;,_,;,_,;,_,;,_,;,_,;,") | |
1433 | + | let hB = dG(hA, fu._5) | |
1434 | + | if ((0 >= fu._1)) | |
1435 | + | then $Tuple3([IntegerEntry(hq, 0), StringEntry(hz, hB)], "", 0) | |
1405 | 1436 | else { | |
1406 | - | let | |
1407 | - | let | |
1408 | - | $Tuple3((((( | |
1409 | - | } | |
1410 | - | } | |
1411 | - | ||
1412 | - | ||
1413 | - | func | |
1414 | - | let | |
1415 | - | let | |
1416 | - | let | |
1417 | - | let | |
1418 | - | (( | |
1419 | - | } | |
1420 | - | ||
1421 | - | ||
1422 | - | func | |
1423 | - | let | |
1424 | - | then $Tuple2( | |
1437 | + | let hC = gW(gX, gY) | |
1438 | + | let hd = hC._2._1 | |
1439 | + | $Tuple3(((((hC._1 :+ StringEntry(ba(r), makeString([hC._2._2, "L", hd], "_"))) :+ IntegerEntry(hq, fu._1)) :+ StringEntry(hz, hB)) :+ StringEntry(fT, makeString([gB[aA], gB[aB], hy, gB[aD]], ":"))), hd, fu._3) | |
1440 | + | } | |
1441 | + | } | |
1442 | + | ||
1443 | + | ||
1444 | + | func hD (aQ,hE) = { | |
1445 | + | let gk = valueOrElse(getInteger(aJ(aQ)), 0) | |
1446 | + | let hF = valueOrElse(getInteger(aK(ab, aQ)), 0) | |
1447 | + | let hG = (gk / 6) | |
1448 | + | let hH = (gk / 7) | |
1449 | + | ((ad + fraction(ad, ((gk + hG) + (2 * hH)), 5)) + fraction(ad, hF, (hE * 5))) | |
1450 | + | } | |
1451 | + | ||
1452 | + | ||
1453 | + | func hI (b,hJ,hK) = { | |
1454 | + | let hL = if ((hJ == cZ)) | |
1455 | + | then $Tuple2(hK, valueOrElse(getString(aY(b)), "")) | |
1425 | 1456 | else { | |
1426 | - | let r = valueOrErrorMessage(getString( | |
1427 | - | let | |
1428 | - | let | |
1429 | - | if (( | |
1430 | - | then throw((("Duck location type is " + | |
1431 | - | else $Tuple2( | |
1432 | - | } | |
1433 | - | let | |
1434 | - | let | |
1435 | - | let | |
1436 | - | let | |
1437 | - | let | |
1438 | - | let | |
1439 | - | if (( | |
1440 | - | then throw(( | |
1457 | + | let r = valueOrErrorMessage(getString(aY(b)), "You don't have a duck staked") | |
1458 | + | let hM = valueOrElse(getString(ba(r)), ag) | |
1459 | + | let hN = split(value(hM), "_") | |
1460 | + | if ((hN[bs] != "L")) | |
1461 | + | then throw((("Duck location type is " + hN[bs]) + ", but should be L")) | |
1462 | + | else $Tuple2(hN[bt], r) | |
1463 | + | } | |
1464 | + | let aQ = hL._1 | |
1465 | + | let hO = hL._2 | |
1466 | + | let hP = value(assetInfo(fromBase58String(aQ))) | |
1467 | + | let hQ = aI(aQ) | |
1468 | + | let hR = valueOrErrorMessage(getInteger(hQ), (("Land " + hP.name) + " is not staked")) | |
1469 | + | let hS = valueOrErrorMessage(getString(aF(aQ)), (("NFT " + hP.name) + " is orphaned")) | |
1470 | + | if ((hS != b)) | |
1471 | + | then throw((Z + " is not yours")) | |
1441 | 1472 | else { | |
1442 | - | let | |
1443 | - | $Tuple4( | |
1444 | - | } | |
1445 | - | } | |
1446 | - | ||
1447 | - | ||
1448 | - | func | |
1473 | + | let hT = split(hP.description, "_") | |
1474 | + | $Tuple4(hO, aQ, hT, hR) | |
1475 | + | } | |
1476 | + | } | |
1477 | + | ||
1478 | + | ||
1479 | + | func hU (b,gx,hJ,hK) = if ((0 > gx)) | |
1449 | 1480 | then throw("Negative amount") | |
1450 | 1481 | else { | |
1451 | - | let | |
1452 | - | let | |
1453 | - | let | |
1454 | - | let | |
1455 | - | if ((0 > | |
1456 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1482 | + | let er = hI(b, hJ, hK) | |
1483 | + | let cv = er._3[ch] | |
1484 | + | let eL = eR(er._3[ci]) | |
1485 | + | let eV = (lastBlock.timestamp - er._4) | |
1486 | + | if ((0 > eV)) | |
1487 | + | then throw(((("Saved timestamp is in future, saved = " + toString(er._4)) + ", current = ") + toString(lastBlock.timestamp))) | |
1457 | 1488 | else { | |
1458 | - | let | |
1459 | - | let | |
1460 | - | let | |
1461 | - | if (( | |
1462 | - | then throw(((("Not enough resources, available = " + toString( | |
1489 | + | let hE = cu(cv) | |
1490 | + | let hV = hD(er._2, hE) | |
1491 | + | let hW = fraction(eV, (hV * hE), ae) | |
1492 | + | if ((gx > hW)) | |
1493 | + | then throw(((("Not enough resources, available = " + toString(hW)) + ", requested = ") + toString(gx))) | |
1463 | 1494 | else { | |
1464 | - | let | |
1465 | - | let | |
1466 | - | let | |
1467 | - | let | |
1468 | - | let | |
1469 | - | let | |
1470 | - | let | |
1471 | - | let | |
1472 | - | let | |
1473 | - | if (if (( | |
1474 | - | then ( | |
1495 | + | let hX = fraction((hW - gx), ae, (hV * hE)) | |
1496 | + | let hY = (lastBlock.timestamp - hX) | |
1497 | + | let gj = (hE / bG) | |
1498 | + | let fd = eZ(eL, (eV - hX), gj, hV) | |
1499 | + | let gi = aP(er._2) | |
1500 | + | let gk = valueOrElse(getInteger(aJ(er._2)), 0) | |
1501 | + | let fY = gh(gi, gj, gk) | |
1502 | + | let gq = split(fY[av], "_") | |
1503 | + | let fe = parseIntValue(gq[ay]) | |
1504 | + | if (if ((hJ == cZ)) | |
1505 | + | then (gx > fe) | |
1475 | 1506 | else false) | |
1476 | - | then throw((("Only " + toString( | |
1507 | + | then throw((("Only " + toString(fe)) + " space left in warehouse")) | |
1477 | 1508 | else { | |
1478 | - | let | |
1479 | - | let | |
1480 | - | let | |
1481 | - | let | |
1482 | - | let | |
1483 | - | then $Tuple4( | |
1484 | - | else if (( | |
1485 | - | then $Tuple4( | |
1509 | + | let fT = aZ(er._1) | |
1510 | + | let gB = fS(fT) | |
1511 | + | let fc = split(gB[aB], "_") | |
1512 | + | let fb = split(fY[as], "_") | |
1513 | + | let hZ = if ((hJ == cZ)) | |
1514 | + | then $Tuple4(eT(fb, eL, (eV - hX), gj, hV), gB[aB], (parseIntValue(gq[ax]) + fd._2), (parseIntValue(gq[ay]) - fd._2)) | |
1515 | + | else if ((hJ == da)) | |
1516 | + | then $Tuple4(fY[as], eT(fc, eL, (eV - hX), gj, hV), parseIntValue(gq[ax]), parseIntValue(gq[ay])) | |
1486 | 1517 | else { | |
1487 | - | let | |
1488 | - | let | |
1489 | - | $Tuple4( | |
1518 | + | let ia = fa(fb, fc, fd, fe) | |
1519 | + | let ib = min([parseIntValue(gq[ay]), fd._2]) | |
1520 | + | $Tuple4(ia._1, ia._2, (parseIntValue(gq[ax]) + ib), (parseIntValue(gq[ay]) - ib)) | |
1490 | 1521 | } | |
1491 | - | let | |
1492 | - | let | |
1493 | - | let | |
1494 | - | let | |
1495 | - | $Tuple5([IntegerEntry( | |
1522 | + | let ic = hZ._1 | |
1523 | + | let id = hZ._2 | |
1524 | + | let ie = hZ._3 | |
1525 | + | let if = hZ._4 | |
1526 | + | $Tuple5([IntegerEntry(aI(er._2), hY), IntegerEntry(aM(Z, er._2, b), hY)], fT, [gB[aA], id, gB[aC], gB[aD]], gi, [fY[ar], ic, fY[at], fY[au], makeString([gq[aw], toString(ie), toString(if), gq[az]], "_")]) | |
1496 | 1527 | } | |
1497 | 1528 | } | |
1498 | 1529 | } | |
1499 | 1530 | } | |
1500 | 1531 | ||
1501 | 1532 | ||
1502 | - | func | |
1503 | - | let | |
1504 | - | let | |
1505 | - | let | |
1506 | - | | |
1507 | - | } | |
1508 | - | ||
1509 | - | ||
1510 | - | func | |
1511 | - | let b = toString( | |
1512 | - | let | |
1513 | - | let | |
1514 | - | let | |
1515 | - | let | |
1516 | - | if (( | |
1533 | + | func ig (b,aQ,hE,hJ) = { | |
1534 | + | let hQ = aI(aQ) | |
1535 | + | let hR = value(getInteger(hQ)) | |
1536 | + | let hW = (fraction((lastBlock.timestamp - hR), hD(aQ, hE), ae) * hE) | |
1537 | + | hU(b, hW, hJ, aQ) | |
1538 | + | } | |
1539 | + | ||
1540 | + | ||
1541 | + | func ih (dA,gX,ii,aQ) = { | |
1542 | + | let b = toString(gX) | |
1543 | + | let er = hI(b, db, aQ) | |
1544 | + | let hE = cu(er._3[ch]) | |
1545 | + | let ij = aJ(er._2) | |
1546 | + | let ik = valueOrElse(getInteger(ij), 0) | |
1547 | + | if ((ik >= 3)) | |
1517 | 1548 | then throw("Currently max infrastructure level = 3") | |
1518 | 1549 | else { | |
1519 | - | let | |
1520 | - | let | |
1521 | - | if (if (!( | |
1522 | - | then ( | |
1550 | + | let T = (ik + 1) | |
1551 | + | let il = fraction(cE, (hE * T), bG) | |
1552 | + | if (if (!(dA)) | |
1553 | + | then (ii != il) | |
1523 | 1554 | else false) | |
1524 | - | then throw(("Payment attached should be " + toString( | |
1555 | + | then throw(("Payment attached should be " + toString(il))) | |
1525 | 1556 | else { | |
1526 | - | let | |
1527 | - | let | |
1528 | - | let | |
1529 | - | let | |
1530 | - | let | |
1531 | - | let | |
1532 | - | let | |
1533 | - | let | |
1534 | - | let | |
1535 | - | let | |
1536 | - | let | |
1537 | - | let | |
1538 | - | $Tuple3(([IntegerEntry( | |
1557 | + | let fT = aZ(er._1) | |
1558 | + | let gB = fS(fT) | |
1559 | + | let hx = split(gB[aC], "_") | |
1560 | + | let im = fraction(bB, (hE * T), bG) | |
1561 | + | let hy = makeString(dz(dA, hx, im), "_") | |
1562 | + | let in = ig(b, er._2, hE, db) | |
1563 | + | let io = in._5 | |
1564 | + | let ip = fV(io[ar]) | |
1565 | + | let iq = makeString([split(io[ar], "_")[0], toString(T)], "_") | |
1566 | + | let ir = fV(iq) | |
1567 | + | let gq = split(io[av], "_") | |
1568 | + | let is = makeString([gq[aw], gq[ax], toString(((parseIntValue(gq[ay]) + ir) - ip)), toString(ir)], "_") | |
1569 | + | $Tuple3(([IntegerEntry(ij, T), IntegerEntry(cT(er._2, b), T), StringEntry(fT, makeString([gB[aA], in._3[aB], hy, gB[aD]], ":")), StringEntry(in._4, makeString([iq, io[as], io[at], io[au], is], ":"))] ++ in._1), T, im) | |
1539 | 1570 | } | |
1540 | 1571 | } | |
1541 | 1572 | } | |
1542 | 1573 | ||
1543 | 1574 | ||
1544 | - | func | |
1575 | + | func it (r,iu) = if (!(bw)) | |
1545 | 1576 | then $Tuple2(nil, 0) | |
1546 | 1577 | else { | |
1547 | - | let | |
1548 | - | let | |
1549 | - | let | |
1550 | - | let | |
1551 | - | let | |
1552 | - | let | |
1553 | - | $Tuple2([IntegerEntry( | |
1554 | - | } | |
1555 | - | ||
1556 | - | ||
1557 | - | func | |
1578 | + | let iv = u(r) | |
1579 | + | let iw = t(r) | |
1580 | + | let N = valueOrElse(getInteger(V, iw), 0) | |
1581 | + | let S = (N + iu) | |
1582 | + | let ix = Q(valueOrElse(getInteger(V, iv), 0), S) | |
1583 | + | let iy = v(r) | |
1584 | + | $Tuple2([IntegerEntry(iv, ix[0]), IntegerEntry(iw, S), IntegerEntry(iy, (valueOrElse(getInteger(iy), 0) + ix[1]))], S) | |
1585 | + | } | |
1586 | + | ||
1587 | + | ||
1588 | + | func iz (b,iu) = if (!(bw)) | |
1558 | 1589 | then $Tuple2(nil, 0) | |
1559 | 1590 | else { | |
1560 | - | let | |
1561 | - | let | |
1562 | - | let | |
1563 | - | let | |
1564 | - | let | |
1565 | - | let | |
1566 | - | $Tuple2([IntegerEntry( | |
1567 | - | } | |
1568 | - | ||
1569 | - | ||
1570 | - | func | |
1571 | - | let r = valueOrErrorMessage(getString( | |
1572 | - | let | |
1573 | - | let | |
1574 | - | if (!(isDefined( | |
1591 | + | let iv = y(b) | |
1592 | + | let iw = x(b) | |
1593 | + | let N = valueOrElse(getInteger(V, iw), 0) | |
1594 | + | let S = (N + iu) | |
1595 | + | let ix = Q(valueOrElse(getInteger(V, iv), 0), S) | |
1596 | + | let iy = z(b) | |
1597 | + | $Tuple2([IntegerEntry(iv, ix[0]), IntegerEntry(iw, S), IntegerEntry(iy, (valueOrElse(getInteger(iy), 0) + ix[1]))], S) | |
1598 | + | } | |
1599 | + | ||
1600 | + | ||
1601 | + | func iA (b) = { | |
1602 | + | let r = valueOrErrorMessage(getString(aY(b)), "You don't have a duck staked") | |
1603 | + | let iB = aT(b) | |
1604 | + | let iC = getString(iB) | |
1605 | + | if (!(isDefined(iC))) | |
1575 | 1606 | then throw("You are not eligible for ONBOARD artifact") | |
1576 | 1607 | else { | |
1577 | - | let | |
1578 | - | let | |
1579 | - | if (isDefined( | |
1580 | - | then throw(("You already used your ONBOARD artifact on duck " + value( | |
1608 | + | let iD = aV(b) | |
1609 | + | let iE = getString(iD) | |
1610 | + | if (isDefined(iE)) | |
1611 | + | then throw(("You already used your ONBOARD artifact on duck " + value(iE))) | |
1581 | 1612 | else { | |
1582 | - | let | |
1583 | - | let | |
1584 | - | if (isDefined( | |
1585 | - | then throw(((("The duck " + r) + " already got points from ONBOARD artifact from user ") + value( | |
1586 | - | else ([StringEntry( | |
1613 | + | let iF = aU(r) | |
1614 | + | let iG = getString(iF) | |
1615 | + | if (isDefined(iG)) | |
1616 | + | then throw(((("The duck " + r) + " already got points from ONBOARD artifact from user ") + value(iG))) | |
1617 | + | else ([StringEntry(iD, r), StringEntry(iF, b)] ++ it(r, K)._1) | |
1587 | 1618 | } | |
1588 | 1619 | } | |
1589 | 1620 | } | |
1590 | 1621 | ||
1591 | 1622 | ||
1592 | - | func | |
1593 | - | let | |
1594 | - | let | |
1595 | - | let | |
1596 | - | let | |
1597 | - | if ((valueOrElse(getInteger( | |
1623 | + | func iH (b,hK) = { | |
1624 | + | let er = hI(b, db, hK) | |
1625 | + | let aQ = er._2 | |
1626 | + | let hE = cu(er._3[ch]) | |
1627 | + | let iI = aK(ab, aQ) | |
1628 | + | if ((valueOrElse(getInteger(iI), 0) > 0)) | |
1598 | 1629 | then throw("Presale artifact is already activated") | |
1599 | - | else if ((parseIntValue( | |
1600 | - | then throw(((( | |
1630 | + | else if ((parseIntValue(er._3[cg]) > cN)) | |
1631 | + | then throw((((Z + " ") + aQ) + " is not eligible for presale artifact")) | |
1601 | 1632 | else { | |
1602 | - | let | |
1603 | - | (((( | |
1633 | + | let in = ig(b, aQ, hE, db) | |
1634 | + | ((((in._1 :+ IntegerEntry(iI, hE)) :+ IntegerEntry(cU(ab, aQ, b), hE)) :+ StringEntry(in._2, makeString(in._3, ":"))) :+ StringEntry(in._4, makeString(in._5, ":"))) | |
1604 | 1635 | } | |
1605 | 1636 | } | |
1606 | 1637 | ||
1607 | 1638 | ||
1608 | - | func | |
1609 | - | let r = valueOrErrorMessage(getString( | |
1610 | - | func | |
1611 | - | let | |
1612 | - | let | |
1613 | - | let | |
1614 | - | let | |
1615 | - | if (( | |
1616 | - | then throw(( | |
1639 | + | func iJ (iK,T,iL,b,iM,iN) = { | |
1640 | + | let r = valueOrErrorMessage(getString(aY(b)), "You don't have a duck staked") | |
1641 | + | func iO (dn,aQ) = { | |
1642 | + | let hP = value(assetInfo(fromBase58String(aQ))) | |
1643 | + | let hQ = aI(aQ) | |
1644 | + | let hR = valueOrErrorMessage(getInteger(hQ), (("NFT " + hP.name) + " is not staked")) | |
1645 | + | let hS = valueOrErrorMessage(getString(aF(aQ)), (("NFT " + hP.name) + " is orphaned")) | |
1646 | + | if ((hS != b)) | |
1647 | + | then throw((Z + " is not yours")) | |
1617 | 1648 | else { | |
1618 | - | let | |
1619 | - | let | |
1620 | - | if (if (( | |
1621 | - | then ( | |
1649 | + | let hT = split(hP.description, "_") | |
1650 | + | let hb = hT[cj] | |
1651 | + | if (if ((dn._3 != "")) | |
1652 | + | then (dn._3 != hb) | |
1622 | 1653 | else false) | |
1623 | 1654 | then throw("Lands should be on the same continent to merge") | |
1624 | 1655 | else { | |
1625 | - | let | |
1626 | - | let | |
1627 | - | let | |
1628 | - | let | |
1629 | - | let | |
1630 | - | let | |
1631 | - | let | |
1632 | - | let | |
1633 | - | let | |
1634 | - | if (("S" == | |
1656 | + | let cv = hT[ch] | |
1657 | + | let iP = dn._1 | |
1658 | + | let eP = valueOrErrorMessage(indexOf(iP, cv), "You haven't passed all the lands needed") | |
1659 | + | let iQ = (take(iP, eP) + drop(iP, (eP + 1))) | |
1660 | + | let hE = cu(cv) | |
1661 | + | let iR = (dn._2 + valueOrElse(getInteger(aK(ab, aQ)), 0)) | |
1662 | + | let gk = valueOrElse(getInteger(aJ(aQ)), 0) | |
1663 | + | let iS = { | |
1664 | + | let bz = cv | |
1665 | + | if (("S" == bz)) | |
1635 | 1666 | then 3 | |
1636 | - | else if (("M" == | |
1667 | + | else if (("M" == bz)) | |
1637 | 1668 | then 4 | |
1638 | - | else if (("L" == | |
1669 | + | else if (("L" == bz)) | |
1639 | 1670 | then 5 | |
1640 | - | else if (("XL" == | |
1671 | + | else if (("XL" == bz)) | |
1641 | 1672 | then 6 | |
1642 | 1673 | else throw("Only S, M, L, XL can merge") | |
1643 | 1674 | } | |
1644 | - | if (( | |
1675 | + | if ((gk != iS)) | |
1645 | 1676 | then throw("All lands should be maxed to merge") | |
1646 | 1677 | else { | |
1647 | - | let | |
1648 | - | let | |
1649 | - | let | |
1650 | - | if ((0 > | |
1651 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1678 | + | let cQ = hT[cg] | |
1679 | + | let eL = eR(hT[ci]) | |
1680 | + | let eV = (lastBlock.timestamp - hR) | |
1681 | + | if ((0 > eV)) | |
1682 | + | then throw(((("Saved timestamp is in future, saved = " + toString(hR)) + ", current = ") + toString(lastBlock.timestamp))) | |
1652 | 1683 | else { | |
1653 | - | let | |
1654 | - | let | |
1655 | - | let | |
1656 | - | let | |
1657 | - | let | |
1658 | - | let | |
1659 | - | let | |
1660 | - | if (!(isDefined( | |
1661 | - | then throw(("Your staked lands don't contain " + | |
1684 | + | let hV = hD(aQ, hE) | |
1685 | + | let gj = (hE / bG) | |
1686 | + | let id = eT(split(dn._4, "_"), eL, eV, gj, hV) | |
1687 | + | let dx = eJ(dn._6, eL, gj, -1) | |
1688 | + | let fA = eJ(dn._9, eL, gj, 1) | |
1689 | + | let iT = dn._7 | |
1690 | + | let ca = indexOf(iT, aQ) | |
1691 | + | if (!(isDefined(ca))) | |
1692 | + | then throw(("Your staked lands don't contain " + aQ)) | |
1662 | 1693 | else { | |
1663 | - | let | |
1664 | - | let | |
1665 | - | $Tuple9( | |
1694 | + | let iU = aH(aQ) | |
1695 | + | let iV = valueOrElse(getString(iU), "") | |
1696 | + | $Tuple9(iQ, iR, hb, id, (((((((((((((dn._5 :+ DeleteEntry(aI(aQ))) :+ DeleteEntry(aM(Z, aQ, b))) :+ DeleteEntry(cP(cQ))) :+ DeleteEntry(aF(aQ))) :+ DeleteEntry(aJ(aQ))) :+ DeleteEntry(cT(aQ, b))) :+ DeleteEntry(aK(ab, aQ))) :+ DeleteEntry(cU(ab, aQ, b))) :+ DeleteEntry(cV(cQ))) :+ DeleteEntry(aP(aQ))) :+ DeleteEntry(iU)) :+ DeleteEntry(cR(iV))) :+ Burn(fromBase58String(aQ), 1)), dx, removeByIndex(iT, value(ca)), (dn._8 + hE), fA) | |
1666 | 1697 | } | |
1667 | 1698 | } | |
1668 | 1699 | } | |
1669 | 1700 | } | |
1670 | 1701 | } | |
1671 | 1702 | } | |
1672 | 1703 | ||
1673 | - | let | |
1674 | - | let | |
1675 | - | let | |
1676 | - | let | |
1677 | - | let | |
1678 | - | let | |
1679 | - | then split_51C(value( | |
1704 | + | let fT = aZ(r) | |
1705 | + | let gB = fS(fT) | |
1706 | + | let eK = split(valueOrElse(getString(cm()), "0_0_0_0_0_0"), "_") | |
1707 | + | let iW = cn(b) | |
1708 | + | let iX = getString(iW) | |
1709 | + | let iY = if (isDefined(iX)) | |
1710 | + | then split_51C(value(iX), "_") | |
1680 | 1711 | else nil | |
1681 | - | let | |
1682 | - | let | |
1683 | - | let | |
1684 | - | let | |
1685 | - | func | |
1686 | - | then | |
1687 | - | else | |
1688 | - | ||
1689 | - | func | |
1690 | - | then | |
1712 | + | let dy = { | |
1713 | + | let dp = iM | |
1714 | + | let dq = size(dp) | |
1715 | + | let dr = $Tuple9(iL, 0, "", gB[aB], nil, eK, iY, 0, split("0_0_0_0_0_0", "_")) | |
1716 | + | func ds (dt,du) = if ((du >= dq)) | |
1717 | + | then dt | |
1718 | + | else iO(dt, dp[du]) | |
1719 | + | ||
1720 | + | func dv (dt,du) = if ((du >= dq)) | |
1721 | + | then dt | |
1691 | 1722 | else throw("List size exceeds 5") | |
1692 | 1723 | ||
1693 | - | | |
1694 | - | } | |
1695 | - | let | |
1696 | - | let | |
1697 | - | let | |
1698 | - | let | |
1699 | - | let | |
1700 | - | let | |
1701 | - | let | |
1702 | - | let | |
1703 | - | let | |
1704 | - | let | |
1705 | - | let | |
1706 | - | $Tuple2(((((((((((((((( | |
1707 | - | then StringEntry( | |
1708 | - | else DeleteEntry( | |
1724 | + | dv(ds(ds(ds(ds(ds(dr, 0), 1), 2), 3), 4), 5) | |
1725 | + | } | |
1726 | + | let hb = dy._3 | |
1727 | + | let ft = valueOrErrorMessage(indexOf(ak, hb), ("Unknown continent: " + hb)) | |
1728 | + | let eS = fz(dy._9, (cu(iK) / bG)) | |
1729 | + | let ha = valueOrElse(getInteger(cO()), (cN + 1)) | |
1730 | + | let iZ = toString(ha) | |
1731 | + | let hc = Issue(dg(iZ, iK), makeString([iZ, iK, eS, hb], "_"), 1, 0, false) | |
1732 | + | let aG = calculateAssetId(hc) | |
1733 | + | let ja = toBase58String(aG) | |
1734 | + | let hy = makeString(dz((iN > 0), split(gB[aC], "_"), iN), "_") | |
1735 | + | let jb = co(b) | |
1736 | + | let jc = valueOrElse(getInteger(jb), 0) | |
1737 | + | $Tuple2((((((((((((((((dy._5 :+ (if ((size(dy._7) > 0)) | |
1738 | + | then StringEntry(iW, makeString_11C(dy._7, "_")) | |
1739 | + | else DeleteEntry(iW))) :+ IntegerEntry(jb, if ((dy._8 > jc)) | |
1709 | 1740 | then 0 | |
1710 | - | else ( | |
1711 | - | } | |
1712 | - | ||
1713 | - | ||
1714 | - | func | |
1715 | - | ||
1716 | - | ||
1717 | - | func | |
1718 | - | ||
1719 | - | ||
1720 | - | func | |
1721 | - | ||
1722 | - | ||
1723 | - | func | |
1724 | - | ||
1725 | - | ||
1726 | - | func | |
1727 | - | let | |
1728 | - | if ((4 == | |
1729 | - | then | |
1730 | - | else if ((3 == | |
1731 | - | then | |
1732 | - | else if ((5 == | |
1733 | - | then | |
1734 | - | else if ((2 == | |
1735 | - | then | |
1741 | + | else (jc - dy._8))) :+ IntegerEntry(cO(), (ha + 1))) :+ hc) :+ StringEntry(cP(iZ), ja)) :+ StringEntry(aF(ja), b)) :+ StringEntry(cV(iZ), b)) :+ IntegerEntry(aK(ab, ja), dy._2)) :+ IntegerEntry(cU(ab, ja, b), dy._2)) :+ IntegerEntry(aJ(ja), T)) :+ IntegerEntry(cT(ja, b), T)) :+ StringEntry(fT, makeString([gB[aA], dy._4, hy, gB[aD]], ":"))) :+ StringEntry(cm(), makeString(dy._6, "_"))) :+ StringEntry(ba(r), makeString([hb, "L", ja], "_"))) :+ ScriptTransfer(addressFromStringValue(b), 1, aG)), ja) | |
1742 | + | } | |
1743 | + | ||
1744 | + | ||
1745 | + | func jd (b,iM) = iJ("M", 3, "SSSS", b, iM, 0) | |
1746 | + | ||
1747 | + | ||
1748 | + | func je (b,iM) = iJ("L", 4, "SMM", b, iM, (bB * 4)) | |
1749 | + | ||
1750 | + | ||
1751 | + | func jf (b,iM) = iJ("XL", 5, "SSSML", b, iM, (bB * 47)) | |
1752 | + | ||
1753 | + | ||
1754 | + | func jg (b,iM) = iJ("XXL", 6, "LXL", b, iM, (bB * 54)) | |
1755 | + | ||
1756 | + | ||
1757 | + | func jh (b,iM) = { | |
1758 | + | let bz = size(iM) | |
1759 | + | if ((4 == bz)) | |
1760 | + | then jd(b, iM) | |
1761 | + | else if ((3 == bz)) | |
1762 | + | then je(b, iM) | |
1763 | + | else if ((5 == bz)) | |
1764 | + | then jf(b, iM) | |
1765 | + | else if ((2 == bz)) | |
1766 | + | then jg(b, iM) | |
1736 | 1767 | else throw("Unknown merge") | |
1737 | 1768 | } | |
1738 | 1769 | ||
1739 | 1770 | ||
1740 | - | func iT (eA) = if (if ((eA.originCaller != bM)) | |
1741 | - | then valueOrElse(getBoolean(aZ()), false) | |
1771 | + | func ji (r) = { | |
1772 | + | let jj = valueOrElse(getInteger(cf, bf), 0) | |
1773 | + | let hM = split(valueOrElse(getString(ba(r)), ag), "_") | |
1774 | + | let jk = lastBlock.timestamp | |
1775 | + | let jl = bl(cf, jj) | |
1776 | + | let bn = jl[bj] | |
1777 | + | let bo = jl[bk] | |
1778 | + | if ((hM[bs] != "T")) | |
1779 | + | then false | |
1780 | + | else { | |
1781 | + | let dF = if (if (if ((parseIntValue(hM[br]) == jj)) | |
1782 | + | then (bo[bq] == "INPROGRESS") | |
1783 | + | else false) | |
1784 | + | then (parseIntValue(bn[bp]) > jk) | |
1785 | + | else false) | |
1786 | + | then throw("Your duck is taking part in the tournament") | |
1787 | + | else invoke(this, "exitTournamentInternal", [r], nil) | |
1788 | + | if ((dF == dF)) | |
1789 | + | then false | |
1790 | + | else throw("Strict value is not equal to itself.") | |
1791 | + | } | |
1792 | + | } | |
1793 | + | ||
1794 | + | ||
1795 | + | func jm (eP) = if (if ((eP.originCaller != cb)) | |
1796 | + | then valueOrElse(getBoolean(bb()), false) | |
1742 | 1797 | else false) | |
1743 | 1798 | then throw("Contracts are under maintenance") | |
1744 | - | else StringEntry( | |
1745 | - | ||
1746 | - | ||
1747 | - | @Callable( | |
1748 | - | func constructorV1 ( | |
1799 | + | else StringEntry(aE(toString(eP.originCaller)), toBase58String(eP.transactionId)) | |
1800 | + | ||
1801 | + | ||
1802 | + | @Callable(eP) | |
1803 | + | func constructorV1 (jn) = if ((eP.caller != this)) | |
1749 | 1804 | then throw("Permission denied") | |
1750 | - | else [StringEntry( | |
1751 | - | ||
1752 | - | ||
1753 | - | ||
1754 | - | @Callable( | |
1755 | - | func setBlocked ( | |
1805 | + | else [StringEntry(bV(), jn)] | |
1806 | + | ||
1807 | + | ||
1808 | + | ||
1809 | + | @Callable(eP) | |
1810 | + | func setBlocked (jo) = if ((eP.caller != this)) | |
1756 | 1811 | then throw("permission denied") | |
1757 | - | else [BooleanEntry( | |
1758 | - | ||
1759 | - | ||
1760 | - | ||
1761 | - | @Callable( | |
1812 | + | else [BooleanEntry(bb(), jo)] | |
1813 | + | ||
1814 | + | ||
1815 | + | ||
1816 | + | @Callable(eP) | |
1762 | 1817 | func stakeLand () = { | |
1763 | - | let | |
1764 | - | if ((size( | |
1818 | + | let jp = jm(eP) | |
1819 | + | if ((size(eP.payments) != 1)) | |
1765 | 1820 | then throw("Exactly one payment required") | |
1766 | 1821 | else { | |
1767 | - | let | |
1768 | - | let | |
1769 | - | let | |
1770 | - | if (( | |
1771 | - | then throw((("NFT " + | |
1822 | + | let jq = value(eP.payments[0]) | |
1823 | + | let aG = value(jq.assetId) | |
1824 | + | let bN = toString(eP.caller) | |
1825 | + | if ((jq.amount != 1)) | |
1826 | + | then throw((("NFT " + Z) + " token should be attached as payment")) | |
1772 | 1827 | else { | |
1773 | - | let | |
1774 | - | if (( | |
1828 | + | let hP = value(assetInfo(aG)) | |
1829 | + | if ((hP.issuer != this)) | |
1775 | 1830 | then throw("Unknown issuer of token") | |
1776 | - | else if (!(contains( | |
1777 | - | then throw((("Only NFT " + | |
1831 | + | else if (!(contains(hP.name, Z))) | |
1832 | + | then throw((("Only NFT " + Z) + " tokens are accepted")) | |
1778 | 1833 | else { | |
1779 | - | let | |
1780 | - | let | |
1781 | - | then dropRight( | |
1782 | - | else if (contains( | |
1783 | - | then dropRight( | |
1784 | - | else dropRight( | |
1785 | - | if (!(isDefined(parseInt( | |
1786 | - | then throw(("Cannot parse land number from " + | |
1834 | + | let jr = drop(hP.name, 4) | |
1835 | + | let cQ = if (contains(jr, "XXL")) | |
1836 | + | then dropRight(jr, 3) | |
1837 | + | else if (contains(jr, "XL")) | |
1838 | + | then dropRight(jr, 2) | |
1839 | + | else dropRight(jr, 1) | |
1840 | + | if (!(isDefined(parseInt(cQ)))) | |
1841 | + | then throw(("Cannot parse land number from " + hP.name)) | |
1787 | 1842 | else { | |
1788 | - | let | |
1789 | - | let | |
1790 | - | if (isDefined(getInteger( | |
1791 | - | then throw((("NFT " + | |
1843 | + | let aQ = toBase58String(aG) | |
1844 | + | let hQ = aI(aQ) | |
1845 | + | if (isDefined(getInteger(hQ))) | |
1846 | + | then throw((("NFT " + hP.name) + " is already staked")) | |
1792 | 1847 | else { | |
1793 | - | let | |
1794 | - | let | |
1795 | - | let | |
1796 | - | let | |
1797 | - | let | |
1798 | - | let | |
1799 | - | let | |
1800 | - | let | |
1801 | - | then split_51C(value( | |
1848 | + | let hT = split(hP.description, "_") | |
1849 | + | let eL = eR(hT[ci]) | |
1850 | + | let hE = cu(hT[ch]) | |
1851 | + | let dx = eQ(eL, (hE / bG), 1) | |
1852 | + | let hF = valueOrElse(getInteger(aK(ab, aQ)), 0) | |
1853 | + | let iW = cn(bN) | |
1854 | + | let iX = getString(iW) | |
1855 | + | let iT = if (isDefined(iX)) | |
1856 | + | then split_51C(value(iX), "_") | |
1802 | 1857 | else nil | |
1803 | - | if (containsElement( | |
1804 | - | then throw(("Your staked lands already contain " + | |
1858 | + | if (containsElement(iT, aQ)) | |
1859 | + | then throw(("Your staked lands already contain " + aQ)) | |
1805 | 1860 | else { | |
1806 | - | let | |
1807 | - | let | |
1808 | - | let | |
1809 | - | let | |
1810 | - | $Tuple2([IntegerEntry( | |
1861 | + | let gk = valueOrElse(getInteger(aJ(aQ)), 0) | |
1862 | + | let jb = co(bN) | |
1863 | + | let js = valueOrElse(getInteger(jb), 0) | |
1864 | + | let jt = cs(invoke(ce, "onStakeUnstakeLand", [bN], nil)) | |
1865 | + | $Tuple2([IntegerEntry(hQ, lastBlock.timestamp), IntegerEntry(aM(Z, aQ, bN), lastBlock.timestamp), StringEntry(iW, makeString_11C((iT :+ aQ), "_")), IntegerEntry(jb, (js + hE)), StringEntry(aF(aQ), bN), StringEntry(cV(cQ), bN), IntegerEntry(cU(ab, aQ, bN), hF), IntegerEntry(cT(aQ, bN), gk), StringEntry(cm(), dx), jp], jt) | |
1811 | 1866 | } | |
1812 | 1867 | } | |
1813 | 1868 | } | |
1814 | 1869 | } | |
1815 | 1870 | } | |
1816 | 1871 | } | |
1817 | 1872 | } | |
1818 | 1873 | ||
1819 | 1874 | ||
1820 | 1875 | ||
1821 | - | @Callable( | |
1822 | - | func unstakeLand ( | |
1823 | - | let | |
1824 | - | if ((size( | |
1876 | + | @Callable(eP) | |
1877 | + | func unstakeLand (hK) = { | |
1878 | + | let jp = jm(eP) | |
1879 | + | if ((size(eP.payments) != 0)) | |
1825 | 1880 | then throw("No payments required") | |
1826 | 1881 | else { | |
1827 | - | let b = toString( | |
1828 | - | let | |
1829 | - | let | |
1830 | - | let | |
1831 | - | let | |
1832 | - | let | |
1833 | - | let | |
1834 | - | let | |
1835 | - | let | |
1836 | - | let | |
1837 | - | if (!(isDefined( | |
1838 | - | then throw(("Your staked lands don't contain " + | |
1882 | + | let b = toString(eP.caller) | |
1883 | + | let er = hI(b, da, hK) | |
1884 | + | let aQ = er._2 | |
1885 | + | let iW = cn(b) | |
1886 | + | let eL = eR(er._3[ci]) | |
1887 | + | let hE = cu(er._3[ch]) | |
1888 | + | let dx = eQ(eL, (hE / bG), -1) | |
1889 | + | let in = ig(b, aQ, hE, da) | |
1890 | + | let iT = split_51C(valueOrElse(getString(iW), ""), "_") | |
1891 | + | let ca = indexOf(iT, aQ) | |
1892 | + | if (!(isDefined(ca))) | |
1893 | + | then throw(("Your staked lands don't contain " + aQ)) | |
1839 | 1894 | else { | |
1840 | - | let | |
1841 | - | let | |
1842 | - | if (( | |
1843 | - | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString( | |
1895 | + | let jk = lastBlock.timestamp | |
1896 | + | let ju = valueOrElse(getInteger(cd, bc(b)), 0) | |
1897 | + | if ((ju >= jk)) | |
1898 | + | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(ju))) | |
1844 | 1899 | else { | |
1845 | - | let | |
1846 | - | if (( | |
1847 | - | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString( | |
1900 | + | let jv = (valueOrElse(getInteger(ce, a(b)), 0) + bC) | |
1901 | + | if ((jv > jk)) | |
1902 | + | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(jv))) | |
1848 | 1903 | else { | |
1849 | - | let | |
1850 | - | let | |
1851 | - | let | |
1904 | + | let jb = co(b) | |
1905 | + | let jc = valueOrElse(getInteger(jb), 0) | |
1906 | + | let jw = if ((hE > jc)) | |
1852 | 1907 | then 0 | |
1853 | - | else ( | |
1854 | - | let | |
1855 | - | $Tuple2([ScriptTransfer( | |
1856 | - | then StringEntry( | |
1857 | - | else DeleteEntry( | |
1908 | + | else (jc - hE) | |
1909 | + | let jt = cs(invoke(ce, "onStakeUnstakeLand", [b], nil)) | |
1910 | + | $Tuple2([ScriptTransfer(eP.caller, 1, fromBase58String(aQ)), DeleteEntry(aI(aQ)), DeleteEntry(aM(Z, aQ, b)), StringEntry(cm(), dx), StringEntry(in._2, makeString(in._3, ":")), if ((size(iT) > 1)) | |
1911 | + | then StringEntry(iW, makeString_11C(removeByIndex(iT, value(ca)), "_")) | |
1912 | + | else DeleteEntry(iW), IntegerEntry(jb, jw), jp], jt) | |
1858 | 1913 | } | |
1859 | 1914 | } | |
1860 | 1915 | } | |
1861 | 1916 | } | |
1862 | 1917 | } | |
1863 | 1918 | ||
1864 | 1919 | ||
1865 | 1920 | ||
1866 | - | @Callable( | |
1921 | + | @Callable(eP) | |
1867 | 1922 | func stakeDuck () = { | |
1868 | - | let | |
1869 | - | if ((size( | |
1923 | + | let jp = jm(eP) | |
1924 | + | if ((size(eP.payments) != 1)) | |
1870 | 1925 | then throw("Exactly one payment required") | |
1871 | 1926 | else { | |
1872 | - | let | |
1873 | - | let | |
1874 | - | let | |
1875 | - | if (( | |
1876 | - | then throw((("NFT " + | |
1927 | + | let jq = value(eP.payments[0]) | |
1928 | + | let aG = value(jq.assetId) | |
1929 | + | let bN = toString(eP.caller) | |
1930 | + | if ((jq.amount != 1)) | |
1931 | + | then throw((("NFT " + aa) + " token should be attached as payment")) | |
1877 | 1932 | else { | |
1878 | - | let | |
1879 | - | if (if (( | |
1880 | - | then ( | |
1933 | + | let hP = value(assetInfo(aG)) | |
1934 | + | if (if ((hP.issuer != cx)) | |
1935 | + | then (hP.issuer != cy) | |
1881 | 1936 | else false) | |
1882 | - | then throw((("Unknown issuer of " + | |
1883 | - | else if (!(contains( | |
1884 | - | then throw((("Only NFT " + | |
1937 | + | then throw((("Unknown issuer of " + aa) + " token")) | |
1938 | + | else if (!(contains(hP.name, aa))) | |
1939 | + | then throw((("Only NFT " + aa) + " tokens are accepted")) | |
1885 | 1940 | else { | |
1886 | - | let | |
1887 | - | let | |
1888 | - | if (isDefined(getInteger( | |
1889 | - | then throw((("NFT " + | |
1890 | - | else if (isDefined(getString( | |
1891 | - | then throw(("You already staked one duck: " + | |
1941 | + | let jx = toBase58String(aG) | |
1942 | + | let hQ = aI(jx) | |
1943 | + | if (isDefined(getInteger(hQ))) | |
1944 | + | then throw((("NFT " + hP.name) + " is already staked")) | |
1945 | + | else if (isDefined(getString(aY(bN)))) | |
1946 | + | then throw(("You already staked one duck: " + hP.name)) | |
1892 | 1947 | else { | |
1893 | - | let | |
1894 | - | let | |
1895 | - | let | |
1896 | - | let | |
1897 | - | let | |
1898 | - | let | |
1899 | - | let | |
1900 | - | ([IntegerEntry( | |
1948 | + | let jy = ba(jx) | |
1949 | + | let jz = getString(jy) | |
1950 | + | let fT = aZ(jx) | |
1951 | + | let jA = getString(fT) | |
1952 | + | let hq = q(jx) | |
1953 | + | let hr = O(valueOrElse(getInteger(u(jx)), 0)) | |
1954 | + | let jB = valueOrElse(getInteger(hq), hr) | |
1955 | + | ([IntegerEntry(hQ, lastBlock.timestamp), IntegerEntry(aM(aa, toBase58String(aG), bN), lastBlock.timestamp), StringEntry(aX(jx), bN), StringEntry(aY(bN), jx)] ++ (if (isDefined(jz)) | |
1901 | 1956 | then nil | |
1902 | - | else ([StringEntry( | |
1957 | + | else ([StringEntry(jy, ag)] ++ (if (isDefined(jA)) | |
1903 | 1958 | then nil | |
1904 | - | else (([StringEntry( | |
1959 | + | else (([StringEntry(fT, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(hq, jB)) :+ jp))))) | |
1905 | 1960 | } | |
1906 | 1961 | } | |
1907 | 1962 | } | |
1908 | 1963 | } | |
1909 | 1964 | } | |
1910 | 1965 | ||
1911 | 1966 | ||
1912 | 1967 | ||
1913 | - | @Callable( | |
1914 | - | func unstakeDuck ( | |
1915 | - | let | |
1916 | - | if ((size( | |
1968 | + | @Callable(eP) | |
1969 | + | func unstakeDuck (jx) = { | |
1970 | + | let jp = jm(eP) | |
1971 | + | if ((size(eP.payments) != 0)) | |
1917 | 1972 | then throw("No payments required") | |
1918 | 1973 | else { | |
1919 | - | let | |
1920 | - | let | |
1921 | - | let | |
1922 | - | let | |
1923 | - | if (!(isDefined(getInteger( | |
1924 | - | then throw((("NFT " + | |
1925 | - | else if (!(isDefined(getString( | |
1926 | - | then throw((("The duck " + | |
1974 | + | let aG = fromBase58String(jx) | |
1975 | + | let bN = toString(eP.caller) | |
1976 | + | let hP = value(assetInfo(aG)) | |
1977 | + | let hQ = aI(toBase58String(aG)) | |
1978 | + | if (!(isDefined(getInteger(hQ)))) | |
1979 | + | then throw((("NFT " + hP.name) + " is not staked")) | |
1980 | + | else if (!(isDefined(getString(aY(bN))))) | |
1981 | + | then throw((("The duck " + hP.name) + " is not staked")) | |
1927 | 1982 | else { | |
1928 | - | let | |
1929 | - | if (( | |
1983 | + | let hS = valueOrErrorMessage(getString(aX(toBase58String(aG))), (("NFT " + hP.name) + " is orphaned")) | |
1984 | + | if ((hS != bN)) | |
1930 | 1985 | then throw("Staked NFT is not yours") | |
1931 | 1986 | else { | |
1932 | - | let | |
1933 | - | let | |
1934 | - | let | |
1935 | - | if (( | |
1936 | - | then throw((("Please heal your duck to " + toString( | |
1937 | - | else [ScriptTransfer( | |
1987 | + | let hq = q(jx) | |
1988 | + | let hr = O(valueOrElse(getInteger(u(jx)), 0)) | |
1989 | + | let Y = valueOrElse(getInteger(hq), hr) | |
1990 | + | if ((hr > Y)) | |
1991 | + | then throw((("Please heal your duck to " + toString(hr)) + "hp before unstaking")) | |
1992 | + | else [ScriptTransfer(eP.caller, 1, aG), DeleteEntry(hQ), DeleteEntry(hq), DeleteEntry(ba(jx)), DeleteEntry(aX(jx)), DeleteEntry(aM(aa, jx, bN)), DeleteEntry(aY(bN)), jp] | |
1938 | 1993 | } | |
1939 | 1994 | } | |
1940 | 1995 | } | |
1941 | 1996 | } | |
1942 | 1997 | ||
1943 | 1998 | ||
1944 | 1999 | ||
1945 | - | @Callable( | |
1946 | - | func claimRes ( | |
1947 | - | let | |
1948 | - | if ((size( | |
2000 | + | @Callable(eP) | |
2001 | + | func claimRes (gx,jC) = { | |
2002 | + | let jp = jm(eP) | |
2003 | + | if ((size(eP.payments) != 0)) | |
1949 | 2004 | then throw("No payments required") | |
1950 | 2005 | else { | |
1951 | - | let b = toString( | |
1952 | - | let | |
1953 | - | let r = valueOrErrorMessage(getString( | |
1954 | - | $Tuple2((((( | |
1955 | - | } | |
1956 | - | } | |
1957 | - | ||
1958 | - | ||
1959 | - | ||
1960 | - | @Callable( | |
1961 | - | func claimResToWH ( | |
1962 | - | let | |
1963 | - | if ((size( | |
2006 | + | let b = toString(eP.originCaller) | |
2007 | + | let dF = hU(b, gx, da, jC) | |
2008 | + | let r = valueOrErrorMessage(getString(aY(b)), "You don't have a duck staked") | |
2009 | + | $Tuple2(((((dF._1 ++ it(r, fraction(C, gx, bF))._1) :+ StringEntry(dF._2, makeString(dF._3, ":"))) :+ StringEntry(dF._4, makeString(dF._5, ":"))) :+ jp), dF._3[aB]) | |
2010 | + | } | |
2011 | + | } | |
2012 | + | ||
2013 | + | ||
2014 | + | ||
2015 | + | @Callable(eP) | |
2016 | + | func claimResToWH (gx,jC) = { | |
2017 | + | let jp = jm(eP) | |
2018 | + | if ((size(eP.payments) != 0)) | |
1964 | 2019 | then throw("No payments required") | |
1965 | 2020 | else { | |
1966 | - | let b = toString( | |
1967 | - | let | |
1968 | - | $Tuple2((((( | |
1969 | - | } | |
1970 | - | } | |
1971 | - | ||
1972 | - | ||
1973 | - | ||
1974 | - | @Callable( | |
1975 | - | func flight ( | |
1976 | - | let | |
1977 | - | if ((size( | |
2021 | + | let b = toString(eP.originCaller) | |
2022 | + | let dF = hU(b, gx, cZ, jC) | |
2023 | + | $Tuple2(((((dF._1 ++ iz(b, fraction(C, gx, bF))._1) :+ StringEntry(dF._2, makeString(dF._3, ":"))) :+ StringEntry(dF._4, makeString(dF._5, ":"))) :+ jp), dF._5[as]) | |
2024 | + | } | |
2025 | + | } | |
2026 | + | ||
2027 | + | ||
2028 | + | ||
2029 | + | @Callable(eP) | |
2030 | + | func flight (hf,hg) = { | |
2031 | + | let jp = jm(eP) | |
2032 | + | if ((size(eP.payments) != 0)) | |
1978 | 2033 | then throw("No payments required") | |
1979 | 2034 | else { | |
1980 | - | let | |
1981 | - | let | |
1982 | - | let r = | |
1983 | - | let | |
1984 | - | let | |
1985 | - | if (( | |
2035 | + | let bd = toString(eP.caller) | |
2036 | + | let fu = he(bd, hf, hg) | |
2037 | + | let r = fu._2 | |
2038 | + | let jy = ba(r) | |
2039 | + | let hM = valueOrElse(getString(jy), ag) | |
2040 | + | if ((fu._4 == hM)) | |
1986 | 2041 | then throw("You can't fly to the same location") | |
1987 | 2042 | else { | |
1988 | - | let | |
1989 | - | let | |
1990 | - | let | |
1991 | - | $Tuple2(([StringEntry( | |
1992 | - | then | |
1993 | - | else | |
1994 | - | then | |
1995 | - | else | |
2043 | + | let hz = w(r) | |
2044 | + | let hA = valueOrElse(getString(hz), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2045 | + | let hB = dG(hA, fu._5) | |
2046 | + | $Tuple2(([StringEntry(jy, if ((fu._1 > 0)) | |
2047 | + | then fu._4 | |
2048 | + | else hM), StringEntry(hz, hB), IntegerEntry(q(r), fu._1), jp] ++ it(r, if ((fu._1 > 0)) | |
2049 | + | then D | |
2050 | + | else E)._1), fu._3) | |
1996 | 2051 | } | |
1997 | 2052 | } | |
1998 | 2053 | } | |
1999 | 2054 | ||
2000 | 2055 | ||
2001 | 2056 | ||
2002 | - | @Callable( | |
2003 | - | func heal ( | |
2004 | - | let | |
2005 | - | if (if (if ((0 > | |
2057 | + | @Callable(eP) | |
2058 | + | func heal (jD,jE,jF) = { | |
2059 | + | let jp = jm(eP) | |
2060 | + | if (if (if ((0 > jD)) | |
2006 | 2061 | then true | |
2007 | - | else (0 > | |
2062 | + | else (0 > jE)) | |
2008 | 2063 | then true | |
2009 | - | else (0 > | |
2064 | + | else (0 > jF)) | |
2010 | 2065 | then throw("Quantity cannot be negative") | |
2011 | 2066 | else { | |
2012 | - | let r = valueOrErrorMessage(getString( | |
2013 | - | let | |
2014 | - | let | |
2015 | - | let | |
2016 | - | let | |
2017 | - | if (( | |
2018 | - | then throw((("HP should be < " + toString( | |
2067 | + | let r = valueOrErrorMessage(getString(aY(toString(eP.caller))), "You don't have a duck staked") | |
2068 | + | let jG = [jD, jE, jF] | |
2069 | + | let hq = q(r) | |
2070 | + | let hr = O(valueOrElse(getInteger(u(r)), 0)) | |
2071 | + | let jH = valueOrElse(getInteger(hq), hr) | |
2072 | + | if ((jH >= hr)) | |
2073 | + | then throw((("HP should be < " + toString(hr)) + " to heal")) | |
2019 | 2074 | else { | |
2020 | - | let | |
2021 | - | let | |
2022 | - | let | |
2075 | + | let fT = aZ(r) | |
2076 | + | let gB = fS(fT) | |
2077 | + | let jI = if ((gB[aD] == "")) | |
2023 | 2078 | then nil | |
2024 | - | else split( | |
2025 | - | func | |
2026 | - | let | |
2027 | - | let | |
2028 | - | then parseIntValue( | |
2079 | + | else split(gB[aD], "_") | |
2080 | + | func jJ (dn,jK) = { | |
2081 | + | let ct = dn._2 | |
2082 | + | let fl = if ((size(jI) > ct)) | |
2083 | + | then parseIntValue(jI[ct]) | |
2029 | 2084 | else 0 | |
2030 | - | if ((3 > | |
2085 | + | if ((3 > ct)) | |
2031 | 2086 | then { | |
2032 | - | let | |
2033 | - | if (( | |
2034 | - | then throw(((("You have only " + toString( | |
2035 | - | else $Tuple3(( | |
2087 | + | let jL = jG[ct] | |
2088 | + | if ((jL > fl)) | |
2089 | + | then throw(((("You have only " + toString(fl)) + " of ") + aj[ct])) | |
2090 | + | else $Tuple3((dn._1 :+ toString((fl - jL))), (ct + 1), (dn._3 + (cA[ct] * jL))) | |
2036 | 2091 | } | |
2037 | - | else $Tuple3(( | |
2092 | + | else $Tuple3((dn._1 :+ toString(fl)), (ct + 1), dn._3) | |
2038 | 2093 | } | |
2039 | 2094 | ||
2040 | - | let | |
2041 | - | let | |
2042 | - | let | |
2043 | - | let | |
2044 | - | func | |
2045 | - | then | |
2046 | - | else | |
2047 | - | ||
2048 | - | func | |
2049 | - | then | |
2095 | + | let dF = { | |
2096 | + | let dp = am | |
2097 | + | let dq = size(dp) | |
2098 | + | let dr = $Tuple3(nil, 0, 0) | |
2099 | + | func ds (dt,du) = if ((du >= dq)) | |
2100 | + | then dt | |
2101 | + | else jJ(dt, dp[du]) | |
2102 | + | ||
2103 | + | func dv (dt,du) = if ((du >= dq)) | |
2104 | + | then dt | |
2050 | 2105 | else throw("List size exceeds 50") | |
2051 | 2106 | ||
2052 | - | | |
2107 | + | dv(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(dr, 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) | |
2053 | 2108 | } | |
2054 | - | let | |
2055 | - | $Tuple2(([IntegerEntry( | |
2109 | + | let jM = min([hr, (jH + dF._3)]) | |
2110 | + | $Tuple2(([IntegerEntry(hq, jM), StringEntry(fT, makeString_2C([gB[aA], gB[aB], gB[aC], makeString(dF._1, "_")], ":")), jp] ++ it(r, (L * ((jD + jE) + jF)))._1), jM) | |
2056 | 2111 | } | |
2057 | 2112 | } | |
2058 | 2113 | } | |
2059 | 2114 | ||
2060 | 2115 | ||
2061 | 2116 | ||
2062 | - | @Callable( | |
2117 | + | @Callable(eP) | |
2063 | 2118 | func healES () = { | |
2064 | - | let | |
2065 | - | if ((size( | |
2119 | + | let jp = jm(eP) | |
2120 | + | if ((size(eP.payments) != 1)) | |
2066 | 2121 | then throw("Exactly one payment required") | |
2067 | 2122 | else { | |
2068 | - | let | |
2069 | - | if (( | |
2123 | + | let jq = value(eP.payments[0]) | |
2124 | + | if ((jq.assetId != by)) | |
2070 | 2125 | then throw("Allowed USDT payment only!") | |
2071 | 2126 | else { | |
2072 | - | let r = valueOrErrorMessage(getString( | |
2073 | - | let | |
2074 | - | let | |
2075 | - | let | |
2076 | - | if (( | |
2127 | + | let r = valueOrErrorMessage(getString(aY(toString(eP.caller))), "You don't have a duck staked") | |
2128 | + | let hq = q(r) | |
2129 | + | let hr = O(valueOrElse(getInteger(u(r)), 0)) | |
2130 | + | let jH = valueOrElse(getInteger(hq), hr) | |
2131 | + | if ((jH > 0)) | |
2077 | 2132 | then throw("HP should be 0 to call Emergency Service") | |
2078 | 2133 | else { | |
2079 | - | let | |
2080 | - | let | |
2081 | - | let | |
2134 | + | let fT = aZ(r) | |
2135 | + | let gB = fS(fT) | |
2136 | + | let jI = if ((gB[aD] == "")) | |
2082 | 2137 | then nil | |
2083 | - | else split( | |
2084 | - | let | |
2085 | - | then parseIntValue( | |
2138 | + | else split(gB[aD], "_") | |
2139 | + | let jN = if ((size(jI) > 0)) | |
2140 | + | then parseIntValue(jI[0]) | |
2086 | 2141 | else 0 | |
2087 | - | let | |
2088 | - | then parseIntValue( | |
2142 | + | let jO = if ((size(jI) > 1)) | |
2143 | + | then parseIntValue(jI[1]) | |
2089 | 2144 | else 0 | |
2090 | - | let | |
2091 | - | then parseIntValue( | |
2145 | + | let jP = if ((size(jI) > 2)) | |
2146 | + | then parseIntValue(jI[2]) | |
2092 | 2147 | else 0 | |
2093 | - | if (if (if (( | |
2148 | + | if (if (if ((jN > 0)) | |
2094 | 2149 | then true | |
2095 | - | else ( | |
2150 | + | else (jO > 0)) | |
2096 | 2151 | then true | |
2097 | - | else ( | |
2152 | + | else (jP > 0)) | |
2098 | 2153 | then throw("You have to use own Medical Kit") | |
2099 | 2154 | else { | |
2100 | - | let | |
2101 | - | let | |
2102 | - | then split(value( | |
2155 | + | let jQ = getString(cc, be()) | |
2156 | + | let jR = if (isDefined(jQ)) | |
2157 | + | then split(value(jQ), "_") | |
2103 | 2158 | else nil | |
2104 | - | let | |
2105 | - | then parseIntValue( | |
2159 | + | let jS = if ((size(jR) > 0)) | |
2160 | + | then parseIntValue(jR[0]) | |
2106 | 2161 | else 0 | |
2107 | - | if ((0 >= | |
2162 | + | if ((0 >= jS)) | |
2108 | 2163 | then throw("There are no Medical Kits L1 at Emergency Service storage") | |
2109 | 2164 | else { | |
2110 | - | let | |
2111 | - | let | |
2112 | - | let | |
2113 | - | let | |
2114 | - | let | |
2115 | - | if (( | |
2116 | - | then throw(("Payment attached should be " + toString( | |
2165 | + | let jM = (jH + cA[0]) | |
2166 | + | let jT = makeString([toString((jS - 1)), removeByIndex(jR, 0)], "_") | |
2167 | + | let bv = split(am[0], "_") | |
2168 | + | let jU = bu(bv) | |
2169 | + | let jV = fraction((jU * ai), ah, (bF * aq)) | |
2170 | + | if ((jq.amount != jV)) | |
2171 | + | then throw(("Payment attached should be " + toString(jV))) | |
2117 | 2172 | else { | |
2118 | - | let | |
2119 | - | $Tuple2(([IntegerEntry( | |
2173 | + | let dF = cp(invoke(cc, "updateEsStorage", [jT], [AttachedPayment(by, jV)])) | |
2174 | + | $Tuple2(([IntegerEntry(hq, jM), jp] ++ it(r, F)._1), dF) | |
2120 | 2175 | } | |
2121 | 2176 | } | |
2122 | 2177 | } | |
2123 | 2178 | } | |
2124 | 2179 | } | |
2125 | 2180 | } | |
2126 | 2181 | } | |
2127 | 2182 | ||
2128 | 2183 | ||
2129 | 2184 | ||
2130 | - | @Callable( | |
2131 | - | func updateBackpack (r, | |
2185 | + | @Callable(eP) | |
2186 | + | func updateBackpack (r,jW) = if ((eP.caller != cc)) | |
2132 | 2187 | then throw("permission denied") | |
2133 | - | else $Tuple2([StringEntry( | |
2134 | - | ||
2135 | - | ||
2136 | - | ||
2137 | - | @Callable( | |
2188 | + | else $Tuple2([StringEntry(aZ(r), jW)], jW) | |
2189 | + | ||
2190 | + | ||
2191 | + | ||
2192 | + | @Callable(eP) | |
2138 | 2193 | func commitForRandom () = { | |
2139 | - | let | |
2140 | - | let | |
2141 | - | let b = toString( | |
2142 | - | $Tuple2(([IntegerEntry( | |
2143 | - | } | |
2144 | - | ||
2145 | - | ||
2146 | - | ||
2147 | - | @Callable( | |
2194 | + | let jp = jm(eP) | |
2195 | + | let jX = (height + ck) | |
2196 | + | let b = toString(eP.caller) | |
2197 | + | $Tuple2(([IntegerEntry(cl(b), jX)] :+ jp), jX) | |
2198 | + | } | |
2199 | + | ||
2200 | + | ||
2201 | + | ||
2202 | + | @Callable(eP) | |
2148 | 2203 | func buySLand () = { | |
2149 | - | let | |
2150 | - | if ((size( | |
2204 | + | let jp = jm(eP) | |
2205 | + | if ((size(eP.payments) != 1)) | |
2151 | 2206 | then throw("Exactly one payment required") | |
2152 | 2207 | else { | |
2153 | - | let | |
2154 | - | if (( | |
2208 | + | let jq = value(eP.payments[0]) | |
2209 | + | if ((jq.assetId != by)) | |
2155 | 2210 | then throw("Allowed USDT payment only!") | |
2156 | - | else if (( | |
2157 | - | then throw(("Payment attached should be " + toString( | |
2211 | + | else if ((jq.amount != cG)) | |
2212 | + | then throw(("Payment attached should be " + toString(cG))) | |
2158 | 2213 | else { | |
2159 | - | let | |
2160 | - | $Tuple2(((( | |
2214 | + | let dF = gW(eP.caller, eP.transactionId) | |
2215 | + | $Tuple2((((dF._1 :+ ScriptTransfer(cc, jq.amount, by)) ++ iz(toString(eP.caller), H)._1) :+ jp), dF._2._1) | |
2161 | 2216 | } | |
2162 | 2217 | } | |
2163 | 2218 | } | |
2164 | 2219 | ||
2165 | 2220 | ||
2166 | 2221 | ||
2167 | - | @Callable( | |
2168 | - | func expedition ( | |
2169 | - | let | |
2170 | - | if ((size( | |
2222 | + | @Callable(eP) | |
2223 | + | func expedition (hf,hg) = { | |
2224 | + | let jp = jm(eP) | |
2225 | + | if ((size(eP.payments) != 0)) | |
2171 | 2226 | then throw("No payments required") | |
2172 | 2227 | else { | |
2173 | - | let | |
2174 | - | let r = valueOrErrorMessage(getString( | |
2175 | - | $Tuple2((( | |
2176 | - | } | |
2177 | - | } | |
2178 | - | ||
2179 | - | ||
2180 | - | ||
2181 | - | @Callable( | |
2182 | - | func upgradeInfra ( | |
2183 | - | let | |
2184 | - | if ((size( | |
2228 | + | let dF = hw(eP.caller, eP.transactionId, hf, hg) | |
2229 | + | let r = valueOrErrorMessage(getString(aY(toString(eP.caller))), "You don't have a duck staked") | |
2230 | + | $Tuple2(((dF._1 ++ it(r, H)._1) :+ jp), $Tuple2(dF._2, dF._3)) | |
2231 | + | } | |
2232 | + | } | |
2233 | + | ||
2234 | + | ||
2235 | + | ||
2236 | + | @Callable(eP) | |
2237 | + | func upgradeInfra (aQ) = { | |
2238 | + | let jp = jm(eP) | |
2239 | + | if ((size(eP.payments) != 0)) | |
2185 | 2240 | then throw("No payments required") | |
2186 | 2241 | else { | |
2187 | - | let | |
2188 | - | let r = valueOrErrorMessage(getString( | |
2189 | - | $Tuple2((( | |
2190 | - | } | |
2191 | - | } | |
2192 | - | ||
2193 | - | ||
2194 | - | ||
2195 | - | @Callable( | |
2196 | - | func activateArtifact ( | |
2197 | - | let | |
2198 | - | if ((size( | |
2242 | + | let dF = ih(true, eP.caller, 0, aQ) | |
2243 | + | let r = valueOrErrorMessage(getString(aY(toString(eP.caller))), "You don't have a duck staked") | |
2244 | + | $Tuple2(((dF._1 :+ jp) ++ it(r, fraction(I, dF._3, bF))._1), dF._2) | |
2245 | + | } | |
2246 | + | } | |
2247 | + | ||
2248 | + | ||
2249 | + | ||
2250 | + | @Callable(eP) | |
2251 | + | func activateArtifact (jY,jZ) = { | |
2252 | + | let jp = jm(eP) | |
2253 | + | if ((size(eP.payments) != 0)) | |
2199 | 2254 | then throw("No payments required") | |
2200 | 2255 | else { | |
2201 | - | let b = toString( | |
2202 | - | let | |
2203 | - | let | |
2204 | - | if (("PRESALE" == | |
2205 | - | then | |
2206 | - | else if (("ONBOARD" == | |
2207 | - | then | |
2256 | + | let b = toString(eP.caller) | |
2257 | + | let dF = { | |
2258 | + | let bz = jY | |
2259 | + | if (("PRESALE" == bz)) | |
2260 | + | then iH(b, jZ) | |
2261 | + | else if (("ONBOARD" == bz)) | |
2262 | + | then iA(b) | |
2208 | 2263 | else throw("Unknown artifact") | |
2209 | 2264 | } | |
2210 | - | ( | |
2211 | - | } | |
2212 | - | } | |
2213 | - | ||
2214 | - | ||
2215 | - | ||
2216 | - | @Callable( | |
2217 | - | func mergeLands ( | |
2218 | - | let | |
2219 | - | if ((size( | |
2265 | + | (dF :+ jp) | |
2266 | + | } | |
2267 | + | } | |
2268 | + | ||
2269 | + | ||
2270 | + | ||
2271 | + | @Callable(eP) | |
2272 | + | func mergeLands (iM) = { | |
2273 | + | let jp = jm(eP) | |
2274 | + | if ((size(eP.payments) != 0)) | |
2220 | 2275 | then throw("No payments required") | |
2221 | 2276 | else { | |
2222 | - | let | |
2223 | - | $Tuple2((( | |
2224 | - | } | |
2225 | - | } | |
2226 | - | ||
2227 | - | ||
2228 | - | ||
2229 | - | @Callable( | |
2230 | - | func cargoExchange ( | |
2231 | - | let | |
2232 | - | if ((size( | |
2277 | + | let dF = jh(toString(eP.caller), iM) | |
2278 | + | $Tuple2(((dF._1 :+ jp) ++ iz(toString(eP.caller), J)._1), dF._2) | |
2279 | + | } | |
2280 | + | } | |
2281 | + | ||
2282 | + | ||
2283 | + | ||
2284 | + | @Callable(eP) | |
2285 | + | func cargoExchange (ka,aQ) = { | |
2286 | + | let jp = jm(eP) | |
2287 | + | if ((size(eP.payments) != 0)) | |
2233 | 2288 | then throw("No payments required") | |
2234 | 2289 | else { | |
2235 | - | let | |
2236 | - | let b = toString( | |
2237 | - | let | |
2238 | - | let | |
2239 | - | if (!(isDefined(getInteger( | |
2240 | - | then throw(( | |
2290 | + | let gA = split_4C(ka, ":") | |
2291 | + | let b = toString(eP.originCaller) | |
2292 | + | let hP = value(assetInfo(fromBase58String(aQ))) | |
2293 | + | let hQ = aI(aQ) | |
2294 | + | if (!(isDefined(getInteger(hQ)))) | |
2295 | + | then throw((hP.name + " is not staked")) | |
2241 | 2296 | else { | |
2242 | - | let | |
2243 | - | if (( | |
2244 | - | then throw(( | |
2297 | + | let hS = valueOrErrorMessage(getString(aF(aQ)), (("NFT " + hP.name) + " is orphaned")) | |
2298 | + | if ((hS != b)) | |
2299 | + | then throw((Z + " is not yours")) | |
2245 | 2300 | else { | |
2246 | - | let | |
2247 | - | let | |
2248 | - | let r = valueOrErrorMessage(getString( | |
2249 | - | let | |
2250 | - | let | |
2251 | - | if (( | |
2252 | - | then throw((("Duck location type is " + | |
2253 | - | else if (( | |
2254 | - | then throw(("Duck should be on the land " + | |
2301 | + | let gj = (cu(split(hP.description, "_")[ch]) / bG) | |
2302 | + | let gk = valueOrElse(getInteger(aJ(aQ)), 0) | |
2303 | + | let r = valueOrErrorMessage(getString(aY(b)), "You don't have a duck staked") | |
2304 | + | let hM = valueOrElse(getString(ba(r)), ag) | |
2305 | + | let hN = split(value(hM), "_") | |
2306 | + | if ((hN[bs] != "L")) | |
2307 | + | then throw((("Duck location type is " + hN[bs]) + ", but should be L")) | |
2308 | + | else if ((hN[bt] != aQ)) | |
2309 | + | then throw(("Duck should be on the land " + aQ)) | |
2255 | 2310 | else { | |
2256 | - | let | |
2257 | - | let | |
2258 | - | let | |
2259 | - | let | |
2260 | - | let | |
2261 | - | let | |
2262 | - | let | |
2263 | - | let | |
2264 | - | [StringEntry( | |
2311 | + | let gi = aP(aQ) | |
2312 | + | let fY = gh(gi, gj, gk) | |
2313 | + | let fT = aZ(r) | |
2314 | + | let gB = fS(fT) | |
2315 | + | let dF = gz(gA, fY, gB) | |
2316 | + | let gq = split(fY[av], "_") | |
2317 | + | let ie = (parseIntValue(gq[ax]) + dF._7) | |
2318 | + | let if = (parseIntValue(gq[ay]) - dF._7) | |
2319 | + | [StringEntry(fT, makeString_2C([gB[aA], dF._4, dF._5, dF._6], ":")), StringEntry(gi, makeString_2C([fY[ar], dF._1, dF._2, dF._3, makeString([gq[aw], toString(ie), toString(if), gq[az]], "_")], ":")), jp] | |
2265 | 2320 | } | |
2266 | 2321 | } | |
2267 | 2322 | } | |
2268 | 2323 | } | |
2269 | 2324 | } | |
2270 | 2325 | ||
2271 | 2326 | ||
2272 | 2327 | ||
2273 | - | @Callable( | |
2274 | - | func saveWarehouse ( | |
2328 | + | @Callable(eP) | |
2329 | + | func saveWarehouse (gm,aQ) = if ((eP.caller != cc)) | |
2275 | 2330 | then throw("Access denied") | |
2276 | 2331 | else { | |
2277 | - | let | |
2278 | - | let | |
2279 | - | if ((size( | |
2332 | + | let gi = aP(aQ) | |
2333 | + | let gn = split_4C(gm, ":") | |
2334 | + | if ((size(gn) != 5)) | |
2280 | 2335 | then throw("warehouse string should contain 4 ':' separators") | |
2281 | 2336 | else { | |
2282 | - | let | |
2283 | - | let | |
2284 | - | let | |
2285 | - | let | |
2286 | - | let | |
2287 | - | $Tuple2([StringEntry( | |
2337 | + | let kb = split(gn[av], "_")[aw] | |
2338 | + | let ie = fX(gn) | |
2339 | + | let kc = fV(gn[ar]) | |
2340 | + | let if = ((kc - parseIntValue(kb)) - ie) | |
2341 | + | let kd = makeString_2C([gn[ar], gn[as], gn[at], gn[au], makeString([kb, toString(ie), toString(if), toString(kc)], "_")], ":") | |
2342 | + | $Tuple2([StringEntry(gi, kd)], kd) | |
2288 | 2343 | } | |
2289 | 2344 | } | |
2290 | 2345 | ||
2291 | 2346 | ||
2292 | 2347 | ||
2293 | - | @Callable( | |
2294 | - | func fixWarehouseFormat ( | |
2348 | + | @Callable(eP) | |
2349 | + | func fixWarehouseFormat (aQ) = if ((eP.caller != cb)) | |
2295 | 2350 | then throw("Access denied") | |
2296 | 2351 | else { | |
2297 | - | let | |
2298 | - | let | |
2299 | - | let | |
2300 | - | let | |
2301 | - | let | |
2302 | - | let | |
2303 | - | let | |
2304 | - | let | |
2305 | - | let | |
2306 | - | let | |
2307 | - | $Tuple2([StringEntry( | |
2308 | - | } | |
2309 | - | ||
2310 | - | ||
2311 | - | ||
2312 | - | @Callable( | |
2313 | - | func fixStakedPieces ( | |
2352 | + | let gi = aP(aQ) | |
2353 | + | let hP = value(assetInfo(fromBase58String(aQ))) | |
2354 | + | let gj = (cu(split(hP.description, "_")[ch]) / bG) | |
2355 | + | let gk = valueOrElse(getInteger(aJ(aQ)), 0) | |
2356 | + | let gn = gh(gi, gj, gk) | |
2357 | + | let kb = cs(invoke(cc, "recalcLockedVolumeREADONLY", [aQ, gn], nil)) | |
2358 | + | let ie = fX(gn) | |
2359 | + | let kc = fV(gn[ar]) | |
2360 | + | let if = ((kc - kb) - ie) | |
2361 | + | let kd = makeString_2C([gn[ar], gn[as], gn[at], gn[au], makeString([toString(kb), toString(ie), toString(if), toString(kc)], "_")], ":") | |
2362 | + | $Tuple2([StringEntry(gi, kd)], kd) | |
2363 | + | } | |
2364 | + | ||
2365 | + | ||
2366 | + | ||
2367 | + | @Callable(eP) | |
2368 | + | func fixStakedPieces (bN) = if ((eP.caller != cb)) | |
2314 | 2369 | then throw("Access denied") | |
2315 | 2370 | else { | |
2316 | - | let | |
2371 | + | let jc = if ((bN == "")) | |
2317 | 2372 | then 0 | |
2318 | 2373 | else { | |
2319 | - | let | |
2320 | - | let | |
2321 | - | then split_51C(value( | |
2374 | + | let iX = getString(V, cn(bN)) | |
2375 | + | let iT = if (isDefined(iX)) | |
2376 | + | then split_51C(value(iX), "_") | |
2322 | 2377 | else nil | |
2323 | - | func | |
2324 | - | let | |
2325 | - | let | |
2326 | - | ( | |
2378 | + | func ke (dn,aQ) = { | |
2379 | + | let hP = value(assetInfo(fromBase58String(aQ))) | |
2380 | + | let cv = split(hP.description, "_")[ch] | |
2381 | + | (dn + cu(cv)) | |
2327 | 2382 | } | |
2328 | 2383 | ||
2329 | - | let | |
2330 | - | let | |
2331 | - | let | |
2332 | - | func | |
2333 | - | then | |
2334 | - | else | |
2335 | - | ||
2336 | - | func | |
2337 | - | then | |
2384 | + | let dp = iT | |
2385 | + | let dq = size(dp) | |
2386 | + | let dr = 0 | |
2387 | + | func ds (dt,du) = if ((du >= dq)) | |
2388 | + | then dt | |
2389 | + | else ke(dt, dp[du]) | |
2390 | + | ||
2391 | + | func dv (dt,du) = if ((du >= dq)) | |
2392 | + | then dt | |
2338 | 2393 | else throw("List size exceeds 100") | |
2339 | 2394 | ||
2340 | - | | |
2395 | + | dv(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(ds(dr, 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) | |
2341 | 2396 | } | |
2342 | - | $Tuple2([IntegerEntry( | |
2343 | - | } | |
2344 | - | ||
2345 | - | ||
2346 | - | ||
2347 | - | @Callable( | |
2348 | - | func setCustomName ( | |
2349 | - | let | |
2350 | - | if ((size( | |
2397 | + | $Tuple2([IntegerEntry(co(bN), jc)], jc) | |
2398 | + | } | |
2399 | + | ||
2400 | + | ||
2401 | + | ||
2402 | + | @Callable(eP) | |
2403 | + | func setCustomName (aG,iV,aL) = { | |
2404 | + | let jp = jm(eP) | |
2405 | + | if ((size(eP.payments) != 1)) | |
2351 | 2406 | then throw("Exactly one payment required") | |
2352 | 2407 | else { | |
2353 | - | let | |
2354 | - | if (( | |
2408 | + | let jq = value(eP.payments[0]) | |
2409 | + | if ((jq.assetId != by)) | |
2355 | 2410 | then throw("Allowed USDT payment only!") | |
2356 | - | else if (( | |
2357 | - | then throw(("Payment should be " + toString( | |
2358 | - | else if (contains( | |
2359 | - | then throw(("Name should not contain '__': " + | |
2360 | - | else if ((size( | |
2361 | - | then throw(("Name too long, maxLength=" + toString( | |
2411 | + | else if ((jq.amount != cC)) | |
2412 | + | then throw(("Payment should be " + toString(cC))) | |
2413 | + | else if (contains(iV, "__")) | |
2414 | + | then throw(("Name should not contain '__': " + iV)) | |
2415 | + | else if ((size(iV) > cD)) | |
2416 | + | then throw(("Name too long, maxLength=" + toString(cD))) | |
2362 | 2417 | else { | |
2363 | - | let b = toString( | |
2364 | - | let | |
2365 | - | let | |
2366 | - | if (("ACCOUNT" == | |
2418 | + | let b = toString(eP.originCaller) | |
2419 | + | let kf = { | |
2420 | + | let bz = aL | |
2421 | + | if (("ACCOUNT" == bz)) | |
2367 | 2422 | then { | |
2368 | - | let | |
2369 | - | let | |
2370 | - | if (isDefined( | |
2371 | - | then throw(("Name already registered: " + | |
2423 | + | let kg = cX(iV) | |
2424 | + | let kh = getString(kg) | |
2425 | + | if (isDefined(kh)) | |
2426 | + | then throw(("Name already registered: " + iV)) | |
2372 | 2427 | else { | |
2373 | - | let | |
2374 | - | let | |
2375 | - | let | |
2376 | - | then [DeleteEntry( | |
2428 | + | let ki = aS(b) | |
2429 | + | let kj = getString(ki) | |
2430 | + | let kk = if (isDefined(kj)) | |
2431 | + | then [DeleteEntry(cX(value(kj)))] | |
2377 | 2432 | else nil | |
2378 | - | ((( | |
2433 | + | (((kk :+ StringEntry(ki, iV)) :+ StringEntry(kg, b)) ++ iz(b, G)._1) | |
2379 | 2434 | } | |
2380 | 2435 | } | |
2381 | - | else if (("LAND" == | |
2436 | + | else if (("LAND" == bz)) | |
2382 | 2437 | then { | |
2383 | - | let | |
2384 | - | let | |
2385 | - | if (!(isDefined(getInteger( | |
2386 | - | then throw(( | |
2438 | + | let hP = value(assetInfo(fromBase58String(aG))) | |
2439 | + | let hQ = aI(aG) | |
2440 | + | if (!(isDefined(getInteger(hQ)))) | |
2441 | + | then throw((hP.name + " is not staked")) | |
2387 | 2442 | else { | |
2388 | - | let | |
2389 | - | if (( | |
2390 | - | then throw(( | |
2443 | + | let hS = valueOrErrorMessage(getString(aF(aG)), (("NFT " + hP.name) + " is orphaned")) | |
2444 | + | if ((hS != b)) | |
2445 | + | then throw((Z + " is not yours")) | |
2391 | 2446 | else { | |
2392 | - | let | |
2393 | - | let | |
2394 | - | if (isDefined( | |
2395 | - | then throw(("Name already registered: " + | |
2447 | + | let kg = cR(iV) | |
2448 | + | let kh = getString(kg) | |
2449 | + | if (isDefined(kh)) | |
2450 | + | then throw(("Name already registered: " + iV)) | |
2396 | 2451 | else { | |
2397 | - | let | |
2398 | - | let | |
2399 | - | let | |
2400 | - | then [DeleteEntry( | |
2452 | + | let kl = aH(aG) | |
2453 | + | let kj = getString(kl) | |
2454 | + | let kk = if (isDefined(kj)) | |
2455 | + | then [DeleteEntry(cR(value(kj)))] | |
2401 | 2456 | else nil | |
2402 | - | ((( | |
2457 | + | (((kk :+ StringEntry(kl, iV)) :+ StringEntry(kg, aG)) ++ iz(b, G)._1) | |
2403 | 2458 | } | |
2404 | 2459 | } | |
2405 | 2460 | } | |
2406 | 2461 | } | |
2407 | - | else if (("DUCK" == | |
2462 | + | else if (("DUCK" == bz)) | |
2408 | 2463 | then { | |
2409 | - | let | |
2410 | - | let | |
2411 | - | if (if (!(isDefined(getInteger( | |
2464 | + | let hP = value(assetInfo(fromBase58String(aG))) | |
2465 | + | let hQ = aI(aG) | |
2466 | + | if (if (!(isDefined(getInteger(hQ)))) | |
2412 | 2467 | then true | |
2413 | - | else !(isDefined(getString( | |
2414 | - | then throw(( | |
2468 | + | else !(isDefined(getString(aY(b))))) | |
2469 | + | then throw((hP.name + " is not staked")) | |
2415 | 2470 | else { | |
2416 | - | let | |
2417 | - | if (( | |
2418 | - | then throw(( | |
2471 | + | let hS = valueOrErrorMessage(getString(aX(aG)), (("NFT " + hP.name) + " is orphaned")) | |
2472 | + | if ((hS != b)) | |
2473 | + | then throw((aa + " is not yours")) | |
2419 | 2474 | else { | |
2420 | - | let | |
2421 | - | let | |
2422 | - | if (isDefined( | |
2423 | - | then throw(("Name already registered: " + | |
2475 | + | let kg = cW(iV) | |
2476 | + | let kh = getString(kg) | |
2477 | + | if (isDefined(kh)) | |
2478 | + | then throw(("Name already registered: " + iV)) | |
2424 | 2479 | else { | |
2425 | - | let | |
2426 | - | let | |
2427 | - | let | |
2428 | - | then [DeleteEntry( | |
2480 | + | let kl = aR(aG) | |
2481 | + | let kj = getString(kl) | |
2482 | + | let kk = if (isDefined(kj)) | |
2483 | + | then [DeleteEntry(cW(value(kj)))] | |
2429 | 2484 | else nil | |
2430 | - | ((( | |
2485 | + | (((kk :+ StringEntry(kl, iV)) :+ StringEntry(kg, aG)) ++ it(aG, G)._1) | |
2431 | 2486 | } | |
2432 | 2487 | } | |
2433 | 2488 | } | |
2434 | 2489 | } | |
2435 | 2490 | else throw("Unknown entity type") | |
2436 | 2491 | } | |
2437 | - | $Tuple2((( | |
2492 | + | $Tuple2(((kf :+ ScriptTransfer(cc, jq.amount, by)) :+ jp), 0) | |
2438 | 2493 | } | |
2439 | 2494 | } | |
2440 | 2495 | } | |
2441 | 2496 | ||
2442 | 2497 | ||
2443 | 2498 | ||
2444 | - | @Callable( | |
2445 | - | func setReferrals ( | |
2499 | + | @Callable(eP) | |
2500 | + | func setReferrals (km,kn) = if ((eP.callerPublicKey != cz)) | |
2446 | 2501 | then throw("Permission denied") | |
2447 | 2502 | else { | |
2448 | - | let | |
2449 | - | if ((size( | |
2503 | + | let jp = jm(eP) | |
2504 | + | if ((size(eP.payments) != 0)) | |
2450 | 2505 | then throw("No payments required") | |
2451 | - | else if (!(isDefined(addressFromString( | |
2452 | - | then throw(("Invalid address: " + | |
2453 | - | else if (!(isDefined(addressFromString( | |
2454 | - | then throw(("Invalid address: " + | |
2506 | + | else if (!(isDefined(addressFromString(km)))) | |
2507 | + | then throw(("Invalid address: " + km)) | |
2508 | + | else if (!(isDefined(addressFromString(kn)))) | |
2509 | + | then throw(("Invalid address: " + kn)) | |
2455 | 2510 | else { | |
2456 | - | let | |
2457 | - | let | |
2458 | - | let | |
2459 | - | then split_4C(value( | |
2511 | + | let ko = cY() | |
2512 | + | let kp = getString(ko) | |
2513 | + | let kq = if (isDefined(kp)) | |
2514 | + | then split_4C(value(kp), "_") | |
2460 | 2515 | else nil | |
2461 | - | if (containsElement( | |
2462 | - | then throw(( | |
2516 | + | if (containsElement(kq, kn)) | |
2517 | + | then throw((kn + " is not newbie (already has referrals)")) | |
2463 | 2518 | else { | |
2464 | - | let | |
2465 | - | let | |
2466 | - | if (if (isDefined( | |
2467 | - | then isDefined(addressFromString(value( | |
2519 | + | let iB = aT(kn) | |
2520 | + | let iC = getString(iB) | |
2521 | + | if (if (isDefined(iC)) | |
2522 | + | then isDefined(addressFromString(value(iC))) | |
2468 | 2523 | else false) | |
2469 | - | then throw((( | |
2524 | + | then throw(((kn + " already has refBy: ") + value(iC))) | |
2470 | 2525 | else { | |
2471 | - | let | |
2472 | - | let | |
2473 | - | let | |
2474 | - | then split_4C(value( | |
2526 | + | let kr = aW(km) | |
2527 | + | let ks = getString(kr) | |
2528 | + | let kt = if (isDefined(ks)) | |
2529 | + | then split_4C(value(ks), "_") | |
2475 | 2530 | else nil | |
2476 | - | if (containsElement( | |
2477 | - | then throw(((( | |
2531 | + | if (containsElement(kt, kn)) | |
2532 | + | then throw((((km + " already contains ") + kn) + " within referrals")) | |
2478 | 2533 | else { | |
2479 | - | let | |
2480 | - | let | |
2481 | - | then value( | |
2482 | - | else makeString_2C(( | |
2483 | - | $Tuple2([StringEntry( | |
2534 | + | let ku = makeString_2C((kt :+ kn), "_") | |
2535 | + | let kv = if (containsElement(kq, km)) | |
2536 | + | then value(kp) | |
2537 | + | else makeString_2C((kq :+ km), "_") | |
2538 | + | $Tuple2([StringEntry(iB, km), StringEntry(kr, ku), StringEntry(ko, kv), jp], 0) | |
2484 | 2539 | } | |
2485 | 2540 | } | |
2486 | 2541 | } | |
2487 | 2542 | } | |
2488 | 2543 | } | |
2489 | 2544 | ||
2490 | 2545 | ||
2491 | 2546 | ||
2492 | - | @Callable( | |
2493 | - | func distributePoints ( | |
2494 | - | let | |
2495 | - | if ((size( | |
2547 | + | @Callable(eP) | |
2548 | + | func distributePoints (kw,kx,ky,kz,kA) = { | |
2549 | + | let jp = jm(eP) | |
2550 | + | if ((size(eP.payments) != 0)) | |
2496 | 2551 | then throw("No payments required") | |
2497 | 2552 | else { | |
2498 | - | let b = toString( | |
2499 | - | let r = valueOrErrorMessage(getString( | |
2500 | - | let | |
2501 | - | let | |
2502 | - | let | |
2503 | - | let | |
2504 | - | let | |
2505 | - | let | |
2506 | - | if (( | |
2507 | - | then throw((("There are only " + toString( | |
2553 | + | let b = toString(eP.originCaller) | |
2554 | + | let r = valueOrErrorMessage(getString(aY(b)), "You don't have a duck staked") | |
2555 | + | let kB = z(b) | |
2556 | + | let kC = valueOrElse(getInteger(V, kB), 0) | |
2557 | + | let kD = v(r) | |
2558 | + | let kE = valueOrElse(getInteger(V, kD), 0) | |
2559 | + | let kF = (kC + kE) | |
2560 | + | let kG = ((((kw + kx) + ky) + kz) + kA) | |
2561 | + | if ((kG > kF)) | |
2562 | + | then throw((("There are only " + toString(kF)) + " free points to distribute")) | |
2508 | 2563 | else { | |
2509 | - | let | |
2510 | - | let | |
2511 | - | let | |
2512 | - | $Tuple2([IntegerEntry( | |
2564 | + | let kH = s(r) | |
2565 | + | let W = split(valueOrElse(getString(V, kH), "0_0_0_0_0"), "_") | |
2566 | + | let kI = (kC - kG) | |
2567 | + | $Tuple2([IntegerEntry(kB, if ((0 > kI)) | |
2513 | 2568 | then 0 | |
2514 | - | else | |
2515 | - | then ( | |
2516 | - | else | |
2569 | + | else kI), IntegerEntry(kD, if ((0 > kI)) | |
2570 | + | then (kE + kI) | |
2571 | + | else kE), StringEntry(kH, makeString([toString((parseIntValue(W[h]) + kw)), toString((parseIntValue(W[i]) + kx)), toString((parseIntValue(W[j]) + ky)), toString((parseIntValue(W[k]) + kz)), toString((parseIntValue(W[l]) + kA))], "_")), jp], 0) | |
2517 | 2572 | } | |
2518 | 2573 | } | |
2519 | 2574 | } | |
2520 | 2575 | ||
2521 | 2576 | ||
2522 | 2577 | ||
2523 | - | @Callable( | |
2524 | - | func splitByGlobalWeightsREADONLY ( | |
2525 | - | ||
2526 | - | ||
2527 | - | ||
2528 | - | @Callable( | |
2529 | - | func splitByGlobalAndLocalWeightsREADONLY ( | |
2530 | - | let | |
2531 | - | $Tuple2(nil, $Tuple2( | |
2532 | - | } | |
2533 | - | ||
2534 | - | ||
2535 | - | ||
2536 | - | @Callable( | |
2537 | - | func getBackpackREADONLY (r) = $Tuple2(nil, makeString( | |
2538 | - | ||
2539 | - | ||
2540 | - | ||
2541 | - | @Callable( | |
2542 | - | func getWarehouseREADONLY ( | |
2543 | - | let | |
2544 | - | let | |
2545 | - | let | |
2546 | - | $Tuple2(nil, makeString_2C( | |
2547 | - | } | |
2548 | - | ||
2549 | - | ||
2550 | - | ||
2551 | - | @Callable( | |
2578 | + | @Callable(eP) | |
2579 | + | func splitByGlobalWeightsREADONLY (gx) = $Tuple2(nil, dw(gx)) | |
2580 | + | ||
2581 | + | ||
2582 | + | ||
2583 | + | @Callable(eP) | |
2584 | + | func splitByGlobalAndLocalWeightsREADONLY (kJ,kK,eS) = { | |
2585 | + | let eL = eR(eS) | |
2586 | + | $Tuple2(nil, $Tuple2(dw(kJ), dh(kK, eL))) | |
2587 | + | } | |
2588 | + | ||
2589 | + | ||
2590 | + | ||
2591 | + | @Callable(eP) | |
2592 | + | func getBackpackREADONLY (r) = $Tuple2(nil, makeString(fS(aZ(r)), ":")) | |
2593 | + | ||
2594 | + | ||
2595 | + | ||
2596 | + | @Callable(eP) | |
2597 | + | func getWarehouseREADONLY (aQ) = { | |
2598 | + | let hP = value(assetInfo(fromBase58String(aQ))) | |
2599 | + | let gj = (cu(split(hP.description, "_")[ch]) / bG) | |
2600 | + | let gk = valueOrElse(getInteger(aJ(aQ)), 0) | |
2601 | + | $Tuple2(nil, makeString_2C(gh(aP(aQ), gj, gk), ":")) | |
2602 | + | } | |
2603 | + | ||
2604 | + | ||
2605 | + | ||
2606 | + | @Callable(eP) | |
2552 | 2607 | func saveLastTx () = { | |
2553 | - | let | |
2554 | - | if (if (if (( | |
2555 | - | then ( | |
2608 | + | let gX = eP.caller | |
2609 | + | if (if (if ((gX != ce)) | |
2610 | + | then (gX != cc) | |
2556 | 2611 | else false) | |
2557 | - | then ( | |
2612 | + | then (gX != cf) | |
2558 | 2613 | else false) | |
2559 | 2614 | then throw("Access denied") | |
2560 | - | else $Tuple2([ | |
2561 | - | } | |
2562 | - | ||
2563 | - | ||
2564 | - | ||
2565 | - | @Callable( | |
2566 | - | func updateDuckStats (r, | |
2615 | + | else $Tuple2([jm(eP)], 42) | |
2616 | + | } | |
2617 | + | ||
2618 | + | ||
2619 | + | ||
2620 | + | @Callable(eP) | |
2621 | + | func updateDuckStats (r,iu) = if ((eP.caller != cc)) | |
2567 | 2622 | then throw("Access denied") | |
2568 | - | else | |
2569 | - | ||
2570 | - | ||
2571 | - | ||
2572 | - | @Callable( | |
2573 | - | func updateAccStats (b, | |
2623 | + | else it(r, iu) | |
2624 | + | ||
2625 | + | ||
2626 | + | ||
2627 | + | @Callable(eP) | |
2628 | + | func updateAccStats (b,iu) = if ((eP.caller != cc)) | |
2574 | 2629 | then throw("Access denied") | |
2575 | - | else | |
2576 | - | ||
2577 | - | ||
2578 | - | ||
2579 | - | @Callable( | |
2580 | - | func equipDuck ( | |
2581 | - | let | |
2582 | - | if ((size( | |
2630 | + | else iz(b, iu) | |
2631 | + | ||
2632 | + | ||
2633 | + | ||
2634 | + | @Callable(eP) | |
2635 | + | func equipDuck (kL) = { | |
2636 | + | let jp = jm(eP) | |
2637 | + | if ((size(eP.payments) != 0)) | |
2583 | 2638 | then throw("No payments required") | |
2584 | 2639 | else { | |
2585 | - | let b = toString(eA.originCaller) | |
2586 | - | let r = valueOrErrorMessage(getString(aW(b)), "You don't have a duck staked") | |
2587 | - | let hk = w(r) | |
2588 | - | let ku = split(valueOrElse(getString(hk), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
2589 | - | let fE = aX(r) | |
2590 | - | let gm = fD(fE) | |
2591 | - | let hm = split(kt, "_") | |
2592 | - | if ((size(hm) != m)) | |
2593 | - | then throw("Wrong equipment string") | |
2640 | + | let b = toString(eP.originCaller) | |
2641 | + | let r = valueOrErrorMessage(getString(aY(b)), "You don't have a duck staked") | |
2642 | + | if (ji(r)) | |
2643 | + | then throw("checkTournament") | |
2594 | 2644 | else { | |
2595 | - | let dP = S(this, r) | |
2596 | - | let kv = en(ku, dE(gm[aB]), true, dP) | |
2597 | - | let kw = en(hm, kv, false, dP) | |
2598 | - | let kx = dJ(kw) | |
2599 | - | $Tuple2([StringEntry(hk, kt), StringEntry(fE, makeString_2C([gm[ay], gm[az], gm[aA], kx], ":")), iW], 0) | |
2645 | + | let hz = w(r) | |
2646 | + | let kM = split(valueOrElse(getString(hz), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
2647 | + | let fT = aZ(r) | |
2648 | + | let gB = fS(fT) | |
2649 | + | let hB = split(kL, "_") | |
2650 | + | if ((size(hB) != m)) | |
2651 | + | then throw("Wrong equipment string") | |
2652 | + | else { | |
2653 | + | let ee = U(this, r) | |
2654 | + | let kN = eC(kM, dT(gB[aD]), true, ee) | |
2655 | + | let kO = eC(hB, kN, false, ee) | |
2656 | + | let kP = dY(kO) | |
2657 | + | $Tuple2([StringEntry(hz, kL), StringEntry(fT, makeString_2C([gB[aA], gB[aB], gB[aC], kP], ":")), jp], 0) | |
2658 | + | } | |
2600 | 2659 | } | |
2601 | 2660 | } | |
2602 | 2661 | } | |
2662 | + | ||
2663 | + | ||
2664 | + | ||
2665 | + | @Callable(eP) | |
2666 | + | func initDuckTourAttempt (r) = if ((eP.caller != cf)) | |
2667 | + | then throw("Access denied") | |
2668 | + | else { | |
2669 | + | let jp = jm(eP) | |
2670 | + | let hq = q(r) | |
2671 | + | let hr = O(valueOrElse(getInteger(u(r)), 0)) | |
2672 | + | let jB = valueOrElse(getInteger(hq), hr) | |
2673 | + | let kQ = ba(r) | |
2674 | + | let hM = valueOrElse(getString(kQ), ag) | |
2675 | + | let jj = valueOrElse(getInteger(cf, bf), 0) | |
2676 | + | let kR = (toString(jj) + "_T_0") | |
2677 | + | $Tuple2([jp, IntegerEntry(A(r), jB), IntegerEntry(hq, 100), StringEntry(B(r), hM), StringEntry(kQ, kR)], kR) | |
2678 | + | } | |
2679 | + | ||
2680 | + | ||
2681 | + | ||
2682 | + | @Callable(eP) | |
2683 | + | func exitTournaments () = { | |
2684 | + | let jp = jm(eP) | |
2685 | + | let r = valueOrErrorMessage(getString(aY(toString(eP.caller))), "You don't have a duck staked") | |
2686 | + | let kQ = ba(r) | |
2687 | + | let hM = valueOrElse(getString(kQ), ag) | |
2688 | + | if ((split(hM, "_")[bs] != "T")) | |
2689 | + | then throw("Your duck is not in the tournament") | |
2690 | + | else { | |
2691 | + | let kS = getIntegerValue(A(r)) | |
2692 | + | let kT = getStringValue(B(r)) | |
2693 | + | $Tuple2([jp, IntegerEntry(q(r), kS), StringEntry(kQ, kT)], hM) | |
2694 | + | } | |
2695 | + | } | |
2696 | + | ||
2697 | + | ||
2698 | + | ||
2699 | + | @Callable(eP) | |
2700 | + | func exitTournamentInternal (r) = if ((eP.caller != this)) | |
2701 | + | then throw("Access denied") | |
2702 | + | else { | |
2703 | + | let kS = getIntegerValue(A(r)) | |
2704 | + | let kT = getStringValue(B(r)) | |
2705 | + | $Tuple2([IntegerEntry(q(r), kS), StringEntry(ba(r), kT)], 0) | |
2706 | + | } | |
2603 | 2707 | ||
2604 | 2708 |
github/deemru/w8io/169f3d6 1358.94 ms ◑![]()