tx · 5SupkrH4cL1hRuhNFznhmidJcGG6P7SF8bbKD1PqBVLe

3MyVvNfXht9piazyf1e5BVFsqv1R7z5cWJL:  -0.02400000 Waves

2022.06.24 15:34 [2110495] smart account 3MyVvNfXht9piazyf1e5BVFsqv1R7z5cWJL > SELF 0.00000000 Waves

{ "type": 13, "id": "5SupkrH4cL1hRuhNFznhmidJcGG6P7SF8bbKD1PqBVLe", "fee": 2400000, "feeAssetId": null, "timestamp": 1656074148309, "version": 2, "chainId": 84, "sender": "3MyVvNfXht9piazyf1e5BVFsqv1R7z5cWJL", "senderPublicKey": "DnPyGWCgpQChvoQrnXQRcC9FtN32mPGrcog2wcKHdkVn", "proofs": [ "46AK11Eq4vhvXxRUDH54ngzkAV3Mk36g83fE8benE4LhJVwPnRRjcPr5vrT8crtBA9V2AYqML9AFeCHGadtUP5eG" ], "script": "base64:BgJbCAISAwoBCBIAEgQKAggBEgcKBQgICAgBEgQKAggIEgUKAwgIARIECgIICBIDCgEBEgMKAQESBAoCCAgSAwoBCBIAEgMKAQESABIECgIICBIECgIICBIECgIICDEACXNlcGFyYXRvcgICX18ADnBvb2xXZWlnaHRNdWx0AIDC1y8AD21heERlcHRoRGVmYXVsdAAKABZmaW5hbGl6YXRpb25TdGFnZVRvdGFsAAAAF2ZpbmFsaXphdGlvblN0YWdlU2hhcmVzAAEADmtleUVwb2NoTGVuZ3RoCQC5CQIJAMwIAgICJXMJAMwIAgILZXBvY2hMZW5ndGgFA25pbAUJc2VwYXJhdG9yAA9rZXlDdXJyZW50RXBvY2gJALkJAgkAzAgCAgIlcwkAzAgCAgxjdXJyZW50RXBvY2gFA25pbAUJc2VwYXJhdG9yAAtrZXlNYXhEZXB0aAkAuQkCCQDMCAICAiVzCQDMCAICCG1heERlcHRoBQNuaWwFCXNlcGFyYXRvcgAia2V5Vm90aW5nRW1pc3Npb25DYW5kaWRhdGVDb250cmFjdAkAuQkCCQDMCAICAiVzCQDMCAICH3ZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QFA25pbAUJc2VwYXJhdG9yABJrZXlGYWN0b3J5Q29udHJhY3QJALkJAgkAzAgCAgIlcwkAzAgCAg9mYWN0b3J5Q29udHJhY3QFA25pbAUJc2VwYXJhdG9yABNrZXlCb29zdGluZ0NvbnRyYWN0CQC5CQIJAMwIAgICJXMJAMwIAgIQYm9vc3RpbmdDb250cmFjdAUDbmlsBQlzZXBhcmF0b3IAEmtleVN0YWtpbmdDb250cmFjdAkAuQkCCQDMCAICAiVzCQDMCAICD3N0YWtpbmdDb250cmFjdAUDbmlsBQlzZXBhcmF0b3IAFGtleUZpbmFsaXphdGlvblN0YWdlCQC5CQIJAMwIAgICJXMJAMwIAgIRZmluYWxpemF0aW9uU3RhZ2UFA25pbAUJc2VwYXJhdG9yAAtrZXlOZXh0UG9vbAkAuQkCCQDMCAICAiVzCQDMCAICCG5leHRQb29sBQNuaWwFCXNlcGFyYXRvcgALa2V5TmV4dFVzZXIJALkJAgkAzAgCAgIlcwkAzAgCAghuZXh0VXNlcgUDbmlsBQlzZXBhcmF0b3IADmtleVN0YXJ0SGVpZ2h0CQC5CQIJAMwIAgICJXMJAMwIAgILc3RhcnRIZWlnaHQFA25pbAUJc2VwYXJhdG9yABFrZXlDdXJyZW50RXBvY2hVaQkAuQkCCQDMCAICAiVzCQDMCAICDmN1cnJlbnRFcG9jaFVpBQNuaWwFCXNlcGFyYXRvcgAQa2V5U3RhcnRIZWlnaHRVaQkAuQkCCQDMCAICAiVzCQDMCAICDXN0YXJ0SGVpZ2h0VWkFA25pbAUJc2VwYXJhdG9yARVrZXlTdGFydEhlaWdodEJ5RXBvY2gBBWVwb2NoCQC5CQIJAMwIAgIEJXMlZAkAzAgCAgtzdGFydEhlaWdodAkAzAgCCQCkAwEFBWVwb2NoBQNuaWwFCXNlcGFyYXRvcgEMa2V5RmluYWxpemVkAQVlcG9jaAkAuQkCCQDMCAICBCVzJWQJAMwIAgIJZmluYWxpemVkCQDMCAIJAKQDAQUFZXBvY2gFA25pbAUJc2VwYXJhdG9yAQlrZXlJbkxpc3QBBHBvb2wECyR0MDE0MzYxNDc2BQRwb29sBA1hbW91bnRBc3NldElkCAULJHQwMTQzNjE0NzYCXzEEDHByaWNlQXNzZXRJZAgFCyR0MDE0MzYxNDc2Al8yCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICBmluTGlzdAkAzAgCBQ1hbW91bnRBc3NldElkCQDMCAIFDHByaWNlQXNzZXRJZAUDbmlsBQlzZXBhcmF0b3IBB2tleVVzZWQCB2FkZHJlc3MFZXBvY2gJALkJAgkAzAgCAgYlcyVzJWQJAMwIAgIEdXNlZAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgkApAMBBQVlcG9jaAUDbmlsBQlzZXBhcmF0b3IBB2tleVZvdGUDBHBvb2wHYWRkcmVzcwVlcG9jaAQLJHQwMTc1MDE3OTAFBHBvb2wEDWFtb3VudEFzc2V0SWQIBQskdDAxNzUwMTc5MAJfMQQMcHJpY2VBc3NldElkCAULJHQwMTc1MDE3OTACXzIJALkJAgkAzAgCAgolcyVzJXMlcyVkCQDMCAICBHZvdGUJAMwIAgUNYW1vdW50QXNzZXRJZAkAzAgCBQxwcmljZUFzc2V0SWQJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAIJAKQDAQUFZXBvY2gFA25pbAUJc2VwYXJhdG9yAQ9rZXlWb3RpbmdSZXN1bHQCBHBvb2wFZXBvY2gECyR0MDE5NzIyMDEyBQRwb29sBA1hbW91bnRBc3NldElkCAULJHQwMTk3MjIwMTICXzEEDHByaWNlQXNzZXRJZAgFCyR0MDE5NzIyMDEyAl8yCQC5CQIJAMwIAgIIJXMlcyVzJWQJAMwIAgIMdm90aW5nUmVzdWx0CQDMCAIFDWFtb3VudEFzc2V0SWQJAMwIAgUMcHJpY2VBc3NldElkCQDMCAIJAKQDAQUFZXBvY2gFA25pbAUJc2VwYXJhdG9yAQxrZXlQb29sU2hhcmUCBHBvb2wFZXBvY2gECyR0MDIxNzcyMjE3BQRwb29sBA1hbW91bnRBc3NldElkCAULJHQwMjE3NzIyMTcCXzEEDHByaWNlQXNzZXRJZAgFCyR0MDIxNzcyMjE3Al8yCQC5CQIJAMwIAgIIJXMlcyVzJWQJAMwIAgIJcG9vbFNoYXJlCQDMCAIFDWFtb3VudEFzc2V0SWQJAMwIAgUMcHJpY2VBc3NldElkCQDMCAIJAKQDAQUFZXBvY2gFA25pbAUJc2VwYXJhdG9yAQ1rZXlUb3RhbFZvdGVzAQVlcG9jaAkAuQkCCQDMCAICBCVzJWQJAMwIAgIKdG90YWxWb3RlcwkAzAgCCQCkAwEFBWVwb2NoBQNuaWwFCXNlcGFyYXRvcgEOZ2V0VmFsdWVPckZhaWwDB2FkZHJlc3MDa2V5BHR5cGUEBWVycm9yCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBAckbWF0Y2gwBQR0eXBlAwkAAQIFByRtYXRjaDACBlN0cmluZwQDc3RyBQckbWF0Y2gwCQCdCAIFB2FkZHJlc3MFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEA2ludAUHJG1hdGNoMAkAmggCBQdhZGRyZXNzBQNrZXkJAAIBAhJpbnZhbGlkIGVudHJ5IHR5cGUFBWVycm9yAQxnZXRTdHJPckZhaWwCB2FkZHJlc3MDa2V5CgABQAkBDmdldFZhbHVlT3JGYWlsAwUHYWRkcmVzcwUDa2V5AgADCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQkBDmdldFZhbHVlT3JGYWlsAwUHYWRkcmVzcwUDa2V5AgACGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwEMZ2V0SW50T3JGYWlsAgdhZGRyZXNzA2tleQoAAUAJAQ5nZXRWYWx1ZU9yRmFpbAMFB2FkZHJlc3MFA2tleQAAAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEJAQ5nZXRWYWx1ZU9yRmFpbAMFB2FkZHJlc3MFA2tleQAAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQBDHBvb2xUb1N0cmluZwEEcG9vbAkArAICCQCsAgIIBQRwb29sAl8xBQlzZXBhcmF0b3IIBQRwb29sAl8yAQxzdHJpbmdUb1Bvb2wBA3N0cgQFcGFydHMJALUJAgUDc3RyBQlzZXBhcmF0b3IDCQAAAgkAkAMBBQVwYXJ0cwACCQCUCgIJAJEDAgUFcGFydHMAAAkAkQMCBQVwYXJ0cwABCQACAQITaW52YWxpZCBwb29sIHN0cmluZwEWZ2V0THBBc3NldEJ5UG9vbEFzc2V0cwINYW1vdW50QXNzZXRJZAxwcmljZUFzc2V0SWQKAR9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAQxiYXNlQXNzZXRTdHIJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUMYmFzZUFzc2V0U3RyCgEpa2V5TWFwcGluZ1Bvb2xBc3NldHNUb1Bvb2xDb250cmFjdEFkZHJlc3MCGGludGVybmFsQW1vdW50QXNzZXRJZFN0chdpbnRlcm5hbFByaWNlQXNzZXRJZFN0cgkArAICCQCsAgIJAKwCAgkArAICAgolZCVkJXMlc19fCQCkAwEFGGludGVybmFsQW1vdW50QXNzZXRJZFN0cgICX18JAKQDAQUXaW50ZXJuYWxQcmljZUFzc2V0SWRTdHICI19fbWFwcGluZ3NfX3Bvb2xBc3NldHMyUG9vbENvbnRyYWN0CgEfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldAETcG9vbENvbnRyYWN0QWRkcmVzcwkArAICCQCsAgICCCVzJXMlc19fBRNwb29sQ29udHJhY3RBZGRyZXNzAiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAQPZmFjdG9yeUNvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQEMZ2V0U3RyT3JGYWlsAgUEdGhpcwUSa2V5RmFjdG9yeUNvbnRyYWN0BBVhbW91bnRBc3NldEludGVybmFsSWQJAQxnZXRJbnRPckZhaWwCBQ9mYWN0b3J5Q29udHJhY3QJAR9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAQUNYW1vdW50QXNzZXRJZAQUcHJpY2VBc3NldEludGVybmFsSWQJAQxnZXRJbnRPckZhaWwCBQ9mYWN0b3J5Q29udHJhY3QJAR9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAQUMcHJpY2VBc3NldElkBBNwb29sQ29udHJhY3RBZGRyZXNzCQEMZ2V0U3RyT3JGYWlsAgUPZmFjdG9yeUNvbnRyYWN0CQEpa2V5TWFwcGluZ1Bvb2xBc3NldHNUb1Bvb2xDb250cmFjdEFkZHJlc3MCBRVhbW91bnRBc3NldEludGVybmFsSWQFFHByaWNlQXNzZXRJbnRlcm5hbElkBAlscEFzc2V0SWQJAQxnZXRTdHJPckZhaWwCBQ9mYWN0b3J5Q29udHJhY3QJAR9rZXlNYXBwaW5nUG9vbENvbnRyYWN0VG9MUEFzc2V0AQUTcG9vbENvbnRyYWN0QWRkcmVzcwUJbHBBc3NldElkARhjaGVja1d4RW1pc3Npb25Qb29sTGFiZWwBBHBvb2wECyR0MDQ0NTk0NDk5BQRwb29sBA1hbW91bnRBc3NldElkCAULJHQwNDQ1OTQ0OTkCXzEEDHByaWNlQXNzZXRJZAgFCyR0MDQ0NTk0NDk5Al8yBA9mYWN0b3J5Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQxnZXRTdHJPckZhaWwCBQR0aGlzBRJrZXlGYWN0b3J5Q29udHJhY3QKAAFACQD8BwQFD2ZhY3RvcnlDb250cmFjdAIYY2hlY2tXeEVtaXNzaW9uUG9vbExhYmVsCQDMCAIFDWFtb3VudEFzc2V0SWQJAMwIAgUMcHJpY2VBc3NldElkBQNuaWwFA25pbAMJAAECBQFAAgdCb29sZWFuBQFACQACAQkArAICCQADAQkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCGGNoZWNrV3hFbWlzc2lvblBvb2xMYWJlbAkAzAgCBQ1hbW91bnRBc3NldElkCQDMCAIFDHByaWNlQXNzZXRJZAUDbmlsBQNuaWwCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4ADXBvb2xzTGlzdE5hbWUCBXBvb2xzARBnZXRWb3Rlc0xpc3ROYW1lAQRwb29sBAskdDA0ODAwNDg0MAUEcG9vbAQNYW1vdW50QXNzZXRJZAgFCyR0MDQ4MDA0ODQwAl8xBAxwcmljZUFzc2V0SWQIBQskdDA0ODAwNDg0MAJfMgkAuQkCCQDMCAICBXZvdGVzCQDMCAIFDWFtb3VudEFzc2V0SWQJAMwIAgUMcHJpY2VBc3NldElkBQNuaWwFCXNlcGFyYXRvcgELa2V5TGlzdEhlYWQBCGxpc3ROYW1lBARtZXRhAwkAAAIFCGxpc3ROYW1lBQ1wb29sc0xpc3ROYW1lAgQlcyVzAgglcyVzJXMlcwkAuQkCCQDMCAIFBG1ldGEJAMwIAgUIbGlzdE5hbWUJAMwIAgIEaGVhZAUDbmlsBQlzZXBhcmF0b3IBC2tleUxpc3RTaXplAQhsaXN0TmFtZQQEbWV0YQMJAAACBQhsaXN0TmFtZQUNcG9vbHNMaXN0TmFtZQIEJXMlcwIIJXMlcyVzJXMJALkJAgkAzAgCBQRtZXRhCQDMCAIFCGxpc3ROYW1lCQDMCAICBHNpemUFA25pbAUJc2VwYXJhdG9yAQtrZXlMaXN0UHJldgIIbGlzdE5hbWUCaWQEBG1ldGEDCQAAAgUIbGlzdE5hbWUFDXBvb2xzTGlzdE5hbWUCCCVzJXMlcyVzAgolcyVzJXMlcyVzCQC5CQIJAMwIAgUEbWV0YQkAzAgCBQhsaXN0TmFtZQkAzAgCBQJpZAkAzAgCAgRwcmV2BQNuaWwFCXNlcGFyYXRvcgELa2V5TGlzdE5leHQCCGxpc3ROYW1lAmlkBARtZXRhAwkAAAIFCGxpc3ROYW1lBQ1wb29sc0xpc3ROYW1lAgglcyVzJXMlcwIKJXMlcyVzJXMlcwkAuQkCCQDMCAIFBG1ldGEJAMwIAgUIbGlzdE5hbWUJAMwIAgUCaWQJAMwIAgIEbmV4dAUDbmlsBQlzZXBhcmF0b3IBDGNvbnRhaW5zTm9kZQIIbGlzdE5hbWUCaWQECmhlYWRPclVuaXQJAJ0IAgUEdGhpcwkBC2tleUxpc3RIZWFkAQUIbGlzdE5hbWUECnByZXZPclVuaXQJAJ0IAgUEdGhpcwkBC2tleUxpc3RQcmV2AgUIbGlzdE5hbWUFAmlkBApuZXh0T3JVbml0CQCdCAIFBHRoaXMJAQtrZXlMaXN0TmV4dAIFCGxpc3ROYW1lBQJpZAMDCQAAAgUCaWQJAQt2YWx1ZU9yRWxzZQIFCmhlYWRPclVuaXQCAAYJAQIhPQIFCnByZXZPclVuaXQFBHVuaXQGCQECIT0CBQpuZXh0T3JVbml0BQR1bml0ARFpbnNlcnROb2RlQWN0aW9ucwIIbGlzdE5hbWUCaWQECmhlYWRPclVuaXQJAJ0IAgUEdGhpcwkBC2tleUxpc3RIZWFkAQUIbGlzdE5hbWUECGxpc3RTaXplCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQtrZXlMaXN0U2l6ZQEFCGxpc3ROYW1lAAAECWNoZWNrTm9kZQMJAQEhAQkBDGNvbnRhaW5zTm9kZQIFCGxpc3ROYW1lBQJpZAYJAAIBAgtOb2RlIGV4aXN0cwMJAAACBQljaGVja05vZGUFCWNoZWNrTm9kZQkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQtrZXlMaXN0U2l6ZQEFCGxpc3ROYW1lCQBkAgUIbGlzdFNpemUAAQUDbmlsAwkBAiE9AgUKaGVhZE9yVW5pdAUEdW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5TGlzdE5leHQCBQhsaXN0TmFtZQUCaWQJAQV2YWx1ZQEFCmhlYWRPclVuaXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBC2tleUxpc3RQcmV2AgUIbGlzdE5hbWUJAQV2YWx1ZQEFCmhlYWRPclVuaXQFAmlkBQNuaWwFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5TGlzdEhlYWQBBQhsaXN0TmFtZQUCaWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgERZGVsZXRlTm9kZUFjdGlvbnMCCGxpc3ROYW1lAmlkBApoZWFkT3JVbml0CQCdCAIFBHRoaXMJAQtrZXlMaXN0SGVhZAEFCGxpc3ROYW1lBAhsaXN0U2l6ZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQELa2V5TGlzdFNpemUBBQhsaXN0TmFtZQAABApwcmV2T3JVbml0CQCdCAIFBHRoaXMJAQtrZXlMaXN0UHJldgIFCGxpc3ROYW1lBQJpZAQKbmV4dE9yVW5pdAkAnQgCBQR0aGlzCQELa2V5TGlzdE5leHQCBQhsaXN0TmFtZQUCaWQJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBC2tleUxpc3RTaXplAQUIbGlzdE5hbWUJAGUCBQhsaXN0U2l6ZQABBQNuaWwDAwkBAiE9AgUKcHJldk9yVW5pdAUEdW5pdAkBAiE9AgUKbmV4dE9yVW5pdAUEdW5pdAcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBC2tleUxpc3ROZXh0AgUIbGlzdE5hbWUJAQV2YWx1ZQEFCnByZXZPclVuaXQJAQV2YWx1ZQEFCm5leHRPclVuaXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBC2tleUxpc3RQcmV2AgUIbGlzdE5hbWUJAQV2YWx1ZQEFCm5leHRPclVuaXQJAQV2YWx1ZQEFCnByZXZPclVuaXQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBC2tleUxpc3RQcmV2AgUIbGlzdE5hbWUFAmlkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQtrZXlMaXN0TmV4dAIFCGxpc3ROYW1lBQJpZAUDbmlsAwkBAiE9AgUKbmV4dE9yVW5pdAUEdW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5TGlzdEhlYWQBBQhsaXN0TmFtZQkBBXZhbHVlAQUKbmV4dE9yVW5pdAkAzAgCCQELRGVsZXRlRW50cnkBCQELa2V5TGlzdE5leHQCBQhsaXN0TmFtZQUCaWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBC2tleUxpc3RQcmV2AgUIbGlzdE5hbWUJAQV2YWx1ZQEFCm5leHRPclVuaXQFA25pbAMJAQIhPQIFCnByZXZPclVuaXQFBHVuaXQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBC2tleUxpc3RQcmV2AgUIbGlzdE5hbWUFAmlkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQtrZXlMaXN0TmV4dAIFCGxpc3ROYW1lCQEFdmFsdWUBBQpwcmV2T3JVbml0BQNuaWwDCQAAAgUCaWQJAQt2YWx1ZU9yRWxzZQIFCmhlYWRPclVuaXQCAAkAzAgCCQELRGVsZXRlRW50cnkBCQELa2V5TGlzdEhlYWQBBQhsaXN0TmFtZQUDbmlsCQACAQkArAICCQCsAgIJAKwCAgIOaW52YWxpZCBub2RlOiAFCGxpc3ROYW1lAgEuBQJpZAETa2V5TWFuYWdlclB1YmxpY0tleQACFCVzX19tYW5hZ2VyUHVibGljS2V5ARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAEByRtYXRjaDAJAKIIAQkBE2tleU1hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgEdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQABAckbWF0Y2gwCQCiCAEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yABVwZXJtaXNzaW9uRGVuaWVkRXJyb3IJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAEIbXVzdFRoaXMBAWkDCQAAAggFAWkGY2FsbGVyBQR0aGlzBgUVcGVybWlzc2lvbkRlbmllZEVycm9yAQttdXN0TWFuYWdlcgEBaQQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQUCcGsGBRVwZXJtaXNzaW9uRGVuaWVkRXJyb3IDCQABAgUHJG1hdGNoMAIEVW5pdAkBCG11c3RUaGlzAQUBaQkAAgECC01hdGNoIGVycm9yEQFpAQpzZXRNYW5hZ2VyARdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBBVjaGVja01hbmFnZXJQdWJsaWNLZXkJANkEAQUXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkDCQAAAgUVY2hlY2tNYW5hZ2VyUHVibGljS2V5BRVjaGVja01hbmFnZXJQdWJsaWNLZXkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAUXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5jb25maXJtTWFuYWdlcgAEAnBtCQEdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQABAVoYXNQTQMJAQlpc0RlZmluZWQBBQJwbQYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUFaGFzUE0FBWhhc1BNBAdjaGVja1BNAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCcG0GCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFB2NoZWNrUE0FB2NoZWNrUE0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBE2tleU1hbmFnZXJQdWJsaWNLZXkACQDYBAEJAQV2YWx1ZQEFAnBtCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARhnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHQCC3VzZXJBZGRyZXNzDHRhcmdldEhlaWdodAQXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQEMZ2V0U3RyT3JGYWlsAgUEdGhpcwUTa2V5Qm9vc3RpbmdDb250cmFjdAIhaW52YWxpZCBib29zdGluZyBjb250cmFjdCBhZGRyZXNzCQCUCgIFA25pbAoAAUAJAPwHBAUXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MCIGdldFVzZXJHd3hBbW91bnRBdEhlaWdodFJFQURPTkxZCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAIFDHRhcmdldEhlaWdodAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQkA/AcEBRdib29zdGluZ0NvbnRyYWN0QWRkcmVzcwIgZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0UkVBRE9OTFkJAMwIAgULdXNlckFkZHJlc3MJAMwIAgUMdGFyZ2V0SGVpZ2h0BQNuaWwFA25pbAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AWkBC2NvbnN0cnVjdG9yBQ9mYWN0b3J5Q29udHJhY3Qfdm90aW5nRW1pc3Npb25DYW5kaWRhdGVDb250cmFjdBBib29zdGluZ0NvbnRyYWN0D3N0YWtpbmdDb250cmFjdAtlcG9jaExlbmd0aAQFY2hla3MJAMwIAgkBC211c3RNYW5hZ2VyAQUBaQkAzAgCAwkBAiE9AgkApggBBQ9mYWN0b3J5Q29udHJhY3QFBHVuaXQGAiBpbnZhbGlkIGZhY3RvcnkgY29udHJhY3QgYWRkcmVzcwkAzAgCAwkBAiE9AgkApggBBR92b3RpbmdFbWlzc2lvbkNhbmRpZGF0ZUNvbnRyYWN0BQR1bml0BgIyaW52YWxpZCB2b3RpbmcgZW1pc3Npb24gY2FuZGlkYXRlIGNvbnRyYWN0IGFkZHJlc3MJAMwIAgMJAQIhPQIJAKYIAQUQYm9vc3RpbmdDb250cmFjdAUEdW5pdAYCIWludmFsaWQgYm9vc3RpbmcgY29udHJhY3QgYWRkcmVzcwkAzAgCAwkBAiE9AgkApggBBQ9zdGFraW5nQ29udHJhY3QFBHVuaXQGAiBpbnZhbGlkIHN0YWtpbmcgY29udHJhY3QgYWRkcmVzcwkAzAgCAwkAZgIFC2Vwb2NoTGVuZ3RoAAAGCQACAQIUaW52YWxpZCBlcG9jaCBsZW5ndGgFA25pbAMJAAACBQVjaGVrcwUFY2hla3MJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBRJrZXlGYWN0b3J5Q29udHJhY3QFD2ZhY3RvcnlDb250cmFjdAkAzAgCCQELU3RyaW5nRW50cnkCBSJrZXlWb3RpbmdFbWlzc2lvbkNhbmRpZGF0ZUNvbnRyYWN0BR92b3RpbmdFbWlzc2lvbkNhbmRpZGF0ZUNvbnRyYWN0CQDMCAIJAQtTdHJpbmdFbnRyeQIFE2tleUJvb3N0aW5nQ29udHJhY3QFEGJvb3N0aW5nQ29udHJhY3QJAMwIAgkBC1N0cmluZ0VudHJ5AgUSa2V5U3Rha2luZ0NvbnRyYWN0BQ9zdGFraW5nQ29udHJhY3QJAMwIAgkBDEludGVnZXJFbnRyeQIFDmtleUVwb2NoTGVuZ3RoBQtlcG9jaExlbmd0aAUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBmNyZWF0ZQINYW1vdW50QXNzZXRJZAxwcmljZUFzc2V0SWQEBmNoZWNrcwkAzAgCAwkAAAIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBSJrZXlWb3RpbmdFbWlzc2lvbkNhbmRpZGF0ZUNvbnRyYWN0AgAGCQELbXVzdE1hbmFnZXIBBQFpBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEBHBvb2wJAJQKAgUNYW1vdW50QXNzZXRJZAUMcHJpY2VBc3NldElkBA1pbkxpc3RBY3Rpb25zCQDOCAIJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQlrZXlJbkxpc3QBBQRwb29sBgUDbmlsCQERaW5zZXJ0Tm9kZUFjdGlvbnMCBQ1wb29sc0xpc3ROYW1lCQEMcG9vbFRvU3RyaW5nAQUEcG9vbAQYY3VycmVudEVwb2NoSXNOb3REZWZpbmVkCQAAAgkAmggCBQR0aGlzBQ9rZXlDdXJyZW50RXBvY2gFBHVuaXQEEnN0YXJ0SGVpZ2h0QWN0aW9ucwMFGGN1cnJlbnRFcG9jaElzTm90RGVmaW5lZAQFZXBvY2gAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUPa2V5Q3VycmVudEVwb2NoBQVlcG9jaAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFWtleVN0YXJ0SGVpZ2h0QnlFcG9jaAEFBWVwb2NoBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFDmtleVN0YXJ0SGVpZ2h0BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtleUN1cnJlbnRFcG9jaFVpBQVlcG9jaAkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa2V5U3RhcnRIZWlnaHRVaQUGaGVpZ2h0BQNuaWwFA25pbAkAlAoCCQDOCAIFDWluTGlzdEFjdGlvbnMFEnN0YXJ0SGVpZ2h0QWN0aW9ucwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQR2b3RlAw1hbW91bnRBc3NldElkDHByaWNlQXNzZXRJZAZhbW91bnQEBHBvb2wJAJQKAgUNYW1vdW50QXNzZXRJZAUMcHJpY2VBc3NldElkBAVlcG9jaAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ9rZXlDdXJyZW50RXBvY2gAAAQLc3RhcnRIZWlnaHQJAQxnZXRJbnRPckZhaWwCBQR0aGlzCQEVa2V5U3RhcnRIZWlnaHRCeUVwb2NoAQUFZXBvY2gEC2Vwb2NoTGVuZ3RoCQEMZ2V0SW50T3JGYWlsAgUEdGhpcwUOa2V5RXBvY2hMZW5ndGgECWVuZEhlaWdodAkAZAIFC3N0YXJ0SGVpZ2h0BQtlcG9jaExlbmd0aAQXZmluYWxpemF0aW9uU3RhZ2VPclVuaXQJAJoIAgUEdGhpcwUUa2V5RmluYWxpemF0aW9uU3RhZ2UEBHVzZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBB2tleVVzZWQCCAUBaQZjYWxsZXIFBWVwb2NoAAAEBHZvdGUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBB2tleVZvdGUDBQRwb29sCAUBaQZjYWxsZXIFBWVwb2NoAAAECnBvb2xSZXN1bHQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBD2tleVZvdGluZ1Jlc3VsdAIFBHBvb2wFBWVwb2NoAAAECnRvdGFsVm90ZXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBDWtleVRvdGFsVm90ZXMBBQVlcG9jaAAABBNnd3hBbW91bnRBdEVuZFRvdGFsCgABQAkA/AcEBQR0aGlzAhhnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHQJAMwIAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCQDMCAIFCWVuZEhlaWdodAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQkA/AcEBQR0aGlzAhhnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHQJAMwIAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCQDMCAIFCWVuZEhlaWdodAUDbmlsBQNuaWwCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQJYXZhaWxhYmxlCQBlAgUTZ3d4QW1vdW50QXRFbmRUb3RhbAUEdXNlZAQHbmV3Vm90ZQkAZAIFBHZvdGUFBmFtb3VudAQKd3hFbWlzc2lvbgkBGGNoZWNrV3hFbWlzc2lvblBvb2xMYWJlbAEFBHBvb2wEBmNoZWNrcwkAzAgCAwkBAiE9AgkAoAgBCQEJa2V5SW5MaXN0AQUEcG9vbAUEdW5pdAYJAAIBAg5pbnZhbGlkIGFzc2V0cwkAzAgCAwkAZgIFCWVuZEhlaWdodAUGaGVpZ2h0BgkAAgECDmludmFsaWQgaGVpZ2h0CQDMCAIDCQAAAgUXZmluYWxpemF0aW9uU3RhZ2VPclVuaXQFBHVuaXQGCQACAQIYZmluYWxpemF0aW9uIGluIHByb2dyZXNzCQDMCAIDCQBmAgUTZ3d4QW1vdW50QXRFbmRUb3RhbAAABgkAAgECE3lvdSBkbyBub3QgaGF2ZSBnV1gJAMwIAgMDCQBmAgUGYW1vdW50AAAJAGcCBQlhdmFpbGFibGUFBmFtb3VudAcGCQACAQIOaW52YWxpZCBhbW91bnQJAMwIAgMFCnd4RW1pc3Npb24GCQACAQIdcG9vbCBoYXNuJ3QgV1hfRU1JU1NJT04gbGFiZWwFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQNdm90ZXNMaXN0TmFtZQkBEGdldFZvdGVzTGlzdE5hbWUBBQRwb29sBA51c2VyQWRkcmVzc1N0cgkApQgBCAUBaQZjYWxsZXIEEHZvdGVzTGlzdEFjdGlvbnMDCQEMY29udGFpbnNOb2RlAgUNdm90ZXNMaXN0TmFtZQUOdXNlckFkZHJlc3NTdHIFA25pbAkBEWluc2VydE5vZGVBY3Rpb25zAgUNdm90ZXNMaXN0TmFtZQUOdXNlckFkZHJlc3NTdHIJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEHa2V5VXNlZAIIBQFpBmNhbGxlcgUFZXBvY2gJAGQCBQR1c2VkBQZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQdrZXlWb3RlAwUEcG9vbAgFAWkGY2FsbGVyBQVlcG9jaAUHbmV3Vm90ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBD2tleVZvdGluZ1Jlc3VsdAIFBHBvb2wFBWVwb2NoCQBkAgUKcG9vbFJlc3VsdAUGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5VG90YWxWb3RlcwEFBWVwb2NoCQBkAgUKdG90YWxWb3RlcwUGYW1vdW50BQNuaWwFEHZvdGVzTGlzdEFjdGlvbnMFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKY2FuY2VsVm90ZQINYW1vdW50QXNzZXRJZAxwcmljZUFzc2V0SWQEBHBvb2wJAJQKAgUNYW1vdW50QXNzZXRJZAUMcHJpY2VBc3NldElkBAVlcG9jaAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ9rZXlDdXJyZW50RXBvY2gAAAQLc3RhcnRIZWlnaHQJAQxnZXRJbnRPckZhaWwCBQR0aGlzCQEVa2V5U3RhcnRIZWlnaHRCeUVwb2NoAQUFZXBvY2gEC2Vwb2NoTGVuZ3RoCQEMZ2V0SW50T3JGYWlsAgUEdGhpcwUOa2V5RXBvY2hMZW5ndGgECWVuZEhlaWdodAkAZAIFC3N0YXJ0SGVpZ2h0BQtlcG9jaExlbmd0aAQXZmluYWxpemF0aW9uU3RhZ2VPclVuaXQJAJoIAgUEdGhpcwUUa2V5RmluYWxpemF0aW9uU3RhZ2UEBHVzZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBB2tleVVzZWQCCAUBaQZjYWxsZXIFBWVwb2NoAAAEBHZvdGUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBB2tleVZvdGUDBQRwb29sCAUBaQZjYWxsZXIFBWVwb2NoAAAECnBvb2xSZXN1bHQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBD2tleVZvdGluZ1Jlc3VsdAIFBHBvb2wFBWVwb2NoAAAECnRvdGFsVm90ZXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBDWtleVRvdGFsVm90ZXMBBQVlcG9jaAAABAZjaGVja3MJAMwIAgMJAQIhPQIJAKAIAQkBCWtleUluTGlzdAEFBHBvb2wFBHVuaXQGCQACAQIOaW52YWxpZCBhc3NldHMJAMwIAgMJAGYCBQllbmRIZWlnaHQFBmhlaWdodAYJAAIBAg5pbnZhbGlkIGhlaWdodAkAzAgCAwkAAAIFF2ZpbmFsaXphdGlvblN0YWdlT3JVbml0BQR1bml0BgkAAgECGGZpbmFsaXphdGlvbiBpbiBwcm9ncmVzcwkAzAgCAwkAZgIFBHZvdGUAAAYJAAIBAgdubyB2b3RlBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEDXZvdGVzTGlzdE5hbWUJARBnZXRWb3Rlc0xpc3ROYW1lAQUEcG9vbAQOdXNlckFkZHJlc3NTdHIJAKUIAQgFAWkGY2FsbGVyCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBB2tleVVzZWQCCAUBaQZjYWxsZXIFBWVwb2NoCQCWAwEJAMwIAgkAZQIFBHVzZWQFBHZvdGUJAMwIAgAABQNuaWwJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBB2tleVZvdGUDBQRwb29sCAUBaQZjYWxsZXIFBWVwb2NoCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5Vm90aW5nUmVzdWx0AgUEcG9vbAUFZXBvY2gJAGUCBQpwb29sUmVzdWx0BQR2b3RlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5VG90YWxWb3RlcwEFBWVwb2NoCQBlAgUKdG90YWxWb3RlcwUEdm90ZQUDbmlsCQERZGVsZXRlTm9kZUFjdGlvbnMCBQ12b3Rlc0xpc3ROYW1lBQ51c2VyQWRkcmVzc1N0cgUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5zZXRFcG9jaExlbmd0aAEObmV3RXBvY2hMZW5ndGgEBWNoZWtzCQDMCAIJAQttdXN0TWFuYWdlcgEFAWkJAMwIAgMJAGYCBQ5uZXdFcG9jaExlbmd0aAAABgkAAgECFGludmFsaWQgZXBvY2ggbGVuZ3RoBQNuaWwDCQAAAgUFY2hla3MFBWNoZWtzCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFDmtleUVwb2NoTGVuZ3RoBQ5uZXdFcG9jaExlbmd0aAUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBC3NldE1heERlcHRoAQtuZXdNYXhEZXB0aAQFY2hla3MJAMwIAgkBC211c3RNYW5hZ2VyAQUBaQkAzAgCAwkAZgIFC25ld01heERlcHRoAAAGCQACAQIRaW52YWxpZCBtYXggZGVwdGgFA25pbAMJAAACBQVjaGVrcwUFY2hla3MJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgULa2V5TWF4RGVwdGgFC25ld01heERlcHRoBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQETcHJvY2Vzc1ZvdGVJTlRFUk5BTAIHcG9vbFN0cg51c2VyQWRkcmVzc1N0cgQLY2hlY2tDYWxsZXIJAQhtdXN0VGhpcwEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBAt1c2VyQWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFDnVzZXJBZGRyZXNzU3RyCQCsAgICKnByb2Nlc3NWb3RlSU5URVJOQUw6IGludmFsaWQgdXNlciBhZGRyZXNzIAUOdXNlckFkZHJlc3NTdHIEBWVwb2NoCQEMZ2V0SW50T3JGYWlsAgUEdGhpcwUPa2V5Q3VycmVudEVwb2NoBA1lcG9jaFByZXZpb3VzCQBlAgUFZXBvY2gAAQQLZXBvY2hMZW5ndGgJAQxnZXRJbnRPckZhaWwCBQR0aGlzBQ5rZXlFcG9jaExlbmd0aAQLc3RhcnRIZWlnaHQJAQxnZXRJbnRPckZhaWwCBQR0aGlzCQEVa2V5U3RhcnRIZWlnaHRCeUVwb2NoAQUFZXBvY2gECWVuZEhlaWdodAkAZAIFC3N0YXJ0SGVpZ2h0BQtlcG9jaExlbmd0aAQTc3RhcnRIZWlnaHRQcmV2aW91cwkBDGdldEludE9yRmFpbAIFBHRoaXMJARVrZXlTdGFydEhlaWdodEJ5RXBvY2gBBQ1lcG9jaFByZXZpb3VzBBFlbmRIZWlnaHRQcmV2aW91cwkAZAIFE3N0YXJ0SGVpZ2h0UHJldmlvdXMFC2Vwb2NoTGVuZ3RoBBBjaGVja1RhcmdldEVwb2NoAwkAZwIFDWVwb2NoUHJldmlvdXMAAAYJAAIBAitwcm9jZXNzVm90ZUlOVEVSTkFMOiBpbnZhbGlkIHByZXZpb3VzIGVwb2NoAwkAAAIFEGNoZWNrVGFyZ2V0RXBvY2gFEGNoZWNrVGFyZ2V0RXBvY2gEBHBvb2wJAQxzdHJpbmdUb1Bvb2wBBQdwb29sU3RyBA0kdDAxNzEyNjE3MTY2BQRwb29sBA1hbW91bnRBc3NldElkCAUNJHQwMTcxMjYxNzE2NgJfMQQMcHJpY2VBc3NldElkCAUNJHQwMTcxMjYxNzE2NgJfMgQKd3hFbWlzc2lvbgkBGGNoZWNrV3hFbWlzc2lvblBvb2xMYWJlbAEFBHBvb2wEE2d3eEFtb3VudEF0RW5kVG90YWwKAAFACQD8BwQFBHRoaXMCGGdldFVzZXJHd3hBbW91bnRBdEhlaWdodAkAzAgCBQ51c2VyQWRkcmVzc1N0cgkAzAgCBQllbmRIZWlnaHQFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEJAPwHBAUEdGhpcwIYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0CQDMCAIFDnVzZXJBZGRyZXNzU3RyCQDMCAIFCWVuZEhlaWdodAUDbmlsBQNuaWwCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQbZ3d4QW1vdW50QXRFbmRUb3RhbFByZXZpb3VzCgABQAkA/AcEBQR0aGlzAhhnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHQJAMwIAgUOdXNlckFkZHJlc3NTdHIJAMwIAgURZW5kSGVpZ2h0UHJldmlvdXMFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEJAPwHBAUEdGhpcwIYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0CQDMCAIFDnVzZXJBZGRyZXNzU3RyCQDMCAIFEWVuZEhlaWdodFByZXZpb3VzBQNuaWwFA25pbAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BAp0b3RhbFZvdGVzCQELdmFsdWVPckVsc2UCCQCfCAEJAQ1rZXlUb3RhbFZvdGVzAQUFZXBvY2gAAAQMdm90aW5nUmVzdWx0CQELdmFsdWVPckVsc2UCCQCfCAEJAQ9rZXlWb3RpbmdSZXN1bHQCBQRwb29sBQVlcG9jaAAABAx2b3RlUHJldmlvdXMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQEHa2V5Vm90ZQMFBHBvb2wFC3VzZXJBZGRyZXNzBQ1lcG9jaFByZXZpb3VzCQCsAgIJAKwCAgkArAICCQCsAgICFHByb2Nlc3NWb3RlSU5URVJOQUwgBQdwb29sU3RyAgEgBQ51c2VyQWRkcmVzc1N0cgISOiBubyBwcmV2aW91cyB2b3RlBAR1c2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQdrZXlVc2VkAgULdXNlckFkZHJlc3MFBWVwb2NoAAAEB25ld1ZvdGUJAGsDBQx2b3RlUHJldmlvdXMFE2d3eEFtb3VudEF0RW5kVG90YWwFG2d3eEFtb3VudEF0RW5kVG90YWxQcmV2aW91cwQHYWN0aW9ucwMDCQBmAgUHbmV3Vm90ZQAABQp3eEVtaXNzaW9uBwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBB2tleVZvdGUDBQRwb29sBQt1c2VyQWRkcmVzcwUFZXBvY2gFB25ld1ZvdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlUb3RhbFZvdGVzAQUFZXBvY2gJAGQCBQp0b3RhbFZvdGVzBQduZXdWb3RlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5Vm90aW5nUmVzdWx0AgUEcG9vbAUFZXBvY2gJAGQCBQx2b3RpbmdSZXN1bHQFB25ld1ZvdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQdrZXlVc2VkAgULdXNlckFkZHJlc3MFBWVwb2NoCQBkAgUEdXNlZAUHbmV3Vm90ZQUDbmlsCQERZGVsZXRlTm9kZUFjdGlvbnMCCQEQZ2V0Vm90ZXNMaXN0TmFtZQEFBHBvb2wFDnVzZXJBZGRyZXNzU3RyCQCUCgIFB2FjdGlvbnMFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQETcHJvY2Vzc1Bvb2xJTlRFUk5BTAEHcG9vbFN0cgQLY2hlY2tDYWxsZXIJAQhtdXN0VGhpcwEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBAt0YXJnZXRFcG9jaAkAZQIJAQxnZXRJbnRPckZhaWwCBQR0aGlzBQ9rZXlDdXJyZW50RXBvY2gAAQQQY2hlY2tUYXJnZXRFcG9jaAMJAGcCBQt0YXJnZXRFcG9jaAAABgkAAgECKXByb2Nlc3NQb29sSU5URVJOQUw6IGludmFsaWQgdGFyZ2V0IGVwb2NoAwkAAAIFEGNoZWNrVGFyZ2V0RXBvY2gFEGNoZWNrVGFyZ2V0RXBvY2gEBHBvb2wJAQxzdHJpbmdUb1Bvb2wBBQdwb29sU3RyBA0kdDAxODY4MzE4NzIzBQRwb29sBA1hbW91bnRBc3NldElkCAUNJHQwMTg2ODMxODcyMwJfMQQMcHJpY2VBc3NldElkCAUNJHQwMTg2ODMxODcyMwJfMgQPc3Rha2luZ0NvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQEMZ2V0U3RyT3JGYWlsAgUEdGhpcwUSa2V5U3Rha2luZ0NvbnRyYWN0BA9mYWN0b3J5Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQxnZXRTdHJPckZhaWwCBQR0aGlzBRJrZXlGYWN0b3J5Q29udHJhY3QECWxwQXNzZXRJZAkBFmdldExwQXNzZXRCeVBvb2xBc3NldHMCBQ1hbW91bnRBc3NldElkBQxwcmljZUFzc2V0SWQEAXIKAAFACQD8BwQFD3N0YWtpbmdDb250cmFjdAISdXNlcnNMaXN0VHJhdmVyc2FsCQDMCAIFCWxwQXNzZXRJZAUDbmlsBQNuaWwDCQABAgUBQAIHQm9vbGVhbgUBQAkAAgEJAKwCAgkAAwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0AhJ1c2Vyc0xpc3RUcmF2ZXJzYWwJAMwIAgUJbHBBc3NldElkBQNuaWwFA25pbAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgMJAAACBQFyBQFyAwUBcgkAlAoCBQNuaWwGBAp3eEVtaXNzaW9uCQEYY2hlY2tXeEVtaXNzaW9uUG9vbExhYmVsAQUEcG9vbAQKdG90YWxWb3RlcwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQENa2V5VG90YWxWb3RlcwEFC3RhcmdldEVwb2NoAAAEDHZvdGluZ1Jlc3VsdAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEPa2V5Vm90aW5nUmVzdWx0AgUEcG9vbAULdGFyZ2V0RXBvY2gAAAQFc2hhcmUDAwkAAAIFCnRvdGFsVm90ZXMAAAYJAQEhAQUKd3hFbWlzc2lvbgAACQBrAwUMdm90aW5nUmVzdWx0BQ5wb29sV2VpZ2h0TXVsdAUKdG90YWxWb3RlcwQPbW9kaWZ5V2VpZ2h0SW52CQD8BwQFD2ZhY3RvcnlDb250cmFjdAIMbW9kaWZ5V2VpZ2h0CQDMCAIFCWxwQXNzZXRJZAkAzAgCBQVzaGFyZQUDbmlsBQNuaWwDCQAAAgUPbW9kaWZ5V2VpZ2h0SW52BQ9tb2RpZnlXZWlnaHRJbnYEEHBvb2xzTGlzdEFjdGlvbnMDBQp3eEVtaXNzaW9uBQNuaWwJAM4IAgkAzAgCCQELRGVsZXRlRW50cnkBCQEJa2V5SW5MaXN0AQUEcG9vbAUDbmlsCQERZGVsZXRlTm9kZUFjdGlvbnMCBQ1wb29sc0xpc3ROYW1lBQdwb29sU3RyCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDGtleVBvb2xTaGFyZQIFBHBvb2wFC3RhcmdldEVwb2NoBQVzaGFyZQUDbmlsBRBwb29sc0xpc3RBY3Rpb25zBwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5maW5hbGl6ZUhlbHBlcgAEBWVwb2NoCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFD2tleUN1cnJlbnRFcG9jaAAABA1wcmV2aW91c0Vwb2NoCQBlAgUFZXBvY2gAAQQLc3RhcnRIZWlnaHQJAQxnZXRJbnRPckZhaWwCBQR0aGlzCQEVa2V5U3RhcnRIZWlnaHRCeUVwb2NoAQUFZXBvY2gEC2Vwb2NoTGVuZ3RoCQEMZ2V0SW50T3JGYWlsAgUEdGhpcwUOa2V5RXBvY2hMZW5ndGgECWVuZEhlaWdodAkAZAIFC3N0YXJ0SGVpZ2h0BQtlcG9jaExlbmd0aAQXZmluYWxpemF0aW9uU3RhZ2VPclVuaXQJAJoIAgUEdGhpcwUUa2V5RmluYWxpemF0aW9uU3RhZ2UDCQBnAgUGaGVpZ2h0BQllbmRIZWlnaHQECG5ld0Vwb2NoCQBkAgUFZXBvY2gAAQkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEVa2V5U3RhcnRIZWlnaHRCeUVwb2NoAQUIbmV3RXBvY2gFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUOa2V5U3RhcnRIZWlnaHQFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUPa2V5Q3VycmVudEVwb2NoBQhuZXdFcG9jaAkAzAgCCQEMSW50ZWdlckVudHJ5AgUUa2V5RmluYWxpemF0aW9uU3RhZ2UFFmZpbmFsaXphdGlvblN0YWdlVG90YWwFA25pbAYDCQAAAgUXZmluYWxpemF0aW9uU3RhZ2VPclVuaXQFBHVuaXQJAJQKAgUDbmlsBwMJAAACBRdmaW5hbGl6YXRpb25TdGFnZU9yVW5pdAUWZmluYWxpemF0aW9uU3RhZ2VUb3RhbAQKcG9vbE9yVW5pdAkAoggBBQtrZXlOZXh0UG9vbAQKdXNlck9yVW5pdAkAoggBBQtrZXlOZXh0VXNlcgQHJG1hdGNoMAUKcG9vbE9yVW5pdAMJAAECBQckbWF0Y2gwAgRVbml0BAckbWF0Y2gxCQCiCAEJAQtrZXlMaXN0SGVhZAEFDXBvb2xzTGlzdE5hbWUDCQABAgUHJG1hdGNoMQIEVW5pdAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRrZXlGaW5hbGl6YXRpb25TdGFnZQUXZmluYWxpemF0aW9uU3RhZ2VTaGFyZXMJAMwIAgkBC0RlbGV0ZUVudHJ5AQULa2V5TmV4dFBvb2wJAMwIAgkBC0RlbGV0ZUVudHJ5AQULa2V5TmV4dFVzZXIFA25pbAYDCQABAgUHJG1hdGNoMQIGU3RyaW5nBAxwb29sc0hlYWRTdHIFByRtYXRjaDEJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQtrZXlOZXh0UG9vbAUMcG9vbHNIZWFkU3RyBQNuaWwGCQACAQILTWF0Y2ggZXJyb3IDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAdwb29sU3RyBQckbWF0Y2gwBARwb29sCQEMc3RyaW5nVG9Qb29sAQUHcG9vbFN0cgQObmV4dFVzZXJPclVuaXQEByRtYXRjaDEFCnVzZXJPclVuaXQDCQABAgUHJG1hdGNoMQIEVW5pdAkAoggBCQELa2V5TGlzdEhlYWQBCQEQZ2V0Vm90ZXNMaXN0TmFtZQEFBHBvb2wDCQABAgUHJG1hdGNoMQIGU3RyaW5nBAR1c2VyBQckbWF0Y2gxBA5wcm9jZXNzVm90ZUludgkA/AcEBQR0aGlzAhNwcm9jZXNzVm90ZUlOVEVSTkFMCQDMCAIFB3Bvb2xTdHIJAMwIAgUEdXNlcgUDbmlsBQNuaWwDCQAAAgUOcHJvY2Vzc1ZvdGVJbnYFDnByb2Nlc3NWb3RlSW52CQCiCAEJAQtrZXlMaXN0TmV4dAIJARBnZXRWb3Rlc0xpc3ROYW1lAQUEcG9vbAUEdXNlcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECC01hdGNoIGVycm9yBAckbWF0Y2gxBQ5uZXh0VXNlck9yVW5pdAMJAAECBQckbWF0Y2gxAgRVbml0BA5uZXh0UG9vbE9yVW5pdAkAoggBCQELa2V5TGlzdE5leHQCBQ1wb29sc0xpc3ROYW1lBQdwb29sU3RyBAckbWF0Y2gyBQ5uZXh0UG9vbE9yVW5pdAMJAAECBQckbWF0Y2gyAgRVbml0CQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFFGtleUZpbmFsaXphdGlvblN0YWdlBRdmaW5hbGl6YXRpb25TdGFnZVNoYXJlcwkAzAgCCQELRGVsZXRlRW50cnkBBQtrZXlOZXh0UG9vbAkAzAgCCQELRGVsZXRlRW50cnkBBQtrZXlOZXh0VXNlcgUDbmlsBgMJAAECBQckbWF0Y2gyAgZTdHJpbmcEAXMFByRtYXRjaDIJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQtrZXlOZXh0UG9vbAUBcwkAzAgCCQELRGVsZXRlRW50cnkBBQtrZXlOZXh0VXNlcgUDbmlsBgkAAgECC01hdGNoIGVycm9yAwkAAQIFByRtYXRjaDECBlN0cmluZwQIbmV4dFVzZXIFByRtYXRjaDEJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQtrZXlOZXh0VXNlcgUIbmV4dFVzZXIFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgkAAgECC01hdGNoIGVycm9yAwkAAAIFF2ZpbmFsaXphdGlvblN0YWdlT3JVbml0BRdmaW5hbGl6YXRpb25TdGFnZVNoYXJlcwQKcG9vbE9yVW5pdAkAoggBBQtrZXlOZXh0UG9vbAQHJG1hdGNoMAUKcG9vbE9yVW5pdAMJAAECBQckbWF0Y2gwAgRVbml0BAckbWF0Y2gxCQCiCAEJAQtrZXlMaXN0SGVhZAEFDXBvb2xzTGlzdE5hbWUDCQABAgUHJG1hdGNoMQIEVW5pdAkAlAoCCQDMCAIJAQtEZWxldGVFbnRyeQEFFGtleUZpbmFsaXphdGlvblN0YWdlCQDMCAIJAQxCb29sZWFuRW50cnkCCQEMa2V5RmluYWxpemVkAQUNcHJldmlvdXNFcG9jaAYJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtleUN1cnJlbnRFcG9jaFVpBQVlcG9jaAkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa2V5U3RhcnRIZWlnaHRVaQULc3RhcnRIZWlnaHQFA25pbAYDCQABAgUHJG1hdGNoMQIGU3RyaW5nBAtuZXh0UG9vbFN0cgUHJG1hdGNoMQkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFC2tleU5leHRQb29sBQtuZXh0UG9vbFN0cgUDbmlsBgkAAgECC01hdGNoIGVycm9yAwkAAQIFByRtYXRjaDACBlN0cmluZwQHcG9vbFN0cgUHJG1hdGNoMAQBcgoAAUAJAPwHBAUEdGhpcwITcHJvY2Vzc1Bvb2xJTlRFUk5BTAkAzAgCBQdwb29sU3RyBQNuaWwFA25pbAMJAAECBQFAAgdCb29sZWFuBQFACQACAQkArAICCQADAQkA/AcEBQR0aGlzAhNwcm9jZXNzUG9vbElOVEVSTkFMCQDMCAIFB3Bvb2xTdHIFA25pbAUDbmlsAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuAwkAAAIFAXIFAXIDBQFyCQCUCgIFA25pbAYEDm5leHRQb29sT3JVbml0CQCiCAEJAQtrZXlMaXN0TmV4dAIFDXBvb2xzTGlzdE5hbWUFB3Bvb2xTdHIEByRtYXRjaDEFDm5leHRQb29sT3JVbml0AwkAAQIFByRtYXRjaDECBFVuaXQJAJQKAgkAzAgCCQELRGVsZXRlRW50cnkBBRRrZXlGaW5hbGl6YXRpb25TdGFnZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBDGtleUZpbmFsaXplZAEFDXByZXZpb3VzRXBvY2gGCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrZXlDdXJyZW50RXBvY2hVaQUFZXBvY2gJAMwIAgkBDEludGVnZXJFbnRyeQIFEGtleVN0YXJ0SGVpZ2h0VWkFC3N0YXJ0SGVpZ2h0CQDMCAIJAQtEZWxldGVFbnRyeQEFC2tleU5leHRQb29sBQNuaWwGAwkAAQIFByRtYXRjaDECBlN0cmluZwQLbmV4dFBvb2xTdHIFByRtYXRjaDEJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQtrZXlOZXh0UG9vbAULbmV4dFBvb2xTdHIFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECC01hdGNoIGVycm9yCQACAQIWZmluYWxpemF0aW9uIGlzIGJyb2tlbgFpAQ9maW5hbGl6ZVdyYXBwZXIBB2NvdW50ZXIEBnJlc3VsdAoAAUAJAPwHBAUEdGhpcwIOZmluYWxpemVIZWxwZXIFA25pbAUDbmlsAwkAAQIFAUACB0Jvb2xlYW4FAUAJAAIBCQCsAgIJAAMBCQD8BwQFBHRoaXMCDmZpbmFsaXplSGVscGVyBQNuaWwFA25pbAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgMJAAACBQZyZXN1bHQFBnJlc3VsdAMJAQEhAQUGcmVzdWx0AwkAAAIFB2NvdW50ZXIAAAkAAgECHkN1cnJlbnQgdm90aW5nIGlzIG5vdCBvdmVyIHlldAkAlAoCBQNuaWwFBHVuaXQECG1heERlcHRoCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFC2tleU1heERlcHRoBQ9tYXhEZXB0aERlZmF1bHQDCQBmAgUIbWF4RGVwdGgFB2NvdW50ZXIEA2ludgkA/AcEBQR0aGlzAg9maW5hbGl6ZVdyYXBwZXIJAMwIAgkAZAIFB2NvdW50ZXIAAQUDbmlsBQNuaWwDCQAAAgUDaW52BQNpbnYJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCUCgIFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhmaW5hbGl6ZQAEA2ludgkA/AcEBQR0aGlzAg9maW5hbGl6ZVdyYXBwZXIJAMwIAgAABQNuaWwFA25pbAMJAAACBQNpbnYFA2ludgkAlAoCBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEUY29udGFpbnNOb2RlUkVBRE9OTFkCCGxpc3ROYW1lAmlkCQCUCgIFA25pbAkBDGNvbnRhaW5zTm9kZQIFCGxpc3ROYW1lBQJpZAFpAQppbnNlcnROb2RlAghsaXN0TmFtZQJpZAQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQCUCgIJARFpbnNlcnROb2RlQWN0aW9ucwIFCGxpc3ROYW1lBQJpZAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpkZWxldGVOb2RlAghsaXN0TmFtZQJpZAQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQCUCgIJARFkZWxldGVOb2RlQWN0aW9ucwIFCGxpc3ROYW1lBQJpZAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAED3RhcmdldFB1YmxpY0tleQQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwBQJwawMJAAECBQckbWF0Y2gwAgRVbml0CAUCdHgPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFD3RhcmdldFB1YmxpY0tleZ/L8iE=", "height": 2110495, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GvuF2Yy9orGrMbEDXR5znjDYGTHVTLhSMYqecRHSpKeR Next: DkcmmoXLwve3WkKmc9zAjQwZua9euPjDZmpuYv5MQBTA Diff:
OldNewDifferences
589589 let bK = if (bp)
590590 then nil
591591 else ([DeleteEntry(v(w))] ++ aB(ak, bv))
592- $Tuple2(([IntegerEntry(G(w, bF), bI), IntegerEntry("totalShare", (valueOrElse(getInteger(this, "totalShare"), 0) + bI))] ++ bK), false)
592+ $Tuple2(([IntegerEntry(G(w, bF), bI)] ++ bK), false)
593593 }
594594 else throw("Strict value is not equal to itself.")
595595 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 100000000
77
88 let c = 10
99
1010 let d = 0
1111
1212 let e = 1
1313
1414 let f = makeString(["%s", "epochLength"], a)
1515
1616 let g = makeString(["%s", "currentEpoch"], a)
1717
1818 let h = makeString(["%s", "maxDepth"], a)
1919
2020 let i = makeString(["%s", "votingEmissionCandidateContract"], a)
2121
2222 let j = makeString(["%s", "factoryContract"], a)
2323
2424 let k = makeString(["%s", "boostingContract"], a)
2525
2626 let l = makeString(["%s", "stakingContract"], a)
2727
2828 let m = makeString(["%s", "finalizationStage"], a)
2929
3030 let n = makeString(["%s", "nextPool"], a)
3131
3232 let o = makeString(["%s", "nextUser"], a)
3333
3434 let p = makeString(["%s", "startHeight"], a)
3535
3636 let q = makeString(["%s", "currentEpochUi"], a)
3737
3838 let r = makeString(["%s", "startHeightUi"], a)
3939
4040 func s (t) = makeString(["%s%d", "startHeight", toString(t)], a)
4141
4242
4343 func u (t) = makeString(["%s%d", "finalized", toString(t)], a)
4444
4545
4646 func v (w) = {
4747 let x = w
4848 let y = x._1
4949 let z = x._2
5050 makeString(["%s%s%s", "inList", y, z], a)
5151 }
5252
5353
5454 func A (B,t) = makeString(["%s%s%d", "used", toString(B), toString(t)], a)
5555
5656
5757 func C (w,B,t) = {
5858 let D = w
5959 let y = D._1
6060 let z = D._2
6161 makeString(["%s%s%s%s%d", "vote", y, z, toString(B), toString(t)], a)
6262 }
6363
6464
6565 func E (w,t) = {
6666 let F = w
6767 let y = F._1
6868 let z = F._2
6969 makeString(["%s%s%s%d", "votingResult", y, z, toString(t)], a)
7070 }
7171
7272
7373 func G (w,t) = {
7474 let H = w
7575 let y = H._1
7676 let z = H._2
7777 makeString(["%s%s%s%d", "poolShare", y, z, toString(t)], a)
7878 }
7979
8080
8181 func I (t) = makeString(["%s%d", "totalVotes", toString(t)], a)
8282
8383
8484 func J (B,K,L) = {
8585 let M = makeString(["mandatory ", toString(B), ".", K, " is not defined"], "")
8686 valueOrErrorMessage({
8787 let N = L
8888 if ($isInstanceOf(N, "String"))
8989 then {
9090 let O = N
9191 getString(B, K)
9292 }
9393 else if ($isInstanceOf(N, "Int"))
9494 then {
9595 let P = N
9696 getInteger(B, K)
9797 }
9898 else throw("invalid entry type")
9999 }, M)
100100 }
101101
102102
103103 func Q (B,K) = {
104104 let R = J(B, K, "")
105105 if ($isInstanceOf(R, "String"))
106106 then R
107107 else throw(($getType(J(B, K, "")) + " couldn't be cast to String"))
108108 }
109109
110110
111111 func S (B,K) = {
112112 let R = J(B, K, 0)
113113 if ($isInstanceOf(R, "Int"))
114114 then R
115115 else throw(($getType(J(B, K, 0)) + " couldn't be cast to Int"))
116116 }
117117
118118
119119 func T (w) = ((w._1 + a) + w._2)
120120
121121
122122 func U (O) = {
123123 let V = split(O, a)
124124 if ((size(V) == 2))
125125 then $Tuple2(V[0], V[1])
126126 else throw("invalid pool string")
127127 }
128128
129129
130130 func W (y,z) = {
131131 func X (Y) = ("%s%s%s__mappings__baseAsset2internalId__" + Y)
132132
133133 func Z (aa,ab) = (((("%d%d%s%s__" + toString(aa)) + "__") + toString(ab)) + "__mappings__poolAssets2PoolContract")
134134
135135 func ac (ad) = (("%s%s%s__" + ad) + "__mappings__poolContract2LpAsset")
136136
137137 let ae = addressFromStringValue(Q(this, j))
138138 let af = S(ae, X(y))
139139 let ag = S(ae, X(z))
140140 let ad = Q(ae, Z(af, ag))
141141 let ah = Q(ae, ac(ad))
142142 ah
143143 }
144144
145145
146146 func ai (w) = {
147147 let aj = w
148148 let y = aj._1
149149 let z = aj._2
150150 let ae = addressFromStringValue(Q(this, j))
151151 let R = invoke(ae, "checkWxEmissionPoolLabel", [y, z], nil)
152152 if ($isInstanceOf(R, "Boolean"))
153153 then R
154154 else throw(($getType(invoke(ae, "checkWxEmissionPoolLabel", [y, z], nil)) + " couldn't be cast to Boolean"))
155155 }
156156
157157
158158 let ak = "pools"
159159
160160 func al (w) = {
161161 let am = w
162162 let y = am._1
163163 let z = am._2
164164 makeString(["votes", y, z], a)
165165 }
166166
167167
168168 func an (ao) = {
169169 let ap = if ((ao == ak))
170170 then "%s%s"
171171 else "%s%s%s%s"
172172 makeString([ap, ao, "head"], a)
173173 }
174174
175175
176176 func aq (ao) = {
177177 let ap = if ((ao == ak))
178178 then "%s%s"
179179 else "%s%s%s%s"
180180 makeString([ap, ao, "size"], a)
181181 }
182182
183183
184184 func ar (ao,as) = {
185185 let ap = if ((ao == ak))
186186 then "%s%s%s%s"
187187 else "%s%s%s%s%s"
188188 makeString([ap, ao, as, "prev"], a)
189189 }
190190
191191
192192 func at (ao,as) = {
193193 let ap = if ((ao == ak))
194194 then "%s%s%s%s"
195195 else "%s%s%s%s%s"
196196 makeString([ap, ao, as, "next"], a)
197197 }
198198
199199
200200 func au (ao,as) = {
201201 let av = getString(this, an(ao))
202202 let aw = getString(this, ar(ao, as))
203203 let ax = getString(this, at(ao, as))
204204 if (if ((as == valueOrElse(av, "")))
205205 then true
206206 else (aw != unit))
207207 then true
208208 else (ax != unit)
209209 }
210210
211211
212212 func ay (ao,as) = {
213213 let av = getString(this, an(ao))
214214 let az = valueOrElse(getInteger(this, aq(ao)), 0)
215215 let aA = if (!(au(ao, as)))
216216 then true
217217 else throw("Node exists")
218218 if ((aA == aA))
219219 then (([IntegerEntry(aq(ao), (az + 1))] ++ (if ((av != unit))
220220 then [StringEntry(at(ao, as), value(av)), StringEntry(ar(ao, value(av)), as)]
221221 else nil)) ++ [StringEntry(an(ao), as)])
222222 else throw("Strict value is not equal to itself.")
223223 }
224224
225225
226226 func aB (ao,as) = {
227227 let av = getString(this, an(ao))
228228 let az = valueOrElse(getInteger(this, aq(ao)), 0)
229229 let aw = getString(this, ar(ao, as))
230230 let ax = getString(this, at(ao, as))
231231 ([IntegerEntry(aq(ao), (az - 1))] ++ (if (if ((aw != unit))
232232 then (ax != unit)
233233 else false)
234234 then [StringEntry(at(ao, value(aw)), value(ax)), StringEntry(ar(ao, value(ax)), value(aw)), DeleteEntry(ar(ao, as)), DeleteEntry(at(ao, as))]
235235 else if ((ax != unit))
236236 then [StringEntry(an(ao), value(ax)), DeleteEntry(at(ao, as)), DeleteEntry(ar(ao, value(ax)))]
237237 else if ((aw != unit))
238238 then [DeleteEntry(ar(ao, as)), DeleteEntry(at(ao, value(aw)))]
239239 else if ((as == valueOrElse(av, "")))
240240 then [DeleteEntry(an(ao))]
241241 else throw(((("invalid node: " + ao) + ".") + as))))
242242 }
243243
244244
245245 func aC () = "%s__managerPublicKey"
246246
247247
248248 func aD () = "%s__pendingManagerPublicKey"
249249
250250
251251 func aE () = {
252252 let N = getString(aC())
253253 if ($isInstanceOf(N, "String"))
254254 then {
255255 let aF = N
256256 fromBase58String(aF)
257257 }
258258 else if ($isInstanceOf(N, "Unit"))
259259 then unit
260260 else throw("Match error")
261261 }
262262
263263
264264 func aG () = {
265265 let N = getString(aD())
266266 if ($isInstanceOf(N, "String"))
267267 then {
268268 let aF = N
269269 fromBase58String(aF)
270270 }
271271 else if ($isInstanceOf(N, "Unit"))
272272 then unit
273273 else throw("Match error")
274274 }
275275
276276
277277 let aH = throw("Permission denied")
278278
279279 func aI (aJ) = if ((aJ.caller == this))
280280 then true
281281 else aH
282282
283283
284284 func aK (aJ) = {
285285 let N = aE()
286286 if ($isInstanceOf(N, "ByteVector"))
287287 then {
288288 let aL = N
289289 if ((aJ.callerPublicKey == aL))
290290 then true
291291 else aH
292292 }
293293 else if ($isInstanceOf(N, "Unit"))
294294 then aI(aJ)
295295 else throw("Match error")
296296 }
297297
298298
299299 @Callable(aJ)
300300 func setManager (aM) = {
301301 let aN = aK(aJ)
302302 if ((aN == aN))
303303 then {
304304 let aO = fromBase58String(aM)
305305 if ((aO == aO))
306306 then [StringEntry(aD(), aM)]
307307 else throw("Strict value is not equal to itself.")
308308 }
309309 else throw("Strict value is not equal to itself.")
310310 }
311311
312312
313313
314314 @Callable(aJ)
315315 func confirmManager () = {
316316 let aP = aG()
317317 let aQ = if (isDefined(aP))
318318 then true
319319 else throw("No pending manager")
320320 if ((aQ == aQ))
321321 then {
322322 let aR = if ((aJ.callerPublicKey == value(aP)))
323323 then true
324324 else throw("You are not pending manager")
325325 if ((aR == aR))
326326 then [StringEntry(aC(), toBase58String(value(aP))), DeleteEntry(aD())]
327327 else throw("Strict value is not equal to itself.")
328328 }
329329 else throw("Strict value is not equal to itself.")
330330 }
331331
332332
333333
334334 @Callable(aJ)
335335 func getUserGwxAmountAtHeight (aS,aT) = {
336336 let aU = valueOrErrorMessage(addressFromString(Q(this, k)), "invalid boosting contract address")
337337 $Tuple2(nil, {
338338 let R = invoke(aU, "getUserGwxAmountAtHeightREADONLY", [aS, aT], nil)
339339 if ($isInstanceOf(R, "Int"))
340340 then R
341341 else throw(($getType(invoke(aU, "getUserGwxAmountAtHeightREADONLY", [aS, aT], nil)) + " couldn't be cast to Int"))
342342 })
343343 }
344344
345345
346346
347347 @Callable(aJ)
348348 func constructor (ae,aV,aW,aX,aY) = {
349349 let aZ = [aK(aJ), if ((addressFromString(ae) != unit))
350350 then true
351351 else "invalid factory contract address", if ((addressFromString(aV) != unit))
352352 then true
353353 else "invalid voting emission candidate contract address", if ((addressFromString(aW) != unit))
354354 then true
355355 else "invalid boosting contract address", if ((addressFromString(aX) != unit))
356356 then true
357357 else "invalid staking contract address", if ((aY > 0))
358358 then true
359359 else throw("invalid epoch length")]
360360 if ((aZ == aZ))
361361 then $Tuple2([StringEntry(j, ae), StringEntry(i, aV), StringEntry(k, aW), StringEntry(l, aX), IntegerEntry(f, aY)], unit)
362362 else throw("Strict value is not equal to itself.")
363363 }
364364
365365
366366
367367 @Callable(aJ)
368368 func create (y,z) = {
369369 let ba = [if ((toBase58String(aJ.caller.bytes) == valueOrElse(getString(this, i), "")))
370370 then true
371371 else aK(aJ)]
372372 if ((ba == ba))
373373 then {
374374 let w = $Tuple2(y, z)
375375 let bb = ([BooleanEntry(v(w), true)] ++ ay(ak, T(w)))
376376 let bc = (getInteger(this, g) == unit)
377377 let bd = if (bc)
378378 then {
379379 let t = 0
380380 [IntegerEntry(g, t), IntegerEntry(s(t), height), IntegerEntry(p, height), IntegerEntry(q, t), IntegerEntry(r, height)]
381381 }
382382 else nil
383383 $Tuple2((bb ++ bd), unit)
384384 }
385385 else throw("Strict value is not equal to itself.")
386386 }
387387
388388
389389
390390 @Callable(aJ)
391391 func vote (y,z,be) = {
392392 let w = $Tuple2(y, z)
393393 let t = valueOrElse(getInteger(this, g), 0)
394394 let bf = S(this, s(t))
395395 let aY = S(this, f)
396396 let bg = (bf + aY)
397397 let bh = getInteger(this, m)
398398 let bi = valueOrElse(getInteger(this, A(aJ.caller, t)), 0)
399399 let bj = valueOrElse(getInteger(this, C(w, aJ.caller, t)), 0)
400400 let bk = valueOrElse(getInteger(this, E(w, t)), 0)
401401 let bl = valueOrElse(getInteger(this, I(t)), 0)
402402 let bm = {
403403 let R = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(aJ.caller.bytes), bg], nil)
404404 if ($isInstanceOf(R, "Int"))
405405 then R
406406 else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [toBase58String(aJ.caller.bytes), bg], nil)) + " couldn't be cast to Int"))
407407 }
408408 let bn = (bm - bi)
409409 let bo = (bj + be)
410410 let bp = ai(w)
411411 let ba = [if ((getBoolean(v(w)) != unit))
412412 then true
413413 else throw("invalid assets"), if ((bg > height))
414414 then true
415415 else throw("invalid height"), if ((bh == unit))
416416 then true
417417 else throw("finalization in progress"), if ((bm > 0))
418418 then true
419419 else throw("you do not have gWX"), if (if ((be > 0))
420420 then (bn >= be)
421421 else false)
422422 then true
423423 else throw("invalid amount"), if (bp)
424424 then true
425425 else throw("pool hasn't WX_EMISSION label")]
426426 if ((ba == ba))
427427 then {
428428 let bq = al(w)
429429 let br = toString(aJ.caller)
430430 let bs = if (au(bq, br))
431431 then nil
432432 else ay(bq, br)
433433 $Tuple2(([IntegerEntry(A(aJ.caller, t), (bi + be)), IntegerEntry(C(w, aJ.caller, t), bo), IntegerEntry(E(w, t), (bk + be)), IntegerEntry(I(t), (bl + be))] ++ bs), unit)
434434 }
435435 else throw("Strict value is not equal to itself.")
436436 }
437437
438438
439439
440440 @Callable(aJ)
441441 func cancelVote (y,z) = {
442442 let w = $Tuple2(y, z)
443443 let t = valueOrElse(getInteger(this, g), 0)
444444 let bf = S(this, s(t))
445445 let aY = S(this, f)
446446 let bg = (bf + aY)
447447 let bh = getInteger(this, m)
448448 let bi = valueOrElse(getInteger(this, A(aJ.caller, t)), 0)
449449 let bj = valueOrElse(getInteger(this, C(w, aJ.caller, t)), 0)
450450 let bk = valueOrElse(getInteger(this, E(w, t)), 0)
451451 let bl = valueOrElse(getInteger(this, I(t)), 0)
452452 let ba = [if ((getBoolean(v(w)) != unit))
453453 then true
454454 else throw("invalid assets"), if ((bg > height))
455455 then true
456456 else throw("invalid height"), if ((bh == unit))
457457 then true
458458 else throw("finalization in progress"), if ((bj > 0))
459459 then true
460460 else throw("no vote")]
461461 if ((ba == ba))
462462 then {
463463 let bq = al(w)
464464 let br = toString(aJ.caller)
465465 $Tuple2(([IntegerEntry(A(aJ.caller, t), max([(bi - bj), 0])), DeleteEntry(C(w, aJ.caller, t)), IntegerEntry(E(w, t), (bk - bj)), IntegerEntry(I(t), (bl - bj))] ++ aB(bq, br)), unit)
466466 }
467467 else throw("Strict value is not equal to itself.")
468468 }
469469
470470
471471
472472 @Callable(aJ)
473473 func setEpochLength (bt) = {
474474 let aZ = [aK(aJ), if ((bt > 0))
475475 then true
476476 else throw("invalid epoch length")]
477477 if ((aZ == aZ))
478478 then $Tuple2([IntegerEntry(f, bt)], unit)
479479 else throw("Strict value is not equal to itself.")
480480 }
481481
482482
483483
484484 @Callable(aJ)
485485 func setMaxDepth (bu) = {
486486 let aZ = [aK(aJ), if ((bu > 0))
487487 then true
488488 else throw("invalid max depth")]
489489 if ((aZ == aZ))
490490 then $Tuple2([IntegerEntry(h, bu)], unit)
491491 else throw("Strict value is not equal to itself.")
492492 }
493493
494494
495495
496496 @Callable(aJ)
497497 func processVoteINTERNAL (bv,br) = {
498498 let aN = aI(aJ)
499499 if ((aN == aN))
500500 then {
501501 let aS = valueOrErrorMessage(addressFromString(br), ("processVoteINTERNAL: invalid user address " + br))
502502 let t = S(this, g)
503503 let bw = (t - 1)
504504 let aY = S(this, f)
505505 let bf = S(this, s(t))
506506 let bg = (bf + aY)
507507 let bx = S(this, s(bw))
508508 let by = (bx + aY)
509509 let bz = if ((bw >= 0))
510510 then true
511511 else throw("processVoteINTERNAL: invalid previous epoch")
512512 if ((bz == bz))
513513 then {
514514 let w = U(bv)
515515 let bA = w
516516 let y = bA._1
517517 let z = bA._2
518518 let bp = ai(w)
519519 let bm = {
520520 let R = invoke(this, "getUserGwxAmountAtHeight", [br, bg], nil)
521521 if ($isInstanceOf(R, "Int"))
522522 then R
523523 else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [br, bg], nil)) + " couldn't be cast to Int"))
524524 }
525525 let bB = {
526526 let R = invoke(this, "getUserGwxAmountAtHeight", [br, by], nil)
527527 if ($isInstanceOf(R, "Int"))
528528 then R
529529 else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [br, by], nil)) + " couldn't be cast to Int"))
530530 }
531531 let bl = valueOrElse(getInteger(I(t)), 0)
532532 let bC = valueOrElse(getInteger(E(w, t)), 0)
533533 let bD = valueOrErrorMessage(getInteger(C(w, aS, bw)), (((("processVoteINTERNAL " + bv) + " ") + br) + ": no previous vote"))
534534 let bi = valueOrElse(getInteger(this, A(aS, t)), 0)
535535 let bo = fraction(bD, bm, bB)
536536 let bE = if (if ((bo > 0))
537537 then bp
538538 else false)
539539 then [IntegerEntry(C(w, aS, t), bo), IntegerEntry(I(t), (bl + bo)), IntegerEntry(E(w, t), (bC + bo)), IntegerEntry(A(aS, t), (bi + bo))]
540540 else aB(al(w), br)
541541 $Tuple2(bE, unit)
542542 }
543543 else throw("Strict value is not equal to itself.")
544544 }
545545 else throw("Strict value is not equal to itself.")
546546 }
547547
548548
549549
550550 @Callable(aJ)
551551 func processPoolINTERNAL (bv) = {
552552 let aN = aI(aJ)
553553 if ((aN == aN))
554554 then {
555555 let bF = (S(this, g) - 1)
556556 let bz = if ((bF >= 0))
557557 then true
558558 else throw("processPoolINTERNAL: invalid target epoch")
559559 if ((bz == bz))
560560 then {
561561 let w = U(bv)
562562 let bG = w
563563 let y = bG._1
564564 let z = bG._2
565565 let aX = addressFromStringValue(Q(this, l))
566566 let ae = addressFromStringValue(Q(this, j))
567567 let ah = W(y, z)
568568 let bH = {
569569 let R = invoke(aX, "usersListTraversal", [ah], nil)
570570 if ($isInstanceOf(R, "Boolean"))
571571 then R
572572 else throw(($getType(invoke(aX, "usersListTraversal", [ah], nil)) + " couldn't be cast to Boolean"))
573573 }
574574 if ((bH == bH))
575575 then if (bH)
576576 then $Tuple2(nil, true)
577577 else {
578578 let bp = ai(w)
579579 let bl = valueOrElse(getInteger(this, I(bF)), 0)
580580 let bC = valueOrElse(getInteger(this, E(w, bF)), 0)
581581 let bI = if (if ((bl == 0))
582582 then true
583583 else !(bp))
584584 then 0
585585 else fraction(bC, b, bl)
586586 let bJ = invoke(ae, "modifyWeight", [ah, bI], nil)
587587 if ((bJ == bJ))
588588 then {
589589 let bK = if (bp)
590590 then nil
591591 else ([DeleteEntry(v(w))] ++ aB(ak, bv))
592- $Tuple2(([IntegerEntry(G(w, bF), bI), IntegerEntry("totalShare", (valueOrElse(getInteger(this, "totalShare"), 0) + bI))] ++ bK), false)
592+ $Tuple2(([IntegerEntry(G(w, bF), bI)] ++ bK), false)
593593 }
594594 else throw("Strict value is not equal to itself.")
595595 }
596596 else throw("Strict value is not equal to itself.")
597597 }
598598 else throw("Strict value is not equal to itself.")
599599 }
600600 else throw("Strict value is not equal to itself.")
601601 }
602602
603603
604604
605605 @Callable(aJ)
606606 func finalizeHelper () = {
607607 let t = valueOrElse(getInteger(this, g), 0)
608608 let bL = (t - 1)
609609 let bf = S(this, s(t))
610610 let aY = S(this, f)
611611 let bg = (bf + aY)
612612 let bh = getInteger(this, m)
613613 if ((height >= bg))
614614 then {
615615 let bM = (t + 1)
616616 $Tuple2([IntegerEntry(s(bM), height), IntegerEntry(p, height), IntegerEntry(g, bM), IntegerEntry(m, d)], true)
617617 }
618618 else if ((bh == unit))
619619 then $Tuple2(nil, false)
620620 else if ((bh == d))
621621 then {
622622 let bN = getString(n)
623623 let bO = getString(o)
624624 let N = bN
625625 if ($isInstanceOf(N, "Unit"))
626626 then {
627627 let bP = getString(an(ak))
628628 if ($isInstanceOf(bP, "Unit"))
629629 then $Tuple2([IntegerEntry(m, e), DeleteEntry(n), DeleteEntry(o)], true)
630630 else if ($isInstanceOf(bP, "String"))
631631 then {
632632 let bQ = bP
633633 $Tuple2([StringEntry(n, bQ)], true)
634634 }
635635 else throw("Match error")
636636 }
637637 else if ($isInstanceOf(N, "String"))
638638 then {
639639 let bv = N
640640 let w = U(bv)
641641 let bR = {
642642 let bP = bO
643643 if ($isInstanceOf(bP, "Unit"))
644644 then getString(an(al(w)))
645645 else if ($isInstanceOf(bP, "String"))
646646 then {
647647 let bS = bP
648648 let bT = invoke(this, "processVoteINTERNAL", [bv, bS], nil)
649649 if ((bT == bT))
650650 then getString(at(al(w), bS))
651651 else throw("Strict value is not equal to itself.")
652652 }
653653 else throw("Match error")
654654 }
655655 let bP = bR
656656 if ($isInstanceOf(bP, "Unit"))
657657 then {
658658 let bU = getString(at(ak, bv))
659659 let bV = bU
660660 if ($isInstanceOf(bV, "Unit"))
661661 then $Tuple2([IntegerEntry(m, e), DeleteEntry(n), DeleteEntry(o)], true)
662662 else if ($isInstanceOf(bV, "String"))
663663 then {
664664 let aF = bV
665665 $Tuple2([StringEntry(n, aF), DeleteEntry(o)], true)
666666 }
667667 else throw("Match error")
668668 }
669669 else if ($isInstanceOf(bP, "String"))
670670 then {
671671 let bW = bP
672672 $Tuple2([StringEntry(o, bW)], true)
673673 }
674674 else throw("Match error")
675675 }
676676 else throw("Match error")
677677 }
678678 else if ((bh == e))
679679 then {
680680 let bN = getString(n)
681681 let N = bN
682682 if ($isInstanceOf(N, "Unit"))
683683 then {
684684 let bP = getString(an(ak))
685685 if ($isInstanceOf(bP, "Unit"))
686686 then $Tuple2([DeleteEntry(m), BooleanEntry(u(bL), true), IntegerEntry(q, t), IntegerEntry(r, bf)], true)
687687 else if ($isInstanceOf(bP, "String"))
688688 then {
689689 let bX = bP
690690 $Tuple2([StringEntry(n, bX)], true)
691691 }
692692 else throw("Match error")
693693 }
694694 else if ($isInstanceOf(N, "String"))
695695 then {
696696 let bv = N
697697 let bH = {
698698 let R = invoke(this, "processPoolINTERNAL", [bv], nil)
699699 if ($isInstanceOf(R, "Boolean"))
700700 then R
701701 else throw(($getType(invoke(this, "processPoolINTERNAL", [bv], nil)) + " couldn't be cast to Boolean"))
702702 }
703703 if ((bH == bH))
704704 then if (bH)
705705 then $Tuple2(nil, true)
706706 else {
707707 let bU = getString(at(ak, bv))
708708 let bP = bU
709709 if ($isInstanceOf(bP, "Unit"))
710710 then $Tuple2([DeleteEntry(m), BooleanEntry(u(bL), true), IntegerEntry(q, t), IntegerEntry(r, bf), DeleteEntry(n)], true)
711711 else if ($isInstanceOf(bP, "String"))
712712 then {
713713 let bX = bP
714714 $Tuple2([StringEntry(n, bX)], true)
715715 }
716716 else throw("Match error")
717717 }
718718 else throw("Strict value is not equal to itself.")
719719 }
720720 else throw("Match error")
721721 }
722722 else throw("finalization is broken")
723723 }
724724
725725
726726
727727 @Callable(aJ)
728728 func finalizeWrapper (bY) = {
729729 let bZ = {
730730 let R = invoke(this, "finalizeHelper", nil, nil)
731731 if ($isInstanceOf(R, "Boolean"))
732732 then R
733733 else throw(($getType(invoke(this, "finalizeHelper", nil, nil)) + " couldn't be cast to Boolean"))
734734 }
735735 if ((bZ == bZ))
736736 then if (!(bZ))
737737 then if ((bY == 0))
738738 then throw("Current voting is not over yet")
739739 else $Tuple2(nil, unit)
740740 else {
741741 let ca = valueOrElse(getInteger(this, h), c)
742742 if ((ca > bY))
743743 then {
744744 let cb = invoke(this, "finalizeWrapper", [(bY + 1)], nil)
745745 if ((cb == cb))
746746 then $Tuple2(nil, unit)
747747 else throw("Strict value is not equal to itself.")
748748 }
749749 else $Tuple2(nil, unit)
750750 }
751751 else throw("Strict value is not equal to itself.")
752752 }
753753
754754
755755
756756 @Callable(aJ)
757757 func finalize () = {
758758 let cb = invoke(this, "finalizeWrapper", [0], nil)
759759 if ((cb == cb))
760760 then $Tuple2(nil, unit)
761761 else throw("Strict value is not equal to itself.")
762762 }
763763
764764
765765
766766 @Callable(aJ)
767767 func containsNodeREADONLY (ao,as) = $Tuple2(nil, au(ao, as))
768768
769769
770770
771771 @Callable(aJ)
772772 func insertNode (ao,as) = {
773773 let aN = aK(aJ)
774774 if ((aN == aN))
775775 then $Tuple2(ay(ao, as), unit)
776776 else throw("Strict value is not equal to itself.")
777777 }
778778
779779
780780
781781 @Callable(aJ)
782782 func deleteNode (ao,as) = {
783783 let aN = aK(aJ)
784784 if ((aN == aN))
785785 then $Tuple2(aB(ao, as), unit)
786786 else throw("Strict value is not equal to itself.")
787787 }
788788
789789
790790 @Verifier(cc)
791791 func cd () = {
792792 let ce = {
793793 let N = aE()
794794 if ($isInstanceOf(N, "ByteVector"))
795795 then {
796796 let aL = N
797797 aL
798798 }
799799 else if ($isInstanceOf(N, "Unit"))
800800 then cc.senderPublicKey
801801 else throw("Match error")
802802 }
803803 sigVerify(cc.bodyBytes, cc.proofs[0], ce)
804804 }
805805

github/deemru/w8io/873ac7e 
87.55 ms