From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: =?UTF-8?B?0JzQtdGA0LPQtdC9INCY0LzQtdC10LI=?= Subject: =?UTF-8?B?UmU6IFt0YXJhbnRvb2wtcGF0Y2hlc10gW1BBVENIIHY0IDIvNV0gaXByb3Rv?= =?UTF-8?B?OiByZXBsYWNlIG9idWYgYnkgbXBzdHJlYW0gaW4gZXhlY3V0ZS5j?= MIME-Version: 1.0 Date: Fri, 30 Nov 2018 22:25:30 +0300 Reply-To: =?UTF-8?B?0JzQtdGA0LPQtdC9INCY0LzQtdC10LI=?= Message-ID: <1543605930.497044149@f516.i.mail.ru> Content-Type: multipart/alternative; boundary="--ALT--zORfzoMn8suwKEQu4cb9P2AilUafS8dk1543605930" To: imeevma@tarantool.org Cc: v.shpilevoy@tarantool.org, tarantool-patches@freelists.org, kostja@tarantool.org, vdavydov.dev@gmail.com List-ID: ----ALT--zORfzoMn8suwKEQu4cb9P2AilUafS8dk1543605930 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 CkFkZGVkIFZvdmEgdG8gcmVjaXBpZW50cy4KLS0K0J7RgtC/0YDQsNCy0LvQtdC90L4g0LjQtyBN YWlsLlJ1INC00LvRjyBBbmRyb2lkCtC/0Y/RgtC90LjRhtCwLCAzMCDQvdC+0Y/QsdGA0Y8gMjAx ONCzLiwgMjI6MDEgKzAzOjAwINC+0YIgaW1lZXZtYUB0YXJhbnRvb2wub3JnOgo+VGhpcyBwYXRj aCBpcyB0aGUgbW9zdCBkdWJpb3VzIHBhdGNoIGR1ZSB0byB0aGUgaW1wbGljaXQgdXNlIG9mCj5t cHN0cmVhbSBhcyBhIHN0cmVhbSBmb3Igb2J1Zi4gVGhlcmUgaXMgY3VycmVudGx5IG5vIGFwcHJv dmVkCj5zb2x1dGlvbi4gRGlzY3Vzc2lvbiBhbmQgcGF0Y2ggYmVsb3cuCj5PbiAxMS8zMC8xOCAx OjU1IFBNLCBWbGFkaW1pciBEYXZ5ZG92IHdyb3RlOgo+PiBPbiBGcmksIE5vdiAzMCwgMjAxOCBh dCAwMTo0NTo0OFBNICswMzAwLCBWbGFkaXNsYXYgU2hwaWxldm95IHdyb3RlOgo+Pj4KPj4+Cj4+ PiBPbiAzMC8xMS8yMDE4IDEzOjE5LCBWbGFkaW1pciBEYXZ5ZG92IHdyb3RlOgo+Pj4+IE9uIFRo dSwgTm92IDI5LCAyMDE4IGF0IDA1OjA0OjA2UE0gKzAzMDAsIFZsYWRpc2xhdiBTaHBpbGV2b3kg d3JvdGU6Cj4+Pj4+IE9uIDI5LzExLzIwMTggMTM6NTMsIFZsYWRpbWlyIERhdnlkb3Ygd3JvdGU6 Cj4+Pj4+PiBPbiBUdWUsIE5vdiAyNywgMjAxOCBhdCAxMDoyNTo0M1BNICswMzAwLCBpbWVldm1h QHRhcmFudG9vbC5vcmcgd3JvdGU6Cj4+Pj4+Pj4gQEAgLTYyNyw4MSArNjEwLDUzIEBAIHNxbF9w cmVwYXJlX2FuZF9leGVjdXRlKGNvbnN0IHN0cnVjdCBzcWxfcmVxdWVzdCAqcmVxdWVzdCwKPj4+ Pj4+PsKgwqDCoCB9Cj4+Pj4+Pj7CoMKgwqAgaW50Cj4+Pj4+Pj4gLXNxbF9yZXNwb25zZV9kdW1w KHN0cnVjdCBzcWxfcmVzcG9uc2UgKnJlc3BvbnNlLCBpbnQgKmtleXMsIHN0cnVjdCBvYnVmICpv dXQpCj4+Pj4+Pj4gK3NxbF9yZXNwb25zZV9kdW1wKHN0cnVjdCBzcWxfcmVzcG9uc2UgKnJlc3Bv bnNlLCBpbnQgKmtleXMsCj4+Pj4+Pj4gK8KgwqDCoMKgwqAgc3RydWN0IG1wc3RyZWFtICpzdHJl YW0pCj4+Pj4+Pj7CoMKgwqAgewo+Pj4+Pj4+wqDCoMKgwqDCoCBzcWxpdGUzICpkYiA9IHNxbF9n ZXQoKTsKPj4+Pj4+PsKgwqDCoMKgwqAgc3RydWN0IHNxbGl0ZTNfc3RtdCAqc3RtdCA9IChzdHJ1 Y3Qgc3FsaXRlM19zdG10ICopIHJlc3BvbnNlLT5wcmVwX3N0bXQ7Cj4+Pj4+Pj4gLcKgIHN0cnVj dCBwb3J0X3R1cGxlICpwb3J0X3R1cGxlID0gKHN0cnVjdCBwb3J0X3R1cGxlICopICZyZXNwb25z ZS0+cG9ydDsKPj4+Pj4+PsKgwqDCoMKgwqAgaW50IHJjID0gMCwgY29sdW1uX2NvdW50ID0gc3Fs aXRlM19jb2x1bW5fY291bnQoc3RtdCk7Cj4+Pj4+Pj7CoMKgwqDCoMKgIGlmIChjb2x1bW5fY291 bnQgPiAwKSB7Cj4+Pj4+Pj4gLcKgwqDCoCBpZiAoc3FsX2dldF9kZXNjcmlwdGlvbihzdG10LCBv dXQsIGNvbHVtbl9jb3VudCkgIT0gMCkgewo+Pj4+Pj4+ICvCoMKgwqAgaWYgKHNxbF9nZXRfZGVz Y3JpcHRpb24oc3RtdCwgc3RyZWFtLCBjb2x1bW5fY291bnQpICE9IDApIHsKPj4+Pj4+PsKgwqDC oCBlcnI6Cj4+Pj4+Pj7CoMKgwqDCoMKgwqDCoMKgwqAgcmMgPSAtMTsKPj4+Pj4+PsKgwqDCoMKg wqDCoMKgwqDCoCBnb3RvIGZpbmlzaDsKPj4+Pj4+PsKgwqDCoMKgwqDCoMKgIH0KPj4+Pj4+PsKg wqDCoMKgwqDCoMKgICprZXlzID0gMjsKPj4+Pj4+PiAtwqDCoMKgIGludCBzaXplID0gbXBfc2l6 ZW9mX3VpbnQoSVBST1RPX0RBVEEpICsKPj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoCBtcF9zaXpl b2ZfYXJyYXkocG9ydF90dXBsZS0+c2l6ZSk7Cj4+Pj4+Pj4gLcKgwqDCoCBjaGFyICpwb3MgPSAo Y2hhciAqKSBvYnVmX2FsbG9jKG91dCwgc2l6ZSk7Cj4+Pj4+Pj4gLcKgwqDCoCBpZiAocG9zID09 IE5VTEwpIHsKPj4+Pj4+PiAtwqDCoMKgwqDCoCBkaWFnX3NldChPdXRPZk1lbW9yeSwgc2l6ZSwg Im9idWZfYWxsb2MiLCAicG9zIik7Cj4+Pj4+Pj4gLcKgwqDCoMKgwqAgZ290byBlcnI7Cj4+Pj4+ Pj4gLcKgwqDCoCB9Cj4+Pj4+Pj4gLcKgwqDCoCBwb3MgPSBtcF9lbmNvZGVfdWludChwb3MsIElQ Uk9UT19EQVRBKTsKPj4+Pj4+PiAtwqDCoMKgIHBvcyA9IG1wX2VuY29kZV9hcnJheShwb3MsIHBv cnRfdHVwbGUtPnNpemUpOwo+Pj4+Pj4+IC3CoMKgwqAgLyoKPj4+Pj4+PiAtwqDCoMKgwqAgKiBK dXN0IGxpa2UgU0VMRUNULCBTUUwgdXNlcyBvdXRwdXQgZm9ybWF0IGNvbXBhdGlibGUKPj4+Pj4+ PiAtwqDCoMKgwqAgKiB3aXRoIFRhcmFudG9vbCAxLjYKPj4+Pj4+PiAtwqDCoMKgwqAgKi8KPj4+ Pj4+PiAtwqDCoMKgIGlmIChwb3J0X2R1bXBfbXNncGFja18xNigmcmVzcG9uc2UtPnBvcnQsIG91 dCkgPCAwKSB7Cj4+Pj4+Pj4gK8KgwqDCoCBtcHN0cmVhbV9lbmNvZGVfdWludChzdHJlYW0sIElQ Uk9UT19EQVRBKTsKPj4+Pj4+PiArwqDCoMKgIG1wc3RyZWFtX2ZsdXNoKHN0cmVhbSk7Cj4+Pj4+ Pj4gK8KgwqDCoCBpZiAocG9ydF9kdW1wX21zZ3BhY2soJnJlc3BvbnNlLT5wb3J0LCBzdHJlYW0t PmN0eCkgPCAwKSB7Cj4+Pj4+Pgo+Pj4+Pj4gc3RyZWFtLT5jdHggaXNuJ3QgZ3VhcmFudGVlZCB0 byBiZSBhbiBvYnVmCj4+Pj4+Pgo+Pj4+Pj4gQW5kIHdoZW4geW91IGludHJvZHVjZSB2c3RyZWFt IGxhdGVyLCB5b3Ugc2ltcGx5IG1vdmUgdGhpcyBjb2RlIHRvCj4+Pj4+PiBhbm90aGVyIGZpbGUu IFRoaXMgaXMgY29uZnVzaW5nLiBNYXkgYmUgd2Ugc2hvdWxkIHBhc3MgYWxsb2MvcmVzZXJ2ZQo+ Pj4+Pj4gdXNlZCBpbiBtcHN0cmVhbSB0byBwb3J0X2R1bXAgaW5zdGVhZCBvZiBvYnVmPwo+Pj4+ Pgo+Pj4+PiBHb29kIGlkZWEsIHRob3VnaCBub3Qgc3VyZSwgaWYgaXQgaXMgd29ydGggc2xvd2lu ZyBkb3duIHBvcnRfZHVtcF9tc2dwYWNrCj4+Pj4+IGFkZGluZyBhIG5ldyBsZXZlbCBvZiBpbmRp cmVjdGlvbi4gU2luY2UgcG9ydF9kdW1wX21zZ3BhY2sgaXMgYSBob3QgcGF0aAo+Pj4+PiBhbmQg aXMgdXNlZCBmb3IgYm94LnNlbGVjdC4KPj4+Pj4KPj4+Pj4gTWF5YmUgaXQgaXMgYmV0dGVyIHRv IGp1c3QgcmVuYW1lIHBvcnRfZHVtcF9tc2dwYWNrIHRvIHBvcnRfZHVtcF9vYnVmCj4+Pj4+IGFu ZCByZW5hbWUgdnN0cmVhbV9wb3J0X2R1bXAgdG8gdnN0cmVhbV9wb3J0X2R1bXBfb2J1Zj8gSWYg d2UgZXZlciB3aWxsCj4+Pj4+IGR1bXAgcG9ydCB0byBub3Qgb2J1ZiwgdGhlbiB3ZSB3aWxsIGp1 c3QgYWRkIGEgbmV3IG1ldGhvZCB0byBwb3J0X3Z0YWIuCj4+Pj4+Cj4+Pj4+IEFsc28sIGl0IHdv dWxkIG1ha2UgcG9ydF9kdW1wX29idWYgbmFtZSBjb25zaXN0ZW50IHdpdGggcG9ydF9kdW1wX2x1 YSAtCj4+Pj4+IGluIGJvdGggY2FzZXMgd2Ugbm90IGp1c3QgZHVtcCBpbiBhIHNwZWNpZmljIGZv cm1hdCwgYnV0IHRvIGEgY29uY3JldGUKPj4+Pj4gZGVzdGluYXRpb246IG9idWYgYW5kIGx1YSBz dGFjay4gTm93IHBvcnRfZHVtcF9tc2dwYWNrIGFueXdheSBpcyByZXN0cmljdGVkCj4+Pj4+IGJ5 IG9idWYgZGVzdGluYXRpb24uCj4+Pj4KPj4+PiBUaGVyZSdzIHBvcnRfZHVtcF9wbGFpbiwgd2hp Y2ggZHVtcHMgcG9ydCBjb250ZW50cyBpbiBhIHNwZWNpZmljIGZvcm1hdC4KPj4+PiBTbyBwb3J0 X2R1bXBfb2J1ZiB3b3VsZCBsb29rIGFtYmlndW91cy4KPj4+Pgo+Pj4+Pgo+Pj4+PiBJZiB5b3Ug d29ycnkgYWJvdXQgaG93IHRvIGNhbGwgc3FsX3Jlc3BvbnNlX2R1bXAoKSB0byBub3Qgb2J1Ziwg dGhlbiB0aGVyZQo+Pj4+PiBpcyBhbm90aGVyIG9wdGlvbi4gQW55d2F5IHJlbmFtZSBwb3J0X2R1 bXBfbXNncGFjayB0byBwb3J0X2R1bXBfb2J1ZiBhbmQKPj4+Pj4gaW50cm9kdWNlIGEgbmV3IG1l dGhvZDogcG9ydF9kdW1wX21wc3RyZWFtLiBJdCB3aWxsIHRha2UgbXBzdHJlYW0gYW5kIHVzZQo+ Pj4+PiBpdHMgcmVzZXJ2ZS9hbGxvYy9lcnJvciBmdW5jdGlvbnMuIEl0IGFsbG93cyB1cyB0byBk byBub3Qgc2xvdyBkb3duIGJveC5zZWxlY3QsCj4+Pj4+IGJ1dCB1c2UgdGhlIGZ1bGwgcG93ZXIg b2YgdmlydHVhbCBmdW5jdGlvbnMgaW4gZXhlY3V0ZS5jLCB3aGljaCBkZWZpbml0ZWx5IGlzCj4+ Pj4+IG5vdCBob3QuCj4+Pj4KPj4+PiBUaGF0IHdvdWxkIGludGVyY29ubmVjdCBwb3J0IGFuZCBt cHN0cmVhbSwgbWFrZSB0aGVtIGRlcGVuZGVudCBvbiBlYWNoCj4+Pj4gb3RoZXIuIEkgZG9uJ3Qg dGhpbmsgdGhhdCB3b3VsZCBiZSBnb29kLgo+Pj4+Cj4+Pj4+Cj4+Pj4+IG1wc3RyZWFtIGltcGxl bWVudGF0aW9uIG9mIHZzdHJlYW0gd2lsbCBjYWxsIHBvcnRfZHVtcF9tcHN0cmVhbSwgYW5kCj4+ Pj4+IGx1YXN0cmVhbSBpbXBsZW1lbnRhdGlvbiBvZiB2c3RyZWFtIHdpbGwgY2FsbCBwb3J0X2R1 bXBfbHVhIGFzIGl0IGRvZXMgbm93Lgo+Pj4+PiBib3guc2VsZWN0IGFuZCBpcHJvdG9fY2FsbCB3 aWxsIHVzZSBwb3J0X2R1bXBfb2J1Zi4KPj4+Pj4KPj4+Pj4gSSBwcmVmZXIgdGhlIHNlY29uZCBv cHRpb246IGludHJvZHVjZSBwb3J0X2R1bXBfbXBzdHJlYW0uIEl0IGlzIG9rIGZvciB5b3U/Cj4+ Pj4KPj4+PiBJIG1heSBiZSB3cm9uZywgYnV0IElNTyB0aGVyZSBpc24ndCBtdWNoIHBvaW50IGlu IG9wdGltaXppbmcgYm94LnNlbGVjdCwKPj4+PiBiZWNhdXNlIGl0J3MgdmVyeSBsaW1pdGVkIGlu IGl0cyBhcHBsaWNhYmlsaXR5LiBQZW9wbGUgYWxyZWFkeSBwcmVmZXIgdG8KPj4+PiB1c2UgYm94 LmNhbGwgb3ZlciBib3guaW5zZXJ0L3NlbGVjdC9ldGMgb3ZlciBpcHJvdG8sIGFuZCB3aXRoIHRo ZQo+Pj4+IGFwcGVhcmFuY2Ugb2YgYm94LmV4ZWN1dGUgdGhleSBhcmUgbGlrZWx5IHRvIHN0b3Ag dXNpbmcgcGxhaW4gYm94LnNlbGVjdAo+Pj4+IGF0IGFsbC4KPj4+Pgo+Pj4+IFRoYXQgc2FpZCwg cGVyc29uYWxseSBJIHdvdWxkIHRyeSB0byBwYXNzIHJlc2VydmUvYWxsb2MgbWV0aG9kcyB0byBw b3J0LAo+Pj4+IHNlZSBob3cgaXQgZ29lcy4KPj4+Pgo+Pj4KPj4+IEkgZG8gbm90IHNlZSBhIHJl YXNvbiB0byBzbG93IGRvd24gYm94LnNlbGVjdCBpZiB3ZSBjYW4gZG9uJ3QgZG8gaXQuCj4+PiBZ ZWFzLCBwZW9wbGUgdXNlIElQUk9UT19DQUxMLCBidXQgaW4gc3RvcmVkIGZ1bmN0aW9ucyB0aGV5 IHVzZSBib3gKPj4+IGZ1bmN0aW9ucyBpbmNsdWRpbmcgc2VsZWN0Lgo+Pgo+PiBib3guc2VsZWN0 IGNhbGxlZCBmcm9tIEx1YSBjb2RlIGRvZXNuJ3QgdXNlIHBvcnRfZHVtcF9tc2dwYWNrLgo+Pgo+ Pj4KPj4+IE9rLCBpbnN0ZWFkIG9mIHBvcnRfZHVtcF9tcHN0cmVhbSB3ZSBjYW4gcmVuYW1lIHBv cnRfZHVtcF9tc2dwYWNrIHRvCj4+PiBwb3J0X2R1bXBfb2J1ZiBhbmQgYWRkIHBvcnRfZHVtcF9t c2dwYWNrIHdoaWNoIGRvZXMgbm90IGRlcGVuZCBvbgo+Pj4gbXBzdHJlYW0gYW5kIHRha2VzIGFs bG9jL3Jlc2VydmUvY3R4IGRpcmVjdGx5Lgo+Pgo+PiBCZXR0ZXIgY2FsbCB0aGUgb3B0aW1pemVk IHZlcnNpb24gKHRoZSBvbmUgd2l0aG91dCBjYWxsYmFja3MpCj4+IHBvcnRfZHVtcF9tc2dwYWNr X29idWYgdG8gYXZvaWQgY29uZnVzaW9uIElNTy4KPj4KPj4gQW55d2F5LCBJJ2QgdHJ5IHRvIHJ1 biBjYmVuY2ggdG8gc2VlIGlmIGl0IHJlYWxseSBwZXJmb21ycyBiZXR0ZXIKPj4gdGhhbiB0aGUg b25lIHVzaW5nIGNhbGxiYWNrcy4KPmNvbW1pdCBhODU3ZTExMjlmOWUzOGJkZThjNWM2MDM3MTQ5 ODg3ZjY5NWVjNmRjCj5BdXRob3I6IE1lcmdlbiBJbWVldiA8aW1lZXZtYUBnbWFpbC5jb20+Cj5E YXRlOsKgwqAgRnJpIE5vdiA5IDIyOjMxOjA3IDIwMTggKzAzMDAKPsKgwqDCoMKgaXByb3RvOiBy ZXBsYWNlIG9idWYgYnkgbXBzdHJlYW0gaW4gZXhlY3V0ZS5jCj7CoMKgwqDCoEl0IGlzIHVzZWZ1 bCB0byByZXBsYWNlIG9idWYgYnkgbXBzdHJlYW0uIEl0IGFsbG93cyB1cyB0byBkZXNpZ24KPsKg wqDCoMKgdnN0cmVhbS4gSW50ZXJmYWNlIHZzdHJlYW0gd2lsbCBiZSB1c2VkIGFzIHVuaXZlcnNh bCBpbnRlcmZhY2UgdG8KPsKgwqDCoMKgZHVtcCByZXN1bHQgb2YgU1FMIHF1ZXJpZXMuCj7CoMKg wqDCoE5lZWRlZCBmb3IgIzM1MDUKPmRpZmYgLS1naXQgYS9zcmMvYm94L2V4ZWN1dGUuYyBiL3Ny Yy9ib3gvZXhlY3V0ZS5jCj5pbmRleCAzYTZjYWRmLi4wZDI2NmRkIDEwMDY0NAo+LS0tIGEvc3Jj L2JveC9leGVjdXRlLmMKPisrKyBiL3NyYy9ib3gvZXhlY3V0ZS5jCj5AQCAtMzUsNyArMzUsNiBA QAo+wqAjaW5jbHVkZSAic3FsL3NxbGl0ZUxpbWl0LmgiCj7CoCNpbmNsdWRlICJlcnJjb2RlLmgi Cj7CoCNpbmNsdWRlICJzbWFsbC9yZWdpb24uaCIKPi0jaW5jbHVkZSAic21hbGwvb2J1Zi5oIgo+ wqAjaW5jbHVkZSAiZGlhZy5oIgo+wqAjaW5jbHVkZSAic3FsLmgiCj7CoCNpbmNsdWRlICJ4cm93 LmgiCj5AQCAtNDMsNiArNDIsNyBAQAo+wqAjaW5jbHVkZSAicG9ydC5oIgo+wqAjaW5jbHVkZSAi dHVwbGUuaCIKPsKgI2luY2x1ZGUgInNxbC92ZGJlLmgiCj4rI2luY2x1ZGUgIm1wc3RyZWFtLmgi Cj7CoGNvbnN0IGNoYXIgKnNxbF90eXBlX3N0cnNbXSA9IHsKPsKgwqBOVUxMLAo+QEAgLTUzMCwy MyArNTMwLDEzIEBAIHNxbF9iaW5kKGNvbnN0IHN0cnVjdCBzcWxfcmVxdWVzdCAqcmVxdWVzdCwg c3RydWN0IHNxbGl0ZTNfc3RtdCAqc3RtdCkKPsKgwqAqIEByZXR2YWwgLTEgQ2xpZW50IG9yIG1l bW9yeSBlcnJvci4KPsKgwqAqLwo+wqBzdGF0aWMgaW5saW5lIGludAo+LXNxbF9nZXRfZGVzY3Jp cHRpb24oc3RydWN0IHNxbGl0ZTNfc3RtdCAqc3RtdCwgc3RydWN0IG9idWYgKm91dCwKPitzcWxf Z2V0X2Rlc2NyaXB0aW9uKHN0cnVjdCBzcWxpdGUzX3N0bXQgKnN0bXQsIHN0cnVjdCBtcHN0cmVh bSAqc3RyZWFtLAo+wqDCoMKgwqDCoMKgwqDCoGludCBjb2x1bW5fY291bnQpCj7CoHsKPsKgwqBh c3NlcnQoY29sdW1uX2NvdW50ID4gMCk7Cj4tIGludCBzaXplID0gbXBfc2l6ZW9mX3VpbnQoSVBS T1RPX01FVEFEQVRBKSArCj4twqDCoMKgwqDCoCBtcF9zaXplb2ZfYXJyYXkoY29sdW1uX2NvdW50 KTsKPi0gY2hhciAqcG9zID0gKGNoYXIgKikgb2J1Zl9hbGxvYyhvdXQsIHNpemUpOwo+LSBpZiAo cG9zID09IE5VTEwpIHsKPi3CoMKgIGRpYWdfc2V0KE91dE9mTWVtb3J5LCBzaXplLCAib2J1Zl9h bGxvYyIsICJwb3MiKTsKPi3CoMKgIHJldHVybiAtMTsKPi0gfQo+LSBwb3MgPSBtcF9lbmNvZGVf dWludChwb3MsIElQUk9UT19NRVRBREFUQSk7Cj4tIHBvcyA9IG1wX2VuY29kZV9hcnJheShwb3Ms IGNvbHVtbl9jb3VudCk7Cj4rIG1wc3RyZWFtX2VuY29kZV91aW50KHN0cmVhbSwgSVBST1RPX01F VEFEQVRBKTsKPisgbXBzdHJlYW1fZW5jb2RlX2FycmF5KHN0cmVhbSwgY29sdW1uX2NvdW50KTsK PsKgwqBmb3IgKGludCBpID0gMDsgaSA8IGNvbHVtbl9jb3VudDsgKytpKSB7Cj4twqDCoCBzaXpl X3Qgc2l6ZSA9IG1wX3NpemVvZl9tYXAoMikgKwo+LcKgwqDCoMKgwqDCoMKgwqDCoMKgIG1wX3Np emVvZl91aW50KElQUk9UT19GSUVMRF9OQU1FKSArCj4twqDCoMKgwqDCoMKgwqDCoMKgwqAgbXBf c2l6ZW9mX3VpbnQoSVBST1RPX0ZJRUxEX1RZUEUpOwo+wqDCoMKgwqBjb25zdCBjaGFyICpuYW1l ID0gc3FsaXRlM19jb2x1bW5fbmFtZShzdG10LCBpKTsKPsKgwqDCoMKgY29uc3QgY2hhciAqdHlw ZSA9IHNxbGl0ZTNfY29sdW1uX2RhdGF0eXBlKHN0bXQsIGkpOwo+wqDCoMKgwqAvKgo+QEAgLTU1 NSwxOCArNTQ1LDExIEBAIHNxbF9nZXRfZGVzY3JpcHRpb24oc3RydWN0IHNxbGl0ZTNfc3RtdCAq c3RtdCwgc3RydWN0IG9idWYgKm91dCwKPsKgwqDCoMKgwqAqIGNvbHVtbl9uYW1lIHNpbXBseSBy ZXR1cm5zIHRoZW0uCj7CoMKgwqDCoMKgKi8KPsKgwqDCoMKgYXNzZXJ0KG5hbWUgIT0gTlVMTCk7 Cj4twqDCoCBzaXplICs9IG1wX3NpemVvZl9zdHIoc3RybGVuKG5hbWUpKTsKPi3CoMKgIHNpemUg Kz0gbXBfc2l6ZW9mX3N0cihzdHJsZW4odHlwZSkpOwo+LcKgwqAgY2hhciAqcG9zID0gKGNoYXIg Kikgb2J1Zl9hbGxvYyhvdXQsIHNpemUpOwo+LcKgwqAgaWYgKHBvcyA9PSBOVUxMKSB7Cj4twqDC oMKgwqAgZGlhZ19zZXQoT3V0T2ZNZW1vcnksIHNpemUsICJvYnVmX2FsbG9jIiwgInBvcyIpOwo+ LcKgwqDCoMKgIHJldHVybiAtMTsKPi3CoMKgIH0KPi3CoMKgIHBvcyA9IG1wX2VuY29kZV9tYXAo cG9zLCAyKTsKPi3CoMKgIHBvcyA9IG1wX2VuY29kZV91aW50KHBvcywgSVBST1RPX0ZJRUxEX05B TUUpOwo+LcKgwqAgcG9zID0gbXBfZW5jb2RlX3N0cihwb3MsIG5hbWUsIHN0cmxlbihuYW1lKSk7 Cj4twqDCoCBwb3MgPSBtcF9lbmNvZGVfdWludChwb3MsIElQUk9UT19GSUVMRF9UWVBFKTsKPi3C oMKgIHBvcyA9IG1wX2VuY29kZV9zdHIocG9zLCB0eXBlLCBzdHJsZW4odHlwZSkpOwo+K8KgwqAg bXBzdHJlYW1fZW5jb2RlX21hcChzdHJlYW0sIDIpOwo+K8KgwqAgbXBzdHJlYW1fZW5jb2RlX3Vp bnQoc3RyZWFtLCBJUFJPVE9fRklFTERfTkFNRSk7Cj4rwqDCoCBtcHN0cmVhbV9lbmNvZGVfc3Ry KHN0cmVhbSwgbmFtZSk7Cj4rwqDCoCBtcHN0cmVhbV9lbmNvZGVfdWludChzdHJlYW0sIElQUk9U T19GSUVMRF9UWVBFKTsKPivCoMKgIG1wc3RyZWFtX2VuY29kZV9zdHIoc3RyZWFtLCB0eXBlKTsK PsKgwqB9Cj7CoMKgcmV0dXJuIDA7Cj7CoH0KPkBAIC02MjUsODEgKzYwOCw1MyBAQCBzcWxfcHJl cGFyZV9hbmRfZXhlY3V0ZShjb25zdCBzdHJ1Y3Qgc3FsX3JlcXVlc3QgKnJlcXVlc3QsCj7CoH0K PsKgaW50Cj4tc3FsX3Jlc3BvbnNlX2R1bXAoc3RydWN0IHNxbF9yZXNwb25zZSAqcmVzcG9uc2Us IGludCAqa2V5cywgc3RydWN0IG9idWYgKm91dCkKPitzcWxfcmVzcG9uc2VfZHVtcChzdHJ1Y3Qg c3FsX3Jlc3BvbnNlICpyZXNwb25zZSwgaW50ICprZXlzLAo+K8KgwqDCoMKgIHN0cnVjdCBtcHN0 cmVhbSAqc3RyZWFtKQo+wqB7Cj7CoMKgc3FsaXRlMyAqZGIgPSBzcWxfZ2V0KCk7Cj7CoMKgc3Ry dWN0IHNxbGl0ZTNfc3RtdCAqc3RtdCA9IChzdHJ1Y3Qgc3FsaXRlM19zdG10ICopIHJlc3BvbnNl LT5wcmVwX3N0bXQ7Cj4tIHN0cnVjdCBwb3J0X3R1cGxlICpwb3J0X3R1cGxlID0gKHN0cnVjdCBw b3J0X3R1cGxlICopICZyZXNwb25zZS0+cG9ydDsKPsKgwqBpbnQgcmMgPSAwLCBjb2x1bW5fY291 bnQgPSBzcWxpdGUzX2NvbHVtbl9jb3VudChzdG10KTsKPsKgwqBpZiAoY29sdW1uX2NvdW50ID4g MCkgewo+LcKgwqAgaWYgKHNxbF9nZXRfZGVzY3JpcHRpb24oc3RtdCwgb3V0LCBjb2x1bW5fY291 bnQpICE9IDApIHsKPivCoMKgIGlmIChzcWxfZ2V0X2Rlc2NyaXB0aW9uKHN0bXQsIHN0cmVhbSwg Y29sdW1uX2NvdW50KSAhPSAwKSB7Cj7CoGVycjoKPsKgwqDCoMKgwqDCoHJjID0gLTE7Cj7CoMKg wqDCoMKgwqBnb3RvIGZpbmlzaDsKPsKgwqDCoMKgfQo+wqDCoMKgwqAqa2V5cyA9IDI7Cj4twqDC oCBpbnQgc2l6ZSA9IG1wX3NpemVvZl91aW50KElQUk9UT19EQVRBKSArCj4twqDCoMKgwqDCoMKg wqAgbXBfc2l6ZW9mX2FycmF5KHBvcnRfdHVwbGUtPnNpemUpOwo+LcKgwqAgY2hhciAqcG9zID0g KGNoYXIgKikgb2J1Zl9hbGxvYyhvdXQsIHNpemUpOwo+LcKgwqAgaWYgKHBvcyA9PSBOVUxMKSB7 Cj4twqDCoMKgwqAgZGlhZ19zZXQoT3V0T2ZNZW1vcnksIHNpemUsICJvYnVmX2FsbG9jIiwgInBv cyIpOwo+LcKgwqDCoMKgIGdvdG8gZXJyOwo+LcKgwqAgfQo+LcKgwqAgcG9zID0gbXBfZW5jb2Rl X3VpbnQocG9zLCBJUFJPVE9fREFUQSk7Cj4twqDCoCBwb3MgPSBtcF9lbmNvZGVfYXJyYXkocG9z LCBwb3J0X3R1cGxlLT5zaXplKTsKPi3CoMKgIC8qCj4twqDCoMKgICogSnVzdCBsaWtlIFNFTEVD VCwgU1FMIHVzZXMgb3V0cHV0IGZvcm1hdCBjb21wYXRpYmxlCj4twqDCoMKgICogd2l0aCBUYXJh bnRvb2wgMS42Cj4twqDCoMKgICovCj4twqDCoCBpZiAocG9ydF9kdW1wX21zZ3BhY2tfMTYoJnJl c3BvbnNlLT5wb3J0LCBvdXQpIDwgMCkgewo+K8KgwqAgbXBzdHJlYW1fZW5jb2RlX3VpbnQoc3Ry ZWFtLCBJUFJPVE9fREFUQSk7Cj4rwqDCoCBtcHN0cmVhbV9mbHVzaChzdHJlYW0pOwo+K8KgwqAg aWYgKHBvcnRfZHVtcF9tc2dwYWNrKCZyZXNwb25zZS0+cG9ydCwgc3RyZWFtLT5jdHgpIDwgMCkg ewo+wqDCoMKgwqDCoMKgLyogRmFpbGVkIHBvcnQgZHVtcCBkZXN0cm95ZXMgdGhlIHBvcnQuICov Cj7CoMKgwqDCoMKgwqBnb3RvIGVycjsKPsKgwqDCoMKgfQo+K8KgwqAgbXBzdHJlYW1fcmVzZXQo c3RyZWFtKTsKPsKgwqB9IGVsc2Ugewo+wqDCoMKgwqAqa2V5cyA9IDE7Cj4twqDCoCBhc3NlcnQo cG9ydF90dXBsZS0+c2l6ZSA9PSAwKTsKPsKgwqDCoMKgc3RydWN0IHN0YWlscSAqYXV0b2luY19p ZF9saXN0ID0KPsKgwqDCoMKgwqDCoHZkYmVfYXV0b2luY19pZF9saXN0KChzdHJ1Y3QgVmRiZSAq KXN0bXQpOwo+wqDCoMKgwqB1aW50MzJfdCBtYXBfc2l6ZSA9IHN0YWlscV9lbXB0eShhdXRvaW5j X2lkX2xpc3QpID8gMSA6IDI7Cj4twqDCoCBpbnQgc2l6ZSA9IG1wX3NpemVvZl91aW50KElQUk9U T19TUUxfSU5GTykgKwo+LcKgwqDCoMKgwqDCoMKgIG1wX3NpemVvZl9tYXAobWFwX3NpemUpOwo+ LcKgwqAgY2hhciAqcG9zID0gKGNoYXIgKikgb2J1Zl9hbGxvYyhvdXQsIHNpemUpOwo+LcKgwqAg aWYgKHBvcyA9PSBOVUxMKSB7Cj4twqDCoMKgwqAgZGlhZ19zZXQoT3V0T2ZNZW1vcnksIHNpemUs ICJvYnVmX2FsbG9jIiwgInBvcyIpOwo+LcKgwqDCoMKgIGdvdG8gZXJyOwo+LcKgwqAgfQo+LcKg wqAgcG9zID0gbXBfZW5jb2RlX3VpbnQocG9zLCBJUFJPVE9fU1FMX0lORk8pOwo+LcKgwqAgcG9z ID0gbXBfZW5jb2RlX21hcChwb3MsIG1hcF9zaXplKTsKPivCoMKgIG1wc3RyZWFtX2VuY29kZV91 aW50KHN0cmVhbSwgSVBST1RPX1NRTF9JTkZPKTsKPivCoMKgIG1wc3RyZWFtX2VuY29kZV9tYXAo c3RyZWFtLCBtYXBfc2l6ZSk7Cj7CoMKgwqDCoHVpbnQ2NF90IGlkX2NvdW50ID0gMDsKPi3CoMKg IGludCBjaGFuZ2VzID0gZGItPm5DaGFuZ2U7Cj4twqDCoCBzaXplID0gbXBfc2l6ZW9mX3VpbnQo U1FMX0lORk9fUk9XX0NPVU5UKSArCj4twqDCoMKgwqDCoMKgwqDCoMKgIG1wX3NpemVvZl91aW50 KGNoYW5nZXMpOwo+wqDCoMKgwqBpZiAoIXN0YWlscV9lbXB0eShhdXRvaW5jX2lkX2xpc3QpKSB7 Cj7CoMKgwqDCoMKgwqBzdHJ1Y3QgYXV0b2luY19pZF9lbnRyeSAqaWRfZW50cnk7Cj4twqDCoMKg wqAgc3RhaWxxX2ZvcmVhY2hfZW50cnkoaWRfZW50cnksIGF1dG9pbmNfaWRfbGlzdCwgbGluaykg ewo+LcKgwqDCoMKgwqDCoCBzaXplICs9IGlkX2VudHJ5LT5pZCA+PSAwID8KPi3CoMKgwqDCoMKg wqDCoMKgIG1wX3NpemVvZl91aW50KGlkX2VudHJ5LT5pZCkgOgo+LcKgwqDCoMKgwqDCoMKgwqAg bXBfc2l6ZW9mX2ludChpZF9lbnRyeS0+aWQpOwo+K8KgwqDCoMKgIHN0YWlscV9mb3JlYWNoX2Vu dHJ5KGlkX2VudHJ5LCBhdXRvaW5jX2lkX2xpc3QsIGxpbmspCj7CoMKgwqDCoMKgwqDCoMKgaWRf Y291bnQrKzsKPi3CoMKgwqDCoCB9Cj4twqDCoMKgwqAgc2l6ZSArPSBtcF9zaXplb2ZfdWludChT UUxfSU5GT19BVVRPSU5DUkVNRU5UX0lEUykgKwo+LcKgwqDCoMKgwqDCoCBtcF9zaXplb2ZfYXJy YXkoaWRfY291bnQpOwo+LcKgwqAgfQo+LcKgwqAgY2hhciAqYnVmID0gb2J1Zl9hbGxvYyhvdXQs IHNpemUpOwo+LcKgwqAgaWYgKGJ1ZiA9PSBOVUxMKSB7Cj4twqDCoMKgwqAgZGlhZ19zZXQoT3V0 T2ZNZW1vcnksIHNpemUsICJvYnVmX2FsbG9jIiwgImJ1ZiIpOwo+LcKgwqDCoMKgIGdvdG8gZXJy Owo+wqDCoMKgwqB9Cj4twqDCoCBidWYgPSBtcF9lbmNvZGVfdWludChidWYsIFNRTF9JTkZPX1JP V19DT1VOVCk7Cj4twqDCoCBidWYgPSBtcF9lbmNvZGVfdWludChidWYsIGNoYW5nZXMpOwo+Kwo+ K8KgwqAgbXBzdHJlYW1fZW5jb2RlX3VpbnQoc3RyZWFtLCBTUUxfSU5GT19ST1dfQ09VTlQpOwo+ K8KgwqAgbXBzdHJlYW1fZW5jb2RlX3VpbnQoc3RyZWFtLCBkYi0+bkNoYW5nZSk7Cj7CoMKgwqDC oGlmICghc3RhaWxxX2VtcHR5KGF1dG9pbmNfaWRfbGlzdCkpIHsKPi3CoMKgwqDCoCBidWYgPSBt cF9lbmNvZGVfdWludChidWYsIFNRTF9JTkZPX0FVVE9JTkNSRU1FTlRfSURTKTsKPi3CoMKgwqDC oCBidWYgPSBtcF9lbmNvZGVfYXJyYXkoYnVmLCBpZF9jb3VudCk7Cj4rwqDCoMKgwqAgbXBzdHJl YW1fZW5jb2RlX3VpbnQoc3RyZWFtLAo+K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFNRTF9J TkZPX0FVVE9JTkNSRU1FTlRfSURTKTsKPivCoMKgwqDCoCBtcHN0cmVhbV9lbmNvZGVfYXJyYXko c3RyZWFtLCBpZF9jb3VudCk7Cj7CoMKgwqDCoMKgwqBzdHJ1Y3QgYXV0b2luY19pZF9lbnRyeSAq aWRfZW50cnk7Cj7CoMKgwqDCoMKgwqBzdGFpbHFfZm9yZWFjaF9lbnRyeShpZF9lbnRyeSwgYXV0 b2luY19pZF9saXN0LCBsaW5rKSB7Cj4twqDCoMKgwqDCoMKgIGJ1ZiA9IGlkX2VudHJ5LT5pZCA+ PSAwID8KPi3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbXBfZW5jb2RlX3VpbnQoYnVmLCBpZF9l bnRyeS0+aWQpIDoKPi3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbXBfZW5jb2RlX2ludChidWYs IGlkX2VudHJ5LT5pZCk7Cj4rwqDCoMKgwqDCoMKgIGludDY0X3QgdmFsdWUgPSBpZF9lbnRyeS0+ aWQ7Cj4rwqDCoMKgwqDCoMKgIGlmIChpZF9lbnRyeS0+aWQgPj0gMCkKPivCoMKgwqDCoMKgwqDC oMKgIG1wc3RyZWFtX2VuY29kZV91aW50KHN0cmVhbSwgdmFsdWUpOwo+K8KgwqDCoMKgwqDCoCBl bHNlCj4rwqDCoMKgwqDCoMKgwqDCoCBtcHN0cmVhbV9lbmNvZGVfaW50KHN0cmVhbSwgdmFsdWUp Owo+wqDCoMKgwqDCoMKgfQo+wqDCoMKgwqB9Cj7CoMKgfQo+ZGlmZiAtLWdpdCBhL3NyYy9ib3gv ZXhlY3V0ZS5oIGIvc3JjL2JveC9leGVjdXRlLmgKPmluZGV4IDVmM2Q1ZWIuLjY1YWM4MWMgMTAw NjQ0Cj4tLS0gYS9zcmMvYm94L2V4ZWN1dGUuaAo+KysrIGIvc3JjL2JveC9leGVjdXRlLmgKPkBA IC00OCwxMCArNDgsMTAgQEAgZW51bSBzcWxfaW5mb19rZXkgewo+wqBleHRlcm4gY29uc3QgY2hh ciAqc3FsX2luZm9fa2V5X3N0cnNbXTsKPi1zdHJ1Y3Qgb2J1ZjsKPsKgc3RydWN0IHJlZ2lvbjsK PsKgc3RydWN0IHNxbF9iaW5kOwo+wqBzdHJ1Y3QgeHJvd19oZWFkZXI7Cj4rc3RydWN0IG1wc3Ry ZWFtOwo+wqAvKiogRVhFQ1VURSByZXF1ZXN0LiAqLwo+wqBzdHJ1Y3Qgc3FsX3JlcXVlc3Qgewo+ QEAgLTEwNSwxMyArMTA1LDE0IEBAIHN0cnVjdCBzcWxfcmVzcG9uc2Ugewo+wqDCoCogKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj7CoMKgKiBAcGFyYW0g cmVzcG9uc2UgRVhFQ1VURSByZXNwb25zZS4KPsKgwqAqIEBwYXJhbVtvdXRdIGtleXMgbnVtYmVy IG9mIGtleXMgaW4gZHVtcGVkIG1hcC4KPi0gKiBAcGFyYW0gb3V0IE91dHB1dCBidWZmZXIuCj4r ICogQHBhcmFtIHN0cmVhbSBzdHJlYW0gdG8gd2hlcmUgcmVzdWx0IGlzIHdyaXR0ZW4uCj7CoMKg Kgo+wqDCoCogQHJldHZhbMKgIDAgU3VjY2Vzcy4KPsKgwqAqIEByZXR2YWwgLTEgTWVtb3J5IGVy cm9yLgo+wqDCoCovCj7CoGludAo+LXNxbF9yZXNwb25zZV9kdW1wKHN0cnVjdCBzcWxfcmVzcG9u c2UgKnJlc3BvbnNlLCBpbnQgKmtleXMsIHN0cnVjdCBvYnVmICpvdXQpOwo+K3NxbF9yZXNwb25z ZV9kdW1wKHN0cnVjdCBzcWxfcmVzcG9uc2UgKnJlc3BvbnNlLCBpbnQgKmtleXMsCj4rwqDCoMKg wqAgc3RydWN0IG1wc3RyZWFtICpzdHJlYW0pOwo+wqAvKioKPsKgwqAqIFBhcnNlIHRoZSBFWEVD VVRFIHJlcXVlc3QuCj5kaWZmIC0tZ2l0IGEvc3JjL2JveC9pcHJvdG8uY2MgYi9zcmMvYm94L2lw cm90by5jYwo+aW5kZXggN2MxMWQwNS4uYjExMDkwMCAxMDA2NDQKPi0tLSBhL3NyYy9ib3gvaXBy b3RvLmNjCj4rKysgYi9zcmMvYm94L2lwcm90by5jYwo+QEAgLTYxLDYgKzYxLDcgQEAKPsKgI2lu Y2x1ZGUgInJtZWFuLmgiCj7CoCNpbmNsdWRlICJleGVjdXRlLmgiCj7CoCNpbmNsdWRlICJlcnJp bmouaCIKPisjaW5jbHVkZSAibXBzdHJlYW0uaCIKPsKgZW51bSB7Cj7CoMKgSVBST1RPX1NBTFRf U0laRSA9IDMyLAo+QEAgLTE1NzMsMTIgKzE1NzQsMjAgQEAgZXJyb3I6Cj7CoMKgdHhfcmVwbHlf ZXJyb3IobXNnKTsKPsKgfQo+Ky8qKiBDYWxsYmFjayB0byBmb3J3YXJkIGFuZCBlcnJvciBmcm9t IG1wc3RyZWFtIG1ldGhvZHMuICovCj4rc3RhdGljIHZvaWQKPitzZXRfZW5jb2RlX2Vycm9yKHZv aWQgKmVycm9yX2N0eCkKPit7Cj4rICooYm9vbCAqKWVycm9yX2N0eCA9IHRydWU7Cj4rfQo+Kwo+ wqBzdGF0aWMgdm9pZAo+wqB0eF9wcm9jZXNzX3NxbChzdHJ1Y3QgY21zZyAqbSkKPsKgewo+wqDC oHN0cnVjdCBpcHJvdG9fbXNnICptc2cgPSB0eF9hY2NlcHRfbXNnKG0pOwo+wqDCoHN0cnVjdCBv YnVmICpvdXQ7Cj7CoMKgc3RydWN0IHNxbF9yZXNwb25zZSByZXNwb25zZTsKPisgYm9vbCBpc19l cnJvciA9IGZhbHNlOwo+wqDCoHR4X2ZpYmVyX2luaXQobXNnLT5jb25uZWN0aW9uLT5zZXNzaW9u LCBtc2ctPmhlYWRlci5zeW5jKTsKPkBAIC0xNTk4LDEwICsxNjA3LDE2IEBAIHR4X3Byb2Nlc3Nf c3FsKHN0cnVjdCBjbXNnICptKQo+wqDCoC8qIFByZXBhcmUgbWVtb3J5IGZvciB0aGUgaXByb3Rv IGhlYWRlci4gKi8KPsKgwqBpZiAoaXByb3RvX3ByZXBhcmVfaGVhZGVyKG91dCwgJmhlYWRlcl9z dnAsIElQUk9UT19TUUxfSEVBREVSX0xFTikgIT0gMCkKPsKgwqDCoMKgZ290byBlcnJvcjsKPi0g aWYgKHNxbF9yZXNwb25zZV9kdW1wKCZyZXNwb25zZSwgJmtleXMsIG91dCkgIT0gMCkgewo+KyBz dHJ1Y3QgbXBzdHJlYW0gc3RyZWFtOwo+KyBtcHN0cmVhbV9pbml0KCZzdHJlYW0sIG91dCwgb2J1 Zl9yZXNlcnZlX2NiLCBvYnVmX2FsbG9jX2NiLAo+K8KgwqDCoMKgwqDCoMKgwqAgc2V0X2VuY29k ZV9lcnJvciwgJmlzX2Vycm9yKTsKPisgaWYgKGlzX2Vycm9yKQo+K8KgwqAgZ290byBlcnJvcjsK PisgaWYgKHNxbF9yZXNwb25zZV9kdW1wKCZyZXNwb25zZSwgJmtleXMsICZzdHJlYW0pICE9IDAg fHwgaXNfZXJyb3IpIHsKPsKgwqDCoMKgb2J1Zl9yb2xsYmFja190b19zdnAob3V0LCAmaGVhZGVy X3N2cCk7Cj7CoMKgwqDCoGdvdG8gZXJyb3I7Cj7CoMKgfQo+KyBtcHN0cmVhbV9mbHVzaCgmc3Ry ZWFtKTsKPsKgwqBpcHJvdG9fcmVwbHlfc3FsKG91dCwgJmhlYWRlcl9zdnAsIHJlc3BvbnNlLnN5 bmMsIHNjaGVtYV92ZXJzaW9uLCBrZXlzKTsKPsKgwqBpcHJvdG9fd3Bvc19jcmVhdGUoJm1zZy0+ d3Bvcywgb3V0KTsKPsKgwqByZXR1cm47Cj4tLSAKPjIuNy40 ----ALT--zORfzoMn8suwKEQu4cb9P2AilUafS8dk1543605930 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 CjxIVE1MPjxCT0RZPjxwIHN0eWxlPSdtYXJnaW4tdG9wOiAwcHg7JyBkaXI9Imx0ciI+QWRkZWQg Vm92YSB0byByZWNpcGllbnRzLjxicj4KLS08YnI+CiAmIzEwNTQ7JiMxMDkwOyYjMTA4NzsmIzEw ODg7JiMxMDcyOyYjMTA3NDsmIzEwODM7JiMxMDc3OyYjMTA4NTsmIzEwODY7ICYjMTA4MDsmIzEw Nzk7IE1haWwuUnUgJiMxMDc2OyYjMTA4MzsmIzExMDM7IEFuZHJvaWQ8YnI+CiYjMTA4NzsmIzEx MDM7JiMxMDkwOyYjMTA4NTsmIzEwODA7JiMxMDk0OyYjMTA3MjssIDMwICYjMTA4NTsmIzEwODY7 JiMxMTAzOyYjMTA3MzsmIzEwODg7JiMxMTAzOyAyMDE4JiMxMDc1Oy4sIDIyOjAxICswMzowMCAm IzEwODY7JiMxMDkwOyBpbWVldm1hQHRhcmFudG9vbC5vcmc6PGJyPgomZ3Q7VGhpcyBwYXRjaCBp cyB0aGUgbW9zdCBkdWJpb3VzIHBhdGNoIGR1ZSB0byB0aGUgaW1wbGljaXQgdXNlIG9mPGJyPgom Z3Q7bXBzdHJlYW0gYXMgYSBzdHJlYW0gZm9yIG9idWYuIFRoZXJlIGlzIGN1cnJlbnRseSBubyBh cHByb3ZlZDxicj4KJmd0O3NvbHV0aW9uLiBEaXNjdXNzaW9uIGFuZCBwYXRjaCBiZWxvdy48YnI+ CiZndDtPbiAxMS8zMC8xOCAxOjU1IFBNLCBWbGFkaW1pciBEYXZ5ZG92IHdyb3RlOjxicj4KJmd0 OyZndDsgT24gRnJpLCBOb3YgMzAsIDIwMTggYXQgMDE6NDU6NDhQTSArMDMwMCwgVmxhZGlzbGF2 IFNocGlsZXZveSB3cm90ZTo8YnI+CiZndDsmZ3Q7Jmd0Ozxicj4KJmd0OyZndDsmZ3Q7PGJyPgom Z3Q7Jmd0OyZndDsgT24gMzAvMTEvMjAxOCAxMzoxOSwgVmxhZGltaXIgRGF2eWRvdiB3cm90ZTo8 YnI+CiZndDsmZ3Q7Jmd0OyZndDsgT24gVGh1LCBOb3YgMjksIDIwMTggYXQgMDU6MDQ6MDZQTSAr MDMwMCwgVmxhZGlzbGF2IFNocGlsZXZveSB3cm90ZTo8YnI+CiZndDsmZ3Q7Jmd0OyZndDsmZ3Q7 IE9uIDI5LzExLzIwMTggMTM6NTMsIFZsYWRpbWlyIERhdnlkb3Ygd3JvdGU6PGJyPgomZ3Q7Jmd0 OyZndDsmZ3Q7Jmd0OyZndDsgT24gVHVlLCBOb3YgMjcsIDIwMTggYXQgMTA6MjU6NDNQTSArMDMw MCwgaW1lZXZtYUB0YXJhbnRvb2wub3JnIHdyb3RlOjxicj4KJmd0OyZndDsmZ3Q7Jmd0OyZndDsm Z3Q7Jmd0OyBAQCAtNjI3LDgxICs2MTAsNTMgQEAgc3FsX3ByZXBhcmVfYW5kX2V4ZWN1dGUoY29u c3Qgc3RydWN0IHNxbF9yZXF1ZXN0ICpyZXF1ZXN0LDxicj4KJmd0OyZndDsmZ3Q7Jmd0OyZndDsm Z3Q7Jmd0OyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPgomZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyZndDsm Z3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGludDxicj4KJmd0OyZndDsmZ3Q7Jmd0OyZndDsmZ3Q7Jmd0 OyAtc3FsX3Jlc3BvbnNlX2R1bXAoc3RydWN0IHNxbF9yZXNwb25zZSAqcmVzcG9uc2UsIGludCAq a2V5cywgc3RydWN0IG9idWYgKm91dCk8YnI+CiZndDsmZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyZndDsg K3NxbF9yZXNwb25zZV9kdW1wKHN0cnVjdCBzcWxfcmVzcG9uc2UgKnJlc3BvbnNlLCBpbnQgKmtl eXMsPGJyPgomZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyZndDsmZ3Q7ICsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsgc3RydWN0IG1wc3RyZWFtICpzdHJlYW0pPGJyPgomZ3Q7Jmd0OyZndDsmZ3Q7 Jmd0OyZndDsmZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHs8YnI+CiZndDsmZ3Q7Jmd0OyZndDsmZ3Q7 Jmd0OyZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgc3FsaXRlMyAqZGIgPSBzcWxf Z2V0KCk7PGJyPgomZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyZndDsmZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7IHN0cnVjdCBzcWxpdGUzX3N0bXQgKnN0bXQgPSAoc3RydWN0IHNxbGl0ZTNf c3RtdCAqKSByZXNwb25zZS0mZ3Q7cHJlcF9zdG10Ozxicj4KJmd0OyZndDsmZ3Q7Jmd0OyZndDsm Z3Q7Jmd0OyAtJm5ic3A7IHN0cnVjdCBwb3J0X3R1cGxlICpwb3J0X3R1cGxlID0gKHN0cnVjdCBw b3J0X3R1cGxlICopICZhbXA7cmVzcG9uc2UtJmd0O3BvcnQ7PGJyPgomZ3Q7Jmd0OyZndDsmZ3Q7 Jmd0OyZndDsmZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGludCByYyA9IDAsIGNv bHVtbl9jb3VudCA9IHNxbGl0ZTNfY29sdW1uX2NvdW50KHN0bXQpOzxicj4KJmd0OyZndDsmZ3Q7 Jmd0OyZndDsmZ3Q7Jmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBpZiAoY29sdW1u X2NvdW50ICZndDsgMCkgezxicj4KJmd0OyZndDsmZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyAtJm5ic3A7 Jm5ic3A7Jm5ic3A7IGlmIChzcWxfZ2V0X2Rlc2NyaXB0aW9uKHN0bXQsIG91dCwgY29sdW1uX2Nv dW50KSAhPSAwKSB7PGJyPgomZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyZndDsmZ3Q7ICsmbmJzcDsmbmJz cDsmbmJzcDsgaWYgKHNxbF9nZXRfZGVzY3JpcHRpb24oc3RtdCwgc3RyZWFtLCBjb2x1bW5fY291 bnQpICE9IDApIHs8YnI+CiZndDsmZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyZndDsmbmJzcDsmbmJzcDsm bmJzcDsgZXJyOjxicj4KJmd0OyZndDsmZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyByYyA9IC0xOzxicj4KJmd0 OyZndDsmZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBnb3RvIGZpbmlzaDs8YnI+CiZndDsmZ3Q7Jmd0OyZndDsm Z3Q7Jmd0OyZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgfTxi cj4KJmd0OyZndDsmZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyAqa2V5cyA9IDI7PGJyPgomZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyZndDsm Z3Q7IC0mbmJzcDsmbmJzcDsmbmJzcDsgaW50IHNpemUgPSBtcF9zaXplb2ZfdWludChJUFJPVE9f REFUQSkgKzxicj4KJmd0OyZndDsmZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyAtJm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IG1wX3NpemVvZl9hcnJheShwb3J0X3R1 cGxlLSZndDtzaXplKTs8YnI+CiZndDsmZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyZndDsgLSZuYnNwOyZu YnNwOyZuYnNwOyBjaGFyICpwb3MgPSAoY2hhciAqKSBvYnVmX2FsbG9jKG91dCwgc2l6ZSk7PGJy PgomZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyZndDsmZ3Q7IC0mbmJzcDsmbmJzcDsmbmJzcDsgaWYgKHBv cyA9PSBOVUxMKSB7PGJyPgomZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyZndDsmZ3Q7IC0mbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsgZGlhZ19zZXQoT3V0T2ZNZW1vcnksIHNpemUsICJvYnVmX2Fs bG9jIiwgInBvcyIpOzxicj4KJmd0OyZndDsmZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyAtJm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGdvdG8gZXJyOzxicj4KJmd0OyZndDsmZ3Q7Jmd0OyZndDsm Z3Q7Jmd0OyAtJm5ic3A7Jm5ic3A7Jm5ic3A7IH08YnI+CiZndDsmZ3Q7Jmd0OyZndDsmZ3Q7Jmd0 OyZndDsgLSZuYnNwOyZuYnNwOyZuYnNwOyBwb3MgPSBtcF9lbmNvZGVfdWludChwb3MsIElQUk9U T19EQVRBKTs8YnI+CiZndDsmZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyZndDsgLSZuYnNwOyZuYnNwOyZu YnNwOyBwb3MgPSBtcF9lbmNvZGVfYXJyYXkocG9zLCBwb3J0X3R1cGxlLSZndDtzaXplKTs8YnI+ CiZndDsmZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyZndDsgLSZuYnNwOyZuYnNwOyZuYnNwOyAvKjxicj4K Jmd0OyZndDsmZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyAtJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICog SnVzdCBsaWtlIFNFTEVDVCwgU1FMIHVzZXMgb3V0cHV0IGZvcm1hdCBjb21wYXRpYmxlPGJyPgom Z3Q7Jmd0OyZndDsmZ3Q7Jmd0OyZndDsmZ3Q7IC0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKiB3 aXRoIFRhcmFudG9vbCAxLjY8YnI+CiZndDsmZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyZndDsgLSZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyAqLzxicj4KJmd0OyZndDsmZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyAt Jm5ic3A7Jm5ic3A7Jm5ic3A7IGlmIChwb3J0X2R1bXBfbXNncGFja18xNigmYW1wO3Jlc3BvbnNl LSZndDtwb3J0LCBvdXQpICZsdDsgMCkgezxicj4KJmd0OyZndDsmZ3Q7Jmd0OyZndDsmZ3Q7Jmd0 OyArJm5ic3A7Jm5ic3A7Jm5ic3A7IG1wc3RyZWFtX2VuY29kZV91aW50KHN0cmVhbSwgSVBST1RP X0RBVEEpOzxicj4KJmd0OyZndDsmZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyArJm5ic3A7Jm5ic3A7Jm5i c3A7IG1wc3RyZWFtX2ZsdXNoKHN0cmVhbSk7PGJyPgomZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyZndDsm Z3Q7ICsmbmJzcDsmbmJzcDsmbmJzcDsgaWYgKHBvcnRfZHVtcF9tc2dwYWNrKCZhbXA7cmVzcG9u c2UtJmd0O3BvcnQsIHN0cmVhbS0mZ3Q7Y3R4KSAmbHQ7IDApIHs8YnI+CiZndDsmZ3Q7Jmd0OyZn dDsmZ3Q7Jmd0Ozxicj4KJmd0OyZndDsmZ3Q7Jmd0OyZndDsmZ3Q7IHN0cmVhbS0mZ3Q7Y3R4IGlz bid0IGd1YXJhbnRlZWQgdG8gYmUgYW4gb2J1Zjxicj4KJmd0OyZndDsmZ3Q7Jmd0OyZndDsmZ3Q7 PGJyPgomZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyZndDsgQW5kIHdoZW4geW91IGludHJvZHVjZSB2c3Ry ZWFtIGxhdGVyLCB5b3Ugc2ltcGx5IG1vdmUgdGhpcyBjb2RlIHRvPGJyPgomZ3Q7Jmd0OyZndDsm Z3Q7Jmd0OyZndDsgYW5vdGhlciBmaWxlLiBUaGlzIGlzIGNvbmZ1c2luZy4gTWF5IGJlIHdlIHNo b3VsZCBwYXNzIGFsbG9jL3Jlc2VydmU8YnI+CiZndDsmZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyB1c2Vk IGluIG1wc3RyZWFtIHRvIHBvcnRfZHVtcCBpbnN0ZWFkIG9mIG9idWY/PGJyPgomZ3Q7Jmd0OyZn dDsmZ3Q7Jmd0Ozxicj4KJmd0OyZndDsmZ3Q7Jmd0OyZndDsgR29vZCBpZGVhLCB0aG91Z2ggbm90 IHN1cmUsIGlmIGl0IGlzIHdvcnRoIHNsb3dpbmcgZG93biBwb3J0X2R1bXBfbXNncGFjazxicj4K Jmd0OyZndDsmZ3Q7Jmd0OyZndDsgYWRkaW5nIGEgbmV3IGxldmVsIG9mIGluZGlyZWN0aW9uLiBT aW5jZSBwb3J0X2R1bXBfbXNncGFjayBpcyBhIGhvdCBwYXRoPGJyPgomZ3Q7Jmd0OyZndDsmZ3Q7 Jmd0OyBhbmQgaXMgdXNlZCBmb3IgYm94LnNlbGVjdC48YnI+CiZndDsmZ3Q7Jmd0OyZndDsmZ3Q7 PGJyPgomZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyBNYXliZSBpdCBpcyBiZXR0ZXIgdG8ganVzdCByZW5h bWUgcG9ydF9kdW1wX21zZ3BhY2sgdG8gcG9ydF9kdW1wX29idWY8YnI+CiZndDsmZ3Q7Jmd0OyZn dDsmZ3Q7IGFuZCByZW5hbWUgdnN0cmVhbV9wb3J0X2R1bXAgdG8gdnN0cmVhbV9wb3J0X2R1bXBf b2J1Zj8gSWYgd2UgZXZlciB3aWxsPGJyPgomZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyBkdW1wIHBvcnQg dG8gbm90IG9idWYsIHRoZW4gd2Ugd2lsbCBqdXN0IGFkZCBhIG5ldyBtZXRob2QgdG8gcG9ydF92 dGFiLjxicj4KJmd0OyZndDsmZ3Q7Jmd0OyZndDs8YnI+CiZndDsmZ3Q7Jmd0OyZndDsmZ3Q7IEFs c28sIGl0IHdvdWxkIG1ha2UgcG9ydF9kdW1wX29idWYgbmFtZSBjb25zaXN0ZW50IHdpdGggcG9y dF9kdW1wX2x1YSAtPGJyPgomZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyBpbiBib3RoIGNhc2VzIHdlIG5v dCBqdXN0IGR1bXAgaW4gYSBzcGVjaWZpYyBmb3JtYXQsIGJ1dCB0byBhIGNvbmNyZXRlPGJyPgom Z3Q7Jmd0OyZndDsmZ3Q7Jmd0OyBkZXN0aW5hdGlvbjogb2J1ZiBhbmQgbHVhIHN0YWNrLiBOb3cg cG9ydF9kdW1wX21zZ3BhY2sgYW55d2F5IGlzIHJlc3RyaWN0ZWQ8YnI+CiZndDsmZ3Q7Jmd0OyZn dDsmZ3Q7IGJ5IG9idWYgZGVzdGluYXRpb24uPGJyPgomZ3Q7Jmd0OyZndDsmZ3Q7PGJyPgomZ3Q7 Jmd0OyZndDsmZ3Q7IFRoZXJlJ3MgcG9ydF9kdW1wX3BsYWluLCB3aGljaCBkdW1wcyBwb3J0IGNv bnRlbnRzIGluIGEgc3BlY2lmaWMgZm9ybWF0Ljxicj4KJmd0OyZndDsmZ3Q7Jmd0OyBTbyBwb3J0 X2R1bXBfb2J1ZiB3b3VsZCBsb29rIGFtYmlndW91cy48YnI+CiZndDsmZ3Q7Jmd0OyZndDs8YnI+ CiZndDsmZ3Q7Jmd0OyZndDsmZ3Q7PGJyPgomZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyBJZiB5b3Ugd29y cnkgYWJvdXQgaG93IHRvIGNhbGwgc3FsX3Jlc3BvbnNlX2R1bXAoKSB0byBub3Qgb2J1ZiwgdGhl biB0aGVyZTxicj4KJmd0OyZndDsmZ3Q7Jmd0OyZndDsgaXMgYW5vdGhlciBvcHRpb24uIEFueXdh eSByZW5hbWUgcG9ydF9kdW1wX21zZ3BhY2sgdG8gcG9ydF9kdW1wX29idWYgYW5kPGJyPgomZ3Q7 Jmd0OyZndDsmZ3Q7Jmd0OyBpbnRyb2R1Y2UgYSBuZXcgbWV0aG9kOiBwb3J0X2R1bXBfbXBzdHJl YW0uIEl0IHdpbGwgdGFrZSBtcHN0cmVhbSBhbmQgdXNlPGJyPgomZ3Q7Jmd0OyZndDsmZ3Q7Jmd0 OyBpdHMgcmVzZXJ2ZS9hbGxvYy9lcnJvciBmdW5jdGlvbnMuIEl0IGFsbG93cyB1cyB0byBkbyBu b3Qgc2xvdyBkb3duIGJveC5zZWxlY3QsPGJyPgomZ3Q7Jmd0OyZndDsmZ3Q7Jmd0OyBidXQgdXNl IHRoZSBmdWxsIHBvd2VyIG9mIHZpcnR1YWwgZnVuY3Rpb25zIGluIGV4ZWN1dGUuYywgd2hpY2gg ZGVmaW5pdGVseSBpczxicj4KJmd0OyZndDsmZ3Q7Jmd0OyZndDsgbm90IGhvdC48YnI+CiZndDsm Z3Q7Jmd0OyZndDs8YnI+CiZndDsmZ3Q7Jmd0OyZndDsgVGhhdCB3b3VsZCBpbnRlcmNvbm5lY3Qg cG9ydCBhbmQgbXBzdHJlYW0sIG1ha2UgdGhlbSBkZXBlbmRlbnQgb24gZWFjaDxicj4KJmd0OyZn dDsmZ3Q7Jmd0OyBvdGhlci4gSSBkb24ndCB0aGluayB0aGF0IHdvdWxkIGJlIGdvb2QuPGJyPgom Z3Q7Jmd0OyZndDsmZ3Q7PGJyPgomZ3Q7Jmd0OyZndDsmZ3Q7Jmd0Ozxicj4KJmd0OyZndDsmZ3Q7 Jmd0OyZndDsgbXBzdHJlYW0gaW1wbGVtZW50YXRpb24gb2YgdnN0cmVhbSB3aWxsIGNhbGwgcG9y dF9kdW1wX21wc3RyZWFtLCBhbmQ8YnI+CiZndDsmZ3Q7Jmd0OyZndDsmZ3Q7IGx1YXN0cmVhbSBp bXBsZW1lbnRhdGlvbiBvZiB2c3RyZWFtIHdpbGwgY2FsbCBwb3J0X2R1bXBfbHVhIGFzIGl0IGRv ZXMgbm93Ljxicj4KJmd0OyZndDsmZ3Q7Jmd0OyZndDsgYm94LnNlbGVjdCBhbmQgaXByb3RvX2Nh bGwgd2lsbCB1c2UgcG9ydF9kdW1wX29idWYuPGJyPgomZ3Q7Jmd0OyZndDsmZ3Q7Jmd0Ozxicj4K Jmd0OyZndDsmZ3Q7Jmd0OyZndDsgSSBwcmVmZXIgdGhlIHNlY29uZCBvcHRpb246IGludHJvZHVj ZSBwb3J0X2R1bXBfbXBzdHJlYW0uIEl0IGlzIG9rIGZvciB5b3U/PGJyPgomZ3Q7Jmd0OyZndDsm Z3Q7PGJyPgomZ3Q7Jmd0OyZndDsmZ3Q7IEkgbWF5IGJlIHdyb25nLCBidXQgSU1PIHRoZXJlIGlz bid0IG11Y2ggcG9pbnQgaW4gb3B0aW1pemluZyBib3guc2VsZWN0LDxicj4KJmd0OyZndDsmZ3Q7 Jmd0OyBiZWNhdXNlIGl0J3MgdmVyeSBsaW1pdGVkIGluIGl0cyBhcHBsaWNhYmlsaXR5LiBQZW9w bGUgYWxyZWFkeSBwcmVmZXIgdG88YnI+CiZndDsmZ3Q7Jmd0OyZndDsgdXNlIGJveC5jYWxsIG92 ZXIgYm94Lmluc2VydC9zZWxlY3QvZXRjIG92ZXIgaXByb3RvLCBhbmQgd2l0aCB0aGU8YnI+CiZn dDsmZ3Q7Jmd0OyZndDsgYXBwZWFyYW5jZSBvZiBib3guZXhlY3V0ZSB0aGV5IGFyZSBsaWtlbHkg dG8gc3RvcCB1c2luZyBwbGFpbiBib3guc2VsZWN0PGJyPgomZ3Q7Jmd0OyZndDsmZ3Q7IGF0IGFs bC48YnI+CiZndDsmZ3Q7Jmd0OyZndDs8YnI+CiZndDsmZ3Q7Jmd0OyZndDsgVGhhdCBzYWlkLCBw ZXJzb25hbGx5IEkgd291bGQgdHJ5IHRvIHBhc3MgcmVzZXJ2ZS9hbGxvYyBtZXRob2RzIHRvIHBv cnQsPGJyPgomZ3Q7Jmd0OyZndDsmZ3Q7IHNlZSBob3cgaXQgZ29lcy48YnI+CiZndDsmZ3Q7Jmd0 OyZndDs8YnI+CiZndDsmZ3Q7Jmd0Ozxicj4KJmd0OyZndDsmZ3Q7IEkgZG8gbm90IHNlZSBhIHJl YXNvbiB0byBzbG93IGRvd24gYm94LnNlbGVjdCBpZiB3ZSBjYW4gZG9uJ3QgZG8gaXQuPGJyPgom Z3Q7Jmd0OyZndDsgWWVhcywgcGVvcGxlIHVzZSBJUFJPVE9fQ0FMTCwgYnV0IGluIHN0b3JlZCBm dW5jdGlvbnMgdGhleSB1c2UgYm94PGJyPgomZ3Q7Jmd0OyZndDsgZnVuY3Rpb25zIGluY2x1ZGlu ZyBzZWxlY3QuPGJyPgomZ3Q7Jmd0Ozxicj4KJmd0OyZndDsgYm94LnNlbGVjdCBjYWxsZWQgZnJv bSBMdWEgY29kZSBkb2Vzbid0IHVzZSBwb3J0X2R1bXBfbXNncGFjay48YnI+CiZndDsmZ3Q7PGJy PgomZ3Q7Jmd0OyZndDs8YnI+CiZndDsmZ3Q7Jmd0OyBPaywgaW5zdGVhZCBvZiBwb3J0X2R1bXBf bXBzdHJlYW0gd2UgY2FuIHJlbmFtZSBwb3J0X2R1bXBfbXNncGFjayB0bzxicj4KJmd0OyZndDsm Z3Q7IHBvcnRfZHVtcF9vYnVmIGFuZCBhZGQgcG9ydF9kdW1wX21zZ3BhY2sgd2hpY2ggZG9lcyBu b3QgZGVwZW5kIG9uPGJyPgomZ3Q7Jmd0OyZndDsgbXBzdHJlYW0gYW5kIHRha2VzIGFsbG9jL3Jl c2VydmUvY3R4IGRpcmVjdGx5Ljxicj4KJmd0OyZndDs8YnI+CiZndDsmZ3Q7IEJldHRlciBjYWxs IHRoZSBvcHRpbWl6ZWQgdmVyc2lvbiAodGhlIG9uZSB3aXRob3V0IGNhbGxiYWNrcyk8YnI+CiZn dDsmZ3Q7IHBvcnRfZHVtcF9tc2dwYWNrX29idWYgdG8gYXZvaWQgY29uZnVzaW9uIElNTy48YnI+ CiZndDsmZ3Q7PGJyPgomZ3Q7Jmd0OyBBbnl3YXksIEknZCB0cnkgdG8gcnVuIGNiZW5jaCB0byBz ZWUgaWYgaXQgcmVhbGx5IHBlcmZvbXJzIGJldHRlcjxicj4KJmd0OyZndDsgdGhhbiB0aGUgb25l IHVzaW5nIGNhbGxiYWNrcy48YnI+CiZndDtjb21taXQgYTg1N2UxMTI5ZjllMzhiZGU4YzVjNjAz NzE0OTg4N2Y2OTVlYzZkYzxicj4KJmd0O0F1dGhvcjogTWVyZ2VuIEltZWV2ICZsdDtpbWVldm1h QGdtYWlsLmNvbSZndDs8YnI+CiZndDtEYXRlOiZuYnNwOyZuYnNwOyBGcmkgTm92IDkgMjI6MzE6 MDcgMjAxOCArMDMwMDxicj4KJmd0OyYjMTYwOyYjMTYwOyYjMTYwOyYjMTYwO2lwcm90bzogcmVw bGFjZSBvYnVmIGJ5IG1wc3RyZWFtIGluIGV4ZWN1dGUuYzxicj4KJmd0OyYjMTYwOyYjMTYwOyYj MTYwOyYjMTYwO0l0IGlzIHVzZWZ1bCB0byByZXBsYWNlIG9idWYgYnkgbXBzdHJlYW0uIEl0IGFs bG93cyB1cyB0byBkZXNpZ248YnI+CiZndDsmIzE2MDsmIzE2MDsmIzE2MDsmIzE2MDt2c3RyZWFt LiBJbnRlcmZhY2UgdnN0cmVhbSB3aWxsIGJlIHVzZWQgYXMgdW5pdmVyc2FsIGludGVyZmFjZSB0 bzxicj4KJmd0OyYjMTYwOyYjMTYwOyYjMTYwOyYjMTYwO2R1bXAgcmVzdWx0IG9mIFNRTCBxdWVy aWVzLjxicj4KJmd0OyYjMTYwOyYjMTYwOyYjMTYwOyYjMTYwO05lZWRlZCBmb3IgIzM1MDU8YnI+ CiZndDtkaWZmIC0tZ2l0IGEvc3JjL2JveC9leGVjdXRlLmMgYi9zcmMvYm94L2V4ZWN1dGUuYzxi cj4KJmd0O2luZGV4IDNhNmNhZGYuLjBkMjY2ZGQgMTAwNjQ0PGJyPgomZ3Q7LS0tIGEvc3JjL2Jv eC9leGVjdXRlLmM8YnI+CiZndDsrKysgYi9zcmMvYm94L2V4ZWN1dGUuYzxicj4KJmd0O0BAIC0z NSw3ICszNSw2IEBAPGJyPgomZ3Q7JiMxNjA7I2luY2x1ZGUgInNxbC9zcWxpdGVMaW1pdC5oIjxi cj4KJmd0OyYjMTYwOyNpbmNsdWRlICJlcnJjb2RlLmgiPGJyPgomZ3Q7JiMxNjA7I2luY2x1ZGUg InNtYWxsL3JlZ2lvbi5oIjxicj4KJmd0Oy0jaW5jbHVkZSAic21hbGwvb2J1Zi5oIjxicj4KJmd0 OyYjMTYwOyNpbmNsdWRlICJkaWFnLmgiPGJyPgomZ3Q7JiMxNjA7I2luY2x1ZGUgInNxbC5oIjxi cj4KJmd0OyYjMTYwOyNpbmNsdWRlICJ4cm93LmgiPGJyPgomZ3Q7QEAgLTQzLDYgKzQyLDcgQEA8 YnI+CiZndDsmIzE2MDsjaW5jbHVkZSAicG9ydC5oIjxicj4KJmd0OyYjMTYwOyNpbmNsdWRlICJ0 dXBsZS5oIjxicj4KJmd0OyYjMTYwOyNpbmNsdWRlICJzcWwvdmRiZS5oIjxicj4KJmd0OysjaW5j bHVkZSAibXBzdHJlYW0uaCI8YnI+CiZndDsmIzE2MDtjb25zdCBjaGFyICpzcWxfdHlwZV9zdHJz W10gPSB7PGJyPgomZ3Q7JiMxNjA7JiMxNjA7TlVMTCw8YnI+CiZndDtAQCAtNTMwLDIzICs1MzAs MTMgQEAgc3FsX2JpbmQoY29uc3Qgc3RydWN0IHNxbF9yZXF1ZXN0ICpyZXF1ZXN0LCBzdHJ1Y3Qg c3FsaXRlM19zdG10ICpzdG10KTxicj4KJmd0OyYjMTYwOyYjMTYwOyogQHJldHZhbCAtMSBDbGll bnQgb3IgbWVtb3J5IGVycm9yLjxicj4KJmd0OyYjMTYwOyYjMTYwOyovPGJyPgomZ3Q7JiMxNjA7 c3RhdGljIGlubGluZSBpbnQ8YnI+CiZndDstc3FsX2dldF9kZXNjcmlwdGlvbihzdHJ1Y3Qgc3Fs aXRlM19zdG10ICpzdG10LCBzdHJ1Y3Qgb2J1ZiAqb3V0LDxicj4KJmd0OytzcWxfZ2V0X2Rlc2Ny aXB0aW9uKHN0cnVjdCBzcWxpdGUzX3N0bXQgKnN0bXQsIHN0cnVjdCBtcHN0cmVhbSAqc3RyZWFt LDxicj4KJmd0OyYjMTYwOyYjMTYwOyYjMTYwOyYjMTYwOyYjMTYwOyYjMTYwOyYjMTYwOyYjMTYw O2ludCBjb2x1bW5fY291bnQpPGJyPgomZ3Q7JiMxNjA7ezxicj4KJmd0OyYjMTYwOyYjMTYwO2Fz c2VydChjb2x1bW5fY291bnQgJmd0OyAwKTs8YnI+CiZndDstIGludCBzaXplID0gbXBfc2l6ZW9m X3VpbnQoSVBST1RPX01FVEFEQVRBKSArPGJyPgomZ3Q7LSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyBtcF9zaXplb2ZfYXJyYXkoY29sdW1uX2NvdW50KTs8YnI+CiZndDstIGNoYXIgKnBv cyA9IChjaGFyICopIG9idWZfYWxsb2Mob3V0LCBzaXplKTs8YnI+CiZndDstIGlmIChwb3MgPT0g TlVMTCkgezxicj4KJmd0Oy0mbmJzcDsmbmJzcDsgZGlhZ19zZXQoT3V0T2ZNZW1vcnksIHNpemUs ICJvYnVmX2FsbG9jIiwgInBvcyIpOzxicj4KJmd0Oy0mbmJzcDsmbmJzcDsgcmV0dXJuIC0xOzxi cj4KJmd0Oy0gfTxicj4KJmd0Oy0gcG9zID0gbXBfZW5jb2RlX3VpbnQocG9zLCBJUFJPVE9fTUVU QURBVEEpOzxicj4KJmd0Oy0gcG9zID0gbXBfZW5jb2RlX2FycmF5KHBvcywgY29sdW1uX2NvdW50 KTs8YnI+CiZndDsrIG1wc3RyZWFtX2VuY29kZV91aW50KHN0cmVhbSwgSVBST1RPX01FVEFEQVRB KTs8YnI+CiZndDsrIG1wc3RyZWFtX2VuY29kZV9hcnJheShzdHJlYW0sIGNvbHVtbl9jb3VudCk7 PGJyPgomZ3Q7JiMxNjA7JiMxNjA7Zm9yIChpbnQgaSA9IDA7IGkgJmx0OyBjb2x1bW5fY291bnQ7 ICsraSkgezxicj4KJmd0Oy0mbmJzcDsmbmJzcDsgc2l6ZV90IHNpemUgPSBtcF9zaXplb2ZfbWFw KDIpICs8YnI+CiZndDstJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7IG1wX3NpemVvZl91aW50KElQUk9UT19GSUVMRF9OQU1FKSArPGJy PgomZ3Q7LSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyBtcF9zaXplb2ZfdWludChJUFJPVE9fRklFTERfVFlQRSk7PGJyPgomZ3Q7JiMx NjA7JiMxNjA7JiMxNjA7JiMxNjA7Y29uc3QgY2hhciAqbmFtZSA9IHNxbGl0ZTNfY29sdW1uX25h bWUoc3RtdCwgaSk7PGJyPgomZ3Q7JiMxNjA7JiMxNjA7JiMxNjA7JiMxNjA7Y29uc3QgY2hhciAq dHlwZSA9IHNxbGl0ZTNfY29sdW1uX2RhdGF0eXBlKHN0bXQsIGkpOzxicj4KJmd0OyYjMTYwOyYj MTYwOyYjMTYwOyYjMTYwOy8qPGJyPgomZ3Q7QEAgLTU1NSwxOCArNTQ1LDExIEBAIHNxbF9nZXRf ZGVzY3JpcHRpb24oc3RydWN0IHNxbGl0ZTNfc3RtdCAqc3RtdCwgc3RydWN0IG9idWYgKm91dCw8 YnI+CiZndDsmIzE2MDsmIzE2MDsmIzE2MDsmIzE2MDsmIzE2MDsqIGNvbHVtbl9uYW1lIHNpbXBs eSByZXR1cm5zIHRoZW0uPGJyPgomZ3Q7JiMxNjA7JiMxNjA7JiMxNjA7JiMxNjA7JiMxNjA7Ki88 YnI+CiZndDsmIzE2MDsmIzE2MDsmIzE2MDsmIzE2MDthc3NlcnQobmFtZSAhPSBOVUxMKTs8YnI+ CiZndDstJm5ic3A7Jm5ic3A7IHNpemUgKz0gbXBfc2l6ZW9mX3N0cihzdHJsZW4obmFtZSkpOzxi cj4KJmd0Oy0mbmJzcDsmbmJzcDsgc2l6ZSArPSBtcF9zaXplb2Zfc3RyKHN0cmxlbih0eXBlKSk7 PGJyPgomZ3Q7LSZuYnNwOyZuYnNwOyBjaGFyICpwb3MgPSAoY2hhciAqKSBvYnVmX2FsbG9jKG91 dCwgc2l6ZSk7PGJyPgomZ3Q7LSZuYnNwOyZuYnNwOyBpZiAocG9zID09IE5VTEwpIHs8YnI+CiZn dDstJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGRpYWdfc2V0KE91dE9mTWVtb3J5LCBzaXplLCAi b2J1Zl9hbGxvYyIsICJwb3MiKTs8YnI+CiZndDstJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHJl dHVybiAtMTs8YnI+CiZndDstJm5ic3A7Jm5ic3A7IH08YnI+CiZndDstJm5ic3A7Jm5ic3A7IHBv cyA9IG1wX2VuY29kZV9tYXAocG9zLCAyKTs8YnI+CiZndDstJm5ic3A7Jm5ic3A7IHBvcyA9IG1w X2VuY29kZV91aW50KHBvcywgSVBST1RPX0ZJRUxEX05BTUUpOzxicj4KJmd0Oy0mbmJzcDsmbmJz cDsgcG9zID0gbXBfZW5jb2RlX3N0cihwb3MsIG5hbWUsIHN0cmxlbihuYW1lKSk7PGJyPgomZ3Q7 LSZuYnNwOyZuYnNwOyBwb3MgPSBtcF9lbmNvZGVfdWludChwb3MsIElQUk9UT19GSUVMRF9UWVBF KTs8YnI+CiZndDstJm5ic3A7Jm5ic3A7IHBvcyA9IG1wX2VuY29kZV9zdHIocG9zLCB0eXBlLCBz dHJsZW4odHlwZSkpOzxicj4KJmd0OysmbmJzcDsmbmJzcDsgbXBzdHJlYW1fZW5jb2RlX21hcChz dHJlYW0sIDIpOzxicj4KJmd0OysmbmJzcDsmbmJzcDsgbXBzdHJlYW1fZW5jb2RlX3VpbnQoc3Ry ZWFtLCBJUFJPVE9fRklFTERfTkFNRSk7PGJyPgomZ3Q7KyZuYnNwOyZuYnNwOyBtcHN0cmVhbV9l bmNvZGVfc3RyKHN0cmVhbSwgbmFtZSk7PGJyPgomZ3Q7KyZuYnNwOyZuYnNwOyBtcHN0cmVhbV9l bmNvZGVfdWludChzdHJlYW0sIElQUk9UT19GSUVMRF9UWVBFKTs8YnI+CiZndDsrJm5ic3A7Jm5i c3A7IG1wc3RyZWFtX2VuY29kZV9zdHIoc3RyZWFtLCB0eXBlKTs8YnI+CiZndDsmIzE2MDsmIzE2 MDt9PGJyPgomZ3Q7JiMxNjA7JiMxNjA7cmV0dXJuIDA7PGJyPgomZ3Q7JiMxNjA7fTxicj4KJmd0 O0BAIC02MjUsODEgKzYwOCw1MyBAQCBzcWxfcHJlcGFyZV9hbmRfZXhlY3V0ZShjb25zdCBzdHJ1 Y3Qgc3FsX3JlcXVlc3QgKnJlcXVlc3QsPGJyPgomZ3Q7JiMxNjA7fTxicj4KJmd0OyYjMTYwO2lu dDxicj4KJmd0Oy1zcWxfcmVzcG9uc2VfZHVtcChzdHJ1Y3Qgc3FsX3Jlc3BvbnNlICpyZXNwb25z ZSwgaW50ICprZXlzLCBzdHJ1Y3Qgb2J1ZiAqb3V0KTxicj4KJmd0OytzcWxfcmVzcG9uc2VfZHVt cChzdHJ1Y3Qgc3FsX3Jlc3BvbnNlICpyZXNwb25zZSwgaW50ICprZXlzLDxicj4KJmd0OysmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsgc3RydWN0IG1wc3RyZWFtICpzdHJlYW0pPGJyPgomZ3Q7JiMx NjA7ezxicj4KJmd0OyYjMTYwOyYjMTYwO3NxbGl0ZTMgKmRiID0gc3FsX2dldCgpOzxicj4KJmd0 OyYjMTYwOyYjMTYwO3N0cnVjdCBzcWxpdGUzX3N0bXQgKnN0bXQgPSAoc3RydWN0IHNxbGl0ZTNf c3RtdCAqKSByZXNwb25zZS0mZ3Q7cHJlcF9zdG10Ozxicj4KJmd0Oy0gc3RydWN0IHBvcnRfdHVw bGUgKnBvcnRfdHVwbGUgPSAoc3RydWN0IHBvcnRfdHVwbGUgKikgJmFtcDtyZXNwb25zZS0mZ3Q7 cG9ydDs8YnI+CiZndDsmIzE2MDsmIzE2MDtpbnQgcmMgPSAwLCBjb2x1bW5fY291bnQgPSBzcWxp dGUzX2NvbHVtbl9jb3VudChzdG10KTs8YnI+CiZndDsmIzE2MDsmIzE2MDtpZiAoY29sdW1uX2Nv dW50ICZndDsgMCkgezxicj4KJmd0Oy0mbmJzcDsmbmJzcDsgaWYgKHNxbF9nZXRfZGVzY3JpcHRp b24oc3RtdCwgb3V0LCBjb2x1bW5fY291bnQpICE9IDApIHs8YnI+CiZndDsrJm5ic3A7Jm5ic3A7 IGlmIChzcWxfZ2V0X2Rlc2NyaXB0aW9uKHN0bXQsIHN0cmVhbSwgY29sdW1uX2NvdW50KSAhPSAw KSB7PGJyPgomZ3Q7JiMxNjA7ZXJyOjxicj4KJmd0OyYjMTYwOyYjMTYwOyYjMTYwOyYjMTYwOyYj MTYwOyYjMTYwO3JjID0gLTE7PGJyPgomZ3Q7JiMxNjA7JiMxNjA7JiMxNjA7JiMxNjA7JiMxNjA7 JiMxNjA7Z290byBmaW5pc2g7PGJyPgomZ3Q7JiMxNjA7JiMxNjA7JiMxNjA7JiMxNjA7fTxicj4K Jmd0OyYjMTYwOyYjMTYwOyYjMTYwOyYjMTYwOyprZXlzID0gMjs8YnI+CiZndDstJm5ic3A7Jm5i c3A7IGludCBzaXplID0gbXBfc2l6ZW9mX3VpbnQoSVBST1RPX0RBVEEpICs8YnI+CiZndDstJm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IG1wX3NpemVvZl9hcnJheShw b3J0X3R1cGxlLSZndDtzaXplKTs8YnI+CiZndDstJm5ic3A7Jm5ic3A7IGNoYXIgKnBvcyA9IChj aGFyICopIG9idWZfYWxsb2Mob3V0LCBzaXplKTs8YnI+CiZndDstJm5ic3A7Jm5ic3A7IGlmIChw b3MgPT0gTlVMTCkgezxicj4KJmd0Oy0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgZGlhZ19zZXQo T3V0T2ZNZW1vcnksIHNpemUsICJvYnVmX2FsbG9jIiwgInBvcyIpOzxicj4KJmd0Oy0mbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsgZ290byBlcnI7PGJyPgomZ3Q7LSZuYnNwOyZuYnNwOyB9PGJyPgom Z3Q7LSZuYnNwOyZuYnNwOyBwb3MgPSBtcF9lbmNvZGVfdWludChwb3MsIElQUk9UT19EQVRBKTs8 YnI+CiZndDstJm5ic3A7Jm5ic3A7IHBvcyA9IG1wX2VuY29kZV9hcnJheShwb3MsIHBvcnRfdHVw bGUtJmd0O3NpemUpOzxicj4KJmd0Oy0mbmJzcDsmbmJzcDsgLyo8YnI+CiZndDstJm5ic3A7Jm5i c3A7Jm5ic3A7ICogSnVzdCBsaWtlIFNFTEVDVCwgU1FMIHVzZXMgb3V0cHV0IGZvcm1hdCBjb21w YXRpYmxlPGJyPgomZ3Q7LSZuYnNwOyZuYnNwOyZuYnNwOyAqIHdpdGggVGFyYW50b29sIDEuNjxi cj4KJmd0Oy0mbmJzcDsmbmJzcDsmbmJzcDsgKi88YnI+CiZndDstJm5ic3A7Jm5ic3A7IGlmIChw b3J0X2R1bXBfbXNncGFja18xNigmYW1wO3Jlc3BvbnNlLSZndDtwb3J0LCBvdXQpICZsdDsgMCkg ezxicj4KJmd0OysmbmJzcDsmbmJzcDsgbXBzdHJlYW1fZW5jb2RlX3VpbnQoc3RyZWFtLCBJUFJP VE9fREFUQSk7PGJyPgomZ3Q7KyZuYnNwOyZuYnNwOyBtcHN0cmVhbV9mbHVzaChzdHJlYW0pOzxi cj4KJmd0OysmbmJzcDsmbmJzcDsgaWYgKHBvcnRfZHVtcF9tc2dwYWNrKCZhbXA7cmVzcG9uc2Ut Jmd0O3BvcnQsIHN0cmVhbS0mZ3Q7Y3R4KSAmbHQ7IDApIHs8YnI+CiZndDsmIzE2MDsmIzE2MDsm IzE2MDsmIzE2MDsmIzE2MDsmIzE2MDsvKiBGYWlsZWQgcG9ydCBkdW1wIGRlc3Ryb3llcyB0aGUg cG9ydC4gKi88YnI+CiZndDsmIzE2MDsmIzE2MDsmIzE2MDsmIzE2MDsmIzE2MDsmIzE2MDtnb3Rv IGVycjs8YnI+CiZndDsmIzE2MDsmIzE2MDsmIzE2MDsmIzE2MDt9PGJyPgomZ3Q7KyZuYnNwOyZu YnNwOyBtcHN0cmVhbV9yZXNldChzdHJlYW0pOzxicj4KJmd0OyYjMTYwOyYjMTYwO30gZWxzZSB7 PGJyPgomZ3Q7JiMxNjA7JiMxNjA7JiMxNjA7JiMxNjA7KmtleXMgPSAxOzxicj4KJmd0Oy0mbmJz cDsmbmJzcDsgYXNzZXJ0KHBvcnRfdHVwbGUtJmd0O3NpemUgPT0gMCk7PGJyPgomZ3Q7JiMxNjA7 JiMxNjA7JiMxNjA7JiMxNjA7c3RydWN0IHN0YWlscSAqYXV0b2luY19pZF9saXN0ID08YnI+CiZn dDsmIzE2MDsmIzE2MDsmIzE2MDsmIzE2MDsmIzE2MDsmIzE2MDt2ZGJlX2F1dG9pbmNfaWRfbGlz dCgoc3RydWN0IFZkYmUgKilzdG10KTs8YnI+CiZndDsmIzE2MDsmIzE2MDsmIzE2MDsmIzE2MDt1 aW50MzJfdCBtYXBfc2l6ZSA9IHN0YWlscV9lbXB0eShhdXRvaW5jX2lkX2xpc3QpID8gMSA6IDI7 PGJyPgomZ3Q7LSZuYnNwOyZuYnNwOyBpbnQgc2l6ZSA9IG1wX3NpemVvZl91aW50KElQUk9UT19T UUxfSU5GTykgKzxicj4KJmd0Oy0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsgbXBfc2l6ZW9mX21hcChtYXBfc2l6ZSk7PGJyPgomZ3Q7LSZuYnNwOyZuYnNwOyBjaGFy ICpwb3MgPSAoY2hhciAqKSBvYnVmX2FsbG9jKG91dCwgc2l6ZSk7PGJyPgomZ3Q7LSZuYnNwOyZu YnNwOyBpZiAocG9zID09IE5VTEwpIHs8YnI+CiZndDstJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 IGRpYWdfc2V0KE91dE9mTWVtb3J5LCBzaXplLCAib2J1Zl9hbGxvYyIsICJwb3MiKTs8YnI+CiZn dDstJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGdvdG8gZXJyOzxicj4KJmd0Oy0mbmJzcDsmbmJz cDsgfTxicj4KJmd0Oy0mbmJzcDsmbmJzcDsgcG9zID0gbXBfZW5jb2RlX3VpbnQocG9zLCBJUFJP VE9fU1FMX0lORk8pOzxicj4KJmd0Oy0mbmJzcDsmbmJzcDsgcG9zID0gbXBfZW5jb2RlX21hcChw b3MsIG1hcF9zaXplKTs8YnI+CiZndDsrJm5ic3A7Jm5ic3A7IG1wc3RyZWFtX2VuY29kZV91aW50 KHN0cmVhbSwgSVBST1RPX1NRTF9JTkZPKTs8YnI+CiZndDsrJm5ic3A7Jm5ic3A7IG1wc3RyZWFt X2VuY29kZV9tYXAoc3RyZWFtLCBtYXBfc2l6ZSk7PGJyPgomZ3Q7JiMxNjA7JiMxNjA7JiMxNjA7 JiMxNjA7dWludDY0X3QgaWRfY291bnQgPSAwOzxicj4KJmd0Oy0mbmJzcDsmbmJzcDsgaW50IGNo YW5nZXMgPSBkYi0mZ3Q7bkNoYW5nZTs8YnI+CiZndDstJm5ic3A7Jm5ic3A7IHNpemUgPSBtcF9z aXplb2ZfdWludChTUUxfSU5GT19ST1dfQ09VTlQpICs8YnI+CiZndDstJm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IG1wX3NpemVvZl91aW50KGNo YW5nZXMpOzxicj4KJmd0OyYjMTYwOyYjMTYwOyYjMTYwOyYjMTYwO2lmICghc3RhaWxxX2VtcHR5 KGF1dG9pbmNfaWRfbGlzdCkpIHs8YnI+CiZndDsmIzE2MDsmIzE2MDsmIzE2MDsmIzE2MDsmIzE2 MDsmIzE2MDtzdHJ1Y3QgYXV0b2luY19pZF9lbnRyeSAqaWRfZW50cnk7PGJyPgomZ3Q7LSZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyBzdGFpbHFfZm9yZWFjaF9lbnRyeShpZF9lbnRyeSwgYXV0b2lu Y19pZF9saXN0LCBsaW5rKSB7PGJyPgomZ3Q7LSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyBzaXplICs9IGlkX2VudHJ5LSZndDtpZCAmZ3Q7PSAwID88YnI+CiZndDstJm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IG1wX3NpemVvZl91aW50 KGlkX2VudHJ5LSZndDtpZCkgOjxicj4KJmd0Oy0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsgbXBfc2l6ZW9mX2ludChpZF9lbnRyeS0mZ3Q7aWQpOzxicj4K Jmd0OysmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgc3RhaWxxX2ZvcmVhY2hfZW50cnkoaWRfZW50 cnksIGF1dG9pbmNfaWRfbGlzdCwgbGluayk8YnI+CiZndDsmIzE2MDsmIzE2MDsmIzE2MDsmIzE2 MDsmIzE2MDsmIzE2MDsmIzE2MDsmIzE2MDtpZF9jb3VudCsrOzxicj4KJmd0Oy0mbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsgfTxicj4KJmd0Oy0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgc2l6ZSAr PSBtcF9zaXplb2ZfdWludChTUUxfSU5GT19BVVRPSU5DUkVNRU5UX0lEUykgKzxicj4KJmd0Oy0m bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgbXBfc2l6ZW9mX2FycmF5KGlkX2Nv dW50KTs8YnI+CiZndDstJm5ic3A7Jm5ic3A7IH08YnI+CiZndDstJm5ic3A7Jm5ic3A7IGNoYXIg KmJ1ZiA9IG9idWZfYWxsb2Mob3V0LCBzaXplKTs8YnI+CiZndDstJm5ic3A7Jm5ic3A7IGlmIChi dWYgPT0gTlVMTCkgezxicj4KJmd0Oy0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgZGlhZ19zZXQo T3V0T2ZNZW1vcnksIHNpemUsICJvYnVmX2FsbG9jIiwgImJ1ZiIpOzxicj4KJmd0Oy0mbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsgZ290byBlcnI7PGJyPgomZ3Q7JiMxNjA7JiMxNjA7JiMxNjA7JiMx NjA7fTxicj4KJmd0Oy0mbmJzcDsmbmJzcDsgYnVmID0gbXBfZW5jb2RlX3VpbnQoYnVmLCBTUUxf SU5GT19ST1dfQ09VTlQpOzxicj4KJmd0Oy0mbmJzcDsmbmJzcDsgYnVmID0gbXBfZW5jb2RlX3Vp bnQoYnVmLCBjaGFuZ2VzKTs8YnI+CiZndDsrPGJyPgomZ3Q7KyZuYnNwOyZuYnNwOyBtcHN0cmVh bV9lbmNvZGVfdWludChzdHJlYW0sIFNRTF9JTkZPX1JPV19DT1VOVCk7PGJyPgomZ3Q7KyZuYnNw OyZuYnNwOyBtcHN0cmVhbV9lbmNvZGVfdWludChzdHJlYW0sIGRiLSZndDtuQ2hhbmdlKTs8YnI+ CiZndDsmIzE2MDsmIzE2MDsmIzE2MDsmIzE2MDtpZiAoIXN0YWlscV9lbXB0eShhdXRvaW5jX2lk X2xpc3QpKSB7PGJyPgomZ3Q7LSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBidWYgPSBtcF9lbmNv ZGVfdWludChidWYsIFNRTF9JTkZPX0FVVE9JTkNSRU1FTlRfSURTKTs8YnI+CiZndDstJm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7IGJ1ZiA9IG1wX2VuY29kZV9hcnJheShidWYsIGlkX2NvdW50KTs8 YnI+CiZndDsrJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IG1wc3RyZWFtX2VuY29kZV91aW50KHN0 cmVhbSw8YnI+CiZndDsrJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IFNRTF9JTkZPX0FVVE9JTkNSRU1F TlRfSURTKTs8YnI+CiZndDsrJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IG1wc3RyZWFtX2VuY29k ZV9hcnJheShzdHJlYW0sIGlkX2NvdW50KTs8YnI+CiZndDsmIzE2MDsmIzE2MDsmIzE2MDsmIzE2 MDsmIzE2MDsmIzE2MDtzdHJ1Y3QgYXV0b2luY19pZF9lbnRyeSAqaWRfZW50cnk7PGJyPgomZ3Q7 JiMxNjA7JiMxNjA7JiMxNjA7JiMxNjA7JiMxNjA7JiMxNjA7c3RhaWxxX2ZvcmVhY2hfZW50cnko aWRfZW50cnksIGF1dG9pbmNfaWRfbGlzdCwgbGluaykgezxicj4KJmd0Oy0mbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgYnVmID0gaWRfZW50cnktJmd0O2lkICZndDs9IDAgPzxi cj4KJmd0Oy0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgbXBfZW5jb2RlX3VpbnQoYnVmLCBpZF9lbnRyeS0mZ3Q7 aWQpIDo8YnI+CiZndDstJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IG1wX2VuY29kZV9pbnQoYnVmLCBpZF9lbnRy eS0mZ3Q7aWQpOzxicj4KJmd0OysmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg aW50NjRfdCB2YWx1ZSA9IGlkX2VudHJ5LSZndDtpZDs8YnI+CiZndDsrJm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGlmIChpZF9lbnRyeS0mZ3Q7aWQgJmd0Oz0gMCk8YnI+CiZn dDsrJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IG1wc3Ry ZWFtX2VuY29kZV91aW50KHN0cmVhbSwgdmFsdWUpOzxicj4KJmd0OysmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsgZWxzZTxicj4KJmd0OysmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgbXBzdHJlYW1fZW5jb2RlX2ludChzdHJlYW0sIHZh bHVlKTs8YnI+CiZndDsmIzE2MDsmIzE2MDsmIzE2MDsmIzE2MDsmIzE2MDsmIzE2MDt9PGJyPgom Z3Q7JiMxNjA7JiMxNjA7JiMxNjA7JiMxNjA7fTxicj4KJmd0OyYjMTYwOyYjMTYwO308YnI+CiZn dDtkaWZmIC0tZ2l0IGEvc3JjL2JveC9leGVjdXRlLmggYi9zcmMvYm94L2V4ZWN1dGUuaDxicj4K Jmd0O2luZGV4IDVmM2Q1ZWIuLjY1YWM4MWMgMTAwNjQ0PGJyPgomZ3Q7LS0tIGEvc3JjL2JveC9l eGVjdXRlLmg8YnI+CiZndDsrKysgYi9zcmMvYm94L2V4ZWN1dGUuaDxicj4KJmd0O0BAIC00OCwx MCArNDgsMTAgQEAgZW51bSBzcWxfaW5mb19rZXkgezxicj4KJmd0OyYjMTYwO2V4dGVybiBjb25z dCBjaGFyICpzcWxfaW5mb19rZXlfc3Ryc1tdOzxicj4KJmd0Oy1zdHJ1Y3Qgb2J1Zjs8YnI+CiZn dDsmIzE2MDtzdHJ1Y3QgcmVnaW9uOzxicj4KJmd0OyYjMTYwO3N0cnVjdCBzcWxfYmluZDs8YnI+ CiZndDsmIzE2MDtzdHJ1Y3QgeHJvd19oZWFkZXI7PGJyPgomZ3Q7K3N0cnVjdCBtcHN0cmVhbTs8 YnI+CiZndDsmIzE2MDsvKiogRVhFQ1VURSByZXF1ZXN0LiAqLzxicj4KJmd0OyYjMTYwO3N0cnVj dCBzcWxfcmVxdWVzdCB7PGJyPgomZ3Q7QEAgLTEwNSwxMyArMTA1LDE0IEBAIHN0cnVjdCBzcWxf cmVzcG9uc2Ugezxicj4KJmd0OyYjMTYwOyYjMTYwOyogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPgomZ3Q7JiMxNjA7JiMxNjA7KiBAcGFyYW0gcmVz cG9uc2UgRVhFQ1VURSByZXNwb25zZS48YnI+CiZndDsmIzE2MDsmIzE2MDsqIEBwYXJhbVtvdXRd IGtleXMgbnVtYmVyIG9mIGtleXMgaW4gZHVtcGVkIG1hcC48YnI+CiZndDstICogQHBhcmFtIG91 dCBPdXRwdXQgYnVmZmVyLjxicj4KJmd0OysgKiBAcGFyYW0gc3RyZWFtIHN0cmVhbSB0byB3aGVy ZSByZXN1bHQgaXMgd3JpdHRlbi48YnI+CiZndDsmIzE2MDsmIzE2MDsqPGJyPgomZ3Q7JiMxNjA7 JiMxNjA7KiBAcmV0dmFsJm5ic3A7IDAgU3VjY2Vzcy48YnI+CiZndDsmIzE2MDsmIzE2MDsqIEBy ZXR2YWwgLTEgTWVtb3J5IGVycm9yLjxicj4KJmd0OyYjMTYwOyYjMTYwOyovPGJyPgomZ3Q7JiMx NjA7aW50PGJyPgomZ3Q7LXNxbF9yZXNwb25zZV9kdW1wKHN0cnVjdCBzcWxfcmVzcG9uc2UgKnJl c3BvbnNlLCBpbnQgKmtleXMsIHN0cnVjdCBvYnVmICpvdXQpOzxicj4KJmd0OytzcWxfcmVzcG9u c2VfZHVtcChzdHJ1Y3Qgc3FsX3Jlc3BvbnNlICpyZXNwb25zZSwgaW50ICprZXlzLDxicj4KJmd0 OysmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgc3RydWN0IG1wc3RyZWFtICpzdHJlYW0pOzxicj4K Jmd0OyYjMTYwOy8qKjxicj4KJmd0OyYjMTYwOyYjMTYwOyogUGFyc2UgdGhlIEVYRUNVVEUgcmVx dWVzdC48YnI+CiZndDtkaWZmIC0tZ2l0IGEvc3JjL2JveC9pcHJvdG8uY2MgYi9zcmMvYm94L2lw cm90by5jYzxicj4KJmd0O2luZGV4IDdjMTFkMDUuLmIxMTA5MDAgMTAwNjQ0PGJyPgomZ3Q7LS0t IGEvc3JjL2JveC9pcHJvdG8uY2M8YnI+CiZndDsrKysgYi9zcmMvYm94L2lwcm90by5jYzxicj4K Jmd0O0BAIC02MSw2ICs2MSw3IEBAPGJyPgomZ3Q7JiMxNjA7I2luY2x1ZGUgInJtZWFuLmgiPGJy PgomZ3Q7JiMxNjA7I2luY2x1ZGUgImV4ZWN1dGUuaCI8YnI+CiZndDsmIzE2MDsjaW5jbHVkZSAi ZXJyaW5qLmgiPGJyPgomZ3Q7KyNpbmNsdWRlICJtcHN0cmVhbS5oIjxicj4KJmd0OyYjMTYwO2Vu dW0gezxicj4KJmd0OyYjMTYwOyYjMTYwO0lQUk9UT19TQUxUX1NJWkUgPSAzMiw8YnI+CiZndDtA QCAtMTU3MywxMiArMTU3NCwyMCBAQCBlcnJvcjo8YnI+CiZndDsmIzE2MDsmIzE2MDt0eF9yZXBs eV9lcnJvcihtc2cpOzxicj4KJmd0OyYjMTYwO308YnI+CiZndDsrLyoqIENhbGxiYWNrIHRvIGZv cndhcmQgYW5kIGVycm9yIGZyb20gbXBzdHJlYW0gbWV0aG9kcy4gKi88YnI+CiZndDsrc3RhdGlj IHZvaWQ8YnI+CiZndDsrc2V0X2VuY29kZV9lcnJvcih2b2lkICplcnJvcl9jdHgpPGJyPgomZ3Q7 K3s8YnI+CiZndDsrICooYm9vbCAqKWVycm9yX2N0eCA9IHRydWU7PGJyPgomZ3Q7K308YnI+CiZn dDsrPGJyPgomZ3Q7JiMxNjA7c3RhdGljIHZvaWQ8YnI+CiZndDsmIzE2MDt0eF9wcm9jZXNzX3Nx bChzdHJ1Y3QgY21zZyAqbSk8YnI+CiZndDsmIzE2MDt7PGJyPgomZ3Q7JiMxNjA7JiMxNjA7c3Ry dWN0IGlwcm90b19tc2cgKm1zZyA9IHR4X2FjY2VwdF9tc2cobSk7PGJyPgomZ3Q7JiMxNjA7JiMx NjA7c3RydWN0IG9idWYgKm91dDs8YnI+CiZndDsmIzE2MDsmIzE2MDtzdHJ1Y3Qgc3FsX3Jlc3Bv bnNlIHJlc3BvbnNlOzxicj4KJmd0OysgYm9vbCBpc19lcnJvciA9IGZhbHNlOzxicj4KJmd0OyYj MTYwOyYjMTYwO3R4X2ZpYmVyX2luaXQobXNnLSZndDtjb25uZWN0aW9uLSZndDtzZXNzaW9uLCBt c2ctJmd0O2hlYWRlci5zeW5jKTs8YnI+CiZndDtAQCAtMTU5OCwxMCArMTYwNywxNiBAQCB0eF9w cm9jZXNzX3NxbChzdHJ1Y3QgY21zZyAqbSk8YnI+CiZndDsmIzE2MDsmIzE2MDsvKiBQcmVwYXJl IG1lbW9yeSBmb3IgdGhlIGlwcm90byBoZWFkZXIuICovPGJyPgomZ3Q7JiMxNjA7JiMxNjA7aWYg KGlwcm90b19wcmVwYXJlX2hlYWRlcihvdXQsICZhbXA7aGVhZGVyX3N2cCwgSVBST1RPX1NRTF9I RUFERVJfTEVOKSAhPSAwKTxicj4KJmd0OyYjMTYwOyYjMTYwOyYjMTYwOyYjMTYwO2dvdG8gZXJy b3I7PGJyPgomZ3Q7LSBpZiAoc3FsX3Jlc3BvbnNlX2R1bXAoJmFtcDtyZXNwb25zZSwgJmFtcDtr ZXlzLCBvdXQpICE9IDApIHs8YnI+CiZndDsrIHN0cnVjdCBtcHN0cmVhbSBzdHJlYW07PGJyPgom Z3Q7KyBtcHN0cmVhbV9pbml0KCZhbXA7c3RyZWFtLCBvdXQsIG9idWZfcmVzZXJ2ZV9jYiwgb2J1 Zl9hbGxvY19jYiw8YnI+CiZndDsrJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7IHNldF9lbmNvZGVfZXJyb3IsICZhbXA7aXNfZXJyb3IpOzxicj4KJmd0Oysg aWYgKGlzX2Vycm9yKTxicj4KJmd0OysmbmJzcDsmbmJzcDsgZ290byBlcnJvcjs8YnI+CiZndDsr IGlmIChzcWxfcmVzcG9uc2VfZHVtcCgmYW1wO3Jlc3BvbnNlLCAmYW1wO2tleXMsICZhbXA7c3Ry ZWFtKSAhPSAwIHx8IGlzX2Vycm9yKSB7PGJyPgomZ3Q7JiMxNjA7JiMxNjA7JiMxNjA7JiMxNjA7 b2J1Zl9yb2xsYmFja190b19zdnAob3V0LCAmYW1wO2hlYWRlcl9zdnApOzxicj4KJmd0OyYjMTYw OyYjMTYwOyYjMTYwOyYjMTYwO2dvdG8gZXJyb3I7PGJyPgomZ3Q7JiMxNjA7JiMxNjA7fTxicj4K Jmd0OysgbXBzdHJlYW1fZmx1c2goJmFtcDtzdHJlYW0pOzxicj4KJmd0OyYjMTYwOyYjMTYwO2lw cm90b19yZXBseV9zcWwob3V0LCAmYW1wO2hlYWRlcl9zdnAsIHJlc3BvbnNlLnN5bmMsIHNjaGVt YV92ZXJzaW9uLCBrZXlzKTs8YnI+CiZndDsmIzE2MDsmIzE2MDtpcHJvdG9fd3Bvc19jcmVhdGUo JmFtcDttc2ctJmd0O3dwb3MsIG91dCk7PGJyPgomZ3Q7JiMxNjA7JiMxNjA7cmV0dXJuOzxicj4K Jmd0Oy0tIDxicj4KJmd0OzIuNy40PC9wPgo8L0JPRFk+PC9IVE1MPgo= ----ALT--zORfzoMn8suwKEQu4cb9P2AilUafS8dk1543605930--