tx · GZ8xfNNnLpZFe5iFt5ry9L1SEP8ZGCYzE29gtVRQ6d6v

3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm:  -0.10300000 Waves

2024.10.01 19:09 [3308012] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves

{ "type": 13, "id": "GZ8xfNNnLpZFe5iFt5ry9L1SEP8ZGCYzE29gtVRQ6d6v", "fee": 10300000, "feeAssetId": null, "timestamp": 1727798824546, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "27HuTqKMoJWLveJs1U78jLuCP2W8poWDYaRZ2PTCdfstxC3WUFr1WMq3jyWs2uUTwJKPxmaCQTWi58qHe38EmYoo" ], "script": "base64:BgLnAQgCEgMKAQgSBAoCCAESAwoBBBIAEgMKAQgSBAoCCAgSBAoCCAgSAwoBCBIAEgASAwoBCBIECgIICBIECgIICBIECgIBCBIECgIBCBIECgICAhIFCgMBAQESABIECgIICBIAEgMKAQESABIECgICAhIAEgMKAQgSBAoCCAgSAwoBGBIECgIICBIECgIICBIFCgMICAgSBAoCCAgSBwoFAQEBAQESAwoBARIFCgMBAQgSAwoBCBIDCgEIEgASBAoCCAESBAoCCAESAwoBCBIDCgEIEgASABIDCgEIEgMKAQgSBAoCAgISAJ8CABZLU19TRVBBUkFURV9QVUJMSUNfS0VZBwAYS1NfQUxMT1dfQklHX0lORlJBX01FUkdFBwATS1NfQUxMT1dfUk9CT19EVUNLUwcACkRBWV9NSUxMSVMAgLiZKQAUT0xEX1NUQUtJTkdfREVBRExJTkUAmNCBq6QyAAVjaGFpbgkAyQECCQDKAQIIBQR0aGlzBWJ5dGVzAAEAAQADcHViBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAwUWS1NfU0VQQVJBVEVfUFVCTElDX0tFWQEgqxdXjxVn41lUQbDWcutmm8Sj02Ze1ZmGUN+YNx+yCQgBIE9T4ho/VKjWnVJOEx1GJ1W9s1PzLHvJVFSw/0PBtBQoAwkAAAIBAVQFByRtYXRjaDABIE9T4ho/VKjWnVJOEx1GJ1W9s1PzLHvJVFSw/0PBtBQoCQACAQINVW5rbm93biBjaGFpbgALdXNkdEFzc2V0SWQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDABIITaerIIAz9O0bvKju6Lk7zJgt0LXfoHlqjUI/moD/+5AwkAAAIBAVQFByRtYXRjaDABIFWx2J9yh4Lv5eNbjawFq2XemkOhLxa7BfMat4el8cUYCQACAQINVW5rbm93biBjaGFpbgAVZGVmYXVsdFJlc3RBZGRyZXNzU3RyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUFFDdXZGYnZoNExrUFVucm5VMXozam5iQTFwOW0zV05odgMJAAACAQFUBQckbWF0Y2gwAiMzTXVta0dHenRDS0FYcFdEcXhrZGRvZnFYU1VicVFrdlNKeQkAAgECDVVua25vd24gY2hhaW4AEGFjcmVzMkFkZHJlc3NTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQNFVIM1Q5blhwTU5wVW1TbVFqUG1FejNHODV0M3puNmVBAwkAAAIBAVQFByRtYXRjaDACIzNOQlB4MUZjaXUzSlFORUdaMjFqU25UZHV0TE5HR0JVU1hoCQACAQINVW5rbm93biBjaGFpbgARSW5mcmFVcGdyYWRlQ29zdFMEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAgMivoCUDCQAAAgEBVAUHJG1hdGNoMACAwtcvCQACAQINVW5rbm93biBjaGFpbgAOYXJiaXRyYWdlRGVsYXkEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAFCkRBWV9NSUxMSVMDCQAAAgEBVAUHJG1hdGNoMADg1AMJAAIBAg1Vbmtub3duIGNoYWluAANTRVACAl9fAAVNVUxUNgDAhD0ABU1VTFQ4AIDC1y8ABVNTSVpFABkABU1TSVpFAGQABUxTSVpFAOEBAAZYTFNJWkUAkAMAB1hYTFNJWkUA8QQABUlURVI2CQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFBQNuaWwBD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAABFJZHhDZmdTdGFraW5nRGFwcAABABFJZHhDZmdFY29ub215RGFwcAACABRJZHhDZmdHb3Zlcm5hbmNlRGFwcAADAA1JZHhDZmdXbGdEYXBwAAQAFElkeENmZ1RvdXJuYW1lbnREYXBwAAcAD0lkeENmZ0FjcmVzRGFwcAAIAQprZXlSZXN0Q2ZnAAIOJXNfX3Jlc3RDb25maWcBDmtleVJlc3RBZGRyZXNzAAIMJXNfX3Jlc3RBZGRyARFyZWFkUmVzdENmZ09yRmFpbAEEcmVzdAkAvAkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUEcmVzdAkBCmtleVJlc3RDZmcABQNTRVABGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIHcmVzdENmZwNpZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFB3Jlc3RDZmcFA2lkeAkArAICAipSZXN0IGNmZyBkb2Vzbid0IGNvbnRhaW4gYWRkcmVzcyBhdCBpbmRleCAJAKQDAQUDaWR4AAxyZXN0Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBDmtleVJlc3RBZGRyZXNzAAUVZGVmYXVsdFJlc3RBZGRyZXNzU3RyAAdyZXN0Q2ZnCQERcmVhZFJlc3RDZmdPckZhaWwBBQxyZXN0Q29udHJhY3QAD3N0YWtpbmdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ1N0YWtpbmdEYXBwAA9lY29ub215Q29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdFY29ub215RGFwcAALZ292Q29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRRJZHhDZmdHb3Zlcm5hbmNlRGFwcAALd2xnQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBQ1JZHhDZmdXbGdEYXBwABJ0b3VybmFtZW50Q29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRRJZHhDZmdUb3VybmFtZW50RGFwcAANYWNyZXNDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFD0lkeENmZ0FjcmVzRGFwcAAKcmVjTGFuZE51bQAAAAtyZWNMYW5kU2l6ZQABAAtyZWNUZXJyYWlucwACAAxyZWNDb250aW5lbnQAAwANd2xnQXNzZXRJZEtleQILd2xnX2Fzc2V0SWQACndsZ0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQt3bGdDb250cmFjdAUNd2xnQXNzZXRJZEtleQIYV0xHT0xEIGlzIG5vdCBpc3N1ZWQgeWV0AA9hY3Jlc0Fzc2V0SWRLZXkCDGFjcmVzQXNzZXRJZAAMYWNyZXNBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgUNYWNyZXNDb250cmFjdAUPYWNyZXNBc3NldElkS2V5AhdBQ1JFUyBpcyBub3QgaXNzdWVkIHlldAALcmFuZG9tRGVsYXkAAgEJa2V5Q29tbWl0AQdhZGRyZXNzCQCsAgICD2ZpbmlzaEJsb2NrRm9yXwUHYWRkcmVzcwERa2V5UmVzUHJvcG9ydGlvbnMAAhNyZXNUeXBlc1Byb3BvcnRpb25zARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQljb250aW5lbnQJAKwCAgIUcmVzVHlwZXNCeUNvbnRpbmVudF8FCWNvbnRpbmVudAEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQlvd25lckFkZHIJAKwCAgITc3Rha2VkTGFuZHNCeU93bmVyXwUJb3duZXJBZGRyARZrZXlTdGFrZWRQaWVjZXNCeU93bmVyAQlvd25lckFkZHIJAKwCAgIUc3Rha2VkUGllY2VzQnlPd25lcl8FCW93bmVyQWRkcgEIYXNTdHJpbmcBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQIYZmFpbCB0byBjYXN0IGludG8gU3RyaW5nAQVhc0ludAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgNJbnQEAW4FByRtYXRjaDAFAW4JAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBCWFzQW55TGlzdAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAglMaXN0W0FueV0EAWwFByRtYXRjaDAFAWwJAAIBAhtmYWlsIHRvIGNhc3QgaW50byBMaXN0W0FueV0BCWFzQm9vbGVhbgEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAFzBQckbWF0Y2gwBQFzCQACAQIZZmFpbCB0byBjYXN0IGludG8gQm9vbGVhbgEPbnVtUGllY2VzQnlTaXplAQhsYW5kU2l6ZQQHJG1hdGNoMAUIbGFuZFNpemUDCQAAAgIBUwUHJG1hdGNoMAUFU1NJWkUDCQAAAgIBTQUHJG1hdGNoMAUFTVNJWkUDCQAAAgIBTAUHJG1hdGNoMAUFTFNJWkUDCQAAAgICWEwFByRtYXRjaDAFBlhMU0laRQMJAAACAgNYWEwFByRtYXRjaDAFB1hYTFNJWkUJAAIBAhFVbmtub3duIGxhbmQgc2l6ZQEHaXNEaWdpdAEBcwkBCWlzRGVmaW5lZAEJALYJAQUBcwEKa2V5QmxvY2tlZAACEGNvbnRyYWN0c0Jsb2NrZWQBEWtleUxhc3RUeElkQnlVc2VyAQRhZGRyCQCsAgICD2xhc3RUeElkQnlVc2VyXwUEYWRkcgEKZml4ZWRQb2ludAIDdmFsCGRlY2ltYWxzBAZ0ZW5Qb3cJAGwGAAoAAAUIZGVjaW1hbHMAAAAABQRET1dOBAdsb3dQYXJ0CQCkAwEJAGoCBQN2YWwFBnRlblBvdwQGemVyb2VzCQCwAgIJAKQDAQUGdGVuUG93CQBkAgABCQCxAgEFB2xvd1BhcnQJAKwCAgkArAICCQCsAgIJAKQDAQkAaQIFA3ZhbAUGdGVuUG93AgEuBQZ6ZXJvZXMFB2xvd1BhcnQBD2dldFJhbmRvbU51bWJlcgMIbWF4VmFsdWUEc2FsdAdlbnRyb3B5AwkAZwIAAAUIbWF4VmFsdWUJAAIBAhZtYXhWYWx1ZSBzaG91bGQgYmUgPiAwBApyYW5kb21IYXNoCQD3AwEJAMsBAgUEc2FsdAUHZW50cm9weQkAagIJALEJAQUKcmFuZG9tSGFzaAUIbWF4VmFsdWUBCWZpbmFsVGltZQAJAJcDAQkAzAgCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCBRRPTERfU1RBS0lOR19ERUFETElORQUDbmlsAApMQU5EUFJFRklYAgRMQU5EAApEVUNLUFJFRklYAgREVUNLAAtST0JPX1BSRUZJWAIEUk9CTwAKQVJUUFJFU0FMRQIHUFJFU0FMRQAGTlVNUkVTAAYAGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgAZAA9EQUlMWVJFU0JZUElFQ0UAgPjSAQAMV0hNVUxUSVBMSUVSAIDIr6AlAA9ERUZBVUxUTE9DQVRJT04CD0FmcmljYV9GX0FmcmljYQAQUkVTT1VSQ0VQUklDRU1JTgDVtQIACkVTU0VMTENPRUYACgAVTUlOX1VTRFRfRkVFX0RFTElWRVJZANCGAwAVVVNEVDJBQ1JFU19NVUxUSVBMSUVSAAoAEk1JTl9XTEdPTERfUk9CQkVSWQCAwtcvABZBTExPV0VEX0ZSRUVfUk9CQkVSSUVTAAAAGUFDUkVTX0ZPUl9ST0JCRVJZX0FUVEVNUFQAgISvXwAXQUxMT1dFRF9GUkVFX0RFTElWRVJJRVMAAAAaQUNSRVNfRk9SX0RFTElWRVJZX0FUVEVNUFQAgISvXwAJcHJvZFR5cGVzCQDMCAICEEZpcnN0IEFpZCBLaXQgTDEJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMgkAzAgCAhBGaXJzdCBBaWQgS2l0IEwzCQDMCAICC0JhY2twYWNrIEwxCQDMCAICC0JhY2twYWNrIEwyCQDMCAICC0JhY2twYWNrIEwzCQDMCAICDkZvb2QgUmF0aW9uIEwxCQDMCAICDkZvb2QgUmF0aW9uIEwyCQDMCAICDkZvb2QgUmF0aW9uIEwzCQDMCAICC0pldCBQYWNrIEwxCQDMCAICC0pldCBQYWNrIEwyCQDMCAICC0pldCBQYWNrIEwzCQDMCAICCVNoaWVsZCBMMQkAzAgCAglTaGllbGQgTDIJAMwIAgIJU2hpZWxkIEwzCQDMCAICB01pbmUgTDEJAMwIAgIHTWluZSBMMgkAzAgCAgdNaW5lIEwzCQDMCAICB1RyYXAgTDEJAMwIAgIHVHJhcCBMMgkAzAgCAgdUcmFwIEwzCQDMCAICC0Jvb20tRG9nIEwxCQDMCAICC0Jvb20tRG9nIEwyCQDMCAICC0Jvb20tRG9nIEwzBQNuaWwACmNvbnRpbmVudHMJAMwIAgIIQW1lcmljYXMJAMwIAgIGRXVyb3BlCQDMCAICBEFzaWEJAMwIAgIGQWZyaWNhCQDMCAICB09jZWFuaWEFA25pbAAJQ09FRkYyTUFUAICt4gQAEHByb2R1Y3Rpb25NYXRyaXgJAMwIAgIlOF84XzhfMTdfMTdfNDJfMTJfMF8zMF8wLDAsMCwwLDAsMCwwXwkAzAgCAiU4XzhfOF8xN18xN180Ml8yNF8wXzYwXzAsMCw1LDIsMCwwLDBfCQDMCAICJzhfOF84XzE3XzE3XzQyXzM2XzBfMTIwXzAsMCwxMCw0LDAsMCwwXwkAzAgCAik4XzE5XzE5XzhfMjdfMTlfMjZfMV8yMF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNTJfMV80MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNzhfMV84MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAiU4XzhfOF84XzhfNjBfMTNfMl8yXzAsMCwwLDAsMCwwLDBfMDExCQDMCAICJThfOF84XzhfOF82MF8yNl8yXzRfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIlOF84XzhfOF84XzYwXzM5XzJfOF8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfMzBfM18zMF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfNjBfM181MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfOTBfM183MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8xMV80XzEwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzIyXzRfMjBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMzNfNF8zMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAio0XzEzXzIyXzRfMzVfMjJfMjNfMF81MCwxLDBfMCwwLDAsMCwwLDAsMF8JAMwIAgIqNF8xM18yMl80XzM1XzIyXzQ2XzBfNTAsMSwxXzAsMiw1LDAsMCwwLDBfCQDMCAICKzRfMTNfMjJfNF8zNV8yMl82OV8wXzUwLDIsMV8wLDUsMTAsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzIwXzFfMzAsMSwxXzAsMCwwLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV80MF8xXzMwLDEsMl8yLDEsMywwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfNjBfMV8zMCwxLDNfNSwyLDgsMCwwLDAsMF8JAMwIAgInMjNfMjNfNV8yMF8yM182XzM1XzJfMTAwXzAsMCwwLDAsMCwwLDBfCQDMCAICJzIzXzIzXzVfMjBfMjNfNl83MF8yXzE1MF8wLDAsMCwwLDAsMCwwXwkAzAgCAigyM18yM181XzIwXzIzXzZfMTA1XzJfMjAwXzAsMCwwLDAsMCwwLDBfBQNuaWwACXJJZHhDb2VmZgAGAApySWR4RWZmZWN0AAgAEHJJZHhSZXF1aXJlbWVudHMACQAJcklkeFNsb3RzAAoADlBST0RVQ1RQS0dTSVpFAAoAC3doSWR4TGV2ZWxzAAAACHdoSWR4UmVzAAEACHdoSWR4TWF0AAIACXdoSWR4UHJvZAADAAl3aElkeExPRlQABAAJdm9sTG9ja2VkAAAAC3ZvbE9jY3VwaWVkAAEAB3ZvbEZyZWUAAgAIdm9sVG90YWwAAwAKYnBJZHhMZXZlbAAAAAhicElkeFJlcwABAAhicElkeE1hdAACAAlicElkeFByb2QAAwAPbG9jSWR4Q29udGluZW50AAAACmxvY0lkeFR5cGUAAQAIbG9jSWR4SWQAAgEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQdhc3NldElkCQCsAgICA25vXwUHYXNzZXRJZAEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIFbGNuYV8FB2Fzc2V0SWQBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBB2Fzc2V0SWQJAKwCAgIDc3RfBQdhc3NldElkASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIEdHlwZQdhc3NldElkCQC5CQIJAMwIAgIDbGFzCQDMCAIFBHR5cGUJAMwIAgUHYXNzZXRJZAUDbmlsAgFfASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwduZnRUeXBlB2Fzc2V0SWQJb3duZXJBZGRyCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIGc3R0YW9fBQduZnRUeXBlAgFfBQdhc3NldElkAgFfBQlvd25lckFkZHIBEmtleVdhcmVob3VzZUJ5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIDd2hfBQtsYW5kQXNzZXRJZAEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAgtpbmZyYUxldmVsXwUHYXNzZXRJZAEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIYZHVja0N1c3RvbU5hbWVCeUFzc2V0SWRfBQdhc3NldElkARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQRhZGRyCQCsAgICGGFjY291bnRDdXN0b21OYW1lQnlBZGRyXwUEYWRkcgEPa2V5QWRkcmVzc1JlZkJ5AQRhZGRyCQCsAgICCWFjY1JlZkJ5XwUEYWRkcgEca2V5T25ib2FyZEFydEFjdGl2YXRlZE9uRHVjawELZHVja0Fzc2V0SWQJAKwCAgIab25ib2FyZEFydEFjdGl2YXRlZE9uRHVja18FC2R1Y2tBc3NldElkARxrZXlPbmJvYXJkQXJ0RHVja0FjdGl2YXRlZEJ5AQRhZGRyCQCsAgICGm9uYm9hcmRBcnRBY3RpdmF0ZWREdWNrQnlfBQRhZGRyARNrZXlBZGRyZXNzUmVmZXJyYWxzAQRhZGRyCQCsAgICDWFjY1JlZmVycmFsc18FBGFkZHIBEGtleUR1Y2tJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIKZHVja093bmVyXwUHYXNzZXRJZAEUa2V5U3Rha2VkRHVja0J5T3duZXIBCW93bmVyQWRkcgkArAICAhJzdGFrZWREdWNrQnlPd25lcl8FCW93bmVyQWRkcgERa2V5QmFja3BhY2tCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICCWJhY2tQYWNrXwULZHVja0Fzc2V0SWQBD2tleUR1Y2tMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgINZHVja0xvY2F0aW9uXwULZHVja0Fzc2V0SWQBFWtleVVzZXJHd2xSZWxlYXNlVGltZQEIdXNlckFkZHIJAKwCAgIaJXMlc19fdXNlckd3bFJlbGVhc2VUaW1lX18FCHVzZXJBZGRyAQ5rZXlFc1dhcmVob3VzZQACGmVtZXJnZW5jeVdhcmVob3VzZVByb2R1Y3RzAA9kZWxpdmVyeUZ1bmRLZXkCDGRlbGl2ZXJ5RnVuZAANbGFzdFRvdXJJZEtleQIOJXNfX2xhc3RUb3VySWQBFWtleVRvdXJTdGF0aWNEYXRhQnlJZAEDdElkCQCsAgICFiVzJWRfX3RvdXJTdGF0aWNEYXRhX18JAKQDAQUDdElkARZrZXlUb3VyRHluYW1pY0RhdGFCeUlkAQN0SWQJAKwCAgIXJXMlZF9fdG91ckR5bmFtaWNEYXRhX18JAKQDAQUDdElkARprZXlCZXN0UmVzdWx0QnlUb3VyQW5kRHVjawIDdElkC2R1Y2tBc3NldElkCQC5CQIJAMwIAgIfJXMlZCVzX19iZXN0UmVzdWx0QnlUb3VyQW5kRHVjawkAzAgCCQCkAwEFA3RJZAkAzAgCBQtkdWNrQXNzZXRJZAUDbmlsAgJfXwAJaWR4U3RhdGljAAAACmlkeER5bmFtaWMAAQAKdFN0YXRpY0VuZAAGAA50RHluYW1pY1N0YXR1cwABAQtnZXRUb3VyRGF0YQIMdG91ckNvbnRyYWN0A3RJZAQGc3RhdGljCQC1CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQx0b3VyQ29udHJhY3QJARVrZXlUb3VyU3RhdGljRGF0YUJ5SWQBBQN0SWQJAKwCAgkArAICAhlFcnJvciByZWFkaW5nIHRvdXJuYW1lbnQgCQCkAwEFA3RJZAIFIGRhdGECAl9fBAdkeW5hbWljCQC8CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQx0b3VyQ29udHJhY3QJARZrZXlUb3VyRHluYW1pY0RhdGFCeUlkAQUDdElkCQCsAgIJAKwCAgIZRXJyb3IgcmVhZGluZyB0b3VybmFtZW50IAkApAMBBQN0SWQCBSBkYXRhAgJfXwkAzAgCBQZzdGF0aWMJAMwIAgUHZHluYW1pYwUDbmlsAQ5pc0luVG91cm5hbWVudAIMdG91ckNvbnRyYWN0CGxvY2F0aW9uBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUMdG91ckNvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFDHRvdXJDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwMDAwkAAAIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFUCQAAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUPbG9jSWR4Q29udGluZW50BQZsYXN0SWQHCQAAAgkAkQMCBQdkeW5hbWljBQ50RHluYW1pY1N0YXR1cwIKSU5QUk9HUkVTUwcJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBQp0U3RhdGljRW5kBQNub3cHAQlvbk1pc3Npb24CDHRvdXJDb250cmFjdAhsb2NhdGlvbgQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFDHRvdXJDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABANsb2MJALUJAgUIbG9jYXRpb24CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBXREYXRhCQELZ2V0VG91ckRhdGECBQx0b3VyQ29udHJhY3QFBmxhc3RJZAQGc3RhdGljCQCRAwIFBXREYXRhBQlpZHhTdGF0aWMEB2R5bmFtaWMJAJEDAgUFdERhdGEFCmlkeER5bmFtaWMEB2xvY1R5cGUJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAwMDCQAAAgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAVQJAAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAcJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcBEmdldFJlY2lwZU1hdGVyaWFscwEGcmVjaXBlCQBoAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnJlY2lwZQUJcklkeENvZWZmBQlDT0VGRjJNQVQBDGNoZWF0QXR0ZW1wdAMGb2xkTG9jBm5ld0xvYwljaGVhdENhc2UJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIWQ2hlYXQgYXR0ZW1wdDogb2xkTG9jPQUGb2xkTG9jAgksIG5ld0xvYz0FBm5ld0xvYwIHLCBjYXNlPQkApAMBBQljaGVhdENhc2UABlNDQUxFOACAwtcvAAx4cExldmVsU2NhbGUAgBkAD3hwTGV2ZWxSZWNpcFBvdwCgHwASbnVtUG9pbnRzT25MZXZlbFVwAAMADHJlcXVpcmVtZW50cwkAzAgCAghTdHJlbmd0aAkAzAgCAghBY2N1cmFjeQkAzAgCAglJbnRlbGxlY3QJAMwIAgIJRW5kdXJhbmNlCQDMCAICCURleHRlcml0eQkAzAgCAgVMZXZlbAkAzAgCAgZIZWFsdGgFA25pbAAMY2hhclN0cmVuZ3RoAAAADGNoYXJBY2N1cmFjeQABAA1jaGFySW50ZWxsZWN0AAIADWNoYXJFbmR1cmFuY2UAAwANY2hhckRleHRlcml0eQAEAAtzZWdCYWNrcGFjawAAAAtOVU1TRUdNRU5UUwAGAApOVU1NQUlOQVVYAAIACE1BWFNMT1RTAAIADU1BWFBST0RJTlNMT1QAHgENa2V5RHVja0hlYWx0aAELZHVja0Fzc2V0SWQJAKwCAgILZHVja0hlYWx0aF8FC2R1Y2tBc3NldElkAQxrZXlEdWNrQ2hhcnMBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tDaGFyc18FC2R1Y2tBc3NldElkAQlrZXlEdWNrWFABC2R1Y2tBc3NldElkCQCsAgICB2R1Y2tYUF8FC2R1Y2tBc3NldElkAQxrZXlEdWNrTGV2ZWwBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tMZXZlbF8FC2R1Y2tBc3NldElkARFrZXlEdWNrRnJlZVBvaW50cwELZHVja0Fzc2V0SWQJAKwCAgIPZHVja0ZyZWVQb2ludHNfBQtkdWNrQXNzZXRJZAEQa2V5RHVja0VxdWlwbWVudAELZHVja0Fzc2V0SWQJAKwCAgIOZHVja0VxdWlwbWVudF8FC2R1Y2tBc3NldElkAQlrZXlVc2VyWFABBGFkZHIJAKwCAgIHdXNlclhQXwUEYWRkcgEMa2V5VXNlckxldmVsAQRhZGRyCQCsAgICCnVzZXJMZXZlbF8FBGFkZHIBEWtleVVzZXJGcmVlUG9pbnRzAQRhZGRyCQCsAgICD3VzZXJGcmVlUG9pbnRzXwUEYWRkcgEOa2V5U2F2ZWRIZWFsdGgBC2R1Y2tBc3NldElkCQCsAgICDHNhdmVkSGVhbHRoXwULZHVja0Fzc2V0SWQBEGtleVNhdmVkTG9jYXRpb24BC2R1Y2tBc3NldElkCQCsAgICDnNhdmVkTG9jYXRpb25fBQtkdWNrQXNzZXRJZAEMa2V5RHVja0J1ZmZzAQtkdWNrQXNzZXRJZAkArAICAgpkdWNrQnVmZnNfBQtkdWNrQXNzZXRJZAEYa2V5TGFzdFJvYmJlcnlUaW1lQnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAhBsYXN0Um9iYmVyeVRpbWVfBQtkdWNrQXNzZXRJZAETa2V5RHVja1JvYmJlcnlDb3VudAELZHVja0Fzc2V0SWQJAKwCAgIYdG90YWxSb2JiZXJ5Q291bnRCeUR1Y2tfBQtkdWNrQXNzZXRJZAETa2V5VXNlclJvYmJlcnlDb3VudAEEYWRkcgkArAICAhF1c2VyUm9iYmVyeUNvdW50XwUEYWRkcgEVa2V5VXNlckxhc3RSb2JiZXJ5RGF5AQRhZGRyCQCsAgICE3VzZXJMYXN0Um9iYmVyeURheV8FBGFkZHIBFGtleUR1Y2tEZWxpdmVyeUNvdW50AQtkdWNrQXNzZXRJZAkArAICAhl0b3RhbERlbGl2ZXJ5Q291bnRCeUR1Y2tfBQtkdWNrQXNzZXRJZAEUa2V5VXNlckRlbGl2ZXJ5Q291bnQBBGFkZHIJAKwCAgISdXNlckRlbGl2ZXJ5Q291bnRfBQRhZGRyARZrZXlVc2VyTGFzdERlbGl2ZXJ5RGF5AQRhZGRyCQCsAgICFHVzZXJMYXN0RGVsaXZlcnlEYXlfBQRhZGRyAAd4cENsYWltAJBOAA94cFN1Y2Nlc3NGbGlnaHQAkE4ADHhwRmFpbEZsaWdodADQDwAMeHBTdWNjZXNzUm9iAJBOAAl4cEZhaWxSb2IA0A8ACHhwQ2FsbEVTAKCNBgAMeHBDdXN0b21OYW1lAMCEPQAKeHBOZXdTTGFuZADAlrECAA54cFVwZ3JhZGVJbmZyYQCQTgAHeHBNZXJnZQDAhD0ACXhwT25ib2FyZADAhD0ABnhwSGVhbACQTgEJbGV2ZWxCeVhQAQJ4cAkAawMFDHhwTGV2ZWxTY2FsZQkAbAYFAnhwAAQFD3hwTGV2ZWxSZWNpcFBvdwAEAAQFBERPV04FBlNDQUxFOAEJbWF4SGVhbHRoAQVsZXZlbAkAZAIAZAUFbGV2ZWwBB2xldmVsVXACCWN1cnJMZXZlbAVuZXdYUAQIbmV3TGV2ZWwJAQlsZXZlbEJ5WFABBQVuZXdYUAkAzAgCBQhuZXdMZXZlbAkAzAgCCQBoAgUSbnVtUG9pbnRzT25MZXZlbFVwCQBlAgUIbmV3TGV2ZWwFCWN1cnJMZXZlbAUDbmlsAQxnZXREdWNrU3RhdHMED3N0YWtpbmdDb250cmFjdAtkdWNrQXNzZXRJZApidWZmRWZmZWN0CmZvcmNlQnVmZnMEBWNoYXJzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0NoYXJzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAIBXwQDbHZsCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAEBmhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQJAQltYXhIZWFsdGgBBQNsdmwECnN0YXRlQnVmZnMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wAgFfCQDOCAIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyU3RyZW5ndGgJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyQWNjdXJhY3kJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFySW50ZWxsZWN0CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckVuZHVyYW5jZQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJEZXh0ZXJpdHkJAMwIAgUDbHZsCQDMCAIFBmhlYWx0aAUDbmlsAwUKZm9yY2VCdWZmcwkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QFA25pbAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUMY2hhclN0cmVuZ3RoCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQxjaGFyQWNjdXJhY3kJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJJbnRlbGxlY3QJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJFbmR1cmFuY2UJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJEZXh0ZXJpdHkFA25pbAAJREFZTUlMTElTAIC4mSkBFGtleUxhc3RBcmJUaW1lQnlVc2VyAQRhZGRyCQCsAgICEGxhc3RBcmJUaW1lVXNlcl8FBGFkZHIBGmtleUFjcmVzU3Rha2VkQW1vdW50QnlVc2VyAQRhZGRyCQCsAgICGGFjcmVzU3Rha2VkQW1vdW50QnlVc2VyXwUEYWRkcgANaW5jdWJhdG9yQWRkcgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BFa3RWdXgyUmhjaFNONjNEc0RvNGI0bXo0UXF6S1NlRHYDCQAAAgEBVAUHJG1hdGNoMAUEdGhpcwkAAgECDVVua25vd24gY2hhaW4AC2JyZWVkZXJBZGRyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUERWdVU0NUg3RWg1ZG10TmJuUk5SU3RHd1VMQTdOWTZIYgMJAAACAQFUBQckbWF0Y2gwBQR0aGlzCQACAQINVW5rbm93biBjaGFpbgARRklWRU1JTlVURVNNSUxMSVMA4KcSAAxSRU5BTUlOR0NPU1QAwJaxAgAKTUFYTkFNRUxFTgAyABVJbmZyYVVwZ3JhZGVDb3N0U1VzZHQAgK3iBAAMRVhQTUFURVJJQUxTBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAKbdgu2rBwMJAAACAQFUBQckbWF0Y2gwAKqngbMJCQACAQINVW5rbm93biBjaGFpbgAHRVhQVVNEVAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACA5Zp3AwkAAAIBAVQFByRtYXRjaDAAgOWadwkAAgECDVVua25vd24gY2hhaW4ADlJPQk9fRFVDS19VU0RUAKCNBgAMU19DT1NUX0FDUkVTAIDyi6gJAAVGSVZFWAkAtgIBAAUAB1RXRU5UWVgJALYCAQAUAAhUV0VOVFkyWAkAtgIBCQBoAgAUABQACFRXRU5UWTNYCQC2AgEJAGgCCQBoAgAUABQAFAAIVFdFTlRZNFgJALYCAQkAaAIJAGgCCQBoAgAUABQAFAAUAAhUV0VOVFk1WAkAtgIBCQBoAgkAaAIJAGgCCQBoAgAUABQAFAAUABQAD1BSRVNBTEVOVU1MQU5EUwD0AwESa2V5TmV4dEZyZWVMYW5kTnVtAAILbmV4dExhbmROdW0BGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQRuYW1lCQCsAgICBGxjbl8FBG5hbWUBEGtleUxhbmRUb0Fzc2V0SWQBB2xhbmROdW0JAKwCAgIDbGFfBQdsYW5kTnVtAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICB2Fzc2V0SWQJb3duZXJBZGRyCQCsAgIJAKwCAgkArAICAgVpbGFvXwUHYXNzZXRJZAIBXwUJb3duZXJBZGRyARFrZXlMYW5kTnVtVG9Pd25lcgEHbGFuZE51bQkArAICAgNsb18FB2xhbmROdW0BGmtleUR1Y2tDdXN0b21OYW1lVG9Bc3NldElkAQRuYW1lCQCsAgICEWR1Y2tCeUN1c3RvbU5hbWVfBQRuYW1lARZrZXlDdXN0b21OYW1lVG9BZGRyZXNzAQRuYW1lCQCsAgICFGFjY291bnRCeUN1c3RvbU5hbWVfBQRuYW1lAQlrZXlPbGRpZXMAAgpvbGRpZXNMaXN0AQ9rZXlOZXh0Um9ib0R1Y2sAAgxuZXh0Um9ib0R1Y2sAC2NsYWltTW9kZVdoAAAADWNsYWltTW9kZUR1Y2sAAQATY2xhaW1Nb2RlV2hUaGVuRHVjawACAAhmbEhlYWx0aAAAAAtmbFRpbWVzdGFtcAAFAAdmbEJvbnVzAAYAC2ZsUHJvZHNVc2VkAAcACHJsSGVhbHRoAAAAC3JsUHJvZHNVc2VkAAEABnJsVHlwZQAAAAhybExhc3RUeAACAAtybFRpbWVzdGFtcAADAQduZnROYW1lAgdsYW5kTnVtCGxhbmRTaXplCQCsAgIJAKwCAgUKTEFORFBSRUZJWAUHbGFuZE51bQUIbGFuZFNpemUBCHRvVm9sdW1lAgZhbW91bnQHcGtnU2l6ZQQEcGtncwMJAGcCBQZhbW91bnQAAAkAaQIJAGUCCQBkAgUGYW1vdW50BQdwa2dTaXplAAEFB3BrZ1NpemUJAQEtAQkAaQIJAGUCCQBkAgkBAS0BBQZhbW91bnQFB3BrZ1NpemUAAQUHcGtnU2l6ZQkAaAIFBHBrZ3MFBU1VTFQ4ARNkaXN0cmlidXRlQnlXZWlnaHRzAgV0b3RhbAd3ZWlnaHRzBANzdW0JAGQCCQBkAgkAZAIJAGQCCQBkAgkAkQMCBQd3ZWlnaHRzAAAJAJEDAgUHd2VpZ2h0cwABCQCRAwIFB3dlaWdodHMAAgkAkQMCBQd3ZWlnaHRzAAMJAJEDAgUHd2VpZ2h0cwAECQCRAwIFB3dlaWdodHMABQMJAGcCAAAFA3N1bQkAAgECEFplcm8gd2VpZ2h0cyBzdW0EBW5vcm02CQBrAwUFdG90YWwFBU1VTFQ2BQNzdW0KAQpub3JtYWxpemVyAgNhY2MEZWxlbQkAzQgCBQNhY2MJAGsDBQRlbGVtBQVub3JtNgUFTVVMVDYKAAIkbAUHd2VpZ2h0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKbm9ybWFsaXplcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgESZ2V0TmVlZGVkTWF0ZXJpYWxzAQV0b3RhbAQFcHJvcHMJALUJAgkBBXZhbHVlAQkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgFfAwkBAiE9AgkAkAMBBQVwcm9wcwUGTlVNUkVTCQACAQIWV3JvbmcgcHJvcG9ydGlvbnMgZGF0YQQBcgkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAgkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAwkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMABAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMABQUDbmlsCQETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFBXRvdGFsBQFyARFzdWJ0cmFjdE1hdGVyaWFscwMMc2hvdWxkVXNlTWF0A2hhcwl0b3RhbE5lZWQEBG5lZWQJARJnZXROZWVkZWRNYXRlcmlhbHMBBQl0b3RhbE5lZWQKAQpzdWJ0cmFjdG9yAgNhY2MDaWR4BAZyZXN1bHQJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDaGFzBQNpZHgJAJEDAgUEbmVlZAUDaWR4AwkAZgIAAAUGcmVzdWx0CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICGE5vdCBlbm91Z2ggbWF0ZXJpYWwgaWR4PQkApAMBBQNpZHgCCywgeW91IGhhdmUgCQCRAwIFA2hhcwUDaWR4AgssIGJ1dCBuZWVkIAkApAMBCQCRAwIFBG5lZWQFA2lkeAkAzQgCBQNhY2MJAKQDAQUGcmVzdWx0AwUMc2hvdWxkVXNlTWF0CgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpzdWJ0cmFjdG9yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGBQNoYXMBEXN1YnRyYWN0RXF1aXBtZW50AgVvbGRFcQVwVXNlZAMJAAACBQVwVXNlZAIACQCVCgMFBW9sZEVxBwcKAQdzdWJVc2VkAgNhY2MGaWR4QW10BAVwYXJ0cwkAtQkCBQZpZHhBbXQCASwDCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAihJbmNvcnJlY3QgZm9ybWF0LCBzaG91bGQgYmUgaW5kZXgsYW1vdW50BANpZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAAAwMJAGYCAAAFA2lkeAYJAGcCBQNpZHgJAJADAQUQcHJvZHVjdGlvbk1hdHJpeAkAAgECE1Vua25vd24gcHJvZHVjdCBpZHgEA2FtdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEEB2VxUGFydHMJALUJAggFA2FjYwJfMQkArAICCQCRAwIFBXBhcnRzAAACAToDCQECIT0CCQCQAwEFB2VxUGFydHMAAgkAAgEJAKwCAgkArAICAg9Zb3UgZG9uJ3QgaGF2ZSAJAJEDAgUJcHJvZFR5cGVzBQNpZHgCCSBlcXVpcHBlZAQDdG1wCQCRAwIFB2VxUGFydHMAAQQGbnVtTGVuAwkBB2lzRGlnaXQBCQCvAgIJALACAgUDdG1wAAEAAQACAAEEBGN1cnIJAQ1wYXJzZUludFZhbHVlAQkArwICBQN0bXAFBm51bUxlbgQEdGFpbAkAsAICBQN0bXAFBm51bUxlbgQGbmV3QW10AwkAZwIFBGN1cnIFA2FtdAkAZQIFBGN1cnIFA2FtdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg1Zb3UgZXF1aXBwZWQgCQCkAwEFBGN1cnICBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQNpZHgCEywgYnV0IHRyaWVkIHRvIHVzZSAJAKQDAQUDYW10CQCVCgMJAKwCAgkArAICCQCsAgIJAKwCAgkAkQMCBQdlcVBhcnRzAAAJAJEDAgUFcGFydHMAAAIBOgkApAMBBQZuZXdBbXQFBHRhaWwDCAUDYWNjAl8yBgMDCQBnAgUDaWR4AAYJAGcCAAgFA2lkeAcJAAACBQZuZXdBbXQAAAcDCAUDYWNjAl8zBgMDCQBnAgUDaWR4AAMJAGcCAAUFA2lkeAcJAGYCBQNhbXQAAAcKAAIkbAkAtQkCBQVwVXNlZAIBXwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwUFb2xkRXEHBwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHc3ViVXNlZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgEOcHJvZFN0clRvQnl0ZXMBB3Byb2RTdHIEBXBMaXN0AwkAAAIFB3Byb2RTdHICAAUDbmlsCQC8CQIFB3Byb2RTdHICAV8KAQR0b0JWAgNhY2MGcmVjaXBlBAFqCQBpAgkAyAEBBQNhY2MACAQEY3VycgMJAGYCCQCQAwEFBXBMaXN0BQFqCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcExpc3QFAWoAAAkAywECBQNhY2MJAJoDAQUEY3VycgoAAiRsBRBwcm9kdWN0aW9uTWF0cml4CgACJHMJAJADAQUCJGwKAAUkYWNjMAEACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQR0b0JWAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA1MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIBDmJ5dGVzVG9Qcm9kU3RyAQJidgoBBmZyb21CVgIDYWNjBnJlY2lwZQQBagkAkAMBBQNhY2MEAWIJAMkBAgkAygECBQJidgkAaAIACAUBagAICQDNCAIFA2FjYwkApAMBCQCxCQEFAWIJALoJAgoAAiRsBRBwcm9kdWN0aW9uTWF0cml4CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQZmcm9tQlYCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDUwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgIBXwEVY2hlY2tTdGF0UmVxdWlyZW1lbnRzAglkdWNrU3RhdHMEcmVxcwoBBWNoZWNrAgNhY2MBagQEYnVmZgMJAGYCCQCQAwEFCWR1Y2tTdGF0cwkAZAIABwUBagkAkQMCBQlkdWNrU3RhdHMJAGQCAAcFAWoAAAMJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEcmVxcwUBagkAZAIJAJEDAgUJZHVja1N0YXRzBQFqBQRidWZmCQACAQkArAICAhtSZXF1aXJlbWVudCBub3Qgc2F0aXNmaWVkOiAJAJEDAgUMcmVxdWlyZW1lbnRzBQFqBgoAAiRsCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgUDbmlsCgACJHMJAJADAQUCJGwKAAUkYWNjMAcKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWNoZWNrAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA3CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcBCGFkZFByb2RCBwZpZHhDbnQFcExpc3QKaXNQb3NpdGl2ZQdzZWdtZW50B21haW5BdXgEc2xvdAlkdWNrU3RhdHMEBXBhcnRzCQC1CQIFBmlkeENudAIBOgMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKEluY29ycmVjdCBmb3JtYXQsIHNob3VsZCBiZSBpbmRleDphbW91bnQDAwkBASEBBQppc1Bvc2l0aXZlCQECIT0CCQCxAgEJAJEDAgUFcGFydHMAAAACBwkAAgECK1Byb2R1Y3QgaWR4IHNob3VsZCBiZSAyIGRpZ2l0cywgemVybyBwYWRkZWQECnByb2R1Y3RJZHgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAABAVjb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEDAwkAZgIAAAUKcHJvZHVjdElkeAYJAGcCBQpwcm9kdWN0SWR4CQCQAwEFEHByb2R1Y3Rpb25NYXRyaXgJAAIBAhNVbmtub3duIHByb2R1Y3QgaWR4AwkAZgIAAAUFY291bnQJAAIBAhdDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZQMJAGYCBQVjb3VudAUNTUFYUFJPRElOU0xPVAkAAgEJAKwCAgkArAICCQCsAgICFENhbid0IHB1dCBtb3JlIHRoYW4gCQCkAwEFDU1BWFBST0RJTlNMT1QCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQpwcm9kdWN0SWR4AwkAAAIFBWNvdW50AAAJAJQKAgUFcExpc3QHBARoZWFkCQDJAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4BARjdXJyCQCxCQEJAMkBAgkAygECBQVwTGlzdAkAaAIACAUKcHJvZHVjdElkeAAIBAR0YWlsCQDKAQIFBXBMaXN0CQBoAgAICQBkAgUKcHJvZHVjdElkeAABBAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4BQpwcm9kdWN0SWR4AgFfAwMJAQEhAQUKaXNQb3NpdGl2ZQkAZgIFBWNvdW50BQRjdXJyBwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglZb3UgaGF2ZSAJAKQDAQUEY3VycgIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgCEywgYnV0IHRyaWVkIHRvIHVzZSAJAKQDAQUFY291bnQECWlzQmlnSXRlbQMDCQEBIQEFCmlzUG9zaXRpdmUJARVjaGVja1N0YXRSZXF1aXJlbWVudHMCBQlkdWNrU3RhdHMJALUJAgkAkQMCBQZyZWNpcGUFEHJJZHhSZXF1aXJlbWVudHMCASwHBAZjb21wYXQJAJEDAgUGcmVjaXBlBQlySWR4U2xvdHMDCQAAAgUGY29tcGF0AgAJAAIBAhdJdGVtIGNhbm5vdCBiZSBlcXVpcHBlZAQBYwkBDXBhcnNlSW50VmFsdWUBBQZjb21wYXQEBGNTZWcJAGkCBQFjAGQDCQECIT0CBQdzZWdtZW50BQRjU2VnCQACAQIUU2VnbWVudCBpbmNvbXBhdGlibGUECGNNYWluQXV4CQBpAgkAagIFAWMAZAAKAwkBAiE9AgUHbWFpbkF1eAUIY01haW5BdXgJAAIBAhFTbG90IGluY29tcGF0aWJsZQQJY051bVNsb3RzCQBqAgUBYwAKAwMJAQIhPQIFBHNsb3QAAAkAZgIFCWNOdW1TbG90cwABBwkAAgECHkJpZyBpdGVtcyBzaG91bGQgb2NjdXB5IHNsb3QgMAkAZgIFCWNOdW1TbG90cwABBwkAlAoCCQDLAQIJAMsBAgUEaGVhZAkAmgMBCQBkAgUEY3VycgMFCmlzUG9zaXRpdmUFBWNvdW50CQEBLQEFBWNvdW50BQR0YWlsBQlpc0JpZ0l0ZW0BC3Nsb3RzR3JvdXBCBgFnBGJwSW4KaXNQb3NpdGl2ZQdzZWdtZW50B21haW5BdXgFc3RhdHMDCQECIT0CBQFnAgAEBXNsb3RzCQC1CQIFAWcCASwDCQBmAgkAkAMBBQVzbG90cwUITUFYU0xPVFMJAAIBAhJXcm9uZyBzbG90cyBmb3JtYXQEAnMwCQCRAwIFBXNsb3RzAAAEAnMxAwkAZgIJAJADAQUFc2xvdHMAAQkAkQMCBQVzbG90cwABAgADAwkAAAIFAnMwAgAJAAACBQJzMQIABwUEYnBJbgQFdG1wUzADCQECIT0CBQJzMAIACQEIYWRkUHJvZEIHBQJzMAUEYnBJbgUKaXNQb3NpdGl2ZQUHc2VnbWVudAUHbWFpbkF1eAAABQVzdGF0cwkAlAoCBQRicEluBwMJAQIhPQIFAnMxAgADCAUFdG1wUzACXzIJAAIBAh5CaWcgaXRlbSBhbHJlYWR5IG9jY3VwaWVzIHNsb3QICQEIYWRkUHJvZEIHBQJzMQgFBXRtcFMwAl8xBQppc1Bvc2l0aXZlBQdzZWdtZW50BQdtYWluQXV4AAEFBXN0YXRzAl8xCAUFdG1wUzACXzEFBGJwSW4BBmRyZXNzQgQHc2VnTGlzdAZwQnl0ZXMKaXNQb3NpdGl2ZQVzdGF0cwoBB3NlZ21lbnQCA2FjYwNzZWcEAWoIBQNhY2MCXzEEB21haW5BdXgJALUJAgUDc2VnAgE7AwkBAiE9AgkAkAMBBQdtYWluQXV4BQpOVU1NQUlOQVVYCQACAQIUV3Jvbmcgc2VnbWVudCBmb3JtYXQEAW0JAJEDAgUHbWFpbkF1eAAABAFhCQCRAwIFB21haW5BdXgAAQMDCQAAAgUBbQIACQAAAgUBYQIABwkAlAoCCQBkAgUBagABCAUDYWNjAl8yBAR0bXBNCQELc2xvdHNHcm91cEIGBQFtCAUDYWNjAl8yBQppc1Bvc2l0aXZlBQFqAAAFBXN0YXRzCQCUCgIJAGQCBQFqAAEJAQtzbG90c0dyb3VwQgYFAWEFBHRtcE0FCmlzUG9zaXRpdmUFAWoAAQUFc3RhdHMICgACJGwFB3NlZ0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAUGcEJ5dGVzCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzZWdtZW50AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAl8yARdjYW5XZWFyQ3VycmVudEVxdWlwbWVudAELZHVja0Fzc2V0SWQEBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAZjdXJyRXEJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywCAV8EDEVNUFRZX1BST0Q1MAGQAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECXRlbXBQcm9kQgkBBmRyZXNzQgQFBmN1cnJFcQUMRU1QVFlfUFJPRDUwBgUDbmlsBAhzZWdCcEF1eAkAkQMCCQC1CQIJAJEDAgUGY3VyckVxBQtzZWdCYWNrcGFjawIBOwABBApidWZmRWZmZWN0AwkAAAIFCHNlZ0JwQXV4AgAAAAQEYXV4MAkAkQMCCQC1CQIFCHNlZ0JwQXV4AgEsAAADCQAAAgUEYXV4MAIAAAAEBmlkeENudAkAtQkCBQRhdXgwAgE6BANpZHgJAJEDAgUGaWR4Q250AAAEA2NudAkAkQMCBQZpZHhDbnQAAQMDAwMDCQAAAgUDaWR4AgIwNgYJAAACBQNpZHgCAjA3BgkAAAIFA2lkeAICMDgJAQIhPQIFA2NudAIABwkAZgIJAQ1wYXJzZUludFZhbHVlAQUDY250AAAHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgJAQ1wYXJzZUludFZhbHVlAQUDaWR4AgFfBQpySWR4RWZmZWN0AAAEBXN0YXRzCQEMZ2V0RHVja1N0YXRzBAUEdGhpcwULZHVja0Fzc2V0SWQFCmJ1ZmZFZmZlY3QGBAhuZXdQcm9kQgkBBmRyZXNzQgQFBmN1cnJFcQUJdGVtcFByb2RCBwUFc3RhdHMJAAACBQhuZXdQcm9kQgUIbmV3UHJvZEIBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECHByb3BMaXN0DXRlcnJhaW5Db3VudHMNbGFuZFNpemVJbmRleARzaWduAwkBAiE9AgkAkAMBBQhwcm9wTGlzdAUGTlVNUkVTCQACAQIWV3JvbmcgcHJvcG9ydGlvbnMgZGF0YQoBB3VwZGF0ZXICA2FjYwFpBAZyZXN1bHQJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvcExpc3QFAWkJAGgCCQBoAgUEc2lnbgkAkQMCBQ10ZXJyYWluQ291bnRzBQFpBQ1sYW5kU2l6ZUluZGV4AwkAZgIAAAUGcmVzdWx0CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhZQYW5pYyEgUGllY2VzIG9mIHR5cGU9CQCkAwEFAWkCBywgc2lnbj0JAKQDAQUEc2lnbgITLCB0ZXJyYWluQ291bnRzW2ldPQkApAMBCQCRAwIFDXRlcnJhaW5Db3VudHMFAWkCECwgbGFuZFNpemVJbmRleD0JAKQDAQUNbGFuZFNpemVJbmRleAkAzQgCBQNhY2MJAKQDAQUGcmVzdWx0CgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQd1cGRhdGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGARF1cGRhdGVQcm9wb3J0aW9ucwMNdGVycmFpbkNvdW50cw1sYW5kU2l6ZUluZGV4BHNpZ24ECHByb3BMaXN0CQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBEWtleVJlc1Byb3BvcnRpb25zAAILMF8wXzBfMF8wXzACAV8JALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQhwcm9wTGlzdAUNdGVycmFpbkNvdW50cwUNbGFuZFNpemVJbmRleAUEc2lnbgIBXwENY291bnRUZXJyYWlucwEIdGVycmFpbnMJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBQQABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUIAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFDAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBRAABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUUAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFGAAEFA25pbAEGYWRkUmVzBQpjdXJyZW50UmVzDXRlcnJhaW5Db3VudHMJZGVsdGFUaW1lDWxhbmRTaXplSW5kZXgXZGFpbHlCeVBpZWNlV2l0aEJvbnVzZXMKAQVhZGRlcgIDYWNjAWkECXJlc09mVHlwZQkAaAIJAGgCCQBrAwUJZGVsdGFUaW1lBRdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwUJREFZTUlMTElTCQCRAwIFDXRlcnJhaW5Db3VudHMFAWkFDWxhbmRTaXplSW5kZXgJAM0IAgUDYWNjCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKY3VycmVudFJlcwUBaQUJcmVzT2ZUeXBlBAFyCgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQVhZGRlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAuQkCBQFyAgFfAQ92aXJ0Q2xhaW1BZGRSZXMFCmN1cnJlbnRSZXMNdGVycmFpbkNvdW50cwlkZWx0YVRpbWUNbGFuZFNpemVJbmRleBdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwoBBWFkZGVyAgNhY2MBaQQJcmVzT2ZUeXBlCQBoAgkAaAIJAGsDBQlkZWx0YVRpbWUFF2RhaWx5QnlQaWVjZVdpdGhCb251c2VzBQlEQVlNSUxMSVMJAJEDAgUNdGVycmFpbkNvdW50cwUBaQUNbGFuZFNpemVJbmRleAQMdG90YWxSZXNUeXBlCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmN1cnJlbnRSZXMFAWkFCXJlc09mVHlwZQkAlAoCCQDNCAIIBQNhY2MCXzEFDHRvdGFsUmVzVHlwZQkAZAIIBQNhY2MCXzIFDHRvdGFsUmVzVHlwZQoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWFkZGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAQl2aXJ0Q2xhaW0EDXRlcnJhaW5Db3VudHMJZGVsdGFUaW1lDWxhbmRTaXplSW5kZXgXZGFpbHlCeVBpZWNlV2l0aEJvbnVzZXMKAQVhZGRlcgIDYWNjDHRlcnJhaW5Db3VudAQJcmVzT2ZUeXBlCQBoAgkAaAIJAGsDBQlkZWx0YVRpbWUFF2RhaWx5QnlQaWVjZVdpdGhCb251c2VzBQlEQVlNSUxMSVMFDHRlcnJhaW5Db3VudAUNbGFuZFNpemVJbmRleAkAlAoCCQDNCAIIBQNhY2MCXzEFCXJlc09mVHlwZQkAZAIIBQNhY2MCXzIFCXJlc09mVHlwZQoAAiRsBQ10ZXJyYWluQ291bnRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQNuaWwAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEFYWRkZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBDWRpc3RyaWJ1dGVSZXMEDGN1cnJlbnRXaFJlcw5jdXJyZW50UGFja1JlcwpyZXNUb0NsYWltC3doU3BhY2VMZWZ0BA5yZXNMaXN0VG9DbGFpbQgFCnJlc1RvQ2xhaW0CXzEEDHJlc0FtVG9DbGFpbQgFCnJlc1RvQ2xhaW0CXzIDCQAAAgUMcmVzQW1Ub0NsYWltAAAJAJQKAgkAuQkCBQxjdXJyZW50V2hSZXMCAV8JALkJAgUOY3VycmVudFBhY2tSZXMCAV8DCQBnAgULd2hTcGFjZUxlZnQFDHJlc0FtVG9DbGFpbQoBCGFkZExpc3RzAgNhY2MBaQkAzQgCBQNhY2MJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQxjdXJyZW50V2hSZXMFAWkJAJEDAgUOcmVzTGlzdFRvQ2xhaW0FAWkEAXIKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGFkZExpc3RzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCQCUCgIJALkJAgUBcgIBXwkAuQkCBQ5jdXJyZW50UGFja1JlcwIBXwoBDGFkZFBhcnRMaXN0cwIDYWNjAWkEBndoUGFydAkAawMJAJEDAgUOcmVzTGlzdFRvQ2xhaW0FAWkFC3doU3BhY2VMZWZ0BQxyZXNBbVRvQ2xhaW0JAJQKAgkAzQgCCAUDYWNjAl8xCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUMY3VycmVudFdoUmVzBQFpBQZ3aFBhcnQJAM0IAggFA2FjYwJfMgkApAMBCQBlAgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5jdXJyZW50UGFja1JlcwUBaQkAkQMCBQ5yZXNMaXN0VG9DbGFpbQUBaQUGd2hQYXJ0BAFyCgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQNuaWwFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEMYWRkUGFydExpc3RzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCQCUCgIJALkJAggFAXICXzECAV8JALkJAggFAXICXzICAV8BA2FicwEBeAMJAMACAgUBeAkAtgIBAAAFAXgJAL4CAQUBeAAEZnJlcQkAzAgCCQDMCAIABgkAzAgCAAkJAMwIAgAOCQDMCAIADwkAzAgCABAFA25pbAkAzAgCCQDMCAIABQkAzAgCAAgJAMwIAgANCQDMCAIADgkAzAgCAA8FA25pbAkAzAgCCQDMCAIAAQkAzAgCAAQJAMwIAgAJCQDMCAIACgkAzAgCAA8FA25pbAkAzAgCCQDMCAIAAQkAzAgCAAYJAMwIAgAHCQDMCAIADwkAzAgCABMFA25pbAkAzAgCCQDMCAIABAkAzAgCAAcJAMwIAgAICQDMCAIADQkAzAgCABIFA25pbAUDbmlsAQdnZW5DaGFyAgFuBWZyZXFzBANyZW0JAKADAQkAuwICBQFuBQdUV0VOVFlYBAZsZXR0ZXIDCQBmAgkAkQMCBQVmcmVxcwAABQNyZW0CAUEDCQBmAgkAkQMCBQVmcmVxcwABBQNyZW0CAUIDCQBmAgkAkQMCBQVmcmVxcwACBQNyZW0CAUMDCQBmAgkAkQMCBQVmcmVxcwADBQNyZW0CAUQDCQBmAgkAkQMCBQVmcmVxcwAEBQNyZW0CAUUCAUYFBmxldHRlcgELZ2VuVGVycmFpbnMCBHNlZWQMY29udGluZW50SWR4BAFmCQCRAwIFBGZyZXEFDGNvbnRpbmVudElkeAoBEHRlcnJhaW5HZW5lcmF0b3ICA2FjYwRlbGVtCQCUCgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCAUDYWNjAl8xCQEHZ2VuQ2hhcgIIBQNhY2MCXzIFAWYJAQdnZW5DaGFyAgkAugICCAUDYWNjAl8yBQdUV0VOVFlYBQFmCQEHZ2VuQ2hhcgIJALoCAggFA2FjYwJfMgUIVFdFTlRZMlgFAWYJAQdnZW5DaGFyAgkAugICCAUDYWNjAl8yBQhUV0VOVFkzWAUBZgkBB2dlbkNoYXICCQC6AgIIBQNhY2MCXzIFCFRXRU5UWTRYBQFmCQC6AgIIBQNhY2MCXzIFCFRXRU5UWTVYBAF0CgACJGwJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQUDbmlsCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCAgAJALoCAgUEc2VlZAUFRklWRVgKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEHRlcnJhaW5HZW5lcmF0b3ICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFCAUBdAJfMQAGUEVSTTI1CQDMCAIABwkAzAgCAAIJAMwIAgAPCQDMCAIAEwkAzAgCAAgJAMwIAgAYCQDMCAIAAQkAzAgCABUJAMwIAgAQCQDMCAIABQkAzAgCAAAJAMwIAgAWCQDMCAIAFAkAzAgCABcJAMwIAgALCQDMCAIABAkAzAgCABIJAMwIAgAMCQDMCAIABgkAzAgCAAoJAMwIAgADCQDMCAIAEQkAzAgCAA0JAMwIAgAJCQDMCAIADgUDbmlsAAZUQ0hBUlMJAMwIAgIBQQkAzAgCAgFCCQDMCAICAUMJAMwIAgIBRAkAzAgCAgFFCQDMCAICAUYFA25pbAETZ2VuVGVycmFpbnNGb3JNZXJnZQILc3VtVGVycmFpbnMNbGFuZFNpemVJbmRleAoBBXN0ZXAxAgNhY2MBcwQBaggFA2FjYwJfMgQCZWwJAQ1wYXJzZUludFZhbHVlAQUBcwQBeAMJAAACBQJlbAAAAAADCQBnAgUCZWwJAGgCAAQFDWxhbmRTaXplSW5kZXgJAGkCBQJlbAUNbGFuZFNpemVJbmRleAMJAGYCBQJlbAkAaAIAAwUNbGFuZFNpemVJbmRleAADCQBkAgkAaQIJAGUCBQJlbAABBQ1sYW5kU2l6ZUluZGV4AAEJAJUKAwkAzQgCCAUDYWNjAl8xBQF4CQBkAggFA2FjYwJfMgABCQBkAggFA2FjYwJfMwUBeAQBdAoAAiRsBQtzdW1UZXJyYWlucwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwUDbmlsAAAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEFc3RlcDECBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYEA2FycggFAXQCXzEEBm1heElkeAkBBXZhbHVlAQkAzwgCBQNhcnIJAJYDAQUDYXJyBAVkZWx0YQkAZQIIBQF0Al8zABkKAQZzdWJiZXICA2FjYwNpZHgEA3ZhbAMJAAACBQNpZHgFBm1heElkeAkAZQIJAJEDAgUDYXJyBQNpZHgFBWRlbHRhCQCRAwIFA2FycgUDaWR4BAZ6ZXJvZXMDCQAAAgUDdmFsAAAFA25pbAkAtQkCCQCwAgIJAKQDAQkAbAYACgAABQN2YWwAAAAABQRET1dOAAECAAQBYwkAkQMCBQZUQ0hBUlMFA2lkeAoBB2xpc3RHZW4CAmFjB2lnbm9yZWQJAM0IAgUCYWMFAWMEAXoKAAIkbAUGemVyb2VzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYxXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdsaXN0R2VuAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAyNQkBBSRmMV8yAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZCQDOCAIFA2FjYwUBegQBcgoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEGc3ViYmVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYxXzICCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCgEGcGVybXV0AgNhY2MBagkArAICBQNhY2MJAJEDAgUBcgUBagoAAiRsBQZQRVJNMjUKAAIkcwkAkAMBBQIkbAoABSRhY2MwAgAKAQUkZjJfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBnBlcm11dAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMl8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjUJAQUkZjJfMgIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQELZ2V0QmFja3BhY2sBBWJwS2V5BAFwCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFYnBLZXkCGjA6MF8wXzBfMF8wXzA6MF8wXzBfMF8wXzA6AgE6CQDMCAIJAKQDAQkBC3ZhbHVlT3JFbHNlAgkAtgkBCQCRAwIFAXAFCmJwSWR4TGV2ZWwAAAkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAXAFCGJwSWR4UmVzAgFfBQZOVU1SRVMJAJEDAgUBcAUIYnBJZHhSZXMCCzBfMF8wXzBfMF8wCQDMCAIDCQAAAgkAkAMBCQC1CQIJAJEDAgUBcAUIYnBJZHhNYXQCAV8FBk5VTVJFUwkAkQMCBQFwBQhicElkeE1hdAILMF8wXzBfMF8wXzAJAMwIAgkAkQMCBQFwBQlicElkeFByb2QFA25pbAEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCXZvbFByZWZpeAQFcGFydHMJALUJAgUJdm9sUHJlZml4AgFfCQBoAgkAaAIFDFdITVVMVElQTElFUgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwABAAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAAARdnZXRXYXJlaG91c2VPY2N1cGllZFZvbAEJY3VycmVudFdoBAVnb29kcwkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAoBCXN1bVJlc01hdAIDYWNjBGl0ZW0JAGQCBQNhY2MJAQ1wYXJzZUludFZhbHVlAQUEaXRlbQoBB3N1bVByb2QCA2FjYwRpdGVtBANpZHgIBQNhY2MCXzEEBHBrZ3MJAGkCCQBlAgkAZAIJAQ1wYXJzZUludFZhbHVlAQUEaXRlbQUOUFJPRFVDVFBLR1NJWkUAAQUOUFJPRFVDVFBLR1NJWkUJAJQKAgkAZAIFA2lkeAABCQBkAggFA2FjYwJfMgkAaAIFBHBrZ3MFBU1VTFQ4BAh3aFJlc1ZvbAoAAiRsCQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwIBXwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJc3VtUmVzTWF0AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGBAh3aE1hdFZvbAoAAiRsCQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeE1hdAIBXwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJc3VtUmVzTWF0AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYxXzICCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECBQUkYWNjMAAAAAEAAgADAAQABQAGBAp3aEdvb2RzVm9sAwkAAAIFBWdvb2RzAgAAAAgKAAIkbAkAvAkCBQVnb29kcwIBXwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgAAAAAKAQUkZjJfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3N1bVByb2QCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjJfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDUwCQEFJGYyXzICCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgJfMgkAZAIJAGQCBQh3aFJlc1ZvbAUId2hNYXRWb2wFCndoR29vZHNWb2wBDGdldFdhcmVob3VzZQMFd2hLZXkJbGFuZEluZGV4CmluZnJhTGV2ZWwECXZvbFByZWZpeAkArAICCQCsAgIJAKQDAQUJbGFuZEluZGV4AgFfCQCkAwEFCmluZnJhTGV2ZWwEB3doVG90YWwJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEFCXZvbFByZWZpeAQFd2hTdHIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFd2hLZXkJAKwCAgUJdm9sUHJlZml4Ahs6MF8wXzBfMF8wXzA6MF8wXzBfMF8wXzA6OjAEAndoCQC8CQIFBXdoU3RyAgE6BAp3aE9jY3VwaWVkCQEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBBQJ3aAQGd2hMb2Z0AwkAZgIABQkAkAMBBQJ3aAkAuQkCCQDMCAICATAJAMwIAgkApAMBBQp3aE9jY3VwaWVkCQDMCAIJAKQDAQkAZQIFB3doVG90YWwFCndoT2NjdXBpZWQJAMwIAgkApAMBBQd3aFRvdGFsBQNuaWwCAV8EBGxvZnQJALUJAgkAkQMCBQJ3aAUJd2hJZHhMT0ZUAgFfBAh3aExvY2tlZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFCXZvbExvY2tlZAQDb2NjAwkAZgIJAJADAQUEbG9mdAABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQFCndoT2NjdXBpZWQJALkJAgkAzAgCCQCkAwEFCHdoTG9ja2VkCQDMCAIJAKQDAQUDb2NjCQDMCAIJAKQDAQkAZQIJAGUCBQd3aFRvdGFsBQh3aExvY2tlZAUDb2NjCQDMCAIJAKQDAQUHd2hUb3RhbAUDbmlsAgFfCQDMCAIJAJEDAgUCd2gFC3doSWR4TGV2ZWxzCQDMCAIDCQAAAgkAkAMBCQC1CQIJAJEDAgUCd2gFCHdoSWR4UmVzAgFfBQZOVU1SRVMJAJEDAgUCd2gFCHdoSWR4UmVzAgswXzBfMF8wXzBfMAkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAndoBQh3aElkeE1hdAIBXwUGTlVNUkVTCQCRAwIFAndoBQh3aElkeE1hdAILMF8wXzBfMF8wXzAJAMwIAgkAkQMCBQJ3aAUJd2hJZHhQcm9kCQDMCAIFBndoTG9mdAUDbmlsARVnZXRXYXJlaG91c2VTcGFjZUxlZnQBCWN1cnJlbnRXaAQLb2NjdXBpZWRWb2wJARdnZXRXYXJlaG91c2VPY2N1cGllZFZvbAEFCWN1cnJlbnRXaAQPY3VycldoTG9ja2VkVm9sCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBQl2b2xMb2NrZWQJAGUCCQBlAgkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzBQtvY2N1cGllZFZvbAUPY3VycldoTG9ja2VkVm9sAQltb3ZlU3R1ZmYDCmNhcmdvUGFydHMJY3VycmVudFdoC2N1cnJlbnRQYWNrAwkBAiE9AgkAkAMBBQpjYXJnb1BhcnRzAAMJAAIBAjRjYXJnb0xpc3RTdHIgc2hvdWxkIGNvbnRhaW4gZXhhY3RseSAyICc6JyBzZXBhcmF0b3JzBAhyZXNQYXJ0cwkAtQkCCQCRAwIFCmNhcmdvUGFydHMAAAIBXwQIbWF0UGFydHMJALUJAgkAkQMCBQpjYXJnb1BhcnRzAAECAV8ECXByb2RQYXJ0cwMJAAACCQCRAwIFCmNhcmdvUGFydHMAAgIABQNuaWwJALwJAgkAkQMCBQpjYXJnb1BhcnRzAAICAV8DCQECIT0CCQCQAwEFCHJlc1BhcnRzBQZOVU1SRVMJAAIBAiBBbGwgNiByZXNvdXJjZXMgc2hvdWxkIGJlIHBhc3NlZAMJAQIhPQIJAJADAQUIbWF0UGFydHMFBk5VTVJFUwkAAgECIEFsbCA2IG1hdGVyaWFscyBzaG91bGQgYmUgcGFzc2VkBAt3aFNwYWNlTGVmdAkBFWdldFdhcmVob3VzZVNwYWNlTGVmdAEFCWN1cnJlbnRXaAQJY3VycldoUmVzCQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwIBXwQJY3VycldoTWF0CQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeE1hdAIBXwQKY3VycldoUHJvZAMJAAACCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kAgFfBA5jdXJyZW50UGFja1JlcwkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwIBXwQOY3VycmVudFBhY2tNYXQJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8ED2N1cnJlbnRQYWNrUHJvZAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwoBA212UgIDYWNjBGl0ZW0EAWkIBQNhY2MCXzEEAmFtCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0EA3docgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWN1cnJXaFJlcwUBaQQDYnByCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOY3VycmVudFBhY2tSZXMFAWkDCQAAAgUCYW0AAAkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAJEDAgUJY3VycldoUmVzBQFpCQDNCAIIBQNhY2MCXzMJAJEDAgUOY3VycmVudFBhY2tSZXMFAWkIBQNhY2MCXzQDCQBmAgUCYW0AAAMJAGYCBQJhbQUDYnByCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgBQRpdGVtAhkgZnJvbSBiYWNrcGFjaywgYnV0IG9ubHkgCQCkAwEFA2JwcgIKIGF2YWlsYWJsZQkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFA3docgUCYW0JAM0IAggFA2FjYwJfMwkApAMBCQBlAgUDYnByBQJhbQkAZAIIBQNhY2MCXzQFAmFtAwkAZgIJAQEtAQUCYW0FA3docgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAkApAMBCQEBLQEFAmFtAhogZnJvbSB3YXJlaG91c2UsIGJ1dCBvbmx5IAkApAMBBQN3aHICCiBhdmFpbGFibGUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aHIFAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwcgUCYW0JAGQCCAUDYWNjAl80BQJhbQQBcgoAAiRsBQhyZXNQYXJ0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAAABQNuaWwFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQNtdlICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYKAQNtdk0CA2FjYwRpdGVtBAFpCAUDYWNjAl8xBAJhbQkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAN3aG0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQljdXJyV2hNYXQFAWkEA2JwbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmN1cnJlbnRQYWNrTWF0BQFpAwkAAAIFAmFtAAAJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCRAwIFCWN1cnJXaE1hdAUBaQkAzQgCCAUDYWNjAl8zCQCRAwIFDmN1cnJlbnRQYWNrTWF0BQFpCAUDYWNjAl80AwkAZgIFAmFtAAADCQBmAgUCYW0FA2JwbQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAUEaXRlbQIZIGZyb20gYmFja3BhY2ssIGJ1dCBvbmx5IAkApAMBBQNicG0CCiBhdmFpbGFibGUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aG0FAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwbQUCYW0JAGQCCAUDYWNjAl80BQJhbQMJAGYCCQEBLQEFAmFtBQN3aG0JAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAJAKQDAQkBAS0BBQJhbQIaIGZyb20gd2FyZWhvdXNlLCBidXQgb25seSAJAKQDAQUDd2htAgogYXZhaWxhYmxlCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2htBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicG0FAmFtCQBkAggFA2FjYwJfNAUCYW0EAW0KAAIkbAUIbWF0UGFydHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQAAAUDbmlsBQNuaWwIBQFyAl80CgEFJGYxXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQNtdk0CBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjFfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYKAQNtdlACA2FjYwRpdGVtBAFpCAUDYWNjAl8xBAJhbQkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAN3aHADCQBmAgkAkAMBBQpjdXJyV2hQcm9kBQFpCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKY3VycldoUHJvZAUBaQAABANicHADCQBmAgkAkAMBBQ9jdXJyZW50UGFja1Byb2QFAWkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ9jdXJyZW50UGFja1Byb2QFAWkAAAMJAAACBQJhbQAACQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBBQN3aHAJAM0IAggFA2FjYwJfMwkApAMBBQNicHAIBQNhY2MCXzQDCQBmAgUCYW0AAAMJAGYCBQJhbQUDYnBwCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgBQRpdGVtAhkgZnJvbSBiYWNrcGFjaywgYnV0IG9ubHkgCQCkAwEFA2JwcAIKIGF2YWlsYWJsZQQIZGVsdGFWb2wJAGUCCQEIdG9Wb2x1bWUCCQBkAgUDd2hwBQJhbQUOUFJPRFVDVFBLR1NJWkUJAQh0b1ZvbHVtZQIFA3docAUOUFJPRFVDVFBLR1NJWkUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aHAFAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwcAUCYW0JAGQCCAUDYWNjAl80BQhkZWx0YVZvbAMJAGYCCQEBLQEFAmFtBQN3aHAJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAJAKQDAQkBAS0BBQJhbQIaIGZyb20gd2FyZWhvdXNlLCBidXQgb25seSAJAKQDAQUDd2hwAgogYXZhaWxhYmxlBAhkZWx0YVZvbAkAZQIJAQh0b1ZvbHVtZQIJAGQCBQN3aHAFAmFtBQ5QUk9EVUNUUEtHU0laRQkBCHRvVm9sdW1lAgUDd2hwBQ5QUk9EVUNUUEtHU0laRQkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFA3docAUCYW0JAM0IAggFA2FjYwJfMwkApAMBCQBlAgUDYnBwBQJhbQkAZAIIBQNhY2MCXzQFCGRlbHRhVm9sBAFwAwkBAiE9AgkAkAMBBQlwcm9kUGFydHMAAAoAAiRsBQlwcm9kUGFydHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQAAAUDbmlsBQNuaWwIBQFtAl80CgEFJGYyXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQNtdlACBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjJfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDUwCQEFJGYyXzICCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgkAlgoEAAAFCmN1cnJXaFByb2QFD2N1cnJlbnRQYWNrUHJvZAgFAW0CXzQECHZvbFNhbGRvCAUBcAJfNAMJAGYCBQh2b2xTYWxkbwULd2hTcGFjZUxlZnQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICFUF0dGVtcHQgdG8gcHV0IHRvdGFsIAkApAMBBQh2b2xTYWxkbwIRIHN0dWZmLCBidXQgb25seSAJAKQDAQULd2hTcGFjZUxlZnQCFSB3YXJlaG91c2Ugc3BhY2UgbGVmdAkAmQoHCQC5CQIIBQFyAl8yAgFfCQC5CQIIBQFtAl8yAgFfCQC6CQIIBQFwAl8yAgFfCQC5CQIIBQFyAl8zAgFfCQC5CQIIBQFtAl8zAgFfCQC6CQIIBQFwAl8zAgFfBQh2b2xTYWxkbwESZXhwZWRpdGlvbkludGVybmFsAgZjYWxsZXIEdHhJZAQIdXNlckFkZHIJAKUIAQUGY2FsbGVyBAZiaWdOdW0JAQNhYnMBCQCeAwEFBHR4SWQEB2ZyZWVOdW0JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQ9QUkVTQUxFTlVNTEFORFMAAQQHbGFuZE51bQkApAMBBQdmcmVlTnVtBAxjb250aW5lbnRJZHgJAKADAQkAuwICBQZiaWdOdW0FBUZJVkVYBAh0ZXJyYWlucwkBC2dlblRlcnJhaW5zAgUGYmlnTnVtBQxjb250aW5lbnRJZHgECWNvbnRpbmVudAkAkQMCBQpjb250aW5lbnRzBQxjb250aW5lbnRJZHgEBWlzc3VlCQDCCAUJAQduZnROYW1lAgUHbGFuZE51bQIBUwkAuQkCCQDMCAIFB2xhbmROdW0JAMwIAgIBUwkAzAgCBQh0ZXJyYWlucwkAzAgCBQljb250aW5lbnQFA25pbAIBXwABAAAHBAdhc3NldElkCQC4CAEFBWlzc3VlBAJpZAkA2AQBBQdhc3NldElkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUHZnJlZU51bQABCQDMCAIFBWlzc3VlCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlMYW5kVG9Bc3NldElkAQUHbGFuZE51bQUCaWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFAmlkBQh1c2VyQWRkcgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5TGFuZE51bVRvT3duZXIBBQdsYW5kTnVtBQh1c2VyQWRkcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQJpZAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgUCaWQFCHVzZXJBZGRyAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyAAEFB2Fzc2V0SWQFA25pbAkAlAoCBQJpZAUJY29udGluZW50AQxmbGlnaHRDb21tb24DCHVzZXJBZGRyB21lc3NhZ2UDc2lnAwkBASEBCQDEEwMFB21lc3NhZ2UFA3NpZwUDcHViCQACAQIYc2lnbmF0dXJlIGRvZXMgbm90IG1hdGNoBAVwYXJ0cwkAvAkCCQCwCQEFB21lc3NhZ2UCATsECWZsaWdodExvZwkAvAkCCQCRAwIFBXBhcnRzAAACAXwEAmhwCQC1CQIJAJEDAgUJZmxpZ2h0TG9nBQhmbEhlYWx0aAIBXwQFY3VySFAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJocAAABAVuZXdIUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmhwAAEEC25ld0xvY1R4VmVyCQC1CQIJAJEDAgUFcGFydHMAAQIBOgQLbmV3TG9jYXRpb24JAJEDAgULbmV3TG9jVHhWZXIAAAQEdGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWZsaWdodExvZwULZmxUaW1lc3RhbXADAwkAZgIFBHRpbWUJAGQCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAURRklWRU1JTlVURVNNSUxMSVMGCQBmAgkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBRFGSVZFTUlOVVRFU01JTExJUwUEdGltZQkAAgEJAKwCAgkArAICCQCsAgICHHNpZ25hdHVyZSBvdXRkYXRlZDogbG9nVGltZT0JAKQDAQUEdGltZQIJLCBiY1RpbWU9CQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAl0eEZyb21Nc2cJAJEDAgULbmV3TG9jVHhWZXIAAQQGbGFzdFR4CQELdmFsdWVPckVsc2UCCQCiCAEJARFrZXlMYXN0VHhJZEJ5VXNlcgEFCHVzZXJBZGRyAgADCQECIT0CBQZsYXN0VHgFCXR4RnJvbU1zZwkAAgEJAKwCAgkArAICCQCsAgICHlR4IGlkcyBkb24ndCBtYXRjaCEgSW4gc3RhdGU6IAUGbGFzdFR4AgosIGluIG1zZzogBQl0eEZyb21Nc2cEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUIdXNlckFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAxvbGRGcm9tU3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAQIhPQIFDG9sZEZyb21TdGF0ZQUFY3VySFAJAAIBCQCsAgIJAKwCAgkArAICAgpvbGRIZWFsdGg9CQCkAwEFDG9sZEZyb21TdGF0ZQIvIGZyb20gc3RhdGUgZG9lcyBub3QgbWF0Y2ggb25lIGZyb20gZmxpZ2h0IGxvZz0JAKQDAQUFY3VySFADCQBnAgAABQVjdXJIUAkAAgECHllvdSBjYW4ndCBmbHkgd2l0aCB6ZXJvIGhlYWx0aAMJAQEhAQkBF2NhbldlYXJDdXJyZW50RXF1aXBtZW50AQULZHVja0Fzc2V0SWQJAAIBAhZFcXVpcG1lbnQgaW5jb21wYXRpYmxlBAVib251cwMJAGYCCQCQAwEFCWZsaWdodExvZwUHZmxCb251cwkAkQMCBQlmbGlnaHRMb2cFB2ZsQm9udXMCAAQIcHJvZFVzZWQDCQBmAgkAkAMBBQlmbGlnaHRMb2cFC2ZsUHJvZHNVc2VkCQCRAwIFCWZsaWdodExvZwULZmxQcm9kc1VzZWQCAAQKc2VudEFtb3VudAMDCQBmAgUFbmV3SFAAAAkAAAIFBWJvbnVzAgEkBwkBBWFzSW50AQkA/AcEBQxyZXN0Q29udHJhY3QCDXNlbmRVc2R0UHJpemUJAMwIAgUIdXNlckFkZHIFA25pbAUDbmlsAAAJAJcKBQUFbmV3SFAFC2R1Y2tBc3NldElkBQpzZW50QW1vdW50BQtuZXdMb2NhdGlvbgUIcHJvZFVzZWQBDGFwcGx5Qm9udXNlcwILbGFuZEFzc2V0SWQGcGllY2VzBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQJYXJ0UGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAAAEBGFkZDYJAGkCBQppbmZyYUxldmVsAAYEBGFkZDcJAGkCBQppbmZyYUxldmVsAAcJAGQCCQBkAgUPREFJTFlSRVNCWVBJRUNFCQBrAwUPREFJTFlSRVNCWVBJRUNFCQBkAgkAZAIFCmluZnJhTGV2ZWwFBGFkZDYJAGgCAAIFBGFkZDcABQkAawMFD0RBSUxZUkVTQllQSUVDRQUJYXJ0UGllY2VzCQBoAgUGcGllY2VzAAUBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwRhZGRyCWNsYWltTW9kZQ1sYW5kQXNzZXRJZEluBA0kdDAzNDE1MzM0NjkyAwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAJQKAgUNbGFuZEFzc2V0SWRJbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAgAEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04EA2xvYwkAtQkCCQEFdmFsdWUBBQtjdXJMb2NhdGlvbgIBXwMJAQIhPQIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFMCQACAQkArAICCQCsAgICFkR1Y2sgbG9jYXRpb24gdHlwZSBpcyAJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAhEsIGJ1dCBzaG91bGQgYmUgTAkAlAoCCQCRAwIFA2xvYwUIbG9jSWR4SWQFC2R1Y2tBc3NldElkBAtsYW5kQXNzZXRJZAgFDSR0MDM0MTUzMzQ2OTICXzEEBmR1Y2tJZAgFDSR0MDM0MTUzMzQ2OTICXzIEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQECXNhdmVkVGltZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFB3RpbWVLZXkJAKwCAgkArAICAgVMYW5kIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8JAJYKBAUGZHVja0lkBQtsYW5kQXNzZXRJZAUBZAUJc2F2ZWRUaW1lARBjbGFpbVJlc0ludGVybmFsBARhZGRyBmFtb3VudAljbGFpbU1vZGUNbGFuZEFzc2V0SWRJbgMJAGYCAAAFBmFtb3VudAkAAgECD05lZ2F0aXZlIGFtb3VudAQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUJY2xhaW1Nb2RlBQ1sYW5kQXNzZXRJZEluBAhsYW5kU2l6ZQkAkQMCCAUBYwJfMwULcmVjTGFuZFNpemUEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCCAUBYwJfMwULcmVjVGVycmFpbnMECWRlbHRhVGltZQkAZQIJAQlmaW5hbFRpbWUACAUBYwJfNAMJAGYCAAAFCWRlbHRhVGltZQkAAgEJAKwCAgkArAICCQCsAgICJlNhdmVkIHRpbWVzdGFtcCBpcyBpbiBmdXR1cmUsIHNhdmVkID0gCQCkAwEIBQFjAl80AgosIGZpbmFsID0gCQCkAwEJAQlmaW5hbFRpbWUABAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBBQhsYW5kU2l6ZQQWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDGFwcGx5Qm9udXNlcwIIBQFjAl8yBQZwaWVjZXMECGF2YWlsUmVzCQBrAwUJZGVsdGFUaW1lCQBoAgUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQUGcGllY2VzBQlEQVlNSUxMSVMDCQBmAgUGYW1vdW50BQhhdmFpbFJlcwkAAgEJAKwCAgkArAICCQCsAgICIk5vdCBlbm91Z2ggcmVzb3VyY2VzLCBhdmFpbGFibGUgPSAJAKQDAQUIYXZhaWxSZXMCDiwgcmVxdWVzdGVkID0gCQCkAwEFBmFtb3VudAQMbmV3RGVsdGFUaW1lCQBrAwkAZQIFCGF2YWlsUmVzBQZhbW91bnQFCURBWU1JTExJUwkAaAIFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UFBnBpZWNlcwQMbmV3VGltZXN0YW1wCQBlAgkBCWZpbmFsVGltZQAFDG5ld0RlbHRhVGltZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQKcmVzVG9DbGFpbQkBCXZpcnRDbGFpbQQFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEIBQFjAl8yBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQgFAWMCXzIAAAQJY3VycmVudFdoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQEbG9mdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBAt3aFNwYWNlTGVmdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUDAwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAGYCBQZhbW91bnQFC3doU3BhY2VMZWZ0BwkAAgEJAKwCAgkArAICAgVPbmx5IAkApAMBBQt3aFNwYWNlTGVmdAIYIHNwYWNlIGxlZnQgaW4gd2FyZWhvdXNlBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQgFAWMCXzEEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQOY3VycmVudFBhY2tSZXMJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDGN1cnJlbnRXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8EDSR0MDM3MDYyMzc5MzMDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAlgoECQEGYWRkUmVzBQUMY3VycmVudFdoUmVzBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQIBQpyZXNUb0NsYWltAl8yCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUIBQpyZXNUb0NsYWltAl8yAwkAAAIFCWNsYWltTW9kZQUNY2xhaW1Nb2RlRHVjawkAlgoECQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMJAQZhZGRSZXMFBQ5jdXJyZW50UGFja1JlcwUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUEBWRpc3RyCQENZGlzdHJpYnV0ZVJlcwQFDGN1cnJlbnRXaFJlcwUOY3VycmVudFBhY2tSZXMFCnJlc1RvQ2xhaW0FC3doU3BhY2VMZWZ0BAR3aEFtCQCXAwEJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUJAMwIAggFCnJlc1RvQ2xhaW0CXzIFA25pbAkAlgoECAUFZGlzdHICXzEIBQVkaXN0cgJfMgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAUEd2hBbQkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBQR3aEFtBAV3aFJlcwgFDSR0MDM3MDYyMzc5MzMCXzEEBWJwUmVzCAUNJHQwMzcwNjIzNzkzMwJfMgQFbG9mdE8IBQ0kdDAzNzA2MjM3OTMzAl8zBAVsb2Z0RggFDSR0MDM3MDYyMzc5MzMCXzQJAJcKBQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBCAUBYwJfMgUMbmV3VGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgIBQFjAl8yBQRhZGRyBQxuZXdUaW1lc3RhbXAFA25pbAUFYnBLZXkJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCBQVicFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAUFd2hLZXkJAMwIAgkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzCQDMCAIFBXdoUmVzCQDMCAIJAJEDAgUJY3VycmVudFdoBQh3aElkeE1hdAkAzAgCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kCQDMCAIJALkJAgkAzAgCCQCRAwIFBGxvZnQFCXZvbExvY2tlZAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkAkQMCBQRsb2Z0BQh2b2xUb3RhbAUDbmlsAgFfBQNuaWwBCGNsYWltQWxsBARhZGRyC2xhbmRBc3NldElkBnBpZWNlcwljbGFpbU1vZGUEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQECXNhdmVkVGltZQkBBXZhbHVlAQkAnwgBBQd0aW1lS2V5BAhhdmFpbFJlcwkAaAIJAGsDCQBlAgkBCWZpbmFsVGltZQAFCXNhdmVkVGltZQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMFCURBWU1JTExJUwUGcGllY2VzCQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFCGF2YWlsUmVzBQljbGFpbU1vZGUFC2xhbmRBc3NldElkAQ11cEluZnJhQ29tbW9uBAxzaG91bGRVc2VNYXQGY2FsbGVyDXBheW1lbnRBbW91bnQLbGFuZEFzc2V0SWQEBGFkZHIJAKUIAQUGY2FsbGVyBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBRNjbGFpbU1vZGVXaFRoZW5EdWNrBQtsYW5kQXNzZXRJZAQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCAUBYwJfMwULcmVjTGFuZFNpemUECGluZnJhS2V5CQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEIBQFjAl8yBAhjdXJMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQhpbmZyYUtleQAAAwMJAQEhAQUYS1NfQUxMT1dfQklHX0lORlJBX01FUkdFCQBnAgUIY3VyTGV2ZWwAAwcJAAIBAiZDdXJyZW50bHkgbWF4IGluZnJhc3RydWN0dXJlIGxldmVsID0gMwQIbWF4SW5mcmEJAGQCCQBpAgkBBHNxcnQEBQZwaWVjZXMAAAAABQRET1dOAAUAAgQIbmV3TGV2ZWwJAGQCBQhjdXJMZXZlbAABAwMFGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQkAZgIFCG5ld0xldmVsBQhtYXhJbmZyYQcJAAIBCQCsAgICJUN1cnJlbnRseSBtYXggaW5mcmFzdHJ1Y3R1cmUgbGV2ZWwgPSAJAKQDAQUIbWF4SW5mcmEEBGNvc3QJAGsDBRVJbmZyYVVwZ3JhZGVDb3N0U1VzZHQJAGgCBQZwaWVjZXMFCG5ld0xldmVsBQVTU0laRQMDCQEBIQEFDHNob3VsZFVzZU1hdAkBAiE9AgUNcGF5bWVudEFtb3VudAUEY29zdAcJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQRjb3N0BAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQgFAWMCXzEEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbUxpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8EB21hdFVzZWQJAGsDBRFJbmZyYVVwZ3JhZGVDb3N0UwkAaAIFBnBpZWNlcwUIbmV3TGV2ZWwFBVNTSVpFBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwUMc2hvdWxkVXNlTWF0BQVtTGlzdAUHbWF0VXNlZAIBXwQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIIBQFjAl8yBQZwaWVjZXMFE2NsYWltTW9kZVdoVGhlbkR1Y2sEBndoRGF0YQgFC2NsYWltUmVzdWx0Al81BAZvbGRWb2wJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUGd2hEYXRhBQt3aElkeExldmVscwQKbmV3Vm9sRGF0YQkAuQkCCQDMCAIJAJEDAgkAtQkCCQCRAwIFBndoRGF0YQULd2hJZHhMZXZlbHMCAV8AAAkAzAgCCQCkAwEFCG5ld0xldmVsBQNuaWwCAV8EBm5ld1ZvbAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQUKbmV3Vm9sRGF0YQQEbG9mdAkAtQkCCQCRAwIFBndoRGF0YQUJd2hJZHhMT0ZUAgFfBApuZXdMb2Z0U3RyCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAkAzAgCCQCkAwEJAGUCCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUFBm5ld1ZvbAUGb2xkVm9sCQDMCAIJAKQDAQUGbmV3Vm9sBQNuaWwCAV8JAJUKAwkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQhpbmZyYUtleQUIbmV3TGV2ZWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICCAUBYwJfMgUEYWRkcgUIbmV3TGV2ZWwJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAggFC2NsYWltUmVzdWx0Al8zBQhicElkeFJlcwkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al80CQC5CQIJAMwIAgUKbmV3Vm9sRGF0YQkAzAgCCQCRAwIFBndoRGF0YQUId2hJZHhSZXMJAMwIAgkAkQMCBQZ3aERhdGEFCHdoSWR4TWF0CQDMCAIJAJEDAgUGd2hEYXRhBQl3aElkeFByb2QJAMwIAgUKbmV3TG9mdFN0cgUDbmlsAgE6BQNuaWwIBQtjbGFpbVJlc3VsdAJfMQUIbmV3TGV2ZWwFB21hdFVzZWQBE3VwZGF0ZVN0YXRzSW50ZXJuYWwEBmx2bEtleQV4cEtleQlwb2ludHNLZXkHZGVsdGFYUAQCeHAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUFeHBLZXkAAAQFbmV3WFAJAGQCBQJ4cAUHZGVsdGFYUAQJbHZsUG9pbnRzCQEHbGV2ZWxVcAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUGbHZsS2V5AAAFBW5ld1hQCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFBmx2bEtleQkAkQMCBQlsdmxQb2ludHMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUFeHBLZXkFBW5ld1hQCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlwb2ludHNLZXkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCXBvaW50c0tleQAACQCRAwIFCWx2bFBvaW50cwABBQNuaWwFBW5ld1hQARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAILZHVja0Fzc2V0SWQHZGVsdGFYUAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtkdWNrQXNzZXRJZAQEYWRkcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQULZHVja0Fzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwMDBRNLU19BTExPV19ST0JPX0RVQ0tTCQAAAggFBWFzc2V0Bmlzc3VlcgUEdGhpcwcJAQhjb250YWlucwIIBQVhc3NldARuYW1lBQtST0JPX1BSRUZJWAcJARN1cGRhdGVTdGF0c0ludGVybmFsBAkBDGtleVVzZXJMZXZlbAEFBGFkZHIJAQlrZXlVc2VyWFABBQRhZGRyCQERa2V5VXNlckZyZWVQb2ludHMBBQRhZGRyBQdkZWx0YVhQCQETdXBkYXRlU3RhdHNJbnRlcm5hbAQJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAkBCWtleUR1Y2tYUAEFC2R1Y2tBc3NldElkCQERa2V5RHVja0ZyZWVQb2ludHMBBQtkdWNrQXNzZXRJZAUHZGVsdGFYUAEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIEYWRkcgdkZWx0YVhQCQETdXBkYXRlU3RhdHNJbnRlcm5hbAQJAQxrZXlVc2VyTGV2ZWwBBQRhZGRyCQEJa2V5VXNlclhQAQUEYWRkcgkBEWtleVVzZXJGcmVlUG9pbnRzAQUEYWRkcgUHZGVsdGFYUAESYWN0aXZhdGVPbmJvYXJkQXJ0AQRhZGRyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECHJlZkJ5S2V5CQEPa2V5QWRkcmVzc1JlZkJ5AQUEYWRkcgQFcmVmQnkJAKIIAQUIcmVmQnlLZXkDCQEBIQEJAQlpc0RlZmluZWQBBQVyZWZCeQkAAgECKVlvdSBhcmUgbm90IGVsaWdpYmxlIGZvciBPTkJPQVJEIGFydGlmYWN0BAZhcnRLZXkJARxrZXlPbmJvYXJkQXJ0RHVja0FjdGl2YXRlZEJ5AQUEYWRkcgQHYXJ0RHVjawkAoggBBQZhcnRLZXkDCQEJaXNEZWZpbmVkAQUHYXJ0RHVjawkAAgEJAKwCAgIvWW91IGFscmVhZHkgdXNlZCB5b3VyIE9OQk9BUkQgYXJ0aWZhY3Qgb24gZHVjayAJAQV2YWx1ZQEFB2FydER1Y2sEEGR1Y2tBY3RpdmF0b3JLZXkJARxrZXlPbmJvYXJkQXJ0QWN0aXZhdGVkT25EdWNrAQULZHVja0Fzc2V0SWQEDWR1Y2tBY3RpdmF0b3IJAKIIAQUQZHVja0FjdGl2YXRvcktleQMJAQlpc0RlZmluZWQBBQ1kdWNrQWN0aXZhdG9yCQACAQkArAICCQCsAgIJAKwCAgIJVGhlIGR1Y2sgBQtkdWNrQXNzZXRJZAI0IGFscmVhZHkgZ290IHBvaW50cyBmcm9tIE9OQk9BUkQgYXJ0aWZhY3QgZnJvbSB1c2VyIAkBBXZhbHVlAQUNZHVja0FjdGl2YXRvcgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmFydEtleQULZHVja0Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgUQZHVja0FjdGl2YXRvcktleQUEYWRkcgUDbmlsCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFCXhwT25ib2FyZAJfMQESYWN0aXZhdGVQcmVzYWxlQXJ0AgRhZGRyDWxhbmRBc3NldElkSW4EAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFE2NsYWltTW9kZVdoVGhlbkR1Y2sFDWxhbmRBc3NldElkSW4EC2xhbmRBc3NldElkCAUBYwJfMgQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCAUBYwJfMwULcmVjTGFuZFNpemUEDWFjdGl2YXRpb25LZXkJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAwkAZgIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUNYWN0aXZhdGlvbktleQAAAAAJAAIBAiVQcmVzYWxlIGFydGlmYWN0IGlzIGFscmVhZHkgYWN0aXZhdGVkAwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCCAUBYwJfMwUKcmVjTGFuZE51bQUPUFJFU0FMRU5VTUxBTkRTCQACAQkArAICCQCsAgIJAKwCAgUKTEFORFBSRUZJWAIBIAULbGFuZEFzc2V0SWQCJSBpcyBub3QgZWxpZ2libGUgZm9yIHByZXNhbGUgYXJ0aWZhY3QEC2NsYWltUmVzdWx0CQEIY2xhaW1BbGwEBQRhZGRyBQtsYW5kQXNzZXRJZAUGcGllY2VzBRNjbGFpbU1vZGVXaFRoZW5EdWNrCQDNCAIJAM0IAgkAzQgCCAULY2xhaW1SZXN1bHQCXzEJAQxJbnRlZ2VyRW50cnkCBQ1hY3RpdmF0aW9uS2V5BQZwaWVjZXMJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfMgkAuQkCCAULY2xhaW1SZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfNAkAuQkCCAULY2xhaW1SZXN1bHQCXzUCAToBD2NoZWNrVG91cm5hbWVudAELZHVja0Fzc2V0SWQEBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFEnRvdXJuYW1lbnRDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwMJAQIhPQIJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUCAVQHAwMDCQAAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAkAAAIJAJEDAgUHZHluYW1pYwUOdER5bmFtaWNTdGF0dXMCCklOUFJPR1JFU1MHCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUDbm93BwkAAgECKllvdXIgZHVjayBpcyB0YWtpbmcgcGFydCBpbiB0aGUgdG91cm5hbWVudAkBCWFzQm9vbGVhbgEJAPwHBAUEdGhpcwIWZXhpdFRvdXJuYW1lbnRJbnRlcm5hbAkAzAgCBQtkdWNrQXNzZXRJZAUDbmlsBQNuaWwBDW1lcmdlSW50ZXJuYWwGC25ld0xhbmRTaXplCG5ld0xldmVsB2Zvcm11bGEEYWRkcgxsYW5kQXNzZXRJZHMHbmVlZE1hdAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIdbWVyZ2VJbnRlcm5hbF9jaGVja1RvdXJuYW1lbnQKAQpjaGVja01lcmdlAgNhY2MLbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQECXNhdmVkVGltZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFB3RpbWVLZXkJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwQJY29udGluZW50CQCRAwIFAWQFDHJlY0NvbnRpbmVudAMDCQECIT0CCAUDYWNjAl8zAgAJAQIhPQIIBQNhY2MCXzMFCWNvbnRpbmVudAcJAAIBAi5MYW5kcyBzaG91bGQgYmUgb24gdGhlIHNhbWUgY29udGluZW50IHRvIG1lcmdlBAhsYW5kU2l6ZQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQHc2l6ZXNJbggFA2FjYwJfMQQBaQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCzCQIFB3NpemVzSW4FCGxhbmRTaXplAidZb3UgaGF2ZW4ndCBwYXNzZWQgYWxsIHRoZSBsYW5kcyBuZWVkZWQECHNpemVzT3V0CQCsAgIJAK8CAgUHc2l6ZXNJbgUBaQkAsAICBQdzaXplc0luCQBkAgUBaQABBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBBQhsYW5kU2l6ZQQEYXJ0cwkAZAIIBQNhY2MCXzIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQAAAQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECHJlcUxldmVsBAckbWF0Y2gwBQhsYW5kU2l6ZQMJAAACAgFTBQckbWF0Y2gwAAMDCQAAAgIBTQUHJG1hdGNoMAAEAwkAAAICAUwFByRtYXRjaDAABQMJAAACAgJYTAUHJG1hdGNoMAAGCQACAQIaT25seSBTLCBNLCBMLCBYTCBjYW4gbWVyZ2UDCQECIT0CBQppbmZyYUxldmVsBQhyZXFMZXZlbAkAAgECIkFsbCBsYW5kcyBzaG91bGQgYmUgbWF4ZWQgdG8gbWVyZ2UEB2xhbmROdW0JAJEDAgUBZAUKcmVjTGFuZE51bQQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIFAWQFC3JlY1RlcnJhaW5zBAlkZWx0YVRpbWUJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUJc2F2ZWRUaW1lAwkAZgIAAAUJZGVsdGFUaW1lCQACAQkArAICCQCsAgIJAKwCAgImU2F2ZWQgdGltZXN0YW1wIGlzIGluIGZ1dHVyZSwgc2F2ZWQgPSAJAKQDAQUJc2F2ZWRUaW1lAgwsIGN1cnJlbnQgPSAJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAEFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBAlsYW5kSW5kZXgJAGkCBQZwaWVjZXMFBVNTSVpFBAVicFJlcwkBBmFkZFJlcwUJALUJAggFA2FjYwJfNAIBXwUNdGVycmFpbkNvdW50cwUJZGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UEBXByb3BzCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIBQNhY2MCXzYFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAZjUHJvcHMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwNfMTAFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAtzdW1UZXJyYWlucwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjAl85BQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQQFbGFuZHMIBQNhY2MCXzcEA2lkeAkAzwgCBQVsYW5kcwULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBBQNpZHgJAAIBCQCsAgICIFlvdXIgc3Rha2VkIGxhbmRzIGRvbid0IGNvbnRhaW4gBQtsYW5kQXNzZXRJZAQJY3VzdG9tS2V5CQEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBBQtsYW5kQXNzZXRJZAQKY3VzdG9tTmFtZQkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXN0b21LZXkCAAkAnAoKBQhzaXplc091dAUEYXJ0cwUJY29udGluZW50BQVicFJlcwkAzggCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAggFA2FjYwJfNQkBC0RlbGV0ZUVudHJ5AQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUEYWRkcgkBC0RlbGV0ZUVudHJ5AQkBEGtleUxhbmRUb0Fzc2V0SWQBBQdsYW5kTnVtCQELRGVsZXRlRW50cnkBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQtsYW5kQXNzZXRJZAUEYWRkcgkBC0RlbGV0ZUVudHJ5AQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0JAQtEZWxldGVFbnRyeQEJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQUJY3VzdG9tS2V5CQEEQnVybgIJANkEAQULbGFuZEFzc2V0SWQAAQMJAQIhPQIFCmN1c3RvbU5hbWUCAAkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lBQNuaWwFA25pbAUFcHJvcHMJANEIAgUFbGFuZHMJAQV2YWx1ZQEFA2lkeAkAZAIIBQNhY2MCXzgFBnBpZWNlcwULc3VtVGVycmFpbnMFBmNQcm9wcwQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkECHByb3BMaXN0CQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBEWtleVJlc1Byb3BvcnRpb25zAAILMF8wXzBfMF8wXzACAV8ECGxhbmRzS2V5CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUEYWRkcgQIbGFuZHNTdHIJAKIIAQUIbGFuZHNLZXkEB2xhbmRzSW4DCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAQFY29udDAJAJEDAgkAtQkCCAkBBXZhbHVlAQkA7AcBCQDZBAEJAJEDAgUMbGFuZEFzc2V0SWRzAAALZGVzY3JpcHRpb24CAV8FDHJlY0NvbnRpbmVudAQJY29udFByb3BzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBBQVjb250MAILMF8wXzBfMF8wXzACAV8EAXIKAAIkbAUMbGFuZEFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAnAoKBQdmb3JtdWxhAAACAAkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMFA25pbAUIcHJvcExpc3QFB2xhbmRzSW4AAAkAtQkCAgswXzBfMF8wXzBfMAIBXwUJY29udFByb3BzCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpjaGVja01lcmdlAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQQJY29udGluZW50CAUBcgJfMwQMY29udGluZW50SWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAM8IAgUKY29udGluZW50cwUJY29udGluZW50CQCsAgICE1Vua25vd24gY29udGluZW50OiAFCWNvbnRpbmVudAQIdGVycmFpbnMJARNnZW5UZXJyYWluc0Zvck1lcmdlAggFAXICXzkJAGkCCQEPbnVtUGllY2VzQnlTaXplAQULbmV3TGFuZFNpemUFBVNTSVpFBAdmcmVlTnVtCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUPUFJFU0FMRU5VTUxBTkRTAAEECm5ld0xhbmROdW0JAKQDAQUHZnJlZU51bQQFaXNzdWUJAMIIBQkBB25mdE5hbWUCBQpuZXdMYW5kTnVtBQtuZXdMYW5kU2l6ZQkAuQkCCQDMCAIFCm5ld0xhbmROdW0JAMwIAgULbmV3TGFuZFNpemUJAMwIAgUIdGVycmFpbnMJAMwIAgUJY29udGluZW50BQNuaWwCAV8AAQAABwQHYXNzZXRJZAkAuAgBBQVpc3N1ZQQObmV3TGFuZEFzc2V0SWQJANgEAQUHYXNzZXRJZAQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMJAGYCBQduZWVkTWF0AAAJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8FB25lZWRNYXQCAV8ECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQRhZGRyBAxzdGFrZWRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAJAJQKAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAggFAXICXzUDCQBmAgkAkAMBCAUBcgJfNwAACQELU3RyaW5nRW50cnkCBQhsYW5kc0tleQkAuwkCCAUBcgJfNwIBXwkBC0RlbGV0ZUVudHJ5AQUIbGFuZHNLZXkJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkDCQBmAggFAXICXzgFDHN0YWtlZFBpZWNlcwAACQBlAgUMc3Rha2VkUGllY2VzCAUBcgJfOAkBDEludGVnZXJFbnRyeQIJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUHZnJlZU51bQABBQVpc3N1ZQkBC1N0cmluZ0VudHJ5AgkBEGtleUxhbmRUb0Fzc2V0SWQBBQpuZXdMYW5kTnVtBQ5uZXdMYW5kQXNzZXRJZAkBC1N0cmluZ0VudHJ5AgkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFDm5ld0xhbmRBc3NldElkBQRhZGRyCQELU3RyaW5nRW50cnkCCQERa2V5TGFuZE51bVRvT3duZXIBBQpuZXdMYW5kTnVtBQRhZGRyCQEMSW50ZWdlckVudHJ5AgkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQUObmV3TGFuZEFzc2V0SWQIBQFyAl8yCQEMSW50ZWdlckVudHJ5AgkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQ5uZXdMYW5kQXNzZXRJZAUIbmV3TGV2ZWwJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgUObmV3TGFuZEFzc2V0SWQFBGFkZHIFCG5ld0xldmVsCQELU3RyaW5nRW50cnkCBQVicEtleQkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAggFAXICXzQJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6CQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMACQC5CQIIBQFyAl82AgFfCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEFCWNvbnRpbmVudAkAuQkCCAUBcgNfMTACAV8JAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIFCWNvbnRpbmVudAkAzAgCAgFMCQDMCAIFDm5ld0xhbmRBc3NldElkBQNuaWwCAV8JAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBGFkZHIAAQUHYXNzZXRJZAUObmV3TGFuZEFzc2V0SWQBA3MybQIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgIBTQADAgRTU1NTBQRhZGRyBQxsYW5kQXNzZXRJZHMAAAEDbTJsAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgFMAAQCA1NNTQUEYWRkcgUMbGFuZEFzc2V0SWRzCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMABAEEbDJ4bAIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgICWEwABQIFU1NTTUwFBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTAC8BBnhsMnh4bAIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgIDWFhMAAYCA0xYTAUEYWRkcgUMbGFuZEFzc2V0SWRzCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMANgELbWVyZ2VDb21tb24CBGFkZHIMbGFuZEFzc2V0SWRzBAckbWF0Y2gwCQCQAwEFDGxhbmRBc3NldElkcwMJAAACAAQFByRtYXRjaDAJAQNzMm0CBQRhZGRyBQxsYW5kQXNzZXRJZHMDCQAAAgADBQckbWF0Y2gwCQEDbTJsAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIABQUHJG1hdGNoMAkBBGwyeGwCBQRhZGRyBQxsYW5kQXNzZXRJZHMDCQAAAgACBQckbWF0Y2gwCQEGeGwyeHhsAgUEYWRkcgUMbGFuZEFzc2V0SWRzCQACAQINVW5rbm93biBtZXJnZQEGcHJvbG9nAQFpAwMJAQIhPQIIBQFpDG9yaWdpbkNhbGxlcgUMcmVzdENvbnRyYWN0CQELdmFsdWVPckVsc2UCCQCgCAEJAQprZXlCbG9ja2VkAAcHCQACAQIfQ29udHJhY3RzIGFyZSB1bmRlciBtYWludGVuYW5jZQkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5TGFzdFR4SWRCeVVzZXIBCQClCAEIBQFpDG9yaWdpbkNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBQNuaWwBE3Vuc3Rha2VMYW5kSW50ZXJuYWwCBGFkZHILbGFuZEFzc2V0SWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQECGxhbmRJbmZvCQC1CQIICQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQLZGVzY3JpcHRpb24CAV8ECGxhbmRTaXplCQCRAwIFCGxhbmRJbmZvBQtyZWNMYW5kU2l6ZQQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAlsYW5kSW5kZXgJAGkCBQZwaWVjZXMFBVNTSVpFBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUIbGFuZEluZm8FC3JlY1RlcnJhaW5zBAljdXJyZW50V2gJAQxnZXRXYXJlaG91c2UDBQV3aEtleQUJbGFuZEluZGV4BQppbmZyYUxldmVsBAxjdXJyZW50V2hSZXMJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJARFAZXh0ck5hdGl2ZSgxMDU1KQEFB3RpbWVLZXkECWRlbHRhVGltZQkAZQIJAQlmaW5hbFRpbWUABQlzYXZlZFRpbWUDCQBmAgAABQlkZWx0YVRpbWUJAAIBCQCsAgIJAKwCAgkArAICAiZTYXZlZCB0aW1lc3RhbXAgaXMgaW4gZnV0dXJlLCBzYXZlZCA9IAkApAMBBQlzYXZlZFRpbWUCCiwgZmluYWwgPSAJAKQDAQkBCWZpbmFsVGltZQAEFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBA1yZXNBZnRlckNsYWltCQEPdmlydENsYWltQWRkUmVzBQUMY3VycmVudFdoUmVzBQ10ZXJyYWluQ291bnRzBQlkZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQQJYXJ0UGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAAAED2FjcmVzRnJvbVBpZWNlcwkAZAIJAGgCBQZwaWVjZXMFBU1VTFQ4CQBpAgkAaAIJAGQCCQBoAgUGcGllY2VzBQppbmZyYUxldmVsBQlhcnRQaWVjZXMFBU1VTFQ4AAUEDGFjcmVzRnJvbVJlcwkAaAIJAGsDCAUNcmVzQWZ0ZXJDbGFpbQJfMgUQUkVTT1VSQ0VQUklDRU1JTgUFTVVMVDgFFVVTRFQyQUNSRVNfTVVMVElQTElFUgoBBnN1bU1hdAIDYWNjBGl0ZW0JAGQCBQNhY2MJAQ1wYXJzZUludFZhbHVlAQUEaXRlbQQFd2hNYXQKAAIkbAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8KAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBnN1bU1hdAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgQMYWNyZXNGcm9tTWF0CQBoAgkAawMFBXdoTWF0CQBoAgACBRBSRVNPVVJDRVBSSUNFTUlOBQVNVUxUOAUVVVNEVDJBQ1JFU19NVUxUSVBMSUVSBAVwcm9kcwMJAAACCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kAgFfCgEHc3VtUHJvZAIDYWNjBGl0ZW0EAWoIBQNhY2MCXzIEC3JlY2lwZUNvZWZmCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgFAWoCAV8FCXJJZHhDb2VmZgkAlAoCCQBkAggFA2FjYwJfMQkAaAIJAGgCCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0FC3JlY2lwZUNvZWZmBQVNVUxUNgkAZAIFAWoAAQQGd2hQcm9kCgACJGwFBXByb2RzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCAAAAAAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHc3VtUHJvZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjQJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgEDWFjcmVzRnJvbVByb2QJAGgCCQBrAwgFBndoUHJvZAJfMQkAaAIAAgUQUkVTT1VSQ0VQUklDRU1JTgUFTVVMVDgFFVVTRFQyQUNSRVNfTVVMVElQTElFUgkAlgoEBQ9hY3Jlc0Zyb21QaWVjZXMFDGFjcmVzRnJvbVJlcwUMYWNyZXNGcm9tTWF0BQ1hY3Jlc0Zyb21Qcm9kARN1bnN0YWtlRHVja0ludGVybmFsAgRhZGRyC2R1Y2tBc3NldElkBAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQLY3VycmVudFNlZ3MJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywCAV8EBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAl0ZW1wUHJvZEIJAQZkcmVzc0IEBQtjdXJyZW50U2VncwkBDnByb2RTdHJUb0J5dGVzAQkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBgUDbmlsBApuZXdQcm9kU3RyCQEOYnl0ZXNUb1Byb2RTdHIBBQl0ZW1wUHJvZEIKAQlzdW1SZXNNYXQCA2FjYwRpdGVtCQBkAgUDYWNjCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0EBWJwUmVzCgACJGwJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8KAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCXN1bVJlc01hdAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgQMYWNyZXNGcm9tUmVzCQBoAgkAawMFBWJwUmVzBRBSRVNPVVJDRVBSSUNFTUlOBQVNVUxUOAUVVVNEVDJBQ1JFU19NVUxUSVBMSUVSBAVicE1hdAoAAiRsCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYxXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlzdW1SZXNNYXQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjFfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYEDGFjcmVzRnJvbU1hdAkAaAIJAGsDBQVicE1hdAkAaAIAAgUQUkVTT1VSQ0VQUklDRU1JTgUFTVVMVDgFFVVTRFQyQUNSRVNfTVVMVElQTElFUgQFcHJvZHMDCQAAAgUKbmV3UHJvZFN0cgIABQNuaWwJALwJAgUKbmV3UHJvZFN0cgIBXwoBB3N1bVByb2QCA2FjYwRpdGVtBAFqCAUDYWNjAl8yBAtyZWNpcGVDb2VmZgkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4BQFqAgFfBQlySWR4Q29lZmYJAJQKAgkAZAIIBQNhY2MCXzEJAGgCCQBoAgkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBQtyZWNpcGVDb2VmZgUFTVVMVDYJAGQCBQFqAAEEBmJwUHJvZAoAAiRsBQVwcm9kcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgAAAAAKAQUkZjJfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3N1bVByb2QCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjJfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDI0CQEFJGYyXzICCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYBA1hY3Jlc0Zyb21Qcm9kCQBoAgkAawMIBQZicFByb2QCXzEJAGgCAAIFEFJFU09VUkNFUFJJQ0VNSU4FBU1VTFQ4BRVVU0RUMkFDUkVTX01VTFRJUExJRVIJAJUKAwUMYWNyZXNGcm9tUmVzBQxhY3Jlc0Zyb21NYXQFDWFjcmVzRnJvbVByb2QvAWkBDWNvbnN0cnVjdG9yVjEBCHJlc3RBZGRyAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleVJlc3RBZGRyZXNzAAUIcmVzdEFkZHIFA25pbAFpAQtzYXZlSW50ZWdlcgIDa2V5BmFtb3VudAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECIHNhdmVJbnRlZ2VyIGlzIG5vdCBwdWJsaWMgbWV0aG9kCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQNrZXkFBmFtb3VudAUDbmlsAWkBCnNldEJsb2NrZWQBCWlzQmxvY2tlZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQxCb29sZWFuRW50cnkCCQEKa2V5QmxvY2tlZAAFCWlzQmxvY2tlZAUDbmlsAWkBCXN0YWtlTGFuZAAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkxBTkRQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMJAQIhPQIIBQVhc3NldAZpc3N1ZXIFBHRoaXMJAAIBAhdVbmtub3duIGlzc3VlciBvZiB0b2tlbgMJAQEhAQkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFCkxBTkRQUkVGSVgJAAIBCQCsAgIJAKwCAgIJT25seSBORlQgBQpMQU5EUFJFRklYAhQgdG9rZW5zIGFyZSBhY2NlcHRlZAQLbGFuZE51bVNpemUJALACAggFBWFzc2V0BG5hbWUABAQHbGFuZE51bQMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgNYWEwJALMCAgULbGFuZE51bVNpemUAAwMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgJYTAkAswICBQtsYW5kTnVtU2l6ZQACCQCzAgIFC2xhbmROdW1TaXplAAEDCQEBIQEJAQlpc0RlZmluZWQBCQC2CQEFB2xhbmROdW0JAAIBCQCsAgICHkNhbm5vdCBwYXJzZSBsYW5kIG51bWJlciBmcm9tIAgFBWFzc2V0BG5hbWUEC2xhbmRBc3NldElkCQDYBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQDCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAhIgaXMgYWxyZWFkeSBzdGFrZWQEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBXByb3BzCQERdXBkYXRlUHJvcG9ydGlvbnMDBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQQMcmVzQnlDb250S2V5CQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJAJEDAgUBZAUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQxyZXNCeUNvbnRLZXkCCzBfMF8wXzBfMF8wAgFfBBB1cGRhdGVkQ29udFByb3BzCQC5CQIJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAUJY29udFByb3BzBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQIBXwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQdhZGRyZXNzBAhsYW5kc1N0cgkAoggBBQhsYW5kc0tleQQFbGFuZHMDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQVsYW5kcwULbGFuZEFzc2V0SWQJAAIBCQCsAgICIllvdXIgc3Rha2VkIGxhbmRzIGFscmVhZHkgY29udGFpbiAFC2xhbmRBc3NldElkAwkAZwIJAJADAQUFbGFuZHMFGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgkAAgEJAKwCAgkArAICAhlZb3VyIGFscmVhZHkgc3Rha2VkIG1heCAoCQCkAwEFGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgIHKSBsYW5kcwQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQdhZGRyZXNzBAlvbGRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAECXdsZ1Jlc3VsdAkA/AcEBQt3bGdDb250cmFjdAISb25TdGFrZVVuc3Rha2VMYW5kCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFB2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIJAM0IAgUFbGFuZHMFC2xhbmRBc3NldElkAgFfCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkJAGQCBQlvbGRQaWVjZXMFBnBpZWNlcwkAzAgCCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQFB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUHYWRkcmVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFC2xhbmRBc3NldElkBQdhZGRyZXNzBQppbmZyYUxldmVsCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAFBXByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIFDHJlc0J5Q29udEtleQUQdXBkYXRlZENvbnRQcm9wcwUDbmlsBQ1wcm9sb2dBY3Rpb25zBQl3bGdSZXN1bHQBaQELdW5zdGFrZUxhbmQBDWxhbmRBc3NldElkSW4EDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBQ1jbGFpbU1vZGVEdWNrBQ1sYW5kQXNzZXRJZEluBAtsYW5kQXNzZXRJZAgFAWMCXzIEAWQIBQFjAl8zBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFBGFkZHIEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFcHJvcHMJARF1cGRhdGVQcm9wb3J0aW9ucwMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAxyZXNCeUNvbnRLZXkJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQkAkQMCBQFkBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFDHJlc0J5Q29udEtleQILMF8wXzBfMF8wXzACAV8EEHVwZGF0ZWRDb250UHJvcHMJALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQljb250UHJvcHMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BAgFfBAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcgULbGFuZEFzc2V0SWQFBnBpZWNlcwUNY2xhaW1Nb2RlRHVjawQFbGFuZHMJAL0JAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQhsYW5kc0tleQIAAgFfBANpZHgJAM8IAgUFbGFuZHMFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQUDaWR4CQACAQkArAICAiBZb3VyIHN0YWtlZCBsYW5kcyBkb24ndCBjb250YWluIAULbGFuZEFzc2V0SWQEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEDmdvdlJlbGVhc2VUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFC2dvdkNvbnRyYWN0CQEVa2V5VXNlckd3bFJlbGVhc2VUaW1lAQUEYWRkcgAAAwkAZwIFDmdvdlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICOVlvdXIgZ1dMIGFyZSB0YWtpbmcgcGFydCBpbiB2b3RpbmcsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5nb3ZSZWxlYXNlVGltZQQOYXJiUmVsZWFzZVRpbWUJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFC3dsZ0NvbnRyYWN0CQEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBQRhZGRyAAAFDmFyYml0cmFnZURlbGF5AwkAZgIFDmFyYlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICP1lvdXIgc3Rha2VkIGxhbmRzIHRvb2sgcGFydCBpbiBhcmJpdHJhZ2UsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5hcmJSZWxlYXNlVGltZQQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIEDHN0YWtlZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAQJbmV3UGllY2VzAwkAZgIFBnBpZWNlcwUMc3Rha2VkUGllY2VzAAAJAGUCBQxzdGFrZWRQaWVjZXMFBnBpZWNlcwQJd2xnUmVzdWx0CQD8BwQFC3dsZ0NvbnRyYWN0AhJvblN0YWtlVW5zdGFrZUxhbmQJAMwIAgUEYWRkcgUDbmlsBQNuaWwJAJQKAgkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFC2xhbmRBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUEYWRkcgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMABQVwcm9wcwkAzAgCCQELU3RyaW5nRW50cnkCBQxyZXNCeUNvbnRLZXkFEHVwZGF0ZWRDb250UHJvcHMJAMwIAgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al8yCQC5CQIIBQtjbGFpbVJlc3VsdAJfMwIBOgkAzAgCAwkAZgIJAJADAQUFbGFuZHMAAQkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAgkA0QgCBQVsYW5kcwkBBXZhbHVlAQUDaWR4AgFfCQELRGVsZXRlRW50cnkBBQhsYW5kc0tleQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5BQluZXdQaWVjZXMFA25pbAUNcHJvbG9nQWN0aW9ucwUJd2xnUmVzdWx0AWkBE3Vuc3Rha2VMYW5kQ2FsbGJhY2sCC2xhbmRBc3NldElkBGFkZHIDCQECIT0CCQClCAEIBQFpBmNhbGxlcgUQYWNyZXMyQWRkcmVzc1N0cgkAAgECEVBlcm1pc3Npb24gZGVuaWVkBA11bnN0YWtlUmVzdWx0CQETdW5zdGFrZUxhbmRJbnRlcm5hbAIFBGFkZHIFC2xhbmRBc3NldElkBAl3bGdSZXN1bHQJAPwHBAULd2xnQ29udHJhY3QCEm9uU3Rha2VVbnN0YWtlTGFuZAkAzAgCBQRhZGRyBQNuaWwFA25pbAkAlAoCCQDMCAIJAQRCdXJuAgkA2QQBBQtsYW5kQXNzZXRJZAABCQDMCAIJAQtEZWxldGVFbnRyeQEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUEYWRkcgUDbmlsCQCXCgUIBQ11bnN0YWtlUmVzdWx0Al8xCAUNdW5zdGFrZVJlc3VsdAJfMggFDXVuc3Rha2VSZXN1bHQCXzMIBQ11bnN0YWtlUmVzdWx0Al80BQl3bGdSZXN1bHQBaQETdW5zdGFrZUxhbmRSRUFET05MWQILbGFuZEFzc2V0SWQEYWRkcgQNdW5zdGFrZVJlc3VsdAkBE3Vuc3Rha2VMYW5kSW50ZXJuYWwCBQRhZGRyBQtsYW5kQXNzZXRJZAkAlAoCBQNuaWwFDXVuc3Rha2VSZXN1bHQBaQEcdW5zdGFrZUxhbmRzRmluYWxpemVDYWxsYmFjawEEYWRkcgMJAQIhPQIJAKUIAQgFAWkGY2FsbGVyBRBhY3JlczJBZGRyZXNzU3RyCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAJQKAgkAzAgCCQELRGVsZXRlRW50cnkBCQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUEYWRkcgkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIFA25pbAAAAWkBFGNvbnZlcnRVbnN0YWtlZExhbmRzAAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAdhc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyAwkBAiE9AggFA3BtdAZhbW91bnQAAQkAAgEJAKwCAgkArAICAgRORlQgBQpMQU5EUFJFRklYAiQgdG9rZW4gc2hvdWxkIGJlIGF0dGFjaGVkIGFzIHBheW1lbnQEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQDCQECIT0CCAUFYXNzZXQGaXNzdWVyBQR0aGlzCQACAQIXVW5rbm93biBpc3N1ZXIgb2YgdG9rZW4DCQEBIQEJAQhjb250YWlucwIIBQVhc3NldARuYW1lBQpMQU5EUFJFRklYCQACAQkArAICCQCsAgICCU9ubHkgTkZUIAUKTEFORFBSRUZJWAIUIHRva2VucyBhcmUgYWNjZXB0ZWQEC2xhbmRBc3NldElkCQDYBAEFB2Fzc2V0SWQEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQJYXJ0UGllY2VzCQELdmFsdWVPckVsc2UCCQCfCAEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAAAEC2FjcmVzQW1vdW50CQBkAgkAaAIFBnBpZWNlcwUFTVVMVDgJAGkCCQBoAgkAZAIJAGgCBQZwaWVjZXMFCmluZnJhTGV2ZWwFCWFydFBpZWNlcwUFTVVMVDgABQQDcmVxCQD8BwQFDWFjcmVzQ29udHJhY3QCFHJlcXVlc3RBY3Jlc0NhbGxiYWNrCQDMCAIFC2FjcmVzQW1vdW50BQNuaWwFA25pbAMJAAACBQNyZXEFA3JlcQQFY2FsbGIJAPwHBAkBEUBleHRyTmF0aXZlKDEwNjIpAQUQYWNyZXMyQWRkcmVzc1N0cgISc3Rha2VBY3Jlc0NhbGxiYWNrCQDMCAIFB2FkZHJlc3MFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUMYWNyZXNBc3NldElkBQthY3Jlc0Ftb3VudAUDbmlsAwkAAAIFBWNhbGxiBQVjYWxsYgkAlAoCCQDMCAIJAQRCdXJuAgkA2QQBBQtsYW5kQXNzZXRJZAABBQNuaWwAAAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQlzdGFrZUR1Y2sABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAdhc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyAwkBAiE9AggFA3BtdAZhbW91bnQAAQkAAgEJAKwCAgkArAICAgRORlQgBQpEVUNLUFJFRklYAiQgdG9rZW4gc2hvdWxkIGJlIGF0dGFjaGVkIGFzIHBheW1lbnQEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQEBmlzUm9ibwMDBRNLU19BTExPV19ST0JPX0RVQ0tTCQAAAggFBWFzc2V0Bmlzc3VlcgUEdGhpcwcJAQhjb250YWlucwIIBQVhc3NldARuYW1lBQtST0JPX1BSRUZJWAcDAwMJAQIhPQIIBQVhc3NldAZpc3N1ZXIFDWluY3ViYXRvckFkZHIJAQIhPQIIBQVhc3NldAZpc3N1ZXIFC2JyZWVkZXJBZGRyBwkBASEBBQZpc1JvYm8HCQACAQkArAICCQCsAgIJAKwCAgkArAICAhJVbmtub3duIGlzc3VlciBvZiAFCkRVQ0tQUkVGSVgCBCBvciAFC1JPQk9fUFJFRklYAgYgdG9rZW4DAwkBASEBCQEIY29udGFpbnMCCAUFYXNzZXQEbmFtZQUKRFVDS1BSRUZJWAkBASEBBQZpc1JvYm8HCQACAQkArAICCQCsAgIJAKwCAgkArAICAglPbmx5IE5GVCAFCkRVQ0tQUkVGSVgCBCBvciAFC1JPQk9fUFJFRklYAhQgdG9rZW5zIGFyZSBhY2NlcHRlZAQKYXNzZXRJZFN0cgkA2AQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFCmFzc2V0SWRTdHIDCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAhIgaXMgYWxyZWFkeSBzdGFrZWQDCQEJaXNEZWZpbmVkAQkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzCQACAQkArAICAh1Zb3UgYWxyZWFkeSBzdGFrZWQgb25lIGR1Y2s6IAgFBWFzc2V0BG5hbWUEBmxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFCmFzc2V0SWRTdHIECGxvY2F0aW9uCQCiCAEFBmxvY0tleQQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFCmFzc2V0SWRTdHIECGJhY2twYWNrCQCiCAEFBWJwS2V5BAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQUKYXNzZXRJZFN0cgQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQphc3NldElkU3RyAAAECWN1ckhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFB3RpbWVLZXkIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkRVQ0tQUkVGSVgJANgEAQUHYXNzZXRJZAUHYWRkcmVzcwgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleUR1Y2tJZFRvT3duZXIBBQphc3NldElkU3RyBQdhZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MFCmFzc2V0SWRTdHIFA25pbAMJAQlpc0RlZmluZWQBBQhsb2NhdGlvbgUDbmlsCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04FA25pbAMJAQlpc0RlZmluZWQBBQhiYWNrcGFjawUDbmlsCQDOCAIJAM0IAgkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQIaMDowXzBfMF8wXzBfMDowXzBfMF8wXzBfMDoFA25pbAkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJY3VySGVhbHRoBQ1wcm9sb2dBY3Rpb25zAWkBC3Vuc3Rha2VEdWNrAQphc3NldElkU3RyBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAdhc3NldElkCQDZBAEFCmFzc2V0SWRTdHIEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyBAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFCmFzc2V0SWRTdHIDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkAwkBASEBCQEJaXNEZWZpbmVkAQkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzCQACAQkArAICCQCsAgICCVRoZSBkdWNrIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQUKYXNzZXRJZFN0cgkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUHYWRkcmVzcwkAAgECF1N0YWtlZCBORlQgaXMgbm90IHlvdXJzAwkBD2NoZWNrVG91cm5hbWVudAEFCmFzc2V0SWRTdHIJAAIBAht1bnN0YWtlRHVja19jaGVja1RvdXJuYW1lbnQECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQphc3NldElkU3RyBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFCmFzc2V0SWRTdHIAAAQGaGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBmAgUFbWF4SFAFBmhlYWx0aAkAAgEJAKwCAgkArAICAhlQbGVhc2UgaGVhbCB5b3VyIGR1Y2sgdG8gCQCkAwEFBW1heEhQAhNocCBiZWZvcmUgdW5zdGFraW5nCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEFB2Fzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQUHdGltZUtleQkAzAgCCQELRGVsZXRlRW50cnkBBQlrZXlIZWFsdGgJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBD2tleUR1Y2tMb2NhdGlvbgEFCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEGtleUR1Y2tJZFRvT3duZXIBBQphc3NldElkU3RyCQDMCAIJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKRFVDS1BSRUZJWAUKYXNzZXRJZFN0cgUHYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzBQNuaWwFDXByb2xvZ0FjdGlvbnMBaQETdW5zdGFrZUR1Y2tDYWxsYmFjawILZHVja0Fzc2V0SWQEYWRkcgMJAQIhPQIJAKUIAQgFAWkGY2FsbGVyBRBhY3JlczJBZGRyZXNzU3RyCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEDXVuc3Rha2VSZXN1bHQJARN1bnN0YWtlRHVja0ludGVybmFsAgUEYWRkcgULZHVja0Fzc2V0SWQJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQRhZGRyAAEJANkEAQULZHVja0Fzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtkdWNrQXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEQa2V5RHVja0lkVG9Pd25lcgEFC2R1Y2tBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKRFVDS1BSRUZJWAULZHVja0Fzc2V0SWQFBGFkZHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgUDbmlsBQ11bnN0YWtlUmVzdWx0AWkBE3Vuc3Rha2VEdWNrUkVBRE9OTFkCC2R1Y2tBc3NldElkBGFkZHIEDXVuc3Rha2VSZXN1bHQJARN1bnN0YWtlRHVja0ludGVybmFsAgUEYWRkcgULZHVja0Fzc2V0SWQJAJQKAgUDbmlsBQ11bnN0YWtlUmVzdWx0AWkBCGNsYWltUmVzAgZhbW91bnQObGFuZEFzc2V0SWRTdHIEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAZyZXN1bHQJARBjbGFpbVJlc0ludGVybmFsBAUEYWRkcgUGYW1vdW50BQ1jbGFpbU1vZGVEdWNrBQ5sYW5kQXNzZXRJZFN0cgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkCQCUCgIJAM4IAgkAzQgCCQDNCAIJAM4IAggFBnJlc3VsdAJfMQgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkCQBrAwUHeHBDbGFpbQUGYW1vdW50BQVNVUxUOAJfMQkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfMgkAuQkCCAUGcmVzdWx0Al8zAgE6CQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al80CQC5CQIIBQZyZXN1bHQCXzUCAToFDXByb2xvZ0FjdGlvbnMJAJEDAggFBnJlc3VsdAJfMwUIYnBJZHhSZXMBaQEMY2xhaW1SZXNUb1dIAgZhbW91bnQObGFuZEFzc2V0SWRTdHIEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAZyZXN1bHQJARBjbGFpbVJlc0ludGVybmFsBAUEYWRkcgUGYW1vdW50BQtjbGFpbU1vZGVXaAUObGFuZEFzc2V0SWRTdHIJAJQKAgkAzggCCQDNCAIJAM0IAgkAzggCCAUGcmVzdWx0Al8xCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyCQBrAwUHeHBDbGFpbQUGYW1vdW50BQVNVUxUOAJfMQkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfMgkAuQkCCAUGcmVzdWx0Al8zAgE6CQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al80CQC5CQIIBQZyZXN1bHQCXzUCAToFDXByb2xvZ0FjdGlvbnMJAJEDAggFBnJlc3VsdAJfNQUId2hJZHhSZXMBaQEGZmxpZ2h0AgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAFmCQEMZmxpZ2h0Q29tbW9uAwUIdXNlckFkZHIFB21lc3NhZ2UFA3NpZwQFbmV3SFAIBQFmAl8xBAtkdWNrQXNzZXRJZAgFAWYCXzIEBmxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQZsb2NLZXkFD0RFRkFVTFRMT0NBVElPTgQLbmV3TG9jYXRpb24IBQFmAl80AwkAAAIFC25ld0xvY2F0aW9uBQtjdXJMb2NhdGlvbgkAAgECIllvdSBjYW4ndCBmbHkgdG8gdGhlIHNhbWUgbG9jYXRpb24EBm5ld0xvYwkAtQkCBQtuZXdMb2NhdGlvbgIBXwQGaXNUb3VyCQAAAgkAkQMCBQZuZXdMb2MFCmxvY0lkeFR5cGUCAVQEB2lzRGVsaXYJAAACCQCRAwIFBm5ld0xvYwUKbG9jSWR4VHlwZQIBRAQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQECWN1cnJlbnRFcQkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywEDSR0MDczNzY5NzM4NzUJARFzdWJ0cmFjdEVxdWlwbWVudAIFCWN1cnJlbnRFcQgFAWYCXzUEBW5ld0VxCAUNJHQwNzM3Njk3Mzg3NQJfMQQPc2hvdWxkWmVyb0J1ZmZzCAUNJHQwNzM3Njk3Mzg3NQJfMgQHaWdub3JlZAgFDSR0MDczNzY5NzM4NzUCXzMEDSR0MDczODc4NzU3MTADCQEBIQEJAQlvbk1pc3Npb24CBRJ0b3VybmFtZW50Q29udHJhY3QFC2N1ckxvY2F0aW9uAwUGaXNUb3VyCQEMY2hlYXRBdHRlbXB0AwULY3VyTG9jYXRpb24FC25ld0xvY2F0aW9uAAUDCQEBIQEFB2lzRGVsaXYDCQBmAgUFbmV3SFAAAAkAlAoCBQtuZXdMb2NhdGlvbgUFbmV3SFAJAJQKAgULY3VyTG9jYXRpb24AAAMJAGYCBQVuZXdIUAAABAFzCQD8BwQFBHRoaXMCD3Byb2Nlc3NEZWxpdmVyeQkAzAgCBQtkdWNrQXNzZXRJZAUDbmlsBQNuaWwDCQAAAgUBcwUBcwkAlAoCBQtjdXJMb2NhdGlvbgUFbmV3SFAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJQKAgULY3VyTG9jYXRpb24AAAMJAQ5pc0luVG91cm5hbWVudAIFEnRvdXJuYW1lbnRDb250cmFjdAULY3VyTG9jYXRpb24DCQEBIQEJAQ5pc0luVG91cm5hbWVudAIFEnRvdXJuYW1lbnRDb250cmFjdAULbmV3TG9jYXRpb24JAAIBAipZb3VyIGR1Y2sgaXMgdGFraW5nIHBhcnQgaW4gdGhlIHRvdXJuYW1lbnQEBXNjb3JlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGbmV3TG9jBQhsb2NJZHhJZAQGY3VyTG9jCQC1CQIFC2N1ckxvY2F0aW9uAgFfBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAADCQECIT0CBQVzY29yZQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZjdXJMb2MFCGxvY0lkeElkAAEJAQxjaGVhdEF0dGVtcHQDBQtjdXJMb2NhdGlvbgULbmV3TG9jYXRpb24ABwMJAGYCBQVuZXdIUAAABAlsb2NhbEJlc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSdG91cm5hbWVudENvbnRyYWN0CQEaa2V5QmVzdFJlc3VsdEJ5VG91ckFuZER1Y2sCBQZsYXN0SWQFC2R1Y2tBc3NldElkAAAECHVwZExvY2FsAwkAZgIFBXNjb3JlBQlsb2NhbEJlc3QJAPwHBAUSdG91cm5hbWVudENvbnRyYWN0Ag5zYXZlRHVja1Jlc3VsdAkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQVzY29yZQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUIdXBkTG9jYWwFCHVwZExvY2FsCQCUCgIFC25ld0xvY2F0aW9uBQVuZXdIUAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAlAoCBQtjdXJMb2NhdGlvbgAACQACAQkArAICAhRVbmtub3duIGN1ckxvY2F0aW9uOgULY3VyTG9jYXRpb24ECWxvY1RvU2F2ZQgFDSR0MDczODc4NzU3MTACXzEECGhwVG9TYXZlCAUNJHQwNzM4Nzg3NTcxMAJfMgkAlAoCCQDOCAIJAM4IAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmxvY0tleQUJbG9jVG9TYXZlCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQVuZXdFcQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAUIaHBUb1NhdmUFA25pbAUNcHJvbG9nQWN0aW9ucwMFD3Nob3VsZFplcm9CdWZmcwkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAUDbmlsBQNuaWwICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAMJAGYCBQVuZXdIUAAABQ94cFN1Y2Nlc3NGbGlnaHQFDHhwRmFpbEZsaWdodAJfMQgFAWYCXzMBaQEEaGVhbAMKcXVhbnRpdHlMMQpxdWFudGl0eUwyCnF1YW50aXR5TDMEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwMDCQBmAgAABQpxdWFudGl0eUwxBgkAZgIAAAUKcXVhbnRpdHlMMgYJAGYCAAAFCnF1YW50aXR5TDMJAAIBAhtRdWFudGl0eSBjYW5ub3QgYmUgbmVnYXRpdmUEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhRoZWFsX2NoZWNrVG91cm5hbWVudAQDcXRzCQDMCAIFCnF1YW50aXR5TDEJAMwIAgUKcXVhbnRpdHlMMgkAzAgCBQpxdWFudGl0eUwzBQNuaWwECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFbWF4SFAJAQltYXhIZWFsdGgBCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAAABAlvbGRIZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGcCBQlvbGRIZWFsdGgFBW1heEhQCQACAQkArAICCQCsAgICD0hQIHNob3VsZCBiZSA8IAkApAMBBQVtYXhIUAIIIHRvIGhlYWwEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAhwcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwoBC2l0ZXJhdGVQcm9kAgNhY2MGcmVjaXBlBAFuCAUDYWNjAl8yBAF4AwkAZgIJAJADAQUIcHJvZExpc3QFAW4JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAUBbgAAAwkAZgIAAwUBbgQBcQkAkQMCBQNxdHMFAW4DCQBmAgUBcQUBeAkAAgEJAKwCAgkArAICCQCsAgICDllvdSBoYXZlIG9ubHkgCQCkAwEFAXgCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQFuCQCVCgMJAM0IAggFA2FjYwJfMQkApAMBCQBlAgUBeAUBcQkAZAIFAW4AAQkAZAIIBQNhY2MCXzMJAGgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCBQZyZWNpcGUCAV8FCnJJZHhFZmZlY3QFAXEJAJUKAwkAzQgCCAUDYWNjAl8xCQCkAwEFAXgJAGQCBQFuAAEIBQNhY2MCXzMEBnJlc3VsdAoAAiRsBRBwcm9kdWN0aW9uTWF0cml4CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQNuaWwAAAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQtpdGVyYXRlUHJvZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyBAluZXdIZWFsdGgJAJcDAQkAzAgCBQVtYXhIUAkAzAgCCQBkAgUJb2xkSGVhbHRoCAUGcmVzdWx0Al8zBQNuaWwJAJQKAgkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJbmV3SGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQC5CQIIBQZyZXN1bHQCXzECAV8FA25pbAIBOgUDbmlsBQ1wcm9sb2dBY3Rpb25zCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQJAGgCBQZ4cEhlYWwJAGQCCQBkAgUKcXVhbnRpdHlMMQUKcXVhbnRpdHlMMgUKcXVhbnRpdHlMMwJfMQUJbmV3SGVhbHRoAWkBBmhlYWxFUwAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQEPY2hlY2tUb3VybmFtZW50AQULZHVja0Fzc2V0SWQJAAIBAhZoZWFsRVNfY2hlY2tUb3VybmFtZW50BAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJb2xkSGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBmAgUJb2xkSGVhbHRoAAAJAAIBAihIUCBzaG91bGQgYmUgMCB0byBjYWxsIEVtZXJnZW5jeSBTZXJ2aWNlBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvZExpc3QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8EDW1lZEtpdEFtb3VudDEDCQBmAgkAkAMBBQhwcm9kTGlzdAAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAAAABA1tZWRLaXRBbW91bnQyAwkAZgIJAJADAQUIcHJvZExpc3QAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAEAAAQNbWVkS2l0QW1vdW50MwMJAGYCCQCQAwEFCHByb2RMaXN0AAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAACAAADAwMJAGYCBQ1tZWRLaXRBbW91bnQxAAAGCQBmAgUNbWVkS2l0QW1vdW50MgAABgkAZgIFDW1lZEtpdEFtb3VudDMAAAkAAgECH1lvdSBoYXZlIHRvIHVzZSBvd24gTWVkaWNhbCBLaXQECGV4aXN0U3RyCQCdCAIFD2Vjb25vbXlDb250cmFjdAkBDmtleUVzV2FyZWhvdXNlAAQMZXhpc3RBbW91bnRzAwkBCWlzRGVmaW5lZAEFCGV4aXN0U3RyCQC8CQIJAQV2YWx1ZQEFCGV4aXN0U3RyAgFfBQNuaWwEC2V4aXN0QW1vdW50AwkAZgIJAJADAQUMZXhpc3RBbW91bnRzAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQxleGlzdEFtb3VudHMAAAAAAwkAZwIAAAULZXhpc3RBbW91bnQJAAIBAjlUaGVyZSBhcmUgbm8gTWVkaWNhbCBLaXRzIEwxIGF0IEVtZXJnZW5jeSBTZXJ2aWNlIHN0b3JhZ2UECW5ld0hlYWx0aAkAZAIFCW9sZEhlYWx0aAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4AAACAV8FCnJJZHhFZmZlY3QEBW5ld0VTCQC5CQIJAMwIAgkApAMBCQBlAgULZXhpc3RBbW91bnQAAQkA0QgCBQxleGlzdEFtb3VudHMAAAIBXwQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAAAAgFfBAh0b3RhbE1hdAkBEmdldFJlY2lwZU1hdGVyaWFscwEFBnJlY2lwZQQJc2VsbFByaWNlCQBrAwkAaAIFCHRvdGFsTWF0BQpFU1NFTExDT0VGBRBSRVNPVVJDRVBSSUNFTUlOCQBoAgUFTVVMVDgFDlBST0RVQ1RQS0dTSVpFAwkBAiE9AggFA3BtdAZhbW91bnQFCXNlbGxQcmljZQkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFCXNlbGxQcmljZQQGcmVzdWx0CQEIYXNTdHJpbmcBCQD8BwQFD2Vjb25vbXlDb250cmFjdAIPdXBkYXRlRXNTdG9yYWdlCQDMCAIFBW5ld0VTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC3VzZHRBc3NldElkBQlzZWxsUHJpY2UFA25pbAkAlAoCCQDOCAIJAM0IAgUNcHJvbG9nQWN0aW9ucwkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUJbmV3SGVhbHRoCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFCHhwQ2FsbEVTAl8xBQZyZXN1bHQBaQEOdXBkYXRlQmFja3BhY2sCC2R1Y2tBc3NldElkB25ld1BhY2sDCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQFB25ld1BhY2sFA25pbAUHbmV3UGFjawFpAQ9jb21taXRGb3JSYW5kb20ABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQLZmluaXNoQmxvY2sJAGQCBQZoZWlnaHQFC3JhbmRvbURlbGF5BARhZGRyCQClCAEIBQFpBmNhbGxlcgkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQlrZXlDb21taXQBBQRhZGRyBQtmaW5pc2hCbG9jawUDbmlsBQ1wcm9sb2dBY3Rpb25zBQtmaW5pc2hCbG9jawFpAQxyZXZlYWxSYW5kb20BCG1heFZhbHVlBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQEYWRkcgkApQgBCAUBaQZjYWxsZXIECWZpbmlzaEtleQkBCWtleUNvbW1pdAEFBGFkZHIEC2ZpbmlzaEJsb2NrCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUJZmluaXNoS2V5AiRZb3UgaGF2ZSB0byBjb21taXRGb3JSYW5kb20oKSBmaXJzdCEDCQBmAgULZmluaXNoQmxvY2sFBmhlaWdodAkAAgEJAKwCAgI0UmFuZG9tIG51bWJlciBpcyBub3QgcmVhZHkgeWV0LCB3YWl0IHVudGlsIGhlaWdodCA9IAkApAMBBQtmaW5pc2hCbG9jawQHZW50cm9weQkBBXZhbHVlAQgJAQV2YWx1ZQEJAO0HAQULZmluaXNoQmxvY2sDdnJmBARzYWx0CQCbAwEJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBEWtleUxhc3RUeElkQnlVc2VyAQUEYWRkcgIABARyYW5kCQEPZ2V0UmFuZG9tTnVtYmVyAwUIbWF4VmFsdWUFBHNhbHQFB2VudHJvcHkJAJQKAgkAzggCCQDMCAIJAQtEZWxldGVFbnRyeQEFCWZpbmlzaEtleQUDbmlsBQ1wcm9sb2dBY3Rpb25zBQRyYW5kAWkBCGJ1eVNMYW5kAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQMJAQIhPQIIBQNwbXQGYW1vdW50BQdFWFBVU0RUCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUHRVhQVVNEVAQGcmVzdWx0CQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAthY3Jlc1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ1hY3Jlc0NvbnRyYWN0AglidXJuQWNyZXMJAMwIAgUMU19DT1NUX0FDUkVTBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAgkAzQgCCAUGcmVzdWx0Al8xCQEOU2NyaXB0VHJhbnNmZXIDBQ9lY29ub215Q29udHJhY3QIBQNwbXQGYW1vdW50BQt1c2R0QXNzZXRJZAgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgkApQgBCAUBaQZjYWxsZXIFCnhwTmV3U0xhbmQCXzEFDXByb2xvZ0FjdGlvbnMJAJQKAggIBQZyZXN1bHQCXzICXzEFC2FjcmVzUmVzdWx0AWkBCmV4cGVkaXRpb24CB21lc3NhZ2UDc2lnBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAh1c2VyQWRkcgkApQgBCAUBaQZjYWxsZXIEAWYJAQxmbGlnaHRDb21tb24DBQh1c2VyQWRkcgUHbWVzc2FnZQUDc2lnBAtkdWNrQXNzZXRJZAgFAWYCXzIECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW1MaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwYFBW1MaXN0BQxFWFBNQVRFUklBTFMCAV8EBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAljdXJyZW50RXEJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssBA0kdDA4MzYzMDgzNzM2CQERc3VidHJhY3RFcXVpcG1lbnQCBQljdXJyZW50RXEIBQFmAl81BAVuZXdFcQgFDSR0MDgzNjMwODM3MzYCXzEED3Nob3VsZFplcm9CdWZmcwgFDSR0MDgzNjMwODM3MzYCXzIEB2lnbm9yZWQIBQ0kdDA4MzYzMDgzNzM2Al8zBAFlCQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAJpZAgIBQFlAl8yAl8xBAZyZXN1bHQDCQBnAgAACAUBZgJfMQkAlQoDCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgAAAkAzAgCCQELU3RyaW5nRW50cnkCBQVlcUtleQUFbmV3RXEFA25pbAIAAAAJAJUKAwkAzggCCAUBZQJfMQMFD3Nob3VsZFplcm9CdWZmcwkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAUDbmlsCQDNCAIJAM0IAgkAzQgCCQDNCAIFA25pbAkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQC5CQIJAMwIAggIBQFlAl8yAl8yCQDMCAICAUwJAMwIAgUCaWQFA25pbAIBXwkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAgFAWYCXzEJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQVuZXdFcQkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIFBm5ld01hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgUCaWQIBQFmAl8zAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIaZXhwZWRpdGlvbl9jaGVja1RvdXJuYW1lbnQEC2FjcmVzUmVzdWx0CQEFYXNJbnQBCQD8BwQFDWFjcmVzQ29udHJhY3QCCWJ1cm5BY3JlcwkAzAgCBQxTX0NPU1RfQUNSRVMFA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCCAUGcmVzdWx0Al8xCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFCnhwTmV3U0xhbmQCXzEFDXByb2xvZ0FjdGlvbnMJAJUKAwgFBnJlc3VsdAJfMggFBnJlc3VsdAJfMwULYWNyZXNSZXN1bHQBaQEQYnV5U0xhbmRGb3JBY3JlcwAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEA2FtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQxhY3Jlc0Fzc2V0SWQJAAIBAhRBQ1JFUyBwYXltZW50cyBvbmx5IQMJAQIhPQIFA2FtdAUMU19DT1NUX0FDUkVTCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUMU19DT1NUX0FDUkVTBAZyZXN1bHQJARJleHBlZGl0aW9uSW50ZXJuYWwCCAUBaQZjYWxsZXIIBQFpDXRyYW5zYWN0aW9uSWQEC2FjcmVzUmVzdWx0CQEFYXNJbnQBCQD8BwQFDWFjcmVzQ29udHJhY3QCCWJ1cm5BY3JlcwkAzAgCBQxTX0NPU1RfQUNSRVMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUMYWNyZXNBc3NldElkBQNhbXQFA25pbAkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgkApQgBCAUBaQZjYWxsZXIFCnhwTmV3U0xhbmQCXzEFDXByb2xvZ0FjdGlvbnMJAJQKAggIBQZyZXN1bHQCXzICXzEFC2FjcmVzUmVzdWx0AWkBDHVwZ3JhZGVJbmZyYQELbGFuZEFzc2V0SWQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBnJlc3VsdAkBDXVwSW5mcmFDb21tb24EBggFAWkGY2FsbGVyAAAFC2xhbmRBc3NldElkBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkCQCUCgIJAM4IAgkAzggCCAUGcmVzdWx0Al8xBQ1wcm9sb2dBY3Rpb25zCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQJAGsDBQ54cFVwZ3JhZGVJbmZyYQgFBnJlc3VsdAJfMwUFTVVMVDgCXzEIBQZyZXN1bHQCXzIBaQEQYWN0aXZhdGVBcnRpZmFjdAIHYXJ0TmFtZQ5sYW5kQXNzZXRJZE9wdAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQZjYWxsZXIEBnJlc3VsdAQHJG1hdGNoMAUHYXJ0TmFtZQMJAAACAgdQUkVTQUxFBQckbWF0Y2gwCQESYWN0aXZhdGVQcmVzYWxlQXJ0AgUEYWRkcgUObGFuZEFzc2V0SWRPcHQDCQAAAgIHT05CT0FSRAUHJG1hdGNoMAkBEmFjdGl2YXRlT25ib2FyZEFydAEFBGFkZHIJAAIBAhBVbmtub3duIGFydGlmYWN0CQDOCAIFBnJlc3VsdAUNcHJvbG9nQWN0aW9ucwFpAQptZXJnZUxhbmRzAQxsYW5kQXNzZXRJZHMEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBnJlc3VsdAkBC21lcmdlQ29tbW9uAgkApQgBCAUBaQZjYWxsZXIFDGxhbmRBc3NldElkcwkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQUNcHJvbG9nQWN0aW9ucwgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgkApQgBCAUBaQZjYWxsZXIFB3hwTWVyZ2UCXzEIBQZyZXN1bHQCXzIBaQENY2FyZ29FeGNoYW5nZQIMY2FyZ29MaXN0U3RyC2xhbmRBc3NldElkBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBApjYXJnb1BhcnRzCQC8CQIFDGNhcmdvTGlzdFN0cgIBOgQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMECWxhbmRJbmRleAkAaQIJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQUFU1NJWkUECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OBANsb2MJALUJAgkBBXZhbHVlAQULY3VyTG9jYXRpb24CAV8DCQECIT0CCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBTAkAAgEJAKwCAgkArAICAhZEdWNrIGxvY2F0aW9uIHR5cGUgaXMgCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIRLCBidXQgc2hvdWxkIGJlIEwDCQECIT0CCQCRAwIFA2xvYwUIbG9jSWR4SWQFC2xhbmRBc3NldElkCQACAQkArAICAhtEdWNrIHNob3VsZCBiZSBvbiB0aGUgbGFuZCAFC2xhbmRBc3NldElkBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkBAljdXJyZW50V2gJAQxnZXRXYXJlaG91c2UDBQV3aEtleQUJbGFuZEluZGV4BQppbmZyYUxldmVsBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQGcmVzdWx0CQEJbW92ZVN0dWZmAwUKY2FyZ29QYXJ0cwUJY3VycmVudFdoBQtjdXJyZW50UGFjawQEbG9mdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBAVsb2Z0TwkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAgFBnJlc3VsdAJfNwQFbG9mdEYJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAUHdm9sRnJlZQgFBnJlc3VsdAJfNwkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCAUGcmVzdWx0Al80CQDMCAIIBQZyZXN1bHQCXzUJAMwIAggFBnJlc3VsdAJfNgUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5CQC6CQIJAMwIAgkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzCQDMCAIIBQZyZXN1bHQCXzEJAMwIAggFBnJlc3VsdAJfMgkAzAgCCAUGcmVzdWx0Al8zCQDMCAIJALkJAgkAzAgCCQCRAwIFBGxvZnQFCXZvbExvY2tlZAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkAkQMCBQRsb2Z0BQh2b2xUb3RhbAUDbmlsAgFfBQNuaWwCAToFA25pbAUNcHJvbG9nQWN0aW9ucwFpAQ1zYXZlV2FyZWhvdXNlAgV3aFN0cgtsYW5kQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAQCd2gJALwJAgUFd2hTdHICAToDCQECIT0CCQCQAwEFAndoAAUJAAIBAjB3YXJlaG91c2Ugc3RyaW5nIHNob3VsZCBjb250YWluIDQgJzonIHNlcGFyYXRvcnMEBWxvZnRMCQCRAwIJALUJAgkAkQMCBQJ3aAUJd2hJZHhMT0ZUAgFfBQl2b2xMb2NrZWQEBWxvZnRPCQEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBBQJ3aAQFbG9mdFQJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUCd2gFC3doSWR4TGV2ZWxzBAVsb2Z0RgkAZQIJAGUCBQVsb2Z0VAkBDXBhcnNlSW50VmFsdWUBBQVsb2Z0TAUFbG9mdE8DCQBmAgAABQVsb2Z0RgkAAgECME9wZXJhdGlvbiBsZWFkcyB0byBuZWdhdGl2ZSBmcmVlIHdhcmVob3VzZSBzcGFjZQQIbmV3V2hTdHIJALoJAgkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCCQCRAwIFAndoBQh3aElkeFJlcwkAzAgCCQCRAwIFAndoBQh3aElkeE1hdAkAzAgCCQCRAwIFAndoBQl3aElkeFByb2QJAMwIAgkAuQkCCQDMCAIFBWxvZnRMCQDMCAIJAKQDAQUFbG9mdE8JAMwIAgkApAMBBQVsb2Z0RgkAzAgCCQCkAwEFBWxvZnRUBQNuaWwCAV8FA25pbAIBOgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5BQhuZXdXaFN0cgUDbmlsBQhuZXdXaFN0cgFpAQ1zZXRDdXN0b21OYW1lAwdhc3NldElkCmN1c3RvbU5hbWUEdHlwZQQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQMJAQIhPQIIBQNwbXQGYW1vdW50BQxSRU5BTUlOR0NPU1QJAAIBCQCsAgICElBheW1lbnQgc2hvdWxkIGJlIAkApAMBBQxSRU5BTUlOR0NPU1QDCQEIY29udGFpbnMCBQpjdXN0b21OYW1lAgJfXwkAAgEJAKwCAgIeTmFtZSBzaG91bGQgbm90IGNvbnRhaW4gJ19fJzogBQpjdXN0b21OYW1lAwkAZgIJALECAQUKY3VzdG9tTmFtZQUKTUFYTkFNRUxFTgkAAgEJAKwCAgIZTmFtZSB0b28gbG9uZywgbWF4TGVuZ3RoPQkApAMBBQpNQVhOQU1FTEVOBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQHYWN0aW9ucwQHJG1hdGNoMAUEdHlwZQMJAAACAgdBQ0NPVU5UBQckbWF0Y2gwBApyZXZlcnNlS2V5CQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEFCmN1c3RvbU5hbWUECW5hbWVPd25lcgkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFCW5hbWVPd25lcgkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQQNYWRkclRvTmFtZUtleQkBFmtleUFkZHJlc3NUb0N1c3RvbU5hbWUBBQRhZGRyBAdvbGROYW1lCQCiCAEFDWFkZHJUb05hbWVLZXkEB2ZyZWVPbGQDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ1hZGRyVG9OYW1lS2V5BQpjdXN0b21OYW1lCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQRhZGRyCAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQx4cEN1c3RvbU5hbWUCXzEDCQAAAgIETEFORAUHJG1hdGNoMAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFB2Fzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQKcmV2ZXJzZUtleQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA5hc3NldFRvTmFtZUtleQkBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQUHYXNzZXRJZAQHb2xkTmFtZQkAoggBBQ5hc3NldFRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ5hc3NldFRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUHYXNzZXRJZAgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgUMeHBDdXN0b21OYW1lAl8xAwkAAAICBERVQ0sFByRtYXRjaDAEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQdhc3NldElkAwMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQYJAQEhAQkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgkAAgEJAKwCAggFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKRFVDS1BSRUZJWAINIGlzIG5vdCB5b3VycwQKcmV2ZXJzZUtleQkBGmtleUR1Y2tDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQQJbmFtZU93bmVyCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUJbmFtZU93bmVyCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lBA5hc3NldFRvTmFtZUtleQkBGmtleUR1Y2tBc3NldElkVG9DdXN0b21OYW1lAQUHYXNzZXRJZAQHb2xkTmFtZQkAoggBBQ5hc3NldFRvTmFtZUtleQQHZnJlZU9sZAMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEJAQV2YWx1ZQEFB29sZE5hbWUFA25pbAUDbmlsCQDOCAIJAM0IAgkAzQgCBQdmcmVlT2xkCQELU3RyaW5nRW50cnkCBQ5hc3NldFRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUHYXNzZXRJZAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFB2Fzc2V0SWQFDHhwQ3VzdG9tTmFtZQJfMQkAAgECE1Vua25vd24gZW50aXR5IHR5cGUJAJQKAgkAzggCCQDNCAIFB2FjdGlvbnMJAQ5TY3JpcHRUcmFuc2ZlcgMFD2Vjb25vbXlDb250cmFjdAgFA3BtdAZhbW91bnQFC3VzZHRBc3NldElkBQ1wcm9sb2dBY3Rpb25zAAABaQEMc2V0UmVmZXJyYWxzAglvbGRQbGF5ZXIJbmV3UGxheWVyAwkBAiE9AggFAWkPY2FsbGVyUHVibGljS2V5BQNwdWIJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUJb2xkUGxheWVyCQACAQkArAICAhFJbnZhbGlkIGFkZHJlc3M6IAUJb2xkUGxheWVyBApuZXdiaWVBZGRyCQCmCAEFCW5ld1BsYXllcgMJAQEhAQkBCWlzRGVmaW5lZAEFCm5ld2JpZUFkZHIJAAIBCQCsAgICEUludmFsaWQgYWRkcmVzczogBQluZXdQbGF5ZXIECW9sZExhc3RUeAkAoggBCQERa2V5TGFzdFR4SWRCeVVzZXIBBQlvbGRQbGF5ZXIDCQEBIQEJAQlpc0RlZmluZWQBBQlvbGRMYXN0VHgJAAIBAiJvbGRQbGF5ZXIgZGlkbid0IGRvIGFueSB0eCBpbiBnYW1lAwkAZwIAAAgJAO8HAQkBBXZhbHVlAQUKbmV3YmllQWRkcglhdmFpbGFibGUJAAIBAhZuZXdQbGF5ZXIgaGFzIG5vIFdBVkVTBAdvbGRzS2V5CQEJa2V5T2xkaWVzAAQEb2xkcwkAoggBBQdvbGRzS2V5BAZvbGRpZXMDCQEJaXNEZWZpbmVkAQUEb2xkcwkAvAkCCQEFdmFsdWUBBQRvbGRzAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUGb2xkaWVzBQluZXdQbGF5ZXIJAAIBCQCsAgIFCW5ld1BsYXllcgImIGlzIG5vdCBuZXdiaWUgKGFscmVhZHkgaGFzIHJlZmVycmFscykECHJlZkJ5S2V5CQEPa2V5QWRkcmVzc1JlZkJ5AQUJbmV3UGxheWVyBAVyZWZCeQkAoggBBQhyZWZCeUtleQMDCQEJaXNEZWZpbmVkAQUFcmVmQnkJAQlpc0RlZmluZWQBCQCmCAEJAQV2YWx1ZQEFBXJlZkJ5BwkAAgEJAKwCAgkArAICBQluZXdQbGF5ZXICFCBhbHJlYWR5IGhhcyByZWZCeTogCQEFdmFsdWUBBQVyZWZCeQQHcmVmc0tleQkBE2tleUFkZHJlc3NSZWZlcnJhbHMBBQlvbGRQbGF5ZXIEBHJlZnMJAKIIAQUHcmVmc0tleQQJcmVmc0FycmF5AwkBCWlzRGVmaW5lZAEFBHJlZnMJALwJAgkBBXZhbHVlAQUEcmVmcwIBXwUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFCXJlZnNBcnJheQUJbmV3UGxheWVyCQACAQkArAICCQCsAgIJAKwCAgUJb2xkUGxheWVyAhIgYWxyZWFkeSBjb250YWlucyAFCW5ld1BsYXllcgIRIHdpdGhpbiByZWZlcnJhbHMEB25ld1JlZnMJALoJAgkAzQgCBQlyZWZzQXJyYXkFCW5ld1BsYXllcgIBXwQHbmV3T2xkcwMJAQ9jb250YWluc0VsZW1lbnQCBQZvbGRpZXMFCW9sZFBsYXllcgkBBXZhbHVlAQUEb2xkcwkAugkCCQDNCAIFBm9sZGllcwUJb2xkUGxheWVyAgFfCQCUCgIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQhyZWZCeUtleQUJb2xkUGxheWVyCQDMCAIJAQtTdHJpbmdFbnRyeQIFB3JlZnNLZXkFB25ld1JlZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgUHb2xkc0tleQUHbmV3T2xkcwUDbmlsBQ1wcm9sb2dBY3Rpb25zAAABaQEQZGlzdHJpYnV0ZVBvaW50cwUIc3RyZW5ndGgIYWNjdXJhY3kJaW50ZWxsZWN0CWVuZHVyYW5jZQlkZXh0ZXJpdHkEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAt2aXJ0V2xnRGF0YQkBCWFzQW55TGlzdAEJAPwHBAULd2xnQ29udHJhY3QCEmNoZWNrV2xnWHBSRUFET05MWQkAzAgCBQRhZGRyBQNuaWwFA25pbAQNdmlydFdsZ1BvaW50cwkBBWFzSW50AQkAkQMCBQt2aXJ0V2xnRGF0YQABBA0kdDA5OTU0ODk5OTM4AwkAZwIAAAUNdmlydFdsZ1BvaW50cwkAlAoCAAAFA25pbAQHZGVsdGFYUAkBBWFzSW50AQkA/AcEBQt3bGdDb250cmFjdAIJdGFrZVdsZ1hwCQDMCAIFBGFkZHIFA25pbAUDbmlsAwkAAAIFB2RlbHRhWFAFB2RlbHRhWFAJAJQKAgUNdmlydFdsZ1BvaW50cwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDGtleVVzZXJMZXZlbAEFBGFkZHIJAQVhc0ludAEJAJEDAgULdmlydFdsZ0RhdGEAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCWtleVVzZXJYUAEFBGFkZHIJAQVhc0ludAEJAJEDAgULdmlydFdsZ0RhdGEAAgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAl3bGdQb2ludHMIBQ0kdDA5OTU0ODk5OTM4Al8xBAp3bGdBY3Rpb25zCAUNJHQwOTk1NDg5OTkzOAJfMgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBApmcmVlS2V5QWNjCQERa2V5VXNlckZyZWVQb2ludHMBBQRhZGRyBA1mcmVlUG9pbnRzQWNjCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQpmcmVlS2V5QWNjAAAFCXdsZ1BvaW50cwQLZnJlZUtleUR1Y2sJARFrZXlEdWNrRnJlZVBvaW50cwEFC2R1Y2tBc3NldElkBA5mcmVlUG9pbnRzRHVjawkBC3ZhbHVlT3JFbHNlAgkAnwgBBQtmcmVlS2V5RHVjawAABAdzdW1GcmVlCQBkAgUNZnJlZVBvaW50c0FjYwUOZnJlZVBvaW50c0R1Y2sED3N1bVRvRGlzdHJpYnV0ZQkAZAIJAGQCCQBkAgkAZAIFCHN0cmVuZ3RoBQhhY2N1cmFjeQUJaW50ZWxsZWN0BQllbmR1cmFuY2UFCWRleHRlcml0eQMJAGYCBQ9zdW1Ub0Rpc3RyaWJ1dGUFB3N1bUZyZWUJAAIBCQCsAgIJAKwCAgIPVGhlcmUgYXJlIG9ubHkgCQCkAwEFB3N1bUZyZWUCGiBmcmVlIHBvaW50cyB0byBkaXN0cmlidXRlBAhjaGFyc0tleQkBDGtleUR1Y2tDaGFycwEFC2R1Y2tBc3NldElkBAVjaGFycwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFCGNoYXJzS2V5AgkwXzBfMF8wXzACAV8EBm5ld0FjYwkAZQIFDWZyZWVQb2ludHNBY2MFD3N1bVRvRGlzdHJpYnV0ZQkAlAoCCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUKZnJlZUtleUFjYwMJAGYCAAAFBm5ld0FjYwAABQZuZXdBY2MJAMwIAgkBDEludGVnZXJFbnRyeQIFC2ZyZWVLZXlEdWNrAwkAZgIAAAUGbmV3QWNjCQBkAgUOZnJlZVBvaW50c0R1Y2sFBm5ld0FjYwUOZnJlZVBvaW50c0R1Y2sJAMwIAgkBC1N0cmluZ0VudHJ5AgUIY2hhcnNLZXkJALkJAgkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDGNoYXJTdHJlbmd0aAUIc3RyZW5ndGgJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyQWNjdXJhY3kFCGFjY3VyYWN5CQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckludGVsbGVjdAUJaW50ZWxsZWN0CQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckVuZHVyYW5jZQUJZW5kdXJhbmNlCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckRleHRlcml0eQUJZGV4dGVyaXR5BQNuaWwCAV8FA25pbAUNcHJvbG9nQWN0aW9ucwUKd2xnQWN0aW9ucwAAAWkBHHNwbGl0QnlHbG9iYWxXZWlnaHRzUkVBRE9OTFkBBmFtb3VudAkAlAoCBQNuaWwJARJnZXROZWVkZWRNYXRlcmlhbHMBBQZhbW91bnQBaQEkc3BsaXRCeUdsb2JhbEFuZExvY2FsV2VpZ2h0c1JFQURPTkxZAwltYXRBbW91bnQJcmVzQW1vdW50CHRlcnJhaW5zBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEFCHRlcnJhaW5zCQCUCgIFA25pbAkAlAoCCQESZ2V0TmVlZGVkTWF0ZXJpYWxzAQUJbWF0QW1vdW50CQETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFCXJlc0Ftb3VudAUNdGVycmFpbkNvdW50cwFpARNnZXRCYWNrcGFja1JFQURPTkxZAQtkdWNrQXNzZXRJZAkAlAoCBQNuaWwJALkJAgkBC2dldEJhY2twYWNrAQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQCAToBaQEUZ2V0V2FyZWhvdXNlUkVBRE9OTFkBC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAkAlAoCBQNuaWwJALoJAgkBDGdldFdhcmVob3VzZQMJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAUJbGFuZEluZGV4BQppbmZyYUxldmVsAgE6AWkBCnNhdmVMYXN0VHgAAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQt3bGdDb250cmFjdAkAzAgCBQ9lY29ub215Q29udHJhY3QJAMwIAgUSdG91cm5hbWVudENvbnRyYWN0CQDMCAIFDWFjcmVzQ29udHJhY3QFA25pbAgFAWkGY2FsbGVyCQACAQINQWNjZXNzIGRlbmllZAkAlAoCCQEGcHJvbG9nAQUBaQAqAWkBD3VwZGF0ZUR1Y2tTdGF0cwILZHVja0Fzc2V0SWQHZGVsdGFYUAMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFB2RlbHRhWFABaQEOdXBkYXRlQWNjU3RhdHMCBGFkZHIHZGVsdGFYUAMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUPZWNvbm9teUNvbnRyYWN0CQDMCAIFDWFjcmVzQ29udHJhY3QFA25pbAgFAWkGY2FsbGVyCQACAQINQWNjZXNzIGRlbmllZAkBFnVwZGF0ZUFjY1N0YXRzSW50ZXJuYWwCBQRhZGRyBQdkZWx0YVhQAWkBCWVxdWlwRHVjawEJZXF1aXBtZW50BA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIZZXF1aXBEdWNrX2NoZWNrVG91cm5hbWVudAQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQEC2N1cnJlbnRTZWdzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssAgFfBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbmV3RXEJALUJAgUJZXF1aXBtZW50AgFfAwkBAiE9AgkAkAMBBQVuZXdFcQULTlVNU0VHTUVOVFMJAAIBAhZXcm9uZyBlcXVpcG1lbnQgc3RyaW5nBAl0ZW1wUHJvZEIJAQZkcmVzc0IEBQtjdXJyZW50U2VncwkBDnByb2RTdHJUb0J5dGVzAQkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBgUDbmlsBAhzZWdCcEF1eAkAkQMCCQC1CQIJAJEDAgUFbmV3RXEFC3NlZ0JhY2twYWNrAgE7AAEECmJ1ZmZFZmZlY3QDCQAAAgUIc2VnQnBBdXgCAAAABARhdXgwCQCRAwIJALUJAgUIc2VnQnBBdXgCASwAAAMJAAACBQRhdXgwAgAAAAQGaWR4Q250CQC1CQIFBGF1eDACAToEA2lkeAkAkQMCBQZpZHhDbnQAAAQDY250CQCRAwIFBmlkeENudAABAwMDAwMJAAACBQNpZHgCAjA2BgkAAAIFA2lkeAICMDcGCQAAAgUDaWR4AgIwOAkBAiE9AgUDY250AgAHCQBmAgkBDXBhcnNlSW50VmFsdWUBBQNjbnQAAAcJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAkBDXBhcnNlSW50VmFsdWUBBQNpZHgCAV8FCnJJZHhFZmZlY3QAAAQFc3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAUKYnVmZkVmZmVjdAYECG5ld1Byb2RCCQEGZHJlc3NCBAUFbmV3RXEFCXRlbXBQcm9kQgcFBXN0YXRzBApuZXdQcm9kU3RyCQEOYnl0ZXNUb1Byb2RTdHIBBQhuZXdQcm9kQgkAlAoCCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFCWVxdWlwbWVudAkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgUKbmV3UHJvZFN0cgUDbmlsAgE6CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAHCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAICQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAJCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwAKCQDMCAIJAKQDAQkAkQMCBQVzdGF0cwALBQNuaWwCAV8FA25pbAUNcHJvbG9nQWN0aW9ucwAAAWkBE2luaXREdWNrVG91ckF0dGVtcHQBC2R1Y2tBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBRJ0b3VybmFtZW50Q29udHJhY3QJAAIBAg1BY2Nlc3MgZGVuaWVkBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJY3VySGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFAECWN1ckxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXJMb2NLZXkFD0RFRkFVTFRMT0NBVElPTgQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABAx0b3VyTG9jYXRpb24JAKwCAgkApAMBBQZsYXN0SWQCBF9UXzAJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQFCWN1ckhlYWx0aAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQVtYXhIUAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQtjdXJMb2NhdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCBQljdXJMb2NLZXkFDHRvdXJMb2NhdGlvbgUDbmlsBQx0b3VyTG9jYXRpb24BaQEMYnJlYWtBdHRlbXB0AAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECWN1ckxvY0tleQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXJMb2NLZXkFD0RFRkFVTFRMT0NBVElPTgMJAQIhPQIJAJEDAgkAtQkCBQtjdXJMb2NhdGlvbgIBXwUKbG9jSWR4VHlwZQIBVAkAAgECIllvdXIgZHVjayBpcyBub3QgaW4gdGhlIHRvdXJuYW1lbnQEC3NhdmVkSGVhbHRoCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAQNc2F2ZWRMb2NhdGlvbgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAlAoCCQDNCAIJAM0IAgUNcHJvbG9nQWN0aW9ucwkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFC3NhdmVkSGVhbHRoCQELU3RyaW5nRW50cnkCBQljdXJMb2NLZXkFDXNhdmVkTG9jYXRpb24FC2N1ckxvY2F0aW9uAWkBFGJyZWFrQXR0ZW1wdENhbGxiYWNrAAMJAQIhPQIIBQFpBmNhbGxlcgUSdG91cm5hbWVudENvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpDG9yaWdpbkNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkCQERQGV4dHJOYXRpdmUoMTA1NSkBCQEOa2V5U2F2ZWRIZWFsdGgBBQtkdWNrQXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQJARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQFA25pbAIUYnJlYWtBdHRlbXB0Q2FsbGJhY2sBaQEWZXhpdFRvdXJuYW1lbnRJbnRlcm5hbAELZHVja0Fzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg1BY2Nlc3MgZGVuaWVkBAtzYXZlZEhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQEDXNhdmVkTG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAULc2F2ZWRIZWFsdGgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ1zYXZlZExvY2F0aW9uBQNuaWwHAWkBD3Byb2Nlc3NEZWxpdmVyeQELZHVja0Fzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg1BY2Nlc3MgZGVuaWVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQJZnVuZFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIFD2Vjb25vbXlDb250cmFjdAUPZGVsaXZlcnlGdW5kS2V5AAADCQBmAgUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQlmdW5kVG90YWwJAAIBCQCsAgICIERlbGl2ZXJ5IGlzIG5vdCBhdmFpbGFibGUsIGZ1bmQ9CQEKZml4ZWRQb2ludAIFCWZ1bmRUb3RhbAAGBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAhjb3VudEtleQkBFGtleVVzZXJEZWxpdmVyeUNvdW50AQUEYWRkcgQHbGFzdERheQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5VXNlckxhc3REZWxpdmVyeURheQEFBGFkZHIAAAQFdG9kYXkJAGkCBQNub3cFCURBWU1JTExJUwQFY291bnQDCQAAAgUHbGFzdERheQUFdG9kYXkJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUIY291bnRLZXkAAAAABAVhY3JlcwkBC3ZhbHVlT3JFbHNlAgkAmggCBQ1hY3Jlc0NvbnRyYWN0CQEaa2V5QWNyZXNTdGFrZWRBbW91bnRCeVVzZXIBBQRhZGRyAAAEEWFsbG93ZWREZWxpdmVyaWVzCQBkAgUXQUxMT1dFRF9GUkVFX0RFTElWRVJJRVMJAGkCBQVhY3JlcwUaQUNSRVNfRk9SX0RFTElWRVJZX0FUVEVNUFQDCQBnAgUFY291bnQFEWFsbG93ZWREZWxpdmVyaWVzCQACAQkArAICCQCsAgICEVlvdSBhbHJlYWR5IHVzZWQgCQCkAwEFEWFsbG93ZWREZWxpdmVyaWVzAhwgZGVsaXZlcnkgYXR0ZW1wdHMgZm9yIHRvZGF5BA5nbG9iYWxDb3VudEtleQkBFGtleUR1Y2tEZWxpdmVyeUNvdW50AQULZHVja0Fzc2V0SWQEBnJld2FyZAkA/AcEBQ9lY29ub215Q29udHJhY3QCEnNlbmREZWxpdmVyeVJld2FyZAkAzAgCBQRhZGRyBQNuaWwFA25pbAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQhjb3VudEtleQkAZAIFBWNvdW50AAEJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlVc2VyTGFzdERlbGl2ZXJ5RGF5AQUEYWRkcgUFdG9kYXkJAMwIAgkBDEludGVnZXJFbnRyeQIFDmdsb2JhbENvdW50S2V5CQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ5nbG9iYWxDb3VudEtleQAAAAEFA25pbAUGcmV3YXJkAWkBB3JvYkxhbmQCB21lc3NhZ2UDc2lnBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAZ3bGdBbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUKd2xnQXNzZXRJZAkAAgECFVdMR09MRCBwYXltZW50cyBvbmx5IQMJAQIhPQIFBndsZ0FtdAUSTUlOX1dMR09MRF9ST0JCRVJZCQACAQkArAICCQCsAgICElBheW1lbnQgc2hvdWxkIGJlIAkBCmZpeGVkUG9pbnQCBRJNSU5fV0xHT0xEX1JPQkJFUlkACAIHIFdMR09MRAQEYWRkcgkApQgBCAUBaQZjYWxsZXIDCQEBIQEJAMQTAwUHbWVzc2FnZQUDc2lnBQNwdWIJAAIBAhhzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gEBXBhcnRzCQC8CQIJALAJAQUHbWVzc2FnZQIBOwQGcm9iTG9nCQC8CQIJAJEDAgUFcGFydHMAAAIBfAQCaHAJALUJAgkAkQMCBQZyb2JMb2cFCHJsSGVhbHRoAgFfBAVjdXJIUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmhwAAAEBW5ld0hQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAQQIcHJvZFVzZWQJAJEDAgUGcm9iTG9nBQtybFByb2RzVXNlZAQIbGFzdFBhcnQJALUJAgkAkQMCBQVwYXJ0cwABAgF8BAdyb2JUeXBlCQCRAwIFCGxhc3RQYXJ0BQZybFR5cGUDCQECIT0CBQdyb2JUeXBlAgFCCQACAQIeT25seSBiYW5rIHJvYmJlcnkgaXMgc3VwcG9ydGVkBAR0aW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIbGFzdFBhcnQFC3JsVGltZXN0YW1wAwMJAGYCBQR0aW1lCQBkAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBgkAZgIJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAURRklWRU1JTlVURVNNSUxMSVMFBHRpbWUJAAIBCQCsAgIJAKwCAgkArAICAhxzaWduYXR1cmUgb3V0ZGF0ZWQ6IGxvZ1RpbWU9CQCkAwEFBHRpbWUCCSwgYmNUaW1lPQkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJdHhGcm9tTXNnCQCRAwIFCGxhc3RQYXJ0BQhybExhc3RUeAQGbGFzdFR4CQELdmFsdWVPckVsc2UCCQCiCAEJARFrZXlMYXN0VHhJZEJ5VXNlcgEFBGFkZHICAAMJAQIhPQIFBmxhc3RUeAUJdHhGcm9tTXNnCQACAQkArAICCQCsAgIJAKwCAgIeVHggaWRzIGRvbid0IG1hdGNoISBJbiBzdGF0ZTogBQZsYXN0VHgCCiwgaW4gbXNnOiAFCXR4RnJvbU1zZwQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQJY3VycmVudEVxCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAQPJHQwMTE3MTE2MTE3MjI3CQERc3VidHJhY3RFcXVpcG1lbnQCBQljdXJyZW50RXEFCHByb2RVc2VkBAVuZXdFcQgFDyR0MDExNzExNjExNzIyNwJfMQQPc2hvdWxkWmVyb0J1ZmZzCAUPJHQwMTE3MTE2MTE3MjI3Al8yBAhpc0JwVXNlZAgFDyR0MDExNzExNjExNzIyNwJfMwQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04DCQEOaXNJblRvdXJuYW1lbnQCBRJ0b3VybmFtZW50Q29udHJhY3QFC2N1ckxvY2F0aW9uCQACAQIqWW91ciBkdWNrIGlzIHRha2luZyBwYXJ0IGluIHRoZSB0b3VybmFtZW50BANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAhjb3VudEtleQkBE2tleVVzZXJSb2JiZXJ5Q291bnQBBQRhZGRyBAdsYXN0RGF5CQELdmFsdWVPckVsc2UCCQCfCAEJARVrZXlVc2VyTGFzdFJvYmJlcnlEYXkBBQRhZGRyAAAEBXRvZGF5CQBpAgUDbm93BQlEQVlNSUxMSVMEBWNvdW50AwkAAAIFB2xhc3REYXkFBXRvZGF5CQELdmFsdWVPckVsc2UCCQCfCAEFCGNvdW50S2V5AAAAAAQFYWNyZXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUNYWNyZXNDb250cmFjdAkBGmtleUFjcmVzU3Rha2VkQW1vdW50QnlVc2VyAQUEYWRkcgAABBBhbGxvd2VkUm9iYmVyaWVzCQBkAgUWQUxMT1dFRF9GUkVFX1JPQkJFUklFUwkAaQIFBWFjcmVzBRlBQ1JFU19GT1JfUk9CQkVSWV9BVFRFTVBUAwkAZwIFBWNvdW50BRBhbGxvd2VkUm9iYmVyaWVzCQACAQkArAICCQCsAgICEVlvdSBhbHJlYWR5IHVzZWQgCQCkAwEFEGFsbG93ZWRSb2JiZXJpZXMCGyByb2JiZXJ5IGF0dGVtcHRzIGZvciB0b2RheQQOZ2xvYmFsQ291bnRLZXkJARNrZXlEdWNrUm9iYmVyeUNvdW50AQULZHVja0Fzc2V0SWQEBGxvb3QDCQBmAgUFbmV3SFAAAAQJZnVuZFRvdGFsCQDwBwIFBHRoaXMFCndsZ0Fzc2V0SWQEBXByaXplAwUIaXNCcFVzZWQJAGgCAAIFEk1JTl9XTEdPTERfUk9CQkVSWQkAaAIABQUSTUlOX1dMR09MRF9ST0JCRVJZAwkAZgIFBXByaXplBQlmdW5kVG90YWwJAAIBCQCsAgIJAKwCAgkArAICAiJSb2JiZXJ5IGlzIG5vdCBhdmFpbGFibGUsIGZ1bmRzID0gCQEKZml4ZWRQb2ludAIFCWZ1bmRUb3RhbAAIAhQgV0xHT0xELCByZXF1aXJlZCA9IAkBCmZpeGVkUG9pbnQCBQVwcml6ZQAICQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUFcHJpemUFCndsZ0Fzc2V0SWQFA25pbAUDbmlsCQCUCgIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM4IAgkAzggCCQDOCAIFDXByb2xvZ0FjdGlvbnMFBGxvb3QDBQ9zaG91bGRaZXJvQnVmZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzAFA25pbAUDbmlsCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQDCQBmAgUFbmV3SFAAAAUMeHBTdWNjZXNzUm9iBQl4cEZhaWxSb2ICXzEJAQxJbnRlZ2VyRW50cnkCCQEYa2V5TGFzdFJvYmJlcnlUaW1lQnlEdWNrAQULZHVja0Fzc2V0SWQFA25vdwkBDEludGVnZXJFbnRyeQIFCGNvdW50S2V5CQBkAgUFY291bnQAAQkBDEludGVnZXJFbnRyeQIJARVrZXlVc2VyTGFzdFJvYmJlcnlEYXkBBQRhZGRyBQV0b2RheQkBDEludGVnZXJFbnRyeQIFDmdsb2JhbENvdW50S2V5CQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ5nbG9iYWxDb3VudEtleQAAAAEJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQVuZXdFcQkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQJAJYDAQkAzAgCBQVuZXdIUAkAzAgCAAAFA25pbAAAAWkBC2J1eVJvYm9EdWNrAAMJAQEhAQUTS1NfQUxMT1dfUk9CT19EVUNLUwkAAgECFUZlYXR1cmUgaXMgdHVybmVkIG9mZgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQMJAQIhPQIIBQNwbXQGYW1vdW50BQ5ST0JPX0RVQ0tfVVNEVAkAAgEJAKwCAgkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAQpmaXhlZFBvaW50AgUOUk9CT19EVUNLX1VTRFQABgIFIFVTRFQEB25leHROdW0JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBD2tleU5leHRSb2JvRHVjawAAAAQFYnl0ZXoJAJoDAQUHbmV4dE51bQQEbmFtZQkArAICCQCsAgIFC1JPQk9fUFJFRklYAgEtCQCyAgIJANwEAQUFYnl0ZXoACAQFY29sb3IJALICAgkA3AQBCQDUFgEFBWJ5dGV6AAYEBWlzc3VlCQDCCAUFBG5hbWUJAKwCAgI3Um9ibyBEdWNrIE5GVCBmb3IgV2F2ZXNMYW5kcyBnYW1lLCBiYWNrZ3JvdW5kIGNvbG9yID0gIwUFY29sb3IAAQAABwQHYXNzZXRJZAkAuAgBBQVpc3N1ZQkAlAoCCQDNCAIJAM0IAgkAzQgCCQDNCAIFDXByb2xvZ0FjdGlvbnMJAQxJbnRlZ2VyRW50cnkCCQEPa2V5TmV4dFJvYm9EdWNrAAkAZAIFB25leHROdW0AAQUFaXNzdWUJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpDG9yaWdpbkNhbGxlcgABBQdhc3NldElkCQEOU2NyaXB0VHJhbnNmZXIDBQ9lY29ub215Q29udHJhY3QIBQNwbXQGYW1vdW50BQt1c2R0QXNzZXRJZAkAlAoCCQDYBAEFB2Fzc2V0SWQFBWNvbG9yAAkEEXI=", "height": 3308012, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8B2fhS4Zq69gjGusVTnD4w3eLioHdYYZYHMc6q1rNf34 Next: Cncztz3R3j6yxkecpx1KZTZEWFQktwULYbXbyRTAvedX Diff:
OldNewDifferences
99
1010 let d = 86400000
1111
12-let e = take(drop(this.bytes, 1), 1)
13-
14-let f = {
15- let g = e
16- if ((base58'2W' == g))
12+let e = 1727740799000
13+
14+let f = take(drop(this.bytes, 1), 1)
15+
16+let g = {
17+ let h = f
18+ if ((base58'2W' == h))
1719 then if (a)
1820 then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
1921 else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
20- else if ((base58'2T' == g))
22+ else if ((base58'2T' == h))
2123 then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
2224 else throw("Unknown chain")
2325 }
2426
25-let h = {
26- let g = e
27- if ((base58'2W' == g))
27+let i = {
28+ let h = f
29+ if ((base58'2W' == h))
2830 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
29- else if ((base58'2T' == g))
31+ else if ((base58'2T' == h))
3032 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
3133 else throw("Unknown chain")
3234 }
3335
34-let i = {
35- let g = e
36- if ((base58'2W' == g))
36+let j = {
37+ let h = f
38+ if ((base58'2W' == h))
3739 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
38- else if ((base58'2T' == g))
40+ else if ((base58'2T' == h))
3941 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
4042 else throw("Unknown chain")
4143 }
4244
43-let j = {
44- let g = e
45- if ((base58'2W' == g))
45+let k = {
46+ let h = f
47+ if ((base58'2W' == h))
4648 then "3P4UH3T9nXpMNpUmSmQjPmEz3G85t3zn6eA"
47- else if ((base58'2T' == g))
49+ else if ((base58'2T' == h))
4850 then "3NBPx1Fciu3JQNEGZ21jSnTdutLNGGBUSXh"
4951 else throw("Unknown chain")
5052 }
5153
52-let k = {
53- let g = e
54- if ((base58'2W' == g))
54+let l = {
55+ let h = f
56+ if ((base58'2W' == h))
5557 then 10000000000
56- else if ((base58'2T' == g))
58+ else if ((base58'2T' == h))
5759 then 100000000
5860 else throw("Unknown chain")
5961 }
6062
61-let l = {
62- let g = e
63- if ((base58'2W' == g))
63+let m = {
64+ let h = f
65+ if ((base58'2W' == h))
6466 then d
65- else if ((base58'2T' == g))
67+ else if ((base58'2T' == h))
6668 then 60000
6769 else throw("Unknown chain")
6870 }
6971
70-let m = "__"
71-
72-let n = 1000000
73-
74-let o = 100000000
75-
76-let p = 25
77-
78-let q = 100
79-
80-let r = 225
81-
82-let s = 400
83-
84-let t = 625
85-
86-let u = [0, 1, 2, 3, 4, 5]
87-
88-func v (w,x) = valueOrErrorMessage(getString(w, x), makeString(["mandatory ", toString(w), ".", x, " is not defined"], ""))
89-
90-
91-let y = 1
92-
93-let z = 2
94-
95-let A = 3
96-
97-let B = 4
98-
99-let C = 7
100-
101-let D = 8
102-
103-func E () = "%s__restConfig"
104-
105-
106-func F () = "%s__restAddr"
107-
108-
109-func G (H) = split_4C(v(H, E()), m)
110-
111-
112-func I (J,K) = valueOrErrorMessage(addressFromString(J[K]), ("Rest cfg doesn't contain address at index " + toString(K)))
113-
114-
115-let L = addressFromStringValue(valueOrElse(getString(this, F()), i))
116-
117-let J = G(L)
118-
119-let M = I(J, y)
120-
121-let N = I(J, z)
122-
123-let O = I(J, A)
124-
125-let P = I(J, B)
126-
127-let Q = I(J, C)
128-
129-let R = I(J, D)
130-
131-let S = 0
132-
133-let T = 1
134-
135-let U = 2
136-
137-let V = 3
138-
139-let W = "wlg_assetId"
140-
141-let X = valueOrErrorMessage(getBinary(P, W), "WLGOLD is not issued yet")
142-
143-let Y = "acresAssetId"
144-
145-let Z = valueOrErrorMessage(getBinary(R, Y), "ACRES is not issued yet")
146-
147-let aa = 2
148-
149-func ab (w) = ("finishBlockFor_" + w)
150-
151-
152-func ac () = "resTypesProportions"
153-
154-
155-func ad (ae) = ("resTypesByContinent_" + ae)
156-
157-
158-func af (ag) = ("stakedLandsByOwner_" + ag)
159-
160-
161-func ah (ag) = ("stakedPiecesByOwner_" + ag)
162-
163-
164-func ai (aj) = {
165- let g = aj
166- if ($isInstanceOf(g, "String"))
72+let n = "__"
73+
74+let o = 1000000
75+
76+let p = 100000000
77+
78+let q = 25
79+
80+let r = 100
81+
82+let s = 225
83+
84+let t = 400
85+
86+let u = 625
87+
88+let v = [0, 1, 2, 3, 4, 5]
89+
90+func w (x,y) = valueOrErrorMessage(getString(x, y), makeString(["mandatory ", toString(x), ".", y, " is not defined"], ""))
91+
92+
93+let z = 1
94+
95+let A = 2
96+
97+let B = 3
98+
99+let C = 4
100+
101+let D = 7
102+
103+let E = 8
104+
105+func F () = "%s__restConfig"
106+
107+
108+func G () = "%s__restAddr"
109+
110+
111+func H (I) = split_4C(w(I, F()), n)
112+
113+
114+func J (K,L) = valueOrErrorMessage(addressFromString(K[L]), ("Rest cfg doesn't contain address at index " + toString(L)))
115+
116+
117+let M = addressFromStringValue(valueOrElse(getString(this, G()), j))
118+
119+let K = H(M)
120+
121+let N = J(K, z)
122+
123+let O = J(K, A)
124+
125+let P = J(K, B)
126+
127+let Q = J(K, C)
128+
129+let R = J(K, D)
130+
131+let S = J(K, E)
132+
133+let T = 0
134+
135+let U = 1
136+
137+let V = 2
138+
139+let W = 3
140+
141+let X = "wlg_assetId"
142+
143+let Y = valueOrErrorMessage(getBinary(Q, X), "WLGOLD is not issued yet")
144+
145+let Z = "acresAssetId"
146+
147+let aa = valueOrErrorMessage(getBinary(S, Z), "ACRES is not issued yet")
148+
149+let ab = 2
150+
151+func ac (x) = ("finishBlockFor_" + x)
152+
153+
154+func ad () = "resTypesProportions"
155+
156+
157+func ae (af) = ("resTypesByContinent_" + af)
158+
159+
160+func ag (ah) = ("stakedLandsByOwner_" + ah)
161+
162+
163+func ai (ah) = ("stakedPiecesByOwner_" + ah)
164+
165+
166+func aj (ak) = {
167+ let h = ak
168+ if ($isInstanceOf(h, "String"))
167169 then {
168- let ak = g
169- ak
170+ let al = h
171+ al
170172 }
171173 else throw("fail to cast into String")
172174 }
173175
174176
175-func al (aj) = {
176- let g = aj
177- if ($isInstanceOf(g, "Int"))
177+func am (ak) = {
178+ let h = ak
179+ if ($isInstanceOf(h, "Int"))
178180 then {
179- let am = g
180- am
181+ let an = h
182+ an
181183 }
182184 else throw("fail to cast into Int")
183185 }
184186
185187
186-func an (aj) = {
187- let g = aj
188- if ($isInstanceOf(g, "List[Any]"))
188+func ao (ak) = {
189+ let h = ak
190+ if ($isInstanceOf(h, "List[Any]"))
189191 then {
190- let ao = g
191- ao
192+ let ap = h
193+ ap
192194 }
193195 else throw("fail to cast into List[Any]")
194196 }
195197
196198
197-func ap (aj) = {
198- let g = aj
199- if ($isInstanceOf(g, "Boolean"))
199+func aq (ak) = {
200+ let h = ak
201+ if ($isInstanceOf(h, "Boolean"))
200202 then {
201- let ak = g
202- ak
203+ let al = h
204+ al
203205 }
204206 else throw("fail to cast into Boolean")
205207 }
206208
207209
208-func aq (ar) = {
209- let g = ar
210- if (("S" == g))
211- then p
212- else if (("M" == g))
213- then q
214- else if (("L" == g))
215- then r
216- else if (("XL" == g))
217- then s
218- else if (("XXL" == g))
219- then t
210+func ar (as) = {
211+ let h = as
212+ if (("S" == h))
213+ then q
214+ else if (("M" == h))
215+ then r
216+ else if (("L" == h))
217+ then s
218+ else if (("XL" == h))
219+ then t
220+ else if (("XXL" == h))
221+ then u
220222 else throw("Unknown land size")
221223 }
222224
223225
224-func as (ak) = isDefined(parseInt(ak))
225-
226-
227-func at () = "contractsBlocked"
228-
229-
230-func au (av) = ("lastTxIdByUser_" + av)
231-
232-
233-func aw (ax,ay) = {
234- let az = pow(10, 0, ay, 0, 0, DOWN)
235- let aA = toString((ax % az))
236- let aB = drop(toString(az), (1 + size(aA)))
237- (((toString((ax / az)) + ".") + aB) + aA)
238- }
239-
240-
241-func aC (aD,aE,aF) = if ((0 >= aD))
226+func at (al) = isDefined(parseInt(al))
227+
228+
229+func au () = "contractsBlocked"
230+
231+
232+func av (aw) = ("lastTxIdByUser_" + aw)
233+
234+
235+func ax (ay,az) = {
236+ let aA = pow(10, 0, az, 0, 0, DOWN)
237+ let aB = toString((ay % aA))
238+ let aC = drop(toString(aA), (1 + size(aB)))
239+ (((toString((ay / aA)) + ".") + aC) + aB)
240+ }
241+
242+
243+func aD (aE,aF,aG) = if ((0 >= aE))
242244 then throw("maxValue should be > 0")
243245 else {
244- let aG = sha256((aE + aF))
245- (toInt(aG) % aD)
246- }
247-
248-
249-func aH () = min([lastBlock.timestamp, 1727740799000])
250-
251-
252-let aI = "LAND"
253-
254-let aJ = "DUCK"
255-
256-let aK = "ROBO"
257-
258-let aL = "PRESALE"
259-
260-let aM = 6
261-
262-let aN = 25
263-
264-let aO = 3456000
265-
266-let aP = 10000000000
267-
268-let aQ = "Africa_F_Africa"
269-
270-let aR = 39637
271-
272-let aS = 10
273-
274-let aT = 50000
275-
276-let aU = 10
277-
278-let aV = 100000000
279-
280-let aW = 0
281-
282-let aX = 200000000
283-
284-let aY = 0
285-
286-let aZ = 200000000
287-
288-let ba = ["First Aid Kit L1", "First Aid Kit L2", "First Aid Kit L3", "Backpack L1", "Backpack L2", "Backpack L3", "Food Ration L1", "Food Ration L2", "Food Ration L3", "Jet Pack L1", "Jet Pack L2", "Jet Pack L3", "Shield L1", "Shield L2", "Shield L3", "Mine L1", "Mine L2", "Mine L3", "Trap L1", "Trap L2", "Trap L3", "Boom-Dog L1", "Boom-Dog L2", "Boom-Dog L3"]
289-
290-let bb = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
291-
292-let bc = 10000000
293-
294-let bd = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_10_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_20_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_30_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_2,1,3,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_5,2,8,0,0,0,0_", "23_23_5_20_23_6_35_2_100_0,0,0,0,0,0,0_", "23_23_5_20_23_6_70_2_150_0,0,0,0,0,0,0_", "23_23_5_20_23_6_105_2_200_0,0,0,0,0,0,0_"]
295-
296-let be = 6
297-
298-let bf = 8
299-
300-let bg = 9
301-
302-let bh = 10
246+ let aH = sha256((aF + aG))
247+ (toInt(aH) % aE)
248+ }
249+
250+
251+func aI () = min([lastBlock.timestamp, e])
252+
253+
254+let aJ = "LAND"
255+
256+let aK = "DUCK"
257+
258+let aL = "ROBO"
259+
260+let aM = "PRESALE"
261+
262+let aN = 6
263+
264+let aO = 25
265+
266+let aP = 3456000
267+
268+let aQ = 10000000000
269+
270+let aR = "Africa_F_Africa"
271+
272+let aS = 39637
273+
274+let aT = 10
275+
276+let aU = 50000
277+
278+let aV = 10
279+
280+let aW = 100000000
281+
282+let aX = 0
283+
284+let aY = 200000000
285+
286+let aZ = 0
287+
288+let ba = 200000000
289+
290+let bb = ["First Aid Kit L1", "First Aid Kit L2", "First Aid Kit L3", "Backpack L1", "Backpack L2", "Backpack L3", "Food Ration L1", "Food Ration L2", "Food Ration L3", "Jet Pack L1", "Jet Pack L2", "Jet Pack L3", "Shield L1", "Shield L2", "Shield L3", "Mine L1", "Mine L2", "Mine L3", "Trap L1", "Trap L2", "Trap L3", "Boom-Dog L1", "Boom-Dog L2", "Boom-Dog L3"]
291+
292+let bc = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
293+
294+let bd = 10000000
295+
296+let be = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_10_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_20_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_30_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_2,1,3,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_5,2,8,0,0,0,0_", "23_23_5_20_23_6_35_2_100_0,0,0,0,0,0,0_", "23_23_5_20_23_6_70_2_150_0,0,0,0,0,0,0_", "23_23_5_20_23_6_105_2_200_0,0,0,0,0,0,0_"]
297+
298+let bf = 6
299+
300+let bg = 8
301+
302+let bh = 9
303303
304304 let bi = 10
305305
306-let bj = 0
307-
308-let bk = 1
309-
310-let bl = 2
311-
312-let bm = 3
313-
314-let bn = 4
315-
316-let bo = 0
317-
318-let bp = 1
319-
320-let bq = 2
321-
322-let br = 3
323-
324-let bs = 0
325-
326-let bt = 1
327-
328-let bu = 2
329-
330-let bv = 3
331-
332-let bw = 0
333-
334-let bx = 1
335-
336-let by = 2
337-
338-func bz (bA) = ("no_" + bA)
339-
340-
341-func bB (bA) = ("lcna_" + bA)
342-
343-
344-func bC (bA) = ("st_" + bA)
345-
346-
347-func bD (bE,bA) = makeString(["las", bE, bA], "_")
348-
349-
350-func bF (bG,bA,ag) = ((((("sttao_" + bG) + "_") + bA) + "_") + ag)
351-
352-
353-func bH (bI) = ("wh_" + bI)
354-
355-
356-func bJ (bA) = ("infraLevel_" + bA)
357-
358-
359-func bK (bA) = ("duckCustomNameByAssetId_" + bA)
360-
361-
362-func bL (av) = ("accountCustomNameByAddr_" + av)
363-
364-
365-func bM (av) = ("accRefBy_" + av)
366-
367-
368-func bN (bO) = ("onboardArtActivatedOnDuck_" + bO)
369-
370-
371-func bP (av) = ("onboardArtActivatedDuckBy_" + av)
372-
373-
374-func bQ (av) = ("accReferrals_" + av)
375-
376-
377-func bR (bA) = ("duckOwner_" + bA)
378-
379-
380-func bS (ag) = ("stakedDuckByOwner_" + ag)
381-
382-
383-func bT (bO) = ("backPack_" + bO)
384-
385-
386-func bU (bO) = ("duckLocation_" + bO)
387-
388-
389-func bV (bW) = ("%s%s__userGwlReleaseTime__" + bW)
390-
391-
392-func bX () = "emergencyWarehouseProducts"
393-
394-
395-let bY = "deliveryFund"
396-
397-let bZ = "%s__lastTourId"
398-
399-func ca (cb) = ("%s%d__tourStaticData__" + toString(cb))
400-
401-
402-func cc (cb) = ("%s%d__tourDynamicData__" + toString(cb))
403-
404-
405-func cd (cb,bO) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(cb), bO], "__")
406-
407-
408-let ce = 0
409-
410-let cf = 1
411-
412-let cg = 6
413-
414-let ch = 1
415-
416-func ci (cj,cb) = {
417- let ck = split(valueOrErrorMessage(getString(cj, ca(cb)), (("Error reading tournament " + toString(cb)) + " data")), "__")
418- let cl = split_4C(valueOrErrorMessage(getString(cj, cc(cb)), (("Error reading tournament " + toString(cb)) + " data")), "__")
419-[ck, cl]
420- }
421-
422-
423-func cm (cj,cn) = {
424- let co = valueOrElse(getInteger(cj, bZ), 0)
425- let cp = split(cn, "_")
426- let cq = lastBlock.timestamp
427- let cr = ci(cj, co)
428- let ck = cr[ce]
429- let cl = cr[cf]
430- if (if (if ((cp[bx] == "T"))
431- then (parseIntValue(cp[bw]) == co)
306+let bj = 10
307+
308+let bk = 0
309+
310+let bl = 1
311+
312+let bm = 2
313+
314+let bn = 3
315+
316+let bo = 4
317+
318+let bp = 0
319+
320+let bq = 1
321+
322+let br = 2
323+
324+let bs = 3
325+
326+let bt = 0
327+
328+let bu = 1
329+
330+let bv = 2
331+
332+let bw = 3
333+
334+let bx = 0
335+
336+let by = 1
337+
338+let bz = 2
339+
340+func bA (bB) = ("no_" + bB)
341+
342+
343+func bC (bB) = ("lcna_" + bB)
344+
345+
346+func bD (bB) = ("st_" + bB)
347+
348+
349+func bE (bF,bB) = makeString(["las", bF, bB], "_")
350+
351+
352+func bG (bH,bB,ah) = ((((("sttao_" + bH) + "_") + bB) + "_") + ah)
353+
354+
355+func bI (bJ) = ("wh_" + bJ)
356+
357+
358+func bK (bB) = ("infraLevel_" + bB)
359+
360+
361+func bL (bB) = ("duckCustomNameByAssetId_" + bB)
362+
363+
364+func bM (aw) = ("accountCustomNameByAddr_" + aw)
365+
366+
367+func bN (aw) = ("accRefBy_" + aw)
368+
369+
370+func bO (bP) = ("onboardArtActivatedOnDuck_" + bP)
371+
372+
373+func bQ (aw) = ("onboardArtActivatedDuckBy_" + aw)
374+
375+
376+func bR (aw) = ("accReferrals_" + aw)
377+
378+
379+func bS (bB) = ("duckOwner_" + bB)
380+
381+
382+func bT (ah) = ("stakedDuckByOwner_" + ah)
383+
384+
385+func bU (bP) = ("backPack_" + bP)
386+
387+
388+func bV (bP) = ("duckLocation_" + bP)
389+
390+
391+func bW (bX) = ("%s%s__userGwlReleaseTime__" + bX)
392+
393+
394+func bY () = "emergencyWarehouseProducts"
395+
396+
397+let bZ = "deliveryFund"
398+
399+let ca = "%s__lastTourId"
400+
401+func cb (cc) = ("%s%d__tourStaticData__" + toString(cc))
402+
403+
404+func cd (cc) = ("%s%d__tourDynamicData__" + toString(cc))
405+
406+
407+func ce (cc,bP) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(cc), bP], "__")
408+
409+
410+let cf = 0
411+
412+let cg = 1
413+
414+let ch = 6
415+
416+let ci = 1
417+
418+func cj (ck,cc) = {
419+ let cl = split(valueOrErrorMessage(getString(ck, cb(cc)), (("Error reading tournament " + toString(cc)) + " data")), "__")
420+ let cm = split_4C(valueOrErrorMessage(getString(ck, cd(cc)), (("Error reading tournament " + toString(cc)) + " data")), "__")
421+[cl, cm]
422+ }
423+
424+
425+func cn (ck,co) = {
426+ let cp = valueOrElse(getInteger(ck, ca), 0)
427+ let cq = split(co, "_")
428+ let cr = lastBlock.timestamp
429+ let cs = cj(ck, cp)
430+ let cl = cs[cf]
431+ let cm = cs[cg]
432+ if (if (if ((cq[by] == "T"))
433+ then (parseIntValue(cq[bx]) == cp)
432434 else false)
433- then (cl[ch] == "INPROGRESS")
435+ then (cm[ci] == "INPROGRESS")
434436 else false)
435- then (parseIntValue(ck[cg]) > cq)
437+ then (parseIntValue(cl[ch]) > cr)
436438 else false
437439 }
438440
439441
440-func cs (cj,cn) = {
441- let co = valueOrElse(getInteger(cj, bZ), 0)
442- let cp = split(cn, "_")
443- let cq = lastBlock.timestamp
444- let cr = ci(cj, co)
445- let ck = cr[ce]
446- let cl = cr[cf]
447- let ct = cp[bx]
448- if (if (if ((cp[bx] == "T"))
449- then (parseIntValue(cp[bw]) == co)
442+func ct (ck,co) = {
443+ let cp = valueOrElse(getInteger(ck, ca), 0)
444+ let cq = split(co, "_")
445+ let cr = lastBlock.timestamp
446+ let cs = cj(ck, cp)
447+ let cl = cs[cf]
448+ let cm = cs[cg]
449+ let cu = cq[by]
450+ if (if (if ((cq[by] == "T"))
451+ then (parseIntValue(cq[bx]) == cp)
450452 else false)
451- then (cl[ch] == "INPROGRESS")
453+ then (cm[ci] == "INPROGRESS")
452454 else false)
453- then (parseIntValue(ck[cg]) > cq)
455+ then (parseIntValue(cl[ch]) > cr)
454456 else false
455457 }
456458
457459
458-func cu (cv) = (parseIntValue(cv[be]) * bc)
459-
460-
461-func cw (cx,cy,cz) = throw(((((("Cheat attempt: oldLoc=" + cx) + ", newLoc=") + cy) + ", case=") + toString(cz)))
462-
463-
464-let cA = 100000000
465-
466-let cB = 3200
467-
468-let cC = 4000
469-
470-let cD = 3
471-
472-let cE = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
473-
474-let cF = 0
475-
476-let cG = 1
477-
478-let cH = 2
479-
480-let cI = 3
481-
482-let cJ = 4
483-
484-let cK = 0
485-
486-let cL = 6
487-
488-let cM = 2
460+func cv (cw) = (parseIntValue(cw[bf]) * bd)
461+
462+
463+func cx (cy,cz,cA) = throw(((((("Cheat attempt: oldLoc=" + cy) + ", newLoc=") + cz) + ", case=") + toString(cA)))
464+
465+
466+let cB = 100000000
467+
468+let cC = 3200
469+
470+let cD = 4000
471+
472+let cE = 3
473+
474+let cF = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
475+
476+let cG = 0
477+
478+let cH = 1
479+
480+let cI = 2
481+
482+let cJ = 3
483+
484+let cK = 4
485+
486+let cL = 0
487+
488+let cM = 6
489489
490490 let cN = 2
491491
492-let cO = 30
493-
494-func cP (bO) = ("duckHealth_" + bO)
495-
496-
497-func cQ (bO) = ("duckChars_" + bO)
498-
499-
500-func cR (bO) = ("duckXP_" + bO)
501-
502-
503-func cS (bO) = ("duckLevel_" + bO)
504-
505-
506-func cT (bO) = ("duckFreePoints_" + bO)
507-
508-
509-func cU (bO) = ("duckEquipment_" + bO)
510-
511-
512-func cV (av) = ("userXP_" + av)
513-
514-
515-func cW (av) = ("userLevel_" + av)
516-
517-
518-func cX (av) = ("userFreePoints_" + av)
519-
520-
521-func cY (bO) = ("savedHealth_" + bO)
522-
523-
524-func cZ (bO) = ("savedLocation_" + bO)
525-
526-
527-func da (bO) = ("duckBuffs_" + bO)
528-
529-
530-func db (bO) = ("lastRobberyTime_" + bO)
531-
532-
533-func dc (bO) = ("totalRobberyCountByDuck_" + bO)
534-
535-
536-func dd (av) = ("userRobberyCount_" + av)
537-
538-
539-func de (av) = ("userLastRobberyDay_" + av)
540-
541-
542-func df (bO) = ("totalDeliveryCountByDuck_" + bO)
543-
544-
545-func dg (av) = ("userDeliveryCount_" + av)
546-
547-
548-func dh (av) = ("userLastDeliveryDay_" + av)
549-
550-
551-let di = 10000
492+let cO = 2
493+
494+let cP = 30
495+
496+func cQ (bP) = ("duckHealth_" + bP)
497+
498+
499+func cR (bP) = ("duckChars_" + bP)
500+
501+
502+func cS (bP) = ("duckXP_" + bP)
503+
504+
505+func cT (bP) = ("duckLevel_" + bP)
506+
507+
508+func cU (bP) = ("duckFreePoints_" + bP)
509+
510+
511+func cV (bP) = ("duckEquipment_" + bP)
512+
513+
514+func cW (aw) = ("userXP_" + aw)
515+
516+
517+func cX (aw) = ("userLevel_" + aw)
518+
519+
520+func cY (aw) = ("userFreePoints_" + aw)
521+
522+
523+func cZ (bP) = ("savedHealth_" + bP)
524+
525+
526+func da (bP) = ("savedLocation_" + bP)
527+
528+
529+func db (bP) = ("duckBuffs_" + bP)
530+
531+
532+func dc (bP) = ("lastRobberyTime_" + bP)
533+
534+
535+func dd (bP) = ("totalRobberyCountByDuck_" + bP)
536+
537+
538+func de (aw) = ("userRobberyCount_" + aw)
539+
540+
541+func df (aw) = ("userLastRobberyDay_" + aw)
542+
543+
544+func dg (bP) = ("totalDeliveryCountByDuck_" + bP)
545+
546+
547+func dh (aw) = ("userDeliveryCount_" + aw)
548+
549+
550+func di (aw) = ("userLastDeliveryDay_" + aw)
551+
552552
553553 let dj = 10000
554554
555-let dk = 2000
556-
557-let dl = 10000
558-
559-let dm = 2000
560-
561-let dn = 100000
562-
563-let do = 1000000
564-
565-let dp = 5000000
566-
567-let dq = 10000
568-
569-let dr = 1000000
555+let dk = 10000
556+
557+let dl = 2000
558+
559+let dm = 10000
560+
561+let dn = 2000
562+
563+let do = 100000
564+
565+let dp = 1000000
566+
567+let dq = 5000000
568+
569+let dr = 10000
570570
571571 let ds = 1000000
572572
573-let dt = 10000
574-
575-func du (dv) = fraction(cB, pow(dv, 4, cC, 4, 4, DOWN), cA)
576-
577-
578-func dw (dx) = (100 + dx)
579-
580-
581-func dy (dz,dA) = {
582- let dB = du(dA)
583-[dB, (cD * (dB - dz))]
584- }
585-
586-
587-func dC (M,bO,dD,dE) = {
588- let dF = split(valueOrElse(getString(M, cQ(bO)), "0_0_0_0_0"), "_")
589- let dG = valueOrElse(getInteger(M, cS(bO)), 0)
590- let dH = valueOrElse(getInteger(M, cP(bO)), dw(dG))
591- let dI = split(valueOrElse(getString(M, da(bO)), "0_0_0_0_0"), "_")
592- ([parseIntValue(dF[cF]), parseIntValue(dF[cG]), parseIntValue(dF[cH]), parseIntValue(dF[cI]), parseIntValue(dF[cJ]), dG, dH] ++ (if (dE)
593- then [dD, dD, dD, dD, dD]
594- else [parseIntValue(dI[cF]), parseIntValue(dI[cG]), parseIntValue(dI[cH]), parseIntValue(dI[cI]), parseIntValue(dI[cJ])]))
595- }
596-
597-
598-let dJ = 86400000
599-
600-func dK (av) = ("lastArbTimeUser_" + av)
601-
602-
603-func dL (av) = ("acresStakedAmountByUser_" + av)
604-
605-
606-let dM = {
607- let g = e
608- if ((base58'2W' == g))
573+let dt = 1000000
574+
575+let du = 10000
576+
577+func dv (dw) = fraction(cC, pow(dw, 4, cD, 4, 4, DOWN), cB)
578+
579+
580+func dx (dy) = (100 + dy)
581+
582+
583+func dz (dA,dB) = {
584+ let dC = dv(dB)
585+[dC, (cE * (dC - dA))]
586+ }
587+
588+
589+func dD (N,bP,dE,dF) = {
590+ let dG = split(valueOrElse(getString(N, cR(bP)), "0_0_0_0_0"), "_")
591+ let dH = valueOrElse(getInteger(N, cT(bP)), 0)
592+ let dI = valueOrElse(getInteger(N, cQ(bP)), dx(dH))
593+ let dJ = split(valueOrElse(getString(N, db(bP)), "0_0_0_0_0"), "_")
594+ ([parseIntValue(dG[cG]), parseIntValue(dG[cH]), parseIntValue(dG[cI]), parseIntValue(dG[cJ]), parseIntValue(dG[cK]), dH, dI] ++ (if (dF)
595+ then [dE, dE, dE, dE, dE]
596+ else [parseIntValue(dJ[cG]), parseIntValue(dJ[cH]), parseIntValue(dJ[cI]), parseIntValue(dJ[cJ]), parseIntValue(dJ[cK])]))
597+ }
598+
599+
600+let dK = 86400000
601+
602+func dL (aw) = ("lastArbTimeUser_" + aw)
603+
604+
605+func dM (aw) = ("acresStakedAmountByUser_" + aw)
606+
607+
608+let dN = {
609+ let h = f
610+ if ((base58'2W' == h))
609611 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
610- else if ((base58'2T' == g))
612+ else if ((base58'2T' == h))
611613 then this
612614 else throw("Unknown chain")
613615 }
614616
615-let dN = {
616- let g = e
617- if ((base58'2W' == g))
617+let dO = {
618+ let h = f
619+ if ((base58'2W' == h))
618620 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
619- else if ((base58'2T' == g))
621+ else if ((base58'2T' == h))
620622 then this
621623 else throw("Unknown chain")
622624 }
623625
624-let dO = 300000
625-
626-let dP = 5000000
627-
628-let dQ = 50
629-
630-let dR = 10000000
631-
632-let dS = {
633- let g = e
634- if ((base58'2W' == g))
626+let dP = 300000
627+
628+let dQ = 5000000
629+
630+let dR = 50
631+
632+let dS = 10000000
633+
634+let dT = {
635+ let h = f
636+ if ((base58'2W' == h))
635637 then 252289527462
636- else if ((base58'2T' == g))
638+ else if ((base58'2T' == h))
637639 then 2522895274
638640 else throw("Unknown chain")
639641 }
640642
641-let dT = {
642- let g = e
643- if ((base58'2W' == g))
643+let dU = {
644+ let h = f
645+ if ((base58'2W' == h))
644646 then 250000000
645- else if ((base58'2T' == g))
647+ else if ((base58'2T' == h))
646648 then 250000000
647649 else throw("Unknown chain")
648650 }
649651
650-let dU = 100000
651-
652-let dV = 2500000000
653-
654-let dW = toBigInt(5)
655-
656-let dX = toBigInt(20)
657-
658-let dY = toBigInt((20 * 20))
659-
660-let dZ = toBigInt(((20 * 20) * 20))
661-
662-let ea = toBigInt((((20 * 20) * 20) * 20))
663-
664-let eb = toBigInt(((((20 * 20) * 20) * 20) * 20))
665-
666-let ec = 500
667-
668-func ed () = "nextLandNum"
669-
670-
671-func ee (ef) = ("lcn_" + ef)
672-
673-
674-func eg (eh) = ("la_" + eh)
675-
676-
677-func ei (bA,ag) = ((("ilao_" + bA) + "_") + ag)
678-
679-
680-func ej (eh) = ("lo_" + eh)
681-
682-
683-func ek (ef) = ("duckByCustomName_" + ef)
684-
685-
686-func el (ef) = ("accountByCustomName_" + ef)
687-
688-
689-func em () = "oldiesList"
690-
691-
692-func en () = "nextRoboDuck"
693-
694-
695-let eo = 0
696-
697-let ep = 1
698-
699-let eq = 2
700-
701-let er = 0
702-
703-let es = 5
704-
705-let et = 6
706-
707-let eu = 7
708-
709-let ev = 0
710-
711-let ew = 1
712-
713-let ex = 0
714-
715-let ey = 2
716-
717-let ez = 3
718-
719-func eA (eh,ar) = ((aI + eh) + ar)
720-
721-
722-func eB (eC,eD) = {
723- let eE = if ((eC >= 0))
724- then (((eC + eD) - 1) / eD)
725- else -((((-(eC) + eD) - 1) / eD))
726- (eE * o)
727- }
728-
729-
730-func eF (eG,eH) = {
731- let eI = (((((eH[0] + eH[1]) + eH[2]) + eH[3]) + eH[4]) + eH[5])
732- if ((0 >= eI))
652+let dV = 100000
653+
654+let dW = 2500000000
655+
656+let dX = toBigInt(5)
657+
658+let dY = toBigInt(20)
659+
660+let dZ = toBigInt((20 * 20))
661+
662+let ea = toBigInt(((20 * 20) * 20))
663+
664+let eb = toBigInt((((20 * 20) * 20) * 20))
665+
666+let ec = toBigInt(((((20 * 20) * 20) * 20) * 20))
667+
668+let ed = 500
669+
670+func ee () = "nextLandNum"
671+
672+
673+func ef (eg) = ("lcn_" + eg)
674+
675+
676+func eh (ei) = ("la_" + ei)
677+
678+
679+func ej (bB,ah) = ((("ilao_" + bB) + "_") + ah)
680+
681+
682+func ek (ei) = ("lo_" + ei)
683+
684+
685+func el (eg) = ("duckByCustomName_" + eg)
686+
687+
688+func em (eg) = ("accountByCustomName_" + eg)
689+
690+
691+func en () = "oldiesList"
692+
693+
694+func eo () = "nextRoboDuck"
695+
696+
697+let ep = 0
698+
699+let eq = 1
700+
701+let er = 2
702+
703+let es = 0
704+
705+let et = 5
706+
707+let eu = 6
708+
709+let ev = 7
710+
711+let ew = 0
712+
713+let ex = 1
714+
715+let ey = 0
716+
717+let ez = 2
718+
719+let eA = 3
720+
721+func eB (ei,as) = ((aJ + ei) + as)
722+
723+
724+func eC (eD,eE) = {
725+ let eF = if ((eD >= 0))
726+ then (((eD + eE) - 1) / eE)
727+ else -((((-(eD) + eE) - 1) / eE))
728+ (eF * p)
729+ }
730+
731+
732+func eG (eH,eI) = {
733+ let eJ = (((((eI[0] + eI[1]) + eI[2]) + eI[3]) + eI[4]) + eI[5])
734+ if ((0 >= eJ))
733735 then throw("Zero weights sum")
734736 else {
735- let eJ = fraction(eG, n, eI)
736- func eK (eL,eM) = (eL :+ fraction(eM, eJ, n))
737-
738- let eN = eH
739- let eO = size(eN)
740- let eP = nil
741- func eQ (eR,eS) = if ((eS >= eO))
742- then eR
743- else eK(eR, eN[eS])
744-
745- func eT (eR,eS) = if ((eS >= eO))
746- then eR
737+ let eK = fraction(eH, o, eJ)
738+ func eL (eM,eN) = (eM :+ fraction(eN, eK, o))
739+
740+ let eO = eI
741+ let eP = size(eO)
742+ let eQ = nil
743+ func eR (eS,eT) = if ((eT >= eP))
744+ then eS
745+ else eL(eS, eO[eT])
746+
747+ func eU (eS,eT) = if ((eT >= eP))
748+ then eS
747749 else throw("List size exceeds 6")
748750
749- eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
750- }
751- }
752-
753-
754-func eU (eG) = {
755- let eV = split(value(getString(ac())), "_")
756- if ((size(eV) != aM))
751+ eU(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6)
752+ }
753+ }
754+
755+
756+func eV (eH) = {
757+ let eW = split(value(getString(ad())), "_")
758+ if ((size(eW) != aN))
757759 then throw("Wrong proportions data")
758760 else {
759- let eW = [parseIntValue(eV[0]), parseIntValue(eV[1]), parseIntValue(eV[2]), parseIntValue(eV[3]), parseIntValue(eV[4]), parseIntValue(eV[5])]
760- eF(eG, eW)
761- }
762- }
763-
764-
765-func eX (eY,eZ,fa) = {
766- let fb = eU(fa)
767- func fc (eL,K) = {
768- let fd = (parseIntValue(eZ[K]) - fb[K])
769- if ((0 > fd))
770- then throw(((((("Not enough material idx=" + toString(K)) + ", you have ") + eZ[K]) + ", but need ") + toString(fb[K])))
771- else (eL :+ toString(fd))
772- }
773-
774- if (eY)
761+ let eX = [parseIntValue(eW[0]), parseIntValue(eW[1]), parseIntValue(eW[2]), parseIntValue(eW[3]), parseIntValue(eW[4]), parseIntValue(eW[5])]
762+ eG(eH, eX)
763+ }
764+ }
765+
766+
767+func eY (eZ,fa,fb) = {
768+ let fc = eV(fb)
769+ func fd (eM,L) = {
770+ let fe = (parseIntValue(fa[L]) - fc[L])
771+ if ((0 > fe))
772+ then throw(((((("Not enough material idx=" + toString(L)) + ", you have ") + fa[L]) + ", but need ") + toString(fc[L])))
773+ else (eM :+ toString(fe))
774+ }
775+
776+ if (eZ)
775777 then {
776- let eN = u
777- let eO = size(eN)
778- let eP = nil
779- func eQ (eR,eS) = if ((eS >= eO))
780- then eR
781- else fc(eR, eN[eS])
782-
783- func eT (eR,eS) = if ((eS >= eO))
784- then eR
778+ let eO = v
779+ let eP = size(eO)
780+ let eQ = nil
781+ func eR (eS,eT) = if ((eT >= eP))
782+ then eS
783+ else fd(eS, eO[eT])
784+
785+ func eU (eS,eT) = if ((eT >= eP))
786+ then eS
785787 else throw("List size exceeds 6")
786788
787- eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
788- }
789- else eZ
790- }
791-
792-
793-func fe (ff,fg) = if ((fg == ""))
794- then $Tuple3(ff, false, false)
789+ eU(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6)
790+ }
791+ else fa
792+ }
793+
794+
795+func ff (fg,fh) = if ((fh == ""))
796+ then $Tuple3(fg, false, false)
795797 else {
796- func fh (eL,fi) = {
797- let fj = split(fi, ",")
798- if ((size(fj) != 2))
798+ func fi (eM,fj) = {
799+ let fk = split(fj, ",")
800+ if ((size(fk) != 2))
799801 then throw("Incorrect format, should be index,amount")
800802 else {
801- let K = parseIntValue(fj[0])
802- if (if ((0 > K))
803+ let L = parseIntValue(fk[0])
804+ if (if ((0 > L))
803805 then true
804- else (K >= size(bd)))
806+ else (L >= size(be)))
805807 then throw("Unknown product idx")
806808 else {
807- let fk = parseIntValue(fj[1])
808- let fl = split(eL._1, (fj[0] + ":"))
809- if ((size(fl) != 2))
810- then throw((("You don't have " + ba[K]) + " equipped"))
809+ let fl = parseIntValue(fk[1])
810+ let fm = split(eM._1, (fk[0] + ":"))
811+ if ((size(fm) != 2))
812+ then throw((("You don't have " + bb[L]) + " equipped"))
811813 else {
812- let fm = fl[1]
813- let fn = if (as(take(drop(fm, 1), 1)))
814+ let fn = fm[1]
815+ let fo = if (at(take(drop(fn, 1), 1)))
814816 then 2
815817 else 1
816- let fo = parseIntValue(take(fm, fn))
817- let fp = drop(fm, fn)
818- let fq = if ((fo >= fk))
819- then (fo - fk)
820- else throw(((((("You equipped " + toString(fo)) + " of ") + ba[K]) + ", but tried to use ") + toString(fk)))
821- $Tuple3(((((fl[0] + fj[0]) + ":") + toString(fq)) + fp), if (eL._2)
818+ let fp = parseIntValue(take(fn, fo))
819+ let fq = drop(fn, fo)
820+ let fr = if ((fp >= fl))
821+ then (fp - fl)
822+ else throw(((((("You equipped " + toString(fp)) + " of ") + bb[L]) + ", but tried to use ") + toString(fl)))
823+ $Tuple3(((((fm[0] + fk[0]) + ":") + toString(fr)) + fq), if (eM._2)
822824 then true
823- else if (if ((K >= 6))
824- then (8 >= K)
825+ else if (if ((L >= 6))
826+ then (8 >= L)
825827 else false)
826- then (fq == 0)
827- else false, if (eL._3)
828+ then (fr == 0)
829+ else false, if (eM._3)
828830 then true
829- else if (if ((K >= 3))
830- then (5 >= K)
831+ else if (if ((L >= 3))
832+ then (5 >= L)
831833 else false)
832- then (fk > 0)
834+ then (fl > 0)
833835 else false)
834836 }
835837 }
836838 }
837839 }
838840
839- let eN = split(fg, "_")
840- let eO = size(eN)
841- let eP = $Tuple3(ff, false, false)
842- func eQ (eR,eS) = if ((eS >= eO))
843- then eR
844- else fh(eR, eN[eS])
845-
846- func eT (eR,eS) = if ((eS >= eO))
847- then eR
841+ let eO = split(fh, "_")
842+ let eP = size(eO)
843+ let eQ = $Tuple3(fg, false, false)
844+ func eR (eS,eT) = if ((eT >= eP))
845+ then eS
846+ else fi(eS, eO[eT])
847+
848+ func eU (eS,eT) = if ((eT >= eP))
849+ then eS
848850 else throw("List size exceeds 10")
849851
850- eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
851- }
852-
853-
854-func fr (fs) = {
855- let ft = if ((fs == ""))
852+ eU(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
853+ }
854+
855+
856+func fs (ft) = {
857+ let fu = if ((ft == ""))
856858 then nil
857- else split_4C(fs, "_")
858- func fu (eL,cv) = {
859- let fv = (size(eL) / 8)
860- let fo = if ((size(ft) > fv))
861- then parseIntValue(ft[fv])
859+ else split_4C(ft, "_")
860+ func fv (eM,cw) = {
861+ let fw = (size(eM) / 8)
862+ let fp = if ((size(fu) > fw))
863+ then parseIntValue(fu[fw])
862864 else 0
863- (eL + toBytes(fo))
864- }
865-
866- let eN = bd
867- let eO = size(eN)
868- let eP = base58''
869- func eQ (eR,eS) = if ((eS >= eO))
870- then eR
871- else fu(eR, eN[eS])
872-
873- func eT (eR,eS) = if ((eS >= eO))
874- then eR
865+ (eM + toBytes(fp))
866+ }
867+
868+ let eO = be
869+ let eP = size(eO)
870+ let eQ = base58''
871+ func eR (eS,eT) = if ((eT >= eP))
872+ then eS
873+ else fv(eS, eO[eT])
874+
875+ func eU (eS,eT) = if ((eT >= eP))
876+ then eS
875877 else throw("List size exceeds 50")
876878
877- eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 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)
878- }
879-
880-
881-func fw (fx) = {
882- func fy (eL,cv) = {
883- let fv = size(eL)
884- let fz = take(drop(fx, (8 * fv)), 8)
885- (eL :+ toString(toInt(fz)))
879+ eU(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eQ, 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)
880+ }
881+
882+
883+func fx (fy) = {
884+ func fz (eM,cw) = {
885+ let fw = size(eM)
886+ let fA = take(drop(fy, (8 * fw)), 8)
887+ (eM :+ toString(toInt(fA)))
886888 }
887889
888890 makeString_2C({
889- let eN = bd
890- let eO = size(eN)
891- let eP = nil
892- func eQ (eR,eS) = if ((eS >= eO))
893- then eR
894- else fy(eR, eN[eS])
895-
896- func eT (eR,eS) = if ((eS >= eO))
897- then eR
891+ let eO = be
892+ let eP = size(eO)
893+ let eQ = nil
894+ func eR (eS,eT) = if ((eT >= eP))
895+ then eS
896+ else fz(eS, eO[eT])
897+
898+ func eU (eS,eT) = if ((eT >= eP))
899+ then eS
898900 else throw("List size exceeds 50")
899901
900- eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 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)
902+ eU(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eQ, 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)
901903 }, "_")
902904 }
903905
904906
905-func fA (fB,fC) = {
906- func fD (eL,fv) = {
907- let fE = if ((size(fB) > (7 + fv)))
908- then fB[(7 + fv)]
907+func fB (fC,fD) = {
908+ func fE (eM,fw) = {
909+ let fF = if ((size(fC) > (7 + fw)))
910+ then fC[(7 + fw)]
909911 else 0
910- if ((parseIntValue(fC[fv]) > (fB[fv] + fE)))
911- then throw(("Requirement not satisfied: " + cE[fv]))
912+ if ((parseIntValue(fD[fw]) > (fC[fw] + fF)))
913+ then throw(("Requirement not satisfied: " + cF[fw]))
912914 else true
913915 }
914916
915- let eN = [0, 1, 2, 3, 4, 5, 6]
916- let eO = size(eN)
917- let eP = false
918- func eQ (eR,eS) = if ((eS >= eO))
919- then eR
920- else fD(eR, eN[eS])
921-
922- func eT (eR,eS) = if ((eS >= eO))
923- then eR
917+ let eO = [0, 1, 2, 3, 4, 5, 6]
918+ let eP = size(eO)
919+ let eQ = false
920+ func eR (eS,eT) = if ((eT >= eP))
921+ then eS
922+ else fE(eS, eO[eT])
923+
924+ func eU (eS,eT) = if ((eT >= eP))
925+ then eS
924926 else throw("List size exceeds 7")
925927
926- eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6), 7)
927- }
928-
929-
930-func fF (fG,ft,fH,fI,fJ,fK,fB) = {
931- let fj = split(fG, ":")
932- if ((size(fj) != 2))
928+ eU(eR(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6), 7)
929+ }
930+
931+
932+func fG (fH,fu,fI,fJ,fK,fL,fC) = {
933+ let fk = split(fH, ":")
934+ if ((size(fk) != 2))
933935 then throw("Incorrect format, should be index:amount")
934- else if (if (!(fH))
935- then (size(fj[0]) != 2)
936+ else if (if (!(fI))
937+ then (size(fk[0]) != 2)
936938 else false)
937939 then throw("Product idx should be 2 digits, zero padded")
938940 else {
939- let fL = parseIntValue(fj[0])
940- let fM = parseIntValue(fj[1])
941- if (if ((0 > fL))
941+ let fM = parseIntValue(fk[0])
942+ let fN = parseIntValue(fk[1])
943+ if (if ((0 > fM))
942944 then true
943- else (fL >= size(bd)))
945+ else (fM >= size(be)))
944946 then throw("Unknown product idx")
945- else if ((0 > fM))
947+ else if ((0 > fN))
946948 then throw("Count can't be negative")
947- else if ((fM > cO))
948- then throw(((("Can't put more than " + toString(cO)) + " of ") + ba[fL]))
949- else if ((fM == 0))
950- then $Tuple2(ft, false)
949+ else if ((fN > cP))
950+ then throw(((("Can't put more than " + toString(cP)) + " of ") + bb[fM]))
951+ else if ((fN == 0))
952+ then $Tuple2(fu, false)
951953 else {
952- let fN = take(ft, (8 * fL))
953- let fo = toInt(take(drop(ft, (8 * fL)), 8))
954- let fp = drop(ft, (8 * (fL + 1)))
955- let cv = split(bd[fL], "_")
956- if (if (!(fH))
957- then (fM > fo)
954+ let fO = take(fu, (8 * fM))
955+ let fp = toInt(take(drop(fu, (8 * fM)), 8))
956+ let fq = drop(fu, (8 * (fM + 1)))
957+ let cw = split(be[fM], "_")
958+ if (if (!(fI))
959+ then (fN > fp)
958960 else false)
959- then throw(((((("You have " + toString(fo)) + " of ") + ba[fL]) + ", but tried to use ") + toString(fM)))
961+ then throw(((((("You have " + toString(fp)) + " of ") + bb[fM]) + ", but tried to use ") + toString(fN)))
960962 else {
961- let fO = if (if (!(fH))
962- then fA(fB, split(cv[bg], ","))
963+ let fP = if (if (!(fI))
964+ then fB(fC, split(cw[bh], ","))
963965 else false)
964966 then {
965- let fP = cv[bh]
966- if ((fP == ""))
967+ let fQ = cw[bi]
968+ if ((fQ == ""))
967969 then throw("Item cannot be equipped")
968970 else {
969- let fQ = parseIntValue(fP)
970- let fR = (fQ / 100)
971- if ((fI != fR))
971+ let fR = parseIntValue(fQ)
972+ let fS = (fR / 100)
973+ if ((fJ != fS))
972974 then throw("Segment incompatible")
973975 else {
974- let fS = ((fQ % 100) / 10)
975- if ((fJ != fS))
976+ let fT = ((fR % 100) / 10)
977+ if ((fK != fT))
976978 then throw("Slot incompatible")
977979 else {
978- let fT = (fQ % 10)
979- if (if ((fK != 0))
980- then (fT > 1)
980+ let fU = (fR % 10)
981+ if (if ((fL != 0))
982+ then (fU > 1)
981983 else false)
982984 then throw("Big items should occupy slot 0")
983- else (fT > 1)
985+ else (fU > 1)
984986 }
985987 }
986988 }
987989 }
988990 else false
989- $Tuple2(((fN + toBytes((fo + (if (fH)
990- then fM
991- else -(fM))))) + fp), fO)
991+ $Tuple2(((fO + toBytes((fp + (if (fI)
992+ then fN
993+ else -(fN))))) + fq), fP)
992994 }
993995 }
994996 }
995997 }
996998
997999
998-func fU (fV,fW,fH,fI,fJ,fX) = if ((fV != ""))
1000+func fV (fW,fX,fI,fJ,fK,fY) = if ((fW != ""))
9991001 then {
1000- let fY = split(fV, ",")
1001- if ((size(fY) > cN))
1002+ let fZ = split(fW, ",")
1003+ if ((size(fZ) > cO))
10021004 then throw("Wrong slots format")
10031005 else {
1004- let fZ = fY[0]
1005- let ga = if ((size(fY) > 1))
1006- then fY[1]
1006+ let ga = fZ[0]
1007+ let gb = if ((size(fZ) > 1))
1008+ then fZ[1]
10071009 else ""
1008- if (if ((fZ == ""))
1009- then (ga == "")
1010+ if (if ((ga == ""))
1011+ then (gb == "")
10101012 else false)
1011- then fW
1013+ then fX
10121014 else {
1013- let gb = if ((fZ != ""))
1014- then fF(fZ, fW, fH, fI, fJ, 0, fX)
1015- else $Tuple2(fW, false)
1016- if ((ga != ""))
1017- then if (gb._2)
1015+ let gc = if ((ga != ""))
1016+ then fG(ga, fX, fI, fJ, fK, 0, fY)
1017+ else $Tuple2(fX, false)
1018+ if ((gb != ""))
1019+ then if (gc._2)
10181020 then throw("Big item already occupies slot")
1019- else fF(ga, gb._1, fH, fI, fJ, 1, fX)._1
1020- else gb._1
1021+ else fG(gb, gc._1, fI, fJ, fK, 1, fY)._1
1022+ else gc._1
10211023 }
10221024 }
10231025 }
1024- else fW
1025-
1026-
1027-func gc (gd,ge,fH,fX) = {
1028- func fI (eL,gf) = {
1029- let fv = eL._1
1030- let fJ = split(gf, ";")
1031- if ((size(fJ) != cM))
1026+ else fX
1027+
1028+
1029+func gd (ge,gf,fI,fY) = {
1030+ func fJ (eM,gg) = {
1031+ let fw = eM._1
1032+ let fK = split(gg, ";")
1033+ if ((size(fK) != cN))
10321034 then throw("Wrong segment format")
10331035 else {
1034- let gg = fJ[0]
1035- let gh = fJ[1]
1036- if (if ((gg == ""))
1037- then (gh == "")
1036+ let gh = fK[0]
1037+ let gi = fK[1]
1038+ if (if ((gh == ""))
1039+ then (gi == "")
10381040 else false)
1039- then $Tuple2((fv + 1), eL._2)
1041+ then $Tuple2((fw + 1), eM._2)
10401042 else {
1041- let gi = fU(gg, eL._2, fH, fv, 0, fX)
1042- $Tuple2((fv + 1), fU(gh, gi, fH, fv, 1, fX))
1043+ let gj = fV(gh, eM._2, fI, fw, 0, fY)
1044+ $Tuple2((fw + 1), fV(gi, gj, fI, fw, 1, fY))
10431045 }
10441046 }
10451047 }
10461048
1047-( let eN = gd
1048- let eO = size(eN)
1049- let eP = $Tuple2(0, ge)
1050- func eQ (eR,eS) = if ((eS >= eO))
1051- then eR
1052- else fI(eR, eN[eS])
1053-
1054- func eT (eR,eS) = if ((eS >= eO))
1055- then eR
1049+( let eO = ge
1050+ let eP = size(eO)
1051+ let eQ = $Tuple2(0, gf)
1052+ func eR (eS,eT) = if ((eT >= eP))
1053+ then eS
1054+ else fJ(eS, eO[eT])
1055+
1056+ func eU (eS,eT) = if ((eT >= eP))
1057+ then eS
10561058 else throw("List size exceeds 6")
10571059
1058- eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6))._2
1059- }
1060-
1061-
1062-func gj (bO) = {
1063- let gk = cU(bO)
1064- let gl = split(valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1065- let gm = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
1066- let gn = gc(gl, gm, true, nil)
1067- let go = split(gl[cK], ";")[1]
1068- let dD = if ((go == ""))
1060+ eU(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6))._2
1061+ }
1062+
1063+
1064+func gk (bP) = {
1065+ let gl = cV(bP)
1066+ let gm = split(valueOrElse(getString(gl), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1067+ let gn = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
1068+ let go = gd(gm, gn, true, nil)
1069+ let gp = split(gm[cL], ";")[1]
1070+ let dE = if ((gp == ""))
10691071 then 0
10701072 else {
1071- let gp = split(go, ",")[0]
1072- if ((gp == ""))
1073+ let gq = split(gp, ",")[0]
1074+ if ((gq == ""))
10731075 then 0
10741076 else {
1075- let fG = split(gp, ":")
1076- let K = fG[0]
1077- let gq = fG[1]
1078- if (if (if (if (if ((K == "06"))
1077+ let fH = split(gq, ":")
1078+ let L = fH[0]
1079+ let gr = fH[1]
1080+ if (if (if (if (if ((L == "06"))
10791081 then true
1080- else (K == "07"))
1082+ else (L == "07"))
10811083 then true
1082- else (K == "08"))
1083- then (gq != "")
1084+ else (L == "08"))
1085+ then (gr != "")
10841086 else false)
1085- then (parseIntValue(gq) > 0)
1087+ then (parseIntValue(gr) > 0)
10861088 else false)
1087- then parseIntValue(split(bd[parseIntValue(K)], "_")[bf])
1089+ then parseIntValue(split(be[parseIntValue(L)], "_")[bg])
10881090 else 0
10891091 }
10901092 }
1091- let fX = dC(this, bO, dD, true)
1092- let gr = gc(gl, gn, false, fX)
1093- (gr == gr)
1094- }
1095-
1096-
1097-func gs (gt,gu,gv,gw) = if ((size(gt) != aM))
1093+ let fY = dD(this, bP, dE, true)
1094+ let gs = gd(gm, go, false, fY)
1095+ (gs == gs)
1096+ }
1097+
1098+
1099+func gt (gu,gv,gw,gx) = if ((size(gu) != aN))
10981100 then throw("Wrong proportions data")
10991101 else {
1100- func gx (eL,gy) = {
1101- let fd = (parseIntValue(gt[gy]) + ((gw * gu[gy]) * gv))
1102- if ((0 > fd))
1103- then throw(((((((("Panic! Pieces of type=" + toString(gy)) + ", sign=") + toString(gw)) + ", terrainCounts[i]=") + toString(gu[gy])) + ", landSizeIndex=") + toString(gv)))
1104- else (eL :+ toString(fd))
1105- }
1106-
1107- let eN = u
1108- let eO = size(eN)
1109- let eP = nil
1110- func eQ (eR,eS) = if ((eS >= eO))
1111- then eR
1112- else gx(eR, eN[eS])
1113-
1114- func eT (eR,eS) = if ((eS >= eO))
1115- then eR
1102+ func gy (eM,gz) = {
1103+ let fe = (parseIntValue(gu[gz]) + ((gx * gv[gz]) * gw))
1104+ if ((0 > fe))
1105+ then throw(((((((("Panic! Pieces of type=" + toString(gz)) + ", sign=") + toString(gx)) + ", terrainCounts[i]=") + toString(gv[gz])) + ", landSizeIndex=") + toString(gw)))
1106+ else (eM :+ toString(fe))
1107+ }
1108+
1109+ let eO = v
1110+ let eP = size(eO)
1111+ let eQ = nil
1112+ func eR (eS,eT) = if ((eT >= eP))
1113+ then eS
1114+ else gy(eS, eO[eT])
1115+
1116+ func eU (eS,eT) = if ((eT >= eP))
1117+ then eS
11161118 else throw("List size exceeds 6")
11171119
1118- eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
1119- }
1120-
1121-
1122-func gz (gu,gv,gw) = {
1123- let gt = split(valueOrElse(getString(ac()), "0_0_0_0_0_0"), "_")
1124- makeString(gs(gt, gu, gv, gw), "_")
1125- }
1126-
1127-
1128-func gA (gB) = [(size(split(gB, "A")) - 1), (size(split(gB, "B")) - 1), (size(split(gB, "C")) - 1), (size(split(gB, "D")) - 1), (size(split(gB, "E")) - 1), (size(split(gB, "F")) - 1)]
1129-
1130-
1131-func gC (gD,gu,gE,gv,gF) = {
1132- func gG (eL,gy) = {
1133- let gH = ((fraction(gE, gF, dJ) * gu[gy]) * gv)
1134- (eL :+ toString((parseIntValue(gD[gy]) + gH)))
1135- }
1136-
1137- let eW = {
1138- let eN = u
1139- let eO = size(eN)
1140- let eP = nil
1141- func eQ (eR,eS) = if ((eS >= eO))
1142- then eR
1143- else gG(eR, eN[eS])
1144-
1145- func eT (eR,eS) = if ((eS >= eO))
1146- then eR
1120+ eU(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6)
1121+ }
1122+
1123+
1124+func gA (gv,gw,gx) = {
1125+ let gu = split(valueOrElse(getString(ad()), "0_0_0_0_0_0"), "_")
1126+ makeString(gt(gu, gv, gw, gx), "_")
1127+ }
1128+
1129+
1130+func gB (gC) = [(size(split(gC, "A")) - 1), (size(split(gC, "B")) - 1), (size(split(gC, "C")) - 1), (size(split(gC, "D")) - 1), (size(split(gC, "E")) - 1), (size(split(gC, "F")) - 1)]
1131+
1132+
1133+func gD (gE,gv,gF,gw,gG) = {
1134+ func gH (eM,gz) = {
1135+ let gI = ((fraction(gF, gG, dK) * gv[gz]) * gw)
1136+ (eM :+ toString((parseIntValue(gE[gz]) + gI)))
1137+ }
1138+
1139+ let eX = {
1140+ let eO = v
1141+ let eP = size(eO)
1142+ let eQ = nil
1143+ func eR (eS,eT) = if ((eT >= eP))
1144+ then eS
1145+ else gH(eS, eO[eT])
1146+
1147+ func eU (eS,eT) = if ((eT >= eP))
1148+ then eS
11471149 else throw("List size exceeds 6")
11481150
1149- eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
1150- }
1151- makeString(eW, "_")
1152- }
1153-
1154-
1155-func gI (gD,gu,gE,gv,gF) = {
1156- func gG (eL,gy) = {
1157- let gH = ((fraction(gE, gF, dJ) * gu[gy]) * gv)
1158- let gJ = (parseIntValue(gD[gy]) + gH)
1159- $Tuple2((eL._1 :+ gJ), (eL._2 + gJ))
1160- }
1161-
1162- let eN = u
1163- let eO = size(eN)
1164- let eP = $Tuple2(nil, 0)
1165- func eQ (eR,eS) = if ((eS >= eO))
1166- then eR
1167- else gG(eR, eN[eS])
1168-
1169- func eT (eR,eS) = if ((eS >= eO))
1170- then eR
1151+ eU(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6)
1152+ }
1153+ makeString(eX, "_")
1154+ }
1155+
1156+
1157+func gJ (gE,gv,gF,gw,gG) = {
1158+ func gH (eM,gz) = {
1159+ let gI = ((fraction(gF, gG, dK) * gv[gz]) * gw)
1160+ let gK = (parseIntValue(gE[gz]) + gI)
1161+ $Tuple2((eM._1 :+ gK), (eM._2 + gK))
1162+ }
1163+
1164+ let eO = v
1165+ let eP = size(eO)
1166+ let eQ = $Tuple2(nil, 0)
1167+ func eR (eS,eT) = if ((eT >= eP))
1168+ then eS
1169+ else gH(eS, eO[eT])
1170+
1171+ func eU (eS,eT) = if ((eT >= eP))
1172+ then eS
11711173 else throw("List size exceeds 6")
11721174
1173- eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
1174- }
1175-
1176-
1177-func gK (gu,gE,gv,gF) = {
1178- func gG (eL,gL) = {
1179- let gH = ((fraction(gE, gF, dJ) * gL) * gv)
1180- $Tuple2((eL._1 :+ gH), (eL._2 + gH))
1181- }
1182-
1183- let eN = gu
1184- let eO = size(eN)
1185- let eP = $Tuple2(nil, 0)
1186- func eQ (eR,eS) = if ((eS >= eO))
1187- then eR
1188- else gG(eR, eN[eS])
1189-
1190- func eT (eR,eS) = if ((eS >= eO))
1191- then eR
1175+ eU(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6)
1176+ }
1177+
1178+
1179+func gL (gv,gF,gw,gG) = {
1180+ func gH (eM,gM) = {
1181+ let gI = ((fraction(gF, gG, dK) * gM) * gw)
1182+ $Tuple2((eM._1 :+ gI), (eM._2 + gI))
1183+ }
1184+
1185+ let eO = gv
1186+ let eP = size(eO)
1187+ let eQ = $Tuple2(nil, 0)
1188+ func eR (eS,eT) = if ((eT >= eP))
1189+ then eS
1190+ else gH(eS, eO[eT])
1191+
1192+ func eU (eS,eT) = if ((eT >= eP))
1193+ then eS
11921194 else throw("List size exceeds 6")
11931195
1194- eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
1195- }
1196-
1197-
1198-func gM (gN,gO,gP,gQ) = {
1199- let gR = gP._1
1200- let gS = gP._2
1201- if ((gS == 0))
1202- then $Tuple2(makeString(gN, "_"), makeString(gO, "_"))
1203- else if ((gQ >= gS))
1196+ eU(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6)
1197+ }
1198+
1199+
1200+func gN (gO,gP,gQ,gR) = {
1201+ let gS = gQ._1
1202+ let gT = gQ._2
1203+ if ((gT == 0))
1204+ then $Tuple2(makeString(gO, "_"), makeString(gP, "_"))
1205+ else if ((gR >= gT))
12041206 then {
1205- func gT (eL,gy) = (eL :+ toString((parseIntValue(gN[gy]) + gR[gy])))
1206-
1207- let eW = {
1208- let eN = u
1209- let eO = size(eN)
1210- let eP = nil
1211- func eQ (eR,eS) = if ((eS >= eO))
1212- then eR
1213- else gT(eR, eN[eS])
1214-
1215- func eT (eR,eS) = if ((eS >= eO))
1216- then eR
1207+ func gU (eM,gz) = (eM :+ toString((parseIntValue(gO[gz]) + gS[gz])))
1208+
1209+ let eX = {
1210+ let eO = v
1211+ let eP = size(eO)
1212+ let eQ = nil
1213+ func eR (eS,eT) = if ((eT >= eP))
1214+ then eS
1215+ else gU(eS, eO[eT])
1216+
1217+ func eU (eS,eT) = if ((eT >= eP))
1218+ then eS
12171219 else throw("List size exceeds 6")
12181220
1219- eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
1221+ eU(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6)
12201222 }
1221- $Tuple2(makeString(eW, "_"), makeString(gO, "_"))
1223+ $Tuple2(makeString(eX, "_"), makeString(gP, "_"))
12221224 }
12231225 else {
1224- func gU (eL,gy) = {
1225- let gV = fraction(gR[gy], gQ, gS)
1226- $Tuple2((eL._1 :+ toString((parseIntValue(gN[gy]) + gV))), (eL._2 :+ toString(((parseIntValue(gO[gy]) + gR[gy]) - gV))))
1226+ func gV (eM,gz) = {
1227+ let gW = fraction(gS[gz], gR, gT)
1228+ $Tuple2((eM._1 :+ toString((parseIntValue(gO[gz]) + gW))), (eM._2 :+ toString(((parseIntValue(gP[gz]) + gS[gz]) - gW))))
12271229 }
12281230
1229- let eW = {
1230- let eN = u
1231- let eO = size(eN)
1232- let eP = $Tuple2(nil, nil)
1233- func eQ (eR,eS) = if ((eS >= eO))
1234- then eR
1235- else gU(eR, eN[eS])
1236-
1237- func eT (eR,eS) = if ((eS >= eO))
1238- then eR
1231+ let eX = {
1232+ let eO = v
1233+ let eP = size(eO)
1234+ let eQ = $Tuple2(nil, nil)
1235+ func eR (eS,eT) = if ((eT >= eP))
1236+ then eS
1237+ else gV(eS, eO[eT])
1238+
1239+ func eU (eS,eT) = if ((eT >= eP))
1240+ then eS
12391241 else throw("List size exceeds 6")
12401242
1241- eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
1243+ eU(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6)
12421244 }
1243- $Tuple2(makeString(eW._1, "_"), makeString(eW._2, "_"))
1245+ $Tuple2(makeString(eX._1, "_"), makeString(eX._2, "_"))
12441246 }
12451247 }
12461248
12471249
1248-func gW (gX) = if ((gX >= toBigInt(0)))
1249- then gX
1250- else -(gX)
1251-
1252-
1253-let gY = [[6, 9, 14, 15, 16], [5, 8, 13, 14, 15], [1, 4, 9, 10, 15], [1, 6, 7, 15, 19], [4, 7, 8, 13, 18]]
1254-
1255-func gZ (am,ha) = {
1256- let hb = toInt((am % dX))
1257- let hc = if ((ha[0] > hb))
1250+func gX (gY) = if ((gY >= toBigInt(0)))
1251+ then gY
1252+ else -(gY)
1253+
1254+
1255+let gZ = [[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]]
1256+
1257+func ha (an,hb) = {
1258+ let hc = toInt((an % dY))
1259+ let hd = if ((hb[0] > hc))
12581260 then "A"
1259- else if ((ha[1] > hb))
1261+ else if ((hb[1] > hc))
12601262 then "B"
1261- else if ((ha[2] > hb))
1263+ else if ((hb[2] > hc))
12621264 then "C"
1263- else if ((ha[3] > hb))
1265+ else if ((hb[3] > hc))
12641266 then "D"
1265- else if ((ha[4] > hb))
1267+ else if ((hb[4] > hc))
12661268 then "E"
12671269 else "F"
1268- hc
1269- }
1270-
1271-
1272-func hd (he,hf) = {
1273- let hg = gY[hf]
1274- func hh (eL,eM) = $Tuple2((((((eL._1 + gZ(eL._2, hg)) + gZ((eL._2 / dX), hg)) + gZ((eL._2 / dY), hg)) + gZ((eL._2 / dZ), hg)) + gZ((eL._2 / ea), hg)), (eL._2 / eb))
1275-
1276- let hi = {
1277- let eN = [1, 2, 3, 4, 5]
1278- let eO = size(eN)
1279- let eP = $Tuple2("", (he / dW))
1280- func eQ (eR,eS) = if ((eS >= eO))
1281- then eR
1282- else hh(eR, eN[eS])
1283-
1284- func eT (eR,eS) = if ((eS >= eO))
1285- then eR
1270+ hd
1271+ }
1272+
1273+
1274+func he (hf,hg) = {
1275+ let hh = gZ[hg]
1276+ func hi (eM,eN) = $Tuple2((((((eM._1 + ha(eM._2, hh)) + ha((eM._2 / dY), hh)) + ha((eM._2 / dZ), hh)) + ha((eM._2 / ea), hh)) + ha((eM._2 / eb), hh)), (eM._2 / ec))
1277+
1278+ let hj = {
1279+ let eO = [1, 2, 3, 4, 5]
1280+ let eP = size(eO)
1281+ let eQ = $Tuple2("", (hf / dX))
1282+ func eR (eS,eT) = if ((eT >= eP))
1283+ then eS
1284+ else hi(eS, eO[eT])
1285+
1286+ func eU (eS,eT) = if ((eT >= eP))
1287+ then eS
12861288 else throw("List size exceeds 5")
12871289
1288- eT(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5)
1289- }
1290- hi._1
1291- }
1292-
1293-
1294-let hj = [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]
1295-
1296-let hk = ["A", "B", "C", "D", "E", "F"]
1297-
1298-func hl (hm,gv) = {
1299- func hn (eL,ak) = {
1300- let fv = eL._2
1301- let ho = parseIntValue(ak)
1302- let gX = if ((ho == 0))
1290+ eU(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5)
1291+ }
1292+ hj._1
1293+ }
1294+
1295+
1296+let hk = [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]
1297+
1298+let hl = ["A", "B", "C", "D", "E", "F"]
1299+
1300+func hm (hn,gw) = {
1301+ func ho (eM,al) = {
1302+ let fw = eM._2
1303+ let hp = parseIntValue(al)
1304+ let gY = if ((hp == 0))
13031305 then 0
1304- else if ((ho >= (4 * gv)))
1305- then (ho / gv)
1306- else if ((ho > (3 * gv)))
1306+ else if ((hp >= (4 * gw)))
1307+ then (hp / gw)
1308+ else if ((hp > (3 * gw)))
13071309 then 3
1308- else (((ho - 1) / gv) + 1)
1309- $Tuple3((eL._1 :+ gX), (eL._2 + 1), (eL._3 + gX))
1310- }
1311-
1312- let hi = {
1313- let eN = hm
1314- let eO = size(eN)
1315- let eP = $Tuple3(nil, 0, 0)
1316- func eQ (eR,eS) = if ((eS >= eO))
1317- then eR
1318- else hn(eR, eN[eS])
1319-
1320- func eT (eR,eS) = if ((eS >= eO))
1321- then eR
1310+ else (((hp - 1) / gw) + 1)
1311+ $Tuple3((eM._1 :+ gY), (eM._2 + 1), (eM._3 + gY))
1312+ }
1313+
1314+ let hj = {
1315+ let eO = hn
1316+ let eP = size(eO)
1317+ let eQ = $Tuple3(nil, 0, 0)
1318+ func eR (eS,eT) = if ((eT >= eP))
1319+ then eS
1320+ else ho(eS, eO[eT])
1321+
1322+ func eU (eS,eT) = if ((eT >= eP))
1323+ then eS
13221324 else throw("List size exceeds 6")
13231325
1324- eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
1325- }
1326- let hp = hi._1
1327- let hq = value(indexOf(hp, max(hp)))
1328- let hr = (hi._3 - 25)
1329- func hs (eL,K) = {
1330- let ax = if ((K == hq))
1331- then (hp[K] - hr)
1332- else hp[K]
1333- let aB = if ((ax == 0))
1326+ eU(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6)
1327+ }
1328+ let hq = hj._1
1329+ let hr = value(indexOf(hq, max(hq)))
1330+ let hs = (hj._3 - 25)
1331+ func ht (eM,L) = {
1332+ let ay = if ((L == hr))
1333+ then (hq[L] - hs)
1334+ else hq[L]
1335+ let aC = if ((ay == 0))
13341336 then nil
1335- else split(drop(toString(pow(10, 0, ax, 0, 0, DOWN)), 1), "")
1336- let fQ = hk[K]
1337- func ht (hu,hv) = (hu :+ fQ)
1338-
1339- let hw = {
1340- let eN = aB
1341- let eO = size(eN)
1342- let eP = nil
1343- func hx (eR,eS) = if ((eS >= eO))
1344- then eR
1345- else ht(eR, eN[eS])
1346-
1347- func hy (eR,eS) = if ((eS >= eO))
1348- then eR
1337+ else split(drop(toString(pow(10, 0, ay, 0, 0, DOWN)), 1), "")
1338+ let fR = hl[L]
1339+ func hu (hv,hw) = (hv :+ fR)
1340+
1341+ let hx = {
1342+ let eO = aC
1343+ let eP = size(eO)
1344+ let eQ = nil
1345+ func hy (eS,eT) = if ((eT >= eP))
1346+ then eS
1347+ else hu(eS, eO[eT])
1348+
1349+ func hz (eS,eT) = if ((eT >= eP))
1350+ then eS
13491351 else throw("List size exceeds 25")
13501352
1351- hy(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(eP, 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)
1352- }
1353- (eL ++ hw)
1354- }
1355-
1356- let eW = {
1357- let eN = u
1358- let eO = size(eN)
1359- let eP = nil
1360- func hx (eR,eS) = if ((eS >= eO))
1361- then eR
1362- else hs(eR, eN[eS])
1363-
1364- func hy (eR,eS) = if ((eS >= eO))
1365- then eR
1353+ hz(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(eQ, 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)
1354+ }
1355+ (eM ++ hx)
1356+ }
1357+
1358+ let eX = {
1359+ let eO = v
1360+ let eP = size(eO)
1361+ let eQ = nil
1362+ func hy (eS,eT) = if ((eT >= eP))
1363+ then eS
1364+ else ht(eS, eO[eT])
1365+
1366+ func hz (eS,eT) = if ((eT >= eP))
1367+ then eS
13661368 else throw("List size exceeds 6")
13671369
1368- hy(hx(hx(hx(hx(hx(hx(eP, 0), 1), 2), 3), 4), 5), 6)
1369- }
1370- func hz (eL,fv) = (eL + eW[fv])
1371-
1372- let eN = hj
1373- let eO = size(eN)
1374- let eP = ""
1375- func hA (eR,eS) = if ((eS >= eO))
1376- then eR
1377- else hz(eR, eN[eS])
1378-
1379- func hB (eR,eS) = if ((eS >= eO))
1380- then eR
1370+ hz(hy(hy(hy(hy(hy(hy(eQ, 0), 1), 2), 3), 4), 5), 6)
1371+ }
1372+ func hA (eM,fw) = (eM + eX[fw])
1373+
1374+ let eO = hk
1375+ let eP = size(eO)
1376+ let eQ = ""
1377+ func hB (eS,eT) = if ((eT >= eP))
1378+ then eS
1379+ else hA(eS, eO[eT])
1380+
1381+ func hC (eS,eT) = if ((eT >= eP))
1382+ then eS
13811383 else throw("List size exceeds 25")
13821384
1383- hB(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(eP, 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)
1384- }
1385-
1386-
1387-func hC (hD) = {
1388- let hE = split(valueOrElse(getString(hD), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1389-[toString(valueOrElse(parseInt(hE[bs]), 0)), if ((size(split(hE[bt], "_")) == aM))
1390- then hE[bt]
1391- else "0_0_0_0_0_0", if ((size(split(hE[bu], "_")) == aM))
1392- then hE[bu]
1393- else "0_0_0_0_0_0", hE[bv]]
1394- }
1395-
1396-
1397-func hF (hG) = {
1398- let fj = split(hG, "_")
1399- ((aP * (parseIntValue(fj[1]) + 1)) * parseIntValue(fj[0]))
1400- }
1401-
1402-
1403-func hH (hI) = {
1404- let hJ = hI[bm]
1405- func hK (eL,hL) = (eL + parseIntValue(hL))
1406-
1407- func hM (eL,hL) = {
1408- let K = eL._1
1409- let eE = (((parseIntValue(hL) + bi) - 1) / bi)
1410- $Tuple2((K + 1), (eL._2 + (eE * o)))
1411- }
1412-
1413- let hN = {
1414- let eN = split(hI[bk], "_")
1415- let eO = size(eN)
1416- let eP = 0
1417- func eQ (eR,eS) = if ((eS >= eO))
1418- then eR
1419- else hK(eR, eN[eS])
1420-
1421- func eT (eR,eS) = if ((eS >= eO))
1422- then eR
1385+ hC(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(eQ, 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)
1386+ }
1387+
1388+
1389+func hD (hE) = {
1390+ let hF = split(valueOrElse(getString(hE), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1391+[toString(valueOrElse(parseInt(hF[bt]), 0)), if ((size(split(hF[bu], "_")) == aN))
1392+ then hF[bu]
1393+ else "0_0_0_0_0_0", if ((size(split(hF[bv], "_")) == aN))
1394+ then hF[bv]
1395+ else "0_0_0_0_0_0", hF[bw]]
1396+ }
1397+
1398+
1399+func hG (hH) = {
1400+ let fk = split(hH, "_")
1401+ ((aQ * (parseIntValue(fk[1]) + 1)) * parseIntValue(fk[0]))
1402+ }
1403+
1404+
1405+func hI (hJ) = {
1406+ let hK = hJ[bn]
1407+ func hL (eM,hM) = (eM + parseIntValue(hM))
1408+
1409+ func hN (eM,hM) = {
1410+ let L = eM._1
1411+ let eF = (((parseIntValue(hM) + bj) - 1) / bj)
1412+ $Tuple2((L + 1), (eM._2 + (eF * p)))
1413+ }
1414+
1415+ let hO = {
1416+ let eO = split(hJ[bl], "_")
1417+ let eP = size(eO)
1418+ let eQ = 0
1419+ func eR (eS,eT) = if ((eT >= eP))
1420+ then eS
1421+ else hL(eS, eO[eT])
1422+
1423+ func eU (eS,eT) = if ((eT >= eP))
1424+ then eS
14231425 else throw("List size exceeds 6")
14241426
1425- eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
1426- }
1427- let hO = {
1428- let eN = split(hI[bl], "_")
1429- let eO = size(eN)
1430- let eP = 0
1431- func hx (eR,eS) = if ((eS >= eO))
1432- then eR
1433- else hK(eR, eN[eS])
1434-
1435- func hy (eR,eS) = if ((eS >= eO))
1436- then eR
1427+ eU(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6)
1428+ }
1429+ let hP = {
1430+ let eO = split(hJ[bm], "_")
1431+ let eP = size(eO)
1432+ let eQ = 0
1433+ func hy (eS,eT) = if ((eT >= eP))
1434+ then eS
1435+ else hL(eS, eO[eT])
1436+
1437+ func hz (eS,eT) = if ((eT >= eP))
1438+ then eS
14371439 else throw("List size exceeds 6")
14381440
1439- hy(hx(hx(hx(hx(hx(hx(eP, 0), 1), 2), 3), 4), 5), 6)
1440- }
1441- let hP = if ((hJ == ""))
1441+ hz(hy(hy(hy(hy(hy(hy(eQ, 0), 1), 2), 3), 4), 5), 6)
1442+ }
1443+ let hQ = if ((hK == ""))
14421444 then 0
1443- else ( let eN = split_4C(hJ, "_")
1444- let eO = size(eN)
1445- let eP = $Tuple2(0, 0)
1446- func hA (eR,eS) = if ((eS >= eO))
1447- then eR
1448- else hM(eR, eN[eS])
1449-
1450- func hB (eR,eS) = if ((eS >= eO))
1451- then eR
1445+ else ( let eO = split_4C(hK, "_")
1446+ let eP = size(eO)
1447+ let eQ = $Tuple2(0, 0)
1448+ func hB (eS,eT) = if ((eT >= eP))
1449+ then eS
1450+ else hN(eS, eO[eT])
1451+
1452+ func hC (eS,eT) = if ((eT >= eP))
1453+ then eS
14521454 else throw("List size exceeds 50")
14531455
1454- hB(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(eP, 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
1455- ((hN + hO) + hP)
1456- }
1457-
1458-
1459-func hQ (hR,hS,hT) = {
1460- let hG = ((toString(hS) + "_") + toString(hT))
1461- let hU = hF(hG)
1462- let hV = valueOrElse(getString(hR), (hG + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1463- let hW = split_4C(hV, ":")
1464- let hX = hH(hW)
1465- let hY = if ((5 > size(hW)))
1466- then makeString(["0", toString(hX), toString((hU - hX)), toString(hU)], "_")
1456+ hC(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(eQ, 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
1457+ ((hO + hP) + hQ)
1458+ }
1459+
1460+
1461+func hR (hS,hT,hU) = {
1462+ let hH = ((toString(hT) + "_") + toString(hU))
1463+ let hV = hG(hH)
1464+ let hW = valueOrElse(getString(hS), (hH + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1465+ let hX = split_4C(hW, ":")
1466+ let hY = hI(hX)
1467+ let hZ = if ((5 > size(hX)))
1468+ then makeString(["0", toString(hY), toString((hV - hY)), toString(hV)], "_")
14671469 else {
1468- let hZ = split(hW[bn], "_")
1469- let ia = parseIntValue(hZ[bo])
1470- let ib = if ((size(hZ) > 1))
1471- then parseIntValue(hZ[bp])
1472- else hX
1473- makeString([toString(ia), toString(ib), toString(((hU - ia) - ib)), toString(hU)], "_")
1474- }
1475-[hW[bj], if ((size(split(hW[bk], "_")) == aM))
1476- then hW[bk]
1477- else "0_0_0_0_0_0", if ((size(split(hW[bl], "_")) == aM))
1478- then hW[bl]
1479- else "0_0_0_0_0_0", hW[bm], hY]
1480- }
1481-
1482-
1483-func ic (hI) = {
1484- let id = hH(hI)
1485- let ie = parseIntValue(split(hI[bn], "_")[bo])
1486- ((hF(hI[bj]) - id) - ie)
1487- }
1488-
1489-
1490-func if (ig,hI,ih) = if ((size(ig) != 3))
1470+ let ia = split(hX[bo], "_")
1471+ let ib = parseIntValue(ia[bp])
1472+ let ic = if ((size(ia) > 1))
1473+ then parseIntValue(ia[bq])
1474+ else hY
1475+ makeString([toString(ib), toString(ic), toString(((hV - ib) - ic)), toString(hV)], "_")
1476+ }
1477+[hX[bk], if ((size(split(hX[bl], "_")) == aN))
1478+ then hX[bl]
1479+ else "0_0_0_0_0_0", if ((size(split(hX[bm], "_")) == aN))
1480+ then hX[bm]
1481+ else "0_0_0_0_0_0", hX[bn], hZ]
1482+ }
1483+
1484+
1485+func id (hJ) = {
1486+ let ie = hI(hJ)
1487+ let if = parseIntValue(split(hJ[bo], "_")[bp])
1488+ ((hG(hJ[bk]) - ie) - if)
1489+ }
1490+
1491+
1492+func ig (ih,hJ,ii) = if ((size(ih) != 3))
14911493 then throw("cargoListStr should contain exactly 2 ':' separators")
14921494 else {
1493- let ii = split(ig[0], "_")
1494- let ij = split(ig[1], "_")
1495- let ik = if ((ig[2] == ""))
1495+ let ij = split(ih[0], "_")
1496+ let ik = split(ih[1], "_")
1497+ let il = if ((ih[2] == ""))
14961498 then nil
1497- else split_4C(ig[2], "_")
1498- if ((size(ii) != aM))
1499+ else split_4C(ih[2], "_")
1500+ if ((size(ij) != aN))
14991501 then throw("All 6 resources should be passed")
1500- else if ((size(ij) != aM))
1502+ else if ((size(ik) != aN))
15011503 then throw("All 6 materials should be passed")
15021504 else {
1503- let gQ = ic(hI)
1504- let il = split(hI[bk], "_")
1505- let im = split(hI[bl], "_")
1506- let in = if ((hI[bm] == ""))
1505+ let gR = id(hJ)
1506+ let im = split(hJ[bl], "_")
1507+ let in = split(hJ[bm], "_")
1508+ let io = if ((hJ[bn] == ""))
15071509 then nil
1508- else split_4C(hI[bm], "_")
1509- let gO = split(ih[bt], "_")
1510- let io = split(ih[bu], "_")
1511- let ip = if ((ih[bv] == ""))
1510+ else split_4C(hJ[bn], "_")
1511+ let gP = split(ii[bu], "_")
1512+ let ip = split(ii[bv], "_")
1513+ let iq = if ((ii[bw] == ""))
15121514 then nil
1513- else split_4C(ih[bv], "_")
1514- func iq (eL,hL) = {
1515- let gy = eL._1
1516- let ir = parseIntValue(hL)
1517- let is = parseIntValue(il[gy])
1518- let it = parseIntValue(gO[gy])
1519- if ((ir == 0))
1520- then $Tuple4((gy + 1), (eL._2 :+ il[gy]), (eL._3 :+ gO[gy]), eL._4)
1521- else if ((ir > 0))
1522- then if ((ir > it))
1523- then throw((((("Attempt to take " + hL) + " from backpack, but only ") + toString(it)) + " available"))
1524- else $Tuple4((gy + 1), (eL._2 :+ toString((is + ir))), (eL._3 :+ toString((it - ir))), (eL._4 + ir))
1525- else if ((-(ir) > is))
1526- then throw((((("Attempt to take " + toString(-(ir))) + " from warehouse, but only ") + toString(is)) + " available"))
1527- else $Tuple4((gy + 1), (eL._2 :+ toString((is + ir))), (eL._3 :+ toString((it - ir))), (eL._4 + ir))
1515+ else split_4C(ii[bw], "_")
1516+ func ir (eM,hM) = {
1517+ let gz = eM._1
1518+ let is = parseIntValue(hM)
1519+ let it = parseIntValue(im[gz])
1520+ let iu = parseIntValue(gP[gz])
1521+ if ((is == 0))
1522+ then $Tuple4((gz + 1), (eM._2 :+ im[gz]), (eM._3 :+ gP[gz]), eM._4)
1523+ else if ((is > 0))
1524+ then if ((is > iu))
1525+ then throw((((("Attempt to take " + hM) + " from backpack, but only ") + toString(iu)) + " available"))
1526+ else $Tuple4((gz + 1), (eM._2 :+ toString((it + is))), (eM._3 :+ toString((iu - is))), (eM._4 + is))
1527+ else if ((-(is) > it))
1528+ then throw((((("Attempt to take " + toString(-(is))) + " from warehouse, but only ") + toString(it)) + " available"))
1529+ else $Tuple4((gz + 1), (eM._2 :+ toString((it + is))), (eM._3 :+ toString((iu - is))), (eM._4 + is))
15281530 }
15291531
1530- let eW = {
1531- let eN = ii
1532- let eO = size(eN)
1533- let eP = $Tuple4(0, nil, nil, 0)
1534- func eQ (eR,eS) = if ((eS >= eO))
1535- then eR
1536- else iq(eR, eN[eS])
1537-
1538- func eT (eR,eS) = if ((eS >= eO))
1539- then eR
1532+ let eX = {
1533+ let eO = ij
1534+ let eP = size(eO)
1535+ let eQ = $Tuple4(0, nil, nil, 0)
1536+ func eR (eS,eT) = if ((eT >= eP))
1537+ then eS
1538+ else ir(eS, eO[eT])
1539+
1540+ func eU (eS,eT) = if ((eT >= eP))
1541+ then eS
15401542 else throw("List size exceeds 6")
15411543
1542- eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
1544+ eU(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6)
15431545 }
1544- func iu (eL,hL) = {
1545- let gy = eL._1
1546- let ir = parseIntValue(hL)
1547- let iv = parseIntValue(im[gy])
1548- let iw = parseIntValue(io[gy])
1549- if ((ir == 0))
1550- then $Tuple4((gy + 1), (eL._2 :+ im[gy]), (eL._3 :+ io[gy]), eL._4)
1551- else if ((ir > 0))
1552- then if ((ir > iw))
1553- then throw((((("Attempt to take " + hL) + " from backpack, but only ") + toString(iw)) + " available"))
1554- else $Tuple4((gy + 1), (eL._2 :+ toString((iv + ir))), (eL._3 :+ toString((iw - ir))), (eL._4 + ir))
1555- else if ((-(ir) > iv))
1556- then throw((((("Attempt to take " + toString(-(ir))) + " from warehouse, but only ") + toString(iv)) + " available"))
1557- else $Tuple4((gy + 1), (eL._2 :+ toString((iv + ir))), (eL._3 :+ toString((iw - ir))), (eL._4 + ir))
1546+ func iv (eM,hM) = {
1547+ let gz = eM._1
1548+ let is = parseIntValue(hM)
1549+ let iw = parseIntValue(in[gz])
1550+ let ix = parseIntValue(ip[gz])
1551+ if ((is == 0))
1552+ then $Tuple4((gz + 1), (eM._2 :+ in[gz]), (eM._3 :+ ip[gz]), eM._4)
1553+ else if ((is > 0))
1554+ then if ((is > ix))
1555+ then throw((((("Attempt to take " + hM) + " from backpack, but only ") + toString(ix)) + " available"))
1556+ else $Tuple4((gz + 1), (eM._2 :+ toString((iw + is))), (eM._3 :+ toString((ix - is))), (eM._4 + is))
1557+ else if ((-(is) > iw))
1558+ then throw((((("Attempt to take " + toString(-(is))) + " from warehouse, but only ") + toString(iw)) + " available"))
1559+ else $Tuple4((gz + 1), (eM._2 :+ toString((iw + is))), (eM._3 :+ toString((ix - is))), (eM._4 + is))
15581560 }
15591561
1560- let gg = {
1561- let eN = ij
1562- let eO = size(eN)
1563- let eP = $Tuple4(0, nil, nil, eW._4)
1564- func hx (eR,eS) = if ((eS >= eO))
1565- then eR
1566- else iu(eR, eN[eS])
1567-
1568- func hy (eR,eS) = if ((eS >= eO))
1569- then eR
1562+ let gh = {
1563+ let eO = ik
1564+ let eP = size(eO)
1565+ let eQ = $Tuple4(0, nil, nil, eX._4)
1566+ func hy (eS,eT) = if ((eT >= eP))
1567+ then eS
1568+ else iv(eS, eO[eT])
1569+
1570+ func hz (eS,eT) = if ((eT >= eP))
1571+ then eS
15701572 else throw("List size exceeds 6")
15711573
1572- hy(hx(hx(hx(hx(hx(hx(eP, 0), 1), 2), 3), 4), 5), 6)
1574+ hz(hy(hy(hy(hy(hy(hy(eQ, 0), 1), 2), 3), 4), 5), 6)
15731575 }
1574- func ix (eL,hL) = {
1575- let gy = eL._1
1576- let ir = parseIntValue(hL)
1577- let iy = if ((size(in) > gy))
1578- then parseIntValue(in[gy])
1576+ func iy (eM,hM) = {
1577+ let gz = eM._1
1578+ let is = parseIntValue(hM)
1579+ let iz = if ((size(io) > gz))
1580+ then parseIntValue(io[gz])
15791581 else 0
1580- let iz = if ((size(ip) > gy))
1581- then parseIntValue(ip[gy])
1582+ let iA = if ((size(iq) > gz))
1583+ then parseIntValue(iq[gz])
15821584 else 0
1583- if ((ir == 0))
1584- then $Tuple4((gy + 1), (eL._2 :+ toString(iy)), (eL._3 :+ toString(iz)), eL._4)
1585- else if ((ir > 0))
1586- then if ((ir > iz))
1587- then throw((((("Attempt to take " + hL) + " from backpack, but only ") + toString(iz)) + " available"))
1585+ if ((is == 0))
1586+ then $Tuple4((gz + 1), (eM._2 :+ toString(iz)), (eM._3 :+ toString(iA)), eM._4)
1587+ else if ((is > 0))
1588+ then if ((is > iA))
1589+ then throw((((("Attempt to take " + hM) + " from backpack, but only ") + toString(iA)) + " available"))
15881590 else {
1589- let iA = (eB((iy + ir), bi) - eB(iy, bi))
1590- $Tuple4((gy + 1), (eL._2 :+ toString((iy + ir))), (eL._3 :+ toString((iz - ir))), (eL._4 + iA))
1591+ let iB = (eC((iz + is), bj) - eC(iz, bj))
1592+ $Tuple4((gz + 1), (eM._2 :+ toString((iz + is))), (eM._3 :+ toString((iA - is))), (eM._4 + iB))
15911593 }
1592- else if ((-(ir) > iy))
1593- then throw((((("Attempt to take " + toString(-(ir))) + " from warehouse, but only ") + toString(iy)) + " available"))
1594+ else if ((-(is) > iz))
1595+ then throw((((("Attempt to take " + toString(-(is))) + " from warehouse, but only ") + toString(iz)) + " available"))
15941596 else {
1595- let iA = (eB((iy + ir), bi) - eB(iy, bi))
1596- $Tuple4((gy + 1), (eL._2 :+ toString((iy + ir))), (eL._3 :+ toString((iz - ir))), (eL._4 + iA))
1597+ let iB = (eC((iz + is), bj) - eC(iz, bj))
1598+ $Tuple4((gz + 1), (eM._2 :+ toString((iz + is))), (eM._3 :+ toString((iA - is))), (eM._4 + iB))
15971599 }
15981600 }
15991601
1600- let hE = if ((size(ik) != 0))
1602+ let hF = if ((size(il) != 0))
16011603 then {
1602- let eN = ik
1603- let eO = size(eN)
1604- let eP = $Tuple4(0, nil, nil, gg._4)
1605- func hA (eR,eS) = if ((eS >= eO))
1606- then eR
1607- else ix(eR, eN[eS])
1608-
1609- func hB (eR,eS) = if ((eS >= eO))
1610- then eR
1604+ let eO = il
1605+ let eP = size(eO)
1606+ let eQ = $Tuple4(0, nil, nil, gh._4)
1607+ func hB (eS,eT) = if ((eT >= eP))
1608+ then eS
1609+ else iy(eS, eO[eT])
1610+
1611+ func hC (eS,eT) = if ((eT >= eP))
1612+ then eS
16111613 else throw("List size exceeds 50")
16121614
1613- hB(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(eP, 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)
1615+ hC(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(eQ, 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)
16141616 }
1615- else $Tuple4(0, in, ip, gg._4)
1616- let iB = hE._4
1617- if ((iB > gQ))
1618- then throw((((("Attempt to put total " + toString(iB)) + " stuff, but only ") + toString(gQ)) + " warehouse space left"))
1619- else $Tuple7(makeString(eW._2, "_"), makeString(gg._2, "_"), makeString_2C(hE._2, "_"), makeString(eW._3, "_"), makeString(gg._3, "_"), makeString_2C(hE._3, "_"), iB)
1617+ else $Tuple4(0, io, iq, gh._4)
1618+ let iC = hF._4
1619+ if ((iC > gR))
1620+ then throw((((("Attempt to put total " + toString(iC)) + " stuff, but only ") + toString(gR)) + " warehouse space left"))
1621+ else $Tuple7(makeString(eX._2, "_"), makeString(gh._2, "_"), makeString_2C(hF._2, "_"), makeString(eX._3, "_"), makeString(gh._3, "_"), makeString_2C(hF._3, "_"), iC)
16201622 }
16211623 }
16221624
16231625
1624-func iC (iD,iE) = {
1625- let bW = toString(iD)
1626- let iF = gW(toBigInt(iE))
1627- let iG = valueOrElse(getInteger(ed()), (ec + 1))
1628- let eh = toString(iG)
1629- let hf = toInt((iF % dW))
1630- let gB = hd(iF, hf)
1631- let ae = bb[hf]
1632- let iH = Issue(eA(eh, "S"), makeString([eh, "S", gB, ae], "_"), 1, 0, false)
1633- let bA = calculateAssetId(iH)
1634- let iI = toBase58String(bA)
1635- $Tuple2([IntegerEntry(ed(), (iG + 1)), iH, StringEntry(eg(eh), iI), StringEntry(bz(iI), bW), StringEntry(ej(eh), bW), IntegerEntry(bJ(iI), 0), IntegerEntry(ei(iI, bW), 0), ScriptTransfer(iD, 1, bA)], $Tuple2(iI, ae))
1636- }
1637-
1638-
1639-func iJ (bW,iK,iL) = if (!(sigVerify_8Kb(iK, iL, f)))
1626+func iD (iE,iF) = {
1627+ let bX = toString(iE)
1628+ let iG = gX(toBigInt(iF))
1629+ let iH = valueOrElse(getInteger(ee()), (ed + 1))
1630+ let ei = toString(iH)
1631+ let hg = toInt((iG % dX))
1632+ let gC = he(iG, hg)
1633+ let af = bc[hg]
1634+ let iI = Issue(eB(ei, "S"), makeString([ei, "S", gC, af], "_"), 1, 0, false)
1635+ let bB = calculateAssetId(iI)
1636+ let iJ = toBase58String(bB)
1637+ $Tuple2([IntegerEntry(ee(), (iH + 1)), iI, StringEntry(eh(ei), iJ), StringEntry(bA(iJ), bX), StringEntry(ek(ei), bX), IntegerEntry(bK(iJ), 0), IntegerEntry(ej(iJ, bX), 0), ScriptTransfer(iE, 1, bB)], $Tuple2(iJ, af))
1638+ }
1639+
1640+
1641+func iK (bX,iL,iM) = if (!(sigVerify_8Kb(iL, iM, g)))
16401642 then throw("signature does not match")
16411643 else {
1642- let fj = split_4C(toUtf8String(iK), ";")
1643- let iM = split_4C(fj[0], "|")
1644- let iN = split(iM[er], "_")
1645- let iO = parseIntValue(iN[0])
1646- let iP = parseIntValue(iN[1])
1647- let iQ = split(fj[1], ":")
1648- let iR = iQ[0]
1649- let iS = parseIntValue(iM[es])
1650- if (if ((iS > (lastBlock.timestamp + dO)))
1644+ let fk = split_4C(toUtf8String(iL), ";")
1645+ let iN = split_4C(fk[0], "|")
1646+ let iO = split(iN[es], "_")
1647+ let iP = parseIntValue(iO[0])
1648+ let iQ = parseIntValue(iO[1])
1649+ let iR = split(fk[1], ":")
1650+ let iS = iR[0]
1651+ let iT = parseIntValue(iN[et])
1652+ if (if ((iT > (lastBlock.timestamp + dP)))
16511653 then true
1652- else ((lastBlock.timestamp - dO) > iS))
1653- then throw(((("signature outdated: logTime=" + toString(iS)) + ", bcTime=") + toString(lastBlock.timestamp)))
1654+ else ((lastBlock.timestamp - dP) > iT))
1655+ then throw(((("signature outdated: logTime=" + toString(iT)) + ", bcTime=") + toString(lastBlock.timestamp)))
16541656 else {
1655- let iT = iQ[1]
1656- let iU = valueOrElse(getString(au(bW)), "")
1657- if ((iU != iT))
1658- then throw(((("Tx ids don't match! In state: " + iU) + ", in msg: ") + iT))
1657+ let iU = iR[1]
1658+ let iV = valueOrElse(getString(av(bX)), "")
1659+ if ((iV != iU))
1660+ then throw(((("Tx ids don't match! In state: " + iV) + ", in msg: ") + iU))
16591661 else {
1660- let bO = valueOrErrorMessage(getString(bS(bW)), "You don't have a duck staked")
1661- let iV = cP(bO)
1662- let iW = dw(valueOrElse(getInteger(cS(bO)), 0))
1663- let iX = valueOrElse(getInteger(iV), iW)
1664- if ((iX != iO))
1665- then throw(((("oldHealth=" + toString(iX)) + " from state does not match one from flight log=") + toString(iO)))
1666- else if ((0 >= iO))
1662+ let bP = valueOrErrorMessage(getString(bT(bX)), "You don't have a duck staked")
1663+ let iW = cQ(bP)
1664+ let iX = dx(valueOrElse(getInteger(cT(bP)), 0))
1665+ let iY = valueOrElse(getInteger(iW), iX)
1666+ if ((iY != iP))
1667+ then throw(((("oldHealth=" + toString(iY)) + " from state does not match one from flight log=") + toString(iP)))
1668+ else if ((0 >= iP))
16671669 then throw("You can't fly with zero health")
1668- else if (!(gj(bO)))
1670+ else if (!(gk(bP)))
16691671 then throw("Equipment incompatible")
16701672 else {
1671- let iY = if ((size(iM) > et))
1672- then iM[et]
1673+ let iZ = if ((size(iN) > eu))
1674+ then iN[eu]
16731675 else ""
1674- let iZ = if ((size(iM) > eu))
1675- then iM[eu]
1676+ let ja = if ((size(iN) > ev))
1677+ then iN[ev]
16761678 else ""
1677- let ja = if (if ((iP > 0))
1678- then (iY == "$")
1679+ let jb = if (if ((iQ > 0))
1680+ then (iZ == "$")
16791681 else false)
1680- then al(invoke(L, "sendUsdtPrize", [bW], nil))
1682+ then am(invoke(M, "sendUsdtPrize", [bX], nil))
16811683 else 0
1682- $Tuple5(iP, bO, ja, iR, iZ)
1684+ $Tuple5(iQ, bP, jb, iS, ja)
16831685 }
16841686 }
16851687 }
16861688 }
16871689
16881690
1689-func jb (bI,jc) = {
1690- let hT = valueOrElse(getInteger(bJ(bI)), 0)
1691- let jd = valueOrElse(getInteger(bD(aL, bI)), 0)
1692- let je = (hT / 6)
1693- let jf = (hT / 7)
1694- ((aO + fraction(aO, ((hT + je) + (2 * jf)), 5)) + fraction(aO, jd, (jc * 5)))
1695- }
1696-
1697-
1698-func jg (av,jh,ji) = {
1699- let jj = if ((jh == eo))
1700- then $Tuple2(ji, valueOrElse(getString(bS(av)), ""))
1691+func jc (bJ,jd) = {
1692+ let hU = valueOrElse(getInteger(bK(bJ)), 0)
1693+ let je = valueOrElse(getInteger(bE(aM, bJ)), 0)
1694+ let jf = (hU / 6)
1695+ let jg = (hU / 7)
1696+ ((aP + fraction(aP, ((hU + jf) + (2 * jg)), 5)) + fraction(aP, je, (jd * 5)))
1697+ }
1698+
1699+
1700+func jh (aw,ji,jj) = {
1701+ let jk = if ((ji == ep))
1702+ then $Tuple2(jj, valueOrElse(getString(bT(aw)), ""))
17011703 else {
1702- let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
1703- let jk = valueOrElse(getString(bU(bO)), aQ)
1704- let cp = split(value(jk), "_")
1705- if ((cp[bx] != "L"))
1706- then throw((("Duck location type is " + cp[bx]) + ", but should be L"))
1707- else $Tuple2(cp[by], bO)
1708- }
1709- let bI = jj._1
1710- let jl = jj._2
1711- let jm = value(assetInfo(fromBase58String(bI)))
1712- let jn = bC(bI)
1713- let jo = valueOrErrorMessage(getInteger(jn), (("Land " + jm.name) + " is not staked"))
1714- let jp = valueOrErrorMessage(getString(bz(bI)), (("NFT " + jm.name) + " is orphaned"))
1715- if ((jp != av))
1716- then throw((aI + " is not yours"))
1704+ let bP = valueOrErrorMessage(getString(bT(aw)), "You don't have a duck staked")
1705+ let jl = valueOrElse(getString(bV(bP)), aR)
1706+ let cq = split(value(jl), "_")
1707+ if ((cq[by] != "L"))
1708+ then throw((("Duck location type is " + cq[by]) + ", but should be L"))
1709+ else $Tuple2(cq[bz], bP)
1710+ }
1711+ let bJ = jk._1
1712+ let jm = jk._2
1713+ let jn = value(assetInfo(fromBase58String(bJ)))
1714+ let jo = bD(bJ)
1715+ let jp = valueOrErrorMessage(getInteger(jo), (("Land " + jn.name) + " is not staked"))
1716+ let jq = valueOrErrorMessage(getString(bA(bJ)), (("NFT " + jn.name) + " is orphaned"))
1717+ if ((jq != aw))
1718+ then throw((aJ + " is not yours"))
17171719 else {
1718- let jq = split(jm.description, "_")
1719- $Tuple4(jl, bI, jq, jo)
1720- }
1721- }
1722-
1723-
1724-func jr (av,eC,jh,ji) = if ((0 > eC))
1720+ let jr = split(jn.description, "_")
1721+ $Tuple4(jm, bJ, jr, jp)
1722+ }
1723+ }
1724+
1725+
1726+func js (aw,eD,ji,jj) = if ((0 > eD))
17251727 then throw("Negative amount")
17261728 else {
1727- let fQ = jg(av, jh, ji)
1728- let ar = fQ._3[T]
1729- let gu = gA(fQ._3[U])
1730- let gE = (aH() - fQ._4)
1731- if ((0 > gE))
1732- then throw(((("Saved timestamp is in future, saved = " + toString(fQ._4)) + ", final = ") + toString(aH())))
1729+ let fR = jh(aw, ji, jj)
1730+ let as = fR._3[U]
1731+ let gv = gB(fR._3[V])
1732+ let gF = (aI() - fR._4)
1733+ if ((0 > gF))
1734+ then throw(((("Saved timestamp is in future, saved = " + toString(fR._4)) + ", final = ") + toString(aI())))
17331735 else {
1734- let jc = aq(ar)
1735- let js = jb(fQ._2, jc)
1736- let jt = fraction(gE, (js * jc), dJ)
1737- if ((eC > jt))
1738- then throw(((("Not enough resources, available = " + toString(jt)) + ", requested = ") + toString(eC)))
1736+ let jd = ar(as)
1737+ let jt = jc(fR._2, jd)
1738+ let ju = fraction(gF, (jt * jd), dK)
1739+ if ((eD > ju))
1740+ then throw(((("Not enough resources, available = " + toString(ju)) + ", requested = ") + toString(eD)))
17391741 else {
1740- let ju = fraction((jt - eC), dJ, (js * jc))
1741- let jv = (aH() - ju)
1742- let hS = (jc / p)
1743- let gP = gK(gu, (gE - ju), hS, js)
1744- let hR = bH(fQ._2)
1745- let hT = valueOrElse(getInteger(bJ(fQ._2)), 0)
1746- let hI = hQ(hR, hS, hT)
1747- let hZ = split(hI[bn], "_")
1748- let gQ = parseIntValue(hZ[bq])
1749- if (if ((jh == eo))
1750- then (eC > gQ)
1742+ let jv = fraction((ju - eD), dK, (jt * jd))
1743+ let jw = (aI() - jv)
1744+ let hT = (jd / q)
1745+ let gQ = gL(gv, (gF - jv), hT, jt)
1746+ let hS = bI(fR._2)
1747+ let hU = valueOrElse(getInteger(bK(fR._2)), 0)
1748+ let hJ = hR(hS, hT, hU)
1749+ let ia = split(hJ[bo], "_")
1750+ let gR = parseIntValue(ia[br])
1751+ if (if ((ji == ep))
1752+ then (eD > gR)
17511753 else false)
1752- then throw((("Only " + toString(gQ)) + " space left in warehouse"))
1754+ then throw((("Only " + toString(gR)) + " space left in warehouse"))
17531755 else {
1754- let hD = bT(fQ._1)
1755- let ih = hC(hD)
1756- let gO = split(ih[bt], "_")
1757- let gN = split(hI[bk], "_")
1758- let jw = if ((jh == eo))
1759- then $Tuple4(gC(gN, gu, (gE - ju), hS, js), ih[bt], (parseIntValue(hZ[bp]) + gP._2), (parseIntValue(hZ[bq]) - gP._2))
1760- else if ((jh == ep))
1761- then $Tuple4(hI[bk], gC(gO, gu, (gE - ju), hS, js), parseIntValue(hZ[bp]), parseIntValue(hZ[bq]))
1756+ let hE = bU(fR._1)
1757+ let ii = hD(hE)
1758+ let gP = split(ii[bu], "_")
1759+ let gO = split(hJ[bl], "_")
1760+ let jx = if ((ji == ep))
1761+ then $Tuple4(gD(gO, gv, (gF - jv), hT, jt), ii[bu], (parseIntValue(ia[bq]) + gQ._2), (parseIntValue(ia[br]) - gQ._2))
1762+ else if ((ji == eq))
1763+ then $Tuple4(hJ[bl], gD(gP, gv, (gF - jv), hT, jt), parseIntValue(ia[bq]), parseIntValue(ia[br]))
17621764 else {
1763- let jx = gM(gN, gO, gP, gQ)
1764- let jy = min([parseIntValue(hZ[bq]), gP._2])
1765- $Tuple4(jx._1, jx._2, (parseIntValue(hZ[bp]) + jy), (parseIntValue(hZ[bq]) - jy))
1765+ let jy = gN(gO, gP, gQ, gR)
1766+ let jz = min([parseIntValue(ia[br]), gQ._2])
1767+ $Tuple4(jy._1, jy._2, (parseIntValue(ia[bq]) + jz), (parseIntValue(ia[br]) - jz))
17661768 }
1767- let jz = jw._1
1768- let jA = jw._2
1769- let jB = jw._3
1770- let jC = jw._4
1771- $Tuple5([IntegerEntry(bC(fQ._2), jv), IntegerEntry(bF(aI, fQ._2, av), jv)], hD, [ih[bs], jA, ih[bu], ih[bv]], hR, [hI[bj], jz, hI[bl], hI[bm], makeString([hZ[bo], toString(jB), toString(jC), hZ[br]], "_")])
1769+ let jA = jx._1
1770+ let jB = jx._2
1771+ let jC = jx._3
1772+ let jD = jx._4
1773+ $Tuple5([IntegerEntry(bD(fR._2), jw), IntegerEntry(bG(aJ, fR._2, aw), jw)], hE, [ii[bt], jB, ii[bv], ii[bw]], hS, [hJ[bk], jA, hJ[bm], hJ[bn], makeString([ia[bp], toString(jC), toString(jD), ia[bs]], "_")])
17721774 }
17731775 }
17741776 }
17751777 }
17761778
17771779
1778-func jD (av,bI,jc,jh) = {
1779- let jn = bC(bI)
1780- let jo = value(getInteger(jn))
1781- let jt = (fraction((aH() - jo), jb(bI, jc), dJ) * jc)
1782- jr(av, jt, jh, bI)
1783- }
1784-
1785-
1786-func jE (eY,iD,jF,bI) = {
1787- let av = toString(iD)
1788- let fQ = jg(av, eq, bI)
1789- let jc = aq(fQ._3[T])
1790- let jG = bJ(fQ._2)
1791- let jH = valueOrElse(getInteger(jG), 0)
1780+func jE (aw,bJ,jd,ji) = {
1781+ let jo = bD(bJ)
1782+ let jp = value(getInteger(jo))
1783+ let ju = (fraction((aI() - jp), jc(bJ, jd), dK) * jd)
1784+ js(aw, ju, ji, bJ)
1785+ }
1786+
1787+
1788+func jF (eZ,iE,jG,bJ) = {
1789+ let aw = toString(iE)
1790+ let fR = jh(aw, er, bJ)
1791+ let jd = ar(fR._3[U])
1792+ let jH = bK(fR._2)
1793+ let jI = valueOrElse(getInteger(jH), 0)
17921794 if (if (!(b))
1793- then (jH >= 3)
1795+ then (jI >= 3)
17941796 else false)
17951797 then throw("Currently max infrastructure level = 3")
17961798 else {
1797- let jI = ((sqrt(jc, 0, 0, DOWN) / 5) + 2)
1798- let dB = (jH + 1)
1799+ let jJ = ((sqrt(jd, 0, 0, DOWN) / 5) + 2)
1800+ let dC = (jI + 1)
17991801 if (if (b)
1800- then (dB > jI)
1802+ then (dC > jJ)
18011803 else false)
1802- then throw(("Currently max infrastructure level = " + toString(jI)))
1804+ then throw(("Currently max infrastructure level = " + toString(jJ)))
18031805 else {
1804- let jJ = fraction(dR, (jc * dB), p)
1805- if (if (!(eY))
1806- then (jF != jJ)
1806+ let jK = fraction(dS, (jd * dC), q)
1807+ if (if (!(eZ))
1808+ then (jG != jK)
18071809 else false)
1808- then throw(("Payment attached should be " + toString(jJ)))
1810+ then throw(("Payment attached should be " + toString(jK)))
18091811 else {
1810- let hD = bT(fQ._1)
1811- let ih = hC(hD)
1812- let jK = split(ih[bu], "_")
1813- let jL = fraction(k, (jc * dB), p)
1814- let jM = makeString(eX(eY, jK, jL), "_")
1815- let jN = jD(av, fQ._2, jc, eq)
1816- let jO = jN._5
1817- let jP = hF(jO[bj])
1818- let jQ = makeString([split(jO[bj], "_")[0], toString(dB)], "_")
1819- let jR = hF(jQ)
1820- let hZ = split(jO[bn], "_")
1821- let jS = makeString([hZ[bo], hZ[bp], toString(((parseIntValue(hZ[bq]) + jR) - jP)), toString(jR)], "_")
1822- $Tuple3(([IntegerEntry(jG, dB), IntegerEntry(ei(fQ._2, av), dB), StringEntry(hD, makeString([ih[bs], jN._3[bt], jM, ih[bv]], ":")), StringEntry(jN._4, makeString([jQ, jO[bk], jO[bl], jO[bm], jS], ":"))] ++ jN._1), dB, jL)
1812+ let hE = bU(fR._1)
1813+ let ii = hD(hE)
1814+ let jL = split(ii[bv], "_")
1815+ let jM = fraction(l, (jd * dC), q)
1816+ let jN = makeString(eY(eZ, jL, jM), "_")
1817+ let jO = jE(aw, fR._2, jd, er)
1818+ let jP = jO._5
1819+ let jQ = hG(jP[bk])
1820+ let jR = makeString([split(jP[bk], "_")[0], toString(dC)], "_")
1821+ let jS = hG(jR)
1822+ let ia = split(jP[bo], "_")
1823+ let jT = makeString([ia[bp], ia[bq], toString(((parseIntValue(ia[br]) + jS) - jQ)), toString(jS)], "_")
1824+ $Tuple3(([IntegerEntry(jH, dC), IntegerEntry(ej(fR._2, aw), dC), StringEntry(hE, makeString([ii[bt], jO._3[bu], jN, ii[bw]], ":")), StringEntry(jO._4, makeString([jR, jP[bl], jP[bm], jP[bn], jT], ":"))] ++ jO._1), dC, jM)
18231825 }
18241826 }
18251827 }
18261828 }
18271829
18281830
1829-func jT (jU,jV,jW,jX) = {
1830- let dv = valueOrElse(getInteger(jV), 0)
1831- let dA = (dv + jX)
1832- let jY = dy(valueOrElse(getInteger(jU), 0), dA)
1833- $Tuple2([IntegerEntry(jU, jY[0]), IntegerEntry(jV, dA), IntegerEntry(jW, (valueOrElse(getInteger(jW), 0) + jY[1]))], dA)
1834- }
1835-
1836-
1837-func jZ (bO,jX) = {
1838- let jm = value(assetInfo(fromBase58String(bO)))
1839- let av = valueOrErrorMessage(getString(bR(bO)), (("NFT " + jm.name) + " is orphaned"))
1831+func jU (jV,jW,jX,jY) = {
1832+ let dw = valueOrElse(getInteger(jW), 0)
1833+ let dB = (dw + jY)
1834+ let jZ = dz(valueOrElse(getInteger(jV), 0), dB)
1835+ $Tuple2([IntegerEntry(jV, jZ[0]), IntegerEntry(jW, dB), IntegerEntry(jX, (valueOrElse(getInteger(jX), 0) + jZ[1]))], dB)
1836+ }
1837+
1838+
1839+func ka (bP,jY) = {
1840+ let jn = value(assetInfo(fromBase58String(bP)))
1841+ let aw = valueOrErrorMessage(getString(bS(bP)), (("NFT " + jn.name) + " is orphaned"))
18401842 if (if (if (c)
1841- then (jm.issuer == this)
1843+ then (jn.issuer == this)
18421844 else false)
1843- then contains(jm.name, aK)
1845+ then contains(jn.name, aL)
18441846 else false)
1845- then jT(cW(av), cV(av), cX(av), jX)
1846- else jT(cS(bO), cR(bO), cT(bO), jX)
1847- }
1848-
1849-
1850-func ka (av,jX) = jT(cW(av), cV(av), cX(av), jX)
1851-
1852-
1853-func kb (av) = {
1854- let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
1855- let kc = bM(av)
1856- let kd = getString(kc)
1857- if (!(isDefined(kd)))
1847+ then jU(cX(aw), cW(aw), cY(aw), jY)
1848+ else jU(cT(bP), cS(bP), cU(bP), jY)
1849+ }
1850+
1851+
1852+func kb (aw,jY) = jU(cX(aw), cW(aw), cY(aw), jY)
1853+
1854+
1855+func kc (aw) = {
1856+ let bP = valueOrErrorMessage(getString(bT(aw)), "You don't have a duck staked")
1857+ let kd = bN(aw)
1858+ let ke = getString(kd)
1859+ if (!(isDefined(ke)))
18581860 then throw("You are not eligible for ONBOARD artifact")
18591861 else {
1860- let ke = bP(av)
1861- let kf = getString(ke)
1862- if (isDefined(kf))
1863- then throw(("You already used your ONBOARD artifact on duck " + value(kf)))
1862+ let kf = bQ(aw)
1863+ let kg = getString(kf)
1864+ if (isDefined(kg))
1865+ then throw(("You already used your ONBOARD artifact on duck " + value(kg)))
18641866 else {
1865- let kg = bN(bO)
1866- let kh = getString(kg)
1867- if (isDefined(kh))
1868- then throw(((("The duck " + bO) + " already got points from ONBOARD artifact from user ") + value(kh)))
1869- else ([StringEntry(ke, bO), StringEntry(kg, av)] ++ jZ(bO, ds)._1)
1867+ let kh = bO(bP)
1868+ let ki = getString(kh)
1869+ if (isDefined(ki))
1870+ then throw(((("The duck " + bP) + " already got points from ONBOARD artifact from user ") + value(ki)))
1871+ else ([StringEntry(kf, bP), StringEntry(kh, aw)] ++ ka(bP, dt)._1)
18701872 }
18711873 }
18721874 }
18731875
18741876
1875-func ki (av,ji) = {
1876- let fQ = jg(av, eq, ji)
1877- let bI = fQ._2
1878- let jc = aq(fQ._3[T])
1879- let kj = bD(aL, bI)
1880- if ((valueOrElse(getInteger(kj), 0) > 0))
1877+func kj (aw,jj) = {
1878+ let fR = jh(aw, er, jj)
1879+ let bJ = fR._2
1880+ let jd = ar(fR._3[U])
1881+ let kk = bE(aM, bJ)
1882+ if ((valueOrElse(getInteger(kk), 0) > 0))
18811883 then throw("Presale artifact is already activated")
1882- else if ((parseIntValue(fQ._3[S]) > ec))
1883- then throw((((aI + " ") + bI) + " is not eligible for presale artifact"))
1884+ else if ((parseIntValue(fR._3[T]) > ed))
1885+ then throw((((aJ + " ") + bJ) + " is not eligible for presale artifact"))
18841886 else {
1885- let jN = jD(av, bI, jc, eq)
1886- (((jN._1 :+ IntegerEntry(kj, jc)) :+ StringEntry(jN._2, makeString(jN._3, ":"))) :+ StringEntry(jN._4, makeString(jN._5, ":")))
1887+ let jO = jE(aw, bJ, jd, er)
1888+ (((jO._1 :+ IntegerEntry(kk, jd)) :+ StringEntry(jO._2, makeString(jO._3, ":"))) :+ StringEntry(jO._4, makeString(jO._5, ":")))
18871889 }
18881890 }
18891891
18901892
1891-func kk (bO) = {
1892- let co = valueOrElse(getInteger(Q, bZ), 0)
1893- let jk = split(valueOrElse(getString(bU(bO)), aQ), "_")
1894- let cq = lastBlock.timestamp
1895- let cr = ci(Q, co)
1896- let ck = cr[ce]
1897- let cl = cr[cf]
1898- if ((jk[bx] != "T"))
1893+func kl (bP) = {
1894+ let cp = valueOrElse(getInteger(R, ca), 0)
1895+ let jl = split(valueOrElse(getString(bV(bP)), aR), "_")
1896+ let cr = lastBlock.timestamp
1897+ let cs = cj(R, cp)
1898+ let cl = cs[cf]
1899+ let cm = cs[cg]
1900+ if ((jl[by] != "T"))
18991901 then false
1900- else if (if (if ((parseIntValue(jk[bw]) == co))
1901- then (cl[ch] == "INPROGRESS")
1902+ else if (if (if ((parseIntValue(jl[bx]) == cp))
1903+ then (cm[ci] == "INPROGRESS")
19021904 else false)
1903- then (parseIntValue(ck[cg]) > cq)
1905+ then (parseIntValue(cl[ch]) > cr)
19041906 else false)
19051907 then throw("Your duck is taking part in the tournament")
1906- else ap(invoke(this, "exitTournamentInternal", [bO], nil))
1907- }
1908-
1909-
1910-func kl (km,dB,kn,av,ko,kp) = {
1911- let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
1912- if (kk(bO))
1908+ else aq(invoke(this, "exitTournamentInternal", [bP], nil))
1909+ }
1910+
1911+
1912+func km (kn,dC,ko,aw,kp,kq) = {
1913+ let bP = valueOrErrorMessage(getString(bT(aw)), "You don't have a duck staked")
1914+ if (kl(bP))
19131915 then throw("mergeInternal_checkTournament")
19141916 else {
1915- func kq (eL,bI) = {
1916- let jm = value(assetInfo(fromBase58String(bI)))
1917- let jn = bC(bI)
1918- let jo = valueOrErrorMessage(getInteger(jn), (("NFT " + jm.name) + " is not staked"))
1919- let jp = valueOrErrorMessage(getString(bz(bI)), (("NFT " + jm.name) + " is orphaned"))
1920- if ((jp != av))
1921- then throw((aI + " is not yours"))
1917+ func kr (eM,bJ) = {
1918+ let jn = value(assetInfo(fromBase58String(bJ)))
1919+ let jo = bD(bJ)
1920+ let jp = valueOrErrorMessage(getInteger(jo), (("NFT " + jn.name) + " is not staked"))
1921+ let jq = valueOrErrorMessage(getString(bA(bJ)), (("NFT " + jn.name) + " is orphaned"))
1922+ if ((jq != aw))
1923+ then throw((aJ + " is not yours"))
19221924 else {
1923- let jq = split(jm.description, "_")
1924- let ae = jq[V]
1925- if (if ((eL._3 != ""))
1926- then (eL._3 != ae)
1925+ let jr = split(jn.description, "_")
1926+ let af = jr[W]
1927+ if (if ((eM._3 != ""))
1928+ then (eM._3 != af)
19271929 else false)
19281930 then throw("Lands should be on the same continent to merge")
19291931 else {
1930- let ar = jq[T]
1931- let kr = eL._1
1932- let gy = valueOrErrorMessage(indexOf(kr, ar), "You haven't passed all the lands needed")
1933- let ks = (take(kr, gy) + drop(kr, (gy + 1)))
1934- let jc = aq(ar)
1935- let kt = (eL._2 + valueOrElse(getInteger(bD(aL, bI)), 0))
1936- let hT = valueOrElse(getInteger(bJ(bI)), 0)
1937- let ku = {
1938- let g = ar
1939- if (("S" == g))
1932+ let as = jr[U]
1933+ let ks = eM._1
1934+ let gz = valueOrErrorMessage(indexOf(ks, as), "You haven't passed all the lands needed")
1935+ let kt = (take(ks, gz) + drop(ks, (gz + 1)))
1936+ let jd = ar(as)
1937+ let ku = (eM._2 + valueOrElse(getInteger(bE(aM, bJ)), 0))
1938+ let hU = valueOrElse(getInteger(bK(bJ)), 0)
1939+ let kv = {
1940+ let h = as
1941+ if (("S" == h))
19401942 then 3
1941- else if (("M" == g))
1943+ else if (("M" == h))
19421944 then 4
1943- else if (("L" == g))
1945+ else if (("L" == h))
19441946 then 5
1945- else if (("XL" == g))
1947+ else if (("XL" == h))
19461948 then 6
19471949 else throw("Only S, M, L, XL can merge")
19481950 }
1949- if ((hT != ku))
1951+ if ((hU != kv))
19501952 then throw("All lands should be maxed to merge")
19511953 else {
1952- let eh = jq[S]
1953- let gu = gA(jq[U])
1954- let gE = (lastBlock.timestamp - jo)
1955- if ((0 > gE))
1956- then throw(((("Saved timestamp is in future, saved = " + toString(jo)) + ", current = ") + toString(lastBlock.timestamp)))
1954+ let ei = jr[T]
1955+ let gv = gB(jr[V])
1956+ let gF = (lastBlock.timestamp - jp)
1957+ if ((0 > gF))
1958+ then throw(((("Saved timestamp is in future, saved = " + toString(jp)) + ", current = ") + toString(lastBlock.timestamp)))
19571959 else {
1958- let js = jb(bI, jc)
1959- let hS = (jc / p)
1960- let jA = gC(split(eL._4, "_"), gu, gE, hS, js)
1961- let eV = gs(eL._6, gu, hS, -1)
1962- let kv = gs(eL._10, gu, hS, -1)
1963- let hm = gs(eL._9, gu, hS, 1)
1964- let kw = eL._7
1965- let K = indexOf(kw, bI)
1966- if (!(isDefined(K)))
1967- then throw(("Your staked lands don't contain " + bI))
1960+ let jt = jc(bJ, jd)
1961+ let hT = (jd / q)
1962+ let jB = gD(split(eM._4, "_"), gv, gF, hT, jt)
1963+ let eW = gt(eM._6, gv, hT, -1)
1964+ let kw = gt(eM._10, gv, hT, -1)
1965+ let hn = gt(eM._9, gv, hT, 1)
1966+ let kx = eM._7
1967+ let L = indexOf(kx, bJ)
1968+ if (!(isDefined(L)))
1969+ then throw(("Your staked lands don't contain " + bJ))
19681970 else {
1969- let kx = bB(bI)
1970- let ky = valueOrElse(getString(kx), "")
1971- $Tuple10(ks, kt, ae, jA, ((((((((((((eL._5 :+ DeleteEntry(bC(bI))) :+ DeleteEntry(bF(aI, bI, av))) :+ DeleteEntry(eg(eh))) :+ DeleteEntry(bz(bI))) :+ DeleteEntry(bJ(bI))) :+ DeleteEntry(ei(bI, av))) :+ DeleteEntry(bD(aL, bI))) :+ DeleteEntry(ej(eh))) :+ DeleteEntry(bH(bI))) :+ DeleteEntry(kx)) :+ Burn(fromBase58String(bI), 1)) ++ (if ((ky != ""))
1972- then [DeleteEntry(ee(ky))]
1973- else nil)), eV, removeByIndex(kw, value(K)), (eL._8 + jc), hm, kv)
1971+ let ky = bC(bJ)
1972+ let kz = valueOrElse(getString(ky), "")
1973+ $Tuple10(kt, ku, af, jB, ((((((((((((eM._5 :+ DeleteEntry(bD(bJ))) :+ DeleteEntry(bG(aJ, bJ, aw))) :+ DeleteEntry(eh(ei))) :+ DeleteEntry(bA(bJ))) :+ DeleteEntry(bK(bJ))) :+ DeleteEntry(ej(bJ, aw))) :+ DeleteEntry(bE(aM, bJ))) :+ DeleteEntry(ek(ei))) :+ DeleteEntry(bI(bJ))) :+ DeleteEntry(ky)) :+ Burn(fromBase58String(bJ), 1)) ++ (if ((kz != ""))
1974+ then [DeleteEntry(ef(kz))]
1975+ else nil)), eW, removeByIndex(kx, value(L)), (eM._8 + jd), hn, kw)
19741976 }
19751977 }
19761978 }
19781980 }
19791981 }
19801982
1981- let hD = bT(bO)
1982- let ih = hC(hD)
1983- let gt = split(valueOrElse(getString(ac()), "0_0_0_0_0_0"), "_")
1984- let kz = af(av)
1985- let kA = getString(kz)
1986- let kB = if (isDefined(kA))
1987- then split_51C(value(kA), "_")
1983+ let hE = bU(bP)
1984+ let ii = hD(hE)
1985+ let gu = split(valueOrElse(getString(ad()), "0_0_0_0_0_0"), "_")
1986+ let kA = ag(aw)
1987+ let kB = getString(kA)
1988+ let kC = if (isDefined(kB))
1989+ then split_51C(value(kB), "_")
19881990 else nil
1989- let kC = split(value(assetInfo(fromBase58String(ko[0]))).description, "_")[V]
1990- let kD = split(valueOrElse(getString(ad(kC)), "0_0_0_0_0_0"), "_")
1991- let eW = {
1992- let eN = ko
1993- let eO = size(eN)
1994- let eP = $Tuple10(kn, 0, "", ih[bt], nil, gt, kB, 0, split("0_0_0_0_0_0", "_"), kD)
1995- func eQ (eR,eS) = if ((eS >= eO))
1996- then eR
1997- else kq(eR, eN[eS])
1998-
1999- func eT (eR,eS) = if ((eS >= eO))
2000- then eR
1991+ let kD = split(value(assetInfo(fromBase58String(kp[0]))).description, "_")[W]
1992+ let kE = split(valueOrElse(getString(ae(kD)), "0_0_0_0_0_0"), "_")
1993+ let eX = {
1994+ let eO = kp
1995+ let eP = size(eO)
1996+ let eQ = $Tuple10(ko, 0, "", ii[bu], nil, gu, kC, 0, split("0_0_0_0_0_0", "_"), kE)
1997+ func eR (eS,eT) = if ((eT >= eP))
1998+ then eS
1999+ else kr(eS, eO[eT])
2000+
2001+ func eU (eS,eT) = if ((eT >= eP))
2002+ then eS
20012003 else throw("List size exceeds 5")
20022004
2003- eT(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5)
2005+ eU(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5)
20042006 }
2005- let ae = eW._3
2006- let hf = valueOrErrorMessage(indexOf(bb, ae), ("Unknown continent: " + ae))
2007- let gB = hl(eW._9, (aq(km) / p))
2008- let iG = valueOrElse(getInteger(ed()), (ec + 1))
2009- let kE = toString(iG)
2010- let iH = Issue(eA(kE, km), makeString([kE, km, gB, ae], "_"), 1, 0, false)
2011- let bA = calculateAssetId(iH)
2012- let kF = toBase58String(bA)
2013- let jM = makeString(eX((kp > 0), split(ih[bu], "_"), kp), "_")
2014- let kG = ah(av)
2015- let kH = valueOrElse(getInteger(kG), 0)
2016- $Tuple2((((((((((((((((eW._5 :+ (if ((size(eW._7) > 0))
2017- then StringEntry(kz, makeString_11C(eW._7, "_"))
2018- else DeleteEntry(kz))) :+ IntegerEntry(kG, if ((eW._8 > kH))
2007+ let af = eX._3
2008+ let hg = valueOrErrorMessage(indexOf(bc, af), ("Unknown continent: " + af))
2009+ let gC = hm(eX._9, (ar(kn) / q))
2010+ let iH = valueOrElse(getInteger(ee()), (ed + 1))
2011+ let kF = toString(iH)
2012+ let iI = Issue(eB(kF, kn), makeString([kF, kn, gC, af], "_"), 1, 0, false)
2013+ let bB = calculateAssetId(iI)
2014+ let kG = toBase58String(bB)
2015+ let jN = makeString(eY((kq > 0), split(ii[bv], "_"), kq), "_")
2016+ let kH = ai(aw)
2017+ let kI = valueOrElse(getInteger(kH), 0)
2018+ $Tuple2((((((((((((((((eX._5 :+ (if ((size(eX._7) > 0))
2019+ then StringEntry(kA, makeString_11C(eX._7, "_"))
2020+ else DeleteEntry(kA))) :+ IntegerEntry(kH, if ((eX._8 > kI))
20192021 then 0
2020- else (kH - eW._8))) :+ IntegerEntry(ed(), (iG + 1))) :+ iH) :+ StringEntry(eg(kE), kF)) :+ StringEntry(bz(kF), av)) :+ StringEntry(ej(kE), av)) :+ IntegerEntry(bD(aL, kF), eW._2)) :+ IntegerEntry(bJ(kF), dB)) :+ IntegerEntry(ei(kF, av), dB)) :+ StringEntry(hD, makeString([ih[bs], eW._4, jM, ih[bv]], ":"))) :+ StringEntry(ac(), makeString(eW._6, "_"))) :+ StringEntry(ad(ae), makeString(eW._10, "_"))) :+ StringEntry(bU(bO), makeString([ae, "L", kF], "_"))) :+ ScriptTransfer(addressFromStringValue(av), 1, bA)), kF)
2021- }
2022- }
2023-
2024-
2025-func kI (av,ko) = kl("M", 3, "SSSS", av, ko, 0)
2026-
2027-
2028-func kJ (av,ko) = kl("L", 4, "SMM", av, ko, (k * 4))
2029-
2030-
2031-func kK (av,ko) = kl("XL", 5, "SSSML", av, ko, (k * 47))
2032-
2033-
2034-func kL (av,ko) = kl("XXL", 6, "LXL", av, ko, (k * 54))
2035-
2036-
2037-func kM (av,ko) = {
2038- let g = size(ko)
2039- if ((4 == g))
2040- then kI(av, ko)
2041- else if ((3 == g))
2042- then kJ(av, ko)
2043- else if ((5 == g))
2044- then kK(av, ko)
2045- else if ((2 == g))
2046- then kL(av, ko)
2022+ else (kI - eX._8))) :+ IntegerEntry(ee(), (iH + 1))) :+ iI) :+ StringEntry(eh(kF), kG)) :+ StringEntry(bA(kG), aw)) :+ StringEntry(ek(kF), aw)) :+ IntegerEntry(bE(aM, kG), eX._2)) :+ IntegerEntry(bK(kG), dC)) :+ IntegerEntry(ej(kG, aw), dC)) :+ StringEntry(hE, makeString([ii[bt], eX._4, jN, ii[bw]], ":"))) :+ StringEntry(ad(), makeString(eX._6, "_"))) :+ StringEntry(ae(af), makeString(eX._10, "_"))) :+ StringEntry(bV(bP), makeString([af, "L", kG], "_"))) :+ ScriptTransfer(addressFromStringValue(aw), 1, bB)), kG)
2023+ }
2024+ }
2025+
2026+
2027+func kJ (aw,kp) = km("M", 3, "SSSS", aw, kp, 0)
2028+
2029+
2030+func kK (aw,kp) = km("L", 4, "SMM", aw, kp, (l * 4))
2031+
2032+
2033+func kL (aw,kp) = km("XL", 5, "SSSML", aw, kp, (l * 47))
2034+
2035+
2036+func kM (aw,kp) = km("XXL", 6, "LXL", aw, kp, (l * 54))
2037+
2038+
2039+func kN (aw,kp) = {
2040+ let h = size(kp)
2041+ if ((4 == h))
2042+ then kJ(aw, kp)
2043+ else if ((3 == h))
2044+ then kK(aw, kp)
2045+ else if ((5 == h))
2046+ then kL(aw, kp)
2047+ else if ((2 == h))
2048+ then kM(aw, kp)
20472049 else throw("Unknown merge")
20482050 }
20492051
20502052
2051-func kN (gy) = if (if ((gy.originCaller != L))
2052- then valueOrElse(getBoolean(at()), false)
2053+func kO (gz) = if (if ((gz.originCaller != M))
2054+ then valueOrElse(getBoolean(au()), false)
20532055 else false)
20542056 then throw("Contracts are under maintenance")
2055- else [StringEntry(au(toString(gy.originCaller)), toBase58String(gy.transactionId))]
2056-
2057-
2058-func kO (av,bI) = {
2059- let hR = bH(bI)
2060- let kP = split(value(assetInfo(fromBase58String(bI))).description, "_")
2061- let ar = kP[T]
2062- let jc = aq(ar)
2063- let hT = valueOrElse(getInteger(bJ(bI)), 0)
2064- let hS = (jc / p)
2065- let gu = gA(kP[U])
2066- let hI = hQ(hR, hS, hT)
2067- let gN = split(hI[bk], "_")
2068- let jn = bC(bI)
2069- let jo = getIntegerValue(jn)
2070- let gE = (aH() - jo)
2071- if ((0 > gE))
2072- then throw(((("Saved timestamp is in future, saved = " + toString(jo)) + ", final = ") + toString(aH())))
2057+ else [StringEntry(av(toString(gz.originCaller)), toBase58String(gz.transactionId))]
2058+
2059+
2060+func kP (aw,bJ) = {
2061+ let hS = bI(bJ)
2062+ let kQ = split(value(assetInfo(fromBase58String(bJ))).description, "_")
2063+ let as = kQ[U]
2064+ let jd = ar(as)
2065+ let hU = valueOrElse(getInteger(bK(bJ)), 0)
2066+ let hT = (jd / q)
2067+ let gv = gB(kQ[V])
2068+ let hJ = hR(hS, hT, hU)
2069+ let gO = split(hJ[bl], "_")
2070+ let jo = bD(bJ)
2071+ let jp = getIntegerValue(jo)
2072+ let gF = (aI() - jp)
2073+ if ((0 > gF))
2074+ then throw(((("Saved timestamp is in future, saved = " + toString(jp)) + ", final = ") + toString(aI())))
20732075 else {
2074- let js = jb(bI, jc)
2075- let kQ = gI(gN, gu, gE, hS, js)
2076- let jd = valueOrElse(getInteger(bD(aL, bI)), 0)
2077- let kR = ((jc * o) + ((((jc * hT) + jd) * o) / 5))
2078- let kS = (fraction(kQ._2, aR, o) * aU)
2079- func kT (eL,hL) = (eL + parseIntValue(hL))
2080-
2081- let kU = {
2082- let eN = split(hI[bl], "_")
2083- let eO = size(eN)
2084- let eP = 0
2085- func eQ (eR,eS) = if ((eS >= eO))
2086- then eR
2087- else kT(eR, eN[eS])
2088-
2089- func eT (eR,eS) = if ((eS >= eO))
2090- then eR
2076+ let jt = jc(bJ, jd)
2077+ let kR = gJ(gO, gv, gF, hT, jt)
2078+ let je = valueOrElse(getInteger(bE(aM, bJ)), 0)
2079+ let kS = ((jd * p) + ((((jd * hU) + je) * p) / 5))
2080+ let kT = (fraction(kR._2, aS, p) * aV)
2081+ func kU (eM,hM) = (eM + parseIntValue(hM))
2082+
2083+ let kV = {
2084+ let eO = split(hJ[bm], "_")
2085+ let eP = size(eO)
2086+ let eQ = 0
2087+ func eR (eS,eT) = if ((eT >= eP))
2088+ then eS
2089+ else kU(eS, eO[eT])
2090+
2091+ func eU (eS,eT) = if ((eT >= eP))
2092+ then eS
20912093 else throw("List size exceeds 6")
20922094
2093- eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
2095+ eU(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6)
20942096 }
2095- let kV = (fraction(kU, (2 * aR), o) * aU)
2096- let kW = if ((hI[bm] == ""))
2097+ let kW = (fraction(kV, (2 * aS), p) * aV)
2098+ let kX = if ((hJ[bn] == ""))
20972099 then nil
2098- else split_4C(hI[bm], "_")
2099- func hM (eL,hL) = {
2100- let fv = eL._2
2101- let kX = parseIntValue(split(bd[fv], "_")[be])
2102- $Tuple2((eL._1 + ((parseIntValue(hL) * kX) * n)), (fv + 1))
2100+ else split_4C(hJ[bn], "_")
2101+ func hN (eM,hM) = {
2102+ let fw = eM._2
2103+ let kY = parseIntValue(split(be[fw], "_")[bf])
2104+ $Tuple2((eM._1 + ((parseIntValue(hM) * kY) * o)), (fw + 1))
21032105 }
21042106
2105- let kY = {
2106- let eN = kW
2107- let eO = size(eN)
2108- let eP = $Tuple2(0, 0)
2109- func hx (eR,eS) = if ((eS >= eO))
2110- then eR
2111- else hM(eR, eN[eS])
2112-
2113- func hy (eR,eS) = if ((eS >= eO))
2114- then eR
2107+ let kZ = {
2108+ let eO = kX
2109+ let eP = size(eO)
2110+ let eQ = $Tuple2(0, 0)
2111+ func hy (eS,eT) = if ((eT >= eP))
2112+ then eS
2113+ else hN(eS, eO[eT])
2114+
2115+ func hz (eS,eT) = if ((eT >= eP))
2116+ then eS
21152117 else throw("List size exceeds 24")
21162118
2117- hy(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(eP, 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)
2119+ hz(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(eQ, 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)
21182120 }
2119- let kZ = (fraction(kY._1, (2 * aR), o) * aU)
2120- $Tuple4(kR, kS, kV, kZ)
2121- }
2122- }
2123-
2124-
2125-func la (av,bO) = {
2126- let gk = cU(bO)
2127- let lb = split(valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
2128- let hD = bT(bO)
2129- let ih = hC(hD)
2130- let gn = gc(lb, fr(ih[bv]), true, nil)
2131- let lc = fw(gn)
2132- func hK (eL,hL) = (eL + parseIntValue(hL))
2133-
2134- let jA = {
2135- let eN = split(ih[bt], "_")
2136- let eO = size(eN)
2137- let eP = 0
2138- func eQ (eR,eS) = if ((eS >= eO))
2139- then eR
2140- else hK(eR, eN[eS])
2141-
2142- func eT (eR,eS) = if ((eS >= eO))
2143- then eR
2121+ let la = (fraction(kZ._1, (2 * aS), p) * aV)
2122+ $Tuple4(kS, kT, kW, la)
2123+ }
2124+ }
2125+
2126+
2127+func lb (aw,bP) = {
2128+ let gl = cV(bP)
2129+ let lc = split(valueOrElse(getString(gl), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
2130+ let hE = bU(bP)
2131+ let ii = hD(hE)
2132+ let go = gd(lc, fs(ii[bw]), true, nil)
2133+ let ld = fx(go)
2134+ func hL (eM,hM) = (eM + parseIntValue(hM))
2135+
2136+ let jB = {
2137+ let eO = split(ii[bu], "_")
2138+ let eP = size(eO)
2139+ let eQ = 0
2140+ func eR (eS,eT) = if ((eT >= eP))
2141+ then eS
2142+ else hL(eS, eO[eT])
2143+
2144+ func eU (eS,eT) = if ((eT >= eP))
2145+ then eS
21442146 else throw("List size exceeds 6")
21452147
2146- eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
2147- }
2148- let kS = (fraction(jA, aR, o) * aU)
2149- let ld = {
2150- let eN = split(ih[bu], "_")
2151- let eO = size(eN)
2152- let eP = 0
2153- func hx (eR,eS) = if ((eS >= eO))
2154- then eR
2155- else hK(eR, eN[eS])
2156-
2157- func hy (eR,eS) = if ((eS >= eO))
2158- then eR
2148+ eU(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6)
2149+ }
2150+ let kT = (fraction(jB, aS, p) * aV)
2151+ let le = {
2152+ let eO = split(ii[bv], "_")
2153+ let eP = size(eO)
2154+ let eQ = 0
2155+ func hy (eS,eT) = if ((eT >= eP))
2156+ then eS
2157+ else hL(eS, eO[eT])
2158+
2159+ func hz (eS,eT) = if ((eT >= eP))
2160+ then eS
21592161 else throw("List size exceeds 6")
21602162
2161- hy(hx(hx(hx(hx(hx(hx(eP, 0), 1), 2), 3), 4), 5), 6)
2162- }
2163- let kV = (fraction(ld, (2 * aR), o) * aU)
2164- let kW = if ((lc == ""))
2163+ hz(hy(hy(hy(hy(hy(hy(eQ, 0), 1), 2), 3), 4), 5), 6)
2164+ }
2165+ let kW = (fraction(le, (2 * aS), p) * aV)
2166+ let kX = if ((ld == ""))
21652167 then nil
2166- else split_4C(lc, "_")
2167- func hM (eL,hL) = {
2168- let fv = eL._2
2169- let kX = parseIntValue(split(bd[fv], "_")[be])
2170- $Tuple2((eL._1 + ((parseIntValue(hL) * kX) * n)), (fv + 1))
2171- }
2172-
2173- let le = {
2174- let eN = kW
2175- let eO = size(eN)
2176- let eP = $Tuple2(0, 0)
2177- func hA (eR,eS) = if ((eS >= eO))
2178- then eR
2179- else hM(eR, eN[eS])
2180-
2181- func hB (eR,eS) = if ((eS >= eO))
2182- then eR
2168+ else split_4C(ld, "_")
2169+ func hN (eM,hM) = {
2170+ let fw = eM._2
2171+ let kY = parseIntValue(split(be[fw], "_")[bf])
2172+ $Tuple2((eM._1 + ((parseIntValue(hM) * kY) * o)), (fw + 1))
2173+ }
2174+
2175+ let lf = {
2176+ let eO = kX
2177+ let eP = size(eO)
2178+ let eQ = $Tuple2(0, 0)
2179+ func hB (eS,eT) = if ((eT >= eP))
2180+ then eS
2181+ else hN(eS, eO[eT])
2182+
2183+ func hC (eS,eT) = if ((eT >= eP))
2184+ then eS
21832185 else throw("List size exceeds 24")
21842186
2185- hB(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(eP, 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)
2186- }
2187- let kZ = (fraction(le._1, (2 * aR), o) * aU)
2188- $Tuple3(kS, kV, kZ)
2189- }
2190-
2191-
2192-@Callable(gy)
2193-func constructorV1 (lf) = if ((gy.caller != this))
2187+ hC(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(eQ, 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)
2188+ }
2189+ let la = (fraction(lf._1, (2 * aS), p) * aV)
2190+ $Tuple3(kT, kW, la)
2191+ }
2192+
2193+
2194+@Callable(gz)
2195+func constructorV1 (lg) = if ((gz.caller != this))
21942196 then throw("Permission denied")
2195- else [StringEntry(F(), lf)]
2196-
2197-
2198-
2199-@Callable(gy)
2200-func saveInteger (x,eC) = if ((gy.caller != this))
2197+ else [StringEntry(G(), lg)]
2198+
2199+
2200+
2201+@Callable(gz)
2202+func saveInteger (y,eD) = if ((gz.caller != this))
22012203 then throw("saveInteger is not public method")
2202- else [IntegerEntry(x, eC)]
2203-
2204-
2205-
2206-@Callable(gy)
2207-func setBlocked (lg) = if ((gy.caller != this))
2204+ else [IntegerEntry(y, eD)]
2205+
2206+
2207+
2208+@Callable(gz)
2209+func setBlocked (lh) = if ((gz.caller != this))
22082210 then throw("permission denied")
2209- else [BooleanEntry(at(), lg)]
2210-
2211-
2212-
2213-@Callable(gy)
2211+ else [BooleanEntry(au(), lh)]
2212+
2213+
2214+
2215+@Callable(gz)
22142216 func stakeLand () = {
2215- let lh = kN(gy)
2216- if ((size(gy.payments) != 1))
2217+ let li = kO(gz)
2218+ if ((size(gz.payments) != 1))
22172219 then throw("Exactly one payment required")
22182220 else {
2219- let li = value(gy.payments[0])
2220- let bA = value(li.assetId)
2221- let w = toString(gy.caller)
2222- if ((li.amount != 1))
2223- then throw((("NFT " + aI) + " token should be attached as payment"))
2221+ let lj = value(gz.payments[0])
2222+ let bB = value(lj.assetId)
2223+ let x = toString(gz.caller)
2224+ if ((lj.amount != 1))
2225+ then throw((("NFT " + aJ) + " token should be attached as payment"))
22242226 else {
2225- let jm = value(assetInfo(bA))
2226- if ((jm.issuer != this))
2227+ let jn = value(assetInfo(bB))
2228+ if ((jn.issuer != this))
22272229 then throw("Unknown issuer of token")
2228- else if (!(contains(jm.name, aI)))
2229- then throw((("Only NFT " + aI) + " tokens are accepted"))
2230+ else if (!(contains(jn.name, aJ)))
2231+ then throw((("Only NFT " + aJ) + " tokens are accepted"))
22302232 else {
2231- let lj = drop(jm.name, 4)
2232- let eh = if (contains(lj, "XXL"))
2233- then dropRight(lj, 3)
2234- else if (contains(lj, "XL"))
2235- then dropRight(lj, 2)
2236- else dropRight(lj, 1)
2237- if (!(isDefined(parseInt(eh))))
2238- then throw(("Cannot parse land number from " + jm.name))
2233+ let lk = drop(jn.name, 4)
2234+ let ei = if (contains(lk, "XXL"))
2235+ then dropRight(lk, 3)
2236+ else if (contains(lk, "XL"))
2237+ then dropRight(lk, 2)
2238+ else dropRight(lk, 1)
2239+ if (!(isDefined(parseInt(ei))))
2240+ then throw(("Cannot parse land number from " + jn.name))
22392241 else {
2240- let bI = toBase58String(bA)
2241- let jn = bC(bI)
2242- if (isDefined(getInteger(jn)))
2243- then throw((("NFT " + jm.name) + " is already staked"))
2242+ let bJ = toBase58String(bB)
2243+ let jo = bD(bJ)
2244+ if (isDefined(getInteger(jo)))
2245+ then throw((("NFT " + jn.name) + " is already staked"))
22442246 else {
2245- let jq = split(jm.description, "_")
2246- let gu = gA(jq[U])
2247- let jc = aq(jq[T])
2248- let hS = (jc / p)
2249- let eV = gz(gu, hS, 1)
2250- let lk = ad(jq[V])
2251- let kD = split(valueOrElse(getString(lk), "0_0_0_0_0_0"), "_")
2252- let ll = makeString(gs(kD, gu, hS, 1), "_")
2253- let kz = af(w)
2254- let kA = getString(kz)
2255- let kw = if (isDefined(kA))
2256- then split_51C(value(kA), "_")
2247+ let jr = split(jn.description, "_")
2248+ let gv = gB(jr[V])
2249+ let jd = ar(jr[U])
2250+ let hT = (jd / q)
2251+ let eW = gA(gv, hT, 1)
2252+ let ll = ae(jr[W])
2253+ let kE = split(valueOrElse(getString(ll), "0_0_0_0_0_0"), "_")
2254+ let lm = makeString(gt(kE, gv, hT, 1), "_")
2255+ let kA = ag(x)
2256+ let kB = getString(kA)
2257+ let kx = if (isDefined(kB))
2258+ then split_51C(value(kB), "_")
22572259 else nil
2258- if (containsElement(kw, bI))
2259- then throw(("Your staked lands already contain " + bI))
2260- else if ((size(kw) >= aN))
2261- then throw((("Your already staked max (" + toString(aN)) + ") lands"))
2260+ if (containsElement(kx, bJ))
2261+ then throw(("Your staked lands already contain " + bJ))
2262+ else if ((size(kx) >= aO))
2263+ then throw((("Your already staked max (" + toString(aO)) + ") lands"))
22622264 else {
2263- let hT = valueOrElse(getInteger(bJ(bI)), 0)
2264- let kG = ah(w)
2265- let lm = valueOrElse(getInteger(kG), 0)
2266- let ln = invoke(P, "onStakeUnstakeLand", [w], nil)
2267- $Tuple2(([IntegerEntry(jn, lastBlock.timestamp), IntegerEntry(bF(aI, bI, w), lastBlock.timestamp), StringEntry(kz, makeString_11C((kw :+ bI), "_")), IntegerEntry(kG, (lm + jc)), StringEntry(bz(bI), w), StringEntry(ej(eh), w), IntegerEntry(ei(bI, w), hT), StringEntry(ac(), eV), StringEntry(lk, ll)] ++ lh), ln)
2265+ let hU = valueOrElse(getInteger(bK(bJ)), 0)
2266+ let kH = ai(x)
2267+ let ln = valueOrElse(getInteger(kH), 0)
2268+ let lo = invoke(Q, "onStakeUnstakeLand", [x], nil)
2269+ $Tuple2(([IntegerEntry(jo, lastBlock.timestamp), IntegerEntry(bG(aJ, bJ, x), lastBlock.timestamp), StringEntry(kA, makeString_11C((kx :+ bJ), "_")), IntegerEntry(kH, (ln + jd)), StringEntry(bA(bJ), x), StringEntry(ek(ei), x), IntegerEntry(ej(bJ, x), hU), StringEntry(ad(), eW), StringEntry(ll, lm)] ++ li), lo)
22682270 }
22692271 }
22702272 }
22752277
22762278
22772279
2278-@Callable(gy)
2279-func unstakeLand (ji) = {
2280- let lh = kN(gy)
2281- if ((size(gy.payments) != 0))
2280+@Callable(gz)
2281+func unstakeLand (jj) = {
2282+ let li = kO(gz)
2283+ if ((size(gz.payments) != 0))
22822284 then throw("No payments required")
22832285 else {
2284- let av = toString(gy.caller)
2285- let fQ = jg(av, ep, ji)
2286- let bI = fQ._2
2287- let jq = fQ._3
2288- let kz = af(av)
2289- let gu = gA(jq[U])
2290- let jc = aq(jq[T])
2291- let hS = (jc / p)
2292- let eV = gz(gu, hS, -1)
2293- let lk = ad(jq[V])
2294- let kD = split(valueOrElse(getString(lk), "0_0_0_0_0_0"), "_")
2295- let ll = makeString(gs(kD, gu, hS, -1), "_")
2296- let jN = jD(av, bI, jc, ep)
2297- let kw = split_51C(valueOrElse(getString(kz), ""), "_")
2298- let K = indexOf(kw, bI)
2299- if (!(isDefined(K)))
2300- then throw(("Your staked lands don't contain " + bI))
2286+ let aw = toString(gz.caller)
2287+ let fR = jh(aw, eq, jj)
2288+ let bJ = fR._2
2289+ let jr = fR._3
2290+ let kA = ag(aw)
2291+ let gv = gB(jr[V])
2292+ let jd = ar(jr[U])
2293+ let hT = (jd / q)
2294+ let eW = gA(gv, hT, -1)
2295+ let ll = ae(jr[W])
2296+ let kE = split(valueOrElse(getString(ll), "0_0_0_0_0_0"), "_")
2297+ let lm = makeString(gt(kE, gv, hT, -1), "_")
2298+ let jO = jE(aw, bJ, jd, eq)
2299+ let kx = split_51C(valueOrElse(getString(kA), ""), "_")
2300+ let L = indexOf(kx, bJ)
2301+ if (!(isDefined(L)))
2302+ then throw(("Your staked lands don't contain " + bJ))
23012303 else {
2302- let cq = lastBlock.timestamp
2303- let lo = valueOrElse(getInteger(O, bV(av)), 0)
2304- if ((lo >= cq))
2305- then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lo)))
2304+ let cr = lastBlock.timestamp
2305+ let lp = valueOrElse(getInteger(P, bW(aw)), 0)
2306+ if ((lp >= cr))
2307+ then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lp)))
23062308 else {
2307- let lp = (valueOrElse(getInteger(P, dK(av)), 0) + l)
2308- if ((lp > cq))
2309- then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lp)))
2309+ let lq = (valueOrElse(getInteger(Q, dL(aw)), 0) + m)
2310+ if ((lq > cr))
2311+ then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lq)))
23102312 else {
2311- let kG = ah(av)
2312- let kH = valueOrElse(getInteger(kG), 0)
2313- let lq = if ((jc > kH))
2313+ let kH = ai(aw)
2314+ let kI = valueOrElse(getInteger(kH), 0)
2315+ let lr = if ((jd > kI))
23142316 then 0
2315- else (kH - jc)
2316- let ln = invoke(P, "onStakeUnstakeLand", [av], nil)
2317- $Tuple2(([ScriptTransfer(gy.caller, 1, fromBase58String(bI)), DeleteEntry(bC(bI)), DeleteEntry(bF(aI, bI, av)), StringEntry(ac(), eV), StringEntry(lk, ll), StringEntry(jN._2, makeString(jN._3, ":")), if ((size(kw) > 1))
2318- then StringEntry(kz, makeString_11C(removeByIndex(kw, value(K)), "_"))
2319- else DeleteEntry(kz), IntegerEntry(kG, lq)] ++ lh), ln)
2317+ else (kI - jd)
2318+ let lo = invoke(Q, "onStakeUnstakeLand", [aw], nil)
2319+ $Tuple2(([ScriptTransfer(gz.caller, 1, fromBase58String(bJ)), DeleteEntry(bD(bJ)), DeleteEntry(bG(aJ, bJ, aw)), StringEntry(ad(), eW), StringEntry(ll, lm), StringEntry(jO._2, makeString(jO._3, ":")), if ((size(kx) > 1))
2320+ then StringEntry(kA, makeString_11C(removeByIndex(kx, value(L)), "_"))
2321+ else DeleteEntry(kA), IntegerEntry(kH, lr)] ++ li), lo)
23202322 }
23212323 }
23222324 }
23252327
23262328
23272329
2328-@Callable(gy)
2329-func unstakeLandCallback (bI,av) = if ((toString(gy.caller) != j))
2330+@Callable(gz)
2331+func unstakeLandCallback (bJ,aw) = if ((toString(gz.caller) != k))
23302332 then throw("Permission denied")
23312333 else {
2332- let lr = kO(av, bI)
2333- let ln = invoke(P, "onStakeUnstakeLand", [av], nil)
2334- $Tuple2([Burn(fromBase58String(bI), 1), DeleteEntry(bC(bI)), DeleteEntry(bF(aI, bI, av))], $Tuple5(lr._1, lr._2, lr._3, lr._4, ln))
2335- }
2336-
2337-
2338-
2339-@Callable(gy)
2340-func unstakeLandREADONLY (bI,av) = {
2341- let lr = kO(av, bI)
2342- $Tuple2(nil, lr)
2343- }
2344-
2345-
2346-
2347-@Callable(gy)
2348-func unstakeLandsFinalizeCallback (av) = if ((toString(gy.caller) != j))
2334+ let ls = kP(aw, bJ)
2335+ let lo = invoke(Q, "onStakeUnstakeLand", [aw], nil)
2336+ $Tuple2([Burn(fromBase58String(bJ), 1), DeleteEntry(bD(bJ)), DeleteEntry(bG(aJ, bJ, aw))], $Tuple5(ls._1, ls._2, ls._3, ls._4, lo))
2337+ }
2338+
2339+
2340+
2341+@Callable(gz)
2342+func unstakeLandREADONLY (bJ,aw) = {
2343+ let ls = kP(aw, bJ)
2344+ $Tuple2(nil, ls)
2345+ }
2346+
2347+
2348+
2349+@Callable(gz)
2350+func unstakeLandsFinalizeCallback (aw) = if ((toString(gz.caller) != k))
23492351 then throw("Permission denied")
2350- else $Tuple2([DeleteEntry(af(av)), DeleteEntry(ah(av))], 0)
2351-
2352-
2353-
2354-@Callable(gy)
2355-func convertUnstakedLands () = if ((size(gy.payments) != 1))
2352+ else $Tuple2([DeleteEntry(ag(aw)), DeleteEntry(ai(aw))], 0)
2353+
2354+
2355+
2356+@Callable(gz)
2357+func convertUnstakedLands () = if ((size(gz.payments) != 1))
23562358 then throw("Exactly one payment required")
23572359 else {
2358- let li = value(gy.payments[0])
2359- let bA = value(li.assetId)
2360- let w = toString(gy.caller)
2361- if ((li.amount != 1))
2362- then throw((("NFT " + aI) + " token should be attached as payment"))
2360+ let lj = value(gz.payments[0])
2361+ let bB = value(lj.assetId)
2362+ let x = toString(gz.caller)
2363+ if ((lj.amount != 1))
2364+ then throw((("NFT " + aJ) + " token should be attached as payment"))
23632365 else {
2364- let jm = value(assetInfo(bA))
2365- if ((jm.issuer != this))
2366+ let jn = value(assetInfo(bB))
2367+ if ((jn.issuer != this))
23662368 then throw("Unknown issuer of token")
2367- else if (!(contains(jm.name, aI)))
2368- then throw((("Only NFT " + aI) + " tokens are accepted"))
2369+ else if (!(contains(jn.name, aJ)))
2370+ then throw((("Only NFT " + aJ) + " tokens are accepted"))
23692371 else {
2370- let bI = toBase58String(bA)
2371- let jq = split(jm.description, "_")
2372- let jc = aq(jq[T])
2373- let hT = valueOrElse(getInteger(bJ(bI)), 0)
2374- let jd = valueOrElse(getInteger(bD(aL, bI)), 0)
2375- let ls = ((jc * o) + ((((jc * hT) + jd) * o) / 5))
2376- let lt = invoke(R, "requestAcresCallback", [ls], nil)
2377- if ((lt == lt))
2372+ let bJ = toBase58String(bB)
2373+ let jr = split(jn.description, "_")
2374+ let jd = ar(jr[U])
2375+ let hU = valueOrElse(getInteger(bK(bJ)), 0)
2376+ let je = valueOrElse(getInteger(bE(aM, bJ)), 0)
2377+ let lt = ((jd * p) + ((((jd * hU) + je) * p) / 5))
2378+ let lu = invoke(S, "requestAcresCallback", [lt], nil)
2379+ if ((lu == lu))
23782380 then {
2379- let lu = invoke(addressFromStringValue(j), "stakeAcresCallback", [w], [AttachedPayment(Z, ls)])
2380- if ((lu == lu))
2381- then $Tuple2([Burn(fromBase58String(bI), 1)], 0)
2381+ let lv = invoke(addressFromStringValue(k), "stakeAcresCallback", [x], [AttachedPayment(aa, lt)])
2382+ if ((lv == lv))
2383+ then $Tuple2([Burn(fromBase58String(bJ), 1)], 0)
23822384 else throw("Strict value is not equal to itself.")
23832385 }
23842386 else throw("Strict value is not equal to itself.")
23882390
23892391
23902392
2391-@Callable(gy)
2393+@Callable(gz)
23922394 func stakeDuck () = {
2393- let lh = kN(gy)
2394- if ((size(gy.payments) != 1))
2395+ let li = kO(gz)
2396+ if ((size(gz.payments) != 1))
23952397 then throw("Exactly one payment required")
23962398 else {
2397- let li = value(gy.payments[0])
2398- let bA = value(li.assetId)
2399- let w = toString(gy.caller)
2400- if ((li.amount != 1))
2401- then throw((("NFT " + aJ) + " token should be attached as payment"))
2399+ let lj = value(gz.payments[0])
2400+ let bB = value(lj.assetId)
2401+ let x = toString(gz.caller)
2402+ if ((lj.amount != 1))
2403+ then throw((("NFT " + aK) + " token should be attached as payment"))
24022404 else {
2403- let jm = value(assetInfo(bA))
2404- let lv = if (if (c)
2405- then (jm.issuer == this)
2405+ let jn = value(assetInfo(bB))
2406+ let lw = if (if (c)
2407+ then (jn.issuer == this)
24062408 else false)
2407- then contains(jm.name, aK)
2409+ then contains(jn.name, aL)
24082410 else false
2409- if (if (if ((jm.issuer != dM))
2410- then (jm.issuer != dN)
2411+ if (if (if ((jn.issuer != dN))
2412+ then (jn.issuer != dO)
24112413 else false)
2412- then !(lv)
2414+ then !(lw)
24132415 else false)
2414- then throw((((("Unknown issuer of " + aJ) + " or ") + aK) + " token"))
2415- else if (if (!(contains(jm.name, aJ)))
2416- then !(lv)
2416+ then throw((((("Unknown issuer of " + aK) + " or ") + aL) + " token"))
2417+ else if (if (!(contains(jn.name, aK)))
2418+ then !(lw)
24172419 else false)
2418- then throw((((("Only NFT " + aJ) + " or ") + aK) + " tokens are accepted"))
2420+ then throw((((("Only NFT " + aK) + " or ") + aL) + " tokens are accepted"))
24192421 else {
2420- let lw = toBase58String(bA)
2421- let jn = bC(lw)
2422- if (isDefined(getInteger(jn)))
2423- then throw((("NFT " + jm.name) + " is already staked"))
2424- else if (isDefined(getString(bS(w))))
2425- then throw(("You already staked one duck: " + jm.name))
2422+ let lx = toBase58String(bB)
2423+ let jo = bD(lx)
2424+ if (isDefined(getInteger(jo)))
2425+ then throw((("NFT " + jn.name) + " is already staked"))
2426+ else if (isDefined(getString(bT(x))))
2427+ then throw(("You already staked one duck: " + jn.name))
24262428 else {
2427- let lx = bU(lw)
2428- let cn = getString(lx)
2429- let hD = bT(lw)
2430- let ly = getString(hD)
2431- let iV = cP(lw)
2432- let iW = dw(valueOrElse(getInteger(cS(lw)), 0))
2433- let lz = valueOrElse(getInteger(iV), iW)
2434- ([IntegerEntry(jn, lastBlock.timestamp), IntegerEntry(bF(aJ, toBase58String(bA), w), lastBlock.timestamp), StringEntry(bR(lw), w), StringEntry(bS(w), lw)] ++ (if (isDefined(cn))
2429+ let ly = bV(lx)
2430+ let co = getString(ly)
2431+ let hE = bU(lx)
2432+ let lz = getString(hE)
2433+ let iW = cQ(lx)
2434+ let iX = dx(valueOrElse(getInteger(cT(lx)), 0))
2435+ let lA = valueOrElse(getInteger(iW), iX)
2436+ ([IntegerEntry(jo, lastBlock.timestamp), IntegerEntry(bG(aK, toBase58String(bB), x), lastBlock.timestamp), StringEntry(bS(lx), x), StringEntry(bT(x), lx)] ++ (if (isDefined(co))
24352437 then nil
2436- else ([StringEntry(lx, aQ)] ++ (if (isDefined(ly))
2438+ else ([StringEntry(ly, aR)] ++ (if (isDefined(lz))
24372439 then nil
2438- else (([StringEntry(hD, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(iV, lz)) ++ lh)))))
2440+ else (([StringEntry(hE, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(iW, lA)) ++ li)))))
24392441 }
24402442 }
24412443 }
24442446
24452447
24462448
2447-@Callable(gy)
2448-func unstakeDuck (lw) = {
2449- let lh = kN(gy)
2450- if ((size(gy.payments) != 0))
2449+@Callable(gz)
2450+func unstakeDuck (lx) = {
2451+ let li = kO(gz)
2452+ if ((size(gz.payments) != 0))
24512453 then throw("No payments required")
24522454 else {
2453- let bA = fromBase58String(lw)
2454- let w = toString(gy.caller)
2455- let jm = value(assetInfo(bA))
2456- let jn = bC(lw)
2457- if (!(isDefined(getInteger(jn))))
2458- then throw((("NFT " + jm.name) + " is not staked"))
2459- else if (!(isDefined(getString(bS(w)))))
2460- then throw((("The duck " + jm.name) + " is not staked"))
2455+ let bB = fromBase58String(lx)
2456+ let x = toString(gz.caller)
2457+ let jn = value(assetInfo(bB))
2458+ let jo = bD(lx)
2459+ if (!(isDefined(getInteger(jo))))
2460+ then throw((("NFT " + jn.name) + " is not staked"))
2461+ else if (!(isDefined(getString(bT(x)))))
2462+ then throw((("The duck " + jn.name) + " is not staked"))
24612463 else {
2462- let jp = valueOrErrorMessage(getString(bR(lw)), (("NFT " + jm.name) + " is orphaned"))
2463- if ((jp != w))
2464+ let jq = valueOrErrorMessage(getString(bS(lx)), (("NFT " + jn.name) + " is orphaned"))
2465+ if ((jq != x))
24642466 then throw("Staked NFT is not yours")
2465- else if (kk(lw))
2467+ else if (kl(lx))
24662468 then throw("unstakeDuck_checkTournament")
24672469 else {
2468- let iV = cP(lw)
2469- let iW = dw(valueOrElse(getInteger(cS(lw)), 0))
2470- let dH = valueOrElse(getInteger(iV), iW)
2471- if ((iW > dH))
2472- then throw((("Please heal your duck to " + toString(iW)) + "hp before unstaking"))
2473- else ([ScriptTransfer(gy.caller, 1, bA), DeleteEntry(jn), DeleteEntry(iV), DeleteEntry(bU(lw)), DeleteEntry(bR(lw)), DeleteEntry(bF(aJ, lw, w)), DeleteEntry(bS(w))] ++ lh)
2470+ let iW = cQ(lx)
2471+ let iX = dx(valueOrElse(getInteger(cT(lx)), 0))
2472+ let dI = valueOrElse(getInteger(iW), iX)
2473+ if ((iX > dI))
2474+ then throw((("Please heal your duck to " + toString(iX)) + "hp before unstaking"))
2475+ else ([ScriptTransfer(gz.caller, 1, bB), DeleteEntry(jo), DeleteEntry(iW), DeleteEntry(bV(lx)), DeleteEntry(bS(lx)), DeleteEntry(bG(aK, lx, x)), DeleteEntry(bT(x))] ++ li)
24742476 }
24752477 }
24762478 }
24782480
24792481
24802482
2481-@Callable(gy)
2482-func unstakeDuckCallback (bO,av) = if ((toString(gy.caller) != j))
2483+@Callable(gz)
2484+func unstakeDuckCallback (bP,aw) = if ((toString(gz.caller) != k))
24832485 then throw("Permission denied")
24842486 else {
2485- let lr = la(av, bO)
2486- $Tuple2([ScriptTransfer(addressFromStringValue(av), 1, fromBase58String(bO)), DeleteEntry(bC(bO)), DeleteEntry(bR(bO)), DeleteEntry(bF(aJ, bO, av)), DeleteEntry(bS(av))], lr)
2487- }
2488-
2489-
2490-
2491-@Callable(gy)
2492-func unstakeDuckREADONLY (bO,av) = {
2493- let lr = la(av, bO)
2494- $Tuple2(nil, lr)
2495- }
2496-
2497-
2498-
2499-@Callable(gy)
2500-func claimRes (eC,lA) = {
2501- let lh = kN(gy)
2502- if ((size(gy.payments) != 0))
2487+ let ls = lb(aw, bP)
2488+ $Tuple2([ScriptTransfer(addressFromStringValue(aw), 1, fromBase58String(bP)), DeleteEntry(bD(bP)), DeleteEntry(bS(bP)), DeleteEntry(bG(aK, bP, aw)), DeleteEntry(bT(aw))], ls)
2489+ }
2490+
2491+
2492+
2493+@Callable(gz)
2494+func unstakeDuckREADONLY (bP,aw) = {
2495+ let ls = lb(aw, bP)
2496+ $Tuple2(nil, ls)
2497+ }
2498+
2499+
2500+
2501+@Callable(gz)
2502+func claimRes (eD,lB) = {
2503+ let li = kO(gz)
2504+ if ((size(gz.payments) != 0))
25032505 then throw("No payments required")
25042506 else {
2505- let av = toString(gy.originCaller)
2506- let fd = jr(av, eC, ep, lA)
2507- let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
2508- $Tuple2(((((fd._1 ++ jZ(bO, fraction(di, eC, o))._1) :+ StringEntry(fd._2, makeString(fd._3, ":"))) :+ StringEntry(fd._4, makeString(fd._5, ":"))) ++ lh), fd._3[bt])
2509- }
2510- }
2511-
2512-
2513-
2514-@Callable(gy)
2515-func claimResToWH (eC,lA) = {
2516- let lh = kN(gy)
2517- if ((size(gy.payments) != 0))
2507+ let aw = toString(gz.originCaller)
2508+ let fe = js(aw, eD, eq, lB)
2509+ let bP = valueOrErrorMessage(getString(bT(aw)), "You don't have a duck staked")
2510+ $Tuple2(((((fe._1 ++ ka(bP, fraction(dj, eD, p))._1) :+ StringEntry(fe._2, makeString(fe._3, ":"))) :+ StringEntry(fe._4, makeString(fe._5, ":"))) ++ li), fe._3[bu])
2511+ }
2512+ }
2513+
2514+
2515+
2516+@Callable(gz)
2517+func claimResToWH (eD,lB) = {
2518+ let li = kO(gz)
2519+ if ((size(gz.payments) != 0))
25182520 then throw("No payments required")
25192521 else {
2520- let av = toString(gy.originCaller)
2521- let fd = jr(av, eC, eo, lA)
2522- $Tuple2(((((fd._1 ++ ka(av, fraction(di, eC, o))._1) :+ StringEntry(fd._2, makeString(fd._3, ":"))) :+ StringEntry(fd._4, makeString(fd._5, ":"))) ++ lh), fd._5[bk])
2523- }
2524- }
2525-
2526-
2527-
2528-@Callable(gy)
2529-func flight (iK,iL) = {
2530- let lh = kN(gy)
2531- if ((size(gy.payments) != 0))
2522+ let aw = toString(gz.originCaller)
2523+ let fe = js(aw, eD, ep, lB)
2524+ $Tuple2(((((fe._1 ++ kb(aw, fraction(dj, eD, p))._1) :+ StringEntry(fe._2, makeString(fe._3, ":"))) :+ StringEntry(fe._4, makeString(fe._5, ":"))) ++ li), fe._5[bl])
2525+ }
2526+ }
2527+
2528+
2529+
2530+@Callable(gz)
2531+func flight (iL,iM) = {
2532+ let li = kO(gz)
2533+ if ((size(gz.payments) != 0))
25322534 then throw("No payments required")
25332535 else {
2534- let bW = toString(gy.caller)
2535- let hg = iJ(bW, iK, iL)
2536- let iP = hg._1
2537- let bO = hg._2
2538- let lx = bU(bO)
2539- let jk = valueOrElse(getString(lx), aQ)
2540- let iR = hg._4
2541- if ((iR == jk))
2536+ let bX = toString(gz.caller)
2537+ let hh = iK(bX, iL, iM)
2538+ let iQ = hh._1
2539+ let bP = hh._2
2540+ let ly = bV(bP)
2541+ let jl = valueOrElse(getString(ly), aR)
2542+ let iS = hh._4
2543+ if ((iS == jl))
25422544 then throw("You can't fly to the same location")
25432545 else {
2544- let cy = split(iR, "_")
2545- let lB = (cy[bx] == "T")
2546- let lC = (cy[bx] == "D")
2547- let gk = cU(bO)
2548- let lD = valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,")
2549- let lE = fe(lD, hg._5)
2550- let lF = lE._1
2551- let lG = lE._2
2552- let hv = lE._3
2553- let lH = if (!(cs(Q, jk)))
2554- then if (lB)
2555- then cw(jk, iR, 5)
2556- else if (!(lC))
2557- then if ((iP > 0))
2558- then $Tuple2(iR, iP)
2559- else $Tuple2(jk, 0)
2560- else if ((iP > 0))
2546+ let cz = split(iS, "_")
2547+ let lC = (cz[by] == "T")
2548+ let lD = (cz[by] == "D")
2549+ let gl = cV(bP)
2550+ let lE = valueOrElse(getString(gl), ",;,_,;,_,;,_,;,_,;,_,;,")
2551+ let lF = ff(lE, hh._5)
2552+ let lG = lF._1
2553+ let lH = lF._2
2554+ let hw = lF._3
2555+ let lI = if (!(ct(R, jl)))
2556+ then if (lC)
2557+ then cx(jl, iS, 5)
2558+ else if (!(lD))
2559+ then if ((iQ > 0))
2560+ then $Tuple2(iS, iQ)
2561+ else $Tuple2(jl, 0)
2562+ else if ((iQ > 0))
25612563 then {
2562- let ak = invoke(this, "processDelivery", [bO], nil)
2563- if ((ak == ak))
2564- then $Tuple2(jk, iP)
2564+ let al = invoke(this, "processDelivery", [bP], nil)
2565+ if ((al == al))
2566+ then $Tuple2(jl, iQ)
25652567 else throw("Strict value is not equal to itself.")
25662568 }
2567- else $Tuple2(jk, 0)
2568- else if (cm(Q, jk))
2569- then if (!(cm(Q, iR)))
2569+ else $Tuple2(jl, 0)
2570+ else if (cn(R, jl))
2571+ then if (!(cn(R, iS)))
25702572 then throw("Your duck is taking part in the tournament")
25712573 else {
2572- let lI = parseIntValue(cy[by])
2573- let lJ = split(jk, "_")
2574- let co = valueOrElse(getInteger(Q, bZ), 0)
2575- if ((lI != (parseIntValue(lJ[by]) + 1)))
2576- then cw(jk, iR, 7)
2577- else if ((iP > 0))
2574+ let lJ = parseIntValue(cz[bz])
2575+ let lK = split(jl, "_")
2576+ let cp = valueOrElse(getInteger(R, ca), 0)
2577+ if ((lJ != (parseIntValue(lK[bz]) + 1)))
2578+ then cx(jl, iS, 7)
2579+ else if ((iQ > 0))
25782580 then {
2579- let lK = valueOrElse(getInteger(Q, cd(co, bO)), 0)
2580- let lL = if ((lI > lK))
2581- then invoke(Q, "saveDuckResult", [bO, lI], nil)
2581+ let lL = valueOrElse(getInteger(R, ce(cp, bP)), 0)
2582+ let lM = if ((lJ > lL))
2583+ then invoke(R, "saveDuckResult", [bP, lJ], nil)
25822584 else unit
2583- if ((lL == lL))
2584- then $Tuple2(iR, iP)
2585+ if ((lM == lM))
2586+ then $Tuple2(iS, iQ)
25852587 else throw("Strict value is not equal to itself.")
25862588 }
2587- else $Tuple2(jk, 0)
2589+ else $Tuple2(jl, 0)
25882590 }
2589- else throw(("Unknown curLocation:" + jk))
2590- let lM = lH._1
2591- let lN = lH._2
2592- $Tuple2(((([StringEntry(lx, lM), StringEntry(gk, lF), IntegerEntry(cP(bO), lN)] ++ lh) ++ (if (lG)
2593- then [StringEntry(da(bO), "0_0_0_0_0")]
2594- else nil)) ++ jZ(bO, if ((iP > 0))
2595- then dj
2596- else dk)._1), hg._3)
2591+ else throw(("Unknown curLocation:" + jl))
2592+ let lN = lI._1
2593+ let lO = lI._2
2594+ $Tuple2(((([StringEntry(ly, lN), StringEntry(gl, lG), IntegerEntry(cQ(bP), lO)] ++ li) ++ (if (lH)
2595+ then [StringEntry(db(bP), "0_0_0_0_0")]
2596+ else nil)) ++ ka(bP, if ((iQ > 0))
2597+ then dk
2598+ else dl)._1), hh._3)
25972599 }
25982600 }
25992601 }
26002602
26012603
26022604
2603-@Callable(gy)
2604-func heal (lO,lP,lQ) = {
2605- let lh = kN(gy)
2606- if (if (if ((0 > lO))
2607- then true
2608- else (0 > lP))
2605+@Callable(gz)
2606+func heal (lP,lQ,lR) = {
2607+ let li = kO(gz)
2608+ if (if (if ((0 > lP))
26092609 then true
26102610 else (0 > lQ))
2611+ then true
2612+ else (0 > lR))
26112613 then throw("Quantity cannot be negative")
26122614 else {
2613- let bO = valueOrErrorMessage(getString(bS(toString(gy.caller))), "You don't have a duck staked")
2614- if (kk(bO))
2615+ let bP = valueOrErrorMessage(getString(bT(toString(gz.caller))), "You don't have a duck staked")
2616+ if (kl(bP))
26152617 then throw("heal_checkTournament")
26162618 else {
2617- let lR = [lO, lP, lQ]
2618- let iV = cP(bO)
2619- let iW = dw(valueOrElse(getInteger(cS(bO)), 0))
2620- let lS = valueOrElse(getInteger(iV), iW)
2621- if ((lS >= iW))
2622- then throw((("HP should be < " + toString(iW)) + " to heal"))
2619+ let lS = [lP, lQ, lR]
2620+ let iW = cQ(bP)
2621+ let iX = dx(valueOrElse(getInteger(cT(bP)), 0))
2622+ let lT = valueOrElse(getInteger(iW), iX)
2623+ if ((lT >= iX))
2624+ then throw((("HP should be < " + toString(iX)) + " to heal"))
26232625 else {
2624- let hD = bT(bO)
2625- let ih = hC(hD)
2626- let lT = if ((ih[bv] == ""))
2626+ let hE = bU(bP)
2627+ let ii = hD(hE)
2628+ let lU = if ((ii[bw] == ""))
26272629 then nil
2628- else split_4C(ih[bv], "_")
2629- func lU (eL,cv) = {
2630- let am = eL._2
2631- let gX = if ((size(lT) > am))
2632- then parseIntValue(lT[am])
2630+ else split_4C(ii[bw], "_")
2631+ func lV (eM,cw) = {
2632+ let an = eM._2
2633+ let gY = if ((size(lU) > an))
2634+ then parseIntValue(lU[an])
26332635 else 0
2634- if ((3 > am))
2636+ if ((3 > an))
26352637 then {
2636- let lV = lR[am]
2637- if ((lV > gX))
2638- then throw(((("You have only " + toString(gX)) + " of ") + ba[am]))
2639- else $Tuple3((eL._1 :+ toString((gX - lV))), (am + 1), (eL._3 + (parseIntValue(split(cv, "_")[bf]) * lV)))
2638+ let lW = lS[an]
2639+ if ((lW > gY))
2640+ then throw(((("You have only " + toString(gY)) + " of ") + bb[an]))
2641+ else $Tuple3((eM._1 :+ toString((gY - lW))), (an + 1), (eM._3 + (parseIntValue(split(cw, "_")[bg]) * lW)))
26402642 }
2641- else $Tuple3((eL._1 :+ toString(gX)), (am + 1), eL._3)
2643+ else $Tuple3((eM._1 :+ toString(gY)), (an + 1), eM._3)
26422644 }
26432645
2644- let fd = {
2645- let eN = bd
2646- let eO = size(eN)
2647- let eP = $Tuple3(nil, 0, 0)
2648- func eQ (eR,eS) = if ((eS >= eO))
2649- then eR
2650- else lU(eR, eN[eS])
2651-
2652- func eT (eR,eS) = if ((eS >= eO))
2653- then eR
2646+ let fe = {
2647+ let eO = be
2648+ let eP = size(eO)
2649+ let eQ = $Tuple3(nil, 0, 0)
2650+ func eR (eS,eT) = if ((eT >= eP))
2651+ then eS
2652+ else lV(eS, eO[eT])
2653+
2654+ func eU (eS,eT) = if ((eT >= eP))
2655+ then eS
26542656 else throw("List size exceeds 50")
26552657
2656- eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 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)
2658+ eU(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eQ, 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)
26572659 }
2658- let lW = min([iW, (lS + fd._3)])
2659- $Tuple2((([IntegerEntry(iV, lW), StringEntry(hD, makeString_2C([ih[bs], ih[bt], ih[bu], makeString(fd._1, "_")], ":"))] ++ lh) ++ jZ(bO, (dt * ((lO + lP) + lQ)))._1), lW)
2660+ let lX = min([iX, (lT + fe._3)])
2661+ $Tuple2((([IntegerEntry(iW, lX), StringEntry(hE, makeString_2C([ii[bt], ii[bu], ii[bv], makeString(fe._1, "_")], ":"))] ++ li) ++ ka(bP, (du * ((lP + lQ) + lR)))._1), lX)
26602662 }
26612663 }
26622664 }
26642666
26652667
26662668
2667-@Callable(gy)
2669+@Callable(gz)
26682670 func healES () = {
2669- let lh = kN(gy)
2670- if ((size(gy.payments) != 1))
2671+ let li = kO(gz)
2672+ if ((size(gz.payments) != 1))
26712673 then throw("Exactly one payment required")
26722674 else {
2673- let li = value(gy.payments[0])
2674- if ((li.assetId != h))
2675+ let lj = value(gz.payments[0])
2676+ if ((lj.assetId != i))
26752677 then throw("Allowed USDT payment only!")
26762678 else {
2677- let bO = valueOrErrorMessage(getString(bS(toString(gy.caller))), "You don't have a duck staked")
2678- if (kk(bO))
2679+ let bP = valueOrErrorMessage(getString(bT(toString(gz.caller))), "You don't have a duck staked")
2680+ if (kl(bP))
26792681 then throw("healES_checkTournament")
26802682 else {
2681- let iV = cP(bO)
2682- let iW = dw(valueOrElse(getInteger(cS(bO)), 0))
2683- let lS = valueOrElse(getInteger(iV), iW)
2684- if ((lS > 0))
2683+ let iW = cQ(bP)
2684+ let iX = dx(valueOrElse(getInteger(cT(bP)), 0))
2685+ let lT = valueOrElse(getInteger(iW), iX)
2686+ if ((lT > 0))
26852687 then throw("HP should be 0 to call Emergency Service")
26862688 else {
2687- let hD = bT(bO)
2688- let ih = hC(hD)
2689- let lT = if ((ih[bv] == ""))
2689+ let hE = bU(bP)
2690+ let ii = hD(hE)
2691+ let lU = if ((ii[bw] == ""))
26902692 then nil
2691- else split_4C(ih[bv], "_")
2692- let lX = if ((size(lT) > 0))
2693- then parseIntValue(lT[0])
2693+ else split_4C(ii[bw], "_")
2694+ let lY = if ((size(lU) > 0))
2695+ then parseIntValue(lU[0])
26942696 else 0
2695- let lY = if ((size(lT) > 1))
2696- then parseIntValue(lT[1])
2697+ let lZ = if ((size(lU) > 1))
2698+ then parseIntValue(lU[1])
26972699 else 0
2698- let lZ = if ((size(lT) > 2))
2699- then parseIntValue(lT[2])
2700+ let ma = if ((size(lU) > 2))
2701+ then parseIntValue(lU[2])
27002702 else 0
2701- if (if (if ((lX > 0))
2702- then true
2703- else (lY > 0))
2703+ if (if (if ((lY > 0))
27042704 then true
27052705 else (lZ > 0))
2706+ then true
2707+ else (ma > 0))
27062708 then throw("You have to use own Medical Kit")
27072709 else {
2708- let ma = getString(N, bX())
2709- let mb = if (isDefined(ma))
2710- then split_4C(value(ma), "_")
2710+ let mb = getString(O, bY())
2711+ let mc = if (isDefined(mb))
2712+ then split_4C(value(mb), "_")
27112713 else nil
2712- let mc = if ((size(mb) > 0))
2713- then parseIntValue(mb[0])
2714+ let md = if ((size(mc) > 0))
2715+ then parseIntValue(mc[0])
27142716 else 0
2715- if ((0 >= mc))
2717+ if ((0 >= md))
27162718 then throw("There are no Medical Kits L1 at Emergency Service storage")
27172719 else {
2718- let lW = (lS + parseIntValue(split(bd[0], "_")[bf]))
2719- let md = makeString([toString((mc - 1)), removeByIndex(mb, 0)], "_")
2720- let cv = split(bd[0], "_")
2721- let me = cu(cv)
2722- let mf = fraction((me * aS), aR, (o * bi))
2723- if ((li.amount != mf))
2724- then throw(("Payment attached should be " + toString(mf)))
2720+ let lX = (lT + parseIntValue(split(be[0], "_")[bg]))
2721+ let me = makeString([toString((md - 1)), removeByIndex(mc, 0)], "_")
2722+ let cw = split(be[0], "_")
2723+ let mf = cv(cw)
2724+ let mg = fraction((mf * aT), aS, (p * bj))
2725+ if ((lj.amount != mg))
2726+ then throw(("Payment attached should be " + toString(mg)))
27252727 else {
2726- let fd = ai(invoke(N, "updateEsStorage", [md], [AttachedPayment(h, mf)]))
2727- $Tuple2(((lh :+ IntegerEntry(iV, lW)) ++ jZ(bO, dn)._1), fd)
2728+ let fe = aj(invoke(O, "updateEsStorage", [me], [AttachedPayment(i, mg)]))
2729+ $Tuple2(((li :+ IntegerEntry(iW, lX)) ++ ka(bP, do)._1), fe)
27282730 }
27292731 }
27302732 }
27362738
27372739
27382740
2739-@Callable(gy)
2740-func updateBackpack (bO,mg) = if ((gy.caller != N))
2741+@Callable(gz)
2742+func updateBackpack (bP,mh) = if ((gz.caller != O))
27412743 then throw("permission denied")
2742- else $Tuple2([StringEntry(bT(bO), mg)], mg)
2743-
2744-
2745-
2746-@Callable(gy)
2744+ else $Tuple2([StringEntry(bU(bP), mh)], mh)
2745+
2746+
2747+
2748+@Callable(gz)
27472749 func commitForRandom () = {
2748- let lh = kN(gy)
2749- let mh = (height + aa)
2750- let av = toString(gy.caller)
2751- $Tuple2(([IntegerEntry(ab(av), mh)] ++ lh), mh)
2752- }
2753-
2754-
2755-
2756-@Callable(gy)
2757-func revealRandom (aD) = {
2758- let lh = kN(gy)
2759- let av = toString(gy.caller)
2760- let mi = ab(av)
2761- let mh = valueOrErrorMessage(getInteger(mi), "You have to commitForRandom() first!")
2762- if ((mh > height))
2763- then throw(("Random number is not ready yet, wait until height = " + toString(mh)))
2750+ let li = kO(gz)
2751+ let mi = (height + ab)
2752+ let aw = toString(gz.caller)
2753+ $Tuple2(([IntegerEntry(ac(aw), mi)] ++ li), mi)
2754+ }
2755+
2756+
2757+
2758+@Callable(gz)
2759+func revealRandom (aE) = {
2760+ let li = kO(gz)
2761+ let aw = toString(gz.caller)
2762+ let mj = ac(aw)
2763+ let mi = valueOrErrorMessage(getInteger(mj), "You have to commitForRandom() first!")
2764+ if ((mi > height))
2765+ then throw(("Random number is not ready yet, wait until height = " + toString(mi)))
27642766 else {
2765- let aF = value(value(blockInfoByHeight(mh)).vrf)
2766- let aE = toBytes(valueOrElse(getString(au(av)), ""))
2767- let mj = aC(aD, aE, aF)
2768- $Tuple2(([DeleteEntry(mi)] ++ lh), mj)
2769- }
2770- }
2771-
2772-
2773-
2774-@Callable(gy)
2767+ let aG = value(value(blockInfoByHeight(mi)).vrf)
2768+ let aF = toBytes(valueOrElse(getString(av(aw)), ""))
2769+ let mk = aD(aE, aF, aG)
2770+ $Tuple2(([DeleteEntry(mj)] ++ li), mk)
2771+ }
2772+ }
2773+
2774+
2775+
2776+@Callable(gz)
27752777 func buySLand () = {
2776- let lh = kN(gy)
2777- if ((size(gy.payments) != 1))
2778+ let li = kO(gz)
2779+ if ((size(gz.payments) != 1))
27782780 then throw("Exactly one payment required")
27792781 else {
2780- let li = value(gy.payments[0])
2781- if ((li.assetId != h))
2782+ let lj = value(gz.payments[0])
2783+ if ((lj.assetId != i))
27822784 then throw("Allowed USDT payment only!")
2783- else if ((li.amount != dT))
2784- then throw(("Payment attached should be " + toString(dT)))
2785+ else if ((lj.amount != dU))
2786+ then throw(("Payment attached should be " + toString(dU)))
27852787 else {
2786- let fd = iC(gy.caller, gy.transactionId)
2787- let mk = al(invoke(R, "burnAcres", [dV], nil))
2788- $Tuple2((((fd._1 :+ ScriptTransfer(N, li.amount, h)) ++ ka(toString(gy.caller), dp)._1) ++ lh), $Tuple2(fd._2._1, mk))
2788+ let fe = iD(gz.caller, gz.transactionId)
2789+ let ml = am(invoke(S, "burnAcres", [dW], nil))
2790+ $Tuple2((((fe._1 :+ ScriptTransfer(O, lj.amount, i)) ++ kb(toString(gz.caller), dq)._1) ++ li), $Tuple2(fe._2._1, ml))
27892791 }
27902792 }
27912793 }
27922794
27932795
27942796
2795-@Callable(gy)
2796-func expedition (iK,iL) = {
2797- let lh = kN(gy)
2798- if ((size(gy.payments) != 0))
2797+@Callable(gz)
2798+func expedition (iL,iM) = {
2799+ let li = kO(gz)
2800+ if ((size(gz.payments) != 0))
27992801 then throw("No payments required")
28002802 else {
2801- let bW = toString(gy.caller)
2802- let hg = iJ(bW, iK, iL)
2803- let bO = hg._2
2804- let iV = cP(bO)
2805- let hD = bT(bO)
2806- let ih = hC(hD)
2807- let jK = split(ih[bu], "_")
2808- let jM = makeString(eX(true, jK, dS), "_")
2809- let gk = cU(bO)
2810- let lD = valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,")
2811- let ml = fe(lD, hg._5)
2812- let lF = ml._1
2813- let lG = ml._2
2814- let hv = ml._3
2815- let mm = iC(gy.caller, gy.transactionId)
2816- let iI = mm._2._1
2817- let fd = if ((0 >= hg._1))
2818- then $Tuple3([IntegerEntry(iV, 0), StringEntry(gk, lF)], "", 0)
2819- else $Tuple3((mm._1 ++ (if (lG)
2820- then [StringEntry(da(bO), "0_0_0_0_0")]
2821- else ((((nil :+ StringEntry(bU(bO), makeString([mm._2._2, "L", iI], "_"))) :+ IntegerEntry(iV, hg._1)) :+ StringEntry(gk, lF)) :+ StringEntry(hD, makeString([ih[bs], ih[bt], jM, ih[bv]], ":"))))), iI, hg._3)
2822- if (kk(bO))
2803+ let bX = toString(gz.caller)
2804+ let hh = iK(bX, iL, iM)
2805+ let bP = hh._2
2806+ let iW = cQ(bP)
2807+ let hE = bU(bP)
2808+ let ii = hD(hE)
2809+ let jL = split(ii[bv], "_")
2810+ let jN = makeString(eY(true, jL, dT), "_")
2811+ let gl = cV(bP)
2812+ let lE = valueOrElse(getString(gl), ",;,_,;,_,;,_,;,_,;,_,;,")
2813+ let mm = ff(lE, hh._5)
2814+ let lG = mm._1
2815+ let lH = mm._2
2816+ let hw = mm._3
2817+ let mn = iD(gz.caller, gz.transactionId)
2818+ let iJ = mn._2._1
2819+ let fe = if ((0 >= hh._1))
2820+ then $Tuple3([IntegerEntry(iW, 0), StringEntry(gl, lG)], "", 0)
2821+ else $Tuple3((mn._1 ++ (if (lH)
2822+ then [StringEntry(db(bP), "0_0_0_0_0")]
2823+ else ((((nil :+ StringEntry(bV(bP), makeString([mn._2._2, "L", iJ], "_"))) :+ IntegerEntry(iW, hh._1)) :+ StringEntry(gl, lG)) :+ StringEntry(hE, makeString([ii[bt], ii[bu], jN, ii[bw]], ":"))))), iJ, hh._3)
2824+ if (kl(bP))
28232825 then throw("expedition_checkTournament")
28242826 else {
2825- let mk = al(invoke(R, "burnAcres", [dV], nil))
2826- $Tuple2(((fd._1 ++ jZ(bO, dp)._1) ++ lh), $Tuple3(fd._2, fd._3, mk))
2827+ let ml = am(invoke(S, "burnAcres", [dW], nil))
2828+ $Tuple2(((fe._1 ++ ka(bP, dq)._1) ++ li), $Tuple3(fe._2, fe._3, ml))
28272829 }
28282830 }
28292831 }
28302832
28312833
28322834
2833-@Callable(gy)
2835+@Callable(gz)
28342836 func buySLandForAcres () = {
2835- let lh = kN(gy)
2836- if ((size(gy.payments) != 1))
2837+ let li = kO(gz)
2838+ if ((size(gz.payments) != 1))
28372839 then throw("exactly 1 payment must be attached")
28382840 else {
2839- let li = gy.payments[0]
2840- let fk = li.amount
2841- if (if (!(isDefined(li.assetId)))
2841+ let lj = gz.payments[0]
2842+ let fl = lj.amount
2843+ if (if (!(isDefined(lj.assetId)))
28422844 then true
2843- else (value(li.assetId) != Z))
2845+ else (value(lj.assetId) != aa))
28442846 then throw("ACRES payments only!")
2845- else if ((fk != dV))
2846- then throw(("Payment attached should be " + toString(dV)))
2847+ else if ((fl != dW))
2848+ then throw(("Payment attached should be " + toString(dW)))
28472849 else {
2848- let fd = iC(gy.caller, gy.transactionId)
2849- let mk = al(invoke(R, "burnAcres", [dV], [AttachedPayment(Z, fk)]))
2850- $Tuple2(((fd._1 ++ ka(toString(gy.caller), dp)._1) ++ lh), $Tuple2(fd._2._1, mk))
2850+ let fe = iD(gz.caller, gz.transactionId)
2851+ let ml = am(invoke(S, "burnAcres", [dW], [AttachedPayment(aa, fl)]))
2852+ $Tuple2(((fe._1 ++ kb(toString(gz.caller), dq)._1) ++ li), $Tuple2(fe._2._1, ml))
28512853 }
28522854 }
28532855 }
28542856
28552857
28562858
2857-@Callable(gy)
2858-func upgradeInfra (bI) = {
2859- let lh = kN(gy)
2860- if ((size(gy.payments) != 0))
2859+@Callable(gz)
2860+func upgradeInfra (bJ) = {
2861+ let li = kO(gz)
2862+ if ((size(gz.payments) != 0))
28612863 then throw("No payments required")
28622864 else {
2863- let fd = jE(true, gy.caller, 0, bI)
2864- let bO = valueOrErrorMessage(getString(bS(toString(gy.caller))), "You don't have a duck staked")
2865- $Tuple2(((fd._1 ++ lh) ++ jZ(bO, fraction(dq, fd._3, o))._1), fd._2)
2866- }
2867- }
2868-
2869-
2870-
2871-@Callable(gy)
2872-func activateArtifact (mn,mo) = {
2873- let lh = kN(gy)
2874- if ((size(gy.payments) != 0))
2865+ let fe = jF(true, gz.caller, 0, bJ)
2866+ let bP = valueOrErrorMessage(getString(bT(toString(gz.caller))), "You don't have a duck staked")
2867+ $Tuple2(((fe._1 ++ li) ++ ka(bP, fraction(dr, fe._3, p))._1), fe._2)
2868+ }
2869+ }
2870+
2871+
2872+
2873+@Callable(gz)
2874+func activateArtifact (mo,mp) = {
2875+ let li = kO(gz)
2876+ if ((size(gz.payments) != 0))
28752877 then throw("No payments required")
28762878 else {
2877- let av = toString(gy.caller)
2878- let fd = {
2879- let g = mn
2880- if (("PRESALE" == g))
2881- then ki(av, mo)
2882- else if (("ONBOARD" == g))
2883- then kb(av)
2879+ let aw = toString(gz.caller)
2880+ let fe = {
2881+ let h = mo
2882+ if (("PRESALE" == h))
2883+ then kj(aw, mp)
2884+ else if (("ONBOARD" == h))
2885+ then kc(aw)
28842886 else throw("Unknown artifact")
28852887 }
2886- (fd ++ lh)
2887- }
2888- }
2889-
2890-
2891-
2892-@Callable(gy)
2893-func mergeLands (ko) = {
2894- let lh = kN(gy)
2895- if ((size(gy.payments) != 0))
2888+ (fe ++ li)
2889+ }
2890+ }
2891+
2892+
2893+
2894+@Callable(gz)
2895+func mergeLands (kp) = {
2896+ let li = kO(gz)
2897+ if ((size(gz.payments) != 0))
28962898 then throw("No payments required")
28972899 else {
2898- let fd = kM(toString(gy.caller), ko)
2899- $Tuple2(((fd._1 ++ lh) ++ ka(toString(gy.caller), dr)._1), fd._2)
2900- }
2901- }
2902-
2903-
2904-
2905-@Callable(gy)
2906-func cargoExchange (mp,bI) = {
2907- let lh = kN(gy)
2908- if ((size(gy.payments) != 0))
2900+ let fe = kN(toString(gz.caller), kp)
2901+ $Tuple2(((fe._1 ++ li) ++ kb(toString(gz.caller), ds)._1), fe._2)
2902+ }
2903+ }
2904+
2905+
2906+
2907+@Callable(gz)
2908+func cargoExchange (mq,bJ) = {
2909+ let li = kO(gz)
2910+ if ((size(gz.payments) != 0))
29092911 then throw("No payments required")
29102912 else {
2911- let ig = split_4C(mp, ":")
2912- let av = toString(gy.originCaller)
2913- let jm = value(assetInfo(fromBase58String(bI)))
2914- let jn = bC(bI)
2915- if (!(isDefined(getInteger(jn))))
2916- then throw((jm.name + " is not staked"))
2913+ let ih = split_4C(mq, ":")
2914+ let aw = toString(gz.originCaller)
2915+ let jn = value(assetInfo(fromBase58String(bJ)))
2916+ let jo = bD(bJ)
2917+ if (!(isDefined(getInteger(jo))))
2918+ then throw((jn.name + " is not staked"))
29172919 else {
2918- let jp = valueOrErrorMessage(getString(bz(bI)), (("NFT " + jm.name) + " is orphaned"))
2919- if ((jp != av))
2920- then throw((aI + " is not yours"))
2920+ let jq = valueOrErrorMessage(getString(bA(bJ)), (("NFT " + jn.name) + " is orphaned"))
2921+ if ((jq != aw))
2922+ then throw((aJ + " is not yours"))
29212923 else {
2922- let hS = (aq(split(jm.description, "_")[T]) / p)
2923- let hT = valueOrElse(getInteger(bJ(bI)), 0)
2924- let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
2925- let jk = valueOrElse(getString(bU(bO)), aQ)
2926- let cp = split(value(jk), "_")
2927- if ((cp[bx] != "L"))
2928- then throw((("Duck location type is " + cp[bx]) + ", but should be L"))
2929- else if ((cp[by] != bI))
2930- then throw(("Duck should be on the land " + bI))
2924+ let hT = (ar(split(jn.description, "_")[U]) / q)
2925+ let hU = valueOrElse(getInteger(bK(bJ)), 0)
2926+ let bP = valueOrErrorMessage(getString(bT(aw)), "You don't have a duck staked")
2927+ let jl = valueOrElse(getString(bV(bP)), aR)
2928+ let cq = split(value(jl), "_")
2929+ if ((cq[by] != "L"))
2930+ then throw((("Duck location type is " + cq[by]) + ", but should be L"))
2931+ else if ((cq[bz] != bJ))
2932+ then throw(("Duck should be on the land " + bJ))
29312933 else {
2932- let hR = bH(bI)
2933- let hI = hQ(hR, hS, hT)
2934- let hD = bT(bO)
2935- let ih = hC(hD)
2936- let fd = if(ig, hI, ih)
2937- let hZ = split(hI[bn], "_")
2938- let jB = (parseIntValue(hZ[bp]) + fd._7)
2939- let jC = (parseIntValue(hZ[bq]) - fd._7)
2940- ([StringEntry(hD, makeString_2C([ih[bs], fd._4, fd._5, fd._6], ":")), StringEntry(hR, makeString_2C([hI[bj], fd._1, fd._2, fd._3, makeString([hZ[bo], toString(jB), toString(jC), hZ[br]], "_")], ":"))] ++ lh)
2934+ let hS = bI(bJ)
2935+ let hJ = hR(hS, hT, hU)
2936+ let hE = bU(bP)
2937+ let ii = hD(hE)
2938+ let fe = ig(ih, hJ, ii)
2939+ let ia = split(hJ[bo], "_")
2940+ let jC = (parseIntValue(ia[bq]) + fe._7)
2941+ let jD = (parseIntValue(ia[br]) - fe._7)
2942+ ([StringEntry(hE, makeString_2C([ii[bt], fe._4, fe._5, fe._6], ":")), StringEntry(hS, makeString_2C([hJ[bk], fe._1, fe._2, fe._3, makeString([ia[bp], toString(jC), toString(jD), ia[bs]], "_")], ":"))] ++ li)
29412943 }
29422944 }
29432945 }
29462948
29472949
29482950
2949-@Callable(gy)
2950-func saveWarehouse (hV,bI) = if ((gy.caller != N))
2951+@Callable(gz)
2952+func saveWarehouse (hW,bJ) = if ((gz.caller != O))
29512953 then throw("Access denied")
29522954 else {
2953- let hR = bH(bI)
2954- let hW = split_4C(hV, ":")
2955- if ((size(hW) != 5))
2955+ let hS = bI(bJ)
2956+ let hX = split_4C(hW, ":")
2957+ if ((size(hX) != 5))
29562958 then throw("warehouse string should contain 4 ':' separators")
29572959 else {
2958- let mq = split(hW[bn], "_")[bo]
2959- let jB = hH(hW)
2960- let mr = hF(hW[bj])
2961- let jC = ((mr - parseIntValue(mq)) - jB)
2962- if ((0 > jC))
2960+ let mr = split(hX[bo], "_")[bp]
2961+ let jC = hI(hX)
2962+ let ms = hG(hX[bk])
2963+ let jD = ((ms - parseIntValue(mr)) - jC)
2964+ if ((0 > jD))
29632965 then throw("Operation leads to negative free warehouse space")
29642966 else {
2965- let ms = makeString_2C([hW[bj], hW[bk], hW[bl], hW[bm], makeString([mq, toString(jB), toString(jC), toString(mr)], "_")], ":")
2966- $Tuple2([StringEntry(hR, ms)], ms)
2967+ let mt = makeString_2C([hX[bk], hX[bl], hX[bm], hX[bn], makeString([mr, toString(jC), toString(jD), toString(ms)], "_")], ":")
2968+ $Tuple2([StringEntry(hS, mt)], mt)
29672969 }
29682970 }
29692971 }
29702972
29712973
29722974
2973-@Callable(gy)
2974-func setCustomName (bA,ky,bE) = {
2975- let lh = kN(gy)
2976- if ((size(gy.payments) != 1))
2975+@Callable(gz)
2976+func setCustomName (bB,kz,bF) = {
2977+ let li = kO(gz)
2978+ if ((size(gz.payments) != 1))
29772979 then throw("Exactly one payment required")
29782980 else {
2979- let li = value(gy.payments[0])
2980- if ((li.assetId != h))
2981+ let lj = value(gz.payments[0])
2982+ if ((lj.assetId != i))
29812983 then throw("Allowed USDT payment only!")
2982- else if ((li.amount != dP))
2983- then throw(("Payment should be " + toString(dP)))
2984- else if (contains(ky, "__"))
2985- then throw(("Name should not contain '__': " + ky))
2986- else if ((size(ky) > dQ))
2987- then throw(("Name too long, maxLength=" + toString(dQ)))
2984+ else if ((lj.amount != dQ))
2985+ then throw(("Payment should be " + toString(dQ)))
2986+ else if (contains(kz, "__"))
2987+ then throw(("Name should not contain '__': " + kz))
2988+ else if ((size(kz) > dR))
2989+ then throw(("Name too long, maxLength=" + toString(dR)))
29882990 else {
2989- let av = toString(gy.originCaller)
2990- let mt = {
2991- let g = bE
2992- if (("ACCOUNT" == g))
2991+ let aw = toString(gz.originCaller)
2992+ let mu = {
2993+ let h = bF
2994+ if (("ACCOUNT" == h))
29932995 then {
2994- let mu = el(ky)
2995- let mv = getString(mu)
2996- if (isDefined(mv))
2997- then throw(("Name already registered: " + ky))
2996+ let mv = em(kz)
2997+ let mw = getString(mv)
2998+ if (isDefined(mw))
2999+ then throw(("Name already registered: " + kz))
29983000 else {
2999- let mw = bL(av)
3000- let mx = getString(mw)
3001- let my = if (isDefined(mx))
3002- then [DeleteEntry(el(value(mx)))]
3001+ let mx = bM(aw)
3002+ let my = getString(mx)
3003+ let mz = if (isDefined(my))
3004+ then [DeleteEntry(em(value(my)))]
30033005 else nil
3004- (((my :+ StringEntry(mw, ky)) :+ StringEntry(mu, av)) ++ ka(av, do)._1)
3006+ (((mz :+ StringEntry(mx, kz)) :+ StringEntry(mv, aw)) ++ kb(aw, dp)._1)
30053007 }
30063008 }
3007- else if (("LAND" == g))
3009+ else if (("LAND" == h))
30083010 then {
3009- let jm = value(assetInfo(fromBase58String(bA)))
3010- let jn = bC(bA)
3011- if (!(isDefined(getInteger(jn))))
3012- then throw((jm.name + " is not staked"))
3011+ let jn = value(assetInfo(fromBase58String(bB)))
3012+ let jo = bD(bB)
3013+ if (!(isDefined(getInteger(jo))))
3014+ then throw((jn.name + " is not staked"))
30133015 else {
3014- let jp = valueOrErrorMessage(getString(bz(bA)), (("NFT " + jm.name) + " is orphaned"))
3015- if ((jp != av))
3016- then throw((aI + " is not yours"))
3016+ let jq = valueOrErrorMessage(getString(bA(bB)), (("NFT " + jn.name) + " is orphaned"))
3017+ if ((jq != aw))
3018+ then throw((aJ + " is not yours"))
30173019 else {
3018- let mu = ee(ky)
3019- let mv = getString(mu)
3020- if (isDefined(mv))
3021- then throw(("Name already registered: " + ky))
3020+ let mv = ef(kz)
3021+ let mw = getString(mv)
3022+ if (isDefined(mw))
3023+ then throw(("Name already registered: " + kz))
30223024 else {
3023- let mz = bB(bA)
3024- let mx = getString(mz)
3025- let my = if (isDefined(mx))
3026- then [DeleteEntry(ee(value(mx)))]
3025+ let mA = bC(bB)
3026+ let my = getString(mA)
3027+ let mz = if (isDefined(my))
3028+ then [DeleteEntry(ef(value(my)))]
30273029 else nil
3028- (((my :+ StringEntry(mz, ky)) :+ StringEntry(mu, bA)) ++ ka(av, do)._1)
3030+ (((mz :+ StringEntry(mA, kz)) :+ StringEntry(mv, bB)) ++ kb(aw, dp)._1)
30293031 }
30303032 }
30313033 }
30323034 }
3033- else if (("DUCK" == g))
3035+ else if (("DUCK" == h))
30343036 then {
3035- let jm = value(assetInfo(fromBase58String(bA)))
3036- let jn = bC(bA)
3037- if (if (!(isDefined(getInteger(jn))))
3037+ let jn = value(assetInfo(fromBase58String(bB)))
3038+ let jo = bD(bB)
3039+ if (if (!(isDefined(getInteger(jo))))
30383040 then true
3039- else !(isDefined(getString(bS(av)))))
3040- then throw((jm.name + " is not staked"))
3041+ else !(isDefined(getString(bT(aw)))))
3042+ then throw((jn.name + " is not staked"))
30413043 else {
3042- let jp = valueOrErrorMessage(getString(bR(bA)), (("NFT " + jm.name) + " is orphaned"))
3043- if ((jp != av))
3044- then throw((aJ + " is not yours"))
3044+ let jq = valueOrErrorMessage(getString(bS(bB)), (("NFT " + jn.name) + " is orphaned"))
3045+ if ((jq != aw))
3046+ then throw((aK + " is not yours"))
30453047 else {
3046- let mu = ek(ky)
3047- let mv = getString(mu)
3048- if (isDefined(mv))
3049- then throw(("Name already registered: " + ky))
3048+ let mv = el(kz)
3049+ let mw = getString(mv)
3050+ if (isDefined(mw))
3051+ then throw(("Name already registered: " + kz))
30503052 else {
3051- let mz = bK(bA)
3052- let mx = getString(mz)
3053- let my = if (isDefined(mx))
3054- then [DeleteEntry(ek(value(mx)))]
3053+ let mA = bL(bB)
3054+ let my = getString(mA)
3055+ let mz = if (isDefined(my))
3056+ then [DeleteEntry(el(value(my)))]
30553057 else nil
3056- (((my :+ StringEntry(mz, ky)) :+ StringEntry(mu, bA)) ++ jZ(bA, do)._1)
3058+ (((mz :+ StringEntry(mA, kz)) :+ StringEntry(mv, bB)) ++ ka(bB, dp)._1)
30573059 }
30583060 }
30593061 }
30603062 }
30613063 else throw("Unknown entity type")
30623064 }
3063- $Tuple2(((mt :+ ScriptTransfer(N, li.amount, h)) ++ lh), 0)
3065+ $Tuple2(((mu :+ ScriptTransfer(O, lj.amount, i)) ++ li), 0)
30643066 }
30653067 }
30663068 }
30673069
30683070
30693071
3070-@Callable(gy)
3071-func setReferrals (mA,mB) = if ((gy.callerPublicKey != f))
3072+@Callable(gz)
3073+func setReferrals (mB,mC) = if ((gz.callerPublicKey != g))
30723074 then throw("Permission denied")
30733075 else {
3074- let lh = kN(gy)
3075- if ((size(gy.payments) != 0))
3076+ let li = kO(gz)
3077+ if ((size(gz.payments) != 0))
30763078 then throw("No payments required")
3077- else if (!(isDefined(addressFromString(mA))))
3078- then throw(("Invalid address: " + mA))
3079+ else if (!(isDefined(addressFromString(mB))))
3080+ then throw(("Invalid address: " + mB))
30793081 else {
3080- let mC = addressFromString(mB)
3081- if (!(isDefined(mC)))
3082- then throw(("Invalid address: " + mB))
3082+ let mD = addressFromString(mC)
3083+ if (!(isDefined(mD)))
3084+ then throw(("Invalid address: " + mC))
30833085 else {
3084- let mD = getString(au(mA))
3085- if (!(isDefined(mD)))
3086+ let mE = getString(av(mB))
3087+ if (!(isDefined(mE)))
30863088 then throw("oldPlayer didn't do any tx in game")
3087- else if ((0 >= wavesBalance(value(mC)).available))
3089+ else if ((0 >= wavesBalance(value(mD)).available))
30883090 then throw("newPlayer has no WAVES")
30893091 else {
3090- let mE = em()
3091- let mF = getString(mE)
3092- let mG = if (isDefined(mF))
3093- then split_4C(value(mF), "_")
3092+ let mF = en()
3093+ let mG = getString(mF)
3094+ let mH = if (isDefined(mG))
3095+ then split_4C(value(mG), "_")
30943096 else nil
3095- if (containsElement(mG, mB))
3096- then throw((mB + " is not newbie (already has referrals)"))
3097+ if (containsElement(mH, mC))
3098+ then throw((mC + " is not newbie (already has referrals)"))
30973099 else {
3098- let kc = bM(mB)
3099- let kd = getString(kc)
3100- if (if (isDefined(kd))
3101- then isDefined(addressFromString(value(kd)))
3100+ let kd = bN(mC)
3101+ let ke = getString(kd)
3102+ if (if (isDefined(ke))
3103+ then isDefined(addressFromString(value(ke)))
31023104 else false)
3103- then throw(((mB + " already has refBy: ") + value(kd)))
3105+ then throw(((mC + " already has refBy: ") + value(ke)))
31043106 else {
3105- let mH = bQ(mA)
3106- let mI = getString(mH)
3107- let mJ = if (isDefined(mI))
3108- then split_4C(value(mI), "_")
3107+ let mI = bR(mB)
3108+ let mJ = getString(mI)
3109+ let mK = if (isDefined(mJ))
3110+ then split_4C(value(mJ), "_")
31093111 else nil
3110- if (containsElement(mJ, mB))
3111- then throw((((mA + " already contains ") + mB) + " within referrals"))
3112+ if (containsElement(mK, mC))
3113+ then throw((((mB + " already contains ") + mC) + " within referrals"))
31123114 else {
3113- let mK = makeString_2C((mJ :+ mB), "_")
3114- let mL = if (containsElement(mG, mA))
3115- then value(mF)
3116- else makeString_2C((mG :+ mA), "_")
3117- $Tuple2(([StringEntry(kc, mA), StringEntry(mH, mK), StringEntry(mE, mL)] ++ lh), 0)
3115+ let mL = makeString_2C((mK :+ mC), "_")
3116+ let mM = if (containsElement(mH, mB))
3117+ then value(mG)
3118+ else makeString_2C((mH :+ mB), "_")
3119+ $Tuple2(([StringEntry(kd, mB), StringEntry(mI, mL), StringEntry(mF, mM)] ++ li), 0)
31183120 }
31193121 }
31203122 }
31253127
31263128
31273129
3128-@Callable(gy)
3129-func distributePoints (mM,mN,mO,mP,mQ) = {
3130- let lh = kN(gy)
3131- if ((size(gy.payments) != 0))
3130+@Callable(gz)
3131+func distributePoints (mN,mO,mP,mQ,mR) = {
3132+ let li = kO(gz)
3133+ if ((size(gz.payments) != 0))
31323134 then throw("No payments required")
31333135 else {
3134- let av = toString(gy.originCaller)
3135- let mR = an(invoke(P, "checkWlgXpREADONLY", [av], nil))
3136- let mS = al(mR[1])
3137- let mT = if ((0 >= mS))
3136+ let aw = toString(gz.originCaller)
3137+ let mS = ao(invoke(Q, "checkWlgXpREADONLY", [aw], nil))
3138+ let mT = am(mS[1])
3139+ let mU = if ((0 >= mT))
31383140 then $Tuple2(0, nil)
31393141 else {
3140- let jX = al(invoke(P, "takeWlgXp", [av], nil))
3141- if ((jX == jX))
3142- then $Tuple2(mS, [IntegerEntry(cW(av), al(mR[0])), IntegerEntry(cV(av), al(mR[2]))])
3142+ let jY = am(invoke(Q, "takeWlgXp", [aw], nil))
3143+ if ((jY == jY))
3144+ then $Tuple2(mT, [IntegerEntry(cX(aw), am(mS[0])), IntegerEntry(cW(aw), am(mS[2]))])
31433145 else throw("Strict value is not equal to itself.")
31443146 }
3145- let mU = mT._1
3146- let mV = mT._2
3147- let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
3148- let mW = cX(av)
3149- let mX = (valueOrElse(getInteger(mW), 0) + mU)
3150- let mY = cT(bO)
3151- let mZ = valueOrElse(getInteger(mY), 0)
3152- let na = (mX + mZ)
3153- let nb = ((((mM + mN) + mO) + mP) + mQ)
3154- if ((nb > na))
3155- then throw((("There are only " + toString(na)) + " free points to distribute"))
3147+ let mV = mU._1
3148+ let mW = mU._2
3149+ let bP = valueOrErrorMessage(getString(bT(aw)), "You don't have a duck staked")
3150+ let mX = cY(aw)
3151+ let mY = (valueOrElse(getInteger(mX), 0) + mV)
3152+ let mZ = cU(bP)
3153+ let na = valueOrElse(getInteger(mZ), 0)
3154+ let nb = (mY + na)
3155+ let nc = ((((mN + mO) + mP) + mQ) + mR)
3156+ if ((nc > nb))
3157+ then throw((("There are only " + toString(nb)) + " free points to distribute"))
31563158 else {
3157- let nc = cQ(bO)
3158- let dF = split(valueOrElse(getString(nc), "0_0_0_0_0"), "_")
3159- let nd = (mX - nb)
3160- $Tuple2((([IntegerEntry(mW, if ((0 > nd))
3159+ let nd = cR(bP)
3160+ let dG = split(valueOrElse(getString(nd), "0_0_0_0_0"), "_")
3161+ let ne = (mY - nc)
3162+ $Tuple2((([IntegerEntry(mX, if ((0 > ne))
31613163 then 0
3162- else nd), IntegerEntry(mY, if ((0 > nd))
3163- then (mZ + nd)
3164- else mZ), StringEntry(nc, makeString([toString((parseIntValue(dF[cF]) + mM)), toString((parseIntValue(dF[cG]) + mN)), toString((parseIntValue(dF[cH]) + mO)), toString((parseIntValue(dF[cI]) + mP)), toString((parseIntValue(dF[cJ]) + mQ))], "_"))] ++ lh) ++ mV), 0)
3164+ else ne), IntegerEntry(mZ, if ((0 > ne))
3165+ then (na + ne)
3166+ else na), StringEntry(nd, makeString([toString((parseIntValue(dG[cG]) + mN)), toString((parseIntValue(dG[cH]) + mO)), toString((parseIntValue(dG[cI]) + mP)), toString((parseIntValue(dG[cJ]) + mQ)), toString((parseIntValue(dG[cK]) + mR))], "_"))] ++ li) ++ mW), 0)
31653167 }
31663168 }
31673169 }
31683170
31693171
31703172
3171-@Callable(gy)
3172-func splitByGlobalWeightsREADONLY (eC) = $Tuple2(nil, eU(eC))
3173-
3174-
3175-
3176-@Callable(gy)
3177-func splitByGlobalAndLocalWeightsREADONLY (ne,nf,gB) = {
3178- let gu = gA(gB)
3179- $Tuple2(nil, $Tuple2(eU(ne), eF(nf, gu)))
3180- }
3181-
3182-
3183-
3184-@Callable(gy)
3185-func getBackpackREADONLY (bO) = $Tuple2(nil, makeString(hC(bT(bO)), ":"))
3186-
3187-
3188-
3189-@Callable(gy)
3190-func getWarehouseREADONLY (bI) = {
3191- let jm = value(assetInfo(fromBase58String(bI)))
3192- let hS = (aq(split(jm.description, "_")[T]) / p)
3193- let hT = valueOrElse(getInteger(bJ(bI)), 0)
3194- $Tuple2(nil, makeString_2C(hQ(bH(bI), hS, hT), ":"))
3195- }
3196-
3197-
3198-
3199-@Callable(gy)
3200-func saveLastTx () = if (!(containsElement([P, N, Q, R], gy.caller)))
3173+@Callable(gz)
3174+func splitByGlobalWeightsREADONLY (eD) = $Tuple2(nil, eV(eD))
3175+
3176+
3177+
3178+@Callable(gz)
3179+func splitByGlobalAndLocalWeightsREADONLY (nf,ng,gC) = {
3180+ let gv = gB(gC)
3181+ $Tuple2(nil, $Tuple2(eV(nf), eG(ng, gv)))
3182+ }
3183+
3184+
3185+
3186+@Callable(gz)
3187+func getBackpackREADONLY (bP) = $Tuple2(nil, makeString(hD(bU(bP)), ":"))
3188+
3189+
3190+
3191+@Callable(gz)
3192+func getWarehouseREADONLY (bJ) = {
3193+ let jn = value(assetInfo(fromBase58String(bJ)))
3194+ let hT = (ar(split(jn.description, "_")[U]) / q)
3195+ let hU = valueOrElse(getInteger(bK(bJ)), 0)
3196+ $Tuple2(nil, makeString_2C(hR(bI(bJ), hT, hU), ":"))
3197+ }
3198+
3199+
3200+
3201+@Callable(gz)
3202+func saveLastTx () = if (!(containsElement([Q, O, R, S], gz.caller)))
32013203 then throw("Access denied")
3202- else $Tuple2(kN(gy), 42)
3203-
3204-
3205-
3206-@Callable(gy)
3207-func updateDuckStats (bO,jX) = if ((gy.caller != N))
3204+ else $Tuple2(kO(gz), 42)
3205+
3206+
3207+
3208+@Callable(gz)
3209+func updateDuckStats (bP,jY) = if ((gz.caller != O))
32083210 then throw("Access denied")
3209- else jZ(bO, jX)
3210-
3211-
3212-
3213-@Callable(gy)
3214-func updateAccStats (av,jX) = if (!(containsElement([P, N, R], gy.caller)))
3211+ else ka(bP, jY)
3212+
3213+
3214+
3215+@Callable(gz)
3216+func updateAccStats (aw,jY) = if (!(containsElement([Q, O, S], gz.caller)))
32153217 then throw("Access denied")
3216- else ka(av, jX)
3217-
3218-
3219-
3220-@Callable(gy)
3221-func equipDuck (ng) = {
3222- let lh = kN(gy)
3223- if ((size(gy.payments) != 0))
3218+ else kb(aw, jY)
3219+
3220+
3221+
3222+@Callable(gz)
3223+func equipDuck (nh) = {
3224+ let li = kO(gz)
3225+ if ((size(gz.payments) != 0))
32243226 then throw("No payments required")
32253227 else {
3226- let av = toString(gy.originCaller)
3227- let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
3228- if (kk(bO))
3228+ let aw = toString(gz.originCaller)
3229+ let bP = valueOrErrorMessage(getString(bT(aw)), "You don't have a duck staked")
3230+ if (kl(bP))
32293231 then throw("equipDuck_checkTournament")
32303232 else {
3231- let gk = cU(bO)
3232- let lb = split(valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3233- let hD = bT(bO)
3234- let ih = hC(hD)
3235- let lF = split(ng, "_")
3236- if ((size(lF) != cL))
3233+ let gl = cV(bP)
3234+ let lc = split(valueOrElse(getString(gl), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3235+ let hE = bU(bP)
3236+ let ii = hD(hE)
3237+ let lG = split(nh, "_")
3238+ if ((size(lG) != cM))
32373239 then throw("Wrong equipment string")
32383240 else {
3239- let gn = gc(lb, fr(ih[bv]), true, nil)
3240- let go = split(lF[cK], ";")[1]
3241- let dD = if ((go == ""))
3241+ let go = gd(lc, fs(ii[bw]), true, nil)
3242+ let gp = split(lG[cL], ";")[1]
3243+ let dE = if ((gp == ""))
32423244 then 0
32433245 else {
3244- let gp = split(go, ",")[0]
3245- if ((gp == ""))
3246+ let gq = split(gp, ",")[0]
3247+ if ((gq == ""))
32463248 then 0
32473249 else {
3248- let fG = split(gp, ":")
3249- let K = fG[0]
3250- let gq = fG[1]
3251- if (if (if (if (if ((K == "06"))
3250+ let fH = split(gq, ":")
3251+ let L = fH[0]
3252+ let gr = fH[1]
3253+ if (if (if (if (if ((L == "06"))
32523254 then true
3253- else (K == "07"))
3255+ else (L == "07"))
32543256 then true
3255- else (K == "08"))
3256- then (gq != "")
3257+ else (L == "08"))
3258+ then (gr != "")
32573259 else false)
3258- then (parseIntValue(gq) > 0)
3260+ then (parseIntValue(gr) > 0)
32593261 else false)
3260- then parseIntValue(split(bd[parseIntValue(K)], "_")[bf])
3262+ then parseIntValue(split(be[parseIntValue(L)], "_")[bg])
32613263 else 0
32623264 }
32633265 }
3264- let fX = dC(this, bO, dD, true)
3265- let gr = gc(lF, gn, false, fX)
3266- let lc = fw(gr)
3267- $Tuple2(([StringEntry(gk, ng), StringEntry(hD, makeString_2C([ih[bs], ih[bt], ih[bu], lc], ":")), StringEntry(da(bO), makeString([toString(fX[7]), toString(fX[8]), toString(fX[9]), toString(fX[10]), toString(fX[11])], "_"))] ++ lh), 0)
3266+ let fY = dD(this, bP, dE, true)
3267+ let gs = gd(lG, go, false, fY)
3268+ let ld = fx(gs)
3269+ $Tuple2(([StringEntry(gl, nh), StringEntry(hE, makeString_2C([ii[bt], ii[bu], ii[bv], ld], ":")), StringEntry(db(bP), makeString([toString(fY[7]), toString(fY[8]), toString(fY[9]), toString(fY[10]), toString(fY[11])], "_"))] ++ li), 0)
32683270 }
32693271 }
32703272 }
32723274
32733275
32743276
3275-@Callable(gy)
3276-func initDuckTourAttempt (bO) = if ((gy.caller != Q))
3277+@Callable(gz)
3278+func initDuckTourAttempt (bP) = if ((gz.caller != R))
32773279 then throw("Access denied")
32783280 else {
3279- let iV = cP(bO)
3280- let iW = dw(valueOrElse(getInteger(cS(bO)), 0))
3281- let lz = valueOrElse(getInteger(iV), iW)
3282- let nh = bU(bO)
3283- let jk = valueOrElse(getString(nh), aQ)
3284- let co = valueOrElse(getInteger(Q, bZ), 0)
3285- let ni = (toString(co) + "_T_0")
3286- $Tuple2([IntegerEntry(cY(bO), lz), IntegerEntry(iV, iW), StringEntry(cZ(bO), jk), StringEntry(nh, ni)], ni)
3287- }
3288-
3289-
3290-
3291-@Callable(gy)
3281+ let iW = cQ(bP)
3282+ let iX = dx(valueOrElse(getInteger(cT(bP)), 0))
3283+ let lA = valueOrElse(getInteger(iW), iX)
3284+ let ni = bV(bP)
3285+ let jl = valueOrElse(getString(ni), aR)
3286+ let cp = valueOrElse(getInteger(R, ca), 0)
3287+ let nj = (toString(cp) + "_T_0")
3288+ $Tuple2([IntegerEntry(cZ(bP), lA), IntegerEntry(iW, iX), StringEntry(da(bP), jl), StringEntry(ni, nj)], nj)
3289+ }
3290+
3291+
3292+
3293+@Callable(gz)
32923294 func breakAttempt () = {
3293- let lh = kN(gy)
3294- let bO = valueOrErrorMessage(getString(bS(toString(gy.caller))), "You don't have a duck staked")
3295- let nh = bU(bO)
3296- let jk = valueOrElse(getString(nh), aQ)
3297- if ((split(jk, "_")[bx] != "T"))
3295+ let li = kO(gz)
3296+ let bP = valueOrErrorMessage(getString(bT(toString(gz.caller))), "You don't have a duck staked")
3297+ let ni = bV(bP)
3298+ let jl = valueOrElse(getString(ni), aR)
3299+ if ((split(jl, "_")[by] != "T"))
32983300 then throw("Your duck is not in the tournament")
32993301 else {
3300- let nj = getIntegerValue(cY(bO))
3301- let nk = getStringValue(cZ(bO))
3302- $Tuple2(((lh :+ IntegerEntry(cP(bO), nj)) :+ StringEntry(nh, nk)), jk)
3303- }
3304- }
3305-
3306-
3307-
3308-@Callable(gy)
3309-func breakAttemptCallback () = if ((gy.caller != Q))
3302+ let nk = getIntegerValue(cZ(bP))
3303+ let nl = getStringValue(da(bP))
3304+ $Tuple2(((li :+ IntegerEntry(cQ(bP), nk)) :+ StringEntry(ni, nl)), jl)
3305+ }
3306+ }
3307+
3308+
3309+
3310+@Callable(gz)
3311+func breakAttemptCallback () = if ((gz.caller != R))
33103312 then throw("Access denied")
33113313 else {
3312- let bO = valueOrErrorMessage(getString(bS(toString(gy.originCaller))), "You don't have a duck staked")
3313- $Tuple2([IntegerEntry(cP(bO), getIntegerValue(cY(bO))), StringEntry(bU(bO), getStringValue(cZ(bO)))], "breakAttemptCallback")
3314- }
3315-
3316-
3317-
3318-@Callable(gy)
3319-func exitTournamentInternal (bO) = if ((gy.caller != this))
3314+ let bP = valueOrErrorMessage(getString(bT(toString(gz.originCaller))), "You don't have a duck staked")
3315+ $Tuple2([IntegerEntry(cQ(bP), getIntegerValue(cZ(bP))), StringEntry(bV(bP), getStringValue(da(bP)))], "breakAttemptCallback")
3316+ }
3317+
3318+
3319+
3320+@Callable(gz)
3321+func exitTournamentInternal (bP) = if ((gz.caller != this))
33203322 then throw("Access denied")
33213323 else {
3322- let nj = getIntegerValue(cY(bO))
3323- let nk = getStringValue(cZ(bO))
3324- $Tuple2([IntegerEntry(cP(bO), nj), StringEntry(bU(bO), nk)], false)
3325- }
3326-
3327-
3328-
3329-@Callable(gy)
3330-func processDelivery (bO) = if ((gy.caller != this))
3324+ let nk = getIntegerValue(cZ(bP))
3325+ let nl = getStringValue(da(bP))
3326+ $Tuple2([IntegerEntry(cQ(bP), nk), StringEntry(bV(bP), nl)], false)
3327+ }
3328+
3329+
3330+
3331+@Callable(gz)
3332+func processDelivery (bP) = if ((gz.caller != this))
33313333 then throw("Access denied")
33323334 else {
3333- let av = toString(gy.originCaller)
3334- let nl = valueOrElse(getInteger(N, bY), 0)
3335- if ((aT > nl))
3336- then throw(("Delivery is not available, fund=" + aw(nl, 6)))
3335+ let aw = toString(gz.originCaller)
3336+ let nm = valueOrElse(getInteger(O, bZ), 0)
3337+ if ((aU > nm))
3338+ then throw(("Delivery is not available, fund=" + ax(nm, 6)))
33373339 else {
3338- let cq = lastBlock.timestamp
3339- let nm = dg(av)
3340- let nn = valueOrElse(getInteger(dh(av)), 0)
3341- let no = (cq / dJ)
3342- let fM = if ((nn == no))
3343- then valueOrElse(getInteger(nm), 0)
3340+ let cr = lastBlock.timestamp
3341+ let nn = dh(aw)
3342+ let no = valueOrElse(getInteger(di(aw)), 0)
3343+ let np = (cr / dK)
3344+ let fN = if ((no == np))
3345+ then valueOrElse(getInteger(nn), 0)
33443346 else 0
3345- let np = valueOrElse(getInteger(R, dL(av)), 0)
3346- let nq = (aY + (np / aZ))
3347- if ((fM >= nq))
3348- then throw((("You already used " + toString(nq)) + " delivery attempts for today"))
3347+ let nq = valueOrElse(getInteger(S, dM(aw)), 0)
3348+ let nr = (aZ + (nq / ba))
3349+ if ((fN >= nr))
3350+ then throw((("You already used " + toString(nr)) + " delivery attempts for today"))
33493351 else {
3350- let nr = df(bO)
3351- let ns = invoke(N, "sendDeliveryReward", [av], nil)
3352- $Tuple2([IntegerEntry(nm, (fM + 1)), IntegerEntry(dh(av), no), IntegerEntry(nr, (valueOrElse(getInteger(nr), 0) + 1))], ns)
3352+ let ns = dg(bP)
3353+ let nt = invoke(O, "sendDeliveryReward", [aw], nil)
3354+ $Tuple2([IntegerEntry(nn, (fN + 1)), IntegerEntry(di(aw), np), IntegerEntry(ns, (valueOrElse(getInteger(ns), 0) + 1))], nt)
33533355 }
33543356 }
33553357 }
33563358
33573359
33583360
3359-@Callable(gy)
3360-func robLand (iK,iL) = {
3361- let lh = kN(gy)
3362- if ((size(gy.payments) != 1))
3361+@Callable(gz)
3362+func robLand (iL,iM) = {
3363+ let li = kO(gz)
3364+ if ((size(gz.payments) != 1))
33633365 then throw("exactly 1 payment must be attached")
33643366 else {
3365- let li = gy.payments[0]
3366- let nt = li.amount
3367- if (if (!(isDefined(li.assetId)))
3367+ let lj = gz.payments[0]
3368+ let nu = lj.amount
3369+ if (if (!(isDefined(lj.assetId)))
33683370 then true
3369- else (value(li.assetId) != X))
3371+ else (value(lj.assetId) != Y))
33703372 then throw("WLGOLD payments only!")
3371- else if ((nt != aV))
3372- then throw((("Payment should be " + aw(aV, 8)) + " WLGOLD"))
3373+ else if ((nu != aW))
3374+ then throw((("Payment should be " + ax(aW, 8)) + " WLGOLD"))
33733375 else {
3374- let av = toString(gy.caller)
3375- if (!(sigVerify_8Kb(iK, iL, f)))
3376+ let aw = toString(gz.caller)
3377+ if (!(sigVerify_8Kb(iL, iM, g)))
33763378 then throw("signature does not match")
33773379 else {
3378- let fj = split_4C(toUtf8String(iK), ";")
3379- let nu = split_4C(fj[0], "|")
3380- let iN = split(nu[ev], "_")
3381- let iO = parseIntValue(iN[0])
3382- let iP = parseIntValue(iN[1])
3383- let iZ = nu[ew]
3384- let nv = split(fj[1], "|")
3385- let nw = nv[ex]
3386- if ((nw != "B"))
3380+ let fk = split_4C(toUtf8String(iL), ";")
3381+ let nv = split_4C(fk[0], "|")
3382+ let iO = split(nv[ew], "_")
3383+ let iP = parseIntValue(iO[0])
3384+ let iQ = parseIntValue(iO[1])
3385+ let ja = nv[ex]
3386+ let nw = split(fk[1], "|")
3387+ let nx = nw[ey]
3388+ if ((nx != "B"))
33873389 then throw("Only bank robbery is supported")
33883390 else {
3389- let iS = parseIntValue(nv[ez])
3390- if (if ((iS > (lastBlock.timestamp + dO)))
3391+ let iT = parseIntValue(nw[eA])
3392+ if (if ((iT > (lastBlock.timestamp + dP)))
33913393 then true
3392- else ((lastBlock.timestamp - dO) > iS))
3393- then throw(((("signature outdated: logTime=" + toString(iS)) + ", bcTime=") + toString(lastBlock.timestamp)))
3394+ else ((lastBlock.timestamp - dP) > iT))
3395+ then throw(((("signature outdated: logTime=" + toString(iT)) + ", bcTime=") + toString(lastBlock.timestamp)))
33943396 else {
3395- let iT = nv[ey]
3396- let iU = valueOrElse(getString(au(av)), "")
3397- if ((iU != iT))
3398- then throw(((("Tx ids don't match! In state: " + iU) + ", in msg: ") + iT))
3397+ let iU = nw[ez]
3398+ let iV = valueOrElse(getString(av(aw)), "")
3399+ if ((iV != iU))
3400+ then throw(((("Tx ids don't match! In state: " + iV) + ", in msg: ") + iU))
33993401 else {
3400- let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
3401- let gk = cU(bO)
3402- let lD = valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,")
3403- let nx = fe(lD, iZ)
3404- let lF = nx._1
3405- let lG = nx._2
3406- let ny = nx._3
3407- let jk = valueOrElse(getString(bU(bO)), aQ)
3408- if (cm(Q, jk))
3402+ let bP = valueOrErrorMessage(getString(bT(aw)), "You don't have a duck staked")
3403+ let gl = cV(bP)
3404+ let lE = valueOrElse(getString(gl), ",;,_,;,_,;,_,;,_,;,_,;,")
3405+ let ny = ff(lE, ja)
3406+ let lG = ny._1
3407+ let lH = ny._2
3408+ let nz = ny._3
3409+ let jl = valueOrElse(getString(bV(bP)), aR)
3410+ if (cn(R, jl))
34093411 then throw("Your duck is taking part in the tournament")
34103412 else {
3411- let cq = lastBlock.timestamp
3412- let nm = dd(av)
3413- let nn = valueOrElse(getInteger(de(av)), 0)
3414- let no = (cq / dJ)
3415- let fM = if ((nn == no))
3416- then valueOrElse(getInteger(nm), 0)
3413+ let cr = lastBlock.timestamp
3414+ let nn = de(aw)
3415+ let no = valueOrElse(getInteger(df(aw)), 0)
3416+ let np = (cr / dK)
3417+ let fN = if ((no == np))
3418+ then valueOrElse(getInteger(nn), 0)
34173419 else 0
3418- let np = valueOrElse(getInteger(R, dL(av)), 0)
3419- let nz = (aW + (np / aX))
3420- if ((fM >= nz))
3421- then throw((("You already used " + toString(nz)) + " robbery attempts for today"))
3420+ let nq = valueOrElse(getInteger(S, dM(aw)), 0)
3421+ let nA = (aX + (nq / aY))
3422+ if ((fN >= nA))
3423+ then throw((("You already used " + toString(nA)) + " robbery attempts for today"))
34223424 else {
3423- let nr = dc(bO)
3424- let nA = if ((iP > 0))
3425+ let ns = dd(bP)
3426+ let nB = if ((iQ > 0))
34253427 then {
3426- let nl = assetBalance(this, X)
3427- let nB = if (ny)
3428- then (2 * aV)
3429- else (5 * aV)
3430- if ((nB > nl))
3431- then throw(((("Robbery is not available, funds = " + aw(nl, 8)) + " WLGOLD, required = ") + aw(nB, 8)))
3432- else [ScriptTransfer(gy.caller, nB, X)]
3428+ let nm = assetBalance(this, Y)
3429+ let nC = if (nz)
3430+ then (2 * aW)
3431+ else (5 * aW)
3432+ if ((nC > nm))
3433+ then throw(((("Robbery is not available, funds = " + ax(nm, 8)) + " WLGOLD, required = ") + ax(nC, 8)))
3434+ else [ScriptTransfer(gz.caller, nC, Y)]
34333435 }
34343436 else nil
3435- $Tuple2((((((((((lh ++ nA) ++ (if (lG)
3436- then [StringEntry(da(bO), "0_0_0_0_0")]
3437- else nil)) ++ jZ(bO, if ((iP > 0))
3438- then dl
3439- else dm)._1) :+ IntegerEntry(db(bO), cq)) :+ IntegerEntry(nm, (fM + 1))) :+ IntegerEntry(de(av), no)) :+ IntegerEntry(nr, (valueOrElse(getInteger(nr), 0) + 1))) :+ StringEntry(gk, lF)) :+ IntegerEntry(cP(bO), max([iP, 0]))), 0)
3437+ $Tuple2((((((((((li ++ nB) ++ (if (lH)
3438+ then [StringEntry(db(bP), "0_0_0_0_0")]
3439+ else nil)) ++ ka(bP, if ((iQ > 0))
3440+ then dm
3441+ else dn)._1) :+ IntegerEntry(dc(bP), cr)) :+ IntegerEntry(nn, (fN + 1))) :+ IntegerEntry(df(aw), np)) :+ IntegerEntry(ns, (valueOrElse(getInteger(ns), 0) + 1))) :+ StringEntry(gl, lG)) :+ IntegerEntry(cQ(bP), max([iQ, 0]))), 0)
34403442 }
34413443 }
34423444 }
34493451
34503452
34513453
3452-@Callable(gy)
3454+@Callable(gz)
34533455 func buyRoboDuck () = if (!(c))
34543456 then throw("Feature is turned off")
34553457 else {
3456- let lh = kN(gy)
3457- if ((size(gy.payments) != 1))
3458+ let li = kO(gz)
3459+ if ((size(gz.payments) != 1))
34583460 then throw("Exactly one payment required")
34593461 else {
3460- let li = value(gy.payments[0])
3461- if ((li.assetId != h))
3462+ let lj = value(gz.payments[0])
3463+ if ((lj.assetId != i))
34623464 then throw("Allowed USDT payment only!")
3463- else if ((li.amount != dU))
3464- then throw((("Payment attached should be " + aw(dU, 6)) + " USDT"))
3465+ else if ((lj.amount != dV))
3466+ then throw((("Payment attached should be " + ax(dV, 6)) + " USDT"))
34653467 else {
3466- let nC = valueOrElse(getInteger(en()), 0)
3467- let nD = toBytes(nC)
3468- let ef = ((aK + "-") + takeRight(toBase16String(nD), 8))
3469- let nE = takeRight(toBase16String(sha256_16Kb(nD)), 6)
3470- let iH = Issue(ef, ("Robo Duck NFT for WavesLands game, background color = #" + nE), 1, 0, false)
3471- let bA = calculateAssetId(iH)
3472- $Tuple2(((((lh :+ IntegerEntry(en(), (nC + 1))) :+ iH) :+ ScriptTransfer(gy.originCaller, 1, bA)) :+ ScriptTransfer(N, li.amount, h)), $Tuple2(toBase58String(bA), nE))
3468+ let nD = valueOrElse(getInteger(eo()), 0)
3469+ let nE = toBytes(nD)
3470+ let eg = ((aL + "-") + takeRight(toBase16String(nE), 8))
3471+ let nF = takeRight(toBase16String(sha256_16Kb(nE)), 6)
3472+ let iI = Issue(eg, ("Robo Duck NFT for WavesLands game, background color = #" + nF), 1, 0, false)
3473+ let bB = calculateAssetId(iI)
3474+ $Tuple2(((((li :+ IntegerEntry(eo(), (nD + 1))) :+ iI) :+ ScriptTransfer(gz.originCaller, 1, bB)) :+ ScriptTransfer(O, lj.amount, i)), $Tuple2(toBase58String(bB), nF))
34733475 }
34743476 }
34753477 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = false
55
66 let b = false
77
88 let c = false
99
1010 let d = 86400000
1111
12-let e = take(drop(this.bytes, 1), 1)
13-
14-let f = {
15- let g = e
16- if ((base58'2W' == g))
12+let e = 1727740799000
13+
14+let f = take(drop(this.bytes, 1), 1)
15+
16+let g = {
17+ let h = f
18+ if ((base58'2W' == h))
1719 then if (a)
1820 then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm'
1921 else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
20- else if ((base58'2T' == g))
22+ else if ((base58'2T' == h))
2123 then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
2224 else throw("Unknown chain")
2325 }
2426
25-let h = {
26- let g = e
27- if ((base58'2W' == g))
27+let i = {
28+ let h = f
29+ if ((base58'2W' == h))
2830 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
29- else if ((base58'2T' == g))
31+ else if ((base58'2T' == h))
3032 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
3133 else throw("Unknown chain")
3234 }
3335
34-let i = {
35- let g = e
36- if ((base58'2W' == g))
36+let j = {
37+ let h = f
38+ if ((base58'2W' == h))
3739 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
38- else if ((base58'2T' == g))
40+ else if ((base58'2T' == h))
3941 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
4042 else throw("Unknown chain")
4143 }
4244
43-let j = {
44- let g = e
45- if ((base58'2W' == g))
45+let k = {
46+ let h = f
47+ if ((base58'2W' == h))
4648 then "3P4UH3T9nXpMNpUmSmQjPmEz3G85t3zn6eA"
47- else if ((base58'2T' == g))
49+ else if ((base58'2T' == h))
4850 then "3NBPx1Fciu3JQNEGZ21jSnTdutLNGGBUSXh"
4951 else throw("Unknown chain")
5052 }
5153
52-let k = {
53- let g = e
54- if ((base58'2W' == g))
54+let l = {
55+ let h = f
56+ if ((base58'2W' == h))
5557 then 10000000000
56- else if ((base58'2T' == g))
58+ else if ((base58'2T' == h))
5759 then 100000000
5860 else throw("Unknown chain")
5961 }
6062
61-let l = {
62- let g = e
63- if ((base58'2W' == g))
63+let m = {
64+ let h = f
65+ if ((base58'2W' == h))
6466 then d
65- else if ((base58'2T' == g))
67+ else if ((base58'2T' == h))
6668 then 60000
6769 else throw("Unknown chain")
6870 }
6971
70-let m = "__"
71-
72-let n = 1000000
73-
74-let o = 100000000
75-
76-let p = 25
77-
78-let q = 100
79-
80-let r = 225
81-
82-let s = 400
83-
84-let t = 625
85-
86-let u = [0, 1, 2, 3, 4, 5]
87-
88-func v (w,x) = valueOrErrorMessage(getString(w, x), makeString(["mandatory ", toString(w), ".", x, " is not defined"], ""))
89-
90-
91-let y = 1
92-
93-let z = 2
94-
95-let A = 3
96-
97-let B = 4
98-
99-let C = 7
100-
101-let D = 8
102-
103-func E () = "%s__restConfig"
104-
105-
106-func F () = "%s__restAddr"
107-
108-
109-func G (H) = split_4C(v(H, E()), m)
110-
111-
112-func I (J,K) = valueOrErrorMessage(addressFromString(J[K]), ("Rest cfg doesn't contain address at index " + toString(K)))
113-
114-
115-let L = addressFromStringValue(valueOrElse(getString(this, F()), i))
116-
117-let J = G(L)
118-
119-let M = I(J, y)
120-
121-let N = I(J, z)
122-
123-let O = I(J, A)
124-
125-let P = I(J, B)
126-
127-let Q = I(J, C)
128-
129-let R = I(J, D)
130-
131-let S = 0
132-
133-let T = 1
134-
135-let U = 2
136-
137-let V = 3
138-
139-let W = "wlg_assetId"
140-
141-let X = valueOrErrorMessage(getBinary(P, W), "WLGOLD is not issued yet")
142-
143-let Y = "acresAssetId"
144-
145-let Z = valueOrErrorMessage(getBinary(R, Y), "ACRES is not issued yet")
146-
147-let aa = 2
148-
149-func ab (w) = ("finishBlockFor_" + w)
150-
151-
152-func ac () = "resTypesProportions"
153-
154-
155-func ad (ae) = ("resTypesByContinent_" + ae)
156-
157-
158-func af (ag) = ("stakedLandsByOwner_" + ag)
159-
160-
161-func ah (ag) = ("stakedPiecesByOwner_" + ag)
162-
163-
164-func ai (aj) = {
165- let g = aj
166- if ($isInstanceOf(g, "String"))
72+let n = "__"
73+
74+let o = 1000000
75+
76+let p = 100000000
77+
78+let q = 25
79+
80+let r = 100
81+
82+let s = 225
83+
84+let t = 400
85+
86+let u = 625
87+
88+let v = [0, 1, 2, 3, 4, 5]
89+
90+func w (x,y) = valueOrErrorMessage(getString(x, y), makeString(["mandatory ", toString(x), ".", y, " is not defined"], ""))
91+
92+
93+let z = 1
94+
95+let A = 2
96+
97+let B = 3
98+
99+let C = 4
100+
101+let D = 7
102+
103+let E = 8
104+
105+func F () = "%s__restConfig"
106+
107+
108+func G () = "%s__restAddr"
109+
110+
111+func H (I) = split_4C(w(I, F()), n)
112+
113+
114+func J (K,L) = valueOrErrorMessage(addressFromString(K[L]), ("Rest cfg doesn't contain address at index " + toString(L)))
115+
116+
117+let M = addressFromStringValue(valueOrElse(getString(this, G()), j))
118+
119+let K = H(M)
120+
121+let N = J(K, z)
122+
123+let O = J(K, A)
124+
125+let P = J(K, B)
126+
127+let Q = J(K, C)
128+
129+let R = J(K, D)
130+
131+let S = J(K, E)
132+
133+let T = 0
134+
135+let U = 1
136+
137+let V = 2
138+
139+let W = 3
140+
141+let X = "wlg_assetId"
142+
143+let Y = valueOrErrorMessage(getBinary(Q, X), "WLGOLD is not issued yet")
144+
145+let Z = "acresAssetId"
146+
147+let aa = valueOrErrorMessage(getBinary(S, Z), "ACRES is not issued yet")
148+
149+let ab = 2
150+
151+func ac (x) = ("finishBlockFor_" + x)
152+
153+
154+func ad () = "resTypesProportions"
155+
156+
157+func ae (af) = ("resTypesByContinent_" + af)
158+
159+
160+func ag (ah) = ("stakedLandsByOwner_" + ah)
161+
162+
163+func ai (ah) = ("stakedPiecesByOwner_" + ah)
164+
165+
166+func aj (ak) = {
167+ let h = ak
168+ if ($isInstanceOf(h, "String"))
167169 then {
168- let ak = g
169- ak
170+ let al = h
171+ al
170172 }
171173 else throw("fail to cast into String")
172174 }
173175
174176
175-func al (aj) = {
176- let g = aj
177- if ($isInstanceOf(g, "Int"))
177+func am (ak) = {
178+ let h = ak
179+ if ($isInstanceOf(h, "Int"))
178180 then {
179- let am = g
180- am
181+ let an = h
182+ an
181183 }
182184 else throw("fail to cast into Int")
183185 }
184186
185187
186-func an (aj) = {
187- let g = aj
188- if ($isInstanceOf(g, "List[Any]"))
188+func ao (ak) = {
189+ let h = ak
190+ if ($isInstanceOf(h, "List[Any]"))
189191 then {
190- let ao = g
191- ao
192+ let ap = h
193+ ap
192194 }
193195 else throw("fail to cast into List[Any]")
194196 }
195197
196198
197-func ap (aj) = {
198- let g = aj
199- if ($isInstanceOf(g, "Boolean"))
199+func aq (ak) = {
200+ let h = ak
201+ if ($isInstanceOf(h, "Boolean"))
200202 then {
201- let ak = g
202- ak
203+ let al = h
204+ al
203205 }
204206 else throw("fail to cast into Boolean")
205207 }
206208
207209
208-func aq (ar) = {
209- let g = ar
210- if (("S" == g))
211- then p
212- else if (("M" == g))
213- then q
214- else if (("L" == g))
215- then r
216- else if (("XL" == g))
217- then s
218- else if (("XXL" == g))
219- then t
210+func ar (as) = {
211+ let h = as
212+ if (("S" == h))
213+ then q
214+ else if (("M" == h))
215+ then r
216+ else if (("L" == h))
217+ then s
218+ else if (("XL" == h))
219+ then t
220+ else if (("XXL" == h))
221+ then u
220222 else throw("Unknown land size")
221223 }
222224
223225
224-func as (ak) = isDefined(parseInt(ak))
225-
226-
227-func at () = "contractsBlocked"
228-
229-
230-func au (av) = ("lastTxIdByUser_" + av)
231-
232-
233-func aw (ax,ay) = {
234- let az = pow(10, 0, ay, 0, 0, DOWN)
235- let aA = toString((ax % az))
236- let aB = drop(toString(az), (1 + size(aA)))
237- (((toString((ax / az)) + ".") + aB) + aA)
238- }
239-
240-
241-func aC (aD,aE,aF) = if ((0 >= aD))
226+func at (al) = isDefined(parseInt(al))
227+
228+
229+func au () = "contractsBlocked"
230+
231+
232+func av (aw) = ("lastTxIdByUser_" + aw)
233+
234+
235+func ax (ay,az) = {
236+ let aA = pow(10, 0, az, 0, 0, DOWN)
237+ let aB = toString((ay % aA))
238+ let aC = drop(toString(aA), (1 + size(aB)))
239+ (((toString((ay / aA)) + ".") + aC) + aB)
240+ }
241+
242+
243+func aD (aE,aF,aG) = if ((0 >= aE))
242244 then throw("maxValue should be > 0")
243245 else {
244- let aG = sha256((aE + aF))
245- (toInt(aG) % aD)
246- }
247-
248-
249-func aH () = min([lastBlock.timestamp, 1727740799000])
250-
251-
252-let aI = "LAND"
253-
254-let aJ = "DUCK"
255-
256-let aK = "ROBO"
257-
258-let aL = "PRESALE"
259-
260-let aM = 6
261-
262-let aN = 25
263-
264-let aO = 3456000
265-
266-let aP = 10000000000
267-
268-let aQ = "Africa_F_Africa"
269-
270-let aR = 39637
271-
272-let aS = 10
273-
274-let aT = 50000
275-
276-let aU = 10
277-
278-let aV = 100000000
279-
280-let aW = 0
281-
282-let aX = 200000000
283-
284-let aY = 0
285-
286-let aZ = 200000000
287-
288-let ba = ["First Aid Kit L1", "First Aid Kit L2", "First Aid Kit L3", "Backpack L1", "Backpack L2", "Backpack L3", "Food Ration L1", "Food Ration L2", "Food Ration L3", "Jet Pack L1", "Jet Pack L2", "Jet Pack L3", "Shield L1", "Shield L2", "Shield L3", "Mine L1", "Mine L2", "Mine L3", "Trap L1", "Trap L2", "Trap L3", "Boom-Dog L1", "Boom-Dog L2", "Boom-Dog L3"]
289-
290-let bb = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
291-
292-let bc = 10000000
293-
294-let bd = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_10_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_20_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_30_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_2,1,3,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_5,2,8,0,0,0,0_", "23_23_5_20_23_6_35_2_100_0,0,0,0,0,0,0_", "23_23_5_20_23_6_70_2_150_0,0,0,0,0,0,0_", "23_23_5_20_23_6_105_2_200_0,0,0,0,0,0,0_"]
295-
296-let be = 6
297-
298-let bf = 8
299-
300-let bg = 9
301-
302-let bh = 10
246+ let aH = sha256((aF + aG))
247+ (toInt(aH) % aE)
248+ }
249+
250+
251+func aI () = min([lastBlock.timestamp, e])
252+
253+
254+let aJ = "LAND"
255+
256+let aK = "DUCK"
257+
258+let aL = "ROBO"
259+
260+let aM = "PRESALE"
261+
262+let aN = 6
263+
264+let aO = 25
265+
266+let aP = 3456000
267+
268+let aQ = 10000000000
269+
270+let aR = "Africa_F_Africa"
271+
272+let aS = 39637
273+
274+let aT = 10
275+
276+let aU = 50000
277+
278+let aV = 10
279+
280+let aW = 100000000
281+
282+let aX = 0
283+
284+let aY = 200000000
285+
286+let aZ = 0
287+
288+let ba = 200000000
289+
290+let bb = ["First Aid Kit L1", "First Aid Kit L2", "First Aid Kit L3", "Backpack L1", "Backpack L2", "Backpack L3", "Food Ration L1", "Food Ration L2", "Food Ration L3", "Jet Pack L1", "Jet Pack L2", "Jet Pack L3", "Shield L1", "Shield L2", "Shield L3", "Mine L1", "Mine L2", "Mine L3", "Trap L1", "Trap L2", "Trap L3", "Boom-Dog L1", "Boom-Dog L2", "Boom-Dog L3"]
291+
292+let bc = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
293+
294+let bd = 10000000
295+
296+let be = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_10_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_20_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_30_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_2,1,3,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_5,2,8,0,0,0,0_", "23_23_5_20_23_6_35_2_100_0,0,0,0,0,0,0_", "23_23_5_20_23_6_70_2_150_0,0,0,0,0,0,0_", "23_23_5_20_23_6_105_2_200_0,0,0,0,0,0,0_"]
297+
298+let bf = 6
299+
300+let bg = 8
301+
302+let bh = 9
303303
304304 let bi = 10
305305
306-let bj = 0
307-
308-let bk = 1
309-
310-let bl = 2
311-
312-let bm = 3
313-
314-let bn = 4
315-
316-let bo = 0
317-
318-let bp = 1
319-
320-let bq = 2
321-
322-let br = 3
323-
324-let bs = 0
325-
326-let bt = 1
327-
328-let bu = 2
329-
330-let bv = 3
331-
332-let bw = 0
333-
334-let bx = 1
335-
336-let by = 2
337-
338-func bz (bA) = ("no_" + bA)
339-
340-
341-func bB (bA) = ("lcna_" + bA)
342-
343-
344-func bC (bA) = ("st_" + bA)
345-
346-
347-func bD (bE,bA) = makeString(["las", bE, bA], "_")
348-
349-
350-func bF (bG,bA,ag) = ((((("sttao_" + bG) + "_") + bA) + "_") + ag)
351-
352-
353-func bH (bI) = ("wh_" + bI)
354-
355-
356-func bJ (bA) = ("infraLevel_" + bA)
357-
358-
359-func bK (bA) = ("duckCustomNameByAssetId_" + bA)
360-
361-
362-func bL (av) = ("accountCustomNameByAddr_" + av)
363-
364-
365-func bM (av) = ("accRefBy_" + av)
366-
367-
368-func bN (bO) = ("onboardArtActivatedOnDuck_" + bO)
369-
370-
371-func bP (av) = ("onboardArtActivatedDuckBy_" + av)
372-
373-
374-func bQ (av) = ("accReferrals_" + av)
375-
376-
377-func bR (bA) = ("duckOwner_" + bA)
378-
379-
380-func bS (ag) = ("stakedDuckByOwner_" + ag)
381-
382-
383-func bT (bO) = ("backPack_" + bO)
384-
385-
386-func bU (bO) = ("duckLocation_" + bO)
387-
388-
389-func bV (bW) = ("%s%s__userGwlReleaseTime__" + bW)
390-
391-
392-func bX () = "emergencyWarehouseProducts"
393-
394-
395-let bY = "deliveryFund"
396-
397-let bZ = "%s__lastTourId"
398-
399-func ca (cb) = ("%s%d__tourStaticData__" + toString(cb))
400-
401-
402-func cc (cb) = ("%s%d__tourDynamicData__" + toString(cb))
403-
404-
405-func cd (cb,bO) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(cb), bO], "__")
406-
407-
408-let ce = 0
409-
410-let cf = 1
411-
412-let cg = 6
413-
414-let ch = 1
415-
416-func ci (cj,cb) = {
417- let ck = split(valueOrErrorMessage(getString(cj, ca(cb)), (("Error reading tournament " + toString(cb)) + " data")), "__")
418- let cl = split_4C(valueOrErrorMessage(getString(cj, cc(cb)), (("Error reading tournament " + toString(cb)) + " data")), "__")
419-[ck, cl]
420- }
421-
422-
423-func cm (cj,cn) = {
424- let co = valueOrElse(getInteger(cj, bZ), 0)
425- let cp = split(cn, "_")
426- let cq = lastBlock.timestamp
427- let cr = ci(cj, co)
428- let ck = cr[ce]
429- let cl = cr[cf]
430- if (if (if ((cp[bx] == "T"))
431- then (parseIntValue(cp[bw]) == co)
306+let bj = 10
307+
308+let bk = 0
309+
310+let bl = 1
311+
312+let bm = 2
313+
314+let bn = 3
315+
316+let bo = 4
317+
318+let bp = 0
319+
320+let bq = 1
321+
322+let br = 2
323+
324+let bs = 3
325+
326+let bt = 0
327+
328+let bu = 1
329+
330+let bv = 2
331+
332+let bw = 3
333+
334+let bx = 0
335+
336+let by = 1
337+
338+let bz = 2
339+
340+func bA (bB) = ("no_" + bB)
341+
342+
343+func bC (bB) = ("lcna_" + bB)
344+
345+
346+func bD (bB) = ("st_" + bB)
347+
348+
349+func bE (bF,bB) = makeString(["las", bF, bB], "_")
350+
351+
352+func bG (bH,bB,ah) = ((((("sttao_" + bH) + "_") + bB) + "_") + ah)
353+
354+
355+func bI (bJ) = ("wh_" + bJ)
356+
357+
358+func bK (bB) = ("infraLevel_" + bB)
359+
360+
361+func bL (bB) = ("duckCustomNameByAssetId_" + bB)
362+
363+
364+func bM (aw) = ("accountCustomNameByAddr_" + aw)
365+
366+
367+func bN (aw) = ("accRefBy_" + aw)
368+
369+
370+func bO (bP) = ("onboardArtActivatedOnDuck_" + bP)
371+
372+
373+func bQ (aw) = ("onboardArtActivatedDuckBy_" + aw)
374+
375+
376+func bR (aw) = ("accReferrals_" + aw)
377+
378+
379+func bS (bB) = ("duckOwner_" + bB)
380+
381+
382+func bT (ah) = ("stakedDuckByOwner_" + ah)
383+
384+
385+func bU (bP) = ("backPack_" + bP)
386+
387+
388+func bV (bP) = ("duckLocation_" + bP)
389+
390+
391+func bW (bX) = ("%s%s__userGwlReleaseTime__" + bX)
392+
393+
394+func bY () = "emergencyWarehouseProducts"
395+
396+
397+let bZ = "deliveryFund"
398+
399+let ca = "%s__lastTourId"
400+
401+func cb (cc) = ("%s%d__tourStaticData__" + toString(cc))
402+
403+
404+func cd (cc) = ("%s%d__tourDynamicData__" + toString(cc))
405+
406+
407+func ce (cc,bP) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(cc), bP], "__")
408+
409+
410+let cf = 0
411+
412+let cg = 1
413+
414+let ch = 6
415+
416+let ci = 1
417+
418+func cj (ck,cc) = {
419+ let cl = split(valueOrErrorMessage(getString(ck, cb(cc)), (("Error reading tournament " + toString(cc)) + " data")), "__")
420+ let cm = split_4C(valueOrErrorMessage(getString(ck, cd(cc)), (("Error reading tournament " + toString(cc)) + " data")), "__")
421+[cl, cm]
422+ }
423+
424+
425+func cn (ck,co) = {
426+ let cp = valueOrElse(getInteger(ck, ca), 0)
427+ let cq = split(co, "_")
428+ let cr = lastBlock.timestamp
429+ let cs = cj(ck, cp)
430+ let cl = cs[cf]
431+ let cm = cs[cg]
432+ if (if (if ((cq[by] == "T"))
433+ then (parseIntValue(cq[bx]) == cp)
432434 else false)
433- then (cl[ch] == "INPROGRESS")
435+ then (cm[ci] == "INPROGRESS")
434436 else false)
435- then (parseIntValue(ck[cg]) > cq)
437+ then (parseIntValue(cl[ch]) > cr)
436438 else false
437439 }
438440
439441
440-func cs (cj,cn) = {
441- let co = valueOrElse(getInteger(cj, bZ), 0)
442- let cp = split(cn, "_")
443- let cq = lastBlock.timestamp
444- let cr = ci(cj, co)
445- let ck = cr[ce]
446- let cl = cr[cf]
447- let ct = cp[bx]
448- if (if (if ((cp[bx] == "T"))
449- then (parseIntValue(cp[bw]) == co)
442+func ct (ck,co) = {
443+ let cp = valueOrElse(getInteger(ck, ca), 0)
444+ let cq = split(co, "_")
445+ let cr = lastBlock.timestamp
446+ let cs = cj(ck, cp)
447+ let cl = cs[cf]
448+ let cm = cs[cg]
449+ let cu = cq[by]
450+ if (if (if ((cq[by] == "T"))
451+ then (parseIntValue(cq[bx]) == cp)
450452 else false)
451- then (cl[ch] == "INPROGRESS")
453+ then (cm[ci] == "INPROGRESS")
452454 else false)
453- then (parseIntValue(ck[cg]) > cq)
455+ then (parseIntValue(cl[ch]) > cr)
454456 else false
455457 }
456458
457459
458-func cu (cv) = (parseIntValue(cv[be]) * bc)
459-
460-
461-func cw (cx,cy,cz) = throw(((((("Cheat attempt: oldLoc=" + cx) + ", newLoc=") + cy) + ", case=") + toString(cz)))
462-
463-
464-let cA = 100000000
465-
466-let cB = 3200
467-
468-let cC = 4000
469-
470-let cD = 3
471-
472-let cE = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
473-
474-let cF = 0
475-
476-let cG = 1
477-
478-let cH = 2
479-
480-let cI = 3
481-
482-let cJ = 4
483-
484-let cK = 0
485-
486-let cL = 6
487-
488-let cM = 2
460+func cv (cw) = (parseIntValue(cw[bf]) * bd)
461+
462+
463+func cx (cy,cz,cA) = throw(((((("Cheat attempt: oldLoc=" + cy) + ", newLoc=") + cz) + ", case=") + toString(cA)))
464+
465+
466+let cB = 100000000
467+
468+let cC = 3200
469+
470+let cD = 4000
471+
472+let cE = 3
473+
474+let cF = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"]
475+
476+let cG = 0
477+
478+let cH = 1
479+
480+let cI = 2
481+
482+let cJ = 3
483+
484+let cK = 4
485+
486+let cL = 0
487+
488+let cM = 6
489489
490490 let cN = 2
491491
492-let cO = 30
493-
494-func cP (bO) = ("duckHealth_" + bO)
495-
496-
497-func cQ (bO) = ("duckChars_" + bO)
498-
499-
500-func cR (bO) = ("duckXP_" + bO)
501-
502-
503-func cS (bO) = ("duckLevel_" + bO)
504-
505-
506-func cT (bO) = ("duckFreePoints_" + bO)
507-
508-
509-func cU (bO) = ("duckEquipment_" + bO)
510-
511-
512-func cV (av) = ("userXP_" + av)
513-
514-
515-func cW (av) = ("userLevel_" + av)
516-
517-
518-func cX (av) = ("userFreePoints_" + av)
519-
520-
521-func cY (bO) = ("savedHealth_" + bO)
522-
523-
524-func cZ (bO) = ("savedLocation_" + bO)
525-
526-
527-func da (bO) = ("duckBuffs_" + bO)
528-
529-
530-func db (bO) = ("lastRobberyTime_" + bO)
531-
532-
533-func dc (bO) = ("totalRobberyCountByDuck_" + bO)
534-
535-
536-func dd (av) = ("userRobberyCount_" + av)
537-
538-
539-func de (av) = ("userLastRobberyDay_" + av)
540-
541-
542-func df (bO) = ("totalDeliveryCountByDuck_" + bO)
543-
544-
545-func dg (av) = ("userDeliveryCount_" + av)
546-
547-
548-func dh (av) = ("userLastDeliveryDay_" + av)
549-
550-
551-let di = 10000
492+let cO = 2
493+
494+let cP = 30
495+
496+func cQ (bP) = ("duckHealth_" + bP)
497+
498+
499+func cR (bP) = ("duckChars_" + bP)
500+
501+
502+func cS (bP) = ("duckXP_" + bP)
503+
504+
505+func cT (bP) = ("duckLevel_" + bP)
506+
507+
508+func cU (bP) = ("duckFreePoints_" + bP)
509+
510+
511+func cV (bP) = ("duckEquipment_" + bP)
512+
513+
514+func cW (aw) = ("userXP_" + aw)
515+
516+
517+func cX (aw) = ("userLevel_" + aw)
518+
519+
520+func cY (aw) = ("userFreePoints_" + aw)
521+
522+
523+func cZ (bP) = ("savedHealth_" + bP)
524+
525+
526+func da (bP) = ("savedLocation_" + bP)
527+
528+
529+func db (bP) = ("duckBuffs_" + bP)
530+
531+
532+func dc (bP) = ("lastRobberyTime_" + bP)
533+
534+
535+func dd (bP) = ("totalRobberyCountByDuck_" + bP)
536+
537+
538+func de (aw) = ("userRobberyCount_" + aw)
539+
540+
541+func df (aw) = ("userLastRobberyDay_" + aw)
542+
543+
544+func dg (bP) = ("totalDeliveryCountByDuck_" + bP)
545+
546+
547+func dh (aw) = ("userDeliveryCount_" + aw)
548+
549+
550+func di (aw) = ("userLastDeliveryDay_" + aw)
551+
552552
553553 let dj = 10000
554554
555-let dk = 2000
556-
557-let dl = 10000
558-
559-let dm = 2000
560-
561-let dn = 100000
562-
563-let do = 1000000
564-
565-let dp = 5000000
566-
567-let dq = 10000
568-
569-let dr = 1000000
555+let dk = 10000
556+
557+let dl = 2000
558+
559+let dm = 10000
560+
561+let dn = 2000
562+
563+let do = 100000
564+
565+let dp = 1000000
566+
567+let dq = 5000000
568+
569+let dr = 10000
570570
571571 let ds = 1000000
572572
573-let dt = 10000
574-
575-func du (dv) = fraction(cB, pow(dv, 4, cC, 4, 4, DOWN), cA)
576-
577-
578-func dw (dx) = (100 + dx)
579-
580-
581-func dy (dz,dA) = {
582- let dB = du(dA)
583-[dB, (cD * (dB - dz))]
584- }
585-
586-
587-func dC (M,bO,dD,dE) = {
588- let dF = split(valueOrElse(getString(M, cQ(bO)), "0_0_0_0_0"), "_")
589- let dG = valueOrElse(getInteger(M, cS(bO)), 0)
590- let dH = valueOrElse(getInteger(M, cP(bO)), dw(dG))
591- let dI = split(valueOrElse(getString(M, da(bO)), "0_0_0_0_0"), "_")
592- ([parseIntValue(dF[cF]), parseIntValue(dF[cG]), parseIntValue(dF[cH]), parseIntValue(dF[cI]), parseIntValue(dF[cJ]), dG, dH] ++ (if (dE)
593- then [dD, dD, dD, dD, dD]
594- else [parseIntValue(dI[cF]), parseIntValue(dI[cG]), parseIntValue(dI[cH]), parseIntValue(dI[cI]), parseIntValue(dI[cJ])]))
595- }
596-
597-
598-let dJ = 86400000
599-
600-func dK (av) = ("lastArbTimeUser_" + av)
601-
602-
603-func dL (av) = ("acresStakedAmountByUser_" + av)
604-
605-
606-let dM = {
607- let g = e
608- if ((base58'2W' == g))
573+let dt = 1000000
574+
575+let du = 10000
576+
577+func dv (dw) = fraction(cC, pow(dw, 4, cD, 4, 4, DOWN), cB)
578+
579+
580+func dx (dy) = (100 + dy)
581+
582+
583+func dz (dA,dB) = {
584+ let dC = dv(dB)
585+[dC, (cE * (dC - dA))]
586+ }
587+
588+
589+func dD (N,bP,dE,dF) = {
590+ let dG = split(valueOrElse(getString(N, cR(bP)), "0_0_0_0_0"), "_")
591+ let dH = valueOrElse(getInteger(N, cT(bP)), 0)
592+ let dI = valueOrElse(getInteger(N, cQ(bP)), dx(dH))
593+ let dJ = split(valueOrElse(getString(N, db(bP)), "0_0_0_0_0"), "_")
594+ ([parseIntValue(dG[cG]), parseIntValue(dG[cH]), parseIntValue(dG[cI]), parseIntValue(dG[cJ]), parseIntValue(dG[cK]), dH, dI] ++ (if (dF)
595+ then [dE, dE, dE, dE, dE]
596+ else [parseIntValue(dJ[cG]), parseIntValue(dJ[cH]), parseIntValue(dJ[cI]), parseIntValue(dJ[cJ]), parseIntValue(dJ[cK])]))
597+ }
598+
599+
600+let dK = 86400000
601+
602+func dL (aw) = ("lastArbTimeUser_" + aw)
603+
604+
605+func dM (aw) = ("acresStakedAmountByUser_" + aw)
606+
607+
608+let dN = {
609+ let h = f
610+ if ((base58'2W' == h))
609611 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
610- else if ((base58'2T' == g))
612+ else if ((base58'2T' == h))
611613 then this
612614 else throw("Unknown chain")
613615 }
614616
615-let dN = {
616- let g = e
617- if ((base58'2W' == g))
617+let dO = {
618+ let h = f
619+ if ((base58'2W' == h))
618620 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
619- else if ((base58'2T' == g))
621+ else if ((base58'2T' == h))
620622 then this
621623 else throw("Unknown chain")
622624 }
623625
624-let dO = 300000
625-
626-let dP = 5000000
627-
628-let dQ = 50
629-
630-let dR = 10000000
631-
632-let dS = {
633- let g = e
634- if ((base58'2W' == g))
626+let dP = 300000
627+
628+let dQ = 5000000
629+
630+let dR = 50
631+
632+let dS = 10000000
633+
634+let dT = {
635+ let h = f
636+ if ((base58'2W' == h))
635637 then 252289527462
636- else if ((base58'2T' == g))
638+ else if ((base58'2T' == h))
637639 then 2522895274
638640 else throw("Unknown chain")
639641 }
640642
641-let dT = {
642- let g = e
643- if ((base58'2W' == g))
643+let dU = {
644+ let h = f
645+ if ((base58'2W' == h))
644646 then 250000000
645- else if ((base58'2T' == g))
647+ else if ((base58'2T' == h))
646648 then 250000000
647649 else throw("Unknown chain")
648650 }
649651
650-let dU = 100000
651-
652-let dV = 2500000000
653-
654-let dW = toBigInt(5)
655-
656-let dX = toBigInt(20)
657-
658-let dY = toBigInt((20 * 20))
659-
660-let dZ = toBigInt(((20 * 20) * 20))
661-
662-let ea = toBigInt((((20 * 20) * 20) * 20))
663-
664-let eb = toBigInt(((((20 * 20) * 20) * 20) * 20))
665-
666-let ec = 500
667-
668-func ed () = "nextLandNum"
669-
670-
671-func ee (ef) = ("lcn_" + ef)
672-
673-
674-func eg (eh) = ("la_" + eh)
675-
676-
677-func ei (bA,ag) = ((("ilao_" + bA) + "_") + ag)
678-
679-
680-func ej (eh) = ("lo_" + eh)
681-
682-
683-func ek (ef) = ("duckByCustomName_" + ef)
684-
685-
686-func el (ef) = ("accountByCustomName_" + ef)
687-
688-
689-func em () = "oldiesList"
690-
691-
692-func en () = "nextRoboDuck"
693-
694-
695-let eo = 0
696-
697-let ep = 1
698-
699-let eq = 2
700-
701-let er = 0
702-
703-let es = 5
704-
705-let et = 6
706-
707-let eu = 7
708-
709-let ev = 0
710-
711-let ew = 1
712-
713-let ex = 0
714-
715-let ey = 2
716-
717-let ez = 3
718-
719-func eA (eh,ar) = ((aI + eh) + ar)
720-
721-
722-func eB (eC,eD) = {
723- let eE = if ((eC >= 0))
724- then (((eC + eD) - 1) / eD)
725- else -((((-(eC) + eD) - 1) / eD))
726- (eE * o)
727- }
728-
729-
730-func eF (eG,eH) = {
731- let eI = (((((eH[0] + eH[1]) + eH[2]) + eH[3]) + eH[4]) + eH[5])
732- if ((0 >= eI))
652+let dV = 100000
653+
654+let dW = 2500000000
655+
656+let dX = toBigInt(5)
657+
658+let dY = toBigInt(20)
659+
660+let dZ = toBigInt((20 * 20))
661+
662+let ea = toBigInt(((20 * 20) * 20))
663+
664+let eb = toBigInt((((20 * 20) * 20) * 20))
665+
666+let ec = toBigInt(((((20 * 20) * 20) * 20) * 20))
667+
668+let ed = 500
669+
670+func ee () = "nextLandNum"
671+
672+
673+func ef (eg) = ("lcn_" + eg)
674+
675+
676+func eh (ei) = ("la_" + ei)
677+
678+
679+func ej (bB,ah) = ((("ilao_" + bB) + "_") + ah)
680+
681+
682+func ek (ei) = ("lo_" + ei)
683+
684+
685+func el (eg) = ("duckByCustomName_" + eg)
686+
687+
688+func em (eg) = ("accountByCustomName_" + eg)
689+
690+
691+func en () = "oldiesList"
692+
693+
694+func eo () = "nextRoboDuck"
695+
696+
697+let ep = 0
698+
699+let eq = 1
700+
701+let er = 2
702+
703+let es = 0
704+
705+let et = 5
706+
707+let eu = 6
708+
709+let ev = 7
710+
711+let ew = 0
712+
713+let ex = 1
714+
715+let ey = 0
716+
717+let ez = 2
718+
719+let eA = 3
720+
721+func eB (ei,as) = ((aJ + ei) + as)
722+
723+
724+func eC (eD,eE) = {
725+ let eF = if ((eD >= 0))
726+ then (((eD + eE) - 1) / eE)
727+ else -((((-(eD) + eE) - 1) / eE))
728+ (eF * p)
729+ }
730+
731+
732+func eG (eH,eI) = {
733+ let eJ = (((((eI[0] + eI[1]) + eI[2]) + eI[3]) + eI[4]) + eI[5])
734+ if ((0 >= eJ))
733735 then throw("Zero weights sum")
734736 else {
735- let eJ = fraction(eG, n, eI)
736- func eK (eL,eM) = (eL :+ fraction(eM, eJ, n))
737-
738- let eN = eH
739- let eO = size(eN)
740- let eP = nil
741- func eQ (eR,eS) = if ((eS >= eO))
742- then eR
743- else eK(eR, eN[eS])
744-
745- func eT (eR,eS) = if ((eS >= eO))
746- then eR
737+ let eK = fraction(eH, o, eJ)
738+ func eL (eM,eN) = (eM :+ fraction(eN, eK, o))
739+
740+ let eO = eI
741+ let eP = size(eO)
742+ let eQ = nil
743+ func eR (eS,eT) = if ((eT >= eP))
744+ then eS
745+ else eL(eS, eO[eT])
746+
747+ func eU (eS,eT) = if ((eT >= eP))
748+ then eS
747749 else throw("List size exceeds 6")
748750
749- eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
750- }
751- }
752-
753-
754-func eU (eG) = {
755- let eV = split(value(getString(ac())), "_")
756- if ((size(eV) != aM))
751+ eU(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6)
752+ }
753+ }
754+
755+
756+func eV (eH) = {
757+ let eW = split(value(getString(ad())), "_")
758+ if ((size(eW) != aN))
757759 then throw("Wrong proportions data")
758760 else {
759- let eW = [parseIntValue(eV[0]), parseIntValue(eV[1]), parseIntValue(eV[2]), parseIntValue(eV[3]), parseIntValue(eV[4]), parseIntValue(eV[5])]
760- eF(eG, eW)
761- }
762- }
763-
764-
765-func eX (eY,eZ,fa) = {
766- let fb = eU(fa)
767- func fc (eL,K) = {
768- let fd = (parseIntValue(eZ[K]) - fb[K])
769- if ((0 > fd))
770- then throw(((((("Not enough material idx=" + toString(K)) + ", you have ") + eZ[K]) + ", but need ") + toString(fb[K])))
771- else (eL :+ toString(fd))
772- }
773-
774- if (eY)
761+ let eX = [parseIntValue(eW[0]), parseIntValue(eW[1]), parseIntValue(eW[2]), parseIntValue(eW[3]), parseIntValue(eW[4]), parseIntValue(eW[5])]
762+ eG(eH, eX)
763+ }
764+ }
765+
766+
767+func eY (eZ,fa,fb) = {
768+ let fc = eV(fb)
769+ func fd (eM,L) = {
770+ let fe = (parseIntValue(fa[L]) - fc[L])
771+ if ((0 > fe))
772+ then throw(((((("Not enough material idx=" + toString(L)) + ", you have ") + fa[L]) + ", but need ") + toString(fc[L])))
773+ else (eM :+ toString(fe))
774+ }
775+
776+ if (eZ)
775777 then {
776- let eN = u
777- let eO = size(eN)
778- let eP = nil
779- func eQ (eR,eS) = if ((eS >= eO))
780- then eR
781- else fc(eR, eN[eS])
782-
783- func eT (eR,eS) = if ((eS >= eO))
784- then eR
778+ let eO = v
779+ let eP = size(eO)
780+ let eQ = nil
781+ func eR (eS,eT) = if ((eT >= eP))
782+ then eS
783+ else fd(eS, eO[eT])
784+
785+ func eU (eS,eT) = if ((eT >= eP))
786+ then eS
785787 else throw("List size exceeds 6")
786788
787- eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
788- }
789- else eZ
790- }
791-
792-
793-func fe (ff,fg) = if ((fg == ""))
794- then $Tuple3(ff, false, false)
789+ eU(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6)
790+ }
791+ else fa
792+ }
793+
794+
795+func ff (fg,fh) = if ((fh == ""))
796+ then $Tuple3(fg, false, false)
795797 else {
796- func fh (eL,fi) = {
797- let fj = split(fi, ",")
798- if ((size(fj) != 2))
798+ func fi (eM,fj) = {
799+ let fk = split(fj, ",")
800+ if ((size(fk) != 2))
799801 then throw("Incorrect format, should be index,amount")
800802 else {
801- let K = parseIntValue(fj[0])
802- if (if ((0 > K))
803+ let L = parseIntValue(fk[0])
804+ if (if ((0 > L))
803805 then true
804- else (K >= size(bd)))
806+ else (L >= size(be)))
805807 then throw("Unknown product idx")
806808 else {
807- let fk = parseIntValue(fj[1])
808- let fl = split(eL._1, (fj[0] + ":"))
809- if ((size(fl) != 2))
810- then throw((("You don't have " + ba[K]) + " equipped"))
809+ let fl = parseIntValue(fk[1])
810+ let fm = split(eM._1, (fk[0] + ":"))
811+ if ((size(fm) != 2))
812+ then throw((("You don't have " + bb[L]) + " equipped"))
811813 else {
812- let fm = fl[1]
813- let fn = if (as(take(drop(fm, 1), 1)))
814+ let fn = fm[1]
815+ let fo = if (at(take(drop(fn, 1), 1)))
814816 then 2
815817 else 1
816- let fo = parseIntValue(take(fm, fn))
817- let fp = drop(fm, fn)
818- let fq = if ((fo >= fk))
819- then (fo - fk)
820- else throw(((((("You equipped " + toString(fo)) + " of ") + ba[K]) + ", but tried to use ") + toString(fk)))
821- $Tuple3(((((fl[0] + fj[0]) + ":") + toString(fq)) + fp), if (eL._2)
818+ let fp = parseIntValue(take(fn, fo))
819+ let fq = drop(fn, fo)
820+ let fr = if ((fp >= fl))
821+ then (fp - fl)
822+ else throw(((((("You equipped " + toString(fp)) + " of ") + bb[L]) + ", but tried to use ") + toString(fl)))
823+ $Tuple3(((((fm[0] + fk[0]) + ":") + toString(fr)) + fq), if (eM._2)
822824 then true
823- else if (if ((K >= 6))
824- then (8 >= K)
825+ else if (if ((L >= 6))
826+ then (8 >= L)
825827 else false)
826- then (fq == 0)
827- else false, if (eL._3)
828+ then (fr == 0)
829+ else false, if (eM._3)
828830 then true
829- else if (if ((K >= 3))
830- then (5 >= K)
831+ else if (if ((L >= 3))
832+ then (5 >= L)
831833 else false)
832- then (fk > 0)
834+ then (fl > 0)
833835 else false)
834836 }
835837 }
836838 }
837839 }
838840
839- let eN = split(fg, "_")
840- let eO = size(eN)
841- let eP = $Tuple3(ff, false, false)
842- func eQ (eR,eS) = if ((eS >= eO))
843- then eR
844- else fh(eR, eN[eS])
845-
846- func eT (eR,eS) = if ((eS >= eO))
847- then eR
841+ let eO = split(fh, "_")
842+ let eP = size(eO)
843+ let eQ = $Tuple3(fg, false, false)
844+ func eR (eS,eT) = if ((eT >= eP))
845+ then eS
846+ else fi(eS, eO[eT])
847+
848+ func eU (eS,eT) = if ((eT >= eP))
849+ then eS
848850 else throw("List size exceeds 10")
849851
850- eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
851- }
852-
853-
854-func fr (fs) = {
855- let ft = if ((fs == ""))
852+ eU(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
853+ }
854+
855+
856+func fs (ft) = {
857+ let fu = if ((ft == ""))
856858 then nil
857- else split_4C(fs, "_")
858- func fu (eL,cv) = {
859- let fv = (size(eL) / 8)
860- let fo = if ((size(ft) > fv))
861- then parseIntValue(ft[fv])
859+ else split_4C(ft, "_")
860+ func fv (eM,cw) = {
861+ let fw = (size(eM) / 8)
862+ let fp = if ((size(fu) > fw))
863+ then parseIntValue(fu[fw])
862864 else 0
863- (eL + toBytes(fo))
864- }
865-
866- let eN = bd
867- let eO = size(eN)
868- let eP = base58''
869- func eQ (eR,eS) = if ((eS >= eO))
870- then eR
871- else fu(eR, eN[eS])
872-
873- func eT (eR,eS) = if ((eS >= eO))
874- then eR
865+ (eM + toBytes(fp))
866+ }
867+
868+ let eO = be
869+ let eP = size(eO)
870+ let eQ = base58''
871+ func eR (eS,eT) = if ((eT >= eP))
872+ then eS
873+ else fv(eS, eO[eT])
874+
875+ func eU (eS,eT) = if ((eT >= eP))
876+ then eS
875877 else throw("List size exceeds 50")
876878
877- eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 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)
878- }
879-
880-
881-func fw (fx) = {
882- func fy (eL,cv) = {
883- let fv = size(eL)
884- let fz = take(drop(fx, (8 * fv)), 8)
885- (eL :+ toString(toInt(fz)))
879+ eU(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eQ, 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)
880+ }
881+
882+
883+func fx (fy) = {
884+ func fz (eM,cw) = {
885+ let fw = size(eM)
886+ let fA = take(drop(fy, (8 * fw)), 8)
887+ (eM :+ toString(toInt(fA)))
886888 }
887889
888890 makeString_2C({
889- let eN = bd
890- let eO = size(eN)
891- let eP = nil
892- func eQ (eR,eS) = if ((eS >= eO))
893- then eR
894- else fy(eR, eN[eS])
895-
896- func eT (eR,eS) = if ((eS >= eO))
897- then eR
891+ let eO = be
892+ let eP = size(eO)
893+ let eQ = nil
894+ func eR (eS,eT) = if ((eT >= eP))
895+ then eS
896+ else fz(eS, eO[eT])
897+
898+ func eU (eS,eT) = if ((eT >= eP))
899+ then eS
898900 else throw("List size exceeds 50")
899901
900- eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 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)
902+ eU(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eQ, 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)
901903 }, "_")
902904 }
903905
904906
905-func fA (fB,fC) = {
906- func fD (eL,fv) = {
907- let fE = if ((size(fB) > (7 + fv)))
908- then fB[(7 + fv)]
907+func fB (fC,fD) = {
908+ func fE (eM,fw) = {
909+ let fF = if ((size(fC) > (7 + fw)))
910+ then fC[(7 + fw)]
909911 else 0
910- if ((parseIntValue(fC[fv]) > (fB[fv] + fE)))
911- then throw(("Requirement not satisfied: " + cE[fv]))
912+ if ((parseIntValue(fD[fw]) > (fC[fw] + fF)))
913+ then throw(("Requirement not satisfied: " + cF[fw]))
912914 else true
913915 }
914916
915- let eN = [0, 1, 2, 3, 4, 5, 6]
916- let eO = size(eN)
917- let eP = false
918- func eQ (eR,eS) = if ((eS >= eO))
919- then eR
920- else fD(eR, eN[eS])
921-
922- func eT (eR,eS) = if ((eS >= eO))
923- then eR
917+ let eO = [0, 1, 2, 3, 4, 5, 6]
918+ let eP = size(eO)
919+ let eQ = false
920+ func eR (eS,eT) = if ((eT >= eP))
921+ then eS
922+ else fE(eS, eO[eT])
923+
924+ func eU (eS,eT) = if ((eT >= eP))
925+ then eS
924926 else throw("List size exceeds 7")
925927
926- eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6), 7)
927- }
928-
929-
930-func fF (fG,ft,fH,fI,fJ,fK,fB) = {
931- let fj = split(fG, ":")
932- if ((size(fj) != 2))
928+ eU(eR(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6), 7)
929+ }
930+
931+
932+func fG (fH,fu,fI,fJ,fK,fL,fC) = {
933+ let fk = split(fH, ":")
934+ if ((size(fk) != 2))
933935 then throw("Incorrect format, should be index:amount")
934- else if (if (!(fH))
935- then (size(fj[0]) != 2)
936+ else if (if (!(fI))
937+ then (size(fk[0]) != 2)
936938 else false)
937939 then throw("Product idx should be 2 digits, zero padded")
938940 else {
939- let fL = parseIntValue(fj[0])
940- let fM = parseIntValue(fj[1])
941- if (if ((0 > fL))
941+ let fM = parseIntValue(fk[0])
942+ let fN = parseIntValue(fk[1])
943+ if (if ((0 > fM))
942944 then true
943- else (fL >= size(bd)))
945+ else (fM >= size(be)))
944946 then throw("Unknown product idx")
945- else if ((0 > fM))
947+ else if ((0 > fN))
946948 then throw("Count can't be negative")
947- else if ((fM > cO))
948- then throw(((("Can't put more than " + toString(cO)) + " of ") + ba[fL]))
949- else if ((fM == 0))
950- then $Tuple2(ft, false)
949+ else if ((fN > cP))
950+ then throw(((("Can't put more than " + toString(cP)) + " of ") + bb[fM]))
951+ else if ((fN == 0))
952+ then $Tuple2(fu, false)
951953 else {
952- let fN = take(ft, (8 * fL))
953- let fo = toInt(take(drop(ft, (8 * fL)), 8))
954- let fp = drop(ft, (8 * (fL + 1)))
955- let cv = split(bd[fL], "_")
956- if (if (!(fH))
957- then (fM > fo)
954+ let fO = take(fu, (8 * fM))
955+ let fp = toInt(take(drop(fu, (8 * fM)), 8))
956+ let fq = drop(fu, (8 * (fM + 1)))
957+ let cw = split(be[fM], "_")
958+ if (if (!(fI))
959+ then (fN > fp)
958960 else false)
959- then throw(((((("You have " + toString(fo)) + " of ") + ba[fL]) + ", but tried to use ") + toString(fM)))
961+ then throw(((((("You have " + toString(fp)) + " of ") + bb[fM]) + ", but tried to use ") + toString(fN)))
960962 else {
961- let fO = if (if (!(fH))
962- then fA(fB, split(cv[bg], ","))
963+ let fP = if (if (!(fI))
964+ then fB(fC, split(cw[bh], ","))
963965 else false)
964966 then {
965- let fP = cv[bh]
966- if ((fP == ""))
967+ let fQ = cw[bi]
968+ if ((fQ == ""))
967969 then throw("Item cannot be equipped")
968970 else {
969- let fQ = parseIntValue(fP)
970- let fR = (fQ / 100)
971- if ((fI != fR))
971+ let fR = parseIntValue(fQ)
972+ let fS = (fR / 100)
973+ if ((fJ != fS))
972974 then throw("Segment incompatible")
973975 else {
974- let fS = ((fQ % 100) / 10)
975- if ((fJ != fS))
976+ let fT = ((fR % 100) / 10)
977+ if ((fK != fT))
976978 then throw("Slot incompatible")
977979 else {
978- let fT = (fQ % 10)
979- if (if ((fK != 0))
980- then (fT > 1)
980+ let fU = (fR % 10)
981+ if (if ((fL != 0))
982+ then (fU > 1)
981983 else false)
982984 then throw("Big items should occupy slot 0")
983- else (fT > 1)
985+ else (fU > 1)
984986 }
985987 }
986988 }
987989 }
988990 else false
989- $Tuple2(((fN + toBytes((fo + (if (fH)
990- then fM
991- else -(fM))))) + fp), fO)
991+ $Tuple2(((fO + toBytes((fp + (if (fI)
992+ then fN
993+ else -(fN))))) + fq), fP)
992994 }
993995 }
994996 }
995997 }
996998
997999
998-func fU (fV,fW,fH,fI,fJ,fX) = if ((fV != ""))
1000+func fV (fW,fX,fI,fJ,fK,fY) = if ((fW != ""))
9991001 then {
1000- let fY = split(fV, ",")
1001- if ((size(fY) > cN))
1002+ let fZ = split(fW, ",")
1003+ if ((size(fZ) > cO))
10021004 then throw("Wrong slots format")
10031005 else {
1004- let fZ = fY[0]
1005- let ga = if ((size(fY) > 1))
1006- then fY[1]
1006+ let ga = fZ[0]
1007+ let gb = if ((size(fZ) > 1))
1008+ then fZ[1]
10071009 else ""
1008- if (if ((fZ == ""))
1009- then (ga == "")
1010+ if (if ((ga == ""))
1011+ then (gb == "")
10101012 else false)
1011- then fW
1013+ then fX
10121014 else {
1013- let gb = if ((fZ != ""))
1014- then fF(fZ, fW, fH, fI, fJ, 0, fX)
1015- else $Tuple2(fW, false)
1016- if ((ga != ""))
1017- then if (gb._2)
1015+ let gc = if ((ga != ""))
1016+ then fG(ga, fX, fI, fJ, fK, 0, fY)
1017+ else $Tuple2(fX, false)
1018+ if ((gb != ""))
1019+ then if (gc._2)
10181020 then throw("Big item already occupies slot")
1019- else fF(ga, gb._1, fH, fI, fJ, 1, fX)._1
1020- else gb._1
1021+ else fG(gb, gc._1, fI, fJ, fK, 1, fY)._1
1022+ else gc._1
10211023 }
10221024 }
10231025 }
1024- else fW
1025-
1026-
1027-func gc (gd,ge,fH,fX) = {
1028- func fI (eL,gf) = {
1029- let fv = eL._1
1030- let fJ = split(gf, ";")
1031- if ((size(fJ) != cM))
1026+ else fX
1027+
1028+
1029+func gd (ge,gf,fI,fY) = {
1030+ func fJ (eM,gg) = {
1031+ let fw = eM._1
1032+ let fK = split(gg, ";")
1033+ if ((size(fK) != cN))
10321034 then throw("Wrong segment format")
10331035 else {
1034- let gg = fJ[0]
1035- let gh = fJ[1]
1036- if (if ((gg == ""))
1037- then (gh == "")
1036+ let gh = fK[0]
1037+ let gi = fK[1]
1038+ if (if ((gh == ""))
1039+ then (gi == "")
10381040 else false)
1039- then $Tuple2((fv + 1), eL._2)
1041+ then $Tuple2((fw + 1), eM._2)
10401042 else {
1041- let gi = fU(gg, eL._2, fH, fv, 0, fX)
1042- $Tuple2((fv + 1), fU(gh, gi, fH, fv, 1, fX))
1043+ let gj = fV(gh, eM._2, fI, fw, 0, fY)
1044+ $Tuple2((fw + 1), fV(gi, gj, fI, fw, 1, fY))
10431045 }
10441046 }
10451047 }
10461048
1047-( let eN = gd
1048- let eO = size(eN)
1049- let eP = $Tuple2(0, ge)
1050- func eQ (eR,eS) = if ((eS >= eO))
1051- then eR
1052- else fI(eR, eN[eS])
1053-
1054- func eT (eR,eS) = if ((eS >= eO))
1055- then eR
1049+( let eO = ge
1050+ let eP = size(eO)
1051+ let eQ = $Tuple2(0, gf)
1052+ func eR (eS,eT) = if ((eT >= eP))
1053+ then eS
1054+ else fJ(eS, eO[eT])
1055+
1056+ func eU (eS,eT) = if ((eT >= eP))
1057+ then eS
10561058 else throw("List size exceeds 6")
10571059
1058- eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6))._2
1059- }
1060-
1061-
1062-func gj (bO) = {
1063- let gk = cU(bO)
1064- let gl = split(valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1065- let gm = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
1066- let gn = gc(gl, gm, true, nil)
1067- let go = split(gl[cK], ";")[1]
1068- let dD = if ((go == ""))
1060+ eU(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6))._2
1061+ }
1062+
1063+
1064+func gk (bP) = {
1065+ let gl = cV(bP)
1066+ let gm = split(valueOrElse(getString(gl), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
1067+ let gn = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
1068+ let go = gd(gm, gn, true, nil)
1069+ let gp = split(gm[cL], ";")[1]
1070+ let dE = if ((gp == ""))
10691071 then 0
10701072 else {
1071- let gp = split(go, ",")[0]
1072- if ((gp == ""))
1073+ let gq = split(gp, ",")[0]
1074+ if ((gq == ""))
10731075 then 0
10741076 else {
1075- let fG = split(gp, ":")
1076- let K = fG[0]
1077- let gq = fG[1]
1078- if (if (if (if (if ((K == "06"))
1077+ let fH = split(gq, ":")
1078+ let L = fH[0]
1079+ let gr = fH[1]
1080+ if (if (if (if (if ((L == "06"))
10791081 then true
1080- else (K == "07"))
1082+ else (L == "07"))
10811083 then true
1082- else (K == "08"))
1083- then (gq != "")
1084+ else (L == "08"))
1085+ then (gr != "")
10841086 else false)
1085- then (parseIntValue(gq) > 0)
1087+ then (parseIntValue(gr) > 0)
10861088 else false)
1087- then parseIntValue(split(bd[parseIntValue(K)], "_")[bf])
1089+ then parseIntValue(split(be[parseIntValue(L)], "_")[bg])
10881090 else 0
10891091 }
10901092 }
1091- let fX = dC(this, bO, dD, true)
1092- let gr = gc(gl, gn, false, fX)
1093- (gr == gr)
1094- }
1095-
1096-
1097-func gs (gt,gu,gv,gw) = if ((size(gt) != aM))
1093+ let fY = dD(this, bP, dE, true)
1094+ let gs = gd(gm, go, false, fY)
1095+ (gs == gs)
1096+ }
1097+
1098+
1099+func gt (gu,gv,gw,gx) = if ((size(gu) != aN))
10981100 then throw("Wrong proportions data")
10991101 else {
1100- func gx (eL,gy) = {
1101- let fd = (parseIntValue(gt[gy]) + ((gw * gu[gy]) * gv))
1102- if ((0 > fd))
1103- then throw(((((((("Panic! Pieces of type=" + toString(gy)) + ", sign=") + toString(gw)) + ", terrainCounts[i]=") + toString(gu[gy])) + ", landSizeIndex=") + toString(gv)))
1104- else (eL :+ toString(fd))
1105- }
1106-
1107- let eN = u
1108- let eO = size(eN)
1109- let eP = nil
1110- func eQ (eR,eS) = if ((eS >= eO))
1111- then eR
1112- else gx(eR, eN[eS])
1113-
1114- func eT (eR,eS) = if ((eS >= eO))
1115- then eR
1102+ func gy (eM,gz) = {
1103+ let fe = (parseIntValue(gu[gz]) + ((gx * gv[gz]) * gw))
1104+ if ((0 > fe))
1105+ then throw(((((((("Panic! Pieces of type=" + toString(gz)) + ", sign=") + toString(gx)) + ", terrainCounts[i]=") + toString(gv[gz])) + ", landSizeIndex=") + toString(gw)))
1106+ else (eM :+ toString(fe))
1107+ }
1108+
1109+ let eO = v
1110+ let eP = size(eO)
1111+ let eQ = nil
1112+ func eR (eS,eT) = if ((eT >= eP))
1113+ then eS
1114+ else gy(eS, eO[eT])
1115+
1116+ func eU (eS,eT) = if ((eT >= eP))
1117+ then eS
11161118 else throw("List size exceeds 6")
11171119
1118- eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
1119- }
1120-
1121-
1122-func gz (gu,gv,gw) = {
1123- let gt = split(valueOrElse(getString(ac()), "0_0_0_0_0_0"), "_")
1124- makeString(gs(gt, gu, gv, gw), "_")
1125- }
1126-
1127-
1128-func gA (gB) = [(size(split(gB, "A")) - 1), (size(split(gB, "B")) - 1), (size(split(gB, "C")) - 1), (size(split(gB, "D")) - 1), (size(split(gB, "E")) - 1), (size(split(gB, "F")) - 1)]
1129-
1130-
1131-func gC (gD,gu,gE,gv,gF) = {
1132- func gG (eL,gy) = {
1133- let gH = ((fraction(gE, gF, dJ) * gu[gy]) * gv)
1134- (eL :+ toString((parseIntValue(gD[gy]) + gH)))
1135- }
1136-
1137- let eW = {
1138- let eN = u
1139- let eO = size(eN)
1140- let eP = nil
1141- func eQ (eR,eS) = if ((eS >= eO))
1142- then eR
1143- else gG(eR, eN[eS])
1144-
1145- func eT (eR,eS) = if ((eS >= eO))
1146- then eR
1120+ eU(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6)
1121+ }
1122+
1123+
1124+func gA (gv,gw,gx) = {
1125+ let gu = split(valueOrElse(getString(ad()), "0_0_0_0_0_0"), "_")
1126+ makeString(gt(gu, gv, gw, gx), "_")
1127+ }
1128+
1129+
1130+func gB (gC) = [(size(split(gC, "A")) - 1), (size(split(gC, "B")) - 1), (size(split(gC, "C")) - 1), (size(split(gC, "D")) - 1), (size(split(gC, "E")) - 1), (size(split(gC, "F")) - 1)]
1131+
1132+
1133+func gD (gE,gv,gF,gw,gG) = {
1134+ func gH (eM,gz) = {
1135+ let gI = ((fraction(gF, gG, dK) * gv[gz]) * gw)
1136+ (eM :+ toString((parseIntValue(gE[gz]) + gI)))
1137+ }
1138+
1139+ let eX = {
1140+ let eO = v
1141+ let eP = size(eO)
1142+ let eQ = nil
1143+ func eR (eS,eT) = if ((eT >= eP))
1144+ then eS
1145+ else gH(eS, eO[eT])
1146+
1147+ func eU (eS,eT) = if ((eT >= eP))
1148+ then eS
11471149 else throw("List size exceeds 6")
11481150
1149- eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
1150- }
1151- makeString(eW, "_")
1152- }
1153-
1154-
1155-func gI (gD,gu,gE,gv,gF) = {
1156- func gG (eL,gy) = {
1157- let gH = ((fraction(gE, gF, dJ) * gu[gy]) * gv)
1158- let gJ = (parseIntValue(gD[gy]) + gH)
1159- $Tuple2((eL._1 :+ gJ), (eL._2 + gJ))
1160- }
1161-
1162- let eN = u
1163- let eO = size(eN)
1164- let eP = $Tuple2(nil, 0)
1165- func eQ (eR,eS) = if ((eS >= eO))
1166- then eR
1167- else gG(eR, eN[eS])
1168-
1169- func eT (eR,eS) = if ((eS >= eO))
1170- then eR
1151+ eU(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6)
1152+ }
1153+ makeString(eX, "_")
1154+ }
1155+
1156+
1157+func gJ (gE,gv,gF,gw,gG) = {
1158+ func gH (eM,gz) = {
1159+ let gI = ((fraction(gF, gG, dK) * gv[gz]) * gw)
1160+ let gK = (parseIntValue(gE[gz]) + gI)
1161+ $Tuple2((eM._1 :+ gK), (eM._2 + gK))
1162+ }
1163+
1164+ let eO = v
1165+ let eP = size(eO)
1166+ let eQ = $Tuple2(nil, 0)
1167+ func eR (eS,eT) = if ((eT >= eP))
1168+ then eS
1169+ else gH(eS, eO[eT])
1170+
1171+ func eU (eS,eT) = if ((eT >= eP))
1172+ then eS
11711173 else throw("List size exceeds 6")
11721174
1173- eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
1174- }
1175-
1176-
1177-func gK (gu,gE,gv,gF) = {
1178- func gG (eL,gL) = {
1179- let gH = ((fraction(gE, gF, dJ) * gL) * gv)
1180- $Tuple2((eL._1 :+ gH), (eL._2 + gH))
1181- }
1182-
1183- let eN = gu
1184- let eO = size(eN)
1185- let eP = $Tuple2(nil, 0)
1186- func eQ (eR,eS) = if ((eS >= eO))
1187- then eR
1188- else gG(eR, eN[eS])
1189-
1190- func eT (eR,eS) = if ((eS >= eO))
1191- then eR
1175+ eU(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6)
1176+ }
1177+
1178+
1179+func gL (gv,gF,gw,gG) = {
1180+ func gH (eM,gM) = {
1181+ let gI = ((fraction(gF, gG, dK) * gM) * gw)
1182+ $Tuple2((eM._1 :+ gI), (eM._2 + gI))
1183+ }
1184+
1185+ let eO = gv
1186+ let eP = size(eO)
1187+ let eQ = $Tuple2(nil, 0)
1188+ func eR (eS,eT) = if ((eT >= eP))
1189+ then eS
1190+ else gH(eS, eO[eT])
1191+
1192+ func eU (eS,eT) = if ((eT >= eP))
1193+ then eS
11921194 else throw("List size exceeds 6")
11931195
1194- eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
1195- }
1196-
1197-
1198-func gM (gN,gO,gP,gQ) = {
1199- let gR = gP._1
1200- let gS = gP._2
1201- if ((gS == 0))
1202- then $Tuple2(makeString(gN, "_"), makeString(gO, "_"))
1203- else if ((gQ >= gS))
1196+ eU(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6)
1197+ }
1198+
1199+
1200+func gN (gO,gP,gQ,gR) = {
1201+ let gS = gQ._1
1202+ let gT = gQ._2
1203+ if ((gT == 0))
1204+ then $Tuple2(makeString(gO, "_"), makeString(gP, "_"))
1205+ else if ((gR >= gT))
12041206 then {
1205- func gT (eL,gy) = (eL :+ toString((parseIntValue(gN[gy]) + gR[gy])))
1206-
1207- let eW = {
1208- let eN = u
1209- let eO = size(eN)
1210- let eP = nil
1211- func eQ (eR,eS) = if ((eS >= eO))
1212- then eR
1213- else gT(eR, eN[eS])
1214-
1215- func eT (eR,eS) = if ((eS >= eO))
1216- then eR
1207+ func gU (eM,gz) = (eM :+ toString((parseIntValue(gO[gz]) + gS[gz])))
1208+
1209+ let eX = {
1210+ let eO = v
1211+ let eP = size(eO)
1212+ let eQ = nil
1213+ func eR (eS,eT) = if ((eT >= eP))
1214+ then eS
1215+ else gU(eS, eO[eT])
1216+
1217+ func eU (eS,eT) = if ((eT >= eP))
1218+ then eS
12171219 else throw("List size exceeds 6")
12181220
1219- eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
1221+ eU(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6)
12201222 }
1221- $Tuple2(makeString(eW, "_"), makeString(gO, "_"))
1223+ $Tuple2(makeString(eX, "_"), makeString(gP, "_"))
12221224 }
12231225 else {
1224- func gU (eL,gy) = {
1225- let gV = fraction(gR[gy], gQ, gS)
1226- $Tuple2((eL._1 :+ toString((parseIntValue(gN[gy]) + gV))), (eL._2 :+ toString(((parseIntValue(gO[gy]) + gR[gy]) - gV))))
1226+ func gV (eM,gz) = {
1227+ let gW = fraction(gS[gz], gR, gT)
1228+ $Tuple2((eM._1 :+ toString((parseIntValue(gO[gz]) + gW))), (eM._2 :+ toString(((parseIntValue(gP[gz]) + gS[gz]) - gW))))
12271229 }
12281230
1229- let eW = {
1230- let eN = u
1231- let eO = size(eN)
1232- let eP = $Tuple2(nil, nil)
1233- func eQ (eR,eS) = if ((eS >= eO))
1234- then eR
1235- else gU(eR, eN[eS])
1236-
1237- func eT (eR,eS) = if ((eS >= eO))
1238- then eR
1231+ let eX = {
1232+ let eO = v
1233+ let eP = size(eO)
1234+ let eQ = $Tuple2(nil, nil)
1235+ func eR (eS,eT) = if ((eT >= eP))
1236+ then eS
1237+ else gV(eS, eO[eT])
1238+
1239+ func eU (eS,eT) = if ((eT >= eP))
1240+ then eS
12391241 else throw("List size exceeds 6")
12401242
1241- eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
1243+ eU(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6)
12421244 }
1243- $Tuple2(makeString(eW._1, "_"), makeString(eW._2, "_"))
1245+ $Tuple2(makeString(eX._1, "_"), makeString(eX._2, "_"))
12441246 }
12451247 }
12461248
12471249
1248-func gW (gX) = if ((gX >= toBigInt(0)))
1249- then gX
1250- else -(gX)
1251-
1252-
1253-let gY = [[6, 9, 14, 15, 16], [5, 8, 13, 14, 15], [1, 4, 9, 10, 15], [1, 6, 7, 15, 19], [4, 7, 8, 13, 18]]
1254-
1255-func gZ (am,ha) = {
1256- let hb = toInt((am % dX))
1257- let hc = if ((ha[0] > hb))
1250+func gX (gY) = if ((gY >= toBigInt(0)))
1251+ then gY
1252+ else -(gY)
1253+
1254+
1255+let gZ = [[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]]
1256+
1257+func ha (an,hb) = {
1258+ let hc = toInt((an % dY))
1259+ let hd = if ((hb[0] > hc))
12581260 then "A"
1259- else if ((ha[1] > hb))
1261+ else if ((hb[1] > hc))
12601262 then "B"
1261- else if ((ha[2] > hb))
1263+ else if ((hb[2] > hc))
12621264 then "C"
1263- else if ((ha[3] > hb))
1265+ else if ((hb[3] > hc))
12641266 then "D"
1265- else if ((ha[4] > hb))
1267+ else if ((hb[4] > hc))
12661268 then "E"
12671269 else "F"
1268- hc
1269- }
1270-
1271-
1272-func hd (he,hf) = {
1273- let hg = gY[hf]
1274- func hh (eL,eM) = $Tuple2((((((eL._1 + gZ(eL._2, hg)) + gZ((eL._2 / dX), hg)) + gZ((eL._2 / dY), hg)) + gZ((eL._2 / dZ), hg)) + gZ((eL._2 / ea), hg)), (eL._2 / eb))
1275-
1276- let hi = {
1277- let eN = [1, 2, 3, 4, 5]
1278- let eO = size(eN)
1279- let eP = $Tuple2("", (he / dW))
1280- func eQ (eR,eS) = if ((eS >= eO))
1281- then eR
1282- else hh(eR, eN[eS])
1283-
1284- func eT (eR,eS) = if ((eS >= eO))
1285- then eR
1270+ hd
1271+ }
1272+
1273+
1274+func he (hf,hg) = {
1275+ let hh = gZ[hg]
1276+ func hi (eM,eN) = $Tuple2((((((eM._1 + ha(eM._2, hh)) + ha((eM._2 / dY), hh)) + ha((eM._2 / dZ), hh)) + ha((eM._2 / ea), hh)) + ha((eM._2 / eb), hh)), (eM._2 / ec))
1277+
1278+ let hj = {
1279+ let eO = [1, 2, 3, 4, 5]
1280+ let eP = size(eO)
1281+ let eQ = $Tuple2("", (hf / dX))
1282+ func eR (eS,eT) = if ((eT >= eP))
1283+ then eS
1284+ else hi(eS, eO[eT])
1285+
1286+ func eU (eS,eT) = if ((eT >= eP))
1287+ then eS
12861288 else throw("List size exceeds 5")
12871289
1288- eT(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5)
1289- }
1290- hi._1
1291- }
1292-
1293-
1294-let hj = [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]
1295-
1296-let hk = ["A", "B", "C", "D", "E", "F"]
1297-
1298-func hl (hm,gv) = {
1299- func hn (eL,ak) = {
1300- let fv = eL._2
1301- let ho = parseIntValue(ak)
1302- let gX = if ((ho == 0))
1290+ eU(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5)
1291+ }
1292+ hj._1
1293+ }
1294+
1295+
1296+let hk = [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]
1297+
1298+let hl = ["A", "B", "C", "D", "E", "F"]
1299+
1300+func hm (hn,gw) = {
1301+ func ho (eM,al) = {
1302+ let fw = eM._2
1303+ let hp = parseIntValue(al)
1304+ let gY = if ((hp == 0))
13031305 then 0
1304- else if ((ho >= (4 * gv)))
1305- then (ho / gv)
1306- else if ((ho > (3 * gv)))
1306+ else if ((hp >= (4 * gw)))
1307+ then (hp / gw)
1308+ else if ((hp > (3 * gw)))
13071309 then 3
1308- else (((ho - 1) / gv) + 1)
1309- $Tuple3((eL._1 :+ gX), (eL._2 + 1), (eL._3 + gX))
1310- }
1311-
1312- let hi = {
1313- let eN = hm
1314- let eO = size(eN)
1315- let eP = $Tuple3(nil, 0, 0)
1316- func eQ (eR,eS) = if ((eS >= eO))
1317- then eR
1318- else hn(eR, eN[eS])
1319-
1320- func eT (eR,eS) = if ((eS >= eO))
1321- then eR
1310+ else (((hp - 1) / gw) + 1)
1311+ $Tuple3((eM._1 :+ gY), (eM._2 + 1), (eM._3 + gY))
1312+ }
1313+
1314+ let hj = {
1315+ let eO = hn
1316+ let eP = size(eO)
1317+ let eQ = $Tuple3(nil, 0, 0)
1318+ func eR (eS,eT) = if ((eT >= eP))
1319+ then eS
1320+ else ho(eS, eO[eT])
1321+
1322+ func eU (eS,eT) = if ((eT >= eP))
1323+ then eS
13221324 else throw("List size exceeds 6")
13231325
1324- eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
1325- }
1326- let hp = hi._1
1327- let hq = value(indexOf(hp, max(hp)))
1328- let hr = (hi._3 - 25)
1329- func hs (eL,K) = {
1330- let ax = if ((K == hq))
1331- then (hp[K] - hr)
1332- else hp[K]
1333- let aB = if ((ax == 0))
1326+ eU(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6)
1327+ }
1328+ let hq = hj._1
1329+ let hr = value(indexOf(hq, max(hq)))
1330+ let hs = (hj._3 - 25)
1331+ func ht (eM,L) = {
1332+ let ay = if ((L == hr))
1333+ then (hq[L] - hs)
1334+ else hq[L]
1335+ let aC = if ((ay == 0))
13341336 then nil
1335- else split(drop(toString(pow(10, 0, ax, 0, 0, DOWN)), 1), "")
1336- let fQ = hk[K]
1337- func ht (hu,hv) = (hu :+ fQ)
1338-
1339- let hw = {
1340- let eN = aB
1341- let eO = size(eN)
1342- let eP = nil
1343- func hx (eR,eS) = if ((eS >= eO))
1344- then eR
1345- else ht(eR, eN[eS])
1346-
1347- func hy (eR,eS) = if ((eS >= eO))
1348- then eR
1337+ else split(drop(toString(pow(10, 0, ay, 0, 0, DOWN)), 1), "")
1338+ let fR = hl[L]
1339+ func hu (hv,hw) = (hv :+ fR)
1340+
1341+ let hx = {
1342+ let eO = aC
1343+ let eP = size(eO)
1344+ let eQ = nil
1345+ func hy (eS,eT) = if ((eT >= eP))
1346+ then eS
1347+ else hu(eS, eO[eT])
1348+
1349+ func hz (eS,eT) = if ((eT >= eP))
1350+ then eS
13491351 else throw("List size exceeds 25")
13501352
1351- hy(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(eP, 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)
1352- }
1353- (eL ++ hw)
1354- }
1355-
1356- let eW = {
1357- let eN = u
1358- let eO = size(eN)
1359- let eP = nil
1360- func hx (eR,eS) = if ((eS >= eO))
1361- then eR
1362- else hs(eR, eN[eS])
1363-
1364- func hy (eR,eS) = if ((eS >= eO))
1365- then eR
1353+ hz(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(eQ, 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)
1354+ }
1355+ (eM ++ hx)
1356+ }
1357+
1358+ let eX = {
1359+ let eO = v
1360+ let eP = size(eO)
1361+ let eQ = nil
1362+ func hy (eS,eT) = if ((eT >= eP))
1363+ then eS
1364+ else ht(eS, eO[eT])
1365+
1366+ func hz (eS,eT) = if ((eT >= eP))
1367+ then eS
13661368 else throw("List size exceeds 6")
13671369
1368- hy(hx(hx(hx(hx(hx(hx(eP, 0), 1), 2), 3), 4), 5), 6)
1369- }
1370- func hz (eL,fv) = (eL + eW[fv])
1371-
1372- let eN = hj
1373- let eO = size(eN)
1374- let eP = ""
1375- func hA (eR,eS) = if ((eS >= eO))
1376- then eR
1377- else hz(eR, eN[eS])
1378-
1379- func hB (eR,eS) = if ((eS >= eO))
1380- then eR
1370+ hz(hy(hy(hy(hy(hy(hy(eQ, 0), 1), 2), 3), 4), 5), 6)
1371+ }
1372+ func hA (eM,fw) = (eM + eX[fw])
1373+
1374+ let eO = hk
1375+ let eP = size(eO)
1376+ let eQ = ""
1377+ func hB (eS,eT) = if ((eT >= eP))
1378+ then eS
1379+ else hA(eS, eO[eT])
1380+
1381+ func hC (eS,eT) = if ((eT >= eP))
1382+ then eS
13811383 else throw("List size exceeds 25")
13821384
1383- hB(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(eP, 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)
1384- }
1385-
1386-
1387-func hC (hD) = {
1388- let hE = split(valueOrElse(getString(hD), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1389-[toString(valueOrElse(parseInt(hE[bs]), 0)), if ((size(split(hE[bt], "_")) == aM))
1390- then hE[bt]
1391- else "0_0_0_0_0_0", if ((size(split(hE[bu], "_")) == aM))
1392- then hE[bu]
1393- else "0_0_0_0_0_0", hE[bv]]
1394- }
1395-
1396-
1397-func hF (hG) = {
1398- let fj = split(hG, "_")
1399- ((aP * (parseIntValue(fj[1]) + 1)) * parseIntValue(fj[0]))
1400- }
1401-
1402-
1403-func hH (hI) = {
1404- let hJ = hI[bm]
1405- func hK (eL,hL) = (eL + parseIntValue(hL))
1406-
1407- func hM (eL,hL) = {
1408- let K = eL._1
1409- let eE = (((parseIntValue(hL) + bi) - 1) / bi)
1410- $Tuple2((K + 1), (eL._2 + (eE * o)))
1411- }
1412-
1413- let hN = {
1414- let eN = split(hI[bk], "_")
1415- let eO = size(eN)
1416- let eP = 0
1417- func eQ (eR,eS) = if ((eS >= eO))
1418- then eR
1419- else hK(eR, eN[eS])
1420-
1421- func eT (eR,eS) = if ((eS >= eO))
1422- then eR
1385+ hC(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(eQ, 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)
1386+ }
1387+
1388+
1389+func hD (hE) = {
1390+ let hF = split(valueOrElse(getString(hE), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
1391+[toString(valueOrElse(parseInt(hF[bt]), 0)), if ((size(split(hF[bu], "_")) == aN))
1392+ then hF[bu]
1393+ else "0_0_0_0_0_0", if ((size(split(hF[bv], "_")) == aN))
1394+ then hF[bv]
1395+ else "0_0_0_0_0_0", hF[bw]]
1396+ }
1397+
1398+
1399+func hG (hH) = {
1400+ let fk = split(hH, "_")
1401+ ((aQ * (parseIntValue(fk[1]) + 1)) * parseIntValue(fk[0]))
1402+ }
1403+
1404+
1405+func hI (hJ) = {
1406+ let hK = hJ[bn]
1407+ func hL (eM,hM) = (eM + parseIntValue(hM))
1408+
1409+ func hN (eM,hM) = {
1410+ let L = eM._1
1411+ let eF = (((parseIntValue(hM) + bj) - 1) / bj)
1412+ $Tuple2((L + 1), (eM._2 + (eF * p)))
1413+ }
1414+
1415+ let hO = {
1416+ let eO = split(hJ[bl], "_")
1417+ let eP = size(eO)
1418+ let eQ = 0
1419+ func eR (eS,eT) = if ((eT >= eP))
1420+ then eS
1421+ else hL(eS, eO[eT])
1422+
1423+ func eU (eS,eT) = if ((eT >= eP))
1424+ then eS
14231425 else throw("List size exceeds 6")
14241426
1425- eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
1426- }
1427- let hO = {
1428- let eN = split(hI[bl], "_")
1429- let eO = size(eN)
1430- let eP = 0
1431- func hx (eR,eS) = if ((eS >= eO))
1432- then eR
1433- else hK(eR, eN[eS])
1434-
1435- func hy (eR,eS) = if ((eS >= eO))
1436- then eR
1427+ eU(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6)
1428+ }
1429+ let hP = {
1430+ let eO = split(hJ[bm], "_")
1431+ let eP = size(eO)
1432+ let eQ = 0
1433+ func hy (eS,eT) = if ((eT >= eP))
1434+ then eS
1435+ else hL(eS, eO[eT])
1436+
1437+ func hz (eS,eT) = if ((eT >= eP))
1438+ then eS
14371439 else throw("List size exceeds 6")
14381440
1439- hy(hx(hx(hx(hx(hx(hx(eP, 0), 1), 2), 3), 4), 5), 6)
1440- }
1441- let hP = if ((hJ == ""))
1441+ hz(hy(hy(hy(hy(hy(hy(eQ, 0), 1), 2), 3), 4), 5), 6)
1442+ }
1443+ let hQ = if ((hK == ""))
14421444 then 0
1443- else ( let eN = split_4C(hJ, "_")
1444- let eO = size(eN)
1445- let eP = $Tuple2(0, 0)
1446- func hA (eR,eS) = if ((eS >= eO))
1447- then eR
1448- else hM(eR, eN[eS])
1449-
1450- func hB (eR,eS) = if ((eS >= eO))
1451- then eR
1445+ else ( let eO = split_4C(hK, "_")
1446+ let eP = size(eO)
1447+ let eQ = $Tuple2(0, 0)
1448+ func hB (eS,eT) = if ((eT >= eP))
1449+ then eS
1450+ else hN(eS, eO[eT])
1451+
1452+ func hC (eS,eT) = if ((eT >= eP))
1453+ then eS
14521454 else throw("List size exceeds 50")
14531455
1454- hB(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(eP, 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
1455- ((hN + hO) + hP)
1456- }
1457-
1458-
1459-func hQ (hR,hS,hT) = {
1460- let hG = ((toString(hS) + "_") + toString(hT))
1461- let hU = hF(hG)
1462- let hV = valueOrElse(getString(hR), (hG + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1463- let hW = split_4C(hV, ":")
1464- let hX = hH(hW)
1465- let hY = if ((5 > size(hW)))
1466- then makeString(["0", toString(hX), toString((hU - hX)), toString(hU)], "_")
1456+ hC(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(eQ, 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
1457+ ((hO + hP) + hQ)
1458+ }
1459+
1460+
1461+func hR (hS,hT,hU) = {
1462+ let hH = ((toString(hT) + "_") + toString(hU))
1463+ let hV = hG(hH)
1464+ let hW = valueOrElse(getString(hS), (hH + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
1465+ let hX = split_4C(hW, ":")
1466+ let hY = hI(hX)
1467+ let hZ = if ((5 > size(hX)))
1468+ then makeString(["0", toString(hY), toString((hV - hY)), toString(hV)], "_")
14671469 else {
1468- let hZ = split(hW[bn], "_")
1469- let ia = parseIntValue(hZ[bo])
1470- let ib = if ((size(hZ) > 1))
1471- then parseIntValue(hZ[bp])
1472- else hX
1473- makeString([toString(ia), toString(ib), toString(((hU - ia) - ib)), toString(hU)], "_")
1474- }
1475-[hW[bj], if ((size(split(hW[bk], "_")) == aM))
1476- then hW[bk]
1477- else "0_0_0_0_0_0", if ((size(split(hW[bl], "_")) == aM))
1478- then hW[bl]
1479- else "0_0_0_0_0_0", hW[bm], hY]
1480- }
1481-
1482-
1483-func ic (hI) = {
1484- let id = hH(hI)
1485- let ie = parseIntValue(split(hI[bn], "_")[bo])
1486- ((hF(hI[bj]) - id) - ie)
1487- }
1488-
1489-
1490-func if (ig,hI,ih) = if ((size(ig) != 3))
1470+ let ia = split(hX[bo], "_")
1471+ let ib = parseIntValue(ia[bp])
1472+ let ic = if ((size(ia) > 1))
1473+ then parseIntValue(ia[bq])
1474+ else hY
1475+ makeString([toString(ib), toString(ic), toString(((hV - ib) - ic)), toString(hV)], "_")
1476+ }
1477+[hX[bk], if ((size(split(hX[bl], "_")) == aN))
1478+ then hX[bl]
1479+ else "0_0_0_0_0_0", if ((size(split(hX[bm], "_")) == aN))
1480+ then hX[bm]
1481+ else "0_0_0_0_0_0", hX[bn], hZ]
1482+ }
1483+
1484+
1485+func id (hJ) = {
1486+ let ie = hI(hJ)
1487+ let if = parseIntValue(split(hJ[bo], "_")[bp])
1488+ ((hG(hJ[bk]) - ie) - if)
1489+ }
1490+
1491+
1492+func ig (ih,hJ,ii) = if ((size(ih) != 3))
14911493 then throw("cargoListStr should contain exactly 2 ':' separators")
14921494 else {
1493- let ii = split(ig[0], "_")
1494- let ij = split(ig[1], "_")
1495- let ik = if ((ig[2] == ""))
1495+ let ij = split(ih[0], "_")
1496+ let ik = split(ih[1], "_")
1497+ let il = if ((ih[2] == ""))
14961498 then nil
1497- else split_4C(ig[2], "_")
1498- if ((size(ii) != aM))
1499+ else split_4C(ih[2], "_")
1500+ if ((size(ij) != aN))
14991501 then throw("All 6 resources should be passed")
1500- else if ((size(ij) != aM))
1502+ else if ((size(ik) != aN))
15011503 then throw("All 6 materials should be passed")
15021504 else {
1503- let gQ = ic(hI)
1504- let il = split(hI[bk], "_")
1505- let im = split(hI[bl], "_")
1506- let in = if ((hI[bm] == ""))
1505+ let gR = id(hJ)
1506+ let im = split(hJ[bl], "_")
1507+ let in = split(hJ[bm], "_")
1508+ let io = if ((hJ[bn] == ""))
15071509 then nil
1508- else split_4C(hI[bm], "_")
1509- let gO = split(ih[bt], "_")
1510- let io = split(ih[bu], "_")
1511- let ip = if ((ih[bv] == ""))
1510+ else split_4C(hJ[bn], "_")
1511+ let gP = split(ii[bu], "_")
1512+ let ip = split(ii[bv], "_")
1513+ let iq = if ((ii[bw] == ""))
15121514 then nil
1513- else split_4C(ih[bv], "_")
1514- func iq (eL,hL) = {
1515- let gy = eL._1
1516- let ir = parseIntValue(hL)
1517- let is = parseIntValue(il[gy])
1518- let it = parseIntValue(gO[gy])
1519- if ((ir == 0))
1520- then $Tuple4((gy + 1), (eL._2 :+ il[gy]), (eL._3 :+ gO[gy]), eL._4)
1521- else if ((ir > 0))
1522- then if ((ir > it))
1523- then throw((((("Attempt to take " + hL) + " from backpack, but only ") + toString(it)) + " available"))
1524- else $Tuple4((gy + 1), (eL._2 :+ toString((is + ir))), (eL._3 :+ toString((it - ir))), (eL._4 + ir))
1525- else if ((-(ir) > is))
1526- then throw((((("Attempt to take " + toString(-(ir))) + " from warehouse, but only ") + toString(is)) + " available"))
1527- else $Tuple4((gy + 1), (eL._2 :+ toString((is + ir))), (eL._3 :+ toString((it - ir))), (eL._4 + ir))
1515+ else split_4C(ii[bw], "_")
1516+ func ir (eM,hM) = {
1517+ let gz = eM._1
1518+ let is = parseIntValue(hM)
1519+ let it = parseIntValue(im[gz])
1520+ let iu = parseIntValue(gP[gz])
1521+ if ((is == 0))
1522+ then $Tuple4((gz + 1), (eM._2 :+ im[gz]), (eM._3 :+ gP[gz]), eM._4)
1523+ else if ((is > 0))
1524+ then if ((is > iu))
1525+ then throw((((("Attempt to take " + hM) + " from backpack, but only ") + toString(iu)) + " available"))
1526+ else $Tuple4((gz + 1), (eM._2 :+ toString((it + is))), (eM._3 :+ toString((iu - is))), (eM._4 + is))
1527+ else if ((-(is) > it))
1528+ then throw((((("Attempt to take " + toString(-(is))) + " from warehouse, but only ") + toString(it)) + " available"))
1529+ else $Tuple4((gz + 1), (eM._2 :+ toString((it + is))), (eM._3 :+ toString((iu - is))), (eM._4 + is))
15281530 }
15291531
1530- let eW = {
1531- let eN = ii
1532- let eO = size(eN)
1533- let eP = $Tuple4(0, nil, nil, 0)
1534- func eQ (eR,eS) = if ((eS >= eO))
1535- then eR
1536- else iq(eR, eN[eS])
1537-
1538- func eT (eR,eS) = if ((eS >= eO))
1539- then eR
1532+ let eX = {
1533+ let eO = ij
1534+ let eP = size(eO)
1535+ let eQ = $Tuple4(0, nil, nil, 0)
1536+ func eR (eS,eT) = if ((eT >= eP))
1537+ then eS
1538+ else ir(eS, eO[eT])
1539+
1540+ func eU (eS,eT) = if ((eT >= eP))
1541+ then eS
15401542 else throw("List size exceeds 6")
15411543
1542- eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
1544+ eU(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6)
15431545 }
1544- func iu (eL,hL) = {
1545- let gy = eL._1
1546- let ir = parseIntValue(hL)
1547- let iv = parseIntValue(im[gy])
1548- let iw = parseIntValue(io[gy])
1549- if ((ir == 0))
1550- then $Tuple4((gy + 1), (eL._2 :+ im[gy]), (eL._3 :+ io[gy]), eL._4)
1551- else if ((ir > 0))
1552- then if ((ir > iw))
1553- then throw((((("Attempt to take " + hL) + " from backpack, but only ") + toString(iw)) + " available"))
1554- else $Tuple4((gy + 1), (eL._2 :+ toString((iv + ir))), (eL._3 :+ toString((iw - ir))), (eL._4 + ir))
1555- else if ((-(ir) > iv))
1556- then throw((((("Attempt to take " + toString(-(ir))) + " from warehouse, but only ") + toString(iv)) + " available"))
1557- else $Tuple4((gy + 1), (eL._2 :+ toString((iv + ir))), (eL._3 :+ toString((iw - ir))), (eL._4 + ir))
1546+ func iv (eM,hM) = {
1547+ let gz = eM._1
1548+ let is = parseIntValue(hM)
1549+ let iw = parseIntValue(in[gz])
1550+ let ix = parseIntValue(ip[gz])
1551+ if ((is == 0))
1552+ then $Tuple4((gz + 1), (eM._2 :+ in[gz]), (eM._3 :+ ip[gz]), eM._4)
1553+ else if ((is > 0))
1554+ then if ((is > ix))
1555+ then throw((((("Attempt to take " + hM) + " from backpack, but only ") + toString(ix)) + " available"))
1556+ else $Tuple4((gz + 1), (eM._2 :+ toString((iw + is))), (eM._3 :+ toString((ix - is))), (eM._4 + is))
1557+ else if ((-(is) > iw))
1558+ then throw((((("Attempt to take " + toString(-(is))) + " from warehouse, but only ") + toString(iw)) + " available"))
1559+ else $Tuple4((gz + 1), (eM._2 :+ toString((iw + is))), (eM._3 :+ toString((ix - is))), (eM._4 + is))
15581560 }
15591561
1560- let gg = {
1561- let eN = ij
1562- let eO = size(eN)
1563- let eP = $Tuple4(0, nil, nil, eW._4)
1564- func hx (eR,eS) = if ((eS >= eO))
1565- then eR
1566- else iu(eR, eN[eS])
1567-
1568- func hy (eR,eS) = if ((eS >= eO))
1569- then eR
1562+ let gh = {
1563+ let eO = ik
1564+ let eP = size(eO)
1565+ let eQ = $Tuple4(0, nil, nil, eX._4)
1566+ func hy (eS,eT) = if ((eT >= eP))
1567+ then eS
1568+ else iv(eS, eO[eT])
1569+
1570+ func hz (eS,eT) = if ((eT >= eP))
1571+ then eS
15701572 else throw("List size exceeds 6")
15711573
1572- hy(hx(hx(hx(hx(hx(hx(eP, 0), 1), 2), 3), 4), 5), 6)
1574+ hz(hy(hy(hy(hy(hy(hy(eQ, 0), 1), 2), 3), 4), 5), 6)
15731575 }
1574- func ix (eL,hL) = {
1575- let gy = eL._1
1576- let ir = parseIntValue(hL)
1577- let iy = if ((size(in) > gy))
1578- then parseIntValue(in[gy])
1576+ func iy (eM,hM) = {
1577+ let gz = eM._1
1578+ let is = parseIntValue(hM)
1579+ let iz = if ((size(io) > gz))
1580+ then parseIntValue(io[gz])
15791581 else 0
1580- let iz = if ((size(ip) > gy))
1581- then parseIntValue(ip[gy])
1582+ let iA = if ((size(iq) > gz))
1583+ then parseIntValue(iq[gz])
15821584 else 0
1583- if ((ir == 0))
1584- then $Tuple4((gy + 1), (eL._2 :+ toString(iy)), (eL._3 :+ toString(iz)), eL._4)
1585- else if ((ir > 0))
1586- then if ((ir > iz))
1587- then throw((((("Attempt to take " + hL) + " from backpack, but only ") + toString(iz)) + " available"))
1585+ if ((is == 0))
1586+ then $Tuple4((gz + 1), (eM._2 :+ toString(iz)), (eM._3 :+ toString(iA)), eM._4)
1587+ else if ((is > 0))
1588+ then if ((is > iA))
1589+ then throw((((("Attempt to take " + hM) + " from backpack, but only ") + toString(iA)) + " available"))
15881590 else {
1589- let iA = (eB((iy + ir), bi) - eB(iy, bi))
1590- $Tuple4((gy + 1), (eL._2 :+ toString((iy + ir))), (eL._3 :+ toString((iz - ir))), (eL._4 + iA))
1591+ let iB = (eC((iz + is), bj) - eC(iz, bj))
1592+ $Tuple4((gz + 1), (eM._2 :+ toString((iz + is))), (eM._3 :+ toString((iA - is))), (eM._4 + iB))
15911593 }
1592- else if ((-(ir) > iy))
1593- then throw((((("Attempt to take " + toString(-(ir))) + " from warehouse, but only ") + toString(iy)) + " available"))
1594+ else if ((-(is) > iz))
1595+ then throw((((("Attempt to take " + toString(-(is))) + " from warehouse, but only ") + toString(iz)) + " available"))
15941596 else {
1595- let iA = (eB((iy + ir), bi) - eB(iy, bi))
1596- $Tuple4((gy + 1), (eL._2 :+ toString((iy + ir))), (eL._3 :+ toString((iz - ir))), (eL._4 + iA))
1597+ let iB = (eC((iz + is), bj) - eC(iz, bj))
1598+ $Tuple4((gz + 1), (eM._2 :+ toString((iz + is))), (eM._3 :+ toString((iA - is))), (eM._4 + iB))
15971599 }
15981600 }
15991601
1600- let hE = if ((size(ik) != 0))
1602+ let hF = if ((size(il) != 0))
16011603 then {
1602- let eN = ik
1603- let eO = size(eN)
1604- let eP = $Tuple4(0, nil, nil, gg._4)
1605- func hA (eR,eS) = if ((eS >= eO))
1606- then eR
1607- else ix(eR, eN[eS])
1608-
1609- func hB (eR,eS) = if ((eS >= eO))
1610- then eR
1604+ let eO = il
1605+ let eP = size(eO)
1606+ let eQ = $Tuple4(0, nil, nil, gh._4)
1607+ func hB (eS,eT) = if ((eT >= eP))
1608+ then eS
1609+ else iy(eS, eO[eT])
1610+
1611+ func hC (eS,eT) = if ((eT >= eP))
1612+ then eS
16111613 else throw("List size exceeds 50")
16121614
1613- hB(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(eP, 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)
1615+ hC(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(eQ, 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)
16141616 }
1615- else $Tuple4(0, in, ip, gg._4)
1616- let iB = hE._4
1617- if ((iB > gQ))
1618- then throw((((("Attempt to put total " + toString(iB)) + " stuff, but only ") + toString(gQ)) + " warehouse space left"))
1619- else $Tuple7(makeString(eW._2, "_"), makeString(gg._2, "_"), makeString_2C(hE._2, "_"), makeString(eW._3, "_"), makeString(gg._3, "_"), makeString_2C(hE._3, "_"), iB)
1617+ else $Tuple4(0, io, iq, gh._4)
1618+ let iC = hF._4
1619+ if ((iC > gR))
1620+ then throw((((("Attempt to put total " + toString(iC)) + " stuff, but only ") + toString(gR)) + " warehouse space left"))
1621+ else $Tuple7(makeString(eX._2, "_"), makeString(gh._2, "_"), makeString_2C(hF._2, "_"), makeString(eX._3, "_"), makeString(gh._3, "_"), makeString_2C(hF._3, "_"), iC)
16201622 }
16211623 }
16221624
16231625
1624-func iC (iD,iE) = {
1625- let bW = toString(iD)
1626- let iF = gW(toBigInt(iE))
1627- let iG = valueOrElse(getInteger(ed()), (ec + 1))
1628- let eh = toString(iG)
1629- let hf = toInt((iF % dW))
1630- let gB = hd(iF, hf)
1631- let ae = bb[hf]
1632- let iH = Issue(eA(eh, "S"), makeString([eh, "S", gB, ae], "_"), 1, 0, false)
1633- let bA = calculateAssetId(iH)
1634- let iI = toBase58String(bA)
1635- $Tuple2([IntegerEntry(ed(), (iG + 1)), iH, StringEntry(eg(eh), iI), StringEntry(bz(iI), bW), StringEntry(ej(eh), bW), IntegerEntry(bJ(iI), 0), IntegerEntry(ei(iI, bW), 0), ScriptTransfer(iD, 1, bA)], $Tuple2(iI, ae))
1636- }
1637-
1638-
1639-func iJ (bW,iK,iL) = if (!(sigVerify_8Kb(iK, iL, f)))
1626+func iD (iE,iF) = {
1627+ let bX = toString(iE)
1628+ let iG = gX(toBigInt(iF))
1629+ let iH = valueOrElse(getInteger(ee()), (ed + 1))
1630+ let ei = toString(iH)
1631+ let hg = toInt((iG % dX))
1632+ let gC = he(iG, hg)
1633+ let af = bc[hg]
1634+ let iI = Issue(eB(ei, "S"), makeString([ei, "S", gC, af], "_"), 1, 0, false)
1635+ let bB = calculateAssetId(iI)
1636+ let iJ = toBase58String(bB)
1637+ $Tuple2([IntegerEntry(ee(), (iH + 1)), iI, StringEntry(eh(ei), iJ), StringEntry(bA(iJ), bX), StringEntry(ek(ei), bX), IntegerEntry(bK(iJ), 0), IntegerEntry(ej(iJ, bX), 0), ScriptTransfer(iE, 1, bB)], $Tuple2(iJ, af))
1638+ }
1639+
1640+
1641+func iK (bX,iL,iM) = if (!(sigVerify_8Kb(iL, iM, g)))
16401642 then throw("signature does not match")
16411643 else {
1642- let fj = split_4C(toUtf8String(iK), ";")
1643- let iM = split_4C(fj[0], "|")
1644- let iN = split(iM[er], "_")
1645- let iO = parseIntValue(iN[0])
1646- let iP = parseIntValue(iN[1])
1647- let iQ = split(fj[1], ":")
1648- let iR = iQ[0]
1649- let iS = parseIntValue(iM[es])
1650- if (if ((iS > (lastBlock.timestamp + dO)))
1644+ let fk = split_4C(toUtf8String(iL), ";")
1645+ let iN = split_4C(fk[0], "|")
1646+ let iO = split(iN[es], "_")
1647+ let iP = parseIntValue(iO[0])
1648+ let iQ = parseIntValue(iO[1])
1649+ let iR = split(fk[1], ":")
1650+ let iS = iR[0]
1651+ let iT = parseIntValue(iN[et])
1652+ if (if ((iT > (lastBlock.timestamp + dP)))
16511653 then true
1652- else ((lastBlock.timestamp - dO) > iS))
1653- then throw(((("signature outdated: logTime=" + toString(iS)) + ", bcTime=") + toString(lastBlock.timestamp)))
1654+ else ((lastBlock.timestamp - dP) > iT))
1655+ then throw(((("signature outdated: logTime=" + toString(iT)) + ", bcTime=") + toString(lastBlock.timestamp)))
16541656 else {
1655- let iT = iQ[1]
1656- let iU = valueOrElse(getString(au(bW)), "")
1657- if ((iU != iT))
1658- then throw(((("Tx ids don't match! In state: " + iU) + ", in msg: ") + iT))
1657+ let iU = iR[1]
1658+ let iV = valueOrElse(getString(av(bX)), "")
1659+ if ((iV != iU))
1660+ then throw(((("Tx ids don't match! In state: " + iV) + ", in msg: ") + iU))
16591661 else {
1660- let bO = valueOrErrorMessage(getString(bS(bW)), "You don't have a duck staked")
1661- let iV = cP(bO)
1662- let iW = dw(valueOrElse(getInteger(cS(bO)), 0))
1663- let iX = valueOrElse(getInteger(iV), iW)
1664- if ((iX != iO))
1665- then throw(((("oldHealth=" + toString(iX)) + " from state does not match one from flight log=") + toString(iO)))
1666- else if ((0 >= iO))
1662+ let bP = valueOrErrorMessage(getString(bT(bX)), "You don't have a duck staked")
1663+ let iW = cQ(bP)
1664+ let iX = dx(valueOrElse(getInteger(cT(bP)), 0))
1665+ let iY = valueOrElse(getInteger(iW), iX)
1666+ if ((iY != iP))
1667+ then throw(((("oldHealth=" + toString(iY)) + " from state does not match one from flight log=") + toString(iP)))
1668+ else if ((0 >= iP))
16671669 then throw("You can't fly with zero health")
1668- else if (!(gj(bO)))
1670+ else if (!(gk(bP)))
16691671 then throw("Equipment incompatible")
16701672 else {
1671- let iY = if ((size(iM) > et))
1672- then iM[et]
1673+ let iZ = if ((size(iN) > eu))
1674+ then iN[eu]
16731675 else ""
1674- let iZ = if ((size(iM) > eu))
1675- then iM[eu]
1676+ let ja = if ((size(iN) > ev))
1677+ then iN[ev]
16761678 else ""
1677- let ja = if (if ((iP > 0))
1678- then (iY == "$")
1679+ let jb = if (if ((iQ > 0))
1680+ then (iZ == "$")
16791681 else false)
1680- then al(invoke(L, "sendUsdtPrize", [bW], nil))
1682+ then am(invoke(M, "sendUsdtPrize", [bX], nil))
16811683 else 0
1682- $Tuple5(iP, bO, ja, iR, iZ)
1684+ $Tuple5(iQ, bP, jb, iS, ja)
16831685 }
16841686 }
16851687 }
16861688 }
16871689
16881690
1689-func jb (bI,jc) = {
1690- let hT = valueOrElse(getInteger(bJ(bI)), 0)
1691- let jd = valueOrElse(getInteger(bD(aL, bI)), 0)
1692- let je = (hT / 6)
1693- let jf = (hT / 7)
1694- ((aO + fraction(aO, ((hT + je) + (2 * jf)), 5)) + fraction(aO, jd, (jc * 5)))
1695- }
1696-
1697-
1698-func jg (av,jh,ji) = {
1699- let jj = if ((jh == eo))
1700- then $Tuple2(ji, valueOrElse(getString(bS(av)), ""))
1691+func jc (bJ,jd) = {
1692+ let hU = valueOrElse(getInteger(bK(bJ)), 0)
1693+ let je = valueOrElse(getInteger(bE(aM, bJ)), 0)
1694+ let jf = (hU / 6)
1695+ let jg = (hU / 7)
1696+ ((aP + fraction(aP, ((hU + jf) + (2 * jg)), 5)) + fraction(aP, je, (jd * 5)))
1697+ }
1698+
1699+
1700+func jh (aw,ji,jj) = {
1701+ let jk = if ((ji == ep))
1702+ then $Tuple2(jj, valueOrElse(getString(bT(aw)), ""))
17011703 else {
1702- let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
1703- let jk = valueOrElse(getString(bU(bO)), aQ)
1704- let cp = split(value(jk), "_")
1705- if ((cp[bx] != "L"))
1706- then throw((("Duck location type is " + cp[bx]) + ", but should be L"))
1707- else $Tuple2(cp[by], bO)
1708- }
1709- let bI = jj._1
1710- let jl = jj._2
1711- let jm = value(assetInfo(fromBase58String(bI)))
1712- let jn = bC(bI)
1713- let jo = valueOrErrorMessage(getInteger(jn), (("Land " + jm.name) + " is not staked"))
1714- let jp = valueOrErrorMessage(getString(bz(bI)), (("NFT " + jm.name) + " is orphaned"))
1715- if ((jp != av))
1716- then throw((aI + " is not yours"))
1704+ let bP = valueOrErrorMessage(getString(bT(aw)), "You don't have a duck staked")
1705+ let jl = valueOrElse(getString(bV(bP)), aR)
1706+ let cq = split(value(jl), "_")
1707+ if ((cq[by] != "L"))
1708+ then throw((("Duck location type is " + cq[by]) + ", but should be L"))
1709+ else $Tuple2(cq[bz], bP)
1710+ }
1711+ let bJ = jk._1
1712+ let jm = jk._2
1713+ let jn = value(assetInfo(fromBase58String(bJ)))
1714+ let jo = bD(bJ)
1715+ let jp = valueOrErrorMessage(getInteger(jo), (("Land " + jn.name) + " is not staked"))
1716+ let jq = valueOrErrorMessage(getString(bA(bJ)), (("NFT " + jn.name) + " is orphaned"))
1717+ if ((jq != aw))
1718+ then throw((aJ + " is not yours"))
17171719 else {
1718- let jq = split(jm.description, "_")
1719- $Tuple4(jl, bI, jq, jo)
1720- }
1721- }
1722-
1723-
1724-func jr (av,eC,jh,ji) = if ((0 > eC))
1720+ let jr = split(jn.description, "_")
1721+ $Tuple4(jm, bJ, jr, jp)
1722+ }
1723+ }
1724+
1725+
1726+func js (aw,eD,ji,jj) = if ((0 > eD))
17251727 then throw("Negative amount")
17261728 else {
1727- let fQ = jg(av, jh, ji)
1728- let ar = fQ._3[T]
1729- let gu = gA(fQ._3[U])
1730- let gE = (aH() - fQ._4)
1731- if ((0 > gE))
1732- then throw(((("Saved timestamp is in future, saved = " + toString(fQ._4)) + ", final = ") + toString(aH())))
1729+ let fR = jh(aw, ji, jj)
1730+ let as = fR._3[U]
1731+ let gv = gB(fR._3[V])
1732+ let gF = (aI() - fR._4)
1733+ if ((0 > gF))
1734+ then throw(((("Saved timestamp is in future, saved = " + toString(fR._4)) + ", final = ") + toString(aI())))
17331735 else {
1734- let jc = aq(ar)
1735- let js = jb(fQ._2, jc)
1736- let jt = fraction(gE, (js * jc), dJ)
1737- if ((eC > jt))
1738- then throw(((("Not enough resources, available = " + toString(jt)) + ", requested = ") + toString(eC)))
1736+ let jd = ar(as)
1737+ let jt = jc(fR._2, jd)
1738+ let ju = fraction(gF, (jt * jd), dK)
1739+ if ((eD > ju))
1740+ then throw(((("Not enough resources, available = " + toString(ju)) + ", requested = ") + toString(eD)))
17391741 else {
1740- let ju = fraction((jt - eC), dJ, (js * jc))
1741- let jv = (aH() - ju)
1742- let hS = (jc / p)
1743- let gP = gK(gu, (gE - ju), hS, js)
1744- let hR = bH(fQ._2)
1745- let hT = valueOrElse(getInteger(bJ(fQ._2)), 0)
1746- let hI = hQ(hR, hS, hT)
1747- let hZ = split(hI[bn], "_")
1748- let gQ = parseIntValue(hZ[bq])
1749- if (if ((jh == eo))
1750- then (eC > gQ)
1742+ let jv = fraction((ju - eD), dK, (jt * jd))
1743+ let jw = (aI() - jv)
1744+ let hT = (jd / q)
1745+ let gQ = gL(gv, (gF - jv), hT, jt)
1746+ let hS = bI(fR._2)
1747+ let hU = valueOrElse(getInteger(bK(fR._2)), 0)
1748+ let hJ = hR(hS, hT, hU)
1749+ let ia = split(hJ[bo], "_")
1750+ let gR = parseIntValue(ia[br])
1751+ if (if ((ji == ep))
1752+ then (eD > gR)
17511753 else false)
1752- then throw((("Only " + toString(gQ)) + " space left in warehouse"))
1754+ then throw((("Only " + toString(gR)) + " space left in warehouse"))
17531755 else {
1754- let hD = bT(fQ._1)
1755- let ih = hC(hD)
1756- let gO = split(ih[bt], "_")
1757- let gN = split(hI[bk], "_")
1758- let jw = if ((jh == eo))
1759- then $Tuple4(gC(gN, gu, (gE - ju), hS, js), ih[bt], (parseIntValue(hZ[bp]) + gP._2), (parseIntValue(hZ[bq]) - gP._2))
1760- else if ((jh == ep))
1761- then $Tuple4(hI[bk], gC(gO, gu, (gE - ju), hS, js), parseIntValue(hZ[bp]), parseIntValue(hZ[bq]))
1756+ let hE = bU(fR._1)
1757+ let ii = hD(hE)
1758+ let gP = split(ii[bu], "_")
1759+ let gO = split(hJ[bl], "_")
1760+ let jx = if ((ji == ep))
1761+ then $Tuple4(gD(gO, gv, (gF - jv), hT, jt), ii[bu], (parseIntValue(ia[bq]) + gQ._2), (parseIntValue(ia[br]) - gQ._2))
1762+ else if ((ji == eq))
1763+ then $Tuple4(hJ[bl], gD(gP, gv, (gF - jv), hT, jt), parseIntValue(ia[bq]), parseIntValue(ia[br]))
17621764 else {
1763- let jx = gM(gN, gO, gP, gQ)
1764- let jy = min([parseIntValue(hZ[bq]), gP._2])
1765- $Tuple4(jx._1, jx._2, (parseIntValue(hZ[bp]) + jy), (parseIntValue(hZ[bq]) - jy))
1765+ let jy = gN(gO, gP, gQ, gR)
1766+ let jz = min([parseIntValue(ia[br]), gQ._2])
1767+ $Tuple4(jy._1, jy._2, (parseIntValue(ia[bq]) + jz), (parseIntValue(ia[br]) - jz))
17661768 }
1767- let jz = jw._1
1768- let jA = jw._2
1769- let jB = jw._3
1770- let jC = jw._4
1771- $Tuple5([IntegerEntry(bC(fQ._2), jv), IntegerEntry(bF(aI, fQ._2, av), jv)], hD, [ih[bs], jA, ih[bu], ih[bv]], hR, [hI[bj], jz, hI[bl], hI[bm], makeString([hZ[bo], toString(jB), toString(jC), hZ[br]], "_")])
1769+ let jA = jx._1
1770+ let jB = jx._2
1771+ let jC = jx._3
1772+ let jD = jx._4
1773+ $Tuple5([IntegerEntry(bD(fR._2), jw), IntegerEntry(bG(aJ, fR._2, aw), jw)], hE, [ii[bt], jB, ii[bv], ii[bw]], hS, [hJ[bk], jA, hJ[bm], hJ[bn], makeString([ia[bp], toString(jC), toString(jD), ia[bs]], "_")])
17721774 }
17731775 }
17741776 }
17751777 }
17761778
17771779
1778-func jD (av,bI,jc,jh) = {
1779- let jn = bC(bI)
1780- let jo = value(getInteger(jn))
1781- let jt = (fraction((aH() - jo), jb(bI, jc), dJ) * jc)
1782- jr(av, jt, jh, bI)
1783- }
1784-
1785-
1786-func jE (eY,iD,jF,bI) = {
1787- let av = toString(iD)
1788- let fQ = jg(av, eq, bI)
1789- let jc = aq(fQ._3[T])
1790- let jG = bJ(fQ._2)
1791- let jH = valueOrElse(getInteger(jG), 0)
1780+func jE (aw,bJ,jd,ji) = {
1781+ let jo = bD(bJ)
1782+ let jp = value(getInteger(jo))
1783+ let ju = (fraction((aI() - jp), jc(bJ, jd), dK) * jd)
1784+ js(aw, ju, ji, bJ)
1785+ }
1786+
1787+
1788+func jF (eZ,iE,jG,bJ) = {
1789+ let aw = toString(iE)
1790+ let fR = jh(aw, er, bJ)
1791+ let jd = ar(fR._3[U])
1792+ let jH = bK(fR._2)
1793+ let jI = valueOrElse(getInteger(jH), 0)
17921794 if (if (!(b))
1793- then (jH >= 3)
1795+ then (jI >= 3)
17941796 else false)
17951797 then throw("Currently max infrastructure level = 3")
17961798 else {
1797- let jI = ((sqrt(jc, 0, 0, DOWN) / 5) + 2)
1798- let dB = (jH + 1)
1799+ let jJ = ((sqrt(jd, 0, 0, DOWN) / 5) + 2)
1800+ let dC = (jI + 1)
17991801 if (if (b)
1800- then (dB > jI)
1802+ then (dC > jJ)
18011803 else false)
1802- then throw(("Currently max infrastructure level = " + toString(jI)))
1804+ then throw(("Currently max infrastructure level = " + toString(jJ)))
18031805 else {
1804- let jJ = fraction(dR, (jc * dB), p)
1805- if (if (!(eY))
1806- then (jF != jJ)
1806+ let jK = fraction(dS, (jd * dC), q)
1807+ if (if (!(eZ))
1808+ then (jG != jK)
18071809 else false)
1808- then throw(("Payment attached should be " + toString(jJ)))
1810+ then throw(("Payment attached should be " + toString(jK)))
18091811 else {
1810- let hD = bT(fQ._1)
1811- let ih = hC(hD)
1812- let jK = split(ih[bu], "_")
1813- let jL = fraction(k, (jc * dB), p)
1814- let jM = makeString(eX(eY, jK, jL), "_")
1815- let jN = jD(av, fQ._2, jc, eq)
1816- let jO = jN._5
1817- let jP = hF(jO[bj])
1818- let jQ = makeString([split(jO[bj], "_")[0], toString(dB)], "_")
1819- let jR = hF(jQ)
1820- let hZ = split(jO[bn], "_")
1821- let jS = makeString([hZ[bo], hZ[bp], toString(((parseIntValue(hZ[bq]) + jR) - jP)), toString(jR)], "_")
1822- $Tuple3(([IntegerEntry(jG, dB), IntegerEntry(ei(fQ._2, av), dB), StringEntry(hD, makeString([ih[bs], jN._3[bt], jM, ih[bv]], ":")), StringEntry(jN._4, makeString([jQ, jO[bk], jO[bl], jO[bm], jS], ":"))] ++ jN._1), dB, jL)
1812+ let hE = bU(fR._1)
1813+ let ii = hD(hE)
1814+ let jL = split(ii[bv], "_")
1815+ let jM = fraction(l, (jd * dC), q)
1816+ let jN = makeString(eY(eZ, jL, jM), "_")
1817+ let jO = jE(aw, fR._2, jd, er)
1818+ let jP = jO._5
1819+ let jQ = hG(jP[bk])
1820+ let jR = makeString([split(jP[bk], "_")[0], toString(dC)], "_")
1821+ let jS = hG(jR)
1822+ let ia = split(jP[bo], "_")
1823+ let jT = makeString([ia[bp], ia[bq], toString(((parseIntValue(ia[br]) + jS) - jQ)), toString(jS)], "_")
1824+ $Tuple3(([IntegerEntry(jH, dC), IntegerEntry(ej(fR._2, aw), dC), StringEntry(hE, makeString([ii[bt], jO._3[bu], jN, ii[bw]], ":")), StringEntry(jO._4, makeString([jR, jP[bl], jP[bm], jP[bn], jT], ":"))] ++ jO._1), dC, jM)
18231825 }
18241826 }
18251827 }
18261828 }
18271829
18281830
1829-func jT (jU,jV,jW,jX) = {
1830- let dv = valueOrElse(getInteger(jV), 0)
1831- let dA = (dv + jX)
1832- let jY = dy(valueOrElse(getInteger(jU), 0), dA)
1833- $Tuple2([IntegerEntry(jU, jY[0]), IntegerEntry(jV, dA), IntegerEntry(jW, (valueOrElse(getInteger(jW), 0) + jY[1]))], dA)
1834- }
1835-
1836-
1837-func jZ (bO,jX) = {
1838- let jm = value(assetInfo(fromBase58String(bO)))
1839- let av = valueOrErrorMessage(getString(bR(bO)), (("NFT " + jm.name) + " is orphaned"))
1831+func jU (jV,jW,jX,jY) = {
1832+ let dw = valueOrElse(getInteger(jW), 0)
1833+ let dB = (dw + jY)
1834+ let jZ = dz(valueOrElse(getInteger(jV), 0), dB)
1835+ $Tuple2([IntegerEntry(jV, jZ[0]), IntegerEntry(jW, dB), IntegerEntry(jX, (valueOrElse(getInteger(jX), 0) + jZ[1]))], dB)
1836+ }
1837+
1838+
1839+func ka (bP,jY) = {
1840+ let jn = value(assetInfo(fromBase58String(bP)))
1841+ let aw = valueOrErrorMessage(getString(bS(bP)), (("NFT " + jn.name) + " is orphaned"))
18401842 if (if (if (c)
1841- then (jm.issuer == this)
1843+ then (jn.issuer == this)
18421844 else false)
1843- then contains(jm.name, aK)
1845+ then contains(jn.name, aL)
18441846 else false)
1845- then jT(cW(av), cV(av), cX(av), jX)
1846- else jT(cS(bO), cR(bO), cT(bO), jX)
1847- }
1848-
1849-
1850-func ka (av,jX) = jT(cW(av), cV(av), cX(av), jX)
1851-
1852-
1853-func kb (av) = {
1854- let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
1855- let kc = bM(av)
1856- let kd = getString(kc)
1857- if (!(isDefined(kd)))
1847+ then jU(cX(aw), cW(aw), cY(aw), jY)
1848+ else jU(cT(bP), cS(bP), cU(bP), jY)
1849+ }
1850+
1851+
1852+func kb (aw,jY) = jU(cX(aw), cW(aw), cY(aw), jY)
1853+
1854+
1855+func kc (aw) = {
1856+ let bP = valueOrErrorMessage(getString(bT(aw)), "You don't have a duck staked")
1857+ let kd = bN(aw)
1858+ let ke = getString(kd)
1859+ if (!(isDefined(ke)))
18581860 then throw("You are not eligible for ONBOARD artifact")
18591861 else {
1860- let ke = bP(av)
1861- let kf = getString(ke)
1862- if (isDefined(kf))
1863- then throw(("You already used your ONBOARD artifact on duck " + value(kf)))
1862+ let kf = bQ(aw)
1863+ let kg = getString(kf)
1864+ if (isDefined(kg))
1865+ then throw(("You already used your ONBOARD artifact on duck " + value(kg)))
18641866 else {
1865- let kg = bN(bO)
1866- let kh = getString(kg)
1867- if (isDefined(kh))
1868- then throw(((("The duck " + bO) + " already got points from ONBOARD artifact from user ") + value(kh)))
1869- else ([StringEntry(ke, bO), StringEntry(kg, av)] ++ jZ(bO, ds)._1)
1867+ let kh = bO(bP)
1868+ let ki = getString(kh)
1869+ if (isDefined(ki))
1870+ then throw(((("The duck " + bP) + " already got points from ONBOARD artifact from user ") + value(ki)))
1871+ else ([StringEntry(kf, bP), StringEntry(kh, aw)] ++ ka(bP, dt)._1)
18701872 }
18711873 }
18721874 }
18731875
18741876
1875-func ki (av,ji) = {
1876- let fQ = jg(av, eq, ji)
1877- let bI = fQ._2
1878- let jc = aq(fQ._3[T])
1879- let kj = bD(aL, bI)
1880- if ((valueOrElse(getInteger(kj), 0) > 0))
1877+func kj (aw,jj) = {
1878+ let fR = jh(aw, er, jj)
1879+ let bJ = fR._2
1880+ let jd = ar(fR._3[U])
1881+ let kk = bE(aM, bJ)
1882+ if ((valueOrElse(getInteger(kk), 0) > 0))
18811883 then throw("Presale artifact is already activated")
1882- else if ((parseIntValue(fQ._3[S]) > ec))
1883- then throw((((aI + " ") + bI) + " is not eligible for presale artifact"))
1884+ else if ((parseIntValue(fR._3[T]) > ed))
1885+ then throw((((aJ + " ") + bJ) + " is not eligible for presale artifact"))
18841886 else {
1885- let jN = jD(av, bI, jc, eq)
1886- (((jN._1 :+ IntegerEntry(kj, jc)) :+ StringEntry(jN._2, makeString(jN._3, ":"))) :+ StringEntry(jN._4, makeString(jN._5, ":")))
1887+ let jO = jE(aw, bJ, jd, er)
1888+ (((jO._1 :+ IntegerEntry(kk, jd)) :+ StringEntry(jO._2, makeString(jO._3, ":"))) :+ StringEntry(jO._4, makeString(jO._5, ":")))
18871889 }
18881890 }
18891891
18901892
1891-func kk (bO) = {
1892- let co = valueOrElse(getInteger(Q, bZ), 0)
1893- let jk = split(valueOrElse(getString(bU(bO)), aQ), "_")
1894- let cq = lastBlock.timestamp
1895- let cr = ci(Q, co)
1896- let ck = cr[ce]
1897- let cl = cr[cf]
1898- if ((jk[bx] != "T"))
1893+func kl (bP) = {
1894+ let cp = valueOrElse(getInteger(R, ca), 0)
1895+ let jl = split(valueOrElse(getString(bV(bP)), aR), "_")
1896+ let cr = lastBlock.timestamp
1897+ let cs = cj(R, cp)
1898+ let cl = cs[cf]
1899+ let cm = cs[cg]
1900+ if ((jl[by] != "T"))
18991901 then false
1900- else if (if (if ((parseIntValue(jk[bw]) == co))
1901- then (cl[ch] == "INPROGRESS")
1902+ else if (if (if ((parseIntValue(jl[bx]) == cp))
1903+ then (cm[ci] == "INPROGRESS")
19021904 else false)
1903- then (parseIntValue(ck[cg]) > cq)
1905+ then (parseIntValue(cl[ch]) > cr)
19041906 else false)
19051907 then throw("Your duck is taking part in the tournament")
1906- else ap(invoke(this, "exitTournamentInternal", [bO], nil))
1907- }
1908-
1909-
1910-func kl (km,dB,kn,av,ko,kp) = {
1911- let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
1912- if (kk(bO))
1908+ else aq(invoke(this, "exitTournamentInternal", [bP], nil))
1909+ }
1910+
1911+
1912+func km (kn,dC,ko,aw,kp,kq) = {
1913+ let bP = valueOrErrorMessage(getString(bT(aw)), "You don't have a duck staked")
1914+ if (kl(bP))
19131915 then throw("mergeInternal_checkTournament")
19141916 else {
1915- func kq (eL,bI) = {
1916- let jm = value(assetInfo(fromBase58String(bI)))
1917- let jn = bC(bI)
1918- let jo = valueOrErrorMessage(getInteger(jn), (("NFT " + jm.name) + " is not staked"))
1919- let jp = valueOrErrorMessage(getString(bz(bI)), (("NFT " + jm.name) + " is orphaned"))
1920- if ((jp != av))
1921- then throw((aI + " is not yours"))
1917+ func kr (eM,bJ) = {
1918+ let jn = value(assetInfo(fromBase58String(bJ)))
1919+ let jo = bD(bJ)
1920+ let jp = valueOrErrorMessage(getInteger(jo), (("NFT " + jn.name) + " is not staked"))
1921+ let jq = valueOrErrorMessage(getString(bA(bJ)), (("NFT " + jn.name) + " is orphaned"))
1922+ if ((jq != aw))
1923+ then throw((aJ + " is not yours"))
19221924 else {
1923- let jq = split(jm.description, "_")
1924- let ae = jq[V]
1925- if (if ((eL._3 != ""))
1926- then (eL._3 != ae)
1925+ let jr = split(jn.description, "_")
1926+ let af = jr[W]
1927+ if (if ((eM._3 != ""))
1928+ then (eM._3 != af)
19271929 else false)
19281930 then throw("Lands should be on the same continent to merge")
19291931 else {
1930- let ar = jq[T]
1931- let kr = eL._1
1932- let gy = valueOrErrorMessage(indexOf(kr, ar), "You haven't passed all the lands needed")
1933- let ks = (take(kr, gy) + drop(kr, (gy + 1)))
1934- let jc = aq(ar)
1935- let kt = (eL._2 + valueOrElse(getInteger(bD(aL, bI)), 0))
1936- let hT = valueOrElse(getInteger(bJ(bI)), 0)
1937- let ku = {
1938- let g = ar
1939- if (("S" == g))
1932+ let as = jr[U]
1933+ let ks = eM._1
1934+ let gz = valueOrErrorMessage(indexOf(ks, as), "You haven't passed all the lands needed")
1935+ let kt = (take(ks, gz) + drop(ks, (gz + 1)))
1936+ let jd = ar(as)
1937+ let ku = (eM._2 + valueOrElse(getInteger(bE(aM, bJ)), 0))
1938+ let hU = valueOrElse(getInteger(bK(bJ)), 0)
1939+ let kv = {
1940+ let h = as
1941+ if (("S" == h))
19401942 then 3
1941- else if (("M" == g))
1943+ else if (("M" == h))
19421944 then 4
1943- else if (("L" == g))
1945+ else if (("L" == h))
19441946 then 5
1945- else if (("XL" == g))
1947+ else if (("XL" == h))
19461948 then 6
19471949 else throw("Only S, M, L, XL can merge")
19481950 }
1949- if ((hT != ku))
1951+ if ((hU != kv))
19501952 then throw("All lands should be maxed to merge")
19511953 else {
1952- let eh = jq[S]
1953- let gu = gA(jq[U])
1954- let gE = (lastBlock.timestamp - jo)
1955- if ((0 > gE))
1956- then throw(((("Saved timestamp is in future, saved = " + toString(jo)) + ", current = ") + toString(lastBlock.timestamp)))
1954+ let ei = jr[T]
1955+ let gv = gB(jr[V])
1956+ let gF = (lastBlock.timestamp - jp)
1957+ if ((0 > gF))
1958+ then throw(((("Saved timestamp is in future, saved = " + toString(jp)) + ", current = ") + toString(lastBlock.timestamp)))
19571959 else {
1958- let js = jb(bI, jc)
1959- let hS = (jc / p)
1960- let jA = gC(split(eL._4, "_"), gu, gE, hS, js)
1961- let eV = gs(eL._6, gu, hS, -1)
1962- let kv = gs(eL._10, gu, hS, -1)
1963- let hm = gs(eL._9, gu, hS, 1)
1964- let kw = eL._7
1965- let K = indexOf(kw, bI)
1966- if (!(isDefined(K)))
1967- then throw(("Your staked lands don't contain " + bI))
1960+ let jt = jc(bJ, jd)
1961+ let hT = (jd / q)
1962+ let jB = gD(split(eM._4, "_"), gv, gF, hT, jt)
1963+ let eW = gt(eM._6, gv, hT, -1)
1964+ let kw = gt(eM._10, gv, hT, -1)
1965+ let hn = gt(eM._9, gv, hT, 1)
1966+ let kx = eM._7
1967+ let L = indexOf(kx, bJ)
1968+ if (!(isDefined(L)))
1969+ then throw(("Your staked lands don't contain " + bJ))
19681970 else {
1969- let kx = bB(bI)
1970- let ky = valueOrElse(getString(kx), "")
1971- $Tuple10(ks, kt, ae, jA, ((((((((((((eL._5 :+ DeleteEntry(bC(bI))) :+ DeleteEntry(bF(aI, bI, av))) :+ DeleteEntry(eg(eh))) :+ DeleteEntry(bz(bI))) :+ DeleteEntry(bJ(bI))) :+ DeleteEntry(ei(bI, av))) :+ DeleteEntry(bD(aL, bI))) :+ DeleteEntry(ej(eh))) :+ DeleteEntry(bH(bI))) :+ DeleteEntry(kx)) :+ Burn(fromBase58String(bI), 1)) ++ (if ((ky != ""))
1972- then [DeleteEntry(ee(ky))]
1973- else nil)), eV, removeByIndex(kw, value(K)), (eL._8 + jc), hm, kv)
1971+ let ky = bC(bJ)
1972+ let kz = valueOrElse(getString(ky), "")
1973+ $Tuple10(kt, ku, af, jB, ((((((((((((eM._5 :+ DeleteEntry(bD(bJ))) :+ DeleteEntry(bG(aJ, bJ, aw))) :+ DeleteEntry(eh(ei))) :+ DeleteEntry(bA(bJ))) :+ DeleteEntry(bK(bJ))) :+ DeleteEntry(ej(bJ, aw))) :+ DeleteEntry(bE(aM, bJ))) :+ DeleteEntry(ek(ei))) :+ DeleteEntry(bI(bJ))) :+ DeleteEntry(ky)) :+ Burn(fromBase58String(bJ), 1)) ++ (if ((kz != ""))
1974+ then [DeleteEntry(ef(kz))]
1975+ else nil)), eW, removeByIndex(kx, value(L)), (eM._8 + jd), hn, kw)
19741976 }
19751977 }
19761978 }
19771979 }
19781980 }
19791981 }
19801982
1981- let hD = bT(bO)
1982- let ih = hC(hD)
1983- let gt = split(valueOrElse(getString(ac()), "0_0_0_0_0_0"), "_")
1984- let kz = af(av)
1985- let kA = getString(kz)
1986- let kB = if (isDefined(kA))
1987- then split_51C(value(kA), "_")
1983+ let hE = bU(bP)
1984+ let ii = hD(hE)
1985+ let gu = split(valueOrElse(getString(ad()), "0_0_0_0_0_0"), "_")
1986+ let kA = ag(aw)
1987+ let kB = getString(kA)
1988+ let kC = if (isDefined(kB))
1989+ then split_51C(value(kB), "_")
19881990 else nil
1989- let kC = split(value(assetInfo(fromBase58String(ko[0]))).description, "_")[V]
1990- let kD = split(valueOrElse(getString(ad(kC)), "0_0_0_0_0_0"), "_")
1991- let eW = {
1992- let eN = ko
1993- let eO = size(eN)
1994- let eP = $Tuple10(kn, 0, "", ih[bt], nil, gt, kB, 0, split("0_0_0_0_0_0", "_"), kD)
1995- func eQ (eR,eS) = if ((eS >= eO))
1996- then eR
1997- else kq(eR, eN[eS])
1998-
1999- func eT (eR,eS) = if ((eS >= eO))
2000- then eR
1991+ let kD = split(value(assetInfo(fromBase58String(kp[0]))).description, "_")[W]
1992+ let kE = split(valueOrElse(getString(ae(kD)), "0_0_0_0_0_0"), "_")
1993+ let eX = {
1994+ let eO = kp
1995+ let eP = size(eO)
1996+ let eQ = $Tuple10(ko, 0, "", ii[bu], nil, gu, kC, 0, split("0_0_0_0_0_0", "_"), kE)
1997+ func eR (eS,eT) = if ((eT >= eP))
1998+ then eS
1999+ else kr(eS, eO[eT])
2000+
2001+ func eU (eS,eT) = if ((eT >= eP))
2002+ then eS
20012003 else throw("List size exceeds 5")
20022004
2003- eT(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5)
2005+ eU(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5)
20042006 }
2005- let ae = eW._3
2006- let hf = valueOrErrorMessage(indexOf(bb, ae), ("Unknown continent: " + ae))
2007- let gB = hl(eW._9, (aq(km) / p))
2008- let iG = valueOrElse(getInteger(ed()), (ec + 1))
2009- let kE = toString(iG)
2010- let iH = Issue(eA(kE, km), makeString([kE, km, gB, ae], "_"), 1, 0, false)
2011- let bA = calculateAssetId(iH)
2012- let kF = toBase58String(bA)
2013- let jM = makeString(eX((kp > 0), split(ih[bu], "_"), kp), "_")
2014- let kG = ah(av)
2015- let kH = valueOrElse(getInteger(kG), 0)
2016- $Tuple2((((((((((((((((eW._5 :+ (if ((size(eW._7) > 0))
2017- then StringEntry(kz, makeString_11C(eW._7, "_"))
2018- else DeleteEntry(kz))) :+ IntegerEntry(kG, if ((eW._8 > kH))
2007+ let af = eX._3
2008+ let hg = valueOrErrorMessage(indexOf(bc, af), ("Unknown continent: " + af))
2009+ let gC = hm(eX._9, (ar(kn) / q))
2010+ let iH = valueOrElse(getInteger(ee()), (ed + 1))
2011+ let kF = toString(iH)
2012+ let iI = Issue(eB(kF, kn), makeString([kF, kn, gC, af], "_"), 1, 0, false)
2013+ let bB = calculateAssetId(iI)
2014+ let kG = toBase58String(bB)
2015+ let jN = makeString(eY((kq > 0), split(ii[bv], "_"), kq), "_")
2016+ let kH = ai(aw)
2017+ let kI = valueOrElse(getInteger(kH), 0)
2018+ $Tuple2((((((((((((((((eX._5 :+ (if ((size(eX._7) > 0))
2019+ then StringEntry(kA, makeString_11C(eX._7, "_"))
2020+ else DeleteEntry(kA))) :+ IntegerEntry(kH, if ((eX._8 > kI))
20192021 then 0
2020- else (kH - eW._8))) :+ IntegerEntry(ed(), (iG + 1))) :+ iH) :+ StringEntry(eg(kE), kF)) :+ StringEntry(bz(kF), av)) :+ StringEntry(ej(kE), av)) :+ IntegerEntry(bD(aL, kF), eW._2)) :+ IntegerEntry(bJ(kF), dB)) :+ IntegerEntry(ei(kF, av), dB)) :+ StringEntry(hD, makeString([ih[bs], eW._4, jM, ih[bv]], ":"))) :+ StringEntry(ac(), makeString(eW._6, "_"))) :+ StringEntry(ad(ae), makeString(eW._10, "_"))) :+ StringEntry(bU(bO), makeString([ae, "L", kF], "_"))) :+ ScriptTransfer(addressFromStringValue(av), 1, bA)), kF)
2021- }
2022- }
2023-
2024-
2025-func kI (av,ko) = kl("M", 3, "SSSS", av, ko, 0)
2026-
2027-
2028-func kJ (av,ko) = kl("L", 4, "SMM", av, ko, (k * 4))
2029-
2030-
2031-func kK (av,ko) = kl("XL", 5, "SSSML", av, ko, (k * 47))
2032-
2033-
2034-func kL (av,ko) = kl("XXL", 6, "LXL", av, ko, (k * 54))
2035-
2036-
2037-func kM (av,ko) = {
2038- let g = size(ko)
2039- if ((4 == g))
2040- then kI(av, ko)
2041- else if ((3 == g))
2042- then kJ(av, ko)
2043- else if ((5 == g))
2044- then kK(av, ko)
2045- else if ((2 == g))
2046- then kL(av, ko)
2022+ else (kI - eX._8))) :+ IntegerEntry(ee(), (iH + 1))) :+ iI) :+ StringEntry(eh(kF), kG)) :+ StringEntry(bA(kG), aw)) :+ StringEntry(ek(kF), aw)) :+ IntegerEntry(bE(aM, kG), eX._2)) :+ IntegerEntry(bK(kG), dC)) :+ IntegerEntry(ej(kG, aw), dC)) :+ StringEntry(hE, makeString([ii[bt], eX._4, jN, ii[bw]], ":"))) :+ StringEntry(ad(), makeString(eX._6, "_"))) :+ StringEntry(ae(af), makeString(eX._10, "_"))) :+ StringEntry(bV(bP), makeString([af, "L", kG], "_"))) :+ ScriptTransfer(addressFromStringValue(aw), 1, bB)), kG)
2023+ }
2024+ }
2025+
2026+
2027+func kJ (aw,kp) = km("M", 3, "SSSS", aw, kp, 0)
2028+
2029+
2030+func kK (aw,kp) = km("L", 4, "SMM", aw, kp, (l * 4))
2031+
2032+
2033+func kL (aw,kp) = km("XL", 5, "SSSML", aw, kp, (l * 47))
2034+
2035+
2036+func kM (aw,kp) = km("XXL", 6, "LXL", aw, kp, (l * 54))
2037+
2038+
2039+func kN (aw,kp) = {
2040+ let h = size(kp)
2041+ if ((4 == h))
2042+ then kJ(aw, kp)
2043+ else if ((3 == h))
2044+ then kK(aw, kp)
2045+ else if ((5 == h))
2046+ then kL(aw, kp)
2047+ else if ((2 == h))
2048+ then kM(aw, kp)
20472049 else throw("Unknown merge")
20482050 }
20492051
20502052
2051-func kN (gy) = if (if ((gy.originCaller != L))
2052- then valueOrElse(getBoolean(at()), false)
2053+func kO (gz) = if (if ((gz.originCaller != M))
2054+ then valueOrElse(getBoolean(au()), false)
20532055 else false)
20542056 then throw("Contracts are under maintenance")
2055- else [StringEntry(au(toString(gy.originCaller)), toBase58String(gy.transactionId))]
2056-
2057-
2058-func kO (av,bI) = {
2059- let hR = bH(bI)
2060- let kP = split(value(assetInfo(fromBase58String(bI))).description, "_")
2061- let ar = kP[T]
2062- let jc = aq(ar)
2063- let hT = valueOrElse(getInteger(bJ(bI)), 0)
2064- let hS = (jc / p)
2065- let gu = gA(kP[U])
2066- let hI = hQ(hR, hS, hT)
2067- let gN = split(hI[bk], "_")
2068- let jn = bC(bI)
2069- let jo = getIntegerValue(jn)
2070- let gE = (aH() - jo)
2071- if ((0 > gE))
2072- then throw(((("Saved timestamp is in future, saved = " + toString(jo)) + ", final = ") + toString(aH())))
2057+ else [StringEntry(av(toString(gz.originCaller)), toBase58String(gz.transactionId))]
2058+
2059+
2060+func kP (aw,bJ) = {
2061+ let hS = bI(bJ)
2062+ let kQ = split(value(assetInfo(fromBase58String(bJ))).description, "_")
2063+ let as = kQ[U]
2064+ let jd = ar(as)
2065+ let hU = valueOrElse(getInteger(bK(bJ)), 0)
2066+ let hT = (jd / q)
2067+ let gv = gB(kQ[V])
2068+ let hJ = hR(hS, hT, hU)
2069+ let gO = split(hJ[bl], "_")
2070+ let jo = bD(bJ)
2071+ let jp = getIntegerValue(jo)
2072+ let gF = (aI() - jp)
2073+ if ((0 > gF))
2074+ then throw(((("Saved timestamp is in future, saved = " + toString(jp)) + ", final = ") + toString(aI())))
20732075 else {
2074- let js = jb(bI, jc)
2075- let kQ = gI(gN, gu, gE, hS, js)
2076- let jd = valueOrElse(getInteger(bD(aL, bI)), 0)
2077- let kR = ((jc * o) + ((((jc * hT) + jd) * o) / 5))
2078- let kS = (fraction(kQ._2, aR, o) * aU)
2079- func kT (eL,hL) = (eL + parseIntValue(hL))
2080-
2081- let kU = {
2082- let eN = split(hI[bl], "_")
2083- let eO = size(eN)
2084- let eP = 0
2085- func eQ (eR,eS) = if ((eS >= eO))
2086- then eR
2087- else kT(eR, eN[eS])
2088-
2089- func eT (eR,eS) = if ((eS >= eO))
2090- then eR
2076+ let jt = jc(bJ, jd)
2077+ let kR = gJ(gO, gv, gF, hT, jt)
2078+ let je = valueOrElse(getInteger(bE(aM, bJ)), 0)
2079+ let kS = ((jd * p) + ((((jd * hU) + je) * p) / 5))
2080+ let kT = (fraction(kR._2, aS, p) * aV)
2081+ func kU (eM,hM) = (eM + parseIntValue(hM))
2082+
2083+ let kV = {
2084+ let eO = split(hJ[bm], "_")
2085+ let eP = size(eO)
2086+ let eQ = 0
2087+ func eR (eS,eT) = if ((eT >= eP))
2088+ then eS
2089+ else kU(eS, eO[eT])
2090+
2091+ func eU (eS,eT) = if ((eT >= eP))
2092+ then eS
20912093 else throw("List size exceeds 6")
20922094
2093- eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
2095+ eU(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6)
20942096 }
2095- let kV = (fraction(kU, (2 * aR), o) * aU)
2096- let kW = if ((hI[bm] == ""))
2097+ let kW = (fraction(kV, (2 * aS), p) * aV)
2098+ let kX = if ((hJ[bn] == ""))
20972099 then nil
2098- else split_4C(hI[bm], "_")
2099- func hM (eL,hL) = {
2100- let fv = eL._2
2101- let kX = parseIntValue(split(bd[fv], "_")[be])
2102- $Tuple2((eL._1 + ((parseIntValue(hL) * kX) * n)), (fv + 1))
2100+ else split_4C(hJ[bn], "_")
2101+ func hN (eM,hM) = {
2102+ let fw = eM._2
2103+ let kY = parseIntValue(split(be[fw], "_")[bf])
2104+ $Tuple2((eM._1 + ((parseIntValue(hM) * kY) * o)), (fw + 1))
21032105 }
21042106
2105- let kY = {
2106- let eN = kW
2107- let eO = size(eN)
2108- let eP = $Tuple2(0, 0)
2109- func hx (eR,eS) = if ((eS >= eO))
2110- then eR
2111- else hM(eR, eN[eS])
2112-
2113- func hy (eR,eS) = if ((eS >= eO))
2114- then eR
2107+ let kZ = {
2108+ let eO = kX
2109+ let eP = size(eO)
2110+ let eQ = $Tuple2(0, 0)
2111+ func hy (eS,eT) = if ((eT >= eP))
2112+ then eS
2113+ else hN(eS, eO[eT])
2114+
2115+ func hz (eS,eT) = if ((eT >= eP))
2116+ then eS
21152117 else throw("List size exceeds 24")
21162118
2117- hy(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(hx(eP, 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)
2119+ hz(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(hy(eQ, 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)
21182120 }
2119- let kZ = (fraction(kY._1, (2 * aR), o) * aU)
2120- $Tuple4(kR, kS, kV, kZ)
2121- }
2122- }
2123-
2124-
2125-func la (av,bO) = {
2126- let gk = cU(bO)
2127- let lb = split(valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
2128- let hD = bT(bO)
2129- let ih = hC(hD)
2130- let gn = gc(lb, fr(ih[bv]), true, nil)
2131- let lc = fw(gn)
2132- func hK (eL,hL) = (eL + parseIntValue(hL))
2133-
2134- let jA = {
2135- let eN = split(ih[bt], "_")
2136- let eO = size(eN)
2137- let eP = 0
2138- func eQ (eR,eS) = if ((eS >= eO))
2139- then eR
2140- else hK(eR, eN[eS])
2141-
2142- func eT (eR,eS) = if ((eS >= eO))
2143- then eR
2121+ let la = (fraction(kZ._1, (2 * aS), p) * aV)
2122+ $Tuple4(kS, kT, kW, la)
2123+ }
2124+ }
2125+
2126+
2127+func lb (aw,bP) = {
2128+ let gl = cV(bP)
2129+ let lc = split(valueOrElse(getString(gl), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
2130+ let hE = bU(bP)
2131+ let ii = hD(hE)
2132+ let go = gd(lc, fs(ii[bw]), true, nil)
2133+ let ld = fx(go)
2134+ func hL (eM,hM) = (eM + parseIntValue(hM))
2135+
2136+ let jB = {
2137+ let eO = split(ii[bu], "_")
2138+ let eP = size(eO)
2139+ let eQ = 0
2140+ func eR (eS,eT) = if ((eT >= eP))
2141+ then eS
2142+ else hL(eS, eO[eT])
2143+
2144+ func eU (eS,eT) = if ((eT >= eP))
2145+ then eS
21442146 else throw("List size exceeds 6")
21452147
2146- eT(eQ(eQ(eQ(eQ(eQ(eQ(eP, 0), 1), 2), 3), 4), 5), 6)
2147- }
2148- let kS = (fraction(jA, aR, o) * aU)
2149- let ld = {
2150- let eN = split(ih[bu], "_")
2151- let eO = size(eN)
2152- let eP = 0
2153- func hx (eR,eS) = if ((eS >= eO))
2154- then eR
2155- else hK(eR, eN[eS])
2156-
2157- func hy (eR,eS) = if ((eS >= eO))
2158- then eR
2148+ eU(eR(eR(eR(eR(eR(eR(eQ, 0), 1), 2), 3), 4), 5), 6)
2149+ }
2150+ let kT = (fraction(jB, aS, p) * aV)
2151+ let le = {
2152+ let eO = split(ii[bv], "_")
2153+ let eP = size(eO)
2154+ let eQ = 0
2155+ func hy (eS,eT) = if ((eT >= eP))
2156+ then eS
2157+ else hL(eS, eO[eT])
2158+
2159+ func hz (eS,eT) = if ((eT >= eP))
2160+ then eS
21592161 else throw("List size exceeds 6")
21602162
2161- hy(hx(hx(hx(hx(hx(hx(eP, 0), 1), 2), 3), 4), 5), 6)
2162- }
2163- let kV = (fraction(ld, (2 * aR), o) * aU)
2164- let kW = if ((lc == ""))
2163+ hz(hy(hy(hy(hy(hy(hy(eQ, 0), 1), 2), 3), 4), 5), 6)
2164+ }
2165+ let kW = (fraction(le, (2 * aS), p) * aV)
2166+ let kX = if ((ld == ""))
21652167 then nil
2166- else split_4C(lc, "_")
2167- func hM (eL,hL) = {
2168- let fv = eL._2
2169- let kX = parseIntValue(split(bd[fv], "_")[be])
2170- $Tuple2((eL._1 + ((parseIntValue(hL) * kX) * n)), (fv + 1))
2171- }
2172-
2173- let le = {
2174- let eN = kW
2175- let eO = size(eN)
2176- let eP = $Tuple2(0, 0)
2177- func hA (eR,eS) = if ((eS >= eO))
2178- then eR
2179- else hM(eR, eN[eS])
2180-
2181- func hB (eR,eS) = if ((eS >= eO))
2182- then eR
2168+ else split_4C(ld, "_")
2169+ func hN (eM,hM) = {
2170+ let fw = eM._2
2171+ let kY = parseIntValue(split(be[fw], "_")[bf])
2172+ $Tuple2((eM._1 + ((parseIntValue(hM) * kY) * o)), (fw + 1))
2173+ }
2174+
2175+ let lf = {
2176+ let eO = kX
2177+ let eP = size(eO)
2178+ let eQ = $Tuple2(0, 0)
2179+ func hB (eS,eT) = if ((eT >= eP))
2180+ then eS
2181+ else hN(eS, eO[eT])
2182+
2183+ func hC (eS,eT) = if ((eT >= eP))
2184+ then eS
21832185 else throw("List size exceeds 24")
21842186
2185- hB(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(hA(eP, 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)
2186- }
2187- let kZ = (fraction(le._1, (2 * aR), o) * aU)
2188- $Tuple3(kS, kV, kZ)
2189- }
2190-
2191-
2192-@Callable(gy)
2193-func constructorV1 (lf) = if ((gy.caller != this))
2187+ hC(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(hB(eQ, 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)
2188+ }
2189+ let la = (fraction(lf._1, (2 * aS), p) * aV)
2190+ $Tuple3(kT, kW, la)
2191+ }
2192+
2193+
2194+@Callable(gz)
2195+func constructorV1 (lg) = if ((gz.caller != this))
21942196 then throw("Permission denied")
2195- else [StringEntry(F(), lf)]
2196-
2197-
2198-
2199-@Callable(gy)
2200-func saveInteger (x,eC) = if ((gy.caller != this))
2197+ else [StringEntry(G(), lg)]
2198+
2199+
2200+
2201+@Callable(gz)
2202+func saveInteger (y,eD) = if ((gz.caller != this))
22012203 then throw("saveInteger is not public method")
2202- else [IntegerEntry(x, eC)]
2203-
2204-
2205-
2206-@Callable(gy)
2207-func setBlocked (lg) = if ((gy.caller != this))
2204+ else [IntegerEntry(y, eD)]
2205+
2206+
2207+
2208+@Callable(gz)
2209+func setBlocked (lh) = if ((gz.caller != this))
22082210 then throw("permission denied")
2209- else [BooleanEntry(at(), lg)]
2210-
2211-
2212-
2213-@Callable(gy)
2211+ else [BooleanEntry(au(), lh)]
2212+
2213+
2214+
2215+@Callable(gz)
22142216 func stakeLand () = {
2215- let lh = kN(gy)
2216- if ((size(gy.payments) != 1))
2217+ let li = kO(gz)
2218+ if ((size(gz.payments) != 1))
22172219 then throw("Exactly one payment required")
22182220 else {
2219- let li = value(gy.payments[0])
2220- let bA = value(li.assetId)
2221- let w = toString(gy.caller)
2222- if ((li.amount != 1))
2223- then throw((("NFT " + aI) + " token should be attached as payment"))
2221+ let lj = value(gz.payments[0])
2222+ let bB = value(lj.assetId)
2223+ let x = toString(gz.caller)
2224+ if ((lj.amount != 1))
2225+ then throw((("NFT " + aJ) + " token should be attached as payment"))
22242226 else {
2225- let jm = value(assetInfo(bA))
2226- if ((jm.issuer != this))
2227+ let jn = value(assetInfo(bB))
2228+ if ((jn.issuer != this))
22272229 then throw("Unknown issuer of token")
2228- else if (!(contains(jm.name, aI)))
2229- then throw((("Only NFT " + aI) + " tokens are accepted"))
2230+ else if (!(contains(jn.name, aJ)))
2231+ then throw((("Only NFT " + aJ) + " tokens are accepted"))
22302232 else {
2231- let lj = drop(jm.name, 4)
2232- let eh = if (contains(lj, "XXL"))
2233- then dropRight(lj, 3)
2234- else if (contains(lj, "XL"))
2235- then dropRight(lj, 2)
2236- else dropRight(lj, 1)
2237- if (!(isDefined(parseInt(eh))))
2238- then throw(("Cannot parse land number from " + jm.name))
2233+ let lk = drop(jn.name, 4)
2234+ let ei = if (contains(lk, "XXL"))
2235+ then dropRight(lk, 3)
2236+ else if (contains(lk, "XL"))
2237+ then dropRight(lk, 2)
2238+ else dropRight(lk, 1)
2239+ if (!(isDefined(parseInt(ei))))
2240+ then throw(("Cannot parse land number from " + jn.name))
22392241 else {
2240- let bI = toBase58String(bA)
2241- let jn = bC(bI)
2242- if (isDefined(getInteger(jn)))
2243- then throw((("NFT " + jm.name) + " is already staked"))
2242+ let bJ = toBase58String(bB)
2243+ let jo = bD(bJ)
2244+ if (isDefined(getInteger(jo)))
2245+ then throw((("NFT " + jn.name) + " is already staked"))
22442246 else {
2245- let jq = split(jm.description, "_")
2246- let gu = gA(jq[U])
2247- let jc = aq(jq[T])
2248- let hS = (jc / p)
2249- let eV = gz(gu, hS, 1)
2250- let lk = ad(jq[V])
2251- let kD = split(valueOrElse(getString(lk), "0_0_0_0_0_0"), "_")
2252- let ll = makeString(gs(kD, gu, hS, 1), "_")
2253- let kz = af(w)
2254- let kA = getString(kz)
2255- let kw = if (isDefined(kA))
2256- then split_51C(value(kA), "_")
2247+ let jr = split(jn.description, "_")
2248+ let gv = gB(jr[V])
2249+ let jd = ar(jr[U])
2250+ let hT = (jd / q)
2251+ let eW = gA(gv, hT, 1)
2252+ let ll = ae(jr[W])
2253+ let kE = split(valueOrElse(getString(ll), "0_0_0_0_0_0"), "_")
2254+ let lm = makeString(gt(kE, gv, hT, 1), "_")
2255+ let kA = ag(x)
2256+ let kB = getString(kA)
2257+ let kx = if (isDefined(kB))
2258+ then split_51C(value(kB), "_")
22572259 else nil
2258- if (containsElement(kw, bI))
2259- then throw(("Your staked lands already contain " + bI))
2260- else if ((size(kw) >= aN))
2261- then throw((("Your already staked max (" + toString(aN)) + ") lands"))
2260+ if (containsElement(kx, bJ))
2261+ then throw(("Your staked lands already contain " + bJ))
2262+ else if ((size(kx) >= aO))
2263+ then throw((("Your already staked max (" + toString(aO)) + ") lands"))
22622264 else {
2263- let hT = valueOrElse(getInteger(bJ(bI)), 0)
2264- let kG = ah(w)
2265- let lm = valueOrElse(getInteger(kG), 0)
2266- let ln = invoke(P, "onStakeUnstakeLand", [w], nil)
2267- $Tuple2(([IntegerEntry(jn, lastBlock.timestamp), IntegerEntry(bF(aI, bI, w), lastBlock.timestamp), StringEntry(kz, makeString_11C((kw :+ bI), "_")), IntegerEntry(kG, (lm + jc)), StringEntry(bz(bI), w), StringEntry(ej(eh), w), IntegerEntry(ei(bI, w), hT), StringEntry(ac(), eV), StringEntry(lk, ll)] ++ lh), ln)
2265+ let hU = valueOrElse(getInteger(bK(bJ)), 0)
2266+ let kH = ai(x)
2267+ let ln = valueOrElse(getInteger(kH), 0)
2268+ let lo = invoke(Q, "onStakeUnstakeLand", [x], nil)
2269+ $Tuple2(([IntegerEntry(jo, lastBlock.timestamp), IntegerEntry(bG(aJ, bJ, x), lastBlock.timestamp), StringEntry(kA, makeString_11C((kx :+ bJ), "_")), IntegerEntry(kH, (ln + jd)), StringEntry(bA(bJ), x), StringEntry(ek(ei), x), IntegerEntry(ej(bJ, x), hU), StringEntry(ad(), eW), StringEntry(ll, lm)] ++ li), lo)
22682270 }
22692271 }
22702272 }
22712273 }
22722274 }
22732275 }
22742276 }
22752277
22762278
22772279
2278-@Callable(gy)
2279-func unstakeLand (ji) = {
2280- let lh = kN(gy)
2281- if ((size(gy.payments) != 0))
2280+@Callable(gz)
2281+func unstakeLand (jj) = {
2282+ let li = kO(gz)
2283+ if ((size(gz.payments) != 0))
22822284 then throw("No payments required")
22832285 else {
2284- let av = toString(gy.caller)
2285- let fQ = jg(av, ep, ji)
2286- let bI = fQ._2
2287- let jq = fQ._3
2288- let kz = af(av)
2289- let gu = gA(jq[U])
2290- let jc = aq(jq[T])
2291- let hS = (jc / p)
2292- let eV = gz(gu, hS, -1)
2293- let lk = ad(jq[V])
2294- let kD = split(valueOrElse(getString(lk), "0_0_0_0_0_0"), "_")
2295- let ll = makeString(gs(kD, gu, hS, -1), "_")
2296- let jN = jD(av, bI, jc, ep)
2297- let kw = split_51C(valueOrElse(getString(kz), ""), "_")
2298- let K = indexOf(kw, bI)
2299- if (!(isDefined(K)))
2300- then throw(("Your staked lands don't contain " + bI))
2286+ let aw = toString(gz.caller)
2287+ let fR = jh(aw, eq, jj)
2288+ let bJ = fR._2
2289+ let jr = fR._3
2290+ let kA = ag(aw)
2291+ let gv = gB(jr[V])
2292+ let jd = ar(jr[U])
2293+ let hT = (jd / q)
2294+ let eW = gA(gv, hT, -1)
2295+ let ll = ae(jr[W])
2296+ let kE = split(valueOrElse(getString(ll), "0_0_0_0_0_0"), "_")
2297+ let lm = makeString(gt(kE, gv, hT, -1), "_")
2298+ let jO = jE(aw, bJ, jd, eq)
2299+ let kx = split_51C(valueOrElse(getString(kA), ""), "_")
2300+ let L = indexOf(kx, bJ)
2301+ if (!(isDefined(L)))
2302+ then throw(("Your staked lands don't contain " + bJ))
23012303 else {
2302- let cq = lastBlock.timestamp
2303- let lo = valueOrElse(getInteger(O, bV(av)), 0)
2304- if ((lo >= cq))
2305- then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lo)))
2304+ let cr = lastBlock.timestamp
2305+ let lp = valueOrElse(getInteger(P, bW(aw)), 0)
2306+ if ((lp >= cr))
2307+ then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(lp)))
23062308 else {
2307- let lp = (valueOrElse(getInteger(P, dK(av)), 0) + l)
2308- if ((lp > cq))
2309- then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lp)))
2309+ let lq = (valueOrElse(getInteger(Q, dL(aw)), 0) + m)
2310+ if ((lq > cr))
2311+ then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(lq)))
23102312 else {
2311- let kG = ah(av)
2312- let kH = valueOrElse(getInteger(kG), 0)
2313- let lq = if ((jc > kH))
2313+ let kH = ai(aw)
2314+ let kI = valueOrElse(getInteger(kH), 0)
2315+ let lr = if ((jd > kI))
23142316 then 0
2315- else (kH - jc)
2316- let ln = invoke(P, "onStakeUnstakeLand", [av], nil)
2317- $Tuple2(([ScriptTransfer(gy.caller, 1, fromBase58String(bI)), DeleteEntry(bC(bI)), DeleteEntry(bF(aI, bI, av)), StringEntry(ac(), eV), StringEntry(lk, ll), StringEntry(jN._2, makeString(jN._3, ":")), if ((size(kw) > 1))
2318- then StringEntry(kz, makeString_11C(removeByIndex(kw, value(K)), "_"))
2319- else DeleteEntry(kz), IntegerEntry(kG, lq)] ++ lh), ln)
2317+ else (kI - jd)
2318+ let lo = invoke(Q, "onStakeUnstakeLand", [aw], nil)
2319+ $Tuple2(([ScriptTransfer(gz.caller, 1, fromBase58String(bJ)), DeleteEntry(bD(bJ)), DeleteEntry(bG(aJ, bJ, aw)), StringEntry(ad(), eW), StringEntry(ll, lm), StringEntry(jO._2, makeString(jO._3, ":")), if ((size(kx) > 1))
2320+ then StringEntry(kA, makeString_11C(removeByIndex(kx, value(L)), "_"))
2321+ else DeleteEntry(kA), IntegerEntry(kH, lr)] ++ li), lo)
23202322 }
23212323 }
23222324 }
23232325 }
23242326 }
23252327
23262328
23272329
2328-@Callable(gy)
2329-func unstakeLandCallback (bI,av) = if ((toString(gy.caller) != j))
2330+@Callable(gz)
2331+func unstakeLandCallback (bJ,aw) = if ((toString(gz.caller) != k))
23302332 then throw("Permission denied")
23312333 else {
2332- let lr = kO(av, bI)
2333- let ln = invoke(P, "onStakeUnstakeLand", [av], nil)
2334- $Tuple2([Burn(fromBase58String(bI), 1), DeleteEntry(bC(bI)), DeleteEntry(bF(aI, bI, av))], $Tuple5(lr._1, lr._2, lr._3, lr._4, ln))
2335- }
2336-
2337-
2338-
2339-@Callable(gy)
2340-func unstakeLandREADONLY (bI,av) = {
2341- let lr = kO(av, bI)
2342- $Tuple2(nil, lr)
2343- }
2344-
2345-
2346-
2347-@Callable(gy)
2348-func unstakeLandsFinalizeCallback (av) = if ((toString(gy.caller) != j))
2334+ let ls = kP(aw, bJ)
2335+ let lo = invoke(Q, "onStakeUnstakeLand", [aw], nil)
2336+ $Tuple2([Burn(fromBase58String(bJ), 1), DeleteEntry(bD(bJ)), DeleteEntry(bG(aJ, bJ, aw))], $Tuple5(ls._1, ls._2, ls._3, ls._4, lo))
2337+ }
2338+
2339+
2340+
2341+@Callable(gz)
2342+func unstakeLandREADONLY (bJ,aw) = {
2343+ let ls = kP(aw, bJ)
2344+ $Tuple2(nil, ls)
2345+ }
2346+
2347+
2348+
2349+@Callable(gz)
2350+func unstakeLandsFinalizeCallback (aw) = if ((toString(gz.caller) != k))
23492351 then throw("Permission denied")
2350- else $Tuple2([DeleteEntry(af(av)), DeleteEntry(ah(av))], 0)
2351-
2352-
2353-
2354-@Callable(gy)
2355-func convertUnstakedLands () = if ((size(gy.payments) != 1))
2352+ else $Tuple2([DeleteEntry(ag(aw)), DeleteEntry(ai(aw))], 0)
2353+
2354+
2355+
2356+@Callable(gz)
2357+func convertUnstakedLands () = if ((size(gz.payments) != 1))
23562358 then throw("Exactly one payment required")
23572359 else {
2358- let li = value(gy.payments[0])
2359- let bA = value(li.assetId)
2360- let w = toString(gy.caller)
2361- if ((li.amount != 1))
2362- then throw((("NFT " + aI) + " token should be attached as payment"))
2360+ let lj = value(gz.payments[0])
2361+ let bB = value(lj.assetId)
2362+ let x = toString(gz.caller)
2363+ if ((lj.amount != 1))
2364+ then throw((("NFT " + aJ) + " token should be attached as payment"))
23632365 else {
2364- let jm = value(assetInfo(bA))
2365- if ((jm.issuer != this))
2366+ let jn = value(assetInfo(bB))
2367+ if ((jn.issuer != this))
23662368 then throw("Unknown issuer of token")
2367- else if (!(contains(jm.name, aI)))
2368- then throw((("Only NFT " + aI) + " tokens are accepted"))
2369+ else if (!(contains(jn.name, aJ)))
2370+ then throw((("Only NFT " + aJ) + " tokens are accepted"))
23692371 else {
2370- let bI = toBase58String(bA)
2371- let jq = split(jm.description, "_")
2372- let jc = aq(jq[T])
2373- let hT = valueOrElse(getInteger(bJ(bI)), 0)
2374- let jd = valueOrElse(getInteger(bD(aL, bI)), 0)
2375- let ls = ((jc * o) + ((((jc * hT) + jd) * o) / 5))
2376- let lt = invoke(R, "requestAcresCallback", [ls], nil)
2377- if ((lt == lt))
2372+ let bJ = toBase58String(bB)
2373+ let jr = split(jn.description, "_")
2374+ let jd = ar(jr[U])
2375+ let hU = valueOrElse(getInteger(bK(bJ)), 0)
2376+ let je = valueOrElse(getInteger(bE(aM, bJ)), 0)
2377+ let lt = ((jd * p) + ((((jd * hU) + je) * p) / 5))
2378+ let lu = invoke(S, "requestAcresCallback", [lt], nil)
2379+ if ((lu == lu))
23782380 then {
2379- let lu = invoke(addressFromStringValue(j), "stakeAcresCallback", [w], [AttachedPayment(Z, ls)])
2380- if ((lu == lu))
2381- then $Tuple2([Burn(fromBase58String(bI), 1)], 0)
2381+ let lv = invoke(addressFromStringValue(k), "stakeAcresCallback", [x], [AttachedPayment(aa, lt)])
2382+ if ((lv == lv))
2383+ then $Tuple2([Burn(fromBase58String(bJ), 1)], 0)
23822384 else throw("Strict value is not equal to itself.")
23832385 }
23842386 else throw("Strict value is not equal to itself.")
23852387 }
23862388 }
23872389 }
23882390
23892391
23902392
2391-@Callable(gy)
2393+@Callable(gz)
23922394 func stakeDuck () = {
2393- let lh = kN(gy)
2394- if ((size(gy.payments) != 1))
2395+ let li = kO(gz)
2396+ if ((size(gz.payments) != 1))
23952397 then throw("Exactly one payment required")
23962398 else {
2397- let li = value(gy.payments[0])
2398- let bA = value(li.assetId)
2399- let w = toString(gy.caller)
2400- if ((li.amount != 1))
2401- then throw((("NFT " + aJ) + " token should be attached as payment"))
2399+ let lj = value(gz.payments[0])
2400+ let bB = value(lj.assetId)
2401+ let x = toString(gz.caller)
2402+ if ((lj.amount != 1))
2403+ then throw((("NFT " + aK) + " token should be attached as payment"))
24022404 else {
2403- let jm = value(assetInfo(bA))
2404- let lv = if (if (c)
2405- then (jm.issuer == this)
2405+ let jn = value(assetInfo(bB))
2406+ let lw = if (if (c)
2407+ then (jn.issuer == this)
24062408 else false)
2407- then contains(jm.name, aK)
2409+ then contains(jn.name, aL)
24082410 else false
2409- if (if (if ((jm.issuer != dM))
2410- then (jm.issuer != dN)
2411+ if (if (if ((jn.issuer != dN))
2412+ then (jn.issuer != dO)
24112413 else false)
2412- then !(lv)
2414+ then !(lw)
24132415 else false)
2414- then throw((((("Unknown issuer of " + aJ) + " or ") + aK) + " token"))
2415- else if (if (!(contains(jm.name, aJ)))
2416- then !(lv)
2416+ then throw((((("Unknown issuer of " + aK) + " or ") + aL) + " token"))
2417+ else if (if (!(contains(jn.name, aK)))
2418+ then !(lw)
24172419 else false)
2418- then throw((((("Only NFT " + aJ) + " or ") + aK) + " tokens are accepted"))
2420+ then throw((((("Only NFT " + aK) + " or ") + aL) + " tokens are accepted"))
24192421 else {
2420- let lw = toBase58String(bA)
2421- let jn = bC(lw)
2422- if (isDefined(getInteger(jn)))
2423- then throw((("NFT " + jm.name) + " is already staked"))
2424- else if (isDefined(getString(bS(w))))
2425- then throw(("You already staked one duck: " + jm.name))
2422+ let lx = toBase58String(bB)
2423+ let jo = bD(lx)
2424+ if (isDefined(getInteger(jo)))
2425+ then throw((("NFT " + jn.name) + " is already staked"))
2426+ else if (isDefined(getString(bT(x))))
2427+ then throw(("You already staked one duck: " + jn.name))
24262428 else {
2427- let lx = bU(lw)
2428- let cn = getString(lx)
2429- let hD = bT(lw)
2430- let ly = getString(hD)
2431- let iV = cP(lw)
2432- let iW = dw(valueOrElse(getInteger(cS(lw)), 0))
2433- let lz = valueOrElse(getInteger(iV), iW)
2434- ([IntegerEntry(jn, lastBlock.timestamp), IntegerEntry(bF(aJ, toBase58String(bA), w), lastBlock.timestamp), StringEntry(bR(lw), w), StringEntry(bS(w), lw)] ++ (if (isDefined(cn))
2429+ let ly = bV(lx)
2430+ let co = getString(ly)
2431+ let hE = bU(lx)
2432+ let lz = getString(hE)
2433+ let iW = cQ(lx)
2434+ let iX = dx(valueOrElse(getInteger(cT(lx)), 0))
2435+ let lA = valueOrElse(getInteger(iW), iX)
2436+ ([IntegerEntry(jo, lastBlock.timestamp), IntegerEntry(bG(aK, toBase58String(bB), x), lastBlock.timestamp), StringEntry(bS(lx), x), StringEntry(bT(x), lx)] ++ (if (isDefined(co))
24352437 then nil
2436- else ([StringEntry(lx, aQ)] ++ (if (isDefined(ly))
2438+ else ([StringEntry(ly, aR)] ++ (if (isDefined(lz))
24372439 then nil
2438- else (([StringEntry(hD, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(iV, lz)) ++ lh)))))
2440+ else (([StringEntry(hE, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(iW, lA)) ++ li)))))
24392441 }
24402442 }
24412443 }
24422444 }
24432445 }
24442446
24452447
24462448
2447-@Callable(gy)
2448-func unstakeDuck (lw) = {
2449- let lh = kN(gy)
2450- if ((size(gy.payments) != 0))
2449+@Callable(gz)
2450+func unstakeDuck (lx) = {
2451+ let li = kO(gz)
2452+ if ((size(gz.payments) != 0))
24512453 then throw("No payments required")
24522454 else {
2453- let bA = fromBase58String(lw)
2454- let w = toString(gy.caller)
2455- let jm = value(assetInfo(bA))
2456- let jn = bC(lw)
2457- if (!(isDefined(getInteger(jn))))
2458- then throw((("NFT " + jm.name) + " is not staked"))
2459- else if (!(isDefined(getString(bS(w)))))
2460- then throw((("The duck " + jm.name) + " is not staked"))
2455+ let bB = fromBase58String(lx)
2456+ let x = toString(gz.caller)
2457+ let jn = value(assetInfo(bB))
2458+ let jo = bD(lx)
2459+ if (!(isDefined(getInteger(jo))))
2460+ then throw((("NFT " + jn.name) + " is not staked"))
2461+ else if (!(isDefined(getString(bT(x)))))
2462+ then throw((("The duck " + jn.name) + " is not staked"))
24612463 else {
2462- let jp = valueOrErrorMessage(getString(bR(lw)), (("NFT " + jm.name) + " is orphaned"))
2463- if ((jp != w))
2464+ let jq = valueOrErrorMessage(getString(bS(lx)), (("NFT " + jn.name) + " is orphaned"))
2465+ if ((jq != x))
24642466 then throw("Staked NFT is not yours")
2465- else if (kk(lw))
2467+ else if (kl(lx))
24662468 then throw("unstakeDuck_checkTournament")
24672469 else {
2468- let iV = cP(lw)
2469- let iW = dw(valueOrElse(getInteger(cS(lw)), 0))
2470- let dH = valueOrElse(getInteger(iV), iW)
2471- if ((iW > dH))
2472- then throw((("Please heal your duck to " + toString(iW)) + "hp before unstaking"))
2473- else ([ScriptTransfer(gy.caller, 1, bA), DeleteEntry(jn), DeleteEntry(iV), DeleteEntry(bU(lw)), DeleteEntry(bR(lw)), DeleteEntry(bF(aJ, lw, w)), DeleteEntry(bS(w))] ++ lh)
2470+ let iW = cQ(lx)
2471+ let iX = dx(valueOrElse(getInteger(cT(lx)), 0))
2472+ let dI = valueOrElse(getInteger(iW), iX)
2473+ if ((iX > dI))
2474+ then throw((("Please heal your duck to " + toString(iX)) + "hp before unstaking"))
2475+ else ([ScriptTransfer(gz.caller, 1, bB), DeleteEntry(jo), DeleteEntry(iW), DeleteEntry(bV(lx)), DeleteEntry(bS(lx)), DeleteEntry(bG(aK, lx, x)), DeleteEntry(bT(x))] ++ li)
24742476 }
24752477 }
24762478 }
24772479 }
24782480
24792481
24802482
2481-@Callable(gy)
2482-func unstakeDuckCallback (bO,av) = if ((toString(gy.caller) != j))
2483+@Callable(gz)
2484+func unstakeDuckCallback (bP,aw) = if ((toString(gz.caller) != k))
24832485 then throw("Permission denied")
24842486 else {
2485- let lr = la(av, bO)
2486- $Tuple2([ScriptTransfer(addressFromStringValue(av), 1, fromBase58String(bO)), DeleteEntry(bC(bO)), DeleteEntry(bR(bO)), DeleteEntry(bF(aJ, bO, av)), DeleteEntry(bS(av))], lr)
2487- }
2488-
2489-
2490-
2491-@Callable(gy)
2492-func unstakeDuckREADONLY (bO,av) = {
2493- let lr = la(av, bO)
2494- $Tuple2(nil, lr)
2495- }
2496-
2497-
2498-
2499-@Callable(gy)
2500-func claimRes (eC,lA) = {
2501- let lh = kN(gy)
2502- if ((size(gy.payments) != 0))
2487+ let ls = lb(aw, bP)
2488+ $Tuple2([ScriptTransfer(addressFromStringValue(aw), 1, fromBase58String(bP)), DeleteEntry(bD(bP)), DeleteEntry(bS(bP)), DeleteEntry(bG(aK, bP, aw)), DeleteEntry(bT(aw))], ls)
2489+ }
2490+
2491+
2492+
2493+@Callable(gz)
2494+func unstakeDuckREADONLY (bP,aw) = {
2495+ let ls = lb(aw, bP)
2496+ $Tuple2(nil, ls)
2497+ }
2498+
2499+
2500+
2501+@Callable(gz)
2502+func claimRes (eD,lB) = {
2503+ let li = kO(gz)
2504+ if ((size(gz.payments) != 0))
25032505 then throw("No payments required")
25042506 else {
2505- let av = toString(gy.originCaller)
2506- let fd = jr(av, eC, ep, lA)
2507- let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
2508- $Tuple2(((((fd._1 ++ jZ(bO, fraction(di, eC, o))._1) :+ StringEntry(fd._2, makeString(fd._3, ":"))) :+ StringEntry(fd._4, makeString(fd._5, ":"))) ++ lh), fd._3[bt])
2509- }
2510- }
2511-
2512-
2513-
2514-@Callable(gy)
2515-func claimResToWH (eC,lA) = {
2516- let lh = kN(gy)
2517- if ((size(gy.payments) != 0))
2507+ let aw = toString(gz.originCaller)
2508+ let fe = js(aw, eD, eq, lB)
2509+ let bP = valueOrErrorMessage(getString(bT(aw)), "You don't have a duck staked")
2510+ $Tuple2(((((fe._1 ++ ka(bP, fraction(dj, eD, p))._1) :+ StringEntry(fe._2, makeString(fe._3, ":"))) :+ StringEntry(fe._4, makeString(fe._5, ":"))) ++ li), fe._3[bu])
2511+ }
2512+ }
2513+
2514+
2515+
2516+@Callable(gz)
2517+func claimResToWH (eD,lB) = {
2518+ let li = kO(gz)
2519+ if ((size(gz.payments) != 0))
25182520 then throw("No payments required")
25192521 else {
2520- let av = toString(gy.originCaller)
2521- let fd = jr(av, eC, eo, lA)
2522- $Tuple2(((((fd._1 ++ ka(av, fraction(di, eC, o))._1) :+ StringEntry(fd._2, makeString(fd._3, ":"))) :+ StringEntry(fd._4, makeString(fd._5, ":"))) ++ lh), fd._5[bk])
2523- }
2524- }
2525-
2526-
2527-
2528-@Callable(gy)
2529-func flight (iK,iL) = {
2530- let lh = kN(gy)
2531- if ((size(gy.payments) != 0))
2522+ let aw = toString(gz.originCaller)
2523+ let fe = js(aw, eD, ep, lB)
2524+ $Tuple2(((((fe._1 ++ kb(aw, fraction(dj, eD, p))._1) :+ StringEntry(fe._2, makeString(fe._3, ":"))) :+ StringEntry(fe._4, makeString(fe._5, ":"))) ++ li), fe._5[bl])
2525+ }
2526+ }
2527+
2528+
2529+
2530+@Callable(gz)
2531+func flight (iL,iM) = {
2532+ let li = kO(gz)
2533+ if ((size(gz.payments) != 0))
25322534 then throw("No payments required")
25332535 else {
2534- let bW = toString(gy.caller)
2535- let hg = iJ(bW, iK, iL)
2536- let iP = hg._1
2537- let bO = hg._2
2538- let lx = bU(bO)
2539- let jk = valueOrElse(getString(lx), aQ)
2540- let iR = hg._4
2541- if ((iR == jk))
2536+ let bX = toString(gz.caller)
2537+ let hh = iK(bX, iL, iM)
2538+ let iQ = hh._1
2539+ let bP = hh._2
2540+ let ly = bV(bP)
2541+ let jl = valueOrElse(getString(ly), aR)
2542+ let iS = hh._4
2543+ if ((iS == jl))
25422544 then throw("You can't fly to the same location")
25432545 else {
2544- let cy = split(iR, "_")
2545- let lB = (cy[bx] == "T")
2546- let lC = (cy[bx] == "D")
2547- let gk = cU(bO)
2548- let lD = valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,")
2549- let lE = fe(lD, hg._5)
2550- let lF = lE._1
2551- let lG = lE._2
2552- let hv = lE._3
2553- let lH = if (!(cs(Q, jk)))
2554- then if (lB)
2555- then cw(jk, iR, 5)
2556- else if (!(lC))
2557- then if ((iP > 0))
2558- then $Tuple2(iR, iP)
2559- else $Tuple2(jk, 0)
2560- else if ((iP > 0))
2546+ let cz = split(iS, "_")
2547+ let lC = (cz[by] == "T")
2548+ let lD = (cz[by] == "D")
2549+ let gl = cV(bP)
2550+ let lE = valueOrElse(getString(gl), ",;,_,;,_,;,_,;,_,;,_,;,")
2551+ let lF = ff(lE, hh._5)
2552+ let lG = lF._1
2553+ let lH = lF._2
2554+ let hw = lF._3
2555+ let lI = if (!(ct(R, jl)))
2556+ then if (lC)
2557+ then cx(jl, iS, 5)
2558+ else if (!(lD))
2559+ then if ((iQ > 0))
2560+ then $Tuple2(iS, iQ)
2561+ else $Tuple2(jl, 0)
2562+ else if ((iQ > 0))
25612563 then {
2562- let ak = invoke(this, "processDelivery", [bO], nil)
2563- if ((ak == ak))
2564- then $Tuple2(jk, iP)
2564+ let al = invoke(this, "processDelivery", [bP], nil)
2565+ if ((al == al))
2566+ then $Tuple2(jl, iQ)
25652567 else throw("Strict value is not equal to itself.")
25662568 }
2567- else $Tuple2(jk, 0)
2568- else if (cm(Q, jk))
2569- then if (!(cm(Q, iR)))
2569+ else $Tuple2(jl, 0)
2570+ else if (cn(R, jl))
2571+ then if (!(cn(R, iS)))
25702572 then throw("Your duck is taking part in the tournament")
25712573 else {
2572- let lI = parseIntValue(cy[by])
2573- let lJ = split(jk, "_")
2574- let co = valueOrElse(getInteger(Q, bZ), 0)
2575- if ((lI != (parseIntValue(lJ[by]) + 1)))
2576- then cw(jk, iR, 7)
2577- else if ((iP > 0))
2574+ let lJ = parseIntValue(cz[bz])
2575+ let lK = split(jl, "_")
2576+ let cp = valueOrElse(getInteger(R, ca), 0)
2577+ if ((lJ != (parseIntValue(lK[bz]) + 1)))
2578+ then cx(jl, iS, 7)
2579+ else if ((iQ > 0))
25782580 then {
2579- let lK = valueOrElse(getInteger(Q, cd(co, bO)), 0)
2580- let lL = if ((lI > lK))
2581- then invoke(Q, "saveDuckResult", [bO, lI], nil)
2581+ let lL = valueOrElse(getInteger(R, ce(cp, bP)), 0)
2582+ let lM = if ((lJ > lL))
2583+ then invoke(R, "saveDuckResult", [bP, lJ], nil)
25822584 else unit
2583- if ((lL == lL))
2584- then $Tuple2(iR, iP)
2585+ if ((lM == lM))
2586+ then $Tuple2(iS, iQ)
25852587 else throw("Strict value is not equal to itself.")
25862588 }
2587- else $Tuple2(jk, 0)
2589+ else $Tuple2(jl, 0)
25882590 }
2589- else throw(("Unknown curLocation:" + jk))
2590- let lM = lH._1
2591- let lN = lH._2
2592- $Tuple2(((([StringEntry(lx, lM), StringEntry(gk, lF), IntegerEntry(cP(bO), lN)] ++ lh) ++ (if (lG)
2593- then [StringEntry(da(bO), "0_0_0_0_0")]
2594- else nil)) ++ jZ(bO, if ((iP > 0))
2595- then dj
2596- else dk)._1), hg._3)
2591+ else throw(("Unknown curLocation:" + jl))
2592+ let lN = lI._1
2593+ let lO = lI._2
2594+ $Tuple2(((([StringEntry(ly, lN), StringEntry(gl, lG), IntegerEntry(cQ(bP), lO)] ++ li) ++ (if (lH)
2595+ then [StringEntry(db(bP), "0_0_0_0_0")]
2596+ else nil)) ++ ka(bP, if ((iQ > 0))
2597+ then dk
2598+ else dl)._1), hh._3)
25972599 }
25982600 }
25992601 }
26002602
26012603
26022604
2603-@Callable(gy)
2604-func heal (lO,lP,lQ) = {
2605- let lh = kN(gy)
2606- if (if (if ((0 > lO))
2607- then true
2608- else (0 > lP))
2605+@Callable(gz)
2606+func heal (lP,lQ,lR) = {
2607+ let li = kO(gz)
2608+ if (if (if ((0 > lP))
26092609 then true
26102610 else (0 > lQ))
2611+ then true
2612+ else (0 > lR))
26112613 then throw("Quantity cannot be negative")
26122614 else {
2613- let bO = valueOrErrorMessage(getString(bS(toString(gy.caller))), "You don't have a duck staked")
2614- if (kk(bO))
2615+ let bP = valueOrErrorMessage(getString(bT(toString(gz.caller))), "You don't have a duck staked")
2616+ if (kl(bP))
26152617 then throw("heal_checkTournament")
26162618 else {
2617- let lR = [lO, lP, lQ]
2618- let iV = cP(bO)
2619- let iW = dw(valueOrElse(getInteger(cS(bO)), 0))
2620- let lS = valueOrElse(getInteger(iV), iW)
2621- if ((lS >= iW))
2622- then throw((("HP should be < " + toString(iW)) + " to heal"))
2619+ let lS = [lP, lQ, lR]
2620+ let iW = cQ(bP)
2621+ let iX = dx(valueOrElse(getInteger(cT(bP)), 0))
2622+ let lT = valueOrElse(getInteger(iW), iX)
2623+ if ((lT >= iX))
2624+ then throw((("HP should be < " + toString(iX)) + " to heal"))
26232625 else {
2624- let hD = bT(bO)
2625- let ih = hC(hD)
2626- let lT = if ((ih[bv] == ""))
2626+ let hE = bU(bP)
2627+ let ii = hD(hE)
2628+ let lU = if ((ii[bw] == ""))
26272629 then nil
2628- else split_4C(ih[bv], "_")
2629- func lU (eL,cv) = {
2630- let am = eL._2
2631- let gX = if ((size(lT) > am))
2632- then parseIntValue(lT[am])
2630+ else split_4C(ii[bw], "_")
2631+ func lV (eM,cw) = {
2632+ let an = eM._2
2633+ let gY = if ((size(lU) > an))
2634+ then parseIntValue(lU[an])
26332635 else 0
2634- if ((3 > am))
2636+ if ((3 > an))
26352637 then {
2636- let lV = lR[am]
2637- if ((lV > gX))
2638- then throw(((("You have only " + toString(gX)) + " of ") + ba[am]))
2639- else $Tuple3((eL._1 :+ toString((gX - lV))), (am + 1), (eL._3 + (parseIntValue(split(cv, "_")[bf]) * lV)))
2638+ let lW = lS[an]
2639+ if ((lW > gY))
2640+ then throw(((("You have only " + toString(gY)) + " of ") + bb[an]))
2641+ else $Tuple3((eM._1 :+ toString((gY - lW))), (an + 1), (eM._3 + (parseIntValue(split(cw, "_")[bg]) * lW)))
26402642 }
2641- else $Tuple3((eL._1 :+ toString(gX)), (am + 1), eL._3)
2643+ else $Tuple3((eM._1 :+ toString(gY)), (an + 1), eM._3)
26422644 }
26432645
2644- let fd = {
2645- let eN = bd
2646- let eO = size(eN)
2647- let eP = $Tuple3(nil, 0, 0)
2648- func eQ (eR,eS) = if ((eS >= eO))
2649- then eR
2650- else lU(eR, eN[eS])
2651-
2652- func eT (eR,eS) = if ((eS >= eO))
2653- then eR
2646+ let fe = {
2647+ let eO = be
2648+ let eP = size(eO)
2649+ let eQ = $Tuple3(nil, 0, 0)
2650+ func eR (eS,eT) = if ((eT >= eP))
2651+ then eS
2652+ else lV(eS, eO[eT])
2653+
2654+ func eU (eS,eT) = if ((eT >= eP))
2655+ then eS
26542656 else throw("List size exceeds 50")
26552657
2656- eT(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eQ(eP, 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)
2658+ eU(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eR(eQ, 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)
26572659 }
2658- let lW = min([iW, (lS + fd._3)])
2659- $Tuple2((([IntegerEntry(iV, lW), StringEntry(hD, makeString_2C([ih[bs], ih[bt], ih[bu], makeString(fd._1, "_")], ":"))] ++ lh) ++ jZ(bO, (dt * ((lO + lP) + lQ)))._1), lW)
2660+ let lX = min([iX, (lT + fe._3)])
2661+ $Tuple2((([IntegerEntry(iW, lX), StringEntry(hE, makeString_2C([ii[bt], ii[bu], ii[bv], makeString(fe._1, "_")], ":"))] ++ li) ++ ka(bP, (du * ((lP + lQ) + lR)))._1), lX)
26602662 }
26612663 }
26622664 }
26632665 }
26642666
26652667
26662668
2667-@Callable(gy)
2669+@Callable(gz)
26682670 func healES () = {
2669- let lh = kN(gy)
2670- if ((size(gy.payments) != 1))
2671+ let li = kO(gz)
2672+ if ((size(gz.payments) != 1))
26712673 then throw("Exactly one payment required")
26722674 else {
2673- let li = value(gy.payments[0])
2674- if ((li.assetId != h))
2675+ let lj = value(gz.payments[0])
2676+ if ((lj.assetId != i))
26752677 then throw("Allowed USDT payment only!")
26762678 else {
2677- let bO = valueOrErrorMessage(getString(bS(toString(gy.caller))), "You don't have a duck staked")
2678- if (kk(bO))
2679+ let bP = valueOrErrorMessage(getString(bT(toString(gz.caller))), "You don't have a duck staked")
2680+ if (kl(bP))
26792681 then throw("healES_checkTournament")
26802682 else {
2681- let iV = cP(bO)
2682- let iW = dw(valueOrElse(getInteger(cS(bO)), 0))
2683- let lS = valueOrElse(getInteger(iV), iW)
2684- if ((lS > 0))
2683+ let iW = cQ(bP)
2684+ let iX = dx(valueOrElse(getInteger(cT(bP)), 0))
2685+ let lT = valueOrElse(getInteger(iW), iX)
2686+ if ((lT > 0))
26852687 then throw("HP should be 0 to call Emergency Service")
26862688 else {
2687- let hD = bT(bO)
2688- let ih = hC(hD)
2689- let lT = if ((ih[bv] == ""))
2689+ let hE = bU(bP)
2690+ let ii = hD(hE)
2691+ let lU = if ((ii[bw] == ""))
26902692 then nil
2691- else split_4C(ih[bv], "_")
2692- let lX = if ((size(lT) > 0))
2693- then parseIntValue(lT[0])
2693+ else split_4C(ii[bw], "_")
2694+ let lY = if ((size(lU) > 0))
2695+ then parseIntValue(lU[0])
26942696 else 0
2695- let lY = if ((size(lT) > 1))
2696- then parseIntValue(lT[1])
2697+ let lZ = if ((size(lU) > 1))
2698+ then parseIntValue(lU[1])
26972699 else 0
2698- let lZ = if ((size(lT) > 2))
2699- then parseIntValue(lT[2])
2700+ let ma = if ((size(lU) > 2))
2701+ then parseIntValue(lU[2])
27002702 else 0
2701- if (if (if ((lX > 0))
2702- then true
2703- else (lY > 0))
2703+ if (if (if ((lY > 0))
27042704 then true
27052705 else (lZ > 0))
2706+ then true
2707+ else (ma > 0))
27062708 then throw("You have to use own Medical Kit")
27072709 else {
2708- let ma = getString(N, bX())
2709- let mb = if (isDefined(ma))
2710- then split_4C(value(ma), "_")
2710+ let mb = getString(O, bY())
2711+ let mc = if (isDefined(mb))
2712+ then split_4C(value(mb), "_")
27112713 else nil
2712- let mc = if ((size(mb) > 0))
2713- then parseIntValue(mb[0])
2714+ let md = if ((size(mc) > 0))
2715+ then parseIntValue(mc[0])
27142716 else 0
2715- if ((0 >= mc))
2717+ if ((0 >= md))
27162718 then throw("There are no Medical Kits L1 at Emergency Service storage")
27172719 else {
2718- let lW = (lS + parseIntValue(split(bd[0], "_")[bf]))
2719- let md = makeString([toString((mc - 1)), removeByIndex(mb, 0)], "_")
2720- let cv = split(bd[0], "_")
2721- let me = cu(cv)
2722- let mf = fraction((me * aS), aR, (o * bi))
2723- if ((li.amount != mf))
2724- then throw(("Payment attached should be " + toString(mf)))
2720+ let lX = (lT + parseIntValue(split(be[0], "_")[bg]))
2721+ let me = makeString([toString((md - 1)), removeByIndex(mc, 0)], "_")
2722+ let cw = split(be[0], "_")
2723+ let mf = cv(cw)
2724+ let mg = fraction((mf * aT), aS, (p * bj))
2725+ if ((lj.amount != mg))
2726+ then throw(("Payment attached should be " + toString(mg)))
27252727 else {
2726- let fd = ai(invoke(N, "updateEsStorage", [md], [AttachedPayment(h, mf)]))
2727- $Tuple2(((lh :+ IntegerEntry(iV, lW)) ++ jZ(bO, dn)._1), fd)
2728+ let fe = aj(invoke(O, "updateEsStorage", [me], [AttachedPayment(i, mg)]))
2729+ $Tuple2(((li :+ IntegerEntry(iW, lX)) ++ ka(bP, do)._1), fe)
27282730 }
27292731 }
27302732 }
27312733 }
27322734 }
27332735 }
27342736 }
27352737 }
27362738
27372739
27382740
2739-@Callable(gy)
2740-func updateBackpack (bO,mg) = if ((gy.caller != N))
2741+@Callable(gz)
2742+func updateBackpack (bP,mh) = if ((gz.caller != O))
27412743 then throw("permission denied")
2742- else $Tuple2([StringEntry(bT(bO), mg)], mg)
2743-
2744-
2745-
2746-@Callable(gy)
2744+ else $Tuple2([StringEntry(bU(bP), mh)], mh)
2745+
2746+
2747+
2748+@Callable(gz)
27472749 func commitForRandom () = {
2748- let lh = kN(gy)
2749- let mh = (height + aa)
2750- let av = toString(gy.caller)
2751- $Tuple2(([IntegerEntry(ab(av), mh)] ++ lh), mh)
2752- }
2753-
2754-
2755-
2756-@Callable(gy)
2757-func revealRandom (aD) = {
2758- let lh = kN(gy)
2759- let av = toString(gy.caller)
2760- let mi = ab(av)
2761- let mh = valueOrErrorMessage(getInteger(mi), "You have to commitForRandom() first!")
2762- if ((mh > height))
2763- then throw(("Random number is not ready yet, wait until height = " + toString(mh)))
2750+ let li = kO(gz)
2751+ let mi = (height + ab)
2752+ let aw = toString(gz.caller)
2753+ $Tuple2(([IntegerEntry(ac(aw), mi)] ++ li), mi)
2754+ }
2755+
2756+
2757+
2758+@Callable(gz)
2759+func revealRandom (aE) = {
2760+ let li = kO(gz)
2761+ let aw = toString(gz.caller)
2762+ let mj = ac(aw)
2763+ let mi = valueOrErrorMessage(getInteger(mj), "You have to commitForRandom() first!")
2764+ if ((mi > height))
2765+ then throw(("Random number is not ready yet, wait until height = " + toString(mi)))
27642766 else {
2765- let aF = value(value(blockInfoByHeight(mh)).vrf)
2766- let aE = toBytes(valueOrElse(getString(au(av)), ""))
2767- let mj = aC(aD, aE, aF)
2768- $Tuple2(([DeleteEntry(mi)] ++ lh), mj)
2769- }
2770- }
2771-
2772-
2773-
2774-@Callable(gy)
2767+ let aG = value(value(blockInfoByHeight(mi)).vrf)
2768+ let aF = toBytes(valueOrElse(getString(av(aw)), ""))
2769+ let mk = aD(aE, aF, aG)
2770+ $Tuple2(([DeleteEntry(mj)] ++ li), mk)
2771+ }
2772+ }
2773+
2774+
2775+
2776+@Callable(gz)
27752777 func buySLand () = {
2776- let lh = kN(gy)
2777- if ((size(gy.payments) != 1))
2778+ let li = kO(gz)
2779+ if ((size(gz.payments) != 1))
27782780 then throw("Exactly one payment required")
27792781 else {
2780- let li = value(gy.payments[0])
2781- if ((li.assetId != h))
2782+ let lj = value(gz.payments[0])
2783+ if ((lj.assetId != i))
27822784 then throw("Allowed USDT payment only!")
2783- else if ((li.amount != dT))
2784- then throw(("Payment attached should be " + toString(dT)))
2785+ else if ((lj.amount != dU))
2786+ then throw(("Payment attached should be " + toString(dU)))
27852787 else {
2786- let fd = iC(gy.caller, gy.transactionId)
2787- let mk = al(invoke(R, "burnAcres", [dV], nil))
2788- $Tuple2((((fd._1 :+ ScriptTransfer(N, li.amount, h)) ++ ka(toString(gy.caller), dp)._1) ++ lh), $Tuple2(fd._2._1, mk))
2788+ let fe = iD(gz.caller, gz.transactionId)
2789+ let ml = am(invoke(S, "burnAcres", [dW], nil))
2790+ $Tuple2((((fe._1 :+ ScriptTransfer(O, lj.amount, i)) ++ kb(toString(gz.caller), dq)._1) ++ li), $Tuple2(fe._2._1, ml))
27892791 }
27902792 }
27912793 }
27922794
27932795
27942796
2795-@Callable(gy)
2796-func expedition (iK,iL) = {
2797- let lh = kN(gy)
2798- if ((size(gy.payments) != 0))
2797+@Callable(gz)
2798+func expedition (iL,iM) = {
2799+ let li = kO(gz)
2800+ if ((size(gz.payments) != 0))
27992801 then throw("No payments required")
28002802 else {
2801- let bW = toString(gy.caller)
2802- let hg = iJ(bW, iK, iL)
2803- let bO = hg._2
2804- let iV = cP(bO)
2805- let hD = bT(bO)
2806- let ih = hC(hD)
2807- let jK = split(ih[bu], "_")
2808- let jM = makeString(eX(true, jK, dS), "_")
2809- let gk = cU(bO)
2810- let lD = valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,")
2811- let ml = fe(lD, hg._5)
2812- let lF = ml._1
2813- let lG = ml._2
2814- let hv = ml._3
2815- let mm = iC(gy.caller, gy.transactionId)
2816- let iI = mm._2._1
2817- let fd = if ((0 >= hg._1))
2818- then $Tuple3([IntegerEntry(iV, 0), StringEntry(gk, lF)], "", 0)
2819- else $Tuple3((mm._1 ++ (if (lG)
2820- then [StringEntry(da(bO), "0_0_0_0_0")]
2821- else ((((nil :+ StringEntry(bU(bO), makeString([mm._2._2, "L", iI], "_"))) :+ IntegerEntry(iV, hg._1)) :+ StringEntry(gk, lF)) :+ StringEntry(hD, makeString([ih[bs], ih[bt], jM, ih[bv]], ":"))))), iI, hg._3)
2822- if (kk(bO))
2803+ let bX = toString(gz.caller)
2804+ let hh = iK(bX, iL, iM)
2805+ let bP = hh._2
2806+ let iW = cQ(bP)
2807+ let hE = bU(bP)
2808+ let ii = hD(hE)
2809+ let jL = split(ii[bv], "_")
2810+ let jN = makeString(eY(true, jL, dT), "_")
2811+ let gl = cV(bP)
2812+ let lE = valueOrElse(getString(gl), ",;,_,;,_,;,_,;,_,;,_,;,")
2813+ let mm = ff(lE, hh._5)
2814+ let lG = mm._1
2815+ let lH = mm._2
2816+ let hw = mm._3
2817+ let mn = iD(gz.caller, gz.transactionId)
2818+ let iJ = mn._2._1
2819+ let fe = if ((0 >= hh._1))
2820+ then $Tuple3([IntegerEntry(iW, 0), StringEntry(gl, lG)], "", 0)
2821+ else $Tuple3((mn._1 ++ (if (lH)
2822+ then [StringEntry(db(bP), "0_0_0_0_0")]
2823+ else ((((nil :+ StringEntry(bV(bP), makeString([mn._2._2, "L", iJ], "_"))) :+ IntegerEntry(iW, hh._1)) :+ StringEntry(gl, lG)) :+ StringEntry(hE, makeString([ii[bt], ii[bu], jN, ii[bw]], ":"))))), iJ, hh._3)
2824+ if (kl(bP))
28232825 then throw("expedition_checkTournament")
28242826 else {
2825- let mk = al(invoke(R, "burnAcres", [dV], nil))
2826- $Tuple2(((fd._1 ++ jZ(bO, dp)._1) ++ lh), $Tuple3(fd._2, fd._3, mk))
2827+ let ml = am(invoke(S, "burnAcres", [dW], nil))
2828+ $Tuple2(((fe._1 ++ ka(bP, dq)._1) ++ li), $Tuple3(fe._2, fe._3, ml))
28272829 }
28282830 }
28292831 }
28302832
28312833
28322834
2833-@Callable(gy)
2835+@Callable(gz)
28342836 func buySLandForAcres () = {
2835- let lh = kN(gy)
2836- if ((size(gy.payments) != 1))
2837+ let li = kO(gz)
2838+ if ((size(gz.payments) != 1))
28372839 then throw("exactly 1 payment must be attached")
28382840 else {
2839- let li = gy.payments[0]
2840- let fk = li.amount
2841- if (if (!(isDefined(li.assetId)))
2841+ let lj = gz.payments[0]
2842+ let fl = lj.amount
2843+ if (if (!(isDefined(lj.assetId)))
28422844 then true
2843- else (value(li.assetId) != Z))
2845+ else (value(lj.assetId) != aa))
28442846 then throw("ACRES payments only!")
2845- else if ((fk != dV))
2846- then throw(("Payment attached should be " + toString(dV)))
2847+ else if ((fl != dW))
2848+ then throw(("Payment attached should be " + toString(dW)))
28472849 else {
2848- let fd = iC(gy.caller, gy.transactionId)
2849- let mk = al(invoke(R, "burnAcres", [dV], [AttachedPayment(Z, fk)]))
2850- $Tuple2(((fd._1 ++ ka(toString(gy.caller), dp)._1) ++ lh), $Tuple2(fd._2._1, mk))
2850+ let fe = iD(gz.caller, gz.transactionId)
2851+ let ml = am(invoke(S, "burnAcres", [dW], [AttachedPayment(aa, fl)]))
2852+ $Tuple2(((fe._1 ++ kb(toString(gz.caller), dq)._1) ++ li), $Tuple2(fe._2._1, ml))
28512853 }
28522854 }
28532855 }
28542856
28552857
28562858
2857-@Callable(gy)
2858-func upgradeInfra (bI) = {
2859- let lh = kN(gy)
2860- if ((size(gy.payments) != 0))
2859+@Callable(gz)
2860+func upgradeInfra (bJ) = {
2861+ let li = kO(gz)
2862+ if ((size(gz.payments) != 0))
28612863 then throw("No payments required")
28622864 else {
2863- let fd = jE(true, gy.caller, 0, bI)
2864- let bO = valueOrErrorMessage(getString(bS(toString(gy.caller))), "You don't have a duck staked")
2865- $Tuple2(((fd._1 ++ lh) ++ jZ(bO, fraction(dq, fd._3, o))._1), fd._2)
2866- }
2867- }
2868-
2869-
2870-
2871-@Callable(gy)
2872-func activateArtifact (mn,mo) = {
2873- let lh = kN(gy)
2874- if ((size(gy.payments) != 0))
2865+ let fe = jF(true, gz.caller, 0, bJ)
2866+ let bP = valueOrErrorMessage(getString(bT(toString(gz.caller))), "You don't have a duck staked")
2867+ $Tuple2(((fe._1 ++ li) ++ ka(bP, fraction(dr, fe._3, p))._1), fe._2)
2868+ }
2869+ }
2870+
2871+
2872+
2873+@Callable(gz)
2874+func activateArtifact (mo,mp) = {
2875+ let li = kO(gz)
2876+ if ((size(gz.payments) != 0))
28752877 then throw("No payments required")
28762878 else {
2877- let av = toString(gy.caller)
2878- let fd = {
2879- let g = mn
2880- if (("PRESALE" == g))
2881- then ki(av, mo)
2882- else if (("ONBOARD" == g))
2883- then kb(av)
2879+ let aw = toString(gz.caller)
2880+ let fe = {
2881+ let h = mo
2882+ if (("PRESALE" == h))
2883+ then kj(aw, mp)
2884+ else if (("ONBOARD" == h))
2885+ then kc(aw)
28842886 else throw("Unknown artifact")
28852887 }
2886- (fd ++ lh)
2887- }
2888- }
2889-
2890-
2891-
2892-@Callable(gy)
2893-func mergeLands (ko) = {
2894- let lh = kN(gy)
2895- if ((size(gy.payments) != 0))
2888+ (fe ++ li)
2889+ }
2890+ }
2891+
2892+
2893+
2894+@Callable(gz)
2895+func mergeLands (kp) = {
2896+ let li = kO(gz)
2897+ if ((size(gz.payments) != 0))
28962898 then throw("No payments required")
28972899 else {
2898- let fd = kM(toString(gy.caller), ko)
2899- $Tuple2(((fd._1 ++ lh) ++ ka(toString(gy.caller), dr)._1), fd._2)
2900- }
2901- }
2902-
2903-
2904-
2905-@Callable(gy)
2906-func cargoExchange (mp,bI) = {
2907- let lh = kN(gy)
2908- if ((size(gy.payments) != 0))
2900+ let fe = kN(toString(gz.caller), kp)
2901+ $Tuple2(((fe._1 ++ li) ++ kb(toString(gz.caller), ds)._1), fe._2)
2902+ }
2903+ }
2904+
2905+
2906+
2907+@Callable(gz)
2908+func cargoExchange (mq,bJ) = {
2909+ let li = kO(gz)
2910+ if ((size(gz.payments) != 0))
29092911 then throw("No payments required")
29102912 else {
2911- let ig = split_4C(mp, ":")
2912- let av = toString(gy.originCaller)
2913- let jm = value(assetInfo(fromBase58String(bI)))
2914- let jn = bC(bI)
2915- if (!(isDefined(getInteger(jn))))
2916- then throw((jm.name + " is not staked"))
2913+ let ih = split_4C(mq, ":")
2914+ let aw = toString(gz.originCaller)
2915+ let jn = value(assetInfo(fromBase58String(bJ)))
2916+ let jo = bD(bJ)
2917+ if (!(isDefined(getInteger(jo))))
2918+ then throw((jn.name + " is not staked"))
29172919 else {
2918- let jp = valueOrErrorMessage(getString(bz(bI)), (("NFT " + jm.name) + " is orphaned"))
2919- if ((jp != av))
2920- then throw((aI + " is not yours"))
2920+ let jq = valueOrErrorMessage(getString(bA(bJ)), (("NFT " + jn.name) + " is orphaned"))
2921+ if ((jq != aw))
2922+ then throw((aJ + " is not yours"))
29212923 else {
2922- let hS = (aq(split(jm.description, "_")[T]) / p)
2923- let hT = valueOrElse(getInteger(bJ(bI)), 0)
2924- let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
2925- let jk = valueOrElse(getString(bU(bO)), aQ)
2926- let cp = split(value(jk), "_")
2927- if ((cp[bx] != "L"))
2928- then throw((("Duck location type is " + cp[bx]) + ", but should be L"))
2929- else if ((cp[by] != bI))
2930- then throw(("Duck should be on the land " + bI))
2924+ let hT = (ar(split(jn.description, "_")[U]) / q)
2925+ let hU = valueOrElse(getInteger(bK(bJ)), 0)
2926+ let bP = valueOrErrorMessage(getString(bT(aw)), "You don't have a duck staked")
2927+ let jl = valueOrElse(getString(bV(bP)), aR)
2928+ let cq = split(value(jl), "_")
2929+ if ((cq[by] != "L"))
2930+ then throw((("Duck location type is " + cq[by]) + ", but should be L"))
2931+ else if ((cq[bz] != bJ))
2932+ then throw(("Duck should be on the land " + bJ))
29312933 else {
2932- let hR = bH(bI)
2933- let hI = hQ(hR, hS, hT)
2934- let hD = bT(bO)
2935- let ih = hC(hD)
2936- let fd = if(ig, hI, ih)
2937- let hZ = split(hI[bn], "_")
2938- let jB = (parseIntValue(hZ[bp]) + fd._7)
2939- let jC = (parseIntValue(hZ[bq]) - fd._7)
2940- ([StringEntry(hD, makeString_2C([ih[bs], fd._4, fd._5, fd._6], ":")), StringEntry(hR, makeString_2C([hI[bj], fd._1, fd._2, fd._3, makeString([hZ[bo], toString(jB), toString(jC), hZ[br]], "_")], ":"))] ++ lh)
2934+ let hS = bI(bJ)
2935+ let hJ = hR(hS, hT, hU)
2936+ let hE = bU(bP)
2937+ let ii = hD(hE)
2938+ let fe = ig(ih, hJ, ii)
2939+ let ia = split(hJ[bo], "_")
2940+ let jC = (parseIntValue(ia[bq]) + fe._7)
2941+ let jD = (parseIntValue(ia[br]) - fe._7)
2942+ ([StringEntry(hE, makeString_2C([ii[bt], fe._4, fe._5, fe._6], ":")), StringEntry(hS, makeString_2C([hJ[bk], fe._1, fe._2, fe._3, makeString([ia[bp], toString(jC), toString(jD), ia[bs]], "_")], ":"))] ++ li)
29412943 }
29422944 }
29432945 }
29442946 }
29452947 }
29462948
29472949
29482950
2949-@Callable(gy)
2950-func saveWarehouse (hV,bI) = if ((gy.caller != N))
2951+@Callable(gz)
2952+func saveWarehouse (hW,bJ) = if ((gz.caller != O))
29512953 then throw("Access denied")
29522954 else {
2953- let hR = bH(bI)
2954- let hW = split_4C(hV, ":")
2955- if ((size(hW) != 5))
2955+ let hS = bI(bJ)
2956+ let hX = split_4C(hW, ":")
2957+ if ((size(hX) != 5))
29562958 then throw("warehouse string should contain 4 ':' separators")
29572959 else {
2958- let mq = split(hW[bn], "_")[bo]
2959- let jB = hH(hW)
2960- let mr = hF(hW[bj])
2961- let jC = ((mr - parseIntValue(mq)) - jB)
2962- if ((0 > jC))
2960+ let mr = split(hX[bo], "_")[bp]
2961+ let jC = hI(hX)
2962+ let ms = hG(hX[bk])
2963+ let jD = ((ms - parseIntValue(mr)) - jC)
2964+ if ((0 > jD))
29632965 then throw("Operation leads to negative free warehouse space")
29642966 else {
2965- let ms = makeString_2C([hW[bj], hW[bk], hW[bl], hW[bm], makeString([mq, toString(jB), toString(jC), toString(mr)], "_")], ":")
2966- $Tuple2([StringEntry(hR, ms)], ms)
2967+ let mt = makeString_2C([hX[bk], hX[bl], hX[bm], hX[bn], makeString([mr, toString(jC), toString(jD), toString(ms)], "_")], ":")
2968+ $Tuple2([StringEntry(hS, mt)], mt)
29672969 }
29682970 }
29692971 }
29702972
29712973
29722974
2973-@Callable(gy)
2974-func setCustomName (bA,ky,bE) = {
2975- let lh = kN(gy)
2976- if ((size(gy.payments) != 1))
2975+@Callable(gz)
2976+func setCustomName (bB,kz,bF) = {
2977+ let li = kO(gz)
2978+ if ((size(gz.payments) != 1))
29772979 then throw("Exactly one payment required")
29782980 else {
2979- let li = value(gy.payments[0])
2980- if ((li.assetId != h))
2981+ let lj = value(gz.payments[0])
2982+ if ((lj.assetId != i))
29812983 then throw("Allowed USDT payment only!")
2982- else if ((li.amount != dP))
2983- then throw(("Payment should be " + toString(dP)))
2984- else if (contains(ky, "__"))
2985- then throw(("Name should not contain '__': " + ky))
2986- else if ((size(ky) > dQ))
2987- then throw(("Name too long, maxLength=" + toString(dQ)))
2984+ else if ((lj.amount != dQ))
2985+ then throw(("Payment should be " + toString(dQ)))
2986+ else if (contains(kz, "__"))
2987+ then throw(("Name should not contain '__': " + kz))
2988+ else if ((size(kz) > dR))
2989+ then throw(("Name too long, maxLength=" + toString(dR)))
29882990 else {
2989- let av = toString(gy.originCaller)
2990- let mt = {
2991- let g = bE
2992- if (("ACCOUNT" == g))
2991+ let aw = toString(gz.originCaller)
2992+ let mu = {
2993+ let h = bF
2994+ if (("ACCOUNT" == h))
29932995 then {
2994- let mu = el(ky)
2995- let mv = getString(mu)
2996- if (isDefined(mv))
2997- then throw(("Name already registered: " + ky))
2996+ let mv = em(kz)
2997+ let mw = getString(mv)
2998+ if (isDefined(mw))
2999+ then throw(("Name already registered: " + kz))
29983000 else {
2999- let mw = bL(av)
3000- let mx = getString(mw)
3001- let my = if (isDefined(mx))
3002- then [DeleteEntry(el(value(mx)))]
3001+ let mx = bM(aw)
3002+ let my = getString(mx)
3003+ let mz = if (isDefined(my))
3004+ then [DeleteEntry(em(value(my)))]
30033005 else nil
3004- (((my :+ StringEntry(mw, ky)) :+ StringEntry(mu, av)) ++ ka(av, do)._1)
3006+ (((mz :+ StringEntry(mx, kz)) :+ StringEntry(mv, aw)) ++ kb(aw, dp)._1)
30053007 }
30063008 }
3007- else if (("LAND" == g))
3009+ else if (("LAND" == h))
30083010 then {
3009- let jm = value(assetInfo(fromBase58String(bA)))
3010- let jn = bC(bA)
3011- if (!(isDefined(getInteger(jn))))
3012- then throw((jm.name + " is not staked"))
3011+ let jn = value(assetInfo(fromBase58String(bB)))
3012+ let jo = bD(bB)
3013+ if (!(isDefined(getInteger(jo))))
3014+ then throw((jn.name + " is not staked"))
30133015 else {
3014- let jp = valueOrErrorMessage(getString(bz(bA)), (("NFT " + jm.name) + " is orphaned"))
3015- if ((jp != av))
3016- then throw((aI + " is not yours"))
3016+ let jq = valueOrErrorMessage(getString(bA(bB)), (("NFT " + jn.name) + " is orphaned"))
3017+ if ((jq != aw))
3018+ then throw((aJ + " is not yours"))
30173019 else {
3018- let mu = ee(ky)
3019- let mv = getString(mu)
3020- if (isDefined(mv))
3021- then throw(("Name already registered: " + ky))
3020+ let mv = ef(kz)
3021+ let mw = getString(mv)
3022+ if (isDefined(mw))
3023+ then throw(("Name already registered: " + kz))
30223024 else {
3023- let mz = bB(bA)
3024- let mx = getString(mz)
3025- let my = if (isDefined(mx))
3026- then [DeleteEntry(ee(value(mx)))]
3025+ let mA = bC(bB)
3026+ let my = getString(mA)
3027+ let mz = if (isDefined(my))
3028+ then [DeleteEntry(ef(value(my)))]
30273029 else nil
3028- (((my :+ StringEntry(mz, ky)) :+ StringEntry(mu, bA)) ++ ka(av, do)._1)
3030+ (((mz :+ StringEntry(mA, kz)) :+ StringEntry(mv, bB)) ++ kb(aw, dp)._1)
30293031 }
30303032 }
30313033 }
30323034 }
3033- else if (("DUCK" == g))
3035+ else if (("DUCK" == h))
30343036 then {
3035- let jm = value(assetInfo(fromBase58String(bA)))
3036- let jn = bC(bA)
3037- if (if (!(isDefined(getInteger(jn))))
3037+ let jn = value(assetInfo(fromBase58String(bB)))
3038+ let jo = bD(bB)
3039+ if (if (!(isDefined(getInteger(jo))))
30383040 then true
3039- else !(isDefined(getString(bS(av)))))
3040- then throw((jm.name + " is not staked"))
3041+ else !(isDefined(getString(bT(aw)))))
3042+ then throw((jn.name + " is not staked"))
30413043 else {
3042- let jp = valueOrErrorMessage(getString(bR(bA)), (("NFT " + jm.name) + " is orphaned"))
3043- if ((jp != av))
3044- then throw((aJ + " is not yours"))
3044+ let jq = valueOrErrorMessage(getString(bS(bB)), (("NFT " + jn.name) + " is orphaned"))
3045+ if ((jq != aw))
3046+ then throw((aK + " is not yours"))
30453047 else {
3046- let mu = ek(ky)
3047- let mv = getString(mu)
3048- if (isDefined(mv))
3049- then throw(("Name already registered: " + ky))
3048+ let mv = el(kz)
3049+ let mw = getString(mv)
3050+ if (isDefined(mw))
3051+ then throw(("Name already registered: " + kz))
30503052 else {
3051- let mz = bK(bA)
3052- let mx = getString(mz)
3053- let my = if (isDefined(mx))
3054- then [DeleteEntry(ek(value(mx)))]
3053+ let mA = bL(bB)
3054+ let my = getString(mA)
3055+ let mz = if (isDefined(my))
3056+ then [DeleteEntry(el(value(my)))]
30553057 else nil
3056- (((my :+ StringEntry(mz, ky)) :+ StringEntry(mu, bA)) ++ jZ(bA, do)._1)
3058+ (((mz :+ StringEntry(mA, kz)) :+ StringEntry(mv, bB)) ++ ka(bB, dp)._1)
30573059 }
30583060 }
30593061 }
30603062 }
30613063 else throw("Unknown entity type")
30623064 }
3063- $Tuple2(((mt :+ ScriptTransfer(N, li.amount, h)) ++ lh), 0)
3065+ $Tuple2(((mu :+ ScriptTransfer(O, lj.amount, i)) ++ li), 0)
30643066 }
30653067 }
30663068 }
30673069
30683070
30693071
3070-@Callable(gy)
3071-func setReferrals (mA,mB) = if ((gy.callerPublicKey != f))
3072+@Callable(gz)
3073+func setReferrals (mB,mC) = if ((gz.callerPublicKey != g))
30723074 then throw("Permission denied")
30733075 else {
3074- let lh = kN(gy)
3075- if ((size(gy.payments) != 0))
3076+ let li = kO(gz)
3077+ if ((size(gz.payments) != 0))
30763078 then throw("No payments required")
3077- else if (!(isDefined(addressFromString(mA))))
3078- then throw(("Invalid address: " + mA))
3079+ else if (!(isDefined(addressFromString(mB))))
3080+ then throw(("Invalid address: " + mB))
30793081 else {
3080- let mC = addressFromString(mB)
3081- if (!(isDefined(mC)))
3082- then throw(("Invalid address: " + mB))
3082+ let mD = addressFromString(mC)
3083+ if (!(isDefined(mD)))
3084+ then throw(("Invalid address: " + mC))
30833085 else {
3084- let mD = getString(au(mA))
3085- if (!(isDefined(mD)))
3086+ let mE = getString(av(mB))
3087+ if (!(isDefined(mE)))
30863088 then throw("oldPlayer didn't do any tx in game")
3087- else if ((0 >= wavesBalance(value(mC)).available))
3089+ else if ((0 >= wavesBalance(value(mD)).available))
30883090 then throw("newPlayer has no WAVES")
30893091 else {
3090- let mE = em()
3091- let mF = getString(mE)
3092- let mG = if (isDefined(mF))
3093- then split_4C(value(mF), "_")
3092+ let mF = en()
3093+ let mG = getString(mF)
3094+ let mH = if (isDefined(mG))
3095+ then split_4C(value(mG), "_")
30943096 else nil
3095- if (containsElement(mG, mB))
3096- then throw((mB + " is not newbie (already has referrals)"))
3097+ if (containsElement(mH, mC))
3098+ then throw((mC + " is not newbie (already has referrals)"))
30973099 else {
3098- let kc = bM(mB)
3099- let kd = getString(kc)
3100- if (if (isDefined(kd))
3101- then isDefined(addressFromString(value(kd)))
3100+ let kd = bN(mC)
3101+ let ke = getString(kd)
3102+ if (if (isDefined(ke))
3103+ then isDefined(addressFromString(value(ke)))
31023104 else false)
3103- then throw(((mB + " already has refBy: ") + value(kd)))
3105+ then throw(((mC + " already has refBy: ") + value(ke)))
31043106 else {
3105- let mH = bQ(mA)
3106- let mI = getString(mH)
3107- let mJ = if (isDefined(mI))
3108- then split_4C(value(mI), "_")
3107+ let mI = bR(mB)
3108+ let mJ = getString(mI)
3109+ let mK = if (isDefined(mJ))
3110+ then split_4C(value(mJ), "_")
31093111 else nil
3110- if (containsElement(mJ, mB))
3111- then throw((((mA + " already contains ") + mB) + " within referrals"))
3112+ if (containsElement(mK, mC))
3113+ then throw((((mB + " already contains ") + mC) + " within referrals"))
31123114 else {
3113- let mK = makeString_2C((mJ :+ mB), "_")
3114- let mL = if (containsElement(mG, mA))
3115- then value(mF)
3116- else makeString_2C((mG :+ mA), "_")
3117- $Tuple2(([StringEntry(kc, mA), StringEntry(mH, mK), StringEntry(mE, mL)] ++ lh), 0)
3115+ let mL = makeString_2C((mK :+ mC), "_")
3116+ let mM = if (containsElement(mH, mB))
3117+ then value(mG)
3118+ else makeString_2C((mH :+ mB), "_")
3119+ $Tuple2(([StringEntry(kd, mB), StringEntry(mI, mL), StringEntry(mF, mM)] ++ li), 0)
31183120 }
31193121 }
31203122 }
31213123 }
31223124 }
31233125 }
31243126 }
31253127
31263128
31273129
3128-@Callable(gy)
3129-func distributePoints (mM,mN,mO,mP,mQ) = {
3130- let lh = kN(gy)
3131- if ((size(gy.payments) != 0))
3130+@Callable(gz)
3131+func distributePoints (mN,mO,mP,mQ,mR) = {
3132+ let li = kO(gz)
3133+ if ((size(gz.payments) != 0))
31323134 then throw("No payments required")
31333135 else {
3134- let av = toString(gy.originCaller)
3135- let mR = an(invoke(P, "checkWlgXpREADONLY", [av], nil))
3136- let mS = al(mR[1])
3137- let mT = if ((0 >= mS))
3136+ let aw = toString(gz.originCaller)
3137+ let mS = ao(invoke(Q, "checkWlgXpREADONLY", [aw], nil))
3138+ let mT = am(mS[1])
3139+ let mU = if ((0 >= mT))
31383140 then $Tuple2(0, nil)
31393141 else {
3140- let jX = al(invoke(P, "takeWlgXp", [av], nil))
3141- if ((jX == jX))
3142- then $Tuple2(mS, [IntegerEntry(cW(av), al(mR[0])), IntegerEntry(cV(av), al(mR[2]))])
3142+ let jY = am(invoke(Q, "takeWlgXp", [aw], nil))
3143+ if ((jY == jY))
3144+ then $Tuple2(mT, [IntegerEntry(cX(aw), am(mS[0])), IntegerEntry(cW(aw), am(mS[2]))])
31433145 else throw("Strict value is not equal to itself.")
31443146 }
3145- let mU = mT._1
3146- let mV = mT._2
3147- let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
3148- let mW = cX(av)
3149- let mX = (valueOrElse(getInteger(mW), 0) + mU)
3150- let mY = cT(bO)
3151- let mZ = valueOrElse(getInteger(mY), 0)
3152- let na = (mX + mZ)
3153- let nb = ((((mM + mN) + mO) + mP) + mQ)
3154- if ((nb > na))
3155- then throw((("There are only " + toString(na)) + " free points to distribute"))
3147+ let mV = mU._1
3148+ let mW = mU._2
3149+ let bP = valueOrErrorMessage(getString(bT(aw)), "You don't have a duck staked")
3150+ let mX = cY(aw)
3151+ let mY = (valueOrElse(getInteger(mX), 0) + mV)
3152+ let mZ = cU(bP)
3153+ let na = valueOrElse(getInteger(mZ), 0)
3154+ let nb = (mY + na)
3155+ let nc = ((((mN + mO) + mP) + mQ) + mR)
3156+ if ((nc > nb))
3157+ then throw((("There are only " + toString(nb)) + " free points to distribute"))
31563158 else {
3157- let nc = cQ(bO)
3158- let dF = split(valueOrElse(getString(nc), "0_0_0_0_0"), "_")
3159- let nd = (mX - nb)
3160- $Tuple2((([IntegerEntry(mW, if ((0 > nd))
3159+ let nd = cR(bP)
3160+ let dG = split(valueOrElse(getString(nd), "0_0_0_0_0"), "_")
3161+ let ne = (mY - nc)
3162+ $Tuple2((([IntegerEntry(mX, if ((0 > ne))
31613163 then 0
3162- else nd), IntegerEntry(mY, if ((0 > nd))
3163- then (mZ + nd)
3164- else mZ), StringEntry(nc, makeString([toString((parseIntValue(dF[cF]) + mM)), toString((parseIntValue(dF[cG]) + mN)), toString((parseIntValue(dF[cH]) + mO)), toString((parseIntValue(dF[cI]) + mP)), toString((parseIntValue(dF[cJ]) + mQ))], "_"))] ++ lh) ++ mV), 0)
3164+ else ne), IntegerEntry(mZ, if ((0 > ne))
3165+ then (na + ne)
3166+ else na), StringEntry(nd, makeString([toString((parseIntValue(dG[cG]) + mN)), toString((parseIntValue(dG[cH]) + mO)), toString((parseIntValue(dG[cI]) + mP)), toString((parseIntValue(dG[cJ]) + mQ)), toString((parseIntValue(dG[cK]) + mR))], "_"))] ++ li) ++ mW), 0)
31653167 }
31663168 }
31673169 }
31683170
31693171
31703172
3171-@Callable(gy)
3172-func splitByGlobalWeightsREADONLY (eC) = $Tuple2(nil, eU(eC))
3173-
3174-
3175-
3176-@Callable(gy)
3177-func splitByGlobalAndLocalWeightsREADONLY (ne,nf,gB) = {
3178- let gu = gA(gB)
3179- $Tuple2(nil, $Tuple2(eU(ne), eF(nf, gu)))
3180- }
3181-
3182-
3183-
3184-@Callable(gy)
3185-func getBackpackREADONLY (bO) = $Tuple2(nil, makeString(hC(bT(bO)), ":"))
3186-
3187-
3188-
3189-@Callable(gy)
3190-func getWarehouseREADONLY (bI) = {
3191- let jm = value(assetInfo(fromBase58String(bI)))
3192- let hS = (aq(split(jm.description, "_")[T]) / p)
3193- let hT = valueOrElse(getInteger(bJ(bI)), 0)
3194- $Tuple2(nil, makeString_2C(hQ(bH(bI), hS, hT), ":"))
3195- }
3196-
3197-
3198-
3199-@Callable(gy)
3200-func saveLastTx () = if (!(containsElement([P, N, Q, R], gy.caller)))
3173+@Callable(gz)
3174+func splitByGlobalWeightsREADONLY (eD) = $Tuple2(nil, eV(eD))
3175+
3176+
3177+
3178+@Callable(gz)
3179+func splitByGlobalAndLocalWeightsREADONLY (nf,ng,gC) = {
3180+ let gv = gB(gC)
3181+ $Tuple2(nil, $Tuple2(eV(nf), eG(ng, gv)))
3182+ }
3183+
3184+
3185+
3186+@Callable(gz)
3187+func getBackpackREADONLY (bP) = $Tuple2(nil, makeString(hD(bU(bP)), ":"))
3188+
3189+
3190+
3191+@Callable(gz)
3192+func getWarehouseREADONLY (bJ) = {
3193+ let jn = value(assetInfo(fromBase58String(bJ)))
3194+ let hT = (ar(split(jn.description, "_")[U]) / q)
3195+ let hU = valueOrElse(getInteger(bK(bJ)), 0)
3196+ $Tuple2(nil, makeString_2C(hR(bI(bJ), hT, hU), ":"))
3197+ }
3198+
3199+
3200+
3201+@Callable(gz)
3202+func saveLastTx () = if (!(containsElement([Q, O, R, S], gz.caller)))
32013203 then throw("Access denied")
3202- else $Tuple2(kN(gy), 42)
3203-
3204-
3205-
3206-@Callable(gy)
3207-func updateDuckStats (bO,jX) = if ((gy.caller != N))
3204+ else $Tuple2(kO(gz), 42)
3205+
3206+
3207+
3208+@Callable(gz)
3209+func updateDuckStats (bP,jY) = if ((gz.caller != O))
32083210 then throw("Access denied")
3209- else jZ(bO, jX)
3210-
3211-
3212-
3213-@Callable(gy)
3214-func updateAccStats (av,jX) = if (!(containsElement([P, N, R], gy.caller)))
3211+ else ka(bP, jY)
3212+
3213+
3214+
3215+@Callable(gz)
3216+func updateAccStats (aw,jY) = if (!(containsElement([Q, O, S], gz.caller)))
32153217 then throw("Access denied")
3216- else ka(av, jX)
3217-
3218-
3219-
3220-@Callable(gy)
3221-func equipDuck (ng) = {
3222- let lh = kN(gy)
3223- if ((size(gy.payments) != 0))
3218+ else kb(aw, jY)
3219+
3220+
3221+
3222+@Callable(gz)
3223+func equipDuck (nh) = {
3224+ let li = kO(gz)
3225+ if ((size(gz.payments) != 0))
32243226 then throw("No payments required")
32253227 else {
3226- let av = toString(gy.originCaller)
3227- let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
3228- if (kk(bO))
3228+ let aw = toString(gz.originCaller)
3229+ let bP = valueOrErrorMessage(getString(bT(aw)), "You don't have a duck staked")
3230+ if (kl(bP))
32293231 then throw("equipDuck_checkTournament")
32303232 else {
3231- let gk = cU(bO)
3232- let lb = split(valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3233- let hD = bT(bO)
3234- let ih = hC(hD)
3235- let lF = split(ng, "_")
3236- if ((size(lF) != cL))
3233+ let gl = cV(bP)
3234+ let lc = split(valueOrElse(getString(gl), ",;,_,;,_,;,_,;,_,;,_,;,"), "_")
3235+ let hE = bU(bP)
3236+ let ii = hD(hE)
3237+ let lG = split(nh, "_")
3238+ if ((size(lG) != cM))
32373239 then throw("Wrong equipment string")
32383240 else {
3239- let gn = gc(lb, fr(ih[bv]), true, nil)
3240- let go = split(lF[cK], ";")[1]
3241- let dD = if ((go == ""))
3241+ let go = gd(lc, fs(ii[bw]), true, nil)
3242+ let gp = split(lG[cL], ";")[1]
3243+ let dE = if ((gp == ""))
32423244 then 0
32433245 else {
3244- let gp = split(go, ",")[0]
3245- if ((gp == ""))
3246+ let gq = split(gp, ",")[0]
3247+ if ((gq == ""))
32463248 then 0
32473249 else {
3248- let fG = split(gp, ":")
3249- let K = fG[0]
3250- let gq = fG[1]
3251- if (if (if (if (if ((K == "06"))
3250+ let fH = split(gq, ":")
3251+ let L = fH[0]
3252+ let gr = fH[1]
3253+ if (if (if (if (if ((L == "06"))
32523254 then true
3253- else (K == "07"))
3255+ else (L == "07"))
32543256 then true
3255- else (K == "08"))
3256- then (gq != "")
3257+ else (L == "08"))
3258+ then (gr != "")
32573259 else false)
3258- then (parseIntValue(gq) > 0)
3260+ then (parseIntValue(gr) > 0)
32593261 else false)
3260- then parseIntValue(split(bd[parseIntValue(K)], "_")[bf])
3262+ then parseIntValue(split(be[parseIntValue(L)], "_")[bg])
32613263 else 0
32623264 }
32633265 }
3264- let fX = dC(this, bO, dD, true)
3265- let gr = gc(lF, gn, false, fX)
3266- let lc = fw(gr)
3267- $Tuple2(([StringEntry(gk, ng), StringEntry(hD, makeString_2C([ih[bs], ih[bt], ih[bu], lc], ":")), StringEntry(da(bO), makeString([toString(fX[7]), toString(fX[8]), toString(fX[9]), toString(fX[10]), toString(fX[11])], "_"))] ++ lh), 0)
3266+ let fY = dD(this, bP, dE, true)
3267+ let gs = gd(lG, go, false, fY)
3268+ let ld = fx(gs)
3269+ $Tuple2(([StringEntry(gl, nh), StringEntry(hE, makeString_2C([ii[bt], ii[bu], ii[bv], ld], ":")), StringEntry(db(bP), makeString([toString(fY[7]), toString(fY[8]), toString(fY[9]), toString(fY[10]), toString(fY[11])], "_"))] ++ li), 0)
32683270 }
32693271 }
32703272 }
32713273 }
32723274
32733275
32743276
3275-@Callable(gy)
3276-func initDuckTourAttempt (bO) = if ((gy.caller != Q))
3277+@Callable(gz)
3278+func initDuckTourAttempt (bP) = if ((gz.caller != R))
32773279 then throw("Access denied")
32783280 else {
3279- let iV = cP(bO)
3280- let iW = dw(valueOrElse(getInteger(cS(bO)), 0))
3281- let lz = valueOrElse(getInteger(iV), iW)
3282- let nh = bU(bO)
3283- let jk = valueOrElse(getString(nh), aQ)
3284- let co = valueOrElse(getInteger(Q, bZ), 0)
3285- let ni = (toString(co) + "_T_0")
3286- $Tuple2([IntegerEntry(cY(bO), lz), IntegerEntry(iV, iW), StringEntry(cZ(bO), jk), StringEntry(nh, ni)], ni)
3287- }
3288-
3289-
3290-
3291-@Callable(gy)
3281+ let iW = cQ(bP)
3282+ let iX = dx(valueOrElse(getInteger(cT(bP)), 0))
3283+ let lA = valueOrElse(getInteger(iW), iX)
3284+ let ni = bV(bP)
3285+ let jl = valueOrElse(getString(ni), aR)
3286+ let cp = valueOrElse(getInteger(R, ca), 0)
3287+ let nj = (toString(cp) + "_T_0")
3288+ $Tuple2([IntegerEntry(cZ(bP), lA), IntegerEntry(iW, iX), StringEntry(da(bP), jl), StringEntry(ni, nj)], nj)
3289+ }
3290+
3291+
3292+
3293+@Callable(gz)
32923294 func breakAttempt () = {
3293- let lh = kN(gy)
3294- let bO = valueOrErrorMessage(getString(bS(toString(gy.caller))), "You don't have a duck staked")
3295- let nh = bU(bO)
3296- let jk = valueOrElse(getString(nh), aQ)
3297- if ((split(jk, "_")[bx] != "T"))
3295+ let li = kO(gz)
3296+ let bP = valueOrErrorMessage(getString(bT(toString(gz.caller))), "You don't have a duck staked")
3297+ let ni = bV(bP)
3298+ let jl = valueOrElse(getString(ni), aR)
3299+ if ((split(jl, "_")[by] != "T"))
32983300 then throw("Your duck is not in the tournament")
32993301 else {
3300- let nj = getIntegerValue(cY(bO))
3301- let nk = getStringValue(cZ(bO))
3302- $Tuple2(((lh :+ IntegerEntry(cP(bO), nj)) :+ StringEntry(nh, nk)), jk)
3303- }
3304- }
3305-
3306-
3307-
3308-@Callable(gy)
3309-func breakAttemptCallback () = if ((gy.caller != Q))
3302+ let nk = getIntegerValue(cZ(bP))
3303+ let nl = getStringValue(da(bP))
3304+ $Tuple2(((li :+ IntegerEntry(cQ(bP), nk)) :+ StringEntry(ni, nl)), jl)
3305+ }
3306+ }
3307+
3308+
3309+
3310+@Callable(gz)
3311+func breakAttemptCallback () = if ((gz.caller != R))
33103312 then throw("Access denied")
33113313 else {
3312- let bO = valueOrErrorMessage(getString(bS(toString(gy.originCaller))), "You don't have a duck staked")
3313- $Tuple2([IntegerEntry(cP(bO), getIntegerValue(cY(bO))), StringEntry(bU(bO), getStringValue(cZ(bO)))], "breakAttemptCallback")
3314- }
3315-
3316-
3317-
3318-@Callable(gy)
3319-func exitTournamentInternal (bO) = if ((gy.caller != this))
3314+ let bP = valueOrErrorMessage(getString(bT(toString(gz.originCaller))), "You don't have a duck staked")
3315+ $Tuple2([IntegerEntry(cQ(bP), getIntegerValue(cZ(bP))), StringEntry(bV(bP), getStringValue(da(bP)))], "breakAttemptCallback")
3316+ }
3317+
3318+
3319+
3320+@Callable(gz)
3321+func exitTournamentInternal (bP) = if ((gz.caller != this))
33203322 then throw("Access denied")
33213323 else {
3322- let nj = getIntegerValue(cY(bO))
3323- let nk = getStringValue(cZ(bO))
3324- $Tuple2([IntegerEntry(cP(bO), nj), StringEntry(bU(bO), nk)], false)
3325- }
3326-
3327-
3328-
3329-@Callable(gy)
3330-func processDelivery (bO) = if ((gy.caller != this))
3324+ let nk = getIntegerValue(cZ(bP))
3325+ let nl = getStringValue(da(bP))
3326+ $Tuple2([IntegerEntry(cQ(bP), nk), StringEntry(bV(bP), nl)], false)
3327+ }
3328+
3329+
3330+
3331+@Callable(gz)
3332+func processDelivery (bP) = if ((gz.caller != this))
33313333 then throw("Access denied")
33323334 else {
3333- let av = toString(gy.originCaller)
3334- let nl = valueOrElse(getInteger(N, bY), 0)
3335- if ((aT > nl))
3336- then throw(("Delivery is not available, fund=" + aw(nl, 6)))
3335+ let aw = toString(gz.originCaller)
3336+ let nm = valueOrElse(getInteger(O, bZ), 0)
3337+ if ((aU > nm))
3338+ then throw(("Delivery is not available, fund=" + ax(nm, 6)))
33373339 else {
3338- let cq = lastBlock.timestamp
3339- let nm = dg(av)
3340- let nn = valueOrElse(getInteger(dh(av)), 0)
3341- let no = (cq / dJ)
3342- let fM = if ((nn == no))
3343- then valueOrElse(getInteger(nm), 0)
3340+ let cr = lastBlock.timestamp
3341+ let nn = dh(aw)
3342+ let no = valueOrElse(getInteger(di(aw)), 0)
3343+ let np = (cr / dK)
3344+ let fN = if ((no == np))
3345+ then valueOrElse(getInteger(nn), 0)
33443346 else 0
3345- let np = valueOrElse(getInteger(R, dL(av)), 0)
3346- let nq = (aY + (np / aZ))
3347- if ((fM >= nq))
3348- then throw((("You already used " + toString(nq)) + " delivery attempts for today"))
3347+ let nq = valueOrElse(getInteger(S, dM(aw)), 0)
3348+ let nr = (aZ + (nq / ba))
3349+ if ((fN >= nr))
3350+ then throw((("You already used " + toString(nr)) + " delivery attempts for today"))
33493351 else {
3350- let nr = df(bO)
3351- let ns = invoke(N, "sendDeliveryReward", [av], nil)
3352- $Tuple2([IntegerEntry(nm, (fM + 1)), IntegerEntry(dh(av), no), IntegerEntry(nr, (valueOrElse(getInteger(nr), 0) + 1))], ns)
3352+ let ns = dg(bP)
3353+ let nt = invoke(O, "sendDeliveryReward", [aw], nil)
3354+ $Tuple2([IntegerEntry(nn, (fN + 1)), IntegerEntry(di(aw), np), IntegerEntry(ns, (valueOrElse(getInteger(ns), 0) + 1))], nt)
33533355 }
33543356 }
33553357 }
33563358
33573359
33583360
3359-@Callable(gy)
3360-func robLand (iK,iL) = {
3361- let lh = kN(gy)
3362- if ((size(gy.payments) != 1))
3361+@Callable(gz)
3362+func robLand (iL,iM) = {
3363+ let li = kO(gz)
3364+ if ((size(gz.payments) != 1))
33633365 then throw("exactly 1 payment must be attached")
33643366 else {
3365- let li = gy.payments[0]
3366- let nt = li.amount
3367- if (if (!(isDefined(li.assetId)))
3367+ let lj = gz.payments[0]
3368+ let nu = lj.amount
3369+ if (if (!(isDefined(lj.assetId)))
33683370 then true
3369- else (value(li.assetId) != X))
3371+ else (value(lj.assetId) != Y))
33703372 then throw("WLGOLD payments only!")
3371- else if ((nt != aV))
3372- then throw((("Payment should be " + aw(aV, 8)) + " WLGOLD"))
3373+ else if ((nu != aW))
3374+ then throw((("Payment should be " + ax(aW, 8)) + " WLGOLD"))
33733375 else {
3374- let av = toString(gy.caller)
3375- if (!(sigVerify_8Kb(iK, iL, f)))
3376+ let aw = toString(gz.caller)
3377+ if (!(sigVerify_8Kb(iL, iM, g)))
33763378 then throw("signature does not match")
33773379 else {
3378- let fj = split_4C(toUtf8String(iK), ";")
3379- let nu = split_4C(fj[0], "|")
3380- let iN = split(nu[ev], "_")
3381- let iO = parseIntValue(iN[0])
3382- let iP = parseIntValue(iN[1])
3383- let iZ = nu[ew]
3384- let nv = split(fj[1], "|")
3385- let nw = nv[ex]
3386- if ((nw != "B"))
3380+ let fk = split_4C(toUtf8String(iL), ";")
3381+ let nv = split_4C(fk[0], "|")
3382+ let iO = split(nv[ew], "_")
3383+ let iP = parseIntValue(iO[0])
3384+ let iQ = parseIntValue(iO[1])
3385+ let ja = nv[ex]
3386+ let nw = split(fk[1], "|")
3387+ let nx = nw[ey]
3388+ if ((nx != "B"))
33873389 then throw("Only bank robbery is supported")
33883390 else {
3389- let iS = parseIntValue(nv[ez])
3390- if (if ((iS > (lastBlock.timestamp + dO)))
3391+ let iT = parseIntValue(nw[eA])
3392+ if (if ((iT > (lastBlock.timestamp + dP)))
33913393 then true
3392- else ((lastBlock.timestamp - dO) > iS))
3393- then throw(((("signature outdated: logTime=" + toString(iS)) + ", bcTime=") + toString(lastBlock.timestamp)))
3394+ else ((lastBlock.timestamp - dP) > iT))
3395+ then throw(((("signature outdated: logTime=" + toString(iT)) + ", bcTime=") + toString(lastBlock.timestamp)))
33943396 else {
3395- let iT = nv[ey]
3396- let iU = valueOrElse(getString(au(av)), "")
3397- if ((iU != iT))
3398- then throw(((("Tx ids don't match! In state: " + iU) + ", in msg: ") + iT))
3397+ let iU = nw[ez]
3398+ let iV = valueOrElse(getString(av(aw)), "")
3399+ if ((iV != iU))
3400+ then throw(((("Tx ids don't match! In state: " + iV) + ", in msg: ") + iU))
33993401 else {
3400- let bO = valueOrErrorMessage(getString(bS(av)), "You don't have a duck staked")
3401- let gk = cU(bO)
3402- let lD = valueOrElse(getString(gk), ",;,_,;,_,;,_,;,_,;,_,;,")
3403- let nx = fe(lD, iZ)
3404- let lF = nx._1
3405- let lG = nx._2
3406- let ny = nx._3
3407- let jk = valueOrElse(getString(bU(bO)), aQ)
3408- if (cm(Q, jk))
3402+ let bP = valueOrErrorMessage(getString(bT(aw)), "You don't have a duck staked")
3403+ let gl = cV(bP)
3404+ let lE = valueOrElse(getString(gl), ",;,_,;,_,;,_,;,_,;,_,;,")
3405+ let ny = ff(lE, ja)
3406+ let lG = ny._1
3407+ let lH = ny._2
3408+ let nz = ny._3
3409+ let jl = valueOrElse(getString(bV(bP)), aR)
3410+ if (cn(R, jl))
34093411 then throw("Your duck is taking part in the tournament")
34103412 else {
3411- let cq = lastBlock.timestamp
3412- let nm = dd(av)
3413- let nn = valueOrElse(getInteger(de(av)), 0)
3414- let no = (cq / dJ)
3415- let fM = if ((nn == no))
3416- then valueOrElse(getInteger(nm), 0)
3413+ let cr = lastBlock.timestamp
3414+ let nn = de(aw)
3415+ let no = valueOrElse(getInteger(df(aw)), 0)
3416+ let np = (cr / dK)
3417+ let fN = if ((no == np))
3418+ then valueOrElse(getInteger(nn), 0)
34173419 else 0
3418- let np = valueOrElse(getInteger(R, dL(av)), 0)
3419- let nz = (aW + (np / aX))
3420- if ((fM >= nz))
3421- then throw((("You already used " + toString(nz)) + " robbery attempts for today"))
3420+ let nq = valueOrElse(getInteger(S, dM(aw)), 0)
3421+ let nA = (aX + (nq / aY))
3422+ if ((fN >= nA))
3423+ then throw((("You already used " + toString(nA)) + " robbery attempts for today"))
34223424 else {
3423- let nr = dc(bO)
3424- let nA = if ((iP > 0))
3425+ let ns = dd(bP)
3426+ let nB = if ((iQ > 0))
34253427 then {
3426- let nl = assetBalance(this, X)
3427- let nB = if (ny)
3428- then (2 * aV)
3429- else (5 * aV)
3430- if ((nB > nl))
3431- then throw(((("Robbery is not available, funds = " + aw(nl, 8)) + " WLGOLD, required = ") + aw(nB, 8)))
3432- else [ScriptTransfer(gy.caller, nB, X)]
3428+ let nm = assetBalance(this, Y)
3429+ let nC = if (nz)
3430+ then (2 * aW)
3431+ else (5 * aW)
3432+ if ((nC > nm))
3433+ then throw(((("Robbery is not available, funds = " + ax(nm, 8)) + " WLGOLD, required = ") + ax(nC, 8)))
3434+ else [ScriptTransfer(gz.caller, nC, Y)]
34333435 }
34343436 else nil
3435- $Tuple2((((((((((lh ++ nA) ++ (if (lG)
3436- then [StringEntry(da(bO), "0_0_0_0_0")]
3437- else nil)) ++ jZ(bO, if ((iP > 0))
3438- then dl
3439- else dm)._1) :+ IntegerEntry(db(bO), cq)) :+ IntegerEntry(nm, (fM + 1))) :+ IntegerEntry(de(av), no)) :+ IntegerEntry(nr, (valueOrElse(getInteger(nr), 0) + 1))) :+ StringEntry(gk, lF)) :+ IntegerEntry(cP(bO), max([iP, 0]))), 0)
3437+ $Tuple2((((((((((li ++ nB) ++ (if (lH)
3438+ then [StringEntry(db(bP), "0_0_0_0_0")]
3439+ else nil)) ++ ka(bP, if ((iQ > 0))
3440+ then dm
3441+ else dn)._1) :+ IntegerEntry(dc(bP), cr)) :+ IntegerEntry(nn, (fN + 1))) :+ IntegerEntry(df(aw), np)) :+ IntegerEntry(ns, (valueOrElse(getInteger(ns), 0) + 1))) :+ StringEntry(gl, lG)) :+ IntegerEntry(cQ(bP), max([iQ, 0]))), 0)
34403442 }
34413443 }
34423444 }
34433445 }
34443446 }
34453447 }
34463448 }
34473449 }
34483450 }
34493451
34503452
34513453
3452-@Callable(gy)
3454+@Callable(gz)
34533455 func buyRoboDuck () = if (!(c))
34543456 then throw("Feature is turned off")
34553457 else {
3456- let lh = kN(gy)
3457- if ((size(gy.payments) != 1))
3458+ let li = kO(gz)
3459+ if ((size(gz.payments) != 1))
34583460 then throw("Exactly one payment required")
34593461 else {
3460- let li = value(gy.payments[0])
3461- if ((li.assetId != h))
3462+ let lj = value(gz.payments[0])
3463+ if ((lj.assetId != i))
34623464 then throw("Allowed USDT payment only!")
3463- else if ((li.amount != dU))
3464- then throw((("Payment attached should be " + aw(dU, 6)) + " USDT"))
3465+ else if ((lj.amount != dV))
3466+ then throw((("Payment attached should be " + ax(dV, 6)) + " USDT"))
34653467 else {
3466- let nC = valueOrElse(getInteger(en()), 0)
3467- let nD = toBytes(nC)
3468- let ef = ((aK + "-") + takeRight(toBase16String(nD), 8))
3469- let nE = takeRight(toBase16String(sha256_16Kb(nD)), 6)
3470- let iH = Issue(ef, ("Robo Duck NFT for WavesLands game, background color = #" + nE), 1, 0, false)
3471- let bA = calculateAssetId(iH)
3472- $Tuple2(((((lh :+ IntegerEntry(en(), (nC + 1))) :+ iH) :+ ScriptTransfer(gy.originCaller, 1, bA)) :+ ScriptTransfer(N, li.amount, h)), $Tuple2(toBase58String(bA), nE))
3468+ let nD = valueOrElse(getInteger(eo()), 0)
3469+ let nE = toBytes(nD)
3470+ let eg = ((aL + "-") + takeRight(toBase16String(nE), 8))
3471+ let nF = takeRight(toBase16String(sha256_16Kb(nE)), 6)
3472+ let iI = Issue(eg, ("Robo Duck NFT for WavesLands game, background color = #" + nF), 1, 0, false)
3473+ let bB = calculateAssetId(iI)
3474+ $Tuple2(((((li :+ IntegerEntry(eo(), (nD + 1))) :+ iI) :+ ScriptTransfer(gz.originCaller, 1, bB)) :+ ScriptTransfer(O, lj.amount, i)), $Tuple2(toBase58String(bB), nF))
34733475 }
34743476 }
34753477 }
34763478
34773479

github/deemru/w8io/169f3d6 
1527.16 ms