From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Andrew Burgess To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: fix RHEL-86890 - incorrect type symbols found in .gdb_index Date: Thu, 23 Jul 2026 18:36:26 GMT Message-ID: <178483178641.1.14175765600301178562.rpms-gdb-a8974ce52e7b@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: a8974ce52e7b1e93c8ddee98c6c582f21a0217fa ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGZpeC1kdXAtcGF0Y2gKICAgICAg ICAgICAgQ29tbWl0IDogYTg5NzRjZTUyZTdiMWU5M2M4ZGRlZTk4YzZjNTgyZjIxYTAyMTdmYQog ICAgICAgICAgICBBdXRob3IgOiBBbmRyZXcgQnVyZ2VzcyA8YWJ1cmdlc3NAcmVkaGF0LmNvbT4K ICAgICAgICAgICAgRGF0ZSAgIDogMjAyNi0wMi0xMVQyMDoxMzowNSswMDowMAogICAgICAgICAg ICBTdGF0cyAgOiArMTMwMi8tMSBpbiA1IGZpbGUocykKICAgICAgICAgICAgVVJMICAgIDogaHR0 cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9nZGIvYy9hODk3NGNlNTJlN2IxZTkzYzhk ZGVlOThjNmM1ODJmMjFhMDIxN2ZhP2JyYW5jaD1maXgtZHVwLXBhdGNoCgogICAgICAgICAgICBM b2c6CiAgICAgICAgICAgIGZpeCBSSEVMLTg2ODkwIC0gaW5jb3JyZWN0IHR5cGUgc3ltYm9scyBm b3VuZCBpbiAuZ2RiX2luZGV4CgpCYWNrcG9ydCB1cHN0cmVhbSBjb21taXRzIDBmYTRmNjI1Njhi MWRlZWIsIGNjZDU2ZTIyNzAzYzA5NGUsIGFuZApjMDllYmVlMGQzYWU5MTQ4IHRvIGFkZHJlc3Mg UkhFTC04Njg5MC4gIFRoZXNlIGJhY2twb3J0cyB3aWxsIG5vdCBiZQpuZWVkZWQgb25jZSB3ZSBy ZWJhc2UgdG8gR0RCIDE4LgoKVGhlIHRoaXJkIG9mIHRoZXNlIGNvbW1pdHMgaXMgb25seSBuZWVk ZWQgc28gdGhhdCB0aGUgdGVzdHMgZnJvbSB0aGUKZmlyc3QgdHdvIGNvbW1pdHMgd2lsbCBwYXNz IGFuZCBpc24ndCBkaXJlY3RseSByZWxhdGVkIHRvIHRoZSBnZGIKaW5kZXguCgotLS0KZGlmZiAt LWdpdCBhL19nZGIuc3BlYy5QYXRjaC5pbmNsdWRlIGIvX2dkYi5zcGVjLlBhdGNoLmluY2x1ZGUK aW5kZXggOGQxYWZjZC4uYTRkNjFkYSAxMDA2NDQKLS0tIGEvX2dkYi5zcGVjLlBhdGNoLmluY2x1 ZGUKKysrIGIvX2dkYi5zcGVjLlBhdGNoLmluY2x1ZGUKQEAgLTM3LDMgKzM3LDEwIEBAIFBhdGNo MDA2OiBnZGItcmhiejI0MjQzMjUtYysrMjAtaW1wbGljaXQtbGFtYmRhLWNhcHR1cmUucGF0Y2gK ICMgd2hlbiBiYWNrcG9ydGluZyB0aGlzIGZpeC4KIFBhdGNoMDA3OiBnZGItcmhiejI0MDM1ODAt bWlzcGxhY2VkLXN5bXRhYnMucGF0Y2gKIAorIyBCYWNrcG9ydCBvZiB0aHJlZSB1cHN0cmVhbSBw YXRjaGVzLiAgVGhlIGZpcnN0IHR3byByZWxhdGUgdG8gaW5kZXgKKyMgZ2VuZXJhdGlvbiwgd2hp bGUgdGhlIHRoaXJkIHJlbGF0ZXMgdG8gc3ltYm9sIGxvb2t1cCwgYnV0IGlzIG5lZWRlZAorIyBz byB0aGF0IHRoZSB0ZXN0cyBmcm9tIHRoZSBlYXJsaWVyIHR3byBwYXRjaGVzIHdpbGwgcGFzcy4K KyMKKyMgVGhlc2UgYmFja3BvcnRzIHdpbGwgYWxsIGRyb3Agb3V0IHdoZW4gcmViYXNpbmcgb250 byBHREIgMTguCitQYXRjaDAwODogZ2RiLWluZGV4LWdlbmVyYXRpb24tZml4ZXMucGF0Y2gKKwoK ZGlmZiAtLWdpdCBhL19nZGIuc3BlYy5wYXRjaC5pbmNsdWRlIGIvX2dkYi5zcGVjLnBhdGNoLmlu Y2x1ZGUKaW5kZXggZjZhOTI0Ni4uNTNiMDVjYyAxMDA2NDQKLS0tIGEvX2dkYi5zcGVjLnBhdGNo LmluY2x1ZGUKKysrIGIvX2dkYi5zcGVjLnBhdGNoLmluY2x1ZGUKQEAgLTUsMyArNSw0IEBACiAl cGF0Y2ggLXAxIC1QMDA1CiAlcGF0Y2ggLXAxIC1QMDA2CiAlcGF0Y2ggLXAxIC1QMDA3CislcGF0 Y2ggLXAxIC1QMDA4CgpkaWZmIC0tZ2l0IGEvX3BhdGNoX29yZGVyIGIvX3BhdGNoX29yZGVyCmlu ZGV4IDMwNjU2NzguLjBmMTNkMTUgMTAwNjQ0Ci0tLSBhL19wYXRjaF9vcmRlcgorKysgYi9fcGF0 Y2hfb3JkZXIKQEAgLTUsMyArNSw0IEBAIGdkYi1yaGJ6MjQyNDMyNS1jMjMtY29uc3QtYnVpbGQt d2FybmluZ3MucGF0Y2gKIGdkYi1yaGJ6MjQyNDMyNS1jMjMtbW9yZS1jb25zdC1maXhlcy5wYXRj aAogZ2RiLXJoYnoyNDI0MzI1LWMrKzIwLWltcGxpY2l0LWxhbWJkYS1jYXB0dXJlLnBhdGNoCiBn ZGItcmhiejI0MDM1ODAtbWlzcGxhY2VkLXN5bXRhYnMucGF0Y2gKK2dkYi1pbmRleC1nZW5lcmF0 aW9uLWZpeGVzLnBhdGNoCgpkaWZmIC0tZ2l0IGEvZ2RiLWluZGV4LWdlbmVyYXRpb24tZml4ZXMu cGF0Y2ggYi9nZGItaW5kZXgtZ2VuZXJhdGlvbi1maXhlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi4xNjE4Y2EwCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWluZGV4 LWdlbmVyYXRpb24tZml4ZXMucGF0Y2gKQEAgLTAsMCArMSwxMjg3IEBACitGcm9tIEZFRE9SQV9Q QVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVG9tIFRyb21leSA8dG9tQHRy b21leS5jb20+CitEYXRlOiBUdWUsIDExIEZlYiAyMDI1IDExOjQ4OjA5IC0wNzAwCitTdWJqZWN0 OiBnZGItaW5kZXgtZ2VuZXJhdGlvbi1maXhlcy5wYXRjaAorCis7OyBCYWNrcG9ydCBvZiB0aHJl ZSB1cHN0cmVhbSBwYXRjaGVzLiAgVGhlIGZpcnN0IHR3byByZWxhdGUgdG8gaW5kZXgKKzs7IGdl bmVyYXRpb24sIHdoaWxlIHRoZSB0aGlyZCByZWxhdGVzIHRvIHN5bWJvbCBsb29rdXAsIGJ1dCBp cyBuZWVkZWQKKzs7IHNvIHRoYXQgdGhlIHRlc3RzIGZyb20gdGhlIGVhcmxpZXIgdHdvIHBhdGNo ZXMgd2lsbCBwYXNzLgorOzsKKzs7IFRoZXNlIGJhY2twb3J0cyB3aWxsIGFsbCBkcm9wIG91dCB3 aGVuIHJlYmFzaW5nIG9udG8gR0RCIDE4LgorCitVcHN0cmVhbSBjb21taXQ6IDBmYTRmNjI1Njhi MWRlZWIwNzFjNGE2YWU4YTE2NzFjOGVjN2JhNmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitFbWl0IHNvbWUgdHlwZSBkZWNsYXJh dGlvbnMgaW4gLmdkYl9pbmRleAorCitJZiB5b3UgcnVuIHN0cnVjdC1kZWNsLmV4cCB3aXRoIHRo ZSAuZ2RiX2luZGV4IGJvYXJkLCB5b3Ugd2lsbCBzZWUKK3RoYXQgInRoZV90eXBlIiBpcyBub3Qg ZW1pdHRlZCBpbiB0aGUgaW5kZXguICBUaGlzIHdvdWxkIGNhdXNlIGEKK2ZhaWx1cmUgaW4gdGhp cyBzZXJpZXMuICBUaGUgZml4IGlzIHRvIGVuc3VyZSB0aGF0IGNlcnRhaW4gbmVjZXNzYXJ5Cit0 eXBlIGRlY2xhcmF0aW9ucyBhcmUgZW1pdHRlZC4KKworSG93ZXZlciwgYSBuYWl2ZSBmaXggaGVy ZSB3aWxsIHJlZ3Jlc3Mgc3R1Yi1hcnJheS1zaXplLmV4cCwgd2hlcmUgYQordHlwZSBkZWNsYXJh dGlvbiBhbmQgYSB0eXBlIGRlZmluaXRpb24gYXJlIGJvdGggc2VlbiAtLSBidXQgdGhlCitkZWNs YXJhdGlvbiBpcyBzZWVuIGZpcnN0IGFuZCBjYXVzZXMgYSBmYWlsdXJlLiAgVGhpcyBpcyBoYW5k bGVkIGJ5CithZGRpbmcgc29tZSBjb2RlIChpbmNsdWRpbmcgYSBtaWxkIGhhY2spIHRvIGZpbHRl ciBvdXQgdHlwZQorZGVjbGFyYXRpb25zIHdoZW4gYSBjb3JyZXNwb25kaW5nIHR5cGUgZGVmaW5p dGlvbiBpcyBzZWVuLgorCitBY2tlZC1CeTogU2ltb24gTWFyY2hpIDxzaW1vbi5tYXJjaGlAZWZm aWNpb3MuY29tPgorCitVcHN0cmVhbSBjb21taXQ6IGNjZDU2ZTIyNzAzYzA5NGU1YjZkMDAyNWUy ODA1OTI3N2VkOGQ4YzUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorCitnZGI6IHJlbW92ZSBhdHRlbXB0ZWQgdHlwZSBkZS1kdXBsaWNh dGlvbiB3aGVuIGJ1aWxkaW5nIGdkYi1pbmRleAorCitUaGlzIGNvbW1pdCByZW1vdmVzIHRoZSBh dHRlbXB0ZWQgZGUtZHVwbGljYXRpb24gb2YgdHlwZXMgd2hlbgorYnVpbGRpbmcgdGhlIGdkYi1p bmRleC4gIFRoaXMgY29tbWl0IGlzIHRoZSBuYXR1cmFsIGV4dGVuc2lvbiBvZiB0aGlzCitlYXJs aWVyIGNvbW1pdDoKKworICBjb21taXQgYWVmMzZkZWU5M2JmMTk0Y2IwYjk3NmE0YWU0OWE3OWE3 MzZhMTg4ZAorICBEYXRlOiAgIFN1biBBdWcgMTMgMTQ6MDg6MDYgMjAyMyArMDIwMAorCisgICAg ICBbZ2RiL3N5bXRhYl0gRG9uJ3QgZGVkdXBsaWNhdGUgdmFyaWFibGVzIGluIGdkYi1pbmRleAor CitXaGljaCByZW1vdmVkIHRoZSBkZS1kdXBsaWNhdGlvbiBvZiB2YXJpYWJsZXMuICBJdCBpcyB3 b3J0aCByZWFkaW5nCit0aGUgZWFybGllciBjb21taXQgYXMgYWxsIHRoZSBqdXN0aWZpY2F0aW9u cyBmb3IgdGhhdCBwYXRjaCBhbHNvCithcHBseSB0byB0aGlzIG9uZS4KKworQ3VycmVudGx5LCB3 aGVuIGJ1aWxkaW5nIHRoZSBnZGItaW5kZXggd2Ugc29ydCB0aGUgdHlwZSBlbnRyaWVzLAorbW92 aW5nIGRlY2xhcmF0aW9ucyB0byB0aGUgZW5kIG9mIHRoZSBlbnRyeSBsaXN0LCBhbmQgbm9uLWRl Y2xhcmF0aW9ucwordG8gdGhlIGZyb250LiAgVGhlbiB3aXRoaW4gZWFjaCBncm91cCwgZGVjbGFy YXRpb25zLCBhbmQKK25vbi1kZWNsYXJhdGlvbnMsIHRoZSBpbmRleCBlbnRyaWVzIGFyZSBzb3J0 ZWQgYnkgQ1Ugb2Zmc2V0LgorCitXZSB0aGVuIGVtaXQgdGhlIGZpcnN0IGVudHJ5IGZvciBhbnkg Z2l2ZW4gdHlwZSBuYW1lLgorCitUaGVyZSBhcmUgdHdvIHByb2JsZW1zIHdpdGggdGhpcy4KKwor Rmlyc3QsIGEgbm9uLWRlY2xhcmF0aW9uIGVudHJ5IGNvdWxkIGJlIGEgZGVmaW5pdGlvbiwgYnV0 IGl0IGNvdWxkCithbHNvIGJlIGEgdHlwZWRlZi4gIE5vdyBzdXJlLCBhIHR5cGVkZWYgaXMgYSB0 eXBlIGRlZmluaXRpb24sIGJ1dCBub3QKK25lY2Vzc2FyaWx5IGEgdXNlZnVsIG9uZS4KKworSWYg d2UgaGF2ZSBhIGhlYWRlciBmaWxlIHRoYXQgY29udGFpbnM6CisKKyAgdHlwZWRlZiBzdHJ1Y3Qg Zm9vX3QgZm9vX3Q7CisKK0FuZCBhIENVIHdoaWNoIG1ha2VzIHVzZSBvZiAnZm9vX3QnLCB0aGVu IHRoZSBDVSB3aWxsIGluY2x1ZGUgYm90aCBhCit0eXBlZGVmIGFuZCBhIHR5cGUgZGVjbGFyYXRp b24uICBUaGUgdGFyZ2V0IG9mIHRoZSB0eXBlZGVmIHdpbGwgYmUgdGhlCitkZWNsYXJhdGlvbi4g IEJ1dCBub3RpY2UsIHRoZSBDVSB3aWxsIG5vdCBpbmNsdWRlIGEgdHlwZSBkZWZpbml0aW9uLgor CitJZiB3ZSBoYXZlIHR3byBDVXMsIG9uZSB3aGljaCBvbmx5IHNlZXMgdGhlIGFib3ZlIHR5cGVk ZWYgYW5kCitkZWNsYXJhdGlvbiwgYW5kIGFub3RoZXIgd2hpY2ggc2VlcyB0aGUgdHlwZWRlZiBh bmQgYW4gYWN0dWFsIHR5cGUKK2RlZmluaXRpb24sIHRoZW4gdGhlIGZpbmFsIGxpc3Qgb2YgZW50 cmllcyBmb3IgdGhpcyB0eXBlJ3MgbmFtZSB3aWxsCitiZToKKworICAxLiBBIHR5cGVkZWYgZW50 cnkgdGhhdCBwb2ludHMgYXQgdGhlIGRlY2xhcmF0aW9uLgorICAyLiBBIHR5cGVkZWYgZW50cnkg dGhhdCBwb2ludHMgYXQgdGhlIGRlZmluaXRpb24uCisgIDMuIEEgZGVmaW5pdGlvbi4KKyAgNC4g QSBkZWNsYXJhdGlvbi4KKworTm93ICg0KSB3aWxsIGdldCBzb3J0ZWQgdG8gdGhlIGVuZCBvZiB0 aGUgZW50cnkgbGlzdC4gIEJ1dCB0aGUgb3JkZXIKK29mICgxKSwgKDIpLCBhbmQgKDMpIHdpbGwg ZGVwZW5kIG9uIHRoZSBDVSBvZmZzZXQuICBJZiB0aGUgQ1Ugd2hpY2gKK2NvbnRhaW5pbmcgdGhl IHR5cGVkZWYgYW5kIGRlY2xhcmF0aW9uIGhhcyB0aGUgc21hbGxlc3Qgb2Zmc2V0LAordGhlbiAo MSkgd2lsbCBiZSBzb3J0ZWQgdG8gdGhlIGZyb250IG9mIHRoZSBsaXN0IG9mIGVudHJpZXMgZm9y IHRoaXMKK3R5cGUgbmFtZS4gIER1ZSB0byB0aGUgZGUtZHVwbGljYXRpb24gY29kZSB0aGlzIG1l YW5zIHRoYXQgb25seSAoMSkKK3dpbGwgYmUgYWRkZWQgdG8gdGhlIGdkYi1pbmRleC4KKworQWZ0 ZXIgR0RCIHN0YXJ0cyBhbmQgcGFyc2VzIHRoZSBpbmRleCwgaWYgYSB1c2VyIHJlZmVyZW5jZXMg J2Zvb190JworR0RCIHdpbGwgbG9vayBpbiB0aGUgaW5kZXggYW5kIGZpbmQganVzdCAoMSkuICBH REIgbG9hZHMgdGhlIENVCitjb250YWluaW5nICgxKSBhbmQgZmluZHMgYm90aCB0aGUgdHlwZWRl ZiBhbmQgdGhlIGRlY2xhcmF0aW9uLiAgQnV0CitHREIgZG9lcyBub3QgZmluZCB0aGUgZnVsbCB0 eXBlIGRlZmluaXRpb24uICBBcyBhIHJlc3VsdCBHREIgd2lsbAorZGlzcGxheSAnZm9vX3QnIGFz IGFuIGluY29tcGxldGUgdHlwZS4KKworVGhpcyBkaWZmZXJzIGZyb20gdGhlIGJlaGF2aW91ciB3 aGVuIG5vIGluZGV4IGlzIHVzZWQuICBXaXRoIG5vIGluZGV4CitHREIgZXhwYW5kcyB0aGUgZmly c3QgQ1UgY29udGFpbmluZyAnZm9vX3QnLCBmaW5kcyB0aGUgdHlwZWRlZiBhbmQKK3R5cGUgZGVj bGFyYXRpb24sIGRlY2lkZXMgdGhhdCB0aGlzIGlzIG5vdCBnb29kIGVub3VnaCBhbmQgY2Fycmll cyBvbi4KK0dEQiB3aWxsIHRoZW4gZXhwYW5kIHRoZSBzZWNvbmQgQ1UgYW5kIGZpbmQgdGhlIHR5 cGUncyBkZWZpbml0aW9uLCBHREIKK25vdyBoYXMgYSBmdWxsIHVuZGVyc3RhbmRpbmcgb2YgdGhl IHR5cGUsIGFuZCBjYW4gcHJpbnQgdGhlIHR5cGUKK2NvcnJlY3RseS4KKworV2UgY291bGQgc29s dmUgdGhpcyBwcm9ibGVtIGJ5IG1hcmtpbmcgdHlwZWRlZnMgYXMgYSBkaXN0aW5jdAorc3ViLWNh dGVnb3J5IG9mIHR5cGVzLCBqdXN0IGFzIHdlIGRvIHdpdGggZGVjbGFyYXRpb25zLiAgVGhlbiB3 ZSBjb3VsZAorc29ydCBkZWZpbml0aW9ucyB0byB0aGUgZnJvbnQgb2YgdGhlIGxpc3QsIHRoZW4g dHlwZWRlZnMsIGFuZCBmaW5hbGx5LAorZGVjbGFyYXRpb25zIGFmdGVyIHRoYXQuICBUaGlzIHdv dWxkLCBJIHRoaW5rLCBtZWFuIHRoYXQgd2UgYWx3YXlzCitwcmVmZXIgZW1pdHRpbmcgYSBkZWZp bml0aW9uIGZvciBhIHR5cGUsIHdoaWNoIHdvdWxkIHJlc29sdmUgdGhpcworZmlyc3QgcHJvYmxl bSwgb3IgYXQgbGVhc3QsIGl0IHdvdWxkIHJlc29sdmUgaXQgd2VsbCBlbm91Z2gsIGJ1dCBpdAor d291bGRuJ3QgZml4IHRoZSBzZWNvbmQgcHJvYmxlbS4KKworVGhlIHNlY29uZCBwcm9ibGVtIGlz IHRoYXQgdGhlIFB5dGhvbiBBUEkgYW5kIHRoZSAnaW5mbyB0eXBlcycgY29tbWFuZAorY2FuIGJl IHVzZWQgdG8gcXVlcnkgYWxsIHR5cGUgc3ltYm9scy4gIEFzIHN1Y2gsIEdEQiBuZWVkcyB0byBi ZSBhYmxlCit0byBmaW5kIGFsbCB0aGUgQ1VzIHdoaWNoIGNvbnRhaW4gYSBnaXZlbiB0eXBlLiAg RXNwZWNpYWxseSBhcyBpdCBpcworcG9zc2libGUgdGhhdCBhIHR5cGUgbWlnaHQgYmUgZGVmaW5l ZCBkaWZmZXJlbnRseSB3aXRoaW4gZGlmZmVyZW50CitDVXMuCisKK05PVEU6IE9idmlvdXNseSBh IHByb2dyYW0gZG9pbmcgdGhpcyAoZGVmaW5pbmcgYSB0eXBlIGRpZmZlcmVudGx5IGluCisgIGRp ZmZlcmVudCBDVXMpIHdvdWxkIG5lZWQgdG8gYmUgbWluZGZ1bCBvZiB0aGUgT25lIERlZmluaXRp b24gUnVsZSwKKyAgYnV0IHNvIGxvbmcgYXMgdGhlIHR5cGUgZG9lc24ndCBlc2NhcGUgb3V0c2lk ZSBvZiBhIHNpbmdsZSBDVSB0aGVuCisgIHJldXNpbmcgYSB0eXBlIG5hbWUgaXNuJ3QsIGFzIEkg dW5kZXJzdGFuZCBpdCwgd3JvbmcuICBBbmQgZXZlbiBpZgorICBpdCBpcywgdGhlIGZhY3QgdGhh dCBpdCBjb21waWxlcywgYW5kIGNvdWxkIGJlIGEgc291cmNlIG9mIGJ1Z3MsCisgIG1lYW5zIChp biBteSBvcGluaW9uKSB0aGF0IEdEQiBzaG91bGQgaGFuZGxlIHRoaXMgY2FzZSB0byBlbmFibGUK KyAgZGVidWdnaW5nIG9mIGl0LgorCitFdmVuIHNvbWV0aGluZyBhcyBzaW1wbGUgYXMgJ2luZm8g dHlwZXMgLi4uLicgcmVsaWVzIG9uIEdEQiBiZWluZyBhYmxlCit0byBmaW5kIG11bHRpcGxlIGVu dHJpZXMgZm9yIGEgZ2l2ZW4gdHlwZSBpbiBkaWZmZXJlbnQgQ1VzLiAgSWYgdGhlCitpbmRleCBv bmx5IGNvbnRhaW5zIGEgc2luZ2xlIHR5cGUgZW50cnksIHRoZW4gdGhpcyBtZWFucyBHREIgd2ls bCBzZWUKK2RpZmZlcmVudCB0aGluZ3MgZGVwZW5kaW5nIG9uIHdoaWNoIENVcyBoYXBwZW4gdG8g aGF2ZSBiZWVuIGV4cGFuZGVkLgorCitHaXZlbiBhbGwgb2YgdGhlIGFib3ZlLCBJIHRoaW5rIHRo YXQgYW55IGF0dGVtcHQgdG8gcmVtb3ZlIHR5cGUKK2VudHJpZXMgZnJvbSB0aGUgZ2RiLWluZGV4 IGlzIHVuc2FmZSBhbmQgY2FuIHJlc3VsdCBpbiBHREIgYmVoYXZpbmcKK2RpZmZlcmVudGx5IHdo ZW4gdXNpbmcgdGhlIGdkYi1pbmRleCBjb21wYXJlZCB0byB1c2luZyBubyBpbmRleC4KKworVGhl IHNvbHV0aW9uIGlzIHRvIHJlbW92ZSB0aGUgZGUtZHVwbGljYXRpb24gY29kZSwgd2hpY2ggaXMg d2hhdCB0aGlzCitwYXRjaCBkb2VzLgorCitOb3cgdGhhdCB3ZSBubyBsb25nZXIgbmVlZCB0byBz b3J0IGRlY2xhcmF0aW9ucyB0byB0aGUgZW5kIG9mIHRoZQorZW50cnkgbGlzdCwgSSd2ZSByZW1v dmVkIGFsbCB0aGUgY29kZSByZWxhdGVkIHRvIHRoZSBzcGVjaWFsIHVzZSBvZgorR0RCX0lOREVY X1NZTUJPTF9LSU5EX1VOVVNFRDUgKHdoaWNoIGlzIGhvdyB3ZSBtYXJrZWQgZGVjbGFyYXRpb25z KSwKK3RoaXMgY2xlYW5zIHRoaW5ncyB1cCBhIGxpdHRsZSBiaXQuCisKK0kndmUgYWxzbyByZW5h bWVkIHNvbWUgb2YgdGhlIGZ1bmN0aW9ucyBhd2F5IGZyb20gbWluaW1pemUsIG5vdyB0aGF0Cit0 aGVyZSdzIG5vIG1pbmltaXphdGlvbiBiZWluZyBkb25lLgorCitBIHByb2JsZW0gd2FzIHJldmVh bGVkIGJ5IHRoaXMgY2hhbmdlLiAgV2hlbiBydW5uaW5nIHRoZSB0ZXN0CitnZGIuY3Avc3R1Yi1h cnJheS1zaXplLmV4cCB3aXRoIHRoZSAtLXRhcmdldF9ib2FyZD1jYy13aXRoLWdkYi1pbmRleCwK K0kgd2FzIHNlZWluZyBhIGZhaWx1cmUgdXNpbmcgZ2NjIDE1LjEuMC4KKworVGhpcyB0ZXN0IGhh cyB0d28gQ1VzLCBhbmQgYSB0eXBlICdBJy4gIFRoZSB0ZXN0IGRlc2NyaXB0aW9uIHNheXM6CisK KyAgVGVzdCBzaXplIG9mIGFycmF5cyBvZiBzdHViYmVkIHR5cGVzIChzdHJ1Y3R1cmVzIHdoZXJl IHRoZSBmdWxsCisgIGRlZmluaXRpb24gaXMgbm90IGltbWVkaWF0ZWx5IGF2YWlsYWJsZSkuCisK K1doaWNoIEkgZG9uJ3QgcmVhbGx5IHVuZGVyc3RhbmQgZ2l2ZW4gdGhlIHRlc3QncyBzb3VyY2Ug Y29kZS4gIFRoZQordHlwZSAnQScgaXMgZGVmaW5lZCBpbiBhIGhlYWRlciwgd2hpY2ggaXMgaW5j bHVkZWQgaW4gYm90aCBDVXMuCitIb3dldmVyLCB0aGUgdGVzdCBkZXNjcmlwdGlvbiBkb2VzIHNl ZW0gdG8gYmUgYWNjdXJhdGU7IGluIG9uZSBDVSB0aGUKK3R5cGUgbG9va3MgbGlrZSB0aGlzOgor CisgPDE+PDRhPjogQWJicmV2IE51bWJlcjogOCAoRFdfVEFHX3N0cnVjdHVyZV90eXBlKQorICAg IDw0Yj4gICBEV19BVF9uYW1lICAgICAgICA6IEEKKyAgICA8NGQ+ICAgRFdfQVRfZGVjbGFyYXRp b24gOiAxCisgICAgPDRkPiAgIERXX0FUX3NpYmxpbmcgICAgIDogPDB4NmQ+CisgPDI+PDUxPjog QWJicmV2IE51bWJlcjogOSAoRFdfVEFHX3N1YnByb2dyYW0pCisgICAgPDUyPiAgIERXX0FUX2V4 dGVybmFsICAgIDogMQorICAgIDw1Mj4gICBEV19BVF9uYW1lICAgICAgICA6IH5BCisgICAgPDU1 PiAgIERXX0FUX2RlY2xfZmlsZSAgIDogMgorICAgIDw1Nj4gICBEV19BVF9kZWNsX2xpbmUgICA6 IDIwCisgICAgPDU3PiAgIERXX0FUX2RlY2xfY29sdW1uIDogMTEKKyAgICA8NTg+ICAgRFdfQVRf bGlua2FnZV9uYW1lOiAoaW5kaXJlY3Qgc3RyaW5nLCBvZmZzZXQ6IDB4MTAzKTogX1pOMUFENEV2 CisgICAgPDVjPiAgIERXX0FUX3ZpcnR1YWxpdHkgIDogMSAgICAgICAgKHZpcnR1YWwpCisgICAg PDVkPiAgIERXX0FUX2NvbnRhaW5pbmdfdHlwZTogPDB4NGE+CisgICAgPDYxPiAgIERXX0FUX2Rl Y2xhcmF0aW9uIDogMQorICAgIDw2MT4gICBEV19BVF9vYmplY3RfcG9pbnRlcjogPDB4NjY+Cisg ICAgPDY1PiAgIERXX0FUX2lubGluZSAgICAgIDogMCAgICAgICAgKG5vdCBpbmxpbmVkKQorIDwz Pjw2Nj46IEFiYnJldiBOdW1iZXI6IDEwIChEV19UQUdfZm9ybWFsX3BhcmFtZXRlcikKKyAgICA8 Njc+ICAgRFdfQVRfdHlwZSAgICAgICAgOiA8MHg4Yz4KKyAgICA8NmI+ICAgRFdfQVRfYXJ0aWZp Y2lhbCAgOiAxCisgPDM+PDZiPjogQWJicmV2IE51bWJlcjogMAorIDwyPjw2Yz46IEFiYnJldiBO dW1iZXI6IDAKKword2hpbGUgaW4gdGhlIHNlY29uZCBDVSwgdGhlIHR5cGUgbG9va3MgbGlrZSB0 aGlzOgorCisgPDE+PDE3OD46IEFiYnJldiBOdW1iZXI6IDQgKERXX1RBR19zdHJ1Y3R1cmVfdHlw ZSkKKyAgICA8MTc5PiAgIERXX0FUX25hbWUgICAgICAgIDogQQorICAgIDwxN2I+ICAgRFdfQVRf Ynl0ZV9zaXplICAgOiA4CisgICAgPDE3Yz4gICBEV19BVF9kZWNsX2ZpbGUgICA6IDIKKyAgICA8 MTdkPiAgIERXX0FUX2RlY2xfbGluZSAgIDogMTgKKyAgICA8MTdlPiAgIERXX0FUX2RlY2xfY29s dW1uIDogOAorICAgIDwxN2Y+ICAgRFdfQVRfY29udGFpbmluZ190eXBlOiA8MHgxNzg+CisgICAg PDE4Mz4gICBEV19BVF9zaWJsaW5nICAgICA6IDwweDFhYz4KKyA8Mj48MTg3PjogQWJicmV2IE51 bWJlcjogNSAoRFdfVEFHX21lbWJlcikKKyAgICA8MTg4PiAgIERXX0FUX25hbWUgICAgICAgIDog KGluZGlyZWN0IHN0cmluZywgb2Zmc2V0OiAweDE5ZSk6IF92cHRyLkEKKyAgICA8MThjPiAgIERX X0FUX3R5cGUgICAgICAgIDogPDB4MWJlPgorICAgIDwxOTA+ICAgRFdfQVRfZGF0YV9tZW1iZXJf bG9jYXRpb246IDAKKyAgICA8MTkxPiAgIERXX0FUX2FydGlmaWNpYWwgIDogMQorIDwyPjwxOTE+ OiBBYmJyZXYgTnVtYmVyOiA2IChEV19UQUdfc3VicHJvZ3JhbSkKKyAgICA8MTkyPiAgIERXX0FU X2V4dGVybmFsICAgIDogMQorICAgIDwxOTI+ICAgRFdfQVRfbmFtZSAgICAgICAgOiB+QQorICAg IDwxOTU+ICAgRFdfQVRfZGVjbF9maWxlICAgOiAxCisgICAgPDE5Nj4gICBEV19BVF9kZWNsX2xp bmUgICA6IDIwCisgICAgPDE5Nz4gICBEV19BVF9kZWNsX2NvbHVtbiA6IDEKKyAgICA8MTk4PiAg IERXX0FUX2xpbmthZ2VfbmFtZTogKGluZGlyZWN0IHN0cmluZywgb2Zmc2V0OiAweDEwMyk6IF9a TjFBRDRFdgorICAgIDwxOWM+ICAgRFdfQVRfdmlydHVhbGl0eSAgOiAxICAgICAgICh2aXJ0dWFs KQorICAgIDwxOWQ+ICAgRFdfQVRfY29udGFpbmluZ190eXBlOiA8MHgxNzg+CisgICAgPDFhMT4g ICBEV19BVF9kZWNsYXJhdGlvbiA6IDEKKyAgICA8MWExPiAgIERXX0FUX29iamVjdF9wb2ludGVy OiA8MHgxYTU+CisgPDM+PDFhNT46IEFiYnJldiBOdW1iZXI6IDcgKERXX1RBR19mb3JtYWxfcGFy YW1ldGVyKQorICAgIDwxYTY+ICAgRFdfQVRfdHlwZSAgICAgICAgOiA8MHgxY2Q+CisgICAgPDFh YT4gICBEV19BVF9hcnRpZmljaWFsICA6IDEKKyA8Mz48MWFhPjogQWJicmV2IE51bWJlcjogMAor IDwyPjwxYWI+OiBBYmJyZXYgTnVtYmVyOiAwCisKK1NvLCBmb3IgcmVhc29ucyB0aGF0IEkgZG9u J3QgdW5kZXJzdGFuZCwgdGhlIHR5cGUsIGRlc3BpdGUgKGFzIGZhciBhcworSSBjYW4gc2VlKSBo YXZpbmcgaXRzIGZ1bGwgZGVmaW5pdGlvbiBhdmFpbGFibGUsIGlzIHJlY29yZGVkIG9ubHkgYXMK K2RlY2xhcmVkIGluIG9uZSBDVS4KKworVGhlIHRlc3QgdGhlbiBwZXJmb3JtcyBzb21lIGFjdGlv bnMgdGhhdCByZWx5IG9uICdzaXplb2YoQSknIGFuZAorZXhwZWN0cyBHREIgdG8gY29ycmVjdGx5 IGZpZ3VyZSBvdXQgdGhlIHNpemUuICBUaGlzIHJlcXVpcmVzIEdEQiB0bworZmluZCwgYW5kIGV4 cGFuZCB0aGUgQ1UgY29udGFpbmluZyB0aGUgcmVhbCBkZWZpbml0aW9uIG9mICdBJy4KKworUHJp b3IgdG8gdGhpcyBwYXRjaCBHREIgd291bGQgc29ydCB0aGUgdHdvIHR5cGUgZW50cmllcyBmb3Ig J0EnLAorcGxhY2luZyB0aGUgZGVjbGFyYXRpb24gc2Vjb25kLCBhbmQgdGhlbiByZWNvcmQgb25s eSBvbmUgZW50cnksIHRoZQorZGVmaW5pdGlvbi4gIFdoZW4gaXQgY2FtZSB0byBleHBhbnNpb24g dGhlcmUgd2FzIG9ubHkgb25lIHRoaW5nIHRvCitleHBhbmQsIGFuZCB0aGlzIGlzIHRoZSBkZWNs YXJhdGlvbiB3ZSBuZWVkZWQuICBJdCBoYXBwZW5zIHRoYXQgaW4KK3RoaXMgdGVzdCB0aGUgZGVm aW5pdGlvbiBpcyBpbiB0aGUgc2Vjb25kIENVLCB0aGF0IGlzLCB0aGUgQ1Ugd2l0aCB0aGUKK2Jp Z2dlc3Qgb2Zmc2V0LiAgVGhpcyBtZWFucyB0aGF0LCBpZiBhbGwgaW5kZXggZW50cmllcyB3ZXJl IGNvbnNpZGVyZWQKK2VxdWFsLCB0aGUgZGVmaW5pdGlvbiBlbnRyeSB3b3VsZCBiZSBzZWNvbmQu ICBIb3dldmVyLCBjdXJyZW50bHksIGR1ZQordG8gdGhlIHdheSBHREIgZm9yY2VzIGRlZmluaXRp b25zIHRvIHRoZSBmcm9udCwgdGhlIGVudHJ5IGZvciB0aGUKK3NlY29uZCBDVSwgdGhlIGRlZmlu aXRpb24sIGlzIHBsYWNlZCBmaXJzdCBpbiB0aGUgaW5kZXgsIGFuZCB3aXRoCitkZS1kdXBsaWNh dGlvbiwgdGhpcyBpcyB0aGUgb25seSBlbnRyeSBhZGRlZCB0byB0aGUgaW5kZXguCisKK0FmdGVy IHRoaXMgcGF0Y2gsIGJvdGggdGhlIGRlY2xhcmF0aW9uIGFuZCB0aGUgZGVmaW5pdGlvbiBhcmUg cGxhY2VkCitpbiB0aGUgaW5kZXgsIGFuZCBhcyB0aGUgZGVjbGFyYXRpb24gaXMgaW4gdGhlIENV IGF0IG9mZnNldCAwLCB0aGUKK2RlY2xhcmF0aW9uIGlzIGFkZGVkIGZpcnN0IHRvIHRoZSBpbmRl eC4KKworVGhpcyBzaG91bGQgYmUgZmluZS4gIFdoZW4gbG9va2luZyBmb3IgJ0EnIEdEQiBzaG91 bGQgZXhwYW5kIHRoZSBDVQorY29udGFpbmluZyB0aGUgZGVjbGFyYXRpb24sIHNlZSB0aGF0IGFs bCB3ZSBoYXZlIGlzIGEgZGVjbGFyYXRpb24sIGFuZAorc28gY29udGludWUsIG5leHQgZXhwYW5k aW5nIHRoZSBkZWZpbml0aW9uLCBhdCB3aGljaCBwb2ludCB3ZSdyZSBkb25lLgorCitIb3dldmVy LCBpbiByZWFkLWdkYi1pbmRleC5jLCBpbiB0aGUgZnVuY3Rpb24KK21hcHBlZF9nZGJfaW5kZXg6 OmJ1aWxkX25hbWVfY29tcG9uZW50cywgdGhlcmUgaXMgYSB3b3JrIGFyb3VuZCBmb3IKK2dvbGQg YnVnIFBSIGdvbGQvMTU2NDYuICBJcm9uaWNhbGx5LCB0aGUgYnVnIGhlcmUgaXMgdGhhdCBnb2xk IHdhcyBub3QKK3JlbW92aW5nIGR1cGxpY2F0ZSBpbmRleCBlbnRyaWVzLCBhbmQgaXQgaXMgbm90 ZWQgdGhhdCB0aGlzIGhhcyBhCitwZXJmb3JtYW5jZSBpbXBhY3Qgb24gR0RCLiAgQSB3b3JrIGFy b3VuZCBmb3IgdGhpcyB3YXMgYWRkZWQgdG8gR0RCIGluCitjb21taXQ6CisKKyAgY29tbWl0IDg5 NDNiODc0NzYwZDljZjM1YjcxODkwYTcwYWY5ODY2ZTRmYWIyYTYKKyAgRGF0ZTogICBUdWUgTm92 IDEyIDA5OjQzOjE3IDIwMTMgLTA4MDAKKworICAgICAgV29yayBhcm91bmQgZ29sZC8xNTY0Ni4K KworQSB0ZXN0IGZvciB0aGlzIHdhcyBhZGRlZCBpbjoKKworICBjb21taXQgNDBkMjIwMzVhN2Zj MjM5YWMxZTk0NGI3NWEyZTNlZTkwMjlkMWI3NgorICBEYXRlOiAgIFR1ZSBNYXkgMjYgMTE6MzU6 MzIgMjAyMCArMDIwMAorCisgICAgICBbZ2RiL3Rlc3RzdWl0ZV0gQWRkIHRlc3QtY2FzZSBnb2xk LWdkYi1pbmRleC5leHAKKworQW5kIHRoZSBmaXggd2FzIHR3ZWFrZWQgaW4gY29tbWl0OgorCisg IGNvbW1pdCBmMDMwNDQwZGFhOTg5YWUzZGFkYzFmYTQzNDJjZmExNmQ2OTBkYjNjCisgIERhdGU6 ICAgVGh1IE1heSAyOCAxNzoyNjoyMiAyMDIwICswMjAwCisKKyAgICAgIFtnZGIvc3ltdGFiXSBN YWtlIGdvbGQgaW5kZXggd29ya2Fyb3VuZCBtb3JlIHByZWNpc2UKKworVGhlIHByb2JsZW0gc3Bl Y2lmaWNhbGx5IGNhbGxlZCBvdXQgaW4gdGhlIGJ1ZyByZXBvcnQgaXMgdGhhdAorbmFtZXNwYWNl cyBjYW4gYXBwZWFyIGluIG11bHRpcGxlIENVcywgYW5kIHRoYXQgdHJ5aW5nIHRvIGNvbXBsZXRl CisnbnM6Om1pc3NwZWxsZWQnIHdvdWxkIGV4cGFuZCBldmVyeSBDVSBjb250YWluaW5nIG5hbWVz cGFjZSAnbnMnIGR1ZQordG8gdGhlIGR1cGxpY2F0ZSAnbnMnIHR5cGUgc3ltYm9scy4KKworVGhl IHdvcmsgYXJvdW5kIHRoYXQgd2FzIGFkZGVkIGluIDg5NDNiODc0NzYwZDljZjMgd2FzIHRvIGln bm9yZQorZHVwbGljYXRlIGdsb2JhbCBzeW1ib2xzIHdoZW4gZXhwYW5kaW5nIGVudHJpZXMgZnJv bSB0aGUgaW5kZXguICBJbgorY29tbWl0IGYwMzA0NDBkYWE5ODlhZTMgdGhpcyB3b3JrIGFyb3Vu ZCB3YXMgcmVzdHJpY3RlZCB0byBvbmx5IGlnbm9yZQorZHVwbGljYXRlIHR5cGUgZW50cmllcy4g IFRoaXMgcmVzdHJpY3Rpb24gd2FzIHJlcXVpcmVkIHRvIGFsbG93IHRoZQorZWFybGllciBkZS1k dXBsaWNhdGlvbiBwYXRjaCBhZWYzNmRlZTkzYmYxOTRjIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4K KworTm93IHRoYXQgSSdtIHRha2luZyB0aGUgd29yayBzdGFydGVkIGluIGFlZjM2ZGVlOTNiZjE5 NGMgdG8gaXRzCitsb2dpY2FsIGNvbmNsdXNpb24sIGFuZCBhbGxvd2luZyBkdXBsaWNhdGUgdHlw ZSBlbnRyaWVzLCB0aGUgd29yaworYXJvdW5kIG9mIGlnbm9yaW5nIGR1cGxpY2F0ZSBnbG9iYWwg dHlwZSBzeW1ib2xzIGlzIG5vIGxvbmdlciBuZWVkZWQsCithbmQgY2FuIGJlIHJlbW92ZWQuCisK K1RoZSBhc3NvY2lhdGVkIHRlc3QgZm9yIHRoaXMsIGFkZGVkIGluIDQwZDIyMDM1YTdmYzIzOWEs IGlzIGFsc28KK3JlbW92ZWQgaW4gdGhpcyBjb21taXQuCisKK1RvIGJlIGNsZWFyOyB0aGUgcGVy Zm9ybWFuY2UgaXNzdWUgbWVudGlvbmVkIGluIFBSIGdvbGQvMTU2NDYgaXMgbm93CitiYWNrIGFn YWluLiAgQnV0IG15IGNsYWltIGlzIHRoYXQgZ29sZCB3YXMgcmlnaHQgYWxsIGFsb25nIHRvIGlu Y2x1ZGUKK3RoZSBkdXBsaWNhdGUgaW5kZXggZW50cmllcywgYW5kIGFueSBwZXJmb3JtYW5jZSBo aXQgd2Ugc2VlIGFzIGEKK3Jlc3VsdCwgdGhvdWdoIHVuZm9ydHVuYXRlLCBpcyBqdXN0IGEgY29u c2VxdWVuY2Ugb2YgZG9pbmcgaXQgcmlnaHQuCisKK1RoYXQgZG9lc24ndCBtZWFuIHRoZXJlJ3Mg bm90IHJvb20gZm9yIG9wdGltaXNhdGlvbiBhbmQgaW1wcm92ZW1lbnQgaW4KK3RoZSBmdXR1cmUs IHRob3VnaCBJIGRvbid0IGhhdmUgYW55IGltbWVkaWF0ZSBpZGVhcywgb3IgcGxhbnMgaW4gdGhp cworYXJlYS4gIEl0J3MganVzdCB3ZSBjYW4ndCB0aHJvdyBvdXQgYSBidW5jaCBvZiBpbmRleCBl bnRyaWVzIHRoYXQgYXJlCitjcml0aWNhbCwgYW5kIGNsYWltIHRoaXMgYXMgYSBwZXJmb3JtYW5j ZSBvcHRpbWlzYXRpb24uCisKK0kgYW0gc2VlaW5nIHNvbWUgZmFpbHVyZSB3aXRoIHRoaXMgcGF0 Y2ggd2hlbiB1c2luZyB0aGUgYm9hcmQgZmlsZQorZHdhcmY1LWZpc3Npb24tZGVidWctdHlwZXMu ICBUaGVzZSBmYWlsdXJlcyBhbGwgaGF2ZSB0aGUgZXJyb3I6CisKKyAgRFdBUkYgRXJyb3I6IHdy b25nIHVuaXRfdHlwZSBpbiB1bml0IGhlYWRlciAoaXMgRFdfVVRfc2tlbGV0b24sIHNob3VsZCBi ZSBEV19VVF90eXBlKSBbaW4gbW9kdWxlIC4uLi5dCisKK0hvd2V2ZXIsIEkgcmFuIHRoZSB3aG9s ZSB0ZXN0c3VpdGUgd2l0aCB0aGlzIGJvYXJkLCBhbmQgdGhpcyBlcnJvcgorY3JvcHMgdXAgb2Z0 ZW4sIHNvIEkgZG9uJ3QgdGhpbmsgdGhpcyBpcyBzb21ldGhpbmcgc3BlY2lmaWMgdG8gbXkKK3Bh dGNoLCBzbyBJJ20gY2hvb3NpbmcgdG8gaWdub3JlIHRoaXMuCisKK0J1ZzogaHR0cHM6Ly9zb3Vy Y2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTU2NDYKK0J1ZzogaHR0cHM6Ly9z b3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTUwMzUKKworQXBwcm92ZWQt Qnk6IFRvbSBUcm9tZXkgPHRvbUB0cm9tZXkuY29tPgorCitVcHN0cmVhbSBjb21taXQ6IGMwOWVi ZWUwZDNhZTkxNDhlMzNhYTg2MWNiZDg1N2JmMmQ0MTAwYmEKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitnZGI6IHN5bWJvbF9zZWFy Y2ggb2JqZWN0cyBvZiBkaWZmZXJlbnQgdHlwZXMgYXJlIG5vdCB0aGUgc2FtZQorCitDb25zaWRl ciB0aGUgQyBjb25zdHJ1Y3Q6CisKKyAgdHlwZWRlZiBzdHJ1Y3QgZm9vCisgIHsKKyAgICBpbnQg YTsKKyAgICBpbnQgYjsKKyAgfSBmb287CisKK0dEQiB3aWxsIHNlZSB0d28gdHlwZXMgaGVyZSwg J3N0cnVjdCBmb28nIGFuZCB0aGUgdHlwZWRlZiAnZm9vJy4KK0hvd2V2ZXIsIGlmIHdlIHVzZSAn aW5mbyB0eXBlcyBmb28nIHdlIHdpbGwgc2VlIHRoaXM6CisKKyAgRmlsZSB0ZXN0LmM6CisgIDE4 OglzdHJ1Y3QgZm9vOworCitBdCBsZWFzdCB0aGF0J3Mgd2hhdCBJIHNlZSB3aXRoIGN1cnJlbnQg SEVBRCBvZiBtYXN0ZXIuICBIb3dldmVyLCBpdAoraXMgcmVhbGx5IGp1c3QgbHVjayB0aGF0IHdl IHNlZSB0aGUgJ3N0cnVjdCcgaGVyZS4gIFNlZSBtb3JlIGJlbG93LgorCitXaGVuIHNlYXJjaGlu ZyBmb3Igc3ltYm9scyBtYXRjaGluZyAnZm9vJyBHREIgZW5kcyB1cCBpbiB0aGUgZnVuY3Rpb24K K2dsb2JhbF9zeW1ib2xfc2VhcmNoZXI6OmFkZF9tYXRjaGluZ19zeW1ib2xzLCB3aGVyZSB3ZSBj b25zaWRlciBhbGwKK3Bvc3NpYmxlIG1hdGNoaW5nIHN5bWJvbHMuICBUaGlzIHdpbGwgaW5jbHVk ZSB0aGUgJ3N0cnVjdCBmb28nIGFuZCB0aGUKK3R5cGVkZWYgJ2ZvbycuICBIb3dldmVyLCBiZWZv cmUgYSBuZXcgc3ltYm9scyBpcyBhZGRlZCB0byB0aGUgcmVzdWx0cywKK3dlIGF0dGVtcHQgdG8g cmVtb3ZlIGR1cGxpY2F0ZXMgd2l0aCB0aGlzIGNvZGU6CisKKyAgLyogTWF0Y2gsIGluc2VydCBp ZiBub3QgYWxyZWFkeSBpbiB0aGUgcmVzdWx0cy4gICovCisgIHN5bWJvbF9zZWFyY2ggc3MgKGJs b2NrLCBzeW0pOworICBpZiAocmVzdWx0X3NldC0+ZmluZCAoc3MpID09IHJlc3VsdF9zZXQtPmVu ZCAoKSkKKyAgICByZXN1bHRfc2V0LT5pbnNlcnQgKHNzKTsKKworSWYgYSBzeW1ib2wgaXMgYWxy ZWFkeSBwcmVzZW50IGluIHJlc3VsdF9zZXQgdGhlbiBpdCB3aWxsIG5vdCBiZSBhZGRlZAorYSBz ZWNvbmQgdGltZS4KKworVGhlIHN5bWJvbF9zZWFyY2ggZXF1YWxpdHkgY2hlY2sgaXMgZG9uZSB1 c2luZyB0aGUgZnVuY3Rpb24KK3N5bWJvbF9zZWFyY2g6OmNvbXBhcmVfc2VhcmNoX3N5bXMsIHRo aXMgZnVuY3Rpb24gZG9lcyBhIG51bWJlciBvZgorY2hlY2tzLCBidXQgYXQgdGhlIGVuZCwgYW55 IHR3byBzeW1ib2xzIHRoYXQgYXJlIGluIHRoZSBzYW1lIGJsb2NrCit3aXRoaW4gdGhlIHNhbWUg ZmlsZSwgd2l0aCB0aGUgc2FtZSBuYW1lLCBhcmUgY29uc2lkZXJlZCB0aGUgc2FtZSwKK2V2ZW4g aWYgdGhlIHR5cGVzIG9mIHRob3NlIHN5bWJvbHMgYXJlIGRpZmZlcmVudC4KKworVGhpcyBtYWtl cyBzZW5zZSBpbiBtb3N0IGNhc2VzLCBpdCB1c3VhbGx5IHdvdWxkbid0IG1ha2Ugc2Vuc2UgdG8g aGF2ZQordHdvIHN5bWJvbHMgd2l0aGluIGEgc2luZ2xlIGJsb2NrIHdpdGggZGlmZmVyZW50IHR5 cGVzLiAgQnV0IHRoZQorJ3N0cnVjdCBmb28nIGFuZCB0eXBlZGVmICdmb28nIGNhc2UgaXMgYSBi aXQgb2YgYSBzdHJhbmdlIG9uZS4gIFdpdGhpbgorRFdBUkYgYW5kIEdEQiB3ZSBjb25zaWRlciBi b3RoIG9mIHRoZXNlIGFzIGp1c3QgdHlwZXMuICBCdXQgaW4gQwordHlwZXMgYW5kIHN0cnVjdHVy ZSBuYW1lcyBsaXZlIGluIGRpZmZlcmVudCBuYW1lc3BhY2VzLCBhbmQgc28gd2UgY2FuCitoYXZl IGJvdGggaW4gdGhlIHNhbWUgYmxvY2suICBJIGRvbid0IHRoaW5rIHRoYXQgR0RCIHNob3VsZCBj b25zaWRlcgordGhlc2UgdHdvIGFzIHRoZSBzYW1lLCBlc3BlY2lhbGx5IGlmIHdlIGNvbnNpZGVy IHNvbWV0aGluZyByZWFsbHkKK2lsbC1hZHZpc2VkIGxpa2UgdGhpczoKKworICBzdHJ1Y3QgZm9v CisgIHsKKyAgICBpbnQgYTsKKyAgICBpbnQgYjsKKyAgfTsKKworICB0eXBlZGVmIGludCBmb287 CisKK1RoaXMgaXMgcGVyZmVjdGx5IHZhbGlkIEMgY29kZSwgJ3N0cnVjdCBmb28nIGFuZCB0aGUg dHlwZWRlZiAnZm9vJyBhcmUKK2luIGRpZmZlcmVudCBuYW1lc3BhY2VzLCBhbmQgY2FuIGJlIHVz ZWQgd2l0aGluIHRoZSBzYW1lIGJsb2NrLiAgQnV0CitwbGVhc2UsIG5ldmVyIHdyaXRlIEMgY29k ZSBsaWtlIHRoaXMuCisKK0dpdmVuIHRoZSBhYm92ZSwgSSB0aGluaywgd2hlbiBhc2tlZCBhYm91 dCAnZm9vJywgR0RCIHNob3VsZCwgcmVwb3J0Citib3RoICdzdHJ1Y3QgZm9vJyBhbmQgdGhlIHR5 cGVkZWYgJ2ZvbycuCisKK1RvIGRvIHRoaXMgSSBwcm9wb3NlIGV4dGVuZGluZyBzeW1ib2xfc2Vh cmNoOjpjb21wYXJlX3NlYXJjaF9zeW1zIHN1Y2gKK3RoYXQgaWYgdHdvIHN5bWJvbF9zZWFyY2gg b2JqZWN0cyBhcmUgaW4gdGhlIHNhbWUgYmxvY2ssIHdpdGhpbiB0aGUKK3NhbWUgZmlsZSwgYW5k IHRoZXkgaGF2ZSB0aGUgc2FtZSBuYW1lLCB0aGVuIGlmIGp1c3Qgb25lIG9mIHRoZW0gaXMgYQor dHlwZWRlZiwgdGhlIHR3byBvYmplY3RzIHdpbGwgbm90IGJlIGNvbnNpZGVyZWQgZXF1YWwuICBU aGUgcmVzdWx0cword2lsbCBiZSBzb3J0ZWQgYnkgbGluZSBudW1iZXIgaWYgdGhlIGxpbmUgbnVt YmVycyBhcmUgZGlmZmVyZW50LCBvciwKK2lmIHRoZSBsaW5lIG51bWJlcnMgYXJlIHRoZSBzYW1l LCB0aGUgbm9uLXR5cGVkZWYgd2lsbCBiZSBzb3J0ZWQKK2ZpcnN0LiAgVGhpcyBtZWFucyB0aGF0 IGZvciBzb21ldGhpbmcgbGlrZSB0aGlzOgorCisgIHR5cGVkZWYgc3RydWN0IGZvbyB7IGludCBh OyB9IGZvbzsKKworV2UnbGwgZ2V0IGFuICdpbmZvIHR5cGVzIGZvbycgcmVzdWx0IGxpa2U6CisK KyAgRmlsZSB0ZXN0LmM6CisgIDE4OglzdHJ1Y3QgZm9vOworICAxODoJdHlwZWRlZiBzdHJ1Y3Qg Zm9vIGZvbzsKKworSSBtZW50aW9uZWQgZWFybGllciB0aGF0IGl0IGlzIHJlYWxseSBqdXN0IGx1 Y2sgdGhhdCB3ZSBzZWUgJ3N0cnVjdAorZm9vJy4gIEkgcmFuIGludG8gdGhpcyBwcm9ibGVtIHdo aWxlIHdvcmtpbmcgb24gYW5vdGhlciBwYXRjaC4gIFdoZW4KK3Rlc3Rpbmcgd2l0aCB0aGUgJ2Rl YnVnLXR5cGVzJyBib2FyZCBmaWxlIEkgd2FzIHNlZWluZyB0aGUgdHlwZWRlZgorYmVpbmcgcmVw b3J0ZWQgcmF0aGVyIHRoYW4gdGhlIHN0cnVjdC4gIEluICJub3JtYWwiIERXQVJGIGdpdmVuIHRo ZQorJ3R5cGVkZWYgc3RydWN0IGZvbyB7IC4uLn0gZm9vOycgY29uc3RydWN0LCB0aGUgY29tcGls ZXIgd2lsbCB1c3VhbGx5CitlbWl0IHRoZSBzdHJ1Y3QgZGVmaW5pdGlvbiBmaXJzdCwgYW5kIHRo ZW4gdGhlIHR5cGVkZWYgZGVmaW5pdGlvbi4gIFNvCit3aGVuIEdEQiBwYXJzZXMgdGhlIERXQVJG IGl0IHNlZXMgdGhlIHN0cnVjdCBmaXJzdC4gIEl0IGlzIHRoZSB0eXBlZGVmCit0aGF0IGJlY29t ZXMgdGhlIGR1cGxpY2F0ZSB3aGljaCBpcyBub3QgYWRkZWQgdG8gdGhlIHJlc3VsdHMgbGlzdC4K KworQnV0IHdpdGggdGhlICdkZWJ1Zy10eXBlcycgYm9hcmQgdGhlIGNvbXBpbGVyIG1vdmVzIHRo ZSBzdHJ1Y3QKK2RlZmluaXRpb24gb3V0IHRvIHRoZSAuZGVidWdfdHlwZXMgc2VjdGlvbi4gIEFu ZCBHREIgbm93IHBhcnNlcyB0aGUgQ1UKK2NvbnRhaW5pbmcgdGhlIHR5cGVkZWYgZmlyc3QsIGFu ZCB0aGVuIGV4cGFuZHMgdGhlIHN0cnVjdHVyZQorZGVmaW5pdGlvbiBmcm9tIHRoZSBzZXBhcmF0 ZSBzZWN0aW9uIGFmdGVyd2FyZHMuICBBcyBhIHJlc3VsdCwgaXQgaXMKK3RoZSBzdHJ1Y3R1cmUg dGhhdCBpcyBub3cgY29uc2lkZXJlZCB0aGUgZHVwbGljYXRlLCBhbmQgdGhlIHR5cGVkZWYgaXMK K3RoZSByZXN1bHQgdGhhdCBnZXRzIHJlcG9ydGVkLgorCitJIHRoaW5rIHRoaXMgaXMgeWV0IGFu b3RoZXIgbW90aXZhdGlvbiBmb3IgdGhpcyBwYXRjaC4gIENoYW5nZXMgbGlrZQordGhpcyAodGhl IHVzZSBvZiAuZGVidWdfdHlwZXMgc2VjdGlvbikgc2hvdWxkbid0IGltcGFjdCB3aGF0IHJlc3Vs dHMKK0dEQiBzaG93cyB0byB0aGUgdXNlci4KKworVGhlcmUgaXMgYW4gaW50ZXJlc3RpbmcgdXBk YXRlIHRvIHRoZSBnZGIuYmFzZS9pbmZvLXR5cGVzLmV4cC50Y2wgdGVzdAorc2NyaXB0LiAgSW4g dGhpcyBjYXNlIHRoZSBDIHJlc3VsdHMgb25seSBuZWVkZWQgdG8gY2hhbmdlIHRvIGluY2x1ZGUK K3RoZSB0eXBlZGVmLiAgVGhlIEMrKyByZXN1bHRzIGFscmVhZHkgaW5jbHVkZWQgYm90aCB0aGUg c3RydWN0IGFuZCB0aGUKK3R5cGVkZWYgaW4gdGhlIGV4cGVjdGVkIHJlc3VsdHMuICBUaGUgcmVh c29uIGZvciB0aGlzIGlzIHRoYXQgQyBwbGFjZXMKK2JvdGggdGhlIHN0cnVjdCBiYXpfdCBhbmQg dGhlIHR5cGVkZWYgZm9yIGJhel90IGludG8gdGhlIGdsb2JhbCBibG9jaywKK3doaWxlIEMrKyBw bGFjZXMgdGhlIHN0cnVjdCBpbiB0aGUgZ2xvYmFsIGJsb2NrLCBhbmQgdGhlIHR5cGVkZWYgaW50 bwordGhlIHN0YXRpYyBibG9jay4gIEkgaGF2ZSBubyBpZGVhIHdoeSB0aGVyZSdzIGEgZGlmZmVy ZW5jZSBpbiB0aGUKK3BsYWNlbWVudCwgYnV0IEknbSBjaG9vc2luZyB0byBiZWxpZXZlIHRoZSBk aWZmZXJlbmNlIGlzIGNvcnJlY3QuICBCdXQKK3RoaXMgZXhwbGFpbnMgd2h5IG9ubHkgdGhlIEMg cmVzdWx0cyBuZWVkZWQgdG8gY2hhbmdlLiAgSWYgYW55dGhpbmcKK3RoaXMgKEkgdGhpbmspIGlz IHlldCBhbm90aGVyIGp1c3RpZmljYXRpb24gZm9yIHRoaXMgY2hhbmdlOyBoYXZpbmcgQworbm90 IHNob3cgdGhlIHR5cGVkZWYgaW4gdGhpcyBjYXNlIHNlZW1zIHdlaXJkIHdoZW4gdGhlIHNhbWUg c291cmNlCitjb2RlIGNvbXBpbGVkIGFzIEMrKyBkb2VzIHNob3cgdGhlIHR5cGVkZWYuCisKK0Fw cHJvdmVkLUJ5OiBUb20gVHJvbWV5IDx0b21AdHJvbWV5LmNvbT4KKworZGlmZiAtLWdpdCBhL2dk Yi9ORVdTIGIvZ2RiL05FV1MKKy0tLSBhL2dkYi9ORVdTCisrKysgYi9nZGIvTkVXUworQEAgLTYx LDYgKzYxLDExIEBACisgICB0cmFuc2xhdGlvbiBtb2RlIG9mIGl0cyBzdGRvdXQvc3RkZXJyIHRv IGJpbmFyeSBtb2RlLiAgVGhpcyBkaXNhYmxlcworICAgTGluZSBGZWVkIHRyYW5zbGF0aW9uLiAg TVMtV2luZG93cyBvbmx5LgorIAorKyogR0RCIG5vdyBhZGRzIGFsbCB0eXBlIHN5bWJvbHMgdG8g dGhlIC5nZGJfaW5kZXggc2VjdGlvbi4gIFRoZSBpbmRleAorKyAgdmVyc2lvbiBudW1iZXIgaGFz IG5vdCBpbmNyZWFzZWQgYXMgYSBjb25zZXF1ZW5jZSBvZiB0aGlzIGNoYW5nZS4KKysgIFRoaXMg Zml4ZXMgYW4gaXNzdWUgd2hlcmUgR0RCIGNvdWxkIGZhaWwgdG8gZmluZCBhIHR5cGUgd2hlbiBy ZWx5aW5nCisrICBvbiB0aGUgaW5kZXguICBBbnkgZXhpc3RpbmcgaW5kZXhlcyBzaG91bGQgYmUg cmVnZW5lcmF0ZWQuCisrCisgKiBOZXcgY29tbWFuZHMKKyAKKyBtYWludGVuYW5jZSBjaGVjayBw c3ltdGFicworZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvaW5kZXgtd3JpdGUuYyBiL2dkYi9kd2Fy ZjIvaW5kZXgtd3JpdGUuYworLS0tIGEvZ2RiL2R3YXJmMi9pbmRleC13cml0ZS5jCisrKysgYi9n ZGIvZHdhcmYyL2luZGV4LXdyaXRlLmMKK0BAIC01NSw3ICs1NSw3IEBACisgI2RlZmluZSBEVzJf R0RCX0lOREVYX1NZTUJPTF9LSU5EX1NFVF9WQUxVRShjdV9pbmRleCwgdmFsdWUpIFwKKyAgIGRv IHsgXAorICAgICBnZGJfYXNzZXJ0ICgodmFsdWUpID49IEdEQl9JTkRFWF9TWU1CT0xfS0lORF9U WVBFIFwKKy0JCSYmICh2YWx1ZSkgPD0gR0RCX0lOREVYX1NZTUJPTF9LSU5EX09USEVSKTsgXAor KwkJJiYgKHZhbHVlKSA8IEdEQl9JTkRFWF9TWU1CT0xfS0lORF9VTlVTRUQ1KTsgXAorICAgICBH REJfSU5ERVhfU1lNQk9MX0tJTkRfU0VUX1ZBTFVFKChjdV9pbmRleCksICh2YWx1ZSkpOyBcCisg ICB9IHdoaWxlICgwKQorIAorQEAgLTE4NCw5ICsxODQsOCBAQCBzdHJ1Y3Qgc3ltdGFiX2luZGV4 X2VudHJ5CisgICAgICBvZiB0aGlzIG5hbWUuICAqLworICAgc3RkOjp2ZWN0b3I8b2Zmc2V0X3R5 cGU+IGN1X2luZGljZXM7CisgCistICAvKiBNaW5pbWl6ZSBDVV9JTkRJQ0VTLCBzb3J0aW5nIHRo ZW0gYW5kIHJlbW92aW5nIGR1cGxpY2F0ZXMgYXMKKy0gICAgIGFwcHJvcHJpYXRlLiAgKi8KKy0g IHZvaWQgbWluaW1pemUgKCk7CisrICAvKiBTb3J0IENVX0lORElDRVMuICAqLworKyAgdm9pZCBz b3J0ICgpOworIH07CisgCisgLyogVGhlIHN5bWJvbCB0YWJsZS4gIFRoaXMgaXMgYSBwb3dlci1v Zi0yLXNpemVkIGhhc2ggdGFibGUuICAqLworQEAgLTE5OCwxNiArMTk3LDE2IEBAIHN0cnVjdCBt YXBwZWRfc3ltdGFiCisgICB9CisgCisgICAvKiBJZiB0aGVyZSBhcmUgbm8gZWxlbWVudHMgaW4g dGhlIHN5bWJvbCB0YWJsZSwgdGhlbiByZWR1Y2UgdGhlIHRhYmxlCistICAgICBzaXplIHRvIHpl cm8uICBPdGhlcndpc2UgY2FsbCBzeW10YWJfaW5kZXhfZW50cnk6Om1pbmltaXplIGVhY2ggZW50 cnkKKysgICAgIHNpemUgdG8gemVyby4gIE90aGVyd2lzZSBjYWxsIHN5bXRhYl9pbmRleF9lbnRy eTo6c29ydCBlYWNoIGVudHJ5CisgICAgICBpbiB0aGUgc3ltYm9sIHRhYmxlLiAgKi8KKyAKKy0g IHZvaWQgbWluaW1pemUgKCkKKysgIHZvaWQgbWluaW1pemVfYW5kX3NvcnQgKCkKKyAgIHsKKyAg ICAgaWYgKG1fZWxlbWVudF9jb3VudCA9PSAwKQorICAgICAgIG1fZGF0YS5yZXNpemUgKDApOwor IAorICAgICBmb3IgKHN5bXRhYl9pbmRleF9lbnRyeSAmaXRlbSA6IG1fZGF0YSkKKy0gICAgICBp dGVtLm1pbmltaXplICgpOworKyAgICAgIGl0ZW0uc29ydCAoKTsKKyAgIH0KKyAKKyAgIC8qIEFk ZCBhbiBlbnRyeSB0byBTWU1UQUIuICBOQU1FIGlzIHRoZSBuYW1lIG9mIHRoZSBzeW1ib2wuICBD VV9JTkRFWCBpcworQEAgLTQxNywzMiArNDE2LDE5IEBAIG1hcHBlZF9zeW10YWI6OmFkZF9pbmRl eF9lbnRyeSAoY29uc3QgY2hhciAqbmFtZSwgaW50IGlzX3N0YXRpYywKKyAvKiBTZWUgc3ltdGFi X2luZGV4X2VudHJ5LiAgKi8KKyAKKyB2b2lkCistc3ltdGFiX2luZGV4X2VudHJ5OjptaW5pbWl6 ZSAoKQorK3N5bXRhYl9pbmRleF9lbnRyeTo6c29ydCAoKQorIHsKKyAgIGlmIChuYW1lID09IG51 bGxwdHIgfHwgY3VfaW5kaWNlcy5lbXB0eSAoKSkKKyAgICAgcmV0dXJuOworIAorLSAgc3RkOjpz b3J0IChjdV9pbmRpY2VzLmJlZ2luICgpLCBjdV9pbmRpY2VzLmVuZCAoKSk7CisrICAvKiBTb3J0 IHRoZSBlbnRyaWVzIGJhc2VkIG9uIHRoZSBDVSBvZmZzZXQuICAqLworKyAgc3RkOjpzb3J0IChj dV9pbmRpY2VzLmJlZ2luICgpLCBjdV9pbmRpY2VzLmVuZCAoKSwKKysJICAgICBbXSAob2Zmc2V0 X3R5cGUgdmFsYSwgb2Zmc2V0X3R5cGUgdmFsYikKKysJICAgICAgIHsKKysJCSByZXR1cm4gdmFs YSA8IHZhbGI7CisrCSAgICAgICB9KTsKKyAgIGF1dG8gZnJvbSA9IHN0ZDo6dW5pcXVlIChjdV9p bmRpY2VzLmJlZ2luICgpLCBjdV9pbmRpY2VzLmVuZCAoKSk7CisgICBjdV9pbmRpY2VzLmVyYXNl IChmcm9tLCBjdV9pbmRpY2VzLmVuZCAoKSk7CistCistICAvKiBXZSBkb24ndCB3YW50IHRvIGVu dGVyIGEgdHlwZSBtb3JlIHRoYW4gb25jZSwgc28KKy0gICAgIHJlbW92ZSBhbnkgc3VjaCBkdXBs aWNhdGVzIGZyb20gdGhlIGxpc3QgYXMgd2VsbC4gIFdoZW4gZG9pbmcKKy0gICAgIHRoaXMsIHdl IHdhbnQgdG8ga2VlcCB0aGUgZW50cnkgZnJvbSB0aGUgZmlyc3QgQ1UgLS0gYnV0IHRoaXMgaXMK Ky0gICAgIGltcGxpY2l0IGR1ZSB0byB0aGUgc29ydC4gIFRoaXMgY2hvaWNlIGlzIGRvbmUgYmVj YXVzZSBpdCdzCistICAgICBzaW1pbGFyIHRvIHdoYXQgZ2RiIGhpc3RvcmljYWxseSBkaWQgZm9y IHBhcnRpYWwgc3ltYm9scy4gICovCistICBnZGI6OnVub3JkZXJlZF9zZXQ8b2Zmc2V0X3R5cGU+ IHNlZW47CistICBmcm9tID0gc3RkOjpyZW1vdmVfaWYgKGN1X2luZGljZXMuYmVnaW4gKCksIGN1 X2luZGljZXMuZW5kICgpLAorLQkJCSBbJl0gKG9mZnNldF90eXBlIHZhbCkKKy0gICAgeworLSAg ICAgIGdkYl9pbmRleF9zeW1ib2xfa2luZCBraW5kID0gR0RCX0lOREVYX1NZTUJPTF9LSU5EX1ZB TFVFICh2YWwpOworLSAgICAgIGlmIChraW5kICE9IEdEQl9JTkRFWF9TWU1CT0xfS0lORF9UWVBF KQorLQlyZXR1cm4gZmFsc2U7CistCistICAgICAgdmFsICY9IH5HREJfSU5ERVhfQ1VfTUFTSzsK Ky0gICAgICByZXR1cm4gIXNlZW4uaW5zZXJ0ICh2YWwpLnNlY29uZDsKKy0gICAgfSk7CistICBj dV9pbmRpY2VzLmVyYXNlIChmcm9tLCBjdV9pbmRpY2VzLmVuZCAoKSk7CisgfQorIAorIC8qIEEg Zm9ybSBvZiAnY29uc3QgY2hhciAqJyBzdWl0YWJsZSBmb3IgY29udGFpbmVyIGtleXMuICBPbmx5 IHRoZQorQEAgLTEyMTIsNiArMTE5OCwyMSBAQCB3cml0ZV9jb29rZWRfaW5kZXggKGNvb2tlZF9p bmRleCAqdGFibGUsCisgCQkgICAgY29uc3QgY3VfaW5kZXhfbWFwICZjdV9pbmRleF9odGFiLAor IAkJICAgIHN0cnVjdCBtYXBwZWRfc3ltdGFiICpzeW10YWIpCisgeworKyAgZ2RiOjp1bm9yZGVy ZWRfc2V0PGNvbnN0IGNvb2tlZF9pbmRleF9lbnRyeSAqPiByZXF1aXJlZF9kZWNsX2VudHJpZXM7 CisrICBmb3IgKGNvbnN0IGNvb2tlZF9pbmRleF9lbnRyeSAqZW50cnkgOiB0YWJsZS0+YWxsX2Vu dHJpZXMgKCkpCisrICAgIHsKKysgICAgICAvKiBBbnkgdHlwZSBkZWNsYXJhdGlvbiB0aGF0IGlz IHVzZWQgYXMgYSAobm9uLXRyaXZpYWwpIHBhcmVudAorKwkgZW50cnkgbXVzdCBiZSB3cml0dGVu IG91dC4gICovCisrICAgICAgaWYgKChlbnRyeS0+ZmxhZ3MgJiBJU19UWVBFX0RFQ0xBUkFUSU9O KSA9PSAwKQorKwl7CisrCSAgZm9yIChjb25zdCBjb29rZWRfaW5kZXhfZW50cnkgKnBhcmVudCA9 IGVudHJ5LT5nZXRfcGFyZW50ICgpOworKwkgICAgICAgcGFyZW50ICE9IG51bGxwdHI7CisrCSAg ICAgICBwYXJlbnQgPSBwYXJlbnQtPmdldF9wYXJlbnQgKCkpCisrCSAgICBpZiAoKHBhcmVudC0+ ZmxhZ3MgJiBJU19UWVBFX0RFQ0xBUkFUSU9OKSAhPSAwKQorKwkgICAgICByZXF1aXJlZF9kZWNs X2VudHJpZXMuaW5zZXJ0IChwYXJlbnQpOworKwl9CisrICAgIH0KKysKKyAgIGZvciAoY29uc3Qg Y29va2VkX2luZGV4X2VudHJ5ICplbnRyeSA6IHRhYmxlLT5hbGxfZW50cmllcyAoKSkKKyAgICAg eworICAgICAgIGNvbnN0IGF1dG8gaXQgPSBjdV9pbmRleF9odGFiLmZpbmQgKGVudHJ5LT5wZXJf Y3UpOworQEAgLTEyMzcsMTEgKzEyMzgsMTAgQEAgd3JpdGVfY29va2VkX2luZGV4IChjb29rZWRf aW5kZXggKnRhYmxlLAorIAkgICAgIGJlIHJlZHVuZGFudCBhcmUgcmFyZSBhbmQgbm90IHdvcnRo IHN1cHBvcnRpbmcuICAqLworIAkgIGNvbnRpbnVlOworIAl9CistICAgICAgZWxzZSBpZiAoKGVu dHJ5LT5mbGFncyAmIElTX1RZUEVfREVDTEFSQVRJT04pICE9IDApCistCXsKKy0JICAvKiBEb24n dCBhZGQgdHlwZSBkZWNsYXJhdGlvbnMgdG8gdGhlIGluZGV4LiAgKi8KKy0JICBjb250aW51ZTsK Ky0JfQorKyAgICAgIC8qIERvbid0IGFkZCBtb3N0IHR5cGUgZGVjbGFyYXRpb25zIHRvIHRoZSBp bmRleC4gICovCisrICAgICAgZWxzZSBpZiAoKGVudHJ5LT5mbGFncyAmIElTX1RZUEVfREVDTEFS QVRJT04pICE9IDAKKysJICAgICAgICYmICFyZXF1aXJlZF9kZWNsX2VudHJpZXMuY29udGFpbnMg KGVudHJ5KSkKKysJY29udGludWU7CisgCisgICAgICAgZ2RiX2luZGV4X3N5bWJvbF9raW5kIGtp bmQ7CisgICAgICAgaWYgKGVudHJ5LT50YWcgPT0gRFdfVEFHX3N1YnByb2dyYW0KK0BAIC0xMzk0 LDcgKzEzOTQsNyBAQCB3cml0ZV9nZGJpbmRleCAoZHdhcmYyX3Blcl9iZmQgKnBlcl9iZmQsIGNv b2tlZF9pbmRleCAqdGFibGUsCisgCisgICAvKiBOb3cgdGhhdCB3ZSd2ZSBwcm9jZXNzZWQgYWxs IHN5bWJvbHMgd2UgY2FuIHNocmluayB0aGVpciBjdV9pbmRpY2VzCisgICAgICBsaXN0cy4gICov CistICBzeW10YWIubWluaW1pemUgKCk7CisrICBzeW10YWIubWluaW1pemVfYW5kX3NvcnQgKCk7 CisgCisgICBkYXRhX2J1ZiBzeW10YWJfdmVjLCBjb25zdGFudF9wb29sOworIAorZGlmZiAtLWdp dCBhL2dkYi9kd2FyZjIvcmVhZC1nZGItaW5kZXguYyBiL2dkYi9kd2FyZjIvcmVhZC1nZGItaW5k ZXguYworLS0tIGEvZ2RiL2R3YXJmMi9yZWFkLWdkYi1pbmRleC5jCisrKysgYi9nZGIvZHdhcmYy L3JlYWQtZ2RiLWluZGV4LmMKK0BAIC0xMDQxLDcgKzEwNDEsNiBAQCBkdzJfZXhwYW5kX21hcmtl ZF9jdXMgKGR3YXJmMl9wZXJfb2JqZmlsZSAqcGVyX29iamZpbGUsIG9mZnNldF90eXBlIGlkeCwK KyAJCSAgICAgICBleHBhbmRfc3ltdGFic19sYW5nX21hdGNoZXIgbGFuZ19tYXRjaGVyKQorIHsK KyAgIG9mZnNldF90eXBlIHZlY19sZW4sIHZlY19pZHg7CistICBib29sIGdsb2JhbF9zZWVuID0g ZmFsc2U7CisgICBtYXBwZWRfZ2RiX2luZGV4ICZpbmRleAorICAgICA9ICooZ2RiOjpjaGVja2Vk X3N0YXRpY19jYXN0PG1hcHBlZF9nZGJfaW5kZXggKj4KKyAJKHBlcl9vYmpmaWxlLT5wZXJfYmZk LT5pbmRleF90YWJsZS5nZXQgKCkpKTsKK0BAIC0xMDY0LDE3ICsxMDYzLDYgQEAgZHcyX2V4cGFu ZF9tYXJrZWRfY3VzIChkd2FyZjJfcGVyX29iamZpbGUgKnBlcl9vYmpmaWxlLCBvZmZzZXRfdHlw ZSBpZHgsCisgCShpbmRleC52ZXJzaW9uID49IDcKKyAJICYmIHN5bWJvbF9raW5kICE9IEdEQl9J TkRFWF9TWU1CT0xfS0lORF9OT05FKTsKKyAKKy0gICAgICAvKiBXb3JrIGFyb3VuZCBnb2xkLzE1 NjQ2LiAgKi8KKy0gICAgICBpZiAoYXR0cnNfdmFsaWQKKy0JICAmJiAhaXNfc3RhdGljCistCSAg JiYgc3ltYm9sX2tpbmQgPT0gR0RCX0lOREVYX1NZTUJPTF9LSU5EX1RZUEUpCistCXsKKy0JICBp ZiAoZ2xvYmFsX3NlZW4pCistCSAgICBjb250aW51ZTsKKy0KKy0JICBnbG9iYWxfc2VlbiA9IHRy dWU7CistCX0KKy0KKyAgICAgICAvKiBPbmx5IGNoZWNrIHRoZSBzeW1ib2wncyBraW5kIGlmIGl0 IGhhcyBvbmUuICAqLworICAgICAgIGlmIChhdHRyc192YWxpZCkKKyAJeworZGlmZiAtLWdpdCBh L2dkYi9zeW10YWIuYyBiL2dkYi9zeW10YWIuYworLS0tIGEvZ2RiL3N5bXRhYi5jCisrKysgYi9n ZGIvc3ltdGFiLmMKK0BAIC00ODMwLDcgKzQ4MzAsNTAgQEAgc3ltYm9sX3NlYXJjaDo6Y29tcGFy ZV9zZWFyY2hfc3ltcyAoY29uc3Qgc3ltYm9sX3NlYXJjaCAmc3ltX2EsCisgICBpZiAoc3ltX2Eu YmxvY2sgIT0gc3ltX2IuYmxvY2spCisgICAgIHJldHVybiBzeW1fYS5ibG9jayAtIHN5bV9iLmJs b2NrOworIAorLSAgcmV0dXJuIHN0cmNtcCAoc3ltX2Euc3ltYm9sLT5wcmludF9uYW1lICgpLCBz eW1fYi5zeW1ib2wtPnByaW50X25hbWUgKCkpOworKyAgYyA9IHN0cmNtcCAoc3ltX2Euc3ltYm9s LT5wcmludF9uYW1lICgpLCBzeW1fYi5zeW1ib2wtPnByaW50X25hbWUgKCkpOworKworKyAgaWYg KGMgIT0gMCkKKysgICAgcmV0dXJuIGM7CisrCisrICAvKiBUaGVzZSB0d28gc3ltYm9scyBoYXZl IHRoZSBzYW1lIG5hbWUuICBJdCBpcyBwb3NzaWJsZSwgd2l0aCB0eXBlcywKKysgICAgIHRoYXQg d2UgY2FuIHNlZSB0d28gc3ltYm9scyB3aXRoIHRoZSBzYW1lIG5hbWUsIGJ1dCBkaWZmZXJlbnQg dHlwZXMsCisrICAgICBjb25zaWRlciBpbiBDOiAndHlwZWRlZiBzdHJ1Y3QgZm9vIHsgLi4uIH0g Zm9vOycgd2hpY2ggY3JlYXRlcyBhCisrICAgICAnc3RydWN0IGZvbycgdHlwZSBhbmQgYSAnZm9v JyB0eXBlZGVmIHR5cGUuICBGb3Igbm93IHRoaXMgaXMgdGhlIG9ubHkKKysgICAgIGNhc2Ugd2Ug aGFuZGxlLiAgSW4gYWxsIG90aGVyIGNhc2VzLCB3ZSB0cmVhdCBzeW1ib2xzIHdpdGggdGhlIHNh bWUKKysgICAgIG5hbWUgYXMgYmVpbmcgdGhlIHNhbWUuCisrCisrCisrICAgICBGaXJzdCwgY2hl Y2sgdGhlIHR5cGVzLCBpZiB0aGV5IGFyZSB0aGUgc2FtZSwgdGhlbiBjb25zaWRlciB0aGVzZQor KyAgICAgc3ltYm9scyBhcyB0aGUgc2FtZS4gICovCisrICBpZiAoc3ltX2Euc3ltYm9sLT50eXBl ICgpLT5jb2RlICgpID09IHN5bV9iLnN5bWJvbC0+dHlwZSAoKS0+Y29kZSAoKSkKKysgICAgcmV0 dXJuIDA7CisrCisrICAvKiBUaGUgdHlwZXMgYXJlIGRpZmZlcmVudCwgYnV0IGlmIG5laXRoZXIg aXMgYSB0eXBlZGVmIHRoZW4gd2Ugc3RpbGwKKysgICAgIGNvbnNpZGVyIHRoZXNlIHN5bWJvbHMg YXMgdGhlIHNhbWUuICAqLworKyAgaWYgKHN5bV9hLnN5bWJvbC0+dHlwZSAoKS0+Y29kZSAoKSAh PSBUWVBFX0NPREVfVFlQRURFRgorKyAgICAgICYmIHN5bV9iLnN5bWJvbC0+dHlwZSAoKS0+Y29k ZSAoKSAhPSBUWVBFX0NPREVfVFlQRURFRikKKysgICAgcmV0dXJuIDA7CisrCisrICAvKiBUaGUg c3ltYm9scyBoYXZlIGRpZmZlcmVudCB0eXBlcywgYW5kIG9uZSBpcyBhIHR5cGVkZWYuICBUaGV5 IGNhbm5vdAorKyAgICAgYm90aCBiZSB0eXBlZGVmcyBvciB3ZSdkIGhhdmUgdGFrZW4gdGhlICJ0 eXBlcyBhcmUgdGhlIHNhbWUiIGV4aXQgcGF0aAorKyAgICAgYWJvdmUuICBJZiB0aGUgdHdvIHR5 cGVzIGFyZSBkZWZpbmVkIG9uIGRpZmZlcmVudCBsaW5lcyB0aGVuIG9yZGVyIGJ5CisrICAgICBs aW5lIG51bWJlci4gIEFzIGxpbmUgbnVtYmVycyBhcmUgdW5zaWduZWQsIGRvbid0IHN1YnRyYWN0 IG9uZSBmcm9tCisrICAgICB0aGUgb3RoZXIgaW4gb3JkZXIgdG8gYXZvaWQgdW5kZXJmbG93LiAg Ki8KKysgIGlmIChzeW1fYS5zeW1ib2wtPmxpbmUgKCkgIT0gc3ltX2Iuc3ltYm9sLT5saW5lICgp KQorKyAgICByZXR1cm4gKHN5bV9hLnN5bWJvbC0+bGluZSAoKSA+IHN5bV9iLnN5bWJvbC0+bGlu ZSAoKSA/IDEgOiAtMSk7CisrCisrICAvKiBUaGUgc3ltYm9scyBoYXZlIGRpZmZlcmVudCB0eXBl cywgYW5kIG9uZSBpcyBhIHR5cGVkZWYsIGJ1dCBib3RoCisrICAgICBzeW1ib2xzIGFyZSBkZWZp bmVkIG9uIHRoZSBzYW1lIGxpbmUuICBGb3IgZXhhbXBsZToKKysKKysgICAgIHR5cGVkZWYgc3Ry dWN0IGZvbyB7IGludCBhOyB9IGZvbzsKKysKKysgICAgIEluIHRoaXMgY2FzZSB3ZSBzb3J0IHRo ZSB0eXBlZGVmIGFmdGVyIHRoZSBub24tdHlwZWRlZi4gIFRoaXMgaXMgYW4KKysgICAgIGFyYml0 cmFyeSBkZWNpc2lvbiwgYnV0IEkgdGhpbmsgbG9va3Mgc2xpZ2h0bHkgbmljZXIgaW4gdGhlICdp bmZvCisrICAgICB0eXBlcycgb3V0cHV0OyBmaXJzdCB3ZSBnZXQgdGhlIHR5cGUsIHRoZW4gdGhl IHR5cGVkZWYuICAqLworKyAgaWYgKHN5bV9hLnN5bWJvbC0+dHlwZSAoKS0+Y29kZSAoKSA9PSBU WVBFX0NPREVfVFlQRURFRikKKysgICAgcmV0dXJuIDE7CisrICBlbHNlCisrICAgIHJldHVybiAt MTsKKyB9CisgCisgLyogUmV0dXJucyB0cnVlIGlmIHRoZSB0eXBlX25hbWUgb2Ygc3ltYm9sX3R5 cGUgb2YgU1lNIG1hdGNoZXMgVFJFRy4KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2dvbGQtZ2RiLWluZGV4LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYi1pbmRleC1t YW55LXR5cGVzLTEuYworc2ltaWxhcml0eSBpbmRleCA2OCUKK3JlbmFtZSBmcm9tIGdkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvZ29sZC1nZGItaW5kZXguYworcmVuYW1lIHRvIGdkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvZ2RiLWluZGV4LW1hbnktdHlwZXMtMS5jCistLS0gYS9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2dvbGQtZ2RiLWluZGV4LmMKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2Ri LWluZGV4LW1hbnktdHlwZXMtMS5jCitAQCAtMSw2ICsxLDYgQEAKKyAvKiBUaGlzIHRlc3RjYXNl IGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorIAorLSAgIENvcHlyaWdodCAyMDIw LTIwMjUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgQ29weXJpZ2h0IDIwMjUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCisgICAgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgICBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQorQEAgLTE1LDE1ICsxNSwzNCBAQAorICAgIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uICAqLworIAorLSNpbmNsdWRlICJnb2xkLWdkYi1pbmRleC5oIgorLQorLW5hbWVzcGFj ZSBOMQorLXsKKy0gIHZvaWQgZm9vICgpIHsgQzE6OmJheiAoKTsgfQorLX0KKysjaW5jbHVkZSAi Z2RiLWluZGV4LW1hbnktdHlwZXMuaCIKKyAKKyBpbnQKKyBtYWluICgpCisgeworKyAgZm9vX2Z1 bmNfYSAoMCk7CisrICBmb29fZnVuY19iICgwKTsKKysgIGJhcl9mdW5jX2EgKDApOworKyAgYmFy X2Z1bmNfYiAoMCk7CisrICBiYXpfZnVuY19hICgwKTsKKysgIGJhel9mdW5jX2IgKDApOworICAg cmV0dXJuIDA7CisgfQorKworK3ZvaWQKKytmb29fZnVuY19jIChmb29fdCAqb2JqKQorK3sKKysg ICh2b2lkKSBvYmo7CisrfQorKworK3ZvaWQKKytiYXJfZnVuY19jIChiYXJfdCAqb2JqKQorK3sK KysgICh2b2lkKSBvYmo7CisrfQorKworK3ZvaWQKKytiYXpfZnVuY19jIChiYXpfdCAqb2JqKQor K3sKKysgICh2b2lkKSBvYmo7CisrfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvZ29sZC1nZGItaW5kZXgtMi5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGItaW5kZXgt bWFueS10eXBlcy0yLmMKK3NpbWlsYXJpdHkgaW5kZXggNjElCityZW5hbWUgZnJvbSBnZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2dvbGQtZ2RiLWluZGV4LTIuYworcmVuYW1lIHRvIGdkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvZ2RiLWluZGV4LW1hbnktdHlwZXMtMi5jCistLS0gYS9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2dvbGQtZ2RiLWluZGV4LTIuYworKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9nZGItaW5kZXgtbWFueS10eXBlcy0yLmMKK0BAIC0xLDYgKzEsNiBAQAorIC8qIFRoaXMgdGVz dGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisgCistICAgQ29weXJpZ2h0 IDIwMjAtMjAyNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBDb3B5cmlnaHQg MjAyNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKyAgICBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor ICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CitAQCAtMTUsOSArMTUsNDIgQEAKKyAgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LiAgKi8KKyAKKy0jaW5jbHVkZSAiZ29sZC1nZGItaW5kZXguaCIKKysjaW5jbHVk ZSAiZ2RiLWluZGV4LW1hbnktdHlwZXMuaCIKKyAKKy1uYW1lc3BhY2UgTjEKKyt0eXBlZGVmIHN0 cnVjdCBmb29fdAorIHsKKy0gIHZvaWQgYmFyICgpIHsgQzE6OmJheiAoKTsgfQorKyAgaW50IGZv b190XzE7CisrICBpbnQgZm9vX3RfMjsKKyt9IGZvb190OworKworK3R5cGVkZWYgc3RydWN0IHdv b2ZfdAorK3sKKysgIGludCB3b29mX3RfMTsKKysgIGludCB3b29mX3RfMjsKKyt9IHdvb2ZfdDsK KysKKytzdGF0aWMgdm9pZAorK3dvb2ZfZnVuYyAod29vZl90ICpvYmopCisreworKyAgKHZvaWQp IG9iajsKKyt9CisrCisrdm9pZAorK2Zvb19mdW5jX2EgKGZvb190ICpvYmopCisreworKyAgd29v Zl9mdW5jICgwKTsKKysgICh2b2lkKSBvYmo7CisrfQorKworK3ZvaWQKKytiYXpfZnVuY19hIChi YXpfdCAqb2JqKQorK3sKKysgICh2b2lkKSBvYmo7CisrfQorKworK3ZvaWQKKytiYXJfZnVuY19h IChiYXJfdCAqb2JqKQorK3sKKysgIHdvb2ZfZnVuYyAoMCk7CisrICAodm9pZCkgb2JqOworIH0K K2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dvbGQtZ2RiLWluZGV4LmggYi9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYi1pbmRleC1tYW55LXR5cGVzLTMuYworc2ltaWxhcml0 eSBpbmRleCA2MSUKK3JlbmFtZSBmcm9tIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ29sZC1nZGIt aW5kZXguaAorcmVuYW1lIHRvIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiLWluZGV4LW1hbnkt dHlwZXMtMy5jCistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dvbGQtZ2RiLWluZGV4LmgK KysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiLWluZGV4LW1hbnktdHlwZXMtMy5jCitA QCAtMSw2ICsxLDYgQEAKKyAvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05V IGRlYnVnZ2VyLgorIAorLSAgIENvcHlyaWdodCAyMDIwLTIwMjUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisrICAgQ29weXJpZ2h0IDIwMjUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisgCisgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorQEAgLTE1LDExICsx NSw0MiBAQAorICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworIAorLW5hbWVzcGFj ZSBOMQorKyNpbmNsdWRlICJnZGItaW5kZXgtbWFueS10eXBlcy5oIgorKworK3R5cGVkZWYgc3Ry dWN0IHdvb2ZfdAorIHsKKy0gIGNsYXNzIEMxCistICB7CistICAgcHVibGljOgorLSAgICBzdGF0 aWMgdm9pZCBiYXogKCkge30KKy0gIH07CisrICBkb3VibGUgd29vZl90XzM7CisrICBkb3VibGUg d29vZl90XzQ7CisrfSB3b29mX3Q7CisrCisrc3RhdGljIHZvaWQKKyt3b29mX2Z1bmMgKHdvb2Zf dCAqb2JqKQorK3sKKysgICh2b2lkKSBvYmo7CisrfQorKworK3R5cGVkZWYgc3RydWN0IGJhcl90 CisreworKyAgaW50IGJhcl90XzE7CisrICBpbnQgYmFyX3RfMjsKKyt9IGJhcl90OworKworK3Zv aWQKKytiYXJfZnVuY19iIChiYXJfdCAqb2JqKQorK3sKKysgIHdvb2ZfZnVuYyAoMCk7CisrICAo dm9pZCkgb2JqOworK30KKysKKyt2b2lkCisrYmF6X2Z1bmNfYiAoYmF6X3QgKm9iaikKKyt7Cisr ICAodm9pZCkgb2JqOworK30KKysKKyt2b2lkCisrZm9vX2Z1bmNfYiAoZm9vX3QgKm9iaikKKyt7 CisrICB3b29mX2Z1bmMgKDApOworKyAgKHZvaWQpIG9iajsKKyB9CitkaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGItaW5kZXgtbWFueS10eXBlcy5leHAgYi9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2dkYi1pbmRleC1tYW55LXR5cGVzLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2 NDQKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiLWluZGV4 LW1hbnktdHlwZXMuZXhwCitAQCAtMCwwICsxLDE1NyBAQAorKyMgQ29weXJpZ2h0IDIwMjUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KKysKKysjIENoZWNrIHRoYXQgYWRkaW5nIGFuIGluZGV4IHRvIGFuIGV4ZWN1dGFibGUg KGJvdGggYSBnZGIgaW5kZXggYW5kIGEKKysjIGR3YXJmLTUgaW5kZXggYXJlIHRlc3RlZCksIGRv ZXNuJ3QgcHJldmVudCBHREIgZnJvbSBzZWVpbmcgdGhlCisrIyBleHBlY3RlZCB0eXBlcy4KKysK KytzdGFuZGFyZF90ZXN0ZmlsZSAtMS5jIC0yLmMgLTMuYyAuaAorKworKyMgT25lIG9mIHRoZSB0 ZXN0cyB1c2VzIHRoaXMgUHl0aG9uIGZpbGUuICBUaGUgdGVzdF8qIHByb2MgY2hlY2tzIHRoYXQK KysjIEdEQiBzdXBwb3J0cyBQeXRob24gdGVzdHMuICBTb21lIG9mIHRoZSBvdGhlciBwcm9jcyBk b24ndCB1c2UgdGhpcworKyMgUHl0aG9uIGZpbGUuCisrc2V0IHB5ZmlsZSBbZ2RiX3JlbW90ZV9k b3dubG9hZCBob3N0ICR7c3JjZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0ucHldCisrCisraWYg e1tidWlsZF9leGVjdXRhYmxlICJidWlsZGluZyIgJHRlc3RmaWxlIFwKKysJIFtsaXN0ICRzcmNm aWxlICRzcmNmaWxlMiAkc3JjZmlsZTNdXSA9PSAtMX0geworKyAgICByZXR1cm4KKyt9CisrCisr IyBSdW4gJ2luZm8gdHlwZXMgVFlQRU5BTUUnLCBleHBlY3QgdG8gc2VlIGFuIGVudHJ5IGZyb20g RklMRU5BTUUgZm9yCisrIyB0aGUgbGluZSBtYXRjaGluZyBQQVRURVJOLgorK3Byb2MgY2hlY2tf aW5mb190eXBlcyB7IHRlc3RmaWxlIHR5cGVuYW1lIGZpbGVuYW1lIHBhdHRlcm4gfSB7CisrICAg IHdpdGhfdGVzdF9wcmVmaXggIiRmaWxlbmFtZSAnJHBhdHRlcm4nIiB7CisrCWNsZWFuX3Jlc3Rh cnQgJHRlc3RmaWxlCisrCisrCXNldCBsaW5lX251bSBbZ2RiX2dldF9saW5lX251bWJlciAkcGF0 dGVybiAkZmlsZW5hbWVdCisrCWdkYl90ZXN0ICJpbmZvIHR5cGVzICR0eXBlbmFtZSIgXAorKwkg ICAgIkZpbGUgXFteXHJcblxdKy8ke2ZpbGVuYW1lfTooPzpcclxuJHs6OmRlY2ltYWx9OlxbXlxy XG5cXSspKlxyXG4ke2xpbmVfbnVtfTpcW15cclxuXF0rLioiCisrICAgIH0KKyt9CisrCisrIyBT dGFydCBHREIgd2l0aCBGSUxFTkFNRSwgYW5kIGV4YW1pbmUgc29tZSBvZiB0aGUgdHlwZXMuICBU aGlzIHByb2MKKysjIG1pZ2h0IHNlZW0gdG8gYmUgdXNpbmcgY2xlYW5fcmVzdGFydCBhIGxpdHRs ZSB0b28gbXVjaCwgYnV0IHdlIG5lZWQKKysjIHRvIGJlIHJlYWxseSBjYXJlZnVsIGhlcmUuICBB cyB3ZSBleGFtaW5lIG9uZSB0eXBlLCBlLmcuIGZvb190LCB0aGlzCisrIyBtaWdodCBjYXVzZSBH REIgdG8gZnVsbHkgcGFyc2UgYSBDVSwgd2hpY2ggdGhlbiBtZWFucyBleGFtaW5pbmcKKysjIGJh cl90IGdpdmVzIHRoZSBleHBlY3RlZCByZXN1bHQuICBXaGVuLCBpZiB3ZSdkIGZpcnN0IGxvb2tl ZCBmb3IKKysjIGJhcl90LCB0aGVuIChkdWUgdG8gYW4gaW5kZXggYnVnKSB3ZSBtaWdodCBub3Qg aGF2ZSBmb3VuZCB0aGUKKysjIGNvcnJlY3QgdHlwZSBkZWZpbml0aW9uLgorKyMKKysjIFRoZSBv bmx5IHdheSB3ZSBjYW4gYmUgc3VyZSB0aGF0IGFuIGVhcmxpZXIgdGVzdCBpc24ndCBnb2luZyB0 bworKyMgdHJpZ2dlciBDVSBleHBhbnNpb24gaXMgdG8gcmVzdGFydCBHREIgYmVmb3JlIGV2ZXJ5 IHF1ZXJ5LgorK3Byb2MgcnVuX3Rlc3QgeyBmaWxlbmFtZSB9IHsKKysgICAgIyBQcmludCBhbGwg dGhlIHR5cGVzIGZvciB3aGljaCB0aGVyZSBpcyBvbmx5IG9uZSByZXByZXNlbnRhdGlvbi4KKysg ICAgZm9yZWFjaCB0eXBlIHsgZm9vX3QgYmFyX3QgYmF6X3QgfSB7CisrCWNsZWFuX3Jlc3RhcnQg JGZpbGVuYW1lCisrCWdkYl90ZXN0ICJwdHlwZSAkdHlwZSIgXAorKwkgICAgW211bHRpX2xpbmUg XAorKwkJICJ0eXBlID0gc3RydWN0ICR0eXBlIHsiIFwKKysJCSAiXFxzK2ludCAke3R5cGV9XzE7 IiBcCisrCQkgIlxccytpbnQgJHt0eXBlfV8yOyIgXAorKwkJICJ9Il0KKysgICAgfQorKworKyAg ICAjIFRoZXJlIGFyZSB0d28gZGlmZmVyZW50IHZlcnNpb25zIG9mIHdvb2ZfdC4gIEZvciBub3cs IHdoZW4gdXNpbmcKKysgICAgIyBgcHR5cGVgIEdEQiB3aWxsIGp1c3QgZGlzcGxheSB0aGUgZmly c3Qgb25lIGl0IGZpbmRzLCB3aGljaCBjb3VsZAorKyAgICAjIGxlZ2l0aW1hdGVseSBiZSBlaXRo ZXIuCisrICAgIHNldCB3b29mX2ludF9yZSBbbXVsdGlfbGluZSBcCisrCQkJICJ0eXBlID0gc3Ry dWN0IHdvb2ZfdCB7IiBcCisrCQkJICJcXHMraW50IHdvb2ZfdF8xOyIgXAorKwkJCSAiXFxzK2lu dCB3b29mX3RfMjsiIFwKKysJCQkgIn0iXQorKyAgICBzZXQgd29vZl9kb3VibGVfcmUgW211bHRp X2xpbmUgXAorKwkJCSAgICAidHlwZSA9IHN0cnVjdCB3b29mX3QgeyIgXAorKwkJCSAgICAiXFxz K2RvdWJsZSB3b29mX3RfMzsiIFwKKysJCQkgICAgIlxccytkb3VibGUgd29vZl90XzQ7IiBcCisr CQkJICAgICJ9Il0KKysgICAgY2xlYW5fcmVzdGFydCAkZmlsZW5hbWUKKysgICAgZ2RiX3Rlc3Rf bXVsdGlwbGUgInB0eXBlIHdvb2ZfdCIgIiIgeworKwktcmUgLXdyYXAgJHdvb2ZfaW50X3JlIHsK KysJICAgIHBhc3MgJGdkYl90ZXN0X25hbWUKKysJfQorKwktcmUgLXdyYXAgJHdvb2ZfZG91Ymxl X3JlIHsKKysJICAgIHBhc3MgJGdkYl90ZXN0X25hbWUKKysJfQorKyAgICB9CisrCisrICAgICMg Q2hlY2sgZm9yIGRlY2xhcmF0aW9ucyBhbmQgZGVmaW5pdGlvbnMgb2Ygc29tZSB0eXBlcy4KKysg ICAgY2hlY2tfaW5mb190eXBlcyAkZmlsZW5hbWUgZm9vX3QgJDo6c3JjZmlsZTIgInR5cGVkZWYg c3RydWN0IGZvb190IgorKyAgICBjaGVja19pbmZvX3R5cGVzICRmaWxlbmFtZSBmb29fdCAkOjpz cmNmaWxlNCAidHlwZWRlZiBzdHJ1Y3QgZm9vX3QgZm9vX3Q7IgorKyAgICBjaGVja19pbmZvX3R5 cGVzICRmaWxlbmFtZSBiYXJfdCAkOjpzcmNmaWxlMyAidHlwZWRlZiBzdHJ1Y3QgYmFyX3QiCisr ICAgIGNoZWNrX2luZm9fdHlwZXMgJGZpbGVuYW1lIGJhcl90ICQ6OnNyY2ZpbGU0ICJ0eXBlZGVm IHN0cnVjdCBiYXJfdCBiYXJfdDsiCisrICAgIGNoZWNrX2luZm9fdHlwZXMgJGZpbGVuYW1lIGJh el90ICQ6OnNyY2ZpbGU0ICJ0eXBlZGVmIHN0cnVjdCBiYXpfdCIKKysgICAgY2hlY2tfaW5mb190 eXBlcyAkZmlsZW5hbWUgYmF6X3QgJDo6c3JjZmlsZTQgIlx9IGJhel90OyIKKysgICAgY2hlY2tf aW5mb190eXBlcyAkZmlsZW5hbWUgd29vZl90ICQ6OnNyY2ZpbGUyICJ0eXBlZGVmIHN0cnVjdCB3 b29mX3QiCisrICAgIGNoZWNrX2luZm9fdHlwZXMgJGZpbGVuYW1lIHdvb2ZfdCAkOjpzcmNmaWxl MyAidHlwZWRlZiBzdHJ1Y3Qgd29vZl90IgorKworKyAgICAjIFVzZSBQeXRob24gdG8gbG9vayBm b3IgdHlwZSBzeW1ib2xzLgorKyAgICBpZiB7IFthbGxvd19weXRob25fdGVzdHNdIH0geworKwlm b3JlYWNoX3dpdGhfcHJlZml4IHR5cGUgeyBmb29fdCBiYXJfdCBiYXpfdCB9IHsKKysJICAgIGNs ZWFuX3Jlc3RhcnQgJGZpbGVuYW1lCisrCSAgICBnZGJfdGVzdF9ub19vdXRwdXQgInNvdXJjZSAk OjpweWZpbGUiICJpbXBvcnQgcHl0aG9uIHNjcmlwdHMiCisrCSAgICBnZGJfdGVzdCAicHktc2hv dy10eXBlICR0eXBlIiBcCisrCQlbbXVsdGlfbGluZSBcCisrCQkgICAgICJMb29raW5nIGZvciB0 eXBlICckdHlwZSc6IiBcCisrCQkgICAgICIgIEZvdW5kIDMgdHlwZSBzeW1ib2xzIiBcCisrCQkg ICAgICIgICAgMTogc3RydWN0ICR0eXBlIFxceyBpbnQgJHt0eXBlfV8xOyBpbnQgJHt0eXBlfV8y OyBcXH0iIFwKKysJCSAgICAgIiAgICAyOiBzdHJ1Y3QgJHR5cGUgXFx7IGludCAke3R5cGV9XzE7 IGludCAke3R5cGV9XzI7IFxcfSIgXAorKwkJICAgICAiICAgIDM6IHN0cnVjdCAkdHlwZSBcXHsg aW50ICR7dHlwZX1fMTsgaW50ICR7dHlwZX1fMjsgXFx9Il0KKysJfQorKworKwljbGVhbl9yZXN0 YXJ0ICRmaWxlbmFtZQorKwlnZGJfdGVzdF9ub19vdXRwdXQgInNvdXJjZSAkOjpweWZpbGUiICJp bXBvcnQgcHl0aG9uIHNjcmlwdHMiCisrCWdkYl90ZXN0ICJweS1zaG93LXR5cGUgd29vZl90IiBc CisrCSAgICBbbXVsdGlfbGluZSBcCisrCQkgIkxvb2tpbmcgZm9yIHR5cGUgJ3dvb2ZfdCc6IiBc CisrCQkgIiAgRm91bmQgMiB0eXBlIHN5bWJvbHMiIFwKKysJCSAiICAgIDE6IHN0cnVjdCB3b29m X3QgXFx7ICg/OmludHxkb3VibGUpIHdvb2ZfdF8oPzoxfDMpOyAoPzppbnR8ZG91YmxlKSB3b29m X3RfKD86Mnw0KTsgXFx9IiBcCisrCQkgIiAgICAyOiBzdHJ1Y3Qgd29vZl90IFxceyAoPzppbnR8 ZG91YmxlKSB3b29mX3RfKD86MXwzKTsgKD86aW50fGRvdWJsZSkgd29vZl90Xyg/OjJ8NCk7IFxc fSJdCisrCisrICAgIH0KKyt9CisrCisrd2l0aF90ZXN0X3ByZWZpeCAibm8gaW5kZXgiIHsKKysg ICAgcnVuX3Rlc3QgJHRlc3RmaWxlCisrfQorKworKyMgVGhlIHByZXZpb3VzIGNhbGwgdG8gJ3J1 bl90ZXN0JyB3aWxsIGhhdmUgbGVmdCBHREIgYWN0aXZlLiAgQ2hlY2sgaWYKKysjIEJJTkZJTEUg YWxyZWFkeSBoYXMgYW4gaW5kZXguICBJZiBpdCBkb2VzIHRoZW4gd2UgbXVzdCBiZSBydW5uaW5n CisrIyB3aXRoIG9uZSBvZiB0aGUgYm9hcmRmaWxlcyB0aGF0IGFkZHMgYW4gaW5kZXguICBXZSBj b3VsZCBwb3NzaWJseQorKyMgdHJ5IHRvIHJlbW92ZSB0aGUgaW5kZXgsIGJ1dCBmb3Igbm93LCBq dXN0IGRvbid0IHJ1biB0aGUgZm9sbG93aW5nCisrIyBwYXJ0cyB3aGljaCByZWx5IG9uIGFkZGlu ZyBhbiBpbmRleC4KKytzZXQgaW5kZXhfdHlwZSBbZ2V0X2luZGV4X3R5cGUgJGJpbmZpbGUgImNo ZWNrIGRlYnVnIHN0eWxlIl0KKytpZiB7ICRpbmRleF90eXBlIG5lICJjb29rZWQiIH0geworKyAg ICB1bnN1cHBvcnRlZCAiY2Fubm90IHRlc3Qgd2l0aG91dCBhIGNvb2tlZCBpbmRleCIKKysgICAg cmV0dXJuCisrfQorKworK2ZvcmVhY2hfd2l0aF9wcmVmaXggaW5kZXhfdHlwZSB7IGdkYiBkd2Fy ZjUgfSB7CisrICAgIHNldCBiaW5maWxlX3dpdGhfaW5kZXggJHtiaW5maWxlfS1pZHgtJHtpbmRl eF90eXBlfQorKworKyAgICByZW1vdGVfZXhlYyBidWlsZCAiY3AgJGJpbmZpbGUgJGJpbmZpbGVf d2l0aF9pbmRleCIKKysKKysgICAgaWYgeyAkaW5kZXhfdHlwZSBlcSAiZ2RiIiB9IHsKKysJc2V0 IHN0eWxlICIiCisrICAgIH0gZWxzZSB7CisrCXNldCBzdHlsZSAiLWR3YXJmLTUiCisrICAgIH0K KysKKysgICAgaWYge1tlbnN1cmVfZ2RiX2luZGV4ICRiaW5maWxlX3dpdGhfaW5kZXggJHN0eWxl XSAhPSAxfSB7CisrCXVuc3VwcG9ydGVkICJjb3VsZG4ndCBhZGQgJGluZGV4X3R5cGUgaW5kZXgi CisrCXJldHVybgorKyAgICB9CisrCisrICAgIHJ1bl90ZXN0IFtmaWxlIHRhaWwgJGJpbmZpbGVf d2l0aF9pbmRleF0KKyt9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGIt aW5kZXgtbWFueS10eXBlcy5oIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGItaW5kZXgtbWFu eS10eXBlcy5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGItaW5kZXgtbWFueS10eXBlcy5oCitAQCAtMCwwICsxLDQy IEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4K KysKKysgICBDb3B5cmlnaHQgMjAyNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysK KysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2lmbmRlZiBH REJfSU5ERVhfTUFOWV9UWVBFU19ICisrI2RlZmluZSBHREJfSU5ERVhfTUFOWV9UWVBFU19ICisr CisrdHlwZWRlZiBzdHJ1Y3QgZm9vX3QgZm9vX3Q7CisrdHlwZWRlZiBzdHJ1Y3QgYmFyX3QgYmFy X3Q7CisrCisrZXh0ZXJuIHZvaWQgZm9vX2Z1bmNfYSAoZm9vX3QgKm9iaik7CisrZXh0ZXJuIHZv aWQgZm9vX2Z1bmNfYiAoZm9vX3QgKm9iaik7CisrZXh0ZXJuIHZvaWQgZm9vX2Z1bmNfYyAoZm9v X3QgKm9iaik7CisrCisrZXh0ZXJuIHZvaWQgYmFyX2Z1bmNfYSAoYmFyX3QgKm9iaik7CisrZXh0 ZXJuIHZvaWQgYmFyX2Z1bmNfYiAoYmFyX3QgKm9iaik7CisrZXh0ZXJuIHZvaWQgYmFyX2Z1bmNf YyAoYmFyX3QgKm9iaik7CisrCisrdHlwZWRlZiBzdHJ1Y3QgYmF6X3QKKyt7CisrICBpbnQgYmF6 X3RfMTsKKysgIGludCBiYXpfdF8yOworK30gYmF6X3Q7CisrCisrZXh0ZXJuIHZvaWQgYmF6X2Z1 bmNfYSAoYmF6X3QgKm9iaik7CisrZXh0ZXJuIHZvaWQgYmF6X2Z1bmNfYiAoYmF6X3QgKm9iaik7 CisrZXh0ZXJuIHZvaWQgYmF6X2Z1bmNfYyAoYmF6X3QgKm9iaik7CisrCisrI2VuZGlmIC8qIEdE Ql9JTkRFWF9NQU5ZX1RZUEVTX0ggKi8KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2dkYi1pbmRleC1tYW55LXR5cGVzLnB5IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGIt aW5kZXgtbWFueS10eXBlcy5weQorbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251bGwK KysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiLWluZGV4LW1hbnktdHlwZXMucHkKK0BA IC0wLDAgKzEsNTQgQEAKKysjIENvcHlyaWdodCAyMDI1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK KysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisr IyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrCisrY2xhc3Mg VHlwZVZpZXdlcihnZGIuQ29tbWFuZCk6CisrICAgICIiIkEgY29tbWFuZCB3aGljaCB0YWtlcyBh IHN0cmluZyBhbmQgbG9va3MgdXAgdHlwZXMgd2l0aCB0aGF0IG5hbWUuCisrCisrICAgIFRoZSB0 eXBlcyBhcmUgZXhwZWN0ZWQgdG8gYWxsIGJlIHN0cnVjdHMuICBUaGlzIGNvbW1hbmQgcHJpbnRz IGEKKysgICAgYmFzaWMgcmVwcmVzZW50YXRpb24gb2YgdGhlIHN0cnVjdC4gIFRoaXMgaXMgb25s eSBnb2luZyB0byB3b3JrIHdoZW4KKysgICAgdXNlZCB3aXRoIHRoZSB0eXBlcyBkZWZpbmVkIGlu IHRoZSBnZGItaW5kZXgtbWFueS10eXBlcyB0ZXN0IHNvdXJjZQorKyAgICBmaWxlcy4iIiIKKysK KysgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygicHkt c2hvdy10eXBlIiwgZ2RiLkNPTU1BTkRfVVNFUikKKysKKysgICAgZGVmIGludm9rZShzZWxmLCBh cmdzLCBmcm9tX3R0eSk6CisrICAgICAgICBhcmd2ID0gZ2RiLnN0cmluZ190b19hcmd2KGFyZ3Mp CisrICAgICAgICBpZiBhcmd2WzBdID09ICIiOgorKyAgICAgICAgICAgIHJhaXNlIGdkYi5HZGJF cnJvcigibWlzc2luZyBhcmd1bWVudCIpCisrICAgICAgICBwcmludCgiTG9va2luZyBmb3IgdHlw ZSAnIiArIGFyZ3ZbMF0gKyAiJzoiKQorKyAgICAgICAgc3ltcyA9IGdkYi5sb29rdXBfc3RhdGlj X3N5bWJvbHMoYXJndlswXSwgZ2RiLlNZTUJPTF9UWVBFX0RPTUFJTikKKysgICAgICAgIGNvdW50 ID0gbGVuKHN5bXMpCisrICAgICAgICBwcmludCgiICBGb3VuZCAlZCB0eXBlIHN5bWJvbCVzIiAl IChjb3VudCwgIiIgaWYgY291bnQgPT0gMSBlbHNlICJzIikpCisrICAgICAgICBmb3IgaSwgcyBp biBlbnVtZXJhdGUoc3ltcywgc3RhcnQ9MSk6CisrICAgICAgICAgICAgdCA9IHMudHlwZQorKyAg ICAgICAgICAgIGlmIHQgaXMgTm9uZToKKysgICAgICAgICAgICAgICAgcHJpbnQoIiAgICAlZDog Tm8gdHlwZS4iICUgaSkKKysgICAgICAgICAgICBlbHNlOgorKyAgICAgICAgICAgICAgICBmaWVs ZHMgPSAic3RydWN0ICIgKyBhcmd2WzBdICsgIiB7IgorKyAgICAgICAgICAgICAgICB0cnk6Cisr ICAgICAgICAgICAgICAgICAgICBmb3IgZiBpbiB0LmZpZWxkcygpOgorKyAgICAgICAgICAgICAg ICAgICAgICAgIGlmIGxlbihmaWVsZHMpID4gMDoKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZmllbGRzID0gZmllbGRzICsgIiAiCisrICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRz ID0gZmllbGRzICsgIiVzICVzOyIgJSAoc3RyKGYudHlwZSksIGYubmFtZSkKKysgICAgICAgICAg ICAgICAgZXhjZXB0OgorKyAgICAgICAgICAgICAgICAgICAgcGFzcworKyAgICAgICAgICAgICAg ICBmaWVsZHMgPSBmaWVsZHMgKyAiIH0iCisrCisrICAgICAgICAgICAgICAgIHByaW50KCIgICAg JWQ6ICVzIiAlIChpLCBmaWVsZHMpKQorKworKworK1R5cGVWaWV3ZXIoKQorZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ29sZC1nZGItaW5kZXguZXhwIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9nb2xkLWdkYi1pbmRleC5leHAKK2RlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAor LS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nb2xkLWdkYi1pbmRleC5leHAKKysrKyAvZGV2 L251bGwKK0BAIC0xLDUxICswLDAgQEAKKy0jIENvcHlyaWdodCAyMDIwLTIwMjUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistCistIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSMgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK Ky0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCistIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorLSMK Ky0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKy0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCistIworLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0jIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAg Ki8KKy0KKy0jIFRoaXMgdGVzdHMgdGhlIGdkYiB3b3JrYXJvdW5kIGZvciBQUiBiaW51dGlscy8x NTY0Ni4KKy0KKy1zdGFuZGFyZF90ZXN0ZmlsZSAuYyBnb2xkLWdkYi1pbmRleC0yLmMKKy0KKy1p ZiB7IFtoYXZlX2Z1c2VfbGRfZ29sZF0gPT0gMH0geworLSAgICByZXR1cm4gLTEKKy19CistCist aWYge1twcmVwYXJlX2Zvcl90ZXN0aW5nICJmYWlsZWQgdG8gcHJlcGFyZSIgJHRlc3RmaWxlICIk c3JjZmlsZSAkc3JjZmlsZTIiIFwKKy0JIHtkZWJ1ZyBjKysgYWRkaXRpb25hbF9mbGFncz0tZnVz ZS1sZD1nb2xkIFwKKy0JICAgICAgbGRmbGFncz0tV2wsLS1nZGItaW5kZXggXAorLQkgICAgICBh ZGRpdGlvbmFsX2ZsYWdzPS1nZ251LXB1Ym5hbWVzfV19IHsKKy0gICAgcmV0dXJuIC0xCistfQor LQorLWlmIHsgW2hhdmVfaW5kZXggJGJpbmZpbGVdICE9ICJnZGJfaW5kZXgiIH0geworLSAgICBy ZXR1cm4gLTEKKy19CistCistaWYgeyFbcnVudG9fbWFpbl19IHsKKy0gICAgcmV0dXJuIDAKKy19 CistCistZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJub3NoYXJlZGxpYnJhcnkiCistCistZ2RiX3Rlc3Rf bm9fb3V0cHV0ICJzZXQgYnJlYWtwb2ludCBwZW5kaW5nIG9mZiIKKy1nZGJfdGVzdCAiYnJlYWsg TjE6Om1pc3NwZWxsZWQiICJGdW5jdGlvbiBcIk4xOjptaXNzcGVsbGVkXCIgbm90IGRlZmluZWRc LiIKKy0KKy1nZGJfdGVzdF9tdWx0aXBsZSAibWFpbnQgaW5mbyBzeW10YWJzIiAiIiB7CistICAg IC1yZSAtd3JhcCAiXHsgc3ltdGFiIFxbXlxyXG5cXSpnb2xkLWdkYi1pbmRleC0yLmMuKiIgewor LQlmYWlsICRnZGJfdGVzdF9uYW1lCistICAgIH0KKy0gICAgLXJlIC13cmFwICIiIHsKKy0JcGFz cyAkZ2RiX3Rlc3RfbmFtZQorLSAgICB9CistfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvaW5mby10eXBlcy5leHAudGNsIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZv LXR5cGVzLmV4cC50Y2wKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby10eXBlcy5l eHAudGNsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2luZm8tdHlwZXMuZXhwLnRjbAor QEAgLTkwLDYgKzkwLDcgQEAgcHJvYyBydW5fdGVzdCB7IGxhbmcgfSB7CisgCQkgIjI4OlxbXHQg XF0rdHlwZWRlZiBzdHJ1Y3QgYmF6X3QgYmF6OyIgXAorIAkJICIzMTpcW1x0IFxdK3R5cGVkZWYg c3RydWN0IGJhel90IFxcKiBiYXpfcHRyOyIgXAorIAkJICIyMTpcW1x0IFxdK3N0cnVjdCBiYXpf dDsiIFwKKysJCSAiMjc6XFtcdCBcXSt0eXBlZGVmIHN0cnVjdCBiYXpfdCBiYXpfdDsiIFwKKyAJ CSAiXFtcdCBcXStkb3VibGUiIFwKKyAJCSAiMzM6XFtcdCBcXStlbnVtIGVudW1fdDsiIFwKKyAJ CSAiXFtcdCBcXStmbG9hdCIgXAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv dHlwZS1hbmQtdHlwZWRlZi5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS90eXBlLWFuZC10eXBl ZGVmLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3R5cGUtYW5kLXR5cGVkZWYuYworQEAgLTAsMCArMSw0OCBAQAorKy8q IFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisrCisrICAg Q29weXJpZ2h0IDIwMjUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKwor KyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworK3R5cGVkZWYgc3RydWN0IGZv bwkvKiBzdHJ1Y3QgZm9vIGRlZmluZWQgaGVyZS4gICovCisreworKyAgaW50IGE7CisrICBpbnQg YjsKKyt9IGZvbzsJCQkvKiB0eXBlZGVmIGZvbyBkZWZpbmVkIGhlcmUuICAqLworKworK3N0cnVj dCBiYXIJCS8qIHN0cnVjdCBiYXIgZGVmaW5lZCBoZXJlLiAgKi8KKyt7CisrICBpbnQgYTsKKysg IGludCBiOworK307CisrCisrLyogWWVzLCB0aGlzIHJlYWxseSBpcyB0eXBlZGVmLWluZyAnYmFy JyB0byBzb21ldGhpbmcgb3RoZXIgdGhhbiAnc3RydWN0CisrICAgYmFyJy4gIEp1c3QgdGVzdGlu ZyB0aGF0IEdEQiBoYW5kbGVzIHRoaXMuICBUaGlzIGlzIG5vdCBnb29kIGNvZGUuICAqLworK3R5 cGVkZWYgc3RydWN0IGZvbyBiYXI7CS8qIHR5cGVkZWYgYmFyIGRlZmluZWQgaGVyZS4gICovCisr CisrLyogVGhlIGZvbGxvd2luZyBtdXN0IGJlIGEgc2luZ2xlIGxpbmUuICBUaGlzIHRlc3RzIHRo ZSAnc3RydWN0IGJheicgYW5kCisrICAgdGhlICd0eXBlZGVmIC4uLiBiYXo7JyBiZWluZyBvbiB0 aGUgc2FtZSBsaW5lLiAgKi8KKyt0eXBlZGVmIHN0cnVjdCBiYXogeyBpbnQgYTsgaW50IGI7IH0g YmF6OwkvKiBiYXogZGVmaW5lZCBoZXJlLiAgKi8KKysKKyt2b2xhdGlsZSBzdHJ1Y3QgZm9vIG9i ajEgPSB7IDEsIDIgfTsKKyt2b2xhdGlsZSBmb28gb2JqMiA9IHsgMSwgMiB9OworK3ZvbGF0aWxl IHN0cnVjdCBiYXIgb2JqMyA9IHsgMSwgMiB9OworK3ZvbGF0aWxlIGJhciBvYmo0ID0geyAxLCAy IH07Cisrdm9sYXRpbGUgYmF6IG9iajUgPSB7IDEsIDIgfTsKKysKKytpbnQKKyttYWluICgpCisr eworKyAgcmV0dXJuIG9iajEuYiArIG9iajIuYiArIG9iajMuYiArIG9iajQuYiArIG9iajUuYjsK Kyt9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS90eXBlLWFuZC10eXBlZGVm LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdHlwZS1hbmQtdHlwZWRlZi5leHAKK25ldyBm aWxlIG1vZGUgMTAwNjQ0CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3R5cGUtYW5kLXR5cGVkZWYuZXhwCitAQCAtMCwwICsxLDY1IEBACisrIyBDb3B5cmlnaHQg MjAyNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjCisrIyBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor KyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysj IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgorKworKyMgQ29tcGlsZSBhIHNpbmdsZSBDVSBjb250YWluaW5nIGEgdHlw ZSBhbmQgYSB0eXBlZGVmIHdpdGggdGhlIHNhbWUKKysjIG5hbWUgKHRoaW5rIEMncyAidHlwZWRl ZiBzdHJ1Y3QgZm9vIHsgLi4uIH0gZm9vOyIpLiAgQ2hlY2sgdGhhdAorKyMgJ2luZm8gdHlwZXMn IHNob3dzIGJvdGggdHlwZXMuCisrCisrc3RhbmRhcmRfdGVzdGZpbGUKKysKKytpZiB7IFtwcmVw YXJlX2Zvcl90ZXN0aW5nICJmYWlsZWQgdG8gcHJlcGFyZSIgJHRlc3RmaWxlICRzcmNmaWxlXSB9 IHsKKysgICAgcmV0dXJuCisrfQorKworKyMgTGluZSBudW1iZXJzIG5lZWRlZCBieSB0aGUgdGVz dC4KKytzZXQgc3RydWN0X2Zvb19saW5lbm8gW2dkYl9nZXRfbGluZV9udW1iZXIgInN0cnVjdCBm b28gZGVmaW5lZCBoZXJlIl0KKytzZXQgdHlwZWRlZl9mb29fbGluZW5vIFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJ0eXBlZGVmIGZvbyBkZWZpbmVkIGhlcmUiXQorK3NldCBzdHJ1Y3RfYmFyX2xpbmVu byBbZ2RiX2dldF9saW5lX251bWJlciAic3RydWN0IGJhciBkZWZpbmVkIGhlcmUiXQorK3NldCB0 eXBlZGVmX2Jhcl9saW5lbm8gW2dkYl9nZXRfbGluZV9udW1iZXIgInR5cGVkZWYgYmFyIGRlZmlu ZWQgaGVyZSJdCisrc2V0IGJhel9saW5lbm8gW2dkYl9nZXRfbGluZV9udW1iZXIgImJheiBkZWZp bmVkIGhlcmUiXQorKworKyMgQ2hlY2sgdGhhdCB0aGUgZXhwZWN0ZWQgdHdvIHR5cGVzIHNob3cg dXAgaW4gZ2xvYmFsIFNSQ0ZJTEUuCisrcHJvYyBjaGVja190eXBlcyB7IHRlc3RuYW1lIH0gewor KyAgICBnZGJfdGVzdCAiaW5mbyB0eXBlcyBmb28iIFwKKysJW211bHRpX2xpbmUgXAorKwkgICAg ICJGaWxlICg/OlxbXlxyXG5cXSsvKT9bc3RyaW5nX3RvX3JlZ2V4cCAkOjpzcmNmaWxlXToiIFwK KysJICAgICAiJHs6OnN0cnVjdF9mb29fbGluZW5vfTpcXHMrc3RydWN0IGZvbzsiIFwKKysJICAg ICAiJHs6OnR5cGVkZWZfZm9vX2xpbmVub306XFxzK3R5cGVkZWYgc3RydWN0IGZvbyBmb287Il0g XAorKwkiJHRlc3RuYW1lLCBjaGVjayBmb28iCisrCisrICAgIGdkYl90ZXN0ICJpbmZvIHR5cGVz IGJhciIgXAorKwlbbXVsdGlfbGluZSBcCisrCSAgICAgIkZpbGUgKD86XFteXHJcblxdKy8pP1tz dHJpbmdfdG9fcmVnZXhwICQ6OnNyY2ZpbGVdOiIgXAorKwkgICAgICIkezo6c3RydWN0X2Jhcl9s aW5lbm99OlxccytzdHJ1Y3QgYmFyOyIgXAorKwkgICAgICIkezo6dHlwZWRlZl9iYXJfbGluZW5v fTpcXHMrdHlwZWRlZiBzdHJ1Y3QgZm9vIGJhcjsiXSBcCisrCSIkdGVzdG5hbWUsIGNoZWNrIGJh ciIKKysKKysgICAgZ2RiX3Rlc3QgImluZm8gdHlwZXMgYmF6IiBcCisrCVttdWx0aV9saW5lIFwK KysJICAgICAiRmlsZSAoPzpcW15cclxuXF0rLyk/W3N0cmluZ190b19yZWdleHAgJDo6c3JjZmls ZV06IiBcCisrCSAgICAgIiR7OjpiYXpfbGluZW5vfTpcXHMrc3RydWN0IGJhejsiIFwKKysJICAg ICAiJHs6OmJhel9saW5lbm99Olxccyt0eXBlZGVmIHN0cnVjdCBiYXogYmF6OyJdIFwKKysJIiR0 ZXN0bmFtZSwgY2hlY2sgYmF6IgorK30KKysKKytjaGVja190eXBlcyAiYmVmb3JlIGluZmVyaW9y IGlzIHN0YXJ0ZWQiCisrCisrY2xlYW5fcmVzdGFydCAkdGVzdGZpbGUKKysKKytpZiB7IVtydW50 b19tYWluXX0geworKyAgICByZXR1cm4KKyt9CisrCisrY2hlY2tfdHlwZXMgImFmdGVyIHN0YXJ0 aW5nIHRoZSBpbmZlcmlvciIKCmRpZmYgLS1naXQgYS9nZGIuc3BlYyBiL2dkYi5zcGVjCmluZGV4 IGQxMjk4NjUuLmRlOWM0N2UgMTAwNjQ0Ci0tLSBhL2dkYi5zcGVjCisrKyBiL2dkYi5zcGVjCkBA IC00NSw3ICs0NSw3IEBAIFZlcnNpb246IDE3LjEKIAogIyBUaGUgcmVsZWFzZSBhbHdheXMgY29u dGFpbnMgYSBsZWFkaW5nIHJlc2VydmVkIG51bWJlciwgc3RhcnQgaXQgYXQgMS4KICMgYHVwc3Ry ZWFtJyBpcyBub3QgYSBwYXJ0IG9mIGBuYW1lJyB0byBzdGF5IGZ1bGx5IHJwbSBkZXBlbmRlbmNp ZXMgY29tcGF0aWJsZSBmb3IgdGhlIHRlc3RpbmcuCi1SZWxlYXNlOiAzJXs/ZGlzdH0KK1JlbGVh c2U6IDQlez9kaXN0fQogCiBMaWNlbnNlOiBHUEwtMy4wLW9yLWxhdGVyIEFORCBCU0QtMy1DbGF1 c2UgQU5EIEZTRkFQIEFORCBMR1BMLTIuMS1vci1sYXRlciBBTkQgR1BMLTIuMC1vci1sYXRlciBB TkQgTEdQTC0yLjAtb3ItbGF0ZXIgQU5EIExpY2Vuc2VSZWYtRmVkb3JhLVB1YmxpYy1Eb21haW4g QU5EIEdGREwtMS4zLW9yLWxhdGVyIEFORCBMR1BMLTIuMC1vci1sYXRlciBXSVRIIEdDQy1leGNl cHRpb24tMi4wIEFORCBHUEwtMy4wLW9yLWxhdGVyIFdJVEggR0NDLWV4Y2VwdGlvbi0zLjEgQU5E IEdQTC0yLjAtb3ItbGF0ZXIgV0lUSCBHTlUtY29tcGlsZXItZXhjZXB0aW9uIEFORCBNSVQKICMg RG8gbm90IHByb3ZpZGUgVVJMIGZvciBzbmFwc2hvdHMgYXMgdGhlIGZpbGUgbGFzdHMgdGhlcmUg b25seSBmb3IgMiBkYXlzLgpAQCAtOTMyLDYgKzkzMiwxMSBAQCBmaQogIyBlbmRpZiBzY2wKIAog JWNoYW5nZWxvZworKiBXZWQgRmViIDExIDIwMjYgQW5kcmV3IEJ1cmdlc3MgPGFidXJnZXNzQHJl ZGhhdC5jb20+CistIEJhY2twb3J0IHVwc3RyZWFtIGNvbW1pdHMgMGZhNGY2MjU2OGIxZGVlYiwg Y2NkNTZlMjI3MDNjMDk0ZSwgYW5kCisgIGMwOWViZWUwZDNhZTkxNDggdG8gYWRkcmVzcyBSSEVM LTg2ODkwLiAgVGhlc2UgYmFja3BvcnRzIHdpbGwgbm90IGJlCisgIG5lZWRlZCBvbmNlIHdlIHJl YmFzZSB0byBHREIgMTguCisKICogV2VkIEZlYiA0IDIwMjYgQW5kcmV3IEJ1cmdlc3MgPGFidXJn ZXNzQHJlZGhhdC5jb20+CiAtIEJhY2twb3J0IHVwc3RyZWFtIGNvbW1pdCA3MGI2NmNmMzM4YjE0 MzM2IHRvIGZpeCBSSCBCWiAyNDAyNTgwLgogICBUaGlzIGJhY2twb3J0IHdpbGwgbm90IGJlIG5l ZWRlZCBvbmNlIHdlIHJlYmFzZSB0byBHREIgMTguCg==