tx · FsiYSLSi2LwLFrvsx8cKu4b35Gx4Zz5UowqZA9H4x5xE

3Mqo3c7G5qkBfvMMLhriequKQFofhJSP9ip:  -0.06200000 Waves

2024.02.21 15:14 [2985981] smart account 3Mqo3c7G5qkBfvMMLhriequKQFofhJSP9ip > SELF 0.00000000 Waves

{ "type": 13, "id": "FsiYSLSi2LwLFrvsx8cKu4b35Gx4Zz5UowqZA9H4x5xE", "fee": 6200000, "feeAssetId": null, "timestamp": 1708517636604, "version": 2, "chainId": 84, "sender": "3Mqo3c7G5qkBfvMMLhriequKQFofhJSP9ip", "senderPublicKey": "5A4c5wG6NUWakcEewdfBkkZSvSdZRqo9onS5bqQrv3x1", "proofs": [ "jmXPCFSiJ95x42i73gM9vpvCLUavLaTvZAm3ZZpoegGMHLt2eTkkFUgfF3K41dZLrcpnUbVW5Us9F7gHszWCfv9" ], "script": "base64:BgKhAQgCEgASBQoDAQQBEgcKBQEEAQgBEgQKAgEEEgMKAQESBAoCAQQSBAoCCAESBAoCCAESBAoCCAESBQoDAQgBEgASBAoCAQESAwoBARIFCgMBAQESBAoCCAgSABIAEgMKAQgSBQoDAQEBEgQKAgEBEgQKAggBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgASAwoBARIDCgEBEgQKAggBhAEACmxQZGVjaW1hbHMACAAGc2NhbGU4AIDC1y8ADHNjYWxlOEJpZ0ludAkAtgIBAIDC1y8AB3NjYWxlMTgJALYCAQCAgJC7utat8A0ACnplcm9CaWdJbnQJALYCAQAAAARiaWcwCQC2AgEAAAAEYmlnMQkAtgIBAAEABGJpZzIJALYCAQACAAt3YXZlc1N0cmluZwIFV0FWRVMAA1NFUAICX18AClBvb2xBY3RpdmUAAQAPUG9vbFB1dERpc2FibGVkAAIAE1Bvb2xNYXRjaGVyRGlzYWJsZWQAAwAMUG9vbFNodXRkb3duAAQADmlkeFBvb2xBZGRyZXNzAAEADWlkeFBvb2xTdGF0dXMAAgAQaWR4UG9vbExQQXNzZXRJZAADAA1pZHhBbXRBc3NldElkAAQAD2lkeFByaWNlQXNzZXRJZAAFAA5pZHhBbXRBc3NldERjbQAGABBpZHhQcmljZUFzc2V0RGNtAAcADmlkeElBbXRBc3NldElkAAgAEGlkeElQcmljZUFzc2V0SWQACQANaWR4TFBBc3NldERjbQAKABJpZHhQb29sQW10QXNzZXRBbXQAAQAUaWR4UG9vbFByaWNlQXNzZXRBbXQAAgARaWR4UG9vbExQQXNzZXRBbXQAAwAZaWR4RmFjdG9yeVN0YWtpbmdDb250cmFjdAABABppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdAAHAQV0b1gxOAIHb3JpZ1ZhbA1vcmlnU2NhbGVNdWx0CQC8AgMJALYCAQUHb3JpZ1ZhbAUHc2NhbGUxOAkAtgIBBQ1vcmlnU2NhbGVNdWx0AQt0b1gxOEJpZ0ludAIHb3JpZ1ZhbA1vcmlnU2NhbGVNdWx0CQC8AgMFB29yaWdWYWwFB3NjYWxlMTgFDW9yaWdTY2FsZU11bHQBB2Zyb21YMTgCA3ZhbA9yZXN1bHRTY2FsZU11bHQJAKADAQkAvAIDBQN2YWwJALYCAQUPcmVzdWx0U2NhbGVNdWx0BQdzY2FsZTE4AQxmcm9tWDE4Um91bmQDA3ZhbA9yZXN1bHRTY2FsZU11bHQFcm91bmQJAKADAQkAvQIEBQN2YWwJALYCAQUPcmVzdWx0U2NhbGVNdWx0BQdzY2FsZTE4BQVyb3VuZAEHdG9TY2FsZQMDYW10CHJlc1NjYWxlCGN1clNjYWxlCQBrAwUDYW10BQhyZXNTY2FsZQUIY3VyU2NhbGUBA2FicwEDdmFsAwkAZgIAAAUDdmFsCQEBLQEFA3ZhbAUDdmFsAQlhYnNCaWdJbnQBA3ZhbAMJAL8CAgUKemVyb0JpZ0ludAUDdmFsCQC+AgEFA3ZhbAUDdmFsAQxzd2FwQ29udHJhY3QAAhAlc19fc3dhcENvbnRyYWN0AQJmYwACEyVzX19mYWN0b3J5Q29udHJhY3QBE2tleU1hbmFnZXJQdWJsaWNLZXkAAhQlc19fbWFuYWdlclB1YmxpY0tleQEWa2V5TWFuYWdlclZhdWx0QWRkcmVzcwACFyVzX19tYW5hZ2VyVmF1bHRBZGRyZXNzAQJwbAACESVzJXNfX3ByaWNlX19sYXN0AQJwaAIBaAl0aW1lc3RhbXAJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFoCQDMCAIJAKQDAQUJdGltZXN0YW1wBQNuaWwFA1NFUAEDcGF1Agt1c2VyQWRkcmVzcwR0eElkCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwULdXNlckFkZHJlc3MCAl9fBQR0eElkAQNnYXUCC3VzZXJBZGRyZXNzBHR4SWQJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQt1c2VyQWRkcmVzcwICX18FBHR4SWQBAmFhAAIPJXNfX2Ftb3VudEFzc2V0AQJwYQACDiVzX19wcmljZUFzc2V0AAZrZXlGZWUCByVzX19mZWUACmZlZURlZmF1bHQJAGsDAAoFBnNjYWxlOACQTgADZmVlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFBmtleUZlZQUKZmVlRGVmYXVsdAAGa2V5S0xwCQC5CQIJAMwIAgICJXMJAMwIAgIDa0xwBQNuaWwFA1NFUAAVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0CQC5CQIJAMwIAgICJXMJAMwIAgISa0xwUmVmcmVzaGVkSGVpZ2h0BQNuaWwFA1NFUAASa2V5S0xwUmVmcmVzaERlbGF5CQC5CQIJAMwIAgICJXMJAMwIAgIPcmVmcmVzaEtMcERlbGF5BQNuaWwFA1NFUAAWa0xwUmVmcmVzaERlbGF5RGVmYXVsdAAeAA9rTHBSZWZyZXNoRGVsYXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUSa2V5S0xwUmVmcmVzaERlbGF5BRZrTHBSZWZyZXNoRGVsYXlEZWZhdWx0ARRrZXlBZGRpdGlvbmFsQmFsYW5jZQEHYXNzZXRJZAkAuQkCCQDMCAICBCVzJXMJAMwIAgINc3Rha2VkQmFsYW5jZQkAzAgCBQdhc3NldElkBQNuaWwFA1NFUAEWa2V5U3Rha2luZ0Fzc2V0QmFsYW5jZQEHYXNzZXRJZAkAuQkCCQDMCAICBCVzJXMJAMwIAgIRc2hhcmVBc3NldEJhbGFuY2UJAMwIAgUHYXNzZXRJZAUDbmlsBQNTRVABGmdldEFkZGl0aW9uYWxCYWxhbmNlT3JaZXJvAQdhc3NldElkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARRrZXlBZGRpdGlvbmFsQmFsYW5jZQEFB2Fzc2V0SWQAAAEcZ2V0U3Rha2luZ0Fzc2V0QmFsYW5jZU9yWmVybwEHYXNzZXRJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEWa2V5U3Rha2luZ0Fzc2V0QmFsYW5jZQEFB2Fzc2V0SWQAAAEQa2V5RmFjdG9yeUNvbmZpZwACESVzX19mYWN0b3J5Q29uZmlnAQ1rZXlNYXRjaGVyUHViAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5ASlrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwETcG9vbENvbnRyYWN0QWRkcmVzcwkArAICCQCsAgICCCVzJXMlc19fBRNwb29sQ29udHJhY3RBZGRyZXNzAiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAENa2V5UG9vbENvbmZpZwIJaUFtdEFzc2V0C2lQcmljZUFzc2V0CQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQlpQW10QXNzZXQCAl9fBQtpUHJpY2VBc3NldAIIX19jb25maWcBH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQBDGJhc2VBc3NldFN0cgkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQxiYXNlQXNzZXRTdHIBE2tleUFsbFBvb2xzU2h1dGRvd24AAgwlc19fc2h1dGRvd24BDWtleVBvb2xXZWlnaHQBD2NvbnRyYWN0QWRkcmVzcwkArAICAhIlcyVzX19wb29sV2VpZ2h0X18FD2NvbnRyYWN0QWRkcmVzcwEWa2V5QWxsb3dlZExwU2NyaXB0SGFzaAACFyVzX19hbGxvd2VkTHBTY3JpcHRIYXNoABZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwEWa2V5U2tpcE9yZGVyVmFsaWRhdGlvbgELcG9vbEFkZHJlc3MJAKwCAgIbJXMlc19fc2tpcE9yZGVyVmFsaWRhdGlvbl9fBQtwb29sQWRkcmVzcwEPdGhyb3dPcmRlckVycm9yBApvcmRlclZhbGlkDm9yZGVyVmFsaWRJbmZvC3NlbmRlclZhbGlkDG1hdGNoZXJWYWxpZAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAiRvcmRlciB2YWxpZGF0aW9uIGZhaWxlZDogb3JkZXJWYWxpZD0JAKUDAQUKb3JkZXJWYWxpZAICICgFDm9yZGVyVmFsaWRJbmZvAgEpAg0gc2VuZGVyVmFsaWQ9CQClAwEFC3NlbmRlclZhbGlkAg4gbWF0Y2hlclZhbGlkPQkApQMBBQxtYXRjaGVyVmFsaWQBF2FkZHJlc3NGcm9tU3RyaW5nT3JUaGlzAQ1hZGRyZXNzU3RyaW5nBAckbWF0Y2gwCQCmCAEFDWFkZHJlc3NTdHJpbmcDCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQBYQUHJG1hdGNoMAUBYQUEdGhpcwEcZ2V0TWFuYWdlclZhdWx0QWRkcmVzc09yVGhpcwAEDmZhY3RvcnlBZGRyZXNzBAckbWF0Y2gwCQCiCAEJAQJmYwADCQABAgUHJG1hdGNoMAIGU3RyaW5nBANmY2EFByRtYXRjaDAJARdhZGRyZXNzRnJvbVN0cmluZ09yVGhpcwEFA2ZjYQUEdGhpcwQHJG1hdGNoMAkAnQgCBQ5mYWN0b3J5QWRkcmVzcwkBFmtleU1hbmFnZXJWYXVsdEFkZHJlc3MAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkBF2FkZHJlc3NGcm9tU3RyaW5nT3JUaGlzAQUBcwUEdGhpcwEPZ2V0U3RyaW5nT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFB2FkZHJlc3MFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABDGdldEludE9yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQh0aHJvd0VycgEDbXNnCQACAQkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFA21zZwUDbmlsAgEgAQZmbXRFcnIBA21zZwkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFA21zZwUDbmlsAgEgAA9mYWN0b3J5Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQ9nZXRTdHJpbmdPckZhaWwCBQR0aGlzCQECZmMAABNmZWVDb2xsZWN0b3JBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQEPZ2V0U3RyaW5nT3JGYWlsAgUPZmFjdG9yeUNvbnRyYWN0BRZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzAAVpbkZlZQoAAUAJAPwHBAUPZmFjdG9yeUNvbnRyYWN0AhBnZXRJbkZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AAZvdXRGZWUKAAFACQD8BwQFD2ZhY3RvcnlDb250cmFjdAIRZ2V0T3V0RmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQBFWtleUFkZHJlc3NXaGl0ZWxpc3RlZAEHYWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgILd2hpdGVsaXN0ZWQJAMwIAgkApQgBBQdhZGRyZXNzBQNuaWwFA1NFUAEUaXNBZGRyZXNzV2hpdGVsaXN0ZWQBB2FkZHJlc3MJAQt2YWx1ZU9yRWxzZQIJAJsIAgUPZmFjdG9yeUNvbnRyYWN0CQEVa2V5QWRkcmVzc1doaXRlbGlzdGVkAQUHYWRkcmVzcwcBEGlzR2xvYmFsU2h1dGRvd24ACQELdmFsdWVPckVsc2UCCQCbCAIFD2ZhY3RvcnlDb250cmFjdAkBE2tleUFsbFBvb2xzU2h1dGRvd24ABwETZ2V0TWF0Y2hlclB1Yk9yRmFpbAAJANkEAQkBD2dldFN0cmluZ09yRmFpbAIFD2ZhY3RvcnlDb250cmFjdAkBDWtleU1hdGNoZXJQdWIAAQ1nZXRQb29sQ29uZmlnAAQIYW10QXNzZXQJAQ9nZXRTdHJpbmdPckZhaWwCBQR0aGlzCQECYWEABApwcmljZUFzc2V0CQEPZ2V0U3RyaW5nT3JGYWlsAgUEdGhpcwkBAnBhAAQLaVByaWNlQXNzZXQJAQxnZXRJbnRPckZhaWwCBQ9mYWN0b3J5Q29udHJhY3QJAR9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAQUKcHJpY2VBc3NldAQJaUFtdEFzc2V0CQEMZ2V0SW50T3JGYWlsAgUPZmFjdG9yeUNvbnRyYWN0CQEfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAEFCGFtdEFzc2V0CQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQ9mYWN0b3J5Q29udHJhY3QJAQ1rZXlQb29sQ29uZmlnAgkApAMBBQlpQW10QXNzZXQJAKQDAQULaVByaWNlQXNzZXQFA1NFUAEMcGFyc2VBc3NldElkAQVpbnB1dAMJAAACBQVpbnB1dAULd2F2ZXNTdHJpbmcFBHVuaXQJANkEAQUFaW5wdXQBD2Fzc2V0SWRUb1N0cmluZwEFaW5wdXQDCQAAAgUFaW5wdXQFBHVuaXQFC3dhdmVzU3RyaW5nCQDYBAEJAQV2YWx1ZQEFBWlucHV0AQ9wYXJzZVBvb2xDb25maWcBCnBvb2xDb25maWcJAJkKBwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQpwb29sQ29uZmlnBQ5pZHhQb29sQWRkcmVzcwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnBvb2xDb25maWcFDWlkeFBvb2xTdGF0dXMJANkEAQkAkQMCBQpwb29sQ29uZmlnBRBpZHhQb29sTFBBc3NldElkCQEMcGFyc2VBc3NldElkAQkAkQMCBQpwb29sQ29uZmlnBQ1pZHhBbXRBc3NldElkCQEMcGFyc2VBc3NldElkAQkAkQMCBQpwb29sQ29uZmlnBQ9pZHhQcmljZUFzc2V0SWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQ29uZmlnBQ5pZHhBbXRBc3NldERjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnBvb2xDb25maWcFEGlkeFByaWNlQXNzZXREY20AEHBvb2xDb25maWdQYXJzZWQJAQ9wYXJzZVBvb2xDb25maWcBCQENZ2V0UG9vbENvbmZpZwAACyR0MDk3Njk5OTM1BRBwb29sQ29uZmlnUGFyc2VkAA5jZmdQb29sQWRkcmVzcwgFCyR0MDk3Njk5OTM1Al8xAA1jZmdQb29sU3RhdHVzCAULJHQwOTc2OTk5MzUCXzIADGNmZ0xwQXNzZXRJZAgFCyR0MDk3Njk5OTM1Al8zABBjZmdBbW91bnRBc3NldElkCAULJHQwOTc2OTk5MzUCXzQAD2NmZ1ByaWNlQXNzZXRJZAgFCyR0MDk3Njk5OTM1Al81ABZjZmdBbW91bnRBc3NldERlY2ltYWxzCAULJHQwOTc2OTk5MzUCXzYAFWNmZ1ByaWNlQXNzZXREZWNpbWFscwgFCyR0MDk3Njk5OTM1Al83ARBnZXRGYWN0b3J5Q29uZmlnAAkAtQkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUPZmFjdG9yeUNvbnRyYWN0CQEQa2V5RmFjdG9yeUNvbmZpZwAFA1NFUAAPc3Rha2luZ0NvbnRyYWN0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQEQZ2V0RmFjdG9yeUNvbmZpZwAFGWlkeEZhY3RvcnlTdGFraW5nQ29udHJhY3QCGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MAEHNsaXBwYWdlQ29udHJhY3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJARBnZXRGYWN0b3J5Q29uZmlnAAUaaWR4RmFjdG9yeVNsaXBwYWdlQ29udHJhY3QCGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MBEWRhdGFQdXRBY3Rpb25JbmZvCg1pbkFtdEFzc2V0QW10D2luUHJpY2VBc3NldEFtdAhvdXRMcEFtdAVwcmljZR1zbGlwcGFnZVRvbGVyYW5jZVBhc3NlZEJ5VXNlchVzbGlwcGFnZVRvbGVyYW5jZVJlYWwIdHhIZWlnaHQLdHhUaW1lc3RhbXASc2xpcGFnZUFtdEFzc2V0QW10FHNsaXBhZ2VQcmljZUFzc2V0QW10CQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQ1pbkFtdEFzc2V0QW10CQDMCAIJAKQDAQUPaW5QcmljZUFzc2V0QW10CQDMCAIJAKQDAQUIb3V0THBBbXQJAMwIAgkApAMBBQVwcmljZQkAzAgCCQCkAwEFHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyCQDMCAIJAKQDAQUVc2xpcHBhZ2VUb2xlcmFuY2VSZWFsCQDMCAIJAKQDAQUIdHhIZWlnaHQJAMwIAgkApAMBBQt0eFRpbWVzdGFtcAkAzAgCCQCkAwEFEnNsaXBhZ2VBbXRBc3NldEFtdAkAzAgCCQCkAwEFFHNsaXBhZ2VQcmljZUFzc2V0QW10BQNuaWwFA1NFUAERZGF0YUdldEFjdGlvbkluZm8GDm91dEFtdEFzc2V0QW10EG91dFByaWNlQXNzZXRBbXQHaW5McEFtdAVwcmljZQh0eEhlaWdodAt0eFRpbWVzdGFtcAkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFDm91dEFtdEFzc2V0QW10CQDMCAIJAKQDAQUQb3V0UHJpY2VBc3NldEFtdAkAzAgCCQCkAwEFB2luTHBBbXQJAMwIAgkApAMBBQVwcmljZQkAzAgCCQCkAwEFCHR4SGVpZ2h0CQDMCAIJAKQDAQULdHhUaW1lc3RhbXAFA25pbAUDU0VQAQ1nZXRBY2NCYWxhbmNlAQdhc3NldElkBA1iYWxhbmNlT25Qb29sAwkAAAIFB2Fzc2V0SWQCBVdBVkVTCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQDZBAEFB2Fzc2V0SWQEDHRvdGFsQmFsYW5jZQkAZQIJAGQCBQ1iYWxhbmNlT25Qb29sCQEaZ2V0QWRkaXRpb25hbEJhbGFuY2VPclplcm8BBQdhc3NldElkCQEcZ2V0U3Rha2luZ0Fzc2V0QmFsYW5jZU9yWmVybwEFB2Fzc2V0SWQJAJYDAQkAzAgCAAAJAMwIAgUMdG90YWxCYWxhbmNlBQNuaWwBD2NhbGNQcmljZUJpZ0ludAIIcHJBbXRYMTgIYW1BbXRYMTgJALwCAwUIcHJBbXRYMTgFB3NjYWxlMTgFCGFtQW10WDE4ARRjYWxjUHJpY2VCaWdJbnRSb3VuZAMIcHJBbXRYMTgIYW1BbXRYMTgFcm91bmQJAL0CBAUIcHJBbXRYMTgFB3NjYWxlMTgFCGFtQW10WDE4BQVyb3VuZAEHZ2V0UmF0ZQEFcHJveHkEA2ludgkA/AcEBQVwcm94eQIHZ2V0UmF0ZQUDbmlsBQNuaWwDCQAAAgUDaW52BQNpbnYEByRtYXRjaDAFA2ludgMJAAECBQckbWF0Y2gwAgNJbnQEAXIFByRtYXRjaDAFAXIJAQh0aHJvd0VycgECIHByb3h5LmdldFJhdGUoKSB1bmV4cGVjdGVkIHZhbHVlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQdkZXBvc2l0BAdhc3NldElkBmFtb3VudA5zdGFraW5nQXNzZXRJZAVwcm94eQQYY3VycmVudEFkZGl0aW9uYWxCYWxhbmNlCQEaZ2V0QWRkaXRpb25hbEJhbGFuY2VPclplcm8BBQdhc3NldElkAwkAAAIFGGN1cnJlbnRBZGRpdGlvbmFsQmFsYW5jZQUYY3VycmVudEFkZGl0aW9uYWxCYWxhbmNlBBpjdXJyZW50U3Rha2luZ0Fzc2V0QmFsYW5jZQkBHGdldFN0YWtpbmdBc3NldEJhbGFuY2VPclplcm8BBQ5zdGFraW5nQXNzZXRJZAMJAAACBRpjdXJyZW50U3Rha2luZ0Fzc2V0QmFsYW5jZQUaY3VycmVudFN0YWtpbmdBc3NldEJhbGFuY2UEBWFzc2V0CQEMcGFyc2VBc3NldElkAQUHYXNzZXRJZAMJAGYCBQZhbW91bnQAAAQNZGVwb3NpdEludm9rZQkA/AcEBQVwcm94eQIHZGVwb3NpdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQVhc3NldAUGYW1vdW50BQNuaWwDCQAAAgUNZGVwb3NpdEludm9rZQUNZGVwb3NpdEludm9rZQQHJG1hdGNoMAUNZGVwb3NpdEludm9rZQMJAAECBQckbWF0Y2gwAgNJbnQEFHJlY2VpdmVkU3Rha2luZ0Fzc2V0BQckbWF0Y2gwBBRuZXdBZGRpdGlvbmFsQmFsYW5jZQkAZAIFGGN1cnJlbnRBZGRpdGlvbmFsQmFsYW5jZQUGYW1vdW50BBZuZXdTdGFraW5nQXNzZXRCYWxhbmNlCQBkAgUaY3VycmVudFN0YWtpbmdBc3NldEJhbGFuY2UFFHJlY2VpdmVkU3Rha2luZ0Fzc2V0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEUa2V5QWRkaXRpb25hbEJhbGFuY2UBBQdhc3NldElkBRRuZXdBZGRpdGlvbmFsQmFsYW5jZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVN0YWtpbmdBc3NldEJhbGFuY2UBBQ5zdGFraW5nQXNzZXRJZAUWbmV3U3Rha2luZ0Fzc2V0QmFsYW5jZQUDbmlsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEId2l0aGRyYXcGB2Fzc2V0SWQGYW1vdW50DnN0YWtpbmdBc3NldElkBXByb3h5DHByb3h5UmF0ZU11bA1wcm9maXRBZGRyZXNzBBhjdXJyZW50QWRkaXRpb25hbEJhbGFuY2UJARpnZXRBZGRpdGlvbmFsQmFsYW5jZU9yWmVybwEFB2Fzc2V0SWQDCQAAAgUYY3VycmVudEFkZGl0aW9uYWxCYWxhbmNlBRhjdXJyZW50QWRkaXRpb25hbEJhbGFuY2UEGmN1cnJlbnRTdGFraW5nQXNzZXRCYWxhbmNlCQEcZ2V0U3Rha2luZ0Fzc2V0QmFsYW5jZU9yWmVybwEFDnN0YWtpbmdBc3NldElkAwkAAAIFGmN1cnJlbnRTdGFraW5nQXNzZXRCYWxhbmNlBRpjdXJyZW50U3Rha2luZ0Fzc2V0QmFsYW5jZQQQY3VycmVudFByb3h5UmF0ZQkBB2dldFJhdGUBBQVwcm94eQMJAAACBRBjdXJyZW50UHJveHlSYXRlBRBjdXJyZW50UHJveHlSYXRlBAdvbGRSYXRlCQBrAwUMcHJveHlSYXRlTXVsBRhjdXJyZW50QWRkaXRpb25hbEJhbGFuY2UFGmN1cnJlbnRTdGFraW5nQXNzZXRCYWxhbmNlBAxzdGFraW5nQXNzZXQJAQxwYXJzZUFzc2V0SWQBBQ5zdGFraW5nQXNzZXRJZAQUb2xkU2VuZFN0YWtpbmdBbW91bnQJAGsDBQxwcm94eVJhdGVNdWwFBmFtb3VudAUHb2xkUmF0ZQQWc2VuZFN0YWtpbmdBc3NldEFtb3VudAkAawMFDHByb3h5UmF0ZU11bAUGYW1vdW50BRBjdXJyZW50UHJveHlSYXRlBAxwcm9maXRBbW91bnQJAJYDAQkAzAgCAAAJAMwIAgkAZQIFFG9sZFNlbmRTdGFraW5nQW1vdW50BRZzZW5kU3Rha2luZ0Fzc2V0QW1vdW50BQNuaWwDCQBmAgUWc2VuZFN0YWtpbmdBc3NldEFtb3VudAAABA53aXRoZHJhd0ludm9rZQkA/AcEBQVwcm94eQIId2l0aGRyYXcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUMc3Rha2luZ0Fzc2V0BRZzZW5kU3Rha2luZ0Fzc2V0QW1vdW50BQNuaWwDCQAAAgUOd2l0aGRyYXdJbnZva2UFDndpdGhkcmF3SW52b2tlBAckbWF0Y2gwBQ53aXRoZHJhd0ludm9rZQMJAAECBQckbWF0Y2gwAgNJbnQEDnJlY2VpdmVkQXNzZXRzBQckbWF0Y2gwBBRuZXdBZGRpdGlvbmFsQmFsYW5jZQkAZQIFGGN1cnJlbnRBZGRpdGlvbmFsQmFsYW5jZQUOcmVjZWl2ZWRBc3NldHMEFm5ld1N0YWtpbmdBc3NldEJhbGFuY2UJAGUCCQBlAgUaY3VycmVudFN0YWtpbmdBc3NldEJhbGFuY2UFFnNlbmRTdGFraW5nQXNzZXRBbW91bnQFDHByb2ZpdEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFGtleUFkZGl0aW9uYWxCYWxhbmNlAQUHYXNzZXRJZAUUbmV3QWRkaXRpb25hbEJhbGFuY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlTdGFraW5nQXNzZXRCYWxhbmNlAQUOc3Rha2luZ0Fzc2V0SWQFFm5ld1N0YWtpbmdBc3NldEJhbGFuY2UJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUNcHJvZml0QWRkcmVzcwUMcHJvZml0QW1vdW50CQEMcGFyc2VBc3NldElkAQUOc3Rha2luZ0Fzc2V0SWQFA25pbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BE2dldExlYXNlUHJveHlDb25maWcBB2Fzc2V0SWQEByRtYXRjaDAJAPwHBAUPZmFjdG9yeUNvbnRyYWN0AhpnZXRQb29sTGVhc2VDb25maWdSRUFET05MWQkAzAgCCQClCAEFBHRoaXMJAMwIAgUHYXNzZXRJZAUDbmlsBQNuaWwDCQABAgUHJG1hdGNoMAIwKEJvb2xlYW4sIEludCwgSW50LCBTdHJpbmcsIFN0cmluZywgSW50LCBTdHJpbmcpBAFhBQckbWF0Y2gwBQFhCQEIdGhyb3dFcnIBCQCsAgIJAKwCAgIBWwUHYXNzZXRJZAIdXSBnZXRMZWFzZVByb3h5Q29uZmlnKCkgZXJyb3IBEXJlYmFsYW5jZUludGVybmFsBwt0YXJnZXRSYXRpbwdhc3NldElkDnN0YWtpbmdBc3NldElkCm1pbkJhbGFuY2UFcHJveHkMcHJveHlSYXRlTXVsDXByb2ZpdEFkZHJlc3MEGmN1cnJlbnRTdGFraW5nQXNzZXRCYWxhbmNlCQEcZ2V0U3Rha2luZ0Fzc2V0QmFsYW5jZU9yWmVybwEFDnN0YWtpbmdBc3NldElkAwkAAAIFGmN1cnJlbnRTdGFraW5nQXNzZXRCYWxhbmNlBRpjdXJyZW50U3Rha2luZ0Fzc2V0QmFsYW5jZQQYY3VycmVudEFkZGl0aW9uYWxCYWxhbmNlAwkBAiE9AgUaY3VycmVudFN0YWtpbmdBc3NldEJhbGFuY2UAAAkBGmdldEFkZGl0aW9uYWxCYWxhbmNlT3JaZXJvAQUHYXNzZXRJZAAAAwkAAAIFGGN1cnJlbnRBZGRpdGlvbmFsQmFsYW5jZQUYY3VycmVudEFkZGl0aW9uYWxCYWxhbmNlBBRsZWFzYWJsZVRvdGFsQmFsYW5jZQkAlgMBCQDMCAIAAAkAzAgCCQBlAgkBDWdldEFjY0JhbGFuY2UBBQdhc3NldElkBQptaW5CYWxhbmNlBQNuaWwEF3RhcmdldEFkZGl0aW9uYWxCYWxhbmNlCQBrAwULdGFyZ2V0UmF0aW8FFGxlYXNhYmxlVG90YWxCYWxhbmNlAGQEBGRpZmYJAGUCBRhjdXJyZW50QWRkaXRpb25hbEJhbGFuY2UFF3RhcmdldEFkZGl0aW9uYWxCYWxhbmNlAwkAAAIFBGRpZmYAAAUDbmlsAwkAZgIAAAUEZGlmZgQPc2VuZEFzc2V0QW1vdW50CQEBLQEFBGRpZmYJAQdkZXBvc2l0BAUHYXNzZXRJZAUPc2VuZEFzc2V0QW1vdW50BQ5zdGFraW5nQXNzZXRJZAUFcHJveHkEDmdldEFzc2V0QW1vdW50BQRkaWZmCQEId2l0aGRyYXcGBQdhc3NldElkBQ5nZXRBc3NldEFtb3VudAUOc3Rha2luZ0Fzc2V0SWQFBXByb3h5BQxwcm94eVJhdGVNdWwFDXByb2ZpdEFkZHJlc3MJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDnJlYmFsYW5jZUFzc2V0AQdhc3NldElkBA0kdDAxNjIyMDE2MzU2CQETZ2V0TGVhc2VQcm94eUNvbmZpZwEFB2Fzc2V0SWQECmlzTGVhc2FibGUIBQ0kdDAxNjIyMDE2MzU2Al8xBAtsZWFzZWRSYXRpbwgFDSR0MDE2MjIwMTYzNTYCXzIECm1pbkJhbGFuY2UIBQ0kdDAxNjIyMDE2MzU2Al8zBAxwcm94eUFkZHJlc3MIBQ0kdDAxNjIyMDE2MzU2Al80BAxwcm94eUFzc2V0SWQIBQ0kdDAxNjIyMDE2MzU2Al81BAxwcm94eVJhdGVNdWwIBQ0kdDAxNjIyMDE2MzU2Al82BBRzdGFraW5nUHJvZml0QWRkcmVzcwgFDSR0MDE2MjIwMTYzNTYCXzcDBQppc0xlYXNhYmxlCQERcmViYWxhbmNlSW50ZXJuYWwHBQtsZWFzZWRSYXRpbwUHYXNzZXRJZAUMcHJveHlBc3NldElkBQptaW5CYWxhbmNlCQERQGV4dHJOYXRpdmUoMTA2MikBBQxwcm94eUFkZHJlc3MFDHByb3h5UmF0ZU11bAkBEUBleHRyTmF0aXZlKDEwNjIpAQUUc3Rha2luZ1Byb2ZpdEFkZHJlc3MFA25pbAEZd2l0aGRyYXdBbmRSZWJhbGFuY2VBc3NldAIHYXNzZXRJZAlnZXRBbW91bnQEDSR0MDE2NzU1MTY4OTEJARNnZXRMZWFzZVByb3h5Q29uZmlnAQUHYXNzZXRJZAQKaXNMZWFzYWJsZQgFDSR0MDE2NzU1MTY4OTECXzEEC2xlYXNlZFJhdGlvCAUNJHQwMTY3NTUxNjg5MQJfMgQKbWluQmFsYW5jZQgFDSR0MDE2NzU1MTY4OTECXzMEDHByb3h5QWRkcmVzcwgFDSR0MDE2NzU1MTY4OTECXzQEDHByb3h5QXNzZXRJZAgFDSR0MDE2NzU1MTY4OTECXzUEDHByb3h5UmF0ZU11bAgFDSR0MDE2NzU1MTY4OTECXzYEFHN0YWtpbmdQcm9maXRBZGRyZXNzCAUNJHQwMTY3NTUxNjg5MQJfNwMFCmlzTGVhc2FibGUEGmN1cnJlbnRTdGFraW5nQXNzZXRCYWxhbmNlCQEcZ2V0U3Rha2luZ0Fzc2V0QmFsYW5jZU9yWmVybwEFDHByb3h5QXNzZXRJZAMJAAACBRpjdXJyZW50U3Rha2luZ0Fzc2V0QmFsYW5jZQUaY3VycmVudFN0YWtpbmdBc3NldEJhbGFuY2UEGGN1cnJlbnRBZGRpdGlvbmFsQmFsYW5jZQMJAQIhPQIFGmN1cnJlbnRTdGFraW5nQXNzZXRCYWxhbmNlAAAJARpnZXRBZGRpdGlvbmFsQmFsYW5jZU9yWmVybwEFB2Fzc2V0SWQAAAMJAAACBRhjdXJyZW50QWRkaXRpb25hbEJhbGFuY2UFGGN1cnJlbnRBZGRpdGlvbmFsQmFsYW5jZQQXbmV3VG90YWxMZWFzYWJsZUJhbGFuY2UJAJYDAQkAzAgCAAAJAMwIAgkAZQIJAGUCCQENZ2V0QWNjQmFsYW5jZQEFB2Fzc2V0SWQFCWdldEFtb3VudAUKbWluQmFsYW5jZQUDbmlsAwkAAAIFF25ld1RvdGFsTGVhc2FibGVCYWxhbmNlBRduZXdUb3RhbExlYXNhYmxlQmFsYW5jZQQUbmV3QWRkaXRpb25hbEJhbGFuY2UJAGsDBQtsZWFzZWRSYXRpbwUXbmV3VG90YWxMZWFzYWJsZUJhbGFuY2UAZAMJAAACBRRuZXdBZGRpdGlvbmFsQmFsYW5jZQUUbmV3QWRkaXRpb25hbEJhbGFuY2UEDndpdGhkcmF3QW1vdW50CQBlAgUYY3VycmVudEFkZGl0aW9uYWxCYWxhbmNlBRRuZXdBZGRpdGlvbmFsQmFsYW5jZQMJAAACBQ53aXRoZHJhd0Ftb3VudAUOd2l0aGRyYXdBbW91bnQDCQBmAgAABQ53aXRoZHJhd0Ftb3VudAkBB2RlcG9zaXQEBQdhc3NldElkCQEBLQEFDndpdGhkcmF3QW1vdW50BQxwcm94eUFzc2V0SWQJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDHByb3h5QWRkcmVzcwkBCHdpdGhkcmF3BgUHYXNzZXRJZAUOd2l0aGRyYXdBbW91bnQFDHByb3h5QXNzZXRJZAkBEUBleHRyTmF0aXZlKDEwNjIpAQUMcHJveHlBZGRyZXNzBQxwcm94eVJhdGVNdWwJARFAZXh0ck5hdGl2ZSgxMDYyKQEFFHN0YWtpbmdQcm9maXRBZGRyZXNzCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwBF3dpdGhkcmF3QW5kUmViYWxhbmNlQWxsAhRhbW91bnRBc3NldE91dEFtb3VudBNwcmljZUFzc2V0T3V0QW1vdW50BBJBbUFtdFdpdGhkcmF3U3RhdGUJARl3aXRoZHJhd0FuZFJlYmFsYW5jZUFzc2V0AgkBD2dldFN0cmluZ09yRmFpbAIFBHRoaXMJAQJhYQAFFGFtb3VudEFzc2V0T3V0QW1vdW50BBJQckFtdFdpdGhkcmF3U3RhdGUJARl3aXRoZHJhd0FuZFJlYmFsYW5jZUFzc2V0AgkBD2dldFN0cmluZ09yRmFpbAIFBHRoaXMJAQJwYQAFE3ByaWNlQXNzZXRPdXRBbW91bnQJAM4IAgUSQW1BbXRXaXRoZHJhd1N0YXRlBRJQckFtdFdpdGhkcmF3U3RhdGUBEHByaXZhdGVDYWxjUHJpY2UECmFtQXNzZXREY20KcHJBc3NldERjbQVhbUFtdAVwckFtdAQOYW10QXNzZXRBbXRYMTgJAQV0b1gxOAIFBWFtQW10BQphbUFzc2V0RGNtBBBwcmljZUFzc2V0QW10WDE4CQEFdG9YMTgCBQVwckFtdAUKcHJBc3NldERjbQkBD2NhbGNQcmljZUJpZ0ludAIFEHByaWNlQXNzZXRBbXRYMTgFDmFtdEFzc2V0QW10WDE4AQpjYWxjUHJpY2VzAwVhbUFtdAVwckFtdAVscEFtdAQDY2ZnCQENZ2V0UG9vbENvbmZpZwAEC2FtdEFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ5pZHhBbXRBc3NldERjbQQNcHJpY2VBc3NldERjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUQaWR4UHJpY2VBc3NldERjbQQIcHJpY2VYMTgJARBwcml2YXRlQ2FsY1ByaWNlBAULYW10QXNzZXREY20FDXByaWNlQXNzZXREY20FBWFtQW10BQVwckFtdAQIYW1BbXRYMTgJAQV0b1gxOAIFBWFtQW10BQthbXRBc3NldERjbQQIcHJBbXRYMTgJAQV0b1gxOAIFBXByQW10BQ1wcmljZUFzc2V0RGNtBAhscEFtdFgxOAkBBXRvWDE4AgUFbHBBbXQFBnNjYWxlOAQTbHBQcmljZUluQW1Bc3NldFgxOAkBD2NhbGNQcmljZUJpZ0ludAIFCGFtQW10WDE4BQhscEFtdFgxOAQTbHBQcmljZUluUHJBc3NldFgxOAkBD2NhbGNQcmljZUJpZ0ludAIFCHByQW10WDE4BQhscEFtdFgxOAkAzAgCBQhwcmljZVgxOAkAzAgCBRNscFByaWNlSW5BbUFzc2V0WDE4CQDMCAIFE2xwUHJpY2VJblByQXNzZXRYMTgFA25pbAEPY2FsY3VsYXRlUHJpY2VzAwVhbUFtdAVwckFtdAVscEFtdAQGcHJpY2VzCQEKY2FsY1ByaWNlcwMFBWFtQW10BQVwckFtdAUFbHBBbXQJAMwIAgkBB2Zyb21YMTgCCQCRAwIFBnByaWNlcwAABQZzY2FsZTgJAMwIAgkBB2Zyb21YMTgCCQCRAwIFBnByaWNlcwABBQZzY2FsZTgJAMwIAgkBB2Zyb21YMTgCCQCRAwIFBnByaWNlcwACBQZzY2FsZTgFA25pbAEUZXN0aW1hdGVHZXRPcGVyYXRpb24EBnR4SWQ1OApwbXRBc3NldElkCHBtdExwQW10C3VzZXJBZGRyZXNzBANjZmcJAQ1nZXRQb29sQ29uZmlnAAQJbHBBc3NldElkCQCRAwIFA2NmZwUQaWR4UG9vbExQQXNzZXRJZAQJYW1Bc3NldElkCQCRAwIFA2NmZwUNaWR4QW10QXNzZXRJZAQJcHJBc3NldElkCQCRAwIFA2NmZwUPaWR4UHJpY2VBc3NldElkBAphbUFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ5pZHhBbXRBc3NldERjbQQKcHJBc3NldERjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUQaWR4UHJpY2VBc3NldERjbQQKcG9vbFN0YXR1cwkAkQMCBQNjZmcFDWlkeFBvb2xTdGF0dXMECmxwRW1pc3Npb24ICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQlscEFzc2V0SWQJAKwCAgkArAICAgZBc3NldCAFCWxwQXNzZXRJZAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkDCQECIT0CBQlscEFzc2V0SWQFCnBtdEFzc2V0SWQJAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4ECWFtQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQlhbUFzc2V0SWQEDGFtQmFsYW5jZVgxOAkBBXRvWDE4AgUJYW1CYWxhbmNlBQphbUFzc2V0RGNtBAlwckJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUJcHJBc3NldElkBAxwckJhbGFuY2VYMTgJAQV0b1gxOAIFCXByQmFsYW5jZQUKcHJBc3NldERjbQQLY3VyUHJpY2VYMTgJAQ9jYWxjUHJpY2VCaWdJbnQCBQxwckJhbGFuY2VYMTgFDGFtQmFsYW5jZVgxOAQIY3VyUHJpY2UJAQdmcm9tWDE4AgULY3VyUHJpY2VYMTgFBnNjYWxlOAQLcG10THBBbXRYMTgJAQV0b1gxOAIFCHBtdExwQW10BQZzY2FsZTgEDWxwRW1pc3Npb25YMTgJAQV0b1gxOAIFCmxwRW1pc3Npb24FBnNjYWxlOAQLb3V0QW1BbXRYMTgJALwCAwUMYW1CYWxhbmNlWDE4BQtwbXRMcEFtdFgxOAUNbHBFbWlzc2lvblgxOAQLb3V0UHJBbXRYMTgJALwCAwUMcHJCYWxhbmNlWDE4BQtwbXRMcEFtdFgxOAUNbHBFbWlzc2lvblgxOAQIb3V0QW1BbXQJAQxmcm9tWDE4Um91bmQDBQtvdXRBbUFtdFgxOAUKYW1Bc3NldERjbQUFRkxPT1IECG91dFByQW10CQEMZnJvbVgxOFJvdW5kAwULb3V0UHJBbXRYMTgFCnByQXNzZXREY20FBUZMT09SBAVzdGF0ZQMJAAACBQZ0eElkNTgCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQhvdXRBbUFtdAMJAAACBQlhbUFzc2V0SWQCBVdBVkVTBQR1bml0CQDZBAEFCWFtQXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQt1c2VyQWRkcmVzcwUIb3V0UHJBbXQDCQAAAgUJcHJBc3NldElkAgVXQVZFUwUEdW5pdAkA2QQBBQlwckFzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBA2dhdQIJAKUIAQULdXNlckFkZHJlc3MFBnR4SWQ1OAkBEWRhdGFHZXRBY3Rpb25JbmZvBgUIb3V0QW1BbXQFCG91dFByQW10BQhwbXRMcEFtdAUIY3VyUHJpY2UFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwbAAFCGN1clByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQhjdXJQcmljZQUDbmlsCQCcCgoFCG91dEFtQW10BQhvdXRQckFtdAUJYW1Bc3NldElkBQlwckFzc2V0SWQFCWFtQmFsYW5jZQUJcHJCYWxhbmNlBQpscEVtaXNzaW9uBQtjdXJQcmljZVgxOAUKcG9vbFN0YXR1cwUFc3RhdGUBFGVzdGltYXRlUHV0T3BlcmF0aW9uCQZ0eElkNTgRc2xpcHBhZ2VUb2xlcmFuY2UMaW5BbUFzc2V0QW10C2luQW1Bc3NldElkDGluUHJBc3NldEFtdAtpblByQXNzZXRJZAt1c2VyQWRkcmVzcwppc0V2YWx1YXRlBmVtaXRMcAQDY2ZnCQENZ2V0UG9vbENvbmZpZwAECWxwQXNzZXRJZAkA2QQBCQCRAwIFA2NmZwUQaWR4UG9vbExQQXNzZXRJZAQMYW1Bc3NldElkU3RyCQCRAwIFA2NmZwUNaWR4QW10QXNzZXRJZAQMcHJBc3NldElkU3RyCQCRAwIFA2NmZwUPaWR4UHJpY2VBc3NldElkBAtpQW10QXNzZXRJZAkAkQMCBQNjZmcFDmlkeElBbXRBc3NldElkBA1pUHJpY2VBc3NldElkCQCRAwIFA2NmZwUQaWR4SVByaWNlQXNzZXRJZAQLYW10QXNzZXREY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDmlkeEFtdEFzc2V0RGNtBA1wcmljZUFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBRBpZHhQcmljZUFzc2V0RGNtBApwb29sU3RhdHVzCQCRAwIFA2NmZwUNaWR4UG9vbFN0YXR1cwQKbHBFbWlzc2lvbggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQlscEFzc2V0SWQJAKwCAgkArAICAgZBc3NldCAJANgEAQUJbHBBc3NldElkAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQOaW5BbUFzc2V0SWRTdHIJANgEAQkBC3ZhbHVlT3JFbHNlAgULaW5BbUFzc2V0SWQJANkEAQIFV0FWRVMEDmluUHJBc3NldElkU3RyCQDYBAEJAQt2YWx1ZU9yRWxzZQIFC2luUHJBc3NldElkCQDZBAECBVdBVkVTAwMJAQIhPQIFDGFtQXNzZXRJZFN0cgUOaW5BbUFzc2V0SWRTdHIGCQECIT0CBQxwckFzc2V0SWRTdHIFDmluUHJBc3NldElkU3RyCQACAQIiSW52YWxpZCBhbXQgb3IgcHJpY2UgYXNzZXQgcGFzc2VkLgQJYW1CYWxhbmNlAwUKaXNFdmFsdWF0ZQkBDWdldEFjY0JhbGFuY2UBBQxhbUFzc2V0SWRTdHIJAGUCCQENZ2V0QWNjQmFsYW5jZQEFDGFtQXNzZXRJZFN0cgUMaW5BbUFzc2V0QW10BAlwckJhbGFuY2UDBQppc0V2YWx1YXRlCQENZ2V0QWNjQmFsYW5jZQEFDHByQXNzZXRJZFN0cgkAZQIJAQ1nZXRBY2NCYWxhbmNlAQUMcHJBc3NldElkU3RyBQxpblByQXNzZXRBbXQED2luQW1Bc3NldEFtdFgxOAkBBXRvWDE4AgUMaW5BbUFzc2V0QW10BQthbXRBc3NldERjbQQPaW5QckFzc2V0QW10WDE4CQEFdG9YMTgCBQxpblByQXNzZXRBbXQFDXByaWNlQXNzZXREY20EDHVzZXJQcmljZVgxOAkBD2NhbGNQcmljZUJpZ0ludAIFD2luUHJBc3NldEFtdFgxOAUPaW5BbUFzc2V0QW10WDE4BAxhbUJhbGFuY2VYMTgJAQV0b1gxOAIFCWFtQmFsYW5jZQULYW10QXNzZXREY20EDHByQmFsYW5jZVgxOAkBBXRvWDE4AgUJcHJCYWxhbmNlBQ1wcmljZUFzc2V0RGNtBANyZXMDCQAAAgUKbHBFbWlzc2lvbgAABAtjdXJQcmljZVgxOAUKemVyb0JpZ0ludAQLc2xpcHBhZ2VYMTgFCnplcm9CaWdJbnQECGxwQW10WDE4CQB2BgkAuQICBQ9pbkFtQXNzZXRBbXRYMTgFD2luUHJBc3NldEFtdFgxOAAACQC2AgEABQABAAAFBERPV04JAJcKBQkBB2Zyb21YMTgCBQhscEFtdFgxOAUGc2NhbGU4CQEHZnJvbVgxOAIFD2luQW1Bc3NldEFtdFgxOAULYW10QXNzZXREY20JAQdmcm9tWDE4AgUPaW5QckFzc2V0QW10WDE4BQ1wcmljZUFzc2V0RGNtCQEPY2FsY1ByaWNlQmlnSW50AgkAtwICBQxwckJhbGFuY2VYMTgFD2luUHJBc3NldEFtdFgxOAkAtwICBQxhbUJhbGFuY2VYMTgFD2luQW1Bc3NldEFtdFgxOAULc2xpcHBhZ2VYMTgEC2N1clByaWNlWDE4CQEPY2FsY1ByaWNlQmlnSW50AgUMcHJCYWxhbmNlWDE4BQxhbUJhbGFuY2VYMTgEC3NsaXBwYWdlWDE4CQC8AgMJAQlhYnNCaWdJbnQBCQC4AgIFC2N1clByaWNlWDE4BQx1c2VyUHJpY2VYMTgFB3NjYWxlMTgFC2N1clByaWNlWDE4BBRzbGlwcGFnZVRvbGVyYW5jZVgxOAkBBXRvWDE4AgURc2xpcHBhZ2VUb2xlcmFuY2UFBnNjYWxlOAMDCQECIT0CBQtjdXJQcmljZVgxOAUKemVyb0JpZ0ludAkAvwICBQtzbGlwcGFnZVgxOAUUc2xpcHBhZ2VUb2xlcmFuY2VYMTgHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFC3NsaXBwYWdlWDE4Ah4gZXhjZWVkZWQgdGhlIHBhc3NlZCBsaW1pdCBvZiAJAKYDAQUUc2xpcHBhZ2VUb2xlcmFuY2VYMTgEDWxwRW1pc3Npb25YMTgJAQV0b1gxOAIFCmxwRW1pc3Npb24FBnNjYWxlOAQKcHJWaWFBbVgxOAkAvQIEBQ9pbkFtQXNzZXRBbXRYMTgJARRjYWxjUHJpY2VCaWdJbnRSb3VuZAMFDHByQmFsYW5jZVgxOAUMYW1CYWxhbmNlWDE4BQdDRUlMSU5HBQdzY2FsZTE4BQdDRUlMSU5HBAphbVZpYVByWDE4CQC9AgQFD2luUHJBc3NldEFtdFgxOAUHc2NhbGUxOAkBFGNhbGNQcmljZUJpZ0ludFJvdW5kAwUMcHJCYWxhbmNlWDE4BQxhbUJhbGFuY2VYMTgFBUZMT09SBQdDRUlMSU5HBAxleHBlY3RlZEFtdHMDCQC/AgIFCnByVmlhQW1YMTgFD2luUHJBc3NldEFtdFgxOAkAlAoCBQphbVZpYVByWDE4BQ9pblByQXNzZXRBbXRYMTgJAJQKAgUPaW5BbUFzc2V0QW10WDE4BQpwclZpYUFtWDE4BBFleHBBbXRBc3NldEFtdFgxOAgFDGV4cGVjdGVkQW10cwJfMQQTZXhwUHJpY2VBc3NldEFtdFgxOAgFDGV4cGVjdGVkQW10cwJfMgQIbHBBbXRYMTgJAL0CBAUNbHBFbWlzc2lvblgxOAUTZXhwUHJpY2VBc3NldEFtdFgxOAUMcHJCYWxhbmNlWDE4BQVGTE9PUgkAlwoFCQEMZnJvbVgxOFJvdW5kAwUIbHBBbXRYMTgFBnNjYWxlOAUFRkxPT1IJAQxmcm9tWDE4Um91bmQDBRFleHBBbXRBc3NldEFtdFgxOAULYW10QXNzZXREY20FB0NFSUxJTkcJAQxmcm9tWDE4Um91bmQDBRNleHBQcmljZUFzc2V0QW10WDE4BQ1wcmljZUFzc2V0RGNtBQdDRUlMSU5HBQtjdXJQcmljZVgxOAULc2xpcHBhZ2VYMTgECWNhbGNMcEFtdAgFA3JlcwJfMQQOY2FsY0FtQXNzZXRQbXQIBQNyZXMCXzIEDmNhbGNQckFzc2V0UG10CAUDcmVzAl8zBAhjdXJQcmljZQkBB2Zyb21YMTgCCAUDcmVzAl80BQZzY2FsZTgEDHNsaXBwYWdlQ2FsYwkBB2Zyb21YMTgCCAUDcmVzAl81BQZzY2FsZTgDCQBnAgAABQljYWxjTHBBbXQJAAIBAjZJbnZhbGlkIGNhbGN1bGF0aW9ucy4gTFAgY2FsY3VsYXRlZCBpcyBsZXNzIHRoYW4gemVyby4ECWVtaXRMcEFtdAMJAQEhAQUGZW1pdExwAAAFCWNhbGNMcEFtdAQGYW1EaWZmCQBlAgUMaW5BbUFzc2V0QW10BQ5jYWxjQW1Bc3NldFBtdAQGcHJEaWZmCQBlAgUMaW5QckFzc2V0QW10BQ5jYWxjUHJBc3NldFBtdAQLY29tbW9uU3RhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwbAAFCGN1clByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQhjdXJQcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQEDcGF1AgULdXNlckFkZHJlc3MFBnR4SWQ1OAkBEWRhdGFQdXRBY3Rpb25JbmZvCgUOY2FsY0FtQXNzZXRQbXQFDmNhbGNQckFzc2V0UG10BQllbWl0THBBbXQFCGN1clByaWNlBRFzbGlwcGFnZVRvbGVyYW5jZQUMc2xpcHBhZ2VDYWxjBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQZhbURpZmYFBnByRGlmZgUDbmlsCQCfCg0FCWNhbGNMcEFtdAUJZW1pdExwQW10BQhjdXJQcmljZQUJYW1CYWxhbmNlBQlwckJhbGFuY2UFCmxwRW1pc3Npb24FCWxwQXNzZXRJZAUKcG9vbFN0YXR1cwULY29tbW9uU3RhdGUFBmFtRGlmZgUGcHJEaWZmBQtpbkFtQXNzZXRJZAULaW5QckFzc2V0SWQBB2NhbGNLTHADDWFtb3VudEJhbGFuY2UMcHJpY2VCYWxhbmNlCmxwRW1pc3Npb24EEGFtb3VudEJhbGFuY2VYMTgJAQt0b1gxOEJpZ0ludAIFDWFtb3VudEJhbGFuY2UJALYCAQUWY2ZnQW1vdW50QXNzZXREZWNpbWFscwQPcHJpY2VCYWxhbmNlWDE4CQELdG9YMThCaWdJbnQCBQxwcmljZUJhbGFuY2UJALYCAQUVY2ZnUHJpY2VBc3NldERlY2ltYWxzBAp1cGRhdGVkS0xwCQC8AgMJAHYGCQC5AgIFEGFtb3VudEJhbGFuY2VYMTgFD3ByaWNlQmFsYW5jZVgxOAAACQC2AgEABQABABIFBERPV04FBGJpZzEFCmxwRW1pc3Npb24DCQAAAgUKbHBFbWlzc2lvbgUEYmlnMAUEYmlnMAUKdXBkYXRlZEtMcAEOY2FsY0N1cnJlbnRLTHADEGFtb3VudEFzc2V0RGVsdGEPcHJpY2VBc3NldERlbHRhFGxwQXNzZXRFbWlzc2lvbkRlbHRhBBJhbW91bnRBc3NldEJhbGFuY2UJALgCAgkAtgIBCQENZ2V0QWNjQmFsYW5jZQEJAQ9hc3NldElkVG9TdHJpbmcBBRBjZmdBbW91bnRBc3NldElkBRBhbW91bnRBc3NldERlbHRhBBFwcmljZUFzc2V0QmFsYW5jZQkAuAICCQC2AgEJAQ1nZXRBY2NCYWxhbmNlAQkBD2Fzc2V0SWRUb1N0cmluZwEFD2NmZ1ByaWNlQXNzZXRJZAUPcHJpY2VBc3NldERlbHRhBA9scEFzc2V0RW1pc3Npb24JALgCAgkAtgIBCAkBBXZhbHVlAQkA7AcBBQxjZmdMcEFzc2V0SWQIcXVhbnRpdHkFFGxwQXNzZXRFbWlzc2lvbkRlbHRhBApjdXJyZW50S0xwCQEHY2FsY0tMcAMFEmFtb3VudEFzc2V0QmFsYW5jZQURcHJpY2VBc3NldEJhbGFuY2UFD2xwQXNzZXRFbWlzc2lvbgUKY3VycmVudEtMcAEScmVmcmVzaEtMcEludGVybmFsAxdhbW91bnRBc3NldEJhbGFuY2VEZWx0YRZwcmljZUFzc2V0QmFsYW5jZURlbHRhFGxwQXNzZXRFbWlzc2lvbkRlbHRhBBJhbW91bnRBc3NldEJhbGFuY2UJAGQCCQENZ2V0QWNjQmFsYW5jZQEJAQ9hc3NldElkVG9TdHJpbmcBBRBjZmdBbW91bnRBc3NldElkBRdhbW91bnRBc3NldEJhbGFuY2VEZWx0YQQRcHJpY2VBc3NldEJhbGFuY2UJAGQCCQENZ2V0QWNjQmFsYW5jZQEJAQ9hc3NldElkVG9TdHJpbmcBBQ9jZmdQcmljZUFzc2V0SWQFFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEED2xwQXNzZXRFbWlzc2lvbgkAZAIICQEFdmFsdWUBCQDsBwEFDGNmZ0xwQXNzZXRJZAhxdWFudGl0eQUUbHBBc3NldEVtaXNzaW9uRGVsdGEECnVwZGF0ZWRLTHAJAQdjYWxjS0xwAwkAtgIBBRJhbW91bnRBc3NldEJhbGFuY2UJALYCAQURcHJpY2VBc3NldEJhbGFuY2UJALYCAQUPbHBBc3NldEVtaXNzaW9uBAdhY3Rpb25zCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVrZXlLTHBSZWZyZXNoZWRIZWlnaHQFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQZrZXlLTHAJAKYDAQUKdXBkYXRlZEtMcAUDbmlsCQCUCgIFB2FjdGlvbnMFCnVwZGF0ZWRLTHABE3NraXBPcmRlclZhbGlkYXRpb24ACQELdmFsdWVPckVsc2UCCQCbCAIFD2ZhY3RvcnlDb250cmFjdAkBFmtleVNraXBPcmRlclZhbGlkYXRpb24BCQClCAEFBHRoaXMHARJ2YWxpZGF0ZVVwZGF0ZWRLTHACBm9sZEtMcAp1cGRhdGVkS0xwAwkAwAICBQp1cGRhdGVkS0xwBQZvbGRLTHAGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIidXBkYXRlZCBLTHAgbG93ZXIgdGhhbiBjdXJyZW50IEtMcAkAzAgCCQCmAwEFBm9sZEtMcAkAzAgCCQCmAwEFCnVwZGF0ZWRLTHAFA25pbAIBIAEbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkAQVvcmRlcgQSYW1vdW50QXNzZXRCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEJAQ9hc3NldElkVG9TdHJpbmcBBRBjZmdBbW91bnRBc3NldElkBBFwcmljZUFzc2V0QmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBCQEPYXNzZXRJZFRvU3RyaW5nAQUPY2ZnUHJpY2VBc3NldElkBBFhbW91bnRBc3NldEFtb3VudAgFBW9yZGVyBmFtb3VudAQQcHJpY2VBc3NldEFtb3VudAkAbgQIBQVvcmRlcgZhbW91bnQIBQVvcmRlcgVwcmljZQUGc2NhbGU4BQVGTE9PUgQNJHQwMjk0NzUyOTY4NwMJAAACCAUFb3JkZXIJb3JkZXJUeXBlBQNCdXkJAJQKAgURYW1vdW50QXNzZXRBbW91bnQJAQEtAQUQcHJpY2VBc3NldEFtb3VudAkAlAoCCQEBLQEFEWFtb3VudEFzc2V0QW1vdW50BRBwcmljZUFzc2V0QW1vdW50BBdhbW91bnRBc3NldEJhbGFuY2VEZWx0YQgFDSR0MDI5NDc1Mjk2ODcCXzEEFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEIBQ0kdDAyOTQ3NTI5Njg3Al8yAwMDCQEQaXNHbG9iYWxTaHV0ZG93bgAGCQAAAgUNY2ZnUG9vbFN0YXR1cwUTUG9vbE1hdGNoZXJEaXNhYmxlZAYJAAACBQ1jZmdQb29sU3RhdHVzBQxQb29sU2h1dGRvd24JAAIBAhxFeGNoYW5nZSBvcGVyYXRpb25zIGRpc2FibGVkAwMJAQIhPQIICAUFb3JkZXIJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BRBjZmdBbW91bnRBc3NldElkBgkBAiE9AggIBQVvcmRlcglhc3NldFBhaXIKcHJpY2VBc3NldAUPY2ZnUHJpY2VBc3NldElkCQACAQITV3Jvbmcgb3JkZXIgYXNzZXRzLgQDa0xwCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQZrZXlLTHACATAJAQZmbXRFcnIBAgtpbnZhbGlkIGtMcAQNJHQwMzAxMjczMDIyNwkBEnJlZnJlc2hLTHBJbnRlcm5hbAMFF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhBRZwcmljZUFzc2V0QmFsYW5jZURlbHRhAAAEDXVudXNlZEFjdGlvbnMIBQ0kdDAzMDEyNzMwMjI3Al8xBAZrTHBOZXcIBQ0kdDAzMDEyNzMwMjI3Al8yBAxpc09yZGVyVmFsaWQJAMACAgUGa0xwTmV3BQNrTHAEBGluZm8JALkJAgkAzAgCAgRrTHA9CQDMCAIJAKYDAQUDa0xwCQDMCAICCCBrTHBOZXc9CQDMCAIJAKYDAQUGa0xwTmV3CQDMCAICFCBhbW91bnRBc3NldEJhbGFuY2U9CQDMCAIJAKQDAQUSYW1vdW50QXNzZXRCYWxhbmNlCQDMCAICEyBwcmljZUFzc2V0QmFsYW5jZT0JAMwIAgkApAMBBRFwcmljZUFzc2V0QmFsYW5jZQkAzAgCAhkgYW1vdW50QXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEJAMwIAgIYIHByaWNlQXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUWcHJpY2VBc3NldEJhbGFuY2VEZWx0YQkAzAgCAgggaGVpZ2h0PQkAzAgCCQCkAwEFBmhlaWdodAUDbmlsAgAJAJQKAgUMaXNPcmRlclZhbGlkBQRpbmZvAQljb21tb25HZXQBAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAh1leGFjdGx5IDEgcGF5bWVudCBpcyBleHBlY3RlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAECnBtdEFzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQGcG10QW10CAUDcG10BmFtb3VudAQDcmVzCQEUZXN0aW1hdGVHZXRPcGVyYXRpb24ECQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQUKcG10QXNzZXRJZAUGcG10QW10CAUBaQZjYWxsZXIECG91dEFtQW10CAUDcmVzAl8xBAhvdXRQckFtdAgFA3JlcwJfMgQFc3RhdGUIBQNyZXMDXzEwBA1pc0dldERpc2FibGVkAwkBASEBCQEUaXNBZGRyZXNzV2hpdGVsaXN0ZWQBCAUBaQZjYWxsZXIDCQEQaXNHbG9iYWxTaHV0ZG93bgAGCQAAAgUNY2ZnUG9vbFN0YXR1cwUMUG9vbFNodXRkb3duBwMFDWlzR2V0RGlzYWJsZWQJAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFDWNmZ1Bvb2xTdGF0dXMJAJcKBQUIb3V0QW1BbXQFCG91dFByQW10BQZwbXRBbXQFCnBtdEFzc2V0SWQFBXN0YXRlAQljb21tb25QdXQDAWkRc2xpcHBhZ2VUb2xlcmFuY2UGZW1pdExwAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwACCQACAQIfZXhhY3RseSAyIHBheW1lbnRzIGFyZSBleHBlY3RlZAQKYW1Bc3NldFBtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABApwckFzc2V0UG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAEEBmVzdFB1dAkBFGVzdGltYXRlUHV0T3BlcmF0aW9uCQkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBRFzbGlwcGFnZVRvbGVyYW5jZQgFCmFtQXNzZXRQbXQGYW1vdW50CAUKYW1Bc3NldFBtdAdhc3NldElkCAUKcHJBc3NldFBtdAZhbW91bnQIBQpwckFzc2V0UG10B2Fzc2V0SWQJAKUIAQgFAWkGY2FsbGVyBwUGZW1pdExwBA1pc1B1dERpc2FibGVkAwkBASEBCQEUaXNBZGRyZXNzV2hpdGVsaXN0ZWQBCAUBaQZjYWxsZXIDAwkBEGlzR2xvYmFsU2h1dGRvd24ABgkAAAIFDWNmZ1Bvb2xTdGF0dXMFD1Bvb2xQdXREaXNhYmxlZAYJAAACBQ1jZmdQb29sU3RhdHVzBQxQb29sU2h1dGRvd24HAwUNaXNQdXREaXNhYmxlZAkAAgEJAKwCAgIsUHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUNY2ZnUG9vbFN0YXR1cwUGZXN0UHV0AQRlbWl0AQZhbW91bnQEB2VtaXRJbnYJAPwHBAUPZmFjdG9yeUNvbnRyYWN0AgRlbWl0CQDMCAIFBmFtb3VudAUDbmlsBQNuaWwDCQAAAgUHZW1pdEludgUHZW1pdEludgQNZW1pdEludkxlZ2FjeQQHJG1hdGNoMAUHZW1pdEludgMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBBVsZWdhY3lGYWN0b3J5Q29udHJhY3QFByRtYXRjaDAJAPwHBAUVbGVnYWN5RmFjdG9yeUNvbnRyYWN0AgRlbWl0CQDMCAIFBmFtb3VudAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUNZW1pdEludkxlZ2FjeQUNZW1pdEludkxlZ2FjeQUGYW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQd0YWtlRmVlAgZhbW91bnQDZmVlBAlmZWVBbW91bnQDCQAAAgUDZmVlAAAAAAkAawMFBmFtb3VudAUDZmVlBQZzY2FsZTgJAJQKAgkAZQIFBmFtb3VudAUJZmVlQW1vdW50BQlmZWVBbW91bnQBD2NhbGNQdXRPbmVUb2tlbgQQcGF5bWVudEFtb3VudFJhdw5wYXltZW50QXNzZXRJZAt1c2VyQWRkcmVzcwR0eElkBAZpc0V2YWwJAAACBQR0eElkBQR1bml0BBBhbW91bnRCYWxhbmNlUmF3CQENZ2V0QWNjQmFsYW5jZQEJAQ9hc3NldElkVG9TdHJpbmcBBRBjZmdBbW91bnRBc3NldElkBA9wcmljZUJhbGFuY2VSYXcJAQ1nZXRBY2NCYWxhbmNlAQkBD2Fzc2V0SWRUb1N0cmluZwEFD2NmZ1ByaWNlQXNzZXRJZAQUcGF5bWVudEluQW1vdW50QXNzZXQDCQAAAgUOcGF5bWVudEFzc2V0SWQFEGNmZ0Ftb3VudEFzc2V0SWQGAwkAAAIFDnBheW1lbnRBc3NldElkBQ9jZmdQcmljZUFzc2V0SWQHCQEIdGhyb3dFcnIBAg1pbnZhbGlkIGFzc2V0BA0kdDAzMzQxMzMzNzA2AwUGaXNFdmFsCQCUCgIFEGFtb3VudEJhbGFuY2VSYXcFD3ByaWNlQmFsYW5jZVJhdwMFFHBheW1lbnRJbkFtb3VudEFzc2V0CQCUCgIJAGUCBRBhbW91bnRCYWxhbmNlUmF3BRBwYXltZW50QW1vdW50UmF3BQ9wcmljZUJhbGFuY2VSYXcJAJQKAgUQYW1vdW50QmFsYW5jZVJhdwkAZQIFD3ByaWNlQmFsYW5jZVJhdwUQcGF5bWVudEFtb3VudFJhdwQQYW1vdW50QmFsYW5jZU9sZAgFDSR0MDMzNDEzMzM3MDYCXzEED3ByaWNlQmFsYW5jZU9sZAgFDSR0MDMzNDEzMzM3MDYCXzIEDSR0MDMzNzEwMzM4NTkDBRRwYXltZW50SW5BbW91bnRBc3NldAkAlAoCBRBwYXltZW50QW1vdW50UmF3AAAJAJQKAgAABRBwYXltZW50QW1vdW50UmF3BBRhbW91bnRBc3NldEFtb3VudFJhdwgFDSR0MDMzNzEwMzM4NTkCXzEEE3ByaWNlQXNzZXRBbW91bnRSYXcIBQ0kdDAzMzcxMDMzODU5Al8yBBFhbW91bnRBc3NldEFtb3VudAgJAQd0YWtlRmVlAgUUYW1vdW50QXNzZXRBbW91bnRSYXcFBWluRmVlAl8xBBBwcmljZUFzc2V0QW1vdW50CAkBB3Rha2VGZWUCBRNwcmljZUFzc2V0QW1vdW50UmF3BQVpbkZlZQJfMQQNJHQwMzM5OTEzNDA1NQkBB3Rha2VGZWUCBRBwYXltZW50QW1vdW50UmF3BQVpbkZlZQQNcGF5bWVudEFtb3VudAgFDSR0MDMzOTkxMzQwNTUCXzEECWZlZUFtb3VudAgFDSR0MDMzOTkxMzQwNTUCXzIEEGFtb3VudEJhbGFuY2VOZXcJAGQCBRBhbW91bnRCYWxhbmNlT2xkBRFhbW91bnRBc3NldEFtb3VudAQPcHJpY2VCYWxhbmNlTmV3CQBkAgUPcHJpY2VCYWxhbmNlT2xkBRBwcmljZUFzc2V0QW1vdW50BAtwcmljZU5ld1gxOAkBD2NhbGNQcmljZUJpZ0ludAIJAQV0b1gxOAIFD3ByaWNlQmFsYW5jZU5ldwUVY2ZnUHJpY2VBc3NldERlY2ltYWxzCQEFdG9YMTgCBRBhbW91bnRCYWxhbmNlTmV3BRZjZmdBbW91bnRBc3NldERlY2ltYWxzBAhwcmljZU5ldwkBB2Zyb21YMTgCBQtwcmljZU5ld1gxOAUGc2NhbGU4BA5wYXltZW50QmFsYW5jZQMFFHBheW1lbnRJbkFtb3VudEFzc2V0BRBhbW91bnRCYWxhbmNlT2xkBQ9wcmljZUJhbGFuY2VPbGQEFHBheW1lbnRCYWxhbmNlQmlnSW50CQC2AgEFDnBheW1lbnRCYWxhbmNlBAxzdXBwbHlCaWdJbnQJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQxjZmdMcEFzc2V0SWQJAKwCAgkArAICAgZhc3NldCAJANgEAQUMY2ZnTHBBc3NldElkAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQLY2hlY2hTdXBwbHkDCQC/AgIFDHN1cHBseUJpZ0ludAUEYmlnMAYJAQh0aHJvd0VycgECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgULY2hlY2hTdXBwbHkFC2NoZWNoU3VwcGx5BA1kZXBvc2l0QmlnSW50CQC2AgEFDXBheW1lbnRBbW91bnQEC2lzc3VlQW1vdW50CQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFDHN1cHBseUJpZ0ludAkAuAICCQEKc3FydEJpZ0ludAQJALcCAgUHc2NhbGUxOAkAugICCQC5AgIFDWRlcG9zaXRCaWdJbnQFB3NjYWxlMTgFFHBheW1lbnRCYWxhbmNlQmlnSW50ABIAEgUERE9XTgUHc2NhbGUxOAUHc2NhbGUxOAUDbmlsBAtjb21tb25TdGF0ZQMFBmlzRXZhbAUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGwABQhwcmljZU5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBoAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUIcHJpY2VOZXcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBA3BhdQIJAKUIAQkBBXZhbHVlAQULdXNlckFkZHJlc3MJANgEAQkBBXZhbHVlAQUEdHhJZAkBEWRhdGFQdXRBY3Rpb25JbmZvCgUUYW1vdW50QXNzZXRBbW91bnRSYXcFE3ByaWNlQXNzZXRBbW91bnRSYXcFC2lzc3VlQW1vdW50BQhwcmljZU5ldwAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEC3ByaWNlT2xkWDE4CQEPY2FsY1ByaWNlQmlnSW50AgkBBXRvWDE4AgUPcHJpY2VCYWxhbmNlT2xkBRVjZmdQcmljZUFzc2V0RGVjaW1hbHMJAQV0b1gxOAIFEGFtb3VudEJhbGFuY2VPbGQFFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMECHByaWNlT2xkCQEHZnJvbVgxOAIFC3ByaWNlT2xkWDE4BQZzY2FsZTgEBGxvc3MEDSR0MDM1NzM2MzU5MDMDBRRwYXltZW50SW5BbW91bnRBc3NldAkAlAoCBRRhbW91bnRBc3NldEFtb3VudFJhdwUQYW1vdW50QmFsYW5jZU9sZAkAlAoCBRNwcmljZUFzc2V0QW1vdW50UmF3BQ9wcmljZUJhbGFuY2VPbGQEBmFtb3VudAgFDSR0MDM1NzM2MzU5MDMCXzEEB2JhbGFuY2UIBQ0kdDAzNTczNjM1OTAzAl8yBA9pc3N1ZUFtb3VudEJvdGgJAKADAQkAvAIDBQxzdXBwbHlCaWdJbnQJALYCAQkAaQIFBmFtb3VudAACCQC2AgEFB2JhbGFuY2UJAGsDCQBlAgULaXNzdWVBbW91bnQFD2lzc3VlQW1vdW50Qm90aAUGc2NhbGU4BQ9pc3N1ZUFtb3VudEJvdGgJAJcKBQULaXNzdWVBbW91bnQFC2NvbW1vblN0YXRlBQlmZWVBbW91bnQFBGxvc3MFFHBheW1lbnRJbkFtb3VudEFzc2V0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQ9jYWxjR2V0T25lVG9rZW4FCm91dEFzc2V0SWQNcGF5bWVudEFtb3VudA5wYXltZW50QXNzZXRJZAt1c2VyQWRkcmVzcwR0eElkBAZpc0V2YWwJAAACBQR0eElkBQR1bml0BANjZmcJAQ1nZXRQb29sQ29uZmlnAAQLYW10QXNzZXREY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDmlkeEFtdEFzc2V0RGNtBA1wcmljZUFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBRBpZHhQcmljZUFzc2V0RGNtBAZjaGVja3MJAMwIAgMJAAACBQ5wYXltZW50QXNzZXRJZAUMY2ZnTHBBc3NldElkBgkBCHRocm93RXJyAQIQaW52YWxpZCBscCBhc3NldAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBBBvdXRJbkFtb3VudEFzc2V0AwkAAAIFCm91dEFzc2V0SWQFEGNmZ0Ftb3VudEFzc2V0SWQGAwkAAAIFCm91dEFzc2V0SWQFD2NmZ1ByaWNlQXNzZXRJZAcJAQh0aHJvd0VycgECDWludmFsaWQgYXNzZXQEDWJhbGFuY2VCaWdJbnQDBRBvdXRJbkFtb3VudEFzc2V0CQC2AgEJAQ1nZXRBY2NCYWxhbmNlAQkBD2Fzc2V0SWRUb1N0cmluZwEFEGNmZ0Ftb3VudEFzc2V0SWQJALYCAQkBDWdldEFjY0JhbGFuY2UBCQEPYXNzZXRJZFRvU3RyaW5nAQUPY2ZnUHJpY2VBc3NldElkBBhvdXRJbkFtb3VudEFzc2V0RGVjaW1hbHMDBRBvdXRJbkFtb3VudEFzc2V0BQthbXRBc3NldERjbQUNcHJpY2VBc3NldERjbQQMYW1CYWxhbmNlT2xkCQENZ2V0QWNjQmFsYW5jZQEJAQ9hc3NldElkVG9TdHJpbmcBBRBjZmdBbW91bnRBc3NldElkBAxwckJhbGFuY2VPbGQJAQ1nZXRBY2NCYWxhbmNlAQkBD2Fzc2V0SWRUb1N0cmluZwEFD2NmZ1ByaWNlQXNzZXRJZAQKb3V0QmFsYW5jZQMFEG91dEluQW1vdW50QXNzZXQFDGFtQmFsYW5jZU9sZAUMcHJCYWxhbmNlT2xkBBBvdXRCYWxhbmNlQmlnSW50CQC2AgEFCm91dEJhbGFuY2UEDHN1cHBseUJpZ0ludAkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFDGNmZ0xwQXNzZXRJZAkArAICCQCsAgICBmFzc2V0IAkA2AQBBQxjZmdMcEFzc2V0SWQCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BA5yZWRlZW1lZEJpZ0ludAkAtgIBBQ1wYXltZW50QW1vdW50BAlhbW91bnRSYXcJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUNYmFsYW5jZUJpZ0ludAkAuAICBQdzY2FsZTE4CQB2BgkAuAICBQdzY2FsZTE4CQC6AgIJALkCAgUOcmVkZWVtZWRCaWdJbnQFB3NjYWxlMTgFDHN1cHBseUJpZ0ludAASBQRiaWcyAAAAEgUERE9XTgUHc2NhbGUxOAUDbmlsBA0kdDAzNzk4MTM4MDM3CQEHdGFrZUZlZQIFCWFtb3VudFJhdwUGb3V0RmVlBAt0b3RhbEFtb3VudAgFDSR0MDM3OTgxMzgwMzcCXzEECWZlZUFtb3VudAgFDSR0MDM3OTgxMzgwMzcCXzIEDSR0MDM4MDQxMzgyNjcDBRBvdXRJbkFtb3VudEFzc2V0CQCWCgQFC3RvdGFsQW1vdW50AAAJAGUCBQxhbUJhbGFuY2VPbGQFCWFtb3VudFJhdwUMcHJCYWxhbmNlT2xkCQCWCgQAAAULdG90YWxBbW91bnQFDGFtQmFsYW5jZU9sZAkAZQIFDHByQmFsYW5jZU9sZAUJYW1vdW50UmF3BAtvdXRBbUFtb3VudAgFDSR0MDM4MDQxMzgyNjcCXzEEC291dFByQW1vdW50CAUNJHQwMzgwNDEzODI2NwJfMgQMYW1CYWxhbmNlTmV3CAUNJHQwMzgwNDEzODI2NwJfMwQMcHJCYWxhbmNlTmV3CAUNJHQwMzgwNDEzODI2NwJfNAQLcHJpY2VOZXdYMTgJAQ9jYWxjUHJpY2VCaWdJbnQCCQEFdG9YMTgCBQxwckJhbGFuY2VOZXcFFWNmZ1ByaWNlQXNzZXREZWNpbWFscwkBBXRvWDE4AgUMYW1CYWxhbmNlTmV3BRZjZmdBbW91bnRBc3NldERlY2ltYWxzBAhwcmljZU5ldwkBB2Zyb21YMTgCBQtwcmljZU5ld1gxOAUGc2NhbGU4BAtjb21tb25TdGF0ZQMFBmlzRXZhbAUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNnYXUCCQClCAEJAQV2YWx1ZQEFC3VzZXJBZGRyZXNzCQDYBAEJAQV2YWx1ZQEFBHR4SWQJARFkYXRhR2V0QWN0aW9uSW5mbwYFC291dEFtQW1vdW50BQtvdXRQckFtb3VudAUNcGF5bWVudEFtb3VudAUIcHJpY2VOZXcFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwbAAFCHByaWNlTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQhwcmljZU5ldwUDbmlsBAtwcmljZU9sZFgxOAkBD2NhbGNQcmljZUJpZ0ludAIJAQV0b1gxOAIFDHByQmFsYW5jZU9sZAUVY2ZnUHJpY2VBc3NldERlY2ltYWxzCQEFdG9YMTgCBQxhbUJhbGFuY2VPbGQFFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMECHByaWNlT2xkCQEHZnJvbVgxOAIFC3ByaWNlT2xkWDE4BQZzY2FsZTgEBGxvc3MEGGFtb3VudEJvdGhJblBheW1lbnRBc3NldAkAaAIJAKADAQkAvAIDBQ1iYWxhbmNlQmlnSW50BQ5yZWRlZW1lZEJpZ0ludAUMc3VwcGx5QmlnSW50AAIJAGsDCQBlAgULdG90YWxBbW91bnQFGGFtb3VudEJvdGhJblBheW1lbnRBc3NldAUGc2NhbGU4BRhhbW91bnRCb3RoSW5QYXltZW50QXNzZXQJAJcKBQULdG90YWxBbW91bnQFC2NvbW1vblN0YXRlBQlmZWVBbW91bnQFBGxvc3MFEG91dEluQW1vdW50QXNzZXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQABBNtYW5hZ2VyVmF1bHRBZGRyZXNzCQEcZ2V0TWFuYWdlclZhdWx0QWRkcmVzc09yVGhpcwAEByRtYXRjaDAJAJ0IAgUTbWFuYWdlclZhdWx0QWRkcmVzcwkBE2tleU1hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgEJaXNNYW5hZ2VyAQFpBAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDAJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkFAnBrAwkAAQIFByRtYXRjaDACBFVuaXQJAAACCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgELbXVzdE1hbmFnZXIBAWkEAnBkCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEByRtYXRjaDAJARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkFAnBrBgUCcGQDCQABAgUHJG1hdGNoMAIEVW5pdAMJAAACCAUBaQZjYWxsZXIFBHRoaXMGBQJwZAkAAgECC01hdGNoIGVycm9yHAFpAQlyZWJhbGFuY2UACQDOCAIJAQ5yZWJhbGFuY2VBc3NldAEJAQ9nZXRTdHJpbmdPckZhaWwCBQR0aGlzCQECYWEACQEOcmViYWxhbmNlQXNzZXQBCQEPZ2V0U3RyaW5nT3JGYWlsAgUEdGhpcwkBAnBhAAFpASFjYWxjdWxhdGVBbW91bnRPdXRGb3JTd2FwUkVBRE9OTFkDDWNsZWFuQW1vdW50SW4JaXNSZXZlcnNlDWZlZVBvb2xBbW91bnQEDSR0MDQwMTI1NDA0MzADCQAAAgUJaXNSZXZlcnNlBwQIYXNzZXRPdXQJAQ9nZXRTdHJpbmdPckZhaWwCBQR0aGlzCQECcGEABAdhc3NldEluCQEPZ2V0U3RyaW5nT3JGYWlsAgUEdGhpcwkBAmFhAAkAlAoCBQhhc3NldE91dAUHYXNzZXRJbgQIYXNzZXRPdXQJAQ9nZXRTdHJpbmdPckZhaWwCBQR0aGlzCQECYWEABAdhc3NldEluCQEPZ2V0U3RyaW5nT3JGYWlsAgUEdGhpcwkBAnBhAAkAlAoCBQhhc3NldE91dAUHYXNzZXRJbgQIYXNzZXRPdXQIBQ0kdDA0MDEyNTQwNDMwAl8xBAdhc3NldEluCAUNJHQwNDAxMjU0MDQzMAJfMgQScG9vbEFzc2V0SW5CYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFB2Fzc2V0SW4EE3Bvb2xBc3NldE91dEJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUIYXNzZXRPdXQECWFtb3VudE91dAkAawMFE3Bvb2xBc3NldE91dEJhbGFuY2UFDWNsZWFuQW1vdW50SW4JAGQCBRJwb29sQXNzZXRJbkJhbGFuY2UFDWNsZWFuQW1vdW50SW4EBG9sZEsJALkCAgkAtgIBBRJwb29sQXNzZXRJbkJhbGFuY2UJALYCAQUTcG9vbEFzc2V0T3V0QmFsYW5jZQQEbmV3SwkAuQICCQC3AgIJALcCAgkAtgIBCQENZ2V0QWNjQmFsYW5jZQEFB2Fzc2V0SW4JALYCAQUNY2xlYW5BbW91bnRJbgkAtgIBBQ1mZWVQb29sQW1vdW50CQC4AgIJALYCAQkBDWdldEFjY0JhbGFuY2UBBQhhc3NldE91dAkAtgIBBQlhbW91bnRPdXQEBmNoZWNrSwMJAMACAgUEbmV3SwUEb2xkSwYJAAIBAhRuZXcgSyBpcyBmZXdlciBlcnJvcgMJAAACBQZjaGVja0sFBmNoZWNrSwkAlAoCBQNuaWwFCWFtb3VudE91dAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpASZjYWxjdWxhdGVBbW91bnRPdXRGb3JTd2FwQW5kU2VuZFRva2VucwUNY2xlYW5BbW91bnRJbglpc1JldmVyc2UMYW1vdW50T3V0TWluCWFkZHJlc3NUbw1mZWVQb29sQW1vdW50BAtzd2FwQ29udGFjdAoAAUAJAPwHBAUPZmFjdG9yeUNvbnRyYWN0AhdnZXRTd2FwQ29udHJhY3RSRUFET05MWQUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nBBJpc1Bvb2xTd2FwRGlzYWJsZWQKAAFACQD8BwQFD2ZhY3RvcnlDb250cmFjdAIaaXNQb29sU3dhcERpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQFAAgdCb29sZWFuBQFACQACAQkArAICCQADAQUBQAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQOaXNTd2FwRGlzYWJsZWQDCQEBIQEJARRpc0FkZHJlc3NXaGl0ZWxpc3RlZAEIBQFpBmNhbGxlcgMDCQEQaXNHbG9iYWxTaHV0ZG93bgAGCQAAAgUNY2ZnUG9vbFN0YXR1cwUMUG9vbFNodXRkb3duBgUSaXNQb29sU3dhcERpc2FibGVkBwQGY2hlY2tzCQDMCAIDAwkBASEBBQ5pc1N3YXBEaXNhYmxlZAYJAQlpc01hbmFnZXIBBQFpBgkBCHRocm93RXJyAQIic3dhcCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAZwIICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BQ1jbGVhbkFtb3VudEluBgkBCHRocm93RXJyAQIMV3JvbmcgYW1vdW50CQDMCAIDCQAAAggFAWkGY2FsbGVyCQERQGV4dHJOYXRpdmUoMTA2MikBBQtzd2FwQ29udGFjdAYJAQh0aHJvd0VycgECEVBlcm1pc3Npb24gZGVuaWVkBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAdhc3NldEluCQEPYXNzZXRJZFRvU3RyaW5nAQgFA3BtdAdhc3NldElkBAhhc3NldE91dAMJAAACBQlpc1JldmVyc2UHCQEPZ2V0U3RyaW5nT3JGYWlsAgUEdGhpcwkBAnBhAAkBD2dldFN0cmluZ09yRmFpbAIFBHRoaXMJAQJhYQAEEnBvb2xBc3NldEluQmFsYW5jZQkAZQIJAGUCCQENZ2V0QWNjQmFsYW5jZQEFB2Fzc2V0SW4ICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BQ1mZWVQb29sQW1vdW50BBNwb29sQXNzZXRPdXRCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFCGFzc2V0T3V0BAlhbW91bnRPdXQJAGsDBRNwb29sQXNzZXRPdXRCYWxhbmNlBQ1jbGVhbkFtb3VudEluCQBkAgUScG9vbEFzc2V0SW5CYWxhbmNlBQ1jbGVhbkFtb3VudEluBARvbGRLCQC5AgIJALYCAQUScG9vbEFzc2V0SW5CYWxhbmNlCQC2AgEFE3Bvb2xBc3NldE91dEJhbGFuY2UEBG5ld0sJALkCAgkAtwICCQC2AgEJAQ1nZXRBY2NCYWxhbmNlAQUHYXNzZXRJbgkAtgIBBQ1mZWVQb29sQW1vdW50CQC4AgIJALYCAQkBDWdldEFjY0JhbGFuY2UBBQhhc3NldE91dAkAtgIBBQlhbW91bnRPdXQEBmNoZWNrSwMJAMACAgUEbmV3SwUEb2xkSwYJAAIBAhRuZXcgSyBpcyBmZXdlciBlcnJvcgMJAAACBQZjaGVja0sFBmNoZWNrSwQIY2hlY2tNaW4DCQBnAgUJYW1vdW50T3V0BQxhbW91bnRPdXRNaW4GCQACAQIsRXhjaGFuZ2UgcmVzdWx0IGlzIGZld2VyIGNvaW5zIHRoYW4gZXhwZWN0ZWQDCQAAAgUIY2hlY2tNaW4FCGNoZWNrTWluBBdhbW91bnRBc3NldEJhbGFuY2VEZWx0YQMFCWlzUmV2ZXJzZQkBAS0BBQlhbW91bnRPdXQFDWZlZVBvb2xBbW91bnQEFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEDBQlpc1JldmVyc2UFDWZlZVBvb2xBbW91bnQJAQEtAQUJYW1vdW50T3V0BBFyZWZyZXNoS0xwQWN0aW9ucwgJARJyZWZyZXNoS0xwSW50ZXJuYWwDBRdhbW91bnRBc3NldEJhbGFuY2VEZWx0YQUWcHJpY2VBc3NldEJhbGFuY2VEZWx0YQAAAl8xAwkAAAIFEXJlZnJlc2hLTHBBY3Rpb25zBRFyZWZyZXNoS0xwQWN0aW9ucwQOcmViYWxhbmNlU3RhdGUJAQ5yZWJhbGFuY2VBc3NldAEFB2Fzc2V0SW4DCQAAAgUOcmViYWxhbmNlU3RhdGUFDnJlYmFsYW5jZVN0YXRlBA13aXRoZHJhd1N0YXRlCQEZd2l0aGRyYXdBbmRSZWJhbGFuY2VBc3NldAIFCGFzc2V0T3V0BQlhbW91bnRPdXQDCQAAAgUNd2l0aGRyYXdTdGF0ZQUNd2l0aGRyYXdTdGF0ZQkAlAoCCQDOCAIJAM4IAgUNd2l0aGRyYXdTdGF0ZQUOcmViYWxhbmNlU3RhdGUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUJYWRkcmVzc1RvBQlhbW91bnRPdXQJAQxwYXJzZUFzc2V0SWQBBQhhc3NldE91dAUDbmlsBQlhbW91bnRPdXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEDcHV0AhFzbGlwcGFnZVRvbGVyYW5jZQ9zaG91bGRBdXRvU3Rha2UDCQBmAgAABRFzbGlwcGFnZVRvbGVyYW5jZQkAAgECIEludmFsaWQgc2xpcHBhZ2VUb2xlcmFuY2UgcGFzc2VkBAZlc3RQdXQJAQljb21tb25QdXQDBQFpBRFzbGlwcGFnZVRvbGVyYW5jZQYECWVtaXRMcEFtdAgFBmVzdFB1dAJfMgQJbHBBc3NldElkCAUGZXN0UHV0Al83BAVzdGF0ZQgFBmVzdFB1dAJfOQQGYW1EaWZmCAUGZXN0UHV0A18xMAQGcHJEaWZmCAUGZXN0UHV0A18xMQQEYW1JZAgFBmVzdFB1dANfMTIEBHBySWQIBQZlc3RQdXQDXzEzBAphbUFzc2V0UG10CQC2AgEICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BApwckFzc2V0UG10CQC2AgEICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAEGYW1vdW50BApjdXJyZW50S0xwCQEOY2FsY0N1cnJlbnRLTHADBQphbUFzc2V0UG10BQpwckFzc2V0UG10CQC2AgEAAAMJAAACBQpjdXJyZW50S0xwBQpjdXJyZW50S0xwBAdlbWl0SW52CQD8BwQFD2ZhY3RvcnlDb250cmFjdAIEZW1pdAkAzAgCBQllbWl0THBBbXQFA25pbAUDbmlsAwkAAAIFB2VtaXRJbnYFB2VtaXRJbnYEDWVtaXRJbnZMZWdhY3kEByRtYXRjaDAFB2VtaXRJbnYDCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQVbGVnYWN5RmFjdG9yeUNvbnRyYWN0BQckbWF0Y2gwCQD8BwQFFWxlZ2FjeUZhY3RvcnlDb250cmFjdAIEZW1pdAkAzAgCBQllbWl0THBBbXQFA25pbAUDbmlsBQR1bml0AwkAAAIFDWVtaXRJbnZMZWdhY3kFDWVtaXRJbnZMZWdhY3kEDHNsaXBwYWdlQUludgMJAGYCBQZhbURpZmYAAAkA/AcEBRBzbGlwcGFnZUNvbnRyYWN0AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEYW1JZAUGYW1EaWZmBQNuaWwFA25pbAMJAAACBQxzbGlwcGFnZUFJbnYFDHNsaXBwYWdlQUludgQMc2xpcHBhZ2VQSW52AwkAZgIFBnByRGlmZgAACQD8BwQFEHNsaXBwYWdlQ29udHJhY3QCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQRwcklkBQZwckRpZmYFA25pbAUDbmlsAwkAAAIFDHNsaXBwYWdlUEludgUMc2xpcHBhZ2VQSW52BApscFRyYW5zZmVyAwUPc2hvdWxkQXV0b1N0YWtlBAtzbHBTdGFrZUludgkA/AcEBQ9zdGFraW5nQ29udHJhY3QCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCWxwQXNzZXRJZAUJZW1pdExwQW10BQNuaWwDCQAAAgULc2xwU3Rha2VJbnYFC3NscFN0YWtlSW52BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQllbWl0THBBbXQFCWxwQXNzZXRJZAUDbmlsBA0kdDA0NTYwNjQ2MDY4CQEScmVmcmVzaEtMcEludGVybmFsAwAAAAAAAAMJAAACBQ0kdDA0NTYwNjQ2MDY4BQ0kdDA0NTYwNjQ2MDY4BAp1cGRhdGVkS0xwCAUNJHQwNDU2MDY0NjA2OAJfMgQRcmVmcmVzaEtMcEFjdGlvbnMIBQ0kdDA0NTYwNjQ2MDY4Al8xBBFpc1VwZGF0ZWRLTHBWYWxpZAkBEnZhbGlkYXRlVXBkYXRlZEtMcAIFCmN1cnJlbnRLTHAFCnVwZGF0ZWRLTHADCQAAAgURaXNVcGRhdGVkS0xwVmFsaWQFEWlzVXBkYXRlZEtMcFZhbGlkBANyZWIJAPwHBAUEdGhpcwIJcmViYWxhbmNlBQNuaWwFA25pbAMJAAACBQNyZWIFA3JlYgkAzggCCQDOCAIFBXN0YXRlBQpscFRyYW5zZmVyBRFyZWZyZXNoS0xwQWN0aW9ucwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpwdXRGb3JGcmVlAQttYXhTbGlwcGFnZQMJAGYCAAAFC21heFNsaXBwYWdlCQACAQIUSW52YWxpZCB2YWx1ZSBwYXNzZWQEBmVzdFB1dAkBCWNvbW1vblB1dAMFAWkFC21heFNsaXBwYWdlBwQFc3RhdGUIBQZlc3RQdXQCXzkECmFtQXNzZXRQbXQJALYCAQgJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQECnByQXNzZXRQbXQJALYCAQgJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAQZhbW91bnQECmN1cnJlbnRLTHAJAQ5jYWxjQ3VycmVudEtMcAMFCmFtQXNzZXRQbXQFCnByQXNzZXRQbXQJALYCAQAAAwkAAAIFCmN1cnJlbnRLTHAFCmN1cnJlbnRLTHAEDSR0MDQ2NjgwNDY3NDUJARJyZWZyZXNoS0xwSW50ZXJuYWwDAAAAAAAABBFyZWZyZXNoS0xwQWN0aW9ucwgFDSR0MDQ2NjgwNDY3NDUCXzEECnVwZGF0ZWRLTHAIBQ0kdDA0NjY4MDQ2NzQ1Al8yBBFpc1VwZGF0ZWRLTHBWYWxpZAkBEnZhbGlkYXRlVXBkYXRlZEtMcAIFCmN1cnJlbnRLTHAFCnVwZGF0ZWRLTHADCQAAAgURaXNVcGRhdGVkS0xwVmFsaWQFEWlzVXBkYXRlZEtMcFZhbGlkCQDOCAIFBXN0YXRlBRFyZWZyZXNoS0xwQWN0aW9ucwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQlwdXRPbmVUa24CDG1pbk91dEFtb3VudAlhdXRvU3Rha2UEIGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkCgABQAkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQFAAgdCb29sZWFuBQFACQACAQkArAICCQADAQUBQAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQNaXNQdXREaXNhYmxlZAMJAQEhAQkBFGlzQWRkcmVzc1doaXRlbGlzdGVkAQgFAWkGY2FsbGVyAwMDCQEQaXNHbG9iYWxTaHV0ZG93bgAGCQAAAgUNY2ZnUG9vbFN0YXR1cwUPUG9vbFB1dERpc2FibGVkBgkAAAIFDWNmZ1Bvb2xTdGF0dXMFDFBvb2xTaHV0ZG93bgYFIGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkBwQGY2hlY2tzCQDMCAIDAwkBASEBBQ1pc1B1dERpc2FibGVkBgkBCWlzTWFuYWdlcgEFAWkGCQEIdGhyb3dFcnIBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEGCQEIdGhyb3dFcnIBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQHcGF5bWVudAkAkQMCCAUBaQhwYXltZW50cwAABA5wYXltZW50QXNzZXRJZAgFB3BheW1lbnQHYXNzZXRJZAQQcGF5bWVudEFtb3VudFJhdwgFB3BheW1lbnQGYW1vdW50BApjdXJyZW50S0xwAwkAAAIFDnBheW1lbnRBc3NldElkBRBjZmdBbW91bnRBc3NldElkCQEOY2FsY0N1cnJlbnRLTHADCQC2AgEFEHBheW1lbnRBbW91bnRSYXcJALYCAQAACQC2AgEAAAMJAAACBQ5wYXltZW50QXNzZXRJZAUPY2ZnUHJpY2VBc3NldElkCQEOY2FsY0N1cnJlbnRLTHADCQC2AgEAAAkAtgIBBRBwYXltZW50QW1vdW50UmF3CQC2AgEAAAkBCHRocm93RXJyAQIecGF5bWVudCBhc3NldCBpcyBub3Qgc3VwcG9ydGVkAwkAAAIFCmN1cnJlbnRLTHAFCmN1cnJlbnRLTHAEC3VzZXJBZGRyZXNzCAUBaQZjYWxsZXIEBHR4SWQIBQFpDXRyYW5zYWN0aW9uSWQEDSR0MDQ3OTc0NDgxMjYJAQ9jYWxjUHV0T25lVG9rZW4EBRBwYXltZW50QW1vdW50UmF3BQ5wYXltZW50QXNzZXRJZAULdXNlckFkZHJlc3MFBHR4SWQDCQAAAgUNJHQwNDc5NzQ0ODEyNgUNJHQwNDc5NzQ0ODEyNgQUcGF5bWVudEluQW1vdW50QXNzZXQIBQ0kdDA0Nzk3NDQ4MTI2Al81BAVib251cwgFDSR0MDQ3OTc0NDgxMjYCXzQECWZlZUFtb3VudAgFDSR0MDQ3OTc0NDgxMjYCXzMEC2NvbW1vblN0YXRlCAUNJHQwNDc5NzQ0ODEyNgJfMgQTZW1pdEFtb3VudEVzdGltYXRlZAgFDSR0MDQ3OTc0NDgxMjYCXzEECmVtaXRBbW91bnQDAwkAZgIFDG1pbk91dEFtb3VudAAACQBmAgUMbWluT3V0QW1vdW50BRNlbWl0QW1vdW50RXN0aW1hdGVkBwkBCHRocm93RXJyAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQxtaW5PdXRBbW91bnQFA25pbAIABRNlbWl0QW1vdW50RXN0aW1hdGVkBAdlbWl0SW52CQEEZW1pdAEFCmVtaXRBbW91bnQDCQAAAgUHZW1pdEludgUHZW1pdEludgQKbHBUcmFuc2ZlcgMFCWF1dG9TdGFrZQQIc3Rha2VJbnYJAPwHBAUPc3Rha2luZ0NvbnRyYWN0AgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQxjZmdMcEFzc2V0SWQFCmVtaXRBbW91bnQFA25pbAMJAAACBQhzdGFrZUludgUIc3Rha2VJbnYFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCmVtaXRBbW91bnQFDGNmZ0xwQXNzZXRJZAUDbmlsBAdzZW5kRmVlAwkAZgIFCWZlZUFtb3VudAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFE2ZlZUNvbGxlY3RvckFkZHJlc3MFCWZlZUFtb3VudAUOcGF5bWVudEFzc2V0SWQFA25pbAUDbmlsBA0kdDA0ODcxMjQ4OTA5AwkAAAIFBHRoaXMFE2ZlZUNvbGxlY3RvckFkZHJlc3MJAJQKAgAAAAADBRRwYXltZW50SW5BbW91bnRBc3NldAkAlAoCCQEBLQEFCWZlZUFtb3VudAAACQCUCgIAAAkBAS0BBQlmZWVBbW91bnQEF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhCAUNJHQwNDg3MTI0ODkwOQJfMQQWcHJpY2VBc3NldEJhbGFuY2VEZWx0YQgFDSR0MDQ4NzEyNDg5MDkCXzIEDSR0MDQ4OTEyNDkwMjAJARJyZWZyZXNoS0xwSW50ZXJuYWwDBRdhbW91bnRBc3NldEJhbGFuY2VEZWx0YQUWcHJpY2VBc3NldEJhbGFuY2VEZWx0YQAABBFyZWZyZXNoS0xwQWN0aW9ucwgFDSR0MDQ4OTEyNDkwMjACXzEECnVwZGF0ZWRLTHAIBQ0kdDA0ODkxMjQ5MDIwAl8yBANrTHAJAQV2YWx1ZQEJAKIIAQUGa2V5S0xwBBFpc1VwZGF0ZWRLTHBWYWxpZAkBEnZhbGlkYXRlVXBkYXRlZEtMcAIFCmN1cnJlbnRLTHAFCnVwZGF0ZWRLTHADCQAAAgURaXNVcGRhdGVkS0xwVmFsaWQFEWlzVXBkYXRlZEtMcFZhbGlkBANyZWIJAPwHBAUEdGhpcwIJcmViYWxhbmNlBQNuaWwFA25pbAMJAAACBQNyZWIFA3JlYgkAlAoCCQDOCAIJAM4IAgkAzggCBQtjb21tb25TdGF0ZQUKbHBUcmFuc2ZlcgUHc2VuZEZlZQURcmVmcmVzaEtMcEFjdGlvbnMFCmVtaXRBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQERcHV0T25lVGtuUkVBRE9OTFkCDnBheW1lbnRBc3NldElkEHBheW1lbnRBbW91bnRSYXcEDSR0MDQ5Mzc1NDk1MzIJAQ9jYWxjUHV0T25lVG9rZW4EBRBwYXltZW50QW1vdW50UmF3CQEMcGFyc2VBc3NldElkAQUOcGF5bWVudEFzc2V0SWQFBHVuaXQFBHVuaXQEE2VtaXRBbW91bnRFc3RpbWF0ZWQIBQ0kdDA0OTM3NTQ5NTMyAl8xBAtjb21tb25TdGF0ZQgFDSR0MDQ5Mzc1NDk1MzICXzIECWZlZUFtb3VudAgFDSR0MDQ5Mzc1NDk1MzICXzMEBWJvbnVzCAUNJHQwNDkzNzU0OTUzMgJfNAQUcGF5bWVudEluQW1vdW50QXNzZXQIBQ0kdDA0OTM3NTQ5NTMyAl81CQCUCgIFA25pbAkAlQoDBRNlbWl0QW1vdW50RXN0aW1hdGVkBQlmZWVBbW91bnQFBWJvbnVzAWkBCWdldE9uZVRrbgINb3V0QXNzZXRJZFN0cgxtaW5PdXRBbW91bnQEIGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkCgABQAkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQFAAgdCb29sZWFuBQFACQACAQkArAICCQADAQUBQAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQNaXNHZXREaXNhYmxlZAMJAQEhAQkBFGlzQWRkcmVzc1doaXRlbGlzdGVkAQgFAWkGY2FsbGVyAwMJARBpc0dsb2JhbFNodXRkb3duAAYJAAACBQ1jZmdQb29sU3RhdHVzBQxQb29sU2h1dGRvd24GBSBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAcEBmNoZWNrcwkAzAgCAwMJAQEhAQUNaXNHZXREaXNhYmxlZAYJAQlpc01hbmFnZXIBBQFpBgkBCHRocm93RXJyAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABBgkBCHRocm93RXJyAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MECm91dEFzc2V0SWQJAQxwYXJzZUFzc2V0SWQBBQ1vdXRBc3NldElkU3RyBAdwYXltZW50CQCRAwIIBQFpCHBheW1lbnRzAAAEDnBheW1lbnRBc3NldElkCAUHcGF5bWVudAdhc3NldElkBA1wYXltZW50QW1vdW50CAUHcGF5bWVudAZhbW91bnQECmN1cnJlbnRLTHAJAQ5jYWxjQ3VycmVudEtMcAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUKY3VycmVudEtMcAUKY3VycmVudEtMcAQLdXNlckFkZHJlc3MIBQFpBmNhbGxlcgQEdHhJZAgFAWkNdHJhbnNhY3Rpb25JZAQNJHQwNTA0NTQ1MDYwNwkBD2NhbGNHZXRPbmVUb2tlbgUFCm91dEFzc2V0SWQFDXBheW1lbnRBbW91bnQFDnBheW1lbnRBc3NldElkBQt1c2VyQWRkcmVzcwUEdHhJZAMJAAACBQ0kdDA1MDQ1NDUwNjA3BQ0kdDA1MDQ1NDUwNjA3BBBvdXRJbkFtb3VudEFzc2V0CAUNJHQwNTA0NTQ1MDYwNwJfNQQFYm9udXMIBQ0kdDA1MDQ1NDUwNjA3Al80BAlmZWVBbW91bnQIBQ0kdDA1MDQ1NDUwNjA3Al8zBAtjb21tb25TdGF0ZQgFDSR0MDUwNDU0NTA2MDcCXzIED2Ftb3VudEVzdGltYXRlZAgFDSR0MDUwNDU0NTA2MDcCXzEEBmFtb3VudAMDCQBmAgUMbWluT3V0QW1vdW50AAAJAGYCBQxtaW5PdXRBbW91bnQFD2Ftb3VudEVzdGltYXRlZAcJAQh0aHJvd0VycgEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUMbWluT3V0QW1vdW50BQNuaWwCAAUPYW1vdW50RXN0aW1hdGVkBAdidXJuSW52CQD8BwQFD2ZhY3RvcnlDb250cmFjdAIEYnVybgkAzAgCBQ1wYXltZW50QW1vdW50BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFDnBheW1lbnRBc3NldElkBQ1wYXltZW50QW1vdW50BQNuaWwDCQAAAgUHYnVybkludgUHYnVybkludgQNd2l0aGRyYXdTdGF0ZQkBGXdpdGhkcmF3QW5kUmViYWxhbmNlQXNzZXQCBQ1vdXRBc3NldElkU3RyCQBkAgUGYW1vdW50CQCWAwEJAMwIAgAACQDMCAIFCWZlZUFtb3VudAUDbmlsBA1hc3NldFRyYW5zZmVyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQZhbW91bnQFCm91dEFzc2V0SWQFA25pbAQHc2VuZEZlZQMJAGYCBQlmZWVBbW91bnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRNmZWVDb2xsZWN0b3JBZGRyZXNzBQlmZWVBbW91bnQFCm91dEFzc2V0SWQFA25pbAUDbmlsBA0kdDA1MTI3MTUxNTE4BBBmZWVBbW91bnRGb3JDYWxjAwkAAAIFBHRoaXMFE2ZlZUNvbGxlY3RvckFkZHJlc3MAAAUJZmVlQW1vdW50AwUQb3V0SW5BbW91bnRBc3NldAkAlAoCCQEBLQEJAGQCBQZhbW91bnQFEGZlZUFtb3VudEZvckNhbGMAAAkAlAoCAAAJAQEtAQkAZAIFBmFtb3VudAUQZmVlQW1vdW50Rm9yQ2FsYwQXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEIBQ0kdDA1MTI3MTUxNTE4Al8xBBZwcmljZUFzc2V0QmFsYW5jZURlbHRhCAUNJHQwNTEyNzE1MTUxOAJfMgQNJHQwNTE1MjE1MTYyOQkBEnJlZnJlc2hLTHBJbnRlcm5hbAMFF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhBRZwcmljZUFzc2V0QmFsYW5jZURlbHRhAAAEEXJlZnJlc2hLTHBBY3Rpb25zCAUNJHQwNTE1MjE1MTYyOQJfMQQKdXBkYXRlZEtMcAgFDSR0MDUxNTIxNTE2MjkCXzIEEWlzVXBkYXRlZEtMcFZhbGlkCQESdmFsaWRhdGVVcGRhdGVkS0xwAgUKY3VycmVudEtMcAUKdXBkYXRlZEtMcAMJAAACBRFpc1VwZGF0ZWRLTHBWYWxpZAURaXNVcGRhdGVkS0xwVmFsaWQJAJQKAgkAzggCCQDOCAIJAM4IAgkAzggCBQtjb21tb25TdGF0ZQUNd2l0aGRyYXdTdGF0ZQUNYXNzZXRUcmFuc2ZlcgUHc2VuZEZlZQURcmVmcmVzaEtMcEFjdGlvbnMFBmFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARFnZXRPbmVUa25SRUFET05MWQIKb3V0QXNzZXRJZA1wYXltZW50QW1vdW50BA0kdDA1MTkwNzUyMDYzCQEPY2FsY0dldE9uZVRva2VuBQkBDHBhcnNlQXNzZXRJZAEFCm91dEFzc2V0SWQFDXBheW1lbnRBbW91bnQFDGNmZ0xwQXNzZXRJZAUEdW5pdAUEdW5pdAQPYW1vdW50RXN0aW1hdGVkCAUNJHQwNTE5MDc1MjA2MwJfMQQLY29tbW9uU3RhdGUIBQ0kdDA1MTkwNzUyMDYzAl8yBAlmZWVBbW91bnQIBQ0kdDA1MTkwNzUyMDYzAl8zBAVib251cwgFDSR0MDUxOTA3NTIwNjMCXzQEEG91dEluQW1vdW50QXNzZXQIBQ0kdDA1MTkwNzUyMDYzAl81CQCUCgIFA25pbAkAlQoDBQ9hbW91bnRFc3RpbWF0ZWQFCWZlZUFtb3VudAUFYm9udXMBaQETdW5zdGFrZUFuZEdldE9uZVRrbgMNdW5zdGFrZUFtb3VudA1vdXRBc3NldElkU3RyDG1pbk91dEFtb3VudAQgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQKAAFACQD8BwQFD2ZhY3RvcnlDb250cmFjdAIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAUACB0Jvb2xlYW4FAUAJAAIBCQCsAgIJAAMBBQFAAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBA1pc0dldERpc2FibGVkAwkBASEBCQEUaXNBZGRyZXNzV2hpdGVsaXN0ZWQBCAUBaQZjYWxsZXIDAwkBEGlzR2xvYmFsU2h1dGRvd24ABgkAAAIFDWNmZ1Bvb2xTdGF0dXMFDFBvb2xTaHV0ZG93bgYFIGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkBwQGY2hlY2tzCQDMCAIDAwkBASEBBQ1pc0dldERpc2FibGVkBgkBCWlzTWFuYWdlcgEFAWkGCQEIdGhyb3dFcnIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAAGCQEIdGhyb3dFcnIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQKb3V0QXNzZXRJZAkBDHBhcnNlQXNzZXRJZAEFDW91dEFzc2V0SWRTdHIEC3VzZXJBZGRyZXNzCAUBaQZjYWxsZXIEBHR4SWQIBQFpDXRyYW5zYWN0aW9uSWQECmN1cnJlbnRLTHAJAQ5jYWxjQ3VycmVudEtMcAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUKY3VycmVudEtMcAUKY3VycmVudEtMcAQKdW5zdGFrZUludgkA/AcEBQ9zdGFraW5nQ29udHJhY3QCB3Vuc3Rha2UJAMwIAgkA2AQBBQxjZmdMcEFzc2V0SWQJAMwIAgUNdW5zdGFrZUFtb3VudAUDbmlsBQNuaWwDCQAAAgUKdW5zdGFrZUludgUKdW5zdGFrZUludgQNJHQwNTMwMDU1MzE1NgkBD2NhbGNHZXRPbmVUb2tlbgUFCm91dEFzc2V0SWQFDXVuc3Rha2VBbW91bnQFDGNmZ0xwQXNzZXRJZAULdXNlckFkZHJlc3MFBHR4SWQDCQAAAgUNJHQwNTMwMDU1MzE1NgUNJHQwNTMwMDU1MzE1NgQQb3V0SW5BbW91bnRBc3NldAgFDSR0MDUzMDA1NTMxNTYCXzUEBWJvbnVzCAUNJHQwNTMwMDU1MzE1NgJfNAQJZmVlQW1vdW50CAUNJHQwNTMwMDU1MzE1NgJfMwQLY29tbW9uU3RhdGUIBQ0kdDA1MzAwNTUzMTU2Al8yBA9hbW91bnRFc3RpbWF0ZWQIBQ0kdDA1MzAwNTUzMTU2Al8xBAZhbW91bnQDAwkAZgIFDG1pbk91dEFtb3VudAAACQBmAgUMbWluT3V0QW1vdW50BQ9hbW91bnRFc3RpbWF0ZWQHCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFDG1pbk91dEFtb3VudAUDbmlsAgAFD2Ftb3VudEVzdGltYXRlZAQHYnVybkludgkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCBGJ1cm4JAMwIAgUNdW5zdGFrZUFtb3VudAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQxjZmdMcEFzc2V0SWQFDXVuc3Rha2VBbW91bnQFA25pbAMJAAACBQdidXJuSW52BQdidXJuSW52BA13aXRoZHJhd1N0YXRlCQEZd2l0aGRyYXdBbmRSZWJhbGFuY2VBc3NldAIFDW91dEFzc2V0SWRTdHIJAGQCBQZhbW91bnQJAJYDAQkAzAgCAAAJAMwIAgUJZmVlQW1vdW50BQNuaWwEDWFzc2V0VHJhbnNmZXIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQZhbW91bnQFCm91dEFzc2V0SWQFA25pbAQHc2VuZEZlZQMJAGYCBQlmZWVBbW91bnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRNmZWVDb2xsZWN0b3JBZGRyZXNzBQlmZWVBbW91bnQFCm91dEFzc2V0SWQFA25pbAUDbmlsBA0kdDA1MzgxNTU0MDYyBBBmZWVBbW91bnRGb3JDYWxjAwkAAAIFBHRoaXMFE2ZlZUNvbGxlY3RvckFkZHJlc3MAAAUJZmVlQW1vdW50AwUQb3V0SW5BbW91bnRBc3NldAkAlAoCCQEBLQEJAGQCBQZhbW91bnQFEGZlZUFtb3VudEZvckNhbGMAAAkAlAoCAAAJAQEtAQkAZAIFBmFtb3VudAUQZmVlQW1vdW50Rm9yQ2FsYwQXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEIBQ0kdDA1MzgxNTU0MDYyAl8xBBZwcmljZUFzc2V0QmFsYW5jZURlbHRhCAUNJHQwNTM4MTU1NDA2MgJfMgQNJHQwNTQwNjU1NDE3MwkBEnJlZnJlc2hLTHBJbnRlcm5hbAMFF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhBRZwcmljZUFzc2V0QmFsYW5jZURlbHRhAAAEEXJlZnJlc2hLTHBBY3Rpb25zCAUNJHQwNTQwNjU1NDE3MwJfMQQKdXBkYXRlZEtMcAgFDSR0MDU0MDY1NTQxNzMCXzIEEWlzVXBkYXRlZEtMcFZhbGlkCQESdmFsaWRhdGVVcGRhdGVkS0xwAgUKY3VycmVudEtMcAUKdXBkYXRlZEtMcAMJAAACBRFpc1VwZGF0ZWRLTHBWYWxpZAURaXNVcGRhdGVkS0xwVmFsaWQJAJQKAgkAzggCCQDOCAIJAM4IAgkAzggCBQtjb21tb25TdGF0ZQUNd2l0aGRyYXdTdGF0ZQUNYXNzZXRUcmFuc2ZlcgUHc2VuZEZlZQURcmVmcmVzaEtMcEFjdGlvbnMFBmFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQNnZXQABANyZXMJAQljb21tb25HZXQBBQFpBAhvdXRBbUFtdAgFA3JlcwJfMQQIb3V0UHJBbXQIBQNyZXMCXzIEBnBtdEFtdAgFA3JlcwJfMwQKcG10QXNzZXRJZAgFA3JlcwJfNAQFc3RhdGUIBQNyZXMCXzUEDXdpdGhkcmF3U3RhdGUJARd3aXRoZHJhd0FuZFJlYmFsYW5jZUFsbAIFCG91dEFtQW10BQhvdXRQckFtdAQKY3VycmVudEtMcAkBDmNhbGNDdXJyZW50S0xwAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQpjdXJyZW50S0xwBQpjdXJyZW50S0xwBBRidXJuTFBBc3NldE9uRmFjdG9yeQkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCBGJ1cm4JAMwIAgUGcG10QW10BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCnBtdEFzc2V0SWQFBnBtdEFtdAUDbmlsAwkAAAIFFGJ1cm5MUEFzc2V0T25GYWN0b3J5BRRidXJuTFBBc3NldE9uRmFjdG9yeQQNJHQwNTUyNjg1NTM0OQkBEnJlZnJlc2hLTHBJbnRlcm5hbAMJAQEtAQUIb3V0QW1BbXQJAQEtAQUIb3V0UHJBbXQAAAQRcmVmcmVzaEtMcEFjdGlvbnMIBQ0kdDA1NTI2ODU1MzQ5Al8xBAp1cGRhdGVkS0xwCAUNJHQwNTUyNjg1NTM0OQJfMgQRaXNVcGRhdGVkS0xwVmFsaWQJARJ2YWxpZGF0ZVVwZGF0ZWRLTHACBQpjdXJyZW50S0xwBQp1cGRhdGVkS0xwAwkAAAIFEWlzVXBkYXRlZEtMcFZhbGlkBRFpc1VwZGF0ZWRLTHBWYWxpZAkAzggCCQDOCAIFDXdpdGhkcmF3U3RhdGUFBXN0YXRlBRFyZWZyZXNoS0xwQWN0aW9ucwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQlnZXROb0xlc3MCEm5vTGVzc1RoZW5BbXRBc3NldBRub0xlc3NUaGVuUHJpY2VBc3NldAQDcmVzCQEJY29tbW9uR2V0AQUBaQQIb3V0QW1BbXQIBQNyZXMCXzEECG91dFByQW10CAUDcmVzAl8yBAZwbXRBbXQIBQNyZXMCXzMECnBtdEFzc2V0SWQIBQNyZXMCXzQEBXN0YXRlCAUDcmVzAl81AwkAZgIFEm5vTGVzc1RoZW5BbXRBc3NldAUIb3V0QW1BbXQJAAIBCQCsAgIJAKwCAgkArAICAhxub0xlc3NUaGVuQW10QXNzZXQgZmFpbGVkOiAgCQCkAwEFCG91dEFtQW10AgMgPCAJAKQDAQUSbm9MZXNzVGhlbkFtdEFzc2V0AwkAZgIFFG5vTGVzc1RoZW5QcmljZUFzc2V0BQhvdXRQckFtdAkAAgEJAKwCAgkArAICCQCsAgICHW5vTGVzc1RoZW5QcmljZUFzc2V0IGZhaWxlZDogCQCkAwEFCG91dFByQW10AgMgPCAJAKQDAQUUbm9MZXNzVGhlblByaWNlQXNzZXQEDXdpdGhkcmF3U3RhdGUJARd3aXRoZHJhd0FuZFJlYmFsYW5jZUFsbAIFCG91dEFtQW10BQhvdXRQckFtdAQKY3VycmVudEtMcAkBDmNhbGNDdXJyZW50S0xwAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQpjdXJyZW50S0xwBQpjdXJyZW50S0xwBBRidXJuTFBBc3NldE9uRmFjdG9yeQkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCBGJ1cm4JAMwIAgUGcG10QW10BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCnBtdEFzc2V0SWQFBnBtdEFtdAUDbmlsAwkAAAIFFGJ1cm5MUEFzc2V0T25GYWN0b3J5BRRidXJuTFBBc3NldE9uRmFjdG9yeQQNJHQwNTY0NDQ1NjUyNQkBEnJlZnJlc2hLTHBJbnRlcm5hbAMJAQEtAQUIb3V0QW1BbXQJAQEtAQUIb3V0UHJBbXQAAAQRcmVmcmVzaEtMcEFjdGlvbnMIBQ0kdDA1NjQ0NDU2NTI1Al8xBAp1cGRhdGVkS0xwCAUNJHQwNTY0NDQ1NjUyNQJfMgQRaXNVcGRhdGVkS0xwVmFsaWQJARJ2YWxpZGF0ZVVwZGF0ZWRLTHACBQpjdXJyZW50S0xwBQp1cGRhdGVkS0xwAwkAAAIFEWlzVXBkYXRlZEtMcFZhbGlkBRFpc1VwZGF0ZWRLTHBWYWxpZAkAzggCCQDOCAIFDXdpdGhkcmF3U3RhdGUFBXN0YXRlBRFyZWZyZXNoS0xwQWN0aW9ucwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ11bnN0YWtlQW5kR2V0AQZhbW91bnQEDWNoZWNrUGF5bWVudHMDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhhObyBwYXltZW50cyBhcmUgZXhwZWN0ZWQGAwkAAAIFDWNoZWNrUGF5bWVudHMFDWNoZWNrUGF5bWVudHMEA2NmZwkBDWdldFBvb2xDb25maWcABAlscEFzc2V0SWQJANkEAQkAkQMCBQNjZmcFEGlkeFBvb2xMUEFzc2V0SWQECmN1cnJlbnRLTHAJAQ5jYWxjQ3VycmVudEtMcAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUKY3VycmVudEtMcAUKY3VycmVudEtMcAQKdW5zdGFrZUludgkA/AcEBQ9zdGFraW5nQ29udHJhY3QCB3Vuc3Rha2UJAMwIAgkA2AQBBQlscEFzc2V0SWQJAMwIAgUGYW1vdW50BQNuaWwFA25pbAMJAAACBQp1bnN0YWtlSW52BQp1bnN0YWtlSW52BANyZXMJARRlc3RpbWF0ZUdldE9wZXJhdGlvbgQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkA2AQBBQlscEFzc2V0SWQFBmFtb3VudAgFAWkGY2FsbGVyBAhvdXRBbUFtdAgFA3JlcwJfMQQIb3V0UHJBbXQIBQNyZXMCXzIECnBvb2xTdGF0dXMJAQ1wYXJzZUludFZhbHVlAQgFA3JlcwJfOQQFc3RhdGUIBQNyZXMDXzEwBA13aXRoZHJhd1N0YXRlCQEXd2l0aGRyYXdBbmRSZWJhbGFuY2VBbGwCBQhvdXRBbUFtdAUIb3V0UHJBbXQEDWlzR2V0RGlzYWJsZWQDCQEBIQEJARRpc0FkZHJlc3NXaGl0ZWxpc3RlZAEIBQFpBmNhbGxlcgMJARBpc0dsb2JhbFNodXRkb3duAAYJAAACBQ1jZmdQb29sU3RhdHVzBQxQb29sU2h1dGRvd24HBA9jaGVja1Bvb2xTdGF0dXMDBQ1pc0dldERpc2FibGVkCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQpwb29sU3RhdHVzBgMJAAACBQ9jaGVja1Bvb2xTdGF0dXMFD2NoZWNrUG9vbFN0YXR1cwQUYnVybkxQQXNzZXRPbkZhY3RvcnkJAPwHBAUPZmFjdG9yeUNvbnRyYWN0AgRidXJuCQDMCAIFBmFtb3VudAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQlscEFzc2V0SWQFBmFtb3VudAUDbmlsAwkAAAIFFGJ1cm5MUEFzc2V0T25GYWN0b3J5BRRidXJuTFBBc3NldE9uRmFjdG9yeQQNJHQwNTc4NzM1Nzk1NAkBEnJlZnJlc2hLTHBJbnRlcm5hbAMJAQEtAQUIb3V0QW1BbXQJAQEtAQUIb3V0UHJBbXQAAAQRcmVmcmVzaEtMcEFjdGlvbnMIBQ0kdDA1Nzg3MzU3OTU0Al8xBAp1cGRhdGVkS0xwCAUNJHQwNTc4NzM1Nzk1NAJfMgQRaXNVcGRhdGVkS0xwVmFsaWQJARJ2YWxpZGF0ZVVwZGF0ZWRLTHACBQpjdXJyZW50S0xwBQp1cGRhdGVkS0xwAwkAAAIFEWlzVXBkYXRlZEtMcFZhbGlkBRFpc1VwZGF0ZWRLTHBWYWxpZAkAzggCCQDOCAIFDXdpdGhkcmF3U3RhdGUFBXN0YXRlBRFyZWZyZXNoS0xwQWN0aW9ucwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARN1bnN0YWtlQW5kR2V0Tm9MZXNzAw11bnN0YWtlQW1vdW50FW5vTGVzc1RoZW5BbW91bnRBc3NldBRub0xlc3NUaGVuUHJpY2VBc3NldAQNaXNHZXREaXNhYmxlZAMJAQEhAQkBFGlzQWRkcmVzc1doaXRlbGlzdGVkAQgFAWkGY2FsbGVyAwkBEGlzR2xvYmFsU2h1dGRvd24ABgkAAAIFDWNmZ1Bvb2xTdGF0dXMFDFBvb2xTaHV0ZG93bgcEBmNoZWNrcwkAzAgCAwkBASEBBQ1pc0dldERpc2FibGVkBgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAAYJAAIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQKY3VycmVudEtMcAkBDmNhbGNDdXJyZW50S0xwAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQpjdXJyZW50S0xwBQpjdXJyZW50S0xwBAp1bnN0YWtlSW52CQD8BwQFD3N0YWtpbmdDb250cmFjdAIHdW5zdGFrZQkAzAgCCQDYBAEFDGNmZ0xwQXNzZXRJZAkAzAgCBQ11bnN0YWtlQW1vdW50BQNuaWwFA25pbAMJAAACBQp1bnN0YWtlSW52BQp1bnN0YWtlSW52BANyZXMJARRlc3RpbWF0ZUdldE9wZXJhdGlvbgQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkA2AQBBQxjZmdMcEFzc2V0SWQFDXVuc3Rha2VBbW91bnQIBQFpBmNhbGxlcgQIb3V0QW1BbXQIBQNyZXMCXzEECG91dFByQW10CAUDcmVzAl8yBAVzdGF0ZQgFA3JlcwNfMTAEDXdpdGhkcmF3U3RhdGUJARd3aXRoZHJhd0FuZFJlYmFsYW5jZUFsbAIFCG91dEFtQW10BQhvdXRQckFtdAQMY2hlY2tBbW91bnRzCQDMCAIDCQBnAgUIb3V0QW1BbXQFFW5vTGVzc1RoZW5BbW91bnRBc3NldAYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBRVub0xlc3NUaGVuQW1vdW50QXNzZXQFA25pbAIACQDMCAIDCQBnAgUIb3V0UHJBbXQFFG5vTGVzc1RoZW5QcmljZUFzc2V0BgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUUbm9MZXNzVGhlblByaWNlQXNzZXQFA25pbAIABQNuaWwDCQAAAgUMY2hlY2tBbW91bnRzBQxjaGVja0Ftb3VudHMEFGJ1cm5MUEFzc2V0T25GYWN0b3J5CQD8BwQFD2ZhY3RvcnlDb250cmFjdAIEYnVybgkAzAgCBQ11bnN0YWtlQW1vdW50BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFDGNmZ0xwQXNzZXRJZAUNdW5zdGFrZUFtb3VudAUDbmlsAwkAAAIFFGJ1cm5MUEFzc2V0T25GYWN0b3J5BRRidXJuTFBBc3NldE9uRmFjdG9yeQQNJHQwNTk0MzI1OTUxMwkBEnJlZnJlc2hLTHBJbnRlcm5hbAMJAQEtAQUIb3V0QW1BbXQJAQEtAQUIb3V0UHJBbXQAAAQRcmVmcmVzaEtMcEFjdGlvbnMIBQ0kdDA1OTQzMjU5NTEzAl8xBAp1cGRhdGVkS0xwCAUNJHQwNTk0MzI1OTUxMwJfMgQRaXNVcGRhdGVkS0xwVmFsaWQJARJ2YWxpZGF0ZVVwZGF0ZWRLTHACBQpjdXJyZW50S0xwBQp1cGRhdGVkS0xwAwkAAAIFEWlzVXBkYXRlZEtMcFZhbGlkBRFpc1VwZGF0ZWRLTHBWYWxpZAkAzggCCQDOCAIFDXdpdGhkcmF3U3RhdGUFBXN0YXRlBRFyZWZyZXNoS0xwQWN0aW9ucwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhhY3RpdmF0ZQILYW10QXNzZXRTdHINcHJpY2VBc3NldFN0cgMJAQIhPQIJAKUIAQgFAWkGY2FsbGVyCQClCAEFD2ZhY3RvcnlDb250cmFjdAkAAgECEnBlcm1pc3Npb25zIGRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQAFC2FtdEFzc2V0U3RyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJwYQAFDXByaWNlQXNzZXRTdHIFA25pbAIHc3VjY2VzcwFpAQpyZWZyZXNoS0xwAAQYbGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0CQELdmFsdWVPckVsc2UCCQCfCAEFFWtleUtMcFJlZnJlc2hlZEhlaWdodAAABB1jaGVja0xhc3RSZWZyZXNoZWRCbG9ja0hlaWdodAMJAGcCCQBlAgUGaGVpZ2h0BRhsYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQFD2tMcFJlZnJlc2hEZWxheQUEdW5pdAkBCHRocm93RXJyAQkAuQkCCQDMCAIJAKQDAQUPa0xwUmVmcmVzaERlbGF5CQDMCAICLyBibG9ja3MgaGF2ZSBub3QgcGFzc2VkIHNpbmNlIHRoZSBwcmV2aW91cyBjYWxsBQNuaWwCAAMJAAACBR1jaGVja0xhc3RSZWZyZXNoZWRCbG9ja0hlaWdodAUdY2hlY2tMYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQEA2tMcAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUGa2V5S0xwAgEwCQEGZm10RXJyAQILaW52YWxpZCBrTHAEDSR0MDYwNzE3NjA3ODEJARJyZWZyZXNoS0xwSW50ZXJuYWwDAAAAAAAABBBrTHBVcGRhdGVBY3Rpb25zCAUNJHQwNjA3MTc2MDc4MQJfMQQKdXBkYXRlZEtMcAgFDSR0MDYwNzE3NjA3ODECXzIEB2FjdGlvbnMDCQECIT0CBQNrTHAFCnVwZGF0ZWRLTHAFEGtMcFVwZGF0ZUFjdGlvbnMJAQh0aHJvd0VycgECEm5vdGhpbmcgdG8gcmVmcmVzaAkAlAoCBQdhY3Rpb25zCQCmAwEFCnVwZGF0ZWRLTHAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQENZ2V0UG9vbENvbmZpZwABaQEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQEHYXNzZXRJZAkAlAoCBQNuaWwJAQ1nZXRBY2NCYWxhbmNlAQUHYXNzZXRJZAFpARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwVhbUFtdAVwckFtdAVscEFtdAQGcHJpY2VzCQEKY2FsY1ByaWNlcwMFBWFtQW10BQVwckFtdAUFbHBBbXQJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQZwcmljZXMAAAkAzAgCCQCmAwEJAJEDAgUGcHJpY2VzAAEJAMwIAgkApgMBCQCRAwIFBnByaWNlcwACBQNuaWwBaQEUdG9YMThXcmFwcGVyUkVBRE9OTFkCB29yaWdWYWwNb3JpZ1NjYWxlTXVsdAkAlAoCBQNuaWwJAKYDAQkBBXRvWDE4AgUHb3JpZ1ZhbAUNb3JpZ1NjYWxlTXVsdAFpARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgN2YWwPcmVzdWx0U2NhbGVNdWx0CQCUCgIFA25pbAkBB2Zyb21YMTgCCQCnAwEFA3ZhbAUPcmVzdWx0U2NhbGVNdWx0AWkBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQIIcHJBbXRYMTgIYW1BbXRYMTgJAJQKAgUDbmlsCQCmAwEJAQ9jYWxjUHJpY2VCaWdJbnQCCQCnAwEFCHByQW10WDE4CQCnAwEFCGFtQW10WDE4AWkBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQZ0eElkNTgRc2xpcHBhZ2VUb2xlcmFuY2UMaW5BbUFzc2V0QW10C2luQW1Bc3NldElkDGluUHJBc3NldEFtdAtpblByQXNzZXRJZAt1c2VyQWRkcmVzcwppc0V2YWx1YXRlBmVtaXRMcAkAlAoCBQNuaWwJARRlc3RpbWF0ZVB1dE9wZXJhdGlvbgkFBnR4SWQ1OAURc2xpcHBhZ2VUb2xlcmFuY2UFDGluQW1Bc3NldEFtdAULaW5BbUFzc2V0SWQFDGluUHJBc3NldEFtdAULaW5QckFzc2V0SWQFC3VzZXJBZGRyZXNzBQppc0V2YWx1YXRlBQZlbWl0THABaQEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEBnR4SWQ1OApwbXRBc3NldElkCHBtdExwQW10C3VzZXJBZGRyZXNzBANyZXMJARRlc3RpbWF0ZUdldE9wZXJhdGlvbgQFBnR4SWQ1OAUKcG10QXNzZXRJZAUIcG10THBBbXQJARFAZXh0ck5hdGl2ZSgxMDYyKQEFC3VzZXJBZGRyZXNzCQCUCgIFA25pbAkAnAoKCAUDcmVzAl8xCAUDcmVzAl8yCAUDcmVzAl8zCAUDcmVzAl80CAUDcmVzAl81CAUDcmVzAl82CAUDcmVzAl83CQCmAwEIBQNyZXMCXzgIBQNyZXMCXzkIBQNyZXMDXzEwAWkBDXN0YXRzUkVBRE9OTFkABANjZmcJAQ1nZXRQb29sQ29uZmlnAAQJbHBBc3NldElkCQDZBAEJAJEDAgUDY2ZnBRBpZHhQb29sTFBBc3NldElkBAphbXRBc3NldElkCQCRAwIFA2NmZwUNaWR4QW10QXNzZXRJZAQMcHJpY2VBc3NldElkCQCRAwIFA2NmZwUPaWR4UHJpY2VBc3NldElkBAtpQW10QXNzZXRJZAkAkQMCBQNjZmcFDmlkeElBbXRBc3NldElkBA1pUHJpY2VBc3NldElkCQCRAwIFA2NmZwUQaWR4SVByaWNlQXNzZXRJZAQLYW10QXNzZXREY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDmlkeEFtdEFzc2V0RGNtBA1wcmljZUFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBRBpZHhQcmljZUFzc2V0RGNtBA1wb29sTFBCYWxhbmNlCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFCWxwQXNzZXRJZAkArAICCQCsAgICBkFzc2V0IAkA2AQBBQlscEFzc2V0SWQCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BBJhY2NBbXRBc3NldEJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUKYW10QXNzZXRJZAQUYWNjUHJpY2VBc3NldEJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUMcHJpY2VBc3NldElkBApwcmljZXNMaXN0AwkAAAIFDXBvb2xMUEJhbGFuY2UAAAkAzAgCBQp6ZXJvQmlnSW50CQDMCAIFCnplcm9CaWdJbnQJAMwIAgUKemVyb0JpZ0ludAUDbmlsCQEKY2FsY1ByaWNlcwMFEmFjY0FtdEFzc2V0QmFsYW5jZQUUYWNjUHJpY2VBc3NldEJhbGFuY2UFDXBvb2xMUEJhbGFuY2UECGN1clByaWNlAAAED2xwQW10QXNzZXRTaGFyZQkBB2Zyb21YMTgCCQCRAwIFCnByaWNlc0xpc3QAAQUGc2NhbGU4BBFscFByaWNlQXNzZXRTaGFyZQkBB2Zyb21YMTgCCQCRAwIFCnByaWNlc0xpc3QAAgUGc2NhbGU4BApwb29sV2VpZ2h0CQEFdmFsdWUBCQCaCAIFD2ZhY3RvcnlDb250cmFjdAkBDWtleVBvb2xXZWlnaHQBCQClCAEFBHRoaXMJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBRJhY2NBbXRBc3NldEJhbGFuY2UJAMwIAgkApAMBBRRhY2NQcmljZUFzc2V0QmFsYW5jZQkAzAgCCQCkAwEFDXBvb2xMUEJhbGFuY2UJAMwIAgkApAMBBQhjdXJQcmljZQkAzAgCCQCkAwEFD2xwQW10QXNzZXRTaGFyZQkAzAgCCQCkAwEFEWxwUHJpY2VBc3NldFNoYXJlCQDMCAIJAKQDAQUKcG9vbFdlaWdodAUDbmlsBQNTRVABaQEgZXZhbHVhdGVQdXRCeUFtb3VudEFzc2V0UkVBRE9OTFkBDGluQW1Bc3NldEFtdAQDY2ZnCQENZ2V0UG9vbENvbmZpZwAECWxwQXNzZXRJZAkA2QQBCQCRAwIFA2NmZwUQaWR4UG9vbExQQXNzZXRJZAQMYW1Bc3NldElkU3RyCQCRAwIFA2NmZwUNaWR4QW10QXNzZXRJZAQJYW1Bc3NldElkCQDZBAEFDGFtQXNzZXRJZFN0cgQMcHJBc3NldElkU3RyCQCRAwIFA2NmZwUPaWR4UHJpY2VBc3NldElkBAlwckFzc2V0SWQJANkEAQUMcHJBc3NldElkU3RyBAthbXRBc3NldERjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUOaWR4QW10QXNzZXREY20EDXByaWNlQXNzZXREY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFEGlkeFByaWNlQXNzZXREY20ECnBvb2xTdGF0dXMJAJEDAgUDY2ZnBQ1pZHhQb29sU3RhdHVzBA1wb29sTFBCYWxhbmNlCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFCWxwQXNzZXRJZAkArAICCQCsAgICBkFzc2V0IAkA2AQBBQlscEFzc2V0SWQCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BBJhY2NBbXRBc3NldEJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUMYW1Bc3NldElkU3RyBBRhY2NQcmljZUFzc2V0QmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQxwckFzc2V0SWRTdHIEDmFtdEFzc2V0QW10WDE4CQEFdG9YMTgCBRJhY2NBbXRBc3NldEJhbGFuY2UFC2FtdEFzc2V0RGNtBBBwcmljZUFzc2V0QW10WDE4CQEFdG9YMTgCBRRhY2NQcmljZUFzc2V0QmFsYW5jZQUNcHJpY2VBc3NldERjbQQLY3VyUHJpY2VYMTgDCQAAAgUNcG9vbExQQmFsYW5jZQAABQp6ZXJvQmlnSW50CQEPY2FsY1ByaWNlQmlnSW50AgUQcHJpY2VBc3NldEFtdFgxOAUOYW10QXNzZXRBbXRYMTgED2luQW1Bc3NldEFtdFgxOAkBBXRvWDE4AgUMaW5BbUFzc2V0QW10BQthbXRBc3NldERjbQQPaW5QckFzc2V0QW10WDE4CQC8AgMFD2luQW1Bc3NldEFtdFgxOAULY3VyUHJpY2VYMTgFB3NjYWxlMTgEDGluUHJBc3NldEFtdAkBB2Zyb21YMTgCBQ9pblByQXNzZXRBbXRYMTgFDXByaWNlQXNzZXREY20EBmVzdFB1dAkBFGVzdGltYXRlUHV0T3BlcmF0aW9uCQIAAKDCHgUMaW5BbUFzc2V0QW10BQlhbUFzc2V0SWQFDGluUHJBc3NldEFtdAUJcHJBc3NldElkAgAGBwQJY2FsY0xwQW10CAUGZXN0UHV0Al8xBAxjdXJQcmljZUNhbGMIBQZlc3RQdXQCXzMECWFtQmFsYW5jZQgFBmVzdFB1dAJfNAQJcHJCYWxhbmNlCAUGZXN0UHV0Al81BApscEVtaXNzaW9uCAUGZXN0UHV0Al82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQljYWxjTHBBbXQJAMwIAgkApAMBCQEHZnJvbVgxOAIFC2N1clByaWNlWDE4BQZzY2FsZTgJAMwIAgkApAMBBQlhbUJhbGFuY2UJAMwIAgkApAMBBQlwckJhbGFuY2UJAMwIAgkApAMBBQpscEVtaXNzaW9uCQDMCAIFCnBvb2xTdGF0dXMJAMwIAgkApAMBBQxpbkFtQXNzZXRBbXQJAMwIAgkApAMBBQxpblByQXNzZXRBbXQFA25pbAUDU0VQAWkBH2V2YWx1YXRlUHV0QnlQcmljZUFzc2V0UkVBRE9OTFkBDGluUHJBc3NldEFtdAQDY2ZnCQENZ2V0UG9vbENvbmZpZwAECWxwQXNzZXRJZAkA2QQBCQCRAwIFA2NmZwUQaWR4UG9vbExQQXNzZXRJZAQMYW1Bc3NldElkU3RyCQCRAwIFA2NmZwUNaWR4QW10QXNzZXRJZAQJYW1Bc3NldElkCQDZBAEFDGFtQXNzZXRJZFN0cgQMcHJBc3NldElkU3RyCQCRAwIFA2NmZwUPaWR4UHJpY2VBc3NldElkBAlwckFzc2V0SWQJANkEAQUMcHJBc3NldElkU3RyBAthbXRBc3NldERjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUOaWR4QW10QXNzZXREY20EDXByaWNlQXNzZXREY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFEGlkeFByaWNlQXNzZXREY20ECnBvb2xTdGF0dXMJAJEDAgUDY2ZnBQ1pZHhQb29sU3RhdHVzBA1wb29sTFBCYWxhbmNlCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFCWxwQXNzZXRJZAkArAICCQCsAgICBkFzc2V0IAkA2AQBBQlscEFzc2V0SWQCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAxhbUJhbGFuY2VSYXcJAQ1nZXRBY2NCYWxhbmNlAQUMYW1Bc3NldElkU3RyBAxwckJhbGFuY2VSYXcJAQ1nZXRBY2NCYWxhbmNlAQUMcHJBc3NldElkU3RyBA9hbUJhbGFuY2VSYXdYMTgJAQV0b1gxOAIFDGFtQmFsYW5jZVJhdwULYW10QXNzZXREY20ED3ByQmFsYW5jZVJhd1gxOAkBBXRvWDE4AgUMcHJCYWxhbmNlUmF3BQ1wcmljZUFzc2V0RGNtBAtjdXJQcmljZVgxOAMJAAACBQ1wb29sTFBCYWxhbmNlAAAFCnplcm9CaWdJbnQJAQ9jYWxjUHJpY2VCaWdJbnQCBQ9wckJhbGFuY2VSYXdYMTgFD2FtQmFsYW5jZVJhd1gxOAQPaW5QckFzc2V0QW10WDE4CQEFdG9YMTgCBQxpblByQXNzZXRBbXQFDXByaWNlQXNzZXREY20ED2luQW1Bc3NldEFtdFgxOAkAvAIDBQ9pblByQXNzZXRBbXRYMTgFB3NjYWxlMTgFC2N1clByaWNlWDE4BAxpbkFtQXNzZXRBbXQJAQdmcm9tWDE4AgUPaW5BbUFzc2V0QW10WDE4BQthbXRBc3NldERjbQQGZXN0UHV0CQEUZXN0aW1hdGVQdXRPcGVyYXRpb24JAgAAoMIeBQxpbkFtQXNzZXRBbXQFCWFtQXNzZXRJZAUMaW5QckFzc2V0QW10BQlwckFzc2V0SWQCAAYHBAljYWxjTHBBbXQIBQZlc3RQdXQCXzEEDGN1clByaWNlQ2FsYwgFBmVzdFB1dAJfMwQJYW1CYWxhbmNlCAUGZXN0UHV0Al80BAlwckJhbGFuY2UIBQZlc3RQdXQCXzUECmxwRW1pc3Npb24IBQZlc3RQdXQCXzYJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFCWNhbGNMcEFtdAkAzAgCCQCkAwEJAQdmcm9tWDE4AgULY3VyUHJpY2VYMTgFBnNjYWxlOAkAzAgCCQCkAwEFCWFtQmFsYW5jZQkAzAgCCQCkAwEFCXByQmFsYW5jZQkAzAgCCQCkAwEFCmxwRW1pc3Npb24JAMwIAgUKcG9vbFN0YXR1cwkAzAgCCQCkAwEFDGluQW1Bc3NldEFtdAkAzAgCCQCkAwEFDGluUHJBc3NldEFtdAUDbmlsBQNTRVABaQETZXZhbHVhdGVHZXRSRUFET05MWQIQcGF5bWVudExwQXNzZXRJZAxwYXltZW50THBBbXQEA3JlcwkBFGVzdGltYXRlR2V0T3BlcmF0aW9uBAIABRBwYXltZW50THBBc3NldElkBQxwYXltZW50THBBbXQFBHRoaXMECG91dEFtQW10CAUDcmVzAl8xBAhvdXRQckFtdAgFA3JlcwJfMgQJYW1CYWxhbmNlCAUDcmVzAl81BAlwckJhbGFuY2UIBQNyZXMCXzYECmxwRW1pc3Npb24IBQNyZXMCXzcECGN1clByaWNlCAUDcmVzAl84BApwb29sU3RhdHVzCQENcGFyc2VJbnRWYWx1ZQEIBQNyZXMCXzkJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQhvdXRBbUFtdAkAzAgCCQCkAwEFCG91dFByQW10CQDMCAIJAKQDAQUJYW1CYWxhbmNlCQDMCAIJAKQDAQUJcHJCYWxhbmNlCQDMCAIJAKQDAQUKbHBFbWlzc2lvbgkAzAgCCQCmAwEFCGN1clByaWNlCQDMCAIJAKQDAQUKcG9vbFN0YXR1cwUDbmlsBQNTRVABAnR4AQZ2ZXJpZnkABA90YXJnZXRQdWJsaWNLZXkEByRtYXRjaDAJARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAUCcGsDCQABAgUHJG1hdGNoMAIEVW5pdAgFAnR4D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAckbWF0Y2gwBQJ0eAMJAAECBQckbWF0Y2gwAgVPcmRlcgQFb3JkZXIFByRtYXRjaDAECm1hdGNoZXJQdWIJARNnZXRNYXRjaGVyUHViT3JGYWlsAAQNJHQwNjk0NDM2OTU2MAMJARNza2lwT3JkZXJWYWxpZGF0aW9uAAkAlAoCBgIACQEbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkAQUFb3JkZXIECm9yZGVyVmFsaWQIBQ0kdDA2OTQ0MzY5NTYwAl8xBA5vcmRlclZhbGlkSW5mbwgFDSR0MDY5NDQzNjk1NjACXzIEC3NlbmRlclZhbGlkCQD0AwMIBQVvcmRlcglib2R5Qnl0ZXMJAJEDAggFBW9yZGVyBnByb29mcwAACAUFb3JkZXIPc2VuZGVyUHVibGljS2V5BAxtYXRjaGVyVmFsaWQJAPQDAwgFBW9yZGVyCWJvZHlCeXRlcwkAkQMCCAUFb3JkZXIGcHJvb2ZzAAEFCm1hdGNoZXJQdWIDAwMFCm9yZGVyVmFsaWQFC3NlbmRlclZhbGlkBwUMbWF0Y2hlclZhbGlkBwYJAQ90aHJvd09yZGVyRXJyb3IEBQpvcmRlclZhbGlkBQ5vcmRlclZhbGlkSW5mbwULc2VuZGVyVmFsaWQFDG1hdGNoZXJWYWxpZAMJAAECBQckbWF0Y2gwAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQBcwUHJG1hdGNoMAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFD3RhcmdldFB1YmxpY0tleQYEB25ld0hhc2gJAPYDAQkBBXZhbHVlAQgFAXMGc2NyaXB0BAthbGxvd2VkSGFzaAkA2wQBCQEFdmFsdWUBCQCdCAIFD2ZhY3RvcnlDb250cmFjdAkBFmtleUFsbG93ZWRMcFNjcmlwdEhhc2gABAtjdXJyZW50SGFzaAkA8QcBBQR0aGlzAwkAAAIFC2FsbG93ZWRIYXNoBQduZXdIYXNoCQECIT0CBQtjdXJyZW50SGFzaAUHbmV3SGFzaAcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFD3RhcmdldFB1YmxpY0tlecMZ+sA=", "height": 2985981, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EcgcLqYpdrg7GknRTtZdXgjntZS8SqgFcdk9aeGHAMeg Next: 838d9aNBMi4kstg36zxLE49tezzDLvMamci9kRLAU3Eb Diff:
OldNewDifferences
473473 let cQ = cT._7
474474 if (cM)
475475 then {
476- let cU = max([0, ((bV(ap) - cS) - cE)])
477- if ((cU == cU))
476+ let ck = as(cP)
477+ if ((ck == ck))
478478 then {
479- let co = fraction(cN, cU, 100)
480- if ((co == co))
479+ let cj = if ((ck != 0))
480+ then ar(ap)
481+ else 0
482+ if ((cj == cj))
481483 then {
482- let cV = (ar(ap) - co)
483- if ((cV == cV))
484- then if ((0 > cV))
485- then cg(ap, -(cV), cP, addressFromStringValue(cO))
486- else cq(ap, cV, cP, addressFromStringValue(cO), cr, addressFromStringValue(cQ))
484+ let cU = max([0, ((bV(ap) - cS) - cE)])
485+ if ((cU == cU))
486+ then {
487+ let co = fraction(cN, cU, 100)
488+ if ((co == co))
489+ then {
490+ let cV = (cj - co)
491+ if ((cV == cV))
492+ then if ((0 > cV))
493+ then cg(ap, -(cV), cP, addressFromStringValue(cO))
494+ else cq(ap, cV, cP, addressFromStringValue(cO), cr, addressFromStringValue(cQ))
495+ else throw("Strict value is not equal to itself.")
496+ }
497+ else throw("Strict value is not equal to itself.")
498+ }
487499 else throw("Strict value is not equal to itself.")
488500 }
489501 else throw("Strict value is not equal to itself.")
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 = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(0)
1515
1616 let g = toBigInt(1)
1717
1818 let h = toBigInt(2)
1919
2020 let i = "WAVES"
2121
2222 let j = "__"
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 10
5151
5252 let y = 1
5353
5454 let z = 2
5555
5656 let A = 3
5757
5858 let B = 1
5959
6060 let C = 7
6161
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
6565 func G (E,F) = fraction(E, d, F)
6666
6767
6868 func H (I,J) = toInt(fraction(I, toBigInt(J), d))
6969
7070
7171 func K (I,J,L) = toInt(fraction(I, toBigInt(J), d, L))
7272
7373
7474 func M (N,O,P) = fraction(N, O, P)
7575
7676
7777 func Q (I) = if ((0 > I))
7878 then -(I)
7979 else I
8080
8181
8282 func R (I) = if ((e > I))
8383 then -(I)
8484 else I
8585
8686
8787 func S () = "%s__swapContract"
8888
8989
9090 func T () = "%s__factoryContract"
9191
9292
9393 func U () = "%s__managerPublicKey"
9494
9595
9696 func V () = "%s__managerVaultAddress"
9797
9898
9999 func W () = "%s%s__price__last"
100100
101101
102102 func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], j)
103103
104104
105105 func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
106106
107107
108108 func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
109109
110110
111111 func ae () = "%s__amountAsset"
112112
113113
114114 func af () = "%s__priceAsset"
115115
116116
117117 let ag = "%s__fee"
118118
119119 let ah = fraction(10, b, 10000)
120120
121121 let ai = valueOrElse(getInteger(this, ag), ah)
122122
123123 let aj = makeString(["%s", "kLp"], j)
124124
125125 let ak = makeString(["%s", "kLpRefreshedHeight"], j)
126126
127127 let al = makeString(["%s", "refreshKLpDelay"], j)
128128
129129 let am = 30
130130
131131 let an = valueOrElse(getInteger(this, al), am)
132132
133133 func ao (ap) = makeString(["%s%s", "stakedBalance", ap], j)
134134
135135
136136 func aq (ap) = makeString(["%s%s", "shareAssetBalance", ap], j)
137137
138138
139139 func ar (ap) = valueOrElse(getInteger(this, ao(ap)), 0)
140140
141141
142142 func as (ap) = valueOrElse(getInteger(this, aq(ap)), 0)
143143
144144
145145 func at () = "%s__factoryConfig"
146146
147147
148148 func au () = "%s%s__matcher__publicKey"
149149
150150
151151 func av (aw) = (("%s%s%s__" + aw) + "__mappings__poolContract2LpAsset")
152152
153153
154154 func ax (ay,az) = (((("%d%d%s__" + ay) + "__") + az) + "__config")
155155
156156
157157 func aA (aB) = ("%s%s%s__mappings__baseAsset2internalId__" + aB)
158158
159159
160160 func aC () = "%s__shutdown"
161161
162162
163163 func aD (aE) = ("%s%s__poolWeight__" + aE)
164164
165165
166166 func aF () = "%s__allowedLpScriptHash"
167167
168168
169169 let aG = "%s__feeCollectorAddress"
170170
171171 func aH (aI) = ("%s%s__skipOrderValidation__" + aI)
172172
173173
174174 func aJ (aK,aL,aM,aN) = throw((((((((("order validation failed: orderValid=" + toString(aK)) + " (") + aL) + ")") + " senderValid=") + toString(aM)) + " matcherValid=") + toString(aN)))
175175
176176
177177 func aO (aP) = {
178178 let aQ = addressFromString(aP)
179179 if ($isInstanceOf(aQ, "Address"))
180180 then {
181181 let aR = aQ
182182 aR
183183 }
184184 else this
185185 }
186186
187187
188188 func aS () = {
189189 let aT = {
190190 let aQ = getString(T())
191191 if ($isInstanceOf(aQ, "String"))
192192 then {
193193 let aU = aQ
194194 aO(aU)
195195 }
196196 else this
197197 }
198198 let aQ = getString(aT, V())
199199 if ($isInstanceOf(aQ, "String"))
200200 then {
201201 let aV = aQ
202202 aO(aV)
203203 }
204204 else this
205205 }
206206
207207
208208 func aW (aX,aY) = valueOrErrorMessage(getString(aX, aY), makeString(["mandatory ", toString(aX), ".", aY, " is not defined"], ""))
209209
210210
211211 func aZ (aX,aY) = valueOrErrorMessage(getInteger(aX, aY), makeString(["mandatory ", toString(aX), ".", aY, " is not defined"], ""))
212212
213213
214214 func ba (bb) = throw(makeString(["lp.ride:", bb], " "))
215215
216216
217217 func bc (bb) = makeString(["lp.ride:", bb], " ")
218218
219219
220220 let bd = addressFromStringValue(aW(this, T()))
221221
222222 let be = addressFromStringValue(aW(bd, aG))
223223
224224 let bf = {
225225 let bg = invoke(bd, "getInFeeREADONLY", [toString(this)], nil)
226226 if ($isInstanceOf(bg, "Int"))
227227 then bg
228228 else throw(($getType(bg) + " couldn't be cast to Int"))
229229 }
230230
231231 let bh = {
232232 let bg = invoke(bd, "getOutFeeREADONLY", [toString(this)], nil)
233233 if ($isInstanceOf(bg, "Int"))
234234 then bg
235235 else throw(($getType(bg) + " couldn't be cast to Int"))
236236 }
237237
238238 func bi (aX) = makeString(["%s%s", "whitelisted", toString(aX)], j)
239239
240240
241241 func bj (aX) = valueOrElse(getBoolean(bd, bi(aX)), false)
242242
243243
244244 func bk () = valueOrElse(getBoolean(bd, aC()), false)
245245
246246
247247 func bl () = fromBase58String(aW(bd, au()))
248248
249249
250250 func bm () = {
251251 let bn = aW(this, ae())
252252 let bo = aW(this, af())
253253 let az = aZ(bd, aA(bo))
254254 let ay = aZ(bd, aA(bn))
255255 split(aW(bd, ax(toString(ay), toString(az))), j)
256256 }
257257
258258
259259 func bp (bq) = if ((bq == i))
260260 then unit
261261 else fromBase58String(bq)
262262
263263
264264 func br (bq) = if ((bq == unit))
265265 then i
266266 else toBase58String(value(bq))
267267
268268
269269 func bs (bt) = $Tuple7(addressFromStringValue(bt[o]), parseIntValue(bt[p]), fromBase58String(bt[q]), bp(bt[r]), bp(bt[s]), parseIntValue(bt[t]), parseIntValue(bt[u]))
270270
271271
272272 let bu = bs(bm())
273273
274274 let bv = bu
275275
276276 let bw = bv._1
277277
278278 let bx = bv._2
279279
280280 let by = bv._3
281281
282282 let bz = bv._4
283283
284284 let bA = bv._5
285285
286286 let bB = bv._6
287287
288288 let bC = bv._7
289289
290290 func bD () = split(aW(bd, at()), j)
291291
292292
293293 let bE = valueOrErrorMessage(addressFromString(bD()[B]), "incorrect staking address")
294294
295295 let bF = valueOrErrorMessage(addressFromString(bD()[C]), "incorrect staking address")
296296
297297 func bG (bH,bI,bJ,bK,bL,bM,bN,bO,bP,bQ) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bH), toString(bI), toString(bJ), toString(bK), toString(bL), toString(bM), toString(bN), toString(bO), toString(bP), toString(bQ)], j)
298298
299299
300300 func bR (bS,bT,bU,bK,bN,bO) = makeString(["%d%d%d%d%d%d", toString(bS), toString(bT), toString(bU), toString(bK), toString(bN), toString(bO)], j)
301301
302302
303303 func bV (ap) = {
304304 let bW = if ((ap == "WAVES"))
305305 then wavesBalance(this).available
306306 else assetBalance(this, fromBase58String(ap))
307307 let bX = ((bW + ar(ap)) - as(ap))
308308 max([0, bX])
309309 }
310310
311311
312312 func bY (bZ,ca) = fraction(bZ, d, ca)
313313
314314
315315 func cb (bZ,ca,L) = fraction(bZ, d, ca, L)
316316
317317
318318 func cc (cd) = {
319319 let ce = invoke(cd, "getRate", nil, nil)
320320 if ((ce == ce))
321321 then {
322322 let aQ = ce
323323 if ($isInstanceOf(aQ, "Int"))
324324 then {
325325 let cf = aQ
326326 cf
327327 }
328328 else ba("proxy.getRate() unexpected value")
329329 }
330330 else throw("Strict value is not equal to itself.")
331331 }
332332
333333
334334 func cg (ap,ch,ci,cd) = {
335335 let cj = ar(ap)
336336 if ((cj == cj))
337337 then {
338338 let ck = as(ci)
339339 if ((ck == ck))
340340 then {
341341 let cl = bp(ap)
342342 if ((ch > 0))
343343 then {
344344 let cm = invoke(cd, "deposit", nil, [AttachedPayment(cl, ch)])
345345 if ((cm == cm))
346346 then {
347347 let aQ = cm
348348 if ($isInstanceOf(aQ, "Int"))
349349 then {
350350 let cn = aQ
351351 let co = (cj + ch)
352352 let cp = (ck + cn)
353353 [IntegerEntry(ao(ap), co), IntegerEntry(aq(ci), cp)]
354354 }
355355 else nil
356356 }
357357 else throw("Strict value is not equal to itself.")
358358 }
359359 else nil
360360 }
361361 else throw("Strict value is not equal to itself.")
362362 }
363363 else throw("Strict value is not equal to itself.")
364364 }
365365
366366
367367 func cq (ap,ch,ci,cd,cr,cs) = {
368368 let cj = ar(ap)
369369 if ((cj == cj))
370370 then {
371371 let ck = as(ci)
372372 if ((ck == ck))
373373 then {
374374 let ct = cc(cd)
375375 if ((ct == ct))
376376 then {
377377 let cu = fraction(cr, cj, ck)
378378 let cv = bp(ci)
379379 let cw = fraction(cr, ch, cu)
380380 let cx = fraction(cr, ch, ct)
381381 let cy = max([0, (cw - cx)])
382382 if ((cx > 0))
383383 then {
384384 let cz = invoke(cd, "withdraw", nil, [AttachedPayment(cv, cx)])
385385 if ((cz == cz))
386386 then {
387387 let aQ = cz
388388 if ($isInstanceOf(aQ, "Int"))
389389 then {
390390 let cA = aQ
391391 let co = (cj - cA)
392392 let cp = ((ck - cx) - cy)
393393 [IntegerEntry(ao(ap), co), IntegerEntry(aq(ci), cp), ScriptTransfer(cs, cy, bp(ci))]
394394 }
395395 else nil
396396 }
397397 else throw("Strict value is not equal to itself.")
398398 }
399399 else nil
400400 }
401401 else throw("Strict value is not equal to itself.")
402402 }
403403 else throw("Strict value is not equal to itself.")
404404 }
405405 else throw("Strict value is not equal to itself.")
406406 }
407407
408408
409409 func cB (ap) = {
410410 let aQ = invoke(bd, "getPoolLeaseConfigREADONLY", [toString(this), ap], nil)
411411 if ($isInstanceOf(aQ, "(Boolean, Int, Int, String, String, Int, String)"))
412412 then {
413413 let aR = aQ
414414 aR
415415 }
416416 else ba((("[" + ap) + "] getLeaseProxyConfig() error"))
417417 }
418418
419419
420420 func cC (cD,ap,ci,cE,cd,cr,cs) = {
421421 let ck = as(ci)
422422 if ((ck == ck))
423423 then {
424424 let cj = if ((ck != 0))
425425 then ar(ap)
426426 else 0
427427 if ((cj == cj))
428428 then {
429429 let cF = max([0, (bV(ap) - cE)])
430430 let cG = fraction(cD, cF, 100)
431431 let cH = (cj - cG)
432432 if ((cH == 0))
433433 then nil
434434 else if ((0 > cH))
435435 then {
436436 let cI = -(cH)
437437 cg(ap, cI, ci, cd)
438438 }
439439 else {
440440 let cJ = cH
441441 cq(ap, cJ, ci, cd, cr, cs)
442442 }
443443 }
444444 else throw("Strict value is not equal to itself.")
445445 }
446446 else throw("Strict value is not equal to itself.")
447447 }
448448
449449
450450 func cK (ap) = {
451451 let cL = cB(ap)
452452 let cM = cL._1
453453 let cN = cL._2
454454 let cE = cL._3
455455 let cO = cL._4
456456 let cP = cL._5
457457 let cr = cL._6
458458 let cQ = cL._7
459459 if (cM)
460460 then cC(cN, ap, cP, cE, addressFromStringValue(cO), cr, addressFromStringValue(cQ))
461461 else nil
462462 }
463463
464464
465465 func cR (ap,cS) = {
466466 let cT = cB(ap)
467467 let cM = cT._1
468468 let cN = cT._2
469469 let cE = cT._3
470470 let cO = cT._4
471471 let cP = cT._5
472472 let cr = cT._6
473473 let cQ = cT._7
474474 if (cM)
475475 then {
476- let cU = max([0, ((bV(ap) - cS) - cE)])
477- if ((cU == cU))
476+ let ck = as(cP)
477+ if ((ck == ck))
478478 then {
479- let co = fraction(cN, cU, 100)
480- if ((co == co))
479+ let cj = if ((ck != 0))
480+ then ar(ap)
481+ else 0
482+ if ((cj == cj))
481483 then {
482- let cV = (ar(ap) - co)
483- if ((cV == cV))
484- then if ((0 > cV))
485- then cg(ap, -(cV), cP, addressFromStringValue(cO))
486- else cq(ap, cV, cP, addressFromStringValue(cO), cr, addressFromStringValue(cQ))
484+ let cU = max([0, ((bV(ap) - cS) - cE)])
485+ if ((cU == cU))
486+ then {
487+ let co = fraction(cN, cU, 100)
488+ if ((co == co))
489+ then {
490+ let cV = (cj - co)
491+ if ((cV == cV))
492+ then if ((0 > cV))
493+ then cg(ap, -(cV), cP, addressFromStringValue(cO))
494+ else cq(ap, cV, cP, addressFromStringValue(cO), cr, addressFromStringValue(cQ))
495+ else throw("Strict value is not equal to itself.")
496+ }
497+ else throw("Strict value is not equal to itself.")
498+ }
487499 else throw("Strict value is not equal to itself.")
488500 }
489501 else throw("Strict value is not equal to itself.")
490502 }
491503 else throw("Strict value is not equal to itself.")
492504 }
493505 else nil
494506 }
495507
496508
497509 func cW (cX,cY) = {
498510 let cZ = cR(aW(this, ae()), cX)
499511 let da = cR(aW(this, af()), cY)
500512 (cZ ++ da)
501513 }
502514
503515
504516 func db (dc,dd,de,df) = {
505517 let dg = D(de, dc)
506518 let dh = D(df, dd)
507519 bY(dh, dg)
508520 }
509521
510522
511523 func di (de,df,dj) = {
512524 let dk = bm()
513525 let dl = parseIntValue(dk[t])
514526 let dm = parseIntValue(dk[u])
515527 let dn = db(dl, dm, de, df)
516528 let ca = D(de, dl)
517529 let bZ = D(df, dm)
518530 let do = D(dj, b)
519531 let dp = bY(ca, do)
520532 let dq = bY(bZ, do)
521533 [dn, dp, dq]
522534 }
523535
524536
525537 func dr (de,df,dj) = {
526538 let ds = di(de, df, dj)
527539 [H(ds[0], b), H(ds[1], b), H(ds[2], b)]
528540 }
529541
530542
531543 func dt (du,dv,dw,ab) = {
532544 let dk = bm()
533545 let dx = dk[q]
534546 let dy = dk[r]
535547 let dz = dk[s]
536548 let dc = parseIntValue(dk[t])
537549 let dd = parseIntValue(dk[u])
538550 let dA = dk[p]
539551 let dB = valueOrErrorMessage(assetInfo(fromBase58String(dx)), (("Asset " + dx) + " doesn't exist")).quantity
540552 if ((dx != dv))
541553 then throw("Invalid asset passed.")
542554 else {
543555 let dC = bV(dy)
544556 let dD = D(dC, dc)
545557 let dE = bV(dz)
546558 let dF = D(dE, dd)
547559 let dG = bY(dF, dD)
548560 let dH = H(dG, b)
549561 let dI = D(dw, b)
550562 let dJ = D(dB, b)
551563 let dK = fraction(dD, dI, dJ)
552564 let dL = fraction(dF, dI, dJ)
553565 let dM = K(dK, dc, FLOOR)
554566 let dN = K(dL, dd, FLOOR)
555567 let dO = if ((du == ""))
556568 then nil
557569 else [ScriptTransfer(ab, dM, if ((dy == "WAVES"))
558570 then unit
559571 else fromBase58String(dy)), ScriptTransfer(ab, dN, if ((dz == "WAVES"))
560572 then unit
561573 else fromBase58String(dz)), StringEntry(ad(toString(ab), du), bR(dM, dN, dw, dH, height, lastBlock.timestamp)), IntegerEntry(W(), dH), IntegerEntry(X(height, lastBlock.timestamp), dH)]
562574 $Tuple10(dM, dN, dy, dz, dC, dE, dB, dG, dA, dO)
563575 }
564576 }
565577
566578
567579 func dP (du,dQ,dR,dS,dT,dU,ab,dV,dW) = {
568580 let dk = bm()
569581 let dx = fromBase58String(dk[q])
570582 let dX = dk[r]
571583 let dY = dk[s]
572584 let dZ = dk[v]
573585 let ea = dk[w]
574586 let dl = parseIntValue(dk[t])
575587 let dm = parseIntValue(dk[u])
576588 let dA = dk[p]
577589 let dB = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
578590 let eb = toBase58String(valueOrElse(dS, fromBase58String("WAVES")))
579591 let ec = toBase58String(valueOrElse(dU, fromBase58String("WAVES")))
580592 if (if ((dX != eb))
581593 then true
582594 else (dY != ec))
583595 then throw("Invalid amt or price asset passed.")
584596 else {
585597 let dC = if (dV)
586598 then bV(dX)
587599 else (bV(dX) - dR)
588600 let dE = if (dV)
589601 then bV(dY)
590602 else (bV(dY) - dT)
591603 let ed = D(dR, dl)
592604 let ee = D(dT, dm)
593605 let ef = bY(ee, ed)
594606 let dD = D(dC, dl)
595607 let dF = D(dE, dm)
596608 let eg = if ((dB == 0))
597609 then {
598610 let dG = e
599611 let eh = e
600612 let do = pow((ed * ee), 0, toBigInt(5), 1, 0, DOWN)
601613 $Tuple5(H(do, b), H(ed, dl), H(ee, dm), bY((dF + ee), (dD + ed)), eh)
602614 }
603615 else {
604616 let dG = bY(dF, dD)
605617 let eh = fraction(R((dG - ef)), d, dG)
606618 let ei = D(dQ, b)
607619 if (if ((dG != e))
608620 then (eh > ei)
609621 else false)
610622 then throw(((("Price slippage " + toString(eh)) + " exceeded the passed limit of ") + toString(ei)))
611623 else {
612624 let dJ = D(dB, b)
613625 let ej = fraction(ed, cb(dF, dD, CEILING), d, CEILING)
614626 let ek = fraction(ee, d, cb(dF, dD, FLOOR), CEILING)
615627 let el = if ((ej > ee))
616628 then $Tuple2(ek, ee)
617629 else $Tuple2(ed, ej)
618630 let em = el._1
619631 let en = el._2
620632 let do = fraction(dJ, en, dF, FLOOR)
621633 $Tuple5(K(do, b, FLOOR), K(em, dl, CEILING), K(en, dm, CEILING), dG, eh)
622634 }
623635 }
624636 let eo = eg._1
625637 let ep = eg._2
626638 let eq = eg._3
627639 let dH = H(eg._4, b)
628640 let er = H(eg._5, b)
629641 if ((0 >= eo))
630642 then throw("Invalid calculations. LP calculated is less than zero.")
631643 else {
632644 let es = if (!(dW))
633645 then 0
634646 else eo
635647 let et = (dR - ep)
636648 let eu = (dT - eq)
637649 let ev = [IntegerEntry(W(), dH), IntegerEntry(X(height, lastBlock.timestamp), dH), StringEntry(aa(ab, du), bG(ep, eq, es, dH, dQ, er, height, lastBlock.timestamp, et, eu))]
638650 $Tuple13(eo, es, dH, dC, dE, dB, dx, dA, ev, et, eu, dS, dU)
639651 }
640652 }
641653 }
642654
643655
644656 func ew (ex,ey,dB) = {
645657 let ez = G(ex, toBigInt(bB))
646658 let eA = G(ey, toBigInt(bC))
647659 let eB = fraction(pow((ez * eA), 0, toBigInt(5), 1, 18, DOWN), g, dB)
648660 if ((dB == f))
649661 then f
650662 else eB
651663 }
652664
653665
654666 func eC (eD,eE,eF) = {
655667 let eG = (toBigInt(bV(br(bz))) - eD)
656668 let eH = (toBigInt(bV(br(bA))) - eE)
657669 let eI = (toBigInt(value(assetInfo(by)).quantity) - eF)
658670 let eJ = ew(eG, eH, eI)
659671 eJ
660672 }
661673
662674
663675 func eK (eL,eM,eF) = {
664676 let eG = (bV(br(bz)) + eL)
665677 let eH = (bV(br(bA)) + eM)
666678 let eI = (value(assetInfo(by)).quantity + eF)
667679 let eB = ew(toBigInt(eG), toBigInt(eH), toBigInt(eI))
668680 let eN = [IntegerEntry(ak, height), StringEntry(aj, toString(eB))]
669681 $Tuple2(eN, eB)
670682 }
671683
672684
673685 func eO () = valueOrElse(getBoolean(bd, aH(toString(this))), false)
674686
675687
676688 func eP (eQ,eB) = if ((eB >= eQ))
677689 then true
678690 else ba(makeString(["updated KLp lower than current KLp", toString(eQ), toString(eB)], " "))
679691
680692
681693 func eR (eS) = {
682694 let eG = bV(br(bz))
683695 let eH = bV(br(bA))
684696 let eT = eS.amount
685697 let eU = fraction(eS.amount, eS.price, b, FLOOR)
686698 let eV = if ((eS.orderType == Buy))
687699 then $Tuple2(eT, -(eU))
688700 else $Tuple2(-(eT), eU)
689701 let eL = eV._1
690702 let eM = eV._2
691703 if (if (if (bk())
692704 then true
693705 else (bx == m))
694706 then true
695707 else (bx == n))
696708 then throw("Exchange operations disabled")
697709 else if (if ((eS.assetPair.amountAsset != bz))
698710 then true
699711 else (eS.assetPair.priceAsset != bA))
700712 then throw("Wrong order assets.")
701713 else {
702714 let eW = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), bc("invalid kLp"))
703715 let eX = eK(eL, eM, 0)
704716 let eY = eX._1
705717 let eZ = eX._2
706718 let fa = (eZ >= eW)
707719 let fb = makeString(["kLp=", toString(eW), " kLpNew=", toString(eZ), " amountAssetBalance=", toString(eG), " priceAssetBalance=", toString(eH), " amountAssetBalanceDelta=", toString(eL), " priceAssetBalanceDelta=", toString(eM), " height=", toString(height)], "")
708720 $Tuple2(fa, fb)
709721 }
710722 }
711723
712724
713725 func fc (fd) = if ((size(fd.payments) != 1))
714726 then throw("exactly 1 payment is expected")
715727 else {
716728 let fe = value(fd.payments[0])
717729 let dv = value(fe.assetId)
718730 let ff = fe.amount
719731 let eg = dt(toBase58String(fd.transactionId), toBase58String(dv), ff, fd.caller)
720732 let dM = eg._1
721733 let dN = eg._2
722734 let dO = eg._10
723735 let fg = if (!(bj(fd.caller)))
724736 then if (bk())
725737 then true
726738 else (bx == n)
727739 else false
728740 if (fg)
729741 then throw(("Get operation is blocked by admin. Status = " + toString(bx)))
730742 else $Tuple5(dM, dN, ff, dv, dO)
731743 }
732744
733745
734746 func fh (fd,dQ,dW) = if ((size(fd.payments) != 2))
735747 then throw("exactly 2 payments are expected")
736748 else {
737749 let fi = value(fd.payments[0])
738750 let fj = value(fd.payments[1])
739751 let fk = dP(toBase58String(fd.transactionId), dQ, fi.amount, fi.assetId, fj.amount, fj.assetId, toString(fd.caller), false, dW)
740752 let fl = if (!(bj(fd.caller)))
741753 then if (if (bk())
742754 then true
743755 else (bx == l))
744756 then true
745757 else (bx == n)
746758 else false
747759 if (fl)
748760 then throw(("Put operation is blocked by admin. Status = " + toString(bx)))
749761 else fk
750762 }
751763
752764
753765 func fm (ch) = {
754766 let fn = invoke(bd, "emit", [ch], nil)
755767 if ((fn == fn))
756768 then {
757769 let fo = {
758770 let aQ = fn
759771 if ($isInstanceOf(aQ, "Address"))
760772 then {
761773 let fp = aQ
762774 invoke(fp, "emit", [ch], nil)
763775 }
764776 else unit
765777 }
766778 if ((fo == fo))
767779 then ch
768780 else throw("Strict value is not equal to itself.")
769781 }
770782 else throw("Strict value is not equal to itself.")
771783 }
772784
773785
774786 func fq (ch,ai) = {
775787 let fr = if ((ai == 0))
776788 then 0
777789 else fraction(ch, ai, b)
778790 $Tuple2((ch - fr), fr)
779791 }
780792
781793
782794 func fs (ft,fu,ab,ac) = {
783795 let fv = (ac == unit)
784796 let fw = bV(br(bz))
785797 let fx = bV(br(bA))
786798 let fy = if ((fu == bz))
787799 then true
788800 else if ((fu == bA))
789801 then false
790802 else ba("invalid asset")
791803 let fz = if (fv)
792804 then $Tuple2(fw, fx)
793805 else if (fy)
794806 then $Tuple2((fw - ft), fx)
795807 else $Tuple2(fw, (fx - ft))
796808 let fA = fz._1
797809 let fB = fz._2
798810 let fC = if (fy)
799811 then $Tuple2(ft, 0)
800812 else $Tuple2(0, ft)
801813 let fD = fC._1
802814 let fE = fC._2
803815 let eT = fq(fD, bf)._1
804816 let eU = fq(fE, bf)._1
805817 let fF = fq(ft, bf)
806818 let fG = fF._1
807819 let fr = fF._2
808820 let fH = (fA + eT)
809821 let fI = (fB + eU)
810822 let fJ = bY(D(fI, bC), D(fH, bB))
811823 let fK = H(fJ, b)
812824 let fL = if (fy)
813825 then fA
814826 else fB
815827 let fM = toBigInt(fL)
816828 let fN = toBigInt(valueOrErrorMessage(assetInfo(by), (("asset " + toBase58String(by)) + " doesn't exist")).quantity)
817829 let fO = if ((fN > f))
818830 then true
819831 else ba("initial deposit requires all coins")
820832 if ((fO == fO))
821833 then {
822834 let fP = toBigInt(fG)
823835 let fQ = max([0, toInt(((fN * (sqrtBigInt((d + ((fP * d) / fM)), 18, 18, DOWN) - d)) / d))])
824836 let ev = if (fv)
825837 then nil
826838 else [IntegerEntry(W(), fK), IntegerEntry(X(height, lastBlock.timestamp), fK), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bG(fD, fE, fQ, fK, 0, 0, height, lastBlock.timestamp, 0, 0))]
827839 let fR = bY(D(fB, bC), D(fA, bB))
828840 let fS = H(fR, b)
829841 let fT = {
830842 let fU = if (fy)
831843 then $Tuple2(fD, fA)
832844 else $Tuple2(fE, fB)
833845 let ch = fU._1
834846 let fV = fU._2
835847 let fW = toInt(fraction(fN, toBigInt((ch / 2)), toBigInt(fV)))
836848 fraction((fQ - fW), b, fW)
837849 }
838850 $Tuple5(fQ, ev, fr, fT, fy)
839851 }
840852 else throw("Strict value is not equal to itself.")
841853 }
842854
843855
844856 func fX (fY,fG,fu,ab,ac) = {
845857 let fv = (ac == unit)
846858 let dk = bm()
847859 let dl = parseIntValue(dk[t])
848860 let dm = parseIntValue(dk[u])
849861 let fZ = [if ((fu == by))
850862 then true
851863 else ba("invalid lp asset")]
852864 if ((fZ == fZ))
853865 then {
854866 let ga = if ((fY == bz))
855867 then true
856868 else if ((fY == bA))
857869 then false
858870 else ba("invalid asset")
859871 let gb = if (ga)
860872 then toBigInt(bV(br(bz)))
861873 else toBigInt(bV(br(bA)))
862874 let gc = if (ga)
863875 then dl
864876 else dm
865877 let gd = bV(br(bz))
866878 let ge = bV(br(bA))
867879 let gf = if (ga)
868880 then gd
869881 else ge
870882 let gg = toBigInt(gf)
871883 let fN = toBigInt(valueOrErrorMessage(assetInfo(by), (("asset " + toBase58String(by)) + " doesn't exist")).quantity)
872884 let gh = toBigInt(fG)
873885 let gi = max([0, toInt(((gb * (d - pow((d - ((gh * d) / fN)), 18, h, 0, 18, DOWN))) / d))])
874886 let gj = fq(gi, bh)
875887 let gk = gj._1
876888 let fr = gj._2
877889 let gl = if (ga)
878890 then $Tuple4(gk, 0, (gd - gi), ge)
879891 else $Tuple4(0, gk, gd, (ge - gi))
880892 let gm = gl._1
881893 let gn = gl._2
882894 let go = gl._3
883895 let gp = gl._4
884896 let fJ = bY(D(gp, bC), D(go, bB))
885897 let fK = H(fJ, b)
886898 let ev = if (fv)
887899 then nil
888900 else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bR(gm, gn, fG, fK, height, lastBlock.timestamp)), IntegerEntry(W(), fK), IntegerEntry(X(height, lastBlock.timestamp), fK)]
889901 let fR = bY(D(ge, bC), D(gd, bB))
890902 let fS = H(fR, b)
891903 let fT = {
892904 let gq = (toInt(fraction(gb, gh, fN)) * 2)
893905 fraction((gk - gq), b, gq)
894906 }
895907 $Tuple5(gk, ev, fr, fT, ga)
896908 }
897909 else throw("Strict value is not equal to itself.")
898910 }
899911
900912
901913 func gr () = {
902914 let gs = aS()
903915 let aQ = getString(gs, U())
904916 if ($isInstanceOf(aQ, "String"))
905917 then {
906918 let aV = aQ
907919 fromBase58String(aV)
908920 }
909921 else if ($isInstanceOf(aQ, "Unit"))
910922 then unit
911923 else throw("Match error")
912924 }
913925
914926
915927 func gt (fd) = {
916928 let aQ = gr()
917929 if ($isInstanceOf(aQ, "ByteVector"))
918930 then {
919931 let gu = aQ
920932 (fd.callerPublicKey == gu)
921933 }
922934 else if ($isInstanceOf(aQ, "Unit"))
923935 then (fd.caller == this)
924936 else throw("Match error")
925937 }
926938
927939
928940 func gv (fd) = {
929941 let gw = throw("Permission denied")
930942 let aQ = gr()
931943 if ($isInstanceOf(aQ, "ByteVector"))
932944 then {
933945 let gu = aQ
934946 if ((fd.callerPublicKey == gu))
935947 then true
936948 else gw
937949 }
938950 else if ($isInstanceOf(aQ, "Unit"))
939951 then if ((fd.caller == this))
940952 then true
941953 else gw
942954 else throw("Match error")
943955 }
944956
945957
946958 @Callable(fd)
947959 func rebalance () = (cK(aW(this, ae())) ++ cK(aW(this, af())))
948960
949961
950962
951963 @Callable(fd)
952964 func calculateAmountOutForSwapREADONLY (gx,gy,gz) = {
953965 let gA = if ((gy == false))
954966 then {
955967 let gB = aW(this, af())
956968 let gC = aW(this, ae())
957969 $Tuple2(gB, gC)
958970 }
959971 else {
960972 let gB = aW(this, ae())
961973 let gC = aW(this, af())
962974 $Tuple2(gB, gC)
963975 }
964976 let gB = gA._1
965977 let gC = gA._2
966978 let gD = bV(gC)
967979 let gE = bV(gB)
968980 let gF = fraction(gE, gx, (gD + gx))
969981 let gG = (toBigInt(gD) * toBigInt(gE))
970982 let gH = (((toBigInt(bV(gC)) + toBigInt(gx)) + toBigInt(gz)) * (toBigInt(bV(gB)) - toBigInt(gF)))
971983 let gI = if ((gH >= gG))
972984 then true
973985 else throw("new K is fewer error")
974986 if ((gI == gI))
975987 then $Tuple2(nil, gF)
976988 else throw("Strict value is not equal to itself.")
977989 }
978990
979991
980992
981993 @Callable(fd)
982994 func calculateAmountOutForSwapAndSendTokens (gx,gy,gJ,gK,gz) = {
983995 let gL = {
984996 let bg = invoke(bd, "getSwapContractREADONLY", nil, nil)
985997 if ($isInstanceOf(bg, "String"))
986998 then bg
987999 else throw(($getType(bg) + " couldn't be cast to String"))
9881000 }
9891001 let gM = {
9901002 let bg = invoke(bd, "isPoolSwapDisabledREADONLY", [toString(this)], nil)
9911003 if ($isInstanceOf(bg, "Boolean"))
9921004 then bg
9931005 else throw(($getType(bg) + " couldn't be cast to Boolean"))
9941006 }
9951007 let gN = if (!(bj(fd.caller)))
9961008 then if (if (bk())
9971009 then true
9981010 else (bx == n))
9991011 then true
10001012 else gM
10011013 else false
10021014 let fZ = [if (if (!(gN))
10031015 then true
10041016 else gt(fd))
10051017 then true
10061018 else ba("swap operation is blocked by admin"), if ((value(fd.payments[0]).amount >= gx))
10071019 then true
10081020 else ba("Wrong amount"), if ((fd.caller == addressFromStringValue(gL)))
10091021 then true
10101022 else ba("Permission denied")]
10111023 if ((fZ == fZ))
10121024 then {
10131025 let fe = value(fd.payments[0])
10141026 let gC = br(fe.assetId)
10151027 let gB = if ((gy == false))
10161028 then aW(this, af())
10171029 else aW(this, ae())
10181030 let gD = ((bV(gC) - value(fd.payments[0]).amount) - gz)
10191031 let gE = bV(gB)
10201032 let gF = fraction(gE, gx, (gD + gx))
10211033 let gG = (toBigInt(gD) * toBigInt(gE))
10221034 let gH = ((toBigInt(bV(gC)) + toBigInt(gz)) * (toBigInt(bV(gB)) - toBigInt(gF)))
10231035 let gI = if ((gH >= gG))
10241036 then true
10251037 else throw("new K is fewer error")
10261038 if ((gI == gI))
10271039 then {
10281040 let gO = if ((gF >= gJ))
10291041 then true
10301042 else throw("Exchange result is fewer coins than expected")
10311043 if ((gO == gO))
10321044 then {
10331045 let eL = if (gy)
10341046 then -(gF)
10351047 else gz
10361048 let eM = if (gy)
10371049 then gz
10381050 else -(gF)
10391051 let gP = eK(eL, eM, 0)._1
10401052 if ((gP == gP))
10411053 then {
10421054 let gQ = cK(gC)
10431055 if ((gQ == gQ))
10441056 then {
10451057 let gR = cR(gB, gF)
10461058 if ((gR == gR))
10471059 then $Tuple2(((gR ++ gQ) ++ [ScriptTransfer(addressFromStringValue(gK), gF, bp(gB))]), gF)
10481060 else throw("Strict value is not equal to itself.")
10491061 }
10501062 else throw("Strict value is not equal to itself.")
10511063 }
10521064 else throw("Strict value is not equal to itself.")
10531065 }
10541066 else throw("Strict value is not equal to itself.")
10551067 }
10561068 else throw("Strict value is not equal to itself.")
10571069 }
10581070 else throw("Strict value is not equal to itself.")
10591071 }
10601072
10611073
10621074
10631075 @Callable(fd)
10641076 func put (dQ,gS) = if ((0 > dQ))
10651077 then throw("Invalid slippageTolerance passed")
10661078 else {
10671079 let fk = fh(fd, dQ, true)
10681080 let es = fk._2
10691081 let dx = fk._7
10701082 let dO = fk._9
10711083 let et = fk._10
10721084 let eu = fk._11
10731085 let gT = fk._12
10741086 let gU = fk._13
10751087 let fi = toBigInt(value(fd.payments[0]).amount)
10761088 let fj = toBigInt(value(fd.payments[1]).amount)
10771089 let eJ = eC(fi, fj, toBigInt(0))
10781090 if ((eJ == eJ))
10791091 then {
10801092 let fn = invoke(bd, "emit", [es], nil)
10811093 if ((fn == fn))
10821094 then {
10831095 let fo = {
10841096 let aQ = fn
10851097 if ($isInstanceOf(aQ, "Address"))
10861098 then {
10871099 let fp = aQ
10881100 invoke(fp, "emit", [es], nil)
10891101 }
10901102 else unit
10911103 }
10921104 if ((fo == fo))
10931105 then {
10941106 let gV = if ((et > 0))
10951107 then invoke(bF, "put", nil, [AttachedPayment(gT, et)])
10961108 else nil
10971109 if ((gV == gV))
10981110 then {
10991111 let gW = if ((eu > 0))
11001112 then invoke(bF, "put", nil, [AttachedPayment(gU, eu)])
11011113 else nil
11021114 if ((gW == gW))
11031115 then {
11041116 let gX = if (gS)
11051117 then {
11061118 let gY = invoke(bE, "stake", nil, [AttachedPayment(dx, es)])
11071119 if ((gY == gY))
11081120 then nil
11091121 else throw("Strict value is not equal to itself.")
11101122 }
11111123 else [ScriptTransfer(fd.caller, es, dx)]
11121124 let gZ = eK(0, 0, 0)
11131125 if ((gZ == gZ))
11141126 then {
11151127 let eB = gZ._2
11161128 let gP = gZ._1
11171129 let ha = eP(eJ, eB)
11181130 if ((ha == ha))
11191131 then {
11201132 let hb = invoke(this, "rebalance", nil, nil)
11211133 if ((hb == hb))
11221134 then ((dO ++ gX) ++ gP)
11231135 else throw("Strict value is not equal to itself.")
11241136 }
11251137 else throw("Strict value is not equal to itself.")
11261138 }
11271139 else throw("Strict value is not equal to itself.")
11281140 }
11291141 else throw("Strict value is not equal to itself.")
11301142 }
11311143 else throw("Strict value is not equal to itself.")
11321144 }
11331145 else throw("Strict value is not equal to itself.")
11341146 }
11351147 else throw("Strict value is not equal to itself.")
11361148 }
11371149 else throw("Strict value is not equal to itself.")
11381150 }
11391151
11401152
11411153
11421154 @Callable(fd)
11431155 func putForFree (hc) = if ((0 > hc))
11441156 then throw("Invalid value passed")
11451157 else {
11461158 let fk = fh(fd, hc, false)
11471159 let dO = fk._9
11481160 let fi = toBigInt(value(fd.payments[0]).amount)
11491161 let fj = toBigInt(value(fd.payments[1]).amount)
11501162 let eJ = eC(fi, fj, toBigInt(0))
11511163 if ((eJ == eJ))
11521164 then {
11531165 let hd = eK(0, 0, 0)
11541166 let gP = hd._1
11551167 let eB = hd._2
11561168 let ha = eP(eJ, eB)
11571169 if ((ha == ha))
11581170 then (dO ++ gP)
11591171 else throw("Strict value is not equal to itself.")
11601172 }
11611173 else throw("Strict value is not equal to itself.")
11621174 }
11631175
11641176
11651177
11661178 @Callable(fd)
11671179 func putOneTkn (he,hf) = {
11681180 let hg = {
11691181 let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11701182 if ($isInstanceOf(bg, "Boolean"))
11711183 then bg
11721184 else throw(($getType(bg) + " couldn't be cast to Boolean"))
11731185 }
11741186 let fl = if (!(bj(fd.caller)))
11751187 then if (if (if (bk())
11761188 then true
11771189 else (bx == l))
11781190 then true
11791191 else (bx == n))
11801192 then true
11811193 else hg
11821194 else false
11831195 let fZ = [if (if (!(fl))
11841196 then true
11851197 else gt(fd))
11861198 then true
11871199 else ba("put operation is blocked by admin"), if ((size(fd.payments) == 1))
11881200 then true
11891201 else ba("exactly 1 payment are expected")]
11901202 if ((fZ == fZ))
11911203 then {
11921204 let hh = fd.payments[0]
11931205 let fu = hh.assetId
11941206 let ft = hh.amount
11951207 let eJ = if ((fu == bz))
11961208 then eC(toBigInt(ft), toBigInt(0), toBigInt(0))
11971209 else if ((fu == bA))
11981210 then eC(toBigInt(0), toBigInt(ft), toBigInt(0))
11991211 else ba("payment asset is not supported")
12001212 if ((eJ == eJ))
12011213 then {
12021214 let ab = fd.caller
12031215 let ac = fd.transactionId
12041216 let hi = fs(ft, fu, ab, ac)
12051217 if ((hi == hi))
12061218 then {
12071219 let fy = hi._5
12081220 let hj = hi._4
12091221 let fr = hi._3
12101222 let ev = hi._2
12111223 let hk = hi._1
12121224 let hl = if (if ((he > 0))
12131225 then (he > hk)
12141226 else false)
12151227 then ba(makeString(["amount to receive is less than ", toString(he)], ""))
12161228 else hk
12171229 let fn = fm(hl)
12181230 if ((fn == fn))
12191231 then {
12201232 let gX = if (hf)
12211233 then {
12221234 let hm = invoke(bE, "stake", nil, [AttachedPayment(by, hl)])
12231235 if ((hm == hm))
12241236 then nil
12251237 else throw("Strict value is not equal to itself.")
12261238 }
12271239 else [ScriptTransfer(fd.caller, hl, by)]
12281240 let hn = if ((fr > 0))
12291241 then [ScriptTransfer(be, fr, fu)]
12301242 else nil
12311243 let ho = if ((this == be))
12321244 then $Tuple2(0, 0)
12331245 else if (fy)
12341246 then $Tuple2(-(fr), 0)
12351247 else $Tuple2(0, -(fr))
12361248 let eL = ho._1
12371249 let eM = ho._2
12381250 let hp = eK(eL, eM, 0)
12391251 let gP = hp._1
12401252 let eB = hp._2
12411253 let eW = value(getString(aj))
12421254 let ha = eP(eJ, eB)
12431255 if ((ha == ha))
12441256 then {
12451257 let hb = invoke(this, "rebalance", nil, nil)
12461258 if ((hb == hb))
12471259 then $Tuple2((((ev ++ gX) ++ hn) ++ gP), hl)
12481260 else throw("Strict value is not equal to itself.")
12491261 }
12501262 else throw("Strict value is not equal to itself.")
12511263 }
12521264 else throw("Strict value is not equal to itself.")
12531265 }
12541266 else throw("Strict value is not equal to itself.")
12551267 }
12561268 else throw("Strict value is not equal to itself.")
12571269 }
12581270 else throw("Strict value is not equal to itself.")
12591271 }
12601272
12611273
12621274
12631275 @Callable(fd)
12641276 func putOneTknREADONLY (fu,ft) = {
12651277 let hq = fs(ft, bp(fu), unit, unit)
12661278 let hk = hq._1
12671279 let ev = hq._2
12681280 let fr = hq._3
12691281 let hj = hq._4
12701282 let fy = hq._5
12711283 $Tuple2(nil, $Tuple3(hk, fr, hj))
12721284 }
12731285
12741286
12751287
12761288 @Callable(fd)
12771289 func getOneTkn (hr,he) = {
12781290 let hg = {
12791291 let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12801292 if ($isInstanceOf(bg, "Boolean"))
12811293 then bg
12821294 else throw(($getType(bg) + " couldn't be cast to Boolean"))
12831295 }
12841296 let fg = if (!(bj(fd.caller)))
12851297 then if (if (bk())
12861298 then true
12871299 else (bx == n))
12881300 then true
12891301 else hg
12901302 else false
12911303 let fZ = [if (if (!(fg))
12921304 then true
12931305 else gt(fd))
12941306 then true
12951307 else ba("get operation is blocked by admin"), if ((size(fd.payments) == 1))
12961308 then true
12971309 else ba("exactly 1 payment are expected")]
12981310 if ((fZ == fZ))
12991311 then {
13001312 let fY = bp(hr)
13011313 let hh = fd.payments[0]
13021314 let fu = hh.assetId
13031315 let fG = hh.amount
13041316 let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
13051317 if ((eJ == eJ))
13061318 then {
13071319 let ab = fd.caller
13081320 let ac = fd.transactionId
13091321 let hs = fX(fY, fG, fu, ab, ac)
13101322 if ((hs == hs))
13111323 then {
13121324 let ga = hs._5
13131325 let hj = hs._4
13141326 let fr = hs._3
13151327 let ev = hs._2
13161328 let ht = hs._1
13171329 let ch = if (if ((he > 0))
13181330 then (he > ht)
13191331 else false)
13201332 then ba(makeString(["amount to receive is less than ", toString(he)], ""))
13211333 else ht
13221334 let hu = invoke(bd, "burn", [fG], [AttachedPayment(fu, fG)])
13231335 if ((hu == hu))
13241336 then {
13251337 let gR = cR(hr, (ch + max([0, fr])))
13261338 let hv = [ScriptTransfer(ab, ch, fY)]
13271339 let hn = if ((fr > 0))
13281340 then [ScriptTransfer(be, fr, fY)]
13291341 else nil
13301342 let hw = {
13311343 let hx = if ((this == be))
13321344 then 0
13331345 else fr
13341346 if (ga)
13351347 then $Tuple2(-((ch + hx)), 0)
13361348 else $Tuple2(0, -((ch + hx)))
13371349 }
13381350 let eL = hw._1
13391351 let eM = hw._2
13401352 let hy = eK(eL, eM, 0)
13411353 let gP = hy._1
13421354 let eB = hy._2
13431355 let ha = eP(eJ, eB)
13441356 if ((ha == ha))
13451357 then $Tuple2(((((ev ++ gR) ++ hv) ++ hn) ++ gP), ch)
13461358 else throw("Strict value is not equal to itself.")
13471359 }
13481360 else throw("Strict value is not equal to itself.")
13491361 }
13501362 else throw("Strict value is not equal to itself.")
13511363 }
13521364 else throw("Strict value is not equal to itself.")
13531365 }
13541366 else throw("Strict value is not equal to itself.")
13551367 }
13561368
13571369
13581370
13591371 @Callable(fd)
13601372 func getOneTknREADONLY (fY,fG) = {
13611373 let hz = fX(bp(fY), fG, by, unit, unit)
13621374 let ht = hz._1
13631375 let ev = hz._2
13641376 let fr = hz._3
13651377 let hj = hz._4
13661378 let ga = hz._5
13671379 $Tuple2(nil, $Tuple3(ht, fr, hj))
13681380 }
13691381
13701382
13711383
13721384 @Callable(fd)
13731385 func unstakeAndGetOneTkn (hA,hr,he) = {
13741386 let hg = {
13751387 let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13761388 if ($isInstanceOf(bg, "Boolean"))
13771389 then bg
13781390 else throw(($getType(bg) + " couldn't be cast to Boolean"))
13791391 }
13801392 let fg = if (!(bj(fd.caller)))
13811393 then if (if (bk())
13821394 then true
13831395 else (bx == n))
13841396 then true
13851397 else hg
13861398 else false
13871399 let fZ = [if (if (!(fg))
13881400 then true
13891401 else gt(fd))
13901402 then true
13911403 else ba("get operation is blocked by admin"), if ((size(fd.payments) == 0))
13921404 then true
13931405 else ba("no payments are expected")]
13941406 if ((fZ == fZ))
13951407 then {
13961408 let fY = bp(hr)
13971409 let ab = fd.caller
13981410 let ac = fd.transactionId
13991411 let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
14001412 if ((eJ == eJ))
14011413 then {
14021414 let hB = invoke(bE, "unstake", [toBase58String(by), hA], nil)
14031415 if ((hB == hB))
14041416 then {
14051417 let hC = fX(fY, hA, by, ab, ac)
14061418 if ((hC == hC))
14071419 then {
14081420 let ga = hC._5
14091421 let hj = hC._4
14101422 let fr = hC._3
14111423 let ev = hC._2
14121424 let ht = hC._1
14131425 let ch = if (if ((he > 0))
14141426 then (he > ht)
14151427 else false)
14161428 then ba(makeString(["amount to receive is less than ", toString(he)], ""))
14171429 else ht
14181430 let hu = invoke(bd, "burn", [hA], [AttachedPayment(by, hA)])
14191431 if ((hu == hu))
14201432 then {
14211433 let gR = cR(hr, (ch + max([0, fr])))
14221434 let hv = [ScriptTransfer(fd.caller, ch, fY)]
14231435 let hn = if ((fr > 0))
14241436 then [ScriptTransfer(be, fr, fY)]
14251437 else nil
14261438 let hD = {
14271439 let hx = if ((this == be))
14281440 then 0
14291441 else fr
14301442 if (ga)
14311443 then $Tuple2(-((ch + hx)), 0)
14321444 else $Tuple2(0, -((ch + hx)))
14331445 }
14341446 let eL = hD._1
14351447 let eM = hD._2
14361448 let hE = eK(eL, eM, 0)
14371449 let gP = hE._1
14381450 let eB = hE._2
14391451 let ha = eP(eJ, eB)
14401452 if ((ha == ha))
14411453 then $Tuple2(((((ev ++ gR) ++ hv) ++ hn) ++ gP), ch)
14421454 else throw("Strict value is not equal to itself.")
14431455 }
14441456 else throw("Strict value is not equal to itself.")
14451457 }
14461458 else throw("Strict value is not equal to itself.")
14471459 }
14481460 else throw("Strict value is not equal to itself.")
14491461 }
14501462 else throw("Strict value is not equal to itself.")
14511463 }
14521464 else throw("Strict value is not equal to itself.")
14531465 }
14541466
14551467
14561468
14571469 @Callable(fd)
14581470 func get () = {
14591471 let eg = fc(fd)
14601472 let dM = eg._1
14611473 let dN = eg._2
14621474 let ff = eg._3
14631475 let dv = eg._4
14641476 let dO = eg._5
14651477 let gR = cW(dM, dN)
14661478 let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
14671479 if ((eJ == eJ))
14681480 then {
14691481 let hF = invoke(bd, "burn", [ff], [AttachedPayment(dv, ff)])
14701482 if ((hF == hF))
14711483 then {
14721484 let hG = eK(-(dM), -(dN), 0)
14731485 let gP = hG._1
14741486 let eB = hG._2
14751487 let ha = eP(eJ, eB)
14761488 if ((ha == ha))
14771489 then ((gR ++ dO) ++ gP)
14781490 else throw("Strict value is not equal to itself.")
14791491 }
14801492 else throw("Strict value is not equal to itself.")
14811493 }
14821494 else throw("Strict value is not equal to itself.")
14831495 }
14841496
14851497
14861498
14871499 @Callable(fd)
14881500 func getNoLess (hH,hI) = {
14891501 let eg = fc(fd)
14901502 let dM = eg._1
14911503 let dN = eg._2
14921504 let ff = eg._3
14931505 let dv = eg._4
14941506 let dO = eg._5
14951507 if ((hH > dM))
14961508 then throw(((("noLessThenAmtAsset failed: " + toString(dM)) + " < ") + toString(hH)))
14971509 else if ((hI > dN))
14981510 then throw(((("noLessThenPriceAsset failed: " + toString(dN)) + " < ") + toString(hI)))
14991511 else {
15001512 let gR = cW(dM, dN)
15011513 let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
15021514 if ((eJ == eJ))
15031515 then {
15041516 let hF = invoke(bd, "burn", [ff], [AttachedPayment(dv, ff)])
15051517 if ((hF == hF))
15061518 then {
15071519 let hJ = eK(-(dM), -(dN), 0)
15081520 let gP = hJ._1
15091521 let eB = hJ._2
15101522 let ha = eP(eJ, eB)
15111523 if ((ha == ha))
15121524 then ((gR ++ dO) ++ gP)
15131525 else throw("Strict value is not equal to itself.")
15141526 }
15151527 else throw("Strict value is not equal to itself.")
15161528 }
15171529 else throw("Strict value is not equal to itself.")
15181530 }
15191531 }
15201532
15211533
15221534
15231535 @Callable(fd)
15241536 func unstakeAndGet (ch) = {
15251537 let hK = if ((size(fd.payments) != 0))
15261538 then throw("No payments are expected")
15271539 else true
15281540 if ((hK == hK))
15291541 then {
15301542 let dk = bm()
15311543 let dx = fromBase58String(dk[q])
15321544 let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
15331545 if ((eJ == eJ))
15341546 then {
15351547 let hB = invoke(bE, "unstake", [toBase58String(dx), ch], nil)
15361548 if ((hB == hB))
15371549 then {
15381550 let eg = dt(toBase58String(fd.transactionId), toBase58String(dx), ch, fd.caller)
15391551 let dM = eg._1
15401552 let dN = eg._2
15411553 let dA = parseIntValue(eg._9)
15421554 let dO = eg._10
15431555 let gR = cW(dM, dN)
15441556 let fg = if (!(bj(fd.caller)))
15451557 then if (bk())
15461558 then true
15471559 else (bx == n)
15481560 else false
15491561 let hL = if (fg)
15501562 then throw(("Get operation is blocked by admin. Status = " + toString(dA)))
15511563 else true
15521564 if ((hL == hL))
15531565 then {
15541566 let hF = invoke(bd, "burn", [ch], [AttachedPayment(dx, ch)])
15551567 if ((hF == hF))
15561568 then {
15571569 let hM = eK(-(dM), -(dN), 0)
15581570 let gP = hM._1
15591571 let eB = hM._2
15601572 let ha = eP(eJ, eB)
15611573 if ((ha == ha))
15621574 then ((gR ++ dO) ++ gP)
15631575 else throw("Strict value is not equal to itself.")
15641576 }
15651577 else throw("Strict value is not equal to itself.")
15661578 }
15671579 else throw("Strict value is not equal to itself.")
15681580 }
15691581 else throw("Strict value is not equal to itself.")
15701582 }
15711583 else throw("Strict value is not equal to itself.")
15721584 }
15731585 else throw("Strict value is not equal to itself.")
15741586 }
15751587
15761588
15771589
15781590 @Callable(fd)
15791591 func unstakeAndGetNoLess (hA,hN,hI) = {
15801592 let fg = if (!(bj(fd.caller)))
15811593 then if (bk())
15821594 then true
15831595 else (bx == n)
15841596 else false
15851597 let fZ = [if (!(fg))
15861598 then true
15871599 else throw("get operation is blocked by admin"), if ((size(fd.payments) == 0))
15881600 then true
15891601 else throw("no payments are expected")]
15901602 if ((fZ == fZ))
15911603 then {
15921604 let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
15931605 if ((eJ == eJ))
15941606 then {
15951607 let hB = invoke(bE, "unstake", [toBase58String(by), hA], nil)
15961608 if ((hB == hB))
15971609 then {
15981610 let eg = dt(toBase58String(fd.transactionId), toBase58String(by), hA, fd.caller)
15991611 let dM = eg._1
16001612 let dN = eg._2
16011613 let dO = eg._10
16021614 let gR = cW(dM, dN)
16031615 let hO = [if ((dM >= hN))
16041616 then true
16051617 else throw(makeString(["amount asset amount to receive is less than ", toString(hN)], "")), if ((dN >= hI))
16061618 then true
16071619 else throw(makeString(["price asset amount to receive is less than ", toString(hI)], ""))]
16081620 if ((hO == hO))
16091621 then {
16101622 let hF = invoke(bd, "burn", [hA], [AttachedPayment(by, hA)])
16111623 if ((hF == hF))
16121624 then {
16131625 let hP = eK(-(dM), -(dN), 0)
16141626 let gP = hP._1
16151627 let eB = hP._2
16161628 let ha = eP(eJ, eB)
16171629 if ((ha == ha))
16181630 then ((gR ++ dO) ++ gP)
16191631 else throw("Strict value is not equal to itself.")
16201632 }
16211633 else throw("Strict value is not equal to itself.")
16221634 }
16231635 else throw("Strict value is not equal to itself.")
16241636 }
16251637 else throw("Strict value is not equal to itself.")
16261638 }
16271639 else throw("Strict value is not equal to itself.")
16281640 }
16291641 else throw("Strict value is not equal to itself.")
16301642 }
16311643
16321644
16331645
16341646 @Callable(fd)
16351647 func activate (hQ,hR) = if ((toString(fd.caller) != toString(bd)))
16361648 then throw("permissions denied")
16371649 else $Tuple2([StringEntry(ae(), hQ), StringEntry(af(), hR)], "success")
16381650
16391651
16401652
16411653 @Callable(fd)
16421654 func refreshKLp () = {
16431655 let hS = valueOrElse(getInteger(ak), 0)
16441656 let hT = if (((height - hS) >= an))
16451657 then unit
16461658 else ba(makeString([toString(an), " blocks have not passed since the previous call"], ""))
16471659 if ((hT == hT))
16481660 then {
16491661 let eW = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), bc("invalid kLp"))
16501662 let hU = eK(0, 0, 0)
16511663 let hV = hU._1
16521664 let eB = hU._2
16531665 let eN = if ((eW != eB))
16541666 then hV
16551667 else ba("nothing to refresh")
16561668 $Tuple2(eN, toString(eB))
16571669 }
16581670 else throw("Strict value is not equal to itself.")
16591671 }
16601672
16611673
16621674
16631675 @Callable(fd)
16641676 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bm())
16651677
16661678
16671679
16681680 @Callable(fd)
16691681 func getAccBalanceWrapperREADONLY (ap) = $Tuple2(nil, bV(ap))
16701682
16711683
16721684
16731685 @Callable(fd)
16741686 func calcPricesWrapperREADONLY (de,df,dj) = {
16751687 let ds = di(de, df, dj)
16761688 $Tuple2(nil, [toString(ds[0]), toString(ds[1]), toString(ds[2])])
16771689 }
16781690
16791691
16801692
16811693 @Callable(fd)
16821694 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
16831695
16841696
16851697
16861698 @Callable(fd)
16871699 func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
16881700
16891701
16901702
16911703 @Callable(fd)
16921704 func calcPriceBigIntWrapperREADONLY (bZ,ca) = $Tuple2(nil, toString(bY(parseBigIntValue(bZ), parseBigIntValue(ca))))
16931705
16941706
16951707
16961708 @Callable(fd)
16971709 func estimatePutOperationWrapperREADONLY (du,dQ,dR,dS,dT,dU,ab,dV,dW) = $Tuple2(nil, dP(du, dQ, dR, dS, dT, dU, ab, dV, dW))
16981710
16991711
17001712
17011713 @Callable(fd)
17021714 func estimateGetOperationWrapperREADONLY (du,dv,dw,ab) = {
17031715 let eg = dt(du, dv, dw, addressFromStringValue(ab))
17041716 $Tuple2(nil, $Tuple10(eg._1, eg._2, eg._3, eg._4, eg._5, eg._6, eg._7, toString(eg._8), eg._9, eg._10))
17051717 }
17061718
17071719
17081720
17091721 @Callable(fd)
17101722 func statsREADONLY () = {
17111723 let dk = bm()
17121724 let dx = fromBase58String(dk[q])
17131725 let hW = dk[r]
17141726 let hX = dk[s]
17151727 let dZ = dk[v]
17161728 let ea = dk[w]
17171729 let dl = parseIntValue(dk[t])
17181730 let dm = parseIntValue(dk[u])
17191731 let hY = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
17201732 let hZ = bV(hW)
17211733 let ia = bV(hX)
17221734 let ib = if ((hY == 0))
17231735 then [e, e, e]
17241736 else di(hZ, ia, hY)
17251737 let dH = 0
17261738 let ic = H(ib[1], b)
17271739 let id = H(ib[2], b)
17281740 let ie = value(getInteger(bd, aD(toString(this))))
17291741 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hZ), toString(ia), toString(hY), toString(dH), toString(ic), toString(id), toString(ie)], j))
17301742 }
17311743
17321744
17331745
17341746 @Callable(fd)
17351747 func evaluatePutByAmountAssetREADONLY (dR) = {
17361748 let dk = bm()
17371749 let dx = fromBase58String(dk[q])
17381750 let dX = dk[r]
17391751 let dy = fromBase58String(dX)
17401752 let dY = dk[s]
17411753 let dz = fromBase58String(dY)
17421754 let dl = parseIntValue(dk[t])
17431755 let dm = parseIntValue(dk[u])
17441756 let dA = dk[p]
17451757 let hY = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
17461758 let hZ = bV(dX)
17471759 let ia = bV(dY)
17481760 let dg = D(hZ, dl)
17491761 let dh = D(ia, dm)
17501762 let dG = if ((hY == 0))
17511763 then e
17521764 else bY(dh, dg)
17531765 let ed = D(dR, dl)
17541766 let ee = fraction(ed, dG, d)
17551767 let dT = H(ee, dm)
17561768 let fk = dP("", 500000, dR, dy, dT, dz, "", true, false)
17571769 let eo = fk._1
17581770 let if = fk._3
17591771 let dC = fk._4
17601772 let dE = fk._5
17611773 let dB = fk._6
17621774 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(eo), toString(H(dG, b)), toString(dC), toString(dE), toString(dB), dA, toString(dR), toString(dT)], j))
17631775 }
17641776
17651777
17661778
17671779 @Callable(fd)
17681780 func evaluatePutByPriceAssetREADONLY (dT) = {
17691781 let dk = bm()
17701782 let dx = fromBase58String(dk[q])
17711783 let dX = dk[r]
17721784 let dy = fromBase58String(dX)
17731785 let dY = dk[s]
17741786 let dz = fromBase58String(dY)
17751787 let dl = parseIntValue(dk[t])
17761788 let dm = parseIntValue(dk[u])
17771789 let dA = dk[p]
17781790 let hY = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
17791791 let ig = bV(dX)
17801792 let ih = bV(dY)
17811793 let ii = D(ig, dl)
17821794 let ij = D(ih, dm)
17831795 let dG = if ((hY == 0))
17841796 then e
17851797 else bY(ij, ii)
17861798 let ee = D(dT, dm)
17871799 let ed = fraction(ee, d, dG)
17881800 let dR = H(ed, dl)
17891801 let fk = dP("", 500000, dR, dy, dT, dz, "", true, false)
17901802 let eo = fk._1
17911803 let if = fk._3
17921804 let dC = fk._4
17931805 let dE = fk._5
17941806 let dB = fk._6
17951807 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(eo), toString(H(dG, b)), toString(dC), toString(dE), toString(dB), dA, toString(dR), toString(dT)], j))
17961808 }
17971809
17981810
17991811
18001812 @Callable(fd)
18011813 func evaluateGetREADONLY (ik,il) = {
18021814 let eg = dt("", ik, il, this)
18031815 let dM = eg._1
18041816 let dN = eg._2
18051817 let dC = eg._5
18061818 let dE = eg._6
18071819 let dB = eg._7
18081820 let dH = eg._8
18091821 let dA = parseIntValue(eg._9)
18101822 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dM), toString(dN), toString(dC), toString(dE), toString(dB), toString(dH), toString(dA)], j))
18111823 }
18121824
18131825
18141826 @Verifier(im)
18151827 func in () = {
18161828 let io = {
18171829 let aQ = gr()
18181830 if ($isInstanceOf(aQ, "ByteVector"))
18191831 then {
18201832 let gu = aQ
18211833 gu
18221834 }
18231835 else if ($isInstanceOf(aQ, "Unit"))
18241836 then im.senderPublicKey
18251837 else throw("Match error")
18261838 }
18271839 let aQ = im
18281840 if ($isInstanceOf(aQ, "Order"))
18291841 then {
18301842 let eS = aQ
18311843 let ip = bl()
18321844 let iq = if (eO())
18331845 then $Tuple2(true, "")
18341846 else eR(eS)
18351847 let aK = iq._1
18361848 let aL = iq._2
18371849 let aM = sigVerify(eS.bodyBytes, eS.proofs[0], eS.senderPublicKey)
18381850 let aN = sigVerify(eS.bodyBytes, eS.proofs[1], ip)
18391851 if (if (if (aK)
18401852 then aM
18411853 else false)
18421854 then aN
18431855 else false)
18441856 then true
18451857 else aJ(aK, aL, aM, aN)
18461858 }
18471859 else if ($isInstanceOf(aQ, "SetScriptTransaction"))
18481860 then {
18491861 let aV = aQ
18501862 if (sigVerify(im.bodyBytes, im.proofs[0], io))
18511863 then true
18521864 else {
18531865 let ir = blake2b256(value(aV.script))
18541866 let is = fromBase64String(value(getString(bd, aF())))
18551867 let it = scriptHash(this)
18561868 if ((is == ir))
18571869 then (it != ir)
18581870 else false
18591871 }
18601872 }
18611873 else sigVerify(im.bodyBytes, im.proofs[0], io)
18621874 }
18631875

github/deemru/w8io/873ac7e 
155.29 ms