Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p2M3f-000739-D3 for pgsql-hackers@arkaria.postgresql.org; Tue, 06 Dec 2022 00:43:40 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1p2M3d-0008MC-6c for pgsql-hackers@arkaria.postgresql.org; Tue, 06 Dec 2022 00:43:37 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p2M3c-0008M2-OC for pgsql-hackers@lists.postgresql.org; Tue, 06 Dec 2022 00:43:36 +0000 Received: from mxout.index.de ([185.11.139.159]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p2M3Y-0000u5-OJ for pgsql-hackers@postgresql.org; Tue, 06 Dec 2022 00:43:35 +0000 Received: from remote.index.de (unknown [217.110.204.106]) by mxout.index.de (Postfix) with ESMTPS id 2674B611BE; Tue, 6 Dec 2022 00:43:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=index.de; s=dkim; t=1670287411; bh=ewgF5SDJ6Loa2wgH2FG26xL5tkksZbxoquAK8RG0QGM=; h=From:To:CC:Subject:Date:References:In-Reply-To:From; b=h+jdYpXu/QSPch0aBokdT7k1ltOnVuugWNgH8TtgN77zchpLHBqnLl5DI8y54HCFY OUMWJFr7UjtxuWemAl21ZFwvMItkDgaaJZ9cCqzDiYwpjkvREMUoY9YmvRmrPeWjZk AOnYkIlr71klruruJIJq2vcmZYi1nCFiib6jrIiD46IeuDbjGmUF/i6bY9FbEcSkpR XDAi7c2ZyjCkM3IurwtuwGqKH7qB3R5dnEK9IFnqYKJkW/dzigIxLGXQKivenPenhS IOhBdemF++yubKoiema6efd2bjzEbB5MtPNNNCVHlQiyVRHdOnADLk4UbRz9uG71mT a9T7ydcFcoN+g== Received: from acedia.index-gruppe.local (192.168.54.121) by invidia.index-gruppe.local (192.168.54.140) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Tue, 6 Dec 2022 01:43:30 +0100 Received: from acedia.index-gruppe.local ([fe80::59ff:7603:fb87:fa45]) by acedia.index-gruppe.local ([fe80::59ff:7603:fb87:fa45%13]) with mapi id 15.01.2507.016; Tue, 6 Dec 2022 01:43:30 +0100 From: Arne Roland To: Andres Freund CC: David Rowley , Amit Langote , pgsql-hackers , Zhihong Yu , Alvaro Herrera , Julien Rouhaud Subject: Re: missing indexes in indexlist with partitioned tables Thread-Topic: missing indexes in indexlist with partitioned tables Thread-Index: AQHXsJoeXw6ojQG4NkOLdiX4KUBdD6vkTOpcgIAWJQCAA2SO7oAAbRh////16wCAADDYxYAAo/oAgABsDQCAAiIn7oAADRXl///25gCAAD4kxoAIQqeAgAnMh4CBIEebGIBFWqsAgAZz6YCAABQ2gIAAAgsAgAO9bJmAEBeNgIAFtfYrgEkdiYCAA+kAWA== Date: Tue, 6 Dec 2022 00:43:30 +0000 Message-ID: <07eacfbceec74ee6b48e3ce14bc7f274@index.de> References: <20220118065750.v5zigpuisljc6jmk@jrouhaud>,<20221122013659.phxbc2houon6jeo5@awork3.anarazel.de> In-Reply-To: <20221122013659.phxbc2houon6jeo5@awork3.anarazel.de> Accept-Language: en-US, de-DE Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [89.247.174.54] Content-Type: multipart/mixed; boundary="_004_07eacfbceec74ee6b48e3ce14bc7f274indexde_" MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_004_07eacfbceec74ee6b48e3ce14bc7f274indexde_ Content-Type: multipart/alternative; boundary="_000_07eacfbceec74ee6b48e3ce14bc7f274indexde_" --_000_07eacfbceec74ee6b48e3ce14bc7f274indexde_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Thank you! Sadly I didn't manage how to reproduce that locally. check-world doesn't se= em to fail at my end. That being said, attached patch should fix the issue reported below. I'll have another look at the log later this week. Regards Arne ________________________________ From: Andres Freund Sent: Tuesday, November 22, 2022 2:36:59 AM To: Arne Roland Cc: David Rowley; Amit Langote; pgsql-hackers; Zhihong Yu; Alvaro Herrera; = Julien Rouhaud Subject: Re: missing indexes in indexlist with partitioned tables Hi, On 2022-11-02 01:50:38 +0000, Arne Roland wrote: > I mainly changed the comments, the Assert and some casing. The tests have been failing for a while https://cirrus-ci.com/github/postgresql-cfbot/postgresql/commitfest/40/3452 Cirrus CI cirrus-ci.com Cirrus CI makes your development cycle fast, efficient, and secure by lever= aging modern cloud technologies. https://api.cirrus-ci.com/v1/task/6190372803051520/logs/cores.log #2 0x00005645dff192f6 in ExceptionalCondition (conditionName=3DconditionNa= me@entry=3D0x5645e014b167 "false", fileName=3DfileName@entry=3D0x5645e0196b= 08 "../src/backend/storage/buffer/bufmgr.c", lineNumber=3DlineNumber@entry= =3D2971) at ../src/backend/utils/error/assert.c:66 No locals. #3 0x00005645dfc13823 in RelationGetNumberOfBlocksInFork (relation=3Drelat= ion@entry=3D0x7fb54d54e470, forkNum=3DforkNum@entry=3DMAIN_FORKNUM) at ../s= rc/backend/storage/buffer/bufmgr.c:2971 No locals. #4 0x00005645dfa9ac5e in get_relation_info (root=3Droot@entry=3D0x5645e1ed= 9840, relationObjectId=3D16660, inhparent=3D, rel=3Drel@entr= y=3D0x5645e2086b38) at ../src/backend/optimizer/util/plancat.c:442 indexoid =3D info =3D 0x5645e2083b28 i =3D indexRelation =3D 0x7fb54d54e470 index =3D 0x7fb54d548c48 amroutine =3D ncolumns =3D 1 nkeycolumns =3D 1 l__state =3D {l =3D , i =3D } indexoidlist =3D 0x5645e2088a98 lmode =3D 1 l =3D varno =3D 1 relation =3D 0x7fb54d54e680 hasindex =3D indexinfos =3D 0x0 __func__ =3D "get_relation_info" #5 0x00005645dfaa5e25 in build_simple_rel (root=3D0x5645e1ed9840, relid=3D= 1, parent=3Dparent@entry=3D0x0) at ../src/backend/optimizer/util/relnode.c:= 293 rel =3D 0x5645e2086b38 rte =3D 0x5645e1ed8fc8 __func__ =3D "build_simple_rel" ... Greetings, Andres Freund --_000_07eacfbceec74ee6b48e3ce14bc7f274indexde_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

Thank you!


Sadly I didn't manage how to reproduce that locally. check-world doesn't= seem to fail at my end.


That being said, attached patch should fix the issue reported below.


I'll have another look at the log later this week.


Regards

Arne



From: Andres Freund <a= ndres@anarazel.de>
Sent: Tuesday, November 22, 2022 2:36:59 AM
To: Arne Roland
Cc: David Rowley; Amit Langote; pgsql-hackers; Zhihong Yu; Alvaro He= rrera; Julien Rouhaud
Subject: Re: missing indexes in indexlist with partitioned tables
 
Hi,

On 2022-11-02 01:50:38 +0000, Arne Roland wrote:
> I mainly changed the comments, the Assert and some casing.

The tests have been failing for a while
https://cirrus-ci.c= om/github/postgresql-cfbot/postgresql/commitfest/40/3452
cirrus-ci.com
Cirrus CI makes your development cycle fast, efficient, and secure by lever= aging modern cloud technologies.


https://api.cirrus-ci.com/v1/= task/6190372803051520/logs/cores.log

#2  0x00005645dff192f6 in ExceptionalCondition (conditionName=3Dcondit= ionName@entry=3D0x5645e014b167 "false", fileName=3DfileName@entry= =3D0x5645e0196b08 "../src/backend/storage/buffer/bufmgr.c", lineN= umber=3DlineNumber@entry=3D2971) at ../src/backend/utils/error/assert.c:66<= br> No locals.
#3  0x00005645dfc13823 in RelationGetNumberOfBlocksInFork (relation=3D= relation@entry=3D0x7fb54d54e470, forkNum=3DforkNum@entry=3DMAIN_FORKNUM) at= ../src/backend/storage/buffer/bufmgr.c:2971
No locals.
#4  0x00005645dfa9ac5e in get_relation_info (root=3Droot@entry=3D0x564= 5e1ed9840, relationObjectId=3D16660, inhparent=3D<optimized out>, rel= =3Drel@entry=3D0x5645e2086b38) at ../src/backend/optimizer/util/plancat.c:4= 42
        indexoid =3D <optimized out&g= t;
        info =3D 0x5645e2083b28
        i =3D <optimized out>
        indexRelation =3D 0x7fb54d54e470=
        index =3D 0x7fb54d548c48
        amroutine =3D <optimized out&= gt;
        ncolumns =3D 1
        nkeycolumns =3D 1
        l__state =3D {l =3D <optimize= d out>, i =3D <optimized out>}
        indexoidlist =3D 0x5645e2088a98<= br>         lmode =3D 1
        l =3D <optimized out>
        varno =3D 1
        relation =3D 0x7fb54d54e680
        hasindex =3D <optimized out&g= t;
        indexinfos =3D 0x0
        __func__ =3D "get_relation_= info"
#5  0x00005645dfaa5e25 in build_simple_rel (root=3D0x5645e1ed9840, rel= id=3D1, parent=3Dparent@entry=3D0x0) at ../src/backend/optimizer/util/relno= de.c:293
        rel =3D 0x5645e2086b38
        rte =3D 0x5645e1ed8fc8
        __func__ =3D "build_simple_= rel"
...

Greetings,

Andres Freund



--_000_07eacfbceec74ee6b48e3ce14bc7f274indexde_-- --_004_07eacfbceec74ee6b48e3ce14bc7f274indexde_ Content-Type: text/x-patch; name="v10-0001-indexlist.patch" Content-Description: v10-0001-indexlist.patch Content-Disposition: attachment; filename="v10-0001-indexlist.patch"; size=25323; creation-date="Tue, 06 Dec 2022 00:42:59 GMT"; modification-date="Tue, 06 Dec 2022 00:42:59 GMT" Content-Transfer-Encoding: base64 RnJvbSBlMmMwNjY3ZWIzYWQ4NmRiMmYxMzM2OWU5NjkyMDY1ZDU3YWE3YjFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBcm5lIFJvbGFuZCA8YXJuZS5yb2xhbmRAaW5kZXguZGU+CkRh dGU6IFR1ZSwgNiBEZWMgMjAyMiAwMTo0MDoyMSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjEwXSB2 MTAKCi0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jICAgICAgICAgfCAy ODkgKysrKysrKysrKy0tLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMg ICAgICAgICAgICAgfCAgIDQgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggICAgICAg ICAgICAgICAgfCAgMTEgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5oZXJpdC5vdXQg ICAgICAgIHwgICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQgICAgICAg ICAgIHwgIDUyICsrKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX2pvaW4u b3V0IHwgICA2ICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9pbmhlcml0LnNxbCAgICAgICAgICAg ICB8ICAgNCArCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luLnNxbCAgICAgICAgICAgICAgICB8 ICAzNCArKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9qb2luLnNxbCAgICAgIHwg ICA2ICstCiA5IGZpbGVzIGNoYW5nZWQsIDI2NCBpbnNlcnRpb25zKCspLCAxNDQgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCmluZGV4IDlkZWZlMzc4MzYuLjAw OGJkMzg3ODUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQu YworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKQEAgLTEwNiwxMCAr MTA2LDEyIEBAIHN0YXRpYyB2b2lkIHNldF9iYXNlcmVsX3BhcnRpdGlvbl9jb25zdHJhaW50KFJl bGF0aW9uIHJlbGF0aW9uLAogICogY2FzZXMgdGhlc2UgYXJlIGxlZnQgYXMgemVyb2VzLCBidXQg c29tZXRpbWVzIHdlIG5lZWQgdG8gY29tcHV0ZSBhdHRyCiAgKiB3aWR0aHMgaGVyZSwgYW5kIHdl IG1heSBhcyB3ZWxsIGNhY2hlIHRoZSByZXN1bHRzIGZvciBjb3N0c2l6ZS5jLgogICoKLSAqIElm IGluaHBhcmVudCBpcyB0cnVlLCBhbGwgd2UgbmVlZCB0byBkbyBpcyBzZXQgdXAgdGhlIGF0dHIg YXJyYXlzOgotICogdGhlIFJlbE9wdEluZm8gYWN0dWFsbHkgcmVwcmVzZW50cyB0aGUgYXBwZW5k cmVsIGZvcm1lZCBieSBhbiBpbmhlcml0YW5jZQotICogdHJlZSwgYW5kIHNvIHRoZSBwYXJlbnQg cmVsJ3MgcGh5c2ljYWwgc2l6ZSBhbmQgaW5kZXggaW5mb3JtYXRpb24gaXNuJ3QKLSAqIGltcG9y dGFudCBmb3IgaXQuCisgKiBJZiBpbmhwYXJlbnQgaXMgdHJ1ZSwgd2UgZG9uJ3QgY2FyZSBhYm91 dCBwaHlzaWNhbCBzaXplLCBpbmRleCBhbQorICogYW5kIGVzdGltYXRlcy4KKyAqIFdlIHN0aWxs IG5lZWQgaW5kZXggdW5pcXVlbmVzcyBmb3Igam9pbiByZW1vdmFsLgorICogV2hlbiBpdCBjb21l cyB0byB0aGUgcGF0aCwgdGhlIFJlbE9wdEluZm8gYWN0dWFsbHkgcmVwcmVzZW50cworICogdGhl IGFwcGVuZHJlbCBmb3JtZWQgYnkgYW4gaW5oZXJpdGFuY2UgdHJlZSwgYW5kIHNvIHRoZSBwYXJl bnQKKyAqIHJlbCdzIHBoeXNpY2FsIHNpemUgaXNuJ3QgaW1wb3J0YW50IGZvciBpdC4KICAqLwog dm9pZAogZ2V0X3JlbGF0aW9uX2luZm8oUGxhbm5lckluZm8gKnJvb3QsIE9pZCByZWxhdGlvbk9i amVjdElkLCBib29sIGluaHBhcmVudCwKQEAgLTE3NSwxMCArMTc3LDEyIEBAIGdldF9yZWxhdGlv bl9pbmZvKFBsYW5uZXJJbmZvICpyb290LCBPaWQgcmVsYXRpb25PYmplY3RJZCwgYm9vbCBpbmhw YXJlbnQsCiAKIAkvKgogCSAqIE1ha2UgbGlzdCBvZiBpbmRleGVzLiAgSWdub3JlIGluZGV4ZXMg b24gc3lzdGVtIGNhdGFsb2dzIGlmIHRvbGQgdG8uCi0JICogRG9uJ3QgYm90aGVyIHdpdGggaW5k ZXhlcyBmb3IgYW4gaW5oZXJpdGFuY2UgcGFyZW50LCBlaXRoZXIuCisJICogRG9uJ3QgYm90aGVy IHdpdGggaW5kZXhlcyBmcm9tIHRyYWRpdGlvbmFsIGluaGVyaXRhbmNlIHBhcmVudHMuCisJICog V2UgY2FyZSBhYm91dCBwYXJ0aXRpb25lZCBpbmRleGVzIGZvciBmdXJ0aGVyIG9wdGltaXNhdGlv bnMsIGxpa2Ugam9pbgorCSAqIHJlbW92YWwsIGV2ZW4gaWYgd2UgZG9uJ3QgaGF2ZSBhbnkgYW0g Zm9yIHRoZW0uCiAJICovCi0JaWYgKGluaHBhcmVudCB8fAotCQkoSWdub3JlU3lzdGVtSW5kZXhl cyAmJiBJc1N5c3RlbVJlbGF0aW9uKHJlbGF0aW9uKSkpCisJaWYgKChpbmhwYXJlbnQgJiYgcmVs YXRpb24tPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQorCQl8 fCAoSWdub3JlU3lzdGVtSW5kZXhlcyAmJiBJc1N5c3RlbVJlbGF0aW9uKHJlbGF0aW9uKSkpCiAJ CWhhc2luZGV4ID0gZmFsc2U7CiAJZWxzZQogCQloYXNpbmRleCA9IHJlbGF0aW9uLT5yZF9yZWwt PnJlbGhhc2luZGV4OwpAQCAtMjA5LDggKzIxMyw4IEBAIGdldF9yZWxhdGlvbl9pbmZvKFBsYW5u ZXJJbmZvICpyb290LCBPaWQgcmVsYXRpb25PYmplY3RJZCwgYm9vbCBpbmhwYXJlbnQsCiAJCQlJ bmRleEFtUm91dGluZSAqYW1yb3V0aW5lOwogCQkJSW5kZXhPcHRJbmZvICppbmZvOwogCQkJaW50 CQkJbmNvbHVtbnMsCi0JCQkJCQlua2V5Y29sdW1uczsKLQkJCWludAkJCWk7CisJCQkJCQlua2V5 Y29sdW1ucywKKwkJCQkJCWk7CiAKIAkJCS8qCiAJCQkgKiBFeHRyYWN0IGluZm8gZnJvbSB0aGUg cmVsYXRpb24gZGVzY3JpcHRvciBmb3IgdGhlIGluZGV4LgpAQCAtMjMxLDE2ICsyMzUsNiBAQCBn ZXRfcmVsYXRpb25faW5mbyhQbGFubmVySW5mbyAqcm9vdCwgT2lkIHJlbGF0aW9uT2JqZWN0SWQs IGJvb2wgaW5ocGFyZW50LAogCQkJCWNvbnRpbnVlOwogCQkJfQogCi0JCQkvKgotCQkJICogSWdu b3JlIHBhcnRpdGlvbmVkIGluZGV4ZXMsIHNpbmNlIHRoZXkgYXJlIG5vdCB1c2FibGUgZm9yCi0J CQkgKiBxdWVyaWVzLgotCQkJICovCi0JCQlpZiAoaW5kZXhSZWxhdGlvbi0+cmRfcmVsLT5yZWxr aW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfSU5ERVgpCi0JCQl7Ci0JCQkJaW5kZXhfY2xvc2Uo aW5kZXhSZWxhdGlvbiwgTm9Mb2NrKTsKLQkJCQljb250aW51ZTsKLQkJCX0KLQogCQkJLyoKIAkJ CSAqIElmIHRoZSBpbmRleCBpcyB2YWxpZCwgYnV0IGNhbm5vdCB5ZXQgYmUgdXNlZCwgaWdub3Jl IGl0OyBidXQKIAkJCSAqIG1hcmsgdGhlIHBsYW4gd2UgYXJlIGdlbmVyYXRpbmcgYXMgdHJhbnNp ZW50LiBTZWUKQEAgLTI4NSwxMDggKzI3OSwxMzMgQEAgZ2V0X3JlbGF0aW9uX2luZm8oUGxhbm5l ckluZm8gKnJvb3QsIE9pZCByZWxhdGlvbk9iamVjdElkLCBib29sIGluaHBhcmVudCwKIAogCQkJ aW5mby0+cmVsYW0gPSBpbmRleFJlbGF0aW9uLT5yZF9yZWwtPnJlbGFtOwogCi0JCQkvKiBXZSBj b3B5IGp1c3QgdGhlIGZpZWxkcyB3ZSBuZWVkLCBub3QgYWxsIG9mIHJkX2luZGFtICovCi0JCQlh bXJvdXRpbmUgPSBpbmRleFJlbGF0aW9uLT5yZF9pbmRhbTsKLQkJCWluZm8tPmFtY2Fub3JkZXJi eW9wID0gYW1yb3V0aW5lLT5hbWNhbm9yZGVyYnlvcDsKLQkJCWluZm8tPmFtb3B0aW9uYWxrZXkg PSBhbXJvdXRpbmUtPmFtb3B0aW9uYWxrZXk7Ci0JCQlpbmZvLT5hbXNlYXJjaGFycmF5ID0gYW1y b3V0aW5lLT5hbXNlYXJjaGFycmF5OwotCQkJaW5mby0+YW1zZWFyY2hudWxscyA9IGFtcm91dGlu ZS0+YW1zZWFyY2hudWxsczsKLQkJCWluZm8tPmFtY2FucGFyYWxsZWwgPSBhbXJvdXRpbmUtPmFt Y2FucGFyYWxsZWw7Ci0JCQlpbmZvLT5hbWhhc2dldHR1cGxlID0gKGFtcm91dGluZS0+YW1nZXR0 dXBsZSAhPSBOVUxMKTsKLQkJCWluZm8tPmFtaGFzZ2V0Yml0bWFwID0gYW1yb3V0aW5lLT5hbWdl dGJpdG1hcCAhPSBOVUxMICYmCi0JCQkJcmVsYXRpb24tPnJkX3RhYmxlYW0tPnNjYW5fYml0bWFw X25leHRfYmxvY2sgIT0gTlVMTDsKLQkJCWluZm8tPmFtY2FubWFya3BvcyA9IChhbXJvdXRpbmUt PmFtbWFya3BvcyAhPSBOVUxMICYmCi0JCQkJCQkJCSAgYW1yb3V0aW5lLT5hbXJlc3RycG9zICE9 IE5VTEwpOwotCQkJaW5mby0+YW1jb3N0ZXN0aW1hdGUgPSBhbXJvdXRpbmUtPmFtY29zdGVzdGlt YXRlOwotCQkJQXNzZXJ0KGluZm8tPmFtY29zdGVzdGltYXRlICE9IE5VTEwpOwotCi0JCQkvKiBG ZXRjaCBpbmRleCBvcGNsYXNzIG9wdGlvbnMgKi8KLQkJCWluZm8tPm9wY2xhc3NvcHRpb25zID0g UmVsYXRpb25HZXRJbmRleEF0dE9wdGlvbnMoaW5kZXhSZWxhdGlvbiwgdHJ1ZSk7Ci0KIAkJCS8q Ci0JCQkgKiBGZXRjaCB0aGUgb3JkZXJpbmcgaW5mb3JtYXRpb24gZm9yIHRoZSBpbmRleCwgaWYg YW55LgorCQkJICogV2UgZG9uJ3QgaGF2ZSBhbSBmb3IgcGFydGl0aW9uZWQgaW5kZXhlcywgdGhl cmVmb3JlIHdlIHNraXAKKwkJCSAqIGdhdGhlcmluZyB0aGUgaW5mby4gVGhpcyBpcyBvaywgYmVj YXVzZSB3ZSBkb24ndCB1c2UKKwkJCSAqIHBhcnRpdGlvbmVkIGluZGV4ZXMgaW4gcGF0aHMuIFdl IHJlc29sdmUgaW5oZXJpdGFuY2UgYmVmb3JlCisJCQkgKiBnZW5lcmF0aW5nIHBhdGhzLgogCQkJ ICovCi0JCQlpZiAoaW5mby0+cmVsYW0gPT0gQlRSRUVfQU1fT0lEKQorCQkJaWYgKGluZGV4UmVs YXRpb24tPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX0lOREVYKQogCQkJ eworCQkJCS8qIFdlIGNvcHkganVzdCB0aGUgZmllbGRzIHdlIG5lZWQsIG5vdCBhbGwgb2YgcmRf aW5kYW0gKi8KKwkJCQlhbXJvdXRpbmUgPSBpbmRleFJlbGF0aW9uLT5yZF9pbmRhbTsKKwkJCQlp bmZvLT5hbWNhbm9yZGVyYnlvcCA9IGFtcm91dGluZS0+YW1jYW5vcmRlcmJ5b3A7CisJCQkJaW5m by0+YW1vcHRpb25hbGtleSA9IGFtcm91dGluZS0+YW1vcHRpb25hbGtleTsKKwkJCQlpbmZvLT5h bXNlYXJjaGFycmF5ID0gYW1yb3V0aW5lLT5hbXNlYXJjaGFycmF5OworCQkJCWluZm8tPmFtc2Vh cmNobnVsbHMgPSBhbXJvdXRpbmUtPmFtc2VhcmNobnVsbHM7CisJCQkJaW5mby0+YW1jYW5wYXJh bGxlbCA9IGFtcm91dGluZS0+YW1jYW5wYXJhbGxlbDsKKwkJCQlpbmZvLT5hbWhhc2dldHR1cGxl ID0gKGFtcm91dGluZS0+YW1nZXR0dXBsZSAhPSBOVUxMKTsKKwkJCQlpbmZvLT5hbWhhc2dldGJp dG1hcCA9IGFtcm91dGluZS0+YW1nZXRiaXRtYXAgIT0gTlVMTCAmJgorCQkJCQlyZWxhdGlvbi0+ cmRfdGFibGVhbS0+c2Nhbl9iaXRtYXBfbmV4dF9ibG9jayAhPSBOVUxMOworCQkJCWluZm8tPmFt Y2FubWFya3BvcyA9IChhbXJvdXRpbmUtPmFtbWFya3BvcyAhPSBOVUxMICYmCisJCQkJCWFtcm91 dGluZS0+YW1yZXN0cnBvcyAhPSBOVUxMKTsKKwkJCQlpbmZvLT5hbWNvc3Rlc3RpbWF0ZSA9IGFt cm91dGluZS0+YW1jb3N0ZXN0aW1hdGU7CisJCQkJQXNzZXJ0KGluZm8tPmFtY29zdGVzdGltYXRl ICE9IE5VTEwpOworCisJCQkJLyogRmV0Y2ggaW5kZXggb3BjbGFzcyBvcHRpb25zICovCisJCQkJ aW5mby0+b3BjbGFzc29wdGlvbnMgPSBSZWxhdGlvbkdldEluZGV4QXR0T3B0aW9ucyhpbmRleFJl bGF0aW9uLCB0cnVlKTsKKwogCQkJCS8qCi0JCQkJICogSWYgaXQncyBhIGJ0cmVlIGluZGV4LCB3 ZSBjYW4gdXNlIGl0cyBvcGZhbWlseSBPSURzCi0JCQkJICogZGlyZWN0bHkgYXMgdGhlIHNvcnQg b3JkZXJpbmcgb3BmYW1pbHkgT0lEcy4KKwkJCQkgKiBGZXRjaCB0aGUgb3JkZXJpbmcgaW5mb3Jt YXRpb24gZm9yIHRoZSBpbmRleCwgaWYgYW55LgogCQkJCSAqLwotCQkJCUFzc2VydChhbXJvdXRp bmUtPmFtY2Fub3JkZXIpOwotCi0JCQkJaW5mby0+c29ydG9wZmFtaWx5ID0gaW5mby0+b3BmYW1p bHk7Ci0JCQkJaW5mby0+cmV2ZXJzZV9zb3J0ID0gKGJvb2wgKikgcGFsbG9jKHNpemVvZihib29s KSAqIG5rZXljb2x1bW5zKTsKLQkJCQlpbmZvLT5udWxsc19maXJzdCA9IChib29sICopIHBhbGxv YyhzaXplb2YoYm9vbCkgKiBua2V5Y29sdW1ucyk7Ci0KLQkJCQlmb3IgKGkgPSAwOyBpIDwgbmtl eWNvbHVtbnM7IGkrKykKKwkJCQlpZiAoaW5mby0+cmVsYW0gPT0gQlRSRUVfQU1fT0lEKQogCQkJ CXsKLQkJCQkJaW50MTYJCW9wdCA9IGluZGV4UmVsYXRpb24tPnJkX2luZG9wdGlvbltpXTsKKwkJ CQkJLyoKKwkJCQkJICogSWYgaXQncyBhIGJ0cmVlIGluZGV4LCB3ZSBjYW4gdXNlIGl0cyBvcGZh bWlseSBPSURzCisJCQkJCSAqIGRpcmVjdGx5IGFzIHRoZSBzb3J0IG9yZGVyaW5nIG9wZmFtaWx5 IE9JRHMuCisJCQkJCSAqLworCQkJCQlBc3NlcnQoYW1yb3V0aW5lLT5hbWNhbm9yZGVyKTsKIAot CQkJCQlpbmZvLT5yZXZlcnNlX3NvcnRbaV0gPSAob3B0ICYgSU5ET1BUSU9OX0RFU0MpICE9IDA7 Ci0JCQkJCWluZm8tPm51bGxzX2ZpcnN0W2ldID0gKG9wdCAmIElORE9QVElPTl9OVUxMU19GSVJT VCkgIT0gMDsKLQkJCQl9Ci0JCQl9Ci0JCQllbHNlIGlmIChhbXJvdXRpbmUtPmFtY2Fub3JkZXIp Ci0JCQl7Ci0JCQkJLyoKLQkJCQkgKiBPdGhlcndpc2UsIGlkZW50aWZ5IHRoZSBjb3JyZXNwb25k aW5nIGJ0cmVlIG9wZmFtaWxpZXMgYnkKLQkJCQkgKiB0cnlpbmcgdG8gbWFwIHRoaXMgaW5kZXgn cyAiPCIgb3BlcmF0b3JzIGludG8gYnRyZWUuICBTaW5jZQotCQkJCSAqICI8IiB1bmlxdWVseSBk ZWZpbmVzIHRoZSBiZWhhdmlvciBvZiBhIHNvcnQgb3JkZXIsIHRoaXMgaXMKLQkJCQkgKiBhIHN1 ZmZpY2llbnQgdGVzdC4KLQkJCQkgKgotCQkJCSAqIFhYWCBUaGlzIG1ldGhvZCBpcyByYXRoZXIg c2xvdyBhbmQgYWxzbyByZXF1aXJlcyB0aGUKLQkJCQkgKiB1bmRlc2lyYWJsZSBhc3N1bXB0aW9u IHRoYXQgdGhlIG90aGVyIGluZGV4IEFNIG51bWJlcnMgaXRzCi0JCQkJICogc3RyYXRlZ2llcyB0 aGUgc2FtZSBhcyBidHJlZS4gIEl0J2QgYmUgYmV0dGVyIHRvIGhhdmUgYSB3YXkKLQkJCQkgKiB0 byBleHBsaWNpdGx5IGRlY2xhcmUgdGhlIGNvcnJlc3BvbmRpbmcgYnRyZWUgb3BmYW1pbHkgZm9y Ci0JCQkJICogZWFjaCBvcGZhbWlseSBvZiB0aGUgb3RoZXIgaW5kZXggdHlwZS4gIEJ1dCBnaXZl biB0aGUgbGFjawotCQkJCSAqIG9mIGN1cnJlbnQgb3IgZm9yZXNlZWFibGUgYW1jYW5vcmRlciBp bmRleCB0eXBlcywgaXQncyBub3QKLQkJCQkgKiB3b3J0aCBleHBlbmRpbmcgbW9yZSBlZmZvcnQg b24gbm93LgotCQkJCSAqLwotCQkJCWluZm8tPnNvcnRvcGZhbWlseSA9IChPaWQgKikgcGFsbG9j KHNpemVvZihPaWQpICogbmtleWNvbHVtbnMpOwotCQkJCWluZm8tPnJldmVyc2Vfc29ydCA9IChi b29sICopIHBhbGxvYyhzaXplb2YoYm9vbCkgKiBua2V5Y29sdW1ucyk7Ci0JCQkJaW5mby0+bnVs bHNfZmlyc3QgPSAoYm9vbCAqKSBwYWxsb2Moc2l6ZW9mKGJvb2wpICogbmtleWNvbHVtbnMpOwor CQkJCQlpbmZvLT5zb3J0b3BmYW1pbHkgPSBpbmZvLT5vcGZhbWlseTsKKwkJCQkJaW5mby0+cmV2 ZXJzZV9zb3J0ID0gKGJvb2wgKilwYWxsb2Moc2l6ZW9mKGJvb2wpICogbmtleWNvbHVtbnMpOwor CQkJCQlpbmZvLT5udWxsc19maXJzdCA9IChib29sICopcGFsbG9jKHNpemVvZihib29sKSAqIG5r ZXljb2x1bW5zKTsKIAotCQkJCWZvciAoaSA9IDA7IGkgPCBua2V5Y29sdW1uczsgaSsrKQotCQkJ CXsKLQkJCQkJaW50MTYJCW9wdCA9IGluZGV4UmVsYXRpb24tPnJkX2luZG9wdGlvbltpXTsKLQkJ CQkJT2lkCQkJbHRvcHI7Ci0JCQkJCU9pZAkJCWJ0b3BmYW1pbHk7Ci0JCQkJCU9pZAkJCWJ0b3Bj aW50eXBlOwotCQkJCQlpbnQxNgkJYnRzdHJhdGVneTsKLQotCQkJCQlpbmZvLT5yZXZlcnNlX3Nv cnRbaV0gPSAob3B0ICYgSU5ET1BUSU9OX0RFU0MpICE9IDA7Ci0JCQkJCWluZm8tPm51bGxzX2Zp cnN0W2ldID0gKG9wdCAmIElORE9QVElPTl9OVUxMU19GSVJTVCkgIT0gMDsKLQotCQkJCQlsdG9w ciA9IGdldF9vcGZhbWlseV9tZW1iZXIoaW5mby0+b3BmYW1pbHlbaV0sCi0JCQkJCQkJCQkJCQlp bmZvLT5vcGNpbnR5cGVbaV0sCi0JCQkJCQkJCQkJCQlpbmZvLT5vcGNpbnR5cGVbaV0sCi0JCQkJ CQkJCQkJCQlCVExlc3NTdHJhdGVneU51bWJlcik7Ci0JCQkJCWlmIChPaWRJc1ZhbGlkKGx0b3By KSAmJgotCQkJCQkJZ2V0X29yZGVyaW5nX29wX3Byb3BlcnRpZXMobHRvcHIsCi0JCQkJCQkJCQkJ CQkgICAmYnRvcGZhbWlseSwKLQkJCQkJCQkJCQkJCSAgICZidG9wY2ludHlwZSwKLQkJCQkJCQkJ CQkJCSAgICZidHN0cmF0ZWd5KSAmJgotCQkJCQkJYnRvcGNpbnR5cGUgPT0gaW5mby0+b3BjaW50 eXBlW2ldICYmCi0JCQkJCQlidHN0cmF0ZWd5ID09IEJUTGVzc1N0cmF0ZWd5TnVtYmVyKQorCQkJ CQlmb3IgKGkgPSAwOyBpIDwgbmtleWNvbHVtbnM7IGkrKykKIAkJCQkJewotCQkJCQkJLyogU3Vj Y2Vzc2Z1bCBtYXBwaW5nICovCi0JCQkJCQlpbmZvLT5zb3J0b3BmYW1pbHlbaV0gPSBidG9wZmFt aWx5OworCQkJCQkJaW50MTYJCW9wdCA9IGluZGV4UmVsYXRpb24tPnJkX2luZG9wdGlvbltpXTsK KworCQkJCQkJaW5mby0+cmV2ZXJzZV9zb3J0W2ldID0gKG9wdCAmIElORE9QVElPTl9ERVNDKSAh PSAwOworCQkJCQkJaW5mby0+bnVsbHNfZmlyc3RbaV0gPSAob3B0ICYgSU5ET1BUSU9OX05VTExT X0ZJUlNUKSAhPSAwOwogCQkJCQl9Ci0JCQkJCWVsc2UKKwkJCQl9CisJCQkJZWxzZSBpZiAoYW1y b3V0aW5lLT5hbWNhbm9yZGVyKQorCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogT3RoZXJ3aXNlLCBp ZGVudGlmeSB0aGUgY29ycmVzcG9uZGluZyBidHJlZSBvcGZhbWlsaWVzIGJ5CisJCQkJCSAqIHRy eWluZyB0byBtYXAgdGhpcyBpbmRleCdzICI8IiBvcGVyYXRvcnMgaW50byBidHJlZS4gIFNpbmNl CisJCQkJCSAqICI8IiB1bmlxdWVseSBkZWZpbmVzIHRoZSBiZWhhdmlvciBvZiBhIHNvcnQgb3Jk ZXIsIHRoaXMgaXMKKwkJCQkJICogYSBzdWZmaWNpZW50IHRlc3QuCisJCQkJCSAqCisJCQkJCSAq IFhYWCBUaGlzIG1ldGhvZCBpcyByYXRoZXIgc2xvdyBhbmQgYWxzbyByZXF1aXJlcyB0aGUKKwkJ CQkJICogdW5kZXNpcmFibGUgYXNzdW1wdGlvbiB0aGF0IHRoZSBvdGhlciBpbmRleCBBTSBudW1i ZXJzIGl0cworCQkJCQkgKiBzdHJhdGVnaWVzIHRoZSBzYW1lIGFzIGJ0cmVlLiAgSXQnZCBiZSBi ZXR0ZXIgdG8gaGF2ZSBhIHdheQorCQkJCQkgKiB0byBleHBsaWNpdGx5IGRlY2xhcmUgdGhlIGNv cnJlc3BvbmRpbmcgYnRyZWUgb3BmYW1pbHkgZm9yCisJCQkJCSAqIGVhY2ggb3BmYW1pbHkgb2Yg dGhlIG90aGVyIGluZGV4IHR5cGUuICBCdXQgZ2l2ZW4gdGhlIGxhY2sKKwkJCQkJICogb2YgY3Vy cmVudCBvciBmb3Jlc2VlYWJsZSBhbWNhbm9yZGVyIGluZGV4IHR5cGVzLCBpdCdzIG5vdAorCQkJ CQkgKiB3b3J0aCBleHBlbmRpbmcgbW9yZSBlZmZvcnQgb24gbm93LgorCQkJCQkgKi8KKwkJCQkJ aW5mby0+c29ydG9wZmFtaWx5ID0gKE9pZCAqKXBhbGxvYyhzaXplb2YoT2lkKSAqIG5rZXljb2x1 bW5zKTsKKwkJCQkJaW5mby0+cmV2ZXJzZV9zb3J0ID0gKGJvb2wgKilwYWxsb2Moc2l6ZW9mKGJv b2wpICogbmtleWNvbHVtbnMpOworCQkJCQlpbmZvLT5udWxsc19maXJzdCA9IChib29sICopcGFs bG9jKHNpemVvZihib29sKSAqIG5rZXljb2x1bW5zKTsKKworCQkJCQlmb3IgKGkgPSAwOyBpIDwg bmtleWNvbHVtbnM7IGkrKykKIAkJCQkJewotCQkJCQkJLyogRmFpbCAuLi4gcXVpZXRseSB0cmVh dCBpbmRleCBhcyB1bm9yZGVyZWQgKi8KLQkJCQkJCWluZm8tPnNvcnRvcGZhbWlseSA9IE5VTEw7 Ci0JCQkJCQlpbmZvLT5yZXZlcnNlX3NvcnQgPSBOVUxMOwotCQkJCQkJaW5mby0+bnVsbHNfZmly c3QgPSBOVUxMOwotCQkJCQkJYnJlYWs7CisJCQkJCQlpbnQxNgkJb3B0ID0gaW5kZXhSZWxhdGlv bi0+cmRfaW5kb3B0aW9uW2ldOworCQkJCQkJT2lkCQkJbHRvcHI7CisJCQkJCQlPaWQJCQlidG9w ZmFtaWx5OworCQkJCQkJT2lkCQkJYnRvcGNpbnR5cGU7CisJCQkJCQlpbnQxNgkJYnRzdHJhdGVn eTsKKworCQkJCQkJaW5mby0+cmV2ZXJzZV9zb3J0W2ldID0gKG9wdCAmIElORE9QVElPTl9ERVND KSAhPSAwOworCQkJCQkJaW5mby0+bnVsbHNfZmlyc3RbaV0gPSAob3B0ICYgSU5ET1BUSU9OX05V TExTX0ZJUlNUKSAhPSAwOworCisJCQkJCQlsdG9wciA9IGdldF9vcGZhbWlseV9tZW1iZXIoaW5m by0+b3BmYW1pbHlbaV0sCisJCQkJCQkJaW5mby0+b3BjaW50eXBlW2ldLAorCQkJCQkJCWluZm8t Pm9wY2ludHlwZVtpXSwKKwkJCQkJCQlCVExlc3NTdHJhdGVneU51bWJlcik7CisJCQkJCQlpZiAo T2lkSXNWYWxpZChsdG9wcikgJiYKKwkJCQkJCQlnZXRfb3JkZXJpbmdfb3BfcHJvcGVydGllcyhs dG9wciwKKwkJCQkJCQkJJmJ0b3BmYW1pbHksCisJCQkJCQkJCSZidG9wY2ludHlwZSwKKwkJCQkJ CQkJJmJ0c3RyYXRlZ3kpICYmCisJCQkJCQkJYnRvcGNpbnR5cGUgPT0gaW5mby0+b3BjaW50eXBl W2ldICYmCisJCQkJCQkJYnRzdHJhdGVneSA9PSBCVExlc3NTdHJhdGVneU51bWJlcikKKwkJCQkJ CXsKKwkJCQkJCQkvKiBTdWNjZXNzZnVsIG1hcHBpbmcgKi8KKwkJCQkJCQlpbmZvLT5zb3J0b3Bm YW1pbHlbaV0gPSBidG9wZmFtaWx5OworCQkJCQkJfQorCQkJCQkJZWxzZQorCQkJCQkJeworCQkJ CQkJCS8qIEZhaWwgLi4uIHF1aWV0bHkgdHJlYXQgaW5kZXggYXMgdW5vcmRlcmVkICovCisJCQkJ CQkJaW5mby0+c29ydG9wZmFtaWx5ID0gTlVMTDsKKwkJCQkJCQlpbmZvLT5yZXZlcnNlX3NvcnQg PSBOVUxMOworCQkJCQkJCWluZm8tPm51bGxzX2ZpcnN0ID0gTlVMTDsKKwkJCQkJCQlicmVhazsK KwkJCQkJCX0KIAkJCQkJfQogCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQlpbmZvLT5zb3J0 b3BmYW1pbHkgPSBOVUxMOworCQkJCQlpbmZvLT5yZXZlcnNlX3NvcnQgPSBOVUxMOworCQkJCQlp bmZvLT5udWxsc19maXJzdCA9IE5VTEw7CisJCQkJfQogCQkJfQogCQkJZWxzZQogCQkJewogCQkJ CWluZm8tPnNvcnRvcGZhbWlseSA9IE5VTEw7CiAJCQkJaW5mby0+cmV2ZXJzZV9zb3J0ID0gTlVM TDsKIAkJCQlpbmZvLT5udWxsc19maXJzdCA9IE5VTEw7CisKKwkJCQlpbmZvLT5hbWNhbm9yZGVy YnlvcCA9IGZhbHNlOworCQkJCWluZm8tPmFtb3B0aW9uYWxrZXkgPSBmYWxzZTsKKwkJCQlpbmZv LT5hbXNlYXJjaGFycmF5ID0gZmFsc2U7CisJCQkJaW5mby0+YW1zZWFyY2hudWxscyA9IGZhbHNl OworCQkJCWluZm8tPmFtY2FucGFyYWxsZWwgPSBmYWxzZTsKKwkJCQlpbmZvLT5hbWhhc2dldHR1 cGxlID0gZmFsc2U7CisJCQkJaW5mby0+YW1oYXNnZXRiaXRtYXAgPSBmYWxzZTsKKwkJCQlpbmZv LT5hbWNhbm1hcmtwb3MgPSBmYWxzZTsKKwkJCQlpbmZvLT5hbWNvc3Rlc3RpbWF0ZSA9IE5VTEw7 CiAJCQl9CiAKIAkJCS8qCkBAIC00MTEsMzggKzQzMCw0MiBAQCBnZXRfcmVsYXRpb25faW5mbyhQ bGFubmVySW5mbyAqcm9vdCwgT2lkIHJlbGF0aW9uT2JqZWN0SWQsIGJvb2wgaW5ocGFyZW50LAog CQkJaW5mby0+aW1tZWRpYXRlID0gaW5kZXgtPmluZGltbWVkaWF0ZTsKIAkJCWluZm8tPmh5cG90 aGV0aWNhbCA9IGZhbHNlOwogCi0JCQkvKgotCQkJICogRXN0aW1hdGUgdGhlIGluZGV4IHNpemUu ICBJZiBpdCdzIG5vdCBhIHBhcnRpYWwgaW5kZXgsIHdlIGxvY2sKLQkJCSAqIHRoZSBudW1iZXIt b2YtdHVwbGVzIGVzdGltYXRlIHRvIGVxdWFsIHRoZSBwYXJlbnQgdGFibGU7IGlmIGl0Ci0JCQkg KiBpcyBwYXJ0aWFsIHRoZW4gd2UgaGF2ZSB0byB1c2UgdGhlIHNhbWUgbWV0aG9kcyBhcyB3ZSB3 b3VsZCBmb3IKLQkJCSAqIGEgdGFibGUsIGV4Y2VwdCB3ZSBjYW4gYmUgc3VyZSB0aGF0IHRoZSBp bmRleCBpcyBub3QgbGFyZ2VyCi0JCQkgKiB0aGFuIHRoZSB0YWJsZS4KLQkJCSAqLwotCQkJaWYg KGluZm8tPmluZHByZWQgPT0gTklMKQotCQkJewotCQkJCWluZm8tPnBhZ2VzID0gUmVsYXRpb25H ZXROdW1iZXJPZkJsb2NrcyhpbmRleFJlbGF0aW9uKTsKLQkJCQlpbmZvLT50dXBsZXMgPSByZWwt PnR1cGxlczsKLQkJCX0KLQkJCWVsc2UKLQkJCXsKLQkJCQlkb3VibGUJCWFsbHZpc2ZyYWM7IC8q IGR1bW15ICovCi0KLQkJCQllc3RpbWF0ZV9yZWxfc2l6ZShpbmRleFJlbGF0aW9uLCBOVUxMLAot CQkJCQkJCQkgICZpbmZvLT5wYWdlcywgJmluZm8tPnR1cGxlcywgJmFsbHZpc2ZyYWMpOwotCQkJ CWlmIChpbmZvLT50dXBsZXMgPiByZWwtPnR1cGxlcykKLQkJCQkJaW5mby0+dHVwbGVzID0gcmVs LT50dXBsZXM7Ci0JCQl9Ci0KLQkJCWlmIChpbmZvLT5yZWxhbSA9PSBCVFJFRV9BTV9PSUQpCisJ CQkvKiBTa2lwIHNpemUgYW5kIGJ0cmVlIGNhbGN1bGF0aW9uIGlmIHRoZXJlIGlzbid0IHJlYWxs eSBhIGJ0cmVlLiAqLworCQkJaWYgKGluZGV4UmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCAhPSBS RUxLSU5EX1BBUlRJVElPTkVEX0lOREVYKQogCQkJewotCQkJCS8qIEZvciBidHJlZXMsIGdldCB0 cmVlIGhlaWdodCB3aGlsZSB3ZSBoYXZlIHRoZSBpbmRleCBvcGVuICovCi0JCQkJaW5mby0+dHJl ZV9oZWlnaHQgPSBfYnRfZ2V0cm9vdGhlaWdodChpbmRleFJlbGF0aW9uKTsKLQkJCX0KLQkJCWVs c2UKLQkJCXsKLQkJCQkvKiBGb3Igb3RoZXIgaW5kZXggdHlwZXMsIGp1c3Qgc2V0IGl0IHRvICJ1 bmtub3duIiBmb3Igbm93ICovCi0JCQkJaW5mby0+dHJlZV9oZWlnaHQgPSAtMTsKLQkJCX0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqIEVzdGltYXRlIHRoZSBpbmRleCBzaXplLiAgSWYgaXQncyBub3QgYSBwYXJ0aWFsIGluZGV4 LCB3ZSBsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIG51bWJlci1vZi10 dXBsZXMgZXN0aW1hdGUgdG8gZXF1YWwgdGhlIHBhcmVudCB0YWJsZTsgaWYgaXQKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKiBpcyBwYXJ0aWFsIHRoZW4gd2UgaGF2ZSB0byB1c2UgdGhl IHNhbWUgbWV0aG9kcyBhcyB3ZSB3b3VsZCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKiBhIHRhYmxlLCBleGNlcHQgd2UgY2FuIGJlIHN1cmUgdGhhdCB0aGUgaW5kZXggaXMgbm90 IGxhcmdlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHRoYW4gdGhlIHRhYmxlLgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlmIChpbmZvLT5pbmRwcmVkID09IE5JTCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLT5wYWdlcyA9IFJl bGF0aW9uR2V0TnVtYmVyT2ZCbG9ja3MoaW5kZXhSZWxhdGlvbik7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbmZvLT50dXBsZXMgPSByZWwtPnR1cGxlczsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRvdWJsZQkJYWxsdmlzZnJhYzsgLyogZHVtbXkgKi8KKworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZXN0aW1hdGVfcmVsX3NpemUoaW5kZXhSZWxhdGlvbiwg TlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmaW5mby0+cGFnZXMsICZpbmZvLT50dXBsZXMsICZhbGx2aXNm cmFjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmZvLT50dXBs ZXMgPiByZWwtPnR1cGxlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW5mby0+dHVwbGVzID0gcmVsLT50dXBsZXM7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZm8tPnJlbGFtID09 IEJUUkVFX0FNX09JRCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGb3IgYnRyZWVzLCBnZXQgdHJlZSBoZWlnaHQg d2hpbGUgd2UgaGF2ZSB0aGUgaW5kZXggb3BlbiAqLworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW5mby0+dHJlZV9oZWlnaHQgPSBfYnRfZ2V0cm9vdGhlaWdodChpbmRleFJl bGF0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZvciBvdGhlciBpbmRleCB0eXBlcywganVz dCBzZXQgaXQgdG8gInVua25vd24iIGZvciBub3cgKi8KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGluZm8tPnRyZWVfaGVpZ2h0ID0gLTE7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQogCiAJCQlpbmRleF9jbG9zZShp bmRleFJlbGF0aW9uLCBOb0xvY2spOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvc2VsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCmluZGV4IDQ4 ODU4YTg3MWEuLjg3OGU2ZTJmMmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9z ZWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCkBAIC01OTkz LDYgKzU5OTMsMTAgQEAgZ2V0X2FjdHVhbF92YXJpYWJsZV9yYW5nZShQbGFubmVySW5mbyAqcm9v dCwgVmFyaWFibGVTdGF0RGF0YSAqdmFyZGF0YSwKIAlydGUgPSByb290LT5zaW1wbGVfcnRlX2Fy cmF5W3JlbC0+cmVsaWRdOwogCUFzc2VydChydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OKTsK IAorCS8qIGlnbm9yZSBwYXJ0aXRpb25lZCB0YWJsZXMuICBBbnkgaW5kZXhlcyBoZXJlIGFyZSBu b3QgcmVhbCBpbmRleGVzICovCisJaWYgKHJ0ZS0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElP TkVEX1RBQkxFKQorCQlyZXR1cm4gZmFsc2U7CisKIAkvKiBTZWFyY2ggdGhyb3VnaCB0aGUgaW5k ZXhlcyB0byBzZWUgaWYgYW55IG1hdGNoIG91ciBwcm9ibGVtICovCiAJZm9yZWFjaChsYywgcmVs LT5pbmRleGxpc3QpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVz LmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAppbmRleCAxMjYyNGU2YWRiLi5iM2Nj ZmYxMDE3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAorKysgYi9z cmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAtNjM0LDcgKzYzNCw3IEBAIHR5cGVkZWYg c3RydWN0IFBhcnRpdGlvblNjaGVtZURhdGEgKlBhcnRpdGlvblNjaGVtZTsKICAqCQlsYXRlcmFs X3JlbGlkcyAtIHJlcXVpcmVkIG91dGVyIHJlbHMgZm9yIExBVEVSQUwsIGFzIGEgUmVsaWRzIHNl dAogICoJCQkoaW5jbHVkZXMgYm90aCBkaXJlY3QgYW5kIGluZGlyZWN0IGxhdGVyYWwgcmVmZXJl bmNlcykKICAqCi0gKiBJZiB0aGUgcmVsYXRpb24gaXMgYSBiYXNlIHJlbGF0aW9uIGl0IHdpbGwg aGF2ZSB0aGVzZSBmaWVsZHMgc2V0OgorICogSWYgdGhlIHJlbGF0aW9uIGlzIGEgYmFzZSByZWxh dGlvbiwgaXQgd2lsbCBoYXZlIHRoZXNlIGZpZWxkcyBzZXQ6CiAgKgogICoJCXJlbGlkIC0gUlRF IGluZGV4ICh0aGlzIGlzIHJlZHVuZGFudCB3aXRoIHRoZSByZWxpZHMgZmllbGQsIGJ1dAogICoJ CQkJaXMgcHJvdmlkZWQgZm9yIGNvbnZlbmllbmNlIG9mIGFjY2VzcykKQEAgLTY0OSw4ICs2NDks NiBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25TY2hlbWVEYXRhICpQYXJ0aXRpb25TY2hlbWU7 CiAgKgkJCQkJICAgVmFycyBhbmQgUGxhY2VIb2xkZXJWYXJzKQogICoJCWxhdGVyYWxfcmVmZXJl bmNlcnMgLSByZWxpZHMgb2YgcmVscyB0aGF0IHJlZmVyZW5jZSB0aGlzIG9uZSBsYXRlcmFsbHkK ICAqCQkJCShpbmNsdWRlcyBib3RoIGRpcmVjdCBhbmQgaW5kaXJlY3QgbGF0ZXJhbCByZWZlcmVu Y2VzKQotICoJCWluZGV4bGlzdCAtIGxpc3Qgb2YgSW5kZXhPcHRJbmZvIG5vZGVzIGZvciByZWxh dGlvbidzIGluZGV4ZXMKLSAqCQkJCQkoYWx3YXlzIE5JTCBpZiBpdCdzIG5vdCBhIHRhYmxlKQog ICoJCXBhZ2VzIC0gbnVtYmVyIG9mIGRpc2sgcGFnZXMgaW4gcmVsYXRpb24gKHplcm8gaWYgbm90 IGEgdGFibGUpCiAgKgkJdHVwbGVzIC0gbnVtYmVyIG9mIHR1cGxlcyBpbiByZWxhdGlvbiAobm90 IGNvbnNpZGVyaW5nIHJlc3RyaWN0aW9ucykKICAqCQlhbGx2aXNmcmFjIC0gZnJhY3Rpb24gb2Yg ZGlzayBwYWdlcyB0aGF0IGFyZSBtYXJrZWQgYWxsLXZpc2libGUKQEAgLTY2Niw2ICs2NjQsMTMg QEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uU2NoZW1lRGF0YSAqUGFydGl0aW9uU2NoZW1lOwog ICoJCUZvciBvdGhlcnJlbHMgdGhhdCBhcmUgYXBwZW5kcmVsIG1lbWJlcnMsIHRoZXNlIGZpZWxk cyBhcmUgZmlsbGVkCiAgKgkJaW4ganVzdCBhcyBmb3IgYSBiYXNlcmVsLCBleGNlcHQgd2UgZG9u J3QgYm90aGVyIHdpdGggbGF0ZXJhbF92YXJzLgogICoKKyAqIElmIHRoZSByZWxhdGlvbiBpcyBl aXRoZXIgYSBiYXNlIHJlbGF0aW9uIG9yIGEgcGFydGl0aW9uZWQgdGFibGUsIGl0IHdpbGwgaGF2 ZSBhIHNldDoKKyAqCQlpbmRleGxpc3QgLSBsaXN0IG9mIEluZGV4T3B0SW5mbyBub2RlcyBmb3Ig cmVsYXRpb24ncyBpbmRleGVzCisgKgkJICAgICAgICAgICAgICAgICAgICAgICAgKGZvciBwYXRp dGlvbmVkIGluZGV4ZXMgbm90IGFsbCBvZiB0aGUKKyAqCQkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgSW5kZXhPcHRJbmZvIGZpZWxkcyBhcmUgc2V0LCBzaW5jZSB0aGV5CisgKgkJICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNhbid0IGJlIGFjY2Vzc2VkKQorICoJCQkJCShhbHdheXMg TklMIGlmIGl0J3Mgbm90IGEgdGFibGUpCisgKgogICogSWYgdGhlIHJlbGF0aW9uIGlzIGVpdGhl ciBhIGZvcmVpZ24gdGFibGUgb3IgYSBqb2luIG9mIGZvcmVpZ24gdGFibGVzIHRoYXQKICAqIGFs bCBiZWxvbmcgdG8gdGhlIHNhbWUgZm9yZWlnbiBzZXJ2ZXIgYW5kIGFyZSBhc3NpZ25lZCB0byB0 aGUgc2FtZSB1c2VyIHRvCiAgKiBjaGVjayBhY2Nlc3MgcGVybWlzc2lvbnMgYXMgKGNmIGNoZWNr QXNVc2VyKSwgdGhlc2UgZmllbGRzIHdpbGwgYmUgc2V0OgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9pbmhlcml0Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv aW5oZXJpdC5vdXQKaW5kZXggMmQ0OWU3NjVkZS4uODBmYzc2ZWQzMiAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmhlcml0Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2luaGVyaXQub3V0CkBAIC0xLDYgKzEsOCBAQAogLS0KIC0tIFRlc3QgaW5oZXJp dGFuY2UgZmVhdHVyZXMKIC0tCistLSBYWFggVGhlc2UgdGFibGVzIGFyZSBub3QgZHJvcHBlZC4g V2h5PworLS0gWFhYIEFyZSB0aGV5IG5lZWRlZCBmb3IgbGF0ZXIgdGVzdHM/IEZvciBkdW1wLXJl c3RvcmU/IERyb3BwaW5nIHRoZW0gZG9lc24ndCBmYWlsIGFueSB0ZXN0IGZyb20gY2hlY2std29y bGQuCiBDUkVBVEUgVEFCTEUgYSAoYWEgVEVYVCk7CiBDUkVBVEUgVEFCTEUgYiAoYmIgVEVYVCkg SU5IRVJJVFMgKGEpOwogQ1JFQVRFIFRBQkxFIGMgKGNjIFRFWFQpIElOSEVSSVRTIChhKTsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0CmluZGV4IGI4ZDQzZTRjMTQuLjgyMjIzMGRhM2EgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91dApAQCAtNDY5OSw3ICs0Njk5LDggQEAgc2VsZWN0 IGEudW5pcXVlMSwgYi51bmlxdWUyCiAoMSByb3cpCiAKIC0tCi0tLSB0ZXN0IGpvaW4gcmVtb3Zh bAorLS0gdGVzdCBqb2luIHJlbW92YWwgZm9yIHBsYWluIHRhYmxlcworLS0gd2UgaGF2ZSBhbG1v c3QgdGhlIHNtYXJlIHRlc3RzIGZvciBwYXJ0aXRpb25lZCB0YWJsZXMgYmVsb3cKIC0tCiBiZWdp bjsKIENSRUFURSBURU1QIFRBQkxFIGEgKGlkIGludCBQUklNQVJZIEtFWSwgYl9pZCBpbnQpOwpA QCAtNDgzMSw2ICs0ODMyLDU1IEBAIHNlbGVjdCAxIGZyb20gKHNlbGVjdCBhLmlkIEZST00gYSBs ZWZ0IGpvaW4gYiBvbiBhLmJfaWQgPSBiLmlkKSBxLAogICAgICAgICAgRmlsdGVyOiAoYS5pZCA9 IGkpCiAoNCByb3dzKQogCityb2xsYmFjazsKKy0tCistLSB0ZXN0IGpvaW4gcmVtb3ZhbCBmb3Ig cGFydGl0aW9uZWQgdGFibGVzCistLSB0aGlzIGlzIGFuYWxvZyB0byB0aGUgbm9uIHBhcnRpdGlv bmVkIGNhc2UgYWJvdmUKKy0tCitiZWdpbjsKK0NSRUFURSBUQUJMRSBiX3AgKGlkIGludCBQUklN QVJZIEtFWSwgY19pZCBpbnQpIHBhcnRpdGlvbiBieSByYW5nZShpZCk7CitDUkVBVEUgVEFCTEUg Yl9tIHBhcnRpdGlvbiBvZiBiX3AgZm9yIHZhbHVlcyBmcm9tICgwKSB0byAoMTApIHBhcnRpdGlv biBieSByYW5nZShpZCk7CitDUkVBVEUgVEFCTEUgYl9jIHBhcnRpdGlvbiBvZiBiX20gZm9yIHZh bHVlcyBmcm9tICgwKSB0byAoMTApOworQ1JFQVRFIFRBQkxFIGNfcCAoaWQgaW50IFBSSU1BUlkg S0VZKSBwYXJ0aXRpb24gYnkgcmFuZ2UoaWQpOworQ1JFQVRFIFRBQkxFIGNfbSBwYXJ0aXRpb24g b2YgY19wIGZvciB2YWx1ZXMgZnJvbSAoMCkgdG8gKDEwKSBwYXJ0aXRpb24gYnkgcmFuZ2UoaWQp OworQ1JFQVRFIFRBQkxFIGNfYyBwYXJ0aXRpb24gb2YgY19tIGZvciB2YWx1ZXMgZnJvbSAoMCkg dG8gKDEwKTsKK0lOU0VSVCBJTlRPIGJfcCBWQUxVRVMgKDAsIDApLCAoMSwgTlVMTCk7CitJTlNF UlQgSU5UTyBjX3AgVkFMVUVTICgwKSwgKDEpOworLS0gYWxsIHRocmVlIGNhc2VzIHNob3VsZCBi ZSBvcHRpbWl6YWJsZSBpbnRvIGEgc2ltcGxlIHNlcXNjYW4KK0VYUExBSU4gKENPU1RTIE9GRikg U0VMRUNUIGIwLiogRlJPTSBiX3AgYjAgTEVGVCBKT0lOIGJfcCBiIE9OIGIwLmNfaWQgPSBiLmlk OworICAgICBRVUVSWSBQTEFOICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4g b24gYl9jIGIwCisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGIuKiBGUk9N IGJfcCBiIExFRlQgSk9JTiBjX3AgYyBPTiBiLmNfaWQgPSBjLmlkOworICAgIFFVRVJZIFBMQU4g ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIGJfYyBiCisoMSByb3cpCisK K0VYUExBSU4gKENPU1RTIE9GRikKKyAgU0VMRUNUIGIwLiogRlJPTSBiX3AgYjAgTEVGVCBKT0lO IChiX3AgYiBMRUZUIEpPSU4gY19wIGMgb24gYi5jX2lkID0gYy5pZCkKKyAgT04gKGIwLmNfaWQg PSBiLmlkKTsKKyAgICAgUVVFUlkgUExBTiAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNl cSBTY2FuIG9uIGJfYyBiMAorKDEgcm93KQorCistLSBjaGVjayBvcHRpbWl6YXRpb24gb2Ygb3V0 ZXIgam9pbiB3aXRoaW4gYW5vdGhlciBzcGVjaWFsIGpvaW4KK0VYUExBSU4gKENPU1RTIE9GRikK K3NlbGVjdCBpZCBmcm9tIGJfcCBiMCBXSEVSRSBpZCBpbiAoCisJU0VMRUNUIGIuaWQgRlJPTSBi X3AgYiBMRUZUIEpPSU4gY19wIGMgb24gYi5pZCA9IGMuaWQKKyk7CisgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSGFzaCBK b2luCisgICBIYXNoIENvbmQ6IChiMC5pZCA9IGIuaWQpCisgICAtPiAgU2VxIFNjYW4gb24gYl9j IGIwCisgICAtPiAgSGFzaAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGJfYyBiCisoNSByb3dz KQorCiByb2xsYmFjazsKIGNyZWF0ZSB0ZW1wIHRhYmxlIHBhcmVudCAoayBpbnQgcHJpbWFyeSBr ZXksIHBkIGludCk7CiBjcmVhdGUgdGVtcCB0YWJsZSBjaGlsZCAoayBpbnQgdW5pcXVlLCBjZCBp bnQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fam9p bi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9qb2luLm91dAppbmRl eCBiMjBmYWNjMTlmLi5kZDhhZDFjNzFhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3BhcnRpdGlvbl9qb2luLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3BhcnRpdGlvbl9qb2luLm91dApAQCAtNDg2NywxMyArNDg2NywxMyBAQCBDUkVBVEUgVEFCTEUg ZnJhY3RfdCAoaWQgQklHSU5ULCBQUklNQVJZIEtFWSAoaWQpKSBQQVJUSVRJT04gQlkgUkFOR0Ug KGlkKTsKIENSRUFURSBUQUJMRSBmcmFjdF90MCBQQVJUSVRJT04gT0YgZnJhY3RfdCBGT1IgVkFM VUVTIEZST00gKCcwJykgVE8gKCcxMDAwJyk7CiBDUkVBVEUgVEFCTEUgZnJhY3RfdDEgUEFSVElU SU9OIE9GIGZyYWN0X3QgRk9SIFZBTFVFUyBGUk9NICgnMTAwMCcpIFRPICgnMjAwMCcpOwogLS0g aW5zZXJ0IGRhdGEKLUlOU0VSVCBJTlRPIGZyYWN0X3QgKGlkKSAoU0VMRUNUIGdlbmVyYXRlX3Nl cmllcygwLCAxOTk5KSk7CitJTlNFUlQgSU5UTyBmcmFjdF90IChpZCkgU0VMRUNUIGkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMCwgMTk5OSkgaTsKIEFOQUxZWkUgZnJhY3RfdDsKIC0tIHZlcmlmeSBw bGFuOyBuZXN0ZWQgaW5kZXggb25seSBzY2FucwogU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Bl cl9nYXRoZXIgPSAwOwogU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2pvaW4gPSBvbjsKIEVYUExB SU4gKENPU1RTIE9GRikKLVNFTEVDVCAqIEZST00gZnJhY3RfdCB4IExFRlQgSk9JTiBmcmFjdF90 IHkgVVNJTkcgKGlkKSBPUkRFUiBCWSBpZCBBU0MgTElNSVQgMTA7CitTRUxFQ1QgeC5pZCwgeS5p ZCBGUk9NIGZyYWN0X3QgeCBMRUZUIEpPSU4gZnJhY3RfdCB5IFVTSU5HIChpZCkgT1JERVIgQlkg eC5pZCBBU0MgTElNSVQgMTA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBMaW1p dApAQCAtNDg5MCw3ICs0ODkwLDcgQEAgU0VMRUNUICogRlJPTSBmcmFjdF90IHggTEVGVCBKT0lO IGZyYWN0X3QgeSBVU0lORyAoaWQpIE9SREVSIEJZIGlkIEFTQyBMSU1JVCAxMDsKICgxMSByb3dz KQogCiBFWFBMQUlOIChDT1NUUyBPRkYpCi1TRUxFQ1QgKiBGUk9NIGZyYWN0X3QgeCBMRUZUIEpP SU4gZnJhY3RfdCB5IFVTSU5HIChpZCkgT1JERVIgQlkgaWQgREVTQyBMSU1JVCAxMDsKK1NFTEVD VCB4LmlkLCB5LmlkIEZST00gZnJhY3RfdCB4IExFRlQgSk9JTiBmcmFjdF90IHkgVVNJTkcgKGlk KSBPUkRFUiBCWSB4LmlkIERFU0MgTElNSVQgMTA7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBMaW1pdApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvaW5oZXJpdC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9pbmhlcml0LnNxbApp bmRleCAxOTVhZWRiNWZmLi42OTYwMGJiMDY4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9pbmhlcml0LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9pbmhlcml0LnNxbApA QCAtMSw2ICsxLDEwIEBACiAtLQogLS0gVGVzdCBpbmhlcml0YW5jZSBmZWF0dXJlcwogLS0KKwor LS0gWFhYIFRoZXNlIHRhYmxlcyBhcmUgbm90IGRyb3BwZWQuIFdoeT8KKy0tIFhYWCBBcmUgdGhl eSBuZWVkZWQgZm9yIGxhdGVyIHRlc3RzPyBGb3IgZHVtcC1yZXN0b3JlPyBEcm9wcGluZyB0aGVt IGRvZXNuJ3QgZmFpbCBhbnkgdGVzdCBmcm9tIGNoZWNrLXdvcmxkLgorCiBDUkVBVEUgVEFCTEUg YSAoYWEgVEVYVCk7CiBDUkVBVEUgVEFCTEUgYiAoYmIgVEVYVCkgSU5IRVJJVFMgKGEpOwogQ1JF QVRFIFRBQkxFIGMgKGNjIFRFWFQpIElOSEVSSVRTIChhKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2pvaW4uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbi5zcWwKaW5k ZXggNjVhYWI4NWMzNS4uODQyNDQ3MzYzMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvam9pbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbi5zcWwKQEAgLTE2Mjcs NyArMTYyNyw4IEBAIHNlbGVjdCBhLnVuaXF1ZTEsIGIudW5pcXVlMgogICB3aGVyZSBiLnVuaXF1 ZTIgPSBhbnkgKHNlbGVjdCBxMSBmcm9tIGludDhfdGJsIGMgd2hlcmUgYy5xMSA8IGIudW5pcXVl MSk7CiAKIC0tCi0tLSB0ZXN0IGpvaW4gcmVtb3ZhbAorLS0gdGVzdCBqb2luIHJlbW92YWwgZm9y IHBsYWluIHRhYmxlcworLS0gd2UgaGF2ZSBhbG1vc3QgdGhlIHNtYXJlIHRlc3RzIGZvciBwYXJ0 aXRpb25lZCB0YWJsZXMgYmVsb3cKIC0tCiAKIGJlZ2luOwpAQCAtMTY5Niw2ICsxNjk3LDM3IEBA IHNlbGVjdCAxIGZyb20gKHNlbGVjdCBhLmlkIEZST00gYSBsZWZ0IGpvaW4gYiBvbiBhLmJfaWQg PSBiLmlkKSBxLAogCiByb2xsYmFjazsKIAorLS0KKy0tIHRlc3Qgam9pbiByZW1vdmFsIGZvciBw YXJ0aXRpb25lZCB0YWJsZXMKKy0tIHRoaXMgaXMgYW5hbG9nIHRvIHRoZSBub24gcGFydGl0aW9u ZWQgY2FzZSBhYm92ZQorLS0KKworYmVnaW47CisKK0NSRUFURSBUQUJMRSBiX3AgKGlkIGludCBQ UklNQVJZIEtFWSwgY19pZCBpbnQpIHBhcnRpdGlvbiBieSByYW5nZShpZCk7CitDUkVBVEUgVEFC TEUgYl9tIHBhcnRpdGlvbiBvZiBiX3AgZm9yIHZhbHVlcyBmcm9tICgwKSB0byAoMTApIHBhcnRp dGlvbiBieSByYW5nZShpZCk7CitDUkVBVEUgVEFCTEUgYl9jIHBhcnRpdGlvbiBvZiBiX20gZm9y IHZhbHVlcyBmcm9tICgwKSB0byAoMTApOworQ1JFQVRFIFRBQkxFIGNfcCAoaWQgaW50IFBSSU1B UlkgS0VZKSBwYXJ0aXRpb24gYnkgcmFuZ2UoaWQpOworQ1JFQVRFIFRBQkxFIGNfbSBwYXJ0aXRp b24gb2YgY19wIGZvciB2YWx1ZXMgZnJvbSAoMCkgdG8gKDEwKSBwYXJ0aXRpb24gYnkgcmFuZ2Uo aWQpOworQ1JFQVRFIFRBQkxFIGNfYyBwYXJ0aXRpb24gb2YgY19tIGZvciB2YWx1ZXMgZnJvbSAo MCkgdG8gKDEwKTsKK0lOU0VSVCBJTlRPIGJfcCBWQUxVRVMgKDAsIDApLCAoMSwgTlVMTCk7CitJ TlNFUlQgSU5UTyBjX3AgVkFMVUVTICgwKSwgKDEpOworCistLSBhbGwgdGhyZWUgY2FzZXMgc2hv dWxkIGJlIG9wdGltaXphYmxlIGludG8gYSBzaW1wbGUgc2Vxc2NhbgorRVhQTEFJTiAoQ09TVFMg T0ZGKSBTRUxFQ1QgYjAuKiBGUk9NIGJfcCBiMCBMRUZUIEpPSU4gYl9wIGIgT04gYjAuY19pZCA9 IGIuaWQ7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBiLiogRlJPTSBiX3AgYiBMRUZUIEpP SU4gY19wIGMgT04gYi5jX2lkID0gYy5pZDsKK0VYUExBSU4gKENPU1RTIE9GRikKKyAgU0VMRUNU IGIwLiogRlJPTSBiX3AgYjAgTEVGVCBKT0lOIChiX3AgYiBMRUZUIEpPSU4gY19wIGMgb24gYi5j X2lkID0gYy5pZCkKKyAgT04gKGIwLmNfaWQgPSBiLmlkKTsKKworLS0gY2hlY2sgb3B0aW1pemF0 aW9uIG9mIG91dGVyIGpvaW4gd2l0aGluIGFub3RoZXIgc3BlY2lhbCBqb2luCitFWFBMQUlOIChD T1NUUyBPRkYpCitzZWxlY3QgaWQgZnJvbSBiX3AgYjAgV0hFUkUgaWQgaW4gKAorCVNFTEVDVCBi LmlkIEZST00gYl9wIGIgTEVGVCBKT0lOIGNfcCBjIG9uIGIuaWQgPSBjLmlkCispOworCityb2xs YmFjazsKKwogY3JlYXRlIHRlbXAgdGFibGUgcGFyZW50IChrIGludCBwcmltYXJ5IGtleSwgcGQg aW50KTsKIGNyZWF0ZSB0ZW1wIHRhYmxlIGNoaWxkIChrIGludCB1bmlxdWUsIGNkIGludCk7CiBp bnNlcnQgaW50byBwYXJlbnQgdmFsdWVzICgxLCAxMCksICgyLCAyMCksICgzLCAzMCk7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fam9pbi5zcWwgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fam9pbi5zcWwKaW5kZXggNjdmNTA2MzYxZi4uOTRmNDhh N2M1MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX2pvaW4uc3Fs CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9qb2luLnNxbApAQCAtMTE0OSw3 ICsxMTQ5LDcgQEAgQ1JFQVRFIFRBQkxFIGZyYWN0X3QwIFBBUlRJVElPTiBPRiBmcmFjdF90IEZP UiBWQUxVRVMgRlJPTSAoJzAnKSBUTyAoJzEwMDAnKTsKIENSRUFURSBUQUJMRSBmcmFjdF90MSBQ QVJUSVRJT04gT0YgZnJhY3RfdCBGT1IgVkFMVUVTIEZST00gKCcxMDAwJykgVE8gKCcyMDAwJyk7 CiAKIC0tIGluc2VydCBkYXRhCi1JTlNFUlQgSU5UTyBmcmFjdF90IChpZCkgKFNFTEVDVCBnZW5l cmF0ZV9zZXJpZXMoMCwgMTk5OSkpOworSU5TRVJUIElOVE8gZnJhY3RfdCAoaWQpIFNFTEVDVCBp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDAsIDE5OTkpIGk7CiBBTkFMWVpFIGZyYWN0X3Q7CiAKIC0t IHZlcmlmeSBwbGFuOyBuZXN0ZWQgaW5kZXggb25seSBzY2FucwpAQCAtMTE1NywxMCArMTE1Nywx MCBAQCBTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CiBTRVQgZW5hYmxl X3BhcnRpdGlvbndpc2Vfam9pbiA9IG9uOwogCiBFWFBMQUlOIChDT1NUUyBPRkYpCi1TRUxFQ1Qg KiBGUk9NIGZyYWN0X3QgeCBMRUZUIEpPSU4gZnJhY3RfdCB5IFVTSU5HIChpZCkgT1JERVIgQlkg aWQgQVNDIExJTUlUIDEwOworU0VMRUNUIHguaWQsIHkuaWQgRlJPTSBmcmFjdF90IHggTEVGVCBK T0lOIGZyYWN0X3QgeSBVU0lORyAoaWQpIE9SREVSIEJZIHguaWQgQVNDIExJTUlUIDEwOwogCiBF WFBMQUlOIChDT1NUUyBPRkYpCi1TRUxFQ1QgKiBGUk9NIGZyYWN0X3QgeCBMRUZUIEpPSU4gZnJh Y3RfdCB5IFVTSU5HIChpZCkgT1JERVIgQlkgaWQgREVTQyBMSU1JVCAxMDsKK1NFTEVDVCB4Lmlk LCB5LmlkIEZST00gZnJhY3RfdCB4IExFRlQgSk9JTiBmcmFjdF90IHkgVVNJTkcgKGlkKSBPUkRF UiBCWSB4LmlkIERFU0MgTElNSVQgMTA7CiAKIC0tIGNsZWFudXAKIERST1AgVEFCTEUgZnJhY3Rf dDsKLS0gCjIuMzUuMwoK --_004_07eacfbceec74ee6b48e3ce14bc7f274indexde_--