From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 643D34433B for ; Tue, 6 Sep 2022 08:12:35 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9827368BA9D; Tue, 6 Sep 2022 11:12:33 +0300 (EEST) Received: from loongson.cn (mail.loongson.cn [114.242.206.163]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C66B168BA7A for ; Tue, 6 Sep 2022 11:12:26 +0300 (EEST) Received: from smtpclient.apple (unknown [202.141.160.96]) by localhost.localdomain (Coremail) with SMTP id AQAAf8BxHGvmABdjRZESAA--.2656S2; Tue, 06 Sep 2022 16:12:23 +0800 (CST) Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.80.82.1.1\)) From: Shiyou Yin In-Reply-To: Date: Tue, 6 Sep 2022 16:12:21 +0800 Message-Id: References: <20220829112656.9229-1-chenhao@loongson.cn> <20220829112656.9229-4-chenhao@loongson.cn> To: FFmpeg development discussions and patches X-Mailer: Apple Mail (2.3696.80.82.1.1) X-CM-TRANSID: AQAAf8BxHGvmABdjRZESAA--.2656S2 X-Coremail-Antispam: 1UD129KBjvAXoWfuF43AF43Zr4xGF4UAr4UXFb_yoW5Gw4UAo Z7tw4Ivwn7uw13Ar1DJr1kJF10kw4Dur4DXw4UtwsFva1rXFyYkr4vya1YyFZrZan7uF1x Ja4UXFWFya45Wwn5n29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7v73VFW2AGmfu7bjvjm3 AaLaJ3UjIYCTnIWjp_UUUYb7k0a2IF6w4kM7kC6x804xWl14x267AKxVWUJVW8JwAFc2x0 x2IEx4CE42xK8VAvwI8IcIk0rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj4 1l84x0c7CEw4AK67xGY2AK021l84ACjcxK6xIIjxv20xvE14v26r4j6ryUM28EF7xvwVC0 I7IYx2IY6xkF7I0E14v26F4j6r4UJwA2z4x0Y4vEx4A2jsIE14v26F4UJVW0owA2z4x0Y4 vEx4A2jsIEc7CjxVAFwI0_GcCE3s1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG64xv F2IEw4CE5I8CrVC2j2WlYx0E2Ix0cI8IcVAFwI0_Jr0_Jr4lYx0Ex4A2jsIE14v26r1j6r 4UMcvjeVCFs4IE7xkEbVWUJVW8JwACjcxG0xvY0x0EwIxGrwCY02Avz4vE14v_GFyl42xK 82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4xG67AKxVWUJVWUGw C20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r1Y6r17MIIYrxkI7VAKI48J MIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I0E14v26r1j6r4UMI IF0xvE42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVWUJVW8JwCI42IY6I8E 87Iv6xkF7I0E14v26r1j6r4UYxBIdaVFxhVjvjDU0xZFpf9x07bFHqxUUUUU= X-CM-SenderInfo: p1lq2x5l1r3gtki6z05rqj20fqof0/ Subject: Re: [FFmpeg-devel] [PATCH v1 3/3] swscale/la: Add output_lasx.c file. X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: andreas.rheinhardt@outlook.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Cj4gMjAyMuW5tDjmnIgyOeaXpSAyMDozMO+8jEFuZHJlYXMgUmhlaW5oYXJkdCA8YW5kcmVhcy5y aGVpbmhhcmR0QG91dGxvb2suY29tPiDlhpnpgZPvvJoKPiAKPiBIYW8gQ2hlbjoKPj4gZmZtcGVn IC1pIH4vbWVkaWEvMV9oMjY0XzEwODBwXzMwZnBzXzNNYnBzLm1wNCAtZiByYXd2aWRlbyAtcyA2 NDB4NDgwIC1waXhfZm10Cj4+IHJnYjI0IC15IC9kZXYvbnVsbCAtYW4KPj4gYmVmb3JlOiAxNTBm cHMKPj4gYWZ0ZXI6ICAxODNmcHMKPj4gCj4+IFNpZ25lZC1vZmYtYnk6IEhhbyBDaGVuIDxjaGVu aGFvQGxvb25nc29uLmNuPgo+PiAtLS0KPj4gbGlic3dzY2FsZS9sb29uZ2FyY2gvTWFrZWZpbGUg ICAgICAgICAgICAgICAgIHwgICAgMyArLQo+PiBsaWJzd3NjYWxlL2xvb25nYXJjaC9vdXRwdXRf bGFzeC5jICAgICAgICAgICAgfCAxOTgyICsrKysrKysrKysrKysrKysrCj4+IGxpYnN3c2NhbGUv bG9vbmdhcmNoL3N3c2NhbGVfaW5pdF9sb29uZ2FyY2guYyB8ICAgIDMgKwo+PiBsaWJzd3NjYWxl L2xvb25nYXJjaC9zd3NjYWxlX2xvb25nYXJjaC5oICAgICAgfCAgICA2ICsKPj4gNCBmaWxlcyBj aGFuZ2VkLCAxOTkzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPj4gY3JlYXRlIG1vZGUg MTAwNjQ0IGxpYnN3c2NhbGUvbG9vbmdhcmNoL291dHB1dF9sYXN4LmMKPj4gCj4+IGRpZmYgLS1n aXQgYS9saWJzd3NjYWxlL2xvb25nYXJjaC9NYWtlZmlsZSBiL2xpYnN3c2NhbGUvbG9vbmdhcmNo L01ha2VmaWxlCj4+IGluZGV4IDQzNDU5NzE1MTQuLjU0ZDQ4YjNkZTAgMTAwNjQ0Cj4+IC0tLSBh L2xpYnN3c2NhbGUvbG9vbmdhcmNoL01ha2VmaWxlCj4+ICsrKyBiL2xpYnN3c2NhbGUvbG9vbmdh cmNoL01ha2VmaWxlCj4+IEBAIC0yLDQgKzIsNSBAQCBPQkpTLSQoQ09ORklHX1NXU0NBTEUpICAg ICAgKz0gbG9vbmdhcmNoL3N3c2NhbGVfaW5pdF9sb29uZ2FyY2gubwo+PiBMQVNYLU9CSlMtJChD T05GSUdfU1dTQ0FMRSkgKz0gbG9vbmdhcmNoL3N3c2NhbGVfbGFzeC5vIFwKPj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGxvb25nYXJjaC9pbnB1dF9sYXN4Lm8gICBcCj4+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsb29uZ2FyY2gveXV2MnJnYl9sYXN4Lm8gXAo+PiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb25nYXJjaC9yZ2IycmdiX2xhc3gubwo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb25nYXJjaC9yZ2IycmdiX2xhc3gu byBcCj4+ICsJCQkJCQkJICAgbG9vbmdhcmNoL291dHB1dF9sYXN4Lm8KPj4gZGlmZiAtLWdpdCBh L2xpYnN3c2NhbGUvbG9vbmdhcmNoL291dHB1dF9sYXN4LmMgYi9saWJzd3NjYWxlL2xvb25nYXJj aC9vdXRwdXRfbGFzeC5jCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAw MDAuLjE5ZjgyNjkyZmYKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9saWJzd3NjYWxlL2xvb25n YXJjaC9vdXRwdXRfbGFzeC5jCj4+IEBAIC0wLDAgKzEsMTk4MiBAQAo+PiArLyoKPj4gKyAqIENv cHlyaWdodCAoQykgMjAyMiBMb29uZ3NvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uIExpbWl0ZWQK Pj4gKyAqIENvbnRyaWJ1dGVkIGJ5IEhhbyBDaGVuKGNoZW5oYW9AbG9vbmdzb24uY24pCj4+ICsg Kgo+PiArICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgo+PiArICoKPj4gKyAqIEZGbXBl ZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPj4gKyAq IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs aWMKPj4gKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlcgo+PiArICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4+ICsgKgo+PiArICogRkZtcGVnIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4+ICsgKiBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv Zgo+PiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZSBHTlUKPj4gKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCj4+ICsgKgo+PiArICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+PiArICogTGljZW5zZSBhbG9u ZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+PiArICog Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9u LCBNQSAwMjExMC0xMzAxIFVTQQo+PiArICovCj4+ICsKPj4gKyNpbmNsdWRlICJzd3NjYWxlX2xv b25nYXJjaC5oIgo+PiArI2luY2x1ZGUgImxpYmF2dXRpbC9sb29uZ2FyY2gvbG9vbmdzb25faW50 cmluc2ljcy5oIgo+PiArCj4+ICt2b2lkIGZmX3l1djJwbGFuZVhfOF9sYXN4KGNvbnN0IGludDE2 X3QgKmZpbHRlciwgaW50IGZpbHRlclNpemUsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGludDE2X3QgKipzcmMsIHVpbnQ4X3QgKmRlc3QsIGludCBkc3RXLAo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpkaXRoZXIsIGludCBvZmZzZXQpCj4+ ICt7Cj4+ICsgICAgaW50IGk7Cj4+ICsgICAgaW50IGxlbiA9IGRzdFcgLSAxNTsKPj4gKyAgICBf X20yNTZpIG1hc2sgPSB7MHgxQzBDMTgwODE0MDQxMDAwLCAweDFDMTgxNDEwMEMwODA0MDAsCj4+ ICsgICAgICAgICAgICAgICAgICAgIDB4MUMwQzE4MDgxNDA0MTAwMCwgMHgxQzE4MTQxMDBDMDgw NDAwfTsKPj4gKyAgICBfX20yNTZpIHZhbDEsIHZhbDIsIHZhbDM7Cj4+ICsgICAgdWludDhfdCBk aXRoZXIwID0gZGl0aGVyW29mZnNldCAmIDddOwo+PiArICAgIHVpbnQ4X3QgZGl0aGVyMSA9IGRp dGhlclsob2Zmc2V0ICsgMSkgJiA3XTsKPj4gKyAgICB1aW50OF90IGRpdGhlcjIgPSBkaXRoZXJb KG9mZnNldCArIDIpICYgN107Cj4+ICsgICAgdWludDhfdCBkaXRoZXIzID0gZGl0aGVyWyhvZmZz ZXQgKyAzKSAmIDddOwo+PiArICAgIHVpbnQ4X3QgZGl0aGVyNCA9IGRpdGhlclsob2Zmc2V0ICsg NCkgJiA3XTsKPj4gKyAgICB1aW50OF90IGRpdGhlcjUgPSBkaXRoZXJbKG9mZnNldCArIDUpICYg N107Cj4+ICsgICAgdWludDhfdCBkaXRoZXI2ID0gZGl0aGVyWyhvZmZzZXQgKyA2KSAmIDddOwo+ PiArICAgIHVpbnQ4X3QgZGl0aGVyNyA9IGRpdGhlclsob2Zmc2V0ICsgNykgJiA3XTsKPj4gKyAg ICBpbnQgdmFsXzFbOF0gPSB7ZGl0aGVyMCwgZGl0aGVyMiwgZGl0aGVyNCwgZGl0aGVyNiwKPj4g KyAgICAgICAgICAgICAgICAgICAgZGl0aGVyMCwgZGl0aGVyMiwgZGl0aGVyNCwgZGl0aGVyNn07 Cj4+ICsgICAgaW50IHZhbF8yWzhdID0ge2RpdGhlcjEsIGRpdGhlcjMsIGRpdGhlcjUsIGRpdGhl cjcsCj4+ICsgICAgICAgICAgICAgICAgICAgIGRpdGhlcjEsIGRpdGhlcjMsIGRpdGhlcjUsIGRp dGhlcjd9Owo+PiArICAgIGludCB2YWxfM1s4XSA9IHtkaXRoZXIwLCBkaXRoZXIxLCBkaXRoZXIy LCBkaXRoZXIzLAo+PiArICAgICAgICAgICAgICAgICAgICBkaXRoZXI0LCBkaXRoZXI1LCBkaXRo ZXI2LCBkaXRoZXI3fTsKPj4gKwo+PiArICAgIERVUDJfQVJHMihfX2xhc3hfeHZsZCwgdmFsXzEs IDAsIHZhbF8yLCAwLCB2YWwxLCB2YWwyKTsKPj4gKyAgICB2YWwzID0gX19sYXN4X3h2bGQodmFs XzMsIDApOwo+PiArCj4+ICsgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSArPSAxNikgewo+PiAr ICAgICAgICBpbnQgajsKPj4gKyAgICAgICAgX19tMjU2aSBzcmMwLCBmaWx0ZXIwLCB2YWw7Cj4+ ICsgICAgICAgIF9fbTI1NmkgdmFsX2V2LCB2YWxfb2Q7Cj4+ICsKPj4gKyAgICAgICAgdmFsX2V2 ID0gX19sYXN4X3h2c2xsaV93KHZhbDEsIDEyKTsKPj4gKyAgICAgICAgdmFsX29kID0gX19sYXN4 X3h2c2xsaV93KHZhbDIsIDEyKTsKPj4gKwo+PiArICAgICAgICBmb3IgKGogPSAwOyBqIDwgZmls dGVyU2l6ZTsgaisrKSB7Cj4+ICsgICAgICAgICAgICBzcmMwICA9IF9fbGFzeF94dmxkKHNyY1tq XSsgaSwgMCk7Cj4+ICsgICAgICAgICAgICBmaWx0ZXIwID0gX19sYXN4X3h2bGRyZXBsX2goKGZp bHRlciArIGopLCAwKTsKPj4gKyAgICAgICAgICAgIHZhbF9ldiA9IF9fbGFzeF94dm1hZGR3ZXZf d19oKHZhbF9ldiwgc3JjMCwgZmlsdGVyMCk7Cj4+ICsgICAgICAgICAgICB2YWxfb2QgPSBfX2xh c3hfeHZtYWRkd29kX3dfaCh2YWxfb2QsIHNyYzAsIGZpbHRlcjApOwo+PiArICAgICAgICB9Cj4+ ICsgICAgICAgIHZhbF9ldiA9IF9fbGFzeF94dnNyYWlfdyh2YWxfZXYsIDE5KTsKPj4gKyAgICAg ICAgdmFsX29kID0gX19sYXN4X3h2c3JhaV93KHZhbF9vZCwgMTkpOwo+PiArICAgICAgICB2YWxf ZXYgPSBfX2xhc3hfeHZjbGlwMjU1X3codmFsX2V2KTsKPj4gKyAgICAgICAgdmFsX29kID0gX19s YXN4X3h2Y2xpcDI1NV93KHZhbF9vZCk7Cj4+ICsgICAgICAgIHZhbCAgICA9IF9fbGFzeF94dnNo dWZfYih2YWxfb2QsIHZhbF9ldiwgbWFzayk7Cj4+ICsgICAgICAgIF9fbGFzeF94dnN0ZWxtX2Qo dmFsLCAoZGVzdCArIGkpLCAwLCAwKTsKPj4gKyAgICAgICAgX19sYXN4X3h2c3RlbG1fZCh2YWws IChkZXN0ICsgaSksIDgsIDIpOwo+PiArICAgIH0KPj4gKyAgICBpZiAoZHN0VyAtIGkgPj0gOCl7 Cj4+ICsgICAgICAgIGludCBqOwo+PiArICAgICAgICBfX20yNTZpIHNyYzAsIGZpbHRlcjAsIHZh bF9oOwo+PiArICAgICAgICBfX20yNTZpIHZhbF9sOwo+PiArCj4+ICsgICAgICAgIHZhbF9sID0g X19sYXN4X3h2c2xsaV93KHZhbDMsIDEyKTsKPj4gKwo+PiArICAgICAgICBmb3IgKGogPSAwOyBq IDwgZmlsdGVyU2l6ZTsgaisrKSB7Cj4+ICsgICAgICAgICAgICBzcmMwICA9IF9fbGFzeF94dmxk KHNyY1tqXSArIGksIDApOwo+PiArICAgICAgICAgICAgc3JjMCAgPSBfX2xhc3hfdmV4dDJ4dl93 X2goc3JjMCk7Cj4+ICsgICAgICAgICAgICBmaWx0ZXIwID0gX19sYXN4X3h2bGRyZXBsX2goKGZp bHRlciArIGopLCAwKTsKPj4gKyAgICAgICAgICAgIGZpbHRlcjAgPSBfX2xhc3hfdmV4dDJ4dl93 X2goZmlsdGVyMCk7Cj4+ICsgICAgICAgICAgICB2YWxfbCA9IF9fbGFzeF94dm1hZGRfdyh2YWxf bCwgc3JjMCwgZmlsdGVyMCk7Cj4+ICsgICAgICAgIH0KPj4gKyAgICAgICAgdmFsX2wgPSBfX2xh c3hfeHZzcmFpX3codmFsX2wsIDE5KTsKPj4gKyAgICAgICAgdmFsX2wgPSBfX2xhc3hfeHZjbGlw MjU1X3codmFsX2wpOwo+PiArICAgICAgICB2YWxfaCA9IF9fbGFzeF94dnBlcm1pX2QodmFsX2ws IDB4NEUpOwo+PiArICAgICAgICB2YWxfbCA9IF9fbGFzeF94dnNodWZfYih2YWxfaCwgdmFsX2ws IG1hc2spOwo+PiArICAgICAgICBfX2xhc3hfeHZzdGVsbV9kKHZhbF9sLCAoZGVzdCArIGkpLCAw LCAxKTsKPj4gKyAgICAgICAgaSArPSA4Owo+PiArICAgIH0KPj4gKyAgICBmb3IgKDsgaSA8IGRz dFc7IGkrKykgewo+PiArICAgICAgICBpbnQgdmFsID0gZGl0aGVyWyhpICsgb2Zmc2V0KSAmIDdd IDw8IDEyOwo+PiArICAgICAgICBpbnQgajsKPj4gKyAgICAgICAgZm9yIChqID0gMDsgajwgZmls dGVyU2l6ZTsgaisrKQo+PiArICAgICAgICAgICAgdmFsICs9IHNyY1tqXVtpXSAqIGZpbHRlcltq XTsKPj4gKwo+PiArICAgICAgICBkZXN0W2ldID0gYXZfY2xpcF91aW50OCh2YWwgPj4gMTkpOwo+ PiArICAgIH0KPj4gK30KPj4gKwo+PiArLypDb3B5IGZyb20gbGlic3dzY2FsZS9vdXRwdXQuYyov Cj4+ICtzdGF0aWMgYXZfYWx3YXlzX2lubGluZSB2b2lkCj4+ICt5dXYycmdiX3dyaXRlKHVpbnQ4 X3QgKl9kZXN0LCBpbnQgaSwgaW50IFkxLCBpbnQgWTIsCj4+ICsgICAgICAgICAgICAgIHVuc2ln bmVkIEExLCB1bnNpZ25lZCBBMiwKPj4gKyAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqX3IsIGNv bnN0IHZvaWQgKl9nLCBjb25zdCB2b2lkICpfYiwgaW50IHksCj4+ICsgICAgICAgICAgICAgIGVu dW0gQVZQaXhlbEZvcm1hdCB0YXJnZXQsIGludCBoYXNBbHBoYSkKPj4gK3sKPj4gKyAgICBpZiAo dGFyZ2V0ID09IEFWX1BJWF9GTVRfQVJHQiB8fCB0YXJnZXQgPT0gQVZfUElYX0ZNVF9SR0JBIHx8 Cj4+ICsgICAgICAgIHRhcmdldCA9PSBBVl9QSVhfRk1UX0FCR1IgfHwgdGFyZ2V0ID09IEFWX1BJ WF9GTVRfQkdSQSkgewo+PiArICAgICAgICB1aW50MzJfdCAqZGVzdCA9ICh1aW50MzJfdCAqKSBf ZGVzdDsKPj4gKyAgICAgICAgY29uc3QgdWludDMyX3QgKnIgPSAoY29uc3QgdWludDMyX3QgKikg X3I7Cj4+ICsgICAgICAgIGNvbnN0IHVpbnQzMl90ICpnID0gKGNvbnN0IHVpbnQzMl90ICopIF9n Owo+PiArICAgICAgICBjb25zdCB1aW50MzJfdCAqYiA9IChjb25zdCB1aW50MzJfdCAqKSBfYjsK Pj4gKwo+PiArI2lmIENPTkZJR19TTUFMTAo+PiArICAgICAgICBkZXN0W2kgKiAyICsgMF0gPSBy W1kxXSArIGdbWTFdICsgYltZMV07Cj4+ICsgICAgICAgIGRlc3RbaSAqIDIgKyAxXSA9IHJbWTJd ICsgZ1tZMl0gKyBiW1kyXTsKPj4gKyNlbHNlCj4+ICsjaWYgZGVmaW5lZChBU1NFUlRfTEVWRUwp ICYmIEFTU0VSVF9MRVZFTCA+IDEKPj4gKyAgICAgICAgaW50IHNoID0gKHRhcmdldCA9PSBBVl9Q SVhfRk1UX1JHQjMyXzEgfHwKPj4gKyAgICAgICAgICAgICAgICAgIHRhcmdldCA9PSBBVl9QSVhf Rk1UX0JHUjMyXzEpID8gMCA6IDI0Owo+PiArICAgICAgICBhdl9hc3NlcnQyKCgoKHJbWTFdICsg Z1tZMV0gKyBiW1kxXSkgPj4gc2gpICYgMHhGRikgPT0gMHhGRik7Cj4+ICsjZW5kaWYKPj4gKyAg ICAgICAgZGVzdFtpICogMiArIDBdID0gcltZMV0gKyBnW1kxXSArIGJbWTFdOwo+PiArICAgICAg ICBkZXN0W2kgKiAyICsgMV0gPSByW1kyXSArIGdbWTJdICsgYltZMl07Cj4+ICsjZW5kaWYKPj4g KyAgICB9IGVsc2UgaWYgKHRhcmdldCA9PSBBVl9QSVhfRk1UX1JHQjI0IHx8IHRhcmdldCA9PSBB Vl9QSVhfRk1UX0JHUjI0KSB7Cj4+ICsgICAgICAgIHVpbnQ4X3QgKmRlc3QgPSAodWludDhfdCAq KSBfZGVzdDsKPj4gKyAgICAgICAgY29uc3QgdWludDhfdCAqciA9IChjb25zdCB1aW50OF90ICop IF9yOwo+PiArICAgICAgICBjb25zdCB1aW50OF90ICpnID0gKGNvbnN0IHVpbnQ4X3QgKikgX2c7 Cj4+ICsgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmIgPSAoY29uc3QgdWludDhfdCAqKSBfYjsKPj4g Kwo+PiArI2RlZmluZSByX2IgKCh0YXJnZXQgPT0gQVZfUElYX0ZNVF9SR0IyNCkgPyByIDogYikK Pj4gKyNkZWZpbmUgYl9yICgodGFyZ2V0ID09IEFWX1BJWF9GTVRfUkdCMjQpID8gYiA6IHIpCj4+ ICsKPj4gKyAgICAgICAgZGVzdFtpICogNiArIDBdID0gcl9iW1kxXTsKPj4gKyAgICAgICAgZGVz dFtpICogNiArIDFdID0gICBnW1kxXTsKPj4gKyAgICAgICAgZGVzdFtpICogNiArIDJdID0gYl9y W1kxXTsKPj4gKyAgICAgICAgZGVzdFtpICogNiArIDNdID0gcl9iW1kyXTsKPj4gKyAgICAgICAg ZGVzdFtpICogNiArIDRdID0gICBnW1kyXTsKPj4gKyAgICAgICAgZGVzdFtpICogNiArIDVdID0g Yl9yW1kyXTsKPj4gKyN1bmRlZiByX2IKPj4gKyN1bmRlZiBiX3IKPj4gKyAgICB9IGVsc2UgaWYg KHRhcmdldCA9PSBBVl9QSVhfRk1UX1JHQjU2NSB8fCB0YXJnZXQgPT0gQVZfUElYX0ZNVF9CR1I1 NjUgfHwKPj4gKyAgICAgICAgICAgICAgIHRhcmdldCA9PSBBVl9QSVhfRk1UX1JHQjU1NSB8fCB0 YXJnZXQgPT0gQVZfUElYX0ZNVF9CR1I1NTUgfHwKPj4gKyAgICAgICAgICAgICAgIHRhcmdldCA9 PSBBVl9QSVhfRk1UX1JHQjQ0NCB8fCB0YXJnZXQgPT0gQVZfUElYX0ZNVF9CR1I0NDQpIHsKPj4g KyAgICAgICAgdWludDE2X3QgKmRlc3QgPSAodWludDE2X3QgKikgX2Rlc3Q7Cj4+ICsgICAgICAg IGNvbnN0IHVpbnQxNl90ICpyID0gKGNvbnN0IHVpbnQxNl90ICopIF9yOwo+PiArICAgICAgICBj b25zdCB1aW50MTZfdCAqZyA9IChjb25zdCB1aW50MTZfdCAqKSBfZzsKPj4gKyAgICAgICAgY29u c3QgdWludDE2X3QgKmIgPSAoY29uc3QgdWludDE2X3QgKikgX2I7Cj4+ICsgICAgICAgIGludCBk cjEsIGRnMSwgZGIxLCBkcjIsIGRnMiwgZGIyOwo+PiArCj4+ICsgICAgICAgIGlmICh0YXJnZXQg PT0gQVZfUElYX0ZNVF9SR0I1NjUgfHwgdGFyZ2V0ID09IEFWX1BJWF9GTVRfQkdSNTY1KSB7Cj4+ ICsgICAgICAgICAgICBkcjEgPSBmZl9kaXRoZXJfMngyXzhbIHkgJiAxICAgICBdWzBdOwo+PiAr ICAgICAgICAgICAgZGcxID0gZmZfZGl0aGVyXzJ4Ml80WyB5ICYgMSAgICAgXVswXTsKPj4gKyAg ICAgICAgICAgIGRiMSA9IGZmX2RpdGhlcl8yeDJfOFsoeSAmIDEpIF4gMV1bMF07Cj4+ICsgICAg ICAgICAgICBkcjIgPSBmZl9kaXRoZXJfMngyXzhbIHkgJiAxICAgICBdWzFdOwo+PiArICAgICAg ICAgICAgZGcyID0gZmZfZGl0aGVyXzJ4Ml80WyB5ICYgMSAgICAgXVsxXTsKPj4gKyAgICAgICAg ICAgIGRiMiA9IGZmX2RpdGhlcl8yeDJfOFsoeSAmIDEpIF4gMV1bMV07Cj4+ICsgICAgfSBlbHNl IGlmICh0YXJnZXQgPT0gQVZfUElYX0ZNVF9SR0I1NTUgfHwgdGFyZ2V0ID09IEFWX1BJWF9GTVRf QkdSNTU1KSB7Cj4+ICsgICAgICAgICAgICBkcjEgPSBmZl9kaXRoZXJfMngyXzhbIHkgJiAxICAg ICBdWzBdOwo+PiArICAgICAgICAgICAgZGcxID0gZmZfZGl0aGVyXzJ4Ml84WyB5ICYgMSAgICAg XVsxXTsKPj4gKyAgICAgICAgICAgIGRiMSA9IGZmX2RpdGhlcl8yeDJfOFsoeSAmIDEpIF4gMV1b MF07Cj4+ICsgICAgICAgICAgICBkcjIgPSBmZl9kaXRoZXJfMngyXzhbIHkgJiAxICAgICBdWzFd Owo+PiArICAgICAgICAgICAgZGcyID0gZmZfZGl0aGVyXzJ4Ml84WyB5ICYgMSAgICAgXVswXTsK Pj4gKyAgICAgICAgICAgIGRiMiA9IGZmX2RpdGhlcl8yeDJfOFsoeSAmIDEpIF4gMV1bMV07Cj4+ ICsgICAgICAgIH0gZWxzZSB7Cj4+ICsgICAgICAgICAgICBkcjEgPSBmZl9kaXRoZXJfNHg0XzE2 WyB5ICYgMyAgICAgXVswXTsKPj4gKyAgICAgICAgICAgIGRnMSA9IGZmX2RpdGhlcl80eDRfMTZb IHkgJiAzICAgICBdWzFdOwo+PiArICAgICAgICAgICAgZGIxID0gZmZfZGl0aGVyXzR4NF8xNlso eSAmIDMpIF4gM11bMF07Cj4+ICsgICAgICAgICAgICBkcjIgPSBmZl9kaXRoZXJfNHg0XzE2WyB5 ICYgMyAgICAgXVsxXTsKPj4gKyAgICAgICAgICAgIGRnMiA9IGZmX2RpdGhlcl80eDRfMTZbIHkg JiAzICAgICBdWzBdOwo+PiArICAgICAgICAgICAgZGIyID0gZmZfZGl0aGVyXzR4NF8xNlsoeSAm IDMpIF4gM11bMV07Cj4+ICsgICAgICAgIH0KPj4gKwo+PiArICAgICAgICBkZXN0W2kgKiAyICsg MF0gPSByW1kxICsgZHIxXSArIGdbWTEgKyBkZzFdICsgYltZMSArIGRiMV07Cj4+ICsgICAgICAg IGRlc3RbaSAqIDIgKyAxXSA9IHJbWTIgKyBkcjJdICsgZ1tZMiArIGRnMl0gKyBiW1kyICsgZGIy XTsKPj4gKyAgICB9IGVsc2UgLyogOC80IGJpdHMgKi8gewo+PiArICAgICAgICB1aW50OF90ICpk ZXN0ID0gKHVpbnQ4X3QgKikgX2Rlc3Q7Cj4+ICsgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnIgPSAo Y29uc3QgdWludDhfdCAqKSBfcjsKPj4gKyAgICAgICAgY29uc3QgdWludDhfdCAqZyA9IChjb25z dCB1aW50OF90ICopIF9nOwo+PiArICAgICAgICBjb25zdCB1aW50OF90ICpiID0gKGNvbnN0IHVp bnQ4X3QgKikgX2I7Cj4+ICsgICAgICAgIGludCBkcjEsIGRnMSwgZGIxLCBkcjIsIGRnMiwgZGIy Owo+PiArCj4+ICsgICAgICAgIGlmICh0YXJnZXQgPT0gQVZfUElYX0ZNVF9SR0I4IHx8IHRhcmdl dCA9PSBBVl9QSVhfRk1UX0JHUjgpIHsKPj4gKyAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKiBj b25zdCBkNjQgPSBmZl9kaXRoZXJfOHg4XzczW3kgJiA3XTsKPj4gKyAgICAgICAgICAgIGNvbnN0 IHVpbnQ4X3QgKiBjb25zdCBkMzIgPSBmZl9kaXRoZXJfOHg4XzMyW3kgJiA3XTsKPj4gKyAgICAg ICAgICAgIGRyMSA9IGRnMSA9IGQzMlsoaSAqIDIgKyAwKSAmIDddOwo+PiArICAgICAgICAgICAg ZGIxID0gICAgICAgZDY0WyhpICogMiArIDApICYgN107Cj4+ICsgICAgICAgICAgICBkcjIgPSBk ZzIgPSBkMzJbKGkgKiAyICsgMSkgJiA3XTsKPj4gKyAgICAgICAgICAgIGRiMiA9ICAgICAgIGQ2 NFsoaSAqIDIgKyAxKSAmIDddOwo+PiArICAgICAgICB9IGVsc2Ugewo+PiArICAgICAgICAgICAg Y29uc3QgdWludDhfdCAqIGNvbnN0IGQ2NCAgPSBmZl9kaXRoZXJfOHg4XzczIFt5ICYgN107Cj4+ ICsgICAgICAgICAgICBjb25zdCB1aW50OF90ICogY29uc3QgZDEyOCA9IGZmX2RpdGhlcl84eDhf MjIwW3kgJiA3XTsKPj4gKyAgICAgICAgICAgIGRyMSA9IGRiMSA9IGQxMjhbKGkgKiAyICsgMCkg JiA3XTsKPj4gKyAgICAgICAgICAgIGRnMSA9ICAgICAgICBkNjRbKGkgKiAyICsgMCkgJiA3XTsK Pj4gKyAgICAgICAgICAgIGRyMiA9IGRiMiA9IGQxMjhbKGkgKiAyICsgMSkgJiA3XTsKPj4gKyAg ICAgICAgICAgIGRnMiA9ICAgICAgICBkNjRbKGkgKiAyICsgMSkgJiA3XTsKPj4gKyAgICAgICAg fQo+PiArCj4+ICsgICAgICAgIGlmICh0YXJnZXQgPT0gQVZfUElYX0ZNVF9SR0I0IHx8IHRhcmdl dCA9PSBBVl9QSVhfRk1UX0JHUjQpIHsKPj4gKyAgICAgICAgICAgIGRlc3RbaV0gPSByW1kxICsg ZHIxXSArIGdbWTEgKyBkZzFdICsgYltZMSArIGRiMV0gKwo+PiArICAgICAgICAgICAgICAgICAg ICAoKHJbWTIgKyBkcjJdICsgZ1tZMiArIGRnMl0gKyBiW1kyICsgZGIyXSkgPDwgNCk7Cj4+ICsg ICAgICAgIH0gZWxzZSB7Cj4+ICsgICAgICAgICAgICBkZXN0W2kgKiAyICsgMF0gPSByW1kxICsg ZHIxXSArIGdbWTEgKyBkZzFdICsgYltZMSArIGRiMV07Cj4+ICsgICAgICAgICAgICBkZXN0W2kg KiAyICsgMV0gPSByW1kyICsgZHIyXSArIGdbWTIgKyBkZzJdICsgYltZMiArIGRiMl07Cj4+ICsg ICAgICAgIH0KPj4gKyAgICB9Cj4+ICt9Cj4+ICsKPj4gKyNkZWZpbmUgV1JJVEVfWVVWMlJHQih2 ZWNfeTEsIHZlY195MiwgdmVjX3UsIHZlY192LCB0MSwgdDIsIHQzLCB0NCkgICAgXAo+PiAreyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCj4+ICsgICAgWTEgPSBfX2xhc3hfeHZwaWNrdmUyZ3Jfdyh2ZWNfeTEsIHQx KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPj4gKyAgICBZMiA9IF9fbGFzeF94dnBp Y2t2ZTJncl93KHZlY195MiwgdDIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+PiAr ICAgIFUgID0gX19sYXN4X3h2cGlja3ZlMmdyX3codmVjX3UsIHQzKTsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCj4+ICsgICAgViAgPSBfX2xhc3hfeHZwaWNrdmUyZ3Jfdyh2ZWNfdiwg dDQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPj4gKyAgICByICA9ICBjLT50YWJs ZV9yVltWXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ PiArICAgIGcgID0gKGMtPnRhYmxlX2dVW1VdICsgYy0+dGFibGVfZ1ZbVl0pOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCj4+ICsgICAgYiAgPSAgYy0+dGFibGVfYlVbVV07ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPj4gKyAgICB5dXYycmdiX3dy aXRlKGRlc3QsIGNvdW50LCBZMSwgWTIsIDAsIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg XAo+PiArICAgICAgICAgICAgICAgICAgciwgZywgYiwgeSwgdGFyZ2V0LCAwKTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCj4+ICsgICAgY291bnQrKzsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPj4gK30KPj4gKwo+PiAr c3RhdGljIHZvaWQKPj4gK3l1djJyZ2JfWF90ZW1wbGF0ZV9sYXN4KFN3c0NvbnRleHQgKmMsIGNv bnN0IGludDE2X3QgKmx1bUZpbHRlciwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGludDE2X3QgKipsdW1TcmMsIGludCBsdW1GaWx0ZXJTaXplLAo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgaW50MTZfdCAqY2hyRmlsdGVyLCBjb25zdCBpbnQxNl90ICoqY2hyVVNy YywKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDE2X3QgKipjaHJWU3JjLCBp bnQgY2hyRmlsdGVyU2l6ZSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDE2 X3QgKiphbHBTcmMsIHVpbnQ4X3QgKmRlc3QsIGludCBkc3RXLAo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgaW50IHksIGVudW0gQVZQaXhlbEZvcm1hdCB0YXJnZXQsIGludCBoYXNBbHBoYSkK Pj4gK3sKPj4gKyAgICBpbnQgaSwgajsKPj4gKyAgICBpbnQgY291bnQgPSAwOwo+PiArICAgIGlu dCB0ICAgICA9IDEgPDwgMTg7Cj4+ICsgICAgaW50IGxlbiAgID0gZHN0VyA+PiA2Owo+PiArICAg IGludCByZXMgICA9IGRzdFcgJiA2MzsKPj4gKyAgICBpbnQgbGVuX2NvdW50ID0gKGRzdFcgKyAx KSA+PiAxOwo+PiArICAgIGNvbnN0IHZvaWQgKnIsICpnLCAqYjsKPj4gKyAgICBpbnQgaGVhZCA9 IFlVVlJHQl9UQUJMRV9IRUFEUk9PTTsKPj4gKyAgICBfX20yNTZpIGhlYWRyb29tICA9IF9fbGFz eF94dnJlcGxncjJ2cl93KGhlYWQpOwo+PiArCj4+ICsgICAgZm9yIChpID0gMDsgaSA8IGxlbjsg aSsrKSB7Cj4+ICsgICAgICAgIGludCBZMSwgWTIsIFUsIFYsIGNvdW50X2x1bSA9IGNvdW50IDw8 IDE7Cj4+ICsgICAgICAgIF9fbTI1NmkgbF9zcmMxLCBsX3NyYzIsIGxfc3JjMywgbF9zcmM0LCB1 X3NyYzEsIHVfc3JjMiwgdl9zcmMxLCB2X3NyYzI7Cj4+ICsgICAgICAgIF9fbTI1NmkgeWwxX2V2 LCB5bDFfb2QsIHloMV9ldiwgeWgxX29kLCB5bDJfZXYsIHlsMl9vZCwgeWgyX2V2LCB5aDJfb2Q7 Cj4+ICsgICAgICAgIF9fbTI1NmkgdTFfZXYsIHUxX29kLCB2MV9ldiwgdjFfb2QsIHUyX2V2LCB1 Ml9vZCwgdjJfZXYsIHYyX29kLCB0ZW1wOwo+PiArCj4+ICsgICAgICAgIHlsMV9ldiA9IF9fbGFz eF94dmxkcmVwbF93KCZ0LCAwKTsKPj4gKyAgICAgICAgeWwxX29kID0geWwxX2V2Owo+PiArICAg ICAgICB5aDFfZXYgPSB5bDFfZXY7Cj4+ICsgICAgICAgIHloMV9vZCA9IHlsMV9ldjsKPj4gKyAg ICAgICAgdTFfZXYgID0geWwxX2V2Owo+PiArICAgICAgICB2MV9ldiAgPSB5bDFfZXY7Cj4+ICsg ICAgICAgIHUxX29kICA9IHlsMV9ldjsKPj4gKyAgICAgICAgdjFfb2QgID0geWwxX2V2Owo+PiAr ICAgICAgICB5bDJfZXYgPSB5bDFfZXY7Cj4+ICsgICAgICAgIHlsMl9vZCA9IHlsMV9ldjsKPj4g KyAgICAgICAgeWgyX2V2ID0geWwxX2V2Owo+PiArICAgICAgICB5aDJfb2QgPSB5bDFfZXY7Cj4+ ICsgICAgICAgIHUyX2V2ICA9IHlsMV9ldjsKPj4gKyAgICAgICAgdjJfZXYgID0geWwxX2V2Owo+ PiArICAgICAgICB1Ml9vZCAgPSB5bDFfZXY7Cj4+ICsgICAgICAgIHYyX29kICA9IHlsMV9ldjsK Pj4gKyAgICAgICAgZm9yIChqID0gMDsgaiA8IGx1bUZpbHRlclNpemU7IGorKykgewo+PiArICAg ICAgICAgICAgaW50MTZfdCAqc3JjX2x1bSA9IGx1bVNyY1tqXSArIGNvdW50X2x1bTsKPj4gKyAg ICAgICAgICAgIHRlbXAgICAgPSBfX2xhc3hfeHZsZHJlcGxfaCgobHVtRmlsdGVyICsgaiksIDAp Owo+PiArICAgICAgICAgICAgRFVQNF9BUkcyKF9fbGFzeF94dmxkLCBzcmNfbHVtLCAwLCBzcmNf bHVtLCAzMiwgc3JjX2x1bSwgNjQsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgc3JjX2x1bSwg OTYsIGxfc3JjMSwgbF9zcmMyLCBsX3NyYzMsIGxfc3JjNCk7Cj4+ICsKPj4gKyAgICAgICAgICAg IHlsMV9ldiAgPSBfX2xhc3hfeHZtYWRkd2V2X3dfaCh5bDFfZXYsIHRlbXAsIGxfc3JjMSk7Cj4+ ICsgICAgICAgICAgICB5bDFfb2QgID0gX19sYXN4X3h2bWFkZHdvZF93X2goeWwxX29kLCB0ZW1w LCBsX3NyYzEpOwo+PiArICAgICAgICAgICAgeWgxX2V2ICA9IF9fbGFzeF94dm1hZGR3ZXZfd19o KHloMV9ldiwgdGVtcCwgbF9zcmMyKTsKPj4gKyAgICAgICAgICAgIHloMV9vZCAgPSBfX2xhc3hf eHZtYWRkd29kX3dfaCh5aDFfb2QsIHRlbXAsIGxfc3JjMik7Cj4+ICsgICAgICAgICAgICB5bDJf ZXYgID0gX19sYXN4X3h2bWFkZHdldl93X2goeWwyX2V2LCB0ZW1wLCBsX3NyYzMpOwo+PiArICAg ICAgICAgICAgeWwyX29kICA9IF9fbGFzeF94dm1hZGR3b2Rfd19oKHlsMl9vZCwgdGVtcCwgbF9z cmMzKTsKPj4gKyAgICAgICAgICAgIHloMl9ldiAgPSBfX2xhc3hfeHZtYWRkd2V2X3dfaCh5aDJf ZXYsIHRlbXAsIGxfc3JjNCk7Cj4+ICsgICAgICAgICAgICB5aDJfb2QgID0gX19sYXN4X3h2bWFk ZHdvZF93X2goeWgyX29kLCB0ZW1wLCBsX3NyYzQpOwo+PiArICAgICAgICB9Cj4+ICsgICAgICAg IGZvciAoaiA9IDA7IGogPCBjaHJGaWx0ZXJTaXplOyBqKyspIHsKPj4gKyAgICAgICAgICAgIERV UDJfQVJHMihfX2xhc3hfeHZsZCwgY2hyVVNyY1tqXSArIGNvdW50LCAwLCBjaHJVU3JjW2pdICsg Y291bnQsIDMyLAo+PiArICAgICAgICAgICAgICAgICAgICAgIHVfc3JjMSwgdV9zcmMyKTsKPj4g KyAgICAgICAgICAgIERVUDJfQVJHMihfX2xhc3hfeHZsZCwgY2hyVlNyY1tqXSArIGNvdW50LCAw LCBjaHJWU3JjW2pdICsgY291bnQsIDMyLAo+PiArICAgICAgICAgICAgICAgICAgICAgIHZfc3Jj MSwgdl9zcmMyKTsKPj4gKyAgICAgICAgICAgIHRlbXAgID0gX19sYXN4X3h2bGRyZXBsX2goKGNo ckZpbHRlciArIGopLCAwKTsKPj4gKyAgICAgICAgICAgIHUxX2V2ICA9IF9fbGFzeF94dm1hZGR3 ZXZfd19oKHUxX2V2LCB0ZW1wLCB1X3NyYzEpOwo+PiArICAgICAgICAgICAgdTFfb2QgID0gX19s YXN4X3h2bWFkZHdvZF93X2godTFfb2QsIHRlbXAsIHVfc3JjMSk7Cj4+ICsgICAgICAgICAgICB2 MV9ldiAgPSBfX2xhc3hfeHZtYWRkd2V2X3dfaCh2MV9ldiwgdGVtcCwgdl9zcmMxKTsKPj4gKyAg ICAgICAgICAgIHYxX29kICA9IF9fbGFzeF94dm1hZGR3b2Rfd19oKHYxX29kLCB0ZW1wLCB2X3Ny YzEpOwo+PiArICAgICAgICAgICAgdTJfZXYgID0gX19sYXN4X3h2bWFkZHdldl93X2godTJfZXYs IHRlbXAsIHVfc3JjMik7Cj4+ICsgICAgICAgICAgICB1Ml9vZCAgPSBfX2xhc3hfeHZtYWRkd29k X3dfaCh1Ml9vZCwgdGVtcCwgdV9zcmMyKTsKPj4gKyAgICAgICAgICAgIHYyX2V2ICA9IF9fbGFz eF94dm1hZGR3ZXZfd19oKHYyX2V2LCB0ZW1wLCB2X3NyYzIpOwo+PiArICAgICAgICAgICAgdjJf b2QgID0gX19sYXN4X3h2bWFkZHdvZF93X2godjJfb2QsIHRlbXAsIHZfc3JjMik7Cj4+ICsgICAg ICAgIH0KPj4gKyAgICAgICAgeWwxX2V2ID0gX19sYXN4X3h2c3JhaV93KHlsMV9ldiwgMTkpOwo+ PiArICAgICAgICB5aDFfZXYgPSBfX2xhc3hfeHZzcmFpX3coeWgxX2V2LCAxOSk7Cj4+ICsgICAg ICAgIHlsMV9vZCA9IF9fbGFzeF94dnNyYWlfdyh5bDFfb2QsIDE5KTsKPj4gKyAgICAgICAgeWgx X29kID0gX19sYXN4X3h2c3JhaV93KHloMV9vZCwgMTkpOwo+PiArICAgICAgICB1MV9ldiAgPSBf X2xhc3hfeHZzcmFpX3codTFfZXYsIDE5KTsKPj4gKyAgICAgICAgdjFfZXYgID0gX19sYXN4X3h2 c3JhaV93KHYxX2V2LCAxOSk7Cj4+ICsgICAgICAgIHUxX29kICA9IF9fbGFzeF94dnNyYWlfdyh1 MV9vZCwgMTkpOwo+PiArICAgICAgICB2MV9vZCAgPSBfX2xhc3hfeHZzcmFpX3codjFfb2QsIDE5 KTsKPj4gKyAgICAgICAgeWwyX2V2ID0gX19sYXN4X3h2c3JhaV93KHlsMl9ldiwgMTkpOwo+PiAr ICAgICAgICB5aDJfZXYgPSBfX2xhc3hfeHZzcmFpX3coeWgyX2V2LCAxOSk7Cj4+ICsgICAgICAg IHlsMl9vZCA9IF9fbGFzeF94dnNyYWlfdyh5bDJfb2QsIDE5KTsKPj4gKyAgICAgICAgeWgyX29k ID0gX19sYXN4X3h2c3JhaV93KHloMl9vZCwgMTkpOwo+PiArICAgICAgICB1Ml9ldiAgPSBfX2xh c3hfeHZzcmFpX3codTJfZXYsIDE5KTsKPj4gKyAgICAgICAgdjJfZXYgID0gX19sYXN4X3h2c3Jh aV93KHYyX2V2LCAxOSk7Cj4+ICsgICAgICAgIHUyX29kICA9IF9fbGFzeF94dnNyYWlfdyh1Ml9v ZCwgMTkpOwo+PiArICAgICAgICB2Ml9vZCAgPSBfX2xhc3hfeHZzcmFpX3codjJfb2QsIDE5KTsK Pj4gKyAgICAgICAgdTFfZXYgID0gX19sYXN4X3h2YWRkX3codTFfZXYsIGhlYWRyb29tKTsKPj4g KyAgICAgICAgdjFfZXYgID0gX19sYXN4X3h2YWRkX3codjFfZXYsIGhlYWRyb29tKTsKPj4gKyAg ICAgICAgdTFfb2QgID0gX19sYXN4X3h2YWRkX3codTFfb2QsIGhlYWRyb29tKTsKPj4gKyAgICAg ICAgdjFfb2QgID0gX19sYXN4X3h2YWRkX3codjFfb2QsIGhlYWRyb29tKTsKPj4gKyAgICAgICAg dTJfZXYgID0gX19sYXN4X3h2YWRkX3codTJfZXYsIGhlYWRyb29tKTsKPj4gKyAgICAgICAgdjJf ZXYgID0gX19sYXN4X3h2YWRkX3codjJfZXYsIGhlYWRyb29tKTsKPj4gKyAgICAgICAgdTJfb2Qg ID0gX19sYXN4X3h2YWRkX3codTJfb2QsIGhlYWRyb29tKTsKPj4gKyAgICAgICAgdjJfb2QgID0g X19sYXN4X3h2YWRkX3codjJfb2QsIGhlYWRyb29tKTsKPj4gKyAgICAgICAgV1JJVEVfWVVWMlJH Qih5bDFfZXYsIHlsMV9vZCwgdTFfZXYsIHYxX2V2LCAwLCAwLCAwLCAwKTsKPj4gKyAgICAgICAg V1JJVEVfWVVWMlJHQih5bDFfZXYsIHlsMV9vZCwgdTFfb2QsIHYxX29kLCAxLCAxLCAwLCAwKTsK Pj4gKyAgICAgICAgV1JJVEVfWVVWMlJHQih5bDFfZXYsIHlsMV9vZCwgdTFfZXYsIHYxX2V2LCAy LCAyLCAxLCAxKTsKPj4gKyAgICAgICAgV1JJVEVfWVVWMlJHQih5bDFfZXYsIHlsMV9vZCwgdTFf b2QsIHYxX29kLCAzLCAzLCAxLCAxKTsKPj4gKyAgICAgICAgV1JJVEVfWVVWMlJHQih5bDFfZXYs IHlsMV9vZCwgdTFfZXYsIHYxX2V2LCA0LCA0LCAyLCAyKTsKPj4gKyAgICAgICAgV1JJVEVfWVVW MlJHQih5bDFfZXYsIHlsMV9vZCwgdTFfb2QsIHYxX29kLCA1LCA1LCAyLCAyKTsKPj4gKyAgICAg ICAgV1JJVEVfWVVWMlJHQih5bDFfZXYsIHlsMV9vZCwgdTFfZXYsIHYxX2V2LCA2LCA2LCAzLCAz KTsKPj4gKyAgICAgICAgV1JJVEVfWVVWMlJHQih5bDFfZXYsIHlsMV9vZCwgdTFfb2QsIHYxX29k LCA3LCA3LCAzLCAzKTsKPj4gKyAgICAgICAgV1JJVEVfWVVWMlJHQih5aDFfZXYsIHloMV9vZCwg dTFfZXYsIHYxX2V2LCAwLCAwLCA0LCA0KTsKPj4gKyAgICAgICAgV1JJVEVfWVVWMlJHQih5aDFf ZXYsIHloMV9vZCwgdTFfb2QsIHYxX29kLCAxLCAxLCA0LCA0KTsKPj4gKyAgICAgICAgV1JJVEVf WVVWMlJHQih5aDFfZXYsIHloMV9vZCwgdTFfZXYsIHYxX2V2LCAyLCAyLCA1LCA1KTsKPj4gKyAg ICAgICAgV1JJVEVfWVVWMlJHQih5aDFfZXYsIHloMV9vZCwgdTFfb2QsIHYxX29kLCAzLCAzLCA1 LCA1KTsKPj4gKyAgICAgICAgV1JJVEVfWVVWMlJHQih5aDFfZXYsIHloMV9vZCwgdTFfZXYsIHYx X2V2LCA0LCA0LCA2LCA2KTsKPj4gKyAgICAgICAgV1JJVEVfWVVWMlJHQih5aDFfZXYsIHloMV9v ZCwgdTFfb2QsIHYxX29kLCA1LCA1LCA2LCA2KTsKPj4gKyAgICAgICAgV1JJVEVfWVVWMlJHQih5 aDFfZXYsIHloMV9vZCwgdTFfZXYsIHYxX2V2LCA2LCA2LCA3LCA3KTsKPj4gKyAgICAgICAgV1JJ VEVfWVVWMlJHQih5aDFfZXYsIHloMV9vZCwgdTFfb2QsIHYxX29kLCA3LCA3LCA3LCA3KTsKPj4g KyAgICAgICAgV1JJVEVfWVVWMlJHQih5bDJfZXYsIHlsMl9vZCwgdTJfZXYsIHYyX2V2LCAwLCAw LCAwLCAwKTsKPj4gKyAgICAgICAgV1JJVEVfWVVWMlJHQih5bDJfZXYsIHlsMl9vZCwgdTJfb2Qs IHYyX29kLCAxLCAxLCAwLCAwKTsKPj4gKyAgICAgICAgV1JJVEVfWVVWMlJHQih5bDJfZXYsIHls Ml9vZCwgdTJfZXYsIHYyX2V2LCAyLCAyLCAxLCAxKTsKPj4gKyAgICAgICAgV1JJVEVfWVVWMlJH Qih5bDJfZXYsIHlsMl9vZCwgdTJfb2QsIHYyX29kLCAzLCAzLCAxLCAxKTsKPj4gKyAgICAgICAg V1JJVEVfWVVWMlJHQih5bDJfZXYsIHlsMl9vZCwgdTJfZXYsIHYyX2V2LCA0LCA0LCAyLCAyKTsK Pj4gKyAgICAgICAgV1JJVEVfWVVWMlJHQih5bDJfZXYsIHlsMl9vZCwgdTJfb2QsIHYyX29kLCA1 LCA1LCAyLCAyKTsKPj4gKyAgICAgICAgV1JJVEVfWVVWMlJHQih5bDJfZXYsIHlsMl9vZCwgdTJf ZXYsIHYyX2V2LCA2LCA2LCAzLCAzKTsKPj4gKyAgICAgICAgV1JJVEVfWVVWMlJHQih5bDJfZXYs IHlsMl9vZCwgdTJfb2QsIHYyX29kLCA3LCA3LCAzLCAzKTsKPj4gKyAgICAgICAgV1JJVEVfWVVW MlJHQih5aDJfZXYsIHloMl9vZCwgdTJfZXYsIHYyX2V2LCAwLCAwLCA0LCA0KTsKPj4gKyAgICAg ICAgV1JJVEVfWVVWMlJHQih5aDJfZXYsIHloMl9vZCwgdTJfb2QsIHYyX29kLCAxLCAxLCA0LCA0 KTsKPj4gKyAgICAgICAgV1JJVEVfWVVWMlJHQih5aDJfZXYsIHloMl9vZCwgdTJfZXYsIHYyX2V2 LCAyLCAyLCA1LCA1KTsKPj4gKyAgICAgICAgV1JJVEVfWVVWMlJHQih5aDJfZXYsIHloMl9vZCwg dTJfb2QsIHYyX29kLCAzLCAzLCA1LCA1KTsKPj4gKyAgICAgICAgV1JJVEVfWVVWMlJHQih5aDJf ZXYsIHloMl9vZCwgdTJfZXYsIHYyX2V2LCA0LCA0LCA2LCA2KTsKPj4gKyAgICAgICAgV1JJVEVf WVVWMlJHQih5aDJfZXYsIHloMl9vZCwgdTJfb2QsIHYyX29kLCA1LCA1LCA2LCA2KTsKPj4gKyAg ICAgICAgV1JJVEVfWVVWMlJHQih5aDJfZXYsIHloMl9vZCwgdTJfZXYsIHYyX2V2LCA2LCA2LCA3 LCA3KTsKPj4gKyAgICAgICAgV1JJVEVfWVVWMlJHQih5aDJfZXYsIHloMl9vZCwgdTJfb2QsIHYy X29kLCA3LCA3LCA3LCA3KTsKPj4gKyAgICB9Cj4+ICsgICAgaWYgKHJlcyA+PSAzMikgewo+PiAr ICAgICAgICBpbnQgWTEsIFkyLCBVLCBWLCBjb3VudF9sdW0gPSBjb3VudCA8PCAxOwo+PiArICAg ICAgICBfX20yNTZpIGxfc3JjMSwgbF9zcmMyLCB1X3NyYywgdl9zcmM7Cj4+ICsgICAgICAgIF9f bTI1NmkgeWxfZXYsIHlsX29kLCB5aF9ldiwgeWhfb2Q7Cj4+ICsgICAgICAgIF9fbTI1NmkgdV9l diwgdV9vZCwgdl9ldiwgdl9vZCwgdGVtcDsKPj4gKwo+PiArICAgICAgICB5bF9ldiA9IF9fbGFz eF94dmxkcmVwbF93KCZ0LCAwKTsKPj4gKyAgICAgICAgeWxfb2QgPSB5bF9ldjsKPj4gKyAgICAg ICAgeWhfZXYgPSB5bF9ldjsKPj4gKyAgICAgICAgeWhfb2QgPSB5bF9ldjsKPj4gKyAgICAgICAg dV9ldiAgPSB5bF9ldjsKPj4gKyAgICAgICAgdl9ldiAgPSB5bF9ldjsKPj4gKyAgICAgICAgdV9v ZCAgPSB5bF9ldjsKPj4gKyAgICAgICAgdl9vZCAgPSB5bF9ldjsKPj4gKyAgICAgICAgZm9yIChq ID0gMDsgaiA8IGx1bUZpbHRlclNpemU7IGorKykgewo+PiArICAgICAgICAgICAgdGVtcCAgID0g X19sYXN4X3h2bGRyZXBsX2goKGx1bUZpbHRlciArIGopLCAwKTsKPj4gKyAgICAgICAgICAgIERV UDJfQVJHMihfX2xhc3hfeHZsZCwgbHVtU3JjW2pdICsgY291bnRfbHVtLCAwLCBsdW1TcmNbal0g KyBjb3VudF9sdW0sCj4+ICsgICAgICAgICAgICAgICAgICAgICAgMzIsIGxfc3JjMSwgbF9zcmMy KTsKPj4gKyAgICAgICAgICAgIHlsX2V2ICA9IF9fbGFzeF94dm1hZGR3ZXZfd19oKHlsX2V2LCB0 ZW1wLCBsX3NyYzEpOwo+PiArICAgICAgICAgICAgeWxfb2QgID0gX19sYXN4X3h2bWFkZHdvZF93 X2goeWxfb2QsIHRlbXAsIGxfc3JjMSk7Cj4+ICsgICAgICAgICAgICB5aF9ldiAgPSBfX2xhc3hf eHZtYWRkd2V2X3dfaCh5aF9ldiwgdGVtcCwgbF9zcmMyKTsKPj4gKyAgICAgICAgICAgIHloX29k ICA9IF9fbGFzeF94dm1hZGR3b2Rfd19oKHloX29kLCB0ZW1wLCBsX3NyYzIpOwo+PiArICAgICAg ICB9Cj4+ICsgICAgICAgIGZvciAoaiA9IDA7IGogPCBjaHJGaWx0ZXJTaXplOyBqKyspIHsKPj4g KyAgICAgICAgICAgIERVUDJfQVJHMihfX2xhc3hfeHZsZCwgY2hyVVNyY1tqXSArIGNvdW50LCAw LCBjaHJWU3JjW2pdICsgY291bnQsIDAsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgdV9zcmMs IHZfc3JjKTsKPj4gKyAgICAgICAgICAgIHRlbXAgID0gX19sYXN4X3h2bGRyZXBsX2goKGNockZp bHRlciArIGopLCAwKTsKPj4gKyAgICAgICAgICAgIHVfZXYgID0gX19sYXN4X3h2bWFkZHdldl93 X2godV9ldiwgdGVtcCwgdV9zcmMpOwo+PiArICAgICAgICAgICAgdV9vZCAgPSBfX2xhc3hfeHZt YWRkd29kX3dfaCh1X29kLCB0ZW1wLCB1X3NyYyk7Cj4+ICsgICAgICAgICAgICB2X2V2ICA9IF9f bGFzeF94dm1hZGR3ZXZfd19oKHZfZXYsIHRlbXAsIHZfc3JjKTsKPj4gKyAgICAgICAgICAgIHZf b2QgID0gX19sYXN4X3h2bWFkZHdvZF93X2godl9vZCwgdGVtcCwgdl9zcmMpOwo+PiArICAgICAg ICB9Cj4+ICsgICAgICAgIHlsX2V2ID0gX19sYXN4X3h2c3JhaV93KHlsX2V2LCAxOSk7Cj4+ICsg ICAgICAgIHloX2V2ID0gX19sYXN4X3h2c3JhaV93KHloX2V2LCAxOSk7Cj4+ICsgICAgICAgIHls X29kID0gX19sYXN4X3h2c3JhaV93KHlsX29kLCAxOSk7Cj4+ICsgICAgICAgIHloX29kID0gX19s YXN4X3h2c3JhaV93KHloX29kLCAxOSk7Cj4+ICsgICAgICAgIHVfZXYgID0gX19sYXN4X3h2c3Jh aV93KHVfZXYsIDE5KTsKPj4gKyAgICAgICAgdl9ldiAgPSBfX2xhc3hfeHZzcmFpX3codl9ldiwg MTkpOwo+PiArICAgICAgICB1X29kICA9IF9fbGFzeF94dnNyYWlfdyh1X29kLCAxOSk7Cj4+ICsg ICAgICAgIHZfb2QgID0gX19sYXN4X3h2c3JhaV93KHZfb2QsIDE5KTsKPj4gKyAgICAgICAgdV9l diAgPSBfX2xhc3hfeHZhZGRfdyh1X2V2LCBoZWFkcm9vbSk7Cj4+ICsgICAgICAgIHZfZXYgID0g X19sYXN4X3h2YWRkX3codl9ldiwgaGVhZHJvb20pOwo+PiArICAgICAgICB1X29kICA9IF9fbGFz eF94dmFkZF93KHVfb2QsIGhlYWRyb29tKTsKPj4gKyAgICAgICAgdl9vZCAgPSBfX2xhc3hfeHZh ZGRfdyh2X29kLCBoZWFkcm9vbSk7Cj4+ICsgICAgICAgIFdSSVRFX1lVVjJSR0IoeWxfZXYsIHls X29kLCB1X2V2LCB2X2V2LCAwLCAwLCAwLCAwKTsKPj4gKyAgICAgICAgV1JJVEVfWVVWMlJHQih5 bF9ldiwgeWxfb2QsIHVfb2QsIHZfb2QsIDEsIDEsIDAsIDApOwo+PiArICAgICAgICBXUklURV9Z VVYyUkdCKHlsX2V2LCB5bF9vZCwgdV9ldiwgdl9ldiwgMiwgMiwgMSwgMSk7Cj4+ICsgICAgICAg IFdSSVRFX1lVVjJSR0IoeWxfZXYsIHlsX29kLCB1X29kLCB2X29kLCAzLCAzLCAxLCAxKTsKPj4g KyAgICAgICAgV1JJVEVfWVVWMlJHQih5bF9ldiwgeWxfb2QsIHVfZXYsIHZfZXYsIDQsIDQsIDIs IDIpOwo+PiArICAgICAgICBXUklURV9ZVVYyUkdCKHlsX2V2LCB5bF9vZCwgdV9vZCwgdl9vZCwg NSwgNSwgMiwgMik7Cj4+ICsgICAgICAgIFdSSVRFX1lVVjJSR0IoeWxfZXYsIHlsX29kLCB1X2V2 LCB2X2V2LCA2LCA2LCAzLCAzKTsKPj4gKyAgICAgICAgV1JJVEVfWVVWMlJHQih5bF9ldiwgeWxf b2QsIHVfb2QsIHZfb2QsIDcsIDcsIDMsIDMpOwo+PiArICAgICAgICBXUklURV9ZVVYyUkdCKHlo X2V2LCB5aF9vZCwgdV9ldiwgdl9ldiwgMCwgMCwgNCwgNCk7Cj4+ICsgICAgICAgIFdSSVRFX1lV VjJSR0IoeWhfZXYsIHloX29kLCB1X29kLCB2X29kLCAxLCAxLCA0LCA0KTsKPj4gKyAgICAgICAg V1JJVEVfWVVWMlJHQih5aF9ldiwgeWhfb2QsIHVfZXYsIHZfZXYsIDIsIDIsIDUsIDUpOwo+PiAr ICAgICAgICBXUklURV9ZVVYyUkdCKHloX2V2LCB5aF9vZCwgdV9vZCwgdl9vZCwgMywgMywgNSwg NSk7Cj4+ICsgICAgICAgIFdSSVRFX1lVVjJSR0IoeWhfZXYsIHloX29kLCB1X2V2LCB2X2V2LCA0 LCA0LCA2LCA2KTsKPj4gKyAgICAgICAgV1JJVEVfWVVWMlJHQih5aF9ldiwgeWhfb2QsIHVfb2Qs IHZfb2QsIDUsIDUsIDYsIDYpOwo+PiArICAgICAgICBXUklURV9ZVVYyUkdCKHloX2V2LCB5aF9v ZCwgdV9ldiwgdl9ldiwgNiwgNiwgNywgNyk7Cj4+ICsgICAgICAgIFdSSVRFX1lVVjJSR0IoeWhf ZXYsIHloX29kLCB1X29kLCB2X29kLCA3LCA3LCA3LCA3KTsKPj4gKyAgICAgICAgcmVzIC09IDMy Owo+PiArICAgIH0KPj4gKyAgICBpZiAocmVzID49IDE2KSB7Cj4+ICsgICAgICAgIGludCBZMSwg WTIsIFUsIFY7Cj4+ICsgICAgICAgIGludCBjb3VudF9sdW0gPSBjb3VudCA8PCAxOwo+PiArICAg ICAgICBfX20yNTZpIGxfc3JjLCB1X3NyYywgdl9zcmM7Cj4+ICsgICAgICAgIF9fbTI1NmkgeV9l diwgeV9vZCwgdSwgdiwgdGVtcDsKPj4gKwo+PiArICAgICAgICB5X2V2ID0gX19sYXN4X3h2bGRy ZXBsX3coJnQsIDApOwo+PiArICAgICAgICB5X29kID0geV9ldjsKPj4gKyAgICAgICAgdSAgICA9 IHlfZXY7Cj4+ICsgICAgICAgIHYgICAgPSB5X2V2Owo+PiArICAgICAgICBmb3IgKGogPSAwOyBq IDwgbHVtRmlsdGVyU2l6ZTsgaisrKSB7Cj4+ICsgICAgICAgICAgICB0ZW1wICA9IF9fbGFzeF94 dmxkcmVwbF9oKChsdW1GaWx0ZXIgKyBqKSwgMCk7Cj4+ICsgICAgICAgICAgICBsX3NyYyA9IF9f bGFzeF94dmxkKGx1bVNyY1tqXSArIGNvdW50X2x1bSwgMCk7Cj4+ICsgICAgICAgICAgICB5X2V2 ICA9IF9fbGFzeF94dm1hZGR3ZXZfd19oKHlfZXYsIHRlbXAsIGxfc3JjKTsKPj4gKyAgICAgICAg ICAgIHlfb2QgID0gX19sYXN4X3h2bWFkZHdvZF93X2goeV9vZCwgdGVtcCwgbF9zcmMpOwo+PiAr ICAgICAgICB9Cj4+ICsgICAgICAgIGZvciAoaiA9IDA7IGogPCBjaHJGaWx0ZXJTaXplOyBqKysp IHsKPj4gKyAgICAgICAgICAgIERVUDJfQVJHMihfX2xhc3hfeHZsZCwgY2hyVVNyY1tqXSArIGNv dW50LCAwLCBjaHJWU3JjW2pdICsgY291bnQsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgMCwg dV9zcmMsIHZfc3JjKTsKPj4gKyAgICAgICAgICAgIHRlbXAgID0gX19sYXN4X3h2bGRyZXBsX2go KGNockZpbHRlciArIGopLCAwKTsKPj4gKyAgICAgICAgICAgIHVfc3JjID0gX19sYXN4X3ZleHQy eHZfd19oKHVfc3JjKTsKPj4gKyAgICAgICAgICAgIHZfc3JjID0gX19sYXN4X3ZleHQyeHZfd19o KHZfc3JjKTsKPj4gKyAgICAgICAgICAgIHUgICAgID0gX19sYXN4X3h2bWFkZHdldl93X2godSwg dGVtcCwgdV9zcmMpOwo+PiArICAgICAgICAgICAgdiAgICAgPSBfX2xhc3hfeHZtYWRkd2V2X3df aCh2LCB0ZW1wLCB2X3NyYyk7Cj4+ICsgICAgICAgIH0KPj4gKyAgICAgICAgeV9ldiA9IF9fbGFz eF94dnNyYWlfdyh5X2V2LCAxOSk7Cj4+ICsgICAgICAgIHlfb2QgPSBfX2xhc3hfeHZzcmFpX3co eV9vZCwgMTkpOwo+PiArICAgICAgICB1ICAgID0gX19sYXN4X3h2c3JhaV93KHUsIDE5KTsKPj4g KyAgICAgICAgdiAgICA9IF9fbGFzeF94dnNyYWlfdyh2LCAxOSk7Cj4+ICsgICAgICAgIHUgICAg PSBfX2xhc3hfeHZhZGRfdyh1LCBoZWFkcm9vbSk7Cj4+ICsgICAgICAgIHYgICAgPSBfX2xhc3hf eHZhZGRfdyh2LCBoZWFkcm9vbSk7Cj4+ICsgICAgICAgIFdSSVRFX1lVVjJSR0IoeV9ldiwgeV9v ZCwgdSwgdiwgMCwgMCwgMCwgMCk7Cj4+ICsgICAgICAgIFdSSVRFX1lVVjJSR0IoeV9ldiwgeV9v ZCwgdSwgdiwgMSwgMSwgMSwgMSk7Cj4+ICsgICAgICAgIFdSSVRFX1lVVjJSR0IoeV9ldiwgeV9v ZCwgdSwgdiwgMiwgMiwgMiwgMik7Cj4+ICsgICAgICAgIFdSSVRFX1lVVjJSR0IoeV9ldiwgeV9v ZCwgdSwgdiwgMywgMywgMywgMyk7Cj4+ICsgICAgICAgIFdSSVRFX1lVVjJSR0IoeV9ldiwgeV9v ZCwgdSwgdiwgNCwgNCwgNCwgNCk7Cj4+ICsgICAgICAgIFdSSVRFX1lVVjJSR0IoeV9ldiwgeV9v ZCwgdSwgdiwgNSwgNSwgNSwgNSk7Cj4+ICsgICAgICAgIFdSSVRFX1lVVjJSR0IoeV9ldiwgeV9v ZCwgdSwgdiwgNiwgNiwgNiwgNik7Cj4+ICsgICAgICAgIFdSSVRFX1lVVjJSR0IoeV9ldiwgeV9v ZCwgdSwgdiwgNywgNywgNywgNyk7Cj4+ICsgICAgICAgIHJlcyAtPSAxNjsKPj4gKyAgICB9Cj4+ ICsgICAgaWYgKHJlcyA+PSA4KSB7Cj4+ICsgICAgICAgIGludCBZMSwgWTIsIFUsIFY7Cj4+ICsg ICAgICAgIGludCBjb3VudF9sdW0gPSBjb3VudCA8PCAxOwo+PiArICAgICAgICBfX20yNTZpIGxf c3JjLCB1X3NyYywgdl9zcmM7Cj4+ICsgICAgICAgIF9fbTI1NmkgeV9ldiwgdXYsIHRlbXA7Cj4+ ICsKPj4gKyAgICAgICAgeV9ldiA9IF9fbGFzeF94dmxkcmVwbF93KCZ0LCAwKTsKPj4gKyAgICAg ICAgdXYgICA9IHlfZXY7Cj4+ICsgICAgICAgIGZvciAoaiA9IDA7IGogPCBsdW1GaWx0ZXJTaXpl OyBqKyspIHsKPj4gKyAgICAgICAgICAgIHRlbXAgID0gX19sYXN4X3h2bGRyZXBsX2goKGx1bUZp bHRlciArIGopLCAwKTsKPj4gKyAgICAgICAgICAgIGxfc3JjID0gX19sYXN4X3h2bGQobHVtU3Jj W2pdICsgY291bnRfbHVtLCAwKTsKPj4gKyAgICAgICAgICAgIGxfc3JjID0gX19sYXN4X3ZleHQy eHZfd19oKGxfc3JjKTsKPj4gKyAgICAgICAgICAgIHlfZXYgID0gX19sYXN4X3h2bWFkZHdldl93 X2goeV9ldiwgdGVtcCwgbF9zcmMpOwo+PiArICAgICAgICB9Cj4+ICsgICAgICAgIGZvciAoaiA9 IDA7IGogPCBjaHJGaWx0ZXJTaXplOyBqKyspIHsKPj4gKyAgICAgICAgICAgIHVfc3JjID0gX19s YXN4X3h2bGRyZXBsX2QoKGNoclVTcmNbal0gKyBjb3VudCksIDApOwo+PiArICAgICAgICAgICAg dl9zcmMgPSBfX2xhc3hfeHZsZHJlcGxfZCgoY2hyVlNyY1tqXSArIGNvdW50KSwgMCk7Cj4+ICsg ICAgICAgICAgICB0ZW1wICA9IF9fbGFzeF94dmxkcmVwbF9oKChjaHJGaWx0ZXIgKyBqKSwgMCk7 Cj4+ICsgICAgICAgICAgICB1X3NyYyA9IF9fbGFzeF94dmlsdmxfZCh2X3NyYywgdV9zcmMpOwo+ PiArICAgICAgICAgICAgdV9zcmMgPSBfX2xhc3hfdmV4dDJ4dl93X2godV9zcmMpOwo+PiArICAg ICAgICAgICAgdXYgICAgPSBfX2xhc3hfeHZtYWRkd2V2X3dfaCh1diwgdGVtcCwgdV9zcmMpOwo+ PiArICAgICAgICB9Cj4+ICsgICAgICAgIHlfZXYgPSBfX2xhc3hfeHZzcmFpX3coeV9ldiwgMTkp Owo+PiArICAgICAgICB1diAgID0gX19sYXN4X3h2c3JhaV93KHV2LCAxOSk7Cj4+ICsgICAgICAg IHV2ICAgPSBfX2xhc3hfeHZhZGRfdyh1diwgaGVhZHJvb20pOwo+PiArICAgICAgICBXUklURV9Z VVYyUkdCKHlfZXYsIHlfZXYsIHV2LCB1diwgMCwgMSwgMCwgNCk7Cj4+ICsgICAgICAgIFdSSVRF X1lVVjJSR0IoeV9ldiwgeV9ldiwgdXYsIHV2LCAyLCAzLCAxLCA1KTsKPj4gKyAgICAgICAgV1JJ VEVfWVVWMlJHQih5X2V2LCB5X2V2LCB1diwgdXYsIDQsIDUsIDIsIDYpOwo+PiArICAgICAgICBX UklURV9ZVVYyUkdCKHlfZXYsIHlfZXYsIHV2LCB1diwgNiwgNywgMywgNyk7Cj4+ICsgICAgfQo+ PiArICAgIGZvciAoOyBjb3VudCA8IGxlbl9jb3VudDsgY291bnQrKykgewo+PiArICAgICAgICBp bnQgWTEgPSAxIDw8IDE4Owo+PiArICAgICAgICBpbnQgWTIgPSBZMTsKPj4gKyAgICAgICAgaW50 IFUgID0gWTE7Cj4+ICsgICAgICAgIGludCBWICA9IFkxOwo+PiArCj4+ICsgICAgICAgIGZvciAo aiA9IDA7IGogPCBsdW1GaWx0ZXJTaXplOyBqKyspIHsKPj4gKyAgICAgICAgICAgIFkxICs9IGx1 bVNyY1tqXVtjb3VudCAqIDJdICAgICAqIGx1bUZpbHRlcltqXTsKPj4gKyAgICAgICAgICAgIFky ICs9IGx1bVNyY1tqXVtjb3VudCAqIDIgKyAxXSAqIGx1bUZpbHRlcltqXTsKPj4gKyAgICAgICAg fQo+PiArICAgICAgICBmb3IgKGogPSAwOyBqIDwgY2hyRmlsdGVyU2l6ZTsgaisrKSB7Cj4+ICsg ICAgICAgICAgICBVICs9IGNoclVTcmNbal1bY291bnRdICogY2hyRmlsdGVyW2pdOwo+PiArICAg ICAgICAgICAgViArPSBjaHJWU3JjW2pdW2NvdW50XSAqIGNockZpbHRlcltqXTsKPj4gKyAgICAg ICAgfQo+PiArICAgICAgICBZMSA+Pj0gMTk7Cj4+ICsgICAgICAgIFkyID4+PSAxOTsKPj4gKyAg ICAgICAgVSAgPj49IDE5Owo+PiArICAgICAgICBWICA+Pj0gMTk7Cj4+ICsgICAgICAgIHIgPSAg Yy0+dGFibGVfclZbViArIFlVVlJHQl9UQUJMRV9IRUFEUk9PTV07Cj4+ICsgICAgICAgIGcgPSAo Yy0+dGFibGVfZ1VbVSArIFlVVlJHQl9UQUJMRV9IRUFEUk9PTV0gKwo+PiArICAgICAgICAgICAg IGMtPnRhYmxlX2dWW1YgKyBZVVZSR0JfVEFCTEVfSEVBRFJPT01dKTsKPj4gKyAgICAgICAgYiA9 ICBjLT50YWJsZV9iVVtVICsgWVVWUkdCX1RBQkxFX0hFQURST09NXTsKPj4gKwo+PiArICAgICAg ICB5dXYycmdiX3dyaXRlKGRlc3QsIGNvdW50LCBZMSwgWTIsIDAsIDAsCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgciwgZywgYiwgeSwgdGFyZ2V0LCAwKTsKPj4gKyAgICB9Cj4+ICt9Cj4+ICsK Pj4gK3N0YXRpYyB2b2lkCj4+ICt5dXYycmdiXzJfdGVtcGxhdGVfbGFzeChTd3NDb250ZXh0ICpj LCBjb25zdCBpbnQxNl90ICpidWZbMl0sCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBpbnQxNl90ICp1YnVmWzJdLCBjb25zdCBpbnQxNl90ICp2YnVmWzJdLAo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgaW50MTZfdCAqYWJ1ZlsyXSwgdWludDhfdCAqZGVzdCwgaW50 IGRzdFcsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeWFscGhhLCBpbnQgdXZhbHBo YSwgaW50IHksCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIEFWUGl4ZWxGb3JtYXQg dGFyZ2V0LCBpbnQgaGFzQWxwaGEpCj4+ICt7Cj4+ICsgICAgY29uc3QgaW50MTZfdCAqYnVmMCAg PSBidWZbMF0sICAqYnVmMSAgPSBidWZbMV0sCj4+ICsgICAgICAgICAgICAgICAgICAqdWJ1ZjAg PSB1YnVmWzBdLCAqdWJ1ZjEgPSB1YnVmWzFdLAo+PiArICAgICAgICAgICAgICAgICAgKnZidWYw ID0gdmJ1ZlswXSwgKnZidWYxID0gdmJ1ZlsxXTsKPj4gKyAgICBpbnQgeWFscGhhMSAgID0gNDA5 NiAtIHlhbHBoYTsKPj4gKyAgICBpbnQgdXZhbHBoYTEgID0gNDA5NiAtIHV2YWxwaGE7Cj4+ICsg ICAgaW50IGksIGNvdW50ICA9IDA7Cj4+ICsgICAgaW50IGxlbiAgICAgICA9IGRzdFcgLSAxNTsK Pj4gKyAgICBpbnQgbGVuX2NvdW50ID0gKGRzdFcgKyAxKSA+PiAxOwo+PiArICAgIGNvbnN0IHZv aWQgKnIsICpnLCAqYjsKPj4gKyAgICBpbnQgaGVhZCAgPSBZVVZSR0JfVEFCTEVfSEVBRFJPT007 Cj4+ICsgICAgX19tMjU2aSB2X3lhbHBoYTEgID0gX19sYXN4X3h2cmVwbGdyMnZyX3coeWFscGhh MSk7Cj4+ICsgICAgX19tMjU2aSB2X3V2YWxwaGExID0gX19sYXN4X3h2cmVwbGdyMnZyX3codXZh bHBoYTEpOwo+PiArICAgIF9fbTI1Nmkgdl95YWxwaGEgICA9IF9fbGFzeF94dnJlcGxncjJ2cl93 KHlhbHBoYSk7Cj4+ICsgICAgX19tMjU2aSB2X3V2YWxwaGEgID0gX19sYXN4X3h2cmVwbGdyMnZy X3codXZhbHBoYSk7Cj4+ICsgICAgX19tMjU2aSBoZWFkcm9vbSAgID0gX19sYXN4X3h2cmVwbGdy MnZyX3coaGVhZCk7Cj4+ICsKPj4gKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpICs9IDE2KSB7 Cj4+ICsgICAgICAgIGludCBZMSwgWTIsIFUsIFY7Cj4+ICsgICAgICAgIGludCBpX2RleCA9IGkg PDwgMTsKPj4gKyAgICAgICAgaW50IGNfZGV4ID0gY291bnQgPDwgMTsKPj4gKyAgICAgICAgX19t MjU2aSB5MF9oLCB5MF9sLCB5MCwgdTAsIHYwOwo+PiArICAgICAgICBfX20yNTZpIHkxX2gsIHkx X2wsIHkxLCB1MSwgdjE7Cj4+ICsgICAgICAgIF9fbTI1NmkgeV9sLCB5X2gsIHUsIHY7Cj4+ICsK Pj4gKyAgICAgICAgRFVQNF9BUkcyKF9fbGFzeF94dmxkeCwgYnVmMCwgaV9kZXgsIHVidWYwLCBj X2RleCwgdmJ1ZjAsIGNfZGV4LAo+PiArICAgICAgICAgICAgICAgICAgYnVmMSwgaV9kZXgsIHkw LCB1MCwgdjAsIHkxKTsKPj4gKyAgICAgICAgRFVQMl9BUkcyKF9fbGFzeF94dmxkeCwgdWJ1ZjEs IGNfZGV4LCB2YnVmMSwgY19kZXgsIHUxLCB2MSk7Cj4+ICsgICAgICAgIERVUDJfQVJHMihfX2xh c3hfeHZzbGx3aWxfd19oLCB5MCwgMCwgeTEsIDAsIHkwX2wsIHkxX2wpOwo+PiArICAgICAgICBE VVAyX0FSRzEoX19sYXN4X3h2ZXh0aF93X2gsIHkwLCB5MSwgeTBfaCwgeTFfaCk7Cj4+ICsgICAg ICAgIERVUDRfQVJHMShfX2xhc3hfdmV4dDJ4dl93X2gsIHUwLCB1MSwgdjAsIHYxLCB1MCwgdTEs IHYwLCB2MSk7Cj4+ICsgICAgICAgIHkwX2wgPSBfX2xhc3hfeHZtdWxfdyh5MF9sLCB2X3lhbHBo YTEpOwo+PiArICAgICAgICB5MF9oID0gX19sYXN4X3h2bXVsX3coeTBfaCwgdl95YWxwaGExKTsK Pj4gKyAgICAgICAgdTAgICA9IF9fbGFzeF94dm11bF93KHUwLCB2X3V2YWxwaGExKTsKPj4gKyAg ICAgICAgdjAgICA9IF9fbGFzeF94dm11bF93KHYwLCB2X3V2YWxwaGExKTsKPj4gKyAgICAgICAg eV9sICA9IF9fbGFzeF94dm1hZGRfdyh5MF9sLCB2X3lhbHBoYSwgeTFfbCk7Cj4+ICsgICAgICAg IHlfaCAgPSBfX2xhc3hfeHZtYWRkX3coeTBfaCwgdl95YWxwaGEsIHkxX2gpOwo+PiArICAgICAg ICB1ICAgID0gX19sYXN4X3h2bWFkZF93KHUwLCB2X3V2YWxwaGEsIHUxKTsKPj4gKyAgICAgICAg diAgICA9IF9fbGFzeF94dm1hZGRfdyh2MCwgdl91dmFscGhhLCB2MSk7Cj4+ICsgICAgICAgIHlf bCAgPSBfX2xhc3hfeHZzcmFpX3coeV9sLCAxOSk7Cj4+ICsgICAgICAgIHlfaCAgPSBfX2xhc3hf eHZzcmFpX3coeV9oLCAxOSk7Cj4+ICsgICAgICAgIHUgICAgPSBfX2xhc3hfeHZzcmFpX3codSwg MTkpOwo+PiArICAgICAgICB2ICAgID0gX19sYXN4X3h2c3JhaV93KHYsIDE5KTsKPj4gKyAgICAg ICAgdSAgICA9IF9fbGFzeF94dmFkZF93KHUsIGhlYWRyb29tKTsKPj4gKyAgICAgICAgdiAgICA9 IF9fbGFzeF94dmFkZF93KHYsIGhlYWRyb29tKTsKPj4gKyAgICAgICAgV1JJVEVfWVVWMlJHQih5 X2wsIHlfbCwgdSwgdiwgMCwgMSwgMCwgMCk7Cj4+ICsgICAgICAgIFdSSVRFX1lVVjJSR0IoeV9s LCB5X2wsIHUsIHYsIDIsIDMsIDEsIDEpOwo+PiArICAgICAgICBXUklURV9ZVVYyUkdCKHlfaCwg eV9oLCB1LCB2LCAwLCAxLCAyLCAyKTsKPj4gKyAgICAgICAgV1JJVEVfWVVWMlJHQih5X2gsIHlf aCwgdSwgdiwgMiwgMywgMywgMyk7Cj4+ICsgICAgICAgIFdSSVRFX1lVVjJSR0IoeV9sLCB5X2ws IHUsIHYsIDQsIDUsIDQsIDQpOwo+PiArICAgICAgICBXUklURV9ZVVYyUkdCKHlfbCwgeV9sLCB1 LCB2LCA2LCA3LCA1LCA1KTsKPj4gKyAgICAgICAgV1JJVEVfWVVWMlJHQih5X2gsIHlfaCwgdSwg diwgNCwgNSwgNiwgNik7Cj4+ICsgICAgICAgIFdSSVRFX1lVVjJSR0IoeV9oLCB5X2gsIHUsIHYs IDYsIDcsIDcsIDcpOwo+PiArICAgIH0KPj4gKyAgICBpZiAoZHN0VyAtIGkgPj0gOCkgewo+PiAr ICAgICAgICBpbnQgWTEsIFkyLCBVLCBWOwo+PiArICAgICAgICBpbnQgaV9kZXggPSBpIDw8IDE7 Cj4+ICsgICAgICAgIF9fbTI1NmkgeTBfbCwgeTAsIHUwLCB2MDsKPj4gKyAgICAgICAgX19tMjU2 aSB5MV9sLCB5MSwgdTEsIHYxOwo+PiArICAgICAgICBfX20yNTZpIHlfbCwgdSwgdjsKPj4gKwo+ PiArICAgICAgICB5MCAgID0gX19sYXN4X3h2bGR4KGJ1ZjAsIGlfZGV4KTsKPiAKPiAxLiBOb3Qg bG9uZyBhZ28sIEkgdHJpZWQgdG8gY29uc3RpZnkgdGhlIHNyYyBwb2ludGVyIG9mIHNldmVyYWwg YXNtCj4gZnVuY3Rpb25zIGFuZCBub3RpY2VkIHRoYXQgdGhleSBwcm9kdWNlZCBuZXcgd2Fybmlu Z3MgZm9yIGxvb25nYXJjaAo+IChhY2NvcmRpbmcgdG8gcGF0Y2h3b3JrOgo+IGh0dHBzOi8vcGF0 Y2h3b3JrLmZmbXBlZy5vcmcvcHJvamVjdC9mZm1wZWcvcGF0Y2gvREI2UFIwMTAxTUIyMjE0MTc4 RDNFNkI4RENBNUI4NkY4MTk4RjlBOUBEQjZQUjAxMDFNQjIyMTQuZXVycHJkMDEucHJvZC5leGNo YW5nZWxhYnMuY29tLyksCj4gZXZlbiB0aG91Z2ggSSB3YXMgc3VyZSB0aGF0IHRoZSBjb2RlIGlz IGNvbnN0LWNvcnJlY3QuIEFmdGVyIGZpbmRpbmcKPiAodmlhIGh0dHBzOi8vZ2l0aHViLmNvbS9v cGVuY3Yvb3BlbmN2L3B1bGwvMjE4MzMpIGEgdG9vbGNoYWluCj4gKGh0dHBzOi8vZ2l0ZWUuY29t L3dlbnV4L2Nyb3NzLWNvbXBpbGVyLWxhLW9uLXg4NikgdGhhdCBjYW4gYnVpbGQgdGhlCj4gbGFz eCBhbmQgbHN4IGNvZGUgKHVwc3RyZWFtIEdDQyBzZWVtcyB0byBiZSBsYWNraW5nIGxzeCBhbmQg bGFzeCBzdXBwb3J0Cj4gYXQgdGhlIG1vbWVudDsgYXQgbGVhc3QsIG15IHNlbGYtY29tcGlsZWQg bG9vbmdhcmNoLUdDQyBkaWQgbm90IHN1cHBvcnQKPiBsc3ggYW5kIGxhc3gpIHRoZSBpc3N1ZSB3 YXMgY2xlYXI6IGxzeGludHJpbi5oIGFuZCBsYXN4aW50cmluLmggZG8gbm90Cj4gdXNlIGNvbnN0 IGF0IGFsbCwgZXZlbiBmb3IgZnVuY3Rpb25zIHRoYXQgb25seSByZWFkIGRhdGEgKEkgcHJlc3Vt ZSB0aGUKPiB2bCBpbiBfX2xzeF92bGR4IHN0YW5kcyBmb3IgInZlY3RvciBsb2FkIj8pLgo+IFNv IEkgc2VudCBhbm90aGVyIGl0ZXJhdGlvbgo+IGh0dHBzOi8vZmZtcGVnLm9yZy9waXBlcm1haWwv ZmZtcGVnLWRldmVsLzIwMjItQXVndXN0LzI5OTU2Mi5odG1sIG9mCj4gdGhhdCBwYXRjaHNldCB0 aGF0IG5vdyBhZGRlZCB3cmFwcGVycyBmb3IgX19sc3hfdmxkeCgpIGFuZAo+IF9fbGFzeF94dmxk eCgpIGFuZCBjYydlZCB5b3UgYW5kIHNvbWUgb3RoZXIgZGV2ZWxvcGVycyBmcm9tIGxvb25nc29u IHRvCj4gYWxlcnQgeW91IG9mIHRoZSBpc3N1ZSBpbiB0aGUgaG9wZSB0aGF0IHlvdSBmaXggdGhl IGhlYWRlcnMsIHNvIHRoYXQgbXkKPiB3cmFwcGVycyB3b3VsZG4ndCBuZWVkIHRvIGJlIGFwcGxp ZWQuIFRoYXQgZGlkbid0IHdvcmssIGFzIG15IG1haWxzCj4gY291bGQgbm90IGJlIGRlbGl2ZXJl ZCB0byB5b3UuIFNvIEkgYXBwbGllZCB0aGUgcGF0Y2hzZXQuCj4gMi4gWW91IHVzZSBfX2xhc3hf eHZsZHgoKSB0byByZWFkIGZyb20gYSBjb25zdCBpbnQxNl90LiBUaGlzIHdpbGwgZ2l2ZQo+IG5l dyB3YXJuaW5ncyB1bmxlc3MgdGhlIGFib3ZlIGlzc3VlIGhhcyBiZWVuIGZpeGVkLiBIYXMgaXQ/ Cj4gMy4gSSBkb24ndCBrbm93IHdoZXRoZXIgaXQgaGFzLCBhcyBwYXRjaHdvcmsncyBmYXRlIHRl c3RzIGRvbid0IHdvcmsgZm9yCj4gYSBmZXcgZGF5cyBhbHJlYWR5LiBHaXZlbiB0aGF0IHRoZSBt YWlscyBJIHJlY2VpdmUgZnJvbSBwYXRjaHdvcmsgd2hlbgo+IGl0IGRvZXNuJ3QgbGlrZSBhIGNv bW1pdCBtZXNzYWdlIGFycml2ZSBmcm9tICJQYXRjaHdvcmsKPiA8eWluc2hpeW91LWhmQGxvb25n c29uLmNuPiIgSSBwcmVzdW1lIHRoYXQgbG9vbmdzb24gaXMgbm93IHNvbWVob3cKPiBydW5uaW5n IHBhdGNod29yaywgc28geW91IHNob3VsZCBiZSBhYmxlIHRvIGluZm9ybSB0aGUgcmlnaHQgcGVv cGxlIHRvCj4gZml4IGl0Lgo+IDQuIElmIHlvdSBmaXhlZCB0aGUgY29uc3QtaXNzdWUsIGNhbiB5 b3UgcGxlYXNlIG1ha2UgYW4gdXBkYXRlZAo+IHRvb2xjaGFpbiB3aXRoIGxzeCBhbmQgbGFzeCBz dXBwb3J0IGVuYWJsZWQgYXZhaWxhYmxlIHRvIHVzPwo+IAo+IC0gQW5kcmVhcwo+IAoKSGkgQW5k cmVhcywKClNvcnJ5IGZvciB0aGUgbGF0ZSByZXBseS4KVGhpcyBpc3N1ZSB3aWxsIGJlIGZpeGVk IGJ5IHVzaW5nIGNvbnN0IGZvciB2MSBvZiBfX2xzeF92bGR4LCBhbmQgSSB3aWxsIHVwZGF0ZSB0 b29sY2hhaW4gb2YgTG9vbmdBcmNoIHBhdGNod29yayBydW5uZXIgQVNBUC4KVGhhbmsgeW91IHZl cnkgbXVjaCBmb3IgYW5hbHl6aW5nIHRoaXMgcHJvYmxlbSBhbmQgZ2l2aW5nIHN1Z2dlc3Rpb24u IAoKVGhhbmtzLApTaGl5b3UKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9y ZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVu c3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVz dEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=