From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from [87.239.111.99] (localhost [127.0.0.1]) by dev.tarantool.org (Postfix) with ESMTP id ACDDB7232D9; Wed, 6 Dec 2023 18:03:03 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org ACDDB7232D9 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1701874983; bh=VxP7flDWKaJPpnZUv/Y5bJjd9Lq4RG0FRZNW1FdNa48=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=ReJKAPIupI+x8jrmZnbhG1IZRVT8tmclvokspH5KQjwrIxzGOKBTOPxta6O+iNvbs 8kAqHTHWwCUrpRVpupeVXwRVLv3wAoOoIZeO6FctpmTSKJHpf1J+D+vkZVT4ta2tUC GCixHL7Dflk3QoIDD/dt1JQNDztGdm2woTiU04DY= Received: from f481.i.mail.ru (f481.i.mail.ru [45.84.128.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 44621717AAD for ; Wed, 6 Dec 2023 18:03:02 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 44621717AAD Received: by f481.i.mail.ru with local (envelope-from ) id 1rAtQR-0007OH-Sr; Wed, 06 Dec 2023 18:03:00 +0300 Received: by e.mail.ru with HTTP; Wed, 06 Dec 2023 18:02:59 +0300 To: =?UTF-8?B?U2VyZ2V5IEJyb25uaWtvdg==?= MIME-Version: 1.0 X-Mailer: Mail.Ru Mailer 1.0 X-SenderField-ReMsg: 17008290202031312327 X-SenderField-Remind: 0 Date: Wed, 06 Dec 2023 18:02:59 +0300 Message-ID: <1701874979.797663853@f762.i.mail.ru> X-Priority: 3 (Normal) Content-Type: multipart/alternative; boundary="--ALT--e99B2dC09638197faF884A097c8B2e391701874979" In-Reply-To: References: <20231122143534.11330-1-max.kokryashkin@gmail.com> <20231122143534.11330-3-max.kokryashkin@gmail.com> X-Mailru-Src: fe X-7564579A: 646B95376F6C166E X-77F55803: 119C1F4DF6A9251C89EAF21FBB369C359C8CF612B453ECFC9004A0A8FFD797658FD872164937FA4CE9F131D180716DEE0C18A7F6CF9A76B15D1983725C825D9EA3C9DE1583FDCED3 X-C1DE0DAB: 0D63561A33F958A51DCDDD442236F929E2892C34B1429563CB2C5A32736B15EDF87CCE6106E1FC07E67D4AC08A07B9B04CB6874B0BCFF0B8CB5012B2E24CD356 X-C8649E89: 1C3962B70DF3F0AD5177F0B940C8B66ECE892A7B2722663E91682638B966EB3F662256BEEFA9527F1A7185128BA918C11209F850CA39BBF175FE50DF5E9CF49314D966C81C4C154F7C4B91E2CD77912537FD76D11AF80A0D8C05F3EB8A5726835BC25DD4FC8FF013EA455F16B58544A21C197AAF4D2E4732965026E5D17F6739C77C69D99B9914278E50E1F0597A6FD5CD72808BE417F3B9E0E7457915DAA85F X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu530nj6fImhcD4MUrOEAnl0W826KZ9Q+tr5+wYjsrrSY/u8Y3PrTqANeitKFiSd6Yd7yPpbiiZ/d5BsxIjK0jGQgCHUM3Ry2Lt2G3MDkMauH3h0dBdQGj+BB/iPzQYh7XS329fgu+/vnDhJteULR2jlfRmX+aVyHlL+A== X-Mailru-MI: 800 X-Mailru-Sender: 11C2EC085EDE56FA38FD4C59F7EFE40788E7DA3851B42016CDEA629D81366EC42D978F233B53860906CD02445D2D9C8FA2BFD6D8330F0C2D563E610FBBDBB4C842051EA7CBBFB509093DA5C00B83CE8412EB40C6FA10D71EFD657A8799238ED55FEEDEB644C299C0ED14614B50AE0675 X-Mras: OK Subject: Re: [Tarantool-patches] =?utf-8?q?=5BPATCH_luajit_v3_2/3=5D_Cleanup_?= =?utf-8?q?stack_overflow_handling=2E?= X-BeenThere: tarantool-patches@dev.tarantool.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Maxim Kokryashkin via Tarantool-patches Reply-To: =?UTF-8?B?TWF4aW0gS29rcnlhc2hraW4=?= Cc: =?UTF-8?B?TWFrc2ltIEtva3J5YXNoa2lu?= , tarantool-patches@dev.tarantool.org Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" ----ALT--e99B2dC09638197faF884A097c8B2e391701874979 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 CkhpLCBTZXJnZXkhClRoYW5rcyBmb3IgdGhlIHJldmlldyEKwqAgCj7Qn9GP0YLQvdC40YbQsCwg MjQg0L3QvtGP0LHRgNGPIDIwMjMsIDE1OjMwICswMzowMCDQvtGCIFNlcmdleSBCcm9ubmlrb3Yg PHNlcmdleWJAdGFyYW50b29sLm9yZz46Cj7CoAo+SGVsbG8sIE1heAo+Cj50aGFua3MgZm9yIHRo ZSBwYXRjaCEKPgo+U2VlIGEgY291cGxlIG9mIG1pbm9yIGNvbW1lbnRzIGJlbG93Cj4KPlNlcmdl eQo+Cj5PbiAxMS8yMi8yMyAxNzozNSwgTWFrc2ltIEtva3J5YXNoa2luIHdyb3RlOgo+PiBGcm9t OiBNaWtlIFBhbGwgPG1pa2U+Cj4+Cj4+IFJlcG9ydGVkIGJ5IFBldGVyIENhd2xleS4KPj4KPj4g KGNoZXJyeS1waWNrZWQgZnJvbSBjb21taXQgZDJmNmM1NWIwNWM3MTZlNWRiYjQ3OWI3ZTY4NGFi YWVlN2NmNmUxMikKPj4KPj4gQWZ0ZXIgdGhlIHByZXZpb3VzIHBhdGNoLCBpdCBpcyBwb3NzaWJs ZSB0byB0cmlnZ2VyIHRoZQo+PiBgc3RhY2sgb3ZlcmZsb3dgIGVycm9yIHByZW1hdHVyZWx5LiBD b25zaWRlciB0aGUgZm9sbG93aW5nCj4+IHNpdHVhdGlvbjogdGhlcmUgYXJlIGFscmVhZHkgMzMw MDAgc2xvdHMgYWxsb2NhdGVkIG9uIGEgTHVhCj4+IHN0YWNrLCBhbmQgdGhlbiB0aGVyZSBhcmUg MzAgYWRkaXRpb25hbCBzbG90cyBuZWVkZWQuIEluIHRoaXMKPj4gY2FzZSwgdGhlIGFjdHVhbCBh bGxvY2F0ZWQgYW1vdW50IHdvdWxkIGJlIHR3aWNlIHRoZSBhbHJlYWR5Cj4+IGFsbG9jYXRlZCBz aXplLCBzaHJ1bmsgdG8gdGhlIGBMSl9TVEFDS19NQVhFWGAgc2l6ZSwgd2hpY2gKPj4gd291bGQg bGVhZCB0byB0aGUgc3RhY2sgb3ZlcmZsb3cgZXJyb3IsIGRlc3BpdGUgdGhlIGZhY3QgdGhlcmUK Pj4gaXMgcGxlbnR5IG9mIHVudXNlZCBzcGFjZS4gVGhpcyBwYXRjaCBjb21wbGV0ZWx5IHJld29y a3MgdGhlCj4+IGxvZ2ljIG9mIGVycm9yIGhhbmRsaW5nIGR1cmluZyBzdGFjayBncm93dGggdG8g YWRkcmVzcyB0aGUgaXNzdWUuCj4+Cj4+IEFub3RoZXIgaW1wb3J0YW50IHRoaW5nIHRvIG5vdGlj ZSBpcyB0aGF0IHRoZSBgTEpfRVJSX1NUS09WYCBpcwo+PiB0aHJvd24gb25seSBpZiB0aGUgYEwt PnN0YXR1c2AgaXMgYExVQV9PS2AgYW5kIHRoYXQgc3RhdHVzIGlzIHNldAo+PiB0byBgTFVBX0VS UlJVTmAganVzdCBiZWZvcmUgdGhyb3dpbmcgdGhlIGVycm9yLiBUaGUgc3RhdHVzIGlzIHNldAo+ PiB0byBgTFVBX0VSUlJVTmAgdG8gYXZvaWQgdGhlIHNlY29uZCBzdGFjayBvdmVyZmxvdyBkdXJp bmcgdGhlCj4+IGBlcnJfbXNndmAgZXhlY3V0aW9uLgo+Pgo+PiBNYXhpbSBLb2tyeWFzaGtpbjoK Pj4gKiBhZGRlZCB0aGUgZGVzY3JpcHRpb24gYW5kIHRoZSB0ZXN0IGZvciB0aGUgcHJvYmxlbQo+ Pgo+PiBQYXJ0IG9mIHRhcmFudG9vbC90YXJhbnRvb2wjOTE0NQo+PiAtLS0KPj4gc3JjL2xqX3N0 YXRlLmMgfCAxNSArKystLQo+PiAuLi4vbGotOTYyLXByZW1hdHVyZS1zdGFjay1vdmVyZmxvdy50 ZXN0LmMgfCA2MyArKysrKysrKysrKysrKysrKysrCj4+IDIgZmlsZXMgY2hhbmdlZCwgNzQgaW5z ZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKPj4gY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3QvdGFy YW50b29sLWMtdGVzdHMvbGotOTYyLXByZW1hdHVyZS1zdGFjay1vdmVyZmxvdy50ZXN0LmMKPj4K Pj4gZGlmZiAtLWdpdCBhL3NyYy9sal9zdGF0ZS5jIGIvc3JjL2xqX3N0YXRlLmMKPj4gaW5kZXgg NzYxNTNiYWQuLmQ4YTUxMzRjIDEwMDY0NAo+PiAtLS0gYS9zcmMvbGpfc3RhdGUuYwo+PiArKysg Yi9zcmMvbGpfc3RhdGUuYwo+PiBAQCAtMTIxLDggKzEyMSwxNyBAQCB2b2lkIGxqX3N0YXRlX3No cmlua3N0YWNrKGx1YV9TdGF0ZSAqTCwgTVNpemUgdXNlZCkKPj4gdm9pZCBMSl9GQVNUQ0FMTCBs al9zdGF0ZV9ncm93c3RhY2sobHVhX1N0YXRlICpMLCBNU2l6ZSBuZWVkKQo+PiB7Cj4+IE1TaXpl IG47Cj4+IC0gaWYgKEwtPnN0YWNrc2l6ZSA+IExKX1NUQUNLX01BWEVYKSAvKiBPdmVyZmxvdyB3 aGlsZSBoYW5kbGluZyBvdmVyZmxvdz8gKi8KPj4gLSBsal9lcnJfdGhyb3coTCwgTFVBX0VSUkVS Uik7Cj4+ICsgaWYgKEwtPnN0YWNrc2l6ZSA+PSBMSl9TVEFDS19NQVhFWCkgewo+PiArIC8qIDQu IFRocm93ICdlcnJvciBpbiBlcnJvciBoYW5kbGluZycgd2hlbiB3ZSBhcmUgX292ZXJfIHRoZSBs aW1pdC4gKi8KPj4gKyBpZiAoTC0+c3RhY2tzaXplID4gTEpfU1RBQ0tfTUFYRVgpCj4+ICsgbGpf ZXJyX3Rocm93KEwsIExVQV9FUlJFUlIpOyAvKiBEb2VzIG5vdCBpbnZva2UgYW4gZXJyb3IgaGFu ZGxlci4gKi8KPj4gKyAvKiAxLiBXZSBhcmUgX2F0XyB0aGUgbGltaXQgYWZ0ZXIgdGhlIGxhc3Qg Z3Jvd3RoLiAqLwo+PiArIGlmICghTC0+c3RhdHVzKSB7IC8qIDIuIFRocm93ICdzdGFjayBvdmVy ZmxvdycuICovCj4+ICsgTC0+c3RhdHVzID0gTFVBX0VSUlJVTjsgLyogUHJldmVudCBlbmRpbmcg aGVyZSBhZ2FpbiBmb3IgcHVzaGVkIG1zZy4gKi8KPj4gKyBsal9lcnJfbXNnKEwsIExKX0VSUl9T VEtPVik7IC8qIE1heSBpbnZva2UgYW4gZXJyb3IgaGFuZGxlci4gKi8KPj4gKyB9Cj4+ICsgLyog My4gQWRkIHNwYWNlIChvdmVyIHRoZSBsaW1pdCkgZm9yIHB1c2hlZCBtZXNzYWdlIGFuZCBlcnJv ciBoYW5kbGVyLiAqLwo+PiArIH0KPj4gbiA9IEwtPnN0YWNrc2l6ZSArIG5lZWQ7Cj4+IGlmIChu ID4gTEpfU1RBQ0tfTUFYKSB7Cj4+IG4gKz0gMipMVUFfTUlOU1RBQ0s7Cj4+IEBAIC0xMzIsOCAr MTQxLDYgQEAgdm9pZCBMSl9GQVNUQ0FMTCBsal9zdGF0ZV9ncm93c3RhY2sobHVhX1N0YXRlICpM LCBNU2l6ZSBuZWVkKQo+PiBuID0gTEpfU1RBQ0tfTUFYOwo+PiB9Cj4+IHJlc2l6ZXN0YWNrKEws IG4pOwo+PiAtIGlmIChMLT5zdGFja3NpemUgPj0gTEpfU1RBQ0tfTUFYRVgpCj4+IC0gbGpfZXJy X21zZyhMLCBMSl9FUlJfU1RLT1YpOwo+PiB9Cj4+Cj4+IHZvaWQgTEpfRkFTVENBTEwgbGpfc3Rh dGVfZ3Jvd3N0YWNrMShsdWFfU3RhdGUgKkwpCj4+IGRpZmYgLS1naXQgYS90ZXN0L3RhcmFudG9v bC1jLXRlc3RzL2xqLTk2Mi1wcmVtYXR1cmUtc3RhY2stb3ZlcmZsb3cudGVzdC5jIGIvdGVzdC90 YXJhbnRvb2wtYy10ZXN0cy9sai05NjItcHJlbWF0dXJlLXN0YWNrLW92ZXJmbG93LnRlc3QuYwo+ PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMC4uMTJjYjkwMDQKPj4gLS0t IC9kZXYvbnVsbAo+PiArKysgYi90ZXN0L3RhcmFudG9vbC1jLXRlc3RzL2xqLTk2Mi1wcmVtYXR1 cmUtc3RhY2stb3ZlcmZsb3cudGVzdC5jCj4+IEBAIC0wLDAgKzEsNjMgQEAKPj4gKyNpbmNsdWRl ICJsdWEuaCIKPj4gKyNpbmNsdWRlICJsYXV4bGliLmgiCj4+ICsKPj4gKyNpbmNsdWRlICJ0ZXN0 LmgiCj4+ICsjaW5jbHVkZSAidXRpbHMuaCIKPj4gKwo+PiArLyoKPj4gKyAqIFhYWDogVGhlICJs al9vYmouaCIgaGVhZGVyIGlzIGluY2x1ZGVkIHRvIGNhbGN1bGF0ZSB0aGUKPj4gKyAqIG51bWJl ciBvZiBzdGFjayBzbG90cyB1c2VkIGZyb20gdGhlIGJvdHRvbSBvZiB0aGUgc3RhY2suCj4+ICsg Ki8KPj4gKyNpbmNsdWRlICJsal9vYmouaCIKPj4gKwo+PiArc3RhdGljIGludCBjdXJfc2xvdHMg PSAtMTsKPj4gKwo+PiArc3RhdGljIGludCBmaWxsX3N0YWNrKGx1YV9TdGF0ZSAqTCkKPj4gK3sK Pj4gKyBjdXJfc2xvdHMgPSBMLT5iYXNlIC0gdHZyZWYoTC0+c3RhY2spOwo+PiArCj4+ICsgd2hp bGUobHVhX2dldHRvcChMKSA8IExVQUlfTUFYU1RBQ0spIHsKPj4gKyBjdXJfc2xvdHMgKz0gMTsK Pj4gKyBsdWFfcHVzaGludGVnZXIoTCwgNDIpOwo+PiArIH0KPj4gKwo+PiArIHJldHVybiAwOwo+ PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IHByZW1hdHVyZV9zdGFja292ZXJmbG93KHZvaWQgKnRl c3Rfc3RhdGUpCj4+ICt7Cj4+ICsgbHVhX1N0YXRlICpMID0gdGVzdF9zdGF0ZTsKPj4gKyBsdWFf Y3BjYWxsKEwsIGZpbGxfc3RhY2ssIE5VTEwpOwo+PiArIGFzc2VydF90cnVlKGN1cl9zbG90cyA9 PSBMVUFJX01BWFNUQUNLIC0gMSk7Cj4+ICsgcmV0dXJuIFRFU1RfRVhJVF9TVUNDRVNTOwo+PiAr fQo+PiArCj50aGlzIHRlc3RjYXNlIHNob3VsZCBmYWlsIHdpdGggcmV2ZXJ0ZWQgcGF0Y2gsIHJp Z2h0PyBidXQgaXQgaXMgbm90CkFuZCBpdCBkb2VzIGZhaWwuIFRlc3RlZCBvbiBHQzY0L25vbi1H QzY0IGJ1aWxkcyBvbiBMaW51eC9NYWNPUy4KPj4gKy8qCj4+ICsgKiBYWFg6IFRoaXMgdGVzdCBz aG91bGQgZmFpbCBuZWl0aGVyIGJlZm9yZSB0aGUgcGF0Y2gKPj4gKyAqIG5vciBhZnRlciBpdC4K Pgo+SSBwcm9wb3NlIHRvIHNheSBhYm91dCBpdCBpbiBjb21taXQgbWVzc2FnZS4KRml4ZWQsIHRo ZSBicmFuY2ggaXMgZm9yY2UtcHVzaGVkLiBOZXcgY29tbWl0IG1lc3NhZ2U6Cj09PT0KQ2xlYW51 cCBzdGFjayBvdmVyZmxvdyBoYW5kbGluZy4KwqAKUmVwb3J0ZWQgYnkgUGV0ZXIgQ2F3bGV5LgrC oAooY2hlcnJ5LXBpY2tlZCBmcm9tIGNvbW1pdCBkMmY2YzU1YjA1YzcxNmU1ZGJiNDc5YjdlNjg0 YWJhZWU3Y2Y2ZTEyKQrCoApBZnRlciB0aGUgcHJldmlvdXMgcGF0Y2gsIGl0IGlzIHBvc3NpYmxl IHRvIHRyaWdnZXIgdGhlCmBzdGFjayBvdmVyZmxvd2AgZXJyb3IgcHJlbWF0dXJlbHkuIENvbnNp ZGVyIHRoZSBmb2xsb3dpbmcKc2l0dWF0aW9uOiB0aGVyZSBhcmUgYWxyZWFkeSAzMzAwMCBzbG90 cyBhbGxvY2F0ZWQgb24gYSBMdWEKc3RhY2ssIGFuZCB0aGVuIHRoZXJlIGFyZSAzMCBhZGRpdGlv bmFsIHNsb3RzIG5lZWRlZC4gSW4gdGhpcwpjYXNlLCB0aGUgYWN0dWFsIGFsbG9jYXRlZCBhbW91 bnQgd291bGQgYmUgdHdpY2UgdGhlIGFscmVhZHkKYWxsb2NhdGVkIHNpemUsIHNocnVuayB0byB0 aGUgYExKX1NUQUNLX01BWEVYYCBzaXplLCB3aGljaAp3b3VsZCBsZWFkIHRvIHRoZSBzdGFjayBv dmVyZmxvdyBlcnJvciwgZGVzcGl0ZSB0aGUgZmFjdCB0aGVyZQppcyBwbGVudHkgb2YgdW51c2Vk IHNwYWNlLiBUaGlzIHBhdGNoIGNvbXBsZXRlbHkgcmV3b3JrcyB0aGUKbG9naWMgb2YgZXJyb3Ig aGFuZGxpbmcgZHVyaW5nIHN0YWNrIGdyb3d0aCB0byBhZGRyZXNzIHRoZSBpc3N1ZS4KwqAKQW5v dGhlciBpbXBvcnRhbnQgdGhpbmcgdG8gbm90aWNlIGlzIHRoYXQgdGhlIGBMSl9FUlJfU1RLT1Zg IGlzCnRocm93biBvbmx5IGlmIHRoZSBgTC0+c3RhdHVzYCBpcyBgTFVBX09LYCBhbmQgdGhhdCBz dGF0dXMgaXMgc2V0CnRvIGBMVUFfRVJSUlVOYCBqdXN0IGJlZm9yZSB0aHJvd2luZyB0aGUgZXJy b3IuIFRoZSBzdGF0dXMgaXMgc2V0CnRvIGBMVUFfRVJSUlVOYCB0byBhdm9pZCB0aGUgc2Vjb25k IHN0YWNrIG92ZXJmbG93IGR1cmluZyB0aGUKYGVycl9tc2d2YCBleGVjdXRpb24uCsKgClRoZSBg c3RhY2tvdmVyZmxvd19kdXJpbmdfc3RhY2tvdmVyZmxvd2Agc2hvdWxkIGZhaWwgbmVpdGhlcgpi ZWZvcmUgdGhlIHBhdGNoIG5vciBhZnRlciBhbmQgaXMgYWRkZWQgZm9yIHRoZSB0ZXN0IHRvIGJl CmV4aGF1c3RpdmUuCsKgCk1heGltIEtva3J5YXNoa2luOgoqIGFkZGVkIHRoZSBkZXNjcmlwdGlv biBhbmQgdGhlIHRlc3QgZm9yIHRoZSBwcm9ibGVtCsKgClBhcnQgb2YgdGFyYW50b29sL3RhcmFu dG9vbCM5MTQ1Cj09PT0KPgo+V2UgaGF2ZSBhIHJ1bGUgdGhhdCB0ZXN0IG11c3QgZmFpbCB3aXRo b3V0IGJhY2twb3J0ZWQgcGF0Y2gsIHNvIHBhc3NlZAo+dGVzdCBpcyB1bmV4cGVjdGVkIGhlcmUu Cj4KPj4gKyAqLwo+PiArc3RhdGljIGludCBzdGFja292ZXJmbG93X2R1cmluZ19zdGFja292ZXJm bG93KHZvaWQgKnRlc3Rfc3RhdGUpCj4+ICt7Cj4+ICsgbHVhX1N0YXRlICpMID0gdGVzdF9zdGF0 ZTsKPj4gKyAvKgo+PiArICogWFhYOiBgZmlsbF9zdGFja2AgYWN0cyBoZXJlIGFzIGl0cyBvd24g ZXJyb3IgaGFuZGxlciwKPj4gKyAqIGNhdXNpbmcgdGhlIHNlY29uZCBzdGFjayBvdmVyZmxvdy4K Pj4gKyAqLwo+PiArIGx1YV9wdXNoY2Z1bmN0aW9uKEwsIGZpbGxfc3RhY2spOwo+PiArIGx1YV9w dXNoY2Z1bmN0aW9uKEwsIGZpbGxfc3RhY2spOwo+PiArIGludCBzdGF0dXMgPSBsdWFfcGNhbGwo TCwgMCwgMCwgLTIpOwo+PiArIGFzc2VydF90cnVlKHN0YXR1cyA9PSBMVUFfRVJSRVJSKTsKPj4g KyByZXR1cm4gVEVTVF9FWElUX1NVQ0NFU1M7Cj4+ICt9Cj4+ICsKPj4gK2ludCBtYWluKHZvaWQp Cj4+ICt7Cj4+ICsgbHVhX1N0YXRlICpMID0gdXRpbHNfbHVhX2luaXQoKTsKPj4gKyBjb25zdCBz dHJ1Y3QgdGVzdF91bml0IHRncm91cFtdID0gewo+PiArIHRlc3RfdW5pdF9kZWYocHJlbWF0dXJl X3N0YWNrb3ZlcmZsb3cpLAo+PiArIHRlc3RfdW5pdF9kZWYoc3RhY2tvdmVyZmxvd19kdXJpbmdf c3RhY2tvdmVyZmxvdyksCj4+ICsgfTsKPj4gKyBjb25zdCBpbnQgdGVzdF9yZXN1bHQgPSB0ZXN0 X3J1bl9ncm91cCh0Z3JvdXAsIEwpOwo+PiArIHV0aWxzX2x1YV9jbG9zZShMKTsKPj4gKyByZXR1 cm4gdGVzdF9yZXN1bHQ7Cj4+ICt9CsKg ----ALT--e99B2dC09638197faF884A097c8B2e391701874979 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 CjxIVE1MPjxCT0RZPjxkaXY+SGksIFNlcmdleSE8L2Rpdj48ZGl2PlRoYW5rcyBmb3IgdGhlIHJl dmlldyE8L2Rpdj48ZGl2PiZuYnNwOzwvZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVm dDoxcHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPtCf 0Y/RgtC90LjRhtCwLCAyNCDQvdC+0Y/QsdGA0Y8gMjAyMywgMTU6MzAgKzAzOjAwINC+0YIgU2Vy Z2V5IEJyb25uaWtvdiAmbHQ7c2VyZ2V5YkB0YXJhbnRvb2wub3JnJmd0Ozo8YnI+Jm5ic3A7PGRp diBpZD0iIj48ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ciPjxkaXY+PGRpdiBp ZD0ic3R5bGVfMTcwMDgyOTAyMDIwMzEzMTIzMjdfQk9EWSI+SGVsbG8sIE1heDxicj48YnI+dGhh bmtzIGZvciB0aGUgcGF0Y2ghPGJyPjxicj5TZWUgYSBjb3VwbGUgb2YgbWlub3IgY29tbWVudHMg YmVsb3c8YnI+PGJyPlNlcmdleTxicj48YnI+T24gMTEvMjIvMjMgMTc6MzUsIE1ha3NpbSBLb2ty eWFzaGtpbiB3cm90ZTo8YnI+Jmd0OyBGcm9tOiBNaWtlIFBhbGwgJmx0O21pa2UmZ3Q7PGJyPiZn dDs8YnI+Jmd0OyBSZXBvcnRlZCBieSBQZXRlciBDYXdsZXkuPGJyPiZndDs8YnI+Jmd0OyAoY2hl cnJ5LXBpY2tlZCBmcm9tIGNvbW1pdCBkMmY2YzU1YjA1YzcxNmU1ZGJiNDc5YjdlNjg0YWJhZWU3 Y2Y2ZTEyKTxicj4mZ3Q7PGJyPiZndDsgQWZ0ZXIgdGhlIHByZXZpb3VzIHBhdGNoLCBpdCBpcyBw b3NzaWJsZSB0byB0cmlnZ2VyIHRoZTxicj4mZ3Q7IGBzdGFjayBvdmVyZmxvd2AgZXJyb3IgcHJl bWF0dXJlbHkuIENvbnNpZGVyIHRoZSBmb2xsb3dpbmc8YnI+Jmd0OyBzaXR1YXRpb246IHRoZXJl IGFyZSBhbHJlYWR5IDMzMDAwIHNsb3RzIGFsbG9jYXRlZCBvbiBhIEx1YTxicj4mZ3Q7IHN0YWNr LCBhbmQgdGhlbiB0aGVyZSBhcmUgMzAgYWRkaXRpb25hbCBzbG90cyBuZWVkZWQuIEluIHRoaXM8 YnI+Jmd0OyBjYXNlLCB0aGUgYWN0dWFsIGFsbG9jYXRlZCBhbW91bnQgd291bGQgYmUgdHdpY2Ug dGhlIGFscmVhZHk8YnI+Jmd0OyBhbGxvY2F0ZWQgc2l6ZSwgc2hydW5rIHRvIHRoZSBgTEpfU1RB Q0tfTUFYRVhgIHNpemUsIHdoaWNoPGJyPiZndDsgd291bGQgbGVhZCB0byB0aGUgc3RhY2sgb3Zl cmZsb3cgZXJyb3IsIGRlc3BpdGUgdGhlIGZhY3QgdGhlcmU8YnI+Jmd0OyBpcyBwbGVudHkgb2Yg dW51c2VkIHNwYWNlLiBUaGlzIHBhdGNoIGNvbXBsZXRlbHkgcmV3b3JrcyB0aGU8YnI+Jmd0OyBs b2dpYyBvZiBlcnJvciBoYW5kbGluZyBkdXJpbmcgc3RhY2sgZ3Jvd3RoIHRvIGFkZHJlc3MgdGhl IGlzc3VlLjxicj4mZ3Q7PGJyPiZndDsgQW5vdGhlciBpbXBvcnRhbnQgdGhpbmcgdG8gbm90aWNl IGlzIHRoYXQgdGhlIGBMSl9FUlJfU1RLT1ZgIGlzPGJyPiZndDsgdGhyb3duIG9ubHkgaWYgdGhl IGBMLSZndDtzdGF0dXNgIGlzIGBMVUFfT0tgIGFuZCB0aGF0IHN0YXR1cyBpcyBzZXQ8YnI+Jmd0 OyB0byBgTFVBX0VSUlJVTmAganVzdCBiZWZvcmUgdGhyb3dpbmcgdGhlIGVycm9yLiBUaGUgc3Rh dHVzIGlzIHNldDxicj4mZ3Q7IHRvIGBMVUFfRVJSUlVOYCB0byBhdm9pZCB0aGUgc2Vjb25kIHN0 YWNrIG92ZXJmbG93IGR1cmluZyB0aGU8YnI+Jmd0OyBgZXJyX21zZ3ZgIGV4ZWN1dGlvbi48YnI+ Jmd0Ozxicj4mZ3Q7IE1heGltIEtva3J5YXNoa2luOjxicj4mZ3Q7ICogYWRkZWQgdGhlIGRlc2Ny aXB0aW9uIGFuZCB0aGUgdGVzdCBmb3IgdGhlIHByb2JsZW08YnI+Jmd0Ozxicj4mZ3Q7IFBhcnQg b2YgdGFyYW50b29sL3RhcmFudG9vbCM5MTQ1PGJyPiZndDsgLS0tPGJyPiZndDsgc3JjL2xqX3N0 YXRlLmMgfCAxNSArKystLTxicj4mZ3Q7IC4uLi9sai05NjItcHJlbWF0dXJlLXN0YWNrLW92ZXJm bG93LnRlc3QuYyB8IDYzICsrKysrKysrKysrKysrKysrKys8YnI+Jmd0OyAyIGZpbGVzIGNoYW5n ZWQsIDc0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pPGJyPiZndDsgY3JlYXRlIG1vZGUg MTAwNjQ0IHRlc3QvdGFyYW50b29sLWMtdGVzdHMvbGotOTYyLXByZW1hdHVyZS1zdGFjay1vdmVy Zmxvdy50ZXN0LmM8YnI+Jmd0Ozxicj4mZ3Q7IGRpZmYgLS1naXQgYS9zcmMvbGpfc3RhdGUuYyBi L3NyYy9sal9zdGF0ZS5jPGJyPiZndDsgaW5kZXggNzYxNTNiYWQuLmQ4YTUxMzRjIDEwMDY0NDxi cj4mZ3Q7IC0tLSBhL3NyYy9sal9zdGF0ZS5jPGJyPiZndDsgKysrIGIvc3JjL2xqX3N0YXRlLmM8 YnI+Jmd0OyBAQCAtMTIxLDggKzEyMSwxNyBAQCB2b2lkIGxqX3N0YXRlX3Nocmlua3N0YWNrKGx1 YV9TdGF0ZSAqTCwgTVNpemUgdXNlZCk8YnI+Jmd0OyB2b2lkIExKX0ZBU1RDQUxMIGxqX3N0YXRl X2dyb3dzdGFjayhsdWFfU3RhdGUgKkwsIE1TaXplIG5lZWQpPGJyPiZndDsgezxicj4mZ3Q7IE1T aXplIG47PGJyPiZndDsgLSBpZiAoTC0mZ3Q7c3RhY2tzaXplICZndDsgTEpfU1RBQ0tfTUFYRVgp IC8qIE92ZXJmbG93IHdoaWxlIGhhbmRsaW5nIG92ZXJmbG93PyAqLzxicj4mZ3Q7IC0gbGpfZXJy X3Rocm93KEwsIExVQV9FUlJFUlIpOzxicj4mZ3Q7ICsgaWYgKEwtJmd0O3N0YWNrc2l6ZSAmZ3Q7 PSBMSl9TVEFDS19NQVhFWCkgezxicj4mZ3Q7ICsgLyogNC4gVGhyb3cgJ2Vycm9yIGluIGVycm9y IGhhbmRsaW5nJyB3aGVuIHdlIGFyZSBfb3Zlcl8gdGhlIGxpbWl0LiAqLzxicj4mZ3Q7ICsgaWYg KEwtJmd0O3N0YWNrc2l6ZSAmZ3Q7IExKX1NUQUNLX01BWEVYKTxicj4mZ3Q7ICsgbGpfZXJyX3Ro cm93KEwsIExVQV9FUlJFUlIpOyAvKiBEb2VzIG5vdCBpbnZva2UgYW4gZXJyb3IgaGFuZGxlci4g Ki88YnI+Jmd0OyArIC8qIDEuIFdlIGFyZSBfYXRfIHRoZSBsaW1pdCBhZnRlciB0aGUgbGFzdCBn cm93dGguICovPGJyPiZndDsgKyBpZiAoIUwtJmd0O3N0YXR1cykgeyAvKiAyLiBUaHJvdyAnc3Rh Y2sgb3ZlcmZsb3cnLiAqLzxicj4mZ3Q7ICsgTC0mZ3Q7c3RhdHVzID0gTFVBX0VSUlJVTjsgLyog UHJldmVudCBlbmRpbmcgaGVyZSBhZ2FpbiBmb3IgcHVzaGVkIG1zZy4gKi88YnI+Jmd0OyArIGxq X2Vycl9tc2coTCwgTEpfRVJSX1NUS09WKTsgLyogTWF5IGludm9rZSBhbiBlcnJvciBoYW5kbGVy LiAqLzxicj4mZ3Q7ICsgfTxicj4mZ3Q7ICsgLyogMy4gQWRkIHNwYWNlIChvdmVyIHRoZSBsaW1p dCkgZm9yIHB1c2hlZCBtZXNzYWdlIGFuZCBlcnJvciBoYW5kbGVyLiAqLzxicj4mZ3Q7ICsgfTxi cj4mZ3Q7IG4gPSBMLSZndDtzdGFja3NpemUgKyBuZWVkOzxicj4mZ3Q7IGlmIChuICZndDsgTEpf U1RBQ0tfTUFYKSB7PGJyPiZndDsgbiArPSAyKkxVQV9NSU5TVEFDSzs8YnI+Jmd0OyBAQCAtMTMy LDggKzE0MSw2IEBAIHZvaWQgTEpfRkFTVENBTEwgbGpfc3RhdGVfZ3Jvd3N0YWNrKGx1YV9TdGF0 ZSAqTCwgTVNpemUgbmVlZCk8YnI+Jmd0OyBuID0gTEpfU1RBQ0tfTUFYOzxicj4mZ3Q7IH08YnI+ Jmd0OyByZXNpemVzdGFjayhMLCBuKTs8YnI+Jmd0OyAtIGlmIChMLSZndDtzdGFja3NpemUgJmd0 Oz0gTEpfU1RBQ0tfTUFYRVgpPGJyPiZndDsgLSBsal9lcnJfbXNnKEwsIExKX0VSUl9TVEtPVik7 PGJyPiZndDsgfTxicj4mZ3Q7PGJyPiZndDsgdm9pZCBMSl9GQVNUQ0FMTCBsal9zdGF0ZV9ncm93 c3RhY2sxKGx1YV9TdGF0ZSAqTCk8YnI+Jmd0OyBkaWZmIC0tZ2l0IGEvdGVzdC90YXJhbnRvb2wt Yy10ZXN0cy9sai05NjItcHJlbWF0dXJlLXN0YWNrLW92ZXJmbG93LnRlc3QuYyBiL3Rlc3QvdGFy YW50b29sLWMtdGVzdHMvbGotOTYyLXByZW1hdHVyZS1zdGFjay1vdmVyZmxvdy50ZXN0LmM8YnI+ Jmd0OyBuZXcgZmlsZSBtb2RlIDEwMDY0NDxicj4mZ3Q7IGluZGV4IDAwMDAwMDAwLi4xMmNiOTAw NDxicj4mZ3Q7IC0tLSAvZGV2L251bGw8YnI+Jmd0OyArKysgYi90ZXN0L3RhcmFudG9vbC1jLXRl c3RzL2xqLTk2Mi1wcmVtYXR1cmUtc3RhY2stb3ZlcmZsb3cudGVzdC5jPGJyPiZndDsgQEAgLTAs MCArMSw2MyBAQDxicj4mZ3Q7ICsjaW5jbHVkZSAibHVhLmgiPGJyPiZndDsgKyNpbmNsdWRlICJs YXV4bGliLmgiPGJyPiZndDsgKzxicj4mZ3Q7ICsjaW5jbHVkZSAidGVzdC5oIjxicj4mZ3Q7ICsj aW5jbHVkZSAidXRpbHMuaCI8YnI+Jmd0OyArPGJyPiZndDsgKy8qPGJyPiZndDsgKyAqIFhYWDog VGhlICJsal9vYmouaCIgaGVhZGVyIGlzIGluY2x1ZGVkIHRvIGNhbGN1bGF0ZSB0aGU8YnI+Jmd0 OyArICogbnVtYmVyIG9mIHN0YWNrIHNsb3RzIHVzZWQgZnJvbSB0aGUgYm90dG9tIG9mIHRoZSBz dGFjay48YnI+Jmd0OyArICovPGJyPiZndDsgKyNpbmNsdWRlICJsal9vYmouaCI8YnI+Jmd0OyAr PGJyPiZndDsgK3N0YXRpYyBpbnQgY3VyX3Nsb3RzID0gLTE7PGJyPiZndDsgKzxicj4mZ3Q7ICtz dGF0aWMgaW50IGZpbGxfc3RhY2sobHVhX1N0YXRlICpMKTxicj4mZ3Q7ICt7PGJyPiZndDsgKyBj dXJfc2xvdHMgPSBMLSZndDtiYXNlIC0gdHZyZWYoTC0mZ3Q7c3RhY2spOzxicj4mZ3Q7ICs8YnI+ Jmd0OyArIHdoaWxlKGx1YV9nZXR0b3AoTCkgJmx0OyBMVUFJX01BWFNUQUNLKSB7PGJyPiZndDsg KyBjdXJfc2xvdHMgKz0gMTs8YnI+Jmd0OyArIGx1YV9wdXNoaW50ZWdlcihMLCA0Mik7PGJyPiZn dDsgKyB9PGJyPiZndDsgKzxicj4mZ3Q7ICsgcmV0dXJuIDA7PGJyPiZndDsgK308YnI+Jmd0OyAr PGJyPiZndDsgK3N0YXRpYyBpbnQgcHJlbWF0dXJlX3N0YWNrb3ZlcmZsb3codm9pZCAqdGVzdF9z dGF0ZSk8YnI+Jmd0OyArezxicj4mZ3Q7ICsgbHVhX1N0YXRlICpMID0gdGVzdF9zdGF0ZTs8YnI+ Jmd0OyArIGx1YV9jcGNhbGwoTCwgZmlsbF9zdGFjaywgTlVMTCk7PGJyPiZndDsgKyBhc3NlcnRf dHJ1ZShjdXJfc2xvdHMgPT0gTFVBSV9NQVhTVEFDSyAtIDEpOzxicj4mZ3Q7ICsgcmV0dXJuIFRF U1RfRVhJVF9TVUNDRVNTOzxicj4mZ3Q7ICt9PGJyPiZndDsgKzxicj50aGlzIHRlc3RjYXNlIHNo b3VsZCBmYWlsIHdpdGggcmV2ZXJ0ZWQgcGF0Y2gsIHJpZ2h0PyBidXQgaXQgaXMgbm90PC9kaXY+ PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+QW5kIGl0IGRvZXMgZmFpbC4gVGVz dGVkIG9uIEdDNjQvbm9uLUdDNjQgYnVpbGRzIG9uIExpbnV4L01hY09TLjwvZGl2PjxibG9ja3F1 b3RlIHN0eWxlPSJib3JkZXItbGVmdDoxcHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBh ZGRpbmc6MCAwIDAgMTBweDsiPjxkaXY+PGRpdiBjbGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ct bXNnIj48ZGl2PjxkaXY+Jmd0OyArLyo8YnI+Jmd0OyArICogWFhYOiBUaGlzIHRlc3Qgc2hvdWxk IGZhaWwgbmVpdGhlciBiZWZvcmUgdGhlIHBhdGNoPGJyPiZndDsgKyAqIG5vciBhZnRlciBpdC48 YnI+PGJyPkkgcHJvcG9zZSB0byBzYXkgYWJvdXQgaXQgaW4gY29tbWl0IG1lc3NhZ2UuPC9kaXY+ PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+Rml4ZWQsIHRoZSBicmFuY2ggaXMg Zm9yY2UtcHVzaGVkLiBOZXcgY29tbWl0IG1lc3NhZ2U6PC9kaXY+PGRpdj49PT09PC9kaXY+PGRp dj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IHZhcigtLXZrdWktLW9jdGF2aXVzX2ZvbnRfZmFt aWx5X2dsb2JhbCwgdmFyKC0tdmt1aS0tZm9udF9mYW1pbHlfYmFzZSwgSGVsdmV0aWNhLCBBcmlh bCwgc2Fucy1zZXJpZikpOyBsZXR0ZXItc3BhY2luZzogdmFyKC0tdmt1aS0tZm9udF90ZXh0LS1s ZXR0ZXJfc3BhY2luZy0tcmVndWxhciwgbm9ybWFsKTsiPkNsZWFudXAgc3RhY2sgb3ZlcmZsb3cg aGFuZGxpbmcuPC9zcGFuPjxkaXY+Jm5ic3A7PC9kaXY+PGRpdj48ZGl2PlJlcG9ydGVkIGJ5IFBl dGVyIENhd2xleS48L2Rpdj48L2Rpdj48ZGl2PiZuYnNwOzwvZGl2PjxkaXY+PGRpdj4oY2hlcnJ5 LXBpY2tlZCBmcm9tIGNvbW1pdCBkMmY2YzU1YjA1YzcxNmU1ZGJiNDc5YjdlNjg0YWJhZWU3Y2Y2 ZTEyKTwvZGl2PjwvZGl2PjxkaXY+Jm5ic3A7PC9kaXY+PGRpdj48ZGl2PkFmdGVyIHRoZSBwcmV2 aW91cyBwYXRjaCwgaXQgaXMgcG9zc2libGUgdG8gdHJpZ2dlciB0aGU8L2Rpdj48ZGl2PmBzdGFj ayBvdmVyZmxvd2AgZXJyb3IgcHJlbWF0dXJlbHkuIENvbnNpZGVyIHRoZSBmb2xsb3dpbmc8L2Rp dj48ZGl2PnNpdHVhdGlvbjogdGhlcmUgYXJlIGFscmVhZHkgMzMwMDAgc2xvdHMgYWxsb2NhdGVk IG9uIGEgTHVhPC9kaXY+PGRpdj5zdGFjaywgYW5kIHRoZW4gdGhlcmUgYXJlIDMwIGFkZGl0aW9u YWwgc2xvdHMgbmVlZGVkLiBJbiB0aGlzPC9kaXY+PGRpdj5jYXNlLCB0aGUgYWN0dWFsIGFsbG9j YXRlZCBhbW91bnQgd291bGQgYmUgdHdpY2UgdGhlIGFscmVhZHk8L2Rpdj48ZGl2PmFsbG9jYXRl ZCBzaXplLCBzaHJ1bmsgdG8gdGhlIGBMSl9TVEFDS19NQVhFWGAgc2l6ZSwgd2hpY2g8L2Rpdj48 ZGl2PndvdWxkIGxlYWQgdG8gdGhlIHN0YWNrIG92ZXJmbG93IGVycm9yLCBkZXNwaXRlIHRoZSBm YWN0IHRoZXJlPC9kaXY+PGRpdj5pcyBwbGVudHkgb2YgdW51c2VkIHNwYWNlLiBUaGlzIHBhdGNo IGNvbXBsZXRlbHkgcmV3b3JrcyB0aGU8L2Rpdj48ZGl2PmxvZ2ljIG9mIGVycm9yIGhhbmRsaW5n IGR1cmluZyBzdGFjayBncm93dGggdG8gYWRkcmVzcyB0aGUgaXNzdWUuPC9kaXY+PC9kaXY+PGRp dj4mbmJzcDs8L2Rpdj48ZGl2PjxkaXY+QW5vdGhlciBpbXBvcnRhbnQgdGhpbmcgdG8gbm90aWNl IGlzIHRoYXQgdGhlIGBMSl9FUlJfU1RLT1ZgIGlzPC9kaXY+PGRpdj50aHJvd24gb25seSBpZiB0 aGUgYEwtJmd0O3N0YXR1c2AgaXMgYExVQV9PS2AgYW5kIHRoYXQgc3RhdHVzIGlzIHNldDwvZGl2 PjxkaXY+dG8gYExVQV9FUlJSVU5gIGp1c3QgYmVmb3JlIHRocm93aW5nIHRoZSBlcnJvci4gVGhl IHN0YXR1cyBpcyBzZXQ8L2Rpdj48ZGl2PnRvIGBMVUFfRVJSUlVOYCB0byBhdm9pZCB0aGUgc2Vj b25kIHN0YWNrIG92ZXJmbG93IGR1cmluZyB0aGU8L2Rpdj48ZGl2PmBlcnJfbXNndmAgZXhlY3V0 aW9uLjwvZGl2PjwvZGl2PjxkaXY+Jm5ic3A7PC9kaXY+PGRpdj48ZGl2PlRoZSBgc3RhY2tvdmVy Zmxvd19kdXJpbmdfc3RhY2tvdmVyZmxvd2Agc2hvdWxkIGZhaWwgbmVpdGhlcjwvZGl2PjxkaXY+ YmVmb3JlIHRoZSBwYXRjaCBub3IgYWZ0ZXIgYW5kIGlzIGFkZGVkIGZvciB0aGUgdGVzdCB0byBi ZTwvZGl2PjxkaXY+ZXhoYXVzdGl2ZS48L2Rpdj48L2Rpdj48ZGl2PiZuYnNwOzwvZGl2PjxkaXY+ PGRpdj5NYXhpbSBLb2tyeWFzaGtpbjo8L2Rpdj48ZGl2PiogYWRkZWQgdGhlIGRlc2NyaXB0aW9u IGFuZCB0aGUgdGVzdCBmb3IgdGhlIHByb2JsZW08L2Rpdj48L2Rpdj48ZGl2PiZuYnNwOzwvZGl2 PjxkaXY+PGRpdj5QYXJ0IG9mIHRhcmFudG9vbC90YXJhbnRvb2wjOTE0NTwvZGl2PjxkaXY+PT09 PTwvZGl2PjwvZGl2PjwvZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVmdDoxcHggc29s aWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPjxkaXY+PGRpdiBj bGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48ZGl2PjxkaXY+PGJyPldlIGhhdmUgYSBy dWxlIHRoYXQgdGVzdCBtdXN0IGZhaWwgd2l0aG91dCBiYWNrcG9ydGVkIHBhdGNoLCBzbyBwYXNz ZWQ8YnI+dGVzdCBpcyB1bmV4cGVjdGVkIGhlcmUuPGJyPjxicj4mZ3Q7ICsgKi88YnI+Jmd0OyAr c3RhdGljIGludCBzdGFja292ZXJmbG93X2R1cmluZ19zdGFja292ZXJmbG93KHZvaWQgKnRlc3Rf c3RhdGUpPGJyPiZndDsgK3s8YnI+Jmd0OyArIGx1YV9TdGF0ZSAqTCA9IHRlc3Rfc3RhdGU7PGJy PiZndDsgKyAvKjxicj4mZ3Q7ICsgKiBYWFg6IGBmaWxsX3N0YWNrYCBhY3RzIGhlcmUgYXMgaXRz IG93biBlcnJvciBoYW5kbGVyLDxicj4mZ3Q7ICsgKiBjYXVzaW5nIHRoZSBzZWNvbmQgc3RhY2sg b3ZlcmZsb3cuPGJyPiZndDsgKyAqLzxicj4mZ3Q7ICsgbHVhX3B1c2hjZnVuY3Rpb24oTCwgZmls bF9zdGFjayk7PGJyPiZndDsgKyBsdWFfcHVzaGNmdW5jdGlvbihMLCBmaWxsX3N0YWNrKTs8YnI+ Jmd0OyArIGludCBzdGF0dXMgPSBsdWFfcGNhbGwoTCwgMCwgMCwgLTIpOzxicj4mZ3Q7ICsgYXNz ZXJ0X3RydWUoc3RhdHVzID09IExVQV9FUlJFUlIpOzxicj4mZ3Q7ICsgcmV0dXJuIFRFU1RfRVhJ VF9TVUNDRVNTOzxicj4mZ3Q7ICt9PGJyPiZndDsgKzxicj4mZ3Q7ICtpbnQgbWFpbih2b2lkKTxi cj4mZ3Q7ICt7PGJyPiZndDsgKyBsdWFfU3RhdGUgKkwgPSB1dGlsc19sdWFfaW5pdCgpOzxicj4m Z3Q7ICsgY29uc3Qgc3RydWN0IHRlc3RfdW5pdCB0Z3JvdXBbXSA9IHs8YnI+Jmd0OyArIHRlc3Rf dW5pdF9kZWYocHJlbWF0dXJlX3N0YWNrb3ZlcmZsb3cpLDxicj4mZ3Q7ICsgdGVzdF91bml0X2Rl ZihzdGFja292ZXJmbG93X2R1cmluZ19zdGFja292ZXJmbG93KSw8YnI+Jmd0OyArIH07PGJyPiZn dDsgKyBjb25zdCBpbnQgdGVzdF9yZXN1bHQgPSB0ZXN0X3J1bl9ncm91cCh0Z3JvdXAsIEwpOzxi cj4mZ3Q7ICsgdXRpbHNfbHVhX2Nsb3NlKEwpOzxicj4mZ3Q7ICsgcmV0dXJuIHRlc3RfcmVzdWx0 Ozxicj4mZ3Q7ICt9PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+Jm5i c3A7PC9kaXY+PC9CT0RZPjwvSFRNTD4K ----ALT--e99B2dC09638197faF884A097c8B2e391701874979--