tx · 8C89DQdGAq2zYL1opkyKEFnEfWauNzuqVwTM4c6FbQCZ

3N4nTJ5sSp5X5ChS2bBBmwNMn1eeRzT1FoP:  -0.04000000 Waves

2023.05.04 14:23 [2562945] smart account 3N4nTJ5sSp5X5ChS2bBBmwNMn1eeRzT1FoP > SELF 0.00000000 Waves

{ "type": 13, "id": "8C89DQdGAq2zYL1opkyKEFnEfWauNzuqVwTM4c6FbQCZ", "fee": 4000000, "feeAssetId": null, "timestamp": 1683199393055, "version": 2, "chainId": 84, "sender": "3N4nTJ5sSp5X5ChS2bBBmwNMn1eeRzT1FoP", "senderPublicKey": "EsqRXDXnACFAdXz6EPhF1SbKyeV7MVuoyDqmXsMz7ySv", "proofs": [ "25c7dsnRo8eiTzPyoDe2h4ZkYRX989UfXQ7sxmzQLAZiBfLQaLQbfEfoSnU6hNmP4qvKDYTT8Szmf1S9onnbuQKS" ], "script": "base64:BgKlKggCEgUKAwEEARIHCgUBBAEIARIDCgEIEgMKAQgSABIECgIBBBIECgIBBBIDCgEBEgASBAoCCAESABIECgIIARIECgIIARIECgIBARIDCgEBEgUKAwEBARIFCgMBCAESBAoCAQgSBAoCAQgSBAoCCAgSABIDCgEIEgUKAwEBARIECgIIARIECgIBARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAIgZzY2FsZTgiDHNjYWxlOEJpZ0ludCIHc2NhbGUxOCIKemVyb0JpZ0ludCIEYmlnMCIEYmlnMSIEYmlnMiIEYmlnMyIEYmlnNCILd2F2ZXNTdHJpbmciCmFtcEluaXRpYWwiBUFtdWx0IgNTRVAiClBvb2xQdXREaXMiDlBvb2xNYXRjaGVyRGlzIgxQb29sU2h1dGRvd24iDmlkeFBvb2xBZGRyZXNzIglpZHhQb29sU3QiCWlkeExQQXNJZCIJaWR4QW1Bc0lkIglpZHhQckFzSWQiC2lkeEFtdEFzRGNtIg1pZHhQcmljZUFzRGNtIg9pZHhGYWN0U3Rha0NudHIiEmlkeEZhY3RvcnlSZXN0Q250ciIQaWR4RmFjdFNsaXBwQ250ciIKZmVlRGVmYXVsdCICdDEiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiCHQxQmlnSW50IgJmMSIDdmFsIg9yZXN1bHRTY2FsZU11bHQiDGZyb21YMThSb3VuZCIFcm91bmQiA2FicyIJYWJzQmlnSW50IgJmYyIDbXBrIgRwbXBrIgJwbCICcGgiAWgiAXQiA3BhdSICdWEiBHR4SWQiA2dhdSICYWEiAnBhIgNhbXAiDWtleUFtcEhpc3RvcnkiDGhlaWdodEJsb2NrcyIUa2V5Q2hhbmdlQW1wTGFzdENhbGwiBmtleUZlZSIDZmVlIgZrZXlETHAiFWtleURMcFJlZnJlc2hlZEhlaWdodCISa2V5RExwUmVmcmVzaERlbGF5IhZkTHBSZWZyZXNoRGVsYXlEZWZhdWx0Ig9kTHBSZWZyZXNoRGVsYXkiBGZjZmciBG10cGsiAnBjIgZpQW10QXMiBWlQckFzIgNtYmEiBWJBU3RyIgNhcHMiHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiFmtleVNraXBPcmRlclZhbGlkYXRpb24iC3Bvb2xBZGRyZXNzIg90aHJvd09yZGVyRXJyb3IiCm9yZGVyVmFsaWQiDm9yZGVyVmFsaWRJbmZvIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIgRzdHJmIgRhZGRyIgNrZXkiBGludGYiCHRocm93RXJyIgNtc2ciBmZtdEVyciIDZmNhIgVpbkZlZSIBQCIGb3V0RmVlIgFBIgNpZ3MiAm1wIhNmZWVDb2xsZWN0b3JBZGRyZXNzIgNncGMiBWFtdEFzIgdwcmljZUFzIghpUHJpY2VBcyIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDgwODc4MjczIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIgNnZmMiDWZhY3RvcnlDb25maWciD3N0YWtpbmdDb250cmFjdCIMcmVzdENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiBWNwYmlyIgNwY3AiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCILYW10QXNBbXRYMTgiCnByQXNBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IghhbXRBc0RjbSIHcHJBc0RjbSIIcHJpY2VYMTgiCGxwQW10WDE4Ig1scFBySW5BbUFzWDE4Ig1scFBySW5QckFzWDE4Igd0YWtlRmVlIgZhbW91bnQiCWZlZUFtb3VudCIEZ2V0RCICeHAiA3hwMCIDeHAxIgFzIgFhIgNhbm4iAXAiC3hwMF94cDFfbl9uIgVhbm5fcyIFYW5uXzEiCWNhbGNETmV4dCIBZCICZGQiA2RkZCICZHAiBGNhbGMiA2FjYyIBaSIFZE5leHQiCGREaWZmUmF3IgVkRGlmZiIDYXJyIg0kdDAxMjc3ODEyODI2IgIkbCICJHMiBSRhY2MwIgUkZjBfMSICJGEiAiRpIgUkZjBfMiIFZm91bmQiA2VnbyIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCILdXNlckFkZHJlc3MiBGxwSWQiBGFtSWQiBHBySWQiBWFtRGNtIgVwckRjbSIDc3RzIgdscEVtaXNzIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiCmxwRW1pc3NYMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIDZXBvIghzbGlwcGFnZSIHaW5BbUFtdCIGaW5BbUlkIgdpblByQW10IgZpblBySWQiBmlzRXZhbCIGZW1pdExwIgppc09uZUFzc2V0IhB2YWxpZGF0ZVNsaXBwYWdlIgZwbXRBbXQiBXBtdElkIgdhbUlkU3RyIgdwcklkU3RyIgZhbXREY20iCHByaWNlRGNtIgRscEVtIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgJEMCIBciICRDEiBmNoZWNrRCILc2xpcHBhZ2VYMTgiD3NsaXBwYWdlUmVhbFgxOCINbHBFbWlzc2lvblgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiINJHQwMjA1ODgyMDkzMyIKd3JpdGVBbUFtdCIKd3JpdGVQckFtdCILY29tbW9uU3RhdGUiBWdldFlEIgFEIgFuIgF4IgphUHJlY2lzaW9uIgFjIgFiIgNjdXIiDSR0MDIyMTI4MjIxNDgiAXkiBXlOZXh0IgV5RGlmZiINJHQwMjI0NTUyMjUwMiIHY2FsY0RMcCINYW1vdW50QmFsYW5jZSIMcHJpY2VCYWxhbmNlIgpscEVtaXNzaW9uIgp1cGRhdGVkRExwIg5jYWxjQ3VycmVudERMcCIQYW1vdW50QXNzZXREZWx0YSIPcHJpY2VBc3NldERlbHRhIhRscEFzc2V0RW1pc3Npb25EZWx0YSISYW1vdW50QXNzZXRCYWxhbmNlIhFwcmljZUFzc2V0QmFsYW5jZSIPbHBBc3NldEVtaXNzaW9uIgpjdXJyZW50RExwIhJyZWZyZXNoRExwSW50ZXJuYWwiF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhIhZwcmljZUFzc2V0QmFsYW5jZURlbHRhIgdhY3Rpb25zIhJ2YWxpZGF0ZVVwZGF0ZWRETHAiBm9sZERMcCIbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkIgVvcmRlciIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDI0NzAwMjQ5MTIiA2RMcCINJHQwMjUyNTQyNTM1NCINdW51c2VkQWN0aW9ucyIGZExwTmV3Igxpc09yZGVyVmFsaWQiBGluZm8iAmNnIgNwbXQiAmNwIgZjYWxsZXIiB2FtQXNQbXQiB3ByQXNQbXQiDWNhbGNQdXRPbmVUa24iCXBtdEFtdFJhdyILd2l0aFRha2VGZWUiDWNoZWNoRW1pc3Npb24iDSR0MDI4MDEwMjg0NzIiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIg0kdDAyODQ3ODI4NjU0IgthbUFtb3VudFJhdyILcHJBbW91bnRSYXciDSR0MDI4NjU4Mjg5MTIiCGFtQW1vdW50IghwckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciCGxwQW1vdW50Ig5wb29sUHJvcG9ydGlvbiIPYW1vdW50QXNzZXRQYXJ0Ig5wcmljZUFzc2V0UGFydCIJbHBBbXRCb3RoIgVib251cyITZ2V0T25lVGtuVjJJbnRlcm5hbCIKb3V0QXNzZXRJZCIMbWluT3V0QW1vdW50IghwYXltZW50cyIMb3JpZ2luQ2FsbGVyIg10cmFuc2FjdGlvbklkIgphbURlY2ltYWxzIgpwckRlY2ltYWxzIgpwb29sU3RhdHVzIg0kdDAzMTAyNDMxMTM1Igh0b3RhbEdldCILdG90YWxBbW91bnQiDSR0MDMxMzI1MzE2MzIiBW91dEFtIgVvdXRQciIIY3VyUHJYMTgiBWN1clByIhFvdXRBc3NldElkT3JXYXZlcyIQc2VuZEZlZVRvTWF0Y2hlciIEYnVybiINJHQwMzI0MTczMjc2NyIQZmVlQW1vdW50Rm9yQ2FsYyIQb3V0SW5BbW91bnRBc3NldCINJHQwMzI3NzAzMjg3OCIRcmVmcmVzaERMcEFjdGlvbnMiEWlzVXBkYXRlZERMcFZhbGlkIgFtIgckbWF0Y2gwIgJwbSICcGQiCWlzTWFuYWdlciICcGsiAm1tIgRnZXRZIglpc1JldmVyc2UiE3Bvb2xBbW91bnRJbkJhbGFuY2UiDSR0MDM0MzI1MzQzNDUiDSR0MDM0Njc2MzQ3MjMiE3NraXBPcmRlclZhbGlkYXRpb24iDWNsZWFuQW1vdW50SW4iDWZlZVBvb2xBbW91bnQiDSR0MDM1MDc1MzU0OTkiCGFzc2V0T3V0IgJkeSILdG90YWxHZXRSYXciBW5ld1hwIgRuZXdEIgxhbW91bnRPdXRNaW4iCWFkZHJlc3NUbyILc3dhcENvbnRhY3QiBmNoZWNrcyIHYXNzZXRJbiINJHQwMzY5MzUzNzMyOSIIY2hlY2tNaW4iF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgJjbSIDaHBtIgNjcG0iBHNsaXAiCWF1dG9TdGFrZSIHZmFjdENmZyILc3Rha2luZ0NudHIiCHNsaXBDbnRyIgphbUFzc2V0UG10IgpwckFzc2V0UG10IgFlIglscEFzc2V0SWQiAmVsIgZsZWdhY3kiAnNhIgJzcCIIbHBUcm5zZnIiAnNzIg0kdDA0MTk0ODQyMDkwIgVjaGVjayIUbHBBc3NldEVtaXNzaW9uQWZ0ZXIiIGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkIg1pc1B1dERpc2FibGVkIg0kdDA0MzczMTQzODg5Igdlc3RpbUxQIg0kdDA0NDc3NDQ1MTIzIhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwNDUxMjY0NTIzNCIHbWF4U2xwZyIGZXN0UHV0Ig0kdDA0NjI2NDQ2MzI5IglvdXRBbXRBbXQiDSR0MDQ3NTAyNDc1ODQiDWlzR2V0RGlzYWJsZWQiDSR0MDQ4MjAyNDgzNTciGGxhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCIdY2hlY2tMYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiDSR0MDQ4ODgxNDg5NDUiEGRMcFVwZGF0ZUFjdGlvbnMiDWxwQXNzZXRBbW91bnQiBWluZGV4IgRuZXdZIg0kdDA0OTk1NTUwMDEwIg0kdDA1MDM4NTUwNTAwIg5zdW1PZkdldEFzc2V0cyISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiDSR0MDUxNjY2NTE3NDciDWNoZWNrUGF5bWVudHMiCmZhY3RvcnlDZmciB3N0YWtpbmciCnVuc3Rha2VJbnYiAXYiBWJ1cm5BIg0kdDA1Mjc3NDUyODU1Ig11bnN0YWtlQW1vdW50IhVub0xlc3NUaGVuQW1vdW50QXNzZXQiA3JlcyIMY2hlY2tBbW91bnRzIg0kdDA1NDEwNjU0MTg3IhdscEFzc2V0UmVjaXBpZW50QWRkcmVzcyINJHQwNTUyMDk1NTM5NyIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiDSR0MDU1NTI1NTU2MjgiDSR0MDU1Nzc2NTU4ODAiCGFtdEFzU3RyIgdwckFzU3RyIgJwciIMcmVzU2NhbGVNdWx0Igd1c3JBZGRyIgdwbXRBc0lkIgNjZmciDSR0MDU4Mjg5NTg0ODgiBGxpc3QiBWRlbGF5IgVkZWx0YSIGdGFyZ2V0IgZjdXJBbXAiCW5ld0FtcFJhdyIGbmV3QW1wIghsYXN0Q2FsbCIEd2FpdCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIg0kdDA1OTQwMDU5NTE3IgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2h0AAFhAIDC1y8AAWIJALYCAQCAwtcvAAFjCQC2AgEAgICQu7rWrfANAAFkCQC2AgEAAAABZQkAtgIBAAAAAWYJALYCAQABAAFnCQC2AgEAAgABaAkAtgIBAAMAAWkJALYCAQAEAAFqAgVXQVZFUwABawAyAAFsAgMxMDAAAW0CAl9fAAFuAAIAAW8AAwABcAAEAAFxAAEAAXIAAgABcwADAAF0AAQAAXUABQABdgAGAAF3AAcAAXgAAQABeQAGAAF6AAcAAUEJAGsDAAoFAWEAkE4BAUICAUMBRAkAvAIDCQC2AgEFAUMFAWMJALYCAQUBRAEBRQIBQwFECQC8AgMFAUMFAWMFAUQBAUYCAUcBSAkAoAMBCQC8AgMFAUcJALYCAQUBSAUBYwEBSQMBRwFIAUoJAKADAQkAvQIEBQFHCQC2AgEFAUgFAWMFAUoBAUsBAUcDCQC/AgIFAWQFAUcJAL4CAQUBRwUBRwEBTAEBRwMJAL8CAgUBZAUBRwkAvgIBBQFHBQFHAQFNAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBTgACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFPAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFQAAIRJXMlc19fcHJpY2VfX2xhc3QBAVECAVIBUwkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAVIJAMwIAgkApAMBBQFTBQNuaWwFAW0BAVQCAVUBVgkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAVUCAl9fBQFWAQFXAgFVAVYJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQFVAgJfXwUBVgEBWAACDyVzX19hbW91bnRBc3NldAEBWQACDiVzX19wcmljZUFzc2V0AQFaAAIHJXNfX2FtcAECYWEBAmFiCQCsAgICCyVzJWRfX2FtcF9fCQCkAwEFAmFiAQJhYwACFSVzX19jaGFuZ2VBbXBMYXN0Q2FsbAACYWQCByVzX19mZWUAAmFlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFkBQFBAAJhZgkAuQkCCQDMCAICAiVzCQDMCAICA2RMcAUDbmlsBQFtAAJhZwkAuQkCCQDMCAICAiVzCQDMCAICEmRMcFJlZnJlc2hlZEhlaWdodAUDbmlsBQFtAAJhaAkAuQkCCQDMCAICAiVzCQDMCAICD3JlZnJlc2hETHBEZWxheQUDbmlsBQFtAAJhaQAeAAJhagkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhaAUCYWkBAmFrAAIRJXNfX2ZhY3RvcnlDb25maWcBAmFsAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhbQICYW4CYW8JAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFuAgJfXwUCYW8CCF9fY29uZmlnAQJhcAECYXEJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYXEBAmFyAAIMJXNfX3NodXRkb3duAQJhcwACHSVzX19hbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAQJhdAACFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhdQECYXYJAKwCAgIbJXMlc19fc2tpcE9yZGVyVmFsaWRhdGlvbl9fBQJhdgECYXcEAmF4AmF5AmF6AmFBCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICJG9yZGVyIHZhbGlkYXRpb24gZmFpbGVkOiBvcmRlclZhbGlkPQkApQMBBQJheAICICgFAmF5AgEpAg0gc2VuZGVyVmFsaWQ9CQClAwEFAmF6Ag4gbWF0Y2hlclZhbGlkPQkApQMBBQJhQQECYUICAmFDAmFECQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYUMFAmFECQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFDCQDMCAICAS4JAMwIAgUCYUQJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYUUCAmFDAmFECQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYUMFAmFECQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFDCQDMCAICAS4JAMwIAgUCYUQJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYUYBAmFHCQACAQkAuQkCCQDMCAICD2xwX3N0YWJsZS5yaWRlOgkA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AmJRBAJiUwkBAUICBQJiTwUBYQQCYlQJAQJiQwIFAmJFBQJiUwQCYlUJAQJiQwIFAmJEBQJiUwkAzAgCBQJiUgkAzAgCBQJiVAkAzAgCBQJiVQUDbmlsAQJiVgICYlcCYWUEAmJYAwkAAAIFAmFlAAAAAAkAawMFAmJXBQJhZQUBYQkAlAoCCQBlAgUCYlcFAmJYBQJiWAECYlkBAmJaBAJjYQkAkQMCBQJiWgAABAJjYgkAkQMCBQJiWgABBAJjYwkAtwICBQJjYQUCY2IDCQAAAgUCY2MFAWUFAWUEAmNkCQENcGFyc2VJbnRWYWx1ZQEFAmFNBAJjZQkAaAIFAmNkAAIEAmNmCQC8AgMFAmNhBQJjYgUBZgQCY2cJALwCAwUCY2YFAWkFAWYEAmNoCQC8AgMJALYCAQUCY2UFAmNjBQFmBAJjaQkAtgIBCQBlAgUCY2UAAQoBAmNqAQJjawQCY2wJALwCAwUCY2sFAmNrBQFmBAJjbQkAvAIDBQJjbAUCY2sFAWYEAmNuCQC8AgMFAmNtBQFmBQJjZwkAvAIDCQC3AgIFAmNoCQC8AgMFAmNuBQFnBQFmBQJjawkAtwICCQC8AgMFAmNpBQJjawUBZgkAvAIDBQFoBQJjbgUBZgoBAmNvAgJjcAJjcQMIBQJjcAJfMgUCY3AEAmNrCAUCY3ACXzEEAmNyCQECY2oBBQJjawQCY3MJALgCAgUCY3IJAQV2YWx1ZQEFAmNrBAJjdAMJAL8CAgUBZQUCY3MJAL4CAQUCY3MFAmNzAwkAwAICBQFmBQJjdAkAlAoCBQJjcgYJAJQKAgUCY3IHBAJjdQkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgkAzAgCAA8JAMwIAgAQBQNuaWwEAmN2CgACY3cFAmN1CgACY3gJAJADAQUCY3cKAAJjeQkAlAoCBQJjYwcKAQJjegICY0ECY0IDCQBnAgUCY0IFAmN4BQJjQQkBAmNvAgUCY0EJAJEDAgUCY3cFAmNCCgECY0MCAmNBAmNCAwkAZwIFAmNCBQJjeAUCY0EJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNwkBAmNDAgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgUCY3kAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEEAmNrCAUCY3YCXzEEAmNECAUCY3YCXzIDBQJjRAUCY2sJAAIBCQCsAgICGUQgY2FsY3VsYXRpb24gZXJyb3IsIEQgPSAJAKYDAQUCY2sBAmNFBAJjRgJjRwJjSAJjSQQCY0oFAmJjBAJjSwkA2AQBCQEFdmFsdWUBBQJiZAQCY0wJANgEAQkBBXZhbHVlAQUCYmUEAmNNBQJiZgQCY04FAmJnBAJjTwkApAMBBQJiYgQCY1AICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY0oCC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgkA2AQBBQJjSgUCY0cJAAIBAg9Xcm9uZyBwbXQgYXNzZXQEAmNRCQECYkEBBQJjSwQCY1IJAQFCAgUCY1EFAmNNBAJjUwkBAmJBAQUCY0wEAmNUCQEBQgIFAmNTBQJjTgQCY1UJAQJiQwIFAmNUBQJjUgQCY1YJAQFGAgUCY1UFAWEEAmNXCQEBQgIFAmNIBQFhBAJjWAkBAUICBQJjUAUBYQQCY1kJALwCAwUCY1IFAmNXBQJjWAQCY1oJALwCAwUCY1QFAmNXBQJjWAQCZGEJAQFJAwUCY1kFAmNNBQVGTE9PUgQCZGIJAQFJAwUCY1oFAmNOBQVGTE9PUgQCZGMDCQAAAgUCY0YCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmNJBQJkYQMJAAACBQJjSwIFV0FWRVMFBHVuaXQJANkEAQUCY0sJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY0kFAmRiAwkAAAIFAmNMAgVXQVZFUwUEdW5pdAkA2QQBBQJjTAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIJAKUIAQUCY0kFAmNGCQECYncGBQJkYQUCZGIFAmNIBQJjVgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVAABQJjVgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVECBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjVgUDbmlsCQCcCgoFAmRhBQJkYgUCY0sFAmNMBQJjUQUCY1MFAmNQBQJjVQUCY08FAmRjAQJkZA0CY0YCZGUCZGYCZGcCZGgCZGkCY0kCZGoCZGsCZGwCZG0CZG4CZG8EAmNKBQJiYwQCZHAJANgEAQkBBXZhbHVlAQUCYmQEAmRxCQDYBAEJAQV2YWx1ZQEFAmJlBAJkcgUCYmYEAmRzBQJiZwQCY08JAKQDAQUCYmIEAmR0CAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmNKAghXciBscCBhcwhxdWFudGl0eQQCY1EDBQJkagkBAmJBAQUCZHADAwUCZGwJAAACBQJkbwUCZHAHCQBlAgkBAmJBAQUCZHAFAmRuAwUCZGwJAQJiQQEFAmRwCQBlAgkBAmJBAQUCZHAFAmRmBAJjUwMFAmRqCQECYkEBBQJkcQMDBQJkbAkAAAIFAmRvBQJkcQcJAGUCCQECYkEBBQJkcQUCZG4DBQJkbAkBAmJBAQUCZHEJAGUCCQECYkEBBQJkcQUCZGgEAmR1CQEBQgIFAmRmBQJkcgQCZHYJAQFCAgUCZGgFAmRzBAJkdwkBAmJDAgUCZHYFAmR1BAJjUgkBAUICBQJjUQUCZHIEAmNUCQEBQgIFAmNTBQJkcwQCZHgJAQJiWQEJAMwIAgUCY1IJAMwIAgUCY1QFA25pbAQCZHkDCQAAAgUCZHQAAAQCZHoJAQJiWQEJAMwIAgkAtwICBQJjUgUCZHUJAMwIAgkAtwICBQJjVAUCZHYFA25pbAQCZEEDCQC/AgIFAmR6BQJkeAYJAAIBAhxEMSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIEQwAwkAAAIFAmRBBQJkQQQCY1UFAWQEAmRCBQFkBAJiUwUCZHoJAJcKBQkBAUYCBQJiUwUBYQkBAUYCBQJkdQUCZHIJAQFGAgUCZHYFAmRzCQECYkMCCQC3AgIFAmNUBQJkdgkAtwICBQJjUgUCZHUFAmRCCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAJjVQkBAmJDAgUCY1QFAmNSBAJkQwkAvAIDCQEBSwEJALgCAgUCY1UFAmR3BQFjBQJjVQQCZEIJAQFCAgUCZGUFAWEDAwMFAmRtCQECIT0CBQJjVQUBZAcJAL8CAgUCZEMFAmRCBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJkQwIDID4gCQCmAwEFAmRCBAJkRAkBAUICBQJkdAUBYQQCZEUJAL0CBAUCZHUJAQJiRgMFAmNUBQJjUgUHQ0VJTElORwUBYwUHQ0VJTElORwQCZEYJAL0CBAUCZHYFAWMJAQJiRgMFAmNUBQJjUgUFRkxPT1IFB0NFSUxJTkcEAmRHAwkAvwICBQJkRQUCZHYJAJQKAgUCZEYFAmR2CQCUCgIFAmR1BQJkRQQCZEgIBQJkRwJfMQQCZEkIBQJkRwJfMgQCZHoJAQJiWQEJAMwIAgkAtwICBQJjUgUCZEgJAMwIAgkAtwICBQJjVAUCZEkFA25pbAQCZEEDCQC/AgIFAmR6BQJkeAYJAAIBAhxEMSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIEQwAwkAAAIFAmRBBQJkQQQCYlMJALwCAwUCZEQJALgCAgUCZHoFAmR4BQJkeAkAlwoFCQEBSQMFAmJTBQFhBQVGTE9PUgkBAUkDBQJkSAUCZHIFB0NFSUxJTkcJAQFJAwUCZEkFAmRzBQdDRUlMSU5HBQJjVQUCZEIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EAmRKCAUCZHkCXzEEAmRLCAUCZHkCXzIEAmRMCAUCZHkCXzMEAmNWCQEBRgIIBQJkeQJfNAUBYQQCZE0JAQFGAggFAmR5Al81BQFhAwkAZwIAAAUCZEoJAAIBAgdMUCA8PSAwBAJkTgMJAQEhAQUCZGsAAAUCZEoEAmRPCQBlAgUCZGYFAmRLBAJkUAkAZQIFAmRoBQJkTAQCZFEDAwUCZGwJAAACBQJkbwUCZHAHCQCUCgIFAmRuAAADAwUCZGwJAAACBQJkbwUCZHEHCQCUCgIAAAUCZG4JAJQKAgUCZEsFAmRMBAJkUggFAmRRAl8xBAJkUwgFAmRRAl8yBAJkVAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVAABQJjVgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVECBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjVgkAzAgCCQELU3RyaW5nRW50cnkCCQEBVAIFAmNJBQJjRgkBAmJsCgUCZFIFAmRTBQJkTgUCY1YFAmRlBQJkTQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZE8FAmRQBQNuaWwJAJ8KDQUCZEoFAmROBQJjVgUCY1EFAmNTBQJkdAUCY0oFAmNPBQJkVAUCZE8FAmRQBQJkZwUCZGkBAmRVAwJiWgJjcQJkVgQCZFcFAWcEAmRYCQCRAwIFAmJaAwkAAAIFAmNxAAAAAQAABAJkWQkApwMBBQFsBAJjZAkAuQICCQCnAwEFAmFNBQJkWQQCY2MFAmRYBAJjZQkAuQICBQJjZAUCZFcEAmRaCQC6AgIJALkCAgkAuQICCQC6AgIJALkCAgUCZFYFAmRWCQC5AgIFAmRYBQJkVwUCZFYFAmRZCQC5AgIFAmNlBQJkVwQCZWEJALgCAgkAtwICBQJjYwkAugICCQC5AgIFAmRWBQJkWQUCY2UFAmRWCgECY28CAmNwAmViBAJlYwUCY3AEAmVkCAUCZWMCXzEEAmNECAUCZWMCXzIDCQECIT0CBQJjRAUEdW5pdAUCY3AEAmVlCQC6AgIJALcCAgkAuQICBQJlZAUCZWQFAmRaCQC3AgIJALkCAgUBZwUCZWQFAmVhBAJlZgkBAUwBCQC4AgIFAmVlCQEFdmFsdWUBBQJlZAMJAMACAgUBZgUCZWYJAJQKAgUCZWUFAmViCQCUCgIFAmVlBQR1bml0BAJjdQkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJlZwoAAmN3BQJjdQoAAmN4CQCQAwEFAmN3CgACY3kJAJQKAgUCZFYFBHVuaXQKAQJjegICY0ECY0IDCQBnAgUCY0IFAmN4BQJjQQkBAmNvAgUCY0EJAJEDAgUCY3cFAmNCCgECY0MCAmNBAmNCAwkAZwIFAmNCBQJjeAUCY0EJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmNDAgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgUCY3kAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZWQIBQJlZwJfMQQCY0QIBQJlZwJfMgMJAQIhPQIFAmNEBQR1bml0BQJlZAkAAgEJAKwCAgIZWSBjYWxjdWxhdGlvbiBlcnJvciwgWSA9IAkApgMBBQJlZAECZWgDAmVpAmVqAmVrBAJlbAkAvAIDCQECYlkBCQDMCAIJAQFFAgUCZWkJALYCAQUCYmYJAMwIAgkBAUUCBQJlagkAtgIBBQJiZwUDbmlsBQFjBQJlawMJAAACBQJlawUBZQUBZQUCZWwBAmVtAwJlbgJlbwJlcAQCZXEJALgCAgkAtgIBCQECYkEBCQECYVcBBQJiZAUCZW4EAmVyCQC4AgIJALYCAQkBAmJBAQkBAmFXAQUCYmUFAmVvBAJlcwkAuAICCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJjCHF1YW50aXR5BQJlcAQCZXQJAQJlaAMFAmVxBQJlcgUCZXMFAmV0AQJldQMCZXYCZXcCZXAEAmVxCQBkAgkBAmJBAQkBAmFXAQUCYmQFAmV2BAJlcgkAZAIJAQJiQQEJAQJhVwEFAmJlBQJldwQCZXMJAGQCCAkBBXZhbHVlAQkA7AcBBQJiYwhxdWFudGl0eQUCZXAEAmVsCQECZWgDCQC2AgEFAmVxCQC2AgEFAmVyCQC2AgEFAmVzBAJleAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYWcFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQJhZgkApgMBBQJlbAUDbmlsCQCUCgIFAmV4BQJlbAECZXkCAmV6AmVsAwkAwAICBQJlbAUCZXoGCQECYUYBAiJ1cGRhdGVkIERMcCBsb3dlciB0aGFuIGN1cnJlbnQgRExwAQJlQQECZUIEAmVxCQECYkEBCQECYVcBBQJiZAQCZXIJAQJiQQEJAQJhVwEFAmJlBAJlQwgFAmVCBmFtb3VudAQCZUQJAG4ECAUCZUIGYW1vdW50CAUCZUIFcHJpY2UFAWEFBUZMT09SBAJlRQMJAAACCAUCZUIJb3JkZXJUeXBlBQNCdXkJAJQKAgUCZUMJAQEtAQUCZUQJAJQKAgkBAS0BBQJlQwUCZUQEAmV2CAUCZUUCXzEEAmV3CAUCZUUCXzIDAwMJAQJhTgAGCQAAAgUCYmIFAW8GCQAAAgUCYmIFAXAJAAIBAg1BZG1pbiBibG9ja2VkAwMJAQIhPQIICAUCZUIJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BQJiZAYJAQIhPQIICAUCZUIJYXNzZXRQYWlyCnByaWNlQXNzZXQFAmJlCQACAQIJV3IgYXNzZXRzBAJlRgkApwMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFmAgEwBAJlRwkBAmV1AwUCZXYFAmV3AAAEAmVICAUCZUcCXzEEAmVJCAUCZUcCXzIEAmVKCQDAAgIFAmVJBQJlRgQCZUsJALkJAgkAzAgCAgRkTHA9CQDMCAIJAKYDAQUCZUYJAMwIAgIIIGRMcE5ldz0JAMwIAgkApgMBBQJlSQkAzAgCAhQgYW1vdW50QXNzZXRCYWxhbmNlPQkAzAgCCQCkAwEFAmVxCQDMCAICEyBwcmljZUFzc2V0QmFsYW5jZT0JAMwIAgkApAMBBQJlcgkAzAgCAhkgYW1vdW50QXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZXYJAMwIAgIYIHByaWNlQXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZXcJAMwIAgIIIGhlaWdodD0JAMwIAgkApAMBBQZoZWlnaHQFA25pbAIACQCUCgIFAmVKBQJlSwECZUwBAmNxAwkBAiE9AgkAkAMBCAUCY3EIcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEAmVNCQEFdmFsdWUBCQCRAwIIBQJjcQhwYXltZW50cwAABAJjRwkBBXZhbHVlAQgFAmVNB2Fzc2V0SWQEAmRuCAUCZU0GYW1vdW50BAJkeQkBAmNFBAkA2AQBCAUCY3ENdHJhbnNhY3Rpb25JZAkA2AQBBQJjRwUCZG4IBQJjcQZjYWxsZXIEAmRhCAUCZHkCXzEEAmRiCAUCZHkCXzIEAmNPCQENcGFyc2VJbnRWYWx1ZQEIBQJkeQJfOQQCZGMIBQJkeQNfMTADAwkBAmFOAAYJAAACBQJjTwUBcAkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFAmNPCQCXCgUFAmRhBQJkYgUCZG4FAmNHBQJkYwECZU4KAmVPAVYCZVACZVECZGUCZGsCZGwCZG0CZG4CZG8EAmR5CQECZGQNBQFWBQJkZQgJAQV2YWx1ZQEFAmVQBmFtb3VudAgJAQV2YWx1ZQEFAmVQB2Fzc2V0SWQICQEFdmFsdWUBBQJlUQZhbW91bnQICQEFdmFsdWUBBQJlUQdhc3NldElkBQJlTwkAAAIFAVYCAAUCZGsFAmRsBQJkbQUCZG4FAmRvBAJjTwkBDXBhcnNlSW50VmFsdWUBCAUCZHkCXzgDAwMJAQJhTgAGCQAAAgUCY08FAW4GCQAAAgUCY08FAXAJAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFAmNPBQJkeQECZVIFAmVTAmNHAmNJAVYCZVQEAmNLCQDYBAEJAQV2YWx1ZQEFAmJkBAJjTAkA2AQBCQEFdmFsdWUBBQJiZQQCY0oFAmJjBAJkcgUCYmYEAmRzBQJiZwQCZXMJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjSgIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCZVUDCQC/AgIFAmVzBQFlBgkAAgECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZVUFAmVVBAJjUQkBAmJBAQUCY0sEAmNTCQECYkEBBQJjTAQCZVYDCQAAAgUBVgIACQCUCgIFAmNRBQJjUwMJAAACBQJjRwUCY0sDCQBmAgUCZVMFAmNRCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCCQBlAgUCY1EFAmVTBQJjUwMJAAACBQJjRwUCY0wDCQBmAgUCZVMFAmNTCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCBQJjUQkAZQIFAmNTBQJlUwkAAgECEHdyb25nIHBtdEFzc2V0SWQEAmVXCAUCZVYCXzEEAmVYCAUCZVYCXzIEAmVZAwkAAAIFAmNHBQJjSwkAlAoCBQJlUwAAAwkAAAIFAmNHBQJjTAkAlAoCAAAFAmVTCQACAQIPaW52YWxpZCBwYXltZW50BAJlWggFAmVZAl8xBAJmYQgFAmVZAl8yBAJmYgMFAmVUCQCVCgMICQECYlYCBQJlWgUCYUoCXzEICQECYlYCBQJmYQUCYUoCXzEICQECYlYCBQJlUwUCYUoCXzIJAJUKAwUCZVoFAmZhAAAEAmZjCAUCZmICXzEEAmZkCAUCZmICXzIEAmJYCAUCZmICXzMEAmZlCQBkAgUCZVcFAmZjBAJmZgkAZAIFAmVYBQJmZAQCZHgJAQJiWQEJAMwIAgkBAUICBQJlVwUCYmYJAMwIAgkBAUICBQJlWAUCYmcFA25pbAQCZHoJAQJiWQEJAMwIAgkBAUICBQJmZQUCYmYJAMwIAgkBAUICBQJmZgUCYmcFA25pbAQCZEEDCQC/AgIFAmR6BQJkeAYJAQV0aHJvdwADCQAAAgUCZEEFAmRBBAJmZwkAvQIEBQJlcwkAuAICBQJkegUCZHgFAmR4BQVGTE9PUgQCY1YJAQFGAgkBAmJDAgkBAUICBQJmZgUCZHMJAQFCAgUCZmUFAmRyBQFhBAJkVAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVAABQJjVgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVECBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjVgkAzAgCCQELU3RyaW5nRW50cnkCCQEBVAIFAmNJBQFWCQECYmwKBQJlWgUCZmEJAKADAQUCZmcFAmNWAAAAAAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAAAAAAFA25pbAQCZmgJAGsDBQJlWAUBYQUCZVcEAmZpCQBrAwUCZVMFAWEJAGQCBQJmaAUBYQQCZmoJAGUCBQJlUwUCZmkEAmZrCQC8AgMFAmVzCQC2AgEFAmZqCQC2AgEFAmVYBAJmbAkAoAMBCQC8AgMJALgCAgUCZmcFAmZrBQFiBQJmawkAlgoECQCgAwEFAmZnBQJkVAUCYlgFAmZsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJmbQYCZm4CZm8CZnACZU8CZnECZnIEAmNKCQDYBAEJAQV2YWx1ZQEFAmJjBAJjSwkA2AQBCQEFdmFsdWUBBQJiZAQCY0wJANgEAQkBBXZhbHVlAQUCYmUEAmZzBQJiZgQCZnQFAmJnBAJmdQUCYmIEAmNJAwkAAAIFAmVPBQJiawUCZnEFAmVPBAJlTQkBBXZhbHVlAQkAkQMCBQJmcAAABAJjRwkBBXZhbHVlAQgFAmVNB2Fzc2V0SWQEAmRuCAUCZU0GYW1vdW50BAJldAkBAmVtAwUBZQUBZQUBZQMJAAACBQJldAUCZXQEAmNGCQDYBAEFAmZyAwkBAiE9AgUCY0oJANgEAQUCY0cJAAIBAghXcm9uZyBMUAQCY1EJAQJiQQEFAmNLBAJjUwkBAmJBAQUCY0wEAmZ2CgACYUsJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJmbgkAzAgCBQJkbgUDbmlsBQNuaWwDCQABAgUCYUsCCihJbnQsIEludCkFAmFLCQACAQkArAICCQADAQUCYUsCHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkDCQAAAgUCZnYFAmZ2BAJiWAgFAmZ2Al8yBAJmdwgFAmZ2Al8xBAJmeAMDCQBmAgUCZm8AAAkAZgIFAmZvBQJmdwcJAQJhRgEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZm8FA25pbAIABQJmdwQCZnkDCQAAAgUCZm4FAmNLCQCWCgQFAmZ4AAAJAGUCCQBlAgUCY1EFAmZ4BQJiWAUCY1MDCQAAAgUCZm4FAmNMCQCWCgQAAAUCZngFAmNRCQBlAgkAZQIFAmNTBQJmeAUCYlgJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCZnoIBQJmeQJfMQQCZkEIBQJmeQJfMgQCZmUIBQJmeQJfMwQCZmYIBQJmeQJfNAQCZkIJAQJiQwIJAQFCAgUCZmYFAmZ0CQEBQgIFAmZlBQJmcwQCZkMJAQFGAgUCZkIFAWEEAmZEAwkAAAIFAmZuAgVXQVZFUwUEdW5pdAkA2QQBBQJmbgQCZkUDCQBmAgUCYlgAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhUAUCYlgFAmZEBQNuaWwFA25pbAQCZGMJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJjSQUCZngFAmZECQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFXAgkApQgBBQJjSQUCY0YJAQJidwYFAmZ6BQJmQQUCZG4FAmZDBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUAAFAmZDCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUQIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmZDBQNuaWwFAmZFAwkAAAIFAmRjBQJkYwQCZkYJAPwHBAUCYUkCBGJ1cm4JAMwIAgUCZG4FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY0cFAmRuBQNuaWwDCQAAAgUCZkYFAmZGBAJmRwQCZkgDCQAAAgUEdGhpcwUCYVAAAAUCYlgEAmZJAwkAAAIJAQJhVQEFAmZuBQJiZAYHAwUCZkkJAJQKAgkBAS0BCQBkAgUCZncFAmZIAAAJAJQKAgAACQEBLQEJAGQCBQJmdwUCZkgEAmV2CAUCZkcCXzEEAmV3CAUCZkcCXzIEAmZKCQECZXUDBQJldgUCZXcAAAQCZksIBQJmSgJfMQQCZWwIBQJmSgJfMgQCZkwJAQJleQIFAmV0BQJlbAMJAAACBQJmTAUCZkwJAJQKAgkAzggCBQJkYwUCZksFAmZ4CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJmTQAEAmZOCQCiCAEJAQFOAAMJAAECBQJmTgIGU3RyaW5nBAJjYwUCZk4JANkEAQUCY2MDCQABAgUCZk4CBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZk8ABAJmTgkAoggBCQEBTwADCQABAgUCZk4CBlN0cmluZwQCY2MFAmZOCQDZBAEFAmNjAwkAAQIFAmZOAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAAmZQCQACAQIRUGVybWlzc2lvbiBkZW5pZWQBAmZRAQJjcQQCZk4JAQJmTQADCQABAgUCZk4CCkJ5dGVWZWN0b3IEAmZSBQJmTgkAAAIIBQJjcQ9jYWxsZXJQdWJsaWNLZXkFAmZSAwkAAQIFAmZOAgRVbml0CQAAAggFAmNxBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJmUwECY3EEAmZOCQECZk0AAwkAAQIFAmZOAgpCeXRlVmVjdG9yBAJmUgUCZk4DCQAAAggFAmNxD2NhbGxlclB1YmxpY0tleQUCZlIGBQJmUAMJAAECBQJmTgIEVW5pdAMJAAACCAUCY3EGY2FsbGVyBQR0aGlzBgUCZlAJAAIBAgtNYXRjaCBlcnJvcgECZlQDAmZVAmRWAmZWBAJhWQkBAmFRAAQCY0sJAJEDAgUCYVkFAXQEAmNMCQCRAwIFAmFZBQF1BAJkVwUBZwQCZFkJAKcDAQUBbAQCY2QJALkCAgkApwMBBQJhTQUCZFkEAmJaAwkAAAIFAmZVBwkAzAgCCQC3AgIJALYCAQkBAmJBAQUCY0sFAmZWCQDMCAIJALYCAQkBAmJBAQUCY0wFA25pbAkAzAgCCQC3AgIJALYCAQkBAmJBAQUCY0wFAmZWCQDMCAIJALYCAQkBAmJBAQUCY0sFA25pbAQCZFgJAJEDAgUCYloAAAQCY2MFAmRYBAJjZQkAuQICBQJjZAUCZFcEAmRaCQC6AgIJALkCAgkAuQICCQC6AgIJALkCAgUCZFYFAmRWCQC5AgIFAmRYBQJkVwUCZFYFAmRZCQC5AgIFAmNlBQJkVwQCZWEJALgCAgkAtwICBQJjYwkAugICCQC5AgIFAmRWBQJkWQUCY2UFAmRWCgECY28CAmNwAmViBAJmVwUCY3AEAmVkCAUCZlcCXzEEAmNECAUCZlcCXzIDCQECIT0CBQJjRAUEdW5pdAUCY3AEAmVlCQC6AgIJALcCAgkAuQICBQJlZAUCZWQFAmRaCQC3AgIJALkCAgUBZwUCZWQFAmVhBAJlZgkBAUwBCQC4AgIFAmVlCQEFdmFsdWUBBQJlZAMJAMACAgUBZgUCZWYJAJQKAgUCZWUFAmViCQCUCgIFAmVlBQR1bml0BAJjdQkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJmWAoAAmN3BQJjdQoAAmN4CQCQAwEFAmN3CgACY3kJAJQKAgUCZFYFBHVuaXQKAQJjegICY0ECY0IDCQBnAgUCY0IFAmN4BQJjQQkBAmNvAgUCY0EJAJEDAgUCY3cFAmNCCgECY0MCAmNBAmNCAwkAZwIFAmNCBQJjeAUCY0EJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmNDAgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgkBAmN6AgUCY3kAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZWQIBQJmWAJfMQQCY0QIBQJmWAJfMgMJAQIhPQIFAmNEBQR1bml0BQJlZAkAAgEJAKwCAgIZWSBjYWxjdWxhdGlvbiBlcnJvciwgWSA9IAkApgMBBQJlZAECZlkACQELdmFsdWVPckVsc2UCCQCbCAIFAmFJCQECYXUBCQClCAEFBHRoaXMHHQJjcQEhY2FsY3VsYXRlQW1vdW50T3V0Rm9yU3dhcFJFQURPTkxZAwJmWgJmVQJnYQQCZ2IDCQAAAgUCZlUHBAJnYwkBAmFCAgUEdGhpcwkBAVkABAJmVgkAtwICCQC2AgEJAQJiQQEJAQJhQgIFBHRoaXMJAQFYAAkAtgIBBQJmWgkAlAoCBQJnYwUCZlYEAmdjCQECYUICBQR0aGlzCQEBWAAEAmZWCQC3AgIJALYCAQkBAmJBAQkBAmFCAgUEdGhpcwkBAVkACQC2AgEFAmZaCQCUCgIFAmdjBQJmVgQCZ2MIBQJnYgJfMQQCZlYIBQJnYgJfMgQCYVkJAQJhUQAEAmNLCQCRAwIFAmFZBQF0BAJjTAkAkQMCBQJhWQUBdQQCYloJAMwIAgkAtgIBCQECYkEBBQJjSwkAzAgCCQC2AgEJAQJiQQEFAmNMBQNuaWwEAmRWCQECYlkBBQJiWgQCZWQJAQJmVAMFAmZVBQJkVgkAtgIBBQJmWgQCZ2QJALgCAgkAuAICCQC2AgEJAQJiQQEFAmdjBQJlZAkAtgIBAAEEAmdlCQCWAwEJAMwIAgAACQDMCAIJAKADAQUCZ2QFA25pbAQCZ2YDCQAAAgUCZlUHCQDMCAIJALcCAgkAtwICCQC2AgEJAQJiQQEFAmNLCQC2AgEFAmZaCQC2AgEFAmdhCQDMCAIJALgCAgkAtgIBCQECYkEBBQJjTAUCZ2QFA25pbAkAzAgCCQC4AgIJALYCAQkBAmJBAQUCY0sFAmdkCQDMCAIJALcCAgkAtwICCQC2AgEJAQJiQQEFAmNMCQC2AgEFAmZaCQC2AgEFAmdhBQNuaWwEAmdnCQECYlkBBQJnZgQCZEEDCQDAAgIFAmdnBQJkVgYJAAIBCQC5CQIJAMwIAgIUbmV3IEQgaXMgZmV3ZXIgZXJyb3IJAMwIAgkApgMBBQJkVgkAzAgCCQCmAwEFAmdnBQNuaWwCAl9fAwkAAAIFAmRBBQJkQQkAlAoCBQNuaWwFAmdlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNxASZjYWxjdWxhdGVBbW91bnRPdXRGb3JTd2FwQW5kU2VuZFRva2VucwUCZloCZlUCZ2gCZ2kCZ2EEAmdqCgACYUsJAPwHBAUCYUkCF2dldFN3YXBDb250cmFjdFJFQURPTkxZBQNuaWwFA25pbAMJAAECBQJhSwIGU3RyaW5nBQJhSwkAAgEJAKwCAgkAAwEFAmFLAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcEAmdrCQDMCAIDCQBnAggJAQV2YWx1ZQEJAJEDAggFAmNxCHBheW1lbnRzAAAGYW1vdW50BQJmWgYJAQJhRgECDFdyb25nIGFtb3VudAkAzAgCAwkAAAIIBQJjcQZjYWxsZXIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmdqBgkBAmFGAQIRUGVybWlzc2lvbiBkZW5pZWQFA25pbAMJAAACBQJnawUCZ2sEAmVNCQEFdmFsdWUBCQCRAwIIBQJjcQhwYXltZW50cwAABAJnbAkBAmFXAQgFAmVNB2Fzc2V0SWQEAmdtAwkAAAIFAmZVBwQCZ2MJAQJhQgIFBHRoaXMJAQFZAAQCZlYJAGUCCQECYkEBBQJnbAgJAQV2YWx1ZQEJAJEDAggFAmNxCHBheW1lbnRzAAAGYW1vdW50CQCUCgIFAmdjBQJmVgQCZ2MJAQJhQgIFBHRoaXMJAQFYAAQCZlYJAGUCCQECYkEBBQJnbAgJAQV2YWx1ZQEJAJEDAggFAmNxCHBheW1lbnRzAAAGYW1vdW50CQCUCgIFAmdjBQJmVgQCZ2MIBQJnbQJfMQQCZlYIBQJnbQJfMgQCYVkJAQJhUQAEAmNLCQCRAwIFAmFZBQF0BAJjTAkAkQMCBQJhWQUBdQQCYloDCQAAAgUCZlUHCQDMCAIJALgCAgkAtgIBCQECYkEBBQJjSwkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCY3EIcGF5bWVudHMAAAZhbW91bnQJAMwIAgkAtgIBCQECYkEBBQJjTAUDbmlsCQDMCAIJALYCAQkBAmJBAQUCY0sJAMwIAgkAuAICCQC2AgEJAQJiQQEFAmNMCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJjcQhwYXltZW50cwAABmFtb3VudAUDbmlsBAJkVgkBAmJZAQUCYloEAmVkCQECZlQDBQJmVQUCZFYJALYCAQAABAJnZAkAuAICCQC4AgIJALYCAQkBAmJBAQUCZ2MFAmVkCQC2AgEAAQQCZ2UJAJYDAQkAzAgCAAAJAMwIAgkAoAMBBQJnZAUDbmlsBAJnbgMJAGcCBQJnZQUCZ2gGCQACAQIsRXhjaGFuZ2UgcmVzdWx0IGlzIGZld2VyIGNvaW5zIHRoYW4gZXhwZWN0ZWQDCQAAAgUCZ24FAmduBAJnZgMJAAACBQJmVQcJAMwIAgkAtwICCQC2AgEJAQJiQQEFAmNLCQC2AgEFAmdhCQDMCAIJALgCAgkAtgIBCQECYkEBBQJjTAUCZ2QFA25pbAkAzAgCCQC4AgIJALYCAQkBAmJBAQUCY0sFAmdkCQDMCAIJALcCAgkAtgIBCQECYkEBBQJjTAkAtgIBBQJnYQUDbmlsBAJnZwkBAmJZAQUCZ2YEAmRBAwkAwAICBQJnZwUCZFYGCQACAQIUbmV3IEQgaXMgZmV3ZXIgZXJyb3IDCQAAAgUCZEEFAmRBCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZ2kFAmdlCQECYVUBBQJnYwUDbmlsBQJnZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjcQELY29uc3RydWN0b3IBAU0EAmRaCQECZlMBBQJjcQMJAAACBQJkWgUCZFoJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAU0ABQFNBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY3EBCnNldE1hbmFnZXIBAmdvBAJkWgkBAmZTAQUCY3EDCQAAAgUCZFoFAmRaBAJncAkA2QQBBQJnbwMJAAACBQJncAUCZ3AJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAU8ABQJnbwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNxAQ5jb25maXJtTWFuYWdlcgAEAmNmCQECZk8ABAJncQMJAQlpc0RlZmluZWQBBQJjZgYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZ3EFAmdxBAJncgMJAAACCAUCY3EPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJjZgYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZ3IFAmdyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFOAAkA2AQBCQEFdmFsdWUBBQJjZgkAzAgCCQELRGVsZXRlRW50cnkBCQEBTwAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjcQEDcHV0AgJncwJndAQCZ3UJAQJiaAAEAmd2CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJndQUBeAIKV3Igc3QgYWRkcgQCZ3cJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmd1BQF6AgpXciBzbCBhZGRyAwkAZgIAAAUCZ3MJAAIBAg5Xcm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAmNxCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmd4CQC2AgEICQEFdmFsdWUBCQCRAwIIBQJjcQhwYXltZW50cwAABmFtb3VudAQCZ3kJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmNxCHBheW1lbnRzAAEGYW1vdW50BAJlcQkAuAICCQC2AgEJAQJiQQEJAQJhVwEFAmJkBQJneAMJAAACBQJlcQUCZXEEAmVyCQC4AgIJALYCAQkBAmJBAQkBAmFXAQUCYmUFAmd5AwkAAAIFAmVyBQJlcgQCZXMJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYmMIcXVhbnRpdHkDCQAAAgUCZXMFAmVzBAJldAkBAmVtAwUCZ3gFAmd5CQC2AgEAAAMJAAACBQJldAUCZXQEAmd6CQECZU4KCQClCAEIBQJjcQZjYWxsZXIJANgEAQgFAmNxDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCY3EIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCY3EIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmNxCHBheW1lbnRzAAEFAmdzBgcGAAACAAQCZE4IBQJnegJfMgQCZ0EIBQJnegJfNwQCZGMIBQJnegJfOQQCZE8IBQJnegNfMTAEAmRQCAUCZ3oDXzExBAJjSwgFAmd6A18xMgQCY0wIBQJnegNfMTMEAmR5CQD8BwQFAmFJAgRlbWl0CQDMCAIFAmROBQNuaWwFA25pbAMJAAACBQJkeQUCZHkEAmdCBAJmTgUCZHkDCQABAgUCZk4CB0FkZHJlc3MEAmdDBQJmTgkA/AcEBQJnQwIEZW1pdAkAzAgCBQJkTgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZ0IFAmdCBAJnRAMJAGYCBQJkTwAACQD8BwQFAmd3AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY0sFAmRPBQNuaWwFA25pbAMJAAACBQJnRAUCZ0QEAmdFAwkAZgIFAmRQAAAJAPwHBAUCZ3cCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjTAUCZFAFA25pbAUDbmlsAwkAAAIFAmdFBQJnRQQCZ0YDBQJndAQCZ0cJAPwHBAUCZ3YCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdBBQJkTgUDbmlsAwkAAAIFAmdHBQJnRwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJjcQZjYWxsZXIFAmROBQJnQQUDbmlsBAJnSAkBAmV1AwAAAAAAAAQCZksIBQJnSAJfMQQCZWwIBQJnSAJfMgQCZ0kDCQDAAgIFAmVsBQJldAYJAQJhRgEJALkJAgkAzAgCAiJ1cGRhdGVkIERMcCBsb3dlciB0aGFuIGN1cnJlbnQgRExwCQDMCAIJAKYDAQUCZXEJAMwIAgkApgMBBQJlcgkAzAgCCQCmAwEFAmVzCQDMCAIJAKYDAQUCZXQJAMwIAgkApgMBBQJlbAkAzAgCCQCkAwEFAmRPCQDMCAIJAKQDAQUCZFAFA25pbAIBIAMJAAACBQJnSQUCZ0kEAmdKCAkBBXZhbHVlAQkA7AcBBQJiYwhxdWFudGl0eQMJAAACBQJnSgUCZ0oJAM4IAgkAzggCBQJkYwUCZ0YFAmZLCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNxAQtwdXRPbmVUa25WMgICZm8CZ3QEAmdLCgACYUsJAPwHBAUCYUkCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhSwIHQm9vbGVhbgUCYUsJAAIBCQCsAgIJAAMBBQJhSwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZ0wDAwMJAQJhTgAGCQAAAgUCYmIFAW4GCQAAAgUCYmIFAXAGBQJnSwQCZ2sJAMwIAgMDCQEBIQEFAmdMBgkBAmZRAQUCY3EGCQECYUYBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJjcQhwYXltZW50cwABBgkBAmFGAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ2sFAmdrBAJjSwkA2AQBCQEFdmFsdWUBBQJiZAQCY0wJANgEAQkBBXZhbHVlAQUCYmUEAmNKBQJiYwQCZnMFAmJmBAJmdAUCYmcEAmNJAwkAAAIIBQJjcQZjYWxsZXIFBHRoaXMIBQJjcQxvcmlnaW5DYWxsZXIIBQJjcQZjYWxsZXIEAmVNCQEFdmFsdWUBCQCRAwIIBQJjcQhwYXltZW50cwAABAJjRwkA2AQBCQEFdmFsdWUBCAUCZU0HYXNzZXRJZAQCZG4IBQJlTQZhbW91bnQEAmV0AwkAAAIIBQJlTQdhc3NldElkBQJiZAkBAmVtAwkAtgIBBQJkbgkAtgIBAAAJALYCAQAACQECZW0DCQC2AgEAAAkAtgIBBQJkbgkAtgIBAAADCQAAAgUCZXQFAmV0BAJnTQkBAmVSBQUCZG4FAmNHCQClCAEFAmNJCQDYBAEIBQJjcQ10cmFuc2FjdGlvbklkBgMJAAACBQJnTQUCZ00EAmJYCAUCZ00CXzMEAmRjCAUCZ00CXzIEAmdOCAUCZ00CXzEEAmROAwMJAGYCBQJmbwAACQBmAgUCZm8FAmdOBwkBAmFGAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmbwUDbmlsAgAFAmdOBAJnegkA/AcEBQJhSQIEZW1pdAkAzAgCBQJkTgUDbmlsBQNuaWwDCQAAAgUCZ3oFAmd6BAJnQgQCZk4FAmd6AwkAAQIFAmZOAgdBZGRyZXNzBAJnQwUCZk4JAPwHBAUCZ0MCBGVtaXQJAMwIAgUCZE4FA25pbAUDbmlsBQR1bml0AwkAAAIFAmdCBQJnQgQCZ0YDBQJndAQCZ0cJAPwHBAUCYmoCCHN0YWtlRm9yCQDMCAIJAKUIAQgFAmNxBmNhbGxlcgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjSgUCZE4FA25pbAMJAAACBQJnRwUCZ0cFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCY3EGY2FsbGVyBQJkTgUCY0oFA25pbAQCZkUDCQBmAgUCYlgAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhUAUCYlgJANkEAQUCY0cFA25pbAUDbmlsBAJnTwMJAAACBQR0aGlzBQJhUAkAlAoCAAAAAAQCZ1ADCQAAAggFAmVNB2Fzc2V0SWQFAmJkBgcDBQJnUAkAlAoCCQEBLQEFAmJYAAAJAJQKAgAACQEBLQEFAmJYBAJldggFAmdPAl8xBAJldwgFAmdPAl8yBAJnUQkBAmV1AwUCZXYFAmV3AAAEAmZLCAUCZ1ECXzEEAmVsCAUCZ1ECXzIEAmZMCQECZXkCBQJldAUCZWwDCQAAAgUCZkwFAmZMCQCUCgIJAM4IAgkAzggCCQDOCAIFAmRjBQJnRgUCZkUFAmZLBQJkTgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjcQEKcHV0Rm9yRnJlZQECZ1IDCQBmAgAABQJnUgkAAgECCldyb25nIHNscGcDCQECIT0CCQCQAwEIBQJjcQhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJnUwkBAmVOCgkApQgBCAUCY3EGY2FsbGVyCQDYBAEIBQJjcQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmNxCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmNxCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJjcQhwYXltZW50cwABBQJnUgcHBgAAAgAEAmRjCAUCZ1MCXzkEAmd4CQC2AgEICQEFdmFsdWUBCQCRAwIIBQJjcQhwYXltZW50cwAABmFtb3VudAQCZ3kJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmNxCHBheW1lbnRzAAEGYW1vdW50BAJldAkBAmVtAwUCZ3gFAmd5CQC2AgEAAAMJAAACBQJldAUCZXQEAmdUCQECZXUDAAAAAAAABAJmSwgFAmdUAl8xBAJlbAgFAmdUAl8yBAJmTAkBAmV5AgUCZXQFAmVsAwkAAAIFAmZMBQJmTAkAzggCBQJkYwUCZksJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY3EBA2dldAAEAmV0CQECZW0DCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmV0BQJldAQCZHkJAQJlTAEFAmNxBAJnVQgFAmR5Al8xBAJkYggFAmR5Al8yBAJkbggFAmR5Al8zBAJjRwgFAmR5Al80BAJkYwgFAmR5Al81BAJlYQkA/AcEBQJhSQIEYnVybgkAzAgCBQJkbgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjRwUCZG4FA25pbAMJAAACBQJlYQUCZWEEAmdWCQECZXUDCQEBLQEFAmdVCQEBLQEFAmRiAAAEAmZLCAUCZ1YCXzEEAmVsCAUCZ1YCXzIEAmZMCQECZXkCBQJldAUCZWwDCQAAAgUCZkwFAmZMCQDOCAIFAmRjBQJmSwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjcQELZ2V0T25lVGtuVjICAmZuAmZvBAJnSwoAAmFLCQD8BwQFAmFJAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYUsCB0Jvb2xlYW4FAmFLCQACAQkArAICCQADAQUCYUsCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmdXAwMJAQJhTgAGCQAAAgUCYmIFAXAGBQJnSwQCZ2sJAMwIAgMDCQEBIQEFAmdXBgkBAmZRAQUCY3EGCQECYUYBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJjcQhwYXltZW50cwABBgkBAmFGAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ2sFAmdrBAJnWAkBAmZtBgUCZm4FAmZvCAUCY3EIcGF5bWVudHMIBQJjcQZjYWxsZXIIBQJjcQxvcmlnaW5DYWxsZXIIBQJjcQ10cmFuc2FjdGlvbklkBAJkYwgFAmdYAl8xBAJmeAgFAmdYAl8yCQCUCgIFAmRjBQJmeAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjcQEKcmVmcmVzaERMcAAEAmdZCQELdmFsdWVPckVsc2UCCQCfCAEFAmFnAAAEAmdaAwkAZwIJAGUCBQZoZWlnaHQFAmdZBQJhagUEdW5pdAkBAmFGAQkAuQkCCQDMCAIJAKQDAQUCYWoJAMwIAgIvIGJsb2NrcyBoYXZlIG5vdCBwYXNzZWQgc2luY2UgdGhlIHByZXZpb3VzIGNhbGwFA25pbAIAAwkAAAIFAmdaBQJnWgQCZUYJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFmAgEwCQECYUgBAgtpbnZhbGlkIGRMcAQCaGEJAQJldQMAAAAAAAAEAmhiCAUCaGECXzEEAmVsCAUCaGECXzIEAmV4AwkBAiE9AgUCZUYFAmVsBQJoYgkBAmFGAQISbm90aGluZyB0byByZWZyZXNoCQCUCgIFAmV4CQCmAwEFAmVsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNxARNnZXRPbmVUa25WMlJFQURPTkxZAgJmbgJoYwQCY0sJANgEAQkBBXZhbHVlAQUCYmQEAmNMCQDYBAEJAQV2YWx1ZQEFAmJlBAJjSgkA2AQBCQEFdmFsdWUBBQJiYwQCYloJAMwIAgkAtgIBCQECYkEBBQJjSwkAzAgCCQC2AgEJAQJiQQEFAmNMBQNuaWwEAmVrCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJjSgIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCZHgJAQJiWQEFAmJaBAJkegkAuAICBQJkeAkAvAIDCQC2AgEFAmhjBQJkeAUCZWsEAmhkAwkAAAIFAmZuBQJjSwAAAwkAAAIFAmZuBQJjTAABCQACAQIUaW52YWxpZCBvdXQgYXNzZXQgaWQEAmhlCQECZFUDBQJiWgUCaGQFAmR6BAJnZAkAuAICCQCRAwIFAmJaBQJoZAUCaGUEAmdlCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAuAICBQJnZAUBZgUDbmlsBAJoZgkBAmJWAgUCZ2UFAmFMBAJmdwgFAmhmAl8xBAJiWAgFAmhmAl8yCQCUCgIFA25pbAkAlAoCBQJmdwUCYlgCY3EBHGdldE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmZuAmhjBAJjSwkA2AQBCQEFdmFsdWUBBQJiZAQCY0wJANgEAQkBBXZhbHVlAQUCYmUEAmNKCQDYBAEJAQV2YWx1ZQEFAmJjBAJjUQkBAmJBAQUCY0sEAmNTCQECYkEBBQJjTAQCaGcKAAJhSwkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmZuCQDMCAIFAmhjBQNuaWwFA25pbAMJAAECBQJhSwIKKEludCwgSW50KQUCYUsJAAIBCQCsAgIJAAMBBQJhSwIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQCZncIBQJoZwJfMQQCYlgIBQJoZwJfMgQCZHkJAQJjRQQCAAUCY0oFAmhjBQR0aGlzBAJkYQgFAmR5Al8xBAJkYggFAmR5Al8yBAJoaAkAZAIFAmRhBQJkYgQCZmwDCQAAAgUCaGgAAAMJAAACBQJmdwAAAAAJAAIBAhdib251cyBjYWxjdWxhdGlvbiBlcnJvcgkAawMJAGUCBQJmdwUCaGgFAWEFAmhoCQCUCgIFA25pbAkAlQoDBQJmdwUCYlgFAmZsAmNxAQlnZXROb0xlc3MCAmhpAmhqBAJkeQkBAmVMAQUCY3EEAmRhCAUCZHkCXzEEAmRiCAUCZHkCXzIEAmRuCAUCZHkCXzMEAmNHCAUCZHkCXzQEAmRjCAUCZHkCXzUDCQBmAgUCaGkFAmRhCQACAQkArAICCQCsAgIJAKwCAgIJRmFpbGVkOiAgCQCkAwEFAmRhAgMgPCAJAKQDAQUCaGkDCQBmAgUCaGoFAmRiCQACAQkArAICCQCsAgIJAKwCAgIIRmFpbGVkOiAJAKQDAQUCZGICAyA8IAkApAMBBQJoagQCZXQJAQJlbQMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZXQFAmV0BAJoawkA/AcEBQJhSQIEYnVybgkAzAgCBQJkbgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjRwUCZG4FA25pbAMJAAACBQJoawUCaGsEAmhsCQECZXUDCQEBLQEFAmRhCQEBLQEFAmRiAAAEAmZLCAUCaGwCXzEEAmVsCAUCaGwCXzIEAmZMCQECZXkCBQJldAUCZWwDCQAAAgUCZkwFAmZMCQDOCAIFAmRjBQJmSwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjcQENdW5zdGFrZUFuZEdldAECYlcEAmhtAwkBAiE9AgkAkAMBCAUCY3EIcGF5bWVudHMAAAkAAgECDU5vIHBtbnRzIGV4cGQGAwkAAAIFAmhtBQJobQQCaG4JAQJiaAAEAmdBBQJiYwQCaG8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmhuBQF4AgpXciBzdCBhZGRyBAJldAkBAmVtAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJldAUCZXQEAmhwCQD8BwQFAmhvAgd1bnN0YWtlCQDMCAIJANgEAQUCZ0EJAMwIAgUCYlcFA25pbAUDbmlsAwkAAAIFAmhwBQJocAQCZHkJAQJjRQQJANgEAQgFAmNxDXRyYW5zYWN0aW9uSWQJANgEAQUCZ0EFAmJXCAUCY3EGY2FsbGVyBAJkYQgFAmR5Al8xBAJkYggFAmR5Al8yBAJjTwkBDXBhcnNlSW50VmFsdWUBCAUCZHkCXzkEAmRjCAUCZHkDXzEwBAJocQMDCQECYU4ABgkAAAIFAmNPBQFwCQACAQkArAICAglCbG9ja2VkOiAJAKQDAQUCY08GAwkAAAIFAmhxBQJocQQCaHIJAPwHBAUCYUkCBGJ1cm4JAMwIAgUCYlcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZ0EFAmJXBQNuaWwDCQAAAgUCaHIFAmhyBAJocwkBAmV1AwkBAS0BBQJkYQkBAS0BBQJkYgAABAJmSwgFAmhzAl8xBAJlbAgFAmhzAl8yBAJmTAkBAmV5AgUCZXQFAmVsAwkAAAIFAmZMBQJmTAkAzggCBQJkYwUCZksJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY3EBE3Vuc3Rha2VBbmRHZXROb0xlc3MDAmh0Amh1AmhqBAJnVwMJAQJhTgAGCQAAAgUCYmIFAXAEAmdrCQDMCAIDCQEBIQEFAmdXBgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmNxCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ2sFAmdrBAJldAkBAmVtAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJldAUCZXQEAmhwCQD8BwQFAmJqAgd1bnN0YWtlCQDMCAIJANgEAQUCYmMJAMwIAgUCaHQFA25pbAUDbmlsAwkAAAIFAmhwBQJocAQCaHYJAQJjRQQJANgEAQgFAmNxDXRyYW5zYWN0aW9uSWQJANgEAQUCYmMFAmh0CAUCY3EGY2FsbGVyBAJkYQgFAmh2Al8xBAJkYggFAmh2Al8yBAJkYwgFAmh2A18xMAQCaHcJAMwIAgMJAGcCBQJkYQUCaHUGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaHUFA25pbAIACQDMCAIDCQBnAgUCZGIFAmhqBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaGoFA25pbAIABQNuaWwDCQAAAgUCaHcFAmh3BAJoawkA/AcEBQJhSQIEYnVybgkAzAgCBQJodAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiYwUCaHQFA25pbAMJAAACBQJoawUCaGsEAmh4CQECZXUDCQEBLQEFAmRhCQEBLQEFAmRiAAAEAmZLCAUCaHgCXzEEAmVsCAUCaHgCXzIEAmZMCQECZXkCBQJldAUCZWwDCQAAAgUCZkwFAmZMCQDOCAIFAmRjBQJmSwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjcQEVdW5zdGFrZUFuZEdldE9uZVRrblYyAwJodAJmbgJmbwQCZ0sKAAJhSwkA/AcEBQJhSQIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFLAgdCb29sZWFuBQJhSwkAAgEJAKwCAgkAAwEFAmFLAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJnVwMDCQECYU4ABgkAAAIFAmJiBQFwBgUCZ0sEAmdrCQDMCAIDAwkBASEBBQJnVwYJAQJmUQEFAmNxBgkBAmFGAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCY3EIcGF5bWVudHMAAAYJAQJhRgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdrBQJnawQCaG4JAQJiaAAEAmdBBQJiYwQCaG8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmhuBQF4AgpXciBzdCBhZGRyBAJjSQgFAmNxBmNhbGxlcgQCaHkFBHRoaXMEAmhwCQD8BwQFAmhvAg91bnN0YWtlSU5URVJOQUwJAMwIAgUCZ0EJAMwIAgUCaHQJAMwIAggFAmNJBWJ5dGVzCQDMCAIIBQJoeQVieXRlcwUDbmlsBQNuaWwDCQAAAgUCaHAFAmhwBAJoegkBAmZtBgUCZm4FAmZvCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnQQUCaHQFA25pbAgFAmNxBmNhbGxlcggFAmNxDG9yaWdpbkNhbGxlcggFAmNxDXRyYW5zYWN0aW9uSWQEAmRjCAUCaHoCXzEEAmZ4CAUCaHoCXzIJAJQKAgUCZGMFAmZ4CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNxARxwdXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJoQQJoQgQCaEMJAQJlUgUFAmhBBQJoQgIAAgAGBAJmZwgFAmhDAl8xBAJkYwgFAmhDAl8yBAJiWAgFAmhDAl8zBAJmbAgFAmhDAl80CQCUCgIFA25pbAkAlQoDBQJmZwUC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AAIFAmdrBQJnawkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFjAAUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFaAAkApAMBBQJoUwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWEBBQZoZWlnaHQJAKQDAQUCaFMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECaFYBAmhXAAQCaFgEAmZOCQECZk0AAwkAAQIFAmZOAgpCeXRlVmVjdG9yBAJmUgUCZk4FAmZSAwkAAQIFAmZOAgRVbml0CAUCaFYPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmZOBQJoVgMJAAECBQJmTgIFT3JkZXIEAmVCBQJmTgQCaFkJAQJhTwAEAmhaAwkBAmZZAAkAlAoCBgIACQECZUEBBQJlQgQCYXgIBQJoWgJfMQQCYXkIBQJoWgJfMgQCYXoJAPQDAwgFAmVCCWJvZHlCeXRlcwkAkQMCCAUCZUIGcHJvb2ZzAAAIBQJlQg9zZW5kZXJQdWJsaWNLZXkEAmFBCQD0AwMIBQJlQglib2R5Qnl0ZXMJAJEDAggFAmVCBnByb29mcwABBQJoWQMDAwUCYXgFAmF6BwUCYUEHBgkBAmF3BAUCYXgFAmF5BQJhegUCYUEDCQABAgUCZk4CFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJjYwUCZk4DCQD0AwMIBQJoVglib2R5Qnl0ZXMJAJEDAggFAmhWBnByb29mcwAABQJoWAYEAmlhCQD2AwEJAQV2YWx1ZQEIBQJjYwZzY3JpcHQEAmliCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYUkJAQJhcwAEAmljCQDxBwEFBHRoaXMDCQAAAgUCaWIFAmlhCQECIT0CBQJpYwUCaWEHCQD0AwMIBQJoVglib2R5Qnl0ZXMJAJEDAggFAmhWBnByb29mcwAABQJoWKTIBrQ=", "height": 2562945, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HgfTatQtDLFsSdWqvXGPqP5E69XUJ383yz5mdLuxxnAx Next: DJtL4wPFzS7SscXythACbzdqakEZnsvZ7NxxjYDjQ46m Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt(2)
1717
1818 let h = toBigInt(3)
1919
2020 let i = toBigInt(4)
2121
2222 let j = "WAVES"
2323
2424 let k = 50
2525
2626 let l = "100"
2727
2828 let m = "__"
2929
3030 let n = 2
3131
3232 let o = 3
3333
3434 let p = 4
3535
3636 let q = 1
3737
3838 let r = 2
3939
4040 let s = 3
4141
4242 let t = 4
4343
4444 let u = 5
4545
4646 let v = 6
4747
4848 let w = 7
4949
5050 let x = 1
5151
5252 let y = 6
5353
5454 let z = 7
5555
5656 let A = fraction(10, a, 10000)
5757
5858 func B (C,D) = fraction(toBigInt(C), c, toBigInt(D))
5959
6060
6161 func E (C,D) = fraction(C, c, D)
6262
6363
6464 func F (G,H) = toInt(fraction(G, toBigInt(H), c))
6565
6666
6767 func I (G,H,J) = toInt(fraction(G, toBigInt(H), c, J))
6868
6969
7070 func K (G) = if ((d > G))
7171 then -(G)
7272 else G
7373
7474
7575 func L (G) = if ((d > G))
7676 then -(G)
7777 else G
7878
7979
8080 func M () = "%s__factoryContract"
8181
8282
8383 func N () = "%s__managerPublicKey"
8484
8585
8686 func O () = "%s__pendingManagerPublicKey"
8787
8888
8989 func P () = "%s%s__price__last"
9090
9191
9292 func Q (R,S) = makeString(["%s%s%d%d__price__history", toString(R), toString(S)], m)
9393
9494
9595 func T (U,V) = ((("%s%s%s__P__" + U) + "__") + V)
9696
9797
9898 func W (U,V) = ((("%s%s%s__G__" + U) + "__") + V)
9999
100100
101101 func X () = "%s__amountAsset"
102102
103103
104104 func Y () = "%s__priceAsset"
105105
106106
107107 func Z () = "%s__amp"
108108
109109
110110 func aa (ab) = ("%s%d__amp__" + toString(ab))
111111
112112
113113 func ac () = "%s__changeAmpLastCall"
114114
115115
116116 let ad = "%s__fee"
117117
118118 let ae = valueOrElse(getInteger(this, ad), A)
119119
120120 let af = makeString(["%s", "dLp"], m)
121121
122122 let ag = makeString(["%s", "dLpRefreshedHeight"], m)
123123
124124 let ah = makeString(["%s", "refreshDLpDelay"], m)
125125
126126 let ai = 30
127127
128128 let aj = valueOrElse(getInteger(this, ah), ai)
129129
130130 func ak () = "%s__factoryConfig"
131131
132132
133133 func al () = "%s%s__matcher__publicKey"
134134
135135
136136 func am (an,ao) = (((("%d%d%s__" + an) + "__") + ao) + "__config")
137137
138138
139139 func ap (aq) = ("%s%s%s__mappings__baseAsset2internalId__" + aq)
140140
141141
142142 func ar () = "%s__shutdown"
143143
144144
145145 func as () = "%s__allowedLpStableScriptHash"
146146
147147
148148 func at () = "%s__feeCollectorAddress"
149149
150150
151151 func au (av) = ("%s%s__skipOrderValidation__" + av)
152152
153153
154154 func aw (ax,ay,az,aA) = throw((((((((("order validation failed: orderValid=" + toString(ax)) + " (") + ay) + ")") + " senderValid=") + toString(az)) + " matcherValid=") + toString(aA)))
155155
156156
157157 func aB (aC,aD) = valueOrErrorMessage(getString(aC, aD), makeString(["mandatory ", toString(aC), ".", aD, " not defined"], ""))
158158
159159
160160 func aE (aC,aD) = valueOrErrorMessage(getInteger(aC, aD), makeString(["mandatory ", toString(aC), ".", aD, " not defined"], ""))
161161
162162
163163 func aF (aG) = throw(makeString(["lp_stable.ride:", aG], " "))
164164
165165
166166 func aH (aG) = makeString(["lp_stable.ride:", aG], " ")
167167
168168
169169 let aI = addressFromStringValue(aB(this, M()))
170170
171171 let aJ = {
172172 let aK = invoke(aI, "getInFeeREADONLY", [toString(this)], nil)
173173 if ($isInstanceOf(aK, "Int"))
174174 then aK
175175 else throw(($getType(aK) + " couldn't be cast to Int"))
176176 }
177177
178178 let aL = {
179179 let aK = invoke(aI, "getOutFeeREADONLY", [toString(this)], nil)
180180 if ($isInstanceOf(aK, "Int"))
181181 then aK
182182 else throw(($getType(aK) + " couldn't be cast to Int"))
183183 }
184184
185185 let aM = aB(this, Z())
186186
187187 func aN () = valueOrElse(getBoolean(aI, ar()), false)
188188
189189
190190 func aO () = fromBase58String(aB(aI, al()))
191191
192192
193193 let aP = addressFromStringValue(aB(aI, at()))
194194
195195 func aQ () = {
196196 let aR = aB(this, X())
197197 let aS = aB(this, Y())
198198 let aT = aE(aI, ap(aS))
199199 let an = aE(aI, ap(aR))
200200 split(aB(aI, am(toString(an), toString(aT))), m)
201201 }
202202
203203
204204 func aU (aV) = if ((aV == j))
205205 then unit
206206 else fromBase58String(aV)
207207
208208
209209 func aW (aV) = if ((aV == unit))
210210 then j
211211 else toBase58String(value(aV))
212212
213213
214214 func aX (aY) = $Tuple7(addressFromStringValue(aY[q]), parseIntValue(aY[r]), fromBase58String(aY[s]), aU(aY[t]), aU(aY[u]), parseIntValue(aY[v]), parseIntValue(aY[w]))
215215
216216
217217 let aZ = aX(aQ())
218218
219219 let ba = aZ
220220
221221 let bb = ba._2
222222
223223 let bc = ba._3
224224
225225 let bd = ba._4
226226
227227 let be = ba._5
228228
229229 let bf = ba._6
230230
231231 let bg = ba._7
232232
233233 func bh () = split(aB(aI, ak()), m)
234234
235235
236236 let bi = bh()
237237
238238 let bj = valueOrErrorMessage(addressFromString(bi[x]), "Invalid staking contract address")
239239
240240 let bk = valueOrErrorMessage(addressFromString(bi[y]), "Invalid gwx contract address")
241241
242242 func bl (bm,bn,bo,bp,bq,br,bs,bt,bu,bv) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv)], m)
243243
244244
245245 func bw (bx,by,bz,bp,bs,bt) = makeString(["%d%d%d%d%d%d", toString(bx), toString(by), toString(bz), toString(bp), toString(bs), toString(bt)], m)
246246
247247
248248 func bA (bB) = if ((bB == "WAVES"))
249249 then wavesBalance(this).available
250250 else assetBalance(this, fromBase58String(bB))
251251
252252
253253 func bC (bD,bE) = fraction(bD, c, bE)
254254
255255
256256 func bF (bD,bE,J) = fraction(bD, c, bE, J)
257257
258258
259259 func bG (bH,bI,bJ,bK) = {
260260 let bL = B(bJ, bH)
261261 let bM = B(bK, bI)
262262 bC(bM, bL)
263263 }
264264
265265
266266 func bN (bJ,bK,bO) = {
267267 let bP = bf
268268 let bQ = bg
269269 let bR = bG(bP, bQ, bJ, bK)
270270 let bE = B(bJ, bP)
271271 let bD = B(bK, bQ)
272272 let bS = B(bO, a)
273273 let bT = bC(bE, bS)
274274 let bU = bC(bD, bS)
275275 [bR, bT, bU]
276276 }
277277
278278
279279 func bV (bW,ae) = {
280280 let bX = if ((ae == 0))
281281 then 0
282282 else fraction(bW, ae, a)
283283 $Tuple2((bW - bX), bX)
284284 }
285285
286286
287287 func bY (bZ) = {
288288 let ca = bZ[0]
289289 let cb = bZ[1]
290290 let cc = (ca + cb)
291291 if ((cc == e))
292292 then e
293293 else {
294294 let cd = parseIntValue(aM)
295295 let ce = (cd * 2)
296296 let cf = fraction(ca, cb, f)
297297 let cg = fraction(cf, i, f)
298298 let ch = fraction(toBigInt(ce), cc, f)
299299 let ci = toBigInt((ce - 1))
300300 func cj (ck) = {
301301 let cl = fraction(ck, ck, f)
302302 let cm = fraction(cl, ck, f)
303303 let cn = fraction(cm, f, cg)
304304 fraction((ch + fraction(cn, g, f)), ck, (fraction(ci, ck, f) + fraction(h, cn, f)))
305305 }
306306
307307 func co (cp,cq) = if (cp._2)
308308 then cp
309309 else {
310310 let ck = cp._1
311311 let cr = cj(ck)
312312 let cs = (cr - value(ck))
313313 let ct = if ((e > cs))
314314 then -(cs)
315315 else cs
316316 if ((f >= ct))
317317 then $Tuple2(cr, true)
318318 else $Tuple2(cr, false)
319319 }
320320
321321 let cu = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
322322 let cv = {
323323 let cw = cu
324324 let cx = size(cw)
325325 let cy = $Tuple2(cc, false)
326326 func cz (cA,cB) = if ((cB >= cx))
327327 then cA
328328 else co(cA, cw[cB])
329329
330330 func cC (cA,cB) = if ((cB >= cx))
331331 then cA
332332 else throw("List size exceeds 17")
333333
334334 cC(cz(cz(cz(cz(cz(cz(cz(cz(cz(cz(cz(cz(cz(cz(cz(cz(cz(cy, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17)
335335 }
336336 let ck = cv._1
337337 let cD = cv._2
338338 if (cD)
339339 then ck
340340 else throw(("D calculation error, D = " + toString(ck)))
341341 }
342342 }
343343
344344
345345 func cE (cF,cG,cH,cI) = {
346346 let cJ = bc
347347 let cK = toBase58String(value(bd))
348348 let cL = toBase58String(value(be))
349349 let cM = bf
350350 let cN = bg
351351 let cO = toString(bb)
352352 let cP = valueOrErrorMessage(assetInfo(cJ), "Wrong LP id").quantity
353353 if ((toBase58String(cJ) != cG))
354354 then throw("Wrong pmt asset")
355355 else {
356356 let cQ = bA(cK)
357357 let cR = B(cQ, cM)
358358 let cS = bA(cL)
359359 let cT = B(cS, cN)
360360 let cU = bC(cT, cR)
361361 let cV = F(cU, a)
362362 let cW = B(cH, a)
363363 let cX = B(cP, a)
364364 let cY = fraction(cR, cW, cX)
365365 let cZ = fraction(cT, cW, cX)
366366 let da = I(cY, cM, FLOOR)
367367 let db = I(cZ, cN, FLOOR)
368368 let dc = if ((cF == ""))
369369 then nil
370370 else [ScriptTransfer(cI, da, if ((cK == "WAVES"))
371371 then unit
372372 else fromBase58String(cK)), ScriptTransfer(cI, db, if ((cL == "WAVES"))
373373 then unit
374374 else fromBase58String(cL)), StringEntry(W(toString(cI), cF), bw(da, db, cH, cV, height, lastBlock.timestamp)), IntegerEntry(P(), cV), IntegerEntry(Q(height, lastBlock.timestamp), cV)]
375375 $Tuple10(da, db, cK, cL, cQ, cS, cP, cU, cO, dc)
376376 }
377377 }
378378
379379
380380 func dd (cF,de,df,dg,dh,di,cI,dj,dk,dl,dm,dn,do) = {
381381 let cJ = bc
382382 let dp = toBase58String(value(bd))
383383 let dq = toBase58String(value(be))
384384 let dr = bf
385385 let ds = bg
386386 let cO = toString(bb)
387387 let dt = valueOrErrorMessage(assetInfo(cJ), "Wr lp as").quantity
388388 let cQ = if (dj)
389389 then bA(dp)
390390 else if (if (dl)
391391 then (do == dp)
392392 else false)
393393 then (bA(dp) - dn)
394394 else if (dl)
395395 then bA(dp)
396396 else (bA(dp) - df)
397397 let cS = if (dj)
398398 then bA(dq)
399399 else if (if (dl)
400400 then (do == dq)
401401 else false)
402402 then (bA(dq) - dn)
403403 else if (dl)
404404 then bA(dq)
405405 else (bA(dq) - dh)
406406 let du = B(df, dr)
407407 let dv = B(dh, ds)
408408 let dw = bC(dv, du)
409409 let cR = B(cQ, dr)
410410 let cT = B(cS, ds)
411411 let dx = bY([cR, cT])
412412 let dy = if ((dt == 0))
413413 then {
414414 let dz = bY([(cR + du), (cT + dv)])
415415 let dA = if ((dz > dx))
416416 then true
417417 else throw("D1 should be greater than D0")
418418 if ((dA == dA))
419419 then {
420420 let cU = d
421421 let dB = d
422422 let bS = dz
423423 $Tuple5(F(bS, a), F(du, dr), F(dv, ds), bC((cT + dv), (cR + du)), dB)
424424 }
425425 else throw("Strict value is not equal to itself.")
426426 }
427427 else {
428428 let cU = bC(cT, cR)
429429 let dC = fraction(K((cU - dw)), c, cU)
430430 let dB = B(de, a)
431431 if (if (if (dm)
432432 then (cU != d)
433433 else false)
434434 then (dC > dB)
435435 else false)
436436 then throw(((("Price slippage " + toString(dC)) + " > ") + toString(dB)))
437437 else {
438438 let dD = B(dt, a)
439439 let dE = fraction(du, bF(cT, cR, CEILING), c, CEILING)
440440 let dF = fraction(dv, c, bF(cT, cR, FLOOR), CEILING)
441441 let dG = if ((dE > dv))
442442 then $Tuple2(dF, dv)
443443 else $Tuple2(du, dE)
444444 let dH = dG._1
445445 let dI = dG._2
446446 let dz = bY([(cR + dH), (cT + dI)])
447447 let dA = if ((dz > dx))
448448 then true
449449 else throw("D1 should be greater than D0")
450450 if ((dA == dA))
451451 then {
452452 let bS = fraction(dD, (dz - dx), dx)
453453 $Tuple5(I(bS, a, FLOOR), I(dH, dr, CEILING), I(dI, ds, CEILING), cU, dB)
454454 }
455455 else throw("Strict value is not equal to itself.")
456456 }
457457 }
458458 let dJ = dy._1
459459 let dK = dy._2
460460 let dL = dy._3
461461 let cV = F(dy._4, a)
462462 let dM = F(dy._5, a)
463463 if ((0 >= dJ))
464464 then throw("LP <= 0")
465465 else {
466466 let dN = if (!(dk))
467467 then 0
468468 else dJ
469469 let dO = (df - dK)
470470 let dP = (dh - dL)
471471 let dQ = if (if (dl)
472472 then (do == dp)
473473 else false)
474474 then $Tuple2(dn, 0)
475475 else if (if (dl)
476476 then (do == dq)
477477 else false)
478478 then $Tuple2(0, dn)
479479 else $Tuple2(dK, dL)
480480 let dR = dQ._1
481481 let dS = dQ._2
482482 let dT = [IntegerEntry(P(), cV), IntegerEntry(Q(height, lastBlock.timestamp), cV), StringEntry(T(cI, cF), bl(dR, dS, dN, cV, de, dM, height, lastBlock.timestamp, dO, dP))]
483483 $Tuple13(dJ, dN, cV, cQ, cS, dt, cJ, cO, dT, dO, dP, dg, di)
484484 }
485485 }
486486
487487
488488 func dU (bZ,cq,dV) = {
489489 let dW = g
490490 let dX = bZ[if ((cq == 0))
491491 then 1
492492 else 0]
493493 let dY = parseBigIntValue(l)
494494 let cd = (parseBigIntValue(aM) * dY)
495495 let cc = dX
496496 let ce = (cd * dW)
497497 let dZ = (((((dV * dV) / (dX * dW)) * dV) * dY) / (ce * dW))
498498 let ea = ((cc + ((dV * dY) / ce)) - dV)
499499 func co (cp,eb) = {
500500 let ec = cp
501501 let ed = ec._1
502502 let cD = ec._2
503503 if ((cD != unit))
504504 then cp
505505 else {
506506 let ee = (((ed * ed) + dZ) / ((g * ed) + ea))
507507 let ef = L((ee - value(ed)))
508508 if ((f >= ef))
509509 then $Tuple2(ee, eb)
510510 else $Tuple2(ee, unit)
511511 }
512512 }
513513
514514 let cu = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
515515 let eg = {
516516 let cw = cu
517517 let cx = size(cw)
518518 let cy = $Tuple2(dV, unit)
519519 func cz (cA,cB) = if ((cB >= cx))
520520 then cA
521521 else co(cA, cw[cB])
522522
523523 func cC (cA,cB) = if ((cB >= cx))
524524 then cA
525525 else throw("List size exceeds 15")
526526
527527 cC(cz(cz(cz(cz(cz(cz(cz(cz(cz(cz(cz(cz(cz(cz(cz(cy, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
528528 }
529529 let ed = eg._1
530530 let cD = eg._2
531531 if ((cD != unit))
532532 then ed
533533 else throw(("Y calculation error, Y = " + toString(ed)))
534534 }
535535
536536
537537 func eh (ei,ej,ek) = {
538538 let el = fraction(bY([E(ei, toBigInt(bf)), E(ej, toBigInt(bg))]), c, ek)
539539 if ((ek == e))
540540 then e
541541 else el
542542 }
543543
544544
545545 func em (en,eo,ep) = {
546546 let eq = (toBigInt(bA(aW(bd))) - en)
547547 let er = (toBigInt(bA(aW(be))) - eo)
548548 let es = (toBigInt(value(assetInfo(bc)).quantity) - ep)
549549 let et = eh(eq, er, es)
550550 et
551551 }
552552
553553
554554 func eu (ev,ew,ep) = {
555555 let eq = (bA(aW(bd)) + ev)
556556 let er = (bA(aW(be)) + ew)
557557 let es = (value(assetInfo(bc)).quantity + ep)
558558 let el = eh(toBigInt(eq), toBigInt(er), toBigInt(es))
559559 let ex = [IntegerEntry(ag, height), StringEntry(af, toString(el))]
560560 $Tuple2(ex, el)
561561 }
562562
563563
564564 func ey (ez,el) = if ((el >= ez))
565565 then true
566566 else aF("updated DLp lower than current DLp")
567567
568568
569569 func eA (eB) = {
570570 let eq = bA(aW(bd))
571571 let er = bA(aW(be))
572572 let eC = eB.amount
573573 let eD = fraction(eB.amount, eB.price, a, FLOOR)
574574 let eE = if ((eB.orderType == Buy))
575575 then $Tuple2(eC, -(eD))
576576 else $Tuple2(-(eC), eD)
577577 let ev = eE._1
578578 let ew = eE._2
579579 if (if (if (aN())
580580 then true
581581 else (bb == o))
582582 then true
583583 else (bb == p))
584584 then throw("Admin blocked")
585585 else if (if ((eB.assetPair.amountAsset != bd))
586586 then true
587587 else (eB.assetPair.priceAsset != be))
588588 then throw("Wr assets")
589589 else {
590590 let eF = parseBigIntValue(valueOrElse(getString(this, af), "0"))
591591 let eG = eu(ev, ew, 0)
592592 let eH = eG._1
593593 let eI = eG._2
594594 let eJ = (eI >= eF)
595595 let eK = makeString(["dLp=", toString(eF), " dLpNew=", toString(eI), " amountAssetBalance=", toString(eq), " priceAssetBalance=", toString(er), " amountAssetBalanceDelta=", toString(ev), " priceAssetBalanceDelta=", toString(ew), " height=", toString(height)], "")
596596 $Tuple2(eJ, eK)
597597 }
598598 }
599599
600600
601601 func eL (cq) = if ((size(cq.payments) != 1))
602602 then throw("1 pmnt exp")
603603 else {
604604 let eM = value(cq.payments[0])
605605 let cG = value(eM.assetId)
606606 let dn = eM.amount
607607 let dy = cE(toBase58String(cq.transactionId), toBase58String(cG), dn, cq.caller)
608608 let da = dy._1
609609 let db = dy._2
610610 let cO = parseIntValue(dy._9)
611611 let dc = dy._10
612612 if (if (aN())
613613 then true
614614 else (cO == p))
615615 then throw(("Admin blocked: " + toString(cO)))
616616 else $Tuple5(da, db, dn, cG, dc)
617617 }
618618
619619
620620 func eN (eO,V,eP,eQ,de,dk,dl,dm,dn,do) = {
621621 let dy = dd(V, de, value(eP).amount, value(eP).assetId, value(eQ).amount, value(eQ).assetId, eO, (V == ""), dk, dl, dm, dn, do)
622622 let cO = parseIntValue(dy._8)
623623 if (if (if (aN())
624624 then true
625625 else (cO == n))
626626 then true
627627 else (cO == p))
628628 then throw(("Blocked:" + toString(cO)))
629629 else dy
630630 }
631631
632632
633633 func eR (eS,cG,cI,V,eT) = {
634634 let cK = toBase58String(value(bd))
635635 let cL = toBase58String(value(be))
636636 let cJ = bc
637637 let dr = bf
638638 let ds = bg
639639 let es = toBigInt(valueOrErrorMessage(assetInfo(cJ), "invalid lp asset").quantity)
640640 let eU = if ((es > e))
641641 then true
642642 else throw("initial deposit requires all coins")
643643 if ((eU == eU))
644644 then {
645645 let cQ = bA(cK)
646646 let cS = bA(cL)
647647 let eV = if ((V == ""))
648648 then $Tuple2(cQ, cS)
649649 else if ((cG == cK))
650650 then if ((eS > cQ))
651651 then throw("invalid payment amount")
652652 else $Tuple2((cQ - eS), cS)
653653 else if ((cG == cL))
654654 then if ((eS > cS))
655655 then throw("invalid payment amount")
656656 else $Tuple2(cQ, (cS - eS))
657657 else throw("wrong pmtAssetId")
658658 let eW = eV._1
659659 let eX = eV._2
660660 let eY = if ((cG == cK))
661661 then $Tuple2(eS, 0)
662662 else if ((cG == cL))
663663 then $Tuple2(0, eS)
664664 else throw("invalid payment")
665665 let eZ = eY._1
666666 let fa = eY._2
667667 let fb = if (eT)
668668 then $Tuple3(bV(eZ, aJ)._1, bV(fa, aJ)._1, bV(eS, aJ)._2)
669669 else $Tuple3(eZ, fa, 0)
670670 let fc = fb._1
671671 let fd = fb._2
672672 let bX = fb._3
673673 let fe = (eW + fc)
674674 let ff = (eX + fd)
675675 let dx = bY([B(eW, bf), B(eX, bg)])
676676 let dz = bY([B(fe, bf), B(ff, bg)])
677677 let dA = if ((dz > dx))
678678 then true
679679 else throw()
680680 if ((dA == dA))
681681 then {
682682 let fg = fraction(es, (dz - dx), dx, FLOOR)
683683 let cV = F(bC(B(ff, ds), B(fe, dr)), a)
684684 let dT = [IntegerEntry(P(), cV), IntegerEntry(Q(height, lastBlock.timestamp), cV), StringEntry(T(cI, V), bl(eZ, fa, toInt(fg), cV, 0, 0, height, lastBlock.timestamp, 0, 0))]
685685 let fh = fraction(eX, a, eW)
686686 let fi = fraction(eS, a, (fh + a))
687687 let fj = (eS - fi)
688688 let fk = fraction(es, toBigInt(fj), toBigInt(eX))
689689 let fl = toInt(fraction((fg - fk), b, fk))
690690 $Tuple4(toInt(fg), dT, bX, fl)
691691 }
692692 else throw("Strict value is not equal to itself.")
693693 }
694694 else throw("Strict value is not equal to itself.")
695695 }
696696
697697
698698 func fm (fn,fo,fp,eO,fq,fr) = {
699699 let cJ = toBase58String(value(bc))
700700 let cK = toBase58String(value(bd))
701701 let cL = toBase58String(value(be))
702702 let fs = bf
703703 let ft = bg
704704 let fu = bb
705705 let cI = if ((eO == bk))
706706 then fq
707707 else eO
708708 let eM = value(fp[0])
709709 let cG = value(eM.assetId)
710710 let dn = eM.amount
711711 let et = em(e, e, e)
712712 if ((et == et))
713713 then {
714714 let cF = toBase58String(fr)
715715 if ((cJ != toBase58String(cG)))
716716 then throw("Wrong LP")
717717 else {
718718 let cQ = bA(cK)
719719 let cS = bA(cL)
720720 let fv = {
721721 let aK = invoke(this, "getOneTknV2READONLY", [fn, dn], nil)
722722 if ($isInstanceOf(aK, "(Int, Int)"))
723723 then aK
724724 else throw(($getType(aK) + " couldn't be cast to (Int, Int)"))
725725 }
726726 if ((fv == fv))
727727 then {
728728 let bX = fv._2
729729 let fw = fv._1
730730 let fx = if (if ((fo > 0))
731731 then (fo > fw)
732732 else false)
733733 then aF(makeString(["amount to receive is less than ", toString(fo)], ""))
734734 else fw
735735 let fy = if ((fn == cK))
736736 then $Tuple4(fx, 0, ((cQ - fx) - bX), cS)
737737 else if ((fn == cL))
738738 then $Tuple4(0, fx, cQ, ((cS - fx) - bX))
739739 else throw("invalid out asset id")
740740 let fz = fy._1
741741 let fA = fy._2
742742 let fe = fy._3
743743 let ff = fy._4
744744 let fB = bC(B(ff, ft), B(fe, fs))
745745 let fC = F(fB, a)
746746 let fD = if ((fn == "WAVES"))
747747 then unit
748748 else fromBase58String(fn)
749749 let fE = if ((bX > 0))
750750 then [ScriptTransfer(aP, bX, fD)]
751751 else nil
752752 let dc = ([ScriptTransfer(cI, fx, fD), StringEntry(W(toString(cI), cF), bw(fz, fA, dn, fC, height, lastBlock.timestamp)), IntegerEntry(P(), fC), IntegerEntry(Q(height, lastBlock.timestamp), fC)] ++ fE)
753753 if ((dc == dc))
754754 then {
755755 let fF = invoke(aI, "burn", [dn], [AttachedPayment(cG, dn)])
756756 if ((fF == fF))
757757 then {
758758 let fG = {
759759 let fH = if ((this == aP))
760760 then 0
761761 else bX
762762 let fI = if ((aU(fn) == bd))
763763 then true
764764 else false
765765 if (fI)
766766 then $Tuple2(-((fw + fH)), 0)
767767 else $Tuple2(0, -((fw + fH)))
768768 }
769769 let ev = fG._1
770770 let ew = fG._2
771771 let fJ = eu(ev, ew, 0)
772772 let fK = fJ._1
773773 let el = fJ._2
774774 let fL = ey(et, el)
775775 if ((fL == fL))
776776 then $Tuple2((dc ++ fK), fx)
777777 else throw("Strict value is not equal to itself.")
778778 }
779779 else throw("Strict value is not equal to itself.")
780780 }
781781 else throw("Strict value is not equal to itself.")
782782 }
783783 else throw("Strict value is not equal to itself.")
784784 }
785785 }
786786 else throw("Strict value is not equal to itself.")
787787 }
788788
789789
790790 func fM () = {
791791 let fN = getString(N())
792792 if ($isInstanceOf(fN, "String"))
793793 then {
794794 let cc = fN
795795 fromBase58String(cc)
796796 }
797797 else if ($isInstanceOf(fN, "Unit"))
798798 then unit
799799 else throw("Match error")
800800 }
801801
802802
803803 func fO () = {
804804 let fN = getString(O())
805805 if ($isInstanceOf(fN, "String"))
806806 then {
807807 let cc = fN
808808 fromBase58String(cc)
809809 }
810810 else if ($isInstanceOf(fN, "Unit"))
811811 then unit
812812 else throw("Match error")
813813 }
814814
815815
816816 let fP = throw("Permission denied")
817817
818818 func fQ (cq) = {
819819 let fN = fM()
820820 if ($isInstanceOf(fN, "ByteVector"))
821821 then {
822822 let fR = fN
823823 (cq.callerPublicKey == fR)
824824 }
825825 else if ($isInstanceOf(fN, "Unit"))
826826 then (cq.caller == this)
827827 else throw("Match error")
828828 }
829829
830830
831831 func fS (cq) = {
832832 let fN = fM()
833833 if ($isInstanceOf(fN, "ByteVector"))
834834 then {
835835 let fR = fN
836836 if ((cq.callerPublicKey == fR))
837837 then true
838838 else fP
839839 }
840840 else if ($isInstanceOf(fN, "Unit"))
841841 then if ((cq.caller == this))
842842 then true
843843 else fP
844844 else throw("Match error")
845845 }
846846
847847
848848 func fT (fU,dV,fV) = {
849849 let aY = aQ()
850850 let cK = aY[t]
851851 let cL = aY[u]
852852 let dW = g
853853 let dY = parseBigIntValue(l)
854854 let cd = (parseBigIntValue(aM) * dY)
855855 let bZ = if ((fU == false))
856856 then [(toBigInt(bA(cK)) + fV), toBigInt(bA(cL))]
857857 else [(toBigInt(bA(cL)) + fV), toBigInt(bA(cK))]
858858 let dX = bZ[0]
859859 let cc = dX
860860 let ce = (cd * dW)
861861 let dZ = (((((dV * dV) / (dX * dW)) * dV) * dY) / (ce * dW))
862862 let ea = ((cc + ((dV * dY) / ce)) - dV)
863863 func co (cp,eb) = {
864864 let fW = cp
865865 let ed = fW._1
866866 let cD = fW._2
867867 if ((cD != unit))
868868 then cp
869869 else {
870870 let ee = (((ed * ed) + dZ) / ((g * ed) + ea))
871871 let ef = L((ee - value(ed)))
872872 if ((f >= ef))
873873 then $Tuple2(ee, eb)
874874 else $Tuple2(ee, unit)
875875 }
876876 }
877877
878878 let cu = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
879879 let fX = {
880880 let cw = cu
881881 let cx = size(cw)
882882 let cy = $Tuple2(dV, unit)
883883 func cz (cA,cB) = if ((cB >= cx))
884884 then cA
885885 else co(cA, cw[cB])
886886
887887 func cC (cA,cB) = if ((cB >= cx))
888888 then cA
889889 else throw("List size exceeds 15")
890890
891891 cC(cz(cz(cz(cz(cz(cz(cz(cz(cz(cz(cz(cz(cz(cz(cz(cy, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
892892 }
893893 let ed = fX._1
894894 let cD = fX._2
895895 if ((cD != unit))
896896 then ed
897897 else throw(("Y calculation error, Y = " + toString(ed)))
898898 }
899899
900900
901901 func fY () = valueOrElse(getBoolean(aI, au(toString(this))), false)
902902
903903
904904 @Callable(cq)
905905 func calculateAmountOutForSwapREADONLY (fZ,fU,ga) = {
906906 let gb = if ((fU == false))
907907 then {
908908 let gc = aB(this, Y())
909909 let fV = (toBigInt(bA(aB(this, X()))) + toBigInt(fZ))
910910 $Tuple2(gc, fV)
911911 }
912912 else {
913913 let gc = aB(this, X())
914914 let fV = (toBigInt(bA(aB(this, Y()))) + toBigInt(fZ))
915915 $Tuple2(gc, fV)
916916 }
917917 let gc = gb._1
918918 let fV = gb._2
919919 let aY = aQ()
920920 let cK = aY[t]
921921 let cL = aY[u]
922922 let bZ = [toBigInt(bA(cK)), toBigInt(bA(cL))]
923923 let dV = bY(bZ)
924924 let ed = fT(fU, dV, toBigInt(fZ))
925925 let gd = ((toBigInt(bA(gc)) - ed) - toBigInt(1))
926926 let ge = max([0, toInt(gd)])
927927 let gf = if ((fU == false))
928928 then [((toBigInt(bA(cK)) + toBigInt(fZ)) + toBigInt(ga)), (toBigInt(bA(cL)) - gd)]
929929 else [(toBigInt(bA(cK)) - gd), ((toBigInt(bA(cL)) + toBigInt(fZ)) + toBigInt(ga))]
930930 let gg = bY(gf)
931931 let dA = if ((gg >= dV))
932932 then true
933933 else throw(makeString(["new D is fewer error", toString(dV), toString(gg)], "__"))
934934 if ((dA == dA))
935935 then $Tuple2(nil, ge)
936936 else throw("Strict value is not equal to itself.")
937937 }
938938
939939
940940
941941 @Callable(cq)
942942 func calculateAmountOutForSwapAndSendTokens (fZ,fU,gh,gi,ga) = {
943943 let gj = {
944944 let aK = invoke(aI, "getSwapContractREADONLY", nil, nil)
945945 if ($isInstanceOf(aK, "String"))
946946 then aK
947947 else throw(($getType(aK) + " couldn't be cast to String"))
948948 }
949949 let gk = [if ((value(cq.payments[0]).amount >= fZ))
950950 then true
951951 else aF("Wrong amount"), if ((cq.caller == addressFromStringValue(gj)))
952952 then true
953953 else aF("Permission denied")]
954954 if ((gk == gk))
955955 then {
956956 let eM = value(cq.payments[0])
957957 let gl = aW(eM.assetId)
958958 let gm = if ((fU == false))
959959 then {
960960 let gc = aB(this, Y())
961961 let fV = (bA(gl) - value(cq.payments[0]).amount)
962962 $Tuple2(gc, fV)
963963 }
964964 else {
965965 let gc = aB(this, X())
966966 let fV = (bA(gl) - value(cq.payments[0]).amount)
967967 $Tuple2(gc, fV)
968968 }
969969 let gc = gm._1
970970 let fV = gm._2
971971 let aY = aQ()
972972 let cK = aY[t]
973973 let cL = aY[u]
974974 let bZ = if ((fU == false))
975975 then [(toBigInt(bA(cK)) - toBigInt(value(cq.payments[0]).amount)), toBigInt(bA(cL))]
976976 else [toBigInt(bA(cK)), (toBigInt(bA(cL)) - toBigInt(value(cq.payments[0]).amount))]
977977 let dV = bY(bZ)
978978 let ed = fT(fU, dV, toBigInt(0))
979979 let gd = ((toBigInt(bA(gc)) - ed) - toBigInt(1))
980980 let ge = max([0, toInt(gd)])
981981 let gn = if ((ge >= gh))
982982 then true
983983 else throw("Exchange result is fewer coins than expected")
984984 if ((gn == gn))
985985 then {
986986 let gf = if ((fU == false))
987987 then [(toBigInt(bA(cK)) + toBigInt(ga)), (toBigInt(bA(cL)) - gd)]
988988 else [(toBigInt(bA(cK)) - gd), (toBigInt(bA(cL)) + toBigInt(ga))]
989989 let gg = bY(gf)
990990 let dA = if ((gg >= dV))
991991 then true
992992 else throw("new D is fewer error")
993993 if ((dA == dA))
994994 then $Tuple2([ScriptTransfer(addressFromStringValue(gi), ge, aU(gc))], ge)
995995 else throw("Strict value is not equal to itself.")
996996 }
997997 else throw("Strict value is not equal to itself.")
998998 }
999999 else throw("Strict value is not equal to itself.")
10001000 }
10011001
10021002
10031003
10041004 @Callable(cq)
10051005 func constructor (M) = {
10061006 let dZ = fS(cq)
10071007 if ((dZ == dZ))
10081008 then [StringEntry(M(), M)]
10091009 else throw("Strict value is not equal to itself.")
10101010 }
10111011
10121012
10131013
10141014 @Callable(cq)
10151015 func setManager (go) = {
10161016 let dZ = fS(cq)
10171017 if ((dZ == dZ))
10181018 then {
10191019 let gp = fromBase58String(go)
10201020 if ((gp == gp))
10211021 then [StringEntry(O(), go)]
10221022 else throw("Strict value is not equal to itself.")
10231023 }
10241024 else throw("Strict value is not equal to itself.")
10251025 }
10261026
10271027
10281028
10291029 @Callable(cq)
10301030 func confirmManager () = {
10311031 let cf = fO()
10321032 let gq = if (isDefined(cf))
10331033 then true
10341034 else throw("No pending manager")
10351035 if ((gq == gq))
10361036 then {
10371037 let gr = if ((cq.callerPublicKey == value(cf)))
10381038 then true
10391039 else throw("You are not pending manager")
10401040 if ((gr == gr))
10411041 then [StringEntry(N(), toBase58String(value(cf))), DeleteEntry(O())]
10421042 else throw("Strict value is not equal to itself.")
10431043 }
10441044 else throw("Strict value is not equal to itself.")
10451045 }
10461046
10471047
10481048
10491049 @Callable(cq)
10501050 func put (gs,gt) = {
10511051 let gu = bh()
10521052 let gv = valueOrErrorMessage(addressFromString(gu[x]), "Wr st addr")
10531053 let gw = valueOrErrorMessage(addressFromString(gu[z]), "Wr sl addr")
10541054 if ((0 > gs))
10551055 then throw("Wrong slippage")
10561056 else if ((size(cq.payments) != 2))
10571057 then throw("2 pmnts expd")
10581058 else {
10591059 let gx = toBigInt(value(cq.payments[0]).amount)
10601060 let gy = toBigInt(value(cq.payments[1]).amount)
10611061 let eq = (toBigInt(bA(aW(bd))) - gx)
10621062 if ((eq == eq))
10631063 then {
10641064 let er = (toBigInt(bA(aW(be))) - gy)
10651065 if ((er == er))
10661066 then {
10671067 let es = toBigInt(value(assetInfo(bc)).quantity)
10681068 if ((es == es))
10691069 then {
10701070 let et = em(gx, gy, toBigInt(0))
10711071 if ((et == et))
10721072 then {
10731073 let gz = eN(toString(cq.caller), toBase58String(cq.transactionId), AttachedPayment(value(cq.payments[0]).assetId, value(cq.payments[0]).amount), cq.payments[1], gs, true, false, true, 0, "")
10741074 let dN = gz._2
10751075 let gA = gz._7
10761076 let dc = gz._9
10771077 let dO = gz._10
10781078 let dP = gz._11
10791079 let cK = gz._12
10801080 let cL = gz._13
10811081 let dy = invoke(aI, "emit", [dN], nil)
10821082 if ((dy == dy))
10831083 then {
10841084 let gB = {
10851085 let fN = dy
10861086 if ($isInstanceOf(fN, "Address"))
10871087 then {
10881088 let gC = fN
10891089 invoke(gC, "emit", [dN], nil)
10901090 }
10911091 else unit
10921092 }
10931093 if ((gB == gB))
10941094 then {
10951095 let gD = if ((dO > 0))
10961096 then invoke(gw, "put", nil, [AttachedPayment(cK, dO)])
10971097 else nil
10981098 if ((gD == gD))
10991099 then {
11001100 let gE = if ((dP > 0))
11011101 then invoke(gw, "put", nil, [AttachedPayment(cL, dP)])
11021102 else nil
11031103 if ((gE == gE))
11041104 then {
11051105 let gF = if (gt)
11061106 then {
11071107 let gG = invoke(gv, "stake", nil, [AttachedPayment(gA, dN)])
11081108 if ((gG == gG))
11091109 then nil
11101110 else throw("Strict value is not equal to itself.")
11111111 }
11121112 else [ScriptTransfer(cq.caller, dN, gA)]
11131113 let gH = eu(0, 0, 0)
11141114 let fK = gH._1
11151115 let el = gH._2
11161116 let gI = if ((el >= et))
11171117 then true
11181118 else aF(makeString(["updated DLp lower than current DLp", toString(eq), toString(er), toString(es), toString(et), toString(el), toString(dO), toString(dP)], " "))
11191119 if ((gI == gI))
11201120 then {
11211121 let gJ = value(assetInfo(bc)).quantity
11221122 if ((gJ == gJ))
11231123 then ((dc ++ gF) ++ fK)
11241124 else throw("Strict value is not equal to itself.")
11251125 }
11261126 else throw("Strict value is not equal to itself.")
11271127 }
11281128 else throw("Strict value is not equal to itself.")
11291129 }
11301130 else throw("Strict value is not equal to itself.")
11311131 }
11321132 else throw("Strict value is not equal to itself.")
11331133 }
11341134 else throw("Strict value is not equal to itself.")
11351135 }
11361136 else throw("Strict value is not equal to itself.")
11371137 }
11381138 else throw("Strict value is not equal to itself.")
11391139 }
11401140 else throw("Strict value is not equal to itself.")
11411141 }
11421142 else throw("Strict value is not equal to itself.")
11431143 }
11441144 }
11451145
11461146
11471147
11481148 @Callable(cq)
11491149 func putOneTknV2 (fo,gt) = {
11501150 let gK = {
11511151 let aK = invoke(aI, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11521152 if ($isInstanceOf(aK, "Boolean"))
11531153 then aK
11541154 else throw(($getType(aK) + " couldn't be cast to Boolean"))
11551155 }
11561156 let gL = if (if (if (aN())
11571157 then true
11581158 else (bb == n))
11591159 then true
11601160 else (bb == p))
11611161 then true
11621162 else gK
11631163 let gk = [if (if (!(gL))
11641164 then true
11651165 else fQ(cq))
11661166 then true
11671167 else aF("put operation is blocked by admin"), if ((size(cq.payments) == 1))
11681168 then true
11691169 else aF("exactly 1 payment are expected")]
11701170 if ((gk == gk))
11711171 then {
11721172 let cK = toBase58String(value(bd))
11731173 let cL = toBase58String(value(be))
11741174 let cJ = bc
11751175 let fs = bf
11761176 let ft = bg
11771177 let cI = if ((cq.caller == this))
11781178 then cq.originCaller
11791179 else cq.caller
11801180 let eM = value(cq.payments[0])
11811181 let cG = toBase58String(value(eM.assetId))
11821182 let dn = eM.amount
11831183 let et = if ((eM.assetId == bd))
11841184 then em(toBigInt(dn), toBigInt(0), toBigInt(0))
11851185 else em(toBigInt(0), toBigInt(dn), toBigInt(0))
11861186 if ((et == et))
11871187 then {
11881188 let gM = eR(dn, cG, toString(cI), toBase58String(cq.transactionId), true)
11891189 if ((gM == gM))
11901190 then {
11911191 let bX = gM._3
11921192 let dc = gM._2
11931193 let gN = gM._1
11941194 let dN = if (if ((fo > 0))
11951195 then (fo > gN)
11961196 else false)
11971197 then aF(makeString(["amount to receive is less than ", toString(fo)], ""))
11981198 else gN
11991199 let gz = invoke(aI, "emit", [dN], nil)
12001200 if ((gz == gz))
12011201 then {
12021202 let gB = {
12031203 let fN = gz
12041204 if ($isInstanceOf(fN, "Address"))
12051205 then {
12061206 let gC = fN
12071207 invoke(gC, "emit", [dN], nil)
12081208 }
12091209 else unit
12101210 }
12111211 if ((gB == gB))
12121212 then {
12131213 let gF = if (gt)
12141214 then {
12151215 let gG = invoke(bj, "stakeFor", [toString(cq.caller)], [AttachedPayment(cJ, dN)])
12161216 if ((gG == gG))
12171217 then nil
12181218 else throw("Strict value is not equal to itself.")
12191219 }
12201220 else [ScriptTransfer(cq.caller, dN, cJ)]
12211221 let fE = if ((bX > 0))
12221222 then [ScriptTransfer(aP, bX, fromBase58String(cG))]
12231223 else nil
12241224 let gO = if ((this == aP))
12251225 then $Tuple2(0, 0)
12261226 else {
12271227 let gP = if ((eM.assetId == bd))
12281228 then true
12291229 else false
12301230 if (gP)
12311231 then $Tuple2(-(bX), 0)
12321232 else $Tuple2(0, -(bX))
12331233 }
12341234 let ev = gO._1
12351235 let ew = gO._2
12361236 let gQ = eu(ev, ew, 0)
12371237 let fK = gQ._1
12381238 let el = gQ._2
12391239 let fL = ey(et, el)
12401240 if ((fL == fL))
12411241 then $Tuple2((((dc ++ gF) ++ fE) ++ fK), dN)
12421242 else throw("Strict value is not equal to itself.")
12431243 }
12441244 else throw("Strict value is not equal to itself.")
12451245 }
12461246 else throw("Strict value is not equal to itself.")
12471247 }
12481248 else throw("Strict value is not equal to itself.")
12491249 }
12501250 else throw("Strict value is not equal to itself.")
12511251 }
12521252 else throw("Strict value is not equal to itself.")
12531253 }
12541254
12551255
12561256
12571257 @Callable(cq)
12581258 func putForFree (gR) = if ((0 > gR))
12591259 then throw("Wrong slpg")
12601260 else if ((size(cq.payments) != 2))
12611261 then throw("2 pmnts expd")
12621262 else {
12631263 let gS = eN(toString(cq.caller), toBase58String(cq.transactionId), AttachedPayment(value(cq.payments[0]).assetId, value(cq.payments[0]).amount), cq.payments[1], gR, false, false, true, 0, "")
12641264 let dc = gS._9
12651265 let gx = toBigInt(value(cq.payments[0]).amount)
12661266 let gy = toBigInt(value(cq.payments[1]).amount)
12671267 let et = em(gx, gy, toBigInt(0))
12681268 if ((et == et))
12691269 then {
12701270 let gT = eu(0, 0, 0)
12711271 let fK = gT._1
12721272 let el = gT._2
12731273 let fL = ey(et, el)
12741274 if ((fL == fL))
12751275 then (dc ++ fK)
12761276 else throw("Strict value is not equal to itself.")
12771277 }
12781278 else throw("Strict value is not equal to itself.")
12791279 }
12801280
12811281
12821282
12831283 @Callable(cq)
12841284 func get () = {
12851285 let et = em(toBigInt(0), toBigInt(0), toBigInt(0))
12861286 if ((et == et))
12871287 then {
12881288 let dy = eL(cq)
12891289 let gU = dy._1
12901290 let db = dy._2
12911291 let dn = dy._3
12921292 let cG = dy._4
12931293 let dc = dy._5
12941294 let ea = invoke(aI, "burn", [dn], [AttachedPayment(cG, dn)])
12951295 if ((ea == ea))
12961296 then {
12971297 let gV = eu(-(gU), -(db), 0)
12981298 let fK = gV._1
12991299 let el = gV._2
13001300 let fL = ey(et, el)
13011301 if ((fL == fL))
13021302 then (dc ++ fK)
13031303 else throw("Strict value is not equal to itself.")
13041304 }
13051305 else throw("Strict value is not equal to itself.")
13061306 }
13071307 else throw("Strict value is not equal to itself.")
13081308 }
13091309
13101310
13111311
13121312 @Callable(cq)
13131313 func getOneTknV2 (fn,fo) = {
13141314 let gK = {
13151315 let aK = invoke(aI, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13161316 if ($isInstanceOf(aK, "Boolean"))
13171317 then aK
13181318 else throw(($getType(aK) + " couldn't be cast to Boolean"))
13191319 }
13201320 let gW = if (if (aN())
13211321 then true
13221322 else (bb == p))
13231323 then true
13241324 else gK
13251325 let gk = [if (if (!(gW))
13261326 then true
13271327 else fQ(cq))
13281328 then true
13291329 else aF("get operation is blocked by admin"), if ((size(cq.payments) == 1))
13301330 then true
13311331 else aF("exactly 1 payment are expected")]
13321332 if ((gk == gk))
13331333 then {
13341334 let gX = fm(fn, fo, cq.payments, cq.caller, cq.originCaller, cq.transactionId)
13351335 let dc = gX._1
13361336 let fx = gX._2
13371337 $Tuple2(dc, fx)
13381338 }
13391339 else throw("Strict value is not equal to itself.")
13401340 }
13411341
13421342
13431343
13441344 @Callable(cq)
13451345 func refreshDLp () = {
13461346 let gY = valueOrElse(getInteger(ag), 0)
13471347 let gZ = if (((height - gY) >= aj))
13481348 then unit
13491349 else aF(makeString([toString(aj), " blocks have not passed since the previous call"], ""))
13501350 if ((gZ == gZ))
13511351 then {
13521352 let eF = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, af), "0")), aH("invalid dLp"))
13531353 let ha = eu(0, 0, 0)
13541354 let hb = ha._1
13551355 let el = ha._2
13561356 let ex = if ((eF != el))
13571357 then hb
13581358 else aF("nothing to refresh")
13591359 $Tuple2(ex, toString(el))
13601360 }
13611361 else throw("Strict value is not equal to itself.")
13621362 }
13631363
13641364
13651365
13661366 @Callable(cq)
13671367 func getOneTknV2READONLY (fn,hc) = {
13681368 let cK = toBase58String(value(bd))
13691369 let cL = toBase58String(value(be))
13701370 let cJ = toBase58String(value(bc))
13711371 let bZ = [toBigInt(bA(cK)), toBigInt(bA(cL))]
13721372 let ek = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cJ)), "invalid lp asset").quantity)
13731373 let dx = bY(bZ)
13741374 let dz = (dx - fraction(toBigInt(hc), dx, ek))
13751375 let hd = if ((fn == cK))
13761376 then 0
13771377 else if ((fn == cL))
13781378 then 1
13791379 else throw("invalid out asset id")
13801380 let he = dU(bZ, hd, dz)
13811381 let gd = (bZ[hd] - he)
13821382 let ge = max([0, toInt((gd - f))])
13831383 let hf = bV(ge, aL)
13841384 let fw = hf._1
13851385 let bX = hf._2
13861386 $Tuple2(nil, $Tuple2(fw, bX))
13871387 }
13881388
13891389
13901390
13911391 @Callable(cq)
13921392 func getOneTknV2WithBonusREADONLY (fn,hc) = {
13931393 let cK = toBase58String(value(bd))
13941394 let cL = toBase58String(value(be))
13951395 let cJ = toBase58String(value(bc))
13961396 let cQ = bA(cK)
13971397 let cS = bA(cL)
13981398 let hg = {
13991399 let aK = invoke(this, "getOneTknV2READONLY", [fn, hc], nil)
14001400 if ($isInstanceOf(aK, "(Int, Int)"))
14011401 then aK
14021402 else throw(($getType(aK) + " couldn't be cast to (Int, Int)"))
14031403 }
14041404 let fw = hg._1
14051405 let bX = hg._2
14061406 let dy = cE("", cJ, hc, this)
14071407 let da = dy._1
14081408 let db = dy._2
14091409 let hh = (da + db)
14101410 let fl = if ((hh == 0))
14111411 then if ((fw == 0))
14121412 then 0
14131413 else throw("bonus calculation error")
14141414 else fraction((fw - hh), a, hh)
14151415 $Tuple2(nil, $Tuple3(fw, bX, fl))
14161416 }
14171417
14181418
14191419
14201420 @Callable(cq)
14211421 func getNoLess (hi,hj) = {
14221422 let dy = eL(cq)
14231423 let da = dy._1
14241424 let db = dy._2
14251425 let dn = dy._3
14261426 let cG = dy._4
14271427 let dc = dy._5
14281428 if ((hi > da))
14291429 then throw(((("Failed: " + toString(da)) + " < ") + toString(hi)))
14301430 else if ((hj > db))
14311431 then throw(((("Failed: " + toString(db)) + " < ") + toString(hj)))
14321432 else {
14331433 let et = em(toBigInt(0), toBigInt(0), toBigInt(0))
14341434 if ((et == et))
14351435 then {
14361436 let hk = invoke(aI, "burn", [dn], [AttachedPayment(cG, dn)])
14371437 if ((hk == hk))
14381438 then {
14391439 let hl = eu(-(da), -(db), 0)
14401440 let fK = hl._1
14411441 let el = hl._2
14421442 let fL = ey(et, el)
14431443 if ((fL == fL))
14441444 then (dc ++ fK)
14451445 else throw("Strict value is not equal to itself.")
14461446 }
14471447 else throw("Strict value is not equal to itself.")
14481448 }
14491449 else throw("Strict value is not equal to itself.")
14501450 }
14511451 }
14521452
14531453
14541454
14551455 @Callable(cq)
14561456 func unstakeAndGet (bW) = {
14571457 let hm = if ((size(cq.payments) != 0))
14581458 then throw("No pmnts expd")
14591459 else true
14601460 if ((hm == hm))
14611461 then {
14621462 let hn = bh()
14631463 let gA = bc
14641464 let ho = valueOrErrorMessage(addressFromString(hn[x]), "Wr st addr")
14651465 let et = em(toBigInt(0), toBigInt(0), toBigInt(0))
14661466 if ((et == et))
14671467 then {
14681468 let hp = invoke(ho, "unstake", [toBase58String(gA), bW], nil)
14691469 if ((hp == hp))
14701470 then {
14711471 let dy = cE(toBase58String(cq.transactionId), toBase58String(gA), bW, cq.caller)
14721472 let da = dy._1
14731473 let db = dy._2
14741474 let cO = parseIntValue(dy._9)
14751475 let dc = dy._10
14761476 let hq = if (if (aN())
14771477 then true
14781478 else (cO == p))
14791479 then throw(("Blocked: " + toString(cO)))
14801480 else true
14811481 if ((hq == hq))
14821482 then {
14831483 let hr = invoke(aI, "burn", [bW], [AttachedPayment(gA, bW)])
14841484 if ((hr == hr))
14851485 then {
14861486 let hs = eu(-(da), -(db), 0)
14871487 let fK = hs._1
14881488 let el = hs._2
14891489 let fL = ey(et, el)
14901490 if ((fL == fL))
14911491 then (dc ++ fK)
14921492 else throw("Strict value is not equal to itself.")
14931493 }
14941494 else throw("Strict value is not equal to itself.")
14951495 }
14961496 else throw("Strict value is not equal to itself.")
14971497 }
14981498 else throw("Strict value is not equal to itself.")
14991499 }
15001500 else throw("Strict value is not equal to itself.")
15011501 }
15021502 else throw("Strict value is not equal to itself.")
15031503 }
15041504
15051505
15061506
15071507 @Callable(cq)
15081508 func unstakeAndGetNoLess (ht,hu,hj) = {
15091509 let gW = if (aN())
15101510 then true
15111511 else (bb == p)
15121512 let gk = [if (!(gW))
15131513 then true
15141514 else throw("get operation is blocked by admin"), if ((size(cq.payments) == 0))
15151515 then true
15161516 else throw("no payments are expected")]
15171517 if ((gk == gk))
15181518 then {
15191519 let et = em(toBigInt(0), toBigInt(0), toBigInt(0))
15201520 if ((et == et))
15211521 then {
15221522 let hp = invoke(bj, "unstake", [toBase58String(bc), ht], nil)
15231523 if ((hp == hp))
15241524 then {
15251525 let hv = cE(toBase58String(cq.transactionId), toBase58String(bc), ht, cq.caller)
15261526 let da = hv._1
15271527 let db = hv._2
15281528 let dc = hv._10
15291529 let hw = [if ((da >= hu))
15301530 then true
15311531 else throw(makeString(["amount asset amount to receive is less than ", toString(hu)], "")), if ((db >= hj))
15321532 then true
15331533 else throw(makeString(["price asset amount to receive is less than ", toString(hj)], ""))]
15341534 if ((hw == hw))
15351535 then {
15361536 let hk = invoke(aI, "burn", [ht], [AttachedPayment(bc, ht)])
15371537 if ((hk == hk))
15381538 then {
15391539 let hx = eu(-(da), -(db), 0)
15401540 let fK = hx._1
15411541 let el = hx._2
15421542 let fL = ey(et, el)
15431543 if ((fL == fL))
15441544 then (dc ++ fK)
15451545 else throw("Strict value is not equal to itself.")
15461546 }
15471547 else throw("Strict value is not equal to itself.")
15481548 }
15491549 else throw("Strict value is not equal to itself.")
15501550 }
15511551 else throw("Strict value is not equal to itself.")
15521552 }
15531553 else throw("Strict value is not equal to itself.")
15541554 }
15551555 else throw("Strict value is not equal to itself.")
15561556 }
15571557
15581558
15591559
15601560 @Callable(cq)
15611561 func unstakeAndGetOneTknV2 (ht,fn,fo) = {
15621562 let gK = {
15631563 let aK = invoke(aI, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
15641564 if ($isInstanceOf(aK, "Boolean"))
15651565 then aK
15661566 else throw(($getType(aK) + " couldn't be cast to Boolean"))
15671567 }
15681568 let gW = if (if (aN())
15691569 then true
15701570 else (bb == p))
15711571 then true
15721572 else gK
15731573 let gk = [if (if (!(gW))
15741574 then true
15751575 else fQ(cq))
15761576 then true
15771577 else aF("get operation is blocked by admin"), if ((size(cq.payments) == 0))
15781578 then true
15791579 else aF("no payments are expected")]
15801580 if ((gk == gk))
15811581 then {
15821582 let hn = bh()
15831583 let gA = bc
15841584 let ho = valueOrErrorMessage(addressFromString(hn[x]), "Wr st addr")
15851585 let cI = cq.caller
15861586 let hy = this
15871587 let hp = invoke(ho, "unstakeINTERNAL", [gA, ht, cI.bytes, hy.bytes], nil)
15881588 if ((hp == hp))
15891589 then {
15901590 let hz = fm(fn, fo, [AttachedPayment(gA, ht)], cq.caller, cq.originCaller, cq.transactionId)
15911591 let dc = hz._1
15921592 let fx = hz._2
15931593 $Tuple2(dc, fx)
15941594 }
15951595 else throw("Strict value is not equal to itself.")
15961596 }
15971597 else throw("Strict value is not equal to itself.")
15981598 }
15991599
16001600
16011601
16021602 @Callable(cq)
16031603 func putOneTknV2WithBonusREADONLY (hA,hB) = {
16041604 let hC = eR(hA, hB, "", "", true)
16051605 let fg = hC._1
16061606 let dc = hC._2
16071607 let bX = hC._3
16081608 let fl = hC._4
16091609 $Tuple2(nil, $Tuple3(fg, bX, fl))
16101610 }
16111611
16121612
16131613
16141614 @Callable(cq)
16151615 func putOneTknV2WithoutTakeFeeREADONLY (hA,hB) = {
16161616 let hD = eR(hA, hB, "", "", false)
16171617 let fg = hD._1
16181618 let dc = hD._2
16191619 let bX = hD._3
16201620 let fl = hD._4
16211621 $Tuple2(nil, $Tuple3(fg, bX, fl))
16221622 }
16231623
16241624
16251625
16261626 @Callable(cq)
16271627 func activate (hE,hF) = if ((toString(cq.caller) != toString(aI)))
16281628 then throw("denied")
16291629 else $Tuple2([StringEntry(X(), hE), StringEntry(Y(), hF), StringEntry(Z(), toString(k))], "success")
16301630
16311631
16321632
16331633 @Callable(cq)
16341634 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aQ())
16351635
16361636
16371637
16381638 @Callable(cq)
16391639 func getAccBalanceWrapperREADONLY (bB) = $Tuple2(nil, bA(bB))
16401640
16411641
16421642
16431643 @Callable(cq)
16441644 func calcPricesWrapperREADONLY (bJ,bK,bO) = {
16451645 let hG = bN(bJ, bK, bO)
16461646 $Tuple2(nil, [toString(hG[0]), toString(hG[1]), toString(hG[2])])
16471647 }
16481648
16491649
16501650
16511651 @Callable(cq)
16521652 func fromX18WrapperREADONLY (G,hH) = $Tuple2(nil, F(parseBigIntValue(G), hH))
16531653
16541654
16551655
16561656 @Callable(cq)
16571657 func toX18WrapperREADONLY (C,D) = $Tuple2(nil, toString(B(C, D)))
16581658
16591659
16601660
16611661 @Callable(cq)
16621662 func calcPriceBigIntWrapperREADONLY (bD,bE) = $Tuple2(nil, toString(bC(parseBigIntValue(bD), parseBigIntValue(bE))))
16631663
16641664
16651665
16661666 @Callable(cq)
16671667 func estimatePutOperationWrapperREADONLY (cF,de,df,dg,dh,di,hI,dj,dk) = $Tuple2(nil, dd(cF, de, df, dg, dh, di, hI, dj, dk, true, false, 0, ""))
16681668
16691669
16701670
16711671 @Callable(cq)
16721672 func estimateGetOperationWrapperREADONLY (cF,hJ,cH,hI) = {
16731673 let dy = cE(cF, hJ, cH, addressFromStringValue(hI))
16741674 $Tuple2(nil, $Tuple10(dy._1, dy._2, dy._3, dy._4, dy._5, dy._6, dy._7, toString(dy._8), dy._9, dy._10))
16751675 }
16761676
16771677
16781678
16791679 @Callable(cq)
16801680 func changeAmp () = {
16811681 let hK = invoke(aI, "getChangeAmpConfigREADONLY", [toString(this)], nil)
16821682 let hL = {
16831683 let fN = hK
16841684 if ($isInstanceOf(fN, "List[Any]"))
16851685 then {
16861686 let hM = fN
16871687 $Tuple3({
16881688 let aK = hM[0]
16891689 if ($isInstanceOf(aK, "Int"))
16901690 then aK
16911691 else throw(($getType(aK) + " couldn't be cast to Int"))
16921692 }, {
16931693 let aK = hM[1]
16941694 if ($isInstanceOf(aK, "Int"))
16951695 then aK
16961696 else throw(($getType(aK) + " couldn't be cast to Int"))
16971697 }, {
16981698 let aK = hM[2]
16991699 if ($isInstanceOf(aK, "Int"))
17001700 then aK
17011701 else throw(($getType(aK) + " couldn't be cast to Int"))
17021702 })
17031703 }
17041704 else aF("invalid entry type")
17051705 }
17061706 let hN = hL._1
17071707 let hO = hL._2
17081708 let hP = hL._3
17091709 let hQ = parseIntValue(getStringValue(Z()))
17101710 let hR = (hQ + hO)
17111711 let hS = if ((0 > hO))
17121712 then if ((hP > hR))
17131713 then hP
17141714 else hR
17151715 else if ((hR > hP))
17161716 then hP
17171717 else hR
17181718 let hT = valueOrElse(getInteger(ac()), 0)
17191719 let hU = (hT + hN)
17201720 let gk = [if ((height > hU))
17211721 then true
17221722 else aF("try again in few blocks"), if ((hQ != hS))
17231723 then true
17241724 else aF("already reached target")]
17251725 if ((gk == gk))
17261726 then [IntegerEntry(ac(), height), StringEntry(Z(), toString(hS)), StringEntry(aa(height), toString(hS))]
17271727 else throw("Strict value is not equal to itself.")
17281728 }
17291729
17301730
17311731 @Verifier(hV)
17321732 func hW () = {
17331733 let hX = {
17341734 let fN = fM()
17351735 if ($isInstanceOf(fN, "ByteVector"))
17361736 then {
17371737 let fR = fN
17381738 fR
17391739 }
17401740 else if ($isInstanceOf(fN, "Unit"))
17411741 then hV.senderPublicKey
17421742 else throw("Match error")
17431743 }
17441744 let fN = hV
17451745 if ($isInstanceOf(fN, "Order"))
17461746 then {
17471747 let eB = fN
17481748 let hY = aO()
17491749 let hZ = if (fY())
17501750 then $Tuple2(true, "")
17511751 else eA(eB)
17521752 let ax = hZ._1
17531753 let ay = hZ._2
17541754 let az = sigVerify(eB.bodyBytes, eB.proofs[0], eB.senderPublicKey)
17551755 let aA = sigVerify(eB.bodyBytes, eB.proofs[1], hY)
17561756 if (if (if (ax)
17571757 then az
17581758 else false)
17591759 then aA
17601760 else false)
17611761 then true
17621762 else aw(ax, ay, az, aA)
17631763 }
17641764 else if ($isInstanceOf(fN, "SetScriptTransaction"))
17651765 then {
17661766 let cc = fN
17671767 if (sigVerify(hV.bodyBytes, hV.proofs[0], hX))
17681768 then true
17691769 else {
17701770 let ia = blake2b256(value(cc.script))
17711771 let ib = fromBase64String(value(getString(aI, as())))
17721772 let ic = scriptHash(this)
17731773 if ((ib == ia))
17741774 then (ic != ia)
17751775 else false
17761776 }
17771777 }
17781778 else sigVerify(hV.bodyBytes, hV.proofs[0], hX)
17791779 }
17801780

github/deemru/w8io/169f3d6 
130.81 ms