tx · 3MioT3saug1yh4Amjb6nucFeHzgyPYnF5DNkUSdibZLW

3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm:  -0.10700000 Waves

2023.10.09 22:00 [2791478] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves

{ "type": 13, "id": "3MioT3saug1yh4Amjb6nucFeHzgyPYnF5DNkUSdibZLW", "fee": 10700000, "feeAssetId": null, "timestamp": 1696877953596, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "5LJDFot4EteN9Np5VBzWgK9RhsJ9uqxwSgPPAoT5VEfFVV5x2iRcwEo7XRHJdoFvWXcNWQzMsM2ZnvUS5bjCikcw" ], "script": "base64:BgLkAQgCEgMKAQgSBAoCCAESAwoBBBIAEgMKAQgSABIDCgEIEgQKAgEIEgQKAgEIEgQKAgICEgUKAwEBARIAEgQKAggIEgASABIECgICAhIAEgMKAQgSBAoCCAgSAwoBGBIECgIICBIECgIICBIDCgEIEgMKARgSAwoBCBIFCgMICAgSBAoCCAgSBwoFAQEBAQESAwoBARIFCgMBAQgSAwoBCBIDCgEIEgASBAoCCAESBAoCCAESAwoBCBIECgIICBIDCgEIEgASAwoBCBIDCgEIEgYKBAgBCAESBAoCAgISBAoCAgISAJ0CAAlEQVlNSUxMSVMAgLiZKQATREVMSVZFUllfUFVOSVNITUVOVADg1AMBFGtleUxhc3RBcmJUaW1lQnlVc2VyAQRhZGRyCQCsAgICEGxhc3RBcmJUaW1lVXNlcl8FBGFkZHIABlNDQUxFOACAwtcvAAx4cExldmVsU2NhbGUAgBkAD3hwTGV2ZWxSZWNpcFBvdwCgHwASbnVtUG9pbnRzT25MZXZlbFVwAAMADnJvYmJlcnlDb3N0TWluAIDC1y8AFHJvYmJlcnlDb29sZG93bkNvZWZmAJADAAxyZXF1aXJlbWVudHMJAMwIAgIIU3RyZW5ndGgJAMwIAgIIQWNjdXJhY3kJAMwIAgIJSW50ZWxsZWN0CQDMCAICCUVuZHVyYW5jZQkAzAgCAglEZXh0ZXJpdHkJAMwIAgIFTGV2ZWwJAMwIAgIGSGVhbHRoBQNuaWwADGNoYXJTdHJlbmd0aAAAAAxjaGFyQWNjdXJhY3kAAQANY2hhckludGVsbGVjdAACAA1jaGFyRW5kdXJhbmNlAAMADWNoYXJEZXh0ZXJpdHkABAALc2VnQmFja3BhY2sAAAALTlVNU0VHTUVOVFMABgAKTlVNTUFJTkFVWAACAAhNQVhTTE9UUwACAA1NQVhQUk9ESU5TTE9UAB4AEGxhbmRSb2JDb29sZG93bnMJAMwIAgAACQDMCAIAwM8kCQDMCAIAoPc2CQDMCAIAgNzMFAkAzAgCAICupgoFA25pbAAOTUlOX1JFU19UT19ST0IAgNrECQAMcm9iSWR4TG9ja2VkAAEAC2R1Y2tJZHhGcmVlAAAAEGR1Y2tJZHhQcmVwYXJpbmcAAQENa2V5RHVja0hlYWx0aAELZHVja0Fzc2V0SWQJAKwCAgILZHVja0hlYWx0aF8FC2R1Y2tBc3NldElkAQxrZXlEdWNrQ2hhcnMBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tDaGFyc18FC2R1Y2tBc3NldElkAQlrZXlEdWNrWFABC2R1Y2tBc3NldElkCQCsAgICB2R1Y2tYUF8FC2R1Y2tBc3NldElkAQxrZXlEdWNrTGV2ZWwBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tMZXZlbF8FC2R1Y2tBc3NldElkARFrZXlEdWNrRnJlZVBvaW50cwELZHVja0Fzc2V0SWQJAKwCAgIPZHVja0ZyZWVQb2ludHNfBQtkdWNrQXNzZXRJZAEQa2V5RHVja0VxdWlwbWVudAELZHVja0Fzc2V0SWQJAKwCAgIOZHVja0VxdWlwbWVudF8FC2R1Y2tBc3NldElkAQlrZXlVc2VyWFABBGFkZHIJAKwCAgIHdXNlclhQXwUEYWRkcgEMa2V5VXNlckxldmVsAQRhZGRyCQCsAgICCnVzZXJMZXZlbF8FBGFkZHIBEWtleVVzZXJGcmVlUG9pbnRzAQRhZGRyCQCsAgICD3VzZXJGcmVlUG9pbnRzXwUEYWRkcgEOa2V5U2F2ZWRIZWFsdGgBC2R1Y2tBc3NldElkCQCsAgICDHNhdmVkSGVhbHRoXwULZHVja0Fzc2V0SWQBEGtleVNhdmVkTG9jYXRpb24BC2R1Y2tBc3NldElkCQCsAgICDnNhdmVkTG9jYXRpb25fBQtkdWNrQXNzZXRJZAEMa2V5RHVja0J1ZmZzAQtkdWNrQXNzZXRJZAkArAICAgpkdWNrQnVmZnNfBQtkdWNrQXNzZXRJZAEYa2V5TGFzdFJvYmJlcnlUaW1lQnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAhBsYXN0Um9iYmVyeVRpbWVfBQtkdWNrQXNzZXRJZAEYa2V5TGFzdFJvYmJlcnlDb3N0QnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAhBsYXN0Um9iYmVyeUNvc3RfBQtkdWNrQXNzZXRJZAETa2V5TGFuZFJvYmJlcnlTdGF0ZQELbGFuZEFzc2V0SWQJAKwCAgIRbGFuZFJvYmJlcnlTdGF0ZV8FC2xhbmRBc3NldElkARJrZXlMYW5kQ29vbGRvd25FVEEBC2xhbmRBc3NldElkCQCsAgICEGxhbmRDb29sZG93bkVUQV8FC2xhbmRBc3NldElkARNrZXlEdWNrUm9iYmVyeVN0YXRlAQtkdWNrQXNzZXRJZAkArAICAhFkdWNrUm9iYmVyeVN0YXRlXwULZHVja0Fzc2V0SWQBE2tleUxvY2tlZExhbmRCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICEWxvY2tlZExhbmRCeUR1Y2tfBQtkdWNrQXNzZXRJZAEWa2V5RGVsaXZlcnlEZWxheUJ5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIUZGVsaXZlcnlEZWxheUJ5RHVja18FC2R1Y2tBc3NldElkAAd4cENsYWltAJBOAA94cFN1Y2Nlc3NGbGlnaHQAkE4ADHhwRmFpbEZsaWdodADQDwAIeHBDYWxsRVMAoI0GAAx4cEN1c3RvbU5hbWUAwIQ9AAp4cE5ld1NMYW5kAMCWsQIADnhwVXBncmFkZUluZnJhAJBOAAd4cE1lcmdlAMCEPQAJeHBPbmJvYXJkAMCEPQAGeHBIZWFsAJBOAQlsZXZlbEJ5WFABAnhwCQBrAwUMeHBMZXZlbFNjYWxlCQBsBgUCeHAABAUPeHBMZXZlbFJlY2lwUG93AAQABAUERE9XTgUGU0NBTEU4AQltYXhIZWFsdGgBBWxldmVsCQBkAgBkBQVsZXZlbAEHbGV2ZWxVcAIJY3VyckxldmVsBW5ld1hQBAhuZXdMZXZlbAkBCWxldmVsQnlYUAEFBW5ld1hQCQDMCAIFCG5ld0xldmVsCQDMCAIJAGgCBRJudW1Qb2ludHNPbkxldmVsVXAJAGUCBQhuZXdMZXZlbAUJY3VyckxldmVsBQNuaWwBDGdldER1Y2tTdGF0cwQPc3Rha2luZ0NvbnRyYWN0C2R1Y2tBc3NldElkCmJ1ZmZFZmZlY3QKZm9yY2VCdWZmcwQFY2hhcnMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrQ2hhcnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wAgFfBANsdmwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQGaGVhbHRoCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAkBCW1heEhlYWx0aAEFA2x2bAQKc3RhdGVCdWZmcwkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzACAV8JAM4IAgkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJTdHJlbmd0aAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJBY2N1cmFjeQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJJbnRlbGxlY3QJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRW5kdXJhbmNlCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckRleHRlcml0eQkAzAgCBQNsdmwJAMwIAgUGaGVhbHRoBQNuaWwDBQpmb3JjZUJ1ZmZzCQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAUDbmlsCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQxjaGFyU3RyZW5ndGgJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDGNoYXJBY2N1cmFjeQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUNY2hhckludGVsbGVjdAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUNY2hhckVuZHVyYW5jZQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUNY2hhckRleHRlcml0eQUDbmlsAQ5nZXRSb2JiZXJ5RGF0YQIPc3Rha2luZ0NvbnRyYWN0C2R1Y2tBc3NldElkBAtsYXN0Um9iQ29zdAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARhrZXlMYXN0Um9iYmVyeUNvc3RCeUR1Y2sBBQtkdWNrQXNzZXRJZAAABAtsYXN0Um9iVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARhrZXlMYXN0Um9iYmVyeVRpbWVCeUR1Y2sBBQtkdWNrQXNzZXRJZAAABANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAdyb2JDb3N0CQCWAwEJAMwIAgUOcm9iYmVyeUNvc3RNaW4JAMwIAgkAZQIFC2xhc3RSb2JDb3N0CQBoAgUUcm9iYmVyeUNvb2xkb3duQ29lZmYJAGUCBQNub3cFC2xhc3RSb2JUaW1lBQNuaWwECWR1Y2tTdGF0ZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARNrZXlEdWNrUm9iYmVyeVN0YXRlAQULZHVja0Fzc2V0SWQAAAQKbG9ja2VkTGFuZAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARNrZXlMb2NrZWRMYW5kQnlEdWNrAQULZHVja0Fzc2V0SWQCAAQHbGFuZEVUQQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARJrZXlMYW5kQ29vbGRvd25FVEEBBQpsb2NrZWRMYW5kAAAJAJcKBQUHcm9iQ29zdAULbGFzdFJvYlRpbWUFCWR1Y2tTdGF0ZQUKbG9ja2VkTGFuZAUHbGFuZEVUQQAKTEFORFBSRUZJWAIETEFORAAKRFVDS1BSRUZJWAIERFVDSwAKQVJUUFJFU0FMRQIHUFJFU0FMRQAGTlVNUkVTAAYAGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgAZAA9EQUlMWVJFU0JZUElFQ0UAgPjSAQAMV0hNVUxUSVBMSUVSAIDIr6AlAA9ERUZBVUxUTE9DQVRJT04CD0FmcmljYV9GX0FmcmljYQAQUkVTT1VSQ0VQUklDRU1JTgDVtQIACkVTU0VMTENPRUYACgAVTUlOX1VTRFRfRkVFX0RFTElWRVJZANCGAwASVEVOX01JTlVURVNfTUlMTElTAMDPJAAJcHJvZFR5cGVzCQDMCAICEEZpcnN0IEFpZCBLaXQgTDEJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMgkAzAgCAhBGaXJzdCBBaWQgS2l0IEwzCQDMCAICC0JhY2twYWNrIEwxCQDMCAICC0JhY2twYWNrIEwyCQDMCAICC0JhY2twYWNrIEwzCQDMCAICDkZvb2QgUmF0aW9uIEwxCQDMCAICDkZvb2QgUmF0aW9uIEwyCQDMCAICDkZvb2QgUmF0aW9uIEwzCQDMCAICC0pldCBQYWNrIEwxCQDMCAICC0pldCBQYWNrIEwyCQDMCAICC0pldCBQYWNrIEwzCQDMCAICCVNoaWVsZCBMMQkAzAgCAglTaGllbGQgTDIJAMwIAgIJU2hpZWxkIEwzCQDMCAICB01pbmUgTDEJAMwIAgIHTWluZSBMMgkAzAgCAgdNaW5lIEwzCQDMCAICB1RyYXAgTDEJAMwIAgIHVHJhcCBMMgkAzAgCAgdUcmFwIEwzBQNuaWwACmNvbnRpbmVudHMJAMwIAgIIQW1lcmljYXMJAMwIAgIGRXVyb3BlCQDMCAICBEFzaWEJAMwIAgIGQWZyaWNhCQDMCAICB09jZWFuaWEFA25pbAAJQ09FRkYyTUFUAICt4gQAEGZvcnRBbGxvd2VkUHJvZHMJAMwIAgAPCQDMCAIAEAkAzAgCABEJAMwIAgASCQDMCAIAEwkAzAgCABQFA25pbAAQcHJvZHVjdGlvbk1hdHJpeAkAzAgCAiU4XzhfOF8xN18xN180Ml8xMl8wXzMwXzAsMCwwLDAsMCwwLDBfCQDMCAICJThfOF84XzE3XzE3XzQyXzI0XzBfNjBfMCwwLDUsMiwwLDAsMF8JAMwIAgInOF84XzhfMTdfMTdfNDJfMzZfMF8xMjBfMCwwLDEwLDQsMCwwLDBfCQDMCAICKThfMTlfMTlfOF8yN18xOV8yNl8xXzIwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICKThfMTlfMTlfOF8yN18xOV81Ml8xXzQwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICKThfMTlfMTlfOF8yN18xOV83OF8xXzgwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICJThfOF84XzhfOF82MF8xM18yXzJfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIlOF84XzhfOF84XzYwXzI2XzJfNF8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAiU4XzhfOF84XzhfNjBfMzlfMl84XzAsMCwwLDAsMCwwLDBfMDExCQDMCAICKTMwXzMwXzNfMTdfMTdfM18zMF8zXzMwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKTMwXzMwXzNfMTdfMTdfM182MF8zXzUwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKTMwXzMwXzNfMTdfMTdfM185MF8zXzcwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzExXzRfMTBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMjJfNF8yMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8zM180XzMwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKjRfMTNfMjJfNF8zNV8yMl8yM18wXzUwLDEsMF8wLDAsMCwwLDAsMCwwXwkAzAgCAio0XzEzXzIyXzRfMzVfMjJfNDZfMF81MCwxLDFfMCwyLDUsMCwwLDAsMF8JAMwIAgIrNF8xM18yMl80XzM1XzIyXzY5XzBfNTAsMiwxXzAsNSwxMCwwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfMjBfMV8zMCwxLDFfMCwwLDAsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzQwXzFfMzAsMSwyXzIsMSwzLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV82MF8xXzMwLDEsM181LDIsOCwwLDAsMCwwXwUDbmlsAAlySWR4Q29lZmYABgAKcklkeEVmZmVjdAAIABBySWR4UmVxdWlyZW1lbnRzAAkACXJJZHhTbG90cwAKAA5QUk9EVUNUUEtHU0laRQAKAAt3aElkeExldmVscwAAAAh3aElkeFJlcwABAAh3aElkeE1hdAACAAl3aElkeFByb2QAAwAJd2hJZHhMT0ZUAAQACXZvbExvY2tlZAAAAAt2b2xPY2N1cGllZAABAAd2b2xGcmVlAAIACHZvbFRvdGFsAAMACmJwSWR4TGV2ZWwAAAAIYnBJZHhSZXMAAQAIYnBJZHhNYXQAAgAJYnBJZHhQcm9kAAMAD2xvY0lkeENvbnRpbmVudAAAAApsb2NJZHhUeXBlAAEACGxvY0lkeElkAAIBFWtleUxhbmRBc3NldElkVG9Pd25lcgEHYXNzZXRJZAkArAICAgNub18FB2Fzc2V0SWQBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQdhc3NldElkCQCsAgICBWxjbmFfBQdhc3NldElkARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQdhc3NldElkCQCsAgICA3N0XwUHYXNzZXRJZAEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBHR5cGUHYXNzZXRJZAkAuQkCCQDMCAICA2xhcwkAzAgCBQR0eXBlCQDMCAIFB2Fzc2V0SWQFA25pbAIBXwEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMHbmZ0VHlwZQdhc3NldElkCW93bmVyQWRkcgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICBnN0dGFvXwUHbmZ0VHlwZQIBXwUHYXNzZXRJZAIBXwUJb3duZXJBZGRyARJrZXlXYXJlaG91c2VCeUxhbmQBC2xhbmRBc3NldElkCQCsAgICA3doXwULbGFuZEFzc2V0SWQBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBB2Fzc2V0SWQJAKwCAgILaW5mcmFMZXZlbF8FB2Fzc2V0SWQBF2tleUZvcnRpZmljYXRpb25zQnlMYW5kAQtsYW5kQXNzZXRJZAkArAICAg9mb3J0aWZpY2F0aW9uc18FC2xhbmRBc3NldElkARprZXlEdWNrQXNzZXRJZFRvQ3VzdG9tTmFtZQEHYXNzZXRJZAkArAICAhhkdWNrQ3VzdG9tTmFtZUJ5QXNzZXRJZF8FB2Fzc2V0SWQBFmtleUFkZHJlc3NUb0N1c3RvbU5hbWUBBGFkZHIJAKwCAgIYYWNjb3VudEN1c3RvbU5hbWVCeUFkZHJfBQRhZGRyAQ9rZXlBZGRyZXNzUmVmQnkBBGFkZHIJAKwCAgIJYWNjUmVmQnlfBQRhZGRyARxrZXlPbmJvYXJkQXJ0QWN0aXZhdGVkT25EdWNrAQtkdWNrQXNzZXRJZAkArAICAhpvbmJvYXJkQXJ0QWN0aXZhdGVkT25EdWNrXwULZHVja0Fzc2V0SWQBHGtleU9uYm9hcmRBcnREdWNrQWN0aXZhdGVkQnkBBGFkZHIJAKwCAgIab25ib2FyZEFydEFjdGl2YXRlZER1Y2tCeV8FBGFkZHIBE2tleUFkZHJlc3NSZWZlcnJhbHMBBGFkZHIJAKwCAgINYWNjUmVmZXJyYWxzXwUEYWRkcgEQa2V5RHVja0lkVG9Pd25lcgEHYXNzZXRJZAkArAICAgpkdWNrT3duZXJfBQdhc3NldElkARRrZXlTdGFrZWREdWNrQnlPd25lcgEJb3duZXJBZGRyCQCsAgICEnN0YWtlZER1Y2tCeU93bmVyXwUJb3duZXJBZGRyARFrZXlCYWNrcGFja0J5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIJYmFja1BhY2tfBQtkdWNrQXNzZXRJZAEPa2V5RHVja0xvY2F0aW9uAQtkdWNrQXNzZXRJZAkArAICAg1kdWNrTG9jYXRpb25fBQtkdWNrQXNzZXRJZAEVa2V5VXNlckd3bFJlbGVhc2VUaW1lAQh1c2VyQWRkcgkArAICAholcyVzX191c2VyR3dsUmVsZWFzZVRpbWVfXwUIdXNlckFkZHIBDmtleUVzV2FyZWhvdXNlAAIaZW1lcmdlbmN5V2FyZWhvdXNlUHJvZHVjdHMAD2RlbGl2ZXJ5RnVuZEtleQIMZGVsaXZlcnlGdW5kABFkZWxpdmVyeUxvY2tlZEtleQIOZGVsaXZlcnlMb2NrZWQADWxhc3RUb3VySWRLZXkCDiVzX19sYXN0VG91cklkARVrZXlUb3VyU3RhdGljRGF0YUJ5SWQBA3RJZAkArAICAhYlcyVkX190b3VyU3RhdGljRGF0YV9fCQCkAwEFA3RJZAEWa2V5VG91ckR5bmFtaWNEYXRhQnlJZAEDdElkCQCsAgICFyVzJWRfX3RvdXJEeW5hbWljRGF0YV9fCQCkAwEFA3RJZAEaa2V5QmVzdFJlc3VsdEJ5VG91ckFuZER1Y2sCA3RJZAtkdWNrQXNzZXRJZAkAuQkCCQDMCAICHyVzJWQlc19fYmVzdFJlc3VsdEJ5VG91ckFuZER1Y2sJAMwIAgkApAMBBQN0SWQJAMwIAgULZHVja0Fzc2V0SWQFA25pbAICX18ACWlkeFN0YXRpYwAAAAppZHhEeW5hbWljAAEACnRTdGF0aWNFbmQABgAOdER5bmFtaWNTdGF0dXMAAQELZ2V0VG91ckRhdGECDHRvdXJDb250cmFjdAN0SWQEBnN0YXRpYwkAtQkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUMdG91ckNvbnRyYWN0CQEVa2V5VG91clN0YXRpY0RhdGFCeUlkAQUDdElkCQCsAgIJAKwCAgIZRXJyb3IgcmVhZGluZyB0b3VybmFtZW50IAkApAMBBQN0SWQCBSBkYXRhAgJfXwQHZHluYW1pYwkAvAkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUMdG91ckNvbnRyYWN0CQEWa2V5VG91ckR5bmFtaWNEYXRhQnlJZAEFA3RJZAkArAICCQCsAgICGUVycm9yIHJlYWRpbmcgdG91cm5hbWVudCAJAKQDAQUDdElkAgUgZGF0YQICX18JAMwIAgUGc3RhdGljCQDMCAIFB2R5bmFtaWMFA25pbAEOaXNJblRvdXJuYW1lbnQCDHRvdXJDb250cmFjdAhsb2NhdGlvbgQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFDHRvdXJDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABANsb2MJALUJAgUIbG9jYXRpb24CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBXREYXRhCQELZ2V0VG91ckRhdGECBQx0b3VyQ29udHJhY3QFBmxhc3RJZAQGc3RhdGljCQCRAwIFBXREYXRhBQlpZHhTdGF0aWMEB2R5bmFtaWMJAJEDAgUFdERhdGEFCmlkeER5bmFtaWMDAwMJAAACCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBVAkAAAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFD2xvY0lkeENvbnRpbmVudAUGbGFzdElkBwkAAAIJAJEDAgUHZHluYW1pYwUOdER5bmFtaWNTdGF0dXMCCklOUFJPR1JFU1MHCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUDbm93BwEMaXNJbkRlbGl2ZXJ5AQhsb2NhdGlvbgQDbG9jCQC1CQIFCGxvY2F0aW9uAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlzdGFydFRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFD2xvY0lkeENvbnRpbmVudAQIZGlzdGFuY2UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFCGxvY0lkeElkAwMJAAACCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBRAkAZgIJAGQCBQlzdGFydFRpbWUFElRFTl9NSU5VVEVTX01JTExJUwUDbm93BwkAZwIAAwUIZGlzdGFuY2UHAQ9pc1VzdWFsTG9jYXRpb24BCGxvY2F0aW9uBAdsb2NUeXBlCQCRAwIJALUJAgUIbG9jYXRpb24CAV8FCmxvY0lkeFR5cGUDCQECIT0CBQdsb2NUeXBlAgFUCQECIT0CBQdsb2NUeXBlAgFEBwEJb25NaXNzaW9uAgx0b3VyQ29udHJhY3QIbG9jYXRpb24EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQx0b3VyQ29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQDbG9jCQC1CQIFCGxvY2F0aW9uAgFfBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAV0RGF0YQkBC2dldFRvdXJEYXRhAgUMdG91ckNvbnRyYWN0BQZsYXN0SWQEBnN0YXRpYwkAkQMCBQV0RGF0YQUJaWR4U3RhdGljBAdkeW5hbWljCQCRAwIFBXREYXRhBQppZHhEeW5hbWljBAdsb2NUeXBlCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQMJAAACBQdsb2NUeXBlAgFEBgMDAwkAAAIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFUCQAAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUPbG9jSWR4Q29udGluZW50BQZsYXN0SWQHCQAAAgkAkQMCBQdkeW5hbWljBQ50RHluYW1pY1N0YXR1cwIKSU5QUk9HUkVTUwcJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBQp0U3RhdGljRW5kBQNub3cHARJnZXRSZWNpcGVNYXRlcmlhbHMBBnJlY2lwZQkAaAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZyZWNpcGUFCXJJZHhDb2VmZgUJQ09FRkYyTUFUAQxjaGVhdEF0dGVtcHQDBm9sZExvYwZuZXdMb2MJY2hlYXRDYXNlCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICFkNoZWF0IGF0dGVtcHQ6IG9sZExvYz0FBm9sZExvYwIJLCBuZXdMb2M9BQZuZXdMb2MCBywgY2FzZT0JAKQDAQUJY2hlYXRDYXNlABZLU19TRVBBUkFURV9QVUJMSUNfS0VZBwAYS1NfQUxMT1dfQklHX0lORlJBX01FUkdFBwARS1NfQUxMT1dfREVMSVZFUlkGAAVjaGFpbgkAyQECCQDKAQIIBQR0aGlzBWJ5dGVzAAEAAQALdXNkdEFzc2V0SWQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDABIITaerIIAz9O0bvKju6Lk7zJgt0LXfoHlqjUI/moD/+5AwkAAAIBAVQFByRtYXRjaDABIFWx2J9yh4Lv5eNbjawFq2XemkOhLxa7BfMat4el8cUYCQACAQINVW5rbm93biBjaGFpbgAVZGVmYXVsdFJlc3RBZGRyZXNzU3RyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUFFDdXZGYnZoNExrUFVucm5VMXozam5iQTFwOW0zV05odgMJAAACAQFUBQckbWF0Y2gwAiMzTXVta0dHenRDS0FYcFdEcXhrZGRvZnFYU1VicVFrdlNKeQkAAgECDVVua25vd24gY2hhaW4AEUluZnJhVXBncmFkZUNvc3RTBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAIDIr6AlAwkAAAIBAVQFByRtYXRjaDAAgMLXLwkAAgECDVVua25vd24gY2hhaW4ADmFyYml0cmFnZURlbGF5BAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAIC4mSkDCQAAAgEBVAUHJG1hdGNoMADg1AMJAAIBAg1Vbmtub3duIGNoYWluAANTRVACAl9fAAVNVUxUNgDAhD0ABU1VTFQ4AIDC1y8ABVNTSVpFABkABU1TSVpFAGQABUxTSVpFAOEBAAZYTFNJWkUAkAMAB1hYTFNJWkUA8QQABUlURVI2CQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFBQNuaWwBD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAABFJZHhDZmdTdGFraW5nRGFwcAABABFJZHhDZmdFY29ub215RGFwcAACABRJZHhDZmdHb3Zlcm5hbmNlRGFwcAADAA1JZHhDZmdXbGdEYXBwAAQAFElkeENmZ1RvdXJuYW1lbnREYXBwAAcAD0lkeENmZ0FjcmVzRGFwcAAIAQprZXlSZXN0Q2ZnAAIOJXNfX3Jlc3RDb25maWcBDmtleVJlc3RBZGRyZXNzAAIMJXNfX3Jlc3RBZGRyARFyZWFkUmVzdENmZ09yRmFpbAEEcmVzdAkAvAkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUEcmVzdAkBCmtleVJlc3RDZmcABQNTRVABGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIHcmVzdENmZwNpZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFB3Jlc3RDZmcFA2lkeAkArAICAipSZXN0IGNmZyBkb2Vzbid0IGNvbnRhaW4gYWRkcmVzcyBhdCBpbmRleCAJAKQDAQUDaWR4AAxyZXN0Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBDmtleVJlc3RBZGRyZXNzAAUVZGVmYXVsdFJlc3RBZGRyZXNzU3RyAAdyZXN0Q2ZnCQERcmVhZFJlc3RDZmdPckZhaWwBBQxyZXN0Q29udHJhY3QAD3N0YWtpbmdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ1N0YWtpbmdEYXBwAA9lY29ub215Q29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdFY29ub215RGFwcAALZ292Q29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRRJZHhDZmdHb3Zlcm5hbmNlRGFwcAALd2xnQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBQ1JZHhDZmdXbGdEYXBwABJ0b3VybmFtZW50Q29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRRJZHhDZmdUb3VybmFtZW50RGFwcAANYWNyZXNDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFD0lkeENmZ0FjcmVzRGFwcAAKcmVjTGFuZE51bQAAAAtyZWNMYW5kU2l6ZQABAAtyZWNUZXJyYWlucwACAAxyZWNDb250aW5lbnQAAwANd2xnQXNzZXRJZEtleQILd2xnX2Fzc2V0SWQACndsZ0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQt3bGdDb250cmFjdAUNd2xnQXNzZXRJZEtleQIYV0xHT0xEIGlzIG5vdCBpc3N1ZWQgeWV0AA9hY3Jlc0Fzc2V0SWRLZXkCDGFjcmVzQXNzZXRJZAAMYWNyZXNBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgUNYWNyZXNDb250cmFjdAUPYWNyZXNBc3NldElkS2V5AhdBQ1JFUyBpcyBub3QgaXNzdWVkIHlldAALcmFuZG9tRGVsYXkAAgEJa2V5Q29tbWl0AQdhZGRyZXNzCQCsAgICE2ZpbmlzaEJsb2NrRm9yQWRkcl8FB2FkZHJlc3MBEWtleVJlc1Byb3BvcnRpb25zAAITcmVzVHlwZXNQcm9wb3J0aW9ucwEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJY29udGluZW50CQCsAgICFHJlc1R5cGVzQnlDb250aW5lbnRfBQljb250aW5lbnQBFWtleVN0YWtlZExhbmRzQnlPd25lcgEJb3duZXJBZGRyCQCsAgICE3N0YWtlZExhbmRzQnlPd25lcl8FCW93bmVyQWRkcgEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEJb3duZXJBZGRyCQCsAgICFHN0YWtlZFBpZWNlc0J5T3duZXJfBQlvd25lckFkZHIBCGFzU3RyaW5nAQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgECGGZhaWwgdG8gY2FzdCBpbnRvIFN0cmluZwEFYXNJbnQBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIDSW50BAFuBQckbWF0Y2gwBQFuCQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQlhc0FueUxpc3QBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIJTGlzdFtBbnldBAFsBQckbWF0Y2gwBQFsCQACAQIbZmFpbCB0byBjYXN0IGludG8gTGlzdFtBbnldAQlhc0Jvb2xlYW4BAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBcwUHJG1hdGNoMAUBcwkAAgECGWZhaWwgdG8gY2FzdCBpbnRvIEJvb2xlYW4BEGFzU3RyaW5nSW50VHVwbGUBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACDShTdHJpbmcsIEludCkEAnQyBQckbWF0Y2gwBQJ0MgkAAgECH2ZhaWwgdG8gY2FzdCBpbnRvIChTdHJpbmcsIEludCkBD251bVBpZWNlc0J5U2l6ZQEIbGFuZFNpemUEByRtYXRjaDAFCGxhbmRTaXplAwkAAAICAVMFByRtYXRjaDAFBVNTSVpFAwkAAAICAU0FByRtYXRjaDAFBU1TSVpFAwkAAAICAUwFByRtYXRjaDAFBUxTSVpFAwkAAAICAlhMBQckbWF0Y2gwBQZYTFNJWkUDCQAAAgIDWFhMBQckbWF0Y2gwBQdYWExTSVpFCQACAQIRVW5rbm93biBsYW5kIHNpemUBB2lzRGlnaXQBAXMJAQlpc0RlZmluZWQBCQC2CQEFAXMBCmtleUJsb2NrZWQAAhBjb250cmFjdHNCbG9ja2VkARFrZXlMYXN0VHhJZEJ5VXNlcgEEYWRkcgkArAICAg9sYXN0VHhJZEJ5VXNlcl8FBGFkZHIBCmZpeGVkUG9pbnQCA3ZhbAhkZWNpbWFscwQGdGVuUG93CQBsBgAKAAAFCGRlY2ltYWxzAAAAAAUERE9XTgQHbG93UGFydAkApAMBCQBqAgUDdmFsBQZ0ZW5Qb3cEBnplcm9lcwkAsAICCQCkAwEFBnRlblBvdwkAZAIAAQkAsQIBBQdsb3dQYXJ0CQCsAgIJAKwCAgkArAICCQCkAwEJAGkCBQN2YWwFBnRlblBvdwIBLgUGemVy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b3duZXJBZGRyARFrZXlMYW5kTnVtVG9Pd25lcgEHbGFuZE51bQkArAICAgNsb18FB2xhbmROdW0BGmtleUR1Y2tDdXN0b21OYW1lVG9Bc3NldElkAQRuYW1lCQCsAgICEWR1Y2tCeUN1c3RvbU5hbWVfBQRuYW1lARZrZXlDdXN0b21OYW1lVG9BZGRyZXNzAQRuYW1lCQCsAgICFGFjY291bnRCeUN1c3RvbU5hbWVfBQRuYW1lAQlrZXlPbGRpZXMAAgpvbGRpZXNMaXN0AAtjbGFpbU1vZGVXaAAAAA1jbGFpbU1vZGVEdWNrAAEAE2NsYWltTW9kZVdoVGhlbkR1Y2sAAgAIZmxIZWFsdGgAAAALZmxUaW1lc3RhbXAABQAHZmxCb251cwAGAAtmbFByb2RzVXNlZAAHAQduZnROYW1lAgdsYW5kTnVtCGxhbmRTaXplCQCsAgIJAKwCAgUKTEFORFBSRUZJWAUHbGFuZE51bQUIbGFuZFNpemUBCHRvVm9sdW1lAgZhbW91bnQHcGtnU2l6ZQQEcGtncwMJAGcCBQZhbW91bnQAAAkAaQIJAGUCCQBkAgUGYW1vdW50BQdwa2dTaXplAAEFB3BrZ1NpemUJAQEtAQkAaQIJAGUCCQBkAgkBAS0BBQZhbW91bnQFB3BrZ1NpemUAAQUHcGtnU2l6ZQkAaAIFBHBrZ3MFBU1VTFQ4ARNkaXN0cmlidXRlQnlXZWlnaHRzAgV0b3RhbAd3ZWlnaHRzBANzdW0JAGQCCQBkAgkAZAIJAGQCCQBkAgkAkQMCBQd3ZWlnaHRzAAAJAJEDAgUHd2VpZ2h0cwABCQCRAwIFB3dlaWdodHMAAgkAkQMCBQd3ZWlnaHRzAAMJAJEDAgUHd2VpZ2h0cwAECQCRAwIFB3dlaWdodHMABQMJAGcCAAAFA3N1bQkAAgECEFplcm8gd2VpZ2h0cyBzdW0EBW5vcm02CQBrAwUFdG90YWwFBU1VTFQ2BQNzdW0KAQpub3JtYWxpemVyAgNhY2MEZWxlbQkAzQgCBQNhY2MJAGsDBQRlbGVtBQVub3JtNgUFTVVMVDYKAAIkbAUHd2VpZ2h0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKbm9ybWFsaXplcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgESZ2V0TmVlZGVkTWF0ZXJpYWxzAQV0b3RhbAQFcHJvcHMJALUJAgkBBXZhbHVlAQkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgFfAwkBAiE9AgkAkAMBBQVwcm9wcwUGTlVNUkVTCQACAQIWV3JvbmcgcHJvcG9ydGlvbnMgZGF0YQQBcgkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAgkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAwkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMABAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMABQUDbmlsCQETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFBXRvdGFsBQFyARFzdWJ0cmFjdE1hdGVyaWFscwMMc2hvdWxkVXNlTWF0A2hhcwl0b3RhbE5lZWQEBG5lZWQJARJnZXROZWVkZWRNYXRlcmlhbHMBBQl0b3RhbE5lZWQKAQpzdWJ0cmFjdG9yAgNhY2MDaWR4BAZyZXN1bHQJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDaGFzBQNpZHgJAJEDAgUEbmVlZAUDaWR4AwkAZgIAAAUGcmVzdWx0CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICGE5vdCBlbm91Z2ggbWF0ZXJpYWwgaWR4PQkApAMBBQNpZHgCCywgeW91IGhhdmUgCQCRAwIFA2hhcwUDaWR4AgssIGJ1dCBuZWVkIAkApAMBCQCRAwIFBG5lZWQFA2lkeAkAzQgCBQNhY2MJAKQDAQUGcmVzdWx0AwUMc2hvdWxkVXNlTWF0CgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpzdWJ0cmFjdG9yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGBQNoYXMBEXN1YnRyYWN0RXF1aXBtZW50AgVvbGRFcQVwVXNlZAMJAAACBQVwVXNlZAIACQCUCgIFBW9sZEVxBwoBB3N1YlVzZWQCA2FjYwZpZHhBbXQEBXBhcnRzCQC1CQIFBmlkeEFtdAIBLAMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKEluY29ycmVjdCBmb3JtYXQsIHNob3VsZCBiZSBpbmRleCxhbW91bnQEA2lkeAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAADAwkAZgIAAAUDaWR4BgkAZwIFA2lkeAkAkAMBBRBwcm9kdWN0aW9uTWF0cml4CQACAQITVW5rbm93biBwcm9kdWN0IGlkeAQDYW10CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAQQHZXFQYXJ0cwkAtQkCCAUDYWNjAl8xCQCsAgIJAJEDAgUFcGFydHMAAAIBOgMJAQIhPQIJAJADAQUHZXFQYXJ0cwACCQACAQkArAICCQCsAgICD1lvdSBkb24ndCBoYXZlIAkAkQMCBQlwcm9kVHlwZXMFA2lkeAIJIGVxdWlwcGVkBAN0bXAJAJEDAgUHZXFQYXJ0cwABBAZudW1MZW4DCQEHaXNEaWdpdAEJAK8CAgkAsAICBQN0bXAAAQABAAIAAQQEY3VycgkBDXBhcnNlSW50VmFsdWUBCQCvAgIFA3RtcAUGbnVtTGVuBAR0YWlsCQCwAgIFA3RtcAUGbnVtTGVuBAZuZXdBbXQDCQBnAgUEY3VycgUDYW10CQBlAgUEY3VycgUDYW10CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICDVlvdSBlcXVpcHBl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Y2VlZHMgNwkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAQpwbGFjZVByb2RCBgZpZHhDbnQFcExpc3QKaXNQb3NpdGl2ZQlkdWNrU3RhdHMIb2NjdXBpZWQEZnJlZQQFcGFydHMJALUJAgUGaWR4Q250AgE6AwkBAiE9AgkAkAMBBQVwYXJ0cwACCQACAQIoSW5jb3JyZWN0IGZvcm1hdCwgc2hvdWxkIGJlIGluZGV4OmFtb3VudAMDCQEBIQEFCmlzUG9zaXRpdmUJAQIhPQIJALECAQkAkQMCBQVwYXJ0cwAAAAIHCQACAQIrUHJvZHVjdCBpZHggc2hvdWxkIGJlIDIgZGlnaXRzLCB6ZXJvIHBhZGRlZAQKcHJvZHVjdElkeAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAAEBWNvdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAQMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIFEGZvcnRBbGxvd2VkUHJvZHMFCnByb2R1Y3RJZHgJAAIBCQCsAgIJAKwCAgIJUHJvZHVjdCAnCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAIhJyBjYW5ub3QgYmUgdXNlZCBmb3IgbGFuZCBkZWZlbnNlAwkAZgIAAAUFY291bnQJAAIBAhdDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZQMJAGYCBQVjb3VudAUNTUFYUFJPRElOU0xPVAkAAgEJAKwCAgkArAICCQCsAgICFENhbid0IHB1dCBtb3JlIHRoYW4gCQCkAwEFDU1BWFBST0RJTlNMT1QCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AwkAAAIFBWNvdW50AAAJAJUKAwUFcExpc3QFCG9jY3VwaWVkBQRmcmVlBARoZWFkCQDJAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4BARjdXJyCQCxCQEJAMkBAgkAygECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAAIBAR0YWlsCQDKAQIFBXBMaXN0CQBoAgAICQBkAgUKcHJvZHVjdElkeAABBAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4BQpwcm9kdWN0SWR4AgFfAwMJAQEhAQUKaXNQb3NpdGl2ZQkAZgIFBWNvdW50BQRjdXJyBwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglZb3UgaGF2ZSAJAKQDAQUEY3VycgIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgCEywgYnV0IHRyaWVkIHRvIHVzZSAJAKQDAQUFY291bnQEBm5ld0FtdAMDCQEBIQEFCmlzUG9zaXRpdmUJARVjaGVja1N0YXRSZXF1aXJlbWVudHMCBQlkdWNrU3RhdHMJALUJAgkAkQMCBQZyZWNpcGUFEHJJZHhSZXF1aXJlbWVudHMCASwHCQBlAgUEY3VycgUFY291bnQJAGQCBQRjdXJyBQVjb3VudAQIZGVsdGFWb2wJAGUCCQEIdG9Wb2x1bWUCBQZuZXdBbXQFDlBST0RVQ1RQS0dTSVpFCQEIdG9Wb2x1bWUCBQRjdXJyBQ5QUk9EVUNUUEtHU0laRQkAlQoDCQDLAQIJAMsBAgUEaGVhZAkAmgMBBQZuZXdBbXQFBHRhaWwJAGQCBQhvY2N1cGllZAUIZGVsdGFWb2wJAGUCBQRmcmVlBQhkZWx0YVZvbAEIYWRkUHJvZEIHBmlkeENudAVwTGlzdAppc1Bvc2l0aXZlB3NlZ21lbnQHbWFpbkF1eARzbG90CWR1Y2tTdGF0cwQFcGFydHMJALUJAgUGaWR4Q250AgE6AwkBAiE9AgkAkAMBBQVwYXJ0cwACCQACAQIoSW5jb3JyZWN0IGZvcm1hdCwgc2hvdWxkIGJlIGluZGV4OmFtb3VudAMDCQEBIQEFCmlzUG9zaXRpdmUJAQIhPQIJALECAQkAkQMCBQVwYXJ0cwAAAAIHCQACAQIrUHJvZHVjdCBpZHggc2hvdWxkIGJlIDIgZGlnaXRzLCB6ZXJvIHBhZGRlZAQKcHJvZHVjdElkeAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAAEBWNvdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAQMDCQBmAgAABQpwcm9kdWN0SWR4BgkAZwIFCnByb2R1Y3RJZHgJAJADAQUQcHJvZHVjdGlvbk1hdHJpeAkAAgECE1Vua25vd24gcHJvZHVjdCBpZHgDCQBmAgAABQVjb3VudAkAAgECF0NvdW50IGNhbid0IGJlIG5lZ2F0aXZlAwkAZgIFBWNvdW50BQ1NQVhQUk9ESU5TTE9UCQACAQkArAICCQCsAgIJAKwCAgIUQ2FuJ3QgcHV0IG1vcmUgdGhhbiAJAKQDAQUNTUFYUFJPRElOU0xPVAIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgDCQAAAgUFY291bnQAAAkAlAoCBQVwTGlzdAcEBGhlYWQJAMkBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgEBGN1cnIJALEJAQkAyQECCQDKAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4AAgEBHRhaWwJAMoBAgUFcExpc3QJAGgCAAgJAGQCBQpwcm9kdWN0SWR4AAEEBnJlY2lwZQkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgFCnByb2R1Y3RJZHgCAV8DAwkBASEBBQppc1Bvc2l0aXZlCQBmAgUFY291bnQFBGN1cnIHCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCVlvdSBoYXZlIAkApAMBBQRjdXJyAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAITLCBidXQgdHJpZWQgdG8gdXNlIAkApAMBBQVjb3VudAQJaXNCaWdJdGVtAwMJAQEhAQUKaXNQb3NpdGl2ZQkBFWNoZWNrU3RhdFJlcXVpcmVtZW50cwIFCWR1Y2tTdGF0cwkAtQkCCQCRAwIFBnJlY2lwZQUQcklkeFJlcXVpcmVtZW50cwIBLAcEBmNvbXBhdAkAkQMCBQZyZWNpcGUFCXJJZHhTbG90cwMJAAACBQZjb21wYXQCAAkAAgECF0l0ZW0gY2Fubm90IGJlIGVxdWlwcGVkBAFjCQENcGFyc2VJbnRWYWx1ZQEFBmNvbXBhdAQEY1NlZwkAaQIFAWMAZAMJAQIhPQIFB3NlZ21lbnQFBGNTZWcJAAIBAhRTZWdtZW50IGluY29tcGF0aWJsZQQIY01haW5BdXgJAGkCCQBqAgUBYwBkAAoDCQECIT0CBQdtYWluQXV4BQhjTWFpbkF1eAkAAgECEVNsb3QgaW5jb21wYXRpYmxlBAljTnVtU2xvdHMJAGoCBQFjAAoDAwkBAiE9AgUEc2xvdAAACQBmAgUJY051bVNsb3RzAAEHCQACAQIeQmlnIGl0ZW1zIHNob3VsZCBvY2N1cHkgc2xvdCAwCQBmAgUJY051bVNsb3RzAAEHCQCUCgIJAMsBAgkAywECBQRoZWFkCQCaAwEJAGQCBQRjdXJyAwUKaXNQb3NpdGl2ZQUFY291bnQJAQEtAQUFY291bnQFBHRhaWwFCWlzQmlnSXRlbQELc2xvdHNHcm91cEIGAWcEYnBJbgppc1Bvc2l0aXZlB3NlZ21lbnQHbWFpbkF1eAVzdGF0cwMJAQIhPQIFAWcCAAQFc2xvdHMJALUJAgUBZwIBLAMJAGYCCQCQAwEFBXNsb3RzBQhNQVhTTE9UUwkAAgECEldyb25nIHNsb3RzIGZvcm1hdAQCczAJAJEDAgUFc2xvdHMAAAQCczEDCQBmAgkAkAMBBQVzbG90cwABCQCRAwIFBXNsb3RzAAECAAMDCQAAAgUCczACAAkAAAIFAnMxAgAHBQRicEluBAV0bXBTMAMJAQIhPQIFAnMwAgAJAQhhZGRQcm9kQgcFAnMwBQRicEluBQppc1Bvc2l0aXZlBQdzZWdtZW50BQdtYWluQXV4AAAFBXN0YXRzCQCUCgIFBGJwSW4HAwkBAiE9AgUCczECAAMIBQV0bXBTMAJfMgkAAgECHkJpZyBpdGVtIGFscmVhZHkgb2NjdXBpZXMgc2xvdAgJAQhhZGRQcm9kQgcFAnMxCAUFdG1wUzACXzEFCmlzUG9zaXRpdmUFB3NlZ21lbnQFB21haW5BdXgAAQUFc3RhdHMCXzEIBQV0bXBTMAJfMQUEYnBJbgEGZHJlc3NCBAdzZWdMaXN0BnBCeXRlcwppc1Bvc2l0aXZlBXN0YXRzCgEHc2VnbWVudAIDYWNjA3NlZwQBaggFA2FjYwJfMQQHbWFpbkF1eAkAtQkCBQNzZWcCATsDCQECIT0CCQCQAwEFB21haW5BdXgFCk5VTU1BSU5BVVgJAAIBAhRXcm9uZyBzZWdtZW50IGZvcm1hdAQBbQkAkQMCBQdtYWluQXV4AAAEAWEJAJEDAgUHbWFpbkF1eAABAwMJAAACBQFtAgAJAAACBQFhAgAHCQCUCgIJAGQCBQFqAAEIBQNhY2MCXzIEBHRtcE0JAQtzbG90c0dyb3VwQgYFAW0IBQNhY2MCXzIFCmlzUG9zaXRpdmUFAWoAAAUFc3RhdHMJAJQKAgkAZAIFAWoAAQkBC3Nsb3RzR3JvdXBCBgUBYQUEdG1wTQUKaXNQb3NpdGl2ZQUBagABBQVzdGF0cwgKAAIkbAUHc2VnTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgAABQZwQnl0ZXMKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3NlZ21lbnQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYCXzIBBWZvcnRCBgdzZWdMaXN0BnBCeXRlcwhvY2N1cGllZARmcmVlCmlzUG9zaXRpdmUJZHVja1N0YXRzAwkAZgIAAwkAkAMBBQdzZWdMaXN0CQACAQIxQXQgbGVhc3QgZHVjaywgbWluZXMgYW5kIHRyYXBzIHBhcnRzIGFyZSByZXF1aXJlZAoBB3NlZ21lbnQCA2FjYwNzZWcEAWoIBQNhY2MCXzEDCQAAAgUBagAACQCWCgQJAGQCBQFqAAEIBQNhY2MCXzIIBQNhY2MCXzMIBQNhY2MCXzQEAXAJAQpwbGFjZVByb2RCBgUDc2VnCAUDYWNjAl8yBQppc1Bvc2l0aXZlBQlkdWNrU3RhdHMIBQNhY2MCXzMIBQNhY2MCXzQJAJYKBAkAZAIFAWoAAQgFAXACXzEIBQFwAl8yCAUBcAJfMwQBdAoAAiRsBQdzZWdMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEAAAFBnBCeXRlcwUIb2NjdXBpZWQFBGZyZWUKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3NlZ21lbnQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoJAJUKAwgFAXQCXzIIBQF0Al8zCAUBdAJfNAEXY2FuV2VhckN1cnJlbnRFcXVpcG1lbnQBC2R1Y2tBc3NldElkBAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQGY3VyckVxCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssAgFfBAl0ZW1wUHJvZEIJAQZkcmVzc0IEBQZjdXJyRXEFDEVNUFRZX1BST0Q1MAYFA25pbAQIc2VnQnBBdXgJAJEDAgkAtQkCCQCRAwIFBmN1cnJFcQULc2VnQmFja3BhY2sCATsAAQQKYnVmZkVmZmVjdAMJAAACBQhzZWdCcEF1eAIAAAAEBGF1eDAJAJEDAgkAtQkCBQhzZWdCcEF1eAIBLAAAAwkAAAIFBGF1eDACAAAABAZpZHhDbnQJALUJAgUEYXV4MAIBOgQDaWR4CQCRAwIFBmlkeENudAAABANjbnQJAJEDAgUGaWR4Q250AAEDAwMDAwkAAAIFA2lkeAICMDYGCQAAAgUDaWR4AgIwNwYJAAACBQNpZHgCAjA4CQECIT0CBQNjbnQCAAcJAGYCCQENcGFyc2VJbnRWYWx1ZQEFA2NudAAABwkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4CQENcGFyc2VJbnRWYWx1ZQEFA2lkeAIBXwUKcklkeEVmZmVjdAAABAVzdGF0cwkBDGdldER1Y2tTdGF0cwQFBHRoaXMFC2R1Y2tBc3NldElkBQpidWZmRWZmZWN0BgQIbmV3UHJvZEIJAQZkcmVzc0IEBQZjdXJyRXEFCXRlbXBQcm9kQgcFBXN0YXRzCQAAAgUIbmV3UHJvZEIFCG5ld1Byb2RCARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAhwcm9wTGlzdA10ZXJyYWluQ291bnRzDWxhbmRTaXplSW5kZXgEc2lnbgMJAQIhPQIJAJADAQUIcHJvcExpc3QFBk5VTVJFUwkAAgECFldyb25nIHByb3BvcnRpb25zIGRhdGEKAQd1cGRhdGVyAgNhY2MBaQQGcmVzdWx0CQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb3BMaXN0BQFpCQBoAgkAaAIFBHNpZ24JAJEDAgUNdGVycmFpbkNvdW50cwUBaQUNbGFuZFNpemVJbmRleAMJAGYCAAAFBnJlc3VsdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIWUGFuaWMhIFBpZWNlcyBvZiB0eXBlPQkApAMBBQFpAgcsIHNpZ249CQCkAwEFBHNpZ24CEywgdGVycmFpbkNvdW50c1tpXT0JAKQDAQkAkQMCBQ10ZXJyYWluQ291bnRzBQFpAhAsIGxhbmRTaXplSW5kZXg9CQCkAwEFDWxhbmRTaXplSW5kZXgJAM0IAgUDYWNjCQCkAwEFBnJlc3VsdAoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHdXBkYXRlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgERdXBkYXRlUHJvcG9ydGlvbnMDDXRlcnJhaW5Db3VudHMNbGFuZFNpemVJbmRleARzaWduBAhwcm9wTGlzdAkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJARFrZXlSZXNQcm9wb3J0aW9ucwACCzBfMF8wXzBfMF8wAgFfCQC5CQIJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAUIcHJvcExpc3QFDXRlcnJhaW5Db3VudHMFDWxhbmRTaXplSW5kZXgFBHNpZ24CAV8BDWNvdW50VGVycmFpbnMBCHRlcnJhaW5zCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUEAAQkAzAgCCQBl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dXNlT2NjdXBpZWRWb2wBBQJ3aAQGd2hMb2Z0AwkAZgIABQkAkAMBBQJ3aAkAuQkCCQDMCAICATAJAMwIAgkApAMBBQp3aE9jY3VwaWVkCQDMCAIJAKQDAQkAZQIFB3doVG90YWwFCndoT2NjdXBpZWQJAMwIAgkApAMBBQd3aFRvdGFsBQNuaWwCAV8EBGxvZnQJALUJAgkAkQMCBQJ3aAUJd2hJZHhMT0ZUAgFfBAh3aExvY2tlZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFCXZvbExvY2tlZAQDb2NjAwkAZgIJAJADAQUEbG9mdAABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQFCndoT2NjdXBpZWQJALkJAgkAzAgCCQCkAwEFCHdoTG9ja2VkCQDMCAIJAKQDAQUDb2NjCQDMCAIJAKQDAQkAZQIJAGUCBQd3aFRvdGFsBQh3aExvY2tlZAUDb2NjCQDMCAIJAKQDAQUHd2hUb3RhbAUDbmlsAgFfCQDMCAIJAJEDAgUCd2gFC3doSWR4TGV2ZWxzCQDMCAIDCQAAAgkAkAMBCQC1CQIJAJEDAgUCd2gFCHdoSWR4UmVzAgFfBQZOVU1SRVMJAJEDAgUCd2gFCHdoSWR4UmVzAgswXzBfMF8wXzBfMAkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAndoBQh3aElkeE1hdAIBXwUGTlVNUkVTCQCRAwIFAndoBQh3aElkeE1hdAILMF8wXzBfMF8wXzAJAMwIAgkAkQMCBQJ3aAUJd2hJZHhQcm9kCQDMCAIFBndoTG9mdAUDbmlsARVnZXRXYXJlaG91c2VTcGFjZUxlZnQBCWN1cnJlbnRXaAQLb2NjdXBpZWRWb2wJARdnZXRXYXJlaG91c2VPY2N1cGllZFZvbAEFCWN1cnJlbnRXaAQPY3VycldoTG9ja2VkVm9sCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBQl2b2xMb2NrZWQJAGUCCQBlAgkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzBQtvY2N1cGllZFZvbAUPY3VycldoTG9ja2VkVm9sAQltb3ZlU3R1ZmYDCmNhcmdvUGFydHMJY3VycmVudFdoC2N1cnJlbnRQYWNrAwkBAiE9AgkAkAMBBQpjYXJnb1BhcnRzAAMJAAIBAjRjYXJnb0xpc3RTdHIgc2hvdWxkIGNvbnRhaW4gZXhhY3RseSAyICc6JyBzZXBhcmF0b3JzBAhyZXNQYXJ0cwkAtQkCCQCRAwIFCmNhcmdvUGFydHMAAAIBXwQIbWF0UGFydHMJALUJAgkAkQMCBQpjYXJnb1BhcnRzAAECAV8ECXByb2RQYXJ0cwMJAAACCQCRAwIFCmNhcmdvUGFydHMAAgIABQNuaWwJALwJAgkAkQMCBQpjYXJnb1BhcnRzAAICAV8DCQECIT0CCQCQAwEFCHJlc1BhcnRzBQZOVU1SRVMJAAIBAiBBbGwgNiByZXNvdXJjZXMgc2hvdWxkIGJlIHBhc3NlZAMJAQIhPQIJAJADAQUIbWF0UGFydHMFBk5VTVJFUwkAAgECIEFsbCA2IG1hdGVyaWFscyBzaG91bGQgYmUgcGFzc2VkBAt3aFNwYWNlTGVmdAkBFWdldFdhcmVob3VzZVNwYWNlTGVmdAEFCWN1cnJlbnRXaAQJY3VycldoUmVzCQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwIBXwQJY3VycldoTWF0CQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeE1hdAIBXwQKY3VycldoUHJvZAMJAAACCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kAgFfBA5jdXJyZW50UGFja1JlcwkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwIBXwQOY3VycmVudFBhY2tNYXQJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8ED2N1cnJlbnRQYWNrUHJvZAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwoBA212UgIDYWNjBGl0ZW0EAWkIBQNhY2MCXzEEAmFtCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0EA3docgkB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MQIFBSRhY2MwAAAAAQACAAMABAAFAAYKAQNtdlACA2FjYwRpdGVtBAFpCAUDYWNjAl8xBAJhbQkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAN3aHADCQBmAgkAkAMBBQpjdXJyV2hQcm9kBQFpCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKY3VycldoUHJvZAUBaQAABANicHADCQBmAgkAkAMBBQ9jdXJyZW50UGFja1Byb2QFAWkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ9jdXJyZW50UGFja1Byb2QFAWkAAAMJAAACBQJhbQAACQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBBQN3aHAJAM0IAggFA2FjYwJfMwkApAMBBQNicHAIBQNhY2MCXzQDCQBmAgUCYW0AAAMJAGYCBQJhbQUDYnBwCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgBQRpdGVtAhkgZnJvbSBiYWNrcGFjaywgYnV0IG9ubHkgCQCkAwEFA2JwcAIKIGF2YWlsYWJsZQQIZGVsdGFWb2wJAGUCCQEIdG9Wb2x1bWUCCQBkAgUDd2hwBQJhbQUOUFJPRFVDVFBLR1NJWkUJAQh0b1ZvbHVtZQIFA3docAUOUFJPRFVDVFBLR1NJWkUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aHAFAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwcAUCYW0JAGQCCAUDYWNjAl80BQhkZWx0YVZvbAMJAGYCCQEBLQEFAmFtBQN3aHAJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAJAKQDAQkBAS0BBQJhbQIaIGZyb20gd2FyZWhvdXNlLCBidXQgb25seSAJAKQDAQUDd2hwAgogYXZhaWxhYmxlBAhkZWx0YVZvbAkAZQIJAQh0b1ZvbHVtZQIJAGQCBQN3aHAFAmFtBQ5QUk9EVUNUUEtHU0laRQkBCHRvVm9sdW1lAgUDd2hwBQ5QUk9EVUNUUEtHU0laRQkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFA3docAUCYW0JAM0IAggFA2FjYwJfMwkApAMBCQBlAgUDYnBwBQJhbQkAZAIIBQNhY2MCXzQFCGRlbHRhVm9sBAFwAwkBAiE9AgkAkAMBBQlwcm9kUGFydHMAAAoAAiRsBQlwcm9kUGFydHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQAAAUDbmlsBQNuaWwIBQFtAl80CgEFJGYyXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQNtdlACBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjJfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDUwCQEFJGYyXzICCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgkAlgoEAAAFCmN1cnJXaFByb2QFD2N1cnJlbnRQYWNrUHJvZAgFAW0CXzQECHZvbFNhbGRvCAUBcAJfNAMJAGYCBQh2b2xTYWxkbwULd2hTcGFjZUxlZnQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICFUF0dGVtcHQgdG8gcHV0IHRvdGFsIAkApAMBBQh2b2xTYWxkbwIRIHN0dWZmLCBidXQgb25seSAJAKQDAQULd2hTcGFjZUxlZnQCFSB3YXJlaG91c2Ugc3BhY2UgbGVmdAkAmQoHCQC5CQIIBQFyAl8yAgFfCQC5CQIIBQFtAl8yAgFfCQC6CQIIBQFwAl8yAgFfCQC5CQIIBQFyAl8zAgFfCQC5CQIIBQFtAl8zAgFfCQC6CQIIBQFwAl8zAgFfBQh2b2xTYWxkbwESZXhwZWRpdGlvbkludGVybmFsAgZjYWxsZXIEdHhJZAQIdXNlckFkZHIJAKUIAQUGY2FsbGVyBAZiaWdOdW0JAQNhYnMBCQCeAwEFBHR4SWQEB2ZyZWVOdW0JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQ9QUkVTQUxFTlVNTEFORFMAAQQHbGFuZE51bQkApAMBBQdmcmVlTnVtBAxjb250aW5lbnRJZHgJAKADAQkAuwICBQZiaWdOdW0FBUZJVkVYBAh0ZXJyYWlucwkBC2dlblRlcnJhaW5zAgUGYmlnTnVtBQxjb250aW5lbnRJZHgECWNvbnRpbmVudAkAkQMCBQpjb250aW5lbnRzBQxjb250aW5lbnRJZHgEBWlzc3VlCQDCCAUJAQduZnROYW1lAgUHbGFuZE51bQIBUwkAuQkCCQDMCAIFB2xhbmROdW0JAMwIAgIBUwkAzAgCBQh0ZXJyYWlucwkAzAgCBQljb250aW5lbnQFA25pbAIBXwABAAAHBAdhc3NldElkCQC4CAEFBWlzc3VlBAJpZAkA2AQBBQdhc3NldElkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUHZnJlZU51bQABCQDMCAIFBWlzc3VlCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlMYW5kVG9Bc3NldElkAQUHbGFuZE51bQUCaWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFAmlkBQh1c2VyQWRkcgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5TGFuZE51bVRvT3duZXIBBQdsYW5kTnVtBQh1c2VyQWRkcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQJpZAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgUCaWQFCHVzZXJBZGRyAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyAAEFB2Fzc2V0SWQFA25pbAkAlAoCBQJpZAUJY29udGluZW50AQxmbGlnaHRDb21tb24DCHVzZXJBZGRyB21lc3NhZ2UDc2lnAwkBASEBCQDEEwMFB21lc3NhZ2UFA3NpZwUDcHViCQACAQIYc2lnbmF0dXJlIGRvZXMgbm90IG1hdGNoBAVwYXJ0cwkAvAkCCQCwCQEFB21lc3NhZ2UCATsECWZsaWdodExvZwkAvAkCCQCRAwIFBXBhcnRzAAACAXwEAmhwCQC1CQIJAJEDAgUJZmxpZ2h0TG9nBQhmbEhlYWx0aAIBXwQFY3VySFAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJocAAABAVuZXdIUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmhwAAEEC25ld0xvY1R4VmVyCQC1CQIJAJEDAgUFcGFydHMAAQIBOgQLbmV3TG9jYXRpb24JAJEDAgULbmV3TG9jVHhWZXIAAAQEdGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWZsaWdodExvZwULZmxUaW1lc3RhbXADAwkAZgIFBHRpbWUJAGQCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAURRklWRU1JTlVURVNNSUxMSVMGCQBmAgkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBRFGSVZFTUlOVVRFU01JTExJUwUEdGltZQkAAgEJAKwCAgkArAICCQCsAgICHHNpZ25hdHVyZSBvdXRkYXRlZDogbG9nVGltZT0JAKQDAQUEdGltZQIJLCBiY1RpbWU9CQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAl0eEZyb21Nc2cJAJEDAgULbmV3TG9jVHhWZXIAAQQGbGFzdFR4CQELdmFsdWVPckVsc2UCCQCiCAEJARFrZXlMYXN0VHhJZEJ5VXNlcgEFCHVzZXJBZGRyAgADCQECIT0CBQZsYXN0VHgFCXR4RnJvbU1zZwkAAgEJAKwCAgkArAICCQCsAgICHlR4IGlkcyBkb24ndCBtYXRjaCEgSW4gc3RhdGU6IAUGbGFzdFR4AgosIGluIG1zZzogBQl0eEZyb21Nc2cEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUIdXNlckFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAxvbGRGcm9tU3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAQIhPQIFDG9sZEZyb21TdGF0ZQUFY3VySFAJAAIBCQCsAgIJAKwCAgkArAICAgpvbGRIZWFsdGg9CQCkAwEFDG9sZEZyb21TdGF0ZQIvIGZyb20gc3RhdGUgZG9lcyBub3QgbWF0Y2ggb25lIGZyb20gZmxpZ2h0IGxvZz0JAKQDAQUFY3VySFADCQBnAgAABQVjdXJIUAkAAgECHllvdSBjYW4ndCBmbHkgd2l0aCB6ZXJvIGhlYWx0aAMJAQEhAQkBF2NhbldlYXJDdXJyZW50RXF1aXBtZW50AQULZHVja0Fzc2V0SWQJAAIBAhZFcXVpcG1lbnQgaW5jb21wYXRpYmxlBAVib251cwMJAGYCCQCQAwEFCWZsaWdodExvZwUHZmxCb251cwkAkQMCBQlmbGlnaHRMb2cFB2ZsQm9udXMCAAQIcHJvZFVzZWQDCQBmAgkAkAMBBQlmbGlnaHRMb2cFC2ZsUHJvZHNVc2VkCQCRAwIFCWZsaWdodExvZwULZmxQcm9kc1VzZWQCAAQKc2VudEFtb3VudAMDCQBmAgUFbmV3SFAAAAkAAAIFBWJvbnVzAgEkBwkBBWFzSW50AQkA/AcEBQxyZXN0Q29udHJhY3QCDXNlbmRVc2R0UHJpemUJAMwIAgUIdXNlckFkZHIFA25pbAUDbmlsAAAJAJcKBQUFbmV3SFAFC2R1Y2tBc3NldElkBQpzZW50QW1vdW50BQtuZXdMb2NhdGlvbgUIcHJvZFVzZWQBDGFwcGx5Qm9udXNlcwILbGFuZEFzc2V0SWQGcGllY2VzBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQJYXJ0UGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAAAEBGFkZDYJAGkCBQppbmZyYUxldmVsAAYEBGFkZDcJAGkCBQppbmZyYUxldmVsAAcJAGQCCQBkAgUPREFJTFlSRVNCWVBJRUNFCQBrAwUPREFJTFlSRVNCWVBJRUNFCQBkAgkAZAIFCmluZnJhTGV2ZWwFBGFkZDYJAGgCAAIFBGFkZDcABQkAawMFD0RBSUxZUkVTQllQSUVDRQUJYXJ0UGllY2VzCQBoAgUGcGllY2VzAAUBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwRhZGRyCWNsYWltTW9kZQ1sYW5kQXNzZXRJZEluBA0kdDAzMzczODM0Mjc3AwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAJQKAgUNbGFuZEFzc2V0SWRJbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAgAEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04EA2xvYwkAtQkCCQEFdmFsdWUBBQtjdXJMb2NhdGlvbgIBXwMJAQIhPQIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFMCQACAQkArAICCQCsAgICFkR1Y2sgbG9jYXRpb24gdHlwZSBpcyAJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAhEsIGJ1dCBzaG91bGQgYmUgTAkAlAoCCQCRAwIFA2xvYwUIbG9jSWR4SWQFC2R1Y2tBc3NldElkBAtsYW5kQXNzZXRJZAgFDSR0MDMzNzM4MzQyNzcCXzEEBmR1Y2tJZAgFDSR0MDMzNzM4MzQyNzcCXzIEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQECXNhdmVkVGltZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFB3RpbWVLZXkJAKwCAgkArAICAgVMYW5kIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8JAJYKBAUGZHVja0lkBQtsYW5kQXNzZXRJZAUBZAUJc2F2ZWRUaW1lARBjbGFpbVJlc0ludGVybmFsBARhZGRyBmFtb3VudAljbGFpbU1vZGUNbGFuZEFzc2V0SWRJbgMJAGYCAAAFBmFtb3VudAkAAgECD05lZ2F0aXZlIGFtb3VudAQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUJY2xhaW1Nb2RlBQ1sYW5kQXNzZXRJZEluBAhsYW5kU2l6ZQkAkQMCCAUBYwJfMwULcmVjTGFuZFNpemUEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCCAUBYwJfMwULcmVjVGVycmFpbnMECWRlbHRhVGltZQkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wCAUBYwJfNAMJAGYCAAAFCWRlbHRhVGltZQkAAgEJAKwCAgkArAICCQCsAgICJlNhdmVkIHRpbWVzdGFtcCBpcyBpbiBmdXR1cmUsIHNhdmVkID0gCQCkAwEIBQFjAl80AgwsIGN1cnJlbnQgPSAJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEFCGxhbmRTaXplBBZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQEMYXBwbHlCb251c2VzAggFAWMCXzIFBnBpZWNlcwQIYXZhaWxSZXMJAGsDBQlkZWx0YVRpbWUJAGgCBRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBQZwaWVjZXMFCURBWU1JTExJUwMJAGYCBQZhbW91bnQFCGF2YWlsUmVzCQACAQkArAICCQCsAgIJAKwCAgIiTm90IGVub3VnaCByZXNvdXJjZXMsIGF2YWlsYWJsZSA9IAkApAMBBQhhdmFpbFJlcwIOLCByZXF1ZXN0ZWQgPSAJAKQDAQUGYW1vdW50BAxuZXdEZWx0YVRpbWUJAGsDCQBlAgUIYXZhaWxSZXMFBmFtb3VudAUJREFZTUlMTElTCQBoAgUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQUGcGllY2VzBAxuZXdUaW1lc3RhbXAJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUMbmV3RGVsdGFUaW1lBAlsYW5kSW5kZXgJAGkCBQZwaWVjZXMFBVNTSVpFBApyZXNUb0NsYWltCQEJdmlydENsYWltBAUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQgFAWMCXzIECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBCAUBYwJfMgAABAljdXJyZW50V2gJAQxnZXRXYXJlaG91c2UDBQV3aEtleQUJbGFuZEluZGV4BQppbmZyYUxldmVsBARsb2Z0CQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQCAV8EC3doU3BhY2VMZWZ0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQMDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAZgIFBmFtb3VudAULd2hTcGFjZUxlZnQHCQACAQkArAICCQCsAgICBU9ubHkgCQCkAwEFC3doU3BhY2VMZWZ0Ahggc3BhY2UgbGVmdCBpbiB3YXJlaG91c2UEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBCAUBYwJfMQQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BA5jdXJyZW50UGFja1JlcwkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwIBXwQMY3VycmVudFdoUmVzCQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwIBXwQNJHQwMzY2NTEzNzUyMgMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQCWCgQJAQZhZGRSZXMFBQxjdXJyZW50V2hSZXMFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAgFCnJlc1RvQ2xhaW0CXzIJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQgFCnJlc1RvQ2xhaW0CXzIDCQAAAgUJY2xhaW1Nb2RlBQ1jbGFpbU1vZGVEdWNrCQCWCgQJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwkBBmFkZFJlcwUFDmN1cnJlbnRQYWNrUmVzBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQQFZGlzdHIJAQ1kaXN0cmlidXRlUmVzBAUMY3VycmVudFdoUmVzBQ5jdXJyZW50UGFja1JlcwUKcmVzVG9DbGFpbQULd2hTcGFjZUxlZnQEBHdoQW0JAJcDAQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQkAzAgCCAUKcmVzVG9DbGFpbQJfMgUDbmlsCQCWCgQIBQVkaXN0cgJfMQgFBWRpc3RyAl8yCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkBQR3aEFtCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUFBHdoQW0EBXdoUmVzCAUNJHQwMzY2NTEzNzUyMgJfMQQFYnBSZXMIBQ0kdDAzNjY1MTM3NTIyAl8yBAVsb2Z0TwgFDSR0MDM2NjUxMzc1MjICXzMEBWxvZnRGCAUNJHQwMzY2NTEzNzUyMgJfNAkAlwoFCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEIBQFjAl8yBQxuZXdUaW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAgFAWMCXzIFBGFkZHIFDG5ld1RpbWVzdGFtcAUDbmlsBQVicEtleQkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIFBWJwUmVzCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsBQV3aEtleQkAzAgCCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMJAMwIAgUFd2hSZXMJAMwIAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4TWF0CQDMCAIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QJAMwIAgkAuQkCCQDMCAIJAJEDAgUEbG9mdAUJdm9sTG9ja2VkCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCRAwIFBGxvZnQFCHZvbFRvdGFsBQNuaWwCAV8FA25pbAEIY2xhaW1BbGwEBGFkZHILbGFuZEFzc2V0SWQGcGllY2VzCWNsYWltTW9kZQQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQEFdmFsdWUBCQCfCAEFB3RpbWVLZXkECGF2YWlsUmVzCQBoAgkAawMJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUJc2F2ZWRUaW1lCQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwUJREFZTUlMTElTBQZwaWVjZXMJARBjbGFpbVJlc0ludGVybmFsBAUEYWRkcgUIYXZhaWxSZXMFCWNsYWltTW9kZQULbGFuZEFzc2V0SWQBDXVwSW5mcmFDb21tb24EDHNob3VsZFVzZU1hdAZjYWxsZXINcGF5bWVudEFtb3VudAtsYW5kQXNzZXRJZAQEYWRkcgkApQgBBQZjYWxsZXIEAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFE2NsYWltTW9kZVdoVGhlbkR1Y2sFC2xhbmRBc3NldElkBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQIaW5mcmFLZXkJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQgFAWMCXzIECGN1ckxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEFCGluZnJhS2V5AAADAwkBASEBBRhLU19BTExPV19CSUdfSU5GUkFfTUVSR0UJAGcCBQhjdXJMZXZlbAADBwkAAgECJkN1cnJlbnRseSBtYXggaW5mcmFzdHJ1Y3R1cmUgbGV2ZWwgPSAzBAhtYXhJbmZyYQkAZAIJAGkCCQEEc3FydAQFBnBpZWNlcwAAAAAFBERPV04ABQACBAhuZXdMZXZlbAkAZAIFCGN1ckxldmVsAAEDAwUYS1NfQUxMT1dfQklHX0lORlJBX01FUkdFCQBmAgUIbmV3TGV2ZWwFCG1heEluZnJhBwkAAgEJAKwCAgIlQ3VycmVudGx5IG1heCBpbmZyYXN0cnVjdHVyZSBsZXZlbCA9IAkApAMBBQhtYXhJbmZyYQQEY29zdAkAawMFFUluZnJhVXBncmFkZUNvc3RTVXNkdAkAaAIFBnBpZWNlcwUIbmV3TGV2ZWwFBVNTSVpFAwMJAQEhAQUMc2hvdWxkVXNlTWF0CQECIT0CBQ1wYXltZW50QW1vdW50BQRjb3N0BwkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFBGNvc3QEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBCAUBYwJfMQQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVtTGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQHbWF0VXNlZAkAawMFEUluZnJhVXBncmFkZUNvc3RTCQBoAgUGcGllY2VzBQhuZXdMZXZlbAUFU1NJWkUEBm5ld01hdAkAuQkCCQERc3VidHJhY3RNYXRlcmlhbHMDBQxzaG91bGRVc2VNYXQFBW1MaXN0BQdtYXRVc2VkAgFfBAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcggFAWMCXzIFBnBpZWNlcwUTY2xhaW1Nb2RlV2hUaGVuRHVjawQGd2hEYXRhCAULY2xhaW1SZXN1bHQCXzUEBm9sZFZvbAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQkAkQMCBQZ3aERhdGEFC3doSWR4TGV2ZWxzBApuZXdWb2xEYXRhCQC5CQIJAMwIAgkAkQMCCQC1CQIJAJEDAgUGd2hEYXRhBQt3aElkeExldmVscwIBXwAACQDMCAIJAKQDAQUIbmV3TGV2ZWwFA25pbAIBXwQGbmV3Vm9sCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBBQpuZXdWb2xEYXRhBARsb2Z0CQC1CQIJAJEDAgUGd2hEYXRhBQl3aElkeExPRlQCAV8ECm5ld0xvZnRTdHIJALkJAgkAzAgCCQCRAwIFBGxvZnQFCXZvbExvY2tlZAkAzAgCCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkCQDMCAIJAKQDAQkAZQIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQUGbmV3Vm9sBQZvbGRWb2wJAMwIAgkApAMBBQZuZXdWb2wFA25pbAIBXwkAlQoDCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCGluZnJhS2V5BQhuZXdMZXZlbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIIBQFjAl8yBQRhZGRyBQhuZXdMZXZlbAkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCCAULY2xhaW1SZXN1bHQCXzMFCGJwSWR4UmVzCQDMCAIFBm5ld01hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgkAzAgCCQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzQJALkJAgkAzAgCBQpuZXdWb2xEYXRhCQDMCAIJAJEDAgUGd2hEYXRhBQh3aElkeFJlcwkAzAgCCQCRAwIFBndoRGF0YQUId2hJZHhNYXQJAMwIAgkAkQMCBQZ3aERhdGEFCXdoSWR4UHJvZAkAzAgCBQpuZXdMb2Z0U3RyBQNuaWwCAToFA25pbAgFC2NsYWltUmVzdWx0Al8xBQhuZXdMZXZlbAUHbWF0VXNlZAEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCC2R1Y2tBc3NldElkB2RlbHRhWFAEBmx2bEtleQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkBAV4cEtleQkBCWtleUR1Y2tYUAEFC2R1Y2tBc3NldElkBAJ4cAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQV4cEtleQAABAVuZXdYUAkAZAIFAnhwBQdkZWx0YVhQBAlsdmxQb2ludHMJAQdsZXZlbFVwAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQZsdmxLZXkAAAUFbmV3WFAECWtleVBvaW50cwkBEWtleUR1Y2tGcmVlUG9pbnRzAQULZHVja0Fzc2V0SWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUGbHZsS2V5CQCRAwIFCWx2bFBvaW50cwAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQV4cEtleQUFbmV3WFAJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleVBvaW50cwkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5UG9pbnRzAAAJAJEDAgUJbHZsUG9pbnRzAAEFA25pbAUFbmV3WFABFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBGFkZHIHZGVsdGFYUAQGbHZsS2V5CQEMa2V5VXNlckxldmVsAQUEYWRkcgQFeHBLZXkJAQlrZXlVc2VyWFABBQRhZGRyBAJ4cAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQV4cEtleQAABAVuZXdYUAkAZAIFAnhwBQdkZWx0YVhQBAlsdmxQb2ludHMJAQdsZXZlbFVwAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQZsdmxLZXkAAAUFbmV3WFAECWtleVBvaW50cwkBEWtleVVzZXJGcmVlUG9pbnRzAQUEYWRkcgkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQZsdmxLZXkJAJEDAgUJbHZsUG9pbnRzAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFBXhwS2V5BQVuZXdYUAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5UG9pbnRzCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlQb2ludHMAAAkAkQMCBQlsdmxQb2ludHMAAQUDbmlsBQVuZXdYUAESYWN0aXZhdGVPbmJvYXJkQXJ0AQRhZGRyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECHJlZkJ5S2V5CQEPa2V5QWRkcmVzc1JlZkJ5AQUEYWRkcgQFcmVmQnkJAKIIAQUIcmVmQnlLZXkDCQEBIQEJAQlpc0RlZmluZWQBBQVyZWZCeQkAAgECKVlvdSBhcmUgbm90IGVsaWdpYmxlIGZvciBPTkJPQVJEIGFydGlmYWN0BAZhcnRLZXkJARxrZXlPbmJvYXJkQXJ0RHVja0FjdGl2YXRlZEJ5AQUEYWRkcgQHYXJ0RHVjawkAoggBBQZhcnRLZXkDCQEJaXNEZWZpbmVkAQUHYXJ0RHVjawkAAgEJAKwCAgIvWW91IGFscmVhZHkgdXNlZCB5b3VyIE9OQk9BUkQgYXJ0aWZhY3Qgb24gZHVjayAJAQV2YWx1ZQEFB2FydER1Y2sEEGR1Y2tBY3RpdmF0b3JLZXkJARxrZXlPbmJvYXJkQXJ0QWN0aXZhdGVkT25EdWNrAQULZHVja0Fzc2V0SWQEDWR1Y2tBY3RpdmF0b3IJAKIIAQUQZHVja0FjdGl2YXRvcktleQMJAQlpc0RlZmluZWQBBQ1kdWNrQWN0aXZhdG9yCQACAQkArAICCQCsAgIJAKwCAgIJVGhlIGR1Y2sgBQtkdWNrQXNzZXRJZAI0IGFscmVhZHkgZ290IHBvaW50cyBmcm9tIE9OQk9BUkQgYXJ0aWZhY3QgZnJvbSB1c2VyIAkBBXZhbHVlAQUNZHVja0FjdGl2YXRvcgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmFydEtleQULZHVja0Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgUQZHVja0FjdGl2YXRvcktleQUEYWRkcgUDbmlsCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFCXhwT25ib2FyZAJfMQESYWN0aXZhdGVQcmVzYWxlQXJ0AgRhZGRyDWxhbmRBc3NldElkSW4EAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFE2NsYWltTW9kZVdoVGhlbkR1Y2sFDWxhbmRBc3NldElkSW4EC2xhbmRBc3NldElkCAUBYwJfMgQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCAUBYwJfMwULcmVjTGFuZFNpemUEDWFjdGl2YXRpb25LZXkJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAwkAZgIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUNYWN0aXZhdGlvbktleQAAAAAJAAIBAiVQcmVzYWxlIGFydGlmYWN0IGlzIGFscmVhZHkgYWN0aXZhdGVkAwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCCAUBYwJfMwUKcmVjTGFuZE51bQUPUFJFU0FMRU5VTUxBTkRTCQACAQkArAICCQCsAgIJAKwCAgUKTEFORFBSRUZJWAIBIAULbGFuZEFzc2V0SWQCJSBpcyBub3QgZWxpZ2libGUgZm9yIHByZXNhbGUgYXJ0aWZhY3QEC2NsYWltUmVzdWx0CQEIY2xhaW1BbGwEBQRhZGRyBQtsYW5kQXNzZXRJZAUGcGllY2VzBRNjbGFpbU1vZGVXaFRoZW5EdWNrCQDNCAIJAM0IAgkAzQgCCAULY2xhaW1SZXN1bHQCXzEJAQxJbnRlZ2VyRW50cnkCBQ1hY3RpdmF0aW9uS2V5BQZwaWVjZXMJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfMgkAuQkCCAULY2xhaW1SZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfNAkAuQkCCAULY2xhaW1SZXN1bHQCXzUCAToBD2NoZWNrVG91cm5hbWVudAELZHVja0Fzc2V0SWQEBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFEnRvdXJuYW1lbnRDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwMJAQIhPQIJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUCAVQHAwMDCQAAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAkAAAIJAJEDAgUHZHluYW1pYwUOdER5bmFtaWNTdGF0dXMCCklOUFJPR1JFU1MHCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUDbm93BwkAAgECKllvdXIgZHVjayBpcyB0YWtpbmcgcGFydCBpbiB0aGUgdG91cm5hbWVudAkBCWFzQm9vbGVhbgEJAPwHBAUEdGhpcwIWZXhpdFRvdXJuYW1lbnRJbnRlcm5hbAkAzAgCBQtkdWNrQXNzZXRJZAUDbmlsBQNuaWwBDWNoZWNrRGVsaXZlcnkBC2R1Y2tBc3NldElkAwkBASEBBRFLU19BTExPV19ERUxJVkVSWQcEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXADCQECIT0CCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlAgFEBwQJc3RhcnRUaW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FD2xvY0lkeENvbnRpbmVudAQIZGlzdGFuY2UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJMb2NhdGlvbgUIbG9jSWR4SWQDAwkAZgIFA25vdwkAZAIFCXN0YXJ0VGltZQUSVEVOX01JTlVURVNfTUlMTElTCQBmAgADBQhkaXN0YW5jZQcJAAIBAiBZb3VyIGR1Y2sgaXMgb24gZGVsaXZlcnkgbWlzc2lvbgkBCWFzQm9vbGVhbgEJAPwHBAUEdGhpcwIUZXhpdERlbGl2ZXJ5SW50ZXJuYWwJAMwIAgULZHVja0Fzc2V0SWQFA25pbAUDbmlsARJleGl0RGVsaXZlcnlDb21tb24GC2R1Y2tBc3NldElkCmNoZWNrTmV3SFAFbmV3SFAGcmVhc29uCmNoZWNrU2NvcmUFc2NvcmUEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECXN0YXJ0VGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQ9sb2NJZHhDb250aW5lbnQECGRpc3RhbmNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyTG9jYXRpb24FCGxvY0lkeElkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQULZHVja0Fzc2V0SWQCFE5GVCBkdWNrIGlzIG9ycGhhbmVkBAloZWFsdGhLZXkJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQECWN1ckhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQUJaGVhbHRoS2V5BA5vdXRjb21lQWN0aW9ucwMDCQBnAgUIZGlzdGFuY2UAAwYDBQpjaGVja1Njb3JlCQBnAgUFc2NvcmUAAwcEBnJld2FyZAkA/AcEBQ9lY29ub215Q29udHJhY3QCEnNlbmREZWxpdmVyeVJld2FyZAkAzAgCBQVvd25lcgUDbmlsBQNuaWwDCQAAAgUGcmV3YXJkBQZyZXdhcmQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMDAwUKY2hlY2tOZXdIUAkAZgIFBW5ld0hQAAAHCQBmAgUDbm93CQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMHCQACAQImWW91ciBkdWNrIGlzIHN0aWxsIG9uIGRlbGl2ZXJ5IG1pc3Npb24EC2xvY2tlZFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIFD2Vjb25vbXlDb250cmFjdAURZGVsaXZlcnlMb2NrZWRLZXkAAAQGdW5sb2NrCQD8BwQFD2Vjb25vbXlDb250cmFjdAIUdXBkYXRlRGVsaXZlcnlMb2NrZWQJAMwIAgkAZQIFC2xvY2tlZFRvdGFsBRVNSU5fVVNEVF9GRUVfREVMSVZFUlkFA25pbAUDbmlsAwkAAAIFBnVubG9jawUGdW5sb2NrAwkAZwIAAAUJY3VySGVhbHRoBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlEZWxpdmVyeURlbGF5QnlEdWNrAQULZHVja0Fzc2V0SWQJAGQCBQlzdGFydFRpbWUFE0RFTElWRVJZX1BVTklTSE1FTlQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQLc2F2ZWRIZWFsdGgJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBA1zYXZlZExvY2F0aW9uCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQCWCgQFDm91dGNvbWVBY3Rpb25zCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQloZWFsdGhLZXkFC3NhdmVkSGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUNc2F2ZWRMb2NhdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCAg5hdXRvZXhpdFJlYXNvbgUGcmVhc29uBQNuaWwFDXNhdmVkTG9jYXRpb24FC3NhdmVkSGVhbHRoAQ1tZXJnZUludGVybmFsBgtuZXdMYW5kU2l6ZQhuZXdMZXZlbAdmb3JtdWxhBGFkZHIMbGFuZEFzc2V0SWRzB25lZWRNYXQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECHW1lcmdlSW50ZXJuYWxfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECG21lcmdlSW50ZXJuYWxfY2hlY2tEZWxpdmVyeQoBCmNoZWNrTWVyZ2UCA2FjYwtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUHdGltZUtleQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBAljb250aW5lbnQJAJEDAgUBZAUMcmVjQ29udGluZW50AwMJAQIhPQIIBQNhY2MCXzMCAAkBAiE9AggFA2FjYwJfMwUJY29udGluZW50BwkAAgECLkxhbmRzIHNob3VsZCBiZSBvbiB0aGUgc2FtZSBjb250aW5lbnQgdG8gbWVyZ2UECGxhbmRTaXplCQCRAwIFAWQFC3JlY0xhbmRTaXplBAdzaXplc0luCAUDYWNjAl8xBAFpCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALMJAgUHc2l6ZXNJbgUIbGFuZFNpemUCJ1lvdSBoYXZlbid0IHBhc3NlZCBhbGwgdGhlIGxhbmRzIG5lZWRlZAQIc2l6ZXNPdXQJAKwCAgkArwICBQdzaXplc0luBQFpCQCwAgIFB3NpemVzSW4JAGQCBQFpAAEEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEFCGxhbmRTaXplBARhcnRzCQBkAggFA2FjYwJfMgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAAABAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQIcmVxTGV2ZWwEByRtYXRjaDAFCGxhbmRTaXplAwkAAAICAVMFByRtYXRjaDAAAwMJAAACAgFNBQckbWF0Y2gwAAQDCQAAAgIBTAUHJG1hdGNoMAAFAwkAAAICAlhMBQckbWF0Y2gwAAYJAAIBAhpPbmx5IFMsIE0sIEwsIFhMIGNhbiBtZXJnZQMJAQIhPQIFCmluZnJhTGV2ZWwFCHJlcUxldmVsCQACAQIiQWxsIGxhbmRzIHNob3VsZCBiZSBtYXhlZCB0byBtZXJnZQQHbGFuZE51bQkAkQMCBQFkBQpyZWNMYW5kTnVtBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMECWRlbHRhVGltZQkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQlzYXZlZFRpbWUDCQBmAgAABQlkZWx0YVRpbWUJAAIBCQCsAgIJAKwCAgkArAICAiZTYXZlZCB0aW1lc3RhbXAgaXMgaW4gZnV0dXJlLCBzYXZlZCA9IAkApAMBBQlzYXZlZFRpbWUCDCwgY3VycmVudCA9IAkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBWJwUmVzCQEGYWRkUmVzBQkAtQkCCAUDYWNjAl80AgFfBQ10ZXJyYWluQ291bnRzBQlkZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQQFcHJvcHMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwJfNgUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wEEBmNQcm9wcwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjA18xMAUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AP///////////wEEC3N1bVRlcnJhaW5zCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIBQNhY2MCXzkFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAABBAVsYW5kcwgFA2FjYwJfNwQDaWR4CQDPCAIFBWxhbmRzBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEFA2lkeAkAAgEJAKwCAgIgWW91ciBzdGFrZWQgbGFuZHMgZG9uJ3QgY29udGFpbiAFC2xhbmRBc3NldElkBAljdXN0b21LZXkJARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEFC2xhbmRBc3NldElkBApjdXN0b21OYW1lCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1c3RvbUtleQIACQCcCgoFCHNpemVzT3V0BQRhcnRzBQljb250aW5lbnQFBWJwUmVzCQDOCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCAUDYWNjAl81CQELRGVsZXRlRW50cnkBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgFC2xhbmRBc3NldElkBQRhZGRyCQELRGVsZXRlRW50cnkBCQEQa2V5TGFuZFRvQXNzZXRJZAEFB2xhbmROdW0JAQtEZWxldGVFbnRyeQEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFC2xhbmRBc3NldElkBQRhZGRyCQELRGVsZXRlRW50cnkBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQkBC0RlbGV0ZUVudHJ5AQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkCQELRGVsZXRlRW50cnkBBQljdXN0b21LZXkJAQRCdXJuAgkA2QQBBQtsYW5kQXNzZXRJZAABAwkBAiE9AgUKY3VzdG9tTmFtZQIACQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEFCmN1c3RvbU5hbWUFA25pbAUDbmlsBQVwcm9wcwkA0QgCBQVsYW5kcwkBBXZhbHVlAQUDaWR4CQBkAggFA2FjYwJfOAUGcGllY2VzBQtzdW1UZXJyYWlucwUGY1Byb3BzBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvcExpc3QJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQRhZGRyBAhsYW5kc1N0cgkAoggBBQhsYW5kc0tleQQHbGFuZHNJbgMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwUDbmlsBAVjb250MAkAkQMCCQC1CQIICQEFdmFsdWUBCQDsBwEJANkEAQkAkQMCBQxsYW5kQXNzZXRJZHMAAAtkZXNjcmlwdGlvbgIBXwUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEFBWNvbnQwAgswXzBfMF8wXzBfMAIBXwQBcgoAAiRsBQxsYW5kQXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCcCgoFB2Zvcm11bGEAAAIACQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwUDbmlsBQhwcm9wTGlzdAUHbGFuZHNJbgAACQC1CQICCzBfMF8wXzBfMF8wAgFfBQljb250UHJvcHMKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCmNoZWNrTWVyZ2UCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFBAljb250aW5lbnQIBQFyAl8zBAxjb250aW5lbnRJZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAzwgCBQpjb250aW5lbnRzBQljb250aW5lbnQJAKwCAgITVW5rbm93biBjb250aW5lbnQ6IAUJY29udGluZW50BAh0ZXJyYWlucwkBE2dlblRlcnJhaW5zRm9yTWVyZ2UCCAUBcgJfOQkAaQIJAQ9udW1QaWVjZXNCeVNpemUBBQtuZXdMYW5kU2l6ZQUFU1NJWkUEB2ZyZWVOdW0JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQ9QUkVTQUxFTlVNTEFORFMAAQQKbmV3TGFuZE51bQkApAMBBQdmcmVlTnVtBAVpc3N1ZQkAwggFCQEHbmZ0TmFtZQIFCm5ld0xhbmROdW0FC25ld0xhbmRTaXplCQC5CQIJAMwIAgUKbmV3TGFuZE51bQkAzAgCBQtuZXdMYW5kU2l6ZQkAzAgCBQh0ZXJyYWlucwkAzAgCBQljb250aW5lbnQFA25pbAIBXwABAAAHBAdhc3NldElkCQC4CAEFBWlzc3VlBA5uZXdMYW5kQXNzZXRJZAkA2AQBBQdhc3NldElkBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwkAZgIFB25lZWRNYXQAAAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwUHbmVlZE1hdAIBXwQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIEDHN0YWtlZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAkAlAoCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCAUBcgJfNQMJAGYCCQCQAwEIBQFyAl83AAAJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIIBQFyAl83AgFfCQELRGVsZXRlRW50cnkBBQhsYW5kc0tleQkBDEludGVnZXJFbnRyeQIFCXBpZWNlc0tleQMJAGYCCAUBcgJfOAUMc3Rha2VkUGllY2VzAAAJAGUCBQxzdGFrZWRQaWVjZXMIBQFyAl84CQEMSW50ZWdlckVudHJ5AgkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQdmcmVlTnVtAAEFBWlzc3VlCQELU3RyaW5nRW50cnkCCQEQa2V5TGFuZFRvQXNzZXRJZAEFCm5ld0xhbmROdW0FDm5ld0xhbmRBc3NldElkCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUObmV3TGFuZEFzc2V0SWQFBGFkZHIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFCm5ld0xhbmROdW0FBGFkZHIJAQxJbnRlZ2VyRW50cnkCCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQ5uZXdMYW5kQXNzZXRJZAgFAXICXzIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFDm5ld0xhbmRBc3NldElkBQhuZXdMZXZlbAkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQ5uZXdMYW5kQXNzZXRJZAUEYWRkcgUIbmV3TGV2ZWwJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCAUBcgJfNAkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAJALkJAggFAXICXzYCAV8JAQtTdHJpbmdFbnRyeQIJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQUJY29udGluZW50CQC5CQIIBQFyA18xMAIBXwkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAgUJY29udGluZW50CQDMCAICAUwJAMwIAgUObmV3TGFuZEFzc2V0SWQFA25pbAIBXwkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUEYWRkcgABBQdhc3NldElkBQ5uZXdMYW5kQXNzZXRJZAEDczJtAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgFNAAMCBFNTU1MFBGFkZHIFDGxhbmRBc3NldElkcwAAAQNtMmwCBGFkZHIMbGFuZEFzc2V0SWRzCQENbWVyZ2VJbnRlcm5hbAYCAUwABAIDU01NBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwAEAQRsMnhsAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgJYTAAFAgVTU1NNTAUEYWRkcgUMbGFuZEFzc2V0SWRzCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMALwEGeGwyeHhsAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgNYWEwABgIDTFhMBQRhZGRyBQxsYW5kQXNzZXRJZHMJAGgCBRFJbmZyYVVwZ3JhZGVDb3N0UwA2AQttZXJnZUNvbW1vbgIEYWRkcgxsYW5kQXNzZXRJZHMEByRtYXRjaDAJAJADAQUMbGFuZEFzc2V0SWRzAwkAAAIABAUHJG1hdGNoMAkBA3MybQIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAMFByRtYXRjaDAJAQNtMmwCBQRhZGRyBQxsYW5kQXNzZXRJZHMDCQAAAgAFBQckbWF0Y2gwCQEEbDJ4bAIFBGFkZHIFDGxhbmRBc3NldElkcwMJAAACAAIFByRtYXRjaDAJAQZ4bDJ4eGwCBQRhZGRyBQxsYW5kQXNzZXRJZHMJAAIBAg1Vbmtub3duIG1lcmdlARVjaGVja091dGRhdGVkRGVsaXZlcnkBCHVzZXJBZGRyBARkdWNrCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAwMFEUtTX0FMTE9XX0RFTElWRVJZCQEJaXNEZWZpbmVkAQUEZHVjawcEC2R1Y2tBc3NldElkCQEFdmFsdWUBBQRkdWNrBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQDbG9jCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04CAV8ECXN0YXJ0VGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUPbG9jSWR4Q29udGluZW50AwMJAQIhPQIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFEBgkAZgIIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQBkAgUJc3RhcnRUaW1lBRJURU5fTUlOVVRFU19NSUxMSVMFA25pbAQJaGVhbHRoS2V5CQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkAwkAZwIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNsb2MFCGxvY0lkeElkAAMEBnJld2FyZAkA/AcEBQ9lY29ub215Q29udHJhY3QCEnNlbmREZWxpdmVyeVJld2FyZAkAzAgCBQh1c2VyQWRkcgUDbmlsBQNuaWwDCQAAAgUGcmV3YXJkBQZyZXdhcmQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzQgCCQDNCAIEC2xvY2tlZFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIFD2Vjb25vbXlDb250cmFjdAURZGVsaXZlcnlMb2NrZWRLZXkAAAQGdW5sb2NrCQD8BwQFD2Vjb25vbXlDb250cmFjdAIUdXBkYXRlRGVsaXZlcnlMb2NrZWQJAMwIAgkAZQIFC2xvY2tlZFRvdGFsBRVNSU5fVVNEVF9GRUVfREVMSVZFUlkFA25pbAUDbmlsAwkAAAIFBnVubG9jawUGdW5sb2NrAwkAZwIAAAkBEUBleHRyTmF0aXZlKDEwNTUpAQUJaGVhbHRoS2V5BQNuaWwECnB1bmlzaG1lbnQJAPwHBAUEdGhpcwILc2F2ZUludGVnZXIJAMwIAgkBFmtleURlbGl2ZXJ5RGVsYXlCeUR1Y2sBBQtkdWNrQXNzZXRJZAkAzAgCCQBkAgUJc3RhcnRUaW1lBRNERUxJVkVSWV9QVU5JU0hNRU5UBQNuaWwFA25pbAMJAAACBQpwdW5pc2htZW50BQpwdW5pc2htZW50BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAQxJbnRlZ2VyRW50cnkCBQloZWFsdGhLZXkJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkCQELU3RyaW5nRW50cnkCBQZsb2NLZXkJARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFA25pbAEGcHJvbG9nAQFpAwMJAQIhPQIIBQFpDG9yaWdpbkNhbGxlcgUMcmVzdENvbnRyYWN0CQELdmFsdWVPckVsc2UCCQCgCAEJAQprZXlCbG9ja2VkAAcHCQACAQIfQ29udHJhY3RzIGFyZSB1bmRlciBtYWludGVuYW5jZQQIdXNlckFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyCQDNCAIJARVjaGVja091dGRhdGVkRGVsaXZlcnkBBQh1c2VyQWRkcgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhc3RUeElkQnlVc2VyAQUIdXNlckFkZHIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAEMcHJvbG9nRmxpZ2h0AQFpAwMJAQIhPQIIBQFpDG9yaWdpbkNhbGxlcgUMcmVzdENvbnRyYWN0CQELdmFsdWVPckVsc2UCCQCgCAEJAQprZXlCbG9ja2VkAAcHCQACAQIfQ29udHJhY3RzIGFyZSB1bmRlciBtYWludGVuYW5jZQkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5TGFzdFR4SWRCeVVzZXIBCQClCAEIBQFpDG9yaWdpbkNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBQNuaWwtAWkBDWNvbnN0cnVjdG9yVjEBCHJlc3RBZGRyAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleVJlc3RBZGRyZXNzAAUIcmVzdEFkZHIFA25pbAFpAQtzYXZlSW50ZWdlcgIDa2V5BmFtb3VudAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECIHNhdmVJbnRlZ2VyIGlzIG5vdCBwdWJsaWMgbWV0aG9kCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQNrZXkFBmFtb3VudAUDbmlsAWkBCnNldEJsb2NrZWQBCWlzQmxvY2tlZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQxCb29sZWFuRW50cnkCCQEKa2V5QmxvY2tlZAAFCWlzQmxvY2tlZAUDbmlsAWkBCXN0YWtlTGFuZAAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkxBTkRQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMJAQIhPQIIBQVhc3NldAZpc3N1ZXIFBHRoaXMJAAIBAhdVbmtub3duIGlzc3VlciBvZiB0b2tlbgMJAQEhAQkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFCkxBTkRQUkVGSVgJAAIBCQCsAgIJAKwCAgIJT25seSBORlQgBQpMQU5EUFJFRklYAhQgdG9rZW5zIGFyZSBhY2NlcHRlZAQLbGFuZE51bVNpemUJALACAggFBWFzc2V0BG5hbWUABAQHbGFuZE51bQMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgNYWEwJALMCAgULbGFuZE51bVNpemUAAwMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgJYTAkAswICBQtsYW5kTnVtU2l6ZQACCQCzAgIFC2xhbmROdW1TaXplAAEDCQEBIQEJAQlpc0RlZmluZWQBCQC2CQEFB2xhbmROdW0JAAIBCQCsAgICHkNhbm5vdCBwYXJzZSBsYW5kIG51bWJlciBmcm9tIAgFBWFzc2V0BG5hbWUEC2xhbmRBc3NldElkCQDYBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQDCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAhIgaXMgYWxyZWFkeSBzdGFrZWQEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBXByb3BzCQERdXBkYXRlUHJvcG9ydGlvbnMDBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQQMcmVzQnlDb250S2V5CQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJAJEDAgUBZAUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQxyZXNCeUNvbnRLZXkCCzBfMF8wXzBfMF8wAgFfBBB1cGRhdGVkQ29udFByb3BzCQC5CQIJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAUJY29udFByb3BzBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQIBXwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQdhZGRyZXNzBAhsYW5kc1N0cgkAoggBBQhsYW5kc0tleQQFbGFuZHMDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQVsYW5kcwULbGFuZEFzc2V0SWQJAAIBCQCsAgICIllvdXIgc3Rha2VkIGxhbmRzIGFscmVhZHkgY29udGFpbiAFC2xhbmRBc3NldElkAwkAZwIJAJADAQUFbGFuZHMFGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgkAAgEJAKwCAgkArAICAhlZb3VyIGFscmVhZHkgc3Rha2VkIG1heCAoCQCkAwEFGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgIHKSBsYW5kcwQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQdhZGRyZXNzBAlvbGRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAECXdsZ1Jlc3VsdAkA/AcEBQt3bGdDb250cmFjdAISb25TdGFrZVVuc3Rha2VMYW5kCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFB2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIJAM0IAgUFbGFuZHMFC2xhbmRBc3NldElkAgFfCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkJAGQCBQlvbGRQaWVjZXMFBnBpZWNlcwkAzAgCCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQFB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUHYWRkcmVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFC2xhbmRBc3NldElkBQdhZGRyZXNzBQppbmZyYUxldmVsCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAFBXByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIFDHJlc0J5Q29udEtleQUQdXBkYXRlZENvbnRQcm9wcwUDbmlsBQ1wcm9sb2dBY3Rpb25zBQl3bGdSZXN1bHQBaQELdW5zdGFrZUxhbmQBDWxhbmRBc3NldElkSW4EDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBQ1jbGFpbU1vZGVEdWNrBQ1sYW5kQXNzZXRJZEluBAtsYW5kQXNzZXRJZAgFAWMCXzIEAWQIBQFjAl8zBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFBGFkZHIEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFcHJvcHMJARF1cGRhdGVQcm9wb3J0aW9ucwMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAxyZXNCeUNvbnRLZXkJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQkAkQMCBQFkBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFDHJlc0J5Q29udEtleQILMF8wXzBfMF8wXzACAV8EEHVwZGF0ZWRDb250UHJvcHMJALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQljb250UHJvcHMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BAgFfBAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcgULbGFuZEFzc2V0SWQFBnBpZWNlcwUNY2xhaW1Nb2RlRHVjawQFbGFuZHMJAL0JAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQhsYW5kc0tleQIAAgFfBANpZHgJAM8IAgUFbGFuZHMFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQUDaWR4CQACAQkArAICAiBZb3VyIHN0YWtlZCBsYW5kcyBkb24ndCBjb250YWluIAULbGFuZEFzc2V0SWQEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEDmdvdlJlbGVhc2VUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFC2dvdkNvbnRyYWN0CQEVa2V5VXNlckd3bFJlbGVhc2VUaW1lAQUEYWRkcgAAAwkAZwIFDmdvdlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICOVlvdXIgZ1dMIGFyZSB0YWtpbmcgcGFydCBpbiB2b3RpbmcsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5nb3ZSZWxlYXNlVGltZQQOYXJiUmVsZWFzZVRpbWUJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFC3dsZ0NvbnRyYWN0CQEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBQRhZGRyAAAFDmFyYml0cmFnZURlbGF5AwkAZgIFDmFyYlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICP1lvdXIgc3Rha2VkIGxhbmRzIHRvb2sgcGFydCBpbiBhcmJpdHJhZ2UsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5hcmJSZWxlYXNlVGltZQQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIEDHN0YWtlZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAQJbmV3UGllY2VzAwkAZgIFBnBpZWNlcwUMc3Rha2VkUGllY2VzAAAJAGUCBQxzdGFrZWRQaWVjZXMFBnBpZWNlcwQJd2xnUmVzdWx0CQD8BwQFC3dsZ0NvbnRyYWN0AhJvblN0YWtlVW5zdGFrZUxhbmQJAMwIAgUEYWRkcgUDbmlsBQNuaWwJAJQKAgkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFC2xhbmRBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUEYWRkcgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMABQVwcm9wcwkAzAgCCQELU3RyaW5nRW50cnkCBQxyZXNCeUNvbnRLZXkFEHVwZGF0ZWRDb250UHJvcHMJAMwIAgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al8yCQC5CQIIBQtjbGFpbVJlc3VsdAJfMwIBOgkAzAgCAwkAZgIJAJADAQUFbGFuZHMAAQkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAgkA0QgCBQVsYW5kcwkBBXZhbHVlAQUDaWR4AgFfCQELRGVsZXRlRW50cnkBBQhsYW5kc0tleQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5BQluZXdQaWVjZXMFA25pbAUNcHJvbG9nQWN0aW9ucwUJd2xnUmVzdWx0AWkBCXN0YWtlRHVjawAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkRVQ0tQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMDCQECIT0CCAUFYXNzZXQGaXNzdWVyBQ1pbmN1YmF0b3JBZGRyCQECIT0CCAUFYXNzZXQGaXNzdWVyBQticmVlZGVyQWRkcgcJAAIBCQCsAgIJAKwCAgISVW5rbm93biBpc3N1ZXIgb2YgBQpEVUNLUFJFRklYAgYgdG9rZW4DCQEBIQEJAQhjb250YWlucwIIBQVhc3NldARuYW1lBQpEVUNLUFJFRklYCQACAQkArAICCQCsAgICCU9ubHkgTkZUIAUKRFVDS1BSRUZJWAIUIHRva2VucyBhcmUgYWNjZXB0ZWQECmFzc2V0SWRTdHIJANgEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQphc3NldElkU3RyAwkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQISIGlzIGFscmVhZHkgc3Rha2VkAwkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAAgEJAKwCAgIdWW91IGFscmVhZHkgc3Rha2VkIG9uZSBkdWNrOiAIBQVhc3NldARuYW1lBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQphc3NldElkU3RyBAhsb2NhdGlvbgkAoggBBQZsb2NLZXkEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQphc3NldElkU3RyBAhiYWNrcGFjawkAoggBBQVicEtleQQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFCmFzc2V0SWRTdHIEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQUKYXNzZXRJZFN0cgAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd0aW1lS2V5CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYCQDYBAEFB2Fzc2V0SWQFB2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlEdWNrSWRUb093bmVyAQUKYXNzZXRJZFN0cgUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzBQphc3NldElkU3RyBQNuaWwDCQEJaXNEZWZpbmVkAQUIbG9jYXRpb24FA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmxvY0tleQUPREVGQVVMVExPQ0FUSU9OBQNuaWwDCQEJaXNEZWZpbmVkAQUIYmFja3BhY2sFA25pbAkAzggCCQDNCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkCGjA6MF8wXzBfMF8wXzA6MF8wXzBfMF8wXzA6BQNuaWwJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFCWN1ckhlYWx0aAUNcHJvbG9nQWN0aW9ucwFpAQt1bnN0YWtlRHVjawEKYXNzZXRJZFN0cgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQHYXNzZXRJZAkA2QQBBQphc3NldElkU3RyBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQphc3NldElkU3RyAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAAgEJAKwCAgkArAICAglUaGUgZHVjayAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFB2FkZHJlc3MJAAIBAhdTdGFrZWQgTkZUIGlzIG5vdCB5b3VycwMJAQ9jaGVja1RvdXJuYW1lbnQBBQphc3NldElkU3RyCQACAQIbdW5zdGFrZUR1Y2tfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQphc3NldElkU3RyCQACAQIZdW5zdGFrZUR1Y2tfY2hlY2tEZWxpdmVyeQQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFCmFzc2V0SWRTdHIEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQUKYXNzZXRJZFN0cgAABAZoZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGYCBQVtYXhIUAUGaGVhbHRoCQACAQkArAICCQCsAgICGVBsZWFzZSBoZWFsIHlvdXIgZHVjayB0byAJAKQDAQUFbWF4SFACE2hwIGJlZm9yZSB1bnN0YWtpbmcJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHYXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBBQd0aW1lS2V5CQDMCAIJAQtEZWxldGVFbnRyeQEFCWtleUhlYWx0aAkAzAgCCQELRGVsZXRlRW50cnkBCQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgkAzAgCCQELRGVsZXRlRW50cnkBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYBQphc3NldElkU3RyBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MFA25pbAUNcHJvbG9nQWN0aW9ucwFpAQhjbGFpbVJlcwIGYW1vdW50DmxhbmRBc3NldElkU3RyBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAUNY2xhaW1Nb2RlRHVjawUObGFuZEFzc2V0SWRTdHIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDOCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAawMFB3hwQ2xhaW0FBmFtb3VudAUFTVVMVDgCXzEJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzIJALkJAggFBnJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfNAkAuQkCCAUGcmVzdWx0Al81AgE6BQ1wcm9sb2dBY3Rpb25zCQCRAwIIBQZyZXN1bHQCXzMFCGJwSWR4UmVzAWkBDGNsYWltUmVzVG9XSAIGYW1vdW50DmxhbmRBc3NldElkU3RyBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAULY2xhaW1Nb2RlV2gFDmxhbmRBc3NldElkU3RyCQCUCgIJAM4IAgkAzQgCCQDNCAIJAM4IAggFBnJlc3VsdAJfMQgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgkAawMFB3hwQ2xhaW0FBmFtb3VudAUFTVVMVDgCXzEJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzIJALkJAggFBnJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfNAkAuQkCCAUGcmVzdWx0Al81AgE6BQ1wcm9sb2dBY3Rpb25zCQCRAwIIBQZyZXN1bHQCXzUFCHdoSWR4UmVzAWkBBmZsaWdodAIHbWVzc2FnZQNzaWcEDXByb2xvZ0FjdGlvbnMJAQxwcm9sb2dGbGlnaHQBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQBZgkBDGZsaWdodENvbW1vbgMFCHVzZXJBZGRyBQdtZXNzYWdlBQNzaWcEBW5ld0hQCAUBZgJfMQQLZHVja0Fzc2V0SWQIBQFmAl8yBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04EC25ld0xvY2F0aW9uCAUBZgJfNAMJAAACBQtuZXdMb2NhdGlvbgULY3VyTG9jYXRpb24JAAIBAiJZb3UgY2FuJ3QgZmx5IHRvIHRoZSBzYW1lIGxvY2F0aW9uBAZuZXdMb2MJALUJAgULbmV3TG9jYXRpb24CAV8EBmlzVG91cgkAAAIJAJEDAgUGbmV3TG9jBQpsb2NJZHhUeXBlAgFUBAdpc0RlbGl2CQAAAgkAkQMCBQZuZXdMb2MFCmxvY0lkeFR5cGUCAUQEBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAljdXJyZW50RXEJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssBA0kdDA3MDQ0NzcwNTQ0CQERc3VidHJhY3RFcXVpcG1lbnQCBQljdXJyZW50RXEIBQFmAl81BAVuZXdFcQgFDSR0MDcwNDQ3NzA1NDQCXzEED3Nob3VsZFplcm9CdWZmcwgFDSR0MDcwNDQ3NzA1NDQCXzIEDSR0MDcwNTQ3NzM2NjUDCQEBIQEJAQlvbk1pc3Npb24CBRJ0b3VybmFtZW50Q29udHJhY3QFC2N1ckxvY2F0aW9uAwkBASEBCQEPaXNVc3VhbExvY2F0aW9uAQULbmV3TG9jYXRpb24JAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ABQMJAGYCBQVuZXdIUAAACQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAkAlAoCBQtjdXJMb2NhdGlvbgAAAwkBDmlzSW5Ub3VybmFtZW50AgUSdG91cm5hbWVudENvbnRyYWN0BQtjdXJMb2NhdGlvbgMJAQEhAQkBDmlzSW5Ub3VybmFtZW50AgUSdG91cm5hbWVudENvbnRyYWN0BQtuZXdMb2NhdGlvbgkAAgECKllvdXIgZHVjayBpcyB0YWtpbmcgcGFydCBpbiB0aGUgdG91cm5hbWVudAQFc2NvcmUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZuZXdMb2MFCGxvY0lkeElkBAZjdXJMb2MJALUJAgULY3VyTG9jYXRpb24CAV8EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAMJAQIhPQIFBXNjb3JlCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBmN1ckxvYwUIbG9jSWR4SWQAAQkBDGNoZWF0QXR0ZW1wdAMFC2N1ckxvY2F0aW9uBQtuZXdMb2NhdGlvbgAHAwkAZgIFBW5ld0hQAAAECWxvY2FsQmVzdAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QJARprZXlCZXN0UmVzdWx0QnlUb3VyQW5kRHVjawIFBmxhc3RJZAULZHVja0Fzc2V0SWQAAAQIdXBkTG9jYWwDCQBmAgUFc2NvcmUFCWxvY2FsQmVzdAkA/AcEBRJ0b3VybmFtZW50Q29udHJhY3QCDnNhdmVEdWNrUmVzdWx0CQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFBXNjb3JlBQNuaWwFA25pbAUEdW5pdAMJAAACBQh1cGRMb2NhbAUIdXBkTG9jYWwJAJQKAgULbmV3TG9jYXRpb24FBW5ld0hQCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCUCgIFC2N1ckxvY2F0aW9uAAADCQEBIQEJAQxpc0luRGVsaXZlcnkBBQtjdXJMb2NhdGlvbgQJbG9jSGVhbHRoCQEQYXNTdHJpbmdJbnRUdXBsZQEJAPwHBAUEdGhpcwIQYXV0b0V4aXREZWxpdmVyeQkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQVuZXdIUAkAzAgCAwUHaXNEZWxpdgICMTACAjExCQDMCAIAAAUDbmlsBQNuaWwDCQAAAgUJbG9jSGVhbHRoBQlsb2NIZWFsdGgDBQdpc0RlbGl2BQlsb2NIZWFsdGgDCQBmAgUFbmV3SFAAAAkAlAoCBQtuZXdMb2NhdGlvbgUFbmV3SFAJAJQKAggFCWxvY0hlYWx0aAJfMQAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkBASEBBQdpc0RlbGl2CQACAQIkWW91ciBkdWNrIGlzIHRha2luZyBwYXJ0IGluIGRlbGl2ZXJ5AwkBASEBCQEMaXNJbkRlbGl2ZXJ5AQULbmV3TG9jYXRpb24JAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ADQQFc2NvcmUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZuZXdMb2MFCGxvY0lkeElkBAZjdXJMb2MJALUJAgULY3VyTG9jYXRpb24CAV8DCQECIT0CBQVzY29yZQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZjdXJMb2MFCGxvY0lkeElkAAEJAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ADgMDCQBmAgUFbmV3SFAAAAkAZgIAAwUFc2NvcmUHCQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAQJbG9jSGVhbHRoCQEQYXNTdHJpbmdJbnRUdXBsZQEJAPwHBAUEdGhpcwIQYXV0b0V4aXREZWxpdmVyeQkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQVuZXdIUAkAzAgCAgUxNS0xNwkAzAgCBQVzY29yZQUDbmlsBQNuaWwDCQAAAgUJbG9jSGVhbHRoBQlsb2NIZWFsdGgFCWxvY0hlYWx0aAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQJbG9jVG9TYXZlCAUNJHQwNzA1NDc3MzY2NQJfMQQIaHBUb1NhdmUIBQ0kdDA3MDU0NzczNjY1Al8yCQCUCgIJAM4IAgkAzggCCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGbG9jS2V5BQlsb2NUb1NhdmUJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQVuZXdIUAUDbmlsBQ1wcm9sb2dBY3Rpb25zAwUPc2hvdWxkWmVyb0J1ZmZzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wBQNuaWwFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkAwkAZgIFBW5ld0hQAAAFD3hwU3VjY2Vzc0ZsaWdodAUMeHBGYWlsRmxpZ2h0Al8xCAUBZgJfMwFpAQRoZWFsAwpxdWFudGl0eUwxCnF1YW50aXR5TDIKcXVhbnRpdHlMMwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDAwMJAGYCAAAFCnF1YW50aXR5TDEGCQBmAgAABQpxdWFudGl0eUwyBgkAZgIAAAUKcXVhbnRpdHlMMwkAAgECG1F1YW50aXR5IGNhbm5vdCBiZSBuZWdhdGl2ZQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECFGhlYWxfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECEmhlYWxfY2hlY2tEZWxpdmVyeQQDcXRzCQDMCAIFCnF1YW50aXR5TDEJAMwIAgUKcXVhbnRpdHlMMgkAzAgCBQpxdWFudGl0eUwzBQNuaWwECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAlvbGRIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGcCBQlvbGRIZWFsdGgFBW1heEhQCQACAQkArAICCQCsAgICD0hQIHNob3VsZCBiZSA8IAkApAMBBQVtYXhIUAIIIHRvIGhlYWwEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwoBC2l0ZXJhdGVQcm9kAgNhY2MGcmVjaXBlBAFuCAUDYWNjAl8yBAF4AwkAZgIJAJADAQUIcHJvZExpc3QFAW4JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAUBbgAAAwkAZgIAAwUBbgQBcQkAkQMCBQNxdHMFAW4DCQBmAgUBcQUBeAkAAgEJAKwCAgkArAICCQCsAgICDllvdSBoYXZlIG9ubHkgCQCkAwEFAXgCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQFuCQCVCgMJAM0IAggFA2FjYwJfMQkApAMBCQBlAgUBeAUBcQkAZAIFAW4AAQkAZAIIBQNhY2MCXzMJAGgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCBQZyZWNpcGUCAV8FCnJJZHhFZmZlY3QFAXEJAJUKAwkAzQgCCAUDYWNjAl8xCQCkAwEFAXgJAGQCBQFuAAEIBQNhY2MCXzMEBnJlc3VsdAoAAiRsBRBwcm9kdWN0aW9uTWF0cml4CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQNuaWwAAAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQtpdGVyYXRlUHJvZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyBAluZXdIZWFsdGgJAJcDAQkAzAgCBQVtYXhIUAkAzAgCCQBkAgUJb2xkSGVhbHRoCAUGcmVzdWx0Al8zBQNuaWwJAJQKAgkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJbmV3SGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQC5CQIIBQZyZXN1bHQCXzECAV8FA25pbAIBOgUDbmlsBQ1wcm9sb2dBY3Rpb25zCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQJAGgCBQZ4cEhlYWwJAGQCCQBkAgUKcXVhbnRpdHlMMQUKcXVhbnRpdHlMMgUKcXVhbnRpdHlMMwJfMQUJbmV3SGVhbHRoAWkBBmhlYWxFUwAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhZoZWFsRVNfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECFGhlYWxFU19jaGVja0RlbGl2ZXJ5BAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJb2xkSGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBmAgUJb2xkSGVhbHRoAAAJAAIBAihIUCBzaG91bGQgYmUgMCB0byBjYWxsIEVtZXJnZW5jeSBTZXJ2aWNlBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvZExpc3QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8EDW1lZEtpdEFtb3VudDEDCQBmAgkAkAMBBQhwcm9kTGlzdAAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAAAABA1tZWRLaXRBbW91bnQyAwkAZgIJAJADAQUIcHJvZExpc3QAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAEAAAQNbWVkS2l0QW1vdW50MwMJAGYCCQCQAwEFCHByb2RMaXN0AAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAACAAADAwMJAGYCBQ1tZWRLaXRBbW91bnQxAAAGCQBmAgUNbWVkS2l0QW1vdW50MgAABgkAZgIFDW1lZEtpdEFtb3VudDMAAAkAAgECH1lvdSBoYXZlIHRvIHVzZSBvd24gTWVkaWNhbCBLaXQECGV4aXN0U3RyCQCdCAIFD2Vjb25vbXlDb250cmFjdAkBDmtleUVzV2FyZWhvdXNlAAQMZXhpc3RBbW91bnRzAwkBCWlzRGVmaW5lZAEFCGV4aXN0U3RyCQC8CQIJAQV2YWx1ZQEFCGV4aXN0U3RyAgFfBQNuaWwEC2V4aXN0QW1vdW50AwkAZgIJAJADAQUMZXhpc3RBbW91bnRzAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQxleGlzdEFtb3VudHMAAAAAAwkAZwIAAAULZXhpc3RBbW91bnQJAAIBAjlUaGVyZSBhcmUgbm8gTWVkaWNhbCBLaXRzIEwxIGF0IEVtZXJnZW5jeSBTZXJ2aWNlIHN0b3JhZ2UECW5ld0hlYWx0aAkAZAIFCW9sZEhlYWx0aAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4AAACAV8FCnJJZHhFZmZlY3QEBW5ld0VTCQC5CQIJAMwIAgkApAMBCQBlAgULZXhpc3RBbW91bnQAAQkA0QgCBQxleGlzdEFtb3VudHMAAAIBXwQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAAAAgFfBAh0b3RhbE1hdAkBEmdldFJlY2lwZU1hdGVyaWFscwEFBnJlY2lwZQQJc2VsbFByaWNlCQBrAwkAaAIFCHRvdGFsTWF0BQpFU1NFTExDT0VGBRBSRVNPVVJDRVBSSUNFTUlOCQBoAgUFTVVMVDgFDlBST0RVQ1RQS0dTSVpFAwkBAiE9AggFA3BtdAZhbW91bnQFCXNlbGxQcmljZQkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFCXNlbGxQcmljZQQGcmVzdWx0CQEIYXNTdHJpbmcBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIPdXBkYXRlRXNTdG9yYWdlCQDMCAIFBW5ld0VTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC3VzZHRBc3NldElkBQlzZWxsUHJpY2UFA25pbAkAlAoCCQDOCAIJAM0IAgUNcHJvbG9nQWN0aW9ucwkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJbmV3SGVhbHRoCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFCHhwQ2FsbEVTAl8xBQZyZXN1bHQBaQEOdXBkYXRlQmFja3BhY2sCC2R1Y2tBc3NldElkB25ld1BhY2sDCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQFB25ld1BhY2sFA25pbAUHbmV3UGFjawFpAQ9jb21taXRGb3JSYW5kb20ABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQLZmluaXNoQmxvY2sJAGQCBQZoZWlnaHQFC3JhbmRvbURlbGF5BARhZGRyCQClCAEIBQFpBmNhbGxlcgkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQlrZXlDb21taXQBBQRhZGRyBQtmaW5pc2hCbG9jawUDbmlsBQ1wcm9sb2dBY3Rpb25zBQtmaW5pc2hCbG9jawFpAQhidXlTTGFuZAAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEDCQECIT0CCAUDcG10BmFtb3VudAUHRVhQVVNEVAkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFB0VYUFVTRFQEBnJlc3VsdAkBEmV4cGVkaXRpb25JbnRlcm5hbAIIBQFpBmNhbGxlcggFAWkNdHJhbnNhY3Rpb25JZAQLYWNyZXNSZXN1bHQJAQVhc0ludAEJAPwHBAUNYWNyZXNDb250cmFjdAIJYnVybkFjcmVzCQDMCAIFDFNfQ09TVF9BQ1JFUwUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIJAM0IAggFBnJlc3VsdAJfMQkBDlNjcmlwdFRyYW5zZmVyAwUPZWNvbm9teUNvbnRyYWN0CAUDcG10BmFtb3VudAULdXNkdEFzc2V0SWQICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCUCgIICAUGcmVzdWx0Al8yAl8xBQthY3Jlc1Jlc3VsdAFpAQpleHBlZGl0aW9uAgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAFmCQEMZmxpZ2h0Q29tbW9uAwUIdXNlckFkZHIFB21lc3NhZ2UFA3NpZwQLZHVja0Fzc2V0SWQIBQFmAl8yBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVtTGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMGBQVtTGlzdAUMRVhQTUFURVJJQUxTAgFfBAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQJY3VycmVudEVxCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAQNJHQwODExMDI4MTE5OQkBEXN1YnRyYWN0RXF1aXBtZW50AgUJY3VycmVudEVxCAUBZgJfNQQFbmV3RXEIBQ0kdDA4MTEwMjgxMTk5Al8xBA9zaG91bGRaZXJvQnVmZnMIBQ0kdDA4MTEwMjgxMTk5Al8yBAFlCQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAJpZAgIBQFlAl8yAl8xBAZyZXN1bHQDCQBnAgAACAUBZgJfMQkAlQoDCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgAAAkAzAgCCQELU3RyaW5nRW50cnkCBQVlcUtleQUFbmV3RXEFA25pbAIAAAAJAJUKAwkAzggCCAUBZQJfMQMFD3Nob3VsZFplcm9CdWZmcwkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAUDbmlsCQDNCAIJAM0IAgkAzQgCCQDNCAIFA25pbAkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAggIBQFlAl8yAl8yCQDMCAICAUwJAMwIAgUCaWQFA25pbAIBXwkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAgFAWYCXzEJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQVuZXdFcQkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIFBm5ld01hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgUCaWQIBQFmAl8zAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIaZXhwZWRpdGlvbl9jaGVja1RvdXJuYW1lbnQDCQENY2hlY2tEZWxpdmVyeQEFC2R1Y2tBc3NldElkCQACAQIYZXhwZWRpdGlvbl9jaGVja0RlbGl2ZXJ5BAthY3Jlc1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ1hY3Jlc0NvbnRyYWN0AglidXJuQWNyZXMJAMwIAgUMU19DT1NUX0FDUkVTBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCVCgMIBQZyZXN1bHQCXzIIBQZyZXN1bHQCXzMFC2FjcmVzUmVzdWx0AWkBEGJ1eVNMYW5kRm9yQWNyZXMABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUMYWNyZXNBc3NldElkCQACAQIUQUNSRVMgcGF5bWVudHMgb25seSEDCQECIT0CBQNhbXQFDFNfQ09TVF9BQ1JFUwkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFDFNfQ09TVF9BQ1JFUwQGcmVzdWx0CQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAthY3Jlc1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ1hY3Jlc0NvbnRyYWN0AglidXJuQWNyZXMJAMwIAgUMU19DT1NUX0FDUkVTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFDGFjcmVzQXNzZXRJZAUDYW10BQNuaWwJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCUCgIICAUGcmVzdWx0Al8yAl8xBQthY3Jlc1Jlc3VsdAFpAQx1cGdyYWRlSW5mcmEBC2xhbmRBc3NldElkBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJAQ11cEluZnJhQ29tbW9uBAYIBQFpBmNhbGxlcgAABQtsYW5kQXNzZXRJZAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQUNcHJvbG9nQWN0aW9ucwgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkCQBrAwUOeHBVcGdyYWRlSW5mcmEIBQZyZXN1bHQCXzMFBU1VTFQ4Al8xCAUGcmVzdWx0Al8yAWkBEGFjdGl2YXRlQXJ0aWZhY3QCB2FydE5hbWUObGFuZEFzc2V0SWRPcHQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAZyZXN1bHQEByRtYXRjaDAFB2FydE5hbWUDCQAAAgIHUFJFU0FMRQUHJG1hdGNoMAkBEmFjdGl2YXRlUHJlc2FsZUFydAIFBGFkZHIFDmxhbmRBc3NldElkT3B0AwkAAAICB09OQk9BUkQFByRtYXRjaDAJARJhY3RpdmF0ZU9uYm9hcmRBcnQBBQRhZGRyCQACAQIQVW5rbm93biBhcnRpZmFjdAkAzggCBQZyZXN1bHQFDXByb2xvZ0FjdGlvbnMBaQEKbWVyZ2VMYW5kcwEMbGFuZEFzc2V0SWRzBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJAQttZXJnZUNvbW1vbgIJAKUIAQgFAWkGY2FsbGVyBQxsYW5kQXNzZXRJZHMJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEFDXByb2xvZ0FjdGlvbnMICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQd4cE1lcmdlAl8xCAUGcmVzdWx0Al8yAWkBDWNhcmdvRXhjaGFuZ2UCDGNhcmdvTGlzdFN0cgtsYW5kQXNzZXRJZAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQKY2FyZ29QYXJ0cwkAvAkCBQxjYXJnb0xpc3RTdHICAToEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMAwkBAiE9AgkAkQMCBQNsb2MFCGxvY0lkeElkBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgIbRHVjayBzaG91bGQgYmUgb24gdGhlIGxhbmQgBQtsYW5kQXNzZXRJZAQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAQJY3VycmVudFdoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBnJlc3VsdAkBCW1vdmVTdHVmZgMFCmNhcmdvUGFydHMFCWN1cnJlbnRXaAULY3VycmVudFBhY2sEBGxvZnQJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwQFbG9mdE8JAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQIBQZyZXN1bHQCXzcEBWxvZnRGCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUIBQZyZXN1bHQCXzcJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAggFBnJlc3VsdAJfNAkAzAgCCAUGcmVzdWx0Al81CQDMCAIIBQZyZXN1bHQCXzYFA25pbAIBOgkAzAgCCQELU3RyaW5nRW50cnkCBQV3aEtleQkAugkCCQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCCAUGcmVzdWx0Al8xCQDMCAIIBQZyZXN1bHQCXzIJAMwIAggFBnJlc3VsdAJfMwkAzAgCCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAJEDAgUEbG9mdAUIdm9sVG90YWwFA25pbAIBXwUDbmlsAgE6BQNuaWwFDXByb2xvZ0FjdGlvbnMBaQENc2F2ZVdhcmVob3VzZQIFd2hTdHILbGFuZEFzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEAndoCQC8CQIFBXdoU3RyAgE6AwkBAiE9AgkAkAMBBQJ3aAAFCQACAQIwd2FyZWhvdXNlIHN0cmluZyBzaG91bGQgY29udGFpbiA0ICc6JyBzZXBhcmF0b3JzBAVsb2Z0TAkAkQMCCQC1CQIJAJEDAgUCd2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkBAVsb2Z0TwkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBWxvZnRUCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFAndoBQt3aElkeExldmVscwQFbG9mdEYJAGUCCQBlAgUFbG9mdFQJAQ1wYXJzZUludFZhbHVlAQUFbG9mdEwFBWxvZnRPBAhuZXdXaFN0cgkAugkCCQDMCAIJAJEDAgUCd2gFC3doSWR4TGV2ZWxzCQDMCAIJAJEDAgUCd2gFCHdoSWR4UmVzCQDMCAIJAJEDAgUCd2gFCHdoSWR4TWF0CQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCCQC5CQIJAMwIAgUFbG9mdEwJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAKQDAQUFbG9mdFQFA25pbAIBXwUDbmlsAgE6CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkFCG5ld1doU3RyBQNuaWwFCG5ld1doU3RyAWkBEmZpeFdhcmVob3VzZUZvcm1hdAELbGFuZEFzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAJ3aAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEBWxvZnRMCQEFYXNJbnQBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIacmVjYWxjTG9ja2VkVm9sdW1lUkVBRE9OTFkJAMwIAgULbGFuZEFzc2V0SWQJAMwIAgUCd2gFA25pbAUDbmlsBAVsb2Z0TwkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBWxvZnRUCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFAndoBQt3aElkeExldmVscwQFbG9mdEYJAGUCCQBlAgUFbG9mdFQFBWxvZnRMBQVsb2Z0TwQIbmV3V2hTdHIJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgkAuQkCCQDMCAIJAKQDAQUFbG9mdEwJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAKQDAQUFbG9mdFQFA25pbAIBXwUDbmlsAgE6CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkFCG5ld1doU3RyBQNuaWwFCG5ld1doU3RyAWkBF2ZpeENvbnRpbmVudFByb3BvcnRpb25zAQxsYW5kQXNzZXRJZHMDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQKAQhnZXRQcm9wcwIDYWNjBGNvbnQJAM0IAgUDYWNjCQELdmFsdWVPckVsc2UCCQCiCAEJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQUEY29udAILMF8wXzBfMF8wXzAEAXAKAAIkbAUKY29udGluZW50cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZ2V0UHJvcHMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFCgEJcHJvY2Vzc29yAgNhY2MLbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQUFU1NJWkUEBGNvbnQJAJEDAgUBZAUMcmVjQ29udGluZW50BA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEDGNvbnRpbmVudElkeAkBBXZhbHVlAQkAzwgCBQpjb250aW5lbnRzBQRjb250BAljb250UHJvcHMJALUJAgkAkQMCBQNhY2MFDGNvbnRpbmVudElkeAIBXwQHdXBkYXRlZAkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCWNvbnRQcm9wcwUNdGVycmFpbkNvdW50cwUJbGFuZEluZGV4AAECAV8EByRtYXRjaDAFBGNvbnQDCQAAAgIIQW1lcmljYXMFByRtYXRjaDAJAMwIAgUHdXBkYXRlZAkAzAgCCQCRAwIFA2FjYwABCQDMCAIJAJEDAgUDYWNjAAIJAMwIAgkAkQMCBQNhY2MAAwkAzAgCCQCRAwIFA2FjYwAEBQNuaWwDCQAAAgIGRXVyb3BlBQckbWF0Y2gwCQDMCAIJAJEDAgUDYWNjAAAJAMwIAgUHdXBkYXRlZAkAzAgCCQCRAwIFA2FjYwACCQDMCAIJAJEDAgUDYWNjAAMJAMwIAgkAkQMCBQNhY2MABAUDbmlsAwkAAAICBEFzaWEFByRtYXRjaDAJAMwIAgkAkQMCBQNhY2MAAAkAzAgCCQCRAwIFA2FjYwABCQDMCAIFB3VwZGF0ZWQJAMwIAgkAkQMCBQNhY2MAAwkAzAgCCQCRAwIFA2FjYwAEBQNuaWwDCQAAAgIGQWZyaWNhBQckbWF0Y2gwCQDMCAIJAJEDAgUDYWNjAAAJAMwIAgkAkQMCBQNhY2MAAQkAzAgCCQCRAwIFA2FjYwACCQDMCAIFB3VwZGF0ZWQJAMwIAgkAkQMCBQNhY2MABAUDbmlsAwkAAAICB09jZWFuaWEFByRtYXRjaDAJAMwIAgkAkQMCBQNhY2MAAAkAzAgCCQCRAwIFA2FjYwABCQDMCAIJAJEDAgUDYWNjAAIJAMwIAgkAkQMCBQNhY2MAAwkAzAgCBQd1cGRhdGVkBQNuaWwJAAIBAg93cm9uZyBjb250aW5lbnQEAXIKAAIkbAUMbGFuZEFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUBcAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJcHJvY2Vzc29yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhVMaXN0IHNpemUgZXhjZWVkcyAxMDAJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFf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BQpjdXN0b21OYW1lAgJfXwkAAgEJAKwCAgIeTmFtZSBzaG91bGQgbm90IGNvbnRhaW4gJ19fJzogBQpjdXN0b21OYW1lAwkAZgIJALECAQUKY3VzdG9tTmFtZQUKTUFYTkFNRUxFTgkAAgEJAKwCAgIZTmFtZSB0b28gbG9uZywgbWF4TGVuZ3RoPQkApAMBBQpNQVhOQU1FTEVOBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQHYWN0aW9ucwQHJG1hdGNoMAUEdHlwZQMJAAACAgdBQ0NPVU5UBQckbWF0Y2gwBApyZXZlcnNlS2V5CQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEFCmN1c3RvbU5hbWUECW5hbWVPd25lcgkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFCW5hbWVPd25lcgkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQQNYWRkclRvTmFtZUtleQkBFmtleUFkZHJlc3NUb0N1c3RvbU5hbWUBBQRhZGRyBAdvbGROYW1lCQCiCAEFDWFkZHJUb05hbWVLZXkEB2ZyZWVPbGQDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ1hZGRyVG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQRhZGRyCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQx4cEN1c3RvbU5hbWUCXzEDCQAAAgIETEFORAUHJG1hdGNoMAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFB2Fzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQKcmV2ZXJzZUtleQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA5hc3NldFRvTmFtZUtleQkBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQUHYXNzZXRJZAQHb2xkTmFtZQkAoggBBQ5hc3NldFRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ5hc3NldFRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUHYXNzZXRJZAgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgUMeHBDdXN0b21OYW1lAl8xAwkAAAICBERVQ0sFByRtYXRjaDAEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQdhc3NldElkAwMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQYJAQEhAQkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKRFVDS1BSRUZJWAINIGlzIG5vdCB5b3VycwQKcmV2ZXJzZUtleQkBGmtleUR1Y2tDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA5hc3NldFRvTmFtZUtleQkBGmtleUR1Y2tBc3NldElkVG9DdXN0b21OYW1lAQUHYXNzZXRJZAQHb2xkTmFtZQkAoggBBQ5hc3NldFRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ5hc3NldFRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUHYXNzZXRJZAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFB2Fzc2V0SWQFDHhwQ3VzdG9tTmFtZQJfMQkAAgECE1Vua25vd24gZW50aXR5IHR5cGUJAJQKAgkAzggCCQDNCAIFB2FjdGlvbnMJAQ5TY3JpcHRUcmFuc2ZlcgMFD2Vjb25vbXlDb250cmFjdAgFA3BtdAZhbW91bnQFC3VzZHRBc3NldElkBQ1wcm9sb2dBY3Rpb25zAAABaQEMc2V0UmVmZXJyYWxzAglvbGRQbGF5ZXIJbmV3UGxheWVyAwkBAiE9AggFAWkPY2FsbGVyUHVibGljS2V5BQNwdWIJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUJb2xkUGxheWVyCQACAQkArAICAhFJbnZhbGlkIGFkZHJlc3M6IAUJb2xkUGxheWVyAwkBASEBCQEJaXNEZWZpbmVkAQkApggBBQluZXdQbGF5ZXIJAAIBCQCsAgICEUludmFsaWQgYWRkcmVzczogBQluZXdQbGF5ZXIEB29sZHNLZXkJAQlrZXlPbGRpZXMABARvbGRzCQCiCAEFB29sZHNLZXkEBm9sZGllcwMJAQlpc0RlZmluZWQBBQRvbGRzCQC8CQIJAQV2YWx1ZQEFBG9sZHMCAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQZvbGRpZXMFCW5ld1BsYXllcgkAAgEJAKwCAgUJbmV3UGxheWVyAiYgaXMgbm90IG5ld2JpZSAoYWxyZWFkeSBoYXMgcmVmZXJyYWxzKQQIcmVmQnlLZXkJAQ9rZXlBZGRyZXNzUmVmQnkBBQluZXdQbGF5ZXIEBXJlZkJ5CQCiCAEFCHJlZkJ5S2V5AwMJAQlpc0RlZmluZWQBBQVyZWZCeQkBCWlzRGVmaW5lZAEJAKYIAQkBBXZhbHVlAQUFcmVmQnkHCQACAQkArAICCQCsAgIFCW5ld1BsYXllcgIUIGFscmVhZHkgaGFzIHJlZkJ5OiAJAQV2YWx1ZQEFBXJlZkJ5BAdyZWZzS2V5CQETa2V5QWRkcmVzc1JlZmVycmFscwEFCW9sZFBsYXllcgQEcmVmcwkAoggBBQdyZWZzS2V5BAlyZWZzQXJyYXkDCQEJaXNEZWZpbmVkAQUEcmVmcwkAvAkCCQEFdmFsdWUBBQRyZWZzAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUJcmVmc0FycmF5BQluZXdQbGF5ZXIJAAIBCQCsAgIJAKwCAgkArAICBQlvbGRQbGF5ZXICEiBhbHJlYWR5IGNvbnRhaW5zIAUJbmV3UGxheWVyAhEgd2l0aGluIHJlZmVycmFscwQHbmV3UmVmcwkAugkCCQDNCAIFCXJlZnNBcnJheQUJbmV3UGxheWVyAgFfBAduZXdPbGRzAwkBD2NvbnRhaW5zRWxlbWVudAIFBm9sZGllcwUJb2xkUGxheWVyCQEFdmFsdWUBBQRvbGRzCQC6CQIJAM0IAgUGb2xkaWVzBQlvbGRQbGF5ZXICAV8JAJQKAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFCHJlZkJ5S2V5BQlvbGRQbGF5ZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgUHcmVmc0tleQUHbmV3UmVmcwkAzAgCCQELU3RyaW5nRW50cnkCBQdvbGRzS2V5BQduZXdPbGRzBQNuaWwFDXByb2xvZ0FjdGlvbnMAAAFpARBkaXN0cmlidXRlUG9pbnRzBQhzdHJlbmd0aAhhY2N1cmFjeQlpbnRlbGxlY3QJZW5kdXJhbmNlCWRleHRlcml0eQQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEC3ZpcnRXbGdEYXRhCQEJYXNBbnlMaXN0AQkA/AcEBQt3bGdDb250cmFjdAISY2hlY2tXbGdYcFJFQURPTkxZCQDMCAIFBGFkZHIFA25pbAUDbmlsBA12aXJ0V2xnUG9pbnRzCQEFYXNJbnQBCQCRAwIFC3ZpcnRXbGdEYXRhAAEEDSR0MDk2NTg0OTY5NzQDCQBnAgAABQ12aXJ0V2xnUG9pbnRzCQCUCgIAAAUDbmlsBAdkZWx0YVhQCQEFYXNJbnQBCQD8BwQFC3dsZ0NvbnRyYWN0Agl0YWtlV2xnWHAJAMwIAgUEYWRkcgUDbmlsBQNuaWwDCQAAAgUHZGVsdGFYUAUHZGVsdGFYUAkAlAoCBQ12aXJ0V2xnUG9pbnRzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEMa2V5VXNlckxldmVsAQUEYWRkcgkBBWFzSW50AQkAkQMCBQt2aXJ0V2xnRGF0YQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEJa2V5VXNlclhQAQUEYWRkcgkBBWFzSW50AQkAkQMCBQt2aXJ0V2xnRGF0YQACBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4ECXdsZ1BvaW50cwgFDSR0MDk2NTg0OTY5NzQCXzEECndsZ0FjdGlvbnMIBQ0kdDA5NjU4NDk2OTc0Al8yBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECmZyZWVLZXlBY2MJARFrZXlVc2VyRnJlZVBvaW50cwEFBGFkZHIEDWZyZWVQb2ludHNBY2MJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCmZyZWVLZXlBY2MAAAUJd2xnUG9pbnRzBAtmcmVlS2V5RHVjawkBEWtleUR1Y2tGcmVlUG9pbnRzAQULZHVja0Fzc2V0SWQEDmZyZWVQb2ludHNEdWNrCQELdmFsdWVPckVsc2UCCQCfCAEFC2ZyZWVLZXlEdWNrAAAEB3N1bUZyZWUJAGQCBQ1mcmVlUG9pbnRzQWNjBQ5mcmVlUG9pbnRzRHVjawQPc3VtVG9EaXN0cmlidXRlCQBkAgkAZAIJAGQCCQBkAgUIc3RyZW5ndGgFCGFjY3VyYWN5BQlpbnRlbGxlY3QFCWVuZHVyYW5jZQUJZGV4dGVyaXR5AwkAZgIFD3N1bVRvRGlzdHJpYnV0ZQUHc3VtRnJlZQkAAgEJAKwCAgkArAICAg9UaGVyZSBhcmUgb25seSAJAKQDAQUHc3VtRnJlZQIaIGZyZWUgcG9pbnRzIHRvIGRpc3RyaWJ1dGUECGNoYXJzS2V5CQEMa2V5RHVja0NoYXJzAQULZHVja0Fzc2V0SWQEBWNoYXJzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUIY2hhcnNLZXkCCTBfMF8wXzBfMAIBXwQGbmV3QWNjCQBlAgUNZnJlZVBvaW50c0FjYwUPc3VtVG9EaXN0cmlidXRlCQCUCgIJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQpmcmVlS2V5QWNjAwkAZgIAAAUGbmV3QWNjAAAFBm5ld0FjYwkAzAgCCQEMSW50ZWdlckVudHJ5AgULZnJlZUtleUR1Y2sDCQBmAgAABQZuZXdBY2MJAGQCBQ5mcmVlUG9pbnRzRHVjawUGbmV3QWNjBQ5mcmVlUG9pbnRzRHVjawkAzAgCCQELU3RyaW5nRW50cnkCBQhjaGFyc0tleQkAuQkCCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhclN0cmVuZ3RoBQhzdHJlbmd0aAkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJBY2N1cmFjeQUIYWNjdXJhY3kJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFySW50ZWxsZWN0BQlpbnRlbGxlY3QJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRW5kdXJhbmNlBQllbmR1cmFuY2UJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFyRGV4dGVyaXR5BQlkZXh0ZXJpdHkFA25pbAIBXwUDbmlsBQ1wcm9sb2dBY3Rpb25zBQp3bGdBY3Rpb25zAAABaQEcc3BsaXRCeUdsb2JhbFdlaWdodHNSRUFET05MWQEGYW1vdW50CQCUCgIFA25pbAkBEmdldE5lZWRlZE1hdGVyaWFscwEFBmFtb3VudAFpASRzcGxpdEJ5R2xvYmFsQW5kTG9jYWxXZWlnaHRzUkVBRE9OTFkDCW1hdEFtb3VudAlyZXNBbW91bnQIdGVycmFpbnMEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQUIdGVycmFpbnMJAJQKAgUDbmlsCQCUCgIJARJnZXROZWVkZWRNYXRlcmlhbHMBBQltYXRBbW91bnQJARNkaXN0cmlidXRlQnlXZWlnaHRzAgUJcmVzQW1vdW50BQ10ZXJyYWluQ291bnRzAWkBE2dldEJhY2twYWNrUkVBRE9OTFkBC2R1Y2tBc3NldElkCQCUCgIFA25pbAkAuQkCCQELZ2V0QmFja3BhY2sBCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAIBOgFpARRnZXRXYXJlaG91c2VSRUFET05MWQELbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAACQCUCgIFA25pbAkAugkCCQEMZ2V0V2FyZWhvdXNlAwkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwCAToBaQEKc2F2ZUxhc3RUeAADCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFD2Vjb25vbXlDb250cmFjdAkAzAgCBRJ0b3VybmFtZW50Q29udHJhY3QJAMwIAgUNYWNyZXNDb250cmFjdAUDbmlsCAUBaQZjYWxsZXIJAAIBAg1BY2Nlc3MgZGVuaWVkCQCUCgIJAQZwcm9sb2cBBQFpACoBaQEPdXBkYXRlRHVja1N0YXRzAgtkdWNrQXNzZXRJZAdkZWx0YVhQAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkCQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAUHZGVsdGFYUAFpAQ51cGRhdGVBY2NTdGF0cwIEYWRkcgdkZWx0YVhQAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQt3bGdDb250cmFjdAkAzAgCBQ9lY29ub215Q29udHJhY3QJAMwIAgUNYWNyZXNDb250cmFjdAUDbmlsCAUBaQZjYWxsZXIJAAIBAg1BY2Nlc3MgZGVuaWVkCQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFB2RlbHRhWFABaQEJZXF1aXBEdWNrAQllcXVpcG1lbnQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhllcXVpcER1Y2tfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECF2VxdWlwRHVja19jaGVja0RlbGl2ZXJ5BAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQLY3VycmVudFNlZ3MJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywCAV8EBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVuZXdFcQkAtQkCBQllcXVpcG1lbnQCAV8DCQECIT0CCQCQAwEFBW5ld0VxBQtOVU1TRUdNRU5UUwkAAgECFldyb25nIGVxdWlwbWVudCBzdHJpbmcECXRlbXBQcm9kQgkBBmRyZXNzQgQFC2N1cnJlbnRTZWdzCQEOcHJvZFN0clRvQnl0ZXMBCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QGBQNuaWwECHNlZ0JwQXV4CQCRAwIJALUJAgkAkQMCBQVuZXdFcQULc2VnQmFja3BhY2sCATsAAQQKYnVmZkVmZmVjdAMJAAACBQhzZWdCcEF1eAIAAAAEBGF1eDAJAJEDAgkAtQkCBQhzZWdCcEF1eAIBLAAAAwkAAAIFBGF1eDACAAAABAZpZHhDbnQJALUJAgUEYXV4MAIBOgQDaWR4CQCRAwIFBmlkeENudAAABANjbnQJAJEDAgUGaWR4Q250AAEDAwMDAwkAAAIFA2lkeAICMDYGCQAAAgUDaWR4AgIwNwYJAAACBQNpZHgCAjA4CQECIT0CBQNjbnQCAAcJAGYCCQENcGFyc2VJbnRWYWx1ZQEFA2NudAAABwkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4CQENcGFyc2VJbnRWYWx1ZQEFA2lkeAIBXwUKcklkeEVmZmVjdAAABAVzdGF0cwkBDGdldER1Y2tTdGF0cwQFBHRoaXMFC2R1Y2tBc3NldElkBQpidWZmRWZmZWN0BgQIbmV3UHJvZEIJAQZkcmVzc0IEBQVuZXdFcQUJdGVtcFByb2RCBwUFc3RhdHMECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCG5ld1Byb2RCCQCUCgIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQVlcUtleQUJZXF1aXBtZW50CQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCBQpuZXdQcm9kU3RyBQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAcJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAgJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAkJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAoJAMwIAgkApAMBCQCRAwIFBXN0YXRzAAsFA25pbAIBXwUDbmlsBQ1wcm9sb2dBY3Rpb25zAAABaQEPZm9ydGlmaWNhdGVMYW5kAgtsYW5kQXNzZXRJZARwbGFuBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQLZHVja0Fzc2V0SWQJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIABAlkdWNrU3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAAABwQHZm9ydEtleQkBF2tleUZvcnRpZmljYXRpb25zQnlMYW5kAQULbGFuZEFzc2V0SWQEDGN1cnJlbnRGb3J0cwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFB2ZvcnRLZXkCDDowXzE1OjBfMTg6MAIBXwQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplBQVTU0laRQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEAndoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQHY3VyTG9mdAkAtQkCCQCRAwIFAndoBQl3aElkeExPRlQCAV8EBGN1ck8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdjdXJMb2Z0BQt2b2xPY2N1cGllZAQEY3VyRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB2N1ckxvZnQFB3ZvbEZyZWUECG5ld0ZvcnRzCQC1CQIFBHBsYW4CAV8EDyR0MDEwMzgxMjEwMzkyNwkBBWZvcnRCBgUMY3VycmVudEZvcnRzCQEOcHJvZFN0clRvQnl0ZXMBCQCRAwIFAndoBQl3aElkeFByb2QFBGN1ck8FBGN1ckYGBQNuaWwECXRlbXBQcm9kQggFDyR0MDEwMzgxMjEwMzkyNwJfMQQFdGVtcE8IBQ8kdDAxMDM4MTIxMDM5MjcCXzIEBXRlbXBGCAUPJHQwMTAzODEyMTAzOTI3Al8zBA8kdDAxMDM5MzAxMDQwMjYJAQVmb3J0QgYFCG5ld0ZvcnRzBQl0ZW1wUHJvZEIFBXRlbXBPBQV0ZW1wRgcFCWR1Y2tTdGF0cwQIbmV3UHJvZEIIBQ8kdDAxMDM5MzAxMDQwMjYCXzEEBG5ld08IBQ8kdDAxMDM5MzAxMDQwMjYCXzIEBG5ld0YIBQ8kdDAxMDM5MzAxMDQwMjYCXzMECm5ld1Byb2RTdHIJAQ5ieXRlc1RvUHJvZFN0cgEFCG5ld1Byb2RCBApuZXdMb2Z0U3RyCQC5CQIJAMwIAgkAkQMCBQdjdXJMb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQRuZXdPCQDMCAIJAKQDAQUEbmV3RgkAzAgCCQCRAwIFB2N1ckxvZnQFCHZvbFRvdGFsBQNuaWwCAV8JAJQKAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFB2ZvcnRLZXkFBHBsYW4JAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCBQpuZXdQcm9kU3RyCQDMCAIFCm5ld0xvZnRTdHIFA25pbAIBOgUDbmlsBQ1wcm9sb2dBY3Rpb25zAAABaQETaW5pdER1Y2tUb3VyQXR0ZW1wdAELZHVja0Fzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFEnRvdXJuYW1lbnRDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAljdXJIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEDHRvdXJMb2NhdGlvbgkArAICCQCkAwEFBmxhc3RJZAIEX1RfMAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAUJY3VySGVhbHRoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFBW1heEhQCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFC2N1ckxvY2F0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUMdG91ckxvY2F0aW9uBQNuaWwFDHRvdXJMb2NhdGlvbgFpAQxicmVha0F0dGVtcHQABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQJY3VyTG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1ckxvY0tleQUPREVGQVVMVExPQ0FUSU9OAwkBAiE9AgkAkQMCCQC1CQIFC2N1ckxvY2F0aW9uAgFfBQpsb2NJZHhUeXBlAgFUCQACAQIiWW91ciBkdWNrIGlzIG5vdCBpbiB0aGUgdG91cm5hbWVudAQLc2F2ZWRIZWFsdGgJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBA1zYXZlZExvY2F0aW9uCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQCUCgIJAM0IAgkAzQgCBQ1wcm9sb2dBY3Rpb25zCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAULc2F2ZWRIZWFsdGgJAQtTdHJpbmdFbnRyeQIFCWN1ckxvY0tleQUNc2F2ZWRMb2NhdGlvbgULY3VyTG9jYXRpb24BaQEWZXhpdFRvdXJuYW1lbnRJbnRlcm5hbAELZHVja0Fzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg1BY2Nlc3MgZGVuaWVkBAtzYXZlZEhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQEDXNhdmVkTG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAULc2F2ZWRIZWFsdGgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ1zYXZlZExvY2F0aW9uBQNuaWwHAWkBFGV4aXREZWxpdmVyeUludGVybmFsAQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDUFjY2VzcyBkZW5pZWQEAWUJARJleGl0RGVsaXZlcnlDb21tb24GBQtkdWNrQXNzZXRJZAcAAAIABwAACQCUCgIJAM4IAggFAWUCXzEIBQFlAl8yBwFpARBhdXRvRXhpdERlbGl2ZXJ5BAtkdWNrQXNzZXRJZAVuZXdIUAZyZWFzb24Fc2NvcmUDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg1BY2Nlc3MgZGVuaWVkBAFlCQESZXhpdERlbGl2ZXJ5Q29tbW9uBgULZHVja0Fzc2V0SWQGBQVuZXdIUAUGcmVhc29uBgUFc2NvcmUJAJQKAggFAWUCXzEJAJQKAggFAWUCXzMIBQFlAl80AWkBDnByZXBhcmVSb2JiZXJ5AgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQEBIQEJAMQTAwUHbWVzc2FnZQUDc2lnBQNwdWIJAAIBAhhzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQGd2xnQW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFCndsZ0Fzc2V0SWQJAAIBAhVXTEdPTEQgcGF5bWVudHMgb25seSEEBXBhcnRzCQC1CQIJALAJAQUHbWVzc2FnZQIBfAMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECFFdyb25nIG1lc3NhZ2UgZm9ybWF0BAtkdWNrQXNzZXRJZAkAkQMCBQVwYXJ0cwAAAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIecHJlcGFyZVJvYmJlcnlfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECHHByZXBhcmVSb2JiZXJ5X2NoZWNrRGVsaXZlcnkEB3JvYkNvc3QICQEOZ2V0Um9iYmVyeURhdGECBQR0aGlzBQtkdWNrQXNzZXRJZAJfMQMJAGYCBQdyb2JDb3N0BQZ3bGdBbXQJAAIBCQCsAgIJAKwCAgkArAICAghQYXltZW50IAkApAMBBQZ3bGdBbXQCDCA8IHJlcXVpcmVkIAkApAMBBQdyb2JDb3N0BApjYW5kaWRhdGVzCQC1CQIJAJEDAgUFcGFydHMAAQIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJZHVja1N0YXRlCQELdmFsdWVPckVsc2UCCQCfCAEJARNrZXlEdWNrUm9iYmVyeVN0YXRlAQULZHVja0Fzc2V0SWQAAAQKbG9ja2VkTGFuZAkBC3ZhbHVlT3JFbHNlAgkAoggBCQETa2V5TG9ja2VkTGFuZEJ5RHVjawEFC2R1Y2tBc3NldElkAgAEB2xhbmRFVEEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleUxhbmRDb29sZG93bkVUQQEFCmxvY2tlZExhbmQAAAMDCQECIT0CBQlkdWNrU3RhdGUFC2R1Y2tJZHhGcmVlCQBmAgUHbGFuZEVUQQUDbm93BwkAAgEJAKwCAgInWW91IGFscmVhZHkgc3RhcnRlZCByb2JiaW5nLCB3YWl0IHRpbGwgCQCkAwEFB2xhbmRFVEEKAQdjaGVja2VyAgNhY2MLbGFuZEFzc2V0SWQEBXN0YXRlCQELdmFsdWVPckVsc2UCCQCfCAEJARNrZXlMYW5kUm9iYmVyeVN0YXRlAQULbGFuZEFzc2V0SWQAAAQLY29vbGRvd25FVEEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleUxhbmRDb29sZG93bkVUQQEFC2xhbmRBc3NldElkAAADCQBmAgUFc3RhdGUJAJADAQUQbGFuZFJvYkNvb2xkb3ducwkAAgECDUludmFsaWQgc3RhdGUDCQBmAgUDbm93BQtjb29sZG93bkVUQQQKc3Rha2VkVGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAADCQBnAgAABQpzdGFrZWRUaW1lBQNhY2MEAWEJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQBZAkAtQkCCAUBYQtkZXNjcmlwdGlvbgIBXwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQMcHJvZHVjdGl2aXR5CQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwQJZGVsdGFUaW1lCQBlAgUDbm93BQpzdGFrZWRUaW1lBAhhdmFpbFJlcwkAawMFCWRlbHRhVGltZQkAaAIFDHByb2R1Y3Rpdml0eQUGcGllY2VzBQlEQVlNSUxMSVMDCQBmAgUOTUlOX1JFU19UT19ST0IFCGF2YWlsUmVzBQNhY2MJAM0IAgUDYWNjBQtsYW5kQXNzZXRJZAUDYWNjBAhmaWx0ZXJlZAoAAiRsBQpjYW5kaWRhdGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdjaGVja2VyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAwkAAAIJAJADAQUIZmlsdGVyZWQAAAkAAgECGU5vIGNhbmRpZGF0ZXMgZm9yIHJvYmJlcnkEBnJuZElkeAkBD2dldFJhbmRvbU51bWJlcgMJAJADAQUIZmlsdGVyZWQFBmhlaWdodAkAywECBQNzaWcIBQFpDXRyYW5zYWN0aW9uSWQEC2xhbmRBc3NldElkCQCRAwIFCGZpbHRlcmVkBQZybmRJZHgJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQETa2V5TGFuZFJvYmJlcnlTdGF0ZQEFC2xhbmRBc3NldElkBQxyb2JJZHhMb2NrZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARJrZXlMYW5kQ29vbGRvd25FVEEBBQtsYW5kQXNzZXRJZAkAZAIFA25vdwkAkQMCBRBsYW5kUm9iQ29vbGRvd25zBQxyb2JJZHhMb2NrZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARNrZXlEdWNrUm9iYmVyeVN0YXRlAQULZHVja0Fzc2V0SWQFEGR1Y2tJZHhQcmVwYXJpbmcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBE2tleUxvY2tlZExhbmRCeUR1Y2sBBQtkdWNrQXNzZXRJZAULbGFuZEFzc2V0SWQFA25pbAUNcHJvbG9nQWN0aW9ucwULbGFuZEFzc2V0SWQBaQEHcm9iTGFuZAIHbWVzc2FnZQNzaWcEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBASEBCQDEEwMFB21lc3NhZ2UFA3NpZwUDcHViCQACAQIYc2lnbmF0dXJlIGRvZXMgbm90IG1hdGNoBAh1c2VyQWRkcgkApQgBCAUBaQZjYWxsZXIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUIdXNlckFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAJQKAgkAzQgCBQ1wcm9sb2dBY3Rpb25zCQEMSW50ZWdlckVudHJ5AgkBGGtleUxhc3RSb2JiZXJ5VGltZUJ5RHVjawEFC2R1Y2tBc3NldElkBQNub3cAAAFpAQ5hY2NlcHREZWxpdmVyeQADCQEBIQEFEUtTX0FMTE9XX0RFTElWRVJZCQACAQIfRGVsaXZlcnkgZmVhdHVyZSBpcyB0dXJuZWQgb2ZmIQQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQh1c2VyQWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQJZnVuZFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIFD2Vjb25vbXlDb250cmFjdAUPZGVsaXZlcnlGdW5kS2V5AAAEC2xvY2tlZFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIFD2Vjb25vbXlDb250cmFjdAURZGVsaXZlcnlMb2NrZWRLZXkAAAMJAGYCBRVNSU5fVVNEVF9GRUVfREVMSVZFUlkJAGUCBQlmdW5kVG90YWwFC2xvY2tlZFRvdGFsCQACAQkArAICCQCsAgIJAKwCAgIgRGVsaXZlcnkgaXMgbm90IGF2YWlsYWJsZSwgZnVuZD0JAQpmaXhlZFBvaW50AgUJZnVuZFRvdGFsAAYCCSwgbG9ja2VkPQkBCmZpeGVkUG9pbnQCBQtsb2NrZWRUb3RhbAAGBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAhkZWxheUVUQQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5RGVsaXZlcnlEZWxheUJ5RHVjawEFC2R1Y2tBc3NldElkAAADCQBmAgUIZGVsYXlFVEEFA25vdwkAAgEJAKwCAgIqRGVsaXZlcnkgaXMgZm9yYmlkZGVuIGZvciB5b3VyIGR1Y2sgdW50aWwgCQCkAwEFCGRlbGF5RVRBAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIeYWNjZXB0RGVsaXZlcnlfY2hlY2tUb3VybmFtZW50AwkBDWNoZWNrRGVsaXZlcnkBBQtkdWNrQXNzZXRJZAkAAgECHGFjY2VwdERlbGl2ZXJ5X2NoZWNrRGVsaXZlcnkEDm5ld0xvY2tlZFRvdGFsCQEFYXNJbnQBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIUdXBkYXRlRGVsaXZlcnlMb2NrZWQJAMwIAgkAZAIFC2xvY2tlZFRvdGFsBRVNSU5fVVNEVF9GRUVfREVMSVZFUlkFA25pbAUDbmlsBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJY3VySGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFAECWN1ckxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXJMb2NLZXkFD0RFRkFVTFRMT0NBVElPTgQQZGVsaXZlcnlMb2NhdGlvbgkArAICCQCkAwEFA25vdwIEX0RfMAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBQljdXJIZWFsdGgJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUFbWF4SFAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAULY3VyTG9jYXRpb24JAMwIAgkBC1N0cmluZ0VudHJ5AgUJY3VyTG9jS2V5BRBkZWxpdmVyeUxvY2F0aW9uBQNuaWwFDXByb2xvZ0FjdGlvbnMJAJQKAgUQZGVsaXZlcnlMb2NhdGlvbgUObmV3TG9ja2VkVG90YWwAWNyAxw==", "height": 2791478, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7xAq72iyLa93m8K1oUhDAFFSwDy3aHdtc9Zh99X8cVez Next: 74fvgag8uMSQ8UYDK5nQauJp5PeHssa34F6S8wsLBHbn Diff:
OldNewDifferences
19901990 }
19911991
19921992
1993-func ks (B,kt,iW,ku) = {
1993+func ks (B,kt,iW,ku,kv,kw) = {
19941994 let jr = split(valueOrElse(getString(bK(B)), aK), "_")
19951995 let ay = lastBlock.timestamp
19961996 let cj = parseIntValue(jr[bm])
19971997 let ck = parseIntValue(jr[bo])
19981998 let jw = valueOrErrorMessage(getString(bH(B)), "NFT duck is orphaned")
1999- let kv = A(B)
2000- let kw = getIntegerValue(kv)
2001- let kx = if ((ck >= 3))
1999+ let kx = A(B)
2000+ let ky = getIntegerValue(kx)
2001+ let kz = if (if ((ck >= 3))
2002+ then true
2003+ else if (kv)
2004+ then (kw >= 3)
2005+ else false)
20022006 then {
2003- let ky = invoke(dd, "sendDeliveryReward", [jw], nil)
2004- if ((ky == ky))
2007+ let kA = invoke(dd, "sendDeliveryReward", [jw], nil)
2008+ if ((kA == kA))
20052009 then nil
20062010 else throw("Strict value is not equal to itself.")
20072011 }
20122016 else false)
20132017 then throw("Your duck is still on delivery mission")
20142018 else {
2015- let kz = valueOrElse(getInteger(dd, bP), 0)
2016- let kA = invoke(dd, "updateDeliveryLocked", [(kz - aN)], nil)
2017- if ((kA == kA))
2018- then if ((0 >= kw))
2019+ let kB = valueOrElse(getInteger(dd, bP), 0)
2020+ let kC = invoke(dd, "updateDeliveryLocked", [(kB - aN)], nil)
2021+ if ((kC == kC))
2022+ then if ((0 >= ky))
20192023 then nil
20202024 else [IntegerEntry(U(B), (cj + b))]
20212025 else throw("Strict value is not equal to itself.")
20222026 }
2023- let kB = getIntegerValue(K(B))
2024- let kC = getStringValue(L(B))
2025- $Tuple4(kx, [IntegerEntry(kv, kB), StringEntry(bK(B), kC), StringEntry("autoexitReason", ku)], kC, kB)
2026- }
2027-
2028-
2029-func kD (kE,am,kF,d,kG,kH) = {
2027+ let kD = getIntegerValue(K(B))
2028+ let kE = getStringValue(L(B))
2029+ $Tuple4(kz, [IntegerEntry(kx, kD), StringEntry(bK(B), kE), StringEntry("autoexitReason", ku)], kE, kD)
2030+ }
2031+
2032+
2033+func kF (kG,am,kH,d,kI,kJ) = {
20302034 let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
20312035 if (kq(B))
20322036 then throw("mergeInternal_checkTournament")
20332037 else if (kr(B))
20342038 then throw("mergeInternal_checkDelivery")
20352039 else {
2036- func kI (eS,Q) = {
2040+ func kK (eS,Q) = {
20372041 let jt = value(assetInfo(fromBase58String(Q)))
20382042 let ju = bs(Q)
20392043 let jv = valueOrErrorMessage(getInteger(ju), (("NFT " + jt.name) + " is not staked"))
20492053 then throw("Lands should be on the same continent to merge")
20502054 else {
20512055 let dJ = jx[dj]
2052- let kJ = eS._1
2053- let gL = valueOrErrorMessage(indexOf(kJ, dJ), "You haven't passed all the lands needed")
2054- let kK = (take(kJ, gL) + drop(kJ, (gL + 1)))
2056+ let kL = eS._1
2057+ let gL = valueOrErrorMessage(indexOf(kL, dJ), "You haven't passed all the lands needed")
2058+ let kM = (take(kL, gL) + drop(kL, (gL + 1)))
20552059 let jj = dI(dJ)
2056- let kL = (eS._2 + valueOrElse(getInteger(bt(aF, Q)), 0))
2060+ let kN = (eS._2 + valueOrElse(getInteger(bt(aF, Q)), 0))
20572061 let ib = valueOrElse(getInteger(bz(Q)), 0)
2058- let kM = {
2062+ let kO = {
20592063 let cz = dJ
20602064 if (("S" == cz))
20612065 then 3
20672071 then 6
20682072 else throw("Only S, M, L, XL can merge")
20692073 }
2070- if ((ib != kM))
2074+ if ((ib != kO))
20712075 then throw("All lands should be maxed to merge")
20722076 else {
20732077 let eu = jx[di]
20802084 let ia = (jj / cG)
20812085 let jH = gP(split(eS._4, "_"), gH, gR, ia, jz)
20822086 let fc = gF(eS._6, gH, ia, -1)
2083- let kN = gF(eS._10, gH, ia, -1)
2087+ let kP = gF(eS._10, gH, ia, -1)
20842088 let hv = gF(eS._9, gH, ia, 1)
2085- let kO = eS._7
2086- let db = indexOf(kO, Q)
2089+ let kQ = eS._7
2090+ let db = indexOf(kQ, Q)
20872091 if (!(isDefined(db)))
20882092 then throw(("Your staked lands don't contain " + Q))
20892093 else {
2090- let kP = br(Q)
2091- let kQ = valueOrElse(getString(kP), "")
2092- $Tuple10(kK, kL, du, jH, ((((((((((((eS._5 :+ DeleteEntry(bs(Q))) :+ DeleteEntry(bv(aD, Q, d))) :+ DeleteEntry(et(eu))) :+ DeleteEntry(bp(Q))) :+ DeleteEntry(bz(Q))) :+ DeleteEntry(ev(Q, d))) :+ DeleteEntry(bt(aF, Q))) :+ DeleteEntry(ew(eu))) :+ DeleteEntry(by(Q))) :+ DeleteEntry(kP)) :+ Burn(fromBase58String(Q), 1)) ++ (if ((kQ != ""))
2093- then [DeleteEntry(er(kQ))]
2094- else nil)), fc, removeByIndex(kO, value(db)), (eS._8 + jj), hv, kN)
2094+ let kR = br(Q)
2095+ let kS = valueOrElse(getString(kR), "")
2096+ $Tuple10(kM, kN, du, jH, ((((((((((((eS._5 :+ DeleteEntry(bs(Q))) :+ DeleteEntry(bv(aD, Q, d))) :+ DeleteEntry(et(eu))) :+ DeleteEntry(bp(Q))) :+ DeleteEntry(bz(Q))) :+ DeleteEntry(ev(Q, d))) :+ DeleteEntry(bt(aF, Q))) :+ DeleteEntry(ew(eu))) :+ DeleteEntry(by(Q))) :+ DeleteEntry(kR)) :+ Burn(fromBase58String(Q), 1)) ++ (if ((kS != ""))
2097+ then [DeleteEntry(er(kS))]
2098+ else nil)), fc, removeByIndex(kQ, value(db)), (eS._8 + jj), hv, kP)
20952099 }
20962100 }
20972101 }
21022106 let hM = bJ(B)
21032107 let ip = hL(hM)
21042108 let gG = split(valueOrElse(getString(ds()), "0_0_0_0_0_0"), "_")
2105- let kR = dv(d)
2106- let kS = getString(kR)
2107- let kT = if (isDefined(kS))
2108- then split_51C(value(kS), "_")
2109+ let kT = dv(d)
2110+ let kU = getString(kT)
2111+ let kV = if (isDefined(kU))
2112+ then split_51C(value(kU), "_")
21092113 else nil
2110- let kU = split(value(assetInfo(fromBase58String(kG[0]))).description, "_")[dl]
2111- let kV = split(valueOrElse(getString(dt(kU)), "0_0_0_0_0_0"), "_")
2114+ let kW = split(value(assetInfo(fromBase58String(kI[0]))).description, "_")[dl]
2115+ let kX = split(valueOrElse(getString(dt(kW)), "0_0_0_0_0_0"), "_")
21122116 let fd = {
2113- let eU = kG
2117+ let eU = kI
21142118 let eV = size(eU)
2115- let eW = $Tuple10(kF, 0, "", ip[bj], nil, gG, kT, 0, split("0_0_0_0_0_0", "_"), kV)
2119+ let eW = $Tuple10(kH, 0, "", ip[bj], nil, gG, kV, 0, split("0_0_0_0_0_0", "_"), kX)
21162120 func eX (eY,eZ) = if ((eZ >= eV))
21172121 then eY
2118- else kI(eY, eU[eZ])
2122+ else kK(eY, eU[eZ])
21192123
21202124 func fa (eY,eZ) = if ((eZ >= eV))
21212125 then eY
21252129 }
21262130 let du = fd._3
21272131 let hp = valueOrErrorMessage(indexOf(aQ, du), ("Unknown continent: " + du))
2128- let gO = hu(fd._9, (dI(kE) / cG))
2132+ let gO = hu(fd._9, (dI(kG) / cG))
21292133 let iN = valueOrElse(getInteger(eq()), (ep + 1))
2130- let kW = toString(iN)
2131- let iO = Issue(eH(kW, kE), makeString([kW, kE, gO, du], "_"), 1, 0, false)
2134+ let kY = toString(iN)
2135+ let iO = Issue(eH(kY, kG), makeString([kY, kG, gO, du], "_"), 1, 0, false)
21322136 let bq = calculateAssetId(iO)
2133- let kX = toBase58String(bq)
2134- let jT = makeString(fe((kH > 0), split(ip[bk], "_"), kH), "_")
2135- let kY = dw(d)
2136- let kZ = valueOrElse(getInteger(kY), 0)
2137+ let kZ = toBase58String(bq)
2138+ let jT = makeString(fe((kJ > 0), split(ip[bk], "_"), kJ), "_")
2139+ let la = dw(d)
2140+ let lb = valueOrElse(getInteger(la), 0)
21372141 $Tuple2((((((((((((((((fd._5 :+ (if ((size(fd._7) > 0))
2138- then StringEntry(kR, makeString_11C(fd._7, "_"))
2139- else DeleteEntry(kR))) :+ IntegerEntry(kY, if ((fd._8 > kZ))
2142+ then StringEntry(kT, makeString_11C(fd._7, "_"))
2143+ else DeleteEntry(kT))) :+ IntegerEntry(la, if ((fd._8 > lb))
21402144 then 0
2141- else (kZ - fd._8))) :+ IntegerEntry(eq(), (iN + 1))) :+ iO) :+ StringEntry(et(kW), kX)) :+ StringEntry(bp(kX), d)) :+ StringEntry(ew(kW), d)) :+ IntegerEntry(bt(aF, kX), fd._2)) :+ IntegerEntry(bz(kX), am)) :+ IntegerEntry(ev(kX, d), am)) :+ StringEntry(hM, makeString([ip[bi], fd._4, jT, ip[bl]], ":"))) :+ StringEntry(ds(), makeString(fd._6, "_"))) :+ StringEntry(dt(du), makeString(fd._10, "_"))) :+ StringEntry(bK(B), makeString([du, "L", kX], "_"))) :+ ScriptTransfer(addressFromStringValue(d), 1, bq)), kX)
2145+ else (lb - fd._8))) :+ IntegerEntry(eq(), (iN + 1))) :+ iO) :+ StringEntry(et(kY), kZ)) :+ StringEntry(bp(kZ), d)) :+ StringEntry(ew(kY), d)) :+ IntegerEntry(bt(aF, kZ), fd._2)) :+ IntegerEntry(bz(kZ), am)) :+ IntegerEntry(ev(kZ, d), am)) :+ StringEntry(hM, makeString([ip[bi], fd._4, jT, ip[bl]], ":"))) :+ StringEntry(ds(), makeString(fd._6, "_"))) :+ StringEntry(dt(du), makeString(fd._10, "_"))) :+ StringEntry(bK(B), makeString([du, "L", kZ], "_"))) :+ ScriptTransfer(addressFromStringValue(d), 1, bq)), kZ)
21422146 }
21432147 }
21442148
21452149
2146-func la (d,kG) = kD("M", 3, "SSSS", d, kG, 0)
2147-
2148-
2149-func lb (d,kG) = kD("L", 4, "SMM", d, kG, (cB * 4))
2150-
2151-
2152-func lc (d,kG) = kD("XL", 5, "SSSML", d, kG, (cB * 47))
2153-
2154-
2155-func ld (d,kG) = kD("XXL", 6, "LXL", d, kG, (cB * 54))
2156-
2157-
2158-func le (d,kG) = {
2159- let cz = size(kG)
2150+func lc (d,kI) = kF("M", 3, "SSSS", d, kI, 0)
2151+
2152+
2153+func ld (d,kI) = kF("L", 4, "SMM", d, kI, (cB * 4))
2154+
2155+
2156+func le (d,kI) = kF("XL", 5, "SSSML", d, kI, (cB * 47))
2157+
2158+
2159+func lf (d,kI) = kF("XXL", 6, "LXL", d, kI, (cB * 54))
2160+
2161+
2162+func lg (d,kI) = {
2163+ let cz = size(kI)
21602164 if ((4 == cz))
2161- then la(d, kG)
2165+ then lc(d, kI)
21622166 else if ((3 == cz))
2163- then lb(d, kG)
2167+ then ld(d, kI)
21642168 else if ((5 == cz))
2165- then lc(d, kG)
2169+ then le(d, kI)
21662170 else if ((2 == cz))
2167- then ld(d, kG)
2171+ then lf(d, kI)
21682172 else throw("Unknown merge")
21692173 }
21702174
21712175
2172-func lf (bM) = {
2173- let lg = getString(bI(bM))
2176+func lh (bM) = {
2177+ let li = getString(bI(bM))
21742178 if (if (cw)
2175- then isDefined(lg)
2179+ then isDefined(li)
21762180 else false)
21772181 then {
2178- let B = value(lg)
2179- let lh = bK(B)
2180- let cg = split(valueOrElse(getString(lh), aK), "_")
2182+ let B = value(li)
2183+ let lj = bK(B)
2184+ let cg = split(valueOrElse(getString(lj), aK), "_")
21812185 let cj = parseIntValue(cg[bm])
21822186 if (if ((cg[bn] != "D"))
21832187 then true
21842188 else (lastBlock.timestamp > (cj + aO)))
21852189 then nil
21862190 else {
2187- let kv = A(B)
2191+ let kx = A(B)
21882192 if ((parseIntValue(cg[bo]) >= 3))
21892193 then {
2190- let ky = invoke(dd, "sendDeliveryReward", [bM], nil)
2191- if ((ky == ky))
2194+ let kA = invoke(dd, "sendDeliveryReward", [bM], nil)
2195+ if ((kA == kA))
21922196 then nil
21932197 else throw("Strict value is not equal to itself.")
21942198 }
21952199 else (({
2196- let kz = valueOrElse(getInteger(dd, bP), 0)
2197- let kA = invoke(dd, "updateDeliveryLocked", [(kz - aN)], nil)
2198- if ((kA == kA))
2199- then if ((0 >= getIntegerValue(kv)))
2200+ let kB = valueOrElse(getInteger(dd, bP), 0)
2201+ let kC = invoke(dd, "updateDeliveryLocked", [(kB - aN)], nil)
2202+ if ((kC == kC))
2203+ then if ((0 >= getIntegerValue(kx)))
22002204 then nil
22012205 else {
2202- let li = invoke(this, "saveInteger", [U(B), (cj + b)], nil)
2203- if ((li == li))
2206+ let lk = invoke(this, "saveInteger", [U(B), (cj + b)], nil)
2207+ if ((lk == lk))
22042208 then nil
22052209 else throw("Strict value is not equal to itself.")
22062210 }
22072211 else throw("Strict value is not equal to itself.")
2208- } :+ IntegerEntry(kv, getIntegerValue(K(B)))) :+ StringEntry(lh, getStringValue(L(B))))
2212+ } :+ IntegerEntry(kx, getIntegerValue(K(B)))) :+ StringEntry(lj, getStringValue(L(B))))
22092213 }
22102214 }
22112215 else nil
22122216 }
22132217
22142218
2215-func lj (gL) = if (if ((gL.originCaller != dc))
2219+func ll (gL) = if (if ((gL.originCaller != dc))
22162220 then valueOrElse(getBoolean(dL()), false)
22172221 else false)
22182222 then throw("Contracts are under maintenance")
22192223 else {
22202224 let bM = toString(gL.originCaller)
2221- (lf(bM) :+ StringEntry(dM(bM), toBase58String(gL.transactionId)))
2225+ (lh(bM) :+ StringEntry(dM(bM), toBase58String(gL.transactionId)))
22222226 }
22232227
22242228
2225-func lk (gL) = if (if ((gL.originCaller != dc))
2229+func lm (gL) = if (if ((gL.originCaller != dc))
22262230 then valueOrElse(getBoolean(dL()), false)
22272231 else false)
22282232 then throw("Contracts are under maintenance")
22302234
22312235
22322236 @Callable(gL)
2233-func constructorV1 (ll) = if ((gL.caller != this))
2237+func constructorV1 (ln) = if ((gL.caller != this))
22342238 then throw("Permission denied")
2235- else [StringEntry(cW(), ll)]
2239+ else [StringEntry(cW(), ln)]
22362240
22372241
22382242
22442248
22452249
22462250 @Callable(gL)
2247-func setBlocked (lm) = if ((gL.caller != this))
2251+func setBlocked (lo) = if ((gL.caller != this))
22482252 then throw("permission denied")
2249- else [BooleanEntry(dL(), lm)]
2253+ else [BooleanEntry(dL(), lo)]
22502254
22512255
22522256
22532257 @Callable(gL)
22542258 func stakeLand () = {
2255- let ln = lj(gL)
2259+ let lp = ll(gL)
22562260 if ((size(gL.payments) != 1))
22572261 then throw("Exactly one payment required")
22582262 else {
2259- let lo = value(gL.payments[0])
2260- let bq = value(lo.assetId)
2263+ let lq = value(gL.payments[0])
2264+ let bq = value(lq.assetId)
22612265 let cN = toString(gL.caller)
2262- if ((lo.amount != 1))
2266+ if ((lq.amount != 1))
22632267 then throw((("NFT " + aD) + " token should be attached as payment"))
22642268 else {
22652269 let jt = value(assetInfo(bq))
22682272 else if (!(contains(jt.name, aD)))
22692273 then throw((("Only NFT " + aD) + " tokens are accepted"))
22702274 else {
2271- let lp = drop(jt.name, 4)
2272- let eu = if (contains(lp, "XXL"))
2273- then dropRight(lp, 3)
2274- else if (contains(lp, "XL"))
2275- then dropRight(lp, 2)
2276- else dropRight(lp, 1)
2275+ let lr = drop(jt.name, 4)
2276+ let eu = if (contains(lr, "XXL"))
2277+ then dropRight(lr, 3)
2278+ else if (contains(lr, "XL"))
2279+ then dropRight(lr, 2)
2280+ else dropRight(lr, 1)
22772281 if (!(isDefined(parseInt(eu))))
22782282 then throw(("Cannot parse land number from " + jt.name))
22792283 else {
22872291 let jj = dI(jx[dj])
22882292 let ia = (jj / cG)
22892293 let fc = gM(gH, ia, 1)
2290- let lq = dt(jx[dl])
2291- let kV = split(valueOrElse(getString(lq), "0_0_0_0_0_0"), "_")
2292- let lr = makeString(gF(kV, gH, ia, 1), "_")
2293- let kR = dv(cN)
2294- let kS = getString(kR)
2295- let kO = if (isDefined(kS))
2296- then split_51C(value(kS), "_")
2294+ let ls = dt(jx[dl])
2295+ let kX = split(valueOrElse(getString(ls), "0_0_0_0_0_0"), "_")
2296+ let lt = makeString(gF(kX, gH, ia, 1), "_")
2297+ let kT = dv(cN)
2298+ let kU = getString(kT)
2299+ let kQ = if (isDefined(kU))
2300+ then split_51C(value(kU), "_")
22972301 else nil
2298- if (containsElement(kO, Q))
2302+ if (containsElement(kQ, Q))
22992303 then throw(("Your staked lands already contain " + Q))
2300- else if ((size(kO) >= aH))
2304+ else if ((size(kQ) >= aH))
23012305 then throw((("Your already staked max (" + toString(aH)) + ") lands"))
23022306 else {
23032307 let ib = valueOrElse(getInteger(bz(Q)), 0)
2304- let kY = dw(cN)
2305- let ls = valueOrElse(getInteger(kY), 0)
2306- let lt = invoke(df, "onStakeUnstakeLand", [cN], nil)
2307- $Tuple2(([IntegerEntry(ju, lastBlock.timestamp), IntegerEntry(bv(aD, Q, cN), lastBlock.timestamp), StringEntry(kR, makeString_11C((kO :+ Q), "_")), IntegerEntry(kY, (ls + jj)), StringEntry(bp(Q), cN), StringEntry(ew(eu), cN), IntegerEntry(ev(Q, cN), ib), StringEntry(ds(), fc), StringEntry(lq, lr)] ++ ln), lt)
2308+ let la = dw(cN)
2309+ let lu = valueOrElse(getInteger(la), 0)
2310+ let lv = invoke(df, "onStakeUnstakeLand", [cN], nil)
2311+ $Tuple2(([IntegerEntry(ju, lastBlock.timestamp), IntegerEntry(bv(aD, Q, cN), lastBlock.timestamp), StringEntry(kT, makeString_11C((kQ :+ Q), "_")), IntegerEntry(la, (lu + jj)), StringEntry(bp(Q), cN), StringEntry(ew(eu), cN), IntegerEntry(ev(Q, cN), ib), StringEntry(ds(), fc), StringEntry(ls, lt)] ++ lp), lv)
23082312 }
23092313 }
23102314 }
23172321
23182322 @Callable(gL)
23192323 func unstakeLand (jp) = {
2320- let ln = lj(gL)
2324+ let lp = ll(gL)
23212325 if ((size(gL.payments) != 0))
23222326 then throw("No payments required")
23232327 else {
23252329 let gb = jn(d, eB, jp)
23262330 let Q = gb._2
23272331 let jx = gb._3
2328- let kR = dv(d)
2332+ let kT = dv(d)
23292333 let gH = gN(jx[dk])
23302334 let jj = dI(jx[dj])
23312335 let ia = (jj / cG)
23322336 let fc = gM(gH, ia, -1)
2333- let lq = dt(jx[dl])
2334- let kV = split(valueOrElse(getString(lq), "0_0_0_0_0_0"), "_")
2335- let lr = makeString(gF(kV, gH, ia, -1), "_")
2337+ let ls = dt(jx[dl])
2338+ let kX = split(valueOrElse(getString(ls), "0_0_0_0_0_0"), "_")
2339+ let lt = makeString(gF(kX, gH, ia, -1), "_")
23362340 let jU = jK(d, Q, jj, eB)
2337- let kO = split_51C(valueOrElse(getString(kR), ""), "_")
2338- let db = indexOf(kO, Q)
2341+ let kQ = split_51C(valueOrElse(getString(kT), ""), "_")
2342+ let db = indexOf(kQ, Q)
23392343 if (!(isDefined(db)))
23402344 then throw(("Your staked lands don't contain " + Q))
23412345 else {
23422346 let ay = lastBlock.timestamp
2343- let lu = valueOrElse(getInteger(de, bL(d)), 0)
2344- if ((lu >= ay))
2345- then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lu)))
2347+ let lw = valueOrElse(getInteger(de, bL(d)), 0)
2348+ if ((lw >= ay))
2349+ then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lw)))
23462350 else {
2347- let lv = (valueOrElse(getInteger(df, c(d)), 0) + cC)
2348- if ((lv > ay))
2349- then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lv)))
2351+ let lx = (valueOrElse(getInteger(df, c(d)), 0) + cC)
2352+ if ((lx > ay))
2353+ then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lx)))
23502354 else {
2351- let kY = dw(d)
2352- let kZ = valueOrElse(getInteger(kY), 0)
2353- let lw = if ((jj > kZ))
2355+ let la = dw(d)
2356+ let lb = valueOrElse(getInteger(la), 0)
2357+ let ly = if ((jj > lb))
23542358 then 0
2355- else (kZ - jj)
2356- let lt = invoke(df, "onStakeUnstakeLand", [d], nil)
2357- $Tuple2(([ScriptTransfer(gL.caller, 1, fromBase58String(Q)), DeleteEntry(bs(Q)), DeleteEntry(bv(aD, Q, d)), StringEntry(ds(), fc), StringEntry(lq, lr), StringEntry(jU._2, makeString(jU._3, ":")), if ((size(kO) > 1))
2358- then StringEntry(kR, makeString_11C(removeByIndex(kO, value(db)), "_"))
2359- else DeleteEntry(kR), IntegerEntry(kY, lw)] ++ ln), lt)
2359+ else (lb - jj)
2360+ let lv = invoke(df, "onStakeUnstakeLand", [d], nil)
2361+ $Tuple2(([ScriptTransfer(gL.caller, 1, fromBase58String(Q)), DeleteEntry(bs(Q)), DeleteEntry(bv(aD, Q, d)), StringEntry(ds(), fc), StringEntry(ls, lt), StringEntry(jU._2, makeString(jU._3, ":")), if ((size(kQ) > 1))
2362+ then StringEntry(kT, makeString_11C(removeByIndex(kQ, value(db)), "_"))
2363+ else DeleteEntry(kT), IntegerEntry(la, ly)] ++ lp), lv)
23602364 }
23612365 }
23622366 }
23672371
23682372 @Callable(gL)
23692373 func stakeDuck () = {
2370- let ln = lj(gL)
2374+ let lp = ll(gL)
23712375 if ((size(gL.payments) != 1))
23722376 then throw("Exactly one payment required")
23732377 else {
2374- let lo = value(gL.payments[0])
2375- let bq = value(lo.assetId)
2378+ let lq = value(gL.payments[0])
2379+ let bq = value(lq.assetId)
23762380 let cN = toString(gL.caller)
2377- if ((lo.amount != 1))
2381+ if ((lq.amount != 1))
23782382 then throw((("NFT " + aE) + " token should be attached as payment"))
23792383 else {
23802384 let jt = value(assetInfo(bq))
23852389 else if (!(contains(jt.name, aE)))
23862390 then throw((("Only NFT " + aE) + " tokens are accepted"))
23872391 else {
2388- let lx = toBase58String(bq)
2389- let ju = bs(lx)
2392+ let lz = toBase58String(bq)
2393+ let ju = bs(lz)
23902394 if (isDefined(getInteger(ju)))
23912395 then throw((("NFT " + jt.name) + " is already staked"))
23922396 else if (isDefined(getString(bI(cN))))
23932397 then throw(("You already staked one duck: " + jt.name))
23942398 else {
2395- let lh = bK(lx)
2396- let ce = getString(lh)
2397- let hM = bJ(lx)
2398- let ly = getString(hM)
2399- let jc = A(lx)
2400- let jd = ah(valueOrElse(getInteger(E(lx)), 0))
2401- let kw = valueOrElse(getInteger(jc), jd)
2402- ([IntegerEntry(ju, lastBlock.timestamp), IntegerEntry(bv(aE, toBase58String(bq), cN), lastBlock.timestamp), StringEntry(bH(lx), cN), StringEntry(bI(cN), lx)] ++ (if (isDefined(ce))
2399+ let lj = bK(lz)
2400+ let ce = getString(lj)
2401+ let hM = bJ(lz)
2402+ let lA = getString(hM)
2403+ let jc = A(lz)
2404+ let jd = ah(valueOrElse(getInteger(E(lz)), 0))
2405+ let ky = valueOrElse(getInteger(jc), jd)
2406+ ([IntegerEntry(ju, lastBlock.timestamp), IntegerEntry(bv(aE, toBase58String(bq), cN), lastBlock.timestamp), StringEntry(bH(lz), cN), StringEntry(bI(cN), lz)] ++ (if (isDefined(ce))
24032407 then nil
2404- else ([StringEntry(lh, aK)] ++ (if (isDefined(ly))
2408+ else ([StringEntry(lj, aK)] ++ (if (isDefined(lA))
24052409 then nil
2406- else (([StringEntry(hM, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jc, kw)) ++ ln)))))
2410+ else (([StringEntry(hM, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jc, ky)) ++ lp)))))
24072411 }
24082412 }
24092413 }
24132417
24142418
24152419 @Callable(gL)
2416-func unstakeDuck (lx) = {
2417- let ln = lj(gL)
2420+func unstakeDuck (lz) = {
2421+ let lp = ll(gL)
24182422 if ((size(gL.payments) != 0))
24192423 then throw("No payments required")
24202424 else {
2421- let bq = fromBase58String(lx)
2425+ let bq = fromBase58String(lz)
24222426 let cN = toString(gL.caller)
24232427 let jt = value(assetInfo(bq))
2424- let ju = bs(lx)
2428+ let ju = bs(lz)
24252429 if (!(isDefined(getInteger(ju))))
24262430 then throw((("NFT " + jt.name) + " is not staked"))
24272431 else if (!(isDefined(getString(bI(cN)))))
24282432 then throw((("The duck " + jt.name) + " is not staked"))
24292433 else {
2430- let jw = valueOrErrorMessage(getString(bH(lx)), (("NFT " + jt.name) + " is orphaned"))
2434+ let jw = valueOrErrorMessage(getString(bH(lz)), (("NFT " + jt.name) + " is orphaned"))
24312435 if ((jw != cN))
24322436 then throw("Staked NFT is not yours")
2433- else if (kq(lx))
2437+ else if (kq(lz))
24342438 then throw("unstakeDuck_checkTournament")
2435- else if (kr(lx))
2439+ else if (kr(lz))
24362440 then throw("unstakeDuck_checkDelivery")
24372441 else {
2438- let jc = A(lx)
2439- let jd = ah(valueOrElse(getInteger(E(lx)), 0))
2442+ let jc = A(lz)
2443+ let jd = ah(valueOrElse(getInteger(E(lz)), 0))
24402444 let at = valueOrElse(getInteger(jc), jd)
24412445 if ((jd > at))
24422446 then throw((("Please heal your duck to " + toString(jd)) + "hp before unstaking"))
2443- else ([ScriptTransfer(gL.caller, 1, bq), DeleteEntry(ju), DeleteEntry(jc), DeleteEntry(bK(lx)), DeleteEntry(bH(lx)), DeleteEntry(bv(aE, lx, cN)), DeleteEntry(bI(cN))] ++ ln)
2447+ else ([ScriptTransfer(gL.caller, 1, bq), DeleteEntry(ju), DeleteEntry(jc), DeleteEntry(bK(lz)), DeleteEntry(bH(lz)), DeleteEntry(bv(aE, lz, cN)), DeleteEntry(bI(cN))] ++ lp)
24442448 }
24452449 }
24462450 }
24492453
24502454
24512455 @Callable(gL)
2452-func claimRes (eJ,lz) = {
2453- let ln = lj(gL)
2456+func claimRes (eJ,lB) = {
2457+ let lp = ll(gL)
24542458 if ((size(gL.payments) != 0))
24552459 then throw("No payments required")
24562460 else {
24572461 let d = toString(gL.originCaller)
2458- let fk = jy(d, eJ, eB, lz)
2462+ let fk = jy(d, eJ, eB, lB)
24592463 let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
2460- $Tuple2(((((fk._1 ++ ka(B, fraction(V, eJ, cF))._1) :+ StringEntry(fk._2, makeString(fk._3, ":"))) :+ StringEntry(fk._4, makeString(fk._5, ":"))) ++ ln), fk._3[bj])
2461- }
2462- }
2463-
2464-
2465-
2466-@Callable(gL)
2467-func claimResToWH (eJ,lz) = {
2468- let ln = lj(gL)
2464+ $Tuple2(((((fk._1 ++ ka(B, fraction(V, eJ, cF))._1) :+ StringEntry(fk._2, makeString(fk._3, ":"))) :+ StringEntry(fk._4, makeString(fk._5, ":"))) ++ lp), fk._3[bj])
2465+ }
2466+ }
2467+
2468+
2469+
2470+@Callable(gL)
2471+func claimResToWH (eJ,lB) = {
2472+ let lp = ll(gL)
24692473 if ((size(gL.payments) != 0))
24702474 then throw("No payments required")
24712475 else {
24722476 let d = toString(gL.originCaller)
2473- let fk = jy(d, eJ, eA, lz)
2474- $Tuple2(((((fk._1 ++ kg(d, fraction(V, eJ, cF))._1) :+ StringEntry(fk._2, makeString(fk._3, ":"))) :+ StringEntry(fk._4, makeString(fk._5, ":"))) ++ ln), fk._5[ba])
2477+ let fk = jy(d, eJ, eA, lB)
2478+ $Tuple2(((((fk._1 ++ kg(d, fraction(V, eJ, cF))._1) :+ StringEntry(fk._2, makeString(fk._3, ":"))) :+ StringEntry(fk._4, makeString(fk._5, ":"))) ++ lp), fk._5[ba])
24752479 }
24762480 }
24772481
24792483
24802484 @Callable(gL)
24812485 func flight (iR,iS) = {
2482- let ln = lk(gL)
2486+ let lp = lm(gL)
24832487 if ((size(gL.payments) != 0))
24842488 then throw("No payments required")
24852489 else {
24872491 let hq = iQ(bM, iR, iS)
24882492 let iW = hq._1
24892493 let B = hq._2
2490- let lh = bK(B)
2491- let jr = valueOrElse(getString(lh), aK)
2494+ let lj = bK(B)
2495+ let jr = valueOrElse(getString(lj), aK)
24922496 let iY = hq._4
24932497 if ((iY == jr))
24942498 then throw("You can't fly to the same location")
24952499 else {
24962500 let cs = split(iY, "_")
2497- let lA = (cs[bn] == "T")
2498- let lB = (cs[bn] == "D")
2501+ let lC = (cs[bn] == "T")
2502+ let lD = (cs[bn] == "D")
24992503 let gy = G(B)
2500- let lC = valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,")
2501- let lD = fl(lC, hq._5)
2502- let lE = lD._1
2503- let lF = lD._2
2504- let lG = if (!(cn(dg, jr)))
2504+ let lE = valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,")
2505+ let lF = fl(lE, hq._5)
2506+ let lG = lF._1
2507+ let lH = lF._2
2508+ let lI = if (!(cn(dg, jr)))
25052509 then if (!(cl(iY)))
25062510 then cq(jr, iY, 5)
25072511 else if ((iW > 0))
25112515 then if (!(cd(dg, iY)))
25122516 then throw("Your duck is taking part in the tournament")
25132517 else {
2514- let lH = parseIntValue(cs[bo])
2515- let lI = split(jr, "_")
2518+ let kw = parseIntValue(cs[bo])
2519+ let lJ = split(jr, "_")
25162520 let cf = valueOrElse(getInteger(dg, bQ), 0)
2517- if ((lH != (parseIntValue(lI[bo]) + 1)))
2521+ if ((kw != (parseIntValue(lJ[bo]) + 1)))
25182522 then cq(jr, iY, 7)
25192523 else if ((iW > 0))
25202524 then {
2521- let lJ = valueOrElse(getInteger(dg, bU(cf, B)), 0)
2522- let lK = if ((lH > lJ))
2523- then invoke(dg, "saveDuckResult", [B, lH], nil)
2525+ let lK = valueOrElse(getInteger(dg, bU(cf, B)), 0)
2526+ let lL = if ((kw > lK))
2527+ then invoke(dg, "saveDuckResult", [B, kw], nil)
25242528 else unit
2525- if ((lK == lK))
2529+ if ((lL == lL))
25262530 then $Tuple2(iY, iW)
25272531 else throw("Strict value is not equal to itself.")
25282532 }
25302534 }
25312535 else if (!(ci(jr)))
25322536 then {
2533- let lL = dF(invoke(this, "autoExitDelivery", [B, iW, if (lB)
2537+ let lM = dF(invoke(this, "autoExitDelivery", [B, iW, if (lD)
25342538 then "10"
2535- else "11"], nil))
2536- if ((lL == lL))
2537- then if (lB)
2538- then lL
2539+ else "11", 0], nil))
2540+ if ((lM == lM))
2541+ then if (lD)
2542+ then lM
25392543 else if ((iW > 0))
25402544 then $Tuple2(iY, iW)
2541- else $Tuple2(lL._1, 0)
2545+ else $Tuple2(lM._1, 0)
25422546 else throw("Strict value is not equal to itself.")
25432547 }
2544- else if (!(lB))
2548+ else if (!(lD))
25452549 then throw("Your duck is taking part in delivery")
25462550 else if (!(ci(iY)))
25472551 then cq(jr, iY, 13)
25482552 else {
2549- let lH = parseIntValue(cs[bo])
2550- let lI = split(jr, "_")
2551- if ((lH != (parseIntValue(lI[bo]) + 1)))
2553+ let kw = parseIntValue(cs[bo])
2554+ let lJ = split(jr, "_")
2555+ if ((kw != (parseIntValue(lJ[bo]) + 1)))
25522556 then cq(jr, iY, 14)
25532557 else if (if ((iW > 0))
2554- then (3 > lH)
2558+ then (3 > kw)
25552559 else false)
25562560 then $Tuple2(iY, iW)
25572561 else {
2558- let lL = dF(invoke(this, "autoExitDelivery", [B, iW, "16<"], nil))
2559- if ((lL == lL))
2560- then lL
2562+ let lM = dF(invoke(this, "autoExitDelivery", [B, iW, "15-17", kw], nil))
2563+ if ((lM == lM))
2564+ then lM
25612565 else throw("Strict value is not equal to itself.")
25622566 }
25632567 }
2564- let lM = lG._1
2565- let lN = lG._2
2566- $Tuple2(((([StringEntry(lh, lM), StringEntry(gy, lE), IntegerEntry(A(B), iW)] ++ ln) ++ (if (lF)
2568+ let lN = lI._1
2569+ let lO = lI._2
2570+ $Tuple2(((([StringEntry(lj, lN), StringEntry(gy, lG), IntegerEntry(A(B), iW)] ++ lp) ++ (if (lH)
25672571 then [StringEntry(M(B), "0_0_0_0_0")]
25682572 else nil)) ++ ka(B, if ((iW > 0))
25692573 then W
25752579
25762580
25772581 @Callable(gL)
2578-func heal (lO,lP,lQ) = {
2579- let ln = lj(gL)
2580- if (if (if ((0 > lO))
2581- then true
2582- else (0 > lP))
2582+func heal (lP,lQ,lR) = {
2583+ let lp = ll(gL)
2584+ if (if (if ((0 > lP))
25832585 then true
25842586 else (0 > lQ))
2587+ then true
2588+ else (0 > lR))
25852589 then throw("Quantity cannot be negative")
25862590 else {
25872591 let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked")
25902594 else if (kr(B))
25912595 then throw("heal_checkDelivery")
25922596 else {
2593- let lR = [lO, lP, lQ]
2597+ let lS = [lP, lQ, lR]
25942598 let jc = A(B)
25952599 let jd = ah(valueOrElse(getInteger(E(B)), 0))
2596- let lS = valueOrElse(getInteger(jc), jd)
2597- if ((lS >= jd))
2600+ let lT = valueOrElse(getInteger(jc), jd)
2601+ if ((lT >= jd))
25982602 then throw((("HP should be < " + toString(jd)) + " to heal"))
25992603 else {
26002604 let hM = bJ(B)
26012605 let ip = hL(hM)
2602- let lT = if ((ip[bl] == ""))
2606+ let lU = if ((ip[bl] == ""))
26032607 then nil
26042608 else split_4C(ip[bl], "_")
2605- func lU (eS,cp) = {
2609+ func lV (eS,cp) = {
26062610 let dB = eS._2
2607- let hh = if ((size(lT) > dB))
2608- then parseIntValue(lT[dB])
2611+ let hh = if ((size(lU) > dB))
2612+ then parseIntValue(lU[dB])
26092613 else 0
26102614 if ((3 > dB))
26112615 then {
2612- let lV = lR[dB]
2613- if ((lV > hh))
2616+ let lW = lS[dB]
2617+ if ((lW > hh))
26142618 then throw(((("You have only " + toString(hh)) + " of ") + aP[dB]))
2615- else $Tuple3((eS._1 :+ toString((hh - lV))), (dB + 1), (eS._3 + (parseIntValue(split(cp, "_")[aV]) * lV)))
2619+ else $Tuple3((eS._1 :+ toString((hh - lW))), (dB + 1), (eS._3 + (parseIntValue(split(cp, "_")[aV]) * lW)))
26162620 }
26172621 else $Tuple3((eS._1 :+ toString(hh)), (dB + 1), eS._3)
26182622 }
26232627 let eW = $Tuple3(nil, 0, 0)
26242628 func eX (eY,eZ) = if ((eZ >= eV))
26252629 then eY
2626- else lU(eY, eU[eZ])
2630+ else lV(eY, eU[eZ])
26272631
26282632 func fa (eY,eZ) = if ((eZ >= eV))
26292633 then eY
26312635
26322636 fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 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)
26332637 }
2634- let lW = min([jd, (lS + fk._3)])
2635- $Tuple2((([IntegerEntry(jc, lW), StringEntry(hM, makeString_2C([ip[bi], ip[bj], ip[bk], makeString(fk._1, "_")], ":"))] ++ ln) ++ ka(B, (ae * ((lO + lP) + lQ)))._1), lW)
2638+ let lX = min([jd, (lT + fk._3)])
2639+ $Tuple2((([IntegerEntry(jc, lX), StringEntry(hM, makeString_2C([ip[bi], ip[bj], ip[bk], makeString(fk._1, "_")], ":"))] ++ lp) ++ ka(B, (ae * ((lP + lQ) + lR)))._1), lX)
26362640 }
26372641 }
26382642 }
26422646
26432647 @Callable(gL)
26442648 func healES () = {
2645- let ln = lj(gL)
2649+ let lp = ll(gL)
26462650 if ((size(gL.payments) != 1))
26472651 then throw("Exactly one payment required")
26482652 else {
2649- let lo = value(gL.payments[0])
2650- if ((lo.assetId != cy))
2653+ let lq = value(gL.payments[0])
2654+ if ((lq.assetId != cy))
26512655 then throw("Allowed USDT payment only!")
26522656 else {
26532657 let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked")
26582662 else {
26592663 let jc = A(B)
26602664 let jd = ah(valueOrElse(getInteger(E(B)), 0))
2661- let lS = valueOrElse(getInteger(jc), jd)
2662- if ((lS > 0))
2665+ let lT = valueOrElse(getInteger(jc), jd)
2666+ if ((lT > 0))
26632667 then throw("HP should be 0 to call Emergency Service")
26642668 else {
26652669 let hM = bJ(B)
26662670 let ip = hL(hM)
2667- let lT = if ((ip[bl] == ""))
2671+ let lU = if ((ip[bl] == ""))
26682672 then nil
26692673 else split_4C(ip[bl], "_")
2670- let lX = if ((size(lT) > 0))
2671- then parseIntValue(lT[0])
2674+ let lY = if ((size(lU) > 0))
2675+ then parseIntValue(lU[0])
26722676 else 0
2673- let lY = if ((size(lT) > 1))
2674- then parseIntValue(lT[1])
2677+ let lZ = if ((size(lU) > 1))
2678+ then parseIntValue(lU[1])
26752679 else 0
2676- let lZ = if ((size(lT) > 2))
2677- then parseIntValue(lT[2])
2680+ let ma = if ((size(lU) > 2))
2681+ then parseIntValue(lU[2])
26782682 else 0
2679- if (if (if ((lX > 0))
2680- then true
2681- else (lY > 0))
2683+ if (if (if ((lY > 0))
26822684 then true
26832685 else (lZ > 0))
2686+ then true
2687+ else (ma > 0))
26842688 then throw("You have to use own Medical Kit")
26852689 else {
2686- let ma = getString(dd, bN())
2687- let mb = if (isDefined(ma))
2688- then split_4C(value(ma), "_")
2690+ let mb = getString(dd, bN())
2691+ let mc = if (isDefined(mb))
2692+ then split_4C(value(mb), "_")
26892693 else nil
2690- let mc = if ((size(mb) > 0))
2691- then parseIntValue(mb[0])
2694+ let md = if ((size(mc) > 0))
2695+ then parseIntValue(mc[0])
26922696 else 0
2693- if ((0 >= mc))
2697+ if ((0 >= md))
26942698 then throw("There are no Medical Kits L1 at Emergency Service storage")
26952699 else {
2696- let lW = (lS + parseIntValue(split(aT[0], "_")[aV]))
2697- let md = makeString([toString((mc - 1)), removeByIndex(mb, 0)], "_")
2700+ let lX = (lT + parseIntValue(split(aT[0], "_")[aV]))
2701+ let me = makeString([toString((md - 1)), removeByIndex(mc, 0)], "_")
26982702 let cp = split(aT[0], "_")
2699- let me = co(cp)
2700- let mf = fraction((me * aM), aL, (cF * aY))
2701- if ((lo.amount != mf))
2702- then throw(("Payment attached should be " + toString(mf)))
2703+ let mf = co(cp)
2704+ let mg = fraction((mf * aM), aL, (cF * aY))
2705+ if ((lq.amount != mg))
2706+ then throw(("Payment attached should be " + toString(mg)))
27032707 else {
2704- let fk = dx(invoke(dd, "updateEsStorage", [md], [AttachedPayment(cy, mf)]))
2705- $Tuple2(((ln :+ IntegerEntry(jc, lW)) ++ ka(B, Y)._1), fk)
2708+ let fk = dx(invoke(dd, "updateEsStorage", [me], [AttachedPayment(cy, mg)]))
2709+ $Tuple2(((lp :+ IntegerEntry(jc, lX)) ++ ka(B, Y)._1), fk)
27062710 }
27072711 }
27082712 }
27152719
27162720
27172721 @Callable(gL)
2718-func updateBackpack (B,mg) = if ((gL.caller != dd))
2722+func updateBackpack (B,mh) = if ((gL.caller != dd))
27192723 then throw("permission denied")
2720- else $Tuple2([StringEntry(bJ(B), mg)], mg)
2724+ else $Tuple2([StringEntry(bJ(B), mh)], mh)
27212725
27222726
27232727
27242728 @Callable(gL)
27252729 func commitForRandom () = {
2726- let ln = lj(gL)
2727- let mh = (height + dq)
2730+ let lp = ll(gL)
2731+ let mi = (height + dq)
27282732 let d = toString(gL.caller)
2729- $Tuple2(([IntegerEntry(dr(d), mh)] ++ ln), mh)
2733+ $Tuple2(([IntegerEntry(dr(d), mi)] ++ lp), mi)
27302734 }
27312735
27322736
27332737
27342738 @Callable(gL)
27352739 func buySLand () = {
2736- let ln = lj(gL)
2740+ let lp = ll(gL)
27372741 if ((size(gL.payments) != 1))
27382742 then throw("Exactly one payment required")
27392743 else {
2740- let lo = value(gL.payments[0])
2741- if ((lo.assetId != cy))
2744+ let lq = value(gL.payments[0])
2745+ if ((lq.assetId != cy))
27422746 then throw("Allowed USDT payment only!")
2743- else if ((lo.amount != eh))
2747+ else if ((lq.amount != eh))
27442748 then throw(("Payment attached should be " + toString(eh)))
27452749 else {
27462750 let fk = iJ(gL.caller, gL.transactionId)
2747- let mi = dA(invoke(dh, "burnAcres", [ei], nil))
2748- $Tuple2((((fk._1 :+ ScriptTransfer(dd, lo.amount, cy)) ++ kg(toString(gL.caller), aa)._1) ++ ln), $Tuple2(fk._2._1, mi))
2751+ let mj = dA(invoke(dh, "burnAcres", [ei], nil))
2752+ $Tuple2((((fk._1 :+ ScriptTransfer(dd, lq.amount, cy)) ++ kg(toString(gL.caller), aa)._1) ++ lp), $Tuple2(fk._2._1, mj))
27492753 }
27502754 }
27512755 }
27542758
27552759 @Callable(gL)
27562760 func expedition (iR,iS) = {
2757- let ln = lj(gL)
2761+ let lp = ll(gL)
27582762 if ((size(gL.payments) != 0))
27592763 then throw("No payments required")
27602764 else {
27672771 let jR = split(ip[bk], "_")
27682772 let jT = makeString(fe(true, jR, eg), "_")
27692773 let gy = G(B)
2770- let lC = valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,")
2771- let mj = fl(lC, hq._5)
2772- let lE = mj._1
2773- let lF = mj._2
2774- let mk = iJ(gL.caller, gL.transactionId)
2775- let iP = mk._2._1
2774+ let lE = valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,")
2775+ let mk = fl(lE, hq._5)
2776+ let lG = mk._1
2777+ let lH = mk._2
2778+ let ml = iJ(gL.caller, gL.transactionId)
2779+ let iP = ml._2._1
27762780 let fk = if ((0 >= hq._1))
2777- then $Tuple3([IntegerEntry(jc, 0), StringEntry(gy, lE)], "", 0)
2778- else $Tuple3((mk._1 ++ (if (lF)
2781+ then $Tuple3([IntegerEntry(jc, 0), StringEntry(gy, lG)], "", 0)
2782+ else $Tuple3((ml._1 ++ (if (lH)
27792783 then [StringEntry(M(B), "0_0_0_0_0")]
2780- else ((((nil :+ StringEntry(bK(B), makeString([mk._2._2, "L", iP], "_"))) :+ IntegerEntry(jc, hq._1)) :+ StringEntry(gy, lE)) :+ StringEntry(hM, makeString([ip[bi], ip[bj], jT, ip[bl]], ":"))))), iP, hq._3)
2784+ else ((((nil :+ StringEntry(bK(B), makeString([ml._2._2, "L", iP], "_"))) :+ IntegerEntry(jc, hq._1)) :+ StringEntry(gy, lG)) :+ StringEntry(hM, makeString([ip[bi], ip[bj], jT, ip[bl]], ":"))))), iP, hq._3)
27812785 if (kq(B))
27822786 then throw("expedition_checkTournament")
27832787 else if (kr(B))
27842788 then throw("expedition_checkDelivery")
27852789 else {
2786- let mi = dA(invoke(dh, "burnAcres", [ei], nil))
2787- $Tuple2(((fk._1 ++ ka(B, aa)._1) ++ ln), $Tuple3(fk._2, fk._3, mi))
2790+ let mj = dA(invoke(dh, "burnAcres", [ei], nil))
2791+ $Tuple2(((fk._1 ++ ka(B, aa)._1) ++ lp), $Tuple3(fk._2, fk._3, mj))
27882792 }
27892793 }
27902794 }
27932797
27942798 @Callable(gL)
27952799 func buySLandForAcres () = {
2796- let ln = lj(gL)
2800+ let lp = ll(gL)
27972801 if ((size(gL.payments) != 1))
27982802 then throw("exactly 1 payment must be attached")
27992803 else {
2800- let lo = gL.payments[0]
2801- let fr = lo.amount
2802- if (if (!(isDefined(lo.assetId)))
2804+ let lq = gL.payments[0]
2805+ let fr = lq.amount
2806+ if (if (!(isDefined(lq.assetId)))
28032807 then true
2804- else (value(lo.assetId) != dp))
2808+ else (value(lq.assetId) != dp))
28052809 then throw("ACRES payments only!")
28062810 else if ((fr != ei))
28072811 then throw(("Payment attached should be " + toString(ei)))
28082812 else {
28092813 let fk = iJ(gL.caller, gL.transactionId)
2810- let mi = dA(invoke(dh, "burnAcres", [ei], [AttachedPayment(dp, fr)]))
2811- $Tuple2(((fk._1 ++ kg(toString(gL.caller), aa)._1) ++ ln), $Tuple2(fk._2._1, mi))
2814+ let mj = dA(invoke(dh, "burnAcres", [ei], [AttachedPayment(dp, fr)]))
2815+ $Tuple2(((fk._1 ++ kg(toString(gL.caller), aa)._1) ++ lp), $Tuple2(fk._2._1, mj))
28122816 }
28132817 }
28142818 }
28172821
28182822 @Callable(gL)
28192823 func upgradeInfra (Q) = {
2820- let ln = lj(gL)
2824+ let lp = ll(gL)
28212825 if ((size(gL.payments) != 0))
28222826 then throw("No payments required")
28232827 else {
28242828 let fk = jL(true, gL.caller, 0, Q)
28252829 let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked")
2826- $Tuple2(((fk._1 ++ ln) ++ ka(B, fraction(ab, fk._3, cF))._1), fk._2)
2827- }
2828- }
2829-
2830-
2831-
2832-@Callable(gL)
2833-func activateArtifact (ml,mm) = {
2834- let ln = lj(gL)
2830+ $Tuple2(((fk._1 ++ lp) ++ ka(B, fraction(ab, fk._3, cF))._1), fk._2)
2831+ }
2832+ }
2833+
2834+
2835+
2836+@Callable(gL)
2837+func activateArtifact (mm,mn) = {
2838+ let lp = ll(gL)
28352839 if ((size(gL.payments) != 0))
28362840 then throw("No payments required")
28372841 else {
28382842 let d = toString(gL.caller)
28392843 let fk = {
2840- let cz = ml
2844+ let cz = mm
28412845 if (("PRESALE" == cz))
2842- then ko(d, mm)
2846+ then ko(d, mn)
28432847 else if (("ONBOARD" == cz))
28442848 then kh(d)
28452849 else throw("Unknown artifact")
28462850 }
2847- (fk ++ ln)
2848- }
2849- }
2850-
2851-
2852-
2853-@Callable(gL)
2854-func mergeLands (kG) = {
2855- let ln = lj(gL)
2851+ (fk ++ lp)
2852+ }
2853+ }
2854+
2855+
2856+
2857+@Callable(gL)
2858+func mergeLands (kI) = {
2859+ let lp = ll(gL)
28562860 if ((size(gL.payments) != 0))
28572861 then throw("No payments required")
28582862 else {
2859- let fk = le(toString(gL.caller), kG)
2860- $Tuple2(((fk._1 ++ ln) ++ kg(toString(gL.caller), ac)._1), fk._2)
2861- }
2862- }
2863-
2864-
2865-
2866-@Callable(gL)
2867-func cargoExchange (mn,Q) = {
2868- let ln = lj(gL)
2863+ let fk = lg(toString(gL.caller), kI)
2864+ $Tuple2(((fk._1 ++ lp) ++ kg(toString(gL.caller), ac)._1), fk._2)
2865+ }
2866+ }
2867+
2868+
2869+
2870+@Callable(gL)
2871+func cargoExchange (mo,Q) = {
2872+ let lp = ll(gL)
28692873 if ((size(gL.payments) != 0))
28702874 then throw("No payments required")
28712875 else {
2872- let io = split_4C(mn, ":")
2876+ let io = split_4C(mo, ":")
28732877 let d = toString(gL.originCaller)
28742878 let jt = value(assetInfo(fromBase58String(Q)))
28752879 let ju = bs(Q)
28982902 let ih = split(hQ[bd], "_")
28992903 let jI = (parseIntValue(ih[bf]) + fk._7)
29002904 let jJ = (parseIntValue(ih[bg]) - fk._7)
2901- ([StringEntry(hM, makeString_2C([ip[bi], fk._4, fk._5, fk._6], ":")), StringEntry(hZ, makeString_2C([hQ[aZ], fk._1, fk._2, fk._3, makeString([ih[be], toString(jI), toString(jJ), ih[bh]], "_")], ":"))] ++ ln)
2905+ ([StringEntry(hM, makeString_2C([ip[bi], fk._4, fk._5, fk._6], ":")), StringEntry(hZ, makeString_2C([hQ[aZ], fk._1, fk._2, fk._3, makeString([ih[be], toString(jI), toString(jJ), ih[bh]], "_")], ":"))] ++ lp)
29022906 }
29032907 }
29042908 }
29162920 if ((size(ie) != 5))
29172921 then throw("warehouse string should contain 4 ':' separators")
29182922 else {
2919- let mo = split(ie[bd], "_")[be]
2923+ let mp = split(ie[bd], "_")[be]
29202924 let jI = hP(ie)
2921- let mp = hN(ie[aZ])
2922- let jJ = ((mp - parseIntValue(mo)) - jI)
2923- let mq = makeString_2C([ie[aZ], ie[ba], ie[bb], ie[bc], makeString([mo, toString(jI), toString(jJ), toString(mp)], "_")], ":")
2924- $Tuple2([StringEntry(hZ, mq)], mq)
2925+ let mq = hN(ie[aZ])
2926+ let jJ = ((mq - parseIntValue(mp)) - jI)
2927+ let mr = makeString_2C([ie[aZ], ie[ba], ie[bb], ie[bc], makeString([mp, toString(jI), toString(jJ), toString(mq)], "_")], ":")
2928+ $Tuple2([StringEntry(hZ, mr)], mr)
29252929 }
29262930 }
29272931
29362940 let ia = (dI(split(jt.description, "_")[dj]) / cG)
29372941 let ib = valueOrElse(getInteger(bz(Q)), 0)
29382942 let ie = hY(hZ, ia, ib)
2939- let mo = dA(invoke(dd, "recalcLockedVolumeREADONLY", [Q, ie], nil))
2943+ let mp = dA(invoke(dd, "recalcLockedVolumeREADONLY", [Q, ie], nil))
29402944 let jI = hP(ie)
2941- let mp = hN(ie[aZ])
2942- let jJ = ((mp - mo) - jI)
2943- let mq = makeString_2C([ie[aZ], ie[ba], ie[bb], ie[bc], makeString([toString(mo), toString(jI), toString(jJ), toString(mp)], "_")], ":")
2944- $Tuple2([StringEntry(hZ, mq)], mq)
2945+ let mq = hN(ie[aZ])
2946+ let jJ = ((mq - mp) - jI)
2947+ let mr = makeString_2C([ie[aZ], ie[ba], ie[bb], ie[bc], makeString([toString(mp), toString(jI), toString(jJ), toString(mq)], "_")], ":")
2948+ $Tuple2([StringEntry(hZ, mr)], mr)
29452949 }
29462950
29472951
29482952
29492953 @Callable(gL)
2950-func fixContinentProportions (kG) = if ((gL.caller != dc))
2954+func fixContinentProportions (kI) = if ((gL.caller != dc))
29512955 then throw("Access denied")
29522956 else {
2953- func mr (eS,ms) = (eS :+ valueOrElse(getString(dt(ms)), "0_0_0_0_0_0"))
2957+ func ms (eS,mt) = (eS :+ valueOrElse(getString(dt(mt)), "0_0_0_0_0_0"))
29542958
29552959 let gv = {
29562960 let eU = aQ
29582962 let eW = nil
29592963 func eX (eY,eZ) = if ((eZ >= eV))
29602964 then eY
2961- else mr(eY, eU[eZ])
2965+ else ms(eY, eU[eZ])
29622966
29632967 func fa (eY,eZ) = if ((eZ >= eV))
29642968 then eY
29662970
29672971 fa(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5)
29682972 }
2969- func mt (eS,Q) = {
2973+ func mu (eS,Q) = {
29702974 let jt = value(assetInfo(fromBase58String(Q)))
29712975 let jx = split(jt.description, "_")
29722976 let ia = (dI(jx[dj]) / cG)
2973- let ms = jx[dl]
2977+ let mt = jx[dl]
29742978 let gH = gN(jx[dk])
2975- let hp = value(indexOf(aQ, ms))
2976- let kV = split(eS[hp], "_")
2977- let mu = makeString(gF(kV, gH, ia, 1), "_")
2978- let cz = ms
2979+ let hp = value(indexOf(aQ, mt))
2980+ let kX = split(eS[hp], "_")
2981+ let mv = makeString(gF(kX, gH, ia, 1), "_")
2982+ let cz = mt
29792983 if (("Americas" == cz))
2980- then [mu, eS[1], eS[2], eS[3], eS[4]]
2984+ then [mv, eS[1], eS[2], eS[3], eS[4]]
29812985 else if (("Europe" == cz))
2982- then [eS[0], mu, eS[2], eS[3], eS[4]]
2986+ then [eS[0], mv, eS[2], eS[3], eS[4]]
29832987 else if (("Asia" == cz))
2984- then [eS[0], eS[1], mu, eS[3], eS[4]]
2988+ then [eS[0], eS[1], mv, eS[3], eS[4]]
29852989 else if (("Africa" == cz))
2986- then [eS[0], eS[1], eS[2], mu, eS[4]]
2990+ then [eS[0], eS[1], eS[2], mv, eS[4]]
29872991 else if (("Oceania" == cz))
2988- then [eS[0], eS[1], eS[2], eS[3], mu]
2992+ then [eS[0], eS[1], eS[2], eS[3], mv]
29892993 else throw("wrong continent")
29902994 }
29912995
29922996 let fd = {
2993- let eU = kG
2997+ let eU = kI
29942998 let eV = size(eU)
29952999 let eW = gv
29963000 func hG (eY,eZ) = if ((eZ >= eV))
29973001 then eY
2998- else mt(eY, eU[eZ])
3002+ else mu(eY, eU[eZ])
29993003
30003004 func hH (eY,eZ) = if ((eZ >= eV))
30013005 then eY
30123016 func fixStakedPieces (cN) = if ((gL.caller != dc))
30133017 then throw("Access denied")
30143018 else {
3015- let kZ = if ((cN == ""))
3019+ let lb = if ((cN == ""))
30163020 then 0
30173021 else {
3018- let kS = getString(ao, dv(cN))
3019- let kO = if (isDefined(kS))
3020- then split_51C(value(kS), "_")
3022+ let kU = getString(ao, dv(cN))
3023+ let kQ = if (isDefined(kU))
3024+ then split_51C(value(kU), "_")
30213025 else nil
3022- func mv (eS,Q) = {
3026+ func mw (eS,Q) = {
30233027 let jt = value(assetInfo(fromBase58String(Q)))
30243028 let dJ = split(jt.description, "_")[dj]
30253029 (eS + dI(dJ))
30263030 }
30273031
3028- let eU = kO
3032+ let eU = kQ
30293033 let eV = size(eU)
30303034 let eW = 0
30313035 func eX (eY,eZ) = if ((eZ >= eV))
30323036 then eY
3033- else mv(eY, eU[eZ])
3037+ else mw(eY, eU[eZ])
30343038
30353039 func fa (eY,eZ) = if ((eZ >= eV))
30363040 then eY
30383042
30393043 fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 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)
30403044 }
3041- $Tuple2([IntegerEntry(dw(cN), kZ)], kZ)
3045+ $Tuple2([IntegerEntry(dw(cN), lb)], lb)
30423046 }
30433047
30443048
30453049
30463050 @Callable(gL)
3047-func setCustomName (bq,kQ,bu) = {
3048- let ln = lj(gL)
3051+func setCustomName (bq,kS,bu) = {
3052+ let lp = ll(gL)
30493053 if ((size(gL.payments) != 1))
30503054 then throw("Exactly one payment required")
30513055 else {
3052- let lo = value(gL.payments[0])
3053- if ((lo.assetId != cy))
3056+ let lq = value(gL.payments[0])
3057+ if ((lq.assetId != cy))
30543058 then throw("Allowed USDT payment only!")
3055- else if ((lo.amount != ed))
3059+ else if ((lq.amount != ed))
30563060 then throw(("Payment should be " + toString(ed)))
3057- else if (contains(kQ, "__"))
3058- then throw(("Name should not contain '__': " + kQ))
3059- else if ((size(kQ) > ee))
3061+ else if (contains(kS, "__"))
3062+ then throw(("Name should not contain '__': " + kS))
3063+ else if ((size(kS) > ee))
30603064 then throw(("Name too long, maxLength=" + toString(ee)))
30613065 else {
30623066 let d = toString(gL.originCaller)
3063- let mw = {
3067+ let mx = {
30643068 let cz = bu
30653069 if (("ACCOUNT" == cz))
30663070 then {
3067- let mx = ey(kQ)
3068- let my = getString(mx)
3069- if (isDefined(my))
3070- then throw(("Name already registered: " + kQ))
3071+ let my = ey(kS)
3072+ let mz = getString(my)
3073+ if (isDefined(mz))
3074+ then throw(("Name already registered: " + kS))
30713075 else {
3072- let mz = bC(d)
3073- let mA = getString(mz)
3074- let mB = if (isDefined(mA))
3075- then [DeleteEntry(ey(value(mA)))]
3076+ let mA = bC(d)
3077+ let mB = getString(mA)
3078+ let mC = if (isDefined(mB))
3079+ then [DeleteEntry(ey(value(mB)))]
30763080 else nil
3077- (((mB :+ StringEntry(mz, kQ)) :+ StringEntry(mx, d)) ++ kg(d, Z)._1)
3081+ (((mC :+ StringEntry(mA, kS)) :+ StringEntry(my, d)) ++ kg(d, Z)._1)
30783082 }
30793083 }
30803084 else if (("LAND" == cz))
30883092 if ((jw != d))
30893093 then throw((aD + " is not yours"))
30903094 else {
3091- let mx = er(kQ)
3092- let my = getString(mx)
3093- if (isDefined(my))
3094- then throw(("Name already registered: " + kQ))
3095+ let my = er(kS)
3096+ let mz = getString(my)
3097+ if (isDefined(mz))
3098+ then throw(("Name already registered: " + kS))
30953099 else {
3096- let mC = br(bq)
3097- let mA = getString(mC)
3098- let mB = if (isDefined(mA))
3099- then [DeleteEntry(er(value(mA)))]
3100+ let mD = br(bq)
3101+ let mB = getString(mD)
3102+ let mC = if (isDefined(mB))
3103+ then [DeleteEntry(er(value(mB)))]
31003104 else nil
3101- (((mB :+ StringEntry(mC, kQ)) :+ StringEntry(mx, bq)) ++ kg(d, Z)._1)
3105+ (((mC :+ StringEntry(mD, kS)) :+ StringEntry(my, bq)) ++ kg(d, Z)._1)
31023106 }
31033107 }
31043108 }
31163120 if ((jw != d))
31173121 then throw((aE + " is not yours"))
31183122 else {
3119- let mx = ex(kQ)
3120- let my = getString(mx)
3121- if (isDefined(my))
3122- then throw(("Name already registered: " + kQ))
3123+ let my = ex(kS)
3124+ let mz = getString(my)
3125+ if (isDefined(mz))
3126+ then throw(("Name already registered: " + kS))
31233127 else {
3124- let mC = bB(bq)
3125- let mA = getString(mC)
3126- let mB = if (isDefined(mA))
3127- then [DeleteEntry(ex(value(mA)))]
3128+ let mD = bB(bq)
3129+ let mB = getString(mD)
3130+ let mC = if (isDefined(mB))
3131+ then [DeleteEntry(ex(value(mB)))]
31283132 else nil
3129- (((mB :+ StringEntry(mC, kQ)) :+ StringEntry(mx, bq)) ++ ka(bq, Z)._1)
3133+ (((mC :+ StringEntry(mD, kS)) :+ StringEntry(my, bq)) ++ ka(bq, Z)._1)
31303134 }
31313135 }
31323136 }
31333137 }
31343138 else throw("Unknown entity type")
31353139 }
3136- $Tuple2(((mw :+ ScriptTransfer(dd, lo.amount, cy)) ++ ln), 0)
3140+ $Tuple2(((mx :+ ScriptTransfer(dd, lq.amount, cy)) ++ lp), 0)
31373141 }
31383142 }
31393143 }
31413145
31423146
31433147 @Callable(gL)
3144-func setReferrals (mD,mE) = if ((gL.callerPublicKey != ea))
3148+func setReferrals (mE,mF) = if ((gL.callerPublicKey != ea))
31453149 then throw("Permission denied")
31463150 else {
3147- let ln = lj(gL)
3151+ let lp = ll(gL)
31483152 if ((size(gL.payments) != 0))
31493153 then throw("No payments required")
3150- else if (!(isDefined(addressFromString(mD))))
3151- then throw(("Invalid address: " + mD))
3152- else if (!(isDefined(addressFromString(mE))))
3153- then throw(("Invalid address: " + mE))
3154+ else if (!(isDefined(addressFromString(mE))))
3155+ then throw(("Invalid address: " + mE))
3156+ else if (!(isDefined(addressFromString(mF))))
3157+ then throw(("Invalid address: " + mF))
31543158 else {
3155- let mF = ez()
3156- let mG = getString(mF)
3157- let mH = if (isDefined(mG))
3158- then split_4C(value(mG), "_")
3159+ let mG = ez()
3160+ let mH = getString(mG)
3161+ let mI = if (isDefined(mH))
3162+ then split_4C(value(mH), "_")
31593163 else nil
3160- if (containsElement(mH, mE))
3161- then throw((mE + " is not newbie (already has referrals)"))
3164+ if (containsElement(mI, mF))
3165+ then throw((mF + " is not newbie (already has referrals)"))
31623166 else {
3163- let ki = bD(mE)
3167+ let ki = bD(mF)
31643168 let kj = getString(ki)
31653169 if (if (isDefined(kj))
31663170 then isDefined(addressFromString(value(kj)))
31673171 else false)
3168- then throw(((mE + " already has refBy: ") + value(kj)))
3172+ then throw(((mF + " already has refBy: ") + value(kj)))
31693173 else {
3170- let mI = bG(mD)
3171- let mJ = getString(mI)
3172- let mK = if (isDefined(mJ))
3173- then split_4C(value(mJ), "_")
3174+ let mJ = bG(mE)
3175+ let mK = getString(mJ)
3176+ let mL = if (isDefined(mK))
3177+ then split_4C(value(mK), "_")
31743178 else nil
3175- if (containsElement(mK, mE))
3176- then throw((((mD + " already contains ") + mE) + " within referrals"))
3179+ if (containsElement(mL, mF))
3180+ then throw((((mE + " already contains ") + mF) + " within referrals"))
31773181 else {
3178- let mL = makeString_2C((mK :+ mE), "_")
3179- let mM = if (containsElement(mH, mD))
3180- then value(mG)
3181- else makeString_2C((mH :+ mD), "_")
3182- $Tuple2(([StringEntry(ki, mD), StringEntry(mI, mL), StringEntry(mF, mM)] ++ ln), 0)
3182+ let mM = makeString_2C((mL :+ mF), "_")
3183+ let mN = if (containsElement(mI, mE))
3184+ then value(mH)
3185+ else makeString_2C((mI :+ mE), "_")
3186+ $Tuple2(([StringEntry(ki, mE), StringEntry(mJ, mM), StringEntry(mG, mN)] ++ lp), 0)
31833187 }
31843188 }
31853189 }
31893193
31903194
31913195 @Callable(gL)
3192-func distributePoints (mN,mO,mP,mQ,mR) = {
3193- let ln = lj(gL)
3196+func distributePoints (mO,mP,mQ,mR,mS) = {
3197+ let lp = ll(gL)
31943198 if ((size(gL.payments) != 0))
31953199 then throw("No payments required")
31963200 else {
31973201 let d = toString(gL.originCaller)
3198- let mS = dC(invoke(df, "checkWlgXpREADONLY", [d], nil))
3199- let mT = dA(mS[1])
3200- let mU = if ((0 >= mT))
3202+ let mT = dC(invoke(df, "checkWlgXpREADONLY", [d], nil))
3203+ let mU = dA(mT[1])
3204+ let mV = if ((0 >= mU))
32013205 then $Tuple2(0, nil)
32023206 else {
32033207 let kb = dA(invoke(df, "takeWlgXp", [d], nil))
32043208 if ((kb == kb))
3205- then $Tuple2(mT, [IntegerEntry(I(d), dA(mS[0])), IntegerEntry(H(d), dA(mS[2]))])
3209+ then $Tuple2(mU, [IntegerEntry(I(d), dA(mT[0])), IntegerEntry(H(d), dA(mT[2]))])
32063210 else throw("Strict value is not equal to itself.")
32073211 }
3208- let mV = mU._1
3209- let mW = mU._2
3212+ let mW = mV._1
3213+ let mX = mV._2
32103214 let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
3211- let mX = J(d)
3212- let mY = (valueOrElse(getInteger(mX), 0) + mV)
3213- let mZ = F(B)
3214- let na = valueOrElse(getInteger(mZ), 0)
3215- let nb = (mY + na)
3216- let nc = ((((mN + mO) + mP) + mQ) + mR)
3217- if ((nc > nb))
3218- then throw((("There are only " + toString(nb)) + " free points to distribute"))
3215+ let mY = J(d)
3216+ let mZ = (valueOrElse(getInteger(mY), 0) + mW)
3217+ let na = F(B)
3218+ let nb = valueOrElse(getInteger(na), 0)
3219+ let nc = (mZ + nb)
3220+ let nd = ((((mO + mP) + mQ) + mR) + mS)
3221+ if ((nd > nc))
3222+ then throw((("There are only " + toString(nc)) + " free points to distribute"))
32193223 else {
3220- let nd = C(B)
3221- let ar = split(valueOrElse(getString(nd), "0_0_0_0_0"), "_")
3222- let ne = (mY - nc)
3223- $Tuple2((([IntegerEntry(mX, if ((0 > ne))
3224+ let ne = C(B)
3225+ let ar = split(valueOrElse(getString(ne), "0_0_0_0_0"), "_")
3226+ let nf = (mZ - nd)
3227+ $Tuple2((([IntegerEntry(mY, if ((0 > nf))
32243228 then 0
3225- else ne), IntegerEntry(mZ, if ((0 > ne))
3226- then (na + ne)
3227- else na), StringEntry(nd, makeString([toString((parseIntValue(ar[l]) + mN)), toString((parseIntValue(ar[m]) + mO)), toString((parseIntValue(ar[n]) + mP)), toString((parseIntValue(ar[o]) + mQ)), toString((parseIntValue(ar[p]) + mR))], "_"))] ++ ln) ++ mW), 0)
3229+ else nf), IntegerEntry(na, if ((0 > nf))
3230+ then (nb + nf)
3231+ else nb), StringEntry(ne, makeString([toString((parseIntValue(ar[l]) + mO)), toString((parseIntValue(ar[m]) + mP)), toString((parseIntValue(ar[n]) + mQ)), toString((parseIntValue(ar[o]) + mR)), toString((parseIntValue(ar[p]) + mS))], "_"))] ++ lp) ++ mX), 0)
32283232 }
32293233 }
32303234 }
32373241
32383242
32393243 @Callable(gL)
3240-func splitByGlobalAndLocalWeightsREADONLY (nf,ng,gO) = {
3244+func splitByGlobalAndLocalWeightsREADONLY (ng,nh,gO) = {
32413245 let gH = gN(gO)
3242- $Tuple2(nil, $Tuple2(fb(nf), eM(ng, gH)))
3246+ $Tuple2(nil, $Tuple2(fb(ng), eM(nh, gH)))
32433247 }
32443248
32453249
32623266 @Callable(gL)
32633267 func saveLastTx () = if (!(containsElement([df, dd, dg, dh], gL.caller)))
32643268 then throw("Access denied")
3265- else $Tuple2(lj(gL), 42)
3269+ else $Tuple2(ll(gL), 42)
32663270
32673271
32683272
32813285
32823286
32833287 @Callable(gL)
3284-func equipDuck (nh) = {
3285- let ln = lj(gL)
3288+func equipDuck (ni) = {
3289+ let lp = ll(gL)
32863290 if ((size(gL.payments) != 0))
32873291 then throw("No payments required")
32883292 else {
32943298 then throw("equipDuck_checkDelivery")
32953299 else {
32963300 let gy = G(B)
3297- let ni = split(valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3301+ let nj = split(valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
32983302 let hM = bJ(B)
32993303 let ip = hL(hM)
3300- let lE = split(nh, "_")
3301- if ((size(lE) != r))
3304+ let lG = split(ni, "_")
3305+ if ((size(lG) != r))
33023306 then throw("Wrong equipment string")
33033307 else {
3304- let gA = gn(ni, fy(ip[bl]), true, nil)
3305- let gB = split(lE[q], ";")[1]
3308+ let gA = gn(nj, fy(ip[bl]), true, nil)
3309+ let gB = split(lG[q], ";")[1]
33063310 let ap = if ((gB == ""))
33073311 then 0
33083312 else {
33273331 }
33283332 }
33293333 let gi = an(this, B, ap, true)
3330- let gE = gn(lE, gA, false, gi)
3331- let nj = fD(gE)
3332- $Tuple2(([StringEntry(gy, nh), StringEntry(hM, makeString_2C([ip[bi], ip[bj], ip[bk], nj], ":")), StringEntry(M(B), makeString([toString(gi[7]), toString(gi[8]), toString(gi[9]), toString(gi[10]), toString(gi[11])], "_"))] ++ ln), 0)
3334+ let gE = gn(lG, gA, false, gi)
3335+ let nk = fD(gE)
3336+ $Tuple2(([StringEntry(gy, ni), StringEntry(hM, makeString_2C([ip[bi], ip[bj], ip[bk], nk], ":")), StringEntry(M(B), makeString([toString(gi[7]), toString(gi[8]), toString(gi[9]), toString(gi[10]), toString(gi[11])], "_"))] ++ lp), 0)
33333337 }
33343338 }
33353339 }
33383342
33393343
33403344 @Callable(gL)
3341-func fortificateLand (Q,nk) = {
3342- let ln = lj(gL)
3345+func fortificateLand (Q,nl) = {
3346+ let lp = ll(gL)
33433347 if ((size(gL.payments) != 0))
33443348 then throw("No payments required")
33453349 else {
33463350 let d = toString(gL.originCaller)
33473351 let B = valueOrElse(getString(bI(d)), "")
33483352 let fI = an(this, B, 0, false)
3349- let nl = bA(Q)
3350- let nm = split(valueOrElse(getString(nl), ":0_15:0_18:0"), "_")
3353+ let nm = bA(Q)
3354+ let nn = split(valueOrElse(getString(nm), ":0_15:0_18:0"), "_")
33513355 let jt = value(assetInfo(fromBase58String(Q)))
33523356 let ia = (dI(split(jt.description, "_")[dj]) / cG)
33533357 let ib = valueOrElse(getInteger(bz(Q)), 0)
33543358 let hZ = by(Q)
33553359 let ie = hY(hZ, ia, ib)
3356- let nn = split(ie[bd], "_")
3357- let no = parseIntValue(nn[bf])
3358- let np = parseIntValue(nn[bg])
3359- let nq = split(nk, "_")
3360- let nr = gu(nm, fy(ie[bc]), no, np, true, nil)
3361- let gA = nr._1
3362- let ns = nr._2
3363- let nt = nr._3
3364- let nu = gu(nq, gA, ns, nt, false, fI)
3365- let gE = nu._1
3366- let nv = nu._2
3367- let nw = nu._3
3368- let nj = fD(gE)
3369- let jZ = makeString([nn[be], toString(nv), toString(nw), nn[bh]], "_")
3370- $Tuple2(([StringEntry(nl, nk), StringEntry(hZ, makeString_2C([ie[aZ], ie[ba], ie[bb], nj, jZ], ":"))] ++ ln), 0)
3360+ let no = split(ie[bd], "_")
3361+ let np = parseIntValue(no[bf])
3362+ let nq = parseIntValue(no[bg])
3363+ let nr = split(nl, "_")
3364+ let ns = gu(nn, fy(ie[bc]), np, nq, true, nil)
3365+ let gA = ns._1
3366+ let nt = ns._2
3367+ let nu = ns._3
3368+ let nv = gu(nr, gA, nt, nu, false, fI)
3369+ let gE = nv._1
3370+ let nw = nv._2
3371+ let nx = nv._3
3372+ let nk = fD(gE)
3373+ let jZ = makeString([no[be], toString(nw), toString(nx), no[bh]], "_")
3374+ $Tuple2(([StringEntry(nm, nl), StringEntry(hZ, makeString_2C([ie[aZ], ie[ba], ie[bb], nk, jZ], ":"))] ++ lp), 0)
33713375 }
33723376 }
33733377
33793383 else {
33803384 let jc = A(B)
33813385 let jd = ah(valueOrElse(getInteger(E(B)), 0))
3382- let kw = valueOrElse(getInteger(jc), jd)
3383- let nx = bK(B)
3384- let jr = valueOrElse(getString(nx), aK)
3386+ let ky = valueOrElse(getInteger(jc), jd)
3387+ let ny = bK(B)
3388+ let jr = valueOrElse(getString(ny), aK)
33853389 let cf = valueOrElse(getInteger(dg, bQ), 0)
3386- let ny = (toString(cf) + "_T_0")
3387- $Tuple2([IntegerEntry(K(B), kw), IntegerEntry(jc, jd), StringEntry(L(B), jr), StringEntry(nx, ny)], ny)
3390+ let nz = (toString(cf) + "_T_0")
3391+ $Tuple2([IntegerEntry(K(B), ky), IntegerEntry(jc, jd), StringEntry(L(B), jr), StringEntry(ny, nz)], nz)
33883392 }
33893393
33903394
33913395
33923396 @Callable(gL)
33933397 func breakAttempt () = {
3394- let ln = lj(gL)
3398+ let lp = ll(gL)
33953399 let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked")
3396- let nx = bK(B)
3397- let jr = valueOrElse(getString(nx), aK)
3400+ let ny = bK(B)
3401+ let jr = valueOrElse(getString(ny), aK)
33983402 if ((split(jr, "_")[bn] != "T"))
33993403 then throw("Your duck is not in the tournament")
34003404 else {
3401- let kB = getIntegerValue(K(B))
3402- let kC = getStringValue(L(B))
3403- $Tuple2(((ln :+ IntegerEntry(A(B), kB)) :+ StringEntry(nx, kC)), jr)
3405+ let kD = getIntegerValue(K(B))
3406+ let kE = getStringValue(L(B))
3407+ $Tuple2(((lp :+ IntegerEntry(A(B), kD)) :+ StringEntry(ny, kE)), jr)
34043408 }
34053409 }
34063410
34103414 func exitTournamentInternal (B) = if ((gL.caller != this))
34113415 then throw("Access denied")
34123416 else {
3413- let kB = getIntegerValue(K(B))
3414- let kC = getStringValue(L(B))
3415- $Tuple2([IntegerEntry(A(B), kB), StringEntry(bK(B), kC)], false)
3417+ let kD = getIntegerValue(K(B))
3418+ let kE = getStringValue(L(B))
3419+ $Tuple2([IntegerEntry(A(B), kD), StringEntry(bK(B), kE)], false)
34163420 }
34173421
34183422
34213425 func exitDeliveryInternal (B) = if ((gL.caller != this))
34223426 then throw("Access denied")
34233427 else {
3424- let mk = ks(B, false, 0, "")
3425- $Tuple2((mk._1 ++ mk._2), false)
3428+ let ml = ks(B, false, 0, "", false, 0)
3429+ $Tuple2((ml._1 ++ ml._2), false)
34263430 }
34273431
34283432
34293433
34303434 @Callable(gL)
3431-func autoExitDelivery (B,iW,ku) = if ((gL.caller != this))
3435+func autoExitDelivery (B,iW,ku,kw) = if ((gL.caller != this))
34323436 then throw("Access denied")
34333437 else {
3434- let mk = ks(B, true, iW, ku)
3435- $Tuple2(mk._1, $Tuple2(mk._3, mk._4))
3438+ let ml = ks(B, true, iW, ku, true, kw)
3439+ $Tuple2(ml._1, $Tuple2(ml._3, ml._4))
34363440 }
34373441
34383442
34393443
34403444 @Callable(gL)
34413445 func prepareRobbery (iR,iS) = {
3442- let ln = lj(gL)
3446+ let lp = ll(gL)
34433447 if (!(sigVerify_8Kb(iR, iS, ea)))
34443448 then throw("signature does not match")
34453449 else if ((size(gL.payments) != 1))
34463450 then throw("exactly 1 payment must be attached")
34473451 else {
3448- let lo = gL.payments[0]
3449- let nz = lo.amount
3450- if (if (!(isDefined(lo.assetId)))
3452+ let lq = gL.payments[0]
3453+ let nA = lq.amount
3454+ if (if (!(isDefined(lq.assetId)))
34513455 then true
3452- else (value(lo.assetId) != dn))
3456+ else (value(lq.assetId) != dn))
34533457 then throw("WLGOLD payments only!")
34543458 else {
34553459 let fq = split(toUtf8String(iR), "|")
34633467 then throw("prepareRobbery_checkDelivery")
34643468 else {
34653469 let az = av(this, B)._1
3466- if ((az > nz))
3467- then throw(((("Payment " + toString(nz)) + " < required ") + toString(az)))
3470+ if ((az > nA))
3471+ then throw(((("Payment " + toString(nA)) + " < required ") + toString(az)))
34683472 else {
3469- let nA = split(fq[1], "_")
3473+ let nB = split(fq[1], "_")
34703474 let ay = lastBlock.timestamp
34713475 let aA = valueOrElse(getInteger(S(B)), 0)
34723476 let aB = valueOrElse(getString(T(B)), "")
34763480 else false)
34773481 then throw(("You already started robbing, wait till " + toString(aC)))
34783482 else {
3479- func nB (eS,Q) = {
3480- let nC = valueOrElse(getInteger(P(Q)), 0)
3481- let nD = valueOrElse(getInteger(R(Q)), 0)
3482- if ((nC > size(v)))
3483+ func nC (eS,Q) = {
3484+ let nD = valueOrElse(getInteger(P(Q)), 0)
3485+ let nE = valueOrElse(getInteger(R(Q)), 0)
3486+ if ((nD > size(v)))
34833487 then throw("Invalid state")
3484- else if ((ay > nD))
3488+ else if ((ay > nE))
34853489 then {
3486- let nE = valueOrElse(getInteger(bs(Q)), 0)
3487- if ((0 >= nE))
3490+ let nF = valueOrElse(getInteger(bs(Q)), 0)
3491+ if ((0 >= nF))
34883492 then eS
34893493 else {
34903494 let gs = value(assetInfo(fromBase58String(Q)))
34913495 let jx = split(gs.description, "_")
34923496 let jj = dI(jx[dj])
3493- let nF = ji(Q, jj)
3494- let gR = (ay - nE)
3495- let jA = fraction(gR, (nF * jj), a)
3497+ let nG = ji(Q, jj)
3498+ let gR = (ay - nF)
3499+ let jA = fraction(gR, (nG * jj), a)
34963500 if ((w > jA))
34973501 then eS
34983502 else (eS :+ Q)
35013505 else eS
35023506 }
35033507
3504- let nG = {
3505- let eU = nA
3508+ let nH = {
3509+ let eU = nB
35063510 let eV = size(eU)
35073511 let eW = nil
35083512 func eX (eY,eZ) = if ((eZ >= eV))
35093513 then eY
3510- else nB(eY, eU[eZ])
3514+ else nC(eY, eU[eZ])
35113515
35123516 func fa (eY,eZ) = if ((eZ >= eV))
35133517 then eY
35153519
35163520 fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
35173521 }
3518- if ((size(nG) == 0))
3522+ if ((size(nH) == 0))
35193523 then throw("No candidates for robbery")
35203524 else {
3521- let nH = dS(size(nG), height, (iS + gL.transactionId))
3522- let Q = nG[nH]
3523- $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (ay + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ ln), Q)
3525+ let nI = dS(size(nH), height, (iS + gL.transactionId))
3526+ let Q = nH[nI]
3527+ $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (ay + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ lp), Q)
35243528 }
35253529 }
35263530 }
35343538
35353539 @Callable(gL)
35363540 func robLand (iR,iS) = {
3537- let ln = lj(gL)
3541+ let lp = ll(gL)
35383542 if (!(sigVerify_8Kb(iR, iS, ea)))
35393543 then throw("signature does not match")
35403544 else {
35413545 let bM = toString(gL.caller)
35423546 let B = valueOrErrorMessage(getString(bI(bM)), "You don't have a duck staked")
35433547 let ay = lastBlock.timestamp
3544- $Tuple2((ln :+ IntegerEntry(N(B), ay)), 0)
3548+ $Tuple2((lp :+ IntegerEntry(N(B), ay)), 0)
35453549 }
35463550 }
35473551
35513555 func acceptDelivery () = if (!(cw))
35523556 then throw("Delivery feature is turned off!")
35533557 else {
3554- let ln = lj(gL)
3558+ let lp = ll(gL)
35553559 let bM = toString(gL.caller)
35563560 let B = valueOrErrorMessage(getString(bI(bM)), "You don't have a duck staked")
3557- let nI = valueOrElse(getInteger(dd, bO), 0)
3558- let kz = valueOrElse(getInteger(dd, bP), 0)
3559- if ((aN > (nI - kz)))
3560- then throw(((("Delivery is not available, fund=" + dN(nI, 6)) + ", locked=") + dN(kz, 6)))
3561+ let nJ = valueOrElse(getInteger(dd, bO), 0)
3562+ let kB = valueOrElse(getInteger(dd, bP), 0)
3563+ if ((aN > (nJ - kB)))
3564+ then throw(((("Delivery is not available, fund=" + dN(nJ, 6)) + ", locked=") + dN(kB, 6)))
35613565 else {
35623566 let ay = lastBlock.timestamp
3563- let nJ = valueOrElse(getInteger(U(B)), 0)
3564- if ((nJ > ay))
3565- then throw(("Delivery is forbidden for your duck until " + toString(nJ)))
3567+ let nK = valueOrElse(getInteger(U(B)), 0)
3568+ if ((nK > ay))
3569+ then throw(("Delivery is forbidden for your duck until " + toString(nK)))
35663570 else if (kq(B))
35673571 then throw("acceptDelivery_checkTournament")
35683572 else if (kr(B))
35693573 then throw("acceptDelivery_checkDelivery")
35703574 else {
3571- let nK = dA(invoke(dd, "updateDeliveryLocked", [(kz + aN)], nil))
3575+ let nL = dA(invoke(dd, "updateDeliveryLocked", [(kB + aN)], nil))
35723576 let jc = A(B)
35733577 let jd = ah(valueOrElse(getInteger(E(B)), 0))
3574- let kw = valueOrElse(getInteger(jc), jd)
3575- let nx = bK(B)
3576- let jr = valueOrElse(getString(nx), aK)
3577- let nL = (toString(ay) + "_D_0")
3578- $Tuple2(([IntegerEntry(K(B), kw), IntegerEntry(jc, jd), StringEntry(L(B), jr), StringEntry(nx, nL)] ++ ln), $Tuple2(nL, nK))
3578+ let ky = valueOrElse(getInteger(jc), jd)
3579+ let ny = bK(B)
3580+ let jr = valueOrElse(getString(ny), aK)
3581+ let nM = (toString(ay) + "_D_0")
3582+ $Tuple2(([IntegerEntry(K(B), ky), IntegerEntry(jc, jd), StringEntry(L(B), jr), StringEntry(ny, nM)] ++ lp), $Tuple2(nM, nL))
35793583 }
35803584 }
35813585 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 86400000
55
66 let b = 60000
77
88 func c (d) = ("lastArbTimeUser_" + d)
99
1010
1111 let e = 100000000
1212
1313 let f = 3200
1414
1515 let g = 4000
1616
1717 let h = 3
1818
1919 let i = 100000000
2020
2121 let j = 400
2222
2323 let k = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
2424
2525 let l = 0
2626
2727 let m = 1
2828
2929 let n = 2
3030
3131 let o = 3
3232
3333 let p = 4
3434
3535 let q = 0
3636
3737 let r = 6
3838
3939 let s = 2
4040
4141 let t = 2
4242
4343 let u = 30
4444
4545 let v = [0, 600000, 900000, 43200000, 21600000]
4646
4747 let w = 20000000
4848
4949 let x = 1
5050
5151 let y = 0
5252
5353 let z = 1
5454
5555 func A (B) = ("duckHealth_" + B)
5656
5757
5858 func C (B) = ("duckChars_" + B)
5959
6060
6161 func D (B) = ("duckXP_" + B)
6262
6363
6464 func E (B) = ("duckLevel_" + B)
6565
6666
6767 func F (B) = ("duckFreePoints_" + B)
6868
6969
7070 func G (B) = ("duckEquipment_" + B)
7171
7272
7373 func H (d) = ("userXP_" + d)
7474
7575
7676 func I (d) = ("userLevel_" + d)
7777
7878
7979 func J (d) = ("userFreePoints_" + d)
8080
8181
8282 func K (B) = ("savedHealth_" + B)
8383
8484
8585 func L (B) = ("savedLocation_" + B)
8686
8787
8888 func M (B) = ("duckBuffs_" + B)
8989
9090
9191 func N (B) = ("lastRobberyTime_" + B)
9292
9393
9494 func O (B) = ("lastRobberyCost_" + B)
9595
9696
9797 func P (Q) = ("landRobberyState_" + Q)
9898
9999
100100 func R (Q) = ("landCooldownETA_" + Q)
101101
102102
103103 func S (B) = ("duckRobberyState_" + B)
104104
105105
106106 func T (B) = ("lockedLandByDuck_" + B)
107107
108108
109109 func U (B) = ("deliveryDelayByDuck_" + B)
110110
111111
112112 let V = 10000
113113
114114 let W = 10000
115115
116116 let X = 2000
117117
118118 let Y = 100000
119119
120120 let Z = 1000000
121121
122122 let aa = 5000000
123123
124124 let ab = 10000
125125
126126 let ac = 1000000
127127
128128 let ad = 1000000
129129
130130 let ae = 10000
131131
132132 func af (ag) = fraction(f, pow(ag, 4, g, 4, 4, DOWN), e)
133133
134134
135135 func ah (ai) = (100 + ai)
136136
137137
138138 func aj (ak,al) = {
139139 let am = af(al)
140140 [am, (h * (am - ak))]
141141 }
142142
143143
144144 func an (ao,B,ap,aq) = {
145145 let ar = split(valueOrElse(getString(ao, C(B)), "0_0_0_0_0"), "_")
146146 let as = valueOrElse(getInteger(ao, E(B)), 0)
147147 let at = valueOrElse(getInteger(ao, A(B)), ah(as))
148148 let au = split(valueOrElse(getString(ao, M(B)), "0_0_0_0_0"), "_")
149149 ([parseIntValue(ar[l]), parseIntValue(ar[m]), parseIntValue(ar[n]), parseIntValue(ar[o]), parseIntValue(ar[p]), as, at] ++ (if (aq)
150150 then [ap, ap, ap, ap, ap]
151151 else [parseIntValue(au[l]), parseIntValue(au[m]), parseIntValue(au[n]), parseIntValue(au[o]), parseIntValue(au[p])]))
152152 }
153153
154154
155155 func av (ao,B) = {
156156 let aw = valueOrElse(getInteger(ao, O(B)), 0)
157157 let ax = valueOrElse(getInteger(ao, N(B)), 0)
158158 let ay = lastBlock.timestamp
159159 let az = max([i, (aw - (j * (ay - ax)))])
160160 let aA = valueOrElse(getInteger(ao, S(B)), 0)
161161 let aB = valueOrElse(getString(ao, T(B)), "")
162162 let aC = valueOrElse(getInteger(ao, R(aB)), 0)
163163 $Tuple5(az, ax, aA, aB, aC)
164164 }
165165
166166
167167 let aD = "LAND"
168168
169169 let aE = "DUCK"
170170
171171 let aF = "PRESALE"
172172
173173 let aG = 6
174174
175175 let aH = 25
176176
177177 let aI = 3456000
178178
179179 let aJ = 10000000000
180180
181181 let aK = "Africa_F_Africa"
182182
183183 let aL = 39637
184184
185185 let aM = 10
186186
187187 let aN = 50000
188188
189189 let aO = 600000
190190
191191 let aP = ["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"]
192192
193193 let aQ = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
194194
195195 let aR = 10000000
196196
197197 let aS = [15, 16, 17, 18, 19, 20]
198198
199199 let aT = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_10_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_20_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_30_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_2,1,3,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_5,2,8,0,0,0,0_"]
200200
201201 let aU = 6
202202
203203 let aV = 8
204204
205205 let aW = 9
206206
207207 let aX = 10
208208
209209 let aY = 10
210210
211211 let aZ = 0
212212
213213 let ba = 1
214214
215215 let bb = 2
216216
217217 let bc = 3
218218
219219 let bd = 4
220220
221221 let be = 0
222222
223223 let bf = 1
224224
225225 let bg = 2
226226
227227 let bh = 3
228228
229229 let bi = 0
230230
231231 let bj = 1
232232
233233 let bk = 2
234234
235235 let bl = 3
236236
237237 let bm = 0
238238
239239 let bn = 1
240240
241241 let bo = 2
242242
243243 func bp (bq) = ("no_" + bq)
244244
245245
246246 func br (bq) = ("lcna_" + bq)
247247
248248
249249 func bs (bq) = ("st_" + bq)
250250
251251
252252 func bt (bu,bq) = makeString(["las", bu, bq], "_")
253253
254254
255255 func bv (bw,bq,bx) = ((((("sttao_" + bw) + "_") + bq) + "_") + bx)
256256
257257
258258 func by (Q) = ("wh_" + Q)
259259
260260
261261 func bz (bq) = ("infraLevel_" + bq)
262262
263263
264264 func bA (Q) = ("fortifications_" + Q)
265265
266266
267267 func bB (bq) = ("duckCustomNameByAssetId_" + bq)
268268
269269
270270 func bC (d) = ("accountCustomNameByAddr_" + d)
271271
272272
273273 func bD (d) = ("accRefBy_" + d)
274274
275275
276276 func bE (B) = ("onboardArtActivatedOnDuck_" + B)
277277
278278
279279 func bF (d) = ("onboardArtActivatedDuckBy_" + d)
280280
281281
282282 func bG (d) = ("accReferrals_" + d)
283283
284284
285285 func bH (bq) = ("duckOwner_" + bq)
286286
287287
288288 func bI (bx) = ("stakedDuckByOwner_" + bx)
289289
290290
291291 func bJ (B) = ("backPack_" + B)
292292
293293
294294 func bK (B) = ("duckLocation_" + B)
295295
296296
297297 func bL (bM) = ("%s%s__userGwlReleaseTime__" + bM)
298298
299299
300300 func bN () = "emergencyWarehouseProducts"
301301
302302
303303 let bO = "deliveryFund"
304304
305305 let bP = "deliveryLocked"
306306
307307 let bQ = "%s__lastTourId"
308308
309309 func bR (bS) = ("%s%d__tourStaticData__" + toString(bS))
310310
311311
312312 func bT (bS) = ("%s%d__tourDynamicData__" + toString(bS))
313313
314314
315315 func bU (bS,B) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bS), B], "__")
316316
317317
318318 let bV = 0
319319
320320 let bW = 1
321321
322322 let bX = 6
323323
324324 let bY = 1
325325
326326 func bZ (ca,bS) = {
327327 let cb = split(valueOrErrorMessage(getString(ca, bR(bS)), (("Error reading tournament " + toString(bS)) + " data")), "__")
328328 let cc = split_4C(valueOrErrorMessage(getString(ca, bT(bS)), (("Error reading tournament " + toString(bS)) + " data")), "__")
329329 [cb, cc]
330330 }
331331
332332
333333 func cd (ca,ce) = {
334334 let cf = valueOrElse(getInteger(ca, bQ), 0)
335335 let cg = split(ce, "_")
336336 let ay = lastBlock.timestamp
337337 let ch = bZ(ca, cf)
338338 let cb = ch[bV]
339339 let cc = ch[bW]
340340 if (if (if ((cg[bn] == "T"))
341341 then (parseIntValue(cg[bm]) == cf)
342342 else false)
343343 then (cc[bY] == "INPROGRESS")
344344 else false)
345345 then (parseIntValue(cb[bX]) > ay)
346346 else false
347347 }
348348
349349
350350 func ci (ce) = {
351351 let cg = split(ce, "_")
352352 let ay = lastBlock.timestamp
353353 let cj = parseIntValue(cg[bm])
354354 let ck = parseIntValue(cg[bo])
355355 if (if ((cg[bn] == "D"))
356356 then ((cj + aO) > ay)
357357 else false)
358358 then (3 >= ck)
359359 else false
360360 }
361361
362362
363363 func cl (ce) = {
364364 let cm = split(ce, "_")[bn]
365365 if ((cm != "T"))
366366 then (cm != "D")
367367 else false
368368 }
369369
370370
371371 func cn (ca,ce) = {
372372 let cf = valueOrElse(getInteger(ca, bQ), 0)
373373 let cg = split(ce, "_")
374374 let ay = lastBlock.timestamp
375375 let ch = bZ(ca, cf)
376376 let cb = ch[bV]
377377 let cc = ch[bW]
378378 let cm = cg[bn]
379379 if ((cm == "D"))
380380 then true
381381 else if (if (if ((cg[bn] == "T"))
382382 then (parseIntValue(cg[bm]) == cf)
383383 else false)
384384 then (cc[bY] == "INPROGRESS")
385385 else false)
386386 then (parseIntValue(cb[bX]) > ay)
387387 else false
388388 }
389389
390390
391391 func co (cp) = (parseIntValue(cp[aU]) * aR)
392392
393393
394394 func cq (cr,cs,ct) = throw(((((("Cheat attempt: oldLoc=" + cr) + ", newLoc=") + cs) + ", case=") + toString(ct)))
395395
396396
397397 let cu = false
398398
399399 let cv = false
400400
401401 let cw = true
402402
403403 let cx = take(drop(this.bytes, 1), 1)
404404
405405 let cy = {
406406 let cz = cx
407407 if ((base58'2W' == cz))
408408 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
409409 else if ((base58'2T' == cz))
410410 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
411411 else throw("Unknown chain")
412412 }
413413
414414 let cA = {
415415 let cz = cx
416416 if ((base58'2W' == cz))
417417 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
418418 else if ((base58'2T' == cz))
419419 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
420420 else throw("Unknown chain")
421421 }
422422
423423 let cB = {
424424 let cz = cx
425425 if ((base58'2W' == cz))
426426 then 10000000000
427427 else if ((base58'2T' == cz))
428428 then 100000000
429429 else throw("Unknown chain")
430430 }
431431
432432 let cC = {
433433 let cz = cx
434434 if ((base58'2W' == cz))
435435 then 86400000
436436 else if ((base58'2T' == cz))
437437 then 60000
438438 else throw("Unknown chain")
439439 }
440440
441441 let cD = "__"
442442
443443 let cE = 1000000
444444
445445 let cF = 100000000
446446
447447 let cG = 25
448448
449449 let cH = 100
450450
451451 let cI = 225
452452
453453 let cJ = 400
454454
455455 let cK = 625
456456
457457 let cL = [0, 1, 2, 3, 4, 5]
458458
459459 func cM (cN,cO) = valueOrErrorMessage(getString(cN, cO), makeString(["mandatory ", toString(cN), ".", cO, " is not defined"], ""))
460460
461461
462462 let cP = 1
463463
464464 let cQ = 2
465465
466466 let cR = 3
467467
468468 let cS = 4
469469
470470 let cT = 7
471471
472472 let cU = 8
473473
474474 func cV () = "%s__restConfig"
475475
476476
477477 func cW () = "%s__restAddr"
478478
479479
480480 func cX (cY) = split_4C(cM(cY, cV()), cD)
481481
482482
483483 func cZ (da,db) = valueOrErrorMessage(addressFromString(da[db]), ("Rest cfg doesn't contain address at index " + toString(db)))
484484
485485
486486 let dc = addressFromStringValue(valueOrElse(getString(this, cW()), cA))
487487
488488 let da = cX(dc)
489489
490490 let ao = cZ(da, cP)
491491
492492 let dd = cZ(da, cQ)
493493
494494 let de = cZ(da, cR)
495495
496496 let df = cZ(da, cS)
497497
498498 let dg = cZ(da, cT)
499499
500500 let dh = cZ(da, cU)
501501
502502 let di = 0
503503
504504 let dj = 1
505505
506506 let dk = 2
507507
508508 let dl = 3
509509
510510 let dm = "wlg_assetId"
511511
512512 let dn = valueOrErrorMessage(getBinary(df, dm), "WLGOLD is not issued yet")
513513
514514 let do = "acresAssetId"
515515
516516 let dp = valueOrErrorMessage(getBinary(dh, do), "ACRES is not issued yet")
517517
518518 let dq = 2
519519
520520 func dr (cN) = ("finishBlockForAddr_" + cN)
521521
522522
523523 func ds () = "resTypesProportions"
524524
525525
526526 func dt (du) = ("resTypesByContinent_" + du)
527527
528528
529529 func dv (bx) = ("stakedLandsByOwner_" + bx)
530530
531531
532532 func dw (bx) = ("stakedPiecesByOwner_" + bx)
533533
534534
535535 func dx (dy) = {
536536 let cz = dy
537537 if ($isInstanceOf(cz, "String"))
538538 then {
539539 let dz = cz
540540 dz
541541 }
542542 else throw("fail to cast into String")
543543 }
544544
545545
546546 func dA (dy) = {
547547 let cz = dy
548548 if ($isInstanceOf(cz, "Int"))
549549 then {
550550 let dB = cz
551551 dB
552552 }
553553 else throw("fail to cast into Int")
554554 }
555555
556556
557557 func dC (dy) = {
558558 let cz = dy
559559 if ($isInstanceOf(cz, "List[Any]"))
560560 then {
561561 let dD = cz
562562 dD
563563 }
564564 else throw("fail to cast into List[Any]")
565565 }
566566
567567
568568 func dE (dy) = {
569569 let cz = dy
570570 if ($isInstanceOf(cz, "Boolean"))
571571 then {
572572 let dz = cz
573573 dz
574574 }
575575 else throw("fail to cast into Boolean")
576576 }
577577
578578
579579 func dF (dG) = {
580580 let cz = dG
581581 if ($isInstanceOf(cz, "(String, Int)"))
582582 then {
583583 let dH = cz
584584 dH
585585 }
586586 else throw("fail to cast into (String, Int)")
587587 }
588588
589589
590590 func dI (dJ) = {
591591 let cz = dJ
592592 if (("S" == cz))
593593 then cG
594594 else if (("M" == cz))
595595 then cH
596596 else if (("L" == cz))
597597 then cI
598598 else if (("XL" == cz))
599599 then cJ
600600 else if (("XXL" == cz))
601601 then cK
602602 else throw("Unknown land size")
603603 }
604604
605605
606606 func dK (dz) = isDefined(parseInt(dz))
607607
608608
609609 func dL () = "contractsBlocked"
610610
611611
612612 func dM (d) = ("lastTxIdByUser_" + d)
613613
614614
615615 func dN (dG,dO) = {
616616 let dP = pow(10, 0, dO, 0, 0, DOWN)
617617 let dQ = toString((dG % dP))
618618 let dR = drop(toString(dP), (1 + size(dQ)))
619619 (((toString((dG / dP)) + ".") + dR) + dQ)
620620 }
621621
622622
623623 func dS (dT,dU,dV) = {
624624 let dW = value(blockInfoByHeight(dU))
625625 let dX = sha256((value(dW.vrf) + dV))
626626 (toInt(dX) % dT)
627627 }
628628
629629
630630 let dY = {
631631 let cz = cx
632632 if ((base58'2W' == cz))
633633 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
634634 else if ((base58'2T' == cz))
635635 then this
636636 else throw("Unknown chain")
637637 }
638638
639639 let dZ = {
640640 let cz = cx
641641 if ((base58'2W' == cz))
642642 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
643643 else if ((base58'2T' == cz))
644644 then this
645645 else throw("Unknown chain")
646646 }
647647
648648 let ea = {
649649 let cz = cx
650650 if ((base58'2W' == cz))
651651 then if (cu)
652652 then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
653653 else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
654654 else if ((base58'2T' == cz))
655655 then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
656656 else throw("Unknown chain")
657657 }
658658
659659 let eb = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
660660
661661 let ec = 300000
662662
663663 let ed = 5000000
664664
665665 let ee = 50
666666
667667 let ef = 10000000
668668
669669 let eg = {
670670 let cz = cx
671671 if ((base58'2W' == cz))
672672 then 252289527462
673673 else if ((base58'2T' == cz))
674674 then 2522895274
675675 else throw("Unknown chain")
676676 }
677677
678678 let eh = {
679679 let cz = cx
680680 if ((base58'2W' == cz))
681681 then 250000000
682682 else if ((base58'2T' == cz))
683683 then 250000000
684684 else throw("Unknown chain")
685685 }
686686
687687 let ei = 2500000000
688688
689689 let ej = toBigInt(5)
690690
691691 let ek = toBigInt(20)
692692
693693 let el = toBigInt((20 * 20))
694694
695695 let em = toBigInt(((20 * 20) * 20))
696696
697697 let en = toBigInt((((20 * 20) * 20) * 20))
698698
699699 let eo = toBigInt(((((20 * 20) * 20) * 20) * 20))
700700
701701 let ep = 500
702702
703703 func eq () = "nextLandNum"
704704
705705
706706 func er (es) = ("lcn_" + es)
707707
708708
709709 func et (eu) = ("la_" + eu)
710710
711711
712712 func ev (bq,bx) = ((("ilao_" + bq) + "_") + bx)
713713
714714
715715 func ew (eu) = ("lo_" + eu)
716716
717717
718718 func ex (es) = ("duckByCustomName_" + es)
719719
720720
721721 func ey (es) = ("accountByCustomName_" + es)
722722
723723
724724 func ez () = "oldiesList"
725725
726726
727727 let eA = 0
728728
729729 let eB = 1
730730
731731 let eC = 2
732732
733733 let eD = 0
734734
735735 let eE = 5
736736
737737 let eF = 6
738738
739739 let eG = 7
740740
741741 func eH (eu,dJ) = ((aD + eu) + dJ)
742742
743743
744744 func eI (eJ,eK) = {
745745 let eL = if ((eJ >= 0))
746746 then (((eJ + eK) - 1) / eK)
747747 else -((((-(eJ) + eK) - 1) / eK))
748748 (eL * cF)
749749 }
750750
751751
752752 func eM (eN,eO) = {
753753 let eP = (((((eO[0] + eO[1]) + eO[2]) + eO[3]) + eO[4]) + eO[5])
754754 if ((0 >= eP))
755755 then throw("Zero weights sum")
756756 else {
757757 let eQ = fraction(eN, cE, eP)
758758 func eR (eS,eT) = (eS :+ fraction(eT, eQ, cE))
759759
760760 let eU = eO
761761 let eV = size(eU)
762762 let eW = nil
763763 func eX (eY,eZ) = if ((eZ >= eV))
764764 then eY
765765 else eR(eY, eU[eZ])
766766
767767 func fa (eY,eZ) = if ((eZ >= eV))
768768 then eY
769769 else throw("List size exceeds 6")
770770
771771 fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
772772 }
773773 }
774774
775775
776776 func fb (eN) = {
777777 let fc = split(value(getString(ds())), "_")
778778 if ((size(fc) != aG))
779779 then throw("Wrong proportions data")
780780 else {
781781 let fd = [parseIntValue(fc[0]), parseIntValue(fc[1]), parseIntValue(fc[2]), parseIntValue(fc[3]), parseIntValue(fc[4]), parseIntValue(fc[5])]
782782 eM(eN, fd)
783783 }
784784 }
785785
786786
787787 func fe (ff,fg,fh) = {
788788 let fi = fb(fh)
789789 func fj (eS,db) = {
790790 let fk = (parseIntValue(fg[db]) - fi[db])
791791 if ((0 > fk))
792792 then throw(((((("Not enough material idx=" + toString(db)) + ", you have ") + fg[db]) + ", but need ") + toString(fi[db])))
793793 else (eS :+ toString(fk))
794794 }
795795
796796 if (ff)
797797 then {
798798 let eU = cL
799799 let eV = size(eU)
800800 let eW = nil
801801 func eX (eY,eZ) = if ((eZ >= eV))
802802 then eY
803803 else fj(eY, eU[eZ])
804804
805805 func fa (eY,eZ) = if ((eZ >= eV))
806806 then eY
807807 else throw("List size exceeds 6")
808808
809809 fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
810810 }
811811 else fg
812812 }
813813
814814
815815 func fl (fm,fn) = if ((fn == ""))
816816 then $Tuple2(fm, false)
817817 else {
818818 func fo (eS,fp) = {
819819 let fq = split(fp, ",")
820820 if ((size(fq) != 2))
821821 then throw("Incorrect format, should be index,amount")
822822 else {
823823 let db = parseIntValue(fq[0])
824824 if (if ((0 > db))
825825 then true
826826 else (db >= size(aT)))
827827 then throw("Unknown product idx")
828828 else {
829829 let fr = parseIntValue(fq[1])
830830 let fs = split(eS._1, (fq[0] + ":"))
831831 if ((size(fs) != 2))
832832 then throw((("You don't have " + aP[db]) + " equipped"))
833833 else {
834834 let ft = fs[1]
835835 let fu = if (dK(take(drop(ft, 1), 1)))
836836 then 2
837837 else 1
838838 let fv = parseIntValue(take(ft, fu))
839839 let fw = drop(ft, fu)
840840 let fx = if ((fv >= fr))
841841 then (fv - fr)
842842 else throw(((((("You equipped " + toString(fv)) + " of ") + aP[db]) + ", but tried to use ") + toString(fr)))
843843 $Tuple2(((((fs[0] + fq[0]) + ":") + toString(fx)) + fw), if (eS._2)
844844 then true
845845 else if (if ((db >= 6))
846846 then (8 >= db)
847847 else false)
848848 then (fx == 0)
849849 else false)
850850 }
851851 }
852852 }
853853 }
854854
855855 let eU = split(fn, "_")
856856 let eV = size(eU)
857857 let eW = $Tuple2(fm, false)
858858 func eX (eY,eZ) = if ((eZ >= eV))
859859 then eY
860860 else fo(eY, eU[eZ])
861861
862862 func fa (eY,eZ) = if ((eZ >= eV))
863863 then eY
864864 else throw("List size exceeds 10")
865865
866866 fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
867867 }
868868
869869
870870 func fy (fz) = {
871871 let fA = if ((fz == ""))
872872 then nil
873873 else split_4C(fz, "_")
874874 func fB (eS,cp) = {
875875 let fC = (size(eS) / 8)
876876 let fv = if ((size(fA) > fC))
877877 then parseIntValue(fA[fC])
878878 else 0
879879 (eS + toBytes(fv))
880880 }
881881
882882 let eU = aT
883883 let eV = size(eU)
884884 let eW = base58''
885885 func eX (eY,eZ) = if ((eZ >= eV))
886886 then eY
887887 else fB(eY, eU[eZ])
888888
889889 func fa (eY,eZ) = if ((eZ >= eV))
890890 then eY
891891 else throw("List size exceeds 50")
892892
893893 fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 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)
894894 }
895895
896896
897897 func fD (fE) = {
898898 func fF (eS,cp) = {
899899 let fC = size(eS)
900900 let fG = take(drop(fE, (8 * fC)), 8)
901901 (eS :+ toString(toInt(fG)))
902902 }
903903
904904 makeString_2C({
905905 let eU = aT
906906 let eV = size(eU)
907907 let eW = nil
908908 func eX (eY,eZ) = if ((eZ >= eV))
909909 then eY
910910 else fF(eY, eU[eZ])
911911
912912 func fa (eY,eZ) = if ((eZ >= eV))
913913 then eY
914914 else throw("List size exceeds 50")
915915
916916 fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 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)
917917 }, "_")
918918 }
919919
920920
921921 func fH (fI,fJ) = {
922922 func fK (eS,fC) = {
923923 let fL = if ((size(fI) > (7 + fC)))
924924 then fI[(7 + fC)]
925925 else 0
926926 if ((parseIntValue(fJ[fC]) > (fI[fC] + fL)))
927927 then throw(("Requirement not satisfied: " + k[fC]))
928928 else true
929929 }
930930
931931 let eU = [0, 1, 2, 3, 4, 5, 6]
932932 let eV = size(eU)
933933 let eW = false
934934 func eX (eY,eZ) = if ((eZ >= eV))
935935 then eY
936936 else fK(eY, eU[eZ])
937937
938938 func fa (eY,eZ) = if ((eZ >= eV))
939939 then eY
940940 else throw("List size exceeds 7")
941941
942942 fa(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7)
943943 }
944944
945945
946946 func fM (fN,fA,fO,fI,fP,fQ) = {
947947 let fq = split(fN, ":")
948948 if ((size(fq) != 2))
949949 then throw("Incorrect format, should be index:amount")
950950 else if (if (!(fO))
951951 then (size(fq[0]) != 2)
952952 else false)
953953 then throw("Product idx should be 2 digits, zero padded")
954954 else {
955955 let fR = parseIntValue(fq[0])
956956 let fS = parseIntValue(fq[1])
957957 if (!(containsElement(aS, fR)))
958958 then throw((("Product '" + aP[fR]) + "' cannot be used for land defense"))
959959 else if ((0 > fS))
960960 then throw("Count can't be negative")
961961 else if ((fS > u))
962962 then throw(((("Can't put more than " + toString(u)) + " of ") + aP[fR]))
963963 else if ((fS == 0))
964964 then $Tuple3(fA, fP, fQ)
965965 else {
966966 let fT = take(fA, (8 * fR))
967967 let fv = toInt(take(drop(fA, (8 * fR)), 8))
968968 let fw = drop(fA, (8 * (fR + 1)))
969969 let cp = split(aT[fR], "_")
970970 if (if (!(fO))
971971 then (fS > fv)
972972 else false)
973973 then throw(((((("You have " + toString(fv)) + " of ") + aP[fR]) + ", but tried to use ") + toString(fS)))
974974 else {
975975 let fx = if (if (!(fO))
976976 then fH(fI, split(cp[aW], ","))
977977 else false)
978978 then (fv - fS)
979979 else (fv + fS)
980980 let fU = (eI(fx, aY) - eI(fv, aY))
981981 $Tuple3(((fT + toBytes(fx)) + fw), (fP + fU), (fQ - fU))
982982 }
983983 }
984984 }
985985 }
986986
987987
988988 func fV (fN,fA,fO,fW,fX,fY,fI) = {
989989 let fq = split(fN, ":")
990990 if ((size(fq) != 2))
991991 then throw("Incorrect format, should be index:amount")
992992 else if (if (!(fO))
993993 then (size(fq[0]) != 2)
994994 else false)
995995 then throw("Product idx should be 2 digits, zero padded")
996996 else {
997997 let fR = parseIntValue(fq[0])
998998 let fS = parseIntValue(fq[1])
999999 if (if ((0 > fR))
10001000 then true
10011001 else (fR >= size(aT)))
10021002 then throw("Unknown product idx")
10031003 else if ((0 > fS))
10041004 then throw("Count can't be negative")
10051005 else if ((fS > u))
10061006 then throw(((("Can't put more than " + toString(u)) + " of ") + aP[fR]))
10071007 else if ((fS == 0))
10081008 then $Tuple2(fA, false)
10091009 else {
10101010 let fT = take(fA, (8 * fR))
10111011 let fv = toInt(take(drop(fA, (8 * fR)), 8))
10121012 let fw = drop(fA, (8 * (fR + 1)))
10131013 let cp = split(aT[fR], "_")
10141014 if (if (!(fO))
10151015 then (fS > fv)
10161016 else false)
10171017 then throw(((((("You have " + toString(fv)) + " of ") + aP[fR]) + ", but tried to use ") + toString(fS)))
10181018 else {
10191019 let fZ = if (if (!(fO))
10201020 then fH(fI, split(cp[aW], ","))
10211021 else false)
10221022 then {
10231023 let ga = cp[aX]
10241024 if ((ga == ""))
10251025 then throw("Item cannot be equipped")
10261026 else {
10271027 let gb = parseIntValue(ga)
10281028 let gc = (gb / 100)
10291029 if ((fW != gc))
10301030 then throw("Segment incompatible")
10311031 else {
10321032 let gd = ((gb % 100) / 10)
10331033 if ((fX != gd))
10341034 then throw("Slot incompatible")
10351035 else {
10361036 let ge = (gb % 10)
10371037 if (if ((fY != 0))
10381038 then (ge > 1)
10391039 else false)
10401040 then throw("Big items should occupy slot 0")
10411041 else (ge > 1)
10421042 }
10431043 }
10441044 }
10451045 }
10461046 else false
10471047 $Tuple2(((fT + toBytes((fv + (if (fO)
10481048 then fS
10491049 else -(fS))))) + fw), fZ)
10501050 }
10511051 }
10521052 }
10531053 }
10541054
10551055
10561056 func gf (gg,gh,fO,fW,fX,gi) = if ((gg != ""))
10571057 then {
10581058 let gj = split(gg, ",")
10591059 if ((size(gj) > t))
10601060 then throw("Wrong slots format")
10611061 else {
10621062 let gk = gj[0]
10631063 let gl = if ((size(gj) > 1))
10641064 then gj[1]
10651065 else ""
10661066 if (if ((gk == ""))
10671067 then (gl == "")
10681068 else false)
10691069 then gh
10701070 else {
10711071 let gm = if ((gk != ""))
10721072 then fV(gk, gh, fO, fW, fX, 0, gi)
10731073 else $Tuple2(gh, false)
10741074 if ((gl != ""))
10751075 then if (gm._2)
10761076 then throw("Big item already occupies slot")
10771077 else fV(gl, gm._1, fO, fW, fX, 1, gi)._1
10781078 else gm._1
10791079 }
10801080 }
10811081 }
10821082 else gh
10831083
10841084
10851085 func gn (go,gp,fO,gi) = {
10861086 func fW (eS,gq) = {
10871087 let fC = eS._1
10881088 let fX = split(gq, ";")
10891089 if ((size(fX) != s))
10901090 then throw("Wrong segment format")
10911091 else {
10921092 let gr = fX[0]
10931093 let gs = fX[1]
10941094 if (if ((gr == ""))
10951095 then (gs == "")
10961096 else false)
10971097 then $Tuple2((fC + 1), eS._2)
10981098 else {
10991099 let gt = gf(gr, eS._2, fO, fC, 0, gi)
11001100 $Tuple2((fC + 1), gf(gs, gt, fO, fC, 1, gi))
11011101 }
11021102 }
11031103 }
11041104
11051105 ( let eU = go
11061106 let eV = size(eU)
11071107 let eW = $Tuple2(0, gp)
11081108 func eX (eY,eZ) = if ((eZ >= eV))
11091109 then eY
11101110 else fW(eY, eU[eZ])
11111111
11121112 func fa (eY,eZ) = if ((eZ >= eV))
11131113 then eY
11141114 else throw("List size exceeds 6")
11151115
11161116 fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6))._2
11171117 }
11181118
11191119
11201120 func gu (go,gp,fP,fQ,fO,fI) = if ((3 > size(go)))
11211121 then throw("At least duck, mines and traps parts are required")
11221122 else {
11231123 func fW (eS,gq) = {
11241124 let fC = eS._1
11251125 if ((fC == 0))
11261126 then $Tuple4((fC + 1), eS._2, eS._3, eS._4)
11271127 else {
11281128 let gv = fM(gq, eS._2, fO, fI, eS._3, eS._4)
11291129 $Tuple4((fC + 1), gv._1, gv._2, gv._3)
11301130 }
11311131 }
11321132
11331133 let gw = {
11341134 let eU = go
11351135 let eV = size(eU)
11361136 let eW = $Tuple4(0, gp, fP, fQ)
11371137 func eX (eY,eZ) = if ((eZ >= eV))
11381138 then eY
11391139 else fW(eY, eU[eZ])
11401140
11411141 func fa (eY,eZ) = if ((eZ >= eV))
11421142 then eY
11431143 else throw("List size exceeds 10")
11441144
11451145 fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
11461146 }
11471147 $Tuple3(gw._2, gw._3, gw._4)
11481148 }
11491149
11501150
11511151 func gx (B) = {
11521152 let gy = G(B)
11531153 let gz = split(valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
11541154 let gA = gn(gz, eb, true, nil)
11551155 let gB = split(gz[q], ";")[1]
11561156 let ap = if ((gB == ""))
11571157 then 0
11581158 else {
11591159 let gC = split(gB, ",")[0]
11601160 if ((gC == ""))
11611161 then 0
11621162 else {
11631163 let fN = split(gC, ":")
11641164 let db = fN[0]
11651165 let gD = fN[1]
11661166 if (if (if (if (if ((db == "06"))
11671167 then true
11681168 else (db == "07"))
11691169 then true
11701170 else (db == "08"))
11711171 then (gD != "")
11721172 else false)
11731173 then (parseIntValue(gD) > 0)
11741174 else false)
11751175 then parseIntValue(split(aT[parseIntValue(db)], "_")[aV])
11761176 else 0
11771177 }
11781178 }
11791179 let gi = an(this, B, ap, true)
11801180 let gE = gn(gz, gA, false, gi)
11811181 (gE == gE)
11821182 }
11831183
11841184
11851185 func gF (gG,gH,gI,gJ) = if ((size(gG) != aG))
11861186 then throw("Wrong proportions data")
11871187 else {
11881188 func gK (eS,gL) = {
11891189 let fk = (parseIntValue(gG[gL]) + ((gJ * gH[gL]) * gI))
11901190 if ((0 > fk))
11911191 then throw(((((((("Panic! Pieces of type=" + toString(gL)) + ", sign=") + toString(gJ)) + ", terrainCounts[i]=") + toString(gH[gL])) + ", landSizeIndex=") + toString(gI)))
11921192 else (eS :+ toString(fk))
11931193 }
11941194
11951195 let eU = cL
11961196 let eV = size(eU)
11971197 let eW = nil
11981198 func eX (eY,eZ) = if ((eZ >= eV))
11991199 then eY
12001200 else gK(eY, eU[eZ])
12011201
12021202 func fa (eY,eZ) = if ((eZ >= eV))
12031203 then eY
12041204 else throw("List size exceeds 6")
12051205
12061206 fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
12071207 }
12081208
12091209
12101210 func gM (gH,gI,gJ) = {
12111211 let gG = split(valueOrElse(getString(ds()), "0_0_0_0_0_0"), "_")
12121212 makeString(gF(gG, gH, gI, gJ), "_")
12131213 }
12141214
12151215
12161216 func gN (gO) = [(size(split(gO, "A")) - 1), (size(split(gO, "B")) - 1), (size(split(gO, "C")) - 1), (size(split(gO, "D")) - 1), (size(split(gO, "E")) - 1), (size(split(gO, "F")) - 1)]
12171217
12181218
12191219 func gP (gQ,gH,gR,gI,gS) = {
12201220 func gT (eS,gL) = {
12211221 let gU = ((fraction(gR, gS, a) * gH[gL]) * gI)
12221222 (eS :+ toString((parseIntValue(gQ[gL]) + gU)))
12231223 }
12241224
12251225 let fd = {
12261226 let eU = cL
12271227 let eV = size(eU)
12281228 let eW = nil
12291229 func eX (eY,eZ) = if ((eZ >= eV))
12301230 then eY
12311231 else gT(eY, eU[eZ])
12321232
12331233 func fa (eY,eZ) = if ((eZ >= eV))
12341234 then eY
12351235 else throw("List size exceeds 6")
12361236
12371237 fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
12381238 }
12391239 makeString(fd, "_")
12401240 }
12411241
12421242
12431243 func gV (gH,gR,gI,gS) = {
12441244 func gT (eS,gL) = {
12451245 let gU = ((fraction(gR, gS, a) * gH[gL]) * gI)
12461246 $Tuple2((eS._1 :+ gU), (eS._2 + gU))
12471247 }
12481248
12491249 let eU = cL
12501250 let eV = size(eU)
12511251 let eW = $Tuple2(nil, 0)
12521252 func eX (eY,eZ) = if ((eZ >= eV))
12531253 then eY
12541254 else gT(eY, eU[eZ])
12551255
12561256 func fa (eY,eZ) = if ((eZ >= eV))
12571257 then eY
12581258 else throw("List size exceeds 6")
12591259
12601260 fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
12611261 }
12621262
12631263
12641264 func gW (gX,gY,gZ,ha) = {
12651265 let hb = gZ._1
12661266 let hc = gZ._2
12671267 if ((hc == 0))
12681268 then $Tuple2(makeString(gX, "_"), makeString(gY, "_"))
12691269 else if ((ha >= hc))
12701270 then {
12711271 func hd (eS,gL) = (eS :+ toString((parseIntValue(gX[gL]) + hb[gL])))
12721272
12731273 let fd = {
12741274 let eU = cL
12751275 let eV = size(eU)
12761276 let eW = nil
12771277 func eX (eY,eZ) = if ((eZ >= eV))
12781278 then eY
12791279 else hd(eY, eU[eZ])
12801280
12811281 func fa (eY,eZ) = if ((eZ >= eV))
12821282 then eY
12831283 else throw("List size exceeds 6")
12841284
12851285 fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
12861286 }
12871287 $Tuple2(makeString(fd, "_"), makeString(gY, "_"))
12881288 }
12891289 else {
12901290 func he (eS,gL) = {
12911291 let hf = fraction(hb[gL], ha, hc)
12921292 $Tuple2((eS._1 :+ toString((parseIntValue(gX[gL]) + hf))), (eS._2 :+ toString(((parseIntValue(gY[gL]) + hb[gL]) - hf))))
12931293 }
12941294
12951295 let fd = {
12961296 let eU = cL
12971297 let eV = size(eU)
12981298 let eW = $Tuple2(nil, nil)
12991299 func eX (eY,eZ) = if ((eZ >= eV))
13001300 then eY
13011301 else he(eY, eU[eZ])
13021302
13031303 func fa (eY,eZ) = if ((eZ >= eV))
13041304 then eY
13051305 else throw("List size exceeds 6")
13061306
13071307 fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
13081308 }
13091309 $Tuple2(makeString(fd._1, "_"), makeString(fd._2, "_"))
13101310 }
13111311 }
13121312
13131313
13141314 func hg (hh) = if ((hh >= toBigInt(0)))
13151315 then hh
13161316 else -(hh)
13171317
13181318
13191319 let hi = [[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]]
13201320
13211321 func hj (dB,hk) = {
13221322 let hl = toInt((dB % ek))
13231323 let hm = if ((hk[0] > hl))
13241324 then "A"
13251325 else if ((hk[1] > hl))
13261326 then "B"
13271327 else if ((hk[2] > hl))
13281328 then "C"
13291329 else if ((hk[3] > hl))
13301330 then "D"
13311331 else if ((hk[4] > hl))
13321332 then "E"
13331333 else "F"
13341334 hm
13351335 }
13361336
13371337
13381338 func hn (ho,hp) = {
13391339 let hq = hi[hp]
13401340 func hr (eS,eT) = $Tuple2((((((eS._1 + hj(eS._2, hq)) + hj((eS._2 / ek), hq)) + hj((eS._2 / el), hq)) + hj((eS._2 / em), hq)) + hj((eS._2 / en), hq)), (eS._2 / eo))
13411341
13421342 let gw = {
13431343 let eU = [1, 2, 3, 4, 5]
13441344 let eV = size(eU)
13451345 let eW = $Tuple2("", (ho / ej))
13461346 func eX (eY,eZ) = if ((eZ >= eV))
13471347 then eY
13481348 else hr(eY, eU[eZ])
13491349
13501350 func fa (eY,eZ) = if ((eZ >= eV))
13511351 then eY
13521352 else throw("List size exceeds 5")
13531353
13541354 fa(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5)
13551355 }
13561356 gw._1
13571357 }
13581358
13591359
13601360 let hs = [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]
13611361
13621362 let ht = ["A", "B", "C", "D", "E", "F"]
13631363
13641364 func hu (hv,gI) = {
13651365 func hw (eS,dz) = {
13661366 let fC = eS._2
13671367 let hx = parseIntValue(dz)
13681368 let hh = if ((hx == 0))
13691369 then 0
13701370 else if ((hx >= (4 * gI)))
13711371 then (hx / gI)
13721372 else if ((hx > (3 * gI)))
13731373 then 3
13741374 else (((hx - 1) / gI) + 1)
13751375 $Tuple3((eS._1 :+ hh), (eS._2 + 1), (eS._3 + hh))
13761376 }
13771377
13781378 let gw = {
13791379 let eU = hv
13801380 let eV = size(eU)
13811381 let eW = $Tuple3(nil, 0, 0)
13821382 func eX (eY,eZ) = if ((eZ >= eV))
13831383 then eY
13841384 else hw(eY, eU[eZ])
13851385
13861386 func fa (eY,eZ) = if ((eZ >= eV))
13871387 then eY
13881388 else throw("List size exceeds 6")
13891389
13901390 fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
13911391 }
13921392 let hy = gw._1
13931393 let hz = value(indexOf(hy, max(hy)))
13941394 let hA = (gw._3 - 25)
13951395 func hB (eS,db) = {
13961396 let dG = if ((db == hz))
13971397 then (hy[db] - hA)
13981398 else hy[db]
13991399 let dR = if ((dG == 0))
14001400 then nil
14011401 else split(drop(toString(pow(10, 0, dG, 0, 0, DOWN)), 1), "")
14021402 let gb = ht[db]
14031403 func hC (hD,hE) = (hD :+ gb)
14041404
14051405 let hF = {
14061406 let eU = dR
14071407 let eV = size(eU)
14081408 let eW = nil
14091409 func hG (eY,eZ) = if ((eZ >= eV))
14101410 then eY
14111411 else hC(eY, eU[eZ])
14121412
14131413 func hH (eY,eZ) = if ((eZ >= eV))
14141414 then eY
14151415 else throw("List size exceeds 25")
14161416
14171417 hH(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(eW, 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)
14181418 }
14191419 (eS ++ hF)
14201420 }
14211421
14221422 let fd = {
14231423 let eU = cL
14241424 let eV = size(eU)
14251425 let eW = nil
14261426 func hG (eY,eZ) = if ((eZ >= eV))
14271427 then eY
14281428 else hB(eY, eU[eZ])
14291429
14301430 func hH (eY,eZ) = if ((eZ >= eV))
14311431 then eY
14321432 else throw("List size exceeds 6")
14331433
14341434 hH(hG(hG(hG(hG(hG(hG(eW, 0), 1), 2), 3), 4), 5), 6)
14351435 }
14361436 func hI (eS,fC) = (eS + fd[fC])
14371437
14381438 let eU = hs
14391439 let eV = size(eU)
14401440 let eW = ""
14411441 func hJ (eY,eZ) = if ((eZ >= eV))
14421442 then eY
14431443 else hI(eY, eU[eZ])
14441444
14451445 func hK (eY,eZ) = if ((eZ >= eV))
14461446 then eY
14471447 else throw("List size exceeds 25")
14481448
14491449 hK(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(eW, 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)
14501450 }
14511451
14521452
14531453 func hL (hM) = {
14541454 let gv = split(valueOrElse(getString(hM), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
14551455 [toString(valueOrElse(parseInt(gv[bi]), 0)), if ((size(split(gv[bj], "_")) == aG))
14561456 then gv[bj]
14571457 else "0_0_0_0_0_0", if ((size(split(gv[bk], "_")) == aG))
14581458 then gv[bk]
14591459 else "0_0_0_0_0_0", gv[bl]]
14601460 }
14611461
14621462
14631463 func hN (hO) = {
14641464 let fq = split(hO, "_")
14651465 ((aJ * (parseIntValue(fq[1]) + 1)) * parseIntValue(fq[0]))
14661466 }
14671467
14681468
14691469 func hP (hQ) = {
14701470 let hR = hQ[bc]
14711471 func hS (eS,hT) = (eS + parseIntValue(hT))
14721472
14731473 func hU (eS,hT) = {
14741474 let db = eS._1
14751475 let eL = (((parseIntValue(hT) + aY) - 1) / aY)
14761476 $Tuple2((db + 1), (eS._2 + (eL * cF)))
14771477 }
14781478
14791479 let hV = {
14801480 let eU = split(hQ[ba], "_")
14811481 let eV = size(eU)
14821482 let eW = 0
14831483 func eX (eY,eZ) = if ((eZ >= eV))
14841484 then eY
14851485 else hS(eY, eU[eZ])
14861486
14871487 func fa (eY,eZ) = if ((eZ >= eV))
14881488 then eY
14891489 else throw("List size exceeds 6")
14901490
14911491 fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
14921492 }
14931493 let hW = {
14941494 let eU = split(hQ[bb], "_")
14951495 let eV = size(eU)
14961496 let eW = 0
14971497 func hG (eY,eZ) = if ((eZ >= eV))
14981498 then eY
14991499 else hS(eY, eU[eZ])
15001500
15011501 func hH (eY,eZ) = if ((eZ >= eV))
15021502 then eY
15031503 else throw("List size exceeds 6")
15041504
15051505 hH(hG(hG(hG(hG(hG(hG(eW, 0), 1), 2), 3), 4), 5), 6)
15061506 }
15071507 let hX = if ((hR == ""))
15081508 then 0
15091509 else ( let eU = split_4C(hR, "_")
15101510 let eV = size(eU)
15111511 let eW = $Tuple2(0, 0)
15121512 func hJ (eY,eZ) = if ((eZ >= eV))
15131513 then eY
15141514 else hU(eY, eU[eZ])
15151515
15161516 func hK (eY,eZ) = if ((eZ >= eV))
15171517 then eY
15181518 else throw("List size exceeds 50")
15191519
15201520 hK(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(eW, 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
15211521 ((hV + hW) + hX)
15221522 }
15231523
15241524
15251525 func hY (hZ,ia,ib) = {
15261526 let hO = ((toString(ia) + "_") + toString(ib))
15271527 let ic = hN(hO)
15281528 let id = valueOrElse(getString(hZ), (hO + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
15291529 let ie = split_4C(id, ":")
15301530 let if = hP(ie)
15311531 let ig = if ((5 > size(ie)))
15321532 then makeString(["0", toString(if), toString((ic - if)), toString(ic)], "_")
15331533 else {
15341534 let ih = split(ie[bd], "_")
15351535 let ii = parseIntValue(ih[be])
15361536 let ij = if ((size(ih) > 1))
15371537 then parseIntValue(ih[bf])
15381538 else if
15391539 makeString([toString(ii), toString(ij), toString(((ic - ii) - ij)), toString(ic)], "_")
15401540 }
15411541 [ie[aZ], if ((size(split(ie[ba], "_")) == aG))
15421542 then ie[ba]
15431543 else "0_0_0_0_0_0", if ((size(split(ie[bb], "_")) == aG))
15441544 then ie[bb]
15451545 else "0_0_0_0_0_0", ie[bc], ig]
15461546 }
15471547
15481548
15491549 func ik (hQ) = {
15501550 let il = hP(hQ)
15511551 let im = parseIntValue(split(hQ[bd], "_")[be])
15521552 ((hN(hQ[aZ]) - il) - im)
15531553 }
15541554
15551555
15561556 func in (io,hQ,ip) = if ((size(io) != 3))
15571557 then throw("cargoListStr should contain exactly 2 ':' separators")
15581558 else {
15591559 let iq = split(io[0], "_")
15601560 let ir = split(io[1], "_")
15611561 let is = if ((io[2] == ""))
15621562 then nil
15631563 else split_4C(io[2], "_")
15641564 if ((size(iq) != aG))
15651565 then throw("All 6 resources should be passed")
15661566 else if ((size(ir) != aG))
15671567 then throw("All 6 materials should be passed")
15681568 else {
15691569 let ha = ik(hQ)
15701570 let it = split(hQ[ba], "_")
15711571 let iu = split(hQ[bb], "_")
15721572 let iv = if ((hQ[bc] == ""))
15731573 then nil
15741574 else split_4C(hQ[bc], "_")
15751575 let gY = split(ip[bj], "_")
15761576 let iw = split(ip[bk], "_")
15771577 let ix = if ((ip[bl] == ""))
15781578 then nil
15791579 else split_4C(ip[bl], "_")
15801580 func iy (eS,hT) = {
15811581 let gL = eS._1
15821582 let iz = parseIntValue(hT)
15831583 let iA = parseIntValue(it[gL])
15841584 let iB = parseIntValue(gY[gL])
15851585 if ((iz == 0))
15861586 then $Tuple4((gL + 1), (eS._2 :+ it[gL]), (eS._3 :+ gY[gL]), eS._4)
15871587 else if ((iz > 0))
15881588 then if ((iz > iB))
15891589 then throw((((("Attempt to take " + hT) + " from backpack, but only ") + toString(iB)) + " available"))
15901590 else $Tuple4((gL + 1), (eS._2 :+ toString((iA + iz))), (eS._3 :+ toString((iB - iz))), (eS._4 + iz))
15911591 else if ((-(iz) > iA))
15921592 then throw((((("Attempt to take " + toString(-(iz))) + " from warehouse, but only ") + toString(iA)) + " available"))
15931593 else $Tuple4((gL + 1), (eS._2 :+ toString((iA + iz))), (eS._3 :+ toString((iB - iz))), (eS._4 + iz))
15941594 }
15951595
15961596 let fd = {
15971597 let eU = iq
15981598 let eV = size(eU)
15991599 let eW = $Tuple4(0, nil, nil, 0)
16001600 func eX (eY,eZ) = if ((eZ >= eV))
16011601 then eY
16021602 else iy(eY, eU[eZ])
16031603
16041604 func fa (eY,eZ) = if ((eZ >= eV))
16051605 then eY
16061606 else throw("List size exceeds 6")
16071607
16081608 fa(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6)
16091609 }
16101610 func iC (eS,hT) = {
16111611 let gL = eS._1
16121612 let iz = parseIntValue(hT)
16131613 let iD = parseIntValue(iu[gL])
16141614 let iE = parseIntValue(iw[gL])
16151615 if ((iz == 0))
16161616 then $Tuple4((gL + 1), (eS._2 :+ iu[gL]), (eS._3 :+ iw[gL]), eS._4)
16171617 else if ((iz > 0))
16181618 then if ((iz > iE))
16191619 then throw((((("Attempt to take " + hT) + " from backpack, but only ") + toString(iE)) + " available"))
16201620 else $Tuple4((gL + 1), (eS._2 :+ toString((iD + iz))), (eS._3 :+ toString((iE - iz))), (eS._4 + iz))
16211621 else if ((-(iz) > iD))
16221622 then throw((((("Attempt to take " + toString(-(iz))) + " from warehouse, but only ") + toString(iD)) + " available"))
16231623 else $Tuple4((gL + 1), (eS._2 :+ toString((iD + iz))), (eS._3 :+ toString((iE - iz))), (eS._4 + iz))
16241624 }
16251625
16261626 let gr = {
16271627 let eU = ir
16281628 let eV = size(eU)
16291629 let eW = $Tuple4(0, nil, nil, fd._4)
16301630 func hG (eY,eZ) = if ((eZ >= eV))
16311631 then eY
16321632 else iC(eY, eU[eZ])
16331633
16341634 func hH (eY,eZ) = if ((eZ >= eV))
16351635 then eY
16361636 else throw("List size exceeds 6")
16371637
16381638 hH(hG(hG(hG(hG(hG(hG(eW, 0), 1), 2), 3), 4), 5), 6)
16391639 }
16401640 func iF (eS,hT) = {
16411641 let gL = eS._1
16421642 let iz = parseIntValue(hT)
16431643 let iG = if ((size(iv) > gL))
16441644 then parseIntValue(iv[gL])
16451645 else 0
16461646 let iH = if ((size(ix) > gL))
16471647 then parseIntValue(ix[gL])
16481648 else 0
16491649 if ((iz == 0))
16501650 then $Tuple4((gL + 1), (eS._2 :+ toString(iG)), (eS._3 :+ toString(iH)), eS._4)
16511651 else if ((iz > 0))
16521652 then if ((iz > iH))
16531653 then throw((((("Attempt to take " + hT) + " from backpack, but only ") + toString(iH)) + " available"))
16541654 else {
16551655 let fU = (eI((iG + iz), aY) - eI(iG, aY))
16561656 $Tuple4((gL + 1), (eS._2 :+ toString((iG + iz))), (eS._3 :+ toString((iH - iz))), (eS._4 + fU))
16571657 }
16581658 else if ((-(iz) > iG))
16591659 then throw((((("Attempt to take " + toString(-(iz))) + " from warehouse, but only ") + toString(iG)) + " available"))
16601660 else {
16611661 let fU = (eI((iG + iz), aY) - eI(iG, aY))
16621662 $Tuple4((gL + 1), (eS._2 :+ toString((iG + iz))), (eS._3 :+ toString((iH - iz))), (eS._4 + fU))
16631663 }
16641664 }
16651665
16661666 let gv = if ((size(is) != 0))
16671667 then {
16681668 let eU = is
16691669 let eV = size(eU)
16701670 let eW = $Tuple4(0, nil, nil, gr._4)
16711671 func hJ (eY,eZ) = if ((eZ >= eV))
16721672 then eY
16731673 else iF(eY, eU[eZ])
16741674
16751675 func hK (eY,eZ) = if ((eZ >= eV))
16761676 then eY
16771677 else throw("List size exceeds 50")
16781678
16791679 hK(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(hJ(eW, 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)
16801680 }
16811681 else $Tuple4(0, iv, ix, gr._4)
16821682 let iI = gv._4
16831683 if ((iI > ha))
16841684 then throw((((("Attempt to put total " + toString(iI)) + " stuff, but only ") + toString(ha)) + " warehouse space left"))
16851685 else $Tuple7(makeString(fd._2, "_"), makeString(gr._2, "_"), makeString_2C(gv._2, "_"), makeString(fd._3, "_"), makeString(gr._3, "_"), makeString_2C(gv._3, "_"), iI)
16861686 }
16871687 }
16881688
16891689
16901690 func iJ (iK,iL) = {
16911691 let bM = toString(iK)
16921692 let iM = hg(toBigInt(iL))
16931693 let iN = valueOrElse(getInteger(eq()), (ep + 1))
16941694 let eu = toString(iN)
16951695 let hp = toInt((iM % ej))
16961696 let gO = hn(iM, hp)
16971697 let du = aQ[hp]
16981698 let iO = Issue(eH(eu, "S"), makeString([eu, "S", gO, du], "_"), 1, 0, false)
16991699 let bq = calculateAssetId(iO)
17001700 let iP = toBase58String(bq)
17011701 $Tuple2([IntegerEntry(eq(), (iN + 1)), iO, StringEntry(et(eu), iP), StringEntry(bp(iP), bM), StringEntry(ew(eu), bM), IntegerEntry(bz(iP), 0), IntegerEntry(ev(iP, bM), 0), ScriptTransfer(iK, 1, bq)], $Tuple2(iP, du))
17021702 }
17031703
17041704
17051705 func iQ (bM,iR,iS) = if (!(sigVerify_8Kb(iR, iS, ea)))
17061706 then throw("signature does not match")
17071707 else {
17081708 let fq = split_4C(toUtf8String(iR), ";")
17091709 let iT = split_4C(fq[0], "|")
17101710 let iU = split(iT[eD], "_")
17111711 let iV = parseIntValue(iU[0])
17121712 let iW = parseIntValue(iU[1])
17131713 let iX = split(fq[1], ":")
17141714 let iY = iX[0]
17151715 let iZ = parseIntValue(iT[eE])
17161716 if (if ((iZ > (lastBlock.timestamp + ec)))
17171717 then true
17181718 else ((lastBlock.timestamp - ec) > iZ))
17191719 then throw(((("signature outdated: logTime=" + toString(iZ)) + ", bcTime=") + toString(lastBlock.timestamp)))
17201720 else {
17211721 let ja = iX[1]
17221722 let jb = valueOrElse(getString(dM(bM)), "")
17231723 if ((jb != ja))
17241724 then throw(((("Tx ids don't match! In state: " + jb) + ", in msg: ") + ja))
17251725 else {
17261726 let B = valueOrErrorMessage(getString(bI(bM)), "You don't have a duck staked")
17271727 let jc = A(B)
17281728 let jd = ah(valueOrElse(getInteger(E(B)), 0))
17291729 let je = valueOrElse(getInteger(jc), jd)
17301730 if ((je != iV))
17311731 then throw(((("oldHealth=" + toString(je)) + " from state does not match one from flight log=") + toString(iV)))
17321732 else if ((0 >= iV))
17331733 then throw("You can't fly with zero health")
17341734 else if (!(gx(B)))
17351735 then throw("Equipment incompatible")
17361736 else {
17371737 let jf = if ((size(iT) > eF))
17381738 then iT[eF]
17391739 else ""
17401740 let jg = if ((size(iT) > eG))
17411741 then iT[eG]
17421742 else ""
17431743 let jh = if (if ((iW > 0))
17441744 then (jf == "$")
17451745 else false)
17461746 then dA(invoke(dc, "sendUsdtPrize", [bM], nil))
17471747 else 0
17481748 $Tuple5(iW, B, jh, iY, jg)
17491749 }
17501750 }
17511751 }
17521752 }
17531753
17541754
17551755 func ji (Q,jj) = {
17561756 let ib = valueOrElse(getInteger(bz(Q)), 0)
17571757 let jk = valueOrElse(getInteger(bt(aF, Q)), 0)
17581758 let jl = (ib / 6)
17591759 let jm = (ib / 7)
17601760 ((aI + fraction(aI, ((ib + jl) + (2 * jm)), 5)) + fraction(aI, jk, (jj * 5)))
17611761 }
17621762
17631763
17641764 func jn (d,jo,jp) = {
17651765 let jq = if ((jo == eA))
17661766 then $Tuple2(jp, valueOrElse(getString(bI(d)), ""))
17671767 else {
17681768 let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
17691769 let jr = valueOrElse(getString(bK(B)), aK)
17701770 let cg = split(value(jr), "_")
17711771 if ((cg[bn] != "L"))
17721772 then throw((("Duck location type is " + cg[bn]) + ", but should be L"))
17731773 else $Tuple2(cg[bo], B)
17741774 }
17751775 let Q = jq._1
17761776 let js = jq._2
17771777 let jt = value(assetInfo(fromBase58String(Q)))
17781778 let ju = bs(Q)
17791779 let jv = valueOrErrorMessage(getInteger(ju), (("Land " + jt.name) + " is not staked"))
17801780 let jw = valueOrErrorMessage(getString(bp(Q)), (("NFT " + jt.name) + " is orphaned"))
17811781 if ((jw != d))
17821782 then throw((aD + " is not yours"))
17831783 else {
17841784 let jx = split(jt.description, "_")
17851785 $Tuple4(js, Q, jx, jv)
17861786 }
17871787 }
17881788
17891789
17901790 func jy (d,eJ,jo,jp) = if ((0 > eJ))
17911791 then throw("Negative amount")
17921792 else {
17931793 let gb = jn(d, jo, jp)
17941794 let dJ = gb._3[dj]
17951795 let gH = gN(gb._3[dk])
17961796 let gR = (lastBlock.timestamp - gb._4)
17971797 if ((0 > gR))
17981798 then throw(((("Saved timestamp is in future, saved = " + toString(gb._4)) + ", current = ") + toString(lastBlock.timestamp)))
17991799 else {
18001800 let jj = dI(dJ)
18011801 let jz = ji(gb._2, jj)
18021802 let jA = fraction(gR, (jz * jj), a)
18031803 if ((eJ > jA))
18041804 then throw(((("Not enough resources, available = " + toString(jA)) + ", requested = ") + toString(eJ)))
18051805 else {
18061806 let jB = fraction((jA - eJ), a, (jz * jj))
18071807 let jC = (lastBlock.timestamp - jB)
18081808 let ia = (jj / cG)
18091809 let gZ = gV(gH, (gR - jB), ia, jz)
18101810 let hZ = by(gb._2)
18111811 let ib = valueOrElse(getInteger(bz(gb._2)), 0)
18121812 let hQ = hY(hZ, ia, ib)
18131813 let ih = split(hQ[bd], "_")
18141814 let ha = parseIntValue(ih[bg])
18151815 if (if ((jo == eA))
18161816 then (eJ > ha)
18171817 else false)
18181818 then throw((("Only " + toString(ha)) + " space left in warehouse"))
18191819 else {
18201820 let hM = bJ(gb._1)
18211821 let ip = hL(hM)
18221822 let gY = split(ip[bj], "_")
18231823 let gX = split(hQ[ba], "_")
18241824 let jD = if ((jo == eA))
18251825 then $Tuple4(gP(gX, gH, (gR - jB), ia, jz), ip[bj], (parseIntValue(ih[bf]) + gZ._2), (parseIntValue(ih[bg]) - gZ._2))
18261826 else if ((jo == eB))
18271827 then $Tuple4(hQ[ba], gP(gY, gH, (gR - jB), ia, jz), parseIntValue(ih[bf]), parseIntValue(ih[bg]))
18281828 else {
18291829 let jE = gW(gX, gY, gZ, ha)
18301830 let jF = min([parseIntValue(ih[bg]), gZ._2])
18311831 $Tuple4(jE._1, jE._2, (parseIntValue(ih[bf]) + jF), (parseIntValue(ih[bg]) - jF))
18321832 }
18331833 let jG = jD._1
18341834 let jH = jD._2
18351835 let jI = jD._3
18361836 let jJ = jD._4
18371837 $Tuple5([IntegerEntry(bs(gb._2), jC), IntegerEntry(bv(aD, gb._2, d), jC)], hM, [ip[bi], jH, ip[bk], ip[bl]], hZ, [hQ[aZ], jG, hQ[bb], hQ[bc], makeString([ih[be], toString(jI), toString(jJ), ih[bh]], "_")])
18381838 }
18391839 }
18401840 }
18411841 }
18421842
18431843
18441844 func jK (d,Q,jj,jo) = {
18451845 let ju = bs(Q)
18461846 let jv = value(getInteger(ju))
18471847 let jA = (fraction((lastBlock.timestamp - jv), ji(Q, jj), a) * jj)
18481848 jy(d, jA, jo, Q)
18491849 }
18501850
18511851
18521852 func jL (ff,iK,jM,Q) = {
18531853 let d = toString(iK)
18541854 let gb = jn(d, eC, Q)
18551855 let jj = dI(gb._3[dj])
18561856 let jN = bz(gb._2)
18571857 let jO = valueOrElse(getInteger(jN), 0)
18581858 if (if (!(cv))
18591859 then (jO >= 3)
18601860 else false)
18611861 then throw("Currently max infrastructure level = 3")
18621862 else {
18631863 let jP = ((sqrt(jj, 0, 0, DOWN) / 5) + 2)
18641864 let am = (jO + 1)
18651865 if (if (cv)
18661866 then (am > jP)
18671867 else false)
18681868 then throw(("Currently max infrastructure level = " + toString(jP)))
18691869 else {
18701870 let jQ = fraction(ef, (jj * am), cG)
18711871 if (if (!(ff))
18721872 then (jM != jQ)
18731873 else false)
18741874 then throw(("Payment attached should be " + toString(jQ)))
18751875 else {
18761876 let hM = bJ(gb._1)
18771877 let ip = hL(hM)
18781878 let jR = split(ip[bk], "_")
18791879 let jS = fraction(cB, (jj * am), cG)
18801880 let jT = makeString(fe(ff, jR, jS), "_")
18811881 let jU = jK(d, gb._2, jj, eC)
18821882 let jV = jU._5
18831883 let jW = hN(jV[aZ])
18841884 let jX = makeString([split(jV[aZ], "_")[0], toString(am)], "_")
18851885 let jY = hN(jX)
18861886 let ih = split(jV[bd], "_")
18871887 let jZ = makeString([ih[be], ih[bf], toString(((parseIntValue(ih[bg]) + jY) - jW)), toString(jY)], "_")
18881888 $Tuple3(([IntegerEntry(jN, am), IntegerEntry(ev(gb._2, d), am), StringEntry(hM, makeString([ip[bi], jU._3[bj], jT, ip[bl]], ":")), StringEntry(jU._4, makeString([jX, jV[ba], jV[bb], jV[bc], jZ], ":"))] ++ jU._1), am, jS)
18891889 }
18901890 }
18911891 }
18921892 }
18931893
18941894
18951895 func ka (B,kb) = {
18961896 let kc = E(B)
18971897 let kd = D(B)
18981898 let ag = valueOrElse(getInteger(kd), 0)
18991899 let al = (ag + kb)
19001900 let ke = aj(valueOrElse(getInteger(kc), 0), al)
19011901 let kf = F(B)
19021902 $Tuple2([IntegerEntry(kc, ke[0]), IntegerEntry(kd, al), IntegerEntry(kf, (valueOrElse(getInteger(kf), 0) + ke[1]))], al)
19031903 }
19041904
19051905
19061906 func kg (d,kb) = {
19071907 let kc = I(d)
19081908 let kd = H(d)
19091909 let ag = valueOrElse(getInteger(kd), 0)
19101910 let al = (ag + kb)
19111911 let ke = aj(valueOrElse(getInteger(kc), 0), al)
19121912 let kf = J(d)
19131913 $Tuple2([IntegerEntry(kc, ke[0]), IntegerEntry(kd, al), IntegerEntry(kf, (valueOrElse(getInteger(kf), 0) + ke[1]))], al)
19141914 }
19151915
19161916
19171917 func kh (d) = {
19181918 let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
19191919 let ki = bD(d)
19201920 let kj = getString(ki)
19211921 if (!(isDefined(kj)))
19221922 then throw("You are not eligible for ONBOARD artifact")
19231923 else {
19241924 let kk = bF(d)
19251925 let kl = getString(kk)
19261926 if (isDefined(kl))
19271927 then throw(("You already used your ONBOARD artifact on duck " + value(kl)))
19281928 else {
19291929 let km = bE(B)
19301930 let kn = getString(km)
19311931 if (isDefined(kn))
19321932 then throw(((("The duck " + B) + " already got points from ONBOARD artifact from user ") + value(kn)))
19331933 else ([StringEntry(kk, B), StringEntry(km, d)] ++ ka(B, ad)._1)
19341934 }
19351935 }
19361936 }
19371937
19381938
19391939 func ko (d,jp) = {
19401940 let gb = jn(d, eC, jp)
19411941 let Q = gb._2
19421942 let jj = dI(gb._3[dj])
19431943 let kp = bt(aF, Q)
19441944 if ((valueOrElse(getInteger(kp), 0) > 0))
19451945 then throw("Presale artifact is already activated")
19461946 else if ((parseIntValue(gb._3[di]) > ep))
19471947 then throw((((aD + " ") + Q) + " is not eligible for presale artifact"))
19481948 else {
19491949 let jU = jK(d, Q, jj, eC)
19501950 (((jU._1 :+ IntegerEntry(kp, jj)) :+ StringEntry(jU._2, makeString(jU._3, ":"))) :+ StringEntry(jU._4, makeString(jU._5, ":")))
19511951 }
19521952 }
19531953
19541954
19551955 func kq (B) = {
19561956 let cf = valueOrElse(getInteger(dg, bQ), 0)
19571957 let jr = split(valueOrElse(getString(bK(B)), aK), "_")
19581958 let ay = lastBlock.timestamp
19591959 let ch = bZ(dg, cf)
19601960 let cb = ch[bV]
19611961 let cc = ch[bW]
19621962 if ((jr[bn] != "T"))
19631963 then false
19641964 else if (if (if ((parseIntValue(jr[bm]) == cf))
19651965 then (cc[bY] == "INPROGRESS")
19661966 else false)
19671967 then (parseIntValue(cb[bX]) > ay)
19681968 else false)
19691969 then throw("Your duck is taking part in the tournament")
19701970 else dE(invoke(this, "exitTournamentInternal", [B], nil))
19711971 }
19721972
19731973
19741974 func kr (B) = if (!(cw))
19751975 then false
19761976 else {
19771977 let jr = split(valueOrElse(getString(bK(B)), aK), "_")
19781978 let ay = lastBlock.timestamp
19791979 if ((jr[bn] != "D"))
19801980 then false
19811981 else {
19821982 let cj = parseIntValue(jr[bm])
19831983 let ck = parseIntValue(jr[bo])
19841984 if (if ((ay > (cj + aO)))
19851985 then (3 > ck)
19861986 else false)
19871987 then throw("Your duck is on delivery mission")
19881988 else dE(invoke(this, "exitDeliveryInternal", [B], nil))
19891989 }
19901990 }
19911991
19921992
1993-func ks (B,kt,iW,ku) = {
1993+func ks (B,kt,iW,ku,kv,kw) = {
19941994 let jr = split(valueOrElse(getString(bK(B)), aK), "_")
19951995 let ay = lastBlock.timestamp
19961996 let cj = parseIntValue(jr[bm])
19971997 let ck = parseIntValue(jr[bo])
19981998 let jw = valueOrErrorMessage(getString(bH(B)), "NFT duck is orphaned")
1999- let kv = A(B)
2000- let kw = getIntegerValue(kv)
2001- let kx = if ((ck >= 3))
1999+ let kx = A(B)
2000+ let ky = getIntegerValue(kx)
2001+ let kz = if (if ((ck >= 3))
2002+ then true
2003+ else if (kv)
2004+ then (kw >= 3)
2005+ else false)
20022006 then {
2003- let ky = invoke(dd, "sendDeliveryReward", [jw], nil)
2004- if ((ky == ky))
2007+ let kA = invoke(dd, "sendDeliveryReward", [jw], nil)
2008+ if ((kA == kA))
20052009 then nil
20062010 else throw("Strict value is not equal to itself.")
20072011 }
20082012 else if (if (if (kt)
20092013 then (iW > 0)
20102014 else false)
20112015 then (ay > (cj + aO))
20122016 else false)
20132017 then throw("Your duck is still on delivery mission")
20142018 else {
2015- let kz = valueOrElse(getInteger(dd, bP), 0)
2016- let kA = invoke(dd, "updateDeliveryLocked", [(kz - aN)], nil)
2017- if ((kA == kA))
2018- then if ((0 >= kw))
2019+ let kB = valueOrElse(getInteger(dd, bP), 0)
2020+ let kC = invoke(dd, "updateDeliveryLocked", [(kB - aN)], nil)
2021+ if ((kC == kC))
2022+ then if ((0 >= ky))
20192023 then nil
20202024 else [IntegerEntry(U(B), (cj + b))]
20212025 else throw("Strict value is not equal to itself.")
20222026 }
2023- let kB = getIntegerValue(K(B))
2024- let kC = getStringValue(L(B))
2025- $Tuple4(kx, [IntegerEntry(kv, kB), StringEntry(bK(B), kC), StringEntry("autoexitReason", ku)], kC, kB)
2026- }
2027-
2028-
2029-func kD (kE,am,kF,d,kG,kH) = {
2027+ let kD = getIntegerValue(K(B))
2028+ let kE = getStringValue(L(B))
2029+ $Tuple4(kz, [IntegerEntry(kx, kD), StringEntry(bK(B), kE), StringEntry("autoexitReason", ku)], kE, kD)
2030+ }
2031+
2032+
2033+func kF (kG,am,kH,d,kI,kJ) = {
20302034 let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
20312035 if (kq(B))
20322036 then throw("mergeInternal_checkTournament")
20332037 else if (kr(B))
20342038 then throw("mergeInternal_checkDelivery")
20352039 else {
2036- func kI (eS,Q) = {
2040+ func kK (eS,Q) = {
20372041 let jt = value(assetInfo(fromBase58String(Q)))
20382042 let ju = bs(Q)
20392043 let jv = valueOrErrorMessage(getInteger(ju), (("NFT " + jt.name) + " is not staked"))
20402044 let jw = valueOrErrorMessage(getString(bp(Q)), (("NFT " + jt.name) + " is orphaned"))
20412045 if ((jw != d))
20422046 then throw((aD + " is not yours"))
20432047 else {
20442048 let jx = split(jt.description, "_")
20452049 let du = jx[dl]
20462050 if (if ((eS._3 != ""))
20472051 then (eS._3 != du)
20482052 else false)
20492053 then throw("Lands should be on the same continent to merge")
20502054 else {
20512055 let dJ = jx[dj]
2052- let kJ = eS._1
2053- let gL = valueOrErrorMessage(indexOf(kJ, dJ), "You haven't passed all the lands needed")
2054- let kK = (take(kJ, gL) + drop(kJ, (gL + 1)))
2056+ let kL = eS._1
2057+ let gL = valueOrErrorMessage(indexOf(kL, dJ), "You haven't passed all the lands needed")
2058+ let kM = (take(kL, gL) + drop(kL, (gL + 1)))
20552059 let jj = dI(dJ)
2056- let kL = (eS._2 + valueOrElse(getInteger(bt(aF, Q)), 0))
2060+ let kN = (eS._2 + valueOrElse(getInteger(bt(aF, Q)), 0))
20572061 let ib = valueOrElse(getInteger(bz(Q)), 0)
2058- let kM = {
2062+ let kO = {
20592063 let cz = dJ
20602064 if (("S" == cz))
20612065 then 3
20622066 else if (("M" == cz))
20632067 then 4
20642068 else if (("L" == cz))
20652069 then 5
20662070 else if (("XL" == cz))
20672071 then 6
20682072 else throw("Only S, M, L, XL can merge")
20692073 }
2070- if ((ib != kM))
2074+ if ((ib != kO))
20712075 then throw("All lands should be maxed to merge")
20722076 else {
20732077 let eu = jx[di]
20742078 let gH = gN(jx[dk])
20752079 let gR = (lastBlock.timestamp - jv)
20762080 if ((0 > gR))
20772081 then throw(((("Saved timestamp is in future, saved = " + toString(jv)) + ", current = ") + toString(lastBlock.timestamp)))
20782082 else {
20792083 let jz = ji(Q, jj)
20802084 let ia = (jj / cG)
20812085 let jH = gP(split(eS._4, "_"), gH, gR, ia, jz)
20822086 let fc = gF(eS._6, gH, ia, -1)
2083- let kN = gF(eS._10, gH, ia, -1)
2087+ let kP = gF(eS._10, gH, ia, -1)
20842088 let hv = gF(eS._9, gH, ia, 1)
2085- let kO = eS._7
2086- let db = indexOf(kO, Q)
2089+ let kQ = eS._7
2090+ let db = indexOf(kQ, Q)
20872091 if (!(isDefined(db)))
20882092 then throw(("Your staked lands don't contain " + Q))
20892093 else {
2090- let kP = br(Q)
2091- let kQ = valueOrElse(getString(kP), "")
2092- $Tuple10(kK, kL, du, jH, ((((((((((((eS._5 :+ DeleteEntry(bs(Q))) :+ DeleteEntry(bv(aD, Q, d))) :+ DeleteEntry(et(eu))) :+ DeleteEntry(bp(Q))) :+ DeleteEntry(bz(Q))) :+ DeleteEntry(ev(Q, d))) :+ DeleteEntry(bt(aF, Q))) :+ DeleteEntry(ew(eu))) :+ DeleteEntry(by(Q))) :+ DeleteEntry(kP)) :+ Burn(fromBase58String(Q), 1)) ++ (if ((kQ != ""))
2093- then [DeleteEntry(er(kQ))]
2094- else nil)), fc, removeByIndex(kO, value(db)), (eS._8 + jj), hv, kN)
2094+ let kR = br(Q)
2095+ let kS = valueOrElse(getString(kR), "")
2096+ $Tuple10(kM, kN, du, jH, ((((((((((((eS._5 :+ DeleteEntry(bs(Q))) :+ DeleteEntry(bv(aD, Q, d))) :+ DeleteEntry(et(eu))) :+ DeleteEntry(bp(Q))) :+ DeleteEntry(bz(Q))) :+ DeleteEntry(ev(Q, d))) :+ DeleteEntry(bt(aF, Q))) :+ DeleteEntry(ew(eu))) :+ DeleteEntry(by(Q))) :+ DeleteEntry(kR)) :+ Burn(fromBase58String(Q), 1)) ++ (if ((kS != ""))
2097+ then [DeleteEntry(er(kS))]
2098+ else nil)), fc, removeByIndex(kQ, value(db)), (eS._8 + jj), hv, kP)
20952099 }
20962100 }
20972101 }
20982102 }
20992103 }
21002104 }
21012105
21022106 let hM = bJ(B)
21032107 let ip = hL(hM)
21042108 let gG = split(valueOrElse(getString(ds()), "0_0_0_0_0_0"), "_")
2105- let kR = dv(d)
2106- let kS = getString(kR)
2107- let kT = if (isDefined(kS))
2108- then split_51C(value(kS), "_")
2109+ let kT = dv(d)
2110+ let kU = getString(kT)
2111+ let kV = if (isDefined(kU))
2112+ then split_51C(value(kU), "_")
21092113 else nil
2110- let kU = split(value(assetInfo(fromBase58String(kG[0]))).description, "_")[dl]
2111- let kV = split(valueOrElse(getString(dt(kU)), "0_0_0_0_0_0"), "_")
2114+ let kW = split(value(assetInfo(fromBase58String(kI[0]))).description, "_")[dl]
2115+ let kX = split(valueOrElse(getString(dt(kW)), "0_0_0_0_0_0"), "_")
21122116 let fd = {
2113- let eU = kG
2117+ let eU = kI
21142118 let eV = size(eU)
2115- let eW = $Tuple10(kF, 0, "", ip[bj], nil, gG, kT, 0, split("0_0_0_0_0_0", "_"), kV)
2119+ let eW = $Tuple10(kH, 0, "", ip[bj], nil, gG, kV, 0, split("0_0_0_0_0_0", "_"), kX)
21162120 func eX (eY,eZ) = if ((eZ >= eV))
21172121 then eY
2118- else kI(eY, eU[eZ])
2122+ else kK(eY, eU[eZ])
21192123
21202124 func fa (eY,eZ) = if ((eZ >= eV))
21212125 then eY
21222126 else throw("List size exceeds 5")
21232127
21242128 fa(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5)
21252129 }
21262130 let du = fd._3
21272131 let hp = valueOrErrorMessage(indexOf(aQ, du), ("Unknown continent: " + du))
2128- let gO = hu(fd._9, (dI(kE) / cG))
2132+ let gO = hu(fd._9, (dI(kG) / cG))
21292133 let iN = valueOrElse(getInteger(eq()), (ep + 1))
2130- let kW = toString(iN)
2131- let iO = Issue(eH(kW, kE), makeString([kW, kE, gO, du], "_"), 1, 0, false)
2134+ let kY = toString(iN)
2135+ let iO = Issue(eH(kY, kG), makeString([kY, kG, gO, du], "_"), 1, 0, false)
21322136 let bq = calculateAssetId(iO)
2133- let kX = toBase58String(bq)
2134- let jT = makeString(fe((kH > 0), split(ip[bk], "_"), kH), "_")
2135- let kY = dw(d)
2136- let kZ = valueOrElse(getInteger(kY), 0)
2137+ let kZ = toBase58String(bq)
2138+ let jT = makeString(fe((kJ > 0), split(ip[bk], "_"), kJ), "_")
2139+ let la = dw(d)
2140+ let lb = valueOrElse(getInteger(la), 0)
21372141 $Tuple2((((((((((((((((fd._5 :+ (if ((size(fd._7) > 0))
2138- then StringEntry(kR, makeString_11C(fd._7, "_"))
2139- else DeleteEntry(kR))) :+ IntegerEntry(kY, if ((fd._8 > kZ))
2142+ then StringEntry(kT, makeString_11C(fd._7, "_"))
2143+ else DeleteEntry(kT))) :+ IntegerEntry(la, if ((fd._8 > lb))
21402144 then 0
2141- else (kZ - fd._8))) :+ IntegerEntry(eq(), (iN + 1))) :+ iO) :+ StringEntry(et(kW), kX)) :+ StringEntry(bp(kX), d)) :+ StringEntry(ew(kW), d)) :+ IntegerEntry(bt(aF, kX), fd._2)) :+ IntegerEntry(bz(kX), am)) :+ IntegerEntry(ev(kX, d), am)) :+ StringEntry(hM, makeString([ip[bi], fd._4, jT, ip[bl]], ":"))) :+ StringEntry(ds(), makeString(fd._6, "_"))) :+ StringEntry(dt(du), makeString(fd._10, "_"))) :+ StringEntry(bK(B), makeString([du, "L", kX], "_"))) :+ ScriptTransfer(addressFromStringValue(d), 1, bq)), kX)
2145+ else (lb - fd._8))) :+ IntegerEntry(eq(), (iN + 1))) :+ iO) :+ StringEntry(et(kY), kZ)) :+ StringEntry(bp(kZ), d)) :+ StringEntry(ew(kY), d)) :+ IntegerEntry(bt(aF, kZ), fd._2)) :+ IntegerEntry(bz(kZ), am)) :+ IntegerEntry(ev(kZ, d), am)) :+ StringEntry(hM, makeString([ip[bi], fd._4, jT, ip[bl]], ":"))) :+ StringEntry(ds(), makeString(fd._6, "_"))) :+ StringEntry(dt(du), makeString(fd._10, "_"))) :+ StringEntry(bK(B), makeString([du, "L", kZ], "_"))) :+ ScriptTransfer(addressFromStringValue(d), 1, bq)), kZ)
21422146 }
21432147 }
21442148
21452149
2146-func la (d,kG) = kD("M", 3, "SSSS", d, kG, 0)
2147-
2148-
2149-func lb (d,kG) = kD("L", 4, "SMM", d, kG, (cB * 4))
2150-
2151-
2152-func lc (d,kG) = kD("XL", 5, "SSSML", d, kG, (cB * 47))
2153-
2154-
2155-func ld (d,kG) = kD("XXL", 6, "LXL", d, kG, (cB * 54))
2156-
2157-
2158-func le (d,kG) = {
2159- let cz = size(kG)
2150+func lc (d,kI) = kF("M", 3, "SSSS", d, kI, 0)
2151+
2152+
2153+func ld (d,kI) = kF("L", 4, "SMM", d, kI, (cB * 4))
2154+
2155+
2156+func le (d,kI) = kF("XL", 5, "SSSML", d, kI, (cB * 47))
2157+
2158+
2159+func lf (d,kI) = kF("XXL", 6, "LXL", d, kI, (cB * 54))
2160+
2161+
2162+func lg (d,kI) = {
2163+ let cz = size(kI)
21602164 if ((4 == cz))
2161- then la(d, kG)
2165+ then lc(d, kI)
21622166 else if ((3 == cz))
2163- then lb(d, kG)
2167+ then ld(d, kI)
21642168 else if ((5 == cz))
2165- then lc(d, kG)
2169+ then le(d, kI)
21662170 else if ((2 == cz))
2167- then ld(d, kG)
2171+ then lf(d, kI)
21682172 else throw("Unknown merge")
21692173 }
21702174
21712175
2172-func lf (bM) = {
2173- let lg = getString(bI(bM))
2176+func lh (bM) = {
2177+ let li = getString(bI(bM))
21742178 if (if (cw)
2175- then isDefined(lg)
2179+ then isDefined(li)
21762180 else false)
21772181 then {
2178- let B = value(lg)
2179- let lh = bK(B)
2180- let cg = split(valueOrElse(getString(lh), aK), "_")
2182+ let B = value(li)
2183+ let lj = bK(B)
2184+ let cg = split(valueOrElse(getString(lj), aK), "_")
21812185 let cj = parseIntValue(cg[bm])
21822186 if (if ((cg[bn] != "D"))
21832187 then true
21842188 else (lastBlock.timestamp > (cj + aO)))
21852189 then nil
21862190 else {
2187- let kv = A(B)
2191+ let kx = A(B)
21882192 if ((parseIntValue(cg[bo]) >= 3))
21892193 then {
2190- let ky = invoke(dd, "sendDeliveryReward", [bM], nil)
2191- if ((ky == ky))
2194+ let kA = invoke(dd, "sendDeliveryReward", [bM], nil)
2195+ if ((kA == kA))
21922196 then nil
21932197 else throw("Strict value is not equal to itself.")
21942198 }
21952199 else (({
2196- let kz = valueOrElse(getInteger(dd, bP), 0)
2197- let kA = invoke(dd, "updateDeliveryLocked", [(kz - aN)], nil)
2198- if ((kA == kA))
2199- then if ((0 >= getIntegerValue(kv)))
2200+ let kB = valueOrElse(getInteger(dd, bP), 0)
2201+ let kC = invoke(dd, "updateDeliveryLocked", [(kB - aN)], nil)
2202+ if ((kC == kC))
2203+ then if ((0 >= getIntegerValue(kx)))
22002204 then nil
22012205 else {
2202- let li = invoke(this, "saveInteger", [U(B), (cj + b)], nil)
2203- if ((li == li))
2206+ let lk = invoke(this, "saveInteger", [U(B), (cj + b)], nil)
2207+ if ((lk == lk))
22042208 then nil
22052209 else throw("Strict value is not equal to itself.")
22062210 }
22072211 else throw("Strict value is not equal to itself.")
2208- } :+ IntegerEntry(kv, getIntegerValue(K(B)))) :+ StringEntry(lh, getStringValue(L(B))))
2212+ } :+ IntegerEntry(kx, getIntegerValue(K(B)))) :+ StringEntry(lj, getStringValue(L(B))))
22092213 }
22102214 }
22112215 else nil
22122216 }
22132217
22142218
2215-func lj (gL) = if (if ((gL.originCaller != dc))
2219+func ll (gL) = if (if ((gL.originCaller != dc))
22162220 then valueOrElse(getBoolean(dL()), false)
22172221 else false)
22182222 then throw("Contracts are under maintenance")
22192223 else {
22202224 let bM = toString(gL.originCaller)
2221- (lf(bM) :+ StringEntry(dM(bM), toBase58String(gL.transactionId)))
2225+ (lh(bM) :+ StringEntry(dM(bM), toBase58String(gL.transactionId)))
22222226 }
22232227
22242228
2225-func lk (gL) = if (if ((gL.originCaller != dc))
2229+func lm (gL) = if (if ((gL.originCaller != dc))
22262230 then valueOrElse(getBoolean(dL()), false)
22272231 else false)
22282232 then throw("Contracts are under maintenance")
22292233 else [StringEntry(dM(toString(gL.originCaller)), toBase58String(gL.transactionId))]
22302234
22312235
22322236 @Callable(gL)
2233-func constructorV1 (ll) = if ((gL.caller != this))
2237+func constructorV1 (ln) = if ((gL.caller != this))
22342238 then throw("Permission denied")
2235- else [StringEntry(cW(), ll)]
2239+ else [StringEntry(cW(), ln)]
22362240
22372241
22382242
22392243 @Callable(gL)
22402244 func saveInteger (cO,eJ) = if ((gL.caller != this))
22412245 then throw("saveInteger is not public method")
22422246 else [IntegerEntry(cO, eJ)]
22432247
22442248
22452249
22462250 @Callable(gL)
2247-func setBlocked (lm) = if ((gL.caller != this))
2251+func setBlocked (lo) = if ((gL.caller != this))
22482252 then throw("permission denied")
2249- else [BooleanEntry(dL(), lm)]
2253+ else [BooleanEntry(dL(), lo)]
22502254
22512255
22522256
22532257 @Callable(gL)
22542258 func stakeLand () = {
2255- let ln = lj(gL)
2259+ let lp = ll(gL)
22562260 if ((size(gL.payments) != 1))
22572261 then throw("Exactly one payment required")
22582262 else {
2259- let lo = value(gL.payments[0])
2260- let bq = value(lo.assetId)
2263+ let lq = value(gL.payments[0])
2264+ let bq = value(lq.assetId)
22612265 let cN = toString(gL.caller)
2262- if ((lo.amount != 1))
2266+ if ((lq.amount != 1))
22632267 then throw((("NFT " + aD) + " token should be attached as payment"))
22642268 else {
22652269 let jt = value(assetInfo(bq))
22662270 if ((jt.issuer != this))
22672271 then throw("Unknown issuer of token")
22682272 else if (!(contains(jt.name, aD)))
22692273 then throw((("Only NFT " + aD) + " tokens are accepted"))
22702274 else {
2271- let lp = drop(jt.name, 4)
2272- let eu = if (contains(lp, "XXL"))
2273- then dropRight(lp, 3)
2274- else if (contains(lp, "XL"))
2275- then dropRight(lp, 2)
2276- else dropRight(lp, 1)
2275+ let lr = drop(jt.name, 4)
2276+ let eu = if (contains(lr, "XXL"))
2277+ then dropRight(lr, 3)
2278+ else if (contains(lr, "XL"))
2279+ then dropRight(lr, 2)
2280+ else dropRight(lr, 1)
22772281 if (!(isDefined(parseInt(eu))))
22782282 then throw(("Cannot parse land number from " + jt.name))
22792283 else {
22802284 let Q = toBase58String(bq)
22812285 let ju = bs(Q)
22822286 if (isDefined(getInteger(ju)))
22832287 then throw((("NFT " + jt.name) + " is already staked"))
22842288 else {
22852289 let jx = split(jt.description, "_")
22862290 let gH = gN(jx[dk])
22872291 let jj = dI(jx[dj])
22882292 let ia = (jj / cG)
22892293 let fc = gM(gH, ia, 1)
2290- let lq = dt(jx[dl])
2291- let kV = split(valueOrElse(getString(lq), "0_0_0_0_0_0"), "_")
2292- let lr = makeString(gF(kV, gH, ia, 1), "_")
2293- let kR = dv(cN)
2294- let kS = getString(kR)
2295- let kO = if (isDefined(kS))
2296- then split_51C(value(kS), "_")
2294+ let ls = dt(jx[dl])
2295+ let kX = split(valueOrElse(getString(ls), "0_0_0_0_0_0"), "_")
2296+ let lt = makeString(gF(kX, gH, ia, 1), "_")
2297+ let kT = dv(cN)
2298+ let kU = getString(kT)
2299+ let kQ = if (isDefined(kU))
2300+ then split_51C(value(kU), "_")
22972301 else nil
2298- if (containsElement(kO, Q))
2302+ if (containsElement(kQ, Q))
22992303 then throw(("Your staked lands already contain " + Q))
2300- else if ((size(kO) >= aH))
2304+ else if ((size(kQ) >= aH))
23012305 then throw((("Your already staked max (" + toString(aH)) + ") lands"))
23022306 else {
23032307 let ib = valueOrElse(getInteger(bz(Q)), 0)
2304- let kY = dw(cN)
2305- let ls = valueOrElse(getInteger(kY), 0)
2306- let lt = invoke(df, "onStakeUnstakeLand", [cN], nil)
2307- $Tuple2(([IntegerEntry(ju, lastBlock.timestamp), IntegerEntry(bv(aD, Q, cN), lastBlock.timestamp), StringEntry(kR, makeString_11C((kO :+ Q), "_")), IntegerEntry(kY, (ls + jj)), StringEntry(bp(Q), cN), StringEntry(ew(eu), cN), IntegerEntry(ev(Q, cN), ib), StringEntry(ds(), fc), StringEntry(lq, lr)] ++ ln), lt)
2308+ let la = dw(cN)
2309+ let lu = valueOrElse(getInteger(la), 0)
2310+ let lv = invoke(df, "onStakeUnstakeLand", [cN], nil)
2311+ $Tuple2(([IntegerEntry(ju, lastBlock.timestamp), IntegerEntry(bv(aD, Q, cN), lastBlock.timestamp), StringEntry(kT, makeString_11C((kQ :+ Q), "_")), IntegerEntry(la, (lu + jj)), StringEntry(bp(Q), cN), StringEntry(ew(eu), cN), IntegerEntry(ev(Q, cN), ib), StringEntry(ds(), fc), StringEntry(ls, lt)] ++ lp), lv)
23082312 }
23092313 }
23102314 }
23112315 }
23122316 }
23132317 }
23142318 }
23152319
23162320
23172321
23182322 @Callable(gL)
23192323 func unstakeLand (jp) = {
2320- let ln = lj(gL)
2324+ let lp = ll(gL)
23212325 if ((size(gL.payments) != 0))
23222326 then throw("No payments required")
23232327 else {
23242328 let d = toString(gL.caller)
23252329 let gb = jn(d, eB, jp)
23262330 let Q = gb._2
23272331 let jx = gb._3
2328- let kR = dv(d)
2332+ let kT = dv(d)
23292333 let gH = gN(jx[dk])
23302334 let jj = dI(jx[dj])
23312335 let ia = (jj / cG)
23322336 let fc = gM(gH, ia, -1)
2333- let lq = dt(jx[dl])
2334- let kV = split(valueOrElse(getString(lq), "0_0_0_0_0_0"), "_")
2335- let lr = makeString(gF(kV, gH, ia, -1), "_")
2337+ let ls = dt(jx[dl])
2338+ let kX = split(valueOrElse(getString(ls), "0_0_0_0_0_0"), "_")
2339+ let lt = makeString(gF(kX, gH, ia, -1), "_")
23362340 let jU = jK(d, Q, jj, eB)
2337- let kO = split_51C(valueOrElse(getString(kR), ""), "_")
2338- let db = indexOf(kO, Q)
2341+ let kQ = split_51C(valueOrElse(getString(kT), ""), "_")
2342+ let db = indexOf(kQ, Q)
23392343 if (!(isDefined(db)))
23402344 then throw(("Your staked lands don't contain " + Q))
23412345 else {
23422346 let ay = lastBlock.timestamp
2343- let lu = valueOrElse(getInteger(de, bL(d)), 0)
2344- if ((lu >= ay))
2345- then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lu)))
2347+ let lw = valueOrElse(getInteger(de, bL(d)), 0)
2348+ if ((lw >= ay))
2349+ then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lw)))
23462350 else {
2347- let lv = (valueOrElse(getInteger(df, c(d)), 0) + cC)
2348- if ((lv > ay))
2349- then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lv)))
2351+ let lx = (valueOrElse(getInteger(df, c(d)), 0) + cC)
2352+ if ((lx > ay))
2353+ then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lx)))
23502354 else {
2351- let kY = dw(d)
2352- let kZ = valueOrElse(getInteger(kY), 0)
2353- let lw = if ((jj > kZ))
2355+ let la = dw(d)
2356+ let lb = valueOrElse(getInteger(la), 0)
2357+ let ly = if ((jj > lb))
23542358 then 0
2355- else (kZ - jj)
2356- let lt = invoke(df, "onStakeUnstakeLand", [d], nil)
2357- $Tuple2(([ScriptTransfer(gL.caller, 1, fromBase58String(Q)), DeleteEntry(bs(Q)), DeleteEntry(bv(aD, Q, d)), StringEntry(ds(), fc), StringEntry(lq, lr), StringEntry(jU._2, makeString(jU._3, ":")), if ((size(kO) > 1))
2358- then StringEntry(kR, makeString_11C(removeByIndex(kO, value(db)), "_"))
2359- else DeleteEntry(kR), IntegerEntry(kY, lw)] ++ ln), lt)
2359+ else (lb - jj)
2360+ let lv = invoke(df, "onStakeUnstakeLand", [d], nil)
2361+ $Tuple2(([ScriptTransfer(gL.caller, 1, fromBase58String(Q)), DeleteEntry(bs(Q)), DeleteEntry(bv(aD, Q, d)), StringEntry(ds(), fc), StringEntry(ls, lt), StringEntry(jU._2, makeString(jU._3, ":")), if ((size(kQ) > 1))
2362+ then StringEntry(kT, makeString_11C(removeByIndex(kQ, value(db)), "_"))
2363+ else DeleteEntry(kT), IntegerEntry(la, ly)] ++ lp), lv)
23602364 }
23612365 }
23622366 }
23632367 }
23642368 }
23652369
23662370
23672371
23682372 @Callable(gL)
23692373 func stakeDuck () = {
2370- let ln = lj(gL)
2374+ let lp = ll(gL)
23712375 if ((size(gL.payments) != 1))
23722376 then throw("Exactly one payment required")
23732377 else {
2374- let lo = value(gL.payments[0])
2375- let bq = value(lo.assetId)
2378+ let lq = value(gL.payments[0])
2379+ let bq = value(lq.assetId)
23762380 let cN = toString(gL.caller)
2377- if ((lo.amount != 1))
2381+ if ((lq.amount != 1))
23782382 then throw((("NFT " + aE) + " token should be attached as payment"))
23792383 else {
23802384 let jt = value(assetInfo(bq))
23812385 if (if ((jt.issuer != dY))
23822386 then (jt.issuer != dZ)
23832387 else false)
23842388 then throw((("Unknown issuer of " + aE) + " token"))
23852389 else if (!(contains(jt.name, aE)))
23862390 then throw((("Only NFT " + aE) + " tokens are accepted"))
23872391 else {
2388- let lx = toBase58String(bq)
2389- let ju = bs(lx)
2392+ let lz = toBase58String(bq)
2393+ let ju = bs(lz)
23902394 if (isDefined(getInteger(ju)))
23912395 then throw((("NFT " + jt.name) + " is already staked"))
23922396 else if (isDefined(getString(bI(cN))))
23932397 then throw(("You already staked one duck: " + jt.name))
23942398 else {
2395- let lh = bK(lx)
2396- let ce = getString(lh)
2397- let hM = bJ(lx)
2398- let ly = getString(hM)
2399- let jc = A(lx)
2400- let jd = ah(valueOrElse(getInteger(E(lx)), 0))
2401- let kw = valueOrElse(getInteger(jc), jd)
2402- ([IntegerEntry(ju, lastBlock.timestamp), IntegerEntry(bv(aE, toBase58String(bq), cN), lastBlock.timestamp), StringEntry(bH(lx), cN), StringEntry(bI(cN), lx)] ++ (if (isDefined(ce))
2399+ let lj = bK(lz)
2400+ let ce = getString(lj)
2401+ let hM = bJ(lz)
2402+ let lA = getString(hM)
2403+ let jc = A(lz)
2404+ let jd = ah(valueOrElse(getInteger(E(lz)), 0))
2405+ let ky = valueOrElse(getInteger(jc), jd)
2406+ ([IntegerEntry(ju, lastBlock.timestamp), IntegerEntry(bv(aE, toBase58String(bq), cN), lastBlock.timestamp), StringEntry(bH(lz), cN), StringEntry(bI(cN), lz)] ++ (if (isDefined(ce))
24032407 then nil
2404- else ([StringEntry(lh, aK)] ++ (if (isDefined(ly))
2408+ else ([StringEntry(lj, aK)] ++ (if (isDefined(lA))
24052409 then nil
2406- else (([StringEntry(hM, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jc, kw)) ++ ln)))))
2410+ else (([StringEntry(hM, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(jc, ky)) ++ lp)))))
24072411 }
24082412 }
24092413 }
24102414 }
24112415 }
24122416
24132417
24142418
24152419 @Callable(gL)
2416-func unstakeDuck (lx) = {
2417- let ln = lj(gL)
2420+func unstakeDuck (lz) = {
2421+ let lp = ll(gL)
24182422 if ((size(gL.payments) != 0))
24192423 then throw("No payments required")
24202424 else {
2421- let bq = fromBase58String(lx)
2425+ let bq = fromBase58String(lz)
24222426 let cN = toString(gL.caller)
24232427 let jt = value(assetInfo(bq))
2424- let ju = bs(lx)
2428+ let ju = bs(lz)
24252429 if (!(isDefined(getInteger(ju))))
24262430 then throw((("NFT " + jt.name) + " is not staked"))
24272431 else if (!(isDefined(getString(bI(cN)))))
24282432 then throw((("The duck " + jt.name) + " is not staked"))
24292433 else {
2430- let jw = valueOrErrorMessage(getString(bH(lx)), (("NFT " + jt.name) + " is orphaned"))
2434+ let jw = valueOrErrorMessage(getString(bH(lz)), (("NFT " + jt.name) + " is orphaned"))
24312435 if ((jw != cN))
24322436 then throw("Staked NFT is not yours")
2433- else if (kq(lx))
2437+ else if (kq(lz))
24342438 then throw("unstakeDuck_checkTournament")
2435- else if (kr(lx))
2439+ else if (kr(lz))
24362440 then throw("unstakeDuck_checkDelivery")
24372441 else {
2438- let jc = A(lx)
2439- let jd = ah(valueOrElse(getInteger(E(lx)), 0))
2442+ let jc = A(lz)
2443+ let jd = ah(valueOrElse(getInteger(E(lz)), 0))
24402444 let at = valueOrElse(getInteger(jc), jd)
24412445 if ((jd > at))
24422446 then throw((("Please heal your duck to " + toString(jd)) + "hp before unstaking"))
2443- else ([ScriptTransfer(gL.caller, 1, bq), DeleteEntry(ju), DeleteEntry(jc), DeleteEntry(bK(lx)), DeleteEntry(bH(lx)), DeleteEntry(bv(aE, lx, cN)), DeleteEntry(bI(cN))] ++ ln)
2447+ else ([ScriptTransfer(gL.caller, 1, bq), DeleteEntry(ju), DeleteEntry(jc), DeleteEntry(bK(lz)), DeleteEntry(bH(lz)), DeleteEntry(bv(aE, lz, cN)), DeleteEntry(bI(cN))] ++ lp)
24442448 }
24452449 }
24462450 }
24472451 }
24482452
24492453
24502454
24512455 @Callable(gL)
2452-func claimRes (eJ,lz) = {
2453- let ln = lj(gL)
2456+func claimRes (eJ,lB) = {
2457+ let lp = ll(gL)
24542458 if ((size(gL.payments) != 0))
24552459 then throw("No payments required")
24562460 else {
24572461 let d = toString(gL.originCaller)
2458- let fk = jy(d, eJ, eB, lz)
2462+ let fk = jy(d, eJ, eB, lB)
24592463 let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
2460- $Tuple2(((((fk._1 ++ ka(B, fraction(V, eJ, cF))._1) :+ StringEntry(fk._2, makeString(fk._3, ":"))) :+ StringEntry(fk._4, makeString(fk._5, ":"))) ++ ln), fk._3[bj])
2461- }
2462- }
2463-
2464-
2465-
2466-@Callable(gL)
2467-func claimResToWH (eJ,lz) = {
2468- let ln = lj(gL)
2464+ $Tuple2(((((fk._1 ++ ka(B, fraction(V, eJ, cF))._1) :+ StringEntry(fk._2, makeString(fk._3, ":"))) :+ StringEntry(fk._4, makeString(fk._5, ":"))) ++ lp), fk._3[bj])
2465+ }
2466+ }
2467+
2468+
2469+
2470+@Callable(gL)
2471+func claimResToWH (eJ,lB) = {
2472+ let lp = ll(gL)
24692473 if ((size(gL.payments) != 0))
24702474 then throw("No payments required")
24712475 else {
24722476 let d = toString(gL.originCaller)
2473- let fk = jy(d, eJ, eA, lz)
2474- $Tuple2(((((fk._1 ++ kg(d, fraction(V, eJ, cF))._1) :+ StringEntry(fk._2, makeString(fk._3, ":"))) :+ StringEntry(fk._4, makeString(fk._5, ":"))) ++ ln), fk._5[ba])
2477+ let fk = jy(d, eJ, eA, lB)
2478+ $Tuple2(((((fk._1 ++ kg(d, fraction(V, eJ, cF))._1) :+ StringEntry(fk._2, makeString(fk._3, ":"))) :+ StringEntry(fk._4, makeString(fk._5, ":"))) ++ lp), fk._5[ba])
24752479 }
24762480 }
24772481
24782482
24792483
24802484 @Callable(gL)
24812485 func flight (iR,iS) = {
2482- let ln = lk(gL)
2486+ let lp = lm(gL)
24832487 if ((size(gL.payments) != 0))
24842488 then throw("No payments required")
24852489 else {
24862490 let bM = toString(gL.caller)
24872491 let hq = iQ(bM, iR, iS)
24882492 let iW = hq._1
24892493 let B = hq._2
2490- let lh = bK(B)
2491- let jr = valueOrElse(getString(lh), aK)
2494+ let lj = bK(B)
2495+ let jr = valueOrElse(getString(lj), aK)
24922496 let iY = hq._4
24932497 if ((iY == jr))
24942498 then throw("You can't fly to the same location")
24952499 else {
24962500 let cs = split(iY, "_")
2497- let lA = (cs[bn] == "T")
2498- let lB = (cs[bn] == "D")
2501+ let lC = (cs[bn] == "T")
2502+ let lD = (cs[bn] == "D")
24992503 let gy = G(B)
2500- let lC = valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,")
2501- let lD = fl(lC, hq._5)
2502- let lE = lD._1
2503- let lF = lD._2
2504- let lG = if (!(cn(dg, jr)))
2504+ let lE = valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,")
2505+ let lF = fl(lE, hq._5)
2506+ let lG = lF._1
2507+ let lH = lF._2
2508+ let lI = if (!(cn(dg, jr)))
25052509 then if (!(cl(iY)))
25062510 then cq(jr, iY, 5)
25072511 else if ((iW > 0))
25082512 then $Tuple2(iY, iW)
25092513 else $Tuple2(jr, 0)
25102514 else if (cd(dg, jr))
25112515 then if (!(cd(dg, iY)))
25122516 then throw("Your duck is taking part in the tournament")
25132517 else {
2514- let lH = parseIntValue(cs[bo])
2515- let lI = split(jr, "_")
2518+ let kw = parseIntValue(cs[bo])
2519+ let lJ = split(jr, "_")
25162520 let cf = valueOrElse(getInteger(dg, bQ), 0)
2517- if ((lH != (parseIntValue(lI[bo]) + 1)))
2521+ if ((kw != (parseIntValue(lJ[bo]) + 1)))
25182522 then cq(jr, iY, 7)
25192523 else if ((iW > 0))
25202524 then {
2521- let lJ = valueOrElse(getInteger(dg, bU(cf, B)), 0)
2522- let lK = if ((lH > lJ))
2523- then invoke(dg, "saveDuckResult", [B, lH], nil)
2525+ let lK = valueOrElse(getInteger(dg, bU(cf, B)), 0)
2526+ let lL = if ((kw > lK))
2527+ then invoke(dg, "saveDuckResult", [B, kw], nil)
25242528 else unit
2525- if ((lK == lK))
2529+ if ((lL == lL))
25262530 then $Tuple2(iY, iW)
25272531 else throw("Strict value is not equal to itself.")
25282532 }
25292533 else $Tuple2(jr, 0)
25302534 }
25312535 else if (!(ci(jr)))
25322536 then {
2533- let lL = dF(invoke(this, "autoExitDelivery", [B, iW, if (lB)
2537+ let lM = dF(invoke(this, "autoExitDelivery", [B, iW, if (lD)
25342538 then "10"
2535- else "11"], nil))
2536- if ((lL == lL))
2537- then if (lB)
2538- then lL
2539+ else "11", 0], nil))
2540+ if ((lM == lM))
2541+ then if (lD)
2542+ then lM
25392543 else if ((iW > 0))
25402544 then $Tuple2(iY, iW)
2541- else $Tuple2(lL._1, 0)
2545+ else $Tuple2(lM._1, 0)
25422546 else throw("Strict value is not equal to itself.")
25432547 }
2544- else if (!(lB))
2548+ else if (!(lD))
25452549 then throw("Your duck is taking part in delivery")
25462550 else if (!(ci(iY)))
25472551 then cq(jr, iY, 13)
25482552 else {
2549- let lH = parseIntValue(cs[bo])
2550- let lI = split(jr, "_")
2551- if ((lH != (parseIntValue(lI[bo]) + 1)))
2553+ let kw = parseIntValue(cs[bo])
2554+ let lJ = split(jr, "_")
2555+ if ((kw != (parseIntValue(lJ[bo]) + 1)))
25522556 then cq(jr, iY, 14)
25532557 else if (if ((iW > 0))
2554- then (3 > lH)
2558+ then (3 > kw)
25552559 else false)
25562560 then $Tuple2(iY, iW)
25572561 else {
2558- let lL = dF(invoke(this, "autoExitDelivery", [B, iW, "16<"], nil))
2559- if ((lL == lL))
2560- then lL
2562+ let lM = dF(invoke(this, "autoExitDelivery", [B, iW, "15-17", kw], nil))
2563+ if ((lM == lM))
2564+ then lM
25612565 else throw("Strict value is not equal to itself.")
25622566 }
25632567 }
2564- let lM = lG._1
2565- let lN = lG._2
2566- $Tuple2(((([StringEntry(lh, lM), StringEntry(gy, lE), IntegerEntry(A(B), iW)] ++ ln) ++ (if (lF)
2568+ let lN = lI._1
2569+ let lO = lI._2
2570+ $Tuple2(((([StringEntry(lj, lN), StringEntry(gy, lG), IntegerEntry(A(B), iW)] ++ lp) ++ (if (lH)
25672571 then [StringEntry(M(B), "0_0_0_0_0")]
25682572 else nil)) ++ ka(B, if ((iW > 0))
25692573 then W
25702574 else X)._1), hq._3)
25712575 }
25722576 }
25732577 }
25742578
25752579
25762580
25772581 @Callable(gL)
2578-func heal (lO,lP,lQ) = {
2579- let ln = lj(gL)
2580- if (if (if ((0 > lO))
2581- then true
2582- else (0 > lP))
2582+func heal (lP,lQ,lR) = {
2583+ let lp = ll(gL)
2584+ if (if (if ((0 > lP))
25832585 then true
25842586 else (0 > lQ))
2587+ then true
2588+ else (0 > lR))
25852589 then throw("Quantity cannot be negative")
25862590 else {
25872591 let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked")
25882592 if (kq(B))
25892593 then throw("heal_checkTournament")
25902594 else if (kr(B))
25912595 then throw("heal_checkDelivery")
25922596 else {
2593- let lR = [lO, lP, lQ]
2597+ let lS = [lP, lQ, lR]
25942598 let jc = A(B)
25952599 let jd = ah(valueOrElse(getInteger(E(B)), 0))
2596- let lS = valueOrElse(getInteger(jc), jd)
2597- if ((lS >= jd))
2600+ let lT = valueOrElse(getInteger(jc), jd)
2601+ if ((lT >= jd))
25982602 then throw((("HP should be < " + toString(jd)) + " to heal"))
25992603 else {
26002604 let hM = bJ(B)
26012605 let ip = hL(hM)
2602- let lT = if ((ip[bl] == ""))
2606+ let lU = if ((ip[bl] == ""))
26032607 then nil
26042608 else split_4C(ip[bl], "_")
2605- func lU (eS,cp) = {
2609+ func lV (eS,cp) = {
26062610 let dB = eS._2
2607- let hh = if ((size(lT) > dB))
2608- then parseIntValue(lT[dB])
2611+ let hh = if ((size(lU) > dB))
2612+ then parseIntValue(lU[dB])
26092613 else 0
26102614 if ((3 > dB))
26112615 then {
2612- let lV = lR[dB]
2613- if ((lV > hh))
2616+ let lW = lS[dB]
2617+ if ((lW > hh))
26142618 then throw(((("You have only " + toString(hh)) + " of ") + aP[dB]))
2615- else $Tuple3((eS._1 :+ toString((hh - lV))), (dB + 1), (eS._3 + (parseIntValue(split(cp, "_")[aV]) * lV)))
2619+ else $Tuple3((eS._1 :+ toString((hh - lW))), (dB + 1), (eS._3 + (parseIntValue(split(cp, "_")[aV]) * lW)))
26162620 }
26172621 else $Tuple3((eS._1 :+ toString(hh)), (dB + 1), eS._3)
26182622 }
26192623
26202624 let fk = {
26212625 let eU = aT
26222626 let eV = size(eU)
26232627 let eW = $Tuple3(nil, 0, 0)
26242628 func eX (eY,eZ) = if ((eZ >= eV))
26252629 then eY
2626- else lU(eY, eU[eZ])
2630+ else lV(eY, eU[eZ])
26272631
26282632 func fa (eY,eZ) = if ((eZ >= eV))
26292633 then eY
26302634 else throw("List size exceeds 50")
26312635
26322636 fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 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)
26332637 }
2634- let lW = min([jd, (lS + fk._3)])
2635- $Tuple2((([IntegerEntry(jc, lW), StringEntry(hM, makeString_2C([ip[bi], ip[bj], ip[bk], makeString(fk._1, "_")], ":"))] ++ ln) ++ ka(B, (ae * ((lO + lP) + lQ)))._1), lW)
2638+ let lX = min([jd, (lT + fk._3)])
2639+ $Tuple2((([IntegerEntry(jc, lX), StringEntry(hM, makeString_2C([ip[bi], ip[bj], ip[bk], makeString(fk._1, "_")], ":"))] ++ lp) ++ ka(B, (ae * ((lP + lQ) + lR)))._1), lX)
26362640 }
26372641 }
26382642 }
26392643 }
26402644
26412645
26422646
26432647 @Callable(gL)
26442648 func healES () = {
2645- let ln = lj(gL)
2649+ let lp = ll(gL)
26462650 if ((size(gL.payments) != 1))
26472651 then throw("Exactly one payment required")
26482652 else {
2649- let lo = value(gL.payments[0])
2650- if ((lo.assetId != cy))
2653+ let lq = value(gL.payments[0])
2654+ if ((lq.assetId != cy))
26512655 then throw("Allowed USDT payment only!")
26522656 else {
26532657 let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked")
26542658 if (kq(B))
26552659 then throw("healES_checkTournament")
26562660 else if (kr(B))
26572661 then throw("healES_checkDelivery")
26582662 else {
26592663 let jc = A(B)
26602664 let jd = ah(valueOrElse(getInteger(E(B)), 0))
2661- let lS = valueOrElse(getInteger(jc), jd)
2662- if ((lS > 0))
2665+ let lT = valueOrElse(getInteger(jc), jd)
2666+ if ((lT > 0))
26632667 then throw("HP should be 0 to call Emergency Service")
26642668 else {
26652669 let hM = bJ(B)
26662670 let ip = hL(hM)
2667- let lT = if ((ip[bl] == ""))
2671+ let lU = if ((ip[bl] == ""))
26682672 then nil
26692673 else split_4C(ip[bl], "_")
2670- let lX = if ((size(lT) > 0))
2671- then parseIntValue(lT[0])
2674+ let lY = if ((size(lU) > 0))
2675+ then parseIntValue(lU[0])
26722676 else 0
2673- let lY = if ((size(lT) > 1))
2674- then parseIntValue(lT[1])
2677+ let lZ = if ((size(lU) > 1))
2678+ then parseIntValue(lU[1])
26752679 else 0
2676- let lZ = if ((size(lT) > 2))
2677- then parseIntValue(lT[2])
2680+ let ma = if ((size(lU) > 2))
2681+ then parseIntValue(lU[2])
26782682 else 0
2679- if (if (if ((lX > 0))
2680- then true
2681- else (lY > 0))
2683+ if (if (if ((lY > 0))
26822684 then true
26832685 else (lZ > 0))
2686+ then true
2687+ else (ma > 0))
26842688 then throw("You have to use own Medical Kit")
26852689 else {
2686- let ma = getString(dd, bN())
2687- let mb = if (isDefined(ma))
2688- then split_4C(value(ma), "_")
2690+ let mb = getString(dd, bN())
2691+ let mc = if (isDefined(mb))
2692+ then split_4C(value(mb), "_")
26892693 else nil
2690- let mc = if ((size(mb) > 0))
2691- then parseIntValue(mb[0])
2694+ let md = if ((size(mc) > 0))
2695+ then parseIntValue(mc[0])
26922696 else 0
2693- if ((0 >= mc))
2697+ if ((0 >= md))
26942698 then throw("There are no Medical Kits L1 at Emergency Service storage")
26952699 else {
2696- let lW = (lS + parseIntValue(split(aT[0], "_")[aV]))
2697- let md = makeString([toString((mc - 1)), removeByIndex(mb, 0)], "_")
2700+ let lX = (lT + parseIntValue(split(aT[0], "_")[aV]))
2701+ let me = makeString([toString((md - 1)), removeByIndex(mc, 0)], "_")
26982702 let cp = split(aT[0], "_")
2699- let me = co(cp)
2700- let mf = fraction((me * aM), aL, (cF * aY))
2701- if ((lo.amount != mf))
2702- then throw(("Payment attached should be " + toString(mf)))
2703+ let mf = co(cp)
2704+ let mg = fraction((mf * aM), aL, (cF * aY))
2705+ if ((lq.amount != mg))
2706+ then throw(("Payment attached should be " + toString(mg)))
27032707 else {
2704- let fk = dx(invoke(dd, "updateEsStorage", [md], [AttachedPayment(cy, mf)]))
2705- $Tuple2(((ln :+ IntegerEntry(jc, lW)) ++ ka(B, Y)._1), fk)
2708+ let fk = dx(invoke(dd, "updateEsStorage", [me], [AttachedPayment(cy, mg)]))
2709+ $Tuple2(((lp :+ IntegerEntry(jc, lX)) ++ ka(B, Y)._1), fk)
27062710 }
27072711 }
27082712 }
27092713 }
27102714 }
27112715 }
27122716 }
27132717 }
27142718
27152719
27162720
27172721 @Callable(gL)
2718-func updateBackpack (B,mg) = if ((gL.caller != dd))
2722+func updateBackpack (B,mh) = if ((gL.caller != dd))
27192723 then throw("permission denied")
2720- else $Tuple2([StringEntry(bJ(B), mg)], mg)
2724+ else $Tuple2([StringEntry(bJ(B), mh)], mh)
27212725
27222726
27232727
27242728 @Callable(gL)
27252729 func commitForRandom () = {
2726- let ln = lj(gL)
2727- let mh = (height + dq)
2730+ let lp = ll(gL)
2731+ let mi = (height + dq)
27282732 let d = toString(gL.caller)
2729- $Tuple2(([IntegerEntry(dr(d), mh)] ++ ln), mh)
2733+ $Tuple2(([IntegerEntry(dr(d), mi)] ++ lp), mi)
27302734 }
27312735
27322736
27332737
27342738 @Callable(gL)
27352739 func buySLand () = {
2736- let ln = lj(gL)
2740+ let lp = ll(gL)
27372741 if ((size(gL.payments) != 1))
27382742 then throw("Exactly one payment required")
27392743 else {
2740- let lo = value(gL.payments[0])
2741- if ((lo.assetId != cy))
2744+ let lq = value(gL.payments[0])
2745+ if ((lq.assetId != cy))
27422746 then throw("Allowed USDT payment only!")
2743- else if ((lo.amount != eh))
2747+ else if ((lq.amount != eh))
27442748 then throw(("Payment attached should be " + toString(eh)))
27452749 else {
27462750 let fk = iJ(gL.caller, gL.transactionId)
2747- let mi = dA(invoke(dh, "burnAcres", [ei], nil))
2748- $Tuple2((((fk._1 :+ ScriptTransfer(dd, lo.amount, cy)) ++ kg(toString(gL.caller), aa)._1) ++ ln), $Tuple2(fk._2._1, mi))
2751+ let mj = dA(invoke(dh, "burnAcres", [ei], nil))
2752+ $Tuple2((((fk._1 :+ ScriptTransfer(dd, lq.amount, cy)) ++ kg(toString(gL.caller), aa)._1) ++ lp), $Tuple2(fk._2._1, mj))
27492753 }
27502754 }
27512755 }
27522756
27532757
27542758
27552759 @Callable(gL)
27562760 func expedition (iR,iS) = {
2757- let ln = lj(gL)
2761+ let lp = ll(gL)
27582762 if ((size(gL.payments) != 0))
27592763 then throw("No payments required")
27602764 else {
27612765 let bM = toString(gL.caller)
27622766 let hq = iQ(bM, iR, iS)
27632767 let B = hq._2
27642768 let jc = A(B)
27652769 let hM = bJ(B)
27662770 let ip = hL(hM)
27672771 let jR = split(ip[bk], "_")
27682772 let jT = makeString(fe(true, jR, eg), "_")
27692773 let gy = G(B)
2770- let lC = valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,")
2771- let mj = fl(lC, hq._5)
2772- let lE = mj._1
2773- let lF = mj._2
2774- let mk = iJ(gL.caller, gL.transactionId)
2775- let iP = mk._2._1
2774+ let lE = valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,")
2775+ let mk = fl(lE, hq._5)
2776+ let lG = mk._1
2777+ let lH = mk._2
2778+ let ml = iJ(gL.caller, gL.transactionId)
2779+ let iP = ml._2._1
27762780 let fk = if ((0 >= hq._1))
2777- then $Tuple3([IntegerEntry(jc, 0), StringEntry(gy, lE)], "", 0)
2778- else $Tuple3((mk._1 ++ (if (lF)
2781+ then $Tuple3([IntegerEntry(jc, 0), StringEntry(gy, lG)], "", 0)
2782+ else $Tuple3((ml._1 ++ (if (lH)
27792783 then [StringEntry(M(B), "0_0_0_0_0")]
2780- else ((((nil :+ StringEntry(bK(B), makeString([mk._2._2, "L", iP], "_"))) :+ IntegerEntry(jc, hq._1)) :+ StringEntry(gy, lE)) :+ StringEntry(hM, makeString([ip[bi], ip[bj], jT, ip[bl]], ":"))))), iP, hq._3)
2784+ else ((((nil :+ StringEntry(bK(B), makeString([ml._2._2, "L", iP], "_"))) :+ IntegerEntry(jc, hq._1)) :+ StringEntry(gy, lG)) :+ StringEntry(hM, makeString([ip[bi], ip[bj], jT, ip[bl]], ":"))))), iP, hq._3)
27812785 if (kq(B))
27822786 then throw("expedition_checkTournament")
27832787 else if (kr(B))
27842788 then throw("expedition_checkDelivery")
27852789 else {
2786- let mi = dA(invoke(dh, "burnAcres", [ei], nil))
2787- $Tuple2(((fk._1 ++ ka(B, aa)._1) ++ ln), $Tuple3(fk._2, fk._3, mi))
2790+ let mj = dA(invoke(dh, "burnAcres", [ei], nil))
2791+ $Tuple2(((fk._1 ++ ka(B, aa)._1) ++ lp), $Tuple3(fk._2, fk._3, mj))
27882792 }
27892793 }
27902794 }
27912795
27922796
27932797
27942798 @Callable(gL)
27952799 func buySLandForAcres () = {
2796- let ln = lj(gL)
2800+ let lp = ll(gL)
27972801 if ((size(gL.payments) != 1))
27982802 then throw("exactly 1 payment must be attached")
27992803 else {
2800- let lo = gL.payments[0]
2801- let fr = lo.amount
2802- if (if (!(isDefined(lo.assetId)))
2804+ let lq = gL.payments[0]
2805+ let fr = lq.amount
2806+ if (if (!(isDefined(lq.assetId)))
28032807 then true
2804- else (value(lo.assetId) != dp))
2808+ else (value(lq.assetId) != dp))
28052809 then throw("ACRES payments only!")
28062810 else if ((fr != ei))
28072811 then throw(("Payment attached should be " + toString(ei)))
28082812 else {
28092813 let fk = iJ(gL.caller, gL.transactionId)
2810- let mi = dA(invoke(dh, "burnAcres", [ei], [AttachedPayment(dp, fr)]))
2811- $Tuple2(((fk._1 ++ kg(toString(gL.caller), aa)._1) ++ ln), $Tuple2(fk._2._1, mi))
2814+ let mj = dA(invoke(dh, "burnAcres", [ei], [AttachedPayment(dp, fr)]))
2815+ $Tuple2(((fk._1 ++ kg(toString(gL.caller), aa)._1) ++ lp), $Tuple2(fk._2._1, mj))
28122816 }
28132817 }
28142818 }
28152819
28162820
28172821
28182822 @Callable(gL)
28192823 func upgradeInfra (Q) = {
2820- let ln = lj(gL)
2824+ let lp = ll(gL)
28212825 if ((size(gL.payments) != 0))
28222826 then throw("No payments required")
28232827 else {
28242828 let fk = jL(true, gL.caller, 0, Q)
28252829 let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked")
2826- $Tuple2(((fk._1 ++ ln) ++ ka(B, fraction(ab, fk._3, cF))._1), fk._2)
2827- }
2828- }
2829-
2830-
2831-
2832-@Callable(gL)
2833-func activateArtifact (ml,mm) = {
2834- let ln = lj(gL)
2830+ $Tuple2(((fk._1 ++ lp) ++ ka(B, fraction(ab, fk._3, cF))._1), fk._2)
2831+ }
2832+ }
2833+
2834+
2835+
2836+@Callable(gL)
2837+func activateArtifact (mm,mn) = {
2838+ let lp = ll(gL)
28352839 if ((size(gL.payments) != 0))
28362840 then throw("No payments required")
28372841 else {
28382842 let d = toString(gL.caller)
28392843 let fk = {
2840- let cz = ml
2844+ let cz = mm
28412845 if (("PRESALE" == cz))
2842- then ko(d, mm)
2846+ then ko(d, mn)
28432847 else if (("ONBOARD" == cz))
28442848 then kh(d)
28452849 else throw("Unknown artifact")
28462850 }
2847- (fk ++ ln)
2848- }
2849- }
2850-
2851-
2852-
2853-@Callable(gL)
2854-func mergeLands (kG) = {
2855- let ln = lj(gL)
2851+ (fk ++ lp)
2852+ }
2853+ }
2854+
2855+
2856+
2857+@Callable(gL)
2858+func mergeLands (kI) = {
2859+ let lp = ll(gL)
28562860 if ((size(gL.payments) != 0))
28572861 then throw("No payments required")
28582862 else {
2859- let fk = le(toString(gL.caller), kG)
2860- $Tuple2(((fk._1 ++ ln) ++ kg(toString(gL.caller), ac)._1), fk._2)
2861- }
2862- }
2863-
2864-
2865-
2866-@Callable(gL)
2867-func cargoExchange (mn,Q) = {
2868- let ln = lj(gL)
2863+ let fk = lg(toString(gL.caller), kI)
2864+ $Tuple2(((fk._1 ++ lp) ++ kg(toString(gL.caller), ac)._1), fk._2)
2865+ }
2866+ }
2867+
2868+
2869+
2870+@Callable(gL)
2871+func cargoExchange (mo,Q) = {
2872+ let lp = ll(gL)
28692873 if ((size(gL.payments) != 0))
28702874 then throw("No payments required")
28712875 else {
2872- let io = split_4C(mn, ":")
2876+ let io = split_4C(mo, ":")
28732877 let d = toString(gL.originCaller)
28742878 let jt = value(assetInfo(fromBase58String(Q)))
28752879 let ju = bs(Q)
28762880 if (!(isDefined(getInteger(ju))))
28772881 then throw((jt.name + " is not staked"))
28782882 else {
28792883 let jw = valueOrErrorMessage(getString(bp(Q)), (("NFT " + jt.name) + " is orphaned"))
28802884 if ((jw != d))
28812885 then throw((aD + " is not yours"))
28822886 else {
28832887 let ia = (dI(split(jt.description, "_")[dj]) / cG)
28842888 let ib = valueOrElse(getInteger(bz(Q)), 0)
28852889 let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
28862890 let jr = valueOrElse(getString(bK(B)), aK)
28872891 let cg = split(value(jr), "_")
28882892 if ((cg[bn] != "L"))
28892893 then throw((("Duck location type is " + cg[bn]) + ", but should be L"))
28902894 else if ((cg[bo] != Q))
28912895 then throw(("Duck should be on the land " + Q))
28922896 else {
28932897 let hZ = by(Q)
28942898 let hQ = hY(hZ, ia, ib)
28952899 let hM = bJ(B)
28962900 let ip = hL(hM)
28972901 let fk = in(io, hQ, ip)
28982902 let ih = split(hQ[bd], "_")
28992903 let jI = (parseIntValue(ih[bf]) + fk._7)
29002904 let jJ = (parseIntValue(ih[bg]) - fk._7)
2901- ([StringEntry(hM, makeString_2C([ip[bi], fk._4, fk._5, fk._6], ":")), StringEntry(hZ, makeString_2C([hQ[aZ], fk._1, fk._2, fk._3, makeString([ih[be], toString(jI), toString(jJ), ih[bh]], "_")], ":"))] ++ ln)
2905+ ([StringEntry(hM, makeString_2C([ip[bi], fk._4, fk._5, fk._6], ":")), StringEntry(hZ, makeString_2C([hQ[aZ], fk._1, fk._2, fk._3, makeString([ih[be], toString(jI), toString(jJ), ih[bh]], "_")], ":"))] ++ lp)
29022906 }
29032907 }
29042908 }
29052909 }
29062910 }
29072911
29082912
29092913
29102914 @Callable(gL)
29112915 func saveWarehouse (id,Q) = if ((gL.caller != dd))
29122916 then throw("Access denied")
29132917 else {
29142918 let hZ = by(Q)
29152919 let ie = split_4C(id, ":")
29162920 if ((size(ie) != 5))
29172921 then throw("warehouse string should contain 4 ':' separators")
29182922 else {
2919- let mo = split(ie[bd], "_")[be]
2923+ let mp = split(ie[bd], "_")[be]
29202924 let jI = hP(ie)
2921- let mp = hN(ie[aZ])
2922- let jJ = ((mp - parseIntValue(mo)) - jI)
2923- let mq = makeString_2C([ie[aZ], ie[ba], ie[bb], ie[bc], makeString([mo, toString(jI), toString(jJ), toString(mp)], "_")], ":")
2924- $Tuple2([StringEntry(hZ, mq)], mq)
2925+ let mq = hN(ie[aZ])
2926+ let jJ = ((mq - parseIntValue(mp)) - jI)
2927+ let mr = makeString_2C([ie[aZ], ie[ba], ie[bb], ie[bc], makeString([mp, toString(jI), toString(jJ), toString(mq)], "_")], ":")
2928+ $Tuple2([StringEntry(hZ, mr)], mr)
29252929 }
29262930 }
29272931
29282932
29292933
29302934 @Callable(gL)
29312935 func fixWarehouseFormat (Q) = if ((gL.caller != dc))
29322936 then throw("Access denied")
29332937 else {
29342938 let hZ = by(Q)
29352939 let jt = value(assetInfo(fromBase58String(Q)))
29362940 let ia = (dI(split(jt.description, "_")[dj]) / cG)
29372941 let ib = valueOrElse(getInteger(bz(Q)), 0)
29382942 let ie = hY(hZ, ia, ib)
2939- let mo = dA(invoke(dd, "recalcLockedVolumeREADONLY", [Q, ie], nil))
2943+ let mp = dA(invoke(dd, "recalcLockedVolumeREADONLY", [Q, ie], nil))
29402944 let jI = hP(ie)
2941- let mp = hN(ie[aZ])
2942- let jJ = ((mp - mo) - jI)
2943- let mq = makeString_2C([ie[aZ], ie[ba], ie[bb], ie[bc], makeString([toString(mo), toString(jI), toString(jJ), toString(mp)], "_")], ":")
2944- $Tuple2([StringEntry(hZ, mq)], mq)
2945+ let mq = hN(ie[aZ])
2946+ let jJ = ((mq - mp) - jI)
2947+ let mr = makeString_2C([ie[aZ], ie[ba], ie[bb], ie[bc], makeString([toString(mp), toString(jI), toString(jJ), toString(mq)], "_")], ":")
2948+ $Tuple2([StringEntry(hZ, mr)], mr)
29452949 }
29462950
29472951
29482952
29492953 @Callable(gL)
2950-func fixContinentProportions (kG) = if ((gL.caller != dc))
2954+func fixContinentProportions (kI) = if ((gL.caller != dc))
29512955 then throw("Access denied")
29522956 else {
2953- func mr (eS,ms) = (eS :+ valueOrElse(getString(dt(ms)), "0_0_0_0_0_0"))
2957+ func ms (eS,mt) = (eS :+ valueOrElse(getString(dt(mt)), "0_0_0_0_0_0"))
29542958
29552959 let gv = {
29562960 let eU = aQ
29572961 let eV = size(eU)
29582962 let eW = nil
29592963 func eX (eY,eZ) = if ((eZ >= eV))
29602964 then eY
2961- else mr(eY, eU[eZ])
2965+ else ms(eY, eU[eZ])
29622966
29632967 func fa (eY,eZ) = if ((eZ >= eV))
29642968 then eY
29652969 else throw("List size exceeds 5")
29662970
29672971 fa(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5)
29682972 }
2969- func mt (eS,Q) = {
2973+ func mu (eS,Q) = {
29702974 let jt = value(assetInfo(fromBase58String(Q)))
29712975 let jx = split(jt.description, "_")
29722976 let ia = (dI(jx[dj]) / cG)
2973- let ms = jx[dl]
2977+ let mt = jx[dl]
29742978 let gH = gN(jx[dk])
2975- let hp = value(indexOf(aQ, ms))
2976- let kV = split(eS[hp], "_")
2977- let mu = makeString(gF(kV, gH, ia, 1), "_")
2978- let cz = ms
2979+ let hp = value(indexOf(aQ, mt))
2980+ let kX = split(eS[hp], "_")
2981+ let mv = makeString(gF(kX, gH, ia, 1), "_")
2982+ let cz = mt
29792983 if (("Americas" == cz))
2980- then [mu, eS[1], eS[2], eS[3], eS[4]]
2984+ then [mv, eS[1], eS[2], eS[3], eS[4]]
29812985 else if (("Europe" == cz))
2982- then [eS[0], mu, eS[2], eS[3], eS[4]]
2986+ then [eS[0], mv, eS[2], eS[3], eS[4]]
29832987 else if (("Asia" == cz))
2984- then [eS[0], eS[1], mu, eS[3], eS[4]]
2988+ then [eS[0], eS[1], mv, eS[3], eS[4]]
29852989 else if (("Africa" == cz))
2986- then [eS[0], eS[1], eS[2], mu, eS[4]]
2990+ then [eS[0], eS[1], eS[2], mv, eS[4]]
29872991 else if (("Oceania" == cz))
2988- then [eS[0], eS[1], eS[2], eS[3], mu]
2992+ then [eS[0], eS[1], eS[2], eS[3], mv]
29892993 else throw("wrong continent")
29902994 }
29912995
29922996 let fd = {
2993- let eU = kG
2997+ let eU = kI
29942998 let eV = size(eU)
29952999 let eW = gv
29963000 func hG (eY,eZ) = if ((eZ >= eV))
29973001 then eY
2998- else mt(eY, eU[eZ])
3002+ else mu(eY, eU[eZ])
29993003
30003004 func hH (eY,eZ) = if ((eZ >= eV))
30013005 then eY
30023006 else throw("List size exceeds 100")
30033007
30043008 hH(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(hG(eW, 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)
30053009 }
30063010 $Tuple2([StringEntry(dt("Americas"), fd[0]), StringEntry(dt("Europe"), fd[1]), StringEntry(dt("Asia"), fd[2]), StringEntry(dt("Africa"), fd[3]), StringEntry(dt("Oceania"), fd[4])], 0)
30073011 }
30083012
30093013
30103014
30113015 @Callable(gL)
30123016 func fixStakedPieces (cN) = if ((gL.caller != dc))
30133017 then throw("Access denied")
30143018 else {
3015- let kZ = if ((cN == ""))
3019+ let lb = if ((cN == ""))
30163020 then 0
30173021 else {
3018- let kS = getString(ao, dv(cN))
3019- let kO = if (isDefined(kS))
3020- then split_51C(value(kS), "_")
3022+ let kU = getString(ao, dv(cN))
3023+ let kQ = if (isDefined(kU))
3024+ then split_51C(value(kU), "_")
30213025 else nil
3022- func mv (eS,Q) = {
3026+ func mw (eS,Q) = {
30233027 let jt = value(assetInfo(fromBase58String(Q)))
30243028 let dJ = split(jt.description, "_")[dj]
30253029 (eS + dI(dJ))
30263030 }
30273031
3028- let eU = kO
3032+ let eU = kQ
30293033 let eV = size(eU)
30303034 let eW = 0
30313035 func eX (eY,eZ) = if ((eZ >= eV))
30323036 then eY
3033- else mv(eY, eU[eZ])
3037+ else mw(eY, eU[eZ])
30343038
30353039 func fa (eY,eZ) = if ((eZ >= eV))
30363040 then eY
30373041 else throw("List size exceeds 100")
30383042
30393043 fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 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)
30403044 }
3041- $Tuple2([IntegerEntry(dw(cN), kZ)], kZ)
3045+ $Tuple2([IntegerEntry(dw(cN), lb)], lb)
30423046 }
30433047
30443048
30453049
30463050 @Callable(gL)
3047-func setCustomName (bq,kQ,bu) = {
3048- let ln = lj(gL)
3051+func setCustomName (bq,kS,bu) = {
3052+ let lp = ll(gL)
30493053 if ((size(gL.payments) != 1))
30503054 then throw("Exactly one payment required")
30513055 else {
3052- let lo = value(gL.payments[0])
3053- if ((lo.assetId != cy))
3056+ let lq = value(gL.payments[0])
3057+ if ((lq.assetId != cy))
30543058 then throw("Allowed USDT payment only!")
3055- else if ((lo.amount != ed))
3059+ else if ((lq.amount != ed))
30563060 then throw(("Payment should be " + toString(ed)))
3057- else if (contains(kQ, "__"))
3058- then throw(("Name should not contain '__': " + kQ))
3059- else if ((size(kQ) > ee))
3061+ else if (contains(kS, "__"))
3062+ then throw(("Name should not contain '__': " + kS))
3063+ else if ((size(kS) > ee))
30603064 then throw(("Name too long, maxLength=" + toString(ee)))
30613065 else {
30623066 let d = toString(gL.originCaller)
3063- let mw = {
3067+ let mx = {
30643068 let cz = bu
30653069 if (("ACCOUNT" == cz))
30663070 then {
3067- let mx = ey(kQ)
3068- let my = getString(mx)
3069- if (isDefined(my))
3070- then throw(("Name already registered: " + kQ))
3071+ let my = ey(kS)
3072+ let mz = getString(my)
3073+ if (isDefined(mz))
3074+ then throw(("Name already registered: " + kS))
30713075 else {
3072- let mz = bC(d)
3073- let mA = getString(mz)
3074- let mB = if (isDefined(mA))
3075- then [DeleteEntry(ey(value(mA)))]
3076+ let mA = bC(d)
3077+ let mB = getString(mA)
3078+ let mC = if (isDefined(mB))
3079+ then [DeleteEntry(ey(value(mB)))]
30763080 else nil
3077- (((mB :+ StringEntry(mz, kQ)) :+ StringEntry(mx, d)) ++ kg(d, Z)._1)
3081+ (((mC :+ StringEntry(mA, kS)) :+ StringEntry(my, d)) ++ kg(d, Z)._1)
30783082 }
30793083 }
30803084 else if (("LAND" == cz))
30813085 then {
30823086 let jt = value(assetInfo(fromBase58String(bq)))
30833087 let ju = bs(bq)
30843088 if (!(isDefined(getInteger(ju))))
30853089 then throw((jt.name + " is not staked"))
30863090 else {
30873091 let jw = valueOrErrorMessage(getString(bp(bq)), (("NFT " + jt.name) + " is orphaned"))
30883092 if ((jw != d))
30893093 then throw((aD + " is not yours"))
30903094 else {
3091- let mx = er(kQ)
3092- let my = getString(mx)
3093- if (isDefined(my))
3094- then throw(("Name already registered: " + kQ))
3095+ let my = er(kS)
3096+ let mz = getString(my)
3097+ if (isDefined(mz))
3098+ then throw(("Name already registered: " + kS))
30953099 else {
3096- let mC = br(bq)
3097- let mA = getString(mC)
3098- let mB = if (isDefined(mA))
3099- then [DeleteEntry(er(value(mA)))]
3100+ let mD = br(bq)
3101+ let mB = getString(mD)
3102+ let mC = if (isDefined(mB))
3103+ then [DeleteEntry(er(value(mB)))]
31003104 else nil
3101- (((mB :+ StringEntry(mC, kQ)) :+ StringEntry(mx, bq)) ++ kg(d, Z)._1)
3105+ (((mC :+ StringEntry(mD, kS)) :+ StringEntry(my, bq)) ++ kg(d, Z)._1)
31023106 }
31033107 }
31043108 }
31053109 }
31063110 else if (("DUCK" == cz))
31073111 then {
31083112 let jt = value(assetInfo(fromBase58String(bq)))
31093113 let ju = bs(bq)
31103114 if (if (!(isDefined(getInteger(ju))))
31113115 then true
31123116 else !(isDefined(getString(bI(d)))))
31133117 then throw((jt.name + " is not staked"))
31143118 else {
31153119 let jw = valueOrErrorMessage(getString(bH(bq)), (("NFT " + jt.name) + " is orphaned"))
31163120 if ((jw != d))
31173121 then throw((aE + " is not yours"))
31183122 else {
3119- let mx = ex(kQ)
3120- let my = getString(mx)
3121- if (isDefined(my))
3122- then throw(("Name already registered: " + kQ))
3123+ let my = ex(kS)
3124+ let mz = getString(my)
3125+ if (isDefined(mz))
3126+ then throw(("Name already registered: " + kS))
31233127 else {
3124- let mC = bB(bq)
3125- let mA = getString(mC)
3126- let mB = if (isDefined(mA))
3127- then [DeleteEntry(ex(value(mA)))]
3128+ let mD = bB(bq)
3129+ let mB = getString(mD)
3130+ let mC = if (isDefined(mB))
3131+ then [DeleteEntry(ex(value(mB)))]
31283132 else nil
3129- (((mB :+ StringEntry(mC, kQ)) :+ StringEntry(mx, bq)) ++ ka(bq, Z)._1)
3133+ (((mC :+ StringEntry(mD, kS)) :+ StringEntry(my, bq)) ++ ka(bq, Z)._1)
31303134 }
31313135 }
31323136 }
31333137 }
31343138 else throw("Unknown entity type")
31353139 }
3136- $Tuple2(((mw :+ ScriptTransfer(dd, lo.amount, cy)) ++ ln), 0)
3140+ $Tuple2(((mx :+ ScriptTransfer(dd, lq.amount, cy)) ++ lp), 0)
31373141 }
31383142 }
31393143 }
31403144
31413145
31423146
31433147 @Callable(gL)
3144-func setReferrals (mD,mE) = if ((gL.callerPublicKey != ea))
3148+func setReferrals (mE,mF) = if ((gL.callerPublicKey != ea))
31453149 then throw("Permission denied")
31463150 else {
3147- let ln = lj(gL)
3151+ let lp = ll(gL)
31483152 if ((size(gL.payments) != 0))
31493153 then throw("No payments required")
3150- else if (!(isDefined(addressFromString(mD))))
3151- then throw(("Invalid address: " + mD))
3152- else if (!(isDefined(addressFromString(mE))))
3153- then throw(("Invalid address: " + mE))
3154+ else if (!(isDefined(addressFromString(mE))))
3155+ then throw(("Invalid address: " + mE))
3156+ else if (!(isDefined(addressFromString(mF))))
3157+ then throw(("Invalid address: " + mF))
31543158 else {
3155- let mF = ez()
3156- let mG = getString(mF)
3157- let mH = if (isDefined(mG))
3158- then split_4C(value(mG), "_")
3159+ let mG = ez()
3160+ let mH = getString(mG)
3161+ let mI = if (isDefined(mH))
3162+ then split_4C(value(mH), "_")
31593163 else nil
3160- if (containsElement(mH, mE))
3161- then throw((mE + " is not newbie (already has referrals)"))
3164+ if (containsElement(mI, mF))
3165+ then throw((mF + " is not newbie (already has referrals)"))
31623166 else {
3163- let ki = bD(mE)
3167+ let ki = bD(mF)
31643168 let kj = getString(ki)
31653169 if (if (isDefined(kj))
31663170 then isDefined(addressFromString(value(kj)))
31673171 else false)
3168- then throw(((mE + " already has refBy: ") + value(kj)))
3172+ then throw(((mF + " already has refBy: ") + value(kj)))
31693173 else {
3170- let mI = bG(mD)
3171- let mJ = getString(mI)
3172- let mK = if (isDefined(mJ))
3173- then split_4C(value(mJ), "_")
3174+ let mJ = bG(mE)
3175+ let mK = getString(mJ)
3176+ let mL = if (isDefined(mK))
3177+ then split_4C(value(mK), "_")
31743178 else nil
3175- if (containsElement(mK, mE))
3176- then throw((((mD + " already contains ") + mE) + " within referrals"))
3179+ if (containsElement(mL, mF))
3180+ then throw((((mE + " already contains ") + mF) + " within referrals"))
31773181 else {
3178- let mL = makeString_2C((mK :+ mE), "_")
3179- let mM = if (containsElement(mH, mD))
3180- then value(mG)
3181- else makeString_2C((mH :+ mD), "_")
3182- $Tuple2(([StringEntry(ki, mD), StringEntry(mI, mL), StringEntry(mF, mM)] ++ ln), 0)
3182+ let mM = makeString_2C((mL :+ mF), "_")
3183+ let mN = if (containsElement(mI, mE))
3184+ then value(mH)
3185+ else makeString_2C((mI :+ mE), "_")
3186+ $Tuple2(([StringEntry(ki, mE), StringEntry(mJ, mM), StringEntry(mG, mN)] ++ lp), 0)
31833187 }
31843188 }
31853189 }
31863190 }
31873191 }
31883192
31893193
31903194
31913195 @Callable(gL)
3192-func distributePoints (mN,mO,mP,mQ,mR) = {
3193- let ln = lj(gL)
3196+func distributePoints (mO,mP,mQ,mR,mS) = {
3197+ let lp = ll(gL)
31943198 if ((size(gL.payments) != 0))
31953199 then throw("No payments required")
31963200 else {
31973201 let d = toString(gL.originCaller)
3198- let mS = dC(invoke(df, "checkWlgXpREADONLY", [d], nil))
3199- let mT = dA(mS[1])
3200- let mU = if ((0 >= mT))
3202+ let mT = dC(invoke(df, "checkWlgXpREADONLY", [d], nil))
3203+ let mU = dA(mT[1])
3204+ let mV = if ((0 >= mU))
32013205 then $Tuple2(0, nil)
32023206 else {
32033207 let kb = dA(invoke(df, "takeWlgXp", [d], nil))
32043208 if ((kb == kb))
3205- then $Tuple2(mT, [IntegerEntry(I(d), dA(mS[0])), IntegerEntry(H(d), dA(mS[2]))])
3209+ then $Tuple2(mU, [IntegerEntry(I(d), dA(mT[0])), IntegerEntry(H(d), dA(mT[2]))])
32063210 else throw("Strict value is not equal to itself.")
32073211 }
3208- let mV = mU._1
3209- let mW = mU._2
3212+ let mW = mV._1
3213+ let mX = mV._2
32103214 let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
3211- let mX = J(d)
3212- let mY = (valueOrElse(getInteger(mX), 0) + mV)
3213- let mZ = F(B)
3214- let na = valueOrElse(getInteger(mZ), 0)
3215- let nb = (mY + na)
3216- let nc = ((((mN + mO) + mP) + mQ) + mR)
3217- if ((nc > nb))
3218- then throw((("There are only " + toString(nb)) + " free points to distribute"))
3215+ let mY = J(d)
3216+ let mZ = (valueOrElse(getInteger(mY), 0) + mW)
3217+ let na = F(B)
3218+ let nb = valueOrElse(getInteger(na), 0)
3219+ let nc = (mZ + nb)
3220+ let nd = ((((mO + mP) + mQ) + mR) + mS)
3221+ if ((nd > nc))
3222+ then throw((("There are only " + toString(nc)) + " free points to distribute"))
32193223 else {
3220- let nd = C(B)
3221- let ar = split(valueOrElse(getString(nd), "0_0_0_0_0"), "_")
3222- let ne = (mY - nc)
3223- $Tuple2((([IntegerEntry(mX, if ((0 > ne))
3224+ let ne = C(B)
3225+ let ar = split(valueOrElse(getString(ne), "0_0_0_0_0"), "_")
3226+ let nf = (mZ - nd)
3227+ $Tuple2((([IntegerEntry(mY, if ((0 > nf))
32243228 then 0
3225- else ne), IntegerEntry(mZ, if ((0 > ne))
3226- then (na + ne)
3227- else na), StringEntry(nd, makeString([toString((parseIntValue(ar[l]) + mN)), toString((parseIntValue(ar[m]) + mO)), toString((parseIntValue(ar[n]) + mP)), toString((parseIntValue(ar[o]) + mQ)), toString((parseIntValue(ar[p]) + mR))], "_"))] ++ ln) ++ mW), 0)
3229+ else nf), IntegerEntry(na, if ((0 > nf))
3230+ then (nb + nf)
3231+ else nb), StringEntry(ne, makeString([toString((parseIntValue(ar[l]) + mO)), toString((parseIntValue(ar[m]) + mP)), toString((parseIntValue(ar[n]) + mQ)), toString((parseIntValue(ar[o]) + mR)), toString((parseIntValue(ar[p]) + mS))], "_"))] ++ lp) ++ mX), 0)
32283232 }
32293233 }
32303234 }
32313235
32323236
32333237
32343238 @Callable(gL)
32353239 func splitByGlobalWeightsREADONLY (eJ) = $Tuple2(nil, fb(eJ))
32363240
32373241
32383242
32393243 @Callable(gL)
3240-func splitByGlobalAndLocalWeightsREADONLY (nf,ng,gO) = {
3244+func splitByGlobalAndLocalWeightsREADONLY (ng,nh,gO) = {
32413245 let gH = gN(gO)
3242- $Tuple2(nil, $Tuple2(fb(nf), eM(ng, gH)))
3246+ $Tuple2(nil, $Tuple2(fb(ng), eM(nh, gH)))
32433247 }
32443248
32453249
32463250
32473251 @Callable(gL)
32483252 func getBackpackREADONLY (B) = $Tuple2(nil, makeString(hL(bJ(B)), ":"))
32493253
32503254
32513255
32523256 @Callable(gL)
32533257 func getWarehouseREADONLY (Q) = {
32543258 let jt = value(assetInfo(fromBase58String(Q)))
32553259 let ia = (dI(split(jt.description, "_")[dj]) / cG)
32563260 let ib = valueOrElse(getInteger(bz(Q)), 0)
32573261 $Tuple2(nil, makeString_2C(hY(by(Q), ia, ib), ":"))
32583262 }
32593263
32603264
32613265
32623266 @Callable(gL)
32633267 func saveLastTx () = if (!(containsElement([df, dd, dg, dh], gL.caller)))
32643268 then throw("Access denied")
3265- else $Tuple2(lj(gL), 42)
3269+ else $Tuple2(ll(gL), 42)
32663270
32673271
32683272
32693273 @Callable(gL)
32703274 func updateDuckStats (B,kb) = if ((gL.caller != dd))
32713275 then throw("Access denied")
32723276 else ka(B, kb)
32733277
32743278
32753279
32763280 @Callable(gL)
32773281 func updateAccStats (d,kb) = if (!(containsElement([df, dd, dh], gL.caller)))
32783282 then throw("Access denied")
32793283 else kg(d, kb)
32803284
32813285
32823286
32833287 @Callable(gL)
3284-func equipDuck (nh) = {
3285- let ln = lj(gL)
3288+func equipDuck (ni) = {
3289+ let lp = ll(gL)
32863290 if ((size(gL.payments) != 0))
32873291 then throw("No payments required")
32883292 else {
32893293 let d = toString(gL.originCaller)
32903294 let B = valueOrErrorMessage(getString(bI(d)), "You don't have a duck staked")
32913295 if (kq(B))
32923296 then throw("equipDuck_checkTournament")
32933297 else if (kr(B))
32943298 then throw("equipDuck_checkDelivery")
32953299 else {
32963300 let gy = G(B)
3297- let ni = split(valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3301+ let nj = split(valueOrElse(getString(gy), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
32983302 let hM = bJ(B)
32993303 let ip = hL(hM)
3300- let lE = split(nh, "_")
3301- if ((size(lE) != r))
3304+ let lG = split(ni, "_")
3305+ if ((size(lG) != r))
33023306 then throw("Wrong equipment string")
33033307 else {
3304- let gA = gn(ni, fy(ip[bl]), true, nil)
3305- let gB = split(lE[q], ";")[1]
3308+ let gA = gn(nj, fy(ip[bl]), true, nil)
3309+ let gB = split(lG[q], ";")[1]
33063310 let ap = if ((gB == ""))
33073311 then 0
33083312 else {
33093313 let gC = split(gB, ",")[0]
33103314 if ((gC == ""))
33113315 then 0
33123316 else {
33133317 let fN = split(gC, ":")
33143318 let db = fN[0]
33153319 let gD = fN[1]
33163320 if (if (if (if (if ((db == "06"))
33173321 then true
33183322 else (db == "07"))
33193323 then true
33203324 else (db == "08"))
33213325 then (gD != "")
33223326 else false)
33233327 then (parseIntValue(gD) > 0)
33243328 else false)
33253329 then parseIntValue(split(aT[parseIntValue(db)], "_")[aV])
33263330 else 0
33273331 }
33283332 }
33293333 let gi = an(this, B, ap, true)
3330- let gE = gn(lE, gA, false, gi)
3331- let nj = fD(gE)
3332- $Tuple2(([StringEntry(gy, nh), StringEntry(hM, makeString_2C([ip[bi], ip[bj], ip[bk], nj], ":")), StringEntry(M(B), makeString([toString(gi[7]), toString(gi[8]), toString(gi[9]), toString(gi[10]), toString(gi[11])], "_"))] ++ ln), 0)
3334+ let gE = gn(lG, gA, false, gi)
3335+ let nk = fD(gE)
3336+ $Tuple2(([StringEntry(gy, ni), StringEntry(hM, makeString_2C([ip[bi], ip[bj], ip[bk], nk], ":")), StringEntry(M(B), makeString([toString(gi[7]), toString(gi[8]), toString(gi[9]), toString(gi[10]), toString(gi[11])], "_"))] ++ lp), 0)
33333337 }
33343338 }
33353339 }
33363340 }
33373341
33383342
33393343
33403344 @Callable(gL)
3341-func fortificateLand (Q,nk) = {
3342- let ln = lj(gL)
3345+func fortificateLand (Q,nl) = {
3346+ let lp = ll(gL)
33433347 if ((size(gL.payments) != 0))
33443348 then throw("No payments required")
33453349 else {
33463350 let d = toString(gL.originCaller)
33473351 let B = valueOrElse(getString(bI(d)), "")
33483352 let fI = an(this, B, 0, false)
3349- let nl = bA(Q)
3350- let nm = split(valueOrElse(getString(nl), ":0_15:0_18:0"), "_")
3353+ let nm = bA(Q)
3354+ let nn = split(valueOrElse(getString(nm), ":0_15:0_18:0"), "_")
33513355 let jt = value(assetInfo(fromBase58String(Q)))
33523356 let ia = (dI(split(jt.description, "_")[dj]) / cG)
33533357 let ib = valueOrElse(getInteger(bz(Q)), 0)
33543358 let hZ = by(Q)
33553359 let ie = hY(hZ, ia, ib)
3356- let nn = split(ie[bd], "_")
3357- let no = parseIntValue(nn[bf])
3358- let np = parseIntValue(nn[bg])
3359- let nq = split(nk, "_")
3360- let nr = gu(nm, fy(ie[bc]), no, np, true, nil)
3361- let gA = nr._1
3362- let ns = nr._2
3363- let nt = nr._3
3364- let nu = gu(nq, gA, ns, nt, false, fI)
3365- let gE = nu._1
3366- let nv = nu._2
3367- let nw = nu._3
3368- let nj = fD(gE)
3369- let jZ = makeString([nn[be], toString(nv), toString(nw), nn[bh]], "_")
3370- $Tuple2(([StringEntry(nl, nk), StringEntry(hZ, makeString_2C([ie[aZ], ie[ba], ie[bb], nj, jZ], ":"))] ++ ln), 0)
3360+ let no = split(ie[bd], "_")
3361+ let np = parseIntValue(no[bf])
3362+ let nq = parseIntValue(no[bg])
3363+ let nr = split(nl, "_")
3364+ let ns = gu(nn, fy(ie[bc]), np, nq, true, nil)
3365+ let gA = ns._1
3366+ let nt = ns._2
3367+ let nu = ns._3
3368+ let nv = gu(nr, gA, nt, nu, false, fI)
3369+ let gE = nv._1
3370+ let nw = nv._2
3371+ let nx = nv._3
3372+ let nk = fD(gE)
3373+ let jZ = makeString([no[be], toString(nw), toString(nx), no[bh]], "_")
3374+ $Tuple2(([StringEntry(nm, nl), StringEntry(hZ, makeString_2C([ie[aZ], ie[ba], ie[bb], nk, jZ], ":"))] ++ lp), 0)
33713375 }
33723376 }
33733377
33743378
33753379
33763380 @Callable(gL)
33773381 func initDuckTourAttempt (B) = if ((gL.caller != dg))
33783382 then throw("Access denied")
33793383 else {
33803384 let jc = A(B)
33813385 let jd = ah(valueOrElse(getInteger(E(B)), 0))
3382- let kw = valueOrElse(getInteger(jc), jd)
3383- let nx = bK(B)
3384- let jr = valueOrElse(getString(nx), aK)
3386+ let ky = valueOrElse(getInteger(jc), jd)
3387+ let ny = bK(B)
3388+ let jr = valueOrElse(getString(ny), aK)
33853389 let cf = valueOrElse(getInteger(dg, bQ), 0)
3386- let ny = (toString(cf) + "_T_0")
3387- $Tuple2([IntegerEntry(K(B), kw), IntegerEntry(jc, jd), StringEntry(L(B), jr), StringEntry(nx, ny)], ny)
3390+ let nz = (toString(cf) + "_T_0")
3391+ $Tuple2([IntegerEntry(K(B), ky), IntegerEntry(jc, jd), StringEntry(L(B), jr), StringEntry(ny, nz)], nz)
33883392 }
33893393
33903394
33913395
33923396 @Callable(gL)
33933397 func breakAttempt () = {
3394- let ln = lj(gL)
3398+ let lp = ll(gL)
33953399 let B = valueOrErrorMessage(getString(bI(toString(gL.caller))), "You don't have a duck staked")
3396- let nx = bK(B)
3397- let jr = valueOrElse(getString(nx), aK)
3400+ let ny = bK(B)
3401+ let jr = valueOrElse(getString(ny), aK)
33983402 if ((split(jr, "_")[bn] != "T"))
33993403 then throw("Your duck is not in the tournament")
34003404 else {
3401- let kB = getIntegerValue(K(B))
3402- let kC = getStringValue(L(B))
3403- $Tuple2(((ln :+ IntegerEntry(A(B), kB)) :+ StringEntry(nx, kC)), jr)
3405+ let kD = getIntegerValue(K(B))
3406+ let kE = getStringValue(L(B))
3407+ $Tuple2(((lp :+ IntegerEntry(A(B), kD)) :+ StringEntry(ny, kE)), jr)
34043408 }
34053409 }
34063410
34073411
34083412
34093413 @Callable(gL)
34103414 func exitTournamentInternal (B) = if ((gL.caller != this))
34113415 then throw("Access denied")
34123416 else {
3413- let kB = getIntegerValue(K(B))
3414- let kC = getStringValue(L(B))
3415- $Tuple2([IntegerEntry(A(B), kB), StringEntry(bK(B), kC)], false)
3417+ let kD = getIntegerValue(K(B))
3418+ let kE = getStringValue(L(B))
3419+ $Tuple2([IntegerEntry(A(B), kD), StringEntry(bK(B), kE)], false)
34163420 }
34173421
34183422
34193423
34203424 @Callable(gL)
34213425 func exitDeliveryInternal (B) = if ((gL.caller != this))
34223426 then throw("Access denied")
34233427 else {
3424- let mk = ks(B, false, 0, "")
3425- $Tuple2((mk._1 ++ mk._2), false)
3428+ let ml = ks(B, false, 0, "", false, 0)
3429+ $Tuple2((ml._1 ++ ml._2), false)
34263430 }
34273431
34283432
34293433
34303434 @Callable(gL)
3431-func autoExitDelivery (B,iW,ku) = if ((gL.caller != this))
3435+func autoExitDelivery (B,iW,ku,kw) = if ((gL.caller != this))
34323436 then throw("Access denied")
34333437 else {
3434- let mk = ks(B, true, iW, ku)
3435- $Tuple2(mk._1, $Tuple2(mk._3, mk._4))
3438+ let ml = ks(B, true, iW, ku, true, kw)
3439+ $Tuple2(ml._1, $Tuple2(ml._3, ml._4))
34363440 }
34373441
34383442
34393443
34403444 @Callable(gL)
34413445 func prepareRobbery (iR,iS) = {
3442- let ln = lj(gL)
3446+ let lp = ll(gL)
34433447 if (!(sigVerify_8Kb(iR, iS, ea)))
34443448 then throw("signature does not match")
34453449 else if ((size(gL.payments) != 1))
34463450 then throw("exactly 1 payment must be attached")
34473451 else {
3448- let lo = gL.payments[0]
3449- let nz = lo.amount
3450- if (if (!(isDefined(lo.assetId)))
3452+ let lq = gL.payments[0]
3453+ let nA = lq.amount
3454+ if (if (!(isDefined(lq.assetId)))
34513455 then true
3452- else (value(lo.assetId) != dn))
3456+ else (value(lq.assetId) != dn))
34533457 then throw("WLGOLD payments only!")
34543458 else {
34553459 let fq = split(toUtf8String(iR), "|")
34563460 if ((size(fq) != 2))
34573461 then throw("Wrong message format")
34583462 else {
34593463 let B = fq[0]
34603464 if (kq(B))
34613465 then throw("prepareRobbery_checkTournament")
34623466 else if (kr(B))
34633467 then throw("prepareRobbery_checkDelivery")
34643468 else {
34653469 let az = av(this, B)._1
3466- if ((az > nz))
3467- then throw(((("Payment " + toString(nz)) + " < required ") + toString(az)))
3470+ if ((az > nA))
3471+ then throw(((("Payment " + toString(nA)) + " < required ") + toString(az)))
34683472 else {
3469- let nA = split(fq[1], "_")
3473+ let nB = split(fq[1], "_")
34703474 let ay = lastBlock.timestamp
34713475 let aA = valueOrElse(getInteger(S(B)), 0)
34723476 let aB = valueOrElse(getString(T(B)), "")
34733477 let aC = valueOrElse(getInteger(R(aB)), 0)
34743478 if (if ((aA != y))
34753479 then (aC > ay)
34763480 else false)
34773481 then throw(("You already started robbing, wait till " + toString(aC)))
34783482 else {
3479- func nB (eS,Q) = {
3480- let nC = valueOrElse(getInteger(P(Q)), 0)
3481- let nD = valueOrElse(getInteger(R(Q)), 0)
3482- if ((nC > size(v)))
3483+ func nC (eS,Q) = {
3484+ let nD = valueOrElse(getInteger(P(Q)), 0)
3485+ let nE = valueOrElse(getInteger(R(Q)), 0)
3486+ if ((nD > size(v)))
34833487 then throw("Invalid state")
3484- else if ((ay > nD))
3488+ else if ((ay > nE))
34853489 then {
3486- let nE = valueOrElse(getInteger(bs(Q)), 0)
3487- if ((0 >= nE))
3490+ let nF = valueOrElse(getInteger(bs(Q)), 0)
3491+ if ((0 >= nF))
34883492 then eS
34893493 else {
34903494 let gs = value(assetInfo(fromBase58String(Q)))
34913495 let jx = split(gs.description, "_")
34923496 let jj = dI(jx[dj])
3493- let nF = ji(Q, jj)
3494- let gR = (ay - nE)
3495- let jA = fraction(gR, (nF * jj), a)
3497+ let nG = ji(Q, jj)
3498+ let gR = (ay - nF)
3499+ let jA = fraction(gR, (nG * jj), a)
34963500 if ((w > jA))
34973501 then eS
34983502 else (eS :+ Q)
34993503 }
35003504 }
35013505 else eS
35023506 }
35033507
3504- let nG = {
3505- let eU = nA
3508+ let nH = {
3509+ let eU = nB
35063510 let eV = size(eU)
35073511 let eW = nil
35083512 func eX (eY,eZ) = if ((eZ >= eV))
35093513 then eY
3510- else nB(eY, eU[eZ])
3514+ else nC(eY, eU[eZ])
35113515
35123516 func fa (eY,eZ) = if ((eZ >= eV))
35133517 then eY
35143518 else throw("List size exceeds 10")
35153519
35163520 fa(eX(eX(eX(eX(eX(eX(eX(eX(eX(eX(eW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
35173521 }
3518- if ((size(nG) == 0))
3522+ if ((size(nH) == 0))
35193523 then throw("No candidates for robbery")
35203524 else {
3521- let nH = dS(size(nG), height, (iS + gL.transactionId))
3522- let Q = nG[nH]
3523- $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (ay + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ ln), Q)
3525+ let nI = dS(size(nH), height, (iS + gL.transactionId))
3526+ let Q = nH[nI]
3527+ $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (ay + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ lp), Q)
35243528 }
35253529 }
35263530 }
35273531 }
35283532 }
35293533 }
35303534 }
35313535 }
35323536
35333537
35343538
35353539 @Callable(gL)
35363540 func robLand (iR,iS) = {
3537- let ln = lj(gL)
3541+ let lp = ll(gL)
35383542 if (!(sigVerify_8Kb(iR, iS, ea)))
35393543 then throw("signature does not match")
35403544 else {
35413545 let bM = toString(gL.caller)
35423546 let B = valueOrErrorMessage(getString(bI(bM)), "You don't have a duck staked")
35433547 let ay = lastBlock.timestamp
3544- $Tuple2((ln :+ IntegerEntry(N(B), ay)), 0)
3548+ $Tuple2((lp :+ IntegerEntry(N(B), ay)), 0)
35453549 }
35463550 }
35473551
35483552
35493553
35503554 @Callable(gL)
35513555 func acceptDelivery () = if (!(cw))
35523556 then throw("Delivery feature is turned off!")
35533557 else {
3554- let ln = lj(gL)
3558+ let lp = ll(gL)
35553559 let bM = toString(gL.caller)
35563560 let B = valueOrErrorMessage(getString(bI(bM)), "You don't have a duck staked")
3557- let nI = valueOrElse(getInteger(dd, bO), 0)
3558- let kz = valueOrElse(getInteger(dd, bP), 0)
3559- if ((aN > (nI - kz)))
3560- then throw(((("Delivery is not available, fund=" + dN(nI, 6)) + ", locked=") + dN(kz, 6)))
3561+ let nJ = valueOrElse(getInteger(dd, bO), 0)
3562+ let kB = valueOrElse(getInteger(dd, bP), 0)
3563+ if ((aN > (nJ - kB)))
3564+ then throw(((("Delivery is not available, fund=" + dN(nJ, 6)) + ", locked=") + dN(kB, 6)))
35613565 else {
35623566 let ay = lastBlock.timestamp
3563- let nJ = valueOrElse(getInteger(U(B)), 0)
3564- if ((nJ > ay))
3565- then throw(("Delivery is forbidden for your duck until " + toString(nJ)))
3567+ let nK = valueOrElse(getInteger(U(B)), 0)
3568+ if ((nK > ay))
3569+ then throw(("Delivery is forbidden for your duck until " + toString(nK)))
35663570 else if (kq(B))
35673571 then throw("acceptDelivery_checkTournament")
35683572 else if (kr(B))
35693573 then throw("acceptDelivery_checkDelivery")
35703574 else {
3571- let nK = dA(invoke(dd, "updateDeliveryLocked", [(kz + aN)], nil))
3575+ let nL = dA(invoke(dd, "updateDeliveryLocked", [(kB + aN)], nil))
35723576 let jc = A(B)
35733577 let jd = ah(valueOrElse(getInteger(E(B)), 0))
3574- let kw = valueOrElse(getInteger(jc), jd)
3575- let nx = bK(B)
3576- let jr = valueOrElse(getString(nx), aK)
3577- let nL = (toString(ay) + "_D_0")
3578- $Tuple2(([IntegerEntry(K(B), kw), IntegerEntry(jc, jd), StringEntry(L(B), jr), StringEntry(nx, nL)] ++ ln), $Tuple2(nL, nK))
3578+ let ky = valueOrElse(getInteger(jc), jd)
3579+ let ny = bK(B)
3580+ let jr = valueOrElse(getString(ny), aK)
3581+ let nM = (toString(ay) + "_D_0")
3582+ $Tuple2(([IntegerEntry(K(B), ky), IntegerEntry(jc, jd), StringEntry(L(B), jr), StringEntry(ny, nM)] ++ lp), $Tuple2(nM, nL))
35793583 }
35803584 }
35813585 }
35823586
35833587

github/deemru/w8io/169f3d6 
645.45 ms