From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 20618 invoked from network); 3 Oct 2022 16:33:02 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 3 Oct 2022 16:33:02 -0000 Content-Type: multipart/mixed; boundary="===============9201496086556187022==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_firefox-esr=3A_update_to_102=2E3=2E0=2E?= To: ml@inbox.vuxu.org From: Duncaen Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Mon, 03 Oct 2022 18:33:02 +0200 List-Id: Message-ID: <20221003163302.z7z1OFy7S3dFCh_DEatrsJ84ILhitNy38el5GsElKb8@z> GitHub notification mails are now in MIME to allow UTF8. --===============9201496086556187022== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgRHVuY2FlbiBhZ2FpbnN0IG1hc3Rl ciBvbiB0aGUgdm9pZC1wYWNrYWdlcyByZXBvc2l0b3J5CgpodHRwczovL2dpdGh1Yi5jb20vRHVu Y2Flbi92b2lkLXBhY2thZ2VzIGZpcmVmb3gtZXNyLTEwMgpodHRwczovL2dpdGh1Yi5jb20vdm9p ZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvMzk2NzcKCmZpcmVmb3gtZXNyOiB1cGRhdGUgdG8g MTAyLjMuMC4KLSBbeF0geDg2XzY0LWdsaWJjDQotIFsgXSBpNjg2LWdsaWJjDQotIFsgXSBhYXJj aDY0LW11c2wNCi0gWyBdIGFybXY3bC1tdXNsCgpBIHBhdGNoIGZpbGUgZnJvbSBodHRwczovL2dp dGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvMzk2NzcucGF0Y2ggaXMgYXR0 YWNoZWQ= --===============9201496086556187022== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-firefox-esr-102-39677.patch" RnJvbSAxOWE1Njc3ODgzNGU3NDJhZGVhY2YyMTgwZWVkMjI1MTM0MjdlYTQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBvcmVvNjM5IDxvcmVvNjM5MUBnbWFpbC5jb20+CkRhdGU6IFRo dSwgOCBTZXAgMjAyMiAwMjoxMjowNiAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggMS8yXSBmaXJlZm94 LWVzci1pMThuOiB1cGRhdGUgdG8gMTAyLjMuMC4KCi0tLQogc3JjcGtncy9maXJlZm94LWVzci1p MThuL3RlbXBsYXRlIHwgMTg4ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogMSBmaWxl IGNoYW5nZWQsIDk0IGluc2VydGlvbnMoKyksIDk0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvZmlyZWZveC1lc3ItaTE4bi90ZW1wbGF0ZSBiL3NyY3BrZ3MvZmlyZWZveC1lc3It aTE4bi90ZW1wbGF0ZQppbmRleCA3NjUzMDNhOTMyMzYuLmM0ZTQzYzQ3ZGZmZCAxMDA2NDQKLS0t IGEvc3JjcGtncy9maXJlZm94LWVzci1pMThuL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZmlyZWZv eC1lc3ItaTE4bi90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J2ZpcmVmb3gtZXNyLWkxOG4nCiBwa2duYW1lPWZpcmVmb3gtZXNyLWkxOG4KLXZlcnNpb249OTEu MTAuMAordmVyc2lvbj0xMDIuMy4wCiByZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1tZXRhCiBzaG9y dF9kZXNjPSJGaXJlZm94IEVTUiBsYW5ndWFnZSBwYWNrcyIKQEAgLTEzNSw5NiArMTM1LDk2IEBA IF9wa2d0bXBsKCkgewogCX0KIH0KIAotY2hlY2tzdW09IjZiNDc2ODRkZTQyMTg3NDlkOTBhMDdi ODU4Y2EyOThiMDM0YTJjZGExMDY1NTk0MWU4YmE0Nzg5MWQwZDk1ZWQKLSA1NDg1MmVmOTM3Mzg3 Y2JhMzYwZmIyYmVkMzQ4YzliYzNmMTE1M2Y3MjQyYWQ1NDkxY2EwYjg1ZWU2ZWQ3NDU1Ci0gZGU2 NmUwMjYzZGQwYTJkODc1NTRmYTFkOWE0MDZkZWU1Y2IzZGYxYTc3NGRmZmI4NjM2ZTFiZTJiZDgw YmMxNAotIDFmNDgyNGFkNTFhNjYyMjg1YWMzYTBkODAyOTQ2MmEzYmYxMmIzNmViMDgzNGU2NWI5 Mjc2ZTA4NjkxMTVjMDkKLSBhMTZmYzZlMGExYmYyNTFhYjE5YjdiYmZiNjIwYjUzNDM3ZTViZjcx YjBlNzg3MWVkNDBhY2U4Yzk3ZGJmNjM1Ci0gZDkwNTdiYzcxNjA1ZjJhOTNkOTI0YmViMzc0OTcx OTViOGFkODM1MDFhYTRkMjExYWQ3MTEwNmU3YjliY2U0YQotIDM2MzE2YTdjNGNhODQ0YWMzZTgx YjJhMGJiOWVlNDk1MjAxN2MyZDI0MDRmNTI5ODQ4ZTI4MGQwNGEyMTU4OWIKLSAxNTBiYWZkMDIz OTMzNTU1NjdkNzViYjlmOTY2OTAwZTcwNTAyZmRkZGZmMjgyMmNiYmQzYmJjMWZiM2ZkNzg1Ci0g NWI2OWU3NjE2NjZiMjhlNTYwNGQ0Y2Y4YWJjNzJhY2YzYzNkNzlhYmViN2I2MjMwZTU2YWFhZTc3 NWVjMjI1YgotIGIwMDVjNjNkNWUwZDkzM2VmMWE0MTkzYjc1YTI5MWE2MTUyNGE5MzljMzQ2NWQ0 MWVkMTExNDE2MjEwZWI5N2YKLSBkNWEyZDJmYWZiZmM1MGUyM2Y1YjY4ZDMwZmNkNzM3NmQxMjdm OWY2OTdjODcyZDBkN2M4ZTE5ZWU0NTM4Y2IxCi0gMTZmODhlYzVkZTM5Zjk4MjA1N2FiY2YzNGYx N2IyMmM2OTg0NTNkZWJiNjJhNWExOGUwNDc1Nzk4ZmMxY2NhOQotIDg0ZDQ5MWY3M2JjNTNkYTQ2 MDVlZTQ1YTg2MzNmMTRlZTU2NzJiOWE2MWM0MDY4OWQ1ZTMyODk3NDRhN2NiMmQKLSA3NzgxYjZj Mjk5MjMzNjBmZDNhOTViZDJiMjUzMmViYTdmOTJiZWQyOTY0MGUwMjc2YzE2MWVhZGJlNTZhMTNm Ci0gNzk4NDkwNGVkZTM1ZGVmMzNjY2Y3M2ZkYTlhYTQ2Nzc3YzY3M2M0ZDI3ZGUzODA2ODczZDE3 Njk0ZjdmMGIxMwotIDRjNTdiNmViMWNkOTY4YmExZWI0YjQyN2JlZDY2YmFiMDRmYjQyNDI0ZDAz YWU0Yjg5MmZkMzY0OGUyNTViMmUKLSBhODBlOWUyYTYwNjJiZjY4MTA2YmExZDFiOGI3ZTJmZjYw OGNlNTJmYTU1ZDQzNTU4ZTdjMDczZWMxODcyNTE2Ci0gMmIwNDBmZjFkMDEwNTA4NzYwY2I0Y2U0 Yjc2Y2NlOWU5OGI0NjIwMjAzYzFlZjc3Zjg3YTMzNmNlZDBhZWZjNwotIDFmYTRmNWU1OWE5MzUy ZjE0YWVmZTBjZmY4ZThjNGVlZDRlYmExNmY0ZDhkYmNlYzY4NTBiY2UwMzUzMDFjMTgKLSAyZGEw YjA5YjliZjgwZjY2ZWRjNmUzZTlkNWMxYjc1ZmFlMTI5MDViNTE5M2NjNjRhNzNiYjhiZDdiZmNi YjA0Ci0gZGNlOTZjOWZjY2I4Yzg1N2Y4Y2MzNzBmN2Y1NjM1YjE0NzUxMzgxOTViMDVlOTQ0Nzgy YjA3MmJlZWJjOGQ0NAotIGU5MGRiZjg2YzE4MjNjMjA5ZGVmMTEwNTI5OTU4MzRlZDE1NTI4ZGM1 YzZkM2I1MDJlZDMxNWRkNDcxYTlkNWIKLSBmMzg2MjRjODFmMmY5ZGFjNGYwNWI5ZTlkNGQ2ZTdh NGUwMzgxYTI3OWUzYjRjNTM4MTFhZWIxZGIxM2NkMDAwCi0gMjIxYjdmNDAzMWE3YzEyMGQwY2E3 NTNkOTNjNDFjMThhYzRmOTUwMGFlNDI0Yzc5ODNlNDU5MzQ5N2RkYmJmOAotIDYwZjVjZWIyMTI4 N2E2Nzg2YTZkZDJkMTc3MzI1ZGZiY2M2Y2E3ZjlhNWRmMWI5Mjk5YTJjNWJiMDFkOWMxNzIKLSAz MDhjZTI1YTlhMGE5MDM4ZGQ5NGMyYzIyODg5YzU0ZGVmMzkzN2QzNWVhZmJjYjM0Yjc1MDI2Y2Yz ZGUzYjhmCi0gMmQzMzJhNmY1YmQ5MjAxNzcwMGExNWRhNWZlNTA2NjEyY2VhMDNiNDlmOTAzNTky ZmMxMDVmY2E5NzhjZDFkMwotIDVjZDM1NjY2ZjU0YTVhZTRlMzVhMWNhNGM2MjdjZWM4YTQ3NTk0 ZGE0MDgzYWRmNGYwNmRiZTMxYzIwYTc0NDQKLSAxYzEyNTI3NjVjYjI0ZjZhMDIwNmI2NDhkODM0 NTY2YWNhOTIyOTA3NWY3NDEzZjljN2RlZmYxOTQ5YTk5YzM3Ci0gMDAyNzcyYzQ2ZDZhNzE2MmUy YWRkNDcyNmYxMDVlNGMwZTM1NWJiYjg0Y2U5MWIwN2FiMDI5NjdjYzVmMWViNAotIDY0Y2UyYzA3 MzVjYWY5YjY3ZDJiZTAwM2IxZDY2N2JjZTVmZjYxNDY1MzE1MWM2MTdlNGQyNmUzNDkwMzNlM2EK LSA2MGJkNWYyNTMyNzAwYWU5MTM5ZDRkNTlhNTcxYjcyYjI4MDZlODA2MzBmZGRiNWY0NDQ0Yzdk NmUzNzdkMmRjCi0gMjc1MzMxN2I3NTgwZWUxYTM3NzI3NTkwNWUyNTQwODQyNjNkMGE4N2JkYTFi YjU3MjUzN2ZhNzU0ODlkOTJkYwotIDdmMWI3NGQyY2M1YTljNGM2Yzc4NjRhNjJlYWRlZjJiM2Q3 MmM1Y2MyMDEwZjVjMDNiY2UzYTlmYWUyMjg2ZGMKLSAyMjMyYzNiOWE4ZjMxMzE0NTk2NzE1MmJm MWRiYWZkNjIzMzU5M2NlYjQyMmQyYzMyNzdkMWI0Y2ZlY2I2ZjUwCi0gYzQxZTg2NmYzZmMzY2Yw ZTAwODg2ODFiNTViYjg0ODlkZTFjNTg0MGNhN2RjNTJkMWY0ZjA3N2I1MzQ1MmJkNQotIDVkNzg3 ZmQ2YTlhYTA2Y2UzMWE2ODIzYjMzOTNiYTdhZDY2Y2YzZDM3NGRkNmVhYWIzNjQ4MTAzZTgyNmEx MGIKLSA4ZDczZTAxNjU1YWY3MTE3ODU2Mzc0YmUzNjY5ZDUzMGFmOTZhNzljZGI4MjM4YmM5NTM2 ODhkNDVlOTQ1NjdjCi0gMDNmMmIxMzM3NDY3NDZjMzI4Y2I3ZTQwNTViNTY4ZDhlOTljZWE1MWM4 NDUxMzZjM2Y0NDQ2ODQwZDY4ZTMyZgotIDY5MWIwZTc2MGViZTUyNjlkZmE0YWE0ZWE4ZGQyMTM5 MjYwZmJiMGNhMzhhZjRjNTQzODU0OGI3YzdlZTg4ZjUKLSBjNjM0OTIyMzZlNzViZjk4NGExNjcx ZGU5NWRkZGM5NTRjMWI0YTFlOTJmNTIwMWM5YjMzM2ZhZWZhZTkzMDM1Ci0gZGY5YTAzNmM2N2Fl Y2IxZWE2NWY5NzA5YTExZjZjY2RmMjUzNDUxZGNiZTZiMjY3NDM3YzUxZjQyMmI5ZGYyZAotIDMy ZWM3OGE1MTQzOWIwMmYwODdjMTJjNmJlNGE5MTU5ODI2MTEzZTgzNzc0MDg1ZTgwMGMzN2I2ZDdj MTEyYWEKLSAxZTQ0ZTNkZWQ1YWEwN2Q0NGYzZmRlYThjZjY4YmIzM2ZkMjQzY2RhMTU5Mzg0ZWE4 Yjg3ZTc4M2VkNWM5YTY1Ci0gMWNhYzQ0Y2RlYzY4YjU2Yjc3YWJhMTM5YTg0MjVmNjA3YmFjMzRh ZTJlMDllMjdlY2ZmMjUyMmIxNmZlZjQ0ZAotIGFlZmI0ZmJhY2JkZmM3NDlhOGQ1ODg4ZjdhZjQ4 OTk5NDA2ZjIwNzg1MGZhZmFlOGVmMzljMDgzZTA4ZmE4MGMKLSA3NTNkYmNmZmRmNTRjZTM3ODdh OTM5NTE3YjA1OWYxMWMzMDVlZGMwMzViYzIyZjhhOWVmZWQ2MTQ1YWY2MzkxCi0gNmMzYmU1YWJh ZjM4NzgzOTBiMDc0OTcwMTMyYzRjYmE5MzVmNzE2MGYzNjVjZmE5OGEwN2U2Yjg4MjA4NGJkZAot IDBiNzc3MTk2NWYzNGM4OTBkZWEwZDIyOTBhMjgzMjEyYTFjZGMwYzhjODA0NGVjNjM0NjIyZDUy ZWI1OTVkZjkKLSAwOTEwZjk4YTg5YjcxMmE0MGFlYjQyNzYxZjI1Yzc2MzgxOGFmMDVlZGI1Yzk2 ZTJiNmNmYmEwMjNjMjhhYjczCi0gNzU4YWI2ZWExNTA3MDJlZTBkNjIwM2EwZjc1ZThiYWE1OTVj NGEwZjNkNGNiOWI4NzA3NmY3MzJhMGU0NTQ2ZgotIGQ0MjU5Mzc1ZjMyMWI5ODQyNjg4NWUwYjkw MzE5OWRjZTFmOTg4Yzc0OTYzMjk3YmJkMWEyYWE4Zjk0YjA1NDQKLSAxNjE0ZTEyODhmNmQ2Y2U0 M2E3MzQzNTg2MTQxZGY1ZTEyMWNmZjdmMWZkNzAzYWI0ZWM0MGE3ZjA3NDk4ODQzCi0gM2FlNTIx OWEzODRhODcyZmRiZGQ4Y2E1ZDk5YWQ1MzcwZTBkOGQ4N2Q5M2Y1ZTM5ZTk2YzVhMmRjMjY3MzZl MwotIDA1ODA3YjFjMTc4NDlmZmQyYTNhNjNiMWUyNjgxNWRjOTQ2M2FhM2MxMzdmNjQwMTEzNTMw ZDI2NjJkNjQxMTYKLSBlNGYzY2ZiMTFkZmFjOGVjNGNhZjI5ZjM0ZTIwYTBjMGJiNzk5NjQ5ZmQ1 YjUzNGYyMmYyMDJjMjM3NDkxZjdmCi0gODBiMmI2NDQ2NTkwYTlmYzU1ZWQ4MGE5ZTA3YjY1N2Nh ZmM1ZDUwMjk0OTg4OTc0NzQ3YzBlNjBkNDFmNTY5YgotIDFiMzJiYzEyODJkZWQ3ZjZmMGYwOTc5 Y2JjZTM0OTZlZDA3YjFmY2FkNjRlNzBiYmJjMmViNWQyYThmMzk1M2IKLSAwZjgwZTNiMGE5ZTE3 ZjM5NTYwYjdjYWQ4MjgwZTI1YzAyNzg5MzVmMTI1ZDhlNzI0YTIzODExMDJhYmZmNzgzCi0gZjI1 OWVlMjY4M2U1MjUwNTFkNmYzMTRkNGJhZTRhOThjMDQ4MmEyYTQ0M2FhYWMxMTYwYjJlMGMxMzI2 YjkzMQotIGI5YTllYWI0YzVlYTExMGNjYmNlMjBjYjg4ZTY2NTJlMmNmNGMyOGJmZDBhYTk1OTA3 MTQ4YmVmZDE5ODU0NGQKLSBhNWE2ZTliZGFhZDQyMGYyODFjZTVmZDE2ZGFiZjUzMzhkNDhjN2Nk ODUxOGMzOGIxZTEwMWI3OWI1MzBmZGI5Ci0gYTFmZTZhMmM3NjA2YjA3MjA5MzM0OTZjYWQyYmM5 NTk2OTM5MDVkYjg3YzNhMmU1MzEzZGI4MmRiZmViZGE3YwotIGQxYjIyYTQ5NWM2MzdkNTY1MmM4 NGFmZTg2NTBkODc2YjQyMDZmMmVhMGQ5Njc1MWJlYzY4NGVhNjMzMjdmOTgKLSBlMTU4N2RhYzA4 MjQ3OTgyMTY5N2Q5N2I0ZDVjYjYzYThkMWY5MTg5ZmRjMjA0ODg4NWQ5NjNhZWE5NWI4NDAwCi0g NmU0MGE1ZDVmMGNiODc5NGVkYzVmNmExZmFlNzc4ZDg5ZjZkYmQ5N2Q4YTI4ODIzNmQ3MmZhNTcx ZmZlOTFjOQotIDMzYjVkZjYyNWFlMTNlYzM1YjQxYmIzNTBlOWU2NmQ5Y2NjMDRmNGQ0ZDhjN2U0 NTAyMDM0NDczOTg4MWU2ZDgKLSBlMmYyNzE2OTFiYjFiOTg3MzU4MzE3NWZmMzAzYmJhYWYwNWE5 ZDEyMDdmYmU4ZmZmYzM0ZWM0YWJjZmMxNTQ1Ci0gMTMzODJkYWJjNjA0ZTk5NTUzYzk4YjllNDFl YjA0NmQ0Njg4YjE1ZjJlZTlkZDEyYzRmOWM4OTY3YWZhNjJkMQotIDc3MTMzYzY5OTY4MDczZmVj OTA5ZGJlOWU0NGQyZWFlYTAwMmNiMGQwZTE0MjEyNTg2NWQxYzAzYzg5ZWQ3M2QKLSBmODk5ODEy OGIwYzY1NmU3MjEyNGJhZWZmNDVjNzIwMTM5NTNmODMxNGFhNDk1OWI2ZmVmOGExYjMwMzk2NDdm Ci0gMmYyNGU1ZGIwMjVjMDMwMmZlM2I2OTZmMjgwZGNiYWI4MzcyOGFhY2NhZWZlMWZmMDgyZTE2 NTI3Njg5NjI5NgotIGQ2NTgwOTVmZDJkM2U0ZDNkZWNiOGMyY2RhYTY0ZjAyZmQ4YjY2M2JhNzEx ZmI5ZjIxMzBlZDdlZDJhOTcyOTEKLSA3YzI4YTgyZWNkZDYyMjY1M2IyNmE5ZGQwOTEzYWM3ZDdj ZWJlNzI0NmY2NDg3NGZlYTJkMWZhNGFmMzU0YzJhCi0gZjc4Njk0ZDQzODAzMmFmM2NhMWEyNjVh MDg5NDA3ZWIxMmI0MzFiZDMxNDE3NzY3MmE2NjMzOGI5YmY3MzkwZgotIGVhMmQ3NjliOTBhMDY0 MDBlYmEzZTFmNGVlYzU4MzQyZmU0NDUwZWNjZTM4YjFlNzIxOTIzYTY1YmVkMzQzMzcKLSA4ZWRm NWIwNGI2Y2I0NzdmNDgyYzE0ZWZkYmFkYTcwMjNmZjdhMGVmNTg0YTRjMzBiMjM1MGU3ODI1YTYx MmEwCi0gODUxZGI2MGEyMThjMzZiNjFlZTBhZGZjZGM0NzhiYzA1MWM5NWU0MWE0ZGJhNTRkNDM1 OTRiOGYwM2M2YjE4NwotIDZhZjcyY2FlN2Y3MmNlNjhjNjQ0ZDQ5YjZhNjIxOTQ1ZjVlOGY3OTEx OWE4NmJiNjdlZTE0NDU4NWY3MzQ5MjUKLSA3YjAxNzcxMDc4ZWM0NzViMDEwM2ZjYzQyMjJiMGI0 MGViOTJlYzY0MTgwYWFhZDAyZjI4NDZjZmRmYjNlMzE5Ci0gMGM0ZGY3OGVhZmJiZTdmZjk4ZDll ZmYwM2JiMjU4ZDFkMGY0NTkxMTAyMTQ3ZjY0M2VjMzk1NzExZjM1ZDk0MAotIGNmMjE0MzRmMjRl MjIxY2U1ODE4NGY0M2E1ODJjMTAxODdlY2ViN2E3MWRhNWQ4MTE1NmNjODcwZDc4YzFmNGMKLSA4 MzkwODhlMmYyM2Y2YzYyYzM4YzQ1ZDVmNzAxMjUxM2Q5NTAzNGFhNWU2YWIyODMwN2YxNTJkYmMx MGY5N2QzCi0gNDA1OGFlNmRkN2I1NTZiYWUyYzEzYmI2ZmEwYzVmMTYyMDdjNmZlZjRlMDgwMmQz ZDBiYWRhZTIxMDhhMGRhOAotIGQyYzQ3M2ZiOTNmMGM0ZGM2N2FlMThjMjVmZGM0MTQwNTZiZjc3 OTAzOGMwZjVkZDI1YWE2M2E5YTVjZmNkMGEKLSA2ZTMxYzc5Yjk5NTVmZDg3OTUyOGIwYTYxNDI5 NWRhNjlhYjI2YjYwODI3NTk0NmE0YTVhMjkxNzhhMmFlZDIwCi0gODUyZmU5YWIxNmQyOWY3Y2Y4 ZjQ0M2JmZDY1ZmExZDUyMmE5ZjI3ZWY4NzY2YWQ3MmEwYzIyYTY1NDUwZGMxOAotIDk0MTE4NzNi MWVhMDFhMWI4NjU2OTU3YWVkYjc5MTM3ZjRjMTg5YjljZDNlOTY2MjZjOGU1MDM1MzljZjJjNGIK LSA1ZjQzMTA2NDcyYWU2NmRjOGMwZmZjMzE3ZmFiYTA5YzIzNzBkNGYxODgzN2MzY2ZhZjA1ZWI5 YjAzZjMzYjkwCi0gMzBmM2Y1MDEzMzUzMmNlMzc5YjlkNWRkMGY3ZTgxMjA0OTA1ZThhNDNhMjdl OWQyYWMxYTI2MDU5ZTM5MzkxMwotIDI4NWY2MTVjYzg4NTJmZDc0YmQ3NjkzYTVhNDViMTA2ZjI5 M2MwYTJkODk4MzZlOWYyNTMzNmFjNjM3NmFmNjkKLSAxOTBhYzc5OTFhOGI1MDFmYWIyNjU0ZDIz YjVmNmYxZTdhNWYwY2ZlYjQwMmM4ZjVmZTM4MmQyNWMyMjIyZGM2Ci0gMmRlNzY3NmM3MTUwOGZm YmIzMzdiZGQ4Y2E2OGY5ZDJmYTFlMzBmMjNlOGJlMjgzYjkzN2M1YzRlMzBjNTlkNiIKK2NoZWNr c3VtPSI5M2RkMDMzNGQyNzU3MzFlYTRmODY3NTAwMTExZmUzODA1OGUzMzhiMzE1OTFmOGNlZTc0 MTMzYTU1ZmY0ZDQ2CisgZmEwZDBjMzg1MmUzMzgxNzFiNzYzZGQwZDQyNTQzZjcyYTBmMmEwZGEx ZTMyOWEzMTdmZDQwYWQ0ZjA0NmFiMAorIGY5MmZhMGM4NmFhZTQ5MTEyMTJkMjE5ZDAzY2VjZjIy NDNlNzgxZTE2NmRiZWJiODdlMmI5ODcyODMyNDU4ZDQKKyBkYTMwMDI3MzAzODg5YWI4MDc1NWYw ZDVjZGVjYzRjOGQzMWQ0ZmQ5YmU0MzVmYjhkYzU3OWZkNzE1NzQxMDI3CisgNzEwYWEyNjJhYWQz NTkxMjAzMzg3ZDA4YzIzYWViZmU4NjJkNjQ3MjJiZTc3ZjhmYjc2OGQ2ZWFlZjRkNmYwOQorIDE2 N2FhODllMzcwNmM1YzFlNTQ2OTRjNzZhN2Q2ZTEwYmFiZjVkYTE5NTNjZDFiZDQ5OTQ4M2ZjZjIy MDljYzQKKyAxZWJkYWYyYTY2NDVhNTczZGZmM2FkNTMwN2E3M2FkMGNkZGVmNDZiNDZlN2ViZDZi OTJhODBhMzYyYjdkNWQzCisgZGUyMDQ2NjUwMWRjYjc4ZmM1YTYxNjIxMDdlNzgzZjhkNjMxYTQ2 YzcyNmUxMTIyMmQ0Njc3OTQ1NTBmMWRjYworIDhmMTQwMjI2NjZlY2QzYjYwY2Q4ZGRhYjE2YWFk OTZlMzZlNTYwMmM5MzE0NjcyNWQzNmRlMjQ1MzY4NTRjNjUKKyA1NjMwMzk0MWEzYzhjOTU1YTA3 OTc2YzE0N2UzZjJkZjg0YTI4Mjk4NTU5OTFkYWUzYjU3OGI2ZmNlNWViYmM1CisgNmUxNjljZTFk MWViMTMyNzJjZDk3NTI0N2M3ZjI4N2NlZDFjZmQ1Nzk4MzhjMGYzMWVkN2ZhNGUwY2FiMzEwYQor IGE1OGJmNjIyNTAxYjZiOWU1ZDU1NWNhMDVmMTA3MmRhYWViNjViNGQ1MWM1OWM2ZDllMTQxOGIw OTkyM2U0ZTIKKyBlZjIxMDYxZWRiODU1ZmE1NWRlYzkxYjE2MDU5M2ZjZGJhMDczMzY1OWU5MTli MjU4MjY4ZjI0NmM0NzBkMTlkCisgMzNhZGNmYjQxZDlmYzhhMTllYTBlNzAxNzM2YTYyMzczOWMy NmU0NDRhZTNjZDA4YWI1ZjU4MWY0MGUwZTI0MgorIDI1ODUyMTY5OWQ3YjE5ZGFjMDIyZTFiMGRl ZmU0YTIzMjFlOGM2ZWEyNzdlYmMxOWFlNDU2MjIyNWEwNTI2YzEKKyA2MGI5MzQzYjU1NDVmYTRh OTQ1ZTI0YTM2Nzg2ZmJiMzJmZGM1OWViNGMzMGVhZDVlODA3OTdiM2Q3M2RlOTc3CisgZDc3ZTE1 M2Y1MGRlM2M3MGRmYjBmZDE0OTdhOGFkMjMwNjdiNTA4YzEzZmVhOGU1YzAyYWFmNTRiNmI3Mzcz MAorIGJmYjJiNDkwNDc1YzRkMGQ0OTI1NWViOWJmODY4NmIxMGJlYmEzYzAzNzkzYzRmYmE3Y2Fh NzFmZWE4MmMyMDcKKyBiOTk2N2FkMDllOTRlMjM1NmRkMDA2NjZhMzU1NGRmOWY5ZTQ3YjI2YTJh NDJmZDBjYmJkYWRkYTg4YzJlZDQ4CisgZTYyYTQwNWU0OTg2MDBkYTkzNDMwNjYyNDJlNzFlZDVj MjAwOWIzNjczOWFiYmYxZjJiMjkxZTI1NDE3MDU5ZQorIDA1OWU0OTBmODU1M2YzZmIyNjIyMDk0 YzdlN2Q5ZjJmNmU4ZjFlNmIzZDgyZWM5YWEzZjQ0NDBmYjQ1NTU5YWIKKyBmODVkNzJkNjQ2ZWYw MTJmMWNhYjA3Nzg1MDc2OTI5MDUwN2U0YTQxOGNmZjUyZTg2MWUxMjUwMzA0OGQyMmU0CisgNjBk NmIxZTAzMzVkM2E2MTRjODAwYWI0ZDNmZmU1NWQxMjFjNmRlMTI4YWFjZDNiOGEzZTAzNjMxOWY3 NTI0MgorIGRjYTU0ODRhOTQ1NjkxNjJkYmUwNGQ5YWY5NGYzZTQ2MWIzMmUyMWZjZjJlZWUwMDBm ZjE1MWRkM2I3Nzk3YzUKKyBjYjA5MmMyYTY5MDBmNzdjNjEwODY4ODc2MDg2N2UyYTAxNmM3MGFi MjdjMzllZDI4YTE0MDI0N2MxMzcwMjYwCisgYjFmZmFiMzViNWI1ZTE2MzUxMjE0OGIxZWU0ZTRl Y2YzNTk2NjRmOTE5NjMyODM4M2VlMzYzOTE5MTcxMzFkOAorIGVmOGRmZDhjYzc4YTJlZDU1Yzkw ODIyMzZiYWJmYzI5ZjkwZjA5Nzg4NjRhZWY0ZWJiNzFjNTJjOThlNzM3MDIKKyBmYzFjNjE4MzNj YWEwY2Y4ZmMyNWRjMzE0OTk4ZjdkOWEzZmIyODI2MTljZGFmNjQ0MWNhZjE3ZmM3OThkYmIyCisg NmZlODY0YzlhOGJkNWIzZjc1ZjAwYWU5MjBmYjk5NTk5NzMwOThkZjgwMWIyOTA2ODM1NTBkMjg5 MTY4NjQxNQorIDNlYzEwYjllZDlmYjZmYTlkMTEwODQyNGY2YzE4ZjkyMDlmY2IwYjNmNWQ3YWU1 MTVmYThiNzg5NWNhY2Q4ZjcKKyA5NjliYmFlYzU2Y2Y3MjdiMWY0MTEzZDlkMDUyODhkNGU2MGRm YWZhNzFhYjM3OWIyZGYwODMxNDgxMmFiNTljCisgYzc2MmM3MjhjMTgzYjg1NjFjYThkNzhlOWY1 NjVjMzAyOWQ5MGRmYzc2Y2UwNGQyNjZkZTYxNGJmZWM3ZDBhZgorIGJjMGYxZTg0OTkxMGI3OGE3 OTBiNzZmNjMwZGM4OWU4NmU4MDc5MTRlNTc0NjRhOTE2ZWFhYjA4ZmQ4NjViOWQKKyA1NWIwN2U1 ZDYxZWY2NjhjN2U1M2I3MzcyZWI5NjQ5YzYyMmVmY2UxODUxZGMxMWNmZDk2NzUwMWE3NmFmY2Mx CisgNDdmOWYwM2VlMGFmYTRiZjc3ZDFjOTE0MDU3YjZiMTdlMDRiYWUxMmZjMDU5NTVlMjZkOGIz MDA4NzJiZDRhZAorIDcwMmNmN2JlNzAzYjBjZjllOGQ2ODIzYTU3OWRiNDhhZDQ1ZGQwN2U1NjU4 MjM3YjZkY2EyZWNmMzFkNzk3YTYKKyBjZGNhYTVjOWJlZDYxNWQ0MmMzMGUzY2I5MTE1NDhlNzg1 MGY4NTY2ZGZiNzZjODNlY2E2ZTdlMmMyOWQyYmE5CisgMDlmNWFiYjhkODlmZDJlMTJlOTJhOGI0 ODk4MzE5Y2U5MzcwODQxODM0OGZmZWYzMzZkNGIwMjgwOWZhMGNkMQorIDQwMzE1NzIwZTYyMjRl M2I5N2FkNGM4MmIxYzllMjcwNWUzZTFkNTExOTY3ZGI4MTg0ZmMwNDYzNDQwMmFhNzcKKyBiMTJh YmNjNTY5OTYxZDIxOTlkNGU2YmRkODk4ZDMxZDM0M2I5M2ViZGQxYTU0NzVmMjI0MWIwNzM5MWFh ZDMzCisgMTRjYzMzMDMzN2IzM2Q0MjczMTQxNzljY2ViNTFiMTFmYTgxZDUwMzE0YjgxNjI2NGM5 MDI5ZmMwOWIzZWZjNgorIDM4MzYzYmU5MGZlMDFlZTAyYjk3ZDJlYWM5YTA0YmQzZGM3MzIwOTli Nzg1NjFlNGNjNzNiNDBjNDk4MGEzNGQKKyBiNjYyNTE0NjYxZDI1NTFhY2U0MDA2MTRjOTA4YmQ1 ZWI1MTI5ODMwNmNjZTgwMWY4OGVkOWU1YmUyYjNjN2JiCisgOWEzODY1MmJjZWM5MjViM2MwNDY5 NGNhZTVlNjA4ODMxY2M3OGY1NmVmMjJlYjNjOGJiMTY0MmQwMTE2OGQ1NQorIDZmY2JjNmJlMTMz NmE3OGE3NTJlNTFhYWE0OGIwMmU2NDMxOTY5OWFiZGM2OTY1NTE5ODg3NDI2YzQ5NmM1NDUKKyA3 YzBhZmI3ZmM2YzEyYmUzNDBkZTU2NGJiYmM3M2JlNzcxZGMxMGU4Nzk4ZjFmZWEzYjcwMWQ1ZGI0 MWMzNGZhCisgMWM1MDg0OTMzNWViMWIxZWE5YjQ0MDQ3YzI5MjUwYzFiZmU1NTMzMGNhN2U5MzAx Y2M0ODdjNWQ5ODQ0MzU1YworIDAxNDQ4NThjNjlkZmFmMzBhYjA1MzQwOWZkZDM5MTFkODYxNWJi ZmZkMWQ2ODRhNjM3MmRjYmIzOGEzOWEyY2QKKyBiZTdiMzMxOTU1ZDUyMmNkYzhmN2VlZTc0YTZl OTdiNWNkYTA5NDVmZWU1MzYwNGIxODdiMzI2MjBmZTA0ZjdiCisgYzdkMWZiYmY2MTQ2MjJlMGU1 Y2MzNDdjYWI2MTI1OWJkODZiMWUzMTc4M2Q5ZWRmMWZkMmFmYTdjNzUzNTA1ZQorIDU5MjQzZmMy ZGU2Y2U0MmU0NzcwMDU3ZDljNzRjM2NhODViYWViZjE5NzdlOWU1YjU2OGU4YmM2YWRmZmVhNmYK KyAxZGE4OWZhODI2ZTc1MDhiODRjZjJjNTM1ZDQ3OTMzNWJjODkwZjMzM2ViYWNmNDEyYzY3OTJm MjZjMjY0MWIyCisgN2MwYzU2NTUwY2RmNjYzYjk0YTZmN2JmNWM3MWRiZThhNWYwOTY4NTY0ZDIy NDBmYTU5Yjc5YmFhZmRhYmEzZgorIDMwNWUzOThhNjQ0NDNkZDNiZDUwMjUwYzUwMjUxNjNmYjFi NzMyMGYzZDEzNDQ5M2I4ZmRkYzE5MjIyNTA2YWEKKyBmMzc4NjEyMDNhNjQwYjZiNmFlMDBlNDk5 YTE0ZTcxZTU4ZmEwNjQ4M2JmMjIzYmFmMWJkYmYyYTQ5MDcxN2NiCisgNjhjMmRiM2IyMTNjYTlj NTg2ZTc4NTQ4MTcwZDVkNzYzZDE3NzU5OTkyNzcwMjhhY2M0ZGUyNmY5NGEzOTZkOAorIDJjMjhh NmRjMWY4N2ZlMTI0YjRiMTUwNGVjODBhMDZjNWY1MTM3ODkxZmM1OTk0MzJiY2RiNGEwZDVhYTZl NDEKKyBmZGQ0Mzc3OTE1ZWYyMjAyMWQ3NjEwY2I1YTlkNmM5MWU1M2FjMTZlZWU5ZDYyNjhhN2M0 YzljMzU5YTQ1YTBhCisgOTk5ZjhjMmRiMGFiZjk3NDcyMmZjOTc4ZTdmNzM0NTdlNjc0YThmY2E5 YjRjZWQwNGU5MmUxNjNmZDg1OTdkYQorIDViZjczNzgwZTFmOTUzZjM0YzIzNjdmMGMyN2NhNzE3 YmFlZjE0YWFmNjQ1YzM4NTUyOWM2YzQyYTNhMWM3NmUKKyA4NDE0NTQ4NDk2NzkzMzhhZTQwZWVl MGQ3ZGM2M2M0MzdkYWJkNjc2YWFhYWNmY2YzMGRhZjA2Yzk1OTRjNzNjCisgOGIzZTlmMWE3M2I0 NTI5MDU2N2E5MmYwNDg5OGYzMDEzYjJiZTk4NWEzM2RlMTM2MDQwZjBiZDNkOGNhMzg3NAorIGI4 MGQxODBkYWNhMmQ5MjBlODZhOTExNTY2ZmRhYTFkZDFmZDhmYjM4NzBhNzVlMGFmNGUyMDhhMDVl OTdlOWMKKyA2M2E4OGI2YjJkYjE0MDM3Zjk0M2I3YmMyOGNmZDQxYzJjYjI5NjY2ZDM0ZDRjZjZj MTkyNjZmODMyMzQzNmZkCisgMDQ0OTRhOWIxMWI2NWNlMjQ2MDQ4NTI1MWMwYmI5MDc2YmFmZWZh MGUwOTYxZjU0YTIyYjJiYWY5ZDIzN2Q1OAorIGFiOTEwYzEzMzBiM2I1ZjgyMzgzYzNmNzNjNDZm MWJjMmU3MTJmYTAwY2M2ZWM2ZTAyOGNlZGY1Y2Q1NzhiZmUKKyBlNmQ2MGIxYTBjY2QxNjIzNmYx MTg2ODI1ZWI3NTg3MDNjOTYxMWIyZWYyMGE2ZTg4YjJkNGI3MDUyNDExYmI5CisgNzQyOWE0Y2Y2 OGRhYzNkNjAyN2RhOTQyMmQyOTgyMmYxYTY4NTNiYzY2OGYyMzg0OWNhOWU1NzlhOGJiYzI5Ygor IDQxNTdhMTFlMTkzYTkzMzQ5YjkyYzFkMGE2OWFhMWYwYzhjZmYwNzA3Mjg3YjhlNzdkY2M2MWFi OTAzOGY2M2UKKyBkNTZjNTgzMjYwN2JhOTBmMmM0YTE2YjFjZmE2NTc3MmUwYjNjYjlkOWM5ODdh MjU1MzE3OWIwMzNkNDU3NWI2CisgMzc2YmVkYmIxZTUzMjc2ZGYwZGFhNjQ3NDZkYTYwMjJiZGNj YWRmMGEzZWZiMmVjNThhMjg0ZTNkODc3YjA2NQorIGFiZDM2NDA1MmEzZmFiZTA0MTI0OTIxNjVl Y2Q1NGUzOWU4NWViMDBkOTNiMGFlMWY0NTFjYTI4ZWFiNWNiYjkKKyAxNmY2ZDllMTYwZmVjZDlh ODRmYjRmMTQ4NmU1YjljMWM1MjAyNjZhMDUyZjQ5YmY2ZmExNzIxYzZhNjliNmJkCisgMzlhMjRk MjAyYzQ0MGFmOWQyOTc5NWY2NGM4MmQwM2Q4NTk1MGVmZTA5NjI4ZTQ5N2E3NjMzMDVlNjBkODA2 ZQorIDRjZWJlZDJjNTAwOTQ2ZjE3ZGY1YzU1Y2ZkNzA3ZmM0OWEwMDc2N2U2YTgwYTcyNTgwNzc4 OGMzY2YwNTlmMGEKKyAyZDdhM2QwOTliNzg0MGNhZmMxZmRlYmJiMTY4YjczNjQyY2Q0YmNmMjMx ZDU4MGJjNmJjYWRjZjNmZTJhZjBmCisgZGY2MjViZTNkZmRkMTViYzY1NGIzOWE0NzBjZDE1OTli MDM0MDVmMWUyNTg3NDEyNDg0NWMyMWRmZmViYjRhNworIGJkZDJhYTdjY2U0NzI3Y2ZjMmM0ZGEx ZGVmZmNhOTA5MmQ2NzkxZGQ2NTQxMGI3N2FhNjA0MDU0NGVhMzQ1YzAKKyBjZTI0Nzg5MTViNTU0 MTQ4OGEwMmEwNDFkNzAzODNiNTU0Y2JjNjE0NmRkYmM4ZGM1YTA2MTI3NWE2N2YzNDQ4CisgYTQz ODkyZmRiYjM0OWE2ODEzMmY0M2ZmZThhNTc0ZWNkNzUxOGZiYzExMTVhMDFkNTc2ZTE4MjVkMGUz OWJhOAorIGQwY2VlNTVhYzczMjc2YWExNzNiNmQ3NDlmODNjYmE5OTlkNjFmNjRlMTFhOWRiYTY0 OGRiNWU2YmZjNDFiNjQKKyBkYWZlMWZhODBmNjVkMGFjZjUxMGUyMjljZjczMzdiNDgzNTlmZDE1 ZjRhNGZjZmI1ZDE3MmViNmYzMmM4ZGVmCisgZmY4MTk3YWJjYjI4NWQyNTBiNDA3YjY1ZjA2ZmEy NDZlYjVhOWQ4ZWVkMTk3ODJiYWVlYWI4YmI0MWYyOGQzYworIDAwODgzMGFlMGRhN2FiOWMzMWMx NmViNjcxYzUyNDJmYjUwZWVlOTZiMmY4ZjhjMDBkOTVjMGE1MWJkMjU5NmUKKyAwMGZhZGZmYjE3 NDUxMjZkNmYwNzMzMjdlYWI1ZWYwZThiZjgyZDc5MjllZGYwY2IxZTM0YjQ5NDFhZWZjOTBhCisg YjJhMWM2NTIzMjkwZWJjODk1YzhiMjYzMzcyYzg2Y2ZlOWU5NTAxNmZjYmJkZDFiODk2NGZjNDU2 ZmYwZTg1NQorIDEwNTRlY2M5MDEzY2IzNDdiNzdlOWE4MGQ5N2ZhODk0NDRlNDRmNjY3ZDVkNzU4 YmViOGI3Y2E1ZTlkYTJiMTIKKyBjNjczNmRhYjExNjVkZWIzMzAyNGU2ZjMzZmVkZGU3OWY1NWM2 Y2JhYTRhODAzZWE0ZTQxZGVjNjhiMzMzOTliCisgNWFhMDIzOTMyOGI0NjU2ZmJlZDg0ZGJjYjRk OGNjMjRhODIzMjQ1NWM5ODg4OGMwNjRmYTYyYmI5MjdjYTc1ZgorIGFhYzI5MTU0MGE3ZGE5YmVk M2VlYjcwM2FkOTc1NjE0ZjQxYjZmNzZlMTVjZWIzYjA2NjAwMDc3M2NhOTYxYWIKKyBmY2FjMjhi MmUwMmJlZWVjY2RkYzEzMWRhMmExMmFlOTM0NGE0ODY2OWNjMzAzN2NiNmYwNDI5OTM2YWY5ODc5 CisgNjkzY2IzYjUxOTZhMDI3NmMwMzk0OTdiYzVjNmUxYzk5ZTM3Njk1OWNiMWE5ODAyZmZjOGYw OGRjOWQzMmMyYQorIGQ5NjJlMDk0ZWM0OGE4MDQyMDY3ZDUwZDJiMjJiODcwYzk0YjEyZmYzNWFm YzU4Yzg1YmYyMDAxZmU5OGRhOWIiCgpGcm9tIDI4N2FiYmI5YTlhMWEyNDA3MmE1NmZiNjFiMzBh Yjk5MWI5YjBkNmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IG9yZW82MzkgPG9yZW82 MzkxQGdtYWlsLmNvbT4KRGF0ZTogVGh1LCA4IFNlcCAyMDIyIDAyOjEzOjEzIC0wNzAwClN1Ympl Y3Q6IFtQQVRDSCAyLzJdIGZpcmVmb3gtZXNyOiB1cGRhdGUgdG8gMTAyLjMuMC4KCi0tLQogLi4u L2ZpcmVmb3gtZXNyL3BhdGNoZXMvZml4LWNiaW5kZ2VuLnBhdGNoICAgIHwgICAyMiArCiAuLi5u LXBhdGgucGF0Y2ggPT4gZml4LWZpcmVmb3gtZGVza3RvcC5wYXRjaH0gfCAgIDExICstCiAuLi4v ZmlyZWZveC1lc3IvcGF0Y2hlcy9maXgtaTM4Ni1mZGxpYm0ucGF0Y2ggfCAgICAyICstCiBzcmNw a2dzL2ZpcmVmb3gtZXNyL3BhdGNoZXMvZml4LXRvb2xzLnBhdGNoICAgfCAgIDEzIC0KIC4uLi9w YXRjaGVzL2ZpeC13ZWJydGMtZ2xpYmNpc21zLnBhdGNoICAgICAgICB8ICAgMjQgKy0KIHNyY3Br Z3MvZmlyZWZveC1lc3IvcGF0Y2hlcy9wcGM2NGxlLWppdC5wYXRjaCB8IDM0NDEgLS0tLS0tLS0t LS0tLS0tLS0KIHNyY3BrZ3MvZmlyZWZveC1lc3IvcGF0Y2hlcy9za2lhLXN1Y2tzMy5wYXRjaCB8 ICAgMjQgLQogc3JjcGtncy9maXJlZm94LWVzci9wYXRjaGVzL3NuZGlvLnBhdGNoICAgICAgIHwg ICA1MiAtCiBzcmNwa2dzL2ZpcmVmb3gtZXNyL3BhdGNoZXMvc3FsaXRlLXBwYy5wYXRjaCAgfCAg IDU1ICsKIHNyY3BrZ3MvZmlyZWZveC1lc3IvdGVtcGxhdGUgICAgICAgICAgICAgICAgICB8ICAy ODEgKy0KIDEwIGZpbGVzIGNoYW5nZWQsIDI2NSBpbnNlcnRpb25zKCspLCAzNjYwIGRlbGV0aW9u cygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmlyZWZveC1lc3IvcGF0Y2hlcy9maXgt Y2JpbmRnZW4ucGF0Y2gKIHJlbmFtZSBzcmNwa2dzL2ZpcmVmb3gtZXNyL3BhdGNoZXMve2ZpeC1k ZXNrdG9wLWljb24tcGF0aC5wYXRjaCA9PiBmaXgtZmlyZWZveC1kZXNrdG9wLnBhdGNofSAoNjQl KQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmlyZWZveC1lc3IvcGF0Y2hlcy9maXgtdG9v bHMucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZpcmVmb3gtZXNyL3BhdGNoZXMv cHBjNjRsZS1qaXQucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZpcmVmb3gtZXNy L3BhdGNoZXMvc25kaW8ucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZpcmVmb3gt ZXNyL3BhdGNoZXMvc3FsaXRlLXBwYy5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmlyZWZv eC1lc3IvcGF0Y2hlcy9maXgtY2JpbmRnZW4ucGF0Y2ggYi9zcmNwa2dzL2ZpcmVmb3gtZXNyL3Bh dGNoZXMvZml4LWNiaW5kZ2VuLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uYmEzY2U3YWUzZTk3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9maXJlZm94 LWVzci9wYXRjaGVzL2ZpeC1jYmluZGdlbi5wYXRjaApAQCAtMCwwICsxLDIyIEBACitGaXggZXJy b3Igd2l0aCBuZXcgY2JpbmRnZW46CisKKy9idWlsZGRpci9maXJlZm94LTEwMi4xLjAvb2JqLXg4 Nl82NC11bmtub3duLWxpbnV4LWdudS9kaXN0L2luY2x1ZGUvbW96aWxsYS93ZWJyZW5kZXIvd2Vi cmVuZGVyX2ZmaV9nZW5lcmF0ZWQuaDoyNDozMzogZXJyb3I6IHJlZGVmaW5pdGlvbiBvZiAnY29u c3RleHByIGNvbnN0IHVpbnQ2NF90IG1vemlsbGE6OndyOjpST09UX0NMSVBfQ0hBSU4nCisgICAy NCB8IGNvbnN0ZXhwciBzdGF0aWMgY29uc3QgdWludDY0X3QgUk9PVF9DTElQX0NIQUlOID0gfjA7 CisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+fn5+ CisvYnVpbGRkaXIvZmlyZWZveC0xMDIuMS4wL29iai14ODZfNjQtdW5rbm93bi1saW51eC1nbnUv ZGlzdC9pbmNsdWRlL21vemlsbGEvd2VicmVuZGVyL3dlYnJlbmRlcl9mZmkuaDo3NjoxNjogbm90 ZTogJ2NvbnN0IHVpbnQ2NF90IG1vemlsbGE6OndyOjpST09UX0NMSVBfQ0hBSU4nIHByZXZpb3Vz bHkgZGVmaW5lZCBoZXJlCisgICA3NiB8IGNvbnN0IHVpbnQ2NF90IFJPT1RfQ0xJUF9DSEFJTiA9 IH4wOworICAgICAgfCAgICAgICAgICAgICAgICBefn5+fn5+fn5+fn5+fn4KKworZGlmZiAtLWdp dCBhL2dmeC93ZWJyZW5kZXJfYmluZGluZ3Mvd2VicmVuZGVyX2ZmaS5oIGIvZ2Z4L3dlYnJlbmRl cl9iaW5kaW5ncy93ZWJyZW5kZXJfZmZpLmgKK2luZGV4IGIxZDY3YjE3YTRiZGUuLmViNzk5NzRi ZGY0MzQgMTAwNjQ0CistLS0gYS9nZngvd2VicmVuZGVyX2JpbmRpbmdzL3dlYnJlbmRlcl9mZmku aAorKysrIGIvZ2Z4L3dlYnJlbmRlcl9iaW5kaW5ncy93ZWJyZW5kZXJfZmZpLmgKK0BAIC03Myw4 ICs3Myw2IEBAIHN0cnVjdCBXclBpcGVsaW5lSW5mbzsKKyBzdHJ1Y3QgV3JQaXBlbGluZUlkQW5k RXBvY2g7CisgdXNpbmcgV3JQaXBlbGluZUlkRXBvY2hzID0gbnNUQXJyYXk8V3JQaXBlbGluZUlk QW5kRXBvY2g+OworIAorLWNvbnN0IHVpbnQ2NF90IFJPT1RfQ0xJUF9DSEFJTiA9IH4wOworLQor IH0gIC8vIG5hbWVzcGFjZSB3cgorIH0gIC8vIG5hbWVzcGFjZSBtb3ppbGxhCisgCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2ZpcmVmb3gtZXNyL3BhdGNoZXMvZml4LWRlc2t0b3AtaWNvbi1wYXRoLnBh dGNoIGIvc3JjcGtncy9maXJlZm94LWVzci9wYXRjaGVzL2ZpeC1maXJlZm94LWRlc2t0b3AucGF0 Y2gKc2ltaWxhcml0eSBpbmRleCA2NCUKcmVuYW1lIGZyb20gc3JjcGtncy9maXJlZm94LWVzci9w YXRjaGVzL2ZpeC1kZXNrdG9wLWljb24tcGF0aC5wYXRjaApyZW5hbWUgdG8gc3JjcGtncy9maXJl Zm94LWVzci9wYXRjaGVzL2ZpeC1maXJlZm94LWRlc2t0b3AucGF0Y2gKaW5kZXggYzQ2NjRkM2Rh N2NlLi4zZjAyNzNjYmEzNjYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZmlyZWZveC1lc3IvcGF0Y2hl cy9maXgtZGVza3RvcC1pY29uLXBhdGgucGF0Y2gKKysrIGIvc3JjcGtncy9maXJlZm94LWVzci9w YXRjaGVzL2ZpeC1maXJlZm94LWRlc2t0b3AucGF0Y2gKQEAgLTEsNiArMSw2IEBACi0tLS0gYS90 YXNrY2x1c3Rlci9kb2NrZXIvZmlyZWZveC1zbmFwL2ZpcmVmb3guZGVza3RvcAkyMDE5LTAxLTE4 IDE5OjMxOjM5LjQyODgzOTQ0MiArMDEwMAotKysrIGIvdGFza2NsdXN0ZXIvZG9ja2VyL2ZpcmVm b3gtc25hcC9maXJlZm94LmRlc2t0b3AJMjAxOS0wMS0xOCAxOTozMjoyMC42ODkwNjM0NTYgKzAx MDAKLUBAIC0xNTQsNyArMTU0LDcgQEAKKy0tLSBhL3Rhc2tjbHVzdGVyL2RvY2tlci9maXJlZm94 LXNuYXAvZmlyZWZveC5kZXNrdG9wCisrKysgYi90YXNrY2x1c3Rlci9kb2NrZXIvZmlyZWZveC1z bmFwL2ZpcmVmb3guZGVza3RvcAorQEAgLTE1NCwxMSArMTU0LDEyIEBACiAgVGVybWluYWw9ZmFs c2UKICBYLU11bHRpcGxlQXJncz1mYWxzZQogIFR5cGU9QXBwbGljYXRpb24KQEAgLTksMyArOSw4 IEBACiAgQ2F0ZWdvcmllcz1HTk9NRTtHVEs7TmV0d29yaztXZWJCcm93c2VyOwogIE1pbWVUeXBl PXRleHQvaHRtbDt0ZXh0L3htbDthcHBsaWNhdGlvbi94aHRtbCt4bWw7YXBwbGljYXRpb24veG1s O2FwcGxpY2F0aW9uL3Jzcyt4bWw7YXBwbGljYXRpb24vcmRmK3htbDtpbWFnZS9naWY7aW1hZ2Uv anBlZztpbWFnZS9wbmc7eC1zY2hlbWUtaGFuZGxlci9odHRwO3gtc2NoZW1lLWhhbmRsZXIvaHR0 cHM7eC1zY2hlbWUtaGFuZGxlci9mdHA7eC1zY2hlbWUtaGFuZGxlci9jaHJvbWU7dmlkZW8vd2Vi bTthcHBsaWNhdGlvbi94LXhwaW5zdGFsbDsKICBTdGFydHVwTm90aWZ5PXRydWUKKyBBY3Rpb25z PU5ld1dpbmRvdztOZXdQcml2YXRlV2luZG93OworK1N0YXJ0dXBXTUNsYXNzPUZpcmVmb3gKKyAK KyBbRGVza3RvcCBBY3Rpb24gTmV3V2luZG93XQorIE5hbWU9T3BlbiBhIE5ldyBXaW5kb3cKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvZmlyZWZveC1lc3IvcGF0Y2hlcy9maXgtaTM4Ni1mZGxpYm0ucGF0 Y2ggYi9zcmNwa2dzL2ZpcmVmb3gtZXNyL3BhdGNoZXMvZml4LWkzODYtZmRsaWJtLnBhdGNoCmlu ZGV4IDgzMWU1ZTAzNjc4ZC4uZGI4ZGQzOTYxYzA0IDEwMDY0NAotLS0gYS9zcmNwa2dzL2ZpcmVm b3gtZXNyL3BhdGNoZXMvZml4LWkzODYtZmRsaWJtLnBhdGNoCisrKyBiL3NyY3BrZ3MvZmlyZWZv eC1lc3IvcGF0Y2hlcy9maXgtaTM4Ni1mZGxpYm0ucGF0Y2gKQEAgLTcsNyArNyw3IEBACiAgICog QWRhcHRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9mcmVlYnNkL2ZyZWVic2Qtc3JjL3NlYXJj aD9xPV9fZG91YmxlX3QKICAgKi8KICAKLSsjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmIGRlZmlu ZWQoX19pMzg2X18pCisrI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiBkZWZpbmVkKF9faTM4Nl9f KSAmJiAhZGVmaW5lZChfX2NsYW5nX18pCiArLy8gcmVseSBvbiBnbGliYydzIGRvdWJsZV90CiAr dHlwZWRlZiBsb25nIGRvdWJsZSBfX2RvdWJsZV90OwogKyNlbHNlCmRpZmYgLS1naXQgYS9zcmNw a2dzL2ZpcmVmb3gtZXNyL3BhdGNoZXMvZml4LXRvb2xzLnBhdGNoIGIvc3JjcGtncy9maXJlZm94 LWVzci9wYXRjaGVzL2ZpeC10b29scy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggOTRkZTQyM2NlNTkzLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9maXJlZm94LWVzci9w YXRjaGVzL2ZpeC10b29scy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLS0t LSBhL3Rvb2xzL3Byb2ZpbGVyL2NvcmUvcGxhdGZvcm0tbGludXgtYW5kcm9pZC5jcHAJMjAxOS0w MS0yOSAxMjowOTo0MC45ODA0NDg1NzkgKzAxMDAKLSsrKyBiL3Rvb2xzL3Byb2ZpbGVyL2NvcmUv cGxhdGZvcm0tbGludXgtYW5kcm9pZC5jcHAJMjAxOS0wMS0yOSAxMjoxMTowOS42ODk1OTA5Njcg KzAxMDAKLUBAIC00OTcsOCArNTAxLDEwIEBACi0gdWNvbnRleHRfdCBzU3luY1VDb250ZXh0Owot IAotIHZvaWQgUmVnaXN0ZXJzOjpTeW5jUG9wdWxhdGUoKSB7Ci0rI2lmIGRlZmluZWQoX19HTElC Q19fKQotICAgaWYgKCFnZXRjb250ZXh0KCZzU3luY1VDb250ZXh0KSkgewotICAgICBQb3B1bGF0 ZVJlZ3NGcm9tQ29udGV4dCgqdGhpcywgJnNTeW5jVUNvbnRleHQpOwotICAgfQotKyNlbmRpZgot IH0KLSAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmlyZWZveC1lc3IvcGF0Y2hlcy9maXgt d2VicnRjLWdsaWJjaXNtcy5wYXRjaCBiL3NyY3BrZ3MvZmlyZWZveC1lc3IvcGF0Y2hlcy9maXgt d2VicnRjLWdsaWJjaXNtcy5wYXRjaAppbmRleCA1ZDE3MDIxYTk5ZjQuLjRmOTA0M2I1OGUxZSAx MDA2NDQKLS0tIGEvc3JjcGtncy9maXJlZm94LWVzci9wYXRjaGVzL2ZpeC13ZWJydGMtZ2xpYmNp c21zLnBhdGNoCisrKyBiL3NyY3BrZ3MvZmlyZWZveC1lc3IvcGF0Y2hlcy9maXgtd2VicnRjLWds aWJjaXNtcy5wYXRjaApAQCAtMSwyMCArMSwyMCBAQAotLS0tIGEvdGhpcmRfcGFydHkvbGlid2Vi cnRjL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMvc291cmNlL2NwdV9mZWF0dXJlc19saW51eC5jCTIw MTktMDEtMjkgMTE6MjA6NTIuMjk4NzkzMjIzICswMTAwCi0rKysgYi90aGlyZF9wYXJ0eS9saWJ3 ZWJydGMvd2VicnRjL3N5c3RlbV93cmFwcGVycy9zb3VyY2UvY3B1X2ZlYXR1cmVzX2xpbnV4LmMJ MjAxOS0wMS0yOSAxMToyMTo0OC4yNTAyNTA4NTAgKzAxMDAKLUBAIC0xNCw3ICsxNCw3IEBACi0g I2lmbmRlZiBfX0dMSUJDX1BSRVJFUQotICNkZWZpbmUgX19HTElCQ19QUkVSRVEoYSwgYikgMAor LS0tIGEvdGhpcmRfcGFydHkvbGlid2VicnRjL3N5c3RlbV93cmFwcGVycy9zb3VyY2UvY3B1X2Zl YXR1cmVzX2xpbnV4LmNjCisrKysgYi90aGlyZF9wYXJ0eS9saWJ3ZWJydGMvc3lzdGVtX3dyYXBw ZXJzL3NvdXJjZS9jcHVfZmVhdHVyZXNfbGludXguY2MKK0BAIC0xOCw3ICsxOCw3IEBACisgI2Rl ZmluZSBXRUJSVENfR0xJQkNfUFJFUkVRKGEsIGIpIDAKICAjZW5kaWYKLS0jaWYgX19HTElCQ19Q UkVSRVEoMiwgMTYpCi0rI2lmICFfX0dMSUJDX18gfHwgX19HTElCQ19QUkVSRVEoMiwgMTYpCisg CistI2lmIFdFQlJUQ19HTElCQ19QUkVSRVEoMiwgMTYpCisrI2lmICFfX0dMSUJDX18gfHwgV0VC UlRDX0dMSUJDX1BSRVJFUSgyLCAxNikKICAjaW5jbHVkZSA8c3lzL2F1eHYuaD4KICAjZWxzZQot ICNpbmNsdWRlIDxmY250bC5oPgotQEAgLTMyLDcgKzMyLDcgQEAKKyAjaW5jbHVkZSA8ZXJybm8u aD4KK0BAIC00MCw3ICs0MCw3IEBACiAgICBpbnQgYXJjaGl0ZWN0dXJlID0gMDsKLSAgIHVuc2ln bmVkIGxvbmcgaHdjYXAgPSAwOworICAgdWludDY0X3QgaHdjYXAgPSAwOwogICAgY29uc3QgY2hh ciogcGxhdGZvcm0gPSBOVUxMOwotLSNpZiBfX0dMSUJDX1BSRVJFUSgyLCAxNikKLSsjaWYgIV9f R0xJQkNfXyB8fCBfX0dMSUJDX1BSRVJFUSgyLCAxNikKKy0jaWYgV0VCUlRDX0dMSUJDX1BSRVJF USgyLCAxNikKKysjaWYgIV9fR0xJQkNfXyB8fCBXRUJSVENfR0xJQkNfUFJFUkVRKDIsIDE2KQog ICAgaHdjYXAgPSBnZXRhdXh2YWwoQVRfSFdDQVApOwogICAgcGxhdGZvcm0gPSAoY29uc3QgY2hh ciopZ2V0YXV4dmFsKEFUX1BMQVRGT1JNKTsKICAjZWxzZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9m aXJlZm94LWVzci9wYXRjaGVzL3BwYzY0bGUtaml0LnBhdGNoIGIvc3JjcGtncy9maXJlZm94LWVz ci9wYXRjaGVzL3BwYzY0bGUtaml0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCBjY2VkMDA1OGU4ZTEuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2ZpcmVmb3gtZXNyL3Bh dGNoZXMvcHBjNjRsZS1qaXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNDQxICswLDAgQEAK LWRpZmYgLS1naXQgYS9jb25maWcvY2hlY2tfbWFjcm9hc3NlbWJsZXJfc3R5bGUucHkgYi9jb25m aWcvY2hlY2tfbWFjcm9hc3NlbWJsZXJfc3R5bGUucHkKLWluZGV4IDBkMDQwYTkzOWIuLmI4M2Uz NjkxZGQgMTAwNjQ0Ci0tLS0gYS9jb25maWcvY2hlY2tfbWFjcm9hc3NlbWJsZXJfc3R5bGUucHkK LSsrKyBiL2NvbmZpZy9jaGVja19tYWNyb2Fzc2VtYmxlcl9zdHlsZS5weQotQEAgLTI0LDE3ICsy NCwxNyBAQCBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAotIGZyb20gX19m dXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KLSAKLSBpbXBvcnQgZGlmZmxpYgotIGltcG9y dCBvcwotIGltcG9ydCByZQotIGltcG9ydCBzeXMKLSAKLSBhcmNoaXRlY3R1cmVfaW5kZXBlbmRl bnQgPSBzZXQoWyJnZW5lcmljIl0pCi0tYWxsX3Vuc3VwcG9ydGVkX2FyY2hpdGVjdHVyZXNfbmFt ZXMgPSBzZXQoWyJtaXBzMzIiLCAibWlwczY0IiwgIm1pcHNfc2hhcmVkIl0pCi0rYWxsX3Vuc3Vw cG9ydGVkX2FyY2hpdGVjdHVyZXNfbmFtZXMgPSBzZXQoWyJtaXBzMzIiLCAibWlwczY0IiwgIm1p cHNfc2hhcmVkIiwgInBwYzY0Il0pCi0gYWxsX2FyY2hpdGVjdHVyZV9uYW1lcyA9IHNldChbIng4 NiIsICJ4NjQiLCAiYXJtIiwgImFybTY0Il0pCi0gYWxsX3NoYXJlZF9hcmNoaXRlY3R1cmVfbmFt ZXMgPSBzZXQoWyJ4ODZfc2hhcmVkIiwgImFybSIsICJhcm02NCJdKQotIAotIHJlQmVmb3JlQXJn ID0gIig/PD1bKCxcc10pIgotIHJlQXJnVHlwZSA9ICIoP1A8dHlwZT5bXHdcczoqJl0rKSIKLSBy ZUFyZ05hbWUgPSAiKD9QPG5hbWU+XHNcdyspIgotIHJlQXJnRGVmYXVsdCA9ICIoP1A8ZGVmYXVs dD4oPzpccz1bXiwpXSspPykiCi0gcmVBZnRlckFyZyA9ICIoPz1bLCldKSIKLWRpZmYgLS1naXQg YS9qcy9tb3ouY29uZmlndXJlIGIvanMvbW96LmNvbmZpZ3VyZQotaW5kZXggM2MzZDBkNDM1OS4u YjIxN2QwZTE1YyAxMDA2NDQKLS0tLSBhL2pzL21vei5jb25maWd1cmUKLSsrKyBiL2pzL21vei5j b25maWd1cmUKLUBAIC0yMTQsMjMgKzIxNCwyNSBAQCBkZWYgaml0X2NvZGVnZW4oaml0X2VuYWJs ZWQsIHNpbXVsYXRvciwgdGFyZ2V0KToKLSAgICAgcmV0dXJuIG5hbWVzcGFjZSgqKntzdHIodGFy Z2V0LmNwdSk6IFRydWV9KQotIAotIAotIHNldF9jb25maWcoIkpTX0NPREVHRU5fTk9ORSIsIGpp dF9jb2RlZ2VuLm5vbmUpCi0gc2V0X2NvbmZpZygiSlNfQ09ERUdFTl9BUk0iLCBqaXRfY29kZWdl bi5hcm0pCi0gc2V0X2NvbmZpZygiSlNfQ09ERUdFTl9BUk02NCIsIGppdF9jb2RlZ2VuLmFybTY0 KQotIHNldF9jb25maWcoIkpTX0NPREVHRU5fTUlQUzMyIiwgaml0X2NvZGVnZW4ubWlwczMyKQot IHNldF9jb25maWcoIkpTX0NPREVHRU5fTUlQUzY0Iiwgaml0X2NvZGVnZW4ubWlwczY0KQotK3Nl dF9jb25maWcoIkpTX0NPREVHRU5fUFBDNjQiLCBqaXRfY29kZWdlbi5wcGM2NCkKLSBzZXRfY29u ZmlnKCJKU19DT0RFR0VOX1g4NiIsIGppdF9jb2RlZ2VuLng4NikKLSBzZXRfY29uZmlnKCJKU19D T0RFR0VOX1g2NCIsIGppdF9jb2RlZ2VuLng2NCkKLSBzZXRfZGVmaW5lKCJKU19DT0RFR0VOX05P TkUiLCBqaXRfY29kZWdlbi5ub25lKQotIHNldF9kZWZpbmUoIkpTX0NPREVHRU5fQVJNIiwgaml0 X2NvZGVnZW4uYXJtKQotIHNldF9kZWZpbmUoIkpTX0NPREVHRU5fQVJNNjQiLCBqaXRfY29kZWdl bi5hcm02NCkKLSBzZXRfZGVmaW5lKCJKU19DT0RFR0VOX01JUFMzMiIsIGppdF9jb2RlZ2VuLm1p cHMzMikKLSBzZXRfZGVmaW5lKCJKU19DT0RFR0VOX01JUFM2NCIsIGppdF9jb2RlZ2VuLm1pcHM2 NCkKLStzZXRfZGVmaW5lKCJKU19DT0RFR0VOX1BQQzY0Iiwgaml0X2NvZGVnZW4ucHBjNjQpCi0g c2V0X2RlZmluZSgiSlNfQ09ERUdFTl9YODYiLCBqaXRfY29kZWdlbi54ODYpCi0gc2V0X2RlZmlu ZSgiSlNfQ09ERUdFTl9YNjQiLCBqaXRfY29kZWdlbi54NjQpCi0gCi0gIyBQcm9maWxpbmcKLSAj ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LSBvcHRpb24oCi0gICAgICItLWVuYWJsZS1pbnN0cnVtZW50cyIsCi0gICAgIGVudj0iTU9aX0lO U1RSVU1FTlRTIiwKLWRpZmYgLS1naXQgYS9qcy9zcmMvaXJyZWdleHAvUmVnRXhwTmF0aXZlTWFj cm9Bc3NlbWJsZXIuY3BwIGIvanMvc3JjL2lycmVnZXhwL1JlZ0V4cE5hdGl2ZU1hY3JvQXNzZW1i bGVyLmNwcAotaW5kZXggZTBlZjdlNjRmNS4uODFkOGUyYTE5OCAxMDA2NDQKLS0tLSBhL2pzL3Ny Yy9pcnJlZ2V4cC9SZWdFeHBOYXRpdmVNYWNyb0Fzc2VtYmxlci5jcHAKLSsrKyBiL2pzL3NyYy9p cnJlZ2V4cC9SZWdFeHBOYXRpdmVNYWNyb0Fzc2VtYmxlci5jcHAKLUBAIC04MTMsMTggKzgxMywz MyBAQCB2b2lkIFNNUmVnRXhwTWFjcm9Bc3NlbWJsZXI6Okp1bXBPckJhY2t0cmFjayhMYWJlbCog dG8pIHsKLSAvLyBJZiB0aGUgdGVzdCBmYWlscywgY2FsbCBhbiBPT0wgaGFuZGxlciB0byB0cnkg Z3Jvd2luZyB0aGUgc3RhY2suCi0gdm9pZCBTTVJlZ0V4cE1hY3JvQXNzZW1ibGVyOjpDaGVja0Jh Y2t0cmFja1N0YWNrTGltaXQoKSB7Ci0gICBqczo6aml0OjpMYWJlbCBub19zdGFja19vdmVyZmxv dzsKLSAgIG1hc21fLmJyYW5jaFB0cigKLSAgICAgICBBc3NlbWJsZXI6OkJlbG93T3JFcXVhbCwK LSAgICAgICBBYnNvbHV0ZUFkZHJlc3MoaXNvbGF0ZSgpLT5yZWdleHBfc3RhY2soKS0+bGltaXRf YWRkcmVzc19hZGRyZXNzKCkpLAotICAgICAgIGJhY2t0cmFja19zdGFja19wb2ludGVyXywgJm5v X3N0YWNrX292ZXJmbG93KTsKLSAKLSsjaWZkZWYgSlNfQ09ERUdFTl9QUEM2NAotKyAgLy8gTFIg b24gUG93ZXJQQyBpc24ndCBhIEdQUiwgc28gd2UgaGF2ZSB0byBleHBsaWNpdGx5IHNhdmUgaXQg aGVyZSBiZWZvcmUKLSsgIC8vIHdlIGNhbGwgb3Igd2Ugd2lsbCBlbmQgdXAgZXJyb25lb3VzbHkg cmV0dXJuaW5nIGFmdGVyIHRoZSBjYWxsIHRvIHRoZQotKyAgLy8gc3RhY2sgb3ZlcmZsb3cgaGFu ZGxlciB3aGVuIHdlIHxibHJ8IG91dCBhbmQgaW5ldml0YWJseSB1bmRlcmZsb3cgdGhlCi0rICAv LyBpcnJlZ2V4cCBzdGFjayBvbiB0aGUgbmV4dCBiYWNrdHJhY2suCi0rICBtYXNtXy54c19tZmxy KHRlbXAxXyk7Ci0rICBtYXNtXy5hc19zdGR1KHRlbXAxXywgbWFzbV8uZ2V0U3RhY2tQb2ludGVy KCksIC04KTsKLSsjZW5kaWYKLSsKLSAgIG1hc21fLmNhbGwoJnN0YWNrX292ZXJmbG93X2xhYmVs Xyk7Ci0gCi0rI2lmZGVmIEpTX0NPREVHRU5fUFBDNjQKLSsgIG1hc21fLmFzX2xkKHRlbXAxXywg bWFzbV8uZ2V0U3RhY2tQb2ludGVyKCksIDApOwotKyAgbWFzbV8ueHNfbXRscih0ZW1wMV8pOwot KyAgbWFzbV8uYXNfYWRkaShtYXNtXy5nZXRTdGFja1BvaW50ZXIoKSwgbWFzbV8uZ2V0U3RhY2tQ b2ludGVyKCksIDgpOwotKyNlbmRpZgotKwotICAgLy8gRXhpdCB3aXRoIGFuIGV4Y2VwdGlvbiBp ZiB0aGUgY2FsbCBmYWlsZWQKLSAgIG1hc21fLmJyYW5jaFRlc3QzMihBc3NlbWJsZXI6Olplcm8s IHRlbXAwXywgdGVtcDBfLAotICAgICAgICAgICAgICAgICAgICAgICZleGl0X3dpdGhfZXhjZXB0 aW9uX2xhYmVsXyk7Ci0gCi0gICBtYXNtXy5iaW5kKCZub19zdGFja19vdmVyZmxvdyk7Ci0gfQot IAotIC8vIFRoaXMgaXMgdXNlZCB0byBzbmVhayBhbiBPT00gdGhyb3VnaCB0aGUgVjggbGF5ZXIu Ci1AQCAtMTEyNywxNiArMTE0MiwyMCBAQCB2b2lkIFNNUmVnRXhwTWFjcm9Bc3NlbWJsZXI6OnN0 YWNrT3ZlcmZsb3dIYW5kbGVyKCkgewotICAgTGl2ZUdlbmVyYWxSZWdpc3RlclNldCB2b2xhdGls ZVJlZ3MoR2VuZXJhbFJlZ2lzdGVyU2V0OjpWb2xhdGlsZSgpKTsKLSAKLSAjaWZkZWYgSlNfVVNF X0xJTktfUkVHSVNURVIKLSAgIG1hc21fLnB1c2hSZXR1cm5BZGRyZXNzKCk7Ci0gI2VuZGlmCi0g Ci0gICAvLyBBZGp1c3QgZm9yIHRoZSByZXR1cm4gYWRkcmVzcyBvbiB0aGUgc3RhY2suCi0gICBz aXplX3QgZnJhbWVPZmZzZXQgPSBzaXplb2Yodm9pZCopOwotKyNpZmRlZiBKU19DT0RFR0VOX1BQ QzY0Ci0rICAvLyBXZSBoYXZlIGEgZG91YmxlIHJldHVybiBhZGRyZXNzLgotKyAgZnJhbWVPZmZz ZXQgKz0gc2l6ZW9mKHZvaWQqKTsKLSsjZW5kaWYKLSAKLSAgIHZvbGF0aWxlUmVncy50YWtlVW5j aGVja2VkKHRlbXAwXyk7Ci0gICB2b2xhdGlsZVJlZ3MudGFrZVVuY2hlY2tlZCh0ZW1wMV8pOwot ICAgbWFzbV8uUHVzaFJlZ3NJbk1hc2sodm9sYXRpbGVSZWdzKTsKLSAKLSAgIHVzaW5nIEZuID0g Ym9vbCAoKikoUmVnRXhwU3RhY2sgKiByZWdleHBfc3RhY2spOwotICAgbWFzbV8uc2V0dXBVbmFs aWduZWRBQklDYWxsKHRlbXAwXyk7Ci0gICBtYXNtXy5wYXNzQUJJQXJnKHRlbXAxXyk7Ci1kaWZm IC0tZ2l0IGEvanMvc3JjL2ppdC9BdG9taWNPcGVyYXRpb25zLmggYi9qcy9zcmMvaml0L0F0b21p Y09wZXJhdGlvbnMuaAotaW5kZXggZjRhNTcyN2QwNS4uMTM4NjEyZDUzYiAxMDA2NDQKLS0tLSBh L2pzL3NyYy9qaXQvQXRvbWljT3BlcmF0aW9ucy5oCi0rKysgYi9qcy9zcmMvaml0L0F0b21pY09w ZXJhdGlvbnMuaAotQEAgLTM3MywxOSArMzczLDI2IEBAIGNvbnN0ZXhwciBpbmxpbmUgYm9vbCBB dG9taWNPcGVyYXRpb25zOjppc0xvY2tmcmVlSlMoaW50MzJfdCBzaXplKSB7Ci0gIyAgICBpbmNs dWRlICJqaXQvc2hhcmVkL0F0b21pY09wZXJhdGlvbnMtZmVlbGluZy1sdWNreS5oIgotICMgIGVu ZGlmCi0gI2VsaWYgZGVmaW5lZChfX21pcHNfXykKLSAjICBpZiBkZWZpbmVkKF9fY2xhbmdfXykg fHwgZGVmaW5lZChfX0dOVUNfXykKLSAjICAgIGluY2x1ZGUgImppdC9taXBzLXNoYXJlZC9BdG9t aWNPcGVyYXRpb25zLW1pcHMtc2hhcmVkLmgiCi0gIyAgZWxzZQotICMgICAgZXJyb3IgIkF0b21p Y09wZXJhdGlvbnMgb24gTUlQUyBmb3IgYW4gdW5rbm93biBjb21waWxlciIKLSAjICBlbmRpZgot KyNlbGlmIGRlZmluZWQoX19wcGM2NF9fKSB8fCBkZWZpbmVkKF9fUFBDNjRfXykgfHwgZGVmaW5l ZChfX3BwYzY0bGVfXykgfHwgXAotKyAgICAgIGRlZmluZWQoX19QUEM2NExFX18pCi0rIyAgaWYg ZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotKy8qIFhYWDogc2hvdWxkIGJlICMgICAgaW5jbHVk ZSAiaml0L3NoYXJlZC9BdG9taWNPcGVyYXRpb25zLXNoYXJlZC1qaXQuaCIgKi8KLSsjICAgIGlu Y2x1ZGUgImppdC9zaGFyZWQvQXRvbWljT3BlcmF0aW9ucy1mZWVsaW5nLWx1Y2t5LmgiCi0rIyAg ZWxzZQotKyMgICAgaW5jbHVkZSAiaml0L3NoYXJlZC9BdG9taWNPcGVyYXRpb25zLWZlZWxpbmct bHVja3kuaCIKLSsjICBlbmRpZgotICNlbGlmIGRlZmluZWQoX19wcGNfXykgfHwgZGVmaW5lZChf X1BQQ19fKSB8fCBkZWZpbmVkKF9fc3BhcmNfXykgfHwgICAgIFwKLS0gICAgZGVmaW5lZChfX3Bw YzY0X18pIHx8IGRlZmluZWQoX19QUEM2NF9fKSB8fCBkZWZpbmVkKF9fcHBjNjRsZV9fKSB8fCBc Ci0tICAgIGRlZmluZWQoX19QUEM2NExFX18pIHx8IGRlZmluZWQoX19hbHBoYV9fKSB8fCBkZWZp bmVkKF9faHBwYV9fKSB8fCAgXAotKyAgICBkZWZpbmVkKF9fYWxwaGFfXykgfHwgZGVmaW5lZChf X2hwcGFfXykgfHwgIFwKLSAgICAgZGVmaW5lZChfX3NoX18pIHx8IGRlZmluZWQoX19zMzkwX18p IHx8IGRlZmluZWQoX19zMzkweF9fKSB8fCAgICAgICBcCi0gICAgIGRlZmluZWQoX19tNjhrX18p IHx8IGRlZmluZWQoX19yaXNjdikgfHwgZGVmaW5lZChfX3dhc2lfXykKLSAjICBpbmNsdWRlICJq aXQvc2hhcmVkL0F0b21pY09wZXJhdGlvbnMtZmVlbGluZy1sdWNreS5oIgotICNlbHNlCi0gIyAg ZXJyb3IgIk5vIEF0b21pY09wZXJhdGlvbnMgc3VwcG9ydCBwcm92aWRlZCBmb3IgdGhpcyBwbGF0 Zm9ybSIKLSAjZW5kaWYKLSAKLSAjZW5kaWYgIC8vIGppdF9BdG9taWNPcGVyYXRpb25zX2gKLWRp ZmYgLS1naXQgYS9qcy9zcmMvaml0L0Jhc2VsaW5lQmFpbG91dHMuY3BwIGIvanMvc3JjL2ppdC9C YXNlbGluZUJhaWxvdXRzLmNwcAotaW5kZXggYmNhMTQyN2Y5My4uZWI0OTliMzRjZiAxMDA2NDQK LS0tLSBhL2pzL3NyYy9qaXQvQmFzZWxpbmVCYWlsb3V0cy5jcHAKLSsrKyBiL2pzL3NyYy9qaXQv QmFzZWxpbmVCYWlsb3V0cy5jcHAKLUBAIC00ODEsMTYgKzQ4MSwyMSBAQCBjbGFzcyBNT1pfU1RB Q0tfQ0xBU1MgQmFzZWxpbmVTdGFja0J1aWxkZXIgewotICAgICAvLyAgbGV0IFggPSBTVEFDS19T VEFSVF9BRERSICsgSml0RnJhbWVMYXlvdXQ6OlNpemUoKSArIFBSRVZfRlJBTUVfU0laRQotICAg ICAvLyAgICAgIFggKyBSZWN0aWZpZXJGcmFtZUxheW91dDo6U2l6ZSgpCi0gICAgIC8vICAgICAg ICArICgoUmVjdGlmaWVyRnJhbWVMYXlvdXQqKSBYKS0+cHJldkZyYW1lTG9jYWxTaXplKCkKLSAg ICAgLy8gICAgICAgIC0gQmFzZWxpbmVTdHViRnJhbWVMYXlvdXQ6OnJldmVyc2VPZmZzZXRPZlNh dmVkRnJhbWVQdHIoKQotICAgICBzaXplX3QgZXh0cmFPZmZzZXQgPQotICAgICAgICAgUmVjdGlm aWVyRnJhbWVMYXlvdXQ6OlNpemUoKSArIHByaW9yRnJhbWUtPnByZXZGcmFtZUxvY2FsU2l6ZSgp ICsKLSAgICAgICAgIEJhc2VsaW5lU3R1YkZyYW1lTGF5b3V0OjpyZXZlcnNlT2Zmc2V0T2ZTYXZl ZEZyYW1lUHRyKCk7Ci0gICAgIHJldHVybiB2aXJ0dWFsUG9pbnRlckF0U3RhY2tPZmZzZXQocHJp b3JPZmZzZXQgKyBleHRyYU9mZnNldCk7Ci0rI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0 KQotKyAgICAodm9pZClwcmlvck9mZnNldDsKLSsvLyBYWFguIFRoZSBhYm92ZSBjb2RlIG1pZ2h0 IHdvcmsgdGhvdWdoCi0rI3dhcm5pbmcgIlRPRE8hIEJhc2VsaW5lU3RhY2tCdWlsZGVyOjpjYWxj dWxhdGVQcmV2RnJhbWVQdHIoKSIKLSsgICAgTU9aX0NSQVNIKCk7Ci0gI2VsaWYgZGVmaW5lZChK U19DT0RFR0VOX05PTkUpCi0gICAgICh2b2lkKXByaW9yT2Zmc2V0OwotICAgICBNT1pfQ1JBU0go KTsKLSAjZWxzZQotICMgIGVycm9yICJCYWQgYXJjaGl0ZWN0dXJlISIKLSAjZW5kaWYKLSAgIH0K LSB9OwotZGlmZiAtLWdpdCBhL2pzL3NyYy9qaXQvQmFzZWxpbmVDb2RlR2VuLmNwcCBiL2pzL3Ny Yy9qaXQvQmFzZWxpbmVDb2RlR2VuLmNwcAotaW5kZXggNzA4OWY1ZTMwMC4uZDY3MjM2ZDJjNSAx MDA2NDQKLS0tLSBhL2pzL3NyYy9qaXQvQmFzZWxpbmVDb2RlR2VuLmNwcAotKysrIGIvanMvc3Jj L2ppdC9CYXNlbGluZUNvZGVHZW4uY3BwCi1AQCAtNTIwLDE2ICs1MjAsMTkgQEAgYm9vbCBCYXNl bGluZUNvZGVHZW48SGFuZGxlcj46OmVtaXRPdXRPZkxpbmVQb3N0QmFycmllclNsb3QoKSB7Ci0g ICByZWdzLnRha2UoQmFzZWxpbmVGcmFtZVJlZyk7Ci0gICBSZWdpc3RlciBzY3JhdGNoID0gcmVn cy50YWtlQW55KCk7Ci0gI2lmIGRlZmluZWQoSlNfQ09ERUdFTl9BUk0pIHx8IGRlZmluZWQoSlNf Q09ERUdFTl9BUk02NCkKLSAgIC8vIE9uIEFSTSwgc2F2ZSB0aGUgbGluayByZWdpc3RlciBiZWZv cmUgY2FsbGluZy4gIEl0IGNvbnRhaW5zIHRoZSByZXR1cm4KLSAgIC8vIGFkZHJlc3MuICBUaGUg fG1hc20ucmV0KCl8IGxhdGVyIHdpbGwgcG9wIHRoaXMgaW50byB8cGN8IHRvIHJldHVybi4KLSAg IG1hc20ucHVzaChscik7Ci0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX01JUFMzMikgfHwgZGVm aW5lZChKU19DT0RFR0VOX01JUFM2NCkKLSAgIG1hc20ucHVzaChyYSk7Ci0rI2VsaWYgZGVmaW5l ZChKU19DT0RFR0VOX1BQQzY0KQotKyAgbWFzbS54c19tZmxyKFNjcmF0Y2hSZWdpc3Rlcik7Ci0r ICBtYXNtLnB1c2goU2NyYXRjaFJlZ2lzdGVyKTsKLSAjZW5kaWYKLSAgIG1hc20ucHVzaFZhbHVl KFIwKTsKLSAKLSAgIHVzaW5nIEZuID0gdm9pZCAoKikoSlNSdW50aW1lICogcnQsIGpzOjpnYzo6 Q2VsbCAqIGNlbGwpOwotICAgbWFzbS5zZXR1cFVuYWxpZ25lZEFCSUNhbGwoc2NyYXRjaCk7Ci0g ICBtYXNtLm1vdmVQdHIoSW1tUHRyKGN4LT5ydW50aW1lKCkpLCBzY3JhdGNoKTsKLSAgIG1hc20u cGFzc0FCSUFyZyhzY3JhdGNoKTsKLSAgIG1hc20ucGFzc0FCSUFyZyhvYmpSZWcpOwotZGlmZiAt LWdpdCBhL2pzL3NyYy9qaXQvQmFzZWxpbmVJQy5jcHAgYi9qcy9zcmMvaml0L0Jhc2VsaW5lSUMu Y3BwCi1pbmRleCA5NTcyMzk0ZTc2Li5kZmU3NjJlNWM4IDEwMDY0NAotLS0tIGEvanMvc3JjL2pp dC9CYXNlbGluZUlDLmNwcAotKysrIGIvanMvc3JjL2ppdC9CYXNlbGluZUlDLmNwcAotQEAgLTEy NywxNyArMTI3LDE4IEBAIGNsYXNzIE1PWl9SQUlJIEZhbGxiYWNrSUNDb2RlQ29tcGlsZXIgZmlu YWwgewotIH07Ci0gCi0gQWxsb2NhdGFibGVHZW5lcmFsUmVnaXN0ZXJTZXQgQmFzZWxpbmVJQ0F2 YWlsYWJsZUdlbmVyYWxSZWdzKHNpemVfdCBudW1JbnB1dHMpIHsKLSAgIEFsbG9jYXRhYmxlR2Vu ZXJhbFJlZ2lzdGVyU2V0IHJlZ3MoR2VuZXJhbFJlZ2lzdGVyU2V0OjpBbGwoKSk7Ci0gI2lmIGRl ZmluZWQoSlNfQ09ERUdFTl9BUk0pCi0gICBNT1pfQVNTRVJUKCFyZWdzLmhhcyhCYXNlbGluZVN0 YWNrUmVnKSk7Ci0gICBNT1pfQVNTRVJUKCFyZWdzLmhhcyhJQ1RhaWxDYWxsUmVnKSk7Ci0gICBy ZWdzLnRha2UoQmFzZWxpbmVTZWNvbmRTY3JhdGNoUmVnKTsKLS0jZWxpZiBkZWZpbmVkKEpTX0NP REVHRU5fTUlQUzMyKSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0KQotKyNlbGlmIGRlZmlu ZWQoSlNfQ09ERUdFTl9NSVBTMzIpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpIHx8IFwK LSsgICAgICBkZWZpbmVkKEpTX0NPREVHRU5fUFBDNjQpCi0gICBNT1pfQVNTRVJUKCFyZWdzLmhh cyhCYXNlbGluZVN0YWNrUmVnKSk7Ci0gICBNT1pfQVNTRVJUKCFyZWdzLmhhcyhJQ1RhaWxDYWxs UmVnKSk7Ci0gICBNT1pfQVNTRVJUKCFyZWdzLmhhcyhCYXNlbGluZVNlY29uZFNjcmF0Y2hSZWcp KTsKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fQVJNNjQpCi0gICBNT1pfQVNTRVJUKCFyZWdz LmhhcyhQc2V1ZG9TdGFja1BvaW50ZXIpKTsKLSAgIE1PWl9BU1NFUlQoIXJlZ3MuaGFzKFJlYWxT dGFja1BvaW50ZXIpKTsKLSAgIE1PWl9BU1NFUlQoIXJlZ3MuaGFzKElDVGFpbENhbGxSZWcpKTsK LSAjZWxzZQotZGlmZiAtLWdpdCBhL2pzL3NyYy9qaXQvQ29kZUdlbmVyYXRvci5oIGIvanMvc3Jj L2ppdC9Db2RlR2VuZXJhdG9yLmgKLWluZGV4IDUzMjE5NzhmYzIuLmIyZDlhOGY1YTUgMTAwNjQ0 Ci0tLS0gYS9qcy9zcmMvaml0L0NvZGVHZW5lcmF0b3IuaAotKysrIGIvanMvc3JjL2ppdC9Db2Rl R2VuZXJhdG9yLmgKLUBAIC0yMCwxNiArMjAsMTggQEAKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVH RU5fQVJNKQotICMgIGluY2x1ZGUgImppdC9hcm0vQ29kZUdlbmVyYXRvci1hcm0uaCIKLSAjZWxp ZiBkZWZpbmVkKEpTX0NPREVHRU5fQVJNNjQpCi0gIyAgaW5jbHVkZSAiaml0L2FybTY0L0NvZGVH ZW5lcmF0b3ItYXJtNjQuaCIKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzMyKQotICMg IGluY2x1ZGUgImppdC9taXBzMzIvQ29kZUdlbmVyYXRvci1taXBzMzIuaCIKLSAjZWxpZiBkZWZp bmVkKEpTX0NPREVHRU5fTUlQUzY0KQotICMgIGluY2x1ZGUgImppdC9taXBzNjQvQ29kZUdlbmVy YXRvci1taXBzNjQuaCIKLSsjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fUFBDNjQpCi0rIyAgaW5j bHVkZSAiaml0L3BwYzY0L0NvZGVHZW5lcmF0b3ItcHBjNjQuaCIKLSAjZWxpZiBkZWZpbmVkKEpT X0NPREVHRU5fTk9ORSkKLSAjICBpbmNsdWRlICJqaXQvbm9uZS9Db2RlR2VuZXJhdG9yLW5vbmUu aCIKLSAjZWxzZQotICMgIGVycm9yICJVbmtub3duIGFyY2hpdGVjdHVyZSEiCi0gI2VuZGlmCi0g Ci0gI2luY2x1ZGUgIndhc20vV2FzbUdDLmgiCi0gCi1kaWZmIC0tZ2l0IGEvanMvc3JjL2ppdC9G bHVzaElDYWNoZS5oIGIvanMvc3JjL2ppdC9GbHVzaElDYWNoZS5oCi1pbmRleCBmZTY2MDgwZGY1 Li4yMDcxNTYzYzFlIDEwMDY0NAotLS0tIGEvanMvc3JjL2ppdC9GbHVzaElDYWNoZS5oCi0rKysg Yi9qcy9zcmMvaml0L0ZsdXNoSUNhY2hlLmgKLUBAIC0xOSwxNyArMTksMTggQEAgbmFtZXNwYWNl IGppdCB7Ci0gI2lmIGRlZmluZWQoSlNfQ09ERUdFTl9YODYpIHx8IGRlZmluZWQoSlNfQ09ERUdF Tl9YNjQpCi0gCi0gaW5saW5lIHZvaWQgRmx1c2hJQ2FjaGUodm9pZCogY29kZSwgc2l6ZV90IHNp emUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjb2RlSXNUaHJlYWRMb2NhbCA9IHRy dWUpIHsKLSAgIC8vIE5vLW9wLiBDb2RlIGFuZCBkYXRhIGNhY2hlcyBhcmUgY29oZXJlbnQgb24g eDg2IGFuZCB4NjQuCi0gfQotIAotICNlbGlmIChkZWZpbmVkKEpTX0NPREVHRU5fQVJNKSB8fCBk ZWZpbmVkKEpTX0NPREVHRU5fQVJNNjQpKSB8fCBcCi0tICAgIChkZWZpbmVkKEpTX0NPREVHRU5f TUlQUzMyKSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0KSkKLSsgICAgKGRlZmluZWQoSlNf Q09ERUdFTl9NSVBTMzIpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpKSB8fCBcCi0rICAg IGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSAKLSBleHRlcm4gdm9pZCBGbHVzaElDYWNoZSh2 b2lkKiBjb2RlLCBzaXplX3Qgc2l6ZSwgYm9vbCBjb2RlSXNUaHJlYWRMb2NhbCA9IHRydWUpOwot IAotICNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9OT05FKQotIAotIGlubGluZSB2b2lkIEZsdXNo SUNhY2hlKHZvaWQqIGNvZGUsIHNpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAg IGJvb2wgY29kZUlzVGhyZWFkTG9jYWwgPSB0cnVlKSB7Ci0gICBNT1pfQ1JBU0goKTsKLWRpZmYg LS1naXQgYS9qcy9zcmMvaml0L0ppdEZyYW1lcy5jcHAgYi9qcy9zcmMvaml0L0ppdEZyYW1lcy5j cHAKLWluZGV4IDc3Y2ZlNmE5Y2QuLjUwN2YxNTUxZTYgMTAwNjQ0Ci0tLS0gYS9qcy9zcmMvaml0 L0ppdEZyYW1lcy5jcHAKLSsrKyBiL2pzL3NyYy9qaXQvSml0RnJhbWVzLmNwcAotQEAgLTIyMjAs MTYgKzIyMjAsMjQgQEAgTWFjaGluZVN0YXRlIE1hY2hpbmVTdGF0ZTo6RnJvbUJhaWxvdXQoUmVn aXN0ZXJEdW1wOjpHUFJBcnJheSYgcmVncywKLSAgICAgbWFjaGluZS5zZXRSZWdpc3RlckxvY2F0 aW9uKAotICAgICAgICAgRmxvYXRSZWdpc3RlcihGbG9hdFJlZ2lzdGVyczo6RW5jb2RpbmcoaSks IEZsb2F0UmVnaXN0ZXJzOjpTaW5nbGUpLAotICAgICAgICAgJmZwcmVnc1tpXSk7Ci0gICAgIG1h Y2hpbmUuc2V0UmVnaXN0ZXJMb2NhdGlvbigKLSAgICAgICAgIEZsb2F0UmVnaXN0ZXIoRmxvYXRS ZWdpc3RlcnM6OkVuY29kaW5nKGkpLCBGbG9hdFJlZ2lzdGVyczo6RG91YmxlKSwKLSAgICAgICAg ICZmcHJlZ3NbaV0pOwotICAgICAvLyBObyBTSU1EIHN1cHBvcnQgaW4gYmFpbG91dHMsIFNJTUQg aXMgaW50ZXJuYWwgdG8gd2FzbQotICAgfQotKyNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2 NCkKLSsgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBGbG9hdFJlZ2lzdGVyczo6VG90YWxQaHlz OyBpKyspIHsKLSsgICAgbWFjaGluZS5zZXRSZWdpc3RlckxvY2F0aW9uKEZsb2F0UmVnaXN0ZXIo aSksICZmcHJlZ3NbaV0pOwotKyMgIGlmZGVmIEVOQUJMRV9XQVNNX1NJTUQKLSsgICAgIC8vIE5l ZWRzIGFkZGl0aW9uYWwgaGFuZGxpbmcgaWYgVk1YIG9yIG5vbi1GUFIgVlNYIHJlZ3MgYXJlIGlu IHBsYXkuCi0rIyAgICBlcnJvciAiU0lNRCBmb3IgUFBDIE5ZSSIKLSsjICBlbmRpZgotKyAgfQot IAotICNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9OT05FKQotICAgTU9aX0NSQVNIKCk7Ci0gI2Vs c2UKLSAjICBlcnJvciAiVW5rbm93biBhcmNoaXRlY3R1cmUhIgotICNlbmRpZgotICAgcmV0dXJu IG1hY2hpbmU7Ci0gfQotZGlmZiAtLWdpdCBhL2pzL3NyYy9qaXQvSml0RnJhbWVzLmggYi9qcy9z cmMvaml0L0ppdEZyYW1lcy5oCi1pbmRleCA0MGM2NjFkMTQ2Li43YjRlYTMxNTdkIDEwMDY0NAot LS0tIGEvanMvc3JjL2ppdC9KaXRGcmFtZXMuaAotKysrIGIvanMvc3JjL2ppdC9KaXRGcmFtZXMu aAotQEAgLTE1MiwxNiArMTUyLDI2IEBAIHN0cnVjdCBSZXN1bWVGcm9tRXhjZXB0aW9uIHsKLSAg IHN0YXRpYyBjb25zdCB1aW50MzJfdCBSRVNVTUVfRU5UUllfRlJBTUUgPSAwOwotICAgc3RhdGlj IGNvbnN0IHVpbnQzMl90IFJFU1VNRV9DQVRDSCA9IDE7Ci0gICBzdGF0aWMgY29uc3QgdWludDMy X3QgUkVTVU1FX0ZJTkFMTFkgPSAyOwotICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IFJFU1VNRV9G T1JDRURfUkVUVVJOID0gMzsKLSAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBSRVNVTUVfQkFJTE9V VCA9IDQ7Ci0gICBzdGF0aWMgY29uc3QgdWludDMyX3QgUkVTVU1FX1dBU00gPSA1OwotICAgc3Rh dGljIGNvbnN0IHVpbnQzMl90IFJFU1VNRV9XQVNNX0NBVENIID0gNjsKLSAKLSsjaWYgZGVmaW5l ZChKU19DT0RFR0VOX1BQQzY0KQotKyAgLy8gVGhpcyBnZXRzIGJ1aWx0IG9uIHRoZSBzdGFjayBh cyBwYXJ0IG9mIGV4Y2VwdGlvbiByZXR1cm5zLiBCZWNhdXNlCi0rICAvLyBpdCBnb2VzIHJpZ2h0 IG9uIHRvcCBvZiB0aGUgc3RhY2ssIGFuIEFCSS1jb21wbGlhbnQgcm91dGluZSBjYW4gd3JlY2sK LSsgIC8vIGl0LCBzbyB3ZSBpbXBsZW1lbnQgYSBtaW5pbXVtIFBvd2VyIElTQSBsaW5rYWdlIGFy ZWEgKGZvdXIgZG91Ymxld29yZHMpLgotKyAgdm9pZCAqX3BwY19zcF87Ci0rICB2b2lkICpfcHBj X2NyXzsKLSsgIHZvaWQgKl9wcGNfbHJfOwotKyAgdm9pZCAqX3BwY190b2NfOwotKyNlbmRpZgot KwotICAgdWludDhfdCogZnJhbWVQb2ludGVyOwotICAgdWludDhfdCogc3RhY2tQb2ludGVyOwot ICAgdWludDhfdCogdGFyZ2V0OwotICAgdWludDMyX3Qga2luZDsKLSAKLSAgIC8vIFZhbHVlIHRv IHB1c2ggd2hlbiByZXN1bWluZyBpbnRvIGEgfGZpbmFsbHl8IGJsb2NrLgotICAgLy8gQWxzbyB1 c2VkIGJ5IFdhc20gdG8gc2VuZCB0aGUgZXhjZXB0aW9uIG9iamVjdCB0byB0aGUgdGhyb3cgc3R1 Yi4KLSAgIEpTOjpWYWx1ZSBleGNlcHRpb247Ci1kaWZmIC0tZ2l0IGEvanMvc3JjL2ppdC9KaXRP cHRpb25zLmNwcCBiL2pzL3NyYy9qaXQvSml0T3B0aW9ucy5jcHAKLWluZGV4IGRlMTM3NzdmYzMu Ljc5NWU0MWJmMjEgMTAwNjQ0Ci0tLS0gYS9qcy9zcmMvaml0L0ppdE9wdGlvbnMuY3BwCi0rKysg Yi9qcy9zcmMvaml0L0ppdE9wdGlvbnMuY3BwCi1AQCAtMTMyLDE3ICsxMzIsMjIgQEAgRGVmYXVs dEppdE9wdGlvbnM6OkRlZmF1bHRKaXRPcHRpb25zKCkgewotICAgLy8gV2FycCBjb21waWxlIEdl bmVyYXRvciBmdW5jdGlvbnMKLSAgIFNFVF9ERUZBVUxUKHdhcnBHZW5lcmF0b3IsIHRydWUpOwot IAotICAgLy8gV2hldGhlciB0aGUgSW9uTW9ua2V5IGFuZCBCYXNlbGluZSBKSVRzIGFyZSBlbmFi bGVkIGZvciBUcnVzdGVkIFByaW5jaXBhbHMuCi0gICAvLyAoSWdub3JlZCBpZiBpb24gb3IgYmFz ZWxpbmVKaXQgaXMgc2V0IHRvIHRydWUuKQotICAgU0VUX0RFRkFVTFQoaml0Rm9yVHJ1c3RlZFBy aW5jaXBhbHMsIGZhbHNlKTsKLSAKLSAgIC8vIFdoZXRoZXIgdGhlIFJlZ0V4cCBKSVQgaXMgZW5h YmxlZC4KLSsjaWYgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotKyAgLy8gVGhpcyBtYXkgZ2Vu ZXJhdGUgSVNBIDMgaW5zdHJ1Y3Rpb25zLiBUaGUgb3RoZXIgSklUIHRpZXJzIGdhdGUgb24gaXQg dG9vLgotKyAgU0VUX0RFRkFVTFQobmF0aXZlUmVnRXhwLCBNYWNyb0Fzc2VtYmxlcjo6U3VwcG9y dHNGbG9hdGluZ1BvaW50KCkpOwotKyNlbHNlCi0gICBTRVRfREVGQVVMVChuYXRpdmVSZWdFeHAs IHRydWUpOwotKyNlbmRpZgotIAotICAgLy8gV2hldGhlciBXYXJwIHNob3VsZCB1c2UgSUNzIGlu c3RlYWQgb2YgdHJhbnNwaWxpbmcgQmFzZWxpbmUgQ2FjaGVJUi4KLSAgIFNFVF9ERUZBVUxUKGZv cmNlSW5saW5lQ2FjaGVzLCBmYWxzZSk7Ci0gCi0gICAvLyBXaGV0aGVyIGFsbCBJQ3Mgc2hvdWxk IGJlIGluaXRpYWxpemVkIGFzIG1lZ2Ftb3JwaGljIElDcy4KLSAgIFNFVF9ERUZBVUxUKGZvcmNl TWVnYW1vcnBoaWNJQ3MsIGZhbHNlKTsKLSAKLSAgIC8vIFRvZ2dsZXMgd2hldGhlciBsYXJnZSBz Y3JpcHRzIGFyZSByZWplY3RlZC4KLWRpZmYgLS1naXQgYS9qcy9zcmMvaml0L0xJUi5oIGIvanMv c3JjL2ppdC9MSVIuaAotaW5kZXggMDI0YmQ3OThjYS4uMGNkNDNjMTJhYiAxMDA2NDQKLS0tLSBh L2pzL3NyYy9qaXQvTElSLmgKLSsrKyBiL2pzL3NyYy9qaXQvTElSLmgKLUBAIC0xOTM5LDE2ICsx OTM5LDE4IEBAIEFueVJlZ2lzdGVyIExBbGxvY2F0aW9uOjp0b1JlZ2lzdGVyKCkgY29uc3Qgewot ICMgIGluY2x1ZGUgImppdC9hcm02NC9MSVItYXJtNjQuaCIKLSAjZWxpZiBkZWZpbmVkKEpTX0NP REVHRU5fTUlQUzMyKSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0KQotICMgIGlmIGRlZmlu ZWQoSlNfQ09ERUdFTl9NSVBTMzIpCi0gIyAgICBpbmNsdWRlICJqaXQvbWlwczMyL0xJUi1taXBz MzIuaCIKLSAjICBlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpCi0gIyAgICBpbmNsdWRl ICJqaXQvbWlwczY0L0xJUi1taXBzNjQuaCIKLSAjICBlbmRpZgotICMgIGluY2x1ZGUgImppdC9t aXBzLXNoYXJlZC9MSVItbWlwcy1zaGFyZWQuaCIKLSsjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5f UFBDNjQpCi0rIyAgaW5jbHVkZSAiaml0L3BwYzY0L0xJUi1wcGM2NC5oIgotICNlbGlmIGRlZmlu ZWQoSlNfQ09ERUdFTl9OT05FKQotICMgIGluY2x1ZGUgImppdC9ub25lL0xJUi1ub25lLmgiCi0g I2Vsc2UKLSAjICBlcnJvciAiVW5rbm93biBhcmNoaXRlY3R1cmUhIgotICNlbmRpZgotIAotICN1 bmRlZiBMSVJfSEVBREVSCi0gCi1kaWZmIC0tZ2l0IGEvanMvc3JjL2ppdC9MYWJlbC5oIGIvanMv c3JjL2ppdC9MYWJlbC5oCi1pbmRleCBhOGY5M2RlMzc4Li40ODBiMThiMjUxIDEwMDY0NAotLS0t IGEvanMvc3JjL2ppdC9MYWJlbC5oCi0rKysgYi9qcy9zcmMvaml0L0xhYmVsLmgKLUBAIC0yMSwx NyArMjEsMTggQEAgc3RydWN0IExhYmVsQmFzZSB7Ci0gICB1aW50MzJfdCBib3VuZF8gOiAxOwot IAotICAgLy8gb2Zmc2V0XyA8IElOVkFMSURfT0ZGU0VUIG1lYW5zIHRoYXQgdGhlIGxhYmVsIGlz IGVpdGhlciBib3VuZCBvciBoYXMKLSAgIC8vIGluY29taW5nIHVzZXMgYW5kIG5lZWRzIHRvIGJl IGJvdW5kLgotICAgdWludDMyX3Qgb2Zmc2V0XyA6IDMxOwotIAotICAgdm9pZCBvcGVyYXRvcj0o Y29uc3QgTGFiZWxCYXNlJiBsYWJlbCkgPSBkZWxldGU7Ci0gCi0tI2lmIGRlZmluZWQoSlNfQ09E RUdFTl9NSVBTMzIpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpCi0rI2lmIGRlZmluZWQo SlNfQ09ERUdFTl9NSVBTMzIpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpIHx8IFwKLSsg ICAgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotICBwdWJsaWM6Ci0gI2VuZGlmCi0gICBzdGF0 aWMgY29uc3QgdWludDMyX3QgSU5WQUxJRF9PRkZTRVQgPSAweDdmZmZmZmZmOyAgLy8gVUlOVDMx X01BWC4KLSAKLSAgcHVibGljOgotICAgTGFiZWxCYXNlKCkgOiBib3VuZF8oZmFsc2UpLCBvZmZz ZXRfKElOVkFMSURfT0ZGU0VUKSB7fQotIAotICAgLy8gSWYgdGhlIGxhYmVsIGlzIGJvdW5kLCBh bGwgaW5jb21pbmcgZWRnZXMgaGF2ZSBiZWVuIHBhdGNoZWQgYW5kIGFueQotZGlmZiAtLWdpdCBh L2pzL3NyYy9qaXQvTG93ZXJpbmcuaCBiL2pzL3NyYy9qaXQvTG93ZXJpbmcuaAotaW5kZXggOTc5 Njg3ZGE4NS4uYzA2NGU1ZDkxNCAxMDA2NDQKLS0tLSBhL2pzL3NyYy9qaXQvTG93ZXJpbmcuaAot KysrIGIvanMvc3JjL2ppdC9Mb3dlcmluZy5oCi1AQCAtMTgsMTYgKzE4LDE4IEBACi0gI2VsaWYg ZGVmaW5lZChKU19DT0RFR0VOX0FSTSkKLSAjICBpbmNsdWRlICJqaXQvYXJtL0xvd2VyaW5nLWFy bS5oIgotICNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9BUk02NCkKLSAjICBpbmNsdWRlICJqaXQv YXJtNjQvTG93ZXJpbmctYXJtNjQuaCIKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzMy KQotICMgIGluY2x1ZGUgImppdC9taXBzMzIvTG93ZXJpbmctbWlwczMyLmgiCi0gI2VsaWYgZGVm aW5lZChKU19DT0RFR0VOX01JUFM2NCkKLSAjICBpbmNsdWRlICJqaXQvbWlwczY0L0xvd2VyaW5n LW1pcHM2NC5oIgotKyNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSsjICBpbmNsdWRl ICJqaXQvcHBjNjQvTG93ZXJpbmctcHBjNjQuaCIKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5f Tk9ORSkKLSAjICBpbmNsdWRlICJqaXQvbm9uZS9Mb3dlcmluZy1ub25lLmgiCi0gI2Vsc2UKLSAj ICBlcnJvciAiVW5rbm93biBhcmNoaXRlY3R1cmUhIgotICNlbmRpZgotIAotIG5hbWVzcGFjZSBq cyB7Ci0gbmFtZXNwYWNlIGppdCB7Ci1kaWZmIC0tZ2l0IGEvanMvc3JjL2ppdC9NYWNyb0Fzc2Vt Ymxlci1pbmwuaCBiL2pzL3NyYy9qaXQvTWFjcm9Bc3NlbWJsZXItaW5sLmgKLWluZGV4IGNmMTZj ZGYwYTcuLmZhMzljNWY0ZDIgMTAwNjQ0Ci0tLS0gYS9qcy9zcmMvaml0L01hY3JvQXNzZW1ibGVy LWlubC5oCi0rKysgYi9qcy9zcmMvaml0L01hY3JvQXNzZW1ibGVyLWlubC5oCi1AQCAtMzAsMTYg KzMwLDE4IEBACi0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX0FSTSkKLSAjICBpbmNsdWRlICJq aXQvYXJtL01hY3JvQXNzZW1ibGVyLWFybS1pbmwuaCIKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVH RU5fQVJNNjQpCi0gIyAgaW5jbHVkZSAiaml0L2FybTY0L01hY3JvQXNzZW1ibGVyLWFybTY0LWlu bC5oIgotICNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTMzIpCi0gIyAgaW5jbHVkZSAiaml0 L21pcHMzMi9NYWNyb0Fzc2VtYmxlci1taXBzMzItaW5sLmgiCi0gI2VsaWYgZGVmaW5lZChKU19D T0RFR0VOX01JUFM2NCkKLSAjICBpbmNsdWRlICJqaXQvbWlwczY0L01hY3JvQXNzZW1ibGVyLW1p cHM2NC1pbmwuaCIKLSsjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fUFBDNjQpCi0rIyAgaW5jbHVk ZSAiaml0L3BwYzY0L01hY3JvQXNzZW1ibGVyLXBwYzY0LWlubC5oIgotICNlbGlmICFkZWZpbmVk KEpTX0NPREVHRU5fTk9ORSkKLSAjICBlcnJvciAiVW5rbm93biBhcmNoaXRlY3R1cmUhIgotICNl bmRpZgotIAotICNpbmNsdWRlICJ3YXNtL1dhc21CdWlsdGlucy5oIgotIAotIG5hbWVzcGFjZSBq cyB7Ci0gbmFtZXNwYWNlIGppdCB7Ci1kaWZmIC0tZ2l0IGEvanMvc3JjL2ppdC9NYWNyb0Fzc2Vt Ymxlci5jcHAgYi9qcy9zcmMvaml0L01hY3JvQXNzZW1ibGVyLmNwcAotaW5kZXggMmEzYWVlYzYw Ny4uY2JlOWQxNGY0NiAxMDA2NDQKLS0tLSBhL2pzL3NyYy9qaXQvTWFjcm9Bc3NlbWJsZXIuY3Bw Ci0rKysgYi9qcy9zcmMvaml0L01hY3JvQXNzZW1ibGVyLmNwcAotQEAgLTQwNDQsMTYgKzQwNDQs MTggQEAgdm9pZCBNYWNyb0Fzc2VtYmxlcjo6ZW1pdFByZUJhcnJpZXJGYXN0UGF0aChKU1J1bnRp bWUqIHJ0LCBNSVJUeXBlIHR5cGUsCi0gI2VsaWYgSlNfQ09ERUdFTl9BUk0KLSAgIG1hX2xzbCh0 ZW1wMywgdGVtcDEsIHRlbXAxKTsKLSAjZWxpZiBKU19DT0RFR0VOX0FSTTY0Ci0gICBMc2woQVJN UmVnaXN0ZXIodGVtcDEsIDY0KSwgQVJNUmVnaXN0ZXIodGVtcDEsIDY0KSwgQVJNUmVnaXN0ZXIo dGVtcDMsIDY0KSk7Ci0gI2VsaWYgSlNfQ09ERUdFTl9NSVBTMzIKLSAgIG1hX3NsbCh0ZW1wMSwg dGVtcDEsIHRlbXAzKTsKLSAjZWxpZiBKU19DT0RFR0VOX01JUFM2NAotICAgbWFfZHNsbCh0ZW1w MSwgdGVtcDEsIHRlbXAzKTsKLSsjZWxpZiBKU19DT0RFR0VOX1BQQzY0Ci0rICBhc19zbGQodGVt cDEsIHRlbXAxLCB0ZW1wMyk7Ci0gI2VsaWYgSlNfQ09ERUdFTl9OT05FCi0gICBNT1pfQ1JBU0go KTsKLSAjZWxzZQotICMgIGVycm9yICJVbmtub3duIGFyY2hpdGVjdHVyZSIKLSAjZW5kaWYKLSAK LSAgIC8vIE5vIGJhcnJpZXIgaXMgbmVlZGVkIGlmIHRoZSBiaXQgaXMgc2V0LCB8d29yZCAmIG1h c2sgIT0gMHwuCi0gICBicmFuY2hUZXN0UHRyKEFzc2VtYmxlcjo6Tm9uWmVybywgdGVtcDIsIHRl bXAxLCBub0JhcnJpZXIpOwotZGlmZiAtLWdpdCBhL2pzL3NyYy9qaXQvTWFjcm9Bc3NlbWJsZXIu aCBiL2pzL3NyYy9qaXQvTWFjcm9Bc3NlbWJsZXIuaAotaW5kZXggZTJkNTNkNWNlZi4uY2IwMTQ4 Yjk0ZSAxMDA2NDQKLS0tLSBhL2pzL3NyYy9qaXQvTWFjcm9Bc3NlbWJsZXIuaAotKysrIGIvanMv c3JjL2ppdC9NYWNyb0Fzc2VtYmxlci5oCi1AQCAtMjAsMTYgKzIwLDE4IEBACi0gI2VsaWYgZGVm aW5lZChKU19DT0RFR0VOX0FSTSkKLSAjICBpbmNsdWRlICJqaXQvYXJtL01hY3JvQXNzZW1ibGVy LWFybS5oIgotICNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9BUk02NCkKLSAjICBpbmNsdWRlICJq aXQvYXJtNjQvTWFjcm9Bc3NlbWJsZXItYXJtNjQuaCIKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVH RU5fTUlQUzMyKQotICMgIGluY2x1ZGUgImppdC9taXBzMzIvTWFjcm9Bc3NlbWJsZXItbWlwczMy LmgiCi0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2NCkKLSAjICBpbmNsdWRlICJqaXQv bWlwczY0L01hY3JvQXNzZW1ibGVyLW1pcHM2NC5oIgotKyNlbGlmIGRlZmluZWQoSlNfQ09ERUdF Tl9QUEM2NCkKLSsjICBpbmNsdWRlICJqaXQvcHBjNjQvTWFjcm9Bc3NlbWJsZXItcHBjNjQuaCIK LSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fTk9ORSkKLSAjICBpbmNsdWRlICJqaXQvbm9uZS9N YWNyb0Fzc2VtYmxlci1ub25lLmgiCi0gI2Vsc2UKLSAjICBlcnJvciAiVW5rbm93biBhcmNoaXRl Y3R1cmUhIgotICNlbmRpZgotICNpbmNsdWRlICJqaXQvQUJJRnVuY3Rpb25zLmgiCi0gI2luY2x1 ZGUgImppdC9BdG9taWNPcC5oIgotICNpbmNsdWRlICJqaXQvQXV0b0ppdENvbnRleHRBbGxvYy5o IgotQEAgLTg3LDE4ICs4OSwxOCBAQAotIC8vICAgLy97e3sgY2hlY2tfbWFjcm9hc3NlbWJsZXJf c3R5bGUKLSAvLyAgIGlubGluZSB1aW50MzJfdAotIC8vICAgTWFjcm9Bc3NlbWJsZXI6OmZyYW1l UHVzaGVkKCkgY29uc3QKLSAvLyAgIHsKLSAvLyAgICAgICByZXR1cm4gZnJhbWVQdXNoZWRfOwot IC8vICAgfQotIC8vICAgLy8vL319fSBjaGVja19tYWNyb2Fzc2VtYmxlcl9zdHlsZQotIAotLSNk ZWZpbmUgQUxMX0FSQ0ggbWlwczMyLCBtaXBzNjQsIGFybSwgYXJtNjQsIHg4NiwgeDY0Ci0tI2Rl ZmluZSBBTExfU0hBUkVEX0FSQ0ggYXJtLCBhcm02NCwgeDg2X3NoYXJlZCwgbWlwc19zaGFyZWQK LSsjZGVmaW5lIEFMTF9BUkNIIG1pcHMzMiwgbWlwczY0LCBhcm0sIGFybTY0LCB4ODYsIHg2NCwg cHBjNjQKLSsjZGVmaW5lIEFMTF9TSEFSRURfQVJDSCBhcm0sIGFybTY0LCB4ODZfc2hhcmVkLCBt aXBzX3NoYXJlZCwgcHBjNjQKLSAKLSAvLyAqIEhvdyB0aGlzIG1hY3JvIHdvcmtzOgotIC8vCi0g Ly8gREVGSU5FRF9PTiBpcyBhIG1hY3JvIHdoaWNoIGNoZWNrIGlmLCBmb3IgdGhlIGN1cnJlbnQg YXJjaGl0ZWN0dXJlLCB0aGUKLSAvLyBtZXRob2QgaXMgZGVmaW5lZCBvbiB0aGUgbWFjcm8gYXNz ZW1ibGVyIG9yIG5vdC4KLSAvLwotIC8vIEZvciBlYWNoIGFyY2hpdGVjdHVyZSwgd2UgaGF2ZSBh IG1hY3JvIG5hbWVkIERFRklORURfT05fYXJjaC4gIFRoaXMgbWFjcm8gaXMKLSAvLyBlbXB0eSBp ZiB0aGlzIGlzIG5vdCB0aGUgY3VycmVudCBhcmNoaXRlY3R1cmUuICBPdGhlcndpc2UgaXQgbXVz dCBiZSBlaXRoZXIKLUBAIC0xMzQsMTYgKzEzNiwxNyBAQAotICNkZWZpbmUgREVGSU5FRF9PTl94 ODYKLSAjZGVmaW5lIERFRklORURfT05feDY0Ci0gI2RlZmluZSBERUZJTkVEX09OX3g4Nl9zaGFy ZWQKLSAjZGVmaW5lIERFRklORURfT05fYXJtCi0gI2RlZmluZSBERUZJTkVEX09OX2FybTY0Ci0g I2RlZmluZSBERUZJTkVEX09OX21pcHMzMgotICNkZWZpbmUgREVGSU5FRF9PTl9taXBzNjQKLSAj ZGVmaW5lIERFRklORURfT05fbWlwc19zaGFyZWQKLSsjZGVmaW5lIERFRklORURfT05fcHBjNjQK LSAjZGVmaW5lIERFRklORURfT05fbm9uZQotIAotIC8vIFNwZWNpYWxpemUgZm9yIGVhY2ggYXJj aGl0ZWN0dXJlLgotICNpZiBkZWZpbmVkKEpTX0NPREVHRU5fWDg2KQotICMgIHVuZGVmIERFRklO RURfT05feDg2Ci0gIyAgZGVmaW5lIERFRklORURfT05feDg2IGRlZmluZQotICMgIHVuZGVmIERF RklORURfT05feDg2X3NoYXJlZAotICMgIGRlZmluZSBERUZJTkVEX09OX3g4Nl9zaGFyZWQgZGVm aW5lCi1AQCAtMTYzLDE2ICsxNjYsMTkgQEAKLSAjICBkZWZpbmUgREVGSU5FRF9PTl9taXBzMzIg ZGVmaW5lCi0gIyAgdW5kZWYgREVGSU5FRF9PTl9taXBzX3NoYXJlZAotICMgIGRlZmluZSBERUZJ TkVEX09OX21pcHNfc2hhcmVkIGRlZmluZQotICNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9NSVBT NjQpCi0gIyAgdW5kZWYgREVGSU5FRF9PTl9taXBzNjQKLSAjICBkZWZpbmUgREVGSU5FRF9PTl9t aXBzNjQgZGVmaW5lCi0gIyAgdW5kZWYgREVGSU5FRF9PTl9taXBzX3NoYXJlZAotICMgIGRlZmlu ZSBERUZJTkVEX09OX21pcHNfc2hhcmVkIGRlZmluZQotKyNlbGlmIGRlZmluZWQoSlNfQ09ERUdF Tl9QUEM2NCkKLSsjICB1bmRlZiBERUZJTkVEX09OX3BwYzY0Ci0rIyAgZGVmaW5lIERFRklORURf T05fcHBjNjQgZGVmaW5lCi0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX05PTkUpCi0gIyAgdW5k ZWYgREVGSU5FRF9PTl9ub25lCi0gIyAgZGVmaW5lIERFRklORURfT05fbm9uZSBjcmFzaAotICNl bHNlCi0gIyAgZXJyb3IgIlVua25vd24gYXJjaGl0ZWN0dXJlISIKLSAjZW5kaWYKLSAKLSAjZGVm aW5lIERFRklORURfT05fUkVTVUxUX2NyYXNoIFwKLUBAIC00NzksMzYgKzQ4NSwzNiBAQCBjbGFz cyBNYWNyb0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlclNwZWNpZmljIHsKLSAgIC8v IHRhcmdldHMgcm9sbCB0aGVpciBvd24gc2F2ZS1jb2RlIGluc3RlYWQuCi0gICAvLwotICAgLy8g TmV2ZXJ0aGVsZXNzLCBiZWNhdXNlIHNvbWUgdGFyZ2V0cyAqZG8qIGNhbGwgUHVzaFJlZ3NJbk1h c2sgZnJvbQotICAgLy8gSml0UnVudGltZTo6Z2VuZXJhdGVJbnZhbGlkYXRvciwgeW91IHNob3Vs ZCBjaGVjayBjYXJlZnVsbHkgYWxsIG9mIHRoZQotICAgLy8gOjpnZW5lcmF0ZUludmFsaWRhdG9y IG1ldGhvZHMgaWYgeW91IGNoYW5nZSB0aGUgUHVzaFJlZ3NJbk1hc2sgZm9ybWF0LgotIAotICAg Ly8gVGhlIHNpemUgb2YgdGhlIGFyZWEgdXNlZCBieSBQdXNoUmVnc0luTWFzay4KLSAgIHNpemVf dCBQdXNoUmVnc0luTWFza1NpemVJbkJ5dGVzKExpdmVSZWdpc3RlclNldCBzZXQpCi0tICAgICAg REVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzMzIsIG1pcHM2NCwgeDg2X3NoYXJlZCk7Ci0rICAg ICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzMzIsIG1pcHM2NCwgeDg2X3NoYXJlZCwgcHBj NjQpOwotIAotICAgdm9pZCBQdXNoUmVnc0luTWFzayhMaXZlUmVnaXN0ZXJTZXQgc2V0KQotLSAg ICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwczMyLCBtaXBzNjQsIHg4Nl9zaGFyZWQpOwot KyAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwczMyLCBtaXBzNjQsIHg4Nl9zaGFyZWQs IHBwYzY0KTsKLSAgIHZvaWQgUHVzaFJlZ3NJbk1hc2soTGl2ZUdlbmVyYWxSZWdpc3RlclNldCBz ZXQpOwotIAotICAgLy8gTGlrZSBQdXNoUmVnc0luTWFzaywgYnV0IGluc3RlYWQgb2YgcHVzaGlu ZyB0aGUgcmVnaXN0ZXJzLCBzdG9yZSB0aGVtIHRvCi0gICAvLyB8ZGVzdHwuIHxkZXN0fCBzaG91 bGQgcG9pbnQgdG8gdGhlIGVuZCBvZiB0aGUgcmVzZXJ2ZWQgc3BhY2UsIHNvIHRoZQotICAgLy8g Zmlyc3QgcmVnaXN0ZXIgd2lsbCBiZSBzdG9yZWQgYXQgfGRlc3Qub2Zmc2V0IC0gc2l6ZW9mKHJl Z2lzdGVyKXwuICBJdCBpcwotICAgLy8gcmVxdWlyZWQgdGhhdCB8ZGVzdC5vZmZzZXR8IGlzIGF0 IGxlYXN0IGFzIGxhcmdlIGFzIHRoZSB2YWx1ZSBjb21wdXRlZCBieQotICAgLy8gUHVzaFJlZ3NJ bk1hc2tTaXplSW5CeXRlcyBmb3IgdGhpcyB8c2V0fC4gIEluIG90aGVyIHdvcmRzLCB8ZGVzdC5i YXNlfAotICAgLy8gbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGxvd2VzdCBhZGRyZXNzIGluIHRo ZSBzYXZlIGFyZWEsIG9yIHNvbWUgYWRkcmVzcwotICAgLy8gYmVsb3cgdGhhdC4KLSAgIHZvaWQg c3RvcmVSZWdzSW5NYXNrKExpdmVSZWdpc3RlclNldCBzZXQsIEFkZHJlc3MgZGVzdCwgUmVnaXN0 ZXIgc2NyYXRjaCkKLS0gICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHMzMiwgbWlwczY0 LCB4ODZfc2hhcmVkKTsKLSsgICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHMzMiwgbWlw czY0LCB4ODZfc2hhcmVkLCBwcGM2NCk7Ci0gCi0gICB2b2lkIFBvcFJlZ3NJbk1hc2soTGl2ZVJl Z2lzdGVyU2V0IHNldCk7Ci0gICB2b2lkIFBvcFJlZ3NJbk1hc2soTGl2ZUdlbmVyYWxSZWdpc3Rl clNldCBzZXQpOwotICAgdm9pZCBQb3BSZWdzSW5NYXNrSWdub3JlKExpdmVSZWdpc3RlclNldCBz ZXQsIExpdmVSZWdpc3RlclNldCBpZ25vcmUpCi0tICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0 LCBtaXBzMzIsIG1pcHM2NCwgeDg2X3NoYXJlZCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm0sIGFy bTY0LCBtaXBzMzIsIG1pcHM2NCwgeDg2X3NoYXJlZCwgcHBjNjQpOwotIAotICAgLy8gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0gICAvLyBTdGFjayBtYW5pcHVsYXRpb24gZnVuY3Rpb25zIC0tIHNpbmdsZSByZWdpc3RlcnMv dmFsdWVzLgotIAotICAgdm9pZCBQdXNoKGNvbnN0IE9wZXJhbmQgb3ApIERFRklORURfT04oeDg2 X3NoYXJlZCk7Ci0gICB2b2lkIFB1c2goUmVnaXN0ZXIgcmVnKSBQRVJfU0hBUkVEX0FSQ0g7Ci0g ICB2b2lkIFB1c2goUmVnaXN0ZXIgcmVnMSwgUmVnaXN0ZXIgcmVnMiwgUmVnaXN0ZXIgcmVnMywg UmVnaXN0ZXIgcmVnNCkKLSAgICAgICBERUZJTkVEX09OKGFybTY0KTsKLUBAIC01MzEsMTcgKzUz NywxNyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlclNwZWNp ZmljIHsKLSAgIGlubGluZSBDb2RlT2Zmc2V0IFB1c2hXaXRoUGF0Y2goSW1tV29yZCB3b3JkKTsK LSAgIGlubGluZSBDb2RlT2Zmc2V0IFB1c2hXaXRoUGF0Y2goSW1tUHRyIGltbSk7Ci0gCi0gICB2 b2lkIFBvcChjb25zdCBPcGVyYW5kIG9wKSBERUZJTkVEX09OKHg4Nl9zaGFyZWQpOwotICAgdm9p ZCBQb3AoUmVnaXN0ZXIgcmVnKSBQRVJfU0hBUkVEX0FSQ0g7Ci0gICB2b2lkIFBvcChGbG9hdFJl Z2lzdGVyIHQpIFBFUl9TSEFSRURfQVJDSDsKLSAgIHZvaWQgUG9wKGNvbnN0IFZhbHVlT3BlcmFu ZCYgdmFsKSBQRVJfU0hBUkVEX0FSQ0g7Ci0gICB2b2lkIFBvcEZsYWdzKCkgREVGSU5FRF9PTih4 ODZfc2hhcmVkKTsKLS0gIHZvaWQgUG9wU3RhY2tQdHIoKSBERUZJTkVEX09OKGFybSwgbWlwc19z aGFyZWQsIHg4Nl9zaGFyZWQpOwotKyAgdm9pZCBQb3BTdGFja1B0cigpIERFRklORURfT04oYXJt LCBtaXBzX3NoYXJlZCwgeDg2X3NoYXJlZCwgcHBjNjQpOwotICAgdm9pZCBwb3BSb290ZWQoVk1G dW5jdGlvbkRhdGE6OlJvb3RUeXBlIHJvb3RUeXBlLCBSZWdpc3RlciBjZWxsUmVnLAotICAgICAg ICAgICAgICAgICAgY29uc3QgVmFsdWVPcGVyYW5kJiB2YWx1ZVJlZyk7Ci0gCi0gICAvLyBNb3Zl IHRoZSBzdGFjayBwb2ludGVyIGJhc2VkIG9uIHRoZSByZXF1ZXN0ZWQgYW1vdW50LgotICAgdm9p ZCBhZGp1c3RTdGFjayhpbnQgYW1vdW50KTsKLSAgIHZvaWQgZnJlZVN0YWNrKHVpbnQzMl90IGFt b3VudCk7Ci0gCi0gICAvLyBXYXJuaW5nOiBUaGlzIG1ldGhvZCBkb2VzIG5vdCB1cGRhdGUgdGhl IGZyYW1lUHVzaGVkKCkgY291bnRlci4KLUBAIC01ODksMTggKzU5NSwxOCBAQCBjbGFzcyBNYWNy b0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlclNwZWNpZmljIHsKLSAKLSAgIC8vIFB1 c2ggdGhlIHJldHVybiBhZGRyZXNzIGFuZCBtYWtlIGEgY2FsbC4gT24gcGxhdGZvcm1zIHdoZXJl IHRoaXMgZnVuY3Rpb24KLSAgIC8vIGlzIG5vdCBkZWZpbmVkLCBwdXNoIHRoZSBsaW5rIHJlZ2lz dGVyIChwdXNoUmV0dXJuQWRkcmVzcykgYXQgdGhlIGVudHJ5Ci0gICAvLyBwb2ludCBvZiB0aGUg Y2FsbGVlLgotICAgdm9pZCBjYWxsQW5kUHVzaFJldHVybkFkZHJlc3MoUmVnaXN0ZXIgcmVnKSBE RUZJTkVEX09OKHg4Nl9zaGFyZWQpOwotICAgdm9pZCBjYWxsQW5kUHVzaFJldHVybkFkZHJlc3Mo TGFiZWwqIGxhYmVsKSBERUZJTkVEX09OKHg4Nl9zaGFyZWQpOwotIAotICAgLy8gVGhlc2UgZG8g bm90IGFkanVzdCBmcmFtZVB1c2hlZCgpLgotLSAgdm9pZCBwdXNoUmV0dXJuQWRkcmVzcygpIERF RklORURfT04obWlwc19zaGFyZWQsIGFybSwgYXJtNjQpOwotLSAgdm9pZCBwb3BSZXR1cm5BZGRy ZXNzKCkgREVGSU5FRF9PTihtaXBzX3NoYXJlZCwgYXJtLCBhcm02NCk7Ci0rICB2b2lkIHB1c2hS ZXR1cm5BZGRyZXNzKCkgREVGSU5FRF9PTihtaXBzX3NoYXJlZCwgYXJtLCBhcm02NCwgcHBjNjQp OwotKyAgdm9pZCBwb3BSZXR1cm5BZGRyZXNzKCkgREVGSU5FRF9PTihtaXBzX3NoYXJlZCwgYXJt LCBhcm02NCwgcHBjNjQpOwotIAotICAgLy8gVXNlZnVsIGZvciBkZWFsaW5nIHdpdGggdHdvLXZh bHVlZCByZXR1cm5zLgotICAgdm9pZCBtb3ZlUmVnUGFpcihSZWdpc3RlciBzcmMwLCBSZWdpc3Rl ciBzcmMxLCBSZWdpc3RlciBkc3QwLCBSZWdpc3RlciBkc3QxLAotICAgICAgICAgICAgICAgICAg ICBNb3ZlT3A6OlR5cGUgdHlwZSA9IE1vdmVPcDo6R0VORVJBTCk7Ci0gCi0gIHB1YmxpYzoKLSAg IC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotICAgLy8gUGF0Y2hhYmxlIG5lYXIvZmFyIGp1bXBzLgotQEAgLTYyMSwyMCAr NjI3LDIwIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyIDogcHVibGljIE1hY3JvQXNzZW1ibGVyU3Bl Y2lmaWMgewotIAotICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgbGlrZSBtb3ZXaXRoUGF0Y2gvUGF0 Y2hEYXRhV2l0aFZhbHVlQ2hlY2sgYnV0IGFsbG93Ci0gICAvLyB1c2luZyBwYy1yZWxhdGl2ZSBh ZGRyZXNzaW5nIG9uIGNlcnRhaW4gcGxhdGZvcm1zIChSSVAtcmVsYXRpdmUgTEVBIG9uIHg2NCwK LSAgIC8vIEFEUiBpbnN0cnVjdGlvbiBvbiBhcm02NCkuCi0gICAvLwotICAgLy8gTm90ZTogIk5l YXIiIGFwcGxpZXMgdG8gQVJNNjQgd2hlcmUgdGhlIHRhcmdldCBtdXN0IGJlIHdpdGhpbiAxIE1C ICh0aGlzIGlzCi0gICAvLyByZWxlYXNlLWFzc2VydGVkKS4KLSAgIENvZGVPZmZzZXQgbW92ZU5l YXJBZGRyZXNzV2l0aFBhdGNoKFJlZ2lzdGVyIGRlc3QpCi0tICAgICAgREVGSU5FRF9PTih4ODYs IHg2NCwgYXJtLCBhcm02NCwgbWlwc19zaGFyZWQpOwotKyAgICAgIERFRklORURfT04oeDg2LCB4 NjQsIGFybSwgYXJtNjQsIG1pcHNfc2hhcmVkLCBwcGM2NCk7Ci0gICBzdGF0aWMgdm9pZCBwYXRj aE5lYXJBZGRyZXNzTW92ZShDb2RlTG9jYXRpb25MYWJlbCBsb2MsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCB0YXJnZXQpCi0tICAgICAgREVG SU5FRF9PTih4ODYsIHg2NCwgYXJtLCBhcm02NCwgbWlwc19zaGFyZWQpOwotKyAgICAgIERFRklO RURfT04oeDg2LCB4NjQsIGFybSwgYXJtNjQsIG1pcHNfc2hhcmVkLCBwcGM2NCk7Ci0gCi0gIHB1 YmxpYzoKLSAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotICAgLy8gW1NNRE9DXSBKSVQtdG8tQysrIEZ1bmN0aW9uIENh bGxzIChjYWxsV2l0aEFCSSkKLSAgIC8vCi0gICAvLyBjYWxsV2l0aEFCSSBpcyB1c2VkIHRvIG1h a2UgYSBjYWxsIHVzaW5nIHRoZSBzdGFuZGFyZCBDL0MrKyBzeXN0ZW0gQUJJLgotICAgLy8KLSAg IC8vIGNhbGxXaXRoQUJJIGlzIGEgbG93IGxldmVsIGludGVyZmFjZSBmb3IgbWFraW5nIGNhbGxz LCBhcyBzdWNoIGV2ZXJ5IGNhbGwKLUBAIC05ODMsMjAgKzk4OSwyMSBAQCBjbGFzcyBNYWNyb0Fz c2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlclNwZWNpZmljIHsKLSAgIGlubGluZSB2b2lk IHhvcjMyKEltbTMyIGltbSwgUmVnaXN0ZXIgZGVzdCkgUEVSX1NIQVJFRF9BUkNIOwotICAgaW5s aW5lIHZvaWQgeG9yMzIoSW1tMzIgaW1tLCBjb25zdCBBZGRyZXNzJiBkZXN0KSBQRVJfU0hBUkVE X0FSQ0g7Ci0gICBpbmxpbmUgdm9pZCB4b3IzMihjb25zdCBBZGRyZXNzJiBzcmMsIFJlZ2lzdGVy IGRlc3QpIFBFUl9TSEFSRURfQVJDSDsKLSAKLSAgIGlubGluZSB2b2lkIHhvclB0cihSZWdpc3Rl ciBzcmMsIFJlZ2lzdGVyIGRlc3QpIFBFUl9BUkNIOwotICAgaW5saW5lIHZvaWQgeG9yUHRyKElt bTMyIGltbSwgUmVnaXN0ZXIgZGVzdCkgUEVSX0FSQ0g7Ci0gCi0gICBpbmxpbmUgdm9pZCBhbmQ2 NChjb25zdCBPcGVyYW5kJiBzcmMsIFJlZ2lzdGVyNjQgZGVzdCkKLS0gICAgICBERUZJTkVEX09O KHg2NCwgbWlwczY0KTsKLS0gIGlubGluZSB2b2lkIG9yNjQoY29uc3QgT3BlcmFuZCYgc3JjLCBS ZWdpc3RlcjY0IGRlc3QpIERFRklORURfT04oeDY0LCBtaXBzNjQpOwotKyAgICAgIERFRklORURf T04oeDY0LCBtaXBzNjQsIHBwYzY0KTsKLSsgIGlubGluZSB2b2lkIG9yNjQoY29uc3QgT3BlcmFu ZCYgc3JjLCBSZWdpc3RlcjY0IGRlc3QpCi0rICAgICAgREVGSU5FRF9PTih4NjQsIG1pcHM2NCwg cHBjNjQpOwotICAgaW5saW5lIHZvaWQgeG9yNjQoY29uc3QgT3BlcmFuZCYgc3JjLCBSZWdpc3Rl cjY0IGRlc3QpCi0tICAgICAgREVGSU5FRF9PTih4NjQsIG1pcHM2NCk7Ci0rICAgICAgREVGSU5F RF9PTih4NjQsIG1pcHM2NCwgcHBjNjQpOwotIAotICAgLy8gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAvLyBTd2FwIGlu c3RydWN0aW9ucwotIAotICAgLy8gU3dhcCB0aGUgdHdvIGxvd2VyIGJ5dGVzIGFuZCBzaWduIGV4 dGVuZCB0aGUgcmVzdWx0IHRvIDMyLWJpdC4KLSAgIGlubGluZSB2b2lkIGJ5dGVTd2FwMTZTaWdu RXh0ZW5kKFJlZ2lzdGVyIHJlZykgUEVSX1NIQVJFRF9BUkNIOwotIAotICAgLy8gU3dhcCB0aGUg dHdvIGxvd2VyIGJ5dGVzIGFuZCB6ZXJvIGV4dGVuZCB0aGUgcmVzdWx0IHRvIDMyLWJpdC4KLUBA IC0xMDIwLDI3ICsxMDI3LDI3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyIDogcHVibGljIE1hY3Jv QXNzZW1ibGVyU3BlY2lmaWMgewotICAgaW5saW5lIHZvaWQgYWRkUHRyKFJlZ2lzdGVyIHNyYywg UmVnaXN0ZXIgZGVzdCkgUEVSX0FSQ0g7Ci0gICBpbmxpbmUgdm9pZCBhZGRQdHIoUmVnaXN0ZXIg c3JjMSwgUmVnaXN0ZXIgc3JjMiwgUmVnaXN0ZXIgZGVzdCkKLSAgICAgICBERUZJTkVEX09OKGFy bTY0KTsKLSAgIGlubGluZSB2b2lkIGFkZFB0cihJbW0zMiBpbW0sIFJlZ2lzdGVyIGRlc3QpIFBF Ul9BUkNIOwotICAgaW5saW5lIHZvaWQgYWRkUHRyKEltbTMyIGltbSwgUmVnaXN0ZXIgc3JjLCBS ZWdpc3RlciBkZXN0KSBERUZJTkVEX09OKGFybTY0KTsKLSAgIGlubGluZSB2b2lkIGFkZFB0cihJ bW1Xb3JkIGltbSwgUmVnaXN0ZXIgZGVzdCkgUEVSX0FSQ0g7Ci0gICBpbmxpbmUgdm9pZCBhZGRQ dHIoSW1tUHRyIGltbSwgUmVnaXN0ZXIgZGVzdCk7Ci0gICBpbmxpbmUgdm9pZCBhZGRQdHIoSW1t MzIgaW1tLCBjb25zdCBBZGRyZXNzJiBkZXN0KQotLSAgICAgIERFRklORURfT04obWlwc19zaGFy ZWQsIGFybSwgYXJtNjQsIHg4NiwgeDY0KTsKLSsgICAgICBERUZJTkVEX09OKG1pcHNfc2hhcmVk LCBhcm0sIGFybTY0LCB4ODYsIHg2NCwgcHBjNjQpOwotICAgaW5saW5lIHZvaWQgYWRkUHRyKElt bTMyIGltbSwgY29uc3QgQWJzb2x1dGVBZGRyZXNzJiBkZXN0KQotICAgICAgIERFRklORURfT04o eDg2LCB4NjQpOwotICAgaW5saW5lIHZvaWQgYWRkUHRyKGNvbnN0IEFkZHJlc3MmIHNyYywgUmVn aXN0ZXIgZGVzdCkKLS0gICAgICBERUZJTkVEX09OKG1pcHNfc2hhcmVkLCBhcm0sIGFybTY0LCB4 ODYsIHg2NCk7Ci0rICAgICAgREVGSU5FRF9PTihtaXBzX3NoYXJlZCwgYXJtLCBhcm02NCwgeDg2 LCB4NjQsIHBwYzY0KTsKLSAKLSAgIGlubGluZSB2b2lkIGFkZDY0KFJlZ2lzdGVyNjQgc3JjLCBS ZWdpc3RlcjY0IGRlc3QpIFBFUl9BUkNIOwotICAgaW5saW5lIHZvaWQgYWRkNjQoSW1tMzIgaW1t LCBSZWdpc3RlcjY0IGRlc3QpIFBFUl9BUkNIOwotICAgaW5saW5lIHZvaWQgYWRkNjQoSW1tNjQg aW1tLCBSZWdpc3RlcjY0IGRlc3QpIFBFUl9BUkNIOwotICAgaW5saW5lIHZvaWQgYWRkNjQoY29u c3QgT3BlcmFuZCYgc3JjLCBSZWdpc3RlcjY0IGRlc3QpCi0tICAgICAgREVGSU5FRF9PTih4NjQs IG1pcHM2NCk7Ci0rICAgICAgREVGSU5FRF9PTih4NjQsIG1pcHM2NCwgcHBjNjQpOwotIAotICAg aW5saW5lIHZvaWQgYWRkRmxvYXQzMihGbG9hdFJlZ2lzdGVyIHNyYywgRmxvYXRSZWdpc3RlciBk ZXN0KSBQRVJfU0hBUkVEX0FSQ0g7Ci0gCi0gICAvLyBDb21wdXRlIGRlc3Q9U1AtaW1tIHdoZXJl IGRlc3QgaXMgYSBwb2ludGVyIHJlZ2lzdGVycyBhbmQgbm90IFNQLiAgVGhlCi0gICAvLyBvZmZz ZXQgcmV0dXJuZWQgZnJvbSBzdWIzMkZyb21TdGFja1B0cldpdGhQYXRjaCgpIG11c3QgYmUgcGFz c2VkIHRvCi0gICAvLyBwYXRjaFN1YjMyRnJvbVN0YWNrUHRyKCkuCi0gICBpbmxpbmUgQ29kZU9m ZnNldCBzdWIzMkZyb21TdGFja1B0cldpdGhQYXRjaChSZWdpc3RlciBkZXN0KSBQRVJfQVJDSDsK LSAgIGlubGluZSB2b2lkIHBhdGNoU3ViMzJGcm9tU3RhY2tQdHIoQ29kZU9mZnNldCBvZmZzZXQs IEltbTMyIGltbSkgUEVSX0FSQ0g7Ci1AQCAtMTA0OSw1OCArMTA1Niw1OCBAQCBjbGFzcyBNYWNy b0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlclNwZWNpZmljIHsKLSAgIGlubGluZSB2 b2lkIGFkZENvbnN0YW50RG91YmxlKGRvdWJsZSBkLCBGbG9hdFJlZ2lzdGVyIGRlc3QpIERFRklO RURfT04oeDg2KTsKLSAKLSAgIGlubGluZSB2b2lkIHN1YjMyKGNvbnN0IEFkZHJlc3MmIHNyYywg UmVnaXN0ZXIgZGVzdCkgUEVSX1NIQVJFRF9BUkNIOwotICAgaW5saW5lIHZvaWQgc3ViMzIoUmVn aXN0ZXIgc3JjLCBSZWdpc3RlciBkZXN0KSBQRVJfU0hBUkVEX0FSQ0g7Ci0gICBpbmxpbmUgdm9p ZCBzdWIzMihJbW0zMiBpbW0sIFJlZ2lzdGVyIGRlc3QpIFBFUl9TSEFSRURfQVJDSDsKLSAKLSAg IGlubGluZSB2b2lkIHN1YlB0cihSZWdpc3RlciBzcmMsIFJlZ2lzdGVyIGRlc3QpIFBFUl9BUkNI OwotICAgaW5saW5lIHZvaWQgc3ViUHRyKFJlZ2lzdGVyIHNyYywgY29uc3QgQWRkcmVzcyYgZGVz dCkKLS0gICAgICBERUZJTkVEX09OKG1pcHNfc2hhcmVkLCBhcm0sIGFybTY0LCB4ODYsIHg2NCk7 Ci0rICAgICAgREVGSU5FRF9PTihtaXBzX3NoYXJlZCwgYXJtLCBhcm02NCwgeDg2LCB4NjQsIHBw YzY0KTsKLSAgIGlubGluZSB2b2lkIHN1YlB0cihJbW0zMiBpbW0sIFJlZ2lzdGVyIGRlc3QpIFBF Ul9BUkNIOwotICAgaW5saW5lIHZvaWQgc3ViUHRyKEltbVdvcmQgaW1tLCBSZWdpc3RlciBkZXN0 KSBERUZJTkVEX09OKHg2NCk7Ci0gICBpbmxpbmUgdm9pZCBzdWJQdHIoY29uc3QgQWRkcmVzcyYg YWRkciwgUmVnaXN0ZXIgZGVzdCkKLS0gICAgICBERUZJTkVEX09OKG1pcHNfc2hhcmVkLCBhcm0s IGFybTY0LCB4ODYsIHg2NCk7Ci0rICAgICAgREVGSU5FRF9PTihtaXBzX3NoYXJlZCwgYXJtLCBh cm02NCwgeDg2LCB4NjQsIHBwYzY0KTsKLSAKLSAgIGlubGluZSB2b2lkIHN1YjY0KFJlZ2lzdGVy NjQgc3JjLCBSZWdpc3RlcjY0IGRlc3QpIFBFUl9BUkNIOwotICAgaW5saW5lIHZvaWQgc3ViNjQo SW1tNjQgaW1tLCBSZWdpc3RlcjY0IGRlc3QpIFBFUl9BUkNIOwotICAgaW5saW5lIHZvaWQgc3Vi NjQoY29uc3QgT3BlcmFuZCYgc3JjLCBSZWdpc3RlcjY0IGRlc3QpCi0tICAgICAgREVGSU5FRF9P Tih4NjQsIG1pcHM2NCk7Ci0rICAgICAgREVGSU5FRF9PTih4NjQsIG1pcHM2NCwgcHBjNjQpOwot IAotICAgaW5saW5lIHZvaWQgc3ViRmxvYXQzMihGbG9hdFJlZ2lzdGVyIHNyYywgRmxvYXRSZWdp c3RlciBkZXN0KSBQRVJfU0hBUkVEX0FSQ0g7Ci0gCi0gICBpbmxpbmUgdm9pZCBzdWJEb3VibGUo RmxvYXRSZWdpc3RlciBzcmMsIEZsb2F0UmVnaXN0ZXIgZGVzdCkgUEVSX1NIQVJFRF9BUkNIOwot IAotICAgaW5saW5lIHZvaWQgbXVsMzIoUmVnaXN0ZXIgcmhzLCBSZWdpc3RlciBzcmNEZXN0KSBQ RVJfU0hBUkVEX0FSQ0g7Ci0gCi0gICBpbmxpbmUgdm9pZCBtdWwzMihSZWdpc3RlciBzcmMxLCBS ZWdpc3RlciBzcmMyLCBSZWdpc3RlciBkZXN0LCBMYWJlbCogb25PdmVyKQotICAgICAgIERFRklO RURfT04oYXJtNjQpOwotIAotICAgaW5saW5lIHZvaWQgbXVsUHRyKFJlZ2lzdGVyIHJocywgUmVn aXN0ZXIgc3JjRGVzdCkgUEVSX0FSQ0g7Ci0gCi0gICBpbmxpbmUgdm9pZCBtdWw2NChjb25zdCBP cGVyYW5kJiBzcmMsIGNvbnN0IFJlZ2lzdGVyNjQmIGRlc3QpIERFRklORURfT04oeDY0KTsKLSAg IGlubGluZSB2b2lkIG11bDY0KGNvbnN0IE9wZXJhbmQmIHNyYywgY29uc3QgUmVnaXN0ZXI2NCYg ZGVzdCwKLS0gICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlZ2lzdGVyIHRlbXApIERFRklORURf T04oeDY0LCBtaXBzNjQpOwotKyAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVnaXN0ZXIgdGVt cCkgREVGSU5FRF9PTih4NjQsIG1pcHM2NCwgcHBjNjQpOwotICAgaW5saW5lIHZvaWQgbXVsNjQo SW1tNjQgaW1tLCBjb25zdCBSZWdpc3RlcjY0JiBkZXN0KSBQRVJfQVJDSDsKLSAgIGlubGluZSB2 b2lkIG11bDY0KEltbTY0IGltbSwgY29uc3QgUmVnaXN0ZXI2NCYgZGVzdCwgY29uc3QgUmVnaXN0 ZXIgdGVtcCkKLS0gICAgICBERUZJTkVEX09OKHg4NiwgeDY0LCBhcm0sIG1pcHMzMiwgbWlwczY0 KTsKLSsgICAgICBERUZJTkVEX09OKHg4NiwgeDY0LCBhcm0sIG1pcHMzMiwgbWlwczY0LCBwcGM2 NCk7Ci0gICBpbmxpbmUgdm9pZCBtdWw2NChjb25zdCBSZWdpc3RlcjY0JiBzcmMsIGNvbnN0IFJl Z2lzdGVyNjQmIGRlc3QsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBSZWdpc3RlciB0ZW1w KSBQRVJfQVJDSDsKLSAgIGlubGluZSB2b2lkIG11bDY0KGNvbnN0IFJlZ2lzdGVyNjQmIHNyYzEs IGNvbnN0IFJlZ2lzdGVyNjQmIHNyYzIsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBSZWdp c3RlcjY0JiBkZXN0KSBERUZJTkVEX09OKGFybTY0KTsKLSAgIGlubGluZSB2b2lkIG11bDY0KElt bTY0IHNyYzEsIGNvbnN0IFJlZ2lzdGVyNjQmIHNyYzIsIGNvbnN0IFJlZ2lzdGVyNjQmIGRlc3Qp Ci0gICAgICAgREVGSU5FRF9PTihhcm02NCk7Ci0gCi0gICBpbmxpbmUgdm9pZCBtdWxCeTMoUmVn aXN0ZXIgc3JjLCBSZWdpc3RlciBkZXN0KSBQRVJfQVJDSDsKLSAKLSAgIGlubGluZSB2b2lkIG11 bEZsb2F0MzIoRmxvYXRSZWdpc3RlciBzcmMsIEZsb2F0UmVnaXN0ZXIgZGVzdCkgUEVSX1NIQVJF RF9BUkNIOwotICAgaW5saW5lIHZvaWQgbXVsRG91YmxlKEZsb2F0UmVnaXN0ZXIgc3JjLCBGbG9h dFJlZ2lzdGVyIGRlc3QpIFBFUl9TSEFSRURfQVJDSDsKLSAKLSAgIGlubGluZSB2b2lkIG11bERv dWJsZVB0cihJbW1QdHIgaW1tLCBSZWdpc3RlciB0ZW1wLCBGbG9hdFJlZ2lzdGVyIGRlc3QpCi0t ICAgICAgREVGSU5FRF9PTihtaXBzX3NoYXJlZCwgYXJtLCBhcm02NCwgeDg2LCB4NjQpOwotKyAg ICAgIERFRklORURfT04obWlwc19zaGFyZWQsIGFybSwgYXJtNjQsIHg4NiwgeDY0LCBwcGM2NCk7 Ci0gCi0gICAvLyBQZXJmb3JtIGFuIGludGVnZXIgZGl2aXNpb24sIHJldHVybmluZyB0aGUgaW50 ZWdlciBwYXJ0IHJvdW5kZWQgdG93YXJkCi0gICAvLyB6ZXJvLiByaHMgbXVzdCBub3QgYmUgemVy bywgYW5kIHRoZSBkaXZpc2lvbiBtdXN0IG5vdCBvdmVyZmxvdy4KLSAgIC8vCi0gICAvLyBPbiB4 ODZfc2hhcmVkLCBzcmNEZXN0IG11c3QgYmUgZWF4IGFuZCBlZHggd2lsbCBiZSBjbG9iYmVyZWQu Ci0gICAvLyBPbiBBUk0sIHRoZSBjaGlwIG11c3QgaGF2ZSBoYXJkd2FyZSBkaXZpc2lvbiBpbnN0 cnVjdGlvbnMuCi0gICBpbmxpbmUgdm9pZCBxdW90aWVudDMyKFJlZ2lzdGVyIHJocywgUmVnaXN0 ZXIgc3JjRGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1Vuc2lnbmVkKSBQ RVJfU0hBUkVEX0FSQ0g7Ci1AQCAtMTExNyw0MSArMTEyNCw0MSBAQCBjbGFzcyBNYWNyb0Fzc2Vt YmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlclNwZWNpZmljIHsKLSAgIC8vIHplcm8uIHJocyBt dXN0IG5vdCBiZSB6ZXJvLCBhbmQgdGhlIGRpdmlzaW9uIG11c3Qgbm90IG92ZXJmbG93LgotICAg Ly8KLSAgIC8vIFRoaXMgdmFyaWFudCBwcmVzZXJ2ZXMgcmVnaXN0ZXJzLCBhbmQgZG9lc24ndCBy ZXF1aXJlIGhhcmR3YXJlIGRpdmlzaW9uCi0gICAvLyBpbnN0cnVjdGlvbnMgb24gQVJNICh3aWxs IGNhbGwgb3V0IHRvIGEgcnVudGltZSByb3V0aW5lKS4KLSAgIC8vCi0gICAvLyByaHMgaXMgcHJl c2VydmVkLCBzcmREZXN0IGlzIGNsb2JiZXJlZC4KLSAgIHZvaWQgZmxleGlibGVSZW1haW5kZXIz MihSZWdpc3RlciByaHMsIFJlZ2lzdGVyIHNyY0Rlc3QsIGJvb2wgaXNVbnNpZ25lZCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMaXZlUmVnaXN0ZXJTZXQmIHZvbGF0aWxlTGl2 ZVJlZ3MpCi0tICAgICAgREVGSU5FRF9PTihtaXBzX3NoYXJlZCwgYXJtLCBhcm02NCwgeDg2X3No YXJlZCk7Ci0rICAgICAgREVGSU5FRF9PTihtaXBzX3NoYXJlZCwgYXJtLCBhcm02NCwgeDg2X3No YXJlZCwgcHBjNjQpOwotIAotICAgLy8gUGVyZm9ybSBhbiBpbnRlZ2VyIGRpdmlzaW9uLCByZXR1 cm5pbmcgdGhlIGludGVnZXIgcGFydCByb3VuZGVkIHRvd2FyZAotICAgLy8gemVyby4gcmhzIG11 c3Qgbm90IGJlIHplcm8sIGFuZCB0aGUgZGl2aXNpb24gbXVzdCBub3Qgb3ZlcmZsb3cuCi0gICAv LwotICAgLy8gVGhpcyB2YXJpYW50IHByZXNlcnZlcyByZWdpc3RlcnMsIGFuZCBkb2Vzbid0IHJl cXVpcmUgaGFyZHdhcmUgZGl2aXNpb24KLSAgIC8vIGluc3RydWN0aW9ucyBvbiBBUk0gKHdpbGwg Y2FsbCBvdXQgdG8gYSBydW50aW1lIHJvdXRpbmUpLgotICAgLy8KLSAgIC8vIHJocyBpcyBwcmVz ZXJ2ZWQsIHNyZERlc3QgaXMgY2xvYmJlcmVkLgotICAgdm9pZCBmbGV4aWJsZVF1b3RpZW50MzIo UmVnaXN0ZXIgcmhzLCBSZWdpc3RlciBzcmNEZXN0LCBib29sIGlzVW5zaWduZWQsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBMaXZlUmVnaXN0ZXJTZXQmIHZvbGF0aWxlTGl2ZVJl Z3MpCi0tICAgICAgREVGSU5FRF9PTihtaXBzX3NoYXJlZCwgYXJtLCBhcm02NCwgeDg2X3NoYXJl ZCk7Ci0rICAgICAgREVGSU5FRF9PTihtaXBzX3NoYXJlZCwgYXJtLCBhcm02NCwgeDg2X3NoYXJl ZCwgcHBjNjQpOwotIAotICAgLy8gUGVyZm9ybSBhbiBpbnRlZ2VyIGRpdmlzaW9uLCByZXR1cm5p bmcgdGhlIGludGVnZXIgcGFydCByb3VuZGVkIHRvd2FyZAotICAgLy8gemVyby4gcmhzIG11c3Qg bm90IGJlIHplcm8sIGFuZCB0aGUgZGl2aXNpb24gbXVzdCBub3Qgb3ZlcmZsb3cuIFRoZQotICAg Ly8gcmVtYWluZGVyIGlzIHN0b3JlZCBpbnRvIHRoZSB0aGlyZCBhcmd1bWVudCByZWdpc3RlciBo ZXJlLgotICAgLy8KLSAgIC8vIFRoaXMgdmFyaWFudCBwcmVzZXJ2ZXMgcmVnaXN0ZXJzLCBhbmQg ZG9lc24ndCByZXF1aXJlIGhhcmR3YXJlIGRpdmlzaW9uCi0gICAvLyBpbnN0cnVjdGlvbnMgb24g QVJNICh3aWxsIGNhbGwgb3V0IHRvIGEgcnVudGltZSByb3V0aW5lKS4KLSAgIC8vCi0gICAvLyBy aHMgaXMgcHJlc2VydmVkLCBzcmREZXN0IGFuZCByZW1PdXRwdXQgYXJlIGNsb2JiZXJlZC4KLSAg IHZvaWQgZmxleGlibGVEaXZNb2QzMihSZWdpc3RlciByaHMsIFJlZ2lzdGVyIHNyY0Rlc3QsIFJl Z2lzdGVyIHJlbU91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzVW5zaWdu ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGl2ZVJlZ2lzdGVyU2V0JiB2b2xh dGlsZUxpdmVSZWdzKQotLSAgICAgIERFRklORURfT04obWlwc19zaGFyZWQsIGFybSwgYXJtNjQs IHg4Nl9zaGFyZWQpOwotKyAgICAgIERFRklORURfT04obWlwc19zaGFyZWQsIGFybSwgYXJtNjQs IHg4Nl9zaGFyZWQsIHBwYzY0KTsKLSAKLSAgIGlubGluZSB2b2lkIGRpdkZsb2F0MzIoRmxvYXRS ZWdpc3RlciBzcmMsIEZsb2F0UmVnaXN0ZXIgZGVzdCkgUEVSX1NIQVJFRF9BUkNIOwotICAgaW5s aW5lIHZvaWQgZGl2RG91YmxlKEZsb2F0UmVnaXN0ZXIgc3JjLCBGbG9hdFJlZ2lzdGVyIGRlc3Qp IFBFUl9TSEFSRURfQVJDSDsKLSAKLSAgIGlubGluZSB2b2lkIGluYzY0KEFic29sdXRlQWRkcmVz cyBkZXN0KSBQRVJfQVJDSDsKLSAKLSAgIGlubGluZSB2b2lkIG5lZzMyKFJlZ2lzdGVyIHJlZykg UEVSX1NIQVJFRF9BUkNIOwotICAgaW5saW5lIHZvaWQgbmVnNjQoUmVnaXN0ZXI2NCByZWcpIFBF Ul9BUkNIOwotQEAgLTEzNDIsMTcgKzEzNDksMTcgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXIgOiBw dWJsaWMgTWFjcm9Bc3NlbWJsZXJTcGVjaWZpYyB7Ci0gICAvLyB0ZW1wIG1heSBiZSBpbnZhbGlk IG9ubHkgaWYgdGhlIGNoaXAgaGFzIHRoZSBQT1BDTlQgaW5zdHJ1Y3Rpb24uCi0gICBpbmxpbmUg dm9pZCBwb3BjbnQ2NChSZWdpc3RlcjY0IHNyYywgUmVnaXN0ZXI2NCBkZXN0LCBSZWdpc3RlciB0 ZW1wKSBQRVJfQVJDSDsKLSAKLSAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgLy8gQ29uZGl0aW9uIGZ1bmN0aW9u cwotIAotICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgIGlubGluZSB2 b2lkIGNtcDMyU2V0KENvbmRpdGlvbiBjb25kLCBUMSBsaHMsIFQyIHJocywgUmVnaXN0ZXIgZGVz dCkKLS0gICAgICBERUZJTkVEX09OKHg4Nl9zaGFyZWQsIGFybSwgYXJtNjQsIG1pcHMzMiwgbWlw czY0KTsKLSsgICAgICBERUZJTkVEX09OKHg4Nl9zaGFyZWQsIGFybSwgYXJtNjQsIG1pcHMzMiwg bWlwczY0LCBwcGM2NCk7Ci0gCi0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy PgotICAgaW5saW5lIHZvaWQgY21wUHRyU2V0KENvbmRpdGlvbiBjb25kLCBUMSBsaHMsIFQyIHJo cywgUmVnaXN0ZXIgZGVzdCkgUEVSX0FSQ0g7Ci0gCi0gICAvLyA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgIC8vIEJyYW5j aCBmdW5jdGlvbnMKLSAKLSAgIHRlbXBsYXRlIDxjbGFzcyBMPgotQEAgLTEzNjcsMzQgKzEzNzQs MzQgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJTcGVjaWZp YyB7Ci0gCi0gICBpbmxpbmUgdm9pZCBicmFuY2gzMihDb25kaXRpb24gY29uZCwgY29uc3QgQWRk cmVzcyYgbGhzLCBSZWdpc3RlciByaHMsCi0gICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCog bGFiZWwpIFBFUl9TSEFSRURfQVJDSDsKLSAgIGlubGluZSB2b2lkIGJyYW5jaDMyKENvbmRpdGlv biBjb25kLCBjb25zdCBBZGRyZXNzJiBsaHMsIEltbTMyIHJocywKLSAgICAgICAgICAgICAgICAg ICAgICAgIExhYmVsKiBsYWJlbCkgUEVSX1NIQVJFRF9BUkNIOwotIAotICAgaW5saW5lIHZvaWQg YnJhbmNoMzIoQ29uZGl0aW9uIGNvbmQsIGNvbnN0IEFic29sdXRlQWRkcmVzcyYgbGhzLCBSZWdp c3RlciByaHMsCi0gICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogbGFiZWwpCi0tICAgICAg REVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCwgeDg2LCB4NjQpOwotKyAgICAgIERF RklORURfT04oYXJtLCBhcm02NCwgbWlwc19zaGFyZWQsIHg4NiwgeDY0LCBwcGM2NCk7Ci0gICBp bmxpbmUgdm9pZCBicmFuY2gzMihDb25kaXRpb24gY29uZCwgY29uc3QgQWJzb2x1dGVBZGRyZXNz JiBsaHMsIEltbTMyIHJocywKLSAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBsYWJlbCkK LS0gICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHNfc2hhcmVkLCB4ODYsIHg2NCk7Ci0r ICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCwgeDg2LCB4NjQsIHBwYzY0 KTsKLSAKLSAgIGlubGluZSB2b2lkIGJyYW5jaDMyKENvbmRpdGlvbiBjb25kLCBjb25zdCBCYXNl SW5kZXgmIGxocywgUmVnaXN0ZXIgcmhzLAotICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwq IGxhYmVsKSBERUZJTkVEX09OKGFybSwgeDg2X3NoYXJlZCk7Ci0gICBpbmxpbmUgdm9pZCBicmFu Y2gzMihDb25kaXRpb24gY29uZCwgY29uc3QgQmFzZUluZGV4JiBsaHMsIEltbTMyIHJocywKLSAg ICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBsYWJlbCkgUEVSX1NIQVJFRF9BUkNIOwotIAot ICAgaW5saW5lIHZvaWQgYnJhbmNoMzIoQ29uZGl0aW9uIGNvbmQsIGNvbnN0IE9wZXJhbmQmIGxo cywgUmVnaXN0ZXIgcmhzLAotICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKSBE RUZJTkVEX09OKHg4Nl9zaGFyZWQpOwotICAgaW5saW5lIHZvaWQgYnJhbmNoMzIoQ29uZGl0aW9u IGNvbmQsIGNvbnN0IE9wZXJhbmQmIGxocywgSW1tMzIgcmhzLAotICAgICAgICAgICAgICAgICAg ICAgICAgTGFiZWwqIGxhYmVsKSBERUZJTkVEX09OKHg4Nl9zaGFyZWQpOwotIAotICAgaW5saW5l IHZvaWQgYnJhbmNoMzIoQ29uZGl0aW9uIGNvbmQsIHdhc206OlN5bWJvbGljQWRkcmVzcyBsaHMs IEltbTMyIHJocywKLSAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBsYWJlbCkKLS0gICAg ICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHNfc2hhcmVkLCB4ODYsIHg2NCk7Ci0rICAgICAg REVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCwgeDg2LCB4NjQsIHBwYzY0KTsKLSAK LSAgIC8vIFRoZSBzdXBwb3J0ZWQgY29uZGl0aW9uIGFyZSBFcXVhbCwgTm90RXF1YWwsIExlc3NU aGFuKG9yRXF1YWwpLAotICAgLy8gR3JlYXRlclRoYW4ob3JFcXVhbCksIEJlbG93KG9yRXF1YWwp IGFuZCBBYm92ZShvckVxdWFsKS4gV2hlbiBhIGZhaWwgbGFiZWwKLSAgIC8vIGlzIG5vdCBkZWZp bmVkIGl0IHdpbGwgZmFsbCB0aHJvdWdoIHRvIG5leHQgaW5zdHJ1Y3Rpb24sIGVsc2UganVtcCB0 byB0aGUKLSAgIC8vIGZhaWwgbGFiZWwuCi0gICBpbmxpbmUgdm9pZCBicmFuY2g2NChDb25kaXRp b24gY29uZCwgUmVnaXN0ZXI2NCBsaHMsIEltbTY0IHZhbCwKLSAgICAgICAgICAgICAgICAgICAg ICAgIExhYmVsKiBzdWNjZXNzLCBMYWJlbCogZmFpbCA9IG51bGxwdHIpIFBFUl9BUkNIOwotICAg aW5saW5lIHZvaWQgYnJhbmNoNjQoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVyNjQgbGhzLCBSZWdp c3RlcjY0IHJocywKLUBAIC0xNDMzLDMyICsxNDQwLDMyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVy IDogcHVibGljIE1hY3JvQXNzZW1ibGVyU3BlY2lmaWMgewotIAotICAgaW5saW5lIHZvaWQgYnJh bmNoUHRyKENvbmRpdGlvbiBjb25kLCBjb25zdCBCYXNlSW5kZXgmIGxocywgSW1tV29yZCByaHMs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKSBQRVJfU0hBUkVEX0FSQ0g7 Ci0gICBpbmxpbmUgdm9pZCBicmFuY2hQdHIoQ29uZGl0aW9uIGNvbmQsIGNvbnN0IEJhc2VJbmRl eCYgbGhzLCBSZWdpc3RlciByaHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxh YmVsKSBQRVJfU0hBUkVEX0FSQ0g7Ci0gCi0gICBpbmxpbmUgdm9pZCBicmFuY2hQdHIoQ29uZGl0 aW9uIGNvbmQsIGNvbnN0IEFic29sdXRlQWRkcmVzcyYgbGhzLAotICAgICAgICAgICAgICAgICAg ICAgICAgIFJlZ2lzdGVyIHJocywgTGFiZWwqIGxhYmVsKQotLSAgICAgIERFRklORURfT04oYXJt LCBhcm02NCwgbWlwc19zaGFyZWQsIHg4NiwgeDY0KTsKLSsgICAgICBERUZJTkVEX09OKGFybSwg YXJtNjQsIG1pcHNfc2hhcmVkLCB4ODYsIHg2NCwgcHBjNjQpOwotICAgaW5saW5lIHZvaWQgYnJh bmNoUHRyKENvbmRpdGlvbiBjb25kLCBjb25zdCBBYnNvbHV0ZUFkZHJlc3MmIGxocywgSW1tV29y ZCByaHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKQotLSAgICAgIERF RklORURfT04oYXJtLCBhcm02NCwgbWlwc19zaGFyZWQsIHg4NiwgeDY0KTsKLSsgICAgICBERUZJ TkVEX09OKGFybSwgYXJtNjQsIG1pcHNfc2hhcmVkLCB4ODYsIHg2NCwgcHBjNjQpOwotIAotICAg aW5saW5lIHZvaWQgYnJhbmNoUHRyKENvbmRpdGlvbiBjb25kLCB3YXNtOjpTeW1ib2xpY0FkZHJl c3MgbGhzLCBSZWdpc3RlciByaHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxh YmVsKQotLSAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwc19zaGFyZWQsIHg4NiwgeDY0 KTsKLSsgICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHNfc2hhcmVkLCB4ODYsIHg2NCwg cHBjNjQpOwotIAotICAgLy8gR2l2ZW4gYSBwb2ludGVyIHRvIGEgR0MgQ2VsbCwgcmV0cmlldmUg dGhlIFN0b3JlQnVmZmVyIHBvaW50ZXIgZnJvbSBpdHMKLSAgIC8vIGNodW5rIGhlYWRlciwgb3Ig bnVsbHB0ciBpZiBpdCBpcyBpbiB0aGUgdGVudXJlZCBoZWFwLgotICAgdm9pZCBsb2FkU3RvcmVC dWZmZXIoUmVnaXN0ZXIgcHRyLCBSZWdpc3RlciBidWZmZXIpIFBFUl9BUkNIOwotIAotICAgdm9p ZCBicmFuY2hQdHJJbk51cnNlcnlDaHVuayhDb25kaXRpb24gY29uZCwgUmVnaXN0ZXIgcHRyLCBS ZWdpc3RlciB0ZW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogbGFi ZWwpCi0tICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCwgeDg2LCB4NjQp OwotKyAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwc19zaGFyZWQsIHg4NiwgeDY0LCBw cGM2NCk7Ci0gICB2b2lkIGJyYW5jaFB0ckluTnVyc2VyeUNodW5rKENvbmRpdGlvbiBjb25kLCBj b25zdCBBZGRyZXNzJiBhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS ZWdpc3RlciB0ZW1wLCBMYWJlbCogbGFiZWwpIERFRklORURfT04oeDg2KTsKLSAgIHZvaWQgYnJh bmNoVmFsdWVJc051cnNlcnlDZWxsKENvbmRpdGlvbiBjb25kLCBjb25zdCBBZGRyZXNzJiBhZGRy ZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgdGVtcCwgTGFi ZWwqIGxhYmVsKSBQRVJfQVJDSDsKLSAgIHZvaWQgYnJhbmNoVmFsdWVJc051cnNlcnlDZWxsKENv bmRpdGlvbiBjb25kLCBWYWx1ZU9wZXJhbmQgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBSZWdpc3RlciB0ZW1wLCBMYWJlbCogbGFiZWwpIFBFUl9BUkNIOwotIAotICAg Ly8gVGhpcyBmdW5jdGlvbiBjb21wYXJlcyBhIFZhbHVlIChsaHMpIHdoaWNoIGlzIGhhdmluZyBh IHByaXZhdGUgcG9pbnRlcgotQEAgLTE0NzAsMzYgKzE0NzcsMzYgQEAgY2xhc3MgTWFjcm9Bc3Nl bWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJTcGVjaWZpYyB7Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICBGbG9hdFJlZ2lzdGVyIHJocywgTGFiZWwqIGxhYmVsKSBQRVJfU0hBUkVEX0FS Q0g7Ci0gCi0gICAvLyBUcnVuY2F0ZSBhIGRvdWJsZS9mbG9hdDMyIHRvIGludDMyIGFuZCB3aGVu IGl0IGRvZXNuJ3QgZml0IGFuIGludDMyIGl0IHdpbGwKLSAgIC8vIGp1bXAgdG8gdGhlIGZhaWx1 cmUgbGFiZWwuIFRoaXMgcGFydGljdWxhciB2YXJpYW50IGlzIGFsbG93ZWQgdG8gcmV0dXJuIHRo ZQotICAgLy8gdmFsdWUgbW9kdWxlIDIqKjMyLCB3aGljaCBpc24ndCBpbXBsZW1lbnRlZCBvbiBh bGwgYXJjaGl0ZWN0dXJlcy4gRS5nLiB0aGUKLSAgIC8vIHg2NCB2YXJpYW50cyB3aWxsIGRvIHRo aXMgb25seSBpbiB0aGUgaW50NjRfdCByYW5nZS4KLSAgIGlubGluZSB2b2lkIGJyYW5jaFRydW5j YXRlRmxvYXQzMk1heWJlTW9kVWludDMyKEZsb2F0UmVnaXN0ZXIgc3JjLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgZGVzdCwgTGFi ZWwqIGZhaWwpCi0tICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCwgeDg2 LCB4NjQpOwotKyAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwc19zaGFyZWQsIHg4Niwg eDY0LCBwcGM2NCk7Ci0gICBpbmxpbmUgdm9pZCBicmFuY2hUcnVuY2F0ZURvdWJsZU1heWJlTW9k VWludDMyKEZsb2F0UmVnaXN0ZXIgc3JjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciBkZXN0LCBMYWJlbCogZmFpbCkKLS0gICAgICBE RUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHNfc2hhcmVkLCB4ODYsIHg2NCk7Ci0rICAgICAgREVG SU5FRF9PTihhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCwgeDg2LCB4NjQsIHBwYzY0KTsKLSAKLSAg IC8vIFRydW5jYXRlIGEgZG91YmxlL2Zsb2F0MzIgdG8gaW50cHRyIGFuZCB3aGVuIGl0IGRvZXNu J3QgZml0IGp1bXAgdG8gdGhlCi0gICAvLyBmYWlsdXJlIGxhYmVsLgotICAgaW5saW5lIHZvaWQg YnJhbmNoVHJ1bmNhdGVGbG9hdDMyVG9QdHIoRmxvYXRSZWdpc3RlciBzcmMsIFJlZ2lzdGVyIGRl c3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogZmFp bCkgREVGSU5FRF9PTih4ODYsIHg2NCk7Ci0gICBpbmxpbmUgdm9pZCBicmFuY2hUcnVuY2F0ZURv dWJsZVRvUHRyKEZsb2F0UmVnaXN0ZXIgc3JjLCBSZWdpc3RlciBkZXN0LAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogZmFpbCkgREVGSU5FRF9PTih4ODYs IHg2NCk7Ci0gCi0gICAvLyBUcnVuY2F0ZSBhIGRvdWJsZS9mbG9hdDMyIHRvIGludDMyIGFuZCB3 aGVuIGl0IGRvZXNuJ3QgZml0IGp1bXAgdG8gdGhlCi0gICAvLyBmYWlsdXJlIGxhYmVsLgotICAg aW5saW5lIHZvaWQgYnJhbmNoVHJ1bmNhdGVGbG9hdDMyVG9JbnQzMihGbG9hdFJlZ2lzdGVyIHNy YywgUmVnaXN0ZXIgZGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGFiZWwqIGZhaWwpCi0tICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzX3No YXJlZCwgeDg2LCB4NjQpOwotKyAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwc19zaGFy ZWQsIHg4NiwgeDY0LCBwcGM2NCk7Ci0gICBpbmxpbmUgdm9pZCBicmFuY2hUcnVuY2F0ZURvdWJs ZVRvSW50MzIoRmxvYXRSZWdpc3RlciBzcmMsIFJlZ2lzdGVyIGRlc3QsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGZhaWwpCi0tICAgICAgREVGSU5F RF9PTihhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCwgeDg2LCB4NjQpOwotKyAgICAgIERFRklORURf T04oYXJtLCBhcm02NCwgbWlwc19zaGFyZWQsIHg4NiwgeDY0LCBwcGM2NCk7Ci0gCi0gICBpbmxp bmUgdm9pZCBicmFuY2hEb3VibGUoRG91YmxlQ29uZGl0aW9uIGNvbmQsIEZsb2F0UmVnaXN0ZXIg bGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0UmVnaXN0ZXIgcmhzLCBMYWJl bCogbGFiZWwpIFBFUl9TSEFSRURfQVJDSDsKLSAKLSAgIGlubGluZSB2b2lkIGJyYW5jaERvdWJs ZU5vdEluSW50NjRSYW5nZShBZGRyZXNzIHNyYywgUmVnaXN0ZXIgdGVtcCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogZmFpbCk7Ci0gICBpbmxpbmUg dm9pZCBicmFuY2hEb3VibGVOb3RJblVJbnQ2NFJhbmdlKEFkZHJlc3Mgc3JjLCBSZWdpc3RlciB0 ZW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCog ZmFpbCk7Ci1AQCAtMTU0MywxNyArMTU1MCwxNyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlciA6IHB1 YmxpYyBNYWNyb0Fzc2VtYmxlclNwZWNpZmljIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMIGxhYmVsKSBQRVJfU0hBUkVEX0FSQ0g7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgTD4KLSAgIGlu bGluZSB2b2lkIGJyYW5jaFRlc3QzMihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXIgbGhzLCBJbW0z MiByaHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTCBsYWJlbCkgUEVSX1NIQVJFRF9B UkNIOwotICAgaW5saW5lIHZvaWQgYnJhbmNoVGVzdDMyKENvbmRpdGlvbiBjb25kLCBjb25zdCBB ZGRyZXNzJiBsaHMsIEltbTMyIHJoaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJl bCogbGFiZWwpIFBFUl9TSEFSRURfQVJDSDsKLSAgIGlubGluZSB2b2lkIGJyYW5jaFRlc3QzMihD b25kaXRpb24gY29uZCwgY29uc3QgQWJzb2x1dGVBZGRyZXNzJiBsaHMsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgSW1tMzIgcmhzLCBMYWJlbCogbGFiZWwpCi0tICAgICAgREVGSU5FRF9P Tihhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCwgeDg2LCB4NjQpOwotKyAgICAgIERFRklORURfT04o YXJtLCBhcm02NCwgbWlwc19zaGFyZWQsIHg4NiwgeDY0LCBwcGM2NCk7Ci0gCi0gICB0ZW1wbGF0 ZSA8Y2xhc3MgTD4KLSAgIGlubGluZSB2b2lkIGJyYW5jaFRlc3RQdHIoQ29uZGl0aW9uIGNvbmQs IFJlZ2lzdGVyIGxocywgUmVnaXN0ZXIgcmhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMIGxhYmVsKSBQRVJfU0hBUkVEX0FSQ0g7Ci0gICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0UHRy KENvbmRpdGlvbiBjb25kLCBSZWdpc3RlciBsaHMsIEltbTMyIHJocywKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKSBQRVJfU0hBUkVEX0FSQ0g7Ci0gICBpbmxpbmUg dm9pZCBicmFuY2hUZXN0UHRyKENvbmRpdGlvbiBjb25kLCBjb25zdCBBZGRyZXNzJiBsaHMsIElt bTMyIHJocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKSBQRVJf U0hBUkVEX0FSQ0g7Ci1AQCAtMTY4OSwxNyArMTY5NiwxNyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxl ciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlclNwZWNpZmljIHsKLSAKLSAgIC8vIFBlcmZvcm0gYSB0 eXBlLXRlc3Qgb24gYSB0YWcgb2YgYSBWYWx1ZSAoMzJiaXRzIGJveGluZyksIG9yIHRoZSB0YWdn ZWQKLSAgIC8vIHZhbHVlICg2NGJpdHMgYm94aW5nKS4KLSAgIGlubGluZSB2b2lkIGJyYW5jaFRl c3RVbmRlZmluZWQoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVyIHRhZywKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKSBQRVJfU0hBUkVEX0FSQ0g7Ci0gICBp bmxpbmUgdm9pZCBicmFuY2hUZXN0SW50MzIoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVyIHRhZywK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogbGFiZWwpIFBFUl9TSEFSRURf QVJDSDsKLSAgIGlubGluZSB2b2lkIGJyYW5jaFRlc3REb3VibGUoQ29uZGl0aW9uIGNvbmQsIFJl Z2lzdGVyIHRhZywgTGFiZWwqIGxhYmVsKQotLSAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwg bWlwczMyLCBtaXBzNjQsIHg4Nl9zaGFyZWQpOwotKyAgICAgIERFRklORURfT04oYXJtLCBhcm02 NCwgbWlwczMyLCBtaXBzNjQsIHg4Nl9zaGFyZWQsIHBwYzY0KTsKLSAgIGlubGluZSB2b2lkIGJy YW5jaFRlc3ROdW1iZXIoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVyIHRhZywKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKSBQRVJfU0hBUkVEX0FSQ0g7Ci0gICBp bmxpbmUgdm9pZCBicmFuY2hUZXN0Qm9vbGVhbihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXIgdGFn LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKSBQRVJfU0hB UkVEX0FSQ0g7Ci0gICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0U3RyaW5nKENvbmRpdGlvbiBjb25k LCBSZWdpc3RlciB0YWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBs YWJlbCkgUEVSX1NIQVJFRF9BUkNIOwotICAgaW5saW5lIHZvaWQgYnJhbmNoVGVzdFN5bWJvbChD b25kaXRpb24gY29uZCwgUmVnaXN0ZXIgdGFnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMYWJlbCogbGFiZWwpIFBFUl9TSEFSRURfQVJDSDsKLUBAIC0xNzIxLDEwNiArMTcyOCwx MDYgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJTcGVjaWZp YyB7Ci0gICAvLyBCYXNlSW5kZXggYW5kIFZhbHVlT3BlcmFuZCB2YXJpYW50cyBjbG9iYmVyIHRo ZSBTY3JhdGNoUmVnIG9uIHg2NC4KLSAgIC8vIEFsbCBWYXJpYW50cyBjbG9iYmVyIHRoZSBTY3Jh dGNoUmVnIG9uIGFybTY0LgotICAgaW5saW5lIHZvaWQgYnJhbmNoVGVzdFVuZGVmaW5lZChDb25k aXRpb24gY29uZCwgY29uc3QgQWRkcmVzcyYgYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKSBQRVJfU0hBUkVEX0FSQ0g7Ci0gICBpbmxpbmUg dm9pZCBicmFuY2hUZXN0VW5kZWZpbmVkKENvbmRpdGlvbiBjb25kLCBjb25zdCBCYXNlSW5kZXgm IGFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBsYWJl bCkgUEVSX1NIQVJFRF9BUkNIOwotICAgaW5saW5lIHZvaWQgYnJhbmNoVGVzdFVuZGVmaW5lZChD b25kaXRpb24gY29uZCwgY29uc3QgVmFsdWVPcGVyYW5kJiB2YWx1ZSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKQotLSAgICAgIERFRklORURfT04oYXJt LCBhcm02NCwgbWlwczMyLCBtaXBzNjQsIHg4Nl9zaGFyZWQpOwotKyAgICAgIERFRklORURfT04o YXJtLCBhcm02NCwgbWlwczMyLCBtaXBzNjQsIHg4Nl9zaGFyZWQsIHBwYzY0KTsKLSAKLSAgIGlu bGluZSB2b2lkIGJyYW5jaFRlc3RJbnQzMihDb25kaXRpb24gY29uZCwgY29uc3QgQWRkcmVzcyYg YWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogbGFiZWwpIFBF Ul9TSEFSRURfQVJDSDsKLSAgIGlubGluZSB2b2lkIGJyYW5jaFRlc3RJbnQzMihDb25kaXRpb24g Y29uZCwgY29uc3QgQmFzZUluZGV4JiBhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExhYmVsKiBsYWJlbCkgUEVSX1NIQVJFRF9BUkNIOwotICAgaW5saW5lIHZvaWQgYnJh bmNoVGVzdEludDMyKENvbmRpdGlvbiBjb25kLCBjb25zdCBWYWx1ZU9wZXJhbmQmIHZhbHVlLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBsYWJlbCkKLS0gICAgICBERUZJ TkVEX09OKGFybSwgYXJtNjQsIG1pcHMzMiwgbWlwczY0LCB4ODZfc2hhcmVkKTsKLSsgICAgICBE RUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHMzMiwgbWlwczY0LCB4ODZfc2hhcmVkLCBwcGM2NCk7 Ci0gCi0gICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0RG91YmxlKENvbmRpdGlvbiBjb25kLCBjb25z dCBBZGRyZXNzJiBhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJl bCogbGFiZWwpIFBFUl9TSEFSRURfQVJDSDsKLSAgIGlubGluZSB2b2lkIGJyYW5jaFRlc3REb3Vi bGUoQ29uZGl0aW9uIGNvbmQsIGNvbnN0IEJhc2VJbmRleCYgYWRkcmVzcywKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKSBQRVJfU0hBUkVEX0FSQ0g7Ci0gICBp bmxpbmUgdm9pZCBicmFuY2hUZXN0RG91YmxlKENvbmRpdGlvbiBjb25kLCBjb25zdCBWYWx1ZU9w ZXJhbmQmIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogbGFi ZWwpCi0tICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzMzIsIG1pcHM2NCwgeDg2X3No YXJlZCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzMzIsIG1pcHM2NCwgeDg2 X3NoYXJlZCwgcHBjNjQpOwotIAotICAgaW5saW5lIHZvaWQgYnJhbmNoVGVzdE51bWJlcihDb25k aXRpb24gY29uZCwgY29uc3QgVmFsdWVPcGVyYW5kJiB2YWx1ZSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKQotLSAgICAgIERFRklORURfT04oYXJtLCBhcm02 NCwgbWlwczMyLCBtaXBzNjQsIHg4Nl9zaGFyZWQpOwotKyAgICAgIERFRklORURfT04oYXJtLCBh cm02NCwgbWlwczMyLCBtaXBzNjQsIHg4Nl9zaGFyZWQsIHBwYzY0KTsKLSAKLSAgIGlubGluZSB2 b2lkIGJyYW5jaFRlc3RCb29sZWFuKENvbmRpdGlvbiBjb25kLCBjb25zdCBBZGRyZXNzJiBhZGRy ZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKSBQRVJf U0hBUkVEX0FSQ0g7Ci0gICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0Qm9vbGVhbihDb25kaXRpb24g Y29uZCwgY29uc3QgQmFzZUluZGV4JiBhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTGFiZWwqIGxhYmVsKSBQRVJfU0hBUkVEX0FSQ0g7Ci0gICBpbmxpbmUgdm9pZCBi cmFuY2hUZXN0Qm9vbGVhbihDb25kaXRpb24gY29uZCwgY29uc3QgVmFsdWVPcGVyYW5kJiB2YWx1 ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBsYWJlbCkKLS0gICAg ICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHMzMiwgbWlwczY0LCB4ODZfc2hhcmVkKTsKLSsg ICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHMzMiwgbWlwczY0LCB4ODZfc2hhcmVkLCBw cGM2NCk7Ci0gCi0gICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0U3RyaW5nKENvbmRpdGlvbiBjb25k LCBjb25zdCBBZGRyZXNzJiBhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMYWJlbCogbGFiZWwpIFBFUl9TSEFSRURfQVJDSDsKLSAgIGlubGluZSB2b2lkIGJyYW5jaFRl c3RTdHJpbmcoQ29uZGl0aW9uIGNvbmQsIGNvbnN0IEJhc2VJbmRleCYgYWRkcmVzcywKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKSBQRVJfU0hBUkVEX0FSQ0g7 Ci0gICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0U3RyaW5nKENvbmRpdGlvbiBjb25kLCBjb25zdCBW YWx1ZU9wZXJhbmQmIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJl bCogbGFiZWwpCi0tICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzMzIsIG1pcHM2NCwg eDg2X3NoYXJlZCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzMzIsIG1pcHM2 NCwgeDg2X3NoYXJlZCwgcHBjNjQpOwotIAotICAgaW5saW5lIHZvaWQgYnJhbmNoVGVzdFN5bWJv bChDb25kaXRpb24gY29uZCwgY29uc3QgQWRkcmVzcyYgYWRkcmVzcywKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKSBQRVJfU0hBUkVEX0FSQ0g7Ci0gICBpbmxp bmUgdm9pZCBicmFuY2hUZXN0U3ltYm9sKENvbmRpdGlvbiBjb25kLCBjb25zdCBCYXNlSW5kZXgm IGFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBsYWJlbCkg UEVSX1NIQVJFRF9BUkNIOwotICAgaW5saW5lIHZvaWQgYnJhbmNoVGVzdFN5bWJvbChDb25kaXRp b24gY29uZCwgY29uc3QgVmFsdWVPcGVyYW5kJiB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGFiZWwqIGxhYmVsKQotLSAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwg bWlwczMyLCBtaXBzNjQsIHg4Nl9zaGFyZWQpOwotKyAgICAgIERFRklORURfT04oYXJtLCBhcm02 NCwgbWlwczMyLCBtaXBzNjQsIHg4Nl9zaGFyZWQsIHBwYzY0KTsKLSAKLSAgIGlubGluZSB2b2lk IGJyYW5jaFRlc3RCaWdJbnQoQ29uZGl0aW9uIGNvbmQsIGNvbnN0IEFkZHJlc3MmIGFkZHJlc3Ms Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBsYWJlbCkgUEVSX1NIQVJF RF9BUkNIOwotICAgaW5saW5lIHZvaWQgYnJhbmNoVGVzdEJpZ0ludChDb25kaXRpb24gY29uZCwg Y29uc3QgQmFzZUluZGV4JiBhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMYWJlbCogbGFiZWwpIFBFUl9TSEFSRURfQVJDSDsKLSAgIGlubGluZSB2b2lkIGJyYW5jaFRl c3RCaWdJbnQoQ29uZGl0aW9uIGNvbmQsIGNvbnN0IFZhbHVlT3BlcmFuZCYgdmFsdWUsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBsYWJlbCkKLS0gICAgICBERUZJTkVE X09OKGFybSwgYXJtNjQsIG1pcHMzMiwgbWlwczY0LCB4ODZfc2hhcmVkKTsKLSsgICAgICBERUZJ TkVEX09OKGFybSwgYXJtNjQsIG1pcHMzMiwgbWlwczY0LCB4ODZfc2hhcmVkLCBwcGM2NCk7Ci0g Ci0gICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0TnVsbChDb25kaXRpb24gY29uZCwgY29uc3QgQWRk cmVzcyYgYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBsYWJl bCkgUEVSX1NIQVJFRF9BUkNIOwotICAgaW5saW5lIHZvaWQgYnJhbmNoVGVzdE51bGwoQ29uZGl0 aW9uIGNvbmQsIGNvbnN0IEJhc2VJbmRleCYgYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExhYmVsKiBsYWJlbCkgUEVSX1NIQVJFRF9BUkNIOwotICAgaW5saW5lIHZvaWQg YnJhbmNoVGVzdE51bGwoQ29uZGl0aW9uIGNvbmQsIGNvbnN0IFZhbHVlT3BlcmFuZCYgdmFsdWUs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogbGFiZWwpCi0tICAgICAgREVG SU5FRF9PTihhcm0sIGFybTY0LCBtaXBzMzIsIG1pcHM2NCwgeDg2X3NoYXJlZCk7Ci0rICAgICAg REVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzMzIsIG1pcHM2NCwgeDg2X3NoYXJlZCwgcHBjNjQp OwotIAotICAgLy8gQ2xvYmJlcnMgdGhlIFNjcmF0Y2hSZWcgb24geDY0LgotICAgaW5saW5lIHZv aWQgYnJhbmNoVGVzdE9iamVjdChDb25kaXRpb24gY29uZCwgY29uc3QgQWRkcmVzcyYgYWRkcmVz cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKSBQRVJfU0hB UkVEX0FSQ0g7Ci0gICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0T2JqZWN0KENvbmRpdGlvbiBjb25k LCBjb25zdCBCYXNlSW5kZXgmIGFkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExhYmVsKiBsYWJlbCkgUEVSX1NIQVJFRF9BUkNIOwotICAgaW5saW5lIHZvaWQgYnJhbmNo VGVzdE9iamVjdChDb25kaXRpb24gY29uZCwgY29uc3QgVmFsdWVPcGVyYW5kJiB2YWx1ZSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKQotLSAgICAgIERFRklO RURfT04oYXJtLCBhcm02NCwgbWlwczMyLCBtaXBzNjQsIHg4Nl9zaGFyZWQpOwotKyAgICAgIERF RklORURfT04oYXJtLCBhcm02NCwgbWlwczMyLCBtaXBzNjQsIHg4Nl9zaGFyZWQsIHBwYzY0KTsK LSAKLSAgIGlubGluZSB2b2lkIGJyYW5jaFRlc3RHQ1RoaW5nKENvbmRpdGlvbiBjb25kLCBjb25z dCBBZGRyZXNzJiBhZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFi ZWwqIGxhYmVsKSBQRVJfU0hBUkVEX0FSQ0g7Ci0gICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0R0NU aGluZyhDb25kaXRpb24gY29uZCwgY29uc3QgQmFzZUluZGV4JiBhZGRyZXNzLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKSBQRVJfU0hBUkVEX0FSQ0g7Ci0g ICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0R0NUaGluZyhDb25kaXRpb24gY29uZCwgY29uc3QgVmFs dWVPcGVyYW5kJiB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVs KiBsYWJlbCkgUEVSX1NIQVJFRF9BUkNIOwotIAotICAgaW5saW5lIHZvaWQgYnJhbmNoVGVzdFBy aW1pdGl2ZShDb25kaXRpb24gY29uZCwgY29uc3QgVmFsdWVPcGVyYW5kJiB2YWx1ZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIGxhYmVsKQotLSAgICAgIERFRklO RURfT04oYXJtLCBhcm02NCwgbWlwczMyLCBtaXBzNjQsIHg4Nl9zaGFyZWQpOwotKyAgICAgIERF RklORURfT04oYXJtLCBhcm02NCwgbWlwczMyLCBtaXBzNjQsIHg4Nl9zaGFyZWQsIHBwYzY0KTsK LSAKLSAgIGlubGluZSB2b2lkIGJyYW5jaFRlc3RNYWdpYyhDb25kaXRpb24gY29uZCwgY29uc3Qg QWRkcmVzcyYgYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCog bGFiZWwpIFBFUl9TSEFSRURfQVJDSDsKLSAgIGlubGluZSB2b2lkIGJyYW5jaFRlc3RNYWdpYyhD b25kaXRpb24gY29uZCwgY29uc3QgQmFzZUluZGV4JiBhZGRyZXNzLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExhYmVsKiBsYWJlbCkgUEVSX1NIQVJFRF9BUkNIOwotICAgdGVtcGxh dGUgPGNsYXNzIEw+Ci0gICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0TWFnaWMoQ29uZGl0aW9uIGNv bmQsIGNvbnN0IFZhbHVlT3BlcmFuZCYgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTCBsYWJlbCkKLS0gICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHMzMiwgbWlw czY0LCB4ODZfc2hhcmVkKTsKLSsgICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHMzMiwg bWlwczY0LCB4ODZfc2hhcmVkLCBwcGM2NCk7Ci0gCi0gICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0 TWFnaWMoQ29uZGl0aW9uIGNvbmQsIGNvbnN0IEFkZHJlc3MmIHZhbGFkZHIsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSlNXaHlNYWdpYyB3aHksIExhYmVsKiBsYWJlbCkgUEVSX0FS Q0g7Ci0gCi0gICBpbmxpbmUgdm9pZCBicmFuY2hUZXN0TWFnaWNWYWx1ZShDb25kaXRpb24gY29u ZCwgY29uc3QgVmFsdWVPcGVyYW5kJiB2YWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBKU1doeU1hZ2ljIHdoeSwgTGFiZWwqIGxhYmVsKTsKLSAKLSAgIHZvaWQgYnJhbmNo VGVzdFZhbHVlKENvbmRpdGlvbiBjb25kLCBjb25zdCBWYWx1ZU9wZXJhbmQmIGxocywKLUBAIC0x ODI4LDQyICsxODM1LDQyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyIDogcHVibGljIE1hY3JvQXNz ZW1ibGVyU3BlY2lmaWMgewotIAotICAgaW5saW5lIHZvaWQgYnJhbmNoVGVzdFZhbHVlKENvbmRp dGlvbiBjb25kLCBjb25zdCBCYXNlSW5kZXgmIGxocywKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBWYWx1ZU9wZXJhbmQmIHJocywgTGFiZWwqIGxhYmVsKSBQRVJfQVJDSDsK LSAKLSAgIC8vIENoZWNrcyBpZiBnaXZlbiBWYWx1ZSBpcyBldmFsdWF0ZWQgdG8gdHJ1ZSBvciBm YWxzZSBpbiBhIGNvbmRpdGlvbi4KLSAgIC8vIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBzaG91bGQg bWF0Y2ggdGhlIHR5cGUgb2YgdGhlIG1ldGhvZC4KLSAgIGlubGluZSB2b2lkIGJyYW5jaFRlc3RJ bnQzMlRydXRoeShib29sIHRydXRoeSwgY29uc3QgVmFsdWVPcGVyYW5kJiB2YWx1ZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogbGFiZWwpCi0tICAgICAgREVG SU5FRF9PTihhcm0sIGFybTY0LCBtaXBzMzIsIG1pcHM2NCwgeDg2X3NoYXJlZCk7Ci0rICAgICAg REVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzMzIsIG1pcHM2NCwgeDg2X3NoYXJlZCwgcHBjNjQp OwotICAgaW5saW5lIHZvaWQgYnJhbmNoVGVzdERvdWJsZVRydXRoeShib29sIHRydXRoeSwgRmxv YXRSZWdpc3RlciByZWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExh YmVsKiBsYWJlbCkgUEVSX1NIQVJFRF9BUkNIOwotICAgaW5saW5lIHZvaWQgYnJhbmNoVGVzdEJv b2xlYW5UcnV0aHkoYm9vbCB0cnV0aHksIGNvbnN0IFZhbHVlT3BlcmFuZCYgdmFsdWUsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogbGFiZWwpIFBFUl9BUkNI OwotICAgaW5saW5lIHZvaWQgYnJhbmNoVGVzdFN0cmluZ1RydXRoeShib29sIHRydXRoeSwgY29u c3QgVmFsdWVPcGVyYW5kJiB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGFiZWwqIGxhYmVsKQotLSAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwczMy LCBtaXBzNjQsIHg4Nl9zaGFyZWQpOwotKyAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlw czMyLCBtaXBzNjQsIHg4Nl9zaGFyZWQsIHBwYzY0KTsKLSAgIGlubGluZSB2b2lkIGJyYW5jaFRl c3RCaWdJbnRUcnV0aHkoYm9vbCB0cnV0aHksIGNvbnN0IFZhbHVlT3BlcmFuZCYgdmFsdWUsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsKiBsYWJlbCkKLS0gICAg ICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHMzMiwgbWlwczY0LCB4ODZfc2hhcmVkKTsKLSsg ICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHMzMiwgbWlwczY0LCB4ODZfc2hhcmVkLCBw cGM2NCk7Ci0gCi0gICAvLyBDcmVhdGUgYW4gdW5jb25kaXRpb25hbCBicmFuY2ggdG8gdGhlIGFk ZHJlc3MgZ2l2ZW4gYXMgYXJndW1lbnQuCi0gICBpbmxpbmUgdm9pZCBicmFuY2hUb0NvbXB1dGVk QWRkcmVzcyhjb25zdCBCYXNlSW5kZXgmIGFkZHJlc3MpIFBFUl9BUkNIOwotIAotICBwcml2YXRl OgotICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFMsIHR5cGVuYW1lIEw+Ci0gICBp bmxpbmUgdm9pZCBicmFuY2hQdHJJbXBsKENvbmRpdGlvbiBjb25kLCBjb25zdCBUJiBsaHMsIGNv bnN0IFMmIHJocywgTCBsYWJlbCkKLSAgICAgICBERUZJTkVEX09OKHg4Nl9zaGFyZWQpOwotIAot ICAgdm9pZCBicmFuY2hQdHJJbk51cnNlcnlDaHVua0ltcGwoQ29uZGl0aW9uIGNvbmQsIFJlZ2lz dGVyIHB0ciwgTGFiZWwqIGxhYmVsKQotICAgICAgIERFRklORURfT04oeDg2KTsKLSAgIHRlbXBs YXRlIDx0eXBlbmFtZSBUPgotICAgdm9pZCBicmFuY2hWYWx1ZUlzTnVyc2VyeUNlbGxJbXBsKENv bmRpdGlvbiBjb25kLCBjb25zdCBUJiB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBSZWdpc3RlciB0ZW1wLCBMYWJlbCogbGFiZWwpCi0tICAgICAgREVGSU5FRF9P Tihhcm02NCwgeDY0LCBtaXBzNjQpOwotKyAgICAgIERFRklORURfT04oYXJtNjQsIHg2NCwgbWlw czY0LCBwcGM2NCk7Ci0gCi0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgIGlubGluZSB2b2lk IGJyYW5jaFRlc3RVbmRlZmluZWRJbXBsKENvbmRpdGlvbiBjb25kLCBjb25zdCBUJiB0LCBMYWJl bCogbGFiZWwpCi0gICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCB4ODZfc2hhcmVkKTsKLSAg IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgaW5saW5lIHZvaWQgYnJhbmNoVGVzdEludDMySW1w bChDb25kaXRpb24gY29uZCwgY29uc3QgVCYgdCwgTGFiZWwqIGxhYmVsKQotICAgICAgIERFRklO RURfT04oYXJtLCBhcm02NCwgeDg2X3NoYXJlZCk7Ci0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K LUBAIC0xOTIzLDExNiArMTkzMCwxMTYgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMg TWFjcm9Bc3NlbWJsZXJTcGVjaWZpYyB7Ci0gICBpbmxpbmUgdm9pZCBmYWxsaWJsZVVuYm94U3Ry aW5nKGNvbnN0IFQmIHNyYywgUmVnaXN0ZXIgZGVzdCwgTGFiZWwqIGZhaWwpOwotICAgdGVtcGxh dGUgPHR5cGVuYW1lIFQ+Ci0gICBpbmxpbmUgdm9pZCBmYWxsaWJsZVVuYm94U3ltYm9sKGNvbnN0 IFQmIHNyYywgUmVnaXN0ZXIgZGVzdCwgTGFiZWwqIGZhaWwpOwotICAgdGVtcGxhdGUgPHR5cGVu YW1lIFQ+Ci0gICBpbmxpbmUgdm9pZCBmYWxsaWJsZVVuYm94QmlnSW50KGNvbnN0IFQmIHNyYywg UmVnaXN0ZXIgZGVzdCwgTGFiZWwqIGZhaWwpOwotIAotICAgaW5saW5lIHZvaWQgY21wMzJNb3Zl MzIoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVyIGxocywgUmVnaXN0ZXIgcmhzLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgc3JjLCBSZWdpc3RlciBkZXN0KQotLSAgICAgIERF RklORURfT04oYXJtLCBhcm02NCwgbWlwc19zaGFyZWQsIHg4Nl9zaGFyZWQpOwotKyAgICAgIERF RklORURfT04oYXJtLCBhcm02NCwgbWlwc19zaGFyZWQsIHg4Nl9zaGFyZWQsIHBwYzY0KTsKLSAK LSAgIGlubGluZSB2b2lkIGNtcDMyTW92ZTMyKENvbmRpdGlvbiBjb25kLCBSZWdpc3RlciBsaHMs IGNvbnN0IEFkZHJlc3MmIHJocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVy IHNyYywgUmVnaXN0ZXIgZGVzdCkKLS0gICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHNf c2hhcmVkLCB4ODZfc2hhcmVkKTsKLSsgICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHNf c2hhcmVkLCB4ODZfc2hhcmVkLCBwcGM2NCk7Ci0gCi0gICBpbmxpbmUgdm9pZCBjbXBQdHJNb3Zl UHRyKENvbmRpdGlvbiBjb25kLCBSZWdpc3RlciBsaHMsIFJlZ2lzdGVyIHJocywKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgc3JjLCBSZWdpc3RlciBkZXN0KSBQRVJfQVJD SDsKLSAKLSAgIGlubGluZSB2b2lkIGNtcFB0ck1vdmVQdHIoQ29uZGl0aW9uIGNvbmQsIFJlZ2lz dGVyIGxocywgY29uc3QgQWRkcmVzcyYgcmhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBSZWdpc3RlciBzcmMsIFJlZ2lzdGVyIGRlc3QpIFBFUl9BUkNIOwotIAotICAgaW5saW5lIHZv aWQgY21wMzJMb2FkMzIoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVyIGxocywgY29uc3QgQWRkcmVz cyYgcmhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQWRkcmVzcyYgc3JjLCBS ZWdpc3RlciBkZXN0KQotLSAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwc19zaGFyZWQs IHg4Nl9zaGFyZWQpOwotKyAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwc19zaGFyZWQs IHg4Nl9zaGFyZWQsIHBwYzY0KTsKLSAKLSAgIGlubGluZSB2b2lkIGNtcDMyTG9hZDMyKENvbmRp dGlvbiBjb25kLCBSZWdpc3RlciBsaHMsIFJlZ2lzdGVyIHJocywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IEFkZHJlc3MmIHNyYywgUmVnaXN0ZXIgZGVzdCkKLS0gICAgICBERUZJ TkVEX09OKGFybSwgYXJtNjQsIG1pcHNfc2hhcmVkLCB4ODZfc2hhcmVkKTsKLSsgICAgICBERUZJ TkVEX09OKGFybSwgYXJtNjQsIG1pcHNfc2hhcmVkLCB4ODZfc2hhcmVkLCBwcGM2NCk7Ci0gCi0g ICBpbmxpbmUgdm9pZCBjbXAzMkxvYWRQdHIoQ29uZGl0aW9uIGNvbmQsIGNvbnN0IEFkZHJlc3Mm IGxocywgSW1tMzIgcmhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFkZHJl c3MmIHNyYywgUmVnaXN0ZXIgZGVzdCkKLS0gICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1p cHNfc2hhcmVkLCB4ODYsIHg2NCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBz X3NoYXJlZCwgeDg2LCB4NjQsIHBwYzY0KTsKLSAKLSAgIGlubGluZSB2b2lkIGNtcDMyTW92ZVB0 cihDb25kaXRpb24gY29uZCwgUmVnaXN0ZXIgbGhzLCBJbW0zMiByaHMsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgUmVnaXN0ZXIgc3JjLCBSZWdpc3RlciBkZXN0KQotLSAgICAgIERFRklO RURfT04oYXJtLCBhcm02NCwgbWlwc19zaGFyZWQsIHg4NiwgeDY0KTsKLSsgICAgICBERUZJTkVE X09OKGFybSwgYXJtNjQsIG1pcHNfc2hhcmVkLCB4ODYsIHg2NCwgcHBjNjQpOwotIAotICAgaW5s aW5lIHZvaWQgdGVzdDMyTG9hZFB0cihDb25kaXRpb24gY29uZCwgY29uc3QgQWRkcmVzcyYgYWRk ciwgSW1tMzIgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQWRkcmVz cyYgc3JjLCBSZWdpc3RlciBkZXN0KQotLSAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlw c19zaGFyZWQsIHg4NiwgeDY0KTsKLSsgICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHNf c2hhcmVkLCB4ODYsIHg2NCwgcHBjNjQpOwotIAotICAgaW5saW5lIHZvaWQgdGVzdDMyTW92ZVB0 cihDb25kaXRpb24gY29uZCwgY29uc3QgQWRkcmVzcyYgYWRkciwgSW1tMzIgbWFzaywKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgc3JjLCBSZWdpc3RlciBkZXN0KQotLSAg ICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwc19zaGFyZWQsIHg4NiwgeDY0KTsKLSsgICAg ICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHNfc2hhcmVkLCB4ODYsIHg2NCwgcHBjNjQpOwot IAotICAgLy8gQ29uZGl0aW9uYWwgbW92ZSBmb3IgU3BlY3RyZSBtaXRpZ2F0aW9ucy4KLSAgIGlu bGluZSB2b2lkIHNwZWN0cmVNb3ZlUHRyKENvbmRpdGlvbiBjb25kLCBSZWdpc3RlciBzcmMsIFJl Z2lzdGVyIGRlc3QpCi0tICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCwg eDg2LCB4NjQpOwotKyAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwc19zaGFyZWQsIHg4 NiwgeDY0LCBwcGM2NCk7Ci0gCi0gICAvLyBaZXJvZXMgZGVzdCBpZiB0aGUgY29uZGl0aW9uIGlz IHRydWUuCi0gICBpbmxpbmUgdm9pZCBzcGVjdHJlWmVyb1JlZ2lzdGVyKENvbmRpdGlvbiBjb25k LCBSZWdpc3RlciBzY3JhdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS ZWdpc3RlciBkZXN0KQotLSAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwc19zaGFyZWQs IHg4Nl9zaGFyZWQpOwotKyAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwc19zaGFyZWQs IHg4Nl9zaGFyZWQsIHBwYzY0KTsKLSAKLSAgIC8vIFBlcmZvcm1zIGEgYm91bmRzIGNoZWNrIGFu ZCB6ZXJvZXMgdGhlIGluZGV4IHJlZ2lzdGVyIGlmIG91dC1vZi1ib3VuZHMKLSAgIC8vICh0byBt aXRpZ2F0ZSBTcGVjdHJlKS4KLSAgcHJpdmF0ZToKLSAgIGlubGluZSB2b2lkIHNwZWN0cmVCb3Vu ZHNDaGVjazMyKFJlZ2lzdGVyIGluZGV4LCBjb25zdCBPcGVyYW5kJiBsZW5ndGgsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciBtYXliZVNjcmF0Y2gsIExhYmVs KiBmYWlsdXJlKQotICAgICAgIERFRklORURfT04oeDg2KTsKLSAKLSAgcHVibGljOgotICAgaW5s aW5lIHZvaWQgc3BlY3RyZUJvdW5kc0NoZWNrMzIoUmVnaXN0ZXIgaW5kZXgsIFJlZ2lzdGVyIGxl bmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIG1heWJl U2NyYXRjaCwgTGFiZWwqIGZhaWx1cmUpCi0tICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBt aXBzX3NoYXJlZCwgeDg2LCB4NjQpOwotKyAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlw c19zaGFyZWQsIHg4NiwgeDY0LCBwcGM2NCk7Ci0gICBpbmxpbmUgdm9pZCBzcGVjdHJlQm91bmRz Q2hlY2szMihSZWdpc3RlciBpbmRleCwgY29uc3QgQWRkcmVzcyYgbGVuZ3RoLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgbWF5YmVTY3JhdGNoLCBMYWJlbCog ZmFpbHVyZSkKLS0gICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHNfc2hhcmVkLCB4ODYs IHg2NCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCwgeDg2LCB4 NjQsIHBwYzY0KTsKLSAKLSAgIGlubGluZSB2b2lkIHNwZWN0cmVCb3VuZHNDaGVja1B0cihSZWdp c3RlciBpbmRleCwgUmVnaXN0ZXIgbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFJlZ2lzdGVyIG1heWJlU2NyYXRjaCwgTGFiZWwqIGZhaWx1cmUpCi0tICAgICAg REVGSU5FRF9PTihhcm0sIGFybTY0LCBtaXBzX3NoYXJlZCwgeDg2LCB4NjQpOwotKyAgICAgIERF RklORURfT04oYXJtLCBhcm02NCwgbWlwc19zaGFyZWQsIHg4NiwgeDY0LCBwcGM2NCk7Ci0gICBp bmxpbmUgdm9pZCBzcGVjdHJlQm91bmRzQ2hlY2tQdHIoUmVnaXN0ZXIgaW5kZXgsIGNvbnN0IEFk ZHJlc3MmIGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdp c3RlciBtYXliZVNjcmF0Y2gsIExhYmVsKiBmYWlsdXJlKQotLSAgICAgIERFRklORURfT04oYXJt LCBhcm02NCwgbWlwc19zaGFyZWQsIHg4NiwgeDY0KTsKLSsgICAgICBERUZJTkVEX09OKGFybSwg YXJtNjQsIG1pcHNfc2hhcmVkLCB4ODYsIHg2NCwgcHBjNjQpOwotIAotICAgLy8gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0gICAvLyBDYW5vbmljYWxpemF0aW9uIHByaW1pdGl2ZXMuCi0gICBpbmxpbmUgdm9p ZCBjYW5vbmljYWxpemVEb3VibGUoRmxvYXRSZWdpc3RlciByZWcpOwotICAgaW5saW5lIHZvaWQg Y2Fub25pY2FsaXplRG91YmxlSWZEZXRlcm1pbmlzdGljKEZsb2F0UmVnaXN0ZXIgcmVnKTsKLSAK LSAgIGlubGluZSB2b2lkIGNhbm9uaWNhbGl6ZUZsb2F0KEZsb2F0UmVnaXN0ZXIgcmVnKTsKLSAg IGlubGluZSB2b2lkIGNhbm9uaWNhbGl6ZUZsb2F0SWZEZXRlcm1pbmlzdGljKEZsb2F0UmVnaXN0 ZXIgcmVnKTsKLSAKLSAgcHVibGljOgotICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAvLyBNZW1v cnkgYWNjZXNzIHByaW1pdGl2ZXMuCi0gICBpbmxpbmUgdm9pZCBzdG9yZVVuY2Fub25pY2FsaXpl ZERvdWJsZShGbG9hdFJlZ2lzdGVyIHNyYywgY29uc3QgQWRkcmVzcyYgZGVzdCkKLS0gICAgICBE RUZJTkVEX09OKHg4Nl9zaGFyZWQsIGFybSwgYXJtNjQsIG1pcHMzMiwgbWlwczY0KTsKLSsgICAg ICBERUZJTkVEX09OKHg4Nl9zaGFyZWQsIGFybSwgYXJtNjQsIG1pcHMzMiwgbWlwczY0LCBwcGM2 NCk7Ci0gICBpbmxpbmUgdm9pZCBzdG9yZVVuY2Fub25pY2FsaXplZERvdWJsZShGbG9hdFJlZ2lz dGVyIHNyYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IEJhc2VJbmRleCYgZGVzdCkKLS0gICAgICBERUZJTkVEX09OKHg4Nl9zaGFyZWQsIGFybSwgYXJt NjQsIG1pcHMzMiwgbWlwczY0KTsKLSsgICAgICBERUZJTkVEX09OKHg4Nl9zaGFyZWQsIGFybSwg YXJtNjQsIG1pcHMzMiwgbWlwczY0LCBwcGM2NCk7Ci0gICBpbmxpbmUgdm9pZCBzdG9yZVVuY2Fu b25pY2FsaXplZERvdWJsZShGbG9hdFJlZ2lzdGVyIHNyYywgY29uc3QgT3BlcmFuZCYgZGVzdCkK LSAgICAgICBERUZJTkVEX09OKHg4Nl9zaGFyZWQpOwotIAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+ Ci0gICBpbmxpbmUgdm9pZCBzdG9yZURvdWJsZShGbG9hdFJlZ2lzdGVyIHNyYywgY29uc3QgVCYg ZGVzdCk7Ci0gCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIGlubGluZSB2b2lkIGJveERvdWJs ZShGbG9hdFJlZ2lzdGVyIHNyYywgY29uc3QgVCYgZGVzdCk7Ci0gCi0gICB1c2luZyBNYWNyb0Fz c2VtYmxlclNwZWNpZmljOjpib3hEb3VibGU7Ci0gCi0gICBpbmxpbmUgdm9pZCBzdG9yZVVuY2Fu b25pY2FsaXplZEZsb2F0MzIoRmxvYXRSZWdpc3RlciBzcmMsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQWRkcmVzcyYgZGVzdCkKLS0gICAgICBERUZJ TkVEX09OKHg4Nl9zaGFyZWQsIGFybSwgYXJtNjQsIG1pcHMzMiwgbWlwczY0KTsKLSsgICAgICBE RUZJTkVEX09OKHg4Nl9zaGFyZWQsIGFybSwgYXJtNjQsIG1pcHMzMiwgbWlwczY0LCBwcGM2NCk7 Ci0gICBpbmxpbmUgdm9pZCBzdG9yZVVuY2Fub25pY2FsaXplZEZsb2F0MzIoRmxvYXRSZWdpc3Rl ciBzcmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg QmFzZUluZGV4JiBkZXN0KQotLSAgICAgIERFRklORURfT04oeDg2X3NoYXJlZCwgYXJtLCBhcm02 NCwgbWlwczMyLCBtaXBzNjQpOwotKyAgICAgIERFRklORURfT04oeDg2X3NoYXJlZCwgYXJtLCBh cm02NCwgbWlwczMyLCBtaXBzNjQsIHBwYzY0KTsKLSAgIGlubGluZSB2b2lkIHN0b3JlVW5jYW5v bmljYWxpemVkRmxvYXQzMihGbG9hdFJlZ2lzdGVyIHNyYywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBPcGVyYW5kJiBkZXN0KQotICAgICAgIERFRklO RURfT04oeDg2X3NoYXJlZCk7Ci0gCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIGlubGluZSB2 b2lkIHN0b3JlRmxvYXQzMihGbG9hdFJlZ2lzdGVyIHNyYywgY29uc3QgVCYgZGVzdCk7Ci0gCi0g ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUBAIC0zNDcwLDIwICszNDc3LDIwIEBAIGNsYXNzIE1h Y3JvQXNzZW1ibGVyIDogcHVibGljIE1hY3JvQXNzZW1ibGVyU3BlY2lmaWMgewotICAgICAgIERF RklORURfT04oeDg2LCB4NjQpOwotIAotICBwdWJsaWM6Ci0gICAvLyA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LSAgIC8vIENvbnZlcnQgZmxvYXRpbmcgcG9pbnQuCi0gCi0gICAvLyB0ZW1wIHJlcXVpcmVkIG9u IHg4NiBhbmQgeDY0OyBtdXN0IGJlIHVuZGVmaW5lZCBvbiBtaXBzNjQuCi0gICB2b2lkIGNvbnZl cnRVSW50NjRUb0Zsb2F0MzIoUmVnaXN0ZXI2NCBzcmMsIEZsb2F0UmVnaXN0ZXIgZGVzdCwgUmVn aXN0ZXIgdGVtcCkKLS0gICAgICBERUZJTkVEX09OKGFybTY0LCBtaXBzNjQsIHg2NCwgeDg2KTsK LSsgICAgICBERUZJTkVEX09OKGFybTY0LCBtaXBzNjQsIHg2NCwgeDg2LCBwcGM2NCk7Ci0gCi0g ICB2b2lkIGNvbnZlcnRJbnQ2NFRvRmxvYXQzMihSZWdpc3RlcjY0IHNyYywgRmxvYXRSZWdpc3Rl ciBkZXN0KQotLSAgICAgIERFRklORURfT04oYXJtNjQsIG1pcHM2NCwgeDY0LCB4ODYpOwotKyAg ICAgIERFRklORURfT04oYXJtNjQsIG1pcHM2NCwgeDY0LCB4ODYsIHBwYzY0KTsKLSAKLSAgIGJv b2wgY29udmVydFVJbnQ2NFRvRG91YmxlTmVlZHNUZW1wKCkgUEVSX0FSQ0g7Ci0gCi0gICAvLyB0 ZW1wIHJlcXVpcmVkIHdoZW4gY29udmVydFVJbnQ2NFRvRG91YmxlTmVlZHNUZW1wKCkgcmV0dXJu cyB0cnVlLgotICAgdm9pZCBjb252ZXJ0VUludDY0VG9Eb3VibGUoUmVnaXN0ZXI2NCBzcmMsIEZs b2F0UmVnaXN0ZXIgZGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVy IHRlbXApIFBFUl9BUkNIOwotIAotICAgdm9pZCBjb252ZXJ0SW50NjRUb0RvdWJsZShSZWdpc3Rl cjY0IHNyYywgRmxvYXRSZWdpc3RlciBkZXN0KSBQRVJfQVJDSDsKLUBAIC0zNTE0LDI5ICszNTIx LDI5IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyIDogcHVibGljIE1hY3JvQXNzZW1ibGVyU3BlY2lm aWMgewotICAgLy8KLSAgIC8vIE9uIDMyLWJpdCBzeXN0ZW1zIGZvciBib3RoIHdhc20gYW5kIGFz bS5qcywgYW5kIG9uIDY0LWJpdCBzeXN0ZW1zIGZvcgotICAgLy8gYXNtLmpzLCBoZWFwIGxlbmd0 aHMgYXJlIGxpbWl0ZWQgdG8gMkdCLiAgT24gNjQtYml0IHN5c3RlbXMgZm9yIHdhc20sCi0gICAv LyAzMi1iaXQgaGVhcCBsZW5ndGhzIGFyZSBsaW1pdGVkIHRvIDRHQiwgYW5kIDY0LWJpdCBoZWFw IGxlbmd0aHMgd2lsbCBiZQotICAgLy8gbGltaXRlZCB0byBzb21ldGhpbmcgbXVjaCBsYXJnZXIu Ci0gCi0gICB2b2lkIHdhc21Cb3VuZHNDaGVjazMyKENvbmRpdGlvbiBjb25kLCBSZWdpc3RlciBp bmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgYm91bmRzQ2hlY2tMaW1p dCwgTGFiZWwqIGxhYmVsKQotLSAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwczMyLCBt aXBzNjQsIHg4Nl9zaGFyZWQpOwotKyAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwczMy LCBtaXBzNjQsIHg4Nl9zaGFyZWQsIHBwYzY0KTsKLSAKLSAgIHZvaWQgd2FzbUJvdW5kc0NoZWNr MzIoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVyIGluZGV4LAotICAgICAgICAgICAgICAgICAgICAg ICAgICBBZGRyZXNzIGJvdW5kc0NoZWNrTGltaXQsIExhYmVsKiBsYWJlbCkKLS0gICAgICBERUZJ TkVEX09OKGFybSwgYXJtNjQsIG1pcHMzMiwgbWlwczY0LCB4ODZfc2hhcmVkKTsKLSsgICAgICBE RUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHMzMiwgbWlwczY0LCB4ODZfc2hhcmVkLCBwcGM2NCk7 Ci0gCi0gICB2b2lkIHdhc21Cb3VuZHNDaGVjazY0KENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcjY0 IGluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlcjY0IGJvdW5kc0NoZWNr TGltaXQsIExhYmVsKiBsYWJlbCkKLS0gICAgICBERUZJTkVEX09OKGFybTY0LCBtaXBzNjQsIHg2 NCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm02NCwgbWlwczY0LCB4NjQsIHBwYzY0KTsKLSAKLSAg IHZvaWQgd2FzbUJvdW5kc0NoZWNrNjQoQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVyNjQgaW5kZXgs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MgYm91bmRzQ2hlY2tMaW1pdCwgTGFi ZWwqIGxhYmVsKQotLSAgICAgIERFRklORURfT04oYXJtNjQsIG1pcHM2NCwgeDY0KTsKLSsgICAg ICBERUZJTkVEX09OKGFybTY0LCBtaXBzNjQsIHg2NCwgcHBjNjQpOwotIAotICAgLy8gRWFjaCB3 YXNtIGxvYWQvc3RvcmUgaW5zdHJ1Y3Rpb24gYXBwZW5kcyBpdHMgb3duIHdhc206OlRyYXA6Ok91 dE9mQm91bmRzLgotICAgdm9pZCB3YXNtTG9hZChjb25zdCB3YXNtOjpNZW1vcnlBY2Nlc3NEZXNj JiBhY2Nlc3MsIE9wZXJhbmQgc3JjQWRkciwKLSAgICAgICAgICAgICAgICAgQW55UmVnaXN0ZXIg b3V0KSBERUZJTkVEX09OKHg4NiwgeDY0KTsKLSAgIHZvaWQgd2FzbUxvYWRJNjQoY29uc3Qgd2Fz bTo6TWVtb3J5QWNjZXNzRGVzYyYgYWNjZXNzLCBPcGVyYW5kIHNyY0FkZHIsCi0gICAgICAgICAg ICAgICAgICAgIFJlZ2lzdGVyNjQgb3V0KSBERUZJTkVEX09OKHg4NiwgeDY0KTsKLSAgIHZvaWQg d2FzbVN0b3JlKGNvbnN0IHdhc206Ok1lbW9yeUFjY2Vzc0Rlc2MmIGFjY2VzcywgQW55UmVnaXN0 ZXIgdmFsdWUsCi0gICAgICAgICAgICAgICAgICBPcGVyYW5kIGRzdEFkZHIpIERFRklORURfT04o eDg2LCB4NjQpOwotQEAgLTM1NDYsMjYgKzM1NTMsMjYgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXIg OiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJTcGVjaWZpYyB7Ci0gICAvLyBGb3IgYWxsIHRoZSBBUk0v TUlQUyB3YXNtTG9hZCBhbmQgd2FzbVN0b3JlIGZ1bmN0aW9ucyBiZWxvdywgYHB0cmAKLSAgIC8v IE1VU1QgZXF1YWwgYHB0clNjcmF0Y2hgLCBhbmQgdGhhdCByZWdpc3RlciB3aWxsIGJlIHVwZGF0 ZWQgYmFzZWQgb24KLSAgIC8vIGNvbmRpdGlvbnMgbGlzdGVkIGJlbG93ICh3aGVyZSBpdCBpcyBv bmx5IG1lbnRpb25lZCBhcyBgcHRyYCkuCi0gCi0gICAvLyBgcHRyYCB3aWxsIGJlIHVwZGF0ZWQg aWYgYWNjZXNzLm9mZnNldCgpICE9IDAgb3IgYWNjZXNzLnR5cGUoKSA9PQotICAgLy8gU2NhbGFy OjpJbnQ2NC4KLSAgIHZvaWQgd2FzbUxvYWQoY29uc3Qgd2FzbTo6TWVtb3J5QWNjZXNzRGVzYyYg YWNjZXNzLCBSZWdpc3RlciBtZW1vcnlCYXNlLAotICAgICAgICAgICAgICAgICBSZWdpc3RlciBw dHIsIFJlZ2lzdGVyIHB0clNjcmF0Y2gsIEFueVJlZ2lzdGVyIG91dHB1dCkKLS0gICAgICBERUZJ TkVEX09OKGFybSwgbWlwc19zaGFyZWQpOwotKyAgICAgIERFRklORURfT04oYXJtLCBtaXBzX3No YXJlZCwgcHBjNjQpOwotICAgdm9pZCB3YXNtTG9hZEk2NChjb25zdCB3YXNtOjpNZW1vcnlBY2Nl c3NEZXNjJiBhY2Nlc3MsIFJlZ2lzdGVyIG1lbW9yeUJhc2UsCi0gICAgICAgICAgICAgICAgICAg IFJlZ2lzdGVyIHB0ciwgUmVnaXN0ZXIgcHRyU2NyYXRjaCwgUmVnaXN0ZXI2NCBvdXRwdXQpCi0t ICAgICAgREVGSU5FRF9PTihhcm0sIG1pcHMzMiwgbWlwczY0KTsKLSsgICAgICBERUZJTkVEX09O KGFybSwgbWlwczMyLCBtaXBzNjQsIHBwYzY0KTsKLSAgIHZvaWQgd2FzbVN0b3JlKGNvbnN0IHdh c206Ok1lbW9yeUFjY2Vzc0Rlc2MmIGFjY2VzcywgQW55UmVnaXN0ZXIgdmFsdWUsCi0gICAgICAg ICAgICAgICAgICBSZWdpc3RlciBtZW1vcnlCYXNlLCBSZWdpc3RlciBwdHIsIFJlZ2lzdGVyIHB0 clNjcmF0Y2gpCi0tICAgICAgREVGSU5FRF9PTihhcm0sIG1pcHNfc2hhcmVkKTsKLSsgICAgICBE RUZJTkVEX09OKGFybSwgbWlwc19zaGFyZWQsIHBwYzY0KTsKLSAgIHZvaWQgd2FzbVN0b3JlSTY0 KGNvbnN0IHdhc206Ok1lbW9yeUFjY2Vzc0Rlc2MmIGFjY2VzcywgUmVnaXN0ZXI2NCB2YWx1ZSwK LSAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIG1lbW9yeUJhc2UsIFJlZ2lzdGVyIHB0ciwg UmVnaXN0ZXIgcHRyU2NyYXRjaCkKLS0gICAgICBERUZJTkVEX09OKGFybSwgbWlwczMyLCBtaXBz NjQpOwotKyAgICAgIERFRklORURfT04oYXJtLCBtaXBzMzIsIG1pcHM2NCwgcHBjNjQpOwotIAot ICAgLy8gVGhlc2UgYWNjZXB0IGdlbmVyYWwgbWVtb3J5QmFzZSArIHB0ciArIG9mZnNldCAoaW4g YGFjY2Vzc2ApOyB0aGUgb2Zmc2V0IGlzCi0gICAvLyBhbHdheXMgc21hbGxlciB0aGFuIHRoZSBn dWFyZCByZWdpb24uICBUaGV5IHdpbGwgaW5zZXJ0IGFuIGFkZGl0aW9uYWwgYWRkCi0gICAvLyBp ZiB0aGUgb2Zmc2V0IGlzIG5vbnplcm8sIGFuZCBvZiBjb3Vyc2UgdGhhdCBhZGQgbWF5IHJlcXVp cmUgYSB0ZW1wb3JhcnkKLSAgIC8vIHJlZ2lzdGVyIGZvciB0aGUgb2Zmc2V0IGlmIHRoZSBvZmZz ZXQgaXMgbGFyZ2UsIGFuZCBpbnN0cnVjdGlvbnMgdG8gc2V0IGl0Ci0gICAvLyB1cC4KLSAgIHZv aWQgd2FzbUxvYWQoY29uc3Qgd2FzbTo6TWVtb3J5QWNjZXNzRGVzYyYgYWNjZXNzLCBSZWdpc3Rl ciBtZW1vcnlCYXNlLAotICAgICAgICAgICAgICAgICBSZWdpc3RlciBwdHIsIEFueVJlZ2lzdGVy IG91dHB1dCkgREVGSU5FRF9PTihhcm02NCk7Ci1AQCAtMzU3NSwxMDAgKzM1ODIsMTAwIEBAIGNs YXNzIE1hY3JvQXNzZW1ibGVyIDogcHVibGljIE1hY3JvQXNzZW1ibGVyU3BlY2lmaWMgewotICAg ICAgICAgICAgICAgICAgUmVnaXN0ZXIgbWVtb3J5QmFzZSwgUmVnaXN0ZXIgcHRyKSBERUZJTkVE X09OKGFybTY0KTsKLSAgIHZvaWQgd2FzbVN0b3JlSTY0KGNvbnN0IHdhc206Ok1lbW9yeUFjY2Vz c0Rlc2MmIGFjY2VzcywgUmVnaXN0ZXI2NCB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgIFJl Z2lzdGVyIG1lbW9yeUJhc2UsIFJlZ2lzdGVyIHB0cikgREVGSU5FRF9PTihhcm02NCk7Ci0gCi0g ICAvLyBgcHRyYCB3aWxsIGFsd2F5cyBiZSB1cGRhdGVkLgotICAgdm9pZCB3YXNtVW5hbGlnbmVk TG9hZChjb25zdCB3YXNtOjpNZW1vcnlBY2Nlc3NEZXNjJiBhY2Nlc3MsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgIFJlZ2lzdGVyIG1lbW9yeUJhc2UsIFJlZ2lzdGVyIHB0ciwgUmVnaXN0ZXIg cHRyU2NyYXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgb3V0cHV0LCBS ZWdpc3RlciB0bXApCi0tICAgICAgREVGSU5FRF9PTihtaXBzMzIsIG1pcHM2NCk7Ci0rICAgICAg REVGSU5FRF9PTihtaXBzMzIsIG1pcHM2NCwgcHBjNjQpOwotIAotICAgLy8gTUlQUzogYHB0cmAg d2lsbCBhbHdheXMgYmUgdXBkYXRlZC4KLSAgIHZvaWQgd2FzbVVuYWxpZ25lZExvYWRGUChjb25z dCB3YXNtOjpNZW1vcnlBY2Nlc3NEZXNjJiBhY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgUmVnaXN0ZXIgbWVtb3J5QmFzZSwgUmVnaXN0ZXIgcHRyLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFJlZ2lzdGVyIHB0clNjcmF0Y2gsIEZsb2F0UmVnaXN0ZXIgb3V0cHV0LAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIHRtcDEsIFJlZ2lzdGVyIHRtcDIs IFJlZ2lzdGVyIHRtcDMpCi0tICAgICAgREVGSU5FRF9PTihtaXBzMzIsIG1pcHM2NCk7Ci0rICAg ICAgREVGSU5FRF9PTihtaXBzMzIsIG1pcHM2NCwgcHBjNjQpOwotIAotICAgLy8gYHB0cmAgd2ls bCBhbHdheXMgYmUgdXBkYXRlZC4KLSAgIHZvaWQgd2FzbVVuYWxpZ25lZExvYWRJNjQoY29uc3Qg d2FzbTo6TWVtb3J5QWNjZXNzRGVzYyYgYWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBSZWdpc3RlciBtZW1vcnlCYXNlLCBSZWdpc3RlciBwdHIsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFJlZ2lzdGVyIHB0clNjcmF0Y2gsIFJlZ2lzdGVyNjQgb3V0cHV0LAotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciB0bXApIERFRklORURfT04obWlwczMy LCBtaXBzNjQpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciB0bXApIERF RklORURfT04obWlwczMyLCBtaXBzNjQsIHBwYzY0KTsKLSAKLSAgIC8vIE1JUFM6IGBwdHJgIHdp bGwgYWx3YXlzIGJlIHVwZGF0ZWQuCi0gICB2b2lkIHdhc21VbmFsaWduZWRTdG9yZShjb25zdCB3 YXNtOjpNZW1vcnlBY2Nlc3NEZXNjJiBhY2Nlc3MsIFJlZ2lzdGVyIHZhbHVlLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgbWVtb3J5QmFzZSwgUmVnaXN0ZXIgcHRyLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgcHRyU2NyYXRjaCwgUmVnaXN0ZXIgdG1w KQotLSAgICAgIERFRklORURfT04obWlwczMyLCBtaXBzNjQpOwotKyAgICAgIERFRklORURfT04o bWlwczMyLCBtaXBzNjQsIHBwYzY0KTsKLSAKLSAgIC8vIGBwdHJgIHdpbGwgYWx3YXlzIGJlIHVw ZGF0ZWQuCi0gICB2b2lkIHdhc21VbmFsaWduZWRTdG9yZUZQKGNvbnN0IHdhc206Ok1lbW9yeUFj Y2Vzc0Rlc2MmIGFjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRSZWdp c3RlciBmbG9hdFZhbHVlLCBSZWdpc3RlciBtZW1vcnlCYXNlLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBSZWdpc3RlciBwdHIsIFJlZ2lzdGVyIHB0clNjcmF0Y2gsIFJlZ2lzdGVyIHRt cCkKLS0gICAgICBERUZJTkVEX09OKG1pcHMzMiwgbWlwczY0KTsKLSsgICAgICBERUZJTkVEX09O KG1pcHMzMiwgbWlwczY0LCBwcGM2NCk7Ci0gCi0gICAvLyBgcHRyYCB3aWxsIGFsd2F5cyBiZSB1 cGRhdGVkLgotICAgdm9pZCB3YXNtVW5hbGlnbmVkU3RvcmVJNjQoY29uc3Qgd2FzbTo6TWVtb3J5 QWNjZXNzRGVzYyYgYWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0 ZXI2NCB2YWx1ZSwgUmVnaXN0ZXIgbWVtb3J5QmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFJlZ2lzdGVyIHB0ciwgUmVnaXN0ZXIgcHRyU2NyYXRjaCwgUmVnaXN0ZXIgdG1wKQot LSAgICAgIERFRklORURfT04obWlwczMyLCBtaXBzNjQpOwotKyAgICAgIERFRklORURfT04obWlw czMyLCBtaXBzNjQsIHBwYzY0KTsKLSAKLSAgIC8vIHdhc20gc3BlY2lmaWMgbWV0aG9kcywgdXNl ZCBpbiBib3RoIHRoZSB3YXNtIGJhc2VsaW5lIGNvbXBpbGVyIGFuZCBpb24uCi0gCi0gICAvLyBU aGUgdHJ1bmNhdGUtdG8taW50MzIgbWV0aG9kcyBkbyBub3QgYmluZCB0aGUgcmVqb2luIGxhYmVs OyBjbGllbnRzIG11c3QKLSAgIC8vIGRvIHNvIGlmIG9vbFdhc21UcnVuY2F0ZUNoZWNrRjY0VG9J MzIoKSBjYW4ganVtcCB0byBpdC4KLSAgIHZvaWQgd2FzbVRydW5jYXRlRG91YmxlVG9VSW50MzIo RmxvYXRSZWdpc3RlciBpbnB1dCwgUmVnaXN0ZXIgb3V0cHV0LAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBib29sIGlzU2F0dXJhdGluZywgTGFiZWwqIG9vbEVudHJ5KSBQRVJf QVJDSDsKLSAgIHZvaWQgd2FzbVRydW5jYXRlRG91YmxlVG9JbnQzMihGbG9hdFJlZ2lzdGVyIGlu cHV0LCBSZWdpc3RlciBvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ym9vbCBpc1NhdHVyYXRpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFi ZWwqIG9vbEVudHJ5KSBQRVJfU0hBUkVEX0FSQ0g7Ci0gICB2b2lkIG9vbFdhc21UcnVuY2F0ZUNo ZWNrRjY0VG9JMzIoRmxvYXRSZWdpc3RlciBpbnB1dCwgUmVnaXN0ZXIgb3V0cHV0LAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydW5jRmxhZ3MgZmxhZ3MsIHdhc206OkJ5 dGVjb2RlT2Zmc2V0IG9mZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM YWJlbCogcmVqb2luKQotLSAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgeDg2X3NoYXJlZCwg bWlwc19zaGFyZWQpOwotKyAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgeDg2X3NoYXJlZCwg bWlwc19zaGFyZWQsIHBwYzY0KTsKLSAKLSAgIHZvaWQgd2FzbVRydW5jYXRlRmxvYXQzMlRvVUlu dDMyKEZsb2F0UmVnaXN0ZXIgaW5wdXQsIFJlZ2lzdGVyIG91dHB1dCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNTYXR1cmF0aW5nLCBMYWJlbCogb29sRW50cnkp IFBFUl9BUkNIOwotICAgdm9pZCB3YXNtVHJ1bmNhdGVGbG9hdDMyVG9JbnQzMihGbG9hdFJlZ2lz dGVyIGlucHV0LCBSZWdpc3RlciBvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJvb2wgaXNTYXR1cmF0aW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMYWJlbCogb29sRW50cnkpIFBFUl9TSEFSRURfQVJDSDsKLSAgIHZvaWQgb29sV2FzbVRy dW5jYXRlQ2hlY2tGMzJUb0kzMihGbG9hdFJlZ2lzdGVyIGlucHV0LCBSZWdpc3RlciBvdXRwdXQs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1bmNGbGFncyBmbGFncywg d2FzbTo6Qnl0ZWNvZGVPZmZzZXQgb2ZmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExhYmVsKiByZWpvaW4pCi0tICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCB4ODZf c2hhcmVkLCBtaXBzX3NoYXJlZCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCB4ODZf c2hhcmVkLCBtaXBzX3NoYXJlZCwgcHBjNjQpOwotIAotICAgLy8gVGhlIHRydW5jYXRlLXRvLWlu dDY0IG1ldGhvZHMgd2lsbCBhbHdheXMgYmluZCB0aGUgYG9vbFJlam9pbmAgbGFiZWwKLSAgIC8v IGFmdGVyIHRoZSBsYXN0IGVtaXR0ZWQgaW5zdHJ1Y3Rpb24uCi0gICB2b2lkIHdhc21UcnVuY2F0 ZURvdWJsZVRvSW50NjQoRmxvYXRSZWdpc3RlciBpbnB1dCwgUmVnaXN0ZXI2NCBvdXRwdXQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1NhdHVyYXRpbmcsIExhYmVs KiBvb2xFbnRyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCogb29s UmVqb2luLCBGbG9hdFJlZ2lzdGVyIHRlbXBEb3VibGUpCi0tICAgICAgREVGSU5FRF9PTihhcm02 NCwgeDg2LCB4NjQsIG1pcHM2NCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm02NCwgeDg2LCB4NjQs IG1pcHM2NCwgcHBjNjQpOwotICAgdm9pZCB3YXNtVHJ1bmNhdGVEb3VibGVUb1VJbnQ2NChGbG9h dFJlZ2lzdGVyIGlucHV0LCBSZWdpc3RlcjY0IG91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYm9vbCBpc1NhdHVyYXRpbmcsIExhYmVsKiBvb2xFbnRyeSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIG9vbFJlam9pbiwgRmxvYXRSZWdp c3RlciB0ZW1wRG91YmxlKQotLSAgICAgIERFRklORURfT04oYXJtNjQsIHg4NiwgeDY0LCBtaXBz NjQpOwotKyAgICAgIERFRklORURfT04oYXJtNjQsIHg4NiwgeDY0LCBtaXBzNjQsIHBwYzY0KTsK LSAgIHZvaWQgb29sV2FzbVRydW5jYXRlQ2hlY2tGNjRUb0k2NChGbG9hdFJlZ2lzdGVyIGlucHV0 LCBSZWdpc3RlcjY0IG91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBUcnVuY0ZsYWdzIGZsYWdzLCB3YXNtOjpCeXRlY29kZU9mZnNldCBvZmYsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIHJlam9pbikKLS0gICAgICBERUZJTkVE X09OKGFybSwgYXJtNjQsIHg4Nl9zaGFyZWQsIG1pcHNfc2hhcmVkKTsKLSsgICAgICBERUZJTkVE X09OKGFybSwgYXJtNjQsIHg4Nl9zaGFyZWQsIG1pcHNfc2hhcmVkLCBwcGM2NCk7Ci0gCi0gICB2 b2lkIHdhc21UcnVuY2F0ZUZsb2F0MzJUb0ludDY0KEZsb2F0UmVnaXN0ZXIgaW5wdXQsIFJlZ2lz dGVyNjQgb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlz U2F0dXJhdGluZywgTGFiZWwqIG9vbEVudHJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMYWJlbCogb29sUmVqb2luLCBGbG9hdFJlZ2lzdGVyIHRlbXBEb3VibGUpCi0tICAg ICAgREVGSU5FRF9PTihhcm02NCwgeDg2LCB4NjQsIG1pcHM2NCk7Ci0rICAgICAgREVGSU5FRF9P Tihhcm02NCwgeDg2LCB4NjQsIG1pcHM2NCwgcHBjNjQpOwotICAgdm9pZCB3YXNtVHJ1bmNhdGVG bG9hdDMyVG9VSW50NjQoRmxvYXRSZWdpc3RlciBpbnB1dCwgUmVnaXN0ZXI2NCBvdXRwdXQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzU2F0dXJhdGluZywgTGFi ZWwqIG9vbEVudHJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwq IG9vbFJlam9pbiwgRmxvYXRSZWdpc3RlciB0ZW1wRG91YmxlKQotLSAgICAgIERFRklORURfT04o YXJtNjQsIHg4NiwgeDY0LCBtaXBzNjQpOwotKyAgICAgIERFRklORURfT04oYXJtNjQsIHg4Niwg eDY0LCBtaXBzNjQsIHBwYzY0KTsKLSAgIHZvaWQgb29sV2FzbVRydW5jYXRlQ2hlY2tGMzJUb0k2 NChGbG9hdFJlZ2lzdGVyIGlucHV0LCBSZWdpc3RlcjY0IG91dHB1dCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBUcnVuY0ZsYWdzIGZsYWdzLCB3YXNtOjpCeXRlY29kZU9m ZnNldCBvZmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwqIHJl am9pbikKLS0gICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIHg4Nl9zaGFyZWQsIG1pcHNfc2hh cmVkKTsKLSsgICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIHg4Nl9zaGFyZWQsIG1pcHNfc2hh cmVkLCBwcGM2NCk7Ci0gCi0gICAvLyBUaGlzIGZ1bmN0aW9uIHRha2VzIGNhcmUgb2YgbG9hZGlu ZyB0aGUgY2FsbGVlJ3MgVExTIGFuZCBwaW5uZWQgcmVncyBidXQKLSAgIC8vIGl0IGlzIHRoZSBj YWxsZXIncyByZXNwb25zaWJpbGl0eSB0byBzYXZlL3Jlc3RvcmUgVExTIG9yIHBpbm5lZCByZWdz LgotICAgQ29kZU9mZnNldCB3YXNtQ2FsbEltcG9ydChjb25zdCB3YXNtOjpDYWxsU2l0ZURlc2Mm IGRlc2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdhc206OkNhbGxlZURl c2MmIGNhbGxlZSk7Ci0gCi0gICAvLyBXYXNtVGFibGVDYWxsSW5kZXhSZWcgbXVzdCBjb250YWlu IHRoZSBpbmRleCBvZiB0aGUgaW5kaXJlY3QgY2FsbC4KLSAgIENvZGVPZmZzZXQgd2FzbUNhbGxJ bmRpcmVjdChjb25zdCB3YXNtOjpDYWxsU2l0ZURlc2MmIGRlc2MsCi1AQCAtMzczNSw3MiArMzc0 Miw3MiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlclNwZWNp ZmljIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJhc2VJbmRleCYgbWVtLCBSZWdp c3RlciBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIHJlcGxhY2Vt ZW50LCBSZWdpc3RlciBvdXRwdXQpCi0gICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCB4ODZf c2hhcmVkKTsKLSAKLSAgIHZvaWQgY29tcGFyZUV4Y2hhbmdlKFNjYWxhcjo6VHlwZSB0eXBlLCBj b25zdCBTeW5jaHJvbml6YXRpb24mIHN5bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBBZGRyZXNzJiBtZW0sIFJlZ2lzdGVyIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAg ICAgUmVnaXN0ZXIgcmVwbGFjZW1lbnQsIFJlZ2lzdGVyIHZhbHVlVGVtcCwKLSAgICAgICAgICAg ICAgICAgICAgICAgIFJlZ2lzdGVyIG9mZnNldFRlbXAsIFJlZ2lzdGVyIG1hc2tUZW1wLCBSZWdp c3RlciBvdXRwdXQpCi0tICAgICAgREVGSU5FRF9PTihtaXBzX3NoYXJlZCk7Ci0rICAgICAgREVG SU5FRF9PTihtaXBzX3NoYXJlZCwgcHBjNjQpOwotIAotICAgdm9pZCBjb21wYXJlRXhjaGFuZ2Uo U2NhbGFyOjpUeXBlIHR5cGUsIGNvbnN0IFN5bmNocm9uaXphdGlvbiYgc3luYywKLSAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IEJhc2VJbmRleCYgbWVtLCBSZWdpc3RlciBleHBlY3RlZCwK LSAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIHJlcGxhY2VtZW50LCBSZWdpc3RlciB2 YWx1ZVRlbXAsCi0gICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciBvZmZzZXRUZW1wLCBS ZWdpc3RlciBtYXNrVGVtcCwgUmVnaXN0ZXIgb3V0cHV0KQotLSAgICAgIERFRklORURfT04obWlw c19zaGFyZWQpOwotKyAgICAgIERFRklORURfT04obWlwc19zaGFyZWQsIHBwYzY0KTsKLSAKLSAg IC8vIHg4NjogYGV4cGVjdGVkYCBhbmQgYG91dHB1dGAgbXVzdCBiZSBlZHg6ZWF4OyBgcmVwbGFj ZW1lbnRgIGlzIGVjeDplYnguCi0gICAvLyB4NjQ6IGBvdXRwdXRgIG11c3QgYmUgcmF4LgotICAg Ly8gQVJNOiBSZWdpc3RlcnMgbXVzdCBiZSBkaXN0aW5jdDsgYHJlcGxhY2VtZW50YCBhbmQgYG91 dHB1dGAgbXVzdCBiZQotICAgLy8gKGV2ZW4sb2RkKSBwYWlycy4KLSAKLSAgIHZvaWQgY29tcGFy ZUV4Y2hhbmdlNjQoY29uc3QgU3luY2hyb25pemF0aW9uJiBzeW5jLCBjb25zdCBBZGRyZXNzJiBt ZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyNjQgZXhwZWN0ZWQsIFJlZ2lz dGVyNjQgcmVwbGFjZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyNjQg b3V0cHV0KQotLSAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgeDY0LCB4ODYsIG1pcHM2NCk7 Ci0rICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCB4NjQsIHg4NiwgbWlwczY0LCBwcGM2NCk7 Ci0gCi0gICB2b2lkIGNvbXBhcmVFeGNoYW5nZTY0KGNvbnN0IFN5bmNocm9uaXphdGlvbiYgc3lu YywgY29uc3QgQmFzZUluZGV4JiBtZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lz dGVyNjQgZXhwZWN0ZWQsIFJlZ2lzdGVyNjQgcmVwbGFjZW1lbnQsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgIFJlZ2lzdGVyNjQgb3V0cHV0KQotLSAgICAgIERFRklORURfT04oYXJtLCBhcm02 NCwgeDY0LCB4ODYsIG1pcHM2NCk7Ci0rICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCB4NjQs IHg4NiwgbWlwczY0LCBwcGM2NCk7Ci0gCi0gICAvLyBFeGNoYW5nZSB3aXRoIG1lbW9yeS4gIFJl dHVybiB0aGUgdmFsdWUgaW5pdGlhbGx5IGluIG1lbW9yeS4KLSAgIC8vIE1JUFM6IGB2YWx1ZVRl bXBgLCBgb2Zmc2V0VGVtcGAgYW5kIGBtYXNrVGVtcGAgbXVzdCBiZSBkZWZpbmVkIGZvciA4LWJp dAotICAgLy8gYW5kIDE2LWJpdCB3aWRlIG9wZXJhdGlvbnMuCi0gCi0gICB2b2lkIGF0b21pY0V4 Y2hhbmdlKFNjYWxhcjo6VHlwZSB0eXBlLCBjb25zdCBTeW5jaHJvbml6YXRpb24mIHN5bmMsCi0g ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFkZHJlc3MmIG1lbSwgUmVnaXN0ZXIgdmFsdWUs IFJlZ2lzdGVyIG91dHB1dCkKLSAgICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIHg4Nl9zaGFy ZWQpOwotIAotICAgdm9pZCBhdG9taWNFeGNoYW5nZShTY2FsYXI6OlR5cGUgdHlwZSwgY29uc3Qg U3luY2hyb25pemF0aW9uJiBzeW5jLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCYXNl SW5kZXgmIG1lbSwgUmVnaXN0ZXIgdmFsdWUsIFJlZ2lzdGVyIG91dHB1dCkKLSAgICAgICBERUZJ TkVEX09OKGFybSwgYXJtNjQsIHg4Nl9zaGFyZWQpOwotIAotICAgdm9pZCBhdG9taWNFeGNoYW5n ZShTY2FsYXI6OlR5cGUgdHlwZSwgY29uc3QgU3luY2hyb25pemF0aW9uJiBzeW5jLAotICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBBZGRyZXNzJiBtZW0sIFJlZ2lzdGVyIHZhbHVlLCBSZWdp c3RlciB2YWx1ZVRlbXAsCi0gICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIG9mZnNldFRl bXAsIFJlZ2lzdGVyIG1hc2tUZW1wLCBSZWdpc3RlciBvdXRwdXQpCi0tICAgICAgREVGSU5FRF9P TihtaXBzX3NoYXJlZCk7Ci0rICAgICAgREVGSU5FRF9PTihtaXBzX3NoYXJlZCwgcHBjNjQpOwot IAotICAgdm9pZCBhdG9taWNFeGNoYW5nZShTY2FsYXI6OlR5cGUgdHlwZSwgY29uc3QgU3luY2hy b25pemF0aW9uJiBzeW5jLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCYXNlSW5kZXgm IG1lbSwgUmVnaXN0ZXIgdmFsdWUsIFJlZ2lzdGVyIHZhbHVlVGVtcCwKLSAgICAgICAgICAgICAg ICAgICAgICAgUmVnaXN0ZXIgb2Zmc2V0VGVtcCwgUmVnaXN0ZXIgbWFza1RlbXAsIFJlZ2lzdGVy IG91dHB1dCkKLS0gICAgICBERUZJTkVEX09OKG1pcHNfc2hhcmVkKTsKLSsgICAgICBERUZJTkVE X09OKG1pcHNfc2hhcmVkLCBwcGM2NCk7Ci0gCi0gICAvLyB4ODY6IGB2YWx1ZWAgbXVzdCBiZSBl Y3g6ZWJ4OyBgb3V0cHV0YCBtdXN0IGJlIGVkeDplYXguCi0gICAvLyBBUk06IGB2YWx1ZWAgYW5k IGBvdXRwdXRgIG11c3QgYmUgZGlzdGluY3QgYW5kIChldmVuLG9kZCkgcGFpcnMuCi0gICAvLyBB Uk02NDogYHZhbHVlYCBhbmQgYG91dHB1dGAgbXVzdCBiZSBkaXN0aW5jdC4KLSAKLSAgIHZvaWQg YXRvbWljRXhjaGFuZ2U2NChjb25zdCBTeW5jaHJvbml6YXRpb24mIHN5bmMsIGNvbnN0IEFkZHJl c3MmIG1lbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlcjY0IHZhbHVlLCBSZWdp c3RlcjY0IG91dHB1dCkKLS0gICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIHg2NCwgeDg2LCBt aXBzNjQpOwotKyAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgeDY0LCB4ODYsIG1pcHM2NCwg cHBjNjQpOwotIAotICAgdm9pZCBhdG9taWNFeGNoYW5nZTY0KGNvbnN0IFN5bmNocm9uaXphdGlv biYgc3luYywgY29uc3QgQmFzZUluZGV4JiBtZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg UmVnaXN0ZXI2NCB2YWx1ZSwgUmVnaXN0ZXI2NCBvdXRwdXQpCi0tICAgICAgREVGSU5FRF9PTihh cm0sIGFybTY0LCB4NjQsIHg4NiwgbWlwczY0KTsKLSsgICAgICBERUZJTkVEX09OKGFybSwgYXJt NjQsIHg2NCwgeDg2LCBtaXBzNjQsIHBwYzY0KTsKLSAKLSAgIC8vIFJlYWQtbW9kaWZ5LXdyaXRl IHdpdGggbWVtb3J5LiAgUmV0dXJuIHRoZSB2YWx1ZSBpbiBtZW1vcnkgYmVmb3JlIHRoZQotICAg Ly8gb3BlcmF0aW9uLgotICAgLy8KLSAgIC8vIHg4Ni1zaGFyZWQ6Ci0gICAvLyAgIEZvciA4LWJp dCBvcGVyYXRpb25zLCBgdmFsdWVgIGFuZCBgb3V0cHV0YCBtdXN0IGhhdmUgYSBieXRlIHN1YnJl Z2lzdGVyLgotICAgLy8gICBGb3IgQWRkIGFuZCBTdWIsIGB0ZW1wYCBtdXN0IGJlIGludmFsaWQu Ci0gICAvLyAgIEZvciBBbmQsIE9yLCBhbmQgWG9yLCBgb3V0cHV0YCBtdXN0IGJlIGVheCBhbmQg YHRlbXBgIG11c3QgaGF2ZSBhIGJ5dGUKLUBAIC0zODI2LDQ0ICszODMzLDQ0IEBAIGNsYXNzIE1h Y3JvQXNzZW1ibGVyIDogcHVibGljIE1hY3JvQXNzZW1ibGVyU3BlY2lmaWMgewotIAotICAgdm9p ZCBhdG9taWNGZXRjaE9wKFNjYWxhcjo6VHlwZSB0eXBlLCBjb25zdCBTeW5jaHJvbml6YXRpb24m IHN5bmMsCi0gICAgICAgICAgICAgICAgICAgICAgQXRvbWljT3Agb3AsIEltbTMyIHZhbHVlLCBj b25zdCBCYXNlSW5kZXgmIG1lbSwKLSAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciB0ZW1w LCBSZWdpc3RlciBvdXRwdXQpIERFRklORURfT04oeDg2X3NoYXJlZCk7Ci0gCi0gICB2b2lkIGF0 b21pY0ZldGNoT3AoU2NhbGFyOjpUeXBlIHR5cGUsIGNvbnN0IFN5bmNocm9uaXphdGlvbiYgc3lu YywKLSAgICAgICAgICAgICAgICAgICAgICBBdG9taWNPcCBvcCwgUmVnaXN0ZXIgdmFsdWUsIGNv bnN0IEFkZHJlc3MmIG1lbSwKLSAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciB2YWx1ZVRl bXAsIFJlZ2lzdGVyIG9mZnNldFRlbXAsIFJlZ2lzdGVyIG1hc2tUZW1wLAotLSAgICAgICAgICAg ICAgICAgICAgIFJlZ2lzdGVyIG91dHB1dCkgREVGSU5FRF9PTihtaXBzX3NoYXJlZCk7Ci0rICAg ICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgb3V0cHV0KSBERUZJTkVEX09OKG1pcHNfc2hhcmVk LCBwcGM2NCk7Ci0gCi0gICB2b2lkIGF0b21pY0ZldGNoT3AoU2NhbGFyOjpUeXBlIHR5cGUsIGNv bnN0IFN5bmNocm9uaXphdGlvbiYgc3luYywKLSAgICAgICAgICAgICAgICAgICAgICBBdG9taWNP cCBvcCwgUmVnaXN0ZXIgdmFsdWUsIGNvbnN0IEJhc2VJbmRleCYgbWVtLAotICAgICAgICAgICAg ICAgICAgICAgIFJlZ2lzdGVyIHZhbHVlVGVtcCwgUmVnaXN0ZXIgb2Zmc2V0VGVtcCwgUmVnaXN0 ZXIgbWFza1RlbXAsCi0tICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgb3V0cHV0KSBERUZJ TkVEX09OKG1pcHNfc2hhcmVkKTsKLSsgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciBvdXRw dXQpIERFRklORURfT04obWlwc19zaGFyZWQsIHBwYzY0KTsKLSAKLSAgIC8vIHg4NjoKLSAgIC8v ICAgYHRlbXBgIG11c3QgYmUgZWN4OmVieDsgYG91dHB1dGAgbXVzdCBiZSBlZHg6ZWF4LgotICAg Ly8geDY0OgotICAgLy8gICBGb3IgQWRkIGFuZCBTdWIsIGB0ZW1wYCBpcyBpZ25vcmVkLgotICAg Ly8gICBGb3IgQW5kLCBPciwgYW5kIFhvciwgYG91dHB1dGAgbXVzdCBiZSByYXguCi0gICAvLyBB Uk06Ci0gICAvLyAgIGB0ZW1wYCBhbmQgYG91dHB1dGAgbXVzdCBiZSAoZXZlbixvZGQpIHBhaXJz IGFuZCBkaXN0aW5jdCBmcm9tIGB2YWx1ZWAuCi0gICAvLyBBUk02NDoKLSAgIC8vICAgUmVnaXN0 ZXJzIGB2YWx1ZWAsIGB0ZW1wYCwgYW5kIGBvdXRwdXRgIG11c3QgYWxsIGRpZmZlci4KLSAKLSAg IHZvaWQgYXRvbWljRmV0Y2hPcDY0KGNvbnN0IFN5bmNocm9uaXphdGlvbiYgc3luYywgQXRvbWlj T3Agb3AsCi0gICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlcjY0IHZhbHVlLCBjb25zdCBB ZGRyZXNzJiBtZW0sIFJlZ2lzdGVyNjQgdGVtcCwKLS0gICAgICAgICAgICAgICAgICAgICAgIFJl Z2lzdGVyNjQgb3V0cHV0KSBERUZJTkVEX09OKGFybSwgYXJtNjQsIHg2NCwgbWlwczY0KTsKLSsg ICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyNjQgb3V0cHV0KSBERUZJTkVEX09OKGFybSwg YXJtNjQsIHg2NCwgbWlwczY0LCBwcGM2NCk7Ci0gCi0gICB2b2lkIGF0b21pY0ZldGNoT3A2NChj b25zdCBTeW5jaHJvbml6YXRpb24mIHN5bmMsIEF0b21pY09wIG9wLAotICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgQWRkcmVzcyYgdmFsdWUsIGNvbnN0IEFkZHJlc3MmIG1lbSwKLSAgICAg ICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyNjQgdGVtcCwgUmVnaXN0ZXI2NCBvdXRwdXQpIERF RklORURfT04oeDg2KTsKLSAKLSAgIHZvaWQgYXRvbWljRmV0Y2hPcDY0KGNvbnN0IFN5bmNocm9u aXphdGlvbiYgc3luYywgQXRvbWljT3Agb3AsCi0gICAgICAgICAgICAgICAgICAgICAgICBSZWdp c3RlcjY0IHZhbHVlLCBjb25zdCBCYXNlSW5kZXgmIG1lbSwgUmVnaXN0ZXI2NCB0ZW1wLAotLSAg ICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXI2NCBvdXRwdXQpIERFRklORURfT04oYXJtLCBh cm02NCwgeDY0LCBtaXBzNjQpOwotKyAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXI2NCBv dXRwdXQpIERFRklORURfT04oYXJtLCBhcm02NCwgeDY0LCBtaXBzNjQsIHBwYzY0KTsKLSAKLSAg IHZvaWQgYXRvbWljRmV0Y2hPcDY0KGNvbnN0IFN5bmNocm9uaXphdGlvbiYgc3luYywgQXRvbWlj T3Agb3AsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBZGRyZXNzJiB2YWx1ZSwgY29u c3QgQmFzZUluZGV4JiBtZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlcjY0IHRl bXAsIFJlZ2lzdGVyNjQgb3V0cHV0KSBERUZJTkVEX09OKHg4Nik7Ci0gCi0gICAvLyB4NjQ6Ci0g ICAvLyAgIGB2YWx1ZWAgY2FuIGJlIGFueSByZWdpc3Rlci4KLSAgIC8vIEFSTToKLUBAIC0zODcx LDI0ICszODc4LDI0IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyIDogcHVibGljIE1hY3JvQXNzZW1i bGVyU3BlY2lmaWMgewotICAgLy8gQVJNNjQ6Ci0gICAvLyAgIFJlZ2lzdGVycyBgdmFsdWVgIGFu ZCBgdGVtcGAgbXVzdCBkaWZmZXIuCi0gCi0gICB2b2lkIGF0b21pY0VmZmVjdE9wNjQoY29uc3Qg U3luY2hyb25pemF0aW9uJiBzeW5jLCBBdG9taWNPcCBvcCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICBSZWdpc3RlcjY0IHZhbHVlLCBjb25zdCBBZGRyZXNzJiBtZW0pIERFRklORURfT04oeDY0 KTsKLSAKLSAgIHZvaWQgYXRvbWljRWZmZWN0T3A2NChjb25zdCBTeW5jaHJvbml6YXRpb24mIHN5 bmMsIEF0b21pY09wIG9wLAotICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyNjQgdmFs dWUsIGNvbnN0IEFkZHJlc3MmIG1lbSwgUmVnaXN0ZXI2NCB0ZW1wKQotLSAgICAgIERFRklORURf T04oYXJtLCBhcm02NCwgbWlwczY0KTsKLSsgICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1p cHM2NCwgcHBjNjQpOwotIAotICAgdm9pZCBhdG9taWNFZmZlY3RPcDY0KGNvbnN0IFN5bmNocm9u aXphdGlvbiYgc3luYywgQXRvbWljT3Agb3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUmVn aXN0ZXI2NCB2YWx1ZSwgY29uc3QgQmFzZUluZGV4JiBtZW0pIERFRklORURfT04oeDY0KTsKLSAK LSAgIHZvaWQgYXRvbWljRWZmZWN0T3A2NChjb25zdCBTeW5jaHJvbml6YXRpb24mIHN5bmMsIEF0 b21pY09wIG9wLAotICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyNjQgdmFsdWUsIGNv bnN0IEJhc2VJbmRleCYgbWVtLCBSZWdpc3RlcjY0IHRlbXApCi0tICAgICAgREVGSU5FRF9PTihh cm0sIGFybTY0LCBtaXBzNjQpOwotKyAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwczY0 LCBwcGM2NCk7Ci0gCi0gICAvLyA2NC1iaXQgYXRvbWljIGxvYWQuIE9uIDY0LWJpdCBzeXN0ZW1z LCB1c2UgcmVndWxhciBsb2FkIHdpdGgKLSAgIC8vIFN5bmNocm9uaXphdGlvbjo6TG9hZCwgbm90 IHRoaXMgbWV0aG9kLgotICAgLy8KLSAgIC8vIHg4NjogYHRlbXBgIG11c3QgYmUgZWN4OmVieDsg YG91dHB1dGAgbXVzdCBiZSBlZHg6ZWF4LgotICAgLy8gQVJNOiBgb3V0cHV0YCBtdXN0IGJlIChl dmVuLG9kZCkgcGFpci4KLSAKLSAgIHZvaWQgYXRvbWljTG9hZDY0KGNvbnN0IFN5bmNocm9uaXph dGlvbiYgc3luYywgY29uc3QgQWRkcmVzcyYgbWVtLAotQEAgLTM5MzAsNDMgKzM5MzcsNDMgQEAg Y2xhc3MgTWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJTcGVjaWZpYyB7Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQmFzZUluZGV4JiBtZW0sIFJlZ2lzdGVy IGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIHJlcGxhY2Vt ZW50LCBSZWdpc3RlciBvdXRwdXQpCi0gICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCB4ODZf c2hhcmVkKTsKLSAKLSAgIHZvaWQgd2FzbUNvbXBhcmVFeGNoYW5nZShjb25zdCB3YXNtOjpNZW1v cnlBY2Nlc3NEZXNjJiBhY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg QWRkcmVzcyYgbWVtLCBSZWdpc3RlciBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICBSZWdpc3RlciByZXBsYWNlbWVudCwgUmVnaXN0ZXIgdmFsdWVUZW1wLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIG9mZnNldFRlbXAsIFJlZ2lzdGVyIG1hc2tUZW1w LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIG91dHB1dCkgREVGSU5FRF9P TihtaXBzX3NoYXJlZCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgb3V0 cHV0KSBERUZJTkVEX09OKG1pcHNfc2hhcmVkLCBwcGM2NCk7Ci0gCi0gICB2b2lkIHdhc21Db21w YXJlRXhjaGFuZ2UoY29uc3Qgd2FzbTo6TWVtb3J5QWNjZXNzRGVzYyYgYWNjZXNzLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJhc2VJbmRleCYgbWVtLCBSZWdpc3RlciBleHBl Y3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciByZXBsYWNlbWVudCwg UmVnaXN0ZXIgdmFsdWVUZW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVy IG9mZnNldFRlbXAsIFJlZ2lzdGVyIG1hc2tUZW1wLAotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgIFJlZ2lzdGVyIG91dHB1dCkgREVGSU5FRF9PTihtaXBzX3NoYXJlZCk7Ci0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgb3V0cHV0KSBERUZJTkVEX09OKG1pcHNfc2hhcmVk LCBwcGM2NCk7Ci0gCi0gICB2b2lkIHdhc21BdG9taWNFeGNoYW5nZShjb25zdCB3YXNtOjpNZW1v cnlBY2Nlc3NEZXNjJiBhY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBB ZGRyZXNzJiBtZW0sIFJlZ2lzdGVyIHZhbHVlLCBSZWdpc3RlciBvdXRwdXQpCi0gICAgICAgREVG SU5FRF9PTihhcm0sIGFybTY0LCB4ODZfc2hhcmVkKTsKLSAKLSAgIHZvaWQgd2FzbUF0b21pY0V4 Y2hhbmdlKGNvbnN0IHdhc206Ok1lbW9yeUFjY2Vzc0Rlc2MmIGFjY2VzcywKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IEJhc2VJbmRleCYgbWVtLCBSZWdpc3RlciB2YWx1ZSwgUmVn aXN0ZXIgb3V0cHV0KQotICAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgeDg2X3NoYXJlZCk7 Ci0gCi0gICB2b2lkIHdhc21BdG9taWNFeGNoYW5nZShjb25zdCB3YXNtOjpNZW1vcnlBY2Nlc3NE ZXNjJiBhY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBZGRyZXNzJiBt ZW0sIFJlZ2lzdGVyIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIg dmFsdWVUZW1wLCBSZWdpc3RlciBvZmZzZXRUZW1wLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgUmVnaXN0ZXIgbWFza1RlbXAsIFJlZ2lzdGVyIG91dHB1dCkKLS0gICAgICBERUZJTkVEX09O KG1pcHNfc2hhcmVkKTsKLSsgICAgICBERUZJTkVEX09OKG1pcHNfc2hhcmVkLCBwcGM2NCk7Ci0g Ci0gICB2b2lkIHdhc21BdG9taWNFeGNoYW5nZShjb25zdCB3YXNtOjpNZW1vcnlBY2Nlc3NEZXNj JiBhY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCYXNlSW5kZXgmIG1l bSwgUmVnaXN0ZXIgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciB2 YWx1ZVRlbXAsIFJlZ2lzdGVyIG9mZnNldFRlbXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICBSZWdpc3RlciBtYXNrVGVtcCwgUmVnaXN0ZXIgb3V0cHV0KQotLSAgICAgIERFRklORURfT04o bWlwc19zaGFyZWQpOwotKyAgICAgIERFRklORURfT04obWlwc19zaGFyZWQsIHBwYzY0KTsKLSAK LSAgIHZvaWQgd2FzbUF0b21pY0ZldGNoT3AoY29uc3Qgd2FzbTo6TWVtb3J5QWNjZXNzRGVzYyYg YWNjZXNzLCBBdG9taWNPcCBvcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIg dmFsdWUsIGNvbnN0IEFkZHJlc3MmIG1lbSwgUmVnaXN0ZXIgdGVtcCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgUmVnaXN0ZXIgb3V0cHV0KSBERUZJTkVEX09OKGFybSwgYXJtNjQsIHg4Nl9z aGFyZWQpOwotIAotICAgdm9pZCB3YXNtQXRvbWljRmV0Y2hPcChjb25zdCB3YXNtOjpNZW1vcnlB Y2Nlc3NEZXNjJiBhY2Nlc3MsIEF0b21pY09wIG9wLAotICAgICAgICAgICAgICAgICAgICAgICAg ICBJbW0zMiB2YWx1ZSwgY29uc3QgQWRkcmVzcyYgbWVtLCBSZWdpc3RlciB0ZW1wLAotICAgICAg ICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciBvdXRwdXQpIERFRklORURfT04oeDg2X3NoYXJl ZCk7Ci1AQCAtMzk3NywyMyArMzk4NCwyMyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlciA6IHB1Ymxp YyBNYWNyb0Fzc2VtYmxlclNwZWNpZmljIHsKLSAKLSAgIHZvaWQgd2FzbUF0b21pY0ZldGNoT3Ao Y29uc3Qgd2FzbTo6TWVtb3J5QWNjZXNzRGVzYyYgYWNjZXNzLCBBdG9taWNPcCBvcCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgSW1tMzIgdmFsdWUsIGNvbnN0IEJhc2VJbmRleCYgbWVtLCBS ZWdpc3RlciB0ZW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciBvdXRwdXQp IERFRklORURfT04oeDg2X3NoYXJlZCk7Ci0gCi0gICB2b2lkIHdhc21BdG9taWNGZXRjaE9wKGNv bnN0IHdhc206Ok1lbW9yeUFjY2Vzc0Rlc2MmIGFjY2VzcywgQXRvbWljT3Agb3AsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIHZhbHVlLCBjb25zdCBBZGRyZXNzJiBtZW0sIFJl Z2lzdGVyIHZhbHVlVGVtcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgb2Zm c2V0VGVtcCwgUmVnaXN0ZXIgbWFza1RlbXAsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIFJl Z2lzdGVyIG91dHB1dCkgREVGSU5FRF9PTihtaXBzX3NoYXJlZCk7Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgIFJlZ2lzdGVyIG91dHB1dCkgREVGSU5FRF9PTihtaXBzX3NoYXJlZCwgcHBjNjQp OwotIAotICAgdm9pZCB3YXNtQXRvbWljRmV0Y2hPcChjb25zdCB3YXNtOjpNZW1vcnlBY2Nlc3NE ZXNjJiBhY2Nlc3MsIEF0b21pY09wIG9wLAotICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdp c3RlciB2YWx1ZSwgY29uc3QgQmFzZUluZGV4JiBtZW0sCi0gICAgICAgICAgICAgICAgICAgICAg ICAgIFJlZ2lzdGVyIHZhbHVlVGVtcCwgUmVnaXN0ZXIgb2Zmc2V0VGVtcCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgUmVnaXN0ZXIgbWFza1RlbXAsIFJlZ2lzdGVyIG91dHB1dCkKLS0gICAg ICBERUZJTkVEX09OKG1pcHNfc2hhcmVkKTsKLSsgICAgICBERUZJTkVEX09OKG1pcHNfc2hhcmVk LCBwcGM2NCk7Ci0gCi0gICAvLyBSZWFkLW1vZGlmeS13cml0ZSB3aXRoIG1lbW9yeS4gIFJldHVy biBubyB2YWx1ZS4KLSAgIC8vCi0gICAvLyBNSVBTOiBgdmFsdWVUZW1wYCwgYG9mZnNldFRlbXBg IGFuZCBgbWFza1RlbXBgIG11c3QgYmUgZGVmaW5lZCBmb3IgOC1iaXQKLSAgIC8vIGFuZCAxNi1i aXQgd2lkZSBvcGVyYXRpb25zLgotIAotICAgdm9pZCB3YXNtQXRvbWljRWZmZWN0T3AoY29uc3Qg d2FzbTo6TWVtb3J5QWNjZXNzRGVzYyYgYWNjZXNzLCBBdG9taWNPcCBvcCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgIFJlZ2lzdGVyIHZhbHVlLCBjb25zdCBBZGRyZXNzJiBtZW0sIFJlZ2lz dGVyIHRlbXApCi1AQCAtNDAwOSwyMiArNDAxNiwyMiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlciA6 IHB1YmxpYyBNYWNyb0Fzc2VtYmxlclNwZWNpZmljIHsKLSAKLSAgIHZvaWQgd2FzbUF0b21pY0Vm ZmVjdE9wKGNvbnN0IHdhc206Ok1lbW9yeUFjY2Vzc0Rlc2MmIGFjY2VzcywgQXRvbWljT3Agb3As Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBJbW0zMiB2YWx1ZSwgY29uc3QgQmFzZUluZGV4 JiBtZW0sIFJlZ2lzdGVyIHRlbXApCi0gICAgICAgREVGSU5FRF9PTih4ODZfc2hhcmVkKTsKLSAK LSAgIHZvaWQgd2FzbUF0b21pY0VmZmVjdE9wKGNvbnN0IHdhc206Ok1lbW9yeUFjY2Vzc0Rlc2Mm IGFjY2VzcywgQXRvbWljT3Agb3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3Rl ciB2YWx1ZSwgY29uc3QgQWRkcmVzcyYgbWVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg UmVnaXN0ZXIgdmFsdWVUZW1wLCBSZWdpc3RlciBvZmZzZXRUZW1wLAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgUmVnaXN0ZXIgbWFza1RlbXApIERFRklORURfT04obWlwc19zaGFyZWQpOwot KyAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgbWFza1RlbXApIERFRklORURfT04o bWlwc19zaGFyZWQsIHBwYzY0KTsKLSAKLSAgIHZvaWQgd2FzbUF0b21pY0VmZmVjdE9wKGNvbnN0 IHdhc206Ok1lbW9yeUFjY2Vzc0Rlc2MmIGFjY2VzcywgQXRvbWljT3Agb3AsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICBSZWdpc3RlciB2YWx1ZSwgY29uc3QgQmFzZUluZGV4JiBtZW0sCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciB2YWx1ZVRlbXAsIFJlZ2lzdGVyIG9m ZnNldFRlbXAsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciBtYXNrVGVtcCkg REVGSU5FRF9PTihtaXBzX3NoYXJlZCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdp c3RlciBtYXNrVGVtcCkgREVGSU5FRF9PTihtaXBzX3NoYXJlZCwgcHBjNjQpOwotIAotICAgLy8g NjQtYml0IHdpZGUgb3BlcmF0aW9ucy4KLSAKLSAgIC8vIDY0LWJpdCBhdG9taWMgbG9hZC4gIE9u IDY0LWJpdCBzeXN0ZW1zLCB1c2UgcmVndWxhciB3YXNtIGxvYWQgd2l0aAotICAgLy8gU3luY2hy b25pemF0aW9uOjpMb2FkLCBub3QgdGhpcyBtZXRob2QuCi0gICAvLwotICAgLy8geDg2OiBgdGVt cGAgbXVzdCBiZSBlY3g6ZWJ4OyBgb3V0cHV0YCBtdXN0IGJlIGVkeDplYXguCi0gICAvLyBBUk06 IGB0ZW1wYCBzaG91bGQgYmUgaW52YWxpZDsgYG91dHB1dGAgbXVzdCBiZSAoZXZlbixvZGQpIHBh aXIuCi1AQCAtNDA3NCwyMiArNDA4MSwyMiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlciA6IHB1Ymxp YyBNYWNyb0Fzc2VtYmxlclNwZWNpZmljIHsKLSAgIC8vIEFSTTogUmVnaXN0ZXJzIG11c3QgYmUg ZGlzdGluY3Q7IGB0ZW1wYCBhbmQgYG91dHB1dGAgbXVzdCBiZSAoZXZlbixvZGQpCi0gICAvLyBw YWlycy4KLSAgIC8vIE1JUFM6IFJlZ2lzdGVycyBtdXN0IGJlIGRpc3RpbmN0LgotICAgLy8gTUlQ UzMyOiBgdGVtcGAgc2hvdWxkIGJlIGludmFsaWQuCi0gCi0gICB2b2lkIHdhc21BdG9taWNGZXRj aE9wNjQoY29uc3Qgd2FzbTo6TWVtb3J5QWNjZXNzRGVzYyYgYWNjZXNzLCBBdG9taWNPcCBvcCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlcjY0IHZhbHVlLCBjb25zdCBBZGRy ZXNzJiBtZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXI2NCB0ZW1wLCBS ZWdpc3RlcjY0IG91dHB1dCkKLS0gICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHMzMiwg bWlwczY0LCB4NjQpOwotKyAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwczMyLCBtaXBz NjQsIHg2NCwgcHBjNjQpOwotIAotICAgdm9pZCB3YXNtQXRvbWljRmV0Y2hPcDY0KGNvbnN0IHdh c206Ok1lbW9yeUFjY2Vzc0Rlc2MmIGFjY2VzcywgQXRvbWljT3Agb3AsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgUmVnaXN0ZXI2NCB2YWx1ZSwgY29uc3QgQmFzZUluZGV4JiBtZW0sCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXI2NCB0ZW1wLCBSZWdpc3RlcjY0IG91 dHB1dCkKLS0gICAgICBERUZJTkVEX09OKGFybSwgYXJtNjQsIG1pcHMzMiwgbWlwczY0LCB4NjQp OwotKyAgICAgIERFRklORURfT04oYXJtLCBhcm02NCwgbWlwczMyLCBtaXBzNjQsIHg2NCwgcHBj NjQpOwotIAotICAgdm9pZCB3YXNtQXRvbWljRmV0Y2hPcDY0KGNvbnN0IHdhc206Ok1lbW9yeUFj Y2Vzc0Rlc2MmIGFjY2VzcywgQXRvbWljT3Agb3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgQWRkcmVzcyYgdmFsdWUsIGNvbnN0IEFkZHJlc3MmIG1lbSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICBSZWdpc3RlcjY0IHRlbXAsIFJlZ2lzdGVyNjQgb3V0cHV0KSBERUZJ TkVEX09OKHg4Nik7Ci0gCi0gICB2b2lkIHdhc21BdG9taWNGZXRjaE9wNjQoY29uc3Qgd2FzbTo6 TWVtb3J5QWNjZXNzRGVzYyYgYWNjZXNzLCBBdG9taWNPcCBvcCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBBZGRyZXNzJiB2YWx1ZSwgY29uc3QgQmFzZUluZGV4JiBtZW0sCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXI2NCB0ZW1wLCBSZWdpc3RlcjY0IG91 dHB1dCkgREVGSU5FRF9PTih4ODYpOwotQEAgLTQxMzEsNDIgKzQxMzgsNDIgQEAgY2xhc3MgTWFj cm9Bc3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJTcGVjaWZpYyB7Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IEJhc2VJbmRleCYgbWVtLCBSZWdpc3RlciBleHBlY3RlZCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgcmVwbGFjZW1lbnQsIFJlZ2lzdGVy IHRlbXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEFueVJlZ2lzdGVyIG91dHB1dCkgREVG SU5FRF9PTihhcm0sIGFybTY0LCB4ODZfc2hhcmVkKTsKLSAKLSAgIHZvaWQgY29tcGFyZUV4Y2hh bmdlSlMoU2NhbGFyOjpUeXBlIGFycmF5VHlwZSwgY29uc3QgU3luY2hyb25pemF0aW9uJiBzeW5j LAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBZGRyZXNzJiBtZW0sIFJlZ2lzdGVy IGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciByZXBsYWNlbWVu dCwgUmVnaXN0ZXIgdmFsdWVUZW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3Rl ciBvZmZzZXRUZW1wLCBSZWdpc3RlciBtYXNrVGVtcCwgUmVnaXN0ZXIgdGVtcCwKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgQW55UmVnaXN0ZXIgb3V0cHV0KSBERUZJTkVEX09OKG1pcHNfc2hh cmVkKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgQW55UmVnaXN0ZXIgb3V0cHV0KSBERUZJ TkVEX09OKG1pcHNfc2hhcmVkLCBwcGM2NCk7Ci0gCi0gICB2b2lkIGNvbXBhcmVFeGNoYW5nZUpT KFNjYWxhcjo6VHlwZSBhcnJheVR5cGUsIGNvbnN0IFN5bmNocm9uaXphdGlvbiYgc3luYywKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQmFzZUluZGV4JiBtZW0sIFJlZ2lzdGVyIGV4 cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciByZXBsYWNlbWVudCwg UmVnaXN0ZXIgdmFsdWVUZW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciBv ZmZzZXRUZW1wLCBSZWdpc3RlciBtYXNrVGVtcCwgUmVnaXN0ZXIgdGVtcCwKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgQW55UmVnaXN0ZXIgb3V0cHV0KSBERUZJTkVEX09OKG1pcHNfc2hhcmVk KTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgQW55UmVnaXN0ZXIgb3V0cHV0KSBERUZJTkVE X09OKG1pcHNfc2hhcmVkLCBwcGM2NCk7Ci0gCi0gICB2b2lkIGF0b21pY0V4Y2hhbmdlSlMoU2Nh bGFyOjpUeXBlIGFycmF5VHlwZSwgY29uc3QgU3luY2hyb25pemF0aW9uJiBzeW5jLAotICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IEFkZHJlc3MmIG1lbSwgUmVnaXN0ZXIgdmFsdWUsIFJl Z2lzdGVyIHRlbXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgQW55UmVnaXN0ZXIgb3V0cHV0 KSBERUZJTkVEX09OKGFybSwgYXJtNjQsIHg4Nl9zaGFyZWQpOwotIAotICAgdm9pZCBhdG9taWNF eGNoYW5nZUpTKFNjYWxhcjo6VHlwZSBhcnJheVR5cGUsIGNvbnN0IFN5bmNocm9uaXphdGlvbiYg c3luYywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCYXNlSW5kZXgmIG1lbSwgUmVn aXN0ZXIgdmFsdWUsIFJlZ2lzdGVyIHRlbXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgQW55 UmVnaXN0ZXIgb3V0cHV0KSBERUZJTkVEX09OKGFybSwgYXJtNjQsIHg4Nl9zaGFyZWQpOwotIAot ICAgdm9pZCBhdG9taWNFeGNoYW5nZUpTKFNjYWxhcjo6VHlwZSBhcnJheVR5cGUsIGNvbnN0IFN5 bmNocm9uaXphdGlvbiYgc3luYywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBZGRy ZXNzJiBtZW0sIFJlZ2lzdGVyIHZhbHVlLCBSZWdpc3RlciB2YWx1ZVRlbXAsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgUmVnaXN0ZXIgb2Zmc2V0VGVtcCwgUmVnaXN0ZXIgbWFza1RlbXAsIFJl Z2lzdGVyIHRlbXAsCi0tICAgICAgICAgICAgICAgICAgICAgICAgQW55UmVnaXN0ZXIgb3V0cHV0 KSBERUZJTkVEX09OKG1pcHNfc2hhcmVkKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBBbnlS ZWdpc3RlciBvdXRwdXQpIERFRklORURfT04obWlwc19zaGFyZWQsIHBwYzY0KTsKLSAKLSAgIHZv aWQgYXRvbWljRXhjaGFuZ2VKUyhTY2FsYXI6OlR5cGUgYXJyYXlUeXBlLCBjb25zdCBTeW5jaHJv bml6YXRpb24mIHN5bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQmFzZUluZGV4 JiBtZW0sIFJlZ2lzdGVyIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVy IHZhbHVlVGVtcCwgUmVnaXN0ZXIgb2Zmc2V0VGVtcCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICBSZWdpc3RlciBtYXNrVGVtcCwgUmVnaXN0ZXIgdGVtcCwgQW55UmVnaXN0ZXIgb3V0cHV0KQot LSAgICAgIERFRklORURfT04obWlwc19zaGFyZWQpOwotKyAgICAgIERFRklORURfT04obWlwc19z aGFyZWQsIHBwYzY0KTsKLSAKLSAgIHZvaWQgYXRvbWljRmV0Y2hPcEpTKFNjYWxhcjo6VHlwZSBh cnJheVR5cGUsIGNvbnN0IFN5bmNocm9uaXphdGlvbiYgc3luYywKLSAgICAgICAgICAgICAgICAg ICAgICAgIEF0b21pY09wIG9wLCBSZWdpc3RlciB2YWx1ZSwgY29uc3QgQWRkcmVzcyYgbWVtLAot ICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgdGVtcDEsIFJlZ2lzdGVyIHRlbXAyLCBB bnlSZWdpc3RlciBvdXRwdXQpCi0gICAgICAgREVGSU5FRF9PTihhcm0sIGFybTY0LCB4ODZfc2hh cmVkKTsKLSAKLSAgIHZvaWQgYXRvbWljRmV0Y2hPcEpTKFNjYWxhcjo6VHlwZSBhcnJheVR5cGUs IGNvbnN0IFN5bmNocm9uaXphdGlvbiYgc3luYywKLSAgICAgICAgICAgICAgICAgICAgICAgIEF0 b21pY09wIG9wLCBSZWdpc3RlciB2YWx1ZSwgY29uc3QgQmFzZUluZGV4JiBtZW0sCi1AQCAtNDE4 MiwyMyArNDE4OSwyMyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2Vt YmxlclNwZWNpZmljIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEF0b21pY09wIG9wLCBJbW0z MiB2YWx1ZSwgY29uc3QgQmFzZUluZGV4JiBtZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICBS ZWdpc3RlciB0ZW1wMSwgUmVnaXN0ZXIgdGVtcDIsIEFueVJlZ2lzdGVyIG91dHB1dCkKLSAgICAg ICBERUZJTkVEX09OKHg4Nl9zaGFyZWQpOwotIAotICAgdm9pZCBhdG9taWNGZXRjaE9wSlMoU2Nh bGFyOjpUeXBlIGFycmF5VHlwZSwgY29uc3QgU3luY2hyb25pemF0aW9uJiBzeW5jLAotICAgICAg ICAgICAgICAgICAgICAgICAgQXRvbWljT3Agb3AsIFJlZ2lzdGVyIHZhbHVlLCBjb25zdCBBZGRy ZXNzJiBtZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciB2YWx1ZVRlbXAsIFJl Z2lzdGVyIG9mZnNldFRlbXAsCi0gICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciBtYXNr VGVtcCwgUmVnaXN0ZXIgdGVtcCwgQW55UmVnaXN0ZXIgb3V0cHV0KQotLSAgICAgIERFRklORURf T04obWlwc19zaGFyZWQpOwotKyAgICAgIERFRklORURfT04obWlwc19zaGFyZWQsIHBwYzY0KTsK LSAKLSAgIHZvaWQgYXRvbWljRmV0Y2hPcEpTKFNjYWxhcjo6VHlwZSBhcnJheVR5cGUsIGNvbnN0 IFN5bmNocm9uaXphdGlvbiYgc3luYywKLSAgICAgICAgICAgICAgICAgICAgICAgIEF0b21pY09w IG9wLCBSZWdpc3RlciB2YWx1ZSwgY29uc3QgQmFzZUluZGV4JiBtZW0sCi0gICAgICAgICAgICAg ICAgICAgICAgICBSZWdpc3RlciB2YWx1ZVRlbXAsIFJlZ2lzdGVyIG9mZnNldFRlbXAsCi0gICAg ICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciBtYXNrVGVtcCwgUmVnaXN0ZXIgdGVtcCwgQW55 UmVnaXN0ZXIgb3V0cHV0KQotLSAgICAgIERFRklORURfT04obWlwc19zaGFyZWQpOwotKyAgICAg IERFRklORURfT04obWlwc19zaGFyZWQsIHBwYzY0KTsKLSAKLSAgIHZvaWQgYXRvbWljRWZmZWN0 T3BKUyhTY2FsYXI6OlR5cGUgYXJyYXlUeXBlLCBjb25zdCBTeW5jaHJvbml6YXRpb24mIHN5bmMs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgQXRvbWljT3Agb3AsIFJlZ2lzdGVyIHZhbHVlLCBj b25zdCBBZGRyZXNzJiBtZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgdGVt cCkgREVGSU5FRF9PTihhcm0sIGFybTY0LCB4ODZfc2hhcmVkKTsKLSAKLSAgIHZvaWQgYXRvbWlj RWZmZWN0T3BKUyhTY2FsYXI6OlR5cGUgYXJyYXlUeXBlLCBjb25zdCBTeW5jaHJvbml6YXRpb24m IHN5bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgQXRvbWljT3Agb3AsIFJlZ2lzdGVyIHZh bHVlLCBjb25zdCBCYXNlSW5kZXgmIG1lbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBSZWdp c3RlciB0ZW1wKSBERUZJTkVEX09OKGFybSwgYXJtNjQsIHg4Nl9zaGFyZWQpOwotQEAgLTQyMDks MjIgKzQyMTYsMjIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJs ZXJTcGVjaWZpYyB7Ci0gCi0gICB2b2lkIGF0b21pY0VmZmVjdE9wSlMoU2NhbGFyOjpUeXBlIGFy cmF5VHlwZSwgY29uc3QgU3luY2hyb25pemF0aW9uJiBzeW5jLAotICAgICAgICAgICAgICAgICAg ICAgICAgIEF0b21pY09wIG9wLCBJbW0zMiB2YWx1ZSwgY29uc3QgQmFzZUluZGV4JiBtZW0sCi0g ICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgdGVtcCkgREVGSU5FRF9PTih4ODZfc2hh cmVkKTsKLSAKLSAgIHZvaWQgYXRvbWljRWZmZWN0T3BKUyhTY2FsYXI6OlR5cGUgYXJyYXlUeXBl LCBjb25zdCBTeW5jaHJvbml6YXRpb24mIHN5bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg QXRvbWljT3Agb3AsIFJlZ2lzdGVyIHZhbHVlLCBjb25zdCBBZGRyZXNzJiBtZW0sCi0gICAgICAg ICAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgdmFsdWVUZW1wLCBSZWdpc3RlciBvZmZzZXRUZW1w LAotLSAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIG1hc2tUZW1wKSBERUZJTkVEX09O KG1pcHNfc2hhcmVkKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlciBtYXNrVGVt cCkgREVGSU5FRF9PTihtaXBzX3NoYXJlZCwgcHBjNjQpOwotIAotICAgdm9pZCBhdG9taWNFZmZl Y3RPcEpTKFNjYWxhcjo6VHlwZSBhcnJheVR5cGUsIGNvbnN0IFN5bmNocm9uaXphdGlvbiYgc3lu YywKLSAgICAgICAgICAgICAgICAgICAgICAgICBBdG9taWNPcCBvcCwgUmVnaXN0ZXIgdmFsdWUs IGNvbnN0IEJhc2VJbmRleCYgbWVtLAotICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVy IHZhbHVlVGVtcCwgUmVnaXN0ZXIgb2Zmc2V0VGVtcCwKLS0gICAgICAgICAgICAgICAgICAgICAg ICBSZWdpc3RlciBtYXNrVGVtcCkgREVGSU5FRF9PTihtaXBzX3NoYXJlZCk7Ci0rICAgICAgICAg ICAgICAgICAgICAgICAgUmVnaXN0ZXIgbWFza1RlbXApIERFRklORURfT04obWlwc19zaGFyZWQs IHBwYzY0KTsKLSAKLSAgIHZvaWQgYXRvbWljSXNMb2NrRnJlZUpTKFJlZ2lzdGVyIHZhbHVlLCBS ZWdpc3RlciBvdXRwdXQpOwotIAotICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAvLyBTcGVjdHJl IE1pdGlnYXRpb25zLgotICAgLy8KLSAgIC8vIFNwZWN0cmUgYXR0YWNrcyBhcmUgc2lkZS1jaGFu bmVsIGF0dGFja3MgYmFzZWQgb24gY2FjaGUgcG9sbHV0aW9uIG9yCi0gICAvLyBzbG93LWV4ZWN1 dGlvbiBvZiBzb21lIGluc3RydWN0aW9ucy4gV2UgaGF2ZSBtdWx0aXBsZSBzcGVjdHJlIG1pdGln YXRpb25zCi1AQCAtNDgwMywxNyArNDgxMCwxNyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlciA6IHB1 YmxpYyBNYWNyb0Fzc2VtYmxlclNwZWNpZmljIHsKLSAgIC8vIFN0YWNrUG9pbnRlciBtYW5pcHVs YXRpb24gZnVuY3Rpb25zLgotICAgLy8gT24gQVJNNjQsIHRoZSBTdGFja1BvaW50ZXIgaXMgaW1w bGVtZW50ZWQgYXMgdHdvIHN5bmNocm9uaXplZCByZWdpc3RlcnMuCi0gICAvLyBDb2RlIHNoYXJl ZCBhY3Jvc3MgcGxhdGZvcm1zIG11c3QgdXNlIHRoZXNlIGZ1bmN0aW9ucyB0byBiZSB2YWxpZC4K LSAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgaW5saW5lIHZvaWQgYWRkVG9TdGFja1B0cihU IHQpOwotICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICBpbmxpbmUgdm9pZCBhZGRTdGFja1B0 clRvKFQgdCk7Ci0gCi0tICB2b2lkIHN1YkZyb21TdGFja1B0cihJbW0zMiBpbW0zMikgREVGSU5F RF9PTihtaXBzMzIsIG1pcHM2NCwgYXJtLCB4ODYsIHg2NCk7Ci0rICB2b2lkIHN1YkZyb21TdGFj a1B0cihJbW0zMiBpbW0zMikgREVGSU5FRF9PTihtaXBzMzIsIG1pcHM2NCwgYXJtLCB4ODYsIHg2 NCwgcHBjNjQpOwotICAgdm9pZCBzdWJGcm9tU3RhY2tQdHIoUmVnaXN0ZXIgcmVnKTsKLSAKLSAg IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgdm9pZCBzdWJTdGFja1B0ckZyb20oVCB0KSB7Ci0g ICAgIHN1YlB0cihnZXRTdGFja1BvaW50ZXIoKSwgdCk7Ci0gICB9Ci0gCi0gICB0ZW1wbGF0ZSA8 dHlwZW5hbWUgVD4KLWRpZmYgLS1naXQgYS9qcy9zcmMvaml0L01vdmVFbWl0dGVyLmggYi9qcy9z cmMvaml0L01vdmVFbWl0dGVyLmgKLWluZGV4IDZjNjJjMDU2MWEuLjMwZWU0YjYxYTUgMTAwNjQ0 Ci0tLS0gYS9qcy9zcmMvaml0L01vdmVFbWl0dGVyLmgKLSsrKyBiL2pzL3NyYy9qaXQvTW92ZUVt aXR0ZXIuaAotQEAgLTEyLDE1ICsxMiwxNyBAQAotICNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9B Uk0pCi0gIyAgaW5jbHVkZSAiaml0L2FybS9Nb3ZlRW1pdHRlci1hcm0uaCIKLSAjZWxpZiBkZWZp bmVkKEpTX0NPREVHRU5fQVJNNjQpCi0gIyAgaW5jbHVkZSAiaml0L2FybTY0L01vdmVFbWl0dGVy LWFybTY0LmgiCi0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX01JUFMzMikKLSAjICBpbmNsdWRl ICJqaXQvbWlwczMyL01vdmVFbWl0dGVyLW1pcHMzMi5oIgotICNlbGlmIGRlZmluZWQoSlNfQ09E RUdFTl9NSVBTNjQpCi0gIyAgaW5jbHVkZSAiaml0L21pcHM2NC9Nb3ZlRW1pdHRlci1taXBzNjQu aCIKLSsjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fUFBDNjQpCi0rIyAgaW5jbHVkZSAiaml0L3Bw YzY0L01vdmVFbWl0dGVyLXBwYzY0LmgiCi0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX05PTkUp Ci0gIyAgaW5jbHVkZSAiaml0L25vbmUvTW92ZUVtaXR0ZXItbm9uZS5oIgotICNlbHNlCi0gIyAg ZXJyb3IgIlVua25vd24gYXJjaGl0ZWN0dXJlISIKLSAjZW5kaWYKLSAKLSAjZW5kaWYgLyogaml0 X01vdmVFbWl0dGVyX2ggKi8KLWRpZmYgLS1naXQgYS9qcy9zcmMvaml0L1JlZ2lzdGVycy5oIGIv anMvc3JjL2ppdC9SZWdpc3RlcnMuaAotaW5kZXggNjdjODY2MTAwNC4uZWY0OWRmODNlNSAxMDA2 NDQKLS0tLSBhL2pzL3NyYy9qaXQvUmVnaXN0ZXJzLmgKLSsrKyBiL2pzL3NyYy9qaXQvUmVnaXN0 ZXJzLmgKLUBAIC0xNSwxNiArMTUsMTggQEAKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fQVJN KQotICMgIGluY2x1ZGUgImppdC9hcm0vQXJjaGl0ZWN0dXJlLWFybS5oIgotICNlbGlmIGRlZmlu ZWQoSlNfQ09ERUdFTl9BUk02NCkKLSAjICBpbmNsdWRlICJqaXQvYXJtNjQvQXJjaGl0ZWN0dXJl LWFybTY0LmgiCi0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX01JUFMzMikKLSAjICBpbmNsdWRl ICJqaXQvbWlwczMyL0FyY2hpdGVjdHVyZS1taXBzMzIuaCIKLSAjZWxpZiBkZWZpbmVkKEpTX0NP REVHRU5fTUlQUzY0KQotICMgIGluY2x1ZGUgImppdC9taXBzNjQvQXJjaGl0ZWN0dXJlLW1pcHM2 NC5oIgotKyNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSsjICBpbmNsdWRlICJqaXQv cHBjNjQvQXJjaGl0ZWN0dXJlLXBwYzY0LmgiCi0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX05P TkUpCi0gIyAgaW5jbHVkZSAiaml0L25vbmUvQXJjaGl0ZWN0dXJlLW5vbmUuaCIKLSAjZWxzZQot ICMgIGVycm9yICJVbmtub3duIGFyY2hpdGVjdHVyZSEiCi0gI2VuZGlmCi0gCi0gbmFtZXNwYWNl IGpzIHsKLSBuYW1lc3BhY2Ugaml0IHsKLWRpZmYgLS1naXQgYS9qcy9zcmMvaml0L1NoYXJlZElD SGVscGVycy1pbmwuaCBiL2pzL3NyYy9qaXQvU2hhcmVkSUNIZWxwZXJzLWlubC5oCi1pbmRleCA5 MDFjODBjZGQ4Li5mZDRhMjdkOGJiIDEwMDY0NAotLS0tIGEvanMvc3JjL2ppdC9TaGFyZWRJQ0hl bHBlcnMtaW5sLmgKLSsrKyBiL2pzL3NyYy9qaXQvU2hhcmVkSUNIZWxwZXJzLWlubC5oCi1AQCAt MTIsMTYgKzEyLDE4IEBACi0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX1g2NCkKLSAjICBpbmNs dWRlICJqaXQveDY0L1NoYXJlZElDSGVscGVycy14NjQtaW5sLmgiCi0gI2VsaWYgZGVmaW5lZChK U19DT0RFR0VOX0FSTSkKLSAjICBpbmNsdWRlICJqaXQvYXJtL1NoYXJlZElDSGVscGVycy1hcm0t aW5sLmgiCi0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX0FSTTY0KQotICMgIGluY2x1ZGUgImpp dC9hcm02NC9TaGFyZWRJQ0hlbHBlcnMtYXJtNjQtaW5sLmgiCi0gI2VsaWYgZGVmaW5lZChKU19D T0RFR0VOX01JUFMzMikgfHwgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2NCkKLSAjICBpbmNsdWRl ICJqaXQvbWlwcy1zaGFyZWQvU2hhcmVkSUNIZWxwZXJzLW1pcHMtc2hhcmVkLWlubC5oIgotKyNl bGlmIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSsjICBpbmNsdWRlICJqaXQvcHBjNjQvU2hh cmVkSUNIZWxwZXJzLXBwYzY0LWlubC5oIgotICNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9OT05F KQotICMgIGluY2x1ZGUgImppdC9ub25lL1NoYXJlZElDSGVscGVycy1ub25lLWlubC5oIgotICNl bHNlCi0gIyAgZXJyb3IgIlVua25vd24gYXJjaGl0ZWN0dXJlISIKLSAjZW5kaWYKLSAKLSBuYW1l c3BhY2UganMgewotIG5hbWVzcGFjZSBqaXQge30gIC8vIG5hbWVzcGFjZSBqaXQKLWRpZmYgLS1n aXQgYS9qcy9zcmMvaml0L1NoYXJlZElDSGVscGVycy5oIGIvanMvc3JjL2ppdC9TaGFyZWRJQ0hl bHBlcnMuaAotaW5kZXggNTYzY2FlM2NjZi4uNzM3Y2ExZDVhNSAxMDA2NDQKLS0tLSBhL2pzL3Ny Yy9qaXQvU2hhcmVkSUNIZWxwZXJzLmgKLSsrKyBiL2pzL3NyYy9qaXQvU2hhcmVkSUNIZWxwZXJz LmgKLUBAIC0xMiwxNiArMTIsMTggQEAKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fWDY0KQot ICMgIGluY2x1ZGUgImppdC94NjQvU2hhcmVkSUNIZWxwZXJzLXg2NC5oIgotICNlbGlmIGRlZmlu ZWQoSlNfQ09ERUdFTl9BUk0pCi0gIyAgaW5jbHVkZSAiaml0L2FybS9TaGFyZWRJQ0hlbHBlcnMt YXJtLmgiCi0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX0FSTTY0KQotICMgIGluY2x1ZGUgImpp dC9hcm02NC9TaGFyZWRJQ0hlbHBlcnMtYXJtNjQuaCIKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVH RU5fTUlQUzMyKSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0KQotICMgIGluY2x1ZGUgImpp dC9taXBzLXNoYXJlZC9TaGFyZWRJQ0hlbHBlcnMtbWlwcy1zaGFyZWQuaCIKLSsjZWxpZiBkZWZp bmVkKEpTX0NPREVHRU5fUFBDNjQpCi0rIyAgaW5jbHVkZSAiaml0L3BwYzY0L1NoYXJlZElDSGVs cGVycy1wcGM2NC5oIgotICNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9OT05FKQotICMgIGluY2x1 ZGUgImppdC9ub25lL1NoYXJlZElDSGVscGVycy1ub25lLmgiCi0gI2Vsc2UKLSAjICBlcnJvciAi VW5rbm93biBhcmNoaXRlY3R1cmUhIgotICNlbmRpZgotIAotIG5hbWVzcGFjZSBqcyB7Ci0gbmFt ZXNwYWNlIGppdCB7fSAgLy8gbmFtZXNwYWNlIGppdAotZGlmZiAtLWdpdCBhL2pzL3NyYy9qaXQv U2hhcmVkSUNSZWdpc3RlcnMuaCBiL2pzL3NyYy9qaXQvU2hhcmVkSUNSZWdpc3RlcnMuaAotaW5k ZXggYzg3ZTVmODQwOC4uNzYyMzlkNWRkZSAxMDA2NDQKLS0tLSBhL2pzL3NyYy9qaXQvU2hhcmVk SUNSZWdpc3RlcnMuaAotKysrIGIvanMvc3JjL2ppdC9TaGFyZWRJQ1JlZ2lzdGVycy5oCi1AQCAt MTQsMTYgKzE0LDE4IEBACi0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX0FSTSkKLSAjICBpbmNs dWRlICJqaXQvYXJtL1NoYXJlZElDUmVnaXN0ZXJzLWFybS5oIgotICNlbGlmIGRlZmluZWQoSlNf Q09ERUdFTl9BUk02NCkKLSAjICBpbmNsdWRlICJqaXQvYXJtNjQvU2hhcmVkSUNSZWdpc3RlcnMt YXJtNjQuaCIKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzMyKQotICMgIGluY2x1ZGUg ImppdC9taXBzMzIvU2hhcmVkSUNSZWdpc3RlcnMtbWlwczMyLmgiCi0gI2VsaWYgZGVmaW5lZChK U19DT0RFR0VOX01JUFM2NCkKLSAjICBpbmNsdWRlICJqaXQvbWlwczY0L1NoYXJlZElDUmVnaXN0 ZXJzLW1pcHM2NC5oIgotKyNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSsjICBpbmNs dWRlICJqaXQvcHBjNjQvU2hhcmVkSUNSZWdpc3RlcnMtcHBjNjQuaCIKLSAjZWxpZiBkZWZpbmVk KEpTX0NPREVHRU5fTk9ORSkKLSAjICBpbmNsdWRlICJqaXQvbm9uZS9TaGFyZWRJQ1JlZ2lzdGVy cy1ub25lLmgiCi0gI2Vsc2UKLSAjICBlcnJvciAiVW5rbm93biBhcmNoaXRlY3R1cmUhIgotICNl bmRpZgotIAotIG5hbWVzcGFjZSBqcyB7Ci0gbmFtZXNwYWNlIGppdCB7fSAgLy8gbmFtZXNwYWNl IGppdAotZGlmZiAtLWdpdCBhL2pzL3NyYy9qaXQvbW96LmJ1aWxkIGIvanMvc3JjL2ppdC9tb3ou YnVpbGQKLWluZGV4IGY1MGQ4NmZjNDQuLjgyY2RkZDA3YWYgMTAwNjQ0Ci0tLS0gYS9qcy9zcmMv aml0L21vei5idWlsZAotKysrIGIvanMvc3JjL2ppdC9tb3ouYnVpbGQKLUBAIC0yMjcsMTcgKzIy NywyOSBAQCBlbGlmIENPTkZJR1siSlNfQ09ERUdFTl9NSVBTMzIiXSBvciBDT05GSUdbIkpTX0NP REVHRU5fTUlQUzY0Il06Ci0gICAgICAgICAgICAgIm1pcHM2NC9Db2RlR2VuZXJhdG9yLW1pcHM2 NC5jcHAiLAotICAgICAgICAgICAgICJtaXBzNjQvTG93ZXJpbmctbWlwczY0LmNwcCIsCi0gICAg ICAgICAgICAgIm1pcHM2NC9NYWNyb0Fzc2VtYmxlci1taXBzNjQuY3BwIiwKLSAgICAgICAgICAg ICAibWlwczY0L01vdmVFbWl0dGVyLW1pcHM2NC5jcHAiLAotICAgICAgICAgICAgICJtaXBzNjQv VHJhbXBvbGluZS1taXBzNjQuY3BwIiwKLSAgICAgICAgIF0KLSAgICAgICAgIGlmIENPTkZJR1si SlNfU0lNVUxBVE9SX01JUFM2NCJdOgotICAgICAgICAgICAgIFVOSUZJRURfU09VUkNFUyArPSBb Im1pcHM2NC9TaW11bGF0b3ItbWlwczY0LmNwcCJdCi0tCi0rZWxpZiBDT05GSUdbIkpTX0NPREVH RU5fUFBDNjQiXToKLSsgICAgbGlyX2lucHV0cyArPSBbInBwYzY0L0xJUi1wcGM2NC5oIl0KLSsg ICAgVU5JRklFRF9TT1VSQ0VTICs9IFsKLSsgICAgICAgICJwcGM2NC9BcmNoaXRlY3R1cmUtcHBj NjQuY3BwIiwKLSsgICAgICAgICJwcGM2NC9Bc3NlbWJsZXItcHBjNjQuY3BwIiwKLSsgICAgICAg ICJwcGM2NC9CYWlsb3V0cy1wcGM2NC5jcHAiLAotKyAgICAgICAgInBwYzY0L0NvZGVHZW5lcmF0 b3ItcHBjNjQuY3BwIiwKLSsgICAgICAgICJwcGM2NC9Mb3dlcmluZy1wcGM2NC5jcHAiLAotKyAg ICAgICAgInBwYzY0L01hY3JvQXNzZW1ibGVyLXBwYzY0LmNwcCIsCi0rICAgICAgICAicHBjNjQv TW92ZUVtaXR0ZXItcHBjNjQuY3BwIiwKLSsgICAgICAgICJwcGM2NC9UcmFtcG9saW5lLXBwYzY0 LmNwcCIsCi0rICAgICAgICAic2hhcmVkL0F0b21pY09wZXJhdGlvbnMtc2hhcmVkLWppdC5jcHAi LAotKyAgICBdCi0gCi0gIyBHZW5lcmF0ZSBqaXQvTUlST3BzR2VuZXJhdGVkLmggZnJvbSBqaXQv TUlST3BzLnlhbWwKLSBHZW5lcmF0ZWRGaWxlKAotICAgICAiTUlST3BzR2VuZXJhdGVkLmgiLAot ICAgICBzY3JpcHQ9IkdlbmVyYXRlTUlSRmlsZXMucHkiLAotICAgICBlbnRyeV9wb2ludD0iZ2Vu ZXJhdGVfbWlyX2hlYWRlciIsCi0gICAgIGlucHV0cz1bIk1JUk9wcy55YW1sIl0sCi0gKQotZGlm ZiAtLWdpdCBhL2pzL3NyYy9qaXQvc2hhcmVkL0Fzc2VtYmxlci1zaGFyZWQuaCBiL2pzL3NyYy9q aXQvc2hhcmVkL0Fzc2VtYmxlci1zaGFyZWQuaAotaW5kZXggZGZiMmJjYjZiOC4uNjliYTc1OWQ0 MiAxMDA2NDQKLS0tLSBhL2pzL3NyYy9qaXQvc2hhcmVkL0Fzc2VtYmxlci1zaGFyZWQuaAotKysr IGIvanMvc3JjL2ppdC9zaGFyZWQvQXNzZW1ibGVyLXNoYXJlZC5oCi1AQCAtMjAsMjMgKzIwLDI0 IEBACi0gI2luY2x1ZGUgImppdC9SZWdpc3RlcnMuaCIKLSAjaW5jbHVkZSAiaml0L1JlZ2lzdGVy U2V0cy5oIgotICNpbmNsdWRlICJqcy9TY2FsYXJUeXBlLmgiICAvLyBqczo6U2NhbGFyOjpUeXBl Ci0gI2luY2x1ZGUgInZtL0hlbHBlclRocmVhZHMuaCIKLSAjaW5jbHVkZSAidm0vTmF0aXZlT2Jq ZWN0LmgiCi0gI2luY2x1ZGUgIndhc20vV2FzbVR5cGVzLmgiCi0gCi0gI2lmIGRlZmluZWQoSlNf Q09ERUdFTl9BUk0pIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9BUk02NCkgfHwgXAotLSAgICBkZWZp bmVkKEpTX0NPREVHRU5fTUlQUzMyKSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0KQotKyAg ICBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzMyKSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0 KSB8fCBcCi0rICAgIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSAvLyBQdXNoIHJldHVybiBh ZGRyZXNzZXMgY2FsbGVlLXNpZGUuCi0gIyAgZGVmaW5lIEpTX1VTRV9MSU5LX1JFR0lTVEVSCi0g I2VuZGlmCi0gCi0gI2lmIGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTMzIpIHx8IGRlZmluZWQoSlNf Q09ERUdFTl9NSVBTNjQpIHx8IFwKLS0gICAgZGVmaW5lZChKU19DT0RFR0VOX0FSTTY0KQotKyAg ICBkZWZpbmVkKEpTX0NPREVHRU5fQVJNNjQpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkK LSAvLyBKU19DT0RFTEFCRUxfTElOS01PREUgZ2l2ZXMgbGFiZWxzIGFkZGl0aW9uYWwgbWV0YWRh dGEKLSAvLyBkZXNjcmliaW5nIGhvdyBCaW5kKCkgc2hvdWxkIHBhdGNoIHRoZW0uCi0gIyAgZGVm aW5lIEpTX0NPREVMQUJFTF9MSU5LTU9ERQotICNlbmRpZgotIAotIG5hbWVzcGFjZSBqcyB7Ci0g bmFtZXNwYWNlIGppdCB7Ci0gCi1kaWZmIC0tZ2l0IGEvanMvc3JjL2ppdC9zaGFyZWQvQXRvbWlj T3BlcmF0aW9ucy1zaGFyZWQtaml0LmNwcCBiL2pzL3NyYy9qaXQvc2hhcmVkL0F0b21pY09wZXJh dGlvbnMtc2hhcmVkLWppdC5jcHAKLWluZGV4IDc5NDYzZjExOGIuLjdjOGVlYWY4OWUgMTAwNjQ0 Ci0tLS0gYS9qcy9zcmMvaml0L3NoYXJlZC9BdG9taWNPcGVyYXRpb25zLXNoYXJlZC1qaXQuY3Bw Ci0rKysgYi9qcy9zcmMvaml0L3NoYXJlZC9BdG9taWNPcGVyYXRpb25zLXNoYXJlZC1qaXQuY3Bw Ci1AQCAtMTMzLDE2ICsxMzMsMzggQEAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlciBBdG9taWNU ZW1wID0gZWR4OwotIC8vIDY0LWJpdCByZWdpc3RlcnMgZm9yIGNtcHhjaGc4Yi4gIFZhbFJlZy9W YWwyUmVnL1RlbXAgYXJlIG5vdCB1c2VkIGluIHRoaXMKLSAvLyBjYXNlLgotIAotIHN0YXRpYyBj b25zdGV4cHIgUmVnaXN0ZXI2NCBBdG9taWNWYWxSZWc2NChlZHgsIGVheCk7Ci0gc3RhdGljIGNv bnN0ZXhwciBSZWdpc3RlcjY0IEF0b21pY1ZhbDJSZWc2NChlY3gsIGVieCk7Ci0gCi0gLy8gQXRv bWljUmV0dXJuUmVnNjQgaXMgdW51c2VkIG9uIHg4Ni4KLSAKLSsjZWxpZiBkZWZpbmVkKEpTX0NP REVHRU5fUFBDNjQpCi0rCi0rLy8gU2VsZWN0ZWQgcmVnaXN0ZXJzIG1hdGNoIHRoZSBhcmd1bWVu dCByZWdpc3RlcnMsIGV4Y2VwdCB0aGF0IHRoZSBQdHIgaXMgbm90Ci0rLy8gaW4gSW50QXJnUmVn MCBzbyBhcyBub3QgdG8gY29uZmxpY3Qgd2l0aCB0aGUgcmVzdWx0IHJlZ2lzdGVyLgotKwotK3N0 YXRpYyBjb25zdCBMaXZlUmVnaXN0ZXJTZXQgQXRvbWljTm9uVm9sYXRpbGVSZWdzOwotKwotK3N0 YXRpYyBjb25zdGV4cHIgUmVnaXN0ZXIgQXRvbWljUHRyUmVnID0gSW50QXJnUmVnNDsKLStzdGF0 aWMgY29uc3RleHByIFJlZ2lzdGVyIEF0b21pY1B0cjJSZWcgPSBJbnRBcmdSZWcxOwotK3N0YXRp YyBjb25zdGV4cHIgUmVnaXN0ZXIgQXRvbWljVmFsUmVnID0gSW50QXJnUmVnMTsKLStzdGF0aWMg Y29uc3RleHByIFJlZ2lzdGVyNjQgQXRvbWljVmFsUmVnNjQoSW50QXJnUmVnMSk7Ci0rc3RhdGlj IGNvbnN0ZXhwciBSZWdpc3RlciBBdG9taWNWYWwyUmVnID0gSW50QXJnUmVnMjsKLStzdGF0aWMg Y29uc3RleHByIFJlZ2lzdGVyNjQgQXRvbWljVmFsMlJlZzY0KEludEFyZ1JlZzIpOwotK3N0YXRp YyBjb25zdGV4cHIgUmVnaXN0ZXIgQXRvbWljVGVtcCA9IEludEFyZ1JlZzM7Ci0rc3RhdGljIGNv bnN0ZXhwciBSZWdpc3RlciBBdG9taWNUZW1wMiA9IEludEFyZ1JlZzU7Ci0rc3RhdGljIGNvbnN0 ZXhwciBSZWdpc3RlciBBdG9taWNUZW1wMyA9IEludEFyZ1JlZzY7Ci0rc3RhdGljIGNvbnN0ZXhw ciBSZWdpc3RlcjY0IEF0b21pY1RlbXA2NChJbnRBcmdSZWczKTsKLStzdGF0aWMgY29uc3RleHBy IFJlZ2lzdGVyNjQgQXRvbWljVGVtcDY0XzIoSW50QXJnUmVnNSk7Ci0rc3RhdGljIGNvbnN0ZXhw ciBSZWdpc3RlcjY0IEF0b21pY1RlbXA2NF8zKEludEFyZ1JlZzYpOwotKwotK3N0YXRpYyBjb25z dGV4cHIgUmVnaXN0ZXI2NCBBdG9taWNSZXR1cm5SZWc2NCA9IFJldHVyblJlZzY0OwotKwotICNl bHNlCi0gIyAgZXJyb3IgIlVuc3VwcG9ydGVkIHBsYXRmb3JtIgotICNlbmRpZgotIAotIC8vIFRo ZXNlIGFyZSB1c2VmdWwgc2hvcnRoYW5kcyBhbmQgaGlkZSB0aGUgbWVhbmluZ2xlc3MgdWludC9p bnQgZGlzdGluY3Rpb24uCi0gCi0gc3RhdGljIGNvbnN0ZXhwciBTY2FsYXI6OlR5cGUgU0laRTgg PSBTY2FsYXI6OlVpbnQ4OwotIHN0YXRpYyBjb25zdGV4cHIgU2NhbGFyOjpUeXBlIFNJWkUxNiA9 IFNjYWxhcjo6VWludDE2OwotQEAgLTI0OCwzMSArMjcwLDM3IEBAIHN0YXRpYyB1aW50MzJfdCBH ZW5Qcm9sb2d1ZShNYWNyb0Fzc2VtYmxlciYgbWFzbSwgQXJnSXRlcmF0b3IqIGl0ZXIpIHsKLSAg IHVpbnQzMl90IHN0YXJ0ID0gbWFzbS5jdXJyZW50T2Zmc2V0KCk7Ci0gICBtYXNtLlB1c2hSZWdz SW5NYXNrKEF0b21pY05vblZvbGF0aWxlUmVncyk7Ci0gI2lmIGRlZmluZWQoSlNfQ09ERUdFTl9B Uk0pIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9BUk02NCkKLSAgIC8vIFRoZSByZXR1cm4gYWRkcmVz cyBpcyBhbW9uZyB0aGUgbm9udm9sYXRpbGUgcmVnaXN0ZXJzLCBpZiBwdXNoZWQgYXQgYWxsLgot ICAgaXRlci0+YXJnQmFzZSA9IG1hc20uZnJhbWVQdXNoZWQoKTsKLSAjZWxpZiBkZWZpbmVkKEpT X0NPREVHRU5fWDg2KSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fWDY0KQotICAgLy8gVGhlIHJldHVy biBhZGRyZXNzIGlzIHB1c2hlZCBzZXBhcmF0ZWx5LgotICAgaXRlci0+YXJnQmFzZSA9IHNpemVv Zih2b2lkKikgKyBtYXNtLmZyYW1lUHVzaGVkKCk7Ci0rI2VsaWYgZGVmaW5lZChKU19DT0RFR0VO X1BQQzY0KQotKy8vIFhYWAotKyAgLy8gVGhlIHJldHVybiBhZGRyZXNzIGlzIGluIExSIChhbiBT UFIpOyBpdCdzIG5vdCAocHJvYmFibHkpIG9uIHRoZSBzdGFjay4KLSsgIGl0ZXItPmFyZ0Jhc2Ug PSBtYXNtLmZyYW1lUHVzaGVkKCk7Ci0gI2Vsc2UKLSAjICBlcnJvciAiVW5zdXBwb3J0ZWQgcGxh dGZvcm0iCi0gI2VuZGlmCi0gICByZXR1cm4gc3RhcnQ7Ci0gfQotIAotIHN0YXRpYyB2b2lkIEdl bkVwaWxvZ3VlKE1hY3JvQXNzZW1ibGVyJiBtYXNtKSB7Ci0gICBtYXNtLlBvcFJlZ3NJbk1hc2so QXRvbWljTm9uVm9sYXRpbGVSZWdzKTsKLSAgIE1PWl9BU1NFUlQobWFzbS5mcmFtZVB1c2hlZCgp ID09IDApOwotICNpZiBkZWZpbmVkKEpTX0NPREVHRU5fQVJNNjQpCi0gICBtYXNtLlJldCgpOwot ICNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9BUk0pCi0gICBtYXNtLm1vdihsciwgcGMpOwotICNl bGlmIGRlZmluZWQoSlNfQ09ERUdFTl9YODYpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9YNjQpCi0g ICBtYXNtLnJldCgpOwotKyNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSsgIG1hc20u YXNfYmxyKCk7Ci0gI2VuZGlmCi0gfQotIAotICNpZm5kZWYgSlNfNjRCSVQKLSBzdGF0aWMgdWlu dDMyX3QgR2VuTm9wKE1hY3JvQXNzZW1ibGVyJiBtYXNtKSB7Ci0gICBBcmdJdGVyYXRvciBpdGVy OwotICAgdWludDMyX3Qgc3RhcnQgPSBHZW5Qcm9sb2d1ZShtYXNtLCAmaXRlcik7Ci0gICBHZW5F cGlsb2d1ZShtYXNtKTsKLUBAIC00MTQsMjEgKzQ0MiwzMSBAQCBzdGF0aWMgdWludDMyX3QgR2Vu Q21weGNoZyhNYWNyb0Fzc2VtYmxlciYgbWFzbSwgU2NhbGFyOjpUeXBlIHNpemUsCi0gICBBcmdJ dGVyYXRvciBpdGVyOwotICAgdWludDMyX3Qgc3RhcnQgPSBHZW5Qcm9sb2d1ZShtYXNtLCAmaXRl cik7Ci0gICBHZW5HcHJBcmcobWFzbSwgTUlSVHlwZTo6UG9pbnRlciwgJml0ZXIsIEF0b21pY1B0 clJlZyk7Ci0gCi0gICBBZGRyZXNzIGFkZHIoQXRvbWljUHRyUmVnLCAwKTsKLSAgIHN3aXRjaCAo c2l6ZSkgewotICAgICBjYXNlIFNJWkU4OgotICAgICBjYXNlIFNJWkUxNjoKLSsjaWYgZGVmaW5l ZChKU19DT0RFR0VOX1BQQzY0KQotKyAgICAgIG1hc20uY29tcGFyZUV4Y2hhbmdlKHNpemUsIHN5 bmMsIGFkZHIsIEF0b21pY1ZhbFJlZywgQXRvbWljVmFsMlJlZywKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICBBdG9taWNUZW1wLCBBdG9taWNUZW1wMiwgQXRvbWljVGVtcDMsIFJldHVyblJl Zyk7Ci0rICAgICAgYnJlYWs7Ci0rI2VuZGlmCi0gICAgIGNhc2UgU0laRTMyOgotICAgICAgIEdl bkdwckFyZyhtYXNtLCBNSVJUeXBlOjpJbnQzMiwgJml0ZXIsIEF0b21pY1ZhbFJlZyk7Ci0gICAg ICAgR2VuR3ByQXJnKG1hc20sIE1JUlR5cGU6OkludDMyLCAmaXRlciwgQXRvbWljVmFsMlJlZyk7 Ci0rI2lmIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSsgICAgICBtYXNtLmNvbXBhcmVFeGNo YW5nZShzaXplLCBzeW5jLCBhZGRyLCBBdG9taWNWYWxSZWcsIEF0b21pY1ZhbDJSZWcsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgSW52YWxpZFJlZywgSW52YWxpZFJlZywgSW52YWxpZFJl ZywgUmV0dXJuUmVnKTsKLSsjZWxzZQotICAgICAgIG1hc20uY29tcGFyZUV4Y2hhbmdlKHNpemUs IHN5bmMsIGFkZHIsIEF0b21pY1ZhbFJlZywgQXRvbWljVmFsMlJlZywKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBSZXR1cm5SZWcpOwotKyNlbmRpZgotICAgICAgIGJyZWFrOwotICAgICBj YXNlIFNJWkU2NDoKLSAgICAgICBHZW5HcHI2NEFyZyhtYXNtLCAmaXRlciwgQXRvbWljVmFsUmVn NjQpOwotICAgICAgIEdlbkdwcjY0QXJnKG1hc20sICZpdGVyLCBBdG9taWNWYWwyUmVnNjQpOwot ICNpZiBkZWZpbmVkKEpTX0NPREVHRU5fWDg2KQotICAgICAgIHN0YXRpY19hc3NlcnQoQXRvbWlj VmFsUmVnNjQgPT0gUmVnaXN0ZXI2NChlZHgsIGVheCkpOwotICAgICAgIHN0YXRpY19hc3NlcnQo QXRvbWljVmFsMlJlZzY0ID09IFJlZ2lzdGVyNjQoZWN4LCBlYngpKTsKLSAKLUBAIC00NTMsMTkg KzQ5MSwyOSBAQCBzdGF0aWMgdWludDMyX3QgR2VuRXhjaGFuZ2UoTWFjcm9Bc3NlbWJsZXImIG1h c20sIFNjYWxhcjo6VHlwZSBzaXplLAotICAgQXJnSXRlcmF0b3IgaXRlcjsKLSAgIHVpbnQzMl90 IHN0YXJ0ID0gR2VuUHJvbG9ndWUobWFzbSwgJml0ZXIpOwotICAgR2VuR3ByQXJnKG1hc20sIE1J UlR5cGU6OlBvaW50ZXIsICZpdGVyLCBBdG9taWNQdHJSZWcpOwotIAotICAgQWRkcmVzcyBhZGRy KEF0b21pY1B0clJlZywgMCk7Ci0gICBzd2l0Y2ggKHNpemUpIHsKLSAgICAgY2FzZSBTSVpFODoK LSAgICAgY2FzZSBTSVpFMTY6Ci0rI2lmIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSsgICAg ICBtYXNtLmF0b21pY0V4Y2hhbmdlKHNpemUsIHN5bmMsIGFkZHIsIEF0b21pY1ZhbFJlZywKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgIEF0b21pY1RlbXAsIEF0b21pY1RlbXAyLCBBdG9taWNU ZW1wMywgUmV0dXJuUmVnKTsKLSsgICAgICBicmVhazsKLSsjZW5kaWYKLSAgICAgY2FzZSBTSVpF MzI6Ci0gICAgICAgR2VuR3ByQXJnKG1hc20sIE1JUlR5cGU6OkludDMyLCAmaXRlciwgQXRvbWlj VmFsUmVnKTsKLSsjaWYgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotKyAgICAgIG1hc20uYXRv bWljRXhjaGFuZ2Uoc2l6ZSwgc3luYywgYWRkciwgQXRvbWljVmFsUmVnLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgSW52YWxpZFJlZywgSW52YWxpZFJlZywgSW52YWxpZFJlZywgUmV0dXJu UmVnKTsKLSsjZWxzZQotICAgICAgIG1hc20uYXRvbWljRXhjaGFuZ2Uoc2l6ZSwgc3luYywgYWRk ciwgQXRvbWljVmFsUmVnLCBSZXR1cm5SZWcpOwotKyNlbmRpZgotICAgICAgIGJyZWFrOwotICAg ICBjYXNlIFNJWkU2NDoKLSAjaWYgZGVmaW5lZChKU182NEJJVCkKLSAgICAgICBHZW5HcHI2NEFy ZyhtYXNtLCAmaXRlciwgQXRvbWljVmFsUmVnNjQpOwotICAgICAgIG1hc20uYXRvbWljRXhjaGFu Z2U2NChzeW5jLCBhZGRyLCBBdG9taWNWYWxSZWc2NCwgQXRvbWljUmV0dXJuUmVnNjQpOwotICAg ICAgIGJyZWFrOwotICNlbHNlCi0gICAgICAgTU9aX0NSQVNIKCI2NC1iaXQgYXRvbWljIGV4Y2hh bmdlIG5vdCBhdmFpbGFibGUgb24gdGhpcyBwbGF0Zm9ybSIpOwotQEAgLTQ5MiwxNyArNTQwLDIy IEBAIHN0YXRpYyB1aW50MzJfdCBHZW5GZXRjaE9wKE1hY3JvQXNzZW1ibGVyJiBtYXNtLCBTY2Fs YXI6OlR5cGUgc2l6ZSwgQXRvbWljT3Agb3AsCi0gI2lmIGRlZmluZWQoSlNfQ09ERUdFTl9YODYp IHx8IGRlZmluZWQoSlNfQ09ERUdFTl9YNjQpCi0gICAgICAgUmVnaXN0ZXIgdG1wID0gb3AgPT0g QXRvbWljRmV0Y2hBZGRPcCB8fCBvcCA9PSBBdG9taWNGZXRjaFN1Yk9wCi0gICAgICAgICAgICAg ICAgICAgICAgICAgID8gUmVnaXN0ZXI6OkludmFsaWQoKQotICAgICAgICAgICAgICAgICAgICAg ICAgICA6IEF0b21pY1RlbXA7Ci0gI2Vsc2UKLSAgICAgICBSZWdpc3RlciB0bXAgPSBBdG9taWNU ZW1wOwotICNlbmRpZgotICAgICAgIEdlbkdwckFyZyhtYXNtLCBNSVJUeXBlOjpJbnQzMiwgJml0 ZXIsIEF0b21pY1ZhbFJlZyk7Ci0rI2lmIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSsgICAg ICBtYXNtLmF0b21pY0ZldGNoT3Aoc2l6ZSwgc3luYywgb3AsIEF0b21pY1ZhbFJlZywgYWRkciwg dG1wLCBBdG9taWNUZW1wMiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgQXRvbWljVGVtcDMs IFJldHVyblJlZyk7Ci0rI2Vsc2UKLSAgICAgICBtYXNtLmF0b21pY0ZldGNoT3Aoc2l6ZSwgc3lu Yywgb3AsIEF0b21pY1ZhbFJlZywgYWRkciwgdG1wLCBSZXR1cm5SZWcpOwotKyNlbmRpZgotICAg ICAgIGJyZWFrOwotICAgICB9Ci0gICAgIGNhc2UgU0laRTY0OiB7Ci0gI2lmIGRlZmluZWQoSlNf NjRCSVQpCi0gIyAgaWYgZGVmaW5lZChKU19DT0RFR0VOX1g2NCkKLSAgICAgICBSZWdpc3RlcjY0 IHRtcCA9IG9wID09IEF0b21pY0ZldGNoQWRkT3AgfHwgb3AgPT0gQXRvbWljRmV0Y2hTdWJPcAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gUmVnaXN0ZXI2NDo6SW52YWxpZCgpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgOiBBdG9taWNUZW1wNjQ7Ci1AQCAtNjM2LDE2ICs2ODks MTkgQEAgc3RhdGljIGJvb2wgVW5hbGlnbmVkQWNjZXNzZXNBcmVPSygpIHsKLSAjZW5kaWYKLSAj aWYgZGVmaW5lZChKU19DT0RFR0VOX1g4NikgfHwgZGVmaW5lZChKU19DT0RFR0VOX1g2NCkKLSAg IHJldHVybiB0cnVlOwotICNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9BUk0pCi0gICByZXR1cm4g IUhhc0FsaWdubWVudEZhdWx0KCk7Ci0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX0FSTTY0KQot ICAgLy8gVGhpcyBpcyBub3QgbmVjZXNzYXJpbHkgdHJ1ZSBidXQgaXQncyB0aGUgYmVzdCBndWVz cyByaWdodCBub3cuCi0gICByZXR1cm4gdHJ1ZTsKLSsjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5f UFBDNjQpCi0rICAvLyBXZSdkIHN1cmUgbGlrZSB0byBhdm9pZCBpdCwgZXZlbiB0aG91Z2ggaXQg d29ya3MuCi0rICByZXR1cm4gZmFsc2U7Ci0gI2Vsc2UKLSAjICBlcnJvciAiVW5zdXBwb3J0ZWQg cGxhdGZvcm0iCi0gI2VuZGlmCi0gfQotIAotIHZvaWQgQXRvbWljTWVtY3B5RG93blVuc3luY2hy b25pemVkKHVpbnQ4X3QqIGRlc3QsIGNvbnN0IHVpbnQ4X3QqIHNyYywKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbmJ5dGVzKSB7Ci0gICBjb25zdCB1aW50OF90 KiBsaW0gPSBzcmMgKyBuYnl0ZXM7Ci1kaWZmIC0tZ2l0IGEvanMvc3JjL2pzYXBpLXRlc3RzL3Rl c3RKaXRBQkljYWxscy5jcHAgYi9qcy9zcmMvanNhcGktdGVzdHMvdGVzdEppdEFCSWNhbGxzLmNw cAotaW5kZXggMDJiNjdkYTNjYS4uYmQ0NTM4OWIyMSAxMDA2NDQKLS0tLSBhL2pzL3NyYy9qc2Fw aS10ZXN0cy90ZXN0Sml0QUJJY2FsbHMuY3BwCi0rKysgYi9qcy9zcmMvanNhcGktdGVzdHMvdGVz dEppdEFCSWNhbGxzLmNwcAotQEAgLTY1MywxNiArNjUzLDE5IEBAIGNsYXNzIEppdEFCSUNhbGwg ZmluYWwgOiBwdWJsaWMgSlNBUElUZXN0LCBwdWJsaWMgRGVmaW5lQ2hlY2tBcmdzPFNpZz4gewot ICAgICBSZWdpc3RlciBiYXNlID0gcjg7Ci0gICAgIHJlZ3MudGFrZShiYXNlKTsKLSAjZWxpZiBk ZWZpbmVkKEpTX0NPREVHRU5fTUlQUzMyKQotICAgICBSZWdpc3RlciBiYXNlID0gdDE7Ci0gICAg IHJlZ3MudGFrZShiYXNlKTsKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0KQotICAg ICBSZWdpc3RlciBiYXNlID0gdDE7Ci0gICAgIHJlZ3MudGFrZShiYXNlKTsKLSsjZWxpZiBkZWZp bmVkKEpTX0NPREVHRU5fUFBDNjQpCi0rICAgIFJlZ2lzdGVyIGJhc2UgPSByMDsKLSsgICAgcmVn cy50YWtlKGJhc2UpOwotICNlbHNlCi0gIyAgZXJyb3IgIlVua25vd24gYXJjaGl0ZWN0dXJlISIK LSAjZW5kaWYKLSAKLSAgICAgUmVnaXN0ZXIgc2V0dXAgPSByZWdzLnRha2VBbnkoKTsKLSAKLSAg ICAgdGhpcy0+Z2VuZXJhdGVDYWxscyhtYXNtLCBiYXNlLCBzZXR1cCk7Ci0gCi1kaWZmIC0tZ2l0 IGEvanMvc3JjL2pzYXBpLXRlc3RzL3Rlc3RzSml0LmNwcCBiL2pzL3NyYy9qc2FwaS10ZXN0cy90 ZXN0c0ppdC5jcHAKLWluZGV4IDA2OWVlZjQzZmUuLjcwNTYwOWRmMmMgMTAwNjQ0Ci0tLS0gYS9q cy9zcmMvanNhcGktdGVzdHMvdGVzdHNKaXQuY3BwCi0rKysgYi9qcy9zcmMvanNhcGktdGVzdHMv dGVzdHNKaXQuY3BwCi1AQCAtMjAsMTYgKzIwLDIxIEBAIHZvaWQgUHJlcGFyZUppdChqczo6aml0 OjpNYWNyb0Fzc2VtYmxlciYgbWFzbSkgewotICNlbmRpZgotICAgQWxsb2NhdGFibGVSZWdpc3Rl clNldCByZWdzKFJlZ2lzdGVyU2V0OjpBbGwoKSk7Ci0gICBMaXZlUmVnaXN0ZXJTZXQgc2F2ZShy ZWdzLmFzTGl2ZVNldCgpKTsKLSAjaWYgZGVmaW5lZChKU19DT0RFR0VOX0FSTSkKLSAgIHNhdmUu YWRkKGpzOjpqaXQ6OmQxNSk7Ci0gI2VuZGlmCi0gI2lmIGRlZmluZWQoSlNfQ09ERUdFTl9NSVBT MzIpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpCi0gICBzYXZlLmFkZChqczo6aml0Ojpy YSk7Ci0rI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotKyAgLy8gWFhYCi0rICAvLyBQ dXNoIHRoZSBsaW5rIHJlZ2lzdGVyIHNlcGFyYXRlbHksIHNpbmNlIGl0J3Mgbm90IGEgR1BSLgot KyAgbWFzbS54c19tZmxyKFNjcmF0Y2hSZWdpc3Rlcik7Ci0rICBtYXNtLmFzX3N0ZHUoU2NyYXRj aFJlZ2lzdGVyLCBTdGFja1BvaW50ZXIsIC04KTsKLSAjZWxpZiBkZWZpbmVkKEpTX1VTRV9MSU5L X1JFR0lTVEVSKQotICAgc2F2ZS5hZGQoanM6OmppdDo6bHIpOwotICNlbmRpZgotICAgbWFzbS5Q dXNoUmVnc0luTWFzayhzYXZlKTsKLSB9Ci0gCi0gLy8gR2VuZXJhdGUgdGhlIGV4aXQgcGF0aCBv ZiB0aGUgSklUIGNvZGUsIHdoaWNoIHJlc3RvcmVzIGV2ZXJ5IHJlZ2lzdGVyLiBUaGVuLAotIC8v IG1ha2UgaXQgZXhlY3V0YWJsZSBhbmQgcnVuIGl0LgotQEAgLTM3LDI2ICs0MiwzNSBAQCBib29s IEV4ZWN1dGVKaXQoSlNDb250ZXh0KiBjeCwganM6OmppdDo6TWFjcm9Bc3NlbWJsZXImIG1hc20p IHsKLSAgIHVzaW5nIG5hbWVzcGFjZSBqczo6aml0OwotICAgQWxsb2NhdGFibGVSZWdpc3RlclNl dCByZWdzKFJlZ2lzdGVyU2V0OjpBbGwoKSk7Ci0gICBMaXZlUmVnaXN0ZXJTZXQgc2F2ZShyZWdz LmFzTGl2ZVNldCgpKTsKLSAjaWYgZGVmaW5lZChKU19DT0RFR0VOX0FSTSkKLSAgIHNhdmUuYWRk KGpzOjpqaXQ6OmQxNSk7Ci0gI2VuZGlmCi0gI2lmIGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTMzIp IHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpCi0gICBzYXZlLmFkZChqczo6aml0OjpyYSk7 Ci0rI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotKyAgLy8gV2UgcG9wIGFmdGVyIGxv YWRpbmcgdGhlIHJlZ3MuCi0gI2VsaWYgZGVmaW5lZChKU19VU0VfTElOS19SRUdJU1RFUikKLSAg IHNhdmUuYWRkKGpzOjpqaXQ6OmxyKTsKLSAjZW5kaWYKLSAgIG1hc20uUG9wUmVnc0luTWFzayhz YXZlKTsKLSAjaWYgZGVmaW5lZChKU19DT0RFR0VOX0FSTTY0KQotICAgLy8gUmV0dXJuIHVzaW5n IHRoZSB2YWx1ZSBwb3BwZWQgaW50byB4MzAuCi0gICBtYXNtLmFiaXJldCgpOwotIAotICAgLy8g UmVzZXQgc3RhY2sgcG9pbnRlci4KLSAgIG1hc20uU2V0U3RhY2tQb2ludGVyNjQoUHNldWRvU3Rh Y2tQb2ludGVyNjQpOwotKyNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSsgIC8vIFhY WAotKyAgLy8gUG9wIExSIGFuZCBleGl0LgotKyAgbWFzbS5hc19sZChTY3JhdGNoUmVnaXN0ZXIs IFN0YWNrUG9pbnRlciwgMCk7Ci0rICBtYXNtLnhzX210bHIoU2NyYXRjaFJlZ2lzdGVyKTsKLSsg IG1hc20uYXNfYWRkaShTdGFja1BvaW50ZXIsIFN0YWNrUG9pbnRlciwgOCk7Ci0rICBtYXNtLmFz X2JscigpOwotICNlbHNlCi0gICAvLyBFeGl0IHRoZSBKSVQtZWQgY29kZSB1c2luZyB0aGUgQUJJ IHJldHVybiBzdHlsZS4KLSAgIG1hc20uYWJpcmV0KCk7Ci0gI2VuZGlmCi0gCi0gICBpZiAobWFz bS5vb20oKSkgewotICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci1kaWZmIC0tZ2l0IGEvanMvc3Jj L3V0aWwvUG9pc29uLmggYi9qcy9zcmMvdXRpbC9Qb2lzb24uaAotaW5kZXggODM1NmNhMWYwMC4u NWVlYjExMWNmOCAxMDA2NDQKLS0tLSBhL2pzL3NyYy91dGlsL1BvaXNvbi5oCi0rKysgYi9qcy9z cmMvdXRpbC9Qb2lzb24uaAotQEAgLTg4LDE2ICs4OCwxOCBAQCBjb25zdCB1aW50OF90IEpTX1ND T1BFX0RBVEFfVFJBSUxJTkdfTkFNRVNfUEFUVEVSTiA9IDB4Q0M7Ci0gICovCi0gI2lmIGRlZmlu ZWQoSlNfQ09ERUdFTl9YODYpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9YNjQpIHx8IFwKLSAgICAg ZGVmaW5lZChKU19DT0RFR0VOX05PTkUpCi0gIyAgZGVmaW5lIEpTX1NXRVBUX0NPREVfUEFUVEVS TiAweEVEICAvLyBJTiBpbnN0cnVjdGlvbiwgY3Jhc2hlcyBpbiB1c2VyIG1vZGUuCi0gI2VsaWYg ZGVmaW5lZChKU19DT0RFR0VOX0FSTSkgfHwgZGVmaW5lZChKU19DT0RFR0VOX0FSTTY0KQotICMg IGRlZmluZSBKU19TV0VQVF9DT0RFX1BBVFRFUk4gMHhBMyAgLy8gdW5kZWZpbmVkIGluc3RydWN0 aW9uCi0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX01JUFMzMikgfHwgZGVmaW5lZChKU19DT0RF R0VOX01JUFM2NCkKLSAjICBkZWZpbmUgSlNfU1dFUFRfQ09ERV9QQVRURVJOIDB4MDEgIC8vIHVu ZGVmaW5lZCBpbnN0cnVjdGlvbgotKyNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkgfHwg ZGVmaW5lZChKU19DT0RFR0VOX1BQQykKLSsjICBkZWZpbmUgSlNfU1dFUFRfQ09ERV9QQVRURVJO IDB4MDAgIC8vIGFyY2hpdGVjdHVyYWxseSBkZWZpbmVkIGFzIGlsbGVnYWwKLSAjZWxzZQotICMg IGVycm9yICJKU19TV0VQVF9DT0RFX1BBVFRFUk4gbm90IGRlZmluZWQgZm9yIHRoaXMgcGxhdGZv cm0iCi0gI2VuZGlmCi0gCi0gZW51bSBjbGFzcyBNZW1DaGVja0tpbmQgOiB1aW50OF90IHsKLSAg IC8vIE1hcmtzIGEgcmVnaW9uIGFzIHBvaXNvbmVkLiBNZW1vcnkgc2FuaXRpemVycyBsaWtlIEFT YW4gd2lsbCBjcmFzaCB3aGVuCi0gICAvLyBhY2Nlc3NpbmcgaXQgKGJvdGggcmVhZHMgYW5kIHdy aXRlcykuCi0gICBNYWtlTm9BY2Nlc3MsCi1kaWZmIC0tZ2l0IGEvanMvc3JjL3dhc20vV2FzbUJh c2VsaW5lQ29tcGlsZS5jcHAgYi9qcy9zcmMvd2FzbS9XYXNtQmFzZWxpbmVDb21waWxlLmNwcAot aW5kZXggMTU2ZjNjYmJiYS4uYWIyOWY0NDcxMyAxMDA2NDQKLS0tLSBhL2pzL3NyYy93YXNtL1dh c21CYXNlbGluZUNvbXBpbGUuY3BwCi0rKysgYi9qcy9zcmMvd2FzbS9XYXNtQmFzZWxpbmVDb21w aWxlLmNwcAotQEAgLTEzOCwxNiArMTM4LDE5IEBACi0gI2lmIGRlZmluZWQoSlNfQ09ERUdFTl9N SVBTMzIpCi0gIyAgaW5jbHVkZSAiaml0L21pcHMtc2hhcmVkL0Fzc2VtYmxlci1taXBzLXNoYXJl ZC5oIgotICMgIGluY2x1ZGUgImppdC9taXBzMzIvQXNzZW1ibGVyLW1pcHMzMi5oIgotICNlbmRp ZgotICNpZiBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0KQotICMgIGluY2x1ZGUgImppdC9taXBz LXNoYXJlZC9Bc3NlbWJsZXItbWlwcy1zaGFyZWQuaCIKLSAjICBpbmNsdWRlICJqaXQvbWlwczY0 L0Fzc2VtYmxlci1taXBzNjQuaCIKLSAjZW5kaWYKLSsjaWYgZGVmaW5lZChKU19DT0RFR0VOX1BQ QzY0KQotKyMgIGluY2x1ZGUgImppdC9wcGM2NC9Bc3NlbWJsZXItcHBjNjQuaCIKLSsjZW5kaWYK LSAjaW5jbHVkZSAianMvU2NhbGFyVHlwZS5oIiAgLy8ganM6OlNjYWxhcjo6VHlwZQotICNpbmNs dWRlICJ1dGlsL01lbW9yeS5oIgotICNpbmNsdWRlICJ3YXNtL1R5cGVkT2JqZWN0LmgiCi0gI2lu Y2x1ZGUgIndhc20vV2FzbUdDLmgiCi0gI2luY2x1ZGUgIndhc20vV2FzbUdlbmVyYXRvci5oIgot ICNpbmNsdWRlICJ3YXNtL1dhc21JbnN0YW5jZS5oIgotICNpbmNsdWRlICJ3YXNtL1dhc21PcEl0 ZXIuaCIKLSAjaW5jbHVkZSAid2FzbS9XYXNtU2lnbmFsSGFuZGxlcnMuaCIKLUBAIC0yODgsMTYg KzI5MSwyMyBAQCBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVyIFJhYmFsZHJTY3JhdGNoSTMyID0g Q2FsbFRlbXBSZWcyOwotICNlbmRpZgotIAotICNpZmRlZiBSQUJBTERSX1NDUkFUQ0hfRjMyX0FM SUFTRVNfRjY0Ci0gIyAgaWYgIWRlZmluZWQoUkFCQUxEUl9TQ1JBVENIX0YzMikgfHwgIWRlZmlu ZWQoUkFCQUxEUl9TQ1JBVENIX0Y2NCkKLSAjICAgIGVycm9yICJCYWQgY29uZmlndXJhdGlvbiIK LSAjICBlbmRpZgotICNlbmRpZgotIAotKyNpZmRlZiBKU19DT0RFR0VOX1BQQzY0Ci0rIyAgZGVm aW5lIFJBQkFMRFJfU0NSQVRDSF9JMzIKLSsvLyBXZSBjYW4gdXNlIGFsbCB0aGUgYXJncmVncyB1 cCwgYW5kIHdlIGRvbid0IHdhbnQgdGhlIEpJVCB1c2luZyBvdXIgb3duCi0rLy8gcHJpdmF0ZSBz Y3JhdGNoIHJlZ2lzdGVycywgc28gdGhpcyBpcyB0aGUgYmVzdCBvcHRpb24gb2Ygd2hhdCdzIGxl ZnQuCi0rc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlciBSYWJhbGRyU2NyYXRjaEkzMiA9IHIxOTsK LSsjZW5kaWYKLSsKLSB0ZW1wbGF0ZSA8TUlSVHlwZSB0PgotIHN0cnVjdCBSZWdUeXBlT2Ygewot ICNpZmRlZiBFTkFCTEVfV0FTTV9TSU1ECi0gICBzdGF0aWNfYXNzZXJ0KHQgPT0gTUlSVHlwZTo6 RmxvYXQzMiB8fCB0ID09IE1JUlR5cGU6OkRvdWJsZSB8fAotICAgICAgICAgICAgICAgICAgICAg dCA9PSBNSVJUeXBlOjpTaW1kMTI4LAotICAgICAgICAgICAgICAgICAiRmxvYXQgbWFzayB0eXBl Iik7Ci0gI2Vsc2UKLSAgIHN0YXRpY19hc3NlcnQodCA9PSBNSVJUeXBlOjpGbG9hdDMyIHx8IHQg PT0gTUlSVHlwZTo6RG91YmxlLAotQEAgLTU1MCwxNiArNTYwLDE4IEBAIHN0cnVjdCBTcGVjaWZp Y1JlZ3Mge307Ci0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX01JUFMzMikKLSBzdHJ1Y3QgU3Bl Y2lmaWNSZWdzIHsKLSAgIFJlZ0k2NCBhYmlSZXR1cm5SZWdJNjQ7Ci0gCi0gICBTcGVjaWZpY1Jl Z3MoKSA6IGFiaVJldHVyblJlZ0k2NChSZXR1cm5SZWc2NCkge30KLSB9OwotICNlbGlmIGRlZmlu ZWQoSlNfQ09ERUdFTl9NSVBTNjQpCi0gc3RydWN0IFNwZWNpZmljUmVncyB7fTsKLSsjZWxpZiBk ZWZpbmVkKEpTX0NPREVHRU5fUFBDNjQpCi0rc3RydWN0IFNwZWNpZmljUmVncyB7fTsKLSAjZWxz ZQotIHN0cnVjdCBTcGVjaWZpY1JlZ3MgewotICMgIGlmbmRlZiBKU182NEJJVAotICAgUmVnSTY0 IGFiaVJldHVyblJlZ0k2NDsKLSAjICBlbmRpZgotIAotICAgU3BlY2lmaWNSZWdzKCkgeyBNT1pf Q1JBU0goIkJhc2VDb21waWxlciBwb3J0aW5nIGludGVyZmFjZTogU3BlY2lmaWNSZWdzIik7IH0K LSB9OwotQEAgLTYwMzgsMTYgKzYwNTAsMjUgQEAgY2xhc3MgQmFzZUNvbXBpbGVyIGZpbmFsIDog cHVibGljIEJhc2VDb21waWxlckludGVyZmFjZSB7Ci0gICAgICAgICBBQklBcmcgYXJnTG9jID0g Y2FsbC0+YWJpLm5leHQoTUlSVHlwZTo6SW50MzIpOwotICAgICAgICAgaWYgKGFyZ0xvYy5raW5k KCkgPT0gQUJJQXJnOjpTdGFjaykgewotICAgICAgICAgICBTY3JhdGNoSTMyIHNjcmF0Y2goKnRo aXMpOwotICAgICAgICAgICBsb2FkSTMyKGFyZywgc2NyYXRjaCk7Ci0gICAgICAgICAgIG1hc20u c3RvcmUzMihzY3JhdGNoLCBBZGRyZXNzKG1hc20uZ2V0U3RhY2tQb2ludGVyKCksCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ0xvYy5vZmZzZXRGcm9tQXJnQmFz ZSgpKSk7Ci0gICAgICAgICB9IGVsc2UgewotICAgICAgICAgICBsb2FkSTMyKGFyZywgUmVnSTMy KGFyZ0xvYy5ncHIoKSkpOwotKyNpZiBKU19DT0RFR0VOX1BQQzY0Ci0rICAgICAgICAgIC8vIElm IHRoaXMgaXMgYSBjYWxsIHRvIGNvbXBpbGVkIEMrKywgd2UgbXVzdCBlbnN1cmUgdGhhdCB0aGUK LSsgICAgICAgICAgLy8gdXBwZXIgMzIgYml0cyBhcmUgY2xlYXI6IGFkZGkgY2FuIHNpZ24tZXh0 ZW5kLCB3aGljaCB5aWVsZHMKLSsgICAgICAgICAgLy8gZGlmZmljdWx0LXRvLWRpYWdub3NlIGJ1 Z3Mgd2hlbiB0aGUgZnVuY3Rpb24gZXhwZWN0cyBhIHVpbnQzMl90Ci0rICAgICAgICAgIC8vIGJ1 dCB0aGUgcmVnaXN0ZXIgaXQgZ2V0cyBoYXMgYSByZXNpZHVhbCA2NC1iaXQgdmFsdWUuCi0rICAg ICAgICAgIGlmIChjYWxsLT51c2VzU3lzdGVtQWJpKSB7Ci0rICAgICAgICAgICAgbWFzbS5hc19y bGRpY2woYXJnTG9jLmdwcigpLCBhcmdMb2MuZ3ByKCksIDAsIDMyKTsKLSsgICAgICAgICAgfQot KyNlbmRpZgotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgICAgfQotICAgICAgIGNh c2UgVmFsVHlwZTo6STY0OiB7Ci0gICAgICAgICBBQklBcmcgYXJnTG9jID0gY2FsbC0+YWJpLm5l eHQoTUlSVHlwZTo6SW50NjQpOwotICAgICAgICAgaWYgKGFyZ0xvYy5raW5kKCkgPT0gQUJJQXJn OjpTdGFjaykgewotICAgICAgICAgICBTY3JhdGNoSTMyIHNjcmF0Y2goKnRoaXMpOwotICNpZmRl ZiBKU19QVU5CT1g2NAotQEAgLTYzMjQsMTcgKzYzNDUsMTggQEAgY2xhc3MgQmFzZUNvbXBpbGVy IGZpbmFsIDogcHVibGljIEJhc2VDb21waWxlckludGVyZmFjZSB7Ci0gCi0gICAgIC8vIENvbXB1 dGUgdGhlIGFic29sdXRlIHRhYmxlIGJhc2UgcG9pbnRlciBpbnRvIGBzY3JhdGNoYCwgb2Zmc2V0 IGJ5IDgKLSAgICAgLy8gdG8gYWNjb3VudCBmb3IgdGhlIGZhY3QgdGhhdCBtYV9tb3YgcmVhZCBQ Qys4LgotICAgICBtYXNtLm1hX3N1YihJbW0zMihvZmZzZXQgKyA4KSwgc2NyYXRjaCwgYXJtX3Nj cmF0Y2gpOwotIAotICAgICAvLyBKdW1wIGluZGlyZWN0IHZpYSB0YWJsZSBlbGVtZW50LgotICAg ICBtYXNtLm1hX2xkcihEVFJBZGRyKHNjcmF0Y2gsIER0clJlZ0ltbVNoaWZ0KHN3aXRjaFZhbHVl LCBMU0wsIDIpKSwgcGMsCi0gICAgICAgICAgICAgICAgIE9mZnNldCwgQXNzZW1ibGVyOjpBbHdh eXMpOwotLSNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTMzIpIHx8IGRlZmluZWQoSlNfQ09E RUdFTl9NSVBTNjQpCi0rI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX01JUFMzMikgfHwgZGVmaW5l ZChKU19DT0RFR0VOX01JUFM2NCkgfHwgXAotKyAgICAgIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2 NCkKLSAgICAgU2NyYXRjaEkzMiBzY3JhdGNoKCp0aGlzKTsKLSAgICAgQ29kZUxhYmVsIHRhYmxl Q2w7Ci0gCi0gICAgIG1hc20ubWFfbGkoc2NyYXRjaCwgJnRhYmxlQ2wpOwotIAotICAgICB0YWJs ZUNsLnRhcmdldCgpLT5iaW5kKHRoZVRhYmxlLT5vZmZzZXQoKSk7Ci0gICAgIG1hc20uYWRkQ29k ZUxhYmVsKHRhYmxlQ2wpOwotIAotQEAgLTY0OTMsMTYgKzY1MTUsMjIgQEAgY2xhc3MgQmFzZUNv bXBpbGVyIGZpbmFsIDogcHVibGljIEJhc2VDb21waWxlckludGVyZmFjZSB7Ci0gIyAgZWxpZiBk ZWZpbmVkKEpTX0NPREVHRU5fQVJNNjQpCi0gICAgIEFSTVJlZ2lzdGVyIHNkKHNyY0Rlc3QucmVn LCA2NCk7Ci0gICAgIEFSTVJlZ2lzdGVyIHIocmhzLnJlZywgNjQpOwotICAgICBpZiAoaXNVbnNp Z25lZCkgewotICAgICAgIG1hc20uVWRpdihzZCwgc2QsIHIpOwotICAgICB9IGVsc2UgewotICAg ICAgIG1hc20uU2RpdihzZCwgc2QsIHIpOwotICAgICB9Ci0rIyAgZWxpZiBkZWZpbmVkKEpTX0NP REVHRU5fUFBDNjQpCi0rICAgaWYgKGlzVW5zaWduZWQpIHsKLSsgICAgIG1hc20uYXNfZGl2ZHUo c3JjRGVzdC5yZWcsIHNyY0Rlc3QucmVnLCByaHMucmVnKTsKLSsgICB9IGVsc2UgewotKyAgICAg bWFzbS5hc19kaXZkKHNyY0Rlc3QucmVnLCBzcmNEZXN0LnJlZywgcmhzLnJlZyk7Ci0rICAgfQot ICMgIGVsc2UKLSAgICAgTU9aX0NSQVNIKCJCYXNlQ29tcGlsZXIgcGxhdGZvcm0gaG9vazogcXVv dGllbnRJNjQiKTsKLSAjICBlbmRpZgotICAgICBtYXNtLmJpbmQoJmRvbmUpOwotICAgfQotIAot ICAgdm9pZCByZW1haW5kZXJJNjQoUmVnSTY0IHJocywgUmVnSTY0IHNyY0Rlc3QsIFJlZ0k2NCBy ZXNlcnZlZCwKLSAgICAgICAgICAgICAgICAgICAgIElzVW5zaWduZWQgaXNVbnNpZ25lZCwgYm9v bCBpc0NvbnN0LCBpbnQ2NF90IGMpIHsKLUBAIC02NTQ0LDI5ICs2NTcyLDQ2IEBAIGNsYXNzIEJh c2VDb21waWxlciBmaW5hbCA6IHB1YmxpYyBCYXNlQ29tcGlsZXJJbnRlcmZhY2UgewotICAgICBB Uk1SZWdpc3RlciB0KHRlbXAsIDY0KTsKLSAgICAgaWYgKGlzVW5zaWduZWQpIHsKLSAgICAgICBt YXNtLlVkaXYodCwgc2QsIHIpOwotICAgICB9IGVsc2UgewotICAgICAgIG1hc20uU2Rpdih0LCBz ZCwgcik7Ci0gICAgIH0KLSAgICAgbWFzbS5NdWwodCwgdCwgcik7Ci0gICAgIG1hc20uU3ViKHNk LCBzZCwgdCk7Ci0rIyAgZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fUFBDNjQpCi0rICAgIGlmIChq czo6aml0OjpIYXNQUENJU0EzKCkpIHsKLSsgICAgICBpZiAoaXNVbnNpZ25lZCkgewotKyAgICAg ICAgbWFzbS5hc19tb2R1ZChzcmNEZXN0LnJlZywgc3JjRGVzdC5yZWcsIHJocy5yZWcpOwotKyAg ICAgIH0gZWxzZSB7Ci0rICAgICAgICBtYXNtLmFzX21vZHNkKHNyY0Rlc3QucmVnLCBzcmNEZXN0 LnJlZywgcmhzLnJlZyk7Ci0rICAgICAgfQotKyAgICB9IGVsc2UgewotKyAgICAgIFNjcmF0Y2hJ MzIgdGVtcCgqdGhpcyk7Ci0rICAgICAgaWYgKGlzVW5zaWduZWQpIHsKLSsgICAgICAgIG1hc20u YXNfZGl2ZHUodGVtcCwgc3JjRGVzdC5yZWcsIHJocy5yZWcpOwotKyAgICAgIH0gZWxzZSB7Ci0r ICAgICAgICBtYXNtLmFzX2RpdmQodGVtcCwgc3JjRGVzdC5yZWcsIHJocy5yZWcpOwotKyAgICAg IH0KLSsgICAgICBtYXNtLmFzX211bGxkKHRlbXAsIHRlbXAsIHJocy5yZWcpOwotKyAgICAgIG1h c20uYXNfc3ViZihzcmNEZXN0LnJlZywgdGVtcCwgc3JjRGVzdC5yZWcpOyAvLyBUID0gQiAtIEEK LSsgICAgfQotICMgIGVsc2UKLSAgICAgTU9aX0NSQVNIKCJCYXNlQ29tcGlsZXIgcGxhdGZvcm0g aG9vazogcmVtYWluZGVySTY0Iik7Ci0gIyAgZW5kaWYKLSAgICAgbWFzbS5iaW5kKCZkb25lKTsK LSAgIH0KLSAjZW5kaWYgIC8vIFJBQkFMRFJfSU5UX0RJVl9JNjRfQ0FMTE9VVAotIAotICAgUmVn STMyIG5lZWRSb3RhdGU2NFRlbXAoKSB7Ci0gI2lmIGRlZmluZWQoSlNfQ09ERUdFTl9YODYpCi0g ICAgIHJldHVybiBuZWVkSTMyKCk7Ci0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX1g2NCkgfHwg ZGVmaW5lZChKU19DT0RFR0VOX0FSTSkgfHwgICAgXAotICAgICBkZWZpbmVkKEpTX0NPREVHRU5f QVJNNjQpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTMzIpIHx8IFwKLS0gICAgZGVmaW5lZChK U19DT0RFR0VOX01JUFM2NCkKLSsgICAgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2NCkgfHwgZGVm aW5lZChKU19DT0RFR0VOX1BQQzY0KQotICAgICByZXR1cm4gUmVnSTMyOjpJbnZhbGlkKCk7Ci0g I2Vsc2UKLSAgICAgTU9aX0NSQVNIKCJCYXNlQ29tcGlsZXIgcGxhdGZvcm0gaG9vazogbmVlZFJv dGF0ZTY0VGVtcCIpOwotICNlbmRpZgotICAgfQotIAotICAgY2xhc3MgT3V0T2ZMaW5lVHJ1bmNh dGVDaGVja0YzMk9yRjY0VG9JMzIgOiBwdWJsaWMgT3V0T2ZMaW5lQ29kZSB7Ci0gICAgIEFueVJl ZyBzcmM7Ci1AQCAtNjg2OSwzMCArNjkxNCwzNSBAQCBjbGFzcyBCYXNlQ29tcGlsZXIgZmluYWwg OiBwdWJsaWMgQmFzZUNvbXBpbGVySW50ZXJmYWNlIHsKLSAgICAgICAgIFJlZ0k2NCBwdHI2NCA9 IGZyb21JMzIocHRyKTsKLSAKLSAgICAgICAgIC8vIEluIHByaW5jaXBsZSB0aGVyZSBtYXkgYmUg bm9uLXplcm8gYml0cyBpbiB0aGUgdXBwZXIgYml0cyBvZiB0aGUKLSAgICAgICAgIC8vIHJlZ2lz dGVyOyBjbGVhciB0aGVtLgotICMgIGlmIGRlZmluZWQoSlNfQ09ERUdFTl9YNjQpIHx8IGRlZmlu ZWQoSlNfQ09ERUdFTl9BUk02NCkKLSAgICAgICAgIC8vIFRoZSBjYW5vbmljYWwgdmFsdWUgaXMg emVyby1leHRlbmRlZCAoc2VlIGNvbW1lbnQgYmxvY2sgIjY0LWJpdCBHUFJzCi0gICAgICAgICAv LyBjYXJyeWluZyAzMi1iaXQgdmFsdWVzIiBpbiBNYWNyb0Fzc2VtYmxlci5oKTsgd2UgYWxyZWFk eSBoYXZlIHRoYXQuCi0gICAgICAgICBtYXNtLmFzc2VydENhbm9uaWNhbEludDMyKHB0cik7Ci0r IyAgZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fUFBDNjQpCi0rICAgICAgICAvLyBUaGUgY2Fub25p Y2FsIHZhbHVlIGlzIHNpZ24tZXh0ZW5kZWQuCi0rICAgICAgICBtYXNtLmFzX3JsZGljbChwdHIs IHB0ciwgMCwgMzIpOyAvLyAiY2xybGRpIgotICMgIGVsc2UKLSAgICAgICAgIE1PWl9DUkFTSCgi UGxhdGZvcm0gY29kZSBuZWVkZWQgaGVyZSIpOwotICMgIGVuZGlmCi0gCi0gICAgICAgICAvLyBB bnkgU3BlY3RyZSBtaXRpZ2F0aW9uIHdpbGwgYXBwZWFyIHRvIHVwZGF0ZSB0aGUgcHRyNjQgcmVn aXN0ZXIuCi0gICAgICAgICBtYXNtLndhc21Cb3VuZHNDaGVjazY0KAotICAgICAgICAgICAgIEFz c2VtYmxlcjo6QmVsb3csIHB0cjY0LAotICAgICAgICAgICAgIEFkZHJlc3ModGxzLCBvZmZzZXRv ZihUbHNEYXRhLCBib3VuZHNDaGVja0xpbWl0KSksICZvayk7Ci0gCi0gICAgICAgICAvLyBSZXN0 b3JlIHRoZSB2YWx1ZSB0byB0aGUgY2Fub25pY2FsIGZvcm0gZm9yIGEgMzItYml0IHZhbHVlIGlu IGEKLSAgICAgICAgIC8vIDY0LWJpdCByZWdpc3RlciBhbmQvb3IgdGhlIGFwcHJvcHJpYXRlIGZv cm0gZm9yIGZ1cnRoZXIgdXNlIGluIHRoZQotICAgICAgICAgLy8gaW5kZXhpbmcgaW5zdHJ1Y3Rp b24uCi0gIyAgaWYgZGVmaW5lZChKU19DT0RFR0VOX1g2NCkgfHwgZGVmaW5lZChKU19DT0RFR0VO X0FSTTY0KQotICAgICAgICAgLy8gVGhlIGNhbm9uaWNhbCB2YWx1ZSBpcyB6ZXJvLWV4dGVuZGVk OyB3ZSBhbHJlYWR5IGhhdmUgdGhhdC4KLSsjICBlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2 NCkKLSsgICAgICAgIC8vIExlYXZlIGl0IHplcm8tZXh0ZW5kZWQuCi0gIyAgZWxzZQotICAgICAg ICAgTU9aX0NSQVNIKCJQbGF0Zm9ybSBjb2RlIG5lZWRlZCBoZXJlIik7Ci0gIyAgZW5kaWYKLSAg ICAgICB9IGVsc2UgewotICAgICAgICAgbWFzbS53YXNtQm91bmRzQ2hlY2szMigKLSAgICAgICAg ICAgICBBc3NlbWJsZXI6OkJlbG93LCBwdHIsCi0gICAgICAgICAgICAgQWRkcmVzcyh0bHMsIG9m ZnNldG9mKFRsc0RhdGEsIGJvdW5kc0NoZWNrTGltaXQpKSwgJm9rKTsKLSAgICAgICB9Ci1AQCAt NjkwMywxNyArNjk1MywxNyBAQCBjbGFzcyBCYXNlQ29tcGlsZXIgZmluYWwgOiBwdWJsaWMgQmFz ZUNvbXBpbGVySW50ZXJmYWNlIHsKLSAjZW5kaWYKLSAgICAgICBtYXNtLndhc21UcmFwKFRyYXA6 Ok91dE9mQm91bmRzLCBieXRlY29kZU9mZnNldCgpKTsKLSAgICAgICBtYXNtLmJpbmQoJm9rKTsK LSAgICAgfQotICAgfQotIAotICNpZiBkZWZpbmVkKEpTX0NPREVHRU5fWDY0KSB8fCBkZWZpbmVk KEpTX0NPREVHRU5fQVJNKSB8fCAgICAgIFwKLSAgICAgZGVmaW5lZChKU19DT0RFR0VOX0FSTTY0 KSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzMyKSB8fCBcCi0tICAgIGRlZmluZWQoSlNfQ09E RUdFTl9NSVBTNjQpCi0rICAgIGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpIHx8IGRlZmluZWQo SlNfQ09ERUdFTl9QUEM2NCkKLSAgIEJhc2VJbmRleCBwcmVwYXJlQXRvbWljTWVtb3J5QWNjZXNz KE1lbW9yeUFjY2Vzc0Rlc2MqIGFjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEFjY2Vzc0NoZWNrKiBjaGVjaywgUmVnSTMyIHRscywKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ0kzMiBwdHIpIHsKLSAgICAgTU9aX0FTU0VSVChu ZWVkVGxzRm9yQWNjZXNzKCpjaGVjaykgPT0gdGxzLmlzVmFsaWQoKSk7Ci0gICAgIHByZXBhcmVN ZW1vcnlBY2Nlc3MoYWNjZXNzLCBjaGVjaywgdGxzLCBwdHIpOwotICAgICByZXR1cm4gQmFzZUlu ZGV4KEhlYXBSZWcsIHB0ciwgVGltZXNPbmUsIGFjY2Vzcy0+b2Zmc2V0KCkpOwotICAgfQotICNl bGlmIGRlZmluZWQoSlNfQ09ERUdFTl9YODYpCi1AQCAtNzAwMSwxNyArNzA1MSwxOSBAQCBjbGFz cyBCYXNlQ29tcGlsZXIgZmluYWwgOiBwdWJsaWMgQmFzZUNvbXBpbGVySW50ZXJmYWNlIHsKLSAg ICAgaWYgKGRlc3QudGFnID09IEFueVJlZzo6STY0KSB7Ci0gICAgICAgTU9aX0FTU0VSVChkZXN0 Lmk2NCgpID09IHNwZWNpZmljXy5hYmlSZXR1cm5SZWdJNjQpOwotICAgICAgIG1hc20ud2FzbUxv YWRJNjQoKmFjY2Vzcywgc3JjQWRkciwgZGVzdC5pNjQoKSk7Ci0gICAgIH0gZWxzZSB7Ci0gICAg ICAgLy8gRm9yIDggYml0IGxvYWRzLCB0aGlzIHdpbGwgZ2VuZXJhdGUgbW92c2JsIG9yIG1vdnpi bCwgc28KLSAgICAgICAvLyB0aGVyZSdzIG5vIGNvbnN0cmFpbnQgb24gd2hhdCB0aGUgb3V0cHV0 IHJlZ2lzdGVyIG1heSBiZS4KLSAgICAgICBtYXNtLndhc21Mb2FkKCphY2Nlc3MsIHNyY0FkZHIs IGRlc3QuYW55KCkpOwotICAgICB9Ci0tI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX01JUFMzMikg fHwgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2NCkKLSsjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5f TUlQUzMyKSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0KSB8fCBcCi0rICAgICAgZGVmaW5l ZChKU19DT0RFR0VOX1BQQzY0KQotKy8vIFhYWDogV2UgZG9uJ3QgcmVhbGx5IG5lZWQgdGhpcyBh bnltb3JlCi0gICAgIGlmIChJc1VuYWxpZ25lZCgqYWNjZXNzKSkgewotICAgICAgIHN3aXRjaCAo ZGVzdC50YWcpIHsKLSAgICAgICAgIGNhc2UgQW55UmVnOjpJNjQ6Ci0gICAgICAgICAgIG1hc20u d2FzbVVuYWxpZ25lZExvYWRJNjQoKmFjY2VzcywgSGVhcFJlZywgcHRyLCBwdHIsIGRlc3QuaTY0 KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcDEpOwotICAgICAg ICAgICBicmVhazsKLSAgICAgICAgIGNhc2UgQW55UmVnOjpGMzI6Ci0gICAgICAgICAgIG1hc20u d2FzbVVuYWxpZ25lZExvYWRGUCgqYWNjZXNzLCBIZWFwUmVnLCBwdHIsIHB0ciwgZGVzdC5mMzIo KSwKLUBAIC03MTAyLDE3ICs3MTU0LDE5IEBAIGNsYXNzIEJhc2VDb21waWxlciBmaW5hbCA6IHB1 YmxpYyBCYXNlQ29tcGlsZXJJbnRlcmZhY2UgewotICAgICBNT1pfQVNTRVJUKHRlbXAuaXNJbnZh bGlkKCkpOwotICAgICBpZiAoYWNjZXNzLT50eXBlKCkgPT0gU2NhbGFyOjpJbnQ2NCkgewotICAg ICAgIG1hc20ud2FzbVN0b3JlSTY0KCphY2Nlc3MsIHNyYy5pNjQoKSwgSGVhcFJlZywgcHRyLCBw dHIpOwotICAgICB9IGVsc2UgaWYgKHNyYy50YWcgPT0gQW55UmVnOjpJNjQpIHsKLSAgICAgICBt YXNtLndhc21TdG9yZSgqYWNjZXNzLCBBbnlSZWdpc3RlcihzcmMuaTY0KCkubG93KSwgSGVhcFJl ZywgcHRyLCBwdHIpOwotICAgICB9IGVsc2UgewotICAgICAgIG1hc20ud2FzbVN0b3JlKCphY2Nl c3MsIHNyYy5hbnkoKSwgSGVhcFJlZywgcHRyLCBwdHIpOwotICAgICB9Ci0tI2VsaWYgZGVmaW5l ZChKU19DT0RFR0VOX01JUFMzMikgfHwgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2NCkKLSsjZWxp ZiBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzMyKSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0 KSB8fCBcCi0rICAgICAgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotKy8vIFhYWDogV2UgZG9u J3QgcmVhbGx5IG5lZWQgdGhpcyBhbnltb3JlCi0gICAgIGlmIChJc1VuYWxpZ25lZCgqYWNjZXNz KSkgewotICAgICAgIHN3aXRjaCAoc3JjLnRhZykgewotICAgICAgICAgY2FzZSBBbnlSZWc6Okk2 NDoKLSAgICAgICAgICAgbWFzbS53YXNtVW5hbGlnbmVkU3RvcmVJNjQoKmFjY2Vzcywgc3JjLmk2 NCgpLCBIZWFwUmVnLCBwdHIsIHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGVtcCk7Ci0gICAgICAgICAgIGJyZWFrOwotICAgICAgICAgY2FzZSBBbnlSZWc6OkYz MjoKLSAgICAgICAgICAgbWFzbS53YXNtVW5hbGlnbmVkU3RvcmVGUCgqYWNjZXNzLCBzcmMuZjMy KCksIEhlYXBSZWcsIHB0ciwgcHRyLAotQEAgLTcxNjAsMTcgKzcyMTQsMTggQEAgY2xhc3MgQmFz ZUNvbXBpbGVyIGZpbmFsIDogcHVibGljIEJhc2VDb21waWxlckludGVyZmFjZSB7Ci0gICAgIH0K LSAgICAgdm9pZCBtYXliZUZyZWUoQmFzZUNvbXBpbGVyKiBiYykgewotICAgICAgIGZvciAoc2l6 ZV90IGkgPSAwOyBpIDwgQ291bnQ7ICsraSkgewotICAgICAgICAgYmMtPm1heWJlRnJlZSh0aGlz LT5vcGVyYXRvcltdKGkpKTsKLSAgICAgICB9Ci0gICAgIH0KLSAgIH07Ci0gCi0tI2lmIGRlZmlu ZWQoSlNfQ09ERUdFTl9NSVBTMzIpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpCi0rI2lm IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTMzIpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQp IHx8IFwKLSsgICAgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotICAgdXNpbmcgQXRvbWljUk1X MzJUZW1wcyA9IEF0b21pYzMyVGVtcHM8Mz47Ci0gI2Vsc2UKLSAgIHVzaW5nIEF0b21pY1JNVzMy VGVtcHMgPSBBdG9taWMzMlRlbXBzPDE+OwotICNlbmRpZgotIAotICAgdGVtcGxhdGUgPHR5cGVu YW1lIFQ+Ci0gICB2b2lkIGF0b21pY1JNVzMyKGNvbnN0IE1lbW9yeUFjY2Vzc0Rlc2MmIGFjY2Vz cywgVCBzcmNBZGRyLCBBdG9taWNPcCBvcCwKLSAgICAgICAgICAgICAgICAgICAgUmVnSTMyIHJ2 LCBSZWdJMzIgcmQsIGNvbnN0IEF0b21pY1JNVzMyVGVtcHMmIHRlbXBzKSB7Ci1AQCAtNzE4Nywx NyArNzI0MiwxOCBAQCBjbGFzcyBCYXNlQ29tcGlsZXIgZmluYWwgOiBwdWJsaWMgQmFzZUNvbXBp bGVySW50ZXJmYWNlIHsKLSAgICAgICAgIH0KLSAgICAgICAgIG1hc20ud2FzbUF0b21pY0ZldGNo T3AoYWNjZXNzLCBvcCwgcnYsIHNyY0FkZHIsIHRlbXAsIHJkKTsKLSAgICAgICAgIGJyZWFrOwot ICAgICAgIH0KLSAjZW5kaWYKLSAgICAgICBjYXNlIFNjYWxhcjo6VWludDE2OgotICAgICAgIGNh c2UgU2NhbGFyOjpJbnQzMjoKLSAgICAgICBjYXNlIFNjYWxhcjo6VWludDMyOgotLSNpZiBkZWZp bmVkKEpTX0NPREVHRU5fTUlQUzMyKSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0KQotKyNp ZiBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzMyKSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0 KSB8fCBcCi0rICAgIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSAgICAgICAgIG1hc20ud2Fz bUF0b21pY0ZldGNoT3AoYWNjZXNzLCBvcCwgcnYsIHNyY0FkZHIsIHRlbXBzWzBdLCB0ZW1wc1sx XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcHNbMl0sIHJkKTsKLSAjZWxz ZQotICAgICAgICAgbWFzbS53YXNtQXRvbWljRmV0Y2hPcChhY2Nlc3MsIG9wLCBydiwgc3JjQWRk ciwgdGVtcHNbMF0sIHJkKTsKLSAjZW5kaWYKLSAgICAgICAgIGJyZWFrOwotICAgICAgIGRlZmF1 bHQ6IHsKLSAgICAgICAgIE1PWl9DUkFTSCgiQmFkIHR5cGUgZm9yIGF0b21pYyBvcGVyYXRpb24i KTsKLUBAIC03MjA4LDE3ICs3MjY0LDE4IEBAIGNsYXNzIEJhc2VDb21waWxlciBmaW5hbCA6IHB1 YmxpYyBCYXNlQ29tcGlsZXJJbnRlcmZhY2UgewotICAgLy8gT24geDg2LCBWIGlzIEFkZHJlc3Mu ICBPbiBvdGhlciBwbGF0Zm9ybXMsIGl0IGlzIFJlZ2lzdGVyNjQuCi0gICAvLyBUIGlzIEJhc2VJ bmRleCBvciBBZGRyZXNzLgotICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFY+Ci0g ICB2b2lkIGF0b21pY1JNVzY0KGNvbnN0IE1lbW9yeUFjY2Vzc0Rlc2MmIGFjY2VzcywgY29uc3Qg VCYgc3JjQWRkciwKLSAgICAgICAgICAgICAgICAgICAgQXRvbWljT3Agb3AsIFYgdmFsdWUsIFJl Z2lzdGVyNjQgdGVtcCwgUmVnaXN0ZXI2NCByZCkgewotICAgICBtYXNtLndhc21BdG9taWNGZXRj aE9wNjQoYWNjZXNzLCBvcCwgdmFsdWUsIHNyY0FkZHIsIHRlbXAsIHJkKTsKLSAgIH0KLSAKLS0j aWYgZGVmaW5lZChKU19DT0RFR0VOX01JUFMzMikgfHwgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2 NCkKLSsjaWYgZGVmaW5lZChKU19DT0RFR0VOX01JUFMzMikgfHwgZGVmaW5lZChKU19DT0RFR0VO X01JUFM2NCkgfHwgXAotKyAgICBkZWZpbmVkKEpTX0NPREVHRU5fUFBDNjQpCi0gICB1c2luZyBB dG9taWNDbXBYY2hnMzJUZW1wcyA9IEF0b21pYzMyVGVtcHM8Mz47Ci0gI2Vsc2UKLSAgIHVzaW5n IEF0b21pY0NtcFhjaGczMlRlbXBzID0gQXRvbWljMzJUZW1wczwwPjsKLSAjZW5kaWYKLSAKLSAg IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgdm9pZCBhdG9taWNDbXBYY2hnMzIoY29uc3QgTWVt b3J5QWNjZXNzRGVzYyYgYWNjZXNzLCBUIHNyY0FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAg ICBSZWdJMzIgcmV4cGVjdCwgUmVnSTMyIHJuZXcsIFJlZ0kzMiByZCwKLUBAIC03MjM2LDI5ICs3 MjkzLDMxIEBAIGNsYXNzIEJhc2VDb21waWxlciBmaW5hbCA6IHB1YmxpYyBCYXNlQ29tcGlsZXJJ bnRlcmZhY2UgewotICAgICAgICAgfQotICAgICAgICAgbWFzbS53YXNtQ29tcGFyZUV4Y2hhbmdl KGFjY2Vzcywgc3JjQWRkciwgcmV4cGVjdCwgcm5ldywgcmQpOwotICAgICAgICAgYnJlYWs7Ci0g ICAgICAgfQotICNlbmRpZgotICAgICAgIGNhc2UgU2NhbGFyOjpVaW50MTY6Ci0gICAgICAgY2Fz ZSBTY2FsYXI6OkludDMyOgotICAgICAgIGNhc2UgU2NhbGFyOjpVaW50MzI6Ci0tI2lmIGRlZmlu ZWQoSlNfQ09ERUdFTl9NSVBTMzIpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpCi0rI2lm IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTMzIpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQp IHx8IFwKLSsgICAgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotICAgICAgICAgbWFzbS53YXNt Q29tcGFyZUV4Y2hhbmdlKGFjY2Vzcywgc3JjQWRkciwgcmV4cGVjdCwgcm5ldywgdGVtcHNbMF0s Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcHNbMV0sIHRlbXBzWzJdLCBy ZCk7Ci0gI2Vsc2UKLSAgICAgICAgIG1hc20ud2FzbUNvbXBhcmVFeGNoYW5nZShhY2Nlc3MsIHNy Y0FkZHIsIHJleHBlY3QsIHJuZXcsIHJkKTsKLSAjZW5kaWYKLSAgICAgICAgIGJyZWFrOwotICAg ICAgIGRlZmF1bHQ6Ci0gICAgICAgICBNT1pfQ1JBU0goIkJhZCB0eXBlIGZvciBhdG9taWMgb3Bl cmF0aW9uIik7Ci0gICAgIH0KLSAgIH0KLSAKLS0jaWYgZGVmaW5lZChKU19DT0RFR0VOX01JUFMz MikgfHwgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2NCkKLSsjaWYgZGVmaW5lZChKU19DT0RFR0VO X01JUFMzMikgfHwgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2NCkgfHwgXAotKyAgICBkZWZpbmVk KEpTX0NPREVHRU5fUFBDNjQpCi0gICB1c2luZyBBdG9taWNYY2hnMzJUZW1wcyA9IEF0b21pYzMy VGVtcHM8Mz47Ci0gI2Vsc2UKLSAgIHVzaW5nIEF0b21pY1hjaGczMlRlbXBzID0gQXRvbWljMzJU ZW1wczwwPjsKLSAjZW5kaWYKLSAKLSAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgdm9pZCBh dG9taWNYY2hnMzIoY29uc3QgTWVtb3J5QWNjZXNzRGVzYyYgYWNjZXNzLCBUIHNyY0FkZHIsIFJl Z0kzMiBydiwKLSAgICAgICAgICAgICAgICAgICAgIFJlZ0kzMiByZCwgY29uc3QgQXRvbWljWGNo ZzMyVGVtcHMmIHRlbXBzKSB7Ci1AQCAtNzI3NSwxNyArNzMzNCwxOCBAQCBjbGFzcyBCYXNlQ29t cGlsZXIgZmluYWwgOiBwdWJsaWMgQmFzZUNvbXBpbGVySW50ZXJmYWNlIHsKLSAgICAgICAgICAg bWFzbS53YXNtQXRvbWljRXhjaGFuZ2UoYWNjZXNzLCBzcmNBZGRyLCBydiwgcmQpOwotICAgICAg ICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgICAgfQotICNlbmRpZgotICAgICAgIGNhc2UgU2Nh bGFyOjpVaW50MTY6Ci0gICAgICAgY2FzZSBTY2FsYXI6OkludDMyOgotICAgICAgIGNhc2UgU2Nh bGFyOjpVaW50MzI6Ci0tI2lmIGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTMzIpIHx8IGRlZmluZWQo SlNfQ09ERUdFTl9NSVBTNjQpCi0rI2lmIGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTMzIpIHx8IGRl ZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpIHx8IFwKLSsgICAgZGVmaW5lZChKU19DT0RFR0VOX1BQ QzY0KQotICAgICAgICAgbWFzbS53YXNtQXRvbWljRXhjaGFuZ2UoYWNjZXNzLCBzcmNBZGRyLCBy diwgdGVtcHNbMF0sIHRlbXBzWzFdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGVtcHNbMl0sIHJkKTsKLSAjZWxzZQotICAgICAgICAgbWFzbS53YXNtQXRvbWljRXhjaGFuZ2Uo YWNjZXNzLCBzcmNBZGRyLCBydiwgcmQpOwotICNlbmRpZgotICAgICAgICAgYnJlYWs7Ci0gICAg ICAgZGVmYXVsdDoKLSAgICAgICAgIE1PWl9DUkFTSCgiQmFkIHR5cGUgZm9yIGF0b21pYyBvcGVy YXRpb24iKTsKLUBAIC03MzQyLDE2ICs3NDAyLDE4IEBAIGNsYXNzIEJhc2VDb21waWxlciBmaW5h bCA6IHB1YmxpYyBCYXNlQ29tcGlsZXJJbnRlcmZhY2UgewotICNlbGlmIGRlZmluZWQoSlNfQ09E RUdFTl9NSVBTMzIpCi0gICAgIHBvcDJ4STY0KHIwLCByMSk7Ci0gICAgICp0ZW1wID0gbmVlZEkz MigpOwotICNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9BUk0pCi0gICAgIHBvcDJ4STY0KHIwLCBy MSk7Ci0gICAgICp0ZW1wID0gbmVlZEkzMigpOwotICNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9B Uk02NCkKLSAgICAgcG9wMnhJNjQocjAsIHIxKTsKLSsjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5f UFBDNjQpCi0rICAgIHBvcDJ4STY0KHIwLCByMSk7Ci0gI2Vsc2UKLSAgICAgTU9aX0NSQVNIKCJC YXNlQ29tcGlsZXIgcG9ydGluZyBpbnRlcmZhY2U6IHBvcDJ4STY0Rm9yTXVsSTY0Iik7Ci0gI2Vu ZGlmCi0gICB9Ci0gCi0gICB2b2lkIHBvcDJ4STY0Rm9yRGl2STY0KFJlZ0k2NCogcjAsIFJlZ0k2 NCogcjEsIFJlZ0k2NCogcmVzZXJ2ZWQpIHsKLSAjaWYgZGVmaW5lZChKU19DT0RFR0VOX1g2NCkK LSAgICAgLy8gcjAgbXVzdCBiZSByYXgsIGFuZCByZHggd2lsbCBiZSBjbG9iYmVyZWQuCi1AQCAt NzUyOSwxNyArNzU5MSwxOCBAQCBjbGFzcyBCYXNlQ29tcGlsZXIgZmluYWwgOiBwdWJsaWMgQmFz ZUNvbXBpbGVySW50ZXJmYWNlIHsKLSAgICAgICAgIHJleHBlY3QgPSBiYy0+cG9wSTMyKCk7Ci0g ICAgICAgfQotICAgICAgIHNldFJkKGJjLT5uZWVkSTMyKCkpOwotICAgICB9Ci0gICAgIH5Qb3BB dG9taWNDbXBYY2hnMzJSZWdzKCkgewotICAgICAgIGJjLT5mcmVlSTMyKHJuZXcpOwotICAgICAg IGJjLT5mcmVlSTMyKHJleHBlY3QpOwotICAgICB9Ci0tI2VsaWYgZGVmaW5lZChKU19DT0RFR0VO X01JUFMzMikgfHwgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2NCkKLSsjZWxpZiBkZWZpbmVkKEpT X0NPREVHRU5fTUlQUzMyKSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0KSB8fCBcCi0rICAg ICAgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotICAgICBleHBsaWNpdCBQb3BBdG9taWNDbXBY Y2hnMzJSZWdzKEJhc2VDb21waWxlciogYmMsIFZhbFR5cGUgdHlwZSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBTY2FsYXI6OlR5cGUgdmlld1R5cGUpCi0gICAgICAgICA6 IEJhc2UoYmMpIHsKLSAgICAgICBpZiAodHlwZSA9PSBWYWxUeXBlOjpJNjQpIHsKLSAgICAgICAg IHJuZXcgPSBiYy0+cG9wSTY0VG9JMzIoKTsKLSAgICAgICAgIHJleHBlY3QgPSBiYy0+cG9wSTY0 VG9JMzIoKTsKLSAgICAgICB9IGVsc2UgewotICAgICAgICAgcm5ldyA9IGJjLT5wb3BJMzIoKTsK LUBAIC03NjA2LDE3ICs3NjY5LDE3IEBAIGNsYXNzIEJhc2VDb21waWxlciBmaW5hbCA6IHB1Ymxp YyBCYXNlQ29tcGlsZXJJbnRlcmZhY2UgewotICAgICAgIHJleHBlY3QgPSBiYy0+cG9wSTY0KCk7 Ci0gICAgICAgc2V0UmQoYmMtPm5lZWRJNjRQYWlyKCkpOwotICAgICB9Ci0gICAgIH5Qb3BBdG9t aWNDbXBYY2hnNjRSZWdzKCkgewotICAgICAgIGJjLT5mcmVlSTY0KHJleHBlY3QpOwotICAgICAg IGJjLT5mcmVlSTY0KHJuZXcpOwotICAgICB9Ci0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX0FS TTY0KSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzMyKSB8fCBcCi0tICAgIGRlZmluZWQoSlNf Q09ERUdFTl9NSVBTNjQpCi0rICAgIGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpIHx8IGRlZmlu ZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSAgICAgZXhwbGljaXQgUG9wQXRvbWljQ21wWGNoZzY0UmVn cyhCYXNlQ29tcGlsZXIqIGJjKSA6IEJhc2UoYmMpIHsKLSAgICAgICBybmV3ID0gYmMtPnBvcEk2 NCgpOwotICAgICAgIHJleHBlY3QgPSBiYy0+cG9wSTY0KCk7Ci0gICAgICAgc2V0UmQoYmMtPm5l ZWRJNjQoKSk7Ci0gICAgIH0KLSAgICAgflBvcEF0b21pY0NtcFhjaGc2NFJlZ3MoKSB7Ci0gICAg ICAgYmMtPmZyZWVJNjQocmV4cGVjdCk7Ci0gICAgICAgYmMtPmZyZWVJNjQocm5ldyk7Ci1AQCAt NzY1OCwxNyArNzcyMSwxOCBAQCBjbGFzcyBCYXNlQ29tcGlsZXIgZmluYWwgOiBwdWJsaWMgQmFz ZUNvbXBpbGVySW50ZXJmYWNlIHsKLSAgICAgICBiYy0+bmVlZEk2NChiYy0+c3BlY2lmaWNfLmVk eF9lYXgpOwotICAgICAgIHNldFJkKGJjLT5zcGVjaWZpY18uZWR4X2VheCk7Ci0gICAgIH0KLSAg ICAgflBvcEF0b21pY0xvYWQ2NFJlZ3MoKSB7IGJjLT5mcmVlSTMyKGJjLT5zcGVjaWZpY18uZWN4 KTsgfQotICMgIGVsaWYgZGVmaW5lZChKU19DT0RFR0VOX0FSTSkKLSAgICAgZXhwbGljaXQgUG9w QXRvbWljTG9hZDY0UmVncyhCYXNlQ29tcGlsZXIqIGJjKSA6IEJhc2UoYmMpIHsKLSAgICAgICBz ZXRSZChiYy0+bmVlZEk2NFBhaXIoKSk7Ci0gICAgIH0KLS0jICBlbGlmIGRlZmluZWQoSlNfQ09E RUdFTl9NSVBTMzIpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpCi0rIyAgZWxpZiBkZWZp bmVkKEpTX0NPREVHRU5fTUlQUzMyKSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0KSB8fCBc Ci0rICAgICAgICBkZWZpbmVkKEpTX0NPREVHRU5fUFBDNjQpCi0gICAgIGV4cGxpY2l0IFBvcEF0 b21pY0xvYWQ2NFJlZ3MoQmFzZUNvbXBpbGVyKiBiYykgOiBCYXNlKGJjKSB7Ci0gICAgICAgc2V0 UmQoYmMtPm5lZWRJNjQoKSk7Ci0gICAgIH0KLSAjICBlbHNlCi0gICAgIGV4cGxpY2l0IFBvcEF0 b21pY0xvYWQ2NFJlZ3MoQmFzZUNvbXBpbGVyKiBiYykgOiBCYXNlKGJjKSB7Ci0gICAgICAgTU9a X0NSQVNIKCJCYXNlQ29tcGlsZXIgcG9ydGluZyBpbnRlcmZhY2U6IFBvcEF0b21pY0xvYWQ2NFJl Z3MiKTsKLSAgICAgfQotICMgIGVuZGlmCi1AQCAtNzc0NSwxNyArNzgwOSwxOCBAQCBjbGFzcyBC YXNlQ29tcGlsZXIgZmluYWwgOiBwdWJsaWMgQmFzZUNvbXBpbGVySW50ZXJmYWNlIHsKLSAgICAg ICBydiA9IHR5cGUgPT0gVmFsVHlwZTo6STY0ID8gYmMtPnBvcEk2NFRvSTMyKCkgOiBiYy0+cG9w STMyKCk7Ci0gICAgICAgdGVtcHMuYWxsb2NhdGUoYmMpOwotICAgICAgIHNldFJkKGJjLT5uZWVk STMyKCkpOwotICAgICB9Ci0gICAgIH5Qb3BBdG9taWNSTVczMlJlZ3MoKSB7Ci0gICAgICAgYmMt PmZyZWVJMzIocnYpOwotICAgICAgIHRlbXBzLm1heWJlRnJlZShiYyk7Ci0gICAgIH0KLS0jZWxp ZiBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzMyKSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0 KQotKyNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTMzIpIHx8IGRlZmluZWQoSlNfQ09ERUdF Tl9NSVBTNjQpIHx8IFwKLSsgICAgICBkZWZpbmVkKEpTX0NPREVHRU5fUFBDNjQpCi0gICAgIGV4 cGxpY2l0IFBvcEF0b21pY1JNVzMyUmVncyhCYXNlQ29tcGlsZXIqIGJjLCBWYWxUeXBlIHR5cGUs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTY2FsYXI6OlR5cGUgdmlld1R5cGUs IEF0b21pY09wIG9wKQotICAgICAgICAgOiBCYXNlKGJjKSB7Ci0gICAgICAgcnYgPSB0eXBlID09 IFZhbFR5cGU6Okk2NCA/IGJjLT5wb3BJNjRUb0kzMigpIDogYmMtPnBvcEkzMigpOwotICAgICAg IGlmIChTY2FsYXI6OmJ5dGVTaXplKHZpZXdUeXBlKSA8IDQpIHsKLSAgICAgICAgIHRlbXBzLmFs bG9jYXRlKGJjKTsKLSAgICAgICB9Ci0gCi1AQCAtNzgzMywxNyArNzg5OCwxNyBAQCBjbGFzcyBC YXNlQ29tcGlsZXIgZmluYWwgOiBwdWJsaWMgQmFzZUNvbXBpbGVySW50ZXJmYWNlIHsKLSAgICAg ICB0ZW1wID0gYmMtPm5lZWRJNjRQYWlyKCk7Ci0gICAgICAgc2V0UmQoYmMtPm5lZWRJNjRQYWly KCkpOwotICAgICB9Ci0gICAgIH5Qb3BBdG9taWNSTVc2NFJlZ3MoKSB7Ci0gICAgICAgYmMtPmZy ZWVJNjQocnYpOwotICAgICAgIGJjLT5mcmVlSTY0KHRlbXApOwotICAgICB9Ci0gI2VsaWYgZGVm aW5lZChKU19DT0RFR0VOX0FSTTY0KSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzMyKSB8fCBc Ci0tICAgIGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpCi0rICAgIGRlZmluZWQoSlNfQ09ERUdF Tl9NSVBTNjQpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSAgICAgZXhwbGljaXQgUG9w QXRvbWljUk1XNjRSZWdzKEJhc2VDb21waWxlciogYmMsIEF0b21pY09wKSA6IEJhc2UoYmMpIHsK LSAgICAgICBydiA9IGJjLT5wb3BJNjQoKTsKLSAgICAgICB0ZW1wID0gYmMtPm5lZWRJNjQoKTsK LSAgICAgICBzZXRSZChiYy0+bmVlZEk2NCgpKTsKLSAgICAgfQotICAgICB+UG9wQXRvbWljUk1X NjRSZWdzKCkgewotICAgICAgIGJjLT5mcmVlSTY0KHJ2KTsKLSAgICAgICBiYy0+ZnJlZUk2NCh0 ZW1wKTsKLUBAIC03ODg4LDE3ICs3OTUzLDE4IEBAIGNsYXNzIEJhc2VDb21waWxlciBmaW5hbCA6 IHB1YmxpYyBCYXNlQ29tcGlsZXJJbnRlcmZhY2UgewotICNlbGlmIGRlZmluZWQoSlNfQ09ERUdF Tl9BUk0pIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9BUk02NCkKLSAgICAgZXhwbGljaXQgUG9wQXRv bWljWGNoZzMyUmVncyhCYXNlQ29tcGlsZXIqIGJjLCBWYWxUeXBlIHR5cGUsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgU2NhbGFyOjpUeXBlIHZpZXdUeXBlKQotICAgICAgICAg OiBCYXNlKGJjKSB7Ci0gICAgICAgcnYgPSAodHlwZSA9PSBWYWxUeXBlOjpJNjQpID8gYmMtPnBv cEk2NFRvSTMyKCkgOiBiYy0+cG9wSTMyKCk7Ci0gICAgICAgc2V0UmQoYmMtPm5lZWRJMzIoKSk7 Ci0gICAgIH0KLSAgICAgflBvcEF0b21pY1hjaGczMlJlZ3MoKSB7IGJjLT5mcmVlSTMyKHJ2KTsg fQotLSNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTMzIpIHx8IGRlZmluZWQoSlNfQ09ERUdF Tl9NSVBTNjQpCi0rI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX01JUFMzMikgfHwgZGVmaW5lZChK U19DT0RFR0VOX01JUFM2NCkgfHwgXAotKyAgICAgIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkK LSAgICAgZXhwbGljaXQgUG9wQXRvbWljWGNoZzMyUmVncyhCYXNlQ29tcGlsZXIqIGJjLCBWYWxU eXBlIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2NhbGFyOjpUeXBl IHZpZXdUeXBlKQotICAgICAgICAgOiBCYXNlKGJjKSB7Ci0gICAgICAgcnYgPSAodHlwZSA9PSBW YWxUeXBlOjpJNjQpID8gYmMtPnBvcEk2NFRvSTMyKCkgOiBiYy0+cG9wSTMyKCk7Ci0gICAgICAg aWYgKFNjYWxhcjo6Ynl0ZVNpemUodmlld1R5cGUpIDwgNCkgewotICAgICAgICAgdGVtcHMuYWxs b2NhdGUoYmMpOwotICAgICAgIH0KLSAgICAgICBzZXRSZChiYy0+bmVlZEkzMigpKTsKLUBAIC03 OTU0LDE3ICs4MDIwLDE4IEBAIGNsYXNzIEJhc2VDb21waWxlciBmaW5hbCA6IHB1YmxpYyBCYXNl Q29tcGlsZXJJbnRlcmZhY2UgewotICAgICB+UG9wQXRvbWljWGNoZzY0UmVncygpIHsgYmMtPmZy ZWVJNjQocnYpOyB9Ci0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX0FSTSkKLSAgICAgLy8gQm90 aCBydiBhbmQgcmQgbXVzdCBiZSBvZGQvZXZlbiBwYWlycy4KLSAgICAgZXhwbGljaXQgUG9wQXRv bWljWGNoZzY0UmVncyhCYXNlQ29tcGlsZXIqIGJjKSA6IEJhc2UoYmMpIHsKLSAgICAgICBydiA9 IGJjLT5wb3BJNjRUb1NwZWNpZmljKGJjLT5uZWVkSTY0UGFpcigpKTsKLSAgICAgICBzZXRSZChi Yy0+bmVlZEk2NFBhaXIoKSk7Ci0gICAgIH0KLSAgICAgflBvcEF0b21pY1hjaGc2NFJlZ3MoKSB7 IGJjLT5mcmVlSTY0KHJ2KTsgfQotLSNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTMzIpIHx8 IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpCi0rI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX01J UFMzMikgfHwgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2NCkgfHwgXAotKyAgICAgIGRlZmluZWQo SlNfQ09ERUdFTl9QUEM2NCkKLSAgICAgZXhwbGljaXQgUG9wQXRvbWljWGNoZzY0UmVncyhCYXNl Q29tcGlsZXIqIGJjKSA6IEJhc2UoYmMpIHsKLSAgICAgICBydiA9IGJjLT5wb3BJNjRUb1NwZWNp ZmljKGJjLT5uZWVkSTY0KCkpOwotICAgICAgIHNldFJkKGJjLT5uZWVkSTY0KCkpOwotICAgICB9 Ci0gICAgIH5Qb3BBdG9taWNYY2hnNjRSZWdzKCkgeyBiYy0+ZnJlZUk2NChydik7IH0KLSAjZWxz ZQotICAgICBleHBsaWNpdCBQb3BBdG9taWNYY2hnNjRSZWdzKEJhc2VDb21waWxlciogYmMpIDog QmFzZShiYykgewotICAgICAgIE1PWl9DUkFTSCgiQmFzZUNvbXBpbGVyIHBvcnRpbmcgaW50ZXJm YWNlOiB4Y2hnNjQiKTsKLUBAIC04OTY4LDE2ICs5MDM1LDE4IEBAIHN0YXRpYyB2b2lkIEN0ekkz MihNYWNyb0Fzc2VtYmxlciYgbWFzbSwgUmVnSTMyIHJzZCkgewotIAotIC8vIEN1cnJlbnRseSBj b21tb24gdG8gUG9wY250STMyIGFuZCBQb3BjbnRJNjQKLSBzdGF0aWMgUmVnSTMyIFBvcGNudFRl bXAoQmFzZUNvbXBpbGVyJiBiYykgewotICNpZiBkZWZpbmVkKEpTX0NPREVHRU5fWDg2KSB8fCBk ZWZpbmVkKEpTX0NPREVHRU5fWDY0KQotICAgcmV0dXJuIEFzc2VtYmxlclg4NlNoYXJlZDo6SGFz UE9QQ05UKCkgPyBSZWdJMzI6OkludmFsaWQoKSA6IGJjLm5lZWRJMzIoKTsKLSAjZWxpZiBkZWZp bmVkKEpTX0NPREVHRU5fQVJNKSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fQVJNNjQpIHx8IFwKLSAg ICAgZGVmaW5lZChKU19DT0RFR0VOX01JUFMzMikgfHwgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2 NCkKLSAgIHJldHVybiBiYy5uZWVkSTMyKCk7Ci0rI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX1BQ QzY0KQotKyAgcmV0dXJuIFJlZ0kzMjo6SW52YWxpZCgpOyAvLyBXZSByb2NrLgotICNlbHNlCi0g ICBNT1pfQ1JBU0goIkJhc2VDb21waWxlciBwbGF0Zm9ybSBob29rOiBQb3BjbnRUZW1wIik7Ci0g I2VuZGlmCi0gfQotIAotIHN0YXRpYyB2b2lkIFBvcGNudEkzMihCYXNlQ29tcGlsZXImIGJjLCBS ZWdJMzIgcnNkLCBSZWdJMzIgdGVtcCkgewotICAgYmMubWFzbS5wb3BjbnQzMihyc2QsIHJzZCwg dGVtcCk7Ci0gfQotQEAgLTExOTgyLDE3ICsxMjA1MSwxNyBAQCBSZWdJMzIgQmFzZUNvbXBpbGVy Ojpwb3BNZW1vcnkzMkFjY2VzcyhNZW1vcnlBY2Nlc3NEZXNjKiBhY2Nlc3MsCi0gICAgIGJjZUNo ZWNrTG9jYWwoYWNjZXNzLCBjaGVjaywgbG9jYWwpOwotICAgfQotIAotICAgcmV0dXJuIHBvcEkz MigpOwotIH0KLSAKLSB2b2lkIEJhc2VDb21waWxlcjo6cHVzaEhlYXBCYXNlKCkgewotICNpZiBk ZWZpbmVkKEpTX0NPREVHRU5fWDY0KSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fQVJNNjQpIHx8IFwK LS0gICAgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2NCkKLSsgICAgZGVmaW5lZChKU19DT0RFR0VO X01JUFM2NCkgfHwgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotICAgUmVnSTY0IGhlYXBCYXNl ID0gbmVlZEk2NCgpOwotICAgbW92ZUk2NChSZWdJNjQoUmVnaXN0ZXI2NChIZWFwUmVnKSksIGhl YXBCYXNlKTsKLSAgIHB1c2hJNjQoaGVhcEJhc2UpOwotICNlbGlmIGRlZmluZWQoSlNfQ09ERUdF Tl9BUk0pIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTMzIpCi0gICBSZWdJMzIgaGVhcEJhc2Ug PSBuZWVkSTMyKCk7Ci0gICBtb3ZlSTMyKFJlZ0kzMihIZWFwUmVnKSwgaGVhcEJhc2UpOwotICAg cHVzaEkzMihoZWFwQmFzZSk7Ci0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX1g4NikKLUBAIC0x NzI0NCwxNyArMTczMTMsMTkgQEAgYm9vbCBqczo6d2FzbTo6QmFzZWxpbmVQbGF0Zm9ybVN1cHBv cnQoKSB7Ci0gICAvLyB0aGV5IGFyZSBkZWZpbml0ZWx5IGltcGxlbWVudGVkIG9uIHRoZSBDb3J0 ZXgtQTcgYW5kIENvcnRleC1BMTUKLSAgIC8vIGFuZCBvbiBhbGwgQVJNdjggc3lzdGVtcy4KLSAg IGlmICghSGFzSURJVigpKSB7Ci0gICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAjZW5kaWYKLSAj aWYgZGVmaW5lZChKU19DT0RFR0VOX1g2NCkgfHwgZGVmaW5lZChKU19DT0RFR0VOX1g4NikgfHwg ICBcCi0gICAgIGRlZmluZWQoSlNfQ09ERUdFTl9BUk0pIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9B Uk02NCkgfHwgXAotLSAgICBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzMyKSB8fCBkZWZpbmVkKEpT X0NPREVHRU5fTUlQUzY0KQotKyAgICBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzMyKSB8fCBkZWZp bmVkKEpTX0NPREVHRU5fTUlQUzY0KSB8fCBcCi0rICAgIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2 NCkKLSsgIC8vIFBQQzY0IGdhdGVzIG9uIG90aGVyIHByZXJlcXVpc2l0ZXMgbm90IHNwZWNpZmll ZCBoZXJlLgotICAgcmV0dXJuIHRydWU7Ci0gI2Vsc2UKLSAgIHJldHVybiBmYWxzZTsKLSAjZW5k aWYKLSB9Ci0gCi0gYm9vbCBqczo6d2FzbTo6QmFzZWxpbmVDb21waWxlRnVuY3Rpb25zKGNvbnN0 IE1vZHVsZUVudmlyb25tZW50JiBtb2R1bGVFbnYsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IENvbXBpbGVyRW52aXJvbm1lbnQmIGNvbXBpbGVyRW52LAot ZGlmZiAtLWdpdCBhL2pzL3NyYy93YXNtL1dhc21Db21waWxlLmNwcCBiL2pzL3NyYy93YXNtL1dh c21Db21waWxlLmNwcAotaW5kZXggMGY0NTZhYWFhNS4uZjA2OTRmMWI5ZSAxMDA2NDQKLS0tLSBh L2pzL3NyYy93YXNtL1dhc21Db21waWxlLmNwcAotKysrIGIvanMvc3JjL3dhc20vV2FzbUNvbXBp bGUuY3BwCi1AQCAtNDUsMTYgKzQ1LDE3IEBAIHVzaW5nIG5hbWVzcGFjZSBqczo6d2FzbTsKLSB1 aW50MzJfdCB3YXNtOjpPYnNlcnZlZENQVUZlYXR1cmVzKCkgewotICAgZW51bSBBcmNoIHsKLSAg ICAgWDg2ID0gMHgxLAotICAgICBYNjQgPSAweDIsCi0gICAgIEFSTSA9IDB4MywKLSAgICAgTUlQ UyA9IDB4NCwKLSAgICAgTUlQUzY0ID0gMHg1LAotICAgICBBUk02NCA9IDB4NiwKLSsgICAgUFBD NjQgPSAweDcsCi0gICAgIEFSQ0hfQklUUyA9IDMKLSAgIH07Ci0gCi0gI2lmIGRlZmluZWQoSlNf Q09ERUdFTl9YODYpCi0gICBNT1pfQVNTRVJUKHVpbnQzMl90KGppdDo6Q1BVSW5mbzo6R2V0U1NF VmVyc2lvbigpKSA8PQotICAgICAgICAgICAgICAoVUlOVDMyX01BWCA+PiBBUkNIX0JJVFMpKTsK LSAgIHJldHVybiBYODYgfCAodWludDMyX3Qoaml0OjpDUFVJbmZvOjpHZXRTU0VWZXJzaW9uKCkp IDw8IEFSQ0hfQklUUyk7Ci0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX1g2NCkKLUBAIC02OCwx NiArNjksMTkgQEAgdWludDMyX3Qgd2FzbTo6T2JzZXJ2ZWRDUFVGZWF0dXJlcygpIHsKLSAgIE1P Wl9BU1NFUlQoaml0OjpHZXRBUk02NEZsYWdzKCkgPD0gKFVJTlQzMl9NQVggPj4gQVJDSF9CSVRT KSk7Ci0gICByZXR1cm4gQVJNNjQgfCAoaml0OjpHZXRBUk02NEZsYWdzKCkgPDwgQVJDSF9CSVRT KTsKLSAjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzMyKQotICAgTU9aX0FTU0VSVChqaXQ6 OkdldE1JUFNGbGFncygpIDw9IChVSU5UMzJfTUFYID4+IEFSQ0hfQklUUykpOwotICAgcmV0dXJu IE1JUFMgfCAoaml0OjpHZXRNSVBTRmxhZ3MoKSA8PCBBUkNIX0JJVFMpOwotICNlbGlmIGRlZmlu ZWQoSlNfQ09ERUdFTl9NSVBTNjQpCi0gICBNT1pfQVNTRVJUKGppdDo6R2V0TUlQU0ZsYWdzKCkg PD0gKFVJTlQzMl9NQVggPj4gQVJDSF9CSVRTKSk7Ci0gICByZXR1cm4gTUlQUzY0IHwgKGppdDo6 R2V0TUlQU0ZsYWdzKCkgPDwgQVJDSF9CSVRTKTsKLSsjZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5f UFBDNjQpCi0rICBNT1pfQVNTRVJUKGppdDo6R2V0UFBDNjRGbGFncygpIDw9IChVSU5UMzJfTUFY ID4+IEFSQ0hfQklUUykpOwotKyAgcmV0dXJuIFBQQzY0IHwgKGppdDo6R2V0UFBDNjRGbGFncygp IDw8IEFSQ0hfQklUUyk7Ci0gI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX05PTkUpCi0gICByZXR1 cm4gMDsKLSAjZWxzZQotICMgIGVycm9yICJ1bmtub3duIGFyY2hpdGVjdHVyZSIKLSAjZW5kaWYK LSB9Ci0gCi0gRmVhdHVyZUFyZ3MgRmVhdHVyZUFyZ3M6OmJ1aWxkKEpTQ29udGV4dCogY3gsIGNv bnN0IEZlYXR1cmVPcHRpb25zJiBvcHRpb25zKSB7Ci1kaWZmIC0tZ2l0IGEvanMvc3JjL3dhc20v V2FzbUZyYW1lLmggYi9qcy9zcmMvd2FzbS9XYXNtRnJhbWUuaAotaW5kZXggODVmMjYxMmQxNC4u OTkxOTIwNTczOSAxMDA2NDQKLS0tLSBhL2pzL3NyYy93YXNtL1dhc21GcmFtZS5oCi0rKysgYi9q cy9zcmMvd2FzbS9XYXNtRnJhbWUuaAotQEAgLTUzLDE2ICs1MywyNSBAQCBjb25zdGV4cHIgdWlu dHB0cl90IEV4aXRPckppdEVudHJ5RlBUYWcgPSAweDE7Ci0gLy8gYmVmb3JlIHRoZSBmdW5jdGlv biBoYXMgbWFkZSBpdHMgc3RhY2sgcmVzZXJ2YXRpb24sIHRoZSBzdGFjayBhbGlnbm1lbnQgaXMK LSAvLyBzaXplb2YoRnJhbWUpICUgV2FzbVN0YWNrQWxpZ25tZW50LgotIC8vCi0gLy8gRHVyaW5n IE1hY3JvQXNzZW1ibGVyIGNvZGUgZ2VuZXJhdGlvbiwgdGhlIGJ5dGVzIHB1c2hlZCBhZnRlciB0 aGUgd2FzbTo6RnJhbWUKLSAvLyBhcmUgY291bnRlZCBieSBtYXNtLmZyYW1lUHVzaGVkLiBUaHVz LCB0aGUgc3RhY2sgYWxpZ25tZW50IGF0IGFueSBwb2ludCBpbgotIC8vIHRpbWUgaXMgKHNpemVv Zih3YXNtOjpGcmFtZSkgKyBtYXNtLmZyYW1lUHVzaGVkKSAlIFdhc21TdGFja0FsaWdubWVudC4K LSAKLSBjbGFzcyBGcmFtZSB7Ci0rI2lmIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSsgIC8v IFNpbmNlIFdhc20gY2FuIGNhbGwgZGlyZWN0bHkgdG8gQUJJLWNvbXBsaWFudCByb3V0aW5lcywg dGhlIEZyYW1lIG11c3QKLSsgIC8vIGhhdmUgYW4gQUJJLWNvbXBsaWFudCBsaW5rYWdlIGFyZWEu IFdlIGFsbG9jYXRlIGZvdXIgZG91Ymxld29yZHMsIHRoZQotKyAgLy8gbWluaW11bSBzaXplLgot KyAgdm9pZCAqX3BwY19zcF87Ci0rICB2b2lkICpfcHBjX2NyXzsKLSsgIHZvaWQgKl9wcGNfbHJf OwotKyAgdm9pZCAqX3BwY190b2NfOwotKyNlbmRpZgotICAgLy8gU2VlIEdlbmVyYXRlQ2FsbGFi bGVFcGlsb2d1ZSBmb3Igd2h5IHRoaXMgbXVzdCBiZQotICAgLy8gdGhlIGZpcnN0IGZpZWxkIG9m IHdhc206OkZyYW1lIChpbiBhIGRvd253YXJkLWdyb3dpbmcgc3RhY2spLgotICAgLy8gSXQncyBl aXRoZXIgdGhlIGNhbGxlcidzIEZyYW1lKiwgZm9yIHdhc20gY2FsbGVycywgb3IgdGhlIEpJVCBj YWxsZXIgZnJhbWUKLSAgIC8vIHBsdXMgYSB0YWcgb3RoZXJ3aXNlLgotICAgdWludDhfdCogY2Fs bGVyRlBfOwotIAotICAgLy8gVGhlIHJldHVybiBhZGRyZXNzIHB1c2hlZCBieSB0aGUgY2FsbCAo aW4gdGhlIGNhc2Ugb2YgQVJNL01JUFMgdGhlIHJldHVybgotICAgLy8gYWRkcmVzcyBpcyBwdXNo ZWQgYnkgdGhlIGZpcnN0IGluc3RydWN0aW9uIG9mIHRoZSBwcm9sb2d1ZSkuCi1AQCAtMTE1LDE4 ICsxMjQsMjEgQEAgY2xhc3MgRnJhbWUgewotICAgc3RhdGljIHVpbnQ4X3QqIGFkZEV4aXRPckpp dEVudHJ5RlBUYWcoY29uc3QgRnJhbWUqIGZwKSB7Ci0gICAgIE1PWl9BU1NFUlQoIWlzRXhpdE9y Sml0RW50cnlGUChmcCkpOwotICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGZwKSB8Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBFeGl0T3JKaXRFbnRyeUZQVGFnKTsKLSAgIH0KLSB9OwotIAotIHN0 YXRpY19hc3NlcnQoIXN0ZDo6aXNfcG9seW1vcnBoaWNfdjxGcmFtZT4sICJGcmFtZSBkb2Vzbid0 IG5lZWQgYSB2dGFibGUuIik7Ci0rI2lmICFkZWZpbmVkKEpTX0NPREVHRU5fUFBDNjQpCi0rLy8g Tm90IG9uIFBvd2VyUEMsIGl0J3Mgbm90LgotIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEZyYW1lKSA9 PSAyICogc2l6ZW9mKHZvaWQqKSwKLSAgICAgICAgICAgICAgICJGcmFtZSBpcyBhIHR3byBwb2lu dGVyIHN0cnVjdHVyZSIpOwotKyNlbmRpZgotIAotIGNsYXNzIEZyYW1lV2l0aFRscyA6IHB1Ymxp YyBGcmFtZSB7Ci0gICBUbHNEYXRhKiBjYWxsZWVUbHNfOwotICAgVGxzRGF0YSogY2FsbGVyVGxz XzsKLSAKLSAgcHVibGljOgotICAgVGxzRGF0YSogY2FsbGVlVGxzKCkgeyByZXR1cm4gY2FsbGVl VGxzXzsgfQotICAgVGxzRGF0YSogY2FsbGVyVGxzKCkgeyByZXR1cm4gY2FsbGVyVGxzXzsgfQot ZGlmZiAtLWdpdCBhL2pzL3NyYy93YXNtL1dhc21GcmFtZUl0ZXIuY3BwIGIvanMvc3JjL3dhc20v V2FzbUZyYW1lSXRlci5jcHAKLWluZGV4IGRmZmFiNTM5NDAuLjVkYThkNmM3MzAgMTAwNjQ0Ci0t LS0gYS9qcy9zcmMvd2FzbS9XYXNtRnJhbWVJdGVyLmNwcAotKysrIGIvanMvc3JjL3dhc20vV2Fz bUZyYW1lSXRlci5jcHAKLUBAIC0zNTgsMTYgKzM1OCwyMSBAQCBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgU2V0RlAgPSAxNjsKLSBzdGF0aWMgY29uc3QgdW5zaWduZWQgUG9wcGVkRlAgPSA0OwotIHN0 YXRpY19hc3NlcnQoQmVmb3JlUHVzaFJldEFkZHIgPT0gMCwgIlJlcXVpcmVkIGJ5IFN0YXJ0VW53 aW5kaW5nIik7Ci0gc3RhdGljX2Fzc2VydChQdXNoZWRGUCA+IFB1c2hlZFJldEFkZHIsICJSZXF1 aXJlZCBieSBTdGFydFVud2luZGluZyIpOwotICNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9NSVBT MzIpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9NSVBTNjQpCi0gc3RhdGljIGNvbnN0IHVuc2lnbmVk IFB1c2hlZFJldEFkZHIgPSA4OwotIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBQdXNoZWRGUCA9IDEy OwotIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTZXRGUCA9IDE2OwotIHN0YXRpYyBjb25zdCB1bnNp Z25lZCBQb3BwZWRGUCA9IDQ7Ci0rI2VsaWYgZGVmaW5lZChKU19DT0RFR0VOX1BQQzY0KQotK3N0 YXRpYyBjb25zdCB1bnNpZ25lZCBQdXNoZWRSZXRBZGRyID0gMTI7Ci0rc3RhdGljIGNvbnN0IHVu c2lnbmVkIFB1c2hlZEZQID0gMTY7Ci0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIFNldEZQID0gMjA7 Ci0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIFBvcHBlZEZQID0gODsKLSAjZWxpZiBkZWZpbmVkKEpT X0NPREVHRU5fTk9ORSkKLSAvLyBTeW50aGV0aWMgdmFsdWVzIHRvIHNhdGlzZnkgYXNzZXJ0cyBh bmQgYXZvaWQgY29tcGlsZXIgd2FybmluZ3MuCi0gc3RhdGljIGNvbnN0IHVuc2lnbmVkIFB1c2hl ZFJldEFkZHIgPSAwOwotIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBQdXNoZWRGUCA9IDE7Ci0gc3Rh dGljIGNvbnN0IHVuc2lnbmVkIFNldEZQID0gMjsKLSBzdGF0aWMgY29uc3QgdW5zaWduZWQgUG9w cGVkRlAgPSAzOwotICNlbHNlCi0gIyAgZXJyb3IgIlVua25vd24gYXJjaGl0ZWN0dXJlISIKLUBA IC00NTMsMTYgKzQ1OCwzOCBAQCBzdGF0aWMgdm9pZCBHZW5lcmF0ZUNhbGxhYmxlUHJvbG9ndWUo TWFjcm9Bc3NlbWJsZXImIG1hc20sIHVpbnQzMl90KiBlbnRyeSkgewotICAgICAgICAgICAgICBN ZW1PcGVyYW5kKHNwLCBGcmFtZTo6Y2FsbGVyRlBPZmZzZXQoKSkpOwotICAgICBNT1pfQVNTRVJU X0lGKCFtYXNtLm9vbSgpLCBQdXNoZWRGUCA9PSBtYXNtLmN1cnJlbnRPZmZzZXQoKSAtICplbnRy eSk7Ci0gICAgIG1hc20uTW92KEFSTVJlZ2lzdGVyKEZyYW1lUG9pbnRlciwgNjQpLCBzcCk7Ci0g ICAgIE1PWl9BU1NFUlRfSUYoIW1hc20ub29tKCksIFNldEZQID09IG1hc20uY3VycmVudE9mZnNl dCgpIC0gKmVudHJ5KTsKLSAKLSAgICAgLy8gQW5kIHJlc3RvcmUgdGhlIFNQLXJlZyBzZXR0aW5n LCBwZXIgY29tbWVudCBhYm92ZS4KLSAgICAgbWFzbS5TZXRTdGFja1BvaW50ZXI2NChzdGFzaGVk U1ByZWcpOwotICAgfQotKyNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSsgIHsKLSsg ICAgKmVudHJ5ID0gbWFzbS5jdXJyZW50T2Zmc2V0KCk7Ci0rCi0rICAgIC8vIFRoZXNlIG11c3Qg YmUgaW4gdGhpcyBwcmVjaXNlIG9yZGVyLiBGb3J0dW5hdGVseSB3ZSBjYW4gc3Vic3VtZSB0aGUK LSsgICAgLy8gU1BSIGxvYWQgaW50byB0aGUgaW5pdGlhbCAidmVyc2UiIHNpbmNlIGl0IGlzIHRy ZWF0ZWQgYXRvbWljYWxseS4KLSsgICAgLy8gVGhlIGxpbmthZ2UgYXJlYSByZXF1aXJlZCBmb3Ig QUJJIGNvbXBsaWFuY2UgaXMgYmFrZWQgaW50byB0aGUgRnJhbWUuCi0rICAgIG1hc20ueHNfbWZs cihTY3JhdGNoUmVnaXN0ZXIpOwotKyAgICBtYXNtLmFzX2FkZGkoU3RhY2tQb2ludGVyLCBTdGFj a1BvaW50ZXIsIC0oc2l6ZW9mKEZyYW1lKSkpOwotKyAgICBtYXNtLmFzX3N0ZChTY3JhdGNoUmVn aXN0ZXIsIFN0YWNrUG9pbnRlciwgRnJhbWU6OnJldHVybkFkZHJlc3NPZmZzZXQoKSk7Ci0rICAg IE1PWl9BU1NFUlRfSUYoIW1hc20ub29tKCksIFB1c2hlZFJldEFkZHIgPT0gbWFzbS5jdXJyZW50 T2Zmc2V0KCkgLSAqZW50cnkpOwotKyAgICBtYXNtLmFzX3N0ZChGcmFtZVBvaW50ZXIsIFN0YWNr UG9pbnRlciwgRnJhbWU6OmNhbGxlckZQT2Zmc2V0KCkpOwotKyAgICBNT1pfQVNTRVJUX0lGKCFt YXNtLm9vbSgpLCBQdXNoZWRGUCA9PSBtYXNtLmN1cnJlbnRPZmZzZXQoKSAtICplbnRyeSk7Ci0r ICAgIG1hc20ueHNfbXIoRnJhbWVQb2ludGVyLCBTdGFja1BvaW50ZXIpOwotKyAgICBNT1pfQVNT RVJUX0lGKCFtYXNtLm9vbSgpLCBTZXRGUCA9PSBtYXNtLmN1cnJlbnRPZmZzZXQoKSAtICplbnRy eSk7Ci0rCi0rICAgIC8vIEJ1cm4gbm9wcyBiZWNhdXNlIHdlIGhhdmUgdG8gbWFrZSB0aGlzIGEg bXVsdGlwbGUgb2YgMTYgYW5kIHRoZSBtZnNwcgotKyAgICAvLyBqdXN0IHNjcmV3ZWQgdXMuCi0r ICAgIG1hc20uYXNfbm9wKCk7IC8vIDI0Ci0rICAgIG1hc20uYXNfbm9wKCk7IC8vIDI4Ci0rICAg IG1hc20uYXNfbm9wKCk7IC8vIDMyIC8vIHRyYXAgcG9pbnQKLSsgIH0KLSAjZWxzZQotICAgewot ICMgIGlmIGRlZmluZWQoSlNfQ09ERUdFTl9BUk0pCi0gICAgIEF1dG9Gb3JiaWRQb29sc0FuZE5v cHMgYWZwKCZtYXNtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIg b2YgaW5zdHJ1Y3Rpb25zIGluIHNjb3BlID0gKi8gMyk7Ci0gCi0gICAgICplbnRyeSA9IG1hc20u Y3VycmVudE9mZnNldCgpOwotIAotQEAgLTUyNywxNiArNTU0LDI4IEBAIHN0YXRpYyB2b2lkIEdl bmVyYXRlQ2FsbGFibGVFcGlsb2d1ZShNYWNyb0Fzc2VtYmxlciYgbWFzbSwgdW5zaWduZWQgZnJh bWVQdXNoZWQsCi0gICAvLyB1c2UgaXQuICBIZW5jZSB3ZSBoYXZlIHRvIGRvIGl0ICJieSBoYW5k Ii4KLSAgIG1hc20uTW92KFBzZXVkb1N0YWNrUG9pbnRlcjY0LCB2aXhsOjpzcCk7Ci0gCi0gICBt YXNtLlJldChBUk1SZWdpc3RlcihsciwgNjQpKTsKLSAKLSAgIC8vIFNlZSBjb21tZW50IGF0IGVx dWl2YWxlbnQgcGxhY2UgaW4gfEdlbmVyYXRlQ2FsbGFibGVQcm9sb2d1ZXwgYWJvdmUuCi0gICBt YXNtLlNldFN0YWNrUG9pbnRlcjY0KHN0YXNoZWRTUHJlZyk7Ci0gCi0rI2VsaWYgZGVmaW5lZChK U19DT0RFR0VOX1BQQzY0KQotKwotKyAgbWFzbS5hc19sZChGcmFtZVBvaW50ZXIsIFN0YWNrUG9p bnRlciwgRnJhbWU6OmNhbGxlckZQT2Zmc2V0KCkpOwotKyAgcG9wcGVkRlAgPSBtYXNtLmN1cnJl bnRPZmZzZXQoKTsKLSsgIC8vIFRoaXMgaXMgc3Vib3B0aW1hbCBzaW5jZSB3ZSBnZXQgc2VyaWFs aXplZCwgYnV0IGhhcyB0byBiZSBpbiB0aGlzIG9yZGVyLgotKyAgbWFzbS5hc19sZChTY3JhdGNo UmVnaXN0ZXIsIFN0YWNrUG9pbnRlciwgRnJhbWU6OnJldHVybkFkZHJlc3NPZmZzZXQoKSk7Ci0r ICBtYXNtLnhzX210bHIoU2NyYXRjaFJlZ2lzdGVyKTsKLSsgICpyZXQgPSBtYXNtLmN1cnJlbnRP ZmZzZXQoKTsKLSsKLSsgIG1hc20uYXNfYWRkaShTdGFja1BvaW50ZXIsIFN0YWNrUG9pbnRlciwg c2l6ZW9mKEZyYW1lKSk7Ci0rICBtYXNtLmFzX2JscigpOwotKwotICNlbHNlCi0gICAvLyBGb3Ji aWQgcG9vbHMgZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBkZXNjcmliZWQgaW4gR2VuZXJhdGVDYWxs YWJsZVByb2xvZ3VlLgotICMgIGlmIGRlZmluZWQoSlNfQ09ERUdFTl9BUk0pCi0gICBBdXRvRm9y YmlkUG9vbHNBbmROb3BzIGFmcCgmbWFzbSwgLyogbnVtYmVyIG9mIGluc3RydWN0aW9ucyBpbiBz Y29wZSA9ICovIDYpOwotICMgIGVuZGlmCi0gCi0gICAvLyBUaGVyZSBpcyBhbiBpbXBvcnRhbnQg b3JkZXJpbmcgY29uc3RyYWludCBoZXJlOiBmcCBtdXN0IGJlIHJlcG9pbnRlZCB0bwotICAgLy8g dGhlIGNhbGxlcidzIGZyYW1lIGJlZm9yZSBhbnkgZmllbGQgb2YgdGhlIGZyYW1lIGN1cnJlbnRs eSBwb2ludGVkIHRvIGJ5Ci1AQCAtNzczLDE2ICs4MTIsMjMgQEAgdm9pZCB3YXNtOjpHZW5lcmF0 ZUppdEVudHJ5UHJvbG9ndWUoTWFjcm9Bc3NlbWJsZXImIG1hc20sIE9mZnNldHMqIG9mZnNldHMp IHsKLSAgICAgQXV0b0ZvcmJpZFBvb2xzQW5kTm9wcyBhZnAoJm1hc20sCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBpbnN0cnVjdGlvbnMgaW4gc2NvcGUgPSAq LyAzKTsKLSAgICAgb2Zmc2V0cy0+YmVnaW4gPSBtYXNtLmN1cnJlbnRPZmZzZXQoKTsKLSAgICAg c3RhdGljX2Fzc2VydChCZWZvcmVQdXNoUmV0QWRkciA9PSAwKTsKLSAgICAgLy8gU3VidHJhY3Qg ZnJvbSBTUCBmaXJzdCBhcyBTUCBtdXN0IGJlIGFsaWduZWQgYmVmb3JlIG9mZnNldHRpbmcuCi0g ICAgIG1hc20uU3ViKHNwLCBzcCwgOCk7Ci0gICAgIG1hc20uc3RvcmVQdHIobHIsIEFkZHJlc3Mo bWFzbS5nZXRTdGFja1BvaW50ZXIoKSwgMCkpOwotICAgICBtYXNtLmFkanVzdEZyYW1lKDgpOwot KyNlbGlmIGRlZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSsgICAgb2Zmc2V0cy0+YmVnaW4gPSBt YXNtLmN1cnJlbnRPZmZzZXQoKTsKLSsKLSsgICAgLy8gV2UgaGF2ZSB0byBidXJuIGEgbm9wIGhl cmUgdG8gbWF0Y2ggdGhlIG90aGVyIHByb2xvZ3VlIGxlbmd0aC4KLSsgICAgbWFzbS54c19tZmxy KFNjcmF0Y2hSZWdpc3Rlcik7Ci0rICAgIG1hc20uYXNfbm9wKCk7IC8vIG1pZ2h0IGFzIHdlbGwg ZXhwbGljaXRseSB3YWl0IGZvciB0aGUgbWZzcHIgdG8gY29tcGxldGUKLSsgICAgbWFzbS5hc19z dGR1KFNjcmF0Y2hSZWdpc3RlciwgU3RhY2tQb2ludGVyLCAtOCk7Ci0gI2Vsc2UKLSAgICAgLy8g VGhlIHg4Ni94NjQgY2FsbCBpbnN0cnVjdGlvbiBwdXNoZXMgdGhlIHJldHVybiBhZGRyZXNzLgot ICAgICBvZmZzZXRzLT5iZWdpbiA9IG1hc20uY3VycmVudE9mZnNldCgpOwotICNlbmRpZgotICAg ICBNT1pfQVNTRVJUX0lGKCFtYXNtLm9vbSgpLAotICAgICAgICAgICAgICAgICAgIFB1c2hlZFJl dEFkZHIgPT0gbWFzbS5jdXJyZW50T2Zmc2V0KCkgLSBvZmZzZXRzLT5iZWdpbik7Ci0gCi0gICAg IC8vIFNhdmUgaml0IGZyYW1lIHBvaW50ZXIsIHNvIHVud2luZGluZyBmcm9tIHdhc20gdG8gaml0 IGZyYW1lcyBpcyB0cml2aWFsLgotZGlmZiAtLWdpdCBhL2pzL3NyYy93YXNtL1dhc21HQy5jcHAg Yi9qcy9zcmMvd2FzbS9XYXNtR0MuY3BwCi1pbmRleCA0ZWI3N2E4MWEyLi4zZjAwY2JiNjMyIDEw MDY0NAotLS0tIGEvanMvc3JjL3dhc20vV2FzbUdDLmNwcAotKysrIGIvanMvc3JjL3dhc20vV2Fz bUdDLmNwcAotQEAgLTI4NCwxNiArMjg0LDMzIEBAIGJvb2wgSXNWYWxpZFN0YWNrTWFwS2V5KGJv b2wgZGVidWdFbmFibGVkLCBjb25zdCB1aW50OF90KiBuZXh0UEMpIHsKLSAgICAgICAgICAgKGlu c25bLTFdICYgMHhmZmZmZmMxZikgPT0gMHhkNjNmMDAwMCB8fCAgICAvLyBibHIgcmVnCi0gICAg ICAgICAgIChpbnNuWy0xXSAmIDB4ZmMwMDAwMDApID09IDB4OTQwMDAwMDAgfHwgICAgLy8gYmwg c2ltbTI2Ci0gICAgICAgICAgIChkZWJ1Z0VuYWJsZWQgJiYgaW5zblstMV0gPT0gMHhkNTAzMjAx ZikpOyAgLy8gbm9wCi0gCi0gIyAgZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0KQotICAg Ly8gVE9ETyAoYnVnIDE2OTk2OTYpOiBJbXBsZW1lbnQgdGhpcy4gIEFzIGZvciB0aGUgcGxhdGZv cm1zIGFib3ZlLCB3ZSBuZWVkIHRvCi0gICAvLyBlbnVtZXJhdGUgYWxsIGNvZGUgc2VxdWVuY2Vz IHRoYXQgY2FuIHByZWNlZGUgdGhlIHN0YWNrbWFwIGxvY2F0aW9uLgotICAgcmV0dXJuIHRydWU7 Ci0rIyAgZWxpZiBkZWZpbmVkKEpTX0NPREVHRU5fUFBDNjQpCi0rLy8gWFhYOiB3ZSBzaG91bGQg anVzdCBiZSBhYmxlIHRvIHVzZSBpbnN0WzBdCi0rICBjb25zdCB1aW50MzJfdCogaW5zbiA9IChj b25zdCB1aW50MzJfdCopbmV4dFBDOwotKyAganM6OmppdDo6SW5zdHJ1Y3Rpb24qIGluc3QgPSAo anM6OmppdDo6SW5zdHJ1Y3Rpb24qKW5leHRQQzsKLSsgIC8vZnByaW50ZihzdGRlcnIsICJJc1Zh bGlkU3RhY2tNYXBLZXk6IDB4JWx4IDB4JTA4eFxuIiwgKHVpbnQ2NF90KW5leHRQQywgaW5zblsw XSk7Ci0rICByZXR1cm4gKCgodWludHB0cl90KGluc24pICYgMykgPT0gMCkgJiYKLSsgICAgICAg ICAgKGluc3RbMF0uZXh0cmFjdE9wY29kZSgpID09IGpzOjpqaXQ6OlBQQ19hZGRpIHx8ICAvLyBz dGFjayBhbGxvY2F0ZQotKyAgICAgICAgICAgaW5zdFswXS5leHRyYWN0T3Bjb2RlKCkgPT0ganM6 OmppdDo6UFBDX2FkZGlzIHx8IC8vIGxvYWQgaW1tZWRpYXRlCi0rICAgICAgICAgICBpbnN0WzBd LmV4dHJhY3RPcGNvZGUoKSA9PSBqczo6aml0OjpQUENfY21wd2kgfHwgLy8gdGVzdCBhZnRlciBi bAotKyAgICAgICAgICAgaW5zdFswXS5leHRyYWN0T3Bjb2RlKCkgPT0ganM6OmppdDo6UFBDX2Nt cHcgfHwgIC8vIChleHRzdywgc2FtZSkKLSsgICAgICAgICAgIGluc3RbMF0uZXh0cmFjdE9wY29k ZSgpID09IGpzOjpqaXQ6OlBQQ19sZmQgfHwgICAvLyBsb2FkIEZQUgotKyAgICAgICAgICAgaW5z dFswXS5leHRyYWN0T3Bjb2RlKCkgPT0ganM6OmppdDo6UFBDX2xmcyB8fCAgIC8vIGxvYWQgRlBS Ci0rICAgICAgICAgICBpbnN0WzBdLmV4dHJhY3RPcGNvZGUoKSA9PSBqczo6aml0OjpQUENfbHd6 IHx8ICAgLy8gbG9hZCBHUFIKLSsgICAgICAgICAgIGluc3RbMF0uZXh0cmFjdE9wY29kZSgpID09 IGpzOjpqaXQ6OlBQQ19sZCB8fCAgICAvLyBsb2FkIEdQUgotKyAgICAgICAgICAgaW5zdFswXS5l eHRyYWN0T3Bjb2RlKCkgPT0ganM6OmppdDo6UFBDX2IgfHwgICAgIC8vIGJyYW5jaAotKyAgICAg ICAgICAgaW5zdFswXS5lbmNvZGUoKSA9PSBqczo6aml0OjpQUENfbm9wIHx8ICAgICAgICAgIC8v IEdFVCBCQUNLIFRPIFdPUksKLSsgICAgICAgICAgIGluc3RbMF0uZW5jb2RlKCkgPT0ganM6Ompp dDo6UFBDX3N0b3ApKTsgICAgICAgICAvLyBkZXNpZ25hdGVkIHRocm93Ci0gIyAgZWxzZQotICAg TU9aX0NSQVNIKCJJc1ZhbGlkU3RhY2tNYXBLZXk6IHJlcXVpcmVzIGltcGxlbWVudGF0aW9uIG9u IHRoaXMgcGxhdGZvcm0iKTsKLSAjICBlbmRpZgotIH0KLSAjZW5kaWYKLSAKLSB9ICAvLyBuYW1l c3BhY2Ugd2FzbQotIH0gIC8vIG5hbWVzcGFjZSBqcwotZGlmZiAtLWdpdCBhL2pzL3NyYy93YXNt L1dhc21TaWduYWxIYW5kbGVycy5jcHAgYi9qcy9zcmMvd2FzbS9XYXNtU2lnbmFsSGFuZGxlcnMu Y3BwCi1pbmRleCA0YWIyYTQ0MTkyLi4xYTUxMDYxYTEyIDEwMDY0NAotLS0tIGEvanMvc3JjL3dh c20vV2FzbVNpZ25hbEhhbmRsZXJzLmNwcAotKysrIGIvanMvc3JjL3dhc20vV2FzbVNpZ25hbEhh bmRsZXJzLmNwcAotQEAgLTEwMSwxNiArMTAxLDE3IEBAIHVzaW5nIG1vemlsbGE6OkRlYnVnT25s eTsKLSAjICBlbmRpZgotICMgIGlmIGRlZmluZWQoX19taXBzX18pCi0gIyAgICBkZWZpbmUgRVBD X3NpZyhwKSAoKHApLT5zY19wYykKLSAjICAgIGRlZmluZSBSRlBfc2lnKHApICgocCktPnNjX3Jl Z3NbMzBdKQotICMgIGVuZGlmCi0gIyAgaWYgZGVmaW5lZChfX3BwYzY0X18pIHx8IGRlZmluZWQo X19QUEM2NF9fKSB8fCBkZWZpbmVkKF9fcHBjNjRsZV9fKSB8fCBcCi0gICAgICAgZGVmaW5lZChf X1BQQzY0TEVfXykKLSAjICAgIGRlZmluZSBSMDFfc2lnKHApICgocCktPnNjX2ZyYW1lLmZpeHJl Z1sxXSkKLSsjICAgIGRlZmluZSBSMzFfc2lnKHApICgocCktPnNjX2ZyYW1lLmZpeHJlZ1szMV0p Ci0gIyAgICBkZWZpbmUgUjMyX3NpZyhwKSAoKHApLT5zY19mcmFtZS5zcnIwKQotICMgIGVuZGlm Ci0gI2VsaWYgZGVmaW5lZChfX2xpbnV4X18pIHx8IGRlZmluZWQoX19zdW4pCi0gIyAgaWYgZGVm aW5lZChfX2xpbnV4X18pCi0gIyAgICBkZWZpbmUgRUlQX3NpZyhwKSAoKHApLT51Y19tY29udGV4 dC5ncmVnc1tSRUdfRUlQXSkKLSAjICAgIGRlZmluZSBFQlBfc2lnKHApICgocCktPnVjX21jb250 ZXh0LmdyZWdzW1JFR19FQlBdKQotICMgICAgZGVmaW5lIEVTUF9zaWcocCkgKChwKS0+dWNfbWNv bnRleHQuZ3JlZ3NbUkVHX0VTUF0pCi0gIyAgZWxzZQotQEAgLTE0NywxNiArMTQ4LDE3IEBAIHVz aW5nIG1vemlsbGE6OkRlYnVnT25seTsKLSAjICBpZiBkZWZpbmVkKF9fbGludXhfXykgJiYgKGRl ZmluZWQoX19zcGFyY19fKSAmJiBkZWZpbmVkKF9fYXJjaDY0X18pKQotICMgICAgZGVmaW5lIFBD X3NpZyhwKSAoKHApLT51Y19tY29udGV4dC5tY19ncmVnc1tNQ19QQ10pCi0gIyAgICBkZWZpbmUg RlBfc2lnKHApICgocCktPnVjX21jb250ZXh0Lm1jX2ZwKQotICMgICAgZGVmaW5lIFNQX3NpZyhw KSAoKHApLT51Y19tY29udGV4dC5tY19pNykKLSAjICBlbmRpZgotICMgIGlmIGRlZmluZWQoX19s aW51eF9fKSAmJiAoZGVmaW5lZChfX3BwYzY0X18pIHx8IGRlZmluZWQoX19QUEM2NF9fKSB8fCBc Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkKF9fcHBjNjRsZV9fKSB8fCBk ZWZpbmVkKF9fUFBDNjRMRV9fKSkKLSAjICAgIGRlZmluZSBSMDFfc2lnKHApICgocCktPnVjX21j b250ZXh0LmdwX3JlZ3NbMV0pCi0rIyAgICBkZWZpbmUgUjMxX3NpZyhwKSAoKHApLT51Y19tY29u dGV4dC5ncF9yZWdzWzMxXSkKLSAjICAgIGRlZmluZSBSMzJfc2lnKHApICgocCktPnVjX21jb250 ZXh0LmdwX3JlZ3NbMzJdKQotICMgIGVuZGlmCi0gI2VsaWYgZGVmaW5lZChfX05ldEJTRF9fKQot ICMgIGRlZmluZSBFSVBfc2lnKHApICgocCktPnVjX21jb250ZXh0Ll9fZ3JlZ3NbX1JFR19FSVBd KQotICMgIGRlZmluZSBFQlBfc2lnKHApICgocCktPnVjX21jb250ZXh0Ll9fZ3JlZ3NbX1JFR19F QlBdKQotICMgIGRlZmluZSBFU1Bfc2lnKHApICgocCktPnVjX21jb250ZXh0Ll9fZ3JlZ3NbX1JF R19FU1BdKQotICMgIGRlZmluZSBSSVBfc2lnKHApICgocCktPnVjX21jb250ZXh0Ll9fZ3JlZ3Nb X1JFR19SSVBdKQotICMgIGRlZmluZSBSU1Bfc2lnKHApICgocCktPnVjX21jb250ZXh0Ll9fZ3Jl Z3NbX1JFR19SU1BdKQotQEAgLTE3MywxNiArMTc1LDE3IEBAIHVzaW5nIG1vemlsbGE6OkRlYnVn T25seTsKLSAjICBlbmRpZgotICMgIGlmIGRlZmluZWQoX19taXBzX18pCi0gIyAgICBkZWZpbmUg RVBDX3NpZyhwKSAoKHApLT51Y19tY29udGV4dC5fX2dyZWdzW19SRUdfRVBDXSkKLSAjICAgIGRl ZmluZSBSRlBfc2lnKHApICgocCktPnVjX21jb250ZXh0Ll9fZ3JlZ3NbX1JFR19TOF0pCi0gIyAg ZW5kaWYKLSAjICBpZiBkZWZpbmVkKF9fcHBjNjRfXykgfHwgZGVmaW5lZChfX1BQQzY0X18pIHx8 IGRlZmluZWQoX19wcGM2NGxlX18pIHx8IFwKLSAgICAgICBkZWZpbmVkKF9fUFBDNjRMRV9fKQot ICMgICAgZGVmaW5lIFIwMV9zaWcocCkgKChwKS0+dWNfbWNvbnRleHQuX19ncmVnc1tfUkVHX1Ix XSkKLSsjICAgIGRlZmluZSBSMzFfc2lnKHApICgocCktPnVjX21jb250ZXh0Ll9fZ3JlZ3NbX1JF R19SMzFdKQotICMgICAgZGVmaW5lIFIzMl9zaWcocCkgKChwKS0+dWNfbWNvbnRleHQuX19ncmVn c1tfUkVHX1BDXSkKLSAjICBlbmRpZgotICNlbGlmIGRlZmluZWQoX19EcmFnb25GbHlfXykgfHwg ZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgXAotICAgICBkZWZpbmVkKF9fRnJlZUJTRF9rZXJuZWxf XykKLSAjICBkZWZpbmUgRUlQX3NpZyhwKSAoKHApLT51Y19tY29udGV4dC5tY19laXApCi0gIyAg ZGVmaW5lIEVCUF9zaWcocCkgKChwKS0+dWNfbWNvbnRleHQubWNfZWJwKQotICMgIGRlZmluZSBF U1Bfc2lnKHApICgocCktPnVjX21jb250ZXh0Lm1jX2VzcCkKLSAjICBkZWZpbmUgUklQX3NpZyhw KSAoKHApLT51Y19tY29udGV4dC5tY19yaXApCi1AQCAtMjA3LDE2ICsyMTAsMTcgQEAgdXNpbmcg bW96aWxsYTo6RGVidWdPbmx5OwotICMgIGVuZGlmCi0gIyAgaWYgZGVmaW5lZChfX0ZyZWVCU0Rf XykgJiYgZGVmaW5lZChfX21pcHNfXykKLSAjICAgIGRlZmluZSBFUENfc2lnKHApICgocCktPnVj X21jb250ZXh0Lm1jX3BjKQotICMgICAgZGVmaW5lIFJGUF9zaWcocCkgKChwKS0+dWNfbWNvbnRl eHQubWNfcmVnc1szMF0pCi0gIyAgZW5kaWYKLSAjICBpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm JiAoZGVmaW5lZChfX3BwYzY0X18pIHx8IGRlZmluZWQoX19QUEM2NF9fKSB8fCBcCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQoX19wcGM2NGxlX18pIHx8IGRlZmluZWQo X19QUEM2NExFX18pKQotICMgICAgZGVmaW5lIFIwMV9zaWcocCkgKChwKS0+dWNfbWNvbnRleHQu bWNfZ3ByWzFdKQotKyMgICAgZGVmaW5lIFIzMV9zaWcocCkgKChwKS0+dWNfbWNvbnRleHQubWNf Z3ByWzMxXSkKLSAjICAgIGRlZmluZSBSMzJfc2lnKHApICgocCktPnVjX21jb250ZXh0Lm1jX3Ny cjApCi0gIyAgZW5kaWYKLSAjZWxpZiBkZWZpbmVkKFhQX0RBUldJTikKLSAjICBkZWZpbmUgRUlQ X3NpZyhwKSAoKHApLT50aHJlYWQudXRzLnRzMzIuX19laXApCi0gIyAgZGVmaW5lIEVCUF9zaWco cCkgKChwKS0+dGhyZWFkLnV0cy50czMyLl9fZWJwKQotICMgIGRlZmluZSBFU1Bfc2lnKHApICgo cCktPnRocmVhZC51dHMudHMzMi5fX2VzcCkKLSAjICBkZWZpbmUgUklQX3NpZyhwKSAoKHApLT50 aHJlYWQuX19yaXApCi0gIyAgZGVmaW5lIFJCUF9zaWcocCkgKChwKS0+dGhyZWFkLl9fcmJwKQot QEAgLTM2NywxNyArMzcxLDE3IEBAIHN0cnVjdCBtYWNvc19hYXJjaDY0X2NvbnRleHQgewotICMg IGRlZmluZSBQQ19zaWcocCkgRVBDX3NpZyhwKQotICMgIGRlZmluZSBGUF9zaWcocCkgUkZQX3Np ZyhwKQotICMgIGRlZmluZSBTUF9zaWcocCkgUlNQX3NpZyhwKQotICMgIGRlZmluZSBMUl9zaWco cCkgUjMxX3NpZyhwKQotICNlbGlmIGRlZmluZWQoX19wcGM2NF9fKSB8fCBkZWZpbmVkKF9fUFBD NjRfXykgfHwgZGVmaW5lZChfX3BwYzY0bGVfXykgfHwgXAotICAgICBkZWZpbmVkKF9fUFBDNjRM RV9fKQotICMgIGRlZmluZSBQQ19zaWcocCkgUjMyX3NpZyhwKQotICMgIGRlZmluZSBTUF9zaWco cCkgUjAxX3NpZyhwKQotLSMgIGRlZmluZSBGUF9zaWcocCkgUjAxX3NpZyhwKQotKyMgIGRlZmlu ZSBGUF9zaWcocCkgUjMxX3NpZyhwKQotICNlbmRpZgotIAotIHN0YXRpYyB2b2lkIFNldENvbnRl eHRQQyhDT05URVhUKiBjb250ZXh0LCB1aW50OF90KiBwYykgewotICNpZmRlZiBQQ19zaWcKLSAg ICpyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqKj4oJlBDX3NpZyhjb250ZXh0KSkgPSBwYzsKLSAj ZWxzZQotICAgTU9aX0NSQVNIKCk7Ci0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEvanMvc3JjL3dhc20v V2FzbVN0dWJzLmNwcCBiL2pzL3NyYy93YXNtL1dhc21TdHVicy5jcHAKLWluZGV4IDU5YTVjZjE4 YmYuLmRiYzEwYzZlMmMgMTAwNjQ0Ci0tLS0gYS9qcy9zcmMvd2FzbS9XYXNtU3R1YnMuY3BwCi0r KysgYi9qcy9zcmMvd2FzbS9XYXNtU3R1YnMuY3BwCi1AQCAtNzE5LDE3ICs3MTksMTcgQEAgc3Rh dGljIGJvb2wgR2VuZXJhdGVJbnRlcnBFbnRyeShNYWNyb0Fzc2VtYmxlciYgbWFzbSwgY29uc3Qg RnVuY0V4cG9ydCYgZmUsCi0gICBBc3NlcnRFeHBlY3RlZFNQKG1hc20pOwotICAgbWFzbS5oYWx0 aW5nQWxpZ24oQ29kZUFsaWdubWVudCk7Ci0gCi0gICBvZmZzZXRzLT5iZWdpbiA9IG1hc20uY3Vy cmVudE9mZnNldCgpOwotIAotICAgLy8gU2F2ZSB0aGUgcmV0dXJuIGFkZHJlc3MgaWYgaXQgd2Fz bid0IGFscmVhZHkgc2F2ZWQgYnkgdGhlIGNhbGwgaW5zbi4KLSAjaWZkZWYgSlNfVVNFX0xJTktf UkVHSVNURVIKLSAjICBpZiBkZWZpbmVkKEpTX0NPREVHRU5fQVJNKSB8fCBkZWZpbmVkKEpTX0NP REVHRU5fTUlQUzMyKSB8fCBcCi0tICAgICAgZGVmaW5lZChKU19DT0RFR0VOX01JUFM2NCkKLSsg ICAgICBkZWZpbmVkKEpTX0NPREVHRU5fTUlQUzY0KSB8fCBkZWZpbmVkKEpTX0NPREVHRU5fUFBD NjQpCi0gICBtYXNtLnB1c2hSZXR1cm5BZGRyZXNzKCk7Ci0gIyAgZWxpZiBkZWZpbmVkKEpTX0NP REVHRU5fQVJNNjQpCi0gICAvLyBXYXNtUHVzaCB1cGRhdGVzIGZyYW1lUHVzaGVkKCkgdW5saWtl IHB1c2hSZXR1cm5BZGRyZXNzKCksIGJ1dCB0aGF0J3MKLSAgIC8vIGNhbmNlbGxlZCBieSB0aGUg c2V0RnJhbWVQdXNoZWQoKSBiZWxvdy4KLSAgIFdhc21QdXNoKG1hc20sIGxyKTsKLSAjICBlbHNl Ci0gICBNT1pfQ1JBU0goIkltcGxlbWVudCB0aGlzIik7Ci0gIyAgZW5kaWYKLUBAIC0yMTExLDE3 ICsyMTExLDI2IEBAIHN0YXRpYyBib29sIEdlbmVyYXRlSW1wb3J0SW50ZXJwRXhpdChNYWNyb0Fz c2VtYmxlciYgbWFzbSwgY29uc3QgRnVuY0ltcG9ydCYgZmksCi0gICAgIG1hc20uc3RvcmVQdHIo c2NyYXRjaCwKLSAgICAgICAgICAgICAgICAgICBBZGRyZXNzKG1hc20uZ2V0U3RhY2tQb2ludGVy KCksIGktPm9mZnNldEZyb21BcmdCYXNlKCkpKTsKLSAgIH0KLSAgIGkrKzsKLSAgIE1PWl9BU1NF UlQoaS5kb25lKCkpOwotIAotICAgLy8gTWFrZSB0aGUgY2FsbCwgdGVzdCB3aGV0aGVyIGl0IHN1 Y2NlZWRlZCwgYW5kIGV4dHJhY3QgdGhlIHJldHVybiB2YWx1ZS4KLSAgIEFzc2VydFN0YWNrQWxp Z25tZW50KG1hc20sIEFCSVN0YWNrQWxpZ25tZW50KTsKLSsjaWZkZWYgSlNfQ09ERUdFTl9QUEM2 NAotKyAgLy8gQmVjYXVzZSB0aGlzIGlzIGNhbGxpbmcgYW4gQUJJLWNvbXBsaWFudCBmdW5jdGlv biwgd2UgaGF2ZSB0byBwdWxsIGRvd24KLSsgIC8vIGEgZHVtbXkgbGlua2FnZSBhcmVhIG9yIHRo ZSB2YWx1ZXMgb24gdGhlIHN0YWNrIHdpbGwgYmUgc3RvbXBlZCBvbi4gVGhlCi0rICAvLyBtaW5p bXVtIHNpemUgaXMgc3VmZmljaWVudC4KLSsgIG1hc20uYXNfYWRkaShtYXNtLmdldFN0YWNrUG9p bnRlcigpLCBtYXNtLmdldFN0YWNrUG9pbnRlcigpLCAtMzIpOwotKyNlbmRpZgotICAgbWFzbS5j YWxsKFN5bWJvbGljQWRkcmVzczo6Q2FsbEltcG9ydF9HZW5lcmFsKTsKLSsjaWZkZWYgSlNfQ09E RUdFTl9QUEM2NAotKyAgbWFzbS5hc19hZGRpKG1hc20uZ2V0U3RhY2tQb2ludGVyKCksIG1hc20u Z2V0U3RhY2tQb2ludGVyKCksIDMyKTsKLSsjZW5kaWYKLSAgIG1hc20uYnJhbmNoVGVzdDMyKEFz c2VtYmxlcjo6WmVybywgUmV0dXJuUmVnLCBSZXR1cm5SZWcsIHRocm93TGFiZWwpOwotIAotICAg UmVzdWx0VHlwZSByZXN1bHRUeXBlID0gUmVzdWx0VHlwZTo6VmVjdG9yKGZpLmZ1bmNUeXBlKCku cmVzdWx0cygpKTsKLSAgIFZhbFR5cGUgcmVnaXN0ZXJSZXN1bHRUeXBlOwotICAgZm9yIChBQklS ZXN1bHRJdGVyIGl0ZXIocmVzdWx0VHlwZSk7ICFpdGVyLmRvbmUoKTsgaXRlci5uZXh0KCkpIHsK LSAgICAgaWYgKGl0ZXIuY3VyKCkuaW5SZWdpc3RlcigpKSB7Ci0gICAgICAgTU9aX0FTU0VSVCgh cmVnaXN0ZXJSZXN1bHRUeXBlLmlzVmFsaWQoKSk7Ci0gICAgICAgcmVnaXN0ZXJSZXN1bHRUeXBl ID0gaXRlci5jdXIoKS50eXBlKCk7Ci1AQCAtMjY3MywxNiArMjY4MiwyMSBAQCBzdGF0aWMgY29u c3QgTGl2ZVJlZ2lzdGVyU2V0IFJlZ3NUb1ByZXNlcnZlKAotICNlbGlmIGRlZmluZWQoSlNfQ09E RUdFTl9YODYpIHx8IGRlZmluZWQoSlNfQ09ERUdFTl9YNjQpCi0gLy8gSXQncyBjb3JyZWN0IHRv IHVzZSBGbG9hdFJlZ2lzdGVyczo6QWxsTWFzayBldmVuIHdoZW4gU0lNRCBpcyBub3QgZW5hYmxl ZDsKLSAvLyBQdXNoUmVnc0luTWFzayBzdHJpcHMgb3V0IHRoZSBoaWdoIGxhbmVzIG9mIHRoZSBY TU0gcmVnaXN0ZXJzIGluIHRoaXMgY2FzZSwKLSAvLyB3aGlsZSB0aGUgc2luZ2xlcyB3aWxsIGJl IHN0cmlwcGVkIGFzIHRoZXkgYXJlIGFsaWFzZWQgYnkgdGhlIGxhcmdlciBkb3VibGVzLgotIHN0 YXRpYyBjb25zdCBMaXZlUmVnaXN0ZXJTZXQgUmVnc1RvUHJlc2VydmUoCi0gICAgIEdlbmVyYWxS ZWdpc3RlclNldChSZWdpc3RlcnM6OkFsbE1hc2sgJgotICAgICAgICAgICAgICAgICAgICAgICAg fihSZWdpc3RlcnM6OlNldFR5cGUoMSkgPDwgUmVnaXN0ZXJzOjpTdGFja1BvaW50ZXIpKSwKLSAg ICAgRmxvYXRSZWdpc3RlclNldChGbG9hdFJlZ2lzdGVyczo6QWxsTWFzaykpOwotKyNlbGlmIGRl ZmluZWQoSlNfQ09ERUdFTl9QUEM2NCkKLSsvLyBOb3RlIHRoYXQgdGhpcyBpbmNsdWRlcyBubyBT UFJzLCBzaW5jZSB0aGUgSklUIGlzIHVuYXdhcmUgb2YgdGhlbS4KLStzdGF0aWMgY29uc3QgTGl2 ZVJlZ2lzdGVyU2V0IFJlZ3NUb1ByZXNlcnZlKAotKyAgICBHZW5lcmFsUmVnaXN0ZXJTZXQoUmVn aXN0ZXJzOjpBbGxNYXNrKSwKLSsgICAgRmxvYXRSZWdpc3RlclNldChGbG9hdFJlZ2lzdGVyczo6 QWxsTWFzaykpOwotICNlbHNlCi0gc3RhdGljIGNvbnN0IExpdmVSZWdpc3RlclNldCBSZWdzVG9Q cmVzZXJ2ZSgKLSAgICAgR2VuZXJhbFJlZ2lzdGVyU2V0KDApLCBGbG9hdFJlZ2lzdGVyU2V0KEZs b2F0UmVnaXN0ZXJzOjpBbGxEb3VibGVNYXNrKSk7Ci0gIyAgaWZkZWYgRU5BQkxFX1dBU01fU0lN RAotICMgICAgZXJyb3IgIm5vIFNJTUQgc3VwcG9ydCIKLSAjICBlbmRpZgotICNlbmRpZgotIAot ZGlmZiAtLWdpdCBhL21vZHVsZXMvbGlicHJlZi9pbml0L1N0YXRpY1ByZWZMaXN0LnlhbWwgYi9t b2R1bGVzL2xpYnByZWYvaW5pdC9TdGF0aWNQcmVmTGlzdC55YW1sCi1pbmRleCBkODEwMjViMjgy Li40M2I3NWM2YWUwIDEwMDY0NAotLS0tIGEvbW9kdWxlcy9saWJwcmVmL2luaXQvU3RhdGljUHJl Zkxpc3QueWFtbAotKysrIGIvbW9kdWxlcy9saWJwcmVmL2luaXQvU3RhdGljUHJlZkxpc3QueWFt bAotQEAgLTU3MjksMTcgKzU3MjksMTcgQEAKLSAtIG5hbWU6IGphdmFzY3JpcHQub3B0aW9ucy5i YXNlbGluZWppdAotICAgdHlwZTogYm9vbAotICAgdmFsdWU6IHRydWUKLSAgIG1pcnJvcjogYWx3 YXlzICAjIExvYWRTdGFydHVwSlNQcmVmcwotICAgZG9fbm90X3VzZV9kaXJlY3RseTogdHJ1ZQot IAotIC0gbmFtZTogamF2YXNjcmlwdC5vcHRpb25zLmlvbgotICAgdHlwZTogYm9vbAotLSAgdmFs dWU6IHRydWUKLSsgIHZhbHVlOiBmYWxzZQotICAgbWlycm9yOiBhbHdheXMgICMgTG9hZFN0YXJ0 dXBKU1ByZWZzCi0gICBkb19ub3RfdXNlX2RpcmVjdGx5OiB0cnVlCi0gCi0gIyBUaGUgaXJyZWdl eHAgSklUIGZvciByZWdleCBldmFsdWF0aW9uLgotIC0gbmFtZTogamF2YXNjcmlwdC5vcHRpb25z Lm5hdGl2ZV9yZWdleHAKLSAgIHR5cGU6IGJvb2wKLSAgIHZhbHVlOiB0cnVlCi0gICBtaXJyb3I6 IGFsd2F5cyAgIyBMb2FkU3RhcnR1cEpTUHJlZnMKLUBAIC01OTY4LDE3ICs1OTY4LDE3IEBACi0g ICB2YWx1ZTogNiAqIDEwMjQgKiAxMDI0Ci0gI2Vsc2UKLSAgIHZhbHVlOiAyICogMTAyNCAqIDEw MjQKLSAjZW5kaWYKLSAgIG1pcnJvcjogYWx3YXlzCi0gCi0gLSBuYW1lOiBqYXZhc2NyaXB0Lm9w dGlvbnMud2FzbV9vcHRpbWl6aW5naml0Ci0gICB0eXBlOiBib29sCi0tICB2YWx1ZTogdHJ1ZQot KyAgdmFsdWU6IGZhbHNlCi0gICBtaXJyb3I6IGFsd2F5cwotIAotICNpZiBkZWZpbmVkKEVOQUJM RV9XQVNNX1NJTUQpCi0gLSAgIG5hbWU6IGphdmFzY3JpcHQub3B0aW9ucy53YXNtX3NpbWQKLSAg ICAgdHlwZTogYm9vbAotICAgICB2YWx1ZTogdHJ1ZQotICAgICBtaXJyb3I6IGFsd2F5cwotICNl bmRpZiAgLy8gZGVmaW5lZChFTkFCTEVfV0FTTV9TSU1EKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9m aXJlZm94LWVzci9wYXRjaGVzL3NraWEtc3Vja3MzLnBhdGNoIGIvc3JjcGtncy9maXJlZm94LWVz ci9wYXRjaGVzL3NraWEtc3Vja3MzLnBhdGNoCmluZGV4IDkwODMxMWNkYjZkYi4uNGJmNzdlNjg0 NDA1IDEwMDY0NAotLS0gYS9zcmNwa2dzL2ZpcmVmb3gtZXNyL3BhdGNoZXMvc2tpYS1zdWNrczMu cGF0Y2gKKysrIGIvc3JjcGtncy9maXJlZm94LWVzci9wYXRjaGVzL3NraWEtc3Vja3MzLnBhdGNo CkBAIC0zMCwyNyArMzAsMyBAQCBkaWZmIC1yIDQ2ZWE4NjZjYTNhYyAtciA2ZWYyMGVlZTNmOGYg Z2Z4LzJkL0RyYXdUYXJnZXRTa2lhLmNwcAogICAgbUNhbnZhcy0+c2F2ZUxheWVyKHNhdmVSZWMp OwogIAogICAgU2V0UGVybWl0U3VicGl4ZWxBQShhT3BhcXVlKTsKLS0tLSBhL2dmeC9sYXllcnMv Y29tcG9zaXRlL0NvbXBvc2l0YWJsZUhvc3QuY3BwCi0rKysgYi9nZngvbGF5ZXJzL2NvbXBvc2l0 ZS9Db21wb3NpdGFibGVIb3N0LmNwcAotQEAgLTEzLDYgKzEzLDcgQEAKLSAjaW5jbHVkZSAiSW1h Z2VIb3N0LmgiICAvLyBmb3IgSW1hZ2VIb3N0QnVmZmVyZWQsIGV0YwotICNpbmNsdWRlICJMYXll cnMuaCIKLSAjaW5jbHVkZSAiVGlsZWRDb250ZW50SG9zdC5oIiAgLy8gZm9yIFRpbGVkQ29udGVu dEhvc3QKLSsjaW5jbHVkZSAibW96aWxsYS9FbmRpYW5VdGlscy5oIgotICNpbmNsdWRlICJtb3pp bGxhL2dmeC9nZnhWYXJzLmgiCi0gI2luY2x1ZGUgIm1vemlsbGEvbGF5ZXJzL0xheWVyc1N1cmZh Y2VzLmgiICAvLyBmb3IgU3VyZmFjZURlc2NyaXB0b3IKLSAjaW5jbHVkZSAibW96aWxsYS9sYXll cnMvVGV4dHVyZUhvc3QuaCIgICAgIC8vIGZvciBUZXh0dXJlSG9zdCwgZXRjCi1AQCAtOTIsOSAr OTMsMTMgQEAgYm9vbCBDb21wb3NpdGFibGVIb3N0OjpBZGRNYXNrRWZmZWN0KEVmZmVjdENoYWlu JiBhRWZmZWN0cywKLSAgIH0KLSAgIE1PWl9BU1NFUlQoc291cmNlKTsKLSAKLSsgIC8vIFNldHRp bmcgYW4gYWxwaGEtbWFzayBoZXJlIGJyZWFrcyB0aGUgVVJMLWJhciBvbiBiaWcgZW5kaWFuIChz MzkweCkKLSsgIC8vIGlmIHRoZSB0eXBlZCBVUkwgaXMgdG9vIGxvbmcgZm9yIHRoZSB0ZXh0Ym94 IChhdXRvbWF0aWMgc2Nyb2xsaW5nIG5lZWRlZCkKLSsjaWYgTU9aX0xJVFRMRV9FTkRJQU4oKQot ICAgUmVmUHRyPEVmZmVjdE1hc2s+IGVmZmVjdCA9Ci0gICAgICAgbmV3IEVmZmVjdE1hc2soc291 cmNlLCBzb3VyY2UtPkdldFNpemUoKSwgYVRyYW5zZm9ybSk7Ci0gICBhRWZmZWN0cy5tU2Vjb25k YXJ5RWZmZWN0c1tFZmZlY3RUeXBlczo6TUFTS10gPSBlZmZlY3Q7Ci0rI2VuZGlmCi0gICByZXR1 cm4gdHJ1ZTsKLSB9Ci0gCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZpcmVmb3gtZXNyL3BhdGNoZXMv c25kaW8ucGF0Y2ggYi9zcmNwa2dzL2ZpcmVmb3gtZXNyL3BhdGNoZXMvc25kaW8ucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4NjI4YmVhOGQ4Zi4uMDAwMDAwMDAwMDAwCi0t LSBhL3NyY3BrZ3MvZmlyZWZveC1lc3IvcGF0Y2hlcy9zbmRpby5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDUyICswLDAgQEAKLS0tLSBhL29sZC1jb25maWd1cmUuaW4KLSsrKyBiL29sZC1jb25m aWd1cmUuaW4KLUBAIC0yODE4LDYgKzI4MTgsMjIgQEAKLSAgICAgX05PTl9HTE9CQUxfQUNERUZJ TkVTPSIkX05PTl9HTE9CQUxfQUNERUZJTkVTIE5FQ0tPX0NPT0tJRVMiCi0gZmkKLSAKLStkbmwg PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotK2RubCA9IENoZWNrIHNuZGlvIGF2 YWlsYWJpbGl0eQotK2RubCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rCi0r TU9aX0FSR19FTkFCTEVfQk9PTChzbmRpbywKLStbICAtLWVuYWJsZS1zbmRpbyAgICAgICAgIEVu YWJsZSBzbmRpbyBzdXBwb3J0XSwKLSsgICBNT1pfU05ESU89MSwKLSsgICBNT1pfU05ESU89KQot KwotK2lmIHRlc3QgLW4gIiRNT1pfU05ESU8iOyB0aGVuCi0rICAgIE1PWl9TTkRJT19MSUJTPSIt bHNuZGlvIgotKyAgICBBQ19TVUJTVF9MSVNUKE1PWl9TTkRJT19MSUJTKQotK2ZpCi0rCi0rQUNf U1VCU1QoTU9aX1NORElPKQotKwotIGRubCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotIGRubCA9Ci0gZG5sID0gTWFpbnRhaW5lciBkZWJ1 ZyBvcHRpb24gKG5vIC0tZW5hYmxlIGVxdWl2YWxlbnQpCi0tLS0gYS9tZWRpYS9saWJjdWJlYi9z cmMvbW96LmJ1aWxkCi0rKysgYi9tZWRpYS9saWJjdWJlYi9zcmMvbW96LmJ1aWxkCi1AQCAtNDQs MTEgKzQ0LDEzIEBACi0gICAgIF0KLSAgICAgREVGSU5FU1snVVNFX0pBQ0snXSA9IFRydWUKLSAK LS1pZiBDT05GSUdbJ09TX0FSQ0gnXSA9PSAnT3BlbkJTRCc6Ci0raWYgQ09ORklHWydNT1pfU05E SU8nXToKLSAgICAgU09VUkNFUyArPSBbCi0gICAgICAgICAnY3ViZWJfc25kaW8uYycsCi0gICAg IF0KLSAgICAgREVGSU5FU1snVVNFX1NORElPJ10gPSBUcnVlCi0rCi0raWYgQ09ORklHWydPU19B UkNIJ10gPT0gJ09wZW5CU0QnOgotICAgICBERUZJTkVTWydESVNBQkxFX0xJQlNORElPX0RMT1BF TiddID0gVHJ1ZQotIAotIGlmIENPTkZJR1snT1NfVEFSR0VUJ10gPT0gJ0Rhcndpbic6Ci0tLS0g YS9idWlsZC9tb3ouY29uZmlndXJlL29sZC5jb25maWd1cmUJMjAyMC0wNi0zMCAxMjoxNzowNC4w ODc2MDkwNzAgKzAyMDAKLSsrKyBiL2J1aWxkL21vei5jb25maWd1cmUvb2xkLmNvbmZpZ3VyZQky MDIwLTA2LTMwIDEyOjE3OjA0LjA4NzYwOTA3MCArMDIwMAotQEAgLTg4LDYgKzg4LDcgQEAKLSBA b2xkX2NvbmZpZ3VyZV9vcHRpb25zKAotICAgICAiLS1jYWNoZS1maWxlIiwKLSAgICAgIi0tZGF0 YWRpciIsCi0rICAgICItLWVuYWJsZS1zbmRpbyIsCi0gICAgICItLWVuYWJsZS1jcmFzaHJlcG9y dGVyIiwKLSAgICAgIi0tZW5hYmxlLWRidXMiLAotICAgICAiLS1lbmFibGUtZGVidWctanMtbW9k dWxlcyIsCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZpcmVmb3gtZXNyL3BhdGNoZXMvc3FsaXRlLXBw Yy5wYXRjaCBiL3NyY3BrZ3MvZmlyZWZveC1lc3IvcGF0Y2hlcy9zcWxpdGUtcHBjLnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTFmN2ZhYTYxOGRkCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9maXJlZm94LWVzci9wYXRjaGVzL3NxbGl0ZS1wcGMucGF0 Y2gKQEAgLTAsMCArMSw1NSBAQAorRnJvbSA2NzE1N2IxYWE3ZGEwYTE0NmI3ZDJkNWFiYjkyMzdl ZWExZjQzNGVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGFuaWVsIEtvbGVzYSA8 ZGFuaWVsQG9jdGFmb3JnZS5vcmc+CitEYXRlOiBGcmksIDIzIFNlcCAyMDIyIDAyOjM4OjI5ICsw MjAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBzcWxpdGUzIG9uIHBwYyB3aXRoIGNsYW5nCisKK1Ro ZSBfX3BwY19fIG1hY3JvIGlzIGFsd2F5cyBkZWZpbmVkIG9uIGNsYW5nIGJ1dCBub3QgZ2NjLCB3 aGljaAorcmVzdWx0cyBpbiBzcWxpdGUgbWlzdGFrZW5seSB0aGlua2luZyB0aGF0IHBwYzY0bGUg d2l0aCBjbGFuZworaXMgYmlnIGVuZGlhbi4KKworQWxzbyBkaXNhYmxlIHNvbWUgaW5saW5lIGFz c2VtYmx5IHN0dWZmIG9uIHBwYyB0aGF0IGlzIG5ldmVyIHVzZWQKK3dpdGggZ2NjIGFuZCBwcm9i YWJseSB3YXMgbmV2ZXIgdGVzdGVkIHdpdGggbW9kZXJuIG1hY2hpbmVzLgorLS0tCisgdGhpcmRf cGFydHkvc3FsaXRlMy9zcmMvc3FsaXRlMy5jIHwgMTAgKysrKystLS0tLQorIDEgZmlsZSBjaGFu Z2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90aGly ZF9wYXJ0eS9zcWxpdGUzL3NyYy9zcWxpdGUzLmMgYi90aGlyZF9wYXJ0eS9zcWxpdGUzL3NyYy9z cWxpdGUzLmMKK2luZGV4IDRmM2RjNjguLjkwMTcwNjIgMTAwNjQ0CistLS0gYS90aGlyZF9wYXJ0 eS9zcWxpdGUzL3NyYy9zcWxpdGUzLmMKKysrKyBiL3RoaXJkX3BhcnR5L3NxbGl0ZTMvc3JjL3Nx bGl0ZTMuYworQEAgLTE0MzE3LDkgKzE0MzE3LDkgQEAgdHlwZWRlZiBJTlQxNl9UWVBFIExvZ0Vz dDsKKyAjIGlmIGRlZmluZWQoaTM4NikgICAgICB8fCBkZWZpbmVkKF9faTM4Nl9fKSAgICAgIHx8 IGRlZmluZWQoX01fSVg4NikgfHwgICAgXAorICAgICAgZGVmaW5lZChfX3g4Nl82NCkgIHx8IGRl ZmluZWQoX194ODZfNjRfXykgICAgfHwgZGVmaW5lZChfTV9YNjQpICB8fCAgICBcCisgICAgICBk ZWZpbmVkKF9NX0FNRDY0KSAgfHwgZGVmaW5lZChfTV9BUk0pICAgICAgICB8fCBkZWZpbmVkKF9f eDg2KSAgIHx8ICAgIFwKKy0gICAgIGRlZmluZWQoX19BUk1FTF9fKSB8fCBkZWZpbmVkKF9fQUFS Q0g2NEVMX18pIHx8IGRlZmluZWQoX01fQVJNNjQpCisrICAgICBkZWZpbmVkKF9fQVJNRUxfXykg fHwgZGVmaW5lZChfX0FBUkNINjRFTF9fKSB8fCBkZWZpbmVkKF9NX0FSTTY0KSB8fCBkZWZpbmVk KF9fTElUVExFX0VORElBTl9fKQorICMgICBkZWZpbmUgU1FMSVRFX0JZVEVPUkRFUiAgICAxMjM0 CistIyBlbGlmIGRlZmluZWQoc3BhcmMpICAgICB8fCBkZWZpbmVkKF9fcHBjX18pIHx8IFwKKysj IGVsaWYgZGVmaW5lZChzcGFyYykgICAgIHx8IGRlZmluZWQoX19CSUdfRU5ESUFOX18pIHx8IFwK KyAgICAgICAgZGVmaW5lZChfX0FSTUVCX18pIHx8IGRlZmluZWQoX19BQVJDSDY0RUJfXykKKyAj ICAgZGVmaW5lIFNRTElURV9CWVRFT1JERVIgICAgNDMyMQorICMgZWxzZQorQEAgLTIwNzEzLDcg KzIwNzEzLDcgQEAgU1FMSVRFX1BSSVZBVEUgY29uc3QgY2hhciAqKnNxbGl0ZTNDb21waWxlT3B0 aW9ucyhpbnQgKnBuT3B0KTsKKyAgICAgICByZXR1cm4gdmFsOworICAgfQorIAorLSNlbGlmICFk ZWZpbmVkKF9fU1RSSUNUX0FOU0lfXykgJiYgKGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQo X19wcGNfXykpCisrI2VsaWYgMAorIAorICAgX19pbmxpbmVfXyBzcWxpdGVfdWludDY0IHNxbGl0 ZTNId3RpbWUodm9pZCl7CisgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHJldHZhbDsKK0BAIC0x OTYzODUsOSArMTk2Mzg1LDkgQEAgc3RydWN0IFJ0cmVlTWF0Y2hBcmcgeworICNpZiBkZWZpbmVk KGkzODYpICAgICB8fCBkZWZpbmVkKF9faTM4Nl9fKSAgIHx8IGRlZmluZWQoX01fSVg4NikgfHwg ICAgXAorICAgICBkZWZpbmVkKF9feDg2XzY0KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRl ZmluZWQoX01fWDY0KSAgfHwgICAgXAorICAgICBkZWZpbmVkKF9NX0FNRDY0KSB8fCBkZWZpbmVk KF9NX0FSTSkgICAgIHx8IGRlZmluZWQoX194ODYpICAgfHwgICAgXAorLSAgICBkZWZpbmVkKF9f YXJtX18pCisrICAgIGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU5f XykKKyAjIGRlZmluZSBTUUxJVEVfQllURU9SREVSICAgIDEyMzQKKy0jZWxpZiBkZWZpbmVkKHNw YXJjKSAgICB8fCBkZWZpbmVkKF9fcHBjX18pCisrI2VsaWYgZGVmaW5lZChzcGFyYykgICAgfHwg ZGVmaW5lZChfX0JJR19FTkRJQU5fXykKKyAjIGRlZmluZSBTUUxJVEVfQllURU9SREVSICAgIDQz MjEKKyAjZWxzZQorICMgZGVmaW5lIFNRTElURV9CWVRFT1JERVIgICAgMCAgICAgLyogMCBtZWFu cyAidW5rbm93biBhdCBjb21waWxlLXRpbWUiICovCistLSAKKzIuMzcuMworCmRpZmYgLS1naXQg YS9zcmNwa2dzL2ZpcmVmb3gtZXNyL3RlbXBsYXRlIGIvc3JjcGtncy9maXJlZm94LWVzci90ZW1w bGF0ZQppbmRleCA1OGMwNjU2NDliYzQuLjU3YzkxZmNjOTg2MCAxMDA2NDQKLS0tIGEvc3JjcGtn cy9maXJlZm94LWVzci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2ZpcmVmb3gtZXNyL3RlbXBsYXRl CkBAIC0zLDcgKzMsNyBAQAogIyBUSElTIFBLRyBNVVNUIEJFIFNZTkNIUk9OSVpFRCBXSVRIICJz cmNwa2dzL2ZpcmVmb3gtZXNyLWkxOG4iLgogIwogcGtnbmFtZT1maXJlZm94LWVzcgotdmVyc2lv bj05MS4xMC4wCit2ZXJzaW9uPTEwMi4zLjAKIHJldmlzaW9uPTEKIHdya3NyYz0iZmlyZWZveC0k e3ZlcnNpb259IgogYnVpbGRfaGVscGVyPSJydXN0IgpAQCAtMTEsMjcgKzExLDI4IEBAIHNob3J0 X2Rlc2M9Ik1vemlsbGEgRmlyZWZveCB3ZWIgYnJvd3NlciAtIEV4dGVuZGVkIFN1cHBvcnQgUmVs ZWFzZSIKIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNl bnNlPSJNUEwtMi4wLCBHUEwtMi4wLW9yLWxhdGVyLCBMR1BMLTIuMS1vci1sYXRlciIKIGhvbWVw YWdlPSJodHRwczovL3d3dy5tb3ppbGxhLm9yZy9maXJlZm94LyIKLWRpc3RmaWxlcz0iJHtNT1pJ TExBX1NJVEV9L2ZpcmVmb3gvcmVsZWFzZXMvJHt2ZXJzaW9ufWVzci9zb3VyY2UvZmlyZWZveC0k e3ZlcnNpb259ZXNyLnNvdXJjZS50YXIueHoKLSBodHRwczovL2dpdGh1Yi5jb20vY2htZWVlZGFs Zi9nZWNrby1kZXYvZmlsZXMvNzcyOTA4Ni9lc3JwcGNqaXQudGFyLmd6IgotY2hlY2tzdW09Ijgy NWE4Y2IzOGJiNWRhOTgyMWVmODdjYzZkZTY0YWYwMDdjZjBmYWVmMDdjNGVkMDY1MTI4M2I1NmEw ZWUxYmIKLSA1ZTkyNmE4YmU1ZDZkNDk0OWMzYmMzZWI5OGUyMTAzNjkyZWFhMjZhOTg5MjhkYjQz MmIxZDQ0YjUzNWY3MjQxIgorZGlzdGZpbGVzPSIke01PWklMTEFfU0lURX0vZmlyZWZveC9yZWxl YXNlcy8ke3ZlcnNpb259ZXNyL3NvdXJjZS9maXJlZm94LSR7dmVyc2lvbn1lc3Iuc291cmNlLnRh ci54eiIKK2NoZWNrc3VtPTMwOGUyM2I2ZGNmOTY0ZTM0MmNmOTVmZDBjOGEzODYxMjczNzFiNjIw YTQ4OWFlMjZlNTM3ZDcyODM0MWI1NWEKIAogbGliMzJkaXNhYmxlZD15ZXMKIAogaG9zdG1ha2Vk ZXBlbmRzPSJhdXRvY29uZjIxMyB1bnppcCB6aXAgcGtnLWNvbmZpZyBwZXJsIHB5dGhvbjMgeWFz bSBydXN0IGNhcmdvCi0gbGx2bSBjbGFuZyBub2RlanMtbHRzIGNiaW5kZ2VuIHB5dGhvbiBuYXNt IHdoaWNoIHRhciIKKyBsbHZtIGNsYW5nIGxsZCBub2RlanMgY2JpbmRnZW4gbmFzbSB3aGljaCB0 YXIiCiBtYWtlZGVwZW5kcz0ibnNzLWRldmVsIGxpYmpwZWctdHVyYm8tZGV2ZWwgZ3RrKzMtZGV2 ZWwgaWN1LWRldmVsCi0gcGl4bWFuLWRldmVsIGxpYmV2ZW50LWRldmVsIGxpYm5vdGlmeS1kZXZl bCBsaWJ2cHgtZGV2ZWwKKyBwaXhtYW4tZGV2ZWwgbGliZXZlbnQtZGV2ZWwgbGlibm90aWZ5LWRl dmVsIGxpYnZweC1kZXZlbCBsaWJ3ZWJwLWRldmVsCiAgbGliWHJlbmRlci1kZXZlbCBsaWJYY29t cG9zaXRlLWRldmVsIGxpYlNNLWRldmVsIGxpYlh0LWRldmVsIHJ1c3Qtc3RkCi0gbGliWGRhbWFn ZS1kZXZlbCBmcmVldHlwZS1kZXZlbCAkKHZvcHRfaWYgYWxzYSBhbHNhLWxpYi1kZXZlbCkKLSAk KHZvcHRfaWYgZGJ1cyBkYnVzLWdsaWItZGV2ZWwpICQodm9wdF9pZiBwdWxzZWF1ZGlvIHB1bHNl YXVkaW8tZGV2ZWwpCi0gJCh2b3B0X2lmIHhzY3JlZW5zYXZlciBsaWJYU2NyblNhdmVyLWRldmVs KQorIGxpYlhkYW1hZ2UtZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgbGliYXRvbWljLWRldmVsCisgJCh2 b3B0X2lmIGFsc2EgYWxzYS1saWItZGV2ZWwpICQodm9wdF9pZiBkYnVzIGRidXMtZ2xpYi1kZXZl bCkKKyAkKHZvcHRfaWYgcHVsc2VhdWRpbyBwdWxzZWF1ZGlvLWRldmVsKSAkKHZvcHRfaWYgeHNj cmVlbnNhdmVyIGxpYlhTY3JuU2F2ZXItZGV2ZWwpCiAgJCh2b3B0X2lmIHNuZGlvIHNuZGlvLWRl dmVsKSAkKHZvcHRfaWYgamFjayBqYWNrLWRldmVsKSIKLWRlcGVuZHM9Im5zcz49My42NiBuc3By Pj00LjMyIGRlc2t0b3AtZmlsZS11dGlscyBoaWNvbG9yLWljb24tdGhlbWUiCitkZXBlbmRzPSJu c3M+PTMuNzIgbnNwcj49NC4zMiBkZXNrdG9wLWZpbGUtdXRpbHMgaGljb2xvci1pY29uLXRoZW1l IgogY29uZmxpY3RzPSJmaXJlZm94Pj0wIgogCi1idWlsZF9vcHRpb25zPSJhbHNhIGphY2sgZGJ1 cyBwdWxzZWF1ZGlvIHhzY3JlZW5zYXZlciBzbmRpbyB3YXlsYW5kIgotYnVpbGRfb3B0aW9uc19k ZWZhdWx0PSJhbHNhIGphY2sgZGJ1cyBwdWxzZWF1ZGlvIHhzY3JlZW5zYXZlciBzbmRpbyB3YXls YW5kIgorYnVpbGRfb3B0aW9ucz0iYWxzYSBqYWNrIGRidXMgcHVsc2VhdWRpbyB4c2NyZWVuc2F2 ZXIgc25kaW8gd2F5bGFuZCBsdG8gY2xhbmciCitidWlsZF9vcHRpb25zX2RlZmF1bHQ9ImFsc2Eg amFjayBkYnVzIHB1bHNlYXVkaW8geHNjcmVlbnNhdmVyIHNuZGlvIHdheWxhbmQgY2xhbmciCisK K2Rlc2Nfb3B0aW9uX2x0bz0iRW5hYmxlIExpbmsgVGltZSBPcHRpbWl6YXRpb24iCitkZXNjX29w dGlvbl9jbGFuZz0iQnVpbGQgd2l0aCBjbGFuZyIKIAogY2FzZSAkWEJQU19UQVJHRVRfTUFDSElO RSBpbgogCWFybXZbNTZdKikgYnJva2VuPSJyZXF1aXJlZCBORU9OIGV4dGVuc2lvbnMgYXJlIG5v dCBzdXBwb3J0ZWQgb24gYXJtdjYiIDs7CkBAIC0zOSwxNiArNDAsNiBAQCBjYXNlICRYQlBTX1RB UkdFVF9NQUNISU5FIGluCiAJcHBjKikgYnJva2VuPSJ4cHRjYWxsIGJpdHJvdCIgOzsKIGVzYWMK IAotaWYgWyAiJFhCUFNfVEFSR0VUX05PX0FUT01JQzgiIF07IHRoZW4KLQltYWtlZGVwZW5kcys9 IiBsaWJhdG9taWMtZGV2ZWwiCi1maQotCi0jIHdvcmsgYXJvdW5kIGxhcmdlIGRlYnVnIHN5bWJv bHMgb24gMzItYml0IGhvc3RzCi0jIGNhcmdvOndhcm5pbmc9Y2MxcGx1czogb3V0IG9mIG1lbW9y eSBhbGxvY2F0aW5nIDY1NTM2IGJ5dGVzIGFmdGVyIGEgdG90YWwgb2YgMTAxMDEyNjg0OCBieXRl cwotaWYgWyAiJFhCUFNfV09SRFNJWkUiID0gIjMyIiBdOyB0aGVuCi0Jbm9kZWJ1Zz15ZXMKLWZp Ci0KICMgd2UgbmVlZCB0aGlzIGJlY2F1c2UgY2FyZ28gdmVyaWZpZXMgY2hlY2tzdW1zIG9mIGFs bCBmaWxlcyBpbiB2ZW5kb3IKICMgY3JhdGVzIHdoZW4gaXQgYnVpbGRzIGFuZCBnaXZlcyB1cyBu byB3YXkgdG8gb3ZlcnJpZGUgb3IgdXBkYXRlIHRoZQogIyBmaWxlIHNhbmVseS4uLiBzbyBqdXN0 IGNsZWFyIG91dCB0aGUgZmlsZSBsaXN0CkBAIC02MywxMDEgKzU0LDE3NCBAQCBwb3N0X2V4dHJh Y3QoKSB7CiAJCTs7CiAJZXNhYwogCi0JIyBwcGM2NGxlIGppdCwgc2VlIC0tZW5hYmxlLWppdCBs YXRlcgotCW12IC4uL2pzL3NyYy9qaXQvcHBjNjQganMvc3JjL2ppdAotCiAJIyBNb3ppbGxhIEFQ SSBrZXlzIChzZWUgaHR0cHM6Ly9sb2NhdGlvbi5zZXJ2aWNlcy5tb3ppbGxhLmNvbS9hcGkpCiAJ IyBOb3RlOiBUaGlzIGlzIGZvciBWb2lkIExpbnV4IHVzZSBPTkxZLgogCWVjaG8gLW4gImNkODk0 NTA0LTdhMmEtNDI2My1hYmZmLWZmNzNlZTg5ZmZjYSIgPiBtb3ppbGxhLWFwaS1rZXkKIH0KIAog cG9zdF9wYXRjaCgpIHsKLQlfY2xlYXJfdmVuZG9yX2NoZWNrc3VtcyBudW0tdHJhaXRzCisJOiAj IF9jbGVhcl92ZW5kb3JfY2hlY2tzdW1zIG51bS10cmFpdHMKIH0KIAogZG9fYnVpbGQoKSB7Ci0J Y3AgIiR7RklMRVNESVJ9L21vemNvbmZpZyIgIiR7d3Jrc3JjfS8ubW96Y29uZmlnIgotCi0JY2Fz ZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCi0JKi1tdXNsKQotCQllY2hvICJhY19hZGRfb3B0 aW9ucyAtLWRpc2FibGUtamVtYWxsb2MiID4+Lm1vemNvbmZpZwotCQllY2hvICJhY19hZGRfb3B0 aW9ucyAtLWRpc2FibGUtZ29sZCIgPj4ubW96Y29uZmlnCi0JCTs7Ci0JZXNhYwotCi0JY2FzZSAi JFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCi0JeDg2XzY0KnxpNjg2Knxhcm0qKQotCQllY2hvICJh Y19hZGRfb3B0aW9ucyAtLWRpc2FibGUtZWxmLWhhY2siID4+Lm1vemNvbmZpZwotCQk7OwotCWVz YWMKLQotCSMgd2VicnRjIGN1cnJlbnRseSBmYWlscyB0byBidWlsZCBvbiAzMi1iaXQgcHBjLi4u Ci0JIyBhbHNvIGVuYWJsZSBqaXQgb24gcHBjNjRsZSwgd2hpY2ggaXMgcGF0Y2hlZCBpbiBlYXJs aWVyCi0gICAgICAgICMgaHR0cHM6Ly93d3cudGFsb3NwYWNlLmNvbS8yMDIxLzEyLzkxZXNyLXdp dGgtYmFzZWxpbmUtY29tcGlsZXJiYXNlbGluZS5odG1sCi0JY2FzZSAiJFhCUFNfVEFSR0VUX01B Q0hJTkUiIGluCi0JcHBjNjRsZSopIGVjaG8gImFjX2FkZF9vcHRpb25zIC0tZW5hYmxlLWppdCIg Pj4ubW96Y29uZmlnIDs7Ci0JcHBjNjQqKSBlY2hvICJhY19hZGRfb3B0aW9ucyAtLWRpc2FibGUt aml0IiA+Pi5tb3pjb25maWcgOzsKLQlwcGMqKQotCQllY2hvICJhY19hZGRfb3B0aW9ucyAtLWRp c2FibGUtaml0IiA+Pi5tb3pjb25maWcKLQkJZWNobyAiYWNfYWRkX29wdGlvbnMgLS1kaXNhYmxl LXdlYnJ0YyIgPj4ubW96Y29uZmlnCi0JCTs7Ci0JZXNhYwotCi0JaWYgWyAiJFhCUFNfVEFSR0VU X05PX0FUT01JQzgiIF07IHRoZW4KLQkJZXhwb3J0IExERkxBR1MrPSIgLWxhdG9taWMiCi0JZmkK LQotCWlmIFsgIiRDUk9TU19CVUlMRCIgXTsgdGhlbgotCQlCSU5ER0VOX0lOQ0xVREVfRkxBR1M9 JCggJENQUCAteCBjKysgLXYgL2Rldi9udWxsIC1vIC9kZXYvbnVsbCAyPiYxIHwgXAotCQkJc2Vk IC1uICcvI2luY2x1ZGUgPC4uLj4gc2VhcmNoIHN0YXJ0cyBoZXJlOi8sL0VuZCBvZiBzZWFyY2gg bGlzdC4vcCcgfCBcCi0JCQlzZWQgJzEsMWQ7JGQnIHwgc2VkICAncy9eIC8tSS8nIHwgcGFzdGUg LXMgKQotCi0JCWV4cG9ydCBCSU5ER0VOX0NGTEFHUz0iLS10YXJnZXQ9JFhCUFNfQ1JPU1NfVFJJ UExFVCBcCi0JCQktLXN5c3Jvb3Q9JHtYQlBTX0NST1NTX0JBU0V9ICR7QklOREdFTl9JTkNMVURF X0ZMQUdTfSIKLQkJZXhwb3J0IEhPU1RfQ0M9Y2MKLQkJZXhwb3J0IFRBUkdFVF9DQz0iJHtDQ30i Ci0JCWV4cG9ydCBIT1NUX0NGTEFHUz0iJHtYQlBTX0NGTEFHU30iCi0JCWV4cG9ydCBIT1NUX0NY WEZMQUdTPSIke1hCUFNfQ1hYRkxBR1N9IgotCQlleHBvcnQgYWNfY3Zfc3FsaXRlX3NlY3VyZV9k ZWxldGU9eWVzIFwKLQkJCWFjX2N2X3NxbGl0ZV90aHJlYWRzYWZlPXllcyBcCi0JCQlhY19jdl9z cWxpdGVfZW5hYmxlX2Z0czM9eWVzIFwKLQkJCWFjX2N2X3NxbGl0ZV9kYnN0YXRfdnRhYj15ZXMg XAotCQkJYWNfY3Zfc3FsaXRlX2VuYWJsZV91bmxvY2tfbm90aWZ5PXllcyBcCi0JCQlhY19jdl9w cm9nX2hvc3RjeHhfd29ya3M9MQotCi0JCWVjaG8gImFjX2FkZF9vcHRpb25zIC0tdGFyZ2V0PSRY QlBTX0NST1NTX1RSSVBMRVQiID4+Lm1vemNvbmZpZwotCQllY2hvICJhY19hZGRfb3B0aW9ucyAt LWhvc3Q9JFhCUFNfVFJJUExFVCIgPj4ubW96Y29uZmlnCi0JZWxzZQotCQllY2hvICJhY19hZGRf b3B0aW9ucyAtLXRhcmdldD0kWEJQU19UUklQTEVUIiA+Pi5tb3pjb25maWcKLQkJZWNobyAiYWNf YWRkX29wdGlvbnMgLS1ob3N0PSRYQlBTX1RSSVBMRVQiID4+Lm1vemNvbmZpZworCWlmIFsgIiRi dWlsZF9vcHRpb25fY2xhbmciIF07IHRoZW4KKwkJZXhwb3J0IENDPWNsYW5nCisJCWV4cG9ydCBD WFg9Y2xhbmcrKworCisJCWlmIFsgIiRDUk9TU19CVUlMRCIgXTsgdGhlbgorCQkJbWtkaXIgLXAg d3JhcHBlcgorCisJCQlsb2NhbCBnY2NfdmVyc2lvbj0kKGdjYyAtZHVtcHZlcnNpb24pCisJCQls b2NhbCBjbGFuZ192ZXJzaW9uPSQoY2xhbmcgLWR1bXB2ZXJzaW9uKQorCisJCQljYXQgPDwtISA+ IndyYXBwZXIvJHtYQlBTX1RBUkdFVF9NQUNISU5FfS1jbGFuZyIKKwkJCSMhL2Jpbi9zaAorCQkJ ZXhlYyBjbGFuZyBcCisJCQkJLS10YXJnZXQ9IiR7WEJQU19DUk9TU19UUklQTEVUfSIgXAorCQkJ CS0tZ2NjLXRvb2xjaGFpbj0vdXNyIFwKKwkJCQktLXN5c3Jvb3Q9IiR7WEJQU19DUk9TU19CQVNF fSIgXAorCQkJCS1ub3N0ZGluYyBcCisJCQkJLWlzeXN0ZW0gIiR7WEJQU19DUk9TU19CQVNFfS91 c3IvaW5jbHVkZSIgXAorCQkJCS1pc3lzdGVtICIvdXNyL2xpYi9jbGFuZy8ke2NsYW5nX3ZlcnNp b259L2luY2x1ZGUiIFwKKwkJCQkiXCRAIgorCQkJIQorCisJCQljYXQgPDwtISA+IndyYXBwZXIv JHtYQlBTX1RBUkdFVF9NQUNISU5FfS1jbGFuZysrIgorCQkJIyEvYmluL3NoCisJCQlleGVjIGNs YW5nKysgXAorCQkJCS0tdGFyZ2V0PSIke1hCUFNfQ1JPU1NfVFJJUExFVH0iIFwKKwkJCQktLWdj Yy10b29sY2hhaW49L3VzciBcCisJCQkJLS1zeXNyb290PSIke1hCUFNfQ1JPU1NfQkFTRX0iIFwK KwkJCQktbm9zdGRpbmMrKyBcCisJCQkJLWlzeXN0ZW0gIiR7WEJQU19DUk9TU19CQVNFfS91c3Iv aW5jbHVkZS9jKysvJHtnY2NfdmVyc2lvbiUuKn0iIFwKKwkJCQktaXN5c3RlbSAiJHtYQlBTX0NS T1NTX0JBU0V9L3Vzci9pbmNsdWRlL2MrKy8ke2djY192ZXJzaW9uJS4qfS8ke1hCUFNfQ1JPU1Nf VFJJUExFVH0iIFwKKwkJCQktaXN5c3RlbSAiJHtYQlBTX0NST1NTX0JBU0V9L3Vzci9pbmNsdWRl L2MrKy8ke2djY192ZXJzaW9uJS4qfS9iYWNrd2FyZCIgXAorCQkJCS1ub3N0ZGluYyBcCisJCQkJ LWlzeXN0ZW0gIiR7WEJQU19DUk9TU19CQVNFfS91c3IvaW5jbHVkZSIgXAorCQkJCS1pc3lzdGVt ICIvdXNyL2xpYi9jbGFuZy8ke2NsYW5nX3ZlcnNpb259L2luY2x1ZGUiIFwKKwkJCQkiXCRAIgor CQkJIQorCisJCQljaG1vZCAreCB3cmFwcGVyLyoKKworCQkJZXhwb3J0IFBBVEg9IiR7d3Jrc3Jj fS93cmFwcGVyOiRQQVRIIgorCQkJZXhwb3J0IENDPSR7WEJQU19UQVJHRVRfTUFDSElORX0tY2xh bmcKKwkJCWV4cG9ydCBDWFg9JHtYQlBTX1RBUkdFVF9NQUNISU5FfS1jbGFuZysrCisJCWZpCisK KwkJZXhwb3J0IEFSPWxsdm0tYXIKKwkJZXhwb3J0IE5NPWxsdm0tbm0KKwkJZXhwb3J0IEhPU1Rf Q0M9Y2xhbmcKKwkJZXhwb3J0IEhPU1RfQ1hYPWNsYW5nKysKIAlmaQogCi0JbWtkaXIgLXAgdGhp cmRfcGFydHkvcnVzdC9saWJsb2FkaW5nLy5kZXBzCi0KLQljYXNlICIkWEJQU19UQVJHRVRfTUFD SElORSIgaW4KLQlhcm12NyopCi0JCWV4cG9ydCBDRkxBR1MrPSIgLW1mcHU9bmVvbiAtV25vLXBz YWJpIgotCQlleHBvcnQgQ1hYRkxBR1MrPSIgLW1mcHU9bmVvbiAtV25vLXBzYWJpIgotCQk7Owot CWVzYWMKKwlleHBvcnQgQVM9IiR7Q0N9IgorCWV4cG9ydCBDRkxBR1M9Ii1PMiIKKwlleHBvcnQg Q1hYRkxBR1M9Ii1PMiIKKwlleHBvcnQgSE9TVF9DRkxBR1M9IiIKKwlleHBvcnQgSE9TVF9DWFhG TEFHUz0iIgorCWV4cG9ydCBMREZMQUdTPSItV2wsLXJwYXRoPS91c3IvbGliL2ZpcmVmb3giCisJ IyBleHBvcnQgTERGTEFHUys9Ii1XbCwtLXRocmVhZHM9JHtYQlBTX01BS0VKT0JTfSIKKworCWRp c2FibGVfamVtYWxsb2MoKSB7CisJCWlmIFsgIiRYQlBTX1RBUkdFVF9MSUJDIiA9ICJtdXNsIiBd OyB0aGVuCisJCQllY2hvICJhY19hZGRfb3B0aW9ucyAtLWRpc2FibGUtamVtYWxsb2MiCisJCWZp CisJfQorCisJZGlzYWJsZV9lbGZoYWNrKCkgeworCQljYXNlICIkWEJQU19UQVJHRVRfTUFDSElO RSIgaW4KKwkJeDg2XzY0KnxpNjg2Knxhcm0qfGFhcmNoNjQqKSBlY2hvICJhY19hZGRfb3B0aW9u cyAtLWRpc2FibGUtZWxmLWhhY2siIDs7CisJCWVzYWMKKwl9CisKKwlkaXNhYmxlX3dlYnJ0Yygp IHsKKwkJIyBpdCBzZWVtcyBtb3ppbGxhIGhhcyBzdGFydGVkIGNhdGNoaW5nIHVwIHdpdGggZ29v Z2xlJ3Mgd2VicnRjCisJCSMgYW5kIHRoaXMgbmV3bHkgaW52b2x2ZXMgaW50cm9kdWNpbmcgc2V2 ZXJhbCBtZWdhYnl0ZXMgb2YgZ2VuZXJhdGVkCisJCSMganNvbiBqdW5rIHRoYXQgd2UganVzdCBj YW5ub3QgbWFpbnRhaW4gaW4tdHJlZSwgYWRkaXRpb25hbGx5IHRoZXkKKwkJIyBoYXZlIGluZGlj YXRlZCB0aGF0IHRoZXkgd2lsbCBiZSByZS1nZW5lcmF0aW5nIHRoZXNlIGZyZXF1ZW50bHkKKwkJ IworCQkjIGl0IGlzIHVuYWNjZXB0YWJsZSB0byBrZWVwIGEgN01CIHBhdGNoIGRvd25zdHJlYW0s IHNvIGRpc2FibGUgaXQKKwkJIworCQkjIGh0dHBzOi8vcGhhYnJpY2F0b3Iuc2VydmljZXMubW96 aWxsYS5jb20vRDEzNDczOAorCQkjCisJCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgor CQlwcGM2NGxlKnxhcm12N2wqKSBlY2hvICJhY19hZGRfb3B0aW9ucyAtLWRpc2FibGUtd2VicnRj IiA7OworCQllc2FjCisKKwkJIyB0aGlyZF9wYXJ0eS9saWJ3ZWJydGMvY29tbW9uX2F1ZGlvL3dh dl9maWxlLmNjOjkzOjI6IGVycm9yOgorCQkjICNlcnJvciAiTmVlZCB0byBjb252ZXJ0IHNhbXBs ZXMgdG8gYmlnLWVuZGlhbiB3aGVuIHJlYWRpbmcgZnJvbSBXQVYgZmlsZSIKKwkJaWYgWyAiJFhC UFNfVEFSR0VUX0VORElBTiIgPSAiYmUiIF07IHRoZW4KKwkJCWVjaG8gImFjX2FkZF9vcHRpb25z IC0tZGlzYWJsZS13ZWJydGMiCisJCWZpCisJfQorCisJY2F0IDw8LSEgPi5tb3pjb25maWcKKwlh Y19hZGRfb3B0aW9ucyAtLXByZWZpeD0vdXNyCisJYWNfYWRkX29wdGlvbnMgLS1saWJkaXI9L3Vz ci9saWIKKwlhY19hZGRfb3B0aW9ucyAtLWhvc3Q9JHtYQlBTX1RSSVBMRVR9CisJYWNfYWRkX29w dGlvbnMgLS10YXJnZXQ9JHtYQlBTX0NST1NTX1RSSVBMRVQ6LSR7WEJQU19UUklQTEVUfX0KKwlh Y19hZGRfb3B0aW9ucyAtLWVuYWJsZS1saW5rZXI9JCh2b3B0X2lmIGNsYW5nIGxsZCBiZmQpCisJ JCh2b3B0X2lmIGx0byAnYWNfYWRkX29wdGlvbnMgLS1lbmFibGUtbHRvPWNyb3NzJykKKwkkKHZv cHRfaWYgY2xhbmcgJ2FjX2FkZF9vcHRpb25zIC0td2l0aC1saWJjbGFuZy1wYXRoPS91c3IvbGli JykKKworCWFjX2FkZF9vcHRpb25zIC0tZW5hYmxlLW9mZmljaWFsLWJyYW5kaW5nCisJYWNfYWRk X29wdGlvbnMgLS1lbmFibGUtYXBwbGljYXRpb249YnJvd3NlcgorCWFjX2FkZF9vcHRpb25zIC0t ZW5hYmxlLXJlbGVhc2UKKwlhY19hZGRfb3B0aW9ucyAtLWVuYWJsZS1oYXJkZW5pbmcKKwlhY19h ZGRfb3B0aW9ucyAtLWVuYWJsZS1vcHRpbWl6ZT0iXCR7Q0ZMQUdTfSIKKwlhY19hZGRfb3B0aW9u cyAtLWVuYWJsZS1wYXRoLXJlbWFwcGluZz1jLHJ1c3QKKwlhY19hZGRfb3B0aW9ucyAtLWRpc2Fi bGUtdGVzdHMKKwlhY19hZGRfb3B0aW9ucyAtLWRpc2FibGUtY3Jhc2hyZXBvcnRlcgorCWFjX2Fk ZF9vcHRpb25zIC0tZGlzYWJsZS11cGRhdGVyCisJYWNfYWRkX29wdGlvbnMgLS1kaXNhYmxlLWlu c3RhbGwtc3RyaXAKKwlhY19hZGRfb3B0aW9ucyAtLWRpc2FibGUtc3RyaXAKKwlhY19hZGRfb3B0 aW9ucyAtLWRpc2FibGUtcHJvZmlsaW5nCisJJChkaXNhYmxlX2plbWFsbG9jKQorCSQoZGlzYWJs ZV9lbGZoYWNrKQorCSQoZGlzYWJsZV93ZWJydGMpCisKKwkjIFhYWDogd2FzaSBjdXJyZW50bHkg bm90IHJlYWR5CisJIyBhY19hZGRfb3B0aW9ucyAtLXdpdGgtd2FzaS1zeXNyb290PS91c3Ivc2hh cmUvd2FzaS1zeXNyb290CisJYWNfYWRkX29wdGlvbnMgLS13aXRob3V0LXdhc20tc2FuZGJveGVk LWxpYnJhcmllcworCisJYWNfYWRkX29wdGlvbnMgLS13aXRoLW1vemlsbGEtYXBpLWtleWZpbGU9 IiR7d3Jrc3JjfS9tb3ppbGxhLWFwaS1rZXkiCisKKwlhY19hZGRfb3B0aW9ucyAtLWVuYWJsZS1z eXN0ZW0tcGl4bWFuCisJYWNfYWRkX29wdGlvbnMgLS13aXRoLXN5c3RlbS1mZmkKKwlhY19hZGRf b3B0aW9ucyAtLXdpdGgtc3lzdGVtLWljdQorCWFjX2FkZF9vcHRpb25zIC0td2l0aC1zeXN0ZW0t anBlZworCWFjX2FkZF9vcHRpb25zIC0td2l0aC1zeXN0ZW0tbGliZXZlbnQKKwlhY19hZGRfb3B0 aW9ucyAtLXdpdGgtc3lzdGVtLWxpYnZweAorCWFjX2FkZF9vcHRpb25zIC0td2l0aC1zeXN0ZW0t bnNwcgorCWFjX2FkZF9vcHRpb25zIC0td2l0aC1zeXN0ZW0tbnNzCisJYWNfYWRkX29wdGlvbnMg LS13aXRoLXN5c3RlbS13ZWJwCisJYWNfYWRkX29wdGlvbnMgLS13aXRoLXN5c3RlbS16bGliCisJ IyBYWFg6IHRoZSBzeXN0ZW0ncyBsaWJwbmcgZG9lc24ndCBoYXZlIEFQTkcgc3VwcG9ydAorCWFj X2FkZF9vcHRpb25zIC0td2l0aG91dC1zeXN0ZW0tcG5nCisKKwlhY19hZGRfb3B0aW9ucyAtLXdp dGgtdW5zaWduZWQtYWRkb24tc2NvcGVzPWFwcCxzeXN0ZW0KKwlhY19hZGRfb3B0aW9ucyAtLWFs bG93LWFkZG9uLXNpZGVsb2FkCisKKwlhY19hZGRfb3B0aW9ucyAkKHZvcHRfZW5hYmxlIGRidXMp CisJYWNfYWRkX29wdGlvbnMgJCh2b3B0X2VuYWJsZSBkYnVzIG5lY2tvLXdpZmkpCisJYWNfYWRk X29wdGlvbnMgLS1kaXNhYmxlLWF1ZGlvLWJhY2tlbmRzCisJYWNfYWRkX29wdGlvbnMgJCh2b3B0 X2VuYWJsZSBhbHNhKQorCWFjX2FkZF9vcHRpb25zICQodm9wdF9lbmFibGUgamFjaykKKwlhY19h ZGRfb3B0aW9ucyAkKHZvcHRfZW5hYmxlIHB1bHNlYXVkaW8pCisJYWNfYWRkX29wdGlvbnMgJCh2 b3B0X2VuYWJsZSBzbmRpbykKKwlhY19hZGRfb3B0aW9ucyAtLWVuYWJsZS1kZWZhdWx0LXRvb2xr aXQ9JCh2b3B0X2lmIHdheWxhbmQgJ2NhaXJvLWd0azMtd2F5bGFuZCcgJ2NhaXJvLWd0azMnKQor CisJTU9aX0FQUF9SRU1PVElOR05BTUU9RmlyZWZveAorCSEKIAogCSMgd29yayBhcm91bmQgbGFy Z2UgZGVidWcgc3ltYm9scyBvbiAzMi1iaXQgaG9zdHMKIAlpZiBbICIkWEJQU19XT1JEU0laRSIg PSAiMzIiIF07IHRoZW4KIAkJZWNobyAiYWNfYWRkX29wdGlvbnMgLS1kaXNhYmxlLWRlYnVnLXN5 bWJvbHMiID4+Lm1vemNvbmZpZwogCQllY2hvICJhY19hZGRfb3B0aW9ucyAtLWRpc2FibGUtZGVi dWciID4+Lm1vemNvbmZpZwogCQlleHBvcnQgTERGTEFHUys9IiAtV2wsLS1uby1rZWVwLW1lbW9y eSIKLQkJIyBwYXRjaCB0aGUgcnVzdCBkZWJ1ZyBsZXZlbCwgdGhpcyBpcyBoYXJkY29kZWQKLQkJ dnNlZCAtaSAncy9kZWJ1Z19pbmZvID0gIjIiL2RlYnVnX2luZm8gPSAiMCIvJyBcCi0JCWJ1aWxk L21vei5jb25maWd1cmUvdG9vbGNoYWluLmNvbmZpZ3VyZQogCWZpCiAKLQljYXNlICIkWEJQU19U QVJHRVRfTUFDSElORSIgaW4KLQlhYXJjaDY0KnxpNjg2Knx4ODZfNjQqKQotCQllY2hvICJhY19h ZGRfb3B0aW9ucyAtLWVuYWJsZS1ydXN0LXNpbWQiID4+Lm1vemNvbmZpZyA7OwotCWVzYWMKLQot CWV4cG9ydCBMREZMQUdTKz0iIC1XbCwtcnBhdGg9L3Vzci9saWIvZmlyZWZveCIKLQogCWlmIFsg IiRTT1VSQ0VfREFURV9FUE9DSCIgXTsgdGhlbgogCQlleHBvcnQgTU9aX0JVSUxEX0RBVEU9JChk YXRlIC0tZGF0ZSAiQCRTT1VSQ0VfREFURV9FUE9DSCIgIislWSVtJWQlSCVNJVMiKQogCWZpCkBA IC0xNjUsMjYgKzIyOSwxNSBAQCBkb19idWlsZCgpIHsKIAlleHBvcnQgTU9aX01BS0VfRkxBR1M9 IiR7bWFrZWpvYnN9IgogCWV4cG9ydCBNT1pfTk9TUEFNPTEKIAlleHBvcnQgTU9aQlVJTERfU1RB VEVfUEFUSD0iJHt3cmtzcmN9L21vemJ1aWxkIgotCWV4cG9ydCBNQUNIX1VTRV9TWVNURU1fUFlU SE9OPTEKLQotCWV4cG9ydCBBUz0kQ0MKLQotCWNhdCA8PCEgPj4ubW96Y29uZmlnCi1hY19hZGRf b3B0aW9ucyAtLXdpdGgtbW96aWxsYS1hcGkta2V5ZmlsZT0iJHt3cmtzcmN9L21vemlsbGEtYXBp LWtleSIKLWFjX2FkZF9vcHRpb25zICQodm9wdF9lbmFibGUgYWxzYSkKLWFjX2FkZF9vcHRpb25z ICQodm9wdF9lbmFibGUgamFjaykKLWFjX2FkZF9vcHRpb25zICQodm9wdF9lbmFibGUgc25kaW8p Ci1hY19hZGRfb3B0aW9ucyAkKHZvcHRfZW5hYmxlIGRidXMpCi1hY19hZGRfb3B0aW9ucyAkKHZv cHRfZW5hYmxlIGRidXMgbmVja28td2lmaSkKLWFjX2FkZF9vcHRpb25zICQodm9wdF9lbmFibGUg cHVsc2VhdWRpbykKLWFjX2FkZF9vcHRpb25zIC0tZW5hYmxlLWRlZmF1bHQtdG9vbGtpdD0kKHZv cHRfaWYgd2F5bGFuZCAnY2Fpcm8tZ3RrMy13YXlsYW5kJyAnY2Fpcm8tZ3RrMycpCi0hCisJZXhw b3J0IE1BQ0hfQlVJTERfUFlUSE9OX05BVElWRV9QQUNLQUdFX1NPVVJDRT1zeXN0ZW0KIAogCXJt IC1mIG9sZC1jb25maWd1cmUKIAkuL21hY2ggYnVpbGQKIH0KKwogZG9faW5zdGFsbCgpIHsKLQll eHBvcnQgTUFDSF9VU0VfU1lTVEVNX1BZVEhPTj0xCisJZXhwb3J0IE1BQ0hfQlVJTERfUFlUSE9O X05BVElWRV9QQUNLQUdFX1NPVVJDRT1zeXN0ZW0KKwlleHBvcnQgTU9aQlVJTERfU1RBVEVfUEFU SD0iJHt3cmtzcmN9L21vemJ1aWxkIgogCURFU1RESVI9IiRERVNURElSIiAuL21hY2ggaW5zdGFs bAogCiAJdmluc3RhbGwgJHtGSUxFU0RJUn0vdmVuZG9yLmpzIDY0NCB1c3IvbGliL2ZpcmVmb3gv YnJvd3Nlci9kZWZhdWx0cy9wcmVmZXJlbmNlcwo= --===============9201496086556187022==--