tx · 3X5MMKPRbGGieCMF3agWKYLbjvgS7ubMCqL1JMHZwVeQ

3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv:  -0.04200000 Waves

2023.11.22 10:56 [3920158] smart account 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv > SELF 0.00000000 Waves

{ "type": 13, "id": "3X5MMKPRbGGieCMF3agWKYLbjvgS7ubMCqL1JMHZwVeQ", "fee": 4200000, "feeAssetId": null, "timestamp": 1700639791529, "version": 2, "chainId": 87, "sender": "3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv", "senderPublicKey": "HBWgh7DKPyzCnEXKJAJ5dKQ3jmPtMhGD78tt6jRdkV61", "proofs": [ "rG7WetBZnF73QAFL1PR9fynbhq9Ck8ZiXbJET63zANZiUm5LmVg38v7eKrm2uGaTgjjoZjhF1jAgHMvJp2aAfZL" ], "script": "base64:BgLSAQgCEgASBAoCCAgSBAoCCAgSAwoBCBIKCggICAgICAgIARIDCgEIEgYKBAgICAgSBAoCCBgSAwoBCBIECgIIGBIDCgEYEgoKCAgICAgIAQgIEgQKAggBEgMKAQESAwoBARIECgIIARIGCgQICAgIEgQKAggIEgQKAggIEgQKAggIEgMKAQgSAwoBCBIDCgEIEgMKAQgSAwoBCBIDCgEIEgQKAggIEgMKAQgSAwoBCBIDCgEIEgQKAggIEgMKAQgSAwoBCBIDCgEIEgMKAQgSAwoBCIMBAAZTQ0FMRTgACAAFTVVMVDgAgMLXLwAGTVVMVDEyAICglKWNHQAHU0NBTEUxOAASAAZNVUxUMTgJALYCAQCAgJC7utat8A0ADlBPT0xXRUlHSFRNVUxUBQVNVUxUOAAOR1dYdmlydHVhbFBPT0wCDkdXWHZpcnR1YWxQT09MAAxsYWJlbFBvb2xzTHACCFBPT0xTX0xQAA1kZWZhdWx0U3ByZWFkAICJegALd2F2ZXNTdHJpbmcCBVdBVkVTABBjb250cmFjdEZpbGVuYW1lAg9mYWN0b3J5X3YyLnJpZGUAEWRlY2ltYWxzTXVsdFByaWNlCQBoAgkAaAIAZADoBwDoBwADU0VQAgJfXwAFRU1QVFkCAAAKUG9vbEFjdGl2ZQABAA9Qb29sUHV0RGlzYWJsZWQAAgATUG9vbE1hdGNoZXJEaXNhYmxlZAADAAxQb29sU2h1dGRvd24ABAASaWR4SW50ZXJuYWxBc3NldElkAAEAD2lkeFJlc3V0QWN0aW9ucwACACBpZHhJZkFzc2V0SWRDYWxjdWxhdGlvblBlcmZvcm1lZAADAA5pZHhQb29sQWRkcmVzcwABAA1pZHhQb29sU3RhdHVzAAIAEGlkeFBvb2xMUEFzc2V0SWQAAwANaWR4QW10QXNzZXRJZAAEAA9pZHhQcmljZUFzc2V0SWQABQAOaWR4QW10QXNzZXREY20ABgAQaWR4UHJpY2VBc3NldERjbQAHAA5pZHhJQW10QXNzZXRJZAAIABBpZHhJUHJpY2VBc3NldElkAAkADWlkeExQQXNzZXREY20ACgALaWR4UG9vbFR5cGUACwATcG9vbExhYmVsV3hFbWlzc2lvbgILV1hfRU1JU1NJT04AD3ZhbGlkUG9vbExhYmVscwkAzAgCBRNwb29sTGFiZWxXeEVtaXNzaW9uBQNuaWwBB3dyYXBFcnIBA21zZwkAuQkCCQDMCAIFEGNvbnRyYWN0RmlsZW5hbWUJAMwIAgICOiAJAMwIAgUDbXNnBQNuaWwCAAEIdGhyb3dFcnIBA21zZwkAAgEJAQd3cmFwRXJyAQUDbXNnARZrZXlBbGxvd2VkTHBTY3JpcHRIYXNoAAIXJXNfX2FsbG93ZWRMcFNjcmlwdEhhc2gBHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gAAh0lc19fYWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAEMc3dhcENvbnRyYWN0AAIQJXNfX3N3YXBDb250cmFjdAEQa2V5RmFjdG9yeUNvbmZpZwACESVzX19mYWN0b3J5Q29uZmlnAQ9rZXlMcFRva2Vuc0xpc3QAAhAlc19fbHBUb2tlbnNMaXN0ARFrZXlQb29sU2NyaXB0SGFzaAACFiVzJXNfX3Bvb2xfX3NjcmlwdEhhc2gBDWtleU1hdGNoZXJQdWIAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBGGtleUxlZ2FjeUZhY3RvcnlDb250cmFjdAACGSVzX19sZWdhY3lGYWN0b3J5Q29udHJhY3QBDmtleUxlZ2FjeVBvb2xzAAIPJXNfX2xlZ2FjeVBvb2xzARNrZXlNYW5hZ2VyUHVibGljS2V5AAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBFmtleU1hbmFnZXJWYXVsdEFkZHJlc3MAAhclc19fbWFuYWdlclZhdWx0QWRkcmVzcwEPa2V5QWRtaW5QdWJLZXlzAAIQJXNfX2FkbWluUHViS2V5cwEWa2V5QXNzZXRzU3RvcmVDb250cmFjdAACFyVzX19hc3NldHNTdG9yZUNvbnRyYWN0ARlrZXlWb3RpbmdFbWlzc2lvbkNvbnRyYWN0AAIaJXNfX3ZvdGluZ0VtaXNzaW9uQ29udHJhY3QBFGtleVVzZXJQb29sc0NvbnRyYWN0AAIVJXNfX3VzZXJQb29sc0NvbnRyYWN0AQ5rZXlQcmljZUFzc2V0cwAJALkJAgkAzAgCAgIlcwkAzAgCAgtwcmljZUFzc2V0cwUDbmlsBQNTRVABEGtleVByaWNlRGVjaW1hbHMAAhElc19fcHJpY2VEZWNpbWFscwETa2V5QWxsUG9vbHNTaHV0ZG93bgACDCVzX19zaHV0ZG93bgEWa2V5TmV4dEludGVybmFsQXNzZXRJZAACFyVzX19uZXh0SW50ZXJuYWxBc3NldElkAQ9rZXlQb29sVG9XZWlnaHQBC3Bvb2xBZGRyZXNzCQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwULcG9vbEFkZHJlc3MBFmtleVBvb2xUb1dlaWdodEhpc3RvcnkCC3Bvb2xBZGRyZXNzA251bQkArAICCQCsAgIJAKwCAgISJXMlc19fcG9vbFdlaWdodF9fBQtwb29sQWRkcmVzcwICX18JAKQDAQUDbnVtAR9rZXlNYXBwaW5nc0ludGVybmFsMmJhc2VBc3NldElkARFpbnRlcm5hbEJhc2VBc3NldAkArAICAiglcyVzJWRfX21hcHBpbmdzX19pbnRlcm5hbDJiYXNlQXNzZXRJZF9fCQCkAwEFEWludGVybmFsQmFzZUFzc2V0AR9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAQxiYXNlQXNzZXRTdHIJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUMYmFzZUFzc2V0U3RyAQ1rZXlQb29sQ29uZmlnAhNhbW91bnRBc3NldEludGVybmFsEnByaWNlQXNzZXRJbnRlcm5hbAkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUTYW1vdW50QXNzZXRJbnRlcm5hbAICX18FEnByaWNlQXNzZXRJbnRlcm5hbAIIX19jb25maWcBIWtleVBvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAEOYXNzZXRzSW50ZXJuYWwECyR0MDM4NzgzOTQwBQ5hc3NldHNJbnRlcm5hbAQTYW1vdW50QXNzZXRJbnRlcm5hbAgFCyR0MDM4NzgzOTQwAl8xBBJwcmljZUFzc2V0SW50ZXJuYWwIBQskdDAzODc4Mzk0MAJfMgkAuQkCCQDMCAICBiVkJWQlcwkAzAgCCQCkAwEFE2Ftb3VudEFzc2V0SW50ZXJuYWwJAMwIAgkApAMBBRJwcmljZUFzc2V0SW50ZXJuYWwJAMwIAgIab25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQFA25pbAUDU0VQASVrZXlBbGxQb29sc09uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkAAkAuQkCCQDMCAICAiVzCQDMCAICGm9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkBQNuaWwFA1NFUAETa2V5UG9vbFN3YXBEaXNhYmxlZAEOYXNzZXRzSW50ZXJuYWwECyR0MDQyMzI0Mjk0BQ5hc3NldHNJbnRlcm5hbAQTYW1vdW50QXNzZXRJbnRlcm5hbAgFCyR0MDQyMzI0Mjk0Al8xBBJwcmljZUFzc2V0SW50ZXJuYWwIBQskdDA0MjMyNDI5NAJfMgkAuQkCCQDMCAICBiVkJWQlcwkAzAgCCQCkAwEFE2Ftb3VudEFzc2V0SW50ZXJuYWwJAMwIAgkApAMBBRJwcmljZUFzc2V0SW50ZXJuYWwJAMwIAgIMc3dhcERpc2FibGVkBQNuaWwFA1NFUAEXa2V5QWxsUG9vbHNTd2FwRGlzYWJsZWQACQC5CQIJAMwIAgICJXMJAMwIAgIMc3dhcERpc2FibGVkBQNuaWwFA1NFUAEda2V5TWFwcGluZ0xwQXNzZXRUb1Bvb2xBc3NldHMBCmxwQXNzZXRTdHIJAKwCAgkArAICAgglcyVzJXNfXwUKbHBBc3NldFN0cgIYX19tYXBwaW5nc19fbHBBc3NldDJQb29sAR1rZXlNYXBwaW5nUG9vbEFzc2V0c1RvTHBhc3NldAIYaW50ZXJuYWxBbW91bnRBc3NldElkU3RyF2ludGVybmFsUHJpY2VBc3NldElkU3RyCQCsAgIJAKwCAgkArAICCQCsAgICCiVkJWQlcyVzX18FGGludGVybmFsQW1vdW50QXNzZXRJZFN0cgICX18FF2ludGVybmFsUHJpY2VBc3NldElkU3RyAh5fX21hcHBpbmdzX19Qb29sQXNzZXRzMkxwQXNzZXQBDWtleVBvb2xTcHJlYWQBC3Bvb2xBZGRyZXNzCQCsAgICDiVzJXNfX3NwcmVhZF9fBQtwb29sQWRkcmVzcwEpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMBE3Bvb2xDb250cmFjdEFkZHJlc3MJAKwCAgkArAICAgglcyVzJXNfXwUTcG9vbENvbnRyYWN0QWRkcmVzcwIjX19tYXBwaW5nc19fcG9vbENvbnRyYWN0MlBvb2xBc3NldHMBKWtleU1hcHBpbmdQb29sQXNzZXRzVG9Qb29sQ29udHJhY3RBZGRyZXNzAhhpbnRlcm5hbEFtb3VudEFzc2V0SWRTdHIXaW50ZXJuYWxQcmljZUFzc2V0SWRTdHIJAKwCAgkArAICCQCsAgIJAKwCAgIKJWQlZCVzJXNfXwkApAMBBRhpbnRlcm5hbEFtb3VudEFzc2V0SWRTdHICAl9fCQCkAwEFF2ludGVybmFsUHJpY2VBc3NldElkU3RyAiNfX21hcHBpbmdzX19wb29sQXNzZXRzMlBvb2xDb250cmFjdAEfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldAETcG9vbENvbnRyYWN0QWRkcmVzcwkArAICCQCsAgICCCVzJXMlc19fBRNwb29sQ29udHJhY3RBZGRyZXNzAiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAEqa2V5TWFwcGluZ1Bvb2xMUEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAQpscEFzc2V0U3RyCQCsAgIJAKwCAgIIJXMlcyVzX18FCmxwQXNzZXRTdHICIF9fbWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0AQ1rZXlXeEVtaXNzaW9uAg1hbW91bnRBc3NldElkDHByaWNlQXNzZXRJZAkArAICCQCsAgIJAKwCAgIUJXMlcyVzX193eEVtaXNzaW9uX18FDWFtb3VudEFzc2V0SWQCAl9fBQxwcmljZUFzc2V0SWQBCGtleUluRmVlAQtwb29sQWRkcmVzcwkArAICAg0lcyVzX19pbkZlZV9fBQtwb29sQWRkcmVzcwEPa2V5SW5GZWVEZWZhdWx0AAIQJXNfX2luRmVlRGVmYXVsdAEKa2V5U3dhcEZlZQELcG9vbEFkZHJlc3MJAKwCAgIPJXMlc19fc3dhcEZlZV9fBQtwb29sQWRkcmVzcwEJa2V5T3V0RmVlAQtwb29sQWRkcmVzcwkArAICAg4lcyVzX19vdXRGZWVfXwULcG9vbEFkZHJlc3MBEGtleU91dEZlZURlZmF1bHQAAhElc19fb3V0RmVlRGVmYXVsdAEWa2V5U2tpcE9yZGVyVmFsaWRhdGlvbgELcG9vbEFkZHJlc3MJAKwCAgIbJXMlc19fc2tpcE9yZGVyVmFsaWRhdGlvbl9fBQtwb29sQWRkcmVzcwERa2V5Q2hhbmdlQW1wRGVsYXkBC3Bvb2xBZGRyZXNzCQCsAgICFiVzJXNfX2NoYW5nZUFtcERlbGF5X18FC3Bvb2xBZGRyZXNzARFrZXlDaGFuZ2VBbXBEZWx0YQELcG9vbEFkZHJlc3MJAKwCAgIWJXMlc19fY2hhbmdlQW1wRGVsdGFfXwULcG9vbEFkZHJlc3MBEmtleUNoYW5nZUFtcFRhcmdldAELcG9vbEFkZHJlc3MJAKwCAgIXJXMlc19fY2hhbmdlQW1wVGFyZ2V0X18FC3Bvb2xBZGRyZXNzARVrZXlTV2F2ZXNQcm94eUFkZHJlc3MAAhYlc19fc1dhdmVzUHJveHlBZGRyZXNzARBrZXlTV2F2ZXNBc3NldElkAAIRJXNfX3NXYXZlc0Fzc2V0SWQBF2tleVN0YWtpbmdQcm9maXRBZGRyZXNzAAIYJXNfX3N0YWtpbmdQcm9maXRBZGRyZXNzAQ5rZXlMZWFzZWRSYXRpbwILcG9vbEFkZHJlc3MHYXNzZXRJZAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgtsZWFzZWRSYXRpbwkAzAgCBQtwb29sQWRkcmVzcwkAzAgCBQdhc3NldElkBQNuaWwFA1NFUAEVa2V5TGVhc2VkUmF0aW9EZWZhdWx0AQdhc3NldElkCQC5CQIJAMwIAgIEJXMlcwkAzAgCAhJsZWFzZWRSYXRpb0RlZmF1bHQJAMwIAgUHYXNzZXRJZAUDbmlsBQNTRVABF2tleUxlYXNlZFJhdGlvVG9sZXJhbmNlAgtwb29sQWRkcmVzcwdhc3NldElkCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICFGxlYXNlZFJhdGlvVG9sZXJhbmNlCQDMCAIFC3Bvb2xBZGRyZXNzCQDMCAIFB2Fzc2V0SWQFA25pbAUDU0VQAQ1rZXlNaW5CYWxhbmNlAgtwb29sQWRkcmVzcwdhc3NldElkCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICCm1pbkJhbGFuY2UJAMwIAgULcG9vbEFkZHJlc3MJAMwIAgUHYXNzZXRJZAUDbmlsBQNTRVABFGtleU1pbkJhbGFuY2VEZWZhdWx0AQdhc3NldElkCQC5CQIJAMwIAgIEJXMlcwkAzAgCAhFtaW5CYWxhbmNlRGVmYXVsdAkAzAgCBQdhc3NldElkBQNuaWwFA1NFUAEVa2V5QWRkcmVzc1doaXRlbGlzdGVkAQdhZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAgt3aGl0ZWxpc3RlZAkAzAgCCQClCAEFB2FkZHJlc3MFA25pbAUDU0VQAQ9nZXRTdHJpbmdPckZhaWwBA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFA2tleQkArAICAhVObyBkYXRhIGZvciB0aGlzLmtleT0FA2tleQEQZ2V0Qm9vbGVhbk9yRmFpbAEDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJsIAgUEdGhpcwUDa2V5CQCsAgICFU5vIGRhdGEgZm9yIHRoaXMua2V5PQUDa2V5AQxnZXRJbnRPckZhaWwBA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMFA2tleQkArAICAhVObyBkYXRhIGZvciB0aGlzLmtleT0FA2tleQEMcGFyc2VBc3NldElkAQVpbnB1dAMJAAACBQVpbnB1dAULd2F2ZXNTdHJpbmcFBHVuaXQJANkEAQUFaW5wdXQBHGdldE1hbmFnZXJWYXVsdEFkZHJlc3NPclRoaXMABAckbWF0Y2gwCQCiCAEJARZrZXlNYW5hZ2VyVmF1bHRBZGRyZXNzAAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAXMFBHRoaXMBBXRvWDE4AgdvcmlnVmFsDW9yaWdTY2FsZU11bHQJALwCAwkAtgIBBQdvcmlnVmFsBQZNVUxUMTgJALYCAQUNb3JpZ1NjYWxlTXVsdAEHZnJvbVgxOAIDdmFsD3Jlc3VsdFNjYWxlTXVsdAkAoAMBCQC8AgMFA3ZhbAkAtgIBBQ9yZXN1bHRTY2FsZU11bHQFBk1VTFQxOAAYSWR4RmFjdG9yeUNmZ1N0YWtpbmdEYXBwAAEAGUlkeEZhY3RvcnlDZmdCb29zdGluZ0RhcHAAAgAUSWR4RmFjdG9yeUNmZ0lkb0RhcHAAAwAVSWR4RmFjdG9yeUNmZ1RlYW1EYXBwAAQAGUlkeEZhY3RvcnlDZmdFbWlzc2lvbkRhcHAABQAVSWR4RmFjdG9yeUNmZ1Jlc3REYXBwAAYAGUlkeEZhY3RvcnlDZmdTbGlwcGFnZURhcHAABwAUSWR4RmFjdG9yeUNmZ0Rhb0RhcHAACAAaSWR4RmFjdG9yeUNmZ01hcmtldGluZ0RhcHAACQAaSWR4RmFjdG9yeUNmZ0d3eFJld2FyZERhcHAACgAWSWR4RmFjdG9yeUNmZ0JpcmRzRGFwcAALARhnZXRCb29zdGluZ0FkZHJlc3NPckZhaWwBCmZhY3RvcnlDZmcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUKZmFjdG9yeUNmZwUZSWR4RmFjdG9yeUNmZ0Jvb3N0aW5nRGFwcAEYZ2V0RW1pc3Npb25BZGRyZXNzT3JGYWlsAQpmYWN0b3J5Q2ZnCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFCmZhY3RvcnlDZmcFGUlkeEZhY3RvcnlDZmdFbWlzc2lvbkRhcHABF2dldFN0YWtpbmdBZGRyZXNzT3JGYWlsAQpmYWN0b3J5Q2ZnCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFCmZhY3RvcnlDZmcFGElkeEZhY3RvcnlDZmdTdGFraW5nRGFwcAEZZ2V0R3d4UmV3YXJkQWRkcmVzc09yRmFpbAEKZmFjdG9yeUNmZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQpmYWN0b3J5Q2ZnBRpJZHhGYWN0b3J5Q2ZnR3d4UmV3YXJkRGFwcAEOZ2V0UHJpY2VBc3NldHMABAckbWF0Y2gwCQCiCAEJAQ5rZXlQcmljZUFzc2V0cwADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwAwkAAAIJALECAQUBcwAABQNuaWwJALwJAgUBcwUDU0VQBQNuaWwBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQABBNtYW5hZ2VyVmF1bHRBZGRyZXNzCQEcZ2V0TWFuYWdlclZhdWx0QWRkcmVzc09yVGhpcwAEByRtYXRjaDAJAJ0IAgUTbWFuYWdlclZhdWx0QWRkcmVzcwkBE2tleU1hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgAVcGVybWlzc2lvbkRlbmllZEVycm9yCQEIdGhyb3dFcnIBAhFQZXJtaXNzaW9uIGRlbmllZAAJdGVzdEVycm9yCQEIdGhyb3dFcnIBAg9UZXN0IGVycm9yIGhlcmUBCG11c3RUaGlzAQFpAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwYFFXBlcm1pc3Npb25EZW5pZWRFcnJvcgELbXVzdE1hbmFnZXIBAWkEByRtYXRjaDAJARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkFAnBrBgUVcGVybWlzc2lvbkRlbmllZEVycm9yAwkAAQIFByRtYXRjaDACBFVuaXQJAQhtdXN0VGhpcwEFAWkJAAIBAgtNYXRjaCBlcnJvcgEQZGF0YUZhY3RvcnlDZmdWMwsOc3Rha2luZ0FkZHJlc3MPYm9vc3RpbmdBZGRyZXNzC2lkb0NvbnRyYWN0DHRlYW1Db250cmFjdBBlbWlzc2lvbkNvbnRyYWN0DHJlc3RDb250cmFjdBBzbGlwcGFnZUNvbnRyYWN0C2Rhb0NvbnRyYWN0EW1hcmtldGluZ0NvbnRyYWN0Emd3eFJld2FyZHNDb250cmFjdA1iaXJkc0NvbnRyYWN0CQC5CQIJAMwIAgIWJXMlcyVzJXMlcyVzJXMlcyVzJXMlcwkAzAgCBQ5zdGFraW5nQWRkcmVzcwkAzAgCBQ9ib29zdGluZ0FkZHJlc3MJAMwIAgULaWRvQ29udHJhY3QJAMwIAgUMdGVhbUNvbnRyYWN0CQDMCAIFEGVtaXNzaW9uQ29udHJhY3QJAMwIAgUMcmVzdENvbnRyYWN0CQDMCAIFEHNsaXBwYWdlQ29udHJhY3QJAMwIAgULZGFvQ29udHJhY3QJAMwIAgURbWFya2V0aW5nQ29udHJhY3QJAMwIAgUSZ3d4UmV3YXJkc0NvbnRyYWN0CQDMCAIFDWJpcmRzQ29udHJhY3QFA25pbAUDU0VQAQ5kYXRhRmFjdG9yeUNmZwcOc3Rha2luZ0FkZHJlc3MPYm9vc3RpbmdBZGRyZXNzC2lkb0NvbnRyYWN0DHRlYW1Db250cmFjdBBlbWlzc2lvbkNvbnRyYWN0DHJlc3RDb250cmFjdBBzbGlwcGFnZUNvbnRyYWN0CQC5CQIJAMwIAgIMJXMlcyVzJXMlcyVzCQDMCAIFDnN0YWtpbmdBZGRyZXNzCQDMCAIFD2Jvb3N0aW5nQWRkcmVzcwkAzAgCBQtpZG9Db250cmFjdAkAzAgCBQx0ZWFtQ29udHJhY3QJAMwIAgUQZW1pc3Npb25Db250cmFjdAkAzAgCBQxyZXN0Q29udHJhY3QJAMwIAgUQc2xpcHBhZ2VDb250cmFjdAUDbmlsBQNTRVABC2RhdGFQb29sQ2ZnCwtwb29sQWRkcmVzcwpwb29sU3RhdHVzCWxwQXNzZXRJZA5hbW91bnRBc3NldFN0cg1wcmljZUFzc2V0U3RyE2Ftb3VudEFzc2V0RGVjaW1hbHMScHJpY2VBc3NldERlY2ltYWxzFWFtb3VudEFzc2V0SW50ZXJuYWxJZBRwcmljZUFzc2V0SW50ZXJuYWxJZA9scEFzc2V0RGVjaW1hbHMIcG9vbFR5cGUJALkJAgkAzAgCAhYlcyVkJXMlcyVzJWQlZCVkJWQlZCVzCQDMCAIFC3Bvb2xBZGRyZXNzCQDMCAIFCnBvb2xTdGF0dXMJAMwIAgUJbHBBc3NldElkCQDMCAIFDmFtb3VudEFzc2V0U3RyCQDMCAIFDXByaWNlQXNzZXRTdHIJAMwIAgkApAMBBRNhbW91bnRBc3NldERlY2ltYWxzCQDMCAIJAKQDAQUScHJpY2VBc3NldERlY2ltYWxzCQDMCAIJAKQDAQUVYW1vdW50QXNzZXRJbnRlcm5hbElkCQDMCAIJAKQDAQUUcHJpY2VBc3NldEludGVybmFsSWQJAMwIAgkApAMBBQ9scEFzc2V0RGVjaW1hbHMJAMwIAgUIcG9vbFR5cGUFA25pbAUDU0VQARVkYXRhTWFwcGluZ1Bvb2xBc3NldHMCFmludGVybmFsQW1vdW50QXNzZXRTdHIVaW50ZXJuYWxQcmljZUFzc2V0U3RyCQC5CQIJAMwIAgIEJWQlZAkAzAgCCQCkAwEFFmludGVybmFsQW1vdW50QXNzZXRTdHIJAMwIAgkApAMBBRVpbnRlcm5hbFByaWNlQXNzZXRTdHIFA25pbAUDU0VQAQ1nZXRQb29sQ29uZmlnAQtwb29sQWRkcmVzcwQKcG9vbEFzc2V0cwkAtQkCCQEPZ2V0U3RyaW5nT3JGYWlsAQkBKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzAQULcG9vbEFkZHJlc3MFA1NFUAQTYW1vdW50QXNzZXRJbnRlcm5hbAkAkQMCBQpwb29sQXNzZXRzAAEEEnByaWNlQXNzZXRJbnRlcm5hbAkAkQMCBQpwb29sQXNzZXRzAAIJALUJAgkBD2dldFN0cmluZ09yRmFpbAEJAQ1rZXlQb29sQ29uZmlnAgUTYW1vdW50QXNzZXRJbnRlcm5hbAUScHJpY2VBc3NldEludGVybmFsBQNTRVABGmdldEludGVybmFsQXNzZXRJZE9yQ3JlYXRlAgphc3NldElkU3RyC2luY3JlbWVudG9yBA9pbnRlcm5hbEFzc2V0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQBBQphc3NldElkU3RyAAAEGGN1cnJlbnRJbmRleE9mSW50ZXJuYWxJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEWa2V5TmV4dEludGVybmFsQXNzZXRJZAAAAAQGcmVzdWx0AwkAAAIFD2ludGVybmFsQXNzZXRJZAAABBJuZXdJbnRlcm5hbEFzc2V0SWQJAGQCBRhjdXJyZW50SW5kZXhPZkludGVybmFsSWQFC2luY3JlbWVudG9yCQCVCgMFEm5ld0ludGVybmFsQXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleU5leHRJbnRlcm5hbEFzc2V0SWQABRJuZXdJbnRlcm5hbEFzc2V0SWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAR9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAQUKYXNzZXRJZFN0cgUSbmV3SW50ZXJuYWxBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAR9rZXlNYXBwaW5nc0ludGVybmFsMmJhc2VBc3NldElkAQUSbmV3SW50ZXJuYWxBc3NldElkBQphc3NldElkU3RyBQNuaWwGCQCVCgMFD2ludGVybmFsQXNzZXRJZAUDbmlsBwUGcmVzdWx0AQltdXN0QWRtaW4BAWkECGFkbWluUEtzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBD2tleUFkbWluUHViS2V5cwAFBUVNUFRZBQNTRVADCQEPY29udGFpbnNFbGVtZW50AgUIYWRtaW5QS3MJANgEAQgFAWkPY2FsbGVyUHVibGljS2V5BgQJaXNNYW5hZ2VyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFCWlzTWFuYWdlcgUJaXNNYW5hZ2VyBgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEWaW50T3JEZWZhdWx0T3JGYWxsYmFjawMDa2V5CmtleURlZmF1bHQNdmFsdWVGYWxsYmFjawkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUKa2V5RGVmYXVsdAUNdmFsdWVGYWxsYmFjawEScG9vbEV4aXN0c0ludGVybmFsAg1hbW91bnRBc3NldElkDHByaWNlQXNzZXRJZAQTYW1vdW50QXNzZXRJbnRlcm5hbAkAnwgBCQEfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAEFDWFtb3VudEFzc2V0SWQEEnByaWNlQXNzZXRJbnRlcm5hbAkAnwgBCQEfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAEFDHByaWNlQXNzZXRJZAMDCQAAAgUTYW1vdW50QXNzZXRJbnRlcm5hbAUEdW5pdAYJAAACBRJwcmljZUFzc2V0SW50ZXJuYWwFBHVuaXQHBARhbUFzCQCkAwEJAQV2YWx1ZQEFE2Ftb3VudEFzc2V0SW50ZXJuYWwEBHByQXMJAKQDAQkBBXZhbHVlAQUScHJpY2VBc3NldEludGVybmFsBANjZmcJAKIIAQkBDWtleVBvb2xDb25maWcCBQRhbUFzBQRwckFzBApjZmdSZXZlcnNlCQCiCAEJAQ1rZXlQb29sQ29uZmlnAgUEcHJBcwUEYW1BcwQGZXhpc3RzAwkBAiE9AgUDY2ZnBQR1bml0BgkBAiE9AgUKY2ZnUmV2ZXJzZQUEdW5pdAUGZXhpc3RzARxnZXRBc3NldHNEYXRhRnJvbVBvb2xBZGRyZXNzARNwb29sQ29udHJhY3RBZGRyZXNzBApwb29sQXNzZXRzBAckbWF0Y2gwCQCiCAEJASlrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwEFE3Bvb2xDb250cmFjdEFkZHJlc3MDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQC1CQIFAXMFA1NFUAkBCHRocm93RXJyAQkAuQkCCQDMCAIFE3Bvb2xDb250cmFjdEFkZHJlc3MJAMwIAgIRcG9vbCBpcyBub3QgZm91bmQFA25pbAIBIAQTYW1vdW50QXNzZXRJbnRlcm5hbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnBvb2xBc3NldHMAAQQScHJpY2VBc3NldEludGVybmFsCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKcG9vbEFzc2V0cwACBA1hbW91bnRBc3NldElkCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEfa2V5TWFwcGluZ3NJbnRlcm5hbDJiYXNlQXNzZXRJZAEFE2Ftb3VudEFzc2V0SW50ZXJuYWwEDHByaWNlQXNzZXRJZAkBEUBleHRyTmF0aXZlKDEwNTgpAQkBH2tleU1hcHBpbmdzSW50ZXJuYWwyYmFzZUFzc2V0SWQBBRJwcmljZUFzc2V0SW50ZXJuYWwECWxwQXNzZXRJZAkBEUBleHRyTmF0aXZlKDEwNTgpAQkBH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQBBRNwb29sQ29udHJhY3RBZGRyZXNzCQCXCgUFDWFtb3VudEFzc2V0SWQFDHByaWNlQXNzZXRJZAUJbHBBc3NldElkBRNhbW91bnRBc3NldEludGVybmFsBRJwcmljZUFzc2V0SW50ZXJuYWwBDmdldFBvb2xDcmVhdG9yARNwb29sQ29udHJhY3RBZGRyZXNzBA0kdDAxNTkwOTE2MDQ2CQEcZ2V0QXNzZXRzRGF0YUZyb21Qb29sQWRkcmVzcwEFE3Bvb2xDb250cmFjdEFkZHJlc3MEDWFtb3VudEFzc2V0SWQIBQ0kdDAxNTkwOTE2MDQ2Al8xBAxwcmljZUFzc2V0SWQIBQ0kdDAxNTkwOTE2MDQ2Al8yBAlscEFzc2V0SWQIBQ0kdDAxNTkwOTE2MDQ2Al8zBBNhbW91bnRBc3NldEludGVybmFsCAUNJHQwMTU5MDkxNjA0NgJfNAQScHJpY2VBc3NldEludGVybmFsCAUNJHQwMTU5MDkxNjA0NgJfNQQRdXNlclBvb2xzQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDU4KQEJARRrZXlVc2VyUG9vbHNDb250cmFjdAAEC3Bvb2xDcmVhdG9yCQD8BwQFEXVzZXJQb29sc0NvbnRyYWN0AhZnZXRQb29sQ3JlYXRvclJFQURPTkxZCQDMCAIFDWFtb3VudEFzc2V0SWQJAMwIAgUMcHJpY2VBc3NldElkBQNuaWwFA25pbAULcG9vbENyZWF0b3IBEWdldEFkZHJlc3NCYWxhbmNlAg1hZGRyZXNzU3RyaW5nDWFzc2V0SWRTdHJpbmcEB2FkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDWFkZHJlc3NTdHJpbmcDCQAAAgUNYXNzZXRJZFN0cmluZwIFV0FWRVMICQDvBwEFB2FkZHJlc3MHcmVndWxhcgQHYXNzZXRJZAkA2QQBBQ1hc3NldElkU3RyaW5nCQDwBwIFB2FkZHJlc3MFB2Fzc2V0SWQBC2lzUG9vbEVtcHR5ARNwb29sQ29udHJhY3RBZGRyZXNzBA0kdDAxNjYyMTE2NzU4CQEcZ2V0QXNzZXRzRGF0YUZyb21Qb29sQWRkcmVzcwEFE3Bvb2xDb250cmFjdEFkZHJlc3MEDWFtb3VudEFzc2V0SWQIBQ0kdDAxNjYyMTE2NzU4Al8xBAxwcmljZUFzc2V0SWQIBQ0kdDAxNjYyMTE2NzU4Al8yBAlscEFzc2V0SWQIBQ0kdDAxNjYyMTE2NzU4Al8zBBNhbW91bnRBc3NldEludGVybmFsCAUNJHQwMTY2MjExNjc1OAJfNAQScHJpY2VBc3NldEludGVybmFsCAUNJHQwMTY2MjExNjc1OAJfNQMJAAACCQERZ2V0QWRkcmVzc0JhbGFuY2UCBRNwb29sQ29udHJhY3RBZGRyZXNzBQ1hbW91bnRBc3NldElkAAAJAAACCQERZ2V0QWRkcmVzc0JhbGFuY2UCBRNwb29sQ29udHJhY3RBZGRyZXNzBQxwcmljZUFzc2V0SWQAAAckAWkBF2dldFN3YXBDb250cmFjdFJFQURPTkxZAAkAlAoCBQNuaWwJAQ9nZXRTdHJpbmdPckZhaWwBCQEMc3dhcENvbnRyYWN0AAFpARpnZXRQb29sTGVhc2VDb25maWdSRUFET05MWQILcG9vbEFkZHJlc3MHYXNzZXRJZAQNJHQwMTcwNzMxNzM3NwQHJG1hdGNoMAkAmggCBQR0aGlzCQEOa2V5TGVhc2VkUmF0aW8CBQtwb29sQWRkcmVzcwUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgNJbnQEAXIFByRtYXRjaDAJAJQKAgYJAJcDAQkAzAgCAGQJAMwIAgkAlgMBCQDMCAIAAAkAzAgCBQFyBQNuaWwFA25pbAQHJG1hdGNoMQkAmggCBQR0aGlzCQEVa2V5TGVhc2VkUmF0aW9EZWZhdWx0AQUHYXNzZXRJZAMJAAECBQckbWF0Y2gxAgNJbnQEAnJkBQckbWF0Y2gxCQCUCgIGCQCXAwEJAMwIAgBkCQDMCAIJAJYDAQkAzAgCAAAJAMwIAgUCcmQFA25pbAUDbmlsCQCUCgIHAAAECmlzTGVhc2FibGUIBQ0kdDAxNzA3MzE3Mzc3Al8xBAtsZWFzZWRSYXRpbwgFDSR0MDE3MDczMTczNzcCXzIECm1pbkJhbGFuY2UEByRtYXRjaDAJAJoIAgUEdGhpcwkBDWtleU1pbkJhbGFuY2UCBQtwb29sQWRkcmVzcwUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgNJbnQEAWIFByRtYXRjaDAJAJYDAQkAzAgCAAAJAMwIAgUBYgUDbmlsBAckbWF0Y2gxCQCaCAIFBHRoaXMJARRrZXlNaW5CYWxhbmNlRGVmYXVsdAEFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMQIDSW50BAJiZAUHJG1hdGNoMQkAlgMBCQDMCAIAAAkAzAgCBQJiZAUDbmlsAAAEDSR0MDE3NjQzMTc4NjcDCQAAAgUHYXNzZXRJZAIFV0FWRVMJAJUKAwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEVa2V5U1dhdmVzUHJveHlBZGRyZXNzAAIACQCdCAIFBHRoaXMJAQt2YWx1ZU9yRWxzZQIJARBrZXlTV2F2ZXNBc3NldElkAAIABQZNVUxUMTIJAJUKAwIAAgAAAAQMcHJveHlBZGRyZXNzCAUNJHQwMTc2NDMxNzg2NwJfMQQMcHJveHlBc3NldElkCAUNJHQwMTc2NDMxNzg2NwJfMgQMcHJveHlSYXRlTXVsCAUNJHQwMTc2NDMxNzg2NwJfMwQUc3Rha2luZ1Byb2ZpdEFkZHJlc3MJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBF2tleVN0YWtpbmdQcm9maXRBZGRyZXNzAAIACQCUCgIFA25pbAkAmQoHBQppc0xlYXNhYmxlBQtsZWFzZWRSYXRpbwUKbWluQmFsYW5jZQUMcHJveHlBZGRyZXNzBQxwcm94eUFzc2V0SWQFDHByb3h5UmF0ZU11bAUUc3Rha2luZ1Byb2ZpdEFkZHJlc3MBaQEgZ2V0THBBc3NldEZyb21Qb29sQXNzZXRzUkVBRE9OTFkCBmFzc2V0MQZhc3NldDIDAwkAAAIFBmFzc2V0MQIsOExRVzhmN1A1ZDVQWk03R3RaRUJnYXFSUEdTelMzRGZQdWlYclVSSjRBSlMJAAACBQZhc3NldDICBVdBVkVTBwkAlAoCBQNuaWwFBHVuaXQECWFzc2V0TnVtMQkBBXZhbHVlAQkAmggCBQR0aGlzCQEfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAEFBmFzc2V0MQQJYXNzZXROdW0yCQEFdmFsdWUBCQCaCAIFBHRoaXMJAR9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAQUGYXNzZXQyBAJlZQkAnQgCBQR0aGlzCQEda2V5TWFwcGluZ1Bvb2xBc3NldHNUb0xwYXNzZXQCCQCkAwEFCWFzc2V0TnVtMQkApAMBBQlhc3NldE51bTIEA3JlcwMJAAACBQJlZQUEdW5pdAUEdW5pdAkAsAICCQEFdmFsdWUBBQJlZQAECQCUCgIFA25pbAUDcmVzAWkBIWdldFBvb2xBZGRyZXNzRnJvbUxwQXNzZXRSRUFET05MWQECbHAJAJQKAgUDbmlsCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJASprZXlNYXBwaW5nUG9vbExQQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MBBQJscAIAAWkBC2NvbnN0cnVjdG9yCA9zdGFraW5nQ29udHJhY3QQYm9vc3RpbmdDb250cmFjdAtpZG9Db250cmFjdAx0ZWFtQ29udHJhY3QQZW1pc3Npb25Db250cmFjdAxyZXN0Q29udHJhY3QQc2xwaXBhZ2VDb250cmFjdA1wcmljZURlY2ltYWxzBAtjaGVja0NhbGxlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleUZhY3RvcnlDb25maWcACQEOZGF0YUZhY3RvcnlDZmcHBQ9zdGFraW5nQ29udHJhY3QFEGJvb3N0aW5nQ29udHJhY3QFC2lkb0NvbnRyYWN0BQx0ZWFtQ29udHJhY3QFEGVtaXNzaW9uQ29udHJhY3QFDHJlc3RDb250cmFjdAUQc2xwaXBhZ2VDb250cmFjdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEGtleVByaWNlRGVjaW1hbHMABQ1wcmljZURlY2ltYWxzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENY29uc3RydWN0b3JWMgEQbWF0aGNoZXJQdWI1OFN0cgQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBAptYXRoY2VyUHViCQCnCAEJANkEAQUQbWF0aGNoZXJQdWI1OFN0cgMJAAACBQptYXRoY2VyUHViBQptYXRoY2VyUHViCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlNYXRjaGVyUHViAAUQbWF0aGNoZXJQdWI1OFN0cgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDWNvbnN0cnVjdG9yVjMEC2Rhb0NvbnRyYWN0EW1hcmtldGluZ0NvbnRyYWN0Emd3eFJld2FyZHNDb250cmFjdA1iaXJkc0NvbnRyYWN0BAtjaGVja0NhbGxlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIECmZhY3RvcnlDZmcJALUJAgkBD2dldFN0cmluZ09yRmFpbAEJARBrZXlGYWN0b3J5Q29uZmlnAAUDU0VQCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlGYWN0b3J5Q29uZmlnAAkBEGRhdGFGYWN0b3J5Q2ZnVjMLCQCRAwIFCmZhY3RvcnlDZmcAAQkAkQMCBQpmYWN0b3J5Q2ZnAAIJAJEDAgUKZmFjdG9yeUNmZwADCQCRAwIFCmZhY3RvcnlDZmcABAkAkQMCBQpmYWN0b3J5Q2ZnAAUJAJEDAgUKZmFjdG9yeUNmZwAGCQCRAwIFCmZhY3RvcnlDZmcABwULZGFvQ29udHJhY3QFEW1hcmtldGluZ0NvbnRyYWN0BRJnd3hSZXdhcmRzQ29udHJhY3QFDWJpcmRzQ29udHJhY3QFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ1jb25zdHJ1Y3RvclY0AhVsZWdhY3lGYWN0b3J5Q29udHJhY3QLbGVnYWN5UG9vbHMEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCCQEYa2V5TGVnYWN5RmFjdG9yeUNvbnRyYWN0AAUVbGVnYWN5RmFjdG9yeUNvbnRyYWN0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlMZWdhY3lQb29scwAJALkJAgULbGVnYWN5UG9vbHMFA1NFUAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDWNvbnN0cnVjdG9yVjUBE2Fzc2V0c1N0b3JlQ29udHJhY3QEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5QXNzZXRzU3RvcmVDb250cmFjdAAFE2Fzc2V0c1N0b3JlQ29udHJhY3QFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ1jb25zdHJ1Y3RvclY2AhZ2b3RpbmdFbWlzc2lvbkNvbnRyYWN0C3ByaWNlQXNzZXRzBAVjaGVrcwkAzAgCCQELbXVzdE1hbmFnZXIBBQFpCQDMCAIDCQECIT0CCQCmCAEFFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QFBHVuaXQGAihpbnZhbGlkIHZvdGluZyBlbWlzc2lvbiBjb250cmFjdCBhZGRyZXNzBQNuaWwDCQAAAgUFY2hla3MFBWNoZWtzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARlrZXlWb3RpbmdFbWlzc2lvbkNvbnRyYWN0AAUWdm90aW5nRW1pc3Npb25Db250cmFjdAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5UHJpY2VBc3NldHMACQC5CQIFC3ByaWNlQXNzZXRzBQNTRVAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQlzZXRBZG1pbnMBDGFkbWluUHViS2V5cwQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlBZG1pblB1YktleXMACQC5CQIFDGFkbWluUHViS2V5cwUDU0VQBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEPYWN0aXZhdGVOZXdQb29sCAtwb29sQWRkcmVzcw5hbW91bnRBc3NldFN0cg1wcmljZUFzc2V0U3RyC2xwQXNzZXROYW1lDGxwQXNzZXREZXNjcgpwb29sV2VpZ2h0CHBvb2xUeXBlBGxvZ28EC2NoZWNrQ2FsbGVyCQEJbXVzdEFkbWluAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIDCQEJaXNEZWZpbmVkAQkAoggBCQEpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMBBQtwb29sQWRkcmVzcwkBCHRocm93RXJyAQkArAICCQCsAgICDVBvb2wgYWRkcmVzcyAFC3Bvb2xBZGRyZXNzAhQgYWxyZWFkeSByZWdpc3RlcmVkLgQXaW50ZXJuYWxBbW91bnRBc3NldERhdGEJARpnZXRJbnRlcm5hbEFzc2V0SWRPckNyZWF0ZQIFDmFtb3VudEFzc2V0U3RyAAEEFWludGVybmFsQW1vdW50QXNzZXRJZAgFF2ludGVybmFsQW1vdW50QXNzZXREYXRhAl8xBBZpbnRlcm5hbFByaWNlQXNzZXREYXRhCQEaZ2V0SW50ZXJuYWxBc3NldElkT3JDcmVhdGUCBQ1wcmljZUFzc2V0U3RyAwgFF2ludGVybmFsQW1vdW50QXNzZXREYXRhAl8zAAIAAQQUaW50ZXJuYWxQcmljZUFzc2V0SWQIBRZpbnRlcm5hbFByaWNlQXNzZXREYXRhAl8xBBVwb29sQWNjb3VudFNjcmlwdEhhc2gJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA8QcBCQERQGV4dHJOYXRpdmUoMTA2MikBBQtwb29sQWRkcmVzcwkArAICAilObyBzY3JpcHQgaGFzIGJlZW4gZm91bmQgb24gcG9vbCBhY2NvdW50IAULcG9vbEFkZHJlc3MEHGV0aGFsb25Qb29sQWNjb3VudFNjcmlwdEhhc2gJARFAZXh0ck5hdGl2ZSgxMDU3KQEJARFrZXlQb29sU2NyaXB0SGFzaAAECnBvb2xFeGlzdHMJARJwb29sRXhpc3RzSW50ZXJuYWwCBQ5hbW91bnRBc3NldFN0cgUNcHJpY2VBc3NldFN0cgMFCnBvb2xFeGlzdHMJAQh0aHJvd0VycgEJAKwCAgkArAICCQCsAgIJAKwCAgIFUG9vbCAFDmFtb3VudEFzc2V0U3RyAgEvBQ1wcmljZUFzc2V0U3RyAhwgaGFzIGFscmVhZHkgYmVlbiBhY3RpdmF0ZWQuBA9wb29sQ29uZmlnVmFsdWUJAQV2YWx1ZQEJAJ0IAgUEdGhpcwkBDWtleVBvb2xDb25maWcCCQCkAwEFFWludGVybmFsQW1vdW50QXNzZXRJZAkApAMBBRRpbnRlcm5hbFByaWNlQXNzZXRJZAQUYW1vdW50QXNzZXRzRGVjaW1hbHMDCQAAAgUOYW1vdW50QXNzZXRTdHICBVdBVkVTBRFkZWNpbWFsc011bHRQcmljZQkAbAYACgAACAkBBXZhbHVlAQkA7AcBCQDZBAEFDmFtb3VudEFzc2V0U3RyCGRlY2ltYWxzAAAAAAUERE9XTgQTcHJpY2VBc3NldHNEZWNpbWFscwMJAAACBQ1wcmljZUFzc2V0U3RyAgVXQVZFUwURZGVjaW1hbHNNdWx0UHJpY2UJAGwGAAoAAAgJAQV2YWx1ZQEJAOwHAQkA2QQBBQ1wcmljZUFzc2V0U3RyCGRlY2ltYWxzAAAAAAUERE9XTgQSbHBBc3NldElzc3VlQWN0aW9uCQDCCAUFC2xwQXNzZXROYW1lBQxscEFzc2V0RGVzY3IAAQAIBgQJbHBBc3NldElkCQC4CAEFEmxwQXNzZXRJc3N1ZUFjdGlvbgQMbHBBc3NldElkU3RyCQDYBAEFCWxwQXNzZXRJZAQYcG9vbEFjdGl2YXRlSW52b2tlUmVzdWx0CQD8BwQJARFAZXh0ck5hdGl2ZSgxMDYyKQEFC3Bvb2xBZGRyZXNzAghhY3RpdmF0ZQkAzAgCBQ5hbW91bnRBc3NldFN0cgkAzAgCBQ1wcmljZUFzc2V0U3RyBQNuaWwFA25pbAMJAAACBRhwb29sQWN0aXZhdGVJbnZva2VSZXN1bHQFGHBvb2xBY3RpdmF0ZUludm9rZVJlc3VsdAMJAQIhPQIFGHBvb2xBY3RpdmF0ZUludm9rZVJlc3VsdAIHc3VjY2VzcwkBCHRocm93RXJyAQIjUG9vbCBpbml0aWFsaXNhdGlvbiBlcnJvciBoYXBwZW5lZC4EE2Fzc2V0c1N0b3JlQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQ9nZXRTdHJpbmdPckZhaWwBCQEWa2V5QXNzZXRzU3RvcmVDb250cmFjdAAEGGNyZWF0ZU9yVXBkYXRlTHBBc3NldEludgkA/AcEBRNhc3NldHNTdG9yZUNvbnRyYWN0Ag5jcmVhdGVPclVwZGF0ZQkAzAgCBQxscEFzc2V0SWRTdHIJAMwIAgULbHBBc3NldE5hbWUJAMwIAgcFA25pbAUDbmlsAwkAAAIFGGNyZWF0ZU9yVXBkYXRlTHBBc3NldEludgUYY3JlYXRlT3JVcGRhdGVMcEFzc2V0SW52BBJhZGRQb29sc0xwTGFiZWxJbnYJAPwHBAUTYXNzZXRzU3RvcmVDb250cmFjdAIIYWRkTGFiZWwJAMwIAgUMbHBBc3NldElkU3RyCQDMCAIFDGxhYmVsUG9vbHNMcAUDbmlsBQNuaWwDCQAAAgUSYWRkUG9vbHNMcExhYmVsSW52BRJhZGRQb29sc0xwTGFiZWxJbnYECnNldExvZ29JbnYJAPwHBAUTYXNzZXRzU3RvcmVDb250cmFjdAIHc2V0TG9nbwkAzAgCBQxscEFzc2V0SWRTdHIJAMwIAgUEbG9nbwUDbmlsBQNuaWwDCQAAAgUKc2V0TG9nb0ludgUKc2V0TG9nb0ludgQQYWRkQXNzZXRzTGlua0ludgkA/AcEBRNhc3NldHNTdG9yZUNvbnRyYWN0Ag1hZGRBc3NldHNMaW5rCQDMCAIFDmFtb3VudEFzc2V0U3RyCQDMCAIFDXByaWNlQXNzZXRTdHIJAMwIAgUMbHBBc3NldElkU3RyBQNuaWwFA25pbAMJAAACBRBhZGRBc3NldHNMaW5rSW52BRBhZGRBc3NldHNMaW5rSW52BBtpbmNyZWFzZUFzc2V0UG9vbHNOdW1iZXJJbnYJAPwHBAUTYXNzZXRzU3RvcmVDb250cmFjdAIYaW5jcmVhc2VBc3NldFBvb2xzTnVtYmVyCQDMCAIFDmFtb3VudEFzc2V0U3RyBQNuaWwFA25pbAMJAAACBRtpbmNyZWFzZUFzc2V0UG9vbHNOdW1iZXJJbnYFG2luY3JlYXNlQXNzZXRQb29sc051bWJlckludgkAlAoCCQDOCAIJAM4IAggFF2ludGVybmFsQW1vdW50QXNzZXREYXRhAl8yCAUWaW50ZXJuYWxQcmljZUFzc2V0RGF0YQJfMgkAzAgCBRJscEFzc2V0SXNzdWVBY3Rpb24JAMwIAgkBBEJ1cm4CBQlscEFzc2V0SWQAAQkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5UG9vbENvbmZpZwIJAKQDAQUVaW50ZXJuYWxBbW91bnRBc3NldElkCQCkAwEFFGludGVybmFsUHJpY2VBc3NldElkCQELZGF0YVBvb2xDZmcLBQtwb29sQWRkcmVzcwkApAMBBQpQb29sQWN0aXZlBQxscEFzc2V0SWRTdHIFDmFtb3VudEFzc2V0U3RyBQ1wcmljZUFzc2V0U3RyBRRhbW91bnRBc3NldHNEZWNpbWFscwUTcHJpY2VBc3NldHNEZWNpbWFscwUVaW50ZXJuYWxBbW91bnRBc3NldElkBRRpbnRlcm5hbFByaWNlQXNzZXRJZAURZGVjaW1hbHNNdWx0UHJpY2UFCHBvb2xUeXBlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAR1rZXlNYXBwaW5nTHBBc3NldFRvUG9vbEFzc2V0cwEFDGxwQXNzZXRJZFN0cgkBFWRhdGFNYXBwaW5nUG9vbEFzc2V0cwIFFWludGVybmFsQW1vdW50QXNzZXRJZAUUaW50ZXJuYWxQcmljZUFzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBHWtleU1hcHBpbmdQb29sQXNzZXRzVG9McGFzc2V0AgkApAMBBRVpbnRlcm5hbEFtb3VudEFzc2V0SWQJAKQDAQUUaW50ZXJuYWxQcmljZUFzc2V0SWQJAKwCAgIEJXNfXwUMbHBBc3NldElkU3RyCQDMCAIJAQtTdHJpbmdFbnRyeQIJASlrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwEFC3Bvb2xBZGRyZXNzCQEVZGF0YU1hcHBpbmdQb29sQXNzZXRzAgUVaW50ZXJuYWxBbW91bnRBc3NldElkBRRpbnRlcm5hbFByaWNlQXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQEpa2V5TWFwcGluZ1Bvb2xBc3NldHNUb1Bvb2xDb250cmFjdEFkZHJlc3MCBRVpbnRlcm5hbEFtb3VudEFzc2V0SWQFFGludGVybmFsUHJpY2VBc3NldElkBQtwb29sQWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQEqa2V5TWFwcGluZ1Bvb2xMUEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAQUMbHBBc3NldElkU3RyBQtwb29sQWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQEfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldAEFC3Bvb2xBZGRyZXNzBQxscEFzc2V0SWRTdHIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ9rZXlQb29sVG9XZWlnaHQBBQtwb29sQWRkcmVzcwUKcG9vbFdlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleVBvb2xTcHJlYWQBBQtwb29sQWRkcmVzcwUNZGVmYXVsdFNwcmVhZAUDbmlsBQxscEFzc2V0SWRTdHIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKbWFuYWdlUG9vbAILcG9vbEFkZHJlc3MJbmV3U3RhdHVzBAtjaGVja0NhbGxlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIECnBvb2xDb25maWcJAQ1nZXRQb29sQ29uZmlnAQULcG9vbEFkZHJlc3MECnBvb2xTdGF0dXMJAJEDAgUKcG9vbENvbmZpZwUNaWR4UG9vbFN0YXR1cwQMbHBBc3NldElkU3RyCQCRAwIFCnBvb2xDb25maWcFEGlkeFBvb2xMUEFzc2V0SWQEDmFtb3VudEFzc2V0U3RyCQCRAwIFCnBvb2xDb25maWcFDWlkeEFtdEFzc2V0SWQEDXByaWNlQXNzZXRTdHIJAJEDAgUKcG9vbENvbmZpZwUPaWR4UHJpY2VBc3NldElkBBRhbW91bnRBc3NldHNEZWNpbWFscwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnBvb2xDb25maWcFDmlkeEFtdEFzc2V0RGNtBBNwcmljZUFzc2V0c0RlY2ltYWxzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKcG9vbENvbmZpZwUQaWR4UHJpY2VBc3NldERjbQQVaW50ZXJuYWxBbW91bnRBc3NldElkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKcG9vbENvbmZpZwUOaWR4SUFtdEFzc2V0SWQEFGludGVybmFsUHJpY2VBc3NldElkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKcG9vbENvbmZpZwUQaWR4SVByaWNlQXNzZXRJZAQKbHBBc3NldERjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnBvb2xDb25maWcFDWlkeExQQXNzZXREY20ECHBvb2xUeXBlCQCRAwIFCnBvb2xDb25maWcFC2lkeFBvb2xUeXBlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlQb29sQ29uZmlnAgkApAMBBRVpbnRlcm5hbEFtb3VudEFzc2V0SWQJAKQDAQUUaW50ZXJuYWxQcmljZUFzc2V0SWQJAQtkYXRhUG9vbENmZwsFC3Bvb2xBZGRyZXNzCQCkAwEFCW5ld1N0YXR1cwUMbHBBc3NldElkU3RyBQ5hbW91bnRBc3NldFN0cgUNcHJpY2VBc3NldFN0cgUUYW1vdW50QXNzZXRzRGVjaW1hbHMFE3ByaWNlQXNzZXRzRGVjaW1hbHMFFWludGVybmFsQW1vdW50QXNzZXRJZAUUaW50ZXJuYWxQcmljZUFzc2V0SWQFCmxwQXNzZXREY20FCHBvb2xUeXBlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEEZW1pdAEMYW1vdW50VG9FbWl0BAZjYWxsZXIIBQFpBmNhbGxlcgQMb3JpZ2luQ2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIEEGxwQXNzZXRSZXF1ZXN0ZWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldAEJAKUIAQUGY2FsbGVyAh1JbnZhbGlkIExQIGFkZHJlc3MgY2FsbGVkIG1lLgQHbHBBc3NldAkA2QQBBRBscEFzc2V0UmVxdWVzdGVkBAtsZWdhY3lQb29scwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAQ5rZXlMZWdhY3lQb29scwAFBUVNUFRZBQNTRVAEFWxlZ2FjeUZhY3RvcnlDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARhrZXlMZWdhY3lGYWN0b3J5Q29udHJhY3QAAihMZWdhY3kgZmFjdG9yeSBjb250cmFjdCBkb2VzIG5vdCBleGlzdHMuAwkAZwIAAAUMYW1vdW50VG9FbWl0BQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgULbGVnYWN5UG9vbHMJAKUIAQUGY2FsbGVyCQCUCgIFA25pbAUVbGVnYWN5RmFjdG9yeUNvbnRyYWN0CQCUCgIJAMwIAgkBB1JlaXNzdWUDBQdscEFzc2V0BQxhbW91bnRUb0VtaXQGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUMYW1vdW50VG9FbWl0BQdscEFzc2V0BQNuaWwCB3N1Y2Nlc3MBaQEEYnVybgEMYW1vdW50VG9CdXJuBAZjYWxsZXIIBQFpBmNhbGxlcgQMb3JpZ2luQ2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIEB3BheW1lbnQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQNcGF5bWVudEFtb3VudAkBBXZhbHVlAQgFB3BheW1lbnQGYW1vdW50BA9pbkFtb3VudEFzc2V0SWQJANgEAQkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAQabHBBc3NldFJlcXVlc3RlZEZvckJ1cm5pbmcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldAEJAKUIAQUGY2FsbGVyAh1JbnZhbGlkIExQIGFkZHJlc3MgY2FsbGVkIG1lLgMJAQIhPQIFD2luQW1vdW50QXNzZXRJZAUabHBBc3NldFJlcXVlc3RlZEZvckJ1cm5pbmcJAQh0aHJvd0VycgECFUludmFsaWQgYXNzZXQgcGFzc2VkLgMJAQIhPQIFDGFtb3VudFRvQnVybgUNcGF5bWVudEFtb3VudAkBCHRocm93RXJyAQIWSW52YWxpZCBhbW91bnQgcGFzc2VkLgQHbHBBc3NldAkA2QQBBRpscEFzc2V0UmVxdWVzdGVkRm9yQnVybmluZwkAlAoCCQDMCAIJAQRCdXJuAgUHbHBBc3NldAUMYW1vdW50VG9CdXJuBQNuaWwCB3N1Y2Nlc3MBaQEMbW9kaWZ5V2VpZ2h0AglscEFzc2V0SWQFc2hhcmUEC2NoZWNrQ2FsbGVyAwkAAAIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEZa2V5Vm90aW5nRW1pc3Npb25Db250cmFjdAACAAYJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBBNwb29sQ29udHJhY3RBZGRyZXNzCQEPZ2V0U3RyaW5nT3JGYWlsAQkBKmtleU1hcHBpbmdQb29sTFBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwEFCWxwQXNzZXRJZAQNcG9vbFdlaWdodEtleQkBD2tleVBvb2xUb1dlaWdodAEFE3Bvb2xDb250cmFjdEFkZHJlc3MEDGd3eFdlaWdodEtleQkBD2tleVBvb2xUb1dlaWdodAEFDkdXWHZpcnR1YWxQT09MBAlnd3hXZWlnaHQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUMZ3d4V2VpZ2h0S2V5AAAECnBvb2xXZWlnaHQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUNcG9vbFdlaWdodEtleQAABA1wb29sV2VpZ2h0TmV3BQVzaGFyZQQKZmFjdG9yeUNmZwkAtQkCCQEPZ2V0U3RyaW5nT3JGYWlsAQkBEGtleUZhY3RvcnlDb25maWcABQNTRVAED3N0YWtpbmdDb250cmFjdAkBF2dldFN0YWtpbmdBZGRyZXNzT3JGYWlsAQUKZmFjdG9yeUNmZwQRb25Nb2RpZnlXZWlnaHRJbnYJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag5vbk1vZGlmeVdlaWdodAkAzAgCBQlscEFzc2V0SWQJAMwIAgUTcG9vbENvbnRyYWN0QWRkcmVzcwUDbmlsBQNuaWwDCQAAAgURb25Nb2RpZnlXZWlnaHRJbnYFEW9uTW9kaWZ5V2VpZ2h0SW52BBVnd3hWaXJ0dWFsUG9vbEFjdGlvbnMDCQAAAgUJZ3d4V2VpZ2h0AAAFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUMZ3d4V2VpZ2h0S2V5AAAFA25pbAQUcG9vbFdlaWdodEhpc3RvcnlLZXkJARZrZXlQb29sVG9XZWlnaHRIaXN0b3J5AgUTcG9vbENvbnRyYWN0QWRkcmVzcwAABBdwb29sV2VpZ2h0SGlzdG9yeU9yVW5pdAkAnwgBBRRwb29sV2VpZ2h0SGlzdG9yeUtleQQYcG9vbFdlaWdodEhpc3RvcnlBY3Rpb25zAwkAAAIFF3Bvb2xXZWlnaHRIaXN0b3J5T3JVbml0BQR1bml0BQNuaWwJAMwIAgkBC0RlbGV0ZUVudHJ5AQUUcG9vbFdlaWdodEhpc3RvcnlLZXkFA25pbAkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFDXBvb2xXZWlnaHRLZXkFDXBvb2xXZWlnaHROZXcFA25pbAUVZ3d4VmlydHVhbFBvb2xBY3Rpb25zBRhwb29sV2VpZ2h0SGlzdG9yeUFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENbW9kaWZ5V2VpZ2h0cwQOYnRjUG9vbEFkZHJlc3MOZXRoUG9vbEFkZHJlc3MRZXRoQnRjUG9vbEFkZHJlc3MTdXNkY1VzZHRQb29sQWRkcmVzcwQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBA9ldGhCdGNXZWlnaHROZXcJAGkCCQBoAgAFBQ5QT09MV0VJR0hUTVVMVABkBBF1c2RjVXNkdFdlaWdodE5ldwkAaQIJAGgCAAUFDlBPT0xXRUlHSFRNVUxUAGQED3dlaWdodERlY3JlbWVudAkAaQIJAGgCAAUFDlBPT0xXRUlHSFRNVUxUAGQECmZhY3RvcnlDZmcJALUJAgkBD2dldFN0cmluZ09yRmFpbAEJARBrZXlGYWN0b3J5Q29uZmlnAAUDU0VQBAtzdGFraW5nRGFwcAkBF2dldFN0YWtpbmdBZGRyZXNzT3JGYWlsAQUKZmFjdG9yeUNmZwQNZ3d4UmV3YXJkRGFwcAkBGWdldEd3eFJld2FyZEFkZHJlc3NPckZhaWwBBQpmYWN0b3J5Q2ZnBAxidGNXZWlnaHRLRVkJAQ9rZXlQb29sVG9XZWlnaHQBBQ5idGNQb29sQWRkcmVzcwQMZXRoV2VpZ2h0S0VZCQEPa2V5UG9vbFRvV2VpZ2h0AQUOZXRoUG9vbEFkZHJlc3MED2V0aEJ0Y1dlaWdodEtFWQkBD2tleVBvb2xUb1dlaWdodAEFEWV0aEJ0Y1Bvb2xBZGRyZXNzBBF1c2RjVXNkdFdlaWdodEtFWQkBD2tleVBvb2xUb1dlaWdodAEFE3VzZGNVc2R0UG9vbEFkZHJlc3MECWJ0Y1dlaWdodAkBDGdldEludE9yRmFpbAEFDGJ0Y1dlaWdodEtFWQQJZXRoV2VpZ2h0CQEMZ2V0SW50T3JGYWlsAQUMZXRoV2VpZ2h0S0VZBAxidGNXZWlnaHROZXcJAGUCBQlidGNXZWlnaHQFD3dlaWdodERlY3JlbWVudAQMZXRoV2VpZ2h0TmV3CQBlAgUJZXRoV2VpZ2h0BQ93ZWlnaHREZWNyZW1lbnQDCQBnAgAABQxidGNXZWlnaHROZXcJAQh0aHJvd0VycgEJAKwCAgIWaW52YWxpZCBidGNXZWlnaHROZXc6IAkApAMBBQxidGNXZWlnaHROZXcDCQBnAgAABQxldGhXZWlnaHROZXcJAQh0aHJvd0VycgEJAKwCAgIWaW52YWxpZCBldGhXZWlnaHROZXc6IAkApAMBBQxldGhXZWlnaHROZXcED2J0Y0xwQXNzZXRJZFN0cgkBD2dldFN0cmluZ09yRmFpbAEJAR9rZXlNYXBwaW5nUG9vbENvbnRyYWN0VG9MUEFzc2V0AQUOYnRjUG9vbEFkZHJlc3MED2V0aExwQXNzZXRJZFN0cgkBD2dldFN0cmluZ09yRmFpbAEJAR9rZXlNYXBwaW5nUG9vbENvbnRyYWN0VG9MUEFzc2V0AQUOZXRoUG9vbEFkZHJlc3MEEmV0aEJ0Y0xwQXNzZXRJZFN0cgkBD2dldFN0cmluZ09yRmFpbAEJAR9rZXlNYXBwaW5nUG9vbENvbnRyYWN0VG9MUEFzc2V0AQURZXRoQnRjUG9vbEFkZHJlc3MEFHVzZGNVc2R0THBBc3NldElkU3RyCQEPZ2V0U3RyaW5nT3JGYWlsAQkBH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQBBRN1c2RjVXNkdFBvb2xBZGRyZXNzBBFvbk1vZGlmeVdlaWdodEJ0YwkA/AcEBQtzdGFraW5nRGFwcAIOb25Nb2RpZnlXZWlnaHQJAMwIAgUPYnRjTHBBc3NldElkU3RyCQDMCAIFDmJ0Y1Bvb2xBZGRyZXNzBQNuaWwFA25pbAMJAAACBRFvbk1vZGlmeVdlaWdodEJ0YwURb25Nb2RpZnlXZWlnaHRCdGMEEW9uTW9kaWZ5V2VpZ2h0RXRoCQD8BwQFC3N0YWtpbmdEYXBwAg5vbk1vZGlmeVdlaWdodAkAzAgCBQ9ldGhMcEFzc2V0SWRTdHIJAMwIAgUOZXRoUG9vbEFkZHJlc3MFA25pbAUDbmlsAwkAAAIFEW9uTW9kaWZ5V2VpZ2h0RXRoBRFvbk1vZGlmeVdlaWdodEV0aAQUb25Nb2RpZnlXZWlnaHRFdGhCdGMJAPwHBAULc3Rha2luZ0RhcHACDm9uTW9kaWZ5V2VpZ2h0CQDMCAIFEmV0aEJ0Y0xwQXNzZXRJZFN0cgkAzAgCBRFldGhCdGNQb29sQWRkcmVzcwUDbmlsBQNuaWwDCQAAAgUUb25Nb2RpZnlXZWlnaHRFdGhCdGMFFG9uTW9kaWZ5V2VpZ2h0RXRoQnRjBBZvbk1vZGlmeVdlaWdodFVzZGNVc2R0CQD8BwQFC3N0YWtpbmdEYXBwAg5vbk1vZGlmeVdlaWdodAkAzAgCBRR1c2RjVXNkdExwQXNzZXRJZFN0cgkAzAgCBRN1c2RjVXNkdFBvb2xBZGRyZXNzBQNuaWwFA25pbAMJAAACBRZvbk1vZGlmeVdlaWdodFVzZGNVc2R0BRZvbk1vZGlmeVdlaWdodFVzZGNVc2R0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQxidGNXZWlnaHRLRVkFDGJ0Y1dlaWdodE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgUMZXRoV2VpZ2h0S0VZBQxldGhXZWlnaHROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIFD2V0aEJ0Y1dlaWdodEtFWQUPZXRoQnRjV2VpZ2h0TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRF1c2RjVXNkdFdlaWdodEtFWQURdXNkY1VzZHRXZWlnaHROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlQb29sVG9XZWlnaHRIaXN0b3J5AgUOYnRjUG9vbEFkZHJlc3MAAAUJYnRjV2VpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5UG9vbFRvV2VpZ2h0SGlzdG9yeQIFDmV0aFBvb2xBZGRyZXNzAAAFCWV0aFdlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVBvb2xUb1dlaWdodEhpc3RvcnkCBRFldGhCdGNQb29sQWRkcmVzcwAABQ9ldGhCdGNXZWlnaHROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlQb29sVG9XZWlnaHRIaXN0b3J5AgUTdXNkY1VzZHRQb29sQWRkcmVzcwAABRF1c2RjVXNkdFdlaWdodE5ldwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBGGNoZWNrV3hFbWlzc2lvblBvb2xMYWJlbAINYW1vdW50QXNzZXRJZAxwcmljZUFzc2V0SWQECWhhdmVMYWJlbAQHJG1hdGNoMAkAoAgBCQENa2V5V3hFbWlzc2lvbgIFDWFtb3VudEFzc2V0SWQFDHByaWNlQXNzZXRJZAMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAFiBQckbWF0Y2gwBQFiBwkAlAoCBQNuaWwFCWhhdmVMYWJlbAFpARZzZXRXeEVtaXNzaW9uUG9vbExhYmVsAg1hbW91bnRBc3NldElkDHByaWNlQXNzZXRJZAQLY2hlY2tDYWxsZXIJAQltdXN0QWRtaW4BBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgkAlAoCCQDMCAIJAQxCb29sZWFuRW50cnkCCQENa2V5V3hFbWlzc2lvbgIFDWFtb3VudEFzc2V0SWQFDHByaWNlQXNzZXRJZAYFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARlkZWxldGVXeEVtaXNzaW9uUG9vbExhYmVsAg1hbW91bnRBc3NldElkDHByaWNlQXNzZXRJZAQLY2hlY2tDYWxsZXIDCQAAAggFAWkGY2FsbGVyBQR0aGlzBgkBCW11c3RBZG1pbgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQCUCgIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDWtleVd4RW1pc3Npb24CBQ1hbW91bnRBc3NldElkBQxwcmljZUFzc2V0SWQFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARJvblZlcmlmaWNhdGlvbkxvc3MBB2Fzc2V0SWQEC2NoZWNrQ2FsbGVyAwkAAAIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEWa2V5QXNzZXRzU3RvcmVDb250cmFjdAACAAYJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBAtwcmljZUFzc2V0cwkBDmdldFByaWNlQXNzZXRzAAQUY2hlY2tQcmljZUFzc2V0c1NpemUDCQBmAgkAkAMBBQtwcmljZUFzc2V0cwAABgkBCHRocm93RXJyAQIUaW52YWxpZCBwcmljZSBhc3NldHMDCQAAAgUUY2hlY2tQcmljZUFzc2V0c1NpemUFFGNoZWNrUHJpY2VBc3NldHNTaXplCgECY2ICA2FjYwpwcmljZUFzc2V0BAFyCQD8BwQFBHRoaXMCGWRlbGV0ZVd4RW1pc3Npb25Qb29sTGFiZWwJAMwIAgUHYXNzZXRJZAkAzAgCBQpwcmljZUFzc2V0BQNuaWwFA25pbAMJAAACBQFyBQFyBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAdhY3Rpb25zCgACJGwFC3ByaWNlQXNzZXRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUEdW5pdAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQECY2ICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEzCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0DCQAAAgUHYWN0aW9ucwUHYWN0aW9ucwkAlAoCBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQELcG9vbEFkZHJlc3MECnBvb2xDb25maWcJAQ1nZXRQb29sQ29uZmlnAQULcG9vbEFkZHJlc3MEDmFzc2V0c0ludGVybmFsCQCUCgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQ29uZmlnBQ5pZHhJQW10QXNzZXRJZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnBvb2xDb25maWcFEGlkeElQcmljZUFzc2V0SWQEHnBvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEha2V5UG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkAQUOYXNzZXRzSW50ZXJuYWwHBCJhbGxQb29sc09uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkCQELdmFsdWVPckVsc2UCCQCgCAEJASVrZXlBbGxQb29sc09uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkAAcJAJQKAgUDbmlsAwUiYWxsUG9vbHNPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAYFHnBvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAFpARppc1Bvb2xTd2FwRGlzYWJsZWRSRUFET05MWQELcG9vbEFkZHJlc3MECnBvb2xDb25maWcJAQ1nZXRQb29sQ29uZmlnAQULcG9vbEFkZHJlc3MEDmFzc2V0c0ludGVybmFsCQCUCgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQ29uZmlnBQ5pZHhJQW10QXNzZXRJZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnBvb2xDb25maWcFEGlkeElQcmljZUFzc2V0SWQEEHBvb2xTd2FwRGlzYWJsZWQJAQt2YWx1ZU9yRWxzZQIJAKAIAQkBE2tleVBvb2xTd2FwRGlzYWJsZWQBBQ5hc3NldHNJbnRlcm5hbAcEFGFsbFBvb2xzU3dhcERpc2FibGVkCQELdmFsdWVPckVsc2UCCQCgCAEJARdrZXlBbGxQb29sc1N3YXBEaXNhYmxlZAAHCQCUCgIFA25pbAMFFGFsbFBvb2xzU3dhcERpc2FibGVkBgUQcG9vbFN3YXBEaXNhYmxlZAFpARBnZXRJbkZlZVJFQURPTkxZAQtwb29sQWRkcmVzcwQDZmVlCQEWaW50T3JEZWZhdWx0T3JGYWxsYmFjawMJAQhrZXlJbkZlZQEFC3Bvb2xBZGRyZXNzCQEPa2V5SW5GZWVEZWZhdWx0AAAACQCUCgIFA25pbAUDZmVlAWkBEWdldE91dEZlZVJFQURPTkxZAQtwb29sQWRkcmVzcwQDZmVlCQEWaW50T3JEZWZhdWx0T3JGYWxsYmFjawMJAQlrZXlPdXRGZWUBBQtwb29sQWRkcmVzcwkBEGtleU91dEZlZURlZmF1bHQACQBrAwAKBQVNVUxUOACQTgkAlAoCBQNuaWwFA2ZlZQFpARJnZXRTd2FwRmVlUkVBRE9OTFkBDnBvb2xBZGRyZXNzU3RyBAlmZWVPcHRpb24EByRtYXRjaDAJAJ0IAgUEdGhpcwkBCmtleVN3YXBGZWUBBQ5wb29sQWRkcmVzc1N0cgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAEBXBhcnRzCQC1CQIFAXMFA1NFUAQHcG9vbEZlZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEEC3Byb3RvY29sRmVlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAgkAlAoCBQdwb29sRmVlBQtwcm90b2NvbEZlZQMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IJAJQKAgUDbmlsBQlmZWVPcHRpb24BaQEQcG9vbEluZm9SRUFET05MWQIQYW1vdW50QXNzZXRJZFN0cg9wcmljZUFzc2V0SWRTdHIEG2Ftb3VudEFzc2V0SW50ZXJuYWxJZE9wdGlvbgkAmggCBQR0aGlzCQEfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAEFEGFtb3VudEFzc2V0SWRTdHIEGnByaWNlQXNzZXRJbnRlcm5hbElkT3B0aW9uCQCaCAIFBHRoaXMJAR9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAQUPcHJpY2VBc3NldElkU3RyBBlwb29sQ29udHJhY3RBZGRyZXNzT3B0aW9uCQCdCAIFBHRoaXMJASlrZXlNYXBwaW5nUG9vbEFzc2V0c1RvUG9vbENvbnRyYWN0QWRkcmVzcwIJAQV2YWx1ZQEFG2Ftb3VudEFzc2V0SW50ZXJuYWxJZE9wdGlvbgkBBXZhbHVlAQUacHJpY2VBc3NldEludGVybmFsSWRPcHRpb24ED2xwQXNzZXRJZE9wdGlvbgkAnQgCBQR0aGlzCQEfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldAEJAQV2YWx1ZQEFGXBvb2xDb250cmFjdEFkZHJlc3NPcHRpb24ECnBvb2xFeGlzdHMDAwkBCWlzRGVmaW5lZAEFG2Ftb3VudEFzc2V0SW50ZXJuYWxJZE9wdGlvbgkBCWlzRGVmaW5lZAEFGnByaWNlQXNzZXRJbnRlcm5hbElkT3B0aW9uBwkBCWlzRGVmaW5lZAEFGXBvb2xDb250cmFjdEFkZHJlc3NPcHRpb24HBAhwb29sSW5mbwMFCnBvb2xFeGlzdHMJAJQKAgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQUZcG9vbENvbnRyYWN0QWRkcmVzc09wdGlvbgkBDHBhcnNlQXNzZXRJZAEJAQV2YWx1ZQEFD2xwQXNzZXRJZE9wdGlvbgUEdW5pdAkAlAoCBQNuaWwFCHBvb2xJbmZvAWkBFWdldFBvb2xTdGF0dXNSRUFET05MWQELcG9vbEFkZHJlc3MECnBvb2xBc3NldHMJALUJAgkBD2dldFN0cmluZ09yRmFpbAEJASlrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwEFC3Bvb2xBZGRyZXNzBQNTRVAEE2Ftb3VudEFzc2V0SW50ZXJuYWwJAJEDAgUKcG9vbEFzc2V0cwABBBJwcmljZUFzc2V0SW50ZXJuYWwJAJEDAgUKcG9vbEFzc2V0cwACBANjZmcJALUJAgkBD2dldFN0cmluZ09yRmFpbAEJAQ1rZXlQb29sQ29uZmlnAgUTYW1vdW50QXNzZXRJbnRlcm5hbAUScHJpY2VBc3NldEludGVybmFsBQNTRVAJAJQKAgUDbmlsCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ1pZHhQb29sU3RhdHVzAWkBFWdldFBvb2xDb25maWdSRUFET05MWQELcG9vbEFkZHJlc3MECnBvb2xBc3NldHMJALUJAgkBD2dldFN0cmluZ09yRmFpbAEJASlrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwEFC3Bvb2xBZGRyZXNzBQNTRVAEE2Ftb3VudEFzc2V0SW50ZXJuYWwJAJEDAgUKcG9vbEFzc2V0cwABBBJwcmljZUFzc2V0SW50ZXJuYWwJAJEDAgUKcG9vbEFzc2V0cwACBANjZmcJALUJAgkBD2dldFN0cmluZ09yRmFpbAEJAQ1rZXlQb29sQ29uZmlnAgUTYW1vdW50QXNzZXRJbnRlcm5hbAUScHJpY2VBc3NldEludGVybmFsBQNTRVAJAJQKAgUDbmlsBQNjZmcBaQEgZ2V0UG9vbENvbmZpZ0J5THBBc3NldElkUkVBRE9OTFkBDGxwQXNzZXRJZFN0cgQKcG9vbEFzc2V0cwkAtQkCCQEPZ2V0U3RyaW5nT3JGYWlsAQkBHWtleU1hcHBpbmdMcEFzc2V0VG9Qb29sQXNzZXRzAQUMbHBBc3NldElkU3RyBQNTRVAEE2Ftb3VudEFzc2V0SW50ZXJuYWwJAJEDAgUKcG9vbEFzc2V0cwABBBJwcmljZUFzc2V0SW50ZXJuYWwJAJEDAgUKcG9vbEFzc2V0cwACBANjZmcJALUJAgkBD2dldFN0cmluZ09yRmFpbAEJAQ1rZXlQb29sQ29uZmlnAgUTYW1vdW50QXNzZXRJbnRlcm5hbAUScHJpY2VBc3NldEludGVybmFsBQNTRVAJAJQKAgUDbmlsBQNjZmcBaQEScG9vbEV4aXN0c1JFQURPTkxZAg1hbW91bnRBc3NldElkDHByaWNlQXNzZXRJZAkAlAoCBQNuaWwJARJwb29sRXhpc3RzSW50ZXJuYWwCBQ1hbW91bnRBc3NldElkBQxwcmljZUFzc2V0SWQBaQEbc2tpcE9yZGVyVmFsaWRhdGlvblJFQURPTkxZAQtwb29sQWRkcmVzcwkAlAoCBQNuaWwJAQt2YWx1ZU9yRWxzZQIJAKAIAQkBFmtleVNraXBPcmRlclZhbGlkYXRpb24BBQtwb29sQWRkcmVzcwcBaQEaZ2V0Q2hhbmdlQW1wQ29uZmlnUkVBRE9OTFkBC3Bvb2xBZGRyZXNzBAVkZWxheQkBEUBleHRyTmF0aXZlKDEwNTUpAQkBEWtleUNoYW5nZUFtcERlbGF5AQULcG9vbEFkZHJlc3MEBWRlbHRhCQERQGV4dHJOYXRpdmUoMTA1NSkBCQERa2V5Q2hhbmdlQW1wRGVsdGEBBQtwb29sQWRkcmVzcwQGdGFyZ2V0CQERQGV4dHJOYXRpdmUoMTA1NSkBCQESa2V5Q2hhbmdlQW1wVGFyZ2V0AQULcG9vbEFkZHJlc3MJAJQKAgUDbmlsCQDMCAIFBWRlbGF5CQDMCAIFBWRlbHRhCQDMCAIFBnRhcmdldAUDbmlsAWkBFWdldFBvb2xXZWlnaHRSRUFET05MWQEJbHBBc3NldElkBAtwb29sQWRkcmVzcwkBD2dldFN0cmluZ09yRmFpbAEJASprZXlNYXBwaW5nUG9vbExQQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MBBQlscEFzc2V0SWQEBndlaWdodAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEPa2V5UG9vbFRvV2VpZ2h0AQULcG9vbEFkZHJlc3MAAAkAlAoCBQNuaWwFBndlaWdodAFpAQpkZWxldGVQb29sARNwb29sQ29udHJhY3RBZGRyZXNzBApwb29sQ29uZmlnCQENZ2V0UG9vbENvbmZpZwEFE3Bvb2xDb250cmFjdEFkZHJlc3MEC2NoZWNrQ2FsbGVyAwkAAAIJAKUIAQgFAWkGY2FsbGVyCQEOZ2V0UG9vbENyZWF0b3IBBRNwb29sQ29udHJhY3RBZGRyZXNzAwkBC2lzUG9vbEVtcHR5AQUTcG9vbENvbnRyYWN0QWRkcmVzcwYJAQh0aHJvd0VycgECEVBvb2wgaXMgbm90IGVtcHR5CQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQLY2hlY2tXZWlnaHQDCQAAAgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEPa2V5UG9vbFRvV2VpZ2h0AQUTcG9vbENvbnRyYWN0QWRkcmVzcwAAAAAGCQEIdGhyb3dFcnIBAhdQb29sIHdlaWdodCBpcyBub3QgWmVybwMJAAACBQtjaGVja1dlaWdodAULY2hlY2tXZWlnaHQEC2NoZWNrU3RhdHVzAwkAAAIJAJEDAgUKcG9vbENvbmZpZwUNaWR4UG9vbFN0YXR1cwkApAMBBQxQb29sU2h1dGRvd24GCQEIdGhyb3dFcnIBAhlQb29sIG11c3QgYmUgU0hVVERPV04gKDQpAwkAAAIFC2NoZWNrU3RhdHVzBQtjaGVja1N0YXR1cwQNJHQwNDA3MjI0MDg1OQkBHGdldEFzc2V0c0RhdGFGcm9tUG9vbEFkZHJlc3MBBRNwb29sQ29udHJhY3RBZGRyZXNzBA1hbW91bnRBc3NldElkCAUNJHQwNDA3MjI0MDg1OQJfMQQMcHJpY2VBc3NldElkCAUNJHQwNDA3MjI0MDg1OQJfMgQJbHBBc3NldElkCAUNJHQwNDA3MjI0MDg1OQJfMwQTYW1vdW50QXNzZXRJbnRlcm5hbAgFDSR0MDQwNzIyNDA4NTkCXzQEEnByaWNlQXNzZXRJbnRlcm5hbAgFDSR0MDQwNzIyNDA4NTkCXzUEEXVzZXJQb29sc0NvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEUa2V5VXNlclBvb2xzQ29udHJhY3QABA91c2VyUG9vbHNJbnZva2UJAPwHBAURdXNlclBvb2xzQ29udHJhY3QCCmRlbGV0ZVBvb2wJAMwIAgUNYW1vdW50QXNzZXRJZAkAzAgCBQxwcmljZUFzc2V0SWQFA25pbAUDbmlsAwkAAAIFD3VzZXJQb29sc0ludm9rZQUPdXNlclBvb2xzSW52b2tlBBZ2b3RpbmdFbWlzc2lvbkNvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEZa2V5Vm90aW5nRW1pc3Npb25Db250cmFjdAAEFHZvdGluZ0VtaXNzaW9uSW52b2tlCQD8BwQFFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QCCmRlbGV0ZVBvb2wJAMwIAgUNYW1vdW50QXNzZXRJZAkAzAgCBQxwcmljZUFzc2V0SWQFA25pbAUDbmlsAwkAAAIFFHZvdGluZ0VtaXNzaW9uSW52b2tlBRR2b3RpbmdFbWlzc2lvbkludm9rZQQTYXNzZXRzU3RvcmVDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTgpAQkBFmtleUFzc2V0c1N0b3JlQ29udHJhY3QABBFhc3NldHNTdG9yZUludm9rZQkA/AcEBRNhc3NldHNTdG9yZUNvbnRyYWN0AgpkZWxldGVQb29sCQDMCAIFDWFtb3VudEFzc2V0SWQJAMwIAgUMcHJpY2VBc3NldElkBQNuaWwFA25pbAMJAAACBRFhc3NldHNTdG9yZUludm9rZQURYXNzZXRzU3RvcmVJbnZva2UJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQBBRNwb29sQ29udHJhY3RBZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJASlrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwEFE3Bvb2xDb250cmFjdEFkZHJlc3MJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBHWtleU1hcHBpbmdQb29sQXNzZXRzVG9McGFzc2V0AgkApAMBBRNhbW91bnRBc3NldEludGVybmFsCQCkAwEFEnByaWNlQXNzZXRJbnRlcm5hbAkAzAgCCQELRGVsZXRlRW50cnkBCQEpa2V5TWFwcGluZ1Bvb2xBc3NldHNUb1Bvb2xDb250cmFjdEFkZHJlc3MCBRNhbW91bnRBc3NldEludGVybmFsBRJwcmljZUFzc2V0SW50ZXJuYWwJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDWtleVBvb2xDb25maWcCCQCkAwEFE2Ftb3VudEFzc2V0SW50ZXJuYWwJAKQDAQUScHJpY2VBc3NldEludGVybmFsCQDMCAIJAQtEZWxldGVFbnRyeQEJAR1rZXlNYXBwaW5nTHBBc3NldFRvUG9vbEFzc2V0cwEFCWxwQXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEqa2V5TWFwcGluZ1Bvb2xMUEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAQUJbHBBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ1rZXlXeEVtaXNzaW9uAgUNYW1vdW50QXNzZXRJZAUMcHJpY2VBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ9rZXlQb29sVG9XZWlnaHQBBRNwb29sQ29udHJhY3RBZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ1rZXlQb29sU3ByZWFkAQUTcG9vbENvbnRyYWN0QWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQEIa2V5SW5GZWUBBRNwb29sQ29udHJhY3RBZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQlrZXlPdXRGZWUBBRNwb29sQ29udHJhY3RBZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJARZrZXlTa2lwT3JkZXJWYWxpZGF0aW9uAQUTcG9vbENvbnRyYWN0QWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQERa2V5Q2hhbmdlQW1wRGVsYXkBBRNwb29sQ29udHJhY3RBZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJARFrZXlDaGFuZ2VBbXBEZWx0YQEFE3Bvb2xDb250cmFjdEFkZHJlc3MJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEmtleUNoYW5nZUFtcFRhcmdldAEFE3Bvb2xDb250cmFjdEFkZHJlc3MFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhnZXRQcmljZQEOcG9vbEFkZHJlc3NTdHIEC3Bvb2xBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBQ5wb29sQWRkcmVzc1N0cgQDY2ZnCQENZ2V0UG9vbENvbmZpZwEFDnBvb2xBZGRyZXNzU3RyBAlscEFzc2V0SWQJANkEAQkAkQMCBQNjZmcFEGlkeFBvb2xMUEFzc2V0SWQECmFtdEFzc2V0SWQJAJEDAgUDY2ZnBQ1pZHhBbXRBc3NldElkBAxwcmljZUFzc2V0SWQJAJEDAgUDY2ZnBQ9pZHhQcmljZUFzc2V0SWQEDXBvb2xMcEJhbGFuY2UICQEFdmFsdWUBCQDsBwEFCWxwQXNzZXRJZAhxdWFudGl0eQQSYWNjQW10QXNzZXRCYWxhbmNlCgABQAkA/AcEBQtwb29sQWRkcmVzcwIcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQkAzAgCBQphbXRBc3NldElkBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEFGFjY1ByaWNlQXNzZXRCYWxhbmNlCgABQAkA/AcEBQtwb29sQWRkcmVzcwIcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQkAzAgCBQxwcmljZUFzc2V0SWQFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQFcHJpY2UDCQAAAgUNcG9vbExwQmFsYW5jZQAAAAAKAAFACQCRAwIKAAFACQD8BwQFC3Bvb2xBZGRyZXNzAhljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZCQDMCAIFEmFjY0FtdEFzc2V0QmFsYW5jZQkAzAgCBRRhY2NQcmljZUFzc2V0QmFsYW5jZQkAzAgCBQ1wb29sTHBCYWxhbmNlBQNuaWwFA25pbAMJAAECBQFAAglMaXN0W0FueV0FAUAJAAIBCQCsAgIJAAMBBQFAAh4gY291bGRuJ3QgYmUgY2FzdCB0byBMaXN0W0FueV0AAAMJAAECBQFAAgZTdHJpbmcFAUAJAAIBCQCsAgIJAAMBBQFAAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcJAJQKAgUDbmlsBQVwcmljZQECdHgBBnZlcmlmeQAED3RhcmdldFB1YmxpY0tleQQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwBQJwawMJAAECBQckbWF0Y2gwAgRVbml0CAUCdHgPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFD3RhcmdldFB1YmxpY0tleW/LpHw=", "height": 3920158, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: TDSc1W5DduDyHjxhj3MLtAYADUmaT9mudLHzKSKQUY6 Next: 7rUAjFacBGqoF8qBRdkFW74Zsk2ihWKbopLJvD9tpAJs Diff:
OldNewDifferences
660660 let dO = dN._1
661661 let dP = valueOrErrorMessage(scriptHash(addressFromStringValue(af)), ("No script has been found on pool account " + af))
662662 let dQ = getBinaryValue(Q())
663- let dR = value(getString(this, am(toString(dM), toString(dO))))
664- let dS = if ((ci == "WAVES"))
665- then l
666- else pow(10, 0, value(assetInfo(fromBase58String(ci))).decimals, 0, 0, DOWN)
667- let dT = if ((cj == "WAVES"))
668- then l
669- else pow(10, 0, value(assetInfo(fromBase58String(cj))).decimals, 0, 0, DOWN)
670- let dU = Issue(dH, dI, 1, 8, true)
671- let ch = calculateAssetId(dU)
672- let dV = toBase58String(ch)
673- let dW = invoke(addressFromStringValue(af), "activate", [ci, cj], nil)
674- if ((dW == dW))
675- then if ((dW != "success"))
676- then K("Pool initialisation error happened.")
677- else {
678- let dC = addressFromStringValue(be(X()))
679- let dX = invoke(dC, "createOrUpdate", [dV, dH, false], nil)
680- if ((dX == dX))
681- then {
682- let dY = invoke(dC, "addLabel", [dV, h], nil)
663+ let dR = cI(ci, cj)
664+ if (dR)
665+ then K((((("Pool " + ci) + "/") + cj) + " has already been activated."))
666+ else {
667+ let dS = value(getString(this, am(toString(dM), toString(dO))))
668+ let dT = if ((ci == "WAVES"))
669+ then l
670+ else pow(10, 0, value(assetInfo(fromBase58String(ci))).decimals, 0, 0, DOWN)
671+ let dU = if ((cj == "WAVES"))
672+ then l
673+ else pow(10, 0, value(assetInfo(fromBase58String(cj))).decimals, 0, 0, DOWN)
674+ let dV = Issue(dH, dI, 1, 8, true)
675+ let ch = calculateAssetId(dV)
676+ let dW = toBase58String(ch)
677+ let dX = invoke(addressFromStringValue(af), "activate", [ci, cj], nil)
678+ if ((dX == dX))
679+ then if ((dX != "success"))
680+ then K("Pool initialisation error happened.")
681+ else {
682+ let dC = addressFromStringValue(be(X()))
683+ let dY = invoke(dC, "createOrUpdate", [dW, dH, false], nil)
683684 if ((dY == dY))
684685 then {
685- let dZ = invoke(dC, "setLogo", [dV, dK], nil)
686+ let dZ = invoke(dC, "addLabel", [dW, h], nil)
686687 if ((dZ == dZ))
687688 then {
688- let ea = invoke(dC, "addAssetsLink", [ci, cj, dV], nil)
689+ let ea = invoke(dC, "setLogo", [dW, dK], nil)
689690 if ((ea == ea))
690691 then {
691- let eb = invoke(dC, "increaseAssetPoolsNumber", [ci], nil)
692+ let eb = invoke(dC, "addAssetsLink", [ci, cj, dW], nil)
692693 if ((eb == eb))
693- then $Tuple2(((dL._2 ++ dN._2) ++ [dU, Burn(ch, 1), StringEntry(am(toString(dM), toString(dO)), cf(af, toString(o), dV, ci, cj, dS, dT, dM, dO, l, cp)), StringEntry(aw(dV), cq(dM, dO)), StringEntry(ay(toString(dM), toString(dO)), ("%s__" + dV)), StringEntry(aC(af), cq(dM, dO)), StringEntry(aE(dM, dO), af), StringEntry(aG(dV), af), StringEntry(aF(af), dV), IntegerEntry(ae(af), dJ), IntegerEntry(aB(af), i)]), dV)
694+ then {
695+ let ec = invoke(dC, "increaseAssetPoolsNumber", [ci], nil)
696+ if ((ec == ec))
697+ then $Tuple2(((dL._2 ++ dN._2) ++ [dV, Burn(ch, 1), StringEntry(am(toString(dM), toString(dO)), cf(af, toString(o), dW, ci, cj, dT, dU, dM, dO, l, cp)), StringEntry(aw(dW), cq(dM, dO)), StringEntry(ay(toString(dM), toString(dO)), ("%s__" + dW)), StringEntry(aC(af), cq(dM, dO)), StringEntry(aE(dM, dO), af), StringEntry(aG(dW), af), StringEntry(aF(af), dW), IntegerEntry(ae(af), dJ), IntegerEntry(aB(af), i)]), dW)
698+ else throw("Strict value is not equal to itself.")
699+ }
694700 else throw("Strict value is not equal to itself.")
695701 }
696702 else throw("Strict value is not equal to itself.")
699705 }
700706 else throw("Strict value is not equal to itself.")
701707 }
702- else throw("Strict value is not equal to itself.")
703- }
704- else throw("Strict value is not equal to itself.")
708+ else throw("Strict value is not equal to itself.")
709+ }
705710 }
706711 else throw("Strict value is not equal to itself.")
707712 }
709714
710715
711716 @Callable(bP)
712-func managePool (af,ec) = {
717+func managePool (af,ed) = {
713718 let dx = bQ(bP)
714719 if ((dx == dx))
715720 then {
716- let ed = ct(af)
717- let cg = ed[w]
718- let dV = ed[x]
719- let ci = ed[y]
720- let cj = ed[z]
721- let dS = parseIntValue(ed[A])
722- let dT = parseIntValue(ed[B])
723- let dM = parseIntValue(ed[C])
724- let dO = parseIntValue(ed[D])
725- let ee = parseIntValue(ed[E])
726- let cp = ed[F]
727-[StringEntry(am(toString(dM), toString(dO)), cf(af, toString(ec), dV, ci, cj, dS, dT, dM, dO, ee, cp))]
721+ let ee = ct(af)
722+ let cg = ee[w]
723+ let dW = ee[x]
724+ let ci = ee[y]
725+ let cj = ee[z]
726+ let dT = parseIntValue(ee[A])
727+ let dU = parseIntValue(ee[B])
728+ let dM = parseIntValue(ee[C])
729+ let dO = parseIntValue(ee[D])
730+ let ef = parseIntValue(ee[E])
731+ let cp = ee[F]
732+[StringEntry(am(toString(dM), toString(dO)), cf(af, toString(ed), dW, ci, cj, dT, dU, dM, dO, ef, cp))]
728733 }
729734 else throw("Strict value is not equal to itself.")
730735 }
732737
733738
734739 @Callable(bP)
735-func emit (ef) = {
736- let eg = bP.caller
737- let eh = bP.originCaller
738- let ei = valueOrErrorMessage(getString(aF(toString(eg))), "Invalid LP address called me.")
739- let ej = fromBase58String(ei)
740+func emit (eg) = {
741+ let eh = bP.caller
742+ let ei = bP.originCaller
743+ let ej = valueOrErrorMessage(getString(aF(toString(eh))), "Invalid LP address called me.")
744+ let ek = fromBase58String(ej)
740745 let dB = split(valueOrElse(getString(T()), n), m)
741746 let dA = addressFromStringValue(valueOrErrorMessage(getString(S()), "Legacy factory contract does not exists."))
742- if ((0 >= ef))
747+ if ((0 >= eg))
743748 then nil
744- else if (containsElement(dB, toString(eg)))
749+ else if (containsElement(dB, toString(eh)))
745750 then $Tuple2(nil, dA)
746- else $Tuple2([Reissue(ej, ef, true), ScriptTransfer(bP.caller, ef, ej)], "success")
751+ else $Tuple2([Reissue(ek, eg, true), ScriptTransfer(bP.caller, eg, ek)], "success")
747752 }
748753
749754
750755
751756 @Callable(bP)
752-func burn (ek) = {
753- let eg = bP.caller
754- let eh = bP.originCaller
755- let el = value(bP.payments[0])
756- let em = value(el.amount)
757- let en = toBase58String(value(el.assetId))
758- let eo = valueOrErrorMessage(getString(aF(toString(eg))), "Invalid LP address called me.")
759- if ((en != eo))
757+func burn (el) = {
758+ let eh = bP.caller
759+ let ei = bP.originCaller
760+ let em = value(bP.payments[0])
761+ let en = value(em.amount)
762+ let eo = toBase58String(value(em.assetId))
763+ let ep = valueOrErrorMessage(getString(aF(toString(eh))), "Invalid LP address called me.")
764+ if ((eo != ep))
760765 then K("Invalid asset passed.")
761- else if ((ek != em))
766+ else if ((el != en))
762767 then K("Invalid amount passed.")
763768 else {
764- let ej = fromBase58String(eo)
765- $Tuple2([Burn(ej, ek)], "success")
769+ let ek = fromBase58String(ep)
770+ $Tuple2([Burn(ek, el)], "success")
766771 }
767772 }
768773
769774
770775
771776 @Callable(bP)
772-func modifyWeight (ch,ep) = {
777+func modifyWeight (ch,eq) = {
773778 let dx = if ((toBase58String(bP.caller.bytes) == valueOrElse(getString(this, Y()), "")))
774779 then true
775780 else bQ(bP)
776781 if ((dx == dx))
777782 then {
778783 let aD = be(aG(ch))
779- let eq = ae(aD)
780- let er = ae(g)
781- let es = valueOrElse(getInteger(er), 0)
782- let dJ = valueOrElse(getInteger(eq), 0)
783- let et = ep
784+ let er = ae(aD)
785+ let es = ae(g)
786+ let et = valueOrElse(getInteger(es), 0)
787+ let dJ = valueOrElse(getInteger(er), 0)
788+ let eu = eq
784789 let bF = split(be(O()), m)
785790 let dt = bH(bF)
786- let eu = invoke(dt, "onModifyWeight", [ch, aD], nil)
787- if ((eu == eu))
791+ let ev = invoke(dt, "onModifyWeight", [ch, aD], nil)
792+ if ((ev == ev))
788793 then {
789- let ev = if ((es == 0))
794+ let ew = if ((et == 0))
790795 then nil
791- else [IntegerEntry(er, 0)]
792- let ew = ag(aD, 0)
793- let ex = getInteger(ew)
794- let ey = if ((ex == unit))
796+ else [IntegerEntry(es, 0)]
797+ let ex = ag(aD, 0)
798+ let ey = getInteger(ex)
799+ let ez = if ((ey == unit))
795800 then nil
796- else [DeleteEntry(ew)]
797- (([IntegerEntry(eq, et)] ++ ev) ++ ey)
801+ else [DeleteEntry(ex)]
802+ (([IntegerEntry(er, eu)] ++ ew) ++ ez)
798803 }
799804 else throw("Strict value is not equal to itself.")
800805 }
804809
805810
806811 @Callable(bP)
807-func modifyWeights (ez,eA,eB,eC) = {
812+func modifyWeights (eA,eB,eC,eD) = {
808813 let dx = bQ(bP)
809814 if ((dx == dx))
810815 then {
811- let eD = ((5 * f) / 100)
812816 let eE = ((5 * f) / 100)
813817 let eF = ((5 * f) / 100)
818+ let eG = ((5 * f) / 100)
814819 let bF = split(be(O()), m)
815- let eG = bH(bF)
816- let eH = bI(bF)
817- let eI = ae(ez)
820+ let eH = bH(bF)
821+ let eI = bI(bF)
818822 let eJ = ae(eA)
819823 let eK = ae(eB)
820824 let eL = ae(eC)
821- let eM = bh(eI)
825+ let eM = ae(eD)
822826 let eN = bh(eJ)
823- let eO = (eM - eF)
824- let eP = (eN - eF)
825- if ((0 >= eO))
826- then K(("invalid btcWeightNew: " + toString(eO)))
827- else if ((0 >= eP))
828- then K(("invalid ethWeightNew: " + toString(eP)))
827+ let eO = bh(eK)
828+ let eP = (eN - eG)
829+ let eQ = (eO - eG)
830+ if ((0 >= eP))
831+ then K(("invalid btcWeightNew: " + toString(eP)))
832+ else if ((0 >= eQ))
833+ then K(("invalid ethWeightNew: " + toString(eQ)))
829834 else {
830- let eQ = be(aF(ez))
831835 let eR = be(aF(eA))
832836 let eS = be(aF(eB))
833837 let eT = be(aF(eC))
834- let eU = invoke(eG, "onModifyWeight", [eQ, ez], nil)
835- if ((eU == eU))
838+ let eU = be(aF(eD))
839+ let eV = invoke(eH, "onModifyWeight", [eR, eA], nil)
840+ if ((eV == eV))
836841 then {
837- let eV = invoke(eG, "onModifyWeight", [eR, eA], nil)
838- if ((eV == eV))
842+ let eW = invoke(eH, "onModifyWeight", [eS, eB], nil)
843+ if ((eW == eW))
839844 then {
840- let eW = invoke(eG, "onModifyWeight", [eS, eB], nil)
841- if ((eW == eW))
845+ let eX = invoke(eH, "onModifyWeight", [eT, eC], nil)
846+ if ((eX == eX))
842847 then {
843- let eX = invoke(eG, "onModifyWeight", [eT, eC], nil)
844- if ((eX == eX))
845- then [IntegerEntry(eI, eO), IntegerEntry(eJ, eP), IntegerEntry(eK, eD), IntegerEntry(eL, eE), IntegerEntry(ag(ez, 0), eM), IntegerEntry(ag(eA, 0), eN), IntegerEntry(ag(eB, 0), eD), IntegerEntry(ag(eC, 0), eE)]
848+ let eY = invoke(eH, "onModifyWeight", [eU, eD], nil)
849+ if ((eY == eY))
850+ then [IntegerEntry(eJ, eP), IntegerEntry(eK, eQ), IntegerEntry(eL, eE), IntegerEntry(eM, eF), IntegerEntry(ag(eA, 0), eN), IntegerEntry(ag(eB, 0), eO), IntegerEntry(ag(eC, 0), eE), IntegerEntry(ag(eD, 0), eF)]
846851 else throw("Strict value is not equal to itself.")
847852 }
848853 else throw("Strict value is not equal to itself.")
859864
860865 @Callable(bP)
861866 func checkWxEmissionPoolLabel (aI,aJ) = {
862- let eY = {
867+ let eZ = {
863868 let bl = getBoolean(aH(aI, aJ))
864869 if ($isInstanceOf(bl, "Boolean"))
865870 then {
868873 }
869874 else false
870875 }
871- $Tuple2(nil, eY)
876+ $Tuple2(nil, eZ)
872877 }
873878
874879
903908 if ((dx == dx))
904909 then {
905910 let dE = bJ()
906- let eZ = if ((size(dE) > 0))
911+ let fa = if ((size(dE) > 0))
907912 then true
908913 else K("invalid price assets")
909- if ((eZ == eZ))
914+ if ((fa == fa))
910915 then {
911- func fa (fb,fc) = {
912- let cZ = invoke(this, "deleteWxEmissionPoolLabel", [aX, fc], nil)
916+ func fb (fc,fd) = {
917+ let cZ = invoke(this, "deleteWxEmissionPoolLabel", [aX, fd], nil)
913918 if ((cZ == cZ))
914919 then unit
915920 else throw("Strict value is not equal to itself.")
916921 }
917922
918- let fd = {
919- let fe = dE
920- let ff = size(fe)
921- let fg = unit
922- func fh (fi,fj) = if ((fj >= ff))
923- then fi
924- else fa(fi, fe[fj])
923+ let fe = {
924+ let ff = dE
925+ let fg = size(ff)
926+ let fh = unit
927+ func fi (fj,fk) = if ((fk >= fg))
928+ then fj
929+ else fb(fj, ff[fk])
925930
926- func fk (fi,fj) = if ((fj >= ff))
927- then fi
931+ func fl (fj,fk) = if ((fk >= fg))
932+ then fj
928933 else throw("List size exceeds 13")
929934
930- fk(fh(fh(fh(fh(fh(fh(fh(fh(fh(fh(fh(fh(fh(fg, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13)
935+ fl(fi(fi(fi(fi(fi(fi(fi(fi(fi(fi(fi(fi(fi(fh, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13)
931936 }
932- if ((fd == fd))
937+ if ((fe == fe))
933938 then $Tuple2(nil, unit)
934939 else throw("Strict value is not equal to itself.")
935940 }
942947
943948 @Callable(bP)
944949 func isPoolOneTokenOperationsDisabledREADONLY (af) = {
945- let ed = ct(af)
946- let aq = $Tuple2(parseIntValue(ed[C]), parseIntValue(ed[D]))
947- let fl = valueOrElse(getBoolean(ap(aq)), false)
948- let fm = valueOrElse(getBoolean(as()), false)
949- $Tuple2(nil, if (fm)
950+ let ee = ct(af)
951+ let aq = $Tuple2(parseIntValue(ee[C]), parseIntValue(ee[D]))
952+ let fm = valueOrElse(getBoolean(ap(aq)), false)
953+ let fn = valueOrElse(getBoolean(as()), false)
954+ $Tuple2(nil, if (fn)
950955 then true
951- else fl)
956+ else fm)
952957 }
953958
954959
955960
956961 @Callable(bP)
957962 func isPoolSwapDisabledREADONLY (af) = {
958- let ed = ct(af)
959- let aq = $Tuple2(parseIntValue(ed[C]), parseIntValue(ed[D]))
960- let fn = valueOrElse(getBoolean(at(aq)), false)
961- let fo = valueOrElse(getBoolean(av()), false)
962- $Tuple2(nil, if (fo)
963+ let ee = ct(af)
964+ let aq = $Tuple2(parseIntValue(ee[C]), parseIntValue(ee[D]))
965+ let fo = valueOrElse(getBoolean(at(aq)), false)
966+ let fp = valueOrElse(getBoolean(av()), false)
967+ $Tuple2(nil, if (fp)
963968 then true
964- else fn)
969+ else fo)
965970 }
966971
967972
968973
969974 @Callable(bP)
970975 func getInFeeREADONLY (af) = {
971- let fp = cF(aK(af), aL(), 0)
972- $Tuple2(nil, fp)
976+ let fq = cF(aK(af), aL(), 0)
977+ $Tuple2(nil, fq)
973978 }
974979
975980
976981
977982 @Callable(bP)
978983 func getOutFeeREADONLY (af) = {
979- let fp = cF(aN(af), aO(), fraction(10, b, 10000))
980- $Tuple2(nil, fp)
984+ let fq = cF(aN(af), aO(), fraction(10, b, 10000))
985+ $Tuple2(nil, fq)
981986 }
982987
983988
984989
985990 @Callable(bP)
986-func getSwapFeeREADONLY (fq) = {
987- let fr = {
988- let bl = getString(this, aM(fq))
991+func getSwapFeeREADONLY (fr) = {
992+ let fs = {
993+ let bl = getString(this, aM(fr))
989994 if ($isInstanceOf(bl, "String"))
990995 then {
991996 let bm = bl
992- let fs = split(bm, m)
993- let ft = parseIntValue(fs[1])
994- let fu = parseIntValue(fs[2])
995- $Tuple2(ft, fu)
997+ let ft = split(bm, m)
998+ let fu = parseIntValue(ft[1])
999+ let fv = parseIntValue(ft[2])
1000+ $Tuple2(fu, fv)
9961001 }
9971002 else if ($isInstanceOf(bl, "Unit"))
9981003 then unit
9991004 else throw("Match error")
10001005 }
1001- $Tuple2(nil, fr)
1006+ $Tuple2(nil, fs)
10021007 }
10031008
10041009
10051010
10061011 @Callable(bP)
1007-func poolInfoREADONLY (fv,fw) = {
1008- let fx = getInteger(this, ak(fv))
1012+func poolInfoREADONLY (fw,fx) = {
10091013 let fy = getInteger(this, ak(fw))
1010- let fz = getString(this, aE(value(fx), value(fy)))
1011- let fA = getString(this, aF(value(fz)))
1012- let fB = if (if (isDefined(fx))
1013- then isDefined(fy)
1014+ let fz = getInteger(this, ak(fx))
1015+ let fA = getString(this, aE(value(fy), value(fz)))
1016+ let fB = getString(this, aF(value(fA)))
1017+ let dR = if (if (isDefined(fy))
1018+ then isDefined(fz)
10141019 else false)
1015- then isDefined(fz)
1020+ then isDefined(fA)
10161021 else false
1017- let fC = if (fB)
1018- then $Tuple2(addressFromStringValue(value(fz)), bi(value(fA)))
1022+ let fC = if (dR)
1023+ then $Tuple2(addressFromStringValue(value(fA)), bi(value(fB)))
10191024 else unit
10201025 $Tuple2(nil, fC)
10211026 }
10451050
10461051
10471052 @Callable(bP)
1048-func getPoolConfigByLpAssetIdREADONLY (dV) = {
1049- let cu = split(be(aw(dV)), m)
1053+func getPoolConfigByLpAssetIdREADONLY (dW) = {
1054+ let cu = split(be(aw(dW)), m)
10501055 let an = cu[1]
10511056 let ao = cu[2]
10521057 let cL = split(be(am(an, ao)), m)
10861091
10871092 @Callable(bP)
10881093 func deletePool (aD) = {
1089- let ed = ct(aD)
1094+ let ee = ct(aD)
10901095 let dx = if ((toString(bP.caller) == cP(aD)))
10911096 then if (cW(aD))
10921097 then true
10991104 else K("Pool weight is not Zero")
11001105 if ((fH == fH))
11011106 then {
1102- let fI = if ((ed[w] == toString(r)))
1107+ let fI = if ((ee[w] == toString(r)))
11031108 then true
11041109 else K("Pool must be SHUTDOWN (4)")
11051110 if ((fI == fI))
11381143
11391144
11401145 @Callable(bP)
1141-func getPrice (fq) = {
1142- let af = addressFromStringValue(fq)
1143- let cL = ct(fq)
1146+func getPrice (fr) = {
1147+ let af = addressFromStringValue(fr)
1148+ let cL = ct(fr)
11441149 let ch = fromBase58String(cL[x])
11451150 let fN = cL[y]
11461151 let aJ = cL[z]
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = 1000000000000
99
1010 let d = 18
1111
1212 let e = toBigInt(1000000000000000000)
1313
1414 let f = b
1515
1616 let g = "GWXvirtualPOOL"
1717
1818 let h = "POOLS_LP"
1919
2020 let i = 2000000
2121
2222 let j = "WAVES"
2323
2424 let k = "factory_v2.ride"
2525
2626 let l = ((100 * 1000) * 1000)
2727
2828 let m = "__"
2929
3030 let n = ""
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 1
4141
4242 let t = 2
4343
4444 let u = 3
4545
4646 let v = 1
4747
4848 let w = 2
4949
5050 let x = 3
5151
5252 let y = 4
5353
5454 let z = 5
5555
5656 let A = 6
5757
5858 let B = 7
5959
6060 let C = 8
6161
6262 let D = 9
6363
6464 let E = 10
6565
6666 let F = 11
6767
6868 let G = "WX_EMISSION"
6969
7070 let H = [G]
7171
7272 func I (J) = makeString([k, ": ", J], "")
7373
7474
7575 func K (J) = throw(I(J))
7676
7777
7878 func L () = "%s__allowedLpScriptHash"
7979
8080
8181 func M () = "%s__allowedLpStableScriptHash"
8282
8383
8484 func N () = "%s__swapContract"
8585
8686
8787 func O () = "%s__factoryConfig"
8888
8989
9090 func P () = "%s__lpTokensList"
9191
9292
9393 func Q () = "%s%s__pool__scriptHash"
9494
9595
9696 func R () = "%s%s__matcher__publicKey"
9797
9898
9999 func S () = "%s__legacyFactoryContract"
100100
101101
102102 func T () = "%s__legacyPools"
103103
104104
105105 func U () = "%s__managerPublicKey"
106106
107107
108108 func V () = "%s__managerVaultAddress"
109109
110110
111111 func W () = "%s__adminPubKeys"
112112
113113
114114 func X () = "%s__assetsStoreContract"
115115
116116
117117 func Y () = "%s__votingEmissionContract"
118118
119119
120120 func Z () = "%s__userPoolsContract"
121121
122122
123123 func aa () = makeString(["%s", "priceAssets"], m)
124124
125125
126126 func ab () = "%s__priceDecimals"
127127
128128
129129 func ac () = "%s__shutdown"
130130
131131
132132 func ad () = "%s__nextInternalAssetId"
133133
134134
135135 func ae (af) = ("%s%s__poolWeight__" + af)
136136
137137
138138 func ag (af,ah) = ((("%s%s__poolWeight__" + af) + "__") + toString(ah))
139139
140140
141141 func ai (aj) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(aj))
142142
143143
144144 func ak (al) = ("%s%s%s__mappings__baseAsset2internalId__" + al)
145145
146146
147147 func am (an,ao) = (((("%d%d%s__" + an) + "__") + ao) + "__config")
148148
149149
150150 func ap (aq) = {
151151 let ar = aq
152152 let an = ar._1
153153 let ao = ar._2
154154 makeString(["%d%d%s", toString(an), toString(ao), "oneTokenOperationsDisabled"], m)
155155 }
156156
157157
158158 func as () = makeString(["%s", "oneTokenOperationsDisabled"], m)
159159
160160
161161 func at (aq) = {
162162 let au = aq
163163 let an = au._1
164164 let ao = au._2
165165 makeString(["%d%d%s", toString(an), toString(ao), "swapDisabled"], m)
166166 }
167167
168168
169169 func av () = makeString(["%s", "swapDisabled"], m)
170170
171171
172172 func aw (ax) = (("%s%s%s__" + ax) + "__mappings__lpAsset2Pool")
173173
174174
175175 func ay (az,aA) = (((("%d%d%s%s__" + az) + "__") + aA) + "__mappings__PoolAssets2LpAsset")
176176
177177
178178 func aB (af) = ("%s%s__spread__" + af)
179179
180180
181181 func aC (aD) = (("%s%s%s__" + aD) + "__mappings__poolContract2PoolAssets")
182182
183183
184184 func aE (az,aA) = (((("%d%d%s%s__" + toString(az)) + "__") + toString(aA)) + "__mappings__poolAssets2PoolContract")
185185
186186
187187 func aF (aD) = (("%s%s%s__" + aD) + "__mappings__poolContract2LpAsset")
188188
189189
190190 func aG (ax) = (("%s%s%s__" + ax) + "__mappings__lpAsset2PoolContract")
191191
192192
193193 func aH (aI,aJ) = ((("%s%s%s__wxEmission__" + aI) + "__") + aJ)
194194
195195
196196 func aK (af) = ("%s%s__inFee__" + af)
197197
198198
199199 func aL () = "%s__inFeeDefault"
200200
201201
202202 func aM (af) = ("%s%s__swapFee__" + af)
203203
204204
205205 func aN (af) = ("%s%s__outFee__" + af)
206206
207207
208208 func aO () = "%s__outFeeDefault"
209209
210210
211211 func aP (af) = ("%s%s__skipOrderValidation__" + af)
212212
213213
214214 func aQ (af) = ("%s%s__changeAmpDelay__" + af)
215215
216216
217217 func aR (af) = ("%s%s__changeAmpDelta__" + af)
218218
219219
220220 func aS (af) = ("%s%s__changeAmpTarget__" + af)
221221
222222
223223 func aT () = "%s__sWavesProxyAddress"
224224
225225
226226 func aU () = "%s__sWavesAssetId"
227227
228228
229229 func aV () = "%s__stakingProfitAddress"
230230
231231
232232 func aW (af,aX) = makeString(["%s%s%s", "leasedRatio", af, aX], m)
233233
234234
235235 func aY (aX) = makeString(["%s%s", "leasedRatioDefault", aX], m)
236236
237237
238238 func aZ (af,aX) = makeString(["%s%s%s", "leasedRatioTolerance", af, aX], m)
239239
240240
241241 func ba (af,aX) = makeString(["%s%s%s", "minBalance", af, aX], m)
242242
243243
244244 func bb (aX) = makeString(["%s%s", "minBalanceDefault", aX], m)
245245
246246
247247 func bc (bd) = makeString(["%s%s", "whitelisted", toString(bd)], m)
248248
249249
250250 func be (bf) = valueOrErrorMessage(getString(this, bf), ("No data for this.key=" + bf))
251251
252252
253253 func bg (bf) = valueOrErrorMessage(getBoolean(this, bf), ("No data for this.key=" + bf))
254254
255255
256256 func bh (bf) = valueOrErrorMessage(getInteger(this, bf), ("No data for this.key=" + bf))
257257
258258
259259 func bi (bj) = if ((bj == j))
260260 then unit
261261 else fromBase58String(bj)
262262
263263
264264 func bk () = {
265265 let bl = getString(V())
266266 if ($isInstanceOf(bl, "String"))
267267 then {
268268 let bm = bl
269269 addressFromStringValue(bm)
270270 }
271271 else this
272272 }
273273
274274
275275 func bn (bo,bp) = fraction(toBigInt(bo), e, toBigInt(bp))
276276
277277
278278 func bq (br,bs) = toInt(fraction(br, toBigInt(bs), e))
279279
280280
281281 let bt = 1
282282
283283 let bu = 2
284284
285285 let bv = 3
286286
287287 let bw = 4
288288
289289 let bx = 5
290290
291291 let by = 6
292292
293293 let bz = 7
294294
295295 let bA = 8
296296
297297 let bB = 9
298298
299299 let bC = 10
300300
301301 let bD = 11
302302
303303 func bE (bF) = addressFromStringValue(bF[bu])
304304
305305
306306 func bG (bF) = addressFromStringValue(bF[bx])
307307
308308
309309 func bH (bF) = addressFromStringValue(bF[bt])
310310
311311
312312 func bI (bF) = addressFromStringValue(bF[bC])
313313
314314
315315 func bJ () = {
316316 let bl = getString(aa())
317317 if ($isInstanceOf(bl, "String"))
318318 then {
319319 let bm = bl
320320 if ((size(bm) == 0))
321321 then nil
322322 else split_4C(bm, m)
323323 }
324324 else nil
325325 }
326326
327327
328328 func bK () = {
329329 let bL = bk()
330330 let bl = getString(bL, U())
331331 if ($isInstanceOf(bl, "String"))
332332 then {
333333 let bm = bl
334334 fromBase58String(bm)
335335 }
336336 else if ($isInstanceOf(bl, "Unit"))
337337 then unit
338338 else throw("Match error")
339339 }
340340
341341
342342 let bM = K("Permission denied")
343343
344344 let bN = K("Test error here")
345345
346346 func bO (bP) = if ((bP.caller == this))
347347 then true
348348 else bM
349349
350350
351351 func bQ (bP) = {
352352 let bl = bK()
353353 if ($isInstanceOf(bl, "ByteVector"))
354354 then {
355355 let bR = bl
356356 if ((bP.callerPublicKey == bR))
357357 then true
358358 else bM
359359 }
360360 else if ($isInstanceOf(bl, "Unit"))
361361 then bO(bP)
362362 else throw("Match error")
363363 }
364364
365365
366366 func bS (bT,bU,bV,bW,bX,bY,bZ,ca,cb,cc,cd) = makeString(["%s%s%s%s%s%s%s%s%s%s%s", bT, bU, bV, bW, bX, bY, bZ, ca, cb, cc, cd], m)
367367
368368
369369 func ce (bT,bU,bV,bW,bX,bY,bZ) = makeString(["%s%s%s%s%s%s", bT, bU, bV, bW, bX, bY, bZ], m)
370370
371371
372372 func cf (af,cg,ch,ci,cj,ck,cl,cm,cn,co,cp) = makeString(["%s%d%s%s%s%d%d%d%d%d%s", af, cg, ch, ci, cj, toString(ck), toString(cl), toString(cm), toString(cn), toString(co), cp], m)
373373
374374
375375 func cq (cr,cs) = makeString(["%d%d", toString(cr), toString(cs)], m)
376376
377377
378378 func ct (af) = {
379379 let cu = split(be(aC(af)), m)
380380 let an = cu[1]
381381 let ao = cu[2]
382382 split(be(am(an, ao)), m)
383383 }
384384
385385
386386 func cv (cw,cx) = {
387387 let cy = valueOrElse(getInteger(this, ak(cw)), 0)
388388 let cz = valueOrElse(getInteger(this, ad()), 0)
389389 let cA = if ((cy == 0))
390390 then {
391391 let cB = (cz + cx)
392392 $Tuple3(cB, [IntegerEntry(ad(), cB), IntegerEntry(ak(cw), cB), StringEntry(ai(cB), cw)], true)
393393 }
394394 else $Tuple3(cy, nil, false)
395395 cA
396396 }
397397
398398
399399 func cC (bP) = {
400400 let cD = split(valueOrElse(getString(W()), n), m)
401401 if (containsElement(cD, toBase58String(bP.callerPublicKey)))
402402 then true
403403 else {
404404 let cE = bQ(bP)
405405 if ((cE == cE))
406406 then true
407407 else throw("Strict value is not equal to itself.")
408408 }
409409 }
410410
411411
412412 func cF (bf,cG,cH) = valueOrElse(getInteger(this, bf), valueOrElse(getInteger(this, cG), cH))
413413
414414
415415 func cI (aI,aJ) = {
416416 let an = getInteger(ak(aI))
417417 let ao = getInteger(ak(aJ))
418418 if (if ((an == unit))
419419 then true
420420 else (ao == unit))
421421 then false
422422 else {
423423 let cJ = toString(value(an))
424424 let cK = toString(value(ao))
425425 let cL = getString(am(cJ, cK))
426426 let cM = getString(am(cK, cJ))
427427 let cN = if ((cL != unit))
428428 then true
429429 else (cM != unit)
430430 cN
431431 }
432432 }
433433
434434
435435 func cO (aD) = {
436436 let cu = {
437437 let bl = getString(aC(aD))
438438 if ($isInstanceOf(bl, "String"))
439439 then {
440440 let bm = bl
441441 split(bm, m)
442442 }
443443 else K(makeString([aD, "pool is not found"], " "))
444444 }
445445 let an = parseIntValue(cu[1])
446446 let ao = parseIntValue(cu[2])
447447 let aI = getStringValue(ai(an))
448448 let aJ = getStringValue(ai(ao))
449449 let ch = getStringValue(aF(aD))
450450 $Tuple5(aI, aJ, ch, an, ao)
451451 }
452452
453453
454454 func cP (aD) = {
455455 let cQ = cO(aD)
456456 let aI = cQ._1
457457 let aJ = cQ._2
458458 let ch = cQ._3
459459 let an = cQ._4
460460 let ao = cQ._5
461461 let cR = addressFromStringValue(getStringValue(Z()))
462462 let cS = invoke(cR, "getPoolCreatorREADONLY", [aI, aJ], nil)
463463 cS
464464 }
465465
466466
467467 func cT (cU,cV) = {
468468 let bd = addressFromStringValue(cU)
469469 if ((cV == "WAVES"))
470470 then wavesBalance(bd).regular
471471 else {
472472 let aX = fromBase58String(cV)
473473 assetBalance(bd, aX)
474474 }
475475 }
476476
477477
478478 func cW (aD) = {
479479 let cX = cO(aD)
480480 let aI = cX._1
481481 let aJ = cX._2
482482 let ch = cX._3
483483 let an = cX._4
484484 let ao = cX._5
485485 if ((cT(aD, aI) == 0))
486486 then (cT(aD, aJ) == 0)
487487 else false
488488 }
489489
490490
491491 @Callable(bP)
492492 func getSwapContractREADONLY () = $Tuple2(nil, be(N()))
493493
494494
495495
496496 @Callable(bP)
497497 func getPoolLeaseConfigREADONLY (af,aX) = {
498498 let cY = {
499499 let bl = getInteger(this, aW(af, aX))
500500 if ($isInstanceOf(bl, "Int"))
501501 then {
502502 let cZ = bl
503503 $Tuple2(true, min([100, max([0, cZ])]))
504504 }
505505 else {
506506 let da = getInteger(this, aY(aX))
507507 if ($isInstanceOf(da, "Int"))
508508 then {
509509 let db = da
510510 $Tuple2(true, min([100, max([0, db])]))
511511 }
512512 else $Tuple2(false, 0)
513513 }
514514 }
515515 let dc = cY._1
516516 let dd = cY._2
517517 let de = {
518518 let bl = getInteger(this, ba(af, aX))
519519 if ($isInstanceOf(bl, "Int"))
520520 then {
521521 let df = bl
522522 max([0, df])
523523 }
524524 else {
525525 let da = getInteger(this, bb(aX))
526526 if ($isInstanceOf(da, "Int"))
527527 then {
528528 let dg = da
529529 max([0, dg])
530530 }
531531 else 0
532532 }
533533 }
534534 let dh = if ((aX == "WAVES"))
535535 then $Tuple3(valueOrElse(getString(this, aT()), ""), getString(this, valueOrElse(aU(), "")), c)
536536 else $Tuple3("", "", 0)
537537 let di = dh._1
538538 let dj = dh._2
539539 let dk = dh._3
540540 let dl = valueOrElse(getString(this, aV()), "")
541541 $Tuple2(nil, $Tuple7(dc, dd, de, di, dj, dk, dl))
542542 }
543543
544544
545545
546546 @Callable(bP)
547547 func getLpAssetFromPoolAssetsREADONLY (dm,dn) = if (if ((dm == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
548548 then (dn == "WAVES")
549549 else false)
550550 then $Tuple2(nil, unit)
551551 else {
552552 let do = value(getInteger(this, ak(dm)))
553553 let dp = value(getInteger(this, ak(dn)))
554554 let dq = getString(this, ay(toString(do), toString(dp)))
555555 let dr = if ((dq == unit))
556556 then unit
557557 else drop(value(dq), 4)
558558 $Tuple2(nil, dr)
559559 }
560560
561561
562562
563563 @Callable(bP)
564564 func getPoolAddressFromLpAssetREADONLY (ds) = $Tuple2(nil, valueOrElse(getString(this, aG(ds)), ""))
565565
566566
567567
568568 @Callable(bP)
569569 func constructor (dt,du,bV,bW,bX,bY,dv,dw) = {
570570 let dx = bQ(bP)
571571 if ((dx == dx))
572572 then [StringEntry(O(), ce(dt, du, bV, bW, bX, bY, dv)), IntegerEntry(ab(), dw)]
573573 else throw("Strict value is not equal to itself.")
574574 }
575575
576576
577577
578578 @Callable(bP)
579579 func constructorV2 (dy) = {
580580 let dx = bQ(bP)
581581 if ((dx == dx))
582582 then {
583583 let dz = addressFromPublicKey(fromBase58String(dy))
584584 if ((dz == dz))
585585 then [StringEntry(R(), dy)]
586586 else throw("Strict value is not equal to itself.")
587587 }
588588 else throw("Strict value is not equal to itself.")
589589 }
590590
591591
592592
593593 @Callable(bP)
594594 func constructorV3 (ca,cb,cc,cd) = {
595595 let dx = bQ(bP)
596596 if ((dx == dx))
597597 then {
598598 let bF = split(be(O()), m)
599599 [StringEntry(O(), bS(bF[1], bF[2], bF[3], bF[4], bF[5], bF[6], bF[7], ca, cb, cc, cd))]
600600 }
601601 else throw("Strict value is not equal to itself.")
602602 }
603603
604604
605605
606606 @Callable(bP)
607607 func constructorV4 (dA,dB) = {
608608 let dx = bQ(bP)
609609 if ((dx == dx))
610610 then [StringEntry(S(), dA), StringEntry(T(), makeString(dB, m))]
611611 else throw("Strict value is not equal to itself.")
612612 }
613613
614614
615615
616616 @Callable(bP)
617617 func constructorV5 (dC) = {
618618 let dx = bQ(bP)
619619 if ((dx == dx))
620620 then [StringEntry(X(), dC)]
621621 else throw("Strict value is not equal to itself.")
622622 }
623623
624624
625625
626626 @Callable(bP)
627627 func constructorV6 (dD,dE) = {
628628 let dF = [bQ(bP), if ((addressFromString(dD) != unit))
629629 then true
630630 else "invalid voting emission contract address"]
631631 if ((dF == dF))
632632 then [StringEntry(Y(), dD), StringEntry(aa(), makeString(dE, m))]
633633 else throw("Strict value is not equal to itself.")
634634 }
635635
636636
637637
638638 @Callable(bP)
639639 func setAdmins (dG) = {
640640 let dx = bQ(bP)
641641 if ((dx == dx))
642642 then [StringEntry(W(), makeString(dG, m))]
643643 else throw("Strict value is not equal to itself.")
644644 }
645645
646646
647647
648648 @Callable(bP)
649649 func activateNewPool (af,ci,cj,dH,dI,dJ,cp,dK) = {
650650 let dx = cC(bP)
651651 if ((dx == dx))
652652 then if (isDefined(getString(aC(af))))
653653 then K((("Pool address " + af) + " already registered."))
654654 else {
655655 let dL = cv(ci, 1)
656656 let dM = dL._1
657657 let dN = cv(cj, if (dL._3)
658658 then 2
659659 else 1)
660660 let dO = dN._1
661661 let dP = valueOrErrorMessage(scriptHash(addressFromStringValue(af)), ("No script has been found on pool account " + af))
662662 let dQ = getBinaryValue(Q())
663- let dR = value(getString(this, am(toString(dM), toString(dO))))
664- let dS = if ((ci == "WAVES"))
665- then l
666- else pow(10, 0, value(assetInfo(fromBase58String(ci))).decimals, 0, 0, DOWN)
667- let dT = if ((cj == "WAVES"))
668- then l
669- else pow(10, 0, value(assetInfo(fromBase58String(cj))).decimals, 0, 0, DOWN)
670- let dU = Issue(dH, dI, 1, 8, true)
671- let ch = calculateAssetId(dU)
672- let dV = toBase58String(ch)
673- let dW = invoke(addressFromStringValue(af), "activate", [ci, cj], nil)
674- if ((dW == dW))
675- then if ((dW != "success"))
676- then K("Pool initialisation error happened.")
677- else {
678- let dC = addressFromStringValue(be(X()))
679- let dX = invoke(dC, "createOrUpdate", [dV, dH, false], nil)
680- if ((dX == dX))
681- then {
682- let dY = invoke(dC, "addLabel", [dV, h], nil)
663+ let dR = cI(ci, cj)
664+ if (dR)
665+ then K((((("Pool " + ci) + "/") + cj) + " has already been activated."))
666+ else {
667+ let dS = value(getString(this, am(toString(dM), toString(dO))))
668+ let dT = if ((ci == "WAVES"))
669+ then l
670+ else pow(10, 0, value(assetInfo(fromBase58String(ci))).decimals, 0, 0, DOWN)
671+ let dU = if ((cj == "WAVES"))
672+ then l
673+ else pow(10, 0, value(assetInfo(fromBase58String(cj))).decimals, 0, 0, DOWN)
674+ let dV = Issue(dH, dI, 1, 8, true)
675+ let ch = calculateAssetId(dV)
676+ let dW = toBase58String(ch)
677+ let dX = invoke(addressFromStringValue(af), "activate", [ci, cj], nil)
678+ if ((dX == dX))
679+ then if ((dX != "success"))
680+ then K("Pool initialisation error happened.")
681+ else {
682+ let dC = addressFromStringValue(be(X()))
683+ let dY = invoke(dC, "createOrUpdate", [dW, dH, false], nil)
683684 if ((dY == dY))
684685 then {
685- let dZ = invoke(dC, "setLogo", [dV, dK], nil)
686+ let dZ = invoke(dC, "addLabel", [dW, h], nil)
686687 if ((dZ == dZ))
687688 then {
688- let ea = invoke(dC, "addAssetsLink", [ci, cj, dV], nil)
689+ let ea = invoke(dC, "setLogo", [dW, dK], nil)
689690 if ((ea == ea))
690691 then {
691- let eb = invoke(dC, "increaseAssetPoolsNumber", [ci], nil)
692+ let eb = invoke(dC, "addAssetsLink", [ci, cj, dW], nil)
692693 if ((eb == eb))
693- then $Tuple2(((dL._2 ++ dN._2) ++ [dU, Burn(ch, 1), StringEntry(am(toString(dM), toString(dO)), cf(af, toString(o), dV, ci, cj, dS, dT, dM, dO, l, cp)), StringEntry(aw(dV), cq(dM, dO)), StringEntry(ay(toString(dM), toString(dO)), ("%s__" + dV)), StringEntry(aC(af), cq(dM, dO)), StringEntry(aE(dM, dO), af), StringEntry(aG(dV), af), StringEntry(aF(af), dV), IntegerEntry(ae(af), dJ), IntegerEntry(aB(af), i)]), dV)
694+ then {
695+ let ec = invoke(dC, "increaseAssetPoolsNumber", [ci], nil)
696+ if ((ec == ec))
697+ then $Tuple2(((dL._2 ++ dN._2) ++ [dV, Burn(ch, 1), StringEntry(am(toString(dM), toString(dO)), cf(af, toString(o), dW, ci, cj, dT, dU, dM, dO, l, cp)), StringEntry(aw(dW), cq(dM, dO)), StringEntry(ay(toString(dM), toString(dO)), ("%s__" + dW)), StringEntry(aC(af), cq(dM, dO)), StringEntry(aE(dM, dO), af), StringEntry(aG(dW), af), StringEntry(aF(af), dW), IntegerEntry(ae(af), dJ), IntegerEntry(aB(af), i)]), dW)
698+ else throw("Strict value is not equal to itself.")
699+ }
694700 else throw("Strict value is not equal to itself.")
695701 }
696702 else throw("Strict value is not equal to itself.")
697703 }
698704 else throw("Strict value is not equal to itself.")
699705 }
700706 else throw("Strict value is not equal to itself.")
701707 }
702- else throw("Strict value is not equal to itself.")
703- }
704- else throw("Strict value is not equal to itself.")
708+ else throw("Strict value is not equal to itself.")
709+ }
705710 }
706711 else throw("Strict value is not equal to itself.")
707712 }
708713
709714
710715
711716 @Callable(bP)
712-func managePool (af,ec) = {
717+func managePool (af,ed) = {
713718 let dx = bQ(bP)
714719 if ((dx == dx))
715720 then {
716- let ed = ct(af)
717- let cg = ed[w]
718- let dV = ed[x]
719- let ci = ed[y]
720- let cj = ed[z]
721- let dS = parseIntValue(ed[A])
722- let dT = parseIntValue(ed[B])
723- let dM = parseIntValue(ed[C])
724- let dO = parseIntValue(ed[D])
725- let ee = parseIntValue(ed[E])
726- let cp = ed[F]
727-[StringEntry(am(toString(dM), toString(dO)), cf(af, toString(ec), dV, ci, cj, dS, dT, dM, dO, ee, cp))]
721+ let ee = ct(af)
722+ let cg = ee[w]
723+ let dW = ee[x]
724+ let ci = ee[y]
725+ let cj = ee[z]
726+ let dT = parseIntValue(ee[A])
727+ let dU = parseIntValue(ee[B])
728+ let dM = parseIntValue(ee[C])
729+ let dO = parseIntValue(ee[D])
730+ let ef = parseIntValue(ee[E])
731+ let cp = ee[F]
732+[StringEntry(am(toString(dM), toString(dO)), cf(af, toString(ed), dW, ci, cj, dT, dU, dM, dO, ef, cp))]
728733 }
729734 else throw("Strict value is not equal to itself.")
730735 }
731736
732737
733738
734739 @Callable(bP)
735-func emit (ef) = {
736- let eg = bP.caller
737- let eh = bP.originCaller
738- let ei = valueOrErrorMessage(getString(aF(toString(eg))), "Invalid LP address called me.")
739- let ej = fromBase58String(ei)
740+func emit (eg) = {
741+ let eh = bP.caller
742+ let ei = bP.originCaller
743+ let ej = valueOrErrorMessage(getString(aF(toString(eh))), "Invalid LP address called me.")
744+ let ek = fromBase58String(ej)
740745 let dB = split(valueOrElse(getString(T()), n), m)
741746 let dA = addressFromStringValue(valueOrErrorMessage(getString(S()), "Legacy factory contract does not exists."))
742- if ((0 >= ef))
747+ if ((0 >= eg))
743748 then nil
744- else if (containsElement(dB, toString(eg)))
749+ else if (containsElement(dB, toString(eh)))
745750 then $Tuple2(nil, dA)
746- else $Tuple2([Reissue(ej, ef, true), ScriptTransfer(bP.caller, ef, ej)], "success")
751+ else $Tuple2([Reissue(ek, eg, true), ScriptTransfer(bP.caller, eg, ek)], "success")
747752 }
748753
749754
750755
751756 @Callable(bP)
752-func burn (ek) = {
753- let eg = bP.caller
754- let eh = bP.originCaller
755- let el = value(bP.payments[0])
756- let em = value(el.amount)
757- let en = toBase58String(value(el.assetId))
758- let eo = valueOrErrorMessage(getString(aF(toString(eg))), "Invalid LP address called me.")
759- if ((en != eo))
757+func burn (el) = {
758+ let eh = bP.caller
759+ let ei = bP.originCaller
760+ let em = value(bP.payments[0])
761+ let en = value(em.amount)
762+ let eo = toBase58String(value(em.assetId))
763+ let ep = valueOrErrorMessage(getString(aF(toString(eh))), "Invalid LP address called me.")
764+ if ((eo != ep))
760765 then K("Invalid asset passed.")
761- else if ((ek != em))
766+ else if ((el != en))
762767 then K("Invalid amount passed.")
763768 else {
764- let ej = fromBase58String(eo)
765- $Tuple2([Burn(ej, ek)], "success")
769+ let ek = fromBase58String(ep)
770+ $Tuple2([Burn(ek, el)], "success")
766771 }
767772 }
768773
769774
770775
771776 @Callable(bP)
772-func modifyWeight (ch,ep) = {
777+func modifyWeight (ch,eq) = {
773778 let dx = if ((toBase58String(bP.caller.bytes) == valueOrElse(getString(this, Y()), "")))
774779 then true
775780 else bQ(bP)
776781 if ((dx == dx))
777782 then {
778783 let aD = be(aG(ch))
779- let eq = ae(aD)
780- let er = ae(g)
781- let es = valueOrElse(getInteger(er), 0)
782- let dJ = valueOrElse(getInteger(eq), 0)
783- let et = ep
784+ let er = ae(aD)
785+ let es = ae(g)
786+ let et = valueOrElse(getInteger(es), 0)
787+ let dJ = valueOrElse(getInteger(er), 0)
788+ let eu = eq
784789 let bF = split(be(O()), m)
785790 let dt = bH(bF)
786- let eu = invoke(dt, "onModifyWeight", [ch, aD], nil)
787- if ((eu == eu))
791+ let ev = invoke(dt, "onModifyWeight", [ch, aD], nil)
792+ if ((ev == ev))
788793 then {
789- let ev = if ((es == 0))
794+ let ew = if ((et == 0))
790795 then nil
791- else [IntegerEntry(er, 0)]
792- let ew = ag(aD, 0)
793- let ex = getInteger(ew)
794- let ey = if ((ex == unit))
796+ else [IntegerEntry(es, 0)]
797+ let ex = ag(aD, 0)
798+ let ey = getInteger(ex)
799+ let ez = if ((ey == unit))
795800 then nil
796- else [DeleteEntry(ew)]
797- (([IntegerEntry(eq, et)] ++ ev) ++ ey)
801+ else [DeleteEntry(ex)]
802+ (([IntegerEntry(er, eu)] ++ ew) ++ ez)
798803 }
799804 else throw("Strict value is not equal to itself.")
800805 }
801806 else throw("Strict value is not equal to itself.")
802807 }
803808
804809
805810
806811 @Callable(bP)
807-func modifyWeights (ez,eA,eB,eC) = {
812+func modifyWeights (eA,eB,eC,eD) = {
808813 let dx = bQ(bP)
809814 if ((dx == dx))
810815 then {
811- let eD = ((5 * f) / 100)
812816 let eE = ((5 * f) / 100)
813817 let eF = ((5 * f) / 100)
818+ let eG = ((5 * f) / 100)
814819 let bF = split(be(O()), m)
815- let eG = bH(bF)
816- let eH = bI(bF)
817- let eI = ae(ez)
820+ let eH = bH(bF)
821+ let eI = bI(bF)
818822 let eJ = ae(eA)
819823 let eK = ae(eB)
820824 let eL = ae(eC)
821- let eM = bh(eI)
825+ let eM = ae(eD)
822826 let eN = bh(eJ)
823- let eO = (eM - eF)
824- let eP = (eN - eF)
825- if ((0 >= eO))
826- then K(("invalid btcWeightNew: " + toString(eO)))
827- else if ((0 >= eP))
828- then K(("invalid ethWeightNew: " + toString(eP)))
827+ let eO = bh(eK)
828+ let eP = (eN - eG)
829+ let eQ = (eO - eG)
830+ if ((0 >= eP))
831+ then K(("invalid btcWeightNew: " + toString(eP)))
832+ else if ((0 >= eQ))
833+ then K(("invalid ethWeightNew: " + toString(eQ)))
829834 else {
830- let eQ = be(aF(ez))
831835 let eR = be(aF(eA))
832836 let eS = be(aF(eB))
833837 let eT = be(aF(eC))
834- let eU = invoke(eG, "onModifyWeight", [eQ, ez], nil)
835- if ((eU == eU))
838+ let eU = be(aF(eD))
839+ let eV = invoke(eH, "onModifyWeight", [eR, eA], nil)
840+ if ((eV == eV))
836841 then {
837- let eV = invoke(eG, "onModifyWeight", [eR, eA], nil)
838- if ((eV == eV))
842+ let eW = invoke(eH, "onModifyWeight", [eS, eB], nil)
843+ if ((eW == eW))
839844 then {
840- let eW = invoke(eG, "onModifyWeight", [eS, eB], nil)
841- if ((eW == eW))
845+ let eX = invoke(eH, "onModifyWeight", [eT, eC], nil)
846+ if ((eX == eX))
842847 then {
843- let eX = invoke(eG, "onModifyWeight", [eT, eC], nil)
844- if ((eX == eX))
845- then [IntegerEntry(eI, eO), IntegerEntry(eJ, eP), IntegerEntry(eK, eD), IntegerEntry(eL, eE), IntegerEntry(ag(ez, 0), eM), IntegerEntry(ag(eA, 0), eN), IntegerEntry(ag(eB, 0), eD), IntegerEntry(ag(eC, 0), eE)]
848+ let eY = invoke(eH, "onModifyWeight", [eU, eD], nil)
849+ if ((eY == eY))
850+ then [IntegerEntry(eJ, eP), IntegerEntry(eK, eQ), IntegerEntry(eL, eE), IntegerEntry(eM, eF), IntegerEntry(ag(eA, 0), eN), IntegerEntry(ag(eB, 0), eO), IntegerEntry(ag(eC, 0), eE), IntegerEntry(ag(eD, 0), eF)]
846851 else throw("Strict value is not equal to itself.")
847852 }
848853 else throw("Strict value is not equal to itself.")
849854 }
850855 else throw("Strict value is not equal to itself.")
851856 }
852857 else throw("Strict value is not equal to itself.")
853858 }
854859 }
855860 else throw("Strict value is not equal to itself.")
856861 }
857862
858863
859864
860865 @Callable(bP)
861866 func checkWxEmissionPoolLabel (aI,aJ) = {
862- let eY = {
867+ let eZ = {
863868 let bl = getBoolean(aH(aI, aJ))
864869 if ($isInstanceOf(bl, "Boolean"))
865870 then {
866871 let df = bl
867872 df
868873 }
869874 else false
870875 }
871- $Tuple2(nil, eY)
876+ $Tuple2(nil, eZ)
872877 }
873878
874879
875880
876881 @Callable(bP)
877882 func setWxEmissionPoolLabel (aI,aJ) = {
878883 let dx = cC(bP)
879884 if ((dx == dx))
880885 then $Tuple2([BooleanEntry(aH(aI, aJ), true)], unit)
881886 else throw("Strict value is not equal to itself.")
882887 }
883888
884889
885890
886891 @Callable(bP)
887892 func deleteWxEmissionPoolLabel (aI,aJ) = {
888893 let dx = if ((bP.caller == this))
889894 then true
890895 else cC(bP)
891896 if ((dx == dx))
892897 then $Tuple2([DeleteEntry(aH(aI, aJ))], unit)
893898 else throw("Strict value is not equal to itself.")
894899 }
895900
896901
897902
898903 @Callable(bP)
899904 func onVerificationLoss (aX) = {
900905 let dx = if ((toBase58String(bP.caller.bytes) == valueOrElse(getString(this, X()), "")))
901906 then true
902907 else bQ(bP)
903908 if ((dx == dx))
904909 then {
905910 let dE = bJ()
906- let eZ = if ((size(dE) > 0))
911+ let fa = if ((size(dE) > 0))
907912 then true
908913 else K("invalid price assets")
909- if ((eZ == eZ))
914+ if ((fa == fa))
910915 then {
911- func fa (fb,fc) = {
912- let cZ = invoke(this, "deleteWxEmissionPoolLabel", [aX, fc], nil)
916+ func fb (fc,fd) = {
917+ let cZ = invoke(this, "deleteWxEmissionPoolLabel", [aX, fd], nil)
913918 if ((cZ == cZ))
914919 then unit
915920 else throw("Strict value is not equal to itself.")
916921 }
917922
918- let fd = {
919- let fe = dE
920- let ff = size(fe)
921- let fg = unit
922- func fh (fi,fj) = if ((fj >= ff))
923- then fi
924- else fa(fi, fe[fj])
923+ let fe = {
924+ let ff = dE
925+ let fg = size(ff)
926+ let fh = unit
927+ func fi (fj,fk) = if ((fk >= fg))
928+ then fj
929+ else fb(fj, ff[fk])
925930
926- func fk (fi,fj) = if ((fj >= ff))
927- then fi
931+ func fl (fj,fk) = if ((fk >= fg))
932+ then fj
928933 else throw("List size exceeds 13")
929934
930- fk(fh(fh(fh(fh(fh(fh(fh(fh(fh(fh(fh(fh(fh(fg, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13)
935+ fl(fi(fi(fi(fi(fi(fi(fi(fi(fi(fi(fi(fi(fi(fh, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13)
931936 }
932- if ((fd == fd))
937+ if ((fe == fe))
933938 then $Tuple2(nil, unit)
934939 else throw("Strict value is not equal to itself.")
935940 }
936941 else throw("Strict value is not equal to itself.")
937942 }
938943 else throw("Strict value is not equal to itself.")
939944 }
940945
941946
942947
943948 @Callable(bP)
944949 func isPoolOneTokenOperationsDisabledREADONLY (af) = {
945- let ed = ct(af)
946- let aq = $Tuple2(parseIntValue(ed[C]), parseIntValue(ed[D]))
947- let fl = valueOrElse(getBoolean(ap(aq)), false)
948- let fm = valueOrElse(getBoolean(as()), false)
949- $Tuple2(nil, if (fm)
950+ let ee = ct(af)
951+ let aq = $Tuple2(parseIntValue(ee[C]), parseIntValue(ee[D]))
952+ let fm = valueOrElse(getBoolean(ap(aq)), false)
953+ let fn = valueOrElse(getBoolean(as()), false)
954+ $Tuple2(nil, if (fn)
950955 then true
951- else fl)
956+ else fm)
952957 }
953958
954959
955960
956961 @Callable(bP)
957962 func isPoolSwapDisabledREADONLY (af) = {
958- let ed = ct(af)
959- let aq = $Tuple2(parseIntValue(ed[C]), parseIntValue(ed[D]))
960- let fn = valueOrElse(getBoolean(at(aq)), false)
961- let fo = valueOrElse(getBoolean(av()), false)
962- $Tuple2(nil, if (fo)
963+ let ee = ct(af)
964+ let aq = $Tuple2(parseIntValue(ee[C]), parseIntValue(ee[D]))
965+ let fo = valueOrElse(getBoolean(at(aq)), false)
966+ let fp = valueOrElse(getBoolean(av()), false)
967+ $Tuple2(nil, if (fp)
963968 then true
964- else fn)
969+ else fo)
965970 }
966971
967972
968973
969974 @Callable(bP)
970975 func getInFeeREADONLY (af) = {
971- let fp = cF(aK(af), aL(), 0)
972- $Tuple2(nil, fp)
976+ let fq = cF(aK(af), aL(), 0)
977+ $Tuple2(nil, fq)
973978 }
974979
975980
976981
977982 @Callable(bP)
978983 func getOutFeeREADONLY (af) = {
979- let fp = cF(aN(af), aO(), fraction(10, b, 10000))
980- $Tuple2(nil, fp)
984+ let fq = cF(aN(af), aO(), fraction(10, b, 10000))
985+ $Tuple2(nil, fq)
981986 }
982987
983988
984989
985990 @Callable(bP)
986-func getSwapFeeREADONLY (fq) = {
987- let fr = {
988- let bl = getString(this, aM(fq))
991+func getSwapFeeREADONLY (fr) = {
992+ let fs = {
993+ let bl = getString(this, aM(fr))
989994 if ($isInstanceOf(bl, "String"))
990995 then {
991996 let bm = bl
992- let fs = split(bm, m)
993- let ft = parseIntValue(fs[1])
994- let fu = parseIntValue(fs[2])
995- $Tuple2(ft, fu)
997+ let ft = split(bm, m)
998+ let fu = parseIntValue(ft[1])
999+ let fv = parseIntValue(ft[2])
1000+ $Tuple2(fu, fv)
9961001 }
9971002 else if ($isInstanceOf(bl, "Unit"))
9981003 then unit
9991004 else throw("Match error")
10001005 }
1001- $Tuple2(nil, fr)
1006+ $Tuple2(nil, fs)
10021007 }
10031008
10041009
10051010
10061011 @Callable(bP)
1007-func poolInfoREADONLY (fv,fw) = {
1008- let fx = getInteger(this, ak(fv))
1012+func poolInfoREADONLY (fw,fx) = {
10091013 let fy = getInteger(this, ak(fw))
1010- let fz = getString(this, aE(value(fx), value(fy)))
1011- let fA = getString(this, aF(value(fz)))
1012- let fB = if (if (isDefined(fx))
1013- then isDefined(fy)
1014+ let fz = getInteger(this, ak(fx))
1015+ let fA = getString(this, aE(value(fy), value(fz)))
1016+ let fB = getString(this, aF(value(fA)))
1017+ let dR = if (if (isDefined(fy))
1018+ then isDefined(fz)
10141019 else false)
1015- then isDefined(fz)
1020+ then isDefined(fA)
10161021 else false
1017- let fC = if (fB)
1018- then $Tuple2(addressFromStringValue(value(fz)), bi(value(fA)))
1022+ let fC = if (dR)
1023+ then $Tuple2(addressFromStringValue(value(fA)), bi(value(fB)))
10191024 else unit
10201025 $Tuple2(nil, fC)
10211026 }
10221027
10231028
10241029
10251030 @Callable(bP)
10261031 func getPoolStatusREADONLY (af) = {
10271032 let cu = split(be(aC(af)), m)
10281033 let an = cu[1]
10291034 let ao = cu[2]
10301035 let cL = split(be(am(an, ao)), m)
10311036 $Tuple2(nil, parseIntValue(cL[w]))
10321037 }
10331038
10341039
10351040
10361041 @Callable(bP)
10371042 func getPoolConfigREADONLY (af) = {
10381043 let cu = split(be(aC(af)), m)
10391044 let an = cu[1]
10401045 let ao = cu[2]
10411046 let cL = split(be(am(an, ao)), m)
10421047 $Tuple2(nil, cL)
10431048 }
10441049
10451050
10461051
10471052 @Callable(bP)
1048-func getPoolConfigByLpAssetIdREADONLY (dV) = {
1049- let cu = split(be(aw(dV)), m)
1053+func getPoolConfigByLpAssetIdREADONLY (dW) = {
1054+ let cu = split(be(aw(dW)), m)
10501055 let an = cu[1]
10511056 let ao = cu[2]
10521057 let cL = split(be(am(an, ao)), m)
10531058 $Tuple2(nil, cL)
10541059 }
10551060
10561061
10571062
10581063 @Callable(bP)
10591064 func poolExistsREADONLY (aI,aJ) = $Tuple2(nil, cI(aI, aJ))
10601065
10611066
10621067
10631068 @Callable(bP)
10641069 func skipOrderValidationREADONLY (af) = $Tuple2(nil, valueOrElse(getBoolean(aP(af)), false))
10651070
10661071
10671072
10681073 @Callable(bP)
10691074 func getChangeAmpConfigREADONLY (af) = {
10701075 let fD = getIntegerValue(aQ(af))
10711076 let fE = getIntegerValue(aR(af))
10721077 let fF = getIntegerValue(aS(af))
10731078 $Tuple2(nil, [fD, fE, fF])
10741079 }
10751080
10761081
10771082
10781083 @Callable(bP)
10791084 func getPoolWeightREADONLY (ch) = {
10801085 let af = be(aG(ch))
10811086 let fG = valueOrElse(getInteger(ae(af)), 0)
10821087 $Tuple2(nil, fG)
10831088 }
10841089
10851090
10861091
10871092 @Callable(bP)
10881093 func deletePool (aD) = {
1089- let ed = ct(aD)
1094+ let ee = ct(aD)
10901095 let dx = if ((toString(bP.caller) == cP(aD)))
10911096 then if (cW(aD))
10921097 then true
10931098 else K("Pool is not empty")
10941099 else bQ(bP)
10951100 if ((dx == dx))
10961101 then {
10971102 let fH = if ((valueOrElse(getInteger(ae(aD)), 0) == 0))
10981103 then true
10991104 else K("Pool weight is not Zero")
11001105 if ((fH == fH))
11011106 then {
1102- let fI = if ((ed[w] == toString(r)))
1107+ let fI = if ((ee[w] == toString(r)))
11031108 then true
11041109 else K("Pool must be SHUTDOWN (4)")
11051110 if ((fI == fI))
11061111 then {
11071112 let fJ = cO(aD)
11081113 let aI = fJ._1
11091114 let aJ = fJ._2
11101115 let ch = fJ._3
11111116 let an = fJ._4
11121117 let ao = fJ._5
11131118 let cR = addressFromStringValue(getStringValue(Z()))
11141119 let fK = invoke(cR, "deletePool", [aI, aJ], nil)
11151120 if ((fK == fK))
11161121 then {
11171122 let dD = addressFromStringValue(getStringValue(Y()))
11181123 let fL = invoke(dD, "deletePool", [aI, aJ], nil)
11191124 if ((fL == fL))
11201125 then {
11211126 let dC = addressFromStringValue(getStringValue(X()))
11221127 let fM = invoke(dC, "deletePool", [aI, aJ], nil)
11231128 if ((fM == fM))
11241129 then [DeleteEntry(aF(aD)), DeleteEntry(aC(aD)), DeleteEntry(ay(toString(an), toString(ao))), DeleteEntry(aE(an, ao)), DeleteEntry(am(toString(an), toString(ao))), DeleteEntry(aw(ch)), DeleteEntry(aG(ch)), DeleteEntry(aH(aI, aJ)), DeleteEntry(ae(aD)), DeleteEntry(aB(aD)), DeleteEntry(aK(aD)), DeleteEntry(aN(aD)), DeleteEntry(aP(aD)), DeleteEntry(aQ(aD)), DeleteEntry(aR(aD)), DeleteEntry(aS(aD))]
11251130 else throw("Strict value is not equal to itself.")
11261131 }
11271132 else throw("Strict value is not equal to itself.")
11281133 }
11291134 else throw("Strict value is not equal to itself.")
11301135 }
11311136 else throw("Strict value is not equal to itself.")
11321137 }
11331138 else throw("Strict value is not equal to itself.")
11341139 }
11351140 else throw("Strict value is not equal to itself.")
11361141 }
11371142
11381143
11391144
11401145 @Callable(bP)
1141-func getPrice (fq) = {
1142- let af = addressFromStringValue(fq)
1143- let cL = ct(fq)
1146+func getPrice (fr) = {
1147+ let af = addressFromStringValue(fr)
1148+ let cL = ct(fr)
11441149 let ch = fromBase58String(cL[x])
11451150 let fN = cL[y]
11461151 let aJ = cL[z]
11471152 let fO = value(assetInfo(ch)).quantity
11481153 let fP = {
11491154 let fQ = invoke(af, "getAccBalanceWrapperREADONLY", [fN], nil)
11501155 if ($isInstanceOf(fQ, "Int"))
11511156 then fQ
11521157 else throw(($getType(fQ) + " couldn't be cast to Int"))
11531158 }
11541159 let fR = {
11551160 let fQ = invoke(af, "getAccBalanceWrapperREADONLY", [aJ], nil)
11561161 if ($isInstanceOf(fQ, "Int"))
11571162 then fQ
11581163 else throw(($getType(fQ) + " couldn't be cast to Int"))
11591164 }
11601165 let fS = if ((fO == 0))
11611166 then 0
11621167 else {
11631168 let fQ = ({
11641169 let fQ = invoke(af, "calcPricesWrapperREADONLY", [fP, fR, fO], nil)
11651170 if ($isInstanceOf(fQ, "List[Any]"))
11661171 then fQ
11671172 else throw(($getType(fQ) + " couldn't be cast to List[Any]"))
11681173 })[0]
11691174 if ($isInstanceOf(fQ, "String"))
11701175 then fQ
11711176 else throw(($getType(fQ) + " couldn't be cast to String"))
11721177 }
11731178 $Tuple2(nil, fS)
11741179 }
11751180
11761181
11771182 @Verifier(fT)
11781183 func fU () = {
11791184 let fV = {
11801185 let bl = bK()
11811186 if ($isInstanceOf(bl, "ByteVector"))
11821187 then {
11831188 let bR = bl
11841189 bR
11851190 }
11861191 else if ($isInstanceOf(bl, "Unit"))
11871192 then fT.senderPublicKey
11881193 else throw("Match error")
11891194 }
11901195 sigVerify(fT.bodyBytes, fT.proofs[0], fV)
11911196 }
11921197

github/deemru/w8io/3ef1775 
212.02 ms