From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mx.groups.io with SMTP id smtpd.web12.1600.1663886802361766794 for ; Thu, 22 Sep 2022 15:46:42 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=cYuXTO8V; spf=pass (domain: intel.com, ip: 134.134.136.100, mailfrom: michael.d.kinney@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1663886802; x=1695422802; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=HKUifuwrRBujv0rpDd8zsjGw3YzPi/oEhtW/LV1WX3Y=; b=cYuXTO8VCM8jXzFFYVJ18XK1wiQQwRR2ynR8B9c/VVd5mrr+DPBhB1bb NarRVacwMW1z4EQaGVOyfY2E1D7I1mDdH5wT0o/7F3vaSxK1djoxh3eC3 Hi7+N5EOjNQ0ar2NG/keJhbesDYphds4vnhFggBEEQhNvAZjEK0RrGbWS vjewEWa7FTIQ/Ye0xVh9dBslrZZi2kxiwg5KjGm9NZ6taRP//oWc/j0Lv OEpLImJPngzcF/BG4iLkoUHJ/8dTGxtTm+GVXrvyv5cZ8BNN/J0uSl+oZ woW6T+uKR8Kpn2i33sspfq9jIw2hfFrkaQoSjjdd0XbSdrMZ5hd+n1NB7 g==; X-IronPort-AV: E=McAfee;i="6500,9779,10478"; a="364466615" X-IronPort-AV: E=Sophos;i="5.93,337,1654585200"; d="scan'208";a="364466615" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Sep 2022 15:46:41 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,337,1654585200"; d="scan'208";a="622297945" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by fmsmga007.fm.intel.com with ESMTP; 22 Sep 2022 15:46:41 -0700 Received: from orsmsx608.amr.corp.intel.com (10.22.229.21) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Thu, 22 Sep 2022 15:46:40 -0700 Received: from orsmsx609.amr.corp.intel.com (10.22.229.22) by ORSMSX608.amr.corp.intel.com (10.22.229.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Thu, 22 Sep 2022 15:46:40 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx609.amr.corp.intel.com (10.22.229.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Thu, 22 Sep 2022 15:46:40 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.103) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Thu, 22 Sep 2022 15:46:40 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hSHyufyftOmPhxbvzN1xX84TUlt8Ny+nTUJ/1oiyzd1KQdtzBAmEZnwc4MTrr+/m1sKqufrra2VGjtXJUFr9CteXzdkf/uli46fDOk3UF15RTWEoiRcwNXQCMsrBxwX3FxDlOxnpN376LGqpt9iPZ1YMv0fd0UKXglv3AgpMqalXSvLxIf89Rzd9JRmDNv4YOGG4dWDivRlxk/vVXojz84yrFe7lb0tx0MZ0SfbVrmLJcDzPP7DzdpyQfyl8uXqtIbvFkdcB4qbGcA6huU8QdEk+A3wJwYFhBfsjxkwIa6L0tgg27qCaS8SNlzx4fsQ05t20MLWD+UBgeXv9RHpwBA== 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=HKUifuwrRBujv0rpDd8zsjGw3YzPi/oEhtW/LV1WX3Y=; b=HvI9hmcQFFrDZol1xFYCser1EF2nk4SaU1ckwu9QX6xg8A7fdyVdfGCh4CfB8eOChoSreJrv5ySia6w8V0qTnkrSfiBXKow0jBOR54hqokbE4QGDjW561uUJxPoaoLnl4o8sdb55h7hvYsyymbGVJTyfehYu0mnIBrQt8WAFTBNohmuZF+LMXKGF92xTXSb6izEKLPRDG++uAvLOa0Bn8i8rpeditGd0yeK1A/kLjhaEnlFipRB+Nrk1SH4w65rTdmn6Cgj5GdN0nwmtaUIrlyMVd6WqxVMmuGi+3dtzfJ+1w/rwsa+r2eQBrY7RZ5laVNZl50Uh7/8BuZycEip4fQ== 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 CO1PR11MB4929.namprd11.prod.outlook.com (2603:10b6:303:6d::19) by SJ1PR11MB6107.namprd11.prod.outlook.com (2603:10b6:a03:48a::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5632.19; Thu, 22 Sep 2022 22:46:36 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::ce64:b1b4:e087:4cc2]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::ce64:b1b4:e087:4cc2%7]) with mapi id 15.20.5654.019; Thu, 22 Sep 2022 22:46:35 +0000 From: "Michael D Kinney" To: "Li, Yi1" , "devel@edk2.groups.io" , "Kinney, Michael D" CC: "Yao, Jiewen" , "Wang, Jian J" , "Lu, Xiaoyu1" , "Jiang, Guomin" Subject: Re: [edk2-devel] [PATCH V2 1/3] CryptoPkg: Add EC support Thread-Topic: [edk2-devel] [PATCH V2 1/3] CryptoPkg: Add EC support Thread-Index: AQHYzXZUSlj4dA4GnU+byMn1X74/Xa3qEDxAgACnSgCAABuVUIAAltwAgACfoRA= Date: Thu, 22 Sep 2022 22:46:35 +0000 Message-ID: References: <9dcccc674996fa3fdcb8858e3609437e66ce82ac.1663735439.git.yi1.li@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.500.17 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: CO1PR11MB4929:EE_|SJ1PR11MB6107:EE_ x-ms-office365-filtering-correlation-id: bcabe431-1883-48ab-4cc1-08da9cec4d73 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: T6wG7S4SgwlvB9bl2u7DMr0U3/zPH6QnFoByMSADmC6k+TXBcM4sm6YVjg2QePw6CCj/Rmf2WdJkbGZSCsgCqupq/7VhesmWpbrlZLvXs4w5c1YSKZJtd2UB7ditGoCdNFOTiOwYu3WZg4NuoSH8tQK16jjKmC5B3kpF1/FrY9L8rZJC1PW1Dqyx0tTE4dEH+dEMyIED2XS2lTbAdvQAvqqxjbMnGTK8m4/9vTWXzSAud/bg48Op37d/ExqygjetFd9EOseVjhXXcvUht7odUYeg7eJ04vwWnoRt6qNGZp4tl5J3kMB0vqHvOaejb53wcLb6txjfxcogARLAUdGG4Rzlxjo+J2EkTjj9FulSiriy9Sre0zlmCNaag9wl4bKFUSBhE4MKgJZeYMpYx6nt7ujpHwp04Y0o00Fz1VrwvhoTQjLtyklGAhQtT0kDJ2MwPrUVKZDhF3p5btWUYGoihVN60R9gZj8gf1cRyrPgwqdjR+OqpWsETH6K1hxsnfU7eK78/oXDByBEX38GiCURZ1zWnRQvzpCiokRuJz8PoabFEbzYnYHlnUFgLGyUxPcuEoSE2lC4dJ8iOOKGPMTa4Ele7pKSr30cWXRyfP4CbTq+kZU/4Uqr6NNC/a6dB9IjP+7GQO/H+1hfm/7+WF57OXMDAeLy9phUUZXqnT8ReuRZGBoouh57HHHhwv6n8FjGVU/Ib8e/5TudL++uaYHHyHN+s7sDct6P2nQ1jPGK3BPlIo1robwti3VDEHDplM0IfQGDn39oT7B4CcmbwhAN/xojvyKVXhqtS9KHM515lomdDMNxmIaAgO+JqH4iUBMx4MfvdDDoF2+r0pFtsoDZpA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4929.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(39860400002)(396003)(376002)(366004)(136003)(346002)(451199015)(53546011)(26005)(7696005)(9686003)(2906002)(38100700002)(30864003)(82960400001)(5660300002)(38070700005)(478600001)(6506007)(66476007)(86362001)(64756008)(66446008)(966005)(107886003)(19627235002)(83380400001)(122000001)(55016003)(66946007)(71200400001)(41300700001)(186003)(316002)(33656002)(4326008)(66556008)(76116006)(110136005)(8936002)(52536014)(8676002)(54906003)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?NEcxZjlTaGNSWkpJZ2FMS1U2cGp4VHU2ZkUySHpsbXAvWlZRcWtFcG5EaUxR?= =?utf-8?B?Vk5IcUpJK3lSU3hhUGRSZUk0eEpBeWlBdGthUE1YQVNxRHVoK3pWdzRGeW9B?= =?utf-8?B?a0tOOC9DNVdoUXdSdlpZdjRqbnBMb25kQWhxc0hXa3B0Tk9JOHU3QnJOWWli?= =?utf-8?B?SGJWVndIenJlQVBSQUZkZDZWMk00cTVtT3FmQ3NlWm40TkJzSDBJYnY4dGVV?= =?utf-8?B?VTlKZFpGSkM1a1BOeGtDS1dzK3E5ODZ6Smg1V0E1L2VRUU4wcVUxUmIyWDhJ?= =?utf-8?B?RENsaFlWS3pCWW1TeWtoWGEzKzFoVklCQ0J2bS9uWGNXUHV0WE92MjFhays1?= =?utf-8?B?cVhRU09PcnpiU3BFeGgvNFpBeVovOFVaTEZPMkJxVERXTVEvOFp0dHdjY0xz?= =?utf-8?B?akloRDY4T2lHQThGbHVhcUxDMUQyUzlWSG1aYStzZnJORVlmeDVhcktVQTd4?= =?utf-8?B?RTJiUG9vUDdoT0NFUEs2aVlycExHekxzNCt5ZXJuRkR3TCt1SWEzRUhtYXNQ?= =?utf-8?B?TmEvcVhBYkFmbTBqZjlNMEN0KzZ4dXFRQWxZemN4VGZKOGV6T0lTUWw2Tncx?= =?utf-8?B?YTljUkQ3NStwMDZlWm96L1k3WVVSakd4UDRtR3h1cjJvNnVwc2lTSmhLU09F?= =?utf-8?B?TkpPand2R01pQ0FCdGkyM2pMbVlUYTl6QVNGUEk2cURtSWs0RWlmUDByU081?= =?utf-8?B?K3RUL3pxK01rREtNbTN0eUQ4WTI5VzF5eXRoY1VHSGhBVVNvNENhaTJoV1NH?= =?utf-8?B?YmRYRERyN1FtZHFTR2VkRE13TWk1TXhtMEpOcGdORDVvRW5GMlBVVklMSXdZ?= =?utf-8?B?TEMzb3Y2ODBValNzbmJrQmtzY0hXVUw2T25hSGhvZnBrV2tTMS9qNXhrK0RB?= =?utf-8?B?OGRJVnRYbkhxU3ZBclFxd3oyUUQzTWwvSTRwTkk4dGQ1V210clVZTGRmYzdL?= =?utf-8?B?NGg4SVArU3gyRzZVMjVlSmhiY0NGUzMwaU1IdTVueTVmYzhKY1ViWDRiN1Zm?= =?utf-8?B?Nmc1MklyczkxZ2QwNExPaWFwSFd6M3JiWTVtVmVDLy81cm1JR1dhQVc3RjAz?= =?utf-8?B?b2Nxdi9JVk94em85OFl1UUNIa3ZDZlc4SENlcHc2amFvTGNVM25DR0FyWHFY?= =?utf-8?B?b3BhWVhuOWQxMzcwcEU0cSttdXcxd01kZE95RUg5UTE0VnNscUhjcVh4aUFX?= =?utf-8?B?T0pwTlhhb1pkTjUyRHBTa1ovVEpXWlVMRnprRXFUSlNIVlJ4WTZLNDZNOFBD?= =?utf-8?B?WlBjN29Nb2pxYzhFNENCK3RiaE9vVDJhMmVyeWhVZDJDbGNTWEErNmJKZ3d4?= =?utf-8?B?N3k0aGp1Z1pyS0srK2JMeDhGZE1qa1lOTXZsVWVaMmlWU2xBa3VzRzRiR1Uv?= =?utf-8?B?MEpHb2xNQVhPOU5tV0taZTljeHNQclpsNlhDamdNQTVUWHFTYmZhdDB0aEZ1?= =?utf-8?B?VHMydHVMR0JmMVd3ZFp2NzFyRStnQ1hHVHVER0swblNML0lJWjNpZjNUcDFO?= =?utf-8?B?Y2hGak11TUF6dmNjK0xQYjFTMWcrdllFWk5mOG8zZ1Zud3BpQnd1VVI5bmpW?= =?utf-8?B?c3hzUkpocFZSTEFwOW1KODlQVml3aG4xTEZoVXl6RWdSNmttV0FjQmRzQ1lw?= =?utf-8?B?OCtSN2V1RVhCNGFRU2VGdDdSUnBRb0JYc1d3QjRaREtXSlEzREIzR0F0dk4r?= =?utf-8?B?NFdjT05qQ3p2b1ZVNDFmcXdNT1FTcThtUHRFWU5tcms0UVhmMXc1MENycDkv?= =?utf-8?B?ZUZpQWtCQzZmMUdBSmtkQ01qbklEUDJXaTJJWWpSVG5xV3lmL0QyOXVlNGlO?= =?utf-8?B?RXdPclJ5OVVENUdkRFhmZU1td080TGVnUWlrS1FwU0gxVm04TjlUY2tLVUhp?= =?utf-8?B?NFZhRE9ZZkdieGpkeEpXU0N5V0MzNzRLUSs2M1lLaTN2NVZhOWRiNE53bkJh?= =?utf-8?B?VTdvSkk4YmVWdTRkemZ6RmpGTEc5aURNSmhhL3V0RDVFZytBUVgvOXRHS1Ny?= =?utf-8?B?aktraUk1TVpNU3QzdVFwcHNQMEhZYldsMWoxbWU1WXc4dDM0SU9oUGMrcHBI?= =?utf-8?B?MjkrOGVScHNCSkl4M04xdlpqWDAyZDJTcHdUcC9UMlRmTi9CeVJOSXY5VHVq?= =?utf-8?B?dmJlWFpKanVtSlp4c051emsrbVFGOWIzeWc3ajFlTkFMcWd3S1BhMGpwdmIz?= =?utf-8?B?MkE9PQ==?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4929.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: bcabe431-1883-48ab-4cc1-08da9cec4d73 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Sep 2022 22:46:35.1338 (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: NyxqrytBKRoKqT5M1xdV9v8ayrrI2WODI4mdsd/Z+nLqWIEcoxsViJimDO+zJA7vWmiySa/Q/47BtT0Ika0rHKMkLQVoDRCIV4beRDl/pMg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ1PR11MB6107 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgWWksDQoNCkkgYWdyZWUgRUMgaXMgYW4gaW1wb3J0YW50IGZlYXR1cmUuDQoNCkkgZGlkIHNv bWUgYW5hbHlzaXMgb2YgdGhlIHNpemUgaW1wYWN0IHRvIHRoZSBDcnlwdG9Qa2cgbW9kdWxlcyBv biBjdXJyZW50IHRydW5rDQp3aXRoIEVDIG9uIGFuZCBvZmYuIFVuY29tcHJlc3NlZCBzaXplIGlz IGltcG9ydGFudCBmb3IgUEVJIFBoYXNlLiAgRm9yIERYRSBhbmQNClNNTSBwaGFzZSwgdGhlIENy eXB0byBzZXJ2aWNlcyBjYW4gYWx3YXlzIGJlIGNvbXByZXNzZWQuICBGcm9tIHRoZSB0YWJsZSBi ZWxvdywNCmJ1aWxkaW5nIGFsbCB0aGUgRUMgc2VydmljZXMgaW4gdGhlIE9wZW5zc2xMaWIgaGFz IG5vIHNpemUgaW1wYWN0IHRvIHRoZSBOT05FIA0KcHJvZmlsZSBhbmQgdGhlIE1JTl9QRUkgcHJv ZmlsZS4gIEl0IGhhcyB+MTA1IEtCIGltcGFjdCB0byBjb21wcmVzc2VkIERYRS9TTU0gDQp1c2Fn ZXMgdGhhdCBtYXkgdXNlIHRoZSBNSU5fRFhFX01JTl9TTU0gb3IgQUxMIHByb2ZpbGVzLg0KDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuY29tcHJlc3NlZCAgICAgIExaTUEg Q29tcHJlc3NlZA0KQ1BVICAgQ1JZUFRPX1NFUlZJQ0VTICAgIE1vZHVsZSAgRUM9RkFMU0UgIEVD PVRSVUUgIEVDPUZBTFNFICBFQz1UUlVFICBJbmNyZWFzZQ0KPT09PSAgPT09PT09PT09PT09PT09 ICA9PT09PT09PSAgPT09PT09PT0gID09PT09PT0gID09PT09PT09ICA9PT09PT09ICA9PT09PT09 PQ0KSUEzMiAgTk9ORSAgICAgICAgICAgICBDcnlwdG9QZWkgICAgMjE1MzYgICAgMjE1NjggICAg ICAgICAgICAgICAgICAgICAgICAgMCBLQg0KSUEzMiAgTk9ORSAgICAgICAgICAgICBDcnlwdG9E eGUgICAgMjE2MzIgICAgMjE2OTYgICAgICAgICAgICAgICAgICAgICAgICAgMCBLQg0KSUEzMiAg Tk9ORSAgICAgICAgICAgICBDcnlwdG9TbW0gICAgMjI5NzYgICAgMjMwNzIgICAgICAgICAgICAg ICAgICAgICAgICAgMCBLQg0KSUEzMiAgTUlOX1BFSSAgICAgICAgICBDcnlwdG9QZWkgICAyNDg5 OTIgICAyNDkxMjAgICAgICAgICAgICAgICAgICAgICAgICAgMCBLQg0KSUEzMiAgTUlOX0RYRV9N SU5fU01NICBDcnlwdG9EeGUgICA2MzY2NzIgICA4Mjk1NjggICAgMjg4NTIwICAgNDAxMDM0ICAg IDExMyBLQg0KSUEzMiAgTUlOX0RYRV9NSU5fU01NICBDcnlwdG9TbW0gICA0MjYwNDggICA2MDE0 NzIgICAgMTkxNTE3ICAgMjk2MDIyICAgIDEwNSBLQg0KSUEzMiAgQUxMICAgICAgICAgICAgICBD cnlwdG9QZWkgICA0MjM4NDAgICA1OTg5NzYgICAgMTg5MDQ3ICAgMjkzNzU5ICAgIDEwNCBLQg0K SUEzMiAgQUxMICAgICAgICAgICAgICBDcnlwdG9EeGUgICA2NDUyODAgICA4MzgxNDQgICAgMjky OTU1ICAgNDA1Mjc3ICAgIDExMyBLQg0KSUEzMiAgQUxMICAgICAgICAgICAgICBDcnlwdG9TbW0g ICA0NDE4ODggICA2MTcxODQgICAgMTk4Nzc5ICAgMzAzNjI4ICAgIDEwNSBLQg0KWDY0ICAgTk9O RSAgICAgICAgICAgICBDcnlwdG9QZWkgICAgMjk2MzIgICAgMjk2NjQgICAgICAgICAgICAgICAg ICAgICAgICAgMCBLQg0KWDY0ICAgTk9ORSAgICAgICAgICAgICBDcnlwdG9EeGUgICAgMjk3OTIg ICAgMjk3OTIgICAgICAgICAgICAgICAgICAgICAgICAgMCBLQg0KWDY0ICAgTk9ORSAgICAgICAg ICAgICBDcnlwdG9TbW0gICAgMzEyOTYgICAgMzEyOTYgICAgICAgICAgICAgICAgICAgICAgICAg MCBLQg0KWDY0ICAgTUlOX1BFSSAgICAgICAgICBDcnlwdG9QZWkgICAzMTA3ODQgICAzMTA4NDgg ICAgICAgICAgICAgICAgICAgICAgICAgMCBLQg0KWDY0ICAgTUlOX0RYRV9NSU5fU01NICBDcnlw dG9EeGUgICA4MDQyODggIDEwMTYyNTYgICAgMzExNDM2ICAgNDI2NTk2ICAgIDExNSBLQg0KWDY0 ICAgTUlOX0RYRV9NSU5fU01NICBDcnlwdG9TbW0gICA1NDM3NzYgICA3MzM5MjAgICAgMjA0NDgz ICAgMzEwNzc1ICAgIDEwNiBLQg0KWDY0ICAgQUxMICAgICAgICAgICAgICBDcnlwdG9QZWkgICA1 NDAzODQgICA3MzAyNDAgICAgMjAyNDk0ICAgMzA4NDY3ICAgIDEwNiBLQg0KWDY0ICAgQUxMICAg ICAgICAgICAgICBDcnlwdG9EeGUgICA4MTUzOTIgIDEwMjcyOTYgICAgMzE2MjI4ICAgNDMxMzIx ICAgIDExNSBLQg0KWDY0ICAgQUxMICAgICAgICAgICAgICBDcnlwdG9TbW0gICA1NjM2NDggICA3 NTM2OTYgICAgMjEzNDg4ICAgMzE5NjQ0ICAgIDEwNiBLQg0KDQpOT1RFOiBFdmVuIGlmIG11bHRp cGxlIG1vZHVsZXMgaW4gYW4gRlYgdXNlIHN0YXRpYyBsaW5raW5nIG9mIENyeXB0byBsaWJzLCBp ZiB0aGUNCiAgICAgIGVudGlyZSBGViBpcyBjb21wcmVzc2VkLCB0aGUgdG90YWwgc2l6ZSBpbXBh Y3QgaXMgdHlwaWNhbGx5IHRoZSBzaXplIG9mIGENCiAgICAgIHNpbmdsZSBpbnN0YW5jZSBvZiBh IGNvbXByZXNzZWQgQ3J5cHRvTGliLiAgVGhlIHNpemVzIG9mIHRoZSBDcnlwdG8qIG1vZHVsZXMN CiAgICAgIGluIHRoZSB0YWJsZSBhYm92ZSBzaG91bGQgYmUgYSBjbG9zZSBhcHByb3hpbWF0aW9u IG9mIHRoZSBzaXplIGltcGFjdCB0byBhDQogICAgICBzaW5nbGUgRlYuDQoNCkRvZXMgdGhpcyBt YXRjaCB5b3VyIHByZXZpb3VzIHNpemUgYW5hbHlzaXM/DQoNClRoZSBjcml0aWNhbCBpc3N1ZSB0 byBldmFsdWF0ZSBoZXJlIGlzIHdoeSBhZGRpbmcgdGhlIEVDIHNvdXJjZXMgdG8gT3BlbnNsbExp Yi5pbmYNCmNhdXNlcyB0aGUgbW9kdWxlcyB0aGF0IGRvIG5vdCB1c2UgYW55IEVDIHNlcnZpY2Vz IHRvIGdyb3cgYnkgfjEwNUtCLiAgSGFzIGFueQ0KZGV0YWlsZWQgYW5hbHlzaXMgb2YgdGhlIGZp bmFsIGxpbmtlZCBpbWFnZXMgYmVlbiBwZXJmb3JtZWQgdG8gc2VlIHdoZXJlIHRoaXMgDQphZGRp dGlvbmFsIHNpemUgaXMgY29taW5nIGZyb20/DQoNClRoYW5rcywNCg0KTWlrZQ0KDQo+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IExpLCBZaTEgPHlpMS5saUBpbnRlbC5jb20+ DQo+IFNlbnQ6IFRodXJzZGF5LCBTZXB0ZW1iZXIgMjIsIDIwMjIgNTo1NCBBTQ0KPiBUbzogS2lu bmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgZGV2ZWxAZWRrMi5n cm91cHMuaW87IEtpc2hvcmUsIFNoZWxseSA8c2hlbGx5Lmtpc2hvcmVAaW50ZWwuY29tPg0KPiBD YzogWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsgV2FuZywgSmlhbiBKIDxqaWFu Lmoud2FuZ0BpbnRlbC5jb20+OyBMdSwgWGlhb3l1MSA8eGlhb3l1MS5sdUBpbnRlbC5jb20+OyBK aWFuZywNCj4gR3VvbWluIDxndW9taW4uamlhbmdAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSRTog W2VkazItZGV2ZWxdIFtQQVRDSCBWMiAxLzNdIENyeXB0b1BrZzogQWRkIEVDIHN1cHBvcnQNCj4g DQo+IEhpIE1pa2UsDQo+IEkgaGF2ZSBkaWQgc29tZSBQT0MgdGhhdCBzZWVtcyBleGlzdGVkIHN0 cnVjdHVyZWQgUENEIGlzIGhhcmQgdG8gY29udHJvbCBiaW5hcnkgc2l6ZSwNCj4gSGVyZSBpcyB0 aGUgcHJldmlvdXMgZGlzY3Vzc2lvbiBmb3IgcmVmZXJlbmNlLg0KPiBodHRwczovL2J1Z3ppbGxh LnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTM2NzkNCj4gaHR0cHM6Ly9lZGsyLmdyb3Vw cy5pby9nL2RldmVsL3RvcGljLzg2MjU3ODEwIzgxODE0DQo+IGh0dHBzOi8vYnVnemlsbGEudGlh bm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0Ng0KPiANCj4gQW55d2F5IEVDIGlzIGFuIGlt cG9ydGFudCBmZWF0dXJlIHdoaWNoIGNvbnN1bWVkIGJ5IHZhcnkgbW9kZXJuIHNlY3VyaXR5IGZl YXR1cmVzIHN1Y2ggV1BBMyAsIFNQRE0sIFRMUzEuMyBldGMuDQo+IEhvcGUgaXQgY2FuIGJlIGFk ZGVkIHRvIGVkazIsIGFuZCBJIGFtIGdsYWQgdG8gdGFrZSB0aGUgY29kZSBhbmQgdGVzdCB3b3Jr IGlmIHRoZXJlIGFyZSBvdGhlciB3YXlzIHRvIGNvbnRyb2wgdGhlIHNpemUuDQo+IA0KPiBUaGFu a3MsDQo+IFlpDQo+IA0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBLaW5u ZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+IFNlbnQ6IFRodXJz ZGF5LCBTZXB0ZW1iZXIgMjIsIDIwMjIgMTE6NTYgQU0NCj4gVG86IExpLCBZaTEgPHlpMS5saUBp bnRlbC5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgS2lzaG9yZSwgU2hlbGx5IDxzaGVsbHku a2lzaG9yZUBpbnRlbC5jb20+DQo+IENjOiBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5j b20+OyBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT47IEx1LCBYaWFveXUxIDx4 aWFveXUxLmx1QGludGVsLmNvbT47IEppYW5nLA0KPiBHdW9taW4gPGd1b21pbi5qaWFuZ0BpbnRl bC5jb20+DQo+IFN1YmplY3Q6IFJFOiBbZWRrMi1kZXZlbF0gW1BBVENIIFYyIDEvM10gQ3J5cHRv UGtnOiBBZGQgRUMgc3VwcG9ydA0KPiANCj4gVGhhdCBjaGFuZ2UgdG8gT3BlbnNzbExpYi5pbmYg c2hvdWxkIG5vdCBoYXZlIGJlZW4gZG9uZSBlaXRoZXIuDQo+IA0KPiBMb29rcyBsaWtlIHRoaXMg RUMgZmVhdHVyZSBuZWVkcyBtb3JlIGV2YWx1YXRpb24gdG8gZml0IGludG8gdGhlDQo+IHN0cnVj dHVyZWQgUENEIGNvbnRyb2wgb2YgdGhlIGxpYiBzaXplcy4NCj4gDQo+IE1pa2UNCj4gDQo+ID4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBMaSwgWWkxIDx5aTEubGlAaW50 ZWwuY29tPg0KPiA+IFNlbnQ6IFdlZG5lc2RheSwgU2VwdGVtYmVyIDIxLCAyMDIyIDc6MTYgUE0N Cj4gPiBUbzogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsg ZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiBDYzogWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50 ZWwuY29tPjsgV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBMdSwgWGlhb3l1 MSA8eGlhb3l1MS5sdUBpbnRlbC5jb20+OyBKaWFuZywNCj4gPiBHdW9taW4gPGd1b21pbi5qaWFu Z0BpbnRlbC5jb20+DQo+ID4gU3ViamVjdDogUkU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggVjIgMS8z XSBDcnlwdG9Qa2c6IEFkZCBFQyBzdXBwb3J0DQo+ID4NCj4gPiBIaSBNaWtlLA0KPiA+IFRoYW5r cyBmb3IgcmV2aWV3Lg0KPiA+DQo+ID4gRXZlbiBQQ0RfQ1JZUFRPX1NFUlZJQ0VfRkFNSUxZX0VO QUJMRSBpcyBzZXQgdG8gMCwgQ3J5cHRvRWMuYyB3aWxsIGFsc28gYmUgY29tcGlsZWQgYW5kIHRo cm93IGJ1aWxkIGVycm9yOg0KPiA+DQo+ID4gZDpcd29ya3NwYWNlXHRpYW5vY29yZVxlZGsyXENy eXB0b1BrZ1xMaWJyYXJ5XEJhc2VDcnlwdExpYlxQa1xDcnlwdEVjLmMoNzcpOiBlcnJvciBDMjIy MDogdGhlIGZvbGxvd2luZyB3YXJuaW5nIGlzIHRyZWF0ZWQNCj4gYXMNCj4gPiBhbiBlcnJvcg0K PiA+ICAgICAgICAgMSBmaWxlKHMpIGNvcGllZC4NCj4gPiBkOlx3b3Jrc3BhY2VcdGlhbm9jb3Jl XGVkazJcQ3J5cHRvUGtnXExpYnJhcnlcQmFzZUNyeXB0TGliXFBrXENyeXB0RWMuYyg3Nyk6IHdh cm5pbmcgQzQwMTM6ICdFQ19HUk9VUF9uZXdfYnlfY3VydmVfbmFtZScNCj4gPiB1bmRlZmluZWQ7 IGFzc3VtaW5nIGV4dGVybiByZXR1cm5pbmcgaW50DQo+ID4gZDpcd29ya3NwYWNlXHRpYW5vY29y ZVxlZGsyXENyeXB0b1BrZ1xMaWJyYXJ5XEJhc2VDcnlwdExpYlxQa1xDcnlwdEVjLmMoNzcpOiB3 YXJuaW5nIEM0MDQ3OiAncmV0dXJuJzogJ3ZvaWQgKicgZGlmZmVycyBpbg0KPiA+IGxldmVscyBv ZiBpbmRpcmVjdGlvbiBmcm9tICdpbnQnDQo+ID4gZDpcd29ya3NwYWNlXHRpYW5vY29yZVxlZGsy XENyeXB0b1BrZ1xMaWJyYXJ5XEJhc2VDcnlwdExpYlxQa1xDcnlwdEVjLmMoMTA1KTogd2Fybmlu ZyBDNDAxMzogJ0VDX0dST1VQX2dldF9jdXJ2ZScgdW5kZWZpbmVkOw0KPiA+IGFzc3VtaW5nIGV4 dGVybiByZXR1cm5pbmcgaW50DQo+ID4NCj4gPiBJIHRoaW5rIHRoZSByb290IGNhdXNlIGlzIHRo YXQgd2UgaGF2ZSBlbmFibGVkIGNvbmRpdGlvbmFsIGVjIGluIE9wZW5zc2xMaWIuaW5mIGJlZm9y ZSBieSBQY2RPcGVuc3NsRWNFbmFibGVkLA0KPiA+DQo+IGh0dHBzOi8vZ2l0aHViLmNvbS90aWFu b2NvcmUvZWRrMi9ibG9iLzJjMTdkNjc2ZTQwMmQ3NWEzYTY3NDQ5OTM0MmY3ZGRhY2NmMzg3YmQv Q3J5cHRvUGtnL0xpYnJhcnkvT3BlbnNzbExpYi9PcGVuc3NsTGliLmluZiNMMg0KPiA+IDAyLUwy MzgNCj4gPiAgaWYgUGNkT3BlbnNzbEVjRW5hYmxlZCBub3QgdHJ1ZSwgYWxsIGVjIGZpbGVzIHdp bGwgbm90IGJlIGNvbXBpbGVkLg0KPiA+IFRoaXMgd2lsbCBzYXZlIDIwMCtrYiBtZW1vcnkgb24g cGxhdGZvcm1zIHdoaWNoIHVzZSBkeGUgZHJpdmVyIGJ1dCBkbyBub3QgbmVlZCBlYyBmZWF0dXJl Lg0KPiA+DQo+ID4gU28gSSBhZGQgdGhpcyBQQ0QgdG8gQmFzZUNyeXB0TGliLmluZiBhbHNvIHRv IGF2b2lkIGJ1aWxkIGVycm9yLCBOb3Qgc3VyZSBpZiB0aGVyZSBpcyBhbnkgb3RoZXIgd2F5LCBv dGhlciBiZXR0ZXIgaWRlYXMgYXJlDQo+ID4gd2VsY29tZS4NCj4gPg0KPiA+IFRoYW5rcywNCj4g PiBZaQ0KPiA+DQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBLaW5u ZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ID4gU2VudDogVGh1 cnNkYXksIFNlcHRlbWJlciAyMiwgMjAyMiAxMjoyMiBBTQ0KPiA+IFRvOiBkZXZlbEBlZGsyLmdy b3Vwcy5pbzsgTGksIFlpMSA8eWkxLmxpQGludGVsLmNvbT47IEtpbm5leSwgTWljaGFlbCBEIDxt aWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPiBDYzogWWFvLCBKaWV3ZW4gPGppZXdlbi55 YW9AaW50ZWwuY29tPjsgV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBMdSwg WGlhb3l1MSA8eGlhb3l1MS5sdUBpbnRlbC5jb20+OyBKaWFuZywNCj4gPiBHdW9taW4gPGd1b21p bi5qaWFuZ0BpbnRlbC5jb20+DQo+ID4gU3ViamVjdDogUkU6IFtlZGsyLWRldmVsXSBbUEFUQ0gg VjIgMS8zXSBDcnlwdG9Qa2c6IEFkZCBFQyBzdXBwb3J0DQo+ID4NCj4gPiBDb21tZW50cyBlbWJl ZGRlZCBiZWxvdy4NCj4gPg0KPiA+IE1pa2UNCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gPiA+IEZyb206IGRldmVsQGVkazIuZ3JvdXBzLmlvIDxkZXZlbEBlZGsyLmdy b3Vwcy5pbz4gT24gQmVoYWxmIE9mIHlpMSBsaQ0KPiA+ID4gU2VudDogVHVlc2RheSwgU2VwdGVt YmVyIDIwLCAyMDIyIDk6NTUgUE0NCj4gPiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+ ID4gQ2M6IExpLCBZaTEgPHlpMS5saUBpbnRlbC5jb20+OyBZYW8sIEppZXdlbiA8amlld2VuLnlh b0BpbnRlbC5jb20+OyBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT47IEx1LCBY aWFveXUxDQo+ID4gPiA8eGlhb3l1MS5sdUBpbnRlbC5jb20+OyBKaWFuZywgR3VvbWluIDxndW9t aW4uamlhbmdAaW50ZWwuY29tPg0KPiA+ID4gU3ViamVjdDogW2VkazItZGV2ZWxdIFtQQVRDSCBW MiAxLzNdIENyeXB0b1BrZzogQWRkIEVDIHN1cHBvcnQNCj4gPiA+DQo+ID4gPiBSRUY6IGh0dHBz Oi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgyOA0KPiA+ID4NCj4g PiA+IFRoaXMgcGF0Y2ggaXMgdXNlZCB0byBhZGQgQ3J5cHRFYyBsaWJyYXJ5LCB3aGljaCBpcyB3 cmFwcGVkDQo+ID4gPiBvdmVyIE9wZW5TU0wuDQo+ID4gPg0KPiA+ID4gQ2M6IEppZXdlbiBZYW8g PGppZXdlbi55YW9AaW50ZWwuY29tPg0KPiA+ID4gQ2M6IEppYW4gSiBXYW5nIDxqaWFuLmoud2Fu Z0BpbnRlbC5jb20+DQo+ID4gPiBDYzogWGlhb3l1IEx1IDx4aWFveXUxLmx1QGludGVsLmNvbT4N Cj4gPiA+IENjOiBHdW9taW4gSmlhbmcgPGd1b21pbi5qaWFuZ0BpbnRlbC5jb20+DQo+ID4gPg0K PiA+ID4gU2lnbmVkLW9mZi1ieTogWWkgTGkgPHlpMS5saUBpbnRlbC5jb20+DQo+ID4gPiAtLS0N Cj4gPiA+ICBDcnlwdG9Qa2cvSW5jbHVkZS9MaWJyYXJ5L0Jhc2VDcnlwdExpYi5oICAgICAgfCA0 MjQgKysrKysrKysrKw0KPiA+ID4gIC4uLi9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9CYXNlQ3J5cHRM aWIuaW5mICAgICB8ICAgMiArDQo+ID4gPiAgLi4uL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BlaUNy eXB0TGliLmluZiAgICAgIHwgICAxICsNCj4gPiA+ICBDcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5 cHRMaWIvUGsvQ3J5cHRFYy5jICAgfCA3NjUgKysrKysrKysrKysrKysrKysrDQo+ID4gPiAgLi4u L0xpYnJhcnkvQmFzZUNyeXB0TGliL1BrL0NyeXB0RWNOdWxsLmMgICAgIHwgNDk2ICsrKysrKysr KysrKw0KPiA+ID4gIC4uLi9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9TbW1DcnlwdExpYi5pbmYgICAg ICB8ICAgMSArDQo+ID4gPiAgLi4uL0Jhc2VDcnlwdExpYk51bGwvQmFzZUNyeXB0TGliTnVsbC5p bmYgICAgIHwgICAxICsNCj4gPiA+ICAuLi4vTGlicmFyeS9CYXNlQ3J5cHRMaWJOdWxsL1BrL0Ny eXB0RWNOdWxsLmMgfCA0OTYgKysrKysrKysrKysrDQo+ID4gPiAgOCBmaWxlcyBjaGFuZ2VkLCAy MTg2IGluc2VydGlvbnMoKykNCj4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgQ3J5cHRvUGtnL0xp YnJhcnkvQmFzZUNyeXB0TGliL1BrL0NyeXB0RWMuYw0KPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBDcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGsvQ3J5cHRFY051bGwuYw0KPiA+ID4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBDcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWJOdWxsL1Br L0NyeXB0RWNOdWxsLmMNCj4gPiA+DQo+ID4gPiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0luY2x1 ZGUvTGlicmFyeS9CYXNlQ3J5cHRMaWIuaCBiL0NyeXB0b1BrZy9JbmNsdWRlL0xpYnJhcnkvQmFz ZUNyeXB0TGliLmgNCj4gPiA+IGluZGV4IGIyNTM5MjNkZDguLmQ3NGZjMjFjMWUgMTAwNjQ0DQo+ ID4gPiAtLS0gYS9DcnlwdG9Qa2cvSW5jbHVkZS9MaWJyYXJ5L0Jhc2VDcnlwdExpYi5oDQo+ID4g PiArKysgYi9DcnlwdG9Qa2cvSW5jbHVkZS9MaWJyYXJ5L0Jhc2VDcnlwdExpYi5oDQo+ID4gPiBA QCAtMTQsNiArMTQsMTMgQEAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1Q YXRlbnQNCj4gPiA+DQo+ID4gPiAgI2luY2x1ZGUgPFVlZmkvVWVmaUJhc2VUeXBlLmg+DQo+ID4g Pg0KPiA+ID4gKyNkZWZpbmUgQ1JZUFRPX05JRF9OVUxMICAweDAwMDANCj4gPiA+ICsNCj4gPiA+ ICsvLyBLZXkgRXhjaGFuZ2UNCj4gPiA+ICsjZGVmaW5lIENSWVBUT19OSURfU0VDUDI1NlIxICAw eDAyMDQNCj4gPiA+ICsjZGVmaW5lIENSWVBUT19OSURfU0VDUDM4NFIxICAweDAyMDUNCj4gPiA+ ICsjZGVmaW5lIENSWVBUT19OSURfU0VDUDUyMVIxICAweDAyMDYNCj4gPiA+ICsNCj4gPiA+ICAv Ly8NCj4gPiA+ICAvLy8gTUQ1IGRpZ2VzdCBzaXplIGluIGJ5dGVzDQo+ID4gPiAgLy8vDQo+ID4g PiBAQCAtMjg1MCw0ICsyODU3LDQyMSBAQCBCaWdOdW1BZGRNb2QgKA0KPiA+ID4gICAgT1VUIFZP SUQgICAgICAgKkJuUmVzDQo+ID4gPiAgICApOw0KPiA+ID4NCj4gPiA+ICsvLyA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09DQo+ID4gPiArLy8gICAgQmFzaWMgRWxsaXB0aWMgQ3VydmUgUHJp bWl0aXZlcw0KPiA+ID4gKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPiA+ICsN Cj4gPiA+ICsvKioNCj4gPiA+ICsgIEluaXRpYWxpemUgbmV3IG9wYXF1ZSBFY0dyb3VwIG9iamVj dC4gVGhpcyBvYmplY3QgcmVwcmVzZW50cyBhbiBFQyBjdXJ2ZSBhbmQNCj4gPiA+ICsgIGFuZCBp cyB1c2VkIGZvciBjYWxjdWxhdGlvbiB3aXRoaW4gdGhpcyBncm91cC4gVGhpcyBvYmplY3Qgc2hv dWxkIGJlIGZyZWVkDQo+ID4gPiArICB1c2luZyBFY0dyb3VwRnJlZSgpIGZ1bmN0aW9uLg0KPiA+ ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQ3J5cHRvTmlkICAgSWRlbnRpZnlpbmcgbnVtYmVy IGZvciB0aGUgRUNDIGN1cnZlIChEZWZpbmVkIGluDQo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICBCYXNlQ3J5cHRMaWIuaCkuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVjR3Jv dXAgb2JqZWN0ICBPbiBzdWNjZXNzLg0KPiA+ID4gKyAgQHJldHZhbCBOVUxMICAgICAgICAgICAg T24gZmFpbHVyZS4NCj4gPiA+ICsqKi8NCj4gPiA+ICtWT0lEICoNCj4gPiA+ICtFRklBUEkNCj4g PiA+ICtFY0dyb3VwSW5pdCAoDQo+ID4gPiArICBJTiBVSU5UTiAgQ3J5cHRvTmlkDQo+ID4gPiAr ICApOw0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgR2V0IEVDIGN1cnZlIHBhcmFtZXRl cnMuIFdoaWxlIGVsbGlwdGljIGN1cnZlIGVxdWF0aW9uIGlzIFleMiBtb2QgUCA9IChYXjMgKyBB WCArIEIpIE1vZCBQLg0KPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgcHJvdmlk ZWQgQmlnIE51bWJlciBvYmplY3RzICB0byB0aGUgY29ycmVzcG9uZGluZw0KPiA+ID4gKyAgdmFs dWVzLiBUaGUgY2FsbGVyIG5lZWRzIHRvIG1ha2Ugc3VyZSBhbGwgdGhlICJvdXQiIEJpZ051bWJl ciBwYXJhbWV0ZXJzDQo+ID4gPiArICBhcmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuDQo+ID4gPiAr DQo+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ ICsgIEBwYXJhbVtvdXRdIEJuUHJpbWUgICAgR3JvdXAgcHJpbWUgbnVtYmVyLg0KPiA+ID4gKyAg QHBhcmFtW291dF0gQm5BICAgICAgICBBIGNvZWZmaWNpZW50Lg0KPiA+ID4gKyAgQHBhcmFtW291 dF0gQm5CICAgICAgICBCIGNvZWZmaWNpZW50Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHgg ICAgICBCTiBjb250ZXh0Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAg IE9uIHN1Y2Nlc3MuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0K PiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY0dyb3Vw R2V0Q3VydmUgKA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiArICBP VVQgVk9JRCAgICAgICAqQm5QcmltZSwNCj4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpCbkEsDQo+ ID4gPiArICBPVVQgVk9JRCAgICAgICAqQm5CLA0KPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJu Q3R4DQo+ID4gPiArICApOw0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgR2V0IEVDIGdy b3VwIG9yZGVyLg0KPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgcHJvdmlkZWQg QmlnIE51bWJlciBvYmplY3QgdG8gdGhlIGNvcnJlc3BvbmRpbmcNCj4gPiA+ICsgIHZhbHVlLiBU aGUgY2FsbGVyIG5lZWRzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSAib3V0IiBCaWdOdW1iZXIgcGFy YW1ldGVyDQo+ID4gPiArICBpcyBwcm9wZXJseSBpbml0aWFsaXplZC4NCj4gPiA+ICsNCj4gPiA+ ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiArICBAcGFy YW1bb3V0XSBCbk9yZGVyICAgR3JvdXAgcHJpbWUgbnVtYmVyLg0KPiA+ID4gKw0KPiA+ID4gKyAg QHJldHZhbCBUUlVFICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNF ICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtF RklBUEkNCj4gPiA+ICtFY0dyb3VwR2V0T3JkZXIgKA0KPiA+ID4gKyAgSU4gVk9JRCAgICpFY0dy b3VwLA0KPiA+ID4gKyAgT1VUIFZPSUQgICpCbk9yZGVyDQo+ID4gPiArICApOw0KPiA+ID4gKw0K PiA+ID4gKy8qKg0KPiA+ID4gKyAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBFQyBncm91cCBv YmplY3QgdXNpbmcgRWNHcm91cEluaXQoKS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0g IEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QgdG8gZnJlZS4NCj4gPiA+ICsqKi8NCj4gPiA+ICtW T0lEDQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRWNHcm91cEZyZWUgKA0KPiA+ID4gKyAgSU4gVk9J RCAgKkVjR3JvdXANCj4gPiA+ICsgICk7DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBJ bml0aWFsaXplIG5ldyBvcGFxdWUgRUMgUG9pbnQgb2JqZWN0LiBUaGlzIG9iamVjdCByZXByZXNl bnRzIGFuIEVDIHBvaW50DQo+ID4gPiArICB3aXRoaW4gdGhlIGdpdmVuIEVDIGdyb3VwIChjdXJ2 ZSkuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBFQyBHcm91cCwgcHJvcGVybHkgaW5p dGlhbGl6ZWQgdXNpbmcgRWNHcm91cEluaXQoKS4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwg RUMgUG9pbnQgb2JqZWN0ICBPbiBzdWNjZXNzLg0KPiA+ID4gKyAgQHJldHZhbCBOVUxMICAgICAg ICAgICAgIE9uIGZhaWx1cmUuDQo+ID4gPiArKiovDQo+ID4gPiArVk9JRCAqDQo+ID4gPiArRUZJ QVBJDQo+ID4gPiArRWNQb2ludEluaXQgKA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3Jv dXANCj4gPiA+ICsgICk7DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBGcmVlIHByZXZp b3VzbHkgYWxsb2NhdGVkIEVDIFBvaW50IG9iamVjdCB1c2luZyBFY1BvaW50SW5pdCgpLg0KPiA+ ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgIEVDIFBvaW50IHRvIGZyZWUuDQo+ ID4gPiArICBAcGFyYW1baW5dICBDbGVhciAgICAgVFJVRSBpZmYgdGhlIG1lbW9yeSBzaG91bGQg YmUgY2xlYXJlZC4NCj4gPiA+ICsqKi8NCj4gPiA+ICtWT0lEDQo+ID4gPiArRUZJQVBJDQo+ID4g PiArRWNQb2ludERlSW5pdCAoDQo+ID4gPiArICBJTiBWT0lEICAgICAqRWNQb2ludCwNCj4gPiA+ ICsgIElOIEJPT0xFQU4gIENsZWFyDQo+ID4gPiArICApOw0KPiA+ID4gKw0KPiA+ID4gKy8qKg0K PiA+ID4gKyAgR2V0IEVDIHBvaW50IGFmZmluZSAoeCx5KSBjb29yZGluYXRlcy4NCj4gPiA+ICsg IFRoaXMgZnVuY3Rpb24gd2lsbCBzZXQgdGhlIHByb3ZpZGVkIEJpZyBOdW1iZXIgb2JqZWN0cyB0 byB0aGUgY29ycmVzcG9uZGluZw0KPiA+ID4gKyAgdmFsdWVzLiBUaGUgY2FsbGVyIG5lZWRzIHRv IG1ha2Ugc3VyZSBhbGwgdGhlICJvdXQiIEJpZ051bWJlciBwYXJhbWV0ZXJzDQo+ID4gPiArICBh cmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBF Y0dyb3VwICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQg ICAgRUMgcG9pbnQgb2JqZWN0Lg0KPiA+ID4gKyAgQHBhcmFtW291dF0gQm5YICAgICAgICBYIGNv b3JkaW5hdGUuDQo+ID4gPiArICBAcGFyYW1bb3V0XSBCblkgICAgICAgIFkgY29vcmRpbmF0ZS4N Cj4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRo IEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAg ICAgICBPbiBzdWNjZXNzLg0KPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lz ZS4NCj4gPiA+ICsqKi8NCj4gPiA+ICtCT09MRUFODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRWNQ b2ludEdldEFmZmluZUNvb3JkaW5hdGVzICgNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dy b3VwLA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnQsDQo+ID4gPiArICBPVVQgVk9J RCAgICAgICAqQm5YLA0KPiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkJuWSwNCj4gPiA+ICsgIElO IFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gKyAgKTsNCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4g PiA+ICsgIFNldCBFQyBwb2ludCBhZmZpbmUgKHgseSkgY29vcmRpbmF0ZXMuDQo+ID4gPiArDQo+ ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ICsg IEBwYXJhbVtpbl0gIEVjUG9pbnQgICAgRUMgcG9pbnQgb2JqZWN0Lg0KPiA+ID4gKyAgQHBhcmFt W2luXSAgQm5YICAgICAgICBYIGNvb3JkaW5hdGUuDQo+ID4gPiArICBAcGFyYW1baW5dICBCblkg ICAgICAgIFkgY29vcmRpbmF0ZS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICAgQk4g Y29udGV4dCwgY3JlYXRlZCB3aXRoIEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ICsNCj4gPiA+ ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNzLg0KPiA+ID4gKyAgQHJldHZhbCBG QUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ICsqKi8NCj4gPiA+ICtCT09MRUFODQo+ID4g PiArRUZJQVBJDQo+ID4gPiArRWNQb2ludFNldEFmZmluZUNvb3JkaW5hdGVzICgNCj4gPiA+ICsg IElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkVjUG9p bnQsDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqQm5YLA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9J RCAgKkJuWSwNCj4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gKyAgKTsNCj4g PiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEVDIFBvaW50IGFkZGl0aW9uLiBFY1BvaW50UmVz dWx0ID0gRWNQb2ludEEgKyBFY1BvaW50Qi4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0g IEVjR3JvdXAgICAgICAgICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gKyAgQHBhcmFtW291dF0g RWNQb2ludFJlc3VsdCAgICBFQyBwb2ludCB0byBob2xkIHRoZSByZXN1bHQuIFRoZSBwb2ludCBz aG91bGQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgcHJvcGVybHkg aW5pdGlhbGl6ZWQuDQo+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50QSAgICAgICAgIEVDIFBv aW50Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludEIgICAgICAgICBFQyBQb2ludC4NCj4g PiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICAgICAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3 aXRoIEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgVFJVRSAg ICAgICAgICBPbiBzdWNjZXNzLg0KPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVy d2lzZS4NCj4gPiA+ICsqKi8NCj4gPiA+ICtCT09MRUFODQo+ID4gPiArRUZJQVBJDQo+ID4gPiAr RWNQb2ludEFkZCAoDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ICsg IE9VVCBWT0lEICAgICAgICpFY1BvaW50UmVzdWx0LA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAg KkVjUG9pbnRBLA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnRCLA0KPiA+ID4gKyAg SU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiArICApOw0KPiA+ID4gKw0KPiA+ID4gKy8qKg0K PiA+ID4gKyAgVmFyaWFibGUgRUMgcG9pbnQgbXVsdGlwbGljYXRpb24uIEVjUG9pbnRSZXN1bHQg PSBFY1BvaW50ICogQm5QU2NhbGFyLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNH cm91cCAgICAgICAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1bb3V0XSBFY1Bv aW50UmVzdWx0ICAgIEVDIHBvaW50IHRvIGhvbGQgdGhlIHJlc3VsdC4gVGhlIHBvaW50IHNob3Vs ZA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBwcm9wZXJseSBpbml0 aWFsaXplZC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICAgICAgICAgRUMgUG9pbnQu DQo+ID4gPiArICBAcGFyYW1baW5dICBCblBTY2FsYXIgICAgICAgIFAgU2NhbGFyLg0KPiA+ID4g KyAgQHBhcmFtW2luXSAgQm5DdHggICAgICAgICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGgg QmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAg ICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNl Lg0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY1Bv aW50TXVsICgNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gKyAgT1VU IFZPSUQgICAgICAgKkVjUG9pbnRSZXN1bHQsDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQ b2ludCwNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpCblBTY2FsYXIsDQo+ID4gPiArICBJTiBW T0lEICAgICAgICAqQm5DdHgNCj4gPiA+ICsgICk7DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4g PiArICBDYWxjdWxhdGUgdGhlIGludmVyc2Ugb2YgdGhlIHN1cHBsaWVkIEVDIHBvaW50Lg0KPiA+ ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgICAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVjdC4N Cj4gPiA+ICsgIEBwYXJhbVtpbixvdXRdIEVjUG9pbnQgICBFQyBwb2ludCB0byBpbnZlcnQuDQo+ ID4gPiArICBAcGFyYW1baW5dICAgICBCbkN0eCAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRo IEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAg ICAgICBPbiBzdWNjZXNzLg0KPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lz ZS4NCj4gPiA+ICsqKi8NCj4gPiA+ICtCT09MRUFODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRWNQ b2ludEludmVydCAoDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ICsg IElOIE9VVCBWT0lEICAgICpFY1BvaW50LA0KPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4 DQo+ID4gPiArICApOw0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgQ2hlY2sgaWYgdGhl IHN1cHBsaWVkIHBvaW50IGlzIG9uIEVDIGN1cnZlLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFt W2luXSAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVj UG9pbnQgICBFQyBwb2ludCB0byBjaGVjay4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAg ICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gKw0K PiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIE9uIGN1cnZlLg0KPiA+ID4gKyAgQHJldHZh bCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ICsqKi8NCj4gPiA+ICtCT09MRUFODQo+ ID4gPiArRUZJQVBJDQo+ID4gPiArRWNQb2ludElzT25DdXJ2ZSAoDQo+ID4gPiArICBJTiBDT05T VCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50LA0KPiA+ ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiArICApOw0KPiA+ID4gKw0KPiA+ID4g Ky8qKg0KPiA+ID4gKyAgQ2hlY2sgaWYgdGhlIHN1cHBsaWVkIHBvaW50IGlzIGF0IGluZmluaXR5 Lg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVj dC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICBFQyBwb2ludCB0byBjaGVjay4NCj4g PiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBBdCBpbmZpbml0eS4NCj4gPiA+ ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiArKiovDQo+ID4gPiAr Qk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjUG9pbnRJc0F0SW5maW5pdHkgKA0KPiA+ ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAq RWNQb2ludA0KPiA+ID4gKyAgKTsNCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIENoZWNr IGlmIEVDIHBvaW50cyBhcmUgZXF1YWwuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBF Y0dyb3VwICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludEEg IEVDIHBvaW50IEEuDQo+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50QiAgRUMgcG9pbnQgQi4N Cj4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGgg QmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAg ICAgIEEgPT0gQi4NCj4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ ID4gPiArKiovDQo+ID4gPiArQk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjUG9pbnRF cXVhbCAoDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ICsgIElOIENP TlNUIFZPSUQgICpFY1BvaW50QSwNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50QiwN Cj4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gKyAgKTsNCj4gPiA+ICsNCj4g PiA+ICsvKioNCj4gPiA+ICsgIFNldCBFQyBwb2ludCBjb21wcmVzc2VkIGNvb3JkaW5hdGVzLiBQ b2ludHMgY2FuIGJlIGRlc2NyaWJlZCBpbiB0ZXJtcyBvZg0KPiA+ID4gKyAgdGhlaXIgY29tcHJl c3NlZCBjb29yZGluYXRlcy4gRm9yIGEgcG9pbnQgKHgsIHkpLCBmb3IgYW55IGdpdmVuIHZhbHVl IGZvciB4DQo+ID4gPiArICBzdWNoIHRoYXQgdGhlIHBvaW50IGlzIG9uIHRoZSBjdXJ2ZSB0aGVy ZSB3aWxsIG9ubHkgZXZlciBiZSB0d28gcG9zc2libGUNCj4gPiA+ICsgIHZhbHVlcyBmb3IgeS4g VGhlcmVmb3JlLCBhIHBvaW50IGNhbiBiZSBzZXQgdXNpbmcgdGhpcyBmdW5jdGlvbiB3aGVyZSBC blggaXMNCj4gPiA+ICsgIHRoZSB4IGNvb3JkaW5hdGUgYW5kIFlCaXQgaXMgYSB2YWx1ZSAwIG9y IDEgdG8gaWRlbnRpZnkgd2hpY2ggb2YgdGhlIHR3bw0KPiA+ID4gKyAgcG9zc2libGUgdmFsdWVz IGZvciB5IHNob3VsZCBiZSB1c2VkLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNH cm91cCAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAg IEVDIFBvaW50Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5YICAgICAgICBYIGNvb3JkaW5hdGUu DQo+ID4gPiArICBAcGFyYW1baW5dICBZQml0ICAgICAgIDAgb3IgMSB0byBpZGVudGlmeSB3aGlj aCBZIHZhbHVlIGlzIHVzZWQuDQo+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgIEJOIGNv bnRleHQsIGNyZWF0ZWQgd2l0aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiArDQo+ID4gPiAr ICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ICsgIEByZXR2YWwgRkFM U0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiArKiovDQo+ID4gPiArQk9PTEVBTg0KPiA+ID4g K0VGSUFQSQ0KPiA+ID4gK0VjUG9pbnRTZXRDb21wcmVzc2VkQ29vcmRpbmF0ZXMgKA0KPiA+ID4g KyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiArICBJTiBWT0lEICAgICAgICAqRWNQ b2ludCwNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpCblgsDQo+ID4gPiArICBJTiBVSU5UOCAg ICAgICBZQml0LA0KPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiArICApOw0K PiA+ID4gKw0KPiA+ID4gKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPiA+ICsv LyAgICBFbGxpcHRpYyBDdXJ2ZSBEaWZmaWUgSGVsbG1hbiBQcmltaXRpdmVzDQo+ID4gPiArLy8g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4g KyAgQWxsb2NhdGVzIGFuZCBJbml0aWFsaXplcyBvbmUgRWxsaXB0aWMgQ3VydmUgQ29udGV4dCBm b3Igc3Vic2VxdWVudCB1c2UNCj4gPiA+ICsgIHdpdGggdGhlIE5JRC4NCj4gPiA+ICsNCj4gPiA+ ICsgIEBwYXJhbVtpbl0gIE5pZCBjaXBoZXIgTklEDQo+ID4gPiArICBAcmV0dXJuICAgICBQb2lu dGVyIHRvIHRoZSBFbGxpcHRpYyBDdXJ2ZSBDb250ZXh0IHRoYXQgaGFzIGJlZW4gaW5pdGlhbGl6 ZWQuDQo+ID4gPiArICAgICAgICAgICAgICBJZiB0aGUgYWxsb2NhdGlvbnMgZmFpbHMsIEVjTmV3 QnlOaWQoKSByZXR1cm5zIE5VTEwuDQo+ID4gPiArKiovDQo+ID4gPiArVk9JRCAqDQo+ID4gPiAr RUZJQVBJDQo+ID4gPiArRWNOZXdCeU5pZCAoDQo+ID4gPiArICBJTiBVSU5UTiAgTmlkDQo+ID4g PiArICApOw0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgUmVsZWFzZSB0aGUgc3BlY2lm aWVkIEVDIGNvbnRleHQuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBFY0NvbnRleHQg IFBvaW50ZXIgdG8gdGhlIEVDIGNvbnRleHQgdG8gYmUgcmVsZWFzZWQuDQo+ID4gPiArKiovDQo+ ID4gPiArVk9JRA0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjRnJlZSAoDQo+ID4gPiArICBJTiAg Vk9JRCAgKkVjQ29udGV4dA0KPiA+ID4gKyAgKTsNCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ ICsgIEdlbmVyYXRlcyBFQyBrZXkgYW5kIHJldHVybnMgRUMgcHVibGljIGtleSAoWCwgWSksIFBs ZWFzZSBub3RlLCB0aGlzIGZ1bmN0aW9uIHVzZXMNCj4gPiA+ICsgIHBzZXVkbyByYW5kb20gbnVt YmVyIGdlbmVyYXRvci4gVGhlIGNhbGxlciBtdXN0IG1ha2Ugc3VyZSBSYW5kb21TZWVkKCkNCj4g PiA+ICsgIGZ1bmN0aW9uIHdhcyBwcm9wZXJseSBjYWxsZWQgYmVmb3JlLg0KPiA+ID4gKyAgVGhl IEVjIGNvbnRleHQgc2hvdWxkIGJlIGNvcnJlY3RseSBpbml0aWFsaXplZCBieSBFY05ld0J5Tmlk Lg0KPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiBnZW5lcmF0ZXMgcmFuZG9tIHNlY3JldCwgYW5kIGNv bXB1dGVzIHRoZSBwdWJsaWMga2V5IChYLCBZKSwgd2hpY2ggaXMNCj4gPiA+ICsgIHJldHVybmVk IHZpYSBwYXJhbWV0ZXIgUHVibGljLCBQdWJsaWNTaXplLg0KPiA+ID4gKyAgWCBpcyB0aGUgZmly c3QgaGFsZiBvZiBQdWJsaWMgd2l0aCBzaXplIGJlaW5nIFB1YmxpY1NpemUgLyAyLA0KPiA+ID4g KyAgWSBpcyB0aGUgc2Vjb25kIGhhbGYgb2YgUHVibGljIHdpdGggc2l6ZSBiZWluZyBQdWJsaWNT aXplIC8gMi4NCj4gPiA+ICsgIEVDIGNvbnRleHQgaXMgdXBkYXRlZCBhY2NvcmRpbmdseS4NCj4g PiA+ICsgIElmIHRoZSBQdWJsaWMgYnVmZmVyIGlzIHRvbyBzbWFsbCB0byBob2xkIHRoZSBwdWJs aWMgWCwgWSwgRkFMU0UgaXMgcmV0dXJuZWQgYW5kDQo+ID4gPiArICBQdWJsaWNTaXplIGlzIHNl dCB0byB0aGUgcmVxdWlyZWQgYnVmZmVyIHNpemUgdG8gb2J0YWluIHRoZSBwdWJsaWMgWCwgWS4N Cj4gPiA+ICsgIEZvciBQLTI1NiwgdGhlIFB1YmxpY1NpemUgaXMgNjQuIEZpcnN0IDMyLWJ5dGUg aXMgWCwgU2Vjb25kIDMyLWJ5dGUgaXMgWS4NCj4gPiA+ICsgIEZvciBQLTM4NCwgdGhlIFB1Ymxp Y1NpemUgaXMgOTYuIEZpcnN0IDQ4LWJ5dGUgaXMgWCwgU2Vjb25kIDQ4LWJ5dGUgaXMgWS4NCj4g PiA+ICsgIEZvciBQLTUyMSwgdGhlIFB1YmxpY1NpemUgaXMgMTMyLiBGaXJzdCA2Ni1ieXRlIGlz IFgsIFNlY29uZCA2Ni1ieXRlIGlzIFkuDQo+ID4gPiArICBJZiBFY0NvbnRleHQgaXMgTlVMTCwg dGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiArICBJZiBQdWJsaWNTaXplIGlzIE5VTEwsIHRoZW4g cmV0dXJuIEZBTFNFLg0KPiA+ID4gKyAgSWYgUHVibGljU2l6ZSBpcyBsYXJnZSBlbm91Z2ggYnV0 IFB1YmxpYyBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ICsgIEBwYXJhbVtpbiwg b3V0XSAgRWNDb250ZXh0ICAgICAgUG9pbnRlciB0byB0aGUgRUMgY29udGV4dC4NCj4gPiA+ICsg IEBwYXJhbVtvdXRdICAgICAgUHVibGljS2V5ICAgICAgUG9pbnRlciB0byB0IGJ1ZmZlciB0byBy ZWNlaXZlIGdlbmVyYXRlZCBwdWJsaWMgWCxZLg0KPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBQ dWJsaWNLZXlTaXplICBPbiBpbnB1dCwgdGhlIHNpemUgb2YgUHVibGljIGJ1ZmZlciBpbiBieXRl cy4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0 aGUgc2l6ZSBvZiBkYXRhIHJldHVybmVkIGluIFB1YmxpYyBidWZmZXIgaW4gYnl0ZXMuDQo+ID4g PiArICBAcmV0dmFsIFRSVUUgICBFQyBwdWJsaWMgWCxZIGdlbmVyYXRpb24gc3VjY2VlZGVkLg0K PiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgRUMgcHVibGljIFgsWSBnZW5lcmF0aW9uIGZhaWxlZC4N Cj4gPiA+ICsgIEByZXR2YWwgRkFMU0UgIFB1YmxpY0tleVNpemUgaXMgbm90IGxhcmdlIGVub3Vn aC4NCj4gPiA+ICsqKi8NCj4gPiA+ICtCT09MRUFODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRWNH ZW5lcmF0ZUtleSAoDQo+ID4gPiArICBJTiBPVVQgIFZPSUQgICAqRWNDb250ZXh0LA0KPiA+ID4g KyAgT1VUICAgICBVSU5UOCAgKlB1YmxpY0tleSwNCj4gPiA+ICsgIElOIE9VVCAgVUlOVE4gICpQ dWJsaWNLZXlTaXplDQo+ID4gPiArICApOw0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAg R2V0cyB0aGUgcHVibGljIGtleSBjb21wb25lbnQgZnJvbSB0aGUgZXN0YWJsaXNoZWQgRUMgY29u dGV4dC4NCj4gPiA+ICsgIFRoZSBFYyBjb250ZXh0IHNob3VsZCBiZSBjb3JyZWN0bHkgaW5pdGlh bGl6ZWQgYnkgRWNOZXdCeU5pZCwgYW5kIHN1Y2Nlc3NmdWxseQ0KPiA+ID4gKyAgZ2VuZXJhdGUg a2V5IHBhaXIgZnJvbSBFY0dlbmVyYXRlS2V5KCkuDQo+ID4gPiArICBGb3IgUC0yNTYsIHRoZSBQ dWJsaWNTaXplIGlzIDY0LiBGaXJzdCAzMi1ieXRlIGlzIFgsIFNlY29uZCAzMi1ieXRlIGlzIFku DQo+ID4gPiArICBGb3IgUC0zODQsIHRoZSBQdWJsaWNTaXplIGlzIDk2LiBGaXJzdCA0OC1ieXRl IGlzIFgsIFNlY29uZCA0OC1ieXRlIGlzIFkuDQo+ID4gPiArICBGb3IgUC01MjEsIHRoZSBQdWJs aWNTaXplIGlzIDEzMi4gRmlyc3QgNjYtYnl0ZSBpcyBYLCBTZWNvbmQgNjYtYnl0ZSBpcyBZLg0K PiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBFY0NvbnRleHQgICAgICBQb2ludGVyIHRvIEVDIGNv bnRleHQgYmVpbmcgc2V0Lg0KPiA+ID4gKyAgQHBhcmFtW291dF0gICAgICBQdWJsaWNLZXkgICAg ICBQb2ludGVyIHRvIHQgYnVmZmVyIHRvIHJlY2VpdmUgZ2VuZXJhdGVkIHB1YmxpYyBYLFkuDQo+ ID4gPiArICBAcGFyYW1baW4sIG91dF0gIFB1YmxpY0tleVNpemUgIE9uIGlucHV0LCB0aGUgc2l6 ZSBvZiBQdWJsaWMgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRoZSBzaXplIG9mIGRhdGEgcmV0dXJuZWQgaW4gUHVi bGljIGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ICsgIEByZXR2YWwgIFRSVUUgICBFQyBrZXkgY29t cG9uZW50IHdhcyByZXRyaWV2ZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ID4gKyAgQHJldHZhbCAgRkFM U0UgIEludmFsaWQgRUMga2V5IGNvbXBvbmVudC4NCj4gPiA+ICsqKi8NCj4gPiA+ICtCT09MRUFO DQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRWNHZXRQdWJLZXkgKA0KPiA+ID4gKyAgSU4gT1VUICBW T0lEICAgKkVjQ29udGV4dCwNCj4gPiA+ICsgIE9VVCAgICAgVUlOVDggICpQdWJsaWNLZXksDQo+ ID4gPiArICBJTiBPVVQgIFVJTlROICAqUHVibGljS2V5U2l6ZQ0KPiA+ID4gKyAgKTsNCj4gPiA+ ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIENvbXB1dGVzIGV4Y2hhbmdlZCBjb21tb24ga2V5Lg0K PiA+ID4gKyAgR2l2ZW4gcGVlcidzIHB1YmxpYyBrZXkgKFgsIFkpLCB0aGlzIGZ1bmN0aW9uIGNv bXB1dGVzIHRoZSBleGNoYW5nZWQgY29tbW9uIGtleSwNCj4gPiA+ICsgIGJhc2VkIG9uIGl0cyBv d24gY29udGV4dCBpbmNsdWRpbmcgdmFsdWUgb2YgY3VydmUgcGFyYW1ldGVyIGFuZCByYW5kb20g c2VjcmV0Lg0KPiA+ID4gKyAgWCBpcyB0aGUgZmlyc3QgaGFsZiBvZiBQZWVyUHVibGljIHdpdGgg c2l6ZSBiZWluZyBQZWVyUHVibGljU2l6ZSAvIDIsDQo+ID4gPiArICBZIGlzIHRoZSBzZWNvbmQg aGFsZiBvZiBQZWVyUHVibGljIHdpdGggc2l6ZSBiZWluZyBQZWVyUHVibGljU2l6ZSAvIDIuDQo+ ID4gPiArICBJZiBFY0NvbnRleHQgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiAr ICBJZiBQZWVyUHVibGljIGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gKyAgSWYg UGVlclB1YmxpY1NpemUgaXMgMCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiArICBJZiBLZXkg aXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiArICBJZiBLZXlTaXplIGlzIG5vdCBs YXJnZSBlbm91Z2gsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gKyAgRm9yIFAtMjU2LCB0aGUg UGVlclB1YmxpY1NpemUgaXMgNjQuIEZpcnN0IDMyLWJ5dGUgaXMgWCwgU2Vjb25kIDMyLWJ5dGUg aXMgWS4NCj4gPiA+ICsgIEZvciBQLTM4NCwgdGhlIFBlZXJQdWJsaWNTaXplIGlzIDk2LiBGaXJz dCA0OC1ieXRlIGlzIFgsIFNlY29uZCA0OC1ieXRlIGlzIFkuDQo+ID4gPiArICBGb3IgUC01MjEs IHRoZSBQZWVyUHVibGljU2l6ZSBpcyAxMzIuIEZpcnN0IDY2LWJ5dGUgaXMgWCwgU2Vjb25kIDY2 LWJ5dGUgaXMgWS4NCj4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgRWNDb250ZXh0ICAgICAgICAg IFBvaW50ZXIgdG8gdGhlIEVDIGNvbnRleHQuDQo+ID4gPiArICBAcGFyYW1baW5dICAgICAgIFBl ZXJQdWJsaWMgICAgICAgICBQb2ludGVyIHRvIHRoZSBwZWVyJ3MgcHVibGljIFgsWS4NCj4gPiA+ ICsgIEBwYXJhbVtpbl0gICAgICAgUGVlclB1YmxpY1NpemUgICAgIFNpemUgb2YgcGVlcidzIHB1 YmxpYyBYLFkgaW4gYnl0ZXMuDQo+ID4gPiArICBAcGFyYW1baW5dICAgICAgIENvbXByZXNzRmxh ZyAgICAgICBGbGFnIG9mIFBlZXJQdWJsaWMgaXMgY29tcHJlc3NlZCBvciBub3QuDQo+ID4gPiAr ICBAcGFyYW1bb3V0XSAgICAgIEtleSAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBidWZm ZXIgdG8gcmVjZWl2ZSBnZW5lcmF0ZWQga2V5Lg0KPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBL ZXlTaXplICAgICAgICAgICAgT24gaW5wdXQsIHRoZSBzaXplIG9mIEtleSBidWZmZXIgaW4gYnl0 ZXMuDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRw dXQsIHRoZSBzaXplIG9mIGRhdGEgcmV0dXJuZWQgaW4gS2V5IGJ1ZmZlciBpbiBieXRlcy4NCj4g PiA+ICsgIEByZXR2YWwgVFJVRSAgIEVDIGV4Y2hhbmdlZCBrZXkgZ2VuZXJhdGlvbiBzdWNjZWVk ZWQuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNFICBFQyBleGNoYW5nZWQga2V5IGdlbmVyYXRpb24g ZmFpbGVkLg0KPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgS2V5U2l6ZSBpcyBub3QgbGFyZ2UgZW5v dWdoLg0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtF Y0RoQ29tcHV0ZUtleSAoDQo+ID4gPiArICBJTiBPVVQgIFZPSUQgICAgICAgICAqRWNDb250ZXh0 LA0KPiA+ID4gKyAgSU4gICAgICBDT05TVCBVSU5UOCAgKlBlZXJQdWJsaWMsDQo+ID4gPiArICBJ TiAgICAgIFVJTlROICAgICAgICBQZWVyUHVibGljU2l6ZSwNCj4gPiA+ICsgIElOICAgICAgQ09O U1QgSU5UMzIgICpDb21wcmVzc0ZsYWcsDQo+ID4gPiArICBPVVQgICAgIFVJTlQ4ICAgICAgICAq S2V5LA0KPiA+ID4gKyAgSU4gT1VUICBVSU5UTiAgICAgICAgKktleVNpemUNCj4gPiA+ICsgICk7 DQo+ID4gPiArDQo+ID4gPiAgI2VuZGlmIC8vIF9fQkFTRV9DUllQVF9MSUJfSF9fDQo+ID4gPiBk aWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0Jhc2VDcnlwdExpYi5p bmYgYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvQmFzZUNyeXB0TGliLmluZg0KPiA+ ID4gaW5kZXggOWU0YmUyZmIwZC4uYWRlNmVlM2ZkZCAxMDA2NDQNCj4gPiA+IC0tLSBhL0NyeXB0 b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9CYXNlQ3J5cHRMaWIuaW5mDQo+ID4gPiArKysgYi9D cnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvQmFzZUNyeXB0TGliLmluZg0KPiA+ID4gQEAg LTUyLDYgKzUyLDggQEANCj4gPiA+ICAgIFBrL0NyeXB0VHMuYw0KPiA+ID4gICAgUGsvQ3J5cHRS c2FQc3MuYw0KPiA+ID4gICAgUGsvQ3J5cHRSc2FQc3NTaWduLmMNCj4gPiA+ICsgIFBrL0NyeXB0 RWNOdWxsLmMgICAgfCp8KnwqfCFnRWZpQ3J5cHRvUGtnVG9rZW5TcGFjZUd1aWQuUGNkT3BlbnNz bEVjRW5hYmxlZA0KPiA+ID4gKyAgUGsvQ3J5cHRFYy5jICAgIHwqfCp8KnxnRWZpQ3J5cHRvUGtn VG9rZW5TcGFjZUd1aWQuUGNkT3BlbnNzbEVjRW5hYmxlZA0KPiA+DQo+ID4gVGhlIHVzZSBvZiB0 aGUgUENEIHRvIHNlbGVjdCB0aGUgZmlsZSBzaG91bGQgbm90IGJlIG5lZWRlZCBoZXJlLiAgVGhl DQo+ID4gRWMgRmFtaWx5IGFuZCBpbmRpdmlkdWFsIHNlcnZpY2UgZW5hYmxlL2Rpc2FibGUgZmll bGRzIGluIHRoZQ0KPiA+IFBDRF9DUllQVE9fU0VSVklDRV9GQU1JTFlfRU5BQkxFIHN0cnVjdHVy ZWQgUENEIGFyZSBhbGwgdGhhdCBpcyBuZWVkZWQgdG8NCj4gPiBkaXNhYmxlIHRoZSBFYyBzZXJ2 aWNlcy4NCj4gPg0KPiA+IFRoZSBQQ0QgZ0VmaUNyeXB0b1BrZ1Rva2VuU3BhY2VHdWlkLlBjZE9w ZW5zc2xFY0VuYWJsZWQgc2hvdWxkIGJlIHJlbW92ZWQNCj4gPiBjb21wbGV0ZWx5IGFzIHBhcnQg b2YgdGhpcyBwYXRjaCBzZXJpZXMuDQo+ID4NCj4gPiA+ICAgIFBlbS9DcnlwdFBlbS5jDQo+ID4g PiAgICBCbi9DcnlwdEJuLmMNCj4gPiA+DQo+ID4gPiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0xp YnJhcnkvQmFzZUNyeXB0TGliL1BlaUNyeXB0TGliLmluZiBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jh c2VDcnlwdExpYi9QZWlDcnlwdExpYi5pbmYNCj4gPiA+IGluZGV4IDY1YWQyM2ZiODEuLjM4M2Rm MmIyM2MgMTAwNjQ0DQo+ID4gPiAtLS0gYS9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIv UGVpQ3J5cHRMaWIuaW5mDQo+ID4gPiArKysgYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRM aWIvUGVpQ3J5cHRMaWIuaW5mDQo+ID4gPiBAQCAtNTgsNiArNTgsNyBAQA0KPiA+ID4gICAgUGsv Q3J5cHRUc051bGwuYw0KPiA+ID4gICAgUGsvQ3J5cHRSc2FQc3MuYw0KPiA+ID4gICAgUGsvQ3J5 cHRSc2FQc3NTaWduTnVsbC5jDQo+ID4gPiArICBQay9DcnlwdEVjTnVsbC5jDQo+ID4gPiAgICBQ ZW0vQ3J5cHRQZW1OdWxsLmMNCj4gPiA+ICAgIFJhbmQvQ3J5cHRSYW5kTnVsbC5jDQo+ID4gPiAg ICBCbi9DcnlwdEJuTnVsbC5jDQo+ID4gPiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0xpYnJhcnkv QmFzZUNyeXB0TGliL1BrL0NyeXB0RWMuYyBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExp Yi9Qay9DcnlwdEVjLmMNCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiBpbmRleCAw MDAwMDAwMDAwLi4zOTZjODE5ODM0DQo+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiArKysgYi9D cnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvUGsvQ3J5cHRFYy5jDQo+ID4gPiBAQCAtMCww ICsxLDc2NSBAQA0KPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ID4gKyAgRWxsaXB0aWMgQ3VydmUgYW5k IEVDREggQVBJIGltcGxlbWVudGF0aW9uIGJhc2VkIG9uIE9wZW5TU0wNCj4gPiA+ICsNCj4gPiA+ ICsgIENvcHlyaWdodCAoYykgMjAyMiwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz ZXJ2ZWQuPEJSPg0KPiA+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVz ZS1QYXRlbnQNCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICsNCj4gPiA+ICsjaW5jbHVkZSAi SW50ZXJuYWxDcnlwdExpYi5oIg0KPiA+ID4gKyNpbmNsdWRlIDxvcGVuc3NsL29iamVjdHMuaD4N Cj4gPiA+ICsjaW5jbHVkZSA8b3BlbnNzbC9ibi5oPg0KPiA+ID4gKyNpbmNsdWRlIDxvcGVuc3Ns L2VjLmg+DQo+ID4gPiArDQo+ID4gPiArLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K PiA+ID4gKy8vICAgIEJhc2ljIEVsbGlwdGljIEN1cnZlIFByaW1pdGl2ZXMNCj4gPiA+ICsvLyA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiAr ICBSZXR1cm4gdGhlIE5pZCBvZiBjZXJ0YWluIEVDQyBjdXJ2ZS4NCj4gPiA+ICsNCj4gPiA+ICsg IEBwYXJhbVtpbl0gIENyeXB0b05pZCAgIElkZW50aWZ5aW5nIG51bWJlciBmb3IgdGhlIEVDQyBj dXJ2ZSAoRGVmaW5lZCBpbg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzZUNy eXB0TGliLmgpLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCAhPS0xICAgIE9uIHN1Y2Nlc3Mu DQo+ID4gPiArICBAcmV0dmFsIC0xICAgICAgRUNDIGN1cnZlIG5vdCBzdXBwb3J0ZWQuDQo+ID4g PiArKiovDQo+ID4gPiArU1RBVElDDQo+ID4gPiArSU5UMzINCj4gPiA+ICtDcnlwdG9OaWRUb09w ZW5zc2xOaWQgKA0KPiA+ID4gKyAgSU4gVUlOVE4gIENyeXB0b05pZA0KPiA+ID4gKyAgKQ0KPiA+ ID4gK3sNCj4gPiA+ICsgIElOVDMyICBOaWQ7DQo+ID4gPiArDQo+ID4gPiArICBzd2l0Y2ggKENy eXB0b05pZCkgew0KPiA+ID4gKyAgICBjYXNlIENSWVBUT19OSURfU0VDUDI1NlIxOg0KPiA+ID4g KyAgICAgIE5pZCA9IE5JRF9YOV82Ml9wcmltZTI1NnYxOw0KPiA+ID4gKyAgICAgIGJyZWFrOw0K PiA+ID4gKyAgICBjYXNlIENSWVBUT19OSURfU0VDUDM4NFIxOg0KPiA+ID4gKyAgICAgIE5pZCA9 IE5JRF9zZWNwMzg0cjE7DQo+ID4gPiArICAgICAgYnJlYWs7DQo+ID4gPiArICAgIGNhc2UgQ1JZ UFRPX05JRF9TRUNQNTIxUjE6DQo+ID4gPiArICAgICAgTmlkID0gTklEX3NlY3A1MjFyMTsNCj4g PiA+ICsgICAgICBicmVhazsNCj4gPiA+ICsgICAgZGVmYXVsdDoNCj4gPiA+ICsgICAgICByZXR1 cm4gLTE7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICByZXR1cm4gTmlkOw0KPiA+ID4g K30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEluaXRpYWxpemUgbmV3IG9wYXF1ZSBF Y0dyb3VwIG9iamVjdC4gVGhpcyBvYmplY3QgcmVwcmVzZW50cyBhbiBFQyBjdXJ2ZSBhbmQNCj4g PiA+ICsgIGFuZCBpcyB1c2VkIGZvciBjYWxjdWxhdGlvbiB3aXRoaW4gdGhpcyBncm91cC4gVGhp cyBvYmplY3Qgc2hvdWxkIGJlIGZyZWVkDQo+ID4gPiArICB1c2luZyBFY0dyb3VwRnJlZSgpIGZ1 bmN0aW9uLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQ3J5cHRvTmlkICAgSWRlbnRp ZnlpbmcgbnVtYmVyIGZvciB0aGUgRUNDIGN1cnZlIChEZWZpbmVkIGluDQo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICBCYXNlQ3J5cHRMaWIuaCkuDQo+ID4gPiArDQo+ID4gPiArICBA cmV0dmFsIEVjR3JvdXAgb2JqZWN0ICBPbiBzdWNjZXNzLg0KPiA+ID4gKyAgQHJldHZhbCBOVUxM ICAgICAgICAgICAgT24gZmFpbHVyZS4NCj4gPiA+ICsqKi8NCj4gPiA+ICtWT0lEICoNCj4gPiA+ ICtFRklBUEkNCj4gPiA+ICtFY0dyb3VwSW5pdCAoDQo+ID4gPiArICBJTiBVSU5UTiAgQ3J5cHRv TmlkDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgSU5UMzIgIE5pZDsNCj4gPiA+ICsN Cj4gPiA+ICsgIE5pZCA9IENyeXB0b05pZFRvT3BlbnNzbE5pZCAoQ3J5cHRvTmlkKTsNCj4gPiA+ ICsNCj4gPiA+ICsgIGlmIChOaWQgPCAwKSB7DQo+ID4gPiArICAgIHJldHVybiBOVUxMOw0KPiA+ ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgcmV0dXJuIEVDX0dST1VQX25ld19ieV9jdXJ2ZV9u YW1lIChOaWQpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEdldCBF QyBjdXJ2ZSBwYXJhbWV0ZXJzLiBXaGlsZSBlbGxpcHRpYyBjdXJ2ZSBlcXVhdGlvbiBpcyBZXjIg bW9kIFAgPSAoWF4zICsgQVggKyBCKSBNb2QgUC4NCj4gPiA+ICsgIFRoaXMgZnVuY3Rpb24gd2ls bCBzZXQgdGhlIHByb3ZpZGVkIEJpZyBOdW1iZXIgb2JqZWN0cyAgdG8gdGhlIGNvcnJlc3BvbmRp bmcNCj4gPiA+ICsgIHZhbHVlcy4gVGhlIGNhbGxlciBuZWVkcyB0byBtYWtlIHN1cmUgYWxsIHRo ZSAib3V0IiBCaWdOdW1iZXIgcGFyYW1ldGVycw0KPiA+ID4gKyAgYXJlIHByb3Blcmx5IGluaXRp YWxpemVkLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgICBFQyBncm91 cCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1bb3V0XSBCblByaW1lICAgIEdyb3VwIHByaW1lIG51 bWJlci4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdIEJuQSAgICAgICAgQSBjb2VmZmljaWVudC4NCj4g PiA+ICsgIEBwYXJhbVtvdXRdIEJuQiAgICAgICAgQiBjb2VmZmljaWVudC4uDQo+ID4gPiArICBA cGFyYW1baW5dICBCbkN0eCAgICAgIEJOIGNvbnRleHQuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0 dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAg ICAgICBPdGhlcndpc2UuDQo+ID4gPiArKiovDQo+ID4gPiArQk9PTEVBTg0KPiA+ID4gK0VGSUFQ SQ0KPiA+ID4gK0VjR3JvdXBHZXRDdXJ2ZSAoDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNH cm91cCwNCj4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpCblByaW1lLA0KPiA+ID4gKyAgT1VUIFZP SUQgICAgICAgKkJuQSwNCj4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpCbkIsDQo+ID4gPiArICBJ TiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICByZXR1 cm4gKEJPT0xFQU4pRUNfR1JPVVBfZ2V0X2N1cnZlIChFY0dyb3VwLCBCblByaW1lLCBCbkEsIEJu QiwgQm5DdHgpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEdldCBF QyBncm91cCBvcmRlci4NCj4gPiA+ICsgIFRoaXMgZnVuY3Rpb24gd2lsbCBzZXQgdGhlIHByb3Zp ZGVkIEJpZyBOdW1iZXIgb2JqZWN0IHRvIHRoZSBjb3JyZXNwb25kaW5nDQo+ID4gPiArICB2YWx1 ZS4gVGhlIGNhbGxlciBuZWVkcyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgIm91dCIgQmlnTnVtYmVy IHBhcmFtZXRlcg0KPiA+ID4gKyAgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQuDQo+ID4gPiArDQo+ ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gKyAg QHBhcmFtW291dF0gQm5PcmRlciAgIEdyb3VwIHByaW1lIG51bWJlci4NCj4gPiA+ICsNCj4gPiA+ ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNzLg0KPiA+ID4gKyAgQHJldHZhbCBG QUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ICsqKi8NCj4gPiA+ICtCT09MRUFODQo+ID4g PiArRUZJQVBJDQo+ID4gPiArRWNHcm91cEdldE9yZGVyICgNCj4gPiA+ICsgIElOIFZPSUQgICAq RWNHcm91cCwNCj4gPiA+ICsgIE9VVCBWT0lEICAqQm5PcmRlcg0KPiA+ID4gKyAgKQ0KPiA+ID4g K3sNCj4gPiA+ICsgIHJldHVybiAoQk9PTEVBTilFQ19HUk9VUF9nZXRfb3JkZXIgKEVjR3JvdXAs IEJuT3JkZXIsIE5VTEwpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsg IEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgRUMgZ3JvdXAgb2JqZWN0IHVzaW5nIEVjR3JvdXBJ bml0KCkuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgRUMgZ3JvdXAg b2JqZWN0IHRvIGZyZWUuDQo+ID4gPiArKiovDQo+ID4gPiArVk9JRA0KPiA+ID4gK0VGSUFQSQ0K PiA+ID4gK0VjR3JvdXBGcmVlICgNCj4gPiA+ICsgIElOIFZPSUQgICpFY0dyb3VwDQo+ID4gPiAr ICApDQo+ID4gPiArew0KPiA+ID4gKyAgRUNfR1JPVVBfZnJlZSAoRWNHcm91cCk7DQo+ID4gPiAr fQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgSW5pdGlhbGl6ZSBuZXcgb3BhcXVlIEVD IFBvaW50IG9iamVjdC4gVGhpcyBvYmplY3QgcmVwcmVzZW50cyBhbiBFQyBwb2ludA0KPiA+ID4g KyAgd2l0aGluIHRoZSBnaXZlbiBFQyBncm91cCAoY3VydmUpLg0KPiA+ID4gKw0KPiA+ID4gKyAg QHBhcmFtW2luXSAgRUMgR3JvdXAsIHByb3Blcmx5IGluaXRpYWxpemVkIHVzaW5nIEVjR3JvdXBJ bml0KCkuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIEVDIFBvaW50IG9iamVjdCAgT24gc3Vj Y2Vzcy4NCj4gPiA+ICsgIEByZXR2YWwgTlVMTCAgICAgICAgICAgICBPbiBmYWlsdXJlLg0KPiA+ ID4gKyoqLw0KPiA+ID4gK1ZPSUQgKg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjUG9pbnRJbml0 ICgNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwDQo+ID4gPiArICApDQo+ID4gPiAr ew0KPiA+ID4gKyAgcmV0dXJuIEVDX1BPSU5UX25ldyAoRWNHcm91cCk7DQo+ID4gPiArfQ0KPiA+ ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBFQyBQ b2ludCBvYmplY3QgdXNpbmcgRWNQb2ludEluaXQoKS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJh bVtpbl0gIEVjUG9pbnQgICBFQyBQb2ludCB0byBmcmVlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAg Q2xlYXIgICAgIFRSVUUgaWZmIHRoZSBtZW1vcnkgc2hvdWxkIGJlIGNsZWFyZWQuDQo+ID4gPiAr KiovDQo+ID4gPiArVk9JRA0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjUG9pbnREZUluaXQgKA0K PiA+ID4gKyAgSU4gVk9JRCAgICAgKkVjUG9pbnQsDQo+ID4gPiArICBJTiBCT09MRUFOICBDbGVh cg0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIGlmIChDbGVhcikgew0KPiA+ID4gKyAg ICBFQ19QT0lOVF9jbGVhcl9mcmVlIChFY1BvaW50KTsNCj4gPiA+ICsgIH0gZWxzZSB7DQo+ID4g PiArICAgIEVDX1BPSU5UX2ZyZWUgKEVjUG9pbnQpOw0KPiA+ID4gKyAgfQ0KPiA+ID4gK30NCj4g PiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEdldCBFQyBwb2ludCBhZmZpbmUgKHgseSkgY29v cmRpbmF0ZXMuDQo+ID4gPiArICBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHRoZSBwcm92aWRlZCBC aWcgTnVtYmVyIG9iamVjdHMgdG8gdGhlIGNvcnJlc3BvbmRpbmcNCj4gPiA+ICsgIHZhbHVlcy4g VGhlIGNhbGxlciBuZWVkcyB0byBtYWtlIHN1cmUgYWxsIHRoZSAib3V0IiBCaWdOdW1iZXIgcGFy YW1ldGVycw0KPiA+ID4gKyAgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkLg0KPiA+ID4gKw0KPiA+ ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiArICBA cGFyYW1baW5dICBFY1BvaW50ICAgIEVDIHBvaW50IG9iamVjdC4NCj4gPiA+ICsgIEBwYXJhbVtv dXRdIEJuWCAgICAgICAgWCBjb29yZGluYXRlLg0KPiA+ID4gKyAgQHBhcmFtW291dF0gQm5ZICAg ICAgICBZIGNvb3JkaW5hdGUuDQo+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgIEJOIGNv bnRleHQsIGNyZWF0ZWQgd2l0aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiArDQo+ID4gPiAr ICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ICsgIEByZXR2YWwgRkFM U0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiArKiovDQo+ID4gPiArQk9PTEVBTg0KPiA+ID4g K0VGSUFQSQ0KPiA+ID4gK0VjUG9pbnRHZXRBZmZpbmVDb29yZGluYXRlcyAoDQo+ID4gPiArICBJ TiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50 LA0KPiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkJuWCwNCj4gPiA+ICsgIE9VVCBWT0lEICAgICAg ICpCblksDQo+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ICsgICkNCj4gPiA+ ICt7DQo+ID4gPiArICByZXR1cm4gKEJPT0xFQU4pRUNfUE9JTlRfZ2V0X2FmZmluZV9jb29yZGlu YXRlcyAoRWNHcm91cCwgRWNQb2ludCwgQm5YLCBCblksIEJuQ3R4KTsNCj4gPiA+ICt9DQo+ID4g PiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBTZXQgRUMgcG9pbnQgYWZmaW5lICh4LHkpIGNvb3Jk aW5hdGVzLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgICBFQyBncm91 cCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgIEVDIHBvaW50IG9iamVj dC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuWCAgICAgICAgWCBjb29yZGluYXRlLg0KPiA+ID4g KyAgQHBhcmFtW2luXSAgQm5ZICAgICAgICBZIGNvb3JkaW5hdGUuDQo+ID4gPiArICBAcGFyYW1b aW5dICBCbkN0eCAgICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aCBCaWdOdW1OZXdDb250ZXh0 KCkuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4N Cj4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiArKiovDQo+ ID4gPiArQk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjUG9pbnRTZXRBZmZpbmVDb29y ZGluYXRlcyAoDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ICsgIElO IFZPSUQgICAgICAgICpFY1BvaW50LA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuWCwNCj4g PiA+ICsgIElOIENPTlNUIFZPSUQgICpCblksDQo+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5D dHgNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICByZXR1cm4gKEJPT0xFQU4pRUNfUE9J TlRfc2V0X2FmZmluZV9jb29yZGluYXRlcyAoRWNHcm91cCwgRWNQb2ludCwgQm5YLCBCblksIEJu Q3R4KTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBFQyBQb2ludCBh ZGRpdGlvbi4gRWNQb2ludFJlc3VsdCA9IEVjUG9pbnRBICsgRWNQb2ludEIuDQo+ID4gPiArDQo+ ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgICAgICAgIEVDIGdyb3VwIG9iamVjdC4NCj4g PiA+ICsgIEBwYXJhbVtvdXRdIEVjUG9pbnRSZXN1bHQgICAgRUMgcG9pbnQgdG8gaG9sZCB0aGUg cmVzdWx0LiBUaGUgcG9pbnQgc2hvdWxkDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJlIHByb3Blcmx5IGluaXRpYWxpemVkLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQ b2ludEEgICAgICAgICBFQyBQb2ludC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnRCICAg ICAgICAgRUMgUG9pbnQuDQo+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgICAgICAgIEJO IGNvbnRleHQsIGNyZWF0ZWQgd2l0aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiArDQo+ID4g PiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ICsgIEByZXR2YWwg RkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiArKiovDQo+ID4gPiArQk9PTEVBTg0KPiA+ ID4gK0VGSUFQSQ0KPiA+ID4gK0VjUG9pbnRBZGQgKA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAg KkVjR3JvdXAsDQo+ID4gPiArICBPVVQgVk9JRCAgICAgICAqRWNQb2ludFJlc3VsdCwNCj4gPiA+ ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50QSwNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpF Y1BvaW50QiwNCj4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gKyAgKQ0KPiA+ ID4gK3sNCj4gPiA+ICsgIHJldHVybiAoQk9PTEVBTilFQ19QT0lOVF9hZGQgKEVjR3JvdXAsIEVj UG9pbnRSZXN1bHQsIEVjUG9pbnRBLCBFY1BvaW50QiwgQm5DdHgpOw0KPiA+ID4gK30NCj4gPiA+ ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFZhcmlhYmxlIEVDIHBvaW50IG11bHRpcGxpY2F0aW9u LiBFY1BvaW50UmVzdWx0ID0gRWNQb2ludCAqIEJuUFNjYWxhci4NCj4gPiA+ICsNCj4gPiA+ICsg IEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgICAgICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gKyAg QHBhcmFtW291dF0gRWNQb2ludFJlc3VsdCAgICBFQyBwb2ludCB0byBob2xkIHRoZSByZXN1bHQu IFRoZSBwb2ludCBzaG91bGQNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuDQo+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAg ICAgICAgIEVDIFBvaW50Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5QU2NhbGFyICAgICAgICBQ IFNjYWxhci4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAgICAgICAgICAgQk4gY29udGV4 dCwgY3JlYXRlZCB3aXRoIEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBy ZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNzLg0KPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAg ICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ICsqKi8NCj4gPiA+ICtCT09MRUFODQo+ID4gPiArRUZJ QVBJDQo+ID4gPiArRWNQb2ludE11bCAoDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91 cCwNCj4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpFY1BvaW50UmVzdWx0LA0KPiA+ID4gKyAgSU4g Q09OU1QgVk9JRCAgKkVjUG9pbnQsDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqQm5QU2NhbGFy LA0KPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiArICApDQo+ID4gPiArew0K PiA+ID4gKyAgcmV0dXJuIChCT09MRUFOKUVDX1BPSU5UX211bCAoRWNHcm91cCwgRWNQb2ludFJl c3VsdCwgTlVMTCwgRWNQb2ludCwgQm5QU2NhbGFyLCBCbkN0eCk7DQo+ID4gPiArfQ0KPiA+ID4g Kw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgQ2FsY3VsYXRlIHRoZSBpbnZlcnNlIG9mIHRoZSBzdXBw bGllZCBFQyBwb2ludC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gICAgIEVjR3JvdXAg ICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1baW4sb3V0XSBFY1BvaW50ICAgRUMg cG9pbnQgdG8gaW52ZXJ0Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgICAgQm5DdHggICAgIEJOIGNv bnRleHQsIGNyZWF0ZWQgd2l0aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiArDQo+ID4gPiAr ICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ICsgIEByZXR2YWwgRkFM U0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiArKiovDQo+ID4gPiArQk9PTEVBTg0KPiA+ID4g K0VGSUFQSQ0KPiA+ID4gK0VjUG9pbnRJbnZlcnQgKA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAg KkVjR3JvdXAsDQo+ID4gPiArICBJTiBPVVQgVk9JRCAgICAqRWNQb2ludCwNCj4gPiA+ICsgIElO IFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJldHVy biAoQk9PTEVBTilFQ19QT0lOVF9pbnZlcnQgKEVjR3JvdXAsIEVjUG9pbnQsIEJuQ3R4KTsNCj4g PiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBDaGVjayBpZiB0aGUgc3VwcGxp ZWQgcG9pbnQgaXMgb24gRUMgY3VydmUuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBF Y0dyb3VwICAgRUMgZ3JvdXAgb2JqZWN0Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAg IEVDIHBvaW50IHRvIGNoZWNrLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgIEJOIGNv bnRleHQsIGNyZWF0ZWQgd2l0aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiArDQo+ID4gPiAr ICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gY3VydmUuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNF ICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtF RklBUEkNCj4gPiA+ICtFY1BvaW50SXNPbkN1cnZlICgNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQg ICpFY0dyb3VwLA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnQsDQo+ID4gPiArICBJ TiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICByZXR1 cm4gRUNfUE9JTlRfaXNfb25fY3VydmUgKEVjR3JvdXAsIEVjUG9pbnQsIEJuQ3R4KSA9PSAxOw0K PiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIENoZWNrIGlmIHRoZSBzdXBw bGllZCBwb2ludCBpcyBhdCBpbmZpbml0eS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0g IEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50 ICAgRUMgcG9pbnQgdG8gY2hlY2suDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICAg ICAgICAgQXQgaW5maW5pdHkuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3 aXNlLg0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtF Y1BvaW50SXNBdEluZmluaXR5ICgNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0K PiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnQNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ ID4gPiArICByZXR1cm4gRUNfUE9JTlRfaXNfYXRfaW5maW5pdHkgKEVjR3JvdXAsIEVjUG9pbnQp ID09IDE7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgQ2hlY2sgaWYg RUMgcG9pbnRzIGFyZSBlcXVhbC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3Jv dXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50QSAgRUMg cG9pbnQgQS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnRCICBFQyBwb2ludCBCLg0KPiA+ ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aCBCaWdO dW1OZXdDb250ZXh0KCkuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAg QSA9PSBCLg0KPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ ICsqKi8NCj4gPiA+ICtCT09MRUFODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRWNQb2ludEVxdWFs ICgNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gKyAgSU4gQ09OU1Qg Vk9JRCAgKkVjUG9pbnRBLA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnRCLA0KPiA+ ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4g KyAgcmV0dXJuIEVDX1BPSU5UX2NtcCAoRWNHcm91cCwgRWNQb2ludEEsIEVjUG9pbnRCLCBCbkN0 eCkgPT0gMDsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBTZXQgRUMg cG9pbnQgY29tcHJlc3NlZCBjb29yZGluYXRlcy4gUG9pbnRzIGNhbiBiZSBkZXNjcmliZWQgaW4g dGVybXMgb2YNCj4gPiA+ICsgIHRoZWlyIGNvbXByZXNzZWQgY29vcmRpbmF0ZXMuIEZvciBhIHBv aW50ICh4LCB5KSwgZm9yIGFueSBnaXZlbiB2YWx1ZSBmb3IgeA0KPiA+ID4gKyAgc3VjaCB0aGF0 IHRoZSBwb2ludCBpcyBvbiB0aGUgY3VydmUgdGhlcmUgd2lsbCBvbmx5IGV2ZXIgYmUgdHdvIHBv c3NpYmxlDQo+ID4gPiArICB2YWx1ZXMgZm9yIHkuIFRoZXJlZm9yZSwgYSBwb2ludCBjYW4gYmUg c2V0IHVzaW5nIHRoaXMgZnVuY3Rpb24gd2hlcmUgQm5YIGlzDQo+ID4gPiArICB0aGUgeCBjb29y ZGluYXRlIGFuZCBZQml0IGlzIGEgdmFsdWUgMCBvciAxIHRvIGlkZW50aWZ5IHdoaWNoIG9mIHRo ZSB0d28NCj4gPiA+ICsgIHBvc3NpYmxlIHZhbHVlcyBmb3IgeSBzaG91bGQgYmUgdXNlZC4NCj4g PiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgRUMgZ3JvdXAgb2JqZWN0Lg0K PiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgICBFQyBQb2ludC4NCj4gPiA+ICsgIEBwYXJh bVtpbl0gIEJuWCAgICAgICAgWCBjb29yZGluYXRlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgWUJp dCAgICAgICAwIG9yIDEgdG8gaWRlbnRpZnkgd2hpY2ggWSB2YWx1ZSBpcyB1c2VkLg0KPiA+ID4g KyAgQHBhcmFtW2luXSAgQm5DdHggICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGggQmlnTnVt TmV3Q29udGV4dCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgIE9u IHN1Y2Nlc3MuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY1BvaW50U2V0 Q29tcHJlc3NlZENvb3JkaW5hdGVzICgNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3Vw LA0KPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkVjUG9pbnQsDQo+ID4gPiArICBJTiBDT05TVCBW T0lEICAqQm5YLA0KPiA+ID4gKyAgSU4gVUlOVDggICAgICAgWUJpdCwNCj4gPiA+ICsgIElOIFZP SUQgICAgICAgICpCbkN0eA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIHJldHVybiAo Qk9PTEVBTilFQ19QT0lOVF9zZXRfY29tcHJlc3NlZF9jb29yZGluYXRlcyAoRWNHcm91cCwgRWNQ b2ludCwgQm5YLCBZQml0LCBCbkN0eCk7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8vID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPiA+ICsvLyAgICBFbGxpcHRpYyBDdXJ2ZSBE aWZmaWUgSGVsbG1hbiBQcmltaXRpdmVzDQo+ID4gPiArLy8gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgQWxsb2NhdGVzIGFuZCBJbml0 aWFsaXplcyBvbmUgRWxsaXB0aWMgQ3VydmUgQ29udGV4dCBmb3Igc3Vic2VxdWVudCB1c2UNCj4g PiA+ICsgIHdpdGggdGhlIE5JRC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIE5pZCAg IElkZW50aWZ5aW5nIG51bWJlciBmb3IgdGhlIEVDQyBjdXJ2ZSAoRGVmaW5lZCBpbg0KPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgQmFzZUNyeXB0TGliLmgpLg0KPiA+ID4gKyAgQHJldHVybiAg ICAgUG9pbnRlciB0byB0aGUgRWxsaXB0aWMgQ3VydmUgQ29udGV4dCB0aGF0IGhhcyBiZWVuIGlu aXRpYWxpemVkLg0KPiA+ID4gKyAgICAgICAgICAgICAgSWYgdGhlIGFsbG9jYXRpb25zIGZhaWxz LCBFY05ld0J5TmlkKCkgcmV0dXJucyBOVUxMLg0KPiA+ID4gKyoqLw0KPiA+ID4gK1ZPSUQgKg0K PiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjTmV3QnlOaWQgKA0KPiA+ID4gKyAgSU4gVUlOVE4gIE5p ZA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIElOVDMyICBPcGVuU3NsTmlkOw0KPiA+ ID4gKw0KPiA+ID4gKyAgT3BlblNzbE5pZCA9IENyeXB0b05pZFRvT3BlbnNzbE5pZCAoTmlkKTsN Cj4gPiA+ICsgIGlmIChPcGVuU3NsTmlkIDwgMCkgew0KPiA+ID4gKyAgICByZXR1cm4gTlVMTDsN Cj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIHJldHVybiAoVk9JRCAqKUVDX0tFWV9uZXdf YnlfY3VydmVfbmFtZSAoT3BlblNzbE5pZCk7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8q Kg0KPiA+ID4gKyAgUmVsZWFzZSB0aGUgc3BlY2lmaWVkIEVDIGNvbnRleHQuDQo+ID4gPiArDQo+ ID4gPiArICBAcGFyYW1baW5dICBFY0NvbnRleHQgIFBvaW50ZXIgdG8gdGhlIEVDIGNvbnRleHQg dG8gYmUgcmVsZWFzZWQuDQo+ID4gPiArKiovDQo+ID4gPiArVk9JRA0KPiA+ID4gK0VGSUFQSQ0K PiA+ID4gK0VjRnJlZSAoDQo+ID4gPiArICBJTiAgVk9JRCAgKkVjQ29udGV4dA0KPiA+ID4gKyAg KQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEVDX0tFWV9mcmVlICgoRUNfS0VZICopRWNDb250ZXh0KTsN Cj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBHZW5lcmF0ZXMgRUMga2V5 IGFuZCByZXR1cm5zIEVDIHB1YmxpYyBrZXkgKFgsIFkpLCBQbGVhc2Ugbm90ZSwgdGhpcyBmdW5j dGlvbiB1c2VzDQo+ID4gPiArICBwc2V1ZG8gcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuIFRoZSBj YWxsZXIgbXVzdCBtYWtlIHN1cmUgUmFuZG9tU2VlZCgpDQo+ID4gPiArICBmdW5jdGlvbiB3YXMg cHJvcGVybHkgY2FsbGVkIGJlZm9yZS4NCj4gPiA+ICsgIFRoZSBFYyBjb250ZXh0IHNob3VsZCBi ZSBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgYnkgRWNOZXdCeU5pZC4NCj4gPiA+ICsgIFRoaXMgZnVu Y3Rpb24gZ2VuZXJhdGVzIHJhbmRvbSBzZWNyZXQsIGFuZCBjb21wdXRlcyB0aGUgcHVibGljIGtl eSAoWCwgWSksIHdoaWNoIGlzDQo+ID4gPiArICByZXR1cm5lZCB2aWEgcGFyYW1ldGVyIFB1Ymxp YywgUHVibGljU2l6ZS4NCj4gPiA+ICsgIFggaXMgdGhlIGZpcnN0IGhhbGYgb2YgUHVibGljIHdp dGggc2l6ZSBiZWluZyBQdWJsaWNTaXplIC8gMiwNCj4gPiA+ICsgIFkgaXMgdGhlIHNlY29uZCBo YWxmIG9mIFB1YmxpYyB3aXRoIHNpemUgYmVpbmcgUHVibGljU2l6ZSAvIDIuDQo+ID4gPiArICBF QyBjb250ZXh0IGlzIHVwZGF0ZWQgYWNjb3JkaW5nbHkuDQo+ID4gPiArICBJZiB0aGUgUHVibGlj IGJ1ZmZlciBpcyB0b28gc21hbGwgdG8gaG9sZCB0aGUgcHVibGljIFgsIFksIEZBTFNFIGlzIHJl dHVybmVkIGFuZA0KPiA+ID4gKyAgUHVibGljU2l6ZSBpcyBzZXQgdG8gdGhlIHJlcXVpcmVkIGJ1 ZmZlciBzaXplIHRvIG9idGFpbiB0aGUgcHVibGljIFgsIFkuDQo+ID4gPiArICBGb3IgUC0yNTYs IHRoZSBQdWJsaWNTaXplIGlzIDY0LiBGaXJzdCAzMi1ieXRlIGlzIFgsIFNlY29uZCAzMi1ieXRl IGlzIFkuDQo+ID4gPiArICBGb3IgUC0zODQsIHRoZSBQdWJsaWNTaXplIGlzIDk2LiBGaXJzdCA0 OC1ieXRlIGlzIFgsIFNlY29uZCA0OC1ieXRlIGlzIFkuDQo+ID4gPiArICBGb3IgUC01MjEsIHRo ZSBQdWJsaWNTaXplIGlzIDEzMi4gRmlyc3QgNjYtYnl0ZSBpcyBYLCBTZWNvbmQgNjYtYnl0ZSBp cyBZLg0KPiA+ID4gKyAgSWYgRWNDb250ZXh0IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0K PiA+ID4gKyAgSWYgUHVibGljU2l6ZSBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPiA+ ICsgIElmIFB1YmxpY1NpemUgaXMgbGFyZ2UgZW5vdWdoIGJ1dCBQdWJsaWMgaXMgTlVMTCwgdGhl biByZXR1cm4gRkFMU0UuDQo+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIEVjQ29udGV4dCAgICAg IFBvaW50ZXIgdG8gdGhlIEVDIGNvbnRleHQuDQo+ID4gPiArICBAcGFyYW1bb3V0XSAgICAgIFB1 YmxpY0tleSAgICAgIFBvaW50ZXIgdG8gdCBidWZmZXIgdG8gcmVjZWl2ZSBnZW5lcmF0ZWQgcHVi bGljIFgsWS4NCj4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgUHVibGljS2V5U2l6ZSAgT24gaW5w dXQsIHRoZSBzaXplIG9mIFB1YmxpYyBidWZmZXIgaW4gYnl0ZXMuDQo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHNpemUgb2YgZGF0YSByZXR1 cm5lZCBpbiBQdWJsaWMgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ID4gKyAgQHJldHZhbCBUUlVFICAg RUMgcHVibGljIFgsWSBnZW5lcmF0aW9uIHN1Y2NlZWRlZC4NCj4gPiA+ICsgIEByZXR2YWwgRkFM U0UgIEVDIHB1YmxpYyBYLFkgZ2VuZXJhdGlvbiBmYWlsZWQuDQo+ID4gPiArICBAcmV0dmFsIEZB TFNFICBQdWJsaWNLZXlTaXplIGlzIG5vdCBsYXJnZSBlbm91Z2guDQo+ID4gPiArKiovDQo+ID4g PiArQk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjR2VuZXJhdGVLZXkgKA0KPiA+ID4g KyAgSU4gT1VUICBWT0lEICAgKkVjQ29udGV4dCwNCj4gPiA+ICsgIE9VVCAgICAgVUlOVDggICpQ dWJsaWNLZXksDQo+ID4gPiArICBJTiBPVVQgIFVJTlROICAqUHVibGljS2V5U2l6ZQ0KPiA+ID4g KyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEVDX0tFWSAgICAgICAgICAqRWNLZXk7DQo+ID4gPiAr ICBDT05TVCBFQ19HUk9VUCAgKkdyb3VwOw0KPiA+ID4gKyAgQ09OU1QgRUNfUE9JTlQgICpFY1Bv aW50Ow0KPiA+ID4gKyAgQk9PTEVBTiAgICAgICAgIFJldFZhbDsNCj4gPiA+ICsgIEJJR05VTSAg ICAgICAgICAqQm5YOw0KPiA+ID4gKyAgQklHTlVNICAgICAgICAgICpCblk7DQo+ID4gPiArICBV SU5UTiAgICAgICAgICAgSGFsZlNpemU7DQo+ID4gPiArICBJTlROICAgICAgICAgICAgWFNpemU7 DQo+ID4gPiArICBJTlROICAgICAgICAgICAgWVNpemU7DQo+ID4gPiArDQo+ID4gPiArICBpZiAo KEVjQ29udGV4dCA9PSBOVUxMKSB8fCAoUHVibGljS2V5U2l6ZSA9PSBOVUxMKSkgew0KPiA+ID4g KyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICBpZiAoKFB1 YmxpY0tleSA9PSBOVUxMKSAmJiAoKlB1YmxpY0tleVNpemUgIT0gMCkpIHsNCj4gPiA+ICsgICAg cmV0dXJuIEZBTFNFOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgRWNLZXkgICAgPSAo RUNfS0VZICopRWNDb250ZXh0Ow0KPiA+ID4gKyAgR3JvdXAgICAgPSBFQ19LRVlfZ2V0MF9ncm91 cCAoRWNLZXkpOw0KPiA+ID4gKyAgSGFsZlNpemUgPSAoRUNfR1JPVVBfZ2V0X2RlZ3JlZSAoR3Jv dXApICsgNykgLyA4Ow0KPiA+ID4gKw0KPiA+ID4gKyAgLy8gQXNzdW1lIFJBTkRfc2VlZCB3YXMg Y2FsbGVkDQo+ID4gPiArICBpZiAoRUNfS0VZX2dlbmVyYXRlX2tleSAoRWNLZXkpICE9IDEpIHsN Cj4gPiA+ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAg aWYgKCpQdWJsaWNLZXlTaXplIDwgSGFsZlNpemUgKiAyKSB7DQo+ID4gPiArICAgICpQdWJsaWNL ZXlTaXplID0gSGFsZlNpemUgKiAyOw0KPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiAr ICB9DQo+ID4gPiArDQo+ID4gPiArICAqUHVibGljS2V5U2l6ZSA9IEhhbGZTaXplICogMjsNCj4g PiA+ICsNCj4gPiA+ICsgIEVjUG9pbnQgPSBFQ19LRVlfZ2V0MF9wdWJsaWNfa2V5IChFY0tleSk7 DQo+ID4gPiArICBpZiAoRWNQb2ludCA9PSBOVUxMKSB7DQo+ID4gPiArICAgIHJldHVybiBGQUxT RTsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIFJldFZhbCA9IEZBTFNFOw0KPiA+ID4g KyAgQm5YICAgID0gQk5fbmV3ICgpOw0KPiA+ID4gKyAgQm5ZICAgID0gQk5fbmV3ICgpOw0KPiA+ ID4gKyAgaWYgKChCblggPT0gTlVMTCkgfHwgKEJuWSA9PSBOVUxMKSkgew0KPiA+ID4gKyAgICBn b3RvIGZhaWw7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICBpZiAoRUNfUE9JTlRfZ2V0 X2FmZmluZV9jb29yZGluYXRlcyAoR3JvdXAsIEVjUG9pbnQsIEJuWCwgQm5ZLCBOVUxMKSAhPSAx KSB7DQo+ID4gPiArICAgIGdvdG8gZmFpbDsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsg IFhTaXplID0gQk5fbnVtX2J5dGVzIChCblgpOw0KPiA+ID4gKyAgWVNpemUgPSBCTl9udW1fYnl0 ZXMgKEJuWSk7DQo+ID4gPiArICBpZiAoKFhTaXplIDw9IDApIHx8IChZU2l6ZSA8PSAwKSkgew0K PiA+ID4gKyAgICBnb3RvIGZhaWw7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICBBU1NF UlQgKChVSU5UTilYU2l6ZSA8PSBIYWxmU2l6ZSAmJiAoVUlOVE4pWVNpemUgPD0gSGFsZlNpemUp Ow0KPiA+ID4gKw0KPiA+ID4gKyAgWmVyb01lbSAoUHVibGljS2V5LCAqUHVibGljS2V5U2l6ZSk7 DQo+ID4gPiArICBCTl9ibjJiaW4gKEJuWCwgJlB1YmxpY0tleVswICsgSGFsZlNpemUgLSBYU2l6 ZV0pOw0KPiA+ID4gKyAgQk5fYm4yYmluIChCblksICZQdWJsaWNLZXlbSGFsZlNpemUgKyBIYWxm U2l6ZSAtIFlTaXplXSk7DQo+ID4gPiArDQo+ID4gPiArICBSZXRWYWwgPSBUUlVFOw0KPiA+ID4g Kw0KPiA+ID4gK2ZhaWw6DQo+ID4gPiArICBCTl9mcmVlIChCblgpOw0KPiA+ID4gKyAgQk5fZnJl ZSAoQm5ZKTsNCj4gPiA+ICsgIHJldHVybiBSZXRWYWw7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ ID4gKy8qKg0KPiA+ID4gKyAgR2V0cyB0aGUgcHVibGljIGtleSBjb21wb25lbnQgZnJvbSB0aGUg ZXN0YWJsaXNoZWQgRUMgY29udGV4dC4NCj4gPiA+ICsgIFRoZSBFYyBjb250ZXh0IHNob3VsZCBi ZSBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgYnkgRWNOZXdCeU5pZCwgYW5kIHN1Y2Nlc3NmdWxseQ0K PiA+ID4gKyAgZ2VuZXJhdGUga2V5IHBhaXIgZnJvbSBFY0dlbmVyYXRlS2V5KCkuDQo+ID4gPiAr ICBGb3IgUC0yNTYsIHRoZSBQdWJsaWNTaXplIGlzIDY0LiBGaXJzdCAzMi1ieXRlIGlzIFgsIFNl Y29uZCAzMi1ieXRlIGlzIFkuDQo+ID4gPiArICBGb3IgUC0zODQsIHRoZSBQdWJsaWNTaXplIGlz IDk2LiBGaXJzdCA0OC1ieXRlIGlzIFgsIFNlY29uZCA0OC1ieXRlIGlzIFkuDQo+ID4gPiArICBG b3IgUC01MjEsIHRoZSBQdWJsaWNTaXplIGlzIDEzMi4gRmlyc3QgNjYtYnl0ZSBpcyBYLCBTZWNv bmQgNjYtYnl0ZSBpcyBZLg0KPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBFY0NvbnRleHQgICAg ICBQb2ludGVyIHRvIEVDIGNvbnRleHQgYmVpbmcgc2V0Lg0KPiA+ID4gKyAgQHBhcmFtW291dF0g ICAgICBQdWJsaWNLZXkgICAgICBQb2ludGVyIHRvIHQgYnVmZmVyIHRvIHJlY2VpdmUgZ2VuZXJh dGVkIHB1YmxpYyBYLFkuDQo+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIFB1YmxpY0tleVNpemUg IE9uIGlucHV0LCB0aGUgc2l6ZSBvZiBQdWJsaWMgYnVmZmVyIGluIGJ5dGVzLg0KPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRoZSBzaXplIG9mIGRh dGEgcmV0dXJuZWQgaW4gUHVibGljIGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ICsgIEByZXR2YWwg IFRSVUUgICBFQyBrZXkgY29tcG9uZW50IHdhcyByZXRyaWV2ZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ ID4gKyAgQHJldHZhbCAgRkFMU0UgIEludmFsaWQgRUMga2V5IGNvbXBvbmVudC4NCj4gPiA+ICsq Ki8NCj4gPiA+ICtCT09MRUFODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRWNHZXRQdWJLZXkgKA0K PiA+ID4gKyAgSU4gT1VUICBWT0lEICAgKkVjQ29udGV4dCwNCj4gPiA+ICsgIE9VVCAgICAgVUlO VDggICpQdWJsaWNLZXksDQo+ID4gPiArICBJTiBPVVQgIFVJTlROICAqUHVibGljS2V5U2l6ZQ0K PiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEVDX0tFWSAgICAgICAgICAqRWNLZXk7DQo+ ID4gPiArICBDT05TVCBFQ19HUk9VUCAgKkdyb3VwOw0KPiA+ID4gKyAgQ09OU1QgRUNfUE9JTlQg ICpFY1BvaW50Ow0KPiA+ID4gKyAgQklHTlVNICAgICAgICAgICpCblg7DQo+ID4gPiArICBCSUdO VU0gICAgICAgICAgKkJuWTsNCj4gPiA+ICsgIFVJTlROICAgICAgICAgICBIYWxmU2l6ZTsNCj4g PiA+ICsgIElOVE4gICAgICAgICAgICBYU2l6ZTsNCj4gPiA+ICsgIElOVE4gICAgICAgICAgICBZ U2l6ZTsNCj4gPiA+ICsgIEJPT0xFQU4gICAgICAgICBSZXRWYWw7DQo+ID4gPiArDQo+ID4gPiAr ICBpZiAoKEVjQ29udGV4dCA9PSBOVUxMKSB8fCAoUHVibGljS2V5U2l6ZSA9PSBOVUxMKSkgew0K PiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICBp ZiAoKFB1YmxpY0tleSA9PSBOVUxMKSAmJiAoKlB1YmxpY0tleVNpemUgIT0gMCkpIHsNCj4gPiA+ ICsgICAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgRWNLZXkg ICAgPSAoRUNfS0VZICopRWNDb250ZXh0Ow0KPiA+ID4gKyAgR3JvdXAgICAgPSBFQ19LRVlfZ2V0 MF9ncm91cCAoRWNLZXkpOw0KPiA+ID4gKyAgSGFsZlNpemUgPSAoRUNfR1JPVVBfZ2V0X2RlZ3Jl ZSAoR3JvdXApICsgNykgLyA4Ow0KPiA+ID4gKyAgaWYgKCpQdWJsaWNLZXlTaXplIDwgSGFsZlNp emUgKiAyKSB7DQo+ID4gPiArICAgICpQdWJsaWNLZXlTaXplID0gSGFsZlNpemUgKiAyOw0KPiA+ ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICAqUHVi bGljS2V5U2l6ZSA9IEhhbGZTaXplICogMjsNCj4gPiA+ICsNCj4gPiA+ICsgIEVjUG9pbnQgPSBF Q19LRVlfZ2V0MF9wdWJsaWNfa2V5IChFY0tleSk7DQo+ID4gPiArICBpZiAoRWNQb2ludCA9PSBO VUxMKSB7DQo+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4g PiA+ICsgIFJldFZhbCA9IEZBTFNFOw0KPiA+ID4gKyAgQm5YICAgID0gQk5fbmV3ICgpOw0KPiA+ ID4gKyAgQm5ZICAgID0gQk5fbmV3ICgpOw0KPiA+ID4gKyAgaWYgKChCblggPT0gTlVMTCkgfHwg KEJuWSA9PSBOVUxMKSkgew0KPiA+ID4gKyAgICBnb3RvIGZhaWw7DQo+ID4gPiArICB9DQo+ID4g PiArDQo+ID4gPiArICBpZiAoRUNfUE9JTlRfZ2V0X2FmZmluZV9jb29yZGluYXRlcyAoR3JvdXAs IEVjUG9pbnQsIEJuWCwgQm5ZLCBOVUxMKSAhPSAxKSB7DQo+ID4gPiArICAgIGdvdG8gZmFpbDsN Cj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIFhTaXplID0gQk5fbnVtX2J5dGVzIChCblgp Ow0KPiA+ID4gKyAgWVNpemUgPSBCTl9udW1fYnl0ZXMgKEJuWSk7DQo+ID4gPiArICBpZiAoKFhT aXplIDw9IDApIHx8IChZU2l6ZSA8PSAwKSkgew0KPiA+ID4gKyAgICBnb3RvIGZhaWw7DQo+ID4g PiArICB9DQo+ID4gPiArDQo+ID4gPiArICBBU1NFUlQgKChVSU5UTilYU2l6ZSA8PSBIYWxmU2l6 ZSAmJiAoVUlOVE4pWVNpemUgPD0gSGFsZlNpemUpOw0KPiA+ID4gKw0KPiA+ID4gKyAgaWYgKFB1 YmxpY0tleSAhPSBOVUxMKSB7DQo+ID4gPiArICAgIFplcm9NZW0gKFB1YmxpY0tleSwgKlB1Ymxp Y0tleVNpemUpOw0KPiA+ID4gKyAgICBCTl9ibjJiaW4gKEJuWCwgJlB1YmxpY0tleVswICsgSGFs ZlNpemUgLSBYU2l6ZV0pOw0KPiA+ID4gKyAgICBCTl9ibjJiaW4gKEJuWSwgJlB1YmxpY0tleVtI YWxmU2l6ZSArIEhhbGZTaXplIC0gWVNpemVdKTsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ ICsgIFJldFZhbCA9IFRSVUU7DQo+ID4gPiArDQo+ID4gPiArZmFpbDoNCj4gPiA+ICsgIEJOX2Zy ZWUgKEJuWCk7DQo+ID4gPiArICBCTl9mcmVlIChCblkpOw0KPiA+ID4gKyAgcmV0dXJuIFJldFZh bDsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBDb21wdXRlcyBleGNo YW5nZWQgY29tbW9uIGtleS4NCj4gPiA+ICsgIEdpdmVuIHBlZXIncyBwdWJsaWMga2V5IChYLCBZ KSwgdGhpcyBmdW5jdGlvbiBjb21wdXRlcyB0aGUgZXhjaGFuZ2VkIGNvbW1vbiBrZXksDQo+ID4g PiArICBiYXNlZCBvbiBpdHMgb3duIGNvbnRleHQgaW5jbHVkaW5nIHZhbHVlIG9mIGN1cnZlIHBh cmFtZXRlciBhbmQgcmFuZG9tIHNlY3JldC4NCj4gPiA+ICsgIFggaXMgdGhlIGZpcnN0IGhhbGYg b2YgUGVlclB1YmxpYyB3aXRoIHNpemUgYmVpbmcgUGVlclB1YmxpY1NpemUgLyAyLA0KPiA+ID4g KyAgWSBpcyB0aGUgc2Vjb25kIGhhbGYgb2YgUGVlclB1YmxpYyB3aXRoIHNpemUgYmVpbmcgUGVl clB1YmxpY1NpemUgLyAyLg0KPiA+ID4gKyAgSWYgcHVibGljIGtleSBpcyBjb21wcmVzc2VkLCB0 aGUgUGVlclB1YmxpYyB3aWxsIG9ubHkgY29udGFpbiBoYWxmIGtleSAoWCkuDQo+ID4gPiArICBJ ZiBFY0NvbnRleHQgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiArICBJZiBQZWVy UHVibGljIGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gKyAgSWYgUGVlclB1Ymxp Y1NpemUgaXMgMCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiArICBJZiBLZXkgaXMgTlVMTCwg dGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiArICBJZiBLZXlTaXplIGlzIG5vdCBsYXJnZSBlbm91 Z2gsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gKyAgRm9yIFAtMjU2LCB0aGUgUGVlclB1Ymxp Y1NpemUgaXMgNjQuIEZpcnN0IDMyLWJ5dGUgaXMgWCwgU2Vjb25kIDMyLWJ5dGUgaXMgWS4NCj4g PiA+ICsgIEZvciBQLTM4NCwgdGhlIFBlZXJQdWJsaWNTaXplIGlzIDk2LiBGaXJzdCA0OC1ieXRl IGlzIFgsIFNlY29uZCA0OC1ieXRlIGlzIFkuDQo+ID4gPiArICBGb3IgUC01MjEsIHRoZSBQZWVy UHVibGljU2l6ZSBpcyAxMzIuIEZpcnN0IDY2LWJ5dGUgaXMgWCwgU2Vjb25kIDY2LWJ5dGUgaXMg WS4NCj4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgRWNDb250ZXh0ICAgICAgICAgIFBvaW50ZXIg dG8gdGhlIEVDIGNvbnRleHQuDQo+ID4gPiArICBAcGFyYW1baW5dICAgICAgIFBlZXJQdWJsaWMg ICAgICAgICBQb2ludGVyIHRvIHRoZSBwZWVyJ3MgcHVibGljIFgsWS4NCj4gPiA+ICsgIEBwYXJh bVtpbl0gICAgICAgUGVlclB1YmxpY1NpemUgICAgIFNpemUgb2YgcGVlcidzIHB1YmxpYyBYLFkg aW4gYnl0ZXMuDQo+ID4gPiArICBAcGFyYW1baW5dICAgICAgIENvbXByZXNzRmxhZyAgICAgICBG bGFnIG9mIFBlZXJQdWJsaWMgaXMgY29tcHJlc3NlZCBvciBub3QuDQo+ID4gPiArICBAcGFyYW1b b3V0XSAgICAgIEtleSAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBidWZmZXIgdG8gcmVj ZWl2ZSBnZW5lcmF0ZWQga2V5Lg0KPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBLZXlTaXplICAg ICAgICAgICAgT24gaW5wdXQsIHRoZSBzaXplIG9mIEtleSBidWZmZXIgaW4gYnl0ZXMuDQo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRoZSBz aXplIG9mIGRhdGEgcmV0dXJuZWQgaW4gS2V5IGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ICsgIEBy ZXR2YWwgVFJVRSAgIEVDIGV4Y2hhbmdlZCBrZXkgZ2VuZXJhdGlvbiBzdWNjZWVkZWQuDQo+ID4g PiArICBAcmV0dmFsIEZBTFNFICBFQyBleGNoYW5nZWQga2V5IGdlbmVyYXRpb24gZmFpbGVkLg0K PiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgS2V5U2l6ZSBpcyBub3QgbGFyZ2UgZW5vdWdoLg0KPiA+ ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY0RoQ29tcHV0 ZUtleSAoDQo+ID4gPiArICBJTiBPVVQgIFZPSUQgICAgICAgICAqRWNDb250ZXh0LA0KPiA+ID4g KyAgSU4gICAgICBDT05TVCBVSU5UOCAgKlBlZXJQdWJsaWMsDQo+ID4gPiArICBJTiAgICAgIFVJ TlROICAgICAgICBQZWVyUHVibGljU2l6ZSwNCj4gPiA+ICsgIElOICAgICAgQ09OU1QgSU5UMzIg ICpDb21wcmVzc0ZsYWcsDQo+ID4gPiArICBPVVQgICAgIFVJTlQ4ICAgICAgICAqS2V5LA0KPiA+ ID4gKyAgSU4gT1VUICBVSU5UTiAgICAgICAgKktleVNpemUNCj4gPiA+ICsgICkNCj4gPiA+ICt7 DQo+ID4gPiArICBFQ19LRVkgICAgICAgICAgKkVjS2V5Ow0KPiA+ID4gKyAgRUNfS0VZICAgICAg ICAgICpQZWVyRWNLZXk7DQo+ID4gPiArICBDT05TVCBFQ19HUk9VUCAgKkdyb3VwOw0KPiA+ID4g KyAgQk9PTEVBTiAgICAgICAgIFJldFZhbDsNCj4gPiA+ICsgIEJJR05VTSAgICAgICAgICAqQm5Y Ow0KPiA+ID4gKyAgQklHTlVNICAgICAgICAgICpCblk7DQo+ID4gPiArICBFQ19QT0lOVCAgICAg ICAgKlBvaW50Ow0KPiA+ID4gKyAgSU5UMzIgICAgICAgICAgIE9wZW5Tc2xOaWQ7DQo+ID4gPiAr ICBVSU5UTiAgICAgICAgICAgSGFsZlNpemU7DQo+ID4gPiArDQo+ID4gPiArICBpZiAoKEVjQ29u dGV4dCA9PSBOVUxMKSB8fCAoUGVlclB1YmxpYyA9PSBOVUxMKSB8fCAoS2V5U2l6ZSA9PSBOVUxM KSkgew0KPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4g PiArICBpZiAoKEtleSA9PSBOVUxMKSAmJiAoKktleVNpemUgIT0gMCkpIHsNCj4gPiA+ICsgICAg cmV0dXJuIEZBTFNFOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgaWYgKFBlZXJQdWJs aWNTaXplID4gSU5UX01BWCkgew0KPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiArICB9 DQo+ID4gPiArDQo+ID4gPiArICBFY0tleSAgICA9IChFQ19LRVkgKilFY0NvbnRleHQ7DQo+ID4g PiArICBHcm91cCAgICA9IEVDX0tFWV9nZXQwX2dyb3VwIChFY0tleSk7DQo+ID4gPiArICBIYWxm U2l6ZSA9IChFQ19HUk9VUF9nZXRfZGVncmVlIChHcm91cCkgKyA3KSAvIDg7DQo+ID4gPiArICBp ZiAoKENvbXByZXNzRmxhZyA9PSBOVUxMKSAmJiAoUGVlclB1YmxpY1NpemUgIT0gSGFsZlNpemUg KiAyKSkgew0KPiA+ID4gKyAgICByZXR1cm4gRkFMU0U7DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ ID4gPiArICBpZiAoKENvbXByZXNzRmxhZyAhPSBOVUxMKSAmJiAoUGVlclB1YmxpY1NpemUgIT0g SGFsZlNpemUpKSB7DQo+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ICsgIH0NCj4gPiA+ ICsNCj4gPiA+ICsgIGlmICgqS2V5U2l6ZSA8IEhhbGZTaXplKSB7DQo+ID4gPiArICAgICpLZXlT aXplID0gSGFsZlNpemU7DQo+ID4gPiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ICsgIH0NCj4g PiA+ICsNCj4gPiA+ICsgICpLZXlTaXplID0gSGFsZlNpemU7DQo+ID4gPiArDQo+ID4gPiArICBS ZXRWYWwgICAgPSBGQUxTRTsNCj4gPiA+ICsgIFBvaW50ICAgICA9IE5VTEw7DQo+ID4gPiArICBC blggICAgICAgPSBCTl9iaW4yYm4gKFBlZXJQdWJsaWMsIChJTlQzMilIYWxmU2l6ZSwgTlVMTCk7 DQo+ID4gPiArICBCblkgICAgICAgPSBOVUxMOw0KPiA+ID4gKyAgUG9pbnQgICAgID0gRUNfUE9J TlRfbmV3IChHcm91cCk7DQo+ID4gPiArICBQZWVyRWNLZXkgPSBOVUxMOw0KPiA+ID4gKyAgaWYg KChCblggPT0gTlVMTCkgfHwgKFBvaW50ID09IE5VTEwpKSB7DQo+ID4gPiArICAgIGdvdG8gZmFp bDsNCj4gPiA+ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIGlmIChDb21wcmVzc0ZsYWcgPT0gTlVM TCkgew0KPiA+ID4gKyAgICBCblkgPSBCTl9iaW4yYm4gKFBlZXJQdWJsaWMgKyBIYWxmU2l6ZSwg KElOVDMyKUhhbGZTaXplLCBOVUxMKTsNCj4gPiA+ICsgICAgaWYgKEJuWSA9PSBOVUxMKSB7DQo+ ID4gPiArICAgICAgZ290byBmYWlsOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArDQo+ID4gPiArICAg IGlmIChFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3JkaW5hdGVzIChHcm91cCwgUG9pbnQsIEJuWCwg Qm5ZLCBOVUxMKSAhPSAxKSB7DQo+ID4gPiArICAgICAgZ290byBmYWlsOw0KPiA+ID4gKyAgICB9 DQo+ID4gPiArICB9IGVsc2Ugew0KPiA+ID4gKyAgICBpZiAoRUNfUE9JTlRfc2V0X2NvbXByZXNz ZWRfY29vcmRpbmF0ZXMgKEdyb3VwLCBQb2ludCwgQm5YLCAqQ29tcHJlc3NGbGFnLCBOVUxMKSAh PSAxKSB7DQo+ID4gPiArICAgICAgZ290byBmYWlsOw0KPiA+ID4gKyAgICB9DQo+ID4gPiArICB9 DQo+ID4gPiArDQo+ID4gPiArICAvLyBWYWxpZGF0ZSBOSVNUIEVDREggcHVibGljIGtleQ0KPiA+ ID4gKyAgT3BlblNzbE5pZCA9IEVDX0dST1VQX2dldF9jdXJ2ZV9uYW1lIChHcm91cCk7DQo+ID4g PiArICBQZWVyRWNLZXkgID0gRUNfS0VZX25ld19ieV9jdXJ2ZV9uYW1lIChPcGVuU3NsTmlkKTsN Cj4gPiA+ICsgIGlmIChQZWVyRWNLZXkgPT0gTlVMTCkgew0KPiA+ID4gKyAgICBnb3RvIGZhaWw7 DQo+ID4gPiArICB9DQo+ID4gPiArDQo+ID4gPiArICBpZiAoRUNfS0VZX3NldF9wdWJsaWNfa2V5 IChQZWVyRWNLZXksIFBvaW50KSAhPSAxKSB7DQo+ID4gPiArICAgIGdvdG8gZmFpbDsNCj4gPiA+ ICsgIH0NCj4gPiA+ICsNCj4gPiA+ICsgIGlmIChFQ19LRVlfY2hlY2tfa2V5IChQZWVyRWNLZXkp ICE9IDEpIHsNCj4gPiA+ICsgICAgZ290byBmYWlsOw0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ ID4gKyAgaWYgKEVDREhfY29tcHV0ZV9rZXkgKEtleSwgKktleVNpemUsIFBvaW50LCBFY0tleSwg TlVMTCkgPD0gMCkgew0KPiA+ID4gKyAgICBnb3RvIGZhaWw7DQo+ID4gPiArICB9DQo+ID4gPiAr DQo+ID4gPiArICBSZXRWYWwgPSBUUlVFOw0KPiA+ID4gKw0KPiA+ID4gK2ZhaWw6DQo+ID4gPiAr ICBCTl9mcmVlIChCblgpOw0KPiA+ID4gKyAgQk5fZnJlZSAoQm5ZKTsNCj4gPiA+ICsgIEVDX1BP SU5UX2ZyZWUgKFBvaW50KTsNCj4gPiA+ICsgIEVDX0tFWV9mcmVlIChQZWVyRWNLZXkpOw0KPiA+ ID4gKyAgcmV0dXJuIFJldFZhbDsNCj4gPiA+ICt9DQo+ID4gPiBkaWZmIC0tZ2l0IGEvQ3J5cHRv UGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BrL0NyeXB0RWNOdWxsLmMgYi9DcnlwdG9Qa2cvTGli cmFyeS9CYXNlQ3J5cHRMaWIvUGsvQ3J5cHRFY051bGwuYw0KPiA+ID4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gPiA+IGluZGV4IDAwMDAwMDAwMDAuLmQ5ZjEwMDRmNmMNCj4gPiA+IC0tLSAvZGV2 L251bGwNCj4gPiA+ICsrKyBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Qay9Dcnlw dEVjTnVsbC5jDQo+ID4gPiBAQCAtMCwwICsxLDQ5NiBAQA0KPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ ID4gKyAgRWxsaXB0aWMgQ3VydmUgYW5kIEVDREggQVBJIGltcGxlbWVudGF0aW9uIGJhc2VkIG9u IE9wZW5TU0wNCj4gPiA+ICsNCj4gPiA+ICsgIENvcHlyaWdodCAoYykgMjAyMiwgSW50ZWwgQ29y cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gKyAgU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4g PiA+ICsNCj4gPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNlQ3J5cHRMaWIuaD4NCj4gPiA+ICsj aW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4g KyAgSW5pdGlhbGl6ZSBuZXcgb3BhcXVlIEVjR3JvdXAgb2JqZWN0LiBUaGlzIG9iamVjdCByZXBy ZXNlbnRzIGFuIEVDIGN1cnZlIGFuZA0KPiA+ID4gKyAgYW5kIGlzIHVzZWQgZm9yIGNhbGN1bGF0 aW9uIHdpdGhpbiB0aGlzIGdyb3VwLiBUaGlzIG9iamVjdCBzaG91bGQgYmUgZnJlZWQNCj4gPiA+ ICsgIHVzaW5nIEVjR3JvdXBGcmVlKCkgZnVuY3Rpb24uDQo+ID4gPiArDQo+ID4gPiArICBAcGFy YW1baW5dICBDcnlwdG9OaWQgICBJZGVudGlmeWluZyBudW1iZXIgZm9yIHRoZSBFQ0MgY3VydmUg KERlZmluZWQgaW4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2VDcnlwdExp Yi5oKS4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRWNHcm91cCBvYmplY3QgIE9uIHN1Y2Nl c3MuDQo+ID4gPiArICBAcmV0dmFsIE5VTEwgICAgICAgICAgICBPbiBmYWlsdXJlLg0KPiA+ID4g KyoqLw0KPiA+ID4gK1ZPSUQgKg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjR3JvdXBJbml0ICgN Cj4gPiA+ICsgIElOIFVJTlROICBDcnlwdG9OaWQNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4g PiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ICsgIHJldHVybiBOVUxMOw0KPiA+ID4gK30NCj4g PiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEdldCBFQyBjdXJ2ZSBwYXJhbWV0ZXJzLiBXaGls ZSBlbGxpcHRpYyBjdXJ2ZSBlcXVhdGlvbiBpcyBZXjIgbW9kIFAgPSAoWF4zICsgQVggKyBCKSBN b2QgUC4NCj4gPiA+ICsgIFRoaXMgZnVuY3Rpb24gd2lsbCBzZXQgdGhlIHByb3ZpZGVkIEJpZyBO dW1iZXIgb2JqZWN0cyAgdG8gdGhlIGNvcnJlc3BvbmRpbmcNCj4gPiA+ICsgIHZhbHVlcy4gVGhl IGNhbGxlciBuZWVkcyB0byBtYWtlIHN1cmUgYWxsIHRoZSAib3V0IiBCaWdOdW1iZXIgcGFyYW1l dGVycw0KPiA+ID4gKyAgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkLg0KPiA+ID4gKw0KPiA+ID4g KyAgQHBhcmFtW2luXSAgRWNHcm91cCAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiArICBAcGFy YW1bb3V0XSBCblByaW1lICAgIEdyb3VwIHByaW1lIG51bWJlci4NCj4gPiA+ICsgIEBwYXJhbVtv dXRdIEJuQSAgICAgICAgQSBjb2VmZmljaWVudC4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdIEJuQiAg ICAgICAgQiBjb2VmZmljaWVudC4uDQo+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgIEJO IGNvbnRleHQuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3Vj Y2Vzcy4NCj4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiAr KiovDQo+ID4gPiArQk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjR3JvdXBHZXRDdXJ2 ZSAoDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ICsgIE9VVCBWT0lE ICAgICAgICpCblByaW1lLA0KPiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkJuQSwNCj4gPiA+ICsg IE9VVCBWT0lEICAgICAgICpCbkIsDQo+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4g PiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ICsgIHJl dHVybiBGQUxTRTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBHZXQg RUMgZ3JvdXAgb3JkZXIuDQo+ID4gPiArICBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHRoZSBwcm92 aWRlZCBCaWcgTnVtYmVyIG9iamVjdCB0byB0aGUgY29ycmVzcG9uZGluZw0KPiA+ID4gKyAgdmFs dWUuIFRoZSBjYWxsZXIgbmVlZHMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlICJvdXQiIEJpZ051bWJl ciBwYXJhbWV0ZXINCj4gPiA+ICsgIGlzIHByb3Blcmx5IGluaXRpYWxpemVkLg0KPiA+ID4gKw0K PiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ICsg IEBwYXJhbVtvdXRdIEJuT3JkZXIgICBHcm91cCBwcmltZSBudW1iZXIuDQo+ID4gPiArDQo+ID4g PiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ICsgIEByZXR2YWwg RkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiArKiovDQo+ID4gPiArQk9PTEVBTg0KPiA+ ID4gK0VGSUFQSQ0KPiA+ID4gK0VjR3JvdXBHZXRPcmRlciAoDQo+ID4gPiArICBJTiBWT0lEICAg KkVjR3JvdXAsDQo+ID4gPiArICBPVVQgVk9JRCAgKkJuT3JkZXINCj4gPiA+ICsgICkNCj4gPiA+ ICt7DQo+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4g PiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBGcmVlIHByZXZpb3VzbHkgYWxs b2NhdGVkIEVDIGdyb3VwIG9iamVjdCB1c2luZyBFY0dyb3VwSW5pdCgpLg0KPiA+ID4gKw0KPiA+ ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVjdCB0byBmcmVlLg0KPiA+ ID4gKyoqLw0KPiA+ID4gK1ZPSUQNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY0dyb3VwRnJlZSAo DQo+ID4gPiArICBJTiBWT0lEICAqRWNHcm91cA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ ICsgIEluaXRpYWxpemUgbmV3IG9wYXF1ZSBFQyBQb2ludCBvYmplY3QuIFRoaXMgb2JqZWN0IHJl cHJlc2VudHMgYW4gRUMgcG9pbnQNCj4gPiA+ICsgIHdpdGhpbiB0aGUgZ2l2ZW4gRUMgZ3JvdXAg KGN1cnZlKS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVDIEdyb3VwLCBwcm9wZXJs eSBpbml0aWFsaXplZCB1c2luZyBFY0dyb3VwSW5pdCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJl dHZhbCBFQyBQb2ludCBvYmplY3QgIE9uIHN1Y2Nlc3MuDQo+ID4gPiArICBAcmV0dmFsIE5VTEwg ICAgICAgICAgICAgT24gZmFpbHVyZS4NCj4gPiA+ICsqKi8NCj4gPiA+ICtWT0lEICoNCj4gPiA+ ICtFRklBUEkNCj4gPiA+ICtFY1BvaW50SW5pdCAoDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAq RWNHcm91cA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0K PiA+ID4gKyAgcmV0dXJuIE5VTEw7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ ID4gKyAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBFQyBQb2ludCBvYmplY3QgdXNpbmcgRWNQ b2ludEluaXQoKS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICBFQyBQ b2ludCB0byBmcmVlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQ2xlYXIgICAgIFRSVUUgaWZmIHRo ZSBtZW1vcnkgc2hvdWxkIGJlIGNsZWFyZWQuDQo+ID4gPiArKiovDQo+ID4gPiArVk9JRA0KPiA+ ID4gK0VGSUFQSQ0KPiA+ID4gK0VjUG9pbnREZUluaXQgKA0KPiA+ID4gKyAgSU4gVk9JRCAgICAg KkVjUG9pbnQsDQo+ID4gPiArICBJTiBCT09MRUFOICBDbGVhcg0KPiA+ID4gKyAgKQ0KPiA+ID4g K3sNCj4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsv KioNCj4gPiA+ICsgIEdldCBFQyBwb2ludCBhZmZpbmUgKHgseSkgY29vcmRpbmF0ZXMuDQo+ID4g PiArICBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHRoZSBwcm92aWRlZCBCaWcgTnVtYmVyIG9iamVj dHMgdG8gdGhlIGNvcnJlc3BvbmRpbmcNCj4gPiA+ICsgIHZhbHVlcy4gVGhlIGNhbGxlciBuZWVk cyB0byBtYWtlIHN1cmUgYWxsIHRoZSAib3V0IiBCaWdOdW1iZXIgcGFyYW1ldGVycw0KPiA+ID4g KyAgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2lu XSAgRWNHcm91cCAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1baW5dICBFY1Bv aW50ICAgIEVDIHBvaW50IG9iamVjdC4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdIEJuWCAgICAgICAg WCBjb29yZGluYXRlLg0KPiA+ID4gKyAgQHBhcmFtW291dF0gQm5ZICAgICAgICBZIGNvb3JkaW5h dGUuDQo+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQg d2l0aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIFRSVUUg ICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhl cndpc2UuDQo+ID4gPiArKiovDQo+ID4gPiArQk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4g K0VjUG9pbnRHZXRBZmZpbmVDb29yZGluYXRlcyAoDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAq RWNHcm91cCwNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50LA0KPiA+ID4gKyAgT1VU IFZPSUQgICAgICAgKkJuWCwNCj4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpCblksDQo+ID4gPiAr ICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBB U1NFUlQgKEZBTFNFKTsNCj4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ICt9DQo+ID4gPiAr DQo+ID4gPiArLyoqDQo+ID4gPiArICBTZXQgRUMgcG9pbnQgYWZmaW5lICh4LHkpIGNvb3JkaW5h dGVzLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgICBFQyBncm91cCBv YmplY3QuDQo+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgIEVDIHBvaW50IG9iamVjdC4N Cj4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuWCAgICAgICAgWCBjb29yZGluYXRlLg0KPiA+ID4gKyAg QHBhcmFtW2luXSAgQm5ZICAgICAgICBZIGNvb3JkaW5hdGUuDQo+ID4gPiArICBAcGFyYW1baW5d ICBCbkN0eCAgICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aCBCaWdOdW1OZXdDb250ZXh0KCku DQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4g PiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiArKiovDQo+ID4g PiArQk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjUG9pbnRTZXRBZmZpbmVDb29yZGlu YXRlcyAoDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ICsgIElOIFZP SUQgICAgICAgICpFY1BvaW50LA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuWCwNCj4gPiA+ ICsgIElOIENPTlNUIFZPSUQgICpCblksDQo+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgN Cj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ICsg IHJldHVybiBGQUxTRTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBF QyBQb2ludCBhZGRpdGlvbi4gRWNQb2ludFJlc3VsdCA9IEVjUG9pbnRBICsgRWNQb2ludEIuDQo+ ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgICAgICAgIEVDIGdyb3VwIG9i amVjdC4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdIEVjUG9pbnRSZXN1bHQgICAgRUMgcG9pbnQgdG8g aG9sZCB0aGUgcmVzdWx0LiBUaGUgcG9pbnQgc2hvdWxkDQo+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJlIHByb3Blcmx5IGluaXRpYWxpemVkLg0KPiA+ID4gKyAgQHBhcmFt W2luXSAgRWNQb2ludEEgICAgICAgICBFQyBQb2ludC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVj UG9pbnRCICAgICAgICAgRUMgUG9pbnQuDQo+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAg ICAgICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4g PiArDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ICsg IEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiArKiovDQo+ID4gPiArQk9P TEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjUG9pbnRBZGQgKA0KPiA+ID4gKyAgSU4gQ09O U1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiArICBPVVQgVk9JRCAgICAgICAqRWNQb2ludFJlc3Vs dCwNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50QSwNCj4gPiA+ICsgIElOIENPTlNU IFZPSUQgICpFY1BvaW50QiwNCj4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4g KyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gKyAgcmV0dXJu IEZBTFNFOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFZhcmlhYmxl IEVDIHBvaW50IG11bHRpcGxpY2F0aW9uLiBFY1BvaW50UmVzdWx0ID0gRWNQb2ludCAqIEJuUFNj YWxhci4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgICAgICAgRUMg Z3JvdXAgb2JqZWN0Lg0KPiA+ID4gKyAgQHBhcmFtW291dF0gRWNQb2ludFJlc3VsdCAgICBFQyBw b2ludCB0byBob2xkIHRoZSByZXN1bHQuIFRoZSBwb2ludCBzaG91bGQNCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuDQo+ID4gPiAr ICBAcGFyYW1baW5dICBFY1BvaW50ICAgICAgICAgIEVDIFBvaW50Lg0KPiA+ID4gKyAgQHBhcmFt W2luXSAgQm5QU2NhbGFyICAgICAgICBQIFNjYWxhci4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEJu Q3R4ICAgICAgICAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRoIEJpZ051bU5ld0NvbnRleHQo KS4NCj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNzLg0K PiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ICsqKi8NCj4g PiA+ICtCT09MRUFODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRWNQb2ludE11bCAoDQo+ID4gPiAr ICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpFY1Bv aW50UmVzdWx0LA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnQsDQo+ID4gPiArICBJ TiBDT05TVCBWT0lEICAqQm5QU2NhbGFyLA0KPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4 DQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiAr ICByZXR1cm4gRkFMU0U7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAg Q2FsY3VsYXRlIHRoZSBpbnZlcnNlIG9mIHRoZSBzdXBwbGllZCBFQyBwb2ludC4NCj4gPiA+ICsN Cj4gPiA+ICsgIEBwYXJhbVtpbl0gICAgIEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4g PiArICBAcGFyYW1baW4sb3V0XSBFY1BvaW50ICAgRUMgcG9pbnQgdG8gaW52ZXJ0Lg0KPiA+ID4g KyAgQHBhcmFtW2luXSAgICAgQm5DdHggICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aCBCaWdO dW1OZXdDb250ZXh0KCkuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAg T24gc3VjY2Vzcy4NCj4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ ID4gPiArKiovDQo+ID4gPiArQk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjUG9pbnRJ bnZlcnQgKA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiArICBJTiBP VVQgVk9JRCAgICAqRWNQb2ludCwNCj4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gKyAgcmV0 dXJuIEZBTFNFOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIENoZWNr IGlmIHRoZSBzdXBwbGllZCBwb2ludCBpcyBvbiBFQyBjdXJ2ZS4NCj4gPiA+ICsNCj4gPiA+ICsg IEBwYXJhbVtpbl0gIEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1b aW5dICBFY1BvaW50ICAgRUMgcG9pbnQgdG8gY2hlY2suDQo+ID4gPiArICBAcGFyYW1baW5dICBC bkN0eCAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRoIEJpZ051bU5ld0NvbnRleHQoKS4NCj4g PiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBjdXJ2ZS4NCj4gPiA+ICsg IEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiArKiovDQo+ID4gPiArQk9P TEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjUG9pbnRJc09uQ3VydmUgKA0KPiA+ID4gKyAg SU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2lu dCwNCj4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sN Cj4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4g K30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIENoZWNrIGlmIHRoZSBzdXBwbGllZCBw b2ludCBpcyBhdCBpbmZpbml0eS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3Jv dXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgRUMg cG9pbnQgdG8gY2hlY2suDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAg QXQgaW5maW5pdHkuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0K PiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY1BvaW50 SXNBdEluZmluaXR5ICgNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4g KyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnQNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiAr ICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ICt9DQo+ID4g PiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBDaGVjayBpZiBFQyBwb2ludHMgYXJlIGVxdWFsLg0K PiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVjdC4N Cj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnRBICBFQyBwb2ludCBBLg0KPiA+ID4gKyAgQHBh cmFtW2luXSAgRWNQb2ludEIgIEVDIHBvaW50IEIuDQo+ID4gPiArICBAcGFyYW1baW5dICBCbkN0 eCAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRoIEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ ICsNCj4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBBID09IEIuDQo+ID4gPiArICBAcmV0 dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4N Cj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY1BvaW50RXF1YWwgKA0KPiA+ID4gKyAgSU4gQ09OU1Qg Vk9JRCAgKkVjR3JvdXAsDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludEEsDQo+ID4g PiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludEIsDQo+ID4gPiArICBJTiBWT0lEICAgICAgICAq Qm5DdHgNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4g PiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4g PiArICBTZXQgRUMgcG9pbnQgY29tcHJlc3NlZCBjb29yZGluYXRlcy4gUG9pbnRzIGNhbiBiZSBk ZXNjcmliZWQgaW4gdGVybXMgb2YNCj4gPiA+ICsgIHRoZWlyIGNvbXByZXNzZWQgY29vcmRpbmF0 ZXMuIEZvciBhIHBvaW50ICh4LCB5KSwgZm9yIGFueSBnaXZlbiB2YWx1ZSBmb3IgeA0KPiA+ID4g KyAgc3VjaCB0aGF0IHRoZSBwb2ludCBpcyBvbiB0aGUgY3VydmUgdGhlcmUgd2lsbCBvbmx5IGV2 ZXIgYmUgdHdvIHBvc3NpYmxlDQo+ID4gPiArICB2YWx1ZXMgZm9yIHkuIFRoZXJlZm9yZSwgYSBw b2ludCBjYW4gYmUgc2V0IHVzaW5nIHRoaXMgZnVuY3Rpb24gd2hlcmUgQm5YIGlzDQo+ID4gPiAr ICB0aGUgeCBjb29yZGluYXRlIGFuZCBZQml0IGlzIGEgdmFsdWUgMCBvciAxIHRvIGlkZW50aWZ5 IHdoaWNoIG9mIHRoZSB0d28NCj4gPiA+ICsgIHBvc3NpYmxlIHZhbHVlcyBmb3IgeSBzaG91bGQg YmUgdXNlZC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgRUMgZ3Jv dXAgb2JqZWN0Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgICBFQyBQb2ludC4NCj4g PiA+ICsgIEBwYXJhbVtpbl0gIEJuWCAgICAgICAgWCBjb29yZGluYXRlLg0KPiA+ID4gKyAgQHBh cmFtW2luXSAgWUJpdCAgICAgICAwIG9yIDEgdG8gaWRlbnRpZnkgd2hpY2ggWSB2YWx1ZSBpcyB1 c2VkLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICBCTiBjb250ZXh0LCBjcmVhdGVk IHdpdGggQmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBUUlVF ICAgICAgICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3Ro ZXJ3aXNlLg0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ ICtFY1BvaW50U2V0Q29tcHJlc3NlZENvb3JkaW5hdGVzICgNCj4gPiA+ICsgIElOIENPTlNUIFZP SUQgICpFY0dyb3VwLA0KPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkVjUG9pbnQsDQo+ID4gPiAr ICBJTiBDT05TVCBWT0lEICAqQm5YLA0KPiA+ID4gKyAgSU4gVUlOVDggICAgICAgWUJpdCwNCj4g PiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gK30NCj4g PiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEFsbG9jYXRlcyBhbmQgSW5pdGlhbGl6ZXMgb25l IEVsbGlwdGljIEN1cnZlIENvbnRleHQgZm9yIHN1YnNlcXVlbnQgdXNlDQo+ID4gPiArICB3aXRo IHRoZSBOSUQuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBOaWQgY2lwaGVyIE5JRA0K PiA+ID4gKyAgQHJldHVybiAgICAgUG9pbnRlciB0byB0aGUgRWxsaXB0aWMgQ3VydmUgQ29udGV4 dCB0aGF0IGhhcyBiZWVuIGluaXRpYWxpemVkLg0KPiA+ID4gKyAgICAgICAgICAgICAgSWYgdGhl IGFsbG9jYXRpb25zIGZhaWxzLCBFY05ld0J5TmlkKCkgcmV0dXJucyBOVUxMLg0KPiA+ID4gKyoq Lw0KPiA+ID4gK1ZPSUQgKg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjTmV3QnlOaWQgKA0KPiA+ ID4gKyAgSU4gVUlOVE4gIE5pZA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEFTU0VS VCAoRkFMU0UpOw0KPiA+ID4gKyAgcmV0dXJuIE5VTEw7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ ID4gKy8qKg0KPiA+ID4gKyAgUmVsZWFzZSB0aGUgc3BlY2lmaWVkIEVDIGNvbnRleHQuDQo+ID4g PiArDQo+ID4gPiArICBAcGFyYW1baW5dICBFY0NvbnRleHQgIFBvaW50ZXIgdG8gdGhlIEVDIGNv bnRleHQgdG8gYmUgcmVsZWFzZWQuDQo+ID4gPiArKiovDQo+ID4gPiArVk9JRA0KPiA+ID4gK0VG SUFQSQ0KPiA+ID4gK0VjRnJlZSAoDQo+ID4gPiArICBJTiAgVk9JRCAgKkVjQ29udGV4dA0KPiA+ ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gK30NCj4g PiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIEdlbmVyYXRlcyBFQyBrZXkgYW5kIHJldHVybnMg RUMgcHVibGljIGtleSAoWCwgWSksIFBsZWFzZSBub3RlLCB0aGlzIGZ1bmN0aW9uIHVzZXMNCj4g PiA+ICsgIHBzZXVkbyByYW5kb20gbnVtYmVyIGdlbmVyYXRvci4gVGhlIGNhbGxlciBtdXN0IG1h a2Ugc3VyZSBSYW5kb21TZWVkKCkNCj4gPiA+ICsgIGZ1bmN0aW9uIHdhcyBwcm9wZXJseSBjYWxs ZWQgYmVmb3JlLg0KPiA+ID4gKyAgVGhlIEVjIGNvbnRleHQgc2hvdWxkIGJlIGNvcnJlY3RseSBp bml0aWFsaXplZCBieSBFY05ld0J5TmlkLg0KPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiBnZW5lcmF0 ZXMgcmFuZG9tIHNlY3JldCwgYW5kIGNvbXB1dGVzIHRoZSBwdWJsaWMga2V5IChYLCBZKSwgd2hp Y2ggaXMNCj4gPiA+ICsgIHJldHVybmVkIHZpYSBwYXJhbWV0ZXIgUHVibGljLCBQdWJsaWNTaXpl Lg0KPiA+ID4gKyAgWCBpcyB0aGUgZmlyc3QgaGFsZiBvZiBQdWJsaWMgd2l0aCBzaXplIGJlaW5n IFB1YmxpY1NpemUgLyAyLA0KPiA+ID4gKyAgWSBpcyB0aGUgc2Vjb25kIGhhbGYgb2YgUHVibGlj IHdpdGggc2l6ZSBiZWluZyBQdWJsaWNTaXplIC8gMi4NCj4gPiA+ICsgIEVDIGNvbnRleHQgaXMg dXBkYXRlZCBhY2NvcmRpbmdseS4NCj4gPiA+ICsgIElmIHRoZSBQdWJsaWMgYnVmZmVyIGlzIHRv byBzbWFsbCB0byBob2xkIHRoZSBwdWJsaWMgWCwgWSwgRkFMU0UgaXMgcmV0dXJuZWQgYW5kDQo+ ID4gPiArICBQdWJsaWNTaXplIGlzIHNldCB0byB0aGUgcmVxdWlyZWQgYnVmZmVyIHNpemUgdG8g b2J0YWluIHRoZSBwdWJsaWMgWCwgWS4NCj4gPiA+ICsgIEZvciBQLTI1NiwgdGhlIFB1YmxpY1Np emUgaXMgNjQuIEZpcnN0IDMyLWJ5dGUgaXMgWCwgU2Vjb25kIDMyLWJ5dGUgaXMgWS4NCj4gPiA+ ICsgIEZvciBQLTM4NCwgdGhlIFB1YmxpY1NpemUgaXMgOTYuIEZpcnN0IDQ4LWJ5dGUgaXMgWCwg U2Vjb25kIDQ4LWJ5dGUgaXMgWS4NCj4gPiA+ICsgIEZvciBQLTUyMSwgdGhlIFB1YmxpY1NpemUg aXMgMTMyLiBGaXJzdCA2Ni1ieXRlIGlzIFgsIFNlY29uZCA2Ni1ieXRlIGlzIFkuDQo+ID4gPiAr ICBJZiBFY0NvbnRleHQgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiArICBJZiBQ dWJsaWNTaXplIGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gKyAgSWYgUHVibGlj U2l6ZSBpcyBsYXJnZSBlbm91Z2ggYnV0IFB1YmxpYyBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxT RS4NCj4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgRWNDb250ZXh0ICAgICAgUG9pbnRlciB0byB0 aGUgRUMgY29udGV4dC4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdICAgICAgUHVibGljS2V5ICAgICAg UG9pbnRlciB0byB0IGJ1ZmZlciB0byByZWNlaXZlIGdlbmVyYXRlZCBwdWJsaWMgWCxZLg0KPiA+ ID4gKyAgQHBhcmFtW2luLCBvdXRdICBQdWJsaWNLZXlTaXplICBPbiBpbnB1dCwgdGhlIHNpemUg b2YgUHVibGljIGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgc2l6ZSBvZiBkYXRhIHJldHVybmVkIGluIFB1Ymxp YyBidWZmZXIgaW4gYnl0ZXMuDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICBFQyBwdWJsaWMgWCxZ IGdlbmVyYXRpb24gc3VjY2VlZGVkLg0KPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgRUMgcHVibGlj IFgsWSBnZW5lcmF0aW9uIGZhaWxlZC4NCj4gPiA+ICsgIEByZXR2YWwgRkFMU0UgIFB1YmxpY0tl eVNpemUgaXMgbm90IGxhcmdlIGVub3VnaC4NCj4gPiA+ICsqKi8NCj4gPiA+ICtCT09MRUFODQo+ ID4gPiArRUZJQVBJDQo+ID4gPiArRWNHZW5lcmF0ZUtleSAoDQo+ID4gPiArICBJTiBPVVQgIFZP SUQgICAqRWNDb250ZXh0LA0KPiA+ID4gKyAgT1VUICAgICBVSU5UOCAgKlB1YmxpY0tleSwNCj4g PiA+ICsgIElOIE9VVCAgVUlOVE4gICpQdWJsaWNLZXlTaXplDQo+ID4gPiArICApDQo+ID4gPiAr ew0KPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4g PiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgR2V0cyB0aGUgcHVibGljIGtleSBj b21wb25lbnQgZnJvbSB0aGUgZXN0YWJsaXNoZWQgRUMgY29udGV4dC4NCj4gPiA+ICsgIFRoZSBF YyBjb250ZXh0IHNob3VsZCBiZSBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgYnkgRWNOZXdCeU5pZCwg YW5kIHN1Y2Nlc3NmdWxseQ0KPiA+ID4gKyAgZ2VuZXJhdGUga2V5IHBhaXIgZnJvbSBFY0dlbmVy YXRlS2V5KCkuDQo+ID4gPiArICBGb3IgUC0yNTYsIHRoZSBQdWJsaWNTaXplIGlzIDY0LiBGaXJz dCAzMi1ieXRlIGlzIFgsIFNlY29uZCAzMi1ieXRlIGlzIFkuDQo+ID4gPiArICBGb3IgUC0zODQs IHRoZSBQdWJsaWNTaXplIGlzIDk2LiBGaXJzdCA0OC1ieXRlIGlzIFgsIFNlY29uZCA0OC1ieXRl IGlzIFkuDQo+ID4gPiArICBGb3IgUC01MjEsIHRoZSBQdWJsaWNTaXplIGlzIDEzMi4gRmlyc3Qg NjYtYnl0ZSBpcyBYLCBTZWNvbmQgNjYtYnl0ZSBpcyBZLg0KPiA+ID4gKyAgQHBhcmFtW2luLCBv dXRdICBFY0NvbnRleHQgICAgICBQb2ludGVyIHRvIEVDIGNvbnRleHQgYmVpbmcgc2V0Lg0KPiA+ ID4gKyAgQHBhcmFtW291dF0gICAgICBQdWJsaWNLZXkgICAgICBQb2ludGVyIHRvIHQgYnVmZmVy IHRvIHJlY2VpdmUgZ2VuZXJhdGVkIHB1YmxpYyBYLFkuDQo+ID4gPiArICBAcGFyYW1baW4sIG91 dF0gIFB1YmxpY0tleVNpemUgIE9uIGlucHV0LCB0aGUgc2l6ZSBvZiBQdWJsaWMgYnVmZmVyIGlu IGJ5dGVzLg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRw dXQsIHRoZSBzaXplIG9mIGRhdGEgcmV0dXJuZWQgaW4gUHVibGljIGJ1ZmZlciBpbiBieXRlcy4N Cj4gPiA+ICsgIEByZXR2YWwgIFRSVUUgICBFQyBrZXkgY29tcG9uZW50IHdhcyByZXRyaWV2ZWQg c3VjY2Vzc2Z1bGx5Lg0KPiA+ID4gKyAgQHJldHZhbCAgRkFMU0UgIEludmFsaWQgRUMga2V5IGNv bXBvbmVudC4NCj4gPiA+ICsqKi8NCj4gPiA+ICtCT09MRUFODQo+ID4gPiArRUZJQVBJDQo+ID4g PiArRWNHZXRQdWJLZXkgKA0KPiA+ID4gKyAgSU4gT1VUICBWT0lEICAgKkVjQ29udGV4dCwNCj4g PiA+ICsgIE9VVCAgICAgVUlOVDggICpQdWJsaWNLZXksDQo+ID4gPiArICBJTiBPVVQgIFVJTlRO ICAqUHVibGljS2V5U2l6ZQ0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEFTU0VSVCAo RkFMU0UpOw0KPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ ICsvKioNCj4gPiA+ICsgIENvbXB1dGVzIGV4Y2hhbmdlZCBjb21tb24ga2V5Lg0KPiA+ID4gKyAg R2l2ZW4gcGVlcidzIHB1YmxpYyBrZXkgKFgsIFkpLCB0aGlzIGZ1bmN0aW9uIGNvbXB1dGVzIHRo ZSBleGNoYW5nZWQgY29tbW9uIGtleSwNCj4gPiA+ICsgIGJhc2VkIG9uIGl0cyBvd24gY29udGV4 dCBpbmNsdWRpbmcgdmFsdWUgb2YgY3VydmUgcGFyYW1ldGVyIGFuZCByYW5kb20gc2VjcmV0Lg0K PiA+ID4gKyAgWCBpcyB0aGUgZmlyc3QgaGFsZiBvZiBQZWVyUHVibGljIHdpdGggc2l6ZSBiZWlu ZyBQZWVyUHVibGljU2l6ZSAvIDIsDQo+ID4gPiArICBZIGlzIHRoZSBzZWNvbmQgaGFsZiBvZiBQ ZWVyUHVibGljIHdpdGggc2l6ZSBiZWluZyBQZWVyUHVibGljU2l6ZSAvIDIuDQo+ID4gPiArICBJ ZiBFY0NvbnRleHQgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiArICBJZiBQZWVy UHVibGljIGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gKyAgSWYgUGVlclB1Ymxp Y1NpemUgaXMgMCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiArICBJZiBLZXkgaXMgTlVMTCwg dGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiArICBJZiBLZXlTaXplIGlzIG5vdCBsYXJnZSBlbm91 Z2gsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gKyAgRm9yIFAtMjU2LCB0aGUgUGVlclB1Ymxp Y1NpemUgaXMgNjQuIEZpcnN0IDMyLWJ5dGUgaXMgWCwgU2Vjb25kIDMyLWJ5dGUgaXMgWS4NCj4g PiA+ICsgIEZvciBQLTM4NCwgdGhlIFBlZXJQdWJsaWNTaXplIGlzIDk2LiBGaXJzdCA0OC1ieXRl IGlzIFgsIFNlY29uZCA0OC1ieXRlIGlzIFkuDQo+ID4gPiArICBGb3IgUC01MjEsIHRoZSBQZWVy UHVibGljU2l6ZSBpcyAxMzIuIEZpcnN0IDY2LWJ5dGUgaXMgWCwgU2Vjb25kIDY2LWJ5dGUgaXMg WS4NCj4gPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgRWNDb250ZXh0ICAgICAgICAgIFBvaW50ZXIg dG8gdGhlIEVDIGNvbnRleHQuDQo+ID4gPiArICBAcGFyYW1baW5dICAgICAgIFBlZXJQdWJsaWMg ICAgICAgICBQb2ludGVyIHRvIHRoZSBwZWVyJ3MgcHVibGljIFgsWS4NCj4gPiA+ICsgIEBwYXJh bVtpbl0gICAgICAgUGVlclB1YmxpY1NpemUgICAgIFNpemUgb2YgcGVlcidzIHB1YmxpYyBYLFkg aW4gYnl0ZXMuDQo+ID4gPiArICBAcGFyYW1baW5dICAgICAgIENvbXByZXNzRmxhZyAgICAgICBG bGFnIG9mIFBlZXJQdWJsaWMgaXMgY29tcHJlc3NlZCBvciBub3QuDQo+ID4gPiArICBAcGFyYW1b b3V0XSAgICAgIEtleSAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBidWZmZXIgdG8gcmVj ZWl2ZSBnZW5lcmF0ZWQga2V5Lg0KPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBLZXlTaXplICAg ICAgICAgICAgT24gaW5wdXQsIHRoZSBzaXplIG9mIEtleSBidWZmZXIgaW4gYnl0ZXMuDQo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRoZSBz aXplIG9mIGRhdGEgcmV0dXJuZWQgaW4gS2V5IGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ICsgIEBy ZXR2YWwgVFJVRSAgIEVDIGV4Y2hhbmdlZCBrZXkgZ2VuZXJhdGlvbiBzdWNjZWVkZWQuDQo+ID4g PiArICBAcmV0dmFsIEZBTFNFICBFQyBleGNoYW5nZWQga2V5IGdlbmVyYXRpb24gZmFpbGVkLg0K PiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgS2V5U2l6ZSBpcyBub3QgbGFyZ2UgZW5vdWdoLg0KPiA+ ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY0RoQ29tcHV0 ZUtleSAoDQo+ID4gPiArICBJTiBPVVQgIFZPSUQgICAgICAgICAqRWNDb250ZXh0LA0KPiA+ID4g KyAgSU4gICAgICBDT05TVCBVSU5UOCAgKlBlZXJQdWJsaWMsDQo+ID4gPiArICBJTiAgICAgIFVJ TlROICAgICAgICBQZWVyUHVibGljU2l6ZSwNCj4gPiA+ICsgIElOICAgICAgQ09OU1QgSU5UMzIg ICpDb21wcmVzc0ZsYWcsDQo+ID4gPiArICBPVVQgICAgIFVJTlQ4ICAgICAgICAqS2V5LA0KPiA+ ID4gKyAgSU4gT1VUICBVSU5UTiAgICAgICAgKktleVNpemUNCj4gPiA+ICsgICkNCj4gPiA+ICt7 DQo+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ ICt9DQo+ID4gPiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1Nt bUNyeXB0TGliLmluZiBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9TbW1DcnlwdExp Yi5pbmYNCj4gPiA+IGluZGV4IGNlNmE3ODlkZmQuLjRiYzMwNjM0ODUgMTAwNjQ0DQo+ID4gPiAt LS0gYS9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvU21tQ3J5cHRMaWIuaW5mDQo+ID4g PiArKysgYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvU21tQ3J5cHRMaWIuaW5mDQo+ ID4gPiBAQCAtNTksNiArNTksNyBAQA0KPiA+ID4gICAgUGsvQ3J5cHRUc051bGwuYw0KPiA+ID4g ICAgUGsvQ3J5cHRSc2FQc3MuYw0KPiA+ID4gICAgUGsvQ3J5cHRSc2FQc3NTaWduTnVsbC5jDQo+ ID4gPiArICBQay9DcnlwdEVjTnVsbC5jDQo+ID4gPiAgICBQZW0vQ3J5cHRQZW0uYw0KPiA+ID4g ICAgQm4vQ3J5cHRCbk51bGwuYw0KPiA+ID4NCj4gPiA+IGRpZmYgLS1naXQgYS9DcnlwdG9Qa2cv TGlicmFyeS9CYXNlQ3J5cHRMaWJOdWxsL0Jhc2VDcnlwdExpYk51bGwuaW5mDQo+ID4gYi9Dcnlw dG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWJOdWxsL0Jhc2VDcnlwdExpYk51bGwuaW5mDQo+ID4g PiBpbmRleCAzNTRmM2Q4MGFhLi5lMWE1N2VmMDlmIDEwMDY0NA0KPiA+ID4gLS0tIGEvQ3J5cHRv UGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliTnVsbC9CYXNlQ3J5cHRMaWJOdWxsLmluZg0KPiA+ID4g KysrIGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliTnVsbC9CYXNlQ3J5cHRMaWJOdWxs LmluZg0KPiA+ID4gQEAgLTQ5LDYgKzQ5LDcgQEANCj4gPiA+ICAgIFBrL0NyeXB0WDUwOU51bGwu Yw0KPiA+ID4gICAgUGsvQ3J5cHRBdXRoZW50aWNvZGVOdWxsLmMNCj4gPiA+ICAgIFBrL0NyeXB0 VHNOdWxsLmMNCj4gPiA+ICsgIFBrL0NyeXB0RWNOdWxsLmMNCj4gPiA+ICAgIFBlbS9DcnlwdFBl bU51bGwuYw0KPiA+ID4gICAgUmFuZC9DcnlwdFJhbmROdWxsLmMNCj4gPiA+ICAgIFBrL0NyeXB0 UnNhUHNzTnVsbC5jDQo+ID4gPiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNy eXB0TGliTnVsbC9Qay9DcnlwdEVjTnVsbC5jIGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0 TGliTnVsbC9Qay9DcnlwdEVjTnVsbC5jDQo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ ID4gaW5kZXggMDAwMDAwMDAwMC4uZDlmMTAwNGY2Yw0KPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ ID4gKysrIGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliTnVsbC9Qay9DcnlwdEVjTnVs bC5jDQo+ID4gPiBAQCAtMCwwICsxLDQ5NiBAQA0KPiA+ID4gKy8qKiBAZmlsZQ0KPiA+ID4gKyAg RWxsaXB0aWMgQ3VydmUgYW5kIEVDREggQVBJIGltcGxlbWVudGF0aW9uIGJhc2VkIG9uIE9wZW5T U0wNCj4gPiA+ICsNCj4gPiA+ICsgIENvcHlyaWdodCAoYykgMjAyMiwgSW50ZWwgQ29ycG9yYXRp b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiA+ICsNCj4gPiA+ICsqKi8NCj4gPiA+ICsN Cj4gPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNlQ3J5cHRMaWIuaD4NCj4gPiA+ICsjaW5jbHVk ZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgSW5p dGlhbGl6ZSBuZXcgb3BhcXVlIEVjR3JvdXAgb2JqZWN0LiBUaGlzIG9iamVjdCByZXByZXNlbnRz IGFuIEVDIGN1cnZlIGFuZA0KPiA+ID4gKyAgYW5kIGlzIHVzZWQgZm9yIGNhbGN1bGF0aW9uIHdp dGhpbiB0aGlzIGdyb3VwLiBUaGlzIG9iamVjdCBzaG91bGQgYmUgZnJlZWQNCj4gPiA+ICsgIHVz aW5nIEVjR3JvdXBGcmVlKCkgZnVuY3Rpb24uDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5d ICBDcnlwdG9OaWQgICBJZGVudGlmeWluZyBudW1iZXIgZm9yIHRoZSBFQ0MgY3VydmUgKERlZmlu ZWQgaW4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2VDcnlwdExpYi5oKS4N Cj4gPiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgRWNHcm91cCBvYmplY3QgIE9uIHN1Y2Nlc3MuDQo+ ID4gPiArICBAcmV0dmFsIE5VTEwgICAgICAgICAgICBPbiBmYWlsdXJlLg0KPiA+ID4gKyoqLw0K PiA+ID4gK1ZPSUQgKg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjR3JvdXBJbml0ICgNCj4gPiA+ ICsgIElOIFVJTlROICBDcnlwdG9OaWQNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBB U1NFUlQgKEZBTFNFKTsNCj4gPiA+ICsgIHJldHVybiBOVUxMOw0KPiA+ID4gK30NCj4gPiA+ICsN Cj4gPiA+ICsvKioNCj4gPiA+ICsgIEdldCBFQyBjdXJ2ZSBwYXJhbWV0ZXJzLiBXaGlsZSBlbGxp cHRpYyBjdXJ2ZSBlcXVhdGlvbiBpcyBZXjIgbW9kIFAgPSAoWF4zICsgQVggKyBCKSBNb2QgUC4N Cj4gPiA+ICsgIFRoaXMgZnVuY3Rpb24gd2lsbCBzZXQgdGhlIHByb3ZpZGVkIEJpZyBOdW1iZXIg b2JqZWN0cyAgdG8gdGhlIGNvcnJlc3BvbmRpbmcNCj4gPiA+ICsgIHZhbHVlcy4gVGhlIGNhbGxl ciBuZWVkcyB0byBtYWtlIHN1cmUgYWxsIHRoZSAib3V0IiBCaWdOdW1iZXIgcGFyYW1ldGVycw0K PiA+ID4gKyAgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBh cmFtW2luXSAgRWNHcm91cCAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1bb3V0 XSBCblByaW1lICAgIEdyb3VwIHByaW1lIG51bWJlci4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdIEJu QSAgICAgICAgQSBjb2VmZmljaWVudC4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdIEJuQiAgICAgICAg QiBjb2VmZmljaWVudC4uDQo+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgIEJOIGNvbnRl eHQuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4N Cj4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiArKiovDQo+ ID4gPiArQk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjR3JvdXBHZXRDdXJ2ZSAoDQo+ ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ICsgIE9VVCBWT0lEICAgICAg ICpCblByaW1lLA0KPiA+ID4gKyAgT1VUIFZPSUQgICAgICAgKkJuQSwNCj4gPiA+ICsgIE9VVCBW T0lEICAgICAgICpCbkIsDQo+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ICsg ICkNCj4gPiA+ICt7DQo+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ICsgIHJldHVybiBG QUxTRTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBHZXQgRUMgZ3Jv dXAgb3JkZXIuDQo+ID4gPiArICBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHRoZSBwcm92aWRlZCBC aWcgTnVtYmVyIG9iamVjdCB0byB0aGUgY29ycmVzcG9uZGluZw0KPiA+ID4gKyAgdmFsdWUuIFRo ZSBjYWxsZXIgbmVlZHMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlICJvdXQiIEJpZ051bWJlciBwYXJh bWV0ZXINCj4gPiA+ICsgIGlzIHByb3Blcmx5IGluaXRpYWxpemVkLg0KPiA+ID4gKw0KPiA+ID4g KyAgQHBhcmFtW2luXSAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ICsgIEBwYXJh bVtvdXRdIEJuT3JkZXIgICBHcm91cCBwcmltZSBudW1iZXIuDQo+ID4gPiArDQo+ID4gPiArICBA cmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ICsgIEByZXR2YWwgRkFMU0Ug ICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiArKiovDQo+ID4gPiArQk9PTEVBTg0KPiA+ID4gK0VG SUFQSQ0KPiA+ID4gK0VjR3JvdXBHZXRPcmRlciAoDQo+ID4gPiArICBJTiBWT0lEICAgKkVjR3Jv dXAsDQo+ID4gPiArICBPVVQgVk9JRCAgKkJuT3JkZXINCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ICt9 DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVk IEVDIGdyb3VwIG9iamVjdCB1c2luZyBFY0dyb3VwSW5pdCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAg QHBhcmFtW2luXSAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVjdCB0byBmcmVlLg0KPiA+ID4gKyoq Lw0KPiA+ID4gK1ZPSUQNCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY0dyb3VwRnJlZSAoDQo+ID4g PiArICBJTiBWT0lEICAqRWNHcm91cA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEFT U0VSVCAoRkFMU0UpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIElu aXRpYWxpemUgbmV3IG9wYXF1ZSBFQyBQb2ludCBvYmplY3QuIFRoaXMgb2JqZWN0IHJlcHJlc2Vu dHMgYW4gRUMgcG9pbnQNCj4gPiA+ICsgIHdpdGhpbiB0aGUgZ2l2ZW4gRUMgZ3JvdXAgKGN1cnZl KS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVDIEdyb3VwLCBwcm9wZXJseSBpbml0 aWFsaXplZCB1c2luZyBFY0dyb3VwSW5pdCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBF QyBQb2ludCBvYmplY3QgIE9uIHN1Y2Nlc3MuDQo+ID4gPiArICBAcmV0dmFsIE5VTEwgICAgICAg ICAgICAgT24gZmFpbHVyZS4NCj4gPiA+ICsqKi8NCj4gPiA+ICtWT0lEICoNCj4gPiA+ICtFRklB UEkNCj4gPiA+ICtFY1BvaW50SW5pdCAoDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91 cA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4g KyAgcmV0dXJuIE5VTEw7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAg RnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBFQyBQb2ludCBvYmplY3QgdXNpbmcgRWNQb2ludElu aXQoKS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnQgICBFQyBQb2ludCB0 byBmcmVlLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgQ2xlYXIgICAgIFRSVUUgaWZmIHRoZSBtZW1v cnkgc2hvdWxkIGJlIGNsZWFyZWQuDQo+ID4gPiArKiovDQo+ID4gPiArVk9JRA0KPiA+ID4gK0VG SUFQSQ0KPiA+ID4gK0VjUG9pbnREZUluaXQgKA0KPiA+ID4gKyAgSU4gVk9JRCAgICAgKkVjUG9p bnQsDQo+ID4gPiArICBJTiBCT09MRUFOICBDbGVhcg0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4g PiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4g PiA+ICsgIEdldCBFQyBwb2ludCBhZmZpbmUgKHgseSkgY29vcmRpbmF0ZXMuDQo+ID4gPiArICBU aGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHRoZSBwcm92aWRlZCBCaWcgTnVtYmVyIG9iamVjdHMgdG8g dGhlIGNvcnJlc3BvbmRpbmcNCj4gPiA+ICsgIHZhbHVlcy4gVGhlIGNhbGxlciBuZWVkcyB0byBt YWtlIHN1cmUgYWxsIHRoZSAib3V0IiBCaWdOdW1iZXIgcGFyYW1ldGVycw0KPiA+ID4gKyAgYXJl IHByb3Blcmx5IGluaXRpYWxpemVkLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNH cm91cCAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAg IEVDIHBvaW50IG9iamVjdC4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdIEJuWCAgICAgICAgWCBjb29y ZGluYXRlLg0KPiA+ID4gKyAgQHBhcmFtW291dF0gQm5ZICAgICAgICBZIGNvb3JkaW5hdGUuDQo+ ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aCBC aWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAg ICAgT24gc3VjY2Vzcy4NCj4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2Uu DQo+ID4gPiArKiovDQo+ID4gPiArQk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjUG9p bnRHZXRBZmZpbmVDb29yZGluYXRlcyAoDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91 cCwNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50LA0KPiA+ID4gKyAgT1VUIFZPSUQg ICAgICAgKkJuWCwNCj4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpCblksDQo+ID4gPiArICBJTiBW T0lEICAgICAgICAqQm5DdHgNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBBU1NFUlQg KEZBTFNFKTsNCj4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4g PiArLyoqDQo+ID4gPiArICBTZXQgRUMgcG9pbnQgYWZmaW5lICh4LHkpIGNvb3JkaW5hdGVzLg0K PiA+ID4gKw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgICBFQyBncm91cCBvYmplY3Qu DQo+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgIEVDIHBvaW50IG9iamVjdC4NCj4gPiA+ ICsgIEBwYXJhbVtpbl0gIEJuWCAgICAgICAgWCBjb29yZGluYXRlLg0KPiA+ID4gKyAgQHBhcmFt W2luXSAgQm5ZICAgICAgICBZIGNvb3JkaW5hdGUuDQo+ID4gPiArICBAcGFyYW1baW5dICBCbkN0 eCAgICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4g PiArDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ICsg IEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiArKiovDQo+ID4gPiArQk9P TEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjUG9pbnRTZXRBZmZpbmVDb29yZGluYXRlcyAo DQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ICsgIElOIFZPSUQgICAg ICAgICpFY1BvaW50LA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkJuWCwNCj4gPiA+ICsgIElO IENPTlNUIFZPSUQgICpCblksDQo+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgNCj4gPiA+ ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ICsgIHJldHVy biBGQUxTRTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBFQyBQb2lu dCBhZGRpdGlvbi4gRWNQb2ludFJlc3VsdCA9IEVjUG9pbnRBICsgRWNQb2ludEIuDQo+ID4gPiAr DQo+ID4gPiArICBAcGFyYW1baW5dICBFY0dyb3VwICAgICAgICAgIEVDIGdyb3VwIG9iamVjdC4N Cj4gPiA+ICsgIEBwYXJhbVtvdXRdIEVjUG9pbnRSZXN1bHQgICAgRUMgcG9pbnQgdG8gaG9sZCB0 aGUgcmVzdWx0LiBUaGUgcG9pbnQgc2hvdWxkDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJlIHByb3Blcmx5IGluaXRpYWxpemVkLg0KPiA+ID4gKyAgQHBhcmFtW2luXSAg RWNQb2ludEEgICAgICAgICBFQyBQb2ludC4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnRC ICAgICAgICAgRUMgUG9pbnQuDQo+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAgICAgICAg IEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aCBCaWdOdW1OZXdDb250ZXh0KCkuDQo+ID4gPiArDQo+ ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3VjY2Vzcy4NCj4gPiA+ICsgIEByZXR2 YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiArKiovDQo+ID4gPiArQk9PTEVBTg0K PiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjUG9pbnRBZGQgKA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9J RCAgKkVjR3JvdXAsDQo+ID4gPiArICBPVVQgVk9JRCAgICAgICAqRWNQb2ludFJlc3VsdCwNCj4g PiA+ICsgIElOIENPTlNUIFZPSUQgICpFY1BvaW50QSwNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQg ICpFY1BvaW50QiwNCj4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gKyAgKQ0K PiA+ID4gK3sNCj4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gKyAgcmV0dXJuIEZBTFNF Ow0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIFZhcmlhYmxlIEVDIHBv aW50IG11bHRpcGxpY2F0aW9uLiBFY1BvaW50UmVzdWx0ID0gRWNQb2ludCAqIEJuUFNjYWxhci4N Cj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgICAgICAgRUMgZ3JvdXAg b2JqZWN0Lg0KPiA+ID4gKyAgQHBhcmFtW291dF0gRWNQb2ludFJlc3VsdCAgICBFQyBwb2ludCB0 byBob2xkIHRoZSByZXN1bHQuIFRoZSBwb2ludCBzaG91bGQNCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuDQo+ID4gPiArICBAcGFy YW1baW5dICBFY1BvaW50ICAgICAgICAgIEVDIFBvaW50Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAg Qm5QU2NhbGFyICAgICAgICBQIFNjYWxhci4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEJuQ3R4ICAg ICAgICAgICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRoIEJpZ051bU5ld0NvbnRleHQoKS4NCj4g PiA+ICsNCj4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBzdWNjZXNzLg0KPiA+ID4g KyAgQHJldHZhbCBGQUxTRSAgICAgICAgIE90aGVyd2lzZS4NCj4gPiA+ICsqKi8NCj4gPiA+ICtC T09MRUFODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRWNQb2ludE11bCAoDQo+ID4gPiArICBJTiBD T05TVCBWT0lEICAqRWNHcm91cCwNCj4gPiA+ICsgIE9VVCBWT0lEICAgICAgICpFY1BvaW50UmVz dWx0LA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjUG9pbnQsDQo+ID4gPiArICBJTiBDT05T VCBWT0lEICAqQm5QU2NhbGFyLA0KPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkJuQ3R4DQo+ID4g PiArICApDQo+ID4gPiArew0KPiA+ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiArICByZXR1 cm4gRkFMU0U7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgQ2FsY3Vs YXRlIHRoZSBpbnZlcnNlIG9mIHRoZSBzdXBwbGllZCBFQyBwb2ludC4NCj4gPiA+ICsNCj4gPiA+ ICsgIEBwYXJhbVtpbl0gICAgIEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiArICBA cGFyYW1baW4sb3V0XSBFY1BvaW50ICAgRUMgcG9pbnQgdG8gaW52ZXJ0Lg0KPiA+ID4gKyAgQHBh cmFtW2luXSAgICAgQm5DdHggICAgIEJOIGNvbnRleHQsIGNyZWF0ZWQgd2l0aCBCaWdOdW1OZXdD b250ZXh0KCkuDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgT24gc3Vj Y2Vzcy4NCj4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiAr KiovDQo+ID4gPiArQk9PTEVBTg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjUG9pbnRJbnZlcnQg KA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiArICBJTiBPVVQgVk9J RCAgICAqRWNQb2ludCwNCj4gPiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gKyAg KQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gKyAgcmV0dXJuIEZB TFNFOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIENoZWNrIGlmIHRo ZSBzdXBwbGllZCBwb2ludCBpcyBvbiBFQyBjdXJ2ZS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJh bVtpbl0gIEVjR3JvdXAgICBFQyBncm91cCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1baW5dICBF Y1BvaW50ICAgRUMgcG9pbnQgdG8gY2hlY2suDQo+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAg ICAgQk4gY29udGV4dCwgY3JlYXRlZCB3aXRoIEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ICsN Cj4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBPbiBjdXJ2ZS4NCj4gPiA+ICsgIEByZXR2 YWwgRkFMU0UgICAgICAgICBPdGhlcndpc2UuDQo+ID4gPiArKiovDQo+ID4gPiArQk9PTEVBTg0K PiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjUG9pbnRJc09uQ3VydmUgKA0KPiA+ID4gKyAgSU4gQ09O U1QgVk9JRCAgKkVjR3JvdXAsDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludCwNCj4g PiA+ICsgIElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gK30NCj4g PiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgIENoZWNrIGlmIHRoZSBzdXBwbGllZCBwb2ludCBp cyBhdCBpbmZpbml0eS4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICBF QyBncm91cCBvYmplY3QuDQo+ID4gPiArICBAcGFyYW1baW5dICBFY1BvaW50ICAgRUMgcG9pbnQg dG8gY2hlY2suDQo+ID4gPiArDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgQXQgaW5m aW5pdHkuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4g KyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY1BvaW50SXNBdElu ZmluaXR5ICgNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpFY0dyb3VwLA0KPiA+ID4gKyAgSU4g Q09OU1QgVk9JRCAgKkVjUG9pbnQNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBBU1NF UlQgKEZBTFNFKTsNCj4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ ID4gPiArLyoqDQo+ID4gPiArICBDaGVjayBpZiBFQyBwb2ludHMgYXJlIGVxdWFsLg0KPiA+ID4g Kw0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNHcm91cCAgIEVDIGdyb3VwIG9iamVjdC4NCj4gPiA+ ICsgIEBwYXJhbVtpbl0gIEVjUG9pbnRBICBFQyBwb2ludCBBLg0KPiA+ID4gKyAgQHBhcmFtW2lu XSAgRWNQb2ludEIgIEVDIHBvaW50IEIuDQo+ID4gPiArICBAcGFyYW1baW5dICBCbkN0eCAgICAg Qk4gY29udGV4dCwgY3JlYXRlZCB3aXRoIEJpZ051bU5ld0NvbnRleHQoKS4NCj4gPiA+ICsNCj4g PiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBBID09IEIuDQo+ID4gPiArICBAcmV0dmFsIEZB TFNFICAgICAgICAgT3RoZXJ3aXNlLg0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ ICtFRklBUEkNCj4gPiA+ICtFY1BvaW50RXF1YWwgKA0KPiA+ID4gKyAgSU4gQ09OU1QgVk9JRCAg KkVjR3JvdXAsDQo+ID4gPiArICBJTiBDT05TVCBWT0lEICAqRWNQb2ludEEsDQo+ID4gPiArICBJ TiBDT05TVCBWT0lEICAqRWNQb2ludEIsDQo+ID4gPiArICBJTiBWT0lEICAgICAgICAqQm5DdHgN Cj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4gPiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ICsg IHJldHVybiBGQUxTRTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+ID4gPiArICBT ZXQgRUMgcG9pbnQgY29tcHJlc3NlZCBjb29yZGluYXRlcy4gUG9pbnRzIGNhbiBiZSBkZXNjcmli ZWQgaW4gdGVybXMgb2YNCj4gPiA+ICsgIHRoZWlyIGNvbXByZXNzZWQgY29vcmRpbmF0ZXMuIEZv ciBhIHBvaW50ICh4LCB5KSwgZm9yIGFueSBnaXZlbiB2YWx1ZSBmb3IgeA0KPiA+ID4gKyAgc3Vj aCB0aGF0IHRoZSBwb2ludCBpcyBvbiB0aGUgY3VydmUgdGhlcmUgd2lsbCBvbmx5IGV2ZXIgYmUg dHdvIHBvc3NpYmxlDQo+ID4gPiArICB2YWx1ZXMgZm9yIHkuIFRoZXJlZm9yZSwgYSBwb2ludCBj YW4gYmUgc2V0IHVzaW5nIHRoaXMgZnVuY3Rpb24gd2hlcmUgQm5YIGlzDQo+ID4gPiArICB0aGUg eCBjb29yZGluYXRlIGFuZCBZQml0IGlzIGEgdmFsdWUgMCBvciAxIHRvIGlkZW50aWZ5IHdoaWNo IG9mIHRoZSB0d28NCj4gPiA+ICsgIHBvc3NpYmxlIHZhbHVlcyBmb3IgeSBzaG91bGQgYmUgdXNl ZC4NCj4gPiA+ICsNCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEVjR3JvdXAgICAgRUMgZ3JvdXAgb2Jq ZWN0Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRWNQb2ludCAgICBFQyBQb2ludC4NCj4gPiA+ICsg IEBwYXJhbVtpbl0gIEJuWCAgICAgICAgWCBjb29yZGluYXRlLg0KPiA+ID4gKyAgQHBhcmFtW2lu XSAgWUJpdCAgICAgICAwIG9yIDEgdG8gaWRlbnRpZnkgd2hpY2ggWSB2YWx1ZSBpcyB1c2VkLg0K PiA+ID4gKyAgQHBhcmFtW2luXSAgQm5DdHggICAgICBCTiBjb250ZXh0LCBjcmVhdGVkIHdpdGgg QmlnTnVtTmV3Q29udGV4dCgpLg0KPiA+ID4gKw0KPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAg ICAgIE9uIHN1Y2Nlc3MuDQo+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgT3RoZXJ3aXNl Lg0KPiA+ID4gKyoqLw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY1Bv aW50U2V0Q29tcHJlc3NlZENvb3JkaW5hdGVzICgNCj4gPiA+ICsgIElOIENPTlNUIFZPSUQgICpF Y0dyb3VwLA0KPiA+ID4gKyAgSU4gVk9JRCAgICAgICAgKkVjUG9pbnQsDQo+ID4gPiArICBJTiBD T05TVCBWT0lEICAqQm5YLA0KPiA+ID4gKyAgSU4gVUlOVDggICAgICAgWUJpdCwNCj4gPiA+ICsg IElOIFZPSUQgICAgICAgICpCbkN0eA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEFT U0VSVCAoRkFMU0UpOw0KPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gK30NCj4gPiA+ICsN Cj4gPiA+ICsvKioNCj4gPiA+ICsgIEFsbG9jYXRlcyBhbmQgSW5pdGlhbGl6ZXMgb25lIEVsbGlw dGljIEN1cnZlIENvbnRleHQgZm9yIHN1YnNlcXVlbnQgdXNlDQo+ID4gPiArICB3aXRoIHRoZSBO SUQuDQo+ID4gPiArDQo+ID4gPiArICBAcGFyYW1baW5dICBOaWQgY2lwaGVyIE5JRA0KPiA+ID4g KyAgQHJldHVybiAgICAgUG9pbnRlciB0byB0aGUgRWxsaXB0aWMgQ3VydmUgQ29udGV4dCB0aGF0 IGhhcyBiZWVuIGluaXRpYWxpemVkLg0KPiA+ID4gKyAgICAgICAgICAgICAgSWYgdGhlIGFsbG9j YXRpb25zIGZhaWxzLCBFY05ld0J5TmlkKCkgcmV0dXJucyBOVUxMLg0KPiA+ID4gKyoqLw0KPiA+ ID4gK1ZPSUQgKg0KPiA+ID4gK0VGSUFQSQ0KPiA+ID4gK0VjTmV3QnlOaWQgKA0KPiA+ID4gKyAg SU4gVUlOVE4gIE5pZA0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEFTU0VSVCAoRkFM U0UpOw0KPiA+ID4gKyAgcmV0dXJuIE5VTEw7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gKy8q Kg0KPiA+ID4gKyAgUmVsZWFzZSB0aGUgc3BlY2lmaWVkIEVDIGNvbnRleHQuDQo+ID4gPiArDQo+ ID4gPiArICBAcGFyYW1baW5dICBFY0NvbnRleHQgIFBvaW50ZXIgdG8gdGhlIEVDIGNvbnRleHQg dG8gYmUgcmVsZWFzZWQuDQo+ID4gPiArKiovDQo+ID4gPiArVk9JRA0KPiA+ID4gK0VGSUFQSQ0K PiA+ID4gK0VjRnJlZSAoDQo+ID4gPiArICBJTiAgVk9JRCAgKkVjQ29udGV4dA0KPiA+ID4gKyAg KQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEFTU0VSVCAoRkFMU0UpOw0KPiA+ID4gK30NCj4gPiA+ICsN Cj4gPiA+ICsvKioNCj4gPiA+ICsgIEdlbmVyYXRlcyBFQyBrZXkgYW5kIHJldHVybnMgRUMgcHVi bGljIGtleSAoWCwgWSksIFBsZWFzZSBub3RlLCB0aGlzIGZ1bmN0aW9uIHVzZXMNCj4gPiA+ICsg IHBzZXVkbyByYW5kb20gbnVtYmVyIGdlbmVyYXRvci4gVGhlIGNhbGxlciBtdXN0IG1ha2Ugc3Vy ZSBSYW5kb21TZWVkKCkNCj4gPiA+ICsgIGZ1bmN0aW9uIHdhcyBwcm9wZXJseSBjYWxsZWQgYmVm b3JlLg0KPiA+ID4gKyAgVGhlIEVjIGNvbnRleHQgc2hvdWxkIGJlIGNvcnJlY3RseSBpbml0aWFs aXplZCBieSBFY05ld0J5TmlkLg0KPiA+ID4gKyAgVGhpcyBmdW5jdGlvbiBnZW5lcmF0ZXMgcmFu ZG9tIHNlY3JldCwgYW5kIGNvbXB1dGVzIHRoZSBwdWJsaWMga2V5IChYLCBZKSwgd2hpY2ggaXMN Cj4gPiA+ICsgIHJldHVybmVkIHZpYSBwYXJhbWV0ZXIgUHVibGljLCBQdWJsaWNTaXplLg0KPiA+ ID4gKyAgWCBpcyB0aGUgZmlyc3QgaGFsZiBvZiBQdWJsaWMgd2l0aCBzaXplIGJlaW5nIFB1Ymxp Y1NpemUgLyAyLA0KPiA+ID4gKyAgWSBpcyB0aGUgc2Vjb25kIGhhbGYgb2YgUHVibGljIHdpdGgg c2l6ZSBiZWluZyBQdWJsaWNTaXplIC8gMi4NCj4gPiA+ICsgIEVDIGNvbnRleHQgaXMgdXBkYXRl ZCBhY2NvcmRpbmdseS4NCj4gPiA+ICsgIElmIHRoZSBQdWJsaWMgYnVmZmVyIGlzIHRvbyBzbWFs bCB0byBob2xkIHRoZSBwdWJsaWMgWCwgWSwgRkFMU0UgaXMgcmV0dXJuZWQgYW5kDQo+ID4gPiAr ICBQdWJsaWNTaXplIGlzIHNldCB0byB0aGUgcmVxdWlyZWQgYnVmZmVyIHNpemUgdG8gb2J0YWlu IHRoZSBwdWJsaWMgWCwgWS4NCj4gPiA+ICsgIEZvciBQLTI1NiwgdGhlIFB1YmxpY1NpemUgaXMg NjQuIEZpcnN0IDMyLWJ5dGUgaXMgWCwgU2Vjb25kIDMyLWJ5dGUgaXMgWS4NCj4gPiA+ICsgIEZv ciBQLTM4NCwgdGhlIFB1YmxpY1NpemUgaXMgOTYuIEZpcnN0IDQ4LWJ5dGUgaXMgWCwgU2Vjb25k IDQ4LWJ5dGUgaXMgWS4NCj4gPiA+ICsgIEZvciBQLTUyMSwgdGhlIFB1YmxpY1NpemUgaXMgMTMy LiBGaXJzdCA2Ni1ieXRlIGlzIFgsIFNlY29uZCA2Ni1ieXRlIGlzIFkuDQo+ID4gPiArICBJZiBF Y0NvbnRleHQgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiArICBJZiBQdWJsaWNT aXplIGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gKyAgSWYgUHVibGljU2l6ZSBp cyBsYXJnZSBlbm91Z2ggYnV0IFB1YmxpYyBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4g PiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgRWNDb250ZXh0ICAgICAgUG9pbnRlciB0byB0aGUgRUMg Y29udGV4dC4NCj4gPiA+ICsgIEBwYXJhbVtvdXRdICAgICAgUHVibGljS2V5ICAgICAgUG9pbnRl ciB0byB0IGJ1ZmZlciB0byByZWNlaXZlIGdlbmVyYXRlZCBwdWJsaWMgWCxZLg0KPiA+ID4gKyAg QHBhcmFtW2luLCBvdXRdICBQdWJsaWNLZXlTaXplICBPbiBpbnB1dCwgdGhlIHNpemUgb2YgUHVi bGljIGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgT24gb3V0cHV0LCB0aGUgc2l6ZSBvZiBkYXRhIHJldHVybmVkIGluIFB1YmxpYyBidWZm ZXIgaW4gYnl0ZXMuDQo+ID4gPiArICBAcmV0dmFsIFRSVUUgICBFQyBwdWJsaWMgWCxZIGdlbmVy YXRpb24gc3VjY2VlZGVkLg0KPiA+ID4gKyAgQHJldHZhbCBGQUxTRSAgRUMgcHVibGljIFgsWSBn ZW5lcmF0aW9uIGZhaWxlZC4NCj4gPiA+ICsgIEByZXR2YWwgRkFMU0UgIFB1YmxpY0tleVNpemUg aXMgbm90IGxhcmdlIGVub3VnaC4NCj4gPiA+ICsqKi8NCj4gPiA+ICtCT09MRUFODQo+ID4gPiAr RUZJQVBJDQo+ID4gPiArRWNHZW5lcmF0ZUtleSAoDQo+ID4gPiArICBJTiBPVVQgIFZPSUQgICAq RWNDb250ZXh0LA0KPiA+ID4gKyAgT1VUICAgICBVSU5UOCAgKlB1YmxpY0tleSwNCj4gPiA+ICsg IElOIE9VVCAgVUlOVE4gICpQdWJsaWNLZXlTaXplDQo+ID4gPiArICApDQo+ID4gPiArew0KPiA+ ID4gKyAgQVNTRVJUIChGQUxTRSk7DQo+ID4gPiArICByZXR1cm4gRkFMU0U7DQo+ID4gPiArfQ0K PiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAgR2V0cyB0aGUgcHVibGljIGtleSBjb21wb25l bnQgZnJvbSB0aGUgZXN0YWJsaXNoZWQgRUMgY29udGV4dC4NCj4gPiA+ICsgIFRoZSBFYyBjb250 ZXh0IHNob3VsZCBiZSBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgYnkgRWNOZXdCeU5pZCwgYW5kIHN1 Y2Nlc3NmdWxseQ0KPiA+ID4gKyAgZ2VuZXJhdGUga2V5IHBhaXIgZnJvbSBFY0dlbmVyYXRlS2V5 KCkuDQo+ID4gPiArICBGb3IgUC0yNTYsIHRoZSBQdWJsaWNTaXplIGlzIDY0LiBGaXJzdCAzMi1i eXRlIGlzIFgsIFNlY29uZCAzMi1ieXRlIGlzIFkuDQo+ID4gPiArICBGb3IgUC0zODQsIHRoZSBQ dWJsaWNTaXplIGlzIDk2LiBGaXJzdCA0OC1ieXRlIGlzIFgsIFNlY29uZCA0OC1ieXRlIGlzIFku DQo+ID4gPiArICBGb3IgUC01MjEsIHRoZSBQdWJsaWNTaXplIGlzIDEzMi4gRmlyc3QgNjYtYnl0 ZSBpcyBYLCBTZWNvbmQgNjYtYnl0ZSBpcyBZLg0KPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBF Y0NvbnRleHQgICAgICBQb2ludGVyIHRvIEVDIGNvbnRleHQgYmVpbmcgc2V0Lg0KPiA+ID4gKyAg QHBhcmFtW291dF0gICAgICBQdWJsaWNLZXkgICAgICBQb2ludGVyIHRvIHQgYnVmZmVyIHRvIHJl Y2VpdmUgZ2VuZXJhdGVkIHB1YmxpYyBYLFkuDQo+ID4gPiArICBAcGFyYW1baW4sIG91dF0gIFB1 YmxpY0tleVNpemUgIE9uIGlucHV0LCB0aGUgc2l6ZSBvZiBQdWJsaWMgYnVmZmVyIGluIGJ5dGVz Lg0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRo ZSBzaXplIG9mIGRhdGEgcmV0dXJuZWQgaW4gUHVibGljIGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ ICsgIEByZXR2YWwgIFRSVUUgICBFQyBrZXkgY29tcG9uZW50IHdhcyByZXRyaWV2ZWQgc3VjY2Vz c2Z1bGx5Lg0KPiA+ID4gKyAgQHJldHZhbCAgRkFMU0UgIEludmFsaWQgRUMga2V5IGNvbXBvbmVu dC4NCj4gPiA+ICsqKi8NCj4gPiA+ICtCT09MRUFODQo+ID4gPiArRUZJQVBJDQo+ID4gPiArRWNH ZXRQdWJLZXkgKA0KPiA+ID4gKyAgSU4gT1VUICBWT0lEICAgKkVjQ29udGV4dCwNCj4gPiA+ICsg IE9VVCAgICAgVUlOVDggICpQdWJsaWNLZXksDQo+ID4gPiArICBJTiBPVVQgIFVJTlROICAqUHVi bGljS2V5U2l6ZQ0KPiA+ID4gKyAgKQ0KPiA+ID4gK3sNCj4gPiA+ICsgIEFTU0VSVCAoRkFMU0Up Ow0KPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKioN Cj4gPiA+ICsgIENvbXB1dGVzIGV4Y2hhbmdlZCBjb21tb24ga2V5Lg0KPiA+ID4gKyAgR2l2ZW4g cGVlcidzIHB1YmxpYyBrZXkgKFgsIFkpLCB0aGlzIGZ1bmN0aW9uIGNvbXB1dGVzIHRoZSBleGNo YW5nZWQgY29tbW9uIGtleSwNCj4gPiA+ICsgIGJhc2VkIG9uIGl0cyBvd24gY29udGV4dCBpbmNs dWRpbmcgdmFsdWUgb2YgY3VydmUgcGFyYW1ldGVyIGFuZCByYW5kb20gc2VjcmV0Lg0KPiA+ID4g KyAgWCBpcyB0aGUgZmlyc3QgaGFsZiBvZiBQZWVyUHVibGljIHdpdGggc2l6ZSBiZWluZyBQZWVy UHVibGljU2l6ZSAvIDIsDQo+ID4gPiArICBZIGlzIHRoZSBzZWNvbmQgaGFsZiBvZiBQZWVyUHVi bGljIHdpdGggc2l6ZSBiZWluZyBQZWVyUHVibGljU2l6ZSAvIDIuDQo+ID4gPiArICBJZiBFY0Nv bnRleHQgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiArICBJZiBQZWVyUHVibGlj IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gKyAgSWYgUGVlclB1YmxpY1NpemUg aXMgMCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4gPiArICBJZiBLZXkgaXMgTlVMTCwgdGhlbiBy ZXR1cm4gRkFMU0UuDQo+ID4gPiArICBJZiBLZXlTaXplIGlzIG5vdCBsYXJnZSBlbm91Z2gsIHRo ZW4gcmV0dXJuIEZBTFNFLg0KPiA+ID4gKyAgRm9yIFAtMjU2LCB0aGUgUGVlclB1YmxpY1NpemUg aXMgNjQuIEZpcnN0IDMyLWJ5dGUgaXMgWCwgU2Vjb25kIDMyLWJ5dGUgaXMgWS4NCj4gPiA+ICsg IEZvciBQLTM4NCwgdGhlIFBlZXJQdWJsaWNTaXplIGlzIDk2LiBGaXJzdCA0OC1ieXRlIGlzIFgs IFNlY29uZCA0OC1ieXRlIGlzIFkuDQo+ID4gPiArICBGb3IgUC01MjEsIHRoZSBQZWVyUHVibGlj U2l6ZSBpcyAxMzIuIEZpcnN0IDY2LWJ5dGUgaXMgWCwgU2Vjb25kIDY2LWJ5dGUgaXMgWS4NCj4g PiA+ICsgIEBwYXJhbVtpbiwgb3V0XSAgRWNDb250ZXh0ICAgICAgICAgIFBvaW50ZXIgdG8gdGhl IEVDIGNvbnRleHQuDQo+ID4gPiArICBAcGFyYW1baW5dICAgICAgIFBlZXJQdWJsaWMgICAgICAg ICBQb2ludGVyIHRvIHRoZSBwZWVyJ3MgcHVibGljIFgsWS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0g ICAgICAgUGVlclB1YmxpY1NpemUgICAgIFNpemUgb2YgcGVlcidzIHB1YmxpYyBYLFkgaW4gYnl0 ZXMuDQo+ID4gPiArICBAcGFyYW1baW5dICAgICAgIENvbXByZXNzRmxhZyAgICAgICBGbGFnIG9m IFBlZXJQdWJsaWMgaXMgY29tcHJlc3NlZCBvciBub3QuDQo+ID4gPiArICBAcGFyYW1bb3V0XSAg ICAgIEtleSAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBidWZmZXIgdG8gcmVjZWl2ZSBn ZW5lcmF0ZWQga2V5Lg0KPiA+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBLZXlTaXplICAgICAgICAg ICAgT24gaW5wdXQsIHRoZSBzaXplIG9mIEtleSBidWZmZXIgaW4gYnl0ZXMuDQo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRoZSBzaXplIG9m IGRhdGEgcmV0dXJuZWQgaW4gS2V5IGJ1ZmZlciBpbiBieXRlcy4NCj4gPiA+ICsgIEByZXR2YWwg VFJVRSAgIEVDIGV4Y2hhbmdlZCBrZXkgZ2VuZXJhdGlvbiBzdWNjZWVkZWQuDQo+ID4gPiArICBA cmV0dmFsIEZBTFNFICBFQyBleGNoYW5nZWQga2V5IGdlbmVyYXRpb24gZmFpbGVkLg0KPiA+ID4g KyAgQHJldHZhbCBGQUxTRSAgS2V5U2l6ZSBpcyBub3QgbGFyZ2UgZW5vdWdoLg0KPiA+ID4gKyoq Lw0KPiA+ID4gK0JPT0xFQU4NCj4gPiA+ICtFRklBUEkNCj4gPiA+ICtFY0RoQ29tcHV0ZUtleSAo DQo+ID4gPiArICBJTiBPVVQgIFZPSUQgICAgICAgICAqRWNDb250ZXh0LA0KPiA+ID4gKyAgSU4g ICAgICBDT05TVCBVSU5UOCAgKlBlZXJQdWJsaWMsDQo+ID4gPiArICBJTiAgICAgIFVJTlROICAg ICAgICBQZWVyUHVibGljU2l6ZSwNCj4gPiA+ICsgIElOICAgICAgQ09OU1QgSU5UMzIgICpDb21w cmVzc0ZsYWcsDQo+ID4gPiArICBPVVQgICAgIFVJTlQ4ICAgICAgICAqS2V5LA0KPiA+ID4gKyAg SU4gT1VUICBVSU5UTiAgICAgICAgKktleVNpemUNCj4gPiA+ICsgICkNCj4gPiA+ICt7DQo+ID4g PiArICBBU1NFUlQgKEZBTFNFKTsNCj4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ICt9DQo+ ID4gPiAtLQ0KPiA+ID4gMi4zMS4xLndpbmRvd3MuMQ0KPiA+ID4NCj4gPiA+DQo+ID4gPg0KPiA+ ID4gDQo+ID4gPg0KDQo=