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 161DB4A64D for ; Tue, 2 Apr 2024 12:48:39 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5D4C468CE36; Tue, 2 Apr 2024 15:48:36 +0300 (EEST) Received: from mail-lf1-f42.google.com (mail-lf1-f42.google.com [209.85.167.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7AE9368C4B0 for ; Tue, 2 Apr 2024 15:48:29 +0300 (EEST) Received: by mail-lf1-f42.google.com with SMTP id 2adb3069b0e04-515ac73c516so4949043e87.0 for ; Tue, 02 Apr 2024 05:48:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1712062104; x=1712666904; darn=ffmpeg.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=vgRVvbaOqwRqDMYP66yfx0jBJSRxE2aWWa4OyEUwtcI=; b=eLzaPMI/mymEAV57eHhmo+FbAV0bNoUYBOvOONOpi0poevkxlqTF09vjGYiQZaoNW2 U7DDtNaS5CGn8AfA1AabmvTVPhdySzxwm4zFXpf5wou0EpkqA1K8lqh/InIe52339i44 V5epo84GmIS7qrs7TcO3fgrAgYPqrvksRjjQEceUMBxtHj2Mnv5KE3ilj7KyF3BjxeD+ AF90TlagAt9ePJUOs2Yg/Ao0MjZlChI/iaQm3VOegA+Zr/WmT21sd0k4KGo33IxerQ2f TOb7h9emyBL3xBYdHecbkfI9IEwPXLmBOELdOTVjDY5hKbXGqBVbPvuwVMuwi1byor+5 ymNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712062104; x=1712666904; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=vgRVvbaOqwRqDMYP66yfx0jBJSRxE2aWWa4OyEUwtcI=; b=e1zI7ZbrGkKj/4Qe5aaIel+G1wB97GyRmN8owPfTmpHyBmWbInPbAle2Bi3wRAhO9/ cOLqw8tYDQs8f84PjHsl0YjmEPOgAsAFGh903A3IUlPrQSiD5H7rM6G0MnXBmLDuS8Bv qGr3TNOS+FDwJo3cjgFroOGpsn1ZPMMFACiM4uXNamaQab57INwvrve5hqTv239/bdHG jiSOUFXKZ+sHYEZcXF/LVRVsASiPF5I3p4iLVtgOTryhEUtTrzxiKDuetRRgghBAliCC 4WuefZNqaJpCOyVxg+TYuTJ0GRKTyKH1J4ILIjCpU+gwUBzt1dqPGs4B61PL+B8Nb9tO t8Bw== X-Gm-Message-State: AOJu0YwZtYkquRnJ1cZpUQA/RRJAE0Wdog6K3JhlW181e6SMffvkm3M+ dSAvU96AkI5qlJVLUNCqEIlH2azVBP4oqVwYVyLHSoGnrAjOXi8m1itTxwH3iOZUVlg71faLvDe EfWgvqcTBurkc4PTtR4VBJcruACbRftcyryo= X-Google-Smtp-Source: AGHT+IE4qcPUV0a33nUKX5BoWVqmiK8G61srtYS7HxTNXsdIOD/hEkMBm+APvWoHvDOByBxIhI+TvM/NcXi2DI/mJ38= X-Received: by 2002:a19:9113:0:b0:513:dce2:9929 with SMTP id t19-20020a199113000000b00513dce29929mr5094113lfd.1.1712062103474; Tue, 02 Apr 2024 05:48:23 -0700 (PDT) MIME-Version: 1.0 References: <20240328012631.777476-1-fei.w.wang@intel.com> <20240328012631.777476-7-fei.w.wang@intel.com> In-Reply-To: <20240328012631.777476-7-fei.w.wang@intel.com> From: Nuo Mi Date: Tue, 2 Apr 2024 20:48:12 +0800 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH v1 7/7] lavc/vaapi_dec: Add VVC decoder 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: fei.w.wang@intel.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: T24gVGh1LCBNYXIgMjgsIDIwMjQgYXQgOToyN+KAr0FNIDxmZWkudy53YW5nLWF0LWludGVsLmNv bUBmZm1wZWcub3JnPiB3cm90ZToKCj4gRnJvbTogRmVpIFdhbmcgPGZlaS53LndhbmdAaW50ZWwu Y29tPgo+Cj4gU2lnbmVkLW9mZi1ieTogRmVpIFdhbmcgPGZlaS53LndhbmdAaW50ZWwuY29tPgo+ IC0tLQo+ICBDaGFuZ2Vsb2cgICAgICAgICAgICAgICAgIHwgICA0ICsKPiAgY29uZmlndXJlICAg ICAgICAgICAgICAgICB8ICAgMyArCj4gIGxpYmF2Y29kZWMvTWFrZWZpbGUgICAgICAgfCAgIDEg Kwo+ICBsaWJhdmNvZGVjL2h3YWNjZWxzLmggICAgIHwgICAxICsKPiAgbGliYXZjb2RlYy92YWFw aV9kZWNvZGUuYyB8ICAgNyArCj4gIGxpYmF2Y29kZWMvdmFhcGlfdnZjLmMgICAgfCA2NTcgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgbGliYXZjb2RlYy92ZXJzaW9u LmggICAgICB8ICAgMiArLQo+ICBsaWJhdmNvZGVjL3Z2Yy92dmNkZWMuYyAgIHwgIDE1ICstCj4g IDggZmlsZXMgY2hhbmdlZCwgNjg4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4gIGNy ZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL3ZhYXBpX3Z2Yy5jCj4KPiBkaWZmIC0tZ2l0IGEv Q2hhbmdlbG9nIGIvQ2hhbmdlbG9nCj4gaW5kZXggZTgzYTAwZTM1Yy4uMzEwOGU2NTU1OCAxMDA2 NDQKPiAtLS0gYS9DaGFuZ2Vsb2cKPiArKysgYi9DaGFuZ2Vsb2cKPiBAQCAtMSw2ICsxLDEwIEBA Cj4gIEVudHJpZXMgYXJlIHNvcnRlZCBjaHJvbm9sb2dpY2FsbHkgZnJvbSBvbGRlc3QgdG8geW91 bmdlc3Qgd2l0aGluIGVhY2gKPiByZWxlYXNlLAo+ICByZWxlYXNlcyBhcmUgc29ydGVkIGZyb20g eW91bmdlc3QgdG8gb2xkZXN0Lgo+Cj4gK3ZlcnNpb24gPG5leHQ+Ogo+ICstIFZWQyBWQUFQSSBk ZWNvZGVyCj4gKwo+ICsKPiAgdmVyc2lvbiA3LjA6Cj4gIC0gRFhWIERYVDEgZW5jb2Rlcgo+ICAt IExFQUQgTUNNUCBkZWNvZGVyCj4gZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQo+ IGluZGV4IDJhMWQyMjMxMGIuLmQ5MDJjOWFkYzggMTAwNzU1Cj4gLS0tIGEvY29uZmlndXJlCj4g KysrIGIvY29uZmlndXJlCj4gQEAgLTMyNTgsNiArMzI1OCw4IEBAIHZwOV92ZHBhdV9od2FjY2Vs X2RlcHM9InZkcGF1IFZkcFBpY3R1cmVJbmZvVlA5Igo+ICB2cDlfdmRwYXVfaHdhY2NlbF9zZWxl Y3Q9InZwOV9kZWNvZGVyIgo+ICB2cDlfdmlkZW90b29sYm94X2h3YWNjZWxfZGVwcz0idmlkZW90 b29sYm94Igo+ICB2cDlfdmlkZW90b29sYm94X2h3YWNjZWxfc2VsZWN0PSJ2cDlfZGVjb2RlciIK PiArdnZjX3ZhYXBpX2h3YWNjZWxfZGVwcz0idmFhcGkgVkFQaWN0dXJlUGFyYW1ldGVyQnVmZmVy VlZDIgo+ICt2dmNfdmFhcGlfaHdhY2NlbF9zZWxlY3Q9InZ2Y19kZWNvZGVyIgo+ICB3bXYzX2Qz ZDExdmFfaHdhY2NlbF9zZWxlY3Q9InZjMV9kM2QxMXZhX2h3YWNjZWwiCj4gIHdtdjNfZDNkMTF2 YTJfaHdhY2NlbF9zZWxlY3Q9InZjMV9kM2QxMXZhMl9od2FjY2VsIgo+ICB3bXYzX2QzZDEydmFf aHdhY2NlbF9zZWxlY3Q9InZjMV9kM2QxMnZhX2h3YWNjZWwiCj4gQEAgLTcyNTAsNiArNzI1Miw3 IEBAIGlmIGVuYWJsZWQgdmFhcGk7IHRoZW4KPiAgICAgIGNoZWNrX2NwcF9jb25kaXRpb24gdmFh cGlfMSAidmEvdmEuaCIgIlZBX0NIRUNLX1ZFUlNJT04oMSwgMCwgMCkiCj4KPiAgICAgIGNoZWNr X3R5cGUgInZhL3ZhLmggdmEvdmFfZGVjX2hldmMuaCIgIlZBUGljdHVyZVBhcmFtZXRlckJ1ZmZl ckhFVkMiCj4gKyAgICBjaGVja190eXBlICJ2YS92YS5oIHZhL3ZhX2RlY192dmMuaCIgIlZBUGlj dHVyZVBhcmFtZXRlckJ1ZmZlclZWQyIKPiAgICAgIGNoZWNrX3N0cnVjdCAidmEvdmEuaCIgIlZB RGVjUGljdHVyZVBhcmFtZXRlckJ1ZmZlclZQOSIgYml0X2RlcHRoCj4gICAgICBjaGVja19zdHJ1 Y3QgInZhL3ZhLmgiICJWQURlY1BpY3R1cmVQYXJhbWV0ZXJCdWZmZXJBVjEiIGJpdF9kZXB0aF9p ZHgKPiAgICAgIGNoZWNrX3R5cGUgICAidmEvdmEuaCB2YS92YV92cHAuaCIKPiAiVkFQcm9jRmls dGVyUGFyYW1ldGVyQnVmZmVySERSVG9uZU1hcHBpbmciCj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29k ZWMvTWFrZWZpbGUgYi9saWJhdmNvZGVjL01ha2VmaWxlCj4gaW5kZXggOWNlNmQ0NDVjMS4uMzQz YjAzNzYzNiAxMDA2NDQKPiAtLS0gYS9saWJhdmNvZGVjL01ha2VmaWxlCj4gKysrIGIvbGliYXZj b2RlYy9NYWtlZmlsZQo+IEBAIC0xMDU0LDYgKzEwNTQsNyBAQCBPQkpTLSQoQ09ORklHX1ZQOV9W QUFQSV9IV0FDQ0VMKSAgICAgICAgICArPQo+IHZhYXBpX3ZwOS5vCj4gIE9CSlMtJChDT05GSUdf VlA5X1ZEUEFVX0hXQUNDRUwpICAgICAgICAgICs9IHZkcGF1X3ZwOS5vCj4gIE9CSlMtJChDT05G SUdfVlA5X1ZJREVPVE9PTEJPWF9IV0FDQ0VMKSAgICs9IHZpZGVvdG9vbGJveF92cDkubwo+ICBP QkpTLSQoQ09ORklHX1ZQOF9RU1ZfSFdBQ0NFTCkgICAgICAgICAgICArPSBxc3ZkZWMubwo+ICtP QkpTLSQoQ09ORklHX1ZWQ19WQUFQSV9IV0FDQ0VMKSAgICAgICAgICArPSB2YWFwaV92dmMubwo+ Cj4gICMgT2JqZWN0cyBkdXBsaWNhdGVkIGZyb20gb3RoZXIgbGlicmFyaWVzIGZvciBzaGFyZWQg YnVpbGRzCj4gIFNITElCT0JKUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICs9IGxvZzJf dGFiLm8gcmV2ZXJzZS5vCj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvaHdhY2NlbHMuaCBiL2xp YmF2Y29kZWMvaHdhY2NlbHMuaAo+IGluZGV4IDUxNzFlNGM3ZDcuLjg4ZDZiOWE5YjUgMTAwNjQ0 Cj4gLS0tIGEvbGliYXZjb2RlYy9od2FjY2Vscy5oCj4gKysrIGIvbGliYXZjb2RlYy9od2FjY2Vs cy5oCj4gQEAgLTgyLDYgKzgyLDcgQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBGRkhXQWNjZWwgZmZf dnA5X252ZGVjX2h3YWNjZWw7Cj4gIGV4dGVybiBjb25zdCBzdHJ1Y3QgRkZIV0FjY2VsIGZmX3Zw OV92YWFwaV9od2FjY2VsOwo+ICBleHRlcm4gY29uc3Qgc3RydWN0IEZGSFdBY2NlbCBmZl92cDlf dmRwYXVfaHdhY2NlbDsKPiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBGRkhXQWNjZWwgZmZfdnA5X3Zp ZGVvdG9vbGJveF9od2FjY2VsOwo+ICtleHRlcm4gY29uc3Qgc3RydWN0IEZGSFdBY2NlbCBmZl92 dmNfdmFhcGlfaHdhY2NlbDsKPiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBGRkhXQWNjZWwgZmZfd212 M19kM2QxMXZhX2h3YWNjZWw7Cj4gIGV4dGVybiBjb25zdCBzdHJ1Y3QgRkZIV0FjY2VsIGZmX3dt djNfZDNkMTF2YTJfaHdhY2NlbDsKPiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBGRkhXQWNjZWwgZmZf d212M19kM2QxMnZhX2h3YWNjZWw7Cj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdmFhcGlfZGVj b2RlLmMgYi9saWJhdmNvZGVjL3ZhYXBpX2RlY29kZS5jCj4gaW5kZXggMWIxOTcyYTJhOS4uY2Vl YjFmMWExMiAxMDA2NDQKPiAtLS0gYS9saWJhdmNvZGVjL3ZhYXBpX2RlY29kZS5jCj4gKysrIGIv bGliYXZjb2RlYy92YWFwaV9kZWNvZGUuYwo+IEBAIC00NTUsNiArNDU1LDkgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCB7Cj4gICAgICBNQVAoQVYxLCAgICAgICAgIEFWMV9NQUlOLCAgICAgICAgQVYx UHJvZmlsZTApLAo+ICAgICAgTUFQKEFWMSwgICAgICAgICBBVjFfSElHSCwgICAgICAgIEFWMVBy b2ZpbGUxKSwKPiAgI2VuZGlmCj4gKyNpZiBWQV9DSEVDS19WRVJTSU9OKDEsIDIyLCAwKQo+ICsg ICAgTUFQKEgyNjYsICAgICAgICBWVkNfTUFJTl8xMCwgICAgIFZWQ01haW4xMCksCj4gKyNlbmRp Zgo+Cj4gICN1bmRlZiBNQVAKPiAgfTsKPiBAQCAtNjI3LDYgKzYzMCwxMCBAQCBzdGF0aWMgaW50 IHZhYXBpX2RlY29kZV9tYWtlX2NvbmZpZyhBVkNvZGVjQ29udGV4dAo+ICphdmN0eCwKPiAgICAg ICAgICBjYXNlIEFWX0NPREVDX0lEX1ZQODoKPiAgICAgICAgICAgICAgZnJhbWVzLT5pbml0aWFs X3Bvb2xfc2l6ZSArPSAzOwo+ICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICBjYXNlIEFW X0NPREVDX0lEX0gyNjY6Cj4gKyAgICAgICAgICAgIC8vIEFkZCBhZGRpdGlvbmFsIDE2IGZvciBt YXhpbXVtIDE2IGZyYW1lcyBkZWxheSBpbiB2dmMKPiBuYXRpdmUgZGVjb2RlLgo+ICsgICAgICAg ICAgICBmcmFtZXMtPmluaXRpYWxfcG9vbF9zaXplICs9IDMyOwo+Ck9uZSBmcmFtZSBvZiA4ayBZ VVY0NDQsIDEwIGJpdHMsIGlzIGFib3V0IDIwME1CLiBUaGlydHktdHdvIGZyYW1lcyBhbW91bnQK dG8gYXBwcm94aW1hdGVseSA2R0IuQ2FuIHdlIGR5bmFtaWNhbGx5IGFsbG9jYXRlIHRoZSBidWZm ZXIgcG9vbD8KClRoZSBzb2Z0d2FyZSBkZWNvZGVyIHJlcXVpcmVzIGEgZGVsYXkgb2YgMTYgZnJh bWVzIHRvIGVuc3VyZSBmdWxsCnV0aWxpemF0aW9uIG9mIENQVXMuIEluIHRoZSBmdXR1cmUsIHdl IG1heSBjb25zaWRlciBpbmNyZWFzaW5nIHRoaXMgdG8gMzIKb3IgZXZlbiA2NCBmcmFtZXMuCkhv d2V2ZXIsIGZvciBoYXJkd2FyZSBkZWNvZGluZywgZ2l2ZW4gdGhhdCBhbGwgcHJvY2Vzc2luZyBv Y2N1cnMgb24gdGhlCkdQVSwgd2UgZG8gbm90IHJlcXVpcmUgYW55IGRlbGF5LgoKKyAgICAgICAg ICAgIGJyZWFrOwo+ICAgICAgICAgIGRlZmF1bHQ6Cj4gICAgICAgICAgICAgIGZyYW1lcy0+aW5p dGlhbF9wb29sX3NpemUgKz0gMjsKPiAgICAgICAgICB9Cj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29k ZWMvdmFhcGlfdnZjLmMgYi9saWJhdmNvZGVjL3ZhYXBpX3Z2Yy5jCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwLi42MTQxMDA1Njg4Cj4gLS0tIC9kZXYvbnVsbAo+ICsr KyBiL2xpYmF2Y29kZWMvdmFhcGlfdnZjLmMKPiBAQCAtMCwwICsxLDY1NyBAQAo+ICsvKgo+ICsg KiBWVkMgSFcgZGVjb2RlIGFjY2VsZXJhdGlvbiB0aHJvdWdoIFZBIEFQSQo+ICsgKgo+ICsgKiBD b3B5cmlnaHQgKGMpIDIwMjQgSW50ZWwgQ29ycG9yYXRpb24KPiArICoKPiArICogVGhpcyBmaWxl IGlzIHBhcnQgb2YgRkZtcGVnLgo+ICsgKgo+ICsgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCj4gKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiArICogTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCj4gKyAqIHZl cnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgo+ICsgKgo+ICsgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPiArICogTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKPiArICogTGVz c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiArICoKPiArICog WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs IFB1YmxpYwo+ICsgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRv IHRoZSBGcmVlIFNvZnR3YXJlCj4gKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0 cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEKPiAwMjExMC0xMzAxIFVTQQo+ICsgKi8KPiAr Cj4gKyNpbmNsdWRlIDx2YS92YS5oPgo+ICsjaW5jbHVkZSA8dmEvdmFfZGVjX3Z2Yy5oPgo+ICsK PiArI2luY2x1ZGUgInZ2Yy92dmNkZWMuaCIKPiArI2luY2x1ZGUgInZ2Yy92dmNfcmVmcy5oIgo+ ICsjaW5jbHVkZSAiaHdhY2NlbF9pbnRlcm5hbC5oIgo+ICsjaW5jbHVkZSAidmFhcGlfZGVjb2Rl LmgiCj4gKwo+ICt0eXBlZGVmIHN0cnVjdCBWQUFQSURlY29kZVBpY3R1cmVWVkMgewo+ICsgICAg VkFBUElEZWNvZGVQaWN0dXJlICAgICAgICAgIHBpYzsKPiArICAgIFZBUGljdHVyZVBhcmFtZXRl ckJ1ZmZlclZWQyBwaWNfcGFyYW07Cj4gKyAgICBWQVNsaWNlUGFyYW1ldGVyQnVmZmVyVlZDICAg c2xpY2VfcGFyYW07Cj4gKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2lz c3VlZDsKPiArfSBWQUFQSURlY29kZVBpY3R1cmVWVkM7Cj4gKwo+ICtzdGF0aWMgdm9pZCBpbml0 X3ZhYXBpX3BpYyhWQVBpY3R1cmVWVkMgKnZhX3BpYykKPiArewo+ICsgICAgdmFfcGljLT5waWN0 dXJlX2lkICAgID0gVkFfSU5WQUxJRF9JRDsKPiArICAgIHZhX3BpYy0+ZmxhZ3MgICAgICAgICA9 IFZBX1BJQ1RVUkVfVlZDX0lOVkFMSUQ7Cj4gKyAgICB2YV9waWMtPnBpY19vcmRlcl9jbnQgPSAw Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBmaWxsX3ZhYXBpX3BpYyhWQVBpY3R1cmVWVkMgKnZh X3BpYywgY29uc3QgVlZDRnJhbWUgKnBpYykKPiArewo+ICsgICAgdmFfcGljLT5waWN0dXJlX2lk ICAgID0gZmZfdmFhcGlfZ2V0X3N1cmZhY2VfaWQocGljLT5mcmFtZSk7Cj4gKyAgICB2YV9waWMt PnBpY19vcmRlcl9jbnQgPSBwaWMtPnBvYzsKPiArICAgIHZhX3BpYy0+ZmxhZ3MgICAgICAgICA9 IDA7Cj4gKwo+ICsgICAgaWYgKHBpYy0+ZmxhZ3MgJiBWVkNfRlJBTUVfRkxBR19MT05HX1JFRikK PiArICAgICAgICB2YV9waWMtPmZsYWdzIHw9IFZBX1BJQ1RVUkVfVlZDX0xPTkdfVEVSTV9SRUZF UkVOQ0U7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGZpbGxfdmFhcGlfcmVmZXJlbmNlX2ZyYW1l cyhjb25zdCBWVkNGcmFtZUNvbnRleHQgKmgsCj4gVkFQaWN0dXJlUGFyYW1ldGVyQnVmZmVyVlZD ICpwcCkKPiArewo+ICsgICAgY29uc3QgVlZDRnJhbWUgKmN1cnJlbnRfcGljdHVyZSA9IGgtPnJl ZjsKPiArICAgIGludCBpLCBqOwo+ICsKPiArICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgRkZf QVJSQVlfRUxFTVMocHAtPlJlZmVyZW5jZUZyYW1lcyk7IGkrKykgewo+ICsgICAgICAgIGNvbnN0 IFZWQ0ZyYW1lICpmcmFtZSA9IE5VTEw7Cj4gKwo+ICsgICAgICAgIHdoaWxlICghZnJhbWUgJiYg aiA8IEZGX0FSUkFZX0VMRU1TKGgtPkRQQikpIHsKPiArICAgICAgICAgICAgaWYgKCgmaC0+RFBC W2pdICE9IGN1cnJlbnRfcGljdHVyZSApICYmCj4gKyAgICAgICAgICAgICAgICAoaC0+RFBCW2pd LmZsYWdzICYgKFZWQ19GUkFNRV9GTEFHX0xPTkdfUkVGIHwKPiBWVkNfRlJBTUVfRkxBR19TSE9S VF9SRUYpKSkKPiArICAgICAgICAgICAgICAgIGZyYW1lID0gJmgtPkRQQltqXTsKPiArICAgICAg ICAgICAgaisrOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgaW5pdF92YWFwaV9waWMoJnBw LT5SZWZlcmVuY2VGcmFtZXNbaV0pOwo+ICsKPiArICAgICAgICBpZiAoZnJhbWUpIHsKPiArICAg ICAgICAgICAgVkFBUElEZWNvZGVQaWN0dXJlVlZDICpwaWM7Cj4gKyAgICAgICAgICAgIGZpbGxf dmFhcGlfcGljKCZwcC0+UmVmZXJlbmNlRnJhbWVzW2ldLCBmcmFtZSk7Cj4gKyAgICAgICAgICAg IHBpYyA9IGZyYW1lLT5od2FjY2VsX3BpY3R1cmVfcHJpdmF0ZTsKPiArICAgICAgICAgICAgaWYg KCFwaWMtPmRlY29kZV9pc3N1ZWQpCj4gKyAgICAgICAgICAgICAgIHBwLT5SZWZlcmVuY2VGcmFt ZXNbaV0uZmxhZ3MgfD0KPiBWQV9QSUNUVVJFX1ZWQ19VTkFWQUlMQUJMRV9SRUZFUkVOQ0U7Cj4g KyAgICAgICAgfQo+ICsgICAgfQo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHZhYXBpX3Z2Y19zdGFy dF9mcmFtZShBVkNvZGVjQ29udGV4dCAgICAgICAgICAqYXZjdHgsCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGF2X3VudXNlZCBjb25zdCB1aW50OF90ICpidWZmZXIsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2X3VudXNlZCB1aW50MzJfdCAgICAgICBz aXplKQo+ICt7Cj4gKyAgICBjb25zdCBWVkNDb250ZXh0ICAgICAgICAgICAgICAgICAgICAqaCA9 IGF2Y3R4LT5wcml2X2RhdGE7Cj4gKyAgICBWVkNGcmFtZUNvbnRleHQgICAgICAgICAgICAgICAg ICAgICpmYyA9ICZoLT5mY3NbKGgtPm5iX2ZyYW1lcyArCj4gaC0+bmJfZmNzKSAlIGgtPm5iX2Zj c107Cj4gKyAgICBjb25zdCBIMjY2UmF3U1BTICAgICAgICAgICAgICAgICAgKnNwcyA9IGZjLT5w cy5zcHMtPnI7Cj4gKyAgICBjb25zdCBIMjY2UmF3UFBTICAgICAgICAgICAgICAgICAgKnBwcyA9 IGZjLT5wcy5wcHMtPnI7Cj4gKyAgICBjb25zdCBIMjY2UmF3UGljdHVyZUhlYWRlciAgICAgICAg ICpwaCA9IGZjLT5wcy5waC5yOwo+ICsgICAgVkFBUElEZWNvZGVQaWN0dXJlVlZDICAgICAgICAg ICAgICpwaWMgPQo+IGZjLT5yZWYtPmh3YWNjZWxfcGljdHVyZV9wcml2YXRlOwo+ICsgICAgVkFQ aWN0dXJlUGFyYW1ldGVyQnVmZmVyVlZDICpwaWNfcGFyYW0gPSAmcGljLT5waWNfcGFyYW07Cj4g KyAgICB1aW50MTZfdCB0aWxlX2RpbSwgZXhwX3NsaWNlX2hlaWdodF9pbl9jdHVzW1ZWQ19NQVhf U0xJQ0VTXSA9IHswfTsKPiArICAgIGludCBpLCBqLCBrLCBlcnI7Cj4gKwo+ICsgICAgcGljLT5w aWMub3V0cHV0X3N1cmZhY2UgPSBmZl92YWFwaV9nZXRfc3VyZmFjZV9pZChmYy0+cmVmLT5mcmFt ZSk7Cj4gKwo+ICsgICAgKnBpY19wYXJhbSA9IChWQVBpY3R1cmVQYXJhbWV0ZXJCdWZmZXJWVkMp IHsKPiArICAgICAgICAucHBzX3BpY193aWR0aF9pbl9sdW1hX3NhbXBsZXMgICAgICAgICAgICAg ICAgID0KPiBwcHMtPnBwc19waWNfd2lkdGhfaW5fbHVtYV9zYW1wbGVzLAo+ICsgICAgICAgIC5w cHNfcGljX2hlaWdodF9pbl9sdW1hX3NhbXBsZXMgICAgICAgICAgICAgICAgPQo+IHBwcy0+cHBz X3BpY19oZWlnaHRfaW5fbHVtYV9zYW1wbGVzLAo+ICsgICAgICAgIC5zcHNfbnVtX3N1YnBpY3Nf bWludXMxICAgICAgICAgICAgICAgICAgICAgICAgPQo+IHNwcy0+c3BzX251bV9zdWJwaWNzX21p bnVzMSwKPiArICAgICAgICAuc3BzX2Nocm9tYV9mb3JtYXRfaWRjICAgICAgICAgICAgICAgICAg ICAgICAgID0KPiBzcHMtPnNwc19jaHJvbWFfZm9ybWF0X2lkYywKPiArICAgICAgICAuc3BzX2Jp dGRlcHRoX21pbnVzOCAgICAgICAgICAgICAgICAgICAgICAgICAgID0KPiBzcHMtPnNwc19iaXRk ZXB0aF9taW51czgsCj4gKyAgICAgICAgLnNwc19sb2cyX2N0dV9zaXplX21pbnVzNSAgICAgICAg ICAgICAgICAgICAgICA9Cj4gc3BzLT5zcHNfbG9nMl9jdHVfc2l6ZV9taW51czUsCj4gKyAgICAg ICAgLnNwc19sb2cyX21pbl9sdW1hX2NvZGluZ19ibG9ja19zaXplX21pbnVzMiAgICA9Cj4gc3Bz LT5zcHNfbG9nMl9taW5fbHVtYV9jb2RpbmdfYmxvY2tfc2l6ZV9taW51czIsCj4gKyAgICAgICAg LnNwc19sb2cyX3RyYW5zZm9ybV9za2lwX21heF9zaXplX21pbnVzMiAgICAgICA9Cj4gc3BzLT5z cHNfbG9nMl90cmFuc2Zvcm1fc2tpcF9tYXhfc2l6ZV9taW51czIsCj4gKyAgICAgICAgLnNwc19z aXhfbWludXNfbWF4X251bV9tZXJnZV9jYW5kICAgICAgICAgICAgICA9Cj4gc3BzLT5zcHNfc2l4 X21pbnVzX21heF9udW1fbWVyZ2VfY2FuZCwKPiArICAgICAgICAuc3BzX2ZpdmVfbWludXNfbWF4 X251bV9zdWJibG9ja19tZXJnZV9jYW5kICAgID0KPiBzcHMtPnNwc19maXZlX21pbnVzX21heF9u dW1fc3ViYmxvY2tfbWVyZ2VfY2FuZCwKPiArICAgICAgICAuc3BzX21heF9udW1fbWVyZ2VfY2Fu ZF9taW51c19tYXhfbnVtX2dwbV9jYW5kID0KPiBzcHMtPnNwc19tYXhfbnVtX21lcmdlX2NhbmRf bWludXNfbWF4X251bV9ncG1fY2FuZCwKPiArICAgICAgICAuc3BzX2xvZzJfcGFyYWxsZWxfbWVy Z2VfbGV2ZWxfbWludXMyICAgICAgICAgID0KPiBzcHMtPnNwc19sb2cyX3BhcmFsbGVsX21lcmdl X2xldmVsX21pbnVzMiwKPiArICAgICAgICAuc3BzX21pbl9xcF9wcmltZV90cyAgICAgICAgICAg ICAgICAgICAgICAgICAgID0KPiBzcHMtPnNwc19taW5fcXBfcHJpbWVfdHMsCj4gKyAgICAgICAg LnNwc19zaXhfbWludXNfbWF4X251bV9pYmNfbWVyZ2VfY2FuZCAgICAgICAgICA9Cj4gc3BzLT5z cHNfc2l4X21pbnVzX21heF9udW1faWJjX21lcmdlX2NhbmQsCj4gKyAgICAgICAgLnNwc19udW1f bGFkZl9pbnRlcnZhbHNfbWludXMyICAgICAgICAgICAgICAgICA9Cj4gc3BzLT5zcHNfbnVtX2xh ZGZfaW50ZXJ2YWxzX21pbnVzMiwKPiArICAgICAgICAuc3BzX2xhZGZfbG93ZXN0X2ludGVydmFs X3FwX29mZnNldCAgICAgICAgICAgID0KPiBzcHMtPnNwc19sYWRmX2xvd2VzdF9pbnRlcnZhbF9x cF9vZmZzZXQsCj4gKyAgICAgICAgLnNwc19mbGFncy5iaXRzID0gewo+ICsgICAgICAgICAgICAu c3BzX3N1YnBpY19pbmZvX3ByZXNlbnRfZmxhZwo+ICAgPSBzcHMtPnNwc19zdWJwaWNfaW5mb19w cmVzZW50X2ZsYWcsCj4gKyAgICAgICAgICAgIC5zcHNfaW5kZXBlbmRlbnRfc3VicGljc19mbGFn Cj4gICA9IHNwcy0+c3BzX2luZGVwZW5kZW50X3N1YnBpY3NfZmxhZywKPiArICAgICAgICAgICAg LnNwc19zdWJwaWNfc2FtZV9zaXplX2ZsYWcKPiAgPSBzcHMtPnNwc19zdWJwaWNfc2FtZV9zaXpl X2ZsYWcsCj4gKyAgICAgICAgICAgIC5zcHNfZW50cm9weV9jb2Rpbmdfc3luY19lbmFibGVkX2Zs YWcKPiAgID0gc3BzLT5zcHNfZW50cm9weV9jb2Rpbmdfc3luY19lbmFibGVkX2ZsYWcsCj4gKyAg ICAgICAgICAgIC5zcHNfcXRidHRfZHVhbF90cmVlX2ludHJhX2ZsYWcKPiAgID0gc3BzLT5zcHNf cXRidHRfZHVhbF90cmVlX2ludHJhX2ZsYWcsCj4gKyAgICAgICAgICAgIC5zcHNfbWF4X2x1bWFf dHJhbnNmb3JtX3NpemVfNjRfZmxhZwo+ICA9IHNwcy0+c3BzX21heF9sdW1hX3RyYW5zZm9ybV9z aXplXzY0X2ZsYWcsCj4gKyAgICAgICAgICAgIC5zcHNfdHJhbnNmb3JtX3NraXBfZW5hYmxlZF9m bGFnCj4gID0gc3BzLT5zcHNfdHJhbnNmb3JtX3NraXBfZW5hYmxlZF9mbGFnLAo+ICsgICAgICAg ICAgICAuc3BzX2JkcGNtX2VuYWJsZWRfZmxhZwo+ICAgPSBzcHMtPnNwc19iZHBjbV9lbmFibGVk X2ZsYWcsCj4gKyAgICAgICAgICAgIC5zcHNfbXRzX2VuYWJsZWRfZmxhZwo+ICAgPSBzcHMtPnNw c19tdHNfZW5hYmxlZF9mbGFnLAo+ICsgICAgICAgICAgICAuc3BzX2V4cGxpY2l0X210c19pbnRy YV9lbmFibGVkX2ZsYWcKPiAgPSBzcHMtPnNwc19leHBsaWNpdF9tdHNfaW50cmFfZW5hYmxlZF9m bGFnLAo+ICsgICAgICAgICAgICAuc3BzX2V4cGxpY2l0X210c19pbnRlcl9lbmFibGVkX2ZsYWcK PiAgPSBzcHMtPnNwc19leHBsaWNpdF9tdHNfaW50ZXJfZW5hYmxlZF9mbGFnLAo+ICsgICAgICAg ICAgICAuc3BzX2xmbnN0X2VuYWJsZWRfZmxhZwo+ICAgPSBzcHMtPnNwc19sZm5zdF9lbmFibGVk X2ZsYWcsCj4gKyAgICAgICAgICAgIC5zcHNfam9pbnRfY2Jjcl9lbmFibGVkX2ZsYWcKPiAgPSBz cHMtPnNwc19qb2ludF9jYmNyX2VuYWJsZWRfZmxhZywKPiArICAgICAgICAgICAgLnNwc19zYW1l X3FwX3RhYmxlX2Zvcl9jaHJvbWFfZmxhZwo+ICA9IHNwcy0+c3BzX3NhbWVfcXBfdGFibGVfZm9y X2Nocm9tYV9mbGFnLAo+ICsgICAgICAgICAgICAuc3BzX3Nhb19lbmFibGVkX2ZsYWcKPiAgID0g c3BzLT5zcHNfc2FvX2VuYWJsZWRfZmxhZywKPiArICAgICAgICAgICAgLnNwc19hbGZfZW5hYmxl ZF9mbGFnCj4gICA9IHNwcy0+c3BzX2FsZl9lbmFibGVkX2ZsYWcsCj4gKyAgICAgICAgICAgIC5z cHNfY2NhbGZfZW5hYmxlZF9mbGFnCj4gICA9IHNwcy0+c3BzX2FsZl9lbmFibGVkX2ZsYWcsCj4g KyAgICAgICAgICAgIC5zcHNfbG1jc19lbmFibGVkX2ZsYWcKPiAgPSBzcHMtPnNwc19sbWNzX2Vu YWJsZWRfZmxhZywKPiArICAgICAgICAgICAgLnNwc19zYnRtdnBfZW5hYmxlZF9mbGFnCj4gID0g c3BzLT5zcHNfc2J0bXZwX2VuYWJsZWRfZmxhZywKPiArICAgICAgICAgICAgLnNwc19hbXZyX2Vu YWJsZWRfZmxhZwo+ICA9IHNwcy0+c3BzX2FtdnJfZW5hYmxlZF9mbGFnLAo+ICsgICAgICAgICAg ICAuc3BzX3NtdmRfZW5hYmxlZF9mbGFnCj4gID0gc3BzLT5zcHNfc212ZF9lbmFibGVkX2ZsYWcs Cj4gKyAgICAgICAgICAgIC5zcHNfbW12ZF9lbmFibGVkX2ZsYWcKPiAgPSBzcHMtPnNwc19tbXZk X2VuYWJsZWRfZmxhZywKPiArICAgICAgICAgICAgLnNwc19zYnRfZW5hYmxlZF9mbGFnCj4gICA9 IHNwcy0+c3BzX3NidF9lbmFibGVkX2ZsYWcsCj4gKyAgICAgICAgICAgIC5zcHNfYWZmaW5lX2Vu YWJsZWRfZmxhZwo+ICA9IHNwcy0+c3BzX2FmZmluZV9lbmFibGVkX2ZsYWcsCj4gKyAgICAgICAg ICAgIC5zcHNfNnBhcmFtX2FmZmluZV9lbmFibGVkX2ZsYWcKPiAgID0gc3BzLT5zcHNfNnBhcmFt X2FmZmluZV9lbmFibGVkX2ZsYWcsCj4gKyAgICAgICAgICAgIC5zcHNfYWZmaW5lX2FtdnJfZW5h YmxlZF9mbGFnCj4gICA9IHNwcy0+c3BzX2FmZmluZV9hbXZyX2VuYWJsZWRfZmxhZywKPiArICAg ICAgICAgICAgLnNwc19hZmZpbmVfcHJvZl9lbmFibGVkX2ZsYWcKPiAgID0gc3BzLT5zcHNfYWZm aW5lX3Byb2ZfZW5hYmxlZF9mbGFnLAo+ICsgICAgICAgICAgICAuc3BzX2Jjd19lbmFibGVkX2Zs YWcKPiAgID0gc3BzLT5zcHNfYmN3X2VuYWJsZWRfZmxhZywKPiArICAgICAgICAgICAgLnNwc19j aWlwX2VuYWJsZWRfZmxhZwo+ICA9IHNwcy0+c3BzX2NpaXBfZW5hYmxlZF9mbGFnLAo+ICsgICAg ICAgICAgICAuc3BzX2dwbV9lbmFibGVkX2ZsYWcKPiAgID0gc3BzLT5zcHNfZ3BtX2VuYWJsZWRf ZmxhZywKPiArICAgICAgICAgICAgLnNwc19pc3BfZW5hYmxlZF9mbGFnCj4gICA9IHNwcy0+c3Bz X2lzcF9lbmFibGVkX2ZsYWcsCj4gKyAgICAgICAgICAgIC5zcHNfbXJsX2VuYWJsZWRfZmxhZwo+ ICAgPSBzcHMtPnNwc19tcmxfZW5hYmxlZF9mbGFnLAo+ICsgICAgICAgICAgICAuc3BzX21pcF9l bmFibGVkX2ZsYWcKPiAgID0gc3BzLT5zcHNfbWlwX2VuYWJsZWRfZmxhZywKPiArICAgICAgICAg ICAgLnNwc19jY2xtX2VuYWJsZWRfZmxhZwo+ICA9IHNwcy0+c3BzX2NjbG1fZW5hYmxlZF9mbGFn LAo+ICsgICAgICAgICAgICAuc3BzX2Nocm9tYV9ob3Jpem9udGFsX2NvbGxvY2F0ZWRfZmxhZwo+ ICA9IHNwcy0+c3BzX2Nocm9tYV9ob3Jpem9udGFsX2NvbGxvY2F0ZWRfZmxhZywKPiArICAgICAg ICAgICAgLnNwc19jaHJvbWFfdmVydGljYWxfY29sbG9jYXRlZF9mbGFnCj4gID0gc3BzLT5zcHNf Y2hyb21hX3ZlcnRpY2FsX2NvbGxvY2F0ZWRfZmxhZywKPiArICAgICAgICAgICAgLnNwc19wYWxl dHRlX2VuYWJsZWRfZmxhZwo+ICAgPSBzcHMtPnNwc19wYWxldHRlX2VuYWJsZWRfZmxhZywKPiAr ICAgICAgICAgICAgLnNwc19hY3RfZW5hYmxlZF9mbGFnCj4gICA9IHNwcy0+c3BzX2FjdF9lbmFi bGVkX2ZsYWcsCj4gKyAgICAgICAgICAgIC5zcHNfaWJjX2VuYWJsZWRfZmxhZwo+ICAgPSBzcHMt PnNwc19pYmNfZW5hYmxlZF9mbGFnLAo+ICsgICAgICAgICAgICAuc3BzX2xhZGZfZW5hYmxlZF9m bGFnCj4gID0gc3BzLT5zcHNfbGFkZl9lbmFibGVkX2ZsYWcsCj4gKyAgICAgICAgICAgIC5zcHNf ZXhwbGljaXRfc2NhbGluZ19saXN0X2VuYWJsZWRfZmxhZwo+ICAgPSBzcHMtPnNwc19leHBsaWNp dF9zY2FsaW5nX2xpc3RfZW5hYmxlZF9mbGFnLAo+ICsgICAgICAgICAgICAuc3BzX3NjYWxpbmdf bWF0cml4X2Zvcl9sZm5zdF9kaXNhYmxlZF9mbGFnCj4gICA9IHNwcy0+c3BzX3NjYWxpbmdfbWF0 cml4X2Zvcl9sZm5zdF9kaXNhYmxlZF9mbGFnLAo+ICsKPiAuc3BzX3NjYWxpbmdfbWF0cml4X2Zv cl9hbHRlcm5hdGl2ZV9jb2xvdXJfc3BhY2VfZGlzYWJsZWRfZmxhZyA9Cj4gc3BzLT5zcHNfc2Nh bGluZ19tYXRyaXhfZm9yX2FsdGVybmF0aXZlX2NvbG91cl9zcGFjZV9kaXNhYmxlZF9mbGFnLAo+ ICsgICAgICAgICAgICAuc3BzX3NjYWxpbmdfbWF0cml4X2Rlc2lnbmF0ZWRfY29sb3VyX3NwYWNl X2ZsYWcKPiAgPSBzcHMtPnNwc19zY2FsaW5nX21hdHJpeF9kZXNpZ25hdGVkX2NvbG91cl9zcGFj ZV9mbGFnLAo+ICsgICAgICAgICAgICAuc3BzX3ZpcnR1YWxfYm91bmRhcmllc19lbmFibGVkX2Zs YWcKPiAgPSBzcHMtPnNwc192aXJ0dWFsX2JvdW5kYXJpZXNfZW5hYmxlZF9mbGFnLAo+ICsgICAg ICAgICAgICAuc3BzX3ZpcnR1YWxfYm91bmRhcmllc19wcmVzZW50X2ZsYWcKPiAgPSBzcHMtPnNw c192aXJ0dWFsX2JvdW5kYXJpZXNfcHJlc2VudF9mbGFnLAo+ICsgICAgICAgIH0sCj4gKyAgICAg ICAgLk51bVZlclZpcnR1YWxCb3VuZGFyaWVzICAgICAgICAgICAgICAgPQo+IHNwcy0+c3BzX3Zp cnR1YWxfYm91bmRhcmllc19wcmVzZW50X2ZsYWcgPwo+ICsKPiAgc3BzLT5zcHNfbnVtX3Zlcl92 aXJ0dWFsX2JvdW5kYXJpZXMgOgo+ICsKPiAgcGgtPnBoX251bV92ZXJfdmlydHVhbF9ib3VuZGFy aWVzLAo+ICsgICAgICAgIC5OdW1Ib3JWaXJ0dWFsQm91bmRhcmllcyAgICAgICAgICAgICAgID0K PiBzcHMtPnNwc192aXJ0dWFsX2JvdW5kYXJpZXNfcHJlc2VudF9mbGFnID8KPiArCj4gIHNwcy0+ c3BzX251bV9ob3JfdmlydHVhbF9ib3VuZGFyaWVzIDoKPiArCj4gIHBoLT5waF9udW1faG9yX3Zp cnR1YWxfYm91bmRhcmllcywKPiArICAgICAgICAucHBzX3NjYWxpbmdfd2luX2xlZnRfb2Zmc2V0 ICAgICAgICAgICA9Cj4gcHBzLT5wcHNfc2NhbGluZ193aW5fbGVmdF9vZmZzZXQsCj4gKyAgICAg ICAgLnBwc19zY2FsaW5nX3dpbl9yaWdodF9vZmZzZXQgICAgICAgICAgPQo+IHBwcy0+cHBzX3Nj YWxpbmdfd2luX3JpZ2h0X29mZnNldCwKPiArICAgICAgICAucHBzX3NjYWxpbmdfd2luX3RvcF9v ZmZzZXQgICAgICAgICAgICA9Cj4gcHBzLT5wcHNfc2NhbGluZ193aW5fdG9wX29mZnNldCwKPiAr ICAgICAgICAucHBzX3NjYWxpbmdfd2luX2JvdHRvbV9vZmZzZXQgICAgICAgICA9Cj4gcHBzLT5w cHNfc2NhbGluZ193aW5fYm90dG9tX29mZnNldCwKPiArICAgICAgICAucHBzX251bV9leHBfdGls ZV9jb2x1bW5zX21pbnVzMSAgICAgICA9Cj4gcHBzLT5wcHNfbnVtX2V4cF90aWxlX2NvbHVtbnNf bWludXMxLAo+ICsgICAgICAgIC5wcHNfbnVtX2V4cF90aWxlX3Jvd3NfbWludXMxICAgICAgICAg ID0KPiBwcHMtPnBwc19udW1fZXhwX3RpbGVfcm93c19taW51czEsCj4gKyAgICAgICAgLnBwc19u dW1fc2xpY2VzX2luX3BpY19taW51czEgICAgICAgICAgPQo+IHBwcy0+cHBzX251bV9zbGljZXNf aW5fcGljX21pbnVzMSwKPiArICAgICAgICAucHBzX3BpY193aWR0aF9taW51c193cmFwYXJvdW5k X29mZnNldCA9Cj4gcHBzLT5wcHNfcGljX3dpZHRoX21pbnVzX3dyYXBhcm91bmRfb2Zmc2V0LAo+ ICsgICAgICAgIC5wcHNfY2JfcXBfb2Zmc2V0ICAgICAgICAgICAgICAgICAgICAgID0gcHBzLT5w cHNfY2JfcXBfb2Zmc2V0LAo+ICsgICAgICAgIC5wcHNfY3JfcXBfb2Zmc2V0ICAgICAgICAgICAg ICAgICAgICAgID0gcHBzLT5wcHNfY3JfcXBfb2Zmc2V0LAo+ICsgICAgICAgIC5wcHNfam9pbnRf Y2Jjcl9xcF9vZmZzZXRfdmFsdWUgICAgICAgID0KPiBwcHMtPnBwc19qb2ludF9jYmNyX3FwX29m ZnNldF92YWx1ZSwKPiArICAgICAgICAucHBzX2Nocm9tYV9xcF9vZmZzZXRfbGlzdF9sZW5fbWlu dXMxICA9Cj4gcHBzLT5wcHNfY2hyb21hX3FwX29mZnNldF9saXN0X2xlbl9taW51czEsCj4gKyAg ICAgICAgLnBwc19mbGFncy5iaXRzID0gewo+ICsgICAgICAgICAgICAucHBzX2xvb3BfZmlsdGVy X2Fjcm9zc190aWxlc19lbmFibGVkX2ZsYWcgICA9Cj4gcHBzLT5wcHNfbG9vcF9maWx0ZXJfYWNy b3NzX3RpbGVzX2VuYWJsZWRfZmxhZywKPiArICAgICAgICAgICAgLnBwc19yZWN0X3NsaWNlX2Zs YWcgICAgICAgICAgICAgICAgICAgICAgICAgPQo+IHBwcy0+cHBzX3JlY3Rfc2xpY2VfZmxhZywK PiArICAgICAgICAgICAgLnBwc19zaW5nbGVfc2xpY2VfcGVyX3N1YnBpY19mbGFnICAgICAgICAg ICAgPQo+IHBwcy0+cHBzX3NpbmdsZV9zbGljZV9wZXJfc3VicGljX2ZsYWcsCj4gKyAgICAgICAg ICAgIC5wcHNfbG9vcF9maWx0ZXJfYWNyb3NzX3NsaWNlc19lbmFibGVkX2ZsYWcgID0KPiBwcHMt PnBwc19sb29wX2ZpbHRlcl9hY3Jvc3Nfc2xpY2VzX2VuYWJsZWRfZmxhZywKPiArICAgICAgICAg ICAgLnBwc193ZWlnaHRlZF9wcmVkX2ZsYWcgICAgICAgICAgICAgICAgICAgICAgPQo+IHBwcy0+ cHBzX3dlaWdodGVkX3ByZWRfZmxhZywKPiArICAgICAgICAgICAgLnBwc193ZWlnaHRlZF9iaXBy ZWRfZmxhZyAgICAgICAgICAgICAgICAgICAgPQo+IHBwcy0+cHBzX3dlaWdodGVkX2JpcHJlZF9m bGFnLAo+ICsgICAgICAgICAgICAucHBzX3JlZl93cmFwYXJvdW5kX2VuYWJsZWRfZmxhZyAgICAg ICAgICAgICA9Cj4gcHBzLT5wcHNfcmVmX3dyYXBhcm91bmRfZW5hYmxlZF9mbGFnLAo+ICsgICAg ICAgICAgICAucHBzX2N1X3FwX2RlbHRhX2VuYWJsZWRfZmxhZyAgICAgICAgICAgICAgICA9Cj4g cHBzLT5wcHNfY3VfcXBfZGVsdGFfZW5hYmxlZF9mbGFnLAo+ICsgICAgICAgICAgICAucHBzX2N1 X2Nocm9tYV9xcF9vZmZzZXRfbGlzdF9lbmFibGVkX2ZsYWcgICA9Cj4gcHBzLT5wcHNfY3VfY2hy b21hX3FwX29mZnNldF9saXN0X2VuYWJsZWRfZmxhZywKPiArICAgICAgICAgICAgLnBwc19kZWJs b2NraW5nX2ZpbHRlcl9vdmVycmlkZV9lbmFibGVkX2ZsYWcgPQo+IHBwcy0+cHBzX2RlYmxvY2tp bmdfZmlsdGVyX292ZXJyaWRlX2VuYWJsZWRfZmxhZywKPiArICAgICAgICAgICAgLnBwc19kZWJs b2NraW5nX2ZpbHRlcl9kaXNhYmxlZF9mbGFnICAgICAgICAgPQo+IHBwcy0+cHBzX2RlYmxvY2tp bmdfZmlsdGVyX2Rpc2FibGVkX2ZsYWcsCj4gKyAgICAgICAgICAgIC5wcHNfZGJmX2luZm9faW5f cGhfZmxhZyAgICAgICAgICAgICAgICAgICAgID0KPiBwcHMtPnBwc19kYmZfaW5mb19pbl9waF9m bGFnLAo+ICsgICAgICAgICAgICAucHBzX3Nhb19pbmZvX2luX3BoX2ZsYWcgICAgICAgICAgICAg ICAgICAgICA9Cj4gcHBzLT5wcHNfc2FvX2luZm9faW5fcGhfZmxhZywKPiArICAgICAgICAgICAg LnBwc19hbGZfaW5mb19pbl9waF9mbGFnICAgICAgICAgICAgICAgICAgICAgPQo+IHBwcy0+cHBz X2FsZl9pbmZvX2luX3BoX2ZsYWcsCj4gKyAgICAgICAgfSwKPiArICAgICAgICAucGhfbG1jc19h cHNfaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0KPiBwaC0+cGhfbG1jc19hcHNf aWQsCj4gKyAgICAgICAgLnBoX3NjYWxpbmdfbGlzdF9hcHNfaWQgICAgICAgICAgICAgICAgICAg ICAgICA9Cj4gcGgtPnBoX3NjYWxpbmdfbGlzdF9hcHNfaWQsCj4gKyAgICAgICAgLnBoX2xvZzJf ZGlmZl9taW5fcXRfbWluX2NiX2ludHJhX3NsaWNlX2x1bWEgICA9Cj4gcGgtPnBoX2xvZzJfZGlm Zl9taW5fcXRfbWluX2NiX2ludHJhX3NsaWNlX2x1bWEsCj4gKyAgICAgICAgLnBoX21heF9tdHRf aGllcmFyY2h5X2RlcHRoX2ludHJhX3NsaWNlX2x1bWEgICA9Cj4gcGgtPnBoX21heF9tdHRfaGll cmFyY2h5X2RlcHRoX2ludHJhX3NsaWNlX2x1bWEsCj4gKyAgICAgICAgLnBoX2xvZzJfZGlmZl9t YXhfYnRfbWluX3F0X2ludHJhX3NsaWNlX2x1bWEgICA9Cj4gcGgtPnBoX2xvZzJfZGlmZl9tYXhf YnRfbWluX3F0X2ludHJhX3NsaWNlX2x1bWEsCj4gKyAgICAgICAgLnBoX2xvZzJfZGlmZl9tYXhf dHRfbWluX3F0X2ludHJhX3NsaWNlX2x1bWEgICA9Cj4gcGgtPnBoX2xvZzJfZGlmZl9tYXhfdHRf bWluX3F0X2ludHJhX3NsaWNlX2x1bWEsCj4gKyAgICAgICAgLnBoX2xvZzJfZGlmZl9taW5fcXRf bWluX2NiX2ludHJhX3NsaWNlX2Nocm9tYSA9Cj4gcGgtPnBoX2xvZzJfZGlmZl9taW5fcXRfbWlu X2NiX2ludHJhX3NsaWNlX2Nocm9tYSwKPiArICAgICAgICAucGhfbWF4X210dF9oaWVyYXJjaHlf ZGVwdGhfaW50cmFfc2xpY2VfY2hyb21hID0KPiBwaC0+cGhfbWF4X210dF9oaWVyYXJjaHlfZGVw dGhfaW50cmFfc2xpY2VfY2hyb21hLAo+ICsgICAgICAgIC5waF9sb2cyX2RpZmZfbWF4X2J0X21p bl9xdF9pbnRyYV9zbGljZV9jaHJvbWEgPQo+IHBoLT5waF9sb2cyX2RpZmZfbWF4X2J0X21pbl9x dF9pbnRyYV9zbGljZV9jaHJvbWEsCj4gKyAgICAgICAgLnBoX2xvZzJfZGlmZl9tYXhfdHRfbWlu X3F0X2ludHJhX3NsaWNlX2Nocm9tYSA9Cj4gcGgtPnBoX2xvZzJfZGlmZl9tYXhfdHRfbWluX3F0 X2ludHJhX3NsaWNlX2Nocm9tYSwKPiArICAgICAgICAucGhfY3VfcXBfZGVsdGFfc3ViZGl2X2lu dHJhX3NsaWNlICAgICAgICAgICAgID0KPiBwaC0+cGhfY3VfcXBfZGVsdGFfc3ViZGl2X2ludHJh X3NsaWNlLAo+ICsgICAgICAgIC5waF9jdV9jaHJvbWFfcXBfb2Zmc2V0X3N1YmRpdl9pbnRyYV9z bGljZSAgICAgPQo+IHBoLT5waF9jdV9jaHJvbWFfcXBfb2Zmc2V0X3N1YmRpdl9pbnRyYV9zbGlj ZSwKPiArICAgICAgICAucGhfbG9nMl9kaWZmX21pbl9xdF9taW5fY2JfaW50ZXJfc2xpY2UgICAg ICAgID0KPiBwaC0+cGhfbG9nMl9kaWZmX21pbl9xdF9taW5fY2JfaW50ZXJfc2xpY2UsCj4gKyAg ICAgICAgLnBoX21heF9tdHRfaGllcmFyY2h5X2RlcHRoX2ludGVyX3NsaWNlICAgICAgICA9Cj4g cGgtPnBoX21heF9tdHRfaGllcmFyY2h5X2RlcHRoX2ludGVyX3NsaWNlLAo+ICsgICAgICAgIC5w aF9sb2cyX2RpZmZfbWF4X2J0X21pbl9xdF9pbnRlcl9zbGljZSAgICAgICAgPQo+IHBoLT5waF9s b2cyX2RpZmZfbWF4X2J0X21pbl9xdF9pbnRlcl9zbGljZSwKPiArICAgICAgICAucGhfbG9nMl9k aWZmX21heF90dF9taW5fcXRfaW50ZXJfc2xpY2UgICAgICAgID0KPiBwaC0+cGhfbG9nMl9kaWZm X21heF90dF9taW5fcXRfaW50ZXJfc2xpY2UsCj4gKyAgICAgICAgLnBoX2N1X3FwX2RlbHRhX3N1 YmRpdl9pbnRlcl9zbGljZSAgICAgICAgICAgICA9Cj4gcGgtPnBoX2N1X3FwX2RlbHRhX3N1YmRp dl9pbnRlcl9zbGljZSwKPiArICAgICAgICAucGhfY3VfY2hyb21hX3FwX29mZnNldF9zdWJkaXZf aW50ZXJfc2xpY2UgICAgID0KPiBwaC0+cGhfY3VfY2hyb21hX3FwX29mZnNldF9zdWJkaXZfaW50 ZXJfc2xpY2UsCj4gKyAgICAgICAgLnBoX2ZsYWdzLmJpdHM9IHsKPiArICAgICAgICAgICAgLnBo X25vbl9yZWZfcGljX2ZsYWcgICAgICAgICAgICAgICAgICAgPQo+IHBoLT5waF9ub25fcmVmX3Bp Y19mbGFnLAo+ICsgICAgICAgICAgICAucGhfYWxmX2VuYWJsZWRfZmxhZyAgICAgICAgICAgICAg ICAgICA9Cj4gcGgtPnBoX2FsZl9lbmFibGVkX2ZsYWcsCj4gKyAgICAgICAgICAgIC5waF9hbGZf Y2JfZW5hYmxlZF9mbGFnICAgICAgICAgICAgICAgID0KPiBwaC0+cGhfYWxmX2NiX2VuYWJsZWRf ZmxhZywKPiArICAgICAgICAgICAgLnBoX2FsZl9jcl9lbmFibGVkX2ZsYWcgICAgICAgICAgICAg ICAgPQo+IHBoLT5waF9hbGZfY3JfZW5hYmxlZF9mbGFnLAo+ICsgICAgICAgICAgICAucGhfYWxm X2NjX2NiX2VuYWJsZWRfZmxhZyAgICAgICAgICAgICA9Cj4gcGgtPnBoX2FsZl9jY19jYl9lbmFi bGVkX2ZsYWcsCj4gKyAgICAgICAgICAgIC5waF9hbGZfY2NfY3JfZW5hYmxlZF9mbGFnICAgICAg ICAgICAgID0KPiBwaC0+cGhfYWxmX2NjX2NyX2VuYWJsZWRfZmxhZywKPiArICAgICAgICAgICAg LnBoX2xtY3NfZW5hYmxlZF9mbGFnICAgICAgICAgICAgICAgICAgPQo+IHBoLT5waF9sbWNzX2Vu YWJsZWRfZmxhZywKPiArICAgICAgICAgICAgLnBoX2Nocm9tYV9yZXNpZHVhbF9zY2FsZV9mbGFn ICAgICAgICAgPQo+IHBoLT5waF9jaHJvbWFfcmVzaWR1YWxfc2NhbGVfZmxhZywKPiArICAgICAg ICAgICAgLnBoX2V4cGxpY2l0X3NjYWxpbmdfbGlzdF9lbmFibGVkX2ZsYWcgPQo+IHBoLT5waF9l eHBsaWNpdF9zY2FsaW5nX2xpc3RfZW5hYmxlZF9mbGFnLAo+ICsgICAgICAgICAgICAucGhfdmly dHVhbF9ib3VuZGFyaWVzX3ByZXNlbnRfZmxhZyAgICA9Cj4gcGgtPnBoX3ZpcnR1YWxfYm91bmRh cmllc19wcmVzZW50X2ZsYWcsCj4gKyAgICAgICAgICAgIC5waF90ZW1wb3JhbF9tdnBfZW5hYmxl ZF9mbGFnICAgICAgICAgID0KPiBwaC0+cGhfdGVtcG9yYWxfbXZwX2VuYWJsZWRfZmxhZywKPiAr ICAgICAgICAgICAgLnBoX21tdmRfZnVsbHBlbF9vbmx5X2ZsYWcgICAgICAgICAgICAgPQo+IHBo LT5waF9tbXZkX2Z1bGxwZWxfb25seV9mbGFnLAo+ICsgICAgICAgICAgICAucGhfbXZkX2wxX3pl cm9fZmxhZyAgICAgICAgICAgICAgICAgICA9Cj4gcGgtPnBoX212ZF9sMV96ZXJvX2ZsYWcsCj4g KyAgICAgICAgICAgIC5waF9iZG9mX2Rpc2FibGVkX2ZsYWcgICAgICAgICAgICAgICAgID0KPiBw aC0+cGhfYmRvZl9kaXNhYmxlZF9mbGFnLAo+ICsgICAgICAgICAgICAucGhfZG12cl9kaXNhYmxl ZF9mbGFnICAgICAgICAgICAgICAgICA9Cj4gcGgtPnBoX2RtdnJfZGlzYWJsZWRfZmxhZywKPiAr ICAgICAgICAgICAgLnBoX3Byb2ZfZGlzYWJsZWRfZmxhZyAgICAgICAgICAgICAgICAgPQo+IHBo LT5waF9wcm9mX2Rpc2FibGVkX2ZsYWcsCj4gKyAgICAgICAgICAgIC5waF9qb2ludF9jYmNyX3Np Z25fZmxhZyAgICAgICAgICAgICAgID0KPiBwaC0+cGhfam9pbnRfY2Jjcl9zaWduX2ZsYWcsCj4g KyAgICAgICAgICAgIC5waF9zYW9fbHVtYV9lbmFibGVkX2ZsYWcgICAgICAgICAgICAgID0KPiBw aC0+cGhfc2FvX2x1bWFfZW5hYmxlZF9mbGFnLAo+ICsgICAgICAgICAgICAucGhfc2FvX2Nocm9t YV9lbmFibGVkX2ZsYWcgICAgICAgICAgICA9Cj4gcGgtPnBoX3Nhb19jaHJvbWFfZW5hYmxlZF9m bGFnLAo+ICsgICAgICAgICAgICAucGhfZGVibG9ja2luZ19maWx0ZXJfZGlzYWJsZWRfZmxhZyAg ICA9Cj4gcGgtPnBoX2RlYmxvY2tpbmdfZmlsdGVyX2Rpc2FibGVkX2ZsYWcsCj4gKyAgICAgICAg fSwKPiArICAgICAgICAuUGljTWlzY0ZsYWdzLmZpZWxkcyA9IHsKPiArICAgICAgICAgICAgLklu dHJhUGljRmxhZyA9IHBwcy0+cHBzX21peGVkX25hbHVfdHlwZXNfaW5fcGljX2ZsYWcgPyAwIDoK PiBJU19JUkFQKGgpID8gMSA6IDAsCj4gKyAgICAgICAgfQo+ICsgICAgfTsKPiArCj4gKyAgICBm aWxsX3ZhYXBpX3BpYygmcGljX3BhcmFtLT5DdXJyUGljLCBmYy0+cmVmKTsKPiArICAgIGZpbGxf dmFhcGlfcmVmZXJlbmNlX2ZyYW1lcyhmYywgcGljX3BhcmFtKTsKPiArCj4gKyAgICBmb3IgKGkg PSAwOyBpIDwgVlZDX01BWF9TQU1QTEVfQVJSQVlTOyBpKyspCj4gKyAgICAgICAgZm9yIChqID0g MDsgaiA8IFZWQ19NQVhfUE9JTlRTX0lOX1FQX1RBQkxFOyBqKyspCj4gKyAgICAgICAgICAgIHBp Y19wYXJhbS0+Q2hyb21hUXBUYWJsZVtpXVtqXSA9Cj4gZmMtPnBzLnNwcy0+Y2hyb21hX3FwX3Rh YmxlW2ldW2pdOwo+ICsgICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewo+ICsgICAgICAgIHBp Y19wYXJhbS0+c3BzX2xhZGZfcXBfb2Zmc2V0W2ldICAgICAgICAgICAgICA9Cj4gc3BzLT5zcHNf bGFkZl9xcF9vZmZzZXRbaV07Cj4gKyAgICAgICAgcGljX3BhcmFtLT5zcHNfbGFkZl9kZWx0YV90 aHJlc2hvbGRfbWludXMxW2ldID0KPiBzcHMtPnNwc19sYWRmX2RlbHRhX3RocmVzaG9sZF9taW51 czFbaV07Cj4gKyAgICB9Cj4gKwo+ICsgICAgZm9yIChpID0gMDsgaSA8IChzcHMtPnNwc192aXJ0 dWFsX2JvdW5kYXJpZXNfcHJlc2VudF9mbGFnID8KPiBzcHMtPnNwc19udW1fdmVyX3ZpcnR1YWxf Ym91bmRhcmllcyA6IHBoLT5waF9udW1fdmVyX3ZpcnR1YWxfYm91bmRhcmllcyk7Cj4gaSsrKSB7 Cj4gKyAgICAgICAgcGljX3BhcmFtLT5WaXJ0dWFsQm91bmRhcnlQb3NYW2ldID0KPiAoc3BzLT5z cHNfdmlydHVhbF9ib3VuZGFyaWVzX3ByZXNlbnRfZmxhZyA/Cj4gKwo+IChzcHMtPnNwc192aXJ0 dWFsX2JvdW5kYXJ5X3Bvc194X21pbnVzMVsgaSBdICsgMSkgOgo+ICsKPiAocGgtPnBoX3ZpcnR1 YWxfYm91bmRhcnlfcG9zX3hfbWludXMxW2ldICsgMSkpICogODsKPiArICAgIH0KPiArCj4gKyAg ICBmb3IgKGkgPSAwOyBpIDwgKHNwcy0+c3BzX3ZpcnR1YWxfYm91bmRhcmllc19wcmVzZW50X2Zs YWcgPwo+IHNwcy0+c3BzX251bV9ob3JfdmlydHVhbF9ib3VuZGFyaWVzIDogcGgtPnBoX251bV9o b3JfdmlydHVhbF9ib3VuZGFyaWVzKTsKPiBpKyspIHsKPiArICAgICAgICBwaWNfcGFyYW0tPlZp cnR1YWxCb3VuZGFyeVBvc1lbaV0gPQo+IChzcHMtPnNwc192aXJ0dWFsX2JvdW5kYXJpZXNfcHJl c2VudF9mbGFnID8KPiArCj4gKHNwcy0+c3BzX3ZpcnR1YWxfYm91bmRhcnlfcG9zX3lfbWludXMx WyBpIF0gKyAxKSA6Cj4gKwo+IChwaC0+cGhfdmlydHVhbF9ib3VuZGFyeV9wb3NfeV9taW51czFb aV0gKyAxKSkgKiA4Owo+ICsgICAgfQo+ICsKPiArICAgIGZvciAoaSA9IDA7IGkgPCA2OyBpKysp IHsKPiArICAgICAgICBwaWNfcGFyYW0tPnBwc19jYl9xcF9vZmZzZXRfbGlzdFtpXSAgICAgICAg ID0KPiBwcHMtPnBwc19jYl9xcF9vZmZzZXRfbGlzdFtpXTsKPiArICAgICAgICBwaWNfcGFyYW0t PnBwc19jcl9xcF9vZmZzZXRfbGlzdFtpXSAgICAgICAgID0KPiBwcHMtPnBwc19jcl9xcF9vZmZz ZXRfbGlzdFtpXTsKPiArICAgICAgICBwaWNfcGFyYW0tPnBwc19qb2ludF9jYmNyX3FwX29mZnNl dF9saXN0W2ldID0KPiBwcHMtPnBwc19qb2ludF9jYmNyX3FwX29mZnNldF9saXN0W2ldOwo+ICsg ICAgfQo+ICsKPiArICAgIGVyciA9IGZmX3ZhYXBpX2RlY29kZV9tYWtlX3BhcmFtX2J1ZmZlcihh dmN0eCwgJnBpYy0+cGljLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFZBUGljdHVyZVBhcmFtZXRlckJ1ZmZlclR5cGUsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBpYy0+cGljX3BhcmFtLAo+IHNpemVvZihWQVBp Y3R1cmVQYXJhbWV0ZXJCdWZmZXJWVkMpKTsKPiArICAgIGlmIChlcnIgPCAwKQo+ICsgICAgICAg IGdvdG8gZmFpbDsKPiArCj4gKyAgICBmb3IgKGkgPSAwOyBpIDw9IHNwcy0+c3BzX251bV9zdWJw aWNzX21pbnVzMSAmJgo+IHNwcy0+c3BzX3N1YnBpY19pbmZvX3ByZXNlbnRfZmxhZzsgaSsrKSB7 Cj4gKyAgICAgICAgVkFTdWJQaWNWVkMgc3VicGljX3BhcmFtID0gewo+ICsgICAgICAgICAgICAu c3BzX3N1YnBpY19jdHVfdG9wX2xlZnRfeCA9Cj4gc3BzLT5zcHNfc3VicGljX2N0dV90b3BfbGVm dF94W2ldLAo+ICsgICAgICAgICAgICAuc3BzX3N1YnBpY19jdHVfdG9wX2xlZnRfeSA9Cj4gc3Bz LT5zcHNfc3VicGljX2N0dV90b3BfbGVmdF95W2ldLAo+ICsgICAgICAgICAgICAuc3BzX3N1YnBp Y193aWR0aF9taW51czEgICA9IHNwcy0+c3BzX3N1YnBpY193aWR0aF9taW51czFbaV0sCj4gKyAg ICAgICAgICAgIC5zcHNfc3VicGljX2hlaWdodF9taW51czEgID0gc3BzLT5zcHNfc3VicGljX2hl aWdodF9taW51czFbaV0sCj4gKyAgICAgICAgICAgIC5TdWJwaWNJZFZhbCAgICAgICAgICAgICAg ID0gcHBzLT5zdWJfcGljX2lkX3ZhbFtpXSwKPiArICAgICAgICAgICAgLnN1YnBpY19mbGFncy5i aXRzID0gewo+ICsgICAgICAgICAgICAgICAgLnNwc19zdWJwaWNfdHJlYXRlZF9hc19waWNfZmxh ZyAgICAgICAgICAgICA9Cj4gc3BzLT5zcHNfc3VicGljX3RyZWF0ZWRfYXNfcGljX2ZsYWdbaV0s Cj4gKyAgICAgICAgICAgICAgICAuc3BzX2xvb3BfZmlsdGVyX2Fjcm9zc19zdWJwaWNfZW5hYmxl ZF9mbGFnID0KPiBzcHMtPnNwc19sb29wX2ZpbHRlcl9hY3Jvc3Nfc3VicGljX2VuYWJsZWRfZmxh Z1tpXSwKPiArICAgICAgICAgICAgfQo+ICsgICAgICAgIH07Cj4gKyAgICAgICAgZXJyID0gZmZf dmFhcGlfZGVjb2RlX21ha2VfcGFyYW1fYnVmZmVyKGF2Y3R4LCAmcGljLT5waWMsCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZBU3ViUGljQnVmZmVy VHlwZSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JnN1YnBpY19wYXJhbSwKPiBzaXplb2YoVkFTdWJQaWNWVkMpKTsKPiArICAgICAgICBpZiAoZXJy IDwgMCkKPiArICAgICAgICAgICAgZ290byBmYWlsOwo+ICsgICAgfQo+ICsKPiArICAgIGZvciAo aSA9IDA7IGkgPCBWVkNfTUFYX0FMRl9DT1VOVDsgaSsrKSB7Cj4gKyAgICAgICAgY29uc3QgVlZD QUxGICphbGZfbGlzdCA9IGgtPnBzLmFsZl9saXN0W2ldOwo+ICsgICAgICAgIGlmIChhbGZfbGlz dCkgewo+ICsgICAgICAgICAgICBjb25zdCBIMjY2UmF3QVBTICphbGYgPSBhbGZfbGlzdC0+cjsK PiArICAgICAgICAgICAgVkFBbGZEYXRhVlZDIGFsZl9wYXJhbSA9IHsKPiArICAgICAgICAgICAg ICAgIC5hcHNfYWRhcHRhdGlvbl9wYXJhbWV0ZXJfc2V0X2lkID0gaSwKPiArICAgICAgICAgICAg ICAgIC5hbGZfbHVtYV9udW1fZmlsdGVyc19zaWduYWxsZWRfbWludXMxID0KPiBhbGYtPmFsZl9s dW1hX251bV9maWx0ZXJzX3NpZ25hbGxlZF9taW51czEsCj4gKyAgICAgICAgICAgICAgICAuYWxm X2Nocm9tYV9udW1fYWx0X2ZpbHRlcnNfbWludXMxICAgICA9Cj4gYWxmLT5hbGZfY2hyb21hX251 bV9hbHRfZmlsdGVyc19taW51czEsCj4gKyAgICAgICAgICAgICAgICAuYWxmX2NjX2NiX2ZpbHRl cnNfc2lnbmFsbGVkX21pbnVzMSAgICA9Cj4gYWxmLT5hbGZfY2NfY2JfZmlsdGVyc19zaWduYWxs ZWRfbWludXMxLAo+ICsgICAgICAgICAgICAgICAgLmFsZl9jY19jcl9maWx0ZXJzX3NpZ25hbGxl ZF9taW51czEgICAgPQo+IGFsZi0+YWxmX2NjX2NyX2ZpbHRlcnNfc2lnbmFsbGVkX21pbnVzMSwK PiArICAgICAgICAgICAgICAgIC5hbGZfZmxhZ3MuYml0cyA9IHsKPiArICAgICAgICAgICAgICAg ICAgICAuYWxmX2x1bWFfZmlsdGVyX3NpZ25hbF9mbGFnICAgPQo+IGFsZi0+YWxmX2x1bWFfZmls dGVyX3NpZ25hbF9mbGFnLAo+ICsgICAgICAgICAgICAgICAgICAgIC5hbGZfY2hyb21hX2ZpbHRl cl9zaWduYWxfZmxhZyA9Cj4gYWxmLT5hbGZfY2hyb21hX2ZpbHRlcl9zaWduYWxfZmxhZywKPiAr ICAgICAgICAgICAgICAgICAgICAuYWxmX2NjX2NiX2ZpbHRlcl9zaWduYWxfZmxhZyAgPQo+IGFs Zi0+YWxmX2NjX2NiX2ZpbHRlcl9zaWduYWxfZmxhZywKPiArICAgICAgICAgICAgICAgICAgICAu YWxmX2NjX2NyX2ZpbHRlcl9zaWduYWxfZmxhZyAgPQo+IGFsZi0+YWxmX2NjX2NyX2ZpbHRlcl9z aWduYWxfZmxhZywKPiArICAgICAgICAgICAgICAgICAgICAuYWxmX2x1bWFfY2xpcF9mbGFnICAg ICAgICAgICAgPQo+IGFsZi0+YWxmX2x1bWFfY2xpcF9mbGFnLAo+ICsgICAgICAgICAgICAgICAg ICAgIC5hbGZfY2hyb21hX2NsaXBfZmxhZyAgICAgICAgICA9Cj4gYWxmLT5hbGZfY2hyb21hX2Ns aXBfZmxhZywKPiArICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgfTsKPiArCj4gKyAg ICAgICAgICAgIGZvciAoaiA9IDA7IGogPCAyNTsgaisrKQo+ICsgICAgICAgICAgICAgICAgYWxm X3BhcmFtLmFsZl9sdW1hX2NvZWZmX2RlbHRhX2lkeFtqXSA9Cj4gYWxmLT5hbGZfbHVtYV9jb2Vm Zl9kZWx0YV9pZHhbal07Cj4gKwo+ICsgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgMjU7IGor Kykgewo+ICsgICAgICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IDEyOyBrKyspIHsKPiArICAg ICAgICAgICAgICAgICAgICBhbGZfcGFyYW0uZmlsdENvZWZmW2pdW2tdICAgICAgICAgPQo+IGFs Zi0+YWxmX2x1bWFfY29lZmZfYWJzW2pdW2tdICogKDEgLSAyICogYWxmLT5hbGZfbHVtYV9jb2Vm Zl9zaWduW2pdW2tdKTsKPiArICAgICAgICAgICAgICAgICAgICBhbGZfcGFyYW0uYWxmX2x1bWFf Y2xpcF9pZHhbal1ba10gPQo+IGFsZi0+YWxmX2x1bWFfY2xpcF9pZHhbal1ba107Cj4gKyAgICAg ICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgIGZvciAoaiA9 IDA7IGogPCA4OyBqKyspIHsKPiArICAgICAgICAgICAgICAgIGZvciAoayA9IDA7IGsgPCA2OyBr KyspIHsKPiArICAgICAgICAgICAgICAgICAgICBhbGZfcGFyYW0uQWxmQ29lZmZDW2pdW2tdICAg ICAgICAgICA9Cj4gYWxmLT5hbGZfY2hyb21hX2NvZWZmX2Fic1tqXVtrXSAqICgxIC0gMiAqCj4g YWxmLT5hbGZfY2hyb21hX2NvZWZmX3NpZ25bal1ba10pOwo+ICsgICAgICAgICAgICAgICAgICAg IGFsZl9wYXJhbS5hbGZfY2hyb21hX2NsaXBfaWR4W2pdW2tdID0KPiBhbGYtPmFsZl9jaHJvbWFf Y2xpcF9pZHhbal1ba107Cj4gKyAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgIH0KPiAr Cj4gKyAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCA0OyBqKyspIHsKPiArICAgICAgICAgICAg ICAgIGZvciAoayA9IDA7IGsgPCA3OyBrKyspIHsKPiArICAgICAgICAgICAgICAgICAgICBpZiAo YWxmLT5hbGZfY2NfY2JfbWFwcGVkX2NvZWZmX2Fic1tqXVtrXSkKPiArICAgICAgICAgICAgICAg ICAgICAgICAgYWxmX3BhcmFtLkNjQWxmQXBzQ29lZmZDYltqXVtrXSA9ICgxIC0gMiAqCj4gYWxm LT5hbGZfY2NfY2JfY29lZmZfc2lnbltqXVtrXSkgKiAoMSA8PAo+IChhbGYtPmFsZl9jY19jYl9t YXBwZWRfY29lZmZfYWJzW2pdW2tdIC0gMSkpOwo+ICsgICAgICAgICAgICAgICAgICAgIGlmIChh bGYtPmFsZl9jY19jcl9tYXBwZWRfY29lZmZfYWJzW2pdW2tdKQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICBhbGZfcGFyYW0uQ2NBbGZBcHNDb2VmZkNyW2pdW2tdID0gKDEgLSAyICoKPiBhbGYt PmFsZl9jY19jcl9jb2VmZl9zaWduW2pdW2tdKSAqICgxIDw8Cj4gKGFsZi0+YWxmX2NjX2NyX21h cHBlZF9jb2VmZl9hYnNbal1ba10gLSAxKSk7Cj4gKyAgICAgICAgICAgICAgICB9Cj4gKyAgICAg ICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgIGVyciA9IGZmX3ZhYXBpX2RlY29kZV9tYWtlX3Bh cmFtX2J1ZmZlcihhdmN0eCwgJnBpYy0+cGljLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFBbGZCdWZmZXJUeXBlLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFsZl9wYXJhbSwKPiBz aXplb2YoVkFBbGZEYXRhVlZDKSk7Cj4gKyAgICAgICAgICAgIGlmIChlcnIgPCAwKQo+ICsgICAg ICAgICAgICAgICAgZ290byBmYWlsOwo+ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gKyAgICBm b3IgKGkgPSAwOyBpIDwgVlZDX01BWF9MTUNTX0NPVU5UOyBpKyspIHsKPiArICAgICAgICBjb25z dCBIMjY2UmF3QVBTICpsbWNzID0gaC0+cHMubG1jc19saXN0W2ldOwo+ICsgICAgICAgIGlmIChs bWNzKSB7Cj4gKyAgICAgICAgICAgIFZBTG1jc0RhdGFWVkMgbG1jc19wYXJhbSA9IHsKPiArICAg ICAgICAgICAgICAgIC5hcHNfYWRhcHRhdGlvbl9wYXJhbWV0ZXJfc2V0X2lkID0gaSwKPiArICAg ICAgICAgICAgICAgIC5sbWNzX21pbl9iaW5faWR4ICAgICAgICAgICAgICAgID0gbG1jcy0+bG1j c19taW5fYmluX2lkeCwKPiArICAgICAgICAgICAgICAgIC5sbWNzX2RlbHRhX21heF9iaW5faWR4 ICAgICAgICAgID0KPiBsbWNzLT5sbWNzX2RlbHRhX21heF9iaW5faWR4LAo+ICsgICAgICAgICAg ICAgICAgLmxtY3NEZWx0YUNycyAgICAgICAgICAgICAgICAgICAgPSAoMSAtIDIgKgo+IGxtY3Mt PmxtY3NfZGVsdGFfc2lnbl9jcnNfZmxhZykgKiBsbWNzLT5sbWNzX2RlbHRhX2Fic19jcnMsCj4g KyAgICAgICAgICAgIH07Cj4gKwo+ICsgICAgICAgICAgICBmb3IgKGogPSBsbWNzLT5sbWNzX21p bl9iaW5faWR4OyBqIDw9IDE1IC0KPiBsbWNzLT5sbWNzX2RlbHRhX21heF9iaW5faWR4OyBqKysp Cj4gKyAgICAgICAgICAgICAgICBsbWNzX3BhcmFtLmxtY3NEZWx0YUNXW2pdID0gKDEgLSAyICoK PiBsbWNzLT5sbWNzX2RlbHRhX3NpZ25fY3dfZmxhZ1tqXSkgKiBsbWNzLT5sbWNzX2RlbHRhX2Fi c19jd1tqXTsKPiArCj4gKyAgICAgICAgICAgIGVyciA9IGZmX3ZhYXBpX2RlY29kZV9tYWtlX3Bh cmFtX2J1ZmZlcihhdmN0eCwgJnBpYy0+cGljLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFMbWNzQnVmZmVyVHlwZSwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsbWNzX3BhcmFtLAo+ IHNpemVvZihWQUxtY3NEYXRhVlZDKSk7Cj4gKyAgICAgICAgICAgIGlmIChlcnIgPCAwKQo+ICsg ICAgICAgICAgICAgICAgZ290byBmYWlsOwo+ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gKyAg ICBmb3IgKGkgPSAwOyBpIDwgVlZDX01BWF9TTF9DT1VOVDsgaSsrKSB7Cj4gKyAgICAgICAgY29u c3QgVlZDU2NhbGluZ0xpc3QgKnNsID0gaC0+cHMuc2NhbGluZ19saXN0W2ldOwo+ICsgICAgICAg IGlmIChzbCkgewo+ICsgICAgICAgICAgICBpbnQgbDsKPiArCj4gKyAgICAgICAgICAgIFZBU2Nh bGluZ0xpc3RWVkMgc2xfcGFyYW0gPSB7Cj4gKyAgICAgICAgICAgICAgICAuYXBzX2FkYXB0YXRp b25fcGFyYW1ldGVyX3NldF9pZCA9IGksCj4gKyAgICAgICAgICAgIH07Cj4gKwo+ICsgICAgICAg ICAgICBmb3IgKGogPSAwOyBqIDwgMTQ7IGorKykKPiArICAgICAgICAgICAgICAgIHNsX3BhcmFt LlNjYWxpbmdNYXRyaXhEQ1JlY1tqXSA9Cj4gc2wtPnNjYWxpbmdfbWF0cml4X2RjX3JlY1tqXTsK PiArCj4gKyAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCAyOyBqKyspCj4gKyAgICAgICAgICAg ICAgICBmb3IgKGsgPSAwOyBrIDwgMjsgaysrKQo+ICsgICAgICAgICAgICAgICAgICAgIGZvciAo bCA9IDA7IGwgPCAyOyBsKyspCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNsX3BhcmFtLlNj YWxpbmdNYXRyaXhSZWMyeDJbal1ba11bbF0gPQo+IHNsLT5zY2FsaW5nX21hdHJpeF9yZWNbal1b bCAqIDIgKyBrXTsKPiArCj4gKyAgICAgICAgICAgIGZvciAoaiA9IDI7IGogPCA4OyBqKyspCj4g KyAgICAgICAgICAgICAgICBmb3IgKGsgPSAwOyBrIDwgNDsgaysrKQo+ICsgICAgICAgICAgICAg ICAgICAgIGZvciAobCA9IDA7IGwgPCA0OyBsKyspCj4gKyAgICAgICAgICAgICAgICAgICAgICAg IHNsX3BhcmFtLlNjYWxpbmdNYXRyaXhSZWM0eDRbaiAtIDJdW2tdW2xdID0KPiBzbC0+c2NhbGlu Z19tYXRyaXhfcmVjW2pdW2wgKiA0ICsga107Cj4gKwo+ICsgICAgICAgICAgICBmb3IgKGogPSA4 OyBqIDwgMjg7IGorKykKPiArICAgICAgICAgICAgICAgIGZvciAoayA9IDA7IGsgPCA4OyBrKysp Cj4gKyAgICAgICAgICAgICAgICAgICAgZm9yIChsID0gMDsgbCA8IDg7IGwrKykKPiArICAgICAg ICAgICAgICAgICAgICAgICAgc2xfcGFyYW0uU2NhbGluZ01hdHJpeFJlYzh4OFtqIC0gOF1ba11b bF0gPQo+IHNsLT5zY2FsaW5nX21hdHJpeF9yZWNbal1bbCAqIDggKyBrXTsKPiArCj4gKyAgICAg ICAgICAgIGVyciA9IGZmX3ZhYXBpX2RlY29kZV9tYWtlX3BhcmFtX2J1ZmZlcihhdmN0eCwgJnBp Yy0+cGljLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVkFJUU1hdHJpeEJ1ZmZlclR5cGUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmc2xfcGFyYW0sCj4gc2l6ZW9mKFZBU2NhbGluZ0xp c3RWVkMpKTsKPiArICAgICAgICAgICAgaWYgKGVyciA8IDApCj4gKyAgICAgICAgICAgICAgICBn b3RvIGZhaWw7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsKPiArICAgIGZvciAoaSA9IDA7IGkg PD0gcHBzLT5wcHNfbnVtX2V4cF90aWxlX2NvbHVtbnNfbWludXMxOyBpKyspIHsKPiArICAgICAg ICB0aWxlX2RpbSA9IHBwcy0+cHBzX3RpbGVfY29sdW1uX3dpZHRoX21pbnVzMVtpXTsKPiArICAg ICAgICBlcnIgPSBmZl92YWFwaV9kZWNvZGVfbWFrZV9wYXJhbV9idWZmZXIoYXZjdHgsICZwaWMt PnBpYywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg VkFUaWxlQnVmZmVyVHlwZSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJnRpbGVfZGltLAo+IHNpemVvZih0aWxlX2RpbSkpOwo+ICsgICAgICAgIGlm IChlcnIgPCAwKQo+ICsgICAgICAgICAgICBnb3RvIGZhaWw7Cj4gKyAgICB9Cj4gKwo+ICsgICAg Zm9yIChpID0gMDsgaSA8PSBwcHMtPnBwc19udW1fZXhwX3RpbGVfcm93c19taW51czE7IGkrKykg ewo+ICsgICAgICAgIHRpbGVfZGltID0gcHBzLT5wcHNfdGlsZV9yb3dfaGVpZ2h0X21pbnVzMVtp XTsKPiArICAgICAgICBlcnIgPSBmZl92YWFwaV9kZWNvZGVfbWFrZV9wYXJhbV9idWZmZXIoYXZj dHgsICZwaWMtPnBpYywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVkFUaWxlQnVmZmVyVHlwZSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJnRpbGVfZGltLAo+IHNpemVvZih0aWxlX2RpbSkpOwo+ICsg ICAgICAgIGlmIChlcnIgPCAwKQo+ICsgICAgICAgICAgICBnb3RvIGZhaWw7Cj4gKyAgICB9Cj4g Kwo+ICsgICAgaWYgKCFwcHMtPnBwc19ub19waWNfcGFydGl0aW9uX2ZsYWcgJiYgcHBzLT5wcHNf cmVjdF9zbGljZV9mbGFnICYmCj4gIXBwcy0+cHBzX3NpbmdsZV9zbGljZV9wZXJfc3VicGljX2Zs YWcpIHsKPiArICAgICAgICBmb3IgKGkgPSAwOyBpIDw9IHBwcy0+cHBzX251bV9zbGljZXNfaW5f cGljX21pbnVzMTsgaSsrKSB7Cj4gKyAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBwcHMtPnBw c19udW1fZXhwX3NsaWNlc19pbl90aWxlW2ldOyBqKyspIHsKPiArICAgICAgICAgICAgICAgIGV4 cF9zbGljZV9oZWlnaHRfaW5fY3R1c1tpICsgal0gPQo+IHBwcy0+cHBzX2V4cF9zbGljZV9oZWln aHRfaW5fY3R1c19taW51czFbaV1bal0gKyAxOwo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAg fQo+ICsgICAgICAgIGZvciAoaSA9IDA7IGkgPD0gcHBzLT5wcHNfbnVtX3NsaWNlc19pbl9waWNf bWludXMxOyBpKyspIHsKPiArICAgICAgICAgICAgVkFTbGljZVN0cnVjdFZWQyBzc19wYXJhbSA9 IHsKPiArICAgICAgICAgICAgICAgIC5TbGljZVRvcExlZnRUaWxlSWR4ICAgICAgICAgICAgICA9 Cj4gcHBzLT5zbGljZV90b3BfbGVmdF90aWxlX2lkeFtpXSwKPiArICAgICAgICAgICAgICAgIC5w cHNfc2xpY2Vfd2lkdGhfaW5fdGlsZXNfbWludXMxICA9Cj4gcHBzLT5wcHNfc2xpY2Vfd2lkdGhf aW5fdGlsZXNfbWludXMxW2ldLAo+ICsgICAgICAgICAgICAgICAgLnBwc19zbGljZV9oZWlnaHRf aW5fdGlsZXNfbWludXMxID0KPiBwcHMtPnBwc19zbGljZV9oZWlnaHRfaW5fdGlsZXNfbWludXMx W2ldLAo+ICsgICAgICAgICAgICB9Owo+ICsKPiArICAgICAgICAgICAgaWYgKHBwcy0+cHBzX3Ns aWNlX3dpZHRoX2luX3RpbGVzX21pbnVzMVtpXSA+IDAgfHwKPiBwcHMtPnBwc19zbGljZV9oZWln aHRfaW5fdGlsZXNfbWludXMxW2ldID4gMCkKPiArICAgICAgICAgICAgICAgIHNzX3BhcmFtLnBw c19leHBfc2xpY2VfaGVpZ2h0X2luX2N0dXNfbWludXMxID0gMDsKPiArICAgICAgICAgICAgZWxz ZSB7Cj4gKyAgICAgICAgICAgICAgICBpZiAocHBzLT5udW1fc2xpY2VzX2luX3RpbGVbaV0gPT0g MSkKPiArICAgICAgICAgICAgICAgICAgICBzc19wYXJhbS5wcHNfZXhwX3NsaWNlX2hlaWdodF9p bl9jdHVzX21pbnVzMSA9Cj4gcHBzLT5yb3dfaGVpZ2h0X3ZhbFtwcHMtPnNsaWNlX3RvcF9sZWZ0 X3RpbGVfaWR4W2ldIC8KPiBwcHMtPm51bV90aWxlX2NvbHVtbnNdIC0gMTsKPiArICAgICAgICAg ICAgICAgIGVsc2UgaWYgKGV4cF9zbGljZV9oZWlnaHRfaW5fY3R1c1tpXSkKPiArICAgICAgICAg ICAgICAgICAgICBzc19wYXJhbS5wcHNfZXhwX3NsaWNlX2hlaWdodF9pbl9jdHVzX21pbnVzMSA9 Cj4gZXhwX3NsaWNlX2hlaWdodF9pbl9jdHVzW2ldIC0gMTsKPiArICAgICAgICAgICAgICAgIGVs c2UKPiArICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiArICAgICAgICAgICAgfQo+ICsK PiArICAgICAgICAgICAgZXJyID0gZmZfdmFhcGlfZGVjb2RlX21ha2VfcGFyYW1fYnVmZmVyKGF2 Y3R4LCAmcGljLT5waWMsCj4gKwo+IFZBU2xpY2VTdHJ1Y3RCdWZmZXJUeXBlLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNzX3BhcmFtLAo+ IHNpemVvZihWQVNsaWNlU3RydWN0VlZDKSk7Cj4gKyAgICAgICAgICAgIGlmIChlcnIgPCAwKQo+ ICsgICAgICAgICAgICAgICAgZ290byBmYWlsOwo+ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4g KyAgICByZXR1cm4gMDsKPiArCj4gK2ZhaWw6Cj4gKyAgICBmZl92YWFwaV9kZWNvZGVfY2FuY2Vs KGF2Y3R4LCAmcGljLT5waWMpOwo+ICsgICAgcmV0dXJuIGVycjsKPiArfQo+ICsKPiArc3RhdGlj IHVpbnQ4X3QgZ2V0X3JlZl9waWNfaW5kZXgoY29uc3QgVlZDQ29udGV4dCAqaCwgY29uc3QgVlZD RnJhbWUKPiAqZnJhbWUpCj4gK3sKPiArICAgIFZWQ0ZyYW1lQ29udGV4dCAgICAgICAgICAgICAq ZmMgPSAmaC0+ZmNzWyhoLT5uYl9mcmFtZXMgKyBoLT5uYl9mY3MpCj4gJSBoLT5uYl9mY3NdOwo+ ICsgICAgVkFBUElEZWNvZGVQaWN0dXJlVlZDICAgICAgKnBpYyA9IGZjLT5yZWYtPmh3YWNjZWxf cGljdHVyZV9wcml2YXRlOwo+ICsgICAgVkFQaWN0dXJlUGFyYW1ldGVyQnVmZmVyVlZDICpwcCA9 IChWQVBpY3R1cmVQYXJhbWV0ZXJCdWZmZXJWVkMKPiAqKSZwaWMtPnBpY19wYXJhbTsKPiArICAg IHVpbnQ4X3QgaTsKPiArCj4gKyAgICBpZiAoIWZyYW1lKQo+ICsgICAgICAgIHJldHVybiAweEZG Owo+ICsKPiArICAgIGZvciAoaSA9IDA7IGkgPCBGRl9BUlJBWV9FTEVNUyhwcC0+UmVmZXJlbmNl RnJhbWVzKTsgaSsrKSB7Cj4gKyAgICAgICAgVkFTdXJmYWNlSUQgcGlkID0gcHAtPlJlZmVyZW5j ZUZyYW1lc1tpXS5waWN0dXJlX2lkOwo+ICsgICAgICAgIGludCBwb2MgPSBwcC0+UmVmZXJlbmNl RnJhbWVzW2ldLnBpY19vcmRlcl9jbnQ7Cj4gKyAgICAgICAgaWYgKHBpZCAhPSBWQV9JTlZBTElE X0lEICYmIHBpZCA9PQo+IGZmX3ZhYXBpX2dldF9zdXJmYWNlX2lkKGZyYW1lLT5mcmFtZSkgJiYg cG9jID09IGZyYW1lLT5wb2MpCj4gKyAgICAgICAgICAgIHJldHVybiBpOwo+ICsgICAgfQo+ICsK PiArICAgIHJldHVybiAweEZGOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGdldF9zbGljZV9kYXRh X29mZnNldChjb25zdCB1aW50OF90ICpidWZmZXIsIHVpbnQzMl90IHNpemUsCj4gY29uc3QgU2xp Y2VDb250ZXh0KiBzYykKPiArewo+ICsgICAgY29uc3QgSDI2NlJhd1NsaWNlICpzbGljZSA9IHNj LT5yZWY7Cj4gKyAgICBpbnQgbnVtX2lkZW50aWNhbF9ieXRlcyAgID0gc2xpY2UtPmRhdGFfc2l6 ZSA8IDMyID8gc2xpY2UtPmRhdGFfc2l6ZQo+IDogMzI7Cj4gKwo+ICsgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCBzaXplOyBpKyspIHsKPiArICAgICAgICBpbnQgc2tpcF9ieXRlcyA9IDA7Cj4gKyAg ICAgICAgaWYgKGkgPj0yICYmIGJ1ZmZlcltpXSA9PSAweDAzICYmICFidWZmZXJbaSAtIDFdICYm ICFidWZmZXJbaSAtCj4gMl0pCj4gKyAgICAgICAgICAgIGNvbnRpbnVlOwo+ICsKPiArICAgICAg ICBmb3IgKGludCBqID0gMDsgaiA8IG51bV9pZGVudGljYWxfYnl0ZXM7IGorKykgewo+ICsgICAg ICAgICAgICBpZiAoaSA+PSAyICYmIGJ1ZmZlcltpICsgaiArIHNraXBfYnl0ZXNdID09IDB4MDMg JiYgIWJ1ZmZlcltpCj4gKyBqICsgc2tpcF9ieXRlcyAtIDFdICYmICFidWZmZXJbaSArIGogKyBz a2lwX2J5dGVzIC0gMl0pCj4gKyAgICAgICAgICAgICAgICBza2lwX2J5dGVzKys7Cj4gKwo+ICsg ICAgICAgICAgICBpZiAoYnVmZmVyW2kgKyBqICsgc2tpcF9ieXRlc10gIT0gc2xpY2UtPmRhdGFb al0pCj4gKyAgICAgICAgICAgICAgICBicmVhazsKPiArCj4gKyAgICAgICAgICAgIGlmIChqICsg MSA9PSBudW1faWRlbnRpY2FsX2J5dGVzKQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIGk7Cj4g KyAgICAgICAgfQo+ICsgICAgfQo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgaW50IHZhYXBpX3Z2Y19kZWNvZGVfc2xpY2UoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmJ1ZmZlciwK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAgICAgICBzaXpl KQo+ICt7Cj4gKyAgICBjb25zdCBWVkNDb250ZXh0ICAgICAgICAgICAgICAgICAgICAqaCA9IGF2 Y3R4LT5wcml2X2RhdGE7Cj4gKyAgICBWVkNGcmFtZUNvbnRleHQgICAgICAgICAgICAgICAgICAg ICpmYyA9ICZoLT5mY3NbKGgtPm5iX2ZyYW1lcyArCj4gaC0+bmJfZmNzKSAlIGgtPm5iX2Zjc107 Cj4gKyAgICBjb25zdCBTbGljZUNvbnRleHQgICAgICAgICAgICAgICAgICpzYyA9IGZjLT5zbGlj ZXNbZmMtPm5iX3NsaWNlc107Cj4gKyAgICBjb25zdCBIMjY2UmF3UFBTICAgICAgICAgICAgICAg ICAgKnBwcyA9IGZjLT5wcy5wcHMtPnI7Cj4gKyAgICBjb25zdCBIMjY2UmF3UGljdHVyZUhlYWRl ciAgICAgICAgICpwaCA9IGZjLT5wcy5waC5yOwo+ICsgICAgY29uc3QgSDI2NlJhd1NsaWNlSGVh ZGVyICAgICAgICAgICAqc2ggPSBzYy0+c2gucjsKPiArICAgIFZBQVBJRGVjb2RlUGljdHVyZVZW QyAgICAgICAgICAgICAqcGljID0KPiBmYy0+cmVmLT5od2FjY2VsX3BpY3R1cmVfcHJpdmF0ZTsK PiArICAgIFZBU2xpY2VQYXJhbWV0ZXJCdWZmZXJWVkMgKnNsaWNlX3BhcmFtID0gJnBpYy0+c2xp Y2VfcGFyYW07Cj4gKyAgICBpbnQgbmJfbGlzdCwgaSwgZXJyOwo+ICsKPiArICAgICpzbGljZV9w YXJhbSA9IChWQVNsaWNlUGFyYW1ldGVyQnVmZmVyVlZDKSB7Cj4gKyAgICAgICAgLnNsaWNlX2Rh dGFfc2l6ZSAgICAgICAgICAgICAgICAgPSBzaXplLAo+ICsgICAgICAgIC5zbGljZV9kYXRhX29m ZnNldCAgICAgICAgICAgICAgID0gMCwKPiArICAgICAgICAuc2xpY2VfZGF0YV9mbGFnICAgICAg ICAgICAgICAgICA9IFZBX1NMSUNFX0RBVEFfRkxBR19BTEwsCj4gKyAgICAgICAgLnNsaWNlX2Rh dGFfYnl0ZV9vZmZzZXQgICAgICAgICAgPSBnZXRfc2xpY2VfZGF0YV9vZmZzZXQoYnVmZmVyLAo+ IHNpemUsIHNjKSwKPiArICAgICAgICAuc2hfc3VicGljX2lkICAgICAgICAgICAgICAgICAgICA9 IHNoLT5zaF9zdWJwaWNfaWQsCj4gKyAgICAgICAgLnNoX3NsaWNlX2FkZHJlc3MgICAgICAgICAg ICAgICAgPSBzaC0+c2hfc2xpY2VfYWRkcmVzcywKPiArICAgICAgICAuc2hfbnVtX3RpbGVzX2lu X3NsaWNlX21pbnVzMSAgICA9Cj4gc2gtPnNoX251bV90aWxlc19pbl9zbGljZV9taW51czEsCj4g KyAgICAgICAgLnNoX3NsaWNlX3R5cGUgICAgICAgICAgICAgICAgICAgPSBzaC0+c2hfc2xpY2Vf dHlwZSwKPiArICAgICAgICAuc2hfbnVtX2FsZl9hcHNfaWRzX2x1bWEgICAgICAgICA9IHNoLT5z aF9udW1fYWxmX2Fwc19pZHNfbHVtYSwKPiArICAgICAgICAuc2hfYWxmX2Fwc19pZF9jaHJvbWEg ICAgICAgICAgICA9IHNoLT5zaF9hbGZfYXBzX2lkX2Nocm9tYSwKPiArICAgICAgICAuc2hfYWxm X2NjX2NiX2Fwc19pZCAgICAgICAgICAgICA9IHNoLT5zaF9hbGZfY2NfY2JfYXBzX2lkLAo+ICsg ICAgICAgIC5zaF9hbGZfY2NfY3JfYXBzX2lkICAgICAgICAgICAgID0gc2gtPnNoX2FsZl9jY19j cl9hcHNfaWQsCj4gKyAgICAgICAgLk51bVJlZklkeEFjdGl2ZVswXSAgICAgICAgICAgICAgPSBz aC0+bnVtX3JlZl9pZHhfYWN0aXZlWzBdLAo+ICsgICAgICAgIC5OdW1SZWZJZHhBY3RpdmVbMV0g ICAgICAgICAgICAgID0gc2gtPm51bV9yZWZfaWR4X2FjdGl2ZVsxXSwKPiArICAgICAgICAuc2hf Y29sbG9jYXRlZF9yZWZfaWR4ICAgICAgICAgICA9IHNoLT5zaF9jb2xsb2NhdGVkX3JlZl9pZHgs Cj4gKyAgICAgICAgLlNsaWNlUXBZICAgICAgICAgICAgICAgICAgICAgICAgPQo+IHBwcy0+cHBz X3FwX2RlbHRhX2luZm9faW5fcGhfZmxhZyA/Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAyNiArIHBwcy0+cHBzX2luaXRfcXBfbWludXMyNgo+ICsgcGgtPnBo X3FwX2RlbHRhIDoKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDI2ICsgcHBzLT5wcHNfaW5pdF9xcF9taW51czI2Cj4gKyBzaC0+c2hfcXBfZGVsdGEsCj4gKyAg ICAgICAgLnNoX2NiX3FwX29mZnNldCAgICAgICAgICAgICAgICAgPSBzaC0+c2hfY2JfcXBfb2Zm c2V0LAo+ICsgICAgICAgIC5zaF9jcl9xcF9vZmZzZXQgICAgICAgICAgICAgICAgID0gc2gtPnNo X2NyX3FwX29mZnNldCwKPiArICAgICAgICAuc2hfam9pbnRfY2Jjcl9xcF9vZmZzZXQgICAgICAg ICA9IHNoLT5zaF9qb2ludF9jYmNyX3FwX29mZnNldCwKPiArICAgICAgICAuc2hfbHVtYV9iZXRh X29mZnNldF9kaXYyICAgICAgICA9IHNoLT5zaF9sdW1hX2JldGFfb2Zmc2V0X2RpdjIsCj4gKyAg ICAgICAgLnNoX2x1bWFfdGNfb2Zmc2V0X2RpdjIgICAgICAgICAgPSBzaC0+c2hfbHVtYV90Y19v ZmZzZXRfZGl2MiwKPiArICAgICAgICAuc2hfY2JfYmV0YV9vZmZzZXRfZGl2MiAgICAgICAgICA9 IHNoLT5zaF9jYl9iZXRhX29mZnNldF9kaXYyLAo+ICsgICAgICAgIC5zaF9jYl90Y19vZmZzZXRf ZGl2MiAgICAgICAgICAgID0gc2gtPnNoX2NiX3RjX29mZnNldF9kaXYyLAo+ICsgICAgICAgIC5z aF9jcl9iZXRhX29mZnNldF9kaXYyICAgICAgICAgID0gc2gtPnNoX2NyX2JldGFfb2Zmc2V0X2Rp djIsCj4gKyAgICAgICAgLnNoX2NyX3RjX29mZnNldF9kaXYyICAgICAgICAgICAgPSBzaC0+c2hf Y3JfdGNfb2Zmc2V0X2RpdjIsCj4gKyAgICAgICAgLldQSW5mbyA9IHsKPiArICAgICAgICAgICAg Lmx1bWFfbG9nMl93ZWlnaHRfZGVub20gICAgICAgICA9Cj4gc2gtPnNoX3ByZWRfd2VpZ2h0X3Rh YmxlLmx1bWFfbG9nMl93ZWlnaHRfZGVub20sCj4gKyAgICAgICAgICAgIC5kZWx0YV9jaHJvbWFf bG9nMl93ZWlnaHRfZGVub20gPQo+IHNoLT5zaF9wcmVkX3dlaWdodF90YWJsZS5kZWx0YV9jaHJv bWFfbG9nMl93ZWlnaHRfZGVub20sCj4gKyAgICAgICAgICAgIC5udW1fbDBfd2VpZ2h0cyAgICAg ICAgICAgICAgICAgPQo+IHNoLT5zaF9wcmVkX3dlaWdodF90YWJsZS5udW1fbDBfd2VpZ2h0cywK PiArICAgICAgICAgICAgLm51bV9sMV93ZWlnaHRzICAgICAgICAgICAgICAgICA9Cj4gc2gtPnNo X3ByZWRfd2VpZ2h0X3RhYmxlLm51bV9sMV93ZWlnaHRzLAo+ICsgICAgICAgIH0sCj4gKyAgICAg ICAgLnNoX2ZsYWdzLmJpdHMgPSB7Cj4gKyAgICAgICAgICAgIC5zaF9hbGZfZW5hYmxlZF9mbGFn ICAgICAgICAgICAgICAgICA9Cj4gc2gtPnNoX2FsZl9lbmFibGVkX2ZsYWcsCj4gKyAgICAgICAg ICAgIC5zaF9hbGZfY2JfZW5hYmxlZF9mbGFnICAgICAgICAgICAgICA9Cj4gc2gtPnNoX2FsZl9j Yl9lbmFibGVkX2ZsYWcsCj4gKyAgICAgICAgICAgIC5zaF9hbGZfY3JfZW5hYmxlZF9mbGFnICAg ICAgICAgICAgICA9Cj4gc2gtPnNoX2FsZl9jcl9lbmFibGVkX2ZsYWcsCj4gKyAgICAgICAgICAg IC5zaF9hbGZfY2NfY2JfZW5hYmxlZF9mbGFnICAgICAgICAgICA9Cj4gc2gtPnNoX2FsZl9jY19j Yl9lbmFibGVkX2ZsYWcsCj4gKyAgICAgICAgICAgIC5zaF9hbGZfY2NfY3JfZW5hYmxlZF9mbGFn ICAgICAgICAgICA9Cj4gc2gtPnNoX2FsZl9jY19jcl9lbmFibGVkX2ZsYWcsCj4gKyAgICAgICAg ICAgIC5zaF9sbWNzX3VzZWRfZmxhZyAgICAgICAgICAgICAgICAgICA9IHNoLT5zaF9sbWNzX3Vz ZWRfZmxhZywKPiArICAgICAgICAgICAgLnNoX2V4cGxpY2l0X3NjYWxpbmdfbGlzdF91c2VkX2Zs YWcgID0KPiBzaC0+c2hfZXhwbGljaXRfc2NhbGluZ19saXN0X3VzZWRfZmxhZywKPiArICAgICAg ICAgICAgLnNoX2NhYmFjX2luaXRfZmxhZyAgICAgICAgICAgICAgICAgID0gc2gtPnNoX2NhYmFj X2luaXRfZmxhZywKPiArICAgICAgICAgICAgLnNoX2NvbGxvY2F0ZWRfZnJvbV9sMF9mbGFnICAg ICAgICAgID0KPiBzaC0+c2hfY29sbG9jYXRlZF9mcm9tX2wwX2ZsYWcsCj4gKyAgICAgICAgICAg IC5zaF9jdV9jaHJvbWFfcXBfb2Zmc2V0X2VuYWJsZWRfZmxhZyA9Cj4gc2gtPnNoX2N1X2Nocm9t YV9xcF9vZmZzZXRfZW5hYmxlZF9mbGFnLAo+ICsgICAgICAgICAgICAuc2hfc2FvX2x1bWFfdXNl ZF9mbGFnICAgICAgICAgICAgICAgPQo+IHNoLT5zaF9zYW9fbHVtYV91c2VkX2ZsYWcsCj4gKyAg ICAgICAgICAgIC5zaF9zYW9fY2hyb21hX3VzZWRfZmxhZyAgICAgICAgICAgICA9Cj4gc2gtPnNo X3Nhb19jaHJvbWFfdXNlZF9mbGFnLAo+ICsgICAgICAgICAgICAuc2hfZGVibG9ja2luZ19maWx0 ZXJfZGlzYWJsZWRfZmxhZyAgPQo+IHNoLT5zaF9kZWJsb2NraW5nX2ZpbHRlcl9kaXNhYmxlZF9m bGFnLAo+ICsgICAgICAgICAgICAuc2hfZGVwX3F1YW50X3VzZWRfZmxhZyAgICAgICAgICAgICAg PQo+IHNoLT5zaF9kZXBfcXVhbnRfdXNlZF9mbGFnLAo+ICsgICAgICAgICAgICAuc2hfc2lnbl9k YXRhX2hpZGluZ191c2VkX2ZsYWcgICAgICAgPQo+IHNoLT5zaF9zaWduX2RhdGFfaGlkaW5nX3Vz ZWRfZmxhZywKPiArICAgICAgICAgICAgLnNoX3RzX3Jlc2lkdWFsX2NvZGluZ19kaXNhYmxlZF9m bGFnID0KPiBzaC0+c2hfdHNfcmVzaWR1YWxfY29kaW5nX2Rpc2FibGVkX2ZsYWcsCj4gKyAgICAg ICAgfSwKPiArICAgIH07Cj4gKwo+ICsgICAgbWVtc2V0KCZzbGljZV9wYXJhbS0+UmVmUGljTGlz dCwgMHhGRiwKPiBzaXplb2Yoc2xpY2VfcGFyYW0tPlJlZlBpY0xpc3QpKTsKPiArCj4gKyAgICBu Yl9saXN0ID0gKHNoLT5zaF9zbGljZV90eXBlID09IFZWQ19TTElDRV9UWVBFX0IpID8KPiArICAg ICAgICAgICAgICAyIDogKHNoLT5zaF9zbGljZV90eXBlID09IFZWQ19TTElDRV9UWVBFX0kgPyAw IDogMSk7Cj4gKyAgICBmb3IgKGludCBsaXN0X2lkeCA9IDA7IGxpc3RfaWR4IDwgbmJfbGlzdDsg bGlzdF9pZHgrKykgewo+ICsgICAgICAgIFJlZlBpY0xpc3QgKnJwbCA9ICZzYy0+cnBsW2xpc3Rf aWR4XTsKPiArCj4gKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHJwbC0+bmJfcmVmczsgaSsrKQo+ ICsgICAgICAgICAgICBzbGljZV9wYXJhbS0+UmVmUGljTGlzdFtsaXN0X2lkeF1baV0gPSBnZXRf cmVmX3BpY19pbmRleChoLAo+IHJwbC0+cmVmW2ldKTsKPiArICAgIH0KPiArCj4gKyAgICBmb3Ig KGkgPSAwOyBpIDwgNzsgaSsrKQo+ICsgICAgICAgIHNsaWNlX3BhcmFtLT5zaF9hbGZfYXBzX2lk X2x1bWFbaV0gPSBzaC0+c2hfYWxmX2Fwc19pZF9sdW1hW2ldOwo+ICsKPiArICAgIGZvciAoaSA9 IDA7IGkgPCAxNTsgaSsrKSB7Cj4gKyAgICAgICAgc2xpY2VfcGFyYW0tPldQSW5mby5sdW1hX3dl aWdodF9sMF9mbGFnW2ldICAgPQo+IHNoLT5zaF9wcmVkX3dlaWdodF90YWJsZS5sdW1hX3dlaWdo dF9sMF9mbGFnW2ldOwo+ICsgICAgICAgIHNsaWNlX3BhcmFtLT5XUEluZm8uY2hyb21hX3dlaWdo dF9sMF9mbGFnW2ldID0KPiBzaC0+c2hfcHJlZF93ZWlnaHRfdGFibGUuY2hyb21hX3dlaWdodF9s MF9mbGFnW2ldOwo+ICsgICAgICAgIHNsaWNlX3BhcmFtLT5XUEluZm8uZGVsdGFfbHVtYV93ZWln aHRfbDBbaV0gID0KPiBzaC0+c2hfcHJlZF93ZWlnaHRfdGFibGUuZGVsdGFfbHVtYV93ZWlnaHRf bDBbaV07Cj4gKyAgICAgICAgc2xpY2VfcGFyYW0tPldQSW5mby5sdW1hX29mZnNldF9sMFtpXSAg ICAgICAgPQo+IHNoLT5zaF9wcmVkX3dlaWdodF90YWJsZS5sdW1hX29mZnNldF9sMFtpXTsKPiAr ICAgICAgICBzbGljZV9wYXJhbS0+V1BJbmZvLmx1bWFfd2VpZ2h0X2wxX2ZsYWdbaV0gICA9Cj4g c2gtPnNoX3ByZWRfd2VpZ2h0X3RhYmxlLmx1bWFfd2VpZ2h0X2wxX2ZsYWdbaV07Cj4gKyAgICAg ICAgc2xpY2VfcGFyYW0tPldQSW5mby5jaHJvbWFfd2VpZ2h0X2wxX2ZsYWdbaV0gPQo+IHNoLT5z aF9wcmVkX3dlaWdodF90YWJsZS5jaHJvbWFfd2VpZ2h0X2wxX2ZsYWdbaV07Cj4gKyAgICAgICAg c2xpY2VfcGFyYW0tPldQSW5mby5kZWx0YV9sdW1hX3dlaWdodF9sMVtpXSAgPQo+IHNoLT5zaF9w cmVkX3dlaWdodF90YWJsZS5kZWx0YV9sdW1hX3dlaWdodF9sMVtpXTsKPiArICAgICAgICBzbGlj ZV9wYXJhbS0+V1BJbmZvLmx1bWFfb2Zmc2V0X2wxW2ldICAgICAgICA9Cj4gc2gtPnNoX3ByZWRf d2VpZ2h0X3RhYmxlLmx1bWFfb2Zmc2V0X2wxW2ldOwo+ICsgICAgfQo+ICsKPiArICAgIGZvciAo aSA9IDA7IGkgPCAxNTsgaSsrKSB7Cj4gKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCAyOyBq KyspIHsKPiArICAgICAgICAgICAgc2xpY2VfcGFyYW0tPldQSW5mby5kZWx0YV9jaHJvbWFfd2Vp Z2h0X2wwW2ldW2pdID0KPiBzaC0+c2hfcHJlZF93ZWlnaHRfdGFibGUuZGVsdGFfY2hyb21hX3dl aWdodF9sMFtpXVtqXTsKPiArICAgICAgICAgICAgc2xpY2VfcGFyYW0tPldQSW5mby5kZWx0YV9j aHJvbWFfb2Zmc2V0X2wwW2ldW2pdID0KPiBzaC0+c2hfcHJlZF93ZWlnaHRfdGFibGUuZGVsdGFf Y2hyb21hX29mZnNldF9sMFtpXVtqXTsKPiArICAgICAgICAgICAgc2xpY2VfcGFyYW0tPldQSW5m by5kZWx0YV9jaHJvbWFfd2VpZ2h0X2wxW2ldW2pdID0KPiBzaC0+c2hfcHJlZF93ZWlnaHRfdGFi bGUuZGVsdGFfY2hyb21hX3dlaWdodF9sMVtpXVtqXTsKPiArICAgICAgICAgICAgc2xpY2VfcGFy YW0tPldQSW5mby5kZWx0YV9jaHJvbWFfb2Zmc2V0X2wxW2ldW2pdID0KPiBzaC0+c2hfcHJlZF93 ZWlnaHRfdGFibGUuZGVsdGFfY2hyb21hX29mZnNldF9sMVtpXVtqXTsKPiArICAgICAgICB9Cj4g KyAgICB9Cj4gKwo+ICsgICAgZXJyID0gZmZfdmFhcGlfZGVjb2RlX21ha2Vfc2xpY2VfYnVmZmVy KGF2Y3R4LCAmcGljLT5waWMsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJnBpYy0+c2xpY2VfcGFyYW0sCj4gKwo+IHNpemVvZihWQVNsaWNlUGFyYW1ldGVy QnVmZmVyVlZDKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBidWZmZXIsIHNpemUpOwo+ICsgICAgaWYgKGVycikgewo+ICsgICAgICAgIGZmX3ZhYXBpX2Rl Y29kZV9jYW5jZWwoYXZjdHgsICZwaWMtPnBpYyk7Cj4gKyAgICAgICAgcmV0dXJuIGVycjsKPiAr ICAgIH0KPiArCj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCB2YWFwaV92 dmNfZW5kX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCkKPiArewo+ICsKPiArICAgIGNvbnN0 IFZWQ0NvbnRleHQgICAgICAgICpoID0gYXZjdHgtPnByaXZfZGF0YTsKPiArICAgIFZWQ0ZyYW1l Q29udGV4dCAgICAgICAgKmZjID0gJmgtPmZjc1soaC0+bmJfZnJhbWVzICsgaC0+bmJfZmNzKSAl Cj4gaC0+bmJfZmNzXTsKPiArICAgIFZBQVBJRGVjb2RlUGljdHVyZVZWQyAqcGljID0gZmMtPnJl Zi0+aHdhY2NlbF9waWN0dXJlX3ByaXZhdGU7Cj4gKyAgICBpbnQgcmV0Owo+ICsKPiArICAgIHJl dCA9IGZmX3ZhYXBpX2RlY29kZV9pc3N1ZShhdmN0eCwgJnBpYy0+cGljKTsKPiArICAgIGlmIChy ZXQgPCAwKQo+ICsgICAgICAgIGdvdG8gZmFpbDsKPiArCj4gKyAgICBwaWMtPmRlY29kZV9pc3N1 ZWQgPSAxOwo+ICsKPiArICAgIHJldHVybiAwOwo+ICsKPiArZmFpbDoKPiArICAgIGZmX3ZhYXBp X2RlY29kZV9jYW5jZWwoYXZjdHgsICZwaWMtPnBpYyk7Cj4gKyAgICByZXR1cm4gcmV0Owo+ICt9 Cj4gKwo+ICtjb25zdCBGRkhXQWNjZWwgZmZfdnZjX3ZhYXBpX2h3YWNjZWwgPSB7Cj4gKyAgICAu cC5uYW1lICAgICAgICAgICAgICAgPSAidnZjX3ZhYXBpIiwKPiArICAgIC5wLnR5cGUgICAgICAg ICAgICAgICA9IEFWTUVESUFfVFlQRV9WSURFTywKPiArICAgIC5wLmlkICAgICAgICAgICAgICAg ICA9IEFWX0NPREVDX0lEX1ZWQywKPiArICAgIC5wLnBpeF9mbXQgICAgICAgICAgICA9IEFWX1BJ WF9GTVRfVkFBUEksCj4gKyAgICAuc3RhcnRfZnJhbWUgICAgICAgICAgPSAmdmFhcGlfdnZjX3N0 YXJ0X2ZyYW1lLAo+ICsgICAgLmVuZF9mcmFtZSAgICAgICAgICAgID0gJnZhYXBpX3Z2Y19lbmRf ZnJhbWUsCj4gKyAgICAuZGVjb2RlX3NsaWNlICAgICAgICAgPSAmdmFhcGlfdnZjX2RlY29kZV9z bGljZSwKPiArICAgIC5mcmFtZV9wcml2X2RhdGFfc2l6ZSA9IHNpemVvZihWQUFQSURlY29kZVBp Y3R1cmVWVkMpLAo+ICsgICAgLmluaXQgICAgICAgICAgICAgICAgID0gJmZmX3ZhYXBpX2RlY29k ZV9pbml0LAo+ICsgICAgLnVuaW5pdCAgICAgICAgICAgICAgID0gJmZmX3ZhYXBpX2RlY29kZV91 bmluaXQsCj4gKyAgICAuZnJhbWVfcGFyYW1zICAgICAgICAgPSAmZmZfdmFhcGlfY29tbW9uX2Zy YW1lX3BhcmFtcywKPiArICAgIC5wcml2X2RhdGFfc2l6ZSAgICAgICA9IHNpemVvZihWQUFQSURl Y29kZUNvbnRleHQpLAo+ICsgICAgLmNhcHNfaW50ZXJuYWwgICAgICAgID0gSFdBQ0NFTF9DQVBf QVNZTkNfU0FGRSwKPiArfTsKPiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92ZXJzaW9uLmggYi9s aWJhdmNvZGVjL3ZlcnNpb24uaAo+IGluZGV4IDA2NjMxZmZhOGMuLjdhYTk1ZmMzZjEgMTAwNjQ0 Cj4gLS0tIGEvbGliYXZjb2RlYy92ZXJzaW9uLmgKPiArKysgYi9saWJhdmNvZGVjL3ZlcnNpb24u aAo+IEBAIC0yOSw3ICsyOSw3IEBACj4KPiAgI2luY2x1ZGUgInZlcnNpb25fbWFqb3IuaCIKPgo+ IC0jZGVmaW5lIExJQkFWQ09ERUNfVkVSU0lPTl9NSU5PUiAgIDQKPiArI2RlZmluZSBMSUJBVkNP REVDX1ZFUlNJT05fTUlOT1IgICA1Cj4gICNkZWZpbmUgTElCQVZDT0RFQ19WRVJTSU9OX01JQ1JP IDEwMAo+Cj4gICNkZWZpbmUgTElCQVZDT0RFQ19WRVJTSU9OX0lOVCAgQVZfVkVSU0lPTl9JTlQo TElCQVZDT0RFQ19WRVJTSU9OX01BSk9SLCBcCj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdnZj L3Z2Y2RlYy5jIGIvbGliYXZjb2RlYy92dmMvdnZjZGVjLmMKPiBpbmRleCBmMmUyNjljZTc2Li5i MjA0YTBjNzNhIDEwMDY0NAo+IC0tLSBhL2xpYmF2Y29kZWMvdnZjL3Z2Y2RlYy5jCj4gKysrIGIv bGliYXZjb2RlYy92dmMvdnZjZGVjLmMKPiBAQCAtMjksNiArMjksNyBAQAo+ICAjaW5jbHVkZSAi bGliYXZ1dGlsL2NwdS5oIgo+ICAjaW5jbHVkZSAibGliYXZ1dGlsL3RocmVhZC5oIgo+Cj4gKyNp bmNsdWRlICJjb25maWdfY29tcG9uZW50cy5oIgo+ICAjaW5jbHVkZSAidnZjZGVjLmgiCj4gICNp bmNsdWRlICJ2dmNfY3R1LmgiCj4gICNpbmNsdWRlICJ2dmNfZGF0YS5oIgo+IEBAIC03MjQsMTQg KzcyNSwyMCBAQCBzdGF0aWMgaW50IHNsaWNlX3N0YXJ0KFNsaWNlQ29udGV4dCAqc2MsIFZWQ0Nv bnRleHQKPiAqcywgVlZDRnJhbWVDb250ZXh0ICpmYywKPgo+ICBzdGF0aWMgZW51bSBBVlBpeGVs Rm9ybWF0IGdldF9mb3JtYXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBjb25zdCBWVkNTUFMKPiAq c3BzKQo+ICB7Cj4gLSNkZWZpbmUgSFdBQ0NFTF9NQVggMAo+ICsjZGVmaW5lIEhXQUNDRUxfTUFY IENPTkZJR19WVkNfVkFBUElfSFdBQ0NFTAo+Cj4gICAgICBlbnVtIEFWUGl4ZWxGb3JtYXQgcGl4 X2ZtdHNbSFdBQ0NFTF9NQVggKyAyXSwgKmZtdCA9IHBpeF9mbXRzOwo+Cj4gICAgICBzd2l0Y2gg KHNwcy0+cGl4X2ZtdCkgewo+ICAgICAgY2FzZSBBVl9QSVhfRk1UX1lVVjQyMFA6Cj4gKyNpZiBD T05GSUdfVlZDX1ZBQVBJX0hXQUNDRUwKPiArICAgICAgICAqZm10KysgPSBBVl9QSVhfRk1UX1ZB QVBJOwo+ICsjZW5kaWYKPiAgICAgICAgICBicmVhazsKPiAgICAgIGNhc2UgQVZfUElYX0ZNVF9Z VVY0MjBQMTA6Cj4gKyNpZiBDT05GSUdfVlZDX1ZBQVBJX0hXQUNDRUwKPiArICAgICAgICAqZm10 KysgPSBBVl9QSVhfRk1UX1ZBQVBJOwo+ICsjZW5kaWYKPiAgICAgICAgICBicmVhazsKPiAgICAg IH0KPgo+IEBAIC0xMTAwLDQgKzExMDcsMTAgQEAgY29uc3QgRkZDb2RlYyBmZl92dmNfZGVjb2Rl ciA9IHsKPiAgICAgIC5jYXBzX2ludGVybmFsICA9IEZGX0NPREVDX0NBUF9FWFBPUlRTX0NST1BQ SU5HIHwKPiBGRl9DT0RFQ19DQVBfSU5JVF9DTEVBTlVQIHwKPiAgICAgICAgICAgICAgICAgICAg ICAgIEZGX0NPREVDX0NBUF9BVVRPX1RIUkVBRFMsCj4gICAgICAucC5wcm9maWxlcyAgICAgPSBO VUxMX0lGX0NPTkZJR19TTUFMTChmZl92dmNfcHJvZmlsZXMpLAo+ICsgICAgLmh3X2NvbmZpZ3Mg ICAgID0gKGNvbnN0IEFWQ29kZWNIV0NvbmZpZ0ludGVybmFsICpjb25zdCBbXSkgewo+ICsjaWYg Q09ORklHX1ZWQ19WQUFQSV9IV0FDQ0VMCj4gKyAgICAgICAgICAgICAgICAgICAgSFdBQ0NFTF9W QUFQSSh2dmMpLAo+ICsjZW5kaWYKPiArICAgIE5VTEwKPiArICAgIH0sCj4gIH07Cj4gLS0KPiAy LjI1LjEKPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Cj4gZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdAo+IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCj4g aHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCj4KPiBUbyB1 bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKPiBmZm1wZWctZGV2ZWwtcmVx dWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo+Cl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5n IGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4v bGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwg b3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVu c3Vic2NyaWJlIi4K