From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out30-130.freemail.mail.aliyun.com (out30-130.freemail.mail.aliyun.com [115.124.30.130]) by sourceware.org (Postfix) with ESMTPS id E112A386F44C for ; Thu, 11 Jan 2024 12:36:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E112A386F44C Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linux.alibaba.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org E112A386F44C Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=115.124.30.130 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1704976625; cv=none; b=Nq3lImrVR3A2jbAhJqgQVUq5wFjawFlcsT177UkSnd7FnjxJ2HM/m7lnVYo0qWYGoB6jlmzTOdjxcFHeUK5NXvSufIwysD+hjBApXOHerSOQIHQ18SWoMF12z5Lluy/97sPNNpaW1+Dl4PLK5PfBoyzbEzOe0a+VLIQwvT3dT+c= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1704976625; c=relaxed/simple; bh=pR2wiyFlAtCNCvfOwCyjqFHV65KldzDJykLP3vsR9pE=; h=Date:From:To:Message-ID:Subject:MIME-Version; b=hvsd4wPRvYM+RPf5/wrIvhyVkPGTwfEtDD3wgYqTVK1ETrAu+BqXTQt+v03JtH0tVPDh2w2qk1ZiFdarXDaZ1VhKtPSEW+CZ/b6gP+vNGYmaYlJ3jRNppooMUEHqSw7NZ5z9W86rxTedltwxJ4fKS6IxAL8RODkR0qHHOmUUh8A= ARC-Authentication-Results: i=1; server2.sourceware.org X-Alimail-AntiSpam:AC=PASS;BC=-1|-1;BR=01201311R351e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018045176;MF=cooper.joshua@linux.alibaba.com;NM=1;PH=DW;RN=10;SR=0;TI=W4_0.2.3_v5ForWebDing_212064DE_1704976505435_o7001c63h; Received: from WS-web (cooper.joshua@linux.alibaba.com[W4_0.2.3_v5ForWebDing_212064DE_1704976505435_o7001c63h]) at Thu, 11 Jan 2024 20:36:52 +0800 Date: Thu, 11 Jan 2024 20:36:52 +0800 From: "joshua" To: "juzhe.zhong@rivai.ai" , "gcc-patches" Cc: "Jim Wilson" , "palmer" , "andrew" , "philipp.tomsich" , "jeffreyalaw" , "christoph.muellner" , "jinma" , "cooper.qu" Reply-To: "joshua" Message-ID: Subject: =?UTF-8?B?UmXvvJpSZe+8mltQQVRDSCB2NV0gUklTQy1WOiBBZGQgc3VwcG9ydCBmb3IgeHRoZWFkdmVj?= =?UTF-8?B?dG9yLXNwZWNpZmljIGludHJpbnNpY3Mu?= X-Mailer: [Alimail-Mailagent revision 79][W4_0.2.3][v5ForWebDing][Chrome] MIME-Version: 1.0 x-aliyun-im-through: {"mailThroughImNew":true} References: x-aliyun-mail-creator: W4_0.2.3_v5ForWebDing_SFRTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEyMC4wLjAuMCBTYWZhcmkvNTM3LjM2IEVkZy8xMjAuMC4wLjA=Ch In-Reply-To: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 X-Spam-Status: No, score=-18.3 required=5.0 tests=BAYES_00,BODY_8BITS,ENV_AND_HDR_SPF_MATCH,GIT_PATCH_0,KAM_ASCII_DIVIDERS,KAM_DMARC_STATUS,KAM_SHORT,RCVD_IN_DNSWL_NONE,SCC_5_SHORT_WORD_LINES,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY,USER_IN_DEF_SPF_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: UGVyaGFwcyBub3QuIEkgc3VnZ2VzdCB0aGF0IGlzIHRoZSBsaW1pdGF0aW9uIG9mIHJ2diAwLjcu MS4KSSB3aWxsIGNvbnN1bHQgbXkgY29sbGVhZ3VlcyB3aG8gYXJlIGZhbWlsaWFyIHdpdGggdXNp bmcgcnZ2IDAuNy4xIHRvbW9ycm93LgoKCgoKCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K5Y+R5Lu25Lq677yaanV6aGUu emhvbmdAcml2YWkuYWkgPGp1emhlLnpob25nQHJpdmFpLmFpPgrlj5HpgIHml7bpl7TvvJoyMDI0 5bm0MeaciDEx5pelKOaYn+acn+WbmykgMjA6MzMK5pS25Lu25Lq677yaImNvb3Blci5qb3NodWEi PGNvb3Blci5qb3NodWFAbGludXguYWxpYmFiYS5jb20+OyAiZ2NjLXBhdGNoZXMiPGdjYy1wYXRj aGVzQGdjYy5nbnUub3JnPgrmioTjgIDpgIHvvJpKaW0gV2lsc29uPGppbS53aWxzb24uZ2NjQGdt YWlsLmNvbT47IHBhbG1lcjxwYWxtZXJAZGFiYmVsdC5jb20+OyBhbmRyZXc8YW5kcmV3QHNpZml2 ZS5jb20+OyAicGhpbGlwcC50b21zaWNoIjxwaGlsaXBwLnRvbXNpY2hAdnJ1bGwuZXU+OyBqZWZm cmV5YWxhdzxqZWZmcmV5YWxhd0BnbWFpbC5jb20+OyAiY2hyaXN0b3BoLm11ZWxsbmVyIjxjaHJp c3RvcGgubXVlbGxuZXJAdnJ1bGwuZXU+OyBqaW5tYTxqaW5tYUBsaW51eC5hbGliYWJhLmNvbT47 ICJjb29wZXIucXUiPGNvb3Blci5xdUBsaW51eC5hbGliYWJhLmNvbT4K5Li744CA6aKY77yaUmU6 IFJl77yaW1BBVENIIHY1XSBSSVNDLVY6IEFkZCBzdXBwb3J0IGZvciB4dGhlYWR2ZWN0b3Itc3Bl Y2lmaWMgaW50cmluc2ljcy4KCgpEb2VzIHRoZWFkdmVjdG9yIGhhcyBleHRlbnNpb24gaW5zdHJ1 Y3Rpb25zID8KU2hvdyBtZSB0aGUgcGF0dGVybi4KCgpqdXpoZS56aG9uZ0ByaXZhaS5haQoKwqAK 5Y+R5Lu25Lq677yawqBqb3NodWEK5Y+R6YCB5pe26Ze077yawqAyMDI0LTAxLTExwqAyMDozMQrm lLbku7bkurrvvJrCoGp1emhlLnpob25nQHJpdmFpLmFpOyBnY2MtcGF0Y2hlcwrmioTpgIHvvJrC oEppbSBXaWxzb247IHBhbG1lcjsgYW5kcmV3OyBwaGlsaXBwLnRvbXNpY2g7IGplZmZyZXlhbGF3 OyBjaHJpc3RvcGgubXVlbGxuZXI7IGppbm1hOyBjb29wZXIucXUK5Li76aKY77yawqBSZe+8mlJl 77yaW1BBVENIIHY1XSBSSVNDLVY6IEFkZCBzdXBwb3J0IGZvciB4dGhlYWR2ZWN0b3Itc3BlY2lm aWMgaW50cmluc2ljcy4KClllcy4KwqAKwqAKKGluc24gMTQgMTMgMTUgMiAoc2V0IChyZWc6UUkg MTQ3KQrCoCDCoCDCoCDCoCAoY29uc3RfaW50IDEgWzB4MV0pKcKgIMKgeyptb3ZxaV9pbnRlcm5h bH0KwqAKIMKgIMKgIChuaWwpKQrCoArCoArCoArCoArCoArCoArCoArCoAotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K5Y+R 5Lu25Lq677yaanV6aGUuemhvbmdAcml2YWkuYWkgPGp1emhlLnpob25nQHJpdmFpLmFpPgrlj5Hp gIHml7bpl7TvvJoyMDI05bm0MeaciDEx5pelKOaYn+acn+WbmykgMjA6MjgK5pS25Lu25Lq677ya ImNvb3Blci5qb3NodWEiPGNvb3Blci5qb3NodWFAbGludXguYWxpYmFiYS5jb20+OyAiZ2NjLXBh dGNoZXMiPGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnPgrmioTjgIDpgIHvvJpKaW0gV2lsc29uPGpp bS53aWxzb24uZ2NjQGdtYWlsLmNvbT47IHBhbG1lcjxwYWxtZXJAZGFiYmVsdC5jb20+OyBhbmRy ZXc8YW5kcmV3QHNpZml2ZS5jb20+OyAicGhpbGlwcC50b21zaWNoIjxwaGlsaXBwLnRvbXNpY2hA dnJ1bGwuZXU+OyBqZWZmcmV5YWxhdzxqZWZmcmV5YWxhd0BnbWFpbC5jb20+OyAiY2hyaXN0b3Bo Lm11ZWxsbmVyIjxjaHJpc3RvcGgubXVlbGxuZXJAdnJ1bGwuZXU+OyBqaW5tYTxqaW5tYUBsaW51 eC5hbGliYWJhLmNvbT47ICJjb29wZXIucXUiPGNvb3Blci5xdUBsaW51eC5hbGliYWJhLmNvbT4K 5Li744CA6aKY77yaUmU6IFJl77yaW1BBVENIIHY1XSBSSVNDLVY6IEFkZCBzdXBwb3J0IGZvciB4 dGhlYWR2ZWN0b3Itc3BlY2lmaWMgaW50cmluc2ljcy4KwqAKwqAKKHZlY19kdXBsaWNhdGU6UlZW TTFRSSAocmVnOlFJIDE0NykpKSkKwqAKwqAKRmluZCB0aGUgUlRMIGRlZmluZSBwc2V1ZG8gMTQ3 IHRvIG1lLgrCoArCoApJIGd1ZXNzIGl0IGlzIDEuCmp1emhlLnpob25nQHJpdmFpLmFpCsKgCsKg CuWPkeS7tuS6uu+8msKgam9zaHVhCuWPkemAgeaXtumXtO+8msKgMjAyNC0wMS0xMcKgMjA6MTgK 5pS25Lu25Lq677yawqBqdXpoZS56aG9uZ0ByaXZhaS5haTsgZ2NjLXBhdGNoZXMK5oqE6YCB77ya wqBKaW0gV2lsc29uOyBwYWxtZXI7IGFuZHJldzsgcGhpbGlwcC50b21zaWNoOyBqZWZmcmV5YWxh dzsgY2hyaXN0b3BoLm11ZWxsbmVyOyBqaW5tYTsgY29vcGVyLnF1CuS4u+mimO+8msKgUmXvvJpS Ze+8mltQQVRDSCB2NV0gUklTQy1WOiBBZGQgc3VwcG9ydCBmb3IgeHRoZWFkdmVjdG9yLXNwZWNp ZmljIGludHJpbnNpY3MuCsKgCk5vLCB3ZSBoYXZlIGRlYnVnZ2VkIGFuZCB0aGUgY29kZSB3b24n dCBlbnRlciB0aGlzIGF1dG92ZWMgcGF0dGVybi4KVGhlIHJvb3QgY2F1c2UgaXMgQ1NFLCBpbiBh IHZlcnkgZWFybHkgcGFzcy4KwqAKV2hhdCBJIHNlbnQgdG8geW91IGp1c3Qgbm93IGlzIHRoZSBk dW1wIHJlc3VsdCB3aGljaCBzaG93cyB0aGUgZGlmZmVyZW5jZS4KwqAKwqAKwqAKwqAKwqAKwqAK wqAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCuWPkeS7tuS6uu+8mmp1emhlLnpob25nQHJpdmFpLmFpIDxqdXpoZS56aG9u Z0ByaXZhaS5haT4K5Y+R6YCB5pe26Ze077yaMjAyNOW5tDHmnIgxMeaXpSjmmJ/mnJ/lm5spIDIw OjEzCuaUtuS7tuS6uu+8miJjb29wZXIuam9zaHVhIjxjb29wZXIuam9zaHVhQGxpbnV4LmFsaWJh YmEuY29tPjsgImdjYy1wYXRjaGVzIjxnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZz4K5oqE44CA6YCB 77yaSmltIFdpbHNvbjxqaW0ud2lsc29uLmdjY0BnbWFpbC5jb20+OyBwYWxtZXI8cGFsbWVyQGRh YmJlbHQuY29tPjsgYW5kcmV3PGFuZHJld0BzaWZpdmUuY29tPjsgInBoaWxpcHAudG9tc2ljaCI8 cGhpbGlwcC50b21zaWNoQHZydWxsLmV1PjsgamVmZnJleWFsYXc8amVmZnJleWFsYXdAZ21haWwu Y29tPjsgImNocmlzdG9waC5tdWVsbG5lciI8Y2hyaXN0b3BoLm11ZWxsbmVyQHZydWxsLmV1Pjsg amlubWE8amlubWFAbGludXguYWxpYmFiYS5jb20+OyAiY29vcGVyLnF1Ijxjb29wZXIucXVAbGlu dXguYWxpYmFiYS5jb20+CuS4u+OAgOmimO+8mlJlOiBSZe+8mltQQVRDSCB2NV0gUklTQy1WOiBB ZGQgc3VwcG9ydCBmb3IgeHRoZWFkdmVjdG9yLXNwZWNpZmljIGludHJpbnNpY3MuCsKgCsKgCkkg Z3Vlc3MgaXQgaXMgYmVjYXVzZSBvZiBwYXR0ZXJucyBmcm9tIGF1dG92ZWN0b3JpemF0aW9uIHBh dHRlcm46CsKgCsKgCjs7IFVzZSBkZWZpbmVfaW5zbl9hbmRfc3BsaXQgdG8gZGVmaW5lIHZzZXh0 LnZmMi92emV4dC52ZjIgd2lsbCBoZWxwCjs7IHRvIGNvbWJpbmUgaW5zdHJ1Y3Rpb25zIGFzIGJl bG93Ogo7OyDCoCB2c2V4dC52ZjIgKyB2c2V4dC52ZjIgKyB2YWRkLnZ2ID09PiB2d2FkZC52dgoo ZGVmaW5lX2luc25fYW5kX3NwbGl0ICI8b3B0YWI+PHZfZG91YmxlX3RydW5jPjxtb2RlPjIiCsKg IFsoc2V0IChtYXRjaF9vcGVyYW5kOlZXRVhUSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPSZ2ciIp CsKgIMKgIChhbnlfZXh0ZW5kOlZXRVhUSQrCoCDCoCDCoChtYXRjaF9vcGVyYW5kOjxWX0RPVUJM RV9UUlVOQz4gMSAicmVnaXN0ZXJfb3BlcmFuZCIgInZyIikpKV0KwqAgIlRBUkdFVF9WRUNUT1Ig JiYgY2FuX2NyZWF0ZV9wc2V1ZG9fcCAoKSIKwqAgIiMiCsKgICImJiAxIgrCoCBbKGNvbnN0X2lu dCAwKV0KewrCoCBpbnNuX2NvZGUgaWNvZGUgPSBjb2RlX2Zvcl9wcmVkX3ZmMiAoPENPREU+LCA8 TU9ERT5tb2RlKTsKwqAgcmlzY3ZfdmVjdG9yOjplbWl0X3ZsbWF4X2luc24gKGljb2RlLCByaXNj dl92ZWN0b3I6OlVOQVJZX09QLCBvcGVyYW5kcyk7CsKgIERPTkU7Cn0KwqAgWyhzZXRfYXR0ciAi dHlwZSIgInZleHQiKQrCoCDCoChzZXRfYXR0ciAibW9kZSIgIjxNT0RFPiIpXSkKwqAKwqAKwqAK anV6aGUuemhvbmdAcml2YWkuYWkKwqAKwqAK5Y+R5Lu25Lq677yawqBqb3NodWEK5Y+R6YCB5pe2 6Ze077yawqAyMDI0LTAxLTExwqAyMDowNQrmlLbku7bkurrvvJrCoGp1emhlLnpob25nQHJpdmFp LmFpOyBnY2MtcGF0Y2hlcwrmioTpgIHvvJrCoEppbSBXaWxzb247IHBhbG1lcjsgYW5kcmV3OyBw aGlsaXBwLnRvbXNpY2g7IGplZmZyZXlhbGF3OyBjaHJpc3RvcGgubXVlbGxuZXI7IGppbm1hOyBj b29wZXIucXUK5Li76aKY77yawqBSZe+8mlJl77yaW1BBVENIIHY1XSBSSVNDLVY6IEFkZCBzdXBw b3J0IGZvciB4dGhlYWR2ZWN0b3Itc3BlY2lmaWMgaW50cmluc2ljcy4KwqAKd2l0aG91dCBDU0U6 CihpbnNuIDE2IDE1IDE3IDIgKHNldCAocmVnL3Y6UlZWTTJISSAxMzcgWyBvdXRwdXRfdmFyXzAg XSkKwqDCoMKgwqDCoMKgwqAgKGlmX3RoZW5fZWxzZTpSVlZNMkhJICh1bnNwZWM6UlZWTUY4Qkkg WwrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoY29uc3RfdmVjdG9yOlJW Vk1GOEJJIHJlcGVhdCBbCsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAoY29uc3RfaW50IDEgWzB4MV0pCsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXSkKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgKHJlZzpESSAxNDYpCsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIChjb25zdF9pbnQgMiBbMHgyXSkgcmVwZWF0ZWQgeDIKwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKGNvbnN0X2ludCAwIFswXSkKwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKHJlZzpTSSA2NiB2bCkKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgKHJlZzpTSSA2NyB2dHlwZSkKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIF0gVU5TUEVDX1ZQUkVESUNBVEUpCsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKG11bHQ6 UlZWTTJISSAoc2lnbl9leHRlbmQ6UlZWTTJISSAocmVnL3Y6UlZWTTFRSSAxMzYgWyBvcDEgXSkp CsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoc2lnbl9leHRlbmQ6UlZWTTJISSAodmVj X2R1cGxpY2F0ZTpSVlZNMVFJIChyZWc6UUkgMTQ3KSkpKQrCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICh1bnNwZWM6UlZWTTJISSBbCsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IChyZWc6U0kgMCB6ZXJvKQrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXSBVTlNQRUNf VlVOREVGKSkpwqDCoMKgwqDCoMKgwqDCoCB7cHJlZF9kdWFsX3dpZGVuX211bHNydnZtMmhpX3Nj YWxhcn0KwqAKd2l0aCBDU0U6CihpbnNuIDE2IDE1IDE3IDIgKHNldCAocmVnL3Y6UlZWTTJISSAx MzcgWyBvdXRwdXRfdmFyXzAgXSkKwqDCoMKgwqDCoMKgwqAgKGlmX3RoZW5fZWxzZTpSVlZNMkhJ ICh1bnNwZWM6UlZWTUY4QkkgWwrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAoY29uc3RfdmVjdG9yOlJWVk1GOEJJIHJlcGVhdCBbCsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoY29uc3RfaW50IDEgWzB4MV0pCsKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXSkKwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHJlZzpESSAxNDYpCsKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIChjb25zdF9pbnQgMiBbMHgyXSkgcmVwZWF0ZWQgeDIKwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGNvbnN0X2ludCAwIFswXSkKwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHJlZzpTSSA2NiB2bCkKwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHJlZzpTSSA2NyB2dHlwZSkKwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF0gVU5TUEVDX1ZQUkVESUNBVEUpCsKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgKHNpZ25fZXh0ZW5kOlJWVk0ySEkgKHJlZy92OlJWVk0xUUkgMTM2IFsgb3Ax IF0pKQrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICh1bnNwZWM6UlZWTTJISSBbCsKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChyZWc6U0kgMCB6ZXJvKQrCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgXSBVTlNQRUNfVlVOREVGKSkpwqDCoMKgwqDCoMKgwqDCoCB7cHJl ZF9leHRlbmRydnZtMmhpX3ZmMn0KwqAKwqAKwqAKwqAKwqAKwqAKLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCuWPkeS7tuS6 uu+8mmp1emhlLnpob25nQHJpdmFpLmFpIDxqdXpoZS56aG9uZ0ByaXZhaS5haT4K5Y+R6YCB5pe2 6Ze077yaMjAyNOW5tDHmnIgxMeaXpSjmmJ/mnJ/lm5spIDE3OjMyCuaUtuS7tuS6uu+8miJjb29w ZXIuam9zaHVhIjxjb29wZXIuam9zaHVhQGxpbnV4LmFsaWJhYmEuY29tPjsgImdjYy1wYXRjaGVz IjxnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZz4K5oqE44CA6YCB77yaSmltIFdpbHNvbjxqaW0ud2ls c29uLmdjY0BnbWFpbC5jb20+OyBwYWxtZXI8cGFsbWVyQGRhYmJlbHQuY29tPjsgYW5kcmV3PGFu ZHJld0BzaWZpdmUuY29tPjsgInBoaWxpcHAudG9tc2ljaCI8cGhpbGlwcC50b21zaWNoQHZydWxs LmV1PjsgamVmZnJleWFsYXc8amVmZnJleWFsYXdAZ21haWwuY29tPjsgImNocmlzdG9waC5tdWVs bG5lciI8Y2hyaXN0b3BoLm11ZWxsbmVyQHZydWxsLmV1PjsgamlubWE8amlubWFAbGludXguYWxp YmFiYS5jb20+OyAiY29vcGVyLnF1Ijxjb29wZXIucXVAbGludXguYWxpYmFiYS5jb20+CuS4u+OA gOmimO+8mlJlOiBSZe+8mltQQVRDSCB2NV0gUklTQy1WOiBBZGQgc3VwcG9ydCBmb3IgeHRoZWFk dmVjdG9yLXNwZWNpZmljIGludHJpbnNpY3MuCsKgCsKgCk9rLiDCoExldCdzIGhvbGQgb27CoCJS SVNDLVY6IEhhbmRsZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIFhUaGVhZHZlY3RvciBhbmTCoFZlY3Rv ciIgcGF0Y2gKdW50aWwgeW91IGNhbiByZXByb2R1Y2UgdGhlIGlzc3VlIGZvciBtZS4KwqAKwqAK anV6aGUuemhvbmdAcml2YWkuYWkKwqAKwqAK5Y+R5Lu25Lq677yawqBqb3NodWEK5Y+R6YCB5pe2 6Ze077yawqAyMDI0LTAxLTExwqAxNzoyOQrmlLbku7bkurrvvJrCoGp1emhlLnpob25nQHJpdmFp LmFpOyBnY2MtcGF0Y2hlcwrmioTpgIHvvJrCoEppbSBXaWxzb247IHBhbG1lcjsgYW5kcmV3OyBw aGlsaXBwLnRvbXNpY2g7IGplZmZyZXlhbGF3OyBjaHJpc3RvcGgubXVlbGxuZXI7IGppbm1hOyBj b29wZXIucXUK5Li76aKY77yawqBSZe+8mlJl77yaW1BBVENIIHY1XSBSSVNDLVY6IEFkZCBzdXBw b3J0IGZvciB4dGhlYWR2ZWN0b3Itc3BlY2lmaWMgaW50cmluc2ljcy4KwqAKVGhlIHNleHQvemV4 dCBpc3N1ZSBpcyBub3QgcmVsYXRlZCB0byB4dGhlYWR2ZWN0b3Itc3BlY2lhbCBwYXR0ZXJucy4K SSBhZGRlZCAhVEFSR0VUX1hUSEVBRFZFQ1RPUiB0byBzZXh0L3pleHQgcGF0dGVybnMgaW4KIlJJ U0MtVjogSGFuZGxlIGRpZmZlcmVuY2VzIGJldHdlZW4gWFRoZWFkdmVjdG9yIGFuZMKgVmVjdG9y IgpUaGF0IGlzIGNhdXNlZCBieSB0aGUgdndtdWwgcGF0dGVybiwgYnV0IEkgY2Fubm90IHJlcHJv ZHVjZSBpdCByaWdodCBub3cuCsKgCsKgCsKgCsKgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQrlj5Hku7bkurrvvJpqdXpo ZS56aG9uZ0ByaXZhaS5haSA8anV6aGUuemhvbmdAcml2YWkuYWk+CuWPkemAgeaXtumXtO+8mjIw MjTlubQx5pyIMTHml6Uo5pif5pyf5ZubKSAxNzoyNArmlLbku7bkurrvvJoiY29vcGVyLmpvc2h1 YSI8Y29vcGVyLmpvc2h1YUBsaW51eC5hbGliYWJhLmNvbT47ICJnY2MtcGF0Y2hlcyI8Z2NjLXBh dGNoZXNAZ2NjLmdudS5vcmc+CuaKhOOAgOmAge+8mkppbSBXaWxzb248amltLndpbHNvbi5nY2NA Z21haWwuY29tPjsgcGFsbWVyPHBhbG1lckBkYWJiZWx0LmNvbT47IGFuZHJldzxhbmRyZXdAc2lm aXZlLmNvbT47ICJwaGlsaXBwLnRvbXNpY2giPHBoaWxpcHAudG9tc2ljaEB2cnVsbC5ldT47IGpl ZmZyZXlhbGF3PGplZmZyZXlhbGF3QGdtYWlsLmNvbT47ICJjaHJpc3RvcGgubXVlbGxuZXIiPGNo cmlzdG9waC5tdWVsbG5lckB2cnVsbC5ldT47IGppbm1hPGppbm1hQGxpbnV4LmFsaWJhYmEuY29t PjsgImNvb3Blci5xdSI8Y29vcGVyLnF1QGxpbnV4LmFsaWJhYmEuY29tPgrkuLvjgIDpopjvvJpS ZTogUmXvvJpbUEFUQ0ggdjVdIFJJU0MtVjogQWRkIHN1cHBvcnQgZm9yIHh0aGVhZHZlY3Rvci1z cGVjaWZpYyBpbnRyaW5zaWNzLgrCoArCoApJIGRvbid0IHNlZSBhbnkgcGF0dGVybnMgYXJlIHBv c3NpYmxlIENTRSBpbnRvIHNleHQvemV4dCBwYXR0ZXJuczoKwqAKwqAKKyhkZWZpbmVfZXhwYW5k ICJAcHJlZF9tb3Zfd2lkdGg8dmxtZW1fb3BfYXR0cj48bW9kZT4iCivCoCBbKHNldCAobWF0Y2hf b3BlcmFuZDpWX1ZMUyAwICJub25pbW1lZGlhdGVfb3BlcmFuZCIpCivCoMKgwqAgKGlmX3RoZW5f ZWxzZTpWX1ZMUworwqDCoMKgwqDCoCAodW5zcGVjOjxWTT4KKwlbKG1hdGNoX29wZXJhbmQ6PFZN PiAxICJ2ZWN0b3JfbWFza19vcGVyYW5kIikKKwkobWF0Y2hfb3BlcmFuZCA0ICJ2ZWN0b3JfbGVu Z3RoX29wZXJhbmQiKQorCShtYXRjaF9vcGVyYW5kIDUgImNvbnN0X2ludF9vcGVyYW5kIikKKwko bWF0Y2hfb3BlcmFuZCA2ICJjb25zdF9pbnRfb3BlcmFuZCIpCisJKG1hdGNoX29wZXJhbmQgNyAi Y29uc3RfaW50X29wZXJhbmQiKQorCShyZWc6U0kgVkxfUkVHTlVNKQorCShyZWc6U0kgVlRZUEVf UkVHTlVNKV0gVU5TUEVDX1RIX1ZMTUVNX09QKQorwqDCoMKgwqDCoCAobWF0Y2hfb3BlcmFuZDpW X1ZMUyAzICJ2ZWN0b3JfbW92ZV9vcGVyYW5kIikKK8KgwqDCoMKgwqAgKG1hdGNoX29wZXJhbmQ6 Vl9WTFMgMiAidmVjdG9yX21lcmdlX29wZXJhbmQiKSkpXQorwqAgIlRBUkdFVF9YVEhFQURWRUNU T1IiCivCoCB7fSkKKworKGRlZmluZV9pbnNuX2FuZF9zcGxpdCAiKnByZWRfbW92X3dpZHRoPHZs bWVtX29wX2F0dHI+PG1vZGU+IgorwqAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Vl9WTFMgMCAibm9u aW1tZWRpYXRlX29wZXJhbmQiCcKgwqDCoCAiPXZyLMKgwqDCoCB2cizCoMKgwqAgdmQswqDCoMKg wqAgbSzCoMKgwqAgdnIswqDCoMKgIHZyIikKK8KgwqDCoCAoaWZfdGhlbl9lbHNlOlZfVkxTCivC oMKgwqDCoMKgICh1bnNwZWM6PFZNPgorCVsobWF0Y2hfb3BlcmFuZDo8Vk0+IDEgInZlY3Rvcl9t YXNrX29wZXJhbmQiCcKgwqAgInZtV2MxLMKgwqAgV2MxLMKgwqDCoCB2bSwgdm1XYzEswqDCoCBX YzEswqDCoCBXYzEiKQorCShtYXRjaF9vcGVyYW5kIDQgInZlY3Rvcl9sZW5ndGhfb3BlcmFuZCIJ wqDCoMKgwqDCoCAiwqDCoCBySyzCoMKgwqAgcksswqDCoMKgIHJLLMKgwqDCoCBySyzCoMKgwqAg cksswqDCoMKgIHJLIikKKwkobWF0Y2hfb3BlcmFuZCA1ICJjb25zdF9pbnRfb3BlcmFuZCIJwqAg IsKgwqDCoCBpLMKgwqDCoMKgIGkswqDCoMKgwqAgaSzCoMKgwqDCoCBpLMKgwqDCoMKgIGkswqDC oMKgwqAgaSIpCisJKG1hdGNoX29wZXJhbmQgNiAiY29uc3RfaW50X29wZXJhbmQiCcKgICLCoMKg wqAgaSzCoMKgwqDCoCBpLMKgwqDCoMKgIGkswqDCoMKgwqAgaSzCoMKgwqDCoCBpLMKgwqDCoMKg IGkiKQorCShtYXRjaF9vcGVyYW5kIDcgImNvbnN0X2ludF9vcGVyYW5kIgnCoCAiwqDCoMKgIGks wqDCoMKgwqAgaSzCoMKgwqDCoCBpLMKgwqDCoMKgIGkswqDCoMKgwqAgaSzCoMKgwqDCoCBpIikK KwkocmVnOlNJIFZMX1JFR05VTSkKKwkocmVnOlNJIFZUWVBFX1JFR05VTSldIFVOU1BFQ19USF9W TE1FTV9PUCkKK8KgwqDCoMKgwqAgKG1hdGNoX29wZXJhbmQ6Vl9WTFMgMyAicmVnX29yX21lbV9v cGVyYW5kIgnCoMKgwqDCoMKgICLCoMKgwqAgbSzCoMKgwqDCoCBtLMKgwqDCoMKgIG0swqDCoMKg IHZyLMKgwqDCoCB2cizCoMKgwqAgdnIiKQorwqDCoMKgwqDCoCAobWF0Y2hfb3BlcmFuZDpWX1ZM UyAyICJ2ZWN0b3JfbWVyZ2Vfb3BlcmFuZCIJwqDCoMKgICLCoMKgwqAgMCzCoMKgwqAgdnUswqDC oMKgIHZ1LMKgwqDCoCB2dSzCoMKgwqAgdnUswqDCoMKgwqAgMCIpKSldCivCoCAiKFRBUkdFVF9Y VEhFQURWRUNUT1IKK8KgwqDCoCAmJiAocmVnaXN0ZXJfb3BlcmFuZCAob3BlcmFuZHNbMF0sIDxN T0RFPm1vZGUpCisJfHwgcmVnaXN0ZXJfb3BlcmFuZCAob3BlcmFuZHNbM10sIDxNT0RFPm1vZGUp KSkiCivCoCAiQAorwqDCoCB2bDx2bG1lbV9vcF9hdHRyPi52XHQlMCwlMyVwMQorwqDCoCB2bDx2 bG1lbV9vcF9hdHRyPi52XHQlMCwlMworwqDCoCB2bDx2bG1lbV9vcF9hdHRyPi52XHQlMCwlMywl MS50CivCoMKgIHZzPHZsbWVtX29wX2F0dHI+LnZcdCUzLCUwJXAxCivCoMKgIHZtdi52LnZcdCUw LCUzCivCoMKgIHZtdi52LnZcdCUwLCUzIgorwqAgIiYmIHJlZ2lzdGVyX29wZXJhbmQgKG9wZXJh bmRzWzBdLCA8TU9ERT5tb2RlKQorwqDCoCAmJiByZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5kc1sz XSwgPE1PREU+bW9kZSkKK8KgwqAgJiYgc2F0aXNmaWVzX2NvbnN0cmFpbnRfdnUgKG9wZXJhbmRz WzJdKQorwqDCoCAmJiBJTlRWQUwgKG9wZXJhbmRzWzddKSA9PSByaXNjdl92ZWN0b3I6OlZMTUFY IgorwqAgWyhzZXQgKG1hdGNoX2R1cCAwKSAobWF0Y2hfZHVwIDMpKV0KK8KgICIiCivCoCBbKHNl dF9hdHRyICJ0eXBlIiAidmxkZSx2bGRlLHZsZGUsdnN0ZSx2aW1vdix2aW1vdiIpCivCoMKgIChz ZXRfYXR0ciAibW9kZSIgIjxNT0RFPiIpXSkKKworKGRlZmluZV9pbnNuICJAcHJlZF9zdG9yZV93 aWR0aDx2bG1lbV9vcF9hdHRyPjxtb2RlPiIKK8KgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZJIDAg Im1lbW9yeV9vcGVyYW5kIgkiK20iKQorCShpZl90aGVuX2Vsc2U6VkkKKwnCoCAodW5zcGVjOjxW TT4KKwnCoMKgwqAgWyhtYXRjaF9vcGVyYW5kOjxWTT4gMSAidmVjdG9yX21hc2tfb3BlcmFuZCIg InZtV2MxIikKKwnCoMKgwqDCoCAobWF0Y2hfb3BlcmFuZCAzICJ2ZWN0b3JfbGVuZ3RoX29wZXJh bmQiwqDCoMKgICLCoMKgIHJLIikKKwnCoMKgwqDCoCAobWF0Y2hfb3BlcmFuZCA0ICJjb25zdF9p bnRfb3BlcmFuZCIJIsKgwqDCoCBpIikKKwnCoMKgwqDCoCAocmVnOlNJIFZMX1JFR05VTSkKKwnC oMKgwqDCoCAocmVnOlNJIFZUWVBFX1JFR05VTSldIFVOU1BFQ19USF9WU01FTV9PUCkKKwnCoCAo bWF0Y2hfb3BlcmFuZDpWSSAyICJyZWdpc3Rlcl9vcGVyYW5kIgkiwqDCoMKgIHZyIikKKwnCoCAo bWF0Y2hfZHVwIDApKSldCivCoCAiVEFSR0VUX1hUSEVBRFZFQ1RPUiIKK8KgICJ2czx2bG1lbV9v cF9hdHRyPi52XHQlMiwlMCVwMSIKK8KgIFsoc2V0X2F0dHIgInR5cGUiICJ2c3RlIikKK8KgwqAg KHNldF9hdHRyICJtb2RlIiAiPE1PREU+IikKK8KgwqAgKHNldCAoYXR0ciAiYXZsX3R5cGVfaWR4 IikgKGNvbnN0X2ludCA0KSkKK8KgwqAgKHNldF9hdHRyICJ2bF9vcF9pZHgiICIzIildKQorCiso ZGVmaW5lX2luc24gIkBwcmVkX3N0cmlkZWRfbG9hZF93aWR0aDx2bG1lbV9vcF9hdHRyPjxtb2Rl PiIKK8KgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZJIDAgInJlZ2lzdGVyX29wZXJhbmQiCcKgwqDC oMKgwqAgIj12cizCoMKgwqAgdnIswqDCoMKgIHZkIikKKwkoaWZfdGhlbl9lbHNlOlZJCisJwqAg KHVuc3BlYzo8Vk0+CisJwqDCoMKgIFsobWF0Y2hfb3BlcmFuZDo8Vk0+IDEgInZlY3Rvcl9tYXNr X29wZXJhbmQiICJ2bVdjMSzCoMKgIFdjMSzCoMKgwqAgdm0iKQorCcKgwqDCoMKgIChtYXRjaF9v cGVyYW5kIDUgInZlY3Rvcl9sZW5ndGhfb3BlcmFuZCLCoMKgwqAgIsKgwqAgcksswqDCoMKgIHJL LMKgwqDCoCBySyIpCisJwqDCoMKgwqAgKG1hdGNoX29wZXJhbmQgNiAiY29uc3RfaW50X29wZXJh bmQiCSLCoMKgwqAgaSzCoMKgwqDCoCBpLMKgwqDCoMKgIGkiKQorCcKgwqDCoMKgIChtYXRjaF9v cGVyYW5kIDcgImNvbnN0X2ludF9vcGVyYW5kIgkiwqDCoMKgIGkswqDCoMKgwqAgaSzCoMKgwqDC oCBpIikKKwnCoMKgwqDCoCAobWF0Y2hfb3BlcmFuZCA4ICJjb25zdF9pbnRfb3BlcmFuZCIJIsKg wqDCoCBpLMKgwqDCoMKgIGkswqDCoMKgwqAgaSIpCisJwqDCoMKgwqAgKHJlZzpTSSBWTF9SRUdO VU0pCisJwqDCoMKgwqAgKHJlZzpTSSBWVFlQRV9SRUdOVU0pXSBVTlNQRUNfVEhfVkxTTUVNX09Q KQorCcKgICh1bnNwZWM6VkkKKwnCoMKgwqAgWyhtYXRjaF9vcGVyYW5kOlZJIDMgIm1lbW9yeV9v cGVyYW5kIgkiwqDCoMKgIG0swqDCoMKgwqAgbSzCoMKgwqDCoCBtIikKKwnCoMKgwqDCoCAobWF0 Y2hfb3BlcmFuZCA0ICJwbW9kZV9yZWdfb3JfMF9vcGVyYW5kIsKgwqAgIsKgwqAgckoswqDCoMKg IHJKLMKgwqDCoCBySiIpXSBVTlNQRUNfVEhfVkxTTUVNX09QKQorCcKgIChtYXRjaF9vcGVyYW5k OlZJIDIgInZlY3Rvcl9tZXJnZV9vcGVyYW5kIsKgwqDCoMKgwqAgIsKgwqDCoCAwLMKgwqDCoCB2 dSzCoMKgwqAgdnUiKSkpXQorwqAgIlRBUkdFVF9YVEhFQURWRUNUT1IiCivCoCAidmxzPHZsbWVt X29wX2F0dHI+LnZcdCUwLCUzLCV6NCVwMSIKK8KgIFsoc2V0X2F0dHIgInR5cGUiICJ2bGRzIikK K8KgwqAgKHNldF9hdHRyICJtb2RlIiAiPE1PREU+IildKQorCisoZGVmaW5lX2luc24gIkBwcmVk X3N0cmlkZWRfc3RvcmVfd2lkdGg8dmxtZW1fb3BfYXR0cj48bW9kZT4iCivCoCBbKHNldCAobWF0 Y2hfb3BlcmFuZDpWSSAwICJtZW1vcnlfb3BlcmFuZCIJIittIikKKwkoaWZfdGhlbl9lbHNlOlZJ CisJwqAgKHVuc3BlYzo8Vk0+CisJwqDCoMKgIFsobWF0Y2hfb3BlcmFuZDo8Vk0+IDEgInZlY3Rv cl9tYXNrX29wZXJhbmQiICJ2bVdjMSIpCisJwqDCoMKgwqAgKG1hdGNoX29wZXJhbmQgNCAidmVj dG9yX2xlbmd0aF9vcGVyYW5kIsKgwqDCoCAiwqDCoCBySyIpCisJwqDCoMKgwqAgKG1hdGNoX29w ZXJhbmQgNSAiY29uc3RfaW50X29wZXJhbmQiCSLCoMKgwqAgaSIpCisJwqDCoMKgwqAgKHJlZzpT SSBWTF9SRUdOVU0pCisJwqDCoMKgwqAgKHJlZzpTSSBWVFlQRV9SRUdOVU0pXSBVTlNQRUNfVEhf VlNTTUVNX09QKQorCcKgICh1bnNwZWM6VkkKKwnCoMKgwqAgWyhtYXRjaF9vcGVyYW5kIDIgInBt b2RlX3JlZ19vcl8wX29wZXJhbmQiwqDCoCAiwqDCoCBySiIpCisJwqDCoMKgwqAgKG1hdGNoX29w ZXJhbmQ6VkkgMyAicmVnaXN0ZXJfb3BlcmFuZCLCoMKgwqDCoMKgwqAgIsKgwqAgdnIiKV0gVU5T UEVDX1RIX1ZTU01FTV9PUCkKKwnCoCAobWF0Y2hfZHVwIDApKSldCivCoCAiVEFSR0VUX1hUSEVB RFZFQ1RPUiIKK8KgICJ2c3M8dmxtZW1fb3BfYXR0cj4udlx0JTMsJTAsJXoyJXAxIgorwqAgWyhz ZXRfYXR0ciAidHlwZSIgInZzdHMiKQorwqDCoCAoc2V0X2F0dHIgIm1vZGUiICI8TU9ERT4iKQor wqDCoCAoc2V0IChhdHRyICJhdmxfdHlwZV9pZHgiKSAoY29uc3RfaW50IDUpKV0pCisKKyhkZWZp bmVfaW5zbiAiQHByZWRfaW5kZXhlZF9sb2FkX3dpZHRoPHZsbWVtX29wX2F0dHI+PG1vZGU+Igor wqAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkkgMCAicmVnaXN0ZXJfb3BlcmFuZCIJwqDCoMKgwqAg Ij12ZCwgdnIsdmQsIHZyIikKKwkoaWZfdGhlbl9lbHNlOlZJCisJwqAgKHVuc3BlYzo8Vk0+CisJ wqDCoMKgIFsobWF0Y2hfb3BlcmFuZDo8Vk0+IDEgInZlY3Rvcl9tYXNrX29wZXJhbmQiwqAgIiB2 bSxXYzEsdm0sV2MxIikKKwnCoMKgwqDCoCAobWF0Y2hfb3BlcmFuZCA1ICJ2ZWN0b3JfbGVuZ3Ro X29wZXJhbmQiwqDCoMKgwqAgIiBySywgckssckssIHJLIikKKwnCoMKgwqDCoCAobWF0Y2hfb3Bl cmFuZCA2ICJjb25zdF9pbnRfb3BlcmFuZCIJIsKgIGkswqAgaSwgaSzCoCBpIikKKwnCoMKgwqDC oCAobWF0Y2hfb3BlcmFuZCA3ICJjb25zdF9pbnRfb3BlcmFuZCIJIsKgIGkswqAgaSwgaSzCoCBp IikKKwnCoMKgwqDCoCAobWF0Y2hfb3BlcmFuZCA4ICJjb25zdF9pbnRfb3BlcmFuZCIJIsKgIGks wqAgaSwgaSzCoCBpIikKKwnCoMKgwqDCoCAocmVnOlNJIFZMX1JFR05VTSkKKwnCoMKgwqDCoCAo cmVnOlNJIFZUWVBFX1JFR05VTSldIFVOU1BFQ19USF9WTFhNRU1fT1ApCisJwqAgKHVuc3BlYzpW SQorCcKgwqDCoCBbKG1hdGNoX29wZXJhbmQgMyAicG1vZGVfcmVnX29yXzBfb3BlcmFuZCLCoMKg wqAgIiBySiwgckosckosIHJKIikKKwnCoMKgwqDCoCAobWVtOkJMSyAoc2NyYXRjaCkpCisJwqDC oMKgwqAgKG1hdGNoX29wZXJhbmQ6VkkgNCAicmVnaXN0ZXJfb3BlcmFuZCIgIiB2ciwgdnIsdnIs IHZyIildIFVOU1BFQ19USF9WTFhNRU1fT1ApCisJwqAgKG1hdGNoX29wZXJhbmQ6VkkgMiAidmVj dG9yX21lcmdlX29wZXJhbmQiwqDCoMKgwqDCoMKgICIgdnUsIHZ1LCAwLMKgIDAiKSkpXQorwqAg IlRBUkdFVF9YVEhFQURWRUNUT1IiCivCoCAidmx4PHZsbWVtX29wX2F0dHI+LnZcdCUwLCglejMp LCU0JXAxIgorwqAgWyhzZXRfYXR0ciAidHlwZSIgInZsZHV4IikKK8KgwqAgKHNldF9hdHRyICJt b2RlIiAiPE1PREU+IildKQorCisoZGVmaW5lX2luc24gIkBwcmVkX2luZGV4ZWRfPHZsbWVtX29y ZGVyX2F0dHI+c3RvcmVfd2lkdGg8dmxtZW1fb3BfYXR0cj48bW9kZT4iCivCoCBbKHNldCAobWVt OkJMSyAoc2NyYXRjaCkpCisJKHVuc3BlYzpCTEsKKwnCoCBbKHVuc3BlYzo8Vk0+CisJwqDCoMKg IFsobWF0Y2hfb3BlcmFuZDo8Vk0+IDAgInZlY3Rvcl9tYXNrX29wZXJhbmQiICJ2bVdjMSIpCisJ wqDCoMKgwqAgKG1hdGNoX29wZXJhbmQgNCAidmVjdG9yX2xlbmd0aF9vcGVyYW5kIsKgwqDCoCAi wqDCoCBySyIpCisJwqDCoMKgwqAgKG1hdGNoX29wZXJhbmQgNSAiY29uc3RfaW50X29wZXJhbmQi CSLCoMKgwqAgaSIpCisJwqDCoMKgwqAgKHJlZzpTSSBWTF9SRUdOVU0pCisJwqDCoMKgwqAgKHJl ZzpTSSBWVFlQRV9SRUdOVU0pXSBVTlNQRUNfVEhfVlNYTUVNX09QKQorCcKgwqAgKG1hdGNoX29w ZXJhbmQgMSAicG1vZGVfcmVnX29yXzBfb3BlcmFuZCLCoMKgwqDCoMKgICLCoCBySiIpCisJwqDC oCAobWF0Y2hfb3BlcmFuZDpWSSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAiwqAgdnIiKQorCcKgwqAg KG1hdGNoX29wZXJhbmQ6VkkgMyAicmVnaXN0ZXJfb3BlcmFuZCLCoCAiwqAgdnIiKV0gVU5TUEVD X1RIX1ZTWE1FTV9PUCkpXQorwqAgIlRBUkdFVF9YVEhFQURWRUNUT1IiCivCoCAidnM8dmxtZW1f b3JkZXJfYXR0cj54PHZsbWVtX29wX2F0dHI+LnZcdCUzLCglejEpLCUyJXAwIgorwqAgWyhzZXRf YXR0ciAidHlwZSIgInZzdHV4IikKK8KgwqAgKHNldF9hdHRyICJtb2RlIiAiPE1PREU+IildKQor CisoZGVmaW5lX2V4cGFuZCAiQHByZWRfdGhfZXh0cmFjdDxtb2RlPiIKK8KgIFsoc2V0IChtYXRj aF9vcGVyYW5kOjxWRUw+IDAgInJlZ2lzdGVyX29wZXJhbmQiKQorCSh1bnNwZWM6PFZFTD4KKwnC oCBbKHZlY19zZWxlY3Q6PFZFTD4KKwnCoMKgwqDCoCAobWF0Y2hfb3BlcmFuZDpWX1ZMU0kgMSAi cmVnaXN0ZXJfb3BlcmFuZCIpCisJwqDCoMKgwqAgKHBhcmFsbGVsIFsobWF0Y2hfb3BlcmFuZDpE SSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAiciIpXSkpCisJwqDCoCAocmVnOlNJIFZUWVBFX1JFR05V TSldIFVOU1BFQ19WUFJFRElDQVRFKSldCivCoCAiVEFSR0VUX1hUSEVBRFZFQ1RPUiIKK3t9KQor CisoZGVmaW5lX2luc24gIipwcmVkX3RoX2V4dHJhY3Q8bW9kZT4iCivCoCBbKHNldCAobWF0Y2hf b3BlcmFuZDo8VkVMPiAwICJyZWdpc3Rlcl9vcGVyYW5kIsKgwqAgIj1yIikKK8KgICh1bnNwZWM6 PFZFTD4KK8KgwqDCoCBbKHZlY19zZWxlY3Q6PFZFTD4KK8KgwqDCoMKgwqDCoCAobWF0Y2hfb3Bl cmFuZDpWX1ZMU0kgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInZyIikKK8KgwqDCoMKgwqDCoCAocGFy YWxsZWwgWyhtYXRjaF9vcGVyYW5kOkRJIDIgInJlZ2lzdGVyX29wZXJhbmQiICJyIildKSkKK8Kg wqDCoMKgIChyZWc6U0kgVlRZUEVfUkVHTlVNKV0gVU5TUEVDX1ZQUkVESUNBVEUpKV0KK8KgICJU QVJHRVRfWFRIRUFEVkVDVE9SIgorwqAgInZleHQueC52XHQlMCwlMSwlMiIKK8KgIFsoc2V0X2F0 dHIgInR5cGUiICJ2aW1vdnZ4IikKK8KgwqAgKHNldF9hdHRyICJtb2RlIiAiPE1PREU+IildKQrC oArCoArCoApqdXpoZS56aG9uZ0ByaXZhaS5haQrCoArCoArlj5Hku7bkurrvvJrCoGpvc2h1YQrl j5HpgIHml7bpl7TvvJrCoDIwMjQtMDEtMTHCoDE3OjIxCuaUtuS7tuS6uu+8msKganV6aGUuemhv bmdAcml2YWkuYWk7IGdjYy1wYXRjaGVzCuaKhOmAge+8msKgSmltIFdpbHNvbjsgcGFsbWVyOyBh bmRyZXc7IHBoaWxpcHAudG9tc2ljaDsgamVmZnJleWFsYXc7IGNocmlzdG9waC5tdWVsbG5lcjsg amlubWE7IGNvb3Blci5xdQrkuLvpopjvvJrCoFJl77yaUmXvvJpbUEFUQ0ggdjVdIFJJU0MtVjog QWRkIHN1cHBvcnQgZm9yIHh0aGVhZHZlY3Rvci1zcGVjaWZpYyBpbnRyaW5zaWNzLgrCoAoiSSBk aWRuJ3Qgc2VlIHRoZWFkdmVjdG9yLXNwZWNpZmljIGV4dGVuc2lvbiBwYXR0ZXJucy4gQ291bGQg eW91IHNob3cgbWU/IgpUaGV5IGFyZSBhbGwgaW4gdGhlIGZpbGUgdGhlYWQtdmVjdG9yLm1kLgrC oApGb3IgdGhlIHNleHQvemV4dCBpc3N1ZSwgcGVyaGFwcyBJIG5lZWQgc29tZSB0aW1lIHRvIHJl cHJvZHVjZSB0aGF0IG9wdGltaXphdGlvbiwKYnV0IEkgY2FuIGNsZWFybHkgcmVtZW1iZXIgaXQg aXMgcmVsYXRlZCB0byB2d211bC4KwqAKwqAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCuWPkeS7tuS6uu+8mmp1emhlLnpo b25nQHJpdmFpLmFpIDxqdXpoZS56aG9uZ0ByaXZhaS5haT4K5Y+R6YCB5pe26Ze077yaMjAyNOW5 tDHmnIgxMeaXpSjmmJ/mnJ/lm5spIDE3OjE3CuaUtuS7tuS6uu+8miJjb29wZXIuam9zaHVhIjxj b29wZXIuam9zaHVhQGxpbnV4LmFsaWJhYmEuY29tPjsgImdjYy1wYXRjaGVzIjxnY2MtcGF0Y2hl c0BnY2MuZ251Lm9yZz4K5oqE44CA6YCB77yaSmltIFdpbHNvbjxqaW0ud2lsc29uLmdjY0BnbWFp bC5jb20+OyBwYWxtZXI8cGFsbWVyQGRhYmJlbHQuY29tPjsgYW5kcmV3PGFuZHJld0BzaWZpdmUu Y29tPjsgInBoaWxpcHAudG9tc2ljaCI8cGhpbGlwcC50b21zaWNoQHZydWxsLmV1PjsgamVmZnJl eWFsYXc8amVmZnJleWFsYXdAZ21haWwuY29tPjsgImNocmlzdG9waC5tdWVsbG5lciI8Y2hyaXN0 b3BoLm11ZWxsbmVyQHZydWxsLmV1PjsgamlubWE8amlubWFAbGludXguYWxpYmFiYS5jb20+OyAi Y29vcGVyLnF1Ijxjb29wZXIucXVAbGludXguYWxpYmFiYS5jb20+CuS4u+OAgOmimO+8mlJlOiBS Ze+8mltQQVRDSCB2NV0gUklTQy1WOiBBZGQgc3VwcG9ydCBmb3IgeHRoZWFkdmVjdG9yLXNwZWNp ZmljIGludHJpbnNpY3MuCsKgCsKgCllvdSBtZWFuIHdoaWNoIHBhdHRlcm4gb3B0aW1pemVkIHNl eHQvdnpleHQgcGF0dGVybj8KwqAKwqAKSSBkaWRuJ3Qgc2VlIHRoZWFkdmVjdG9yLXNwZWNpZmlj IGV4dGVuc2lvbiBwYXR0ZXJucy4gQ291bGQgeW91IHNob3cgbWU/CsKgCsKgCsKgCsKgCmp1emhl Lnpob25nQHJpdmFpLmFpCsKgCsKgCuWPkeS7tuS6uu+8msKgam9zaHVhCuWPkemAgeaXtumXtO+8 msKgMjAyNC0wMS0xMcKgMTc6MTQK5pS25Lu25Lq677yawqBqdXpoZS56aG9uZ0ByaXZhaS5haTsg Z2NjLXBhdGNoZXMK5oqE6YCB77yawqBKaW0gV2lsc29uOyBwYWxtZXI7IGFuZHJldzsgcGhpbGlw cC50b21zaWNoOyBqZWZmcmV5YWxhdzsgY2hyaXN0b3BoLm11ZWxsbmVyOyBqaW5tYTsgY29vcGVy LnF1CuS4u+mimO+8msKgUmXvvJpbUEFUQ0ggdjVdIFJJU0MtVjogQWRkIHN1cHBvcnQgZm9yIHh0 aGVhZHZlY3Rvci1zcGVjaWZpYyBpbnRyaW5zaWNzLgrCoApUbyBiZSBzcGVjaWZpYyzCoGluIENT RSBwYXNzLCB0aGUgaW5pdGlhbCBwYXR0ZXJuIHdpbGwgYmUgb3B0aW1pemVkIGludG8gdGhlIHNl eHQvemV4dCBwYXR0ZXJuLgrCoArCoArCoArCoAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K5Y+R5Lu25Lq677yaam9zaHVh IDxjb29wZXIuam9zaHVhQGxpbnV4LmFsaWJhYmEuY29tPgrlj5HpgIHml7bpl7TvvJoyMDI05bm0 MeaciDEx5pelKOaYn+acn+WbmykgMTc6MTEK5pS25Lu25Lq677yaImp1emhlLnpob25nQHJpdmFp LmFpIjxqdXpoZS56aG9uZ0ByaXZhaS5haT47ICJnY2MtcGF0Y2hlcyI8Z2NjLXBhdGNoZXNAZ2Nj LmdudS5vcmc+CuaKhOOAgOmAge+8mkppbSBXaWxzb248amltLndpbHNvbi5nY2NAZ21haWwuY29t PjsgcGFsbWVyPHBhbG1lckBkYWJiZWx0LmNvbT47IGFuZHJldzxhbmRyZXdAc2lmaXZlLmNvbT47 ICJwaGlsaXBwLnRvbXNpY2giPHBoaWxpcHAudG9tc2ljaEB2cnVsbC5ldT47IGplZmZyZXlhbGF3 PGplZmZyZXlhbGF3QGdtYWlsLmNvbT47ICJjaHJpc3RvcGgubXVlbGxuZXIiPGNocmlzdG9waC5t dWVsbG5lckB2cnVsbC5ldT47IGppbm1hPGppbm1hQGxpbnV4LmFsaWJhYmEuY29tPjsgImNvb3Bl ci5xdSI8Y29vcGVyLnF1QGxpbnV4LmFsaWJhYmEuY29tPgrkuLvjgIDpopjvvJpSZe+8mltQQVRD SCB2NV0gUklTQy1WOiBBZGQgc3VwcG9ydCBmb3IgeHRoZWFkdmVjdG9yLXNwZWNpZmljIGludHJp bnNpY3MuCsKgCsKgCnNleHQvemV4dCB3aWxsIGJlIGdlbmVyYXRlZCBpbiBPMiBldmVuIHdpdGhv dXQgY29ycmVzcG9uZGluZyBpbnRyaW5zaWNzLgrCoArCoArCoArCoArCoArCoAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K 5Y+R5Lu25Lq677yaanV6aGUuemhvbmdAcml2YWkuYWkgPGp1emhlLnpob25nQHJpdmFpLmFpPgrl j5HpgIHml7bpl7TvvJoyMDI05bm0MeaciDEx5pelKOaYn+acn+WbmykgMTc6MDcK5pS25Lu25Lq6 77yaImNvb3Blci5qb3NodWEiPGNvb3Blci5qb3NodWFAbGludXguYWxpYmFiYS5jb20+OyAiZ2Nj LXBhdGNoZXMiPGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnPgrmioQg6YCB77yaSmltIFdpbHNvbjxq aW0ud2lsc29uLmdjY0BnbWFpbC5jb20+OyBwYWxtZXI8cGFsbWVyQGRhYmJlbHQuY29tPjsgYW5k cmV3PGFuZHJld0BzaWZpdmUuY29tPjsgInBoaWxpcHAudG9tc2ljaCI8cGhpbGlwcC50b21zaWNo QHZydWxsLmV1PjsgamVmZnJleWFsYXc8amVmZnJleWFsYXdAZ21haWwuY29tPjsgImNocmlzdG9w aC5tdWVsbG5lciI8Y2hyaXN0b3BoLm11ZWxsbmVyQHZydWxsLmV1PjsgImNvb3Blci5qb3NodWEi PGNvb3Blci5qb3NodWFAbGludXguYWxpYmFiYS5jb20+OyBqaW5tYTxqaW5tYUBsaW51eC5hbGli YWJhLmNvbT47ICJjb29wZXIucXUiPGNvb3Blci5xdUBsaW51eC5hbGliYWJhLmNvbT4K5Li7IOmi mO+8mlJlOiBbUEFUQ0ggdjVdIFJJU0MtVjogQWRkIHN1cHBvcnQgZm9yIHh0aGVhZHZlY3Rvci1z cGVjaWZpYyBpbnRyaW5zaWNzLgrCoArCoAplbnVtIHJlcXVpcmVkX2V4dAp7CiDCoCBWRUNUT1Jf RVhULCDCoCAvKiBWZWN0b3IgZXh0ZW5zaW9uICovCivCoCBYVEhFQURWRUNUT1JfRVhULCDCoCAv KiBYVGhlYWRWZWN0b3IgZXh0ZW5zaW9uICovCiDCoCBaVkJCX0VYVCzCoCDCoCAvKiBDcnl0byB2 ZWN0b3IgWnZiYiBzdWItZXh0ICovCiDCoCBaVkJCX09SX1pWS0JfRVhULCAvKiBDcnl0byB2ZWN0 b3IgWnZiYiBvciB6dmtiIHN1Yi1leHQgKi8KIMKgIFpWQkNfRVhULMKgIMKgIC8qIENyeXB0byB2 ZWN0b3IgWnZiYyBzdWItZXh0ICovCsKgCsKgCsKgCkFkZCB0aGVhZHZlY3RvciB0byB0aGUgZW5k IG9mIHRoZSBlbnVtLgrCoArCoAorwqAgwqAgwqAgY2FzZSBYVEhFQURWRUNUT1JfRVhUOgorIHJl dHVybiBUQVJHRVRfWFRIRUFEVkVDVE9SOwrCoArCoArCoApTYW1lLgrCoArCoAorwqAgIiYmIHJl Z2lzdGVyX29wZXJhbmQgKG9wZXJhbmRzWzBdLCA8TU9ERT5tb2RlKQorIMKgICYmIHJlZ2lzdGVy X29wZXJhbmQgKG9wZXJhbmRzWzNdLCA8TU9ERT5tb2RlKQorIMKgICYmIHNhdGlzZmllc19jb25z dHJhaW50X3Z1IChvcGVyYW5kc1syXSkKKyDCoCAmJiBJTlRWQUwgKG9wZXJhbmRzWzddKSA9PSBy aXNjdl92ZWN0b3I6OlZMTUFYIgrCoArCoArCoApZb3UgY2FuIHVzZSB3aG9sZV9yZWdfdG9fcmVn X21vdmVfcArCoArCoArCoArCoApCdHcsIEkgcmV2aWV3IGFnYWluIDogwqAgUklTQy1WOiBIYW5k bGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBYVGhlYWR2ZWN0b3IgYW5kIFZlY3RvcgrCoArCoArCoCDC oCAoYW55X2V4dGVuZDpWV0VYVEnCoCDCoCDCoCAobWF0Y2hfb3BlcmFuZDo8Vl9ET1VCTEVfVFJV TkM+IDMgInJlZ2lzdGVyX29wZXJhbmQiIMKgICJXMjEsVzIxLFcyMSxXMjEsVzQyLFc0MixXNDIs VzQyLFc4NCxXODQsVzg0LFc4NCwgwqAgdnIsIMKgIHZyIikpwqAgwqAgKG1hdGNoX29wZXJhbmQ6 VldFWFRJIDIgInZlY3Rvcl9tZXJnZV9vcGVyYW5kIiDCoCDCoCDCoCDCoCDCoCAiIHZ1LCB2dSzC oCAwLMKgIDAsIHZ1LCB2dSzCoCAwLMKgIDAsIHZ1LCB2dSzCoCAwLMKgIDAsIMKgIHZ1LMKgIMKg IDAiKSkpXS3CoCAiVEFSR0VUX1ZFQ1RPUiIrwqAgIlRBUkdFVF9WRUNUT1IgJiYgIVRBUkdFVF9Y VEhFQURWRUNUT1IiIMKgICJ2PHN6PmV4dC52ZjJcdCUwLCUzJXAxIiDCoCBbKHNldF9hdHRyICJ0 eXBlIiAidmV4dCIpwqAgwqAgKHNldF9hdHRyICJtb2RlIiAiPE1PREU+IilAQCAtMzcxMyw3ICsz NzQ0LDcgQEDCoCDCoCAoYW55X2V4dGVuZDpWUUVYVEnCoCDCoCDCoCAobWF0Y2hfb3BlcmFuZDo8 Vl9RVUFEX1RSVU5DPiAzICJyZWdpc3Rlcl9vcGVyYW5kIiDCoCAiVzQzLFc0MyxXNDMsVzQzLFc4 NixXODYsVzg2LFc4NiwgwqAgdnIsIMKgIHZyIikpwqAgwqAgKG1hdGNoX29wZXJhbmQ6VlFFWFRJ IDIgInZlY3Rvcl9tZXJnZV9vcGVyYW5kIiDCoCDCoCDCoCDCoCAiIHZ1LCB2dSzCoCAwLMKgIDAs IHZ1LCB2dSzCoCAwLMKgIDAsIMKgIHZ1LMKgIMKgIDAiKSkpXS3CoCAiVEFSR0VUX1ZFQ1RPUiIr wqAgIlRBUkdFVF9WRUNUT1IgJiYgIVRBUkdFVF9YVEhFQURWRUNUT1IiIMKgICJ2PHN6PmV4dC52 ZjRcdCUwLCUzJXAxIiDCoCBbKHNldF9hdHRyICJ0eXBlIiAidmV4dCIpwqAgwqAgKHNldF9hdHRy ICJtb2RlIiAiPE1PREU+IilAQCAtMzczNCw3ICszNzY1LDcgQEDCoCDCoCAoYW55X2V4dGVuZDpW T0VYVEnCoCDCoCDCoCAobWF0Y2hfb3BlcmFuZDo8Vl9PQ1RfVFJVTkM+IDMgInJlZ2lzdGVyX29w ZXJhbmQiIMKgICJXODcsVzg3LFc4NyxXODcsIMKgIHZyLCDCoCB2ciIpKcKgIMKgIChtYXRjaF9v cGVyYW5kOlZPRVhUSSAyICJ2ZWN0b3JfbWVyZ2Vfb3BlcmFuZCLCoCDCoCDCoCDCoCAiIHZ1LCB2 dSzCoCAwLMKgIDAsIMKgIHZ1LMKgIMKgIDAiKSkpXS3CoCAiVEFSR0VUX1ZFQ1RPUiIrwqAgIlRB UkdFVF9WRUNUT1IgJiYgIVRBUkdFVF9YVEhFQURWRUNUT1IiIMKgICJ2PHN6PmV4dC52ZjhcdCUw LCUzJXAxIiDCoCBbKHNldF9hdHRyICJ0eXBlIiAidmV4dCIpwqAgwqAgKHNldF9hdHRyICJtb2Rl IiAiPE1PREU+IikKV2h5IGRvIHlvdSBhZGQgdGhlc2UgIVRBUkdFUlRfWFRIRUFEVkVDUlRPUiA/ CsKgCsKgCmp1emhlLnpob25nQHJpdmFpLmFpCsKgCiAKRnJvbTogSnVuIFNoYSAoSm9zaHVhKQpE YXRlOiAyMDI0LTAxLTExIDE2OjQ2ClRvOiBnY2MtcGF0Y2hlcwpDQzogamltLndpbHNvbi5nY2M7 IHBhbG1lcjsgYW5kcmV3OyBwaGlsaXBwLnRvbXNpY2g7IGplZmZyZXlhbGF3OyBjaHJpc3RvcGgu bXVlbGxuZXI7IGp1emhlLnpob25nOyBKdW4gU2hhIChKb3NodWEpOyBKaW4gTWE7IFhpYW5taWFv IFF1ClN1YmplY3Q6IFtQQVRDSCB2NV0gUklTQy1WOiBBZGQgc3VwcG9ydCBmb3IgeHRoZWFkdmVj dG9yLXNwZWNpZmljIGludHJpbnNpY3MuCsKgClRoaXMgcGF0Y2ggb25seSBpbnZvbHZlcyB0aGUg Z2VuZXJhdGlvbiBvZiB4dGhlYWR2ZWN0b3IKc3BlY2lhbCBsb2FkL3N0b3JlIGluc3RydWN0aW9u cyBhbmQgdmV4dCBpbnN0cnVjdGlvbnMuCiAKZ2NjL0NoYW5nZUxvZzoKIAogKiBjb25maWcvcmlz Y3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLWJhc2VzLmNjCiAoY2xhc3MgdGhfbG9hZHN0b3JlX3dp ZHRoKTogRGVmaW5lIG5ldyBidWlsdGluIGJhc2VzLgogKGNsYXNzIHRoX2V4dHJhY3QpOiBEZWZp bmUgbmV3IGJ1aWx0aW4gYmFzZXMuCiAoQkFTRSk6IERlZmluZSBuZXcgYnVpbHRpbiBiYXNlcy4K ICogY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1iYXNlcy5oOgogRGVmaW5lIG5l dyBidWlsdGluIGNsYXNzLgogKiBjb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLXNo YXBlcy5jYwogKHN0cnVjdCB0aF9sb2Fkc3RvcmVfd2lkdGhfZGVmKTogRGVmaW5lIG5ldyBidWls dGluIHNoYXBlcy4KIChzdHJ1Y3QgdGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGhfZGVmKToKIERl ZmluZSBuZXcgYnVpbHRpbiBzaGFwZXMuCiAoc3RydWN0IHRoX2V4dHJhY3RfZGVmKTogRGVmaW5l IG5ldyBidWlsdGluIHNoYXBlcy4KIChTSEFQRSk6IERlZmluZSBuZXcgYnVpbHRpbiBzaGFwZXMu CiAqIGNvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtc2hhcGVzLmg6CiBEZWZpbmUg bmV3IGJ1aWx0aW4gc2hhcGVzLgogKiBjb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5z LmNjIChERUZfUlZWX0ZVTkNUSU9OKToKICogY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWls dGlucy5oIChlbnVtIHJlcXVpcmVkX2V4dCk6CiAoc3RydWN0IGZ1bmN0aW9uX2dyb3VwX2luZm8p OgogKiBjb25maWcvcmlzY3YvdC1yaXNjdjogQWRkIHRoZWFkLXZlY3Rvci1idWlsdGlucy1mdW5j dGlvbnMuZGVmCiAqIGNvbmZpZy9yaXNjdi90aGVhZC12ZWN0b3IubWQKIChAcHJlZF9tb3Zfd2lk dGg8dmxtZW1fb3BfYXR0cj48bW9kZT4pOiBBZGQgbmV3IHBhdHRlcm5zLgogKCpwcmVkX21vdl93 aWR0aDx2bG1lbV9vcF9hdHRyPjxtb2RlPik6IExpa2V3aXNlLgogKEBwcmVkX3N0b3JlX3dpZHRo PHZsbWVtX29wX2F0dHI+PG1vZGU+KTogTGlrZXdpc2UuCiAoQHByZWRfc3RyaWRlZF9sb2FkX3dp ZHRoPHZsbWVtX29wX2F0dHI+PG1vZGU+KTogTGlrZXdpc2UuCiAoQHByZWRfc3RyaWRlZF9zdG9y ZV93aWR0aDx2bG1lbV9vcF9hdHRyPjxtb2RlPik6IExpa2V3aXNlLgogKEBwcmVkX2luZGV4ZWRf bG9hZF93aWR0aDx2bG1lbV9vcF9hdHRyPjxtb2RlPik6IExpa2V3aXNlLgogKEBwcmVkX2luZGV4 ZWRfPHZsbWVtX29yZGVyX2F0dHI+c3RvcmVfd2lkdGg8dmxtZW1fb3BfYXR0cj48bW9kZT4pOgog KEBwcmVkX3RoX2V4dHJhY3Q8bW9kZT4pOiBMaWtld2lzZS4KICgqcHJlZF90aF9leHRyYWN0PG1v ZGU+KTogTGlrZXdpc2UuCiAqIGNvbmZpZy9yaXNjdi90aGVhZC12ZWN0b3ItYnVpbHRpbnMtZnVu Y3Rpb25zLmRlZjogTmV3IGZpbGUuCiAKZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CiAKICogZ2Nj LnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsYi12c2IuYzogTmV3IHRlc3QuCiAqIGdj Yy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGJ1LXZzYi5jOiBOZXcgdGVzdC4KICog Z2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsaC12c2guYzogTmV3IHRlc3QuCiAq IGdjYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGh1LXZzaC5jOiBOZXcgdGVzdC4K ICogZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3Zsdy12c3cuYzogTmV3IHRlc3Qu CiAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bHd1LXZzdy5jOiBOZXcgdGVz dC4KIApDby1hdXRob3JlZC1ieTogSmluIE1hIDxqaW5tYUBsaW51eC5hbGliYWJhLmNvbT4KQ28t YXV0aG9yZWQtYnk6IFhpYW5taWFvIFF1IDxjb29wZXIucXVAbGludXguYWxpYmFiYS5jb20+CkNv LWF1dGhvcmVkLWJ5OiBDaHJpc3RvcGggTcO8bGxuZXIgPGNocmlzdG9waC5tdWVsbG5lckB2cnVs bC5ldT4KLS0tCiAuLi4vcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLWJhc2VzLmNjwqAgwqAg wqAgfCAxMzkgKysrKysrKysrKwogLi4uL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1iYXNl cy5oIMKgIMKgIMKgIHzCoCAzMSArKysKIC4uLi9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMt c2hhcGVzLmNjIMKgIMKgIHwgMTYwICsrKysrKysrKysrCiAuLi4vcmlzY3YvcmlzY3YtdmVjdG9y LWJ1aWx0aW5zLXNoYXBlcy5owqAgwqAgwqAgfCDCoCAzICsKIGdjYy9jb25maWcvcmlzY3Yvcmlz Y3YtdmVjdG9yLWJ1aWx0aW5zLmNjIMKgIMKgIHzCoCA3MCArKysrKwogZ2NjL2NvbmZpZy9yaXNj di9yaXNjdi12ZWN0b3ItYnVpbHRpbnMuaMKgIMKgIMKgIHwgwqAgMyArCiBnY2MvY29uZmlnL3Jp c2N2L3QtcmlzY3bCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8IMKgIDEgKwogLi4u L3Jpc2N2L3RoZWFkLXZlY3Rvci1idWlsdGlucy1mdW5jdGlvbnMuZGVmIHzCoCAzOSArKysKIGdj Yy9jb25maWcvcmlzY3YvdGhlYWQtdmVjdG9yLm1kwqAgwqAgwqAgwqAgwqAgwqAgwqAgfCAyNTMg KysrKysrKysrKysrKysrKysrCiAuLi4vcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGItdnNiLmPC oCDCoCDCoCDCoCDCoCB8wqAgNjggKysrKysKIC4uLi9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3Zs YnUtdnNiLmMgwqAgwqAgwqAgwqAgfMKgIDY4ICsrKysrCiAuLi4vcmlzY3YvcnZ2L3h0aGVhZHZl Y3Rvci92bGgtdnNoLmPCoCDCoCDCoCDCoCDCoCB8wqAgNjggKysrKysKIC4uLi9yaXNjdi9ydnYv eHRoZWFkdmVjdG9yL3ZsaHUtdnNoLmMgwqAgwqAgwqAgwqAgfMKgIDY4ICsrKysrCiAuLi4vcmlz Y3YvcnZ2L3h0aGVhZHZlY3Rvci92bHctdnN3LmPCoCDCoCDCoCDCoCDCoCB8wqAgNjggKysrKysK IC4uLi9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3Zsd3UtdnN3LmMgwqAgwqAgwqAgwqAgfMKgIDY4 ICsrKysrCiAxNSBmaWxlcyBjaGFuZ2VkLCAxMTA3IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBnY2MvY29uZmlnL3Jpc2N2L3RoZWFkLXZlY3Rvci1idWlsdGlucy1mdW5jdGlvbnMu ZGVmCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2 di94dGhlYWR2ZWN0b3IvdmxiLXZzYi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3IvdmxidS12c2IuYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9y L3ZsaC12c2guYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9y aXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsaHUtdnNoLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bHctdnN3LmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVh ZHZlY3Rvci92bHd1LXZzdy5jCiAKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvcmlzY3Yt dmVjdG9yLWJ1aWx0aW5zLWJhc2VzLmNjIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3It YnVpbHRpbnMtYmFzZXMuY2MKaW5kZXggNDZmMWExZGEzM2UuLjNlYmE3OTQzNzU3IDEwMDY0NAot LS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1iYXNlcy5jYworKysg Yi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1iYXNlcy5jYwpAQCAtMjEy NSw2ICsyMTI1LDgzIEBAIHB1YmxpYzoKIMKgIH0KIH07CiAKKy8qIEltcGxlbWVudHMKKyAqIHRo LnZsKGIvaC93KVt1XS52L3RoLnZzKGIvaC93KVt1XS52L3RoLnZscyhiL2gvdylbdV0udi90aC52 c3MoYi9oL3cpW3VdLnYvCisgKiB0aC52bHgoYi9oL3cpW3VdLnYvdGgudnNbdV14KGIvaC93KS52 CisgKiBjb2RlZ2VuLsKgICovCit0ZW1wbGF0ZTxib29sIFNUT1JFX1AsIGxzdF90eXBlIExTVF9U WVBFLCBpbnQgVU5TUEVDPgorY2xhc3MgdGhfbG9hZHN0b3JlX3dpZHRoIDogcHVibGljIGZ1bmN0 aW9uX2Jhc2UKK3sKK3B1YmxpYzoKK8KgIGJvb2wgYXBwbHlfdGFpbF9wb2xpY3lfcCAoKSBjb25z dCBvdmVycmlkZSB7IHJldHVybiAhU1RPUkVfUDsgfQorwqAgYm9vbCBhcHBseV9tYXNrX3BvbGlj eV9wICgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFTVE9SRV9QOyB9CisKK8KgIHVuc2lnbmVk IGludCBjYWxsX3Byb3BlcnRpZXMgKGNvbnN0IGZ1bmN0aW9uX2luc3RhbmNlICYpIGNvbnN0IG92 ZXJyaWRlCivCoCB7CivCoCDCoCBpZiAoU1RPUkVfUCkKK8KgIMKgIMKgIHJldHVybiBDUF9XUklU RV9NRU1PUlk7CivCoCDCoCBlbHNlCivCoCDCoCDCoCByZXR1cm4gQ1BfUkVBRF9NRU1PUlk7CivC oCB9CisKK8KgIGJvb2wgY2FuX2JlX292ZXJsb2FkZWRfcCAoZW51bSBwcmVkaWNhdGlvbl90eXBl X2luZGV4IHByZWQpIGNvbnN0IG92ZXJyaWRlCivCoCB7CivCoCDCoCBpZiAoU1RPUkVfUCB8fCBM U1RfVFlQRSA9PSBMU1RfSU5ERVhFRCkKK8KgIMKgIMKgIHJldHVybiB0cnVlOworwqAgwqAgcmV0 dXJuIHByZWQgIT0gUFJFRF9UWVBFX25vbmU7CivCoCB9CisKK8KgIHJ0eCBleHBhbmQgKGZ1bmN0 aW9uX2V4cGFuZGVyICZlKSBjb25zdCBvdmVycmlkZQorwqAgeworwqAgwqAgZ2NjX2Fzc2VydCAo VEFSR0VUX1hUSEVBRFZFQ1RPUik7CivCoCDCoCBpZiAoTFNUX1RZUEUgPT0gTFNUX0lOREVYRUQp CivCoCDCoCDCoCB7CisgaWYgKFNUT1JFX1ApCisgwqAgcmV0dXJuIGUudXNlX2V4YWN0X2luc24g KAorIMKgIMKgIGNvZGVfZm9yX3ByZWRfaW5kZXhlZF9zdG9yZV93aWR0aCAoVU5TUEVDLCBVTlNQ RUMsCivCoCDCoCDCoCDCoCDCoCDCoCBlLnZlY3Rvcl9tb2RlICgpKSk7CisgZWxzZQorIMKgIHJl dHVybiBlLnVzZV9leGFjdF9pbnNuICgKKyDCoCDCoCBjb2RlX2Zvcl9wcmVkX2luZGV4ZWRfbG9h ZF93aWR0aCAoVU5TUEVDLCBlLnZlY3Rvcl9tb2RlICgpKSk7CivCoCDCoCDCoCB9CivCoCDCoCBl bHNlIGlmIChMU1RfVFlQRSA9PSBMU1RfU1RSSURFRCkKK8KgIMKgIMKgIHsKKyBpZiAoU1RPUkVf UCkKKyDCoCByZXR1cm4gZS51c2VfY29udGlndW91c19zdG9yZV9pbnNuICgKKyDCoCDCoCBjb2Rl X2Zvcl9wcmVkX3N0cmlkZWRfc3RvcmVfd2lkdGggKFVOU1BFQywgZS52ZWN0b3JfbW9kZSAoKSkp OworIGVsc2UKKyDCoCByZXR1cm4gZS51c2VfY29udGlndW91c19sb2FkX2luc24gKAorIMKgIMKg IGNvZGVfZm9yX3ByZWRfc3RyaWRlZF9sb2FkX3dpZHRoIChVTlNQRUMsIGUudmVjdG9yX21vZGUg KCkpKTsKK8KgIMKgIMKgIH0KK8KgIMKgIGVsc2UKK8KgIMKgIMKgIHsKKyBpZiAoU1RPUkVfUCkK KyDCoCByZXR1cm4gZS51c2VfY29udGlndW91c19zdG9yZV9pbnNuICgKKyDCoCDCoCBjb2RlX2Zv cl9wcmVkX3N0b3JlX3dpZHRoIChVTlNQRUMsIGUudmVjdG9yX21vZGUgKCkpKTsKKyBlbHNlCisg wqAgcmV0dXJuIGUudXNlX2NvbnRpZ3VvdXNfbG9hZF9pbnNuICgKKyDCoCDCoCBjb2RlX2Zvcl9w cmVkX21vdl93aWR0aCAoVU5TUEVDLCBlLnZlY3Rvcl9tb2RlICgpKSk7CivCoCDCoCDCoCB9CivC oCB9Cit9OworCisvKiBJbXBsZW1lbnRzIHZleHQueC52LsKgICovCitjbGFzcyB0aF9leHRyYWN0 IDogcHVibGljIGZ1bmN0aW9uX2Jhc2UKK3sKK3B1YmxpYzoKK8KgIGJvb2wgYXBwbHlfdmxfcCAo KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorwqAgYm9vbCBhcHBseV90YWlsX3Bv bGljeV9wICgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CivCoCBib29sIGFwcGx5 X21hc2tfcG9saWN5X3AgKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KK8KgIGJv b2wgdXNlX21hc2tfcHJlZGljYXRpb25fcCAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz ZTsgfQorwqAgYm9vbCBoYXNfbWVyZ2Vfb3BlcmFuZF9wICgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0 dXJuIGZhbHNlOyB9CisKK8KgIHJ0eCBleHBhbmQgKGZ1bmN0aW9uX2V4cGFuZGVyICZlKSBjb25z dCBvdmVycmlkZQorwqAgeworwqAgwqAgZ2NjX2Fzc2VydCAoVEFSR0VUX1hUSEVBRFZFQ1RPUik7 CivCoCDCoCByZXR1cm4gZS51c2VfZXhhY3RfaW5zbiAoY29kZV9mb3JfcHJlZF90aF9leHRyYWN0 IChlLnZlY3Rvcl9tb2RlICgpKSk7CivCoCB9Cit9OworCiAvKiBCZWxvdyBpbXBsZW1lbnRzIGFy ZSB2ZWN0b3IgY3J5cHRvICovCiAvKiBJbXBsZW1lbnRzIHZhbmRuLlt2dix2eF0gKi8KIGNsYXNz IHZhbmRuIDogcHVibGljIGZ1bmN0aW9uX2Jhc2UKQEAgLTI1ODcsNiArMjY2NCwzNyBAQCBzdGF0 aWMgQ09OU1RFWFBSIGNvbnN0IHNlZ19pbmRleGVkX2xvYWQ8VU5TUEVDX09SREVSRUQ+IHZsb3hz ZWdfb2JqOwogc3RhdGljIENPTlNURVhQUiBjb25zdCBzZWdfaW5kZXhlZF9zdG9yZTxVTlNQRUNf VU5PUkRFUkVEPiB2c3V4c2VnX29iajsKIHN0YXRpYyBDT05TVEVYUFIgY29uc3Qgc2VnX2luZGV4 ZWRfc3RvcmU8VU5TUEVDX09SREVSRUQ+IHZzb3hzZWdfb2JqOwogc3RhdGljIENPTlNURVhQUiBj b25zdCB2bHNlZ2ZmIHZsc2VnZmZfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fk c3RvcmVfd2lkdGg8ZmFsc2UsIExTVF9VTklUX1NUUklERSwgVU5TUEVDX1RIX1ZMQj4gdmxiX29i ajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1Rf VU5JVF9TVFJJREUsIFVOU1BFQ19USF9WTEJVPiB2bGJ1X29iajsKK3N0YXRpYyBDT05TVEVYUFIg Y29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1RfVU5JVF9TVFJJREUsIFVOU1BFQ19U SF9WTEg+IHZsaF9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2xvYWRzdG9yZV93aWR0 aDxmYWxzZSwgTFNUX1VOSVRfU1RSSURFLCBVTlNQRUNfVEhfVkxIVT4gdmxodV9vYmo7CitzdGF0 aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2xvYWRzdG9yZV93aWR0aDxmYWxzZSwgTFNUX1VOSVRfU1RS SURFLCBVTlNQRUNfVEhfVkxXPiB2bHdfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9s b2Fkc3RvcmVfd2lkdGg8ZmFsc2UsIExTVF9VTklUX1NUUklERSwgVU5TUEVDX1RIX1ZMV1U+IHZs d3Vfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8dHJ1ZSwg TFNUX1VOSVRfU1RSSURFLCBVTlNQRUNfVEhfVkxCPiB2c2Jfb2JqOworc3RhdGljIENPTlNURVhQ UiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8dHJ1ZSwgTFNUX1VOSVRfU1RSSURFLCBVTlNQRUNf VEhfVkxIPiB2c2hfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lk dGg8dHJ1ZSwgTFNUX1VOSVRfU1RSSURFLCBVTlNQRUNfVEhfVkxXPiB2c3dfb2JqOworc3RhdGlj IENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8ZmFsc2UsIExTVF9TVFJJREVELCBV TlNQRUNfVEhfVkxTQj4gdmxzYl9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2xvYWRz dG9yZV93aWR0aDxmYWxzZSwgTFNUX1NUUklERUQsIFVOU1BFQ19USF9WTFNCVT4gdmxzYnVfb2Jq Oworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8ZmFsc2UsIExTVF9T VFJJREVELCBVTlNQRUNfVEhfVkxTSD4gdmxzaF9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0 IHRoX2xvYWRzdG9yZV93aWR0aDxmYWxzZSwgTFNUX1NUUklERUQsIFVOU1BFQ19USF9WTFNIVT4g dmxzaHVfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8ZmFs c2UsIExTVF9TVFJJREVELCBVTlNQRUNfVEhfVkxTVz4gdmxzd19vYmo7CitzdGF0aWMgQ09OU1RF WFBSIGNvbnN0IHRoX2xvYWRzdG9yZV93aWR0aDxmYWxzZSwgTFNUX1NUUklERUQsIFVOU1BFQ19U SF9WTFNXVT4gdmxzd3Vfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVf d2lkdGg8dHJ1ZSwgTFNUX1NUUklERUQsIFVOU1BFQ19USF9WTFNCPiB2c3NiX29iajsKK3N0YXRp YyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPHRydWUsIExTVF9TVFJJREVELCBV TlNQRUNfVEhfVkxTSD4gdnNzaF9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2xvYWRz dG9yZV93aWR0aDx0cnVlLCBMU1RfU1RSSURFRCwgVU5TUEVDX1RIX1ZMU1c+IHZzc3dfb2JqOwor c3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8ZmFsc2UsIExTVF9JTkRF WEVELCBVTlNQRUNfVEhfVkxYQj4gdmx4Yl9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRo X2xvYWRzdG9yZV93aWR0aDxmYWxzZSwgTFNUX0lOREVYRUQsIFVOU1BFQ19USF9WTFhCVT4gdmx4 YnVfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8ZmFsc2Us IExTVF9JTkRFWEVELCBVTlNQRUNfVEhfVkxYSD4gdmx4aF9vYmo7CitzdGF0aWMgQ09OU1RFWFBS IGNvbnN0IHRoX2xvYWRzdG9yZV93aWR0aDxmYWxzZSwgTFNUX0lOREVYRUQsIFVOU1BFQ19USF9W TFhIVT4gdmx4aHVfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lk dGg8ZmFsc2UsIExTVF9JTkRFWEVELCBVTlNQRUNfVEhfVkxYVz4gdmx4d19vYmo7CitzdGF0aWMg Q09OU1RFWFBSIGNvbnN0IHRoX2xvYWRzdG9yZV93aWR0aDxmYWxzZSwgTFNUX0lOREVYRUQsIFVO U1BFQ19USF9WTFhXVT4gdmx4d3Vfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fk c3RvcmVfd2lkdGg8dHJ1ZSwgTFNUX0lOREVYRUQsIFVOU1BFQ19USF9WTFhCPiB2c3hiX29iajsK K3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPHRydWUsIExTVF9JTkRF WEVELCBVTlNQRUNfVEhfVkxYSD4gdnN4aF9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRo X2xvYWRzdG9yZV93aWR0aDx0cnVlLCBMU1RfSU5ERVhFRCwgVU5TUEVDX1RIX1ZMWFc+IHZzeHdf b2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8dHJ1ZSwgTFNU X0lOREVYRUQsIFVOU1BFQ19USF9WU1VYQj4gdnN1eGJfb2JqOworc3RhdGljIENPTlNURVhQUiBj b25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8dHJ1ZSwgTFNUX0lOREVYRUQsIFVOU1BFQ19USF9WU1VY SD4gdnN1eGhfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8 dHJ1ZSwgTFNUX0lOREVYRUQsIFVOU1BFQ19USF9WU1VYVz4gdnN1eHdfb2JqOworc3RhdGljIENP TlNURVhQUiBjb25zdCB0aF9leHRyYWN0IHZleHRfeF92X29iajsKIAogLyogQ3J5cHRvIFZlY3Rv ciAqLwogc3RhdGljIENPTlNURVhQUiBjb25zdCB2YW5kbiB2YW5kbl9vYmo7CkBAIC0yODc4LDYg KzI5ODYsMzcgQEAgQkFTRSAodmxveHNlZykKIEJBU0UgKHZzdXhzZWcpCiBCQVNFICh2c294c2Vn KQogQkFTRSAodmxzZWdmZikKK0JBU0UgKHZsYikKK0JBU0UgKHZsaCkKK0JBU0UgKHZsdykKK0JB U0UgKHZsYnUpCitCQVNFICh2bGh1KQorQkFTRSAodmx3dSkKK0JBU0UgKHZzYikKK0JBU0UgKHZz aCkKK0JBU0UgKHZzdykKK0JBU0UgKHZsc2IpCitCQVNFICh2bHNoKQorQkFTRSAodmxzdykKK0JB U0UgKHZsc2J1KQorQkFTRSAodmxzaHUpCitCQVNFICh2bHN3dSkKK0JBU0UgKHZzc2IpCitCQVNF ICh2c3NoKQorQkFTRSAodnNzdykKK0JBU0UgKHZseGIpCitCQVNFICh2bHhoKQorQkFTRSAodmx4 dykKK0JBU0UgKHZseGJ1KQorQkFTRSAodmx4aHUpCitCQVNFICh2bHh3dSkKK0JBU0UgKHZzeGIp CitCQVNFICh2c3hoKQorQkFTRSAodnN4dykKK0JBU0UgKHZzdXhiKQorQkFTRSAodnN1eGgpCitC QVNFICh2c3V4dykKK0JBU0UgKHZleHRfeF92KQogLyogQ3J5cHRvIHZlY3RvciAqLwogQkFTRSAo dmFuZG4pCiBCQVNFICh2YnJldikKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvcmlzY3Yt dmVjdG9yLWJ1aWx0aW5zLWJhc2VzLmggYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1i dWlsdGlucy1iYXNlcy5oCmluZGV4IDExMjJlMzgwMWE3Li41NjVhMDMxMWQyYiAxMDA2NDQKLS0t IGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtYmFzZXMuaAorKysgYi9n Y2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1iYXNlcy5oCkBAIC0yOTksNiAr Mjk5LDM3IEBAIGV4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bG94c2VnOwogZXh0 ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZzdXhzZWc7CiBleHRlcm4gY29uc3QgZnVu Y3Rpb25fYmFzZSAqY29uc3QgdnNveHNlZzsKIGV4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpj b25zdCB2bHNlZ2ZmOworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZsYjsKK2V4 dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bGg7CitleHRlcm4gY29uc3QgZnVuY3Rp b25fYmFzZSAqY29uc3Qgdmx3OworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZs YnU7CitleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3QgdmxodTsKK2V4dGVybiBjb25z dCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bHd1OworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2Ug KmNvbnN0IHZzYjsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2c2g7CitleHRl cm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3QgdnN3OworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9u X2Jhc2UgKmNvbnN0IHZsc2I7CitleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3Qgdmxz aDsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bHN3OworZXh0ZXJuIGNvbnN0 IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZsc2J1OworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2Ug KmNvbnN0IHZsc2h1OworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZsc3d1Owor ZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZzc2I7CitleHRlcm4gY29uc3QgZnVu Y3Rpb25fYmFzZSAqY29uc3QgdnNzaDsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25z dCB2c3N3OworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZseGI7CitleHRlcm4g Y29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3Qgdmx4aDsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9i YXNlICpjb25zdCB2bHh3OworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZseGJ1 OworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZseGh1OworZXh0ZXJuIGNvbnN0 IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZseHd1OworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2Ug KmNvbnN0IHZzeGI7CitleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3QgdnN4aDsKK2V4 dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2c3h3OworZXh0ZXJuIGNvbnN0IGZ1bmN0 aW9uX2Jhc2UgKmNvbnN0IHZzdXhiOworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0 IHZzdXhoOworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZzdXh3OworZXh0ZXJu IGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZleHRfeF92OwogLyogQmVsb3cgZnVuY3Rpb25f YmFzZSBhcmUgVmVjdHJvIENyeXB0byovCiBleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29u c3QgdmFuZG47CiBleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3QgdmJyZXY7CmRpZmYg LS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1zaGFwZXMuY2Mg Yi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1zaGFwZXMuY2MKaW5kZXgg MWU0ZjRkNTNkZTYuLjhlOTBiMTdhOTRiIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Jp c2N2LXZlY3Rvci1idWlsdGlucy1zaGFwZXMuY2MKKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNj di12ZWN0b3ItYnVpbHRpbnMtc2hhcGVzLmNjCkBAIC0yMTEsNiArMjExLDE0NiBAQCBzdHJ1Y3Qg aW5kZXhlZF9sb2Fkc3RvcmVfZGVmIDogcHVibGljIGZ1bmN0aW9uX3NoYXBlCiDCoCB9CiB9Owog CisvKiBBZGQgb25lIGZ1bmN0aW9uIGluc3RhbmNlIGZvciBHUk9VUCwgdXNpbmcgb3BlcmFuZCBz dWZmaXggYXQgaW5kZXggT0ksCisgwqAgbW9kZSBzdWZmaXggYXQgaW5kZXggUEFJUiAmJiBiaSBh bmQgcHJlZGljYXRpb24gc3VmZml4IGF0IGluZGV4IHByZWRfaWR4LsKgICovCitzdGF0aWMgdm9p ZAorYnVpbGRfdGhfbG9hZHN0b3JlIChmdW5jdGlvbl9idWlsZGVyICZiLCBjb25zdCBmdW5jdGlv bl9ncm91cF9pbmZvICZncm91cCwKK8KgIMKgIMKgIHVuc2lnbmVkIGludCBwcmVkX2lkeCwgdW5z aWduZWQgaW50IHZlY190eXBlX2lkeCkKK3sKK8KgIGF1dG9fdmVjPHRyZWUsIDU+IGFyZ3VtZW50 X3R5cGVzOworwqAgZnVuY3Rpb25faW5zdGFuY2UgZnVuY3Rpb25faW5zdGFuY2UgKGdyb3VwLmJh c2VfbmFtZSwgKmdyb3VwLmJhc2UsCisgwqAgwqAgwqAgwqAgwqAgKmdyb3VwLnNoYXBlLAorIMKg IMKgIMKgIMKgIMKgIGdyb3VwLm9wc19pbmZvcy50eXBlc1t2ZWNfdHlwZV9pZHhdLAorIMKgIMKg IMKgIMKgIMKgIGdyb3VwLnByZWRzW3ByZWRfaWR4XSwgJmdyb3VwLm9wc19pbmZvcyk7CivCoCB0 cmVlIHJldHVybl90eXBlID0gZ3JvdXAub3BzX2luZm9zLnJldC5nZXRfdHJlZV90eXBlICgKK8Kg IMKgIGdyb3VwLm9wc19pbmZvcy50eXBlc1t2ZWNfdHlwZV9pZHhdLmluZGV4KTsKK8KgIGIuYWxs b2NhdGVfYXJndW1lbnRfdHlwZXMgKGZ1bmN0aW9uX2luc3RhbmNlLCBhcmd1bWVudF90eXBlcyk7 CivCoCBiLmFwcGx5X3ByZWRpY2F0aW9uIChmdW5jdGlvbl9pbnN0YW5jZSwgcmV0dXJuX3R5cGUs IGFyZ3VtZW50X3R5cGVzKTsKKworwqAgaWYgKFRBUkdFVF9YVEhFQURWRUNUT1IgJiYgIWNoZWNr X3R5cGUgKHJldHVybl90eXBlLCBhcmd1bWVudF90eXBlcykpCivCoCDCoCByZXR1cm47CisKK8Kg IHRyZWUgdHlwZSA9IGJ1aWx0aW5fdHlwZXNbZ3JvdXAub3BzX2luZm9zLnR5cGVzW3ZlY190eXBl X2lkeF0uaW5kZXhdLnZlY3RvcjsKK8KgIGlmIChzdHJzdHIgKGdyb3VwLmJhc2VfbmFtZSwgImwi KQorwqAgwqAgwqAgJiYgc3Ryc3RyIChncm91cC5iYXNlX25hbWUsICJ1IikKK8KgIMKgIMKgICYm ICFUWVBFX1VOU0lHTkVEIChUUkVFX1RZUEUgKHR5cGUpKSkKK8KgIMKgIHJldHVybjsKKworwqAg aWYgKHN0cnN0ciAoZ3JvdXAuYmFzZV9uYW1lLCAibCIpCivCoCDCoCDCoCAmJiAhc3Ryc3RyIChn cm91cC5iYXNlX25hbWUsICJ1IikKK8KgIMKgIMKgICYmIFRZUEVfVU5TSUdORUQgKFRSRUVfVFlQ RSAodHlwZSkpKQorwqAgwqAgcmV0dXJuOworCivCoCBtYWNoaW5lX21vZGUgbW9kZSA9IFRZUEVf TU9ERSAodHlwZSk7CivCoCBpbnQgc2V3ID0gR0VUX01PREVfQklUU0laRSAoR0VUX01PREVfSU5O RVIgKG1vZGUpKTsKK8KgIGlmIChzdHJzdHIgKGdyb3VwLmJhc2VfbmFtZSwgImgiKSAmJiBzZXcg PT0gOCkKK8KgIMKgIHJldHVybjsKKworwqAgaWYgKHN0cnN0ciAoZ3JvdXAuYmFzZV9uYW1lLCAi dyIpICYmIChzZXcgPT0gOCB8fCBzZXcgPT0xNikpCivCoCDCoCByZXR1cm47CisKK8KgIGIuYWRk X292ZXJsb2FkZWRfZnVuY3Rpb24gKGZ1bmN0aW9uX2luc3RhbmNlLCAqZ3JvdXAuc2hhcGUpOwor wqAgYi5hZGRfdW5pcXVlX2Z1bmN0aW9uIChmdW5jdGlvbl9pbnN0YW5jZSwgKCpncm91cC5zaGFw ZSksIHJldHVybl90eXBlLAorwqAgwqAgYXJndW1lbnRfdHlwZXMpOworfQorCisvKiB0aF9sb2Fk c3RvcmVfd2lkdGhfZGVmIGNsYXNzLsKgICovCitzdHJ1Y3QgdGhfbG9hZHN0b3JlX3dpZHRoX2Rl ZiA6IHB1YmxpYyBidWlsZF9iYXNlCit7CisgwqAgdm9pZCBidWlsZCAoZnVuY3Rpb25fYnVpbGRl ciAmYiwKKyDCoCDCoCDCoCBjb25zdCBmdW5jdGlvbl9ncm91cF9pbmZvICZncm91cCkgY29uc3Qg b3ZlcnJpZGUKK8KgIHsKK8KgIMKgIGZvciAodW5zaWduZWQgaW50IHByZWRfaWR4ID0gMDsgZ3Jv dXAucHJlZHNbcHJlZF9pZHhdICE9IE5VTV9QUkVEX1RZUEVTOworIMKgIMKgIMKgICsrcHJlZF9p ZHgpCivCoCDCoCDCoCB7CisgZm9yICh1bnNpZ25lZCBpbnQgdmVjX3R5cGVfaWR4ID0gMDsKK8Kg IMKgIMKgIGdyb3VwLm9wc19pbmZvcy50eXBlc1t2ZWNfdHlwZV9pZHhdLmluZGV4ICE9IE5VTV9W RUNUT1JfVFlQRVM7CivCoCDCoCDCoCArK3ZlY190eXBlX2lkeCkKKyDCoCB7CisgwqAgwqAgYnVp bGRfdGhfbG9hZHN0b3JlIChiLCBncm91cCwgcHJlZF9pZHgsIHZlY190eXBlX2lkeCk7CisgwqAg fQorwqAgwqAgwqAgfQorwqAgfQorCivCoCBjaGFyICpnZXRfbmFtZSAoZnVuY3Rpb25fYnVpbGRl ciAmYiwgY29uc3QgZnVuY3Rpb25faW5zdGFuY2UgJmluc3RhbmNlLAorwqAgwqAgYm9vbCBvdmVy bG9hZGVkX3ApIGNvbnN0IG92ZXJyaWRlCivCoCB7CivCoCDCoCAvKiBSZXR1cm4gbnVsbHB0ciBp ZiBpdCBjYW4gbm90IGJlIG92ZXJsb2FkZWQuwqAgKi8KK8KgIMKgIGlmIChvdmVybG9hZGVkX3Ag JiYgIWluc3RhbmNlLmJhc2UtPmNhbl9iZV9vdmVybG9hZGVkX3AgKGluc3RhbmNlLnByZWQpKQor wqAgwqAgwqAgcmV0dXJuIG51bGxwdHI7CisKK8KgIMKgIGIuYXBwZW5kX25hbWUgKCJfX3Jpc2N2 X3RoXyIpOworwqAgwqAgYi5hcHBlbmRfbmFtZSAoaW5zdGFuY2UuYmFzZV9uYW1lKTsKKworwqAg wqAgLyogdm9wX3YgLS0+IHZvcF92Xzx0eXBlPi7CoCAqLworwqAgwqAgaWYgKCFvdmVybG9hZGVk X3ApCivCoCDCoCDCoCB7CisgLyogdm9wIC0tPiB2b3Bfdi7CoCAqLworIGIuYXBwZW5kX25hbWUg KG9wZXJhbmRfc3VmZml4ZXNbaW5zdGFuY2Uub3BfaW5mby0+b3BdKTsKKyAvKiB2b3BfdiAtLT4g dm9wX3ZfPHR5cGU+LsKgICovCisgYi5hcHBlbmRfbmFtZSAodHlwZV9zdWZmaXhlc1tpbnN0YW5j ZS50eXBlLmluZGV4XS52ZWN0b3IpOworwqAgwqAgwqAgfQorCivCoCDCoCAvKiBBY2NvcmRpbmcg dG8gcnZ2LWludHJpbnNpYy1kb2MsIGl0IGRvZXMgbm90IGFkZCAiX20iIHN1ZmZpeAorIMKgIMKg IMKgIGZvciB2b3BfbSBDKysgb3ZlcmxvYWRlZCBBUEkuwqAgKi8KK8KgIMKgIGlmIChvdmVybG9h ZGVkX3AgJiYgaW5zdGFuY2UucHJlZCA9PSBQUkVEX1RZUEVfbSkKK8KgIMKgIMKgIHJldHVybiBi LmZpbmlzaF9uYW1lICgpOworwqAgwqAgYi5hcHBlbmRfbmFtZSAocHJlZGljYXRpb25fc3VmZml4 ZXNbaW5zdGFuY2UucHJlZF0pOworwqAgwqAgcmV0dXJuIGIuZmluaXNoX25hbWUgKCk7CivCoCB9 Cit9OworCisKKy8qIHRoX2luZGV4ZWRfbG9hZHN0b3JlX3dpZHRoX2RlZiBjbGFzcy7CoCAqLwor c3RydWN0IHRoX2luZGV4ZWRfbG9hZHN0b3JlX3dpZHRoX2RlZiA6IHB1YmxpYyBmdW5jdGlvbl9z aGFwZQoreworwqAgdm9pZCBidWlsZCAoZnVuY3Rpb25fYnVpbGRlciAmYiwKKyDCoCDCoCDCoCBj b25zdCBmdW5jdGlvbl9ncm91cF9pbmZvICZncm91cCkgY29uc3Qgb3ZlcnJpZGUKK8KgIHsKK8Kg IMKgIGZvciAodW5zaWduZWQgaW50IHByZWRfaWR4ID0gMDsgZ3JvdXAucHJlZHNbcHJlZF9pZHhd ICE9IE5VTV9QUkVEX1RZUEVTOworwqAgKytwcmVkX2lkeCkKK8KgIMKgIMKgIHsKKyBmb3IgKHVu c2lnbmVkIGludCB2ZWNfdHlwZV9pZHggPSAwOworwqAgwqAgwqAgZ3JvdXAub3BzX2luZm9zLnR5 cGVzW3ZlY190eXBlX2lkeF0uaW5kZXggIT0gTlVNX1ZFQ1RPUl9UWVBFUzsKK8KgIMKgIMKgICsr dmVjX3R5cGVfaWR4KQorIMKgIHsKK8KgIMKgIHRyZWUgaW5kZXhfdHlwZSA9IGdyb3VwLm9wc19p bmZvcy5hcmdzWzFdLmdldF90cmVlX3R5cGUgKAorIMKgIMKgIMKgIGdyb3VwLm9wc19pbmZvcy50 eXBlc1t2ZWNfdHlwZV9pZHhdLmluZGV4KTsKK8KgIMKgIGlmICghaW5kZXhfdHlwZSkKKyDCoCDC oCDCoCBjb250aW51ZTsKK8KgIMKgIGJ1aWxkX3RoX2xvYWRzdG9yZSAoYiwgZ3JvdXAsIHByZWRf aWR4LCB2ZWNfdHlwZV9pZHgpOworIMKgIH0KK8KgIMKgIMKgIH0KK8KgIH0KKworwqAgY2hhciAq Z2V0X25hbWUgKGZ1bmN0aW9uX2J1aWxkZXIgJmIsIGNvbnN0IGZ1bmN0aW9uX2luc3RhbmNlICZp bnN0YW5jZSwKK8KgIMKgIGJvb2wgb3ZlcmxvYWRlZF9wKSBjb25zdCBvdmVycmlkZQorwqAgewor CivCoCDCoCAvKiBSZXR1cm4gbnVsbHB0ciBpZiBpdCBjYW4gbm90IGJlIG92ZXJsb2FkZWQuwqAg Ki8KK8KgIMKgIGlmIChvdmVybG9hZGVkX3AgJiYgIWluc3RhbmNlLmJhc2UtPmNhbl9iZV9vdmVy bG9hZGVkX3AgKGluc3RhbmNlLnByZWQpKQorwqAgwqAgwqAgcmV0dXJuIG51bGxwdHI7CisKK8Kg IMKgIGIuYXBwZW5kX25hbWUgKCJfX3Jpc2N2X3RoXyIpOworwqAgwqAgYi5hcHBlbmRfbmFtZSAo aW5zdGFuY2UuYmFzZV9uYW1lKTsKK8KgIMKgIC8qIHZvcF92IC0tPiB2b3Bfdl88dHlwZT4uwqAg Ki8KK8KgIMKgIGlmICghb3ZlcmxvYWRlZF9wKQorwqAgwqAgwqAgeworIC8qIHZvcCAtLT4gdm9w X3YuwqAgKi8KKyBiLmFwcGVuZF9uYW1lIChvcGVyYW5kX3N1ZmZpeGVzW2luc3RhbmNlLm9wX2lu Zm8tPm9wXSk7CisgLyogdm9wX3YgLS0+IHZvcF92Xzx0eXBlPi7CoCAqLworIGIuYXBwZW5kX25h bWUgKHR5cGVfc3VmZml4ZXNbaW5zdGFuY2UudHlwZS5pbmRleF0udmVjdG9yKTsKK8KgIMKgIMKg IH0KKworwqAgwqAgLyogQWNjb3JkaW5nIHRvIHJ2di1pbnRyaW5zaWMtZG9jLCBpdCBkb2VzIG5v dCBhZGQgIl9tIiBzdWZmaXgKKyDCoCDCoCDCoCBmb3Igdm9wX20gQysrIG92ZXJsb2FkZWQgQVBJ LsKgICovCivCoCDCoCBpZiAob3ZlcmxvYWRlZF9wICYmIGluc3RhbmNlLnByZWQgPT0gUFJFRF9U WVBFX20pCivCoCDCoCDCoCByZXR1cm4gYi5maW5pc2hfbmFtZSAoKTsKK8KgIMKgIGIuYXBwZW5k X25hbWUgKHByZWRpY2F0aW9uX3N1ZmZpeGVzW2luc3RhbmNlLnByZWRdKTsKK8KgIMKgIHJldHVy biBiLmZpbmlzaF9uYW1lICgpOworwqAgfQorfTsKKwogLyogYWx1X2RlZiBjbGFzcy7CoCAqLwog c3RydWN0IGFsdV9kZWYgOiBwdWJsaWMgYnVpbGRfYmFzZQogewpAQCAtNjMyLDYgKzc3MiwyMyBA QCBzdHJ1Y3QgcmVkdWNfYWx1X2RlZiA6IHB1YmxpYyBidWlsZF9iYXNlCiDCoCB9CiB9OwogCisv KiB0aF9leHRyYWN0X2RlZiBjbGFzcy7CoCAqLworc3RydWN0IHRoX2V4dHJhY3RfZGVmIDogcHVi bGljIGJ1aWxkX2Jhc2UKK3sKK8KgIGNoYXIgKmdldF9uYW1lIChmdW5jdGlvbl9idWlsZGVyICZi LCBjb25zdCBmdW5jdGlvbl9pbnN0YW5jZSAmaW5zdGFuY2UsCivCoCDCoCDCoCBib29sIG92ZXJs b2FkZWRfcCkgY29uc3Qgb3ZlcnJpZGUKK8KgIHsKK8KgIMKgIGIuYXBwZW5kX25hbWUgKCJfX3Jp c2N2X3RoXyIpOworwqAgwqAgYi5hcHBlbmRfbmFtZSAoaW5zdGFuY2UuYmFzZV9uYW1lKTsKKwor wqAgwqAgaWYgKG92ZXJsb2FkZWRfcCkKK8KgIMKgIMKgIHJldHVybiBiLmZpbmlzaF9uYW1lICgp OworwqAgwqAgYi5hcHBlbmRfbmFtZSAodHlwZV9zdWZmaXhlc1tpbnN0YW5jZS50eXBlLmluZGV4 XS52ZWN0b3IpOworwqAgwqAgYi5hcHBlbmRfbmFtZSAodHlwZV9zdWZmaXhlc1tpbnN0YW5jZS50 eXBlLmluZGV4XS5zY2FsYXIpOworwqAgwqAgcmV0dXJuIGIuZmluaXNoX25hbWUgKCk7CivCoCB9 Cit9OworCiAvKiBzY2FsYXJfbW92ZV9kZWYgY2xhc3MuwqAgKi8KIHN0cnVjdCBzY2FsYXJfbW92 ZV9kZWYgOiBwdWJsaWMgYnVpbGRfYmFzZQogewpAQCAtMTA5NCw2ICsxMjUxLDggQEAgU0hBUEUo dnNldHZsLCB2c2V0dmwpCiBTSEFQRSh2c2V0dmwsIHZzZXR2bG1heCkKIFNIQVBFKGxvYWRzdG9y ZSwgbG9hZHN0b3JlKQogU0hBUEUoaW5kZXhlZF9sb2Fkc3RvcmUsIGluZGV4ZWRfbG9hZHN0b3Jl KQorU0hBUEUodGhfbG9hZHN0b3JlX3dpZHRoLCB0aF9sb2Fkc3RvcmVfd2lkdGgpCitTSEFQRSh0 aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0aCwgdGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGgpCiBT SEFQRShhbHUsIGFsdSkKIFNIQVBFKGFsdV9mcm0sIGFsdV9mcm0pCiBTSEFQRSh3aWRlbl9hbHUs IHdpZGVuX2FsdSkKQEAgLTExMDYsNiArMTI2NSw3IEBAIFNIQVBFKG1vdmUsIG1vdmUpCiBTSEFQ RShtYXNrX2FsdSwgbWFza19hbHUpCiBTSEFQRShyZWR1Y19hbHUsIHJlZHVjX2FsdSkKIFNIQVBF KHJlZHVjX2FsdV9mcm0sIHJlZHVjX2FsdV9mcm0pCitTSEFQRSh0aF9leHRyYWN0LCB0aF9leHRy YWN0KQogU0hBUEUoc2NhbGFyX21vdmUsIHNjYWxhcl9tb3ZlKQogU0hBUEUodnVuZGVmaW5lZCwg dnVuZGVmaW5lZCkKIFNIQVBFKG1pc2MsIG1pc2MpCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jp c2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1zaGFwZXMuaCBiL2djYy9jb25maWcvcmlzY3Yvcmlz Y3YtdmVjdG9yLWJ1aWx0aW5zLXNoYXBlcy5oCmluZGV4IGFjMmEyOGNlMDE3Li5hNzYyNGQwZmFi ZCAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtc2hh cGVzLmgKKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtc2hhcGVz LmgKQEAgLTI4LDYgKzI4LDggQEAgZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpjb25zdCB2 c2V0dmw7CiBleHRlcm4gY29uc3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0IHZzZXR2bG1heDsKIGV4 dGVybiBjb25zdCBmdW5jdGlvbl9zaGFwZSAqY29uc3QgbG9hZHN0b3JlOwogZXh0ZXJuIGNvbnN0 IGZ1bmN0aW9uX3NoYXBlICpjb25zdCBpbmRleGVkX2xvYWRzdG9yZTsKK2V4dGVybiBjb25zdCBm dW5jdGlvbl9zaGFwZSAqY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoOworZXh0ZXJuIGNvbnN0IGZ1 bmN0aW9uX3NoYXBlICpjb25zdCB0aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0aDsKIGV4dGVybiBj b25zdCBmdW5jdGlvbl9zaGFwZSAqY29uc3QgYWx1OwogZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3No YXBlICpjb25zdCBhbHVfZnJtOwogZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpjb25zdCB3 aWRlbl9hbHU7CkBAIC00MSw2ICs0Myw3IEBAIGV4dGVybiBjb25zdCBmdW5jdGlvbl9zaGFwZSAq Y29uc3QgbWFza19hbHU7CiBleHRlcm4gY29uc3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0IHJlZHVj X2FsdTsKIGV4dGVybiBjb25zdCBmdW5jdGlvbl9zaGFwZSAqY29uc3QgcmVkdWNfYWx1X2ZybTsK IGV4dGVybiBjb25zdCBmdW5jdGlvbl9zaGFwZSAqY29uc3Qgc2NhbGFyX21vdmU7CitleHRlcm4g Y29uc3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0IHRoX2V4dHJhY3Q7CiBleHRlcm4gY29uc3QgZnVu Y3Rpb25fc2hhcGUgKmNvbnN0IHZ1bmRlZmluZWQ7CiBleHRlcm4gY29uc3QgZnVuY3Rpb25fc2hh cGUgKmNvbnN0IG1pc2M7CiBleHRlcm4gY29uc3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0IHZzZXQ7 CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy5jYyBi L2djYy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLmNjCmluZGV4IDI1ZTBiNmU1 NmRlLi40NGI5ZmVjMTg5OCAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0 b3ItYnVpbHRpbnMuY2MKKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRp bnMuY2MKQEAgLTkzNCw2ICs5MzQsMzIgQEAgc3RhdGljIENPTlNURVhQUiBjb25zdCBydnZfYXJn X3R5cGVfaW5mbyBleHRfdmNyZWF0ZV9hcmdzW10KIMKgID0ge3J2dl9hcmdfdHlwZV9pbmZvIChS VlZfQkFTRV92ZWN0b3IpLArCoCDCoCDCoCBydnZfYXJnX3R5cGVfaW5mb19lbmR9OwogCisvKiBB IGxpc3Qgb2YgYXJncyBmb3IgdmVjdG9yX3R5cGUgZnVuYyAoY29uc3Qgc2NhbGFyX3R5cGUgKiwg c2l6ZV90KQorICogZnVuY3Rpb24uwqAgKi8KK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgcnZ2X2Fy Z190eXBlX2luZm8gc2NhbGFyX2NvbnN0X3B0cl9zaXplX2FyZ3NbXQorwqAgPSB7cnZ2X2FyZ190 eXBlX2luZm8gKFJWVl9CQVNFX3NjYWxhcl9jb25zdF9wdHIpLAorIMKgIMKgIHJ2dl9hcmdfdHlw ZV9pbmZvIChSVlZfQkFTRV9zaXplKSwgcnZ2X2FyZ190eXBlX2luZm9fZW5kfTsKKworLyogQSBs aXN0IG9mIGFyZ3MgZm9yIHZlY3Rvcl90eXBlIGZ1bmMgKGNvbnN0IHNjYWxhcl90eXBlICosIGVl dzhfaW5kZXhfdHlwZSkKKyAqIGZ1bmN0aW9uLsKgICovCitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0 IHJ2dl9hcmdfdHlwZV9pbmZvIHNjYWxhcl9jb25zdF9wdHJfaW5kZXhfYXJnc1tdCivCoCA9IHty dnZfYXJnX3R5cGVfaW5mbyAoUlZWX0JBU0Vfc2NhbGFyX2NvbnN0X3B0ciksCisgwqAgwqAgcnZ2 X2FyZ190eXBlX2luZm8gKFJWVl9CQVNFX3Vuc2lnbmVkX3ZlY3RvciksIHJ2dl9hcmdfdHlwZV9p bmZvX2VuZH07CisKKy8qIEEgbGlzdCBvZiBhcmdzIGZvciB2b2lkIGZ1bmMgKHNjYWxhcl90eXBl ICosIGVldzhfaW5kZXhfdHlwZSwgdmVjdG9yX3R5cGUpCisgKiBmdW5jdGlvbi7CoCAqLworc3Rh dGljIENPTlNURVhQUiBjb25zdCBydnZfYXJnX3R5cGVfaW5mbyBzY2FsYXJfcHRyX2luZGV4X2Fy Z3NbXQorwqAgPSB7cnZ2X2FyZ190eXBlX2luZm8gKFJWVl9CQVNFX3NjYWxhcl9wdHIpLAorIMKg IMKgIHJ2dl9hcmdfdHlwZV9pbmZvIChSVlZfQkFTRV91bnNpZ25lZF92ZWN0b3IpLAorIMKgIMKg IHJ2dl9hcmdfdHlwZV9pbmZvIChSVlZfQkFTRV92ZWN0b3IpLCBydnZfYXJnX3R5cGVfaW5mb19l bmR9OworCisvKiBBIGxpc3Qgb2YgYXJncyBmb3Igdm9pZCBmdW5jIChzY2FsYXJfdHlwZSAqLCBz aXplX3QsIHZlY3Rvcl90eXBlKQorICogZnVuY3Rpb24uwqAgKi8KK3N0YXRpYyBDT05TVEVYUFIg Y29uc3QgcnZ2X2FyZ190eXBlX2luZm8gc2NhbGFyX3B0cl9zaXplX2FyZ3NbXQorwqAgPSB7cnZ2 X2FyZ190eXBlX2luZm8gKFJWVl9CQVNFX3NjYWxhcl9wdHIpLAorIMKgIMKgIHJ2dl9hcmdfdHlw ZV9pbmZvIChSVlZfQkFTRV9zaXplKSwgcnZ2X2FyZ190eXBlX2luZm8gKFJWVl9CQVNFX3ZlY3Rv ciksCisgwqAgwqAgcnZ2X2FyZ190eXBlX2luZm9fZW5kfTsKKwogLyogQSBsaXN0IG9mIG5vbmUg cHJlZHMgdGhhdCB3aWxsIGJlIHJlZ2lzdGVyZWQgZm9yIGludHJpbnNpYyBmdW5jdGlvbnMuwqAg Ki8KIHN0YXRpYyBDT05TVEVYUFIgY29uc3QgcHJlZGljYXRpb25fdHlwZV9pbmRleCBub25lX3By ZWRzW10KIMKgID0ge1BSRURfVFlQRV9ub25lLCBOVU1fUFJFRF9UWVBFU307CkBAIC0xNDU1LDYg KzE0ODEsMTQgQEAgc3RhdGljIENPTlNURVhQUiBjb25zdCBydnZfb3BfaW5mbyBpdV9zaGlmdF92 dnZfb3BzCsKgIMKgIMKgIHJ2dl9hcmdfdHlwZV9pbmZvIChSVlZfQkFTRV92ZWN0b3IpLCAvKiBS ZXR1cm4gdHlwZSAqLwrCoCDCoCDCoCBzaGlmdF92dl9hcmdzIC8qIEFyZ3MgKi99OwogCisvKiBB IHN0YXRpYyBvcGVyYW5kIGluZm9ybWF0aW9uIGZvciBzY2FsYXJfdHlwZSBmdW5jICh2ZWN0b3Jf dHlwZSwgc2l6ZV90KQorICogZnVuY3Rpb24gcmVnaXN0cmF0aW9uLiAqLworc3RhdGljIENPTlNU RVhQUiBjb25zdCBydnZfb3BfaW5mbyBpdV94X3NfdV9vcHMKK8KgID0ge2l1X29wcyzCoCDCoCDC oCDCoCDCoCAvKiBUeXBlcyAqLworIMKgIMKgIE9QX1RZUEVfdngswqAgwqAgwqAgwqAgLyogU3Vm Zml4ICovCisgwqAgwqAgcnZ2X2FyZ190eXBlX2luZm8gKFJWVl9CQVNFX3NjYWxhciksIC8qIFJl dHVybiB0eXBlICovCisgwqAgwqAgdl9zaXplX2FyZ3MgLyogQXJncyAqL307CisKIC8qIEEgc3Rh dGljIG9wZXJhbmQgaW5mb3JtYXRpb24gZm9yIHZlY3Rvcl90eXBlIGZ1bmMgKHZlY3Rvcl90eXBl LCBzaXplX3QpCsKgICogZnVuY3Rpb24gcmVnaXN0cmF0aW9uLiAqLwogc3RhdGljIENPTlNURVhQ UiBjb25zdCBydnZfb3BfaW5mbyBpdV9zaGlmdF92dnhfb3BzCkBAIC0yNjM4LDYgKzI2NzIsMzgg QEAgc3RhdGljIENPTlNURVhQUiBjb25zdCBydnZfb3BfaW5mbyBhbGxfdl92Y3JlYXRlX2xtdWw0 X3gyX29wcwrCoCDCoCDCoCBydnZfYXJnX3R5cGVfaW5mbyAoUlZWX0JBU0VfdmxtdWxfZXh0X3gy KSwgLyogUmV0dXJuIHR5cGUgKi8KwqAgwqAgwqAgZXh0X3ZjcmVhdGVfYXJncyAvKiBBcmdzICov fTsKIAorLyogQSBzdGF0aWMgb3BlcmFuZCBpbmZvcm1hdGlvbiBmb3IgdmVjdG9yX3R5cGUgZnVu YyAoY29uc3Qgc2NhbGFyX3R5cGUgKiwKKyAqIHNpemVfdCkgZnVuY3Rpb24gcmVnaXN0cmF0aW9u LsKgICovCitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHJ2dl9vcF9pbmZvIGFsbF92X3NjYWxhcl9j b25zdF9wdHJfc2l6ZV9vcHMKK8KgID0ge2FsbF9vcHMswqAgwqAgwqAgLyogVHlwZXPCoCAqLwor IMKgIMKgIE9QX1RZUEVfdizCoCDCoCDCoCAvKiBTdWZmaXjCoCAqLworIMKgIMKgIHJ2dl9hcmdf dHlwZV9pbmZvIChSVlZfQkFTRV92ZWN0b3IpLCAvKiBSZXR1cm4gdHlwZcKgICovCisgwqAgwqAg c2NhbGFyX2NvbnN0X3B0cl9zaXplX2FyZ3MgLyogQXJncyAqL307CisKKy8qIEEgc3RhdGljIG9w ZXJhbmQgaW5mb3JtYXRpb24gZm9yIHZvaWQgZnVuYyAoc2NhbGFyX3R5cGUgKiwgc2l6ZV90LAor ICogdmVjdG9yX3R5cGUpIGZ1bmN0aW9uIHJlZ2lzdHJhdGlvbi7CoCAqLworc3RhdGljIENPTlNU RVhQUiBjb25zdCBydnZfb3BfaW5mbyBhbGxfdl9zY2FsYXJfcHRyX3NpemVfb3BzCivCoCA9IHth bGxfb3BzLMKgIMKgIC8qIFR5cGVzwqAgKi8KKyDCoCDCoCBPUF9UWVBFX3YswqAgwqAgLyogU3Vm Zml4wqAgKi8KKyDCoCDCoCBydnZfYXJnX3R5cGVfaW5mbyAoUlZWX0JBU0Vfdm9pZCksIC8qIFJl dHVybiB0eXBlwqAgKi8KKyDCoCDCoCBzY2FsYXJfcHRyX3NpemVfYXJncyAvKiBBcmdzICovfTsK KworLyogQSBzdGF0aWMgb3BlcmFuZCBpbmZvcm1hdGlvbiBmb3IgdmVjdG9yX3R5cGUgZnVuYyAo Y29uc3Qgc2NhbGFyX3R5cGUgKiwKKyAqIGluZGV4X3R5cGUpIGZ1bmN0aW9uIHJlZ2lzdHJhdGlv bi7CoCAqLworc3RhdGljIENPTlNURVhQUiBjb25zdCBydnZfb3BfaW5mbyBhbGxfdl9zY2FsYXJf Y29uc3RfcHRyX2luZGV4X29wcworwqAgPSB7YWxsX29wcyzCoCDCoCDCoCAvKiBUeXBlc8KgICov CisgwqAgwqAgT1BfVFlQRV92LMKgIMKgIMKgIC8qIFN1ZmZpeMKgICovCisgwqAgwqAgcnZ2X2Fy Z190eXBlX2luZm8gKFJWVl9CQVNFX3ZlY3RvciksIC8qIFJldHVybiB0eXBlwqAgKi8KKyDCoCDC oCBzY2FsYXJfY29uc3RfcHRyX2luZGV4X2FyZ3MgLyogQXJncyAqL307CisKKy8qIEEgc3RhdGlj IG9wZXJhbmQgaW5mb3JtYXRpb24gZm9yIHZvaWQgZnVuYyAoc2NhbGFyX3R5cGUgKiwgaW5kZXhf dHlwZSwKKyAqIHZlY3Rvcl90eXBlKSBmdW5jdGlvbiByZWdpc3RyYXRpb24uwqAgKi8KK3N0YXRp YyBDT05TVEVYUFIgY29uc3QgcnZ2X29wX2luZm8gYWxsX3Zfc2NhbGFyX3B0cl9pbmRleF9vcHMK K8KgID0ge2FsbF9vcHMswqAgwqAgLyogVHlwZXPCoCAqLworIMKgIMKgIE9QX1RZUEVfdizCoCDC oCAvKiBTdWZmaXjCoCAqLworIMKgIMKgIHJ2dl9hcmdfdHlwZV9pbmZvIChSVlZfQkFTRV92b2lk KSwgLyogUmV0dXJuIHR5cGXCoCAqLworIMKgIMKgIHNjYWxhcl9wdHJfaW5kZXhfYXJncyAvKiBB cmdzICovfTsKKwogLyogQSBzdGF0aWMgb3BlcmFuZCBpbmZvcm1hdGlvbiBmb3IgdmVjdG9yX3R5 cGUgZnVuYyAodmVjdG9yX3R5cGUpLgrCoCDCoCBTb21lIGlucyBqdXN0IHN1cHBvcnRzIFNFVz0z Miwgc3VjaCBhcyBjcnlwdG8gdmVjdG9sIFp2a2cgZXh0ZW5zaW9uLgrCoCAqIGZ1bmN0aW9uIHJl Z2lzdHJhdGlvbi7CoCAqLwpAQCAtMjgxNiw2ICsyODgyLDEwIEBAIHN0YXRpYyBmdW5jdGlvbl9n cm91cF9pbmZvIGZ1bmN0aW9uX2dyb3Vwc1tdID0gewogI2RlZmluZSBERUZfUlZWX0ZVTkNUSU9O KE5BTUUsIFNIQVBFLCBQUkVEUywgT1BTX0lORk8pIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIFwKIMKgIHsjTkFNRSwgJmJhc2VzOjpOQU1FLCAmc2hhcGVzOjpTSEFQRSwgUFJF RFMsIE9QU19JTkZPLCBSRVFVSVJFRF9FWFRFTlNJT05TfSwKICNpbmNsdWRlICJyaXNjdi12ZWN0 b3ItYnVpbHRpbnMtZnVuY3Rpb25zLmRlZiIKKyN1bmRlZiBERUZfUlZWX0ZVTkNUSU9OCisjZGVm aW5lIERFRl9SVlZfRlVOQ1RJT04oTkFNRSwgU0hBUEUsIFBSRURTLCBPUFNfSU5GTykgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXAorwqAgeyNOQU1FLCAmYmFzZXM6Ok5BTUUs ICZzaGFwZXM6OlNIQVBFLCBQUkVEUywgT1BTX0lORk8sIFJFUVVJUkVEX0VYVEVOU0lPTlN9LAor I2luY2x1ZGUgInRoZWFkLXZlY3Rvci1idWlsdGlucy1mdW5jdGlvbnMuZGVmIgogfTsKIAogLyog VGhlIFJWViB0eXBlcywgd2l0aCB0aGVpciBidWlsdC1pbgpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZp Zy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMuaCBiL2djYy9jb25maWcvcmlzY3YvcmlzY3Yt dmVjdG9yLWJ1aWx0aW5zLmgKaW5kZXggNTRjODgyNGZmOTIuLmE4ZWUzOWEzY2IyIDEwMDY0NAot LS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy5oCisrKyBiL2djYy9j b25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBz dGF0aWMgY29uc3QgdW5zaWduZWQgaW50IENQX1dSSVRFX0NTUiA9IDFVIDw8IDU7CiBlbnVtIHJl cXVpcmVkX2V4dAogewogwqAgVkVDVE9SX0VYVCwgwqAgLyogVmVjdG9yIGV4dGVuc2lvbiAqLwor wqAgWFRIRUFEVkVDVE9SX0VYVCwgwqAgLyogWFRoZWFkVmVjdG9yIGV4dGVuc2lvbiAqLwogwqAg WlZCQl9FWFQswqAgwqAgLyogQ3J5dG8gdmVjdG9yIFp2YmIgc3ViLWV4dCAqLwogwqAgWlZCQl9P Ul9aVktCX0VYVCwgLyogQ3J5dG8gdmVjdG9yIFp2YmIgb3IgenZrYiBzdWItZXh0ICovCiDCoCBa VkJDX0VYVCzCoCDCoCAvKiBDcnlwdG8gdmVjdG9yIFp2YmMgc3ViLWV4dCAqLwpAQCAtMjM0LDYg KzIzNSw4IEBAIHN0cnVjdCBmdW5jdGlvbl9ncm91cF9pbmZvCiDCoCDCoCB7CiDCoCDCoCDCoCBj YXNlIFZFQ1RPUl9FWFQ6CiDCoCDCoCDCoCDCoCByZXR1cm4gVEFSR0VUX1ZFQ1RPUjsKK8KgIMKg IMKgIGNhc2UgWFRIRUFEVkVDVE9SX0VYVDoKKyByZXR1cm4gVEFSR0VUX1hUSEVBRFZFQ1RPUjsK IMKgIMKgIMKgIGNhc2UgWlZCQl9FWFQ6CiDCoCDCoCDCoCDCoCByZXR1cm4gVEFSR0VUX1pWQkI7 CiDCoCDCoCDCoCBjYXNlIFpWQkJfT1JfWlZLQl9FWFQ6CmRpZmYgLS1naXQgYS9nY2MvY29uZmln L3Jpc2N2L3QtcmlzY3YgYi9nY2MvY29uZmlnL3Jpc2N2L3QtcmlzY3YKaW5kZXggMzJkZTZiODUx YzEuLjM4NDk0MzIwZDhiIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3QtcmlzY3YKKysr IGIvZ2NjL2NvbmZpZy9yaXNjdi90LXJpc2N2CkBAIC0xLDYgKzEsNyBAQAogUklTQ1ZfQlVJTFRJ TlNfSCA9ICQoc3JjZGlyKS9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLmggXArC oCDCoCDCoCAkKHNyY2RpcikvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy5kZWYg XArCoCDCoCDCoCAkKHNyY2RpcikvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1m dW5jdGlvbnMuZGVmIFwKKyDCoCDCoCDCoCAkKHNyY2RpcikvY29uZmlnL3Jpc2N2L3RoZWFkLXZl Y3Rvci1idWlsdGlucy1mdW5jdGlvbnMuZGVmIFwKwqAgwqAgwqAgcmlzY3YtdmVjdG9yLXR5cGUt aW5kZXhlci5nZW4uZGVmCiAKIHJpc2N2LWJ1aWx0aW5zLm86ICQoc3JjZGlyKS9jb25maWcvcmlz Y3YvcmlzY3YtYnVpbHRpbnMuY2MgJChDT05GSUdfSCkgXApkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZp Zy9yaXNjdi90aGVhZC12ZWN0b3ItYnVpbHRpbnMtZnVuY3Rpb25zLmRlZiBiL2djYy9jb25maWcv cmlzY3YvdGhlYWQtdmVjdG9yLWJ1aWx0aW5zLWZ1bmN0aW9ucy5kZWYKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZkM2JhMjliYWU5Ci0tLSAvZGV2L251bGwKKysrIGIv Z2NjL2NvbmZpZy9yaXNjdi90aGVhZC12ZWN0b3ItYnVpbHRpbnMtZnVuY3Rpb25zLmRlZgpAQCAt MCwwICsxLDM5IEBACisjaWZuZGVmIERFRl9SVlZfRlVOQ1RJT04KKyNkZWZpbmUgREVGX1JWVl9G VU5DVElPTihOQU1FLCBTSEFQRSwgUFJFRFMsIE9QU19JTkZPKQorI2VuZGlmCisKKyNkZWZpbmUg UkVRVUlSRURfRVhURU5TSU9OUyBYVEhFQURWRUNUT1JfRVhUCitERUZfUlZWX0ZVTkNUSU9OICh2 bGIsIHRoX2xvYWRzdG9yZV93aWR0aCwgZnVsbF9wcmVkcywgYWxsX3Zfc2NhbGFyX2NvbnN0X3B0 cl9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2bGgsIHRoX2xvYWRzdG9yZV93aWR0aCwgZnVsbF9w cmVkcywgYWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2bHcs IHRoX2xvYWRzdG9yZV93aWR0aCwgZnVsbF9wcmVkcywgYWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9v cHMpCitERUZfUlZWX0ZVTkNUSU9OICh2bGJ1LCB0aF9sb2Fkc3RvcmVfd2lkdGgsIGZ1bGxfcHJl ZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodmxodSwg dGhfbG9hZHN0b3JlX3dpZHRoLCBmdWxsX3ByZWRzLCBhbGxfdl9zY2FsYXJfY29uc3RfcHRyX29w cykKK0RFRl9SVlZfRlVOQ1RJT04gKHZsd3UsIHRoX2xvYWRzdG9yZV93aWR0aCwgZnVsbF9wcmVk cywgYWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2c2IsIHRo X2xvYWRzdG9yZV93aWR0aCwgbm9uZV9tX3ByZWRzLCBhbGxfdl9zY2FsYXJfcHRyX29wcykKK0RF Rl9SVlZfRlVOQ1RJT04gKHZzaCwgdGhfbG9hZHN0b3JlX3dpZHRoLCBub25lX21fcHJlZHMsIGFs bF92X3NjYWxhcl9wdHJfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodnN3LCB0aF9sb2Fkc3RvcmVf d2lkdGgsIG5vbmVfbV9wcmVkcywgYWxsX3Zfc2NhbGFyX3B0cl9vcHMpCitERUZfUlZWX0ZVTkNU SU9OICh2bHNiLCB0aF9sb2Fkc3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9j b25zdF9wdHJfc2l6ZV9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2bHNoLCB0aF9sb2Fkc3RvcmVf d2lkdGgsIGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfc2l6ZV9vcHMpCitERUZf UlZWX0ZVTkNUSU9OICh2bHN3LCB0aF9sb2Fkc3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFsbF92 X3NjYWxhcl9jb25zdF9wdHJfc2l6ZV9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2bHNidSwgdGhf bG9hZHN0b3JlX3dpZHRoLCBmdWxsX3ByZWRzLCBhbGxfdl9zY2FsYXJfY29uc3RfcHRyX3NpemVf b3BzKQorREVGX1JWVl9GVU5DVElPTiAodmxzaHUsIHRoX2xvYWRzdG9yZV93aWR0aCwgZnVsbF9w cmVkcywgYWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9zaXplX29wcykKK0RFRl9SVlZfRlVOQ1RJT04g KHZsc3d1LCB0aF9sb2Fkc3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25z dF9wdHJfc2l6ZV9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2c3NiLCB0aF9sb2Fkc3RvcmVfd2lk dGgsIG5vbmVfbV9wcmVkcywgYWxsX3Zfc2NhbGFyX3B0cl9zaXplX29wcykKK0RFRl9SVlZfRlVO Q1RJT04gKHZzc2gsIHRoX2xvYWRzdG9yZV93aWR0aCwgbm9uZV9tX3ByZWRzLCBhbGxfdl9zY2Fs YXJfcHRyX3NpemVfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodnNzdywgdGhfbG9hZHN0b3JlX3dp ZHRoLCBub25lX21fcHJlZHMsIGFsbF92X3NjYWxhcl9wdHJfc2l6ZV9vcHMpCitERUZfUlZWX0ZV TkNUSU9OICh2bHhiLCB0aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0aCwgZnVsbF9wcmVkcywgYWxs X3Zfc2NhbGFyX2NvbnN0X3B0cl9pbmRleF9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2bHhoLCB0 aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0aCwgZnVsbF9wcmVkcywgYWxsX3Zfc2NhbGFyX2NvbnN0 X3B0cl9pbmRleF9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2bHh3LCB0aF9pbmRleGVkX2xvYWRz dG9yZV93aWR0aCwgZnVsbF9wcmVkcywgYWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9pbmRleF9vcHMp CitERUZfUlZWX0ZVTkNUSU9OICh2bHhidSwgdGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGgsIGZ1 bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfaW5kZXhfb3BzKQorREVGX1JWVl9GVU5D VElPTiAodmx4aHUsIHRoX2luZGV4ZWRfbG9hZHN0b3JlX3dpZHRoLCBmdWxsX3ByZWRzLCBhbGxf dl9zY2FsYXJfY29uc3RfcHRyX2luZGV4X29wcykKK0RFRl9SVlZfRlVOQ1RJT04gKHZseHd1LCB0 aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0aCwgZnVsbF9wcmVkcywgYWxsX3Zfc2NhbGFyX2NvbnN0 X3B0cl9pbmRleF9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2c3hiLCB0aF9pbmRleGVkX2xvYWRz dG9yZV93aWR0aCwgbm9uZV9tX3ByZWRzLCBhbGxfdl9zY2FsYXJfcHRyX2luZGV4X29wcykKK0RF Rl9SVlZfRlVOQ1RJT04gKHZzeGgsIHRoX2luZGV4ZWRfbG9hZHN0b3JlX3dpZHRoLCBub25lX21f cHJlZHMsIGFsbF92X3NjYWxhcl9wdHJfaW5kZXhfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodnN4 dywgdGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGgsIG5vbmVfbV9wcmVkcywgYWxsX3Zfc2NhbGFy X3B0cl9pbmRleF9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2c3V4YiwgdGhfaW5kZXhlZF9sb2Fk c3RvcmVfd2lkdGgsIG5vbmVfbV9wcmVkcywgYWxsX3Zfc2NhbGFyX3B0cl9pbmRleF9vcHMpCitE RUZfUlZWX0ZVTkNUSU9OICh2c3V4aCwgdGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGgsIG5vbmVf bV9wcmVkcywgYWxsX3Zfc2NhbGFyX3B0cl9pbmRleF9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2 c3V4dywgdGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGgsIG5vbmVfbV9wcmVkcywgYWxsX3Zfc2Nh bGFyX3B0cl9pbmRleF9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2ZXh0X3hfdiwgdGhfZXh0cmFj dCwgbm9uZV9wcmVkcywgaXVfeF9zX3Vfb3BzKQorI3VuZGVmIFJFUVVJUkVEX0VYVEVOU0lPTlMK KworI3VuZGVmIERFRl9SVlZfRlVOQ1RJT04KZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3Yv dGhlYWQtdmVjdG9yLm1kIGIvZ2NjL2NvbmZpZy9yaXNjdi90aGVhZC12ZWN0b3IubWQKaW5kZXgg Njk2YjgxNTI1MmQuLjBmMzcwMGQ5MjY5IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Ro ZWFkLXZlY3Rvci5tZAorKysgYi9nY2MvY29uZmlnL3Jpc2N2L3RoZWFkLXZlY3Rvci5tZApAQCAt MSw3ICsxLDk1IEBACiAoZGVmaW5lX2NfZW51bSAidW5zcGVjIiBbCivCoCBVTlNQRUNfVEhfVkxC CivCoCBVTlNQRUNfVEhfVkxCVQorwqAgVU5TUEVDX1RIX1ZMSAorwqAgVU5TUEVDX1RIX1ZMSFUK K8KgIFVOU1BFQ19USF9WTFcKK8KgIFVOU1BFQ19USF9WTFdVCisKK8KgIFVOU1BFQ19USF9WTFNC CivCoCBVTlNQRUNfVEhfVkxTQlUKK8KgIFVOU1BFQ19USF9WTFNICivCoCBVTlNQRUNfVEhfVkxT SFUKK8KgIFVOU1BFQ19USF9WTFNXCivCoCBVTlNQRUNfVEhfVkxTV1UKKworwqAgVU5TUEVDX1RI X1ZMWEIKK8KgIFVOU1BFQ19USF9WTFhCVQorwqAgVU5TUEVDX1RIX1ZMWEgKK8KgIFVOU1BFQ19U SF9WTFhIVQorwqAgVU5TUEVDX1RIX1ZMWFcKK8KgIFVOU1BFQ19USF9WTFhXVQorCivCoCBVTlNQ RUNfVEhfVlNVWEIKK8KgIFVOU1BFQ19USF9WU1VYSAorwqAgVU5TUEVDX1RIX1ZTVVhXCisKIMKg IFVOU1BFQ19USF9WV0xEU1QKIF0pCiAKKyhkZWZpbmVfaW50X2l0ZXJhdG9yIFVOU1BFQ19USF9W TE1FTV9PUCBbCivCoCBVTlNQRUNfVEhfVkxCIFVOU1BFQ19USF9WTEJVCivCoCBVTlNQRUNfVEhf VkxIIFVOU1BFQ19USF9WTEhVCivCoCBVTlNQRUNfVEhfVkxXIFVOU1BFQ19USF9WTFdVCitdKQor CisoZGVmaW5lX2ludF9pdGVyYXRvciBVTlNQRUNfVEhfVkxTTUVNX09QIFsKK8KgIFVOU1BFQ19U SF9WTFNCIFVOU1BFQ19USF9WTFNCVQorwqAgVU5TUEVDX1RIX1ZMU0ggVU5TUEVDX1RIX1ZMU0hV CivCoCBVTlNQRUNfVEhfVkxTVyBVTlNQRUNfVEhfVkxTV1UKK10pCisKKyhkZWZpbmVfaW50X2l0 ZXJhdG9yIFVOU1BFQ19USF9WTFhNRU1fT1AgWworwqAgVU5TUEVDX1RIX1ZMWEIgVU5TUEVDX1RI X1ZMWEJVCivCoCBVTlNQRUNfVEhfVkxYSCBVTlNQRUNfVEhfVkxYSFUKK8KgIFVOU1BFQ19USF9W TFhXIFVOU1BFQ19USF9WTFhXVQorXSkKKworKGRlZmluZV9pbnRfYXR0ciB2bG1lbV9vcF9hdHRy IFsKK8KgIChVTlNQRUNfVEhfVkxCICJiIikgKFVOU1BFQ19USF9WTEJVICJidSIpCivCoCAoVU5T UEVDX1RIX1ZMSCAiaCIpIChVTlNQRUNfVEhfVkxIVSAiaHUiKQorwqAgKFVOU1BFQ19USF9WTFcg InciKSAoVU5TUEVDX1RIX1ZMV1UgInd1IikKK8KgIChVTlNQRUNfVEhfVkxTQiAiYiIpIChVTlNQ RUNfVEhfVkxTQlUgImJ1IikKK8KgIChVTlNQRUNfVEhfVkxTSCAiaCIpIChVTlNQRUNfVEhfVkxT SFUgImh1IikKK8KgIChVTlNQRUNfVEhfVkxTVyAidyIpIChVTlNQRUNfVEhfVkxTV1UgInd1IikK K8KgIChVTlNQRUNfVEhfVkxYQiAiYiIpIChVTlNQRUNfVEhfVkxYQlUgImJ1IikKK8KgIChVTlNQ RUNfVEhfVkxYSCAiaCIpIChVTlNQRUNfVEhfVkxYSFUgImh1IikKK8KgIChVTlNQRUNfVEhfVkxY VyAidyIpIChVTlNQRUNfVEhfVkxYV1UgInd1IikKK8KgIChVTlNQRUNfVEhfVlNVWEIgImIiKQor wqAgKFVOU1BFQ19USF9WU1VYSCAiaCIpCivCoCAoVU5TUEVDX1RIX1ZTVVhXICJ3IikKK10pCisK KyhkZWZpbmVfaW50X2F0dHIgdmxtZW1fb3JkZXJfYXR0ciBbCivCoCAoVU5TUEVDX1RIX1ZMWEIg IiIpCivCoCAoVU5TUEVDX1RIX1ZMWEggIiIpCivCoCAoVU5TUEVDX1RIX1ZMWFcgIiIpCivCoCAo VU5TUEVDX1RIX1ZTVVhCICJ1IikKK8KgIChVTlNQRUNfVEhfVlNVWEggInUiKQorwqAgKFVOU1BF Q19USF9WU1VYVyAidSIpCitdKQorCisoZGVmaW5lX2ludF9pdGVyYXRvciBVTlNQRUNfVEhfVlNN RU1fT1AgWworwqAgVU5TUEVDX1RIX1ZMQgorwqAgVU5TUEVDX1RIX1ZMSAorwqAgVU5TUEVDX1RI X1ZMVworXSkKKworKGRlZmluZV9pbnRfaXRlcmF0b3IgVU5TUEVDX1RIX1ZTU01FTV9PUCBbCivC oCBVTlNQRUNfVEhfVkxTQgorwqAgVU5TUEVDX1RIX1ZMU0gKK8KgIFVOU1BFQ19USF9WTFNXCitd KQorCisoZGVmaW5lX2ludF9pdGVyYXRvciBVTlNQRUNfVEhfVlNYTUVNX09QIFsKK8KgIFVOU1BF Q19USF9WTFhCCivCoCBVTlNQRUNfVEhfVkxYSAorwqAgVU5TUEVDX1RIX1ZMWFcKK8KgIFVOU1BF Q19USF9WU1VYQgorwqAgVU5TUEVDX1RIX1ZTVVhICivCoCBVTlNQRUNfVEhfVlNVWFcKK10pCisK IChkZWZpbmVfbW9kZV9pdGVyYXRvciBWX1ZMU19WVCBbViBWTFMgVlRdKQogKGRlZmluZV9tb2Rl X2l0ZXJhdG9yIFZfVkJfVkxTX1ZUIFtWIFZCIFZMUyBWVF0pCiAKQEAgLTEwMCwzICsxODgsMTY4 IEBACiDCoCB9CiDCoCBbKHNldF9hdHRyICJ0eXBlIiAidmxkbSx2c3RtLHZtYWx1LHZtYWx1LHZt YWx1IikKwqAgwqAgKHNldF9hdHRyICJtb2RlIiAiPE1PREU+IildKQorCisoZGVmaW5lX2V4cGFu ZCAiQHByZWRfbW92X3dpZHRoPHZsbWVtX29wX2F0dHI+PG1vZGU+IgorwqAgWyhzZXQgKG1hdGNo X29wZXJhbmQ6Vl9WTFMgMCAibm9uaW1tZWRpYXRlX29wZXJhbmQiKQorwqAgwqAgKGlmX3RoZW5f ZWxzZTpWX1ZMUworwqAgwqAgwqAgKHVuc3BlYzo8Vk0+CisgWyhtYXRjaF9vcGVyYW5kOjxWTT4g MSAidmVjdG9yX21hc2tfb3BlcmFuZCIpCivCoCAobWF0Y2hfb3BlcmFuZCA0ICJ2ZWN0b3JfbGVu Z3RoX29wZXJhbmQiKQorwqAgKG1hdGNoX29wZXJhbmQgNSAiY29uc3RfaW50X29wZXJhbmQiKQor wqAgKG1hdGNoX29wZXJhbmQgNiAiY29uc3RfaW50X29wZXJhbmQiKQorwqAgKG1hdGNoX29wZXJh bmQgNyAiY29uc3RfaW50X29wZXJhbmQiKQorwqAgKHJlZzpTSSBWTF9SRUdOVU0pCivCoCAocmVn OlNJIFZUWVBFX1JFR05VTSldIFVOU1BFQ19USF9WTE1FTV9PUCkKK8KgIMKgIMKgIChtYXRjaF9v cGVyYW5kOlZfVkxTIDMgInZlY3Rvcl9tb3ZlX29wZXJhbmQiKQorwqAgwqAgwqAgKG1hdGNoX29w ZXJhbmQ6Vl9WTFMgMiAidmVjdG9yX21lcmdlX29wZXJhbmQiKSkpXQorwqAgIlRBUkdFVF9YVEhF QURWRUNUT1IiCivCoCB7fSkKKworKGRlZmluZV9pbnNuX2FuZF9zcGxpdCAiKnByZWRfbW92X3dp ZHRoPHZsbWVtX29wX2F0dHI+PG1vZGU+IgorwqAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Vl9WTFMg MCAibm9uaW1tZWRpYXRlX29wZXJhbmQiIMKgIMKgICI9dnIswqAgwqAgdnIswqAgwqAgdmQsIMKg IMKgIG0swqAgwqAgdnIswqAgwqAgdnIiKQorwqAgwqAgKGlmX3RoZW5fZWxzZTpWX1ZMUworwqAg wqAgwqAgKHVuc3BlYzo8Vk0+CisgWyhtYXRjaF9vcGVyYW5kOjxWTT4gMSAidmVjdG9yX21hc2tf b3BlcmFuZCLCoCDCoCAidm1XYzEsIMKgIFdjMSzCoCDCoCB2bSwgdm1XYzEsIMKgIFdjMSwgwqAg V2MxIikKK8KgIChtYXRjaF9vcGVyYW5kIDQgInZlY3Rvcl9sZW5ndGhfb3BlcmFuZCIgwqAgwqAg wqAgIiDCoCBySyzCoCDCoCBySyzCoCDCoCBySyzCoCDCoCBySyzCoCDCoCBySyzCoCDCoCBySyIp CivCoCAobWF0Y2hfb3BlcmFuZCA1ICJjb25zdF9pbnRfb3BlcmFuZCLCoCDCoCAiwqAgwqAgaSwg wqAgwqAgaSwgwqAgwqAgaSwgwqAgwqAgaSwgwqAgwqAgaSwgwqAgwqAgaSIpCivCoCAobWF0Y2hf b3BlcmFuZCA2ICJjb25zdF9pbnRfb3BlcmFuZCLCoCDCoCAiwqAgwqAgaSwgwqAgwqAgaSwgwqAg wqAgaSwgwqAgwqAgaSwgwqAgwqAgaSwgwqAgwqAgaSIpCivCoCAobWF0Y2hfb3BlcmFuZCA3ICJj b25zdF9pbnRfb3BlcmFuZCLCoCDCoCAiwqAgwqAgaSwgwqAgwqAgaSwgwqAgwqAgaSwgwqAgwqAg aSwgwqAgwqAgaSwgwqAgwqAgaSIpCivCoCAocmVnOlNJIFZMX1JFR05VTSkKK8KgIChyZWc6U0kg VlRZUEVfUkVHTlVNKV0gVU5TUEVDX1RIX1ZMTUVNX09QKQorwqAgwqAgwqAgKG1hdGNoX29wZXJh bmQ6Vl9WTFMgMyAicmVnX29yX21lbV9vcGVyYW5kIiDCoCDCoCDCoCAiwqAgwqAgbSwgwqAgwqAg bSwgwqAgwqAgbSzCoCDCoCB2cizCoCDCoCB2cizCoCDCoCB2ciIpCivCoCDCoCDCoCAobWF0Y2hf b3BlcmFuZDpWX1ZMUyAyICJ2ZWN0b3JfbWVyZ2Vfb3BlcmFuZCIgwqAgwqAgIsKgIMKgIDAswqAg wqAgdnUswqAgwqAgdnUswqAgwqAgdnUswqAgwqAgdnUsIMKgIMKgIDAiKSkpXQorwqAgIihUQVJH RVRfWFRIRUFEVkVDVE9SCivCoCDCoCAmJiAocmVnaXN0ZXJfb3BlcmFuZCAob3BlcmFuZHNbMF0s IDxNT0RFPm1vZGUpCisgfHwgcmVnaXN0ZXJfb3BlcmFuZCAob3BlcmFuZHNbM10sIDxNT0RFPm1v ZGUpKSkiCivCoCAiQAorIMKgIHZsPHZsbWVtX29wX2F0dHI+LnZcdCUwLCUzJXAxCisgwqAgdmw8 dmxtZW1fb3BfYXR0cj4udlx0JTAsJTMKKyDCoCB2bDx2bG1lbV9vcF9hdHRyPi52XHQlMCwlMywl MS50CisgwqAgdnM8dmxtZW1fb3BfYXR0cj4udlx0JTMsJTAlcDEKKyDCoCB2bXYudi52XHQlMCwl MworIMKgIHZtdi52LnZcdCUwLCUzIgorwqAgIiYmIHJlZ2lzdGVyX29wZXJhbmQgKG9wZXJhbmRz WzBdLCA8TU9ERT5tb2RlKQorIMKgICYmIHJlZ2lzdGVyX29wZXJhbmQgKG9wZXJhbmRzWzNdLCA8 TU9ERT5tb2RlKQorIMKgICYmIHNhdGlzZmllc19jb25zdHJhaW50X3Z1IChvcGVyYW5kc1syXSkK KyDCoCAmJiBJTlRWQUwgKG9wZXJhbmRzWzddKSA9PSByaXNjdl92ZWN0b3I6OlZMTUFYIgorwqAg WyhzZXQgKG1hdGNoX2R1cCAwKSAobWF0Y2hfZHVwIDMpKV0KK8KgICIiCivCoCBbKHNldF9hdHRy ICJ0eXBlIiAidmxkZSx2bGRlLHZsZGUsdnN0ZSx2aW1vdix2aW1vdiIpCisgwqAgKHNldF9hdHRy ICJtb2RlIiAiPE1PREU+IildKQorCisoZGVmaW5lX2luc24gIkBwcmVkX3N0b3JlX3dpZHRoPHZs bWVtX29wX2F0dHI+PG1vZGU+IgorwqAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkkgMCAibWVtb3J5 X29wZXJhbmQiIMKgICIrbSIpCisgKGlmX3RoZW5fZWxzZTpWSQorIMKgICh1bnNwZWM6PFZNPgor IMKgIMKgIFsobWF0Y2hfb3BlcmFuZDo8Vk0+IDEgInZlY3Rvcl9tYXNrX29wZXJhbmQiICJ2bVdj MSIpCivCoCDCoCDCoCAobWF0Y2hfb3BlcmFuZCAzICJ2ZWN0b3JfbGVuZ3RoX29wZXJhbmQiwqAg wqAgIiDCoCBySyIpCivCoCDCoCDCoCAobWF0Y2hfb3BlcmFuZCA0ICJjb25zdF9pbnRfb3BlcmFu ZCIgIsKgIMKgIGkiKQorwqAgwqAgwqAgKHJlZzpTSSBWTF9SRUdOVU0pCivCoCDCoCDCoCAocmVn OlNJIFZUWVBFX1JFR05VTSldIFVOU1BFQ19USF9WU01FTV9PUCkKKyDCoCAobWF0Y2hfb3BlcmFu ZDpWSSAyICJyZWdpc3Rlcl9vcGVyYW5kIsKgICLCoCDCoCB2ciIpCisgwqAgKG1hdGNoX2R1cCAw KSkpXQorwqAgIlRBUkdFVF9YVEhFQURWRUNUT1IiCivCoCAidnM8dmxtZW1fb3BfYXR0cj4udlx0 JTIsJTAlcDEiCivCoCBbKHNldF9hdHRyICJ0eXBlIiAidnN0ZSIpCisgwqAgKHNldF9hdHRyICJt b2RlIiAiPE1PREU+IikKKyDCoCAoc2V0IChhdHRyICJhdmxfdHlwZV9pZHgiKSAoY29uc3RfaW50 IDQpKQorIMKgIChzZXRfYXR0ciAidmxfb3BfaWR4IiAiMyIpXSkKKworKGRlZmluZV9pbnNuICJA cHJlZF9zdHJpZGVkX2xvYWRfd2lkdGg8dmxtZW1fb3BfYXR0cj48bW9kZT4iCivCoCBbKHNldCAo bWF0Y2hfb3BlcmFuZDpWSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiDCoCDCoCDCoCAiPXZyLMKgIMKg IHZyLMKgIMKgIHZkIikKKyAoaWZfdGhlbl9lbHNlOlZJCisgwqAgKHVuc3BlYzo8Vk0+CisgwqAg wqAgWyhtYXRjaF9vcGVyYW5kOjxWTT4gMSAidmVjdG9yX21hc2tfb3BlcmFuZCIgInZtV2MxLCDC oCBXYzEswqAgwqAgdm0iKQorwqAgwqAgwqAgKG1hdGNoX29wZXJhbmQgNSAidmVjdG9yX2xlbmd0 aF9vcGVyYW5kIsKgIMKgICIgwqAgcksswqAgwqAgcksswqAgwqAgcksiKQorwqAgwqAgwqAgKG1h dGNoX29wZXJhbmQgNiAiY29uc3RfaW50X29wZXJhbmQiICLCoCDCoCBpLCDCoCDCoCBpLCDCoCDC oCBpIikKK8KgIMKgIMKgIChtYXRjaF9vcGVyYW5kIDcgImNvbnN0X2ludF9vcGVyYW5kIiAiwqAg wqAgaSwgwqAgwqAgaSwgwqAgwqAgaSIpCivCoCDCoCDCoCAobWF0Y2hfb3BlcmFuZCA4ICJjb25z dF9pbnRfb3BlcmFuZCIgIsKgIMKgIGksIMKgIMKgIGksIMKgIMKgIGkiKQorwqAgwqAgwqAgKHJl ZzpTSSBWTF9SRUdOVU0pCivCoCDCoCDCoCAocmVnOlNJIFZUWVBFX1JFR05VTSldIFVOU1BFQ19U SF9WTFNNRU1fT1ApCisgwqAgKHVuc3BlYzpWSQorIMKgIMKgIFsobWF0Y2hfb3BlcmFuZDpWSSAz ICJtZW1vcnlfb3BlcmFuZCLCoCAiwqAgwqAgbSwgwqAgwqAgbSwgwqAgwqAgbSIpCivCoCDCoCDC oCAobWF0Y2hfb3BlcmFuZCA0ICJwbW9kZV9yZWdfb3JfMF9vcGVyYW5kIiDCoCAiIMKgIHJKLMKg IMKgIHJKLMKgIMKgIHJKIildIFVOU1BFQ19USF9WTFNNRU1fT1ApCisgwqAgKG1hdGNoX29wZXJh bmQ6VkkgMiAidmVjdG9yX21lcmdlX29wZXJhbmQiwqAgwqAgwqAgIsKgIMKgIDAswqAgwqAgdnUs wqAgwqAgdnUiKSkpXQorwqAgIlRBUkdFVF9YVEhFQURWRUNUT1IiCivCoCAidmxzPHZsbWVtX29w X2F0dHI+LnZcdCUwLCUzLCV6NCVwMSIKK8KgIFsoc2V0X2F0dHIgInR5cGUiICJ2bGRzIikKKyDC oCAoc2V0X2F0dHIgIm1vZGUiICI8TU9ERT4iKV0pCisKKyhkZWZpbmVfaW5zbiAiQHByZWRfc3Ry aWRlZF9zdG9yZV93aWR0aDx2bG1lbV9vcF9hdHRyPjxtb2RlPiIKK8KgIFsoc2V0IChtYXRjaF9v cGVyYW5kOlZJIDAgIm1lbW9yeV9vcGVyYW5kIiDCoCAiK20iKQorIChpZl90aGVuX2Vsc2U6VkkK KyDCoCAodW5zcGVjOjxWTT4KKyDCoCDCoCBbKG1hdGNoX29wZXJhbmQ6PFZNPiAxICJ2ZWN0b3Jf bWFza19vcGVyYW5kIiAidm1XYzEiKQorwqAgwqAgwqAgKG1hdGNoX29wZXJhbmQgNCAidmVjdG9y X2xlbmd0aF9vcGVyYW5kIsKgIMKgICIgwqAgcksiKQorwqAgwqAgwqAgKG1hdGNoX29wZXJhbmQg NSAiY29uc3RfaW50X29wZXJhbmQiICLCoCDCoCBpIikKK8KgIMKgIMKgIChyZWc6U0kgVkxfUkVH TlVNKQorwqAgwqAgwqAgKHJlZzpTSSBWVFlQRV9SRUdOVU0pXSBVTlNQRUNfVEhfVlNTTUVNX09Q KQorIMKgICh1bnNwZWM6VkkKKyDCoCDCoCBbKG1hdGNoX29wZXJhbmQgMiAicG1vZGVfcmVnX29y XzBfb3BlcmFuZCIgwqAgIiDCoCBySiIpCivCoCDCoCDCoCAobWF0Y2hfb3BlcmFuZDpWSSAzICJy ZWdpc3Rlcl9vcGVyYW5kIiDCoCDCoCDCoCAiIMKgIHZyIildIFVOU1BFQ19USF9WU1NNRU1fT1Ap CisgwqAgKG1hdGNoX2R1cCAwKSkpXQorwqAgIlRBUkdFVF9YVEhFQURWRUNUT1IiCivCoCAidnNz PHZsbWVtX29wX2F0dHI+LnZcdCUzLCUwLCV6MiVwMSIKK8KgIFsoc2V0X2F0dHIgInR5cGUiICJ2 c3RzIikKKyDCoCAoc2V0X2F0dHIgIm1vZGUiICI8TU9ERT4iKQorIMKgIChzZXQgKGF0dHIgImF2 bF90eXBlX2lkeCIpIChjb25zdF9pbnQgNSkpXSkKKworKGRlZmluZV9pbnNuICJAcHJlZF9pbmRl eGVkX2xvYWRfd2lkdGg8dmxtZW1fb3BfYXR0cj48bW9kZT4iCivCoCBbKHNldCAobWF0Y2hfb3Bl cmFuZDpWSSAwICJyZWdpc3Rlcl9vcGVyYW5kIsKgIMKgIMKgICI9dmQsIHZyLHZkLCB2ciIpCisg KGlmX3RoZW5fZWxzZTpWSQorIMKgICh1bnNwZWM6PFZNPgorIMKgIMKgIFsobWF0Y2hfb3BlcmFu ZDo8Vk0+IDEgInZlY3Rvcl9tYXNrX29wZXJhbmQiwqAgIiB2bSxXYzEsdm0sV2MxIikKK8KgIMKg IMKgIChtYXRjaF9vcGVyYW5kIDUgInZlY3Rvcl9sZW5ndGhfb3BlcmFuZCIgwqAgwqAgIiBySywg ckssckssIHJLIikKK8KgIMKgIMKgIChtYXRjaF9vcGVyYW5kIDYgImNvbnN0X2ludF9vcGVyYW5k IsKgICLCoCBpLMKgIGksIGkswqAgaSIpCivCoCDCoCDCoCAobWF0Y2hfb3BlcmFuZCA3ICJjb25z dF9pbnRfb3BlcmFuZCLCoCAiwqAgaSzCoCBpLCBpLMKgIGkiKQorwqAgwqAgwqAgKG1hdGNoX29w ZXJhbmQgOCAiY29uc3RfaW50X29wZXJhbmQiwqAgIsKgIGkswqAgaSwgaSzCoCBpIikKK8KgIMKg IMKgIChyZWc6U0kgVkxfUkVHTlVNKQorwqAgwqAgwqAgKHJlZzpTSSBWVFlQRV9SRUdOVU0pXSBV TlNQRUNfVEhfVkxYTUVNX09QKQorIMKgICh1bnNwZWM6VkkKKyDCoCDCoCBbKG1hdGNoX29wZXJh bmQgMyAicG1vZGVfcmVnX29yXzBfb3BlcmFuZCLCoCDCoCAiIHJKLCBySixySiwgckoiKQorwqAg wqAgwqAgKG1lbTpCTEsgKHNjcmF0Y2gpKQorwqAgwqAgwqAgKG1hdGNoX29wZXJhbmQ6VkkgNCAi cmVnaXN0ZXJfb3BlcmFuZCIgIiB2ciwgdnIsdnIsIHZyIildIFVOU1BFQ19USF9WTFhNRU1fT1Ap CisgwqAgKG1hdGNoX29wZXJhbmQ6VkkgMiAidmVjdG9yX21lcmdlX29wZXJhbmQiIMKgIMKgIMKg ICIgdnUsIHZ1LCAwLMKgIDAiKSkpXQorwqAgIlRBUkdFVF9YVEhFQURWRUNUT1IiCivCoCAidmx4 PHZsbWVtX29wX2F0dHI+LnZcdCUwLCglejMpLCU0JXAxIgorwqAgWyhzZXRfYXR0ciAidHlwZSIg InZsZHV4IikKKyDCoCAoc2V0X2F0dHIgIm1vZGUiICI8TU9ERT4iKV0pCisKKyhkZWZpbmVfaW5z biAiQHByZWRfaW5kZXhlZF88dmxtZW1fb3JkZXJfYXR0cj5zdG9yZV93aWR0aDx2bG1lbV9vcF9h dHRyPjxtb2RlPiIKK8KgIFsoc2V0IChtZW06QkxLIChzY3JhdGNoKSkKKyAodW5zcGVjOkJMSwor IMKgIFsodW5zcGVjOjxWTT4KKyDCoCDCoCBbKG1hdGNoX29wZXJhbmQ6PFZNPiAwICJ2ZWN0b3Jf bWFza19vcGVyYW5kIiAidm1XYzEiKQorwqAgwqAgwqAgKG1hdGNoX29wZXJhbmQgNCAidmVjdG9y X2xlbmd0aF9vcGVyYW5kIsKgIMKgICIgwqAgcksiKQorwqAgwqAgwqAgKG1hdGNoX29wZXJhbmQg NSAiY29uc3RfaW50X29wZXJhbmQiICLCoCDCoCBpIikKK8KgIMKgIMKgIChyZWc6U0kgVkxfUkVH TlVNKQorwqAgwqAgwqAgKHJlZzpTSSBWVFlQRV9SRUdOVU0pXSBVTlNQRUNfVEhfVlNYTUVNX09Q KQorwqAgwqAgKG1hdGNoX29wZXJhbmQgMSAicG1vZGVfcmVnX29yXzBfb3BlcmFuZCLCoCDCoCDC oCAiwqAgckoiKQorwqAgwqAgKG1hdGNoX29wZXJhbmQ6VkkgMiAicmVnaXN0ZXJfb3BlcmFuZCIg IsKgIHZyIikKK8KgIMKgIChtYXRjaF9vcGVyYW5kOlZJIDMgInJlZ2lzdGVyX29wZXJhbmQiwqAg IsKgIHZyIildIFVOU1BFQ19USF9WU1hNRU1fT1ApKV0KK8KgICJUQVJHRVRfWFRIRUFEVkVDVE9S IgorwqAgInZzPHZsbWVtX29yZGVyX2F0dHI+eDx2bG1lbV9vcF9hdHRyPi52XHQlMywoJXoxKSwl MiVwMCIKK8KgIFsoc2V0X2F0dHIgInR5cGUiICJ2c3R1eCIpCisgwqAgKHNldF9hdHRyICJtb2Rl IiAiPE1PREU+IildKQorCisoZGVmaW5lX2V4cGFuZCAiQHByZWRfdGhfZXh0cmFjdDxtb2RlPiIK K8KgIFsoc2V0IChtYXRjaF9vcGVyYW5kOjxWRUw+IDAgInJlZ2lzdGVyX29wZXJhbmQiKQorICh1 bnNwZWM6PFZFTD4KKyDCoCBbKHZlY19zZWxlY3Q6PFZFTD4KK8KgIMKgIMKgIChtYXRjaF9vcGVy YW5kOlZfVkxTSSAxICJyZWdpc3Rlcl9vcGVyYW5kIikKK8KgIMKgIMKgIChwYXJhbGxlbCBbKG1h dGNoX29wZXJhbmQ6REkgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInIiKV0pKQorwqAgwqAgKHJlZzpT SSBWVFlQRV9SRUdOVU0pXSBVTlNQRUNfVlBSRURJQ0FURSkpXQorwqAgIlRBUkdFVF9YVEhFQURW RUNUT1IiCit7fSkKKworKGRlZmluZV9pbnNuICIqcHJlZF90aF9leHRyYWN0PG1vZGU+IgorwqAg WyhzZXQgKG1hdGNoX29wZXJhbmQ6PFZFTD4gMCAicmVnaXN0ZXJfb3BlcmFuZCIgwqAgIj1yIikK K8KgICh1bnNwZWM6PFZFTD4KK8KgIMKgIFsodmVjX3NlbGVjdDo8VkVMPgorIMKgIMKgIMKgICht YXRjaF9vcGVyYW5kOlZfVkxTSSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidnIiKQorIMKgIMKgIMKg IChwYXJhbGxlbCBbKG1hdGNoX29wZXJhbmQ6REkgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInIiKV0p KQorIMKgIMKgIChyZWc6U0kgVlRZUEVfUkVHTlVNKV0gVU5TUEVDX1ZQUkVESUNBVEUpKV0KK8Kg ICJUQVJHRVRfWFRIRUFEVkVDVE9SIgorwqAgInZleHQueC52XHQlMCwlMSwlMiIKK8KgIFsoc2V0 X2F0dHIgInR5cGUiICJ2aW1vdnZ4IikKKyDCoCAoc2V0X2F0dHIgIm1vZGUiICI8TU9ERT4iKV0p CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZl Y3Rvci92bGItdnNiLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVh ZHZlY3Rvci92bGItdnNiLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LjNjMTJjMTI0NTk3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3IvdmxiLXZzYi5jCkBAIC0wLDAgKzEsNjggQEAKKy8qIHsg ZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD1ydjMyZ2N4dGhlYWR2 ZWN0b3IgLW1hYmk9aWxwMzJkIC1PMyIgfSAqLworLyogeyBkZy1maW5hbCB7IGNoZWNrLWZ1bmN0 aW9uLWJvZGllcyAiKioiICIiIH0gfSAqLworI2luY2x1ZGUgInJpc2N2X3RoX3ZlY3Rvci5oIgor CisvKgorKiogZjE6CisqKiB0aC52c2V0aXZsaVx0emVybyw0LGUzMixtMSx0dSxtYQorKiogdGgu dmxiXC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKiB0aC52bGJcLnZcdHZbMC05XSssMFwo W2EteDAtOV0rXCkKKyoqIHRoLnZhZGRcLnZ2XHR2WzAtOV0rLFxzKnZbMC05XSssXHMqdlswLTld KworKiogdGgudmFkZFwudnZcdHZbMC05XSssXHMqdlswLTldKyxccyp2WzAtOV0rCisqKiB0aC52 c2JcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHJldAorKi8KK3ZvaWQgZjEgKHZvaWQg KiBpbiwgdm9pZCAqb3V0KQoreworwqAgwqAgdmludDMybTFfdCB2ID0gX19yaXNjdl90aF92bGJf dl9pMzJtMSAoaW4sIDQpOworwqAgwqAgdmludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmxiX3Zf aTMybTFfdHUgKHYsIGluLCA0KTsKK8KgIMKgIHZpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3ZhZGRf dnZfaTMybTEgKHYyLCB2MiwgNCk7CivCoCDCoCB2aW50MzJtMV90IHY0ID0gX19yaXNjdl92YWRk X3Z2X2kzMm0xX3R1ICh2MywgdjIsIHYyLCA0KTsKK8KgIMKgIF9fcmlzY3ZfdGhfdnNiX3ZfaTMy bTEgKG91dCwgdjQsIDQpOworfQorCisvKgorKiogZjI6CisqKiB0aC52c2V0dmxpXHRbYS14MC05 XSssemVybyxlOCxtZjQsdGEsbWEKKyoqIHRoLnZsbS52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wp CisqKiB0aC52c2V0aXZsaVx0emVybyw0LGUzMixtMSx0YSxtYQorKiogdGgudmxiLnZcdHZbMC05 XSssMFwoW2EteDAtOV0rXCksdjAudAorKiogdGgudmFkZFwudnZcdHZbMC05XSssXHMqdlswLTld Kyxccyp2WzAtOV0rCisqKiB0aC52YWRkXC52dlx0dlsxLTldWzAtOV0/LFxzKnZbMC05XSssXHMq dlswLTldKyxccyp2MC50CisqKiB0aC52c2Iudlx0dlswLTldKywwXChbYS14MC05XStcKQorKiog cmV0CisqLwordm9pZCBmMiAodm9pZCAqIGluLCB2b2lkICpvdXQpCit7CivCoCDCoCB2Ym9vbDMy X3QgbWFzayA9ICoodmJvb2wzMl90KilpbjsKK8KgIMKgIGFzbSB2b2xhdGlsZSAoIiI6OjoibWVt b3J5Iik7CivCoCDCoCB2aW50MzJtMV90IHYgPSBfX3Jpc2N2X3RoX3ZsYl92X2kzMm0xIChpbiwg NCk7CivCoCDCoCB2aW50MzJtMV90IHYyID0gX19yaXNjdl90aF92bGJfdl9pMzJtMV9tIChtYXNr LCBpbiwgNCk7CivCoCDCoCB2aW50MzJtMV90IHYzID0gX19yaXNjdl92YWRkX3Z2X2kzMm0xICh2 MiwgdjIsIDQpOworwqAgwqAgdmludDMybTFfdCB2NCA9IF9fcmlzY3ZfdmFkZF92dl9pMzJtMV9t IChtYXNrLCB2MywgdjMsIDQpOworwqAgwqAgX19yaXNjdl90aF92c2Jfdl9pMzJtMSAob3V0LCB2 NCwgNCk7Cit9CisKKy8qCisqKiBmMzoKKyoqIHRoLnZzZXR2bGlcdFthLXgwLTldKyx6ZXJvLGU4 LG1mNCx0YSxtYQorKiogdGgudmxtLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHRoLnZz ZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHR1LG11CisqKiB0aC52bGJcLnZcdHZbMC05XSssMFwoW2Et eDAtOV0rXCkKKyoqIHRoLnZsYi52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpLHYwLnQKKyoqIHRo LnZhZGRcLnZ2XHR2WzAtOV0rLFxzKnZbMC05XSssXHMqdlswLTldKworKiogdGgudmFkZFwudnZc dHZbMS05XVswLTldPyxccyp2WzAtOV0rLFxzKnZbMC05XSssXHMqdjAudAorKiogdGgudnNiLnZc dHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHJldAorKi8KK3ZvaWQgZjMgKHZvaWQgKiBpbiwg dm9pZCAqb3V0KQoreworwqAgwqAgdmJvb2wzMl90IG1hc2sgPSAqKHZib29sMzJfdCopaW47CivC oCDCoCBhc20gdm9sYXRpbGUgKCIiOjo6Im1lbW9yeSIpOworwqAgwqAgdmludDMybTFfdCB2ID0g X19yaXNjdl90aF92bGJfdl9pMzJtMSAoaW4sIDQpOworwqAgwqAgdmludDMybTFfdCB2MiA9IF9f cmlzY3ZfdGhfdmxiX3ZfaTMybTFfdHVtdSAobWFzaywgdiwgaW4sIDQpOworwqAgwqAgdmludDMy bTFfdCB2MyA9IF9fcmlzY3ZfdmFkZF92dl9pMzJtMSAodjIsIHYyLCA0KTsKK8KgIMKgIHZpbnQz Mm0xX3QgdjQgPSBfX3Jpc2N2X3ZhZGRfdnZfaTMybTFfdHVtdSAobWFzaywgdjMsIHYyLCB2Miwg NCk7CivCoCDCoCBfX3Jpc2N2X3RoX3ZzYl92X2kzMm0xIChvdXQsIHY0LCA0KTsKK30KZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3Zs YnUtdnNiLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rv ci92bGJ1LXZzYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zMGJl ZjM2OTM3NQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di9ydnYveHRoZWFkdmVjdG9yL3ZsYnUtdnNiLmMKQEAgLTAsMCArMSw2OCBAQAorLyogeyBkZy1k byBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPXJ2MzJnY3h0aGVhZHZlY3Rv ciAtbWFiaT1pbHAzMmQgLU8zIiB9ICovCisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24t Ym9kaWVzICIqKiIgIiIgfSB9ICovCisjaW5jbHVkZSAicmlzY3ZfdGhfdmVjdG9yLmgiCisKKy8q CisqKiBmMToKKyoqIHRoLnZzZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHR1LG1hCisqKiB0aC52bGJ1 XC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKiB0aC52bGJ1XC52XHR2WzAtOV0rLDBcKFth LXgwLTldK1wpCisqKiB0aC52YWRkXC52aVx0dlswLTldKyxccyp2WzAtOV0rLFxzKi0xNgorKiog dGgudmFkZFwudmlcdHZbMC05XSssXHMqdlswLTldKyxccyotMTYKKyoqIHRoLnZzYlwudlx0dlsw LTldKywwXChbYS14MC05XStcKQorKiogcmV0CisqLwordm9pZCBmMSAodm9pZCAqIGluLCB2b2lk ICpvdXQsIHVpbnQzMl90IHgpCit7CivCoCDCoCB2dWludDMybTFfdCB2ID0gX19yaXNjdl90aF92 bGJ1X3ZfdTMybTEgKGluLCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHYyID0gX19yaXNjdl90aF92 bGJ1X3ZfdTMybTFfdHUgKHYsIGluLCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHYzID0gX19yaXNj dl92YWRkX3Z4X3UzMm0xICh2MiwgLTE2LCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHY0ID0gX19y aXNjdl92YWRkX3Z4X3UzMm0xX3R1ICh2MywgdjIsIC0xNiwgNCk7CivCoCDCoCBfX3Jpc2N2X3Ro X3ZzYl92X3UzMm0xIChvdXQsIHY0LCA0KTsKK30KKworLyoKKyoqIGYyOgorKiogdGgudnNldHZs aVx0W2EteDAtOV0rLHplcm8sZTgsbWY0LHRhLG1hCisqKiB0aC52bG0udlx0dlswLTldKywwXChb YS14MC05XStcKQorKiogdGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdGEsbWEKKyoqIHRoLnZs YnUudlx0dlswLTldKywwXChbYS14MC05XStcKSx2MC50CisqKiB0aC52YWRkXC52aVx0dlswLTld Kyxccyp2WzAtOV0rLFxzKi0xNgorKiogdGgudmFkZFwudmlcdHZbMS05XVswLTldPyxccyp2WzAt OV0rLFxzKi0xNixccyp2MC50CisqKiB0aC52c2Iudlx0dlswLTldKywwXChbYS14MC05XStcKQor KiogcmV0CisqLwordm9pZCBmMiAodm9pZCAqIGluLCB2b2lkICpvdXQsIHVpbnQzMl90IHgpCit7 CivCoCDCoCB2Ym9vbDMyX3QgbWFzayA9ICoodmJvb2wzMl90KilpbjsKK8KgIMKgIGFzbSB2b2xh dGlsZSAoIiI6OjoibWVtb3J5Iik7CivCoCDCoCB2dWludDMybTFfdCB2ID0gX19yaXNjdl90aF92 bGJ1X3ZfdTMybTEgKGluLCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHYyID0gX19yaXNjdl90aF92 bGJ1X3ZfdTMybTFfbSAobWFzaywgaW4sIDQpOworwqAgwqAgdnVpbnQzMm0xX3QgdjMgPSBfX3Jp c2N2X3ZhZGRfdnhfdTMybTEgKHYyLCAtMTYsIDQpOworwqAgwqAgdnVpbnQzMm0xX3QgdjQgPSBf X3Jpc2N2X3ZhZGRfdnhfdTMybTFfbSAobWFzaywgdjMsIC0xNiwgNCk7CivCoCDCoCBfX3Jpc2N2 X3RoX3ZzYl92X3UzMm0xIChvdXQsIHY0LCA0KTsKK30KKworLyoKKyoqIGYzOgorKiogdGgudnNl dHZsaVx0W2EteDAtOV0rLHplcm8sZTgsbWY0LHRhLG1hCisqKiB0aC52bG0udlx0dlswLTldKyww XChbYS14MC05XStcKQorKiogdGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdHUsbXUKKyoqIHRo LnZsYnVcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHRoLnZsYnUudlx0dlswLTldKyww XChbYS14MC05XStcKSx2MC50CisqKiB0aC52YWRkXC52aVx0dlswLTldKyxccyp2WzAtOV0rLFxz Ki0xNgorKiogdGgudmFkZFwudmlcdHZbMS05XVswLTldPyxccyp2WzAtOV0rLFxzKi0xNixccyp2 MC50CisqKiB0aC52c2Iudlx0dlswLTldKywwXChbYS14MC05XStcKQorKiogcmV0CisqLwordm9p ZCBmMyAodm9pZCAqIGluLCB2b2lkICpvdXQsIHVpbnQzMl90IHgpCit7CivCoCDCoCB2Ym9vbDMy X3QgbWFzayA9ICoodmJvb2wzMl90KilpbjsKK8KgIMKgIGFzbSB2b2xhdGlsZSAoIiI6OjoibWVt b3J5Iik7CivCoCDCoCB2dWludDMybTFfdCB2ID0gX19yaXNjdl90aF92bGJ1X3ZfdTMybTEgKGlu LCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHYyID0gX19yaXNjdl90aF92bGJ1X3ZfdTMybTFfdHVt dSAobWFzaywgdiwgaW4sIDQpOworwqAgwqAgdnVpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3ZhZGRf dnhfdTMybTEgKHYyLCAtMTYsIDQpOworwqAgwqAgdnVpbnQzMm0xX3QgdjQgPSBfX3Jpc2N2X3Zh ZGRfdnhfdTMybTFfdHVtdSAobWFzaywgdjMsIHYyLCAtMTYsIDQpOworwqAgwqAgX19yaXNjdl90 aF92c2Jfdl91MzJtMSAob3V0LCB2NCwgNCk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGgtdnNoLmMgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGgtdnNoLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjNjOGI1Y2NjMTZiCi0tLSAvZGV2L251bGwK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3Ivdmxo LXZzaC5jCkBAIC0wLDAgKzEsNjggQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRn LW9wdGlvbnMgIi1tYXJjaD1ydjMyZ2N4dGhlYWR2ZWN0b3IgLW1hYmk9aWxwMzJkIC1PMyIgfSAq LworLyogeyBkZy1maW5hbCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIiIH0gfSAqLwor I2luY2x1ZGUgInJpc2N2X3RoX3ZlY3Rvci5oIgorCisvKgorKiogZjE6CisqKiB0aC52c2V0aXZs aVx0emVybyw0LGUzMixtMSx0dSxtYQorKiogdGgudmxoXC52XHR2WzAtOV0rLDBcKFthLXgwLTld K1wpCisqKiB0aC52bGhcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHRoLnZhZGRcLnZp XHR2WzAtOV0rLFxzKnZbMC05XSssXHMqLTE2CisqKiB0aC52YWRkXC52aVx0dlswLTldKyxccyp2 WzAtOV0rLFxzKi0xNgorKiogdGgudnNoXC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKiBy ZXQKKyovCit2b2lkIGYxICh2b2lkICogaW4sIHZvaWQgKm91dCwgaW50MzJfdCB4KQoreworwqAg wqAgdmludDMybTFfdCB2ID0gX19yaXNjdl90aF92bGhfdl9pMzJtMSAoaW4sIDQpOworwqAgwqAg dmludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmxoX3ZfaTMybTFfdHUgKHYsIGluLCA0KTsKK8Kg IMKgIHZpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3ZhZGRfdnhfaTMybTEgKHYyLCAtMTYsIDQpOwor wqAgwqAgdmludDMybTFfdCB2NCA9IF9fcmlzY3ZfdmFkZF92eF9pMzJtMV90dSAodjMsIHYyLCAt MTYsIDQpOworwqAgwqAgX19yaXNjdl90aF92c2hfdl9pMzJtMSAob3V0LCB2NCwgNCk7Cit9CisK Ky8qCisqKiBmMjoKKyoqIHRoLnZzZXR2bGlcdFthLXgwLTldKyx6ZXJvLGU4LG1mNCx0YSxtYQor KiogdGgudmxtLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHRoLnZzZXRpdmxpXHR6ZXJv LDQsZTMyLG0xLHRhLG1hCisqKiB0aC52bGgudlx0dlswLTldKywwXChbYS14MC05XStcKSx2MC50 CisqKiB0aC52YWRkXC52aVx0dlswLTldKyxccyp2WzAtOV0rLFxzKi0xNgorKiogdGgudmFkZFwu dmlcdHZbMS05XVswLTldPyxccyp2WzAtOV0rLFxzKi0xNixccyp2MC50CisqKiB0aC52c2gudlx0 dlswLTldKywwXChbYS14MC05XStcKQorKiogcmV0CisqLwordm9pZCBmMiAodm9pZCAqIGluLCB2 b2lkICpvdXQsIGludDMyX3QgeCkKK3sKK8KgIMKgIHZib29sMzJfdCBtYXNrID0gKih2Ym9vbDMy X3QqKWluOworwqAgwqAgYXNtIHZvbGF0aWxlICgiIjo6OiJtZW1vcnkiKTsKK8KgIMKgIHZpbnQz Mm0xX3QgdiA9IF9fcmlzY3ZfdGhfdmxoX3ZfaTMybTEgKGluLCA0KTsKK8KgIMKgIHZpbnQzMm0x X3QgdjIgPSBfX3Jpc2N2X3RoX3ZsaF92X2kzMm0xX20gKG1hc2ssIGluLCA0KTsKK8KgIMKgIHZp bnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3ZhZGRfdnhfaTMybTEgKHYyLCAtMTYsIDQpOworwqAgwqAg dmludDMybTFfdCB2NCA9IF9fcmlzY3ZfdmFkZF92eF9pMzJtMV9tIChtYXNrLCB2MywgLTE2LCA0 KTsKK8KgIMKgIF9fcmlzY3ZfdGhfdnNoX3ZfaTMybTEgKG91dCwgdjQsIDQpOworfQorCisvKgor KiogZjM6CisqKiB0aC52c2V0dmxpXHRbYS14MC05XSssemVybyxlOCxtZjQsdGEsbWEKKyoqIHRo LnZsbS52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKiB0aC52c2V0aXZsaVx0emVybyw0LGUz MixtMSx0dSxtdQorKiogdGgudmxoXC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKiB0aC52 bGgudlx0dlswLTldKywwXChbYS14MC05XStcKSx2MC50CisqKiB0aC52YWRkXC52aVx0dlswLTld Kyxccyp2WzAtOV0rLFxzKi0xNgorKiogdGgudmFkZFwudmlcdHZbMS05XVswLTldPyxccyp2WzAt OV0rLFxzKi0xNixccyp2MC50CisqKiB0aC52c2gudlx0dlswLTldKywwXChbYS14MC05XStcKQor KiogcmV0CisqLwordm9pZCBmMyAodm9pZCAqIGluLCB2b2lkICpvdXQsIGludDMyX3QgeCkKK3sK K8KgIMKgIHZib29sMzJfdCBtYXNrID0gKih2Ym9vbDMyX3QqKWluOworwqAgwqAgYXNtIHZvbGF0 aWxlICgiIjo6OiJtZW1vcnkiKTsKK8KgIMKgIHZpbnQzMm0xX3QgdiA9IF9fcmlzY3ZfdGhfdmxo X3ZfaTMybTEgKGluLCA0KTsKK8KgIMKgIHZpbnQzMm0xX3QgdjIgPSBfX3Jpc2N2X3RoX3ZsaF92 X2kzMm0xX3R1bXUgKG1hc2ssIHYsIGluLCA0KTsKK8KgIMKgIHZpbnQzMm0xX3QgdjMgPSBfX3Jp c2N2X3ZhZGRfdnhfaTMybTEgKHYyLCAtMTYsIDQpOworwqAgwqAgdmludDMybTFfdCB2NCA9IF9f cmlzY3ZfdmFkZF92eF9pMzJtMV90dW11IChtYXNrLCB2MywgdjIsIC0xNiwgNCk7CivCoCDCoCBf X3Jpc2N2X3RoX3ZzaF92X2kzMm0xIChvdXQsIHY0LCA0KTsKK30KZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsaHUtdnNoLmMgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGh1LXZzaC5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iN2MwMDQwNGYxOAotLS0g L2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFk dmVjdG9yL3ZsaHUtdnNoLmMKQEAgLTAsMCArMSw2OCBAQAorLyogeyBkZy1kbyBjb21waWxlIH0g Ki8KKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPXJ2MzJnY3h0aGVhZHZlY3RvciAtbWFiaT1pbHAz MmQgLU8zIiB9ICovCisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIg IiIgfSB9ICovCisjaW5jbHVkZSAicmlzY3ZfdGhfdmVjdG9yLmgiCisKKy8qCisqKiBmMToKKyoq IHRoLnZzZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHR1LG1hCisqKiB0aC52bGh1XC52XHR2WzAtOV0r LDBcKFthLXgwLTldK1wpCisqKiB0aC52bGh1XC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisq KiB0aC52YWRkXC52aVx0dlswLTldKyxccyp2WzAtOV0rLFxzKi0xNgorKiogdGgudmFkZFwudmlc dHZbMC05XSssXHMqdlswLTldKyxccyotMTYKKyoqIHRoLnZzaFwudlx0dlswLTldKywwXChbYS14 MC05XStcKQorKiogcmV0CisqLwordm9pZCBmMSAodm9pZCAqIGluLCB2b2lkICpvdXQsIHVpbnQz Ml90IHgpCit7CivCoCDCoCB2dWludDMybTFfdCB2ID0gX19yaXNjdl90aF92bGh1X3ZfdTMybTEg KGluLCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHYyID0gX19yaXNjdl90aF92bGh1X3ZfdTMybTFf dHUgKHYsIGluLCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHYzID0gX19yaXNjdl92YWRkX3Z4X3Uz Mm0xICh2MiwgLTE2LCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHY0ID0gX19yaXNjdl92YWRkX3Z4 X3UzMm0xX3R1ICh2MywgdjIsIC0xNiwgNCk7CivCoCDCoCBfX3Jpc2N2X3RoX3ZzaF92X3UzMm0x IChvdXQsIHY0LCA0KTsKK30KKworLyoKKyoqIGYyOgorKiogdGgudnNldHZsaVx0W2EteDAtOV0r LHplcm8sZTgsbWY0LHRhLG1hCisqKiB0aC52bG0udlx0dlswLTldKywwXChbYS14MC05XStcKQor KiogdGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdGEsbWEKKyoqIHRoLnZsaHUudlx0dlswLTld KywwXChbYS14MC05XStcKSx2MC50CisqKiB0aC52YWRkXC52aVx0dlswLTldKyxccyp2WzAtOV0r LFxzKi0xNgorKiogdGgudmFkZFwudmlcdHZbMS05XVswLTldPyxccyp2WzAtOV0rLFxzKi0xNixc cyp2MC50CisqKiB0aC52c2gudlx0dlswLTldKywwXChbYS14MC05XStcKQorKiogcmV0CisqLwor dm9pZCBmMiAodm9pZCAqIGluLCB2b2lkICpvdXQsIHVpbnQzMl90IHgpCit7CivCoCDCoCB2Ym9v bDMyX3QgbWFzayA9ICoodmJvb2wzMl90KilpbjsKK8KgIMKgIGFzbSB2b2xhdGlsZSAoIiI6Ojoi bWVtb3J5Iik7CivCoCDCoCB2dWludDMybTFfdCB2ID0gX19yaXNjdl90aF92bGh1X3ZfdTMybTEg KGluLCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHYyID0gX19yaXNjdl90aF92bGh1X3ZfdTMybTFf bSAobWFzaywgaW4sIDQpOworwqAgwqAgdnVpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3ZhZGRfdnhf dTMybTEgKHYyLCAtMTYsIDQpOworwqAgwqAgdnVpbnQzMm0xX3QgdjQgPSBfX3Jpc2N2X3ZhZGRf dnhfdTMybTFfbSAobWFzaywgdjMsIC0xNiwgNCk7CivCoCDCoCBfX3Jpc2N2X3RoX3ZzaF92X3Uz Mm0xIChvdXQsIHY0LCA0KTsKK30KKworLyoKKyoqIGYzOgorKiogdGgudnNldHZsaVx0W2EteDAt OV0rLHplcm8sZTgsbWY0LHRhLG1hCisqKiB0aC52bG0udlx0dlswLTldKywwXChbYS14MC05XStc KQorKiogdGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdHUsbXUKKyoqIHRoLnZsaHVcLnZcdHZb MC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHRoLnZsaHUudlx0dlswLTldKywwXChbYS14MC05XStc KSx2MC50CisqKiB0aC52YWRkXC52aVx0dlswLTldKyxccyp2WzAtOV0rLFxzKi0xNgorKiogdGgu dmFkZFwudmlcdHZbMS05XVswLTldPyxccyp2WzAtOV0rLFxzKi0xNixccyp2MC50CisqKiB0aC52 c2gudlx0dlswLTldKywwXChbYS14MC05XStcKQorKiogcmV0CisqLwordm9pZCBmMyAodm9pZCAq IGluLCB2b2lkICpvdXQsIHVpbnQzMl90IHgpCit7CivCoCDCoCB2Ym9vbDMyX3QgbWFzayA9ICoo dmJvb2wzMl90KilpbjsKK8KgIMKgIGFzbSB2b2xhdGlsZSAoIiI6OjoibWVtb3J5Iik7CivCoCDC oCB2dWludDMybTFfdCB2ID0gX19yaXNjdl90aF92bGh1X3ZfdTMybTEgKGluLCA0KTsKK8KgIMKg IHZ1aW50MzJtMV90IHYyID0gX19yaXNjdl90aF92bGh1X3ZfdTMybTFfdHVtdSAobWFzaywgdiwg aW4sIDQpOworwqAgwqAgdnVpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3ZhZGRfdnhfdTMybTEgKHYy LCAtMTYsIDQpOworwqAgwqAgdnVpbnQzMm0xX3QgdjQgPSBfX3Jpc2N2X3ZhZGRfdnhfdTMybTFf dHVtdSAobWFzaywgdjMsIHYyLCAtMTYsIDQpOworwqAgwqAgX19yaXNjdl90aF92c2hfdl91MzJt MSAob3V0LCB2NCwgNCk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv cmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bHctdnN3LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bHctdnN3LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjE3YTUzMDEyYWNmCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3Ivdmx3LXZzdy5jCkBAIC0w LDAgKzEsNjggQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1t YXJjaD1ydjMyZ2N4dGhlYWR2ZWN0b3IgLW1hYmk9aWxwMzJkIC1PMyIgfSAqLworLyogeyBkZy1m aW5hbCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIiIH0gfSAqLworI2luY2x1ZGUgInJp c2N2X3RoX3ZlY3Rvci5oIgorCisvKgorKiogZjE6CisqKiB0aC52c2V0aXZsaVx0emVybyw0LGUz MixtMSx0dSxtYQorKiogdGgudmx3XC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKiB0aC52 bHdcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHRoLnZhZGRcLnZ4XHR2WzAtOV0rLFxz KnZbMC05XSssXHMqW2EteDAtOV0rCisqKiB0aC52YWRkXC52eFx0dlswLTldKyxccyp2WzAtOV0r LFxzKlthLXgwLTldKworKiogdGgudnN3XC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKiBy ZXQKKyovCit2b2lkIGYxICh2b2lkICogaW4sIHZvaWQgKm91dCwgaW50MzJfdCB4KQoreworwqAg wqAgdmludDMybTFfdCB2ID0gX19yaXNjdl90aF92bHdfdl9pMzJtMSAoaW4sIDQpOworwqAgwqAg dmludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmx3X3ZfaTMybTFfdHUgKHYsIGluLCA0KTsKK8Kg IMKgIHZpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3ZhZGRfdnhfaTMybTEgKHYyLCB4LCA0KTsKK8Kg IMKgIHZpbnQzMm0xX3QgdjQgPSBfX3Jpc2N2X3ZhZGRfdnhfaTMybTFfdHUgKHYzLCB2MiwgeCwg NCk7CivCoCDCoCBfX3Jpc2N2X3RoX3Zzd192X2kzMm0xIChvdXQsIHY0LCA0KTsKK30KKworLyoK KyoqIGYyOgorKiogdGgudnNldHZsaVx0W2EteDAtOV0rLHplcm8sZTgsbWY0LHRhLG1hCisqKiB0 aC52bG0udlx0dlswLTldKywwXChbYS14MC05XStcKQorKiogdGgudnNldGl2bGlcdHplcm8sNCxl MzIsbTEsdGEsbWEKKyoqIHRoLnZsdy52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpLHYwLnQKKyoq IHRoLnZhZGRcLnZ4XHR2WzAtOV0rLFxzKnZbMC05XSssXHMqW2EteDAtOV0rCisqKiB0aC52YWRk XC52eFx0dlsxLTldWzAtOV0/LFxzKnZbMC05XSssXHMqW2EteDAtOV0rLFxzKnYwLnQKKyoqIHRo LnZzdy52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKiByZXQKKyovCit2b2lkIGYyICh2b2lk ICogaW4sIHZvaWQgKm91dCwgaW50MzJfdCB4KQoreworwqAgwqAgdmJvb2wzMl90IG1hc2sgPSAq KHZib29sMzJfdCopaW47CivCoCDCoCBhc20gdm9sYXRpbGUgKCIiOjo6Im1lbW9yeSIpOworwqAg wqAgdmludDMybTFfdCB2ID0gX19yaXNjdl90aF92bHdfdl9pMzJtMSAoaW4sIDQpOworwqAgwqAg dmludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmx3X3ZfaTMybTFfbSAobWFzaywgaW4sIDQpOwor wqAgwqAgdmludDMybTFfdCB2MyA9IF9fcmlzY3ZfdmFkZF92eF9pMzJtMSAodjIsIHgsIDQpOwor wqAgwqAgdmludDMybTFfdCB2NCA9IF9fcmlzY3ZfdmFkZF92eF9pMzJtMV9tIChtYXNrLCB2Mywg eCwgNCk7CivCoCDCoCBfX3Jpc2N2X3RoX3Zzd192X2kzMm0xIChvdXQsIHY0LCA0KTsKK30KKwor LyoKKyoqIGYzOgorKiogdGgudnNldHZsaVx0W2EteDAtOV0rLHplcm8sZTgsbWY0LHRhLG1hCisq KiB0aC52bG0udlx0dlswLTldKywwXChbYS14MC05XStcKQorKiogdGgudnNldGl2bGlcdHplcm8s NCxlMzIsbTEsdHUsbXUKKyoqIHRoLnZsd1wudlx0dlswLTldKywwXChbYS14MC05XStcKQorKiog dGgudmx3LnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCksdjAudAorKiogdGgudmFkZFwudnhcdHZb MC05XSssXHMqdlswLTldKyxccypbYS14MC05XSsKKyoqIHRoLnZhZGRcLnZ4XHR2WzEtOV1bMC05 XT8sXHMqdlswLTldKyxccypbYS14MC05XSssXHMqdjAudAorKiogdGgudnN3LnZcdHZbMC05XSss MFwoW2EteDAtOV0rXCkKKyoqIHJldAorKi8KK3ZvaWQgZjMgKHZvaWQgKiBpbiwgdm9pZCAqb3V0 LCBpbnQzMl90IHgpCit7CivCoCDCoCB2Ym9vbDMyX3QgbWFzayA9ICoodmJvb2wzMl90KilpbjsK K8KgIMKgIGFzbSB2b2xhdGlsZSAoIiI6OjoibWVtb3J5Iik7CivCoCDCoCB2aW50MzJtMV90IHYg PSBfX3Jpc2N2X3RoX3Zsd192X2kzMm0xIChpbiwgNCk7CivCoCDCoCB2aW50MzJtMV90IHYyID0g X19yaXNjdl90aF92bHdfdl9pMzJtMV90dW11IChtYXNrLCB2LCBpbiwgNCk7CivCoCDCoCB2aW50 MzJtMV90IHYzID0gX19yaXNjdl92YWRkX3Z4X2kzMm0xICh2MiwgeCwgNCk7CivCoCDCoCB2aW50 MzJtMV90IHY0ID0gX19yaXNjdl92YWRkX3Z4X2kzMm0xX3R1bXUgKG1hc2ssIHYzLCB2MiwgeCwg NCk7CivCoCDCoCBfX3Jpc2N2X3RoX3Zzd192X2kzMm0xIChvdXQsIHY0LCA0KTsKK30KZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3Zs d3UtdnN3LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rv ci92bHd1LXZzdy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iMTg3 Y2ZjODUyYgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di9ydnYveHRoZWFkdmVjdG9yL3Zsd3UtdnN3LmMKQEAgLTAsMCArMSw2OCBAQAorLyogeyBkZy1k byBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPXJ2MzJnY3h0aGVhZHZlY3Rv ciAtbWFiaT1pbHAzMmQgLU8zIiB9ICovCisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24t Ym9kaWVzICIqKiIgIiIgfSB9ICovCisjaW5jbHVkZSAicmlzY3ZfdGhfdmVjdG9yLmgiCisKKy8q CisqKiBmMToKKyoqIHRoLnZzZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHR1LG1hCisqKiB0aC52bHd1 XC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKiB0aC52bHd1XC52XHR2WzAtOV0rLDBcKFth LXgwLTldK1wpCisqKiB0aC52YWRkXC52aVx0dlswLTldKyxccyp2WzAtOV0rLFxzKi0xNgorKiog dGgudmFkZFwudmlcdHZbMC05XSssXHMqdlswLTldKyxccyotMTYKKyoqIHRoLnZzd1wudlx0dlsw LTldKywwXChbYS14MC05XStcKQorKiogcmV0CisqLwordm9pZCBmMSAodm9pZCAqIGluLCB2b2lk ICpvdXQsIHVpbnQzMl90IHgpCit7CivCoCDCoCB2dWludDMybTFfdCB2ID0gX19yaXNjdl90aF92 bHd1X3ZfdTMybTEgKGluLCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHYyID0gX19yaXNjdl90aF92 bHd1X3ZfdTMybTFfdHUgKHYsIGluLCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHYzID0gX19yaXNj dl92YWRkX3Z4X3UzMm0xICh2MiwgLTE2LCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHY0ID0gX19y aXNjdl92YWRkX3Z4X3UzMm0xX3R1ICh2MywgdjIsIC0xNiwgNCk7CivCoCDCoCBfX3Jpc2N2X3Ro X3Zzd192X3UzMm0xIChvdXQsIHY0LCA0KTsKK30KKworLyoKKyoqIGYyOgorKiogdGgudnNldHZs aVx0W2EteDAtOV0rLHplcm8sZTgsbWY0LHRhLG1hCisqKiB0aC52bG0udlx0dlswLTldKywwXChb YS14MC05XStcKQorKiogdGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdGEsbWEKKyoqIHRoLnZs d3Uudlx0dlswLTldKywwXChbYS14MC05XStcKSx2MC50CisqKiB0aC52YWRkXC52aVx0dlswLTld Kyxccyp2WzAtOV0rLFxzKi0xNgorKiogdGgudmFkZFwudmlcdHZbMS05XVswLTldPyxccyp2WzAt OV0rLFxzKi0xNixccyp2MC50CisqKiB0aC52c3cudlx0dlswLTldKywwXChbYS14MC05XStcKQor KiogcmV0CisqLwordm9pZCBmMiAodm9pZCAqIGluLCB2b2lkICpvdXQsIHVpbnQzMl90IHgpCit7 CivCoCDCoCB2Ym9vbDMyX3QgbWFzayA9ICoodmJvb2wzMl90KilpbjsKK8KgIMKgIGFzbSB2b2xh dGlsZSAoIiI6OjoibWVtb3J5Iik7CivCoCDCoCB2dWludDMybTFfdCB2ID0gX19yaXNjdl90aF92 bHd1X3ZfdTMybTEgKGluLCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHYyID0gX19yaXNjdl90aF92 bHd1X3ZfdTMybTFfbSAobWFzaywgaW4sIDQpOworwqAgwqAgdnVpbnQzMm0xX3QgdjMgPSBfX3Jp c2N2X3ZhZGRfdnhfdTMybTEgKHYyLCAtMTYsIDQpOworwqAgwqAgdnVpbnQzMm0xX3QgdjQgPSBf X3Jpc2N2X3ZhZGRfdnhfdTMybTFfbSAobWFzaywgdjMsIC0xNiwgNCk7CivCoCDCoCBfX3Jpc2N2 X3RoX3Zzd192X3UzMm0xIChvdXQsIHY0LCA0KTsKK30KKworLyoKKyoqIGYzOgorKiogdGgudnNl dHZsaVx0W2EteDAtOV0rLHplcm8sZTgsbWY0LHRhLG1hCisqKiB0aC52bG0udlx0dlswLTldKyww XChbYS14MC05XStcKQorKiogdGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdHUsbXUKKyoqIHRo LnZsd3VcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHRoLnZsd3Uudlx0dlswLTldKyww XChbYS14MC05XStcKSx2MC50CisqKiB0aC52YWRkXC52aVx0dlswLTldKyxccyp2WzAtOV0rLFxz Ki0xNgorKiogdGgudmFkZFwudmlcdHZbMS05XVswLTldPyxccyp2WzAtOV0rLFxzKi0xNixccyp2 MC50CisqKiB0aC52c3cudlx0dlswLTldKywwXChbYS14MC05XStcKQorKiogcmV0CisqLwordm9p ZCBmMyAodm9pZCAqIGluLCB2b2lkICpvdXQsIHVpbnQzMl90IHgpCit7CivCoCDCoCB2Ym9vbDMy X3QgbWFzayA9ICoodmJvb2wzMl90KilpbjsKK8KgIMKgIGFzbSB2b2xhdGlsZSAoIiI6OjoibWVt b3J5Iik7CivCoCDCoCB2dWludDMybTFfdCB2ID0gX19yaXNjdl90aF92bHd1X3ZfdTMybTEgKGlu LCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHYyID0gX19yaXNjdl90aF92bHd1X3ZfdTMybTFfdHVt dSAobWFzaywgdiwgaW4sIDQpOworwqAgwqAgdnVpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3ZhZGRf dnhfdTMybTEgKHYyLCAtMTYsIDQpOworwqAgwqAgdnVpbnQzMm0xX3QgdjQgPSBfX3Jpc2N2X3Zh ZGRfdnhfdTMybTFfdHVtdSAobWFzaywgdjMsIHYyLCAtMTYsIDQpOworwqAgwqAgX19yaXNjdl90 aF92c3dfdl91MzJtMSAob3V0LCB2NCwgNCk7Cit9Ci0tIAoyLjE3LjEKIAogCsKgCsKgCsKgCsKg CsKgCsKgCsKgCsKgCsKgCsKgCsKgCsKgCgoK