From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on2079.outbound.protection.outlook.com [40.107.14.79]) by sourceware.org (Postfix) with ESMTPS id 2BE903858D20 for ; Mon, 27 Feb 2023 11:09:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2BE903858D20 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=403sIw3TJxk4u8k22b60ajnAph30Db4exnWxDJgMJFA=; b=Ln0gitVdWd2xmcdn/3Hs25BbxIm4hNZclkBCrZiwLh8IsudeqrmPWGbjAm9EqxyTxpYPdMKkAbduhs9lw2H1KBFcc1tjLPSUIcOSEv4uBmlb1iv3/5Cmn07r9OtSMLC7acdquvTAqHN/yfA0H2O9Z+2C2J3Tgi4yki3XcQ+8M84= Received: from AS9PR06CA0316.eurprd06.prod.outlook.com (2603:10a6:20b:45b::25) by PAVPR08MB9508.eurprd08.prod.outlook.com (2603:10a6:102:312::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6134.29; Mon, 27 Feb 2023 11:09:49 +0000 Received: from AM7EUR03FT010.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:45b:cafe::e2) by AS9PR06CA0316.outlook.office365.com (2603:10a6:20b:45b::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6134.29 via Frontend Transport; Mon, 27 Feb 2023 11:09:49 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM7EUR03FT010.mail.protection.outlook.com (100.127.141.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.12 via Frontend Transport; Mon, 27 Feb 2023 11:09:49 +0000 Received: ("Tessian outbound 333ca28169fa:v132"); Mon, 27 Feb 2023 11:09:48 +0000 X-CR-MTA-TID: 64aa7808 Received: from b0a63d958fcb.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 8DEA19E9-9E54-4BC5-B31B-7FA7F0AA37FC.1; Mon, 27 Feb 2023 11:09:42 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id b0a63d958fcb.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 27 Feb 2023 11:09:42 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kZcUPfgMfHhdTVGKQO4RzNMQ0aqjHqJU2DIshRY7iyn+L24P3gLmxZFmEuiT+ondoND2USiQBFs1u0vlU49i2y/pD6LjZStRUs62KcRtStUOoppoQLn9lInGaPuDg6UNx6bi2XSoKw1Os+GPDVf3A0WvuF6vWqeTfGaI33w39bPFvYr52eZ16e5WVSylkeOZ5sCZ67+GDkr0D4XRIHlyGG82Nyp9MF4pD+XIDDQShlL6AVnT304Wkd84ZURIgCmMze1wbAQbQUyzx7QSxYeTVMClzieBndRDdBXKuNzxTQSsmrqUdfOtJZLtSSZ5ygeC7q3rbJ94lH2ko5YMXTYvow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=403sIw3TJxk4u8k22b60ajnAph30Db4exnWxDJgMJFA=; b=iNIh2bnrPOo9ZkfgPz33UQN5LbWPKYIgTbFfDujjLbjIPhcrVQruUCgOuo2iR2ifiJW6K1MIaM77sMf4StppsTL+eQK4dxCKiIVn+p2OP/wHWeFS2ZuC8allfu/j5jXx7TLL00995PZMKzqeU437fdfUj4dXyoiMvl+mXf3JXXMcfkDrGLf21zavIOM7NsJ7gEUwjkLLvlOdwZWudrl6M7/Npn6IiUPZW/aogMuBROuTySfl1IdzYTjJInYqT7X4ukG7fDTRiQfhkmJt4qM1etQymnNNbx7m2OahDlThu16+tvAPF5tQMkprODbxExcCsBuTJvaq7CuJY3lPK+Rh3A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=403sIw3TJxk4u8k22b60ajnAph30Db4exnWxDJgMJFA=; b=Ln0gitVdWd2xmcdn/3Hs25BbxIm4hNZclkBCrZiwLh8IsudeqrmPWGbjAm9EqxyTxpYPdMKkAbduhs9lw2H1KBFcc1tjLPSUIcOSEv4uBmlb1iv3/5Cmn07r9OtSMLC7acdquvTAqHN/yfA0H2O9Z+2C2J3Tgi4yki3XcQ+8M84= Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by DBBPR08MB6316.eurprd08.prod.outlook.com (2603:10a6:10:207::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6134.29; Mon, 27 Feb 2023 11:09:35 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::210c:d369:23f7:84fe]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::210c:d369:23f7:84fe%6]) with mapi id 15.20.6134.027; Mon, 27 Feb 2023 11:09:35 +0000 From: Tamar Christina To: Richard Sandiford CC: Tamar Christina via Gcc-patches , nd , "rguenther@suse.de" , "jlaw@ventanamicro.com" Subject: RE: [PATCH 1/2]middle-end: Fix wrong overmatching of div-bitmask by using new optabs [PR108583] Thread-Topic: [PATCH 1/2]middle-end: Fix wrong overmatching of div-bitmask by using new optabs [PR108583] Thread-Index: AQHZPKpK/SYCPI4EDky3xQ0ADEnbFq7IMBSsgAABFlCAAA4mH4AafFaw Date: Mon, 27 Feb 2023 11:09:35 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: C4ED0DCEC79FB84DB73E8C0B99338873.0 x-checkrecipientchecked: true Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: VI1PR08MB5325:EE_|DBBPR08MB6316:EE_|AM7EUR03FT010:EE_|PAVPR08MB9508:EE_ X-MS-Office365-Filtering-Correlation-Id: d8eb6523-3f87-439c-033f-08db18b32457 x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 7SqH9fvUD/UKDzpP/sfA8P/pjjwIEv7FxZC91wG0EJuqIc04SakwW6yVlKVx/xORdvlA9f0IWIubo2f1G6MsEBRJtXhg0YqXmc0w2kbtf4sh+nwhu9PsBi+98LUhPzBYEZ1tg7b4uUw19aou/w/tS8zY49wmnt2coqEAc11JJkn1iZDVoQSeuMkOnWwuu9sr9n3mDoWUJn8d9m/royxhhO387Ag21k5He04eBdj64zSqFQCnP522lj6fY/6tbuC6u5tKCAx8QxaKtLBDi0IPu43E78jdeIpixhwB7FFgKTbvXzlzQKsMUDuA7sy5pv+8l5Jsl2i5maPKbSjGnXdbM5PRqbJZSB268v01c1TecQJfA+ZaXYCyt1JFjZ66VUkHSp3vFzOFV/itnA01Yx+bnTpFdG0DPk36zmjaZta5NEOyzVj0QOq6SM69Tg66VfaV8vT+oDaiI1DSXPCDD9C3kmd0FVlu4i12YVSJ6Yw/q76IiTlWxyDoutY9muYjqDIaFvqH/LcPZT8JtK2SszGHImYHqy1myHaM98vUbauipAcprT2JK8rajoJEmAHiLKpTyxkakwJG00DkzhO3rynjvJCFI5fB9LIyfMA4mPuALZ06tXUrGEXT9IP+KX2YpT5s0berKGe3avkJeaoIxU4+avZYWgGDlOHWvrn1inL/1EsS+ELrQGLh7W7SCdzFN9GtRAHWGdizyRyk2NArRYxIA2tNgdNLHPLE2MWnCpdw4EM= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR08MB5325.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(136003)(39860400002)(376002)(366004)(396003)(346002)(451199018)(41300700001)(66556008)(64756008)(66476007)(66446008)(83380400001)(4326008)(66946007)(76116006)(38100700002)(55016003)(122000001)(2906002)(38070700005)(33656002)(86362001)(6862004)(5660300002)(8676002)(30864003)(8936002)(52536014)(71200400001)(84970400001)(478600001)(7696005)(6636002)(316002)(54906003)(9686003)(26005)(186003)(6506007)(579004)(559001);DIR:OUT;SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB6316 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM7EUR03FT010.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 76abc0b0-1980-4ebc-2797-08db18b31c53 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9Bl4SrpPtwle2zt+JjE0t+DdQ3aYjPL144y6dDhMbil3t8phLtBgKHYeGfKACjoR6ONhqy7r0BkXcBEWUr4gkFrAH6wyPlJ9K9s1d3T0FfzxruF/p5Xp0C19oMChOoqXi5NoEzKv+A7rhshotda1eC6tvDZViLs51dkiWFox/jTXDvqLHnN3+YYeL/AdjhBa2oVCXpNgtbhhoZ6auK2ewhCL4RGSivLwFY83g/hjRl22qJyCz4iF92Ex73vFPyeDfmzYFbK+UW99tCy5eZM/69hirOPmQbiRMiFxLGHGoPjN90Yw8ZZi0pNAqMLriE95wEHK3IGFCWoPQ2ciDMmepA2G6rQlaXEdKBvZSFtcxzgOB6snOPOkSr4Vo7BKzAX2bUW07nRUITDyUV9vR9tsNHltQno95dUu+4fnkCfzCAV/ooqGjzmnjSG9ZlS9JmyHgEcXuhh9n5s20X1706nxq5zBmCk4B07o8gr2jEOaFx3CM7EnuEArZ8bqKJ0Hn33845QsYQOqgBcpaeNKCq3Qo6+2CnCeROw1rUoovWJUlQxre8GJXHgNczM6KxBg6nru+kwIunNQm95qPuSRGPRpEF84mKhGiup6aCYboFLx6wEw4GmqVFE/E9bUY88tU3+iv+lo2ssnMLZoIlTkPdTnumbJ36dvFgGYSQJ+4cL4eKP8NgX0T2dpRrJHIWvi2bG3AuL+c4c9H56zJWKF/YXGhGpH9HBYDfNAYTv5t/GR4dE= X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230025)(4636009)(39860400002)(136003)(396003)(346002)(376002)(451199018)(46966006)(40470700004)(36840700001)(84970400001)(82740400003)(81166007)(316002)(36860700001)(2906002)(6862004)(30864003)(40460700003)(33656002)(5660300002)(8936002)(52536014)(55016003)(40480700001)(86362001)(6506007)(70206006)(70586007)(9686003)(186003)(26005)(8676002)(4326008)(6636002)(54906003)(41300700001)(356005)(336012)(82310400005)(47076005)(478600001)(83380400001)(7696005)(107886003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Feb 2023 11:09:49.0170 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d8eb6523-3f87-439c-033f-08db18b32457 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM7EUR03FT010.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB9508 X-Spam-Status: No, score=-10.7 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,KAM_LOTSOFHASH,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,UNPARSEABLE_RELAY 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: SGksDQoNCj4gPiBJIGF2b2lkZWQgb3BlbiBjb2RpbmcgaXQgd2l0aCBhZGQgYW5kIHNoaWZ0IGJl Y2F1c2UgaXQgY3JlYXRlcyBhIDQNCj4gPiBpbnN0cnVjdGlvbnMgKGFuZCBzaGlmdHMgd2hpY2gg YXJlIHR5cGljYWxseSBzbG93KSBkZXBlbmRlbmN5IGNoYWluDQo+ID4gaW5zdGVhZCBvZiBhIGxv YWQgYW5kIG11bHRpcGx5LiAgVGhpcyBjaGFuZ2UsIHVubGVzcyB0aGUgdGFyZ2V0IGlzDQo+ID4g a25vd24gdG8gb3B0aW1pemUgaXQgZnVydGhlciBpcyB1bmxpa2VseSB0byBiZSBiZW5lZmljaWFs LiAgQW5kIGJ5IHRoZQ0KPiA+IHRpbWUgd2UgZ2V0IHRvIGNvc3RpbmcgdGhlIG9ubHkgYWx0ZXJu YXRpdmUgaXMgdG8gdW5kbyB0aGUgZXhpc3RpbmcgcGF0dGVybiBhbmQNCj4gc28geW91IGxvc2Ug dGhlIGdlbmVyYWwgc2hpZnQgb3B0aW1pemF0aW9uLg0KPiA+DQo+ID4gU28gaXQgc2VlbWVkIHVu d2lzZSB0byBvcGVuIGNvZGUgYXMgc2hpZnRzLCBnaXZlbiB0aGUgY29kZWdlbiBvdXQgb2YNCj4g PiB0aGUgdmVjdG9yaXplciB3b3VsZCBiZSBkZWdlbmVyYXRlIGZvciBtb3N0IHRhcmdldHMgb3Ig b25lIG5lZWRzIHRoZQ0KPiA+IG1vcmUgY29tcGxpY2F0ZWQgcm91dGUgb2YgY29zdGluZyBkdXJp bmcgcGF0dGVybiBtYXRjaGluZyBhbHJlYWR5Lg0KPiANCj4gSG1tLCBPSy4gIFRoYXQgc2VlbXMg bGlrZSBhIGNvc3QtbW9kZWwgdGhpbmcgdGhvdWdoLCByYXRoZXIgdGhhbiBzb21ldGhpbmcNCj4g dGhhdCBzaG91bGQgYmUgZXhwb3NlZCB0aHJvdWdoIG9wdGFicy4gIEFuZCBJIGltYWdpbmUgdGhl IG9wZW4tY29kZWQNCj4gdmVyc2lvbiB3b3VsZCBzdGlsbCBiZSBiZXR0ZXIgdGhhbiBub3RoaW5n IG9uIHRhcmdldHMgd2l0aG91dCBoaWdocGFydCBtdWx0aXBseS4NCj4gDQo+IFNvIGhvdyBhYm91 dCByZXBsYWNpbmcgdGhlIGhvb2sgd2l0aCBvbmUgdGhhdCBzaW1wbHkgYXNrcyB3aGV0aGVyIGRp dmlzaW9uDQo+IHRocm91Z2ggaGlnaHBhcnQgbXVsdGlwbGljYXRpb24gaXMgcHJlZmVycmVkIG92 ZXIgdGhlIGFkZC9zaGlmdCBzZXF1ZW5jZT8NCj4gKFVuZm9ydHVuYXRlbHkgaXQncyBub3QgZ29p bmcgdG8gYmUgcG9zc2libGUgdG8gd29yayB0aGF0IG91dCBmcm9tIGV4aXN0aW5nDQo+IGluZm9y bWF0aW9uLikNCg0KU28gdGhpcyBkb2Vzbid0IHdvcmsgZm9yIFNWRS4gIEZvciBTVkUgdGhlIG11 bHRpcGxpY2F0aW9uIHdpZGVuaW5nIHBhc3MgaW50cm9kdWNlcw0KRk1BcyBhdCBnaW1wbGUgbGV2 ZWwuICBTbyBpbiB0aGUgY2FzZXMgd2hlcmUgdGhlIG9wZXJhdGlvbiBpcyBmZWQgZnJvbSBhIHdp ZGVuaW5nDQptdWx0aXBsaWNhdGlvbiB3ZSBlbmQgdXAgZ2VuZXJhdGluZyBGTUEuICBJZiB0aGF0 IHdhcyBpdCBJIGNvdWxkIGhhdmUgbWF0Y2hlZCBGTUEuDQoNCkJ1dCBpdCBhbHNvIHB1c2hlcyB0 aGUgbXVsdGlwbGljYXRpb24gaW4gdGhlIHNlY29uZCBvcGVyYW5kIGJlY2F1c2UgaXQgbm8gbG9u Z2VyIGhhcw0KYSBtdWwgdG8gc2hhcmUgdGhlIHJlc3VsdHMgd2l0aC4NCg0KSW4gYW55IGNhc2Us IHRoZSBnaW1wbGUgY29kZSBpcyB0cmFuc2Zvcm1lZCBpbnRvDQoNCnZlY3RfXzMuOF8xMjIgPSAu TUFTS19MT0FEIChfMjksIDhCLCBsb29wX21hc2tfMTIxKTsNCnZlY3RfcGF0dF81Ny45XzEyMyA9 ICh2ZWN0b3IoWzgsOF0pIHVuc2lnbmVkIHNob3J0KSB2ZWN0X18zLjhfMTIyOw0KdmVjdF9wYXR0 XzY0LjExXzEyNyA9IC5GTUEgKHZlY3RfcGF0dF81Ny45XzEyMywgdmVjdF9jc3RfXzEyNCwgeyAy NTcsIC4uLiB9KTsNCnZlY3RfcGF0dF82NS4xMl8xMjggPSB2ZWN0X3BhdHRfNjQuMTFfMTI3ID4+ IDg7DQp2ZWN0X3BhdHRfNjYuMTNfMTI5ID0gLkZNQSAodmVjdF9wYXR0XzU3LjlfMTIzLCB2ZWN0 X2NzdF9fMTI0LCB2ZWN0X3BhdHRfNjUuMTJfMTI4KTsNCnZlY3RfcGF0dF82Mi4xNF8xMzAgPSB2 ZWN0X3BhdHRfNjYuMTNfMTI5ID4+IDg7DQp2ZWN0X3BhdHRfNjguMTVfMTMxID0gKHZlY3Rvcihb OCw4XSkgdW5zaWduZWQgY2hhckQuMjEpIHZlY3RfcGF0dF82Mi4xNF8xMzA7DQoNClRoaXMgdHJh bnNmb3JtYXRpb24gaXMgbXVjaCB3b3JzZSB0aGFuIHRoZSBvcmlnaW5hbCBjb2RlLCBpdCBleHRl bmRlZCB0aGUgZGVwZW5kZW5jeQ0KY2hhaW4gd2l0aCBhbm90aGVyIGV4cGVuc2l2ZSBpbnN0cnVj dGlvbi4gSSBjYW4gdHJ5IHRvIGNvcnJlY3QgdGhpcyBpbiBSVEwgYnkgbWF0Y2hpbmcNCkZNQSBh bmQgc2hpZnQgYW5kIHNwbGl0dGluZyBpbnRvIE1VTCArIEFEREhOQiBhbmQgaG9wZSBDU0UgdGFr ZXMgY2FyZSBvZiB0aGUgZXh0cmEgbXVsLg0KDQpCdXQgdGhpcyBzZWVtcyBsaWtlIGEgaGFjaywg YW5kIGl0J3MgYmFzaWNhbGx5IHVuZG9pbmcgdGhlIGVhcmxpZXIgdHJhbnNmb3JtYXRpb24uICBJ dCBzZWVtcyB0bw0KbWUgdGhhdCB0aGUgb3BlbiBjb2RpbmcgaXMgYSBiYWQgaWRlYS4NCg0KRG8g eW91IHN0aWxsIHdhbnQgaXQgUmljaGFyZD8NCg0KVGhhbmtzLA0KVGFtYXINCj4gDQo+IFRoYW5r cywNCj4gUmljaGFyZA0KPiANCj4gPg0KPiA+Pg0KPiA+PiBTb21lIGNvbW1lbnRzIGluIGFkZGl0 aW9uIHRvIFJpY2hhcmQnczoNCj4gPj4NCj4gPj4gVGFtYXIgQ2hyaXN0aW5hIHZpYSBHY2MtcGF0 Y2hlcyA8Z2NjLXBhdGNoZXNAZ2NjLmdudS5vcmc+IHdyaXRlczoNCj4gPj4gPiBIaSBBbGwsDQo+ ID4+ID4NCj4gPj4gPiBBcyBkaXNjdXNzZWQgaW4gdGhlIHRpY2tldCwgdGhpcyByZXBsYWNlcyB0 aGUgYXBwcm9hY2ggZm9yDQo+ID4+ID4gb3B0aW1pemluZyB0aGUgZGl2IGJ5IGJpdG1hc2sgb3Bl cmF0aW9uIGZyb20gYSBob29rIGludG8gb3B0YWJzDQo+ID4+ID4gaW1wbGVtZW50ZWQgdGhyb3Vn aCBhZGRfaGlnaHBhcnQuDQo+ID4+ID4NCj4gPj4gPiBJbiBvcmRlciB0byBiZSBhYmxlIHRvIHVz ZSB0aGlzIHdlIG5lZWQgdG8gY2hlY2sgd2hldGhlciB0aGUNCj4gPj4gPiBjdXJyZW50IHByZWNp c2lvbiBoYXMgZW5vdWdoIGJpdHMgdG8gZG8gdGhlIG9wZXJhdGlvbiB3aXRob3V0IGFueQ0KPiA+ PiA+IG9mIHRoZSBhZGRpdGlvbnMNCj4gPj4gb3ZlcmZsb3dpbmcuDQo+ID4+ID4NCj4gPj4gPiBX ZSB1c2UgcmFuZ2UgaW5mb3JtYXRpb24gdG8gZGV0ZXJtaW5lIHRoaXMgYW5kIG9ubHkgZG8gdGhl DQo+ID4+ID4gb3BlcmF0aW9uIGlmIHdlJ3JlIHN1cmUgYW0gb3ZlcmZsb3cgd29uJ3Qgb2NjdXIu DQo+ID4+ID4NCj4gPj4gPiBCb290c3RyYXBwZWQgUmVndGVzdGVkIG9uIGFhcmNoNjQtbm9uZS1s aW51eC1nbnUgYW5kIDxvbi1nb2luZz4NCj4gPj4gaXNzdWVzLg0KPiA+PiA+DQo+ID4+ID4gT2sg Zm9yIG1hc3Rlcj8NCj4gPj4gPg0KPiA+PiA+IFRoYW5rcywNCj4gPj4gPiBUYW1hcg0KPiA+PiA+ DQo+ID4+ID4gZ2NjL0NoYW5nZUxvZzoNCj4gPj4gPg0KPiA+PiA+IAlQUiB0YXJnZXQvMTA4NTgz DQo+ID4+ID4gCSogZG9jL3RtLnRleGkgKFRBUkdFVF9WRUNUT1JJWkVfQ0FOX1NQRUNJQUxfRElW X0JZX0NPTlNUKToNCj4gPj4gUmVtb3ZlLg0KPiA+PiA+IAkqIGRvYy90bS50ZXhpLmluOiBMaWtl d2lzZS4NCj4gPj4gPiAJKiBleHBsb3cuY2MgKHJvdW5kX3B1c2gsIGFsaWduX2R5bmFtaWNfYWRk cmVzcyk6IFJldmVydCBwcmV2aW91cw0KPiA+PiBwYXRjaC4NCj4gPj4gPiAJKiBleHBtZWQuY2Mg KGV4cGFuZF9kaXZtb2QpOiBMaWtld2lzZS4NCj4gPj4gPiAJKiBleHBtZWQuaCAoZXhwYW5kX2Rp dm1vZCk6IExpa2V3aXNlLg0KPiA+PiA+IAkqIGV4cHIuY2MgKGZvcmNlX29wZXJhbmQsIGV4cGFu ZF9leHByX2Rpdm1vZCk6IExpa2V3aXNlLg0KPiA+PiA+IAkqIG9wdGFicy5jYyAoZXhwYW5kX2Rv dWJsZXdvcmRfbW9kLA0KPiA+PiBleHBhbmRfZG91Ymxld29yZF9kaXZtb2QpOiBMaWtld2lzZS4N Cj4gPj4gPiAJKiBpbnRlcm5hbC1mbi5kZWYgKEFEREgpOiBOZXcuDQo+ID4+ID4gCSogb3B0YWJz LmRlZiAoc2FkZF9oaWdocGFydF9vcHRhYiwgdWFkZF9oaWdocGFydF9vcHRhYik6IE5ldy4NCj4g Pj4gPiAJKiBkb2MvbWQudGV4aTogRG9jdW1lbnQgdGhlbS4NCj4gPj4gPiAJKiBkb2MvcnRsLnRl eGk6IExpa2V3aXNlLg0KPiA+PiA+IAkqIHRhcmdldC5kZWYgKGNhbl9zcGVjaWFsX2Rpdl9ieV9j b25zdCk6IFJlbW92ZS4NCj4gPj4gPiAJKiB0YXJnZXQuaDogUmVtb3ZlIHRyZWUtY29yZS5oIGlu Y2x1ZGUNCj4gPj4gPiAJKiB0YXJnaG9va3MuY2MgKGRlZmF1bHRfY2FuX3NwZWNpYWxfZGl2X2J5 X2NvbnN0KTogUmVtb3ZlLg0KPiA+PiA+IAkqIHRhcmdob29rcy5oIChkZWZhdWx0X2Nhbl9zcGVj aWFsX2Rpdl9ieV9jb25zdCk6IFJlbW92ZS4NCj4gPj4gPiAJKiB0cmVlLXZlY3QtZ2VuZXJpYy5j YyAoZXhwYW5kX3ZlY3Rvcl9vcGVyYXRpb24pOiBSZW1vdmUgaG9vay4NCj4gPj4gPiAJKiB0cmVl LXZlY3QtcGF0dGVybnMuY2MgKHZlY3RfcmVjb2dfZGl2bW9kX3BhdHRlcm4pOiBSZW1vdmUgaG9v aw0KPiA+PiBhbmQNCj4gPj4gPiAJaW1wbGVtZW50IG5ldyBvYnRhYiByZWNvZ25pdGlvbiBiYXNl ZCBvbiByYW5nZS4NCj4gPj4gPiAJKiB0cmVlLXZlY3Qtc3RtdHMuY2MgKHZlY3Rvcml6YWJsZV9v cGVyYXRpb24pOiBSZW1vdmUgaG9vay4NCj4gPj4gPg0KPiA+PiA+IGdjYy90ZXN0c3VpdGUvQ2hh bmdlTG9nOg0KPiA+PiA+DQo+ID4+ID4gCVBSIHRhcmdldC8xMDg1ODMNCj4gPj4gPiAJKiBnY2Mu ZGcvdmVjdC92ZWN0LWRpdi1iaXRtYXNrLTQuYzogTmV3IHRlc3QuDQo+ID4+ID4gCSogZ2NjLmRn L3ZlY3QvdmVjdC1kaXYtYml0bWFzay01LmM6IE5ldyB0ZXN0Lg0KPiA+PiA+DQo+ID4+ID4gLS0t IGlubGluZSBjb3B5IG9mIHBhdGNoIC0tDQo+ID4+ID4gZGlmZiAtLWdpdCBhL2djYy9kb2MvbWQu dGV4aSBiL2djYy9kb2MvbWQudGV4aSBpbmRleA0KPiA+PiA+DQo+ID4+DQo+IDcyMzVkMzRjNGIz MDk0OWZlYmZhMTBkNWE2MjZhYzkzNTgyODFjZmEuLjAyMDA0YzRiMGY0ZDg4ZGZmZTk4MGYNCj4g NzQwODANCj4gPj4gMw0KPiA+PiA+IDg1OTVlMjFhZjM1ZCAxMDA2NDQNCj4gPj4gPiAtLS0gYS9n Y2MvZG9jL21kLnRleGkNCj4gPj4gPiArKysgYi9nY2MvZG9jL21kLnRleGkNCj4gPj4gPiBAQCAt NTY2OCw2ICs1NjY4LDE4IEBAIHJlcHJlc2VudGVkIGluIFJUTCB1c2luZyBhDQo+ID4+IEBjb2Rl e3NtdWxfaGlnaHBhcnR9IFJUWCBleHByZXNzaW9uLg0KPiA+PiA+ICBTaW1pbGFyLCBidXQgdGhl IG11bHRpcGxpY2F0aW9uIGlzIHVuc2lnbmVkLiAgVGhpcyBtYXkgYmUNCj4gPj4gPiByZXByZXNl bnRlZCBpbiBSVEwgdXNpbmcgYW4gQGNvZGV7dW11bF9oaWdocGFydH0gUlRYIGV4cHJlc3Npb24u DQo+ID4+ID4NCj4gPj4gPiArQGNpbmRleCBAY29kZXtzYWRkQHZhcnttfTNfaGlnaHBhcnR9IGlu c3RydWN0aW9uIHBhdHRlcm4gQGl0ZW0NCj4gPj4gPiArQHNhbXB7c211bEB2YXJ7bX0zX2hpZ2hw YXJ0fQ0KPiA+Pg0KPiA+PiBzYWRkDQo+ID4+DQo+ID4+ID4gK1BlcmZvcm0gYSBzaWduZWQgYWRk aXRpb24gb2Ygb3BlcmFuZHMgMSBhbmQgMiwgd2hpY2ggaGF2ZSBtb2RlDQo+ID4+ID4gK0B2YXJ7 bX0sIGFuZCBzdG9yZSB0aGUgbW9zdCBzaWduaWZpY2FudCBoYWxmIG9mIHRoZSBwcm9kdWN0IGlu IG9wZXJhbmQNCj4gMC4NCj4gPj4gPiArVGhlIGxlYXN0IHNpZ25pZmljYW50IGhhbGYgb2YgdGhl IHByb2R1Y3QgaXMgZGlzY2FyZGVkLiAgVGhpcyBtYXkNCj4gPj4gPiArYmUgcmVwcmVzZW50ZWQg aW4gUlRMIHVzaW5nIGEgQGNvZGV7c2FkZF9oaWdocGFydH0gUlRYIGV4cHJlc3Npb24uDQo+ID4+ ID4gKw0KPiA+PiA+ICtAY2luZGV4IEBjb2Rle3VhZGRAdmFye219M19oaWdocGFydH0gaW5zdHJ1 Y3Rpb24gcGF0dGVybiBAaXRlbQ0KPiA+PiA+ICtAc2FtcHt1YWRkQHZhcnttfTNfaGlnaHBhcnR9 IFNpbWlsYXIsIGJ1dCB0aGUgYWRkaXRpb24gaXMgdW5zaWduZWQuDQo+ID4+ID4gK1RoaXMgbWF5 IGJlIHJlcHJlc2VudGVkIGluIFJUTCB1c2luZyBhbiBAY29kZXt1YWRkX2hpZ2hwYXJ0fSBSVFgN Cj4gPj4gPiArZXhwcmVzc2lvbi4NCj4gPj4gPiArDQo+ID4+ID4gIEBjaW5kZXggQGNvZGV7bWFk ZEB2YXJ7bX1AdmFye259NH0gaW5zdHJ1Y3Rpb24gcGF0dGVybiAgQGl0ZW0NCj4gPj4gPiBAc2Ft cHttYWRkQHZhcnttfUB2YXJ7bn00fSAgTXVsdGlwbHkgb3BlcmFuZHMgMSBhbmQgMiwgc2lnbi0N Cj4gZXh0ZW5kDQo+ID4+ID4gdGhlbSB0byBtb2RlIEB2YXJ7bn0sIGFkZCBkaWZmIC0tZ2l0IGEv Z2NjL2RvYy9ydGwudGV4aQ0KPiA+PiA+IGIvZ2NjL2RvYy9ydGwudGV4aSBpbmRleA0KPiA+PiA+ DQo+ID4+DQo+IGQxMzgwZTFlYjNiYTZiMjg1MzY4NmY0MWYyYmY5MzdiZmNiZWQxZmUuLjYzYTdl ZjZlNTY2ZWVlYTRmMTRjMDANCj4gMzQzDQo+ID4+IGQxNw0KPiA+PiA+IDE5NDBlYzQyMjJmMyAx MDA2NDQNCj4gPj4gPiAtLS0gYS9nY2MvZG9jL3J0bC50ZXhpDQo+ID4+ID4gKysrIGIvZ2NjL2Rv Yy9ydGwudGV4aQ0KPiA+PiA+IEBAIC0yNTM1LDYgKzI1MzUsMTcgQEAgb3V0IGluIG1hY2hpbmUg bW9kZSBAdmFye219Lg0KPiA+PiA+IEBjb2Rle3NtdWxfaGlnaHBhcnR9IHJldHVybnMgdGhlIGhp Z2ggcGFydCAgb2YgYSBzaWduZWQNCj4gPj4gPiBtdWx0aXBsaWNhdGlvbiwgQGNvZGV7dW11bF9o aWdocGFydH0gcmV0dXJucyB0aGUgaGlnaCBwYXJ0ICBvZiBhbg0KPiA+PiA+IHVuc2lnbmVkDQo+ ID4+IG11bHRpcGxpY2F0aW9uLg0KPiA+PiA+DQo+ID4+ID4gK0BmaW5kZXggc2FkZF9oaWdocGFy dA0KPiA+PiA+ICtAZmluZGV4IHVhZGRfaGlnaHBhcnQNCj4gPj4gPiArQGNpbmRleCBoaWdoLXBh cnQgYWRkaXRpb24NCj4gPj4gPiArQGNpbmRleCBhZGRpdGlvbiBoaWdoIHBhcnQNCj4gPj4gPiAr QGl0ZW0gKHNhZGRfaGlnaHBhcnQ6QHZhcnttfSBAdmFye3h9IEB2YXJ7eX0pIEBpdGVteA0KPiA+ PiA+ICsodWFkZF9oaWdocGFydDpAdmFye219IEB2YXJ7eH0gQHZhcnt5fSkgUmVwcmVzZW50cyB0 aGUgaGlnaC1wYXJ0DQo+ID4+ID4gK2FkZGl0aW9uIG9mIEB2YXJ7eH0gYW5kIEB2YXJ7eX0gY2Fy cmllZCBvdXQgaW4gbWFjaGluZSBtb2RlIEB2YXJ7bX0uDQo+ID4+ID4gK0Bjb2Rle3NhZGRfaGln aHBhcnR9IHJldHVybnMgdGhlIGhpZ2ggcGFydCBvZiBhIHNpZ25lZCBhZGRpdGlvbiwNCj4gPj4g PiArQGNvZGV7dWFkZF9oaWdocGFydH0gcmV0dXJucyB0aGUgaGlnaCBwYXJ0IG9mIGFuIHVuc2ln bmVkIGFkZGl0aW9uLg0KPiA+Pg0KPiA+PiBUaGUgcGF0Y2ggZG9lc24ndCBhZGQgdGhlc2UgUlRM IGNvZGVzIHRob3VnaC4NCj4gPj4NCj4gPj4gPiArDQo+ID4+ID4gIEBmaW5kZXggZm1hDQo+ID4+ ID4gIEBjaW5kZXggZnVzZWQgbXVsdGlwbHktYWRkDQo+ID4+ID4gIEBpdGVtIChmbWE6QHZhcntt fSBAdmFye3h9IEB2YXJ7eX0gQHZhcnt6fSkgZGlmZiAtLWdpdA0KPiA+PiA+IGEvZ2NjL2RvYy90 bS50ZXhpIGIvZ2NjL2RvYy90bS50ZXhpIGluZGV4DQo+ID4+ID4NCj4gPj4NCj4gYzZjODkxOTcy ZDFlNThjZDE2M2IyNTliYTk2YTU5OWQ2MjMyNjg2NS4uM2FiMjAzMWEzMzZiODc1OGQ1Nw0KPiA5 MTQ4NDANCj4gPj4gMTdlDQo+ID4+ID4gNmIwZDYyYWIwNzdlIDEwMDY0NA0KPiA+PiA+IC0tLSBh L2djYy9kb2MvdG0udGV4aQ0KPiA+PiA+ICsrKyBiL2djYy9kb2MvdG0udGV4aQ0KPiA+PiA+IEBA IC02MTM3LDIyICs2MTM3LDYgQEAgaW5zdHJ1Y3Rpb24gcGF0dGVybi4gIFRoZXJlIGlzIG5vIG5l ZWQgZm9yDQo+ID4+ID4gdGhlIGhvb2sgdG8gaGFuZGxlIHRoZXNlIHR3byAgaW1wbGVtZW50YXRp b24gYXBwcm9hY2hlcyBpdHNlbGYuDQo+ID4+ID4gIEBlbmQgZGVmdHlwZWZuDQo+ID4+ID4NCj4g Pj4gPiAtQGRlZnR5cGVmbiB7VGFyZ2V0IEhvb2t9IGJvb2wNCj4gPj4gPiBUQVJHRVRfVkVDVE9S SVpFX0NBTl9TUEVDSUFMX0RJVl9CWV9DT05TVCAoZW51bQ0KPiA+PiBAdmFye3RyZWVfY29kZX0s IHRyZWUNCj4gPj4gPiBAdmFye3ZlY3R5cGV9LCB3aWRlX2ludCBAdmFye2NvbnN0YW50fSwgcnR4 ICpAdmFye291dHB1dH0sIHJ0eA0KPiA+PiA+IEB2YXJ7aW4wfSwgcnR4IEB2YXJ7aW4xfSkgLVRo aXMgaG9vayBpcyB1c2VkIHRvIHRlc3Qgd2hldGhlciB0aGUNCj4gPj4gPiB0YXJnZXQgaGFzIGEg c3BlY2lhbCBtZXRob2Qgb2YgLWRpdmlzaW9uIG9mIHZlY3RvcnMgb2YgdHlwZQ0KPiA+PiA+IEB2 YXJ7dmVjdHlwZX0NCj4gPj4gdXNpbmcgdGhlIHZhbHVlIEB2YXJ7Y29uc3RhbnR9LCAtYW5kIHBy b2R1Y2luZyBhIHZlY3RvciBvZiB0eXBlDQo+ID4+IEB2YXJ7dmVjdHlwZX0uICBUaGUgZGl2aXNp b24gLXdpbGwgdGhlbiBub3QgYmUgZGVjb21wb3NlZCBieSB0aGUNCj4gPj4gdmVjdG9yaXplciBh bmQga2VwdCBhcyBhIGRpdi4NCj4gPj4gPiAtDQo+ID4+ID4gLVdoZW4gdGhlIGhvb2sgaXMgYmVp bmcgdXNlZCB0byB0ZXN0IHdoZXRoZXIgdGhlIHRhcmdldCBzdXBwb3J0cyBhDQo+ID4+ID4gc3Bl Y2lhbCAtZGl2aWRlLCBAdmFye2luMH0sIEB2YXJ7aW4xfSwgYW5kIEB2YXJ7b3V0cHV0fSBhcmUg YWxsIG51bGwuDQo+ID4+ID4gV2hlbiB0aGUgaG9vayAtaXMgYmVpbmcgdXNlZCB0byBlbWl0IGEg ZGl2aXNpb24sIEB2YXJ7aW4wfSBhbmQNCj4gPj4gPiBAdmFye2luMX0gYXJlIHRoZSBzb3VyY2Ug LXZlY3RvcnMgb2YgdHlwZSBAdmFye3ZlY3R0eXBlfSBhbmQNCj4gPj4gPiBAdmFye291dHB1dH0g aXMgdGhlIGRlc3RpbmF0aW9uIHZlY3RvciBvZiAtdHlwZSBAdmFye3ZlY3R5cGV9Lg0KPiA+PiA+ IC0NCj4gPj4gPiAtUmV0dXJuIHRydWUgaWYgdGhlIG9wZXJhdGlvbiBpcyBwb3NzaWJsZSwgZW1p dHRpbmcgaW5zdHJ1Y3Rpb25zDQo+ID4+ID4gZm9yIGl0IC1pZiBydHhlcyBhcmUgcHJvdmlkZWQg YW5kIHVwZGF0aW5nIEB2YXJ7b3V0cHV0fS4NCj4gPj4gPiAtQGVuZCBkZWZ0eXBlZm4NCj4gPj4g PiAtDQo+ID4+ID4gIEBkZWZ0eXBlZm4ge1RhcmdldCBIb29rfSB0cmVlDQo+ID4+ID4gVEFSR0VU X1ZFQ1RPUklaRV9CVUlMVElOX1ZFQ1RPUklaRURfRlVOQ1RJT04gKHVuc2lnbmVkDQo+ID4+IEB2 YXJ7Y29kZX0sDQo+ID4+ID4gdHJlZSBAdmFye3ZlY190eXBlX291dH0sIHRyZWUgQHZhcnt2ZWNf dHlwZV9pbn0pICBUaGlzIGhvb2sgc2hvdWxkDQo+ID4+ID4gcmV0dXJuIHRoZSBkZWNsIG9mIGEg ZnVuY3Rpb24gdGhhdCBpbXBsZW1lbnRzIHRoZSAgdmVjdG9yaXplZA0KPiA+PiA+IHZhcmlhbnQg b2YgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIEBjb2Rle2NvbWJpbmVkX2ZufSBjb2RlIGRpZmYgLS1n aXQNCj4gPj4gPiBhL2djYy9kb2MvdG0udGV4aS5pbiBiL2djYy9kb2MvdG0udGV4aS5pbiBpbmRl eA0KPiA+PiA+DQo+ID4+DQo+IDYxM2IyNTM0MTQ5NDE1ZjQ0MjE2M2Q1OTk1MDNlZmFmNDIzYjY3 M2IuLjg3OTBmNGU0NGI5OGI1MWFkNWQNCj4gMWVmZWMwDQo+ID4+IGEzYQ0KPiA+PiA+IGJjY2Qx YzI5M2M3YiAxMDA2NDQNCj4gPj4gPiAtLS0gYS9nY2MvZG9jL3RtLnRleGkuaW4NCj4gPj4gPiAr KysgYi9nY2MvZG9jL3RtLnRleGkuaW4NCj4gPj4gPiBAQCAtNDE3Myw4ICs0MTczLDYgQEAgYWRk cmVzczsgIGJ1dCBvZnRlbiBhIG1hY2hpbmUtZGVwZW5kZW50DQo+ID4+IHN0cmF0ZWd5IGNhbiBn ZW5lcmF0ZSBiZXR0ZXIgY29kZS4NCj4gPj4gPg0KPiA+PiA+ICBAaG9vayBUQVJHRVRfVkVDVE9S SVpFX1ZFQ19QRVJNX0NPTlNUDQo+ID4+ID4NCj4gPj4gPiAtQGhvb2sgVEFSR0VUX1ZFQ1RPUkla RV9DQU5fU1BFQ0lBTF9ESVZfQllfQ09OU1QNCj4gPj4gPiAtDQo+ID4+ID4gIEBob29rIFRBUkdF VF9WRUNUT1JJWkVfQlVJTFRJTl9WRUNUT1JJWkVEX0ZVTkNUSU9ODQo+ID4+ID4NCj4gPj4gPiAg QGhvb2sgVEFSR0VUX1ZFQ1RPUklaRV9CVUlMVElOX01EX1ZFQ1RPUklaRURfRlVOQ1RJT04NCj4g Pj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL2V4cGxvdy5jYyBiL2djYy9leHBsb3cuY2MgaW5kZXgNCj4g Pj4gPg0KPiA+Pg0KPiA4MzQzOWIzMmFiZTFiOWFhNGI3OTgzZWI2Mjk4MDRmOTc0ODZhY2JkLi5i ZTkxOTViMzMzMjNlZTU1OTdmYw0KPiAyMTJmMA0KPiA+PiBiZWYNCj4gPj4gPiBhMDE2ZWVhNDU3 M2MgMTAwNjQ0DQo+ID4+ID4gLS0tIGEvZ2NjL2V4cGxvdy5jYw0KPiA+PiA+ICsrKyBiL2djYy9l eHBsb3cuY2MNCj4gPj4gPiBAQCAtMTAzNyw3ICsxMDM3LDcgQEAgcm91bmRfcHVzaCAocnR4IHNp emUpDQo+ID4+ID4gICAgICAgVFJVTkNfRElWX0VYUFIuICAqLw0KPiA+PiA+ICAgIHNpemUgPSBl eHBhbmRfYmlub3AgKFBtb2RlLCBhZGRfb3B0YWIsIHNpemUsIGFsaWdubTFfcnR4LA0KPiA+PiA+ ICAJCSAgICAgICBOVUxMX1JUWCwgMSwgT1BUQUJfTElCX1dJREVOKTsNCj4gPj4gPiAtICBzaXpl ID0gZXhwYW5kX2Rpdm1vZCAoMCwgVFJVTkNfRElWX0VYUFIsIFBtb2RlLCBOVUxMLCBOVUxMLA0K PiA+PiA+IHNpemUsIGFsaWduX3J0eCwNCj4gPj4gPiArICBzaXplID0gZXhwYW5kX2Rpdm1vZCAo MCwgVFJVTkNfRElWX0VYUFIsIFBtb2RlLCBzaXplLCBhbGlnbl9ydHgsDQo+ID4+ID4gIAkJCU5V TExfUlRYLCAxKTsNCj4gPj4gPiAgICBzaXplID0gZXhwYW5kX211bHQgKFBtb2RlLCBzaXplLCBh bGlnbl9ydHgsIE5VTExfUlRYLCAxKTsNCj4gPj4gPg0KPiA+PiA+IEBAIC0xMjAzLDcgKzEyMDMs NyBAQCBhbGlnbl9keW5hbWljX2FkZHJlc3MgKHJ0eCB0YXJnZXQsIHVuc2lnbmVkDQo+ID4+IHJl cXVpcmVkX2FsaWduKQ0KPiA+PiA+ICAJCQkgZ2VuX2ludF9tb2RlIChyZXF1aXJlZF9hbGlnbiAv IEJJVFNfUEVSX1VOSVQgLSAxLA0KPiA+PiA+ICAJCQkJICAgICAgIFBtb2RlKSwNCj4gPj4gPiAg CQkJIE5VTExfUlRYLCAxLCBPUFRBQl9MSUJfV0lERU4pOw0KPiA+PiA+IC0gIHRhcmdldCA9IGV4 cGFuZF9kaXZtb2QgKDAsIFRSVU5DX0RJVl9FWFBSLCBQbW9kZSwgTlVMTCwgTlVMTCwNCj4gPj4g PiB0YXJnZXQsDQo+ID4+ID4gKyAgdGFyZ2V0ID0gZXhwYW5kX2Rpdm1vZCAoMCwgVFJVTkNfRElW X0VYUFIsIFBtb2RlLCB0YXJnZXQsDQo+ID4+ID4gIAkJCSAgZ2VuX2ludF9tb2RlIChyZXF1aXJl ZF9hbGlnbiAvIEJJVFNfUEVSX1VOSVQsDQo+ID4+ID4gIAkJCQkJUG1vZGUpLA0KPiA+PiA+ICAJ CQkgIE5VTExfUlRYLCAxKTsNCj4gPj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL2V4cG1lZC5oIGIvZ2Nj L2V4cG1lZC5oIGluZGV4DQo+ID4+ID4NCj4gPj4NCj4gMDQxOWUyZGFjODU4NTA4ODljZTBiZWU1 OTUxNWUzMWE4MGM1ODJkZS4uNGRmZTYzNWMyMmVlNDlmMmRiYTRjDQo+IDUzNjQNCj4gPj4gMDk0 DQo+ID4+ID4gMTYyODA2OGYzOTAxIDEwMDY0NA0KPiA+PiA+IC0tLSBhL2djYy9leHBtZWQuaA0K PiA+PiA+ICsrKyBiL2djYy9leHBtZWQuaA0KPiA+PiA+IEBAIC03MTAsOSArNzEwLDggQEAgZXh0 ZXJuIHJ0eCBleHBhbmRfc2hpZnQgKGVudW0gdHJlZV9jb2RlLA0KPiA+PiA+IG1hY2hpbmVfbW9k ZSwgcnR4LCBwb2x5X2ludDY0LCBydHgsICBleHRlcm4gcnR4IG1heWJlX2V4cGFuZF9zaGlmdA0K PiA+PiAoZW51bSB0cmVlX2NvZGUsIG1hY2hpbmVfbW9kZSwgcnR4LCBpbnQsIHJ0eCwNCj4gPj4g PiAgCQkJICAgICAgIGludCk7DQo+ID4+ID4gICNpZmRlZiBHQ0NfT1BUQUJTX0gNCj4gPj4gPiAt ZXh0ZXJuIHJ0eCBleHBhbmRfZGl2bW9kIChpbnQsIGVudW0gdHJlZV9jb2RlLCBtYWNoaW5lX21v ZGUsIHRyZWUsDQo+ID4+IHRyZWUsDQo+ID4+ID4gLQkJCSAgcnR4LCBydHgsIHJ0eCwgaW50LA0K PiA+PiA+IC0JCQkgIGVudW0gb3B0YWJfbWV0aG9kcyA9IE9QVEFCX0xJQl9XSURFTik7DQo+ID4+ ID4gK2V4dGVybiBydHggZXhwYW5kX2Rpdm1vZCAoaW50LCBlbnVtIHRyZWVfY29kZSwgbWFjaGlu ZV9tb2RlLCBydHgsDQo+ID4+IHJ0eCwNCj4gPj4gPiArCQkJICBydHgsIGludCwgZW51bSBvcHRh Yl9tZXRob2RzID0NCj4gPj4gT1BUQUJfTElCX1dJREVOKTsNCj4gPj4gPiAgI2VuZGlmDQo+ID4+ ID4gICNlbmRpZg0KPiA+PiA+DQo+ID4+ID4gZGlmZiAtLWdpdCBhL2djYy9leHBtZWQuY2MgYi9n Y2MvZXhwbWVkLmNjIGluZGV4DQo+ID4+ID4NCj4gPj4NCj4gOTE3MzYwMTk5Y2E1NjE1N2NmM2Mz NjkzYjY1ZTkzY2Q5ZDhlZDI0NC4uMTU1M2VhOGUzMWViNjQzMzAyNWENCj4gYjE4YTMNCj4gPj4g YTU5DQo+ID4+ID4gYzE2OWQzYjc2OTJmIDEwMDY0NA0KPiA+PiA+IC0tLSBhL2djYy9leHBtZWQu Y2MNCj4gPj4gPiArKysgYi9nY2MvZXhwbWVkLmNjDQo+ID4+ID4gQEAgLTQyMjIsOCArNDIyMiw4 IEBAIGV4cGFuZF9zZGl2X3BvdzIgKHNjYWxhcl9pbnRfbW9kZSBtb2RlLA0KPiBydHgNCj4gPj4g b3AwLA0KPiA+PiA+IEhPU1RfV0lERV9JTlQgZCkNCj4gPj4gPg0KPiA+PiA+ICBydHgNCj4gPj4g PiAgZXhwYW5kX2Rpdm1vZCAoaW50IHJlbV9mbGFnLCBlbnVtIHRyZWVfY29kZSBjb2RlLCBtYWNo aW5lX21vZGUNCj4gPj4gbW9kZSwNCj4gPj4gPiAtCSAgICAgICB0cmVlIHRyZWVvcDAsIHRyZWUg dHJlZW9wMSwgcnR4IG9wMCwgcnR4IG9wMSwgcnR4IHRhcmdldCwNCj4gPj4gPiAtCSAgICAgICBp bnQgdW5zaWduZWRwLCBlbnVtIG9wdGFiX21ldGhvZHMgbWV0aG9kcykNCj4gPj4gPiArCSAgICAg ICBydHggb3AwLCBydHggb3AxLCBydHggdGFyZ2V0LCBpbnQgdW5zaWduZWRwLA0KPiA+PiA+ICsJ ICAgICAgIGVudW0gb3B0YWJfbWV0aG9kcyBtZXRob2RzKQ0KPiA+PiA+ICB7DQo+ID4+ID4gICAg bWFjaGluZV9tb2RlIGNvbXB1dGVfbW9kZTsNCj4gPj4gPiAgICBydHggdHF1b3RpZW50Ow0KPiA+ PiA+IEBAIC00Mzc1LDE3ICs0Mzc1LDYgQEAgZXhwYW5kX2Rpdm1vZCAoaW50IHJlbV9mbGFnLCBl bnVtDQo+IHRyZWVfY29kZQ0KPiA+PiA+IGNvZGUsIG1hY2hpbmVfbW9kZSBtb2RlLA0KPiA+PiA+ DQo+ID4+ID4gICAgbGFzdF9kaXZfY29uc3QgPSAhIHJlbV9mbGFnICYmIG9wMV9pc19jb25zdGFu dCA/IElOVFZBTCAob3AxKSA6DQo+ID4+ID4gMDsNCj4gPj4gPg0KPiA+PiA+IC0gIC8qIENoZWNr IGlmIHRoZSB0YXJnZXQgaGFzIHNwZWNpZmljIGV4cGFuc2lvbnMgZm9yIHRoZSBkaXZpc2lvbi4N Cj4gPj4gPiAqLw0KPiA+PiA+IC0gIHRyZWUgY3N0Ow0KPiA+PiA+IC0gIGlmICh0cmVlb3AwDQo+ ID4+ID4gLSAgICAgICYmIHRyZWVvcDENCj4gPj4gPiAtICAgICAgJiYgKGNzdCA9IHVuaWZvcm1f aW50ZWdlcl9jc3RfcCAodHJlZW9wMSkpDQo+ID4+ID4gLSAgICAgICYmIHRhcmdldG0udmVjdG9y aXplLmNhbl9zcGVjaWFsX2Rpdl9ieV9jb25zdCAoY29kZSwgVFJFRV9UWVBFDQo+ID4+ICh0cmVl b3AwKSwNCj4gPj4gPiAtCQkJCQkJICAgICB3aTo6dG9fd2lkZSAoY3N0KSwNCj4gPj4gPiAtCQkJ CQkJICAgICAmdGFyZ2V0LCBvcDAsIG9wMSkpDQo+ID4+ID4gLSAgICByZXR1cm4gdGFyZ2V0Ow0K PiA+PiA+IC0NCj4gPj4gPiAtDQo+ID4+ID4gICAgLyogTm93IGNvbnZlcnQgdG8gdGhlIGJlc3Qg bW9kZSB0byB1c2UuICAqLw0KPiA+PiA+ICAgIGlmIChjb21wdXRlX21vZGUgIT0gbW9kZSkNCj4g Pj4gPiAgICAgIHsNCj4gPj4gPiBAQCAtNDYyOSw4ICs0NjE4LDggQEAgZXhwYW5kX2Rpdm1vZCAo aW50IHJlbV9mbGFnLCBlbnVtDQo+IHRyZWVfY29kZQ0KPiA+PiBjb2RlLCBtYWNoaW5lX21vZGUg bW9kZSwNCj4gPj4gPiAgCQkJICAgIHx8IChvcHRhYl9oYW5kbGVyIChzZGl2bW9kX29wdGFiLCBp bnRfbW9kZSkNCj4gPj4gPiAgCQkJCSE9IENPREVfRk9SX25vdGhpbmcpKSkNCj4gPj4gPiAgCQkg ICAgICBxdW90aWVudCA9IGV4cGFuZF9kaXZtb2QgKDAsIFRSVU5DX0RJVl9FWFBSLA0KPiA+PiA+ IC0JCQkJCQlpbnRfbW9kZSwgdHJlZW9wMCwgdHJlZW9wMSwNCj4gPj4gPiAtCQkJCQkJb3AwLCBn ZW5faW50X21vZGUgKGFic19kLA0KPiA+PiA+ICsJCQkJCQlpbnRfbW9kZSwgb3AwLA0KPiA+PiA+ ICsJCQkJCQlnZW5faW50X21vZGUgKGFic19kLA0KPiA+PiA+ICAJCQkJCQkJICAgICAgaW50X21v ZGUpLA0KPiA+PiA+ICAJCQkJCQlOVUxMX1JUWCwgMCk7DQo+ID4+ID4gIAkJICAgIGVsc2UNCj4g Pj4gPiBAQCAtNDgxOSw4ICs0ODA4LDggQEAgZXhwYW5kX2Rpdm1vZCAoaW50IHJlbV9mbGFnLCBl bnVtDQo+IHRyZWVfY29kZQ0KPiA+PiBjb2RlLCBtYWNoaW5lX21vZGUgbW9kZSwNCj4gPj4gPiAg CQkJCSAgICAgIHNpemUgLSAxLCBOVUxMX1JUWCwgMCk7DQo+ID4+ID4gIAkJdDMgPSBmb3JjZV9v cGVyYW5kIChnZW5fcnR4X01JTlVTIChpbnRfbW9kZSwgdDEsIG5zaWduKSwNCj4gPj4gPiAgCQkJ CSAgICBOVUxMX1JUWCk7DQo+ID4+ID4gLQkJdDQgPSBleHBhbmRfZGl2bW9kICgwLCBUUlVOQ19E SVZfRVhQUiwgaW50X21vZGUsDQo+ID4+IHRyZWVvcDAsDQo+ID4+ID4gLQkJCQkgICAgdHJlZW9w MSwgdDMsIG9wMSwgTlVMTF9SVFgsIDApOw0KPiA+PiA+ICsJCXQ0ID0gZXhwYW5kX2Rpdm1vZCAo MCwgVFJVTkNfRElWX0VYUFIsIGludF9tb2RlLCB0MywNCj4gPj4gb3AxLA0KPiA+PiA+ICsJCQkJ ICAgIE5VTExfUlRYLCAwKTsNCj4gPj4gPiAgCQlpZiAodDQpDQo+ID4+ID4gIAkJICB7DQo+ID4+ ID4gIAkJICAgIHJ0eCB0NTsNCj4gPj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL2V4cHIuY2MgYi9nY2Mv ZXhwci5jYyBpbmRleA0KPiA+PiA+DQo+ID4+DQo+IDE1YmUxYzhkYjk5OTEwM2JiOWU1ZmEzM2Rh YTQ0YWUwNmRlNWFjZTguLjc4ZDM1Mjk3ZTc1NTIxNjMzOTA3DQo+IDhkNWINCj4gPj4gMjI4MA0K PiA+PiA+IGM2ZTI3N2YyNmQ3MiAxMDA2NDQNCj4gPj4gPiAtLS0gYS9nY2MvZXhwci5jYw0KPiA+ PiA+ICsrKyBiL2djYy9leHByLmNjDQo+ID4+ID4gQEAgLTgyMDcsMTcgKzgyMDcsMTYgQEAgZm9y Y2Vfb3BlcmFuZCAocnR4IHZhbHVlLCBydHggdGFyZ2V0KQ0KPiA+PiA+ICAJICAgIHJldHVybiBl eHBhbmRfZGl2bW9kICgwLA0KPiA+PiA+ICAJCQkJICBGTE9BVF9NT0RFX1AgKEdFVF9NT0RFICh2 YWx1ZSkpDQo+ID4+ID4gIAkJCQkgID8gUkRJVl9FWFBSIDogVFJVTkNfRElWX0VYUFIsDQo+ID4+ ID4gLQkJCQkgIEdFVF9NT0RFICh2YWx1ZSksIE5VTEwsIE5VTEwsIG9wMSwgb3AyLA0KPiA+PiA+ IC0JCQkJICB0YXJnZXQsIDApOw0KPiA+PiA+ICsJCQkJICBHRVRfTU9ERSAodmFsdWUpLCBvcDEs IG9wMiwgdGFyZ2V0LCAwKTsNCj4gPj4gPiAgCWNhc2UgTU9EOg0KPiA+PiA+IC0JICByZXR1cm4g ZXhwYW5kX2Rpdm1vZCAoMSwgVFJVTkNfTU9EX0VYUFIsIEdFVF9NT0RFICh2YWx1ZSksDQo+ID4+ IE5VTEwsIE5VTEwsDQo+ID4+ID4gLQkJCQlvcDEsIG9wMiwgdGFyZ2V0LCAwKTsNCj4gPj4gPiAr CSAgcmV0dXJuIGV4cGFuZF9kaXZtb2QgKDEsIFRSVU5DX01PRF9FWFBSLCBHRVRfTU9ERSAodmFs dWUpLA0KPiA+PiBvcDEsIG9wMiwNCj4gPj4gPiArCQkJCXRhcmdldCwgMCk7DQo+ID4+ID4gIAlj YXNlIFVESVY6DQo+ID4+ID4gLQkgIHJldHVybiBleHBhbmRfZGl2bW9kICgwLCBUUlVOQ19ESVZf RVhQUiwgR0VUX01PREUgKHZhbHVlKSwNCj4gPj4gTlVMTCwgTlVMTCwNCj4gPj4gPiAtCQkJCW9w MSwgb3AyLCB0YXJnZXQsIDEpOw0KPiA+PiA+ICsJICByZXR1cm4gZXhwYW5kX2Rpdm1vZCAoMCwg VFJVTkNfRElWX0VYUFIsIEdFVF9NT0RFICh2YWx1ZSksDQo+ID4+IG9wMSwgb3AyLA0KPiA+PiA+ ICsJCQkJdGFyZ2V0LCAxKTsNCj4gPj4gPiAgCWNhc2UgVU1PRDoNCj4gPj4gPiAtCSAgcmV0dXJu IGV4cGFuZF9kaXZtb2QgKDEsIFRSVU5DX01PRF9FWFBSLCBHRVRfTU9ERSAodmFsdWUpLA0KPiA+ PiBOVUxMLCBOVUxMLA0KPiA+PiA+IC0JCQkJb3AxLCBvcDIsIHRhcmdldCwgMSk7DQo+ID4+ID4g KwkgIHJldHVybiBleHBhbmRfZGl2bW9kICgxLCBUUlVOQ19NT0RfRVhQUiwgR0VUX01PREUgKHZh bHVlKSwNCj4gPj4gb3AxLCBvcDIsDQo+ID4+ID4gKwkJCQl0YXJnZXQsIDEpOw0KPiA+PiA+ICAJ Y2FzZSBBU0hJRlRSVDoNCj4gPj4gPiAgCSAgcmV0dXJuIGV4cGFuZF9zaW1wbGVfYmlub3AgKEdF VF9NT0RFICh2YWx1ZSksIGNvZGUsIG9wMSwgb3AyLA0KPiA+PiA+ICAJCQkJICAgICAgdGFyZ2V0 LCAwLCBPUFRBQl9MSUJfV0lERU4pOyBAQCAtDQo+ID4+IDkxNzAsMTMgKzkxNjksMTEgQEANCj4g Pj4gPiBleHBhbmRfZXhwcl9kaXZtb2QgKHRyZWVfY29kZSBjb2RlLCBtYWNoaW5lX21vZGUgbW9k ZSwgdHJlZQ0KPiA+PiB0cmVlb3AwLA0KPiA+PiA+ICAgICAgICBib29sIHNwZWVkX3AgPSBvcHRp bWl6ZV9pbnNuX2Zvcl9zcGVlZF9wICgpOw0KPiA+PiA+ICAgICAgICBkb19wZW5kaW5nX3N0YWNr X2FkanVzdCAoKTsNCj4gPj4gPiAgICAgICAgc3RhcnRfc2VxdWVuY2UgKCk7DQo+ID4+ID4gLSAg ICAgIHJ0eCB1bnNfcmV0ID0gZXhwYW5kX2Rpdm1vZCAobW9kX3AsIGNvZGUsIG1vZGUsIHRyZWVv cDAsIHRyZWVvcDEsDQo+ID4+ID4gLQkJCQkgICBvcDAsIG9wMSwgdGFyZ2V0LCAxKTsNCj4gPj4g PiArICAgICAgcnR4IHVuc19yZXQgPSBleHBhbmRfZGl2bW9kIChtb2RfcCwgY29kZSwgbW9kZSwg b3AwLCBvcDEsDQo+ID4+ID4gKyB0YXJnZXQsIDEpOw0KPiA+PiA+ICAgICAgICBydHhfaW5zbiAq dW5zX2luc25zID0gZ2V0X2luc25zICgpOw0KPiA+PiA+ICAgICAgICBlbmRfc2VxdWVuY2UgKCk7 DQo+ID4+ID4gICAgICAgIHN0YXJ0X3NlcXVlbmNlICgpOw0KPiA+PiA+IC0gICAgICBydHggc2du X3JldCA9IGV4cGFuZF9kaXZtb2QgKG1vZF9wLCBjb2RlLCBtb2RlLCB0cmVlb3AwLCB0cmVlb3Ax LA0KPiA+PiA+IC0JCQkJICAgb3AwLCBvcDEsIHRhcmdldCwgMCk7DQo+ID4+ID4gKyAgICAgIHJ0 eCBzZ25fcmV0ID0gZXhwYW5kX2Rpdm1vZCAobW9kX3AsIGNvZGUsIG1vZGUsIG9wMCwgb3AxLA0K PiA+PiA+ICsgdGFyZ2V0LCAwKTsNCj4gPj4gPiAgICAgICAgcnR4X2luc24gKnNnbl9pbnNucyA9 IGdldF9pbnNucyAoKTsNCj4gPj4gPiAgICAgICAgZW5kX3NlcXVlbmNlICgpOw0KPiA+PiA+ICAg ICAgICB1bnNpZ25lZCB1bnNfY29zdCA9IHNlcV9jb3N0ICh1bnNfaW5zbnMsIHNwZWVkX3ApOyBA QA0KPiA+PiA+IC05MTk4LDgNCj4gPj4gPiArOTE5NSw3IEBAIGV4cGFuZF9leHByX2Rpdm1vZCAo dHJlZV9jb2RlIGNvZGUsIG1hY2hpbmVfbW9kZQ0KPiA+PiBtb2RlLCB0cmVlIHRyZWVvcDAsDQo+ ID4+ID4gICAgICAgIGVtaXRfaW5zbiAoc2duX2luc25zKTsNCj4gPj4gPiAgICAgICAgcmV0dXJu IHNnbl9yZXQ7DQo+ID4+ID4gICAgICB9DQo+ID4+ID4gLSAgcmV0dXJuIGV4cGFuZF9kaXZtb2Qg KG1vZF9wLCBjb2RlLCBtb2RlLCB0cmVlb3AwLCB0cmVlb3AxLA0KPiA+PiA+IC0JCQlvcDAsIG9w MSwgdGFyZ2V0LCB1bnNpZ25lZHApOw0KPiA+PiA+ICsgIHJldHVybiBleHBhbmRfZGl2bW9kICht b2RfcCwgY29kZSwgbW9kZSwgb3AwLCBvcDEsIHRhcmdldCwNCj4gPj4gPiArIHVuc2lnbmVkcCk7 DQo+ID4+ID4gIH0NCj4gPj4gPg0KPiA+PiA+ICBydHgNCj4gPj4gPiBkaWZmIC0tZ2l0IGEvZ2Nj L2ludGVybmFsLWZuLmRlZiBiL2djYy9pbnRlcm5hbC1mbi5kZWYgaW5kZXgNCj4gPj4gPg0KPiA+ Pg0KPiAyMmI0YTJkOTI5NjcwNzZjNjU4OTY1YWZjYWVhZjM5YjQ0OWE4Y2FmLi4yNzk2ZDM2Njlh MDgwNjUzODA1Mg0KPiA1ODRmNWENCj4gPj4gM2INCj4gPj4gPiA4YTczNGJhYTgwMGYgMTAwNjQ0 DQo+ID4+ID4gLS0tIGEvZ2NjL2ludGVybmFsLWZuLmRlZg0KPiA+PiA+ICsrKyBiL2djYy9pbnRl cm5hbC1mbi5kZWYNCj4gPj4gPiBAQCAtMTc0LDYgKzE3NCw4IEBAIERFRl9JTlRFUk5BTF9TSUdO RURfT1BUQUJfRk4gKEFWR19DRUlMLA0KPiA+PiBFQ0ZfQ09OU1QNCj4gPj4gPiB8IEVDRl9OT1RI Uk9XLCBmaXJzdCwNCj4gPj4gPg0KPiA+PiA+ICBERUZfSU5URVJOQUxfU0lHTkVEX09QVEFCX0ZO IChNVUxILCBFQ0ZfQ09OU1QgfA0KPiA+PiBFQ0ZfTk9USFJPVywgZmlyc3QsDQo+ID4+ID4gIAkJ CSAgICAgIHNtdWxfaGlnaHBhcnQsIHVtdWxfaGlnaHBhcnQsIGJpbmFyeSkNCj4gPj4gPiArREVG X0lOVEVSTkFMX1NJR05FRF9PUFRBQl9GTiAoQURESCwgRUNGX0NPTlNUIHwNCj4gPj4gRUNGX05P VEhST1csIGZpcnN0LA0KPiA+PiA+ICsJCQkgICAgICBzYWRkX2hpZ2hwYXJ0LCB1YWRkX2hpZ2hw YXJ0LCBiaW5hcnkpDQo+ID4+ID4gIERFRl9JTlRFUk5BTF9TSUdORURfT1BUQUJfRk4gKE1VTEhT LCBFQ0ZfQ09OU1QgfA0KPiA+PiBFQ0ZfTk9USFJPVywgZmlyc3QsDQo+ID4+ID4gIAkJCSAgICAg IHNtdWxocywgdW11bGhzLCBiaW5hcnkpDQo+ID4+ID4gIERFRl9JTlRFUk5BTF9TSUdORURfT1BU QUJfRk4gKE1VTEhSUywgRUNGX0NPTlNUIHwNCj4gPj4gRUNGX05PVEhST1csIGZpcnN0LA0KPiA+ PiA+IGRpZmYgLS1naXQgYS9nY2Mvb3B0YWJzLmNjIGIvZ2NjL29wdGFicy5jYyBpbmRleA0KPiA+ PiA+DQo+ID4+DQo+IGNmMjJiZmVjM2Y1NTEzZjU2ZDIyYzg2NjIzMWVkYmYzMjJmZjY5NDUuLjQ3 NGNjYmQ3OTE1YjRmMTQ0Y2ViZTAzDQo+IDY5YTYNCj4gPj4gZQ0KPiA+PiA+IDc3MDgyYzFlNjE3 YiAxMDA2NDQNCj4gPj4gPiAtLS0gYS9nY2Mvb3B0YWJzLmNjDQo+ID4+ID4gKysrIGIvZ2NjL29w dGFicy5jYw0KPiA+PiA+IEBAIC0xMTA2LDkgKzExMDYsOCBAQCBleHBhbmRfZG91Ymxld29yZF9t b2QgKG1hY2hpbmVfbW9kZQ0KPiA+PiBtb2RlLCBydHggb3AwLCBydHggb3AxLCBib29sIHVuc2ln bmVkcCkNCj4gPj4gPiAgCQlyZXR1cm4gTlVMTF9SVFg7DQo+ID4+ID4gIAkgICAgfQ0KPiA+PiA+ ICAJfQ0KPiA+PiA+IC0gICAgICBydHggcmVtYWluZGVyID0gZXhwYW5kX2Rpdm1vZCAoMSwgVFJV TkNfTU9EX0VYUFIsIHdvcmRfbW9kZSwNCj4gPj4gTlVMTCwgTlVMTCwNCj4gPj4gPiAtCQkJCSAg ICAgc3VtLCBnZW5faW50X21vZGUgKElOVFZBTCAob3AxKSwNCj4gPj4gPiAtCQkJCQkJCXdvcmRf bW9kZSksDQo+ID4+ID4gKyAgICAgIHJ0eCByZW1haW5kZXIgPSBleHBhbmRfZGl2bW9kICgxLCBU UlVOQ19NT0RfRVhQUiwNCj4gd29yZF9tb2RlLA0KPiA+PiBzdW0sDQo+ID4+ID4gKwkJCQkgICAg IGdlbl9pbnRfbW9kZSAoSU5UVkFMIChvcDEpLA0KPiA+PiB3b3JkX21vZGUpLA0KPiA+PiA+ICAJ CQkJICAgICBOVUxMX1JUWCwgMSwgT1BUQUJfRElSRUNUKTsNCj4gPj4gPiAgICAgICAgaWYgKHJl bWFpbmRlciA9PSBOVUxMX1JUWCkNCj4gPj4gPiAgCXJldHVybiBOVUxMX1JUWDsNCj4gPj4gPiBA QCAtMTIxMSw4ICsxMjEwLDggQEAgZXhwYW5kX2RvdWJsZXdvcmRfZGl2bW9kIChtYWNoaW5lX21v ZGUNCj4gPj4gbW9kZSwgcnR4DQo+ID4+ID4gb3AwLCBydHggb3AxLCBydHggKnJlbSwNCj4gPj4g Pg0KPiA+PiA+ICAgIGlmIChvcDExICE9IGNvbnN0MV9ydHgpDQo+ID4+ID4gICAgICB7DQo+ID4+ ID4gLSAgICAgIHJ0eCByZW0yID0gZXhwYW5kX2Rpdm1vZCAoMSwgVFJVTkNfTU9EX0VYUFIsIG1v ZGUsIE5VTEwsDQo+IE5VTEwsDQo+ID4+IHF1b3QxLA0KPiA+PiA+IC0JCQkJb3AxMSwgTlVMTF9S VFgsIHVuc2lnbmVkcCwNCj4gPj4gT1BUQUJfRElSRUNUKTsNCj4gPj4gPiArICAgICAgcnR4IHJl bTIgPSBleHBhbmRfZGl2bW9kICgxLCBUUlVOQ19NT0RfRVhQUiwgbW9kZSwgcXVvdDEsDQo+ID4+ IG9wMTEsDQo+ID4+ID4gKwkJCQlOVUxMX1JUWCwgdW5zaWduZWRwLCBPUFRBQl9ESVJFQ1QpOw0K PiA+PiA+ICAgICAgICBpZiAocmVtMiA9PSBOVUxMX1JUWCkNCj4gPj4gPiAgCXJldHVybiBOVUxM X1JUWDsNCj4gPj4gPg0KPiA+PiA+IEBAIC0xMjI2LDggKzEyMjUsOCBAQCBleHBhbmRfZG91Ymxl d29yZF9kaXZtb2QgKG1hY2hpbmVfbW9kZQ0KPiA+PiBtb2RlLCBydHggb3AwLCBydHggb3AxLCBy dHggKnJlbSwNCj4gPj4gPiAgICAgICAgaWYgKHJlbTIgPT0gTlVMTF9SVFgpDQo+ID4+ID4gIAly ZXR1cm4gTlVMTF9SVFg7DQo+ID4+ID4NCj4gPj4gPiAtICAgICAgcnR4IHF1b3QyID0gZXhwYW5k X2Rpdm1vZCAoMCwgVFJVTkNfRElWX0VYUFIsIG1vZGUsIE5VTEwsDQo+IE5VTEwsDQo+ID4+IHF1 b3QxLA0KPiA+PiA+IC0JCQkJIG9wMTEsIE5VTExfUlRYLCB1bnNpZ25lZHAsDQo+ID4+IE9QVEFC X0RJUkVDVCk7DQo+ID4+ID4gKyAgICAgIHJ0eCBxdW90MiA9IGV4cGFuZF9kaXZtb2QgKDAsIFRS VU5DX0RJVl9FWFBSLCBtb2RlLCBxdW90MSwNCj4gb3AxMSwNCj4gPj4gPiArCQkJCSBOVUxMX1JU WCwgdW5zaWduZWRwLCBPUFRBQl9ESVJFQ1QpOw0KPiA+PiA+ICAgICAgICBpZiAocXVvdDIgPT0g TlVMTF9SVFgpDQo+ID4+ID4gIAlyZXR1cm4gTlVMTF9SVFg7DQo+ID4+ID4NCj4gPj4gPiBkaWZm IC0tZ2l0IGEvZ2NjL29wdGFicy5kZWYgYi9nY2Mvb3B0YWJzLmRlZiBpbmRleA0KPiA+PiA+DQo+ ID4+DQo+IDY5NWY1OTExYjMwMGM5Y2E1NzM3ZGU5YmU4MDlmYTAxYWFiZTVlMDEuLjc3YTE1MmVj MmQxOTQ5ZGVjYTJjMg0KPiBkN2E1DQo+ID4+IGNjYg0KPiA+PiA+IGY2MTQ3OTQ3MzUxYSAxMDA2 NDQNCj4gPj4gPiAtLS0gYS9nY2Mvb3B0YWJzLmRlZg0KPiA+PiA+ICsrKyBiL2djYy9vcHRhYnMu ZGVmDQo+ID4+ID4gQEAgLTI2NSw2ICsyNjUsOCBAQCBPUFRBQl9EIChzcGFjZXNoaXBfb3B0YWIs ICJzcGFjZXNoaXAkYTMiKQ0KPiA+PiA+DQo+ID4+ID4gIE9QVEFCX0QgKHNtdWxfaGlnaHBhcnRf b3B0YWIsICJzbXVsJGEzX2hpZ2hwYXJ0IikgIE9QVEFCX0QNCj4gPj4gPiAodW11bF9oaWdocGFy dF9vcHRhYiwgInVtdWwkYTNfaGlnaHBhcnQiKQ0KPiA+PiA+ICtPUFRBQl9EIChzYWRkX2hpZ2hw YXJ0X29wdGFiLCAic2FkZCRhM19oaWdocGFydCIpIE9QVEFCX0QNCj4gPj4gPiArKHVhZGRfaGln aHBhcnRfb3B0YWIsICJ1YWRkJGEzX2hpZ2hwYXJ0IikNCj4gPj4gPg0KPiA+PiA+ICBPUFRBQl9E IChjbXBtZW1fb3B0YWIsICJjbXBtZW0kYSIpICBPUFRBQl9EIChjbXBzdHJfb3B0YWIsDQo+ID4+ ID4gImNtcHN0ciRhIikgZGlmZiAtLWdpdCBhL2djYy90YXJnZXQuZGVmIGIvZ2NjL3RhcmdldC5k ZWYgaW5kZXgNCj4gPj4gPg0KPiA+Pg0KPiBkYjhhZjBjYmU4MTYyNDUxM2YxMTRmYzliYmQ4YmU2 MWQ4NTVmNDA5Li5lMGE1YzdhZGJkOTYyZjVkMDhlZDANCj4gOGQxZA0KPiA+PiA4MWENCj4gPj4g PiBmYTJjMmJhYTY0YTUgMTAwNjQ0DQo+ID4+ID4gLS0tIGEvZ2NjL3RhcmdldC5kZWYNCj4gPj4g PiArKysgYi9nY2MvdGFyZ2V0LmRlZg0KPiA+PiA+IEBAIC0xOTA1LDI1ICsxOTA1LDYgQEAgaW1w bGVtZW50YXRpb24gYXBwcm9hY2hlcyBpdHNlbGYuIiwNCj4gPj4gPiAgCWNvbnN0IHZlY19wZXJt X2luZGljZXMgJnNlbCksDQo+ID4+ID4gICBOVUxMKQ0KPiA+PiA+DQo+ID4+ID4gLURFRkhPT0sN Cj4gPj4gPiAtKGNhbl9zcGVjaWFsX2Rpdl9ieV9jb25zdCwNCj4gPj4gPiAtICJUaGlzIGhvb2sg aXMgdXNlZCB0byB0ZXN0IHdoZXRoZXIgdGhlIHRhcmdldCBoYXMgYSBzcGVjaWFsDQo+ID4+ID4g bWV0aG9kIG9mXG5cIC1kaXZpc2lvbiBvZiB2ZWN0b3JzIG9mIHR5cGUgQHZhcnt2ZWN0eXBlfSB1 c2luZyB0aGUNCj4gPj4gPiB2YWx1ZSBAdmFye2NvbnN0YW50fSxcblwgLWFuZCBwcm9kdWNpbmcg YSB2ZWN0b3Igb2YgdHlwZQ0KPiA+PiA+IEB2YXJ7dmVjdHlwZX0uICBUaGUgZGl2aXNpb25cblwg LXdpbGwgdGhlbiBub3QgYmUgZGVjb21wb3NlZCBieSB0aGUNCj4gPj4gPiB2ZWN0b3JpemVyIGFu ZCBrZXB0IGFzIGEgZGl2LlxuXCAtXG5cIC1XaGVuIHRoZSBob29rIGlzIGJlaW5nIHVzZWQNCj4g Pj4gPiB0byB0ZXN0IHdoZXRoZXIgdGhlIHRhcmdldCBzdXBwb3J0cyBhIHNwZWNpYWxcblwgLWRp dmlkZSwNCj4gPj4gPiBAdmFye2luMH0sIEB2YXJ7aW4xfSwgYW5kIEB2YXJ7b3V0cHV0fSBhcmUg YWxsIG51bGwuICBXaGVuIHRoZQ0KPiA+PiA+IGhvb2tcblwgLWlzIGJlaW5nIHVzZWQgdG8gZW1p dCBhIGRpdmlzaW9uLCBAdmFye2luMH0gYW5kIEB2YXJ7aW4xfQ0KPiA+PiA+IGFyZSB0aGUgc291 cmNlXG5cIC12ZWN0b3JzIG9mIHR5cGUgQHZhcnt2ZWN0dHlwZX0gYW5kIEB2YXJ7b3V0cHV0fQ0K PiA+PiA+IGlzIHRoZSBkZXN0aW5hdGlvbiB2ZWN0b3Igb2ZcblwgLXR5cGUgQHZhcnt2ZWN0eXBl fS5cblwgLVxuXA0KPiA+PiA+IC1SZXR1cm4gdHJ1ZSBpZiB0aGUgb3BlcmF0aW9uIGlzIHBvc3Np YmxlLCBlbWl0dGluZyBpbnN0cnVjdGlvbnMNCj4gPj4gPiBmb3IgaXRcblwgLWlmIHJ0eGVzIGFy ZSBwcm92aWRlZCBhbmQgdXBkYXRpbmcgQHZhcntvdXRwdXR9LiIsDQo+ID4+ID4gLSBib29sLCAo ZW51bSB0cmVlX2NvZGUsIHRyZWUgdmVjdHlwZSwgd2lkZV9pbnQgY29uc3RhbnQsIHJ0eCAqb3V0 cHV0LA0KPiA+PiA+IC0JcnR4IGluMCwgcnR4IGluMSksDQo+ID4+ID4gLSBkZWZhdWx0X2Nhbl9z cGVjaWFsX2Rpdl9ieV9jb25zdCkNCj4gPj4gPiAtDQo+ID4+ID4gIC8qIFJldHVybiB0cnVlIGlm IHRoZSB0YXJnZXQgc3VwcG9ydHMgbWlzYWxpZ25lZCBzdG9yZS9sb2FkIG9mIGENCj4gPj4gPiAg ICAgc3BlY2lmaWMgZmFjdG9yIGRlbm90ZWQgaW4gdGhlIHRoaXJkIHBhcmFtZXRlci4gIFRoZSBs YXN0IHBhcmFtZXRlcg0KPiA+PiA+ICAgICBpcyB0cnVlIGlmIHRoZSBhY2Nlc3MgaXMgZGVmaW5l ZCBpbiBhIHBhY2tlZCBzdHJ1Y3QuICAqLyBkaWZmDQo+ID4+ID4gLS1naXQgYS9nY2MvdGFyZ2V0 LmggYi9nY2MvdGFyZ2V0LmggaW5kZXgNCj4gPj4gPg0KPiA+Pg0KPiAwM2ZkMDNhNTIwNzViNDgz NjE1OTAzNWVjMTQwNzhjMGFlYmRkN2U5Li45MzY5MTg4Mjc1NzIzMmM1MTRmYw0KPiBhODJiOQ0K PiA+PiA5ZjkNCj4gPj4gPiAxMzE1OGMyZDQ3YjEgMTAwNjQ0DQo+ID4+ID4gLS0tIGEvZ2NjL3Rh cmdldC5oDQo+ID4+ID4gKysrIGIvZ2NjL3RhcmdldC5oDQo+ID4+ID4gQEAgLTUxLDcgKzUxLDYg QEANCj4gPj4gPiAgI2luY2x1ZGUgImluc24tY29kZXMuaCINCj4gPj4gPiAgI2luY2x1ZGUgInRt LmgiDQo+ID4+ID4gICNpbmNsdWRlICJoYXJkLXJlZy1zZXQuaCINCj4gPj4gPiAtI2luY2x1ZGUg InRyZWUtY29yZS5oIg0KPiA+PiA+DQo+ID4+ID4gICNpZiBDSEVDS0lOR19QDQo+ID4+ID4NCj4g Pj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rhcmdob29rcy5oIGIvZ2NjL3Rhcmdob29rcy5oIGluZGV4 DQo+ID4+ID4NCj4gPj4NCj4gYTFkZjI2MGY1NDgzZGM4NGYxOGQ4ZjEyYzUyMDI0ODRhMzJkNWJi Ny4uYTZhNDgwOWNhOTFiYWE1ZDdmYWQyDQo+IDI0NDU0DQo+ID4+IDkzDQo+ID4+ID4gMTdhMzEz OTBmMGMyIDEwMDY0NA0KPiA+PiA+IC0tLSBhL2djYy90YXJnaG9va3MuaA0KPiA+PiA+ICsrKyBi L2djYy90YXJnaG9va3MuaA0KPiA+PiA+IEBAIC0yMDksOCArMjA5LDYgQEAgZXh0ZXJuIHZvaWQg ZGVmYXVsdF9hZGRyX3NwYWNlX2RpYWdub3NlX3VzYWdlDQo+ID4+ID4gKGFkZHJfc3BhY2VfdCwg bG9jYXRpb25fdCk7ICBleHRlcm4gcnR4IGRlZmF1bHRfYWRkcl9zcGFjZV9jb252ZXJ0DQo+ID4+ ID4gKHJ0eCwgdHJlZSwgdHJlZSk7ICBleHRlcm4gdW5zaWduZWQgaW50DQo+ID4+ID4gZGVmYXVs dF9jYXNlX3ZhbHVlc190aHJlc2hvbGQgKHZvaWQpOyAgZXh0ZXJuIGJvb2wNCj4gPj4gPiBkZWZh dWx0X2hhdmVfY29uZGl0aW9uYWxfZXhlY3V0aW9uICh2b2lkKTsgLWV4dGVybiBib29sDQo+ID4+ ID4gZGVmYXVsdF9jYW5fc3BlY2lhbF9kaXZfYnlfY29uc3QgKGVudW0gdHJlZV9jb2RlLCB0cmVl LA0KPiA+PiB3aWRlX2ludCwNCj4gPj4gPiAtCQkJCQkgICAgICBydHggKiwgcnR4LCBydHgpOw0K PiA+PiA+DQo+ID4+ID4gIGV4dGVybiBib29sIGRlZmF1bHRfbGliY19oYXNfZnVuY3Rpb24gKGVu dW0gZnVuY3Rpb25fY2xhc3MsIHRyZWUpOw0KPiA+PiA+IGV4dGVybiBib29sIGRlZmF1bHRfbGli Y19oYXNfZmFzdF9mdW5jdGlvbiAoaW50IGZjb2RlKTsgZGlmZiAtLWdpdA0KPiA+PiA+IGEvZ2Nj L3Rhcmdob29rcy5jYyBiL2djYy90YXJnaG9va3MuY2MgaW5kZXgNCj4gPj4gPg0KPiA+Pg0KPiBm ZTAxMTY1MjFmZWFmMzIxODdlN2JjMTEzYmY5M2IxODA1ODUyYzc5Li4yMTE1MjU3MjBhNjIwZDZm NTMzZTINCj4gZGE5MWUNCj4gPj4gMDMNCj4gPj4gPiA4NzczMzdhOTMxZTcgMTAwNjQ0DQo+ID4+ ID4gLS0tIGEvZ2NjL3Rhcmdob29rcy5jYw0KPiA+PiA+ICsrKyBiL2djYy90YXJnaG9va3MuY2MN Cj4gPj4gPiBAQCAtMTg0MCwxNCArMTg0MCw2IEBAIGRlZmF1bHRfaGF2ZV9jb25kaXRpb25hbF9l eGVjdXRpb24gKHZvaWQpDQo+ID4+ID4gICAgcmV0dXJuIEhBVkVfY29uZGl0aW9uYWxfZXhlY3V0 aW9uOyAgfQ0KPiA+PiA+DQo+ID4+ID4gLS8qIERlZmF1bHQgdGhhdCBubyBkaXZpc2lvbiBieSBj b25zdGFudCBvcGVyYXRpb25zIGFyZSBzcGVjaWFsLg0KPiA+PiA+ICovIC1ib29sIC1kZWZhdWx0 X2Nhbl9zcGVjaWFsX2Rpdl9ieV9jb25zdCAoZW51bSB0cmVlX2NvZGUsIHRyZWUsDQo+ID4+ID4g d2lkZV9pbnQsIHJ0eCAqLCBydHgsDQo+ID4+ID4gLQkJCQkgIHJ0eCkNCj4gPj4gPiAtew0KPiA+ PiA+IC0gIHJldHVybiBmYWxzZTsNCj4gPj4gPiAtfQ0KPiA+PiA+IC0NCj4gPj4gPiAgLyogQnkg ZGVmYXVsdCB3ZSBhc3N1bWUgdGhhdCBjOTkgZnVuY3Rpb25zIGFyZSBwcmVzZW50IGF0IHRoZSBy dW50aW1lLA0KPiA+PiA+ICAgICBidXQgc2luY29zIGlzIG5vdC4gICovDQo+ID4+ID4gIGJvb2wN Cj4gPj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWRpdi1i aXRtYXNrLTQuYw0KPiA+PiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWRpdi1i aXRtYXNrLTQuYw0KPiA+PiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+ID4gaW5kZXgNCj4g Pj4gPg0KPiA+Pg0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j ODFmODk0NjkyMjI1MDIzNGINCj4gZjc1OWUwYTANCj4gPj4gYTANCj4gPj4gPiA0ZWE4YzFmNzNl M2MNCj4gPj4gPiAtLS0gL2Rldi9udWxsDQo+ID4+ID4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvdmVjdC92ZWN0LWRpdi1iaXRtYXNrLTQuYw0KPiA+PiA+IEBAIC0wLDAgKzEsMjUgQEANCj4g Pj4gPiArLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9pbnQgfSAqLw0KPiA+ PiA+ICsNCj4gPj4gPiArI2luY2x1ZGUgPHN0ZGludC5oPg0KPiA+PiA+ICsjaW5jbHVkZSAidHJl ZS12ZWN0LmgiDQo+ID4+ID4gKw0KPiA+PiA+ICt0eXBlZGVmIHVuc2lnbmVkIF9fYXR0cmlidXRl X18oKF9fdmVjdG9yX3NpemVfXyAoMTYpKSkgVjsNCj4gPj4gPiArDQo+ID4+ID4gK3N0YXRpYyBf X2F0dHJpYnV0ZV9fKChfX25vaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX25vY2xvbmVfXykp DQo+ID4+ID4gK1YgZm9vIChWIHYsIHVuc2lnbmVkIHNob3J0IGkpIHsNCj4gPj4gPiArICB2IC89 IGk7DQo+ID4+ID4gKyAgcmV0dXJuIHY7DQo+ID4+ID4gK30NCj4gPj4gPiArDQo+ID4+ID4gK2lu dA0KPiA+PiA+ICttYWluICh2b2lkKQ0KPiA+PiA+ICt7DQo+ID4+ID4gKyAgViB2ID0gZm9vICgo VikgeyAweGZmZmZmZmZmLCAweGZmZmZmZmZmLCAweGZmZmZmZmZmLCAweGZmZmZmZmZmDQo+ID4+ ID4gK30sIDB4ZmZmZik7DQo+ID4+ID4gKyAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemVv ZiAodikgLyBzaXplb2YgKHZbMF0pOyBpKyspDQo+ID4+ID4gKyAgICBpZiAodltpXSAhPSAweDAw MDEwMDAxKQ0KPiA+PiA+ICsgICAgICBfX2J1aWx0aW5fYWJvcnQgKCk7DQo+ID4+ID4gKyAgcmV0 dXJuIDA7DQo+ID4+ID4gK30NCj4gPj4gPiArDQo+ID4+ID4gKy8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcC1ub3QgInZlY3RfcmVjb2dfZGl2bW9kX3BhdHRlcm46DQo+ID4+ID4gK2RldGVj dGVkIiAidmVjdCIgeyB0YXJnZXQgYWFyY2g2NCotKi0qIH0gfSB9ICovDQo+ID4+ID4gZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1kaXYtYml0bWFzay01LmMNCj4g Pj4gPiBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1kaXYtYml0bWFzay01LmMNCj4g Pj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiA+IGluZGV4DQo+ID4+ID4NCj4gPj4NCj4g MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjRlYjFhNGRhY2JhNDgx ZTYzDQo+IDA2YjQ5OTENCj4gPj4gNGQyDQo+ID4+ID4gYTI5YjkzM2RlNjI1DQo+ID4+ID4gLS0t IC9kZXYvbnVsbA0KPiA+PiA+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1k aXYtYml0bWFzay01LmMNCj4gPj4gPiBAQCAtMCwwICsxLDU4IEBADQo+ID4+ID4gKy8qIHsgZGct cmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3RfaW50IH0gKi8NCj4gPj4gPiArDQo+ID4+ID4g KyNpbmNsdWRlIDxzdGRpbnQuaD4NCj4gPj4gPiArI2luY2x1ZGUgPHN0ZGlvLmg+DQo+ID4+ID4g KyNpbmNsdWRlICJ0cmVlLXZlY3QuaCINCj4gPj4gPiArDQo+ID4+ID4gKyNkZWZpbmUgTiA1MA0K PiA+PiA+ICsjZGVmaW5lIFRZUEUgdWludDhfdA0KPiA+PiA+ICsNCj4gPj4gPiArI2lmbmRlZiBE RUJVRw0KPiA+PiA+ICsjZGVmaW5lIERFQlVHIDANCj4gPj4gPiArI2VuZGlmDQo+ID4+ID4gKw0K PiA+PiA+ICsjZGVmaW5lIEJBU0UgKChUWVBFKSAtMSA8IDAgPyAtMTI2IDogNCkNCj4gPj4gPiAr DQo+ID4+ID4gKw0KPiA+PiA+ICtfX2F0dHJpYnV0ZV9fKChub2lwYSwgbm9pbmxpbmUsIG9wdGlt aXplKCJPMSIpKSkgdm9pZCBmdW4xKFRZUEUqDQo+ID4+ID4gK3Jlc3RyaWN0IHBpeGVsLCBUWVBF IGxldmVsLCBpbnQgbikgew0KPiA+PiA+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSs9MSkN Cj4gPj4gPiArICAgIHBpeGVsW2ldID0gKHBpeGVsW2ldICsgbGV2ZWwpIC8gMHhmZjsgfQ0KPiA+ PiA+ICsNCj4gPj4gPiArX19hdHRyaWJ1dGVfXygobm9pcGEsIG5vaW5saW5lLCBvcHRpbWl6ZSgi TzMiKSkpIHZvaWQgZnVuMihUWVBFKg0KPiA+PiA+ICtyZXN0cmljdCBwaXhlbCwgVFlQRSBsZXZl bCwgaW50IG4pIHsNCj4gPj4gPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrPTEpDQo+ID4+ ID4gKyAgICBwaXhlbFtpXSA9IChwaXhlbFtpXSArIGxldmVsKSAvIDB4ZmY7IH0NCj4gPj4gPiAr DQo+ID4+ID4gK2ludCBtYWluICgpDQo+ID4+ID4gK3sNCj4gPj4gPiArICBUWVBFIGFbTl07DQo+ ID4+ID4gKyAgVFlQRSBiW05dOw0KPiA+PiA+ICsNCj4gPj4gPiArICBmb3IgKGludCBpID0gMDsg aSA8IE47ICsraSkNCj4gPj4gPiArICAgIHsNCj4gPj4gPiArICAgICAgYVtpXSA9IEJBU0UgKyBp ICogMTM7DQo+ID4+ID4gKyAgICAgIGJbaV0gPSBCQVNFICsgaSAqIDEzOw0KPiA+PiA+ICsgICAg ICBpZiAoREVCVUcpDQo+ID4+ID4gKyAgICAgICAgcHJpbnRmICgiJWQ6IDB4JXhcbiIsIGksIGFb aV0pOw0KPiA+PiA+ICsgICAgfQ0KPiA+PiA+ICsNCj4gPj4gPiArICBmdW4xIChhLCBOIC8gMiwg Tik7DQo+ID4+ID4gKyAgZnVuMiAoYiwgTiAvIDIsIE4pOw0KPiA+PiA+ICsNCj4gPj4gPiArICBm b3IgKGludCBpID0gMDsgaSA8IE47ICsraSkNCj4gPj4gPiArICAgIHsNCj4gPj4gPiArICAgICAg aWYgKERFQlVHKQ0KPiA+PiA+ICsgICAgICAgIHByaW50ZiAoIiVkID0gMHgleCA9PSAweCV4XG4i LCBpLCBhW2ldLCBiW2ldKTsNCj4gPj4gPiArDQo+ID4+ID4gKyAgICAgIGlmIChhW2ldICE9IGJb aV0pDQo+ID4+ID4gKyAgICAgICAgX19idWlsdGluX2Fib3J0ICgpOw0KPiA+PiA+ICsgICAgfQ0K PiA+PiA+ICsgIHJldHVybiAwOw0KPiA+PiA+ICt9DQo+ID4+ID4gKw0KPiA+PiA+ICsvKiB7IGRn LWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgImRpdm1vZCBwYXR0ZXJuIHJlY29nbml6ZWQiICJ2ZWN0 Ig0KPiA+PiA+ICt7IHRhcmdldCBhYXJjaDY0Ki0qLSogfSB9IH0gKi8NCj4gPj4gPiBkaWZmIC0t Z2l0IGEvZ2NjL3RyZWUtdmVjdC1nZW5lcmljLmNjIGIvZ2NjL3RyZWUtdmVjdC1nZW5lcmljLmNj DQo+ID4+ID4gaW5kZXgNCj4gPj4gPg0KPiA+Pg0KPiAxNjZhMjQ4ZjRiOTUxMmQ0YzZmYzhkNzYw YjQ1OGI3YTQ2N2Y3NzkwLi41MTlhODI0ZWM3MjdkNGQ0ZjI4Yw0KPiAxNDA3N2QNCj4gPj4gYzMN Cj4gPj4gPiBlOTcwYmVkNzVlZjYgMTAwNjQ0DQo+ID4+ID4gLS0tIGEvZ2NjL3RyZWUtdmVjdC1n ZW5lcmljLmNjDQo+ID4+ID4gKysrIGIvZ2NjL3RyZWUtdmVjdC1nZW5lcmljLmNjDQo+ID4+ID4g QEAgLTEyMzcsMTcgKzEyMzcsNiBAQCBleHBhbmRfdmVjdG9yX29wZXJhdGlvbg0KPiA+PiAoZ2lt cGxlX3N0bXRfaXRlcmF0b3IgKmdzaSwgdHJlZSB0eXBlLCB0cmVlIGNvbXB1dGVfdHlwZQ0KPiA+ PiA+ICAJICB0cmVlIHJoczIgPSBnaW1wbGVfYXNzaWduX3JoczIgKGFzc2lnbik7DQo+ID4+ID4g IAkgIHRyZWUgcmV0Ow0KPiA+PiA+DQo+ID4+ID4gLQkgIC8qIENoZWNrIGlmIHRoZSB0YXJnZXQg d2FzIGdvaW5nIHRvIGhhbmRsZSBpdCB0aHJvdWdoIHRoZSBzcGVjaWFsDQo+ID4+ID4gLQkgICAg IGRpdmlzaW9uIGNhbGxiYWNrIGhvb2suICAqLw0KPiA+PiA+IC0JICB0cmVlIGNzdCA9IHVuaWZv cm1faW50ZWdlcl9jc3RfcCAocmhzMik7DQo+ID4+ID4gLQkgIGlmIChjc3QgJiYNCj4gPj4gPiAt CSAgICAgIHRhcmdldG0udmVjdG9yaXplLmNhbl9zcGVjaWFsX2Rpdl9ieV9jb25zdCAoY29kZSwg dHlwZSwNCj4gPj4gPiAtCQkJCQkJCSAgd2k6OnRvX3dpZGUgKGNzdCksDQo+ID4+ID4gLQkJCQkJ CQkgIE5VTEwsDQo+ID4+ID4gLQkJCQkJCQkgIE5VTExfUlRYLA0KPiA+PiBOVUxMX1JUWCkpDQo+ ID4+ID4gLQkgICAgcmV0dXJuIE5VTExfVFJFRTsNCj4gPj4gPiAtDQo+ID4+ID4gLQ0KPiA+PiA+ ICAJICBpZiAoIW9wdGltaXplDQo+ID4+ID4gIAkgICAgICB8fCAhVkVDVE9SX0lOVEVHRVJfVFlQ RV9QICh0eXBlKQ0KPiA+PiA+ICAJICAgICAgfHwgVFJFRV9DT0RFIChyaHMyKSAhPSBWRUNUT1Jf Q1NUIGRpZmYgLS1naXQNCj4gPj4gPiBhL2djYy90cmVlLXZlY3QtcGF0dGVybnMuY2MgYi9nY2Mv dHJlZS12ZWN0LXBhdHRlcm5zLmNjIGluZGV4DQo+ID4+ID4NCj4gPj4NCj4gNjkzNGFlYmM2OWYy MzFhZjI0NjY4ZjBhMWMzZDE0MGU5N2Y1NTQ4Ny4uZTM5ZDdlNmIzNjJlZjQ0ZWIyZmM0Ng0KPiA3 ZjMzDQo+ID4+IDY5DQo+ID4+ID4gZGUyYWZlYTEzOWQ2IDEwMDY0NA0KPiA+PiA+IC0tLSBhL2dj Yy90cmVlLXZlY3QtcGF0dGVybnMuY2MNCj4gPj4gPiArKysgYi9nY2MvdHJlZS12ZWN0LXBhdHRl cm5zLmNjDQo+ID4+ID4gQEAgLTM5MTQsMTIgKzM5MTQsODIgQEAgdmVjdF9yZWNvZ19kaXZtb2Rf cGF0dGVybiAodmVjX2luZm8NCj4gKnZpbmZvLA0KPiA+PiA+ICAgICAgICByZXR1cm4gcGF0dGVy bl9zdG10Ow0KPiA+PiA+ICAgICAgfQ0KPiA+PiA+ICAgIGVsc2UgaWYgKChjc3QgPSB1bmlmb3Jt X2ludGVnZXJfY3N0X3AgKG9wcm5kMSkpDQo+ID4+ID4gLQkgICAmJiB0YXJnZXRtLnZlY3Rvcml6 ZS5jYW5fc3BlY2lhbF9kaXZfYnlfY29uc3QgKHJoc19jb2RlLA0KPiA+PiB2ZWN0eXBlLA0KPiA+ PiA+IC0JCQkJCQkJICB3aTo6dG9fd2lkZSAoY3N0KSwNCj4gPj4gPiAtCQkJCQkJCSAgTlVMTCwg TlVMTF9SVFgsDQo+ID4+ID4gLQkJCQkJCQkgIE5VTExfUlRYKSkNCj4gPj4gPiArCSAgICYmIFRZ UEVfVU5TSUdORUQgKGl0eXBlKQ0KPiA+PiA+ICsJICAgJiYgcmhzX2NvZGUgPT0gVFJVTkNfRElW X0VYUFINCj4gPj4gPiArCSAgICYmIHZlY3R5cGUNCj4gPj4gPiArCSAgICYmIGRpcmVjdF9pbnRl cm5hbF9mbl9zdXBwb3J0ZWRfcCAoSUZOX0FEREgsIHZlY3R5cGUsDQo+ID4+ID4gKwkJCQkJICAg ICAgT1BUSU1JWkVfRk9SX1NQRUVEKSkNCj4gPj4gPiAgICAgIHsNCj4gPj4gPiAtICAgICAgcmV0 dXJuIE5VTEw7DQo+ID4+ID4gKyAgICAgIC8qIGRpdiBvcHRpbWl6YXRpb25zIHVzaW5nIG5hcnJv d2luZ3MNCj4gPj4gPiArICAgICAgIHdlIGNhbiBkbyB0aGUgZGl2aXNpb24gZS5nLiBzaG9ydHMg YnkgMjU1IGZhc3RlciBieSBjYWxjdWxhdGluZyBpdCBhcw0KPiA+PiA+ICsgICAgICAgKHggKyAo KHggKyAyNTcpID4+IDgpKSA+PiA4IGFzc3VtaW5nIHRoZSBvcGVyYXRpb24gaXMgZG9uZSBpbg0K PiA+PiA+ICsgICAgICAgZG91YmxlIHRoZSBwcmVjaXNpb24gb2YgeC4NCj4gPj4gPiArDQo+ID4+ ID4gKyAgICAgICBJZiB3ZSBpbWFnaW5lIGEgc2hvcnQgYXMgYmVpbmcgY29tcG9zZWQgb2YgdHdv IGJsb2NrcyBvZiBieXRlcyB0aGVuDQo+ID4+ID4gKyAgICAgICBhZGRpbmcgMjU3IG9yIDBiMDAw MF8wMDAxXzAwMDBfMDAwMSB0byB0aGUgbnVtYmVyIGlzDQo+IGVxdWl2YWxlbnQgdG8NCj4gPj4g PiArICAgICAgIGFkZGluZyAxIHRvIGVhY2ggc3ViIGNvbXBvbmVudDoNCj4gPj4gPiArDQo+ID4+ ID4gKwkgICAgc2hvcnQgdmFsdWUgb2YgMTYtYml0cw0KPiA+PiA+ICsgICAgICAg4pSM4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQDQo+ID4+ID4gKyAgICAgICDilIIgICAg ICAgICAgICAgIOKUgiAgICAgICAgICAgICAgICDilIINCj4gPj4gPiArICAgICAgIOKUlOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmA0KPiA+PiA+ICsJIDgtYml0IHBhcnQx IOKWsiAgOC1iaXQgcGFydDIgICDilrINCj4gPj4gPiArCQkgICAgIOKUgiAgICAgICAgICAgICAg ICDilIINCj4gPj4gPiArCQkgICAgIOKUgiAgICAgICAgICAgICAgICDilIINCj4gPj4gPiArCQkg ICAgKzEgICAgICAgICAgICAgICArMQ0KPiA+PiA+ICsNCj4gPj4gPiArICAgICAgIGFmdGVyIHRo ZSBmaXJzdCBhZGRpdGlvbiwgd2UgaGF2ZSB0byBzaGlmdCByaWdodCBieSA4LCBhbmQgbmFycm93 IHRoZQ0KPiA+PiA+ICsgICAgICAgcmVzdWx0cyBiYWNrIHRvIGEgYnl0ZS4gIFJlbWVtYmVyIHRo YXQgdGhlIGFkZGl0aW9uIG11c3QgYmUgZG9uZSBpbg0KPiA+PiA+ICsgICAgICAgZG91YmxlIHRo ZSBwcmVjaXNpb24gb2YgdGhlIGlucHV0LiAgSG93ZXZlciBpZiB3ZSBrbm93IHRoYXQNCj4gPj4g PiArIHRoZQ0KPiA+PiBhZGRpdGlvbg0KPiA+PiA+ICsgICAgICAgYHggKyAyNTdgIGRvZXMgbm90 IG92ZXJmbG93IHRoZW4gd2UgY2FuIGRvIHRoZSBvcGVyYXRpb24gaW4NCj4gPj4gPiArIHRoZQ0K PiA+PiBjdXJyZW50DQo+ID4+ID4gKyAgICAgICBwcmVjaXNpb24uICBJbiB3aGljaCBjYXNlIHdl IGRvbid0IG5lZWQgdGhlIHBhY2sgYW5kIHVucGFja3MuICAqLw0KPiA+PiA+ICsgICAgICBhdXRv IHdjc3QgPSB3aTo6dG9fd2lkZSAoY3N0KTsNCj4gPj4gPiArICAgICAgaW50IHBvdyA9IHdpOjpl eGFjdF9sb2cyICh3Y3N0ICsgMSk7DQo+ID4+ID4gKyAgICAgIGlmIChwb3cgPT0gKGludCkgKGVs ZW1lbnRfcHJlY2lzaW9uICh2ZWN0eXBlKSAvIDIpKQ0KPiA+PiA+ICsJew0KPiA+PiA+ICsJICB3 aWRlX2ludCBtaW4sbWF4Ow0KPiA+PiA+ICsJICAvKiBJZiB3ZSdyZSBpbiBhIHBhdHRlcm4gd2Ug bmVlZCB0byBmaW5kIHRoZSBvcmdpbmFsIGRlZmluaXRpb24uICAqLw0KPiA+PiA+ICsJICB0cmVl IG9wMCA9IG9wcm5kMDsNCj4gPj4gPiArCSAgZ2ltcGxlICpzdG10ID0gU1NBX05BTUVfREVGX1NU TVQgKG9wcm5kMCk7DQo+ID4+ID4gKwkgIHN0bXRfdmVjX2luZm8gc3RtdF9pbmZvID0gdmluZm8t Pmxvb2t1cF9zdG10IChzdG10KTsNCj4gPj4gPiArCSAgaWYgKGlzX3BhdHRlcm5fc3RtdF9wIChz dG10X2luZm8pKQ0KPiA+PiA+ICsJICAgIHsNCj4gPj4gPiArCSAgICAgIGF1dG8gb3JpZ19zdG10 ID0gU1RNVF9WSU5GT19SRUxBVEVEX1NUTVQgKHN0bXRfaW5mbyk7DQo+ID4+ID4gKwkgICAgICBp ZiAoaXNfZ2ltcGxlX2Fzc2lnbiAoU1RNVF9WSU5GT19TVE1UIChvcmlnX3N0bXQpKSkNCj4gPj4g PiArCQlvcDAgPSBnaW1wbGVfYXNzaWduX2xocyAoU1RNVF9WSU5GT19TVE1UIChvcmlnX3N0bXQp KTsNCj4gPj4gPiArCSAgICB9DQo+ID4+DQo+ID4+IElmIHRoaXMgaXMgZ2VuZXJhbGx5IHNhZmUg KEknbSBza2lwcGluZyB0aGlua2luZyBhYm91dCBpdCBpbiB0aGUNCj4gPj4gaW50ZXJlc3RzIG9m IGEgcXVpY2sgcmV2aWV3IDotKSksIHRoZW4gSSB0aGluayBpdCBzaG91bGQgYmUgZG9uZSBpbg0K PiA+PiB2ZWN0X2dldF9yYW5nZV9pbmZvIGluc3RlYWQuICBVc2luZyBnaW1wbGVfZ2V0X2xocyB3 b3VsZCBiZSBtb3JlDQo+ID4+IGdlbmVyYWwgdGhhbiBoYW5kbGluZyBqdXN0IGFzc2lnbm1lbnRz Lg0KPiA+Pg0KPiA+PiA+ICsNCj4gPj4gPiArCSAgLyogQ2hlY2sgdGhhdCBubyBvdmVyZmxvdyB3 aWxsIG9jY3VyLiAgSWYgd2UgZG9uJ3QgaGF2ZSByYW5nZQ0KPiA+PiA+ICsJICAgICBpbmZvcm1h dGlvbiB3ZSBjYW4ndCBwZXJmb3JtIHRoZSBvcHRpbWl6YXRpb24uICAqLw0KPiA+PiA+ICsJICBp ZiAodmVjdF9nZXRfcmFuZ2VfaW5mbyAob3AwLCAmbWluLCAmbWF4KSkNCj4gPj4gPiArCSAgICB7 DQo+ID4+ID4gKwkgICAgICB3aWRlX2ludCBvbmUgPSB3aTo6dG9fd2lkZSAoYnVpbGRfb25lX2Nz dCAoaXR5cGUpKTsNCj4gPj4gPiArCSAgICAgIHdpZGVfaW50IGFkZGVyID0gd2k6OmFkZCAob25l LCB3aTo6bHNoaWZ0IChvbmUsIHBvdykpOw0KPiA+PiA+ICsJICAgICAgd2k6Om92ZXJmbG93X3R5 cGUgb3ZmOw0KPiA+PiA+ICsJICAgICAgLyogV2UgbmVlZCBhZGRlciBhbmQgbWF4IGluIHRoZSBz YW1lIHByZWNpc2lvbi4gICovDQo+ID4+ID4gKwkgICAgICB3aWRlX2ludCB6YWRkZXINCj4gPj4g PiArCQk9IHdpZGVfaW50X3N0b3JhZ2U6OmZyb20gKGFkZGVyLCB3aTo6Z2V0X3ByZWNpc2lvbiAo bWF4KSwNCj4gPj4gPiArCQkJCQkgIFVOU0lHTkVEKTsNCj4gPj4gPiArCSAgICAgIHdpOjphZGQg KG1heCwgemFkZGVyLCBVTlNJR05FRCwgJm92Zik7DQo+ID4+DQo+ID4+IENvdWxkIHlvdSBleHBs YWluIHRoaXMgYSBiaXQgbW9yZT8gIFdoZW4gZG8gd2UgaGF2ZSBtaXNtYXRjaGVkDQo+ID4+IHBy ZWNpc2lvbnM/DQo+ID4NCj4gPiBDIHByb21vdGlvbiBydWxlcyB3aWxsIHByb21vdGUgZS5nLg0K PiA+DQo+ID4gdm9pZCBmdW4yKHVpbnQ4X3QqIHJlc3RyaWN0IHBpeGVsLCB1aW50OF90IGxldmVs LCBpbnQgbikgew0KPiA+ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKz0xKQ0KPiA+ICAgICBw aXhlbFtpXSA9IChwaXhlbFtpXSArIGxldmVsKSAvIDB4ZmY7IH0NCj4gPg0KPiA+IEFuZCBoYXZl IHRoZSBhZGRpdGlvbiBiZSBkb25lIGFzIGEgMzIgYml0IGludGVnZXIuICBUaGUgdmVjdG9yaXpl cg0KPiA+IHdpbGwgZGVtb3RlIHRoaXMgZG93biB0byBhIHNob3J0LCBidXQgcmFuZ2UgaW5mb3Jt YXRpb24gaXMgbm90IHN0b3JlZA0KPiA+IGZvciBwYXR0ZXJucy4gIFNvIEluIHRoZSBhYm92ZSB0 aGUgcmFuZ2Ugd2lsbCBjb3JyZWN0bHkgYmUgMHgxZmUgYnV0DQo+ID4gdGhlIHByZWNpc2lvbiB3 aWxsIGJlIHRoYXQgb2YgdGhlIG9yaWdpbmFsIGV4cHJlc3Npb24sIHNvIDMyLiAgVGhpcw0KPiA+ IHdpbGwgYmUgYSBtaXNtYXRjaCB3aXRoIGl0eXBlIHdoaWNoIGlzIGRlcml2ZWQgZnJvbSB0aGUg c2l6ZSB0aGUgdmVjdG9yaXplcg0KPiB3aWxsIHBlcmZvcm0gdGhlIG9wZXJhdGlvbiBpbi4NCj4g Pg0KPiA+IFRoYW5rcywNCj4gPiBUYW1hcg0KPiA+DQo+ID4+DQo+ID4+IFRoYW5rcywNCj4gPj4g UmljaGFyZA0KPiA+Pg0KPiA+PiA+ICsJICAgICAgaWYgKG92ZiA9PSB3aTo6T1ZGX05PTkUpDQo+ ID4+ID4gKwkJew0KPiA+PiA+ICsJCSAgKnR5cGVfb3V0ID0gdmVjdHlwZTsNCj4gPj4gPiArCQkg IHRyZWUgdGFkZGVyID0gd2lkZV9pbnRfdG9fdHJlZSAoaXR5cGUsIGFkZGVyKTsNCj4gPj4gPiAr CQkgIGdjYWxsICpwYXR0MQ0KPiA+PiA+ICsJCSAgICA9IGdpbXBsZV9idWlsZF9jYWxsX2ludGVy bmFsIChJRk5fQURESCwgMiwgb3BybmQwLA0KPiA+PiB0YWRkZXIpOw0KPiA+PiA+ICsJCSAgdHJl ZSBsaHMgPSB2ZWN0X3JlY29nX3RlbXBfc3NhX3ZhciAoaXR5cGUsIE5VTEwpOw0KPiA+PiA+ICsJ CSAgZ2ltcGxlX2NhbGxfc2V0X2xocyAocGF0dDEsIGxocyk7DQo+ID4+ID4gKwkJICBhcHBlbmRf cGF0dGVybl9kZWZfc2VxICh2aW5mbywgc3RtdF92aW5mbywgcGF0dDEsDQo+ID4+IHZlY3R5cGUp Ow0KPiA+PiA+ICsNCj4gPj4gPiArCQkgIHBhdHRlcm5fc3RtdA0KPiA+PiA+ICsJCSAgICA9IGdp bXBsZV9idWlsZF9jYWxsX2ludGVybmFsIChJRk5fQURESCwgMiwgb3BybmQwLCBsaHMpOw0KPiA+ PiA+ICsJCSAgbGhzID0gdmVjdF9yZWNvZ190ZW1wX3NzYV92YXIgKGl0eXBlLCBOVUxMKTsNCj4g Pj4gPiArCQkgIGdpbXBsZV9jYWxsX3NldF9saHMgKHBhdHRlcm5fc3RtdCwgbGhzKTsNCj4gPj4g PiArDQo+ID4+ID4gKwkJICByZXR1cm4gcGF0dGVybl9zdG10Ow0KPiA+PiA+ICsJCX0NCj4gPj4g PiArCSAgICB9DQo+ID4+ID4gKwl9DQo+ID4+ID4gICAgICB9DQo+ID4+ID4NCj4gPj4gPiAgICBp ZiAocHJlYyA+IEhPU1RfQklUU19QRVJfV0lERV9JTlQgZGlmZiAtLWdpdA0KPiA+PiA+IGEvZ2Nj L3RyZWUtdmVjdC1zdG10cy5jYyBiL2djYy90cmVlLXZlY3Qtc3RtdHMuY2MgaW5kZXgNCj4gPj4g Pg0KPiA+Pg0KPiBlYjRjYTFmMTg0ZTM3NGQxNzdlYjQzZDVlYjkzYWNmNmU2YThmZGU5Li4zYTBm YjVhZDg5OGFkNDJjMzg2N2YwDQo+IGI5NQ0KPiA+PiA2NGYNCj4gPj4gPiBjNGUwNjZlNTAwODEg MTAwNjQ0DQo+ID4+ID4gLS0tIGEvZ2NjL3RyZWUtdmVjdC1zdG10cy5jYw0KPiA+PiA+ICsrKyBi L2djYy90cmVlLXZlY3Qtc3RtdHMuY2MNCj4gPj4gPiBAQCAtNjI2MywxNSArNjI2Myw2IEBAIHZl Y3Rvcml6YWJsZV9vcGVyYXRpb24gKHZlY19pbmZvICp2aW5mbywNCj4gPj4gPiAgCX0NCj4gPj4g PiAgICAgICAgdGFyZ2V0X3N1cHBvcnRfcCA9IChvcHRhYl9oYW5kbGVyIChvcHRhYiwgdmVjX21v ZGUpDQo+ID4+ID4gIAkJCSAgIT0gQ09ERV9GT1Jfbm90aGluZyk7DQo+ID4+ID4gLSAgICAgIHRy ZWUgY3N0Ow0KPiA+PiA+IC0gICAgICBpZiAoIXRhcmdldF9zdXBwb3J0X3ANCj4gPj4gPiAtCSAg JiYgb3AxDQo+ID4+ID4gLQkgICYmIChjc3QgPSB1bmlmb3JtX2ludGVnZXJfY3N0X3AgKG9wMSkp KQ0KPiA+PiA+IC0JdGFyZ2V0X3N1cHBvcnRfcA0KPiA+PiA+IC0JICA9IHRhcmdldG0udmVjdG9y aXplLmNhbl9zcGVjaWFsX2Rpdl9ieV9jb25zdCAoY29kZSwgdmVjdHlwZSwNCj4gPj4gPiAtCQkJ CQkJCXdpOjp0b193aWRlIChjc3QpLA0KPiA+PiA+IC0JCQkJCQkJTlVMTCwgTlVMTF9SVFgsDQo+ ID4+ID4gLQkJCQkJCQlOVUxMX1JUWCk7DQo+ID4+ID4gICAgICB9DQo+ID4+ID4NCj4gPj4gPiAg ICBib29sIHVzaW5nX2VtdWxhdGVkX3ZlY3RvcnNfcCA9IHZlY3RfZW11bGF0ZWRfdmVjdG9yX3AN Cj4gPj4gPiAodmVjdHlwZSk7DQo=