tx · 3RcHvbUrvhacUkEbDF6sAbEsJWivQptXXP9H9oenS514

3Msx4Aq69zWUKy4d1wyKnQ4ofzEDAfv5Ngf:  -0.04300000 Waves

2024.10.24 11:06 [3340644] smart account 3Msx4Aq69zWUKy4d1wyKnQ4ofzEDAfv5Ngf > SELF 0.00000000 Waves

{ "type": 13, "id": "3RcHvbUrvhacUkEbDF6sAbEsJWivQptXXP9H9oenS514", "fee": 4300000, "feeAssetId": null, "timestamp": 1729757216282, "version": 2, "chainId": 84, "sender": "3Msx4Aq69zWUKy4d1wyKnQ4ofzEDAfv5Ngf", "senderPublicKey": "62i1XasxLi9NJmrEaq9UaHEGfZaonGKUL6EmFaA7gosh", "proofs": [ "3UoCkntvwb91wNJQrbPZKM8iKw7nth7gjRngRHtxk4BKKjAJHEbFqQxAR2o2xqNgyWtnoyY5xMEEEPPz6sqDRRYT" ], "script": "base64:CAJCCAISBwoFCAgCCAESBwoFCAgCCAESCAoGCAgCAQgBEgYKBAgICAESAwoBCBIAEgMKAQgSBgoECBIBARIGCgQIAQgBTQAHSU5UX01BWAD//////////38ABVdBVkVTAIDC1y8AC01JTl9CQUxBTkNFCQBoAgCgnAEFBVdBVkVTAANTRVACASwAD0JMT0NLX0hBU0hfU0laRQAgABRQVUJMSUNfS0VZX0hBU0hfU0laRQAUAA5ST09UX0hBU0hfU0laRQAgABRXSVRIRFJBV19QUk9PRlNfU0laRQAKABRFVEhfQUREUkVTU19TVFJfU0laRQAoABZNQVhfQ0xfVE9fRUxfVFJBTlNGRVJTABAACXplcm9lc1N0cgKACDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAC29mZnNldHNfMTAwCQC8CQICZDo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6OjoCAAAMYWxsTWluZXJzS2V5AglhbGxNaW5lcnMADm1haW5DaGFpbklkS2V5AgttYWluQ2hhaW5JZAAObGFzdENoYWluSWRLZXkCC2xhc3RDaGFpbklkABdmaXJzdFZhbGlkQWx0Q2hhaW5JZEtleQIUZmlyc3RWYWxpZEFsdENoYWluSWQADm1pbmVyUmV3YXJkS2V5AgttaW5lclJld2FyZAAKYmxvY2tNZXRhSwIIYmxvY2tfMHgAEWZpbmFsaXplZEJsb2NrS2V5Ag5maW5hbGl6ZWRCbG9jawAKdG9rZW5JZEtleQIHdG9rZW5JZAASZWxCcmlkZ2VBZGRyZXNzS2V5Ag9lbEJyaWRnZUFkZHJlc3MAF25hdGl2ZVRyYW5zZmVyc0NvdW50S2V5AhRuYXRpdmVUcmFuc2ZlcnNDb3VudAANZGFvQWRkcmVzc0tleQIKZGFvQWRkcmVzcwAMZGFvUmV3YXJkS2V5AglkYW9SZXdhcmQBA3BhZAEBaQQBcwkApAMBBQFpBAckbWF0Y2gwCQCxAgEFAXMDCQAAAgABBQckbWF0Y2gwCQCsAgICBzAwMDAwMDAFAXMDCQAAAgACBQckbWF0Y2gwCQCsAgICBjAwMDAwMAUBcwMJAAACAAMFByRtYXRjaDAJAKwCAgIFMDAwMDAFAXMDCQAAAgAEBQckbWF0Y2gwCQCsAgICBDAwMDAFAXMDCQAAAgAFBQckbWF0Y2gwCQCsAgICAzAwMAUBcwMJAAACAAYFByRtYXRjaDAJAKwCAgICMDAFAXMDCQAAAgAHBQckbWF0Y2gwCQCsAgICATAFAXMFAXMBFGJsb2NrRTJDVHJhbnNmZXJzS2V5AQxibG9ja0hhc2hIZXgJAKwCAgISZWxUb0NsVHJhbnNmZXJzXzB4BQxibG9ja0hhc2hIZXgBDGVwb2NoTWV0YUtleQEFZXBvY2gJAKwCAgIGZXBvY2hfCQEDcGFkAQUFZXBvY2gBFGNoYWluRmlyc3RCbG9ja0lkS2V5AQdjaGFpbklkCQCsAgIJAKwCAgIFY2hhaW4JAKQDAQUHY2hhaW5JZAIKRmlyc3RCbG9jawEMY2hhaW5NZXRhS2V5AQdjaGFpbklkCQCsAgICBmNoYWluXwkBA3BhZAEFB2NoYWluSWQBEmNoYWluTGFzdEhlaWdodEtleQIHY2hhaW5JZAVtaW5lcgkArAICCQCsAgIJAKwCAgIGY2hhaW5fCQEDcGFkAQUHY2hhaW5JZAIBXwkApQgBBQVtaW5lcgEUY2hhaW5Gb3JrZWRIZWlnaHRLZXkBB2NoYWluSWQJAKwCAgkArAICAgZjaGFpbl8JAQNwYWQBBQdjaGFpbklkAgxGb3JrZWRIZWlnaHQBDXN1cHBvcnRlcnNLZXkBB2NoYWluSWQJAKwCAgkArAICAgVjaGFpbgkApAMBBQdjaGFpbklkAgpTdXBwb3J0ZXJzARVtaW5lclJld2FyZEFkZHJlc3NLZXkBCW1pbmVyQWRkcgkArAICCQCsAgICBm1pbmVyXwUJbWluZXJBZGRyAg5fUmV3YXJkQWRkcmVzcwEKbWluZXJQa0tleQENcmV3YXJkQWRkcmVzcwkArAICCQCsAgICCG1pbmVyXzB4BQ1yZXdhcmRBZGRyZXNzAgNfUEsBD21pbmVyQ2hhaW5JZEtleQEFbWluZXIJAKwCAgkArAICAgZtaW5lcl8JAKUIAQUFbWluZXICCF9DaGFpbklkABRuYXRpdmVUcmFuc2ZlcnNDb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRduYXRpdmVUcmFuc2ZlcnNDb3VudEtleQAAARFuYXRpdmVUcmFuc2ZlcktleQEFaW5kZXgJAKwCAgIPbmF0aXZlVHJhbnNmZXJfCQCkAwEFBWluZGV4ARVta05hdGl2ZVRyYW5zZmVyRW50cnkDBWluZGV4EGRlc3RFbEFkZHJlc3NIZXgGYW1vdW50CQELU3RyaW5nRW50cnkCCQERbmF0aXZlVHJhbnNmZXJLZXkBBQVpbmRleAkArAICCQCsAgIJAKwCAgICMHgFEGRlc3RFbEFkZHJlc3NIZXgFA1NFUAkApAMBBQZhbW91bnQBFmVuc3VyZUNvcnJlY3RUcmFuc2ZlcnMDEHJlZlRyYW5zZmVySW5kZXgNdHJhbnNmZXJJbmRleAxleHBlY3RSZXdhcmQEDG1heFRyYW5zZmVycwMFDGV4cGVjdFJld2FyZAkAZQIFFk1BWF9DTF9UT19FTF9UUkFOU0ZFUlMAAQUWTUFYX0NMX1RPX0VMX1RSQU5TRkVSUwQPYWN0dWFsVHJhbnNmZXJzCQBlAgUNdHJhbnNmZXJJbmRleAUQcmVmVHJhbnNmZXJJbmRleAQLY2hlY2tOdW1iZXIDCQBmAgUPYWN0dWFsVHJhbnNmZXJzBQxtYXhUcmFuc2ZlcnMJAAIBCQCsAgIJAKwCAgkArAICAg1BbGxvd2VkIG9ubHkgCQCkAwEFDG1heFRyYW5zZmVycwIQIHRyYW5zZmVycywgZ290IAkApAMBBQ9hY3R1YWxUcmFuc2ZlcnMGAwkAAAIFC2NoZWNrTnVtYmVyBQtjaGVja051bWJlcgMJAGcCBQ10cmFuc2ZlckluZGV4BRRuYXRpdmVUcmFuc2ZlcnNDb3VudAkAAgEJAKwCAgkArAICCQCsAgICFUF0dGVtcHQgdG8gdHJhbnNmZXIgIwkApAMBBQ10cmFuc2ZlckluZGV4AhcuIEF2YWlsYWJsZSB0cmFuc2ZlcnM6IAkApAMBBRRuYXRpdmVUcmFuc2ZlcnNDb3VudAYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BCmFtb3VudEd0RXEDAXQEZ3RFcQlxdWV1ZVNpemUDCQBnAggFAXQGYW1vdW50BQRndEVxBgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICFFRyYW5zZmVycmluZyBhbW91bnQgCQCkAwEIBQF0BmFtb3VudAIOIHNob3VsZCBiZSA+PSAJAKQDAQUEZ3RFcQITIGZvciBxdWV1ZSBzaXplIG9mIAkApAMBBQlxdWV1ZVNpemUCFy4gVHJhbnNmZXIgbW9yZSBvciB3YWl0ARFnZW5lcmF0aW5nQmFsYW5jZQEHYWRkcmVzcwgJAO8HAQUHYWRkcmVzcwpnZW5lcmF0aW5nAQljaGFpbk1ldGEBB2NoYWluSWQEAXMJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAQxjaGFpbk1ldGFLZXkBBQdjaGFpbklkBAVpdGVtcwkAtQkCBQFzBQNTRVAJAJQKAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWl0ZW1zAAAJAJEDAgUFaXRlbXMAAQEQbWtDaGFpbk1ldGFFbnRyeQMHY2hhaW5JZA5uZXdDaGFpbkhlaWdodAxibG9ja0hhc2hIZXgJAQtTdHJpbmdFbnRyeQIJAQxjaGFpbk1ldGFLZXkBBQdjaGFpbklkCQCsAgIJAKwCAgkApAMBBQ5uZXdDaGFpbkhlaWdodAUDU0VQBQxibG9ja0hhc2hIZXgAC21haW5DaGFpbklkCQELdmFsdWVPckVsc2UCCQCfCAEFDm1haW5DaGFpbklkS2V5AAAACyR0MDUyNDk1MzE1CQEJY2hhaW5NZXRhAQULbWFpbkNoYWluSWQAD21haW5DaGFpbkhlaWdodAgFCyR0MDUyNDk1MzE1Al8xABJtYWluQ2hhaW5MYXN0QmxvY2sIBQskdDA1MjQ5NTMxNQJfMgEJZXBvY2hNZXRhAQVlcG9jaAQHJG1hdGNoMAkAoggBCQEMZXBvY2hNZXRhS2V5AQUFZXBvY2gDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBAlmcmFnbWVudHMJALUJAgUBcwUDU0VQCQCVCgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUJZnJhZ21lbnRzAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlmcmFnbWVudHMAAQkAkQMCBQlmcmFnbWVudHMAAgUEdW5pdAALJHQwNTU0NjU2NzAEByRtYXRjaDAJAQllcG9jaE1ldGEBBQZoZWlnaHQDCQABAgUHJG1hdGNoMAIWKEFkZHJlc3MsIEludCwgU3RyaW5nKQQBbQUHJG1hdGNoMAUBbQkAlAoCBQR1bml0AAAADnRoaXNFcG9jaE1pbmVyCAULJHQwNTU0NjU2NzACXzEADHRoaXNFcG9jaFJlZggFCyR0MDU1NDY1NjcwAl8yAAxhbGxNaW5lcnNTdHIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUMYWxsTWluZXJzS2V5AgAACWFsbE1pbmVycwQHJG1hdGNoMAUMYWxsTWluZXJzU3RyAwkAAAICAAUHJG1hdGNoMAUDbmlsAwkAAQIFByRtYXRjaDACBlN0cmluZwQDcmF3BQckbWF0Y2gwCQC8CQIFA3JhdwUDU0VQCQACAQILTWF0Y2ggZXJyb3IBCWJsb2NrTWV0YQEHYmxvY2tJZAQEbWV0YQkBEUBleHRyTmF0aXZlKDEwNTcpAQkArAICBQpibG9ja01ldGFLBQdibG9ja0lkBAhtZXRhU2l6ZQkAyAEBBQRtZXRhBAtibG9ja0hlaWdodAkAsQkBBQRtZXRhBApibG9ja0Vwb2NoCQCyCQIFBG1ldGEACAQLYmxvY2tQYXJlbnQJAMkBAgkAygECBQRtZXRhABAFD0JMT0NLX0hBU0hfU0laRQQHY2hhaW5JZAkAsgkCBQRtZXRhCQBkAgAQBQ9CTE9DS19IQVNIX1NJWkUECmJhc2VPZmZzZXQJAGQCABgFD0JMT0NLX0hBU0hfU0laRQQOcmVtYWluaW5nQnl0ZXMJAGUCBQhtZXRhU2l6ZQUKYmFzZU9mZnNldAQUZTJjVHJhbnNmZXJzUm9vdEhhc2gDCQBnAgUOcmVtYWluaW5nQnl0ZXMFDlJPT1RfSEFTSF9TSVpFCQDJAQIJAMoBAgUEbWV0YQUKYmFzZU9mZnNldAUOUk9PVF9IQVNIX1NJWkUBAAQUbGFzdEMyRVRyYW5zZmVySW5kZXgDAwkAAAIFDnJlbWFpbmluZ0J5dGVzAAgGCQBmAgUOcmVtYWluaW5nQnl0ZXMFDlJPT1RfSEFTSF9TSVpFCQCyCQIFBG1ldGEJAGQCBQpiYXNlT2Zmc2V0CQDIAQEFFGUyY1RyYW5zZmVyc1Jvb3RIYXNoAP///////////wEJAJgKBgULYmxvY2tIZWlnaHQFCmJsb2NrRXBvY2gFC2Jsb2NrUGFyZW50BQdjaGFpbklkBRRlMmNUcmFuc2ZlcnNSb290SGFzaAUUbGFzdEMyRVRyYW5zZmVySW5kZXgBEG1rQmxvY2tNZXRhRW50cnkGDGJsb2NrSGFzaEhleAtibG9ja0hlaWdodA5ibG9ja1BhcmVudEhleAdjaGFpbklkF2UyY1RyYW5zZmVyc1Jvb3RIYXNoSGV4FGxhc3RDMkVUcmFuc2ZlckluZGV4BBllMmNUcmFuc2ZlcnNSb290SGFzaEJ5dGVzCQDdBAEFF2UyY1RyYW5zZmVyc1Jvb3RIYXNoSGV4BBFyb290SGFzaEJ5dGVzU2l6ZQkAyAEBBRllMmNUcmFuc2ZlcnNSb290SGFzaEJ5dGVzBA1jaGVja1Jvb3RIYXNoAwMJAAACBRFyb290SGFzaEJ5dGVzU2l6ZQAABgkAAAIFEXJvb3RIYXNoQnl0ZXNTaXplBQ5ST09UX0hBU0hfU0laRQYJAAIBCQCsAgIJAKwCAgkArAICAiVUcmFuc2ZlcnMgcm9vdCBoYXNoIHNob3VsZCBoYXZlIDAgb3IgCQCkAwEFDlJPT1RfSEFTSF9TSVpFAgwgYnl0ZXMsIGdvdCAJAKQDAQURcm9vdEhhc2hCeXRlc1NpemUDCQAAAgUNY2hlY2tSb290SGFzaAUNY2hlY2tSb290SGFzaAQOYmxvY2tNZXRhQnl0ZXMJAMsBAgkAywECCQDLAQIJAMsBAgkAywECCQCaAwEFC2Jsb2NrSGVpZ2h0CQCaAwEFBmhlaWdodAkA3QQBBQ5ibG9ja1BhcmVudEhleAkAmgMBBQdjaGFpbklkBRllMmNUcmFuc2ZlcnNSb290SGFzaEJ5dGVzCQCaAwEFFGxhc3RDMkVUcmFuc2ZlckluZGV4CQELQmluYXJ5RW50cnkCCQCsAgIFCmJsb2NrTWV0YUsFDGJsb2NrSGFzaEhleAUOYmxvY2tNZXRhQnl0ZXMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDGxhc3RIZWlnaHRCeQIFbWluZXIHY2hhaW5JZAQHJG1hdGNoMAkAnwgBCQESY2hhaW5MYXN0SGVpZ2h0S2V5AgUHY2hhaW5JZAUFbWluZXIDCQABAgUHJG1hdGNoMAIDSW50BAFoBQckbWF0Y2gwBQFoBAlibG9ja0hhc2gJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkArAICCQCsAgICBWNoYWluCQCkAwEFB2NoYWluSWQCC0xhc3RNaW5lZEJ5CQClCAEFBW1pbmVyCAkBCWJsb2NrTWV0YQEFCWJsb2NrSGFzaAJfMQALJHQwNzcxMDg2NDUECWhpdFNvdXJjZQQHJG1hdGNoMAgFCWxhc3RCbG9jawN2cmYDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQDdnJmBQckbWF0Y2gwBQN2cmYIBQlsYXN0QmxvY2sTZ2VuZXJhdGlvblNpZ25hdHVyZQoBDHByb2Nlc3NNaW5lcgIEcHJldgVtaW5lcgQLJHQwNzk3NzgwNDAFBHByZXYECXByZXZNaW5lcggFCyR0MDc5Nzc4MDQwAl8xBBBwcmV2VG90YWxCYWxhbmNlCAULJHQwNzk3NzgwNDACXzIECXByZXZEZWxheQgFCyR0MDc5Nzc4MDQwAl8zBApwcmV2TWluZXJzCAULJHQwNzk3NzgwNDACXzQEDG1pbmVyQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQUFbWluZXIED3dhdmVzR2VuQmFsYW5jZQgJAO8HAQUMbWluZXJBZGRyZXNzCmdlbmVyYXRpbmcEDG1pbmVyQmFsYW5jZQkBEWdlbmVyYXRpbmdCYWxhbmNlAQUMbWluZXJBZGRyZXNzAwMJAGYCBQtNSU5fQkFMQU5DRQUPd2F2ZXNHZW5CYWxhbmNlBgkAZwIAAAUMbWluZXJCYWxhbmNlBQRwcmV2BAluZXh0RGVsYXkJAIUHAgUMbWluZXJBZGRyZXNzBQxtaW5lckJhbGFuY2UDCQBmAgUJcHJldkRlbGF5BQluZXh0RGVsYXkJAJYKBAUFbWluZXIJAGQCBRBwcmV2VG90YWxCYWxhbmNlBQxtaW5lckJhbGFuY2UFCW5leHREZWxheQkAzQgCBQpwcmV2TWluZXJzBQVtaW5lcgkAlgoEBQlwcmV2TWluZXIJAGQCBRBwcmV2VG90YWxCYWxhbmNlBQxtaW5lckJhbGFuY2UFCXByZXZEZWxheQkAzQgCBQpwcmV2TWluZXJzBQVtaW5lcgoAAiRsBQlhbGxNaW5lcnMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQCAAAABQdJTlRfTUFYBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDHByb2Nlc3NNaW5lcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyABFjb21wdXRlZEdlbmVyYXRvcggFCyR0MDc3MTA4NjQ1Al8xABRjb21wdXRlZFRvdGFsQmFsYW5jZQgFCyR0MDc3MTA4NjQ1Al8yAAskdDA4NjQ3ODcxMwkBCWJsb2NrTWV0YQEFEm1haW5DaGFpbkxhc3RCbG9jawAMbWNsYklnbm9yZWQxCAULJHQwODY0Nzg3MTMCXzEADm1haW5DaGFpbkVwb2NoCAULJHQwODY0Nzg3MTMCXzIBI2NhbGN1bGF0ZUZpbmFsaXplZEJsb2NrSGFzaEFuZEVwb2NoAwhjdXJNaW5lcgxjdXJQcmV2RXBvY2gQY3VyTGFzdEJsb2NrSGFzaAQLaGFsZkJhbGFuY2UJAGkCBRRjb21wdXRlZFRvdGFsQmFsYW5jZQACCgEEc3RlcAIEcHJldgRuZXh0BAskdDA4OTUxOTAyNAUEcHJldgQJdGhpc0Vwb2NoCAULJHQwODk1MTkwMjQCXzEEF21heWJlRmluYWxpemVkQmxvY2tIYXNoCAULJHQwODk1MTkwMjQCXzIEDHRvdGFsQmFsYW5jZQgFCyR0MDg5NTE5MDI0Al8zBApwcmV2TWluZXJzCAULJHQwODk1MTkwMjQCXzQEByRtYXRjaDAFF21heWJlRmluYWxpemVkQmxvY2tIYXNoAwkAAQIFByRtYXRjaDACBFVuaXQECyR0MDkwOTE5MjU3AwkAAAIFCXRoaXNFcG9jaAUGaGVpZ2h0CQCVCgMFCGN1ck1pbmVyBQxjdXJQcmV2RXBvY2gFEGN1ckxhc3RCbG9ja0hhc2gJAQV2YWx1ZQEJAQllcG9jaE1ldGEBBQl0aGlzRXBvY2gEBW1pbmVyCAULJHQwOTA5MTkyNTcCXzEECXByZXZFcG9jaAgFCyR0MDkwOTE5MjU3Al8yBA1sYXN0QmxvY2tIYXNoCAULJHQwOTA5MTkyNTcCXzMDAwkAAAIFCXByZXZFcG9jaAAABgkAZwIJAGUCBQZoZWlnaHQFCXRoaXNFcG9jaABkCQCWCgQFCXRoaXNFcG9jaAUNbGFzdEJsb2NrSGFzaAUMdG90YWxCYWxhbmNlBQlhbGxNaW5lcnMECyR0MDk0MTE5NjEzAwkBD2NvbnRhaW5zRWxlbWVudAIFCnByZXZNaW5lcnMFBW1pbmVyCQCUCgIFDHRvdGFsQmFsYW5jZQUKcHJldk1pbmVycwkAlAoCCQBkAgUMdG90YWxCYWxhbmNlCQERZ2VuZXJhdGluZ0JhbGFuY2UBBQVtaW5lcgkAzAgCBQVtaW5lcgUKcHJldk1pbmVycwQPbmV3VG90YWxCYWxhbmNlCAULJHQwOTQxMTk2MTMCXzEECW5ld01pbmVycwgFCyR0MDk0MTE5NjEzAl8yAwkAZgIFD25ld1RvdGFsQmFsYW5jZQULaGFsZkJhbGFuY2UJAJYKBAUJdGhpc0Vwb2NoBQ1sYXN0QmxvY2tIYXNoBQ9uZXdUb3RhbEJhbGFuY2UFCWFsbE1pbmVycwkAlgoEBQlwcmV2RXBvY2gFBHVuaXQFD25ld1RvdGFsQmFsYW5jZQUJbmV3TWluZXJzBQRwcmV2BAskdDA5ODQ2OTk0MwoAAiRsBQtvZmZzZXRzXzEwMAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAUGaGVpZ2h0BQR1bml0AAAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEEc3RlcAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIVTGlzdCBzaXplIGV4Y2VlZHMgMTAwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQEDmZpbmFsaXplZEVwb2NoCAULJHQwOTg0Njk5NDMCXzEEFWZpbmFsaXplZEJsb2NrSGFzaE9wdAgFCyR0MDk4NDY5OTQzAl8yCQCUCgIEByRtYXRjaDAFFWZpbmFsaXplZEJsb2NrSGFzaE9wdAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEEmZpbmFsaXplZEJsb2NrSGFzaAUHJG1hdGNoMAUSZmluYWxpemVkQmxvY2tIYXNoCAkBBXZhbHVlAQkBCWVwb2NoTWV0YQEFDmZpbmFsaXplZEVwb2NoAl8zBQ5maW5hbGl6ZWRFcG9jaAERc3VwcG9ydGluZ0JhbGFuY2UBB2NoYWluSWQKAQphZGRCYWxhbmNlAgNhY2MMZ2VuZXJhdG9yU3RyBA0kdDAxMDIyNjEwMjYyBQNhY2MEDHRvdGFsQmFsYW5jZQgFDSR0MDEwMjI2MTAyNjICXzEECmdlbmVyYXRvcnMIBQ0kdDAxMDIyNjEwMjYyAl8yBAlnZW5lcmF0b3IJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDGdlbmVyYXRvclN0cgMJAQ9jb250YWluc0VsZW1lbnQCBQpnZW5lcmF0b3JzBQlnZW5lcmF0b3IFA2FjYwQHYmFsYW5jZQkBEWdlbmVyYXRpbmdCYWxhbmNlAQUJZ2VuZXJhdG9yCQCUCgIJAGQCBQx0b3RhbEJhbGFuY2UFB2JhbGFuY2UJAM0IAgUKZ2VuZXJhdG9ycwUJZ2VuZXJhdG9yBA1hbGxHZW5lcmF0b3JzCQC8CQIJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAQ1zdXBwb3J0ZXJzS2V5AQUHY2hhaW5JZAUDU0VQBANyZXMKAAIkbAUNYWxsR2VuZXJhdG9ycwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgAABQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCmFkZEJhbGFuY2UCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFUxpc3Qgc2l6ZSBleGNlZWRzIDEwMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkCAUDcmVzAl8xAQ9pc0NvbnRyYWN0U2V0dXAACQEJaXNEZWZpbmVkAQkAnwgBBQ5taW5lclJld2FyZEtleQERZW5zdXJlTWluaW5nRXBvY2gBCWdlbmVyYXRvcgMJAQIhPQIJAKUIAQUJZ2VuZXJhdG9yBRFjb21wdXRlZEdlbmVyYXRvcgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkA2AQBCAUJZ2VuZXJhdG9yBWJ5dGVzAhsgaXMgbm90IGFsbG93ZWQgdG8gbWluZSBpbiAJAKQDAQUGaGVpZ2h0AhEgZXBvY2guIEV4cGVjdGVkIAURY29tcHV0ZWRHZW5lcmF0b3IFBHVuaXQBEmlzUmVmZXJlbmNlQ29ycmVjdAIJcmVmZXJlbmNlCWxhc3RCbG9jawMJAAACBQlyZWZlcmVuY2UFCWxhc3RCbG9jawUEdW5pdAkAAgEJAKwCAgkArAICCQCsAgICMEV4cGVjdGVkIGEgcmVmZXJlbmNlIHRvIHRoZSBjaGFpbiBsYXN0IGJsb2NrOiAweAUJbGFzdEJsb2NrAgkuIEdvdDogMHgFCXJlZmVyZW5jZQEPY2hhaW5Jc0luYWN0aXZlAQdjaGFpbklkBAxmaXJzdEJsb2NrSWQJARFAZXh0ck5hdGl2ZSgxMDU4KQEJARRjaGFpbkZpcnN0QmxvY2tJZEtleQEFB2NoYWluSWQEFGZpcnN0VmFsaWRBbHRDaGFpbklkCQELdmFsdWVPckVsc2UCCQCfCAEFF2ZpcnN0VmFsaWRBbHRDaGFpbklkS2V5AAADCQBmAgUUZmlyc3RWYWxpZEFsdENoYWluSWQFB2NoYWluSWQGCQBmAggJAQlibG9ja01ldGEBCQERQGV4dHJOYXRpdmUoMTA1OCkBBRFmaW5hbGl6ZWRCbG9ja0tleQJfMQgJAQlibG9ja01ldGEBBQxmaXJzdEJsb2NrSWQCXzEBDG1pbmVyQ2hhaW5JZAEFbWluZXIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBD21pbmVyQ2hhaW5JZEtleQEFBW1pbmVyCQCfCAEJAKwCAgIJY2hhaW5JZE9mCQClCAEFBW1pbmVyAR1lbnN1cmVFeHBlY3RlZE9ySW5hY3RpdmVDaGFpbgMJZ2VuZXJhdG9yD2V4cGVjdGVkQ2hhaW5JZBBjaGVja0hlaWdodEJsb2NrBA9oZWlnaHRJc0NvcnJlY3QEByRtYXRjaDAFEGNoZWNrSGVpZ2h0QmxvY2sDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAlibG9ja0hhc2gFByRtYXRjaDAEFGxhc3RNaW5lZEJsb2NrSGVpZ2h0CQEMbGFzdEhlaWdodEJ5AgUJZ2VuZXJhdG9yBQttYWluQ2hhaW5JZAkAZgIJAGQCCAkBCWJsb2NrTWV0YQEFCWJsb2NrSGFzaAJfMQABBRRsYXN0TWluZWRCbG9ja0hlaWdodAYEByRtYXRjaDAJAQxtaW5lckNoYWluSWQBBQlnZW5lcmF0b3IDCQABAgUHJG1hdGNoMAIDSW50BAljdXJyZW50SWQFByRtYXRjaDADAwkAAAIFCWN1cnJlbnRJZAUPZXhwZWN0ZWRDaGFpbklkBgMJAQ9jaGFpbklzSW5hY3RpdmUBBQljdXJyZW50SWQFD2hlaWdodElzQ29ycmVjdAcFBHVuaXQJAAIBCQCsAgICHG1pbmVyIGlzIG1pbmluZyBvdGhlciBjaGFpbiAJAKQDAQUJY3VycmVudElkBQR1bml0AAxoZWlnaHRTdHJpbmcJAKwCAgILIGF0IGhlaWdodCAJAKQDAQUGaGVpZ2h0AQV2cmZBdAEGaGVpZ2h0CQETdmFsdWVPckVycm9yTWVzc2FnZQIICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAO0HAQUGaGVpZ2h0CQCsAgICG2xhc3QgYmxvY2sgaXMgbm90IGF2YWlsYWJsZQUMaGVpZ2h0U3RyaW5nA3ZyZgkArAICAhRWUkYgaXMgbm90IGF2YWlsYWJsZQUMaGVpZ2h0U3RyaW5nARJlbnN1cmVDb3JyZWN0RXBvY2gBC2V4cGVjdGVkVlJGBAlhY3R1YWxWUkYJAQV2cmZBdAEFBmhlaWdodAMJAAACBQtleHBlY3RlZFZSRgUJYWN0dWFsVlJGBQR1bml0CQACAQkArAICCQCsAgIJAKwCAgkArAICAg1FeHBlY3RlZCBWUkYgCQDYBAEFC2V4cGVjdGVkVlJGAhcgZG9lcyBub3QgbWF0Y2ggYWN0dWFsIAkA2AQBBQlhY3R1YWxWUkYFDGhlaWdodFN0cmluZwEMYWRkU3VwcG9ydGVyAgdjaGFpbklkCWdlbmVyYXRvcgQNc3VwcG9ydGVyc1N0cgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBDXN1cHBvcnRlcnNLZXkBBQdjaGFpbklkBApzdXBwb3J0ZXJzCQC8CQIFDXN1cHBvcnRlcnNTdHIFA1NFUAMJAQ9jb250YWluc0VsZW1lbnQCBQpzdXBwb3J0ZXJzCQClCAEFCWdlbmVyYXRvcgUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1zdXBwb3J0ZXJzS2V5AQUHY2hhaW5JZAkArAICCQCsAgIFDXN1cHBvcnRlcnNTdHIFA1NFUAkApQgBBQlnZW5lcmF0b3IFA25pbAEJc2V0T3JGYWlsAgVmbGFncwVpbmRleAMJAGYCAAAFBWluZGV4CQACAQkArAICAiJDYW4ndCB3aXRoZHJhdyBhdCBuZWdhdGl2ZSBpbmRleDogCQCkAwEFBWluZGV4BAlmbGFnc1NpemUJALECAQUFZmxhZ3MDCQBnAgUFaW5kZXgFCWZsYWdzU2l6ZQQJYWRkWmVyb2VzCQBlAgUFaW5kZXgFCWZsYWdzU2l6ZQMJAGYCBQlhZGRaZXJvZXMJALECAQUJemVyb2VzU3RyCQACAQkArAICCQCsAgICCkNhbid0IGFkZCAJAKQDAQUJYWRkWmVyb2VzAiUgZW1wdHkgZmxhZ3MuIENvbnRhY3Qgd2l0aCBkZXZlbG9wZXJzCQCsAgIJAKwCAgUFZmxhZ3MJAK8CAgUJemVyb2VzU3RyBQlhZGRaZXJvZXMCATEEBHRhaWwJALACAgUFZmxhZ3MFBWluZGV4BAdhdEluZGV4CQCvAgIFBHRhaWwAAQMJAAACBQdhdEluZGV4AgEwCQCsAgIJAKwCAgkArwICBQVmbGFncwUFaW5kZXgCATEJALACAgUEdGFpbAABCQACAQkArAICCQCsAgICClRyYW5zZmVyICMJAKQDAQUFaW5kZXgCFyBoYXMgYmVlbiBhbHJlYWR5IHRha2VuARF2YWxpZGF0ZUJsb2NrSGFzaAEGaGV4U3RyBAxkZWNvZGVkQnl0ZXMJAN0EAQUGaGV4U3RyAwkBAiE9AgkAyAEBBQxkZWNvZGVkQnl0ZXMFD0JMT0NLX0hBU0hfU0laRQkAAgECF2ludmFsaWQgYmxvY2sgaWQgbGVuZ3RoBQZoZXhTdHIBHWdldFVwZGF0ZUZpbmFsaXplZEJsb2NrQWN0aW9uAwZjYWxsZXIPbmV3QmxvY2tIYXNoSGV4CXByZXZFcG9jaAQVY3VyRmluYWxpemVkQmxvY2tNZXRhCQEJYmxvY2tNZXRhAQkBEUBleHRyTmF0aXZlKDEwNTgpAQURZmluYWxpemVkQmxvY2tLZXkEDSR0MDE0MjczMTQzOTMJASNjYWxjdWxhdGVGaW5hbGl6ZWRCbG9ja0hhc2hBbmRFcG9jaAMFBmNhbGxlcgUJcHJldkVwb2NoBQ9uZXdCbG9ja0hhc2hIZXgEFW5ld0ZpbmFsaXplZEJsb2NrSGFzaAgFDSR0MDE0MjczMTQzOTMCXzEEEW5ld0ZpbmFsaXplZEVwb2NoCAUNJHQwMTQyNzMxNDM5MwJfMgQNcmV3YXJkQWN0aW9ucwQHJG1hdGNoMAkAoggBBQ1kYW9BZGRyZXNzS2V5AwkAAQIFByRtYXRjaDACBlN0cmluZwQEYWRkcgUHJG1hdGNoMAMJAAACBRFuZXdGaW5hbGl6ZWRFcG9jaAgFFWN1ckZpbmFsaXplZEJsb2NrTWV0YQJfMgUDbmlsCgETY291bnROb25FbXB0eUVwb2NocwIDYWNjBG5leHQDCQAAAggFA2FjYwJfMQgFFWN1ckZpbmFsaXplZEJsb2NrTWV0YQJfMgUDYWNjBAckbWF0Y2gxCQEJZXBvY2hNZXRhAQgFA2FjYwJfMQMJAAECBQckbWF0Y2gxAhYoQWRkcmVzcywgSW50LCBTdHJpbmcpBAFtBQckbWF0Y2gxCQCUCgIIBQFtAl8yCQBkAggFA2FjYwJfMgABBQNhY2MEDnN0YXJ0RnJvbUVwb2NoAwkAAAIFEW5ld0ZpbmFsaXplZEVwb2NoBQZoZWlnaHQFCXByZXZFcG9jaAgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBCWVwb2NoTWV0YQEFEW5ld0ZpbmFsaXplZEVwb2NoAhdubyBwcmV2IGVwb2NoIGZvciBzdGFydAJfMgQKZGFvUmV3YXJkcwoAAiRsBQtvZmZzZXRzXzEwMAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUOc3RhcnRGcm9tRXBvY2gAAQoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQETY291bnROb25FbXB0eUVwb2NocwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIVTGlzdCBzaXplIGV4Y2VlZHMgMTAwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQEDXJlaXNzdWVBbW91bnQJAGgCCAUKZGFvUmV3YXJkcwJfMgkBEUBleHRyTmF0aXZlKDEwNTUpAQUMZGFvUmV3YXJkS2V5BAd0b2tlbklkCQDZBAEJARFAZXh0ck5hdGl2ZSgxMDU4KQEFCnRva2VuSWRLZXkJAMwIAgkBB1JlaXNzdWUDBQd0b2tlbklkBQ1yZWlzc3VlQW1vdW50BgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUEYWRkcgUNcmVpc3N1ZUFtb3VudAUHdG9rZW5JZAUDbmlsBQNuaWwJAM4IAgUNcmV3YXJkQWN0aW9ucwMDCQAAAgUVbmV3RmluYWxpemVkQmxvY2tIYXNoBQ9uZXdCbG9ja0hhc2hIZXgGCQBmAggJAQlibG9ja01ldGEBBRVuZXdGaW5hbGl6ZWRCbG9ja0hhc2gCXzEIBRVjdXJGaW5hbGl6ZWRCbG9ja01ldGECXzEJAMwIAgkBC1N0cmluZ0VudHJ5AgURZmluYWxpemVkQmxvY2tLZXkFFW5ld0ZpbmFsaXplZEJsb2NrSGFzaAUDbmlsBQNuaWwJAWkBD2V4dGVuZE1haW5DaGFpbgUMYmxvY2tIYXNoSGV4DHJlZmVyZW5jZUhleAN2cmYXZTJjVHJhbnNmZXJzUm9vdEhhc2hIZXgUbGFzdEMyRVRyYW5zZmVySW5kZXgEDmNoZWNrQmxvY2tIYXNoCQERdmFsaWRhdGVCbG9ja0hhc2gBBQxibG9ja0hhc2hIZXgDCQAAAgUOY2hlY2tCbG9ja0hhc2gFDmNoZWNrQmxvY2tIYXNoBApjaGVja0Vwb2NoCQESZW5zdXJlQ29ycmVjdEVwb2NoAQUDdnJmAwkAAAIFCmNoZWNrRXBvY2gFCmNoZWNrRXBvY2gECmNoZWNrQ2hhaW4JAR1lbnN1cmVFeHBlY3RlZE9ySW5hY3RpdmVDaGFpbgMIBQFpDG9yaWdpbkNhbGxlcgULbWFpbkNoYWluSWQFBHVuaXQDCQAAAgUKY2hlY2tDaGFpbgUKY2hlY2tDaGFpbgQOY2hlY2tSZWZlcmVuY2UJARJpc1JlZmVyZW5jZUNvcnJlY3QCBQxyZWZlcmVuY2VIZXgFEm1haW5DaGFpbkxhc3RCbG9jawMJAAACBQ5jaGVja1JlZmVyZW5jZQUOY2hlY2tSZWZlcmVuY2UEDmNoZWNrVHJhbnNmZXJzCQEWZW5zdXJlQ29ycmVjdFRyYW5zZmVycwMICQEJYmxvY2tNZXRhAQUMcmVmZXJlbmNlSGV4Al82BRRsYXN0QzJFVHJhbnNmZXJJbmRleAYDCQAAAgUOY2hlY2tUcmFuc2ZlcnMFDmNoZWNrVHJhbnNmZXJzBA10aGlzRXBvY2hNZXRhBAckbWF0Y2gwCQEJZXBvY2hNZXRhAQUGaGVpZ2h0AwkAAQIFByRtYXRjaDACBFVuaXQJAQtTdHJpbmdFbnRyeQIJAQxlcG9jaE1ldGFLZXkBBQZoZWlnaHQJAKwCAgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQxvcmlnaW5DYWxsZXIFA1NFUAkApAMBBQ5tYWluQ2hhaW5FcG9jaAUDU0VQBQxibG9ja0hhc2hIZXgEBW90aGVyBQckbWF0Y2gwCQACAQIVRXBvY2ggYWxyZWFkeSBzdGFydGVkAwkAAAIFDXRoaXNFcG9jaE1ldGEFDXRoaXNFcG9jaE1ldGEEDmNoZWNrR2VuZXJhdG9yCQERZW5zdXJlTWluaW5nRXBvY2gBCAUBaQxvcmlnaW5DYWxsZXIDCQAAAgUOY2hlY2tHZW5lcmF0b3IFDmNoZWNrR2VuZXJhdG9yBBR1cGRhdGVGaW5hbGl6ZWRCbG9jawkBHWdldFVwZGF0ZUZpbmFsaXplZEJsb2NrQWN0aW9uAwgFAWkMb3JpZ2luQ2FsbGVyBQxibG9ja0hhc2hIZXgFDm1haW5DaGFpbkVwb2NoBA5uZXdDaGFpbkhlaWdodAkAZAIFD21haW5DaGFpbkhlaWdodAABCQDOCAIJAMwIAgkBEG1rQmxvY2tNZXRhRW50cnkGBQxibG9ja0hhc2hIZXgFDm5ld0NoYWluSGVpZ2h0BRJtYWluQ2hhaW5MYXN0QmxvY2sFC21haW5DaGFpbklkBRdlMmNUcmFuc2ZlcnNSb290SGFzaEhleAUUbGFzdEMyRVRyYW5zZmVySW5kZXgJAMwIAgkBEG1rQ2hhaW5NZXRhRW50cnkDBQttYWluQ2hhaW5JZAUObmV3Q2hhaW5IZWlnaHQFDGJsb2NrSGFzaEhleAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBD21pbmVyQ2hhaW5JZEtleQEIBQFpDG9yaWdpbkNhbGxlcgULbWFpbkNoYWluSWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARJjaGFpbkxhc3RIZWlnaHRLZXkCBQttYWluQ2hhaW5JZAgFAWkMb3JpZ2luQ2FsbGVyBQ5uZXdDaGFpbkhlaWdodAkAzAgCBQ10aGlzRXBvY2hNZXRhBQNuaWwFFHVwZGF0ZUZpbmFsaXplZEJsb2NrCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDXN0YXJ0QWx0Q2hhaW4FDGJsb2NrSGFzaEhleAxyZWZlcmVuY2VIZXgDdnJmF2UyY1RyYW5zZmVyc1Jvb3RIYXNoSGV4FGxhc3RDMkVUcmFuc2ZlckluZGV4BA5jaGVja0Jsb2NrSGFzaAkBEXZhbGlkYXRlQmxvY2tIYXNoAQUMYmxvY2tIYXNoSGV4AwkAAAIFDmNoZWNrQmxvY2tIYXNoBQ5jaGVja0Jsb2NrSGFzaAQKY2hlY2tFcG9jaAkBEmVuc3VyZUNvcnJlY3RFcG9jaAEFA3ZyZgMJAAACBQpjaGVja0Vwb2NoBQpjaGVja0Vwb2NoBA0kdDAxNzI5MDE3NDAzCQEJYmxvY2tNZXRhAQUMcmVmZXJlbmNlSGV4BA5yZWZDaGFpbkhlaWdodAgFDSR0MDE3MjkwMTc0MDMCXzEECHJlZkVwb2NoCAUNJHQwMTcyOTAxNzQwMwJfMgQLcmVmSWdub3JlZDEIBQ0kdDAxNzI5MDE3NDAzAl8zBAtyZWZJZ25vcmVkMggFDSR0MDE3MjkwMTc0MDMCXzQEC3JlZklnbm9yZWQzCAUNJHQwMTcyOTAxNzQwMwJfNQQQcmVmVHJhbnNmZXJJbmRleAgFDSR0MDE3MjkwMTc0MDMCXzYEDmZpbmFsaXplZEVwb2NoCAkBCWJsb2NrTWV0YQEJARFAZXh0ck5hdGl2ZSgxMDU4KQEFEWZpbmFsaXplZEJsb2NrS2V5Al8yBAhlcG9jaFJlZgMJAGcCBQhyZWZFcG9jaAUOZmluYWxpemVkRXBvY2gFCHJlZkVwb2NoCQACAQkArAICCQCsAgIJAKwCAgkArAICAiNDYW4gbm90IHN0YXJ0IGFsdCBjaGFpbiBmcm9tIGVwb2NoIAkApAMBBQhyZWZFcG9jaAIILCBlcG9jaCAJAKQDAQUOZmluYWxpemVkRXBvY2gCDSBpcyBmaW5hbGl6ZWQECmNoZWNrQ2hhaW4JAR1lbnN1cmVFeHBlY3RlZE9ySW5hY3RpdmVDaGFpbgMIBQFpDG9yaWdpbkNhbGxlcgULbWFpbkNoYWluSWQFDHJlZmVyZW5jZUhleAMJAAACBQpjaGVja0NoYWluBQpjaGVja0NoYWluBA5jaGVja1RyYW5zZmVycwkBFmVuc3VyZUNvcnJlY3RUcmFuc2ZlcnMDBRByZWZUcmFuc2ZlckluZGV4BRRsYXN0QzJFVHJhbnNmZXJJbmRleAYDCQAAAgUOY2hlY2tUcmFuc2ZlcnMFDmNoZWNrVHJhbnNmZXJzBApuZXdDaGFpbklkCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ5sYXN0Q2hhaW5JZEtleQAAAAEEDm5ld0NoYWluSGVpZ2h0CQBkAgUOcmVmQ2hhaW5IZWlnaHQAAQQNdGhpc0Vwb2NoTWV0YQQHJG1hdGNoMAkBCWVwb2NoTWV0YQEFBmhlaWdodAMJAAECBQckbWF0Y2gwAgRVbml0CQELU3RyaW5nRW50cnkCCQEMZXBvY2hNZXRhS2V5AQUGaGVpZ2h0CQCsAgIJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBQNTRVAJAKQDAQUIZXBvY2hSZWYFA1NFUAUMYmxvY2tIYXNoSGV4BAVvdGhlcgUHJG1hdGNoMAkAAgECFUVwb2NoIGFscmVhZHkgc3RhcnRlZAQOY2hlY2tHZW5lcmF0b3IJARFlbnN1cmVNaW5pbmdFcG9jaAEIBQFpDG9yaWdpbkNhbGxlcgMJAAACBQ5jaGVja0dlbmVyYXRvcgUOY2hlY2tHZW5lcmF0b3IJAMwIAgUNdGhpc0Vwb2NoTWV0YQkAzAgCCQEQbWtCbG9ja01ldGFFbnRyeQYFDGJsb2NrSGFzaEhleAUObmV3Q2hhaW5IZWlnaHQFDHJlZmVyZW5jZUhleAUKbmV3Q2hhaW5JZAUXZTJjVHJhbnNmZXJzUm9vdEhhc2hIZXgFFGxhc3RDMkVUcmFuc2ZlckluZGV4CQDMCAIJAQtTdHJpbmdFbnRyeQIJARRjaGFpbkZpcnN0QmxvY2tJZEtleQEFCm5ld0NoYWluSWQFDGJsb2NrSGFzaEhleAkAzAgCCQEQbWtDaGFpbk1ldGFFbnRyeQMFCm5ld0NoYWluSWQFDm5ld0NoYWluSGVpZ2h0BQxibG9ja0hhc2hIZXgJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ9taW5lckNoYWluSWRLZXkBCAUBaQxvcmlnaW5DYWxsZXIFCm5ld0NoYWluSWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARJjaGFpbkxhc3RIZWlnaHRLZXkCBQpuZXdDaGFpbklkCAUBaQxvcmlnaW5DYWxsZXIFDm5ld0NoYWluSGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESY2hhaW5MYXN0SGVpZ2h0S2V5AgULbWFpbkNoYWluSWQIBQFpDG9yaWdpbkNhbGxlcgUObmV3Q2hhaW5IZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDXN1cHBvcnRlcnNLZXkBBQpuZXdDaGFpbklkCQClCAEIBQFpDG9yaWdpbkNhbGxlcgkAzAgCCQEMSW50ZWdlckVudHJ5AgUObGFzdENoYWluSWRLZXkFCm5ld0NoYWluSWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5leHRlbmRBbHRDaGFpbgYMYmxvY2tIYXNoSGV4DHJlZmVyZW5jZUhleAN2cmYHY2hhaW5JZBdlMmNUcmFuc2ZlcnNSb290SGFzaEhleBRsYXN0QzJFVHJhbnNmZXJJbmRleAQOY2hlY2tCbG9ja0hhc2gJARF2YWxpZGF0ZUJsb2NrSGFzaAEFDGJsb2NrSGFzaEhleAMJAAACBQ5jaGVja0Jsb2NrSGFzaAUOY2hlY2tCbG9ja0hhc2gECmNoZWNrRXBvY2gJARJlbnN1cmVDb3JyZWN0RXBvY2gBBQN2cmYDCQAAAgUKY2hlY2tFcG9jaAUKY2hlY2tFcG9jaAQTY2hhaW5GaXJzdEJsb2NrTWV0YQkBCWJsb2NrTWV0YQEJARFAZXh0ck5hdGl2ZSgxMDU4KQEJARRjaGFpbkZpcnN0QmxvY2tJZEtleQEFB2NoYWluSWQECmNoZWNrQ2hhaW4JAR1lbnN1cmVFeHBlY3RlZE9ySW5hY3RpdmVDaGFpbgMIBQFpDG9yaWdpbkNhbGxlcgUHY2hhaW5JZAkA3AQBCAUTY2hhaW5GaXJzdEJsb2NrTWV0YQJfMwMJAAACBQpjaGVja0NoYWluBQpjaGVja0NoYWluBA0kdDAxOTcxNjE5NzcwCQEJY2hhaW5NZXRhAQUHY2hhaW5JZAQLY2hhaW5IZWlnaHQIBQ0kdDAxOTcxNjE5NzcwAl8xBA5jaGFpbkxhc3RCbG9jawgFDSR0MDE5NzE2MTk3NzACXzIEDmNoZWNrUmVmZXJlbmNlCQESaXNSZWZlcmVuY2VDb3JyZWN0AgUMcmVmZXJlbmNlSGV4BQ5jaGFpbkxhc3RCbG9jawMJAAACBQ5jaGVja1JlZmVyZW5jZQUOY2hlY2tSZWZlcmVuY2UEDmNoZWNrVHJhbnNmZXJzCQEWZW5zdXJlQ29ycmVjdFRyYW5zZmVycwMICQEJYmxvY2tNZXRhAQUMcmVmZXJlbmNlSGV4Al82BRRsYXN0QzJFVHJhbnNmZXJJbmRleAYDCQAAAgUOY2hlY2tUcmFuc2ZlcnMFDmNoZWNrVHJhbnNmZXJzBA5uZXdDaGFpbkhlaWdodAkAZAIFC2NoYWluSGVpZ2h0AAEECXByZXZFcG9jaAgJAQlibG9ja01ldGEBBQxyZWZlcmVuY2VIZXgCXzIEE3VwZGF0ZU1haW5DaGFpbkRhdGEDCQBmAgkBEXN1cHBvcnRpbmdCYWxhbmNlAQUHY2hhaW5JZAkAaQIFFGNvbXB1dGVkVG90YWxCYWxhbmNlAAIEC2xhc3RDaGFpbklkCQELdmFsdWVPckVsc2UCCQCfCAEFDmxhc3RDaGFpbklkS2V5AAAEFHVwZGF0ZUZpbmFsaXplZEJsb2NrCQEdZ2V0VXBkYXRlRmluYWxpemVkQmxvY2tBY3Rpb24DCAUBaQxvcmlnaW5DYWxsZXIFDGJsb2NrSGFzaEhleAUJcHJldkVwb2NoCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJARRjaGFpbkZvcmtlZEhlaWdodEtleQEFC21haW5DaGFpbklkCAUTY2hhaW5GaXJzdEJsb2NrTWV0YQJfMQkAzAgCCQEMSW50ZWdlckVudHJ5AgUObWFpbkNoYWluSWRLZXkFB2NoYWluSWQJAMwIAgkBDEludGVnZXJFbnRyeQIFF2ZpcnN0VmFsaWRBbHRDaGFpbklkS2V5CQBkAgULbGFzdENoYWluSWQAAQUDbmlsBRR1cGRhdGVGaW5hbGl6ZWRCbG9jawUDbmlsBA10aGlzRXBvY2hNZXRhBAckbWF0Y2gwCQEJZXBvY2hNZXRhAQUGaGVpZ2h0AwkAAQIFByRtYXRjaDACBFVuaXQJAQtTdHJpbmdFbnRyeQIJAQxlcG9jaE1ldGFLZXkBBQZoZWlnaHQJAKwCAgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQxvcmlnaW5DYWxsZXIFA1NFUAkApAMBBQlwcmV2RXBvY2gFA1NFUAUMYmxvY2tIYXNoSGV4BAVvdGhlcgUHJG1hdGNoMAkAAgECFUVwb2NoIGFscmVhZHkgc3RhcnRlZAMJAAACBQ10aGlzRXBvY2hNZXRhBQ10aGlzRXBvY2hNZXRhBA5jaGVja0dlbmVyYXRvcgkBEWVuc3VyZU1pbmluZ0Vwb2NoAQgFAWkMb3JpZ2luQ2FsbGVyAwkAAAIFDmNoZWNrR2VuZXJhdG9yBQ5jaGVja0dlbmVyYXRvcgQddXBkYXRlTWFpbkNoYWluTGFzdE1pbmVkQmxvY2sDAwkAAAIFE3VwZGF0ZU1haW5DaGFpbkRhdGEFA25pbAkBAiE9AgkBC3ZhbHVlT3JFbHNlAgkBDG1pbmVyQ2hhaW5JZAEIBQFpDG9yaWdpbkNhbGxlcgAABQdjaGFpbklkBwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmNoYWluTGFzdEhlaWdodEtleQIFC21haW5DaGFpbklkCAUBaQxvcmlnaW5DYWxsZXIIBRNjaGFpbkZpcnN0QmxvY2tNZXRhAl8xBQNuaWwFA25pbAkAzggCCQDOCAIJAM4IAgkAzAgCCQEQbWtCbG9ja01ldGFFbnRyeQYFDGJsb2NrSGFzaEhleAUObmV3Q2hhaW5IZWlnaHQFDHJlZmVyZW5jZUhleAUHY2hhaW5JZAUXZTJjVHJhbnNmZXJzUm9vdEhhc2hIZXgFFGxhc3RDMkVUcmFuc2ZlckluZGV4CQDMCAIJARBta0NoYWluTWV0YUVudHJ5AwUHY2hhaW5JZAUObmV3Q2hhaW5IZWlnaHQFDGJsb2NrSGFzaEhleAkAzAgCBQ10aGlzRXBvY2hNZXRhCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPbWluZXJDaGFpbklkS2V5AQgFAWkMb3JpZ2luQ2FsbGVyBQdjaGFpbklkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESY2hhaW5MYXN0SGVpZ2h0S2V5AgUHY2hhaW5JZAgFAWkMb3JpZ2luQ2FsbGVyBQ5uZXdDaGFpbkhlaWdodAUDbmlsBRN1cGRhdGVNYWluQ2hhaW5EYXRhCQEMYWRkU3VwcG9ydGVyAgUHY2hhaW5JZAgFAWkMb3JpZ2luQ2FsbGVyBR11cGRhdGVNYWluQ2hhaW5MYXN0TWluZWRCbG9jawkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQthcHBlbmRCbG9jawQMYmxvY2tIYXNoSGV4DHJlZmVyZW5jZUhleBdlMmNUcmFuc2ZlcnNSb290SGFzaEhleBRsYXN0QzJFVHJhbnNmZXJJbmRleAQLY2hlY2tDYWxsZXIDCQAAAgUOdGhpc0Vwb2NoTWluZXIIBQFpDG9yaWdpbkNhbGxlcgYEByRtYXRjaDAFDnRoaXNFcG9jaE1pbmVyAwkAAQIFByRtYXRjaDACB0FkZHJlc3MECmVwb2NoTWluZXIFByRtYXRjaDAJAAIBCQCsAgICOW5vdCBhbGxvd2VkIHRvIGZvcmdlIGJsb2NrcyBpbiB0aGlzIGVwb2NoLCBleHBlY3RlZCBmcm9tIAkApQgBBQplcG9jaE1pbmVyCQACAQJAbm90IGFsbG93ZWQgdG8gZm9yZ2UgYmxvY2tzIGluIHRoaXMgZXBvY2gsIGVwb2NoIG1pbmVyIGlzIGFic2VudAMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEB2NoYWluSWQJAQt2YWx1ZU9yRWxzZQIJAQxtaW5lckNoYWluSWQBCAUBaQxvcmlnaW5DYWxsZXIFC21haW5DaGFpbklkBA0kdDAyMjExOTIyMTcwCQEJY2hhaW5NZXRhAQUHY2hhaW5JZAQLY2hhaW5IZWlnaHQIBQ0kdDAyMjExOTIyMTcwAl8xBAtsYXN0QmxvY2tJZAgFDSR0MDIyMTE5MjIxNzACXzIEDmNoZWNrUmVmZXJlbmNlCQESaXNSZWZlcmVuY2VDb3JyZWN0AgUMcmVmZXJlbmNlSGV4BQtsYXN0QmxvY2tJZAMJAAACBQ5jaGVja1JlZmVyZW5jZQUOY2hlY2tSZWZlcmVuY2UEDmNoZWNrVHJhbnNmZXJzCQEWZW5zdXJlQ29ycmVjdFRyYW5zZmVycwMICQEJYmxvY2tNZXRhAQUMcmVmZXJlbmNlSGV4Al82BRRsYXN0QzJFVHJhbnNmZXJJbmRleAcDCQAAAgUOY2hlY2tUcmFuc2ZlcnMFDmNoZWNrVHJhbnNmZXJzBA5uZXdDaGFpbkhlaWdodAkAZAIFC2NoYWluSGVpZ2h0AAEEDmNoZWNrQmxvY2tIYXNoCQERdmFsaWRhdGVCbG9ja0hhc2gBBQxibG9ja0hhc2hIZXgDCQAAAgUOY2hlY2tCbG9ja0hhc2gFDmNoZWNrQmxvY2tIYXNoCQDMCAIJARBta0Jsb2NrTWV0YUVudHJ5BgUMYmxvY2tIYXNoSGV4BQ5uZXdDaGFpbkhlaWdodAULbGFzdEJsb2NrSWQFB2NoYWluSWQFF2UyY1RyYW5zZmVyc1Jvb3RIYXNoSGV4BRRsYXN0QzJFVHJhbnNmZXJJbmRleAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmNoYWluTGFzdEhlaWdodEtleQIFB2NoYWluSWQIBQFpDG9yaWdpbkNhbGxlcgUObmV3Q2hhaW5IZWlnaHQJAMwIAgkBEG1rQ2hhaW5NZXRhRW50cnkDBQdjaGFpbklkBQ5uZXdDaGFpbkhlaWdodAUMYmxvY2tIYXNoSGV4CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxlcG9jaE1ldGFLZXkBBQZoZWlnaHQJAKwCAgkArAICCQCsAgIJAKwCAgkApQgBCQEFdmFsdWUBBQ50aGlzRXBvY2hNaW5lcgUDU0VQCQCkAwEFDHRoaXNFcG9jaFJlZgUDU0VQBQxibG9ja0hhc2hIZXgFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQRqb2luARByZXdhcmRBZGRyZXNzSGV4CgEdZW5zdXJlTm90T3ZlcnJpZGVPdGhlck1pbmVyUGsBDGVsQWRkcmVzc0hleAQHJG1hdGNoMAkAoQgBCQEKbWluZXJQa0tleQEFDGVsQWRkcmVzc0hleAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAMJAAACBQJwawgFAWkVb3JpZ2luQ2FsbGVyUHVibGljS2V5BQR1bml0CQACAQkArAICCQCsAgIJAKwCAgIRRUwgbWluZXIgYWRkcmVzcyAFDGVsQWRkcmVzc0hleAIYIGlzIGFscmVhZHkgbGlua2VkIHdpdGggCQDYBAEFAnBrBQR1bml0BAVwYXJ0cwkAtQkCBRByZXdhcmRBZGRyZXNzSGV4AgIweAQNcmV3YXJkQWRkcmVzcwkA3QQBCQCRAwIFBXBhcnRzCQBlAgkAkAMBBQVwYXJ0cwABAwkBASEBCQEPaXNDb250cmFjdFNldHVwAAkAAgECH1RoZSBjb250cmFjdCBoYXMgbm90IHlldCBzZXQgdXADCQBmAgULTUlOX0JBTEFOQ0UICQDvBwEIBQFpDG9yaWdpbkNhbGxlcgpnZW5lcmF0aW5nCQACAQkArAICCQCsAgIJAKwCAgIhSW5zdWZmaWNpZW50IGdlbmVyYXRpbmcgYmFsYW5jZTogCQCkAwEICQDvBwEIBQFpDG9yaWdpbkNhbGxlcgpnZW5lcmF0aW5nAgwuIFJlcXVpcmVkOiAJAKQDAQULTUlOX0JBTEFOQ0UDCQECIT0CCQDIAQEFDXJld2FyZEFkZHJlc3MAFAkAAgECJXJld2FyZEFkZHJlc3Mgc2hvdWxkIGJlIGFuIEwyIGFkZHJlc3MDCQBnAgkAkAMBBQlhbGxNaW5lcnMAMgkAAgECD3RvbyBtYW55IG1pbmVycwoBDmNoZWNrRXhpc3RlbmNlAgZleGlzdHMFbWluZXIDBQZleGlzdHMGCQAAAgUFbWluZXIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBA1hbHJlYWR5RXhpc3RzCgACJGwFCWFsbE1pbmVycwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAHCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQ5jaGVja0V4aXN0ZW5jZQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyAwUNYWxyZWFkeUV4aXN0cwUDbmlsBAhuZXdNaW5lcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEFmxvd2VyY2FzZVJld2FyZEFkZHJlc3MJANwEAQUNcmV3YXJkQWRkcmVzcwQFY2hlY2sJAR1lbnN1cmVOb3RPdmVycmlkZU90aGVyTWluZXJQawEFFmxvd2VyY2FzZVJld2FyZEFkZHJlc3MDCQAAAgUFY2hlY2sFBWNoZWNrBAluZXdNaW5lcnMDCQAAAgkAkAMBBQlhbGxNaW5lcnMAAAUIbmV3TWluZXIJAKwCAgkArAICBQxhbGxNaW5lcnNTdHIFA1NFUAUIbmV3TWluZXIEGWRlbGV0ZVByZXZSZXdhcmRBZGRyZXNzUGsEByRtYXRjaDAJAKIIAQkBFW1pbmVyUmV3YXJkQWRkcmVzc0tleQEFCG5ld01pbmVyAwkAAQIFByRtYXRjaDACBlN0cmluZwQLcHJldkFkZHJlc3MFByRtYXRjaDADCQAAAgULcHJldkFkZHJlc3MJANwEAQUNcmV3YXJkQWRkcmVzcwUDbmlsCQDMCAIJAQtEZWxldGVFbnRyeQEJAQptaW5lclBrS2V5AQULcHJldkFkZHJlc3MFA25pbAUDbmlsCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUMYWxsTWluZXJzS2V5BQluZXdNaW5lcnMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFW1pbmVyUmV3YXJkQWRkcmVzc0tleQEFCG5ld01pbmVyCQCsAgICAjB4BRZsb3dlcmNhc2VSZXdhcmRBZGRyZXNzCQDMCAIJAQtCaW5hcnlFbnRyeQIJAQptaW5lclBrS2V5AQUWbG93ZXJjYXNlUmV3YXJkQWRkcmVzcwgFAWkVb3JpZ2luQ2FsbGVyUHVibGljS2V5BQNuaWwFGWRlbGV0ZVByZXZSZXdhcmRBZGRyZXNzUGsJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEFbGVhdmUABAxsZWF2aW5nTWluZXIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyCgEQc2tpcExlYXZpbmdNaW5lcgIDYWNjBW1pbmVyAwkAAAIFBW1pbmVyBQxsZWF2aW5nTWluZXIFA2FjYwkAzQgCBQNhY2MFBW1pbmVyBA9yZW1haW5pbmdNaW5lcnMKAAIkbAUJYWxsTWluZXJzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARBza2lwTGVhdmluZ01pbmVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA1MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIEDXJld2FyZEFkZHJLZXkJARVtaW5lclJld2FyZEFkZHJlc3NLZXkBBQxsZWF2aW5nTWluZXIEEXByZXZSZXdhcmRBZGRyZXNzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUNcmV3YXJkQWRkcktleQIWbWluZXIgaGFzIG5ldmVyIGpvaW5lZAMJAAACBRFwcmV2UmV3YXJkQWRkcmVzcwURcHJldlJld2FyZEFkZHJlc3MDCQAAAgUOdGhpc0Vwb2NoTWluZXIIBQFpDG9yaWdpbkNhbGxlcgkAAgECHGRlc2lnbmF0ZWQgbWluZXIgY2FuJ3QgbGVhdmUJAMwIAgkBC1N0cmluZ0VudHJ5AgUMYWxsTWluZXJzS2V5CQC6CQIFD3JlbWFpbmluZ01pbmVycwUDU0VQBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEIdHJhbnNmZXIBEGRlc3RFbEFkZHJlc3NIZXgEDGNoZWNrQWRkcmVzcwMJAAACCQCxAgEFEGRlc3RFbEFkZHJlc3NIZXgFFEVUSF9BRERSRVNTX1NUUl9TSVpFCQDdBAEFEGRlc3RFbEFkZHJlc3NIZXgJAAIBCQCsAgIJAKwCAgkArAICAhRBZGRyZXNzIHNob3VsZCBoYXZlIAkApAMBBRRFVEhfQUREUkVTU19TVFJfU0laRQIRIGNoYXJhY3RlcnMsIGdvdCAJAKQDAQkAsQIBBRBkZXN0RWxBZGRyZXNzSGV4AwkAAAIFDGNoZWNrQWRkcmVzcwUMY2hlY2tBZGRyZXNzBAxjaGVja1BheW1lbnQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABBgkAAgEJAKwCAgIvRXhwZWN0ZWQgb25lIHBheW1lbnQgYXMgYSB0cmFuc2ZlciBhbW91bnQsIGdvdCAJAKQDAQkAkAMBCAUBaQhwYXltZW50cwMJAAACBQxjaGVja1BheW1lbnQFDGNoZWNrUGF5bWVudAQKdG9rZW5JZFN0cgkBEUBleHRyTmF0aXZlKDEwNTgpAQUKdG9rZW5JZEtleQQHdG9rZW5JZAkA2QQBBQp0b2tlbklkU3RyBAF0CQCRAwIIBQFpCHBheW1lbnRzAAAEDGNoZWNrQXNzZXRJZAQHJG1hdGNoMAgFAXQHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAdhc3NldElkBQckbWF0Y2gwAwkAAAIFB2Fzc2V0SWQFB3Rva2VuSWQGCQACAQkArAICCQCsAgIJAKwCAgIJRXhwZWN0ZWQgBQp0b2tlbklkU3RyAhUgaW4gdGhlIHBheW1lbnQsIGdvdCAJANgEAQUHYXNzZXRJZAkAAgEJAKwCAgkArAICAglFeHBlY3RlZCAFCnRva2VuSWRTdHICGiBpbiB0aGUgcGF5bWVudCwgZ290IFdhdmVzAwkAAAIFDGNoZWNrQXNzZXRJZAUMY2hlY2tBc3NldElkBAlsYXN0SW5kZXgICQEJYmxvY2tNZXRhAQUSbWFpbkNoYWluTGFzdEJsb2NrAl82BAlxdWV1ZVNpemUJAGUCBRRuYXRpdmVUcmFuc2ZlcnNDb3VudAUJbGFzdEluZGV4BA9jaGVja1F1ZXVlTGltaXQDCQBmAgCgAQUJcXVldWVTaXplCQEKYW1vdW50R3RFcQMFAXQAwIQ9BQlxdWV1ZVNpemUDCQBmAgDADAUJcXVldWVTaXplCQEKYW1vdW50R3RFcQMFAXQAgK3iBAUJcXVldWVTaXplAwkAZgIAgBkFCXF1ZXVlU2l6ZQkBCmFtb3VudEd0RXEDBQF0AIDC1y8FCXF1ZXVlU2l6ZQMJAGYCAIAyBQlxdWV1ZVNpemUJAQphbW91bnRHdEVxAwUBdACAlOvcAwUJcXVldWVTaXplCQACAQkArAICCQCsAgICI1RyYW5zZmVycyBkZW5pZWQgZm9yIHF1ZXVlIHNpemUgb2YgCQCkAwEFCXF1ZXVlU2l6ZQIoLiBXYWl0IHVudGlsIGN1cnJlbnQgdHJhbnNmZXJzIHByb2Nlc3NlZAMJAAACBQ9jaGVja1F1ZXVlTGltaXQFD2NoZWNrUXVldWVMaW1pdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUXbmF0aXZlVHJhbnNmZXJzQ291bnRLZXkJAGQCBRRuYXRpdmVUcmFuc2ZlcnNDb3VudAABCQDMCAIJARVta05hdGl2ZVRyYW5zZmVyRW50cnkDBRRuYXRpdmVUcmFuc2ZlcnNDb3VudAUQZGVzdEVsQWRkcmVzc0hleAgFAXQGYW1vdW50CQDMCAIJAQRCdXJuAgUHdG9rZW5JZAgFAXQGYW1vdW50BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEId2l0aGRyYXcEDGJsb2NrSGFzaEhleAttZXJrbGVQcm9vZhR0cmFuc2ZlckluZGV4SW5CbG9jawZhbW91bnQEEXdpdGhkcmF3QmxvY2tNZXRhCQEJYmxvY2tNZXRhAQUMYmxvY2tIYXNoSGV4BBN3aXRoZHJhd0Jsb2NrSGVpZ2h0CAURd2l0aGRyYXdCbG9ja01ldGECXzEEFGZpbmFsaXplZEJsb2NrSGVpZ2h0CAkBCWJsb2NrTWV0YQEJARFAZXh0ck5hdGl2ZSgxMDU4KQEFEWZpbmFsaXplZEJsb2NrS2V5Al8xBBhtYWluQ2hhaW5MYXN0QmxvY2tIZWlnaHQICQEJYmxvY2tNZXRhAQUSbWFpbkNoYWluTGFzdEJsb2NrAl8xAwkAZgIFE3dpdGhkcmF3QmxvY2tIZWlnaHQFFGZpbmFsaXplZEJsb2NrSGVpZ2h0CQACAQkArAICCQCsAgIJAKwCAgIKRUwgYmxvY2sgIwkApAMBBRN3aXRoZHJhd0Jsb2NrSGVpZ2h0Ai0gaXMgbm90IGZpbmFsaXplZC4gVGhlIGN1cnJlbnQgZmluYWxpemVkIGlzICMJAKQDAQUUZmluYWxpemVkQmxvY2tIZWlnaHQDCQECIT0CCQCQAwEFC21lcmtsZVByb29mBRRXSVRIRFJBV19QUk9PRlNfU0laRQkAAgEJAKwCAgkArAICCQCsAgICCUV4cGVjdGVkIAkApAMBBRRXSVRIRFJBV19QUk9PRlNfU0laRQINIHByb29mcywgZ290IAkApAMBCQCQAwEFC21lcmtsZVByb29mAwkAZgIAAAUUdHJhbnNmZXJJbmRleEluQmxvY2sJAAIBCQCsAgICM1RyYW5zZmVyIGluZGV4IGluIGJsb2NrIHNob3VsZCBiZSBub25uZWdhdGl2ZSwgZ290IAkApAMBBRR0cmFuc2ZlckluZGV4SW5CbG9jawMJAGcCAAAFBmFtb3VudAkAAgEJAKwCAgIfQW1vdW50IHNob3VsZCBiZSBwb3NpdGl2ZSwgZ290IAkApAMBBQZhbW91bnQEFHdpdGhkcmF3QmxvY2tDaGFpbklkCAURd2l0aGRyYXdCbG9ja01ldGECXzQEC2lzTWFpbkNoYWluCQAAAgUUd2l0aGRyYXdCbG9ja0NoYWluSWQFC21haW5DaGFpbklkBBJyZWxhdGVzVG9NYWluQ2hhaW4EByRtYXRjaDAJAJ8IAQkBFGNoYWluRm9ya2VkSGVpZ2h0S2V5AQUUd2l0aGRyYXdCbG9ja0NoYWluSWQDCQABAgUHJG1hdGNoMAIDSW50BAxmb3JrZWRIZWlnaHQFByRtYXRjaDAJAGYCBQxmb3JrZWRIZWlnaHQFE3dpdGhkcmF3QmxvY2tIZWlnaHQJAAIBCQCsAgIJAKwCAgkArAICBQxibG9ja0hhc2hIZXgCHSBpcyBvbiBhbiBhbHRlcm5hdGl2ZSBjaGFpbiAjCQCkAwEFFHdpdGhkcmF3QmxvY2tDaGFpbklkAjggdGhhdCB3YXMgbm90IGFwcHJvdmVkIGJ5IG1ham9yaXR5LiBXYWl0IGZvciBzb21lIGJsb2NrcwMDBQtpc01haW5DaGFpbgYFEnJlbGF0ZXNUb01haW5DaGFpbgQJcmVjaXBpZW50CAUBaQxvcmlnaW5DYWxsZXIED3JlY2lwaWVudFBrSGFzaAkAyQECCQDKAQIIBQlyZWNpcGllbnQFYnl0ZXMAAgUUUFVCTElDX0tFWV9IQVNIX1NJWkUED3plcm9BbW91bnRCeXRlcwEsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEC2Ftb3VudEJ5dGVzCQCaAwEFBmFtb3VudAQLZWxFdmVudERhdGEJAMsBAgkAywECBQ9yZWNpcGllbnRQa0hhc2gJAMkBAgUPemVyb0Ftb3VudEJ5dGVzCQBlAgkAyAEBBQ96ZXJvQW1vdW50Qnl0ZXMJAMgBAQULYW1vdW50Qnl0ZXMFC2Ftb3VudEJ5dGVzBBFlbEV2ZW50RGF0YURpZ2VzdAkA8BUBBQtlbEV2ZW50RGF0YQQSY2FsY3VsYXRlZFJvb3RIYXNoCQC9BQMFC21lcmtsZVByb29mBRFlbEV2ZW50RGF0YURpZ2VzdAUUdHJhbnNmZXJJbmRleEluQmxvY2sEEGV4cGVjdGVkUm9vdEhhc2gIBRF3aXRoZHJhd0Jsb2NrTWV0YQJfNQMJAAACBRJjYWxjdWxhdGVkUm9vdEhhc2gFEGV4cGVjdGVkUm9vdEhhc2gEB3Rva2VuSWQJANkEAQkBEUBleHRyTmF0aXZlKDEwNTgpAQUKdG9rZW5JZEtleQQMdHJhbnNmZXJzS2V5CQEUYmxvY2tFMkNUcmFuc2ZlcnNLZXkBBQxibG9ja0hhc2hIZXgJAMwIAgkBB1JlaXNzdWUDBQd0b2tlbklkBQZhbW91bnQGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCXJlY2lwaWVudAUGYW1vdW50BQd0b2tlbklkCQDMCAIJAQtTdHJpbmdFbnRyeQIFDHRyYW5zZmVyc0tleQkBCXNldE9yRmFpbAIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUMdHJhbnNmZXJzS2V5AgAFFHRyYW5zZmVySW5kZXhJbkJsb2NrBQNuaWwJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhRFeHBlY3RlZCByb290IGhhc2g6IAkA3AQBBRBleHBlY3RlZFJvb3RIYXNoAgcsIGdvdDogCQDcBAEFEmNhbGN1bGF0ZWRSb290SGFzaAIVLiBFdmVudCBkYXRhIGRpZ2VzdDogCQDaBAEFEWVsRXZlbnREYXRhRGlnZXN0Ah8uIENoZWNrIHlvdXIgd2l0aGRyYXcgYXJndW1lbnRzCQACAQkArAICCQCsAgICCUV4cGVjdGVkIAUMYmxvY2tIYXNoSGV4Ai8gdG8gYmUgZWl0aGVyIG9uIHRoZSBtYWluIGNoYWluIG9yIHJlbGF0ZSB0byBpdAFpAQVzZXR1cAQTZ2VuZXNpc0Jsb2NrSGFzaEhleBFtaW5lclJld2FyZEluR3dlaQpkYW9BZGRyZXNzCWRhb1Jld2FyZAMJAQ9pc0NvbnRyYWN0U2V0dXAACQACAQIkVGhlIGNvbnRyYWN0IGhhcyBiZWVuIGFscmVhZHkgc2V0IHVwAwkAZgIAAAURbWluZXJSZXdhcmRJbkd3ZWkJAAIBAiRUaGUgbWluZXIgcmV3YXJkIG11c3QgYmUgbm9ubmVnYXRpdmUEEGdlbmVzaXNCbG9ja0hhc2gJAN0EAQUTZ2VuZXNpc0Jsb2NrSGFzaEhleAQZY2hlY2tHZW5lc2lzQmxvY2tIYXNoU2l6ZQMJAAACCQDIAQEFEGdlbmVzaXNCbG9ja0hhc2gFD0JMT0NLX0hBU0hfU0laRQYJAAIBAhhXcm9uZyBnZW5lc2lzIGJsb2NrIGhhc2gDCQAAAgUZY2hlY2tHZW5lc2lzQmxvY2tIYXNoU2l6ZQUZY2hlY2tHZW5lc2lzQmxvY2tIYXNoU2l6ZQQHZW1wdHlQawEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE2dlbmVzaXNNaW5lckFkZHJlc3MJAKcIAQUHZW1wdHlQawQXZ2VuZXNpc0V0aFJld2FyZEFkZHJlc3MBFAAAAAAAAAAAAAAAAAAAAAAAAAAABBlnZW5lc2lzQmxvY2tSZWZlcmVuY2VIYXNoAkAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBAVpc3N1ZQkAwggFAgVVTklUMAIMTmF0aXZlIHRva2VuAAAACAYEB3Rva2VuSWQJALgIAQUFaXNzdWUEEGdlbmVzaXNCbG9ja01ldGEJARBta0Jsb2NrTWV0YUVudHJ5BgUTZ2VuZXNpc0Jsb2NrSGFzaEhleAAABRlnZW5lc2lzQmxvY2tSZWZlcmVuY2VIYXNoAAAJANwEAQEAAP///////////wEECmRhb0VudHJpZXMDCQAAAgUKZGFvQWRkcmVzcwIABQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgUNZGFvQWRkcmVzc0tleQkApQgBCQEHQWRkcmVzcwEJANkEAQUKZGFvQWRkcmVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgUMZGFvUmV3YXJkS2V5AwkAZgIFCWRhb1Jld2FyZAAABQlkYW9SZXdhcmQJAAIBAhlpbnZhbGlkIERBTyByZXdhcmQgYW1vdW50BQNuaWwJAM4IAgkAzAgCBRBnZW5lc2lzQmxvY2tNZXRhCQDMCAIJAQtTdHJpbmdFbnRyeQIJARRjaGFpbkZpcnN0QmxvY2tJZEtleQEAAAUTZ2VuZXNpc0Jsb2NrSGFzaEhleAkAzAgCCQEQbWtDaGFpbk1ldGFFbnRyeQMAAAAABRNnZW5lc2lzQmxvY2tIYXNoSGV4CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ5taW5lclJld2FyZEtleQURbWluZXJSZXdhcmRJbkd3ZWkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGVwb2NoTWV0YUtleQEFBmhlaWdodAkArAICCQCsAgIJAKUIAQUTZ2VuZXNpc01pbmVyQWRkcmVzcwIDLDAsBRNnZW5lc2lzQmxvY2tIYXNoSGV4CQDMCAIJAQtTdHJpbmdFbnRyeQIFEWZpbmFsaXplZEJsb2NrS2V5BRNnZW5lc2lzQmxvY2tIYXNoSGV4CQDMCAIFBWlzc3VlCQDMCAIJAQtTdHJpbmdFbnRyeQIFCnRva2VuSWRLZXkJANgEAQUHdG9rZW5JZAkAzAgCCQELU3RyaW5nRW50cnkCBRJlbEJyaWRnZUFkZHJlc3NLZXkCKjB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNmE3ZQUDbmlsBQpkYW9FbnRyaWVzCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAOKF2ww=", "height": 3340644, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 36fQejUN2YzRW7ooET6swSK1pmxdjwxwfafH8YBAXWyc Next: none Diff:
OldNewDifferences
2323
2424 let k = "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
2525
26-let l = "allMiners"
26+let l = split_4C("::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::", "")
2727
28-let m = "mainChainId"
28+let m = "allMiners"
2929
30-let n = "lastChainId"
30+let n = "mainChainId"
3131
32-let o = "firstValidAltChainId"
32+let o = "lastChainId"
3333
34-let p = "minerReward"
34+let p = "firstValidAltChainId"
3535
36-let q = "block_0x"
36+let q = "minerReward"
3737
38-let r = "finalizedBlock"
38+let r = "block_0x"
3939
40-let s = "tokenId"
40+let s = "finalizedBlock"
4141
42-let t = "elBridgeAddress"
42+let t = "tokenId"
4343
44-let u = "nativeTransfersCount"
44+let u = "elBridgeAddress"
4545
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
46+let v = "nativeTransfersCount"
47+
48+let w = "daoAddress"
49+
50+let x = "daoReward"
51+
52+func y (z) = {
53+ let A = toString(z)
54+ let B = size(A)
55+ if ((1 == B))
56+ then ("0000000" + A)
57+ else if ((2 == B))
58+ then ("000000" + A)
59+ else if ((3 == B))
60+ then ("00000" + A)
61+ else if ((4 == B))
62+ then ("0000" + A)
63+ else if ((5 == B))
64+ then ("000" + A)
65+ else if ((6 == B))
66+ then ("00" + A)
67+ else if ((7 == B))
68+ then ("0" + A)
69+ else A
6470 }
6571
6672
67-func z (A) = ("elToClTransfers_0x" + A)
73+func C (D) = ("elToClTransfers_0x" + D)
6874
6975
70-func B (C) = ("epoch_" + v(C))
76+func E (F) = ("epoch_" + y(F))
7177
7278
73-func D (E) = (("chain" + toString(E)) + "FirstBlock")
79+func G (H) = (("chain" + toString(H)) + "FirstBlock")
7480
7581
76-func F (E) = ("chain_" + v(E))
82+func I (H) = ("chain_" + y(H))
7783
7884
79-func G (E,H) = ((("chain_" + v(E)) + "_") + toString(H))
85+func J (H,K) = ((("chain_" + y(H)) + "_") + toString(K))
8086
8187
82-func I (E) = (("chain_" + v(E)) + "ForkedHeight")
88+func L (H) = (("chain_" + y(H)) + "ForkedHeight")
8389
8490
85-func J (E) = (("chain" + toString(E)) + "Supporters")
91+func M (H) = (("chain" + toString(H)) + "Supporters")
8692
8793
88-func K (L) = (("miner_" + L) + "_RewardAddress")
94+func N (O) = (("miner_" + O) + "_RewardAddress")
8995
9096
91-func M (N) = (("miner_0x" + N) + "_PK")
97+func P (Q) = (("miner_0x" + Q) + "_PK")
9298
9399
94-func O (H) = (("miner_" + toString(H)) + "_ChainId")
100+func R (K) = (("miner_" + toString(K)) + "_ChainId")
95101
96102
97-let P = valueOrElse(getInteger(this, u), 0)
103+let S = valueOrElse(getInteger(this, v), 0)
98104
99-func Q (R) = ("nativeTransfer_" + toString(R))
105+func T (U) = ("nativeTransfer_" + toString(U))
100106
101107
102-func S (R,T,U) = StringEntry(Q(R), ((("0x" + T) + d) + toString(U)))
108+func V (U,W,X) = StringEntry(T(U), ((("0x" + W) + d) + toString(X)))
103109
104110
105-func V (W,X,Y) = {
106- let Z = if (Y)
111+func Y (Z,aa,ab) = {
112+ let ac = if (ab)
107113 then (j - 1)
108114 else j
109- let aa = (X - W)
110- let ab = if ((aa > Z))
111- then throw(((("Allowed only " + toString(Z)) + " transfers, got ") + toString(aa)))
115+ let ad = (aa - Z)
116+ let ae = if ((ad > ac))
117+ then throw(((("Allowed only " + toString(ac)) + " transfers, got ") + toString(ad)))
112118 else true
113- if ((ab == ab))
114- then if ((X >= P))
115- then throw(((("Attempt to transfer #" + toString(X)) + ". Available transfers: ") + toString(P)))
119+ if ((ae == ae))
120+ then if ((aa >= S))
121+ then throw(((("Attempt to transfer #" + toString(aa)) + ". Available transfers: ") + toString(S)))
116122 else true
117123 else throw("Strict value is not equal to itself.")
118124 }
119125
120126
121-func ac (ad,ae,af) = if ((ad.amount >= ae))
127+func af (ag,ah,ai) = if ((ag.amount >= ah))
122128 then true
123- else throw((((((("Transferring amount " + toString(ad.amount)) + " should be >= ") + toString(ae)) + " for queue size of ") + toString(af)) + ". Transfer more or wait"))
129+ else throw((((((("Transferring amount " + toString(ag.amount)) + " should be >= ") + toString(ah)) + " for queue size of ") + toString(ai)) + ". Transfer more or wait"))
124130
125131
126-func ag (ah) = wavesBalance(ah).generating
132+func aj (ak) = wavesBalance(ak).generating
127133
128134
129-func ai (E) = {
130- let x = getStringValue(F(E))
131- let aj = split(x, d)
132- $Tuple2(parseIntValue(aj[0]), aj[1])
135+func al (H) = {
136+ let A = getStringValue(I(H))
137+ let am = split(A, d)
138+ $Tuple2(parseIntValue(am[0]), am[1])
133139 }
134140
135141
136-func ak (E,al,A) = StringEntry(F(E), ((toString(al) + d) + A))
142+func an (H,ao,D) = StringEntry(I(H), ((toString(ao) + d) + D))
137143
138144
139-let am = valueOrElse(getInteger(m), 0)
145+let ap = valueOrElse(getInteger(n), 0)
140146
141-let an = ai(am)
147+let aq = al(ap)
142148
143-let ao = an._1
149+let ar = aq._1
144150
145-let ap = an._2
151+let as = aq._2
146152
147-func aq (C) = {
148- let y = getString(B(C))
149- if ($isInstanceOf(y, "String"))
153+func at (F) = {
154+ let B = getString(E(F))
155+ if ($isInstanceOf(B, "String"))
150156 then {
151- let x = y
152- let ar = split(x, d)
153- $Tuple3(addressFromStringValue(ar[0]), parseIntValue(ar[1]), ar[2])
157+ let A = B
158+ let au = split(A, d)
159+ $Tuple3(addressFromStringValue(au[0]), parseIntValue(au[1]), au[2])
154160 }
155161 else unit
156162 }
157163
158164
159-let as = {
160- let y = aq(height)
161- if ($isInstanceOf(y, "(Address, Int, String)"))
165+let av = {
166+ let B = at(height)
167+ if ($isInstanceOf(B, "(Address, Int, String)"))
162168 then {
163- let at = y
164- at
169+ let aw = B
170+ aw
165171 }
166172 else $Tuple2(unit, 0)
167173 }
168174
169-let au = as._1
175+let ax = av._1
170176
171-let av = as._2
177+let ay = av._2
172178
173-let aw = valueOrElse(getString(l), "")
179+let az = valueOrElse(getString(m), "")
174180
175-let ax = {
176- let y = aw
177- if (("" == y))
181+let aA = {
182+ let B = az
183+ if (("" == B))
178184 then nil
179- else if ($isInstanceOf(y, "String"))
185+ else if ($isInstanceOf(B, "String"))
180186 then {
181- let ay = y
182- split_4C(ay, d)
187+ let aB = B
188+ split_4C(aB, d)
183189 }
184190 else throw("Match error")
185191 }
186192
187-func az (aA) = {
188- let aB = getBinaryValue((q + aA))
189- let aC = size(aB)
190- let aD = toInt(aB)
191- let aE = toInt(aB, 8)
192- let aF = take(drop(aB, 16), e)
193- let E = toInt(aB, (16 + e))
194- let aG = (24 + e)
195- let aH = (aC - aG)
196- let aI = if ((aH >= g))
197- then take(drop(aB, aG), g)
193+func aC (aD) = {
194+ let aE = getBinaryValue((r + aD))
195+ let aF = size(aE)
196+ let aG = toInt(aE)
197+ let aH = toInt(aE, 8)
198+ let aI = take(drop(aE, 16), e)
199+ let H = toInt(aE, (16 + e))
200+ let aJ = (24 + e)
201+ let aK = (aF - aJ)
202+ let aL = if ((aK >= g))
203+ then take(drop(aE, aJ), g)
198204 else base58''
199- let aJ = if (if ((aH == 8))
205+ let aM = if (if ((aK == 8))
200206 then true
201- else (aH > g))
202- then toInt(aB, (aG + size(aI)))
207+ else (aK > g))
208+ then toInt(aE, (aJ + size(aL)))
203209 else -1
204- $Tuple6(aD, aE, aF, E, aI, aJ)
210+ $Tuple6(aG, aH, aI, H, aL, aM)
205211 }
206212
207213
208-func aK (A,aD,aL,E,aM,aJ) = {
209- let aN = fromBase16String(aM)
210- let aO = size(aN)
211- let aP = if (if ((aO == 0))
214+func aN (D,aG,aO,H,aP,aM) = {
215+ let aQ = fromBase16String(aP)
216+ let aR = size(aQ)
217+ let aS = if (if ((aR == 0))
212218 then true
213- else (aO == g))
219+ else (aR == g))
214220 then true
215- else throw(((("Transfers root hash should have 0 or " + toString(g)) + " bytes, got ") + toString(aO)))
216- if ((aP == aP))
221+ else throw(((("Transfers root hash should have 0 or " + toString(g)) + " bytes, got ") + toString(aR)))
222+ if ((aS == aS))
217223 then {
218- let aQ = (((((toBytes(aD) + toBytes(height)) + fromBase16String(aL)) + toBytes(E)) + aN) + toBytes(aJ))
219- BinaryEntry((q + A), aQ)
224+ let aT = (((((toBytes(aG) + toBytes(height)) + fromBase16String(aO)) + toBytes(H)) + aQ) + toBytes(aM))
225+ BinaryEntry((r + D), aT)
220226 }
221227 else throw("Strict value is not equal to itself.")
222228 }
223229
224230
225-func aR (H,E) = {
226- let y = getInteger(G(E, H))
227- if ($isInstanceOf(y, "Int"))
231+func aU (K,H) = {
232+ let B = getInteger(J(H, K))
233+ if ($isInstanceOf(B, "Int"))
228234 then {
229- let aS = y
230- aS
235+ let aV = B
236+ aV
231237 }
232238 else {
233- let aT = getStringValue(((("chain" + toString(E)) + "LastMinedBy") + toString(H)))
234- az(aT)._1
239+ let aW = getStringValue(((("chain" + toString(H)) + "LastMinedBy") + toString(K)))
240+ aC(aW)._1
235241 }
236242 }
237243
238244
239-let aU = {
240- let aV = {
241- let y = lastBlock.vrf
242- if ($isInstanceOf(y, "ByteVector"))
245+let aX = {
246+ let aY = {
247+ let B = lastBlock.vrf
248+ if ($isInstanceOf(B, "ByteVector"))
243249 then {
244- let aW = y
245- aW
250+ let aZ = B
251+ aZ
246252 }
247253 else lastBlock.generationSignature
248254 }
249- func aX (aY,H) = {
250- let aZ = aY
251- let ba = aZ._1
252- let bb = aZ._2
253- let bc = aZ._3
254- let bd = aZ._4
255- let be = addressFromStringValue(H)
256- let bf = wavesBalance(be).generating
257- let bg = ag(be)
258- if (if ((c > bf))
255+ func ba (bb,K) = {
256+ let bc = bb
257+ let bd = bc._1
258+ let be = bc._2
259+ let bf = bc._3
260+ let bg = bc._4
261+ let bh = addressFromStringValue(K)
262+ let bi = wavesBalance(bh).generating
263+ let bj = aj(bh)
264+ if (if ((c > bi))
259265 then true
260- else (0 >= bg))
261- then aY
266+ else (0 >= bj))
267+ then bb
262268 else {
263- let bh = calculateDelay(be, bg)
264- if ((bc > bh))
265- then $Tuple4(H, (bb + bg), bh, (bd :+ H))
266- else $Tuple4(ba, (bb + bg), bc, (bd :+ H))
269+ let bk = calculateDelay(bh, bj)
270+ if ((bf > bk))
271+ then $Tuple4(K, (be + bj), bk, (bg :+ K))
272+ else $Tuple4(bd, (be + bj), bf, (bg :+ K))
267273 }
268274 }
269275
270- let bi = ax
271- let bj = size(bi)
272- let bk = $Tuple4("", 0, a, nil)
273- func bl (bm,bn) = if ((bn >= bj))
274- then bm
275- else aX(bm, bi[bn])
276+ let bl = aA
277+ let bm = size(bl)
278+ let bn = $Tuple4("", 0, a, nil)
279+ func bo (bp,bq) = if ((bq >= bm))
280+ then bp
281+ else ba(bp, bl[bq])
276282
277- func bo (bm,bn) = if ((bn >= bj))
278- then bm
283+ func br (bp,bq) = if ((bq >= bm))
284+ then bp
279285 else throw("List size exceeds 50")
280286
281- bo(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bk, 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)
287+ 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)
282288 }
283289
284-let bp = aU._1
290+let bs = aX._1
285291
286-let bq = aU._2
292+let bt = aX._2
287293
288-let br = az(ap)
294+let bu = aC(as)
289295
290-let bs = br._1
296+let bv = bu._1
291297
292-let bt = br._2
298+let bw = bu._2
293299
294-func bu (bv,bw,bx) = {
295- let by = split_4C("::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::", "")
296- let bz = (bq / 2)
297- func bA (aY,bB) = {
298- let bC = aY
299- let bD = bC._1
300- let bE = bC._2
301- let bF = bC._3
302- let bd = bC._4
303- let y = bE
304- if ($isInstanceOf(y, "Unit"))
300+func bx (by,bz,bA) = {
301+ let bB = (bt / 2)
302+ func bC (bb,bD) = {
303+ let bE = bb
304+ let bF = bE._1
305+ let bG = bE._2
306+ let bH = bE._3
307+ let bg = bE._4
308+ let B = bG
309+ if ($isInstanceOf(B, "Unit"))
305310 then {
306- let bG = if ((bD == height))
307- then $Tuple3(bv, bw, bx)
308- else value(aq(bD))
309- let H = bG._1
310- let bH = bG._2
311- let bI = bG._3
312- if (if ((bH == 0))
311+ let bI = if ((bF == height))
312+ then $Tuple3(by, bz, bA)
313+ else value(at(bF))
314+ let K = bI._1
315+ let bJ = bI._2
316+ let bK = bI._3
317+ if (if ((bJ == 0))
313318 then true
314- else ((height - bD) >= 100))
315- then $Tuple4(bD, bI, bF, ax)
319+ else ((height - bF) >= 100))
320+ then $Tuple4(bF, bK, bH, aA)
316321 else {
317- let bJ = if (containsElement(bd, H))
318- then $Tuple2(bF, bd)
319- else $Tuple2((bF + ag(H)), H :: bd)
320- let bK = bJ._1
321- let bL = bJ._2
322- if ((bK > bz))
323- then $Tuple4(bD, bI, bK, ax)
324- else $Tuple4(bH, unit, bK, bL)
322+ let bL = if (containsElement(bg, K))
323+ then $Tuple2(bH, bg)
324+ else $Tuple2((bH + aj(K)), K :: bg)
325+ let bM = bL._1
326+ let bN = bL._2
327+ if ((bM > bB))
328+ then $Tuple4(bF, bK, bM, aA)
329+ else $Tuple4(bJ, unit, bM, bN)
325330 }
326331 }
327- else aY
332+ else bb
328333 }
329334
330- let bM = {
331- let bi = by
332- let bj = size(bi)
333- let bk = $Tuple4(height, unit, 0, nil)
334- func bl (bm,bn) = if ((bn >= bj))
335- then bm
336- else bA(bm, bi[bn])
335+ let bO = {
336+ let bl = l
337+ let bm = size(bl)
338+ let bn = $Tuple4(height, unit, 0, nil)
339+ func bo (bp,bq) = if ((bq >= bm))
340+ then bp
341+ else bC(bp, bl[bq])
337342
338- func bo (bm,bn) = if ((bn >= bj))
339- then bm
343+ func br (bp,bq) = if ((bq >= bm))
344+ then bp
340345 else throw("List size exceeds 100")
341346
342- bo(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bk, 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)
347+ 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)
343348 }
344- let bN = bM._1
345- let bO = bM._2
346- let y = bO
347- if ($isInstanceOf(y, "String"))
348- then {
349- let bP = y
350- bP
351- }
352- else value(aq(bN))._3
349+ let bP = bO._1
350+ let bQ = bO._2
351+ $Tuple2({
352+ let B = bQ
353+ if ($isInstanceOf(B, "String"))
354+ then {
355+ let bR = B
356+ bR
357+ }
358+ else value(at(bP))._3
359+ }, bP)
353360 }
354361
355362
356-func bQ (E) = {
357- func bR (bS,bT) = {
358- let bU = bS
359- let bF = bU._1
360- let bV = bU._2
361- let bW = addressFromStringValue(bT)
362- if (containsElement(bV, bW))
363- then bS
363+func bS (H) = {
364+ func bT (bU,bV) = {
365+ let bW = bU
366+ let bH = bW._1
367+ let bX = bW._2
368+ let bY = addressFromStringValue(bV)
369+ if (containsElement(bX, bY))
370+ then bU
364371 else {
365- let bX = ag(bW)
366- $Tuple2((bF + bX), (bV :+ bW))
372+ let bZ = aj(bY)
373+ $Tuple2((bH + bZ), (bX :+ bY))
367374 }
368375 }
369376
370- let bY = split_4C(getStringValue(J(E)), d)
371- let bZ = {
372- let bi = bY
373- let bj = size(bi)
374- let bk = $Tuple2(0, nil)
375- func bl (bm,bn) = if ((bn >= bj))
376- then bm
377- else bR(bm, bi[bn])
377+ let ca = split_4C(getStringValue(M(H)), d)
378+ let cb = {
379+ let bl = ca
380+ let bm = size(bl)
381+ let bn = $Tuple2(0, nil)
382+ func bo (bp,bq) = if ((bq >= bm))
383+ then bp
384+ else bT(bp, bl[bq])
378385
379- func bo (bm,bn) = if ((bn >= bj))
380- then bm
386+ func br (bp,bq) = if ((bq >= bm))
387+ then bp
381388 else throw("List size exceeds 100")
382389
383- bo(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bk, 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)
390+ 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)
384391 }
385- let bX = bZ._1
386- let ca = bZ._2
387- bX
392+ cb._1
388393 }
389394
390395
391-func cb () = isDefined(getInteger(p))
396+func cc () = isDefined(getInteger(q))
392397
393398
394-func cc (bW) = if ((toString(bW) != bp))
395- then throw(((((toBase58String(bW.bytes) + " is not allowed to mine in ") + toString(height)) + " epoch. Expected ") + bp))
399+func cd (bY) = if ((toString(bY) != bs))
400+ then throw(((((toBase58String(bY.bytes) + " is not allowed to mine in ") + toString(height)) + " epoch. Expected ") + bs))
396401 else unit
397402
398403
399-func cd (ce,cf) = if ((ce == cf))
404+func ce (cf,cg) = if ((cf == cg))
400405 then unit
401- else throw(((("Expected a reference to the chain last block: 0x" + cf) + ". Got: 0x") + ce))
406+ else throw(((("Expected a reference to the chain last block: 0x" + cg) + ". Got: 0x") + cf))
402407
403408
404-func cg (E) = {
405- let ch = getStringValue(D(E))
406- let ci = valueOrElse(getInteger(o), 0)
407- if ((ci > E))
409+func ch (H) = {
410+ let ci = getStringValue(G(H))
411+ let cj = valueOrElse(getInteger(p), 0)
412+ if ((cj > H))
408413 then true
409- else (az(getStringValue(r))._1 > az(ch)._1)
414+ else (aC(getStringValue(s))._1 > aC(ci)._1)
410415 }
411416
412417
413-func cj (H) = valueOrElse(getInteger(O(H)), getInteger(("chainIdOf" + toString(H))))
418+func ck (K) = valueOrElse(getInteger(R(K)), getInteger(("chainIdOf" + toString(K))))
414419
415420
416-func ck (bW,cl,cm) = {
417- let cn = {
418- let y = cm
419- if ($isInstanceOf(y, "String"))
421+func cl (bY,cm,cn) = {
422+ let co = {
423+ let B = cn
424+ if ($isInstanceOf(B, "String"))
420425 then {
421- let aT = y
422- let co = aR(bW, am)
423- ((az(aT)._1 + 1) > co)
426+ let aW = B
427+ let cp = aU(bY, ap)
428+ ((aC(aW)._1 + 1) > cp)
424429 }
425430 else true
426431 }
427- let y = cj(bW)
428- if ($isInstanceOf(y, "Int"))
432+ let B = ck(bY)
433+ if ($isInstanceOf(B, "Int"))
429434 then {
430- let cp = y
431- if (if ((cp == cl))
435+ let cq = B
436+ if (if ((cq == cm))
432437 then true
433- else if (cg(cp))
434- then cn
438+ else if (ch(cq))
439+ then co
435440 else false)
436441 then unit
437- else throw(("miner is mining other chain " + toString(cp)))
442+ else throw(("miner is mining other chain " + toString(cq)))
438443 }
439444 else unit
440445 }
441446
442447
443-let cq = (" at height " + toString(height))
448+let cr = (" at height " + toString(height))
444449
445-func cr (cs) = valueOrErrorMessage(valueOrErrorMessage(blockInfoByHeight(cs), ("last block is not available" + cq)).vrf, ("VRF is not available" + cq))
450+func cs (ct) = valueOrErrorMessage(valueOrErrorMessage(blockInfoByHeight(ct), ("last block is not available" + cr)).vrf, ("VRF is not available" + cr))
446451
447452
448-func ct (cu) = {
449- let cv = cr(height)
450- if ((cu == cv))
453+func cu (cv) = {
454+ let cw = cs(height)
455+ if ((cv == cw))
451456 then unit
452- else throw((((("Expected VRF " + toBase58String(cu)) + " does not match actual ") + toBase58String(cv)) + cq))
457+ else throw((((("Expected VRF " + toBase58String(cv)) + " does not match actual ") + toBase58String(cw)) + cr))
453458 }
454459
455460
456-func cw (E,bW) = {
457- let cx = getStringValue(J(E))
458- let cy = split_4C(cx, d)
459- if (containsElement(cy, toString(bW)))
461+func cx (H,bY) = {
462+ let cy = getStringValue(M(H))
463+ let cz = split_4C(cy, d)
464+ if (containsElement(cz, toString(bY)))
460465 then nil
461- else [StringEntry(J(E), ((cx + d) + toString(bW)))]
466+ else [StringEntry(M(H), ((cy + d) + toString(bY)))]
462467 }
463468
464469
465-func cz (cA,R) = if ((0 > R))
466- then throw(("Can't withdraw at negative index: " + toString(R)))
470+func cA (cB,U) = if ((0 > U))
471+ then throw(("Can't withdraw at negative index: " + toString(U)))
467472 else {
468- let cB = size(cA)
469- if ((R >= cB))
473+ let cC = size(cB)
474+ if ((U >= cC))
470475 then {
471- let cC = (R - cB)
472- if ((cC > size(k)))
473- then throw((("Can't add " + toString(cC)) + " empty flags. Contact with developers"))
474- else ((cA + take(k, cC)) + "1")
476+ let cD = (U - cC)
477+ if ((cD > size(k)))
478+ then throw((("Can't add " + toString(cD)) + " empty flags. Contact with developers"))
479+ else ((cB + take(k, cD)) + "1")
475480 }
476481 else {
477- let cD = drop(cA, R)
478- let cE = take(cD, 1)
479- if ((cE == "0"))
480- then ((take(cA, R) + "1") + drop(cD, 1))
481- else throw((("Transfer #" + toString(R)) + " has been already taken"))
482+ let cE = drop(cB, U)
483+ let cF = take(cE, 1)
484+ if ((cF == "0"))
485+ then ((take(cB, U) + "1") + drop(cE, 1))
486+ else throw((("Transfer #" + toString(U)) + " has been already taken"))
482487 }
483488 }
484489
485490
486-func cF (cG) = {
487- let cH = fromBase16String(cG)
488- if ((size(cH) != e))
491+func cG (cH) = {
492+ let cI = fromBase16String(cH)
493+ if ((size(cI) != e))
489494 then throw("invalid block id length")
490- else cG
495+ else cH
491496 }
492497
493498
494-func cI (cJ,cK,bH) = {
495- let cL = az(getStringValue(r))._1
496- let cM = bu(cJ, bH, cK)
497- if (if ((cM == cK))
499+func cJ (cK,cL,bJ) = {
500+ let cM = aC(getStringValue(s))
501+ let cN = bx(cK, bJ, cL)
502+ let cO = cN._1
503+ let cP = cN._2
504+ let cQ = {
505+ let B = getString(w)
506+ if ($isInstanceOf(B, "String"))
507+ then {
508+ let cR = B
509+ if ((cP == cM._2))
510+ then nil
511+ else {
512+ func cS (bU,bD) = if ((bU._1 == cM._2))
513+ then bU
514+ else {
515+ let cT = at(bU._1)
516+ if ($isInstanceOf(cT, "(Address, Int, String)"))
517+ then {
518+ let aw = cT
519+ $Tuple2(aw._2, (bU._2 + 1))
520+ }
521+ else bU
522+ }
523+
524+ let cU = if ((cP == height))
525+ then bJ
526+ else valueOrErrorMessage(at(cP), "no prev epoch for start")._2
527+ let cV = {
528+ let bl = l
529+ let bm = size(bl)
530+ let bn = $Tuple2(cU, 1)
531+ func bo (bp,bq) = if ((bq >= bm))
532+ then bp
533+ else cS(bp, bl[bq])
534+
535+ func br (bp,bq) = if ((bq >= bm))
536+ then bp
537+ else throw("List size exceeds 100")
538+
539+ 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)
540+ }
541+ let cW = (cV._2 * getIntegerValue(x))
542+ let cX = fromBase58String(getStringValue(t))
543+[Reissue(cX, cW, true), ScriptTransfer(Address(fromBase58String(cR)), cW, cX)]
544+ }
545+ }
546+ else nil
547+ }
548+ (cQ ++ (if (if ((cO == cL))
498549 then true
499- else (az(cM)._1 > cL))
500- then [StringEntry(r, cM)]
501- else nil
550+ else (aC(cO)._1 > cM._1))
551+ then [StringEntry(s, cO)]
552+ else nil))
502553 }
503554
504555
505-@Callable(w)
506-func extendMainChain (A,cN,aW,aM,aJ) = {
507- let cO = cF(A)
508- if ((cO == cO))
556+@Callable(z)
557+func extendMainChain (D,cY,aZ,aP,aM) = {
558+ let cZ = cG(D)
559+ if ((cZ == cZ))
509560 then {
510- let cP = ct(aW)
511- if ((cP == cP))
561+ let da = cu(aZ)
562+ if ((da == da))
512563 then {
513- let cQ = ck(w.originCaller, am, unit)
514- if ((cQ == cQ))
564+ let db = cl(z.originCaller, ap, unit)
565+ if ((db == db))
515566 then {
516- let cR = cd(cN, ap)
517- if ((cR == cR))
567+ let dc = ce(cY, as)
568+ if ((dc == dc))
518569 then {
519- let cS = V(az(cN)._6, aJ, true)
520- if ((cS == cS))
570+ let dd = Y(aC(cY)._6, aM, true)
571+ if ((dd == dd))
521572 then {
522- let cT = {
523- let y = aq(height)
524- if ($isInstanceOf(y, "Unit"))
525- then StringEntry(B(height), ((((toString(w.originCaller) + d) + toString(bt)) + d) + A))
573+ let de = {
574+ let B = at(height)
575+ if ($isInstanceOf(B, "Unit"))
576+ then StringEntry(E(height), ((((toString(z.originCaller) + d) + toString(bw)) + d) + D))
526577 else {
527- let cU = y
578+ let df = B
528579 throw("Epoch already started")
529580 }
530581 }
531- if ((cT == cT))
582+ if ((de == de))
532583 then {
533- let cV = cc(w.originCaller)
534- if ((cV == cV))
584+ let dg = cd(z.originCaller)
585+ if ((dg == dg))
535586 then {
536- let cW = cI(w.originCaller, A, bt)
537- let al = (ao + 1)
538- ([aK(A, al, ap, am, aM, aJ), ak(am, al, A), IntegerEntry(O(w.originCaller), am), IntegerEntry(G(am, w.originCaller), al), cT] ++ cW)
587+ let dh = cJ(z.originCaller, D, bw)
588+ let ao = (ar + 1)
589+ ([aN(D, ao, as, ap, aP, aM), an(ap, ao, D), IntegerEntry(R(z.originCaller), ap), IntegerEntry(J(ap, z.originCaller), ao), de] ++ dh)
539590 }
540591 else throw("Strict value is not equal to itself.")
541592 }
554605
555606
556607
557-@Callable(w)
558-func startAltChain (A,cN,aW,aM,aJ) = {
559- let cO = cF(A)
560- if ((cO == cO))
608+@Callable(z)
609+func startAltChain (D,cY,aZ,aP,aM) = {
610+ let cZ = cG(D)
611+ if ((cZ == cZ))
561612 then {
562- let cP = ct(aW)
563- if ((cP == cP))
613+ let da = cu(aZ)
614+ if ((da == da))
564615 then {
565- let cX = az(cN)
566- let cY = cX._1
567- let cZ = cX._2
568- let da = cX._3
569- let db = cX._4
570- let dc = cX._5
571- let W = cX._6
572- let dd = az(getStringValue(r))._2
573- let de = if ((cZ >= dd))
574- then cZ
575- else throw((((("Can not start alt chain from epoch " + toString(cZ)) + ", epoch ") + toString(dd)) + " is finalized"))
576- let cQ = ck(w.originCaller, am, cN)
577- if ((cQ == cQ))
616+ let di = aC(cY)
617+ let dj = di._1
618+ let dk = di._2
619+ let dl = di._3
620+ let dm = di._4
621+ let dn = di._5
622+ let Z = di._6
623+ let bP = aC(getStringValue(s))._2
624+ let do = if ((dk >= bP))
625+ then dk
626+ else throw((((("Can not start alt chain from epoch " + toString(dk)) + ", epoch ") + toString(bP)) + " is finalized"))
627+ let db = cl(z.originCaller, ap, cY)
628+ if ((db == db))
578629 then {
579- let cS = V(W, aJ, true)
580- if ((cS == cS))
630+ let dd = Y(Z, aM, true)
631+ if ((dd == dd))
581632 then {
582- let df = (valueOrElse(getInteger(n), 0) + 1)
583- let al = (cY + 1)
584- let cT = {
585- let y = aq(height)
586- if ($isInstanceOf(y, "Unit"))
587- then StringEntry(B(height), ((((toString(w.originCaller) + d) + toString(de)) + d) + A))
633+ let dp = (valueOrElse(getInteger(o), 0) + 1)
634+ let ao = (dj + 1)
635+ let de = {
636+ let B = at(height)
637+ if ($isInstanceOf(B, "Unit"))
638+ then StringEntry(E(height), ((((toString(z.originCaller) + d) + toString(do)) + d) + D))
588639 else {
589- let cU = y
640+ let df = B
590641 throw("Epoch already started")
591642 }
592643 }
593- let cV = cc(w.originCaller)
594- if ((cV == cV))
595- then [cT, aK(A, al, cN, df, aM, aJ), StringEntry(D(df), A), ak(df, al, A), IntegerEntry(O(w.originCaller), df), IntegerEntry(G(df, w.originCaller), al), IntegerEntry(G(am, w.originCaller), al), StringEntry(J(df), toString(w.originCaller)), IntegerEntry(n, df)]
644+ let dg = cd(z.originCaller)
645+ if ((dg == dg))
646+ then [de, aN(D, ao, cY, dp, aP, aM), StringEntry(G(dp), D), an(dp, ao, D), IntegerEntry(R(z.originCaller), dp), IntegerEntry(J(dp, z.originCaller), ao), IntegerEntry(J(ap, z.originCaller), ao), StringEntry(M(dp), toString(z.originCaller)), IntegerEntry(o, dp)]
596647 else throw("Strict value is not equal to itself.")
597648 }
598649 else throw("Strict value is not equal to itself.")
606657
607658
608659
609-@Callable(w)
610-func extendAltChain (A,cN,aW,E,aM,aJ) = {
611- let cO = cF(A)
612- if ((cO == cO))
660+@Callable(z)
661+func extendAltChain (D,cY,aZ,H,aP,aM) = {
662+ let cZ = cG(D)
663+ if ((cZ == cZ))
613664 then {
614- let cP = ct(aW)
615- if ((cP == cP))
665+ let da = cu(aZ)
666+ if ((da == da))
616667 then {
617- let dg = az(getStringValue(D(E)))
618- let cQ = ck(w.originCaller, E, toBase16String(dg._3))
619- if ((cQ == cQ))
668+ let dq = aC(getStringValue(G(H)))
669+ let db = cl(z.originCaller, H, toBase16String(dq._3))
670+ if ((db == db))
620671 then {
621- let dh = ai(E)
622- let di = dh._1
623- let dj = dh._2
624- let cR = cd(cN, dj)
625- if ((cR == cR))
672+ let dr = al(H)
673+ let ds = dr._1
674+ let dt = dr._2
675+ let dc = ce(cY, dt)
676+ if ((dc == dc))
626677 then {
627- let cS = V(az(cN)._6, aJ, true)
628- if ((cS == cS))
678+ let dd = Y(aC(cY)._6, aM, true)
679+ if ((dd == dd))
629680 then {
630- let al = (di + 1)
631- let bH = az(cN)._2
632- let dk = if ((bQ(E) > (bq / 2)))
681+ let ao = (ds + 1)
682+ let bJ = aC(cY)._2
683+ let du = if ((bS(H) > (bt / 2)))
633684 then {
634- let dl = valueOrElse(getInteger(n), 0)
635- let cW = cI(w.originCaller, A, bH)
636- ([IntegerEntry(I(am), dg._1), IntegerEntry(m, E), IntegerEntry(o, (dl + 1))] ++ cW)
685+ let dv = valueOrElse(getInteger(o), 0)
686+ let dh = cJ(z.originCaller, D, bJ)
687+ ([IntegerEntry(L(ap), dq._1), IntegerEntry(n, H), IntegerEntry(p, (dv + 1))] ++ dh)
637688 }
638689 else nil
639- let cT = {
640- let y = aq(height)
641- if ($isInstanceOf(y, "Unit"))
642- then StringEntry(B(height), ((((toString(w.originCaller) + d) + toString(bH)) + d) + A))
690+ let de = {
691+ let B = at(height)
692+ if ($isInstanceOf(B, "Unit"))
693+ then StringEntry(E(height), ((((toString(z.originCaller) + d) + toString(bJ)) + d) + D))
643694 else {
644- let cU = y
695+ let df = B
645696 throw("Epoch already started")
646697 }
647698 }
648- if ((cT == cT))
699+ if ((de == de))
649700 then {
650- let cV = cc(w.originCaller)
651- if ((cV == cV))
701+ let dg = cd(z.originCaller)
702+ if ((dg == dg))
652703 then {
653- let dm = if (if ((dk == nil))
654- then (valueOrElse(cj(w.originCaller), 0) != E)
704+ let dw = if (if ((du == nil))
705+ then (valueOrElse(ck(z.originCaller), 0) != H)
655706 else false)
656- then [IntegerEntry(G(am, w.originCaller), dg._1)]
707+ then [IntegerEntry(J(ap, z.originCaller), dq._1)]
657708 else nil
658- ((([aK(A, al, cN, E, aM, aJ), ak(E, al, A), cT, IntegerEntry(O(w.originCaller), E), IntegerEntry(G(E, w.originCaller), al)] ++ dk) ++ cw(E, w.originCaller)) ++ dm)
709+ ((([aN(D, ao, cY, H, aP, aM), an(H, ao, D), de, IntegerEntry(R(z.originCaller), H), IntegerEntry(J(H, z.originCaller), ao)] ++ du) ++ cx(H, z.originCaller)) ++ dw)
659710 }
660711 else throw("Strict value is not equal to itself.")
661712 }
674725
675726
676727
677-@Callable(w)
678-func appendBlock (A,cN,aM,aJ) = {
679- let dn = if ((au == w.originCaller))
728+@Callable(z)
729+func appendBlock (D,cY,aP,aM) = {
730+ let dx = if ((ax == z.originCaller))
680731 then true
681732 else {
682- let y = au
683- if ($isInstanceOf(y, "Address"))
733+ let B = ax
734+ if ($isInstanceOf(B, "Address"))
684735 then {
685- let do = y
686- throw(("not allowed to forge blocks in this epoch, expected from " + toString(do)))
736+ let dy = B
737+ throw(("not allowed to forge blocks in this epoch, expected from " + toString(dy)))
687738 }
688739 else throw("not allowed to forge blocks in this epoch, epoch miner is absent")
689740 }
690- if ((dn == dn))
741+ if ((dx == dx))
691742 then {
692- let E = valueOrElse(cj(w.originCaller), am)
693- let dp = ai(E)
694- let di = dp._1
695- let dq = dp._2
696- let cR = cd(cN, dq)
697- if ((cR == cR))
743+ let H = valueOrElse(ck(z.originCaller), ap)
744+ let dz = al(H)
745+ let ds = dz._1
746+ let dA = dz._2
747+ let dc = ce(cY, dA)
748+ if ((dc == dc))
698749 then {
699- let cS = V(az(cN)._6, aJ, false)
700- if ((cS == cS))
750+ let dd = Y(aC(cY)._6, aM, false)
751+ if ((dd == dd))
701752 then {
702- let al = (di + 1)
703- let cO = cF(A)
704- if ((cO == cO))
705- then [aK(A, al, dq, E, aM, aJ), IntegerEntry(G(E, w.originCaller), al), ak(E, al, A), StringEntry(B(height), ((((toString(value(au)) + d) + toString(av)) + d) + A))]
753+ let ao = (ds + 1)
754+ let cZ = cG(D)
755+ if ((cZ == cZ))
756+ then [aN(D, ao, dA, H, aP, aM), IntegerEntry(J(H, z.originCaller), ao), an(H, ao, D), StringEntry(E(height), ((((toString(value(ax)) + d) + toString(ay)) + d) + D))]
706757 else throw("Strict value is not equal to itself.")
707758 }
708759 else throw("Strict value is not equal to itself.")
714765
715766
716767
717-@Callable(w)
718-func join (dr) = {
719- func ds (dt) = {
720- let y = getBinary(M(dt))
721- if ($isInstanceOf(y, "ByteVector"))
768+@Callable(z)
769+func join (dB) = {
770+ func dC (dD) = {
771+ let B = getBinary(P(dD))
772+ if ($isInstanceOf(B, "ByteVector"))
722773 then {
723- let du = y
724- if ((du == w.originCallerPublicKey))
774+ let dE = B
775+ if ((dE == z.originCallerPublicKey))
725776 then unit
726- else throw(((("EL miner address " + dt) + " is already linked with ") + toBase58String(du)))
777+ else throw(((("EL miner address " + dD) + " is already linked with ") + toBase58String(dE)))
727778 }
728779 else unit
729780 }
730781
731- let dv = split(dr, "0x")
732- let N = fromBase16String(dv[(size(dv) - 1)])
733- if (!(cb()))
782+ let dF = split(dB, "0x")
783+ let Q = fromBase16String(dF[(size(dF) - 1)])
784+ if (!(cc()))
734785 then throw("The contract has not yet set up")
735- else if ((c > wavesBalance(w.originCaller).generating))
736- then throw(((("Insufficient generating balance: " + toString(wavesBalance(w.originCaller).generating)) + ". Required: ") + toString(c)))
737- else if ((size(N) != 20))
786+ else if ((c > wavesBalance(z.originCaller).generating))
787+ then throw(((("Insufficient generating balance: " + toString(wavesBalance(z.originCaller).generating)) + ". Required: ") + toString(c)))
788+ else if ((size(Q) != 20))
738789 then throw("rewardAddress should be an L2 address")
739- else if ((size(ax) >= 50))
790+ else if ((size(aA) >= 50))
740791 then throw("too many miners")
741792 else {
742- func dw (dx,H) = if (dx)
793+ func dG (dH,K) = if (dH)
743794 then true
744- else (H == toString(w.originCaller))
795+ else (K == toString(z.originCaller))
745796
746- let dy = {
747- let bi = ax
748- let bj = size(bi)
749- let bk = false
750- func bl (bm,bn) = if ((bn >= bj))
751- then bm
752- else dw(bm, bi[bn])
797+ let dI = {
798+ let bl = aA
799+ let bm = size(bl)
800+ let bn = false
801+ func bo (bp,bq) = if ((bq >= bm))
802+ then bp
803+ else dG(bp, bl[bq])
753804
754- func bo (bm,bn) = if ((bn >= bj))
755- then bm
805+ func br (bp,bq) = if ((bq >= bm))
806+ then bp
756807 else throw("List size exceeds 50")
757808
758- bo(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bk, 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)
809+ 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)
759810 }
760- if (dy)
811+ if (dI)
761812 then nil
762813 else {
763- let dz = toString(w.originCaller)
764- let dA = toBase16String(N)
765- let dB = ds(dA)
766- if ((dB == dB))
814+ let dJ = toString(z.originCaller)
815+ let dK = toBase16String(Q)
816+ let dL = dC(dK)
817+ if ((dL == dL))
767818 then {
768- let bL = if ((size(ax) == 0))
769- then dz
770- else ((aw + d) + dz)
771- let dC = {
772- let y = getString(K(dz))
773- if ($isInstanceOf(y, "String"))
819+ let bN = if ((size(aA) == 0))
820+ then dJ
821+ else ((az + d) + dJ)
822+ let dM = {
823+ let B = getString(N(dJ))
824+ if ($isInstanceOf(B, "String"))
774825 then {
775- let dD = y
776- if ((dD == toBase16String(N)))
826+ let dN = B
827+ if ((dN == toBase16String(Q)))
777828 then nil
778- else [DeleteEntry(M(dD))]
829+ else [DeleteEntry(P(dN))]
779830 }
780831 else nil
781832 }
782- ([StringEntry(l, bL), StringEntry(K(dz), ("0x" + dA)), BinaryEntry(M(dA), w.originCallerPublicKey)] ++ dC)
833+ ([StringEntry(m, bN), StringEntry(N(dJ), ("0x" + dK)), BinaryEntry(P(dK), z.originCallerPublicKey)] ++ dM)
783834 }
784835 else throw("Strict value is not equal to itself.")
785836 }
788839
789840
790841
791-@Callable(w)
842+@Callable(z)
792843 func leave () = {
793- let dE = toString(w.originCaller)
794- func dF (bS,H) = if ((H == dE))
795- then bS
796- else (bS :+ H)
844+ let dO = toString(z.originCaller)
845+ func dP (bU,K) = if ((K == dO))
846+ then bU
847+ else (bU :+ K)
797848
798- let dG = {
799- let bi = ax
800- let bj = size(bi)
801- let bk = nil
802- func bl (bm,bn) = if ((bn >= bj))
803- then bm
804- else dF(bm, bi[bn])
849+ let dQ = {
850+ let bl = aA
851+ let bm = size(bl)
852+ let bn = nil
853+ func bo (bp,bq) = if ((bq >= bm))
854+ then bp
855+ else dP(bp, bl[bq])
805856
806- func bo (bm,bn) = if ((bn >= bj))
807- then bm
857+ func br (bp,bq) = if ((bq >= bm))
858+ then bp
808859 else throw("List size exceeds 50")
809860
810- bo(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bk, 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)
861+ 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)
811862 }
812- let dH = K(dE)
813- let dI = valueOrErrorMessage(getString(this, dH), "miner has never joined")
814- if ((dI == dI))
815- then if ((au == w.originCaller))
863+ let dR = N(dO)
864+ let dS = valueOrErrorMessage(getString(this, dR), "miner has never joined")
865+ if ((dS == dS))
866+ then if ((ax == z.originCaller))
816867 then throw("designated miner can't leave")
817- else [StringEntry(l, makeString_2C(dG, d))]
868+ else [StringEntry(m, makeString_2C(dQ, d))]
818869 else throw("Strict value is not equal to itself.")
819870 }
820871
821872
822873
823-@Callable(w)
824-func transfer (T) = {
825- let dJ = if ((size(T) == i))
826- then fromBase16String(T)
827- else throw(((("Address should have " + toString(i)) + " characters, got ") + toString(size(T))))
828- if ((dJ == dJ))
874+@Callable(z)
875+func transfer (W) = {
876+ let dT = if ((size(W) == i))
877+ then fromBase16String(W)
878+ else throw(((("Address should have " + toString(i)) + " characters, got ") + toString(size(W))))
879+ if ((dT == dT))
829880 then {
830- let dK = if ((size(w.payments) == 1))
881+ let dU = if ((size(z.payments) == 1))
831882 then true
832- else throw(("Expected one payment as a transfer amount, got " + toString(size(w.payments))))
833- if ((dK == dK))
883+ else throw(("Expected one payment as a transfer amount, got " + toString(size(z.payments))))
884+ if ((dU == dU))
834885 then {
835- let dL = getStringValue(s)
836- let dM = fromBase58String(dL)
837- let ad = w.payments[0]
838- let dN = {
839- let y = ad.assetId
840- if ($isInstanceOf(y, "ByteVector"))
886+ let dV = getStringValue(t)
887+ let cX = fromBase58String(dV)
888+ let ag = z.payments[0]
889+ let dW = {
890+ let B = ag.assetId
891+ if ($isInstanceOf(B, "ByteVector"))
841892 then {
842- let dO = y
843- if ((dO == dM))
893+ let dX = B
894+ if ((dX == cX))
844895 then true
845- else throw(((("Expected " + dL) + " in the payment, got ") + toBase58String(dO)))
896+ else throw(((("Expected " + dV) + " in the payment, got ") + toBase58String(dX)))
846897 }
847- else throw((("Expected " + dL) + " in the payment, got Waves"))
898+ else throw((("Expected " + dV) + " in the payment, got Waves"))
848899 }
849- if ((dN == dN))
900+ if ((dW == dW))
850901 then {
851- let dP = az(ap)._6
852- let af = (P - dP)
853- let dQ = if ((160 > af))
854- then ac(ad, 1000000, af)
855- else if ((1600 > af))
856- then ac(ad, 10000000, af)
857- else if ((3200 > af))
858- then ac(ad, 100000000, af)
859- else if ((6400 > af))
860- then ac(ad, 1000000000, af)
861- else throw((("Transfers denied for queue size of " + toString(af)) + ". Wait until current transfers processed"))
862- if ((dQ == dQ))
863- then [IntegerEntry(u, (P + 1)), S(P, T, ad.amount), Burn(dM, ad.amount)]
902+ let dY = aC(as)._6
903+ let ai = (S - dY)
904+ let dZ = if ((160 > ai))
905+ then af(ag, 1000000, ai)
906+ else if ((1600 > ai))
907+ then af(ag, 10000000, ai)
908+ else if ((3200 > ai))
909+ then af(ag, 100000000, ai)
910+ else if ((6400 > ai))
911+ then af(ag, 1000000000, ai)
912+ else throw((("Transfers denied for queue size of " + toString(ai)) + ". Wait until current transfers processed"))
913+ if ((dZ == dZ))
914+ then [IntegerEntry(v, (S + 1)), V(S, W, ag.amount), Burn(cX, ag.amount)]
864915 else throw("Strict value is not equal to itself.")
865916 }
866917 else throw("Strict value is not equal to itself.")
872923
873924
874925
875-@Callable(w)
876-func withdraw (A,dR,dS,U) = {
877- let dT = az(A)
878- let dU = dT._1
879- let dV = az(getStringValue(r))._1
880- let dW = az(ap)._1
881- if ((dU > dV))
882- then throw(((("EL block #" + toString(dU)) + " is not finalized. The current finalized is #") + toString(dV)))
883- else if ((size(dR) != h))
884- then throw(((("Expected " + toString(h)) + " proofs, got ") + toString(size(dR))))
885- else if ((0 > dS))
886- then throw(("Transfer index in block should be nonnegative, got " + toString(dS)))
887- else if ((0 >= U))
888- then throw(("Amount should be positive, got " + toString(U)))
926+@Callable(z)
927+func withdraw (D,ea,eb,X) = {
928+ let ec = aC(D)
929+ let ed = ec._1
930+ let ee = aC(getStringValue(s))._1
931+ let ef = aC(as)._1
932+ if ((ed > ee))
933+ then throw(((("EL block #" + toString(ed)) + " is not finalized. The current finalized is #") + toString(ee)))
934+ else if ((size(ea) != h))
935+ then throw(((("Expected " + toString(h)) + " proofs, got ") + toString(size(ea))))
936+ else if ((0 > eb))
937+ then throw(("Transfer index in block should be nonnegative, got " + toString(eb)))
938+ else if ((0 >= X))
939+ then throw(("Amount should be positive, got " + toString(X)))
889940 else {
890- let dX = dT._4
891- let dY = (dX == am)
892- let dZ = {
893- let y = getInteger(I(dX))
894- if ($isInstanceOf(y, "Int"))
941+ let eg = ec._4
942+ let eh = (eg == ap)
943+ let ei = {
944+ let B = getInteger(L(eg))
945+ if ($isInstanceOf(B, "Int"))
895946 then {
896- let ea = y
897- (ea > dU)
947+ let ej = B
948+ (ej > ed)
898949 }
899- else throw((((A + " is on an alternative chain #") + toString(dX)) + " that was not approved by majority. Wait for some blocks"))
950+ else throw((((D + " is on an alternative chain #") + toString(eg)) + " that was not approved by majority. Wait for some blocks"))
900951 }
901- if (if (dY)
952+ if (if (eh)
902953 then true
903- else dZ)
954+ else ei)
904955 then {
905- let eb = w.originCaller
906- let ec = take(drop(eb.bytes, 2), f)
907- let ed = base58'11111111111111111111111111111111111111111111'
908- let ee = toBytes(U)
909- let ef = ((ec + take(ed, (size(ed) - size(ee)))) + ee)
910- let eg = blake2b256_16Kb(ef)
911- let eh = createMerkleRoot(dR, eg, dS)
912- let ei = dT._5
913- if ((eh == ei))
956+ let ek = z.originCaller
957+ let el = take(drop(ek.bytes, 2), f)
958+ let em = base58'11111111111111111111111111111111111111111111'
959+ let en = toBytes(X)
960+ let eo = ((el + take(em, (size(em) - size(en)))) + en)
961+ let ep = blake2b256_16Kb(eo)
962+ let eq = createMerkleRoot(ea, ep, eb)
963+ let er = ec._5
964+ if ((eq == er))
914965 then {
915- let dM = fromBase58String(getStringValue(s))
916- let ej = z(A)
917-[Reissue(dM, U, true), ScriptTransfer(eb, U, dM), StringEntry(ej, cz(valueOrElse(getString(ej), ""), dS))]
966+ let cX = fromBase58String(getStringValue(t))
967+ let es = C(D)
968+[Reissue(cX, X, true), ScriptTransfer(ek, X, cX), StringEntry(es, cA(valueOrElse(getString(es), ""), eb))]
918969 }
919- else throw((((((("Expected root hash: " + toBase16String(ei)) + ", got: ") + toBase16String(eh)) + ". Event data digest: ") + toBase64String(eg)) + ". Check your withdraw arguments"))
970+ else throw((((((("Expected root hash: " + toBase16String(er)) + ", got: ") + toBase16String(eq)) + ". Event data digest: ") + toBase64String(ep)) + ". Check your withdraw arguments"))
920971 }
921- else throw((("Expected " + A) + " to be either on the main chain or relate to it"))
972+ else throw((("Expected " + D) + " to be either on the main chain or relate to it"))
922973 }
923974 }
924975
925976
926977
927-@Callable(w)
928-func setup (ek,el) = if (cb())
978+@Callable(z)
979+func setup (et,eu,ev,ew) = if (cc())
929980 then throw("The contract has been already set up")
930- else if ((0 > el))
981+ else if ((0 > eu))
931982 then throw("The miner reward must be nonnegative")
932983 else {
933- let em = fromBase16String(ek)
934- let en = if ((size(em) == e))
984+ let ex = fromBase16String(et)
985+ let ey = if ((size(ex) == e))
935986 then true
936987 else throw("Wrong genesis block hash")
937- if ((en == en))
988+ if ((ey == ey))
938989 then {
939- let eo = base58'11111111111111111111111111111111'
940- let ep = addressFromPublicKey(eo)
941- let eq = base58'11111111111111111111'
942- let er = "0000000000000000000000000000000000000000000000000000000000000000"
943- let es = Issue("UNIT0", "Native token", 0, 8, true)
944- let dM = calculateAssetId(es)
945- let et = aK(ek, 0, er, 0, toBase16String(base58''), -1)
946-[et, StringEntry(D(0), ek), ak(0, 0, ek), IntegerEntry(p, el), StringEntry(B(height), ((toString(ep) + ",0,") + ek)), StringEntry(r, ek), es, StringEntry(s, toBase58String(dM)), StringEntry(t, "0x0000000000000000000000000000000000006a7e")]
990+ let ez = base58'11111111111111111111111111111111'
991+ let eA = addressFromPublicKey(ez)
992+ let eB = base58'11111111111111111111'
993+ let eC = "0000000000000000000000000000000000000000000000000000000000000000"
994+ let eD = Issue("UNIT0", "Native token", 0, 8, true)
995+ let cX = calculateAssetId(eD)
996+ let eE = aN(et, 0, eC, 0, toBase16String(base58''), -1)
997+ let eF = if ((ev == ""))
998+ then nil
999+ else [StringEntry(w, toString(Address(fromBase58String(ev)))), IntegerEntry(x, if ((ew > 0))
1000+ then ew
1001+ else throw("invalid DAO reward amount"))]
1002+ ([eE, StringEntry(G(0), et), an(0, 0, et), IntegerEntry(q, eu), StringEntry(E(height), ((toString(eA) + ",0,") + et)), StringEntry(s, et), eD, StringEntry(t, toBase58String(cX)), StringEntry(u, "0x0000000000000000000000000000000000006a7e")] ++ eF)
9471003 }
9481004 else throw("Strict value is not equal to itself.")
9491005 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 8 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 9223372036854775807
55
66 let b = 100000000
77
88 let c = (20000 * b)
99
1010 let d = ","
1111
1212 let e = 32
1313
1414 let f = 20
1515
1616 let g = 32
1717
1818 let h = 10
1919
2020 let i = 40
2121
2222 let j = 16
2323
2424 let k = "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
2525
26-let l = "allMiners"
26+let l = split_4C("::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::", "")
2727
28-let m = "mainChainId"
28+let m = "allMiners"
2929
30-let n = "lastChainId"
30+let n = "mainChainId"
3131
32-let o = "firstValidAltChainId"
32+let o = "lastChainId"
3333
34-let p = "minerReward"
34+let p = "firstValidAltChainId"
3535
36-let q = "block_0x"
36+let q = "minerReward"
3737
38-let r = "finalizedBlock"
38+let r = "block_0x"
3939
40-let s = "tokenId"
40+let s = "finalizedBlock"
4141
42-let t = "elBridgeAddress"
42+let t = "tokenId"
4343
44-let u = "nativeTransfersCount"
44+let u = "elBridgeAddress"
4545
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
46+let v = "nativeTransfersCount"
47+
48+let w = "daoAddress"
49+
50+let x = "daoReward"
51+
52+func y (z) = {
53+ let A = toString(z)
54+ let B = size(A)
55+ if ((1 == B))
56+ then ("0000000" + A)
57+ else if ((2 == B))
58+ then ("000000" + A)
59+ else if ((3 == B))
60+ then ("00000" + A)
61+ else if ((4 == B))
62+ then ("0000" + A)
63+ else if ((5 == B))
64+ then ("000" + A)
65+ else if ((6 == B))
66+ then ("00" + A)
67+ else if ((7 == B))
68+ then ("0" + A)
69+ else A
6470 }
6571
6672
67-func z (A) = ("elToClTransfers_0x" + A)
73+func C (D) = ("elToClTransfers_0x" + D)
6874
6975
70-func B (C) = ("epoch_" + v(C))
76+func E (F) = ("epoch_" + y(F))
7177
7278
73-func D (E) = (("chain" + toString(E)) + "FirstBlock")
79+func G (H) = (("chain" + toString(H)) + "FirstBlock")
7480
7581
76-func F (E) = ("chain_" + v(E))
82+func I (H) = ("chain_" + y(H))
7783
7884
79-func G (E,H) = ((("chain_" + v(E)) + "_") + toString(H))
85+func J (H,K) = ((("chain_" + y(H)) + "_") + toString(K))
8086
8187
82-func I (E) = (("chain_" + v(E)) + "ForkedHeight")
88+func L (H) = (("chain_" + y(H)) + "ForkedHeight")
8389
8490
85-func J (E) = (("chain" + toString(E)) + "Supporters")
91+func M (H) = (("chain" + toString(H)) + "Supporters")
8692
8793
88-func K (L) = (("miner_" + L) + "_RewardAddress")
94+func N (O) = (("miner_" + O) + "_RewardAddress")
8995
9096
91-func M (N) = (("miner_0x" + N) + "_PK")
97+func P (Q) = (("miner_0x" + Q) + "_PK")
9298
9399
94-func O (H) = (("miner_" + toString(H)) + "_ChainId")
100+func R (K) = (("miner_" + toString(K)) + "_ChainId")
95101
96102
97-let P = valueOrElse(getInteger(this, u), 0)
103+let S = valueOrElse(getInteger(this, v), 0)
98104
99-func Q (R) = ("nativeTransfer_" + toString(R))
105+func T (U) = ("nativeTransfer_" + toString(U))
100106
101107
102-func S (R,T,U) = StringEntry(Q(R), ((("0x" + T) + d) + toString(U)))
108+func V (U,W,X) = StringEntry(T(U), ((("0x" + W) + d) + toString(X)))
103109
104110
105-func V (W,X,Y) = {
106- let Z = if (Y)
111+func Y (Z,aa,ab) = {
112+ let ac = if (ab)
107113 then (j - 1)
108114 else j
109- let aa = (X - W)
110- let ab = if ((aa > Z))
111- then throw(((("Allowed only " + toString(Z)) + " transfers, got ") + toString(aa)))
115+ let ad = (aa - Z)
116+ let ae = if ((ad > ac))
117+ then throw(((("Allowed only " + toString(ac)) + " transfers, got ") + toString(ad)))
112118 else true
113- if ((ab == ab))
114- then if ((X >= P))
115- then throw(((("Attempt to transfer #" + toString(X)) + ". Available transfers: ") + toString(P)))
119+ if ((ae == ae))
120+ then if ((aa >= S))
121+ then throw(((("Attempt to transfer #" + toString(aa)) + ". Available transfers: ") + toString(S)))
116122 else true
117123 else throw("Strict value is not equal to itself.")
118124 }
119125
120126
121-func ac (ad,ae,af) = if ((ad.amount >= ae))
127+func af (ag,ah,ai) = if ((ag.amount >= ah))
122128 then true
123- else throw((((((("Transferring amount " + toString(ad.amount)) + " should be >= ") + toString(ae)) + " for queue size of ") + toString(af)) + ". Transfer more or wait"))
129+ else throw((((((("Transferring amount " + toString(ag.amount)) + " should be >= ") + toString(ah)) + " for queue size of ") + toString(ai)) + ". Transfer more or wait"))
124130
125131
126-func ag (ah) = wavesBalance(ah).generating
132+func aj (ak) = wavesBalance(ak).generating
127133
128134
129-func ai (E) = {
130- let x = getStringValue(F(E))
131- let aj = split(x, d)
132- $Tuple2(parseIntValue(aj[0]), aj[1])
135+func al (H) = {
136+ let A = getStringValue(I(H))
137+ let am = split(A, d)
138+ $Tuple2(parseIntValue(am[0]), am[1])
133139 }
134140
135141
136-func ak (E,al,A) = StringEntry(F(E), ((toString(al) + d) + A))
142+func an (H,ao,D) = StringEntry(I(H), ((toString(ao) + d) + D))
137143
138144
139-let am = valueOrElse(getInteger(m), 0)
145+let ap = valueOrElse(getInteger(n), 0)
140146
141-let an = ai(am)
147+let aq = al(ap)
142148
143-let ao = an._1
149+let ar = aq._1
144150
145-let ap = an._2
151+let as = aq._2
146152
147-func aq (C) = {
148- let y = getString(B(C))
149- if ($isInstanceOf(y, "String"))
153+func at (F) = {
154+ let B = getString(E(F))
155+ if ($isInstanceOf(B, "String"))
150156 then {
151- let x = y
152- let ar = split(x, d)
153- $Tuple3(addressFromStringValue(ar[0]), parseIntValue(ar[1]), ar[2])
157+ let A = B
158+ let au = split(A, d)
159+ $Tuple3(addressFromStringValue(au[0]), parseIntValue(au[1]), au[2])
154160 }
155161 else unit
156162 }
157163
158164
159-let as = {
160- let y = aq(height)
161- if ($isInstanceOf(y, "(Address, Int, String)"))
165+let av = {
166+ let B = at(height)
167+ if ($isInstanceOf(B, "(Address, Int, String)"))
162168 then {
163- let at = y
164- at
169+ let aw = B
170+ aw
165171 }
166172 else $Tuple2(unit, 0)
167173 }
168174
169-let au = as._1
175+let ax = av._1
170176
171-let av = as._2
177+let ay = av._2
172178
173-let aw = valueOrElse(getString(l), "")
179+let az = valueOrElse(getString(m), "")
174180
175-let ax = {
176- let y = aw
177- if (("" == y))
181+let aA = {
182+ let B = az
183+ if (("" == B))
178184 then nil
179- else if ($isInstanceOf(y, "String"))
185+ else if ($isInstanceOf(B, "String"))
180186 then {
181- let ay = y
182- split_4C(ay, d)
187+ let aB = B
188+ split_4C(aB, d)
183189 }
184190 else throw("Match error")
185191 }
186192
187-func az (aA) = {
188- let aB = getBinaryValue((q + aA))
189- let aC = size(aB)
190- let aD = toInt(aB)
191- let aE = toInt(aB, 8)
192- let aF = take(drop(aB, 16), e)
193- let E = toInt(aB, (16 + e))
194- let aG = (24 + e)
195- let aH = (aC - aG)
196- let aI = if ((aH >= g))
197- then take(drop(aB, aG), g)
193+func aC (aD) = {
194+ let aE = getBinaryValue((r + aD))
195+ let aF = size(aE)
196+ let aG = toInt(aE)
197+ let aH = toInt(aE, 8)
198+ let aI = take(drop(aE, 16), e)
199+ let H = toInt(aE, (16 + e))
200+ let aJ = (24 + e)
201+ let aK = (aF - aJ)
202+ let aL = if ((aK >= g))
203+ then take(drop(aE, aJ), g)
198204 else base58''
199- let aJ = if (if ((aH == 8))
205+ let aM = if (if ((aK == 8))
200206 then true
201- else (aH > g))
202- then toInt(aB, (aG + size(aI)))
207+ else (aK > g))
208+ then toInt(aE, (aJ + size(aL)))
203209 else -1
204- $Tuple6(aD, aE, aF, E, aI, aJ)
210+ $Tuple6(aG, aH, aI, H, aL, aM)
205211 }
206212
207213
208-func aK (A,aD,aL,E,aM,aJ) = {
209- let aN = fromBase16String(aM)
210- let aO = size(aN)
211- let aP = if (if ((aO == 0))
214+func aN (D,aG,aO,H,aP,aM) = {
215+ let aQ = fromBase16String(aP)
216+ let aR = size(aQ)
217+ let aS = if (if ((aR == 0))
212218 then true
213- else (aO == g))
219+ else (aR == g))
214220 then true
215- else throw(((("Transfers root hash should have 0 or " + toString(g)) + " bytes, got ") + toString(aO)))
216- if ((aP == aP))
221+ else throw(((("Transfers root hash should have 0 or " + toString(g)) + " bytes, got ") + toString(aR)))
222+ if ((aS == aS))
217223 then {
218- let aQ = (((((toBytes(aD) + toBytes(height)) + fromBase16String(aL)) + toBytes(E)) + aN) + toBytes(aJ))
219- BinaryEntry((q + A), aQ)
224+ let aT = (((((toBytes(aG) + toBytes(height)) + fromBase16String(aO)) + toBytes(H)) + aQ) + toBytes(aM))
225+ BinaryEntry((r + D), aT)
220226 }
221227 else throw("Strict value is not equal to itself.")
222228 }
223229
224230
225-func aR (H,E) = {
226- let y = getInteger(G(E, H))
227- if ($isInstanceOf(y, "Int"))
231+func aU (K,H) = {
232+ let B = getInteger(J(H, K))
233+ if ($isInstanceOf(B, "Int"))
228234 then {
229- let aS = y
230- aS
235+ let aV = B
236+ aV
231237 }
232238 else {
233- let aT = getStringValue(((("chain" + toString(E)) + "LastMinedBy") + toString(H)))
234- az(aT)._1
239+ let aW = getStringValue(((("chain" + toString(H)) + "LastMinedBy") + toString(K)))
240+ aC(aW)._1
235241 }
236242 }
237243
238244
239-let aU = {
240- let aV = {
241- let y = lastBlock.vrf
242- if ($isInstanceOf(y, "ByteVector"))
245+let aX = {
246+ let aY = {
247+ let B = lastBlock.vrf
248+ if ($isInstanceOf(B, "ByteVector"))
243249 then {
244- let aW = y
245- aW
250+ let aZ = B
251+ aZ
246252 }
247253 else lastBlock.generationSignature
248254 }
249- func aX (aY,H) = {
250- let aZ = aY
251- let ba = aZ._1
252- let bb = aZ._2
253- let bc = aZ._3
254- let bd = aZ._4
255- let be = addressFromStringValue(H)
256- let bf = wavesBalance(be).generating
257- let bg = ag(be)
258- if (if ((c > bf))
255+ func ba (bb,K) = {
256+ let bc = bb
257+ let bd = bc._1
258+ let be = bc._2
259+ let bf = bc._3
260+ let bg = bc._4
261+ let bh = addressFromStringValue(K)
262+ let bi = wavesBalance(bh).generating
263+ let bj = aj(bh)
264+ if (if ((c > bi))
259265 then true
260- else (0 >= bg))
261- then aY
266+ else (0 >= bj))
267+ then bb
262268 else {
263- let bh = calculateDelay(be, bg)
264- if ((bc > bh))
265- then $Tuple4(H, (bb + bg), bh, (bd :+ H))
266- else $Tuple4(ba, (bb + bg), bc, (bd :+ H))
269+ let bk = calculateDelay(bh, bj)
270+ if ((bf > bk))
271+ then $Tuple4(K, (be + bj), bk, (bg :+ K))
272+ else $Tuple4(bd, (be + bj), bf, (bg :+ K))
267273 }
268274 }
269275
270- let bi = ax
271- let bj = size(bi)
272- let bk = $Tuple4("", 0, a, nil)
273- func bl (bm,bn) = if ((bn >= bj))
274- then bm
275- else aX(bm, bi[bn])
276+ let bl = aA
277+ let bm = size(bl)
278+ let bn = $Tuple4("", 0, a, nil)
279+ func bo (bp,bq) = if ((bq >= bm))
280+ then bp
281+ else ba(bp, bl[bq])
276282
277- func bo (bm,bn) = if ((bn >= bj))
278- then bm
283+ func br (bp,bq) = if ((bq >= bm))
284+ then bp
279285 else throw("List size exceeds 50")
280286
281- bo(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bk, 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)
287+ 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)
282288 }
283289
284-let bp = aU._1
290+let bs = aX._1
285291
286-let bq = aU._2
292+let bt = aX._2
287293
288-let br = az(ap)
294+let bu = aC(as)
289295
290-let bs = br._1
296+let bv = bu._1
291297
292-let bt = br._2
298+let bw = bu._2
293299
294-func bu (bv,bw,bx) = {
295- let by = split_4C("::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::", "")
296- let bz = (bq / 2)
297- func bA (aY,bB) = {
298- let bC = aY
299- let bD = bC._1
300- let bE = bC._2
301- let bF = bC._3
302- let bd = bC._4
303- let y = bE
304- if ($isInstanceOf(y, "Unit"))
300+func bx (by,bz,bA) = {
301+ let bB = (bt / 2)
302+ func bC (bb,bD) = {
303+ let bE = bb
304+ let bF = bE._1
305+ let bG = bE._2
306+ let bH = bE._3
307+ let bg = bE._4
308+ let B = bG
309+ if ($isInstanceOf(B, "Unit"))
305310 then {
306- let bG = if ((bD == height))
307- then $Tuple3(bv, bw, bx)
308- else value(aq(bD))
309- let H = bG._1
310- let bH = bG._2
311- let bI = bG._3
312- if (if ((bH == 0))
311+ let bI = if ((bF == height))
312+ then $Tuple3(by, bz, bA)
313+ else value(at(bF))
314+ let K = bI._1
315+ let bJ = bI._2
316+ let bK = bI._3
317+ if (if ((bJ == 0))
313318 then true
314- else ((height - bD) >= 100))
315- then $Tuple4(bD, bI, bF, ax)
319+ else ((height - bF) >= 100))
320+ then $Tuple4(bF, bK, bH, aA)
316321 else {
317- let bJ = if (containsElement(bd, H))
318- then $Tuple2(bF, bd)
319- else $Tuple2((bF + ag(H)), H :: bd)
320- let bK = bJ._1
321- let bL = bJ._2
322- if ((bK > bz))
323- then $Tuple4(bD, bI, bK, ax)
324- else $Tuple4(bH, unit, bK, bL)
322+ let bL = if (containsElement(bg, K))
323+ then $Tuple2(bH, bg)
324+ else $Tuple2((bH + aj(K)), K :: bg)
325+ let bM = bL._1
326+ let bN = bL._2
327+ if ((bM > bB))
328+ then $Tuple4(bF, bK, bM, aA)
329+ else $Tuple4(bJ, unit, bM, bN)
325330 }
326331 }
327- else aY
332+ else bb
328333 }
329334
330- let bM = {
331- let bi = by
332- let bj = size(bi)
333- let bk = $Tuple4(height, unit, 0, nil)
334- func bl (bm,bn) = if ((bn >= bj))
335- then bm
336- else bA(bm, bi[bn])
335+ let bO = {
336+ let bl = l
337+ let bm = size(bl)
338+ let bn = $Tuple4(height, unit, 0, nil)
339+ func bo (bp,bq) = if ((bq >= bm))
340+ then bp
341+ else bC(bp, bl[bq])
337342
338- func bo (bm,bn) = if ((bn >= bj))
339- then bm
343+ func br (bp,bq) = if ((bq >= bm))
344+ then bp
340345 else throw("List size exceeds 100")
341346
342- bo(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bk, 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)
347+ 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)
343348 }
344- let bN = bM._1
345- let bO = bM._2
346- let y = bO
347- if ($isInstanceOf(y, "String"))
348- then {
349- let bP = y
350- bP
351- }
352- else value(aq(bN))._3
349+ let bP = bO._1
350+ let bQ = bO._2
351+ $Tuple2({
352+ let B = bQ
353+ if ($isInstanceOf(B, "String"))
354+ then {
355+ let bR = B
356+ bR
357+ }
358+ else value(at(bP))._3
359+ }, bP)
353360 }
354361
355362
356-func bQ (E) = {
357- func bR (bS,bT) = {
358- let bU = bS
359- let bF = bU._1
360- let bV = bU._2
361- let bW = addressFromStringValue(bT)
362- if (containsElement(bV, bW))
363- then bS
363+func bS (H) = {
364+ func bT (bU,bV) = {
365+ let bW = bU
366+ let bH = bW._1
367+ let bX = bW._2
368+ let bY = addressFromStringValue(bV)
369+ if (containsElement(bX, bY))
370+ then bU
364371 else {
365- let bX = ag(bW)
366- $Tuple2((bF + bX), (bV :+ bW))
372+ let bZ = aj(bY)
373+ $Tuple2((bH + bZ), (bX :+ bY))
367374 }
368375 }
369376
370- let bY = split_4C(getStringValue(J(E)), d)
371- let bZ = {
372- let bi = bY
373- let bj = size(bi)
374- let bk = $Tuple2(0, nil)
375- func bl (bm,bn) = if ((bn >= bj))
376- then bm
377- else bR(bm, bi[bn])
377+ let ca = split_4C(getStringValue(M(H)), d)
378+ let cb = {
379+ let bl = ca
380+ let bm = size(bl)
381+ let bn = $Tuple2(0, nil)
382+ func bo (bp,bq) = if ((bq >= bm))
383+ then bp
384+ else bT(bp, bl[bq])
378385
379- func bo (bm,bn) = if ((bn >= bj))
380- then bm
386+ func br (bp,bq) = if ((bq >= bm))
387+ then bp
381388 else throw("List size exceeds 100")
382389
383- bo(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bk, 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)
390+ 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)
384391 }
385- let bX = bZ._1
386- let ca = bZ._2
387- bX
392+ cb._1
388393 }
389394
390395
391-func cb () = isDefined(getInteger(p))
396+func cc () = isDefined(getInteger(q))
392397
393398
394-func cc (bW) = if ((toString(bW) != bp))
395- then throw(((((toBase58String(bW.bytes) + " is not allowed to mine in ") + toString(height)) + " epoch. Expected ") + bp))
399+func cd (bY) = if ((toString(bY) != bs))
400+ then throw(((((toBase58String(bY.bytes) + " is not allowed to mine in ") + toString(height)) + " epoch. Expected ") + bs))
396401 else unit
397402
398403
399-func cd (ce,cf) = if ((ce == cf))
404+func ce (cf,cg) = if ((cf == cg))
400405 then unit
401- else throw(((("Expected a reference to the chain last block: 0x" + cf) + ". Got: 0x") + ce))
406+ else throw(((("Expected a reference to the chain last block: 0x" + cg) + ". Got: 0x") + cf))
402407
403408
404-func cg (E) = {
405- let ch = getStringValue(D(E))
406- let ci = valueOrElse(getInteger(o), 0)
407- if ((ci > E))
409+func ch (H) = {
410+ let ci = getStringValue(G(H))
411+ let cj = valueOrElse(getInteger(p), 0)
412+ if ((cj > H))
408413 then true
409- else (az(getStringValue(r))._1 > az(ch)._1)
414+ else (aC(getStringValue(s))._1 > aC(ci)._1)
410415 }
411416
412417
413-func cj (H) = valueOrElse(getInteger(O(H)), getInteger(("chainIdOf" + toString(H))))
418+func ck (K) = valueOrElse(getInteger(R(K)), getInteger(("chainIdOf" + toString(K))))
414419
415420
416-func ck (bW,cl,cm) = {
417- let cn = {
418- let y = cm
419- if ($isInstanceOf(y, "String"))
421+func cl (bY,cm,cn) = {
422+ let co = {
423+ let B = cn
424+ if ($isInstanceOf(B, "String"))
420425 then {
421- let aT = y
422- let co = aR(bW, am)
423- ((az(aT)._1 + 1) > co)
426+ let aW = B
427+ let cp = aU(bY, ap)
428+ ((aC(aW)._1 + 1) > cp)
424429 }
425430 else true
426431 }
427- let y = cj(bW)
428- if ($isInstanceOf(y, "Int"))
432+ let B = ck(bY)
433+ if ($isInstanceOf(B, "Int"))
429434 then {
430- let cp = y
431- if (if ((cp == cl))
435+ let cq = B
436+ if (if ((cq == cm))
432437 then true
433- else if (cg(cp))
434- then cn
438+ else if (ch(cq))
439+ then co
435440 else false)
436441 then unit
437- else throw(("miner is mining other chain " + toString(cp)))
442+ else throw(("miner is mining other chain " + toString(cq)))
438443 }
439444 else unit
440445 }
441446
442447
443-let cq = (" at height " + toString(height))
448+let cr = (" at height " + toString(height))
444449
445-func cr (cs) = valueOrErrorMessage(valueOrErrorMessage(blockInfoByHeight(cs), ("last block is not available" + cq)).vrf, ("VRF is not available" + cq))
450+func cs (ct) = valueOrErrorMessage(valueOrErrorMessage(blockInfoByHeight(ct), ("last block is not available" + cr)).vrf, ("VRF is not available" + cr))
446451
447452
448-func ct (cu) = {
449- let cv = cr(height)
450- if ((cu == cv))
453+func cu (cv) = {
454+ let cw = cs(height)
455+ if ((cv == cw))
451456 then unit
452- else throw((((("Expected VRF " + toBase58String(cu)) + " does not match actual ") + toBase58String(cv)) + cq))
457+ else throw((((("Expected VRF " + toBase58String(cv)) + " does not match actual ") + toBase58String(cw)) + cr))
453458 }
454459
455460
456-func cw (E,bW) = {
457- let cx = getStringValue(J(E))
458- let cy = split_4C(cx, d)
459- if (containsElement(cy, toString(bW)))
461+func cx (H,bY) = {
462+ let cy = getStringValue(M(H))
463+ let cz = split_4C(cy, d)
464+ if (containsElement(cz, toString(bY)))
460465 then nil
461- else [StringEntry(J(E), ((cx + d) + toString(bW)))]
466+ else [StringEntry(M(H), ((cy + d) + toString(bY)))]
462467 }
463468
464469
465-func cz (cA,R) = if ((0 > R))
466- then throw(("Can't withdraw at negative index: " + toString(R)))
470+func cA (cB,U) = if ((0 > U))
471+ then throw(("Can't withdraw at negative index: " + toString(U)))
467472 else {
468- let cB = size(cA)
469- if ((R >= cB))
473+ let cC = size(cB)
474+ if ((U >= cC))
470475 then {
471- let cC = (R - cB)
472- if ((cC > size(k)))
473- then throw((("Can't add " + toString(cC)) + " empty flags. Contact with developers"))
474- else ((cA + take(k, cC)) + "1")
476+ let cD = (U - cC)
477+ if ((cD > size(k)))
478+ then throw((("Can't add " + toString(cD)) + " empty flags. Contact with developers"))
479+ else ((cB + take(k, cD)) + "1")
475480 }
476481 else {
477- let cD = drop(cA, R)
478- let cE = take(cD, 1)
479- if ((cE == "0"))
480- then ((take(cA, R) + "1") + drop(cD, 1))
481- else throw((("Transfer #" + toString(R)) + " has been already taken"))
482+ let cE = drop(cB, U)
483+ let cF = take(cE, 1)
484+ if ((cF == "0"))
485+ then ((take(cB, U) + "1") + drop(cE, 1))
486+ else throw((("Transfer #" + toString(U)) + " has been already taken"))
482487 }
483488 }
484489
485490
486-func cF (cG) = {
487- let cH = fromBase16String(cG)
488- if ((size(cH) != e))
491+func cG (cH) = {
492+ let cI = fromBase16String(cH)
493+ if ((size(cI) != e))
489494 then throw("invalid block id length")
490- else cG
495+ else cH
491496 }
492497
493498
494-func cI (cJ,cK,bH) = {
495- let cL = az(getStringValue(r))._1
496- let cM = bu(cJ, bH, cK)
497- if (if ((cM == cK))
499+func cJ (cK,cL,bJ) = {
500+ let cM = aC(getStringValue(s))
501+ let cN = bx(cK, bJ, cL)
502+ let cO = cN._1
503+ let cP = cN._2
504+ let cQ = {
505+ let B = getString(w)
506+ if ($isInstanceOf(B, "String"))
507+ then {
508+ let cR = B
509+ if ((cP == cM._2))
510+ then nil
511+ else {
512+ func cS (bU,bD) = if ((bU._1 == cM._2))
513+ then bU
514+ else {
515+ let cT = at(bU._1)
516+ if ($isInstanceOf(cT, "(Address, Int, String)"))
517+ then {
518+ let aw = cT
519+ $Tuple2(aw._2, (bU._2 + 1))
520+ }
521+ else bU
522+ }
523+
524+ let cU = if ((cP == height))
525+ then bJ
526+ else valueOrErrorMessage(at(cP), "no prev epoch for start")._2
527+ let cV = {
528+ let bl = l
529+ let bm = size(bl)
530+ let bn = $Tuple2(cU, 1)
531+ func bo (bp,bq) = if ((bq >= bm))
532+ then bp
533+ else cS(bp, bl[bq])
534+
535+ func br (bp,bq) = if ((bq >= bm))
536+ then bp
537+ else throw("List size exceeds 100")
538+
539+ 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)
540+ }
541+ let cW = (cV._2 * getIntegerValue(x))
542+ let cX = fromBase58String(getStringValue(t))
543+[Reissue(cX, cW, true), ScriptTransfer(Address(fromBase58String(cR)), cW, cX)]
544+ }
545+ }
546+ else nil
547+ }
548+ (cQ ++ (if (if ((cO == cL))
498549 then true
499- else (az(cM)._1 > cL))
500- then [StringEntry(r, cM)]
501- else nil
550+ else (aC(cO)._1 > cM._1))
551+ then [StringEntry(s, cO)]
552+ else nil))
502553 }
503554
504555
505-@Callable(w)
506-func extendMainChain (A,cN,aW,aM,aJ) = {
507- let cO = cF(A)
508- if ((cO == cO))
556+@Callable(z)
557+func extendMainChain (D,cY,aZ,aP,aM) = {
558+ let cZ = cG(D)
559+ if ((cZ == cZ))
509560 then {
510- let cP = ct(aW)
511- if ((cP == cP))
561+ let da = cu(aZ)
562+ if ((da == da))
512563 then {
513- let cQ = ck(w.originCaller, am, unit)
514- if ((cQ == cQ))
564+ let db = cl(z.originCaller, ap, unit)
565+ if ((db == db))
515566 then {
516- let cR = cd(cN, ap)
517- if ((cR == cR))
567+ let dc = ce(cY, as)
568+ if ((dc == dc))
518569 then {
519- let cS = V(az(cN)._6, aJ, true)
520- if ((cS == cS))
570+ let dd = Y(aC(cY)._6, aM, true)
571+ if ((dd == dd))
521572 then {
522- let cT = {
523- let y = aq(height)
524- if ($isInstanceOf(y, "Unit"))
525- then StringEntry(B(height), ((((toString(w.originCaller) + d) + toString(bt)) + d) + A))
573+ let de = {
574+ let B = at(height)
575+ if ($isInstanceOf(B, "Unit"))
576+ then StringEntry(E(height), ((((toString(z.originCaller) + d) + toString(bw)) + d) + D))
526577 else {
527- let cU = y
578+ let df = B
528579 throw("Epoch already started")
529580 }
530581 }
531- if ((cT == cT))
582+ if ((de == de))
532583 then {
533- let cV = cc(w.originCaller)
534- if ((cV == cV))
584+ let dg = cd(z.originCaller)
585+ if ((dg == dg))
535586 then {
536- let cW = cI(w.originCaller, A, bt)
537- let al = (ao + 1)
538- ([aK(A, al, ap, am, aM, aJ), ak(am, al, A), IntegerEntry(O(w.originCaller), am), IntegerEntry(G(am, w.originCaller), al), cT] ++ cW)
587+ let dh = cJ(z.originCaller, D, bw)
588+ let ao = (ar + 1)
589+ ([aN(D, ao, as, ap, aP, aM), an(ap, ao, D), IntegerEntry(R(z.originCaller), ap), IntegerEntry(J(ap, z.originCaller), ao), de] ++ dh)
539590 }
540591 else throw("Strict value is not equal to itself.")
541592 }
542593 else throw("Strict value is not equal to itself.")
543594 }
544595 else throw("Strict value is not equal to itself.")
545596 }
546597 else throw("Strict value is not equal to itself.")
547598 }
548599 else throw("Strict value is not equal to itself.")
549600 }
550601 else throw("Strict value is not equal to itself.")
551602 }
552603 else throw("Strict value is not equal to itself.")
553604 }
554605
555606
556607
557-@Callable(w)
558-func startAltChain (A,cN,aW,aM,aJ) = {
559- let cO = cF(A)
560- if ((cO == cO))
608+@Callable(z)
609+func startAltChain (D,cY,aZ,aP,aM) = {
610+ let cZ = cG(D)
611+ if ((cZ == cZ))
561612 then {
562- let cP = ct(aW)
563- if ((cP == cP))
613+ let da = cu(aZ)
614+ if ((da == da))
564615 then {
565- let cX = az(cN)
566- let cY = cX._1
567- let cZ = cX._2
568- let da = cX._3
569- let db = cX._4
570- let dc = cX._5
571- let W = cX._6
572- let dd = az(getStringValue(r))._2
573- let de = if ((cZ >= dd))
574- then cZ
575- else throw((((("Can not start alt chain from epoch " + toString(cZ)) + ", epoch ") + toString(dd)) + " is finalized"))
576- let cQ = ck(w.originCaller, am, cN)
577- if ((cQ == cQ))
616+ let di = aC(cY)
617+ let dj = di._1
618+ let dk = di._2
619+ let dl = di._3
620+ let dm = di._4
621+ let dn = di._5
622+ let Z = di._6
623+ let bP = aC(getStringValue(s))._2
624+ let do = if ((dk >= bP))
625+ then dk
626+ else throw((((("Can not start alt chain from epoch " + toString(dk)) + ", epoch ") + toString(bP)) + " is finalized"))
627+ let db = cl(z.originCaller, ap, cY)
628+ if ((db == db))
578629 then {
579- let cS = V(W, aJ, true)
580- if ((cS == cS))
630+ let dd = Y(Z, aM, true)
631+ if ((dd == dd))
581632 then {
582- let df = (valueOrElse(getInteger(n), 0) + 1)
583- let al = (cY + 1)
584- let cT = {
585- let y = aq(height)
586- if ($isInstanceOf(y, "Unit"))
587- then StringEntry(B(height), ((((toString(w.originCaller) + d) + toString(de)) + d) + A))
633+ let dp = (valueOrElse(getInteger(o), 0) + 1)
634+ let ao = (dj + 1)
635+ let de = {
636+ let B = at(height)
637+ if ($isInstanceOf(B, "Unit"))
638+ then StringEntry(E(height), ((((toString(z.originCaller) + d) + toString(do)) + d) + D))
588639 else {
589- let cU = y
640+ let df = B
590641 throw("Epoch already started")
591642 }
592643 }
593- let cV = cc(w.originCaller)
594- if ((cV == cV))
595- then [cT, aK(A, al, cN, df, aM, aJ), StringEntry(D(df), A), ak(df, al, A), IntegerEntry(O(w.originCaller), df), IntegerEntry(G(df, w.originCaller), al), IntegerEntry(G(am, w.originCaller), al), StringEntry(J(df), toString(w.originCaller)), IntegerEntry(n, df)]
644+ let dg = cd(z.originCaller)
645+ if ((dg == dg))
646+ then [de, aN(D, ao, cY, dp, aP, aM), StringEntry(G(dp), D), an(dp, ao, D), IntegerEntry(R(z.originCaller), dp), IntegerEntry(J(dp, z.originCaller), ao), IntegerEntry(J(ap, z.originCaller), ao), StringEntry(M(dp), toString(z.originCaller)), IntegerEntry(o, dp)]
596647 else throw("Strict value is not equal to itself.")
597648 }
598649 else throw("Strict value is not equal to itself.")
599650 }
600651 else throw("Strict value is not equal to itself.")
601652 }
602653 else throw("Strict value is not equal to itself.")
603654 }
604655 else throw("Strict value is not equal to itself.")
605656 }
606657
607658
608659
609-@Callable(w)
610-func extendAltChain (A,cN,aW,E,aM,aJ) = {
611- let cO = cF(A)
612- if ((cO == cO))
660+@Callable(z)
661+func extendAltChain (D,cY,aZ,H,aP,aM) = {
662+ let cZ = cG(D)
663+ if ((cZ == cZ))
613664 then {
614- let cP = ct(aW)
615- if ((cP == cP))
665+ let da = cu(aZ)
666+ if ((da == da))
616667 then {
617- let dg = az(getStringValue(D(E)))
618- let cQ = ck(w.originCaller, E, toBase16String(dg._3))
619- if ((cQ == cQ))
668+ let dq = aC(getStringValue(G(H)))
669+ let db = cl(z.originCaller, H, toBase16String(dq._3))
670+ if ((db == db))
620671 then {
621- let dh = ai(E)
622- let di = dh._1
623- let dj = dh._2
624- let cR = cd(cN, dj)
625- if ((cR == cR))
672+ let dr = al(H)
673+ let ds = dr._1
674+ let dt = dr._2
675+ let dc = ce(cY, dt)
676+ if ((dc == dc))
626677 then {
627- let cS = V(az(cN)._6, aJ, true)
628- if ((cS == cS))
678+ let dd = Y(aC(cY)._6, aM, true)
679+ if ((dd == dd))
629680 then {
630- let al = (di + 1)
631- let bH = az(cN)._2
632- let dk = if ((bQ(E) > (bq / 2)))
681+ let ao = (ds + 1)
682+ let bJ = aC(cY)._2
683+ let du = if ((bS(H) > (bt / 2)))
633684 then {
634- let dl = valueOrElse(getInteger(n), 0)
635- let cW = cI(w.originCaller, A, bH)
636- ([IntegerEntry(I(am), dg._1), IntegerEntry(m, E), IntegerEntry(o, (dl + 1))] ++ cW)
685+ let dv = valueOrElse(getInteger(o), 0)
686+ let dh = cJ(z.originCaller, D, bJ)
687+ ([IntegerEntry(L(ap), dq._1), IntegerEntry(n, H), IntegerEntry(p, (dv + 1))] ++ dh)
637688 }
638689 else nil
639- let cT = {
640- let y = aq(height)
641- if ($isInstanceOf(y, "Unit"))
642- then StringEntry(B(height), ((((toString(w.originCaller) + d) + toString(bH)) + d) + A))
690+ let de = {
691+ let B = at(height)
692+ if ($isInstanceOf(B, "Unit"))
693+ then StringEntry(E(height), ((((toString(z.originCaller) + d) + toString(bJ)) + d) + D))
643694 else {
644- let cU = y
695+ let df = B
645696 throw("Epoch already started")
646697 }
647698 }
648- if ((cT == cT))
699+ if ((de == de))
649700 then {
650- let cV = cc(w.originCaller)
651- if ((cV == cV))
701+ let dg = cd(z.originCaller)
702+ if ((dg == dg))
652703 then {
653- let dm = if (if ((dk == nil))
654- then (valueOrElse(cj(w.originCaller), 0) != E)
704+ let dw = if (if ((du == nil))
705+ then (valueOrElse(ck(z.originCaller), 0) != H)
655706 else false)
656- then [IntegerEntry(G(am, w.originCaller), dg._1)]
707+ then [IntegerEntry(J(ap, z.originCaller), dq._1)]
657708 else nil
658- ((([aK(A, al, cN, E, aM, aJ), ak(E, al, A), cT, IntegerEntry(O(w.originCaller), E), IntegerEntry(G(E, w.originCaller), al)] ++ dk) ++ cw(E, w.originCaller)) ++ dm)
709+ ((([aN(D, ao, cY, H, aP, aM), an(H, ao, D), de, IntegerEntry(R(z.originCaller), H), IntegerEntry(J(H, z.originCaller), ao)] ++ du) ++ cx(H, z.originCaller)) ++ dw)
659710 }
660711 else throw("Strict value is not equal to itself.")
661712 }
662713 else throw("Strict value is not equal to itself.")
663714 }
664715 else throw("Strict value is not equal to itself.")
665716 }
666717 else throw("Strict value is not equal to itself.")
667718 }
668719 else throw("Strict value is not equal to itself.")
669720 }
670721 else throw("Strict value is not equal to itself.")
671722 }
672723 else throw("Strict value is not equal to itself.")
673724 }
674725
675726
676727
677-@Callable(w)
678-func appendBlock (A,cN,aM,aJ) = {
679- let dn = if ((au == w.originCaller))
728+@Callable(z)
729+func appendBlock (D,cY,aP,aM) = {
730+ let dx = if ((ax == z.originCaller))
680731 then true
681732 else {
682- let y = au
683- if ($isInstanceOf(y, "Address"))
733+ let B = ax
734+ if ($isInstanceOf(B, "Address"))
684735 then {
685- let do = y
686- throw(("not allowed to forge blocks in this epoch, expected from " + toString(do)))
736+ let dy = B
737+ throw(("not allowed to forge blocks in this epoch, expected from " + toString(dy)))
687738 }
688739 else throw("not allowed to forge blocks in this epoch, epoch miner is absent")
689740 }
690- if ((dn == dn))
741+ if ((dx == dx))
691742 then {
692- let E = valueOrElse(cj(w.originCaller), am)
693- let dp = ai(E)
694- let di = dp._1
695- let dq = dp._2
696- let cR = cd(cN, dq)
697- if ((cR == cR))
743+ let H = valueOrElse(ck(z.originCaller), ap)
744+ let dz = al(H)
745+ let ds = dz._1
746+ let dA = dz._2
747+ let dc = ce(cY, dA)
748+ if ((dc == dc))
698749 then {
699- let cS = V(az(cN)._6, aJ, false)
700- if ((cS == cS))
750+ let dd = Y(aC(cY)._6, aM, false)
751+ if ((dd == dd))
701752 then {
702- let al = (di + 1)
703- let cO = cF(A)
704- if ((cO == cO))
705- then [aK(A, al, dq, E, aM, aJ), IntegerEntry(G(E, w.originCaller), al), ak(E, al, A), StringEntry(B(height), ((((toString(value(au)) + d) + toString(av)) + d) + A))]
753+ let ao = (ds + 1)
754+ let cZ = cG(D)
755+ if ((cZ == cZ))
756+ then [aN(D, ao, dA, H, aP, aM), IntegerEntry(J(H, z.originCaller), ao), an(H, ao, D), StringEntry(E(height), ((((toString(value(ax)) + d) + toString(ay)) + d) + D))]
706757 else throw("Strict value is not equal to itself.")
707758 }
708759 else throw("Strict value is not equal to itself.")
709760 }
710761 else throw("Strict value is not equal to itself.")
711762 }
712763 else throw("Strict value is not equal to itself.")
713764 }
714765
715766
716767
717-@Callable(w)
718-func join (dr) = {
719- func ds (dt) = {
720- let y = getBinary(M(dt))
721- if ($isInstanceOf(y, "ByteVector"))
768+@Callable(z)
769+func join (dB) = {
770+ func dC (dD) = {
771+ let B = getBinary(P(dD))
772+ if ($isInstanceOf(B, "ByteVector"))
722773 then {
723- let du = y
724- if ((du == w.originCallerPublicKey))
774+ let dE = B
775+ if ((dE == z.originCallerPublicKey))
725776 then unit
726- else throw(((("EL miner address " + dt) + " is already linked with ") + toBase58String(du)))
777+ else throw(((("EL miner address " + dD) + " is already linked with ") + toBase58String(dE)))
727778 }
728779 else unit
729780 }
730781
731- let dv = split(dr, "0x")
732- let N = fromBase16String(dv[(size(dv) - 1)])
733- if (!(cb()))
782+ let dF = split(dB, "0x")
783+ let Q = fromBase16String(dF[(size(dF) - 1)])
784+ if (!(cc()))
734785 then throw("The contract has not yet set up")
735- else if ((c > wavesBalance(w.originCaller).generating))
736- then throw(((("Insufficient generating balance: " + toString(wavesBalance(w.originCaller).generating)) + ". Required: ") + toString(c)))
737- else if ((size(N) != 20))
786+ else if ((c > wavesBalance(z.originCaller).generating))
787+ then throw(((("Insufficient generating balance: " + toString(wavesBalance(z.originCaller).generating)) + ". Required: ") + toString(c)))
788+ else if ((size(Q) != 20))
738789 then throw("rewardAddress should be an L2 address")
739- else if ((size(ax) >= 50))
790+ else if ((size(aA) >= 50))
740791 then throw("too many miners")
741792 else {
742- func dw (dx,H) = if (dx)
793+ func dG (dH,K) = if (dH)
743794 then true
744- else (H == toString(w.originCaller))
795+ else (K == toString(z.originCaller))
745796
746- let dy = {
747- let bi = ax
748- let bj = size(bi)
749- let bk = false
750- func bl (bm,bn) = if ((bn >= bj))
751- then bm
752- else dw(bm, bi[bn])
797+ let dI = {
798+ let bl = aA
799+ let bm = size(bl)
800+ let bn = false
801+ func bo (bp,bq) = if ((bq >= bm))
802+ then bp
803+ else dG(bp, bl[bq])
753804
754- func bo (bm,bn) = if ((bn >= bj))
755- then bm
805+ func br (bp,bq) = if ((bq >= bm))
806+ then bp
756807 else throw("List size exceeds 50")
757808
758- bo(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bk, 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)
809+ 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)
759810 }
760- if (dy)
811+ if (dI)
761812 then nil
762813 else {
763- let dz = toString(w.originCaller)
764- let dA = toBase16String(N)
765- let dB = ds(dA)
766- if ((dB == dB))
814+ let dJ = toString(z.originCaller)
815+ let dK = toBase16String(Q)
816+ let dL = dC(dK)
817+ if ((dL == dL))
767818 then {
768- let bL = if ((size(ax) == 0))
769- then dz
770- else ((aw + d) + dz)
771- let dC = {
772- let y = getString(K(dz))
773- if ($isInstanceOf(y, "String"))
819+ let bN = if ((size(aA) == 0))
820+ then dJ
821+ else ((az + d) + dJ)
822+ let dM = {
823+ let B = getString(N(dJ))
824+ if ($isInstanceOf(B, "String"))
774825 then {
775- let dD = y
776- if ((dD == toBase16String(N)))
826+ let dN = B
827+ if ((dN == toBase16String(Q)))
777828 then nil
778- else [DeleteEntry(M(dD))]
829+ else [DeleteEntry(P(dN))]
779830 }
780831 else nil
781832 }
782- ([StringEntry(l, bL), StringEntry(K(dz), ("0x" + dA)), BinaryEntry(M(dA), w.originCallerPublicKey)] ++ dC)
833+ ([StringEntry(m, bN), StringEntry(N(dJ), ("0x" + dK)), BinaryEntry(P(dK), z.originCallerPublicKey)] ++ dM)
783834 }
784835 else throw("Strict value is not equal to itself.")
785836 }
786837 }
787838 }
788839
789840
790841
791-@Callable(w)
842+@Callable(z)
792843 func leave () = {
793- let dE = toString(w.originCaller)
794- func dF (bS,H) = if ((H == dE))
795- then bS
796- else (bS :+ H)
844+ let dO = toString(z.originCaller)
845+ func dP (bU,K) = if ((K == dO))
846+ then bU
847+ else (bU :+ K)
797848
798- let dG = {
799- let bi = ax
800- let bj = size(bi)
801- let bk = nil
802- func bl (bm,bn) = if ((bn >= bj))
803- then bm
804- else dF(bm, bi[bn])
849+ let dQ = {
850+ let bl = aA
851+ let bm = size(bl)
852+ let bn = nil
853+ func bo (bp,bq) = if ((bq >= bm))
854+ then bp
855+ else dP(bp, bl[bq])
805856
806- func bo (bm,bn) = if ((bn >= bj))
807- then bm
857+ func br (bp,bq) = if ((bq >= bm))
858+ then bp
808859 else throw("List size exceeds 50")
809860
810- bo(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bl(bk, 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)
861+ 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)
811862 }
812- let dH = K(dE)
813- let dI = valueOrErrorMessage(getString(this, dH), "miner has never joined")
814- if ((dI == dI))
815- then if ((au == w.originCaller))
863+ let dR = N(dO)
864+ let dS = valueOrErrorMessage(getString(this, dR), "miner has never joined")
865+ if ((dS == dS))
866+ then if ((ax == z.originCaller))
816867 then throw("designated miner can't leave")
817- else [StringEntry(l, makeString_2C(dG, d))]
868+ else [StringEntry(m, makeString_2C(dQ, d))]
818869 else throw("Strict value is not equal to itself.")
819870 }
820871
821872
822873
823-@Callable(w)
824-func transfer (T) = {
825- let dJ = if ((size(T) == i))
826- then fromBase16String(T)
827- else throw(((("Address should have " + toString(i)) + " characters, got ") + toString(size(T))))
828- if ((dJ == dJ))
874+@Callable(z)
875+func transfer (W) = {
876+ let dT = if ((size(W) == i))
877+ then fromBase16String(W)
878+ else throw(((("Address should have " + toString(i)) + " characters, got ") + toString(size(W))))
879+ if ((dT == dT))
829880 then {
830- let dK = if ((size(w.payments) == 1))
881+ let dU = if ((size(z.payments) == 1))
831882 then true
832- else throw(("Expected one payment as a transfer amount, got " + toString(size(w.payments))))
833- if ((dK == dK))
883+ else throw(("Expected one payment as a transfer amount, got " + toString(size(z.payments))))
884+ if ((dU == dU))
834885 then {
835- let dL = getStringValue(s)
836- let dM = fromBase58String(dL)
837- let ad = w.payments[0]
838- let dN = {
839- let y = ad.assetId
840- if ($isInstanceOf(y, "ByteVector"))
886+ let dV = getStringValue(t)
887+ let cX = fromBase58String(dV)
888+ let ag = z.payments[0]
889+ let dW = {
890+ let B = ag.assetId
891+ if ($isInstanceOf(B, "ByteVector"))
841892 then {
842- let dO = y
843- if ((dO == dM))
893+ let dX = B
894+ if ((dX == cX))
844895 then true
845- else throw(((("Expected " + dL) + " in the payment, got ") + toBase58String(dO)))
896+ else throw(((("Expected " + dV) + " in the payment, got ") + toBase58String(dX)))
846897 }
847- else throw((("Expected " + dL) + " in the payment, got Waves"))
898+ else throw((("Expected " + dV) + " in the payment, got Waves"))
848899 }
849- if ((dN == dN))
900+ if ((dW == dW))
850901 then {
851- let dP = az(ap)._6
852- let af = (P - dP)
853- let dQ = if ((160 > af))
854- then ac(ad, 1000000, af)
855- else if ((1600 > af))
856- then ac(ad, 10000000, af)
857- else if ((3200 > af))
858- then ac(ad, 100000000, af)
859- else if ((6400 > af))
860- then ac(ad, 1000000000, af)
861- else throw((("Transfers denied for queue size of " + toString(af)) + ". Wait until current transfers processed"))
862- if ((dQ == dQ))
863- then [IntegerEntry(u, (P + 1)), S(P, T, ad.amount), Burn(dM, ad.amount)]
902+ let dY = aC(as)._6
903+ let ai = (S - dY)
904+ let dZ = if ((160 > ai))
905+ then af(ag, 1000000, ai)
906+ else if ((1600 > ai))
907+ then af(ag, 10000000, ai)
908+ else if ((3200 > ai))
909+ then af(ag, 100000000, ai)
910+ else if ((6400 > ai))
911+ then af(ag, 1000000000, ai)
912+ else throw((("Transfers denied for queue size of " + toString(ai)) + ". Wait until current transfers processed"))
913+ if ((dZ == dZ))
914+ then [IntegerEntry(v, (S + 1)), V(S, W, ag.amount), Burn(cX, ag.amount)]
864915 else throw("Strict value is not equal to itself.")
865916 }
866917 else throw("Strict value is not equal to itself.")
867918 }
868919 else throw("Strict value is not equal to itself.")
869920 }
870921 else throw("Strict value is not equal to itself.")
871922 }
872923
873924
874925
875-@Callable(w)
876-func withdraw (A,dR,dS,U) = {
877- let dT = az(A)
878- let dU = dT._1
879- let dV = az(getStringValue(r))._1
880- let dW = az(ap)._1
881- if ((dU > dV))
882- then throw(((("EL block #" + toString(dU)) + " is not finalized. The current finalized is #") + toString(dV)))
883- else if ((size(dR) != h))
884- then throw(((("Expected " + toString(h)) + " proofs, got ") + toString(size(dR))))
885- else if ((0 > dS))
886- then throw(("Transfer index in block should be nonnegative, got " + toString(dS)))
887- else if ((0 >= U))
888- then throw(("Amount should be positive, got " + toString(U)))
926+@Callable(z)
927+func withdraw (D,ea,eb,X) = {
928+ let ec = aC(D)
929+ let ed = ec._1
930+ let ee = aC(getStringValue(s))._1
931+ let ef = aC(as)._1
932+ if ((ed > ee))
933+ then throw(((("EL block #" + toString(ed)) + " is not finalized. The current finalized is #") + toString(ee)))
934+ else if ((size(ea) != h))
935+ then throw(((("Expected " + toString(h)) + " proofs, got ") + toString(size(ea))))
936+ else if ((0 > eb))
937+ then throw(("Transfer index in block should be nonnegative, got " + toString(eb)))
938+ else if ((0 >= X))
939+ then throw(("Amount should be positive, got " + toString(X)))
889940 else {
890- let dX = dT._4
891- let dY = (dX == am)
892- let dZ = {
893- let y = getInteger(I(dX))
894- if ($isInstanceOf(y, "Int"))
941+ let eg = ec._4
942+ let eh = (eg == ap)
943+ let ei = {
944+ let B = getInteger(L(eg))
945+ if ($isInstanceOf(B, "Int"))
895946 then {
896- let ea = y
897- (ea > dU)
947+ let ej = B
948+ (ej > ed)
898949 }
899- else throw((((A + " is on an alternative chain #") + toString(dX)) + " that was not approved by majority. Wait for some blocks"))
950+ else throw((((D + " is on an alternative chain #") + toString(eg)) + " that was not approved by majority. Wait for some blocks"))
900951 }
901- if (if (dY)
952+ if (if (eh)
902953 then true
903- else dZ)
954+ else ei)
904955 then {
905- let eb = w.originCaller
906- let ec = take(drop(eb.bytes, 2), f)
907- let ed = base58'11111111111111111111111111111111111111111111'
908- let ee = toBytes(U)
909- let ef = ((ec + take(ed, (size(ed) - size(ee)))) + ee)
910- let eg = blake2b256_16Kb(ef)
911- let eh = createMerkleRoot(dR, eg, dS)
912- let ei = dT._5
913- if ((eh == ei))
956+ let ek = z.originCaller
957+ let el = take(drop(ek.bytes, 2), f)
958+ let em = base58'11111111111111111111111111111111111111111111'
959+ let en = toBytes(X)
960+ let eo = ((el + take(em, (size(em) - size(en)))) + en)
961+ let ep = blake2b256_16Kb(eo)
962+ let eq = createMerkleRoot(ea, ep, eb)
963+ let er = ec._5
964+ if ((eq == er))
914965 then {
915- let dM = fromBase58String(getStringValue(s))
916- let ej = z(A)
917-[Reissue(dM, U, true), ScriptTransfer(eb, U, dM), StringEntry(ej, cz(valueOrElse(getString(ej), ""), dS))]
966+ let cX = fromBase58String(getStringValue(t))
967+ let es = C(D)
968+[Reissue(cX, X, true), ScriptTransfer(ek, X, cX), StringEntry(es, cA(valueOrElse(getString(es), ""), eb))]
918969 }
919- else throw((((((("Expected root hash: " + toBase16String(ei)) + ", got: ") + toBase16String(eh)) + ". Event data digest: ") + toBase64String(eg)) + ". Check your withdraw arguments"))
970+ else throw((((((("Expected root hash: " + toBase16String(er)) + ", got: ") + toBase16String(eq)) + ". Event data digest: ") + toBase64String(ep)) + ". Check your withdraw arguments"))
920971 }
921- else throw((("Expected " + A) + " to be either on the main chain or relate to it"))
972+ else throw((("Expected " + D) + " to be either on the main chain or relate to it"))
922973 }
923974 }
924975
925976
926977
927-@Callable(w)
928-func setup (ek,el) = if (cb())
978+@Callable(z)
979+func setup (et,eu,ev,ew) = if (cc())
929980 then throw("The contract has been already set up")
930- else if ((0 > el))
981+ else if ((0 > eu))
931982 then throw("The miner reward must be nonnegative")
932983 else {
933- let em = fromBase16String(ek)
934- let en = if ((size(em) == e))
984+ let ex = fromBase16String(et)
985+ let ey = if ((size(ex) == e))
935986 then true
936987 else throw("Wrong genesis block hash")
937- if ((en == en))
988+ if ((ey == ey))
938989 then {
939- let eo = base58'11111111111111111111111111111111'
940- let ep = addressFromPublicKey(eo)
941- let eq = base58'11111111111111111111'
942- let er = "0000000000000000000000000000000000000000000000000000000000000000"
943- let es = Issue("UNIT0", "Native token", 0, 8, true)
944- let dM = calculateAssetId(es)
945- let et = aK(ek, 0, er, 0, toBase16String(base58''), -1)
946-[et, StringEntry(D(0), ek), ak(0, 0, ek), IntegerEntry(p, el), StringEntry(B(height), ((toString(ep) + ",0,") + ek)), StringEntry(r, ek), es, StringEntry(s, toBase58String(dM)), StringEntry(t, "0x0000000000000000000000000000000000006a7e")]
990+ let ez = base58'11111111111111111111111111111111'
991+ let eA = addressFromPublicKey(ez)
992+ let eB = base58'11111111111111111111'
993+ let eC = "0000000000000000000000000000000000000000000000000000000000000000"
994+ let eD = Issue("UNIT0", "Native token", 0, 8, true)
995+ let cX = calculateAssetId(eD)
996+ let eE = aN(et, 0, eC, 0, toBase16String(base58''), -1)
997+ let eF = if ((ev == ""))
998+ then nil
999+ else [StringEntry(w, toString(Address(fromBase58String(ev)))), IntegerEntry(x, if ((ew > 0))
1000+ then ew
1001+ else throw("invalid DAO reward amount"))]
1002+ ([eE, StringEntry(G(0), et), an(0, 0, et), IntegerEntry(q, eu), StringEntry(E(height), ((toString(eA) + ",0,") + et)), StringEntry(s, et), eD, StringEntry(t, toBase58String(cX)), StringEntry(u, "0x0000000000000000000000000000000000006a7e")] ++ eF)
9471003 }
9481004 else throw("Strict value is not equal to itself.")
9491005 }
9501006
9511007

github/deemru/w8io/169f3d6 
603.07 ms