From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id UyT1E+R4KWpwyz8AWB0awg (envelope-from ) for ; Wed, 10 Jun 2026 10:47:00 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=O6tSEQwU; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 3F7C81E070; Wed, 10 Jun 2026 10:47:00 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 697261E070 for ; Wed, 10 Jun 2026 10:46:58 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id EA9784BA5439 for ; Wed, 10 Jun 2026 14:46:57 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org EA9784BA5439 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=O6tSEQwU Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.12]) by sourceware.org (Postfix) with ESMTPS id 8F00B4BA5435 for ; Wed, 10 Jun 2026 14:46:27 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8F00B4BA5435 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 8F00B4BA5435 Authentication-Results: sourceware.org; arc=fail smtp.remote-ip=192.198.163.12 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1781102788; cv=fail; b=nIVoCV+d1EOOPGBKBbEb6NOH22afC0SuS7xPEUzwqGOG4gzcmZX8CuEiJvEoHqJiz7etY51yGfofJgNTGvSnTrde+KA+/Mv+C3UirN7VP8xPIXm1maerUjEGiqMg/WY5eBzy0xclfiRDpZ8jfi0nuwt1utN+iMGR+cgUm2UAT5Y= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1781102788; c=relaxed/simple; bh=8P0H64adWaix85eKeAhfxtSSjgD0jK8dMNgIrdsXXBQ=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=r3MmFXJii3TfMDoq1iBV0dvUIcIjEkB2jLlq6d1+ctUex1dkHVlpOLg5au0UtgRKWqMM6L4dR3weLP4V9j+OPui9qXok06r6pEok17dl4o8wReolIYFBCeC4N8HqdWXjSUVuGDIGNIcYAQtjR6LcXy/57R3Q2WocuR5tUdiBong= ARC-Authentication-Results: i=2; sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=O6tSEQwU DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8F00B4BA5435 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1781102788; x=1812638788; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version:content-transfer-encoding; bh=8P0H64adWaix85eKeAhfxtSSjgD0jK8dMNgIrdsXXBQ=; b=O6tSEQwUxckVYXgEG1vaPFynkvzJhhRYXtDluB4c4cKq95aQd0t2USeS Mxmjdc1qNWnbHqhAj4jNTof1wD3ce/OVRRFr1L1waTCRspaK1ccKv3Ucn I+j+BYRtFjEvxwD+ap53g++llWVHxMtW8mm25N+VdlITzsfJLXx7r1JaU K9G1vS21TuAvx572SU8BxJVjOIniqEFUJm1BRcbTZ7C9BQcA13xnrq0ob rozk+6Da5A5oqDmyjiBdOgeTqdoOIA8yf8WBmmoRegabR6PIhBidpyPfC A69skFgmfCTfVZUO+AZmfLR9NQglYrWEsAnFXZRQKf+5AqzM4hw1xmZJ0 A==; X-CSE-ConnectionGUID: JiUnviiKQFGxd2wy0+gWag== X-CSE-MsgGUID: DyTM2G18SLeUFV250y1HlQ== X-IronPort-AV: E=McAfee;i="6800,10657,11813"; a="85739974" X-IronPort-AV: E=Sophos;i="6.24,197,1774335600"; d="scan'208";a="85739974" Received: from orviesa008.jf.intel.com ([10.64.159.148]) by fmvoesa106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jun 2026 07:46:27 -0700 X-CSE-ConnectionGUID: q8CHuZzWSJSLm4rHH/7ecA== X-CSE-MsgGUID: jh5L7BZkQ7WwqkwzOJT09g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.24,197,1774335600"; d="scan'208";a="246048731" Received: from orsmsx902.amr.corp.intel.com ([10.22.229.24]) by orviesa008.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jun 2026 07:46:26 -0700 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Wed, 10 Jun 2026 07:46:26 -0700 Received: from ORSEDG903.ED.cps.intel.com (10.7.248.13) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37 via Frontend Transport; Wed, 10 Jun 2026 07:46:25 -0700 Received: from CY7PR03CU001.outbound.protection.outlook.com (40.93.198.50) by edgegateway.intel.com (134.134.137.113) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Wed, 10 Jun 2026 07:46:25 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=u4XK2tyGlydgsssNtI1sB1kX0hdRNKyMkoHS5g5vlrOCy7G1rDcd1Ua+sozZ8BxgyupZmSPXBBX8T9TbezSZK2YZ/7HaHq8c5plpiVJE9zdIpo2lWSQ0QAQN5Nf3ztQAWwU75qDSBpQH88jgt5Fh0KY4Hycvpt7Jp04Xqny/K9FV2qiFmI2SV5/wARaevZhi/a/2ROPEjQayh+IPrRZ79NXfTQqKvUqEv4xLyHbTFjn/FBRB1B1kRPRPHUr+moOiWwUBcmApe4wra/SxNud3LyHjUKJc8/sUSQOAcXcelEpv7ibiCLx8x4ERAEH7gP7PSbC+v5X/3JZsUysI9zaaMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=cRCr4A+L8eTPJnno//UMSCackU202PUNHavRIZ7BpuE=; b=PZNta637hbY9a91fqrd2VVCe4aQk2SDIyqZTxf7uwqmuB7ml29UxJ37hk22AYx897rFvb6TcKRMt1aco4rclFsQlHk6CPXmY64mBOfQMR1t4QYHaqME45LyMC+2P6adW1aY1GTEG0z5mV3MTBIsS9y4ebrBtBq6xbVSD2hc0pX1bd7I1i6XTfw+TdgkFKs/BZJkobHzzyM3p3AHYBlAVFKmORn0V62yIzLHSwPTcRHLd81vRRkcgfNEfVfkVp9u1yPZfd/NLVUjmtImqOKTWBktHcGgVyoaagkR+ND58tjW0Am+fR1nInvc8v8RueAHf97e+7HHbM1oPzEcUyXbe4A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from SN7PR11MB7638.namprd11.prod.outlook.com (2603:10b6:806:34b::22) by DSSPR11MB9641.namprd11.prod.outlook.com (2603:10b6:8:377::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.13; Wed, 10 Jun 2026 14:46:24 +0000 Received: from SN7PR11MB7638.namprd11.prod.outlook.com ([fe80::7a35:98d:f02c:b011]) by SN7PR11MB7638.namprd11.prod.outlook.com ([fe80::7a35:98d:f02c:b011%3]) with mapi id 15.21.0092.006; Wed, 10 Jun 2026 14:46:24 +0000 From: "Schimpe, Christina" To: Guinevere Larsen , "gdb-patches@sourceware.org" CC: Thiago Jung Bauermann Subject: RE: [PATCH v4 4/8] gdb/record: c++ify internal structures of record-full.c Thread-Topic: [PATCH v4 4/8] gdb/record: c++ify internal structures of record-full.c Thread-Index: AQHc8p00zx/w03M9S0iGJZ/pqE0slbY35w8w Date: Wed, 10 Jun 2026 14:46:24 +0000 Message-ID: References: <20260602143342.12245-1-guinevere@redhat.com> <20260602143342.12245-5-guinevere@redhat.com> In-Reply-To: <20260602143342.12245-5-guinevere@redhat.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SN7PR11MB7638:EE_|DSSPR11MB9641:EE_ x-ms-office365-filtering-correlation-id: e43da9e3-1abd-4746-5291-08dec6ff0b70 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|366016|1800799024|23010399003|38070700021|56012099006|3023799007|11063799006|4143699003|5023799004|10063799003|6133799003|22082099003|18002099003; x-microsoft-antispam-message-info: KGXdwWb06VQXGwwT0rouISrR4ZeOGoCfGb+2wVtlpq8UYYcqmt63ez7GBl2+tPbM4dN63gXBlpJ09d743TERvSyynweUZCmnCYU+Ei6lYDeh8dz+pXvTAzkWpTUBt8OL4dyTaaM2ivbfqJa0K26QGvnNisc+63f04916r9AavAKabxpz+MItRDx1vHB/Apsy/h4g0WboD6MZF5XGI2mlxHEHNKcr7q86NXzU255toJRj8n4n08jKffs+a/RHnArM0oHEiMxoK1xkMtB3K4x1iU852CQoSP4vNqc0+R7/pFi0Xyr1Jd8v9KxlCPTXqCNWZfhFa5lEjWUZJH/pNYkKNeXfUe4ahcRbRhy1VFVUue6SMqYkJGvxpEztHzbYXYHRUQZYhKljCEx0IMNfhbj776BnzJucIeO5YVA9Guw9Eo7rUPrHo4RMqQFVwA9mteb4zsvJ1cIBazwv9XIw48O1QaVQ7EXbK4sa44kAkzdzHvDgK7W1pR9QGwcWiC2wMsPEFEm1TV/NMV64oGynNWidJPyrqsOoSo4UwAYF7Ek5LeeOCrdmWDuGmWOAJmhlm91jXkl3H72Vg2iirh74F9zRI7HeYsp2E2Um7Pp3NnJzvFGqoIIRnn02dERqOfUEeOIraLnHEYXbqugJrSq0o5ZLtC6lhJb/EOI3AcbjouZrn6kPC4mM/fsHho/FX5xu4ooHY+4I92UhN0VKCI6opH2pjL8ORlQsJiy4GLGIBc+bCqfEyrgmv6XoCDGVSvJlK3EO x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN7PR11MB7638.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(366016)(1800799024)(23010399003)(38070700021)(56012099006)(3023799007)(11063799006)(4143699003)(5023799004)(10063799003)(6133799003)(22082099003)(18002099003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?N3lRWVp6U1VUN0VPaFNvMnNWQmtJKzZpTlpYUVA1RGdnTU1RZWQ5UUYxdzMz?= =?utf-8?B?UmExSXcrVWlWVkpqUklrZmFuQkk5TTl2eWhLT3hoYmloOU5TOGpaTm4wdEtm?= =?utf-8?B?YlVtU2c4MjNZcFd4a0hWNDdUclNCdC9xN0lCeUlNUStSNnptNjNGR1NGSzZL?= =?utf-8?B?Y1JvYnM3SDE4em5jQ2FpSk0wR1B2dUN6SUJMd1hVQnc2TW5rYmtYTFJBZmc0?= =?utf-8?B?R1lsV1NFbVdKbWtoSWhXSXhzNlFCa3QxK2xqeHVPNTM5WkVIUW1YbzV6K0lT?= =?utf-8?B?QzRZQzcyV1pOZE1PVEtrZXRGRlExZmtQZEpSRCt1aERFamRlc1FwZTJYNGJ2?= =?utf-8?B?dHF5L3FGM1A1ZGJpbDErNk5CclBLV1g4SHJ4SXF3SkowbDZxMU0reEptZGZt?= =?utf-8?B?M1o3eWNJaXlUbWRaTkNBQkwzaUt6YXhTUTFiVkJYTzd1VFpqMjkyejAzZGti?= =?utf-8?B?cmxkd1hjcExXVjQwQjAvTEVkeTdPU1ZXemNrRHN5MjJMOWtNcytKZlZMbEVv?= =?utf-8?B?eTVYb2NqeTZHYUQzMlFQY0FYTWliY0lMdnk1QndHNWxMNzBEaEE0SXVXTTM5?= =?utf-8?B?ZUUxU2ZKZHNZbnA0WlpYNTFKMWlXWXdYcWNUaExTWWlyUkk0OUJmaHNLdGo1?= =?utf-8?B?MWZxM1g4dHJPMWVxbzJTNkE1T3ZncGhWQXJMVWE2aTkzUFdrMnRDYXBhZjlM?= =?utf-8?B?QUt3TnVTTVJ4SklpSng5RkszMGtuOXh6bHVvYW84akdxVDlmaS9PRktudkhF?= =?utf-8?B?eTRtRmtyRVBIUWd3VzB0YWNhR1AyVi82eHpqK09ETGxBUTJCQnFCRlk1SWMw?= =?utf-8?B?NnB1eE52NGtwNFNiM0o4bkNvYzZVRUFGa0RVc2ZBSFEwQlZxaGtFUHhhOUc3?= =?utf-8?B?a25WRDEvT1RaSEsvOUN0WVVDeU4vUXVXNjZOSlRsUWd5aUZSR2pKU1F5Y0di?= =?utf-8?B?QmdZSVNnNlZWZXdZYWxKRzZ2SWM3enRQMXluRzdjUFV2S3Y3cHVjWHFBTmNX?= =?utf-8?B?c2xOU3MzcEFIa0dQVUNyUjdWWmpDYi80V0RXV2d4U0llRXFDY3F4UFhjS3lJ?= =?utf-8?B?MWhJckswbUN2Wk1DRlg5cExYcFlDSmt2S3RJUFpqRWFCMXVlaHdqcFdIZ0k4?= =?utf-8?B?RkNuRkE3N2dYMEhQdFZDSzdsRndWWlh6VTMzVlJXd1hlazludDhCSmtwMUI1?= =?utf-8?B?YkFpWmFsOS85TXY0UlhvdnFBYWRNZGJ1M1dnVTRUUm9qUzVGczFUejRDSFlK?= =?utf-8?B?Zm1VeTNIK21ncWl6TVVkcFVVbnF4UFhKZnNNaGhNRGs4YWx1eUs4VVRESTUy?= =?utf-8?B?NGJkbjJQdjdQb0RwV3R2Ymowc0ZSWW9vOUx6TndLV2hmMmdxU3hUTXRrWjJU?= =?utf-8?B?UmNJSUFNRWhjWDJjZU01MDh5RVBJLzFqVUF3eUZaRXk0bm9LWVdRclVQTkxW?= =?utf-8?B?R0h3R1JHRzhmNDNGTjVhb29hdG1VS1JaeE5kSmtNdmFKRWwydnZXTTFuZVIy?= =?utf-8?B?QkhkY2czUkx4KzRuSnErUVgwaWhUeWhPOWlpa0dxaVNBQlpwNlpkZUdaWm1n?= =?utf-8?B?SElWcEcvU2xZMUQ5TWd0ckZ3UUlvQjl0T3paL1pOdEhaNkFyTXNndEwvN3dZ?= =?utf-8?B?SWt0VlhycjJxUCtrdUx3MllhSUdLalFQQlByUzlzNWJBa0VGWklnRFQ4Ym8r?= =?utf-8?B?eS9EbTcwSXY5bzNReUFaMnJTelNza2t1NFpWR3gydjBrQkcvZkNKVko4WmhQ?= =?utf-8?B?VWYyc0Q1dWxoaCtIRmM3MjhJeGJjbmZ1akVISkN2cFRpMTV6d2dJNVVGY2lh?= =?utf-8?B?YUtkZ1RZRGo0dnNBZjJMUVhqUStEc2ZHdEZvSWhCaUYrc0p4RTRDUi9jeVRm?= =?utf-8?B?RngzcEdjK3pOaU1qbXYrNVA5bElPeXd4aElTNTIwc3l2M0lJTGNOV0VWMXNV?= =?utf-8?B?SUUzWHFJbWQ5MThtSHFuSjNhVXVUVXovVHpnMWVjVk5SU1NMdnlLQllWcis3?= =?utf-8?B?L2xvK2Yxc0o5dVhiMzEraWdacytJTEhzclZBZUlwYmUwMEZMWENqblN1MmF0?= =?utf-8?B?bGd2cmNvVnpTZi9INzJxeEkrZFRzYkZNT0hQay9vOGY1ZEk1d3pLY2g0SVRp?= =?utf-8?B?SVNiTkJGcUZaUEVuTm9kNkMyWUdEOEJOOFc3K3o2eG9FLytVZWh6NFFFd3Js?= =?utf-8?B?TGFVcnJKcHZwUm5RVHZLL2NzaDFVRXRxK3BBQktlb0VnbEdPelUxNUhRRW1u?= =?utf-8?B?LzRqM1VDZm55cEdGZUZRZGRncUlaYTlQR3UwWTkvQncyYkNiOFVnNkRFTFR6?= =?utf-8?B?U1NINytITFN5eVJ4SSt3WDB5VzJ6RzZkcjlBM1RZR29ObHM4VzBTQT09?= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: PumrWsLiBYDcwQPuM4M8sY2pSJi/7aUdgs0qCkaFG9Kw7klJ4qKQPqpkboy5yRfP5ix9zHeeplIcjRiXxbIOaVd+1pLFot1zFio2IQOZkDjN3ct+iN/x5APjT2J09t3l8UTJ0oHPi5zGvzV10So6hgrXed5entpkkxQ8g6AFoYy4BFQX6sTiSsen2i8/OGyAEOFCSNSskxZD0ODN5gAx/f5OY7Jsbdysc/HR7hHO+yh93cu9IiGS/+wXzBPTXpvqUoRntmozI9AdwcVmRyzP6RtoEEWi+gxSZNv6p+hgLtj+2orDPrtK3JrGBgLEHDqrTDCZacgjpWmxCHoD1jzsPw== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN7PR11MB7638.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e43da9e3-1abd-4746-5291-08dec6ff0b70 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jun 2026 14:46:24.3877 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: hdPTkU38UVrKYh0xVOoxZLyZu4Vg4/ZPaAWx4eg3po3Jol2vZGBTnSU6gc+l98CWvnwc6b54vuesCK6JaTahLztRc+I90luhnmfjZ0kQ4T4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DSSPR11MB9641 X-OriginatorOrg: intel.com Content-Transfer-Encoding: base64 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBHdWluZXZlcmUgTGFyc2VuIDxn dWluZXZlcmVAcmVkaGF0LmNvbT4NCj4gU2VudDogRGllbnN0YWcsIDIuIEp1bmkgMjAyNiAxNjoz NA0KPiBUbzogZ2RiLXBhdGNoZXNAc291cmNld2FyZS5vcmcNCj4gQ2M6IEd1aW5ldmVyZSBMYXJz ZW4gPGd1aW5ldmVyZUByZWRoYXQuY29tPjsgVGhpYWdvIEp1bmcgQmF1ZXJtYW5uDQo+IDx0aGlh Z28uYmF1ZXJtYW5uQGxpbmFyby5vcmc+DQo+IFN1YmplY3Q6IFtQQVRDSCB2NCA0LzhdIGdkYi9y ZWNvcmQ6IGMrK2lmeSBpbnRlcm5hbCBzdHJ1Y3R1cmVzIG9mIHJlY29yZC1mdWxsLmMNCj4gDQo+ IFRoaXMgY29tbWl0IGFkZHMgYSBjb25zdHJ1Y3RvciwgZGVzdHJ1Y3RvciwgYW5kIHNvbWUgbWV0 aG9kcyB0byB0aGUNCj4gc3RydWN0dXJlcyByZWNvcmRfZnVsbF9lbnRyeSwgcmVjb3JkX2Z1bGxf cmVnX2VudHJ5IGFuZA0KPiByZWNvcmRfZnVsbF9tZW1fZW50cnkuIFRoaXMgaXMgYSBtb3ZlIHRv IGRpc2VudGFuZ2xlIHRoZSBpbnRlcm5hbA0KPiByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGF0YSBh bmQgaG93IHJlY29yZC1mdWxsIG1hbmlwdWxhdGVzIGl0IGZvciByZXBsYXlpbmcuDQo+IA0KPiBB bG9uZyB3aXRoIHRoaXMgY2hhbmdlLCByZWNvcmRfZnVsbF9lbnRyeSBpcyBjaGFuZ2VkIHRvIHVz ZSBhbiBzdGQ6OnZhcmlhbnQsDQo+IHNpbmNlIGl0IHdhcyBiYXNpY2FsbHkgZG9pbmcgdGhhdCBh bHJlYWR5LCBidXQgbm93IHdlIGhhdmUgdGhlIHN0ZGxpYmMrKyBlcnJvcg0KPiBjaGVja2luZyB0 byBtYWtlIHN1cmUgd2UncmUgb25seSBhY2Nlc3NpbmcgZWxlbWVudHMgd2UncmUgYWxsb3dlZCB0 by4NCj4gDQo+IFJldmlld2VkLWJ5OiBUaGlhZ28gSnVuZyBCYXVlcm1hbm4gPHRoaWFnby5iYXVl cm1hbm5AbGluYXJvLm9yZz4NCj4gLS0tDQo+ICBnZGIvcmVjb3JkLWZ1bGwuYyB8IDYxMyArKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICAxIGZpbGUgY2hh bmdlZCwgMzI2IGluc2VydGlvbnMoKyksIDI4NyBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1n aXQgYS9nZGIvcmVjb3JkLWZ1bGwuYyBiL2dkYi9yZWNvcmQtZnVsbC5jIGluZGV4DQo+IGEzYTMx ZTcyNzZmLi43M2RlODQzNzJiMCAxMDA2NDQNCj4gLS0tIGEvZ2RiL3JlY29yZC1mdWxsLmMNCj4g KysrIGIvZ2RiL3JlY29yZC1mdWxsLmMNCj4gQEAgLTUxLDYgKzUxLDcgQEANCj4gICNpbmNsdWRl IDxvcHRpb25hbD4NCj4gICNpbmNsdWRlIDxkZXF1ZT4NCj4gICNpbmNsdWRlIDxzaWduYWwuaD4N Cj4gKyNpbmNsdWRlIDx2YXJpYW50Pg0KPiANCj4gIC8qIFRoaXMgbW9kdWxlIGltcGxlbWVudHMg InRhcmdldCByZWNvcmQtZnVsbCIsIGFsc28ga25vd24gYXMgInByb2Nlc3MNCj4gICAgIHJlY29y ZCBhbmQgcmVwbGF5Ii4gIFRoaXMgdGFyZ2V0IHNpdHMgb24gdG9wIG9mIGEgIm5vcm1hbCIgdGFy Z2V0IEBAIC05MiwxMw0KPiArOTMsMTE2IEBAIHN0cnVjdCByZWNvcmRfZnVsbF9tZW1fZW50cnkN Cj4gICAgQ09SRV9BRERSIGFkZHI7DQo+ICAgIGludCBsZW47DQo+ICAgIC8qIFNldCB0aGlzIGZs YWcgaWYgdGFyZ2V0IG1lbW9yeSBmb3IgdGhpcyBlbnRyeQ0KPiAtICAgICBjYW4gbm8gbG9uZ2Vy IGJlIGFjY2Vzc2VkLiAgKi8NCj4gLSAgaW50IG1lbV9lbnRyeV9ub3RfYWNjZXNzaWJsZTsNCj4g KyAgICAgY2FuIGJlIGFjY2Vzc2VkLiAgKi8NCj4gKyAgYm9vbCBtZW1fZW50cnlfYWNjZXNzaWJs ZTsNCj4gICAgdW5pb24NCj4gICAgew0KPiAgICAgIGdkYl9ieXRlICpwdHI7DQo+ICAgICAgZ2Ri X2J5dGUgYnVmW3NpemVvZiAoZ2RiX2J5dGUgKildOw0KPiAgICB9IHU7DQo+ICsNCj4gKyAgcmVj b3JkX2Z1bGxfbWVtX2VudHJ5ICgpIDogYWRkciAoMCksIGxlbiAoMCksIG1lbV9lbnRyeV9hY2Nl c3NpYmxlDQo+ICsgKHRydWUpICB7IH0NCj4gKw0KPiArICByZWNvcmRfZnVsbF9tZW1fZW50cnkg KENPUkVfQUREUiBtZW1fYWRkciwgaW50IG1lbV9sZW4pICB7DQo+ICsgICAgYWRkciA9IG1lbV9h ZGRyOw0KPiArICAgIGxlbiA9IG1lbV9sZW47DQo+ICsgICAgaWYgKGxlbiA+IHNpemVvZiAodS5i dWYpKQ0KPiArICAgICAgdS5wdHIgPSBuZXcgZ2RiX2J5dGVbbGVuXTsNCj4gKyAgICBtZW1fZW50 cnlfYWNjZXNzaWJsZSA9IHRydWU7DQo+ICsgIH0NCj4gKw0KPiArICByZWNvcmRfZnVsbF9tZW1f ZW50cnkgKHJlY29yZF9mdWxsX21lbV9lbnRyeSAmJm90aGVyKSAgew0KPiArICAgIGFkZHIgPSBv dGhlci5hZGRyOw0KPiArICAgIGxlbiA9IG90aGVyLmxlbjsNCj4gKyAgICBtZW1jcHkgKHUuYnVm LCBvdGhlci51LmJ1Ziwgc2l6ZW9mICh1LmJ1ZikpOw0KPiArICAgIG1lbV9lbnRyeV9hY2Nlc3Np YmxlID0gb3RoZXIubWVtX2VudHJ5X2FjY2Vzc2libGU7DQo+ICsgICAgLyogV2l0aCBsZW4gPT0g MCwgT1RIRVIgaXMgZ3VhcmFudGVlZCB0byBub3QgdHJ5IHRvIGZyZWUgdGhlDQo+ICsgICAgICAg bWVtb3J5IHdoZW4gaXQgaXMgZGVzdHJ1Y3RlZC4gICovDQo+ICsgICAgb3RoZXIubGVuID0gMDsN Cj4gKyAgfQ0KPiArDQo+ICsgIH5yZWNvcmRfZnVsbF9tZW1fZW50cnkgKCkNCj4gKyAgew0KPiAr ICAgIGlmIChsZW4gPiBzaXplb2YgKHUuYnVmKSkNCj4gKyAgICAgIGRlbGV0ZVtdIHUucHRyOw0K PiArICB9DQo+ICsNCj4gKyAgcmVjb3JkX2Z1bGxfbWVtX2VudHJ5ICZvcGVyYXRvcj0gKHJlY29y ZF9mdWxsX21lbV9lbnRyeSAmJm90aGVyKSAgew0KPiArICAgIGdkYl9hc3NlcnQgKHRoaXMgIT0g Jm90aGVyKTsNCj4gKyAgICBhZGRyID0gb3RoZXIuYWRkcjsNCj4gKyAgICBsZW4gPSBvdGhlci5s ZW47DQo+ICsgICAgbWVtY3B5ICh1LmJ1Ziwgb3RoZXIudS5idWYsIHNpemVvZiAodS5idWYpKTsN Cj4gKyAgICBtZW1fZW50cnlfYWNjZXNzaWJsZSA9IG90aGVyLm1lbV9lbnRyeV9hY2Nlc3NpYmxl Ow0KPiArICAgIC8qIFdpdGggbGVuID09IDAsIE9USEVSIGlzIGd1YXJhbnRlZWQgdG8gbm90IHRy eSB0byBmcmVlIHRoZQ0KPiArICAgICAgIG1lbW9yeSB3aGVuIGl0IGlzIGRlc3RydWN0ZWQuICAq Lw0KPiArICAgIG90aGVyLmxlbiA9IDA7DQo+ICsgICAgcmV0dXJuICp0aGlzOw0KPiArICB9DQo+ ICsNCj4gKyAgRElTQUJMRV9DT1BZX0FORF9BU1NJR04gKHJlY29yZF9mdWxsX21lbV9lbnRyeSk7 DQo+ICsNCj4gKyAgZ2RiX2J5dGUgKmdldF9sb2MgKCkNCj4gKyAgew0KPiArICAgIGlmIChsZW4g PiBzaXplb2YgKHUuYnVmKSkNCj4gKyAgICAgIHJldHVybiB1LnB0cjsNCj4gKyAgICBlbHNlDQo+ ICsgICAgICByZXR1cm4gdS5idWY7DQo+ICsgIH0NCj4gKw0KPiArICBib29sIGV4ZWN1dGUgKGdk YmFyY2ggKmdkYmFyY2gpDQo+ICsgIHsNCj4gKyAgICAvKiBOb3RoaW5nIHRvIGRvIGlmIHRoZSBt ZW1vcnkgaXMgZmxhZ2dlZCBub3RfYWNjZXNzaWJsZS4gICovDQo+ICsgICAgaWYgKCFtZW1fZW50 cnlfYWNjZXNzaWJsZSkNCj4gKyAgICAgIHJldHVybiBmYWxzZTsNCj4gKw0KPiArICAgIGdkYjo6 Ynl0ZV92ZWN0b3IgYnVmIChsZW4pOw0KPiArDQo+ICsgICAgaWYgKHJlY29yZF9kZWJ1ZyA+IDEp DQo+ICsgICAgICBnZGJfcHJpbnRmIChnZGJfc3RkbG9nLA0KPiArCQkgICJQcm9jZXNzIHJlY29y ZDogcmVjb3JkX2Z1bGxfbWVtICVzIHRvICINCj4gKwkJICAiaW5mZXJpb3IgYWRkciA9ICVzIGxl biA9ICVkLlxuIiwNCj4gKwkJICBob3N0X2FkZHJlc3NfdG9fc3RyaW5nICh0aGlzKSwNCj4gKwkJ ICBwYWRkcmVzcyAoZ2RiYXJjaCwgYWRkciksDQo+ICsJCSAgbGVuKTsNCj4gKw0KPiArICAgIGlm IChyZWNvcmRfcmVhZF9tZW1vcnkgKGdkYmFyY2gsIGFkZHIsIGJ1Zi5kYXRhICgpLCBsZW4pKQ0K PiArICAgICAgbWVtX2VudHJ5X2FjY2Vzc2libGUgPSBmYWxzZTsNCj4gKyAgICBlbHNlDQo+ICsg ICAgICB7DQo+ICsJaWYgKHRhcmdldF93cml0ZV9tZW1vcnkgKGFkZHIsDQo+ICsJCQkJIGdldF9s b2MgKCksDQo+ICsJCQkJIGxlbikpDQo+ICsJICB7DQo+ICsJICAgIG1lbV9lbnRyeV9hY2Nlc3Np YmxlID0gZmFsc2U7DQo+ICsJICAgIGlmIChyZWNvcmRfZGVidWcpDQo+ICsJICAgICAgd2Fybmlu ZyAoXygiUHJvY2VzcyByZWNvcmQ6IGVycm9yIHdyaXRpbmcgbWVtb3J5IGF0ICINCj4gKwkJCSAi YWRkciA9ICVzIGxlbiA9ICVkLiIpLA0KPiArCQkgICAgICAgcGFkZHJlc3MgKGdkYmFyY2gsIGFk ZHIpLA0KPiArCQkgICAgICAgbGVuKTsNCj4gKwkgIH0NCj4gKwllbHNlDQo+ICsJICB7DQo+ICsJ ICAgIG1lbWNweSAoZ2V0X2xvYyAoKSwgYnVmLmRhdGEgKCksIGxlbik7DQo+ICsNCj4gKwkgICAg LyogV2UndmUgY2hhbmdlZCBtZW1vcnkgLS0tIGNoZWNrIGlmIGEgaGFyZHdhcmUNCj4gKwkgICAg ICAgd2F0Y2hwb2ludCBzaG91bGQgdHJhcC4gIE5vdGUgdGhhdCB0aGlzDQo+ICsJICAgICAgIHBy ZXNlbnRseSBhc3N1bWVzIHRoZSB0YXJnZXQgYmVuZWF0aCBzdXBwb3J0cw0KPiArCSAgICAgICBj b250aW51YWJsZSB3YXRjaHBvaW50cy4gIE9uIG5vbi1jb250aW51YWJsZQ0KPiArCSAgICAgICB3 YXRjaHBvaW50cyB0YXJnZXQsIHdlJ2xsIHdhbnQgdG8gY2hlY2sgdGhpcw0KPiArCSAgICAgICBf YmVmb3JlXyBhY3R1YWxseSBkb2luZyB0aGUgbWVtb3J5IGNoYW5nZSwgYW5kDQo+ICsJICAgICAg IG5vdCBkb2luZyB0aGUgY2hhbmdlIGF0IGFsbCBpZiB0aGUgd2F0Y2hwb2ludA0KPiArCSAgICAg ICB0cmFwcy4gICovDQo+ICsJICAgIGlmIChoYXJkd2FyZV93YXRjaHBvaW50X2luc2VydGVkX2lu X3JhbmdlDQo+ICsJCShjdXJyZW50X2luZmVyaW9yICgpLT5hc3BhY2UuZ2V0ICgpLCBhZGRyLCBs ZW4pKQ0KPiArCSAgICAgIHJldHVybiB0cnVlOw0KPiArCSAgfQ0KPiArICAgICAgfQ0KPiArICAg IHJldHVybiBmYWxzZTsNCj4gKyAgfQ0KPiAgfTsNCj4gDQo+ICBzdHJ1Y3QgcmVjb3JkX2Z1bGxf cmVnX2VudHJ5DQo+IEBAIC0xMTAsNiArMjE0LDcxIEBAIHN0cnVjdCByZWNvcmRfZnVsbF9yZWdf ZW50cnkNCj4gICAgICBnZGJfYnl0ZSAqcHRyOw0KPiAgICAgIGdkYl9ieXRlIGJ1ZlsyICogc2l6 ZW9mIChnZGJfYnl0ZSAqKV07DQo+ICAgIH0gdTsNCj4gKw0KPiArICByZWNvcmRfZnVsbF9yZWdf ZW50cnkgKCkgOiBudW0gKDApLCBsZW4gKDApIHsgfQ0KPiArDQo+ICsgIHJlY29yZF9mdWxsX3Jl Z19lbnRyeSAoZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ251bSkgIHsNCj4gKyAgICBudW0gPSBy ZWdudW07DQo+ICsgICAgbGVuID0gcmVnaXN0ZXJfc2l6ZSAoZ2RiYXJjaCwgcmVnbnVtKTsNCj4g KyAgICBpZiAobGVuID4gc2l6ZW9mICh1LmJ1ZikpDQo+ICsgICAgICB1LnB0ciA9IG5ldyBnZGJf Ynl0ZVtsZW5dOw0KPiArICB9DQo+ICsNCj4gKyAgcmVjb3JkX2Z1bGxfcmVnX2VudHJ5IChyZWNv cmRfZnVsbF9yZWdfZW50cnkgJiZvdGhlcikgIHsNCj4gKyAgICBudW0gPSBvdGhlci5udW07DQo+ ICsgICAgbGVuID0gb3RoZXIubGVuOw0KPiArICAgIG1lbWNweSAodS5idWYsIG90aGVyLnUuYnVm LCBzaXplb2YgKHUuYnVmKSk7DQo+ICsgICAgLyogV2l0aCBsZW4gPT0gMCwgT1RIRVIgaXMgZ3Vh cmFudGVlZCB0byBub3QgdHJ5IHRvIGZyZWUgdGhlDQo+ICsgICAgICAgbWVtb3J5IHdoZW4gaXQg aXMgZGVzdHJ1Y3RlZC4gICovDQo+ICsgICAgb3RoZXIubGVuID0gMDsNCj4gKyAgfQ0KPiArDQo+ ICsgIH5yZWNvcmRfZnVsbF9yZWdfZW50cnkgKCkNCj4gKyAgew0KPiArICAgIGlmIChsZW4gPiBz aXplb2YgKHUuYnVmKSkNCj4gKyAgICAgIGRlbGV0ZVtdIHUucHRyOw0KPiArICB9DQo+ICsNCj4g KyAgcmVjb3JkX2Z1bGxfcmVnX2VudHJ5ICZvcGVyYXRvcj0ocmVjb3JkX2Z1bGxfcmVnX2VudHJ5 ICYmb3RoZXIpICB7DQo+ICsgICAgZ2RiX2Fzc2VydCAodGhpcyAhPSAmb3RoZXIpOw0KPiArICAg IG51bSA9IG90aGVyLm51bTsNCj4gKyAgICBsZW4gPSBvdGhlci5sZW47DQo+ICsgICAgbWVtY3B5 ICh1LmJ1Ziwgb3RoZXIudS5idWYsIHNpemVvZiAodS5idWYpKTsNCj4gKyAgICAvKiBXaXRoIGxl biA9PSAwLCBPVEhFUiBpcyBndWFyYW50ZWVkIHRvIG5vdCB0cnkgdG8gZnJlZSB0aGUNCj4gKyAg ICAgICBtZW1vcnkgd2hlbiBpdCBpcyBkZXN0cnVjdGVkLiAgKi8NCj4gKyAgICBvdGhlci5sZW4g PSAwOw0KPiArICAgIHJldHVybiAqdGhpczsNCj4gKyAgfQ0KPiArDQo+ICsgIERJU0FCTEVfQ09Q WV9BTkRfQVNTSUdOIChyZWNvcmRfZnVsbF9yZWdfZW50cnkpOw0KPiArDQo+ICsgIGdkYl9ieXRl ICpnZXRfbG9jICgpDQo+ICsgIHsNCj4gKyAgICBpZiAobGVuID4gc2l6ZW9mICh1LmJ1ZikpDQo+ ICsgICAgICByZXR1cm4gdS5wdHI7DQo+ICsgICAgZWxzZQ0KPiArICAgICAgcmV0dXJuIHUuYnVm Ow0KPiArICB9DQo+ICsNCj4gKyAgYm9vbCBleGVjdXRlIChyZWdjYWNoZSAqcmVnY2FjaGUpDQo+ ICsgIHsNCj4gKyAgICBnZGI6OmJ5dGVfdmVjdG9yIGJ1ZiAobGVuKTsNCj4gKw0KPiArICAgIGlm IChyZWNvcmRfZGVidWcgPiAxKQ0KPiArICAgICAgZ2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywNCj4g KwkJICAiUHJvY2VzcyByZWNvcmQ6IHJlY29yZF9mdWxsX3JlZyAlcyB0byAiDQo+ICsJCSAgImlu ZmVyaW9yIG51bSA9ICVkLlxuIiwNCj4gKwkJICBob3N0X2FkZHJlc3NfdG9fc3RyaW5nICh0aGlz KSwNCj4gKwkJICBudW0pOw0KPiArDQo+ICsgICAgcmVnY2FjaGUtPmNvb2tlZF9yZWFkIChudW0s IGJ1Zik7DQo+ICsgICAgcmVnY2FjaGUtPmNvb2tlZF93cml0ZSAobnVtLCBnZXRfbG9jICgpKTsN Cj4gKyAgICBtZW1jcHkgKGdldF9sb2MgKCksIGJ1Zi5kYXRhICgpLCBsZW4pOw0KPiArICAgIHJl dHVybiBmYWxzZTsNCj4gKyAgfQ0KPiAgfTsNCj4gDQo+ICBlbnVtIHJlY29yZF9mdWxsX3R5cGUN Cj4gQEAgLTExOCwxNiArMjg3LDg4IEBAIGVudW0gcmVjb3JkX2Z1bGxfdHlwZQ0KPiAgICByZWNv cmRfZnVsbF9tZW0NCj4gIH07DQo+IA0KPiAtc3RydWN0IHJlY29yZF9mdWxsX2VudHJ5DQo+ICtj bGFzcyByZWNvcmRfZnVsbF9lbnRyeQ0KPiAgew0KPiAtICBlbnVtIHJlY29yZF9mdWxsX3R5cGUg dHlwZTsNCj4gLSAgdW5pb24NCj4gKyAgc3RkOjp2YXJpYW50PHJlY29yZF9mdWxsX3JlZ19lbnRy eSwgcmVjb3JkX2Z1bGxfbWVtX2VudHJ5PiBlbnRyeTsNCj4gKw0KPiArcHVibGljOg0KPiArICBy ZWNvcmRfZnVsbF9lbnRyeSAoKSA6IGVudHJ5IChyZWNvcmRfZnVsbF9yZWdfZW50cnkgKCkpIHt9 DQo+ICsNCj4gKyAgLyogQ29uc3RydWN0b3IgZm9yIGEgcmVnaXN0ZXIgZW50cnkuICBUeXBlIGlz IGhlcmUgdG8gbWFrZSBpdA0KPiArICAgICBlYXNpZXIgdG8gcmVjb2duaXplIGl0IGluIHRoZSBj b25zdHJ1Y3RvciBjYWxscywgaXQgaXNuJ3QNCj4gKyAgICAgYWN0dWFsbHkgaW1wb3J0YW50LiAg Ki8NCj4gKyAgcmVjb3JkX2Z1bGxfZW50cnkgKHJlY29yZF9mdWxsX3R5cGUgcmVnX3R5cGUsIGdk YmFyY2ggKmdkYmFyY2gsDQo+ICsJCSAgICAgaW50IHJlZ251bSkNCj4gKyAgOiBlbnRyeShyZWNv cmRfZnVsbF9yZWdfZW50cnkgKGdkYmFyY2gsIHJlZ251bSkpDQo+ICAgIHsNCj4gLSAgICAvKiBy ZWcgKi8NCj4gLSAgICBzdHJ1Y3QgcmVjb3JkX2Z1bGxfcmVnX2VudHJ5IHJlZzsNCj4gLSAgICAv KiBtZW0gKi8NCj4gLSAgICBzdHJ1Y3QgcmVjb3JkX2Z1bGxfbWVtX2VudHJ5IG1lbTsNCj4gLSAg fSB1Ow0KPiArICAgIGdkYl9hc3NlcnQgKHJlZ190eXBlID09IHJlY29yZF9mdWxsX3JlZyk7ICB9 DQo+ICsNCj4gKyAgcmVjb3JkX2Z1bGxfZW50cnkgKHJlY29yZF9mdWxsX3R5cGUgbWVtX3R5cGUs IENPUkVfQUREUiBhZGRyLCBpbnQNCj4gKyBsZW4pDQo+ICsgIDogZW50cnkocmVjb3JkX2Z1bGxf bWVtX2VudHJ5IChhZGRyLCBsZW4pKSAgew0KPiArICAgIGdkYl9hc3NlcnQgKG1lbV90eXBlID09 IHJlY29yZF9mdWxsX21lbSk7ICB9DQo+ICsNCj4gKyAgcmVjb3JkX2Z1bGxfZW50cnkgKHJlY29y ZF9mdWxsX2VudHJ5ICYmb3RoZXIpDQo+ICsgIDogZW50cnkgKHN0ZDo6bW92ZSAob3RoZXIuZW50 cnkpKQ0KPiArICB7DQo+ICsgIH0NCj4gKw0KPiArICBESVNBQkxFX0NPUFlfQU5EX0FTU0lHTiAo cmVjb3JkX2Z1bGxfZW50cnkpOw0KPiArDQo+ICsgIHJlY29yZF9mdWxsX3JlZ19lbnRyeSYgcmVn ICgpDQo+ICsgIHsNCj4gKyAgICBnZGJfYXNzZXJ0ICh0eXBlICgpID09IHJlY29yZF9mdWxsX3Jl Zyk7DQo+ICsgICAgcmV0dXJuIHN0ZDo6Z2V0PHJlY29yZF9mdWxsX3JlZ19lbnRyeT4gKGVudHJ5 KTsgIH0NCj4gKw0KPiArICByZWNvcmRfZnVsbF9tZW1fZW50cnkmIG1lbSAoKQ0KPiArICB7DQo+ ICsgICAgZ2RiX2Fzc2VydCAodHlwZSAoKSA9PSByZWNvcmRfZnVsbF9tZW0pOw0KPiArICAgIHJl dHVybiBzdGQ6OmdldDxyZWNvcmRfZnVsbF9tZW1fZW50cnk+IChlbnRyeSk7ICB9DQo+ICsNCj4g KyAgcmVjb3JkX2Z1bGxfdHlwZSB0eXBlICgpIGNvbnN0DQo+ICsgIHsNCj4gKyAgICBzd2l0Y2gg KGVudHJ5LmluZGV4ICgpKQ0KPiArICAgIHsNCj4gKyAgICBjYXNlIDA6DQo+ICsgICAgICByZXR1 cm4gcmVjb3JkX2Z1bGxfcmVnOw0KPiArICAgIGNhc2UgMToNCj4gKyAgICAgIHJldHVybiByZWNv cmRfZnVsbF9tZW07DQo+ICsgICAgfQ0KPiArICAgIGdkYl9hc3NlcnRfbm90X3JlYWNoZWQgKCJJ bXBvc3NpYmxlIHZhcmlhbnQgaW5kZXgiKTsgIH0NCj4gKw0KPiArICAvKiBHZXQgdGhlIHBvaW50 ZXIgdG8gdGhlIGRhdGEgc3RvcmVkIGJ5IHRoaXMgZW50cnkuICAqLyAgZ2RiX2J5dGUNCj4gKyAq Z2V0X2xvYyAoKSAgew0KPiArICAgIHN3aXRjaCAodHlwZSAoKSkNCj4gKyAgICB7DQo+ICsgICAg Y2FzZSByZWNvcmRfZnVsbF9yZWc6DQo+ICsgICAgICByZXR1cm4gcmVnICgpLmdldF9sb2MgKCk7 DQo+ICsgICAgY2FzZSByZWNvcmRfZnVsbF9tZW06DQo+ICsgICAgICByZXR1cm4gbWVtICgpLmdl dF9sb2MgKCk7DQo+ICsgICAgfQ0KPiArICAgIGdkYl9hc3NlcnRfbm90X3JlYWNoZWQgKCJJbXBv c3NpYmxlIGVudHJ5IHR5cGUiKTsgIH0NCj4gKw0KPiArICAvKiBFeGVjdXRlIHRoaXMgZW50cnks IHN3YXBwaW5nIHRoZSBhcHByb3ByaWF0ZSB2YWx1ZXMgZnJvbSBtZW1vcnkgb3INCj4gKyAgICAg cmVnaXN0ZXIgYW5kIHRoZSByZWNvcmRlZCBvbmVzLiAgUmV0dXJucyBUUlVFIGlmIHRoZSBleGVj dXRpb24gd2FzDQo+ICsgICAgIHN0b3BwZWQgYnkgYSB3YXRjaHBvaW50LiAgKi8NCj4gKw0KPiAr ICBib29sIGV4ZWN1dGUgKHJlZ2NhY2hlICpyZWdjYWNoZSkNCj4gKyAgew0KPiArICAgIHN3aXRj aCAodHlwZSAoKSkNCj4gKyAgICAgIHsNCj4gKyAgICAgIGNhc2UgcmVjb3JkX2Z1bGxfcmVnOg0K PiArCXJldHVybiByZWcgKCkuZXhlY3V0ZSAocmVnY2FjaGUpOw0KPiArICAgICAgY2FzZSByZWNv cmRfZnVsbF9tZW06DQo+ICsJcmV0dXJuIG1lbSAoKS5leGVjdXRlIChyZWdjYWNoZS0+YXJjaCAo KSk7DQo+ICsgICAgICB9DQo+ICsgICAgcmV0dXJuIGZhbHNlOw0KPiArICB9DQo+ICB9Ow0KPiAN Cj4gIC8qIFRoaXMgaXMgdGhlIG1haW4gc3RydWN0dXJlIHRoYXQgY29tcHJpc2VzIHRoZSBleGVj dXRpb24gbG9nLg0KPiBAQCAtMzg2LDkxICs2MjcsMTIgQEAgc3RhdGljIHN0cnVjdCBjbWRfbGlz dF9lbGVtZW50DQo+ICpyZWNvcmRfZnVsbF9jbWRsaXN0OyAgc3RhdGljIHZvaWQgcmVjb3JkX2Z1 bGxfZ290b19pbnNuIChzaXplX3QgdGFyZ2V0X2luc24sDQo+ICAJCQkJICAgZW51bSBleGVjX2Rp cmVjdGlvbl9raW5kIGRpcik7DQo+IA0KPiAtLyogSW5pdGlhbGl6YXRpb24gYW5kIGNsZWFudXAg ZnVuY3Rpb25zIGZvciByZWNvcmRfZnVsbF9yZWcgYW5kDQo+IC0gICByZWNvcmRfZnVsbF9tZW0g ZW50cmllcy4gICovDQo+IC0NCj4gLS8qIEluaXQgYSByZWNvcmRfZnVsbF9yZWcgcmVjb3JkIGVu dHJ5LiAgKi8NCj4gLQ0KPiAtc3RhdGljIGlubGluZSByZWNvcmRfZnVsbF9lbnRyeQ0KPiAtcmVj b3JkX2Z1bGxfcmVnX2luaXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdudW0p IC17DQo+IC0gIHJlY29yZF9mdWxsX2VudHJ5IHJlYzsNCj4gLSAgc3RydWN0IGdkYmFyY2ggKmdk YmFyY2ggPSByZWdjYWNoZS0+YXJjaCAoKTsNCj4gLQ0KPiAtICByZWMudHlwZSA9IHJlY29yZF9m dWxsX3JlZzsNCj4gLSAgcmVjLnUucmVnLm51bSA9IHJlZ251bTsNCj4gLSAgcmVjLnUucmVnLmxl biA9IHJlZ2lzdGVyX3NpemUgKGdkYmFyY2gsIHJlZ251bSk7DQo+IC0gIGlmIChyZWMudS5yZWcu bGVuID4gc2l6ZW9mIChyZWMudS5yZWcudS5idWYpKQ0KPiAtICAgIHJlYy51LnJlZy51LnB0ciA9 IChnZGJfYnl0ZSAqKSB4bWFsbG9jIChyZWMudS5yZWcubGVuKTsNCj4gLQ0KPiAtICByZXR1cm4g cmVjOw0KPiAtfQ0KPiAtDQo+IC0vKiBDbGVhbnVwIGEgcmVjb3JkX2Z1bGxfcmVnIHJlY29yZCBl bnRyeS4gICovDQo+IC0NCj4gLXN0YXRpYyBpbmxpbmUgdm9pZA0KPiAtcmVjb3JkX2Z1bGxfcmVn X2NsZWFudXAgKHJlY29yZF9mdWxsX2VudHJ5IHJlYykgLXsNCj4gLSAgZ2RiX2Fzc2VydCAocmVj LnR5cGUgPT0gcmVjb3JkX2Z1bGxfcmVnKTsNCj4gLSAgaWYgKHJlYy51LnJlZy5sZW4gPiBzaXpl b2YgKHJlYy51LnJlZy51LmJ1ZikpDQo+IC0gICAgeGZyZWUgKHJlYy51LnJlZy51LnB0cik7DQo+ IC19DQo+IC0NCj4gLS8qIEluaXQgYSByZWNvcmRfZnVsbF9tZW0gcmVjb3JkIGVudHJ5LiAgKi8N Cj4gLQ0KPiAtc3RhdGljIGlubGluZSByZWNvcmRfZnVsbF9lbnRyeQ0KPiAtcmVjb3JkX2Z1bGxf bWVtX2luaXQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuKSAtew0KPiAtICByZWNvcmRfZnVsbF9l bnRyeSByZWM7DQo+IC0NCj4gLSAgcmVjLnR5cGUgPSByZWNvcmRfZnVsbF9tZW07DQo+IC0gIHJl Yy51Lm1lbS5hZGRyID0gYWRkcjsNCj4gLSAgcmVjLnUubWVtLmxlbiA9IGxlbjsNCj4gLSAgaWYg KHJlYy51Lm1lbS5sZW4gPiBzaXplb2YgKHJlYy51Lm1lbS51LmJ1ZikpDQo+IC0gICAgcmVjLnUu bWVtLnUucHRyID0gKGdkYl9ieXRlICopIHhtYWxsb2MgKGxlbik7DQo+IC0gIHJlYy51Lm1lbS5t ZW1fZW50cnlfbm90X2FjY2Vzc2libGUgPSAwOw0KPiAtDQo+IC0gIHJldHVybiByZWM7DQo+IC19 DQo+IC0NCj4gLS8qIENsZWFudXAgYSByZWNvcmRfZnVsbF9tZW0gcmVjb3JkIGVudHJ5LiAgKi8N Cj4gLQ0KPiAtc3RhdGljIGlubGluZSB2b2lkDQo+IC1yZWNvcmRfZnVsbF9tZW1fY2xlYW51cCAo cmVjb3JkX2Z1bGxfZW50cnkgcmVjKSAtew0KPiAtICBnZGJfYXNzZXJ0IChyZWMudHlwZSA9PSBy ZWNvcmRfZnVsbF9tZW0pOw0KPiAtICBpZiAocmVjLnUubWVtLmxlbiA+IHNpemVvZiAocmVjLnUu bWVtLnUuYnVmKSkNCj4gLSAgICB4ZnJlZSAocmVjLnUubWVtLnUucHRyKTsNCj4gLX0NCj4gLQ0K PiAtLyogRnJlZSBvbmUgcmVjb3JkIGVudHJ5LCBhbnkgdHlwZS4gICovDQo+IC0NCj4gLXN0YXRp YyBpbmxpbmUgdm9pZA0KPiAtcmVjb3JkX2Z1bGxfZW50cnlfY2xlYW51cCAocmVjb3JkX2Z1bGxf ZW50cnkgcmVjKSAtew0KPiAtDQo+IC0gIHN3aXRjaCAocmVjLnR5cGUpIHsNCj4gLSAgY2FzZSBy ZWNvcmRfZnVsbF9yZWc6DQo+IC0gICAgcmVjb3JkX2Z1bGxfcmVnX2NsZWFudXAgKHJlYyk7DQo+ IC0gICAgYnJlYWs7DQo+IC0gIGNhc2UgcmVjb3JkX2Z1bGxfbWVtOg0KPiAtICAgIHJlY29yZF9m dWxsX21lbV9jbGVhbnVwIChyZWMpOw0KPiAtICAgIGJyZWFrOw0KPiAtICB9DQo+IC19DQo+IC0N Cj4gIHN0YXRpYyB2b2lkDQo+ICByZWNvcmRfZnVsbF9yZXNldF9oaXN0b3J5ICgpDQo+ICB7DQo+ ICAgIHJlY29yZF9mdWxsX2luc25fY291bnQgPSAwOw0KPiAgICByZWNvcmRfZnVsbF9uZXh0X2lu c24gPSAwOw0KPiANCj4gLSAgZm9yIChhdXRvICZpbnNuIDogcmVjb3JkX2Z1bGxfbGlzdCkNCj4g LSAgICB7DQo+IC0gICAgICBmb3IgKGF1dG8gJmVudHJ5IDogaW5zbi5lZmZlY3RzKQ0KPiAtCXJl Y29yZF9mdWxsX2VudHJ5X2NsZWFudXAgKGVudHJ5KTsNCj4gLSAgICB9DQo+IC0NCj4gICAgcmVj b3JkX2Z1bGxfbGlzdC5jbGVhciAoKTsNCj4gIH0NCj4gDQo+IEBAIC00ODAsMTEgKzY0Miw3IEBA IHN0YXRpYyB2b2lkDQo+ICByZWNvcmRfZnVsbF9saXN0X3JlbGVhc2VfZm9sbG93aW5nIChpbnQg aW5kZXgpICB7DQo+ICAgIGZvciAoaW50IGkgPSByZWNvcmRfZnVsbF9saXN0LnNpemUgKCkgLSAx OyBpID4gaW5kZXg7IGktLSkNCj4gLSAgICB7DQo+IC0gICAgICBmb3IgKGF1dG8gJmVudHJ5IDog cmVjb3JkX2Z1bGxfbGlzdFtpXS5lZmZlY3RzKQ0KPiAtCXJlY29yZF9mdWxsX2VudHJ5X2NsZWFu dXAgKGVudHJ5KTsNCj4gLSAgICAgIHJlY29yZF9mdWxsX2xpc3QucG9wX2JhY2sgKCk7DQo+IC0g ICAgfQ0KPiArICAgIHJlY29yZF9mdWxsX2xpc3QucG9wX2JhY2sgKCk7DQo+ICAgIC8qIFNldCB0 aGUgbmV4dCBpbnN0cnVjdGlvbiB0byBiZSBwYXN0IHRoZSBlbmQgb2YgdGhlIGxvZyBzbyB3ZQ0K PiAgICAgICBzdGFydCByZWNvcmRpbmcgaWYgdGhlIHVzZXIgbW92ZXMgZm9yd2FyZCBhZ2Fpbi4g ICovDQo+ICAgIHJlY29yZF9mdWxsX25leHRfaW5zbiA9IGluZGV4Ow0KPiBAQCAtNTEzLDkgKzY3 MSw2IEBAIHJlY29yZF9mdWxsX2xpc3RfcmVsZWFzZV9maXJzdCAodm9pZCkNCj4gICAgaWYgKHJl Y29yZF9mdWxsX2xpc3QuZW1wdHkgKCkpDQo+ICAgICAgcmV0dXJuOw0KPiANCj4gLSAgZm9yIChh dXRvICZlbnRyeSA6IHJlY29yZF9mdWxsX2xpc3RbMF0uZWZmZWN0cykNCj4gLSAgICByZWNvcmRf ZnVsbF9lbnRyeV9jbGVhbnVwIChlbnRyeSk7DQo+IC0NCj4gICAgcmVjb3JkX2Z1bGxfbGlzdC5w b3BfZnJvbnQgKCk7DQo+ICAgIC0tcmVjb3JkX2Z1bGxfbmV4dF9pbnNuOw0KPiAgfQ0KPiBAQCAt NTI1LDI4ICs2ODAsNyBAQCByZWNvcmRfZnVsbF9saXN0X3JlbGVhc2VfZmlyc3QgKHZvaWQpICBz dGF0aWMgdm9pZA0KPiByZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRkIChyZWNvcmRfZnVsbF9lbnRy eSAmcmVjKSAgew0KPiAtICByZWNvcmRfZnVsbF9pbmNvbXBsZXRlX2luc3RydWN0aW9uLmVmZmVj dHMucHVzaF9iYWNrIChyZWMpOyAtfQ0KPiAtDQo+IC0vKiBSZXR1cm4gdGhlIHZhbHVlIHN0b3Jh Z2UgbG9jYXRpb24gb2YgYSByZWNvcmQgZW50cnkuICAqLyAtc3RhdGljIGlubGluZQ0KPiBnZGJf Ynl0ZSAqIC1yZWNvcmRfZnVsbF9nZXRfbG9jIChzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkgKnJl YykgLXsNCj4gLSAgc3dpdGNoIChyZWMtPnR5cGUpIHsNCj4gLSAgY2FzZSByZWNvcmRfZnVsbF9t ZW06DQo+IC0gICAgaWYgKHJlYy0+dS5tZW0ubGVuID4gc2l6ZW9mIChyZWMtPnUubWVtLnUuYnVm KSkNCj4gLSAgICAgIHJldHVybiByZWMtPnUubWVtLnUucHRyOw0KPiAtICAgIGVsc2UNCj4gLSAg ICAgIHJldHVybiByZWMtPnUubWVtLnUuYnVmOw0KPiAtICBjYXNlIHJlY29yZF9mdWxsX3JlZzoN Cj4gLSAgICBpZiAocmVjLT51LnJlZy5sZW4gPiBzaXplb2YgKHJlYy0+dS5yZWcudS5idWYpKQ0K PiAtICAgICAgcmV0dXJuIHJlYy0+dS5yZWcudS5wdHI7DQo+IC0gICAgZWxzZQ0KPiAtICAgICAg cmV0dXJuIHJlYy0+dS5yZWcudS5idWY7DQo+IC0gIGRlZmF1bHQ6DQo+IC0gICAgZ2RiX2Fzc2Vy dF9ub3RfcmVhY2hlZCAoInVuZXhwZWN0ZWQgcmVjb3JkX2Z1bGxfZW50cnkgdHlwZSIpOw0KPiAt ICAgIHJldHVybiBOVUxMOw0KPiAtICB9DQo+ICsgIHJlY29yZF9mdWxsX2luY29tcGxldGVfaW5z dHJ1Y3Rpb24uZWZmZWN0cy5wdXNoX2JhY2sgKHN0ZDo6bW92ZQ0KPiArIChyZWMpKTsNCj4gIH0N Cj4gDQo+ICAvKiBSZWNvcmQgdGhlIHZhbHVlIG9mIGEgcmVnaXN0ZXIgTlVNIHRvIHJlY29yZF9m dWxsX2FyY2hfbGlzdC4gICovIEBAIC01NTQsNw0KPiArNjg4LDcgQEAgcmVjb3JkX2Z1bGxfZ2V0 X2xvYyAoc3RydWN0IHJlY29yZF9mdWxsX2VudHJ5ICpyZWMpICBpbnQNCj4gcmVjb3JkX2Z1bGxf YXJjaF9saXN0X2FkZF9yZWcgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdudW0p ICB7DQo+IC0gIHJlY29yZF9mdWxsX2VudHJ5IHJlYzsNCj4gKyAgcmVjb3JkX2Z1bGxfZW50cnkg cmVjIChyZWNvcmRfZnVsbF9yZWcsIHJlZ2NhY2hlLT5hcmNoICgpLCByZWdudW0pOw0KPiANCj4g ICAgaWYgKHJlY29yZF9kZWJ1ZyA+IDEpDQo+ICAgICAgZ2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywN Cj4gQEAgLTU2Miw5ICs2OTYsNyBAQCByZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRkX3JlZyAoc3Ry dWN0IHJlZ2NhY2hlDQo+ICpyZWdjYWNoZSwgaW50IHJlZ251bSkNCj4gIAkJInJlY29yZCBsaXN0 LlxuIiwNCj4gIAkJcmVnbnVtKTsNCj4gDQo+IC0gIHJlYyA9IHJlY29yZF9mdWxsX3JlZ19pbml0 IChyZWdjYWNoZSwgcmVnbnVtKTsNCj4gLQ0KPiAtICByZWdjYWNoZS0+Y29va2VkX3JlYWQgKHJl Z251bSwgcmVjb3JkX2Z1bGxfZ2V0X2xvYyAoJnJlYykpOw0KPiArICByZWdjYWNoZS0+Y29va2Vk X3JlYWQgKHJlZ251bSwgcmVjLmdldF9sb2MgKCkpOw0KPiANCj4gICAgcmVjb3JkX2Z1bGxfYXJj aF9saXN0X2FkZCAocmVjKTsNCj4gDQo+IEBAIC01NzcsNyArNzA5LDcgQEAgcmVjb3JkX2Z1bGxf YXJjaF9saXN0X2FkZF9yZWcgKHN0cnVjdCByZWdjYWNoZQ0KPiAqcmVnY2FjaGUsIGludCByZWdu dW0pICBpbnQgIHJlY29yZF9mdWxsX2FyY2hfbGlzdF9hZGRfbWVtIChDT1JFX0FERFINCj4gYWRk ciwgaW50IGxlbikgIHsNCj4gLSAgcmVjb3JkX2Z1bGxfZW50cnkgcmVjOw0KPiArICByZWNvcmRf ZnVsbF9lbnRyeSByZWMgKHJlY29yZF9mdWxsX21lbSwgYWRkciwgbGVuKTsNCj4gDQo+ICAgIGlm IChyZWNvcmRfZGVidWcgPiAxKQ0KPiAgICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csDQo+IEBA IC01ODgsMTQgKzcyMCw5IEBAIHJlY29yZF9mdWxsX2FyY2hfbGlzdF9hZGRfbWVtIChDT1JFX0FE RFIgYWRkciwNCj4gaW50IGxlbikNCj4gICAgaWYgKCFhZGRyKQkvKiBGSVhNRTogV2h5PyAgU29t ZSBhcmNoIG11c3QgcGVybWl0IGl0Li4uICAqLw0KPiAgICAgIHJldHVybiAwOw0KPiANCj4gLSAg cmVjID0gcmVjb3JkX2Z1bGxfbWVtX2luaXQgKGFkZHIsIGxlbik7DQo+IC0NCj4gICAgaWYgKHJl Y29yZF9yZWFkX21lbW9yeSAoY3VycmVudF9pbmZlcmlvciAoKS0+YXJjaCAoKSwgYWRkciwNCj4g LQkJCSAgcmVjb3JkX2Z1bGxfZ2V0X2xvYyAoJnJlYyksIGxlbikpDQo+IC0gICAgew0KPiAtICAg ICAgcmVjb3JkX2Z1bGxfbWVtX2NsZWFudXAgKHJlYyk7DQo+IC0gICAgICByZXR1cm4gLTE7DQo+ IC0gICAgfQ0KPiArCQkJICByZWMuZ2V0X2xvYyAoKSwgbGVuKSkNCj4gKyAgICByZXR1cm4gLTE7 DQo+IA0KPiAgICByZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRkIChyZWMpOw0KPiANCj4gQEAgLTcy Myw5MSArODUwLDYgQEAgcmVjb3JkX2Z1bGxfZ2RiX29wZXJhdGlvbl9kaXNhYmxlX3NldCAodm9p ZCkgIHN0YXRpYw0KPiBlbnVtIHRhcmdldF9zdG9wX3JlYXNvbiByZWNvcmRfZnVsbF9zdG9wX3Jl YXNvbg0KPiAgICA9IFRBUkdFVF9TVE9QUEVEX0JZX05PX1JFQVNPTjsNCj4gDQo+IC0vKiBFeGVj dXRlIG9uZSBpbnN0cnVjdGlvbiBmcm9tIHRoZSByZWNvcmQgbG9nLiAgRWFjaCBpbnN0cnVjdGlv biBpbg0KPiAtICAgdGhlIGxvZyB3aWxsIGJlIHJlcHJlc2VudGVkIGJ5IGFuIGFyYml0cmFyeSBz ZXF1ZW5jZSBvZiByZWdpc3Rlcg0KPiAtICAgZW50cmllcyBhbmQgbWVtb3J5IGVudHJpZXMsIGZv bGxvd2VkIGJ5IGFuICdlbmQnIGVudHJ5LiAgKi8NCj4gLQ0KPiAtc3RhdGljIGlubGluZSB2b2lk DQo+IC1yZWNvcmRfZnVsbF9leGVjX2VudHJ5IChyZWdjYWNoZSAqcmVnY2FjaGUsDQo+IC0JCQln ZGJhcmNoICpnZGJhcmNoLA0KPiAtCQkJcmVjb3JkX2Z1bGxfZW50cnkgKmVudHJ5KQ0KPiAtew0K PiAtICBzd2l0Y2ggKGVudHJ5LT50eXBlKQ0KPiAtICAgIHsNCj4gLSAgICBjYXNlIHJlY29yZF9m dWxsX3JlZzogLyogcmVnICovDQo+IC0gICAgICB7DQo+IC0JZ2RiOjpieXRlX3ZlY3RvciByZWcg KGVudHJ5LT51LnJlZy5sZW4pOw0KPiAtDQo+IC0JaWYgKHJlY29yZF9kZWJ1ZyA+IDEpDQo+IC0J ICBnZGJfcHJpbnRmIChnZGJfc3RkbG9nLA0KPiAtCQkgICAgICAiUHJvY2VzcyByZWNvcmQ6IHJl Y29yZF9mdWxsX3JlZyAlcyB0byAiDQo+IC0JCSAgICAgICJpbmZlcmlvciBudW0gPSAlZC5cbiIs DQo+IC0JCSAgICAgIGhvc3RfYWRkcmVzc190b19zdHJpbmcgKGVudHJ5KSwNCj4gLQkJICAgICAg ZW50cnktPnUucmVnLm51bSk7DQo+IC0NCj4gLQlyZWdjYWNoZS0+Y29va2VkX3JlYWQgKGVudHJ5 LT51LnJlZy5udW0sIHJlZy5kYXRhICgpKTsNCj4gLQlyZWdjYWNoZS0+Y29va2VkX3dyaXRlIChl bnRyeS0+dS5yZWcubnVtLCByZWNvcmRfZnVsbF9nZXRfbG9jDQo+IChlbnRyeSkpOw0KPiAtCW1l bWNweSAocmVjb3JkX2Z1bGxfZ2V0X2xvYyAoZW50cnkpLCByZWcuZGF0YSAoKSwgZW50cnktPnUu cmVnLmxlbik7DQo+IC0gICAgICB9DQo+IC0gICAgICBicmVhazsNCj4gLQ0KPiAtICAgIGNhc2Ug cmVjb3JkX2Z1bGxfbWVtOiAvKiBtZW0gKi8NCj4gLSAgICAgIHsNCj4gLQkvKiBOb3RoaW5nIHRv IGRvIGlmIHRoZSBlbnRyeSBpcyBmbGFnZ2VkIG5vdF9hY2Nlc3NpYmxlLiAgKi8NCj4gLQlpZiAo IWVudHJ5LT51Lm1lbS5tZW1fZW50cnlfbm90X2FjY2Vzc2libGUpDQo+IC0JICB7DQo+IC0JICAg IGdkYjo6Ynl0ZV92ZWN0b3IgbWVtIChlbnRyeS0+dS5tZW0ubGVuKTsNCj4gLQ0KPiAtCSAgICBp ZiAocmVjb3JkX2RlYnVnID4gMSkNCj4gLQkgICAgICBnZGJfcHJpbnRmIChnZGJfc3RkbG9nLA0K PiAtCQkJICAiUHJvY2VzcyByZWNvcmQ6IHJlY29yZF9mdWxsX21lbSAlcyB0byAiDQo+IC0JCQkg ICJpbmZlcmlvciBhZGRyID0gJXMgbGVuID0gJWQuXG4iLA0KPiAtCQkJICBob3N0X2FkZHJlc3Nf dG9fc3RyaW5nIChlbnRyeSksDQo+IC0JCQkgIHBhZGRyZXNzIChnZGJhcmNoLCBlbnRyeS0+dS5t ZW0uYWRkciksDQo+IC0JCQkgIGVudHJ5LT51Lm1lbS5sZW4pOw0KPiAtDQo+IC0JICAgIGlmIChy ZWNvcmRfcmVhZF9tZW1vcnkgKGdkYmFyY2gsDQo+IC0JCQkJICAgIGVudHJ5LT51Lm1lbS5hZGRy LCBtZW0uZGF0YSAoKSwNCj4gLQkJCQkgICAgZW50cnktPnUubWVtLmxlbikpDQo+IC0JICAgICAg ZW50cnktPnUubWVtLm1lbV9lbnRyeV9ub3RfYWNjZXNzaWJsZSA9IDE7DQo+IC0JICAgIGVsc2UN Cj4gLQkgICAgICB7DQo+IC0JCWlmICh0YXJnZXRfd3JpdGVfbWVtb3J5IChlbnRyeS0+dS5tZW0u YWRkciwNCj4gLQkJCQkJIHJlY29yZF9mdWxsX2dldF9sb2MgKGVudHJ5KSwNCj4gLQkJCQkJIGVu dHJ5LT51Lm1lbS5sZW4pKQ0KPiAtCQkgIHsNCj4gLQkJICAgIGVudHJ5LT51Lm1lbS5tZW1fZW50 cnlfbm90X2FjY2Vzc2libGUgPSAxOw0KPiAtCQkgICAgaWYgKHJlY29yZF9kZWJ1ZykNCj4gLQkJ ICAgICAgd2FybmluZyAoXygiUHJvY2VzcyByZWNvcmQ6IGVycm9yIHdyaXRpbmcgbWVtb3J5IGF0 ICINCj4gLQkJCQkgImFkZHIgPSAlcyBsZW4gPSAlZC4iKSwNCj4gLQkJCSAgICAgICBwYWRkcmVz cyAoZ2RiYXJjaCwgZW50cnktPnUubWVtLmFkZHIpLA0KPiAtCQkJICAgICAgIGVudHJ5LT51Lm1l bS5sZW4pOw0KPiAtCQkgIH0NCj4gLQkJZWxzZQ0KPiAtCQkgIHsNCj4gLQkJICAgIG1lbWNweSAo cmVjb3JkX2Z1bGxfZ2V0X2xvYyAoZW50cnkpLCBtZW0uZGF0YSAoKSwNCj4gLQkJCSAgICBlbnRy eS0+dS5tZW0ubGVuKTsNCj4gLQ0KPiAtCQkgICAgLyogV2UndmUgY2hhbmdlZCBtZW1vcnkgLS0t IGNoZWNrIGlmIGEgaGFyZHdhcmUNCj4gLQkJICAgICAgIHdhdGNocG9pbnQgc2hvdWxkIHRyYXAu ICBOb3RlIHRoYXQgdGhpcw0KPiAtCQkgICAgICAgcHJlc2VudGx5IGFzc3VtZXMgdGhlIHRhcmdl dCBiZW5lYXRoIHN1cHBvcnRzDQo+IC0JCSAgICAgICBjb250aW51YWJsZSB3YXRjaHBvaW50cy4g IE9uIG5vbi1jb250aW51YWJsZQ0KPiAtCQkgICAgICAgd2F0Y2hwb2ludHMgdGFyZ2V0LCB3ZSds bCB3YW50IHRvIGNoZWNrIHRoaXMNCj4gLQkJICAgICAgIF9iZWZvcmVfIGFjdHVhbGx5IGRvaW5n IHRoZSBtZW1vcnkgY2hhbmdlLCBhbmQNCj4gLQkJICAgICAgIG5vdCBkb2luZyB0aGUgY2hhbmdl IGF0IGFsbCBpZiB0aGUgd2F0Y2hwb2ludA0KPiAtCQkgICAgICAgdHJhcHMuICAqLw0KPiAtCQkg ICAgaWYgKGhhcmR3YXJlX3dhdGNocG9pbnRfaW5zZXJ0ZWRfaW5fcmFuZ2UNCj4gLQkJCShjdXJy ZW50X2luZmVyaW9yICgpLT5hc3BhY2UuZ2V0ICgpLA0KPiAtCQkJIGVudHJ5LT51Lm1lbS5hZGRy LCBlbnRyeS0+dS5tZW0ubGVuKSkNCj4gLQkJICAgICAgcmVjb3JkX2Z1bGxfc3RvcF9yZWFzb24g PQ0KPiBUQVJHRVRfU1RPUFBFRF9CWV9XQVRDSFBPSU5UOw0KPiAtCQkgIH0NCj4gLQkgICAgICB9 DQo+IC0JICB9DQo+IC0gICAgICB9DQo+IC0gICAgICBicmVhazsNCj4gLSAgICB9DQo+IC19DQo+ IC0NCj4gIC8qIEV4ZWN1dGUgb25lIGVudHJ5IGluIHRoZSBsb2cgYnkgZXhlY3V0aW5nIGFsbCB0 aGUgZWZmZWN0cy4gICovDQo+IA0KPiAgc3RhdGljIGlubGluZSB2b2lkDQo+IEBAIC04MTYsNyAr ODU4LDggQEAgcmVjb3JkX2Z1bGxfZXhlY19pbnNuIChyZWdjYWNoZSAqcmVnY2FjaGUsDQo+ICAJ CSAgICAgICByZWNvcmRfZnVsbF9pbnN0cnVjdGlvbiAmaW5zbikgIHsNCj4gICAgZm9yIChhdXRv ICZlbnRyeSA6IGluc24uZWZmZWN0cykNCj4gLSAgICByZWNvcmRfZnVsbF9leGVjX2VudHJ5IChy ZWdjYWNoZSwgZ2RiYXJjaCwgJmVudHJ5KTsNCj4gKyAgICBpZiAoZW50cnkuZXhlY3V0ZSAocmVn Y2FjaGUpKQ0KPiArICAgICAgcmVjb3JkX2Z1bGxfc3RvcF9yZWFzb24gPSBUQVJHRVRfU1RPUFBF RF9CWV9XQVRDSFBPSU5UOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyB2b2lkIHJlY29yZF9mdWxsX3Jl c3RvcmUgKHN0cnVjdCBiZmQgJmNiZmQpOyBAQCAtMjE5MywyMSArMjIzNiwxOQ0KPiBAQCByZWNv cmRfZnVsbF9yZWFkX2VudHJ5X2Zyb21fYmZkIChiZmQgKmNiZmQsIGFzZWN0aW9uICpvc2VjLCBp bnQNCj4gKmJmZF9vZmZzZXQpDQo+ICAJYmZkY29yZV9yZWFkIChjYmZkLCBvc2VjLCAmcmVnbnVt LCBzaXplb2YgKHJlZ251bSksIGJmZF9vZmZzZXQpOw0KPiAgCXJlZ251bSA9IG5ldG9yZGVyMzIg KHJlZ251bSk7DQo+IA0KPiAtCXJlY29yZF9mdWxsX2VudHJ5IHJlYzsNCj4gLQ0KPiAtCXJlYyA9 IHJlY29yZF9mdWxsX3JlZ19pbml0IChjYWNoZSwgcmVnbnVtKTsNCj4gKwlyZWNvcmRfZnVsbF9l bnRyeSByZWMgKHJlY29yZF9mdWxsX3JlZywgY2FjaGUtPmFyY2ggKCksIHJlZ251bSk7DQo+IA0K PiAgCS8qIEdldCB2YWwuICAqLw0KPiAtCWJmZGNvcmVfcmVhZCAoY2JmZCwgb3NlYywgcmVjb3Jk X2Z1bGxfZ2V0X2xvYyAoJnJlYyksDQo+IC0JCSAgICAgIHJlYy51LnJlZy5sZW4sIGJmZF9vZmZz ZXQpOw0KPiArCWJmZGNvcmVfcmVhZCAoY2JmZCwgb3NlYywgcmVjLmdldF9sb2MgKCksDQo+ICsJ CSAgICAgIHJlYy5yZWcgKCkubGVuLCBiZmRfb2Zmc2V0KTsNCj4gDQo+ICAJaWYgKHJlY29yZF9k ZWJ1ZykNCj4gIAkgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csDQo+ICAJCSAgICAgICIgIFJlYWRp bmcgcmVnaXN0ZXIgJWQgKDEgIg0KPiAgCQkgICAgICAicGx1cyAlbHUgcGx1cyAlZCBieXRlcylc biIsDQo+IC0JCSAgICAgIHJlYy51LnJlZy5udW0sDQo+ICsJCSAgICAgIHJlYy5yZWcgKCkubnVt LA0KPiAgCQkgICAgICAodW5zaWduZWQgbG9uZykgc2l6ZW9mIChyZWdudW0pLA0KPiAtCQkgICAg ICByZWMudS5yZWcubGVuKTsNCj4gKwkJICAgICAgcmVjLnJlZyAoKS5sZW4pOw0KPiANCj4gIAly ZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRkIChyZWMpOw0KPiAgCWJyZWFrOw0KPiBAQCAtMjIyMywy MiArMjI2NCwyMCBAQCByZWNvcmRfZnVsbF9yZWFkX2VudHJ5X2Zyb21fYmZkIChiZmQgKmNiZmQs DQo+IGFzZWN0aW9uICpvc2VjLCBpbnQgKmJmZF9vZmZzZXQpDQo+ICAJYmZkY29yZV9yZWFkIChj YmZkLCBvc2VjLCAmYWRkciwgc2l6ZW9mIChhZGRyKSwgYmZkX29mZnNldCk7DQo+ICAJYWRkciA9 IG5ldG9yZGVyNjQgKGFkZHIpOw0KPiANCj4gLQlyZWNvcmRfZnVsbF9lbnRyeSByZWM7DQo+IC0J cmVjID0gcmVjb3JkX2Z1bGxfbWVtX2luaXQgKGFkZHIsIGxlbik7DQo+ICsJcmVjb3JkX2Z1bGxf ZW50cnkgcmVjIChyZWNvcmRfZnVsbF9tZW0sIGFkZHIsIGxlbik7DQo+IA0KPiAgCS8qIEdldCB2 YWwuICAqLw0KPiAtCWJmZGNvcmVfcmVhZCAoY2JmZCwgb3NlYywgcmVjb3JkX2Z1bGxfZ2V0X2xv YyAoJnJlYyksDQo+IC0JCSAgICAgIGxlbiwgYmZkX29mZnNldCk7DQo+ICsJYmZkY29yZV9yZWFk IChjYmZkLCBvc2VjLCByZWMuZ2V0X2xvYyAoKSwgbGVuLCBiZmRfb2Zmc2V0KTsNCj4gDQo+ICAJ aWYgKHJlY29yZF9kZWJ1ZykNCj4gIAkgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csDQo+ICAJCSAg ICAgICIgIFJlYWRpbmcgbWVtb3J5ICVzICgxIHBsdXMgIg0KPiAgCQkgICAgICAiJWx1IHBsdXMg JWx1IHBsdXMgJWQgYnl0ZXMpXG4iLA0KPiAgCQkgICAgICBwYWRkcmVzcyAoZ2V0X2N1cnJlbnRf YXJjaCAoKSwNCj4gLQkJCQlyZWMudS5tZW0uYWRkciksDQo+ICsJCQkJcmVjLm1lbSAoKS5hZGRy KSwNCj4gIAkJICAgICAgKHVuc2lnbmVkIGxvbmcpIHNpemVvZiAoYWRkciksDQo+ICAJCSAgICAg ICh1bnNpZ25lZCBsb25nKSBzaXplb2YgKGxlbiksDQo+IC0JCSAgICAgIHJlYy51Lm1lbS5sZW4p Ow0KPiArCQkgICAgICByZWMubWVtICgpLmxlbik7DQo+IA0KPiAgCXJlY29yZF9mdWxsX2FyY2hf bGlzdF9hZGQgKHJlYyk7DQo+ICAJYnJlYWs7DQo+IEBAIC0yMzg1LDU3ICsyNDI0LDU2IEBAIHJl Y29yZF9mdWxsX3dyaXRlX2VudHJ5X3RvX2JmZA0KPiAocmVjb3JkX2Z1bGxfZW50cnkgJmVudHJ5 LA0KPiAgICB1aW50MzJfdCByZWdudW0sIGxlbjsNCj4gICAgdWludDY0X3QgYWRkcjsNCj4gDQo+ IC0gIHR5cGUgPSBlbnRyeS50eXBlOw0KPiArICB0eXBlID0gZW50cnkudHlwZSAoKTsNCj4gICAg YmZkY29yZV93cml0ZSAob2JmZC5nZXQgKCksIG9zZWMsICZ0eXBlLCBzaXplb2YgKHR5cGUpLCBi ZmRfb2Zmc2V0KTsNCj4gDQo+IC0gIHN3aXRjaCAoZW50cnkudHlwZSkNCj4gKyAgc3dpdGNoICh0 eXBlKQ0KPiAgICAgIHsNCj4gICAgICBjYXNlIHJlY29yZF9mdWxsX3JlZzogLyogcmVnICovDQo+ IC0gICAgICBpZiAocmVjb3JkX2RlYnVnKQ0KPiAtCWdkYl9wcmludGYgKGdkYl9zdGRsb2csDQo+ IC0JCSAgICAiICBXcml0aW5nIHJlZ2lzdGVyICVkICgxICINCj4gLQkJICAgICJwbHVzICVsdSBw bHVzICVkIGJ5dGVzKVxuIiwNCj4gLQkJICAgIGVudHJ5LnUucmVnLm51bSwNCj4gLQkJICAgICh1 bnNpZ25lZCBsb25nKSBzaXplb2YgKHJlZ251bSksDQo+IC0JCSAgICBlbnRyeS51LnJlZy5sZW4p Ow0KPiAtDQo+IC0gICAgICAvKiBXcml0ZSByZWdudW0uICAqLw0KPiAtICAgICAgcmVnbnVtID0g bmV0b3JkZXIzMiAoZW50cnkudS5yZWcubnVtKTsNCj4gLSAgICAgIGJmZGNvcmVfd3JpdGUgKG9i ZmQuZ2V0ICgpLCBvc2VjLCAmcmVnbnVtLA0KPiAtCQkgICAgIHNpemVvZiAocmVnbnVtKSwgYmZk X29mZnNldCk7DQo+IC0NCj4gLSAgICAgIC8qIFdyaXRlIHJlZ3ZhbC4gICovDQo+IC0gICAgICBi ZmRjb3JlX3dyaXRlIChvYmZkLmdldCAoKSwgb3NlYywNCj4gLQkJICAgICByZWNvcmRfZnVsbF9n ZXRfbG9jICgmZW50cnkpLA0KPiAtCQkgICAgIGVudHJ5LnUucmVnLmxlbiwgYmZkX29mZnNldCk7 DQo+IC0gICAgICBicmVhazsNCj4gKyAgICAgIHsNCj4gKwlhdXRvICZyZWcgPSBlbnRyeS5yZWcg KCk7DQo+ICsJaWYgKHJlY29yZF9kZWJ1ZykNCj4gKwkgIGdkYl9wcmludGYgKGdkYl9zdGRsb2cs DQo+ICsJCSAgICAgICIgIFdyaXRpbmcgcmVnaXN0ZXIgJWQgKDEgIg0KPiArCQkgICAgICAicGx1 cyAlbHUgcGx1cyAlZCBieXRlcylcbiIsDQo+ICsJCSAgICAgIHJlZy5udW0sDQo+ICsJCSAgICAg ICh1bnNpZ25lZCBsb25nKSBzaXplb2YgKHJlZ251bSksDQo+ICsJCSAgICAgIHJlZy5sZW4pOw0K PiArDQo+ICsJLyogV3JpdGUgcmVnbnVtLiAgKi8NCj4gKwlyZWdudW0gPSBuZXRvcmRlcjMyIChy ZWcubnVtKTsNCj4gKwliZmRjb3JlX3dyaXRlIChvYmZkLmdldCAoKSwgb3NlYywgJnJlZ251bSwg c2l6ZW9mIChyZWdudW0pLA0KPiArYmZkX29mZnNldCk7DQo+ICsNCj4gKwkvKiBXcml0ZSByZWd2 YWwuICAqLw0KPiArCWJmZGNvcmVfd3JpdGUgKG9iZmQuZ2V0ICgpLCBvc2VjLCBlbnRyeS5nZXRf bG9jICgpLCByZWcubGVuLCBiZmRfb2Zmc2V0KTsNCj4gKwlicmVhazsNCj4gKyAgICAgIH0NCj4g DQo+ICAgICAgY2FzZSByZWNvcmRfZnVsbF9tZW06IC8qIG1lbSAqLw0KPiAtICAgICAgaWYgKHJl Y29yZF9kZWJ1ZykNCj4gLQlnZGJfcHJpbnRmIChnZGJfc3RkbG9nLA0KPiAtCQkgICAgIiAgV3Jp dGluZyBtZW1vcnkgJXMgKDEgcGx1cyAiDQo+IC0JCSAgICAiJWx1IHBsdXMgJWx1IHBsdXMgJWQg Ynl0ZXMpXG4iLA0KPiAtCQkgICAgcGFkZHJlc3MgKGdkYmFyY2gsDQo+IC0JCQkgICAgICBlbnRy eS51Lm1lbS5hZGRyKSwNCj4gLQkJICAgICh1bnNpZ25lZCBsb25nKSBzaXplb2YgKGFkZHIpLA0K PiAtCQkgICAgKHVuc2lnbmVkIGxvbmcpIHNpemVvZiAobGVuKSwNCj4gLQkJICAgIGVudHJ5LnUu bWVtLmxlbik7DQo+IC0NCj4gLSAgICAgIC8qIFdyaXRlIG1lbWxlbi4gICovDQo+IC0gICAgICBs ZW4gPSBuZXRvcmRlcjMyIChlbnRyeS51Lm1lbS5sZW4pOw0KPiAtICAgICAgYmZkY29yZV93cml0 ZSAob2JmZC5nZXQgKCksIG9zZWMsICZsZW4sIHNpemVvZiAobGVuKSwNCj4gLQkJICAgICBiZmRf b2Zmc2V0KTsNCj4gLQ0KPiAtICAgICAgLyogV3JpdGUgbWVtYWRkci4gICovDQo+IC0gICAgICBh ZGRyID0gbmV0b3JkZXI2NCAoZW50cnkudS5tZW0uYWRkcik7DQo+IC0gICAgICBiZmRjb3JlX3dy aXRlIChvYmZkLmdldCAoKSwgb3NlYywgJmFkZHIsDQo+IC0JCSAgICAgc2l6ZW9mIChhZGRyKSwg YmZkX29mZnNldCk7DQo+IC0NCj4gLSAgICAgIC8qIFdyaXRlIG1lbXZhbC4gICovDQo+IC0gICAg ICBiZmRjb3JlX3dyaXRlIChvYmZkLmdldCAoKSwgb3NlYywNCj4gLQkJICAgICByZWNvcmRfZnVs bF9nZXRfbG9jICgmZW50cnkpLA0KPiAtCQkgICAgIGVudHJ5LnUubWVtLmxlbiwgYmZkX29mZnNl dCk7DQo+IC0gICAgICBicmVhazsNCj4gKyAgICAgIHsNCj4gKwlhdXRvICZtZW0gPSBlbnRyeS5t ZW0gKCk7DQo+ICsJaWYgKHJlY29yZF9kZWJ1ZykNCj4gKwkgIGdkYl9wcmludGYgKGdkYl9zdGRs b2csDQo+ICsJCSAgICAgICIgIFdyaXRpbmcgbWVtb3J5ICVzICgxIHBsdXMgIg0KPiArCQkgICAg ICAiJWx1IHBsdXMgJWx1IHBsdXMgJWQgYnl0ZXMpXG4iLA0KPiArCQkgICAgICBwYWRkcmVzcyAo Z2RiYXJjaCwgbWVtLmFkZHIpLA0KPiArCQkgICAgICAodW5zaWduZWQgbG9uZykgc2l6ZW9mIChh ZGRyKSwNCj4gKwkJICAgICAgKHVuc2lnbmVkIGxvbmcpIHNpemVvZiAobGVuKSwNCj4gKwkJICAg ICAgbWVtLmxlbik7DQo+ICsNCj4gKwkvKiBXcml0ZSBtZW1sZW4uICAqLw0KPiArCWxlbiA9IG5l dG9yZGVyMzIgKG1lbS5sZW4pOw0KPiArCWJmZGNvcmVfd3JpdGUgKG9iZmQuZ2V0ICgpLCBvc2Vj LCAmbGVuLCBzaXplb2YgKGxlbiksIGJmZF9vZmZzZXQpOw0KPiArDQo+ICsJLyogV3JpdGUgbWVt YWRkci4gICovDQo+ICsJYWRkciA9IG5ldG9yZGVyNjQgKG1lbS5hZGRyKTsNCj4gKwliZmRjb3Jl X3dyaXRlIChvYmZkLmdldCAoKSwgb3NlYywgJmFkZHIsIHNpemVvZiAoYWRkciksIGJmZF9vZmZz ZXQpOw0KPiArDQo+ICsJLyogV3JpdGUgbWVtdmFsLiAgKi8NCj4gKwliZmRjb3JlX3dyaXRlIChv YmZkLmdldCAoKSwgb3NlYywgZW50cnkuZ2V0X2xvYyAoKSwgbWVtLmxlbiwNCj4gKwkJICAgICAg IGJmZF9vZmZzZXQpOw0KPiArCWJyZWFrOw0KPiArICAgICAgfQ0KPiAgICAgIH0NCj4gIH0NCj4g DQo+IEBAIC0yNDgyLDEzICsyNTIwLDEzIEBAIHJlY29yZF9mdWxsX2Jhc2VfdGFyZ2V0OjpzYXZl X3JlY29yZCAoY29uc3QNCj4gY2hhciAqcmVjZmlsZW5hbWUpDQo+ICAgICAgICAvKiBOdW1iZXIg b2YgZWZmZWN0cyBvZiBhbiBpbnN0cnVjdGlvbi4gICovDQo+ICAgICAgICBzYXZlX3NpemUgKz0g c2l6ZW9mICh1aW50MzJfdCkgKyBzaXplb2YgKHVpbnQ4X3QpICsgc2l6ZW9mICh1aW50MzJfdCk7 DQo+ICAgICAgICBmb3IgKGF1dG8gJmVudHJ5IDogcmVjb3JkX2Z1bGxfbGlzdFtpXS5lZmZlY3Rz KQ0KPiAtCXN3aXRjaCAoZW50cnkudHlwZSkNCj4gKwlzd2l0Y2ggKGVudHJ5LnR5cGUgKCkpDQo+ ICAJICB7DQo+ICAJICBjYXNlIHJlY29yZF9mdWxsX3JlZzoNCj4gLQkgICAgc2F2ZV9zaXplICs9 IDEgKyA0ICsgZW50cnkudS5yZWcubGVuOw0KPiArCSAgICBzYXZlX3NpemUgKz0gMSArIDQgKyBl bnRyeS5yZWcgKCkubGVuOw0KPiAgCSAgICBicmVhazsNCj4gIAkgIGNhc2UgcmVjb3JkX2Z1bGxf bWVtOg0KPiAtCSAgICBzYXZlX3NpemUgKz0gMSArIDQgKyA4ICsgZW50cnkudS5tZW0ubGVuOw0K PiArCSAgICBzYXZlX3NpemUgKz0gMSArIDQgKyA4ICsgZW50cnkubWVtICgpLmxlbjsNCj4gIAkg ICAgYnJlYWs7DQo+ICAJICB9DQo+ICAgICAgfQ0KPiBAQCAtMjYyMSwxOCArMjY1OSwxOCBAQCBt YWludGVuYW5jZV9wcmludF9yZWNvcmRfaW5zdHJ1Y3Rpb24gKGNvbnN0DQo+IGNoYXIgKmFyZ3Ms IGludCBmcm9tX3R0eSkNCj4gDQo+ICAgIGdkYmFyY2ggKmFyY2ggPSBjdXJyZW50X2luZmVyaW9y ICgpLT5hcmNoICgpOw0KPiANCj4gLSAgZm9yIChhdXRvIGVudHJ5IDogdG9fcHJpbnQtPmVmZmVj dHMpDQo+ICsgIGZvciAoYXV0byAmZW50cnkgOiB0b19wcmludC0+ZWZmZWN0cykNCj4gICAgICB7 DQo+IC0gICAgICBzd2l0Y2ggKGVudHJ5LnR5cGUpDQo+ICsgICAgICBzd2l0Y2ggKGVudHJ5LnR5 cGUgKCkpDQo+ICAJew0KPiAgCSAgY2FzZSByZWNvcmRfZnVsbF9yZWc6DQo+ICAJICAgIHsNCj4g LQkgICAgICB0eXBlICpyZWd0eXBlID0gZ2RiYXJjaF9yZWdpc3Rlcl90eXBlIChhcmNoLCBlbnRy eS51LnJlZy5udW0pOw0KPiArCSAgICAgIHR5cGUgKnJlZ3R5cGUgPSBnZGJhcmNoX3JlZ2lzdGVy X3R5cGUgKGFyY2gsIGVudHJ5LnJlZyAoKS5udW0pOw0KPiAgCSAgICAgIHZhbHVlICp2YWwNCj4g IAkJICA9IHZhbHVlX2Zyb21fY29udGVudHMgKHJlZ3R5cGUsDQo+IC0JCQkJCSByZWNvcmRfZnVs bF9nZXRfbG9jICgmZW50cnkpKTsNCj4gKwkJCQkJIGVudHJ5LmdldF9sb2MgKCkpOw0KPiAgCSAg ICAgIGdkYl9wcmludGYgKCJSZWdpc3RlciAlcyBjaGFuZ2VkOiAiLA0KPiAtCQkJICBnZGJhcmNo X3JlZ2lzdGVyX25hbWUgKGFyY2gsIGVudHJ5LnUucmVnLm51bSkpOw0KPiArCQkJICBnZGJhcmNo X3JlZ2lzdGVyX25hbWUgKGFyY2gsIGVudHJ5LnJlZyAoKS5udW0pKTsNCj4gIAkgICAgICBzdHJ1 Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOw0KPiAgCSAgICAgIGdldF91c2VyX3ByaW50X29w dGlvbnMgKCZvcHRzKTsNCj4gIAkgICAgICBvcHRzLnJhdyA9IHRydWU7DQo+IEBAIC0yNjQyLDEx ICsyNjgwLDEyIEBAIG1haW50ZW5hbmNlX3ByaW50X3JlY29yZF9pbnN0cnVjdGlvbiAoY29uc3QN Cj4gY2hhciAqYXJncywgaW50IGZyb21fdHR5KQ0KPiAgCSAgICB9DQo+ICAJICBjYXNlIHJlY29y ZF9mdWxsX21lbToNCj4gIAkgICAgew0KPiAtCSAgICAgIGdkYl9ieXRlICpiID0gcmVjb3JkX2Z1 bGxfZ2V0X2xvYyAoJmVudHJ5KTsNCj4gKwkgICAgICByZWNvcmRfZnVsbF9tZW1fZW50cnkmIG1l bSA9IGVudHJ5Lm1lbSAoKTsNCj4gKwkgICAgICBnZGJfYnl0ZSAqYiA9IGVudHJ5LmdldF9sb2Mg KCk7DQo+ICAJICAgICAgZ2RiX3ByaW50ZiAoIiVkIGJ5dGVzIG9mIG1lbW9yeSBhdCBhZGRyZXNz ICVzIGNoYW5nZWQgZnJvbToiLA0KPiAtCQkJICBlbnRyeS51Lm1lbS5sZW4sDQo+IC0JCQkgIHBy aW50X2NvcmVfYWRkcmVzcyAoYXJjaCwgZW50cnkudS5tZW0uYWRkcikpOw0KPiAtCSAgICAgIGZv ciAoaW50IGkgPSAwOyBpIDwgZW50cnkudS5tZW0ubGVuOyBpKyspDQo+ICsJCQkgIG1lbS5sZW4s DQo+ICsJCQkgIHByaW50X2NvcmVfYWRkcmVzcyAoYXJjaCwgbWVtLmFkZHIpKTsNCj4gKwkgICAg ICBmb3IgKGludCBpID0gMDsgaSA8IG1lbS5sZW47IGkrKykNCj4gIAkJZ2RiX3ByaW50ZiAoIiAl MDJ4IiwgYltpXSk7DQo+ICAJICAgICAgZ2RiX3ByaW50ZiAoIlxuIik7DQo+ICAJICAgICAgYnJl YWs7DQo+IC0tDQo+IDIuNTQuMA0KPiANCg0KSXQgc2VlbXMgdGhhdCB5b3UgZGlkIG5vdCBjaGFu Z2UgdGhlIGNvZGUgYXMgZGlzY3Vzc2VkIGhlcmU6DQpodHRwczovL3NvdXJjZXdhcmUub3JnL3Bp cGVybWFpbC9nZGItcGF0Y2hlcy8yMDI2LU1heS8yMjc2OTkuaHRtbA0KDQpXb3VsZCB5b3UgbWlu ZCBzaGFyaW5nIHRoZSByZWFzb24gZm9yIHRoYXQ/IA0KSW4gbXkgb3BpbmlvbiB0aGlzIGlzIG5l Y2Vzc2FyeS4NCg0KQ2hyaXN0aW5hDQoNCg0KDQoNCkludGVsIERldXRzY2hsYW5kIEdtYkgKClJl Z2lzdGVyZWQgQWRkcmVzczogRG9ybmFjaGVyIFN0cmFzc2UgMSwgODU2MjIgRmVsZGtpcmNoZW4s IEdlcm1hbnkKVGVsOiArNDkgODkgOTkxIDQzMCwgd3d3LmludGVsLmRlCk1hbmFnaW5nIERpcmVj dG9yczogSGFycnkgRGVtYXMsIEplZmZyZXkgU2NobmVpZGVybWFuLCBZaW4gQ2hvbmcgU29ycmVs bApDaGFpcnBlcnNvbiBvZiB0aGUgU3VwZXJ2aXNvcnkgQm9hcmQ6IE5pY29sZSBMYXUKUmVnaXN0 ZXJlZCBTZWF0OiBNdW5pY2gKQ29tbWVyY2lhbCBSZWdpc3RlcjogQW10c2dlcmljaHQgTXVlbmNo ZW4gSFJCIDE4NjkyOAo=