tx · H21cseDEsB2EbDWJ74fMipXrhU8DK9YtthpqzSiSfEeQ

3NC4yuNEo3Z5VZDacNq9eFzMPg94xCHMZRS:  -0.04300000 Waves

2024.09.27 13:44 [3301934] smart account 3NC4yuNEo3Z5VZDacNq9eFzMPg94xCHMZRS > SELF 0.00000000 Waves

{ "type": 13, "id": "H21cseDEsB2EbDWJ74fMipXrhU8DK9YtthpqzSiSfEeQ", "fee": 4300000, "feeAssetId": null, "timestamp": 1727433877734, "version": 2, "chainId": 84, "sender": "3NC4yuNEo3Z5VZDacNq9eFzMPg94xCHMZRS", "senderPublicKey": "HicNLFvqDeULvqVAGxGmDk2vjsM1NSvfFRpjp3tTqPwF", "proofs": [ "27LYM9fGSMcAPZzevuqZikDensZ1R5JDqa8gv1RLbnT5xbfekc1Mbg5dKRa7Wx4MiyRZtNPkrXAVgR8PZ9Bv9ztY" ], "script": "base64:CAJCCAISBwoFCAgCCAESBwoFCAgCCAESCAoGCAgCAQgBEgYKBAgICAESAwoBAhIAEgMKAQgSBgoECBIBARIECgIIARIATQAHSU5UX01BWAD//////////38ABVdBVkVTAIDC1y8AC01JTl9CQUxBTkNFCQBoAgCgnAEFBVdBVkVTAANTRVACASwAD0JMT0NLX0hBU0hfU0laRQAgABRQVUJMSUNfS0VZX0hBU0hfU0laRQAUAA5ST09UX0hBU0hfU0laRQAgABRXSVRIRFJBV19QUk9PRlNfU0laRQAKABRFVEhfQUREUkVTU19TVFJfU0laRQAoABZNQVhfQ0xfVE9fRUxfVFJBTlNGRVJTABAACXplcm9lc1N0cgKACDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAADGFsbE1pbmVyc0tleQIJYWxsTWluZXJzAA5tYWluQ2hhaW5JZEtleQILbWFpbkNoYWluSWQADmxhc3RDaGFpbklkS2V5AgtsYXN0Q2hhaW5JZAAXZmlyc3RWYWxpZEFsdENoYWluSWRLZXkCFGZpcnN0VmFsaWRBbHRDaGFpbklkAA5taW5lclJld2FyZEtleQILbWluZXJSZXdhcmQACmJsb2NrTWV0YUsCCGJsb2NrXzB4ABFmaW5hbGl6ZWRCbG9ja0tleQIOZmluYWxpemVkQmxvY2sACnRva2VuSWRLZXkCB3Rva2VuSWQAEmVsQnJpZGdlQWRkcmVzc0tleQIPZWxCcmlkZ2VBZGRyZXNzABduYXRpdmVUcmFuc2ZlcnNDb3VudEtleQIUbmF0aXZlVHJhbnNmZXJzQ291bnQBA3BhZAEBaQQBcwkApAMBBQFpBAckbWF0Y2gwCQCxAgEFAXMDCQAAAgABBQckbWF0Y2gwCQCsAgICBzAwMDAwMDAFAXMDCQAAAgACBQckbWF0Y2gwCQCsAgICBjAwMDAwMAUBcwMJAAACAAMFByRtYXRjaDAJAKwCAgIFMDAwMDAFAXMDCQAAAgAEBQckbWF0Y2gwCQCsAgICBDAwMDAFAXMDCQAAAgAFBQckbWF0Y2gwCQCsAgICAzAwMAUBcwMJAAACAAYFByRtYXRjaDAJAKwCAgICMDAFAXMDCQAAAgAHBQckbWF0Y2gwCQCsAgICATAFAXMFAXMAEGRhb0NvbmZpZ0FkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNONWM3RENDR21pY05pSFJHb3VVcDNCYVY2ZThlRFVEbkh3ABdjaXJjdWl0QnJlYWtlckNsb3NlZEtleQIUY2lyY3VpdEJyZWFrZXJDbG9zZWQBFGNpcmN1aXRCcmVha2VyQ2xvc2VkAAMJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUXY2lyY3VpdEJyZWFrZXJDbG9zZWRLZXkGBgkAAgECGWNpcmN1aXQgYnJlYWtlciBpcyBvcGVuZWQBFGJsb2NrRTJDVHJhbnNmZXJzS2V5AQxibG9ja0hhc2hIZXgJAKwCAgISZWxUb0NsVHJhbnNmZXJzXzB4BQxibG9ja0hhc2hIZXgBDGVwb2NoTWV0YUtleQEFZXBvY2gJAKwCAgIGZXBvY2hfCQEDcGFkAQUFZXBvY2gBFGNoYWluRmlyc3RCbG9ja0lkS2V5AQdjaGFpbklkCQCsAgIJAKwCAgIFY2hhaW4JAKQDAQUHY2hhaW5JZAIKRmlyc3RCbG9jawEMY2hhaW5NZXRhS2V5AQdjaGFpbklkCQCsAgICBmNoYWluXwkBA3BhZAEFB2NoYWluSWQBEmNoYWluTGFzdEhlaWdodEtleQIHY2hhaW5JZAVtaW5lcgkArAICCQCsAgIJAKwCAgIGY2hhaW5fCQEDcGFkAQUHY2hhaW5JZAIBXwkApQgBBQVtaW5lcgEUY2hhaW5Gb3JrZWRIZWlnaHRLZXkBB2NoYWluSWQJAKwCAgkArAICAgZjaGFpbl8JAQNwYWQBBQdjaGFpbklkAgxGb3JrZWRIZWlnaHQBDXN1cHBvcnRlcnNLZXkBB2NoYWluSWQJAKwCAgkArAICAgVjaGFpbgkApAMBBQdjaGFpbklkAgpTdXBwb3J0ZXJzARVtaW5lclJld2FyZEFkZHJlc3NLZXkBCW1pbmVyQWRkcgkArAICCQCsAgICBm1pbmVyXwUJbWluZXJBZGRyAg5fUmV3YXJkQWRkcmVzcwEKbWluZXJQa0tleQENcmV3YXJkQWRkcmVzcwkArAICCQCsAgICCG1pbmVyXzB4BQ1yZXdhcmRBZGRyZXNzAgNfUEsBD21pbmVyQ2hhaW5JZEtleQEFbWluZXIJAKwCAgkArAICAgZtaW5lcl8JAKUIAQUFbWluZXICCF9DaGFpbklkABRuYXRpdmVUcmFuc2ZlcnNDb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRduYXRpdmVUcmFuc2ZlcnNDb3VudEtleQAAARFuYXRpdmVUcmFuc2ZlcktleQEFaW5kZXgJAKwCAgIPbmF0aXZlVHJhbnNmZXJfCQCkAwEFBWluZGV4ARVta05hdGl2ZVRyYW5zZmVyRW50cnkDBWluZGV4EGRlc3RFbEFkZHJlc3NIZXgGYW1vdW50CQELU3RyaW5nRW50cnkCCQERbmF0aXZlVHJhbnNmZXJLZXkBBQVpbmRleAkArAICCQCsAgIJAKwCAgICMHgFEGRlc3RFbEFkZHJlc3NIZXgFA1NFUAkApAMBBQZhbW91bnQBFmVuc3VyZUNvcnJlY3RUcmFuc2ZlcnMDEHJlZlRyYW5zZmVySW5kZXgNdHJhbnNmZXJJbmRleAxleHBlY3RSZXdhcmQEDG1heFRyYW5zZmVycwMFDGV4cGVjdFJld2FyZAkAZQIFFk1BWF9DTF9UT19FTF9UUkFOU0ZFUlMAAQUWTUFYX0NMX1RPX0VMX1RSQU5TRkVSUwQPYWN0dWFsVHJhbnNmZXJzCQBlAgUNdHJhbnNmZXJJbmRleAUQcmVmVHJhbnNmZXJJbmRleAQLY2hlY2tOdW1iZXIDCQBmAgUPYWN0dWFsVHJhbnNmZXJzBQxtYXhUcmFuc2ZlcnMJAAIBCQCsAgIJAKwCAgkArAICAg1BbGxvd2VkIG9ubHkgCQCkAwEFDG1heFRyYW5zZmVycwIQIHRyYW5zZmVycywgZ290IAkApAMBBQ9hY3R1YWxUcmFuc2ZlcnMGAwkAAAIFC2NoZWNrTnVtYmVyBQtjaGVja051bWJlcgMJAGcCBQ10cmFuc2ZlckluZGV4BRRuYXRpdmVUcmFuc2ZlcnNDb3VudAkAAgEJAKwCAgkArAICCQCsAgICFUF0dGVtcHQgdG8gdHJhbnNmZXIgIwkApAMBBQ10cmFuc2ZlckluZGV4AhcuIEF2YWlsYWJsZSB0cmFuc2ZlcnM6IAkApAMBBRRuYXRpdmVUcmFuc2ZlcnNDb3VudAYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BCmFtb3VudEd0RXEDAXQEZ3RFcQlxdWV1ZVNpemUDCQBnAggFAXQGYW1vdW50BQRndEVxBgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICFFRyYW5zZmVycmluZyBhbW91bnQgCQCkAwEIBQF0BmFtb3VudAIOIHNob3VsZCBiZSA+PSAJAKQDAQUEZ3RFcQITIGZvciBxdWV1ZSBzaXplIG9mIAkApAMBBQlxdWV1ZVNpemUCFy4gVHJhbnNmZXIgbW9yZSBvciB3YWl0ARFnZW5lcmF0aW5nQmFsYW5jZQEHYWRkcmVzcwgJAO8HAQUHYWRkcmVzcwpnZW5lcmF0aW5nAQljaGFpbk1ldGEBB2NoYWluSWQEAXMJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAQxjaGFpbk1ldGFLZXkBBQdjaGFpbklkBAVpdGVtcwkAtQkCBQFzBQNTRVAJAJQKAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWl0ZW1zAAAJAJEDAgUFaXRlbXMAAQEQbWtDaGFpbk1ldGFFbnRyeQMHY2hhaW5JZA5uZXdDaGFpbkhlaWdodAxibG9ja0hhc2hIZXgJAQtTdHJpbmdFbnRyeQIJAQxjaGFpbk1ldGFLZXkBBQdjaGFpbklkCQCsAgIJAKwCAgkApAMBBQ5uZXdDaGFpbkhlaWdodAUDU0VQBQxibG9ja0hhc2hIZXgAC21haW5DaGFpbklkCQELdmFsdWVPckVsc2UCCQCfCAEFDm1haW5DaGFpbklkS2V5AAAACyR0MDUyOTg1MzY0CQEJY2hhaW5NZXRhAQULbWFpbkNoYWluSWQAD21haW5DaGFpbkhlaWdodAgFCyR0MDUyOTg1MzY0Al8xABJtYWluQ2hhaW5MYXN0QmxvY2sIBQskdDA1Mjk4NTM2NAJfMgEJZXBvY2hNZXRhAQVlcG9jaAQHJG1hdGNoMAkAoggBCQEMZXBvY2hNZXRhS2V5AQUFZXBvY2gDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBAlmcmFnbWVudHMJALUJAgUBcwUDU0VQCQCVCgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUJZnJhZ21lbnRzAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlmcmFnbWVudHMAAQkAkQMCBQlmcmFnbWVudHMAAgUEdW5pdAALJHQwNTU5NTU3MTkEByRtYXRjaDAJAQllcG9jaE1ldGEBBQZoZWlnaHQDCQABAgUHJG1hdGNoMAIWKEFkZHJlc3MsIEludCwgU3RyaW5nKQQBbQUHJG1hdGNoMAUBbQkAlAoCBQR1bml0AAAADnRoaXNFcG9jaE1pbmVyCAULJHQwNTU5NTU3MTkCXzEADHRoaXNFcG9jaFJlZggFCyR0MDU1OTU1NzE5Al8yAAxhbGxNaW5lcnNTdHIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUMYWxsTWluZXJzS2V5AgAACWFsbE1pbmVycwQHJG1hdGNoMAUMYWxsTWluZXJzU3RyAwkAAAICAAUHJG1hdGNoMAUDbmlsAwkAAQIFByRtYXRjaDACBlN0cmluZwQDcmF3BQckbWF0Y2gwCQC8CQIFA3JhdwUDU0VQCQACAQILTWF0Y2ggZXJyb3IBCWJsb2NrTWV0YQEHYmxvY2tJZAQEbWV0YQkBEUBleHRyTmF0aXZlKDEwNTcpAQkArAICBQpibG9ja01ldGFLBQdibG9ja0lkBAhtZXRhU2l6ZQkAyAEBBQRtZXRhBAtibG9ja0hlaWdodAkAsQkBBQRtZXRhBApibG9ja0Vwb2NoCQCyCQIFBG1ldGEACAQLYmxvY2tQYXJlbnQJAMkBAgkAygECBQRtZXRhABAFD0JMT0NLX0hBU0hfU0laRQQHY2hhaW5JZAkAsgkCBQRtZXRhCQBkAgAQBQ9CTE9DS19IQVNIX1NJWkUECmJhc2VPZmZzZXQJAGQCABgFD0JMT0NLX0hBU0hfU0laRQQOcmVtYWluaW5nQnl0ZXMJAGUCBQhtZXRhU2l6ZQUKYmFzZU9mZnNldAQUZTJjVHJhbnNmZXJzUm9vdEhhc2gDCQBnAgUOcmVtYWluaW5nQnl0ZXMFDlJPT1RfSEFTSF9TSVpFCQDJAQIJAMoBAgUEbWV0YQUKYmFzZU9mZnNldAUOUk9PVF9IQVNIX1NJWkUBAAQUbGFzdEMyRVRyYW5zZmVySW5kZXgDAwkAAAIFDnJlbWFpbmluZ0J5dGVzAAgGCQBmAgUOcmVtYWluaW5nQnl0ZXMFDlJPT1RfSEFTSF9TSVpFCQCyCQIFBG1ldGEJAGQCBQpiYXNlT2Zmc2V0CQDIAQEFFGUyY1RyYW5zZmVyc1Jvb3RIYXNoAP///////////wEJAJgKBgULYmxvY2tIZWlnaHQFCmJsb2NrRXBvY2gFC2Jsb2NrUGFyZW50BQdjaGFpbklkBRRlMmNUcmFuc2ZlcnNSb290SGFzaAUUbGFzdEMyRVRyYW5zZmVySW5kZXgBEG1rQmxvY2tNZXRhRW50cnkGDGJsb2NrSGFzaEhleAtibG9ja0hlaWdodA5ibG9ja1BhcmVudEhleAdjaGFpbklkF2UyY1RyYW5zZmVyc1Jvb3RIYXNoSGV4FGxhc3RDMkVUcmFuc2ZlckluZGV4BBllMmNUcmFuc2ZlcnNSb290SGFzaEJ5dGVzCQDdBAEFF2UyY1RyYW5zZmVyc1Jvb3RIYXNoSGV4BBFyb290SGFzaEJ5dGVzU2l6ZQkAyAEBBRllMmNUcmFuc2ZlcnNSb290SGFzaEJ5dGVzBA1jaGVja1Jvb3RIYXNoAwMJAAACBRFyb290SGFzaEJ5dGVzU2l6ZQAABgkAAAIFEXJvb3RIYXNoQnl0ZXNTaXplBQ5ST09UX0hBU0hfU0laRQYJAAIBCQCsAgIJAKwCAgkArAICAiVUcmFuc2ZlcnMgcm9vdCBoYXNoIHNob3VsZCBoYXZlIDAgb3IgCQCkAwEFDlJPT1RfSEFTSF9TSVpFAgwgYnl0ZXMsIGdvdCAJAKQDAQURcm9vdEhhc2hCeXRlc1NpemUDCQAAAgUNY2hlY2tSb290SGFzaAUNY2hlY2tSb290SGFzaAQOYmxvY2tNZXRhQnl0ZXMJAMsBAgkAywECCQDLAQIJAMsBAgkAywECCQCaAwEFC2Jsb2NrSGVpZ2h0CQCaAwEFBmhlaWdodAkA3QQBBQ5ibG9ja1BhcmVudEhleAkAmgMBBQdjaGFpbklkBRllMmNUcmFuc2ZlcnNSb290SGFzaEJ5dGVzCQCaAwEFFGxhc3RDMkVUcmFuc2ZlckluZGV4CQELQmluYXJ5RW50cnkCCQCsAgIFCmJsb2NrTWV0YUsFDGJsb2NrSGFzaEhleAUOYmxvY2tNZXRhQnl0ZXMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDGxhc3RIZWlnaHRCeQIFbWluZXIHY2hhaW5JZAQHJG1hdGNoMAkAnwgBCQESY2hhaW5MYXN0SGVpZ2h0S2V5AgUHY2hhaW5JZAUFbWluZXIDCQABAgUHJG1hdGNoMAIDSW50BAFoBQckbWF0Y2gwBQFoBAlibG9ja0hhc2gJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkArAICCQCsAgICBWNoYWluCQCkAwEFB2NoYWluSWQCC0xhc3RNaW5lZEJ5CQClCAEFBW1pbmVyCAkBCWJsb2NrTWV0YQEFCWJsb2NrSGFzaAJfMQALJHQwNzc1OTg2OTQECWhpdFNvdXJjZQQHJG1hdGNoMAgFCWxhc3RCbG9jawN2cmYDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQDdnJmBQckbWF0Y2gwBQN2cmYIBQlsYXN0QmxvY2sTZ2VuZXJhdGlvblNpZ25hdHVyZQoBDHByb2Nlc3NNaW5lcgIEcHJldgVtaW5lcgQLJHQwODAyNjgwODkFBHByZXYECXByZXZNaW5lcggFCyR0MDgwMjY4MDg5Al8xBBBwcmV2VG90YWxCYWxhbmNlCAULJHQwODAyNjgwODkCXzIECXByZXZEZWxheQgFCyR0MDgwMjY4MDg5Al8zBApwcmV2TWluZXJzCAULJHQwODAyNjgwODkCXzQEDG1pbmVyQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQUFbWluZXIED3dhdmVzR2VuQmFsYW5jZQgJAO8HAQUMbWluZXJBZGRyZXNzCmdlbmVyYXRpbmcEDG1pbmVyQmFsYW5jZQkBEWdlbmVyYXRpbmdCYWxhbmNlAQUMbWluZXJBZGRyZXNzAwMJAGYCBQtNSU5fQkFMQU5DRQUPd2F2ZXNHZW5CYWxhbmNlBgkAZwIAAAUMbWluZXJCYWxhbmNlBQRwcmV2BAluZXh0RGVsYXkJAIUHAgUMbWluZXJBZGRyZXNzBQxtaW5lckJhbGFuY2UDCQBmAgUJcHJldkRlbGF5BQluZXh0RGVsYXkJAJYKBAUFbWluZXIJAGQCBRBwcmV2VG90YWxCYWxhbmNlBQxtaW5lckJhbGFuY2UFCW5leHREZWxheQkAzQgCBQpwcmV2TWluZXJzBQVtaW5lcgkAlgoEBQlwcmV2TWluZXIJAGQCBRBwcmV2VG90YWxCYWxhbmNlBQxtaW5lckJhbGFuY2UFCXByZXZEZWxheQkAzQgCBQpwcmV2TWluZXJzBQVtaW5lcgoAAiRsBQlhbGxNaW5lcnMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQCAAAABQdJTlRfTUFYBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDHByb2Nlc3NNaW5lcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyABFjb21wdXRlZEdlbmVyYXRvcggFCyR0MDc3NTk4Njk0Al8xABRjb21wdXRlZFRvdGFsQmFsYW5jZQgFCyR0MDc3NTk4Njk0Al8yAAskdDA4Njk2ODc2MgkBCWJsb2NrTWV0YQEFEm1haW5DaGFpbkxhc3RCbG9jawAMbWNsYklnbm9yZWQxCAULJHQwODY5Njg3NjICXzEADm1haW5DaGFpbkVwb2NoCAULJHQwODY5Njg3NjICXzIBG2NhbGN1bGF0ZUZpbmFsaXplZEJsb2NrSGFzaAMIY3VyTWluZXIMY3VyUHJldkVwb2NoEGN1ckxhc3RCbG9ja0hhc2gEC29mZnNldHNfMTAwCQC8CQICZDo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6OjoCAAQLaGFsZkJhbGFuY2UJAGkCBRRjb21wdXRlZFRvdGFsQmFsYW5jZQACCgEEc3RlcAIEcHJldgRuZXh0BAskdDA5MTI4OTE5MgUEcHJldgQJdGhpc0Vwb2NoCAULJHQwOTEyODkxOTICXzEEDm1heWJlU2FmZUVwb2NoCAULJHQwOTEyODkxOTICXzIEDHRvdGFsQmFsYW5jZQgFCyR0MDkxMjg5MTkyAl8zBApwcmV2TWluZXJzCAULJHQwOTEyODkxOTICXzQEByRtYXRjaDAFDm1heWJlU2FmZUVwb2NoAwkAAQIFByRtYXRjaDACBFVuaXQECyR0MDkyNTA5NDE2AwkAAAIFCXRoaXNFcG9jaAUGaGVpZ2h0CQCVCgMFCGN1ck1pbmVyBQxjdXJQcmV2RXBvY2gFEGN1ckxhc3RCbG9ja0hhc2gJAQV2YWx1ZQEJAQllcG9jaE1ldGEBBQl0aGlzRXBvY2gEBW1pbmVyCAULJHQwOTI1MDk0MTYCXzEECXByZXZFcG9jaAgFCyR0MDkyNTA5NDE2Al8yBA1sYXN0QmxvY2tIYXNoCAULJHQwOTI1MDk0MTYCXzMDAwkAAAIFCXByZXZFcG9jaAAABgkAZwIJAGUCBQZoZWlnaHQFCXRoaXNFcG9jaABkCQCWCgQFCXRoaXNFcG9jaAUNbGFzdEJsb2NrSGFzaAUMdG90YWxCYWxhbmNlBQlhbGxNaW5lcnMECyR0MDk1NzA5NzcyAwkBD2NvbnRhaW5zRWxlbWVudAIFCnByZXZNaW5lcnMFBW1pbmVyCQCUCgIFDHRvdGFsQmFsYW5jZQUKcHJldk1pbmVycwkAlAoCCQBkAgUMdG90YWxCYWxhbmNlCQERZ2VuZXJhdGluZ0JhbGFuY2UBBQVtaW5lcgkAzAgCBQVtaW5lcgUKcHJldk1pbmVycwQPbmV3VG90YWxCYWxhbmNlCAULJHQwOTU3MDk3NzICXzEECW5ld01pbmVycwgFCyR0MDk1NzA5NzcyAl8yAwkAZgIFD25ld1RvdGFsQmFsYW5jZQULaGFsZkJhbGFuY2UJAJYKBAUJdGhpc0Vwb2NoBQ1sYXN0QmxvY2tIYXNoBQ9uZXdUb3RhbEJhbGFuY2UFCWFsbE1pbmVycwkAlgoEBQlwcmV2RXBvY2gFBHVuaXQFD25ld1RvdGFsQmFsYW5jZQUJbmV3TWluZXJzBQRwcmV2BA0kdDAxMDAwNTEwMTAxCgACJGwFC29mZnNldHNfMTAwCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEBQZoZWlnaHQFBHVuaXQAAAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQRzdGVwAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhVMaXN0IHNpemUgZXhjZWVkcyAxMDAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZAQNZmFsbGJhY2tFcG9jaAgFDSR0MDEwMDA1MTAxMDECXzEEFWZpbmFsaXplZEJsb2NrSGFzaE9wdAgFDSR0MDEwMDA1MTAxMDECXzIEByRtYXRjaDAFFWZpbmFsaXplZEJsb2NrSGFzaE9wdAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEEmZpbmFsaXplZEJsb2NrSGFzaAUHJG1hdGNoMAUSZmluYWxpemVkQmxvY2tIYXNoCAkBBXZhbHVlAQkBCWVwb2NoTWV0YQEFDWZhbGxiYWNrRXBvY2gCXzMBEXN1cHBvcnRpbmdCYWxhbmNlAQdjaGFpbklkCgEKYWRkQmFsYW5jZQIDYWNjDGdlbmVyYXRvclN0cgQNJHQwMTAzNzExMDQwNwUDYWNjBAx0b3RhbEJhbGFuY2UIBQ0kdDAxMDM3MTEwNDA3Al8xBApnZW5lcmF0b3JzCAUNJHQwMTAzNzExMDQwNwJfMgQJZ2VuZXJhdG9yCQERQGV4dHJOYXRpdmUoMTA2MikBBQxnZW5lcmF0b3JTdHIDCQEPY29udGFpbnNFbGVtZW50AgUKZ2VuZXJhdG9ycwUJZ2VuZXJhdG9yBQNhY2MEB2JhbGFuY2UJARFnZW5lcmF0aW5nQmFsYW5jZQEFCWdlbmVyYXRvcgkAlAoCCQBkAgUMdG90YWxCYWxhbmNlBQdiYWxhbmNlCQDNCAIFCmdlbmVyYXRvcnMFCWdlbmVyYXRvcgQNYWxsR2VuZXJhdG9ycwkAvAkCCQERQGV4dHJOYXRpdmUoMTA1OCkBCQENc3VwcG9ydGVyc0tleQEFB2NoYWluSWQFA1NFUAQNJHQwMTA3MjkxMDc5NAoAAiRsBQ1hbGxHZW5lcmF0b3JzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCAAAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKYWRkQmFsYW5jZQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIVTGlzdCBzaXplIGV4Y2VlZHMgMTAwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQEB2JhbGFuY2UIBQ0kdDAxMDcyOTEwNzk0Al8xBAJfZwgFDSR0MDEwNzI5MTA3OTQCXzIFB2JhbGFuY2UBD2lzQ29udHJhY3RTZXR1cAAJAQlpc0RlZmluZWQBCQCfCAEFDm1pbmVyUmV3YXJkS2V5ARFlbnN1cmVNaW5pbmdFcG9jaAEJZ2VuZXJhdG9yAwkBAiE9AgkApQgBBQlnZW5lcmF0b3IFEWNvbXB1dGVkR2VuZXJhdG9yCQACAQkArAICCQCsAgIJAKwCAgkArAICCQDYBAEIBQlnZW5lcmF0b3IFYnl0ZXMCGyBpcyBub3QgYWxsb3dlZCB0byBtaW5lIGluIAkApAMBBQZoZWlnaHQCESBlcG9jaC4gRXhwZWN0ZWQgBRFjb21wdXRlZEdlbmVyYXRvcgUEdW5pdAESaXNSZWZlcmVuY2VDb3JyZWN0AglyZWZlcmVuY2UJbGFzdEJsb2NrAwkAAAIFCXJlZmVyZW5jZQUJbGFzdEJsb2NrBQR1bml0CQACAQkArAICCQCsAgIJAKwCAgIwRXhwZWN0ZWQgYSByZWZlcmVuY2UgdG8gdGhlIGNoYWluIGxhc3QgYmxvY2s6IDB4BQlsYXN0QmxvY2sCCS4gR290OiAweAUJcmVmZXJlbmNlAQ9jaGFpbklzSW5hY3RpdmUBB2NoYWluSWQEDGZpcnN0QmxvY2tJZAkBEUBleHRyTmF0aXZlKDEwNTgpAQkBFGNoYWluRmlyc3RCbG9ja0lkS2V5AQUHY2hhaW5JZAQUZmlyc3RWYWxpZEFsdENoYWluSWQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUXZmlyc3RWYWxpZEFsdENoYWluSWRLZXkAAAMJAGYCBRRmaXJzdFZhbGlkQWx0Q2hhaW5JZAUHY2hhaW5JZAYJAGYCCAkBCWJsb2NrTWV0YQEJARFAZXh0ck5hdGl2ZSgxMDU4KQEFEWZpbmFsaXplZEJsb2NrS2V5Al8xCAkBCWJsb2NrTWV0YQEFDGZpcnN0QmxvY2tJZAJfMQEMbWluZXJDaGFpbklkAQVtaW5lcgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEPbWluZXJDaGFpbklkS2V5AQUFbWluZXIJAJ8IAQkArAICAgljaGFpbklkT2YJAKUIAQUFbWluZXIBHWVuc3VyZUV4cGVjdGVkT3JJbmFjdGl2ZUNoYWluAwlnZW5lcmF0b3IPZXhwZWN0ZWRDaGFpbklkEGNoZWNrSGVpZ2h0QmxvY2sED2hlaWdodElzQ29ycmVjdAQHJG1hdGNoMAUQY2hlY2tIZWlnaHRCbG9jawMJAAECBQckbWF0Y2gwAgZTdHJpbmcECWJsb2NrSGFzaAUHJG1hdGNoMAQUbGFzdE1pbmVkQmxvY2tIZWlnaHQJAQxsYXN0SGVpZ2h0QnkCBQlnZW5lcmF0b3IFC21haW5DaGFpbklkCQBmAgkAZAIICQEJYmxvY2tNZXRhAQUJYmxvY2tIYXNoAl8xAAEFFGxhc3RNaW5lZEJsb2NrSGVpZ2h0BgQHJG1hdGNoMAkBDG1pbmVyQ2hhaW5JZAEFCWdlbmVyYXRvcgMJAAECBQckbWF0Y2gwAgNJbnQECWN1cnJlbnRJZAUHJG1hdGNoMAMDCQAAAgUJY3VycmVudElkBQ9leHBlY3RlZENoYWluSWQGAwkBD2NoYWluSXNJbmFjdGl2ZQEFCWN1cnJlbnRJZAUPaGVpZ2h0SXNDb3JyZWN0BwUEdW5pdAkAAgEJAKwCAgIcbWluZXIgaXMgbWluaW5nIG90aGVyIGNoYWluIAkApAMBBQljdXJyZW50SWQFBHVuaXQADGhlaWdodFN0cmluZwkArAICAgsgYXQgaGVpZ2h0IAkApAMBBQZoZWlnaHQBBXZyZkF0AQZoZWlnaHQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7QcBBQZoZWlnaHQJAKwCAgIbbGFzdCBibG9jayBpcyBub3QgYXZhaWxhYmxlBQxoZWlnaHRTdHJpbmcDdnJmCQCsAgICFFZSRiBpcyBub3QgYXZhaWxhYmxlBQxoZWlnaHRTdHJpbmcBEmVuc3VyZUNvcnJlY3RFcG9jaAELZXhwZWN0ZWRWUkYECWFjdHVhbFZSRgkBBXZyZkF0AQUGaGVpZ2h0AwkAAAIFC2V4cGVjdGVkVlJGBQlhY3R1YWxWUkYFBHVuaXQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICDUV4cGVjdGVkIFZSRiAJANgEAQULZXhwZWN0ZWRWUkYCFyBkb2VzIG5vdCBtYXRjaCBhY3R1YWwgCQDYBAEFCWFjdHVhbFZSRgUMaGVpZ2h0U3RyaW5nAQxhZGRTdXBwb3J0ZXICB2NoYWluSWQJZ2VuZXJhdG9yBA1zdXBwb3J0ZXJzU3RyCQERQGV4dHJOYXRpdmUoMTA1OCkBCQENc3VwcG9ydGVyc0tleQEFB2NoYWluSWQECnN1cHBvcnRlcnMJALwJAgUNc3VwcG9ydGVyc1N0cgUDU0VQAwkBD2NvbnRhaW5zRWxlbWVudAIFCnN1cHBvcnRlcnMJAKUIAQUJZ2VuZXJhdG9yBQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDXN1cHBvcnRlcnNLZXkBBQdjaGFpbklkCQCsAgIJAKwCAgUNc3VwcG9ydGVyc1N0cgUDU0VQCQClCAEFCWdlbmVyYXRvcgUDbmlsAQlzZXRPckZhaWwCBWZsYWdzBWluZGV4AwkAZgIAAAUFaW5kZXgJAAIBCQCsAgICIkNhbid0IHdpdGhkcmF3IGF0IG5lZ2F0aXZlIGluZGV4OiAJAKQDAQUFaW5kZXgECWZsYWdzU2l6ZQkAsQIBBQVmbGFncwMJAGcCBQVpbmRleAUJZmxhZ3NTaXplBAlhZGRaZXJvZXMJAGUCBQVpbmRleAUJZmxhZ3NTaXplAwkAZgIFCWFkZFplcm9lcwkAsQIBBQl6ZXJvZXNTdHIJAAIBCQCsAgIJAKwCAgIKQ2FuJ3QgYWRkIAkApAMBBQlhZGRaZXJvZXMCJSBlbXB0eSBmbGFncy4gQ29udGFjdCB3aXRoIGRldmVsb3BlcnMJAKwCAgkArAICBQVmbGFncwkArwICBQl6ZXJvZXNTdHIFCWFkZFplcm9lcwIBMQQEdGFpbAkAsAICBQVmbGFncwUFaW5kZXgEB2F0SW5kZXgJAK8CAgUEdGFpbAABAwkAAAIFB2F0SW5kZXgCATAJAKwCAgkArAICCQCvAgIFBWZsYWdzBQVpbmRleAIBMQkAsAICBQR0YWlsAAEJAAIBCQCsAgIJAKwCAgIKVHJhbnNmZXIgIwkApAMBBQVpbmRleAIXIGhhcyBiZWVuIGFscmVhZHkgdGFrZW4BEXZhbGlkYXRlQmxvY2tIYXNoAQZoZXhTdHIEDGRlY29kZWRCeXRlcwkA3QQBBQZoZXhTdHIDCQECIT0CCQDIAQEFDGRlY29kZWRCeXRlcwUPQkxPQ0tfSEFTSF9TSVpFCQACAQIXaW52YWxpZCBibG9jayBpZCBsZW5ndGgFBmhleFN0cgEdZ2V0VXBkYXRlRmluYWxpemVkQmxvY2tBY3Rpb24DBmNhbGxlcg9uZXdCbG9ja0hhc2hIZXgJcHJldkVwb2NoBBdjdXJGaW5hbGl6ZWRCbG9ja0hlaWdodAgJAQlibG9ja01ldGEBCQERQGV4dHJOYXRpdmUoMTA1OCkBBRFmaW5hbGl6ZWRCbG9ja0tleQJfMQQVbmV3RmluYWxpemVkQmxvY2tIYXNoCQEbY2FsY3VsYXRlRmluYWxpemVkQmxvY2tIYXNoAwUGY2FsbGVyBQlwcmV2RXBvY2gFD25ld0Jsb2NrSGFzaEhleAMDCQAAAgUVbmV3RmluYWxpemVkQmxvY2tIYXNoBQ9uZXdCbG9ja0hhc2hIZXgGCQBmAggJAQlibG9ja01ldGEBBRVuZXdGaW5hbGl6ZWRCbG9ja0hhc2gCXzEFF2N1ckZpbmFsaXplZEJsb2NrSGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIFEWZpbmFsaXplZEJsb2NrS2V5BRVuZXdGaW5hbGl6ZWRCbG9ja0hhc2gFA25pbAUDbmlsCgFpAQ9leHRlbmRNYWluQ2hhaW4FDGJsb2NrSGFzaEhleAxyZWZlcmVuY2VIZXgDdnJmF2UyY1RyYW5zZmVyc1Jvb3RIYXNoSGV4FGxhc3RDMkVUcmFuc2ZlckluZGV4BAtjYW5Db250aW51ZQkBFGNpcmN1aXRCcmVha2VyQ2xvc2VkAAMJAAACBQtjYW5Db250aW51ZQULY2FuQ29udGludWUEDmNoZWNrQmxvY2tIYXNoCQERdmFsaWRhdGVCbG9ja0hhc2gBBQxibG9ja0hhc2hIZXgDCQAAAgUOY2hlY2tCbG9ja0hhc2gFDmNoZWNrQmxvY2tIYXNoBApjaGVja0Vwb2NoCQESZW5zdXJlQ29ycmVjdEVwb2NoAQUDdnJmAwkAAAIFCmNoZWNrRXBvY2gFCmNoZWNrRXBvY2gECmNoZWNrQ2hhaW4JAR1lbnN1cmVFeHBlY3RlZE9ySW5hY3RpdmVDaGFpbgMIBQFpDG9yaWdpbkNhbGxlcgULbWFpbkNoYWluSWQFBHVuaXQDCQAAAgUKY2hlY2tDaGFpbgUKY2hlY2tDaGFpbgQOY2hlY2tSZWZlcmVuY2UJARJpc1JlZmVyZW5jZUNvcnJlY3QCBQxyZWZlcmVuY2VIZXgFEm1haW5DaGFpbkxhc3RCbG9jawMJAAACBQ5jaGVja1JlZmVyZW5jZQUOY2hlY2tSZWZlcmVuY2UEDmNoZWNrVHJhbnNmZXJzCQEWZW5zdXJlQ29ycmVjdFRyYW5zZmVycwMICQEJYmxvY2tNZXRhAQUMcmVmZXJlbmNlSGV4Al82BRRsYXN0QzJFVHJhbnNmZXJJbmRleAYDCQAAAgUOY2hlY2tUcmFuc2ZlcnMFDmNoZWNrVHJhbnNmZXJzBA10aGlzRXBvY2hNZXRhBAckbWF0Y2gwCQEJZXBvY2hNZXRhAQUGaGVpZ2h0AwkAAQIFByRtYXRjaDACBFVuaXQJAQtTdHJpbmdFbnRyeQIJAQxlcG9jaE1ldGFLZXkBBQZoZWlnaHQJAKwCAgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQxvcmlnaW5DYWxsZXIFA1NFUAkApAMBBQ5tYWluQ2hhaW5FcG9jaAUDU0VQBQxibG9ja0hhc2hIZXgEBW90aGVyBQckbWF0Y2gwCQACAQIVRXBvY2ggYWxyZWFkeSBzdGFydGVkAwkAAAIFDXRoaXNFcG9jaE1ldGEFDXRoaXNFcG9jaE1ldGEEDmNoZWNrR2VuZXJhdG9yCQERZW5zdXJlTWluaW5nRXBvY2gBCAUBaQxvcmlnaW5DYWxsZXIDCQAAAgUOY2hlY2tHZW5lcmF0b3IFDmNoZWNrR2VuZXJhdG9yBBR1cGRhdGVGaW5hbGl6ZWRCbG9jawkBHWdldFVwZGF0ZUZpbmFsaXplZEJsb2NrQWN0aW9uAwgFAWkMb3JpZ2luQ2FsbGVyBQxibG9ja0hhc2hIZXgFDm1haW5DaGFpbkVwb2NoBA5uZXdDaGFpbkhlaWdodAkAZAIFD21haW5DaGFpbkhlaWdodAABCQDOCAIJAMwIAgkBEG1rQmxvY2tNZXRhRW50cnkGBQxibG9ja0hhc2hIZXgFDm5ld0NoYWluSGVpZ2h0BRJtYWluQ2hhaW5MYXN0QmxvY2sFC21haW5DaGFpbklkBRdlMmNUcmFuc2ZlcnNSb290SGFzaEhleAUUbGFzdEMyRVRyYW5zZmVySW5kZXgJAMwIAgkBEG1rQ2hhaW5NZXRhRW50cnkDBQttYWluQ2hhaW5JZAUObmV3Q2hhaW5IZWlnaHQFDGJsb2NrSGFzaEhleAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBD21pbmVyQ2hhaW5JZEtleQEIBQFpDG9yaWdpbkNhbGxlcgULbWFpbkNoYWluSWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARJjaGFpbkxhc3RIZWlnaHRLZXkCBQttYWluQ2hhaW5JZAgFAWkMb3JpZ2luQ2FsbGVyBQ5uZXdDaGFpbkhlaWdodAkAzAgCBQ10aGlzRXBvY2hNZXRhBQNuaWwFFHVwZGF0ZUZpbmFsaXplZEJsb2NrCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDXN0YXJ0QWx0Q2hhaW4FDGJsb2NrSGFzaEhleAxyZWZlcmVuY2VIZXgDdnJmF2UyY1RyYW5zZmVyc1Jvb3RIYXNoSGV4FGxhc3RDMkVUcmFuc2ZlckluZGV4BAtjYW5Db250aW51ZQkBFGNpcmN1aXRCcmVha2VyQ2xvc2VkAAMJAAACBQtjYW5Db250aW51ZQULY2FuQ29udGludWUEDmNoZWNrQmxvY2tIYXNoCQERdmFsaWRhdGVCbG9ja0hhc2gBBQxibG9ja0hhc2hIZXgDCQAAAgUOY2hlY2tCbG9ja0hhc2gFDmNoZWNrQmxvY2tIYXNoBApjaGVja0Vwb2NoCQESZW5zdXJlQ29ycmVjdEVwb2NoAQUDdnJmAwkAAAIFCmNoZWNrRXBvY2gFCmNoZWNrRXBvY2gEDSR0MDE2NDk5MTY2MTIJAQlibG9ja01ldGEBBQxyZWZlcmVuY2VIZXgEDnJlZkNoYWluSGVpZ2h0CAUNJHQwMTY0OTkxNjYxMgJfMQQIcmVmRXBvY2gIBQ0kdDAxNjQ5OTE2NjEyAl8yBAtyZWZJZ25vcmVkMQgFDSR0MDE2NDk5MTY2MTICXzMEC3JlZklnbm9yZWQyCAUNJHQwMTY0OTkxNjYxMgJfNAQLcmVmSWdub3JlZDMIBQ0kdDAxNjQ5OTE2NjEyAl81BBByZWZUcmFuc2ZlckluZGV4CAUNJHQwMTY0OTkxNjYxMgJfNgQOZmluYWxpemVkRXBvY2gICQEJYmxvY2tNZXRhAQkBEUBleHRyTmF0aXZlKDEwNTgpAQURZmluYWxpemVkQmxvY2tLZXkCXzIECGVwb2NoUmVmAwkAZwIFCHJlZkVwb2NoBQ5maW5hbGl6ZWRFcG9jaAUIcmVmRXBvY2gJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICI0NhbiBub3Qgc3RhcnQgYWx0IGNoYWluIGZyb20gZXBvY2ggCQCkAwEFCHJlZkVwb2NoAggsIGVwb2NoIAkApAMBBQ5maW5hbGl6ZWRFcG9jaAINIGlzIGZpbmFsaXplZAQKY2hlY2tDaGFpbgkBHWVuc3VyZUV4cGVjdGVkT3JJbmFjdGl2ZUNoYWluAwgFAWkMb3JpZ2luQ2FsbGVyBQttYWluQ2hhaW5JZAUMcmVmZXJlbmNlSGV4AwkAAAIFCmNoZWNrQ2hhaW4FCmNoZWNrQ2hhaW4EDmNoZWNrVHJhbnNmZXJzCQEWZW5zdXJlQ29ycmVjdFRyYW5zZmVycwMFEHJlZlRyYW5zZmVySW5kZXgFFGxhc3RDMkVUcmFuc2ZlckluZGV4BgMJAAACBQ5jaGVja1RyYW5zZmVycwUOY2hlY2tUcmFuc2ZlcnMECm5ld0NoYWluSWQJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFDmxhc3RDaGFpbklkS2V5AAAAAQQObmV3Q2hhaW5IZWlnaHQJAGQCBQ5yZWZDaGFpbkhlaWdodAABBA10aGlzRXBvY2hNZXRhBAckbWF0Y2gwCQEJZXBvY2hNZXRhAQUGaGVpZ2h0AwkAAQIFByRtYXRjaDACBFVuaXQJAQtTdHJpbmdFbnRyeQIJAQxlcG9jaE1ldGFLZXkBBQZoZWlnaHQJAKwCAgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQxvcmlnaW5DYWxsZXIFA1NFUAkApAMBBQhlcG9jaFJlZgUDU0VQBQxibG9ja0hhc2hIZXgEBW90aGVyBQckbWF0Y2gwCQACAQIVRXBvY2ggYWxyZWFkeSBzdGFydGVkBA5jaGVja0dlbmVyYXRvcgkBEWVuc3VyZU1pbmluZ0Vwb2NoAQgFAWkMb3JpZ2luQ2FsbGVyAwkAAAIFDmNoZWNrR2VuZXJhdG9yBQ5jaGVja0dlbmVyYXRvcgkAzAgCBQ10aGlzRXBvY2hNZXRhCQDMCAIJARBta0Jsb2NrTWV0YUVudHJ5BgUMYmxvY2tIYXNoSGV4BQ5uZXdDaGFpbkhlaWdodAUMcmVmZXJlbmNlSGV4BQpuZXdDaGFpbklkBRdlMmNUcmFuc2ZlcnNSb290SGFzaEhleAUUbGFzdEMyRVRyYW5zZmVySW5kZXgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFGNoYWluRmlyc3RCbG9ja0lkS2V5AQUKbmV3Q2hhaW5JZAUMYmxvY2tIYXNoSGV4CQDMCAIJARBta0NoYWluTWV0YUVudHJ5AwUKbmV3Q2hhaW5JZAUObmV3Q2hhaW5IZWlnaHQFDGJsb2NrSGFzaEhleAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBD21pbmVyQ2hhaW5JZEtleQEIBQFpDG9yaWdpbkNhbGxlcgUKbmV3Q2hhaW5JZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmNoYWluTGFzdEhlaWdodEtleQIFCm5ld0NoYWluSWQIBQFpDG9yaWdpbkNhbGxlcgUObmV3Q2hhaW5IZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJARJjaGFpbkxhc3RIZWlnaHRLZXkCBQttYWluQ2hhaW5JZAgFAWkMb3JpZ2luQ2FsbGVyBQ5uZXdDaGFpbkhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCCQENc3VwcG9ydGVyc0tleQEFCm5ld0NoYWluSWQJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ5sYXN0Q2hhaW5JZEtleQUKbmV3Q2hhaW5JZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDmV4dGVuZEFsdENoYWluBgxibG9ja0hhc2hIZXgMcmVmZXJlbmNlSGV4A3ZyZgdjaGFpbklkF2UyY1RyYW5zZmVyc1Jvb3RIYXNoSGV4FGxhc3RDMkVUcmFuc2ZlckluZGV4BAtjYW5Db250aW51ZQkBFGNpcmN1aXRCcmVha2VyQ2xvc2VkAAMJAAACBQtjYW5Db250aW51ZQULY2FuQ29udGludWUEDmNoZWNrQmxvY2tIYXNoCQERdmFsaWRhdGVCbG9ja0hhc2gBBQxibG9ja0hhc2hIZXgDCQAAAgUOY2hlY2tCbG9ja0hhc2gFDmNoZWNrQmxvY2tIYXNoBApjaGVja0Vwb2NoCQESZW5zdXJlQ29ycmVjdEVwb2NoAQUDdnJmAwkAAAIFCmNoZWNrRXBvY2gFCmNoZWNrRXBvY2gEE2NoYWluRmlyc3RCbG9ja01ldGEJAQlibG9ja01ldGEBCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEUY2hhaW5GaXJzdEJsb2NrSWRLZXkBBQdjaGFpbklkBApjaGVja0NoYWluCQEdZW5zdXJlRXhwZWN0ZWRPckluYWN0aXZlQ2hhaW4DCAUBaQxvcmlnaW5DYWxsZXIFB2NoYWluSWQJANwEAQgFE2NoYWluRmlyc3RCbG9ja01ldGECXzMDCQAAAgUKY2hlY2tDaGFpbgUKY2hlY2tDaGFpbgQNJHQwMTg5NzExOTAyNQkBCWNoYWluTWV0YQEFB2NoYWluSWQEC2NoYWluSGVpZ2h0CAUNJHQwMTg5NzExOTAyNQJfMQQOY2hhaW5MYXN0QmxvY2sIBQ0kdDAxODk3MTE5MDI1Al8yBA5jaGVja1JlZmVyZW5jZQkBEmlzUmVmZXJlbmNlQ29ycmVjdAIFDHJlZmVyZW5jZUhleAUOY2hhaW5MYXN0QmxvY2sDCQAAAgUOY2hlY2tSZWZlcmVuY2UFDmNoZWNrUmVmZXJlbmNlBA5jaGVja1RyYW5zZmVycwkBFmVuc3VyZUNvcnJlY3RUcmFuc2ZlcnMDCAkBCWJsb2NrTWV0YQEFDHJlZmVyZW5jZUhleAJfNgUUbGFzdEMyRVRyYW5zZmVySW5kZXgGAwkAAAIFDmNoZWNrVHJhbnNmZXJzBQ5jaGVja1RyYW5zZmVycwQObmV3Q2hhaW5IZWlnaHQJAGQCBQtjaGFpbkhlaWdodAABBAlwcmV2RXBvY2gICQEJYmxvY2tNZXRhAQUMcmVmZXJlbmNlSGV4Al8yBBN1cGRhdGVNYWluQ2hhaW5EYXRhAwkAZgIJARFzdXBwb3J0aW5nQmFsYW5jZQEFB2NoYWluSWQJAGkCBRRjb21wdXRlZFRvdGFsQmFsYW5jZQACBAtsYXN0Q2hhaW5JZAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ5sYXN0Q2hhaW5JZEtleQAABBR1cGRhdGVGaW5hbGl6ZWRCbG9jawkBHWdldFVwZGF0ZUZpbmFsaXplZEJsb2NrQWN0aW9uAwgFAWkMb3JpZ2luQ2FsbGVyBQxibG9ja0hhc2hIZXgFCXByZXZFcG9jaAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEUY2hhaW5Gb3JrZWRIZWlnaHRLZXkBBQttYWluQ2hhaW5JZAgFE2NoYWluRmlyc3RCbG9ja01ldGECXzEJAMwIAgkBDEludGVnZXJFbnRyeQIFDm1haW5DaGFpbklkS2V5BQdjaGFpbklkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRdmaXJzdFZhbGlkQWx0Q2hhaW5JZEtleQkAZAIFC2xhc3RDaGFpbklkAAEFA25pbAUUdXBkYXRlRmluYWxpemVkQmxvY2sFA25pbAQNdGhpc0Vwb2NoTWV0YQQHJG1hdGNoMAkBCWVwb2NoTWV0YQEFBmhlaWdodAMJAAECBQckbWF0Y2gwAgRVbml0CQELU3RyaW5nRW50cnkCCQEMZXBvY2hNZXRhS2V5AQUGaGVpZ2h0CQCsAgIJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBQNTRVAJAKQDAQUJcHJldkVwb2NoBQNTRVAFDGJsb2NrSGFzaEhleAQFb3RoZXIFByRtYXRjaDAJAAIBAhVFcG9jaCBhbHJlYWR5IHN0YXJ0ZWQDCQAAAgUNdGhpc0Vwb2NoTWV0YQUNdGhpc0Vwb2NoTWV0YQQOY2hlY2tHZW5lcmF0b3IJARFlbnN1cmVNaW5pbmdFcG9jaAEIBQFpDG9yaWdpbkNhbGxlcgMJAAACBQ5jaGVja0dlbmVyYXRvcgUOY2hlY2tHZW5lcmF0b3IEHXVwZGF0ZU1haW5DaGFpbkxhc3RNaW5lZEJsb2NrAwMJAAACBRN1cGRhdGVNYWluQ2hhaW5EYXRhBQNuaWwJAQIhPQIJAQt2YWx1ZU9yRWxzZQIJAQxtaW5lckNoYWluSWQBCAUBaQxvcmlnaW5DYWxsZXIAAAUHY2hhaW5JZAcJAMwIAgkBDEludGVnZXJFbnRyeQIJARJjaGFpbkxhc3RIZWlnaHRLZXkCBQttYWluQ2hhaW5JZAgFAWkMb3JpZ2luQ2FsbGVyCAUTY2hhaW5GaXJzdEJsb2NrTWV0YQJfMQUDbmlsBQNuaWwJAM4IAgkAzggCCQDOCAIJAMwIAgkBEG1rQmxvY2tNZXRhRW50cnkGBQxibG9ja0hhc2hIZXgFDm5ld0NoYWluSGVpZ2h0BQxyZWZlcmVuY2VIZXgFB2NoYWluSWQFF2UyY1RyYW5zZmVyc1Jvb3RIYXNoSGV4BRRsYXN0QzJFVHJhbnNmZXJJbmRleAkAzAgCCQEQbWtDaGFpbk1ldGFFbnRyeQMFB2NoYWluSWQFDm5ld0NoYWluSGVpZ2h0BQxibG9ja0hhc2hIZXgJAMwIAgUNdGhpc0Vwb2NoTWV0YQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBD21pbmVyQ2hhaW5JZEtleQEIBQFpDG9yaWdpbkNhbGxlcgUHY2hhaW5JZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmNoYWluTGFzdEhlaWdodEtleQIFB2NoYWluSWQIBQFpDG9yaWdpbkNhbGxlcgUObmV3Q2hhaW5IZWlnaHQFA25pbAUTdXBkYXRlTWFpbkNoYWluRGF0YQkBDGFkZFN1cHBvcnRlcgIFB2NoYWluSWQIBQFpDG9yaWdpbkNhbGxlcgUddXBkYXRlTWFpbkNoYWluTGFzdE1pbmVkQmxvY2sJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQELYXBwZW5kQmxvY2sEDGJsb2NrSGFzaEhleAxyZWZlcmVuY2VIZXgXZTJjVHJhbnNmZXJzUm9vdEhhc2hIZXgUbGFzdEMyRVRyYW5zZmVySW5kZXgEC2NhbkNvbnRpbnVlCQEUY2lyY3VpdEJyZWFrZXJDbG9zZWQAAwkAAAIFC2NhbkNvbnRpbnVlBQtjYW5Db250aW51ZQQLY2hlY2tDYWxsZXIDCQAAAgUOdGhpc0Vwb2NoTWluZXIIBQFpDG9yaWdpbkNhbGxlcgYEByRtYXRjaDAFDnRoaXNFcG9jaE1pbmVyAwkAAQIFByRtYXRjaDACB0FkZHJlc3MECmVwb2NoTWluZXIFByRtYXRjaDAJAAIBCQCsAgICOW5vdCBhbGxvd2VkIHRvIGZvcmdlIGJsb2NrcyBpbiB0aGlzIGVwb2NoLCBleHBlY3RlZCBmcm9tIAkApQgBBQplcG9jaE1pbmVyCQACAQJAbm90IGFsbG93ZWQgdG8gZm9yZ2UgYmxvY2tzIGluIHRoaXMgZXBvY2gsIGVwb2NoIG1pbmVyIGlzIGFic2VudAMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEB2NoYWluSWQJAQt2YWx1ZU9yRWxzZQIJAQxtaW5lckNoYWluSWQBCAUBaQxvcmlnaW5DYWxsZXIFC21haW5DaGFpbklkBA0kdDAyMTQyMDIxNDcxCQEJY2hhaW5NZXRhAQUHY2hhaW5JZAQLY2hhaW5IZWlnaHQIBQ0kdDAyMTQyMDIxNDcxAl8xBAtsYXN0QmxvY2tJZAgFDSR0MDIxNDIwMjE0NzECXzIEDmNoZWNrUmVmZXJlbmNlCQESaXNSZWZlcmVuY2VDb3JyZWN0AgUMcmVmZXJlbmNlSGV4BQtsYXN0QmxvY2tJZAMJAAACBQ5jaGVja1JlZmVyZW5jZQUOY2hlY2tSZWZlcmVuY2UEDmNoZWNrVHJhbnNmZXJzCQEWZW5zdXJlQ29ycmVjdFRyYW5zZmVycwMICQEJYmxvY2tNZXRhAQUMcmVmZXJlbmNlSGV4Al82BRRsYXN0QzJFVHJhbnNmZXJJbmRleAcDCQAAAgUOY2hlY2tUcmFuc2ZlcnMFDmNoZWNrVHJhbnNmZXJzBA5uZXdDaGFpbkhlaWdodAkAZAIFC2NoYWluSGVpZ2h0AAEEDmNoZWNrQmxvY2tIYXNoCQERdmFsaWRhdGVCbG9ja0hhc2gBBQxibG9ja0hhc2hIZXgDCQAAAgUOY2hlY2tCbG9ja0hhc2gFDmNoZWNrQmxvY2tIYXNoCQDMCAIJARBta0Jsb2NrTWV0YUVudHJ5BgUMYmxvY2tIYXNoSGV4BQ5uZXdDaGFpbkhlaWdodAULbGFzdEJsb2NrSWQFB2NoYWluSWQFF2UyY1RyYW5zZmVyc1Jvb3RIYXNoSGV4BRRsYXN0QzJFVHJhbnNmZXJJbmRleAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmNoYWluTGFzdEhlaWdodEtleQIFB2NoYWluSWQIBQFpDG9yaWdpbkNhbGxlcgUObmV3Q2hhaW5IZWlnaHQJAMwIAgkBEG1rQ2hhaW5NZXRhRW50cnkDBQdjaGFpbklkBQ5uZXdDaGFpbkhlaWdodAUMYmxvY2tIYXNoSGV4CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxlcG9jaE1ldGFLZXkBBQZoZWlnaHQJAKwCAgkArAICCQCsAgIJAKwCAgkApQgBCQEFdmFsdWUBBQ50aGlzRXBvY2hNaW5lcgUDU0VQCQCkAwEFDHRoaXNFcG9jaFJlZgUDU0VQBQxibG9ja0hhc2hIZXgFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQRqb2luAQ1yZXdhcmRBZGRyZXNzBAtjYW5Db250aW51ZQkBFGNpcmN1aXRCcmVha2VyQ2xvc2VkAAMJAAACBQtjYW5Db250aW51ZQULY2FuQ29udGludWUKAR1lbnN1cmVOb3RPdmVycmlkZU90aGVyTWluZXJQawEMZWxBZGRyZXNzSGV4BAckbWF0Y2gwCQChCAEJAQptaW5lclBrS2V5AQUMZWxBZGRyZXNzSGV4AwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwAwkAAAIFAnBrCAUBaRVvcmlnaW5DYWxsZXJQdWJsaWNLZXkFBHVuaXQJAAIBCQCsAgIJAKwCAgkArAICAhFFTCBtaW5lciBhZGRyZXNzIAUMZWxBZGRyZXNzSGV4AhggaXMgYWxyZWFkeSBsaW5rZWQgd2l0aCAJANgEAQUCcGsFBHVuaXQDCQEBIQEJAQ9pc0NvbnRyYWN0U2V0dXAACQACAQIfVGhlIGNvbnRyYWN0IGhhcyBub3QgeWV0IHNldCB1cAMJAGYCBQtNSU5fQkFMQU5DRQgJAO8HAQgFAWkMb3JpZ2luQ2FsbGVyCmdlbmVyYXRpbmcJAAIBCQCsAgIJAKwCAgkArAICAiFJbnN1ZmZpY2llbnQgZ2VuZXJhdGluZyBiYWxhbmNlOiAJAKQDAQgJAO8HAQgFAWkMb3JpZ2luQ2FsbGVyCmdlbmVyYXRpbmcCDC4gUmVxdWlyZWQ6IAkApAMBBQtNSU5fQkFMQU5DRQMJAQIhPQIJAMgBAQUNcmV3YXJkQWRkcmVzcwAUCQACAQIlcmV3YXJkQWRkcmVzcyBzaG91bGQgYmUgYW4gTDIgYWRkcmVzcwMJAGcCCQCQAwEFCWFsbE1pbmVycwAyCQACAQIPdG9vIG1hbnkgbWluZXJzCgEOY2hlY2tFeGlzdGVuY2UCBmV4aXN0cwVtaW5lcgMFBmV4aXN0cwYJAAACBQVtaW5lcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEDWFscmVhZHlFeGlzdHMKAAIkbAUJYWxsTWluZXJzCgACJHMJAJADAQUCJGwKAAUkYWNjMAcKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDmNoZWNrRXhpc3RlbmNlAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA1MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIDBQ1hbHJlYWR5RXhpc3RzBQNuaWwECG5ld01pbmVyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQQcmV3YXJkQWRkcmVzc0hleAkA3AQBBQ1yZXdhcmRBZGRyZXNzBAVjaGVjawkBHWVuc3VyZU5vdE92ZXJyaWRlT3RoZXJNaW5lclBrAQUQcmV3YXJkQWRkcmVzc0hleAMJAAACBQVjaGVjawUFY2hlY2sECW5ld01pbmVycwMJAAACCQCQAwEFCWFsbE1pbmVycwAABQhuZXdNaW5lcgkArAICCQCsAgIFDGFsbE1pbmVyc1N0cgUDU0VQBQhuZXdNaW5lcgQZZGVsZXRlUHJldlJld2FyZEFkZHJlc3NQawQHJG1hdGNoMAkAoggBCQEVbWluZXJSZXdhcmRBZGRyZXNzS2V5AQUIbmV3TWluZXIDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAtwcmV2QWRkcmVzcwUHJG1hdGNoMAMJAAACBQtwcmV2QWRkcmVzcwkA3AQBBQ1yZXdhcmRBZGRyZXNzBQNuaWwJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBCm1pbmVyUGtLZXkBBQtwcmV2QWRkcmVzcwUDbmlsBQNuaWwJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQxhbGxNaW5lcnNLZXkFCW5ld01pbmVycwkAzAgCCQELU3RyaW5nRW50cnkCCQEVbWluZXJSZXdhcmRBZGRyZXNzS2V5AQUIbmV3TWluZXIJAKwCAgICMHgFEHJld2FyZEFkZHJlc3NIZXgJAMwIAgkBC0JpbmFyeUVudHJ5AgkBCm1pbmVyUGtLZXkBBRByZXdhcmRBZGRyZXNzSGV4CAUBaRVvcmlnaW5DYWxsZXJQdWJsaWNLZXkFA25pbAUZZGVsZXRlUHJldlJld2FyZEFkZHJlc3NQawkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQVsZWF2ZQAEC2NhbkNvbnRpbnVlCQEUY2lyY3VpdEJyZWFrZXJDbG9zZWQAAwkAAAIFC2NhbkNvbnRpbnVlBQtjYW5Db250aW51ZQQMbGVhdmluZ01pbmVyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgoBEHNraXBMZWF2aW5nTWluZXICA2FjYwVtaW5lcgMJAAACBQVtaW5lcgUMbGVhdmluZ01pbmVyBQNhY2MJAM0IAgUDYWNjBQVtaW5lcgQPcmVtYWluaW5nTWluZXJzCgACJGwFCWFsbE1pbmVycwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEQc2tpcExlYXZpbmdNaW5lcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyBA1yZXdhcmRBZGRyS2V5CQEVbWluZXJSZXdhcmRBZGRyZXNzS2V5AQUMbGVhdmluZ01pbmVyBBFwcmV2UmV3YXJkQWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFDXJld2FyZEFkZHJLZXkCFm1pbmVyIGhhcyBuZXZlciBqb2luZWQDCQAAAgURcHJldlJld2FyZEFkZHJlc3MFEXByZXZSZXdhcmRBZGRyZXNzAwkAAAIFDnRoaXNFcG9jaE1pbmVyCAUBaQxvcmlnaW5DYWxsZXIJAAIBAhxkZXNpZ25hdGVkIG1pbmVyIGNhbid0IGxlYXZlCQDMCAIJAQtTdHJpbmdFbnRyeQIFDGFsbE1pbmVyc0tleQkAugkCBQ9yZW1haW5pbmdNaW5lcnMFA1NFUAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCHRyYW5zZmVyARBkZXN0RWxBZGRyZXNzSGV4BAxjaGVja0FkZHJlc3MDCQAAAgkAsQIBBRBkZXN0RWxBZGRyZXNzSGV4BRRFVEhfQUREUkVTU19TVFJfU0laRQkA3QQBBRBkZXN0RWxBZGRyZXNzSGV4CQACAQkArAICCQCsAgIJAKwCAgIUQWRkcmVzcyBzaG91bGQgaGF2ZSAJAKQDAQUURVRIX0FERFJFU1NfU1RSX1NJWkUCESBjaGFyYWN0ZXJzLCBnb3QgCQCkAwEJALECAQUQZGVzdEVsQWRkcmVzc0hleAMJAAACBQxjaGVja0FkZHJlc3MFDGNoZWNrQWRkcmVzcwQMY2hlY2tQYXltZW50AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQYJAAIBCQCsAgICL0V4cGVjdGVkIG9uZSBwYXltZW50IGFzIGEgdHJhbnNmZXIgYW1vdW50LCBnb3QgCQCkAwEJAJADAQgFAWkIcGF5bWVudHMDCQAAAgUMY2hlY2tQYXltZW50BQxjaGVja1BheW1lbnQECnRva2VuSWRTdHIJARFAZXh0ck5hdGl2ZSgxMDU4KQEFCnRva2VuSWRLZXkEB3Rva2VuSWQJANkEAQUKdG9rZW5JZFN0cgQBdAkAkQMCCAUBaQhwYXltZW50cwAABAxjaGVja0Fzc2V0SWQEByRtYXRjaDAIBQF0B2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQHYXNzZXRJZAUHJG1hdGNoMAMJAAACBQdhc3NldElkBQd0b2tlbklkBgkAAgEJAKwCAgkArAICCQCsAgICCUV4cGVjdGVkIAUKdG9rZW5JZFN0cgIVIGluIHRoZSBwYXltZW50LCBnb3QgCQDYBAEFB2Fzc2V0SWQJAAIBCQCsAgIJAKwCAgIJRXhwZWN0ZWQgBQp0b2tlbklkU3RyAhogaW4gdGhlIHBheW1lbnQsIGdvdCBXYXZlcwMJAAACBQxjaGVja0Fzc2V0SWQFDGNoZWNrQXNzZXRJZAQJbGFzdEluZGV4CAkBCWJsb2NrTWV0YQEFEm1haW5DaGFpbkxhc3RCbG9jawJfNgQJcXVldWVTaXplCQBlAgUUbmF0aXZlVHJhbnNmZXJzQ291bnQFCWxhc3RJbmRleAQPY2hlY2tRdWV1ZUxpbWl0AwkAZgIAoAEFCXF1ZXVlU2l6ZQkBCmFtb3VudEd0RXEDBQF0AMCEPQUJcXVldWVTaXplAwkAZgIAwAwFCXF1ZXVlU2l6ZQkBCmFtb3VudEd0RXEDBQF0AICt4gQFCXF1ZXVlU2l6ZQMJAGYCAIAZBQlxdWV1ZVNpemUJAQphbW91bnRHdEVxAwUBdACAwtcvBQlxdWV1ZVNpemUDCQBmAgCAMgUJcXVldWVTaXplCQEKYW1vdW50R3RFcQMFAXQAgJTr3AMFCXF1ZXVlU2l6ZQkAAgEJAKwCAgkArAICAiNUcmFuc2ZlcnMgZGVuaWVkIGZvciBxdWV1ZSBzaXplIG9mIAkApAMBBQlxdWV1ZVNpemUCKC4gV2FpdCB1bnRpbCBjdXJyZW50IHRyYW5zZmVycyBwcm9jZXNzZWQDCQAAAgUPY2hlY2tRdWV1ZUxpbWl0BQ9jaGVja1F1ZXVlTGltaXQJAMwIAgkBDEludGVnZXJFbnRyeQIFF25hdGl2ZVRyYW5zZmVyc0NvdW50S2V5CQBkAgUUbmF0aXZlVHJhbnNmZXJzQ291bnQAAQkAzAgCCQEVbWtOYXRpdmVUcmFuc2ZlckVudHJ5AwUUbmF0aXZlVHJhbnNmZXJzQ291bnQFEGRlc3RFbEFkZHJlc3NIZXgIBQF0BmFtb3VudAkAzAgCCQEEQnVybgIFB3Rva2VuSWQIBQF0BmFtb3VudAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCHdpdGhkcmF3BAxibG9ja0hhc2hIZXgLbWVya2xlUHJvb2YUdHJhbnNmZXJJbmRleEluQmxvY2sGYW1vdW50BBF3aXRoZHJhd0Jsb2NrTWV0YQkBCWJsb2NrTWV0YQEFDGJsb2NrSGFzaEhleAQTd2l0aGRyYXdCbG9ja0hlaWdodAgFEXdpdGhkcmF3QmxvY2tNZXRhAl8xBBRmaW5hbGl6ZWRCbG9ja0hlaWdodAgJAQlibG9ja01ldGEBCQERQGV4dHJOYXRpdmUoMTA1OCkBBRFmaW5hbGl6ZWRCbG9ja0tleQJfMQQYbWFpbkNoYWluTGFzdEJsb2NrSGVpZ2h0CAkBCWJsb2NrTWV0YQEFEm1haW5DaGFpbkxhc3RCbG9jawJfMQMJAGYCBRN3aXRoZHJhd0Jsb2NrSGVpZ2h0BRRmaW5hbGl6ZWRCbG9ja0hlaWdodAkAAgEJAKwCAgkArAICCQCsAgICCkVMIGJsb2NrICMJAKQDAQUTd2l0aGRyYXdCbG9ja0hlaWdodAItIGlzIG5vdCBmaW5hbGl6ZWQuIFRoZSBjdXJyZW50IGZpbmFsaXplZCBpcyAjCQCkAwEFFGZpbmFsaXplZEJsb2NrSGVpZ2h0AwkBAiE9AgkAkAMBBQttZXJrbGVQcm9vZgUUV0lUSERSQVdfUFJPT0ZTX1NJWkUJAAIBCQCsAgIJAKwCAgkArAICAglFeHBlY3RlZCAJAKQDAQUUV0lUSERSQVdfUFJPT0ZTX1NJWkUCDSBwcm9vZnMsIGdvdCAJAKQDAQkAkAMBBQttZXJrbGVQcm9vZgMJAGYCAAAFFHRyYW5zZmVySW5kZXhJbkJsb2NrCQACAQkArAICAjNUcmFuc2ZlciBpbmRleCBpbiBibG9jayBzaG91bGQgYmUgbm9ubmVnYXRpdmUsIGdvdCAJAKQDAQUUdHJhbnNmZXJJbmRleEluQmxvY2sDCQBnAgAABQZhbW91bnQJAAIBCQCsAgICH0Ftb3VudCBzaG91bGQgYmUgcG9zaXRpdmUsIGdvdCAJAKQDAQUGYW1vdW50BBR3aXRoZHJhd0Jsb2NrQ2hhaW5JZAgFEXdpdGhkcmF3QmxvY2tNZXRhAl80BAtpc01haW5DaGFpbgkAAAIFFHdpdGhkcmF3QmxvY2tDaGFpbklkBQttYWluQ2hhaW5JZAQScmVsYXRlc1RvTWFpbkNoYWluBAckbWF0Y2gwCQCfCAEJARRjaGFpbkZvcmtlZEhlaWdodEtleQEFFHdpdGhkcmF3QmxvY2tDaGFpbklkAwkAAQIFByRtYXRjaDACA0ludAQMZm9ya2VkSGVpZ2h0BQckbWF0Y2gwCQBmAgUMZm9ya2VkSGVpZ2h0BRN3aXRoZHJhd0Jsb2NrSGVpZ2h0CQACAQkArAICCQCsAgIJAKwCAgUMYmxvY2tIYXNoSGV4Ah0gaXMgb24gYW4gYWx0ZXJuYXRpdmUgY2hhaW4gIwkApAMBBRR3aXRoZHJhd0Jsb2NrQ2hhaW5JZAI4IHRoYXQgd2FzIG5vdCBhcHByb3ZlZCBieSBtYWpvcml0eS4gV2FpdCBmb3Igc29tZSBibG9ja3MDAwULaXNNYWluQ2hhaW4GBRJyZWxhdGVzVG9NYWluQ2hhaW4ECXJlY2lwaWVudAgFAWkMb3JpZ2luQ2FsbGVyBA9yZWNpcGllbnRQa0hhc2gJAMkBAgkAygECCAUJcmVjaXBpZW50BWJ5dGVzAAIFFFBVQkxJQ19LRVlfSEFTSF9TSVpFBA96ZXJvQW1vdW50Qnl0ZXMBLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAthbW91bnRCeXRlcwkAmgMBBQZhbW91bnQEC2VsRXZlbnREYXRhCQDLAQIJAMsBAgUPcmVjaXBpZW50UGtIYXNoCQDJAQIFD3plcm9BbW91bnRCeXRlcwkAZQIJAMgBAQUPemVyb0Ftb3VudEJ5dGVzCQDIAQEFC2Ftb3VudEJ5dGVzBQthbW91bnRCeXRlcwQRZWxFdmVudERhdGFEaWdlc3QJAPAVAQULZWxFdmVudERhdGEEEmNhbGN1bGF0ZWRSb290SGFzaAkAvQUDBQttZXJrbGVQcm9vZgURZWxFdmVudERhdGFEaWdlc3QFFHRyYW5zZmVySW5kZXhJbkJsb2NrBBBleHBlY3RlZFJvb3RIYXNoCAURd2l0aGRyYXdCbG9ja01ldGECXzUDCQAAAgUSY2FsY3VsYXRlZFJvb3RIYXNoBRBleHBlY3RlZFJvb3RIYXNoBAd0b2tlbklkCQDZBAEJARFAZXh0ck5hdGl2ZSgxMDU4KQEFCnRva2VuSWRLZXkEDHRyYW5zZmVyc0tleQkBFGJsb2NrRTJDVHJhbnNmZXJzS2V5AQUMYmxvY2tIYXNoSGV4CQDMCAIJAQdSZWlzc3VlAwUHdG9rZW5JZAUGYW1vdW50BgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQlyZWNpcGllbnQFBmFtb3VudAUHdG9rZW5JZAkAzAgCCQELU3RyaW5nRW50cnkCBQx0cmFuc2ZlcnNLZXkJAQlzZXRPckZhaWwCCQELdmFsdWVPckVsc2UCCQCiCAEFDHRyYW5zZmVyc0tleQIABRR0cmFuc2ZlckluZGV4SW5CbG9jawUDbmlsCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIURXhwZWN0ZWQgcm9vdCBoYXNoOiAJANwEAQUQZXhwZWN0ZWRSb290SGFzaAIHLCBnb3Q6IAkA3AQBBRJjYWxjdWxhdGVkUm9vdEhhc2gCFS4gRXZlbnQgZGF0YSBkaWdlc3Q6IAkA2gQBBRFlbEV2ZW50RGF0YURpZ2VzdAIfLiBDaGVjayB5b3VyIHdpdGhkcmF3IGFyZ3VtZW50cwkAAgEJAKwCAgkArAICAglFeHBlY3RlZCAFDGJsb2NrSGFzaEhleAIvIHRvIGJlIGVpdGhlciBvbiB0aGUgbWFpbiBjaGFpbiBvciByZWxhdGUgdG8gaXQBaQEFc2V0dXACE2dlbmVzaXNCbG9ja0hhc2hIZXgRbWluZXJSZXdhcmRJbkd3ZWkDCQEPaXNDb250cmFjdFNldHVwAAkAAgECJFRoZSBjb250cmFjdCBoYXMgYmVlbiBhbHJlYWR5IHNldCB1cAMJAQIhPQIIBQFpDG9yaWdpbkNhbGxlcgUEdGhpcwkAAgEJAKwCAgIbc2V0dXAoKSBtdXN0IGJlIGludm9rZWQgYnkgCQClCAEFBHRoaXMDCQBmAgAABRFtaW5lclJld2FyZEluR3dlaQkAAgECJVRoZSBtaW5lciByZXdhcmQgbXVzdCBiZSBub24tbmVnYXRpdmUEEGdlbmVzaXNCbG9ja0hhc2gJAN0EAQUTZ2VuZXNpc0Jsb2NrSGFzaEhleAQZY2hlY2tHZW5lc2lzQmxvY2tIYXNoU2l6ZQMJAAACCQDIAQEFEGdlbmVzaXNCbG9ja0hhc2gFD0JMT0NLX0hBU0hfU0laRQYJAAIBAhhXcm9uZyBnZW5lc2lzIGJsb2NrIGhhc2gDCQAAAgUZY2hlY2tHZW5lc2lzQmxvY2tIYXNoU2l6ZQUZY2hlY2tHZW5lc2lzQmxvY2tIYXNoU2l6ZQQHZW1wdHlQawEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE2dlbmVzaXNNaW5lckFkZHJlc3MJAKcIAQUHZW1wdHlQawQXZ2VuZXNpc0V0aFJld2FyZEFkZHJlc3MBFAAAAAAAAAAAAAAAAAAAAAAAAAAABBlnZW5lc2lzQmxvY2tSZWZlcmVuY2VIYXNoAkAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBAVpc3N1ZQkAwggFAgVVTklUMQIMTmF0aXZlIHRva2VuAAAACAYEB3Rva2VuSWQJALgIAQUFaXNzdWUEEGdlbmVzaXNCbG9ja01ldGEJARBta0Jsb2NrTWV0YUVudHJ5BgUTZ2VuZXNpc0Jsb2NrSGFzaEhleAAABRlnZW5lc2lzQmxvY2tSZWZlcmVuY2VIYXNoAAAJANwEAQEAAP///////////wEJAMwIAgUQZ2VuZXNpc0Jsb2NrTWV0YQkAzAgCCQELU3RyaW5nRW50cnkCCQEUY2hhaW5GaXJzdEJsb2NrSWRLZXkBAAAFE2dlbmVzaXNCbG9ja0hhc2hIZXgJAMwIAgkBEG1rQ2hhaW5NZXRhRW50cnkDAAAAAAUTZ2VuZXNpc0Jsb2NrSGFzaEhleAkAzAgCCQEMSW50ZWdlckVudHJ5AgUObWluZXJSZXdhcmRLZXkFEW1pbmVyUmV3YXJkSW5Hd2VpCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxlcG9jaE1ldGFLZXkBBQZoZWlnaHQJAKwCAgkArAICCQClCAEFE2dlbmVzaXNNaW5lckFkZHJlc3MCAywwLAUTZ2VuZXNpc0Jsb2NrSGFzaEhleAkAzAgCCQELU3RyaW5nRW50cnkCBRFmaW5hbGl6ZWRCbG9ja0tleQUTZ2VuZXNpc0Jsb2NrSGFzaEhleAkAzAgCBQVpc3N1ZQkAzAgCCQELU3RyaW5nRW50cnkCBQp0b2tlbklkS2V5CQDYBAEFB3Rva2VuSWQJAMwIAgkBC1N0cmluZ0VudHJ5AgUSZWxCcmlkZ2VBZGRyZXNzS2V5AioweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDZhN2UFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQRoYWx0AAQJc2VudGluZWxzCQC1CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBEUBleHRyTmF0aXZlKDEwNTMpAgUQZGFvQ29uZmlnQWRkcmVzcwIJc2VudGluZWxzAhZzZW50aW5lbCBsaXN0IGlzIGVtcHR5BQNTRVADCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCBQlzZW50aW5lbHMJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyCQACAQkArAICCQClCAEIBQFpDG9yaWdpbkNhbGxlcgISIGlzIG5vdCBhIHNlbnRpbmVsCQDMCAIJAQxCb29sZWFuRW50cnkCBRdjaXJjdWl0QnJlYWtlckNsb3NlZEtleQcFA25pbAECdHgBBnZlcmlmeQAEGGFsbG93QnJvYWRjYXN0RnJvbUhlaWdodAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUQZGFvQ29uZmlnQWRkcmVzcwIWY29udHJhY3Rfdm90aW5nX3Jlc3VsdAIZbm8gY29udHJhY3Rfdm90aW5nX3Jlc3VsdAImaW52YWxpZCBjb250cmFjdF92b3RpbmdfcmVzdWx0IGFkZHJlc3MJAKwCAgkArAICCQCsAgICGXByb3Bvc2FsX2FsbG93X2Jyb2FkY2FzdF8JAKUIAQUEdGhpcwIBXwkA2AQBCAUCdHgCaWQJAKwCAgIfbm8gdm90ZSByZXN1bHQgZm9yIHRyYW5zYWN0aW9uIAkA2AQBCAUCdHgCaWQDAwkBC3ZhbHVlT3JFbHNlAgkAmwgCBRBkYW9Db25maWdBZGRyZXNzAh5vcF9nb3Zlcm5hbmNlX2FwcGx5X3R4X2FsbG93ZWQGBgkAAgECGWNpcmN1aXQgYnJlYWtlciBpcyBvcGVuZWQJAGcCBQZoZWlnaHQFGGFsbG93QnJvYWRjYXN0RnJvbUhlaWdodAdZnXzR", "height": 3301934, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 8 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let a = 9223372036854775807
5+
6+let b = 100000000
7+
8+let c = (20000 * b)
9+
10+let d = ","
11+
12+let e = 32
13+
14+let f = 20
15+
16+let g = 32
17+
18+let h = 10
19+
20+let i = 40
21+
22+let j = 16
23+
24+let k = "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
25+
26+let l = "allMiners"
27+
28+let m = "mainChainId"
29+
30+let n = "lastChainId"
31+
32+let o = "firstValidAltChainId"
33+
34+let p = "minerReward"
35+
36+let q = "block_0x"
37+
38+let r = "finalizedBlock"
39+
40+let s = "tokenId"
41+
42+let t = "elBridgeAddress"
43+
44+let u = "nativeTransfersCount"
45+
46+func v (w) = {
47+ let x = toString(w)
48+ let y = size(x)
49+ if ((1 == y))
50+ then ("0000000" + x)
51+ else if ((2 == y))
52+ then ("000000" + x)
53+ else if ((3 == y))
54+ then ("00000" + x)
55+ else if ((4 == y))
56+ then ("0000" + x)
57+ else if ((5 == y))
58+ then ("000" + x)
59+ else if ((6 == y))
60+ then ("00" + x)
61+ else if ((7 == y))
62+ then ("0" + x)
63+ else x
64+ }
65+
66+
67+let z = addressFromStringValue("3N5c7DCCGmicNiHRGouUp3BaV6e8eDUDnHw")
68+
69+let A = "circuitBreakerClosed"
70+
71+func B () = if (valueOrElse(getBoolean(this, A), true))
72+ then true
73+ else throw("circuit breaker is opened")
74+
75+
76+func C (D) = ("elToClTransfers_0x" + D)
77+
78+
79+func E (F) = ("epoch_" + v(F))
80+
81+
82+func G (H) = (("chain" + toString(H)) + "FirstBlock")
83+
84+
85+func I (H) = ("chain_" + v(H))
86+
87+
88+func J (H,K) = ((("chain_" + v(H)) + "_") + toString(K))
89+
90+
91+func L (H) = (("chain_" + v(H)) + "ForkedHeight")
92+
93+
94+func M (H) = (("chain" + toString(H)) + "Supporters")
95+
96+
97+func N (O) = (("miner_" + O) + "_RewardAddress")
98+
99+
100+func P (Q) = (("miner_0x" + Q) + "_PK")
101+
102+
103+func R (K) = (("miner_" + toString(K)) + "_ChainId")
104+
105+
106+let S = valueOrElse(getInteger(this, u), 0)
107+
108+func T (U) = ("nativeTransfer_" + toString(U))
109+
110+
111+func V (U,W,X) = StringEntry(T(U), ((("0x" + W) + d) + toString(X)))
112+
113+
114+func Y (Z,aa,ab) = {
115+ let ac = if (ab)
116+ then (j - 1)
117+ else j
118+ let ad = (aa - Z)
119+ let ae = if ((ad > ac))
120+ then throw(((("Allowed only " + toString(ac)) + " transfers, got ") + toString(ad)))
121+ else true
122+ if ((ae == ae))
123+ then if ((aa >= S))
124+ then throw(((("Attempt to transfer #" + toString(aa)) + ". Available transfers: ") + toString(S)))
125+ else true
126+ else throw("Strict value is not equal to itself.")
127+ }
128+
129+
130+func af (ag,ah,ai) = if ((ag.amount >= ah))
131+ then true
132+ else throw((((((("Transferring amount " + toString(ag.amount)) + " should be >= ") + toString(ah)) + " for queue size of ") + toString(ai)) + ". Transfer more or wait"))
133+
134+
135+func aj (ak) = wavesBalance(ak).generating
136+
137+
138+func al (H) = {
139+ let x = getStringValue(I(H))
140+ let am = split(x, d)
141+ $Tuple2(parseIntValue(am[0]), am[1])
142+ }
143+
144+
145+func an (H,ao,D) = StringEntry(I(H), ((toString(ao) + d) + D))
146+
147+
148+let ap = valueOrElse(getInteger(m), 0)
149+
150+let aq = al(ap)
151+
152+let ar = aq._1
153+
154+let as = aq._2
155+
156+func at (F) = {
157+ let y = getString(E(F))
158+ if ($isInstanceOf(y, "String"))
159+ then {
160+ let x = y
161+ let au = split(x, d)
162+ $Tuple3(addressFromStringValue(au[0]), parseIntValue(au[1]), au[2])
163+ }
164+ else unit
165+ }
166+
167+
168+let av = {
169+ let y = at(height)
170+ if ($isInstanceOf(y, "(Address, Int, String)"))
171+ then {
172+ let aw = y
173+ aw
174+ }
175+ else $Tuple2(unit, 0)
176+ }
177+
178+let ax = av._1
179+
180+let ay = av._2
181+
182+let az = valueOrElse(getString(l), "")
183+
184+let aA = {
185+ let y = az
186+ if (("" == y))
187+ then nil
188+ else if ($isInstanceOf(y, "String"))
189+ then {
190+ let aB = y
191+ split_4C(aB, d)
192+ }
193+ else throw("Match error")
194+ }
195+
196+func aC (aD) = {
197+ let aE = getBinaryValue((q + aD))
198+ let aF = size(aE)
199+ let aG = toInt(aE)
200+ let aH = toInt(aE, 8)
201+ let aI = take(drop(aE, 16), e)
202+ let H = toInt(aE, (16 + e))
203+ let aJ = (24 + e)
204+ let aK = (aF - aJ)
205+ let aL = if ((aK >= g))
206+ then take(drop(aE, aJ), g)
207+ else base58''
208+ let aM = if (if ((aK == 8))
209+ then true
210+ else (aK > g))
211+ then toInt(aE, (aJ + size(aL)))
212+ else -1
213+ $Tuple6(aG, aH, aI, H, aL, aM)
214+ }
215+
216+
217+func aN (D,aG,aO,H,aP,aM) = {
218+ let aQ = fromBase16String(aP)
219+ let aR = size(aQ)
220+ let aS = if (if ((aR == 0))
221+ then true
222+ else (aR == g))
223+ then true
224+ else throw(((("Transfers root hash should have 0 or " + toString(g)) + " bytes, got ") + toString(aR)))
225+ if ((aS == aS))
226+ then {
227+ let aT = (((((toBytes(aG) + toBytes(height)) + fromBase16String(aO)) + toBytes(H)) + aQ) + toBytes(aM))
228+ BinaryEntry((q + D), aT)
229+ }
230+ else throw("Strict value is not equal to itself.")
231+ }
232+
233+
234+func aU (K,H) = {
235+ let y = getInteger(J(H, K))
236+ if ($isInstanceOf(y, "Int"))
237+ then {
238+ let aV = y
239+ aV
240+ }
241+ else {
242+ let aW = getStringValue(((("chain" + toString(H)) + "LastMinedBy") + toString(K)))
243+ aC(aW)._1
244+ }
245+ }
246+
247+
248+let aX = {
249+ let aY = {
250+ let y = lastBlock.vrf
251+ if ($isInstanceOf(y, "ByteVector"))
252+ then {
253+ let aZ = y
254+ aZ
255+ }
256+ else lastBlock.generationSignature
257+ }
258+ func ba (bb,K) = {
259+ let bc = bb
260+ let bd = bc._1
261+ let be = bc._2
262+ let bf = bc._3
263+ let bg = bc._4
264+ let bh = addressFromStringValue(K)
265+ let bi = wavesBalance(bh).generating
266+ let bj = aj(bh)
267+ if (if ((c > bi))
268+ then true
269+ else (0 >= bj))
270+ then bb
271+ else {
272+ let bk = calculateDelay(bh, bj)
273+ if ((bf > bk))
274+ then $Tuple4(K, (be + bj), bk, (bg :+ K))
275+ else $Tuple4(bd, (be + bj), bf, (bg :+ K))
276+ }
277+ }
278+
279+ let bl = aA
280+ let bm = size(bl)
281+ let bn = $Tuple4("", 0, a, nil)
282+ func bo (bp,bq) = if ((bq >= bm))
283+ then bp
284+ else ba(bp, bl[bq])
285+
286+ func br (bp,bq) = if ((bq >= bm))
287+ then bp
288+ else throw("List size exceeds 50")
289+
290+ br(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bn, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
291+ }
292+
293+let bs = aX._1
294+
295+let bt = aX._2
296+
297+let bu = aC(as)
298+
299+let bv = bu._1
300+
301+let bw = bu._2
302+
303+func bx (by,bz,bA) = {
304+ let bB = split_4C("::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::", "")
305+ let bC = (bt / 2)
306+ func bD (bb,bE) = {
307+ let bF = bb
308+ let bG = bF._1
309+ let bH = bF._2
310+ let bI = bF._3
311+ let bg = bF._4
312+ let y = bH
313+ if ($isInstanceOf(y, "Unit"))
314+ then {
315+ let bJ = if ((bG == height))
316+ then $Tuple3(by, bz, bA)
317+ else value(at(bG))
318+ let K = bJ._1
319+ let bK = bJ._2
320+ let bL = bJ._3
321+ if (if ((bK == 0))
322+ then true
323+ else ((height - bG) >= 100))
324+ then $Tuple4(bG, bL, bI, aA)
325+ else {
326+ let bM = if (containsElement(bg, K))
327+ then $Tuple2(bI, bg)
328+ else $Tuple2((bI + aj(K)), K :: bg)
329+ let bN = bM._1
330+ let bO = bM._2
331+ if ((bN > bC))
332+ then $Tuple4(bG, bL, bN, aA)
333+ else $Tuple4(bK, unit, bN, bO)
334+ }
335+ }
336+ else bb
337+ }
338+
339+ let bP = {
340+ let bl = bB
341+ let bm = size(bl)
342+ let bn = $Tuple4(height, unit, 0, nil)
343+ func bo (bp,bq) = if ((bq >= bm))
344+ then bp
345+ else bD(bp, bl[bq])
346+
347+ func br (bp,bq) = if ((bq >= bm))
348+ then bp
349+ else throw("List size exceeds 100")
350+
351+ br(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bn, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
352+ }
353+ let bQ = bP._1
354+ let bR = bP._2
355+ let y = bR
356+ if ($isInstanceOf(y, "String"))
357+ then {
358+ let bS = y
359+ bS
360+ }
361+ else value(at(bQ))._3
362+ }
363+
364+
365+func bT (H) = {
366+ func bU (bV,bW) = {
367+ let bX = bV
368+ let bI = bX._1
369+ let bY = bX._2
370+ let bZ = addressFromStringValue(bW)
371+ if (containsElement(bY, bZ))
372+ then bV
373+ else {
374+ let ca = aj(bZ)
375+ $Tuple2((bI + ca), (bY :+ bZ))
376+ }
377+ }
378+
379+ let cb = split_4C(getStringValue(M(H)), d)
380+ let cc = {
381+ let bl = cb
382+ let bm = size(bl)
383+ let bn = $Tuple2(0, nil)
384+ func bo (bp,bq) = if ((bq >= bm))
385+ then bp
386+ else bU(bp, bl[bq])
387+
388+ func br (bp,bq) = if ((bq >= bm))
389+ then bp
390+ else throw("List size exceeds 100")
391+
392+ br(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bn, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
393+ }
394+ let ca = cc._1
395+ let cd = cc._2
396+ ca
397+ }
398+
399+
400+func ce () = isDefined(getInteger(p))
401+
402+
403+func cf (bZ) = if ((toString(bZ) != bs))
404+ then throw(((((toBase58String(bZ.bytes) + " is not allowed to mine in ") + toString(height)) + " epoch. Expected ") + bs))
405+ else unit
406+
407+
408+func cg (ch,ci) = if ((ch == ci))
409+ then unit
410+ else throw(((("Expected a reference to the chain last block: 0x" + ci) + ". Got: 0x") + ch))
411+
412+
413+func cj (H) = {
414+ let ck = getStringValue(G(H))
415+ let cl = valueOrElse(getInteger(o), 0)
416+ if ((cl > H))
417+ then true
418+ else (aC(getStringValue(r))._1 > aC(ck)._1)
419+ }
420+
421+
422+func cm (K) = valueOrElse(getInteger(R(K)), getInteger(("chainIdOf" + toString(K))))
423+
424+
425+func cn (bZ,co,cp) = {
426+ let cq = {
427+ let y = cp
428+ if ($isInstanceOf(y, "String"))
429+ then {
430+ let aW = y
431+ let cr = aU(bZ, ap)
432+ ((aC(aW)._1 + 1) > cr)
433+ }
434+ else true
435+ }
436+ let y = cm(bZ)
437+ if ($isInstanceOf(y, "Int"))
438+ then {
439+ let cs = y
440+ if (if ((cs == co))
441+ then true
442+ else if (cj(cs))
443+ then cq
444+ else false)
445+ then unit
446+ else throw(("miner is mining other chain " + toString(cs)))
447+ }
448+ else unit
449+ }
450+
451+
452+let ct = (" at height " + toString(height))
453+
454+func cu (cv) = valueOrErrorMessage(valueOrErrorMessage(blockInfoByHeight(cv), ("last block is not available" + ct)).vrf, ("VRF is not available" + ct))
455+
456+
457+func cw (cx) = {
458+ let cy = cu(height)
459+ if ((cx == cy))
460+ then unit
461+ else throw((((("Expected VRF " + toBase58String(cx)) + " does not match actual ") + toBase58String(cy)) + ct))
462+ }
463+
464+
465+func cz (H,bZ) = {
466+ let cA = getStringValue(M(H))
467+ let cB = split_4C(cA, d)
468+ if (containsElement(cB, toString(bZ)))
469+ then nil
470+ else [StringEntry(M(H), ((cA + d) + toString(bZ)))]
471+ }
472+
473+
474+func cC (cD,U) = if ((0 > U))
475+ then throw(("Can't withdraw at negative index: " + toString(U)))
476+ else {
477+ let cE = size(cD)
478+ if ((U >= cE))
479+ then {
480+ let cF = (U - cE)
481+ if ((cF > size(k)))
482+ then throw((("Can't add " + toString(cF)) + " empty flags. Contact with developers"))
483+ else ((cD + take(k, cF)) + "1")
484+ }
485+ else {
486+ let cG = drop(cD, U)
487+ let cH = take(cG, 1)
488+ if ((cH == "0"))
489+ then ((take(cD, U) + "1") + drop(cG, 1))
490+ else throw((("Transfer #" + toString(U)) + " has been already taken"))
491+ }
492+ }
493+
494+
495+func cI (cJ) = {
496+ let cK = fromBase16String(cJ)
497+ if ((size(cK) != e))
498+ then throw("invalid block id length")
499+ else cJ
500+ }
501+
502+
503+func cL (cM,cN,bK) = {
504+ let cO = aC(getStringValue(r))._1
505+ let cP = bx(cM, bK, cN)
506+ if (if ((cP == cN))
507+ then true
508+ else (aC(cP)._1 > cO))
509+ then [StringEntry(r, cP)]
510+ else nil
511+ }
512+
513+
514+@Callable(w)
515+func extendMainChain (D,cQ,aZ,aP,aM) = {
516+ let cR = B()
517+ if ((cR == cR))
518+ then {
519+ let cS = cI(D)
520+ if ((cS == cS))
521+ then {
522+ let cT = cw(aZ)
523+ if ((cT == cT))
524+ then {
525+ let cU = cn(w.originCaller, ap, unit)
526+ if ((cU == cU))
527+ then {
528+ let cV = cg(cQ, as)
529+ if ((cV == cV))
530+ then {
531+ let cW = Y(aC(cQ)._6, aM, true)
532+ if ((cW == cW))
533+ then {
534+ let cX = {
535+ let y = at(height)
536+ if ($isInstanceOf(y, "Unit"))
537+ then StringEntry(E(height), ((((toString(w.originCaller) + d) + toString(bw)) + d) + D))
538+ else {
539+ let cY = y
540+ throw("Epoch already started")
541+ }
542+ }
543+ if ((cX == cX))
544+ then {
545+ let cZ = cf(w.originCaller)
546+ if ((cZ == cZ))
547+ then {
548+ let da = cL(w.originCaller, D, bw)
549+ let ao = (ar + 1)
550+ ([aN(D, ao, as, ap, aP, aM), an(ap, ao, D), IntegerEntry(R(w.originCaller), ap), IntegerEntry(J(ap, w.originCaller), ao), cX] ++ da)
551+ }
552+ else throw("Strict value is not equal to itself.")
553+ }
554+ else throw("Strict value is not equal to itself.")
555+ }
556+ else throw("Strict value is not equal to itself.")
557+ }
558+ else throw("Strict value is not equal to itself.")
559+ }
560+ else throw("Strict value is not equal to itself.")
561+ }
562+ else throw("Strict value is not equal to itself.")
563+ }
564+ else throw("Strict value is not equal to itself.")
565+ }
566+ else throw("Strict value is not equal to itself.")
567+ }
568+
569+
570+
571+@Callable(w)
572+func startAltChain (D,cQ,aZ,aP,aM) = {
573+ let cR = B()
574+ if ((cR == cR))
575+ then {
576+ let cS = cI(D)
577+ if ((cS == cS))
578+ then {
579+ let cT = cw(aZ)
580+ if ((cT == cT))
581+ then {
582+ let db = aC(cQ)
583+ let dc = db._1
584+ let dd = db._2
585+ let de = db._3
586+ let df = db._4
587+ let dg = db._5
588+ let Z = db._6
589+ let dh = aC(getStringValue(r))._2
590+ let di = if ((dd >= dh))
591+ then dd
592+ else throw((((("Can not start alt chain from epoch " + toString(dd)) + ", epoch ") + toString(dh)) + " is finalized"))
593+ let cU = cn(w.originCaller, ap, cQ)
594+ if ((cU == cU))
595+ then {
596+ let cW = Y(Z, aM, true)
597+ if ((cW == cW))
598+ then {
599+ let dj = (valueOrElse(getInteger(n), 0) + 1)
600+ let ao = (dc + 1)
601+ let cX = {
602+ let y = at(height)
603+ if ($isInstanceOf(y, "Unit"))
604+ then StringEntry(E(height), ((((toString(w.originCaller) + d) + toString(di)) + d) + D))
605+ else {
606+ let cY = y
607+ throw("Epoch already started")
608+ }
609+ }
610+ let cZ = cf(w.originCaller)
611+ if ((cZ == cZ))
612+ then [cX, aN(D, ao, cQ, dj, aP, aM), StringEntry(G(dj), D), an(dj, ao, D), IntegerEntry(R(w.originCaller), dj), IntegerEntry(J(dj, w.originCaller), ao), IntegerEntry(J(ap, w.originCaller), ao), StringEntry(M(dj), toString(w.originCaller)), IntegerEntry(n, dj)]
613+ else throw("Strict value is not equal to itself.")
614+ }
615+ else throw("Strict value is not equal to itself.")
616+ }
617+ else throw("Strict value is not equal to itself.")
618+ }
619+ else throw("Strict value is not equal to itself.")
620+ }
621+ else throw("Strict value is not equal to itself.")
622+ }
623+ else throw("Strict value is not equal to itself.")
624+ }
625+
626+
627+
628+@Callable(w)
629+func extendAltChain (D,cQ,aZ,H,aP,aM) = {
630+ let cR = B()
631+ if ((cR == cR))
632+ then {
633+ let cS = cI(D)
634+ if ((cS == cS))
635+ then {
636+ let cT = cw(aZ)
637+ if ((cT == cT))
638+ then {
639+ let dk = aC(getStringValue(G(H)))
640+ let cU = cn(w.originCaller, H, toBase16String(dk._3))
641+ if ((cU == cU))
642+ then {
643+ let dl = al(H)
644+ let dm = dl._1
645+ let dn = dl._2
646+ let cV = cg(cQ, dn)
647+ if ((cV == cV))
648+ then {
649+ let cW = Y(aC(cQ)._6, aM, true)
650+ if ((cW == cW))
651+ then {
652+ let ao = (dm + 1)
653+ let bK = aC(cQ)._2
654+ let do = if ((bT(H) > (bt / 2)))
655+ then {
656+ let dp = valueOrElse(getInteger(n), 0)
657+ let da = cL(w.originCaller, D, bK)
658+ ([IntegerEntry(L(ap), dk._1), IntegerEntry(m, H), IntegerEntry(o, (dp + 1))] ++ da)
659+ }
660+ else nil
661+ let cX = {
662+ let y = at(height)
663+ if ($isInstanceOf(y, "Unit"))
664+ then StringEntry(E(height), ((((toString(w.originCaller) + d) + toString(bK)) + d) + D))
665+ else {
666+ let cY = y
667+ throw("Epoch already started")
668+ }
669+ }
670+ if ((cX == cX))
671+ then {
672+ let cZ = cf(w.originCaller)
673+ if ((cZ == cZ))
674+ then {
675+ let dq = if (if ((do == nil))
676+ then (valueOrElse(cm(w.originCaller), 0) != H)
677+ else false)
678+ then [IntegerEntry(J(ap, w.originCaller), dk._1)]
679+ else nil
680+ ((([aN(D, ao, cQ, H, aP, aM), an(H, ao, D), cX, IntegerEntry(R(w.originCaller), H), IntegerEntry(J(H, w.originCaller), ao)] ++ do) ++ cz(H, w.originCaller)) ++ dq)
681+ }
682+ else throw("Strict value is not equal to itself.")
683+ }
684+ else throw("Strict value is not equal to itself.")
685+ }
686+ else throw("Strict value is not equal to itself.")
687+ }
688+ else throw("Strict value is not equal to itself.")
689+ }
690+ else throw("Strict value is not equal to itself.")
691+ }
692+ else throw("Strict value is not equal to itself.")
693+ }
694+ else throw("Strict value is not equal to itself.")
695+ }
696+ else throw("Strict value is not equal to itself.")
697+ }
698+
699+
700+
701+@Callable(w)
702+func appendBlock (D,cQ,aP,aM) = {
703+ let cR = B()
704+ if ((cR == cR))
705+ then {
706+ let dr = if ((ax == w.originCaller))
707+ then true
708+ else {
709+ let y = ax
710+ if ($isInstanceOf(y, "Address"))
711+ then {
712+ let ds = y
713+ throw(("not allowed to forge blocks in this epoch, expected from " + toString(ds)))
714+ }
715+ else throw("not allowed to forge blocks in this epoch, epoch miner is absent")
716+ }
717+ if ((dr == dr))
718+ then {
719+ let H = valueOrElse(cm(w.originCaller), ap)
720+ let dt = al(H)
721+ let dm = dt._1
722+ let du = dt._2
723+ let cV = cg(cQ, du)
724+ if ((cV == cV))
725+ then {
726+ let cW = Y(aC(cQ)._6, aM, false)
727+ if ((cW == cW))
728+ then {
729+ let ao = (dm + 1)
730+ let cS = cI(D)
731+ if ((cS == cS))
732+ then [aN(D, ao, du, H, aP, aM), IntegerEntry(J(H, w.originCaller), ao), an(H, ao, D), StringEntry(E(height), ((((toString(value(ax)) + d) + toString(ay)) + d) + D))]
733+ else throw("Strict value is not equal to itself.")
734+ }
735+ else throw("Strict value is not equal to itself.")
736+ }
737+ else throw("Strict value is not equal to itself.")
738+ }
739+ else throw("Strict value is not equal to itself.")
740+ }
741+ else throw("Strict value is not equal to itself.")
742+ }
743+
744+
745+
746+@Callable(w)
747+func join (Q) = {
748+ let cR = B()
749+ if ((cR == cR))
750+ then {
751+ func dv (dw) = {
752+ let y = getBinary(P(dw))
753+ if ($isInstanceOf(y, "ByteVector"))
754+ then {
755+ let dx = y
756+ if ((dx == w.originCallerPublicKey))
757+ then unit
758+ else throw(((("EL miner address " + dw) + " is already linked with ") + toBase58String(dx)))
759+ }
760+ else unit
761+ }
762+
763+ if (!(ce()))
764+ then throw("The contract has not yet set up")
765+ else if ((c > wavesBalance(w.originCaller).generating))
766+ then throw(((("Insufficient generating balance: " + toString(wavesBalance(w.originCaller).generating)) + ". Required: ") + toString(c)))
767+ else if ((size(Q) != 20))
768+ then throw("rewardAddress should be an L2 address")
769+ else if ((size(aA) >= 50))
770+ then throw("too many miners")
771+ else {
772+ func dy (dz,K) = if (dz)
773+ then true
774+ else (K == toString(w.originCaller))
775+
776+ let dA = {
777+ let bl = aA
778+ let bm = size(bl)
779+ let bn = false
780+ func bo (bp,bq) = if ((bq >= bm))
781+ then bp
782+ else dy(bp, bl[bq])
783+
784+ func br (bp,bq) = if ((bq >= bm))
785+ then bp
786+ else throw("List size exceeds 50")
787+
788+ br(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bn, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
789+ }
790+ if (dA)
791+ then nil
792+ else {
793+ let dB = toString(w.originCaller)
794+ let dC = toBase16String(Q)
795+ let dD = dv(dC)
796+ if ((dD == dD))
797+ then {
798+ let bO = if ((size(aA) == 0))
799+ then dB
800+ else ((az + d) + dB)
801+ let dE = {
802+ let y = getString(N(dB))
803+ if ($isInstanceOf(y, "String"))
804+ then {
805+ let dF = y
806+ if ((dF == toBase16String(Q)))
807+ then nil
808+ else [DeleteEntry(P(dF))]
809+ }
810+ else nil
811+ }
812+ ([StringEntry(l, bO), StringEntry(N(dB), ("0x" + dC)), BinaryEntry(P(dC), w.originCallerPublicKey)] ++ dE)
813+ }
814+ else throw("Strict value is not equal to itself.")
815+ }
816+ }
817+ }
818+ else throw("Strict value is not equal to itself.")
819+ }
820+
821+
822+
823+@Callable(w)
824+func leave () = {
825+ let cR = B()
826+ if ((cR == cR))
827+ then {
828+ let dG = toString(w.originCaller)
829+ func dH (bV,K) = if ((K == dG))
830+ then bV
831+ else (bV :+ K)
832+
833+ let dI = {
834+ let bl = aA
835+ let bm = size(bl)
836+ let bn = nil
837+ func bo (bp,bq) = if ((bq >= bm))
838+ then bp
839+ else dH(bp, bl[bq])
840+
841+ func br (bp,bq) = if ((bq >= bm))
842+ then bp
843+ else throw("List size exceeds 50")
844+
845+ br(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bo(bn, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
846+ }
847+ let dJ = N(dG)
848+ let dK = valueOrErrorMessage(getString(this, dJ), "miner has never joined")
849+ if ((dK == dK))
850+ then if ((ax == w.originCaller))
851+ then throw("designated miner can't leave")
852+ else [StringEntry(l, makeString_2C(dI, d))]
853+ else throw("Strict value is not equal to itself.")
854+ }
855+ else throw("Strict value is not equal to itself.")
856+ }
857+
858+
859+
860+@Callable(w)
861+func transfer (W) = {
862+ let dL = if ((size(W) == i))
863+ then fromBase16String(W)
864+ else throw(((("Address should have " + toString(i)) + " characters, got ") + toString(size(W))))
865+ if ((dL == dL))
866+ then {
867+ let dM = if ((size(w.payments) == 1))
868+ then true
869+ else throw(("Expected one payment as a transfer amount, got " + toString(size(w.payments))))
870+ if ((dM == dM))
871+ then {
872+ let dN = getStringValue(s)
873+ let dO = fromBase58String(dN)
874+ let ag = w.payments[0]
875+ let dP = {
876+ let y = ag.assetId
877+ if ($isInstanceOf(y, "ByteVector"))
878+ then {
879+ let dQ = y
880+ if ((dQ == dO))
881+ then true
882+ else throw(((("Expected " + dN) + " in the payment, got ") + toBase58String(dQ)))
883+ }
884+ else throw((("Expected " + dN) + " in the payment, got Waves"))
885+ }
886+ if ((dP == dP))
887+ then {
888+ let dR = aC(as)._6
889+ let ai = (S - dR)
890+ let dS = if ((160 > ai))
891+ then af(ag, 1000000, ai)
892+ else if ((1600 > ai))
893+ then af(ag, 10000000, ai)
894+ else if ((3200 > ai))
895+ then af(ag, 100000000, ai)
896+ else if ((6400 > ai))
897+ then af(ag, 1000000000, ai)
898+ else throw((("Transfers denied for queue size of " + toString(ai)) + ". Wait until current transfers processed"))
899+ if ((dS == dS))
900+ then [IntegerEntry(u, (S + 1)), V(S, W, ag.amount), Burn(dO, ag.amount)]
901+ else throw("Strict value is not equal to itself.")
902+ }
903+ else throw("Strict value is not equal to itself.")
904+ }
905+ else throw("Strict value is not equal to itself.")
906+ }
907+ else throw("Strict value is not equal to itself.")
908+ }
909+
910+
911+
912+@Callable(w)
913+func withdraw (D,dT,dU,X) = {
914+ let dV = aC(D)
915+ let dW = dV._1
916+ let dX = aC(getStringValue(r))._1
917+ let dY = aC(as)._1
918+ if ((dW > dX))
919+ then throw(((("EL block #" + toString(dW)) + " is not finalized. The current finalized is #") + toString(dX)))
920+ else if ((size(dT) != h))
921+ then throw(((("Expected " + toString(h)) + " proofs, got ") + toString(size(dT))))
922+ else if ((0 > dU))
923+ then throw(("Transfer index in block should be nonnegative, got " + toString(dU)))
924+ else if ((0 >= X))
925+ then throw(("Amount should be positive, got " + toString(X)))
926+ else {
927+ let dZ = dV._4
928+ let ea = (dZ == ap)
929+ let eb = {
930+ let y = getInteger(L(dZ))
931+ if ($isInstanceOf(y, "Int"))
932+ then {
933+ let ec = y
934+ (ec > dW)
935+ }
936+ else throw((((D + " is on an alternative chain #") + toString(dZ)) + " that was not approved by majority. Wait for some blocks"))
937+ }
938+ if (if (ea)
939+ then true
940+ else eb)
941+ then {
942+ let ed = w.originCaller
943+ let ee = take(drop(ed.bytes, 2), f)
944+ let ef = base58'11111111111111111111111111111111111111111111'
945+ let eg = toBytes(X)
946+ let eh = ((ee + take(ef, (size(ef) - size(eg)))) + eg)
947+ let ei = blake2b256_16Kb(eh)
948+ let ej = createMerkleRoot(dT, ei, dU)
949+ let ek = dV._5
950+ if ((ej == ek))
951+ then {
952+ let dO = fromBase58String(getStringValue(s))
953+ let el = C(D)
954+[Reissue(dO, X, true), ScriptTransfer(ed, X, dO), StringEntry(el, cC(valueOrElse(getString(el), ""), dU))]
955+ }
956+ else throw((((((("Expected root hash: " + toBase16String(ek)) + ", got: ") + toBase16String(ej)) + ". Event data digest: ") + toBase64String(ei)) + ". Check your withdraw arguments"))
957+ }
958+ else throw((("Expected " + D) + " to be either on the main chain or relate to it"))
959+ }
960+ }
961+
962+
963+
964+@Callable(w)
965+func setup (em,en) = if (ce())
966+ then throw("The contract has been already set up")
967+ else if ((w.originCaller != this))
968+ then throw(("setup() must be invoked by " + toString(this)))
969+ else if ((0 > en))
970+ then throw("The miner reward must be non-negative")
971+ else {
972+ let eo = fromBase16String(em)
973+ let ep = if ((size(eo) == e))
974+ then true
975+ else throw("Wrong genesis block hash")
976+ if ((ep == ep))
977+ then {
978+ let eq = base58'11111111111111111111111111111111'
979+ let er = addressFromPublicKey(eq)
980+ let es = base58'11111111111111111111'
981+ let et = "0000000000000000000000000000000000000000000000000000000000000000"
982+ let eu = Issue("UNIT1", "Native token", 0, 8, true)
983+ let dO = calculateAssetId(eu)
984+ let ev = aN(em, 0, et, 0, toBase16String(base58''), -1)
985+[ev, StringEntry(G(0), em), an(0, 0, em), IntegerEntry(p, en), StringEntry(E(height), ((toString(er) + ",0,") + em)), StringEntry(r, em), eu, StringEntry(s, toBase58String(dO)), StringEntry(t, "0x0000000000000000000000000000000000006a7e")]
986+ }
987+ else throw("Strict value is not equal to itself.")
988+ }
989+
990+
991+
992+@Callable(w)
993+func halt () = {
994+ let ew = split(valueOrErrorMessage(getStringValue(z, "sentinels"), "sentinel list is empty"), d)
995+ if (!(containsElement(ew, toString(w.originCaller))))
996+ then throw((toString(w.originCaller) + " is not a sentinel"))
997+ else [BooleanEntry(A, false)]
998+ }
999+
1000+
1001+@Verifier(ex)
1002+func ey () = {
1003+ let ez = valueOrErrorMessage(getInteger(valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(z, "contract_voting_result"), "no contract_voting_result")), "invalid contract_voting_result address"), ((("proposal_allow_broadcast_" + toString(this)) + "_") + toBase58String(ex.id))), ("no vote result for transaction " + toBase58String(ex.id)))
1004+ if (if (valueOrElse(getBoolean(z, "op_governance_apply_tx_allowed"), true))
1005+ then true
1006+ else throw("circuit breaker is opened"))
1007+ then (height >= ez)
1008+ else false
1009+ }
1010+

github/deemru/w8io/169f3d6 
52.77 ms