From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id C1706D80254 for ; Thu, 9 Nov 2023 00:26:51 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=HbEM1xIMuOv28VvlDvlSAUp0docxdgSlU68qrMcMczs=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1699489610; v=1; b=hhwMnR1LkseO84ket/D9KskNdpyWlYXf6m/2PXHSNE3gdvqaVDgaKVLc9FMsI7sqYkwbw2UV GRRca279JWH+60BBN5ew4hYvX0ciZjVckmvKIb3qQaWKrFwjmjvrcwLcUI5HYKTRGRf9u3faNDu Ux18jCxmSNdfejFsfbfLCYF0= X-Received: by 127.0.0.2 with SMTP id RTUMYY7687511xWCUXDCscs4; Wed, 08 Nov 2023 16:26:50 -0800 X-Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.8]) by mx.groups.io with SMTP id smtpd.web11.110105.1699489607622400900 for ; Wed, 08 Nov 2023 16:26:48 -0800 X-IronPort-AV: E=McAfee;i="6600,9927,10888"; a="2845988" X-IronPort-AV: E=Sophos;i="6.03,287,1694761200"; d="scan'208";a="2845988" X-Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Nov 2023 16:26:42 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10888"; a="886827623" X-IronPort-AV: E=Sophos;i="6.03,287,1694761200"; d="scan'208";a="886827623" X-Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga004.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 08 Nov 2023 16:26:41 -0800 X-Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Wed, 8 Nov 2023 16:26:41 -0800 X-Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Wed, 8 Nov 2023 16:26:39 -0800 X-Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34 via Frontend Transport; Wed, 8 Nov 2023 16:26:39 -0800 X-Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.168) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.34; Wed, 8 Nov 2023 16:26:38 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=W9hRJyNSOsOn9KYmk9d/hdjLf2EhnLE8BS+FUrl1cTWwLJOOE60SCHo4ntkj74NF8+rn74d1b6CVrVgFvW3hQpN70uG1zRBvzUGttbwyzEXpi9HQXyJgDbGPwSR55qgItQq3YdfcU3zM4CWLKR0N/+17Nu4B2COvPcap1x3lbaDOQPOex0MUUAZh4y2QT7is7a2/0PuL86CqIOBUeMBDwzr+NVT7k5W9p5Ly580P6RKGLKWwfU1Ps+ToXCYzyfQNyqGHHzFEFSgeGYSYb7LhRHui4lCqeRsMEb3Joicxuz2eOm+UXDNhgFw1lSuZG9EyavCFTBdLI39GOKPX0KmFsw== 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=4OAPpYJn/YEufTyWK7ucxG2USyOqiogGUng2afm5x4U=; b=cvwNDNeUEVp1Pcy60wNb3BZeyo3mBEn0/w2HJeIciZI6b54go4pj9TbOwJSH/JFOZ/urgAhYCnF6NJktMNvRa1/zV7ubwNGkbDAck0jYCHqAFe5dz2IZu1I9soQsG9lroy77bl0f7Oq58F+QwwUOwC8HhrX8sni3z/61Cmn8e/LHan1bKoPhGC8JOOHKXDZ5RCwtFKrzhBg1dsz5evCdIblSEL5Bq05/ag4CcId2du20A039embxDi7T2BK6ZawTlxHOYhINfoK6fAEdUj073itxtJ9QH+qlQKVFvsOkB+jrLSYPXsZQRMDR7+pHSa3l9P9t31C0BqmzoxrRInK/jg== 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 X-Received: from MW5PR11MB5906.namprd11.prod.outlook.com (2603:10b6:303:1a0::21) by BN9PR11MB5401.namprd11.prod.outlook.com (2603:10b6:408:11a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.29; Thu, 9 Nov 2023 00:25:52 +0000 X-Received: from MW5PR11MB5906.namprd11.prod.outlook.com ([fe80::5cfe:c156:aa65:75e]) by MW5PR11MB5906.namprd11.prod.outlook.com ([fe80::5cfe:c156:aa65:75e%3]) with mapi id 15.20.6954.029; Thu, 9 Nov 2023 00:25:52 +0000 From: "Yuwei Chen" To: "devel@edk2.groups.io" , "Chen, Christine" , Rebecca Cran , "Gao, Liming" , "Zimmer, Vincent" CC: "Feng, Bob C" , "Yang, Yuting2" , "Hartung, Stephen" , "Narayanan, Bimod" , "He, Haiyang" Subject: Re: [edk2-devel] [PATCH] BaseTools: Python VfrCompiler implementation Thread-Topic: [edk2-devel] [PATCH] BaseTools: Python VfrCompiler implementation Thread-Index: AQHaEkGbCvCnVndSDESFFNMqTOYyyrBwbfEAgACzNKA= Date: Thu, 9 Nov 2023 00:25:51 +0000 Message-ID: References: <20231108124533.1510-1-yuting2.yang@intel.com> <1795A9DEEBB01830.6123@groups.io> In-Reply-To: <1795A9DEEBB01830.6123@groups.io> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MW5PR11MB5906:EE_|BN9PR11MB5401:EE_ x-ms-office365-filtering-correlation-id: 6b3e91f3-f31b-4b17-f31c-08dbe0ba6dae x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: FpqJHYsz1ptZDdHxvj6MeUFW3Zy7un7PryAU1qwNOMMJiSZoEjDw1rBc5QkQir+d667QRrQug72cu48q2mPO1vkjB4g23qOiWSlFghejPJC6224gz3BpYMNyXLKdbPyPW8XBdTDv3lAb3JxAqqEpnaPgHv7imXgN2/DWC2s46US3Hd4HX8jbKYQj0Pr/5SdDDZJR1dn2XUTvsB7IWx/4mq26LDnTmUgaRh8yNOjn53SCbHNgJWdTEApg2qcsPVmbOFcf7Agb7FsGPajb8BKqMT8eHU2lV+5IjrAGS00BdPytamfFB9r4499mwfkCQr2srL1XAvX64gJp0cYz06dg3j52efGh8DZX0TajjBS3qvPl9NtHDqnD4Jnm1+qLXP/Xr7OcTYu74ZK7XTyGbCk44xZg5keNLt+EqUVDgXbSNJ83mXJQX/GLh0bOltwbiyzLVy5+K7U5tiBvo7SS3HwgPCOPYFaXI3gQqyNg08ag67sEKg1iFgNITUJC8J7mmD0zbEivFHExKXPbJS8oF9AXnLTMLCkX3/mnCGzWxgQUJyx90uXmKbNtuu7wU0udA9dNISsvgxR19XxzeHTxBaNwCSKj35UWcVLMxp3Nm9euFrYgOkoRjpTFkDg8/exjn0Xvg5H3Q/DRYVwGV42hvvpzaGrhO0Ftg/M/FQMWBLWktIij8lg14mh+eifVLGzXVZlkSlbpFL7ehbm7feDLQqRr9Q== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SVlDcjhMSU82RVRBYjJYZmM0Y1ozK0txTE40YnBONThUaEE3TXBXcm1SK1RC?= =?utf-8?B?SnlrWEM3dUQwMDdndVNoZms4WkdoS3FHZ2VEL3dwMHlMb1AxbzFBdkVCbFE0?= =?utf-8?B?dFBoZHZ3WUM4TGdTNmlFbHBkbEN3WDVLSWhJcFZQQ3I0S2lFSlFXbkM5SVRN?= =?utf-8?B?VTh2cko2cDZmTExnWUZDam04Q0NkV3NjNFdldy82N0wybGtkMm02cGQrbXQ4?= =?utf-8?B?NG5wWWhHVXFkeFQrT21IcDRFU1puY1lBSy9SNU4vUDNmQXdFWnd3Mmd1TUp0?= =?utf-8?B?SzlDRkpwZjdlSmRZaHdaeisyQVI2YXJLTXJtL2t1cmxhZDRISFNvUUJ0aTBW?= =?utf-8?B?Qzc5Vi9hY213RHNGSURxUkhOZk1kUThQQ2xDNUNoQ3ljd3pyZnJ5TFJRMDI5?= =?utf-8?B?OE5JMXM3UlY4T01yck9lVVlYVjU2RndsZ1NYSmFYRzM1TXV5UEVQczdDZTFy?= =?utf-8?B?VWkya3VkbjhQako1VTlVaWZ0SVRpYVBmblRDTERSTU11eXpEYlJja3d0OVNk?= =?utf-8?B?K2NOZW1DRktlUEZNeXFIVkpMT3dGd1V0ZkRiSDdlM3FFcUZ0Y1MxWGk5dkxy?= =?utf-8?B?UG9ZNTMwWHZ2R3Jkc2FidmNkYmo1Y0RvNlVwamZxVElXbjYzc3BpU3VNN2lU?= =?utf-8?B?ZHZTMUxnemVTQVVkY2Q1Vnh6ekNwUGVQOFhxOXk0MXRjeTZyN21sK1loamMz?= =?utf-8?B?VUxYMTJEZkFLaEduRjAwUHdqRXVYMk1iMHRIV0UzaTl3eEJ2cS9UdEpPcFd1?= =?utf-8?B?bzNXZWsya25HZTJyMHo4MHk0TWdhSmZkbDZ6dzlOeUZENFlwMVhrN24vRXJk?= =?utf-8?B?V0w4S2JXM3ZxeHNZM2tXRTYwbGhNYlQ4RG5xYnRITDJRRkRpb0grT1crTm1j?= =?utf-8?B?OGZRTkwwcm05dDhlRVVKRERjOUNNNFhGMlVqR05tQlZSTlRET2dsRVpWNXo5?= =?utf-8?B?NnA2S0lPQVFQU2ttTGg1bVVEcW1vaUpRUzRFanFHOVBzcGU2SUR0ZFdkNnBS?= =?utf-8?B?TTlNNUJhczFXcUdtZEp4NFRLeHBqMkN1Tm9ubi95cXlNaWRvYzhacWN1UlpL?= =?utf-8?B?WEdXeXU5VlZxNU9jcXF0czRjNGc3TTNJdTVhdTlWWXA5Qm10ME8zemxZczBw?= =?utf-8?B?S1JKem1rR2ZtT3YvRWdIQ20wNlJZQU1kbnl6eVR1WjNiV0VuVWNyVzUvTEN4?= =?utf-8?B?cngxQS8vR1plR3FtWTJib0d3d0VJMzJ3MEJEbnFaWGkybUFyZXpvRUxDNndk?= =?utf-8?B?a0pCNloyVkg4NHA1S1NKbk1CMWd2TG94RTh6UktWOEtVSlNPcTRrek1ZYlk2?= =?utf-8?B?RnRoUkFlMXEzU01xaDVPdmhETU5vejlhejR1TUEwM0ZOVDB1aVBXQzhucGxj?= =?utf-8?B?M1FhQkd3T0pKSTRGdEw2ZGozbXJaeG9UejQ4YWVDdVY3QXlZaER1MkV1TVRG?= =?utf-8?B?Q2JlazZsU3A1a0xqV3A1OVZzdFZrbEM1R0xGeGJ4M0FrYUFmTXRxcElZZENG?= =?utf-8?B?RXIwSDFFMEpZNVJVNXVmazY4VXhucThwdWRMU2IySWhOVnV1eFlraEltVkdm?= =?utf-8?B?WUw1MjdjY2VBZnEwNUtDNVE4cU9tTDlMYkFWQWkvOG0xVTIzL3Vpd1BMY09Q?= =?utf-8?B?dHlIRXEvY3pZRTB6cm5pS0hTOURJakdMek5TQkhWRjRSWDdTek9YVlNnbkhz?= =?utf-8?B?TjJBTkcwYWtOUkZpZTJoMnVKRE1kbFptVFkxdURHeWNPOHZYQmNtdzBjbDJ3?= =?utf-8?B?VGsyWUhtRHVDRGxRUmhyUWhOU1IyY3FjeHJjVVhHQXFsQmtWa1FQVGt4cytO?= =?utf-8?B?YmRMbnhTaVhKdXlGZzNZcTMvRGNLZDM2WE1Fd3pXN1JDVkZVUmcvUnk0QVc0?= =?utf-8?B?K05IN1hzR1RuM2RhS09PRGdGY2F0aVVxdmZScFo5RC8rNkZLM1p4b0pRTHZW?= =?utf-8?B?WGhyeldmdFdTaDBhT085K0theGt2bVBCNkozRndNM3ZZbzg5U0hlUUVQTkFt?= =?utf-8?B?dFhKelJqalNaa3h5aGZrc05zajgvNDdiZjkxVnhDcTRuTlBaUys3MG8xYkJZ?= =?utf-8?B?bzhuTXFId3ZmR3RBbXNUTVM0SDlSckVTKzhET293dEhTbjNEdVFCVVFmeGZ3?= =?utf-8?Q?SKIMcfMdpSAaBMGPN3bqCusho?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW5PR11MB5906.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6b3e91f3-f31b-4b17-f31c-08dbe0ba6dae X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Nov 2023 00:25:51.1505 (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: K2d48zDq05Zf0MOuHEQNWRzyJtBDwGzzXeh9kYHLMUihEyV3V0cEbPY1VsMFf3h1XjlbagY+uW606fkbtdqVng== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN9PR11MB5401 X-OriginatorOrg: intel.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,yuwei.chen@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: xsUQC4Jr90MzwBoIryU4R9ECx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=hhwMnR1L; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}") KyBDYyBCaW1vZCBIYWl5YW5nDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJv bTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYg T2YgWXV3ZWkNCj4gQ2hlbg0KPiBTZW50OiBXZWRuZXNkYXksIE5vdmVtYmVyIDgsIDIwMjMgOTo0 NiBQTQ0KPiBUbzogUmViZWNjYSBDcmFuIDxyZWJlY2NhQGJzZGlvLmNvbT47IEdhbywgTGltaW5n DQo+IDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+OyBaaW1tZXIsIFZpbmNlbnQgPHZpbmNlbnQu emltbWVyQGludGVsLmNvbT4NCj4gQ2M6IEZlbmcsIEJvYiBDIDxib2IuYy5mZW5nQGludGVsLmNv bT47IFlhbmcsIFl1dGluZzINCj4gPHl1dGluZzIueWFuZ0BpbnRlbC5jb20+OyBkZXZlbEBlZGsy Lmdyb3Vwcy5pbzsgSGFydHVuZywgU3RlcGhlbg0KPiA8c3RlcGhlbi5oYXJ0dW5nQGludGVsLmNv bT4NCj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0hdIEJhc2VUb29sczogUHl0aG9u IFZmckNvbXBpbGVyDQo+IGltcGxlbWVudGF0aW9uDQo+IA0KPiBIaSBMaW1pbmcgYW5kIENyYW4s DQo+IA0KPiBDb3VsZCB5b3UgaGVscCBvbiBxdWljayByZXZpZXdpbmcgdGhpcyBuZXcgVmZyQ29t cGlsZXIgcHl0aG9uIHRvb2wsIGl0IGhhcw0KPiB0aGUgc2FtZSBmdW5jdGlvbnMgd2l0aCBvcmln aW4gQyB2ZXJzaW9uIFZmckNvbXBpbGVyLCBtZWFud2hpbGUgaXQgc3VwcG9ydHMNCj4gbW9yZSBu ZXcgZmVhdHVyZXMgc3VjaCBhcyBnZW5lcmF0ZWQgVmZyIGZpbGVzIGNvbmZpZyBpbmZvIGludG8g WWFtbCBmb3JtYXQuDQo+IA0KPiBUaGlzIGZlYXR1cmUgaXMgdXJnZW50IGZvciB1cyB0byB1c2Us IGFuZCB3ZSByZWFsbHkgaG9wZSBpdCBjYW4gYmUgbWVyZ2VkIGludG8NCj4gdGhpcyBzdGFibGUg dGFnLiBUaGlzIHBhdGNoIGlzIGxpbmtlZCB0byB0aGUgZWRrMi1iYXNldG9vbHMgUFI6DQo+IGh0 dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi1iYXNldG9vbHMvcHVsbC8xMDkuIFdlIGxp c3QgYWxsIHRoZSBrbm93bg0KPiBpc3N1ZXMgd2hpY2ggd2lsbCBiZSBlbmhhbmNlZCBpbiB0aGUg UmVhZE1lIGZpbGUuIEFuZCB3aWxsIGVuaGFuY2UgdGhlbSBvbmUNCj4gYnkgb25lIGFmdGVyIHRo ZSBwYXRjaCBtZXJnZWQuDQo+IA0KPiBGb3IgdGhlIGNvZGUgcXVhbGl0eSwgaW4gdGhpcyBwYXRj aCwgdGhlIG5ldyB0b29sIGlzIG5vdCBlbmFibGVkIGluIGJ1aWxkDQo+IHByb2Nlc3MsIGl0IGp1 c3Qgc2F2ZXMgaW4gdGhlIGJhc2V0b29scyBweXRob24gZm9sZGVyLCB3aGljaCB3aWxsIG5vdCBp bmZsdWVuY2UNCj4gdGhlIGN1cnJlbnQgZWRrMiBiZWhhdmlvcnMuIFdlIHdpbGwgZW5hYmxlIGl0 IHdpdGggYSBuZXcgcGF0Y2ggd2hlbg0KPiBldmVyeXRoaW5nIGlzIHJlYWR5Lg0KPiANCj4gTWFu eSB0aGFua3N+DQo+IA0KPiBIaSBWaW5jZW50LCBwbGVhc2UgaGVscCBhZGQgbW9yZSBpbmZvcm1h dGlvbiBpZiBuZWNlc3Nhcnl+IFRoYW5rcyBhIGxvdH4NCj4gDQo+IFRoYW5rcywNCj4gQ2hyaXN0 aW5lDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBZYW5nLCBZdXRp bmcyIDx5dXRpbmcyLnlhbmdAaW50ZWwuY29tPg0KPiA+IFNlbnQ6IFdlZG5lc2RheSwgTm92ZW1i ZXIgOCwgMjAyMyA4OjQ2IFBNDQo+ID4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gQ2M6 IFJlYmVjY2EgQ3JhbiA8cmViZWNjYUBic2Rpby5jb20+OyBHYW8sIExpbWluZw0KPiA+IDxnYW9s aW1pbmdAYnlvc29mdC5jb20uY24+OyBGZW5nLCBCb2IgQyA8Ym9iLmMuZmVuZ0BpbnRlbC5jb20+ OyBDaGVuLA0KPiA+IENocmlzdGluZSA8eXV3ZWkuY2hlbkBpbnRlbC5jb20+DQo+ID4gU3ViamVj dDogW1BBVENIXSBCYXNlVG9vbHM6IFB5dGhvbiBWZnJDb21waWxlciBpbXBsZW1lbnRhdGlvbg0K PiA+DQo+ID4gVGhpcyBweXRob24gVmZyQ29tcGlsZXIgdG9vbCBpcyB0aGUgcHl0aG9uIGltcGxl bWVudGF0aW9uDQo+ID4gb2YgdGhlIGVkazIgVmZyQ29tcGlsZXIgdG9vbCB3aGljaCBDIGltcGxl bWVudGF0aW9uIGxvY2F0ZXMgYXQNCj4gPg0KPiBodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3Jl L2VkazIvdHJlZS9tYXN0ZXIvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbQ0KPiA+IHBpbGUuDQo+ ID4NCj4gPiBUaGlzIHB5dGhvbiBpbXBsZW1lbnRhdGlvbiBub3Qgb25seSBjb3ZlcnMgdGhlIHNh bWUgdXNhZ2UgYXMNCj4gPiB0aGUgQyB2ZXJzaW9uIFZmckNvbXBpbGVyLCBidXQgYWxzbyBleHRl bmRzIHNldmVyYWwgbmV3IGZlYXR1cmVzLg0KPiA+DQo+ID4gQ2M6IFJlYmVjY2EgQ3JhbiA8cmVi ZWNjYUBic2Rpby5jb20+DQo+ID4gQ2M6IExpbWluZyBHYW8gPGdhb2xpbWluZ0BieW9zb2Z0LmNv bS5jbj4NCj4gPiBDYzogQm9iIEZlbmcgPGJvYi5jLmZlbmdAaW50ZWwuY29tPg0KPiA+IFNpZ25l ZC1vZmYtYnk6IFl1dGluZyBZYW5nIDx5dXRpbmcyLnlhbmdAaW50ZWwuY29tPg0KPiA+IFNpZ25l ZC1vZmYtYnk6IFl1d2VpIENoZW4gPHl1d2VpLmNoZW5AaW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ ICAuLi4vU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9JZnJDb21tb24ucHkgICAgfCAgIDEwMCAr DQo+ID4gIC4uLi9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL0lmckNvbXBpbGVyLnB5ICB8ICAg NTg2ICsNCj4gPiAgLi4uL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvSWZyQ3R5cGVzLnB5ICAg IHwgIDE4MTEgKysNCj4gPiAgLi4uL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvSWZyRXJyb3Iu cHkgICAgIHwgICAxNTMgKw0KPiA+ICAuLi4vU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9JZnJG b3JtUGtnLnB5ICAgfCAgMjkzNyArKysNCj4gPiAgLi4uL1B5dGhvbi9WZnJDb21waWxlci9JZnJQ cmVQcm9jZXNzLnB5ICAgICAgIHwgICAyNDUgKw0KPiA+ICAuLi4vU291cmNlL1B5dGhvbi9WZnJD b21waWxlci9JZnJUcmVlLnB5ICAgICAgfCAgMTEzMiArDQo+ID4gIC4uLi9Tb3VyY2UvUHl0aG9u L1ZmckNvbXBpbGVyL0lmclV0aWxpdHkucHkgICB8ICAyMjI2ICsrDQo+ID4gIEJhc2VUb29scy9T b3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1JlYWRtZS5tZCB8ICAgIDY4ICsNCj4gPiAgLi4uL1Nv dXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyU3ludGF4Lmc0ICAgIHwgIDE5MjEgKysNCj4gPiAg Li4uL1B5dGhvbi9WZnJDb21waWxlci9WZnJTeW50YXhMZXhlci5weSAgICAgIHwgIDE3MDggKysN Cj4gPiAgLi4uL1B5dGhvbi9WZnJDb21waWxlci9WZnJTeW50YXhQYXJzZXIucHkgICAgIHwgMjA0 NzUgKysrKysrKysrKysrKysrKw0KPiA+ICAuLi4vUHl0aG9uL1ZmckNvbXBpbGVyL1ZmclN5bnRh eFZpc2l0b3IucHkgICAgfCAgNTUwNCArKysrKw0KPiA+ICAuLi4vU291cmNlL1B5dGhvbi9WZnJD b21waWxlci9fX2luaXRfXy5weSAgICAgfCAgICAgMSArDQo+ID4gIDE0IGZpbGVzIGNoYW5nZWQs IDM4ODY3IGluc2VydGlvbnMoKykNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IEJhc2VUb29scy9T b3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL0lmckNvbW1vbi5weQ0KPiA+ICBjcmVhdGUgbW9kZSAx MDA2NDQgQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvSWZyQ29tcGlsZXIucHkN Cj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IEJhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBp bGVyL0lmckN0eXBlcy5weQ0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgQmFzZVRvb2xzL1NvdXJj ZS9QeXRob24vVmZyQ29tcGlsZXIvSWZyRXJyb3IucHkNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IEJhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL0lmckZvcm1Qa2cucHkNCj4gPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0DQo+IEJhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVy L0lmclByZVByb2Nlc3MucHkNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IEJhc2VUb29scy9Tb3Vy Y2UvUHl0aG9uL1ZmckNvbXBpbGVyL0lmclRyZWUucHkNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IEJhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL0lmclV0aWxpdHkucHkNCj4gPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IEJhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1Jl YWRtZS5tZA0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgQmFzZVRvb2xzL1NvdXJjZS9QeXRob24v VmZyQ29tcGlsZXIvVmZyU3ludGF4Lmc0DQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IEJh c2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1ZmclN5bnRheExleGVyLnB5DQo+ID4g IGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IEJhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBp bGVyL1ZmclN5bnRheFBhcnNlci5weQ0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPiBCYXNl VG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9WZnJTeW50YXhWaXNpdG9yLnB5DQo+ID4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBCYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9f X2luaXRfXy5weQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9u L1ZmckNvbXBpbGVyL0lmckNvbW1vbi5weQ0KPiA+IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24v VmZyQ29tcGlsZXIvSWZyQ29tbW9uLnB5DQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBp bmRleCAwMDAwMDAwMDAwLi43NDI1YWJlOWE5DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBi L0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL0lmckNvbW1vbi5weQ0KPiA+IEBA IC0wLDAgKzEsMTAwIEBADQo+ID4gKyMjIEBmaWxlDQo+ID4NCj4gPiArIyBUaGlzIGZpbGUgaXMg dXNlZCB0byBkZWZpbmUgY29tbW9uIGZ1bnRpb25zLg0KPiA+DQo+ID4gKyMNCj4gPg0KPiA+ICsj IENvcHlyaWdodCAoYykgMjAyMi0sIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLjxCUj4NCj4gPg0KPiA+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1 c2UtUGF0ZW50DQo+ID4NCj4gPiArIyMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtpbXBvcnQgQ29t bW9uLkVka0xvZ2dlciBhcyBFZGtMb2dnZXINCj4gPg0KPiA+ICtmcm9tIFZmckNvbXBpbGVyLklm ckN0eXBlcyBpbXBvcnQgRUZJX0dVSUQNCj4gPg0KPiA+ICtmcm9tIENvbW1vbi5CdWlsZFRvb2xF cnJvciBpbXBvcnQgUEFSQU1FVEVSX0lOVkFMSUQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsjIEVu dW1lcmF0aW9uIG9mIEVGSV9TVEFUVVMuDQo+ID4NCj4gPiArUkVUVVJOX1NVQ0NFU1MgPSBFRklf U1VDQ0VTUyA9IDANCj4gPg0KPiA+ICtFRklfQlVGRkVSX1RPT19TTUFMTCA9IDB4ODAwMDAwMDAw MDAwMDAwMCB8ICg1KQ0KPiA+DQo+ID4gK0VGSV9BQk9SVEVEID0gMHg4MDAwMDAwMDAwMDAwMDAw IHwgKDIxKQ0KPiA+DQo+ID4gK0VGSV9PVVRfT0ZfUkVTT1VSQ0VTID0gMHg4MDAwMDAwMDAwMDAw MDAwIHwgKDkpDQo+ID4NCj4gPiArRUZJX0lOVkFMSURfUEFSQU1FVEVSID0gMHg4MDAwMDAwMDAw MDAwMDAwIHwgKDIpDQo+ID4NCj4gPiArRUZJX05PVF9GT1VORCA9IDB4ODAwMDAwMDAwMDAwMDAw MCB8ICgxNCkNCj4gPg0KPiA+ICtSRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIgPSAweDgwMDAwMDAw MDAwMDAwMDAgfCAoMikNCj4gPg0KPiA+ICtSRVRVUk5fVU5TVVBQT1JURUQgPSAweDgwMDAwMDAw MDAwMDAwMDAgfCAoMykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtBU0NJSV9HVUlEX0JVRkZFUl9J TkRFWF8xID0gOA0KPiA+DQo+ID4gK0FTQ0lJX0dVSURfQlVGRkVSX0lOREVYXzIgPSAxMw0KPiA+ DQo+ID4gK0FTQ0lJX0dVSURfQlVGRkVSX0lOREVYXzMgPSAxOA0KPiA+DQo+ID4gK0FTQ0lJX0dV SURfQlVGRkVSX0lOREVYXzQgPSAyMw0KPiA+DQo+ID4gK0FTQ0lJX0dVSURfQlVGRkVSX01BWF9J TkRFWCA9IDM2DQo+ID4NCj4gPiArR1VJRF9CVUZGRVJfVkFMVUVfTEVOID0gMTENCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtkZWYgRUZJX0VSUk9SKEEpOg0KPiA+DQo+ID4gKyAg ICByZXR1cm4gQSA8IDANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsjIENvbnZl cnRzIGEgc3RyaW5nIHRvIGFuIEVGSV9HVUlELg0KPiA+DQo+ID4gK2RlZiBTdHJpbmdUb0d1aWQo QXNjaWlHdWlkQnVmZmVyOiBzdHIsIEd1aWRCdWZmZXI6IEVGSV9HVUlEKToNCj4gPg0KPiA+ICsg ICAgRGF0YTQgPSBbMF0gKiA4DQo+ID4NCj4gPiArICAgIGlmIEFzY2lpR3VpZEJ1ZmZlciBpcyBO b25lIG9yIEd1aWRCdWZmZXIgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBFRklf SU5WQUxJRF9QQVJBTUVURVINCj4gPg0KPiA+ICsgICAgSW5kZXggPSAwDQo+ID4NCj4gPiArICAg IHdoaWxlIEluZGV4IDwgQVNDSUlfR1VJRF9CVUZGRVJfTUFYX0lOREVYOg0KPiA+DQo+ID4gKyAg ICAgICAgaWYgKA0KPiA+DQo+ID4gKyAgICAgICAgICAgIEluZGV4ID09IEFTQ0lJX0dVSURfQlVG RkVSX0lOREVYXzENCj4gPg0KPiA+ICsgICAgICAgICAgICBvciBJbmRleCA9PSBBU0NJSV9HVUlE X0JVRkZFUl9JTkRFWF8yDQo+ID4NCj4gPiArICAgICAgICAgICAgb3IgSW5kZXggPT0gQVNDSUlf R1VJRF9CVUZGRVJfSU5ERVhfMw0KPiA+DQo+ID4gKyAgICAgICAgICAgIG9yIEluZGV4ID09IEFT Q0lJX0dVSURfQlVGRkVSX0lOREVYXzQNCj4gPg0KPiA+ICsgICAgICAgICk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgQXNjaWlHdWlkQnVmZmVyW0luZGV4XSAhPSAiLSI6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIGJyZWFrDQo+ID4NCj4gPiArICAgICAgICBlbGlmICgNCj4gPg0KPiA+ ICsgICAgICAgICAgICAoQXNjaWlHdWlkQnVmZmVyW0luZGV4XSA+PSAiMCIgYW5kIEFzY2lpR3Vp ZEJ1ZmZlcltJbmRleF0gPD0gIjkiKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIG9yIChBc2NpaUd1 aWRCdWZmZXJbSW5kZXhdID49ICJhIiBhbmQgQXNjaWlHdWlkQnVmZmVyW0luZGV4XSA8PSAiZiIp DQo+ID4NCj4gPiArICAgICAgICAgICAgb3IgKEFzY2lpR3VpZEJ1ZmZlcltJbmRleF0gPj0gIkEi IGFuZCBBc2NpaUd1aWRCdWZmZXJbSW5kZXhdIDw9ICJGIikNCj4gPg0KPiA+ICsgICAgICAgICk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgSW5kZXggKz0gMQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IGNvbnRpbnVlDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGJyZWFrDQo+ID4NCj4gPiArICAgICAgICBJbmRleCArPSAxDQo+ID4NCj4gPiArICAgICAgICBj b250aW51ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBpZiBJbmRleCA8IEFTQ0lJX0dVSURf QlVGRkVSX01BWF9JTkRFWDoNCj4gPg0KPiA+ICsgICAgICAgIEVka0xvZ2dlci5lcnJvcigiVmZy Q29tcGlsZXIiLCBQQVJBTUVURVJfSU5WQUxJRCwgIkludmFsaWQgb3B0aW9uDQo+ID4gdmFsdWUi KQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIEVGSV9BQk9SVEVEDQo+ID4NCj4gPiArICAgIElu ZGV4ID0gR1VJRF9CVUZGRVJfVkFMVUVfTEVODQo+ID4NCj4gPiArICAgIHRyeToNCj4gPg0KPiA+ ICsgICAgICAgIERhdGExID0gaW50KEFzY2lpR3VpZEJ1ZmZlclswOjhdLCAxNikNCj4gPg0KPiA+ ICsgICAgICAgIERhdGEyID0gaW50KEFzY2lpR3VpZEJ1ZmZlcls5OjEzXSwgMTYpDQo+ID4NCj4g PiArICAgICAgICBEYXRhMyA9IGludChBc2NpaUd1aWRCdWZmZXJbMTQ6MThdLCAxNikNCj4gPg0K PiA+ICsgICAgICAgIERhdGE0WzBdID0gaW50KEFzY2lpR3VpZEJ1ZmZlclsxOToyMV0sIDE2KQ0K PiA+DQo+ID4gKyAgICAgICAgRGF0YTRbMV0gPSBpbnQoQXNjaWlHdWlkQnVmZmVyWzIxOjIzXSwg MTYpDQo+ID4NCj4gPiArICAgICAgICBEYXRhNFsyXSA9IGludChBc2NpaUd1aWRCdWZmZXJbMjQ6 MjZdLCAxNikNCj4gPg0KPiA+ICsgICAgICAgIERhdGE0WzNdID0gaW50KEFzY2lpR3VpZEJ1ZmZl clsyNjoyOF0sIDE2KQ0KPiA+DQo+ID4gKyAgICAgICAgRGF0YTRbNF0gPSBpbnQoQXNjaWlHdWlk QnVmZmVyWzI4OjMwXSwgMTYpDQo+ID4NCj4gPiArICAgICAgICBEYXRhNFs1XSA9IGludChBc2Np aUd1aWRCdWZmZXJbMzA6MzJdLCAxNikNCj4gPg0KPiA+ICsgICAgICAgIERhdGE0WzZdID0gaW50 KEFzY2lpR3VpZEJ1ZmZlclszMjozNF0sIDE2KQ0KPiA+DQo+ID4gKyAgICAgICAgRGF0YTRbN10g PSBpbnQoQXNjaWlHdWlkQnVmZmVyWzM0OjM2XSwgMTYpDQo+ID4NCj4gPiArICAgIGV4Y2VwdCBF eGNlcHRpb246DQo+ID4NCj4gPiArICAgICAgICBFZGtMb2dnZXIuZXJyb3IoIlZmckNvbXBpbGVy IiwgUEFSQU1FVEVSX0lOVkFMSUQsICJJbnZhbGlkIERhdGENCj4gPiB2YWx1ZSEiKQ0KPiA+DQo+ ID4gKyAgICAgICAgSW5kZXggPSAwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmVyaWZ5 IHRoZSBjb3JyZWN0IG51bWJlciBvZiBpdGVtcyB3ZXJlIHNjYW5uZWQuDQo+ID4NCj4gPiArICAg IGlmIEluZGV4ICE9IEdVSURfQlVGRkVSX1ZBTFVFX0xFTjoNCj4gPg0KPiA+ICsgICAgICAgIEVk a0xvZ2dlci5lcnJvcigiVmZyQ29tcGlsZXIiLCBQQVJBTUVURVJfSU5WQUxJRCwgIkludmFsaWQg b3B0aW9uDQo+ID4gdmFsdWUiKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIEVGSV9BQk9SVEVE DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgQ29weSB0aGUgZGF0YSBpbnRvIG91ciBHVUlE Lg0KPiA+DQo+ID4gKyAgICBHdWlkQnVmZmVyLkRhdGExID0gRGF0YTENCj4gPg0KPiA+ICsgICAg R3VpZEJ1ZmZlci5EYXRhMiA9IERhdGEyDQo+ID4NCj4gPiArICAgIEd1aWRCdWZmZXIuRGF0YTMg PSBEYXRhMw0KPiA+DQo+ID4gKyAgICBHdWlkQnVmZmVyLkRhdGE0WzBdID0gRGF0YTRbMF0NCj4g Pg0KPiA+ICsgICAgR3VpZEJ1ZmZlci5EYXRhNFsxXSA9IERhdGE0WzFdDQo+ID4NCj4gPiArICAg IEd1aWRCdWZmZXIuRGF0YTRbMl0gPSBEYXRhNFsyXQ0KPiA+DQo+ID4gKyAgICBHdWlkQnVmZmVy LkRhdGE0WzNdID0gRGF0YTRbM10NCj4gPg0KPiA+ICsgICAgR3VpZEJ1ZmZlci5EYXRhNFs0XSA9 IERhdGE0WzRdDQo+ID4NCj4gPiArICAgIEd1aWRCdWZmZXIuRGF0YTRbNV0gPSBEYXRhNFs1XQ0K PiA+DQo+ID4gKyAgICBHdWlkQnVmZmVyLkRhdGE0WzZdID0gRGF0YTRbNl0NCj4gPg0KPiA+ICsg ICAgR3VpZEJ1ZmZlci5EYXRhNFs3XSA9IERhdGE0WzddDQo+ID4NCj4gPiArICAgIFN0YXR1cyA9 IEVGSV9TVUNDRVNTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIHJldHVybiBTdGF0dXMsIEd1 aWRCdWZmZXINCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9W ZnJDb21waWxlci9JZnJDb21waWxlci5weQ0KPiA+IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24v VmZyQ29tcGlsZXIvSWZyQ29tcGlsZXIucHkNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ IGluZGV4IDAwMDAwMDAwMDAuLjE1YmYzZDU5YmENCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysr IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvSWZyQ29tcGlsZXIucHkNCj4g PiBAQCAtMCwwICsxLDU4NiBAQA0KPiA+ICsjIyBAZmlsZQ0KPiA+DQo+ID4gKyMgRXh0ZW50ZWQg UHl0aG9uIFZmckNvbXBpbGVyIFRvb2wuDQo+ID4NCj4gPiArIw0KPiA+DQo+ID4gKyMgQ29weXJp Z2h0IChjKSAyMDIyLSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJS Pg0KPiA+DQo+ID4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRl bnQNCj4gPg0KPiA+ICsjIw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2ltcG9ydCBvcw0KPiA+DQo+ ID4gK2ltcG9ydCBzeXMNCj4gPg0KPiA+ICtpbXBvcnQgYXJncGFyc2UNCj4gPg0KPiA+ICtpbXBv cnQgQ29tbW9uLkVka0xvZ2dlciBhcyBFZGtMb2dnZXINCj4gPg0KPiA+ICtmcm9tIHBhdGhsaWIg aW1wb3J0IFBhdGgNCj4gPg0KPiA+ICtmcm9tIGFudGxyNCBpbXBvcnQgKg0KPiA+DQo+ID4gK2Zy b20gZW51bSBpbXBvcnQgRW51bQ0KPiA+DQo+ID4gK2Zyb20gQ29tbW9uLkJ1aWxkVG9vbEVycm9y IGltcG9ydCAqDQo+ID4NCj4gPiArZnJvbSBWZnJDb21waWxlci5WZnJTeW50YXhQYXJzZXIgaW1w b3J0IFZmclN5bnRheFBhcnNlcg0KPiA+DQo+ID4gK2Zyb20gVmZyQ29tcGlsZXIuVmZyU3ludGF4 VmlzaXRvciBpbXBvcnQgVmZyU3ludGF4VmlzaXRvcg0KPiA+DQo+ID4gK2Zyb20gVmZyQ29tcGls ZXIuVmZyU3ludGF4TGV4ZXIgaW1wb3J0IFZmclN5bnRheExleGVyDQo+ID4NCj4gPiArZnJvbSBW ZnJDb21waWxlci5JZnJDb21tb24gaW1wb3J0IEVGSV9TVUNDRVNTLCBFRklfRVJST1IsDQo+IFN0 cmluZ1RvR3VpZA0KPiA+DQo+ID4gK2Zyb20gVmZyQ29tcGlsZXIuSWZyVHJlZSBpbXBvcnQgSWZy VHJlZU5vZGUsIElmclRyZWUsDQo+ID4gVkZSX0NPTVBJTEVSX1ZFUlNJT04sIEJVSUxEX1ZFUlNJ T04NCj4gPg0KPiA+ICtmcm9tIFZmckNvbXBpbGVyLklmclByZVByb2Nlc3MgaW1wb3J0IE9wdGlv bnMsIFByZVByb2Nlc3NEQg0KPiA+DQo+ID4gK2Zyb20gVmZyQ29tcGlsZXIuSWZyVXRpbGl0eSBp bXBvcnQgZ1ZmclN0cmluZ0RCDQo+ID4NCj4gPiArZnJvbSBWZnJDb21waWxlci5JZnJGb3JtUGtn IGltcG9ydCAoDQo+ID4NCj4gPiArICAgIGdGb3JtUGtnLA0KPiA+DQo+ID4gKyAgICBnVmZyVmFy RGF0YVR5cGVEQiwNCj4gPg0KPiA+ICsgICAgZ1ZmckRlZmF1bHRTdG9yZSwNCj4gPg0KPiA+ICsg ICAgZ1ZmckRhdGFTdG9yYWdlLA0KPiA+DQo+ID4gKyAgICBnSWZyRm9ybUlkLA0KPiA+DQo+ID4g KykNCj4gPg0KPiA+ICtmcm9tIFZmckNvbXBpbGVyLklmckVycm9yIGltcG9ydCBnVmZyRXJyb3JI YW5kbGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBDT01QSUxFUl9S VU5fU1RBVFVTKEVudW0pOg0KPiA+DQo+ID4gKyAgICBTVEFUVVNfU1RBUlRFRCA9IDANCj4gPg0K PiA+ICsgICAgU1RBVFVTX0lOSVRJQUxJWkVEID0gMQ0KPiA+DQo+ID4gKyAgICBTVEFUVVNfVkZS X1BSRVBST0NFU1NFRCA9IDINCj4gPg0KPiA+ICsgICAgU1RBVFVTX1ZGUl9DT01QSUxFRUQgPSAz DQo+ID4NCj4gPiArICAgIFNUQVRVU19WRlJfR0VOQklOQVJZID0gNA0KPiA+DQo+ID4gKyAgICBT VEFUVVNfWUFNTF9HRU5FUkFURUQgPSA1DQo+ID4NCj4gPiArICAgIFNUQVRVU19ZQU1MX1BSRVBS T0NFU1NFRCA9IDYNCj4gPg0KPiA+ICsgICAgU1RBVFVTX1lBTUxfQ09NUElMRUQgPSA3DQo+ID4N Cj4gPiArICAgIFNUQVRVU19ZQU1MX0RMVF9DT05TVU1FRCA9IDgNCj4gPg0KPiA+ICsgICAgU1RB VFVTX1lBTUxfR0VOQklOQVJZID0gOQ0KPiA+DQo+ID4gKyAgICBTVEFUVVNfRklOSVNIRUQgPSAx MA0KPiA+DQo+ID4gKyAgICBTVEFUVVNfRkFJTEVEID0gMTENCj4gPg0KPiA+ICsgICAgU1RBVFVT X0RFQUQgPSAxMg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyIiIg0KPiA+DQo+ ID4gKyBUaGlzIGlzIGhvdyB3ZSBpbnZva2UgdGhlIEMgcHJlcHJvY2Vzc29yIG9uIHRoZSBWRlIg c291cmNlIGZpbGUNCj4gPg0KPiA+ICsgdG8gcmVzb2x2ZSAjZGVmaW5lcywgI2luY2x1ZGVzLCBl dGMuIFRvIG1ha2UgQyBzb3VyY2UgZmlsZXMNCj4gPg0KPiA+ICsgc2hhcmVhYmxlIGJldHdlZW4g VkZSIGFuZCBkcml2ZXJzLCBkZWZpbmUgVkZSQ09NUElMRSBzbyB0aGF0DQo+ID4NCj4gPiArICNp ZmRlZnMgY2FuIGJlIHVzZWQgaW4gc2hhcmVkIC5oIGZpbGVzLg0KPiA+DQo+ID4gKyIiIg0KPiA+ DQo+ID4gK1BSRVBST0NFU1NPUl9DT01NQU5EID0gImNsICINCj4gPg0KPiA+ICtQUkVQUk9DRVNT T1JfT1BUSU9OUyA9ICIvbm9sb2dvIC9FIC9UQyAvRFZGUkNPTVBJTEUgIg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyMgU3BlY2lmeSB0aGUgZmlsZW5hbWUgZXh0ZW5zaW9ucyBmb3IgdGhlIGZpbGVz IHdlIGdlbmVyYXRlLg0KPiA+DQo+ID4gK1ZGUl9fRklMRU5BTUVfRVhURU5TSU9OID0gIi52ZnIi DQo+ID4NCj4gPiArVkZSX1BSRVBST0NFU1NfRklMRU5BTUVfRVhURU5TSU9OID0gIi5pIg0KPiA+ DQo+ID4gK1ZGUl9QQUNLQUdFX0ZJTEVOQU1FX0VYVEVOU0lPTiA9ICIuaHBrIg0KPiA+DQo+ID4g K1ZGUl9SRUNPUkRMSVNUX0ZJTEVOQU1FX0VYVEVOU0lPTiA9ICIubHN0Ig0KPiA+DQo+ID4gK1ZG Ul9ZQU1MX0ZJTEVOQU1FX0VYVEVOU0lPTiA9ICIueW1sIg0KPiA+DQo+ID4gK1ZGUl9KU09OX0ZJ TEVOQU1FX0VYVEVOU0lPTiA9ICIuanNvbiINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtXQVJOSU5H X0xPR19MRVZFTCA9IDE1DQo+ID4NCj4gPiArVVRJTElUWV9OQU1FID0gIlZmckNvbXBpbGVyIg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gK3BhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKA0K PiA+DQo+ID4gKyAgICBkZXNjcmlwdGlvbj0iVmZyQ29tcGlsZXIiLA0KPiA+DQo+ID4gKyAgICBl cGlsb2c9ZiJWZnJDb21waWxlIHZlcnNpb24ge1ZGUl9DT01QSUxFUl9WRVJTSU9OfSBcDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkIHtCVUlMRF9WRVJTSU9O fSBDb3B5cmlnaHQgKGMpIDIwMDQtMjAxNiBJbnRlbA0KPiA+IENvcnBvcmF0aW9uLlwNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4i LA0KPiA+DQo+ID4gKykNCj4gPg0KPiA+ICtwYXJzZXIuYWRkX2FyZ3VtZW50KCJJbnB1dEZpbGVO YW1lIiwgaGVscD0iSW5wdXQgc291cmNlIGZpbGUgbmFtZSIpDQo+ID4NCj4gPiArcGFyc2VyLmFk ZF9hcmd1bWVudCgNCj4gPg0KPiA+ICsgICAgIi0tdmZyIiwgZGVzdD0iTGFudWNoVmZyQ29tcGls ZXIiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJsYW51Y2gNCj4gPiBWZnJDb21waWxlciIN Cj4gPg0KPiA+ICspDQo+ID4NCj4gPiArcGFyc2VyLmFkZF9hcmd1bWVudCgNCj4gPg0KPiA+ICsg ICAgIi0tdmVyc2lvbiIsDQo+ID4NCj4gPiArICAgIGFjdGlvbj0idmVyc2lvbiIsDQo+ID4NCj4g PiArICAgIHZlcnNpb249ZiJWZnJDb21waWxlIHZlcnNpb24ge1ZGUl9DT01QSUxFUl9WRVJTSU9O fSBCdWlsZA0KPiA+IHtCVUlMRF9WRVJTSU9OfSIsDQo+ID4NCj4gPiArICAgIGhlbHA9InByaW50 cyB2ZXJzaW9uIGluZm8iLA0KPiA+DQo+ID4gKykNCj4gPg0KPiA+ICtwYXJzZXIuYWRkX2FyZ3Vt ZW50KCItbCIsIGRlc3Q9IkNyZWF0ZVJlY29yZExpc3RGaWxlIiwgaGVscD0iY3JlYXRlIGFuDQo+ ID4gb3V0cHV0IElGUiBsaXN0aW5nIGZpbGUiKQ0KPiA+DQo+ID4gK3BhcnNlci5hZGRfYXJndW1l bnQoIi1jIiwgZGVzdD0iQ3JlYXRlWWFtbEZpbGUiLCBoZWxwPSJjcmVhdGUgWWFtbCBmaWxlIikN Cj4gPg0KPiA+ICtwYXJzZXIuYWRkX2FyZ3VtZW50KCItaiIsIGRlc3Q9IkNyZWF0ZUpzb25GaWxl IiwgaGVscD0iY3JlYXRlIEpzb24gZmlsZSIpDQo+ID4NCj4gPiArcGFyc2VyLmFkZF9hcmd1bWVu dCgiLXciLCBkZXN0PSJXb3Jrc3BhY2UiLCBoZWxwPSJ3b3Jrc3BhY2UiKQ0KPiA+DQo+ID4gK3Bh cnNlci5hZGRfYXJndW1lbnQoDQo+ID4NCj4gPiArICAgICItbyIsDQo+ID4NCj4gPiArICAgICIt LW91dHB1dC1kaXJlY3RvcnkiLA0KPiA+DQo+ID4gKyAgICAiLW9kIiwNCj4gPg0KPiA+ICsgICAg ZGVzdD0iT3V0cHV0RGlyZWN0b3J5IiwNCj4gPg0KPiA+ICsgICAgaGVscD0iZGVwb3NpdCBhbGwg b3V0cHV0IGZpbGVzIHRvIGRpcmVjdG9yeSBPdXRwdXREaXIsIFwNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIGRlZmF1bHQgaXMgY3VycmVudCBkaXJlY3RvcnkiLA0KPiA+DQo+ID4gKykN Cj4gPg0KPiA+ICtwYXJzZXIuYWRkX2FyZ3VtZW50KA0KPiA+DQo+ID4gKyAgICAiLW9vIiwNCj4g Pg0KPiA+ICsgICAgIi0tb2xkLW91dHB1dC1kaXJlY3RvcnkiLA0KPiA+DQo+ID4gKyAgICAiLW9v ZCIsDQo+ID4NCj4gPiArICAgIGRlc3Q9Ik9sZE91dHB1dERpcmVjdG9yeSIsDQo+ID4NCj4gPiAr ICAgIGhlbHA9IkZvcm1lciBkaXJlY3RvcnkgT3V0cHV0RGlyIG9mIG91dHB1dCBmaWxlcywgXA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBpcyBjdXJyZW50IGRpcmVjdG9y eSIsDQo+ID4NCj4gPiArKQ0KPiA+DQo+ID4gK3BhcnNlci5hZGRfYXJndW1lbnQoDQo+ID4NCj4g PiArICAgICItYiIsDQo+ID4NCj4gPiArICAgICItLWNyZWF0ZS1pZnItcGFja2FnZSIsDQo+ID4N Cj4gPiArICAgICItaWJpbiIsDQo+ID4NCj4gPiArICAgIGRlc3Q9IkNyZWF0ZUlmclBrZ0ZpbGUi LA0KPiA+DQo+ID4gKyAgICBoZWxwPSJjcmVhdGUgYW4gSUZSIEhJSSBwYWNrIGZpbGUiLA0KPiA+ DQo+ID4gKykNCj4gPg0KPiA+ICtwYXJzZXIuYWRkX2FyZ3VtZW50KA0KPiA+DQo+ID4gKyAgICAi LW4iLA0KPiA+DQo+ID4gKyAgICAiLS1uby1wcmUtcHJvY2Vzc2luZyIsDQo+ID4NCj4gPiArICAg ICItbm9wcCIsDQo+ID4NCj4gPiArICAgIGRlc3Q9IlNraXBDUHJlcHJvY2Vzc29yIiwNCj4gPg0K PiA+ICsgICAgaGVscD0iZG8gbm90IHByZXByb2Nlc3NpbmcgaW5wdXQgZmlsZSIsDQo+ID4NCj4g PiArKQ0KPiA+DQo+ID4gK3BhcnNlci5hZGRfYXJndW1lbnQoDQo+ID4NCj4gPiArICAgICItZiIs DQo+ID4NCj4gPiArICAgICItLXByZS1wcm9jZXNzaW5nLWZsYWciLA0KPiA+DQo+ID4gKyAgICAi LXBwZmxhZyIsDQo+ID4NCj4gPiArICAgIGRlc3Q9IkNQcmVwcm9jZXNzb3JPcHRpb25zIiwNCj4g Pg0KPiA+ICsgICAgaGVscD0iQy1wcmVwcm9jZXNzb3IgYXJndW1lbnQiLA0KPiA+DQo+ID4gKykg ICMNCj4gPg0KPiA+ICtwYXJzZXIuYWRkX2FyZ3VtZW50KA0KPiA+DQo+ID4gKyAgICAiLXMiLCAi LS1zdHJpbmctZGIiLCBkZXN0PSJTdHJpbmdGaWxlTmFtZSIsIGhlbHA9ImlucHV0IHVuaSBzdHJp bmcgcGFja2FnZQ0KPiA+IGZpbGUiDQo+ID4NCj4gPiArKQ0KPiA+DQo+ID4gK3BhcnNlci5hZGRf YXJndW1lbnQoDQo+ID4NCj4gPiArICAgICItZyIsDQo+ID4NCj4gPiArICAgICItLWd1aWQiLA0K PiA+DQo+ID4gKyAgICBkZXN0PSJPdmVycmlkZUNsYXNzR3VpZCIsDQo+ID4NCj4gPiArICAgIGhl bHA9Im92ZXJyaWRlIGNsYXNzIGd1aWQgaW5wdXQsXA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgZm9ybWF0IGlzIHh4eHh4eHh4LXh4eHgteHh4eC14eHh4LXh4eHh4eHh4eHh4eCIsDQo+ ID4NCj4gPiArKQ0KPiA+DQo+ID4gK3BhcnNlci5hZGRfYXJndW1lbnQoDQo+ID4NCj4gPiArICAg ICItd2FlIiwgIi0td2FybmluZy1hcy1lcnJvciIsIGRlc3Q9Ildhcm5pbmdBc0Vycm9yIiwgaGVs cD0idHJlYXQNCj4gd2FybmluZw0KPiA+IGFzIGFuIGVycm9yIg0KPiA+DQo+ID4gKykNCj4gPg0K PiA+ICtwYXJzZXIuYWRkX2FyZ3VtZW50KA0KPiA+DQo+ID4gKyAgICAiLWEiLA0KPiA+DQo+ID4g KyAgICAiLS1hdXRvZGVmYXVsdCIsDQo+ID4NCj4gPiArICAgIGRlc3Q9IkF1dG9EZWZhdWx0IiwN Cj4gPg0KPiA+ICsgICAgaGVscD0iZ2VuZXJhdGUgZGVmYXVsdCB2YWx1ZSBmb3IgcXVlc3Rpb24g b3Bjb2RlIGlmIHNvbWUgZGVmYXVsdCBpcw0KPiA+IG1pc3NpbmciLA0KPiA+DQo+ID4gKykNCj4g Pg0KPiA+ICtwYXJzZXIuYWRkX2FyZ3VtZW50KA0KPiA+DQo+ID4gKyAgICAiLWQiLA0KPiA+DQo+ ID4gKyAgICAiLS1jaGVja2RlZmF1bHQiLA0KPiA+DQo+ID4gKyAgICBkZXN0PSJDaGVja0RlZmF1 bHQiLA0KPiA+DQo+ID4gKyAgICBoZWxwPSJjaGVjayB0aGUgZGVmYXVsdCBpbmZvcm1hdGlvbiBp biBhIHF1ZXN0aW9uIG9wY29kZSIsDQo+ID4NCj4gPiArKQ0KPiA+DQo+ID4gK3BhcnNlci5hZGRf YXJndW1lbnQoIi1tIiwgIi0tbW9kdWxlbmFtZSIsIGRlc3Q9Ik1vZHVsZU5hbWUiLA0KPiA+IGhl bHA9Ik1vZHVsZSBuYW1lIikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFz cyBDbWRQYXJzZXI6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBBcmdzLCBBcmdj KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuT3B0aW9ucyA9IE9wdGlvbnMoKQ0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5SdW5TdGF0dXMgPSBDT01QSUxFUl9SVU5fU1RBVFVTLlNUQVRVU19TVEFS VEVEDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlByZVByb2Nlc3NDbWQgPSBQUkVQUk9DRVNTT1Jf Q09NTUFORA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5QcmVQcm9jZXNzT3B0ID0gUFJFUFJPQ0VT U09SX09QVElPTlMNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuT3B0aW9uSW50aWFsaXphdGlvbihB cmdzLCBBcmdjKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgT3B0aW9uSW50aWFsaXph dGlvbihzZWxmLCBBcmdzLCBBcmdjKToNCj4gPg0KPiA+ICsgICAgICAgIFN0YXR1cyA9IEVGSV9T VUNDRVNTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBBcmdjID09IDE6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcGFyc2VyLnByaW50X2hlbHAoKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuU0VUX1JVTl9TVEFUVVMoQ09NUElMRVJfUlVOX1NUQVRVUy5TVEFUVVNfREVBRCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGlmIEFyZ3MuTGFudWNoVmZyQ29tcGlsZXI6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5PcHRpb25zLkxhbnVjaFZmckNvbXBpbGVyID0gVHJ1ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgaWYgQXJncy5DcmVhdGVSZWNvcmRMaXN0RmlsZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLk9wdGlvbnMuQ3JlYXRlUmVjb3JkTGlzdEZpbGUgPSBUcnVlDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBpZiBBcmdzLk1vZHVsZU5hbWU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5PcHRpb25zLk1vZHVsZU5hbWUgPSBBcmdzLk1vZHVsZU5hbWUNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIEFyZ3MuT3V0cHV0RGlyZWN0b3J5Og0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuT3B0aW9ucy5PdXRwdXREaXJlY3RvcnkgPSBBcmdzLk91dHB1dERp cmVjdG9yeQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHNlbGYuT3B0aW9ucy5PdXRwdXREaXJl Y3RvcnkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgRWRrTG9nZ2VyLmVycm9y KCJWZnJDb21waWxlciIsIE9QVElPTl9NSVNTSU5HLCAiLW8gbWlzc2luZw0KPiA+IG91dHB1dCBk aXJlY3RvcnkgbmFtZSIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuU0VUX1JVTl9T VEFUVVMoQ09NUElMRVJfUlVOX1NUQVRVUy5TVEFUVVNfREVBRCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5PcHRpb25zLkRlYnVn RGlyZWN0b3J5ID0NCj4gPiBzdHIoUGF0aChzZWxmLk9wdGlvbnMuT3V0cHV0RGlyZWN0b3J5KS5w YXJlbnQgLyAiREVCVUciKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIEVka0xvZ2dlci5kZWJ1ZyhF ZGtMb2dnZXIuREVCVUdfOCwgZiJPdXRwdXQgRGlyZWN0b3J5DQo+ID4ge3NlbGYuT3B0aW9ucy5P dXRwdXREaXJlY3Rvcnl9IikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIEFyZ3Mu V29ya3NwYWNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuT3B0aW9ucy5Xb3Jrc3BhY2Ug PSBBcmdzLldvcmtzcGFjZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIElzSW5DbHVkZVBhdGhMaW5l ID0gRmFsc2UNCj4gPg0KPiA+ICsgICAgICAgICAgICBIYXNWRlJQUExpbmUgPSBGYWxzZQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuT3B0aW9ucy5JbmNsdWRlUGF0aHMgPSBbXQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIE1ha2VGaWxlID0gUGF0aChzZWxmLk9wdGlvbnMuT3V0cHV0RGlyZWN0 b3J5KS5wYXJlbnQgLyAiTWFrZWZpbGUiDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgTWFrZUZp bGUuZXhpc3RzKCk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHdpdGggTWFrZUZpbGUub3Bl bihtb2RlPSJyIikgYXMgRmlsZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGZvciBM aW5lIGluIEZpbGU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgTGluZS5m aW5kKCJJTkMgPSAgXFwiKSAhPSAtMToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgSXNJbkNsdWRlUGF0aExpbmUgPSBUcnVlDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnRpbnVlDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg aWYgTGluZS5maW5kKCJWRlJQUCA9ICIpICE9IC0xOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBIYXNWRlJQUExpbmUgPSBUcnVlDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuT3B0aW9ucy5WRlJQUCA9IExpbmUuc3BsaXQoIj0iKVsxXS5z dHJpcCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgSXNJbkNsdWRlUGF0aExpbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmUgPSBMaW5lLmxzdHJpcCgp LnJzdHJpcCgiIFxcXG5cciIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlmIExpbmUuc3RhcnRzd2l0aCgiL0lDIik6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBJbkNsdWRlUGF0aCA9IExpbmUucmVwbGFjZSgiL0lDIiwgIkMiLCAxKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5PcHRpb25zLklu Y2x1ZGVQYXRocy5hcHBlbmQoSW5DbHVkZVBhdGgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGVsaWYgTGluZS5zdGFydHN3aXRoKCIvSWMiKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluQ2x1ZGVQYXRoID0gTGluZS5yZXBsYWNlKCIv SWMiLCAiQyIsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLk9wdGlvbnMuSW5jbHVkZVBhdGhzLmFwcGVuZChJbkNsdWRlUGF0aCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBMaW5lLnN0YXJ0c3dpdGgoIi9JJChXT1JL U1BBQ0UpIik6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbkNs dWRlUGF0aCA9IExpbmUucmVwbGFjZSgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiL0kkKFdPUktTUEFDRSkiLCBzZWxmLk9wdGlvbnMuV29ya3NwYWNlLCAx DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLk9wdGlvbnMuSW5jbHVkZVBhdGhz LmFwcGVuZChJbkNsdWRlUGF0aCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZWxpZiBMaW5lLnN0YXJ0c3dpdGgoIi9JJChERUJVR19ESVIpIik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbkNsdWRlUGF0aCA9IHNlbGYuT3B0aW9ucy5E ZWJ1Z0RpcmVjdG9yeQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5PcHRpb25zLkluY2x1ZGVQYXRocy5hcHBlbmQoSW5DbHVkZVBhdGgpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgSGFzVkZSUFBMaW5lIGlzIEZhbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXNJbkNsdWRlUGF0aExp bmUgPSBGYWxzZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIEFyZ3MuT2xkT3V0cHV0RGlyZWN0b3J5Og0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuT3B0aW9ucy5PbGRPdXRwdXREaXJlY3RvcnkgPSBBcmdzLk9s ZE91dHB1dERpcmVjdG9yeQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHNlbGYuT3B0aW9ucy5P bGRPdXRwdXREaXJlY3RvcnkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgRWRr TG9nZ2VyLmVycm9yKCJWZnJDb21waWxlciIsIE9QVElPTl9NSVNTSU5HLCAiLW9vIG1pc3NpbmcN Cj4gPiBvdXRwdXQgZGlyZWN0b3J5IG5hbWUiKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLlNFVF9SVU5fU1RBVFVTKENPTVBJTEVSX1JVTl9TVEFUVVMuU1RBVFVTX0RFQUQpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+DQo+ID4gKyAgICAgICAgICAgIEVka0xv Z2dlci5kZWJ1ZygNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgRWRrTG9nZ2VyLkRFQlVHXzgs IGYiT2xkIE91dHB1dCBEaXJlY3RvcnkNCj4gPiB7c2VsZi5PcHRpb25zLk9sZE91dHB1dERpcmVj dG9yeX0iDQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgaWYgQXJncy5DcmVhdGVJZnJQa2dGaWxlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuT3B0aW9ucy5DcmVhdGVJZnJQa2dGaWxlID0gVHJ1ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgaWYgQXJncy5DcmVhdGVZYW1sRmlsZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLk9wdGlvbnMuQ3JlYXRlWWFtbEZpbGUgPSBUcnVlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBpZiBBcmdzLkNyZWF0ZUpzb25GaWxlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuT3B0aW9ucy5DcmVhdGVKc29uRmlsZSA9IFRydWUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGlmIEFyZ3MuU2tpcENQcmVwcm9jZXNzb3I6DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5PcHRpb25zLlNraXBDUHJlcHJvY2Vzc29yID0gVHJ1ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgaWYgQXJncy5DUHJlcHJvY2Vzc29yT3B0aW9uczoNCj4gPg0KPiA+ICsgICAg ICAgICAgICBPcHRpb25zID0gQXJncy5DUHJlcHJvY2Vzc29yT3B0aW9ucw0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIE9wdGlvbnMgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg RWRrTG9nZ2VyLmVycm9yKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIlZmckNvbXBp bGVyIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIE9QVElPTl9NSVNTSU5HLA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIi1vZCAtIG1pc3NpbmcgQy1wcmVwcm9jZXNzb3Ig YXJndW1lbnQiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuU0VUX1JVTl9TVEFUVVMoQ09NUElMRVJfUlVOX1NUQVRVUy5TVEFUVVNf REVBRCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5PcHRpb25zLkNQcmVwcm9jZXNzb3JPcHRpb25zICs9ICIgIiArIE9wdGlvbnMN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIEFyZ3MuU3RyaW5nRmlsZU5hbWU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgU3RyaW5nRmlsZU5hbWUgPSBBcmdzLlN0cmluZ0ZpbGVOYW1l DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgU3RyaW5nRmlsZU5hbWUgaXMgTm9uZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgRWRrTG9nZ2VyLmVycm9yKCJWZnJDb21waWxlciIsIE9QVElP Tl9NSVNTSU5HLCAiLXMgbWlzc2luZw0KPiBpbnB1dA0KPiA+IHN0cmluZyBmaWxlIG5hbWUiKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLlNFVF9SVU5fU1RBVFVTKENPTVBJTEVSX1JV Tl9TVEFUVVMuU1RBVFVTX0RFQUQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGdWZnJTdHJpbmdEQi5TZXRTdHJpbmdGaWxlTmFtZShTdHJp bmdGaWxlTmFtZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBFZGtMb2dnZXIuZGVidWcoRWRrTG9n Z2VyLkRFQlVHXzgsIGYiSW5wdXQgc3RyaW5nIGZpbGUgcGF0aA0KPiA+IHtTdHJpbmdGaWxlTmFt ZX0iKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgQXJncy5PdmVycmlkZUNsYXNz R3VpZDoNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXMgPSBTdHJpbmdUb0d1aWQoQXJncy5PdmVy cmlkZUNsYXNzR3VpZCwNCj4gPiBzZWxmLk9wdGlvbnMuT3ZlcnJpZGVDbGFzc0d1aWQpDQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgdHlwZShyZXMpID09ICJpbnQiOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBTdGF0dXMgPSByZXMNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBTdGF0dXMgPSByZXNbMF0NCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5PcHRpb25zLk92ZXJyaWRlQ2xhc3NHdWlkID0gcmVzWzFdDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgRUZJX0VSUk9SKFN0YXR1cyk6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIEVka0xvZ2dlci5lcnJvcigNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICJWZnJDb21waWxlciIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBG T1JNQVRfSU5WQUxJRCwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGYiSW52YWxpZCBm b3JtYXQ6IHtBcmdzLk92ZXJyaWRlQ2xhc3NHdWlkfSIsDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5TRVRfUlVOX1NUQVRVUyhDT01Q SUxFUl9SVU5fU1RBVFVTLlNUQVRVU19ERUFEKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk9wdGlvbnMuSGFz T3ZlcnJpZGVDbGFzc0d1aWQgPSBUcnVlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBp ZiBBcmdzLldhcm5pbmdBc0Vycm9yOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuT3B0aW9u cy5XYXJuaW5nQXNFcnJvciA9IFRydWUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlm IEFyZ3MuQXV0b0RlZmF1bHQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5PcHRpb25zLkF1 dG9EZWZhdWx0ID0gVHJ1ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgQXJncy5D aGVja0RlZmF1bHQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5PcHRpb25zLkNoZWNrRGVm YXVsdCA9IFRydWUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIEFyZ3MuSW5wdXRG aWxlTmFtZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk9wdGlvbnMuSW5wdXRGaWxlTmFt ZSA9IEFyZ3MuSW5wdXRGaWxlTmFtZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHNlbGYuT3B0 aW9ucy5JbnB1dEZpbGVOYW1lIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIEVk a0xvZ2dlci5lcnJvcigiVmZyQ29tcGlsZXIiLCBPUFRJT05fTUlTU0lORywgIklucHV0IGZpbGUN Cj4gbmFtZQ0KPiA+IGlzIG5vdCBzcGVjaWZpZWQuIikNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5TRVRfUlVOX1NUQVRVUyhDT01QSUxFUl9SVU5fU1RBVFVTLlNUQVRVU19ERUFEKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBzZWxmLk9wdGlvbnMuT3V0cHV0RGlyZWN0b3J5IGlzIE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuT3B0aW9ucy5PdXRwdXREaXJlY3RvcnkgPSAiIg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgc2VsZi5TZXRCYXNlRmlsZU5hbWUoKSAh PSAwOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuU0VUX1JVTl9TVEFUVVMoQ09NUElMRVJf UlVOX1NUQVRVUy5TVEFUVVNfREVBRCkNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIHNlbGYuU2V0UGtnT3V0cHV0RmlsZU5hbWUo KSAhPSAwOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuU0VUX1JVTl9TVEFUVVMoQ09NUElM RVJfUlVOX1NUQVRVUy5TVEFUVVNfREVBRCkNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4N Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIHNlbGYuU2V0Q091dHB1dEZpbGVOYW1l KCkgIT0gMDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlNFVF9SVU5fU1RBVFVTKENPTVBJ TEVSX1JVTl9TVEFUVVMuU1RBVFVTX0RFQUQpDQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBzZWxmLlNldFByZXByb2Nlc3Nvck91 dHB1dEZpbGVOYW1lKCkgIT0gMDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlNFVF9SVU5f U1RBVFVTKENPTVBJTEVSX1JVTl9TVEFUVVMuU1RBVFVTX0RFQUQpDQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBzZWxmLlNldFJl Y29yZExpc3RGaWxlTmFtZSgpICE9IDA6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5TRVRf UlVOX1NUQVRVUyhDT01QSUxFUl9SVU5fU1RBVFVTLlNUQVRVU19ERUFEKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgc2VsZi5T ZXRTb3VyY2VZYW1sRmlsZU5hbWUoKSAhPSAwOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu U0VUX1JVTl9TVEFUVVMoQ09NUElMRVJfUlVOX1NUQVRVUy5TVEFUVVNfREVBRCkNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIHNl bGYuU2V0SnNvbkZpbGVOYW1lKCkgIT0gMDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlNF VF9SVU5fU1RBVFVTKENPTVBJTEVSX1JVTl9TVEFUVVMuU1RBVFVTX0RFQUQpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRCYXNl RmlsZU5hbWUoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICBpZiBzZWxmLk9wdGlvbnMuSW5wdXRG aWxlTmFtZSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiAtMQ0KPiA+DQo+ ID4gKyAgICAgICAgcEZpbGVOYW1lID0gc2VsZi5PcHRpb25zLklucHV0RmlsZU5hbWUNCj4gPg0K PiA+ICsgICAgICAgIHdoaWxlIChwRmlsZU5hbWUuZmluZCgiXFwiKSAhPSAtMSkgb3IgKHBGaWxl TmFtZS5maW5kKCIvIikgIT0gLTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHBGaWxlTmFt ZS5maW5kKCJcXCIpICE9IC0xOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpID0gcEZpbGVO YW1lLmZpbmQoIlxcIikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBpID0gcEZpbGVOYW1lLmZpbmQoIi8iKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGlmIGkgPT0gbGVuKHBGaWxlTmFtZSkgLSAxOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gLTENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAg ICBwRmlsZU5hbWUgPSBwRmlsZU5hbWVbaSArIDEgOl0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGlmIHBGaWxlTmFtZSA9PSAiIiBvciBwRmlsZU5hbWUuZmluZCgiLiIpID09IC0xOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiAtMQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5PcHRpb25zLkJhc2VGaWxlTmFtZSA9IHBGaWxlTmFtZVs6IHBGaWxlTmFtZS5m aW5kKCIuIildDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gMA0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBkZWYgU2V0UGtnT3V0cHV0RmlsZU5hbWUoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICBpZiBzZWxmLk9wdGlvbnMuQmFzZUZpbGVOYW1lIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIC0xDQo+ID4NCj4gPiArICAgICAgICBpZiBzZWxmLk9wdGlvbnMuTGFudWNo VmZyQ29tcGlsZXI6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5PcHRpb25zLlBrZ091dHB1 dEZpbGVOYW1lID0gc3RyKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBQYXRoKHNlbGYuT3B0 aW9ucy5PdXRwdXREaXJlY3RvcnkpIC8NCj4gPiBmIlB5VmZyX3tzZWxmLk9wdGlvbnMuQmFzZUZp bGVOYW1lfS5ocGsiDQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAg cmV0dXJuIDANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldENPdXRwdXRGaWxlTmFt ZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIGlmIHNlbGYuT3B0aW9ucy5CYXNlRmlsZU5hbWUg aXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gLTENCj4gPg0KPiA+ICsgICAg ICAgIGlmIHNlbGYuT3B0aW9ucy5MYW51Y2hWZnJDb21waWxlcjoNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLk9wdGlvbnMuQ091dHB1dEZpbGVOYW1lID0gc3RyKA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBQYXRoKHNlbGYuT3B0aW9ucy5EZWJ1Z0RpcmVjdG9yeSkgLw0KPiA+IGYiUHlW ZnJfe3NlbGYuT3B0aW9ucy5CYXNlRmlsZU5hbWV9LmMiDQo+ID4NCj4gPiArICAgICAgICAgICAg KQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIDANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIFNldFByZXByb2Nlc3Nvck91dHB1dEZpbGVOYW1lKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgaWYgc2VsZi5PcHRpb25zLkJhc2VGaWxlTmFtZSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiAtMQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5PcHRpb25zLkNQcm9jZXNz ZWRWZnJGaWxlTmFtZSA9IHN0cigNCj4gPg0KPiA+ICsgICAgICAgICAgICBQYXRoKHNlbGYuT3B0 aW9ucy5PdXRwdXREaXJlY3RvcnkpIC8NCj4gZiJ7c2VsZi5PcHRpb25zLkJhc2VGaWxlTmFtZX0u aSINCj4gPg0KPiA+ICsgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiAwDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRSZWNvcmRMaXN0RmlsZU5hbWUoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICBpZiBzZWxmLk9wdGlvbnMuQmFzZUZpbGVOYW1lIGlzIE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIC0xDQo+ID4NCj4gPiArICAgICAgICBpZiBzZWxm Lk9wdGlvbnMuTGFudWNoVmZyQ29tcGlsZXI6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5P cHRpb25zLlJlY29yZExpc3RGaWxlTmFtZSA9IHN0cigNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgUGF0aChzZWxmLk9wdGlvbnMuRGVidWdEaXJlY3RvcnkpIC8NCj4gPiBmIlB5VmZyX3tzZWxm Lk9wdGlvbnMuQmFzZUZpbGVOYW1lfS5sc3QiDQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIDANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNl dFNvdXJjZVlhbWxGaWxlTmFtZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIGlmIHNlbGYuT3B0 aW9ucy5CYXNlRmlsZU5hbWUgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g LTENCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuT3B0aW9ucy5ZYW1sRmlsZU5hbWUgPSBzdHIoDQo+ ID4NCj4gPiArICAgICAgICAgICAgUGF0aChzZWxmLk9wdGlvbnMuRGVidWdEaXJlY3RvcnkpIC8N Cj4gPiBmIntzZWxmLk9wdGlvbnMuQmFzZUZpbGVOYW1lfS55bWwiDQo+ID4NCj4gPiArICAgICAg ICApDQo+ID4NCj4gPiArICAgICAgICBzZWxmLk9wdGlvbnMuWWFtbE91dHB1dEZpbGVOYW1lID0g c3RyKA0KPiA+DQo+ID4gKyAgICAgICAgICAgIFBhdGgoc2VsZi5PcHRpb25zLkRlYnVnRGlyZWN0 b3J5KSAvDQo+ID4gZiJ7c2VsZi5PcHRpb25zLkJhc2VGaWxlTmFtZX1Db21waWxlZC55bWwiDQo+ ID4NCj4gPiArICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gMA0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0SnNvbkZpbGVOYW1lKHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgaWYgc2VsZi5PcHRpb25zLkJhc2VGaWxlTmFtZSBpcyBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiAtMQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5PcHRpb25zLkpzb25G aWxlTmFtZSA9IHN0cigNCj4gPg0KPiA+ICsgICAgICAgICAgICBQYXRoKHNlbGYuT3B0aW9ucy5E ZWJ1Z0RpcmVjdG9yeSkgLw0KPiA+IGYie3NlbGYuT3B0aW9ucy5CYXNlRmlsZU5hbWV9Lmpzb24i DQo+ID4NCj4gPiArICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gMA0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgRmluZEluY2x1ZGVIZWFkZXJGaWxlKHNlbGYsIFN0YXJ0 LCBOYW1lKToNCj4gPg0KPiA+ICsgICAgICAgIEZpbGVMaXN0ID0gW10NCj4gPg0KPiA+ICsgICAg ICAgIGZvciBSZWxwYXRoLCBfLCBGaWxlcyBpbiBvcy53YWxrKFN0YXJ0KToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBOYW1lIGluIEZpbGVzOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBG dWxsUGF0aCA9IG9zLnBhdGguam9pbihTdGFydCwgUmVscGF0aCwgTmFtZSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgRmlsZUxpc3QuYXBwZW5kKG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5h YnNwYXRoKEZ1bGxQYXRoKSkpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gRmlsZUxpc3QNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNFVF9SVU5fU1RBVFVTKHNlbGYsIFN0YXR1cyk6 DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlJ1blN0YXR1cyA9IFN0YXR1cw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgSVNfUlVOX1NUQVRVUyhzZWxmLCBTdGF0dXMpOg0KPiA+DQo+ID4g KyAgICAgICAgcmV0dXJuIHNlbGYuUnVuU3RhdHVzID09IFN0YXR1cw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIFZmckNvbXBpbGVyOg0KPiA+DQo+ID4gKyAgICBkZWYg X19pbml0X18oc2VsZiwgQ21kOiBDbWRQYXJzZXIpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5D bGVhcigpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLk9wdGlvbnMgPSBDbWQuT3B0aW9ucw0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5SdW5TdGF0dXMgPSBDbWQuUnVuU3RhdHVzDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLlZmclJvb3QgPSBJZnJUcmVlTm9kZSgpDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLlByZVByb2Nlc3NEQiA9IFByZVByb2Nlc3NEQihzZWxmLk9wdGlvbnMpDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLlZmclRyZWUgPSBJZnJUcmVlKHNlbGYuVmZyUm9vdCwgc2VsZi5QcmVQcm9j ZXNzREIsIHNlbGYuT3B0aW9ucykNCj4gPg0KPiA+ICsgICAgICAgIGlmIChub3Qgc2VsZi5JU19S VU5fU1RBVFVTKENPTVBJTEVSX1JVTl9TVEFUVVMuU1RBVFVTX0ZBSUxFRCkpDQo+ID4gYW5kICgN Cj4gPg0KPiA+ICsgICAgICAgICAgICBub3Qgc2VsZi5JU19SVU5fU1RBVFVTKENPTVBJTEVSX1JV Tl9TVEFUVVMuU1RBVFVTX0RFQUQpDQo+ID4NCj4gPiArICAgICAgICApOg0KPiA+DQo+ID4gKw0K PiBzZWxmLlNFVF9SVU5fU1RBVFVTKENPTVBJTEVSX1JVTl9TVEFUVVMuU1RBVFVTX0lOSVRJQUxJ WkVEKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgQ2xlYXIoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICBnVmZyVmFyRGF0YVR5cGVEQi5DbGVhcigpDQo+ID4NCj4gPiArICAgICAgICBn VmZyRGVmYXVsdFN0b3JlLkNsZWFyKCkNCj4gPg0KPiA+ICsgICAgICAgIGdWZnJEYXRhU3RvcmFn ZS5DbGVhcigpDQo+ID4NCj4gPiArICAgICAgICBnRm9ybVBrZy5DbGVhcigpDQo+ID4NCj4gPiAr ICAgICAgICBnSWZyRm9ybUlkLkNsZWFyKCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVm IFByZVByb2Nlc3Moc2VsZik6DQo+ID4NCj4gPiArICAgICAgICBpZiBub3QNCj4gPiBzZWxmLklT X1JVTl9TVEFUVVMoQ09NUElMRVJfUlVOX1NUQVRVUy5TVEFUVVNfSU5JVElBTElaRUQpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLklTX1JVTl9TVEFUVVMoQ09NUElMRVJfUlVO X1NUQVRVUy5TVEFUVVNfREVBRCk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuU0VU X1JVTl9TVEFUVVMoQ09NUElMRVJfUlVOX1NUQVRVUy5TVEFUVVNfRkFJTEVEKQ0KPiA+DQo+ID4g KyAgICAgICAgZWxpZiBzZWxmLk9wdGlvbnMuU2tpcENQcmVwcm9jZXNzb3IgaXMgRmFsc2U6DQo+ ID4NCj4gPiArICAgICAgICAgICAgIyBjYWxsIEMgcHJlcHJvY2Vzc29yIGZpcnN0IGluIHRoZSB0 b29sIGl0c2VsZiwgYnV0IGN1cnJlbnRseSBub3Qgc3VwcG9ydA0KPiA+IGhlcmUNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLlNFVF9SVU5fU1RBVFVTKENPTVBJTEVSX1JVTl9TVEFUVVMuU1RB VFVTX0ZBSUxFRCkNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgIyBtYWtlZmlsZSB3aWxsIGNhbGwgY2wgY29tbWFuZHMgdG8gZ2VuZXJhdGUgLmkgZmlsZQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICMgZG8gbm90IG5lZWQgdG8gcnVuIEMgcHJlcHJvY2Vzc29y IGluIHRoaXMgdG9vbCBpdHNlbGYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlByZVByb2Nl c3NEQi5QcmVwcm9jZXNzKCkNCj4gPg0KPiA+ICsNCj4gPg0KPiBzZWxmLlNFVF9SVU5fU1RBVFVT KENPTVBJTEVSX1JVTl9TVEFUVVMuU1RBVFVTX1ZGUl9QUkVQUk9DRVNTRUQpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiBDb21waWxlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgSW5G aWxlTmFtZSA9IHNlbGYuT3B0aW9ucy5DUHJvY2Vzc2VkVmZyRmlsZU5hbWUNCj4gPg0KPiA+ICsg ICAgICAgIGlmIG5vdA0KPiA+IHNlbGYuSVNfUlVOX1NUQVRVUyhDT01QSUxFUl9SVU5fU1RBVFVT LlNUQVRVU19WRlJfUFJFUFJPQ0VTU0VEKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBFZGtMb2dn ZXIuZXJyb3IoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICJWZnJDb21waWxlciIsDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIEZJTEVfUEFSU0VfRkFJTFVSRSwNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgImNvbXBpbGUgZXJyb3IgaW4gZmlsZSAlcyIgJSBJbkZpbGVOYW1lLA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBJbkZpbGVOYW1lLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlNFVF9SVU5fU1RBVFVTKENPTVBJTEVSX1JV Tl9TVEFUVVMuU1RBVFVTX0ZBSUxFRCkNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4g PiArICAgICAgICAgICAgZ1ZmckVycm9ySGFuZGxlLlNldElucHV0RmlsZShzZWxmLk9wdGlvbnMu SW5wdXRGaWxlTmFtZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBnVmZyRXJyb3JIYW5kbGUuU2V0 V2FybmluZ0FzRXJyb3Ioc2VsZi5PcHRpb25zLldhcm5pbmdBc0Vycm9yKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgSW5w dXRTdHJlYW0gPSBGaWxlU3RyZWFtKEluRmlsZU5hbWUpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIFZmckxleGVyID0gVmZyU3ludGF4TGV4ZXIoSW5wdXRTdHJlYW0pDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIFZmclN0cmVhbSA9IENvbW1vblRva2VuU3RyZWFtKFZmckxleGVyKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBWZnJQYXJzZXIgPSBWZnJTeW50YXhQYXJzZXIoVmZyU3Ry ZWFtKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGV4Y2VwdDoNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgRWRrTG9nZ2VyLmVycm9yKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIlZm ckNvbXBpbGVyIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIEZJTEVfT1BFTl9GQUlM VVJFLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIkZpbGUgb3BlbiBmYWlsZWQgZm9y ICVzIiAlIEluRmlsZU5hbWUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBJbkZpbGVO YW1lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIGlmIG5vdA0KPiBzZWxmLklTX1JVTl9TVEFUVVMoQ09NUElMRVJfUlVOX1NUQVRVUy5TVEFU VVNfREVBRCk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLlNFVF9SVU5fU1RB VFVTKENPTVBJTEVSX1JVTl9TVEFUVVMuU1RBVFVTX0ZBSUxFRCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5WaXNpdG9yID0gVmZy U3ludGF4VmlzaXRvcigNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5QcmVQcm9jZXNz REIsIHNlbGYuVmZyUm9vdCwgc2VsZi5PcHRpb25zLk92ZXJyaWRlQ2xhc3NHdWlkDQo+ID4NCj4g PiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuVmlzaXRvci52aXNp dChWZnJQYXJzZXIudmZyUHJvZ3JhbSgpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIHNlbGYuVmlzaXRvci5QYXJzZXJTdGF0dXMgIT0gMDoNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgaWYgbm90DQo+IHNlbGYuSVNfUlVOX1NUQVRVUyhDT01QSUxFUl9SVU5fU1RBVFVT LlNUQVRVU19ERUFEKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIEVka0xvZ2dlci5l cnJvcigNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAiVmZyQ29tcGlsZXIiLA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIEZJTEVfUEFSU0VfRkFJTFVSRSwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAiY29tcGlsZSBlcnJvciBpbiBmaWxlICVz IiAlIEluRmlsZU5hbWUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgSW5GaWxl TmFtZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIHNlbGYuU0VUX1JVTl9TVEFUVVMoQ09NUElMRVJfUlVOX1NUQVRVUy5TVEFU VVNfRkFJTEVEKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBnRm9ybVBrZy5IYXZlUGVuZGluZ1VuYXNzaWduZWQo KSBpcyBUcnVlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBnRm9ybVBrZy5QZW5kaW5nQXNz aWduUHJpbnRBbGwoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBub3QNCj4gc2VsZi5J U19SVU5fU1RBVFVTKENPTVBJTEVSX1JVTl9TVEFUVVMuU1RBVFVTX0RFQUQpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgRWRrTG9nZ2VyLmVycm9yKA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICJWZnJDb21waWxlciIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgRklMRV9QQVJTRV9GQUlMVVJFLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICJjb21waWxlIGVycm9yIGluIGZpbGUgJXMiICUgSW5GaWxlTmFtZSwNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICBJbkZpbGVOYW1lLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5TRVRfUlVO X1NUQVRVUyhDT01QSUxFUl9SVU5fU1RBVFVTLlNUQVRVU19GQUlMRUQpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+IHNlbGYuU0VU X1JVTl9TVEFUVVMoQ09NUElMRVJfUlVOX1NUQVRVUy5TVEFUVVNfVkZSX0NPTVBJTEVFRCkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBzZWxmLk9wdGlvbnMuQ3JlYXRlSnNvbkZpbGU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuVmZyVHJlZS5EdW1wSnNvbigpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiBHZW5CaW5hcnkoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICBp ZiBub3QNCj4gPiBzZWxmLklTX1JVTl9TVEFUVVMoQ09NUElMRVJfUlVOX1NUQVRVUy5TVEFUVVNf VkZSX0NPTVBJTEVFRCk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgbm90IHNlbGYuSVNfUlVO X1NUQVRVUyhDT01QSUxFUl9SVU5fU1RBVFVTLlNUQVRVU19ERUFEKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5TRVRfUlVOX1NUQVRVUyhDT01QSUxFUl9SVU5fU1RBVFVTLlNUQVRV U19GQUlMRUQpDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIHNlbGYuT3B0aW9ucy5DcmVhdGVJZnJQa2dGaWxlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLlZmclRyZWUuR2VuQmluYXJ5KCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIEdlbkNGaWxlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgaWYgbm90DQo+ID4gc2VsZi5J U19SVU5fU1RBVFVTKENPTVBJTEVSX1JVTl9TVEFUVVMuU1RBVFVTX1ZGUl9DT01QSUxFRUQpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLklTX1JVTl9TVEFUVVMoQ09NUElMRVJf UlVOX1NUQVRVUy5TVEFUVVNfREVBRCk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu U0VUX1JVTl9TVEFUVVMoQ09NUElMRVJfUlVOX1NUQVRVUy5TVEFUVVNfRkFJTEVEKQ0KPiA+DQo+ ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBzZWxmLk9wdGlvbnMu Q3JlYXRlSWZyUGtnRmlsZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5WZnJUcmVl LkdlbkNGaWxlKCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdlblJlY29yZExpc3RG aWxlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgaWYgbm90DQo+ID4gc2VsZi5JU19SVU5fU1RB VFVTKENPTVBJTEVSX1JVTl9TVEFUVVMuU1RBVFVTX1ZGUl9DT01QSUxFRUQpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIG5vdCBzZWxmLklTX1JVTl9TVEFUVVMoQ09NUElMRVJfUlVOX1NUQVRV Uy5TVEFUVVNfREVBRCk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuU0VUX1JVTl9T VEFUVVMoQ09NUElMRVJfUlVOX1NUQVRVUy5TVEFUVVNfRkFJTEVEKQ0KPiA+DQo+ID4gKyAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBzZWxmLk9wdGlvbnMuQ3JlYXRlUmVj b3JkTGlzdEZpbGU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuVmZyVHJlZS5HZW5S ZWNvcmRMaXN0RmlsZSgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZW5CaW5hcnlG aWxlcyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIGlmIG5vdA0KPiA+IHNlbGYuSVNfUlVOX1NU QVRVUyhDT01QSUxFUl9SVU5fU1RBVFVTLlNUQVRVU19WRlJfQ09NUElMRUVEKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBub3Qgc2VsZi5JU19SVU5fU1RBVFVTKENPTVBJTEVSX1JVTl9TVEFU VVMuU1RBVFVTX0RFQUQpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLlNFVF9SVU5f U1RBVFVTKENPTVBJTEVSX1JVTl9TVEFUVVMuU1RBVFVTX0ZBSUxFRCkNCj4gPg0KPiA+ICsgICAg ICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5WZnJUcmVlLkdlbkJpbmFyeUZp bGVzKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlNFVF9SVU5fU1RBVFVTKENPTVBJTEVS X1JVTl9TVEFUVVMuU1RBVFVTX0ZJTklTSEVEKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBk ZWYgRHVtcFNvdXJjZVlhbWwoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICBpZiBub3Qgc2VsZi5J U19SVU5fU1RBVFVTKA0KPiA+DQo+ID4gKyAgICAgICAgICAgIENPTVBJTEVSX1JVTl9TVEFUVVMu U1RBVFVTX1ZGUl9DT01QSUxFRUQNCj4gPg0KPiA+ICsgICAgICAgICkgYW5kIG5vdA0KPiA+IHNl bGYuSVNfUlVOX1NUQVRVUyhDT01QSUxFUl9SVU5fU1RBVFVTLlNUQVRVU19GSU5JU0hFRCk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgbm90IHNlbGYuSVNfUlVOX1NUQVRVUyhDT01QSUxFUl9S VU5fU1RBVFVTLlNUQVRVU19ERUFEKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5T RVRfUlVOX1NUQVRVUyhDT01QSUxFUl9SVU5fU1RBVFVTLlNUQVRVU19GQUlMRUQpDQo+ID4NCj4g PiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHNlbGYuT3B0aW9ucy5D cmVhdGVZYW1sRmlsZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5WZnJUcmVlLkR1 bXBZYW1sRm9yWE1MQ0xJKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlNFVF9SVU5fU1RB VFVTKENPTVBJTEVSX1JVTl9TVEFUVVMuU1RBVFVTX0ZJTklTSEVEKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBkZWYgU0VUX1JVTl9TVEFUVVMoc2VsZiwgU3RhdHVzKToNCj4gPg0KPiA+ICsg ICAgICAgIHNlbGYuUnVuU3RhdHVzID0gU3RhdHVzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiBJU19SVU5fU1RBVFVTKHNlbGYsIFN0YXR1cyk6DQo+ID4NCj4gPiArICAgICAgICByZXR1 cm4gc2VsZi5SdW5TdGF0dXMgPT0gU3RhdHVzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArZGVmIG1haW4oKToNCj4gPg0KPiA+ICsgICAgQXJncyA9IHBhcnNlci5wYXJzZV9hcmdz KCkNCj4gPg0KPiA+ICsgICAgQXJnYyA9IGxlbihzeXMuYXJndikNCj4gPg0KPiA+ICsgICAgRWRr TG9nZ2VyLlNldExldmVsKFdBUk5JTkdfTE9HX0xFVkVMKQ0KPiA+DQo+ID4gKyAgICBDbWQgPSBD bWRQYXJzZXIoQXJncywgQXJnYykNCj4gPg0KPiA+ICsgICAgQ29tcGlsZXIgPSBWZnJDb21waWxl cihDbWQpDQo+ID4NCj4gPiArICAgIENvbXBpbGVyLlByZVByb2Nlc3MoKQ0KPiA+DQo+ID4gKyAg ICBDb21waWxlci5Db21waWxlKCkNCj4gPg0KPiA+ICsgICAgQ29tcGlsZXIuR2VuQmluYXJ5Rmls ZXMoKQ0KPiA+DQo+ID4gKyAgICBDb21waWxlci5EdW1wU291cmNlWWFtbCgpDQo+ID4NCj4gPiAr ICAgIFN0YXR1cyA9IENvbXBpbGVyLlJ1blN0YXR1cw0KPiA+DQo+ID4gKyAgICBpZiBTdGF0dXMg PT0gQ09NUElMRVJfUlVOX1NUQVRVUy5TVEFUVVNfREVBRCBvciBTdGF0dXMgPT0NCj4gPiBDT01Q SUxFUl9SVU5fU1RBVFVTLlNUQVRVU19GQUlMRUQ6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g Mg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICByZXR1cm4gRUZJX1NVQ0NFU1MNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOg0KPiA+ DQo+ID4gKyAgICBzeXMuZXhpdChtYWluKCkpDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvQmFzZVRv b2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvSWZyQ3R5cGVzLnB5DQo+ID4gYi9CYXNlVG9v bHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9JZnJDdHlwZXMucHkNCj4gPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLmE3ZjdhMzJhMjcNCj4gPiAtLS0gL2Rl di9udWxsDQo+ID4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvSWZy Q3R5cGVzLnB5DQo+ID4gQEAgLTAsMCArMSwxODExIEBADQo+ID4gKyMjIEBmaWxlDQo+ID4NCj4g PiArIyBUaGlzIGZpbGUgaXMgdXNlZCB0byBkZWZpbmUgdGhlIGNvbW1vbiBDIHN0cnVjdCBhbmQg ZnVuY3Rpb25zLg0KPiA+DQo+ID4gKyMNCj4gPg0KPiA+ICsjIENvcHlyaWdodCAoYykgMjAyMi0s IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPg0KPiA+ICsj IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4NCj4gPiAr IyMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtmcm9tIGN0eXBlcyBpbXBvcnQgKg0KPiA+DQo+ID4g K2Zyb20gc3RydWN0IGltcG9ydCAqDQo+ID4NCj4gPiArZnJvbSBlbnVtIGltcG9ydCBFbnVtDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArRUZJX1NUUklOR19JRF9JTlZBTElEID0g MHgwDQo+ID4NCj4gPiArRUZJX0hJSV9ERUZBVUxUX0NMQVNTX1NUQU5EQVJEID0gMHgwMDAwDQo+ ID4NCj4gPiArRUZJX0hJSV9ERUZBVUxUX0NMQVNTX01BTlVGQUNUVVJJTkcgPSAweDAwMDENCj4g Pg0KPiA+ICtFRklfSUZSX01BWF9MRU5HVEggPSAweEZGDQo+ID4NCj4gPiArRUZJX1ZBUlNUT1JF X0lEX0lOVkFMSUQgPSAwDQo+ID4NCj4gPiArRUZJX1ZBUlNUT1JFX0lEX1NUQVJUID0gMHgyMA0K PiA+DQo+ID4gK0VGSV9WQVJPRkZTRVRfSU5WQUxJRCA9IDB4RkZGRg0KPiA+DQo+ID4gK0VGSV9J TUFHRV9JRF9JTlZBTElEID0gMHhGRkZGDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArRUZJX05PTl9E RVZJQ0VfQ0xBU1MgPSAweDAwDQo+ID4NCj4gPiArRUZJX0RJU0tfREVWSUNFX0NMQVNTID0gMHgw MQ0KPiA+DQo+ID4gK0VGSV9WSURFT19ERVZJQ0VfQ0xBU1MgPSAweDAyDQo+ID4NCj4gPiArRUZJ X05FVFdPUktfREVWSUNFX0NMQVNTID0gMHgwNA0KPiA+DQo+ID4gK0VGSV9JTlBVVF9ERVZJQ0Vf Q0xBU1MgPSAweDA4DQo+ID4NCj4gPiArRUZJX09OX0JPQVJEX0RFVklDRV9DTEFTUyA9IDB4MTAN Cj4gPg0KPiA+ICtFRklfT1RIRVJfREVWSUNFX0NMQVNTID0gMHgyMA0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gK0VGSV9TRVRVUF9BUFBMSUNBVElPTl9TVUJDTEFTUyA9IDB4MDANCj4gPg0KPiA+ICtF RklfR0VORVJBTF9BUFBMSUNBVElPTl9TVUJDTEFTUyA9IDB4MDENCj4gPg0KPiA+ICtFRklfRlJP TlRfUEFHRV9TVUJDTEFTUyA9IDB4MDINCj4gPg0KPiA+ICtFRklfU0lOR0xFX1VTRV9TVUJDTEFT UyA9IDB4MDMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsjIEVGSV9ISUlfUEFDS0FHRV9UWVBFX3gu DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArRUZJX0hJSV9QQUNLQUdFX1RZUEVfQUxMID0gMHgwMA0K PiA+DQo+ID4gK0VGSV9ISUlfUEFDS0FHRV9UWVBFX0dVSUQgPSAweDAxDQo+ID4NCj4gPiArRUZJ X0hJSV9QQUNLQUdFX0ZPUk0gPSAweDAyDQo+ID4NCj4gPiArRUZJX0hJSV9QQUNLQUdFX0tFWUJP QVJEX0xBWU9VVCA9IDB4MDMNCj4gPg0KPiA+ICtFRklfSElJX1BBQ0tBR0VfU1RSSU5HUyA9IDB4 MDQNCj4gPg0KPiA+ICtFRklfSElJX1BBQ0tBR0VfRk9OVFMgPSAweDA1DQo+ID4NCj4gPiArRUZJ X0hJSV9QQUNLQUdFX0lNQUdFUyA9IDB4MDYNCj4gPg0KPiA+ICtFRklfSElJX1BBQ0tBR0VfU0lN UExFX0ZPTlRTID0gMHgwNw0KPiA+DQo+ID4gK0VGSV9ISUlfUEFDS0FHRV9ERVZJQ0VfUEFUSCA9 IDB4MDgNCj4gPg0KPiA+ICtFRklfSElJX1BBQ0tBR0VfRU5EID0gMHhERg0KPiA+DQo+ID4gK0VG SV9ISUlfUEFDS0FHRV9UWVBFX1NZU1RFTV9CRUdJTiA9IDB4RTANCj4gPg0KPiA+ICtFRklfSElJ X1BBQ0tBR0VfVFlQRV9TWVNURU1fRU5EID0gMHhGRg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK0VG SV9JRlJfRVhURU5EX09QX0xBQkVMID0gMHgwDQo+ID4NCj4gPiArRUZJX0lGUl9FWFRFTkRfT1Bf QkFOTkVSID0gMHgxDQo+ID4NCj4gPiArRUZJX0lGUl9FWFRFTkRfT1BfVElNRU9VVCA9IDB4Mg0K PiA+DQo+ID4gK0VGSV9JRlJfRVhURU5EX09QX0NMQVNTID0gMHgzDQo+ID4NCj4gPiArRUZJX0lG Ul9FWFRFTkRfT1BfU1VCQ0xBU1MgPSAweDQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtNQVhfSUZS X0VYUFJFU1NJT05fREVQVEggPSAweDkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtJTlZBTElEX0FS UkFZX0lOREVYID0gMHhGRkZGRkZGRg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK0VGSV9JRlJfVFlQ RV9OVU1fU0laRV84ID0gMHgwMA0KPiA+DQo+ID4gK0VGSV9JRlJfVFlQRV9OVU1fOF9CSVRfU0la RSA9IDB4MDENCj4gPg0KPiA+ICtFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTYgPSAweDAxDQo+ID4N Cj4gPiArRUZJX0lGUl9UWVBFX05VTV8xNl9CSVRfU0laRSA9IDB4MDINCj4gPg0KPiA+ICtFRklf SUZSX1RZUEVfTlVNX1NJWkVfMzIgPSAweDAyDQo+ID4NCj4gPiArRUZJX0lGUl9UWVBFX05VTV8z Ml9CSVRfU0laRSA9IDB4MDQNCj4gPg0KPiA+ICtFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQgPSAw eDAzDQo+ID4NCj4gPiArRUZJX0lGUl9UWVBFX05VTV82NF9CSVRfU0laRSA9IDB4MDgNCj4gPg0K PiA+ICtFRklfSUZSX1RZUEVfQk9PTEVBTiA9IDB4MDQNCj4gPg0KPiA+ICtFRklfSUZSX1RZUEVf VElNRSA9IDB4MDUNCj4gPg0KPiA+ICtFRklfSUZSX1RZUEVfREFURSA9IDB4MDYNCj4gPg0KPiA+ ICtFRklfSUZSX1RZUEVfU1RSSU5HID0gMHgwNw0KPiA+DQo+ID4gK0VGSV9JRlJfVFlQRV9PVEhF UiA9IDB4MDgNCj4gPg0KPiA+ICtFRklfSUZSX1RZUEVfVU5ERUZJTkVEID0gMHgwOQ0KPiA+DQo+ ID4gK0VGSV9JRlJfVFlQRV9BQ1RJT04gPSAweDBBDQo+ID4NCj4gPiArRUZJX0lGUl9UWVBFX0JV RkZFUiA9IDB4MEINCj4gPg0KPiA+ICtFRklfSUZSX1RZUEVfUkVGID0gMHgwQw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK0VGSV9JRlJfRkxBR1NfSE9SSVpPTlRBTCA9IDB4MDEN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtFRklfSUZSX0ZMQUdfUkVBRF9PTkxZID0gMHgwMQ0KPiA+ DQo+ID4gK0VGSV9JRlJfRkxBR19DQUxMQkFDSyA9IDB4MDQNCj4gPg0KPiA+ICtFRklfSUZSX0ZM QUdfUkVTRVRfUkVRVUlSRUQgPSAweDEwDQo+ID4NCj4gPiArRUZJX0lGUl9GTEFHX1JFU1RfU1RZ TEUgPSAweDIwDQo+ID4NCj4gPiArRUZJX0lGUl9GTEFHX1JFQ09OTkVDVF9SRVFVSVJFRCA9IDB4 NDANCj4gPg0KPiA+ICtFRklfSUZSX0ZMQUdfT1BUSU9OU19PTkxZID0gMHg4MA0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gK0VGSV9JRlJfU1RSSU5HX01VTFRJX0xJTkUgPSAweDAxDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArRURLSUlfSUZSX0RJU1BMQVlfQklUID0gMHhDMA0KPiA+DQo+ID4gK0VES0lJ X0lGUl9ESVNQTEFZX0lOVF9ERUNfQklUID0gMHgwMA0KPiA+DQo+ID4gK0VES0lJX0lGUl9ESVNQ TEFZX1VJTlRfREVDX0JJVCA9IDB4NDANCj4gPg0KPiA+ICtFREtJSV9JRlJfRElTUExBWV9VSU5U X0hFWF9CSVQgPSAweDgwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArRURLSUlfSUZSX05VTUVSSUNf U0laRV9CSVQgPSAweDNGDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArRUZJX0lGUl9NQVhfREVGQVVM VF9UWVBFID0gMHgxMA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK0VGSV9ISUlfU0lCVF9FTkQgPSAw eDAwDQo+ID4NCj4gPiArRUZJX0hJSV9TSUJUX1NUUklOR19TQ1NVID0gMHgxMA0KPiA+DQo+ID4g K0VGSV9ISUlfU0lCVF9TVFJJTkdfU0NTVV9GT05UID0gMHgxMQ0KPiA+DQo+ID4gK0VGSV9ISUlf U0lCVF9TVFJJTkdTX1NDU1UgPSAweDEyDQo+ID4NCj4gPiArRUZJX0hJSV9TSUJUX1NUUklOR1Nf U0NTVV9GT05UID0gMHgxMw0KPiA+DQo+ID4gK0VGSV9ISUlfU0lCVF9TVFJJTkdfVUNTMiA9IDB4 MTQNCj4gPg0KPiA+ICtFRklfSElJX1NJQlRfU1RSSU5HX1VDUzJfRk9OVCA9IDB4MTUNCj4gPg0K PiA+ICtFRklfSElJX1NJQlRfU1RSSU5HU19VQ1MyID0gMHgxNg0KPiA+DQo+ID4gK0VGSV9ISUlf U0lCVF9TVFJJTkdTX1VDUzJfRk9OVCA9IDB4MTcNCj4gPg0KPiA+ICtFRklfSElJX1NJQlRfRFVQ TElDQVRFID0gMHgyMA0KPiA+DQo+ID4gK0VGSV9ISUlfU0lCVF9TS0lQMiA9IDB4MjENCj4gPg0K PiA+ICtFRklfSElJX1NJQlRfU0tJUDEgPSAweDIyDQo+ID4NCj4gPiArRUZJX0hJSV9TSUJUX0VY VDEgPSAweDMwDQo+ID4NCj4gPiArRUZJX0hJSV9TSUJUX0VYVDIgPSAweDMxDQo+ID4NCj4gPiAr RUZJX0hJSV9TSUJUX0VYVDQgPSAweDMyDQo+ID4NCj4gPiArRUZJX0hJSV9TSUJUX0ZPTlQgPSAw eDQwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArQmFzaWNUeXBlcyA9IFsNCj4gPg0KPiA+ICsgICAg RUZJX0lGUl9UWVBFX05VTV9TSVpFXzgsDQo+ID4NCj4gPiArICAgIEVGSV9JRlJfVFlQRV9OVU1f U0laRV8xNiwNCj4gPg0KPiA+ICsgICAgRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyLA0KPiA+DQo+ ID4gKyAgICBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQsDQo+ID4NCj4gPiArXQ0KPiA+DQo+ID4g K0Jhc2ljQ0ludHMgPSBbY191aW50NjQsIGNfdWludDMyLCBjX3VpbnQxNiwgY191aW50OCwgY191 Ynl0ZSwgY191c2hvcnRdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3Mg RUZJX0dVSUQoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4g KyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgiRGF0YTEiLCBjX3VpbnQzMiks DQo+ID4NCj4gPiArICAgICAgICAoIkRhdGEyIiwgY191aW50MTYpLA0KPiA+DQo+ID4gKyAgICAg ICAgKCJEYXRhMyIsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgICAgICgiRGF0YTQiLCBjX3Vi eXRlICogOCksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVm IGZyb21fbGlzdChzZWxmLCBsaXN0Zm9ybWF0OiBsaXN0KSAtPiBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5EYXRhMSA9IGxpc3Rmb3JtYXRbMF0NCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu RGF0YTIgPSBsaXN0Zm9ybWF0WzFdDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkRhdGEzID0gbGlz dGZvcm1hdFsyXQ0KPiA+DQo+ID4gKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoOCk6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5EYXRhNFtpXSA9IGxpc3Rmb3JtYXRbaSArIDNdDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGRlZiB0b19zdHJpbmcoc2VsZikgLT4gc3RyOg0KPiA+DQo+ID4g KyAgICAgICAgR3VpZFN0ciA9IGYie3t7c2VsZi5EYXRhMTojeH0sIHtzZWxmLkRhdGEyOiN4fSwg e3NlbGYuRGF0YTM6I3h9LCB7eyB7JywNCj4gPiAnLmpvaW4oZid7eDojeH0nIGZvciB4IGluIHNl bGYuRGF0YTQpfX19fX0iDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gR3Vp ZFN0cg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX19jbXBfXyhzZWxmLCBvdGhlcmd1 aWQpIC0+IGJvb2w6DQo+ID4NCj4gPiArICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlcmd1 aWQsIEVGSV9HVUlEKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gIklucHV0IGlzIG5v dCB0aGUgR1VJRCBpbnN0YW5jZSEiDQo+ID4NCj4gPiArICAgICAgICBydCA9IEZhbHNlDQo+ID4N Cj4gPiArICAgICAgICBpZiAoDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5EYXRhMSA9PSBv dGhlcmd1aWQuRGF0YTENCj4gPg0KPiA+ICsgICAgICAgICAgICBhbmQgc2VsZi5EYXRhMiA9PSBv dGhlcmd1aWQuRGF0YTINCj4gPg0KPiA+ICsgICAgICAgICAgICBhbmQgc2VsZi5EYXRhMyA9PSBv dGhlcmd1aWQuRGF0YTMNCj4gPg0KPiA+ICsgICAgICAgICk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcnQgPSBUcnVlDQo+ID4NCj4gPiArICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoOCk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJ0ID0gcnQgJiAoc2VsZi5EYXRhNFtpXSA9PSBvdGhl cmd1aWQuRGF0YTRbaV0pDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gcnQNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtHdWlkQXJyYXkgPSBjX3VieXRlICogOA0KPiA+DQo+ID4g K0VGSV9ISUlfUExBVEZPUk1fU0VUVVBfRk9STVNFVF9HVUlEID0gRUZJX0dVSUQoDQo+ID4NCj4g PiArICAgIDB4OTMwMzk5NzEsIDB4ODU0NSwgMHg0QjA0LCBHdWlkQXJyYXkoMHhCNCwgMHg1RSwg MHgzMiwgMHhFQiwgMHg4MywNCj4gPiAweDI2LCAweDQsIDB4RSkNCj4gPg0KPiA+ICspDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArRUZJX0lGUl9USUFOT19HVUlEID0gRUZJX0dVSUQoDQo+ID4NCj4g PiArICAgIDB4RjBCMTczNSwgMHg4N0EwLCAweDQxOTMsIEd1aWRBcnJheSgweEIyLCAweDY2LCAw eDUzLCAweDhDLCAweDM4LA0KPiAweEFGLA0KPiA+IDB4NDgsIDB4Q0UpDQo+ID4NCj4gPiArKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gK0VES0lJX0lGUl9CSVRfVkFSU1RPUkVfR1VJRCA9ICgNCj4g Pg0KPiA+ICsgICAgMHg4MkRERDY4QiwNCj4gPg0KPiA+ICsgICAgMHg5MTYzLA0KPiA+DQo+ID4g KyAgICAweDQxODcsDQo+ID4NCj4gPiArICAgIEd1aWRBcnJheSgweDlCLCAweDI3LCAweDIwLCAw eEE4LCAweEZELCAweDYwLCAweEE3LCAweDFEKSwNCj4gPg0KPiA+ICspDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArRUZJX0lGUl9GUkFNRVdPUktfR1VJRCA9ICgNCj4gPg0KPiA+ICsgICAgMHgzMUNB NUQxQSwNCj4gPg0KPiA+ICsgICAgMHhENTExLA0KPiA+DQo+ID4gKyAgICAweDQ5MzEsDQo+ID4N Cj4gPiArICAgIEd1aWRBcnJheSgweEI3LCAweDgyLCAweEFFLCAweDZCLCAweDJCLCAweDE3LCAw eDhDLCAweEQ3KSwNCj4gPg0KPiA+ICspDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArY2xhc3MgRUZJX0lGUl9PUF9IRUFERVIoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3Bh Y2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgi T3BDb2RlIiwgY191Ynl0ZSksDQo+ID4NCj4gPiArICAgICAgICAoIkxlbmd0aCIsIGNfdWJ5dGUs IDcpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJTY29wZSIsIGNfdWJ5dGUsIDEpLA0KPiA+DQo+ID4g KyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9G T1JNX1NFVChTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiAr ICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09Q X0hFQURFUiksDQo+ID4NCj4gPiArICAgICAgICAoIkd1aWQiLCBFRklfR1VJRCksDQo+ID4NCj4g PiArICAgICAgICAoIkZvcm1TZXRUaXRsZSIsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgICAg ICgiSGVscCIsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgICAgICgiRmxhZ3MiLCBjX3VieXRl KSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2Ns YXNzIEVGSV9JRlJfR1VJRF9DTEFTUyhTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18g PSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCJIZWFk ZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgICAgICAoIkd1aWQiLCBFRklf R1VJRCksDQo+ID4NCj4gPiArICAgICAgICAoIkV4dGVuZE9wQ29kZSIsIGNfdWJ5dGUpLA0KPiA+ DQo+ID4gKyAgICAgICAgKCJDbGFzcyIsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfR1VJRF9TVUJDTEFT UyhTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9m aWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURF UiksDQo+ID4NCj4gPiArICAgICAgICAoIkd1aWQiLCBFRklfR1VJRCksDQo+ID4NCj4gPiArICAg ICAgICAoIkV4dGVuZE9wQ29kZSIsIGNfdWJ5dGUpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJTdWJD bGFzcyIsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfREVGQVVMVFNUT1JFKFN0cnVjdHVyZSk6DQo+ID4N Cj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4g PiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAg ICAgICgiRGVmYXVsdE5hbWUiLCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgICAgICAoIkRlZmF1 bHRJZCIsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfVkFSU1RPUkUoU3RydWN0dXJlKToNCj4gPg0KPiA+ ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsg ICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAg KCJHdWlkIiwgRUZJX0dVSUQpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJWYXJTdG9yZUlkIiwgY191 aW50MTYpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJTaXplIiwgY191aW50MTYpLA0KPiA+DQo+ID4g KyAgICAgICAgKCJOYW1lIiwgQVJSQVkoY191Ynl0ZSwgMikpLA0KPiA+DQo+ID4gKyAgICBdDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArZGVmIFJlZmluZV9FRklfSUZSX1ZBUlNU T1JFKE51bXMpOg0KPiA+DQo+ID4gKyAgICBjbGFzcyBFRklfSUZSX1ZBUlNUT1JFKFN0cnVjdHVy ZSk6DQo+ID4NCj4gPiArICAgICAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgICAgICBfZmll bGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVB REVSKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAoIkd1aWQiLCBFRklfR1VJRCksDQo+ID4NCj4g PiArICAgICAgICAgICAgKCJWYXJTdG9yZUlkIiwgY191aW50MTYpLA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICgiU2l6ZSIsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAoIk5hbWUi LCBBUlJBWShjX3VieXRlLCBOdW1zKSksDQo+ID4NCj4gPiArICAgICAgICBdDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZikgLT4gTm9uZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLkhlYWRlciA9IEVGSV9JRlJfT1BfSEVBREVSKCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgcmV0dXJuIEVGSV9JRlJfVkFSU1RPUkUoKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfVkFSU1RPUkVfRUZJKFN0cnVjdHVy ZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBb DQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0K PiA+ICsgICAgICAgICgiVmFyU3RvcmVJZCIsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgICAg ICgiR3VpZCIsIEVGSV9HVUlEKSwNCj4gPg0KPiA+ICsgICAgICAgICgiQXR0cmlidXRlcyIsIGNf dWludDMyKSwNCj4gPg0KPiA+ICsgICAgICAgICgiU2l6ZSIsIGNfdWludDE2KSwNCj4gPg0KPiA+ ICsgICAgICAgICgiTmFtZSIsIEFSUkFZKGNfdWJ5dGUsIDIpKSwNCj4gPg0KPiA+ICsgICAgXQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2RlZiBSZWZpbmVfRUZJX0lGUl9WQVJT VE9SRV9FRkkoTnVtcyk6DQo+ID4NCj4gPiArICAgIGNsYXNzIEVGSV9JRlJfVkFSU1RPUkVfRUZJ KFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgICAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAg ICAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICAgICAoIkhlYWRlciIsIEVGSV9J RlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAoIlZhclN0b3JlSWQiLCBjX3Vp bnQxNiksDQo+ID4NCj4gPiArICAgICAgICAgICAgKCJHdWlkIiwgRUZJX0dVSUQpLA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICgiQXR0cmlidXRlcyIsIGNfdWludDMyKSwNCj4gPg0KPiA+ICsgICAg ICAgICAgICAoIlNpemUiLCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgICAgICAgICAgKCJOYW1l IiwgQVJSQVkoY191Ynl0ZSwgTnVtcykpLA0KPiA+DQo+ID4gKyAgICAgICAgXQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5IZWFkZXIgPSBFRklfSUZSX09QX0hFQURFUigpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIHJldHVybiBFRklfSUZSX1ZBUlNUT1JFX0VGSSgpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9HVUlEKFN0cnVjdHVyZSk6 DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ ICsgICAgICAgICgiR3VpZCIsIEVGSV9HVUlEKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2RlZiBSZWZpbmVfRUZJX0lGUl9CVUZGRVIoTnVtcyk6 DQo+ID4NCj4gPiArICAgIGNsYXNzIEVGSV9JRlJfQlVGRkVSKFN0cnVjdHVyZSk6DQo+ID4NCj4g PiArICAgICAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgICAgICBfZmllbGRzXyA9IFsNCj4g Pg0KPiA+ICsgICAgICAgICAgICAoIkRhdGEiLCBBUlJBWShjX3VieXRlLCBOdW1zKSksDQo+ID4N Cj4gPiArICAgICAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU2V0QnVm ZmVyKHNlbGYsIEJ1ZmZlcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5CdWZmZXIgPSBC dWZmZXINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgcmV0dXJuIEVGSV9JRlJfQlVGRkVSKCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtkZWYgUmVmaW5lX0VGSV9JRlJfQklU X0JVRkZFUihOdW1zKToNCj4gPg0KPiA+ICsgICAgY2xhc3MgRUZJX0lGUl9CSVRfQlVGRkVSKFN0 cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgICAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgICAg ICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICAgICAoIkRhdGEiLCBBUlJBWShjX3Vi eXRlLCBOdW1zKSksDQo+ID4NCj4gPiArICAgICAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgU2V0QnVmZmVyKHNlbGYsIEJ1ZmZlcik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5CdWZmZXIgPSBCdWZmZXINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgcmV0dXJu IEVGSV9JRlJfQklUX0JVRkZFUg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2Rl ZiBSZWZpbmVfRUZJX0lGUl9CSVQoVHlwZSwgUHJlQml0cywgU2l6ZSwgRGF0YSk6DQo+ID4NCj4g PiArICAgIGlmIFByZUJpdHMgPT0gMDoNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGNs YXNzIFJlZmluZV9FRklfSUZSX0JJVChTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgICAgICAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgKCJEYXRhIiwgVHlwZSwgU2l6ZSksICAjIHRoZSByZWFsbHkgbmVl ZGVkIGRhdGENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgKCJQb3N0Zml4IiwgVHlwZSwgc2l6 ZW9mKFR5cGUpICogOCAtIFNpemUpLA0KPiA+DQo+ID4gKyAgICAgICAgICAgIF0NCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgRGF0YSk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuRGF0YSA9IERhdGENCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZWxpZiBzaXplb2YoVHlwZSkgKiA4IC0gU2l6ZSAtIFByZUJpdHMgPT0gMDoNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGNsYXNzIFJlZmluZV9FRklfSUZSX0JJVChTdHJ1 Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAg ICAgICAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgKCJQcmVmaXgi LCBUeXBlLCBQcmVCaXRzKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgKCJEYXRhIiwgVHlw ZSwgU2l6ZSksICAjIHRoZSByZWFsbHkgbmVlZGVkIGRhdGENCj4gPg0KPiA+ICsgICAgICAgICAg ICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYs IERhdGEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLkRhdGEgPSBEYXRhDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGVsc2U6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBjbGFzcyBSZWZpbmVfRUZJX0lGUl9CSVQoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgICAgICAgICAgX2ZpZWxkc18gPSBbDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICgiUHJlZml4IiwgVHlwZSwgUHJlQml0cyksDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICgiRGF0YSIsIFR5cGUsIFNpemUpLCAgIyB0aGUgcmVhbGx5IG5l ZWRlZCBkYXRhDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICgiUG9zdGZpeCIsIFR5cGUsIHNp emVvZihUeXBlKSAqIDggLSBTaXplIC0gUHJlQml0cyksDQo+ID4NCj4gPiArICAgICAgICAgICAg XQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBE YXRhKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5EYXRhID0gRGF0YQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICByZXR1cm4gUmVmaW5lX0VGSV9JRlJfQklUKERhdGEpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9HVUlEX1ZBUkVRTkFN RShTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9m aWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURF UiksDQo+ID4NCj4gPiArICAgICAgICAoIkd1aWQiLCBFRklfR1VJRCksDQo+ID4NCj4gPiArICAg ICAgICAoIkV4dGVuZE9wQ29kZSIsIGNfdWludDgpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJRdWVz dGlvbklkIiwgY191aW50MTYpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJOYW1lSWQiLCBjX3VpbnQx NiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtj bGFzcyBFRklfSElJX1BBQ0tBR0VfSEVBREVSKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9w YWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAo Ikxlbmd0aCIsIGNfdWludDMyLCAyNCksDQo+ID4NCj4gPiArICAgICAgICAoIlR5cGUiLCBjX3Vp bnQzMiwgOCksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICtjbGFzcyBFRklfSElJX1NUUklOR19QQUNLQUdFX0hEUihTdHJ1Y3R1cmUpOg0KPiA+DQo+ ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4g KyAgICAgICAgKCJIZWFkZXIiLCBFRklfSElJX1BBQ0tBR0VfSEVBREVSKSwNCj4gPg0KPiA+ICsg ICAgICAgICgiSGRyU2l6ZSIsIGNfdWludDMyKSwNCj4gPg0KPiA+ICsgICAgICAgICgiU3RyaW5n SW5mb09mZnNldCIsIGNfdWludDMyKSwNCj4gPg0KPiA+ICsgICAgICAgICgiTGFuZ3VhZ2VXaW5k b3ciLCBjX3VzaG9ydCAqIDE2KSwNCj4gPg0KPiA+ICsgICAgICAgICgiTGFuZ3VhZ2VOYW1lIiwg Y191aW50MTYpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJMYW5ndWFnZSIsIGNfY2hhciAqIDIpLA0K PiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3Mg RUZJX0lGUl9WQVJTVE9SRV9OQU1FX1ZBTFVFKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9w YWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAo IkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgiVmFyU3Rv cmVJZCIsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgICAgICgiR3VpZCIsIEVGSV9HVUlEKSwN Cj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNz IEVGSV9JRlJfRk9STShTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4N Cj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklf SUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgICAgICAoIkZvcm1JZCIsIGNfdWludDE2KSwN Cj4gPg0KPiA+ICsgICAgICAgICgiRm9ybVRpdGxlIiwgY191aW50MTYpLA0KPiA+DQo+ID4gKyAg ICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9HVUlE X0JBTk5FUihTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiAr ICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09Q X0hFQURFUiksDQo+ID4NCj4gPiArICAgICAgICAoIkd1aWQiLCBFRklfR1VJRCksDQo+ID4NCj4g PiArICAgICAgICAoIkV4dGVuZE9wQ29kZSIsIGNfdWJ5dGUpLA0KPiA+DQo+ID4gKyAgICAgICAg KCJUaXRsZSIsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgICAgICgiTGluZU51bWJlciIsIGNf dWludDE2KSwNCj4gPg0KPiA+ICsgICAgICAgICgiQWxpZ25tZW50IiwgY191Ynl0ZSksDQo+ID4N Cj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklf SUZSX0dVSURfVElNRU9VVChTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCJIZWFkZXIiLCBF RklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgICAgICAoIkd1aWQiLCBFRklfR1VJRCks DQo+ID4NCj4gPiArICAgICAgICAoIkV4dGVuZE9wQ29kZSIsIGNfdWJ5dGUpLA0KPiA+DQo+ID4g KyAgICAgICAgKCJUaW1lT3V0IiwgY191aW50MTYpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9HVUlEX0xBQkVMKFN0cnVj dHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18g PSBbDQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4g Pg0KPiA+ICsgICAgICAgICgiR3VpZCIsIEVGSV9HVUlEKSwNCj4gPg0KPiA+ICsgICAgICAgICgi RXh0ZW5kT3BDb2RlIiwgY191Ynl0ZSksDQo+ID4NCj4gPiArICAgICAgICAoIk51bWJlciIsIGNf dWludDE2KSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gK2NsYXNzIEVGSV9JRlJfUlVMRShTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18g PSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCJIZWFk ZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgICAgICAoIlJ1bGVJZCIsIGNf dWJ5dGUpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArY2xhc3MgRUZJX0lGUl9TVEFURU1FTlRfSEVBREVSKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiAr ICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAg ICAgICAoIlByb21wdCIsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgICAgICgiSGVscCIsIGNf dWludDE2KSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gK2NsYXNzIEVGSV9JRlJfU1VCVElUTEUoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3Bh Y2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgi SGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJTdGF0ZW1l bnQiLCBFRklfSUZSX1NUQVRFTUVOVF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJGbGFn cyIsIGNfdWJ5dGUpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9URVhUKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9w YWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAo IkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgiU3RhdGVt ZW50IiwgRUZJX0lGUl9TVEFURU1FTlRfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgiVGV4 dFR3byIsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfSU1BR0UoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsg ICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAg ICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJJ ZCIsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gK2NsYXNzIFZhclN0b3JlSW5mb05vZGUoVW5pb24pOg0KPiA+DQo+ID4gKyAgICBf cGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAg KCJWYXJOYW1lIiwgY191aW50MTYpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJWYXJPZmZzZXQiLCBj X3VpbnQxNiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICtjbGFzcyBFRklfSUZSX1FVRVNUSU9OX0hFQURFUihTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4g KyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAg ICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX1NUQVRFTUVOVF9IRUFERVIpLA0KPiA+DQo+ID4gKyAg ICAgICAgKCJRdWVzdGlvbklkIiwgY191aW50MTYpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJWYXJT dG9yZUlkIiwgY191aW50MTYpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJWYXJTdG9yZUluZm8iLCBW YXJTdG9yZUluZm9Ob2RlKSwNCj4gPg0KPiA+ICsgICAgICAgICgiRmxhZ3MiLCBjX3VieXRlKSwN Cj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNz IHU4Tm9kZShTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiAr ICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCJNaW5WYWx1ZSIsIGNfdWJ5dGUp LA0KPiA+DQo+ID4gKyAgICAgICAgKCJNYXhWYWx1ZSIsIGNfdWJ5dGUpLA0KPiA+DQo+ID4gKyAg ICAgICAgKCJTdGVwIiwgY191Ynl0ZSksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyB1MTZOb2RlKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiAr ICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAg ICAgICAoIk1pblZhbHVlIiwgY191aW50MTYpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJNYXhWYWx1 ZSIsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgICAgICgiU3RlcCIsIGNfdWludDE2KSwNCj4g Pg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIHUz Mk5vZGUoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAg ICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgiTWluVmFsdWUiLCBjX3VpbnQzMiks DQo+ID4NCj4gPiArICAgICAgICAoIk1heFZhbHVlIiwgY191aW50MzIpLA0KPiA+DQo+ID4gKyAg ICAgICAgKCJTdGVwIiwgY191aW50MzIpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgdTY0Tm9kZShTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4g KyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAg ICAgICAgKCJNaW5WYWx1ZSIsIGNfdWludDY0KSwNCj4gPg0KPiA+ICsgICAgICAgICgiTWF4VmFs dWUiLCBjX3VpbnQ2NCksDQo+ID4NCj4gPiArICAgICAgICAoIlN0ZXAiLCBjX3VpbnQ2NCksDQo+ ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBN SU5NQVhTVEVQX0RBVEEoVW5pb24pOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4g PiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCJ1OCIsIHU4Tm9kZSksDQo+ ID4NCj4gPiArICAgICAgICAoInUxNiIsIHUxNk5vZGUpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJ1 MzIiLCB1MzJOb2RlKSwNCj4gPg0KPiA+ICsgICAgICAgICgidTY0IiwgdTY0Tm9kZSksDQo+ID4N Cj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtFRklfSUZSX05V TUVSSUNfU0laRSA9IDB4MDMNCj4gPg0KPiA+ICtFRklfSUZSX05VTUVSSUNfU0laRV8xID0gMHgw MA0KPiA+DQo+ID4gK0VGSV9JRlJfTlVNRVJJQ19TSVpFXzIgPSAweDAxDQo+ID4NCj4gPiArRUZJ X0lGUl9OVU1FUklDX1NJWkVfNCA9IDB4MDINCj4gPg0KPiA+ICtFRklfSUZSX05VTUVSSUNfU0la RV84ID0gMHgwMw0KPiA+DQo+ID4gK0VGSV9JRlJfRElTUExBWSA9IDB4MzANCj4gPg0KPiA+ICtF RklfSUZSX0RJU1BMQVlfSU5UX0RFQyA9IDB4MDANCj4gPg0KPiA+ICtFRklfSUZSX0RJU1BMQVlf VUlOVF9ERUMgPSAweDEwDQo+ID4NCj4gPiArRUZJX0lGUl9ESVNQTEFZX1VJTlRfSEVYID0gMHgy MA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfT05FX09G KFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2Zp ZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVS KSwNCj4gPg0KPiA+ICsgICAgICAgICgiUXVlc3Rpb24iLCBFRklfSUZSX1FVRVNUSU9OX0hFQURF UiksDQo+ID4NCj4gPiArICAgICAgICAoIkZsYWdzIiwgY191Ynl0ZSksDQo+ID4NCj4gPiArICAg ICAgICAoIkRhdGEiLCBNSU5NQVhTVEVQX0RBVEEpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArZGVmIFJlZmluZV9FRklfSUZSX09ORV9PRihUeXBl KToNCj4gPg0KPiA+ICsgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfODoNCj4g Pg0KPiA+ICsgICAgICAgIERhdGFUeXBlID0gdThOb2RlDQo+ID4NCj4gPiArICAgIGVsaWYgVHlw ZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTY6DQo+ID4NCj4gPiArICAgICAgICBEYXRhVHlw ZSA9IHUxNk5vZGUNCj4gPg0KPiA+ICsgICAgZWxpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1f U0laRV8zMjoNCj4gPg0KPiA+ICsgICAgICAgIERhdGFUeXBlID0gdTMyTm9kZQ0KPiA+DQo+ID4g KyAgICBlbGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KPiA+DQo+ID4gKyAg ICAgICAgRGF0YVR5cGUgPSB1NjROb2RlDQo+ID4NCj4gPiArICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICBEYXRhVHlwZSA9IHUzMk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xh c3MgRUZJX0lGUl9PTkVfT0YoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgICAgIF9wYWNrXyA9 IDENCj4gPg0KPiA+ICsgICAgICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgICAg ICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICgi UXVlc3Rpb24iLCBFRklfSUZSX1FVRVNUSU9OX0hFQURFUiksDQo+ID4NCj4gPiArICAgICAgICAg ICAgKCJGbGFncyIsIGNfdWJ5dGUpLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICgiRGF0YSIsIERh dGFUeXBlKSwNCj4gPg0KPiA+ICsgICAgICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg cmV0dXJuIEVGSV9JRlJfT05FX09GKCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICtFRklfSUZSX0NIRUNLQk9YX0RFRkFVTFQgPSAweDAxDQo+ID4NCj4gPiArRUZJX0lGUl9DSEVD S0JPWF9ERUZBVUxUX01GRyA9IDB4MDINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICtjbGFzcyBFRklfSUZSX0NIRUNLQk9YKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNr XyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoIkhl YWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgiUXVlc3Rpb24i LCBFRklfSUZSX1FVRVNUSU9OX0hFQURFUiksDQo+ID4NCj4gPiArICAgICAgICAoIkZsYWdzIiwg Y191Ynl0ZSksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICtjbGFzcyBFRklfSUZSX05VTUVSSUMoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3Bh Y2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgi SGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJRdWVzdGlv biIsIEVGSV9JRlJfUVVFU1RJT05fSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgiRmxhZ3Mi LCBjX3VieXRlKSwNCj4gPg0KPiA+ICsgICAgICAgICgiRGF0YSIsIE1JTk1BWFNURVBfREFUQSks DQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtkZWYg UmVmaW5lX0VGSV9JRlJfTlVNRVJJQyhUeXBlKToNCj4gPg0KPiA+ICsgICAgaWYgVHlwZSA9PSBF RklfSUZSX1RZUEVfTlVNX1NJWkVfODoNCj4gPg0KPiA+ICsgICAgICAgIERhdGFUeXBlID0gdThO b2RlDQo+ID4NCj4gPiArICAgIGVsaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTY6 DQo+ID4NCj4gPiArICAgICAgICBEYXRhVHlwZSA9IHUxNk5vZGUNCj4gPg0KPiA+ICsgICAgZWxp ZiBUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMjoNCj4gPg0KPiA+ICsgICAgICAgIERh dGFUeXBlID0gdTMyTm9kZQ0KPiA+DQo+ID4gKyAgICBlbGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBF X05VTV9TSVpFXzY0Og0KPiA+DQo+ID4gKyAgICAgICAgRGF0YVR5cGUgPSB1NjROb2RlDQo+ID4N Cj4gPiArICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICBEYXRhVHlwZSA9IHUzMk5vZGUNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgRUZJX0lGUl9OVU1FUklDKFN0cnVjdHVyZSk6 DQo+ID4NCj4gPiArICAgICAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgICAgICBfZmllbGRz XyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVS KSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAoIlF1ZXN0aW9uIiwgRUZJX0lGUl9RVUVTVElPTl9I RUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICgiRmxhZ3MiLCBjX3VieXRlKSwNCj4gPg0K PiA+ICsgICAgICAgICAgICAoIkRhdGEiLCBEYXRhVHlwZSksDQo+ID4NCj4gPiArICAgICAgICBd DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIHJldHVybiBFRklfSUZSX05VTUVSSUMoKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfUEFTU1dPUkQoU3Ry dWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRz XyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0K PiA+DQo+ID4gKyAgICAgICAgKCJRdWVzdGlvbiIsIEVGSV9JRlJfUVVFU1RJT05fSEVBREVSKSwN Cj4gPg0KPiA+ICsgICAgICAgICgiTWluU2l6ZSIsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAg ICAgICgiTWF4U2l6ZSIsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9ISUlfVElNRShTdHJ1Y3R1cmUpOg0KPiA+ DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ ID4gKyAgICAgICAgKCJIb3VyIiwgY191Ynl0ZSksDQo+ID4NCj4gPiArICAgICAgICAoIk1pbnV0 ZSIsIGNfdWJ5dGUpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJTZWNvbmQiLCBjX3VieXRlKSwNCj4g Pg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVG SV9ISUlfREFURShTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4g PiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCJZZWFyIiwgY191aW50MTYp LA0KPiA+DQo+ID4gKyAgICAgICAgKCJNb250aCIsIGNfdWJ5dGUpLA0KPiA+DQo+ID4gKyAgICAg ICAgKCJEYXkiLCBjX3VieXRlKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9ISUlfUkVGKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiAr ICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAg ICAgICAoIlF1ZXN0aW9uSWQiLCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgICAgICAoIkZvcm1J ZCIsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgICAgICgiRm9ybVNldEd1aWQiLCBFRklfR1VJ RCksDQo+ID4NCj4gPiArICAgICAgICAoIkRldmljZVBhdGgiLCBjX3VpbnQxNiksDQo+ID4NCj4g PiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZS X1RZUEVfVkFMVUUoVW5pb24pOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiAr ICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCJ1OCIsIGNfdWJ5dGUpLA0KPiA+ DQo+ID4gKyAgICAgICAgKCJ1MTYiLCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgICAgICAoInUz MiIsIGNfdWludDMyKSwNCj4gPg0KPiA+ICsgICAgICAgICgidTY0IiwgY191aW50NjQpLA0KPiA+ DQo+ID4gKyAgICAgICAgKCJiIiwgY191Ynl0ZSksICAjDQo+ID4NCj4gPiArICAgICAgICAoInRp bWUiLCBFRklfSElJX1RJTUUpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJkYXRlIiwgRUZJX0hJSV9E QVRFKSwNCj4gPg0KPiA+ICsgICAgICAgICgic3RyaW5nIiwgY191aW50MTYpLA0KPiA+DQo+ID4g KyAgICAgICAgKCJyZWYiLCBFRklfSElJX1JFRiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX09ORV9PRl9PUFRJT04oU3Ry dWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRz XyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0K PiA+DQo+ID4gKyAgICAgICAgKCJPcHRpb24iLCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgICAg ICAoIkZsYWdzIiwgY191Ynl0ZSksDQo+ID4NCj4gPiArICAgICAgICAoIlR5cGUiLCBjX3VieXRl KSwNCj4gPg0KPiA+ICsgICAgICAgICgiVmFsdWUiLCBFRklfSUZSX1RZUEVfVkFMVUUpLA0KPiA+ DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArVHlwZURpY3Qg PSB7DQo+ID4NCj4gPiArICAgIEVGSV9JRlJfVFlQRV9OVU1fU0laRV84OiBjX3VieXRlLA0KPiA+ DQo+ID4gKyAgICBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTY6IGNfdXNob3J0LA0KPiA+DQo+ID4g KyAgICBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6IGNfdWxvbmcsDQo+ID4NCj4gPiArICAgIEVG SV9JRlJfVFlQRV9OVU1fU0laRV82NDogY191bG9uZ2xvbmcsDQo+ID4NCj4gPiArICAgIEVGSV9J RlJfVFlQRV9CT09MRUFOOiBjX3VieXRlLA0KPiA+DQo+ID4gKyAgICBFRklfSUZSX1RZUEVfVElN RTogRUZJX0hJSV9USU1FLA0KPiA+DQo+ID4gKyAgICBFRklfSUZSX1RZUEVfREFURTogRUZJX0hJ SV9EQVRFLA0KPiA+DQo+ID4gKyAgICBFRklfSUZSX1RZUEVfU1RSSU5HOiBjX3VpbnQxNiwNCj4g Pg0KPiA+ICsgICAgRUZJX0lGUl9UWVBFX1JFRjogRUZJX0hJSV9SRUYsDQo+ID4NCj4gPiArfQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gK1R5cGVTaXplRGljdCA9IHsNCj4gPg0KPiA+ICsgICAgRUZJ X0lGUl9UWVBFX05VTV9TSVpFXzg6IDEsDQo+ID4NCj4gPiArICAgIEVGSV9JRlJfVFlQRV9OVU1f U0laRV8xNjogMiwNCj4gPg0KPiA+ICsgICAgRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyOiA0LA0K PiA+DQo+ID4gKyAgICBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQ6IDgsDQo+ID4NCj4gPiArICAg IEVGSV9JRlJfVFlQRV9CT09MRUFOOiAxLA0KPiA+DQo+ID4gKyAgICBFRklfSUZSX1RZUEVfU1RS SU5HOiAyLA0KPiA+DQo+ID4gK30NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtTaXplVHlwZURpY3Qg PSB7DQo+ID4NCj4gPiArICAgIDE6IGNfdWludDgsDQo+ID4NCj4gPiArICAgIDI6IGNfdWludDE2 LA0KPiA+DQo+ID4gKyAgICA0OiBjX3VpbnQzMiwNCj4gPg0KPiA+ICsgICAgODogY191aW50NjQs DQo+ID4NCj4gPiArfQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2RlZiBSZWZp bmVfRUZJX0lGUl9PTkVfT0ZfT1BUSU9OKFR5cGUsIE51bXMpOg0KPiA+DQo+ID4gKyAgICBWYWx1 ZVR5cGUgPSBUeXBlRGljdFtUeXBlXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBF RklfSUZSX09ORV9PRl9PUFRJT04oU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgICAgIF9wYWNr XyA9IDENCj4gPg0KPiA+ICsgICAgICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAg ICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICgiT3B0aW9uIiwgY191aW50MTYpLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICgiRmxhZ3MiLCBj X3VieXRlKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAoIlR5cGUiLCBjX3VieXRlKSwNCj4gPg0K PiA+ICsgICAgICAgICAgICAoIlZhbHVlIiwgVmFsdWVUeXBlICogTnVtcyksDQo+ID4NCj4gPiAr ICAgICAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2Vs ZikgLT4gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkhlYWRlciA9IEVGSV9JRlJf T1BfSEVBREVSKCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgcmV0dXJuIEVGSV9JRlJfT05F X09GX09QVElPTigpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArRUZJX0lGUl9P UFRJT05fREVGQVVMVCA9IDB4MTANCj4gPg0KPiA+ICtFRklfSUZSX09QVElPTl9ERUZBVUxUX01G RyA9IDB4MjANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZS X1NVUFBSRVNTX0lGKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0K PiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9J RlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfTE9DS0VEKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAg IF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAg ICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfQUNUSU9OKFN0cnVjdHVy ZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBb DQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0K PiA+ICsgICAgICAgICgiUXVlc3Rpb24iLCBFRklfSUZSX1FVRVNUSU9OX0hFQURFUiksDQo+ID4N Cj4gPiArICAgICAgICAoIlF1ZXN0aW9uQ29uZmlnIiwgY191aW50MTYpLA0KPiA+DQo+ID4gKyAg ICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9SRUYo U3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmll bGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIp LA0KPiA+DQo+ID4gKyAgICAgICAgKCJRdWVzdGlvbiIsIEVGSV9JRlJfUVVFU1RJT05fSEVBREVS KSwNCj4gPg0KPiA+ICsgICAgICAgICgiRm9ybUlkIiwgY191aW50MTYpLA0KPiA+DQo+ID4gKyAg ICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9SRUYy KFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2Zp ZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVS KSwNCj4gPg0KPiA+ICsgICAgICAgICgiUXVlc3Rpb24iLCBFRklfSUZSX1FVRVNUSU9OX0hFQURF UiksDQo+ID4NCj4gPiArICAgICAgICAoIkZvcm1JZCIsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsg ICAgICAgICgiUXVlc3Rpb25JZCIsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfUkVGMyhTdHJ1Y3R1cmUp Og0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0K PiA+DQo+ID4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4g PiArICAgICAgICAoIlF1ZXN0aW9uIiwgRUZJX0lGUl9RVUVTVElPTl9IRUFERVIpLA0KPiA+DQo+ ID4gKyAgICAgICAgKCJGb3JtSWQiLCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgICAgICAoIlF1 ZXN0aW9uSWQiLCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgICAgICAoIkZvcm1TZXRJZCIsIEVG SV9HVUlEKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gK2NsYXNzIEVGSV9JRlJfUkVGNChTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18g PSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCJIZWFk ZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgICAgICAoIlF1ZXN0aW9uIiwg RUZJX0lGUl9RVUVTVElPTl9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJGb3JtSWQiLCBj X3VpbnQxNiksDQo+ID4NCj4gPiArICAgICAgICAoIlF1ZXN0aW9uSWQiLCBjX3VpbnQxNiksDQo+ ID4NCj4gPiArICAgICAgICAoIkZvcm1TZXRJZCIsIEVGSV9HVUlEKSwNCj4gPg0KPiA+ICsgICAg ICAgICgiRGV2aWNlUGF0aCIsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfUkVGNShTdHJ1Y3R1cmUpOg0K PiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+ DQo+ID4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiAr ICAgICAgICAoIlF1ZXN0aW9uIiwgRUZJX0lGUl9RVUVTVElPTl9IRUFERVIpLA0KPiA+DQo+ID4g KyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9S RVNFVF9CVVRUT04oU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lG Ul9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJTdGF0ZW1lbnQiLCBFRklfSUZSX1NU QVRFTUVOVF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJEZWZhdWx0SWQiLCBjX3VpbnQx NiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtj bGFzcyBFRklfSUZSX05PX1NVQk1JVF9JRihTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFj a18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCJI ZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgICAgICAoIkVycm9yIiwg Y191aW50MTYpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArY2xhc3MgRUZJX0lGUl9JTkNPTlNJU1RFTlRfSUYoU3RydWN0dXJlKToNCj4gPg0KPiA+ ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsg ICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAg KCJFcnJvciIsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfRVFfSURfVkFMKFN0cnVjdHVyZSk6DQo+ID4N Cj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4g PiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAg ICAgICgiUXVlc3Rpb25JZCIsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgICAgICgiVmFsdWUi LCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICtjbGFzcyBFRklfSUZSX0VRX0lEX0lEKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAg IF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAg ICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgiUXVl c3Rpb25JZDEiLCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgICAgICAoIlF1ZXN0aW9uSWQyIiwg Y191aW50MTYpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArY2xhc3MgRUZJX0lGUl9FUV9JRF9WQUxfTElTVChTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4g KyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAg ICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgICAgICAo IlF1ZXN0aW9uSWQiLCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgICAgICAoIkxpc3RMZW5ndGgi LCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgICAgICAoIlZhbHVlTGlzdCIsIGNfdWludDE2KSwg ICMNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2Rl ZiBSZWZpbmVfRUZJX0lGUl9FUV9JRF9WQUxfTElTVChOdW1zKToNCj4gPg0KPiA+ICsgICAgY2xh c3MgRUZJX0lGUl9FUV9JRF9WQUxfTElTVChTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICAgICAg X3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICAgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAg ICAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgICAg ICAgICAgKCJRdWVzdGlvbklkIiwgY191aW50MTYpLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICgi TGlzdExlbmd0aCIsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAoIlZhbHVlTGlz dCIsIGNfdWludDE2ICogTnVtcyksDQo+ID4NCj4gPiArICAgICAgICBdDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5IZWFkZXIgPSBFRklfSUZSX09QX0hFQURFUigpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIHJldHVybiBFRklfSUZSX0VRX0lEX1ZBTF9MSVNUKCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX0FORChTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4g KyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAg ICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgIF0NCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX09SKFN0cnVjdHVy ZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBb DQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0K PiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9J RlJfTk9UKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsg ICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1Bf SEVBREVSKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gK2NsYXNzIEVGSV9JRlJfR1JBWV9PVVRfSUYoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAg X3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAg ICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9EQVRFKFN0cnVjdHVyZSk6 DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ ICsgICAgICAgICgiUXVlc3Rpb24iLCBFRklfSUZSX1FVRVNUSU9OX0hFQURFUiksDQo+ID4NCj4g PiArICAgICAgICAoIkZsYWdzIiwgY191Ynl0ZSksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtFRklfUUZfREFURV9ZRUFSX1NVUFBSRVNTID0gMHgw MQ0KPiA+DQo+ID4gK0VGSV9RRl9EQVRFX01PTlRIX1NVUFBSRVNTID0gMHgwMg0KPiA+DQo+ID4g K0VGSV9RRl9EQVRFX0RBWV9TVVBQUkVTUyA9IDB4MDQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtF RklfUUZfREFURV9TVE9SQUdFID0gMHgzMA0KPiA+DQo+ID4gK1FGX0RBVEVfU1RPUkFHRV9OT1JN QUwgPSAweDAwDQo+ID4NCj4gPiArUUZfREFURV9TVE9SQUdFX1RJTUUgPSAweDEwDQo+ID4NCj4g PiArUUZfREFURV9TVE9SQUdFX1dBS0VVUCA9IDB4MjANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX1RJTUUoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAg X3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAg ICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJRdWVz dGlvbiIsIEVGSV9JRlJfUVVFU1RJT05fSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgiRmxh Z3MiLCBjX3VieXRlKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gK1FGX1RJTUVfSE9VUl9TVVBQUkVTUyA9IDB4MDENCj4gPg0KPiA+ICtRRl9USU1F X01JTlVURV9TVVBQUkVTUyA9IDB4MDINCj4gPg0KPiA+ICtRRl9USU1FX1NFQ09ORF9TVVBQUkVT UyA9IDB4MDQNCj4gPg0KPiA+ICtRRl9USU1FX1NUT1JBR0UgPSAweDMwDQo+ID4NCj4gPiArUUZf VElNRV9TVE9SQUdFX05PUk1BTCA9IDB4MDANCj4gPg0KPiA+ICtRRl9USU1FX1NUT1JBR0VfVElN RSA9IDB4MTANCj4gPg0KPiA+ICtRRl9USU1FX1NUT1JBR0VfV0FLRVVQID0gMHgyMA0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfU1RSSU5HKFN0cnVjdHVy ZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBb DQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0K PiA+ICsgICAgICAgICgiUXVlc3Rpb24iLCBFRklfSUZSX1FVRVNUSU9OX0hFQURFUiksDQo+ID4N Cj4gPiArICAgICAgICAoIk1pblNpemUiLCBjX3VieXRlKSwNCj4gPg0KPiA+ICsgICAgICAgICgi TWF4U2l6ZSIsIGNfdWJ5dGUpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJGbGFncyIsIGNfdWJ5dGUp LA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xh c3MgRUZJX0lGUl9SRUZSRVNIKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDEN Cj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIs IEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgiUmVmcmVzaEludGVydmFs IiwgY191Ynl0ZSksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICtjbGFzcyBFRklfSUZSX0RJU0FCTEVfSUYoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsg ICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAg ICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9UT19MT1dFUihTdHJ1 Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNf ID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+ ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBF RklfSUZSX1RPX1VQUEVSKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4g Pg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVG SV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfTUFQKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAg IF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAg ICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfT1JERVJFRF9MSVNUKFN0 cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxk c18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwN Cj4gPg0KPiA+ICsgICAgICAgICgiUXVlc3Rpb24iLCBFRklfSUZSX1FVRVNUSU9OX0hFQURFUiks DQo+ID4NCj4gPiArICAgICAgICAoIk1heENvbnRhaW5lcnMiLCBjX3VieXRlKSwNCj4gPg0KPiA+ ICsgICAgICAgICgiRmxhZ3MiLCBjX3VieXRlKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK0VGSV9JRlJfVU5JUVVFX1NFVCA9IDB4MDENCj4gPg0K PiA+ICtFRklfSUZSX05PX0VNUFRZX1NFVCA9IDB4MDINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX1ZBUlNUT1JFX0RFVklDRShTdHJ1Y3R1cmUpOg0KPiA+ DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ ID4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAg ICAgICAoIkRldmljZVBhdGgiLCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX1ZFUlNJT04oU3RydWN0dXJl KToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsN Cj4gPg0KPiA+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lG Ul9FTkQoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAg ICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9I RUFERVIpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArY2xhc3MgRUZJX0lGUl9NQVRDSChTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18g PSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCJIZWFk ZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX0dFVChTdHJ1Y3R1cmUpOg0KPiA+DQo+ ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4g KyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgICAg ICAoIlZhclN0b3JlSWQiLCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgICAgICAoIlZhclN0b3Jl SW5mbyIsIFZhclN0b3JlSW5mb05vZGUpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJWYXJTdG9yZVR5 cGUiLCBjX3VieXRlKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfU0VUKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9w YWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAo IkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgiVmFyU3Rv cmVJZCIsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgICAgICgiVmFyU3RvcmVJbmZvIiwgVmFy U3RvcmVJbmZvTm9kZSksDQo+ID4NCj4gPiArICAgICAgICAoIlZhclN0b3JlVHlwZSIsIGNfdWJ5 dGUpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr Y2xhc3MgRUZJX0lGUl9SRUFEKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDEN Cj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIs IEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfV1JJVEUoU3RydWN0dXJlKToNCj4gPg0KPiA+ ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsg ICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICBdDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9FUVVBTChTdHJ1 Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNf ID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+ ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBF RklfSUZSX05PVF9FUVVBTChTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCJIZWFkZXIiLCBF RklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX0dSRUFURVJfVEhBTihTdHJ1Y3R1cmUpOg0KPiA+ DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ ID4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAg IF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX0dSRUFU RVJfRVFVQUwoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4g KyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9P UF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArY2xhc3MgRUZJX0lGUl9MRVNTX0VRVUFMKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAg IF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAg ICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfTEVTU19USEFOKFN0cnVj dHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18g PSBbDQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4g Pg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVG SV9JRlJfQklUV0lTRV9BTkQoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0K PiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgiSGVhZGVyIiwg RUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9CSVRXSVNFX09SKFN0cnVjdHVyZSk6DQo+ID4N Cj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4g PiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAg XQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfQklUV0lT RV9OT1QoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAg ICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9I RUFERVIpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArY2xhc3MgRUZJX0lGUl9TSElGVF9MRUZUKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9w YWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAo IkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfU0hJRlRfUklHSFQoU3RydWN0 dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9 IFsNCj4gPg0KPiA+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+ DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJ X0lGUl9BREQoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4g KyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9P UF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArY2xhc3MgRUZJX0lGUl9TVUJUUkFDVChTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBf cGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAg KCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX01VTFRJUExZKFN0cnVjdHVy ZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBb DQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0K PiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9J RlJfRElWSURFKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJf T1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gK2NsYXNzIEVGSV9JRlJfTU9EVUxPKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9w YWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAo IkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfUlVMRV9SRUYoU3RydWN0dXJl KToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsN Cj4gPg0KPiA+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ ID4gKyAgICAgICAgKCJSdWxlSWQiLCBjX3VieXRlKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfUVVFU1RJT05fUkVGMShT dHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVs ZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiks DQo+ID4NCj4gPiArICAgICAgICAoIlF1ZXN0aW9uSWQiLCBjX3VpbnQxNiksDQo+ID4NCj4gPiAr ICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX1FV RVNUSU9OX1JFRjIoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lG Ul9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9RVUVTVElPTl9SRUYzKFN0cnVjdHVyZSk6DQo+ID4NCj4g PiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiAr ICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgXQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfUVVFU1RJT05f UkVGM18yKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsg ICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1Bf SEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgiRGV2aWNlUGF0aCIsIGNfdWludDE2KSwNCj4g Pg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVG SV9JRlJfUVVFU1RJT05fUkVGM18zKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9 IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRl ciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgiRGV2aWNlUGF0aCIs IGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgICAgICgiR3VpZCIsIEVGSV9HVUlEKSwNCj4gPg0K PiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9J RlJfVUlOVDgoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4g KyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9P UF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJWYWx1ZSIsIGNfdWJ5dGUpLA0KPiA+DQo+ ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lG Ul9VSU5UMTYoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4g KyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9P UF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJWYWx1ZSIsIGNfdWludDE2KSwNCj4gPg0K PiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9J RlJfVUlOVDMyKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJf T1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgiVmFsdWUiLCBjX3VpbnQzMiksDQo+ID4N Cj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklf SUZSX1VJTlQ2NChTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4g PiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZS X09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgICAgICAoIlZhbHVlIiwgY191aW50NjQpLA0KPiA+ DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJ X0lGUl9UUlVFKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJf T1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gK2NsYXNzIEVGSV9JRlJfRkFMU0UoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3Bh Y2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgi SGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9UT19VSU5UKFN0cnVjdHVyZSk6 DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJf VE9fU1RSSU5HKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJf T1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgiRm9ybWF0IiwgY191Ynl0ZSksDQo+ID4N Cj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklf SUZSX1RPX0JPT0xFQU4oU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+ DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJ X0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9NSUQoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAg X3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAg ICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9GSU5EKFN0cnVjdHVyZSk6 DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ ICsgICAgICAgICgiRm9ybWF0IiwgY191Ynl0ZSksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX1RPS0VOKFN0cnVjdHVyZSk6 DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJf U1RSSU5HX1JFRjEoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lG Ul9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJTdHJpbmdJZCIsIGNfdWludDE2KSwN Cj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNz IEVGSV9JRlJfU1RSSU5HX1JFRjIoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0g MQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgiSGVhZGVy IiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9DT05ESVRJT05BTChTdHJ1Y3R1cmUpOg0K PiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+ DQo+ID4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiAr ICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX1pF Uk8oU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBf ZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0lGUl9PUF9IRUFE RVIpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr Y2xhc3MgRUZJX0lGUl9PTkUoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0K PiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgiSGVhZGVyIiwg RUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9PTkVTKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiAr ICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAg ICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfVU5ERUZJTkVEKFN0 cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxk c18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwN Cj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNz IEVGSV9JRlJfTEVOR1RIKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4g Pg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVG SV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfRFVQKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAg IF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAg ICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfVEhJUyhTdHJ1Y3R1cmUp Og0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0K PiA+DQo+ID4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4g PiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtFRklfSUZSX0ZMQUdT X0ZJUlNUX01BVENISU5HID0gMHgwMA0KPiA+DQo+ID4gK0VGSV9JRlJfRkxBR1NfRklSU1RfTk9O X01BVENISU5HID0gMHgwMQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNz IEVGSV9JRlJfU1BBTihTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4N Cj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklf SUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgICAgICAoIkZsYWdzIiwgY191Ynl0ZSksDQo+ ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBF RklfSUZSX1ZBTFVFKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0K PiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9J RlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfREVGQVVMVChTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAg ICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAg ICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+ID4NCj4gPiArICAgICAgICAoIkRl ZmF1bHRJZCIsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgICAgICgiVHlwZSIsIGNfdWJ5dGUp LA0KPiA+DQo+ID4gKyAgICAgICAgKCJWYWx1ZSIsIEVGSV9JRlJfVFlQRV9WQUxVRSksDQo+ID4N Cj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtkZWYgUmVmaW5l X0VGSV9JRlJfREVGQVVMVChUeXBlLCBOdW1zKToNCj4gPg0KPiA+ICsgICAgVmFsdWVUeXBlID0g VHlwZURpY3RbVHlwZV0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgRUZJX0lGUl9E RUZBVUxUKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgICAgICBfcGFja18gPSAxDQo+ID4NCj4g PiArICAgICAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICAgICAoIkhlYWRlciIs IEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAoIkRlZmF1bHRJZCIs IGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAoIlR5cGUiLCBjX3VieXRlKSwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAoIlZhbHVlIiwgQVJSQVkoVmFsdWVUeXBlLCBOdW1zKSksDQo+ ID4NCj4gPiArICAgICAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19p bml0X18oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5IZWFkZXIgPSBFRklfSUZS X09QX0hFQURFUigpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIHJldHVybiBFRklfSUZSX0RF RkFVTFQoKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJf REVGQVVMVF8yKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJf T1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICgiRGVmYXVsdElkIiwgY191aW50MTYpLA0K PiA+DQo+ID4gKyAgICAgICAgKCJUeXBlIiwgY191Ynl0ZSksDQo+ID4NCj4gPiArICAgIF0NCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX0ZPUk1fTUFQKFN0 cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxk c18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwN Cj4gPg0KPiA+ICsgICAgICAgICgiRm9ybUlkIiwgY191aW50MTYpLA0KPiA+DQo+ID4gKyAgICBd DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0lGUl9GT1JNX01B UF9NRVRIT0QoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4g KyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgiTWV0aG9kVGl0bGUiLCBjX3Vp bnQxNiksDQo+ID4NCj4gPiArICAgICAgICAoIk1ldGhvZElkZW50aWZpZXIiLCBFRklfR1VJRCks DQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtkZWYg UmVmaW5lX0VGSV9JRlJfRk9STV9NQVAoTnVtcyk6DQo+ID4NCj4gPiArICAgIGNsYXNzIEVGSV9J RlJfRk9STV9NQVAoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgICAgIF9wYWNrXyA9IDENCj4g Pg0KPiA+ICsgICAgICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgICAgICgiSGVh ZGVyIiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICgiRm9ybUlk IiwgY191aW50MTYpLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICgiRm9ybU1hcE1ldGhvZCIsIEFS UkFZKEVGSV9JRlJfRk9STV9NQVBfTUVUSE9ELA0KPiBOdW1zKSksDQo+ID4NCj4gPiArICAgICAg ICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIHJldHVybiBFRklfSUZSX0ZPUk1fTUFQKCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX0NBVEVOQVRF KFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2Zp ZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVS KSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2Ns YXNzIEVGSV9JRlJfU0VDVVJJVFkoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0g MQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgiSGVhZGVy IiwgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJQZXJtaXNzaW9ucyIs IEVGSV9HVUlEKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gK2NsYXNzIEVGSV9JRlJfTU9EQUxfVEFHKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAg IF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAg ICAoIkhlYWRlciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9JRlJfUkVGUkVTSF9JRChTdHJ1 Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNf ID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURFUiksDQo+ ID4NCj4gPiArICAgICAgICAoIlJlZnJlc2hFdmVudEdyb3VwSWQiLCBFRklfR1VJRCksDQo+ID4N Cj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklf SUZSX1dBUk5JTkdfSUYoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+ DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJ X0lGUl9PUF9IRUFERVIpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJXYXJuaW5nIiwgY191aW50MTYp LA0KPiA+DQo+ID4gKyAgICAgICAgKCJUaW1lT3V0IiwgY191Ynl0ZSksDQo+ID4NCj4gPiArICAg IF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSUZSX01BVENI MihTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9m aWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSUZSX09QX0hFQURF UiksDQo+ID4NCj4gPiArICAgICAgICAoIlN5bnRheFR5cGUiLCBFRklfR1VJRCksDQo+ID4NCj4g PiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSElJ X1NUUklOR19CTE9DSyhTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4N Cj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCJCbG9ja1R5cGUiLCBj X3VpbnQ4KSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gK2NsYXNzIEVGSV9ISUlfU0lCVF9TVFJJTkdfU0NTVV9GT05UX0JMT0NLKFN0cnVjdHVyZSk6 DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9ISUlfU1RSSU5HX0JMT0NLKSwNCj4gPg0K PiA+ICsgICAgICAgICgiRm9udElkZW50aWZpZXIiLCBjX3VpbnQ4KSwNCj4gPg0KPiA+ICsgICAg ICAgICgiU3RyaW5nVGV4dCIsIEFSUkFZKGNfdWludDgsIDIpKSwNCj4gPg0KPiA+ICsgICAgXQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9ISUlfU0lCVF9TVFJJ TkdTX1NDU1VfQkxPQ0soU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+ DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJ X0hJSV9TVFJJTkdfQkxPQ0spLA0KPiA+DQo+ID4gKyAgICAgICAgKCJTdHJpbmdDb3VudCIsIGNf dWludDE2KSwNCj4gPg0KPiA+ICsgICAgICAgICgiU3RyaW5nVGV4dCIsIEFSUkFZKGNfdWludDgs IDIpKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g K2NsYXNzIEVGSV9ISUlfU0lCVF9TVFJJTkdTX1NDU1VfRk9OVF9CTE9DSyhTdHJ1Y3R1cmUpOg0K PiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+ DQo+ID4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSElJX1NUUklOR19CTE9DSyksDQo+ID4NCj4g PiArICAgICAgICAoIkZvbnRJZGVudGlmaWVyIiwgY191aW50OCksDQo+ID4NCj4gPiArICAgICAg ICAoIlN0cmluZ0NvdW50IiwgY191aW50MTYpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJTdHJpbmdU ZXh0IiwgQVJSQVkoY191aW50OCwgMikpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0hJSV9TSUJUX1NUUklOR19VQ1MyX0JMT0NL KFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0KPiA+ICsgICAgX2Zp ZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9ISUlfU1RSSU5HX0JM T0NLKSwNCj4gPg0KPiA+ICsgICAgICAgICgiU3RyaW5nVGV4dCIsIEFSUkFZKGNfdXNob3J0LCAy KSksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtj bGFzcyBFRklfSElJX1NJQlRfU1RSSU5HX1VDUzJfRk9OVF9CTE9DSyhTdHJ1Y3R1cmUpOg0KPiA+ DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ ID4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSElJX1NUUklOR19CTE9DSyksDQo+ID4NCj4gPiAr ICAgICAgICAoIkZvbnRJZGVudGlmaWVyIiwgY191aW50OCksDQo+ID4NCj4gPiArICAgICAgICAo IlN0cmluZ1RleHQiLCBBUlJBWShjX3VzaG9ydCwgMikpLA0KPiA+DQo+ID4gKyAgICBdDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0hJSV9TSUJUX1NUUklOR1Nf VUNTMl9CTE9DSyhTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4g PiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSElJ X1NUUklOR19CTE9DSyksDQo+ID4NCj4gPiArICAgICAgICAoIlN0cmluZ0NvdW50IiwgY191aW50 MTYpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJTdHJpbmdUZXh0IiwgQVJSQVkoY191c2hvcnQsIDIp KSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2Ns YXNzIEVGSV9ISUlfU0lCVF9TVFJJTkdTX1VDUzJfRk9OVF9CTE9DSyhTdHJ1Y3R1cmUpOg0KPiA+ DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ ID4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklfSElJX1NUUklOR19CTE9DSyksDQo+ID4NCj4gPiAr ICAgICAgICAoIkZvbnRJZGVudGlmaWVyIiwgY191aW50OCksDQo+ID4NCj4gPiArICAgICAgICAo IlN0cmluZ0NvdW50IiwgY191aW50MTYpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJTdHJpbmdUZXh0 IiwgQVJSQVkoY191c2hvcnQsIDIpKSwNCj4gPg0KPiA+ICsgICAgXQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9ISUlfU0lCVF9EVVBMSUNBVEVfQkxPQ0soU3Ry dWN0dXJlKToNCj4gPg0KPiA+ICsgICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRz XyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICgiSGVhZGVyIiwgRUZJX0hJSV9TVFJJTkdfQkxPQ0sp LA0KPiA+DQo+ID4gKyAgICAgICAgKCJTdHJpbmdJZCIsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsg ICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9ISUlfU0lC VF9FWFQxX0JMT0NLKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0K PiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9I SUlfU1RSSU5HX0JMT0NLKSwNCj4gPg0KPiA+ICsgICAgICAgICgiQmxvY2tUeXBlMiIsIGNfdWlu dDgpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJMZW5ndGgiLCBjX3VpbnQ4KSwNCj4gPg0KPiA+ICsg ICAgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9ISUlfU0lC VF9FWFQyX0JMT0NLKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4gPg0K PiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVGSV9I SUlfU1RSSU5HX0JMT0NLKSwNCj4gPg0KPiA+ICsgICAgICAgICgiQmxvY2tUeXBlMiIsIGNfdWlu dDgpLA0KPiA+DQo+ID4gKyAgICAgICAgKCJMZW5ndGgiLCBjX3VpbnQxNiksDQo+ID4NCj4gPiAr ICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfSElJX1NJ QlRfRVhUNF9CTE9DSyhTdHJ1Y3R1cmUpOg0KPiA+DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4N Cj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ID4gKyAgICAgICAgKCJIZWFkZXIiLCBFRklf SElJX1NUUklOR19CTE9DSyksDQo+ID4NCj4gPiArICAgICAgICAoIkJsb2NrVHlwZTIiLCBjX3Vp bnQ4KSwNCj4gPg0KPiA+ICsgICAgICAgICgiTGVuZ3RoIiwgY191aW50MzIpLA0KPiA+DQo+ID4g KyAgICBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX0hJSV9T SUJUX1NLSVAxX0JMT0NLKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgIF9wYWNrXyA9IDENCj4g Pg0KPiA+ICsgICAgX2ZpZWxkc18gPSBbDQo+ID4NCj4gPiArICAgICAgICAoIkhlYWRlciIsIEVG SV9ISUlfU1RSSU5HX0JMT0NLKSwNCj4gPg0KPiA+ICsgICAgICAgICgiU2tpcENvdW50IiwgY191 aW50OCksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICtjbGFzcyBFRklfSElJX1NJQlRfU0tJUDJfQkxPQ0soU3RydWN0dXJlKToNCj4gPg0KPiA+ICsg ICAgX3BhY2tfID0gMQ0KPiA+DQo+ID4gKyAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAg ICAgICgiSGVhZGVyIiwgRUZJX0hJSV9TVFJJTkdfQkxPQ0spLA0KPiA+DQo+ID4gKyAgICAgICAg KCJTa2lwQ291bnQiLCBjX3VpbnQxNiksDQo+ID4NCj4gPiArICAgIF0NCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICtFRklfSUZSX0ZPUk1fT1AgPSAweDAxDQo+ID4NCj4gPiArRUZJ X0lGUl9TVUJUSVRMRV9PUCA9IDB4MDINCj4gPg0KPiA+ICtFRklfSUZSX1RFWFRfT1AgPSAweDAz DQo+ID4NCj4gPiArRUZJX0lGUl9JTUFHRV9PUCA9IDB4MDQNCj4gPg0KPiA+ICtFRklfSUZSX09O RV9PRl9PUCA9IDB4MDUNCj4gPg0KPiA+ICtFRklfSUZSX0NIRUNLQk9YX09QID0gMHgwNg0KPiA+ DQo+ID4gK0VGSV9JRlJfTlVNRVJJQ19PUCA9IDB4MDcNCj4gPg0KPiA+ICtFRklfSUZSX1BBU1NX T1JEX09QID0gMHgwOA0KPiA+DQo+ID4gK0VGSV9JRlJfT05FX09GX09QVElPTl9PUCA9IDB4MDkN Cj4gPg0KPiA+ICtFRklfSUZSX1NVUFBSRVNTX0lGX09QID0gMHgwQQ0KPiA+DQo+ID4gK0VGSV9J RlJfTE9DS0VEX09QID0gMHgwQg0KPiA+DQo+ID4gK0VGSV9JRlJfQUNUSU9OX09QID0gMHgwQw0K PiA+DQo+ID4gK0VGSV9JRlJfUkVTRVRfQlVUVE9OX09QID0gMHgwRA0KPiA+DQo+ID4gK0VGSV9J RlJfRk9STV9TRVRfT1AgPSAweDBFDQo+ID4NCj4gPiArRUZJX0lGUl9SRUZfT1AgPSAweDBGDQo+ ID4NCj4gPiArRUZJX0lGUl9OT19TVUJNSVRfSUZfT1AgPSAweDEwDQo+ID4NCj4gPiArRUZJX0lG Ul9JTkNPTlNJU1RFTlRfSUZfT1AgPSAweDExDQo+ID4NCj4gPiArRUZJX0lGUl9FUV9JRF9WQUxf T1AgPSAweDEyDQo+ID4NCj4gPiArRUZJX0lGUl9FUV9JRF9JRF9PUCA9IDB4MTMNCj4gPg0KPiA+ ICtFRklfSUZSX0VRX0lEX1ZBTF9MSVNUX09QID0gMHgxNA0KPiA+DQo+ID4gK0VGSV9JRlJfQU5E X09QID0gMHgxNQ0KPiA+DQo+ID4gK0VGSV9JRlJfT1JfT1AgPSAweDE2DQo+ID4NCj4gPiArRUZJ X0lGUl9OT1RfT1AgPSAweDE3DQo+ID4NCj4gPiArRUZJX0lGUl9SVUxFX09QID0gMHgxOA0KPiA+ DQo+ID4gK0VGSV9JRlJfR1JBWV9PVVRfSUZfT1AgPSAweDE5DQo+ID4NCj4gPiArRUZJX0lGUl9E QVRFX09QID0gMHgxQQ0KPiA+DQo+ID4gK0VGSV9JRlJfVElNRV9PUCA9IDB4MUINCj4gPg0KPiA+ ICtFRklfSUZSX1NUUklOR19PUCA9IDB4MUMNCj4gPg0KPiA+ICtFRklfSUZSX1JFRlJFU0hfT1Ag PSAweDFEDQo+ID4NCj4gPiArRUZJX0lGUl9ESVNBQkxFX0lGX09QID0gMHgxRQ0KPiA+DQo+ID4g K0VGSV9JRlJfVE9fTE9XRVJfT1AgPSAweDIwDQo+ID4NCj4gPiArRUZJX0lGUl9UT19VUFBFUl9P UCA9IDB4MjENCj4gPg0KPiA+ICtFRklfSUZSX01BUF9PUCA9IDB4MjINCj4gPg0KPiA+ICtFRklf SUZSX09SREVSRURfTElTVF9PUCA9IDB4MjMNCj4gPg0KPiA+ICtFRklfSUZSX1ZBUlNUT1JFX09Q ID0gMHgyNA0KPiA+DQo+ID4gK0VGSV9JRlJfVkFSU1RPUkVfTkFNRV9WQUxVRV9PUCA9IDB4MjUN Cj4gPg0KPiA+ICtFRklfSUZSX1ZBUlNUT1JFX0VGSV9PUCA9IDB4MjYNCj4gPg0KPiA+ICtFRklf SUZSX1ZBUlNUT1JFX0RFVklDRV9PUCA9IDB4MjcNCj4gPg0KPiA+ICtFRklfSUZSX1ZFUlNJT05f T1AgPSAweDI4DQo+ID4NCj4gPiArRUZJX0lGUl9FTkRfT1AgPSAweDI5DQo+ID4NCj4gPiArRUZJ X0lGUl9NQVRDSF9PUCA9IDB4MkENCj4gPg0KPiA+ICtFRklfSUZSX0dFVF9PUCA9IDB4MkINCj4g Pg0KPiA+ICtFRklfSUZSX1NFVF9PUCA9IDB4MkMNCj4gPg0KPiA+ICtFRklfSUZSX1JFQURfT1Ag PSAweDJEDQo+ID4NCj4gPiArRUZJX0lGUl9XUklURV9PUCA9IDB4MkUNCj4gPg0KPiA+ICtFRklf SUZSX0VRVUFMX09QID0gMHgyRg0KPiA+DQo+ID4gK0VGSV9JRlJfTk9UX0VRVUFMX09QID0gMHgz MA0KPiA+DQo+ID4gK0VGSV9JRlJfR1JFQVRFUl9USEFOX09QID0gMHgzMQ0KPiA+DQo+ID4gK0VG SV9JRlJfR1JFQVRFUl9FUVVBTF9PUCA9IDB4MzINCj4gPg0KPiA+ICtFRklfSUZSX0xFU1NfVEhB Tl9PUCA9IDB4MzMNCj4gPg0KPiA+ICtFRklfSUZSX0xFU1NfRVFVQUxfT1AgPSAweDM0DQo+ID4N Cj4gPiArRUZJX0lGUl9CSVRXSVNFX0FORF9PUCA9IDB4MzUNCj4gPg0KPiA+ICtFRklfSUZSX0JJ VFdJU0VfT1JfT1AgPSAweDM2DQo+ID4NCj4gPiArRUZJX0lGUl9CSVRXSVNFX05PVF9PUCA9IDB4 MzcNCj4gPg0KPiA+ICtFRklfSUZSX1NISUZUX0xFRlRfT1AgPSAweDM4DQo+ID4NCj4gPiArRUZJ X0lGUl9TSElGVF9SSUdIVF9PUCA9IDB4MzkNCj4gPg0KPiA+ICtFRklfSUZSX0FERF9PUCA9IDB4 M0ENCj4gPg0KPiA+ICtFRklfSUZSX1NVQlRSQUNUX09QID0gMHgzQg0KPiA+DQo+ID4gK0VGSV9J RlJfTVVMVElQTFlfT1AgPSAweDNDDQo+ID4NCj4gPiArRUZJX0lGUl9ESVZJREVfT1AgPSAweDNE DQo+ID4NCj4gPiArRUZJX0lGUl9NT0RVTE9fT1AgPSAweDNFDQo+ID4NCj4gPiArRUZJX0lGUl9S VUxFX1JFRl9PUCA9IDB4M0YNCj4gPg0KPiA+ICtFRklfSUZSX1FVRVNUSU9OX1JFRjFfT1AgPSAw eDQwDQo+ID4NCj4gPiArRUZJX0lGUl9RVUVTVElPTl9SRUYyX09QID0gMHg0MQ0KPiA+DQo+ID4g K0VGSV9JRlJfVUlOVDhfT1AgPSAweDQyDQo+ID4NCj4gPiArRUZJX0lGUl9VSU5UMTZfT1AgPSAw eDQzDQo+ID4NCj4gPiArRUZJX0lGUl9VSU5UMzJfT1AgPSAweDQ0DQo+ID4NCj4gPiArRUZJX0lG Ul9VSU5UNjRfT1AgPSAweDQ1DQo+ID4NCj4gPiArRUZJX0lGUl9UUlVFX09QID0gMHg0Ng0KPiA+ DQo+ID4gK0VGSV9JRlJfRkFMU0VfT1AgPSAweDQ3DQo+ID4NCj4gPiArRUZJX0lGUl9UT19VSU5U X09QID0gMHg0OA0KPiA+DQo+ID4gK0VGSV9JRlJfVE9fU1RSSU5HX09QID0gMHg0OQ0KPiA+DQo+ ID4gK0VGSV9JRlJfVE9fQk9PTEVBTl9PUCA9IDB4NEENCj4gPg0KPiA+ICtFRklfSUZSX01JRF9P UCA9IDB4NEINCj4gPg0KPiA+ICtFRklfSUZSX0ZJTkRfT1AgPSAweDRDDQo+ID4NCj4gPiArRUZJ X0lGUl9UT0tFTl9PUCA9IDB4NEQNCj4gPg0KPiA+ICtFRklfSUZSX1NUUklOR19SRUYxX09QID0g MHg0RQ0KPiA+DQo+ID4gK0VGSV9JRlJfU1RSSU5HX1JFRjJfT1AgPSAweDRGDQo+ID4NCj4gPiAr RUZJX0lGUl9DT05ESVRJT05BTF9PUCA9IDB4NTANCj4gPg0KPiA+ICtFRklfSUZSX1FVRVNUSU9O X1JFRjNfT1AgPSAweDUxDQo+ID4NCj4gPiArRUZJX0lGUl9aRVJPX09QID0gMHg1Mg0KPiA+DQo+ ID4gK0VGSV9JRlJfT05FX09QID0gMHg1Mw0KPiA+DQo+ID4gK0VGSV9JRlJfT05FU19PUCA9IDB4 NTQNCj4gPg0KPiA+ICtFRklfSUZSX1VOREVGSU5FRF9PUCA9IDB4NTUNCj4gPg0KPiA+ICtFRklf SUZSX0xFTkdUSF9PUCA9IDB4NTYNCj4gPg0KPiA+ICtFRklfSUZSX0RVUF9PUCA9IDB4NTcNCj4g Pg0KPiA+ICtFRklfSUZSX1RISVNfT1AgPSAweDU4DQo+ID4NCj4gPiArRUZJX0lGUl9TUEFOX09Q ID0gMHg1OQ0KPiA+DQo+ID4gK0VGSV9JRlJfVkFMVUVfT1AgPSAweDVBDQo+ID4NCj4gPiArRUZJ X0lGUl9ERUZBVUxUX09QID0gMHg1Qg0KPiA+DQo+ID4gK0VGSV9JRlJfREVGQVVMVFNUT1JFX09Q ID0gMHg1Qw0KPiA+DQo+ID4gK0VGSV9JRlJfRk9STV9NQVBfT1AgPSAweDVEDQo+ID4NCj4gPiAr RUZJX0lGUl9DQVRFTkFURV9PUCA9IDB4NUUNCj4gPg0KPiA+ICtFRklfSUZSX0dVSURfT1AgPSAw eDVGDQo+ID4NCj4gPiArRUZJX0lGUl9TRUNVUklUWV9PUCA9IDB4NjANCj4gPg0KPiA+ICtFRklf SUZSX01PREFMX1RBR19PUCA9IDB4NjENCj4gPg0KPiA+ICtFRklfSUZSX1JFRlJFU0hfSURfT1Ag PSAweDYyDQo+ID4NCj4gPiArRUZJX0lGUl9XQVJOSU5HX0lGX09QID0gMHg2Mw0KPiA+DQo+ID4g K0VGSV9JRlJfTUFUQ0gyX09QID0gMHg2NA0KPiA+DQo+ID4gK0VGSV9JRlJfU0hPV05fREVGQVVM VFNUT1JFX09QID0gMHg2NQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK0NvbmRpdGlvbk9wcyA9IFsN Cj4gPg0KPiA+ICsgICAgRUZJX0lGUl9ESVNBQkxFX0lGX09QLA0KPiA+DQo+ID4gKyAgICBFRklf SUZSX1NVUFBSRVNTX0lGX09QLA0KPiA+DQo+ID4gKyAgICBFRklfSUZSX0dSQVlfT1VUX0lGX09Q LA0KPiA+DQo+ID4gKyAgICBFRklfSUZSX0lOQ09OU0lTVEVOVF9JRl9PUCwNCj4gPg0KPiA+ICtd DQo+ID4NCj4gPiArQmFzaWNEYXRhVHlwZXMgPSBbDQo+ID4NCj4gPiArICAgICJVSU5UOCIsDQo+ ID4NCj4gPiArICAgICJVSU5UMTYiLA0KPiA+DQo+ID4gKyAgICAiVUlOVDMyIiwNCj4gPg0KPiA+ ICsgICAgIlVJTlQ2NCIsDQo+ID4NCj4gPiArICAgICJFRklfSElJX0RBVEUiLA0KPiA+DQo+ID4g KyAgICAiRUZJX0hJSV9USU1FIiwNCj4gPg0KPiA+ICsgICAgIkVGSV9ISUlfUkVGIiwNCj4gPg0K PiA+ICtdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArZGVmIFJlZmluZV9FRklf SUZSX0dVSURfT1BUSU9OS0VZKFR5cGUpOg0KPiA+DQo+ID4gKyAgICBWYWx1ZVR5cGUgPSBUeXBl RGljdFtUeXBlXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBFRklfSUZSX0dVSURf T1BUSU9OS0VZKFN0cnVjdHVyZSk6DQo+ID4NCj4gPiArICAgICAgICBfcGFja18gPSAxDQo+ID4N Cj4gPiArICAgICAgICBfZmllbGRzXyA9IFsNCj4gPg0KPiA+ICsgICAgICAgICAgICAoIkhlYWRl ciIsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAoIkd1aWQiLCBF RklfR1VJRCksDQo+ID4NCj4gPiArICAgICAgICAgICAgKCJFeHRlbmRPcENvZGUiLCBjX3VpbnQ4 KSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAoIlF1ZXN0aW9uSWQiLCBjX3VpbnQxNiksDQo+ID4N Cj4gPiArICAgICAgICAgICAgKCJPcHRpb25WYWx1ZSIsIFZhbHVlVHlwZSksDQo+ID4NCj4gPiAr ICAgICAgICAgICAgKCJLZXlWYWx1ZSIsIGNfdWludDE2KSwNCj4gPg0KPiA+ICsgICAgICAgIF0N Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgcmV0dXJuIEVGSV9JRlJfR1VJRF9PUFRJT05LRVko KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK0VGSV9JRlJfRVhURU5EX09QX09Q VElPTktFWSA9IDB4MA0KPiA+DQo+ID4gK0VGSV9JRlJfRVhURU5EX09QX1ZBUkVRTkFNRSA9IDB4 MQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVGSV9DT01QQVJFX1RZ UEUoRW51bSk6DQo+ID4NCj4gPiArICAgIEVRVUFMID0gMA0KPiA+DQo+ID4gKyAgICBMRVNTX0VR VUFMID0gMQ0KPiA+DQo+ID4gKyAgICBMRVNTX1RIQU4gPSAyDQo+ID4NCj4gPiArICAgIEdSRUFU RVJfVEhBTiA9IDMNCj4gPg0KPiA+ICsgICAgR1JFQVRFUl9FUVVBTCA9IDQNCj4gPg0KPiA+IGRp ZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9JZnJFcnJvci5w eQ0KPiA+IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvSWZyRXJyb3IucHkN Cj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLmM1MDI4OGU5 ZTUNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24v VmZyQ29tcGlsZXIvSWZyRXJyb3IucHkNCj4gPiBAQCAtMCwwICsxLDE1MyBAQA0KPiA+ICsjIyBA ZmlsZQ0KPiA+DQo+ID4gKyMgVmZyQ29tcGlsZXIgZXJyb3IgaGFuZGxlci4NCj4gPg0KPiA+ICsj DQo+ID4NCj4gPiArIyBDb3B5cmlnaHQgKGMpIDIwMjItLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs IHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4NCj4gPiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+DQo+ID4gKyMjDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArZnJvbSBlbnVtIGltcG9ydCBFbnVtDQo+ID4NCj4gPiArZnJvbSBDb21tb24gaW1wb3J0IEVk a0xvZ2dlcg0KPiA+DQo+ID4gK2Zyb20gQ29tbW9uLkJ1aWxkVG9vbEVycm9yIGltcG9ydCAqDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgVmZyUmV0dXJuQ29kZShFbnVt KToNCj4gPg0KPiA+ICsgICAgVkZSX1JFVFVSTl9TVUNDRVNTID0gMA0KPiA+DQo+ID4gKyAgICBW RlJfUkVUVVJOX0VSUk9SX1NLSVBFRCA9IDENCj4gPg0KPiA+ICsgICAgVkZSX1JFVFVSTl9GQVRB TF9FUlJPUiA9IDINCj4gPg0KPiA+ICsgICAgVkZSX1JFVFVSTl9NSVNNQVRDSEVEID0gMw0KPiA+ DQo+ID4gKyAgICBWRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSID0gNA0KPiA+DQo+ID4gKyAg ICBWRlJfUkVUVVJOX09VVF9GT1JfUkVTT1VSQ0VTID0gNQ0KPiA+DQo+ID4gKyAgICBWRlJfUkVU VVJOX1VOU1VQUE9SVEVEID0gNg0KPiA+DQo+ID4gKyAgICBWRlJfUkVUVVJOX1JFREVGSU5FRCA9 IDcNCj4gPg0KPiA+ICsgICAgVkZSX1JFVFVSTl9GT1JNSURfUkVERUZJTkVEID0gOA0KPiA+DQo+ ID4gKyAgICBWRlJfUkVUVVJOX1FVRVNUSU9OSURfUkVERUZJTkVEID0gOQ0KPiA+DQo+ID4gKyAg ICBWRlJfUkVUVVJOX1ZBUlNUT1JFSURfUkVERUZJTkVEID0gMTANCj4gPg0KPiA+ICsgICAgVkZS X1JFVFVSTl9VTkRFRklORUQgPSAxMQ0KPiA+DQo+ID4gKyAgICBWRlJfUkVUVVJOX1ZBUl9OT1RE RUZJTkVEX0JZX1FVRVNUSU9OID0gMTINCj4gPg0KPiA+ICsgICAgVkZSX1JFVFVSTl9WQVJTVE9S RV9EQVRBVFlQRV9SRURFRklORURfRVJST1IgPSAxMw0KPiA+DQo+ID4gKyAgICBWRlJfUkVUVVJO X0dFVF9FRklWQVJTVE9SRV9FUlJPUiA9IDE0DQo+ID4NCj4gPiArICAgIFZGUl9SRVRVUk5fRUZJ VkFSU1RPUkVfVVNFX0VSUk9SID0gMTUNCj4gPg0KPiA+ICsgICAgVkZSX1JFVFVSTl9FRklWQVJT VE9SRV9TSVpFX0VSUk9SID0gMTYNCj4gPg0KPiA+ICsgICAgVkZSX1JFVFVSTl9HRVRfTlZWQVJT VE9SRV9FUlJPUiA9IDE3DQo+ID4NCj4gPiArICAgIFZGUl9SRVRVUk5fUVZBUl9SRVVTRSA9IDE4 DQo+ID4NCj4gPiArICAgIFZGUl9SRVRVUk5fRkxBR1NfVU5TVVBQT1JURUQgPSAxOQ0KPiA+DQo+ ID4gKyAgICBWRlJfUkVUVVJOX0VSUk9SX0FSUkFSWV9OVU0gPSAyMA0KPiA+DQo+ID4gKyAgICBW RlJfUkVUVVJOX0RBVEFfU1RSSU5HX0VSUk9SID0gMjENCj4gPg0KPiA+ICsgICAgVkZSX1JFVFVS Tl9ERUZBVUxUX1ZBTFVFX1JFREVGSU5FRCA9IDIyDQo+ID4NCj4gPiArICAgIFZGUl9SRVRVUk5f Q09OU1RBTlRfT05MWSA9IDIzDQo+ID4NCj4gPiArICAgIFZGUl9SRVRVUk5fVkFSU1RPUkVfTkFN RV9SRURFRklORURfRVJST1IgPSAyNA0KPiA+DQo+ID4gKyAgICBWRlJfUkVUVVJOX0JJVF9XSURU SF9FUlJPUiA9IDI1DQo+ID4NCj4gPiArICAgIFZGUl9SRVRVUk5fU1RSSU5HX1RPX1VJTlRfT1ZF UkZMT1cgPSAyNg0KPiA+DQo+ID4gKyAgICBWRlJfUkVUVVJOX0NPREVVTkRFRklORUQgPSAyNw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmckVycm9yTWVzc2FnZSA9IHsNCj4g Pg0KPiA+ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1M6ICIiLA0KPiA+DQo+ ID4gKyAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRVJST1JfU0tJUEVEOiAiIiwNCj4gPg0K PiA+ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZBVEFMX0VSUk9SOiAiZmF0YWwgZXJy b3IhISIsDQo+ID4NCj4gPiArICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9NSVNNQVRDSEVE OiAidW5leHBlY3RlZCB0b2tlbiIsDQo+ID4NCj4gPiArICAgIFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9JTlZBTElEX1BBUkFNRVRFUjogImludmFsaWQNCj4gcGFyYW1ldGVyIiwNCj4gPg0KPiA+ ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX09VVF9GT1JfUkVTT1VSQ0VTOiAic3lzdGVt IG91dCBvZg0KPiA+IG1lbW9yeSIsDQo+ID4NCj4gPiArICAgIFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9VTlNVUFBPUlRFRDogInVuc3VwcG9ydGVkIiwNCj4gPg0KPiA+ICsgICAgVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX1JFREVGSU5FRDogImFscmVhZHkgZGVmaW5lZCIsDQo+ID4NCj4gPiAr ICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GT1JNSURfUkVERUZJTkVEOiAiZm9ybSBpZCBh bHJlYWR5DQo+ID4gZGVmaW5lZCIsDQo+ID4NCj4gPiArICAgIFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9RVUVTVElPTklEX1JFREVGSU5FRDogInF1ZXN0aW9uIGlkDQo+ID4gYWxyZWFkeSBkZWZp bmVkIiwNCj4gPg0KPiA+ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1ZBUlNUT1JFSURf UkVERUZJTkVEOiAidmFyc3RvcmUgaWQNCj4gPiBhbHJlYWR5IGRlZmluZWQiLA0KPiA+DQo+ID4g KyAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5ERUZJTkVEOiAidW5kZWZpbmVkIiwNCj4g Pg0KPiA+ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1ZBUl9OT1RERUZJTkVEX0JZX1FV RVNUSU9OOiAic29tZQ0KPiA+IHZhcmlhYmxlIGhhcyBub3QgZGVmaW5lZCBieSBhIHF1ZXN0aW9u IiwNCj4gPg0KPiA+ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1ZBUlNUT1JFX0RBVEFU WVBFX1JFREVGSU5FRF9FUlJPUjoNCj4gPiAiRGF0YSBTdHJ1Y3R1cmUgaXMgZGVmaW5lZCBieSBt b3JlIHRoYW4gb25lIHZhcnN0b3JlczogXA0KPiA+DQo+ID4gKyAgICAgICAgICAgIGl0IGNhbid0 IGJlIHJlZmVycmVkIGFzIHZhcnN0b3JlOiBvbmx5IHZhcnN0b3JlIG5hbWUgY291bGQgYmUgdXNl ZC4iLA0KPiA+DQo+ID4gKyAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fR0VUX0VGSVZBUlNU T1JFX0VSUk9SOiAiZ2V0IGVmaQ0KPiB2YXJzdG9yZQ0KPiA+IGVycm9yIiwNCj4gPg0KPiA+ICsg ICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0VGSVZBUlNUT1JFX1VTRV9FUlJPUjogImNhbiBu b3QgdXNlDQo+IHRoZQ0KPiA+IGVmaSB2YXJzdG9yZSBsaWtlIHRoaXMiLA0KPiA+DQo+ID4gKyAg ICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRUZJVkFSU1RPUkVfU0laRV9FUlJPUjogInVuc3Vw cG9ydCBlZmkNCj4gPiB2YXJzdG9yZSBzaXplIHNob3VsZCBiZSA8PSA4IGJ5dGVzIiwNCj4gPg0K PiA+ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0dFVF9OVlZBUlNUT1JFX0VSUk9SOiAi Z2V0IG5hbWUNCj4gdmFsdWUNCj4gPiB2YXJzdG9yZSBlcnJvciIsDQo+ID4NCj4gPiArICAgIFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9RVkFSX1JFVVNFOiAidmFyaWFibGUgcmV1c2VkIGJ5IG1v cmUNCj4gPiB0aGFuIG9uZSBxdWVzdGlvbiIsDQo+ID4NCj4gPiArICAgIFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9GTEFHU19VTlNVUFBPUlRFRDogImZsYWdzDQo+IHVuc3VwcG9ydGVkIiwNCj4g Pg0KPiA+ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0VSUk9SX0FSUkFSWV9OVU06ICJh cnJheSBudW1iZXINCj4gPiBlcnJvcjogdGhlIHZhbGlkIHZhbHVlIGlzIGluIFwNCj4gPg0KPiA+ ICsgICAgICAgICgwIH4gTUFYX0lOREVYLTEgZm9yIFVFRkkgdmZyIGFuZCBpbiAoMSB+IE1BWF9J TkRFWCBmb3IgRnJhbWV3b3JrDQo+ID4gVmZyIiwNCj4gPg0KPiA+ICsgICAgVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX0RBVEFfU1RSSU5HX0VSUk9SOiAiZGF0YSBmaWVsZCBzdHJpbmcNCj4gPiBl cnJvciBvciBub3Qgc3VwcG9ydCIsDQo+ID4NCj4gPiArICAgIFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9ERUZBVUxUX1ZBTFVFX1JFREVGSU5FRDogImRlZmF1bHQNCj4gdmFsdWUNCj4gPiByZS1k ZWZpbmVkIHdpdGggZGlmZmVyZW50IHZhbHVlIiwNCj4gPg0KPiA+ICsgICAgVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX0NPTlNUQU5UX09OTFk6ICJvbmx5IGNvbnN0YW50IGlzDQo+IGFsbG93ZWQN Cj4gPiBpbiB0aGUgZXhwcmVzc2lvbiIsDQo+ID4NCj4gPiArICAgIFZmclJldHVybkNvZGUuVkZS X1JFVFVSTl9WQVJTVE9SRV9OQU1FX1JFREVGSU5FRF9FUlJPUjoNCj4gPiAiVmFyc3RvcmUgbmFt ZSBpcyBkZWZpbmVkIGJ5IG1vcmUgdGhhbiBvbmUgdmFyc3RvcmVzOiBpdCBjYW4ndCBiZSByZWZl cnJlZA0KPiBhcw0KPiA+IHZhcnN0b3JlOlwNCj4gPg0KPiA+ICsgICAgICAgIG9ubHkgdmFyc3Rv cmUgc3RydWN0dXJlIG5hbWUgY291bGQgYmUgdXNlZC4iLA0KPiA+DQo+ID4gKyAgICBWZnJSZXR1 cm5Db2RlLlZGUl9SRVRVUk5fQklUX1dJRFRIX0VSUk9SOiAiYml0IHdpZHRoIG11c3QgYmUgPD0N Cj4gPiBzaXplb2YgKHR5cGUgKiA4IGFuZCB0aGUgbWF4IHdpZHRoIGNhbiBub3QgPiAzMiIsDQo+ ID4NCj4gPiArICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVFJJTkdfVE9fVUlOVF9PVkVS RkxPVzogIlN0cmluZyB0bw0KPiA+IFVJTlQqIE92ZXJmbG93IiwNCj4gPg0KPiA+ICsgICAgVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX0NPREVVTkRFRklORUQ6ICJ1bmRlZmluZWQgRXJyb3INCj4g Q29kZSIsDQo+ID4NCj4gPiArfQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2Ns YXNzIEVGSV9WRlJfV0FSTklOR19DT0RFKEVudW0pOg0KPiA+DQo+ID4gKyAgICBWRlJfV0FSTklO R19ERUZBVUxUX1ZBTFVFX1JFREVGSU5FRCA9IDANCj4gPg0KPiA+ICsgICAgVkZSX1dBUk5JTkdf QUNUSU9OX1dJVEhfVEVYVF9UV08gPSAxDQo+ID4NCj4gPiArICAgIFZGUl9XQVJOSU5HX09CU09M RVRFRF9GUkFNRVdPUktfT1BDT0RFID0gMg0KPiA+DQo+ID4gKyAgICBWRlJfV0FSTklOR19DT0RF VU5ERUZJTkVEID0gMw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3Zmcldhcm5p bmdNZXNzYWdlID0gew0KPiA+DQo+ID4gKyAgICBFRklfVkZSX1dBUk5JTkdfQ09ERS5WRlJfV0FS TklOR19ERUZBVUxUX1ZBTFVFX1JFREVGSU5FRDoNCj4gPiAiOiBkZWZhdWx0IHZhbHVlIHJlLWRl ZmluZWQgd2l0aCBkaWZmZXJlbnQgdmFsdWUiLA0KPiA+DQo+ID4gKyAgICBFRklfVkZSX1dBUk5J TkdfQ09ERS5WRlJfV0FSTklOR19BQ1RJT05fV0lUSF9URVhUX1RXTzoNCj4gIjoNCj4gPiBBY3Rp b24gb3Bjb2RlIHNob3VsZCBub3QgaGF2ZSBUZXh0VHdvIHBhcnQiLA0KPiA+DQo+ID4gKw0KPiA+ DQo+IEVGSV9WRlJfV0FSTklOR19DT0RFLlZGUl9XQVJOSU5HX09CU09MRVRFRF9GUkFNRVdPUktf T1BDTw0KPiA+IERFOiAiOiBOb3QgcmVjb21tZW5kIHRvIHVzZSBvYnNvbGV0ZWQgZnJhbWV3b3Jr IG9wY29kZSIsDQo+ID4NCj4gPiArICAgIEVGSV9WRlJfV0FSTklOR19DT0RFLlZGUl9XQVJOSU5H X0NPREVVTkRFRklORUQ6ICI6DQo+ID4gdW5kZWZpbmVkIFdhcm5pbmcgQ29kZSIsDQo+ID4NCj4g PiArfQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIFZmckVycm9ySGFu ZGxlOg0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICBzZWxmLklucHV0RmlsZU5hbWUgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZmckVy cm9yTWVzc2FnZSA9IHZmckVycm9yTWVzc2FnZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52ZnJX YXJuaW5nTWVzc2FnZSA9IHZmcldhcm5pbmdNZXNzYWdlDQo+ID4NCj4gPiArICAgICAgICBzZWxm Lldhcm5pbmdBc0Vycm9yID0gRmFsc2UNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNl dFdhcm5pbmdBc0Vycm9yKHNlbGYsIFdhcm5pbmdBc0Vycm9yKToNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuV2FybmluZ0FzRXJyb3IgPSBXYXJuaW5nQXNFcnJvcg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBkZWYgU2V0SW5wdXRGaWxlKHNlbGYsIElucHV0RmlsZSk6DQo+ID4NCj4gPiArICAg ICAgICBzZWxmLklucHV0RmlsZU5hbWUgPSBJbnB1dEZpbGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgZGVmIEhhbmRsZVdhcm5pbmcoc2VsZiwgV2FybmluZ0NvZGUsIExpbmVOdW09Tm9uZSwN Cj4gPiBUb2tlblZhbHVlPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgaWYgc2VsZi52ZnJXYXJu aW5nTWVzc2FnZSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiAxDQo+ID4N Cj4gPiArICAgICAgICBXYXJuaW5nTXNnID0gIiINCj4gPg0KPiA+ICsgICAgICAgIGZvciBrZXkg aW4gc2VsZi52ZnJXYXJuaW5nTWVzc2FnZS5rZXlzKCk6DQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgV2FybmluZ0NvZGUgPT0gc2VsZi52ZnJXYXJuaW5nTWVzc2FnZVtrZXldOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBXYXJuaW5nTXNnID0gc2VsZi52ZnJXYXJuaW5nTWVzc2FnZVtrZXld DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGJyZWFrDQo+ID4NCj4gPiArICAgICAgICBpZiBX YXJuaW5nTXNnICE9ICIiOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHNlbGYuV2FybmluZ0Fz RXJyb3I6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIEVka0xvZ2dlci5lcnJvcigNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICJWZnJDb21waWxlciIsDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBXYXJuaW5nQ29kZS52YWx1ZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIFdhcm5pbmdNc2csDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLklu cHV0RmlsZU5hbWUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBMaW5lTnVtLA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIndhcm5pbmcgdHJlYXRlZCBhcyBlcnJvciIsDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICAgICBFZGtMb2dn ZXIud2FybigNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgIlZmckNvbXBpbGVyIiwgV2Fybmlu Z0NvZGUudmFsdWUsIHNlbGYuSW5wdXRGaWxlTmFtZSwgTGluZU51bSwNCj4gPiBUb2tlblZhbHVl DQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYg UHJpbnRNc2coc2VsZiwgTGluZU51bSwgTXNnVHlwZT0iRXJyb3IiLCBFcnJvck1zZz1Ob25lLA0K PiA+IFRva2VuVmFsdWU9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICBpZiBNc2dUeXBlID09ICJX YXJuaW5nIjoNCj4gPg0KPiA+ICsgICAgICAgICAgICBFZGtMb2dnZXIudmVyYm9zZShFcnJvck1z ZykNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgRWRrTG9n Z2VyLmVycm9yKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAiVmZyQ29tcGlsZXIiLCBGT1JN QVRfSU5WQUxJRCwgRXJyb3JNc2csIHNlbGYuSW5wdXRGaWxlTmFtZSwNCj4gPiBMaW5lTnVtLCBU b2tlblZhbHVlDQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICBkZWYgSGFuZGxlRXJyb3Ioc2VsZiwgRXJyb3JDb2RlLCBMaW5lTnVtPU5vbmUsIFRva2Vu VmFsdWU9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICBpZiBzZWxmLnZmckVycm9yTWVzc2FnZSBp cyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiAxDQo+ID4NCj4gPiArICAgICAg ICBFcnJvck1zZyA9ICIiDQo+ID4NCj4gPiArICAgICAgICBmb3IgS2V5IGluIHNlbGYudmZyRXJy b3JNZXNzYWdlLmtleXMoKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBFcnJvckNvZGUgPT0g S2V5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBFcnJvck1zZyA9IHNlbGYudmZyRXJyb3JN ZXNzYWdlW0tleV0NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgYnJlYWsNCj4gPg0KPiA+ICsg ICAgICAgIGlmIEVycm9yTXNnICE9ICIiOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIEVka0xvZ2dl ci5lcnJvcigNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgIlZmckNvbXBpbGVyIiwgRXJyb3JD b2RlLnZhbHVlLCBFcnJvck1zZywgc2VsZi5JbnB1dEZpbGVOYW1lLA0KPiA+IExpbmVOdW0sIFRv a2VuVmFsdWUNCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIDENCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiAwDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArZ1ZmckVycm9ySGFuZGxlID0gVmZyRXJyb3JIYW5kbGUoKQ0KPiA+DQo+ ID4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL0lmckZv cm1Qa2cucHkNCj4gPiBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL0lmckZv cm1Qa2cucHkNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAu LjM1ZjUwYjBjZWYNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvQmFzZVRvb2xzL1NvdXJj ZS9QeXRob24vVmZyQ29tcGlsZXIvSWZyRm9ybVBrZy5weQ0KPiA+IEBAIC0wLDAgKzEsMjkzNyBA QA0KPiA+ICsjIyBAZmlsZQ0KPiA+DQo+ID4gKyMgVGhlIGRlZmluaXRpb24gb2YgRm9ybVBrZydz IG1lbWJlciBmdW5jdGlvbg0KPiA+DQo+ID4gKyMNCj4gPg0KPiA+ICsjIENvcHlyaWdodCAoYykg MjAyMi0sIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPg0K PiA+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4N Cj4gPiArIyMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtmcm9tIFZmckNvbXBpbGVyLklmckN0eXBl cyBpbXBvcnQgKg0KPiA+DQo+ID4gK2Zyb20gVmZyQ29tcGlsZXIuSWZyVXRpbGl0eSBpbXBvcnQg Kg0KPiA+DQo+ID4gK2Zyb20gVmZyQ29tcGlsZXIuSWZyRXJyb3IgaW1wb3J0IFZmclJldHVybkNv ZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtnVmZyVmFyRGF0YVR5cGVEQiA9IFZmclZhckRhdGFU eXBlREIoKQ0KPiA+DQo+ID4gK2dWZnJEZWZhdWx0U3RvcmUgPSBWZnJEZWZhdWx0U3RvcmUoKQ0K PiA+DQo+ID4gK2dWZnJEYXRhU3RvcmFnZSA9IFZmckRhdGFTdG9yYWdlKCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBPcE5vZGU6DQo+ID4NCj4gPiArICAgIGRlZiBf X2luaXRfXyhzZWxmLCBTaXplLCBTY29wZSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNpemUg PSBTaXplDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNjb3BlID0gU2NvcGUNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtnT3Bjb2RlU2l6ZXNTY29wZVRhYmxlID0gWw0KPiA+DQo+ ID4gKyAgICBPcE5vZGUoMCwgMCksICAjIEVGSV9JRlJfSU5WQUxJRCAtIDB4MDANCj4gPg0KPiA+ ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX0ZPUk0pLCAxKSwgICMgRUZJX0lGUl9GT1JNX09Q DQo+ID4NCj4gPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9TVUJUSVRMRSksIDEpLCAgIyBF RklfSUZSX1NVQlRJVExFX09QDQo+ID4NCj4gPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9U RVhUKSwgMCksICAjIEVGSV9JRlJfVEVYVF9PUA0KPiA+DQo+ID4gKyAgICBPcE5vZGUoc2l6ZW9m KEVGSV9JRlJfSU1BR0UpLCAwKSwgICMgRUZJX0lGUl9JTUFHRV9PUA0KPiA+DQo+ID4gKyAgICBP cE5vZGUoc2l6ZW9mKEVGSV9JRlJfT05FX09GKSwgMSksICAjIEVGSV9JRlJfT05FX09GX09QIC0g MHgwNQ0KPiA+DQo+ID4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfQ0hFQ0tCT1gpLCAxKSwg ICMgRUZJX0lGUl9DSEVDS0JPWF9PUA0KPiA+DQo+ID4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9J RlJfTlVNRVJJQyksIDEpLCAgIyBFRklfSUZSX05VTUVSSUNfT1ANCj4gPg0KPiA+ICsgICAgT3BO b2RlKHNpemVvZihFRklfSUZSX1BBU1NXT1JEKSwgMSksICAjIEVGSV9JRlJfUEFTU1dPUkRfT1AN Cj4gPg0KPiA+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX09ORV9PRl9PUFRJT04pLCAwKSwg ICMNCj4gPiBFRklfSUZSX09ORV9PRl9PUFRJT05fT1ANCj4gPg0KPiA+ICsgICAgT3BOb2RlKHNp emVvZihFRklfSUZSX1NVUFBSRVNTX0lGKSwgMSksICAjIEVGSV9JRlJfU1VQUFJFU1NfSUYgLSAw eDBBDQo+ID4NCj4gPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9MT0NLRUQpLCAwKSwgICMg RUZJX0lGUl9MT0NLRURfT1ANCj4gPg0KPiA+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX0FD VElPTiksIDEpLCAgIyBFRklfSUZSX0FDVElPTl9PUA0KPiA+DQo+ID4gKyAgICBPcE5vZGUoc2l6 ZW9mKEVGSV9JRlJfUkVTRVRfQlVUVE9OKSwgMSksICAjDQo+ID4gRUZJX0lGUl9SRVNFVF9CVVRU T05fT1ANCj4gPg0KPiA+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX0ZPUk1fU0VUKSwgMSks ICAjIEVGSV9JRlJfRk9STV9TRVRfT1AgLTB4RQ0KPiA+DQo+ID4gKyAgICBPcE5vZGUoc2l6ZW9m KEVGSV9JRlJfUkVGKSwgMCksICAjIEVGSV9JRlJfUkVGX09QDQo+ID4NCj4gPiArICAgIE9wTm9k ZShzaXplb2YoRUZJX0lGUl9OT19TVUJNSVRfSUYpLCAxKSwgICMNCj4gPiBFRklfSUZSX05PX1NV Qk1JVF9JRl9PUCAtMHgxMA0KPiA+DQo+ID4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfSU5D T05TSVNURU5UX0lGKSwgMSksICAjDQo+ID4gRUZJX0lGUl9JTkNPTlNJU1RFTlRfSUZfT1ANCj4g Pg0KPiA+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX0VRX0lEX1ZBTCksIDApLCAgIyBFRklf SUZSX0VRX0lEX1ZBTF9PUA0KPiA+DQo+ID4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfRVFf SURfSUQpLCAwKSwgICMgRUZJX0lGUl9FUV9JRF9JRF9PUA0KPiA+DQo+ID4gKyAgICBPcE5vZGUo c2l6ZW9mKEVGSV9JRlJfRVFfSURfVkFMX0xJU1QpLCAwKSwgICMgRUZJX0lGUl9FUV9JRF9MSVNU X09QDQo+IC0NCj4gPiAweDE0DQo+ID4NCj4gPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9B TkQpLCAwKSwgICMgRUZJX0lGUl9BTkRfT1ANCj4gPg0KPiA+ICsgICAgT3BOb2RlKHNpemVvZihF RklfSUZSX09SKSwgMCksICAjIEVGSV9JRlJfT1JfT1ANCj4gPg0KPiA+ICsgICAgT3BOb2RlKHNp emVvZihFRklfSUZSX05PVCksIDApLCAgIyBFRklfSUZSX05PVF9PUA0KPiA+DQo+ID4gKyAgICBP cE5vZGUoc2l6ZW9mKEVGSV9JRlJfUlVMRSksIDEpLCAgIyBFRklfSUZSX1JVTEVfT1ANCj4gPg0K PiA+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX0dSQVlfT1VUX0lGKSwgMSksICAjIEVGSV9J RlJfR1JBWU9VVF9JRl9PUCAtDQo+ID4gMHgxOQ0KPiA+DQo+ID4gKyAgICBPcE5vZGUoc2l6ZW9m KEVGSV9JRlJfREFURSksIDEpLCAgIyBFRklfSUZSX0RBVEVfT1ANCj4gPg0KPiA+ICsgICAgT3BO b2RlKHNpemVvZihFRklfSUZSX1RJTUUpLCAxKSwgICMgRUZJX0lGUl9USU1FX09QDQo+ID4NCj4g PiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9TVFJJTkcpLCAxKSwgICMgRUZJX0lGUl9TVFJJ TkdfT1ANCj4gPg0KPiA+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX1JFRlJFU0gpLCAwKSwg ICMgRUZJX0lGUl9SRUZSRVNIX09QDQo+ID4NCj4gPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lG Ul9ESVNBQkxFX0lGKSwgMSksICAjIEVGSV9JRlJfRElTQUJMRV9JRl9PUCAtDQo+IDB4MUUNCj4g Pg0KPiA+ICsgICAgT3BOb2RlKDAsIDApLCAgIyAweDFGDQo+ID4NCj4gPiArICAgIE9wTm9kZShz aXplb2YoRUZJX0lGUl9UT19MT1dFUiksIDApLCAgIyBFRklfSUZSX1RPX0xPV0VSX09QIC0NCj4g MHgyMA0KPiA+DQo+ID4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfVE9fVVBQRVIpLCAwKSwg ICMgRUZJX0lGUl9UT19VUFBFUl9PUCAtIDB4MjENCj4gPg0KPiA+ICsgICAgT3BOb2RlKHNpemVv ZihFRklfSUZSX01BUCksIDEpLCAgIyBFRklfSUZSX01BUCAtIDB4MjINCj4gPg0KPiA+ICsgICAg T3BOb2RlKHNpemVvZihFRklfSUZSX09SREVSRURfTElTVCksIDEpLCAgIw0KPiBFRklfSUZSX09S REVSRURfTElTVF9PUA0KPiA+IC0gMHgyMw0KPiA+DQo+ID4gKyAgICBPcE5vZGUoc2l6ZW9mKEVG SV9JRlJfVkFSU1RPUkUpLCAwKSwgICMgRUZJX0lGUl9WQVJTVE9SRV9PUA0KPiA+DQo+ID4gKyAg ICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfVkFSU1RPUkVfTkFNRV9WQUxVRSksIDApLCAgIw0KPiA+ IEVGSV9JRlJfVkFSU1RPUkVfTkFNRV9WQUxVRV9PUA0KPiA+DQo+ID4gKyAgICBPcE5vZGUoc2l6 ZW9mKEVGSV9JRlJfVkFSU1RPUkVfRUZJKSwgMCksICAjDQo+IEVGSV9JRlJfVkFSU1RPUkVfRUZJ X09QDQo+ID4NCj4gPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9WQVJTVE9SRV9ERVZJQ0Up LCAxKSwgICMNCj4gPiBFRklfSUZSX1ZBUlNUT1JFX0RFVklDRV9PUA0KPiA+DQo+ID4gKyAgICBP cE5vZGUoc2l6ZW9mKEVGSV9JRlJfVkVSU0lPTiksIDApLCAgIyBFRklfSUZSX1ZFUlNJT05fT1Ag LSAweDI4DQo+ID4NCj4gPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9FTkQpLCAwKSwgICMg RUZJX0lGUl9FTkRfT1ANCj4gPg0KPiA+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX01BVENI KSwgMCksICAjIEVGSV9JRlJfTUFUQ0hfT1AgLSAweDJBDQo+ID4NCj4gPiArICAgIE9wTm9kZShz aXplb2YoRUZJX0lGUl9HRVQpLCAwKSwgICMgRUZJX0lGUl9HRVQgLSAweDJCDQo+ID4NCj4gPiAr ICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9TRVQpLCAwKSwgICMgRUZJX0lGUl9TRVQgLSAweDJD DQo+ID4NCj4gPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9SRUFEKSwgMCksICAjIEVGSV9J RlJfUkVBRCAtIDB4MkQNCj4gPg0KPiA+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX1dSSVRF KSwgMCksICAjIEVGSV9JRlJfV1JJVEUgLSAweDJFDQo+ID4NCj4gPiArICAgIE9wTm9kZShzaXpl b2YoRUZJX0lGUl9FUVVBTCksIDApLCAgIyBFRklfSUZSX0VRVUFMX09QIC0gMHgyRg0KPiA+DQo+ ID4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfTk9UX0VRVUFMKSwgMCksICAjIEVGSV9JRlJf Tk9UX0VRVUFMX09QDQo+ID4NCj4gPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9HUkVBVEVS X1RIQU4pLCAwKSwgICMNCj4gPiBFRklfSUZSX0dSRUFURVJfVEhBTl9PUA0KPiA+DQo+ID4gKyAg ICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfR1JFQVRFUl9FUVVBTCksIDApLCAgIw0KPiA+IEVGSV9J RlJfR1JFQVRFUl9FUVVBTF9PUA0KPiA+DQo+ID4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJf TEVTU19USEFOKSwgMCksICAjIEVGSV9JRlJfTEVTU19USEFOX09QDQo+ID4NCj4gPiArICAgIE9w Tm9kZShzaXplb2YoRUZJX0lGUl9MRVNTX0VRVUFMKSwgMCksICAjIEVGSV9JRlJfTEVTU19FUVVB TF9PUCAtDQo+ID4gMHgzNA0KPiA+DQo+ID4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfQklU V0lTRV9BTkQpLCAwKSwgICMgRUZJX0lGUl9CSVRXSVNFX0FORF9PUA0KPiA+DQo+ID4gKyAgICBP cE5vZGUoc2l6ZW9mKEVGSV9JRlJfQklUV0lTRV9PUiksIDApLCAgIyBFRklfSUZSX0JJVFdJU0Vf T1JfT1ANCj4gPg0KPiA+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX0JJVFdJU0VfTk9UKSwg MCksICAjIEVGSV9JRlJfQklUV0lTRV9OT1RfT1ANCj4gPg0KPiA+ICsgICAgT3BOb2RlKHNpemVv ZihFRklfSUZSX1NISUZUX0xFRlQpLCAwKSwgICMgRUZJX0lGUl9TSElGVF9MRUZUX09QDQo+ID4N Cj4gPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9TSElGVF9SSUdIVCksIDApLCAgIyBFRklf SUZSX1NISUZUX1JJR0hUX09QDQo+ID4NCj4gPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9B REQpLCAwKSwgICMgRUZJX0lGUl9BRERfT1AgLSAweDNBDQo+ID4NCj4gPiArICAgIE9wTm9kZShz aXplb2YoRUZJX0lGUl9TVUJUUkFDVCksIDApLCAgIyBFRklfSUZSX1NVQlRSQUNUX09QDQo+ID4N Cj4gPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9NVUxUSVBMWSksIDApLCAgIyBFRklfSUZS X01VTFRJUExZX09QDQo+ID4NCj4gPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9ESVZJREUp LCAwKSwgICMgRUZJX0lGUl9ESVZJREVfT1ANCj4gPg0KPiA+ICsgICAgT3BOb2RlKHNpemVvZihF RklfSUZSX01PRFVMTyksIDApLCAgIyBFRklfSUZSX01PRFVMT19PUCAtIDB4M0UNCj4gPg0KPiA+ ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX1JVTEVfUkVGKSwgMCksICAjIEVGSV9JRlJfUlVM RV9SRUZfT1ANCj4gPg0KPiA+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX1FVRVNUSU9OX1JF RjEpLCAwKSwgICMNCj4gPiBFRklfSUZSX1FVRVNUSU9OX1JFRjFfT1ANCj4gPg0KPiA+ICsgICAg T3BOb2RlKHNpemVvZihFRklfSUZSX1FVRVNUSU9OX1JFRjIpLCAwKSwgICMNCj4gPiBFRklfSUZS X1FVRVNUSU9OX1JFRjJfT1AgLSAweDQxDQo+ID4NCj4gPiArICAgIE9wTm9kZShzaXplb2YoRUZJ X0lGUl9VSU5UOCksIDApLCAgIyBFRklfSUZSX1VJTlQ4DQo+ID4NCj4gPiArICAgIE9wTm9kZShz aXplb2YoRUZJX0lGUl9VSU5UMTYpLCAwKSwgICMgRUZJX0lGUl9VSU5UMTYNCj4gPg0KPiA+ICsg ICAgT3BOb2RlKHNpemVvZihFRklfSUZSX1VJTlQzMiksIDApLCAgIyBFRklfSUZSX1VJTlQzMg0K PiA+DQo+ID4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfVUlOVDY0KSwgMCksICAjIEVGSV9J RlJfVVROVDY0DQo+ID4NCj4gPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9UUlVFKSwgMCks ICAjIEVGSV9JRlJfVFJVRV9PUCAtIDB4NDYNCj4gPg0KPiA+ICsgICAgT3BOb2RlKHNpemVvZihF RklfSUZSX0ZBTFNFKSwgMCksICAjIEVGSV9JRlJfRkFMU0VfT1ANCj4gPg0KPiA+ICsgICAgT3BO b2RlKHNpemVvZihFRklfSUZSX1RPX1VJTlQpLCAwKSwgICMgRUZJX0lGUl9UT19VSU5UX09QDQo+ ID4NCj4gPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9UT19TVFJJTkcpLCAwKSwgICMgRUZJ X0lGUl9UT19TVFJJTkdfT1ANCj4gPg0KPiA+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX1RP X0JPT0xFQU4pLCAwKSwgICMgRUZJX0lGUl9UT19CT09MRUFOX09QDQo+ID4NCj4gPiArICAgIE9w Tm9kZShzaXplb2YoRUZJX0lGUl9NSUQpLCAwKSwgICMgRUZJX0lGUl9NSURfT1ANCj4gPg0KPiA+ ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX0ZJTkQpLCAwKSwgICMgRUZJX0lGUl9GSU5EX09Q DQo+ID4NCj4gPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9UT0tFTiksIDApLCAgIyBFRklf SUZSX1RPS0VOX09QDQo+ID4NCj4gPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9TVFJJTkdf UkVGMSksIDApLCAgIyBFRklfSUZSX1NUUklOR19SRUYxX09QIC0NCj4gPiAweDRFDQo+ID4NCj4g PiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9TVFJJTkdfUkVGMiksIDApLCAgIyBFRklfSUZS X1NUUklOR19SRUYyX09QDQo+ID4NCj4gPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9DT05E SVRJT05BTCksIDApLCAgIyBFRklfSUZSX0NPTkRJVElPTkFMX09QDQo+ID4NCj4gPiArICAgIE9w Tm9kZShzaXplb2YoRUZJX0lGUl9RVUVTVElPTl9SRUYzKSwgMCksICAjDQo+ID4gRUZJX0lGUl9R VUVTVElPTl9SRUYzX09QDQo+ID4NCj4gPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9aRVJP KSwgMCksICAjIEVGSV9JRlJfWkVST19PUA0KPiA+DQo+ID4gKyAgICBPcE5vZGUoc2l6ZW9mKEVG SV9JRlJfT05FKSwgMCksICAjIEVGSV9JRlJfT05FX09QDQo+ID4NCj4gPiArICAgIE9wTm9kZShz aXplb2YoRUZJX0lGUl9PTkVTKSwgMCksICAjIEVGSV9JRlJfT05FU19PUA0KPiA+DQo+ID4gKyAg ICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfVU5ERUZJTkVEKSwgMCksICAjIEVGSV9JRlJfVU5ERUZJ TkVEX09QDQo+ID4NCj4gPiArICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9MRU5HVEgpLCAwKSwg ICMgRUZJX0lGUl9MRU5HVEhfT1ANCj4gPg0KPiA+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZS X0RVUCksIDApLCAgIyBFRklfSUZSX0RVUF9PUCAtIDB4NTcNCj4gPg0KPiA+ICsgICAgT3BOb2Rl KHNpemVvZihFRklfSUZSX1RISVMpLCAwKSwgICMgRUZJX0lGUl9USElTX09QDQo+ID4NCj4gPiAr ICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9TUEFOKSwgMCksICAjIEVGSV9JRlJfU1BBTl9PUA0K PiA+DQo+ID4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfVkFMVUUpLCAxKSwgICMgRUZJX0lG Ul9WQUxVRV9PUA0KPiA+DQo+ID4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfREVGQVVMVCks IDApLCAgIyBFRklfSUZSX0RFRkFVTFRfT1ANCj4gPg0KPiA+ICsgICAgT3BOb2RlKHNpemVvZihF RklfSUZSX0RFRkFVTFRTVE9SRSksIDApLCAgIw0KPiBFRklfSUZSX0RFRkFVTFRTVE9SRV9PUA0K PiA+IC0gMHg1Qw0KPiA+DQo+ID4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfRk9STV9NQVAp LCAxKSwgICMgRUZJX0lGUl9GT1JNX01BUF9PUCAtDQo+ID4gMHg1RA0KPiA+DQo+ID4gKyAgICBP cE5vZGUoc2l6ZW9mKEVGSV9JRlJfQ0FURU5BVEUpLCAwKSwgICMgRUZJX0lGUl9DQVRFTkFURV9P UA0KPiA+DQo+ID4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9JRlJfR1VJRCksIDApLCAgIyBFRklf SUZSX0dVSURfT1ANCj4gPg0KPiA+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX1NFQ1VSSVRZ KSwgMCksICAjIEVGSV9JRlJfU0VDVVJJVFlfT1AgLSAweDYwDQo+ID4NCj4gPiArICAgIE9wTm9k ZShzaXplb2YoRUZJX0lGUl9NT0RBTF9UQUcpLCAwKSwgICMgRUZJX0lGUl9NT0RBTF9UQUdfT1Ag LQ0KPiA+IDB4NjENCj4gPg0KPiA+ICsgICAgT3BOb2RlKHNpemVvZihFRklfSUZSX1JFRlJFU0hf SUQpLCAwKSwgICMgRUZJX0lGUl9SRUZSRVNIX0lEX09QIC0NCj4gPiAweDYyDQo+ID4NCj4gPiAr ICAgIE9wTm9kZShzaXplb2YoRUZJX0lGUl9XQVJOSU5HX0lGKSwgMSksICAjIEVGSV9JRlJfV0FS TklOR19JRl9PUCAtDQo+ID4gMHg2Mw0KPiA+DQo+ID4gKyAgICBPcE5vZGUoc2l6ZW9mKEVGSV9J RlJfTUFUQ0gyKSwgMCksDQo+ID4NCj4gPiArXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gK2NsYXNzIE9wQnVmZmVyTm9kZToNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNl bGYsIEJ1ZmZlcj1Ob25lLCBOZXh0PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5CdWZm ZXIgPSBCdWZmZXINCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuTmV4dCA9IE5leHQNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBBU1NJR05fRkxBRyhFbnVtKToNCj4gPg0K PiA+ICsgICAgUEVORElORyA9IDENCj4gPg0KPiA+ICsgICAgQVNTSUdORUQgPSAyDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArVkFMVUVfVFlQRV9PTkUgPSAxDQo+ID4NCj4gPiAr VkFMVUVfVFlQRV9UV08gPSAyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xh c3MgU1BlbmRpbmdBc3NpZ246DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBLZXks IFZhbEFkZHIsIExpbmVObywgTXNnLCBUeXBlPTApOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5L ZXkgPSBLZXkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuQWRkciA9IFZhbEFkZHINCj4gPg0KPiA+ ICsgICAgICAgIHNlbGYuRmxhZyA9IEFTU0lHTl9GTEFHLlBFTkRJTkcNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuTGluZU5vID0gTGluZU5vDQo+ID4NCj4gPiArICAgICAgICBzZWxmLk1zZyA9IE1z Zw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5UeXBlID0gVHlwZQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5OZXh0ID0gTm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgQXNzaWduVmFs dWUoc2VsZiwgVmFsKToNCj4gPg0KPiA+ICsgICAgICAgIGlmIHNlbGYuVHlwZSA9PSBWQUxVRV9U WVBFX09ORToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkFkZHIuUXVlc3Rpb25JZDEgPSBW YWwNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgc2VsZi5UeXBlID09IFZBTFVFX1RZUEVfVFdPOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuQWRkci5RdWVzdGlvbklkMiA9IFZhbA0KPiA+DQo+ ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkFkZHIuUXVlc3Rp b25JZCA9IFZhbA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5GbGFnID0gQVNT SUdOX0ZMQUcuQVNTSUdORUQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFz cyBJbnNlcnRPcE5vZGU6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBEYXRhLCBP cENvZGUpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5EYXRhID0gRGF0YQ0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5PcENvZGUgPSBPcENvZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICtjbGFzcyBGb3JtUGtnOg0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICBzZWxmLlBrZ0xlbmd0aCA9IDANCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuT2Zmc2V0ID0gMA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5QZW5kaW5nQXNzaWduTGlzdCA9 IE5vbmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIENsZWFyKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5Qa2dMZW5ndGggPSAwDQo+ID4NCj4gPiArICAgICAgICBzZWxmLk9m ZnNldCA9IDANCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUGVuZGluZ0Fzc2lnbkxpc3QgPSBOb25l DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBCdWlsZFBrZ0hkcihzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgIFBrZ0hkciA9IEVGSV9ISUlfUEFDS0FHRV9IRUFERVIoKQ0KPiA+DQo+ID4g KyAgICAgICAgUGtnSGRyLlR5cGUgPSBFRklfSElJX1BBQ0tBR0VfRk9STQ0KPiA+DQo+ID4gKyAg ICAgICAgUGtnSGRyLkxlbmd0aCA9IHNlbGYuUGtnTGVuZ3RoICsgc2l6ZW9mKEVGSV9ISUlfUEFD S0FHRV9IRUFERVIpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gUGtnSGRyDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiBCdWlsZFBrZyhzZWxmLCBSb290KToNCj4gPg0KPiA+ICsgICAg ICAgIGlmIFJvb3QgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0K PiA+ICsgICAgICAgIGlmIFJvb3QuT3BDb2RlIGlzIG5vdCBOb25lIGFuZCBSb290Lk9wQ29kZSAh PQ0KPiA+IEVGSV9JRlJfU0hPV05fREVGQVVMVFNUT1JFX09QOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuUGtnTGVuZ3RoICs9IFJvb3QuRGF0YS5HZXRJbmZvKCkuSGVhZGVyLkxlbmd0aA0K PiA+DQo+ID4gKyAgICAgICAgICAgIFJvb3QuT2Zmc2V0ID0gZ0Zvcm1Qa2cuT2Zmc2V0DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5PZmZzZXQgKz0gUm9vdC5EYXRhLkdldEluZm8oKS5IZWFk ZXIuTGVuZ3RoDQo+ID4NCj4gPiArICAgICAgICBpZiBSb290LkNoaWxkICE9IFtdOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGZvciBDaGlsZE5vZGUgaW4gUm9vdC5DaGlsZDoNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5CdWlsZFBrZyhDaGlsZE5vZGUpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICMgR2V0IGRhdGEgZnJvbSBjdHlwZXMgdG8gYnl0ZXMuDQo+ID4NCj4gPiArICAg IGRlZiBTdHJ1Y3RUb1N0cmVhbShzZWxmLCBTdHJ1Y3QpIC0+IGJ5dGVzOg0KPiA+DQo+ID4gKyAg ICAgICAgTGVuZ3RoID0gc2l6ZW9mKFN0cnVjdCkNCj4gPg0KPiA+ICsgICAgICAgIFAgPSBjYXN0 KHBvaW50ZXIoU3RydWN0KSwgUE9JTlRFUihjX2NoYXIgKiBMZW5ndGgpKQ0KPiA+DQo+ID4gKyAg ICAgICAgcmV0dXJuIFAuY29udGVudHMucmF3DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiBBc3NpZ25QZW5kaW5nKHNlbGYsIEtleSwgVmFyQWRkciwgTGluZU5vLCBNc2csIFR5cGU9MCk6 DQo+ID4NCj4gPiArICAgICAgICBwTmV3ID0gU1BlbmRpbmdBc3NpZ24oS2V5LCBWYXJBZGRyLCBM aW5lTm8sIE1zZywgVHlwZSkNCj4gPg0KPiA+ICsgICAgICAgIGlmIHBOZXcgaXMgTm9uZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX09VVF9G T1JfUkVTT1VSQ0VTDQo+ID4NCj4gPiArICAgICAgICBwTmV3Lk5leHQgPSBzZWxmLlBlbmRpbmdB c3NpZ25MaXN0DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlBlbmRpbmdBc3NpZ25MaXN0ID0gcE5l dw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUND RVNTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBEb1BlbmRpbmdBc3NpZ24oc2VsZiwg S2V5LCBWYWwpOg0KPiA+DQo+ID4gKyAgICAgICAgaWYgS2V5IGlzIE5vbmUgb3IgVmFsIGlzIE5v bmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gPiArICAgICAgICBwTm9k ZSA9IHNlbGYuUGVuZGluZ0Fzc2lnbkxpc3QNCj4gPg0KPiA+ICsgICAgICAgIHdoaWxlIHBOb2Rl IGlzIG5vdCBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHBOb2RlLktleSA9PSBLZXk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBOb2RlLkFzc2lnblZhbHVlKFZhbCkNCj4gPg0K PiA+ICsgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgZGVmIEhhdmVQZW5kaW5nVW5hc3NpZ25lZChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg IHBOb2RlID0gc2VsZi5QZW5kaW5nQXNzaWduTGlzdA0KPiA+DQo+ID4gKyAgICAgICAgd2hpbGUg cE5vZGUgaXMgbm90IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgcE5vZGUuRmxhZyA9 PSBBU1NJR05fRkxBRy5QRU5ESU5HOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g VHJ1ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIEZhbHNlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiBQZW5kaW5nQXNzaWduUHJpbnRBbGwoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICBw Tm9kZSA9IHNlbGYuUGVuZGluZ0Fzc2lnbkxpc3QNCj4gPg0KPiA+ICsgICAgICAgIHdoaWxlIHBO b2RlIGlzIG5vdCBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHBOb2RlLkZsYWcgPT0g QVNTSUdOX0ZMQUcuUEVORElORzoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZ1ZmckVycm9y SGFuZGxlLlByaW50TXNnKHBOb2RlLkxpbmVObywgIkVycm9yIiwgcE5vZGUuTXNnLA0KPiA+IHBO b2RlLktleSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIERlY2xhcmVQZW5kaW5nUXVlc3Rpb24oDQo+ID4NCj4g PiArICAgICAgICBzZWxmLA0KPiA+DQo+ID4gKyAgICAgICAgbFZmclZhckRhdGFUeXBlREI6IFZm clZhckRhdGFUeXBlREIsDQo+ID4NCj4gPiArICAgICAgICBsVmZyRGF0YVN0b3JhZ2U6IFZmckRh dGFTdG9yYWdlLA0KPiA+DQo+ID4gKyAgICAgICAgbFZmclF1ZXN0aW9uREI6IFZmclF1ZXN0aW9u REIsDQo+ID4NCj4gPiArICAgICAgICBMaW5lTm89Tm9uZSwNCj4gPg0KPiA+ICsgICAgKToNCj4g Pg0KPiA+ICsgICAgICAgICMgRGVjbGFyZSBhbGwgcXVlc3Rpb25zIGFzIE51bWVyaWMgaW4gRGlz YWJsZUlmIFRydWUNCj4gPg0KPiA+ICsgICAgICAgIFJldHVybkxpc3QgPSBbXQ0KPiA+DQo+ID4g KyAgICAgICAgR3VpZE9iaiA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgIERJT2JqID0gSWZyRGlz YWJsZUlmKCkNCj4gPg0KPiA+ICsgICAgICAgIERJT2JqLlNldExpbmVObyhMaW5lTm8pDQo+ID4N Cj4gPiArICAgICAgICBSZXR1cm5MaXN0LmFwcGVuZChJbnNlcnRPcE5vZGUoRElPYmosIEVGSV9J RlJfRElTQUJMRV9JRl9PUCkpDQo+ID4NCj4gPiArICAgICAgICAjIFRydWVPcGNvZGUNCj4gPg0K PiA+ICsgICAgICAgIFRPYmogPSBJZnJUcnVlKExpbmVObykNCj4gPg0KPiA+ICsgICAgICAgIFJl dHVybkxpc3QuYXBwZW5kKEluc2VydE9wTm9kZShUT2JqLCBFRklfSUZSX1RSVUVfT1ApKQ0KPiA+ DQo+ID4gKyAgICAgICAgcE5vZGUgPSBzZWxmLlBlbmRpbmdBc3NpZ25MaXN0DQo+ID4NCj4gPiAr ICAgICAgICB3aGlsZSBwTm9kZSBpcyBub3QgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBwTm9kZS5GbGFnID09IEFTU0lHTl9GTEFHLlBFTkRJTkc6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIEluZm8gPSBFRklfVkFSU1RPUkVfSU5GTygpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIFZhclN0ciA9IHBOb2RlLktleQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBRSWQsIFJl dHVybkNvZGUgPSBsVmZyUXVlc3Rpb25EQi5SZWdpc3RlclF1ZXN0aW9uKA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgTm9uZSwgVmFyU3RyLCBFRklfUVVFU1RJT05fSURfSU5WQUxJRCwg Z0Zvcm1Qa2cNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBpZiBSZXR1cm5Db2RlICE9IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNT Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZ1ZmckVycm9ySGFuZGxlLkhhbmRsZUVy cm9yKFJldHVybkNvZGUsIHBOb2RlLkxpbmVObywNCj4gPiBwTm9kZS5LZXkpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0dXJuTGlzdCwgUmV0dXJuQ29kZQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAjIGlmZGVmIFZGUkVYUF9ERUJVRw0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAjIHByaW50ZigiVW5kZWZpbmVkIFF1ZXN0aW9uIG5hbWUgaXMgJXMgYW5kIElk IGlzIDB4JXhcbiIsDQo+IFZhclN0ciwNCj4gPiBRSWQpOw0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAjIGVuZGlmDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICMgR2V0IFF1ZXN0aW9uIElu Zm8sIGZyYW1ld29yayB2ZnIgVmFyTmFtZSA9PSBTdHJ1Y3ROYW1lDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIEFycmF5SWR4LCBzLCBGTmFtZSwgUmV0dXJuQ29kZSA9DQo+ID4gbFZmclZhckRh dGFUeXBlREIuRXh0cmFjdEZpZWxkTmFtZUFuZEFycmFyeSgNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIFZhclN0ciwgMA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICApDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIGlmIFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX1NVQ0NFU1M6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBnVmZyRXJyb3JIYW5k bGUuUHJpbnRNc2coDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgcE5vZGUuTGlu ZU5vLCAiRXJyb3IiLCAiVmFyIHN0cmluZyBpcyBub3QgdGhlIHZhbGlkIEMgdmFyaWFibGUiLA0K PiA+IHBOb2RlLktleQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHVybkxpc3QsIFJldHVybkNvZGUNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgIyBHZXQgVmFyU3RvcmVUeXBlDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIEluZm8uVmFyU3RvcmVJZCwgUmV0dXJuQ29kZSA9DQo+ID4g bFZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlSWQoRk5hbWUpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIGlmIFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX1NVQ0NFU1M6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBnVmZyRXJyb3JIYW5k bGUuUHJpbnRNc2coDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgcE5vZGUuTGlu ZU5vLCAiRXJyb3IiLCAiVmFyIFN0b3JlIFR5cGUgaXMgbm90IGRlZmluZWQiLA0KPiBGTmFtZQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIFJldHVybkxpc3QsIFJldHVybkNvZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgVmFyU3RvcmVUeXBlID0gbFZmckRhdGFTdG9yYWdlLkdldFZhclN0 b3JlVHlwZShJbmZvLlZhclN0b3JlSWQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIHMg PT0gbGVuKFZhclN0cikgYW5kIEFycmF5SWR4ICE9IElOVkFMSURfQVJSQVlfSU5ERVg6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICBSZXR1cm5Db2RlID0gbFZmckRhdGFTdG9yYWdlLkdl dE5hbWVWYXJTdG9yZUluZm8oSW5mbywNCj4gPiBBcnJheUlkeCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIFZhclN0b3Jl VHlwZSA9PQ0KPiA+IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX0VGSToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm5Db2RlID0gbFZmckRhdGFT dG9yYWdlLkdldEVmaVZhclN0b3JlSW5mbyhJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgZWxpZiAoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgVmFyU3RvcmVU eXBlID09DQo+ID4gRUZJX1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfQlVGRkVS DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgb3IgVmFyU3RvcmVUeXBlID09DQo+ ID4gRUZJX1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfQlVGRkVSX0JJVFMNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgVmFyU3RyID0gcE5vZGUuS2V5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgU05hbWUsIFJldHVybkNvZGUgPQ0KPiA+IGxWZnJEYXRhU3RvcmFnZS5HZXRCdWZmZXJW YXJTdG9yZURhdGFUeXBlTmFtZSgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgSW5mby5WYXJTdG9yZUlkDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIFJldHVybkNvZGUgPT0gVmZyUmV0 dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1M6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE5ld1N0ciA9IFNOYW1lICsgIi4iICsgVmFyU3RyW3M6XQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBJbmZvLkluZm8uVmFyT2Zmc2V0LA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSW5mby5WYXJUeXBlLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSW5mby5WYXJUb3RhbFNpemUsDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBJbmZvLklzQml0VmFyLA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuQ29kZSwNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKSA9IGxWZnJWYXJEYXRhVHlwZURCLkdldERhdGFGaWVsZElu Zm8oTmV3U3RyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm5Db2RlID0gVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX1VOU1VQUE9SVEVEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IGlmIFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1M6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICBnVmZyRXJyb3JIYW5kbGUuSGFuZGxlRXJyb3IoUmV0 dXJuQ29kZSwgcE5vZGUuTGluZU5vLA0KPiA+IHBOb2RlLktleSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgIyBJZiB0aGUgc3RvcmFnZSBpcyBiaXQgZmllbGRzLCBjcmVhdGUgR3VpZCBvcGNv ZGUgdG8gd3JhcCB0aGUNCj4gbnVtZXJpYw0KPiA+IG9wY29kZS4NCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgaWYgSW5mby5Jc0JpdFZhcjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg IEd1aWRPYmogPSBJZnJHdWlkKDApDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBHdWlk T2JqLlNldEd1aWQoRURLSUlfSUZSX0JJVF9WQVJTVE9SRV9HVUlEKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgR3VpZE9iai5TZXRMaW5lTm8oTGluZU5vKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgUmV0dXJuTGlzdC5hcHBlbmQoSW5zZXJ0T3BOb2RlKEd1aWRPYmosIEVG SV9JRlJfR1VJRF9PUCkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlm IEluZm8uSXNCaXRWYXI6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBJbmZvLlZhclR5 cGUgPSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgIyBOdW1lcmljIGRvZXNuJ3Qgc3VwcG9ydCBCT09MRUFOIGRhdGEgdHlwZS4N Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgIyBCT09MRUFOIHR5cGUgaGFzIHRoZSBzYW1lIGRh dGEgc2l6ZSB0byBVSU5UOC4NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZWxpZiBJbmZvLlZh clR5cGUgPT0gRUZJX0lGUl9UWVBFX0JPT0xFQU46DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICBJbmZvLlZhclR5cGUgPSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfOA0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBDTk9iaiA9IElmck51bWVyaWMoSW5mby5WYXJUeXBl KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBDTk9iai5TZXRMaW5lTm8oTGluZU5vKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBDTk9iai5TZXRQcm9tcHQoMHgwKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBDTk9iai5TZXRIZWxwKDB4MCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgQ05PYmouU2V0UXVlc3Rpb25JZChRSWQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIENO T2JqLlNldFZhclN0b3JlSW5mbyhJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBSZXR1 cm5MaXN0LmFwcGVuZChJbnNlcnRPcE5vZGUoQ05PYmosIEVGSV9JRlJfR1VJRF9PUCkpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIEluZm8uSXNCaXRWYXI6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICBNYXhWYWx1ZSA9ICgxIDw8IEluZm8uVmFyVG90YWxT aXplKSAtIDENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIENOT2JqLlNldE1pbk1heFN0 ZXBEYXRhKDAsIE1heFZhbHVlLCAwKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgTEZs YWdzID0gRURLSUlfSUZSX05VTUVSSUNfU0laRV9CSVQgJiBJbmZvLlZhclRvdGFsU2l6ZQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgQ05PYmouU2V0RmxhZ3NGb3JCaXRGaWVsZCgwLCBM RmxhZ3MpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBDTk9iai5TZXRGbGFncygwLCBJbmZvLlZhclR5cGUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBDTk9iai5TZXRNaW5NYXhTdGVwRGF0YSgwLCAtMSwgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgVmFyU3RvcmVUeXBlID09DQo+ ID4gRUZJX1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfRUZJOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgVk5PYmogPSBJZnJWYXJFcU5hbWUoUUlkLCBJbmZvLkluZm8u VmFyTmFtZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIFZOT2JqLlNldExpbmVObyhM aW5lTm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBSZXR1cm5MaXN0LmFwcGVuZChJ bnNlcnRPcE5vZGUoVk5PYmosIEVGSV9JRlJfR1VJRF9PUCkpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIENFT2JqID0gSWZyRW5kKCkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgQ0VPYmouU2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg UmV0dXJuTGlzdC5hcHBlbmQoSW5zZXJ0T3BOb2RlKENFT2JqLCBFRklfSUZSX0VORF9PUCkpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIEd1aWRPYmogaXMgbm90IE5v bmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBDRU9iakd1aWQgPSBJZnJFbmQoKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgQ0VPYmpHdWlkLlNldExpbmVObyhMaW5lTm8p DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBSZXR1cm5MaXN0LmFwcGVuZChJbnNlcnRP cE5vZGUoQ0VPYmpHdWlkLA0KPiBFRklfSUZSX0VORF9PUCkpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICBHdWlkT2JqLlNldFNjb3BlKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICBHdWlkT2JqID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUu TmV4dA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgU0VPYmogPSBJZnJFbmQoKQ0KPiA+ DQo+ID4gKyAgICAgICAgU0VPYmouU2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ICsgICAgICAg IFJldHVybkxpc3QuYXBwZW5kKEluc2VydE9wTm9kZShTRU9iaiwgRUZJX0lGUl9FTkRfT1ApKQ0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIFJldHVybkxpc3QsIFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9TVUNDRVNTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArZ0Zvcm1Qa2cg PSBGb3JtUGtnKCkNCj4gPg0KPiA+ICtnQ3JlYXRlT3AgPSBUcnVlDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArZ0lmck9ialByaW50RGVidWdUYWJsZSA9IFsNCj4gPg0KPiA+ICsgICAgIkVGSV9JRlJf SU5WQUxJRCIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX0ZPUk0iLA0KPiA+DQo+ID4gKyAgICAi RUZJX0lGUl9TVUJUSVRMRSIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX1RFWFQiLA0KPiA+DQo+ ID4gKyAgICAiRUZJX0lGUl9JTUFHRSIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX09ORV9PRiIs DQo+ID4NCj4gPiArICAgICJFRklfSUZSX0NIRUNLQk9YIiwNCj4gPg0KPiA+ICsgICAgIkVGSV9J RlJfTlVNRVJJQyIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX1BBU1NXT1JEIiwNCj4gPg0KPiA+ ICsgICAgIkVGSV9JRlJfT05FX09GX09QVElPTiIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX1NV UFBSRVNTX0lGIiwNCj4gPg0KPiA+ICsgICAgIkVGSV9JRlJfTE9DS0VEIiwNCj4gPg0KPiA+ICsg ICAgIkVGSV9JRlJfQUNUSU9OIiwNCj4gPg0KPiA+ICsgICAgIkVGSV9JRlJfUkVTRVRfQlVUVE9O IiwNCj4gPg0KPiA+ICsgICAgIkVGSV9JRlJfRk9STV9TRVQiLA0KPiA+DQo+ID4gKyAgICAiRUZJ X0lGUl9SRUYiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9OT19TVUJNSVRfSUYiLA0KPiA+DQo+ ID4gKyAgICAiRUZJX0lGUl9JTkNPTlNJU1RFTlRfSUYiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lG Ul9FUV9JRF9WQUwiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9FUV9JRF9JRCIsDQo+ID4NCj4g PiArICAgICJFRklfSUZSX0VRX0lEX0xJU1QiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9BTkQi LA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9PUiIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX05P VCIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX1JVTEUiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lG Ul9HUkFZX09VVF9JRiIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX0RBVEUiLA0KPiA+DQo+ID4g KyAgICAiRUZJX0lGUl9USU1FIiwNCj4gPg0KPiA+ICsgICAgIkVGSV9JRlJfU1RSSU5HIiwNCj4g Pg0KPiA+ICsgICAgIkVGSV9JRlJfUkVGUkVTSCIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX0RJ U0FCTEVfSUYiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9JTlZBTElEIiwNCj4gPg0KPiA+ICsg ICAgIkVGSV9JRlJfVE9fTE9XRVIiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9UT19VUFBFUiIs DQo+ID4NCj4gPiArICAgICJFRklfSUZSX01BUCIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX09S REVSRURfTElTVCIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX1ZBUlNUT1JFIiwNCj4gPg0KPiA+ ICsgICAgIkVGSV9JRlJfVkFSU1RPUkVfTkFNRV9WQUxVRSIsDQo+ID4NCj4gPiArICAgICJFRklf SUZSX1ZBUlNUT1JFX0VGSSIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX1ZBUlNUT1JFX0RFVklD RSIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX1ZFUlNJT04iLA0KPiA+DQo+ID4gKyAgICAiRUZJ X0lGUl9FTkQiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9NQVRDSCIsDQo+ID4NCj4gPiArICAg ICJFRklfSUZSX0dFVCIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX1NFVCIsDQo+ID4NCj4gPiAr ICAgICJFRklfSUZSX1JFQUQiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9XUklURSIsDQo+ID4N Cj4gPiArICAgICJFRklfSUZSX0VRVUFMIiwNCj4gPg0KPiA+ICsgICAgIkVGSV9JRlJfTk9UX0VR VUFMIiwNCj4gPg0KPiA+ICsgICAgIkVGSV9JRlJfR1JFQVRFUl9USEFOIiwNCj4gPg0KPiA+ICsg ICAgIkVGSV9JRlJfR1JFQVRFUl9FUVVBTCIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX0xFU1Nf VEhBTiIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX0xFU1NfRVFVQUwiLA0KPiA+DQo+ID4gKyAg ICAiRUZJX0lGUl9CSVRXSVNFX0FORCIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX0JJVFdJU0Vf T1IiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9CSVRXSVNFX05PVCIsDQo+ID4NCj4gPiArICAg ICJFRklfSUZSX1NISUZUX0xFRlQiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9TSElGVF9SSUdI VCIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX0FERCIsDQo+ID4NCj4gPiArICAgICJFRklfSUZS X1NVQlRSQUNUIiwNCj4gPg0KPiA+ICsgICAgIkVGSV9JRlJfTVVMVElQTFkiLA0KPiA+DQo+ID4g KyAgICAiRUZJX0lGUl9ESVZJREUiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9NT0RVTE8iLA0K PiA+DQo+ID4gKyAgICAiRUZJX0lGUl9SVUxFX1JFRiIsDQo+ID4NCj4gPiArICAgICJFRklfSUZS X1FVRVNUSU9OX1JFRjEiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9RVUVTVElPTl9SRUYyIiwN Cj4gPg0KPiA+ICsgICAgIkVGSV9JRlJfVUlOVDgiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9V SU5UMTYiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9VSU5UMzIiLA0KPiA+DQo+ID4gKyAgICAi RUZJX0lGUl9VSU5UNjQiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9UUlVFIiwNCj4gPg0KPiA+ ICsgICAgIkVGSV9JRlJfRkFMU0UiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9UT19VSU5UIiwN Cj4gPg0KPiA+ICsgICAgIkVGSV9JRlJfVE9fU1RSSU5HIiwNCj4gPg0KPiA+ICsgICAgIkVGSV9J RlJfVE9fQk9PTEVBTiIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX01JRCIsDQo+ID4NCj4gPiAr ICAgICJFRklfSUZSX0ZJTkQiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9UT0tFTiIsDQo+ID4N Cj4gPiArICAgICJFRklfSUZSX1NUUklOR19SRUYxIiwNCj4gPg0KPiA+ICsgICAgIkVGSV9JRlJf U1RSSU5HX1JFRjIiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9DT05ESVRJT05BTCIsDQo+ID4N Cj4gPiArICAgICJFRklfSUZSX1FVRVNUSU9OX1JFRjMiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lG Ul9aRVJPIiwNCj4gPg0KPiA+ICsgICAgIkVGSV9JRlJfT05FIiwNCj4gPg0KPiA+ICsgICAgIkVG SV9JRlJfT05FUyIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX1VOREVGSU5FRCIsDQo+ID4NCj4g PiArICAgICJFRklfSUZSX0xFTkdUSCIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX0RVUCIsDQo+ ID4NCj4gPiArICAgICJFRklfSUZSX1RISVMiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9TUEFO IiwNCj4gPg0KPiA+ICsgICAgIkVGSV9JRlJfVkFMVUUiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lG Ul9ERUZBVUxUIiwNCj4gPg0KPiA+ICsgICAgIkVGSV9JRlJfREVGQVVMVFNUT1JFIiwNCj4gPg0K PiA+ICsgICAgIkVGSV9JRlJfRk9STV9NQVAiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9DQVRF TkFURSIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX0dVSUQiLA0KPiA+DQo+ID4gKyAgICAiRUZJ X0lGUl9TRUNVUklUWSIsDQo+ID4NCj4gPiArICAgICJFRklfSUZSX01PREFMX1RBRyIsDQo+ID4N Cj4gPiArICAgICJFRklfSUZSX1JFRlJFU0hfSUQiLA0KPiA+DQo+ID4gKyAgICAiRUZJX0lGUl9X QVJOSU5HX0lGIiwNCj4gPg0KPiA+ICsgICAgIkVGSV9JRlJfTUFUQ0gyIiwNCj4gPg0KPiA+ICtd DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArZ1Njb3BlQ291bnQgPSAwDQo+ID4NCj4gPiArZ0lzT3Jk ZXJlZExpc3QgPSBGYWxzZQ0KPiA+DQo+ID4gK2dJc1N0cmluZ09wID0gRmFsc2UNCj4gPg0KPiA+ ICtnQ3VycmVudE1pbk1heERhdGEgPSBOb25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArY2xhc3MgSWZyTGluZToNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExp bmVObz0wKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuTGluZU5vID0gTGluZU5vDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRMaW5lTm8oc2VsZiwgTGluZU5vKToNCj4gPg0KPiA+ ICsgICAgICAgIHNlbGYuTGluZU5vID0gTGluZU5vDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiBHZXRMaW5lTm8oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5MaW5l Tm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJCYXNlSW5mbzoN Cj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIE9iaj1Ob25lLCBRTmFtZT1Ob25lLCBW YXJJZFN0cj0iIik6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLk9iaiA9IE9iag0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5RTmFtZSA9IFFOYW1lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlZhcklk U3RyID0gVmFySWRTdHINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuRmxhZ3NT dHJlYW0gPSAiIg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5IYXNLZXkgPSBGYWxzZQ0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5IYXNRdWVzdGlvbklkID0gRmFsc2UNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIFNldFFOYW1lKHNlbGYsIFFOYW1lKToNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuUU5hbWUgPSBRTmFtZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0VmFySWRT dHIoc2VsZiwgVmFySWRTdHIpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5WYXJJZFN0ciA9IFZh cklkU3RyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRGbGFnc1N0cmVhbShzZWxm LCBGbGFnc1N0cmVhbSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkZsYWdzU3RyZWFtID0gRmxh Z3NTdHJlYW0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldEhhc0tleShzZWxmLCBI YXNLZXkpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5IYXNLZXkgPSBIYXNLZXkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldEhhc1F1ZXN0aW9uSWQoc2VsZiwgSGFzUXVlc3Rpb25J ZCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkhhc1F1ZXN0aW9uSWQgPSBIYXNRdWVzdGlvbklk DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgcmV0dXJuIHNlbGYuT2JqDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArY2xhc3MgSWZyT3BIZWFkZXI6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBP cEhlYWRlcjogRUZJX0lGUl9PUF9IRUFERVIsIE9wQ29kZT1Ob25lLA0KPiA+IExlbmd0aD0wKToN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuT3BIZWFkZXIgPSBPcEhlYWRlcg0KPiA+DQo+ID4gKyAg ICAgICAgaWYgT3BDb2RlIGlzIG5vdCBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu T3BIZWFkZXIuT3BDb2RlID0gT3BDb2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5PcEhlYWRlci5MZW5ndGggPSBnT3Bjb2RlU2l6ZXNTY29wZVRhYmxlW09wQ29kZV0u U2l6ZSBpZg0KPiA+IExlbmd0aCA9PSAwIGVsc2UgTGVuZ3RoDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5PcEhlYWRlci5TY29wZSA9ICgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgMSBp ZiAoZ09wY29kZVNpemVzU2NvcGVUYWJsZVtPcENvZGVdLlNjb3BlICsgZ1Njb3BlQ291bnQgPiAw KQ0KPiA+IGVsc2UgMA0KPiA+DQo+ID4gKyAgICAgICAgICAgICkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIEdldExlbmd0aChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBz ZWxmLk9wSGVhZGVyLkxlbmd0aA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0U2Nv cGUoc2VsZiwgU2NvcGUpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5PcEhlYWRlci5TY29wZSA9 IFNjb3BlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBVcGRhdGVIZWFkZXIoc2VsZiwg SGVhZGVyKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuT3BIZWFkZXIgPSBIZWFkZXINCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEluY0xlbmd0aChzZWxmLCBTaXplKToNCj4gPg0KPiA+ ICsgICAgICAgIHNlbGYuT3BIZWFkZXIuTGVuZ3RoICs9IFNpemUNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIERlY0xlbmd0aChzZWxmLCBTaXplKToNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuT3BIZWFkZXIuTGVuZ3RoIC09IFNpemUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVm IEFkanVzdExlbmd0aChzZWxmLCBCZWZvcmVTaXplLCBBZnRlclNpemUpOg0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5PcEhlYWRlci5MZW5ndGggLT0gQmVmb3JlU2l6ZQ0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5PcEhlYWRlci5MZW5ndGggKz0gQWZ0ZXJTaXplDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLk9wSGVhZGVyLkxlbmd0aCArPSAxDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBH ZXRPcENvZGUoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5PcEhlYWRlci5P cENvZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJTdGF0ZW1l bnRIZWFkZXI6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzSGVhZGVyOiBFRklf SUZSX1NUQVRFTUVOVF9IRUFERVIpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5zSGVhZGVyID0g c0hlYWRlcg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5zSGVhZGVyLkhlbHAgPSBFRklfU1RSSU5H X0lEX0lOVkFMSUQNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuc0hlYWRlci5Qcm9tcHQgPSBFRklf U1RSSU5HX0lEX0lOVkFMSUQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldFN0YXRl bWVudEhlYWRlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLnNIZWFkZXIN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldFByb21wdChzZWxmLCBQcm9tcHQpOg0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5zSGVhZGVyLlByb21wdCA9IFByb21wdA0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0SGVscChzZWxmLCBIZWxwKToNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuc0hlYWRlci5IZWxwID0gSGVscA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gK2NsYXNzIElmck1pbk1heFN0ZXBEYXRhOg0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0 X18oc2VsZiwgTWluTWF4U3RlcERhdGEsIE51bWVyaWNPcGNvZGU9RmFsc2UpOg0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5NaW5NYXhTdGVwRGF0YSA9IE1pbk1heFN0ZXBEYXRhDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLk1pbk1heFN0ZXBEYXRhLk1pblZhbHVlID0gMA0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5NaW5NYXhTdGVwRGF0YS5NYXhWYWx1ZSA9IDANCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuTWluTWF4U3RlcERhdGEuU3RlcCA9IDANCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuVmFsdWVJ c1NldCA9IEZhbHNlDQo+ID4NCj4gPiArICAgICAgICBzZWxmLklzTnVtZXJpYyA9IE51bWVyaWNP cGNvZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldE1pbk1heFN0ZXBEYXRhKHNl bGYsIE1pblZhbHVlLCBNYXhWYWx1ZSwgU3RlcCk6DQo+ID4NCj4gPiArICAgICAgICBpZiBzZWxm LlZhbHVlSXNTZXQgPT0gRmFsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5NaW5NYXhT dGVwRGF0YS5NaW5WYWx1ZSA9IE1pblZhbHVlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5N aW5NYXhTdGVwRGF0YS5NYXhWYWx1ZSA9IE1heFZhbHVlDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5NaW5NYXhTdGVwRGF0YS5TdGVwID0gU3RlcA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuVmFsdWVJc1NldCA9IFRydWUNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgTWluVmFsdWUgPCBzZWxmLk1pbk1heFN0ZXBEYXRh Lk1pblZhbHVlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLk1pbk1heFN0ZXBEYXRh Lk1pblZhbHVlID0gTWluVmFsdWUNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBNYXhWYWx1ZSA+ IHNlbGYuTWluTWF4U3RlcERhdGEuTWF4VmFsdWU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuTWluTWF4U3RlcERhdGEuTWF4VmFsdWUgPSBNYXhWYWx1ZQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuTWluTWF4U3RlcERhdGEuU3RlcCA9IFN0ZXANCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIElzTnVtZXJpY09wY29kZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJl dHVybiBzZWxmLklzTnVtZXJpYw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgVXBkYXRl SWZyTWluTWF4U3RlcERhdGEoc2VsZiwgTWluTWF4U3RlcERhdGEpOg0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5NaW5NYXhTdGVwRGF0YSA9IE1pbk1heFN0ZXBEYXRhDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgIGRlZiBHZXRNaW5EYXRhKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJu IHNlbGYuTWluTWF4U3RlcERhdGEuTWluVmFsdWUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIEdldE1heERhdGEoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5NaW5N YXhTdGVwRGF0YS5NYXhWYWx1ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0U3Rl cERhdGEoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5NaW5NYXhTdGVwRGF0 YS5TdGVwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgSWZyRm9ybVNl dChJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxm LCBTaXplKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuRm9ybVNldCA9IEVGSV9JRlJfRk9STV9T RVQoKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5DbGFzc0d1aWQgPSBbXQ0KPiA+DQo+ID4gKyAg ICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5Gb3JtU2V0LkhlYWRlciwNCj4g RUZJX0lGUl9GT1JNX1NFVF9PUCwNCj4gPiBTaXplKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5G b3JtU2V0LkhlbHAgPSBFRklfU1RSSU5HX0lEX0lOVkFMSUQNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuRm9ybVNldC5Gb3JtU2V0VGl0bGUgPSBFRklfU1RSSU5HX0lEX0lOVkFMSUQNCj4gPg0KPiA+ ICsgICAgICAgIHNlbGYuRm9ybVNldC5GbGFncyA9IDANCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu Rm9ybVNldC5HdWlkID0gRUZJX0dVSUQoMCwgMCwgMCwgR3VpZEFycmF5KDAsIDAsIDAsIDAsIDAs IDAsIDAsIDApKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5DbGFzc0d1aWRO dW0gPSAwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRHdWlkKHNlbGYsIEd1aWQp Og0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5Gb3JtU2V0Lkd1aWQgPSBHdWlkDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiBHZXRHdWlkKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0 dXJuIHNlbGYuRm9ybVNldC5HdWlkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRG b3JtU2V0VGl0bGUoc2VsZiwgRm9ybVNldFRpdGxlKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu Rm9ybVNldC5Gb3JtU2V0VGl0bGUgPSBGb3JtU2V0VGl0bGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgZGVmIEdldEZvcm1TZXRUaXRsZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVy biBzZWxmLkZvcm1TZXQuRm9ybVNldFRpdGxlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiBTZXRIZWxwKHNlbGYsIEhlbHApOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5Gb3JtU2V0Lkhl bHAgPSBIZWxwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRIZWxwKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuRm9ybVNldC5IZWxwDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGRlZiBTZXRDbGFzc0d1aWQoc2VsZiwgR3VpZCk6DQo+ID4NCj4gPiArICAg ICAgICBzZWxmLkNsYXNzR3VpZC5hcHBlbmQoR3VpZCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu Rm9ybVNldC5GbGFncyArPSAxDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRDbGFz c0d1aWQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5DbGFzc0d1aWQNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEZsYWdzKHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgcmV0dXJuIHNlbGYuRm9ybVNldC5GbGFncw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBkZWYgU2V0Q2xhc3NHdWlkTnVtKHNlbGYsIE51bSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxm LkNsYXNzR3VpZE51bSA9IE51bQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SW5m byhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLkZvcm1TZXQNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJPbmVPZk9wdGlvbihJZnJMaW5lLCBJ ZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBWYWx1ZVR5cGUs IFZhbHVlTGlzdCk6DQo+ID4NCj4gPiArICAgICAgICBOdW1zID0gbGVuKFZhbHVlTGlzdCkNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuT25lT2ZPcHRpb24gPSBSZWZpbmVfRUZJX0lGUl9PTkVfT0Zf T1BUSU9OKFZhbHVlVHlwZSwNCj4gTnVtcykNCj4gPg0KPiA+ICsgICAgICAgIElmck9wSGVhZGVy Ll9faW5pdF9fKA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYsIHNlbGYuT25lT2ZPcHRpb24u SGVhZGVyLCBFRklfSUZSX09ORV9PRl9PUFRJT05fT1AsDQo+ID4gc2l6ZW9mKHNlbGYuT25lT2ZP cHRpb24pDQo+ID4NCj4gPiArICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICBzZWxmLk9uZU9m T3B0aW9uLkZsYWdzID0gMA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5PbmVPZk9wdGlvbi5PcHRp b24gPSBFRklfU1RSSU5HX0lEX0lOVkFMSUQNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuT25lT2ZP cHRpb24uVHlwZSA9IEVGSV9JRlJfVFlQRV9PVEhFUg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5W YWx1ZVR5cGUgPSBWYWx1ZVR5cGUNCj4gPg0KPiA+ICsgICAgICAgIGlmIFZhbHVlTGlzdCAhPSBb XToNCj4gPg0KPiA+ICsgICAgICAgICAgICBBcnJheVR5cGUgPSBUeXBlRGljdFtWYWx1ZVR5cGVd ICogTnVtcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIFZhbHVlQXJyYXkgPSBBcnJheVR5cGUoKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihWYWx1ZUxpc3QpKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgVmFsdWVBcnJheVtpXSA9IFZhbHVlTGlzdFtpXQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuT25lT2ZPcHRpb24uVmFsdWUgPSBWYWx1ZUFycmF5 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLklmck9wdGlvbktleSA9IE5vbmUN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuRmxhZ3NTdHJlYW0gPSAiIg0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5WYWx1ZVN0cmVhbSA9ICIiDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBT ZXRPcHRpb24oc2VsZiwgT3B0aW9uKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuT25lT2ZPcHRp b24uT3B0aW9uID0gT3B0aW9uDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRUeXBl KHNlbGYsIFR5cGUpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5PbmVPZk9wdGlvbi5UeXBlID0g VHlwZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0SWZyT3B0aW9uS2V5KHNlbGYs IElmck9wdGlvbktleSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLklmck9wdGlvbktleSA9IElm ck9wdGlvbktleQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0RmxhZ3NTdHJlYW0o c2VsZiwgRmxhZ3NTdHJlYW0pOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5GbGFnc1N0cmVhbSA9 IEZsYWdzU3RyZWFtDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRWYWx1ZVN0cmVh bShzZWxmLCBWYWx1ZVN0cmVhbSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlZhbHVlU3RyZWFt ID0gVmFsdWVTdHJlYW0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldFZhbHVlVHlw ZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLlZhbHVlVHlwZQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0VmFsdWUoc2VsZiwgVmFsdWVMaXN0KToNCj4gPg0K PiA+ICsgICAgICAgIEFycmF5VHlwZSA9IFR5cGVEaWN0W3NlbGYuVmFsdWVUeXBlXSAqIChsZW4o VmFsdWVMaXN0KSkNCj4gPg0KPiA+ICsgICAgICAgIFZhbHVlQXJyYXkgPSBBcnJheVR5cGUoKQ0K PiA+DQo+ID4gKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKFZhbHVlTGlzdCkpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIFZhbHVlQXJyYXlbaV0gPSBWYWx1ZUxpc3RbaV0NCj4gPg0KPiA+ ICsgICAgICAgIHNlbGYuT25lT2ZPcHRpb24uVmFsdWUgPSBWYWx1ZUFycmF5DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiBHZXRGbGFncyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJl dHVybiBzZWxmLk9uZU9mT3B0aW9uLkZsYWdzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiBTZXRGbGFncyhzZWxmLCBMRmxhZ3MpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5PbmVPZk9w dGlvbi5GbGFncyA9IDANCj4gPg0KPiA+ICsgICAgICAgIExGbGFncywgUmV0ID0gX0ZMQUdfVEVT VF9BTkRfQ0xFQVIoTEZsYWdzLA0KPiA+IEVGSV9JRlJfT1BUSU9OX0RFRkFVTFQpDQo+ID4NCj4g PiArICAgICAgICBpZiBSZXQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5PbmVPZk9wdGlv bi5GbGFncyB8PSBFRklfSUZSX09QVElPTl9ERUZBVUxUDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBMRmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFSKExGbGFncywNCj4gPiBF RklfSUZSX09QVElPTl9ERUZBVUxUX01GRykNCj4gPg0KPiA+ICsgICAgICAgIGlmIFJldDoNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLk9uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfT1BU SU9OX0RFRkFVTFRfTUZHDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBMRmxhZ3Mg PT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQo+ID4NCj4gPiArICAgICAgICAgICAgTEZsYWdz ID0gX0ZMQUdfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX1RZUEVfTlVNX1NJWkVfOCkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLk9uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfVFlQRV9OVU1f U0laRV84DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbGlmIExGbGFncyA9PSBFRklf SUZSX1RZUEVfTlVNX1NJWkVfMTY6DQo+ID4NCj4gPiArICAgICAgICAgICAgTEZsYWdzID0gX0ZM QUdfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTYpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5PbmVPZk9wdGlvbi5GbGFncyB8PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVf MTYNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgTEZsYWdzID09IEVGSV9JRlJf VFlQRV9OVU1fU0laRV8zMjoNCj4gPg0KPiA+ICsgICAgICAgICAgICBMRmxhZ3MgPSBfRkxBR19D TEVBUihMRmxhZ3MsIEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLk9uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBMRmxhZ3MgPT0gRUZJX0lGUl9UWVBF X05VTV9TSVpFXzY0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIExGbGFncyA9IF9GTEFHX0NMRUFS KExGbGFncywgRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuT25lT2ZPcHRpb24uRmxhZ3MgfD0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbGlmIExGbGFncyA9PSBFRklfSUZSX1RZUEVfQk9P TEVBTjoNCj4gPg0KPiA+ICsgICAgICAgICAgICBMRmxhZ3MgPSBfRkxBR19DTEVBUihMRmxhZ3Ms IEVGSV9JRlJfVFlQRV9CT09MRUFOKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuT25lT2ZP cHRpb24uRmxhZ3MgfD0gRUZJX0lGUl9UWVBFX0JPT0xFQU4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGVsaWYgTEZsYWdzID09IEVGSV9JRlJfVFlQRV9USU1FOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIExGbGFncyA9IF9GTEFHX0NMRUFSKExGbGFncywgRUZJX0lGUl9UWVBFX1RJTUUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5PbmVPZk9wdGlvbi5GbGFncyB8PSBFRklfSUZS X1RZUEVfVElNRQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBMRmxhZ3MgPT0g RUZJX0lGUl9UWVBFX0RBVEU6DQo+ID4NCj4gPiArICAgICAgICAgICAgTEZsYWdzID0gX0ZMQUdf Q0xFQVIoTEZsYWdzLCBFRklfSUZSX1RZUEVfREFURSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLk9uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfVFlQRV9EQVRFDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBlbGlmIExGbGFncyA9PSBFRklfSUZSX1RZUEVfU1RSSU5HOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIExGbGFncyA9IF9GTEFHX0NMRUFSKExGbGFncywgRUZJX0lGUl9U WVBFX1NUUklORykNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk9uZU9mT3B0aW9uLkZsYWdz IHw9IEVGSV9JRlJfVFlQRV9TVFJJTkcNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGVs aWYgTEZsYWdzID09IEVGSV9JRlJfVFlQRV9PVEhFUjoNCj4gPg0KPiA+ICsgICAgICAgICAgICBM RmxhZ3MgPSBfRkxBR19DTEVBUihMRmxhZ3MsIEVGSV9JRlJfVFlQRV9PVEhFUikNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLk9uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfVFlQRV9PVEhF Ug0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuICgNCj4gPg0KPiA+ICsgICAg ICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIExGbGFncyA9PSAwDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZSBWZnJSZXR1 cm5Db2RlLlZGUl9SRVRVUk5fRkxBR1NfVU5TVVBQT1JURUQNCj4gPg0KPiA+ICsgICAgICAgICkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICByZXR1cm4gc2VsZi5PbmVPZk9wdGlvbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gK2NsYXNzIElmck9wdGlvbktleShJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+ID4N Cj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBRdWVzdGlvbklkLCBUeXBlLCBPcHRpb25WYWx1 ZSwgS2V5VmFsdWUpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5PcHRpb25LZXkgPSBSZWZpbmVf RUZJX0lGUl9HVUlEX09QVElPTktFWShUeXBlKQ0KPiA+DQo+ID4gKyAgICAgICAgSWZyT3BIZWFk ZXIuX19pbml0X18oc2VsZiwgc2VsZi5PcHRpb25LZXkuSGVhZGVyLCBFRklfSUZSX0dVSURfT1As DQo+ID4gc2l6ZW9mKHNlbGYuT3B0aW9uS2V5KSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuT3B0 aW9uS2V5LkV4dGVuZE9wQ29kZSA9IEVGSV9JRlJfRVhURU5EX09QX09QVElPTktFWQ0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5PcHRpb25LZXkuR3VpZCA9IEVGSV9JRlJfRlJBTUVXT1JLX0dVSUQN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuT3B0aW9uS2V5LlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklk DQo+ID4NCj4gPiArICAgICAgICBzZWxmLk9wdGlvbktleS5PcHRpb25WYWx1ZSA9IE9wdGlvblZh bHVlDQo+ID4NCj4gPiArICAgICAgICBzZWxmLk9wdGlvbktleS5LZXlWYWx1ZSA9IEtleVZhbHVl DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgcmV0dXJuIHNlbGYuT3B0aW9uS2V5DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArY2xhc3MgSWZyQ2xhc3MoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4g KyAgICBkZWYgX19pbml0X18oDQo+ID4NCj4gPiArICAgICAgICBzZWxmLA0KPiA+DQo+ID4gKyAg ICApOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5DbGFzcyA9IEVGSV9JRlJfR1VJRF9DTEFTUygp ICAjIHN0YXRpYyBndWlkDQo+ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhz ZWxmLCBzZWxmLkNsYXNzLkhlYWRlciwgRUZJX0lGUl9HVUlEX09QLA0KPiA+IHNpemVvZihFRklf SUZSX0dVSURfQ0xBU1MpKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5DbGFzcy5FeHRlbmRPcENv ZGUgPSBFRklfSUZSX0VYVEVORF9PUF9DTEFTUw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5DbGFz cy5HdWlkID0gRUZJX0lGUl9USUFOT19HVUlEDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkNsYXNz LkNsYXNzID0gRUZJX05PTl9ERVZJQ0VfQ0xBU1MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuSGFzU3ViQ2xhc3MgPSBGYWxzZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5DbGFz c1N0ciA9IE5vbmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldENsYXNzKHNlbGYs IENsYXNzKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuQ2xhc3MuQ2xhc3MgPSBDbGFzcw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0Q2xhc3NTdHIoc2VsZiwgQ2xhc3NTdHIpOg0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5DbGFzc1N0ciA9IENsYXNzU3RyDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJu IHNlbGYuQ2xhc3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJT dWJDbGFzcyhJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRf XygNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYsDQo+ID4NCj4gPiArICAgICk6DQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLlN1YkNsYXNzID0gRUZJX0lGUl9HVUlEX1NVQkNMQVNTKCkNCj4gPg0KPiA+ ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYsIHNlbGYuU3ViQ2xhc3MuSGVhZGVyLCBFRklfSUZSX0dVSURfT1AsDQo+ID4gc2l6ZW9mKEVG SV9JRlJfR1VJRF9TVUJDTEFTUykNCj4gPg0KPiA+ICsgICAgICAgICkNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuU3ViQ2xhc3MuRXh0ZW5kT3BDb2RlID0gRUZJX0lGUl9FWFRFTkRfT1BfU1VCQ0xB U1MNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU3ViQ2xhc3MuR3VpZCA9IEVGSV9JRlJfVElBTk9f R1VJRA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TdWJDbGFzcy5TdWJDbGFzcyA9IEVGSV9TRVRV UF9BUFBMSUNBVElPTl9TVUJDTEFTUw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5TdWJDbGFzc1N0ciA9IE5vbmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldFN1 YkNsYXNzKHNlbGYsIFN1YkNsYXNzKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU3ViQ2xhc3Mu U3ViQ2xhc3MgPSBTdWJDbGFzcw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0U3Vi Q2xhc3NTdHIoc2VsZiwgU3ViQ2xhc3NTdHIpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TdWJD bGFzc1N0ciA9IFN1YkNsYXNzU3RyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJ bmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuU3ViQ2xhc3MNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJEZWZhdWx0U3RvcmUoSWZyTGlu ZSwgSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgVHlwZU5h bWU9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkRlZmF1bHRTdG9yZSA9IEVGSV9JRlJf REVGQVVMVFNUT1JFKCkNCj4gPg0KPiA+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNl bGYsIHNlbGYuRGVmYXVsdFN0b3JlLkhlYWRlciwNCj4gPiBFRklfSUZSX0RFRkFVTFRTVE9SRV9P UCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuRGVmYXVsdFN0b3JlLkRlZmF1bHROYW1lID0gRUZJ X1NUUklOR19JRF9JTlZBTElEDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkRlZmF1bHRTdG9yZS5E ZWZhdWx0SWQgPSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRA0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5UeXBlID0gVHlwZU5hbWUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuSGFzQXR0ciA9IEZhbHNl DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXREZWZhdWx0TmFtZShzZWxmLCBEZWZh dWx0TmFtZSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkRlZmF1bHRTdG9yZS5EZWZhdWx0TmFt ZSA9IERlZmF1bHROYW1lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRUeXBlKHNl bGYsIFR5cGUpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5UeXBlID0gVHlwZQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0RGVmYXVsdElkKHNlbGYsIERlZmF1bHRJZCk6DQo+ID4N Cj4gPiArICAgICAgICBzZWxmLkRlZmF1bHRTdG9yZS5EZWZhdWx0SWQgPSBEZWZhdWx0SWQNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldERlZmF1bHRTdG9yZShzZWxmLCBEZWZhdWx0 U3RvcmU6IEVGSV9JRlJfREVGQVVMVFNUT1JFKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuRGVm YXVsdFN0b3JlID0gRGVmYXVsdFN0b3JlDQo+ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRlci5f X2luaXRfXyhzZWxmLCBzZWxmLkRlZmF1bHRTdG9yZS5IZWFkZXIsDQo+ID4gRUZJX0lGUl9ERUZB VUxUU1RPUkVfT1ApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXREZWZhdWx0SWQo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5EZWZhdWx0U3RvcmUuRGVmYXVs dElkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuRGVmYXVsdFN0b3JlDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArY2xhc3MgSWZyVmFyU3RvcmUoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0K PiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgVHlwZU5hbWUsIFN0b3JlTmFtZSk6DQo+ ID4NCj4gPiArICAgICAgICBOdW1zID0gbGVuKFN0b3JlTmFtZSkNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuVmFyc3RvcmUgPSBSZWZpbmVfRUZJX0lGUl9WQVJTVE9SRShOdW1zKQ0KPiA+DQo+ID4g KyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Ziwgc2VsZi5WYXJzdG9yZS5IZWFkZXIsIEVGSV9JRlJfVkFSU1RPUkVfT1AsDQo+IHNpemVvZihz ZWxmLlZhcnN0b3JlKQ0KPiA+ICsgMQ0KPiA+DQo+ID4gKyAgICAgICAgKQ0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5WYXJzdG9yZS5WYXJTdG9yZUlkID0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuVmFyc3RvcmUuU2l6ZSA9IDANCj4gPg0KPiA+ICsgICAg ICAgIEFycmF5VHlwZSA9IGNfdWJ5dGUgKiAoTnVtcykNCj4gPg0KPiA+ICsgICAgICAgIFZhbHVl QXJyYXkgPSBBcnJheVR5cGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwg TnVtcyk6DQo+ID4NCj4gPiArICAgICAgICAgICAgVmFsdWVBcnJheVtpXSA9IG9yZChTdG9yZU5h bWVbaV0pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlZhcnN0b3JlLk5hbWUgPSBWYWx1ZUFycmF5 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAjIGluZm8gc2F2ZWQgZm9yIHlhbWwgZ2Vu ZXJhdGlvbg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5UeXBlID0gVHlwZU5hbWUNCj4gPg0KPiA+ ICsgICAgICAgIHNlbGYuSGFzVmFyU3RvcmVJZCA9IEZhbHNlDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGRlZiBTZXRHdWlkKHNlbGYsIEd1aWQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5W YXJzdG9yZS5HdWlkID0gR3VpZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0U2l6 ZShzZWxmLCBTaXplKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuVmFyc3RvcmUuU2l6ZSA9IFNp emUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldFZhclN0b3JlSWQoc2VsZiwgVmFy U3RvcmVJZCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlZhcnN0b3JlLlZhclN0b3JlSWQgPSBW YXJTdG9yZUlkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRIYXNWYXJTdG9yZUlk KHNlbGYsIEhhc1ZhclN0b3JlSWQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5IYXNWYXJTdG9y ZUlkID0gSGFzVmFyU3RvcmVJZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SW5m byhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLlZhcnN0b3JlDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgSWZyVmFyU3RvcmVFZmkoSWZyTGluZSwg SWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgVHlwZU5hbWUs IFN0b3JlTmFtZSk6DQo+ID4NCj4gPiArICAgICAgICBOdW1zID0gbGVuKFN0b3JlTmFtZSkNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuVmFyU3RvcmVFZmkgPSBSZWZpbmVfRUZJX0lGUl9WQVJTVE9S RV9FRkkoTnVtcykNCj4gPg0KPiA+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKA0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYsIHNlbGYuVmFyU3RvcmVFZmkuSGVhZGVyLCBFRklfSUZS X1ZBUlNUT1JFX0VGSV9PUCwNCj4gPiBzaXplb2Yoc2VsZi5WYXJTdG9yZUVmaSkgKyAxDQo+ID4N Cj4gPiArICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlZhclN0b3JlRWZpLlZhclN0 b3JlSWQgPSBFRklfVkFST0ZGU0VUX0lOVkFMSUQNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuVmFy U3RvcmVFZmkuU2l6ZSA9IDANCj4gPg0KPiA+ICsgICAgICAgIEFycmF5VHlwZSA9IGNfdWJ5dGUg KiAoTnVtcykNCj4gPg0KPiA+ICsgICAgICAgIFZhbHVlQXJyYXkgPSBBcnJheVR5cGUoKQ0KPiA+ DQo+ID4gKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgTnVtcyk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgVmFsdWVBcnJheVtpXSA9IG9yZChTdG9yZU5hbWVbaV0pDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLlZhclN0b3JlRWZpLk5hbWUgPSBWYWx1ZUFycmF5DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICAjIGluZm8gc2F2ZWQgZm9yIHlhbWwgZ2VuZXJhdGlvbg0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5UeXBlID0gVHlwZU5hbWUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuSGFzVmFy U3RvcmVJZCA9IEZhbHNlDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkF0dHJpYnV0ZXNUZXh0ID0g Tm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5OYW1lU3RyaW5nSWQgPSBOb25lDQo+ID4NCj4g PiArICAgICAgICBzZWxmLlZhclNpemUgPSBOb25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiBTZXRHdWlkKHNlbGYsIEd1aWQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5WYXJTdG9y ZUVmaS5HdWlkID0gR3VpZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0U2l6ZShz ZWxmLCBTaXplKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuVmFyU3RvcmVFZmkuU2l6ZSA9IFNp emUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldE5hbWVTdHJpbmdJZChzZWxmLCBO YW1lU3RyaW5nSWQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5OYW1lU3RyaW5nSWQgPSBOYW1l U3RyaW5nSWQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldFZhclNpemUoc2VsZiwg VmFyU2l6ZSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlZhclNpemUgPSBWYXJTaXplDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRWYXJTdG9yZUlkKHNlbGYsIFZhclN0b3JlSWQp Og0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5WYXJTdG9yZUVmaS5WYXJTdG9yZUlkID0gVmFyU3Rv cmVJZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0QXR0cmlidXRlcyhzZWxmLCBB dHRyaWJ1dGVzKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuVmFyU3RvcmVFZmkuQXR0cmlidXRl cyA9IEF0dHJpYnV0ZXMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldEhhc1ZhclN0 b3JlSWQoc2VsZiwgSGFzVmFyU3RvcmVJZCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkhhc1Zh clN0b3JlSWQgPSBIYXNWYXJTdG9yZUlkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBT ZXRBdHRyaWJ1dGVzVGV4dChzZWxmLCBBdHRyaWJ1dGVzVGV4dCk6DQo+ID4NCj4gPiArICAgICAg ICBzZWxmLkF0dHJpYnV0ZXNUZXh0ID0gQXR0cmlidXRlc1RleHQNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2Vs Zi5WYXJTdG9yZUVmaQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIElm clZhclN0b3JlTmFtZVZhbHVlKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsgICAg ZGVmIF9faW5pdF9fKHNlbGYsIFR5cGVOYW1lKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuVmFy U3RvcmVOYW1lVmFsdWUgPSBFRklfSUZSX1ZBUlNUT1JFX05BTUVfVkFMVUUoKQ0KPiA+DQo+ID4g KyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5WYXJTdG9yZU5hbWVWYWx1 ZS5IZWFkZXIsDQo+ID4gRUZJX0lGUl9WQVJTVE9SRV9OQU1FX1ZBTFVFX09QKQ0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5WYXJTdG9yZU5hbWVWYWx1ZS5WYXJTdG9yZUlkID0gRUZJX1ZBUk9GRlNF VF9JTlZBTElEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlR5cGUgPSBUeXBl TmFtZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5OYW1lSXRlbUxpc3QgPSBbXQ0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5IYXNWYXJTdG9yZUlkID0gRmFsc2UNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgZGVmIFNldEd1aWQoc2VsZiwgR3VpZCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlZh clN0b3JlTmFtZVZhbHVlLkd1aWQgPSBHdWlkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiBTZXRWYXJTdG9yZUlkKHNlbGYsIFZhclN0b3JlSWQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5WYXJTdG9yZU5hbWVWYWx1ZS5WYXJTdG9yZUlkID0gVmFyU3RvcmVJZA0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgU2V0TmFtZUl0ZW1MaXN0KHNlbGYsIE5hbWVJdGVtKToNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuTmFtZUl0ZW1MaXN0LmFwcGVuZChOYW1lSXRlbSkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldEhhc1ZhclN0b3JlSWQoc2VsZiwgSGFzVmFyU3RvcmVJ ZCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkhhc1ZhclN0b3JlSWQgPSBIYXNWYXJTdG9yZUlk DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgcmV0dXJuIHNlbGYuVmFyU3RvcmVOYW1lVmFsdWUNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICtFRklfQklUU19QRVJfVUlOVDMyID0gMSA8PCBFRklfQklUU19TSElG VF9QRVJfVUlOVDMyDQo+ID4NCj4gPiArRUZJX0ZPUk1fSURfTUFYID0gMHhGRkZGDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArRUZJX0ZSRUVfRk9STV9JRF9CSVRNQVBfU0laRSA9IGludCgoRUZJX0ZP Uk1fSURfTUFYICsgMSkgLw0KPiA+IEVGSV9CSVRTX1BFUl9VSU5UMzIpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgSWZyRm9ybUlkOg0KPiA+DQo+ID4gKyAgICBkZWYg X19pbml0X18oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkZvcm1JZEJpdE1hcCA9IFtd DQo+ID4NCj4gPiArICAgICAgICBmb3IgXyBpbiByYW5nZSgwLCBFRklfRlJFRV9GT1JNX0lEX0JJ VE1BUF9TSVpFKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkZvcm1JZEJpdE1hcC5hcHBl bmQoMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIENsZWFyKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5Gb3JtSWRCaXRNYXAgPSBbXQ0KPiA+DQo+ID4gKyAgICAgICAgZm9y IF8gaW4gcmFuZ2UoMCwgRUZJX0ZSRUVfRk9STV9JRF9CSVRNQVBfU0laRSk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5Gb3JtSWRCaXRNYXAuYXBwZW5kKDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgIGRlZiBDaGVja0Zvcm1JZEZyZWUoc2VsZiwgRm9ybUlkKToNCj4gPg0KPiA+ICsg ICAgICAgIEluZGV4ID0gaW50KEZvcm1JZCAvIEVGSV9CSVRTX1BFUl9VSU5UMzIpDQo+ID4NCj4g PiArICAgICAgICBPZmZzZXQgPSBGb3JtSWQgJSBFRklfQklUU19QRVJfVUlOVDMyDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gKHNlbGYuRm9ybUlkQml0TWFwW0luZGV4XSAm ICgweDgwMDAwMDAwID4+IE9mZnNldCkpID09IDANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIE1hcmtGb3JtSWRVc2VkKHNlbGYsIEZvcm1JZCk6DQo+ID4NCj4gPiArICAgICAgICBJbmRl eCA9IGludChGb3JtSWQgLyBFRklfQklUU19QRVJfVUlOVDMyKQ0KPiA+DQo+ID4gKyAgICAgICAg T2Zmc2V0ID0gRm9ybUlkICUgRUZJX0JJVFNfUEVSX1VJTlQzMg0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5Gb3JtSWRCaXRNYXBbSW5kZXhdIHw9IDB4ODAwMDAwMDAgPj4gT2Zmc2V0DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArZ0lmckZvcm1JZCA9IElmckZvcm1JZCgpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgSWZyRm9ybShJZnJMaW5lLCBJZnJP cEhlYWRlcik6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgIHNlbGYuRm9ybSA9IEVGSV9JRlJfRk9STSgpDQo+ID4NCj4gPiArICAgICAgICBJZnJP cEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLkZvcm0uSGVhZGVyLCBFRklfSUZSX0ZPUk1fT1Ap DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkZvcm0uRm9ybUlkID0gMA0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5Gb3JtLkZvcm1UaXRsZSA9IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0Rm9ybUlkKHNlbGYsIEZvcm1JZCk6DQo+ID4NCj4gPiAr ICAgICAgICAjIEZvcm1JZCBjYW4ndCBiZSAwLg0KPiA+DQo+ID4gKyAgICAgICAgaWYgRm9ybUlk ID09IDA6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9JTlZBTElEX1BBUkFNRVRFUg0KPiA+DQo+ID4gKyAgICAgICAgaWYgZ0lmckZvcm1JZC5D aGVja0Zvcm1JZEZyZWUoRm9ybUlkKSA9PSBGYWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZPUk1JRF9SRURFRklORUQNCj4gPg0KPiA+ ICsgICAgICAgIHNlbGYuRm9ybS5Gb3JtSWQgPSBGb3JtSWQNCj4gPg0KPiA+ICsgICAgICAgIGdJ ZnJGb3JtSWQuTWFya0Zvcm1JZFVzZWQoRm9ybUlkKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJu IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiBTZXRGb3JtVGl0bGUoc2VsZiwgRm9ybVRpdGxlKToNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuRm9ybS5Gb3JtVGl0bGUgPSBGb3JtVGl0bGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgZGVmIEdldEluZm8oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5Gb3Jt DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgSWZyRm9ybU1hcChJZnJM aW5lLCBJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuRm9ybU1hcCA9IEVGSV9JRlJfRk9STV9NQVAoKQ0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5NZXRob2RNYXBMaXN0ID0gW10NCj4gPg0KPiA+ICsgICAgICAgIElm ck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuRm9ybU1hcC5IZWFkZXIsDQo+ID4gRUZJX0lG Ul9GT1JNX01BUF9PUCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuRm9ybU1hcC5Gb3JtSWQgPSAw DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRGb3JtSWQoc2VsZiwgRm9ybUlkKToN Cj4gPg0KPiA+ICsgICAgICAgIGlmIEZvcm1JZCA9PSAwOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVINCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGdJZnJGb3JtSWQuQ2hlY2tGb3JtSWRGcmVlKEZv cm1JZCkgPT0gRmFsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNv ZGUuVkZSX1JFVFVSTl9GT1JNSURfUkVERUZJTkVEDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkZv cm1NYXAuRm9ybUlkID0gRm9ybUlkDQo+ID4NCj4gPiArICAgICAgICBnSWZyRm9ybUlkLk1hcmtG b3JtSWRVc2VkKEZvcm1JZCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2Rl LlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0Rm9y bU1hcE1ldGhvZChzZWxmLCBNZXRob2RUaXRsZSwgTWV0aG9kR3VpZDogRUZJX0dVSUQpOg0KPiA+ DQo+ID4gKyAgICAgICAgTWV0aG9kTWFwID0gRUZJX0lGUl9GT1JNX01BUF9NRVRIT0QoKQ0KPiA+ DQo+ID4gKyAgICAgICAgTWV0aG9kTWFwLk1ldGhvZFRpdGxlID0gTWV0aG9kVGl0bGUNCj4gPg0K PiA+ICsgICAgICAgIE1ldGhvZE1hcC5NZXRob2RJZGVudGlmaWVyID0gTWV0aG9kR3VpZA0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5NZXRob2RNYXBMaXN0LmFwcGVuZChNZXRob2RNYXApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgcmV0dXJuIHNlbGYuRm9ybU1hcA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0 TWV0aG9kTWFwTGlzdChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLk1ldGhv ZE1hcExpc3QNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJFbmQo SWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkVuZCA9IEVGSV9JRlJfRU5EKCkNCj4gPg0KPiA+ICsg ICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuRW5kLkhlYWRlciwgRUZJX0lG Ul9FTkRfT1ApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuRW5kDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArY2xhc3MgSWZyQmFubmVyKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gPg0K PiA+ICsgICAgZGVmIF9faW5pdF9fKA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZiwNCj4gPg0KPiA+ ICsgICAgKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuQmFubmVyID0gRUZJX0lGUl9HVUlEX0JB Tk5FUigpDQo+ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxm LkJhbm5lci5IZWFkZXIsIEVGSV9JRlJfR1VJRF9PUCwNCj4gPiBzaXplb2YoRUZJX0lGUl9HVUlE X0JBTk5FUikpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkJhbm5lci5FeHRlbmRPcENvZGUgPSBF RklfSUZSX0VYVEVORF9PUF9CQU5ORVINCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuQmFubmVyLkd1 aWQgPSBFRklfSUZSX1RJQU5PX0dVSUQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuSGFzVGltZU91dCA9IEZhbHNlDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlRpbWVPdXQgPSBO b25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRUaXRsZShzZWxmLCBTdHJpbmdJ ZCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkJhbm5lci5UaXRsZSA9IFN0cmluZ0lkDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRMaW5lKHNlbGYsIExpbmUpOg0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5CYW5uZXIuTGluZU51bWJlciA9IExpbmUNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIFNldEFsaWduKHNlbGYsIEFsaWduKToNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuQmFubmVyLkFsaWdubWVudCA9IEFsaWduDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiBTZXRIYXNUaW1lT3V0KHNlbGYsIEhhc1RpbWVPdXQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5IYXNUaW1lT3V0ID0gSGFzVGltZU91dA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYg U2V0VGltZU91dChzZWxmLCBUaW1lT3V0KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuVGltZU91 dCA9IFRpbWVPdXQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5CYW5uZXINCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJWYXJFcU5hbWUoSWZyTGluZSwgSWZyT3BIZWFkZXIp Og0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgUXVlc3Rpb25JZCwgTmFtZUlkKToN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuVmFyRXFOYW1lID0gRUZJX0lGUl9HVUlEX1ZBUkVRTkFN RSgpDQo+ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXygNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLCBzZWxmLlZhckVxTmFtZS5IZWFkZXIsIEVGSV9JRlJfR1VJRF9PUCwN Cj4gPiBzaXplb2YoRUZJX0lGUl9HVUlEX1ZBUkVRTkFNRSkNCj4gPg0KPiA+ICsgICAgICAgICkN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuVmFyRXFOYW1lLkV4dGVuZE9wQ29kZSA9IEVGSV9JRlJf RVhURU5EX09QX1ZBUkVRTkFNRQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5WYXJFcU5hbWUuR3Vp ZCA9IEVGSV9JRlJfRlJBTUVXT1JLX0dVSUQNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuVmFyRXFO YW1lLlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlZhckVx TmFtZS5OYW1lSWQgPSBOYW1lSWQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldElu Zm8oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5WYXJFcU5hbWUNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJUaW1lb3V0KElmckxpbmUsIElm ck9wSGVhZGVyKToNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIFRpbWVvdXQ9MCk6 DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlRpbWVvdXQgPSBFRklfSUZSX0dVSURfVElNRU9VVCgp DQo+ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXygNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLCBzZWxmLlRpbWVvdXQuSGVhZGVyLCBFRklfSUZSX0dVSURfT1AsDQo+ID4g c2l6ZW9mKEVGSV9JRlJfR1VJRF9USU1FT1VUKQ0KPiA+DQo+ID4gKyAgICAgICAgKQ0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5UaW1lb3V0LkV4dGVuZE9wQ29kZSA9IEVGSV9JRlJfRVhURU5EX09Q X1RJTUVPVVQNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuVGltZW91dC5HdWlkID0gRUZJX0lGUl9U SUFOT19HVUlEDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlRpbWVvdXQuVGltZU91dCA9IFRpbWVv dXQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldFRpbWVvdXQoc2VsZiwgVGltZW91 dCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlRpbWVvdXQuVGltZU91dCA9IFRpbWVvdXQNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICByZXR1cm4gc2VsZi5UaW1lb3V0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArY2xhc3MgSWZyTGFiZWwoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKyAgICBk ZWYgX19pbml0X18oDQo+ID4NCj4gPiArICAgICAgICBzZWxmLA0KPiA+DQo+ID4gKyAgICApOg0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5MYWJlbCA9IEVGSV9JRlJfR1VJRF9MQUJFTCgpDQo+ID4N Cj4gPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLkxhYmVsLkhlYWRl ciwgRUZJX0lGUl9HVUlEX09QLA0KPiA+IHNpemVvZihFRklfSUZSX0dVSURfTEFCRUwpKQ0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5MYWJlbC5FeHRlbmRPcENvZGUgPSBFRklfSUZSX0VYVEVORF9P UF9MQUJFTA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5MYWJlbC5HdWlkID0gRUZJX0lGUl9USUFO T19HVUlEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXROdW1iZXIoc2VsZiwgTnVt YmVyKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuTGFiZWwuTnVtYmVyID0gTnVtYmVyDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgcmV0dXJuIHNlbGYuTGFiZWwNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtj bGFzcyBJZnJSdWxlKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsgICAgZGVmIF9f aW5pdF9fKHNlbGYsIFJ1bGVOYW1lPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5SdWxl ID0gRUZJX0lGUl9SVUxFKCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUnVsZU5hbWUgPSBSdWxl TmFtZQ0KPiA+DQo+ID4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5S dWxlLkhlYWRlciwgRUZJX0lGUl9SVUxFX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5SdWxl LlJ1bGVJZCA9IEVGSV9SVUxFX0lEX0lOVkFMSUQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIFNldFJ1bGVJZChzZWxmLCBSdWxlSWQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5SdWxl LlJ1bGVJZCA9IFJ1bGVJZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0UnVsZU5h bWUoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5SdWxlTmFtZQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0UnVsZU5hbWUoc2VsZiwgUnVsZU5hbWUpOg0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5SdWxlTmFtZSA9IFJ1bGVOYW1lDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNl bGYuUnVsZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2RlZiBfRkxBR19URVNU X0FORF9DTEVBUihGbGFncywgTWFzayk6DQo+ID4NCj4gPiArICAgIFJldCA9IEZsYWdzICYgTWFz aw0KPiA+DQo+ID4gKyAgICBGbGFncyAmPSB+TWFzaw0KPiA+DQo+ID4gKyAgICByZXR1cm4gRmxh Z3MsIFJldA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2RlZiBfRkxBR19DTEVB UihGbGFncywgTWFzayk6DQo+ID4NCj4gPiArICAgIEZsYWdzICY9IH5NYXNrDQo+ID4NCj4gPiAr ICAgIHJldHVybiBGbGFncw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNz IElmclN1YnRpdGxlKElmckxpbmUsIElmck9wSGVhZGVyLCBJZnJTdGF0ZW1lbnRIZWFkZXIpOg0K PiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oDQo+ID4NCj4gPiArICAgICAgICBzZWxmLA0KPiA+ DQo+ID4gKyAgICApOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TdWJ0aXRsZSA9IEVGSV9JRlJf U1VCVElUTEUoKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19p bml0X18oc2VsZiwgc2VsZi5TdWJ0aXRsZS5IZWFkZXIsIEVGSV9JRlJfU1VCVElUTEVfT1ApDQo+ ID4NCj4gPiArICAgICAgICBJZnJTdGF0ZW1lbnRIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5T dWJ0aXRsZS5TdGF0ZW1lbnQpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlN1YnRpdGxlLkZsYWdz ID0gMA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5GbGFnc1N0cmVhbSA9ICIi DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRGbGFncyhzZWxmLCBGbGFncyk6DQo+ ID4NCj4gPiArICAgICAgICBGbGFncywgUmVzdWx0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoRmxh Z3MsDQo+ID4gRUZJX0lGUl9GTEFHU19IT1JJWk9OVEFMKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYg UmVzdWx0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuU3VidGl0bGUuRmxhZ3MgfD0gRUZJ X0lGUl9GTEFHU19IT1JJWk9OVEFMDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1 cm4gKA0KPiA+DQo+ID4gKyAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUND RVNTDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgRmxhZ3MgPT0gMA0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsc2UgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZMQUdTX1VOU1VQUE9SVEVEDQo+ ID4NCj4gPiArICAgICAgICApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRGbGFn c1N0cmVhbShzZWxmLCBGbGFnc1N0cmVhbSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkZsYWdz U3RyZWFtID0gRmxhZ3NTdHJlYW0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldElu Zm8oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5TdWJ0aXRsZQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIElmckltYWdlKElmckxpbmUsIElmck9w SGVhZGVyKToNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKA0KPiA+DQo+ID4gKyAgICAgICAg c2VsZiwNCj4gPg0KPiA+ICsgICAgKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuSW1hZ2UgPSBF RklfSUZSX0lNQUdFKCkNCj4gPg0KPiA+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNl bGYsIHNlbGYuSW1hZ2UuSGVhZGVyLCBFRklfSUZSX0lNQUdFX09QKQ0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5JbWFnZS5JZCA9IEVGSV9JTUFHRV9JRF9JTlZBTElEDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgIGRlZiBTZXRJbWFnZUlkKHNlbGYsIEltYWdlSWQpOg0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5JbWFnZS5JZCA9IEltYWdlSWQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVm IEdldEluZm8oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5JbWFnZQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIElmckxvY2tlZChJZnJMaW5lLCBJ ZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXygNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYsDQo+ID4NCj4gPiArICAgICk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkxvY2sg PSBFRklfSUZSX0xPQ0tFRCgpDQo+ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRf XyhzZWxmLCBzZWxmLkxvY2suSGVhZGVyLCBFRklfSUZSX0xPQ0tFRF9PUCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1 cm4gc2VsZi5Mb2NrDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgSWZy TW9kYWwoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18o DQo+ID4NCj4gPiArICAgICAgICBzZWxmLA0KPiA+DQo+ID4gKyAgICApOg0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5Nb2RhbCA9IEVGSV9JRlJfTU9EQUxfVEFHKCkNCj4gPg0KPiA+ICsgICAgICAg IElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuTW9kYWwuSGVhZGVyLA0KPiBFRklfSUZS X01PREFMX1RBR19PUCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8oc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5Nb2RhbA0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gK0VGSV9JRlJfUVVFU1RJT05fRkxBR19ERUZBVUxUID0gMA0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIElmclF1ZXN0aW9uSGVhZGVyKElm clN0YXRlbWVudEhlYWRlcik6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBRSGVh ZGVyLCBGbGFncz1FRklfSUZSX1FVRVNUSU9OX0ZMQUdfREVGQVVMVCk6DQo+ID4NCj4gPiArICAg ICAgICBzZWxmLlFIZWFkZXIgPSBRSGVhZGVyDQo+ID4NCj4gPiArICAgICAgICBJZnJTdGF0ZW1l bnRIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5RSGVhZGVyLkhlYWRlcikNCj4gPg0KPiA+ICsg ICAgICAgIHNlbGYuUUhlYWRlci5RdWVzdGlvbklkID0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUUhlYWRlci5WYXJTdG9yZUlkID0gRUZJX1ZBUlNUT1JF X0lEX0lOVkFMSUQNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUUhlYWRlci5WYXJTdG9yZUluZm8u VmFyTmFtZSA9IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5R SGVhZGVyLlZhclN0b3JlSW5mby5WYXJPZmZzZXQgPSBFRklfVkFST0ZGU0VUX0lOVkFMSUQNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuUUhlYWRlci5GbGFncyA9IEZsYWdzDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGRlZiBHZXRRdWVzdGlvbklkKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg cmV0dXJuIHNlbGYuUUhlYWRlci5RdWVzdGlvbklkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiBTZXRRdWVzdGlvbklkKHNlbGYsIFF1ZXN0aW9uSWQpOg0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5RSGVhZGVyLlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGRlZiBHZXRWYXJTdG9yZUlkKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJu IHNlbGYuUUhlYWRlci5WYXJTdG9yZUlkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBT ZXRWYXJTdG9yZUluZm8oc2VsZiwgQmFzZUluZm8pOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5R SGVhZGVyLlZhclN0b3JlSWQgPSBCYXNlSW5mby5WYXJTdG9yZUlkDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLlFIZWFkZXIuVmFyU3RvcmVJbmZvLlZhck5hbWUgPSBCYXNlSW5mby5JbmZvLlZhck5h bWUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUUhlYWRlci5WYXJTdG9yZUluZm8uVmFyT2Zmc2V0 ID0gQmFzZUluZm8uSW5mby5WYXJPZmZzZXQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVm IEdldFZhclN0b3JlSW5mbyhzZWxmLCBJbmZvKToNCj4gPg0KPiA+ICsgICAgICAgIEluZm8uVmFy U3RvcmVJZCA9IHNlbGYuUUhlYWRlci5WYXJTdG9yZUlkDQo+ID4NCj4gPiArICAgICAgICBJbmZv LlZhclN0b3JlSW5mbyA9IHNlbGYuUUhlYWRlci5WYXJTdG9yZUluZm8NCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBJbmZvDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRRRmxhZ3Mo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5RSGVhZGVyLkZsYWdzDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRGbGFncyhzZWxmLCBGbGFncyk6DQo+ID4NCj4g PiArICAgICAgICBGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoRmxhZ3MsDQo+IEVG SV9JRlJfRkxBR19SRUFEX09OTFkpDQo+ID4NCj4gPiArICAgICAgICBpZiBSZXQ6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5RSGVhZGVyLkZsYWdzIHw9IEVGSV9JRlJfRkxBR19SRUFEX09O TFkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIEZsYWdzID0gX0ZMQUdfQ0xFQVIoRmxh Z3MsIDB4MDIpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBGbGFncywgUmV0ID0gX0ZM QUdfVEVTVF9BTkRfQ0xFQVIoRmxhZ3MsIEVGSV9JRlJfRkxBR19DQUxMQkFDSykNCj4gPg0KPiA+ ICsgICAgICAgIGlmIFJldDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlFIZWFkZXIuRmxh Z3MgfD0gRUZJX0lGUl9GTEFHX0NBTExCQUNLDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICAjIGlnbm9yZSBOVkFjY2Vzc0ZsYWcNCj4gPg0KPiA+ICsgICAgICAgIEZsYWdzID0gX0ZMQUdf Q0xFQVIoRmxhZ3MsIDB4MDgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBGbGFncywg UmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoRmxhZ3MsDQo+ID4gRUZJX0lGUl9GTEFHX1JFU0VU X1JFUVVJUkVEKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgUmV0Og0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuUUhlYWRlci5GbGFncyB8PSBFRklfSUZSX0ZMQUdfUkVTRVRfUkVRVUlSRUQNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9D TEVBUihGbGFncywNCj4gPiBFRklfSUZSX0ZMQUdfUkVDT05ORUNUX1JFUVVJUkVEKQ0KPiA+DQo+ ID4gKyAgICAgICAgaWYgUmV0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuUUhlYWRlci5G bGFncyB8PSBFRklfSUZSX0ZMQUdfUkVDT05ORUNUX1JFUVVJUkVEDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICAjIFNldCBMYXRlQ2hlY2sgRmxhZyB0byBjb21wYXRpYmxlIGZvciBmcmFt ZXdvcmsgZmxhZw0KPiA+DQo+ID4gKyAgICAgICAgIyBidXQgaXQgdXNlcyAweDIwIGFzIGl0cyBm bGFnLCBpZiBpbiB0aGUgZnV0dXJlIFVFRkkgbWF5IHRha2UgdGhpcyBmbGFnDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoRmxh Z3MsIDB4MjApDQo+ID4NCj4gPiArICAgICAgICBpZiBSZXQ6DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5RSGVhZGVyLkZsYWdzIHw9IDB4MjANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVBUihGbGFncywNCj4gPiBFRklfSUZS X0ZMQUdfT1BUSU9OU19PTkxZKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgUmV0Og0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuUUhlYWRlci5GbGFncyB8PSBFRklfSUZSX0ZMQUdfT1BUSU9OU19P TkxZDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gKA0KPiA+DQo+ID4gKyAg ICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgRmxhZ3MgPT0gMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2UgVmZyUmV0 dXJuQ29kZS5WRlJfUkVUVVJOX0ZMQUdTX1VOU1VQUE9SVEVEDQo+ID4NCj4gPiArICAgICAgICAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBVcGRhdGVJZnJRdWVzdGlvbkhlYWRlcihz ZWxmLCBxSGVhZGVyKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUUhlYWRlciA9IHFIZWFkZXIN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJSZWYoSWZyTGluZSwg SWZyQmFzZUluZm8sIElmck9wSGVhZGVyLCBJZnJRdWVzdGlvbkhlYWRlcik6DQo+ID4NCj4gPiAr ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBRTmFtZT1Ob25lLCBWYXJJZFN0cj0iIik6DQo+ID4NCj4g PiArICAgICAgICBzZWxmLlJlZiA9IEVGSV9JRlJfUkVGKCkNCj4gPg0KPiA+ICsgICAgICAgIElm ckJhc2VJbmZvLl9faW5pdF9fKHNlbGYsIHNlbGYuUmVmLCBRTmFtZSwgVmFySWRTdHIpDQo+ID4N Cj4gPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlJlZi5IZWFkZXIs IEVGSV9JRlJfUkVGX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgSWZyUXVlc3Rpb25IZWFkZXIuX19p bml0X18oc2VsZiwgc2VsZi5SZWYuUXVlc3Rpb24pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlJl Zi5Gb3JtSWQgPSAwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRGb3JtSWQoc2Vs ZiwgRm9ybUlkKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUmVmLkZvcm1JZCA9IEZvcm1JZA0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIElmclJlZjIoSWZyTGluZSwg SWZyQmFzZUluZm8sIElmck9wSGVhZGVyLCBJZnJRdWVzdGlvbkhlYWRlcik6DQo+ID4NCj4gPiAr ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBRTmFtZT1Ob25lLCBWYXJJZFN0cj0iIik6DQo+ID4NCj4g PiArICAgICAgICBzZWxmLlJlZjIgPSBFRklfSUZSX1JFRjIoKQ0KPiA+DQo+ID4gKyAgICAgICAg SWZyQmFzZUluZm8uX19pbml0X18oc2VsZiwgc2VsZi5SZWYyLCBRTmFtZSwgVmFySWRTdHIpDQo+ ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlJlZjIuSGVh ZGVyLCBFRklfSUZSX1JFRl9PUCwNCj4gPiBzaXplb2YoRUZJX0lGUl9SRUYyKSkNCj4gPg0KPiA+ ICsgICAgICAgIElmclF1ZXN0aW9uSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuUmVmMi5RdWVz dGlvbikNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUmVmMi5Gb3JtSWQgPSAwDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLlJlZjIuUXVlc3Rpb25JZCA9IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRGb3JtSWQoc2VsZiwgRm9ybUlkKToNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuUmVmMi5Gb3JtSWQgPSBGb3JtSWQNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgZGVmIFNldFFJZChzZWxmLCBRdWVzdGlvbklkKToNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuUmVmMi5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gK2NsYXNzIElmclJlZjMoSWZyTGluZSwgSWZyQmFzZUluZm8sIElmck9w SGVhZGVyLCBJZnJRdWVzdGlvbkhlYWRlcik6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBRTmFtZT1Ob25lLCBWYXJJZFN0cj0iIik6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlJl ZjMgPSBFRklfSUZSX1JFRjMoKQ0KPiA+DQo+ID4gKyAgICAgICAgSWZyQmFzZUluZm8uX19pbml0 X18oc2VsZiwgc2VsZi5SZWYzLCBRTmFtZSwgVmFySWRTdHIpDQo+ID4NCj4gPiArICAgICAgICBJ ZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlJlZjMuSGVhZGVyLCBFRklfSUZSX1JFRl9P UCwNCj4gPiBzaXplb2YoRUZJX0lGUl9SRUYzKSkNCj4gPg0KPiA+ICsgICAgICAgIElmclF1ZXN0 aW9uSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuUmVmMy5RdWVzdGlvbikNCj4gPg0KPiA+ICsg ICAgICAgIHNlbGYuUmVmMy5Gb3JtSWQgPSAwDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlJlZjMu UXVlc3Rpb25JZCA9IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEDQo+ID4NCj4gPiArICAgICAgICBF RklfSUZSX0RFRkFVTFRfR1VJRCA9IEVGSV9HVUlEKDAsIDAsIDAsIEd1aWRBcnJheSgwLCAwLCAw LCAwLCAwLCAwLCAwLA0KPiA+IDApKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5SZWYzLkZvcm1T ZXRJZCA9IEVGSV9JRlJfREVGQVVMVF9HVUlEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiBTZXRGb3JtSWQoc2VsZiwgRm9ybUlkKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUmVmMy5G b3JtSWQgPSBGb3JtSWQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldFFJZChzZWxm LCBRdWVzdGlvbklkKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUmVmMy5RdWVzdGlvbklkID0g UXVlc3Rpb25JZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0Rm9ybVNldElkKHNl bGYsIEZvcm1TZXRJZCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlJlZjMuRm9ybVNldElkID0g Rm9ybVNldElkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgSWZyUmVm NChJZnJMaW5lLCBJZnJCYXNlSW5mbywgSWZyT3BIZWFkZXIsIElmclF1ZXN0aW9uSGVhZGVyKToN Cj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIFFOYW1lPU5vbmUsIFZhcklkU3RyPSIi KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUmVmNCA9IEVGSV9JRlJfUkVGNCgpDQo+ID4NCj4g PiArICAgICAgICBJZnJCYXNlSW5mby5fX2luaXRfXyhzZWxmLCBzZWxmLlJlZjQsIFFOYW1lLCBW YXJJZFN0cikNCj4gPg0KPiA+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNl bGYuUmVmNC5IZWFkZXIsIEVGSV9JRlJfUkVGX09QLA0KPiA+IHNpemVvZihFRklfSUZSX1JFRjQp KQ0KPiA+DQo+ID4gKyAgICAgICAgSWZyUXVlc3Rpb25IZWFkZXIuX19pbml0X18oc2VsZiwgc2Vs Zi5SZWY0LlF1ZXN0aW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5SZWY0LkZvcm1JZCA9IDAN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUmVmNC5RdWVzdGlvbklkID0gRUZJX1FVRVNUSU9OX0lE X0lOVkFMSUQNCj4gPg0KPiA+ICsgICAgICAgIEVGSV9JRlJfREVGQVVMVF9HVUlEID0gRUZJX0dV SUQoMCwgMCwgMCwgR3VpZEFycmF5KDAsIDAsIDAsIDAsIDAsIDAsIDAsDQo+ID4gMCkpDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLlJlZjQuRm9ybVNldElkID0gRUZJX0lGUl9ERUZBVUxUX0dVSUQN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUmVmNC5EZXZpY2VQYXRoID0gRUZJX1NUUklOR19JRF9J TlZBTElEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRGb3JtSWQoc2VsZiwgRm9y bUlkKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUmVmNC5Gb3JtSWQgPSBGb3JtSWQNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldFFJZChzZWxmLCBRdWVzdGlvbklkKToNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuUmVmNC5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0Rm9ybVNldElkKHNlbGYsIEZvcm1TZXRJZCk6DQo+ID4N Cj4gPiArICAgICAgICBzZWxmLlJlZjQuRm9ybVNldElkID0gRm9ybVNldElkDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiBTZXREZXZpY2VQYXRoKHNlbGYsIERldmljZVBhdGgpOg0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5SZWY0LkRldmljZVBhdGggPSBEZXZpY2VQYXRoDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgSWZyUmVmNShJZnJMaW5lLCBJZnJCYXNl SW5mbywgSWZyT3BIZWFkZXIsIElmclF1ZXN0aW9uSGVhZGVyKToNCj4gPg0KPiA+ICsgICAgZGVm IF9faW5pdF9fKHNlbGYsIFFOYW1lPU5vbmUsIFZhcklkU3RyPSIiKToNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuUmVmNSA9IEVGSV9JRlJfUkVGNSgpDQo+ID4NCj4gPiArICAgICAgICBJZnJCYXNl SW5mby5fX2luaXRfXyhzZWxmLCBzZWxmLlJlZjUsIFFOYW1lLCBWYXJJZFN0cikNCj4gPg0KPiA+ ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuUmVmNS5IZWFkZXIsIEVG SV9JRlJfUkVGX09QLA0KPiA+IHNpemVvZihFRklfSUZSX1JFRjUpKQ0KPiA+DQo+ID4gKyAgICAg ICAgSWZyUXVlc3Rpb25IZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5SZWY1LlF1ZXN0aW9uKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIElmckFjdGlvbihJZnJMaW5l LCBJZnJCYXNlSW5mbywgSWZyT3BIZWFkZXIsIElmclF1ZXN0aW9uSGVhZGVyKToNCj4gPg0KPiA+ ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIFFOYW1lPU5vbmUsIFZhcklkU3RyPSIiKToNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuQWN0aW9uID0gRUZJX0lGUl9BQ1RJT04oKQ0KPiA+DQo+ID4gKyAg ICAgICAgSWZyQmFzZUluZm8uX19pbml0X18oc2VsZiwgc2VsZi5BY3Rpb24sIFFOYW1lLCBWYXJJ ZFN0cikNCj4gPg0KPiA+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYu QWN0aW9uLkhlYWRlciwgRUZJX0lGUl9BQ1RJT05fT1ApDQo+ID4NCj4gPiArICAgICAgICBJZnJR dWVzdGlvbkhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLkFjdGlvbi5RdWVzdGlvbikNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuQWN0aW9uLlF1ZXN0aW9uQ29uZmlnID0gRUZJX1NUUklOR19JRF9J TlZBTElEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRRdWVzdGlvbkNvbmZpZyhz ZWxmLCBRdWVzdGlvbkNvbmZpZyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkFjdGlvbi5RdWVz dGlvbkNvbmZpZyA9IFF1ZXN0aW9uQ29uZmlnDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArY2xhc3MgSWZyVGV4dChJZnJMaW5lLCBJZnJPcEhlYWRlciwgSWZyU3RhdGVtZW50SGVh ZGVyKToNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKA0KPiA+DQo+ID4gKyAgICAgICAgc2Vs ZiwNCj4gPg0KPiA+ICsgICAgKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuVGV4dCA9IEVGSV9J RlJfVEVYVCgpDQo+ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBz ZWxmLlRleHQuSGVhZGVyLCBFRklfSUZSX1RFWFRfT1ApDQo+ID4NCj4gPiArICAgICAgICBJZnJT dGF0ZW1lbnRIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5UZXh0LlN0YXRlbWVudCkNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuVGV4dC5UZXh0VHdvID0gRUZJX1NUUklOR19JRF9JTlZBTElEDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLkhhc1RleHRUd28gPSBGYWxzZQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBkZWYgU2V0VGV4dFR3byhzZWxmLCBTdHJpbmdJZCk6DQo+ID4NCj4gPiArICAg ICAgICBzZWxmLlRleHQuVGV4dFR3byA9IFN0cmluZ0lkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiBTZXRIYXNUZXh0VHdvKHNlbGYsIEZsYWcpOg0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5IYXNUZXh0VHdvID0gRmxhZw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SW5m byhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLlRleHQNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJHdWlkKElmckxpbmUsIElmck9wSGVhZGVy KToNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIFNpemUsIERhdGE9Tm9uZSk6DQo+ ID4NCj4gPiArICAgICAgICBzZWxmLkd1aWQgPSBFRklfSUZSX0dVSUQoKQ0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5EYXRhID0gRGF0YSAgIyBkYXRhYnVmZmVyIGlzIHNhdmVkIGhlcmUNCj4gPg0K PiA+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuR3VpZC5IZWFkZXIs IEVGSV9JRlJfR1VJRF9PUCwNCj4gPiBzaXplb2YoRUZJX0lGUl9HVUlEKSArIFNpemUpDQo+ID4N Cj4gPiArICAgICAgICBFRklfSUZSX0RFRkFVTFRfR1VJRCA9IEVGSV9HVUlEKDAsIDAsIDAsIEd1 aWRBcnJheSgwLCAwLCAwLCAwLCAwLCAwLCAwLA0KPiA+IDApKQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5HdWlkLkd1aWQgPSBFRklfSUZSX0RFRkFVTFRfR1VJRA0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBkZWYgU2V0R3VpZChzZWxmLCBHdWlkKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu R3VpZC5HdWlkID0gR3VpZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0RGF0YShz ZWxmLCBEYXRhKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuRGF0YSA9IERhdGENCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldERhdGEoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICBy ZXR1cm4gc2VsZi5EYXRhDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNl bGYpOiAgIw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuR3VpZA0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIElmckV4dGVuc2lvbkd1aWQoSWZyTGluZSwgSWZy T3BIZWFkZXIpOg0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgU2l6ZT0wLCBUeXBl TmFtZT0iIiwgQXJyYXlTaXplPTAsIERhdGE9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxm Lkd1aWQgPSBFRklfSUZSX0dVSUQoKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgQXJyYXlTaXplICE9 IDA6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5EYXRhVHlwZSA9IFR5cGVOYW1lICsgIlsi ICsgc3RyKEFycmF5U2l6ZSkgKyAiXSINCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5EYXRhVHlwZSA9IFR5cGVOYW1lDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLkZpZWxkTGlzdCA9IFtdDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkRhdGEgPSBEYXRh DQo+ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLkd1aWQu SGVhZGVyLCBFRklfSUZSX0dVSURfT1AsDQo+ID4gc2l6ZW9mKEVGSV9JRlJfR1VJRCkgKyBTaXpl KQ0KPiA+DQo+ID4gKyAgICAgICAgRUZJX0lGUl9ERUZBVUxUX0dVSUQgPSBFRklfR1VJRCgwLCAw LCAwLCBHdWlkQXJyYXkoMCwgMCwgMCwgMCwgMCwgMCwgMCwNCj4gPiAwKSkNCj4gPg0KPiA+ICsg ICAgICAgIHNlbGYuR3VpZC5HdWlkID0gRUZJX0lGUl9ERUZBVUxUX0dVSUQNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgZGVmIFNldEd1aWQoc2VsZiwgR3VpZCk6DQo+ID4NCj4gPiArICAgICAg ICBzZWxmLkd1aWQuR3VpZCA9IEd1aWQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNl dERhdGEoc2VsZiwgRGF0YSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkRhdGEgPSBEYXRhDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXREYXRhVHlwZShzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBzZWxmLkRhdGFUeXBlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiBHZXRGaWVsZExpc3Qoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5G aWVsZExpc3QNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldEZpZWxkTGlzdChzZWxm LCBURk5hbWUsIFRGVmFsdWUpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5GaWVsZExpc3QuYXBw ZW5kKFtURk5hbWUsIFRGVmFsdWVdKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0 RGF0YShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLkRhdGENCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6ICAjDQo+ID4NCj4gPiArICAgICAg ICByZXR1cm4gc2VsZi5HdWlkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xh c3MgSWZyT3JkZXJlZExpc3QoSWZyTGluZSwgSWZyQmFzZUluZm8sIElmck9wSGVhZGVyLCBJZnJR dWVzdGlvbkhlYWRlcik6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBRTmFtZT1O b25lLCBWYXJJZFN0cj0iIik6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLk9yZGVyZWRMaXN0ID0g RUZJX0lGUl9PUkRFUkVEX0xJU1QoKQ0KPiA+DQo+ID4gKyAgICAgICAgSWZyQmFzZUluZm8uX19p bml0X18oc2VsZiwgc2VsZi5PcmRlcmVkTGlzdCwgUU5hbWUsIFZhcklkU3RyKQ0KPiA+DQo+ID4g KyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5PcmRlcmVkTGlzdC5IZWFk ZXIsDQo+ID4gRUZJX0lGUl9PUkRFUkVEX0xJU1RfT1ApDQo+ID4NCj4gPiArICAgICAgICBJZnJR dWVzdGlvbkhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLk9yZGVyZWRMaXN0LlF1ZXN0aW9uKQ0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5PcmRlcmVkTGlzdC5NYXhDb250YWluZXJzID0gMA0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5PcmRlcmVkTGlzdC5GbGFncyA9IDANCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuSGFzTWF4Q29udGFpbmVycyA9IEZhbHNlDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiBHZXRRdWVzdGlvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg IHJldHVybiBzZWxmDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRRSGVhZGVyRmxh Z3Moc2VsZiwgRmxhZ3MpOg0KPiA+DQo+ID4gKyAgICAgICAgSWZyUXVlc3Rpb25IZWFkZXIuU2V0 RmxhZ3Moc2VsZiwgRmxhZ3MpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRNYXhD b250YWluZXJzKHNlbGYsIE1heENvbnRhaW5lcnMpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5P cmRlcmVkTGlzdC5NYXhDb250YWluZXJzID0gTWF4Q29udGFpbmVycw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBkZWYgU2V0SGFzTWF4Q29udGFpbmVycyhzZWxmLCBIYXNNYXhDb250YWluZXJz KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuSGFzTWF4Q29udGFpbmVycyA9IEhhc01heENvbnRh aW5lcnMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldEZsYWdzKHNlbGYsIEhGbGFn cywgTEZsYWdzKToNCj4gPg0KPiA+ICsgICAgICAgIFJldHVybkNvZGUgPSBJZnJRdWVzdGlvbkhl YWRlci5TZXRGbGFncyhzZWxmLCBIRmxhZ3MpDQo+ID4NCj4gPiArICAgICAgICBpZiBSZXR1cm5D b2RlICE9IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBSZXR1cm5Db2RlDQo+ID4NCj4gPiArICAgICAgICBMRmxhZ3MsIFJldCA9 IF9GTEFHX1RFU1RfQU5EX0NMRUFSKExGbGFncywgRUZJX0lGUl9VTklRVUVfU0VUKQ0KPiA+DQo+ ID4gKyAgICAgICAgaWYgUmV0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuT3JkZXJlZExp c3QuRmxhZ3MgfD0gRUZJX0lGUl9VTklRVUVfU0VUDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBMRmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFSKExGbGFncywNCj4gRUZJX0lG Ul9OT19FTVBUWV9TRVQpDQo+ID4NCj4gPiArICAgICAgICBpZiBSZXQ6DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5PcmRlcmVkTGlzdC5GbGFncyB8PSBFRklfSUZSX05PX0VNUFRZX1NFVA0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuICgNCj4gPg0KPiA+ICsgICAgICAg ICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIExGbGFncyA9PSAwDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZSBWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fRkxBR1NfVU5TVVBQT1JURUQNCj4gPg0KPiA+ICsgICAgICAgICkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJTdHJpbmcoSWZyTGluZSwg SWZyQmFzZUluZm8sIElmck9wSGVhZGVyLCBJZnJRdWVzdGlvbkhlYWRlcik6DQo+ID4NCj4gPiAr ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBRTmFtZT1Ob25lLCBWYXJJZFN0cj0iIik6DQo+ID4NCj4g PiArICAgICAgICBzZWxmLlN0ciA9IEVGSV9JRlJfU1RSSU5HKCkNCj4gPg0KPiA+ICsgICAgICAg IElmckJhc2VJbmZvLl9faW5pdF9fKHNlbGYsIHNlbGYuU3RyLCBRTmFtZSwgVmFySWRTdHIpDQo+ ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlN0ci5IZWFk ZXIsIEVGSV9JRlJfU1RSSU5HX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgSWZyUXVlc3Rpb25IZWFk ZXIuX19pbml0X18oc2VsZiwgc2VsZi5TdHIuUXVlc3Rpb24pDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLlN0ci5GbGFncyA9IDANCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU3RyLk1pblNpemUgPSAw DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlN0ci5NYXhTaXplID0gMA0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBkZWYgR2V0UXVlc3Rpb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1 cm4gc2VsZg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0UUhlYWRlckZsYWdzKHNl bGYsIEZsYWdzKToNCj4gPg0KPiA+ICsgICAgICAgIElmclF1ZXN0aW9uSGVhZGVyLlNldEZsYWdz KHNlbGYsIEZsYWdzKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0RmxhZ3Moc2Vs ZiwgSEZsYWdzLCBMRmxhZ3MpOg0KPiA+DQo+ID4gKyAgICAgICAgUmV0dXJuQ29kZSA9IElmclF1 ZXN0aW9uSGVhZGVyLlNldEZsYWdzKHNlbGYsIEhGbGFncykNCj4gPg0KPiA+ICsgICAgICAgIGlm IFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1M6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIFJldHVybkNvZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIExGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoTEZsYWdzLA0KPiA+IEVG SV9JRlJfU1RSSU5HX01VTFRJX0xJTkUpDQo+ID4NCj4gPiArICAgICAgICBpZiBSZXQ6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5TdHIuRmxhZ3MgfD0gRUZJX0lGUl9TVFJJTkdfTVVMVElf TElORQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuICgNCj4gPg0KPiA+ICsg ICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIExGbGFncyA9PSAwDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZSBWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkxBR1NfVU5TVVBQT1JURUQNCj4gPg0KPiA+ICsgICAgICAg ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldE1pblNpemUoc2VsZiwgTWluU2l6 ZSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlN0ci5NaW5TaXplID0gTWluU2l6ZQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0TWF4U2l6ZShzZWxmLCBNYXhTaXplKToNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuU3RyLk1heFNpemUgPSBNYXhTaXplDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArY2xhc3MgSWZyUGFzc3dvcmQoSWZyTGluZSwgSWZyQmFzZUluZm8s IElmck9wSGVhZGVyLCBJZnJRdWVzdGlvbkhlYWRlcik6DQo+ID4NCj4gPiArICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBRTmFtZT1Ob25lLCBWYXJJZFN0cj0iIik6DQo+ID4NCj4gPiArICAgICAgICBz ZWxmLlBhc3N3b3JkID0gRUZJX0lGUl9QQVNTV09SRCgpDQo+ID4NCj4gPiArICAgICAgICBJZnJC YXNlSW5mby5fX2luaXRfXyhzZWxmLCBzZWxmLlBhc3N3b3JkLCBRTmFtZSwgVmFySWRTdHIpDQo+ ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlBhc3N3b3Jk LkhlYWRlciwNCj4gPiBFRklfSUZSX1BBU1NXT1JEX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgSWZy UXVlc3Rpb25IZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5QYXNzd29yZC5RdWVzdGlvbikNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuUGFzc3dvcmQuTWluU2l6ZSA9IDANCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuUGFzc3dvcmQuTWF4U2l6ZSA9IDANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIEdldFF1ZXN0aW9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldFFIZWFkZXJGbGFncyhzZWxmLCBGbGFncyk6 DQo+ID4NCj4gPiArICAgICAgICBJZnJRdWVzdGlvbkhlYWRlci5TZXRGbGFncyhzZWxmLCBGbGFn cykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldE1pblNpemUoc2VsZiwgTWluU2l6 ZSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlBhc3N3b3JkLk1pblNpemUgPSBNaW5TaXplDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRNYXhTaXplKHNlbGYsIE1heFNpemUpOg0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5QYXNzd29yZC5NYXhTaXplID0gTWF4U2l6ZQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIElmckRlZmF1bHQoSWZyTGluZSwgSWZy T3BIZWFkZXIpOg0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLA0KPiA+DQo+ID4gKyAgICAgICAgVmFsdWVUeXBlLA0KPiA+DQo+ID4gKyAgICAgICAg VmFsdWVMaXN0LA0KPiA+DQo+ID4gKyAgICAgICAgRGVmYXVsdElkPUVGSV9ISUlfREVGQVVMVF9D TEFTU19TVEFOREFSRCwNCj4gPg0KPiA+ICsgICAgICAgIFR5cGU9RUZJX0lGUl9UWVBFX09USEVS LA0KPiA+DQo+ID4gKyAgICApOg0KPiA+DQo+ID4gKyAgICAgICAgTnVtcyA9IGxlbihWYWx1ZUxp c3QpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkRlZmF1bHQgPSBSZWZpbmVfRUZJX0lGUl9ERUZB VUxUKFZhbHVlVHlwZSwgTnVtcykNCj4gPg0KPiA+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5p dF9fKHNlbGYsIHNlbGYuRGVmYXVsdC5IZWFkZXIsIEVGSV9JRlJfREVGQVVMVF9PUCwNCj4gPiBz aXplb2Yoc2VsZi5EZWZhdWx0KSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuRGVmYXVsdC5UeXBl ID0gVHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5EZWZhdWx0LkRlZmF1bHRJZCA9IERlZmF1 bHRJZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5WYWx1ZVR5cGUgPSBWYWx1 ZVR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuRGVmYXVsdFN0b3JlID0gIiINCj4gPg0KPiA+ ICsgICAgICAgIHNlbGYuVmFsdWVTdHJlYW0gPSAiIg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgaWYgVmFsdWVMaXN0ICE9IFtdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIEFycmF5VHlw ZSA9IFR5cGVEaWN0W1ZhbHVlVHlwZV0gKiBOdW1zDQo+ID4NCj4gPiArICAgICAgICAgICAgVmFs dWVBcnJheSA9IEFycmF5VHlwZSgpDQo+ID4NCj4gPiArICAgICAgICAgICAgZm9yIGkgaW4gcmFu Z2UoMCwgbGVuKFZhbHVlTGlzdCkpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBWYWx1ZUFy cmF5W2ldID0gVmFsdWVMaXN0W2ldDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5EZWZhdWx0 LlZhbHVlID0gVmFsdWVBcnJheQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0RGVm YXVsdElkKHNlbGYsIERlZmF1bHRJZCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkRlZmF1bHQu RGVmYXVsdElkID0gRGVmYXVsdElkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRW YWx1ZVR5cGUoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5WYWx1ZVR5cGUN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldFR5cGUoc2VsZiwgVHlwZSk6DQo+ID4N Cj4gPiArICAgICAgICBzZWxmLkRlZmF1bHQuVHlwZSA9IFR5cGUNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIFNldFZhbHVlKHNlbGYsIFZhbHVlTGlzdCk6DQo+ID4NCj4gPiArICAgICAg ICBBcnJheVR5cGUgPSBUeXBlRGljdFtzZWxmLlZhbHVlVHlwZV0gKiAobGVuKFZhbHVlTGlzdCkp DQo+ID4NCj4gPiArICAgICAgICBWYWx1ZUFycmF5ID0gQXJyYXlUeXBlKCkNCj4gPg0KPiA+ICsg ICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihWYWx1ZUxpc3QpKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBWYWx1ZUFycmF5W2ldID0gVmFsdWVMaXN0W2ldDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLkRlZmF1bHQuVmFsdWUgPSBWYWx1ZUFycmF5DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiBTZXREZWZhdWx0U3RvcmUoc2VsZiwgRGVmYXVsdFN0b3JlKToNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuRGVmYXVsdFN0b3JlID0gRGVmYXVsdFN0b3JlDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGRlZiBTZXRWYWx1ZVN0cmVhbShzZWxmLCBWYWx1ZVN0cmVhbSk6DQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLlZhbHVlU3RyZWFtID0gVmFsdWVTdHJlYW0NCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2Vs Zi5EZWZhdWx0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgSWZyRGVm YXVsdDIoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18o c2VsZiwgRGVmYXVsdElkPUVGSV9ISUlfREVGQVVMVF9DTEFTU19TVEFOREFSRCwNCj4gPiBUeXBl PUVGSV9JRlJfVFlQRV9PVEhFUik6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkRlZmF1bHQgPSBF RklfSUZSX0RFRkFVTFRfMigpDQo+ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRf XygNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLCBzZWxmLkRlZmF1bHQuSGVhZGVyLCBFRklf SUZSX0RFRkFVTFRfT1AsDQo+ID4gc2l6ZW9mKEVGSV9JRlJfREVGQVVMVF8yKQ0KPiA+DQo+ID4g KyAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5EZWZhdWx0LlR5cGUgPSBUeXBlDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLkRlZmF1bHQuRGVmYXVsdElkID0gRGVmYXVsdElkDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkRlZmF1bHRTdG9yZSA9ICIiDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXREZWZhdWx0SWQoc2VsZiwgRGVmYXVsdElkKToNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuRGVmYXVsdC5EZWZhdWx0SWQgPSBEZWZhdWx0SWQNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldFR5cGUoc2VsZiwgVHlwZSk6DQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLkRlZmF1bHQuVHlwZSA9IFR5cGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgZGVmIFNldERlZmF1bHRTdG9yZShzZWxmLCBEZWZhdWx0U3RvcmUpOg0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5EZWZhdWx0U3RvcmUgPSBEZWZhdWx0U3RvcmUNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2Vs Zi5EZWZhdWx0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgSWZySW5j b25zaXN0ZW50SWYoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKyAgICBkZWYgX19p bml0X18oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkluY29uc2lzdGVudElmID0gRUZJ X0lGUl9JTkNPTlNJU1RFTlRfSUYoKQ0KPiA+DQo+ID4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19p bml0X18oc2VsZiwgc2VsZi5JbmNvbnNpc3RlbnRJZi5IZWFkZXIsDQo+ID4gRUZJX0lGUl9JTkNP TlNJU1RFTlRfSUZfT1ApDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkluY29uc2lzdGVudElmLkVy cm9yID0gRUZJX1NUUklOR19JRF9JTlZBTElEDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkZsYWdz U3RyZWFtID0gIiINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldEVycm9yKHNlbGYs IEVycm9yKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuSW5jb25zaXN0ZW50SWYuRXJyb3IgPSBF cnJvcg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0RmxhZ3NTdHJlYW0oc2VsZiwg RmxhZyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkZsYWdzU3RyZWFtID0gRmxhZw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg IHJldHVybiBzZWxmLkluY29uc2lzdGVudElmDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArY2xhc3MgSWZySW5jb25zaXN0ZW50SWYyKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4g Pg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5J bmNvbnNpc3RlbnRJZiA9IEVGSV9JRlJfSU5DT05TSVNURU5UX0lGKCkNCj4gPg0KPiA+ICsgICAg ICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuSW5jb25zaXN0ZW50SWYuSGVhZGVy LA0KPiA+IEVGSV9JRlJfSU5DT05TSVNURU5UX0lGX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5JbmNvbnNpc3RlbnRJZi5FcnJvciA9IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5GbGFnc1N0cmVhbSA9ICIiDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiBTZXRFcnJvcihzZWxmLCBFcnJvcik6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkluY29u c2lzdGVudElmLkVycm9yID0gRXJyb3INCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNl dEZsYWdzU3RyZWFtKHNlbGYsIEZsYWcpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5GbGFnc1N0 cmVhbSA9IEZsYWcNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5JbmNvbnNpc3RlbnRJZg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIElmck5vU3VibWl0SWYoSWZyTGluZSwgSWZy T3BIZWFkZXIpOg0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLk5vU3VibWl0SWYgPSBFRklfSUZSX05PX1NVQk1JVF9JRigpDQo+ID4NCj4g PiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLk5vU3VibWl0SWYuSGVh ZGVyLA0KPiA+IEVGSV9JRlJfTk9fU1VCTUlUX0lGX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5Ob1N1Ym1pdElmLkVycm9yID0gRUZJX1NUUklOR19JRF9JTlZBTElEDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLkZsYWdzU3RyZWFtID0gIiINCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIFNldEVycm9yKHNlbGYsIEVycm9yKToNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuTm9TdWJtaXRJZi5FcnJvciA9IEVycm9yDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiBTZXRGbGFnc1N0cmVhbShzZWxmLCBGbGFnKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuRmxh Z3NTdHJlYW0gPSBGbGFnDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuTm9TdWJtaXRJZg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIElmckRpc2FibGVJZihJZnJMaW5lLCBJZnJP cEhlYWRlcik6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgIHNlbGYuRGlzYWJsZUlmID0gRUZJX0lGUl9ESVNBQkxFX0lGKCkNCj4gPg0KPiA+ICsg ICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuRGlzYWJsZUlmLkhlYWRlciwN Cj4gPiBFRklfSUZSX0RJU0FCTEVfSUZfT1ApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuRGlzYWJsZUlm DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgSWZyU3VwcHJlc3NJZihJ ZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU3VwcHJlc3NJZiA9IEVGSV9JRlJfU1VQUFJFU1NfSUYo KQ0KPiA+DQo+ID4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5TdXBw cmVzc0lmLkhlYWRlciwNCj4gPiBFRklfSUZSX1NVUFBSRVNTX0lGX09QKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVy biBzZWxmLlN1cHByZXNzSWYNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFz cyBJZnJHcmF5T3V0SWYoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKyAgICBkZWYg X19pbml0X18oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkdyYXlPdXRJZiA9IEVGSV9J RlJfR1JBWV9PVVRfSUYoKQ0KPiA+DQo+ID4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18o c2VsZiwgc2VsZi5HcmF5T3V0SWYuSGVhZGVyLA0KPiA+IEVGSV9JRlJfR1JBWV9PVVRfSUZfT1Ap DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgcmV0dXJuIHNlbGYuR3JheU91dElmDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArY2xhc3MgSWZyVmFsdWUoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4g KyAgICBkZWYgX19pbml0X18oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlZhbHVlID0g RUZJX0lGUl9WQUxVRSgpDQo+ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhz ZWxmLCBzZWxmLlZhbHVlLkhlYWRlciwgRUZJX0lGUl9WQUxVRV9PUCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g c2VsZi5WYWx1ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIElmclJl YWQoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlJlYWQgPSBFRklfSUZSX1JFQUQoKQ0KPiA+DQo+ ID4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5SZWFkLkhlYWRlciwg RUZJX0lGUl9SRUFEX09QKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SW5mbyhz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLlJlYWQNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJXcml0ZShJZnJMaW5lLCBJZnJPcEhlYWRlcik6 DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuV3JpdGUgPSBFRklfSUZSX1dSSVRFKCkNCj4gPg0KPiA+ICsgICAgICAgIElmck9wSGVhZGVy Ll9faW5pdF9fKHNlbGYsIHNlbGYuV3JpdGUuSGVhZGVyLCBFRklfSUZSX1dSSVRFX09QKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBzZWxmLldyaXRlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr Y2xhc3MgSWZyV2FybmluZ0lmKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsgICAg ZGVmIF9faW5pdF9fKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5XYXJuaW5nSWYgPSBF RklfSUZSX1dBUk5JTkdfSUYoKQ0KPiA+DQo+ID4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0 X18oc2VsZiwgc2VsZi5XYXJuaW5nSWYuSGVhZGVyLA0KPiA+IEVGSV9JRlJfV0FSTklOR19JRl9P UCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuV2FybmluZ0lmLldhcm5pbmcgPSBFRklfU1RSSU5H X0lEX0lOVkFMSUQNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuV2FybmluZ0lmLlRpbWVPdXQgPSAw DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkhhc1RpbWVPdXQgPSBGYWxzZQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0V2FybmluZyhzZWxmLCBXYXJuTWVzc2Fn ZSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLldhcm5pbmdJZi5XYXJuaW5nID0gV2Fybk1lc3Nh Z2UNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldEhhc0hhc1RpbWVPdXQoc2VsZiwg SGFzVGltZU91dCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkhhc1RpbWVPdXQgPSBIYXNUaW1l T3V0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRUaW1lT3V0KHNlbGYsIFRpbWVP dXQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5XYXJuaW5nSWYuVGltZU91dCA9IFRpbWVPdXQN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICByZXR1cm4gc2VsZi5XYXJuaW5nSWYNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICtjbGFzcyBJZnJSZWZyZXNoKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gPg0KPiA+ ICsgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5SZWZyZXNo ID0gRUZJX0lGUl9SRUZSRVNIKCkNCj4gPg0KPiA+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5p dF9fKHNlbGYsIHNlbGYuUmVmcmVzaC5IZWFkZXIsIEVGSV9JRlJfUkVGUkVTSF9PUCkNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuUmVmcmVzaC5SZWZyZXNoSW50ZXJ2YWwgPSAwDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiBTZXRSZWZyZXNoSW50ZXJ2YWwoc2VsZiwgUmVmcmVzaEludGVy dmFsKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUmVmcmVzaC5SZWZyZXNoSW50ZXJ2YWwgPSBS ZWZyZXNoSW50ZXJ2YWwNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8oc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5SZWZyZXNoDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgSWZyUmVmcmVzaElkKElmckxpbmUsIElmck9wSGVh ZGVyKToNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5SZWZyZXNoSWQgPSBFRklfSUZSX1JFRlJFU0hfSUQoKQ0KPiA+DQo+ID4gKyAgICAg ICAgSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5SZWZyZXNoSWQuSGVhZGVyLA0KPiA+ IEVGSV9JRlJfUkVGUkVTSF9JRF9PUCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUmVmcmVzaElk LlJlZnJlc2hFdmVudEdyb3VwSWQgPSBFRklfR1VJRCgwLCAwLCAwLCBHdWlkQXJyYXkoMCwgMCwN Cj4gPiAwLCAwLCAwLCAwLCAwLCAwKSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNl dFJlZnJlc2hFdmVudEdyb3V0SWQoc2VsZiwgUmVmcmVzaEV2ZW50R3JvdXBJZCk6DQo+ID4NCj4g PiArICAgICAgICBzZWxmLlJlZnJlc2hJZC5SZWZyZXNoRXZlbnRHcm91cElkID0gUmVmcmVzaEV2 ZW50R3JvdXBJZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLlJlZnJlc2hJZA0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIElmclZhclN0b3JlRGV2aWNlKElmckxpbmUsIElmck9w SGVhZGVyKToNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5WYXJTdG9yZURldmljZSA9IEVGSV9JRlJfVkFSU1RPUkVfREVWSUNFKCkNCj4g Pg0KPiA+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuVmFyU3RvcmVE ZXZpY2UuSGVhZGVyLA0KPiA+IEVGSV9JRlJfVkFSU1RPUkVfREVWSUNFX09QKQ0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5WYXJTdG9yZURldmljZS5EZXZpY2VQYXRoID0gRUZJX1NUUklOR19JRF9J TlZBTElEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXREZXZpY2VQYXRoKHNlbGYs IERldmljZVBhdGgpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5WYXJTdG9yZURldmljZS5EZXZp Y2VQYXRoID0gRGV2aWNlUGF0aA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SW5m byhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLlZhclN0b3JlRGV2aWNlDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgSWZyRGF0ZShJZnJMaW5lLCBJ ZnJCYXNlSW5mbywgSWZyT3BIZWFkZXIsIElmclF1ZXN0aW9uSGVhZGVyKToNCj4gPg0KPiA+ICsg ICAgZGVmIF9faW5pdF9fKHNlbGYsIFFOYW1lPU5vbmUsIFZhcklkU3RyPSIiKToNCj4gPg0KPiA+ ICsgICAgICAgIHNlbGYuRGF0ZSA9IEVGSV9JRlJfREFURSgpDQo+ID4NCj4gPiArICAgICAgICBJ ZnJCYXNlSW5mby5fX2luaXRfXyhzZWxmLCBzZWxmLkRhdGUsIFFOYW1lLCBWYXJJZFN0cikNCj4g Pg0KPiA+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuRGF0ZS5IZWFk ZXIsIEVGSV9JRlJfREFURV9PUCkNCj4gPg0KPiA+ICsgICAgICAgIElmclF1ZXN0aW9uSGVhZGVy Ll9faW5pdF9fKHNlbGYsIHNlbGYuRGF0ZS5RdWVzdGlvbikNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuRGF0ZS5GbGFncyA9IDANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuWWVh ciA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuTW9udGggPSBOb25lDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLkRheSA9IE5vbmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuRF9ZZWFyID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5EX01vbnRoID0gTm9uZQ0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5EX0RheSA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuU3RlcCA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuTWluID0gTm9uZQ0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5NYXggPSBOb25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiBTZXRGbGFncyhzZWxmLCBIRmxhZ3MsIExGbGFncyk6DQo+ID4NCj4gPiArICAgICAgICBSZXR1 cm5Db2RlID0gSWZyUXVlc3Rpb25IZWFkZXIuU2V0RmxhZ3Moc2VsZiwgSEZsYWdzKQ0KPiA+DQo+ ID4gKyAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VD Q0VTUzoNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gUmV0dXJuQ29kZQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVBUihM RmxhZ3MsDQo+ID4gRUZJX1FGX0RBVEVfWUVBUl9TVVBQUkVTUykNCj4gPg0KPiA+ICsgICAgICAg IGlmIFJldDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkRhdGUuRmxhZ3MgfD0gRUZJX1FG X0RBVEVfWUVBUl9TVVBQUkVTUw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgTEZsYWdz LCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVBUihMRmxhZ3MsDQo+ID4gRUZJX1FGX0RBVEVfTU9O VEhfU1VQUFJFU1MpDQo+ID4NCj4gPiArICAgICAgICBpZiBSZXQ6DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5EYXRlLkZsYWdzIHw9IEVGSV9RRl9EQVRFX01PTlRIX1NVUFBSRVNTDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBMRmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NM RUFSKExGbGFncywNCj4gPiBFRklfUUZfREFURV9EQVlfU1VQUFJFU1MpDQo+ID4NCj4gPiArICAg ICAgICBpZiBSZXQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5EYXRlLkZsYWdzIHw9IEVG SV9RRl9EQVRFX0RBWV9TVVBQUkVTUw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgTEZs YWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVBUihMRmxhZ3MsDQo+ID4gUUZfREFURV9TVE9S QUdFX05PUk1BTCkNCj4gPg0KPiA+ICsgICAgICAgIGlmIFJldDoNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLkRhdGUuRmxhZ3MgfD0gUUZfREFURV9TVE9SQUdFX05PUk1BTA0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVBUihM RmxhZ3MsDQo+ID4gUUZfREFURV9TVE9SQUdFX1RJTUUpDQo+ID4NCj4gPiArICAgICAgICBpZiBS ZXQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5EYXRlLkZsYWdzIHw9IFFGX0RBVEVfU1RP UkFHRV9USU1FDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBMRmxhZ3MsIFJldCA9IF9G TEFHX1RFU1RfQU5EX0NMRUFSKExGbGFncywNCj4gPiBRRl9EQVRFX1NUT1JBR0VfV0FLRVVQKQ0K PiA+DQo+ID4gKyAgICAgICAgaWYgUmV0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRGF0 ZS5GbGFncyB8PSBRRl9EQVRFX1NUT1JBR0VfV0FLRVVQDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICByZXR1cm4gKA0KPiA+DQo+ID4gKyAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZS X1JFVFVSTl9TVUNDRVNTDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgTEZsYWdzID09IDANCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbHNlIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GTEFHU19V TlNVUFBPUlRFRA0KPiA+DQo+ID4gKyAgICAgICAgKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gK2NsYXNzIElmclRpbWUoSWZyTGluZSwgSWZyQmFzZUluZm8sIElmck9wSGVhZGVy LCBJZnJRdWVzdGlvbkhlYWRlcik6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBR TmFtZT1Ob25lLCBWYXJJZFN0cj0iIik6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlRpbWUgPSBF RklfSUZSX1RJTUUoKQ0KPiA+DQo+ID4gKyAgICAgICAgSWZyQmFzZUluZm8uX19pbml0X18oc2Vs Ziwgc2VsZi5UaW1lLCBRTmFtZSwgVmFySWRTdHIpDQo+ID4NCj4gPiArICAgICAgICBJZnJPcEhl YWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlRpbWUuSGVhZGVyLCBFRklfSUZSX1RJTUVfT1ApDQo+ ID4NCj4gPiArICAgICAgICBJZnJRdWVzdGlvbkhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlRp bWUuUXVlc3Rpb24pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlRpbWUuRmxhZ3MgPSAwDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkhvdXIgPSBOb25lDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLk1pbnV0ZSA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2Vjb25kID0g Tm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5EX0hvdXIgPSBOb25lDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLkRfTWludXRlID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5EX1NlY29uZCA9IE5vbmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu U3RlcCA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuTWluID0gTm9uZQ0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5NYXggPSBOb25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBT ZXRIb3VyKHNlbGYsIEhvdXIpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5Ib3VyID0gSG91cg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0TWludXRlKHNlbGYsIE1pbnV0ZSk6DQo+ ID4NCj4gPiArICAgICAgICBzZWxmLk1pbnV0ZSA9IE1pbnV0ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBkZWYgU2V0U2Vjb25kKHNlbGYsIFNlY29uZCk6DQo+ID4NCj4gPiArICAgICAgICBz ZWxmLlNlY29uZCA9IFNlY29uZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0Rmxh Z3Moc2VsZiwgSEZsYWdzLCBMRmxhZ3MpOg0KPiA+DQo+ID4gKyAgICAgICAgUmV0dXJuQ29kZSA9 IElmclF1ZXN0aW9uSGVhZGVyLlNldEZsYWdzKHNlbGYsIEhGbGFncykNCj4gPg0KPiA+ICsgICAg ICAgIGlmIFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1M6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFJldHVybkNvZGUNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIExGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoTEZsYWdzLA0K PiA+IFFGX1RJTUVfSE9VUl9TVVBQUkVTUykNCj4gPg0KPiA+ICsgICAgICAgIGlmIFJldDoNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLlRpbWUuRmxhZ3MgfD0gUUZfVElNRV9IT1VSX1NVUFBS RVNTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBMRmxhZ3MsIFJldCA9IF9GTEFHX1RF U1RfQU5EX0NMRUFSKExGbGFncywNCj4gPiBRRl9USU1FX01JTlVURV9TVVBQUkVTUykNCj4gPg0K PiA+ICsgICAgICAgIGlmIFJldDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlRpbWUuRmxh Z3MgfD0gUUZfVElNRV9NSU5VVEVfU1VQUFJFU1MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIExGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoTEZsYWdzLA0KPiA+IFFGX1RJ TUVfU0VDT05EX1NVUFBSRVNTKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgUmV0Og0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuVGltZS5GbGFncyB8PSBRRl9USU1FX1NFQ09ORF9TVVBQUkVTUw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FO RF9DTEVBUihMRmxhZ3MsDQo+ID4gUUZfVElNRV9TVE9SQUdFX05PUk1BTCkNCj4gPg0KPiA+ICsg ICAgICAgIGlmIFJldDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlRpbWUuRmxhZ3MgfD0g UUZfVElNRV9TVE9SQUdFX05PUk1BTA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgTEZs YWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVBUihMRmxhZ3MsDQo+ID4gUUZfVElNRV9TVE9S QUdFX1RJTUUpDQo+ID4NCj4gPiArICAgICAgICBpZiBSZXQ6DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5UaW1lLkZsYWdzIHw9IFFGX1RJTUVfU1RPUkFHRV9USU1FDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBMRmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFSKExGbGFn cywNCj4gPiBRRl9USU1FX1NUT1JBR0VfV0FLRVVQKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgUmV0 Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuVGltZS5GbGFncyB8PSBRRl9USU1FX1NUT1JB R0VfV0FLRVVQDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gKA0KPiA+DQo+ ID4gKyAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgTEZsYWdzID09IDANCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNl IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GTEFHU19VTlNVUFBPUlRFRA0KPiA+DQo+ID4gKyAg ICAgICAgKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIElmck51bWVy aWMoSWZyTGluZSwgSWZyQmFzZUluZm8sIElmck9wSGVhZGVyLCBJZnJRdWVzdGlvbkhlYWRlciwN Cj4gPiBJZnJNaW5NYXhTdGVwRGF0YSk6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxm LCBUeXBlLCBRTmFtZT1Ob25lLCBWYXJJZFN0cj0iIik6DQo+ID4NCj4gPiArICAgICAgICBzZWxm Lk51bWVyaWMgPSBSZWZpbmVfRUZJX0lGUl9OVU1FUklDKFR5cGUpDQo+ID4NCj4gPiArICAgICAg ICBJZnJCYXNlSW5mby5fX2luaXRfXyhzZWxmLCBzZWxmLk51bWVyaWMsIFFOYW1lLCBWYXJJZFN0 cikNCj4gPg0KPiA+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuTnVt ZXJpYy5IZWFkZXIsIEVGSV9JRlJfTlVNRVJJQ19PUCwNCj4gPiBzaXplb2Yoc2VsZi5OdW1lcmlj KSkNCj4gPg0KPiA+ICsgICAgICAgIElmclF1ZXN0aW9uSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNl bGYuTnVtZXJpYy5RdWVzdGlvbikNCj4gPg0KPiA+ICsgICAgICAgIElmck1pbk1heFN0ZXBEYXRh Ll9faW5pdF9fKHNlbGYsIHNlbGYuTnVtZXJpYy5EYXRhLCBUcnVlKQ0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5OdW1lcmljLkZsYWdzID0gRUZJX0lGUl9OVU1FUklDX1NJWkVfMSB8DQo+ID4gRUZJ X0lGUl9ESVNQTEFZX1VJTlRfREVDDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxm Lkhhc1N0ZXAgPSBGYWxzZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0UXVlc3Rp b24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBkZWYgR2V0TWluTWF4RGF0YShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJl dHVybiBzZWxmDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRRSGVhZGVyRmxhZ3Mo c2VsZiwgRmxhZ3MpOg0KPiA+DQo+ID4gKyAgICAgICAgSWZyUXVlc3Rpb25IZWFkZXIuU2V0Rmxh Z3Moc2VsZiwgRmxhZ3MpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRGbGFncyhz ZWxmLCBIRmxhZ3MsIExGbGFncywgRGlzcGxheVNldHRpbmdzU3BlY2lmaWVkPUZhbHNlKToNCj4g Pg0KPiA+ICsgICAgICAgIFJldHVybkNvZGUgPSBJZnJRdWVzdGlvbkhlYWRlci5TZXRGbGFncyhz ZWxmLCBIRmxhZ3MpDQo+ID4NCj4gPiArICAgICAgICBpZiBSZXR1cm5Db2RlICE9IFZmclJldHVy bkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBS ZXR1cm5Db2RlDQo+ID4NCj4gPiArICAgICAgICBpZiBEaXNwbGF5U2V0dGluZ3NTcGVjaWZpZWQg PT0gRmFsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5OdW1lcmljLkZsYWdzID0gTEZs YWdzIHwgRUZJX0lGUl9ESVNQTEFZX1VJTlRfREVDDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTnVtZXJpYy5GbGFncyA9IExGbGFncw0KPiA+DQo+ ID4gKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRGbGFnc0ZvckJpdEZpZWxkKHNlbGYsIEhGbGFn cywgTEZsYWdzLA0KPiBEaXNwbGF5U2V0dGluZ3NTcGVjaWZpZWQ9RmFsc2UpOg0KPiA+DQo+ID4g KyAgICAgICAgUmV0dXJuQ29kZSA9IElmclF1ZXN0aW9uSGVhZGVyLlNldEZsYWdzKHNlbGYsIEhG bGFncykNCj4gPg0KPiA+ICsgICAgICAgIGlmIFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5W RlJfUkVUVVJOX1NVQ0NFU1M6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFJldHVybkNv ZGUNCj4gPg0KPiA+ICsgICAgICAgIGlmIERpc3BsYXlTZXR0aW5nc1NwZWNpZmllZCA9PSBGYWxz ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk51bWVyaWMuRmxhZ3MgPSBMRmxhZ3MgfCBF REtJSV9JRlJfRElTUExBWV9VSU5UX0RFQ19CSVQNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5OdW1lcmljLkZsYWdzID0gTEZsYWdzDQo+ID4NCj4g PiArICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldE51bWVyaWNGbGFncyhzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBzZWxmLk51bWVyaWMuRmxhZ3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgZGVmIFNldEhhc1N0ZXAoc2VsZiwgSGFzU3RlcCk6DQo+ID4NCj4gPiArICAgICAgICBz ZWxmLkhhc1N0ZXAgPSBIYXNTdGVwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr Y2xhc3MgSWZyT25lT2YoSWZyUXVlc3Rpb25IZWFkZXIsIElmckxpbmUsIElmckJhc2VJbmZvLCBJ ZnJPcEhlYWRlciwNCj4gPiBJZnJNaW5NYXhTdGVwRGF0YSk6DQo+ID4NCj4gPiArICAgIGRlZiBf X2luaXRfXyhzZWxmLCBUeXBlLCBRTmFtZT1Ob25lLCBWYXJJZFN0cj0iIik6DQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLk9uZU9mID0gUmVmaW5lX0VGSV9JRlJfT05FX09GKFR5cGUpDQo+ID4NCj4g PiArICAgICAgICBJZnJCYXNlSW5mby5fX2luaXRfXyhzZWxmLCBzZWxmLk9uZU9mLCBRTmFtZSwg VmFySWRTdHIpDQo+ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBz ZWxmLk9uZU9mLkhlYWRlciwgRUZJX0lGUl9PTkVfT0ZfT1AsDQo+ID4gc2l6ZW9mKHNlbGYuT25l T2YpKQ0KPiA+DQo+ID4gKyAgICAgICAgSWZyUXVlc3Rpb25IZWFkZXIuX19pbml0X18oc2VsZiwg c2VsZi5PbmVPZi5RdWVzdGlvbikNCj4gPg0KPiA+ICsgICAgICAgIElmck1pbk1heFN0ZXBEYXRh Ll9faW5pdF9fKHNlbGYsIHNlbGYuT25lT2YuRGF0YSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu T25lT2YuRmxhZ3MgPSAwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkhhc01p bk1heCA9IEZhbHNlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkhhc1N0ZXAg PSBGYWxzZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0UXVlc3Rpb24oc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBkZWYgR2V0TWluTWF4RGF0YShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxm DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRRSGVhZGVyRmxhZ3Moc2VsZiwgRmxh Z3MpOg0KPiA+DQo+ID4gKyAgICAgICAgSWZyUXVlc3Rpb25IZWFkZXIuU2V0RmxhZ3Moc2VsZiwg RmxhZ3MpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRGbGFncyhzZWxmLCBIRmxh Z3MsIExGbGFncyk6DQo+ID4NCj4gPiArICAgICAgICBSZXR1cm5Db2RlID0gSWZyUXVlc3Rpb25I ZWFkZXIuU2V0RmxhZ3Moc2VsZiwgSEZsYWdzKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgUmV0dXJu Q29kZSAhPSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gUmV0dXJuQ29kZQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgTEZsYWdzICYg RUZJX0lGUl9ESVNQTEFZOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuT25lT2YuRmxhZ3Mg PSBMRmxhZ3MNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5PbmVPZi5GbGFncyA9IExGbGFncyB8IEVGSV9JRlJfRElTUExBWV9VSU5UX0RFQw0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRGbGFnc0ZvckJpdEZpZWxkKHNlbGYsIEhG bGFncywgTEZsYWdzKToNCj4gPg0KPiA+ICsgICAgICAgIFJldHVybkNvZGUgPSBJZnJRdWVzdGlv bkhlYWRlci5TZXRGbGFncyhzZWxmLCBIRmxhZ3MpDQo+ID4NCj4gPiArICAgICAgICBpZiBSZXR1 cm5Db2RlICE9IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBSZXR1cm5Db2RlDQo+ID4NCj4gPiArICAgICAgICBpZiBMRmxhZ3Mg JiBFREtJSV9JRlJfRElTUExBWV9CSVQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5PbmVP Zi5GbGFncyA9IExGbGFncw0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLk9uZU9mLkZsYWdzID0gTEZsYWdzIHwgRURLSUlfSUZSX0RJU1BMQVlfVUlO VF9ERUNfQklUDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX1NVQ0NFU1MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldEhhc01pbk1heChz ZWxmLCBIYXNNaW5NYXgpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5IYXNNaW5NYXggPSBIYXNN aW5NYXgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldEhhc1N0ZXAoc2VsZiwgSGFz U3RlcCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkhhc1N0ZXAgPSBIYXNTdGVwDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgSWZyQ2hlY2tCb3goSWZyTGluZSwgSWZy QmFzZUluZm8sIElmck9wSGVhZGVyLCBJZnJRdWVzdGlvbkhlYWRlcik6DQo+ID4NCj4gPiArICAg IGRlZiBfX2luaXRfXyhzZWxmLCBRTmFtZT1Ob25lLCBWYXJJZFN0cj0iIik6DQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLkNoZWNrQm94ID0gRUZJX0lGUl9DSEVDS0JPWCgpDQo+ID4NCj4gPiArICAg ICAgICBJZnJCYXNlSW5mby5fX2luaXRfXyhzZWxmLCBzZWxmLkNoZWNrQm94LCBRTmFtZSwgVmFy SWRTdHIpDQo+ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxm LkNoZWNrQm94LkhlYWRlciwNCj4gPiBFRklfSUZSX0NIRUNLQk9YX09QKQ0KPiA+DQo+ID4gKyAg ICAgICAgSWZyUXVlc3Rpb25IZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5DaGVja0JveC5RdWVz dGlvbikNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuQ2hlY2tCb3guRmxhZ3MgPSAwDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRRdWVzdGlvbihzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBzZWxmDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRRSGVhZGVy RmxhZ3Moc2VsZiwgRmxhZ3MpOg0KPiA+DQo+ID4gKyAgICAgICAgSWZyUXVlc3Rpb25IZWFkZXIu U2V0RmxhZ3Moc2VsZiwgRmxhZ3MpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRG bGFncyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLkNoZWNrQm94LkZsYWdz DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRGbGFncyhzZWxmLCBIRmxhZ3MsIExG bGFncyk6DQo+ID4NCj4gPiArICAgICAgICBSZXR1cm5Db2RlID0gSWZyUXVlc3Rpb25IZWFkZXIu U2V0RmxhZ3Moc2VsZiwgSEZsYWdzKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgUmV0dXJuQ29kZSAh PSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gUmV0dXJuQ29kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgTEZsYWdz LCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVBUihMRmxhZ3MsDQo+ID4gRUZJX0lGUl9DSEVDS0JP WF9ERUZBVUxUKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgUmV0Og0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuQ2hlY2tCb3guRmxhZ3MgfD0gRUZJX0lGUl9DSEVDS0JPWF9ERUZBVUxUDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBMRmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NM RUFSKExGbGFncywNCj4gPiBFRklfSUZSX0NIRUNLQk9YX0RFRkFVTFRfTUZHKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgaWYgUmV0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu Q2hlY2tCb3guRmxhZ3MgfD0gRUZJX0lGUl9DSEVDS0JPWF9ERUZBVUxUX01GRw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuICgNCj4gPg0KPiA+ICsgICAgICAgICAgICBWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIExG bGFncyA9PSAwDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZSBWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fRkxBR1NfVU5TVVBQT1JURUQNCj4gPg0KPiA+ICsgICAgICAgICkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJSZXNldEJ1dHRvbihJZnJMaW5lLCBJZnJP cEhlYWRlciwgSWZyU3RhdGVtZW50SGVhZGVyKToNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9f KHNlbGYsIERlZmF1bHRTdG9yZT1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUmVzZXRC dXR0b24gPSBFRklfSUZSX1JFU0VUX0JVVFRPTigpDQo+ID4NCj4gPiArICAgICAgICBJZnJPcEhl YWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlJlc2V0QnV0dG9uLkhlYWRlciwNCj4gPiBFRklfSUZS X1JFU0VUX0JVVFRPTl9PUCkNCj4gPg0KPiA+ICsgICAgICAgIElmclN0YXRlbWVudEhlYWRlci5f X2luaXRfXyhzZWxmLCBzZWxmLlJlc2V0QnV0dG9uLlN0YXRlbWVudCkNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuUmVzZXRCdXR0b24uRGVmYXVsdElkID0gRUZJX0hJSV9ERUZBVUxUX0NMQVNTX1NU QU5EQVJEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkRlZmF1bHRTdG9yZSA9 IERlZmF1bHRTdG9yZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0RGVmYXVsdElk KHNlbGYsIERlZmF1bHRJZCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlJlc2V0QnV0dG9uLkRl ZmF1bHRJZCA9IERlZmF1bHRJZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0RGVm YXVsdFN0b3JlKHNlbGYsIERlZmF1bHRTdG9yZSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkRl ZmF1bHRTdG9yZSA9IERlZmF1bHRTdG9yZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYg R2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLlJlc2V0QnV0dG9u DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgSWZyT3IoSWZyTGluZSwg SWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuT3IgPSBFRklfSUZSX09SKCkNCj4gPg0KPiA+ICsgICAg ICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuT3IuSGVhZGVyLCBFRklfSUZSX09S X09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJl dHVybiBzZWxmLk9yDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgSWZy QW5kKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNl bGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkFuZCA9IEVGSV9JRlJfQU5EKCkN Cj4gPg0KPiA+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuQW5kLkhl YWRlciwgRUZJX0lGUl9BTkRfT1ApDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNldExpbmVObyhM aW5lTm8pDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuQW5kDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArY2xhc3MgSWZyQml0V2lzZU9yKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gPg0K PiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBz ZWxmLkJpdFdpc2VPciA9IEVGSV9JRlJfQklUV0lTRV9PUigpDQo+ID4NCj4gPiArICAgICAgICBJ ZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLkJpdFdpc2VPci5IZWFkZXIsDQo+ID4gRUZJ X0lGUl9CSVRXSVNFX09SX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGlu ZU5vKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgIHJldHVybiBzZWxmLkJpdFdpc2VPcg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gK2NsYXNzIElmckNhdGVuYXRlKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4g Pg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAg ICBzZWxmLkNhdGVuYXRlID0gRUZJX0lGUl9DQVRFTkFURSgpDQo+ID4NCj4gPiArICAgICAgICBJ ZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLkNhdGVuYXRlLkhlYWRlciwNCj4gRUZJX0lG Ul9DQVRFTkFURV9PUCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICByZXR1cm4gc2VsZi5DYXRlbmF0ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gK2NsYXNzIElmckRpdmlkZShJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiAr ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5E aXZpZGUgPSBFRklfSUZSX0RJVklERSgpDQo+ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRlci5f X2luaXRfXyhzZWxmLCBzZWxmLkRpdmlkZS5IZWFkZXIsIEVGSV9JRlJfRElWSURFX09QKQ0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxm LkRpdmlkZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIElmckVxdWFs KElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYs IExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkVxdWFsID0gRUZJX0lGUl9FUVVBTCgp DQo+ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLkVxdWFs LkhlYWRlciwgRUZJX0lGUl9FUVVBTF9PUCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2V0TGlu ZU5vKExpbmVObykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5FcXVhbA0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gK2NsYXNzIElmckdyZWF0ZXJFcXVhbChJZnJMaW5lLCBJZnJPcEhlYWRl cik6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5HcmVhdGVyRXF1YWwgPSBFRklfSUZSX0dSRUFURVJfRVFVQUwoKQ0KPiA+ DQo+ID4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5HcmVhdGVyRXF1 YWwuSGVhZGVyLA0KPiA+IEVGSV9JRlJfR1JFQVRFUl9FUVVBTF9PUCkNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVm IEdldEluZm8oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5HcmVhdGVyRXF1 YWwNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJHcmVhdGVyVGhh bihJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxm LCBMaW5lTm8pOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5HcmVhdGVyVGhhbiA9IEVGSV9JRlJf R1JFQVRFUl9USEFOKCkNCj4gPg0KPiA+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNl bGYsIHNlbGYuR3JlYXRlclRoYW4uSGVhZGVyLA0KPiA+IEVGSV9JRlJfR1JFQVRFUl9USEFOX09Q KQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVy biBzZWxmLkdyZWF0ZXJUaGFuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xh c3MgSWZyTGVzc0VxdWFsKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsgICAgZGVm IF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkxlc3NFcXVh bCA9IEVGSV9JRlJfTEVTU19FUVVBTCgpDQo+ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRlci5f X2luaXRfXyhzZWxmLCBzZWxmLkxlc3NFcXVhbC5IZWFkZXIsDQo+ID4gRUZJX0lGUl9MRVNTX0VR VUFMX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg IHJldHVybiBzZWxmLkxlc3NFcXVhbA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g K2NsYXNzIElmckxlc3NUaGFuKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsgICAg ZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkxlc3NU aGFuID0gRUZJX0lGUl9MRVNTX1RIQU4oKQ0KPiA+DQo+ID4gKyAgICAgICAgSWZyT3BIZWFkZXIu X19pbml0X18oc2VsZiwgc2VsZi5MZXNzVGhhbi5IZWFkZXIsDQo+ID4gRUZJX0lGUl9MRVNTX1RI QU5fT1ApDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg cmV0dXJuIHNlbGYuTGVzc1RoYW4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtj bGFzcyBJZnJNYXAoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKyAgICBkZWYgX19p bml0X18oc2VsZiwgTGluZU5vKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuTWFwID0gRUZJX0lG Ul9NQVAoKQ0KPiA+DQo+ID4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2Vs Zi5NYXAuSGVhZGVyLCBFRklfSUZSX01BUF9PUCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2V0 TGluZU5vKExpbmVObykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8oc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5NYXANCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJNYXRjaChJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+ ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5NYXRjaCA9IEVGSV9JRlJfTUFUQ0goKQ0KPiA+DQo+ID4gKyAgICAgICAgSWZyT3BI ZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5NYXRjaC5IZWFkZXIsIEVGSV9JRlJfTUFUQ0hfT1Ap DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJu IHNlbGYuTWF0Y2gNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJN YXRjaDIoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18o c2VsZiwgTGluZU5vLCBHdWlkKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuTWF0Y2gyID0gRUZJ X0lGUl9NQVRDSDIoKQ0KPiA+DQo+ID4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oc2Vs Ziwgc2VsZi5NYXRjaDIuSGVhZGVyLCBFRklfSUZSX01BVENIMl9PUCkNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuTWF0Y2gy LlN5bnRheFR5cGUgPSBHdWlkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZv KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuTWF0Y2gyDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgSWZyTXVsdGlwbHkoSWZyTGluZSwgSWZyT3BI ZWFkZXIpOg0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuTXVsdGlwbHkgPSBFRklfSUZSX01VTFRJUExZKCkNCj4gPg0KPiA+ ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuTXVsdGlwbHkuSGVhZGVy LCBFRklfSUZSX01VTFRJUExZX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8o TGluZU5vKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLk11bHRpcGx5DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArY2xhc3MgSWZyTW9kdWxvKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4g Pg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAg ICBzZWxmLk1vZHVsbyA9IEVGSV9JRlJfTU9EVUxPKCkNCj4gPg0KPiA+ICsgICAgICAgIElmck9w SGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuTW9kdWxvLkhlYWRlciwgRUZJX0lGUl9NT0RVTE9f T1ApDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0 dXJuIHNlbGYuTW9kdWxvDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3Mg SWZyTm90RXF1YWwoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKyAgICBkZWYgX19p bml0X18oc2VsZiwgTGluZU5vKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuTm90RXF1YWwgPSBF RklfSUZSX05PVF9FUVVBTCgpDQo+ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRf XyhzZWxmLCBzZWxmLk5vdEVxdWFsLkhlYWRlciwNCj4gPiBFRklfSUZSX05PVF9FUVVBTF9PUCkN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g c2VsZi5Ob3RFcXVhbA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIElm clNoaWZ0TGVmdChJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBMaW5lTm8pOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TaGlmdExlZnQgPSBF RklfSUZSX1NISUZUX0xFRlQoKQ0KPiA+DQo+ID4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0 X18oc2VsZiwgc2VsZi5TaGlmdExlZnQuSGVhZGVyLA0KPiBFRklfSUZSX1NISUZUX0xFRlRfT1Ap DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJu IHNlbGYuU2hpZnRMZWZ0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3Mg SWZyU2hpZnRSaWdodChJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArICAgIGRlZiBf X2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TaGlmdFJpZ2h0 ID0gRUZJX0lGUl9TSElGVF9SSUdIVCgpDQo+ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRlci5f X2luaXRfXyhzZWxmLCBzZWxmLlNoaWZ0UmlnaHQuSGVhZGVyLA0KPiA+IEVGSV9JRlJfU0hJRlRf UklHSFRfT1ApDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgcmV0dXJuIHNlbGYuU2hpZnRSaWdodA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gK2NsYXNzIElmclN1YnRyYWN0KElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsg ICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlN1 YnRyYWN0ID0gRUZJX0lGUl9TVUJUUkFDVCgpDQo+ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRl ci5fX2luaXRfXyhzZWxmLCBzZWxmLlN1YnRyYWN0LkhlYWRlciwNCj4gRUZJX0lGUl9TVUJUUkFD VF9PUCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICBy ZXR1cm4gc2VsZi5TdWJ0cmFjdA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2Ns YXNzIElmckNvbmRpdGlvbmFsKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsgICAg ZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkNvbmRp dGlvbmFsID0gRUZJX0lGUl9DT05ESVRJT05BTCgpDQo+ID4NCj4gPiArICAgICAgICBJZnJPcEhl YWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLkNvbmRpdGlvbmFsLkhlYWRlciwNCj4gPiBFRklfSUZS X0NPTkRJVElPTkFMX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5v KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBzZWxmLkNvbmRpdGlvbmFsDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArY2xhc3MgSWZyRmluZChJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+ID4NCj4g PiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5GaW5kID0gRUZJX0lGUl9GSU5EKCkNCj4gPg0KPiA+ICsgICAgICAgIElmck9wSGVhZGVyLl9f aW5pdF9fKHNlbGYsIHNlbGYuRmluZC5IZWFkZXIsIEVGSV9JRlJfRklORF9PUCkNCj4gPg0KPiA+ ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgZGVmIFNldEZvcm1hdChzZWxmLCBGb3JtYXQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5G aW5kLkZvcm1hdCA9IEZvcm1hdA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SW5m byhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLkZpbmQNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJNaWQoSWZyTGluZSwgSWZyT3BIZWFkZXIp Og0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gPg0KPiA+ICsg ICAgICAgIHNlbGYuTWlkID0gRUZJX0lGUl9NSUQoKQ0KPiA+DQo+ID4gKyAgICAgICAgSWZyT3BI ZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5NaWQuSGVhZGVyLCBFRklfSUZSX01JRF9PUCkNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2Vs Zi5NaWQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJUb2tlbihJ ZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBM aW5lTm8pOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5Ub2tlbiA9IEVGSV9JRlJfVE9LRU4oKQ0K PiA+DQo+ID4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5Ub2tlbi5I ZWFkZXIsIEVGSV9JRlJfVE9LRU5fT1ApDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNldExpbmVO byhMaW5lTm8pDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuVG9rZW4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJTcGFuKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gPg0K PiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBz ZWxmLlNwYW4gPSBFRklfSUZSX1NQQU4oKQ0KPiA+DQo+ID4gKyAgICAgICAgSWZyT3BIZWFkZXIu X19pbml0X18oc2VsZiwgc2VsZi5TcGFuLkhlYWRlciwgRUZJX0lGUl9TUEFOX09QKQ0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5TcGFuLkZsYWdzID0gRUZJX0lGUl9GTEFHU19GSVJTVF9NQVRDSElORw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgU2V0RmxhZ3Moc2VsZiwgTEZsYWdzKToNCj4gPg0KPiA+ICsgICAg ICAgIGlmIExGbGFncyA9PSBFRklfSUZSX0ZMQUdTX0ZJUlNUX01BVENISU5HOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuU3Bhbi5GbGFncyB8PSBFRklfSUZSX0ZMQUdTX0ZJUlNUX01BVENI SU5HDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIExGbGFn cywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoTEZsYWdzLA0KPiA+IEVGSV9JRlJfRkxBR1Nf RklSU1RfTk9OX01BVENISU5HKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIFJldDoNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5TcGFuLkZsYWdzIHw9IEVGSV9JRlJfRkxBR1NfRklS U1RfTk9OX01BVENISU5HDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gKA0K PiA+DQo+ID4gKyAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgTEZsYWdzID09IDANCj4gPg0KPiA+ICsgICAgICAgICAg ICBlbHNlIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GTEFHU19VTlNVUFBPUlRFRA0KPiA+DQo+ ID4gKyAgICAgICAgKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SW5mbyhzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLlNwYW4NCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJCaXRXaXNlQW5kKElmckxpbmUsIElmck9wSGVhZGVy KToNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLkJpdFdpc2VBbmQgPSBFRklfSUZSX0JJVFdJU0VfQU5EKCkNCj4gPg0KPiA+ ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuQml0V2lzZUFuZC5IZWFk ZXIsDQo+ID4gRUZJX0lGUl9CSVRXSVNFX0FORF9PUCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu U2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8o c2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5CaXRXaXNlQW5kDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgSWZyQWRkKElmckxpbmUsIElmck9wSGVh ZGVyKToNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4g PiArICAgICAgICBzZWxmLkFkZCA9IEVGSV9JRlJfQUREKCkNCj4gPg0KPiA+ICsgICAgICAgIElm ck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuQWRkLkhlYWRlciwgRUZJX0lGUl9BRERfT1Ap DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJu IHNlbGYuQWRkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgSWZyVG9T dHJpbmcoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18o c2VsZiwgTGluZU5vKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuVG9TdHJpbmcgPSBFRklfSUZS X1RPX1NUUklORygpDQo+ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxm LCBzZWxmLlRvU3RyaW5nLkhlYWRlciwNCj4gRUZJX0lGUl9UT19TVFJJTkdfT1ApDQo+ID4NCj4g PiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiBTZXRGb3JtYXQoc2VsZiwgRm9ybWF0KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu VG9TdHJpbmcuRm9ybWF0ID0gRm9ybWF0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBH ZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuVG9TdHJpbmcNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJUb1VwcGVyKElmckxpbmUs IElmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6 DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlRvVXBwcGVyID0gRUZJX0lGUl9UT19VUFBFUigpDQo+ ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlRvVXBwcGVy LkhlYWRlciwNCj4gPiBFRklfSUZSX1RPX1VQUEVSX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5TZXRMaW5lTm8oTGluZU5vKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SW5m byhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLlRvVXBwcGVyDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgSWZyVG9VaW50KElmckxpbmUsIElmck9w SGVhZGVyKToNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4N Cj4gPiArICAgICAgICBzZWxmLlRvVWludCA9IEVGSV9JRlJfVE9fVUlOVCgpDQo+ID4NCj4gPiAr ICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlRvVWludC5IZWFkZXIsIEVG SV9JRlJfVE9fVUlOVF9PUCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVO bykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+ID4NCj4g PiArICAgICAgICByZXR1cm4gc2VsZi5Ub1VpbnQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICtjbGFzcyBJZnJUb0xvd2VyKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gPg0KPiA+ ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxm LlRvTG93ZXIgPSBFRklfSUZSX1RPX0xPV0VSKCkNCj4gPg0KPiA+ICsgICAgICAgIElmck9wSGVh ZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuVG9Mb3dlci5IZWFkZXIsDQo+IEVGSV9JRlJfVE9fTE9X RVJfT1ApDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg cmV0dXJuIHNlbGYuVG9Mb3dlcg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2Ns YXNzIElmclRvQm9vbGVhbihJZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5Cb29sZWFu ID0gRUZJX0lGUl9UT19CT09MRUFOKCkNCj4gPg0KPiA+ICsgICAgICAgIElmck9wSGVhZGVyLl9f aW5pdF9fKHNlbGYsIHNlbGYuQm9vbGVhbi5IZWFkZXIsDQo+ID4gRUZJX0lGUl9UT19CT09MRUFO X09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJl dHVybiBzZWxmLkJvb2xlYW4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFz cyBJZnJOb3QoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0 X18oc2VsZiwgTGluZU5vKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuTm90ID0gRUZJX0lGUl9O T1QoKQ0KPiA+DQo+ID4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5O b3QuSGVhZGVyLCBFRklfSUZSX05PVF9PUCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2V0TGlu ZU5vKExpbmVObykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5Ob3QNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJEdXAoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiA+DQo+ ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuRHVwID0gRUZJX0lGUl9EVVAoKQ0KPiA+DQo+ID4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19p bml0X18oc2VsZiwgc2VsZi5EdXAuSGVhZGVyLCBFRklfSUZSX0RVUF9PUCkNCj4gPg0KPiA+ICsg ICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIEdldEhlYWRlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLkR1cC5I ZWFkZXINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICByZXR1cm4gc2VsZi5EdXANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICtjbGFzcyBJZnJFcUlkSWQoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4g KyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu RXFJZElkID0gRUZJX0lGUl9FUV9JRF9JRCgpDQo+ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRl ci5fX2luaXRfXyhzZWxmLCBzZWxmLkVxSWRJZC5IZWFkZXIsIEVGSV9JRlJfRVFfSURfSURfT1Ap DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLkVxSWRJZC5RdWVzdGlvbklkMSA9IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLkVxSWRJZC5RdWVzdGlvbklkMiA9IEVGSV9RVUVTVElPTl9J RF9JTlZBTElEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5FcUlkSWQuSGVhZGVyDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiBTZXRRdWVzdGlvbklkMShzZWxmLCBRdWVzdGlvbklkLCBWYXJJ ZFN0ciwgTGluZU5vKToNCj4gPg0KPiA+ICsgICAgICAgIGlmIFF1ZXN0aW9uSWQgIT0gRUZJX1FV RVNUSU9OX0lEX0lOVkFMSUQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FcUlkSWQuUXVl c3Rpb25JZDEgPSBRdWVzdGlvbklkDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGdGb3JtUGtnLkFzc2lnblBlbmRpbmcoVmFySWRTdHIsIHNlbGYuRXFJZElk LCBMaW5lTm8sICJubyBxdWVzdGlvbg0KPiA+IHJlZmVyZWQiLCAxKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBkZWYgU2V0UXVlc3Rpb25JZDIoc2VsZiwgUXVlc3Rpb25JZCwgVmFySWRTdHIs IExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBpZiBRdWVzdGlvbklkICE9IEVGSV9RVUVTVElP Tl9JRF9JTlZBTElEOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXFJZElkLlF1ZXN0aW9u SWQyID0gUXVlc3Rpb25JZA0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBnRm9ybVBrZy5Bc3NpZ25QZW5kaW5nKFZhcklkU3RyLCBzZWxmLkVxSWRJZCwgTGlu ZU5vLCAibm8gcXVlc3Rpb24NCj4gPiByZWZlcmVkIiwgMikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5F cUlkSWQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJFcUlkVmFs KElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYs IExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkVxSWRWYWwgPSBFRklfSUZSX0VRX0lE X1ZBTCgpDQo+ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxm LkVxSWRWYWwuSGVhZGVyLA0KPiBFRklfSUZSX0VRX0lEX1ZBTF9PUCkNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuRXFJZFZh bC5RdWVzdGlvbklkID0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIFNldFF1ZXN0aW9uSWQoc2VsZiwgUXVlc3Rpb25JZCwgVmFySWRTdHIsIExp bmVObyk6DQo+ID4NCj4gPiArICAgICAgICBpZiBRdWVzdGlvbklkICE9IEVGSV9RVUVTVElPTl9J RF9JTlZBTElEOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXFJZFZhbC5RdWVzdGlvbklk ID0gUXVlc3Rpb25JZA0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBnRm9ybVBrZy5Bc3NpZ25QZW5kaW5nKFZhcklkU3RyLCBzZWxmLkVxSWRWYWwsIExpbmVO bywgIm5vIHF1ZXN0aW9uDQo+ID4gcmVmZXJlZCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiBTZXRWYWx1ZShzZWxmLCBWYWx1ZSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkVxSWRW YWwuVmFsdWUgPSBWYWx1ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SGVhZGVy KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuRXFJZFZhbC5IZWFkZXINCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICByZXR1cm4gc2VsZi5FcUlkVmFsDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArY2xhc3MgSWZyRXFJZExpc3QoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKyAg ICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vLCBOdW1zLCBWYWx1ZUxpc3Q9Tm9uZSk6DQo+ID4N Cj4gPiArICAgICAgICBzZWxmLkVxSWRWTGlzdCA9IFJlZmluZV9FRklfSUZSX0VRX0lEX1ZBTF9M SVNUKE51bXMpDQo+ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXygNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLCBzZWxmLkVxSWRWTGlzdC5IZWFkZXIsIEVGSV9JRlJfRVFf SURfVkFMX0xJU1RfT1AsDQo+ID4gc2l6ZW9mKHNlbGYuRXFJZFZMaXN0KQ0KPiA+DQo+ID4gKyAg ICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5FcUlkVkxpc3QuUXVlc3Rpb25JZCA9IEVGSV9RVUVTVElPTl9JRF9J TlZBTElEDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkVxSWRWTGlzdC5MaXN0TGVuZ3RoID0gMA0K PiA+DQo+ID4gKyAgICAgICAgaWYgVmFsdWVMaXN0IGlzIG5vdCBOb25lIGFuZCBWYWx1ZUxpc3Qg IT0gW106DQo+ID4NCj4gPiArICAgICAgICAgICAgQXJyYXlUeXBlID0gY191aW50MTYgKiBOdW1z DQo+ID4NCj4gPiArICAgICAgICAgICAgVmFsdWVBcnJheSA9IEFycmF5VHlwZSgpDQo+ID4NCj4g PiArICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKFZhbHVlTGlzdCkpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBWYWx1ZUFycmF5W2ldID0gVmFsdWVMaXN0W2ldDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5FcUlkVkxpc3QuVmFsdWVMaXN0ID0gVmFsdWVBcnJheQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0UXVlc3Rpb25JZChzZWxmLCBRdWVzdGlvbklk LCBWYXJJZFN0ciwgTGluZU5vKToNCj4gPg0KPiA+ICsgICAgICAgIGlmIFF1ZXN0aW9uSWQgIT0g RUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FcUlk Vkxpc3QuUXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ ID4NCj4gPiArICAgICAgICAgICAgZ0Zvcm1Qa2cuQXNzaWduUGVuZGluZyhWYXJJZFN0ciwgc2Vs Zi5FcUlkVkxpc3QsIExpbmVObywgIm5vDQo+IHF1ZXN0aW9uDQo+ID4gcmVmZXJlZCIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRMaXN0TGVuZ3RoKHNlbGYsIExpc3RMZW5ndGgp Og0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5FcUlkVkxpc3QuTGlzdExlbmd0aCA9IExpc3RMZW5n dGgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldFZhbHVlTGlzdChzZWxmLCBWYWx1 ZUxpc3QpOg0KPiA+DQo+ID4gKyAgICAgICAgaWYgVmFsdWVMaXN0ICE9IFtdOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIEFycmF5VHlwZSA9IGNfdWludDE2ICogbGVuKFZhbHVlTGlzdCkNCj4gPg0K PiA+ICsgICAgICAgICAgICBWYWx1ZUFycmF5ID0gQXJyYXlUeXBlKCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oVmFsdWVMaXN0KSk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIFZhbHVlQXJyYXlbaV0gPSBWYWx1ZUxpc3RbaV0NCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLkVxSWRWTGlzdC5WYWx1ZUxpc3QgPSBWYWx1ZUFycmF5DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICBy ZXR1cm4gc2VsZi5FcUlkVkxpc3QuSGVhZGVyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuRXFJZFZMaXN0 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgSWZyVWludDgoSWZyTGlu ZSwgSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5v KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuVWludDggPSBFRklfSUZSX1VJTlQ4KCkNCj4gPg0K PiA+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuVWludDguSGVhZGVy LCBFRklfSUZSX1VJTlQ4X09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGlu ZU5vKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0VmFsdWUoc2VsZiwgVmFsdWUp Og0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5VaW50OC5WYWx1ZSA9IFZhbHVlDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICBy ZXR1cm4gc2VsZi5VaW50OC5IZWFkZXINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdl dEluZm8oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5VaW50OA0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIElmclVpbnQxNihJZnJMaW5lLCBJZnJP cEhlYWRlcik6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5VaW50MTYgPSBFRklfSUZSX1VJTlQxNigpDQo+ID4NCj4gPiAr ICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlVpbnQxNi5IZWFkZXIsIEVG SV9JRlJfVUlOVDE2X09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5v KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0VmFsdWUoc2VsZiwgVmFsdWUpOg0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5VaW50MTYuVmFsdWUgPSBWYWx1ZQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0 dXJuIHNlbGYuVWludDE2LkhlYWRlcg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0 SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLlVpbnQxNg0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIElmclVpbnQzMihJZnJMaW5lLCBJZnJP cEhlYWRlcik6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5VaW50MzIgPSBFRklfSUZSX1VJTlQzMigpDQo+ID4NCj4gPiAr ICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlVpbnQzMi5IZWFkZXIsIEVG SV9JRlJfVUlOVDMyX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5v KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0VmFsdWUoc2VsZiwgVmFsdWUpOg0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5VaW50MzIuVmFsdWUgPSBWYWx1ZQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0 dXJuIHNlbGYuVWludDMyLkhlYWRlcg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0 SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLlVpbnQzMg0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIElmclVpbnQ2NChJZnJMaW5lLCBJZnJP cEhlYWRlcik6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5VaW50NjQgPSBFRklfSUZSX1VJTlQ2NCgpDQo+ID4NCj4gPiAr ICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlVpbnQ2NC5IZWFkZXIsIEVG SV9JRlJfVUlOVDY0X09QLA0KPiA+IHNpemVvZihFRklfSUZSX1VJTlQ2NCkpDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiBTZXRWYWx1ZShzZWxmLCBWYWx1ZSk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlVpbnQ2 NC5WYWx1ZSA9IFZhbHVlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRIZWFkZXIo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5VaW50NjQuSGVhZGVyDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgcmV0dXJuIHNlbGYuVWludDY0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr Y2xhc3MgSWZyUXVlc3Rpb25SZWYxKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsg ICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlF1 ZXN0aW9uUmVmMSA9IEVGSV9JRlJfUVVFU1RJT05fUkVGMSgpDQo+ID4NCj4gPiArICAgICAgICBJ ZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlF1ZXN0aW9uUmVmMS5IZWFkZXIsDQo+ID4g RUZJX0lGUl9RVUVTVElPTl9SRUYxX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5l Tm8oTGluZU5vKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5RdWVzdGlvblJlZjEuUXVlc3Rpb25J ZCA9IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiBHZXRIZWFkZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5RdWVzdGlv blJlZjEuSGVhZGVyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXRRdWVzdGlvbklk KHNlbGYsIFF1ZXN0aW9uSWQsIFZhcklkU3RyLCBMaW5lTm8pOg0KPiA+DQo+ID4gKyAgICAgICAg aWYgUXVlc3Rpb25JZCAhPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRDoNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLlF1ZXN0aW9uUmVmMS5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0KPiA+DQo+ ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBnRm9ybVBrZy5Bc3NpZ25Q ZW5kaW5nKFZhcklkU3RyLCBzZWxmLlF1ZXN0aW9uUmVmMSwgTGluZU5vLCAibm8NCj4gPiBxdWVz dGlvbiByZWZlcmVkIikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8oc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5RdWVzdGlvblJlZjENCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJRdWVzdGlvblJlZjIoSWZyTGluZSwg SWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUXVlc3Rpb25SZWYyID0gRUZJX0lGUl9RVUVTVElPTl9S RUYyKCkNCj4gPg0KPiA+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYu UXVlc3Rpb25SZWYyLkhlYWRlciwNCj4gPiBFRklfSUZSX1FVRVNUSU9OX1JFRjJfT1ApDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2Vs Zi5RdWVzdGlvblJlZjIuSGVhZGVyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJ bmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuUXVlc3Rpb25SZWYyDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgSWZyUXVlc3Rpb25SZWYzKElm ckxpbmUsIElmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExp bmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlF1ZXN0aW9uUmVmMyA9IEVGSV9JRlJfUVVF U1RJT05fUkVGMygpDQo+ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXygNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLCBzZWxmLlF1ZXN0aW9uUmVmMy5IZWFkZXIsIEVGSV9J RlJfUVVFU1RJT05fUkVGM19PUCwNCj4gPiBzaXplb2YoRUZJX0lGUl9RVUVTVElPTl9SRUYzKQ0K PiA+DQo+ID4gKyAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGlu ZU5vKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuUXVlc3Rpb25SZWYzLkhlYWRlcg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJl dHVybiBzZWxmLlF1ZXN0aW9uUmVmMw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g K2NsYXNzIElmclF1ZXN0aW9uUmVmM18yKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gPg0KPiA+ ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxm LlF1ZXN0aW9uUmVmM18yID0gRUZJX0lGUl9RVUVTVElPTl9SRUYzXzIoKQ0KPiA+DQo+ID4gKyAg ICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZiwN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlF1ZXN0aW9uUmVmM18yLkhlYWRlciwNCj4gPg0K PiA+ICsgICAgICAgICAgICBFRklfSUZSX1FVRVNUSU9OX1JFRjNfT1AsDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2l6ZW9mKEVGSV9JRlJfUVVFU1RJT05fUkVGM18yKSwNCj4gPg0KPiA+ICsgICAg ICAgICkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ ICsgICAgICAgIHNlbGYuUXVlc3Rpb25SZWYzXzIuRGV2aWNlUGF0aCA9IEVGSV9TVFJJTkdfSURf SU5WQUxJRA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0RGV2aWNlUGF0aChzZWxm LCBEZXZpY2VQYXRoKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUXVlc3Rpb25SZWYzXzIuRGV2 aWNlUGF0aCA9IERldmljZVBhdGgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEhl YWRlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLlF1ZXN0aW9uUmVmM18y LkhlYWRlcg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLlF1ZXN0aW9uUmVmM18yDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgSWZyUXVlc3Rpb25SZWYzXzMoSWZyTGluZSwgSWZy T3BIZWFkZXIpOg0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuUXVlc3Rpb25SZWYzXzMgPSBFRklfSUZSX1FVRVNUSU9OX1JF RjNfMygpDQo+ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXygNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuUXVlc3Rpb25S ZWYzXzMuSGVhZGVyLA0KPiA+DQo+ID4gKyAgICAgICAgICAgIEVGSV9JRlJfUVVFU1RJT05fUkVG M19PUCwNCj4gPg0KPiA+ICsgICAgICAgICAgICBzaXplb2YoRUZJX0lGUl9RVUVTVElPTl9SRUYz XzMpLA0KPiA+DQo+ID4gKyAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5l Tm8oTGluZU5vKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5RdWVzdGlvblJlZjNfMy5EZXZpY2VQ YXRoID0gRUZJX1NUUklOR19JRF9JTlZBTElEDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlF1ZXN0 aW9uUmVmM18zLkd1aWQgPSBFRklfR1VJRCgwLCAwLCAwLCBHdWlkQXJyYXkoMCwgMCwgMCwgMCwg MCwgMCwNCj4gMCwNCj4gPiAwKSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldERl dmljZVBhdGgoc2VsZiwgRGV2aWNlUGF0aCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlF1ZXN0 aW9uUmVmM18zLkRldmljZVBhdGggPSBEZXZpY2VQYXRoDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiBTZXRHdWlkKHNlbGYsIEd1aWQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5RdWVz dGlvblJlZjNfMy5HdWlkID0gR3VpZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0 SGVhZGVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuUXVlc3Rpb25SZWYz XzMuSGVhZGVyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuUXVlc3Rpb25SZWYzXzMNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJSdWxlUmVmKElmckxpbmUsIElmck9wSGVh ZGVyKToNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4g PiArICAgICAgICBzZWxmLlJ1bGVSZWYgPSBFRklfSUZSX1JVTEVfUkVGKCkNCj4gPg0KPiA+ICsg ICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuUnVsZVJlZi5IZWFkZXIsIEVG SV9JRlJfUlVMRV9SRUZfT1ApDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5l Tm8pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlJ1bGVSZWYuUnVsZUlkID0gRUZJX1JVTEVfSURf SU5WQUxJRA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0UnVsZUlkKHNlbGYsIFJ1 bGVJZCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlJ1bGVSZWYuUnVsZUlkID0gUnVsZUlkDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICByZXR1cm4gc2VsZi5SdWxlUmVmLkhlYWRlcg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLlJ1 bGVSZWYNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJTdHJpbmdS ZWYxKElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNl bGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlN0cmluZ1JlZjEgPSBFRklfSUZS X1NUUklOR19SRUYxKCkNCj4gPg0KPiA+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNl bGYsIHNlbGYuU3RyaW5nUmVmMS5IZWFkZXIsDQo+ID4gRUZJX0lGUl9TVFJJTkdfUkVGMV9PUCkN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuU3RyaW5nUmVmMS5TdHJpbmdJZCA9IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0U3RyaW5nSWQoc2VsZiwgU3RyaW5nSWQpOg0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5TdHJpbmdSZWYxLlN0cmluZ0lkID0gU3RyaW5nSWQNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgIHJldHVybiBzZWxmLlN0cmluZ1JlZjEuSGVhZGVyDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYu U3RyaW5nUmVmMQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIElmclN0 cmluZ1JlZjIoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0 X18oc2VsZiwgTGluZU5vKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU3RyaW5nUmVmMiA9IEVG SV9JRlJfU1RSSU5HX1JFRjIoKQ0KPiA+DQo+ID4gKyAgICAgICAgSWZyT3BIZWFkZXIuX19pbml0 X18oc2VsZiwgc2VsZi5TdHJpbmdSZWYyLkhlYWRlciwNCj4gPiBFRklfSUZSX1NUUklOR19SRUYy X09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg cmV0dXJuIHNlbGYuU3RyaW5nUmVmMi5IZWFkZXINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIEdldEluZm8oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5TdHJpbmdS ZWYyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgSWZyVGhpcyhJZnJM aW5lLCBJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5l Tm8pOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5UaGlzID0gRUZJX0lGUl9USElTKCkNCj4gPg0K PiA+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuVGhpcy5IZWFkZXIs IEVGSV9JRlJfVEhJU19PUCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVO bykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgIHJldHVybiBzZWxmLlRoaXMuSGVhZGVyDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYu VGhpcw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIElmclNlY3VyaXR5 KElmckxpbmUsIElmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYs IExpbmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNlY3VyaXR5ID0gRUZJX0lGUl9TRUNV UklUWSgpDQo+ID4NCj4gPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxm LlNlY3VyaXR5LkhlYWRlciwgRUZJX0lGUl9TRUNVUklUWV9PUCkNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2VjdXJpdHku UGVybWlzc2lvbnMgPSBFRklfR1VJRCgwLCAwLCAwLCBHdWlkQXJyYXkoMCwgMCwgMCwgMCwgMCwg MCwNCj4gMCwNCj4gPiAwKSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldFBlcm1p c3Npb25zKHNlbGYsIFBlcm1pc3Npb25zKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2VjdXJp dHkuUGVybWlzc2lvbnMgPSBQZXJtaXNzaW9ucw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBk ZWYgR2V0SGVhZGVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuU2VjdXJp dHkuSGVhZGVyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuU2VjdXJpdHkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJHZXQoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiA+ DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuR2V0ID0gRUZJX0lGUl9HRVQoKQ0KPiA+DQo+ID4gKyAgICAgICAgSWZyT3BIZWFkZXIu X19pbml0X18oc2VsZiwgc2VsZi5HZXQuSGVhZGVyLCBFRklfSUZSX0dFVF9PUCkNCj4gPg0KPiA+ ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgZGVmIFNldFZhckluZm8oc2VsZiwgQmFzZUluZm86IEVGSV9WQVJTVE9SRV9JTkZPKToNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuR2V0LlZhclN0b3JlSWQgPSBCYXNlSW5mby5WYXJTdG9yZUlk DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkdldC5WYXJTdG9yZUluZm8uVmFyTmFtZSA9IEJhc2VJ bmZvLkluZm8uVmFyTmFtZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5HZXQuVmFyU3RvcmVJbmZv LlZhck9mZnNldCA9IEJhc2VJbmZvLkluZm8uVmFyT2Zmc2V0DQo+ID4NCj4gPiArICAgICAgICBz ZWxmLkdldC5WYXJTdG9yZVR5cGUgPSBCYXNlSW5mby5WYXJUeXBlDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g c2VsZi5HZXQuSGVhZGVyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuR2V0DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArY2xhc3MgSWZyU2V0KElmckxpbmUsIElmck9wSGVhZGVyKToNCj4g Pg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAgICAg ICBzZWxmLlNldCA9IEVGSV9JRlJfU0VUKCkNCj4gPg0KPiA+ICsgICAgICAgIElmck9wSGVhZGVy Ll9faW5pdF9fKHNlbGYsIHNlbGYuU2V0LkhlYWRlciwgRUZJX0lGUl9TRVRfT1ApDQo+ID4NCj4g PiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiBTZXRWYXJJbmZvKHNlbGYsIEJhc2VJbmZvOiBFRklfVkFSU1RPUkVfSU5GTyk6DQo+ ID4NCj4gPiArICAgICAgICBzZWxmLlNldC5WYXJTdG9yZUlkID0gQmFzZUluZm8uVmFyU3RvcmVJ ZA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXQuVmFyU3RvcmVJbmZvLlZhck5hbWUgPSBCYXNl SW5mby5JbmZvLlZhck5hbWUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2V0LlZhclN0b3JlSW5m by5WYXJPZmZzZXQgPSBCYXNlSW5mby5JbmZvLlZhck9mZnNldA0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5TZXQuVmFyU3RvcmVUeXBlID0gQmFzZUluZm8uVmFyVHlwZQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJu IHNlbGYuU2V0LkhlYWRlcg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SW5mbyhz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLlNldA0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIElmclRydWUoSWZyTGluZSwgSWZyT3BIZWFkZXIpOg0K PiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuVHJ1ZU9wID0gRUZJX0lGUl9UUlVFKCkNCj4gPg0KPiA+ICsgICAgICAgIElmck9w SGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuVHJ1ZU9wLkhlYWRlciwgRUZJX0lGUl9UUlVFX09Q KQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0 dXJuIHNlbGYuVHJ1ZU9wLkhlYWRlcg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0 SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLlRydWVPcA0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIElmckZhbHNlKElmckxpbmUsIElmck9w SGVhZGVyKToNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4N Cj4gPiArICAgICAgICBzZWxmLkZhbHNlT3AgPSBFRklfSUZSX1RSVUUoKQ0KPiA+DQo+ID4gKyAg ICAgICAgSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5GYWxzZU9wLkhlYWRlciwgRUZJ X0lGUl9GQUxTRV9PUCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBzZWxmLkZhbHNlT3AuSGVhZGVyDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYu RmFsc2VPcA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIElmck9uZShJ ZnJMaW5lLCBJZnJPcEhlYWRlcik6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBM aW5lTm8pOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5PbmUgPSBFRklfSUZSX09ORSgpDQo+ID4N Cj4gPiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLk9uZS5IZWFkZXIs IEVGSV9JRlJfT05FX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5v KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuT25lLkhlYWRlcg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLk9u ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIElmck9uZXMoSWZyTGlu ZSwgSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5v KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuT25lcyA9IEVGSV9JRlJfT05FKCkNCj4gPg0KPiA+ ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuT25lcy5IZWFkZXIsIEVG SV9JRlJfT05FU19PUCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBzZWxmLk9uZXMuSGVhZGVyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuT25l cw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIElmclplcm8oSWZyTGlu ZSwgSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5v KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuWmVybyA9IEVGSV9JRlJfWkVSTygpDQo+ID4NCj4g PiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLlplcm8uSGVhZGVyLCBF RklfSUZSX1pFUk9fT1ApDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8p DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICByZXR1cm4gc2VsZi5aZXJvLkhlYWRlcg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLlpl cm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJVbmRlZmluZWQo SWZyTGluZSwgSWZyT3BIZWFkZXIpOg0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwg TGluZU5vKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuVW5kZWZpbmVkID0gRUZJX0lGUl9aRVJP KCkNCj4gPg0KPiA+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuVW5k ZWZpbmVkLkhlYWRlciwNCj4gPiBFRklfSUZSX1VOREVGSU5FRF9PUCkNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVm IEdldEhlYWRlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLlVuZGVmaW5l ZC5IZWFkZXINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5VbmRlZmluZWQNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBJZnJWZXJzaW9uKElmckxpbmUsIElmck9wSGVhZGVyKToN Cj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ID4NCj4gPiArICAg ICAgICBzZWxmLlZlcnNpb24gPSBFRklfSUZSX1ZFUlNJT04oKQ0KPiA+DQo+ID4gKyAgICAgICAg SWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5WZXJzaW9uLkhlYWRlciwgRUZJX0lGUl9W RVJTSU9OX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgcmV0dXJuIHNlbGYuVmVyc2lvbi5IZWFkZXINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgZGVmIEdldEluZm8oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5WZXJz aW9uDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgSWZyTGVuZ3RoKElm ckxpbmUsIElmck9wSGVhZGVyKToNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExp bmVObyk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkxlbmd0aCA9IEVGSV9JRlJfTEVOR1RIKCkN Cj4gPg0KPiA+ICsgICAgICAgIElmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuTGVuZ3Ro LkhlYWRlciwgRUZJX0lGUl9MRU5HVEhfT1ApDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNldExp bmVObyhMaW5lTm8pDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZvKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuTGVuZ3RoDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArY2xhc3MgSWZyQml0V2lzZU5vdChJZnJMaW5lLCBJZnJPcEhlYWRl cik6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5CaXRXaXNlTm90ID0gRUZJX0lGUl9CSVRXSVNFX05PVCgpDQo+ID4NCj4g PiArICAgICAgICBJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLkJpdFdpc2VOb3QuSGVh ZGVyLA0KPiA+IEVGSV9JRlJfQklUV0lTRV9OT1RfT1ApDQo+ID4NCj4gPiArICAgICAgICBzZWxm LlNldExpbmVObyhMaW5lTm8pDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRJbmZv KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuQml0V2lzZU5vdA0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEV4cHJlc3Npb25JbmZvOg0KPiA+DQo+ ID4gKyAgICBkZWYgX19pbml0X18oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlJvb3RM ZXZlbCA9IDANCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuRXhwT3BDb3VudCA9IDANCj4gPg0KPiA+ IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9JZnJQcmVQ cm9jZXNzLnB5DQo+ID4gYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9JZnJQ cmVQcm9jZXNzLnB5DQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAw MDAwLi5lZDQ1NGNkY2YzDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL0Jhc2VUb29scy9T b3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL0lmclByZVByb2Nlc3MucHkNCj4gPiBAQCAtMCwwICsx LDI0NSBAQA0KPiA+ICsjIyBAZmlsZQ0KPiA+DQo+ID4gKyMgVGhlIGZpbGUgaXMgdXNlZCB0byBw cmVwcm9jZXNzIHRoZSBzb3VyY2UgZmlsZS4NCj4gPg0KPiA+ICsjDQo+ID4NCj4gPiArIyBDb3B5 cmlnaHQgKGMpIDIwMjItLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48 QlI+DQo+ID4NCj4gPiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBh dGVudA0KPiA+DQo+ID4gKyMjDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAraW1wb3J0IHJlDQo+ID4N Cj4gPiAraW1wb3J0IENvbW1vbi5FZGtMb2dnZXIgYXMgRWRrTG9nZ2VyDQo+ID4NCj4gPiArZnJv bSBhbnRscjQgaW1wb3J0ICoNCj4gPg0KPiA+ICtmcm9tIHBhdGhsaWIgaW1wb3J0IFBhdGgNCj4g Pg0KPiA+ICtmcm9tIENvbW1vbi5CdWlsZFRvb2xFcnJvciBpbXBvcnQgKg0KPiA+DQo+ID4gK2Zy b20gVmZyQ29tcGlsZXIuSWZyQ3R5cGVzIGltcG9ydCBFRklfR1VJRA0KPiA+DQo+ID4gK2Zyb20g VmZyQ29tcGlsZXIuSWZyVXRpbGl0eSBpbXBvcnQgVmZyVmFyRGF0YVR5cGVEQg0KPiA+DQo+ID4g K2Zyb20gQ29tbW9uLkxvbmdGaWxlUGF0aFN1cHBvcnQgaW1wb3J0IExvbmdGaWxlUGF0aA0KPiA+ DQo+ID4gK2Zyb20gVmZyQ29tcGlsZXIuSWZyQ29tbW9uIGltcG9ydCBHVUlEX0JVRkZFUl9WQUxV RV9MRU4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBPcHRpb25zOg0K PiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAjIG9w ZW4vY2xvc2UgVmZyQ29tcGlsZXINCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuTGFudWNoVmZyQ29t cGlsZXIgPSBGYWxzZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5Nb2R1bGVOYW1lID0gTm9uZQ0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5Xb3Jrc3BhY2UgPSBOb25lDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLlZGUlBQID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5JbnB1dEZpbGVOYW1l ID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5CYXNlRmlsZU5hbWUgPSBOb25lDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLkluY2x1ZGVQYXRocyA9IFtdDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLk91dHB1dERpcmVjdG9yeSA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuRGVidWdE aXJlY3RvcnkgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkNyZWF0ZVJlY29yZExpc3RG aWxlID0gVHJ1ZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5SZWNvcmRMaXN0RmlsZU5hbWUgPSBO b25lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkNyZWF0ZUlmclBrZ0ZpbGUgPSBUcnVlDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLlBrZ091dHB1dEZpbGVOYW1lID0gTm9uZQ0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5DT3V0cHV0RmlsZU5hbWUgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICBzZWxm LlNraXBDUHJlcHJvY2Vzc29yID0gVHJ1ZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5DUHJlcHJv Y2Vzc29yT3B0aW9ucyA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuQ1Byb2Nlc3NlZFZm ckZpbGVOYW1lID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5IYXNPdmVycmlkZUNsYXNz R3VpZCA9IEZhbHNlDQo+ID4NCj4gPiArICAgICAgICBzZWxmLk92ZXJyaWRlQ2xhc3NHdWlkID0g Tm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5XYXJuaW5nQXNFcnJvciA9IEZhbHNlDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLkF1dG9EZWZhdWx0ID0gRmFsc2UNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuQ2hlY2tEZWZhdWx0ID0gRmFsc2UNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuQ3JlYXRl WWFtbEZpbGUgPSBUcnVlDQo+ID4NCj4gPiArICAgICAgICBzZWxmLllhbWxGaWxlTmFtZSA9IE5v bmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuQ3JlYXRlSnNvbkZpbGUgPSBUcnVlDQo+ID4NCj4g PiArICAgICAgICBzZWxmLkpzb25GaWxlTmFtZSA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuVW5pU3RyRGVmRmlsZU5hbWUgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLllhbWxP dXRwdXRGaWxlTmFtZSA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuVW5pU3RyRGlzcGxh eUZpbGUgPSBOb25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgS1Y6 DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBLZXksIFZhbHVlKSAtPiBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5LZXkgPSBLZXkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu VmFsdWUgPSBWYWx1ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIFZh bHVlREI6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBQcmVWYWwsIFBvc3RWYWwp IC0+IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlByZVZhbCA9IFByZVZhbA0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5Qb3N0VmFsID0gUG9zdFZhbA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gK2NsYXNzIFByZVByb2Nlc3NEQjoNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5p dF9fKHNlbGYsIE9wdGlvbnM6IE9wdGlvbnMpIC0+IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICBz ZWxmLk9wdGlvbnMgPSBPcHRpb25zDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlZmclZhckRhdGFU eXBlREIgPSBWZnJWYXJEYXRhVHlwZURCKCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUHJlcHJv Y2Vzc2VkID0gRmFsc2UNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFByZXByb2Nlc3Mo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkhlYWRlckZpbGVzID0gc2VsZi5fRXh0cmFj dEhlYWRlckZpbGVzKCkNCj4gPg0KPiA+ICsgICAgICAgICMgUmVhZCBVbmkgc3RyaW5nIHRva2Vu L2lkIGRlZmluaXRpb25zIGluIFN0ckRlZi5oIGZpbGUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu VW5pRGljdCA9IHNlbGYuX0dldFVuaURpY3RzKCkNCj4gPg0KPiA+ICsgICAgICAgICMgUmVhZCBk ZWZpbml0aW9ucyBpbiB2ZnIgZmlsZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5WZnJEaWN0ID0g c2VsZi5fR2V0VmZyRGljdHMoKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5QcmVwcm9jZXNzZWQg PSBUcnVlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBUcmFuc1ZhbHVlKHNlbGYsIFZh bHVlKToNCj4gPg0KPiA+ICsgICAgICAgIGlmIHR5cGUoVmFsdWUpID09IEVGSV9HVUlEOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWYWx1ZQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBTdHJWYWx1ZSA9IHN0cihWYWx1ZSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBzZWxmLl9Jc0RpZ2l0KFN0clZhbHVlKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuX1RvRGlnaXQoU3RyVmFsdWUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgR3VpZExpc3QgPSByZS5maW5k YWxsKHIiMHhbMC05YS1mQS1GXSsiLCBTdHJWYWx1ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgR3VpZExpc3QgPSBbaW50KG51bSwgMTYpIGZvciBudW0gaW4gR3VpZExpc3RdDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIEd1aWQgPSBFRklfR1VJRCgpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIEd1aWQuZnJvbV9saXN0KEd1aWRMaXN0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gR3VpZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgUmV2ZXJ0VmFsdWUo c2VsZiwgVmFsdWUpIC0+IHN0cjoNCj4gPg0KPiA+ICsgICAgICAgIGlmIHR5cGUoVmFsdWUpID09 IEVGSV9HVUlEOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWYWx1ZS50b19zdHJpbmco KQ0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiAoIjB4IiBpbiBWYWx1ZSkgb3IgKCIwWCIgaW4gVmFs dWUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFN0clZhbHVlID0gaGV4KFZhbHVlKQ0KPiA+DQo+ ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBTdHJWYWx1ZSA9IHN0cihW YWx1ZSkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBTdHJWYWx1ZQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBkZWYgRGlzcGxheVZhbHVlKHNlbGYsIFZhbHVlLCBGbGFnPUZhbHNlKToNCj4g Pg0KPiA+ICsgICAgICAgIGlmIHR5cGUoVmFsdWUpID09IEVGSV9HVUlEOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBWYWx1ZS50b19zdHJpbmcoKQ0KPiA+DQo+ID4gKyAgICAgICAgU3Ry VmFsdWUgPSBzdHIoVmFsdWUpDQo+ID4NCj4gPiArICAgICAgICBpZiBzZWxmLl9Jc0RpZ2l0KFN0 clZhbHVlKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBGbGFnOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gZiJTVFJJTkdfVE9LRU4oe1N0clZhbHVlfSkiDQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIGludChTdHJWYWx1ZSwgMCkNCj4gPg0KPiA+ICsgICAgICAgIHJl dHVybiBTdHJWYWx1ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0S2V5KHNlbGYs IFZhbHVlKToNCj4gPg0KPiA+ICsgICAgICAgIGlmIHR5cGUoVmFsdWUpID09IEVGSV9HVUlEOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIFZhbHVlID0gVmFsdWUudG9fc3RyaW5nKCkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBWYWx1ZSBpbiBzZWxmLlVuaURpY3Q6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLlVuaURpY3RbVmFsdWVdDQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgVmFsdWUgaW4gc2VsZi5WZnJEaWN0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5WZnJEaWN0W1ZhbHVlXQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0K PiA+ICsgICAgICAgICAgICBWYWx1ZSA9ICIweCUwNHgiICUgVmFsdWUNCj4gPg0KPiA+ICsgICAg ICAgICAgICBWYWx1ZSA9IFZhbHVlWzoyXSArIFZhbHVlWzI6XS51cHBlcigpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgVmFsdWUgaW4gc2VsZi5VbmlEaWN0Og0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5VbmlEaWN0W1ZhbHVlXQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0 dXJuIFZhbHVlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBfRXh0cmFjdEhlYWRlckZp bGVzKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgRmlsZU5hbWUgPSBzZWxmLk9wdGlvbnMuSW5w dXRGaWxlTmFtZQ0KPiA+DQo+ID4gKyAgICAgICAgSGVhZGVyRmlsZXMgPSBbXQ0KPiA+DQo+ID4g KyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHdpdGggb3BlbihMb25nRmlsZVBh dGgoRmlsZU5hbWUpLCBtb2RlPSJyIikgYXMgZkZpbGU6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIGxpbmVzID0gZkZpbGUucmVhZGxpbmVzKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBmb3Ig bGluZSBpbiBsaW5lczoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgIiNpbmNsdWRlIiBp biBsaW5lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgbGluZS5maW5kKCI8Iikg IT0gLTE6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyRmlsZSA9IGxp bmVbbGluZS5maW5kKCI8IikgKyAxIDogbGluZS5maW5kKCI+IildDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgSGVhZGVyRmlsZXMuYXBwZW5kKEhlYWRlckZpbGUpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICBlbGlmIGxpbmUuZmluZCgnIicpICE9IC0xOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBsaW5lLmZpbmQoJyInKSArIDENCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICByID0gbCArIGxpbmVbbDpdLmZpbmQoJyInKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckZpbGUgPSBsaW5lW2w6cl0N Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJGaWxlcy5hcHBlbmQoSGVh ZGVyRmlsZSkNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246DQo+ID4NCj4gPiAr ICAgICAgICAgICAgRWRrTG9nZ2VyLmVycm9yKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAi VmZyQ29tcGlsZXIiLCBGSUxFX1BBUlNFX0ZBSUxVUkUsICJGaWxlIHBhcnNlIGZhaWxlZCBmb3Ig JXMiICUNCj4gPiBGaWxlTmFtZSwgTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICkNCj4gPg0K PiA+ICsgICAgICAgIHJldHVybiBIZWFkZXJGaWxlcw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBkZWYgX0dldFVuaURpY3RzKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgaWYgc2VsZi5PcHRp b25zLlVuaVN0ckRlZkZpbGVOYW1lIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5PcHRpb25zLlVuaVN0ckRlZkZpbGVOYW1lID0gc3RyKA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBQYXRoKHNlbGYuT3B0aW9ucy5EZWJ1Z0RpcmVjdG9yeSkgLw0KPiA+IGYie3NlbGYuT3B0 aW9ucy5Nb2R1bGVOYW1lfVN0ckRlZnMuaCINCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ID4N Cj4gPiArICAgICAgICAjIGZpbmQgVW5pRmlsZQ0KPiA+DQo+ID4gKyAgICAgICAgRmlsZU5hbWUg PSBzZWxmLk9wdGlvbnMuVW5pU3RyRGVmRmlsZU5hbWUNCj4gPg0KPiA+ICsgICAgICAgIFVuaURp Y3QgPSB7fQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fUGFyc2VEZWZpbmVzKEZpbGVOYW1lLCBV bmlEaWN0KQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIFVuaURpY3QNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgZGVmIF9HZXRWZnJEaWN0cyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIFZm ckRpY3QgPSB7fQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgc2VsZi5PcHRpb25zLkxhbnVjaFZmckNv bXBpbGVyOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIEZpbGVOYW1lID0gc2VsZi5PcHRpb25zLklu cHV0RmlsZU5hbWUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9QYXJzZURlZmluZXMoRmls ZU5hbWUsIFZmckRpY3QsIFRydWUpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gVmZyRGljdA0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX0lzRGlnaXQoc2VsZiwgU3RyaW5nKToNCj4g Pg0KPiA+ICsgICAgICAgIHJldHVybiBTdHJpbmcuaXNkaWdpdCgpIG9yICgNCj4gPg0KPiA+ICsg ICAgICAgICAgICBTdHJpbmcuc3RhcnRzd2l0aCgoIjB4IiwgIjBYIikpDQo+ID4NCj4gPiArICAg ICAgICAgICAgYW5kIGFsbChjaGFyIGluICIwMTIzNDU2Nzg5QUJDREVGYWJjZGVmIiBmb3IgY2hh ciBpbiBTdHJpbmdbMjpdKQ0KPiA+DQo+ID4gKyAgICAgICAgKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBkZWYgX1RvRGlnaXQoc2VsZiwgU3RyaW5nKToNCj4gPg0KPiA+ICsgICAgICAgIGlm IFN0cmluZy5zdGFydHN3aXRoKCgiMHgiLCAiMFgiKSk6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIGludChTdHJpbmcsIDE2KQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGludChTdHJp bmcpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBfUGFyc2VEZWZpbmVzKHNlbGYsIEZp bGVOYW1lLCBEaWN0LCBJc1ZmckRlZj1GYWxzZSk6DQo+ID4NCj4gPiArICAgICAgICBQYXR0ZXJu ID0gciIjZGVmaW5lXHMrKFx3KylccysoLio/KSg/Oig/PCFcXClcbnwkKSINCj4gPg0KPiA+ICsg ICAgICAgIHdpdGggb3BlbihGaWxlTmFtZSkgYXMgRmlsZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBDb250ZW50ID0gRmlsZS5yZWFkKCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIE1h dGNoZXMgPSByZS5maW5kYWxsKFBhdHRlcm4sIENvbnRlbnQsIHJlLkRPVEFMTCkNCj4gPg0KPiA+ ICsgICAgICAgIGZvciBNYXRjaCBpbiBNYXRjaGVzOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIEtl eSA9IE1hdGNoWzBdDQo+ID4NCj4gPiArICAgICAgICAgICAgVmFsdWUgPSByZS5zdWIociJccysi LCAiICIsIE1hdGNoWzFdLnJlcGxhY2UoIlxcXG4iLCAiIikuc3RyaXAoKSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBTdWJEZWZpbmVNYXRjaGVzID0gcmUuZmluZGFsbCgNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgciIjZGVmaW5lXHMrKFx3KylccysoLio/KSg/Oig/PCFcXClcbnwkKSIsIFZh bHVlLCByZS5ET1RBTEwNCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgU3ViRGVmaW5lTWF0Y2hlczoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZm9y IFN1Yk1hdGNoIGluIFN1YkRlZmluZU1hdGNoZXM6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICBTdWJLZXkgPSBTdWJNYXRjaFswXQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg U3ViVmFsdWUgPSByZS5zdWIociJccysiLCAiICIsIFN1Yk1hdGNoWzFdLnJlcGxhY2UoIlxcXG4i LA0KPiA+ICIiKS5zdHJpcCgpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgU3Vi VmFsdWUuZmluZCgiLy8iKSAhPSAtMToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICBTdWJWYWx1ZSA9IFN1YlZhbHVlLnNwbGl0KCIvLyIpWzBdLnN0cmlwKCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIFN1YlZhbHVlLmZpbmQoInsiKSAhPSAt MToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBHdWlkTGlzdCA9IHJlLmZpbmRh bGwociIweFswLTlhLWZBLUZdKyIsIFN1YlZhbHVlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgIEd1aWRMaXN0ID0gW2ludChudW0sIDE2KSBmb3IgbnVtIGluIEd1aWRMaXN0XQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIFN1YlZhbHVlID0gRUZJX0dVSUQoKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxlbihHdWlkTGlzdCkgPT0gR1VJ RF9CVUZGRVJfVkFMVUVfTEVOOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBTdWJWYWx1ZS5mcm9tX2xpc3QoR3VpZExpc3QpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBpZiBzZWxmLk9wdGlvbnMuTGFudWNoVmZyQ29tcGlsZXI6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIyBHVUlEIGlzIHVuaXF1ZSwgdG8gdHJhbnNm ZXIgR1VJRCBQYXJzZWQgVmFsdWUgLT4gR1VJRA0KPiA+IERlZmluZWQgS2V5Lg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIElzVmZyRGVmOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjIFNhdmUgZGVmIGluZm8gZm9yIHlhbWwgZ2VuZXJhdGlvbg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaWN0W1N1YktleV0gPSBTdWJW YWx1ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRyYW5mZXIgdmFs dWUgdG8ga2V5IGZvciB5YW1sIGdlbmVyYXRpb24NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaWYgdHlwZShTdWJWYWx1ZSkgPT0gRUZJX0dVSUQ6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaWN0W1N1YlZhbHVlLnRvX3N0cmluZygpXSA9 IFN1YktleQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1YlZhbHVlID0gKA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKFN1YlZhbHVlKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdHlwZShTdWJWYWx1ZSkgIT0gRUZJX0dV SUQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgU3ViVmFs dWUudG9fc3RyaW5nKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaWN0W1N1YlZhbHVlXSA9IFN1 YktleQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIGlmIFZhbHVlLmZpbmQoIi8vIikgIT0gLTE6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICBWYWx1ZSA9IFZhbHVlLnNwbGl0KCIvLyIpWzBdLnN0cmlwKCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgaWYgVmFsdWUuZmluZCgieyIpICE9IC0xOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgR3VpZExpc3QgPSByZS5maW5kYWxsKHIiMHhbMC05YS1mQS1GXSsiLCBWYWx1 ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIEd1aWRMaXN0ID0gW2ludChudW0sIDE2 KSBmb3IgbnVtIGluIEd1aWRMaXN0XQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgVmFs dWUgPSBFRklfR1VJRCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBsZW4oR3Vp ZExpc3QpID09IEdVSURfQlVGRkVSX1ZBTFVFX0xFTjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICBWYWx1ZS5mcm9tX2xpc3QoR3VpZExpc3QpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIGlmIHNlbGYuT3B0aW9ucy5MYW51Y2hWZnJDb21waWxlcjoNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICMgR1VJRCBpcyB1bmlxdWUsIHRvIHRyYW5zZmVy IEdVSUQgUGFyc2VkIFZhbHVlIC0+IEdVSUQNCj4gRGVmaW5lZA0KPiA+IEtleS4NCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIGlmIElzVmZyRGVmOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgIERpY3RbS2V5XSA9IFZhbHVlDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgaWYgdHlwZShWYWx1ZSkgPT0gRUZJX0dVSUQ6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIERpY3RbVmFsdWUudG9fc3RyaW5nKCldID0gS2V5DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgIFZhbHVlID0gc3RyKFZhbHVlKSBpZiB0eXBlKFZhbHVlKSAhPSBFRklfR1VJRCBlbHNl DQo+ID4gVmFsdWUudG9fc3RyaW5nKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICBEaWN0W1ZhbHVlXSA9IEtleQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX0ZpbmRJ bmNsdWRlSGVhZGVyRmlsZShzZWxmLCBJbmNsdWRlUGF0aHMsIEZpbGUpOg0KPiA+DQo+ID4gKyAg ICAgICAgRmlsZUxpc3QgPSBbXQ0KPiA+DQo+ID4gKyAgICAgICAgTmFtZSA9IEZpbGUuc3BsaXQo Ii8iKVstMV0NCj4gPg0KPiA+ICsgICAgICAgIGZvciBTdGFydCBpbiBJbmNsdWRlUGF0aHM6DQo+ ID4NCj4gPiArICAgICAgICAgICAgTWF0Y2hlcyA9IGxpc3QoUGF0aChTdGFydCkucmdsb2IoTmFt ZSkpDQo+ID4NCj4gPiArICAgICAgICAgICAgZm9yIE1hdGNoRmlsZSBpbiBNYXRjaGVzOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBGaWxlTGlzdC5hcHBlbmQoc3RyKE1hdGNoRmlsZSkpDQo+ ID4NCj4gPiArICAgICAgICByZXR1cm4gbGlzdChzZXQoRmlsZUxpc3QpKQ0KPiA+DQo+ID4gZGlm ZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL0lmclRyZWUucHkN Cj4gPiBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL0lmclRyZWUucHkNCj4g PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLmZhYTJlNDY3N2QN Cj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZy Q29tcGlsZXIvSWZyVHJlZS5weQ0KPiA+IEBAIC0wLDAgKzEsMTEzMiBAQA0KPiA+ICsjIyBAZmls ZQ0KPiA+DQo+ID4gKyMgVGhlIGZpbGUgaXMgdXNlZCB0byBkZWZpbmUgdmZyIHRyZWUgc3RydWN0 dXJlIGFuZCByZWxhdGVkIG9wZXJhdGlvbnMuDQo+ID4NCj4gPiArIw0KPiA+DQo+ID4gKyMgQ29w eXJpZ2h0IChjKSAyMDIyLSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu PEJSPg0KPiA+DQo+ID4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1Q YXRlbnQNCj4gPg0KPiA+ICsjIw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2ltcG9ydCBDb21tb24u RWRrTG9nZ2VyIGFzIEVka0xvZ2dlcg0KPiA+DQo+ID4gK2Zyb20gQ29tbW9uLkJ1aWxkVG9vbEVy cm9yIGltcG9ydCAqDQo+ID4NCj4gPiArZnJvbSBWZnJDb21waWxlci5JZnJDdHlwZXMgaW1wb3J0 ICoNCj4gPg0KPiA+ICtmcm9tIFZmckNvbXBpbGVyLklmckZvcm1Qa2cgaW1wb3J0ICoNCj4gPg0K PiA+ICtmcm9tIFZmckNvbXBpbGVyLklmclV0aWxpdHkgaW1wb3J0IGdWZnJCdWZmZXJDb25maWcN Cj4gPg0KPiA+ICtmcm9tIFZmckNvbXBpbGVyLklmclByZVByb2Nlc3MgaW1wb3J0IFByZVByb2Nl c3NEQiwgT3B0aW9ucw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK1ZGUl9DT01Q SUxFUl9WRVJTSU9OID0gIjIuMDEgKFVFRkkgMi40KSINCj4gPg0KPiA+ICtCVUlMRF9WRVJTSU9O ID0gIkRldmVsb3BlciBCdWlsZCBiYXNlZCBvbiBSZXZpc2lvbjogVW5rbm93biINCj4gPg0KPiA+ ICtCWVRFU19QUkVfTElORSA9IDB4MTANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsjIElmciByZWxhdGVkIEluZm8gLT4gY3R5cGVzIG9iag0KPiA+DQo+ID4gKyMgY29uZGl0aW9u YWwgSW5mbw0KPiA+DQo+ID4gKyMgU3RydWN0dXJlIEluZm8NCj4gPg0KPiA+ICtjbGFzcyBJZnJU cmVlTm9kZToNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIE9wQ29kZT1Ob25lLCBE YXRhPU5vbmUsIEJ1ZmZlcj1Ob25lLA0KPiA+IFBvc2l0aW9uPU5vbmUpOg0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5PcENvZGUgPSBPcENvZGUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuRGF0YSA9 IERhdGENCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuQnVmZmVyID0gQnVmZmVyDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLlBvc2l0aW9uID0gUG9zaXRpb24NCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu Q29uZGl0aW9uID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5FeHByZXNzaW9uID0gTm9u ZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5EaWN0ID0ge30NCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuT2Zmc2V0ID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5QYXJlbnQgPSBOb25lDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLkNoaWxkID0gW10NCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu TGV2ZWwgPSAtMQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgaGFzQ29uZGl0aW9uKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuQ29uZGl0aW9uDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiBoYXNDaGlsZChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHJl dHVybiBzZWxmLkNoaWxkID09IFtdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBpc0Zp bmFsQ2hpbGQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICBQYXJUcmVlID0gc2VsZi5QYXJlbnQN Cj4gPg0KPiA+ICsgICAgICAgIGlmIFBhclRyZWUgYW5kIFBhclRyZWUuQ2hpbGRbLTFdID09IHNl bGY6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFRydWUNCj4gPg0KPiA+ICsgICAgICAg IHJldHVybiBGYWxzZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgaW5zZXJ0Q2hpbGQo c2VsZiwgTmV3Tm9kZSwgcG9zOiBpbnQgPSBOb25lKToNCj4gPg0KPiA+ICsgICAgICAgIGlmIE5l d05vZGUgaXMgbm90IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgbm90IHBvczoNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5DaGlsZC5hcHBlbmQoTmV3Tm9kZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLkNo aWxkLmluc2VydChwb3MsIE5ld05vZGUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAg ICAgTmV3Tm9kZS5QYXJlbnQgPSBzZWxmDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBp bnNlcnRSZWwoc2VsZiwgbmV3Tm9kZSk6DQo+ID4NCj4gPiArICAgICAgICBpZiBzZWxmLlBhcmVu dDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBwYXJlbnRUcmVlID0gc2VsZi5QYXJlbnQNCj4gPg0K PiA+ICsgICAgICAgICAgICBuZXdfaW5kZXggPSBwYXJlbnRUcmVlLkNoaWxkLmluZGV4KHNlbGYp ICsgMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBhcmVudFRyZWUuQ2hpbGQuaW5zZXJ0KG5ld19p bmRleCwgbmV3Tm9kZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuTmV4dFJlbCA9IG5ld05vZGUN Cj4gPg0KPiA+ICsgICAgICAgIG5ld05vZGUuTGFzdFJlbCA9IHNlbGYNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgZGVmIGRlbGV0ZU5vZGUoc2VsZiwgZGVsZXRla2V5OiBzdHIpOg0KPiA+DQo+ ID4gKyAgICAgICAgRmluZFN0YXR1cywgRGVsZXRlVHJlZSA9IHNlbGYuRmluZE5vZGUoZGVsZXRl a2V5KQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgRmluZFN0YXR1czoNCj4gPg0KPiA+ICsgICAgICAg ICAgICBwYXJlbnRUcmVlID0gRGVsZXRlVHJlZS5QYXJlbnQNCj4gPg0KPiA+ICsgICAgICAgICAg ICBsYXN0VHJlZSA9IERlbGV0ZVRyZWUuTGFzdFJlbA0KPiA+DQo+ID4gKyAgICAgICAgICAgIG5l eHRUcmVlID0gRGVsZXRlVHJlZS5OZXh0UmVsDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgcGFy ZW50VHJlZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaW5kZXggPSBwYXJlbnRUcmVlLkNo aWxkLmluZGV4KERlbGV0ZVRyZWUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGRlbCBwYXJl bnRUcmVlLkNoaWxkW2luZGV4XQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGxhc3RUcmVlIGFu ZCBuZXh0VHJlZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbGFzdFRyZWUuTmV4dFJlbCA9 IG5leHRUcmVlDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIG5leHRUcmVlLkxhc3RSZWwgPSBs YXN0VHJlZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgbGFzdFRyZWU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIGxhc3RUcmVlLk5leHRSZWwgPSBOb25lDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxpZiBuZXh0VHJlZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbmV4dFRyZWUu TGFzdFJlbCA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gRGVsZXRlVHJlZQ0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIE5vbmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICtFeHBPcHMgPSBbDQo+ID4NCj4gPiArICAgIEVGSV9JRlJfRFVQX09QLA0KPiA+DQo+ ID4gKyAgICBFRklfSUZSX0VRX0lEX1ZBTF9PUCwNCj4gPg0KPiA+ICsgICAgRUZJX0lGUl9RVUVT VElPTl9SRUYxX09QLA0KPiA+DQo+ID4gKyAgICBFRklfSUZSX0VRX0lEX1ZBTF9PUCwNCj4gPg0K PiA+ICsgICAgRUZJX0lGUl9FUV9JRF9JRF9PUCwNCj4gPg0KPiA+ICsgICAgRUZJX0lGUl9FUV9J RF9WQUxfTElTVF9PUCwNCj4gPg0KPiA+ICsgICAgRUZJX0lGUl9SVUxFX1JFRl9PUCwNCj4gPg0K PiA+ICsgICAgRUZJX0lGUl9TVFJJTkdfUkVGMV9PUCwNCj4gPg0KPiA+ICsgICAgRUZJX0lGUl9U SElTX09QLA0KPiA+DQo+ID4gKyAgICBFRklfSUZSX1NFQ1VSSVRZX09QLA0KPiA+DQo+ID4gKyAg ICBFRklfSUZSX0dFVF9PUCwNCj4gPg0KPiA+ICsgICAgRUZJX0lGUl9UUlVFX09QLA0KPiA+DQo+ ID4gKyAgICBFRklfSUZSX0ZBTFNFX09QLA0KPiA+DQo+ID4gKyAgICBFRklfSUZSX09ORV9PUCwN Cj4gPg0KPiA+ICsgICAgRUZJX0lGUl9PTkVTX09QLA0KPiA+DQo+ID4gKyAgICBFRklfSUZSX1pF Uk9fT1AsDQo+ID4NCj4gPiArICAgIEVGSV9JRlJfVU5ERUZJTkVEX09QLA0KPiA+DQo+ID4gKyAg ICBFRklfSUZSX1ZFUlNJT05fT1AsDQo+ID4NCj4gPiArICAgIEVGSV9JRlJfVUlOVDY0X09QLA0K PiA+DQo+ID4gKyAgICBFRklfSUZSX1FVRVNUSU9OX1JFRjJfT1AsDQo+ID4NCj4gPiArICAgIEVG SV9JRlJfUVVFU1RJT05fUkVGM19PUCwNCj4gPg0KPiA+ICsgICAgRUZJX0lGUl9TRVRfT1AsDQo+ ID4NCj4gPiArICAgIEVGSV9JRlJfREVGQVVMVFNUT1JFX09QLA0KPiA+DQo+ID4gKyAgICBFRklf SUZSX09SX09QLA0KPiA+DQo+ID4gK10NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtEZWZhdWx0RGlj dExpc3QgPSBbXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIFJlQ29y ZE5vZGUoU3RydWN0dXJlKToNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIFJlY29y ZCwgTGluZU5vKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUmVjb3JkID0gUmVjb3JkDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLkxpbmVObyA9IExpbmVObw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gK2NsYXNzIElmclRyZWU6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBSb290OiBJZnJUcmVlTm9kZSwgUHJlUHJvY2Vzc0RCOiBQcmVQcm9jZXNzREIsDQo+IE9w dGlvbnM6DQo+ID4gT3B0aW9ucykgLT4gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUm9v dCA9IFJvb3QNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuT3B0aW9ucyA9IE9wdGlvbnMNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuUHJlUHJvY2Vzc0RCID0gUHJlUHJvY2Vzc0RCDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiBHZW5CaW5hcnlGaWxlcyhzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgIFJlY29yZExpbmVzID0gW10NCj4gPg0KPiA+ICsgICAgICAgIEhwa0ZpbGUgPSBzZWxmLk9w dGlvbnMuUGtnT3V0cHV0RmlsZU5hbWUNCj4gPg0KPiA+ICsgICAgICAgIENGaWxlID0gc2VsZi5P cHRpb25zLkNPdXRwdXRGaWxlTmFtZQ0KPiA+DQo+ID4gKyAgICAgICAgTHN0RmlsZSA9IHNlbGYu T3B0aW9ucy5SZWNvcmRMaXN0RmlsZU5hbWUNCj4gPg0KPiA+ICsgICAgICAgIGlmIHNlbGYuT3B0 aW9ucy5DcmVhdGVJZnJQa2dGaWxlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICMgR2VuQmluYXJ5 DQo+ID4NCj4gPiArICAgICAgICAgICAgUGtnSGRyID0gZ0Zvcm1Qa2cuQnVpbGRQa2dIZHIoKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgd2l0 aCBvcGVuKEhwa0ZpbGUsICJ3YiIpIGFzIEhwazoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIEhway53cml0ZShnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShQa2dIZHIpKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgRWRrTG9nZ2VyLmVycm9yKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIlZm ckNvbXBpbGVyIiwgRklMRV9PUEVOX0ZBSUxVUkUsIGYiRmlsZSBvcGVuIGZhaWxlZCBmb3INCj4g PiB7SHBrRmlsZX06IHtlfSINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgICAgICMgR2VuQ0ZpbGUNCj4gPg0KPiA+ICsgICAgICAgICAg ICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHdpdGggb3BlbihDRmlsZSwgInciKSBh cyBDOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgQy53cml0ZSgiLy9cbiIpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICBDLndyaXRlKCIvLyIgKyAiICIgKyAiRE8gTk9UIEVE SVQgLS0gYXV0by1nZW5lcmF0ZWQgZmlsZVxuIikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIEMud3JpdGUoIi8vXG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgQy53cml0 ZSgiLy8iICsgIiAiICsgIlRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgdGhlIHZmcmNvbXBpbGVy DQo+ID4gdXRpbGl0eVxuIikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIEMud3JpdGUo Ii8vXG5cbiIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBCYXNlTmFtZSA9ICJ1bnNp Z25lZCBjaGFyICIgKyBzZWxmLk9wdGlvbnMuQmFzZUZpbGVOYW1lICsNCj4gPiAiQmluW10gPSB7 XG4iDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBDLndyaXRlKEJhc2VOYW1lKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgQy53cml0ZSgiICAvLyBBUlJBWSBMRU5HVEhcblxu IikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIFBrZ0xlbmd0aCA9IFBrZ0hkci5MZW5n dGggKyBzaXplb2YoY191aW50MzIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmb3Ig QiBpbiBQa2dMZW5ndGgudG9fYnl0ZXMoNCwgYnl0ZW9yZGVyPSJsaXR0bGUiLCBzaWduZWQ9VHJ1 ZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgQy53cml0ZSgiICAweCUwMlgs IiAlIEIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBDLndyaXRlKCJcblxuIikNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIEMud3JpdGUoIiAgLy8gUEFDS0FHRSBIRUFERVJc blxuIikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIEhlYWRlckJ1ZmZlciA9IGdGb3Jt UGtnLlN0cnVjdFRvU3RyZWFtKFBrZ0hkcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg IGZvciBCIGluIEhlYWRlckJ1ZmZlcjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICBDLndyaXRlKCIgIDB4JTAyWCwiICUgQikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg IEMud3JpdGUoIlxuXG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgQy53cml0ZSgi ICAvLyIgKyAiICIgKyAiUEFDS0FHRSBEQVRBXG5cbiIpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICBzZWxmLkluZGV4ID0gMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIGV4Y2VwdCBFeGNl cHRpb24gYXMgZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgRWRrTG9nZ2VyLmVycm9yKA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIlZmckNvbXBpbGVyIiwgRklMRV9PUEVOX0ZB SUxVUkUsIGYiRmlsZSBvcGVuIGZhaWxlZCBmb3INCj4ge0NGaWxlfToNCj4gPiB7ZX0iDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlm IHNlbGYuT3B0aW9ucy5DcmVhdGVSZWNvcmRMaXN0RmlsZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAjIEdlblJlY29yZExpc3QNCj4gPg0KPiA+ICsgICAgICAgICAgICB0cnk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHdpdGggb3BlbihMc3RGaWxlLCAidyIpIGFzIExzdDoNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIExzdC53cml0ZSgNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICBmIi8vXG4vLyAgVkZSIGNvbXBpbGVyIHZlcnNpb24ge1ZGUl9DT01QSUxFUl9W RVJTSU9OfQ0KPiA+IHtCVUlMRF9WRVJTSU9OfVxuLy9cbiINCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIEVka0xvZ2dlci5lcnJvcigNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICJWZnJDb21waWxlciIsIEZJTEVfT1BFTl9GQUlMVVJFLCBmIkZp bGUgb3BlbiBmYWlsZWQgZm9yDQo+ID4ge0xzdEZpbGV9OiB7ZX0iDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX0dlbkJpbmFy eUZpbGVzRGZzKHNlbGYuUm9vdCwgSHBrRmlsZSwgQ0ZpbGUsIFJlY29yZExpbmVzKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgc2VsZi5PcHRpb25zLkNyZWF0ZUlmclBrZ0ZpbGU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgIyBHZW5DRmlsZQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgd2l0aCBvcGVuKENGaWxlLCAiYSIpIGFz IEM6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBDLndyaXRlKCJcbn07XG4iKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgRWRrTG9nZ2VyLmVycm9yKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgIlZmckNvbXBpbGVyIiwgRklMRV9XUklURV9GQUlMVVJFLCBmIkZpbGUgd3JpdGUgZmFpbGVk IGZvcg0KPiB7Q0ZpbGV9Og0KPiA+IHtlfSIsIE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgc2VsZi5PcHRpb25zLkNyZWF0 ZVJlY29yZExpc3RGaWxlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICMgR2VuUmVjb3JkTGlzdA0K PiA+DQo+ID4gKyAgICAgICAgICAgIEluRmlsZUxpbmVzID0gW10NCj4gPg0KPiA+ICsgICAgICAg ICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLk9wdGlv bnMuQ1Byb2Nlc3NlZFZmckZpbGVOYW1lLCAiciIpIGFzIEluOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgZm9yIExpbmUgaW4gSW46DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgSW5GaWxlTGluZXMuYXBwZW5kKExpbmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgZXhj ZXB0IEV4Y2VwdGlvbiBhcyBlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBFZGtMb2dnZXIu ZXJyb3IoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAiVmZyQ29tcGlsZXIiLA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgRklMRV9PUEVOX0ZBSUxVUkUsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBmIkZpbGUgb3BlbiBmYWlsZWQgZm9yIHtzZWxmLk9wdGlvbnMu Q1Byb2Nlc3NlZFZmckZpbGVOYW1lfToNCj4ge2V9IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIE5vbmUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAg ICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHdpdGggb3BlbihMc3RGaWxl LCAiYSIpIGFzIExzdDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIEluc2VydGVkTGlu ZSA9IDANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGZvciBSZWNvcmRMaW5lIGluIFJl Y29yZExpbmVzOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIEluRmlsZUxpbmVz Lmluc2VydChSZWNvcmRMaW5lLkxpbmVObyArIEluc2VydGVkTGluZSwNCj4gPiBSZWNvcmRMaW5l LlJlY29yZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBJbnNlcnRlZExpbmUg Kz0gMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZm9yIExpbmUgaW4gSW5GaWxlTGlu ZXM6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgTHN0LndyaXRlKGYie0xpbmV9 IikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIExzdC53cml0ZSgiLy9cbi8vICBBbGwg T3Bjb2RlIFJlY29yZCBMaXN0XG4vL1xuIikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg IGZvciBSZWNvcmRMaW5lIGluIFJlY29yZExpbmVzOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgIExzdC53cml0ZShmIntSZWNvcmRMaW5lLlJlY29yZH0iKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgTHN0LndyaXRlKGYiXG5Ub3RhbCBTaXplIG9mIGFsbCByZWNvcmQg aXMge2dGb3JtUGtnLk9mZnNldDowPjh4fSIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBnVmZyVmFyRGF0YVR5cGVEQi5EdW1wKExzdCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBleGNl cHQgRXhjZXB0aW9uIGFzIGU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIEVka0xvZ2dlci5l cnJvcigNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICJWZnJDb21waWxlciIsIEZJTEVf V1JJVEVfRkFJTFVSRSwgZiJGaWxlIHdyaXRlIGZhaWxlZCBmb3INCj4gPiB7THN0RmlsZX06IHtl fSIsIE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBkZWYgX0dlbkJpbmFyeUZpbGVzRGZzKHNlbGYsIFJvb3QsIEhwa0ZpbGUsIENGaWxl LCBSZWNvcmRMaW5lcyk6DQo+ID4NCj4gPiArICAgICAgICBpZiBSb290IGlzIE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBp ZiBSb290Lk9wQ29kZSBpcyBub3QgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBSb290 Lk9wQ29kZSBpbiBFeHBPcHM6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICMgVGhlIERhdGEg aXMgbGlrZWx5IHRvIGJlIG1vZGlmaWVkLCBzbyBnZW5lcmF0ZSBidWZmZXIgaGVyZQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBSb290LkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFt KFJvb3QuRGF0YS5HZXRJbmZvKCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgUm9vdC5CdWZm ZXIgaXMgbm90IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIHNlbGYuT3B0aW9u cy5DcmVhdGVJZnJQa2dGaWxlIGFuZA0KPiBzZWxmLk9wdGlvbnMuQ3JlYXRlUmVjb3JkTGlzdEZp bGU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKEhwa0ZpbGUsICJhYiIpIGFzIEhwazoNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgSHBrLndyaXRlKFJvb3QuQnVmZmVyKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICBFZGtMb2dnZXIuZXJyb3IoDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJWZnJDb21waWxlciIsDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEZJTEVfV1JJVEVfRkFJTFVSRSwNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIkZpbGUgd3JpdGUgZmFpbGVkIGZvciAlcyIgJQ0KPiA+ IChzZWxmLk9wdGlvbnMuUGtnT3V0cHV0RmlsZU5hbWUpLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg IHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oQ0ZpbGUs ICJhIikgYXMgQzoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluZUJ1 ZmZlciA9ICIiDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGlu IHJhbmdlKDAsIGxlbihSb290LkJ1ZmZlcikpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5JbmRleCArPSAxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBEYXRhID0gUm9vdC5CdWZmZXJbaV0NCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuSW5kZXggJSBCWVRFU19QUkVfTElORSA9 PSAxOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMud3Jp dGUoIiAgIikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMud3Jp dGUoIjB4JTAyWCIgJSBEYXRhKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaWYgc2VsZi5JbmRleCAhPSBnRm9ybVBrZy5Qa2dMZW5ndGg6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5JbmRleCAlIEJZVEVTX1BS RV9MSU5FID09IDA6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEMud3JpdGUoIixcbiIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQy53cml0ZSgiLCAgIikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExpbmVCdWZmZXIgKz0gZiJ7Um9vdC5CdWZmZXJbaV06 MD4yWH0gIg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBSZWNvcmQgPSBmIj57Um9vdC5PZmZzZXQ6MD44WH06IHtMaW5lQnVmZmVyfVxuIg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5lTm8gPSBSb290LkRhdGEuR2V0TGlu ZU5vKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVjb3JkTGluZXMu YXBwZW5kKFJlQ29yZE5vZGUoUmVjb3JkLCBMaW5lTm8pKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICBFZGtMb2dnZXIuZXJyb3IoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJWZnJDb21waWxlciIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg IEZJTEVfV1JJVEVfRkFJTFVSRSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIkZpbGUgd3JpdGUgZmFpbGVkIGZvciAlcyIgJSAoc2VsZi5PcHRpb25zLkNPdXRwdXRGaWxl TmFtZSksDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBzZWxmLk9wdGlvbnMuQ3JlYXRlSWZyUGtnRmls ZSBhbmQgbm90DQo+ID4gc2VsZi5PcHRpb25zLkNyZWF0ZVJlY29yZExpc3RGaWxlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgIHdpdGggb3BlbihIcGtGaWxlLCAiYWIiKSBhcyBIcGs6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEhway53cml0ZShSb290LkJ1ZmZlcikNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgRWRrTG9nZ2VyLmVycm9yKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiVmZyQ29tcGlsZXIiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBGSUxFX1dSSVRFX0ZBSUxVUkUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJGaWxlIHdyaXRlIGZhaWxlZCBmb3IgJXMiICUNCj4gPiAoc2VsZi5PcHRp b25zLlBrZ091dHB1dEZpbGVOYW1lKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICB0cnk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKENGaWxlLCAiYSIpIGFzIEM6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAs IGxlbihSb290LkJ1ZmZlcikpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5JbmRleCArPSAxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBEYXRhID0gUm9vdC5CdWZmZXJbaV0NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlmIHNlbGYuSW5kZXggJSBCWVRFU19QUkVfTElORSA9PSAxOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMud3JpdGUoIiAgIikN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMud3JpdGUoIjB4JTAy WCIgJSBEYXRhKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg c2VsZi5JbmRleCAhPSBnRm9ybVBrZy5Qa2dMZW5ndGg6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5JbmRleCAlIEJZVEVTX1BSRV9MSU5FID09 IDA6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMu d3JpdGUoIixcbiIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQy53cml0ZSgiLCAgIikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBF eGNlcHRpb24gYXMgZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBFZGtMb2dn ZXIuZXJyb3IoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWZnJDb21w aWxlciIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEVfV1JJVEVf RkFJTFVSRSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiJGaWxlIHdy aXRlIGZhaWxlZCBmb3Ige3NlbGYuT3B0aW9ucy5DT3V0cHV0RmlsZU5hbWV9IDoge2V9IiwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLk9wdGlvbnMuQ3JlYXRlSWZyUGtnRmlsZSBhbmQN Cj4gPiBzZWxmLk9wdGlvbnMuQ3JlYXRlUmVjb3JkTGlzdEZpbGU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBMaW5lQnVmZmVyID0gIiINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihSb290LkJ1ZmZlcikpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgIExpbmVCdWZmZXIgKz0gZiJ7Um9vdC5CdWZmZXJbaV06MD4yWH0g Ig0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgUmVjb3JkID0gZiI+e1Jvb3QuT2Zmc2V0 OjA+OFh9OiB7TGluZUJ1ZmZlcn1cbiINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIExp bmVObyA9IFJvb3QuRGF0YS5HZXRMaW5lTm8oKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgUmVjb3JkTGluZXMuYXBwZW5kKFJlQ29yZE5vZGUoUmVjb3JkLCBMaW5lTm8pKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgUm9vdC5DaGlsZCAhPSBbXToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBmb3IgQ2hpbGROb2RlIGluIFJvb3QuQ2hpbGQ6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuX0dlbkJpbmFyeUZpbGVzRGZzKENoaWxkTm9kZSwgSHBrRmlsZSwgQ0Zp bGUsIFJlY29yZExpbmVzKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2VuUmVjb3Jk TGlzdEZpbGUoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICBGaWxlTmFtZSA9IHNlbGYuT3B0aW9u cy5SZWNvcmRMaXN0RmlsZU5hbWUNCj4gPg0KPiA+ICsgICAgICAgIFJlY29yZExpbmVzID0gW10N Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX0dlblJlY29yZExpc3RGaWxlRGZzKHNlbGYuUm9vdCwg UmVjb3JkTGluZXMpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4g PiArICAgICAgICAgICAgT3V0ID0gb3BlbihGaWxlTmFtZSwgInciKQ0KPiA+DQo+ID4gKyAgICAg ICAgZXhjZXB0IEV4Y2VwdGlvbjoNCj4gPg0KPiA+ICsgICAgICAgICAgICBFZGtMb2dnZXIuZXJy b3IoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICJWZnJDb21waWxlciIsIEZJTEVfT1BFTl9G QUlMVVJFLCAiRmlsZSBvcGVuIGZhaWxlZCBmb3IgJXMiICUNCj4gPiBGaWxlTmFtZSwgTm9uZQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHRy eToNCj4gPg0KPiA+ICsgICAgICAgICAgICBPdXQud3JpdGUoIi8vXG4vLyAgQWxsIE9wY29kZSBS ZWNvcmQgTGlzdFxuLy9cbiIpDQo+ID4NCj4gPiArICAgICAgICAgICAgZm9yIFJlY29yZExpbmUg aW4gUmVjb3JkTGluZXM6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIE91dC53cml0ZShmIntS ZWNvcmRMaW5lfVxuIikNCj4gPg0KPiA+ICsgICAgICAgICAgICBPdXQud3JpdGUoZiJcblRvdGFs IFNpemUgb2YgYWxsIHJlY29yZCBpcyB7Z0Zvcm1Qa2cuT2Zmc2V0OjA+OHh9IikNCj4gPg0KPiA+ ICsgICAgICAgICAgICBnVmZyVmFyRGF0YVR5cGVEQi5EdW1wKE91dCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBPdXQuY2xvc2UoKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoN Cj4gPg0KPiA+ICsgICAgICAgICAgICBFZGtMb2dnZXIuZXJyb3IoDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICJWZnJDb21waWxlciIsIEZJTEVfV1JJVEVfRkFJTFVSRSwgIkZpbGUgd3JpdGUg ZmFpbGVkIGZvciAlcyIgJQ0KPiA+IEZpbGVOYW1lDQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX0dlblJlY29yZExpc3RGaWxlRGZzKHNlbGYs IFJvb3QsIFJlY29yZExpbmVzKToNCj4gPg0KPiA+ICsgICAgICAgIGlmIFJvb3QgaXMgTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiA+ICsgICAgICAgIGlmIFJvb3Qu T3BDb2RlIGlzIG5vdCBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIExpbmVCdWZmZXIgPSAi Ig0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIFJvb3QuQnVmZmVyIGlzIG5vdCBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oUm9vdC5CdWZmZXIp KToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIExpbmVCdWZmZXIgKz0gZiJ7Um9vdC5C dWZmZXJbaV06MD4yWH0gIg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBSZWNvcmQgPSBmIj57 Um9vdC5PZmZzZXQ6MD44WH06IHtMaW5lQnVmZmVyfVxuIg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBSZWNvcmRMaW5lcy5hcHBlbmQoUmVjb3JkKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgaWYgUm9vdC5DaGlsZCAhPSBbXToNCj4gPg0KPiA+ICsgICAgICAgICAgICBmb3IgQ2hp bGROb2RlIGluIFJvb3QuQ2hpbGQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX0dl blJlY29yZExpc3RGaWxlRGZzKENoaWxkTm9kZSwgUmVjb3JkTGluZXMpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGRlZiBEdW1wSnNvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIEZpbGVO YW1lID0gc2VsZi5PcHRpb25zLkpzb25GaWxlTmFtZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0K PiA+DQo+ID4gKyAgICAgICAgICAgIHdpdGggb3BlbihGaWxlTmFtZSwgInciKSBhcyBmOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCJ7XG4iKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBmLndyaXRlKCcgICJEYXRhU3RydWN0IiA6IHtcbicpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHBOb2RlID0gZ1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVMaXN0KCkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgd2hpbGUgcE5vZGUgaXMgbm90IE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYnICAgICJ7cE5vZGUuVHlwZU5hbWV9IiA6 IFtcbicpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBGTm9kZSA9IHBOb2RlLk1lbWJl cnMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHdoaWxlIEZOb2RlIGlzIG5vdCBOb25l Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoIntcbiIpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmJyAgIk5hbWUiOiAie0ZOb2Rl LkZpZWxkTmFtZX0iLFxuJykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBG Tm9kZS5BcnJheU51bSA+IDA6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg IGYud3JpdGUoZicgICJUeXBlIjoNCj4gPiAie0ZOb2RlLkZpZWxkVHlwZS5UeXBlTmFtZX1be0ZO b2RlLkFycmF5TnVtfV0iLFxuJykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBl bHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYnICAi VHlwZSI6ICJ7Rk5vZGUuRmllbGRUeXBlLlR5cGVOYW1lfSIsXG4nKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZicgICJPZmZzZXQiOiB7Rk5vZGUuT2Zmc2V0fVxu JykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBGTm9kZS5OZXh0IGlzIE5v bmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoIn1cbiIp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgifSwgXG4iKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgIEZOb2RlID0gRk5vZGUuTmV4dA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgaWYgcE5vZGUuTmV4dCBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgIGYud3JpdGUoIiAgICBdXG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCIg ICAgXSxcbiIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5l eHQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgiICB9LFxuIikNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAiRGF0YVN0cnVjdEF0dHJpYnV0ZSI6IHtcbicp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBOb2RlID0gZ1ZmclZhckRhdGFUeXBlREIuR2V0 RGF0YVR5cGVMaXN0KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgd2hpbGUgcE5vZGUgaXMg bm90IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYnICAgICJ7 cE5vZGUuVHlwZU5hbWV9Ijoge3tcbicpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBm LndyaXRlKGYnICAiQWxpZ25tZW50Ijoge3BOb2RlLkFsaWdufSxcbicpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBmLndyaXRlKGYnICAiVG90YWxTaXplIjoge3BOb2RlLlRvdGFsU2l6 ZX1cbicpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBwTm9kZS5OZXh0IGlzIE5v bmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgifVxuIikNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgZi53cml0ZSgifSxcbiIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBwTm9kZSA9IHBOb2RlLk5leHQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgi ICB9LFxuIikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAiVmFyRGVmaW5l IiA6IHtcbicpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBWc05vZGUgPSBnVmZyRGF0YVN0 b3JhZ2UuR2V0QnVmZmVyVmFyU3RvcmVMaXN0KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg d2hpbGUgcFZzTm9kZSBpcyBub3QgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg IGYud3JpdGUoZicgICAgIntwVnNOb2RlLlZhclN0b3JlTmFtZX0iOiB7e1xuJykNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZicgICJUeXBlIjogIntwVnNOb2RlLkRhdGFU eXBlLlR5cGVOYW1lfSIsXG4nKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0 ZShmJyAgIkF0dHJpYnV0ZXMiOiB7cFZzTm9kZS5BdHRyaWJ1dGVzfSxcbicpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYnICAiVmFyU3RvcmVJZCI6IHtwVnNOb2RlLlZh clN0b3JlSWR9LFxuJykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZicg ICJWZW5kb3JHdWlkIjoge3BWc05vZGUuR3VpZC50b19zdHJpbmcoKX1cbicpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBpZiBwVnNOb2RlLk5leHQgaXMgTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCJ9XG4iKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndy aXRlKCJ9LFxuIikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHBW c05vZGUgPSBwVnNOb2RlLk5leHQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgi ICB9LFxuIikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAiRGF0YSIgOiBb XG4nKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwVnNOb2RlID0gZ1ZmckJ1ZmZlckNvbmZp Zy5HZXRWYXJJdGVtTGlzdCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHdoaWxlIHBWc05v ZGUgaXMgbm90IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBwVnNOb2Rl LklkIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgcFZzTm9kZSA9 IHBWc05vZGUuTmV4dA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBwSW5mb05vZGUgPSBwVnNOb2RlLkluZm9T dHJMaXN0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICB3aGlsZSBwSW5mb05vZGUgaXMg bm90IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgie1xu IikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYnICAiVmVuZG9y R3VpZCI6IHtwVnNOb2RlLkd1aWQudG9fc3RyaW5nKCl9LFxuJykNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICBmLndyaXRlKGYnICAiVmFyTmFtZSI6ICJ7cFZzTm9kZS5OYW1lfSIs XG4nKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZicgICJEZWZh dWx0U3RvcmUiOiAie3BWc05vZGUuSWR9IixcbicpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgZi53cml0ZShmJyAgIlNpemUiOiAie3BJbmZvTm9kZS5XaWR0aH0iLFxuJykNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYnICAiT2Zmc2V0Ijoge3BJ bmZvTm9kZS5PZmZzZXR9LFxuJykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBp ZiAoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBJbmZvTm9kZS5UeXBl ID09IEVGSV9JRlJfVFlQRV9EQVRFDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFuZCB0eXBlKHBJbmZvTm9kZS5WYWx1ZSkgPT0gRUZJX0hJSV9EQVRFDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZi53cml0ZSgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGYnICAiVmFsdWUiOg0KPiA+DQo+ICJ7cEluZm9Ob2RlLlZhbHVlLlllYXJ9L3twSW5mb05v ZGUuVmFsdWUuTW9udGh9L3twSW5mb05vZGUuVmFsdWUuRGF5fSJcbicNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgIGVsaWYgKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwSW5mb05v ZGUuVHlwZSA9PSBFRklfSUZSX1RZUEVfVElNRQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhbmQgdHlwZShwSW5mb05vZGUuVmFsdWUpID09IEVGSV9ISUlfVElNRQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICk6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGYud3JpdGUoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmJyAgIlZhbHVlIjoNCj4gPg0KPiAie3BJbmZvTm9kZS5WYWx1ZS5Ib3VyfTp7 cEluZm9Ob2RlLlZhbHVlLk1pbnV0ZX06e3BJbmZvTm9kZS5WYWx1ZS5TZWNvbmQNCj4gPiB9Ilxu Jw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgZWxpZiAoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBJbmZvTm9kZS5UeXBlID09IEVGSV9JRlJfVFlQRV9SRUYNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHR5cGUocEluZm9Ob2RlLlZhbHVlKSA9PSBF RklfSElJX1JFRg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICk6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmJyAgIlZhbHVlIjoNCj4gPg0KPiAie3BJbmZvTm9k ZS5WYWx1ZS5RdWVzdGlvbklkfTt7cEluZm9Ob2RlLlZhbHVlLkZvcm1JZH07e3BJbmZvTm9kZS5W YWx1ZS5GDQo+ID4gb3JtU2V0R3VpZC50b19zdHJpbmcoKX07e3BJbmZvTm9kZS5WYWx1ZS5EZXZp Y2VQYXRofSJcbicNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZicgICJWYWx1ZSI6ICJ7cEluZm9Ob2RlLlZhbHVl fSJcbicpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53 cml0ZSgifSxcbiIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgcEluZm9Ob2Rl ID0gcEluZm9Ob2RlLk5leHQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHBWc05vZGUg PSBwVnNOb2RlLk5leHQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgie1xuIikN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAiVmVuZG9yR3VpZCI6ICJOQSIs XG4nKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICJWYXJOYW1lIjogIk5B IixcbicpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgIkRlZmF1bHRTdG9y ZSI6ICJOQSIsXG4nKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICJTaXpl IjogMCxcbicpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgIk9mZnNldCI6 IDAsXG4nKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICJWYWx1ZSI6ICIw eDAwIlxuJykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgifVxuIikNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgiICBdXG4iKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBmLndyaXRlKCJ9XG4iKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAg IGYuY2xvc2UoKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoNCj4gPg0KPiA+ ICsgICAgICAgICAgICBFZGtMb2dnZXIuZXJyb3IoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICJWZnJDb21waWxlciIsIEZJTEVfT1BFTl9GQUlMVVJFLCAiRmlsZSBvcGVuIGZhaWxlZCBmb3Ig JXMiICUNCj4gPiBGaWxlTmFtZSwgTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9EdW1wUXVlc3Rpb25JbmZvc0ZvclhNTENMSShzZWxm LCBSb290LCBmLCBWYWx1ZUluZGVudCk6DQo+ID4NCj4gPiArICAgICAgICBJbmZvID0gUm9vdC5E YXRhLkdldEluZm8oKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgUm9vdC5Db25kaXRpb24gaXMgbm90 IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1jb25k aXRpb246ICAne1Jvb3QuQ29uZGl0aW9ufSdcbiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBpZiBSb290LkRhdGEuUU5hbWUgaXMgbm90IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAg ICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1uYW1lOiAge1Jvb3QuRGF0YS5RTmFtZX0gICMgIE9w dGlvbmFsDQo+ID4gSW5wdXRcbiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBS b290LkRhdGEuVmFySWRTdHIgIT0gIiI6DQo+ID4NCj4gPiArICAgICAgICAgICAgZi53cml0ZShm IntWYWx1ZUluZGVudH12YXJpZDogIHtSb290LkRhdGEuVmFySWRTdHJ9ICAjICBPcHRpb25hbA0K PiA+IElucHV0XG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgUm9vdC5EYXRhLkhhc1F1ZXN0aW9u SWQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgZi53cml0ZSgNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgZiJ7VmFsdWVJbmRlbnR9cXVlc3Rpb25pZDogIHsnMHgleCcgJSBJbmZvLlF1ZXN0aW9u LlF1ZXN0aW9uSWR9ICAjDQo+ID4gT3B0aW9uYWwgSW5wdXRcbiINCj4gPg0KPiA+ICsgICAgICAg ICAgICApDQo+ID4NCj4gPiArICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fXByb21wdDoN Cj4gPiAne3NlbGYuX0Rpc3BsYXlVbmlTdHIoSW5mby5RdWVzdGlvbi5IZWFkZXIuUHJvbXB0KX0n XG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1oZWxwOg0KPiA+ ICd7c2VsZi5fRGlzcGxheVVuaVN0cihJbmZvLlF1ZXN0aW9uLkhlYWRlci5IZWxwKX0nXG4iKQ0K PiA+DQo+ID4gKyAgICAgICAgaWYgUm9vdC5EYXRhLkZsYWdzU3RyZWFtICE9ICIiOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9ZmxhZ3M6ICB7Um9vdC5EYXRh LkZsYWdzU3RyZWFtfSAgIyBPcHRpb25hbA0KPiA+IGlucHV0ICwgZmxhZ3NcbiIpDQo+ID4NCj4g PiArICAgICAgICBpZiBSb290LkRhdGEuSGFzS2V5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGYu d3JpdGUoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYie1ZhbHVlSW5kZW50fWtleTogIHsn MHglMHggJyAlIEluZm8uUXVlc3Rpb24uUXVlc3Rpb25JZH0gIw0KPiA+IE9wdGlvbmFsIGlucHV0 LCBrZXlcbiINCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiBfRGlzcGxheVVuaVN0cihzZWxmLCBLZXkpOg0KPiA+DQo+ID4gKyAgICAgICAgU3Ry SWQgPSBmIjB4e0tleTowNHh9Ig0KPiA+DQo+ID4gKyAgICAgICAgRm9ybWF0ZWRTdHJJZCA9IFN0 cklkWzoyXSArIFN0cklkWzI6XS51cHBlcigpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gZiJT VFJJTkdfVE9LRU4oe0Zvcm1hdGVkU3RySWR9KSINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIER1bXBZYW1sRm9yWE1MQ0xJKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgRmlsZU5hbWUg PSBzZWxmLk9wdGlvbnMuWWFtbEZpbGVOYW1lDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgd2l0aCBvcGVuKEZpbGVOYW1lLCAidyIsIGVuY29kaW5nPSJ1dGYt OCIpIGFzIGY6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoIiMjIERPIE5PVCBS RU1PVkUgLS0gWUFNTCBNb2RlXG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9E dW1wWWFtbEZvclhNTENMSURmcyhzZWxmLlJvb3QsIGYpDQo+ID4NCj4gPiArICAgICAgICAgICAg Zi5jbG9zZSgpDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgRXhjZXB0aW9uOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIEVka0xvZ2dlci5lcnJvcigNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg IlZmckNvbXBpbGVyIiwgRklMRV9PUEVOX0ZBSUxVUkUsICJGaWxlIG9wZW4gZmFpbGVkIGZvciAl cyIgJQ0KPiA+IEZpbGVOYW1lLCBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgX0R1bXBZYW1sRm9yWE1MQ0xJRGZzKHNlbGYsIFJvb3Qs IGYpOg0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIFJv b3QgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgaXMgbm90IE5vbmU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIGlmIFJvb3QuTGV2ZWwgPT0gMDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIEtleUluZGVudCA9ICIiDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBWYWx1ZUlu ZGVudCA9ICIiDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBLZXlJbmRlbnQgPSAiICIgKiAoKFJvb3QuTGV2ZWwgKiAyIC0gMSkg KiAyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgVmFsdWVJbmRlbnQgPSAiICIgKiAo KFJvb3QuTGV2ZWwgKiAyICsgMSkgKiAyKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBJbmZvID0gUm9vdC5EYXRhLkdldEluZm8oKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX0ZPUk1fU0VUX09QOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShLZXlJbmRlbnQgKyAiZm9ybXNl dDpcbiIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBWYWx1ZUluZGVudCA9ICIgIiAq IChSb290LkxldmVsICsgMSkgKiAyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndy aXRlKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYie1ZhbHVlSW5kZW50fWd1 aWQ6ICAne3t7SW5mby5HdWlkLkRhdGExOiN4fSwNCj4gPiB7SW5mby5HdWlkLkRhdGEyOiN4fSwg e0luZm8uR3VpZC5EYXRhMzojeH0sIHt7IHsnLCAnLmpvaW4oZid7eDojeH0nIGZvciB4IGluDQo+ ID4gSW5mby5HdWlkLkRhdGE0KX19fX19J1xuIg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVu dH10aXRsZToNCj4gPiAne3NlbGYuX0Rpc3BsYXlVbmlTdHIoSW5mby5Gb3JtU2V0VGl0bGUpfSdc biIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50 fWhlbHA6DQo+ICd7c2VsZi5fRGlzcGxheVVuaVN0cihJbmZvLkhlbHApfSdcbiIpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBSb290LkRhdGEuQ2xhc3NHdWlk TnVtICE9IDA6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShWYWx1 ZUluZGVudCArICJjbGFzc2d1aWQ6ICAiKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihSb290LkRhdGEuQ2xhc3NHdWlkKSk6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd1aWQgPSBSb290LkRhdGEuR2V0Q2xhc3NH dWlkKClbaV0NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaSAhPSBs ZW4oUm9vdC5EYXRhLkNsYXNzR3VpZCkgLSAxOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZi53cml0ZSgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmIid7e3tHdWlkLkRhdGExOiN4fSwge0d1aWQuRGF0YTI6I3h9LCB7R3Vp ZC5EYXRhMzojeH0sDQo+ID4ge3sgeycsICcuam9pbihmJ3t4OiN4fScgZm9yIHggaW4gR3VpZC5E YXRhNCl9fX19fScgfCAiDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICApDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYiJ3t7e0d1aWQuRGF0YTE6I3h9LCB7 R3VpZC5EYXRhMjojeH0sIHtHdWlkLkRhdGEzOiN4fSwNCj4gPiB7eyB7JywgJy5qb2luKGYne3g6 I3h9JyBmb3IgeCBpbiBHdWlkLkRhdGE0KX19fX19JyAgIyBPcHRpb25hbCBJbnB1dCBcbiINCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmICgNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICBSb290LkNoaWxkICE9IFtdDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgYW5kIFJvb3QuQ2hpbGRbMF0uT3BDb2RlICE9IEVGSV9JRlJfRU5EX09QDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHR5cGUoUm9vdC5DaGlsZFswXS5EYXRhKSAh PSBJZnJTdWJDbGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0eXBl KFJvb3QuQ2hpbGRbMF0uRGF0YSkgIT0gSWZyQ2xhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShWYWx1 ZUluZGVudCArICJjb21wb25lbnQ6ICBcbiIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBlbGlmICgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICB0eXBlKFJvb3QuQ2hp bGRbMF0uRGF0YSkgPT0gSWZyQ2xhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICBhbmQgdHlwZShSb290LkNoaWxkWzFdLkRhdGEpID09IElmclN1YkNsYXNzDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg IFJvb3QuQ2hpbGRbMF0uRGF0YS5IYXNTdWJDbGFzcyA9IFRydWUNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9WQVJTVE9SRV9P UDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoS2V5SW5kZW50ICsgIi0g dmFyc3RvcmU6XG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntW YWx1ZUluZGVudH10eXBlOiAge1Jvb3QuRGF0YS5UeXBlfVxuIikNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIGlmIFJvb3QuRGF0YS5IYXNWYXJTdG9yZUlkOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9dmFyaWQ6ICB7SW5mby5W YXJTdG9yZUlkOiMwNHh9ICMNCj4gT3B0aW9uYWwNCj4gPiBJbnB1dFxuIikNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIE5hbWUgPSAiIi5qb2luKGNocih4KSBmb3IgeCBpbiBJbmZvLk5h bWUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50 fW5hbWU6ICB7TmFtZX1cbiIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRl KA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYie1ZhbHVlSW5kZW50fWd1aWQ6 ICd7e3tJbmZvLkd1aWQuRGF0YTE6I3h9LA0KPiA+IHtJbmZvLkd1aWQuRGF0YTI6I3h9LCB7SW5m by5HdWlkLkRhdGEzOiN4fSwge3sgeycsICcuam9pbihmJ3t4OiN4fScgZm9yIHggaW4NCj4gPiBJ bmZvLkd1aWQuRGF0YTQpfX19fX0nXG4iDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09 IEVGSV9JRlJfVkFSU1RPUkVfRUZJX09QOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg Zi53cml0ZShLZXlJbmRlbnQgKyAiLSBlZml2YXJzdG9yZTpcbiIpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fXR5cGU6ICB7Um9vdC5EYXRhLlR5 cGV9XG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5EYXRhLkhhc1Zh clN0b3JlSWQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgInZhcmlkIiBp biBSb290LkRpY3Q6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3Jp dGUoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIntWYWx1ZUlu ZGVudH12YXJpZDogIHtJbmZvLlZhclN0b3JlSWQ6IzA0eH0gIyBPcHRpb25hbA0KPiA+IElucHV0 XG4iDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9YXR0cmlidXRlOiAge1Jv b3QuRGF0YS5BdHRyaWJ1dGVzVGV4dH0gXG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgaWYgUm9vdC5EYXRhLk5hbWVTdHJpbmdJZDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICBmLndyaXRlKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBm IntWYWx1ZUluZGVudH1uYW1lOg0KPiA+ICd7c2VsZi5fRGlzcGxheVVuaVN0cihSb290LkRhdGEu TmFtZVN0cmluZ0lkKX0nXG4iDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoVmFsdWVJbmRlbnQgKyAi dmFyc2l6ZTogICIgKyBSb290LkRhdGEuVmFyU2l6ZSArICJcbiIpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIE5h bWUgPSAiIi5qb2luKGNocih4KSBmb3IgeCBpbiBJbmZvLk5hbWUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1uYW1lOiAge05hbWV9XG4i KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICBmIntWYWx1ZUluZGVudH1ndWlkOiAgJ3t7e0luZm8uR3VpZC5E YXRhMTojeH0sDQo+ID4ge0luZm8uR3VpZC5EYXRhMjojeH0sIHtJbmZvLkd1aWQuRGF0YTM6I3h9 LCB7eyB7JywgJy5qb2luKGYne3g6I3h9JyBmb3IgeCBpbg0KPiA+IEluZm8uR3VpZC5EYXRhNCl9 fX19fSdcbiINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9WQVJTVE9S RV9OQU1FX1ZBTFVFX09QOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShL ZXlJbmRlbnQgKyAiLSBuYW1ldmFsdWV2YXJzdG9yZTpcbiIpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fXR5cGU6ICB7Um9vdC5EYXRhLlR5cGV9 XG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5EYXRhLkhhc1ZhclN0 b3JlSWQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1 ZUluZGVudH12YXJpZDogIHtJbmZvLlZhclN0b3JlSWQ6IzA0eH0gIw0KPiBPcHRpb25hbA0KPiA+ IElucHV0XG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmIntWYWx1ZUluZGVudH1ndWlkOiAgJ3t7e0lu Zm8uR3VpZC5EYXRhMTojeH0sDQo+ID4ge0luZm8uR3VpZC5EYXRhMjojeH0sIHtJbmZvLkd1aWQu RGF0YTM6I3h9LCB7eyB7JywgJy5qb2luKGYne3g6I3h9JyBmb3IgeCBpbg0KPiA+IEluZm8uR3Vp ZC5EYXRhNCl9fX19fSdcbiINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuRGF0YS5OYW1lSXRlbUxpc3QgIT0gW106 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShWYWx1ZUluZGVudCAr ICJuYW1ldGFibGU6IFxuIikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmb3Ig TmFtZUl0ZW0gaW4gUm9vdC5EYXRhLk5hbWVJdGVtTGlzdDoNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH0gLSBuYW1lOg0KPiA+ICd7 c2VsZi5fRGlzcGxheVVuaVN0cihOYW1lSXRlbSl9J1xuIikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9ERUZBVUxUU1RPUkVf T1A6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBnVmZyRGVmYXVsdFN0b3JlLlVwZGF0 ZURlZmF1bHRUeXBlKFJvb3QpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfU0hPV05fREVGQVVMVFNUT1JFX09QOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShLZXlJbmRlbnQgKyAiLSBkZWZhdWx0c3Rv cmU6XG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUlu ZGVudH10eXBlOiAge1Jvb3QuRGF0YS5UeXBlfVxuIikNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9cHJvbXB0Og0KPiA+ICd7c2VsZi5fRGlzcGxh eVVuaVN0cihJbmZvLkRlZmF1bHROYW1lKX0nXG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgaWYgUm9vdC5EYXRhLkhhc0F0dHI6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgZi53cml0ZSgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiJ7 VmFsdWVJbmRlbnR9YXR0cmlidXRlOiAgeycweCUwNHgnICUgSW5mby5EZWZhdWx0SWR9ICMNCj4g PiBEZWZhdWx0IElELCBPcHRpb25hbCBpbnB1dFxuIg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgUm9v dC5PcENvZGUgPT0gRUZJX0lGUl9GT1JNX09QOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgZi53cml0ZShLZXlJbmRlbnQgKyAiLSBmb3JtOiBcbiIpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiBpcyBub3QgTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWNvbmRpdGlvbjogICd7 Um9vdC5Db25kaXRpb259J1xuIikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9Zm9ybWlkOiAgeycweCV4JyAlIEluZm8uRm9y bUlkfSBcbiIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVl SW5kZW50fXRpdGxlOg0KPiA+ICd7c2VsZi5fRGlzcGxheVVuaVN0cihJbmZvLkZvcm1UaXRsZSl9 J1xuIikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIFJvb3Qu Q2hpbGQgIT0gW10gYW5kIFJvb3QuQ2hpbGRbMF0uT3BDb2RlICE9DQo+IEVGSV9JRlJfRU5EX09Q Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoVmFsdWVJbmRlbnQg KyAiY29tcG9uZW50OiAgXG4iKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX0ZPUk1fTUFQX09QOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgTWV0aG9kTWFwTGlzdCA9IFJvb3QuRGF0YS5HZXRNZXRob2RNYXBMaXN0 KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoS2V5SW5kZW50ICsgIi0g Zm9ybW1hcDogXG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntW YWx1ZUluZGVudH1mb3JtaWQ6ICB7JzB4JXgnICUgSW5mby5Gb3JtSWR9IFxuIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uIGlzIG5v dCBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFs dWVJbmRlbnR9Y29uZGl0aW9uOiAgJ3tSb290LkNvbmRpdGlvbn0nXG4iKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgTWV0aG9kTWFwTGlzdCAhPSBbXToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKFZhbHVlSW5kZW50ICsgIm1h cDogIyBvcHRpb25hbCBpbnB1dFxuIikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICBmb3IgTWV0aG9kTWFwIGluIE1ldGhvZE1hcExpc3Q6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9LSBtYXB0aXRsZToNCj4gPiB7 TWV0aG9kTWFwLk1ldGhvZFRpdGxlfVxuIikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZi53cml0ZSgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGYie1ZhbHVlSW5kZW50fSAgbWFwZ3VpZDogICd7e3t7Ig0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZiJ7TWV0aG9kTWFwLk1ldGhvZElkZW50aWZpZXIuRGF0 YTF9LA0KPiA+IHtNZXRob2RNYXAuTWV0aG9kSWRlbnRpZmllci5EYXRhMn0sDQo+ID4ge01ldGhv ZE1hcC5NZXRob2RJZGVudGlmaWVyLkRhdGEzfSwiDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmInt7IHsnLCAnLmpvaW4oJzB4JXgnICUgeCBmb3IgeCBpbg0KPiA+ IE1ldGhvZE1hcC5NZXRob2RJZGVudGlmaWVyLkRhdGE0KX0gfX0iDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmIn19fX0nXG4iDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIFJv b3QuQ2hpbGQgIT0gW10gYW5kIFJvb3QuQ2hpbGRbMF0uT3BDb2RlICE9DQo+IEVGSV9JRlJfRU5E X09QOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoVmFsdWVJbmRl bnQgKyAiY29tcG9uZW50OiAgXG4iKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX0lNQUdFX09QOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1pbWFnZTogICd7c2VsZi5fRGlz cGxheVVuaVN0cihJbmZvLklkKX0nXG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBS b290Lk9wQ29kZSA9PSBFRklfSUZSX1JVTEVfT1A6ICAjDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICBmLndyaXRlKGYie0tleUluZGVudH0tIHJ1bGU6XG4iKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5Db25kaXRpb24gaXMgbm90IE5vbmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVu dH1jb25kaXRpb246ICAne1Jvb3QuQ29uZGl0aW9ufSdcbiIpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgIGYie1ZhbHVlSW5kZW50fW5hbWU6ICB7Um9vdC5EYXRhLkdldFJ1bGVOYW1lKCl9 XG4iDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZiJ7VmFsdWVJbmRlbnR9ZXhw cmVzc2lvbjogIHtSb290LkV4cHJlc3Npb259IFxuIg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBSb290Lk9w Q29kZSA9PSBFRklfSUZSX1NVQlRJVExFX09QOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgZi53cml0ZShLZXlJbmRlbnQgKyAiLSBzdWJ0aXRsZTpcbiIpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiBpcyBub3QgTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWNvbmRpdGlvbjog ICd7Um9vdC5Db25kaXRpb259J1xuIikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGYu d3JpdGUoZiJ7VmFsdWVJbmRlbnR9dGV4dDoNCj4gPiAne3NlbGYuX0Rpc3BsYXlVbmlTdHIoSW5m by5TdGF0ZW1lbnQuUHJvbXB0KX0nXG4iKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgaWYgUm9vdC5EYXRhLkZsYWdzU3RyZWFtICE9ICIiOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9ZmxhZ3M6ICB7Um9v dC5EYXRhLkZsYWdzU3RyZWFtfSAgIw0KPiA+IE9wdGlvbmFsIElucHV0XG4iKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5DaGlsZCAhPSBbXSBhbmQg Um9vdC5DaGlsZFswXS5PcENvZGUgIT0NCj4gRUZJX0lGUl9FTkRfT1A6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1jb21wb25lbnQ6ICBc biIpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFJvb3QuT3BDb2Rl ID09IEVGSV9JRlJfVEVYVF9PUDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGYud3Jp dGUoS2V5SW5kZW50ICsgIi0gdGV4dDpcbiIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBpZiBSb290LkNvbmRpdGlvbiBpcyBub3QgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWNvbmRpdGlvbjogICd7Um9vdC5Db25k aXRpb259J1xuIikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIHR5cGUoSW5mbykg PT0gRUZJX0lGUl9URVhUOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3Jp dGUoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYie1ZhbHVlSW5kZW50 fWhlbHA6DQo+ID4gJ3tzZWxmLl9EaXNwbGF5VW5pU3RyKEluZm8uU3RhdGVtZW50LkhlbHApfSdc biINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgZi53cml0ZSgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZiJ7VmFsdWVJbmRlbnR9cHJvbXB0Og0KPiA+ICd7c2VsZi5fRGlzcGxheVVuaVN0 cihJbmZvLlN0YXRlbWVudC5Qcm9tcHQpfSdcbiINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5EYXRh Lkhhc1RleHRUd286DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3Jp dGUoZiJ7VmFsdWVJbmRlbnR9dGV4dDoNCj4gPiAne3NlbGYuX0Rpc3BsYXlVbmlTdHIoSW5mby5U ZXh0VHdvKX0nXG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgdHlwZShJbmZv KSA9PSBFRklfSUZSX0FDVElPTjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBm LndyaXRlKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIntWYWx1ZUlu ZGVudH1oZWxwOg0KPiA+ICd7c2VsZi5fRGlzcGxheVVuaVN0cihJbmZvLlF1ZXN0aW9uLkhlYWRl ci5IZWxwKX0nXG4iDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGYie1ZhbHVlSW5kZW50fXByb21wdDoNCj4gPiAne3NlbGYuX0Rp c3BsYXlVbmlTdHIoSW5mby5RdWVzdGlvbi5IZWFkZXIuUHJvbXB0KX0nXG4iDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgIGlmIFJvb3QuRGF0YS5GbGFnc1N0cmVhbSAhPSAiIjoNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZi53cml0ZSgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGYie1ZhbHVlSW5kZW50fWZsYWdzOiAge1Jvb3QuRGF0YS5GbGFnc1N0cmVh bX0gICMNCj4gT3B0aW9uYWwNCj4gPiBJbnB1dCwgUXVlc3Rpb24gRmxhZ3NcbiINCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgIGlmIFJvb3QuRGF0YS5IYXNLZXk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGYud3JpdGUoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmIntWYWx1ZUluZGVudH1rZXk6ICB7JzB4JTA0eCcgJQ0KPiBJbmZvLlF1ZXN0aW9u LlF1ZXN0aW9uSWR9DQo+ID4gIyBPcHRpb25hbCBJbnB1dCwgUXVlc3Rpb24gUXVlc3Rpb25JZFxu Ig0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBpZiBSb290LkNoaWxkICE9IFtdIGFuZCBSb290LkNoaWxkWzBdLk9w Q29kZSAhPQ0KPiBFRklfSUZSX0VORF9PUDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICBmLndyaXRlKFZhbHVlSW5kZW50ICsgImNvbXBvbmVudDogIFxuIikNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9BQ1RJ T05fT1A6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKEtleUluZGVudCAr ICItIGFjdGlvbjpcbiIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLl9EdW1w UXVlc3Rpb25JbmZvc0ZvclhNTENMSShSb290LCBmLCBWYWx1ZUluZGVudCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9Y29uZmlnOiAge0luZm8u UXVlc3Rpb25Db25maWd9ICAjDQo+ID4gUXVlc3Rpb25Db25maWdcbiIpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBpZiBSb290LkNoaWxkICE9IFtdIGFuZCBSb290LkNoaWxkWzBdLk9w Q29kZSAhPQ0KPiBFRklfSUZSX0VORF9PUDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICBmLndyaXRlKFZhbHVlSW5kZW50ICsgImNvbXBvbmVudDogIFxuIikNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9PTkVf T0ZfT1A6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKEtleUluZGVudCAr ICItIG9uZW9mOlxuIikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg IHNlbGYuX0R1bXBRdWVzdGlvbkluZm9zRm9yWE1MQ0xJKFJvb3QsIGYsIFZhbHVlSW5kZW50KQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5EYXRhLkhh c01pbk1heDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIntWYWx1ZUluZGVudH1tYXhpbXVt OiAgeycweCUweCcgJSBJbmZvLkRhdGEuTWF4VmFsdWV9DQo+ICMNCj4gPiBPcHRpb25hbCBJbnB1 dFxuIg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmIntWYWx1ZUluZGVudH1taW5pbXVtOiAgeycweCUweCcgJSBJbmZvLkRhdGEu TWluVmFsdWV9DQo+ICMNCj4gPiBPcHRpb25hbCBJbnB1dFxuIg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIGlmIFJvb3QuRGF0YS5IYXNTdGVwOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9c3RlcDogIHtJbmZvLkRhdGEuU3RlcH0gIyBPcHRp b25hbA0KPiA+IElucHV0XG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9v dC5DaGlsZCAhPSBbXSBhbmQgUm9vdC5DaGlsZFswXS5PcENvZGUgIT0NCj4gRUZJX0lGUl9FTkRf T1A6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShWYWx1ZUluZGVu dCArICJjb21wb25lbnQ6ICBcbiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfT05FX09GX09QVElPTl9PUDoNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoS2V5SW5kZW50ICsgIi0gb3B0aW9uOiAgXG4i KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5Db25kaXRpb24gaXMgbm90 IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1 ZUluZGVudH1jb25kaXRpb246ICAne1Jvb3QuQ29uZGl0aW9ufSdcbiIpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fXRleHQ6DQo+ICd7c2VsZi5f RGlzcGxheVVuaVN0cihJbmZvLk9wdGlvbil9J1xuIikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIGlmIHR5cGUoUm9vdC5EYXRhKSA9PSBJZnJPbmVPZk9wdGlvbjoN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBSb290LkRhdGEuVmFsdWVTdHJl YW0gIT0gIiI6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUo ZiJ7VmFsdWVJbmRlbnR9dmFsdWU6ICB7Um9vdC5EYXRhLlZhbHVlU3RyZWFtfVxuIikNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuRGF0YS5GbGFnc1N0 cmVhbSAhPSAiIjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYi e1ZhbHVlSW5kZW50fWZsYWdzOiAge1Jvb3QuRGF0YS5GbGFnc1N0cmVhbX0gIw0KPiA+IE9wdGlv bmFsIElucHV0XG4iKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg aWYgUm9vdC5EYXRhLklmck9wdGlvbktleSBpcyBub3QgTm9uZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICBmLndyaXRlKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmIntWYWx1ZUluZGVudH1rZXk6ICB7JzB4JTA0eCcgJQ0KPiA+IFJvb3QuRGF0YS5H ZXRJZnJPcHRpb25LZXkoKX0gIyBPcHRpb25hbCBJbnB1dFxuIg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIGlmIFJvb3QuQ2hpbGQgIT0gW10gYW5kIFJvb3QuQ2hpbGRbMF0uT3BDb2RlICE9DQo+IEVG SV9JRlJfRU5EX09QOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUo VmFsdWVJbmRlbnQgKyAiY29tcG9uZW50OiAgXG4iKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX0RFRkFVTFRfT1A6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICAjIOOAgHNwZWNpZmljIGNvbmRpdGlvbiBoZXJlDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBSb290LlBvc2l0aW9uICE9ICJEbyBub3Qg ZGlzcGxheSI6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShLZXlJ bmRlbnQgKyAiLSBkZWZhdWx0OlxuIikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICBpZiBSb290LkNvbmRpdGlvbiBpcyBub3QgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1jb25kaXRpb246ICAne1Jvb3Qu Q29uZGl0aW9ufSdcbiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgaWYgdHlwZShSb290LkRhdGEpID09IElmckRlZmF1bHQ6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFN0ciA9IFJvb3QuRGF0YS5WYWx1ZVN0cmVhbQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBTdHIuZmluZCgiOyIpICE9IC0xOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmTGlzdCA9IFN0ci5z cGxpdCgiOyIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHIg PSAoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmTGlz dFswXQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIjsi DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBSZWZMaXN0 WzFdDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiOyIN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGYie3t7SW5m by5WYWx1ZVswXS5Gb3JtU2V0R3VpZC5EYXRhMTojeH0sDQo+ID4ge0luZm8uVmFsdWVbMF0uRm9y bVNldEd1aWQuRGF0YTI6I3h9LA0KPiB7SW5mby5WYWx1ZVswXS5Gb3JtU2V0R3VpZC5EYXRhMzoj eH0sDQo+ID4ge3sgeycsICcuam9pbihmJ3t4OiN4fScgZm9yIHggaW4gSW5mby5WYWx1ZVswXS5G b3JtU2V0R3VpZC5EYXRhNCl9fX19fSINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArICI7Ig0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsgc2VsZi5fRGlzcGxheVVuaVN0cihJbmZvLlZhbHVlWzBdLkRldmljZVBhdGgp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0ciAhPSAiIjoNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0ciA9IFN0ci5yZXBsYWNl KCJ7IiwgIlsiKS5yZXBsYWNlKCJ9IiwgIl0iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFN0ci5maW5kKCI6IikgIT0gLTENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvciBTdHIuZmluZCgiLyIpICE9IC0xDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgU3RyLmZpbmQoIjsiKSAhPSAtMQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHIgPSAiKCIgKyBTdHIgKyAiKSIN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFs dWVJbmRlbnR9dmFsdWU6ICB7U3RyfVxuIikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICBlbGlmIHR5cGUoUm9vdC5EYXRhKSA9PSBJZnJEZWZhdWx0MjoNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVu dH12YWx1ZV9leHA6DQo+ID4gJ3tSb290LkNoaWxkWzBdLkV4cHJlc3Npb259J1xuIikNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBSb290LkRhdGEuRGVm YXVsdFN0b3JlICE9ICIiOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBm LndyaXRlKGYie1ZhbHVlSW5kZW50fWRlZmF1bHRzdG9yZToNCj4gPiB7Um9vdC5EYXRhLkRlZmF1 bHRTdG9yZX1cbiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFJv b3QuT3BDb2RlID09IEVGSV9JRlJfT1JERVJFRF9MSVNUX09QOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgZi53cml0ZShLZXlJbmRlbnQgKyAiLSBvcmRlcmVkbGlzdDpcbiIpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLl9EdW1wUXVlc3Rpb25JbmZvc0ZvclhNTENM SShSb290LCBmLCBWYWx1ZUluZGVudCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlm IFJvb3QuRGF0YS5IYXNNYXhDb250YWluZXJzOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgIGYud3JpdGUoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYi e1ZhbHVlSW5kZW50fW1heGNvbnRhaW5lcnM6ICB7SW5mby5NYXhDb250YWluZXJzfSAjDQo+ID4g T3B0aW9uYWwgSW5wdXRcbiINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBSb290LkNoaWxkICE9 IFtdIGFuZCBSb290LkNoaWxkWzBdLk9wQ29kZSAhPQ0KPiBFRklfSUZSX0VORF9PUDoNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKFZhbHVlSW5kZW50ICsgImNvbXBv bmVudDogIFxuIikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgUm9v dC5PcENvZGUgPT0gRUZJX0lGUl9OVU1FUklDX09QOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgZi53cml0ZShLZXlJbmRlbnQgKyAiLSBudW1lcmljOlxuIikNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgIHNlbGYuX0R1bXBRdWVzdGlvbkluZm9zRm9yWE1MQ0xJKFJvb3QsIGYs IFZhbHVlSW5kZW50KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntW YWx1ZUluZGVudH1tYXhpbXVtOiAgeycweCUweCcgJQ0KPiA+IEluZm8uRGF0YS5NYXhWYWx1ZX1c biIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50 fW1pbmltdW06ICB7JzB4JTB4JyAlDQo+ID4gSW5mby5EYXRhLk1pblZhbHVlfVxuIikNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuRGF0YS5IYXNTdGVw Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRl bnR9c3RlcDogIHtJbmZvLkRhdGEuU3RlcH0gIyBPcHRpb25hbA0KPiA+IElucHV0XG4iKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5DaGlsZCAhPSBb XSBhbmQgUm9vdC5DaGlsZFswXS5PcENvZGUgIT0NCj4gRUZJX0lGUl9FTkRfT1A6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShWYWx1ZUluZGVudCArICJjb21wb25l bnQ6ICBcbiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFJvb3Qu T3BDb2RlID09IEVGSV9JRlJfQ0hFQ0tCT1hfT1A6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICBmLndyaXRlKEtleUluZGVudCArICItIGNoZWNrYm94OlxuIikNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgIHNlbGYuX0R1bXBRdWVzdGlvbkluZm9zRm9yWE1MQ0xJKFJvb3QsIGYs IFZhbHVlSW5kZW50KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5DaGls ZCAhPSBbXSBhbmQgUm9vdC5DaGlsZFswXS5PcENvZGUgIT0NCj4gRUZJX0lGUl9FTkRfT1A6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShWYWx1ZUluZGVudCArICJj b21wb25lbnQ6ICBcbiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlm IFJvb3QuT3BDb2RlID09IEVGSV9JRlJfVElNRV9PUDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIGYud3JpdGUoS2V5SW5kZW50ICsgIi0gdGltZTpcbiIpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBpZiBSb290LkRhdGEuSG91ciBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuX0R1bXBRdWVzdGlvbkluZm9zRm9yWE1MQ0xJKFJvb3Qs IGYsIFZhbHVlSW5kZW50KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIFJv b3QuQ2hpbGQgIT0gW10gYW5kIFJvb3QuQ2hpbGRbMF0uT3BDb2RlICE9DQo+ID4gRUZJX0lGUl9F TkRfT1A6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoVmFs dWVJbmRlbnQgKyAiY29tcG9uZW50OiAgXG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1Zh bHVlSW5kZW50fWhvdXI6ICB7Um9vdC5EYXRhLkhvdXJ9XG4iKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuRGF0YS5EX0hvdXIgaXMgbm90IE5v bmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFs dWVJbmRlbnR9ZGVmYXVsdF9ob3VyOg0KPiA+IHtSb290LkRhdGEuRF9Ib3VyfVxuIikNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVl SW5kZW50fW1pbnV0ZTogIHtSb290LkRhdGEuTWludXRlfVxuIikNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBSb290LkRhdGEuRF9NaW51dGUgaXMgbm90 IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7 VmFsdWVJbmRlbnR9ZGVmYXVsdF9taW51dGU6DQo+ID4ge1Jvb3QuRGF0YS5EX01pbnV0ZX1cbiIp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShm IntWYWx1ZUluZGVudH1zZWNvbmQ6ICB7Um9vdC5EYXRhLlNlY29uZH1cbiIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5EYXRhLkRfU2Vjb25k IGlzIG5vdCBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndy aXRlKGYie1ZhbHVlSW5kZW50fWRlZmF1bHRfc2Vjb25kOg0KPiA+IHtSb290LkRhdGEuRF9TZWNv bmR9XG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYie1ZhbHVlSW5kZW50fXByb21wdDoN Cj4gPiAne3NlbGYuX0Rpc3BsYXlVbmlTdHIoSW5mby5RdWVzdGlvbi5IZWFkZXIuUHJvbXB0KX0n XG4iDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgIGYud3JpdGUoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGYie1ZhbHVlSW5kZW50fWhlbHA6DQo+ID4gJ3tzZWxmLl9EaXNwbGF5VW5pU3Ry KEluZm8uUXVlc3Rpb24uSGVhZGVyLkhlbHApfSdcbiINCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5E YXRhLkZsYWdzU3RyZWFtICE9ICIiOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmLndyaXRlKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZiJ7VmFsdWVJbmRlbnR9ZmxhZ3M6ICB7Um9vdC5EYXRhLkZsYWdzU3RyZWFtfSAgIw0KPiBPcHRp b25hbA0KPiA+IGlucHV0ICwgZmxhZ3NcbiINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg IGlmIFJvb3QuQ2hpbGQgIT0gW10gYW5kIFJvb3QuQ2hpbGRbMF0uT3BDb2RlICE9DQo+ID4gRUZJ X0lGUl9ERUZBVUxUX09QOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBm LndyaXRlKFZhbHVlSW5kZW50ICsgImNvbXBvbmVudDogIFxuIikNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9EQVRFX09QOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShLZXlJbmRlbnQgKyAiLSBkYXRl OlxuIikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuRGF0YS5ZZWFyIGlz IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fRHVtcFF1ZXN0 aW9uSW5mb3NGb3JYTUxDTEkoUm9vdCwgZiwgVmFsdWVJbmRlbnQpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgaWYgUm9vdC5DaGlsZCAhPSBbXSBhbmQgUm9vdC5DaGlsZFswXS5P cENvZGUgIT0NCj4gPiBFRklfSUZSX0VORF9PUDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZi53cml0ZShWYWx1ZUluZGVudCArICJjb21wb25lbnQ6ICBcbiIpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9eWVhcjogIHtSb290LkRhdGEuWWVhcn1c biIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUlu ZGVudH1taW5feWVhcjogIHtSb290LkRhdGEuTWlufVxuIikNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fW1heF95ZWFyOiAge1Jvb3QuRGF0 YS5NYXh9XG4iKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg IGlmIFJvb3QuRGF0YS5EX1llYXIgaXMgbm90IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9ZGVmYXVsdF95ZWFyOg0KPiB7 Um9vdC5EYXRhLkRfWWVhcn1cbiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1tb250aDogIHtSb290LkRhdGEuTW9u dGh9XG4iKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlm IFJvb3QuRGF0YS5EX01vbnRoIGlzIG5vdCBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWRlZmF1bHRfbW9udGg6DQo+ID4g e1Jvb3QuRGF0YS5EX01vbnRofVxuIikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWRheTogIHtSb290LkRhdGEuRGF5 fVxuIikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBS b290LkRhdGEuRF9EYXkgaXMgbm90IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9ZGVmYXVsdF9kYXk6ICB7Um9vdC5EYXRh LkRfRGF5fVxuIikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICBmLndyaXRlKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIntWYWx1 ZUluZGVudH1wcm9tcHQ6DQo+ID4gJ3tzZWxmLl9EaXNwbGF5VW5pU3RyKEluZm8uUXVlc3Rpb24u SGVhZGVyLlByb21wdCl9J1xuIg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmIntWYWx1ZUluZGVudH1oZWxwOg0KPiA+ICd7c2Vs Zi5fRGlzcGxheVVuaVN0cihJbmZvLlF1ZXN0aW9uLkhlYWRlci5IZWxwKX0nXG4iDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuRGF0YS5GbGFnc1N0cmVhbSAhPSAiIjoNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYie1ZhbHVlSW5kZW50fWZsYWdzOiAge1Jvb3Qu RGF0YS5GbGFnc1N0cmVhbX0gICMNCj4gT3B0aW9uYWwNCj4gPiBpbnB1dCAsIGZsYWdzXG4iDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBSb290LkNoaWxkICE9IFtdIGFuZCBSb290 LkNoaWxkWzBdLk9wQ29kZSAhPQ0KPiA+IEVGSV9JRlJfREVGQVVMVF9PUDoNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShWYWx1ZUluZGVudCArICJjb21wb25l bnQ6ICBcbiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFJvb3Qu T3BDb2RlID09IEVGSV9JRlJfU1RSSU5HX09QOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgZi53cml0ZShLZXlJbmRlbnQgKyAiLSBzdHJpbmc6XG4iKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5fRHVtcFF1ZXN0aW9uSW5mb3NGb3JYTUxDTEkoUm9vdCwgZiwgVmFs dWVJbmRlbnQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVl SW5kZW50fW1pbnNpemU6ICB7SW5mby5NaW5TaXplfVxuIikNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9bWF4c2l6ZTogIHtJbmZvLk1heFNpemV9 XG4iKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5D aGlsZCAhPSBbXSBhbmQgUm9vdC5DaGlsZFswXS5PcENvZGUgIT0NCj4gRUZJX0lGUl9FTkRfT1A6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVu dH1jb21wb25lbnQ6ICBcbiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfUEFTU1dPUkRfT1A6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKEtleUluZGVudCArICItIHBhc3N3b3JkOlxuIikNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX0R1bXBRdWVzdGlvbkluZm9zRm9yWE1MQ0xJ KFJvb3QsIGYsIFZhbHVlSW5kZW50KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53 cml0ZSgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmIntWYWx1ZUluZGVudH1t aW5zaXplOiAge1Jvb3QuRGljdFsnbWluc2l6ZSddLktleSBpZiAnbWluc2l6ZScNCj4gaW4NCj4g PiBSb290LkRpY3QgZWxzZSBJbmZvLk1pblNpemV9XG4iDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYie1ZhbHVlSW5kZW50fW1heHNpemU6ICB7Um9v dC5EaWN0WydtYXhzaXplJ10uS2V5IGlmICdtYXhzaXplJw0KPiBpbg0KPiA+IFJvb3QuRGljdCBl bHNlIEluZm8uTWF4U2l6ZX1cbiINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuQ2hpbGQgIT0g W10gYW5kIFJvb3QuQ2hpbGRbMF0uT3BDb2RlICE9DQo+IEVGSV9JRlJfRU5EX09QOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9Y29tcG9u ZW50OiAgXG4iKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBSb290 Lk9wQ29kZSA9PSBFRklfSUZSX1JFU0VUX0JVVFRPTl9PUDoNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoS2V5SW5kZW50ICsgIi0gcmVzZXRidXR0b246XG4iKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5Db25kaXRpb24gaXMgbm90IE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1j b25kaXRpb246ICAne1Jvb3QuQ29uZGl0aW9ufSdcbiIpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWRlZmF1bHRzdG9yZToNCj4ge1Jvb3QuRGF0 YS5EZWZhdWx0U3RvcmV9XG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0 ZSgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmIntWYWx1ZUluZGVudH1wcm9t cHQ6DQo+ID4gJ3tzZWxmLl9EaXNwbGF5VW5pU3RyKEluZm8uU3RhdGVtZW50LlByb21wdCl9J1xu Ig0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1oZWxwOg0KPiA+ICd7c2VsZi5fRGlzcGxh eVVuaVN0cihJbmZvLlN0YXRlbWVudC5IZWxwKX0nXG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgaWYgUm9vdC5DaGlsZCAhPSBbXSBhbmQgUm9vdC5DaGlsZFswXS5PcENvZGUgIT0N Cj4gRUZJX0lGUl9FTkRfT1A6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53 cml0ZShWYWx1ZUluZGVudCArICJjb21wb25lbnQ6ICBcbiIpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfUkVGX09QOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShLZXlJbmRlbnQgKyAiLSBnb3RvOlxu IikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uIGlzIG5v dCBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFs dWVJbmRlbnR9Y29uZGl0aW9uOiAgJ3tSb290LkNvbmRpdGlvbn0nXG4iKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgdHlwZShSb290LkRhdGEpID09IElmclJl ZjQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiJ7VmFsdWVJbmRlbnR9ZGV2aWNlcGF0aDoN Cj4gPiAne3NlbGYuX0Rpc3BsYXlVbmlTdHIoSW5mby5EZXZpY2VQYXRoKX0nICMgT3B0aW9uYWwg SW5wdXRcbiINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZiJ7VmFsdWVJbmRlbnR9Zm9ybXNldGd1aWQ6ICAne3t7SW5mby5Gb3Jt U2V0SWQuRGF0YTE6I3h9LA0KPiA+IHtJbmZvLkZvcm1TZXRJZC5EYXRhMjojeH0sIHtJbmZvLkZv cm1TZXRJZC5EYXRhMzojeH0sIHt7IHsnLCAnLmpvaW4oZid7eDojeH0nIGZvcg0KPiB4DQo+ID4g aW4gSW5mby5Gb3JtU2V0SWQuRGF0YTQpfX19fX0nICMgIE9wdGlvbmFsIElucHV0XG4iDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9Zm9ybWlkOiAgeycweCV4JyAlIEluZm8u Rm9ybUlkfVxuIikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIntWYWx1ZUluZGVudH1xdWVz dGlvbjogIHsnMHgleCcgJSBJbmZvLlF1ZXN0aW9uSWR9ICMNCj4gPiBPcHRpb25hbCBJbnB1dFxu Ig0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIHR5cGUoUm9vdC5EYXRhKSA9PSBJZnJSZWYzOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGYie1ZhbHVlSW5kZW50fWZvcm1zZXRndWlkOiAgJ3t7 e0luZm8uRm9ybVNldElkLkRhdGExOiN4fSwNCj4gPiB7SW5mby5Gb3JtU2V0SWQuRGF0YTI6I3h9 LCB7SW5mby5Gb3JtU2V0SWQuRGF0YTM6I3h9LCB7eyB7JywgJy5qb2luKGYne3g6I3h9JyBmb3IN Cj4geA0KPiA+IGluIEluZm8uRm9ybVNldElkLkRhdGE0KX19fX19JyAjICBPcHRpb25hbCBJbnB1 dFxuIg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWZvcm1pZDogIHsnMHgl eCcgJSBJbmZvLkZvcm1JZH1cbiIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg Zi53cml0ZSgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiJ7VmFsdWVJ bmRlbnR9cXVlc3Rpb246ICB7JzB4JXgnICUgSW5mby5RdWVzdGlvbklkfSAjDQo+ID4gT3B0aW9u YWwgSW5wdXRcbiINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiB0eXBlKFJvb3QuRGF0YSkgPT0g SWZyUmVmMjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1Zh bHVlSW5kZW50fWZvcm1pZDogIHsnMHgleCcgJSBJbmZvLkZvcm1JZH1cbiIpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZiJ7VmFsdWVJbmRlbnR9cXVlc3Rpb246ICB7JzB4JXgnICUgSW5mby5R dWVzdGlvbklkfSAjDQo+ID4gT3B0aW9uYWwgSW5wdXRcbiINCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBpZiB0eXBlKFJvb3QuRGF0YSkgPT0gSWZyUmVmOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9Zm9ybWlkOiAgeycweCV4JyAlIEluZm8u Rm9ybUlkfVxuIikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNl bGYuX0R1bXBRdWVzdGlvbkluZm9zRm9yWE1MQ0xJKFJvb3QsIGYsIFZhbHVlSW5kZW50KQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5DaGlsZCAhPSBb XSBhbmQgUm9vdC5DaGlsZFswXS5PcENvZGUgIT0NCj4gRUZJX0lGUl9FTkRfT1A6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShWYWx1ZUluZGVudCArICJjb21wb25l bnQ6ICBcbiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFJvb3Qu T3BDb2RlID09IEVGSV9JRlJfUkVGUkVTSF9PUDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIGYud3JpdGUoS2V5SW5kZW50ICsgIi0gcmVmcmVzaDpcbiIpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiBpcyBub3QgTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWNvbmRpdGlvbjog ICd7Um9vdC5Db25kaXRpb259J1xuIikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGYu d3JpdGUoZiJ7VmFsdWVJbmRlbnR9aW50ZXJ2YWw6ICB7SW5mby5SZWZyZXNoSW50ZXJ2YWx9ICAj DQo+ID4gUmVmcmVzaEludGVydmFsXG4iKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX1ZBUlNUT1JFX0RFVklDRV9PUDoNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoS2V5SW5kZW50ICsgIi0gdmFyc3Rv cmVkZXZpY2U6XG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5Db25k aXRpb24gaXMgbm90IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53 cml0ZShmIntWYWx1ZUluZGVudH1jb25kaXRpb246ICAne1Jvb3QuQ29uZGl0aW9ufSdcbiIpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWRldmlj ZXBhdGg6ICB7SW5mby5EZXZpY2VQYXRofSAgIw0KPiA+IERldmljZVBhdGhcbiIpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJf UkVGUkVTSF9JRF9PUDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoS2V5 SW5kZW50ICsgIi0gcmVmcmVzaGd1aWQ6XG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgaWYgUm9vdC5Db25kaXRpb24gaXMgbm90IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1jb25kaXRpb246ICAne1Jvb3QuQ29u ZGl0aW9ufSdcbiIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYie1ZhbHVlSW5kZW50fWd1aWQ6ICAne3t7 SW5mby5SZWZyZXNoRXZlbnRHcm91cElkLkRhdGExOiN4fSwNCj4gPiB7SW5mby5SZWZyZXNoRXZl bnRHcm91cElkLkRhdGEyOiN4fSwge0luZm8uUmVmcmVzaEV2ZW50R3JvdXBJZC5EYXRhMzojeH0s DQo+ID4ge3sgeycsICcuam9pbihmJ3t4OiN4fScgZm9yIHggaW4gSW5mby5SZWZyZXNoRXZlbnRH cm91cElkLkRhdGE0KX19fX19JyBcbiINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0g RUZJX0lGUl9XQVJOSU5HX0lGX09QOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53 cml0ZShLZXlJbmRlbnQgKyAiLSB3YXJuaW5naWY6XG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgaWYgUm9vdC5Db25kaXRpb24gaXMgbm90IE5vbmU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1jb25kaXRpb246ICAne1Jv b3QuQ29uZGl0aW9ufSdcbiIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRl KA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYie1ZhbHVlSW5kZW50fXByb21w dDogJ3tzZWxmLl9EaXNwbGF5VW5pU3RyKEluZm8uV2FybmluZyl9JyAjDQo+ID4gT3B0aW9uYWwg SW5wdXRcbiINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgIGlmIFJvb3QuRGF0YS5IYXNUaW1lT3V0Og0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9dGltZW91dDogIHtJbmZv LlRpbWVPdXR9ICMgb3B0aW9uYWwNCj4gaW5wdXQNCj4gPiBcbiIpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWV4cHJlc3Npb246ICB7Um9vdC5F eHByZXNzaW9ufVxuIikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYg Um9vdC5PcENvZGUgPT0gRUZJX0lGUl9HVUlEX09QOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgaWYgdHlwZShSb290LkRhdGEpID09IElmckxhYmVsOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgIGYud3JpdGUoS2V5SW5kZW50ICsgIi0gbGFiZWw6XG4iKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uIGlzIG5vdCBOb25l Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVl SW5kZW50fWNvbmRpdGlvbjogICd7Um9vdC5Db25kaXRpb259J1xuIikNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fW51bWJlcjogIHsnMHgl eCcgJSBJbmZvLk51bWJlcn0gICMNCj4gPiBOdW1iZXJcbiIpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICBpZiB0eXBlKFJvb3QuRGF0YSkgPT0gSWZyQmFubmVyOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoS2V5SW5kZW50ICsgIi0g YmFubmVyOlxuIikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBSb290LkNv bmRpdGlvbiBpcyBub3QgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1jb25kaXRpb246ICAne1Jvb3QuQ29uZGl0aW9ufSdc biIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiJ7VmFsdWVJbmRlbnR9dGl0bGU6ICd7c2Vs Zi5fRGlzcGxheVVuaVN0cihJbmZvLlRpdGxlKX0nICMNCj4gPiBPcHRpb25hbCBJbnB1dFxuIg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICBpZiBub3QgUm9vdC5EYXRhLkhhc1RpbWVPdXQ6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICJsaW5lIiBpbiBSb290LkRpY3Q6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50 fWxpbmU6ICB7Um9vdC5EaWN0WydsaW5lJ10uS2V5fVxuIikNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9bGluZTogIHtJbmZvLkxpbmVOdW1iZXJ9 XG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1Zh bHVlSW5kZW50fWFsaWduOiAge1Jvb3QuRGljdFsnYWxpZ24nXS5LZXl9XG4iKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9dGltZW91dDogIHtSb290LkRhdGEu VGltZU91dH1cbiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBp ZiB0eXBlKFJvb3QuRGF0YSkgPT0gSWZyQ2xhc3M6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgZi53cml0ZShLZXlJbmRlbnQgKyAiY2xhc3M6ICAiICsgUm9vdC5EYXRhLkNsYXNz U3RyICsgIlxuIikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgUm9v dC5EYXRhLkhhc1N1YkNsYXNzOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmLndyaXRlKEtleUluZGVudCArICJjb21wb25lbnQ6ICBcbiIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICBpZiB0eXBlKFJvb3QuRGF0YSkgPT0gSWZyU3ViQ2xh c3M6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShLZXlJbmRlbnQg KyAic3ViY2xhc3M6ICAiICsgUm9vdC5EYXRhLlN1YkNsYXNzU3RyICsNCj4gIlxuIikNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKEtleUluZGVudCArICJjb21wb25l bnQ6ICBcbiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiB0 eXBlKFJvb3QuRGF0YSkgPT0gSWZyRXh0ZW5zaW9uR3VpZDoNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICBpZiB0eXBlKFJvb3QuUGFyZW50LkRhdGEpID09IElmckV4dGVuc2lvbkd1 aWQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvb3QuTGV2ZWwgLT0g MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXlJbmRlbnQgPSAiICIg KiAoKFJvb3QuTGV2ZWwgKiAyIC0gMSkgKiAyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBWYWx1ZUluZGVudCA9ICIgIiAqICgoUm9vdC5MZXZlbCAqIDIgKyAxKSAqIDIp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShLZXlJbmRlbnQgKyAi LSBndWlkb3A6XG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIFJvb3Qu Q29uZGl0aW9uIGlzIG5vdCBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWNvbmRpdGlvbjogICd7Um9vdC5Db25kaXRpb259 J1xuIikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIntWYWx1ZUluZGVudH1ndWlkOiAgJ3t7 e0luZm8uR3VpZC5EYXRhMTojeH0sDQo+ID4ge0luZm8uR3VpZC5EYXRhMjojeH0sIHtJbmZvLkd1 aWQuRGF0YTM6I3h9LCB7eyB7JywgJy5qb2luKGYne3g6I3h9JyBmb3IgeCBpbg0KPiA+IEluZm8u R3VpZC5EYXRhNCl9fX19fScgXG4iDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuRGF0YS5HZXREYXRh VHlwZSgpICE9ICIiOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndy aXRlKGYie1ZhbHVlSW5kZW50fXtSb290LkRhdGEuR2V0RGF0YVR5cGUoKX06IFxuIikNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGRhdGEgaW4gUm9vdC5EYXRhLkdl dEZpZWxkTGlzdCgpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Zi53cml0ZShmIntWYWx1ZUluZGVudH0gIHtkYXRhWzBdfTogIHtkYXRhWzFdOiN4fVxuIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJ X0lGUl9OT19TVUJNSVRfSUZfT1A6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndy aXRlKEtleUluZGVudCArICItIG5vc3VibWl0aWY6XG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgaWYgUm9vdC5Db25kaXRpb24gaXMgbm90IE5vbmU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1jb25kaXRpb246ICAne1Jv b3QuQ29uZGl0aW9ufSdcbiIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRl KGYie1ZhbHVlSW5kZW50fXByb21wdDoNCj4gPiAne3NlbGYuX0Rpc3BsYXlVbmlTdHIoSW5mby5F cnJvcil9J1xuIikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuRGF0YS5G bGFnc1N0cmVhbSAhPSAiIjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndy aXRlKFZhbHVlSW5kZW50ICsgImZsYWdzOiAgIiArIFJvb3QuRGF0YS5GbGFnc1N0cmVhbSArDQo+ ICJcbiIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5k ZW50fWV4cHJlc3Npb246ICAne1Jvb3QuRXhwcmVzc2lvbn0nXG4iKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX1JFQURfT1A6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKEtleUluZGVudCArICItIHJl YWQ6XG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5Db25kaXRpb24g aXMgbm90IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShm IntWYWx1ZUluZGVudH1jb25kaXRpb246ICAne1Jvb3QuQ29uZGl0aW9ufSdcbiIpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWV4cHJlc3Npb246 ICAne1Jvb3QuRXhwcmVzc2lvbn0nXG4iKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX1dSSVRFX09QOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgZi53cml0ZShLZXlJbmRlbnQgKyAiLSB3cml0ZTpcbiIpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiBpcyBub3QgTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50 fWNvbmRpdGlvbjogICd7Um9vdC5Db25kaXRpb259J1xuIikNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9ZXhwcmVzc2lvbjogICd7Um9vdC5FeHBy ZXNzaW9ufSdcbiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFJv b3QuT3BDb2RlID09IEVGSV9JRlJfVkFMVUVfT1AgYW5kIFJvb3QuUGFyZW50Lk9wQ29kZSAhPQ0K PiA+IEVGSV9JRlJfREVGQVVMVF9PUDogICMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg IGYud3JpdGUoS2V5SW5kZW50ICsgIi0gdmFsdWU6XG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1leHByZXNzaW9uOiAgJ3tSb290LkV4cHJl c3Npb259J1xuIikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgUm9v dC5PcENvZGUgPT0gRUZJX0lGUl9NT0RBTF9UQUdfT1A6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICBpZiBSb290LkNvbmRpdGlvbiBpcyBub3QgTm9uZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWNvbmRpdGlvbjogICd7Um9v dC5Db25kaXRpb259J1xuIikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUo S2V5SW5kZW50ICsgIi0gbW9kYWw6IG51bGxcbiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfTE9DS0VEX09QOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5Db25kaXRpb24gaXMgbm90IE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntWYWx1ZUluZGVudH1j b25kaXRpb246ICAne1Jvb3QuQ29uZGl0aW9ufSdcbiIpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICBmLndyaXRlKEtleUluZGVudCArICItIGxvY2tlZDogbnVsbFxuIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9T VVBQUkVTU19JRl9PUDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoS2V5 SW5kZW50ICsgIi0gc3VwcHJlc3NpZjpcbiIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWV4cHJlc3Npb246ICAne1Jvb3QuRXhwcmVzc2lvbn0n XG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgbGVuKFJvb3QuQ2hpbGQpID4g MiBhbmQgUm9vdC5DaGlsZFtsZW4oUm9vdC5DaGlsZCkgLSAyXS5PcENvZGUNCj4gPiBub3QgaW4g RXhwT3BzOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoVmFsdWVJ bmRlbnQgKyAiY29tcG9uZW50OiAgXG4iKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX0RJU0FCTEVfSUZfT1A6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAjIElmIHRoZSBkaXNhYmxlIG5vZGUgaXMgaW5zZXJ0ZWQg YWZ0ZXIgdGhlIGZvcm1zZXQgZW5kcywgZG8gbm90DQo+ID4gc2hvdyBpdCBpbiBzb3VyY2UgeW1s DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAjIHVzZSB0aGUgZXhwcmVzc2lvbiBjb250 ZW50IHRvIHRlbGwgaWYgdGhlICBkaXNhYmxlIG5vZGUgaXMNCj4gaW5zZXJ0ZWQNCj4gPiBhZnRl ciB0aGUgZm9ybXNldCBlbmRzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBSb290 LkV4cHJlc3Npb24gaXMgbm90IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgZi53cml0ZShLZXlJbmRlbnQgKyAiLSBkaXNhYmxlaWY6XG4iKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9ZXhwcmVzc2lvbjogICd7 Um9vdC5FeHByZXNzaW9ufSdcbiIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg aWYgKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oUm9vdC5DaGls ZCkgPiAyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBSb290LkNo aWxkW2xlbihSb290LkNoaWxkKSAtIDJdLk9wQ29kZSBub3QgaW4gRXhwT3BzDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZi53cml0ZShWYWx1ZUluZGVudCArICJjb21wb25lbnQ6ICBcbiIpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJf R1JBWV9PVVRfSUZfT1A6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKEtl eUluZGVudCArICItIGdyYXlvdXRpZjpcbiIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBmLndyaXRlKGYie1ZhbHVlSW5kZW50fWV4cHJlc3Npb246ICAne1Jvb3QuRXhwcmVzc2lvbn0n XG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgbGVuKFJvb3QuQ2hpbGQpID4g MiBhbmQgUm9vdC5DaGlsZFtsZW4oUm9vdC5DaGlsZCkgLSAyXS5PcENvZGUNCj4gPiBub3QgaW4g RXhwT3BzOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoVmFsdWVJ bmRlbnQgKyAiY29tcG9uZW50OiAgXG4iKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX0lOQ09OU0lTVEVOVF9JRl9PUDoNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoS2V5SW5kZW50ICsgIi0gaW5jb25z aXN0ZW50aWY6XG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShmIntW YWx1ZUluZGVudH1leHByZXNzaW9uOiAgJ3tSb290LkV4cHJlc3Npb259J1xuIikNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZiJ7VmFsdWVJbmRlbnR9cHJvbXB0Og0KPiA+ ICd7c2VsZi5fRGlzcGxheVVuaVN0cihJbmZvLkVycm9yKX0nXG4iKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgaWYgUm9vdC5EYXRhLkZsYWdzU3RyZWFtICE9ICIiOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoVmFsdWVJbmRlbnQgKyAiZmxhZ3M6ICAi ICsgUm9vdC5EYXRhLkZsYWdzU3RyZWFtICsNCj4gIlxuIikNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLkxhc3RPcCA9IFJvb3QuT3BDb2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBleGNlcHQgRXhjZXB0aW9uOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIEVka0xvZ2dlci5lcnJv cigNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgIlZmckNvbXBpbGVyIiwNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgRklMRV9XUklURV9GQUlMVVJFLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAiRmlsZSB3cml0ZSBmYWlsZWQgZm9yICVzIiAlIChzZWxmLk9wdGlvbnMuWWFtbEZpbGVO YW1lKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgTm9uZSwNCj4gPg0KPiA+ICsgICAgICAg ICAgICApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBSb290LkNoaWxkICE9IFtd Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGZvciBDaGlsZE5vZGUgaW4gUm9vdC5DaGlsZDoNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgaW4gQ29uZGl0aW9uT3BzOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgQ2hpbGROb2RlLkxldmVsID0gUm9vdC5MZXZl bCArIDENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZWxpZiB0eXBlKFJvb3QuRGF0YSkgPT0g SWZyR3VpZCBhbmQgKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgQ2hpbGROb2RlLk9w Q29kZSBpbiBbRUZJX0lGUl9DSEVDS0JPWF9PUCwNCj4gPiBFRklfSUZSX05VTUVSSUNfT1AsIEVG SV9JRlJfT05FX09GX09QXQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICApOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgQ2hpbGROb2RlLkxldmVsID0gUm9vdC5MZXZlbA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg Q2hpbGROb2RlLkxldmVsID0gUm9vdC5MZXZlbCArIDENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5fRHVtcFlhbWxGb3JYTUxDTElEZnMoQ2hpbGROb2RlLCBmKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuDQo+ID4NCj4gPiBkaWZmIC0tZ2l0 IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvSWZyVXRpbGl0eS5weQ0KPiA+ IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvSWZyVXRpbGl0eS5weQ0KPiA+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uM2M1Y2VjMjVjZQ0K PiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJD b21waWxlci9JZnJVdGlsaXR5LnB5DQo+ID4gQEAgLTAsMCArMSwyMjI2IEBADQo+ID4gKyMjIEBm aWxlDQo+ID4NCj4gPiArIyBWZnIgY29tbW9uIGxpYnJhcnkgZnVuY3Rpb25zLg0KPiA+DQo+ID4g KyMNCj4gPg0KPiA+ICsjIENvcHlyaWdodCAoYykgMjAyMi0sIEludGVsIENvcnBvcmF0aW9uLiBB bGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPg0KPiA+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4NCj4gPiArIyMNCj4gPg0KPiA+ICtpbXBvcnQg b3MNCj4gPg0KPiA+ICtmcm9tIGVudW0gaW1wb3J0IEVudW0NCj4gPg0KPiA+ICtmcm9tIFZmckNv bXBpbGVyLklmckN0eXBlcyBpbXBvcnQgKg0KPiA+DQo+ID4gK2Zyb20gVmZyQ29tcGlsZXIuSWZy RXJyb3IgaW1wb3J0IGdWZnJFcnJvckhhbmRsZSwgVmZyUmV0dXJuQ29kZQ0KPiA+DQo+ID4gK2Zy b20gVmZyQ29tcGlsZXIuSWZyQ29tbW9uIGltcG9ydCBFRklfU1VDQ0VTUywgRUZJX05PVF9GT1VO RCwNCj4gPiBSRVRVUk5fU1VDQ0VTUw0KPiA+DQo+ID4gK2Zyb20gYWJjIGltcG9ydCBBQkNNZXRh LCBhYnN0cmFjdG1ldGhvZA0KPiA+DQo+ID4gK2Zyb20gQ29tbW9uLkxvbmdGaWxlUGF0aFN1cHBv cnQgaW1wb3J0IExvbmdGaWxlUGF0aA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK1ZGUl9QQUNLX1NI T1cgPSAweDAyDQo+ID4NCj4gPiArVkZSX1BBQ0tfQVNTSUdOID0gMHgwMQ0KPiA+DQo+ID4gK1ZG Ul9QQUNLX1BVU0ggPSAweDA0DQo+ID4NCj4gPiArVkZSX1BBQ0tfUE9QID0gMHgwOA0KPiA+DQo+ ID4gK0RFRkFVTFRfUEFDS19BTElHTiA9IDB4OA0KPiA+DQo+ID4gK0RFRkFVTFRfQUxJR04gPSAx DQo+ID4NCj4gPiArWkVST19BTElHTiA9IDANCj4gPg0KPiA+ICtNQVhfUEFDS19BTElHTiA9IDB4 MTANCj4gPg0KPiA+ICtNQVhfTkFNRV9MRU4gPSA2NA0KPiA+DQo+ID4gK01BWF9CSVRfV0lEVEgg PSAzMg0KPiA+DQo+ID4gK0VGSV9WQVJTVE9SRV9JRF9NQVggPSAweEZGRkYNCj4gPg0KPiA+ICtF RklfQklUU19TSElGVF9QRVJfVUlOVDMyID0gMHg1DQo+ID4NCj4gPiArRUZJX0JJVFNfUEVSX1VJ TlQzMiA9IDEgPDwgRUZJX0JJVFNfU0hJRlRfUEVSX1VJTlQzMg0KPiA+DQo+ID4gK0VGSV9GUkVF X1ZBUlNUT1JFX0lEX0JJVE1BUF9TSVpFID0gaW50KChFRklfVkFSU1RPUkVfSURfTUFYICsgMSkg Lw0KPiA+IEVGSV9CSVRTX1BFUl9VSU5UMzIpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArY2xhc3MgU1ZmclBhY2tTdGFja05vZGU6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRf XyhzZWxmLCBJZGVudGlmaWVyLCBOdW1iZXIpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5JZGVu dGlmaWVyID0gSWRlbnRpZmllcg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5OdW1iZXIgPSBOdW1i ZXINCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuTmV4dCA9IE5vbmUNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIE1hdGNoKHNlbGYsIElkZW50aWZpZXIpOg0KPiA+DQo+ID4gKyAgICAgICAg aWYgSWRlbnRpZmllciBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBUcnVl DQo+ID4NCj4gPiArICAgICAgICBlbGlmIHNlbGYuSWRlbnRpZmllciBpcyBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBGYWxzZQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNl bGYuSWRlbnRpZmllciA9PSBJZGVudGlmaWVyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArY2xhc3MgU1ZmckRhdGFUeXBlOg0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2Vs ZiwgVHlwZU5hbWU9IiIpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5UeXBlTmFtZSA9IFR5cGVO YW1lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlR5cGUgPSAwDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLkFsaWduID0gMQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5Ub3RhbFNpemUgPSAwDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLkhhc0JpdEZpZWxkID0gRmFsc2UNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuTWVtYmVycyA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuTmV4dCA9IE5vbmUN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBTVmZyRGF0YUZpZWxkOg0K PiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgRmllbGROYW1lPU5vbmUpOg0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5GaWVsZE5hbWUgPSBGaWVsZE5hbWUNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuRmllbGRUeXBlID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5PZmZzZXQgPSAw DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkFycmF5TnVtID0gMA0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5Jc0JpdEZpZWxkID0gRmFsc2UNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuQml0V2lkdGgg PSAwDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkJpdE9mZnNldCA9IDANCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuTmV4dCA9IE5vbmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtj bGFzcyBJbnRlcm5hbFR5cGVzOg0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgVHlw ZU5hbWUsIFR5cGUsIFNpemUsIEFsaWduKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuVHlwZU5h bWUgPSBUeXBlTmFtZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5UeXBlID0gVHlwZQ0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5TaXplID0gU2l6ZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5BbGln biA9IEFsaWduDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArZ0ludGVybmFsVHlw ZXNUYWJsZSA9IFsNCj4gPg0KPiA+ICsgICAgSW50ZXJuYWxUeXBlcygiVUlOVDY0IiwgRUZJX0lG Ul9UWVBFX05VTV9TSVpFXzY0LA0KPiA+IHNpemVvZihjX3Vsb25nbG9uZyksIHNpemVvZihjX3Vs b25nbG9uZykpLA0KPiA+DQo+ID4gKyAgICBJbnRlcm5hbFR5cGVzKCJVSU5UMzIiLCBFRklfSUZS X1RZUEVfTlVNX1NJWkVfMzIsIHNpemVvZihjX3Vsb25nKSwNCj4gPiBzaXplb2YoY191bG9uZykp LA0KPiA+DQo+ID4gKyAgICBJbnRlcm5hbFR5cGVzKCJVSU5UMTYiLCBFRklfSUZSX1RZUEVfTlVN X1NJWkVfMTYsIHNpemVvZihjX3VzaG9ydCksDQo+ID4gc2l6ZW9mKGNfdXNob3J0KSksDQo+ID4N Cj4gPiArICAgIEludGVybmFsVHlwZXMoIlVJTlQ4IiwgRUZJX0lGUl9UWVBFX05VTV9TSVpFXzgs IHNpemVvZihjX3VieXRlKSwNCj4gPiBzaXplb2YoY191Ynl0ZSkpLA0KPiA+DQo+ID4gKyAgICBJ bnRlcm5hbFR5cGVzKCJCT09MRUFOIiwgRUZJX0lGUl9UWVBFX0JPT0xFQU4sIHNpemVvZihjX3Vi eXRlKSwNCj4gPiBzaXplb2YoY191Ynl0ZSkpLA0KPiA+DQo+ID4gKyAgICBJbnRlcm5hbFR5cGVz KCJFRklfR1VJRCIsIEVGSV9JRlJfVFlQRV9PVEhFUiwgc2l6ZW9mKEVGSV9HVUlEKSwNCj4gPiBz aXplb2YoY191Ynl0ZSAqIDgpKSwNCj4gPg0KPiA+ICsgICAgSW50ZXJuYWxUeXBlcygiRUZJX0hJ SV9EQVRFIiwgRUZJX0lGUl9UWVBFX0RBVEUsDQo+IHNpemVvZihFRklfSElJX0RBVEUpLA0KPiA+ IHNpemVvZihjX3VzaG9ydCkpLA0KPiA+DQo+ID4gKyAgICBJbnRlcm5hbFR5cGVzKCJFRklfU1RS SU5HX0lEIiwgRUZJX0lGUl9UWVBFX1NUUklORywgc2l6ZW9mKGNfdXNob3J0KSwNCj4gPiBzaXpl b2YoY191c2hvcnQpKSwNCj4gPg0KPiA+ICsgICAgSW50ZXJuYWxUeXBlcygiRUZJX0hJSV9USU1F IiwgRUZJX0lGUl9UWVBFX1RJTUUsDQo+IHNpemVvZihFRklfSElJX1RJTUUpLA0KPiA+IHNpemVv ZihjX3VieXRlKSksDQo+ID4NCj4gPiArICAgIEludGVybmFsVHlwZXMoIkVGSV9ISUlfUkVGIiwg RUZJX0lGUl9UWVBFX1JFRiwgc2l6ZW9mKEVGSV9ISUlfUkVGKSwNCj4gPiBzaXplb2YoRUZJX0dV SUQpKSwNCj4gPg0KPiA+ICtdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xh c3MgVmZyVmFyRGF0YVR5cGVEQjoNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5QYWNrQWxpZ24gPSBERUZBVUxUX1BBQ0tfQUxJR04NCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuUGFja1N0YWNrID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5EYXRhVHlwZUxpc3QgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLk5ld0RhdGFU eXBlID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5DdXJyRGF0YVR5cGUgPSBOb25lDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLkN1cnJEYXRhRmllbGQgPSBOb25lDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLkZpcnN0TmV3RGF0YVR5cGVOYW1lID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5JbnRlcm5hbFR5cGVzTGlzdEluaXQoKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBk ZWYgQ2xlYXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlBhY2tBbGlnbiA9IERFRkFV TFRfUEFDS19BTElHTg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5QYWNrU3RhY2sgPSBOb25lDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLkRhdGFUeXBlTGlzdCA9IE5vbmUNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuTmV3RGF0YVR5cGUgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkN1cnJE YXRhVHlwZSA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuQ3VyckRhdGFGaWVsZCA9IE5v bmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuRmlyc3ROZXdEYXRhVHlwZU5hbWUgPSBOb25lDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLkludGVybmFsVHlwZXNMaXN0SW5pdCgpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiBJbnRlcm5hbFR5cGVzTGlzdEluaXQoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oZ0ludGVybmFsVHlwZXNUYWJsZSkpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHBOZXdUeXBlID0gU1ZmckRhdGFUeXBlKCkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBwTmV3VHlwZS5UeXBlTmFtZSA9IGdJbnRlcm5hbFR5cGVzVGFibGVbaV0u VHlwZU5hbWUNCj4gPg0KPiA+ICsgICAgICAgICAgICBwTmV3VHlwZS5UeXBlID0gZ0ludGVybmFs VHlwZXNUYWJsZVtpXS5UeXBlDQo+ID4NCj4gPiArICAgICAgICAgICAgcE5ld1R5cGUuQWxpZ24g PSBnSW50ZXJuYWxUeXBlc1RhYmxlW2ldLkFsaWduDQo+ID4NCj4gPiArICAgICAgICAgICAgcE5l d1R5cGUuVG90YWxTaXplID0gZ0ludGVybmFsVHlwZXNUYWJsZVtpXS5TaXplDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgZ0ludGVybmFsVHlwZXNUYWJsZVtpXS5UeXBlTmFt ZSA9PSAiRUZJX0hJSV9EQVRFIjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcFllYXJGaWVs ZCA9IFNWZnJEYXRhRmllbGQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwTW9udGhGaWVs ZCA9IFNWZnJEYXRhRmllbGQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwRGF5RmllbGQg PSBTVmZyRGF0YUZpZWxkKCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cFllYXJGaWVsZC5GaWVsZE5hbWUgPSAiWWVhciINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cFllYXJGaWVsZC5GaWVsZFR5cGUsIF8gPSBzZWxmLkdldERhdGFUeXBlKCJVSU5UMTYiKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBwWWVhckZpZWxkLk9mZnNldCA9IDANCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcFllYXJGaWVsZC5OZXh0ID0gcE1vbnRoRmllbGQNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcFllYXJGaWVsZC5BcnJheU51bSA9IDANCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcFllYXJGaWVsZC5Jc0JpdEZpZWxkID0gRmFsc2UNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcE1vbnRoRmllbGQuRmllbGROYW1lID0gIk1vbnRoIg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBwTW9udGhGaWVsZC5GaWVsZFR5cGUsIF8gPSBzZWxmLkdl dERhdGFUeXBlKCJVSU5UOCIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBNb250aEZpZWxk Lk9mZnNldCA9IDINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcE1vbnRoRmllbGQuTmV4dCA9 IHBEYXlGaWVsZA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwTW9udGhGaWVsZC5BcnJheU51 bSA9IDANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcE1vbnRoRmllbGQuSXNCaXRGaWVsZCA9 IEZhbHNlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBEYXlGaWVsZC5G aWVsZE5hbWUgPSAiRGF5Ig0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwRGF5RmllbGQuRmll bGRUeXBlLCBfID0gc2VsZi5HZXREYXRhVHlwZSgiVUlOVDgiKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBwRGF5RmllbGQuT2Zmc2V0ID0gMw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBw RGF5RmllbGQuTmV4dCA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcERheUZpZWxk LkFycmF5TnVtID0gMA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwRGF5RmllbGQuSXNCaXRG aWVsZCA9IEZhbHNlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBOZXdU eXBlLk1lbWJlcnMgPSBwWWVhckZpZWxkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAg ICAgZWxpZiBnSW50ZXJuYWxUeXBlc1RhYmxlW2ldLlR5cGVOYW1lID09ICJFRklfSElJX1RJTUUi Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwSG91cnNGaWVsZCA9IFNWZnJEYXRhRmllbGQo KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwTWludXRlc0ZpZWxkID0gU1ZmckRhdGFGaWVs ZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBTZWNvbmRzRmllbGQgPSBTVmZyRGF0YUZp ZWxkKCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcEhvdXJzRmllbGQu RmllbGROYW1lID0gIkhvdXJzIg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwSG91cnNGaWVs ZC5GaWVsZFR5cGUsIF8gPSBzZWxmLkdldERhdGFUeXBlKCJVSU5UOCIpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHBIb3Vyc0ZpZWxkLk9mZnNldCA9IDANCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcEhvdXJzRmllbGQuTmV4dCA9IHBNaW51dGVzRmllbGQNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcEhvdXJzRmllbGQuQXJyYXlOdW0gPSAwDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHBIb3Vyc0ZpZWxkLklzQml0RmllbGQgPSBGYWxzZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBwTWludXRlc0ZpZWxkLkZpZWxkTmFtZSA9ICJNaW51dGVzIg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBwTWludXRlc0ZpZWxkLkZpZWxkVHlwZSwgXyA9IHNlbGYu R2V0RGF0YVR5cGUoIlVJTlQ4IikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcE1pbnV0ZXNG aWVsZC5PZmZzZXQgPSAxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBNaW51dGVzRmllbGQu TmV4dCA9IHBTZWNvbmRzRmllbGQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcE1pbnV0ZXNG aWVsZC5BcnJheU51bSA9IDANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcE1pbnV0ZXNGaWVs ZC5Jc0JpdEZpZWxkID0gRmFsc2UNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcFNlY29uZHNGaWVsZC5GaWVsZE5hbWUgPSAiU2Vjb25kcyINCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcFNlY29uZHNGaWVsZC5GaWVsZFR5cGUsIF8gPSBzZWxmLkdldERhdGFUeXBlKCJV SU5UOCIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBTZWNvbmRzRmllbGQuT2Zmc2V0ID0g Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwU2Vjb25kc0ZpZWxkLk5leHQgPSBOb25lDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHBTZWNvbmRzRmllbGQuQXJyYXlOdW0gPSAwDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHBTZWNvbmRzRmllbGQuSXNCaXRGaWVsZCA9IEZhbHNlDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBOZXdUeXBlLk1lbWJlcnMgPSBw SG91cnNGaWVsZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgZ0ludGVy bmFsVHlwZXNUYWJsZVtpXS5UeXBlTmFtZSA9PSAiRUZJX0hJSV9SRUYiOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBwUXVlc3Rpb25JZEZpZWxkID0gU1ZmckRhdGFGaWVsZCgpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHBGb3JtSWRGaWVsZCA9IFNWZnJEYXRhRmllbGQoKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBwRm9ybVNldEd1aWRGaWVsZCA9IFNWZnJEYXRhRmllbGQoKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwRGV2aWNlUGF0aEZpZWxkID0gU1ZmckRhdGFGaWVs ZCgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBRdWVzdGlvbklkRmll bGQuRmllbGROYW1lID0gIlF1ZXN0aW9uSWQiDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBR dWVzdGlvbklkRmllbGQuRmllbGRUeXBlLCBfID0gc2VsZi5HZXREYXRhVHlwZSgiVUlOVDE2IikN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcFF1ZXN0aW9uSWRGaWVsZC5PZmZzZXQgPSAwDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHBRdWVzdGlvbklkRmllbGQuTmV4dCA9IHBGb3JtSWRG aWVsZA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwUXVlc3Rpb25JZEZpZWxkLkFycmF5TnVt ID0gMA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwUXVlc3Rpb25JZEZpZWxkLklzQml0Rmll bGQgPSBGYWxzZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwRm9ybUlk RmllbGQuRmllbGROYW1lID0gIkZvcm1JZCINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcEZv cm1JZEZpZWxkLkZpZWxkVHlwZSwgXyA9IHNlbGYuR2V0RGF0YVR5cGUoIlVJTlQxNiIpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHBGb3JtSWRGaWVsZC5PZmZzZXQgPSAyDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHBGb3JtSWRGaWVsZC5OZXh0ID0gcEZvcm1TZXRHdWlkRmllbGQNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcEZvcm1JZEZpZWxkLkFycmF5TnVtID0gMA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBwRm9ybUlkRmllbGQuSXNCaXRGaWVsZCA9IEZhbHNlDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBGb3JtU2V0R3VpZEZpZWxkLkZpZWxk TmFtZSA9ICJGb3JtU2V0R3VpZCINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcEZvcm1TZXRH dWlkRmllbGQuRmllbGRUeXBlLCBfID0gc2VsZi5HZXREYXRhVHlwZSgiRUZJX0dVSUQiKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBwRm9ybVNldEd1aWRGaWVsZC5PZmZzZXQgPSA0DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHBGb3JtU2V0R3VpZEZpZWxkLk5leHQgPSBwRGV2aWNlUGF0 aEZpZWxkDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBGb3JtU2V0R3VpZEZpZWxkLkFycmF5 TnVtID0gMA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwRm9ybVNldEd1aWRGaWVsZC5Jc0Jp dEZpZWxkID0gRmFsc2UNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcERl dmljZVBhdGhGaWVsZC5GaWVsZE5hbWUgPSAiRGV2aWNlUGF0aCINCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcERldmljZVBhdGhGaWVsZC5GaWVsZFR5cGUsIF8gPQ0KPiBzZWxmLkdldERhdGFU eXBlKCJFRklfU1RSSU5HX0lEIikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcERldmljZVBh dGhGaWVsZC5PZmZzZXQgPSAyMA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwRGV2aWNlUGF0 aEZpZWxkLk5leHQgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBEZXZpY2VQYXRo RmllbGQuQXJyYXlOdW0gPSAwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBEZXZpY2VQYXRo RmllbGQuSXNCaXRGaWVsZCA9IEZhbHNlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHBOZXdUeXBlLk1lbWJlcnMgPSBwUXVlc3Rpb25JZEZpZWxkDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICAgICAgcE5ld1R5cGUuTmV4dCA9IE5vbmUNCj4gPg0KPiA+ICsgICAg ICAgICAgICBwTmV3VHlwZS5OZXh0ID0gc2VsZi5EYXRhVHlwZUxpc3QNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLkRhdGFUeXBlTGlzdCA9IHBOZXdUeXBlDQo+ID4NCj4gPiArICAgICAgICAg ICAgcE5ld1R5cGUgPSBOb25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXREYXRh VHlwZUxpc3Qoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi5EYXRhVHlwZUxp c3QNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFBhY2soc2VsZiwgTGluZU51bSwgQWN0 aW9uLCBJZGVudGlmaWVyPU5vbmUsDQo+ID4gTnVtYmVyPURFRkFVTFRfUEFDS19BTElHTik6DQo+ ID4NCj4gPiArICAgICAgICBpZiBBY3Rpb24gJiBWRlJfUEFDS19TSE9XOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIE1zZyA9IHN0ci5mb3JtYXQoInZhbHVlIG9mIHByYWdtYSBwYWNrKHNob3cpID09 ICVkIiAlDQo+ID4gKHNlbGYuUGFja0FsaWduKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBnVmZy RXJyb3JIYW5kbGUuUHJpbnRNc2coTGluZU51bSwgIldhcm5pbmciLCBNc2cpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBpZiBBY3Rpb24gJiBWRlJfUEFDS19QVVNIOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHBOZXcgPSBTVmZyUGFja1N0YWNrTm9kZShJZGVudGlmaWVyLCBzZWxmLlBh Y2tBbGlnbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBwTmV3IGlzIE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxf RVJST1INCj4gPg0KPiA+ICsgICAgICAgICAgICBwTmV3Lk5leHQgPSBzZWxmLlBhY2tTdGFjaw0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuUGFja1N0YWNrID0gcE5ldw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgaWYgQWN0aW9uICYgVkZSX1BBQ0tfUE9QOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHBOb2RlID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHNlbGYuUGFj a1N0YWNrIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGdWZnJFcnJvckhhbmRs ZS5QcmludE1zZyhMaW5lTnVtLCAiRXJyb3IiLCAiI3ByYWdtYQ0KPiA+IHBhY2socG9wLi4uKSA6 IG1vcmUgcG9wcyB0aGFuIHB1c2hlcyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAg ICAgcE5vZGUgPSBzZWxmLlBhY2tTdGFjaw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHdoaWxlIHBO b2RlIGlzIG5vdCBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBwTm9kZS5NYXRj aChJZGVudGlmaWVyKSBpcyBUcnVlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5QYWNrQWxpZ24gPSBwTm9kZS5OdW1iZXINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg IHNlbGYuUGFja1N0YWNrID0gcE5vZGUuTmV4dA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBw Tm9kZSA9IHBOb2RlLk5leHQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIEFjdGlv biAmIFZGUl9QQUNLX0FTU0lHTjoNCj4gPg0KPiA+ICsgICAgICAgICAgICBQYWNrQWxpZ24gPSAo TnVtYmVyICsgTnVtYmVyICUgMikgaWYgKE51bWJlciA+IDEpIGVsc2UgTnVtYmVyDQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgUGFja0FsaWduID09IFpFUk9fQUxJR04gb3IgUGFja0FsaWduID4g TUFYX1BBQ0tfQUxJR046DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGdWZnJFcnJvckhhbmRs ZS5QcmludE1zZyhMaW5lTnVtLCAiRXJyb3IiLCAiZXhwZWN0ZWQgcHJhZ21hDQo+ID4gcGFyYW1l dGVyIHRvIGJlICcxJywgJzInLCAnNCcsICc4Jywgb3IgJzE2JyIpDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5QYWNrQWxpZ24gPSBQ YWNrQWxpZ24NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgRGVj bGFyZURhdGFUeXBlQmVnaW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICBwTmV3VHlwZSA9IFNW ZnJEYXRhVHlwZSgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBwTmV3VHlwZS5UeXBl TmFtZSA9ICIiDQo+ID4NCj4gPiArICAgICAgICBwTmV3VHlwZS5UeXBlID0gRUZJX0lGUl9UWVBF X09USEVSDQo+ID4NCj4gPiArICAgICAgICBwTmV3VHlwZS5BbGlnbiA9IERFRkFVTFRfQUxJR04N Cj4gPg0KPiA+ICsgICAgICAgIHBOZXdUeXBlLlRvdGFsU2l6ZSA9IDANCj4gPg0KPiA+ICsgICAg ICAgIHBOZXdUeXBlLkhhc0JpdEZpZWxkID0gRmFsc2UNCj4gPg0KPiA+ICsgICAgICAgIHBOZXdU eXBlLk1lbWJlcnMgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICBwTmV3VHlwZS5OZXh0ID0gTm9u ZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5OZXdEYXRhVHlwZSA9IHBOZXdUeXBlDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGRlZiBTZXROZXdUeXBlVHlwZShzZWxmLCBUeXBlKToNCj4gPg0K PiA+ICsgICAgICAgIGlmIHNlbGYuTmV3RGF0YVR5cGUgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0VSUk9SX1NLSVBFRA0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgVHlwZSBpcyBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1INCj4g Pg0KPiA+ICsgICAgICAgICMgbmVlZCB0byBsaW1pdCB0aGUgdmFsdWUgb2YgdGhlIHR5cGUNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuTmV3RGF0YVR5cGUuVHlwZSA9IFR5cGUNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VT Uw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0TmV3VHlwZVRvdGFsU2l6ZShzZWxm LCBTaXplKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuTmV3RGF0YVR5cGUuVG90YWxTaXplID0g U2l6ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0TmV3VHlwZUFsaWduKHNlbGYs IEFsaWduKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuTmV3RGF0YVR5cGUuQWxpZ24gPSBBbGln bg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgU2V0TmV3VHlwZU5hbWUoc2VsZiwgVHlw ZU5hbWUpOg0KPiA+DQo+ID4gKyAgICAgICAgaWYgc2VsZi5OZXdEYXRhVHlwZSBpcyBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRVJS T1JfU0tJUEVEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBUeXBlTmFtZSBpcyBO b25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fRkFUQUxfRVJST1INCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGxlbihUeXBl TmFtZSkgPj0gTUFYX05BTUVfTEVOOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVINCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIHBUeXBlID0gc2VsZi5EYXRhVHlwZUxpc3QNCj4gPg0KPiA+ICsgICAgICAg IHdoaWxlIHBUeXBlIGlzIG5vdCBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHBUeXBl LlR5cGVOYW1lID09IFR5cGVOYW1lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1JFREVGSU5FRA0KPiA+DQo+ID4gKyAgICAgICAgICAg IHBUeXBlID0gcFR5cGUuTmV4dA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5O ZXdEYXRhVHlwZS5UeXBlTmFtZSA9IFR5cGVOYW1lDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgZGVmIEFsaWduU3R1ZmYoc2VsZiwgU2l6ZSwgQWxpZ24pOg0KPiA+DQo+ID4gKyAgICAgICAg cmV0dXJuIEFsaWduIC0gKFNpemUpICUgKEFsaWduKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBkZWYgRGVjbGFyZURhdGFUeXBlRW5kKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgaWYgc2Vs Zi5OZXdEYXRhVHlwZS5UeXBlTmFtZSA9PSAiIjoNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIHNlbGYuTmV3RGF0YVR5cGUuVG90 YWxTaXplICUgc2VsZi5OZXdEYXRhVHlwZS5BbGlnbiAhPSAwOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuTmV3RGF0YVR5cGUuVG90YWxTaXplICs9DQo+ID4gc2VsZi5BbGlnblN0dWZmKHNl bGYuTmV3RGF0YVR5cGUuVG90YWxTaXplLCBzZWxmLk5ld0RhdGFUeXBlLkFsaWduKQ0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5OZXdEYXRhVHlwZS5OZXh0ID0gc2VsZi5EYXRhVHlwZUxpc3QNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuRGF0YVR5cGVMaXN0ID0gc2VsZi5OZXdEYXRhVHlwZQ0KPiA+ DQo+ID4gKyAgICAgICAgaWYgc2VsZi5GaXJzdE5ld0RhdGFUeXBlTmFtZSBpcyBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRmlyc3ROZXdEYXRhVHlwZU5hbWUgPSBzZWxmLk5ld0Rh dGFUeXBlLlR5cGVOYW1lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLk5ld0Rh dGFUeXBlID0gTm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIHR3byBkZWZpbml0aW9u cw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0RGF0YVR5cGVTaXplQnlUeXBlTmFtZShzZWxmLCBUeXBl TmFtZSk6DQo+ID4NCj4gPiArICAgICAgICBTaXplID0gMA0KPiA+DQo+ID4gKyAgICAgICAgcERh dGFUeXBlID0gc2VsZi5EYXRhVHlwZUxpc3QNCj4gPg0KPiA+ICsgICAgICAgIHdoaWxlIHBEYXRh VHlwZSBpcyBub3QgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBwRGF0YVR5cGUuVHlw ZU5hbWUgPT0gVHlwZU5hbWU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIFNpemUgPSBwRGF0 YVR5cGUuVG90YWxTaXplDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBTaXplLCBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBE YXRhVHlwZSA9IHBEYXRhVHlwZS5OZXh0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBy ZXR1cm4gU2l6ZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOREVGSU5FRA0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0RGF0YVR5cGVTaXplQnlEYXRhVHlwZShzZWxmLCBEYXRh VHlwZSk6DQo+ID4NCj4gPiArICAgICAgICBTaXplID0gMA0KPiA+DQo+ID4gKyAgICAgICAgRGF0 YVR5cGUgPSBEYXRhVHlwZSAmIDB4MEYNCj4gPg0KPiA+ICsgICAgICAgICMgRm9yIHVzZXIgZGVm aW5lZCBkYXRhIHR5cGUsIHRoZSBzaXplIGNhbid0IGJlIGdvdCBieSB0aGlzIGZ1bmN0aW9uLg0K PiA+DQo+ID4gKyAgICAgICAgaWYgRGF0YVR5cGUgPT0gRUZJX0lGUl9UWVBFX09USEVSOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBTaXplLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f U1VDQ0VTUw0KPiA+DQo+ID4gKyAgICAgICAgcERhdGFUeXBlID0gc2VsZi5EYXRhVHlwZUxpc3QN Cj4gPg0KPiA+ICsgICAgICAgIHdoaWxlIHBEYXRhVHlwZSBpcyBub3QgTm9uZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBEYXRhVHlwZSA9PSBwRGF0YVR5cGUuVHlwZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgU2l6ZSA9IHBEYXRhVHlwZS5Ub3RhbFNpemUNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIFNpemUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNT DQo+ID4NCj4gPiArICAgICAgICAgICAgcERhdGFUeXBlID0gcERhdGFUeXBlLk5leHQNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBTaXplLCBWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fVU5ERUZJTkVEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBFeHRyYWN0U3Ry dWN0VHlwZU5hbWUoc2VsZiwgVmFyU3RyKToNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0K PiA+ICsgICAgICAgICAgICBpbmRleCA9IFZhclN0ci5pbmRleCgiLiIpDQo+ID4NCj4gPiArICAg ICAgICBleGNlcHQgVmFsdWVFcnJvcjoNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmFy U3RyLCBsZW4oVmFyU3RyKQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gVmFyU3RyWzA6aW5kZXhdLCBpbmRleCArIDENCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgZGVmIEV4dHJhY3RGaWVsZE5hbWVBbmRBcnJhcnkoc2VsZiwgVmFyU3RyLCBz KToNCj4gPg0KPiA+ICsgICAgICAgIEFycmF5SWR4ID0gSU5WQUxJRF9BUlJBWV9JTkRFWA0KPiA+ DQo+ID4gKyAgICAgICAgc19jb3B5ID0gcw0KPiA+DQo+ID4gKyAgICAgICAgd2hpbGUgcyA8IGxl bihWYXJTdHIpIGFuZCBWYXJTdHJbc10gIT0gIi4iIGFuZCBWYXJTdHJbc10gIT0gIlsiIGFuZA0K PiA+IFZhclN0cltzXSAhPSAiXSI6DQo+ID4NCj4gPiArICAgICAgICAgICAgcyArPSAxDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBGTmFtZSA9IFZhclN0cltzX2NvcHk6c10NCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIHMgPT0gbGVuKFZhclN0cik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIEFycmF5SWR4LCBzLCBGTmFtZSwgVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIFZhclN0cltz XSA9PSAiLiI6DQo+ID4NCj4gPiArICAgICAgICAgICAgcyArPSAxDQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIEFycmF5SWR4LCBzLCBGTmFtZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X1NVQ0NFU1MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIFZhclN0cltzXSA9PSAi WyI6DQo+ID4NCj4gPiArICAgICAgICAgICAgcyArPSAxDQo+ID4NCj4gPiArICAgICAgICAgICAg dHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBlID0gcyArIFZhclN0cltzOl0uaW5kZXgo Il0iKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9y Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgTm9uZSwNCj4g PiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fREFUQV9TVFJJTkdfRVJST1INCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBBcnJheVN0ciA9IFZh clN0cltzOmVdDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIEFycmF5SWR4ID0gaW50KEFycmF5 U3RyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBWYXJTdHJbZV0gPT0gIl0iOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZSArPSAxDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIGlmIGUgPCBsZW4oVmFyU3RyKSBhbmQgKFZhclN0cltlXSA9PSAiLiIpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgZSArPSAxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiBBcnJheUlkeCwgZSwgRk5hbWUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNT DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBWYXJTdHJbc10gPT0gIl0iOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBOb25lLCBOb25lLCBOb25lLA0KPiA+IFZmclJldHVy bkNvZGUuVkZSX1JFVFVSTl9EQVRBX1NUUklOR19FUlJPUg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgcmV0dXJuIEFycmF5SWR4LCBzLCBGTmFtZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX1NVQ0NFU1MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldFR5cGVGaWVsZChz ZWxmLCBGTmFtZSwgVHlwZSk6DQo+ID4NCj4gPiArICAgICAgICBpZiBGTmFtZSBpcyBOb25lIG9y IFR5cGUgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gTm9uZSwgVmZyUmV0 dXJuQ29kZS5WRlJfUkVUVVJOX0ZBVEFMX0VSUk9SDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBwRmllbGQgPSBUeXBlLk1lbWJlcnMNCj4gPg0KPiA+ICsgICAgICAgIHdoaWxlIHBGaWVs ZCBpcyBub3QgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBUeXBlLlR5cGUgPT0gRUZJ X0lGUl9UWVBFX1RJTUU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIEZOYW1lID09ICJI b3VyIjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIEZOYW1lID0gIkhvdXJzIg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBlbGlmIEZOYW1lID09ICJNaW51dGUiOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgRk5hbWUgPT0gIk1pbnV0ZXMiDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIGVsaWYgRk5hbWUgPT0gIlNlY29uZCI6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICBGTmFtZSA9ICJTZWNvbmRzIg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHBGaWVs ZC5GaWVsZE5hbWUgPT0gRk5hbWU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIEZpZWxkID0g cEZpZWxkDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBGaWVsZCwgVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAg ICBwRmllbGQgPSBwRmllbGQuTmV4dA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0 dXJuIE5vbmUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTkRFRklORUQNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgZGVmIElzVGhpc0JpdEZpZWxkKHNlbGYsIFZhclN0ck5hbWUpOg0KPiA+ DQo+ID4gKyAgICAgICAgVE5hbWUsIGkgPSBzZWxmLkV4dHJhY3RTdHJ1Y3RUeXBlTmFtZShWYXJT dHJOYW1lKQ0KPiA+DQo+ID4gKyAgICAgICAgcFR5cGUsIFJldHVybkNvZGUgPSBzZWxmLkdldERh dGFUeXBlKFROYW1lKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1 cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g Tm9uZSwgUmV0dXJuQ29kZQ0KPiA+DQo+ID4gKyAgICAgICAgcEZpZWxkID0gTm9uZQ0KPiA+DQo+ ID4gKyAgICAgICAgd2hpbGUgaSA8IGxlbihWYXJTdHJOYW1lKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAjIGkgc3RhcnQgZnJvbSBmaWVsZA0KPiA+DQo+ID4gKyAgICAgICAgICAgIF8sIGksIEZO YW1lLCBSZXR1cm5Db2RlID0NCj4gPiBzZWxmLkV4dHJhY3RGaWVsZE5hbWVBbmRBcnJhcnkoVmFy U3RyTmFtZSwgaSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBSZXR1cm5Db2RlICE9IFZmclJl dHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gTm9uZSwgUmV0dXJuQ29kZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBGaWVsZCwgUmV0 dXJuQ29kZSA9IHNlbGYuR2V0VHlwZUZpZWxkKEZOYW1lLCBwVHlwZSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBSZXR1cm5Db2RlICE9IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNT Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZSwgUmV0dXJuQ29kZQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHBUeXBlID0gcEZpZWxkLkZpZWxkVHlwZQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgaWYgcEZpZWxkIGlzIG5vdCBOb25lIGFuZCBwRmllbGQuSXNCaXRG aWVsZDoNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVHJ1ZSwgUmV0dXJuQ29kZQ0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIEZhbHNlLCBSZXR1cm5Db2RlDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgIGRlZiBHZXRGaWVsZE9mZnNldChzZWxmLCBGaWVsZCwgQXJyYXlJZHgsIElzQml0 RmllbGQpOg0KPiA+DQo+ID4gKyAgICAgICAgaWYgRmllbGQgaXMgTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gTm9uZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZBVEFMX0VS Uk9SDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiAoQXJyYXlJZHggIT0gSU5WQUxJ RF9BUlJBWV9JTkRFWCkgYW5kIChGaWVsZC5BcnJheU51bSA9PSAwIG9yDQo+ID4gRmllbGQuQXJy YXlOdW0gPD0gQXJyYXlJZHgpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBOb25lLCBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRVJST1JfQVJSQVJZX05VTQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgSWR4ID0gMCBpZiBBcnJheUlkeCA9PSBJTlZBTElEX0FSUkFZX0lOREVY IGVsc2UgQXJyYXlJZHgNCj4gPg0KPiA+ICsgICAgICAgIGlmIElzQml0RmllbGQ6DQo+ID4NCj4g PiArICAgICAgICAgICAgT2Zmc2V0ID0gRmllbGQuQml0T2Zmc2V0ICsgRmllbGQuRmllbGRUeXBl LlRvdGFsU2l6ZSAqIElkeCAqIDgNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgT2Zmc2V0ID0gRmllbGQuT2Zmc2V0ICsgRmllbGQuRmllbGRUeXBlLlRvdGFs U2l6ZSAqIElkeA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIE9mZnNldCwg VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgZGVmIEdldEZpZWxkV2lkdGgoc2VsZiwgRmllbGQpOg0KPiA+DQo+ID4gKyAgICAgICAgaWYg RmllbGQgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gMA0KPiA+DQo+ID4g KyAgICAgICAgcmV0dXJuIEZpZWxkLkZpZWxkVHlwZS5UeXBlDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGRlZiBHZXRGaWVsZFNpemUoc2VsZiwgRmllbGQsIEFycmF5SWR4LCBCaXRGaWVsZCk6 DQo+ID4NCj4gPiArICAgICAgICBpZiBGaWVsZCBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1INCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIChBcnJheUlkeCA9PSBJTlZBTElEX0FSUkFZX0lOREVY KSBhbmQgKEZpZWxkLkFycmF5TnVtICE9IDApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVy biBGaWVsZC5GaWVsZFR5cGUuVG90YWxTaXplICogRmllbGQuQXJyYXlOdW0NCj4gPg0KPiA+ICsg ICAgICAgIGVsaWYgQml0RmllbGQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIEZpZWxk LkJpdFdpZHRoDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gRmllbGQuRmllbGRUeXBlLlRvdGFs U2l6ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0RGF0YUZpZWxkSW5mbyhzZWxm LCBWYXJTdHIpOg0KPiA+DQo+ID4gKyAgICAgICAgIyBWYXJTdHIgLT4gVHlwZS5GaWVsZA0KPiA+ DQo+ID4gKyAgICAgICAgT2Zmc2V0ID0gMA0KPiA+DQo+ID4gKyAgICAgICAgVHlwZSA9IEVGSV9J RlJfVFlQRV9PVEhFUg0KPiA+DQo+ID4gKyAgICAgICAgU2l6ZSA9IDANCj4gPg0KPiA+ICsgICAg ICAgIEJpdEZpZWxkID0gRmFsc2UNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIFROYW1l LCBpID0gc2VsZi5FeHRyYWN0U3RydWN0VHlwZU5hbWUoVmFyU3RyKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgcFR5cGUsIFJldHVybkNvZGUgPSBzZWxmLkdldERhdGFUeXBlKFROYW1l KQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fU1VDQ0VTUzoNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gT2Zmc2V0LCBUeXBl LCBTaXplLCBCaXRGaWVsZCwgUmV0dXJuQ29kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgQml0RmllbGQsIFJldHVybkNvZGUgPSBzZWxmLklzVGhpc0JpdEZpZWxkKFZhclN0cikNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX1NVQ0NFU1M6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIE9mZnNl dCwgVHlwZSwgU2l6ZSwgQml0RmllbGQsIFJldHVybkNvZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgICMgaWYgaXQgaXMgbm90IHN0cnVjdCBkYXRhIHR5cGUNCj4gPg0KPiA+ICsgICAg ICAgIFR5cGUgPSBwVHlwZS5UeXBlDQo+ID4NCj4gPiArICAgICAgICBTaXplID0gcFR5cGUuVG90 YWxTaXplDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICB3aGlsZSBpIDwgbGVuKFZhclN0 cik6DQo+ID4NCj4gPiArICAgICAgICAgICAgQXJyYXlJZHgsIGksIEZOYW1lLCBSZXR1cm5Db2Rl ID0NCj4gPiBzZWxmLkV4dHJhY3RGaWVsZE5hbWVBbmRBcnJhcnkoVmFyU3RyLCBpKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGlmIFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X1NVQ0NFU1M6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBPZmZzZXQsIFR5cGUs IFNpemUsIEJpdEZpZWxkLCBSZXR1cm5Db2RlDQo+ID4NCj4gPiArICAgICAgICAgICAgcEZpZWxk LCBSZXR1cm5Db2RlID0gc2VsZi5HZXRUeXBlRmllbGQoRk5hbWUsIHBUeXBlKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NV Q0NFU1M6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBPZmZzZXQsIFR5cGUsIFNp emUsIEJpdEZpZWxkLCBSZXR1cm5Db2RlDQo+ID4NCj4gPiArICAgICAgICAgICAgcFR5cGUgPSBw RmllbGQuRmllbGRUeXBlDQo+ID4NCj4gPiArICAgICAgICAgICAgVG1wLCBSZXR1cm5Db2RlID0g c2VsZi5HZXRGaWVsZE9mZnNldChwRmllbGQsIEFycmF5SWR4LA0KPiA+IHBGaWVsZC5Jc0JpdEZp ZWxkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX1NVQ0NFU1M6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBP ZmZzZXQsIFR5cGUsIFNpemUsIEJpdEZpZWxkLCBSZXR1cm5Db2RlDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgQml0RmllbGQgYW5kIHBGaWVsZC5Jc0JpdEZpZWxkIGlzIEZh bHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBPZmZzZXQgPSBpbnQoT2Zmc2V0ICsgVG1w ICogOCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBPZmZzZXQgPSBpbnQoT2Zmc2V0ICsgVG1wKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgICAgIFR5cGUgPSBzZWxmLkdldEZpZWxkV2lkdGgocEZpZWxkKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIFNpemUgPSBzZWxmLkdldEZpZWxkU2l6ZShwRmllbGQsIEFycmF5SWR4LCBCaXRG aWVsZCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBPZmZzZXQsIFR5cGUs IFNpemUsIEJpdEZpZWxkLA0KPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgRGF0YVR5cGVBZGRGaWVsZChz ZWxmLCBGaWVsZE5hbWUsIFR5cGVOYW1lLCBBcnJheU51bSwNCj4gPiBGaWVsZEluVW5pb24pOg0K PiA+DQo+ID4gKyAgICAgICAgcEZpZWxkVHlwZSwgUmV0dXJuQ29kZSA9IHNlbGYuR2V0RGF0YVR5 cGUoVHlwZU5hbWUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBSZXR1cm5Db2Rl ICE9IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBSZXR1cm5Db2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBNYXhE YXRhVHlwZVNpemUgPSBzZWxmLk5ld0RhdGFUeXBlLlRvdGFsU2l6ZQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgaWYgbGVuKEZpZWxkTmFtZSkgPj0gTUFYX05BTUVfTEVOOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9Q QVJBTUVURVINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHBUbXAgPSBzZWxmLk5ld0Rh dGFUeXBlLk1lbWJlcnMNCj4gPg0KPiA+ICsgICAgICAgIHdoaWxlIHBUbXAgaXMgbm90IE5vbmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgcFRtcC5GaWVsZE5hbWUgPT0gRmllbGROYW1lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X1JFREVGSU5FRA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBUbXAgPSBwVG1wLk5leHQNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIEFsaWduID0gbWluKHNlbGYuUGFja0FsaWduLCBwRmll bGRUeXBlLkFsaWduKQ0KPiA+DQo+ID4gKyAgICAgICAgcE5ld0ZpZWxkID0gU1ZmckRhdGFGaWVs ZCgpDQo+ID4NCj4gPiArICAgICAgICBpZiBwTmV3RmllbGQgaXMgTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX09VVF9GT1JfUkVTT1VS Q0VTDQo+ID4NCj4gPiArICAgICAgICBwTmV3RmllbGQuRmllbGROYW1lID0gRmllbGROYW1lDQo+ ID4NCj4gPiArICAgICAgICBwTmV3RmllbGQuRmllbGRUeXBlID0gcEZpZWxkVHlwZQ0KPiA+DQo+ ID4gKyAgICAgICAgcE5ld0ZpZWxkLkFycmF5TnVtID0gQXJyYXlOdW0NCj4gPg0KPiA+ICsgICAg ICAgIHBOZXdGaWVsZC5Jc0JpdEZpZWxkID0gRmFsc2UNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGlmIHNlbGYuTmV3RGF0YVR5cGUuVG90YWxTaXplICUgQWxpZ24gPT0gMDoNCj4gPg0K PiA+ICsgICAgICAgICAgICBwTmV3RmllbGQuT2Zmc2V0ID0gc2VsZi5OZXdEYXRhVHlwZS5Ub3Rh bFNpemUNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgcE5l d0ZpZWxkLk9mZnNldCA9IHNlbGYuTmV3RGF0YVR5cGUuVG90YWxTaXplICsNCj4gPiBzZWxmLkFs aWduU3R1ZmYoc2VsZi5OZXdEYXRhVHlwZS5Ub3RhbFNpemUsIEFsaWduKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgaWYgc2VsZi5OZXdEYXRhVHlwZS5NZW1iZXJzIGlzIE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5OZXdEYXRhVHlwZS5NZW1iZXJzID0gcE5ld0ZpZWxk DQo+ID4NCj4gPiArICAgICAgICAgICAgcE5ld0ZpZWxkLk5leHQgPSBOb25lDQo+ID4NCj4gPiAr ICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBUbXAgPSBzZWxmLk5ld0RhdGFU eXBlLk1lbWJlcnMNCj4gPg0KPiA+ICsgICAgICAgICAgICB3aGlsZSBwVG1wLk5leHQgaXMgbm90 IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBUbXAgPSBwVG1wLk5leHQNCj4gPg0K PiA+ICsgICAgICAgICAgICBwVG1wLk5leHQgPSBwTmV3RmllbGQNCj4gPg0KPiA+ICsgICAgICAg ICAgICBwTmV3RmllbGQuTmV4dCA9IE5vbmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuTmV3RGF0YVR5cGUuQWxpZ24gPSBtaW4oc2VsZi5QYWNrQWxpZ24sIG1heChwRmllbGRU eXBlLkFsaWduLA0KPiA+IHNlbGYuTmV3RGF0YVR5cGUuQWxpZ24pKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgaWYgRmllbGRJblVuaW9uOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlm IE1heERhdGFUeXBlU2l6ZSA8IHBOZXdGaWVsZC5GaWVsZFR5cGUuVG90YWxTaXplOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLk5ld0RhdGFUeXBlLlRvdGFsU2l6ZSA9IHBOZXdGaWVs ZC5GaWVsZFR5cGUuVG90YWxTaXplDQo+ID4NCj4gPiArICAgICAgICAgICAgcE5ld0ZpZWxkLk9m ZnNldCA9IDANCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg TnVtID0gQXJyYXlOdW0gaWYgQXJyYXlOdW0gIT0gMCBlbHNlIDENCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLk5ld0RhdGFUeXBlLlRvdGFsU2l6ZSA9IHBOZXdGaWVsZC5PZmZzZXQgKw0KPiA+ IChwTmV3RmllbGQuRmllbGRUeXBlLlRvdGFsU2l6ZSkgKiBOdW0NCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgRGF0YVR5cGVBZGRCaXRGaWVsZChzZWxmLCBGaWVs ZE5hbWUsIFR5cGVOYW1lLCBXaWR0aCwNCj4gPiBGaWVsZEluVW5pb24pOg0KPiA+DQo+ID4gKyAg ICAgICAgcEZpZWxkVHlwZSwgUmV0dXJuQ29kZSA9IHNlbGYuR2V0RGF0YVR5cGUoVHlwZU5hbWUp DQo+ID4NCj4gPiArICAgICAgICBpZiBSZXR1cm5Db2RlICE9IFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9TVUNDRVNTOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBSZXR1cm5Db2RlDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBXaWR0aCA+IE1BWF9CSVRfV0lEVEg6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9CSVRf V0lEVEhfRVJST1INCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIFdpZHRoID4gKHBG aWVsZFR5cGUuVG90YWxTaXplKSAqIDg6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9CSVRfV0lEVEhfRVJST1INCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGlmIChGaWVsZE5hbWUgaXMgbm90IE5vbmUpIGFuZCAobGVuKEZpZWxkTmFt ZSkgPj0gTUFYX05BTUVfTEVOKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyUmV0 dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBpZiBXaWR0aCA9PSAwIGFuZCBGaWVsZE5hbWUgaXMgbm90IE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElE X1BBUkFNRVRFUg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcFRtcCA9IHNlbGYuTmV3 RGF0YVR5cGUuTWVtYmVycw0KPiA+DQo+ID4gKyAgICAgICAgd2hpbGUgcFRtcCBpcyBub3QgTm9u ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBGaWVsZE5hbWUgaXMgbm90IE5vbmUgYW5kIHBU bXAuRmllbGROYW1lID09IEZpZWxkTmFtZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9SRURFRklORUQNCj4gPg0KPiA+ICsgICAgICAg ICAgICBwVG1wID0gcFRtcC5OZXh0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBBbGln biA9IG1pbihzZWxmLlBhY2tBbGlnbiwgcEZpZWxkVHlwZS5BbGlnbikNCj4gPg0KPiA+ICsgICAg ICAgIFVwZGF0ZVRvdGFsU2l6ZSA9IEZhbHNlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBwTmV3RmllbGQgPSBTVmZyRGF0YUZpZWxkKCkNCj4gPg0KPiA+ICsgICAgICAgIGlmIHBOZXdG aWVsZCBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2Rl LlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIE1heERhdGFUeXBlU2l6ZSA9IHNlbGYuTmV3RGF0YVR5cGUuVG90YWxTaXplDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBwTmV3RmllbGQuRmllbGROYW1lID0gRmllbGROYW1lDQo+ ID4NCj4gPiArICAgICAgICBwTmV3RmllbGQuRmllbGRUeXBlID0gcEZpZWxkVHlwZQ0KPiA+DQo+ ID4gKyAgICAgICAgcE5ld0ZpZWxkLklzQml0RmllbGQgPSBUcnVlDQo+ID4NCj4gPiArICAgICAg ICBwTmV3RmllbGQuQml0V2lkdGggPSBXaWR0aA0KPiA+DQo+ID4gKyAgICAgICAgcE5ld0ZpZWxk LkFycmF5TnVtID0gMA0KPiA+DQo+ID4gKyAgICAgICAgcE5ld0ZpZWxkLkJpdE9mZnNldCA9IDAN Cj4gPg0KPiA+ICsgICAgICAgIHBOZXdGaWVsZC5PZmZzZXQgPSAwDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBpZiBzZWxmLk5ld0RhdGFUeXBlLk1lbWJlcnMgaXMgTm9uZToNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLk5ld0RhdGFUeXBlLk1lbWJlcnMgPSBwTmV3RmllbGQNCj4g Pg0KPiA+ICsgICAgICAgICAgICBwTmV3RmllbGQuTmV4dCA9IE5vbmUNCj4gPg0KPiA+ICsgICAg ICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgcFRtcCA9IHNlbGYuTmV3RGF0YVR5cGUu TWVtYmVycw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHdoaWxlIHBUbXAuTmV4dCBpcyBub3QgTm9u ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcFRtcCA9IHBUbXAuTmV4dA0KPiA+DQo+ID4g KyAgICAgICAgICAgIHBUbXAuTmV4dCA9IHBOZXdGaWVsZA0KPiA+DQo+ID4gKyAgICAgICAgICAg IHBOZXdGaWVsZC5OZXh0ID0gTm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYg RmllbGRJblVuaW9uOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBOZXdGaWVsZC5PZmZzZXQgPSAw DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgTWF4RGF0YVR5cGVTaXplIDwgcE5ld0ZpZWxkLkZp ZWxkVHlwZS5Ub3RhbFNpemU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuTmV3RGF0 YVR5cGUuVG90YWxTaXplID0gcE5ld0ZpZWxkLkZpZWxkVHlwZS5Ub3RhbFNpemUNCj4gPg0KPiA+ ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgIyBDaGVjayB3aGV0aGVyIHRo ZSBiaXQgZmllbGRzIGNhbiBiZSBjb250YWluZWQgd2l0aGluIG9uZQ0KPiBGaWVsZFR5cGUuDQo+ ID4NCj4gPiArICAgICAgICAgICAgY29uZDEgPSAocFRtcCBpcyBub3QgTm9uZSkgYW5kIChwVG1w LklzQml0RmllbGQpIGFuZA0KPiA+IChwVG1wLkZpZWxkVHlwZS5UeXBlTmFtZSA9PSBwTmV3Rmll bGQuRmllbGRUeXBlLlR5cGVOYW1lKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGNvbmQyID0gKHBU bXAgaXMgbm90IE5vbmUpIGFuZCAocFRtcC5CaXRPZmZzZXQgLSBwVG1wLk9mZnNldCAqIDggKw0K PiA+IHBUbXAuQml0V2lkdGggKyBwTmV3RmllbGQuQml0V2lkdGggPD0gcE5ld0ZpZWxkLkZpZWxk VHlwZS5Ub3RhbFNpemUgKiA4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGNvbmQxIGFuZCBj b25kMjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcE5ld0ZpZWxkLkJpdE9mZnNldCA9IHBU bXAuQml0T2Zmc2V0ICsgcFRtcC5CaXRXaWR0aA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBw TmV3RmllbGQuT2Zmc2V0ID0gcFRtcC5PZmZzZXQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgaWYgcE5ld0ZpZWxkLkJpdFdpZHRoID09IDA6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBwTmV3RmllbGQuQml0V2lkdGggPSBwTmV3RmllbGQuRmllbGRUeXBlLlRv dGFsU2l6ZSAqIDggLQ0KPiA+IChwTmV3RmllbGQuQml0T2Zmc2V0IC0gcFRtcC5PZmZzZXQgKiA4 KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHBOZXdGaWVsZC5CaXRPZmZzZXQgPSBzZWxmLk5ld0RhdGFUeXBlLlRvdGFsU2l6ZSAqIDgNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgVXBkYXRlVG90YWxTaXplID0gVHJ1ZQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgaWYgVXBkYXRlVG90YWxTaXplOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIHNlbGYuTmV3RGF0YVR5cGUuVG90YWxTaXplICUgQWxpZ24gPT0gMDoNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcE5ld0ZpZWxkLk9mZnNldCA9IHNlbGYuTmV3RGF0YVR5cGUu VG90YWxTaXplDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcE5ld0ZpZWxkLk9mZnNldCA9IHNlbGYuTmV3RGF0YVR5cGUuVG90YWxTaXplICsN Cj4gPiBzZWxmLkFsaWduU3R1ZmYoc2VsZi5OZXdEYXRhVHlwZS5Ub3RhbFNpemUsIEFsaWduKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTmV3RGF0YVR5cGUuVG90YWxTaXplID0gcE5ld0Zp ZWxkLk9mZnNldCArDQo+ID4gcE5ld0ZpZWxkLkZpZWxkVHlwZS5Ub3RhbFNpemUNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuTmV3RGF0YVR5cGUuQWxpZ24gPSBtaW4oc2VsZi5Q YWNrQWxpZ24sIG1heChwRmllbGRUeXBlLkFsaWduLA0KPiA+IHNlbGYuTmV3RGF0YVR5cGUuQWxp Z24pKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5OZXdEYXRhVHlwZS5IYXNCaXRGaWVsZCA9IFRy dWUNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VD Q0VTUw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0RGF0YVR5cGUoc2VsZiwgVHlw ZU5hbWUpOg0KPiA+DQo+ID4gKyAgICAgICAgaWYgVHlwZU5hbWUgaXMgTm9uZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gTm9uZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0VSUk9S X1NLSVBFRA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgRGF0YVR5cGUgPSBzZWxmLkRh dGFUeXBlTGlzdA0KPiA+DQo+ID4gKyAgICAgICAgd2hpbGUgRGF0YVR5cGUgaXMgbm90IE5vbmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgRGF0YVR5cGUuVHlwZU5hbWUgPT0gVHlwZU5hbWU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBEYXRhVHlwZSwgVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ICsgICAgICAgICAgICBEYXRhVHlwZSA9IERh dGFUeXBlLk5leHQNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBOb25lLCBWZnJSZXR1cm5Db2Rl LlZGUl9SRVRVUk5fVU5ERUZJTkVEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBEYXRh VHlwZUhhc0JpdEZpZWxkKHNlbGYsIFR5cGVOYW1lKToNCj4gPg0KPiA+ICsgICAgICAgIGlmIFR5 cGVOYW1lIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIEZhbHNlDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBwVHlwZSA9IHNlbGYuRGF0YVR5cGVMaXN0DQo+ID4N Cj4gPiArICAgICAgICB3aGlsZSBwVHlwZSBpcyBub3QgTm9uZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBpZiBwVHlwZS5UeXBlTmFtZSA9PSBUeXBlTmFtZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgYnJlYWsNCj4gPg0KPiA+ICsgICAgICAgICAgICBwVHlwZSA9IHBUeXBlLk5leHQNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIHBUeXBlIGlzIE5vbmU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIEZhbHNlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBw VG1wID0gcFR5cGUuTWVtYmVycw0KPiA+DQo+ID4gKyAgICAgICAgd2hpbGUgcFRtcCBpcyBub3Qg Tm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBwVG1wLklzQml0RmllbGQ6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiBUcnVlDQo+ID4NCj4gPiArICAgICAgICAgICAgcFRt cCA9IHBUbXAuTmV4dA0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIEZhbHNlDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGRlZiBEdW1wKHNlbGYsIGYpOg0KPiA+DQo+ID4gKyAgICAgICAgZi53 cml0ZSgiXG5cbioqKioqKioqKioqKipcbiIpDQo+ID4NCj4gPiArICAgICAgICBmLndyaXRlKCJc dFx0UGFja0FsaWduID0gIiArIHN0cihzZWxmLlBhY2tBbGlnbikgKyAiXG4iKQ0KPiA+DQo+ID4g KyAgICAgICAgcE5vZGUgPSBzZWxmLkRhdGFUeXBlTGlzdA0KPiA+DQo+ID4gKyAgICAgICAgd2hp bGUgcE5vZGUgaXMgbm90IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgZi53cml0ZSgiXHRc dHN0cnVjdCB7fSA6IEFsaWduIDogW3t9XSAgVG90YWxTaXplIDoNCj4gPiBbezojeH1dXG5cbiIu Zm9ybWF0KHBOb2RlLlR5cGVOYW1lLCBwTm9kZS5BbGlnbiwgcE5vZGUuVG90YWxTaXplKSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBmLndyaXRlKCJcdFx0c3RydWN0IHt9Ii5mb3JtYXQoc3RyKHBO b2RlLlR5cGVOYW1lKSkgKyAiXHR7XG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIEZOb2RlID0g cE5vZGUuTWVtYmVycw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHdoaWxlIEZOb2RlIGlzIG5vdCBO b25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBGTm9kZS5BcnJheU51bSA+IDA6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCJcdFx0XHQrezowPjhkfVt7OjA+ OHh9XSB7fVt7fV0NCj4gPHt9PlxuIi5mb3JtYXQoRk5vZGUuT2Zmc2V0LA0KPiA+IEZOb2RlLk9m ZnNldCwgRk5vZGUuRmllbGROYW1lLCBGTm9kZS5BcnJheU51bSwNCj4gPiBGTm9kZS5GaWVsZFR5 cGUuVHlwZU5hbWUpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgiXHRc dFx0K3s6MD44ZH1bezowPjh4fV0ge31be31dDQo+IDx7fT5cbiIuZm9ybWF0KEZOb2RlLk9mZnNl dCwNCj4gPiBGTm9kZS5CaXRPZmZzZXQsIEZOb2RlLkZpZWxkTmFtZSwgRk5vZGUuQXJyYXlOdW0s DQo+ID4gRk5vZGUuRmllbGRUeXBlLlR5cGVOYW1lKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgZWxpZiBGTm9kZS5GaWVsZE5hbWUgaXMgbm90IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICBmLndyaXRlKCJcdFx0XHQrezowPjhkfVt7OjA+OHh9XSB7fSA8e30+XG4iLmZv cm1hdChGTm9kZS5PZmZzZXQsDQo+ID4gRk5vZGUuT2Zmc2V0LCBGTm9kZS5GaWVsZE5hbWUsIEZO b2RlLkZpZWxkVHlwZS5UeXBlTmFtZSkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBm LndyaXRlKCJcdFx0XHQrezowPjhkfVt7OjA+OHh9XSB7fSA8e30+XG4iLmZvcm1hdChGTm9kZS5P ZmZzZXQsDQo+ID4gRk5vZGUuQml0T2Zmc2V0LCBGTm9kZS5GaWVsZE5hbWUsIEZOb2RlLkZpZWxk VHlwZS5UeXBlTmFtZSkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCJcdFx0XHQrezowPjhkfVt7OjA+OHh9XSA8 e30+XG4iLmZvcm1hdChGTm9kZS5PZmZzZXQsDQo+ID4gRk5vZGUuT2Zmc2V0LCBGTm9kZS5GaWVs ZFR5cGUuVHlwZU5hbWUpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgi XHRcdFx0K3s6MD44ZH1bezowPjh4fV0gPHt9PlxuIi5mb3JtYXQoRk5vZGUuT2Zmc2V0LA0KPiA+ IEZOb2RlLkJpdE9mZnNldCwgRk5vZGUuRmllbGRUeXBlLlR5cGVOYW1lKSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgRk5vZGUgPSBGTm9kZS5OZXh0DQo+ID4NCj4gPiArICAgICAgICAgICAg Zi53cml0ZSgiXHRcdH07XG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGYud3JpdGUoIi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LVxuIikNCj4gPg0KPiA+ICsgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCj4gPg0KPiA+ ICsNCj4gPg0KPiBmLndyaXRlKCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioNCj4gPiAqKioqKipcbiIpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArY2xhc3MgU1ZmckRlZmF1bHRTdG9yZU5vZGU6DQo+ID4NCj4gPiArICAg IGRlZiBfX2luaXRfXyhzZWxmLCBPYmpBZGRyPU5vbmUsIFJlZk5hbWU9IiIsIERlZmF1bHRTdG9y ZU5hbWVJZD0wLA0KPiA+IERlZmF1bHRJZD0wKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuT2Jq QWRkciA9IE9iakFkZHINCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUmVmTmFtZSA9IFJlZk5hbWUN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuRGVmYXVsdFN0b3JlTmFtZUlkID0gRGVmYXVsdFN0b3Jl TmFtZUlkDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkRlZmF1bHRJZCA9IERlZmF1bHRJZA0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5OZXh0ID0gTm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gK2NsYXNzIFZmckRlZmF1bHRTdG9yZToNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5p dF9fKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5EZWZhdWx0U3RvcmVMaXN0ID0gTm9u ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgQ2xlYXIoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLkRlZmF1bHRTdG9yZUxpc3QgPSBOb25lDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGRlZiBSZWdpc3RlckRlZmF1bHRTdG9yZShzZWxmLCBPYmpBZGRyOiBFRklfSUZSX0RF RkFVTFRTVE9SRSwNCj4gUmVmTmFtZSwNCj4gPiBEZWZhdWx0U3RvcmVOYW1lSWQsIERlZmF1bHRJ ZCk6DQo+ID4NCj4gPiArICAgICAgICBpZiBSZWZOYW1lID09ICIiIG9yIFJlZk5hbWUgaXMgTm9u ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X0ZBVEFMX0VSUk9SDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBwTm9kZSA9IHNlbGYu RGVmYXVsdFN0b3JlTGlzdA0KPiA+DQo+ID4gKyAgICAgICAgd2hpbGUgcE5vZGUgaXMgbm90IE5v bmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgcE5vZGUuUmVmTmFtZSA9PSBSZWZOYW1lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X1JFREVGSU5FRA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGUgPSBTVmZyRGVmYXVsdFN0b3JlTm9kZShP YmpBZGRyLCBSZWZOYW1lLA0KPiA+IERlZmF1bHRTdG9yZU5hbWVJZCwgRGVmYXVsdElkKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgcE5vZGUgaXMgTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX09VVF9GT1JfUkVTT1VS Q0VTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBwTm9kZS5OZXh0ID0gc2VsZi5EZWZh dWx0U3RvcmVMaXN0DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkRlZmF1bHRTdG9yZUxpc3QgPSBw Tm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9TVUNDRVNTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBVcGRhdGVE ZWZhdWx0VHlwZShzZWxmLCBEZWZhdWx0Tm9kZSk6DQo+ID4NCj4gPiArICAgICAgICBwTm9kZSA9 IHNlbGYuRGVmYXVsdFN0b3JlTGlzdA0KPiA+DQo+ID4gKyAgICAgICAgd2hpbGUgcE5vZGUgaXMg bm90IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgcE5vZGUuT2JqQWRkci5EZWZhdWx0 SWQgPT0gRGVmYXVsdE5vZGUuRGF0YS5HZXREZWZhdWx0SWQoKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgRGVmYXVsdE5vZGUuRGF0YS5TZXRUeXBlKHBOb2RlLlJlZk5hbWUpDQo+ID4NCj4g PiArICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiBEZWZhdWx0SWRSZWdpc3RlcmVkKHNlbGYsIERlZmF1bHRJZCk6DQo+ID4NCj4gPiAr ICAgICAgICBwTm9kZSA9IHNlbGYuRGVmYXVsdFN0b3JlTGlzdA0KPiA+DQo+ID4gKyAgICAgICAg d2hpbGUgcE5vZGUgaXMgbm90IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgcE5vZGUu RGVmYXVsdElkID09IERlZmF1bHRJZDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu IFRydWUNCj4gPg0KPiA+ICsgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBGYWxzZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICBkZWYgUmVSZWdpc3RlckRlZmF1bHRTdG9yZUJ5SWQoc2VsZiwgRGVmYXVsdElkLCBSZWZO YW1lLA0KPiA+IERlZmF1bHRTdG9yZU5hbWVJZCk6DQo+ID4NCj4gPiArICAgICAgICBwTm9kZSA9 IHNlbGYuRGVmYXVsdFN0b3JlTGlzdA0KPiA+DQo+ID4gKyAgICAgICAgd2hpbGUgcE5vZGUgaXMg bm90IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgcE5vZGUuRGVmYXVsdElkID09IERl ZmF1bHRJZDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgYnJlYWsNCj4gPg0KPiA+ICsgICAg ICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGlmIHBOb2RlIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIE5vbmUsIFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9VTkRFRklORUQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGlmIHBOb2RlLkRlZmF1bHRTdG9yZU5hbWVJZCA9PSBFRklfU1RSSU5HX0lEX0lOVkFM SUQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgcE5vZGUuRGVmYXVsdFN0b3JlTmFtZUlkID0gRGVm YXVsdFN0b3JlTmFtZUlkDQo+ID4NCj4gPiArICAgICAgICAgICAgcE5vZGUuUmVmTmFtZSA9IFJl Zk5hbWUNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBwTm9kZS5PYmpBZGRyIGlzIG5vdCBOb25l Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwTm9kZS5PYmpBZGRyLkRlZmF1bHROYW1lID0g RGVmYXVsdFN0b3JlTmFtZUlkDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBOb25lLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fUkVERUZJTkVE DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gcE5vZGUsIFZmclJldHVybkNv ZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRE ZWZhdWx0SWQoc2VsZiwgUmVmTmFtZSk6DQo+ID4NCj4gPiArICAgICAgICBwVG1wID0gc2VsZi5E ZWZhdWx0U3RvcmVMaXN0DQo+ID4NCj4gPiArICAgICAgICB3aGlsZSBwVG1wIGlzIG5vdCBOb25l Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHBUbXAuUmVmTmFtZSA9PSBSZWZOYW1lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBEZWZhdWx0SWQgPSBwVG1wLkRlZmF1bHRJZA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gRGVmYXVsdElkLCBWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fU1VDQ0VTUw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBUbXAgPSBwVG1wLk5leHQNCj4g Pg0KPiA+ICsgICAgICAgIHJldHVybiBOb25lLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5E RUZJTkVEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBCdWZmZXJWYXJTdG9yZUFsdENv bmZpZ0FkZChzZWxmLCBEZWZhdWx0SWQsIEJhc2VJbmZvLCBWYXJTdG9yZU5hbWUsDQo+ID4gVmFy U3RvcmVHdWlkLCBUeXBlLCBWYWx1ZSk6DQo+ID4NCj4gPiArICAgICAgICBpZiBWYXJTdG9yZU5h bWUgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5W RlJfUkVUVVJOX0ZBVEFMX0VSUk9SDQo+ID4NCj4gPiArICAgICAgICBwTm9kZSA9IHNlbGYuRGVm YXVsdFN0b3JlTGlzdA0KPiA+DQo+ID4gKyAgICAgICAgd2hpbGUgcE5vZGUgaXMgbm90IE5vbmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgcE5vZGUuRGVmYXVsdElkID09IERlZmF1bHRJZDoN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgYnJlYWsNCj4gPg0KPiA+ICsgICAgICAgICAgICBw Tm9kZSA9IHBOb2RlLk5leHQNCj4gPg0KPiA+ICsgICAgICAgIGlmIHBOb2RlIGlzIE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTkRF RklORUQNCj4gPg0KPiA+ICsgICAgICAgIGdWZnJCdWZmZXJDb25maWcuT3BlbigpDQo+ID4NCj4g PiArICAgICAgICBpZiBnVmZyQnVmZmVyQ29uZmlnLlNlbGVjdChWYXJTdG9yZU5hbWUsIFZhclN0 b3JlR3VpZCkgPT0gMDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBSZXR1cm52YWx1ZSA9IGdWZnJC dWZmZXJDb25maWcuV3JpdGUoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICJhIiwNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgVmFyU3RvcmVOYW1lLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBWYXJTdG9yZUd1aWQsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBOb2RlLkRlZmF1 bHRJZCwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgVHlwZSwNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgQmFzZUluZm8uSW5mby5WYXJPZmZzZXQsDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIEJhc2VJbmZvLlZhclRvdGFsU2l6ZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgVmFs dWUsDQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIFJl dHVybnZhbHVlICE9IDA6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGdWZnJCdWZmZXJDb25m aWcuQ2xvc2UoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29k ZShSZXR1cm52YWx1ZSkNCj4gPg0KPiA+ICsgICAgICAgIGdWZnJCdWZmZXJDb25maWcuQ2xvc2Uo KQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUND RVNTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgRUZJX1ZGUl9WQVJT VE9SRV9UWVBFKEVudW0pOg0KPiA+DQo+ID4gKyAgICBFRklfVkZSX1ZBUlNUT1JFX0lOVkFMSUQg PSAwDQo+ID4NCj4gPiArICAgIEVGSV9WRlJfVkFSU1RPUkVfQlVGRkVSID0gMQ0KPiA+DQo+ID4g KyAgICBFRklfVkZSX1ZBUlNUT1JFX0VGSSA9IDINCj4gPg0KPiA+ICsgICAgRUZJX1ZGUl9WQVJT VE9SRV9OQU1FID0gMw0KPiA+DQo+ID4gKyAgICBFRklfVkZSX1ZBUlNUT1JFX0JVRkZFUl9CSVRT ID0gNA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIEVmaVZhcjoNCj4g Pg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIFZhck5hbWU9MCwgVmFyU2l6ZT0wKToNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuRWZpVmFyTmFtZSA9IFZhck5hbWUNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuRWZpVmFyU2l6ZSA9IFZhclNpemUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICtERUZBVUxUX05BTUVfVEFCTEVfSVRFTVMgPSAxMDI0DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArY2xhc3MgU1ZmclZhclN0b3JhZ2VOb2RlOg0KPiA+DQo+ID4gKyAg ICBkZWYgX19pbml0X18oDQo+ID4NCj4gPiArICAgICAgICBzZWxmLA0KPiA+DQo+ID4gKyAgICAg ICAgVmFyU3RvcmVOYW1lPSIiLA0KPiA+DQo+ID4gKyAgICAgICAgVmFyU3RvcmVJZD0wLA0KPiA+ DQo+ID4gKyAgICAgICAgR3VpZD1Ob25lLA0KPiA+DQo+ID4gKyAgICAgICAgQXR0cmlidXRlcz0w LA0KPiA+DQo+ID4gKyAgICAgICAgRmxhZz1UcnVlLA0KPiA+DQo+ID4gKyAgICAgICAgRWZpVmFs dWU9Tm9uZSwNCj4gPg0KPiA+ICsgICAgICAgIERhdGFUeXBlPU5vbmUsDQo+ID4NCj4gPiArICAg ICAgICBCaXRzVmFyc3RvcmU9RmFsc2UsDQo+ID4NCj4gPiArICAgICk6DQo+ID4NCj4gPiArICAg ICAgICBzZWxmLkd1aWQgPSBHdWlkDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlZhclN0b3JlTmFt ZSA9IFZhclN0b3JlTmFtZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5WYXJTdG9yZUlkID0gVmFy U3RvcmVJZA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5Bc3NpZ25lZEZsYWcgPSBGbGFnDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLkF0dHJpYnV0ZXMgPSBBdHRyaWJ1dGVzDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLk5leHQgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkVmaVZhciA9IEVm aVZhbHVlDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkRhdGFUeXBlID0gRGF0YVR5cGUNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuTmFtZVNwYWNlID0gW10NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGlmIEVmaVZhbHVlIGlzIG5vdCBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuVmFyc3RvcmVUeXBlID0NCj4gRUZJX1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RP UkVfRUZJDQo+ID4NCj4gPiArICAgICAgICBlbGlmIERhdGFUeXBlIGlzIG5vdCBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIEJpdHNWYXJzdG9yZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5WYXJzdG9yZVR5cGUgPQ0KPiA+IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklf VkZSX1ZBUlNUT1JFX0JVRkZFUl9CSVRTDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5WYXJzdG9yZVR5cGUgPQ0KPiA+IEVGSV9WRlJf VkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX0JVRkZFUg0KPiA+DQo+ID4gKyAgICAgICAg ZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlZhcnN0b3JlVHlwZSA9DQo+ID4gRUZJ X1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfTkFNRQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIFNDb25maWdJdGVtOg0KPiA+DQo+ID4gKyAgICBkZWYg X19pbml0X18oc2VsZiwgTmFtZT1Ob25lLCBHdWlkPU5vbmUsIElkPU5vbmUsIFR5cGU9Tm9uZSwN Cj4gPiBPZmZzZXQ9Tm9uZSwgV2lkdGg9Tm9uZSwgVmFsdWU9Tm9uZSk6DQo+ID4NCj4gPiArICAg ICAgICBzZWxmLk5hbWUgPSBOYW1lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkd1aWQgPSBHdWlk DQo+ID4NCj4gPiArICAgICAgICBzZWxmLklkID0gSWQNCj4gPg0KPiA+ICsgICAgICAgIGlmIFR5 cGUgaXMgbm90IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgIyBsaXN0IG9mIE9mZnNldC9W YWx1ZSBpbiB0aGUgdmFyc3RvcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkluZm9TdHJM aXN0ID0gU0NvbmZpZ0luZm8oVHlwZSwgT2Zmc2V0LCBXaWR0aCwgVmFsdWUpDQo+ID4NCj4gPiAr ICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuSW5mb1N0ckxpc3QgPSBO b25lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLk5leHQgPSBOb25lDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArY2xhc3MgU0NvbmZpZ0luZm86DQo+ID4NCj4gPiArICAgIGRlZiBf X2luaXRfXyhzZWxmLCBUeXBlLCBPZmZzZXQsIFdpZHRoLCBWYWx1ZSk6DQo+ID4NCj4gPiArICAg ICAgICBzZWxmLlR5cGUgPSBUeXBlDQo+ID4NCj4gPiArICAgICAgICBzZWxmLk9mZnNldCA9IE9m ZnNldA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5XaWR0aCA9IFdpZHRoDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLk5leHQgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlZhbHVlID0gVmFs dWUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBWZnJCdWZmZXJDb25m aWc6DQo+ID4NCj4gPiArICAgIF9fbWV0YWNsYXNzX18gPSBBQkNNZXRhDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu SXRlbUxpc3RIZWFkID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5JdGVtTGlzdFRhaWwg PSBOb25lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkl0ZW1MaXN0UG9zID0gTm9uZQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0VmFySXRlbUxpc3Qoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICByZXR1cm4gc2VsZi5JdGVtTGlzdEhlYWQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgQGFic3RyYWN0bWV0aG9kDQo+ID4NCj4gPiArICAgIGRlZiBPcGVuKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5JdGVtTGlzdFBvcyA9IHNlbGYuSXRlbUxpc3RIZWFkDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIEBhYnN0cmFjdG1ldGhvZA0KPiA+DQo+ID4gKyAgICBkZWYgQ2xv c2Uoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkl0ZW1MaXN0UG9zID0gTm9uZQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBAYWJzdHJhY3RtZXRob2QNCj4gPg0KPiA+ICsgICAgZGVm IFNlbGVjdChzZWxmLCBOYW1lLCBHdWlkLCBJZD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgIGlm IE5hbWUgaXMgTm9uZSBvciBHdWlkIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5JdGVtTGlzdFBvcyA9IHNlbGYuSXRlbUxpc3RIZWFkDQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIDANCj4gPg0KPiA+ICsgICAgICAgIHAgPSBzZWxmLkl0ZW1MaXN0SGVhZA0KPiA+DQo+ ID4gKyAgICAgICAgd2hpbGUgcCBpcyBub3QgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBwLk5hbWUgIT0gTmFtZSBvciBwLkd1aWQuX19jbXBfXyhHdWlkKSBpcyBGYWxzZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcCA9IHAuTmV4dA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBjb250aW51ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIElkIGlzIG5vdCBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBwLklkIGlzIE5vbmUgb3IgcC5JZCAhPSBJZDoNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHAgPSBwLk5leHQNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIGNvbnRpbnVlDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiBwLklkIGlz IG5vdCBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwID0gcC5OZXh0DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIGNvbnRpbnVlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5J dGVtTGlzdFBvcyA9IHANCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gMA0KPiA+DQo+ID4g KyAgICAgICAgcmV0dXJuIDENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgQGFic3RyYWN0bWV0 aG9kDQo+ID4NCj4gPiArICAgIGRlZiBSZWdpc3RlcihzZWxmLCBOYW1lLCBHdWlkLCBJZD1Ob25l KToNCj4gPg0KPiA+ICsgICAgICAgIGlmIHNlbGYuU2VsZWN0KE5hbWUsIEd1aWQpID09IDA6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIDENCj4gPg0KPiA+ICsgICAgICAgIHBOZXcgPSBT Q29uZmlnSXRlbShOYW1lLCBHdWlkLCBJZCkNCj4gPg0KPiA+ICsgICAgICAgIGlmIHBOZXcgaXMg Tm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gMg0KPiA+DQo+ID4gKyAgICAgICAg aWYgc2VsZi5JdGVtTGlzdEhlYWQgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Lkl0ZW1MaXN0SGVhZCA9IHBOZXcNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkl0ZW1MaXN0 VGFpbCA9IHBOZXcNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5JdGVtTGlzdFRhaWwuTmV4dCA9IHBOZXcNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLkl0ZW1MaXN0VGFpbCA9IHBOZXcNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuSXRlbUxpc3RQ b3MgPSBwTmV3DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gMA0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBAYWJzdHJhY3RtZXRob2QNCj4gPg0KPiA+ICsgICAgZGVmIFdyaXRlKHNlbGYsIE1v ZGUsIE5hbWUsIEd1aWQsIElkLCBUeXBlLCBPZmZzZXQsIFdpZHRoLCBWYWx1ZSk6DQo+ID4NCj4g PiArICAgICAgICBSZXQgPSBzZWxmLlNlbGVjdChOYW1lLCBHdWlkKQ0KPiA+DQo+ID4gKyAgICAg ICAgaWYgUmV0ICE9IDA6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFJldA0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgTW9kZSA9PSAiYSI6DQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgc2VsZi5TZWxlY3QoTmFtZSwgR3VpZCwgSWQpICE9IDA6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHBJdGVtID0gU0NvbmZpZ0l0ZW0oTmFtZSwgR3VpZCwgSWQsIFR5cGUsIE9m ZnNldCwgV2lkdGgsIFZhbHVlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBwSXRlbSBp cyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDINCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgc2VsZi5JdGVtTGlzdEhlYWQgaXMgTm9u ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuSXRlbUxpc3RIZWFkID0gcEl0 ZW0NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuSXRlbUxpc3RUYWlsID0gcEl0 ZW0NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIHNlbGYuSXRlbUxpc3RUYWlsLk5leHQgPSBwSXRlbQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5JdGVtTGlzdFRhaWwgPSBwSXRlbQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLkl0ZW1MaXN0UG9zID0gcEl0ZW0NCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAjIHRyYW52ZXJzZSB0aGUgbGlzdCB0byBmaW5kIG91dCBpZiB0aGVyZSdzIGFscmVhZHkgdGhl IHZhbHVlIGZvciB0aGUNCj4gPiBzYW1lIE9mZnNldA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBwSW5mbyA9IHNlbGYuSXRlbUxpc3RQb3MuSW5mb1N0ckxpc3QNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgd2hpbGUgcEluZm8gaXMgbm90IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICBpZiBwSW5mby5PZmZzZXQgPT0gT2Zmc2V0Og0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiAwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBwSW5m byA9IHBJbmZvLk5leHQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcElu Zm8gPSBTQ29uZmlnSW5mbyhUeXBlLCBPZmZzZXQsIFdpZHRoLCBWYWx1ZSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgaWYgcEluZm8gaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIHJldHVybiAyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBJ bmZvLk5leHQgPSBzZWxmLkl0ZW1MaXN0UG9zLkluZm9TdHJMaXN0DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuSXRlbUxpc3RQb3MuSW5mb1N0ckxpc3QgPSBwSW5mbw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBNb2RlID09ICJkIjoNCj4gPg0KPiA+ICsgICAgICAg ICAgICBpZiBzZWxmLkl0ZW1MaXN0SGVhZCA9PSBzZWxmLkl0ZW1MaXN0UG9zOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLkl0ZW1MaXN0SGVhZCA9IHNlbGYuSXRlbUxpc3RQb3MuTmV4 dA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBJdGVtID0gc2VsZi5JdGVtTGlz dEhlYWQNCj4gPg0KPiA+ICsgICAgICAgICAgICB3aGlsZSBwSXRlbS5OZXh0ICE9IHNlbGYuSXRl bUxpc3RQb3M6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBJdGVtID0gcEl0ZW0uTmV4dA0K PiA+DQo+ID4gKyAgICAgICAgICAgIHBJdGVtLk5leHQgPSBzZWxmLkl0ZW1MaXN0UG9zLk5leHQN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBzZWxmLkl0ZW1MaXN0VGFpbCA9 PSBzZWxmLkl0ZW1MaXN0UG9zOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLkl0ZW1M aXN0VGFpbCA9IHBJdGVtDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5J dGVtTGlzdFBvcyA9IHBJdGVtLk5leHQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGVs aWYgTW9kZSA9PSAiaSI6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgSWQgaXMgbm90IE5vbmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuSXRlbUxpc3RQb3MuSWQgPSBJZA0KPiA+ DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gMQ0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIDANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICtnVmZyQnVmZmVyQ29uZmlnID0gVmZyQnVmZmVyQ29uZmlnKCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBFRklfVkFSU1RPUkVfSU5GTyhTdHJ1Y3R1cmUpOg0KPiA+ DQo+ID4gKyAgICBfcGFja18gPSAxDQo+ID4NCj4gPiArICAgIF9maWVsZHNfID0gWw0KPiA+DQo+ ID4gKyAgICAgICAgKCJWYXJTdG9yZUlkIiwgY191aW50MTYpLA0KPiA+DQo+ID4gKyAgICAgICAg KCJJbmZvIiwgVmFyU3RvcmVJbmZvTm9kZSksDQo+ID4NCj4gPiArICAgICAgICAoIlZhclR5cGUi LCBjX3VpbnQ4KSwNCj4gPg0KPiA+ICsgICAgICAgICgiVmFyVG90YWxTaXplIiwgY191aW50MzIp LA0KPiA+DQo+ID4gKyAgICAgICAgKCJJc0JpdFZhciIsIGNfYm9vbCksDQo+ID4NCj4gPiArICAg IF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKA0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZiwNCj4gPg0KPiA+ICsgICAgICAgIFZhclN0b3JlSWQ9RUZJX1ZBUlNUT1JFX0lE X0lOVkFMSUQsDQo+ID4NCj4gPiArICAgICAgICBWYXJOYW1lPUVGSV9TVFJJTkdfSURfSU5WQUxJ RCwNCj4gPg0KPiA+ICsgICAgICAgIFZhck9mZnNldD1FRklfVkFST0ZGU0VUX0lOVkFMSUQsDQo+ ID4NCj4gPiArICAgICAgICBWYXJUeXBlPUVGSV9JRlJfVFlQRV9PVEhFUiwNCj4gPg0KPiA+ICsg ICAgICAgIFZhclRvdGFsU2l6ZT0wLA0KPiA+DQo+ID4gKyAgICAgICAgSXNCaXRWYXI9RmFsc2Us DQo+ID4NCj4gPiArICAgICk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlZhclN0b3JlSWQgPSBW YXJTdG9yZUlkDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkluZm8uVmFyTmFtZSA9IFZhck5hbWUN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuSW5mby5WYXJPZmZzZXQgPSBWYXJPZmZzZXQNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuVmFyVG90YWxTaXplID0gVmFyVG90YWxTaXplDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLklzQml0VmFyID0gSXNCaXRWYXINCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu VmFyVHlwZSA9IFZhclR5cGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFz cyBCdWZmZXJWYXJTdG9yZUZpZWxkSW5mb05vZGU6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRf XyhzZWxmLCBCYXNlSW5mbzogRUZJX1ZBUlNUT1JFX0lORk8pOg0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5WYXJTdG9yZUluZm8gPSBFRklfVkFSU1RPUkVfSU5GTygpDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLlZhclN0b3JlSW5mby5WYXJUeXBlID0gQmFzZUluZm8uVmFyVHlwZQ0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5WYXJTdG9yZUluZm8uVmFyVG90YWxTaXplID0gQmFzZUluZm8uVmFyVG90 YWxTaXplDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlZhclN0b3JlSW5mby5JbmZvLlZhck9mZnNl dCA9IEJhc2VJbmZvLkluZm8uVmFyT2Zmc2V0DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlZhclN0 b3JlSW5mby5WYXJTdG9yZUlkID0gQmFzZUluZm8uVmFyU3RvcmVJZA0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5OZXh0ID0gTm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2Ns YXNzIFZmckRhdGFTdG9yYWdlOg0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAjIFNWZnJWYXJTdG9yYWdlTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5CdWZmZXJWYXJTdG9yZUxpc3QgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkVm aVZhclN0b3JlTGlzdCA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuTmFtZVZhclN0b3Jl TGlzdCA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuQ3VyclZhclN0b3JhZ2VOb2RlID0g Tm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5OZXdWYXJTdG9yYWdlTm9kZSA9IE5vbmUNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuQnVmZmVyRmllbGRJbmZvTGlzdEhlYWQgPSBOb25lDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLm1CdWZmZXJGaWVsZEluZm9MaXN0VGFpbCA9IE5vbmUNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuRnJlZVZhclN0b3JlSWRCaXRNYXAgPSBbXQ0KPiA+DQo+ID4gKyAg ICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgRUZJX0ZSRUVfVkFSU1RPUkVfSURfQklUTUFQX1NJWkUp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRnJlZVZhclN0b3JlSWRCaXRNYXAuYXBwZW5k KDApDQo+ID4NCj4gPiArICAgICAgICAjIFF1ZXN0aW9uIElEMCBpcyByZXNlcnZlZA0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5GcmVlVmFyU3RvcmVJZEJpdE1hcFswXSA9IDB4ODAwMDAwMDANCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIENsZWFyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgIyAgU1ZmclZhclN0b3JhZ2VOb2RlDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkJ1ZmZlclZh clN0b3JlTGlzdCA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuRWZpVmFyU3RvcmVMaXN0 ID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5OYW1lVmFyU3RvcmVMaXN0ID0gTm9uZQ0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5DdXJyVmFyU3RvcmFnZU5vZGUgPSBOb25lDQo+ID4NCj4g PiArICAgICAgICBzZWxmLk5ld1ZhclN0b3JhZ2VOb2RlID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5CdWZmZXJGaWVsZEluZm9MaXN0SGVhZCA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYubUJ1ZmZlckZpZWxkSW5mb0xpc3RUYWlsID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5GcmVlVmFyU3RvcmVJZEJpdE1hcCA9IFtdDQo+ID4NCj4gPiArICAgICAgICBmb3IgXyBp biByYW5nZSgwLCBFRklfRlJFRV9WQVJTVE9SRV9JRF9CSVRNQVBfU0laRSk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5GcmVlVmFyU3RvcmVJZEJpdE1hcC5hcHBlbmQoMCkNCj4gPg0KPiA+ ICsgICAgICAgICMgIFF1ZXN0aW9uIElEMCBpcyByZXNlcnZlZA0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5GcmVlVmFyU3RvcmVJZEJpdE1hcFswXSA9IDB4ODAwMDAwMDANCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgZGVmIEdldEJ1ZmZlclZhclN0b3JlTGlzdChzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgIHJldHVybiBzZWxmLkJ1ZmZlclZhclN0b3JlTGlzdA0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBkZWYgQ2hlY2tHdWlkRmllbGQoc2VsZiwgcE5vZGUsIFN0b3JlR3VpZCwgSGFzRm91 bmRPbmUsIFJldHVybkNvZGUpOg0KPiA+DQo+ID4gKyAgICAgICAgaWYgU3RvcmVHdWlkIGlzIG5v dCBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICMgIElmIGhhcyBndWlkIGluZm8sIGNvbXBh cmUgdGhlIGd1aWQgZmllbGQuDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgcE5vZGUuR3VpZC5f X2NtcF9fKFN0b3JlR3VpZCk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuQ3VyclZh clN0b3JhZ2VOb2RlID0gcE5vZGUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgUmV0dXJuQ29k ZSA9IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiBUcnVlLCBSZXR1cm5Db2RlLCBIYXNGb3VuZE9uZQ0KPiA+DQo+ID4gKyAg ICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAjICBub3QgaGFzIEd1aWQgZmllbGQs IGNoZWNrIHdoZXRoZXIgdGhpcyBuYW1lIGlzIHRoZSBvbmx5IG9uZS4NCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBIYXNGb3VuZE9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgIyAgVGhl IG5hbWUgaGFzIGNvbmZsaWN0LCByZXR1cm4gbmFtZSByZWRlZmluZWQuDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIFJldHVybkNvZGUgPQ0KPiA+IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9W QVJTVE9SRV9OQU1FX1JFREVGSU5FRF9FUlJPUg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gVHJ1ZSwgUmV0dXJuQ29kZSwgSGFzRm91bmRPbmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLkN1cnJWYXJTdG9yYWdlTm9kZSA9IHBOb2RlDQo+ID4NCj4gPiAr ICAgICAgICAgICAgSGFzRm91bmRPbmUgPSBUcnVlDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g RmFsc2UsIFJldHVybkNvZGUsIEhhc0ZvdW5kT25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiBHZXRWYXJTdG9yZUJ5RGF0YVR5cGUoc2VsZiwgRGF0YVR5cGVOYW1lLCBWYXJHdWlkKToN Cj4gPg0KPiA+ICsgICAgICAgIE1hdGNoTm9kZSA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgIHBO b2RlID0gc2VsZi5CdWZmZXJWYXJTdG9yZUxpc3QNCj4gPg0KPiA+ICsgICAgICAgIHdoaWxlIHBO b2RlIGlzIG5vdCBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHBOb2RlLkRhdGFUeXBl LlR5cGVOYW1lICE9IERhdGFUeXBlTmFtZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcE5v ZGUgPSBwTm9kZS5OZXh0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGNvbnRpbnVlDQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgVmFyR3VpZCBpcyBub3QgTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgaWYgcE5vZGUuR3VpZC5fX2NtcF9fKFZhckd1aWQpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIHBOb2RlLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f U1VDQ0VTUw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgTWF0Y2hOb2RlIGlzIE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIE1hdGNoTm9kZSA9IHBOb2RlDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgIyBNb3JlIHRoYW4gb25l IHZhcnN0b3JlcyByZWZlcnJlZCB0aGUgc2FtZSBkYXRhIHN0cnVjdHVyZXMNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsDQo+ID4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X1ZBUlNUT1JFX0RBVEFUWVBFX1JFREVGSU5FRF9FUlJPUg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHBOb2RlID0gcE5vZGUuTmV4dA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgTWF0 Y2hOb2RlIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIE1hdGNoTm9kZSwg VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOREVGSU5FRA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgcmV0dXJuIE1hdGNoTm9kZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NF U1MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIiIiDQo+ID4NCj4gPiArICAgICAgIEJhc2Ug b24gdGhlIGlucHV0IHN0b3JlIG5hbWUgYW5kIGd1aWQgdG8gZmluZCB0aGUgdmFyc3RvcmUgaWQu DQo+ID4NCj4gPiArICAgICAgIElmIGJvdGggbmFtZSBhbmQgZ3VpZCBhcmUgaW5wdXRlZCwgYmFz ZSBvbiB0aGUgbmFtZSBhbmQgZ3VpZCB0bw0KPiA+DQo+ID4gKyAgICAgICBmb3VuZCB0aGUgdmFy c3RvcmUuIElmIG9ubHkgbmFtZSBpbnB1dGVkLCBiYXNlIG9uIHRoZSBuYW1lIHRvDQo+ID4NCj4g PiArICAgICAgIGZvdW5kIHRoZSB2YXJzdG9yZSBhbmQgZ28gb24gdG8gY2hlY2sgd2hldGhlciBt b3JlIHRoYW4gb25lIHZhcnN0b3JlDQo+ID4NCj4gPiArICAgICAgIGhhcyB0aGUgc2FtZSBuYW1l LiBJZiBvbmx5IGhhcyBmb3VuZCBvbmUgdmFyc3RvcmUsIHJldHVybiB0aGlzDQo+ID4NCj4gPiAr ICAgICAgIHZhcnN0b3JlOyBpZiBtb3JlIHRoYW4gb25lIHZhcnN0b3JlIGhhcyBzYW1lIG5hbWUs IHJldHVybiB2YXJzdG9yZQ0KPiA+DQo+ID4gKyAgICAgICBuYW1lIHJlZGVmaW5lZCBlcnJvci4g SWYgbm8gdmFyc3RvcmUgZm91bmQgYnkgdmFyc3RvcmUgbmFtZSwgY2FsbA0KPiA+DQo+ID4gKyAg ICAgICBmdW5jdGlvbiBHZXRWYXJTdG9yZUJ5RGF0YVR5cGUgYW5kIHVzZSBpbnB1dGVkIHZhcnN0 b3JlIG5hbWUgYXMNCj4gPg0KPiA+ICsgICAgICAgZGF0YSB0eXBlIG5hbWUgdG8gc2VhcmNoLg0K PiA+DQo+ID4gKyAgICAgICAiIiINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldFZh clN0b3JlSWQoc2VsZiwgU3RvcmVOYW1lLCBTdG9yZUd1aWQ9Tm9uZSk6DQo+ID4NCj4gPiArICAg ICAgICBSZXR1cm5Db2RlID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgSGFzRm91bmRPbmUgPSBG YWxzZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5DdXJyVmFyU3RvcmFnZU5vZGUgPSBOb25lDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBwTm9kZSA9IHNlbGYuQnVmZmVyVmFyU3RvcmVM aXN0DQo+ID4NCj4gPiArICAgICAgICB3aGlsZSBwTm9kZSBpcyBub3QgTm9uZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBwTm9kZS5WYXJTdG9yZU5hbWUgPT0gU3RvcmVOYW1lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBSZXN1bHQsIFJldHVybkNvZGUsIEhhc0ZvdW5kT25lID0gc2Vs Zi5DaGVja0d1aWRGaWVsZChwTm9kZSwNCj4gPiBTdG9yZUd1aWQsIEhhc0ZvdW5kT25lLCBSZXR1 cm5Db2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBSZXN1bHQ6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBWYXJTdG9yZUlkID0gc2VsZi5DdXJyVmFyU3RvcmFnZU5vZGUu VmFyU3RvcmVJZA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZhclN0b3Jl SWQsIFJldHVybkNvZGUNCj4gPg0KPiA+ICsgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlID0gc2VsZi5FZmlWYXJTdG9yZUxp c3QNCj4gPg0KPiA+ICsgICAgICAgIHdoaWxlIHBOb2RlIGlzIG5vdCBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIHBOb2RlLlZhclN0b3JlTmFtZSA9PSBTdG9yZU5hbWU6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIFJlc3VsdCwgUmV0dXJuQ29kZSwgSGFzRm91bmRPbmUgPSBzZWxm LkNoZWNrR3VpZEZpZWxkKHBOb2RlLA0KPiA+IFN0b3JlR3VpZCwgSGFzRm91bmRPbmUsIFJldHVy bkNvZGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFJlc3VsdDoNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIFZhclN0b3JlSWQgPSBzZWxmLkN1cnJWYXJTdG9yYWdlTm9kZS5W YXJTdG9yZUlkDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICByZXR1cm4gVmFyU3RvcmVJ ZCwgUmV0dXJuQ29kZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGUgPSBzZWxmLk5hbWVWYXJTdG9yZUxp c3QNCj4gPg0KPiA+ICsgICAgICAgIHdoaWxlIHBOb2RlIGlzIG5vdCBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIHBOb2RlLlZhclN0b3JlTmFtZSA9PSBTdG9yZU5hbWU6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIFJlc3VsdCwgUmV0dXJuQ29kZSwgSGFzRm91bmRPbmUgPSBzZWxm LkNoZWNrR3VpZEZpZWxkKHBOb2RlLA0KPiA+IFN0b3JlR3VpZCwgSGFzRm91bmRPbmUsIFJldHVy bkNvZGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFJlc3VsdDoNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIFZhclN0b3JlSWQgPSBzZWxmLkN1cnJWYXJTdG9yYWdlTm9kZS5W YXJTdG9yZUlkDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICByZXR1cm4gVmFyU3RvcmVJ ZCwgUmV0dXJuQ29kZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgSGFzRm91bmRPbmU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgVmFyU3RvcmVJZCA9IHNlbGYuQ3VyclZhclN0b3JhZ2VOb2RlLlZhclN0b3Jl SWQNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmFyU3RvcmVJZCwgVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIFZhclN0 b3JlSWQgPSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRA0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGUs IFJldHVybkNvZGUgPSBzZWxmLkdldFZhclN0b3JlQnlEYXRhVHlwZShTdG9yZU5hbWUsDQo+ID4g U3RvcmVHdWlkKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgcE5vZGUgaXMgbm90IE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5DdXJyVmFyU3RvcmFnZU5vZGUgPSBwTm9kZQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIFZhclN0b3JlSWQgPSBwTm9kZS5WYXJTdG9yZUlkDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gVmFyU3RvcmVJZCwgUmV0dXJuQ29kZQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0RnJlZVZhclN0b3JlSWQoc2VsZiwgVmFyVHlwZSk6 DQo+ID4NCj4gPiArICAgICAgICBJbmRleCA9IDANCj4gPg0KPiA+ICsgICAgICAgIGZvciBpIGlu IHJhbmdlKDAsIEVGSV9GUkVFX1ZBUlNUT1JFX0lEX0JJVE1BUF9TSVpFKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBzZWxmLkZyZWVWYXJTdG9yZUlkQml0TWFwW2ldICE9IDB4RkZGRkZGRkY6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIEluZGV4ID0gaQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBicmVhaw0KPiA+DQo+ID4gKyAgICAgICAgaWYgSW5kZXggPT0gRUZJX0ZSRUVfVkFS U1RPUkVfSURfQklUTUFQX1NJWkU6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIEVGSV9W QVJTVE9SRV9JRF9JTlZBTElEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBPZmZzZXQg PSAwDQo+ID4NCj4gPiArICAgICAgICBNYXNrID0gMHg4MDAwMDAwMA0KPiA+DQo+ID4gKyAgICAg ICAgd2hpbGUgTWFzayAhPSAwOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIChzZWxmLkZyZWVW YXJTdG9yZUlkQml0TWFwW0luZGV4XSAmIE1hc2spID09IDA6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuRnJlZVZhclN0b3JlSWRCaXRNYXBbSW5kZXhdIHw9IE1hc2sNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIChJbmRleCA8PCBFRklfQklUU19TSElGVF9QRVJfVUlO VDMyKSArIE9mZnNldA0KPiA+DQo+ID4gKyAgICAgICAgICAgIE1hc2sgPj49IDENCj4gPg0KPiA+ ICsgICAgICAgICAgICBPZmZzZXQgKz0gMQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIEVGSV9W QVJTVE9SRV9JRF9JTlZBTElEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBDaGVja1Zh clN0b3JlSWRGcmVlKHNlbGYsIFZhclN0b3JlSWQpOg0KPiA+DQo+ID4gKyAgICAgICAgSW5kZXgg PSBpbnQoVmFyU3RvcmVJZCAvIEVGSV9CSVRTX1BFUl9VSU5UMzIpDQo+ID4NCj4gPiArICAgICAg ICBPZmZzZXQgPSBWYXJTdG9yZUlkICUgRUZJX0JJVFNfUEVSX1VJTlQzMg0KPiA+DQo+ID4gKyAg ICAgICAgcmV0dXJuIChzZWxmLkZyZWVWYXJTdG9yZUlkQml0TWFwW0luZGV4XSAmICgweDgwMDAw MDAwID4+IE9mZnNldCkpDQo+ID09DQo+ID4gMA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBk ZWYgTWFya1ZhclN0b3JlSWRVc2VkKHNlbGYsIFZhclN0b3JlSWQpOg0KPiA+DQo+ID4gKyAgICAg ICAgSW5kZXggPSBpbnQoVmFyU3RvcmVJZCAvIEVGSV9CSVRTX1BFUl9VSU5UMzIpDQo+ID4NCj4g PiArICAgICAgICBPZmZzZXQgPSBWYXJTdG9yZUlkICUgRUZJX0JJVFNfUEVSX1VJTlQzMg0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5GcmVlVmFyU3RvcmVJZEJpdE1hcFtJbmRleF0gfD0gMHg4MDAw MDAwMCA+PiBPZmZzZXQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIERlY2xhcmVCdWZm ZXJWYXJTdG9yZShzZWxmLCBTdG9yZU5hbWUsIEd1aWQsIERhdGFUeXBlREIsDQo+IFR5cGVOYW1l LA0KPiA+IFZhclN0b3JlSWQsIElzQml0VmFyU3RvcmUsIEF0dHI9MCwgRmxhZz1UcnVlKToNCj4g Pg0KPiA+ICsgICAgICAgIGlmIFN0b3JlTmFtZSBpcyBOb25lIG9yIEd1aWQgaXMgTm9uZSBvciBE YXRhVHlwZURCIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVy bkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9FUlJPUg0KPiA+DQo+ID4gKyAgICAgICAgXywgUmV0dXJu Q29kZSA9IHNlbGYuR2V0VmFyU3RvcmVJZChTdG9yZU5hbWUsIEd1aWQpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBpZiBSZXR1cm5Db2RlID09IFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9TVUNDRVNTOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fUkVERUZJTkVEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBEYXRhVHlw ZSwgUmV0dXJuQ29kZSA9IERhdGFUeXBlREIuR2V0RGF0YVR5cGUoVHlwZU5hbWUpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBpZiBSZXR1cm5Db2RlICE9IFZmclJldHVybkNvZGUuVkZS X1JFVFVSTl9TVUNDRVNTOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBSZXR1cm5Db2Rl DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBWYXJTdG9yZUlkID09IEVGSV9WQVJT VE9SRV9JRF9JTlZBTElEOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFZhclN0b3JlSWQgPQ0KPiA+ DQo+IHNlbGYuR2V0RnJlZVZhclN0b3JlSWQoRUZJX1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJf VkFSU1RPUkVfQlVGRkVSDQo+ID4gKQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBzZWxmLkNoZWNrVmFyU3RvcmVJZEZyZWUoVmFyU3RvcmVJZCkgaXMg RmFsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fVkFSU1RPUkVJRF9SRURFRklORUQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Lk1hcmtWYXJTdG9yZUlkVXNlZChWYXJTdG9yZUlkKQ0KPiA+DQo+ID4gKyAgICAgICAgcE5ldyA9 IFNWZnJWYXJTdG9yYWdlTm9kZShTdG9yZU5hbWUsIFZhclN0b3JlSWQsIEd1aWQsIEF0dHIsIEZs YWcsDQo+ID4gTm9uZSwgRGF0YVR5cGUsIElzQml0VmFyU3RvcmUpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBpZiBwTmV3IGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNFUw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgcE5ldy5OZXh0ID0gc2VsZi5CdWZmZXJWYXJTdG9yZUxpc3QN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuQnVmZmVyVmFyU3RvcmVMaXN0ID0gcE5ldw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgZ1ZmckJ1ZmZlckNvbmZpZy5SZWdpc3RlcihTdG9y ZU5hbWUsIEd1aWQpICE9IDA6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVy bkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9FUlJPUg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGRlZiBEZWNsYXJlTmFtZVZhclN0b3JlQmVnaW4oc2VsZiwgU3RvcmVOYW1l LCBWYXJTdG9yZUlkKToNCj4gPg0KPiA+ICsgICAgICAgIGlmIFN0b3JlTmFtZSBpcyBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFU QUxfRVJST1INCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIF8sIFJldHVybkNvZGUgPSBz ZWxmLkdldFZhclN0b3JlSWQoU3RvcmVOYW1lKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgUmV0dXJu Q29kZSA9PSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1JFREVGSU5FRA0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgVmFyU3RvcmVJZCA9PSBFRklfVkFSU1RPUkVfSURf SU5WQUxJRDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBWYXJTdG9yZUlkID0NCj4gPg0KPiBzZWxm LkdldEZyZWVWYXJTdG9yZUlkKEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JF X05BTUUpDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlm IHNlbGYuQ2hlY2tWYXJTdG9yZUlkRnJlZShWYXJTdG9yZUlkKSBpcyBGYWxzZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9WQVJTVE9S RUlEX1JFREVGSU5FRA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTWFya1ZhclN0b3JlSWRV c2VkKFZhclN0b3JlSWQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBwTm9kZSA9IFNW ZnJWYXJTdG9yYWdlTm9kZShTdG9yZU5hbWUsIFZhclN0b3JlSWQpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBpZiBwTm9kZSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuTmV3VmFyU3RvcmFnZU5vZGUgPSBwTm9kZQ0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBEZWNsYXJlTmFtZVZhclN0b3JlRW5kKHNlbGYs IEd1aWQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5OZXdWYXJTdG9yYWdlTm9kZS5HdWlkID0g R3VpZA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5OZXdWYXJTdG9yYWdlTm9kZS5OZXh0ID0gc2Vs Zi5OYW1lVmFyU3RvcmVMaXN0DQo+ID4NCj4gPiArICAgICAgICBzZWxmLk5hbWVWYXJTdG9yZUxp c3QgPSBzZWxmLk5ld1ZhclN0b3JhZ2VOb2RlDQo+ID4NCj4gPiArICAgICAgICBzZWxmLk5ld1Zh clN0b3JhZ2VOb2RlID0gTm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgTmFtZVRh YmxlQWRkSXRlbShzZWxmLCBJdGVtKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuTmV3VmFyU3Rv cmFnZU5vZGUuTmFtZVNwYWNlLmFwcGVuZChJdGVtKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJu IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiBHZXROYW1lVmFyU3RvcmVJbmZvKHNlbGYsIEJhc2VJbmZvLCBJbmRleCk6DQo+ID4N Cj4gPiArICAgICAgICBpZiBCYXNlSW5mbyBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1INCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGlmIHNlbGYuQ3VyclZhclN0b3JhZ2VOb2RlIGlzIE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9HRVRf TlZWQVJTVE9SRV9FUlJPUg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgQmFzZUluZm8u SW5mby5WYXJOYW1lID0gc2VsZi5DdXJyVmFyU3RvcmFnZU5vZGUuTmFtZVNwYWNlW0luZGV4XQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9TVUNDRVNTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRWYXJTdG9yZVR5 cGUoc2VsZiwgVmFyU3RvcmVJZCk6DQo+ID4NCj4gPiArICAgICAgICBWYXJTdG9yZVR5cGUgPQ0K PiBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9JTlZBTElEDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBpZiBWYXJTdG9yZUlkID09IEVGSV9WQVJTVE9SRV9JRF9J TlZBTElEOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWYXJTdG9yZVR5cGUNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlID0gc2VsZi5CdWZmZXJWYXJTdG9yZUxpc3QN Cj4gPg0KPiA+ICsgICAgICAgIHdoaWxlIHBOb2RlIGlzIG5vdCBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIHBOb2RlLlZhclN0b3JlSWQgPT0gVmFyU3RvcmVJZDoNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHBOb2RlLlZhcnN0b3JlVHlwZQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg cE5vZGUgPSBzZWxmLkVmaVZhclN0b3JlTGlzdA0KPiA+DQo+ID4gKyAgICAgICAgd2hpbGUgcE5v ZGUgaXMgbm90IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgcE5vZGUuVmFyU3RvcmVJ ZCA9PSBWYXJTdG9yZUlkOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gcE5vZGUu VmFyc3RvcmVUeXBlDQo+ID4NCj4gPiArICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBwTm9kZSA9IHNlbGYuTmFtZVZhclN0b3JlTGlz dA0KPiA+DQo+ID4gKyAgICAgICAgd2hpbGUgcE5vZGUgaXMgbm90IE5vbmU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgcE5vZGUuVmFyU3RvcmVJZCA9PSBWYXJTdG9yZUlkOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gcE5vZGUuVmFyc3RvcmVUeXBlDQo+ID4NCj4gPiArICAg ICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICByZXR1cm4gVmFyU3RvcmVUeXBlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRW YXJTdG9yZU5hbWUoc2VsZiwgVmFyU3RvcmVJZCk6DQo+ID4NCj4gPiArICAgICAgICBwTm9kZSA9 IHNlbGYuQnVmZmVyVmFyU3RvcmVMaXN0DQo+ID4NCj4gPiArICAgICAgICB3aGlsZSBwTm9kZSBp cyBub3QgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBwTm9kZS5WYXJTdG9yZUlkID09 IFZhclN0b3JlSWQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBwTm9kZS5WYXJT dG9yZU5hbWUsDQo+ID4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ ICsgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIHBOb2RlID0gc2VsZi5FZmlWYXJTdG9yZUxpc3QNCj4gPg0KPiA+ICsgICAgICAgIHdo aWxlIHBOb2RlIGlzIG5vdCBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHBOb2RlLlZh clN0b3JlSWQgPT0gVmFyU3RvcmVJZDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHBOb2RlLlZhclN0b3JlTmFtZSwNCj4gPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VT Uw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgcE5vZGUgPSBzZWxmLk5hbWVWYXJTdG9yZUxpc3QNCj4gPg0KPiA+ ICsgICAgICAgIHdoaWxlIHBOb2RlIGlzIG5vdCBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIHBOb2RlLlZhclN0b3JlSWQgPT0gVmFyU3RvcmVJZDoNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHBOb2RlLlZhclN0b3JlTmFtZSwNCj4gPiBWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fU1VDQ0VTUw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIE5vbmUsIFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9VTkRFRklORUQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEdldEJ1 ZmZlclZhclN0b3JlRGF0YVR5cGVOYW1lKHNlbGYsIFZhclN0b3JlSWQpOg0KPiA+DQo+ID4gKyAg ICAgICAgRGF0YVR5cGVOYW1lID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgVmFyU3RvcmVJ ZCA9PSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRDoNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gRGF0YVR5cGVOYW1lLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1INCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlID0gc2VsZi5CdWZmZXJWYXJTdG9yZUxp c3QNCj4gPg0KPiA+ICsgICAgICAgIHdoaWxlIHBOb2RlIGlzIG5vdCBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIHBOb2RlLlZhclN0b3JlSWQgPT0gVmFyU3RvcmVJZDoNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgRGF0YVR5cGVOYW1lID0gcE5vZGUuRGF0YVR5cGUuVHlwZU5hbWUN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIERhdGFUeXBlTmFtZSwgVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ICsgICAgICAgICAgICBwTm9kZSA9IHBO b2RlLk5leHQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBEYXRhVHlwZU5h bWUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTkRFRklORUQNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIEdldEVmaVZhclN0b3JlSW5mbyhzZWxmLCBCYXNlSW5mbzogRUZJX1ZBUlNU T1JFX0lORk8pOg0KPiA+DQo+ID4gKyAgICAgICAgaWYgQmFzZUluZm8gaXMgTm9uZToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZBVEFMX0VS Uk9SDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBzZWxmLkN1cnJWYXJTdG9yYWdl Tm9kZSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2Rl LlZGUl9SRVRVUk5fR0VUX0VGSVZBUlNUT1JFX0VSUk9SDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBCYXNlSW5mby5JbmZvLlZhck5hbWUgPSBzZWxmLkN1cnJWYXJTdG9yYWdlTm9kZS5F ZmlWYXIuRWZpVmFyTmFtZQ0KPiA+DQo+ID4gKyAgICAgICAgQmFzZUluZm8uVmFyVG90YWxTaXpl ID0gc2VsZi5DdXJyVmFyU3RvcmFnZU5vZGUuRWZpVmFyLkVmaVZhclNpemUNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGlmIEJhc2VJbmZvLlZhclRvdGFsU2l6ZSA9PSBFRklfSUZSX1RZ UEVfTlVNXzhfQklUX1NJWkU6DQo+ID4NCj4gPiArICAgICAgICAgICAgQmFzZUluZm8uVmFyVHlw ZSA9IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84DQo+ID4NCj4gPiArICAgICAgICBlbGlmIEJhc2VJ bmZvLlZhclRvdGFsU2l6ZSA9PSBFRklfSUZSX1RZUEVfTlVNXzE2X0JJVF9TSVpFOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIEJhc2VJbmZvLlZhclR5cGUgPSBFRklfSUZSX1RZUEVfTlVNX1NJWkVf MTYNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgQmFzZUluZm8uVmFyVG90YWxTaXplID09IEVGSV9J RlJfVFlQRV9OVU1fMzJfQklUX1NJWkU6DQo+ID4NCj4gPiArICAgICAgICAgICAgQmFzZUluZm8u VmFyVHlwZSA9IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMg0KPiA+DQo+ID4gKyAgICAgICAgZWxp ZiBCYXNlSW5mby5WYXJUb3RhbFNpemUgPT0gRUZJX0lGUl9UWVBFX05VTV82NF9CSVRfU0laRToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBCYXNlSW5mby5WYXJUeXBlID0gRUZJX0lGUl9UWVBFX05V TV9TSVpFXzY0DQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1INCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VT Uw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0VmFyU3RvcmVHdWlkKHNlbGYsIFZh clN0b3JlSWQpOg0KPiA+DQo+ID4gKyAgICAgICAgVmFyR3VpZCA9IE5vbmUNCj4gPg0KPiA+ICsg ICAgICAgIGlmIFZhclN0b3JlSWQgPT0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQ6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIFZhckd1aWQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIHBOb2RlID0gc2VsZi5CdWZmZXJWYXJTdG9yZUxpc3QNCj4gPg0KPiA+ICsgICAgICAgIHdo aWxlIHBOb2RlIGlzIG5vdCBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHBOb2RlLlZh clN0b3JlSWQgPT0gVmFyU3RvcmVJZDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgVmFyR3Vp ZCA9IHBOb2RlLkd1aWQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIFZhckd1aWQN Cj4gPg0KPiA+ICsgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIHBOb2RlID0gc2VsZi5FZmlWYXJTdG9yZUxpc3QNCj4gPg0KPiA+ICsg ICAgICAgIHdoaWxlIHBOb2RlIGlzIG5vdCBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlm IHBOb2RlLlZhclN0b3JlSWQgPT0gVmFyU3RvcmVJZDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgVmFyR3VpZCA9IHBOb2RlLkd1aWQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu IFZhckd1aWQNCj4gPg0KPiA+ICsgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlID0gc2VsZi5OYW1lVmFyU3RvcmVMaXN0DQo+ ID4NCj4gPiArICAgICAgICB3aGlsZSBwTm9kZSBpcyBub3QgTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBwTm9kZS5WYXJTdG9yZUlkID09IFZhclN0b3JlSWQ6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIFZhckd1aWQgPSBwTm9kZS5HdWlkDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiBWYXJHdWlkDQo+ID4NCj4gPiArICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5O ZXh0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gVmFyR3VpZA0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgQWRkQnVmZmVyVmFyU3RvcmVGaWVsZEluZm8oc2VsZiwg QmFzZUluZm86IEVGSV9WQVJTVE9SRV9JTkZPKToNCj4gPg0KPiA+ICsgICAgICAgIHBOZXcgPSBC dWZmZXJWYXJTdG9yZUZpZWxkSW5mb05vZGUoQmFzZUluZm8pDQo+ID4NCj4gPiArICAgICAgICBp ZiBwTmV3IGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNv ZGUuVkZSX1JFVFVSTl9GQVRBTF9FUlJPUg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg aWYgc2VsZi5CdWZmZXJGaWVsZEluZm9MaXN0SGVhZCBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuQnVmZmVyRmllbGRJbmZvTGlzdEhlYWQgPSBwTmV3DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5tQnVmZmVyRmllbGRJbmZvTGlzdFRhaWwgPSBwTmV3DQo+ID4NCj4gPiAr ICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubUJ1ZmZlckZpZWxkSW5m b0xpc3RUYWlsLk5leHQgPSBwTmV3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tQnVmZmVy RmllbGRJbmZvTGlzdFRhaWwgPSBwTmV3DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBy ZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBWZnJTdHJpbmdEQjoNCj4gPg0KPiA+ICsgICAgZGVmIF9f aW5pdF9fKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5TdHJpbmdGaWxlTmFtZSA9IE5v bmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNldFN0cmluZ0ZpbGVOYW1lKHNlbGYs IFN0cmluZ0ZpbGVOYW1lKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU3RyaW5nRmlsZU5hbWUg PSBTdHJpbmdGaWxlTmFtZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgR2V0QmVzdExh bmd1YWdlKHNlbGYsIFN1cHBvcnRlZExhbmd1YWdlcywgTGFuZ3VhZ2UpOg0KPiA+DQo+ID4gKyAg ICAgICAgaWYgU3VwcG9ydGVkTGFuZ3VhZ2VzIGlzIE5vbmUgb3IgTGFuZ3VhZ2UgaXMgTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gRmFsc2UNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIExhbmd1YWdlTGVuZ3RoID0gMA0KPiA+DQo+ID4gKyAgICAgICAgIyBEZXRlcm1p bmUgdGhlIGxlbmd0aCBvZiB0aGUgZmlyc3QgUkZDIDQ2NDYgbGFuZ3VhZ2UgY29kZSBpbg0KPiBM YW5ndWFnZQ0KPiA+DQo+ID4gKyAgICAgICAgd2hpbGUgTGFuZ3VhZ2VMZW5ndGggPCBsZW4oTGFu Z3VhZ2UpIGFuZA0KPiA+IExhbmd1YWdlW0xhbmd1YWdlTGVuZ3RoXSAhPSAwIGFuZCBMYW5ndWFn ZVtMYW5ndWFnZUxlbmd0aF0gIT0gIjsiOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIExhbmd1YWdl TGVuZ3RoICs9IDENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIFN1cHBvcnRlZCA9IFN1 cHBvcnRlZExhbmd1YWdlcw0KPiA+DQo+ID4gKyAgICAgICAgIyBUcmltIGJhY2sgdGhlIGxlbmd0 aCBvZiBMYW5ndWFnZSB1c2VkIHVudGlsIGl0IGlzIGVtcHR5DQo+ID4NCj4gPiArICAgICAgICB3 aGlsZSBMYW5ndWFnZUxlbmd0aCA+IDA6DQo+ID4NCj4gPiArICAgICAgICAgICAgIyBMb29wIHRo cm91Z2ggYWxsIGxhbmd1YWdlIGNvZGVzIGluIFN1cHBvcnRlZExhbmd1YWdlcw0KPiA+DQo+ID4g KyAgICAgICAgICAgIHdoaWxlIGxlbihTdXBwb3J0ZWQpID4gMDoNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgIyBTa2lwICc7JyBjaGFyYWN0ZXJzIGluIFN1cHBvcnRlZA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICB3aGlsZSBsZW4oU3VwcG9ydGVkKSA+IDAgYW5kIFN1cHBvcnRlZFswXSA9 PSAiOyI6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBTdXBwb3J0ZWQgPSBTdXBwb3J0 ZWRbMTpdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIENvbXBhcmVMZW5n dGggPSAwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBsZW5ndGgg b2YgdGhlIG5leHQgbGFuZ3VhZ2UgY29kZSBpbiBTdXBwb3J0ZWQNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgd2hpbGUgQ29tcGFyZUxlbmd0aCA8IGxlbihTdXBwb3J0ZWQpIGFuZA0KPiA+IFN1 cHBvcnRlZFtDb21wYXJlTGVuZ3RoXSAhPSAwIGFuZCBTdXBwb3J0ZWRbQ29tcGFyZUxlbmd0aF0g IT0gIjsiOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgQ29tcGFyZUxlbmd0aCArPSAx DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICMgSWYgTGFuZ3VhZ2UgaXMg bG9uZ2VyIHRoYW4gdGhlIFN1cHBvcnRlZCwgdGhlbiBza2lwIHRvIHRoZSBuZXh0DQo+ID4gbGFu Z3VhZ2UNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgTGFuZ3VhZ2VMZW5ndGggPiBDb21w YXJlTGVuZ3RoOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgY29udGludWUNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgIyBTZWUgaWYgdGhlIGZpcnN0IExhbmd1 YWdlTGVuZ3RoIGNoYXJhY3RlcnMgaW4gU3VwcG9ydGVkIG1hdGNoDQo+ID4gTGFuZ3VhZ2UNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgU3VwcG9ydGVkWzpMYW5ndWFnZUxlbmd0aF0gPT0g TGFuZ3VhZ2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBTdXBwb3J0ZWQgPSBTdXBwb3J0ZWRb Q29tcGFyZUxlbmd0aDpdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgIyBUcmlt IExhbmd1YWdlIGZyb20gdGhlIHJpZ2h0IHRvIHRoZSBuZXh0ICctJyBjaGFyYWN0ZXINCj4gPg0K PiA+ICsgICAgICAgICAgICBMYW5ndWFnZUxlbmd0aCAtPSAxDQo+ID4NCj4gPiArICAgICAgICAg ICAgd2hpbGUgTGFuZ3VhZ2VMZW5ndGggPiAwIGFuZCBMYW5ndWFnZVtMYW5ndWFnZUxlbmd0aF0g IT0gIi0iOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBMYW5ndWFnZUxlbmd0aCAtPSAxDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAjIE5vIG1hdGNoZXMgd2VyZSBmb3VuZA0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIEZhbHNlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiBHZXRVbmljb2RlU3RyaW5nVGV4dFNpemUoc2VsZiwgU3RyaW5nU3JjKToNCj4gPg0KPiA+ICsg ICAgICAgIFN0cmluZ1NpemUgPSBzaXplb2YoY191c2hvcnQpDQo+ID4NCj4gPiArICAgICAgICBT dHJpbmdTdHIgPSBjYXN0KFN0cmluZ1NyYywgUE9JTlRFUihjX3VzaG9ydCkpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICB3aGlsZSBTdHJpbmdTdHIuY29udGVudHMudmFsdWUgIT0gIlww IjoNCj4gPg0KPiA+ICsgICAgICAgICAgICBTdHJpbmdTaXplICs9IHNpemVvZihjX3VzaG9ydCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBTdHJpbmdTdHIgPSBjYXN0KGFkZHJlc3NvZihTdHJpbmdT dHIuY29udGVudHMpICsgc2l6ZW9mKGNfdXNob3J0KSwNCj4gPiBQT0lOVEVSKGNfdXNob3J0KSkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBTdHJpbmdTaXplDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGRlZiBGaW5kU3RyaW5nQmxvY2soc2VsZiwgc3RyaW5nX2RhdGEs IHN0cmluZ19pZCk6DQo+ID4NCj4gPiArICAgICAgICBjdXJyZW50X3N0cmluZ19pZCA9IDENCj4g Pg0KPiA+ICsgICAgICAgIGJsb2NrX2hkciA9IHN0cmluZ19kYXRhDQo+ID4NCj4gPiArICAgICAg ICBibG9ja19zaXplID0gMA0KPiA+DQo+ID4gKyAgICAgICAgb2Zmc2V0ID0gMA0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgd2hpbGUgYmxvY2tfaGRyWzBdICE9IEVGSV9ISUlfU0lCVF9F TkQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgYmxvY2tfdHlwZSA9IGJsb2NrX2hkclswXQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGJsb2NrX3R5cGUgPT0gRUZJX0hJSV9T SUJUX1NUUklOR19TQ1NVOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBvZmZzZXQgPSBzaXpl b2YoRUZJX0hJSV9TVFJJTkdfQkxPQ0spDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHN0cmlu Z190ZXh0X3B0ciA9IGJsb2NrX2hkciArIG9mZnNldA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBibG9ja19zaXplICs9IG9mZnNldCArIGxlbihzdHIoc3RyaW5nX3RleHRfcHRyKSkgKyAxDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIGN1cnJlbnRfc3RyaW5nX2lkICs9IDENCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIGJsb2NrX3R5cGUgPT0gRUZJX0hJSV9TSUJU X1NUUklOR19TQ1NVX0ZPTlQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIG9mZnNldCA9IHNp emVvZihFRklfSElJX1NJQlRfU1RSSU5HX1NDU1VfRk9OVF9CTE9DSykgLQ0KPiA+IHNpemVvZihj X3VpbnQ4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzdHJpbmdfdGV4dF9wdHIgPSBibG9j a19oZHIgKyBvZmZzZXQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgYmxvY2tfc2l6ZSArPSBv ZmZzZXQgKyBsZW4oc3RyKHN0cmluZ190ZXh0X3B0cikpICsgMQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBjdXJyZW50X3N0cmluZ19pZCArPSAxDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxpZiBibG9ja190eXBlID09IEVGSV9ISUlfU0lCVF9TVFJJTkdTX1NDU1U6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHN0cmluZ19jb3VudCA9IGludC5mcm9tX2J5dGVzKA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgYmxvY2tfaGRyW3NpemVvZihFRklfSElJX1NU UklOR19CTE9DSykgOg0KPiA+IHNpemVvZihFRklfSElJX1NUUklOR19CTE9DSykgKyBzaXplb2Yo Y191aW50MTYpXSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGJ5dGVvcmRlcj0ibGl0 dGxlIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzdHJpbmdfdGV4dF9wdHIgPSBibG9ja19oZHIgKw0KPiA+IHNpemVvZihFRklfSElJX1NJ QlRfU1RSSU5HU19TQ1NVX0JMT0NLKSAtIHNpemVvZihjX3VpbnQ4KQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBibG9ja19zaXplICs9IHN0cmluZ190ZXh0X3B0ciAtIGJsb2NrX2hkcg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBmb3IgXyBpbiByYW5nZShzdHJpbmdf Y291bnQpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgYmxvY2tfc2l6ZSArPSBsZW4o c3RyKHN0cmluZ190ZXh0X3B0cikpICsgMQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgaWYgY3VycmVudF9zdHJpbmdfaWQgPT0gc3RyaW5nX2lkOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrX3R5cGUgPSBibG9ja19oZHJbMF0NCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfdGV4dF9vZmZzZXQgPSBzdHJpbmdf dGV4dF9wdHIgLSBzdHJpbmdfZGF0YQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiBFRklfU1VDQ0VTUw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgc3RyaW5nX3RleHRfcHRyID0gc3RyaW5nX3RleHRfcHRyICsgbGVuKHN0cihzdHJpbmdf dGV4dF9wdHIpKSArIDENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfc3Ry aW5nX2lkICs9IDENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIGJsb2Nr X3R5cGUgPT0gRUZJX0hJSV9TSUJUX1NUUklOR1NfU0NTVV9GT05UOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzdHJpbmdfY291bnQgPSBpbnQuZnJvbV9ieXRlcygNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgIGJsb2NrX2hkcltzaXplb2YoRUZJX0hJSV9TVFJJTkdfQkxPQ0spICsg c2l6ZW9mKGNfdWludDgpIDoNCj4gPiBzaXplb2YoRUZJX0hJSV9TVFJJTkdfQkxPQ0spICsgc2l6 ZW9mKGNfdWludDgpICsgc2l6ZW9mKGNfdWludDE2KV0sDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICBieXRlb3JkZXI9ImxpdHRsZSIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc3RyaW5nX3RleHRfcHRyID0gYmxvY2tfaGRyICsN Cj4gPiBzaXplb2YoRUZJX0hJSV9TSUJUX1NUUklOR1NfU0NTVV9GT05UX0JMT0NLKSAtIHNpemVv ZihjX3VpbnQ4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBibG9ja19zaXplICs9IHN0cmlu Z190ZXh0X3B0ciAtIGJsb2NrX2hkcg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBmb3IgXyBpbiByYW5nZShzdHJpbmdfY291bnQpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgYmxvY2tfc2l6ZSArPSBsZW4oc3RyKHN0cmluZ190ZXh0X3B0cikpICsgMQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgY3VycmVudF9zdHJpbmdf aWQgPT0gc3RyaW5nX2lkOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nr X3R5cGUgPSBibG9ja19oZHJbMF0NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBz dHJpbmdfdGV4dF9vZmZzZXQgPSBzdHJpbmdfdGV4dF9wdHIgLSBzdHJpbmdfZGF0YQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFRklfU1VDQ0VTUw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc3RyaW5nX3RleHRfcHRyID0gc3RyaW5n X3RleHRfcHRyICsgbGVuKHN0cihzdHJpbmdfdGV4dF9wdHIpKSArIDENCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgIGN1cnJlbnRfc3RyaW5nX2lkICs9IDENCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbGlmIGJsb2NrX3R5cGUgPT0gRUZJX0hJSV9TSUJUX1NUUklOR19V Q1MyOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBvZmZzZXQgPSBzaXplb2YoRUZJX0hJSV9T VFJJTkdfQkxPQ0spDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHN0cmluZ190ZXh0X3B0ciA9 IGJsb2NrX2hkciArIG9mZnNldA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzdHJpbmdfc2l6 ZSA9IHNlbGYuR2V0VW5pY29kZVN0cmluZ1RleHRTaXplKHN0cmluZ190ZXh0X3B0cikNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgYmxvY2tfc2l6ZSArPSBvZmZzZXQgKyBzdHJpbmdfc2l6ZQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjdXJyZW50X3N0cmluZ19pZCArPSAxDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiBibG9ja190eXBlID09IEVGSV9ISUlfU0lC VF9TVFJJTkdfVUNTMl9GT05UOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBvZmZzZXQgPSBz aXplb2YoRUZJX0hJSV9TSUJUX1NUUklOR19VQ1MyX0ZPTlRfQkxPQ0spIC0NCj4gPiBzaXplb2Yo Y191c2hvcnQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHN0cmluZ190ZXh0X3B0ciA9IGJs b2NrX2hkciArIG9mZnNldA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzdHJpbmdfc2l6ZSA9 IHNlbGYuR2V0VW5pY29kZVN0cmluZ1RleHRTaXplKHN0cmluZ190ZXh0X3B0cikNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgYmxvY2tfc2l6ZSArPSBvZmZzZXQgKyBzdHJpbmdfc2l6ZQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBjdXJyZW50X3N0cmluZ19pZCArPSAxDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiBibG9ja190eXBlID09IEVGSV9ISUlfU0lCVF9T VFJJTkdTX1VDUzI6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIG9mZnNldCA9IGxlbihFRklf SElJX1NJQlRfU1RSSU5HU19VQ1MyX0JMT0NLKSAtIGxlbihjX3VzaG9ydCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc3RyaW5nX3RleHRfcHRyID0gYmxvY2tfaGRyICsgb2Zmc2V0DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIGJsb2NrX3NpemUgKz0gb2Zmc2V0DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHN0cmluZ19jb3VudCA9IGludC5mcm9tX2J5dGVzKA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgYmxvY2tfaGRyW3NpemVvZihFRklfSElJX1NUUklOR19CTE9DSykg Og0KPiA+IHNpemVvZihFRklfSElJX1NUUklOR19CTE9DSykgKyBzaXplb2YoY191aW50MTYpXSwN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGJ5dGVvcmRlcj0ibGl0dGxlIiwNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBmb3IgXyBpbiByYW5nZShzdHJpbmdfY291bnQpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgc3RyaW5nX3NpemUgPSBzZWxmLkdldFVuaWNvZGVTdHJpbmdUZXh0U2l6ZShzdHJp bmdfdGV4dF9wdHIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBibG9ja19zaXplICs9 IHN0cmluZ19zaXplDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBp ZiBjdXJyZW50X3N0cmluZ19pZCA9PSBzdHJpbmdfaWQ6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgYmxvY2tfdHlwZSA9IGJsb2NrX2hkclswXQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgIHN0cmluZ190ZXh0X29mZnNldCA9IHN0cmluZ190ZXh0X3B0ciAtIHN0 cmluZ19kYXRhDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVGSV9T VUNDRVNTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzdHJpbmdf dGV4dF9wdHIgPSBzdHJpbmdfdGV4dF9wdHIgKyBzdHJpbmdfc2l6ZQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgY3VycmVudF9zdHJpbmdfaWQgKz0gMQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGVsaWYgYmxvY2tfdHlwZSA9PSBFRklfSElJX1NJQlRfU1RSSU5HU19V Q1MyX0ZPTlQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIG9mZnNldCA9IGxlbihFRklfSElJ X1NJQlRfU1RSSU5HU19VQ1MyX0ZPTlRfQkxPQ0spIC0NCj4gPiBsZW4oY191c2hvcnQpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHN0cmluZ190ZXh0X3B0ciA9IGJsb2NrX2hkciArIG9mZnNl dA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBibG9ja19zaXplICs9IG9mZnNldA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzdHJpbmdfY291bnQgPSBpbnQuZnJvbV9ieXRlcygNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgIGJsb2NrX2hkcltzaXplb2YoRUZJX0hJSV9TVFJJTkdf QkxPQ0spICsgc2l6ZW9mKGNfdWludDgpIDoNCj4gPiBzaXplb2YoRUZJX0hJSV9TVFJJTkdfQkxP Q0spICsgc2l6ZW9mKGNfdWludDgpICsgc2l6ZW9mKGNfdWludDE2KV0sDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBieXRlb3JkZXI9ImxpdHRsZSIsDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZm9yIF8gaW4g cmFuZ2Uoc3RyaW5nX2NvdW50KToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHN0cmlu Z19zaXplID0gc2VsZi5HZXRVbmljb2RlU3RyaW5nVGV4dFNpemUoc3RyaW5nX3RleHRfcHRyKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgYmxvY2tfc2l6ZSArPSBzdHJpbmdfc2l6ZQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgY3VycmVudF9zdHJp bmdfaWQgPT0gc3RyaW5nX2lkOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJs b2NrX3R5cGUgPSBibG9ja19oZHJbMF0NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICBzdHJpbmdfdGV4dF9vZmZzZXQgPSBzdHJpbmdfdGV4dF9wdHIgLSBzdHJpbmdfZGF0YQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFRklfU1VDQ0VTUw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc3RyaW5nX3RleHRfcHRyID0gc3Ry aW5nX3RleHRfcHRyICsgc3RyaW5nX3NpemUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg IGN1cnJlbnRfc3RyaW5nX2lkICs9IDENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAg ICBlbGlmIGJsb2NrX3R5cGUgPT0gRUZJX0hJSV9TSUJUX0RVUExJQ0FURToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgaWYgY3VycmVudF9zdHJpbmdfaWQgPT0gc3RyaW5nX2lkOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgc3RyaW5nX2lkID0gaW50LmZyb21fYnl0ZXMoDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tfaGRyW3NpemVvZihFRklfSElJX1NU UklOR19CTE9DSykgOg0KPiA+IHNpemVvZihFRklfSElJX1NUUklOR19CTE9DSykgKyBzaXplb2Yo Y191aW50MTYpXSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBieXRlb3JkZXI9 ImxpdHRsZSIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBjdXJyZW50X3N0cmluZ19pZCA9IDENCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIGJsb2NrX3NpemUgPSAwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGVs c2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBibG9ja19zaXplICs9IHNpemVvZihF RklfSElJX1NJQlRfRFVQTElDQVRFX0JMT0NLKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgY3VycmVudF9zdHJpbmdfaWQgKz0gMQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsaWYgYmxvY2tfdHlwZSA9PSBFRklfSElJX1NJQlRfU0tJUDE6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNraXBfY291bnQgPQ0KPiA+IGludC5mcm9tX2J5dGVzKGJsb2NrX2hkcltz aXplb2YoRUZJX0hJSV9TVFJJTkdfQkxPQ0spXSwNCj4gYnl0ZW9yZGVyPSJsaXR0bGUiKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBjdXJyZW50X3N0cmluZ19pZCArPSBza2lwX2NvdW50DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIGJsb2NrX3NpemUgKz0gc2l6ZW9mKEVGSV9ISUlfU0lC VF9TS0lQMV9CTE9DSykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIGJs b2NrX3R5cGUgPT0gRUZJX0hJSV9TSUJUX1NLSVAyOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBza2lwX2NvdW50ID0gaW50LmZyb21fYnl0ZXMoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICBibG9ja19oZHJbc2l6ZW9mKEVGSV9ISUlfU1RSSU5HX0JMT0NLKSA6DQo+ID4gc2l6ZW9m KEVGSV9ISUlfU1RSSU5HX0JMT0NLKSArIHNpemVvZihjX3VpbnQxNildLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgYnl0ZW9yZGVyPSJsaXR0bGUiLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN1cnJlbnRfc3RyaW5nX2lkICs9 IHNraXBfY291bnQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgYmxvY2tfc2l6ZSArPSBzaXpl b2YoRUZJX0hJSV9TSUJUX1NLSVAyX0JMT0NLKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsaWYgYmxvY2tfdHlwZSA9PSBFRklfSElJX1NJQlRfRVhUMToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgbGVuZ3RoOCA9IGludC5mcm9tX2J5dGVzKA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgYmxvY2tfaGRyW3NpemVvZihFRklfSElJX1NUUklOR19CTE9DSykgKyBz aXplb2YoY191aW50OCkgOg0KPiA+IHNpemVvZihFRklfSElJX1NUUklOR19CTE9DSykgKyBzaXpl b2YoY191aW50OCkgKyBzaXplb2YoY191aW50OCldLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgYnl0ZW9yZGVyPSJsaXR0bGUiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICApDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIGJsb2NrX3NpemUgKz0gbGVuZ3RoOA0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgYmxvY2tfdHlwZSA9PSBFRklfSElJX1NJQlRf RVhUMjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbGVuZ3RoMzIgPSBpbnQuZnJvbV9ieXRl cygNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGJsb2NrX2hkcltzaXplb2YoRUZJX0hJ SV9TVFJJTkdfQkxPQ0spICsgc2l6ZW9mKGNfdWludDgpIDoNCj4gPiBzaXplb2YoRUZJX0hJSV9T VFJJTkdfQkxPQ0spICsgc2l6ZW9mKGNfdWludDgpICsgc2l6ZW9mKGNfdWludDMyKV0sDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICBieXRlb3JkZXI9ImxpdHRsZSIsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgYmxvY2tfc2l6ZSAr PSBsZW5ndGgzMg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHN0cmluZ19p ZCA+IDAgYW5kIHN0cmluZ19pZCAhPSAoY191aW50MTYpKC0xKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgYmxvY2tfdHlwZSA9IGJsb2NrX2hkclswXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBpZiBzdHJpbmdfaWQgPT0gY3VycmVudF9zdHJpbmdfaWQgLSAxOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgYmxvY2tfdHlwZSBpbiAoRUZJX0hJSV9T SUJUX1NLSVAyLCBFRklfSElJX1NJQlRfU0tJUDEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiBFRklfTk9UX0ZPVU5EDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICByZXR1cm4gRUZJX1NVQ0NFU1MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgaWYgc3RyaW5nX2lkIDwgY3VycmVudF9zdHJpbmdfaWQgLSAxOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgICAgICBibG9ja19oZHIgPSBzdHJpbmdfZGF0YSArIGJsb2NrX3NpemUNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBFRklfTk9UX0ZPVU5EDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRWYXJTdG9yZU5hbWVGb3JtU3RyaW5nSWQoc2VsZiwg U3RyaW5nSWQpOg0KPiA+DQo+ID4gKyAgICAgICAgcEluRmlsZSA9IE5vbmUNCj4gPg0KPiA+ICsg ICAgICAgIE5hbWVPZmZzZXQgPSAwDQo+ID4NCj4gPiArICAgICAgICBMZW5ndGggPSAwDQo+ID4N Cj4gPiArICAgICAgICBTdHJpbmdQdHIgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICBTdHJpbmdO YW1lID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgVW5pY29kZVN0cmluZyA9IE5vbmUNCj4gPg0K PiA+ICsgICAgICAgIFZhclN0b3JlTmFtZSA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgIERlc3RU bXAgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICBDdXJyZW50ID0gTm9uZQ0KPiA+DQo+ID4gKyAg ICAgICAgU3RhdHVzID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgQmxvY2tUeXBlID0gMA0KPiA+ DQo+ID4gKyAgICAgICAgUGtnSGVhZGVyID0gTm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgaWYgc2VsZi5TdHJpbmdGaWxlTmFtZSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBOb25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgd2l0aCBvcGVuKExvbmdGaWxlUGF0aChzZWxmLlN0cmluZ0ZpbGVO YW1lKSwgInJiIikgYXMgcEluRmlsZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgIyBHZXQg ZmlsZSBsZW5ndGgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcEluRmlsZS5zZWVrKDAsIG9z LlNFRUtfRU5EKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBMZW5ndGggPSBwSW5GaWxlLnRl bGwoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwSW5GaWxlLnNlZWsoMCwgb3MuU0VFS19T RVQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICMgR2V0IGZpbGUgZGF0 YQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBTdHJpbmdQdHIgPSBieXRlYXJyYXkocEluRmls ZS5yZWFkKCkpDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgRXhjZXB0aW9uOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBOb25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBQ a2dIZWFkZXIgPSBFRklfSElJX1NUUklOR19QQUNLQUdFX0hEUi5mcm9tX2J1ZmZlcihTdHJpbmdQ dHIpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAjIENoZWNrIHRoZSBTdHJpbmcgcGFj a2FnZQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgUGtnSGVhZGVyLkhlYWRlci5UeXBlICE9IEVGSV9I SUlfUEFDS0FHRV9TVFJJTkdTOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBOb25lDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAjIFNlYXJjaCB0aGUgbGFuZ3VhZ2UsIGdldCBi ZXN0IGxhbmd1YWdlIGJhc2VkIG9uIFJGQyA0NjQ3IG1hdGNoaW5nDQo+ID4gYWxnb3JpdGhtDQo+ ID4NCj4gPiArICAgICAgICBDdXJyZW50ID0gU3RyaW5nUHRyDQo+ID4NCj4gPiArICAgICAgICB3 aGlsZSBub3Qgc2VsZi5HZXRCZXN0TGFuZ3VhZ2UoImVuIiwgUGtnSGVhZGVyLkxhbmd1YWdlKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBDdXJyZW50ICs9IFBrZ0hlYWRlci5IZWFkZXIuTGVuZ3Ro DQo+ID4NCj4gPiArICAgICAgICAgICAgUGtnSGVhZGVyID0gRUZJX0hJSV9TVFJJTkdfUEFDS0FH RV9IRFIuZnJvbV9idWZmZXIoQ3VycmVudCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg ICAgICAjIElmIGNhbid0IGZpbmQgc3RyaW5nIHBhY2thZ2UgYmFzZWQgb24gbGFuZ3VhZ2UsIGp1 c3QgcmV0dXJuIHRoZSBmaXJzdA0KPiA+IHN0cmluZyBwYWNrYWdlDQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgQ3VycmVudCAtIFN0cmluZ1B0ciA+PSBMZW5ndGg6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIEN1cnJlbnQgPSBTdHJpbmdQdHINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg UGtnSGVhZGVyID0NCj4gRUZJX0hJSV9TVFJJTkdfUEFDS0FHRV9IRFIuZnJvbV9idWZmZXIoU3Ry aW5nUHRyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBicmVhaw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgQ3VycmVudCArPSBQa2dIZWFkZXIuSGRyU2l6ZQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgIyBGaW5kIHRoZSBzdHJpbmcgYmxvY2sgYWNjb3JkaW5nIHRvIHRo ZSBzdHJpbmdJZA0KPiA+DQo+ID4gKyAgICAgICAgU3RhdHVzLCBOYW1lT2Zmc2V0LCBCbG9ja1R5 cGUgPSBzZWxmLkZpbmRTdHJpbmdCbG9jayhDdXJyZW50LCBTdHJpbmdJZCkNCj4gPg0KPiA+ICsg ICAgICAgIGlmIFN0YXR1cyAhPSBSRVRVUk5fU1VDQ0VTUzoNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gTm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgIyBHZXQgdmFyc3Rv cmUgbmFtZSBhY2NvcmRpbmcgdG8gdGhlIHN0cmluZyB0eXBlDQo+ID4NCj4gPiArICAgICAgICBp ZiBCbG9ja1R5cGUgaW4gWw0KPiA+DQo+ID4gKyAgICAgICAgICAgIEVGSV9ISUlfU0lCVF9TVFJJ TkdfU0NTVSwNCj4gPg0KPiA+ICsgICAgICAgICAgICBFRklfSElJX1NJQlRfU1RSSU5HX1NDU1Vf Rk9OVCwNCj4gPg0KPiA+ICsgICAgICAgICAgICBFRklfSElJX1NJQlRfU1RSSU5HU19TQ1NVLA0K PiA+DQo+ID4gKyAgICAgICAgICAgIEVGSV9ISUlfU0lCVF9TVFJJTkdTX1NDU1VfRk9OVCwNCj4g Pg0KPiA+ICsgICAgICAgIF06DQo+ID4NCj4gPiArICAgICAgICAgICAgU3RyaW5nTmFtZSA9IEN1 cnJlbnQgKyBOYW1lT2Zmc2V0DQo+ID4NCj4gPiArICAgICAgICAgICAgVmFyU3RvcmVOYW1lID0g U3RyaW5nTmFtZS5kZWNvZGUoInV0Zi04IikNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgQmxvY2tU eXBlIGluIFsNCj4gPg0KPiA+ICsgICAgICAgICAgICBFRklfSElJX1NJQlRfU1RSSU5HX1VDUzIs DQo+ID4NCj4gPiArICAgICAgICAgICAgRUZJX0hJSV9TSUJUX1NUUklOR19VQ1MyX0ZPTlQsDQo+ ID4NCj4gPiArICAgICAgICAgICAgRUZJX0hJSV9TSUJUX1NUUklOR1NfVUNTMiwNCj4gPg0KPiA+ ICsgICAgICAgICAgICBFRklfSElJX1NJQlRfU1RSSU5HU19VQ1MyX0ZPTlQsDQo+ID4NCj4gPiAr ICAgICAgICBdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFVuaWNvZGVTdHJpbmcgPSBDdXJyZW50 ICsgTmFtZU9mZnNldA0KPiA+DQo+ID4gKyAgICAgICAgICAgIExlbmd0aCA9IHNlbGYuR2V0VW5p Y29kZVN0cmluZ1RleHRTaXplKFVuaWNvZGVTdHJpbmcpDQo+ID4NCj4gPiArICAgICAgICAgICAg RGVzdFRtcCA9IGJ5dGVhcnJheShMZW5ndGggLy8gMiArIDEpDQo+ID4NCj4gPiArICAgICAgICAg ICAgVmFyU3RvcmVOYW1lID0gRGVzdFRtcA0KPiA+DQo+ID4gKyAgICAgICAgICAgIGluZGV4ID0g MA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHdoaWxlIFVuaWNvZGVTdHJpbmdbaW5kZXhdICE9ICJc MCI6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIERlc3RUbXBbaW5kZXhdID0gb3JkKFVuaWNv ZGVTdHJpbmdbaW5kZXhdKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpbmRleCArPSAxDQo+ ID4NCj4gPiArICAgICAgICAgICAgRGVzdFRtcFtpbmRleF0gPSAiXDAiDQo+ID4NCj4gPiArICAg ICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBOb25lDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gVmFyU3RvcmVOYW1lDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArZ1ZmclN0cmluZ0RCID0gVmZyU3RyaW5nREIoKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gK0VGSV9SVUxFX0lEX1NUQVJUID0gMHgwMQ0KPiA+DQo+ID4gK0VGSV9SVUxF X0lEX0lOVkFMSUQgPSAweDAwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xh c3MgU1ZmclJ1bGVOb2RlOg0KPiA+DQo+ID4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgUnVsZU5h bWU9Tm9uZSwgUnVsZUlkPTApOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5SdWxlSWQgPSBSdWxl SWQNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUnVsZU5hbWUgPSBSdWxlTmFtZQ0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5OZXh0ID0gTm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gK2NsYXNzIFZmclJ1bGVzREI6DQo+ID4NCj4gPiArICAgIGRlZiBfX2luaXRfXyhzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUnVsZUxpc3QgPSBOb25lDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLkZyZWVSdWxlSWQgPSBFRklfVkFSU1RPUkVfSURfU1RBUlQNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgZGVmIFJlZ2lzdGVyUnVsZShzZWxmLCBSdWxlTmFtZSk6DQo+ID4NCj4gPiAr ICAgICAgICBpZiBSdWxlTmFtZSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVy bg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcE5ldyA9IFNWZnJSdWxlTm9kZShSdWxl TmFtZSwgc2VsZi5GcmVlUnVsZUlkKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgcE5ldyBpcyBOb25l Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5G cmVlUnVsZUlkICs9IDENCj4gPg0KPiA+ICsgICAgICAgIHBOZXcuTmV4dCA9IHNlbGYuUnVsZUxp c3QNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUnVsZUxpc3QgPSBwTmV3DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGRlZiBHZXRSdWxlSWQoc2VsZiwgUnVsZU5hbWUpOg0KPiA+DQo+ID4gKyAg ICAgICAgaWYgUnVsZU5hbWUgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g RUZJX1JVTEVfSURfSU5WQUxJRA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGUg PSBzZWxmLlJ1bGVMaXN0DQo+ID4NCj4gPiArICAgICAgICB3aGlsZSBwTm9kZSBpcyBub3QgTm9u ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBwTm9kZS5SdWxlTmFtZSA9PSBSdWxlTmFtZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHBOb2RlLlJ1bGVJZA0KPiA+DQo+ID4g KyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgcmV0dXJuIEVGSV9SVUxFX0lEX0lOVkFMSUQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICtFRklfUVVFU1RJT05fSURfTUFYID0gMHhGRkZGDQo+ID4NCj4gPiArRUZJX0ZS RUVfUVVFU1RJT05fSURfQklUTUFQX1NJWkUgPSBpbnQoKEVGSV9RVUVTVElPTl9JRF9NQVggKyAx KQ0KPiAvDQo+ID4gRUZJX0JJVFNfUEVSX1VJTlQzMikNCj4gPg0KPiA+ICtFRklfUVVFU1RJT05f SURfSU5WQUxJRCA9IDB4MA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNz IEVGSV9RVUVTSU9OX1RZUEUoRW51bSk6DQo+ID4NCj4gPiArICAgIFFVRVNUSU9OX05PUk1BTCA9 IDANCj4gPg0KPiA+ICsgICAgUVVFU1RJT05fREFURSA9IDENCj4gPg0KPiA+ICsgICAgUVVFU1RJ T05fVElNRSA9IDINCj4gPg0KPiA+ICsgICAgUVVFU1RJT05fUkVGID0gMw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzIFNWZnJRdWVzdGlvbk5vZGU6DQo+ID4NCj4gPiAr ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBOYW1lPU5vbmUsIFZhcklkU3RyPU5vbmUsIEJpdE1hc2s9 MCk6ICAjDQo+ID4NCj4gPiArICAgICAgICBzZWxmLk5hbWUgPSBOYW1lDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLlZhcklkU3RyID0gVmFySWRTdHINCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUXVl c3Rpb25JZCA9IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEDQo+ID4NCj4gPiArICAgICAgICBzZWxm LkJpdE1hc2sgPSBCaXRNYXNrDQo+ID4NCj4gPiArICAgICAgICBzZWxmLk5leHQgPSBOb25lDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9O T1JNQUwNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtEQVRFX1lFQVJfQklUTUFT SyA9IDB4MDAwMEZGRkYNCj4gPg0KPiA+ICtEQVRFX01PTlRIX0JJVE1BU0sgPSAweDAwRkYwMDAw DQo+ID4NCj4gPiArREFURV9EQVlfQklUTUFTSyA9IDB4RkYwMDAwMDANCj4gPg0KPiA+ICtUSU1F X0hPVVJfQklUTUFTSyA9IDB4MDAwMDAwRkYNCj4gPg0KPiA+ICtUSU1FX01JTlVURV9CSVRNQVNL ID0gMHgwMDAwRkYwMA0KPiA+DQo+ID4gK1RJTUVfU0VDT05EX0JJVE1BU0sgPSAweDAwRkYwMDAw DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2xhc3MgVmZyUXVlc3Rpb25EQjoN Cj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5GcmVlUUlkQml0TWFwID0gW10NCj4gPg0KPiA+ICsgICAgICAgIGZvciBpIGluIHJhbmdlKDAs IEVGSV9GUkVFX1FVRVNUSU9OX0lEX0JJVE1BUF9TSVpFKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLkZyZWVRSWRCaXRNYXAuYXBwZW5kKDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICAjIFF1ZXN0aW9uIElEIDAgaXMgcmVzZXJ2ZWQuDQo+ID4NCj4gPiArICAgICAgICBzZWxm LkZyZWVRSWRCaXRNYXBbMF0gPSAweDgwMDAwMDAwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLlF1ZXN0aW9uTGlzdCA9IE5vbmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIEZpbmRRdWVzdGlvbkJ5TmFtZShzZWxmLCBOYW1lKToNCj4gPg0KPiA+ICsgICAgICAgIGlm IE5hbWUgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX0ZBVEFMX0VSUk9SDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBw Tm9kZSA9IHNlbGYuUXVlc3Rpb25MaXN0DQo+ID4NCj4gPiArICAgICAgICB3aGlsZSBwTm9kZSBp cyBub3QgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBwTm9kZS5OYW1lID09IE5hbWU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fU1VDQ0VTUw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9VTkRFRklORUQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEZpbmRRdWVzdGlvbkJ5 SWQoc2VsZiwgUXVlc3Rpb25JZCk6DQo+ID4NCj4gPiArICAgICAgICBpZiBRdWVzdGlvbklkID09 IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVINCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIHBOb2RlID0gc2VsZi5RdWVzdGlvbkxpc3QNCj4gPg0KPiA+ICsgICAg ICAgIHdoaWxlIHBOb2RlIGlzIG5vdCBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHBO b2RlLlF1ZXN0aW9uSWQgPT0gUXVlc3Rpb25JZDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+ID4NCj4gPiArICAgICAg ICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBy ZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOREVGSU5FRA0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBkZWYgR2V0RnJlZVF1ZXN0aW9uSWQoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICBJbmRleCA9IDANCj4gPg0KPiA+ICsgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIEVGSV9GUkVF X1FVRVNUSU9OX0lEX0JJVE1BUF9TSVpFKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBzZWxm LkZyZWVRSWRCaXRNYXBbaV0gIT0gMHhGRkZGRkZGRjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgSW5kZXggPSBpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGJyZWFrDQo+ID4NCj4gPiAr ICAgICAgICBpZiBJbmRleCA9PSBFRklfRlJFRV9RVUVTVElPTl9JRF9CSVRNQVBfU0laRToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIE9mZnNldCA9IDANCj4gPg0KPiA+ICsgICAgICAgIE1h c2sgPSAweDgwMDAwMDAwDQo+ID4NCj4gPiArICAgICAgICB3aGlsZSBNYXNrICE9IDA6DQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgKHNlbGYuRnJlZVFJZEJpdE1hcFtJbmRleF0gJiBNYXNrKSA9 PSAwOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLkZyZWVRSWRCaXRNYXBbSW5kZXhd IHw9IE1hc2sNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIChJbmRleCA8PCBFRklf QklUU19TSElGVF9QRVJfVUlOVDMyKSArIE9mZnNldA0KPiA+DQo+ID4gKyAgICAgICAgICAgIE1h c2sgPj49IDENCj4gPg0KPiA+ICsgICAgICAgICAgICBPZmZzZXQgKz0gMQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIEVGSV9RVUVTVElPTl9JRF9JTlZBTElEDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGRlZiBDaGVja1F1ZXN0aW9uSWRGcmVlKHNlbGYsIFFJZCk6DQo+ ID4NCj4gPiArICAgICAgICBJbmRleCA9IGludChRSWQgLyBFRklfQklUU19QRVJfVUlOVDMyKQ0K PiA+DQo+ID4gKyAgICAgICAgT2Zmc2V0ID0gUUlkICUgRUZJX0JJVFNfUEVSX1VJTlQzMg0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIChzZWxmLkZyZWVRSWRCaXRNYXBbSW5kZXhdICYgKDB4ODAw MDAwMDAgPj4gT2Zmc2V0KSkgPT0gMA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgTWFy a1F1ZXN0aW9uSWRVc2VkKHNlbGYsIFFJZCk6DQo+ID4NCj4gPiArICAgICAgICBJbmRleCA9IGlu dChRSWQgLyBFRklfQklUU19QRVJfVUlOVDMyKQ0KPiA+DQo+ID4gKyAgICAgICAgT2Zmc2V0ID0g UUlkICUgRUZJX0JJVFNfUEVSX1VJTlQzMg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5GcmVlUUlk Qml0TWFwW0luZGV4XSB8PSAweDgwMDAwMDAwID4+IE9mZnNldA0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBkZWYgTWFya1F1ZXN0aW9uSWRVbnVzZWQoc2VsZiwgUUlkKToNCj4gPg0KPiA+ICsg ICAgICAgIEluZGV4ID0gaW50KFFJZCAvIEVGSV9CSVRTX1BFUl9VSU5UMzIpDQo+ID4NCj4gPiAr ICAgICAgICBPZmZzZXQgPSBRSWQgJSBFRklfQklUU19QRVJfVUlOVDMyDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLkZyZWVRSWRCaXRNYXBbSW5kZXhdICY9IH4oMHg4MDAwMDAwMCA+PiBPZmZzZXQp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBSZWdpc3RlclF1ZXN0aW9uKHNlbGYsIE5h bWUsIFZhcklkU3RyLCBRdWVzdGlvbklkLCBnRm9ybVBrZyk6DQo+ID4NCj4gPiArICAgICAgICBp ZiAoTmFtZSBpcyBub3QgTm9uZSkgYW5kIChzZWxmLkZpbmRRdWVzdGlvbkJ5TmFtZShOYW1lKSA9 PQ0KPiA+IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1JFREVG SU5FRA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGUgPSBTVmZyUXVlc3Rpb25O b2RlKE5hbWUsIFZhcklkU3RyKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgcE5vZGUgaXMgTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwNCj4gPiBWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGlmIFF1ZXN0aW9uSWQgPT0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQ6DQo+ID4NCj4g PiArICAgICAgICAgICAgUXVlc3Rpb25JZCA9IHNlbGYuR2V0RnJlZVF1ZXN0aW9uSWQoKQ0KPiA+ DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBzZWxmLkNoZWNr UXVlc3Rpb25JZEZyZWUoUXVlc3Rpb25JZCkgaXMgRmFsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiBRdWVzdGlvbklkLA0KPiA+IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9R VUVTVElPTklEX1JFREVGSU5FRA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTWFya1F1ZXN0 aW9uSWRVc2VkKFF1ZXN0aW9uSWQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBwTm9k ZS5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGUuTmV4dCA9 IHNlbGYuUXVlc3Rpb25MaXN0DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlF1ZXN0aW9uTGlzdCA9 IHBOb2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBnRm9ybVBrZy5Eb1BlbmRpbmdB c3NpZ24oVmFySWRTdHIsIFF1ZXN0aW9uSWQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICByZXR1cm4gUXVlc3Rpb25JZCwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFVwZGF0ZVF1ZXN0aW9uSWQoc2VsZiwgUUlkLCBO ZXdRSWQsIGdGb3JtUGtnKToNCj4gPg0KPiA+ICsgICAgICAgIGlmIFFJZCA9PSBOZXdRSWQ6DQo+ ID4NCj4gPiArICAgICAgICAgICAgIyBkb24ndCB1cGRhdGUNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGlmIHNlbGYuQ2hlY2tRdWVzdGlvbklkRnJlZShOZXdRSWQpIGlzIEZh bHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fUkVERUZJTkVEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBwTm9kZSA9IHNlbGYu UXVlc3Rpb25MaXN0DQo+ID4NCj4gPiArICAgICAgICBUZW1wTGlzdCA9IFtdDQo+ID4NCj4gPiAr ICAgICAgICB3aGlsZSBwTm9kZSBpcyBub3QgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBwTm9kZS5RdWVzdGlvbklkID09IFFJZDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgVGVt cExpc3QuYXBwZW5kKHBOb2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUu TmV4dA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgbGVuKFRlbXBMaXN0KSA9PSAw Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f VU5ERUZJTkVEDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLk1hcmtRdWVzdGlv bklkVW51c2VkKFFJZCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGZvciBwTm9kZSBp biBUZW1wTGlzdDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBwTm9kZS5RdWVzdGlvbklkID0gTmV3 UUlkDQo+ID4NCj4gPiArICAgICAgICAgICAgZ0Zvcm1Qa2cuRG9QZW5kaW5nQXNzaWduKHBOb2Rl LlZhcklkU3RyLCBOZXdRSWQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLk1h cmtRdWVzdGlvbklkVXNlZChOZXdRSWQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBy ZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIEdldFF1ZXN0aW9uSWQoc2VsZiwgTmFtZSwgVmFySWRTdHI9Tm9uZSwgUVR5 cGU9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICBRdWVzdGlvbklkID0gRUZJX1FVRVNUSU9OX0lE X0lOVkFMSUQNCj4gPg0KPiA+ICsgICAgICAgIEJpdE1hc2sgPSAweDAwMDAwMDAwDQo+ID4NCj4g PiArICAgICAgICBpZiBRVHlwZSBpcyBub3QgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBR VHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9STUFMDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBpZiBOYW1lIGlzIE5vbmUgYW5kIFZhcklkU3RyIGlzIE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsIEJpdE1hc2ssIFFUeXBlDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBwTm9kZSA9IHNlbGYuUXVlc3Rpb25MaXN0DQo+ID4N Cj4gPiArICAgICAgICB3aGlsZSBwTm9kZSBpcyBub3QgTm9uZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBpZiBOYW1lIGlzIG5vdCBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBw Tm9kZS5OYW1lICE9IE5hbWU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBwTm9kZSA9 IHBOb2RlLk5leHQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgVmFySWRTdHIgaXMgbm90IE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIHBOb2RlLlZhcklkU3RyICE9IFZhcklkU3RyOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICBjb250aW51ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgICAgIFF1ZXN0aW9uSWQgPSBwTm9kZS5RdWVzdGlvbklkDQo+ID4NCj4gPiArICAgICAg ICAgICAgQml0TWFzayA9IHBOb2RlLkJpdE1hc2sNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBR VHlwZSBpcyBub3QgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgUVR5cGUgPSBwTm9k ZS5RVHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGJyZWFrDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwgQml0TWFzaywgUVR5cGUNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgZGVmIFJlZ2lzdGVyTmV3RGF0ZVF1ZXN0aW9uKHNlbGYsIE5hbWUsIEJh c2VWYXJJZCwgUXVlc3Rpb25JZCwNCj4gPiBnRm9ybVBrZyk6DQo+ID4NCj4gPiArICAgICAgICBp ZiBCYXNlVmFySWQgPT0gIiIgYW5kIE5hbWUgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBpZiBRdWVzdGlvbklkID09IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBRdWVzdGlvbklkID0gc2VsZi5HZXRGcmVlUXVlc3Rpb25JZCgpDQo+ID4N Cj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgc2Vs Zi5DaGVja1F1ZXN0aW9uSWRGcmVlKFF1ZXN0aW9uSWQpIGlzIEZhbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9SRURFRklORUQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5NYXJrUXVlc3Rp b25JZFVzZWQoUXVlc3Rpb25JZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gUXVlc3Rp b25JZCwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIFZhcklkU3RyTGlzdCA9IFtdDQo+ID4NCj4gPiArICAgICAgICBpZiBCYXNl VmFySWQgIT0gIiI6DQo+ID4NCj4gPiArICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVuZChC YXNlVmFySWQgKyAiLlllYXIiKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFZhcklkU3RyTGlzdC5h cHBlbmQoQmFzZVZhcklkICsgIi5Nb250aCIpDQo+ID4NCj4gPiArICAgICAgICAgICAgVmFySWRT dHJMaXN0LmFwcGVuZChCYXNlVmFySWQgKyAiLkRheSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFZhcklkU3RyTGlzdC5hcHBlbmQo TmFtZSArICIuWWVhciIpDQo+ID4NCj4gPiArICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVu ZChOYW1lICsgIi5Nb250aCIpDQo+ID4NCj4gPiArICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFw cGVuZChOYW1lICsgIi5EYXkiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGVM aXN0ID0gW10NCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9kZShOYW1l LCBWYXJJZFN0ckxpc3RbMF0sDQo+ID4gREFURV9ZRUFSX0JJVE1BU0spDQo+ID4NCj4gPiArICAg ICAgICBpZiBwTm9kZSBpcyBub3QgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBwTm9kZUxp c3QuYXBwZW5kKHBOb2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwNCj4gPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f T1VUX0ZPUl9SRVNPVVJDRVMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlID0g U1ZmclF1ZXN0aW9uTm9kZShOYW1lLCBWYXJJZFN0ckxpc3RbMV0sDQo+ID4gREFURV9NT05USF9C SVRNQVNLKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgcE5vZGUgaXMgbm90IE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgcE5vZGVMaXN0LmFwcGVuZChwTm9kZSkNCj4gPg0KPiA+ICsgICAgICAg IGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsDQo+ID4gVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX09VVF9GT1JfUkVTT1VSQ0VTDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlvbk5vZGUoTmFtZSwgVmFySWRTdHJMaXN0 WzJdLA0KPiBEQVRFX0RBWV9CSVRNQVNLKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgcE5vZGUgaXMg bm90IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgcE5vZGVMaXN0LmFwcGVuZChwTm9kZSkN Cj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFF1 ZXN0aW9uSWQsDQo+ID4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX09VVF9GT1JfUkVTT1VSQ0VT DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBRdWVzdGlvbklkID09IEVGSV9RVUVT VElPTl9JRF9JTlZBTElEOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFF1ZXN0aW9uSWQgPSBzZWxm LkdldEZyZWVRdWVzdGlvbklkKCkNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgc2VsZi5DaGVja1F1ZXN0aW9uSWRGcmVlKFF1ZXN0aW9uSWQpIGlzIEZh bHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwgVmZyUmV0 dXJuQ29kZS5WRlJfUkVUVVJOX1JFREVGSU5FRA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu TWFya1F1ZXN0aW9uSWRVc2VkKFF1ZXN0aW9uSWQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBwTm9kZUxpc3RbMF0uUXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCj4gPg0KPiA+ICsgICAg ICAgIHBOb2RlTGlzdFsxXS5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0KPiA+DQo+ID4gKyAgICAg ICAgcE5vZGVMaXN0WzJdLlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQo+ID4NCj4gPiArICAgICAg ICBwTm9kZUxpc3RbMF0uUVR5cGUgPSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX0RBVEUNCj4g Pg0KPiA+ICsgICAgICAgIHBOb2RlTGlzdFsxXS5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVF U1RJT05fREFURQ0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGVMaXN0WzJdLlFUeXBlID0gRUZJX1FV RVNJT05fVFlQRS5RVUVTVElPTl9EQVRFDQo+ID4NCj4gPiArICAgICAgICBwTm9kZUxpc3RbMF0u TmV4dCA9IHBOb2RlTGlzdFsxXQ0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGVMaXN0WzFdLk5leHQg PSBwTm9kZUxpc3RbMl0NCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlTGlzdFsyXS5OZXh0ID0gc2Vs Zi5RdWVzdGlvbkxpc3QNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUXVlc3Rpb25MaXN0ID0gcE5v ZGVMaXN0WzBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBnRm9ybVBrZy5Eb1BlbmRp bmdBc3NpZ24oVmFySWRTdHJMaXN0WzBdLCBRdWVzdGlvbklkKQ0KPiA+DQo+ID4gKyAgICAgICAg Z0Zvcm1Qa2cuRG9QZW5kaW5nQXNzaWduKFZhcklkU3RyTGlzdFsxXSwgUXVlc3Rpb25JZCkNCj4g Pg0KPiA+ICsgICAgICAgIGdGb3JtUGtnLkRvUGVuZGluZ0Fzc2lnbihWYXJJZFN0ckxpc3RbMl0s IFF1ZXN0aW9uSWQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gUXVlc3Rp b25JZCwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIFJlZ2lzdGVyTmV3VGltZVF1ZXN0aW9uKHNlbGYsIE5hbWUsIEJhc2VWYXJJ ZCwgUXVlc3Rpb25JZCwNCj4gPiBnRm9ybVBrZyk6DQo+ID4NCj4gPiArICAgICAgICBpZiBCYXNl VmFySWQgPT0gIiIgYW5kIE5hbWUgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBR dWVzdGlvbklkID09IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBRdWVzdGlvbklkID0gc2VsZi5HZXRGcmVlUXVlc3Rpb25JZCgpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgc2VsZi5DaGVj a1F1ZXN0aW9uSWRGcmVlKFF1ZXN0aW9uSWQpIGlzIEZhbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9S RURFRklORUQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5NYXJrUXVlc3Rpb25JZFVz ZWQoUXVlc3Rpb25JZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwg VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIFZhcklkU3RyTGlzdCA9IFtdDQo+ID4NCj4gPiArICAgICAgICBpZiBCYXNlVmFySWQg IT0gIiI6DQo+ID4NCj4gPiArICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVuZChCYXNlVmFy SWQgKyAiLkhvdXIiKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFZhcklkU3RyTGlzdC5hcHBlbmQo QmFzZVZhcklkICsgIi5NaW51dGUiKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFZhcklkU3RyTGlz dC5hcHBlbmQoQmFzZVZhcklkICsgIi5TZWNvbmQiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBWYXJJZFN0ckxpc3QuYXBwZW5kKE5h bWUgKyAiLkhvdXIiKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFZhcklkU3RyTGlzdC5hcHBlbmQo TmFtZSArICIuTWludXRlIikNCj4gPg0KPiA+ICsgICAgICAgICAgICBWYXJJZFN0ckxpc3QuYXBw ZW5kKE5hbWUgKyAiLlNlY29uZCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBwTm9k ZUxpc3QgPSBbXQ0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGUgPSBTVmZyUXVlc3Rpb25Ob2RlKE5h bWUsIFZhcklkU3RyTGlzdFswXSwNCj4gPiBUSU1FX0hPVVJfQklUTUFTSykNCj4gPg0KPiA+ICsg ICAgICAgIGlmIHBOb2RlIGlzIG5vdCBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBOb2Rl TGlzdC5hcHBlbmQocE5vZGUpDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBRdWVzdGlvbklkLA0KPiA+IFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9PVVRfRk9SX1JFU09VUkNFUw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGUg PSBTVmZyUXVlc3Rpb25Ob2RlKE5hbWUsIFZhcklkU3RyTGlzdFsxXSwNCj4gPiBUSU1FX01JTlVU RV9CSVRNQVNLKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgcE5vZGUgaXMgbm90IE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcE5vZGVMaXN0LmFwcGVuZChwTm9kZSkNCj4gPg0KPiA+ICsgICAg ICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsDQo+ID4g VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX09VVF9GT1JfUkVTT1VSQ0VTDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlvbk5vZGUoTmFtZSwgVmFySWRTdHJM aXN0WzJdLA0KPiA+IFRJTUVfU0VDT05EX0JJVE1BU0spDQo+ID4NCj4gPiArICAgICAgICBpZiBw Tm9kZSBpcyBub3QgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBwTm9kZUxpc3QuYXBwZW5k KHBOb2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gUXVlc3Rpb25JZCwNCj4gPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9S RVNPVVJDRVMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIFF1ZXN0aW9uSWQgPT0g RUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgUXVlc3Rpb25J ZCA9IHNlbGYuR2V0RnJlZVF1ZXN0aW9uSWQoKQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBzZWxmLkNoZWNrUXVlc3Rpb25JZEZyZWUoUXVlc3Rpb25J ZCkgaXMgRmFsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBRdWVzdGlvbklk LCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fUkVERUZJTkVEDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5NYXJrUXVlc3Rpb25JZFVzZWQoUXVlc3Rpb25JZCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIHBOb2RlTGlzdFswXS5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0KPiA+DQo+ ID4gKyAgICAgICAgcE5vZGVMaXN0WzFdLlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQo+ID4NCj4g PiArICAgICAgICBwTm9kZUxpc3RbMl0uUXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCj4gPg0KPiA+ ICsgICAgICAgIHBOb2RlTGlzdFswXS5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05f VElNRQ0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGVMaXN0WzFdLlFUeXBlID0gRUZJX1FVRVNJT05f VFlQRS5RVUVTVElPTl9USU1FDQo+ID4NCj4gPiArICAgICAgICBwTm9kZUxpc3RbMl0uUVR5cGUg PSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX1RJTUUNCj4gPg0KPiA+ICsgICAgICAgIHBOb2Rl TGlzdFswXS5OZXh0ID0gcE5vZGVMaXN0WzFdDQo+ID4NCj4gPiArICAgICAgICBwTm9kZUxpc3Rb MV0uTmV4dCA9IHBOb2RlTGlzdFsyXQ0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGVMaXN0WzJdLk5l eHQgPSBzZWxmLlF1ZXN0aW9uTGlzdA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5RdWVzdGlvbkxp c3QgPSBwTm9kZUxpc3RbMF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGdGb3JtUGtn LkRvUGVuZGluZ0Fzc2lnbihWYXJJZFN0ckxpc3RbMF0sIFF1ZXN0aW9uSWQpDQo+ID4NCj4gPiAr ICAgICAgICBnRm9ybVBrZy5Eb1BlbmRpbmdBc3NpZ24oVmFySWRTdHJMaXN0WzFdLCBRdWVzdGlv bklkKQ0KPiA+DQo+ID4gKyAgICAgICAgZ0Zvcm1Qa2cuRG9QZW5kaW5nQXNzaWduKFZhcklkU3Ry TGlzdFsyXSwgUXVlc3Rpb25JZCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVy biBRdWVzdGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgUmVnaXN0ZXJSZWZRdWVzdGlvbihzZWxmLCBOYW1lLCBCYXNl VmFySWQsIFF1ZXN0aW9uSWQsIGdGb3JtUGtnKToNCj4gPg0KPiA+ICsgICAgICAgIGlmIEJhc2VW YXJJZCA9PSAiIiBhbmQgTmFtZSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVy biBRdWVzdGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1INCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIFZhcklkU3RyTGlzdCA9IFtdDQo+ID4NCj4gPiArICAg ICAgICBpZiBCYXNlVmFySWQgIT0gIiI6DQo+ID4NCj4gPiArICAgICAgICAgICAgVmFySWRTdHJM aXN0LmFwcGVuZChCYXNlVmFySWQgKyAiLlF1ZXN0aW9uSWQiKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIFZhcklkU3RyTGlzdC5hcHBlbmQoQmFzZVZhcklkICsgIi5Gb3JtSWQiKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIFZhcklkU3RyTGlzdC5hcHBlbmQoQmFzZVZhcklkICsgIi5Gb3JtU2V0R3Vp ZCIpDQo+ID4NCj4gPiArICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVuZChCYXNlVmFySWQg KyAiLkRldmljZVBhdGgiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBWYXJJZFN0ckxpc3QuYXBwZW5kKEJhc2VWYXJJZCArICIuUXVl c3Rpb25JZCIpDQo+ID4NCj4gPiArICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVuZChCYXNl VmFySWQgKyAiLkZvcm1JZCIpDQo+ID4NCj4gPiArICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFw cGVuZChCYXNlVmFySWQgKyAiLkZvcm1TZXRHdWlkIikNCj4gPg0KPiA+ICsgICAgICAgICAgICBW YXJJZFN0ckxpc3QuYXBwZW5kKEJhc2VWYXJJZCArICIuRGV2aWNlUGF0aCIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBwTm9kZUxpc3QgPSBbXQ0KPiA+DQo+ID4gKyAgICAgICAgcE5v ZGUgPSBTVmZyUXVlc3Rpb25Ob2RlKE5hbWUsIFZhcklkU3RyTGlzdFswXSkNCj4gPg0KPiA+ICsg ICAgICAgIGlmIHBOb2RlIGlzIG5vdCBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBOb2Rl TGlzdC5hcHBlbmQocE5vZGUpDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBRdWVzdGlvbklkLA0KPiA+IFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9PVVRfRk9SX1JFU09VUkNFUw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGUg PSBTVmZyUXVlc3Rpb25Ob2RlKE5hbWUsIFZhcklkU3RyTGlzdFsxXSkNCj4gPg0KPiA+ICsgICAg ICAgIGlmIHBOb2RlIGlzIG5vdCBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBOb2RlTGlz dC5hcHBlbmQocE5vZGUpDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBRdWVzdGlvbklkLA0KPiA+IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9P VVRfRk9SX1JFU09VUkNFUw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGUgPSBT VmZyUXVlc3Rpb25Ob2RlKE5hbWUsIFZhcklkU3RyTGlzdFsyXSkNCj4gPg0KPiA+ICsgICAgICAg IGlmIHBOb2RlIGlzIG5vdCBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBOb2RlTGlzdC5h cHBlbmQocE5vZGUpDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBRdWVzdGlvbklkLA0KPiA+IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRf Rk9SX1JFU09VUkNFUw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGUgPSBTVmZy UXVlc3Rpb25Ob2RlKE5hbWUsIFZhcklkU3RyTGlzdFszXSkNCj4gPg0KPiA+ICsgICAgICAgIGlm IHBOb2RlIGlzIG5vdCBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBOb2RlTGlzdC5hcHBl bmQocE5vZGUpDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBRdWVzdGlvbklkLA0KPiA+IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9S X1JFU09VUkNFUw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgUXVlc3Rpb25JZCA9 PSBFRklfUVVFU1RJT05fSURfSU5WQUxJRDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBRdWVzdGlv bklkID0gc2VsZi5HZXRGcmVlUXVlc3Rpb25JZCgpDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHNlbGYuQ2hlY2tRdWVzdGlvbklkRnJlZShRdWVzdGlv bklkKSBpcyBGYWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIFF1ZXN0aW9u SWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9SRURFRklORUQNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLk1hcmtRdWVzdGlvbklkVXNlZChRdWVzdGlvbklkKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgcE5vZGVMaXN0WzBdLlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQo+ID4N Cj4gPiArICAgICAgICBwTm9kZUxpc3RbMV0uUXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCj4gPg0K PiA+ICsgICAgICAgIHBOb2RlTGlzdFsyXS5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0KPiA+DQo+ ID4gKyAgICAgICAgcE5vZGVMaXN0WzNdLlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBwTm9kZUxpc3RbMF0uUVR5cGUgPSBFRklfUVVFU0lPTl9U WVBFLlFVRVNUSU9OX1JFRg0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGVMaXN0WzFdLlFUeXBlID0g RUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9SRUYNCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlTGlz dFsyXS5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fUkVGDQo+ID4NCj4gPiArICAg ICAgICBwTm9kZUxpc3RbM10uUVR5cGUgPSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX1JFRg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGVMaXN0WzBdLk5leHQgPSBwTm9kZUxp c3RbMV0NCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlTGlzdFsxXS5OZXh0ID0gcE5vZGVMaXN0WzJd DQo+ID4NCj4gPiArICAgICAgICBwTm9kZUxpc3RbMl0uTmV4dCA9IHBOb2RlTGlzdFszXQ0KPiA+ DQo+ID4gKyAgICAgICAgcE5vZGVMaXN0WzNdLk5leHQgPSBzZWxmLlF1ZXN0aW9uTGlzdA0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5RdWVzdGlvbkxpc3QgPSBwTm9kZUxpc3RbMF0NCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGdGb3JtUGtnLkRvUGVuZGluZ0Fzc2lnbihWYXJJZFN0ckxp c3RbMF0sIFF1ZXN0aW9uSWQpDQo+ID4NCj4gPiArICAgICAgICBnRm9ybVBrZy5Eb1BlbmRpbmdB c3NpZ24oVmFySWRTdHJMaXN0WzFdLCBRdWVzdGlvbklkKQ0KPiA+DQo+ID4gKyAgICAgICAgZ0Zv cm1Qa2cuRG9QZW5kaW5nQXNzaWduKFZhcklkU3RyTGlzdFsyXSwgUXVlc3Rpb25JZCkNCj4gPg0K PiA+ICsgICAgICAgIGdGb3JtUGtnLkRvUGVuZGluZ0Fzc2lnbihWYXJJZFN0ckxpc3RbM10sIFF1 ZXN0aW9uSWQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gUXVlc3Rpb25J ZCwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgZGVmIFJlZ2lzdGVyT2xkRGF0ZVF1ZXN0aW9uKHNlbGYsIFllYXJWYXJJZCwgTW9udGhW YXJJZCwgRGF5VmFySWQsDQo+ID4gUXVlc3Rpb25JZCwgZ0Zvcm1Qa2cpOg0KPiA+DQo+ID4gKyAg ICAgICAgcE5vZGVMaXN0ID0gW10NCj4gPg0KPiA+ICsgICAgICAgIGlmIFllYXJWYXJJZCA9PSAi IiBvciBNb250aFZhcklkID09ICIiIG9yIERheVZhcklkID09ICIiIG9yIFwNCj4gPg0KPiA+ICsg ICAgICAgICAgICBZZWFyVmFySWQgaXMgTm9uZSBvciBNb250aFZhcklkIGlzIE5vbmUgb3IgRGF5 VmFySWQgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwg VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0VSUk9SX1NLSVBFRA0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgcE5vZGUgPSBTVmZyUXVlc3Rpb25Ob2RlKE5vbmUsIFllYXJWYXJJZCwgREFU RV9ZRUFSX0JJVE1BU0spDQo+ID4NCj4gPiArICAgICAgICBpZiBwTm9kZSBpcyBub3QgTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBwTm9kZUxpc3QuYXBwZW5kKHBOb2RlKQ0KPiA+DQo+ID4g KyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gRUZJX1FVRVNUSU9O X0lEX0lOVkFMSUQsDQo+ID4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX09VVF9GT1JfUkVTT1VS Q0VTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlvbk5v ZGUoTm9uZSwgTW9udGhWYXJJZCwNCj4gPiBEQVRFX01PTlRIX0JJVE1BU0spDQo+ID4NCj4gPiAr ICAgICAgICBpZiBwTm9kZSBpcyBub3QgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBwTm9k ZUxpc3QuYXBwZW5kKHBOb2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQsDQo+ID4gVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX09VVF9GT1JfUkVTT1VSQ0VTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlvbk5vZGUoTm9uZSwgRGF5VmFySWQsIERBVEVfREFZ X0JJVE1BU0spDQo+ID4NCj4gPiArICAgICAgICBpZiBwTm9kZSBpcyBub3QgTm9uZToNCj4gPg0K PiA+ICsgICAgICAgICAgICBwTm9kZUxpc3QuYXBwZW5kKHBOb2RlKQ0KPiA+DQo+ID4gKyAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gRUZJX1FVRVNUSU9OX0lEX0lO VkFMSUQsDQo+ID4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX09VVF9GT1JfUkVTT1VSQ0VTDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBRdWVzdGlvbklkID09IEVGSV9RVUVTVElP Tl9JRF9JTlZBTElEOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFF1ZXN0aW9uSWQgPSBzZWxmLkdl dEZyZWVRdWVzdGlvbklkKCkNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgc2VsZi5DaGVja1F1ZXN0aW9uSWRGcmVlKFF1ZXN0aW9uSWQpIGlzIEZhbHNl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gRUZJX1FVRVNUSU9OX0lEX0lOVkFM SUQsDQo+ID4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1JFREVGSU5FRA0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuTWFya1F1ZXN0aW9uSWRVc2VkKFF1ZXN0aW9uSWQpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBwTm9kZUxpc3RbMF0uUXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQN Cj4gPg0KPiA+ICsgICAgICAgIHBOb2RlTGlzdFsxXS5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0K PiA+DQo+ID4gKyAgICAgICAgcE5vZGVMaXN0WzJdLlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQo+ ID4NCj4gPiArICAgICAgICBwTm9kZUxpc3RbMF0uUVR5cGUgPSBFRklfUVVFU0lPTl9UWVBFLlFV RVNUSU9OX0RBVEUNCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlTGlzdFsxXS5RVHlwZSA9IEVGSV9R VUVTSU9OX1RZUEUuUVVFU1RJT05fREFURQ0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGVMaXN0WzJd LlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9EQVRFDQo+ID4NCj4gPiArICAgICAg ICBwTm9kZUxpc3RbMF0uTmV4dCA9IHBOb2RlTGlzdFsxXQ0KPiA+DQo+ID4gKyAgICAgICAgcE5v ZGVMaXN0WzFdLk5leHQgPSBwTm9kZUxpc3RbMl0NCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlTGlz dFsyXS5OZXh0ID0gc2VsZi5RdWVzdGlvbkxpc3QNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuUXVl c3Rpb25MaXN0ID0gcE5vZGVMaXN0WzBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBn Rm9ybVBrZy5Eb1BlbmRpbmdBc3NpZ24oWWVhclZhcklkLCBRdWVzdGlvbklkKQ0KPiA+DQo+ID4g KyAgICAgICAgZ0Zvcm1Qa2cuRG9QZW5kaW5nQXNzaWduKE1vbnRoVmFySWQsIFF1ZXN0aW9uSWQp DQo+ID4NCj4gPiArICAgICAgICBnRm9ybVBrZy5Eb1BlbmRpbmdBc3NpZ24oRGF5VmFySWQsIFF1 ZXN0aW9uSWQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gUXVlc3Rpb25J ZCwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgZGVmIFJlZ2lzdGVyT2xkVGltZVF1ZXN0aW9uKHNlbGYsIEhvdXJWYXJJZCwgTWludXRl VmFySWQsDQo+IFNlY29uZFZhcklkLA0KPiA+IFF1ZXN0aW9uSWQsIGdGb3JtUGtnKToNCj4gPg0K PiA+ICsgICAgICAgIHBOb2RlTGlzdCA9IFtdDQo+ID4NCj4gPiArICAgICAgICBpZiBIb3VyVmFy SWQgPT0gIiIgb3IgTWludXRlVmFySWQgPT0gIiIgb3IgU2Vjb25kVmFySWQgPT0gIiIgXA0KPiA+ DQo+ID4gKyAgICAgICAgICAgIG9yIEhvdXJWYXJJZCBpcyBOb25lIG9yIE1pbnV0ZVZhcklkIGlz IE5vbmUgb3IgU2Vjb25kVmFySWQgaXMNCj4gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gUXVlc3Rpb25JZCwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0VSUk9SX1NLSVBFRA0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGUgPSBTVmZyUXVlc3Rpb25Ob2RlKE5v bmUsIEhvdXJWYXJJZCwgVElNRV9IT1VSX0JJVE1BU0spDQo+ID4NCj4gPiArICAgICAgICBpZiBw Tm9kZSBpcyBub3QgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBwTm9kZUxpc3QuYXBwZW5k KHBOb2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQsDQo+ID4gVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX09VVF9GT1JfUkVTT1VSQ0VTDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBwTm9k ZSA9IFNWZnJRdWVzdGlvbk5vZGUoTm9uZSwgTWludXRlVmFySWQsDQo+ID4gVElNRV9NSU5VVEVf QklUTUFTSykNCj4gPg0KPiA+ICsgICAgICAgIGlmIHBOb2RlIGlzIG5vdCBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHBOb2RlTGlzdC5hcHBlbmQocE5vZGUpDQo+ID4NCj4gPiArICAgICAg ICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBFRklfUVVFU1RJT05fSURfSU5W QUxJRCwNCj4gPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9kZShOb25l LCBTZWNvbmRWYXJJZCwNCj4gPiBUSU1FX1NFQ09ORF9CSVRNQVNLKQ0KPiA+DQo+ID4gKyAgICAg ICAgaWYgcE5vZGUgaXMgbm90IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgcE5vZGVMaXN0 LmFwcGVuZChwTm9kZSkNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIEVGSV9RVUVTVElPTl9JRF9JTlZBTElELA0KPiA+IFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNFUw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgaWYgUXVlc3Rpb25JZCA9PSBFRklfUVVFU1RJT05fSURfSU5WQUxJRDoNCj4gPg0KPiA+ICsg ICAgICAgICAgICBRdWVzdGlvbklkID0gc2VsZi5HZXRGcmVlUXVlc3Rpb25JZCgpDQo+ID4NCj4g PiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHNlbGYuQ2hlY2tRdWVz dGlvbklkRnJlZShRdWVzdGlvbklkKSBpcyBGYWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIEVGSV9RVUVTVElPTl9JRF9JTlZBTElELA0KPiA+IFZmclJldHVybkNvZGUuVkZS X1JFVFVSTl9SRURFRklORUQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk1hcmtRdWVzdGlv bklkVXNlZChRdWVzdGlvbklkKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGVM aXN0WzBdLlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQo+ID4NCj4gPiArICAgICAgICBwTm9kZUxp c3RbMV0uUXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlTGlz dFsyXS5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGVMaXN0 WzBdLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9USU1FDQo+ID4NCj4gPiArICAg ICAgICBwTm9kZUxpc3RbMV0uUVR5cGUgPSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX1RJTUUN Cj4gPg0KPiA+ICsgICAgICAgIHBOb2RlTGlzdFsyXS5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUu UVVFU1RJT05fVElNRQ0KPiA+DQo+ID4gKyAgICAgICAgcE5vZGVMaXN0WzBdLk5leHQgPSBwTm9k ZUxpc3RbMV0NCj4gPg0KPiA+ICsgICAgICAgIHBOb2RlTGlzdFsxXS5OZXh0ID0gcE5vZGVMaXN0 WzJdDQo+ID4NCj4gPiArICAgICAgICBwTm9kZUxpc3RbMl0uTmV4dCA9IHNlbGYuUXVlc3Rpb25M aXN0DQo+ID4NCj4gPiArICAgICAgICBzZWxmLlF1ZXN0aW9uTGlzdCA9IHBOb2RlTGlzdFswXQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZ0Zvcm1Qa2cuRG9QZW5kaW5nQXNzaWduKEhv dXJWYXJJZCwgUXVlc3Rpb25JZCkNCj4gPg0KPiA+ICsgICAgICAgIGdGb3JtUGtnLkRvUGVuZGlu Z0Fzc2lnbihNaW51dGVWYXJJZCwgUXVlc3Rpb25JZCkNCj4gPg0KPiA+ICsgICAgICAgIGdGb3Jt UGtnLkRvUGVuZGluZ0Fzc2lnbihTZWNvbmRWYXJJZCwgUXVlc3Rpb25JZCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBRdWVzdGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fU1VDQ0VTUw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgUHJpbnRBbGxRdWVz dGlvbihzZWxmLCBGaWxlTmFtZSk6DQo+ID4NCj4gPiArICAgICAgICB3aXRoIG9wZW4oRmlsZU5h bWUsICJ3IikgYXMgZjoNCj4gPg0KPiA+ICsgICAgICAgICAgICBwTm9kZSA9IHNlbGYuUXVlc3Rp b25MaXN0DQo+ID4NCj4gPiArICAgICAgICAgICAgd2hpbGUgcE5vZGUgaXMgbm90IE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIGYud3JpdGUoIlF1ZXN0aW9uIFZhcklkIGlzIHt9IGFu ZCBRdWVzdGlvbklkIGlzDQo+ID4gIi5mb3JtYXQocE5vZGUuVmFySWRTdHIpKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBmLndyaXRlKCIlZFxuIiAlIChwTm9kZS5RdWVzdGlvbklkKSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBmLmNsb3NlKCkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9CYXNlVG9v bHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9SZWFkbWUubWQNCj4gPiBiL0Jhc2VUb29scy9T b3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1JlYWRtZS5tZA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uN2JkYzg1MDIzYQ0KPiA+IC0tLSAvZGV2L251bGwN Cj4gPiArKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9SZWFkbWUubWQN Cj4gPiBAQCAtMCwwICsxLDY4IEBADQo+ID4gKyMgUHl0aG9uIFZmckNvbXBpbGVyIFRvb2wNCj4g Pg0KPiA+ICsjIyBPdmVydmlldw0KPiA+DQo+ID4gK1RoaXMgcHl0aG9uIFZmckNvbXBpbGVyIHRv b2wgaXMgdGhlIHB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZWRrMg0KPiA+IFZmckNvbXBp bGVyIHRvb2wgd2hpY2ggQyBpbXBsZW1lbnRhdGlvbiBsb2NhdGVzIGF0DQo+ID4NCj4gaHR0cHM6 Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyL3RyZWUvbWFzdGVyL0Jhc2VUb29scy9Tb3VyY2Uv Qy9WZnJDb20NCj4gPiBwaWxlLg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK1RoaXMgcHl0aG9uIGlt cGxlbWVudGF0aW9uIG5vdCBvbmx5IGNvdmVycyB0aGUgc2FtZSB1c2FnZSBhcyB0aGUgQw0KPiB2 ZXJzaW9uDQo+ID4gVmZyQ29tcGlsZXIsIGJ1dCBhbHNvIGV4dGVuZHMgc2V2ZXJhbCBuZXcgZmVh dHVyZXMuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArIyMjIEludHJvZHVjdGlvbg0KPiA+DQo+ID4g K1RoZSBjb3JlIGZ1bmN0aW9uIG9mIHRoZSBvcmlnaW5hbCBDIFZmckNvbXBpbGVyIHRvb2wgaXMg dG8gY29udmVydCBWRlIgZmlsZXMNCj4gPiBpbnRvIElGUiBiaW5hcmllcy4gSG93ZXZlciwgdGhl IFZGUiBmb3JtYXQgc3ludGF4IGlzIHVuY29tbW9uIGFuZCBoYXMNCj4gcG9vcg0KPiA+IHJlYWRh YmlsaXR5IGZvciB1c2Vycy4gQWRkaXRpb25hbGx5LCB0aGUgQyB0b29sIGRvZXNuJ3QgZ2F0aGVy IG9yIHN0b3JlIGRlZmF1bHQNCj4gPiB2YXJpYWJsZSBpbmZvcm1hdGlvbiwgZXhjZXB0IGZvciBi aW5hcnkgZ2VuZXJhdGlvbi4gV2hlbiBtb2RpZmljYXRpb25zIGFyZQ0KPiA+IHJlcXVpcmVkLCBk ZXZlbG9wZXJzIGhhdmUgdG8gZGVhbCB3aXRoIHRoZSBhYnN0cmFjdCBJRlIgYmluYXJ5LCByZXN1 bHRpbmcgaW4NCj4gPiBpbmVmZmljaWVuY3kuIFRvIGFkZHJlc3MgdGhlc2UgY2hhbGxlbmdlcywg dGhpcyBweXRob24gdG9vbCBnZW5lcmF0ZXMgWUFNTA0KPiA+IGZvcm1hdCBmaWxlcyBmcm9tIFZG UiBmaWxlcy4gVGhpcyBhcHByb2FjaCBhbGxvd3MgZm9yIHByZXNlcnZhdGlvbiBvZiB0aGUgVkZS DQo+ID4gZmlsZSdzIG9wY29kZSBsYXlvdXQgYW5kIGhpZXJhcmNoeSwgc2ltcGxpZnlpbmcgcmVh ZGFiaWxpdHkuIE1vcmVvdmVyLCB0aGUNCj4gdG9vbA0KPiA+IGdlbmVyYXRlcyBhbiBhZGRpdGlv bmFsIEpTT04gZmlsZSB0byBwcm92aWRlIGEgbW9yZSBhY2Nlc3NpYmxlIHByZXNlbnRhdGlvbg0K PiBvZg0KPiA+IHZhcmlhYmxlLXJlbGF0ZWQgaW5mb3JtYXRpb24uIEluIGEgZmV3IHdvcmRzLCB0 aGUgbmV3IHRvb2wgb2ZmZXJzIHRoZSBzYW1lDQo+ID4gdXNhZ2UgYXMgdGhlIG9yaWdpbmFsIEMg VmZyQ29tcGlsZXIgd2hpbGUgZXhwYW5kaW5nIGZ1bmN0aW9uYWxpdHkgd2l0aCB0aGUNCj4gPiBZ QU1ML0pTT04gb3V0cHV0LCBlbmhhbmNpbmcgcmVhZGFiaWxpdHkgYW5kIGFkYXB0YWJpbGl0eS4N Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsjIyMgTWFpbiB1cGRhdGUgaW4gdGhpcyBjb21taXRtZW50 DQo+ID4NCj4gPiArLSBVcGRhdGUgdGhlIHZmciBwYXJzZXIgZ2VuZXJhdG9yIGZyb20gQU5UTFIg dG8gQU5UTFIgdjQsIHdoaWNoIGlzIG1vcmUNCj4gPiByZWFkYWJsZSBhbmQgaXMgZWFpc2VyIHRv IGFkZCBvbiBuZXcgZ3JhbW1hcnMgYW5kIGZ1bmN0aW9ucy4NCj4gPg0KPiA+ICstIENvdmVyIHRo ZSBzYW1lIHVzYWdlIGFzIHRoZSBlZGsyIEMgVmZyQ29tcGlsZXIuIFRoZSB0b29sIGlzIGFibGUg dG8NCj4gPiBjb21waWxlcyBWRlIgaW50byAuYy9sc3QvaHBrIG91dHB1dCBmaWxlcy4NCj4gPg0K PiA+ICstIEV4dHJhY3QgdmFyaWFibGUgaW5mb3JtYXRpb24gZnJvbSBlYWNoIFZGUiBmaWxlIHRv IEpTT04uIFRoZSBvdXRwdXQgSlNPTg0KPiA+IGZpbGUgc3RvcmVzIHRoZSBkYXRhIHN0cnVjdHVy ZXMgYW5kIGRlZmF1bHQgdmFsdWVzIG9mIHZhcmlhYmxlcy4NCj4gPg0KPiA+ICstIENvbnZlcnQg ZWFjaCBWRlIgc291cmNlIGZvcm1hdCB0byBhbiBlcXVpdmFsZW50IFlBTUwuIFRoZSBnZW5lcmF0 ZWQNCj4gPiBZQU1MIGZpbGUgY292ZXJzIHRoZSBzYW1lIGZvcm1hdCBjb250ZW50cyBpbiB0aGUg VmZyIGZpbGUuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArIyMjIEtub3duIGlzc3Vlcw0KPiA+DQo+ ID4gKy0gSXNzdWUgMSAtIFRlc3QgQ292ZXJhZ2UgYW5kIE1ldGhvZA0KPiA+DQo+ID4gKyAgLSBU aGUgY3VycmVudCBweXRob24gdmZyY29tcGlsZXIgdG9vbCBkb2VzIG5vdCBoYXZlIGEgZnVsbCBj b2RlIGNvdmVyYWdlDQo+ID4gdGVzdC4NCj4gPg0KPiA+ICsgICAgLSBTaG91bGQgYWRkIHVuaXQg dGVzdHMgZm9yIGhpZ2hlciBjb2RlIGNvdmVyYWdlLg0KPiA+DQo+ID4gKyAgLSBUaGUgdGVzdCBz aG91bGQgYmUgZW5hYmxlZCBpbnRvIEF6dXJlIHBpcGVsaW5lcyBmb3IgcmV0cmlnZ2VyaW5nLg0K PiA+DQo+ID4gKyAgLSBUaGUgY3VycmVudCB0ZXN0IHNjcmlwdCB1c2VzIHNvbWUgb3V0cHV0IGJp bmFyaWVzIGZvciB0ZXN0IGlucHV0LCB3aWxsDQo+ID4gcmVtb3ZlIHRoZXNlIGJpbmFyaWVzLCBh bmQgc2F2ZSB0aGUgbmVjZXNzYXJ5IHBhcnQgY29udGVudCBvZiBpdCBkaXJlY3RseQ0KPiBpbnRv DQo+ID4gdGhlIHRlc3Qgc2NyaXB0IGl0c2VsZi4NCj4gPg0KPiA+ICstIElzc3VlIDIgLSBDb2Rl IHN0eWxlDQo+ID4NCj4gPiArICAtIFRoZSBjdXJyZW50IHB5dGhvbiB2ZnJjb21waWxlciB0b29s IGhhcyBzb21lIGNvZGluZyBzdHlsZSBzdGlsbCBsaWtlIEMNCj4gc3R5bGUNCj4gPiB3aGljaCBu b3QgZm9sbG93cyB0aGUgcHl0aG9uIHN0YW5kYXJkaXplIHJ1bGUuDQo+ID4NCj4gPiArICAgIC0g U2hvdWxkIGVuaGFuY2UgR1VJRCB1c2FnZSB3aXRoICd1dWlkJyBwaXAgbW9kdWxlOw0KPiA+DQo+ ID4gKyAgICAtIFNob3VsZCBmaWd1cmUgb3V0IGNvbW1vbiB3YXkgZm9yIFN0YXR1cyBDb2RlIHBy b2Nlc3Npbmc7DQo+ID4NCj4gPiArICAtIFRoZSBjdXJyZW50IHB5dGhvbiB2ZnJjb21waWxlciB0 b29sIG5lZWQgZG9jc3RyaW5nIGRlc2NyaXB0aW9uIGZvciBjb2RlDQo+ID4gZXhwbGFuYXRpb24u DQo+ID4NCj4gPiArLSBJc3N1ZSAzIC0gTmV3IGdlbmVyYXRlZCBZQU1MIGZvcm1hdA0KPiA+DQo+ ID4gKyAgLSBUaGUgY3VycmVudCBZQU1MIGZvcm1hdCBpcyBhIHJlZmVyZW5jZSB2ZXJzaW9uLCBh bmQgd2Ugd2FybWx5DQo+IHdlbGNvbWUNCj4gPiBldmVyeW9uZSB0byBwcm92aWRlIGZlZWRiYWNr Lg0KPiA+DQo+ID4gKy0gRnV0dXJlIGV4dGVuc2lvbg0KPiA+DQo+ID4gKyAgLSBUaGUgdG9vbCB3 aWxsIGV4dGVuZCBuZXcgZnVuY3Rpb25zLCB3aGljaCBpcyBhYmxlIHRvIGNvbXBpbGUgeWFtbCBm aWxlcy4NCj4gPiBUaGlzIGZlYXR1cmUgd2lsbCBiZSBhZGRlZCBpbiBmdXR1cmUgdXBkYXRlLg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyMjIyBVc2Ugd2l0aCBCdWlsZCBTeXN0ZW0NCj4gPg0KPiA+ ICtUbyB1c2UgdGhlIFZmckNvbXBpbGVyIFB5dGhvbiBUb29sIHdpdGggQnVpbGQgU3lzdGVtLCAg cGxlYXNlIGRvIHRoZQ0KPiA+IGZvbGxvd2luZyBzdGVwcyBpbiB0aGUgYnVpbGQgY29tbWFuZC4N Cj4gPg0KPiA+ICsxLiBMb2NhdGUgdGhlICoqVmZyQ29tcGlsZXIqKiBmb2xkZXIgdG8gcGF0aA0K PiA+ICoqJ1xlZGsyXEJhc2VUb29sc1xTb3VyY2VcUHl0aG9uJy4qKg0KPiA+DQo+ID4gKzEuIE9w ZW4gICoqJ2J1aWxkX3J1bGUudGVtcGxhdGUnKiogIGZpbGUgIGluIHBhdGgNCj4gPiAqKidcZWRr MlxCYXNlVG9vbHNcQ29uZlwnLioqDQo+ID4NCj4gPiArICAtIEZpbmQgdGhlIEMgVkZSIGNvbW1h bmQgbGluZSBgJChWRlIpIiAkKFZGUl9GTEFHUykgLS1zdHJpbmctZGINCj4gPiAkKE9VVFBVVF9E SVIpKCspJChNT0RVTEVfTkFNRSlTdHJEZWZzLmhwayAtLW91dHB1dC1kaXJlY3RvcnkNCj4gPiAk e2RfcGF0aH0gJChPVVRQVVRfRElSKSgrKSR7c19iYXNlfS5pYCBpbiAqKmJ1aWxkX3J1bGUudGVt cGxhdGUqKiBmaWxlLg0KPiA+IFRoZXJlIGFyZSB0d28gQyBWRlIgY29tbWFuZHMgaW4gaXQuDQo+ ID4NCj4gPiArICAtIEFkZCBuZXcgY29tbWFuZCBsaW5lIGAiJChQWVZGUikiICR7c3JjfSAtLXN0 cmluZy1kYg0KPiA+ICQoT1VUUFVUX0RJUikoKykkKE1PRFVMRV9OQU1FKVN0ckRlZnMuaHBrIC13 ICQoV09SS1NQQUNFKSAtbQ0KPiA+ICQoTU9EVUxFX05BTUUpIC1vICQoT1VUUFVUX0RJUikgLS12 ZnJgIGFmdGVyIGVhY2ggVkZSIGNvbW1hbmQgbGluZXMuDQo+ID4NCj4gPiArMi4gT3BlbiAgKion dG9vbHNfZGVmLnRlbXBsYXRlJyoqICBmaWxlICBpbiBwYXRoDQo+ICoqJ1xlZGsyXEJhc2VUb29s c1xDb25mXCcuKioNCj4gPg0KPiA+ICsgIC0gRmluZCB0aGUgQyBWRlJfUEFUSCBjb21tYW5kIGxp bmUgYCpfKl8qX1ZGUl9QQVRIICAgICAgICAgICAgICAgICAgICAgID0NCj4gPiBWZnJDb21waWxl YCBpbiAqKnRvb2xzX2RlZi50ZW1wbGF0ZSoqIGZpbGUuDQo+ID4NCj4gPiArICAtIEFkZCBuZXcg Y29tbWFuZCBsaW5lIGAqXypfKl9QWVZGUl9QQVRIICAgICAgICAgICAgICAgICAgICA9IFB5VmZy Q29tcGlsZWANCj4gPiBhZnRlciB0aGUgVkZSX1BBVEggY29tbWFuZCBsaW5lLg0KPiA+DQo+ID4g KzMuIEZvciB3aW5kb3dzIGJ1aWxkLCBjcmVhdGUgYSAqKlB5VmZyQ29tcGlsZS5iYXQqKiBmaWxl IGluIHBhdGgNCj4gPiAqKidDOlxlZGsyXEJhc2VUb29sc1xCaW5XcmFwcGVyc1xXaW5kb3dzTGlr ZScuKioNCj4gPg0KPiA+ICsgIC0gQWRkIHRoZSBmb2xsb3dpbmcgbGluZXMgaW4gdGhlIGNyZWF0 ZWQgKipQeVZmckNvbXBpbGUuYmF0KiogZmlsZS4NCj4gPg0KPiA+ICsgICAgYGBgDQo+ID4NCj4g PiArICAgIEBzZXRsb2NhbA0KPiA+DQo+ID4gKyAgICBAc2V0IFRvb2xOYW1lPUlmckNvbXBpbGVy DQo+ID4NCj4gPiArICAgIEBzZXQNCj4gPg0KPiBQWVRIT05QQVRIPSVQWVRIT05QQVRIJTslQkFT RV9UT09MU19QQVRIJVxTb3VyY2VcUHl0aG9uOyVCQVMNCj4gPiBFX1RPT0xTX1BBVEglXFNvdXJj ZVxQeXRob25cVmZyQ29tcGlsZXINCj4gPg0KPiA+ICsgICAgQCVQWVRIT05fQ09NTUFORCUgLW0g JVRvb2xOYW1lJSAlKg0KPiA+DQo+ID4gKyAgICBgYGANCj4gPg0KPiA+ICs0LiBGb3IgVW5peCBi dWlsZCwgY3JlYXRlIGEgKipQeVZmckNvbXBpbGUqKiBmaWxlIGluIHBhdGgNCj4gPiAqKidDOlxl ZGsyXEJhc2VUb29sc1xCaW5XcmFwcGVyc1xQb3NpeExpa2UnLioqDQo+ID4NCj4gPiArICAtIEFk ZCB0aGUgZm9sbG93aW5nIGxpbmVzIGluIHRoZSBjcmVhdGVkICoqUHlWZnJDb21waWxlKiogZmls ZS4NCj4gPg0KPiA+ICsgICAgYGBgDQo+ID4NCj4gPiArICAgICMhL3Vzci9iaW4vZW52IGJhc2gN Cj4gPg0KPiA+ICsgICAgI3B5dGhvbiBgZGlybmFtZSAkMGAvUnVuVG9vbEZyb21Tb3VyY2UucHkg YGJhc2VuYW1lICQwYCAkKg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIElmIGEgJHtQWVRI T05fQ09NTUFORH0gY29tbWFuZCBpcyBhdmFpbGFibGUsIHVzZSBpdCBpbiBwcmVmZXJlbmNlDQo+ ID4gdG8gcHl0aG9uDQo+ID4NCj4gPiArICAgIGlmIGNvbW1hbmQgLXYgJHtQWVRIT05fQ09NTUFO RH0gPi9kZXYvbnVsbCAyPiYxOyB0aGVuDQo+ID4NCj4gPiArICAgICAgICBweXRob25fZXhlPSR7 UFlUSE9OX0NPTU1BTkR9DQo+ID4NCj4gPiArICAgIGZpDQo+ID4NCj4gPiArICAgIGZ1bGxfY21k PSR7QkFTSF9TT1VSQ0U6LSQwfSAjIHNlZQ0KPiA+IGh0dHA6Ly9teXdpa2kud29vbGVkZ2Uub3Jn L0Jhc2hGQVEvMDI4IGZvciBhIGRpc2N1c3Npb24gb2Ygd2h5ICQwIGlzIG5vdA0KPiBhDQo+ID4g Z29vZCBjaG9pY2UgaGVyZQ0KPiA+DQo+ID4gKyAgICBkaXI9JChkaXJuYW1lICIkZnVsbF9jbWQi KQ0KPiA+DQo+ID4gKyAgICBjbWQ9JHtmdWxsX2NtZCMjKi99DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGV4cG9ydA0KPiA+DQo+IFBZVEhPTlBBVEg9IiRkaXIvLi4vLi4vU291cmNlL1B5dGhv bjokZGlyLy4uLy4uL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXINCj4gPiA6JGRpci8uLi8uLi9T b3VyY2UvUHl0aG9uJHtQWVRIT05QQVRIOis6IiRQWVRIT05QQVRIIn0iDQo+ID4NCj4gPiArICAg IGV4ZWMgIiR7cHl0aG9uX2V4ZTotcHl0aG9ufSIgLW0gSWZyQ29tcGlsZXIgIiRAIg0KPiA+DQo+ ID4gKyAgICBgYGANCj4gPg0KPiA+ICs1LiBBZGQgRW52OiBydW4gYHBpcCBpbnN0YWxsIGFudGxy NC1weXRob24zLXJ1bnRpbWU9PTQuNy4xYCBiYXNlZCBvbiB0aGUNCj4gPiBvcmlnaW5hbCBidWls ZCBlbnZpcm9ubWVudC4NCj4gPg0KPiA+ICs2LiBSdW4gQnVpbGQgQ29tbWFuZDogYGJ1aWxkIC1w IE92bWZQa2dcT3ZtZlBrZ0lhMzJYNjQuZHNjIC1hIElBMzIgLWENCj4gPiBYNjQgLWogYnVpbGQu bG9nYA0KPiA+DQo+ID4gK2ANCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNl L1B5dGhvbi9WZnJDb21waWxlci9WZnJTeW50YXguZzQNCj4gPiBiL0Jhc2VUb29scy9Tb3VyY2Uv UHl0aG9uL1ZmckNvbXBpbGVyL1ZmclN5bnRheC5nNA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uMjg5NTM3N2I3NA0KPiA+IC0tLSAvZGV2L251bGwNCj4g PiArKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9WZnJTeW50YXguZzQN Cj4gPiBAQCAtMCwwICsxLDE5MjEgQEANCj4gPiArLy8vLyBAZmlsZQ0KPiA+DQo+ID4gKy8vIHZm ciBzeW50YXgNCj4gPg0KPiA+ICsvLw0KPiA+DQo+ID4gKy8vIENvcHlyaWdodCAoYykgMjAyMi0s IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPg0KPiA+ICsv LyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+DQo+ID4g Ky8vLy8NCj4gPg0KPiA+ICtncmFtbWFyIFZmclN5bnRheDsNCj4gPg0KPiA+ICtvcHRpb25zIHsN Cj4gPg0KPiA+ICsgICAgbGFuZ3VhZ2U9UHl0aG9uOw0KPiA+DQo+ID4gK30NCj4gPg0KPiA+ICtA aGVhZGVyew0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2Zyb20gVmZyQ29tcGlsZXIuSWZyQ3R5cGVz IGltcG9ydCAqDQo+ID4NCj4gPiArZnJvbSBWZnJDb21waWxlci5JZnJGb3JtUGtnIGltcG9ydCAq DQo+ID4NCj4gPiArZnJvbSBWZnJDb21waWxlci5JZnJVdGlsaXR5IGltcG9ydCAqDQo+ID4NCj4g PiArZnJvbSBWZnJDb21waWxlci5JZnJUcmVlIGltcG9ydCAqDQo+ID4NCj4gPiArZnJvbSBWZnJD b21waWxlci5JZnJFcnJvciBpbXBvcnQgKg0KPiA+DQo+ID4gK2Zyb20gVmZyQ29tcGlsZXIuSWZy UHJlUHJvY2VzcyBpbXBvcnQgKg0KPiA+DQo+ID4gK30NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2 ZnJQcm9ncmFtDQo+ID4NCj4gPiArICAgIDogICAodmZyUHJhZ21hUGFja0RlZmluaXRpb24gfCB2 ZnJEYXRhU3RydWN0RGVmaW5pdGlvbiB8DQo+ID4gdmZyRGF0YVVuaW9uRGVmaW5pdGlvbikqIHZm ckZvcm1TZXREZWZpbml0aW9uPw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArcHJhZ21hUGFja1Nob3dEZWYNCj4gPg0KPiA+ICsgICAgOiAgICdzaG93Jw0KPiA+DQo+ID4g KyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArcHJhZ21hUGFja1N0YWNrRGVmDQo+ID4NCj4g PiArICAgIDogICAoJ3B1c2gnIHwgJ3BvcCcpICAoJywnIFN0cmluZ0lkZW50aWZpZXIpPyAoJywn IE51bWJlcik/DQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtwcmFnbWFQ YWNrTnVtYmVyDQo+ID4NCj4gPiArICAgIDogICBOdW1iZXI/DQo+ID4NCj4gPiArICAgIDsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJQcmFnbWFQYWNrRGVmaW5pdGlvbg0KPiA+DQo+ID4gKyAg ICA6ICAgJyNwcmFnbWEnICdwYWNrJyAnKCcNCj4gPg0KPiA+ICsgICAgICAgICggICBwcmFnbWFQ YWNrU2hvd0RlZg0KPiA+DQo+ID4gKyAgICAgICAgfCAgIHByYWdtYVBhY2tTdGFja0RlZg0KPiA+ DQo+ID4gKyAgICAgICAgfCAgIHByYWdtYVBhY2tOdW1iZXINCj4gPg0KPiA+ICsgICAgICAgICk/ DQo+ID4NCj4gPiArICAgICcpJw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArdmZyRGF0YVN0cnVjdERlZmluaXRpb24NCj4gPg0KPiA+ICsgICAgOiAgIChUeXBlRGVmKT8g U3RydWN0IE5vbk52RGF0YU1hcD8gTjE9U3RyaW5nSWRlbnRpZmllcj8gJ3snDQo+ID4gdmZyRGF0 YVN0cnVjdEZpZWxkc1tGYWxzZV0gJ30nICBOMj1TdHJpbmdJZGVudGlmaWVyPyAnOycNCj4gPg0K PiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmckRhdGFVbmlvbkRlZmluaXRpb24N Cj4gPg0KPiA+ICsgICAgOiAgIChUeXBlRGVmKT8gVW5pb24gTm9uTnZEYXRhTWFwPyBOMT1TdHJp bmdJZGVudGlmaWVyPyAneycNCj4gPiB2ZnJEYXRhU3RydWN0RmllbGRzW1RydWVdJ30nIE4yPVN0 cmluZ0lkZW50aWZpZXI/ICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArdmZyRGF0YVN0cnVjdEZpZWxkc1tGaWVsZEluVW5pb25dDQo+ID4NCj4gPiArICAgIDoNCj4g Pg0KPiA+ICsgICAgKCAgIGRhdGFTdHJ1Y3RGaWVsZDY0W0ZpZWxkSW5Vbmlvbl0NCj4gPg0KPiA+ ICsgICAgfCAgIGRhdGFTdHJ1Y3RGaWVsZDMyW0ZpZWxkSW5Vbmlvbl0NCj4gPg0KPiA+ICsgICAg fCAgIGRhdGFTdHJ1Y3RGaWVsZDE2W0ZpZWxkSW5Vbmlvbl0NCj4gPg0KPiA+ICsgICAgfCAgIGRh dGFTdHJ1Y3RGaWVsZDhbRmllbGRJblVuaW9uXQ0KPiA+DQo+ID4gKyAgICB8ICAgZGF0YVN0cnVj dEZpZWxkQm9vbFtGaWVsZEluVW5pb25dDQo+ID4NCj4gPiArICAgIHwgICBkYXRhU3RydWN0Rmll bGRTdHJpbmdbRmllbGRJblVuaW9uXQ0KPiA+DQo+ID4gKyAgICB8ICAgZGF0YVN0cnVjdEZpZWxk RGF0ZVtGaWVsZEluVW5pb25dDQo+ID4NCj4gPiArICAgIHwgICBkYXRhU3RydWN0RmllbGRUaW1l W0ZpZWxkSW5Vbmlvbl0NCj4gPg0KPiA+ICsgICAgfCAgIGRhdGFTdHJ1Y3RGaWVsZFJlZltGaWVs ZEluVW5pb25dDQo+ID4NCj4gPiArICAgIHwgICBkYXRhU3RydWN0RmllbGRVc2VyW0ZpZWxkSW5V bmlvbl0NCj4gPg0KPiA+ICsgICAgfCAgIGRhdGFTdHJ1Y3RCaXRGaWVsZDY0W0ZpZWxkSW5Vbmlv bl0NCj4gPg0KPiA+ICsgICAgfCAgIGRhdGFTdHJ1Y3RCaXRGaWVsZDMyW0ZpZWxkSW5Vbmlvbl0N Cj4gPg0KPiA+ICsgICAgfCAgIGRhdGFTdHJ1Y3RCaXRGaWVsZDE2W0ZpZWxkSW5Vbmlvbl0NCj4g Pg0KPiA+ICsgICAgfCAgIGRhdGFTdHJ1Y3RCaXRGaWVsZDhbRmllbGRJblVuaW9uXQ0KPiA+DQo+ ID4gKyAgICApKg0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArZGF0YVN0 cnVjdEZpZWxkNjRbRmllbGRJblVuaW9uXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ1VJTlQ2NCcgTj1T dHJpbmdJZGVudGlmaWVyICgnWycgTnVtYmVyICddJyk/ICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArZGF0YVN0cnVjdEZpZWxkMzJbRmllbGRJblVuaW9uXQ0KPiA+ DQo+ID4gKyAgICA6ICAgJ1VJTlQzMicgTj1TdHJpbmdJZGVudGlmaWVyICgnWycgTnVtYmVyICdd Jyk/ICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArZGF0YVN0cnVj dEZpZWxkMTZbRmllbGRJblVuaW9uXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ1VJTlQxNicgTj1TdHJp bmdJZGVudGlmaWVyICgnWycgTnVtYmVyICddJyk/ICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArZGF0YVN0cnVjdEZpZWxkOFtGaWVsZEluVW5pb25dDQo+ID4NCj4g PiArICAgIDogICAnVUlOVDgnIE49U3RyaW5nSWRlbnRpZmllciAoJ1snIE51bWJlciAnXScpPyAn OycNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2RhdGFTdHJ1Y3RGaWVs ZEJvb2xbRmllbGRJblVuaW9uXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ0JPT0xFQU4nIE49U3RyaW5n SWRlbnRpZmllciAoJ1snIE51bWJlciAnXScpPyAnOycNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gK2RhdGFTdHJ1Y3RGaWVsZFN0cmluZ1tGaWVsZEluVW5pb25dDQo+ID4N Cj4gPiArICAgIDogICAnRUZJX1NUUklOR19JRCcgTj1TdHJpbmdJZGVudGlmaWVyICgnWycgTnVt YmVyICddJyk/ICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArZGF0 YVN0cnVjdEZpZWxkRGF0ZVtGaWVsZEluVW5pb25dDQo+ID4NCj4gPiArICAgIDogICAnRUZJX0hJ SV9EQVRFJyBOPVN0cmluZ0lkZW50aWZpZXIgKCdbJyBOdW1iZXIgJ10nKT8gJzsnDQo+ID4NCj4g PiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtkYXRhU3RydWN0RmllbGRUaW1lW0ZpZWxk SW5Vbmlvbl0NCj4gPg0KPiA+ICsgICAgOiAgICdFRklfSElJX1RJTUUnIE49U3RyaW5nSWRlbnRp ZmllciAoJ1snIE51bWJlciAnXScpPyAnOycNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gK2RhdGFTdHJ1Y3RGaWVsZFJlZltGaWVsZEluVW5pb25dDQo+ID4NCj4gPiArICAg IDogICAnRUZJX0hJSV9SRUYnIE49U3RyaW5nSWRlbnRpZmllciAoJ1snIE51bWJlciAnXScpPyAn OycNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2RhdGFTdHJ1Y3RGaWVs ZFVzZXJbRmllbGRJblVuaW9uXQ0KPiA+DQo+ID4gKyAgICA6ICAgVD1TdHJpbmdJZGVudGlmaWVy IE49U3RyaW5nSWRlbnRpZmllciAoJ1snIE51bWJlciAnXScpPyAnOycNCj4gPg0KPiA+ICsgICAg Ow0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2RhdGFTdHJ1Y3RCaXRGaWVsZDY0W0ZpZWxkSW5Vbmlv bl0NCj4gPg0KPiA+ICsgICAgOiAgIEQ9J1VJTlQ2NCcgIE49U3RyaW5nSWRlbnRpZmllcj8gJzon IE51bWJlciAnOycNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gK2RhdGFTdHJ1Y3RCaXRGaWVs ZDMyW0ZpZWxkSW5Vbmlvbl0NCj4gPg0KPiA+ICsgICAgOiAgIEQ9J1VJTlQzMicgTj1TdHJpbmdJ ZGVudGlmaWVyPyAnOicgTnVtYmVyICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArZGF0 YVN0cnVjdEJpdEZpZWxkMTZbRmllbGRJblVuaW9uXQ0KPiA+DQo+ID4gKyAgICA6ICAgRD0nVUlO VDE2JyBOPVN0cmluZ0lkZW50aWZpZXI/ICc6JyBOdW1iZXIgJzsnDQo+ID4NCj4gPiArICAgIDsN Cj4gPg0KPiA+ICtkYXRhU3RydWN0Qml0RmllbGQ4W0ZpZWxkSW5Vbmlvbl0NCj4gPg0KPiA+ICsg ICAgOiAgIEQ9J1VJTlQ4JyBOPVN0cmluZ0lkZW50aWZpZXI/ICc6JyBOdW1iZXIgJzsnDQo+ID4N Cj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsvLyBWRlIgRm9ybVNldCBEZWZpbml0 aW9uDQo+ID4NCj4gPiArdmZyRm9ybVNldERlZmluaXRpb24NCj4gPg0KPiA+ICtsb2NhbHNbTm9k ZT1JZnJUcmVlTm9kZShFRklfSUZSX0ZPUk1fU0VUX09QKV0NCj4gPg0KPiA+ICsgICAgOiAgICdm b3Jtc2V0Jw0KPiA+DQo+ID4gKyAgICAgICAgJ2d1aWQnICc9JyBndWlkRGVmaW5pdGlvbiAnLCcN Cj4gPg0KPiA+ICsgICAgICAgICd0aXRsZScgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIg JyknICcsJw0KPiA+DQo+ID4gKyAgICAgICAgJ2hlbHAnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcg TnVtYmVyICcpJyAnLCcNCj4gPg0KPiA+ICsgICAgICAgICgnY2xhc3NndWlkJyAnPScgY2xhc3Nn dWlkRGVmaW5pdGlvbltsb2NhbGN0eC5Ob2RlXSAnLCcpPw0KPiA+DQo+ID4gKyAgICAgICAgKCdj bGFzcycgJz0nIGNsYXNzRGVmaW5pdGlvbiAnLCcpPw0KPiA+DQo+ID4gKyAgICAgICAgKCdzdWJj bGFzcycgJz0nIHN1YmNsYXNzRGVmaW5pdGlvbiAnLCcpPw0KPiA+DQo+ID4gKyAgICAgICAgdmZy Rm9ybVNldExpc3RbbG9jYWxjdHguTm9kZV0NCj4gPg0KPiA+ICsgICAgICAgICdlbmRmb3Jtc2V0 JyAnOycNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzZ3VpZERl ZmluaXRpb25bTm9kZV0NCj4gPg0KPiA+ICtsb2NhbHNbR3VpZExpc3Q9W11dDQo+ID4NCj4gPiAr ICAgIDogICBndWlkRGVmaW5pdGlvbiAoJ3wnIGd1aWREZWZpbml0aW9uKT8gKCd8JyBndWlkRGVm aW5pdGlvbik/KCd8Jw0KPiA+IGd1aWREZWZpbml0aW9uKT8NCj4gPg0KPiA+ICsgICAgOw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gK2NsYXNzRGVmaW5pdGlvbg0KPiA+DQo+ID4gK2xvY2Fsc1tOb2Rl PUlmclRyZWVOb2RlKEVGSV9JRlJfR1VJRF9PUCldDQo+ID4NCj4gPiArICAgIDogICB2YWxpZENs YXNzTmFtZXMgKCd8JyB2YWxpZENsYXNzTmFtZXMpKg0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArdmFsaWRDbGFzc05hbWVzDQo+ID4NCj4gPiArbG9jYWxzW0NsYXNzTmFt ZT0wXQ0KPiA+DQo+ID4gKyAgICA6ICAgQ2xhc3NOb25EZXZpY2UNCj4gPg0KPiA+ICsgICAgfCAg IENsYXNzRGlza0RldmljZQ0KPiA+DQo+ID4gKyAgICB8ICAgQ2xhc3NWaWRlb0RldmljZQ0KPiA+ DQo+ID4gKyAgICB8ICAgQ2xhc3NOZXR3b3JrRGV2aWNlDQo+ID4NCj4gPiArICAgIHwgICBDbGFz c0lucHV0RGV2aWNlDQo+ID4NCj4gPiArICAgIHwgICBDbGFzc09uQm9hcmREZXZpY2UNCj4gPg0K PiA+ICsgICAgfCAgIENsYXNzT3RoZXJEZXZpY2UNCj4gPg0KPiA+ICsgICAgfCAgIE51bWJlcg0K PiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArc3ViY2xhc3NEZWZpbml0aW9u DQo+ID4NCj4gPiArbG9jYWxzW05vZGU9SWZyVHJlZU5vZGUoRUZJX0lGUl9HVUlEX09QKV0NCj4g Pg0KPiA+ICsgICAgOiAgIFN1YmNsYXNzU2V0dXBBcHBsaWNhdGlvbg0KPiA+DQo+ID4gKyAgICB8 ICAgU3ViY2xhc3NHZW5lcmFsQXBwbGljYXRpb24NCj4gPg0KPiA+ICsgICAgfCAgIFN1YmNsYXNz RnJvbnRQYWdlDQo+ID4NCj4gPiArICAgIHwgICBTdWJjbGFzc1NpbmdsZVVzZQ0KPiA+DQo+ID4g KyAgICB8ICAgTnVtYmVyDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICt2ZnJGb3JtU2V0TGlzdFtOb2RlXQ0KPiA+DQo+ID4gKyAgICA6ICh2ZnJGb3Jt U2V0KSoNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKy8vMi41IFZGUiBG b3JtU2V0IExpc3QgRGVmaW5pdGlvbg0KPiA+DQo+ID4gK3ZmckZvcm1TZXQNCj4gPg0KPiA+ICts b2NhbHNbTm9kZT1Ob25lXQ0KPiA+DQo+ID4gKyAgICA6DQo+ID4NCj4gPiArICAgICggICB2ZnJG b3JtRGVmaW5pdGlvbg0KPiA+DQo+ID4gKyAgICB8ICAgdmZyRm9ybU1hcERlZmluaXRpb24NCj4g Pg0KPiA+ICsgICAgfCAgIHZmclN0YXRlbWVudEltYWdlDQo+ID4NCj4gPiArICAgIHwgICB2ZnJT dGF0ZW1lbnRWYXJTdG9yZUxpbmVhcg0KPiA+DQo+ID4gKyAgICB8ICAgdmZyU3RhdGVtZW50VmFy U3RvcmVFZmkNCj4gPg0KPiA+ICsgICAgfCAgIHZmclN0YXRlbWVudFZhclN0b3JlTmFtZVZhbHVl DQo+ID4NCj4gPiArICAgIHwgICB2ZnJTdGF0ZW1lbnREZWZhdWx0U3RvcmUNCj4gPg0KPiA+ICsg ICAgfCAgIHZmclN0YXRlbWVudERpc2FibGVJZkZvcm1TZXQNCj4gPg0KPiA+ICsgICAgfCAgIHZm clN0YXRlbWVudFN1cHByZXNzSWZGb3JtU2V0DQo+ID4NCj4gPiArICAgIHwgICB2ZnJTdGF0ZW1l bnRFeHRlbnNpb24NCj4gPg0KPiA+ICsgICAgKQ0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArLy8yLjYgVkZSIERlZmF1bHQgU3RvcmVzIERlZmluaXRp b24NCj4gPg0KPiA+ICt2ZnJTdGF0ZW1lbnREZWZhdWx0U3RvcmUNCj4gPg0KPiA+ICtsb2NhbHNb Tm9kZT1JZnJUcmVlTm9kZShFRklfSUZSX0RFRkFVTFRTVE9SRV9PUCldDQo+ID4NCj4gPiArICAg IDogICAnZGVmYXVsdHN0b3JlJyBOPVN0cmluZ0lkZW50aWZpZXIgJywnDQo+ID4NCj4gPiArICAg ICAgICAncHJvbXB0JyAnPScgJ1NUUklOR19UT0tFTicgJygnIFM9TnVtYmVyICcpJw0KPiA+DQo+ ID4gKyAgICAgICAgKCcsJyAnYXR0cmlidXRlJyAnPScgQT1OdW1iZXIpPyAnOycNCj4gPg0KPiA+ ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKy8vMi43IFZGUiBWYXJpYWJsZSBTdG9yZSBE ZWZpbml0aW9uDQo+ID4NCj4gPiArdmZyU3RhdGVtZW50VmFyU3RvcmVMaW5lYXINCj4gPg0KPiA+ ICtsb2NhbHNbTm9kZT1JZnJUcmVlTm9kZShFRklfSUZSX1ZBUlNUT1JFX09QKV0NCj4gPg0KPiA+ ICsgICAgOiAgICd2YXJzdG9yZScNCj4gPg0KPiA+ICsgICAgICAgICggICBUTj1TdHJpbmdJZGVu dGlmaWVyICcsJw0KPiA+DQo+ID4gKyAgICAgICAgfCAgICdVSU5UOCcgJywnDQo+ID4NCj4gPiAr ICAgICAgICB8ICAgJ1VJTlQxNicgJywnDQo+ID4NCj4gPiArICAgICAgICB8ICAgJ1VJTlQzMicg JywnDQo+ID4NCj4gPiArICAgICAgICB8ICAgJ1VJTlQ2NCcgJywnDQo+ID4NCj4gPiArICAgICAg ICB8ICAgJ0VGSV9ISUlfREFURScgJywnDQo+ID4NCj4gPiArICAgICAgICB8ICAgJ0VGSV9ISUlf VElNRScgJywnDQo+ID4NCj4gPiArICAgICAgICB8ICAgJ0VGSV9ISUlfUkVGJyAnLCcNCj4gPg0K PiA+ICsgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICgndmFyaWQnICc9JyBJRD1OdW1iZXIg JywnKT8NCj4gPg0KPiA+ICsgICAgICAgICduYW1lJyAnPScgU049U3RyaW5nSWRlbnRpZmllciAn LCcNCj4gPg0KPiA+ICsgICAgICAgICdndWlkJyAnPScgZ3VpZERlZmluaXRpb24gJzsnDQo+ID4N Cj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdGF0ZW1lbnRWYXJTdG9yZUVm aQ0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlPUlmclRyZWVOb2RlKEVGSV9JRlJfVkFSU1RPUkVfRUZJ X09QKV0NCj4gPg0KPiA+ICsgICAgOiAgICdlZml2YXJzdG9yZScNCj4gPg0KPiA+ICsgICAgICAg ICggICBUTj1TdHJpbmdJZGVudGlmaWVyICcsJw0KPiA+DQo+ID4gKyAgICAgICAgfCAgICdVSU5U OCcgJywnDQo+ID4NCj4gPiArICAgICAgICB8ICAgJ1VJTlQxNicgJywnDQo+ID4NCj4gPiArICAg ICAgICB8ICAgJ1VJTlQzMicgJywnDQo+ID4NCj4gPiArICAgICAgICB8ICAgJ1VJTlQ2NCcgJywn DQo+ID4NCj4gPiArICAgICAgICB8ICAgJ0VGSV9ISUlfREFURScgJywnDQo+ID4NCj4gPiArICAg ICAgICB8ICAgJ0VGSV9ISUlfVElNRScgJywnDQo+ID4NCj4gPiArICAgICAgICB8ICAgJ0VGSV9I SUlfUkVGJyAnLCcNCj4gPg0KPiA+ICsgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICgndmFy aWQnICc9JyBJRD1OdW1iZXIgJywnKT8NCj4gPg0KPiA+ICsgICAgICAgICdhdHRyaWJ1dGUnICc9 JyB2ZnJWYXJTdG9yZUVmaUF0dHIgKCd8JyB2ZnJWYXJTdG9yZUVmaUF0dHIpKiAnLCcNCj4gPg0K PiA+ICsgICAgICAgICggICAnbmFtZScgJz0nIFNOPVN0cmluZ0lkZW50aWZpZXIgJywnDQo+ID4N Cj4gPiArICAgICAgICB8ICAgJ25hbWUnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgVk49TnVtYmVy ICcpJyAnLCcgICd2YXJzaXplJyAnPScNCj4gPiBOPU51bWJlciAnLCcNCj4gPg0KPiA+ICsgICAg ICAgICkNCj4gPg0KPiA+ICsgICAgICAgICdndWlkJyAnPScgZ3VpZERlZmluaXRpb24gJzsnDQo+ ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJWYXJTdG9yZUVmaUF0dHIN Cj4gPg0KPiA+ICtsb2NhbHNbQXR0cj0wXQ0KPiA+DQo+ID4gKyAgICA6ICAgTnVtYmVyOw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudFZhclN0b3JlTmFtZVZhbHVlDQo+ID4NCj4g PiArbG9jYWxzW05vZGU9SWZyVHJlZU5vZGUoRUZJX0lGUl9WQVJTVE9SRV9OQU1FX1ZBTFVFX09Q KV0NCj4gPg0KPiA+ICsgICAgOiAgICduYW1ldmFsdWV2YXJzdG9yZScgU049U3RyaW5nSWRlbnRp ZmllciAnLCcNCj4gPg0KPiA+ICsgICAgICAgICgndmFyaWQnICc9JyBJRD1OdW1iZXIgJywnKT8N Cj4gPg0KPiA+ICsgICAgICAgICgnbmFtZScgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIg JyknICcsJykrDQo+ID4NCj4gPiArICAgICAgICAnZ3VpZCcgJz0nIGd1aWREZWZpbml0aW9uICc7 Jw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyU3RhdGVtZW50RGlz YWJsZUlmRm9ybVNldA0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlPUlmclRyZWVOb2RlKEVGSV9JRlJf RElTQUJMRV9JRl9PUCldDQo+ID4NCj4gPiArICAgIDogICAnZGlzYWJsZWlmJyB2ZnJTdGF0ZW1l bnRFeHByZXNzaW9uW2xvY2FsY3R4Lk5vZGVdICc7Jw0KPiA+DQo+ID4gKyAgICAgICAgdmZyRm9y bVNldExpc3RbbG9jYWxjdHguTm9kZV0NCj4gPg0KPiA+ICsgICAgICAgICdlbmRpZicgJzsnDQo+ ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdGF0ZW1lbnRTdXBwcmVz c0lmRm9ybVNldA0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlPUlmclRyZWVOb2RlKEVGSV9JRlJfU1VQ UFJFU1NfSUZfT1ApXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ3N1cHByZXNzaWYnIHZmclN0YXRlbWVu dEV4cHJlc3Npb25bbG9jYWxjdHguTm9kZV0gJzsnDQo+ID4NCj4gPiArICAgICAgICB2ZnJGb3Jt U2V0TGlzdFtsb2NhbGN0eC5Ob2RlXQ0KPiA+DQo+ID4gKyAgICAgICAgJ2VuZGlmJyAnOycNCj4g Pg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2d1aWRTdWJEZWZpbml0aW9uW0d1 aWRdDQo+ID4NCj4gPiArICAgIDogICBOdW1iZXIgJywnIE51bWJlciAnLCcgTnVtYmVyICcsJyBO dW1iZXIgJywnDQo+ID4NCj4gPiArICAgICAgICBOdW1iZXIgJywnIE51bWJlciAnLCcgTnVtYmVy ICcsJyBOdW1iZXINCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2d1aWRE ZWZpbml0aW9uDQo+ID4NCj4gPiArbG9jYWxzW05vZGU9SWZyVHJlZU5vZGUoKSwgR3VpZD1FRklf R1VJRCgpXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ3snDQo+ID4NCj4gPiArICAgICAgICBOdW1iZXIg JywnIE51bWJlciAnLCcgTnVtYmVyICcsJw0KPiA+DQo+ID4gKyAgICAgICAgKCAgICd7JyBndWlk U3ViRGVmaW5pdGlvbltsb2NhbGN0eC5HdWlkXSAnfScNCj4gPg0KPiA+ICsgICAgICAgIHwgICBn dWlkU3ViRGVmaW5pdGlvbltsb2NhbGN0eC5HdWlkXQ0KPiA+DQo+ID4gKyAgICAgICAgKQ0KPiA+ DQo+ID4gKyAgICAgICAgJ30nDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICtnZXRTdHJpbmdJZA0KPiA+DQo+ID4gK2xvY2Fsc1tTdHJpbmdJZD0nJ10NCj4gPg0KPiA+ICsg ICAgOiAgICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknDQo+ID4NCj4gPiArICAgIDsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJRdWVzdGlvbkhlYWRlcltOb2RlLCBRVHlwZV0NCj4gPg0K PiA+ICsgICAgOiAgIHZmclF1ZXN0aW9uQmFzZUluZm9bTm9kZSwgUVR5cGVdDQo+ID4NCj4gPiAr ICAgICAgICB2ZnJTdGF0ZW1lbnRIZWFkZXJbTm9kZV0NCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gK3ZmclF1ZXN0aW9uQmFzZUluZm9bTm9kZSwgUVR5cGVdDQo+ID4NCj4g PiArbG9jYWxzW0Jhc2VJbmZvPUVGSV9WQVJTVE9SRV9JTkZPKCksIFFJZD1FRklfUVVFU1RJT05f SURfSU5WQUxJRCwNCj4gPiBDaGVja0ZsYWc9VHJ1ZSwgUU5hbWU9Tm9uZSwgVmFySWRTdHI9Jydd DQo+ID4NCj4gPiArICAgIDogICAoJ25hbWUnICc9JyBRTj1TdHJpbmdJZGVudGlmaWVyICcsJyk/ DQo+ID4NCj4gPiArICAgICAgICAoJ3ZhcmlkJyAnPScgdmZyU3RvcmFnZVZhcklkW2xvY2FsY3R4 LkJhc2VJbmZvLCBsb2NhbGN0eC5DaGVja0ZsYWddICcsJyk/DQo+ID4NCj4gPiArICAgICAgICAo J3F1ZXN0aW9uaWQnICc9JyBJRD1OdW1iZXIgJywnKT8NCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudEhlYWRlcltOb2RlXQ0KPiA+DQo+ID4gKyAgICA6 ICAgJ3Byb21wdCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0KPiA+DQo+ ID4gKyAgICAgICAgJ2hlbHAnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJw0KPiA+ DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArcXVlc3Rpb25oZWFkZXJGbGFnc0Zp ZWxkDQo+ID4NCj4gPiArbG9jYWxzW1FIRmxhZz0wXQ0KPiA+DQo+ID4gKyAgICA6ICAgUmVhZE9u bHlGbGFnDQo+ID4NCj4gPiArICAgIHwgICBJbnRlcmFjdGl2ZUZsYWcNCj4gPg0KPiA+ICsgICAg fCAgIFJlc2V0UmVxdWlyZWRGbGFnDQo+ID4NCj4gPiArICAgIHwgICBSZXN0U3R5bGVGbGFnDQo+ ID4NCj4gPiArICAgIHwgICBSZWNvbm5lY3RSZXF1aXJlZEZsYWcNCj4gPg0KPiA+ICsgICAgfCAg IE89T3B0aW9uT25seUZsYWcNCj4gPg0KPiA+ICsgICAgfCAgIE49TlZBY2Nlc3NGbGFnDQo+ID4N Cj4gPiArICAgIHwgICBMPUxhdGVDaGVja0ZsYWcNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4g Ky8vMi4xMC41DQo+ID4NCj4gPiArdmZyU3RvcmFnZVZhcklkW0Jhc2VJbmZvLCBDaGVja0ZsYWdd DQo+ID4NCj4gPiArbG9jYWxzW1ZhcklkU3RyPScnXQ0KPiA+DQo+ID4gKyAgICA6ICAgKFNOMT1T dHJpbmdJZGVudGlmaWVyICdbJyBJPU51bWJlciAnXScpICAgICMgdmZyU3RvcmFnZVZhcklkUnVs ZTENCj4gPg0KPiA+ICsgICAgfCAgIChTTjI9U3RyaW5nSWRlbnRpZmllciAoJy4nIGFycmF5TmFt ZSkqICkgIyB2ZnJTdG9yYWdlVmFySWRSdWxlMg0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArdmZyQ29uc3RhbnRWYWx1ZUZpZWxkDQo+ID4NCj4gPiArbG9jYWxzW1ZhbHVl TGlzdD1bXSwgTGlzdFR5cGU9RmFsc2VdDQo+ID4NCj4gPiArICAgIDogICAoJy0nKT8gTnVtYmVy DQo+ID4NCj4gPiArICAgIHwgICAnVFJVRScNCj4gPg0KPiA+ICsgICAgfCAgICdGQUxTRScNCj4g Pg0KPiA+ICsgICAgfCAgICdPTkUnDQo+ID4NCj4gPiArICAgIHwgICAnT05FUycNCj4gPg0KPiA+ ICsgICAgfCAgICdaRVJPJw0KPiA+DQo+ID4gKyAgICB8ICAgTnVtYmVyICc6JyBOdW1iZXIgJzon IE51bWJlcg0KPiA+DQo+ID4gKyAgICB8ICAgTnVtYmVyICcvJyBOdW1iZXIgJy8nIE51bWJlcg0K PiA+DQo+ID4gKyAgICB8ICAgTnVtYmVyICc7JyBOdW1iZXIgJzsnIGd1aWREZWZpbml0aW9uICc7 JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJw0KPiA+DQo+ID4gKyAgICB8ICAgJ1NUUklO R19UT0tFTicgJygnIE51bWJlciAnKScNCj4gPg0KPiA+ICsgICAgfCAgICd7JyBOdW1iZXIgKCcs JyBOdW1iZXIpKiAnfScNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3Zm ckltYWdlVGFnDQo+ID4NCj4gPiArbG9jYWxzW05vZGU9SWZyVHJlZU5vZGUoRUZJX0lGUl9JTUFH RV9PUCldDQo+ID4NCj4gPiArICAgIDogICAnaW1hZ2UnICc9JyAnSU1BR0VfVE9LRU4nICcoJyBO dW1iZXIgJyknDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJMb2Nr ZWRUYWcNCj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1JZnJUcmVlTm9kZShFRklfSUZSX0xPQ0tFRF9P UCldDQo+ID4NCj4gPiArICAgIDogICAnbG9ja2VkJw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArdmZyU3RhdGVtZW50U3RhdFRhZw0KPiA+DQo+ID4gK2xvY2Fsc1tOb2Rl XQ0KPiA+DQo+ID4gKyAgICA6ICAgdmZySW1hZ2VUYWcgfCB2ZnJMb2NrZWRUYWcNCj4gPg0KPiA+ ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudFN0YXRUYWdMaXN0W05v ZGVdDQo+ID4NCj4gPiArICAgIDogICB2ZnJTdGF0ZW1lbnRTdGF0VGFnICgnLCcgdmZyU3RhdGVt ZW50U3RhdFRhZykqDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJG b3JtRGVmaW5pdGlvbg0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlPUlmclRyZWVOb2RlKEVGSV9JRlJf Rk9STV9PUCldDQo+ID4NCj4gPiArICAgIDogICAnZm9ybScgJ2Zvcm1pZCcgJz0nIE51bWJlciAn LCcNCj4gPg0KPiA+ICsgICAgICAgICd0aXRsZScgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1i ZXIgJyknICc7Jw0KPiA+DQo+ID4gKyAgICAgICAgKHZmckZvcm0pKg0KPiA+DQo+ID4gKyAgICAg ICAgJ2VuZGZvcm0nICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr dmZyRm9ybQ0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlXQ0KPiA+DQo+ID4gKyAgICA6DQo+ID4NCj4g PiArICAgICggICB2ZnJTdGF0ZW1lbnRJbWFnZQ0KPiA+DQo+ID4gKyAgICB8ICAgdmZyU3RhdGVt ZW50TG9ja2VkDQo+ID4NCj4gPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRSdWxlcw0KPiA+DQo+ID4g KyAgICB8ICAgdmZyU3RhdGVtZW50RGVmYXVsdA0KPiA+DQo+ID4gKyAgICB8ICAgdmZyU3RhdGVt ZW50U3RhdA0KPiA+DQo+ID4gKyAgICB8ICAgdmZyU3RhdGVtZW50UXVlc3Rpb25zDQo+ID4NCj4g PiArICAgIHwgICB2ZnJTdGF0ZW1lbnRDb25kaXRpb25hbA0KPiA+DQo+ID4gKyAgICB8ICAgdmZy U3RhdGVtZW50TGFiZWwNCj4gPg0KPiA+ICsgICAgfCAgIHZmclN0YXRlbWVudEJhbm5lcg0KPiA+ DQo+ID4gKyAgICB8ICAgdmZyU3RhdGVtZW50SW52YWxpZA0KPiA+DQo+ID4gKyAgICB8ICAgdmZy U3RhdGVtZW50RXh0ZW5zaW9uDQo+ID4NCj4gPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRNb2RhbA0K PiA+DQo+ID4gKyAgICB8ICAgdmZyU3RhdGVtZW50UmVmcmVzaEV2ZW50ICc7Jw0KPiA+DQo+ID4g KyAgICApDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJGb3JtTWFw RGVmaW5pdGlvbg0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlPUlmclRyZWVOb2RlKEVGSV9JRlJfRk9S TV9NQVBfT1ApXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ2Zvcm1tYXAnICdmb3JtaWQnICc9JyBTMT1O dW1iZXIgJywnDQo+ID4NCj4gPiArICAgICAgICAoICAgJ21hcHRpdGxlJyAnPScgJ1NUUklOR19U T0tFTicgJygnIE51bWJlciAnKScgJzsnDQo+ID4NCj4gPiArICAgICAgICAgICAgJ21hcGd1aWQn ICc9JyBndWlkRGVmaW5pdGlvbiAnOycNCj4gPg0KPiA+ICsgICAgICAgICkqDQo+ID4NCj4gPiAr ICAgICAgICAodmZyRm9ybSkqDQo+ID4NCj4gPiArICAgICAgICAnZW5kZm9ybScgJzsnDQo+ID4N Cj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdGF0ZW1lbnRJbWFnZQ0KPiA+ DQo+ID4gK2xvY2Fsc1tOb2RlXQ0KPiA+DQo+ID4gKyAgICA6ICAgdmZySW1hZ2VUYWcgJzsnDQo+ ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdGF0ZW1lbnRMb2NrZWQN Cj4gPg0KPiA+ICtsb2NhbHNbTm9kZV0NCj4gPg0KPiA+ICsgICAgOiAgIHZmckxvY2tlZFRhZyAn OycNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudFJ1 bGVzDQo+ID4NCj4gPiArbG9jYWxzW05vZGU9SWZyVHJlZU5vZGUoRUZJX0lGUl9SVUxFX09QKV0N Cj4gPg0KPiA+ICsgICAgOiAgICdydWxlJyBTdHJpbmdJZGVudGlmaWVyICcsJw0KPiA+DQo+ID4g KyAgICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvbltsb2NhbGN0eC5Ob2RlXQ0KPiA+DQo+ID4g KyAgICAgICAgJ2VuZHJ1bGUnICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArdmZyU3RhdGVtZW50U3RhdA0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlXQ0KPiA+DQo+ID4g KyAgICA6ICAgdmZyU3RhdGVtZW50U3ViVGl0bGUNCj4gPg0KPiA+ICsgICAgfCAgIHZmclN0YXRl bWVudFN0YXRpY1RleHQNCj4gPg0KPiA+ICsgICAgfCAgIHZmclN0YXRlbWVudENyb3NzUmVmZXJl bmNlDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdGF0ZW1lbnRT dWJUaXRsZQ0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlPUlmclRyZWVOb2RlKEVGSV9JRlJfU1VCVElU TEVfT1ApXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ3N1YnRpdGxlJw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgJ3RleHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJw0KPiA+ DQo+ID4gKyAgICAgICAgKCcsJyAnZmxhZ3MnICc9JyB2ZnJTdWJ0aXRsZUZsYWdzKT8NCj4gPg0K PiA+ICsgICAgICAgICggICAoJywnIHZmclN0YXRlbWVudFN0YXRUYWdMaXN0W2xvY2FsY3R4Lk5v ZGVdKT8gJzsnDQo+ID4NCj4gPiArICAgICAgICB8DQo+ID4NCj4gPiArICAgICAgICAgICAgKCcs JyB2ZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdFtsb2NhbGN0eC5Ob2RlXSk/DQo+ID4NCj4gPiArICAg ICAgICAgICAgKCcsJyAodmZyU3RhdGVtZW50U3ViVGl0bGVDb21wb25lbnQpKiApPw0KPiA+DQo+ ID4gKyAgICAgICAgICAgICdlbmRzdWJ0aXRsZScgJzsnDQo+ID4NCj4gPiArICAgICAgICApDQo+ ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdGF0ZW1lbnRTdWJUaXRs ZUNvbXBvbmVudA0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlXQ0KPiA+DQo+ID4gKyAgICA6ICB2ZnJT dGF0ZW1lbnRTdGF0IHwgdmZyU3RhdGVtZW50UXVlc3Rpb25zDQo+ID4NCj4gPiArICAgIDsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdWJ0aXRsZUZsYWdzDQo+ID4NCj4gPiArbG9jYWxzW1N1 YkZsYWdzPTBdDQo+ID4NCj4gPiArICAgIDogICBzdWJ0aXRsZUZsYWdzRmllbGQgKCd8JyBzdWJ0 aXRsZUZsYWdzRmllbGQpKg0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArc3VidGl0bGVGbGFn c0ZpZWxkDQo+ID4NCj4gPiArbG9jYWxzW0ZsYWc9MF0NCj4gPg0KPiA+ICsgICAgOiAgIE51bWJl ciB8ICdIT1JJWk9OVEFMJw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr dmZyU3RhdGVtZW50U3RhdGljVGV4dA0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlPUlmclRyZWVOb2Rl KEVGSV9JRlJfVEVYVF9PUCldDQo+ID4NCj4gPiArICAgIDogICAndGV4dCcNCj4gPg0KPiA+ICsg ICAgICAgICdoZWxwJyAnPScgJ1NUUklOR19UT0tFTicgJygnIFMxPU51bWJlciAnKScgJywnDQo+ ID4NCj4gPiArICAgICAgICAndGV4dCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBTMj1OdW1iZXIg JyknDQo+ID4NCj4gPiArICAgICAgICAoJywnICd0ZXh0JyAnPScgJ1NUUklOR19UT0tFTicgJygn IFMzPU51bWJlciAnKScpPw0KPiA+DQo+ID4gKyAgICAgICAgKCcsJyBGPSdmbGFncycgJz0nIHN0 YXRpY1RleHRGbGFnc0ZpZWxkICgnfCcgc3RhdGljVGV4dEZsYWdzRmllbGQpKiAnLCcgJ2tleScg Jz0nDQo+ID4gUzQ9TnVtYmVyKT8NCj4gPg0KPiA+ICsgICAgICAgICgnLCcgdmZyU3RhdGVtZW50 U3RhdFRhZ0xpc3RbbG9jYWxjdHguTm9kZV0pPyAnOycNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gK3N0YXRpY1RleHRGbGFnc0ZpZWxkDQo+ID4NCj4gPiArbG9jYWxzW0Zs YWc9MF0NCj4gPg0KPiA+ICsgICAgOiAgIE49TnVtYmVyIHwgcXVlc3Rpb25oZWFkZXJGbGFnc0Zp ZWxkDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdGF0ZW1lbnRD cm9zc1JlZmVyZW5jZQ0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlXQ0KPiA+DQo+ID4gKyAgICA6ICAg dmZyU3RhdGVtZW50R290byB8IHZmclN0YXRlbWVudFJlc2V0QnV0dG9uDQo+ID4NCj4gPiArICAg IDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdGF0ZW1lbnRHb3RvDQo+ID4NCj4gPiArbG9j YWxzW05vZGU9SWZyVHJlZU5vZGUoRUZJX0lGUl9SRUZfT1ApLA0KPiA+IFFUeXBlPUVGSV9RVUVT SU9OX1RZUEUuUVVFU1RJT05fUkVGXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ2dvdG8nDQo+ID4NCj4g PiArICAgICAgICAoICAgKCAgIERldmljZVBhdGggJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1i ZXIgJyknICcsJw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBGb3JtU2V0R3VpZCAnPScgZ3Vp ZERlZmluaXRpb24gJywnDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIEZvcm1JZCAnPScgTnVt YmVyICcsJw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBRdWVzdGlvbiAnPScgTnVtYmVyICcs Jw0KPiA+DQo+ID4gKyAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICAgICB8DQo+ID4N Cj4gPiArICAgICAgICAgICAgKCAgIEZvcm1TZXRHdWlkICc9JyBndWlkRGVmaW5pdGlvbiAnLCcN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgRm9ybUlkICc9JyBOdW1iZXIgJywnDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIFF1ZXN0aW9uICc9JyBOdW1iZXIgJywnDQo+ID4NCj4gPiArICAg ICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHwNCj4gPg0KPiA+ICsgICAgICAgICAg ICAoICAgRm9ybUlkICc9JyBOdW1iZXIgJywnDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIFF1 ZXN0aW9uICc9JyAoUU49U3RyaW5nSWRlbnRpZmllciAnLCcgfCBOdW1iZXIgJywnKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICAgICB8DQo+ID4NCj4gPiArICAg ICAgICAgICAgKCAgIE49TnVtYmVyICcsJyApDQo+ID4NCj4gPiArICAgICAgICApPw0KPiA+DQo+ ID4gKyAgICAgICAgdmZyUXVlc3Rpb25IZWFkZXJbbG9jYWxjdHguTm9kZSwgbG9jYWxjdHguUVR5 cGVdDQo+ID4NCj4gPiArICAgICAgICAoJywnICdmbGFncycgJz0nIHZmckdvdG9GbGFncyk/DQo+ ID4NCj4gPiArICAgICAgICAoJywnICdrZXknICc9JyBOdW1iZXIpPw0KPiA+DQo+ID4gKyAgICAg ICAgKEU9JywnIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdFtsb2NhbGN0eC5Ob2RlXSk/ ICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyR290b0ZsYWdz DQo+ID4NCj4gPiArbG9jYWxzW0dvdG9GbGFncz0wXQ0KPiA+DQo+ID4gKyAgICA6ICAgZ290b0Zs YWdzRmllbGQoJ3wnIGdvdG9GbGFnc0ZpZWxkKSoNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gK2dvdG9GbGFnc0ZpZWxkDQo+ID4NCj4gPiArbG9jYWxzW0ZsYWc9MF0NCj4g Pg0KPiA+ICsgICAgOiAgTj1OdW1iZXIgfCBxdWVzdGlvbmhlYWRlckZsYWdzRmllbGQNCj4gPg0K PiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudFJlc2V0QnV0dG9u DQo+ID4NCj4gPiArbG9jYWxzW05vZGU9SWZyVHJlZU5vZGUoRUZJX0lGUl9SRVNFVF9CVVRUT05f T1ApXQ0KPiA+DQo+ID4gKyAgICA6ICAncmVzZXRidXR0b24nDQo+ID4NCj4gPiArICAgICAgICdk ZWZhdWx0c3RvcmUnICc9JyBOPVN0cmluZ0lkZW50aWZpZXIgJywnDQo+ID4NCj4gPiArICAgICAg IHZmclN0YXRlbWVudEhlYWRlcltsb2NhbGN0eC5Ob2RlXSAnLCcNCj4gPg0KPiA+ICsgICAgICAg KHZmclN0YXRlbWVudFN0YXRUYWdMaXN0W2xvY2FsY3R4Lk5vZGVdICcsJyk/DQo+ID4NCj4gPiAr ICAgICAgICdlbmRyZXNldGJ1dHRvbicgJzsnDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICt2ZnJTdGF0ZW1lbnRRdWVzdGlvbnMNCj4gPg0KPiA+ICtsb2NhbHNbTm9kZV0N Cj4gPg0KPiA+ICsgICAgOiAgIHZmclN0YXRlbWVudEJvb2xlYW5UeXBlDQo+ID4NCj4gPiArICAg IHwgICB2ZnJTdGF0ZW1lbnREYXRlDQo+ID4NCj4gPiArICAgIHwgICB2ZnJTdGF0ZW1lbnROdW1l cmljVHlwZQ0KPiA+DQo+ID4gKyAgICB8ICAgdmZyU3RhdGVtZW50U3RyaW5nVHlwZQ0KPiA+DQo+ ID4gKyAgICB8ICAgdmZyU3RhdGVtZW50T3JkZXJlZExpc3QNCj4gPg0KPiA+ICsgICAgfCAgIHZm clN0YXRlbWVudFRpbWUNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3Zm clN0YXRlbWVudFF1ZXN0aW9uVGFnDQo+ID4NCj4gPiArbG9jYWxzW05vZGVdDQo+ID4NCj4gPiAr ICAgIDogICB2ZnJTdGF0ZW1lbnRTdGF0VGFnICcsJw0KPiA+DQo+ID4gKyAgICB8ICAgdmZyU3Rh dGVtZW50SW5jb25zaXN0ZW50SWYNCj4gPg0KPiA+ICsgICAgfCAgIHZmclN0YXRlbWVudE5vU3Vi bWl0SWYNCj4gPg0KPiA+ICsgICAgfCAgIHZmclN0YXRlbWVudERpc2FibGVJZlF1ZXN0DQo+ID4N Cj4gPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRSZWZyZXNoDQo+ID4NCj4gPiArICAgIHwgICB2ZnJT dGF0ZW1lbnRWYXJzdG9yZURldmljZQ0KPiA+DQo+ID4gKyAgICB8ICAgdmZyU3RhdGVtZW50RXh0 ZW5zaW9uDQo+ID4NCj4gPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnQNCj4gPg0K PiA+ICsgICAgfCAgIHZmclN0YXRlbWVudFdhcm5pbmdJZg0KPiA+DQo+ID4gKyAgICA7DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArdmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWYgLy8NCj4gPg0KPiA+ ICtsb2NhbHNbTm9kZT1JZnJUcmVlTm9kZShFRklfSUZSX0lOQ09OU0lTVEVOVF9JRl9PUCldDQo+ ID4NCj4gPiArICAgIDogICAnaW5jb25zaXN0ZW50aWYnDQo+ID4NCj4gPiArICAgICAgICAncHJv bXB0JyAnPScgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAnKScgJywnDQo+ID4NCj4gPiArICAg ICAgICAoJ2ZsYWdzJyAnPScgZmxhZ3NGaWVsZCAoJ3wnIGZsYWdzRmllbGQpKiAnLCcpPw0KPiA+ DQo+ID4gKyAgICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvbltsb2NhbGN0eC5Ob2RlXQ0KPiA+ DQo+ID4gKyAgICAgICAgJ2VuZGlmJyAoJzsnKT8NCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudE5vU3VibWl0SWYgLy8NCj4gPg0KPiA+ICtsb2NhbHNb Tm9kZT1JZnJUcmVlTm9kZShFRklfSUZSX05PX1NVQk1JVF9JRl9PUCldDQo+ID4NCj4gPiArICAg IDogICAnbm9zdWJtaXRpZicNCj4gPg0KPiA+ICsgICAgICAgICdwcm9tcHQnICc9JyAnU1RSSU5H X1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCj4gPg0KPiA+ICsgICAgICAgICgnZmxhZ3MnICc9 JyBmbGFnc0ZpZWxkICgnfCcgZmxhZ3NGaWVsZCkqICcsJyk/DQo+ID4NCj4gPiArICAgICAgICB2 ZnJTdGF0ZW1lbnRFeHByZXNzaW9uW2xvY2FsY3R4Lk5vZGVdDQo+ID4NCj4gPiArICAgICAgICAn ZW5kaWYnICgnOycpPw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZy U3RhdGVtZW50RGlzYWJsZUlmUXVlc3QNCj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1JZnJUcmVlTm9k ZShFRklfSUZSX0RJU0FCTEVfSUZfT1ApXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ2Rpc2FibGVpZicg dmZyU3RhdGVtZW50RXhwcmVzc2lvbltsb2NhbGN0eC5Ob2RlXSAnOycNCj4gPg0KPiA+ICsgICAg ICAgIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdFtsb2NhbGN0eC5Ob2RlXQ0KPiA+DQo+ ID4gKyAgICAgICAgJ2VuZGlmJyAoJzsnKT8NCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gK3ZmclN0YXRlbWVudFJlZnJlc2gNCj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1JZnJU cmVlTm9kZShFRklfSUZSX1JFRlJFU0hfT1ApXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ3JlZnJlc2gn ICdpbnRlcnZhbCcgJz0nIE51bWJlcg0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArdmZyU3RhdGVtZW50VmFyc3RvcmVEZXZpY2UNCj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1J ZnJUcmVlTm9kZShFRklfSUZSX1ZBUlNUT1JFX0RFVklDRV9PUCldDQo+ID4NCj4gPiArICAgIDog ICAndmFyc3RvcmVkZXZpY2UnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcN Cj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudFJlZnJl c2hFdmVudA0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlPUlmclRyZWVOb2RlKEVGSV9JRlJfUkVGUkVT SF9JRF9PUCldDQo+ID4NCj4gPiArICAgIDogICAncmVmcmVzaGd1aWQnICc9JyBndWlkRGVmaW5p dGlvbiAnLCcNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRl bWVudFdhcm5pbmdJZiAvLw0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlPUlmclRyZWVOb2RlKEVGSV9J RlJfV0FSTklOR19JRl9PUCldDQo+ID4NCj4gPiArICAgIDogICAnd2FybmluZ2lmJw0KPiA+DQo+ ID4gKyAgICAgICAgJ3Byb21wdCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcs Jw0KPiA+DQo+ID4gKyAgICAgICAgKCd0aW1lb3V0JyAnPScgTnVtYmVyICcsJyk/DQo+ID4NCj4g PiArICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uW2xvY2FsY3R4Lk5vZGVdDQo+ID4NCj4g PiArICAgICAgICAnZW5kaWYnICgnOycpPw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArdmZyU3RhdGVtZW50UXVlc3Rpb25UYWdMaXN0W05vZGVdDQo+ID4NCj4gPiArICAg IDogICAodmZyU3RhdGVtZW50UXVlc3Rpb25UYWcpKg0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25UYWcNCj4gPg0KPiA+ICts b2NhbHNbTm9kZV0NCj4gPg0KPiA+ICsgICAgOiAgIHZmclN0YXRlbWVudFN1cHByZXNzSWZRdWVz dA0KPiA+DQo+ID4gKyAgICB8ICAgdmZyU3RhdGVtZW50R3JheU91dElmUXVlc3QNCj4gPg0KPiA+ ICsgICAgfCAgIHZmclN0YXRlbWVudFZhbHVlDQo+ID4NCj4gPiArICAgIHwgICB2ZnJTdGF0ZW1l bnREZWZhdWx0DQo+ID4NCj4gPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRPcHRpb25zDQo+ID4NCj4g PiArICAgIHwgICB2ZnJTdGF0ZW1lbnRSZWFkDQo+ID4NCj4gPiArICAgIHwgICB2ZnJTdGF0ZW1l bnRXcml0ZQ0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArZmxhZ3NGaWVs ZA0KPiA+DQo+ID4gKyAgICA6ICAgTnVtYmVyDQo+ID4NCj4gPiArICAgIHwgICBJbnRlcmFjdGl2 ZUZsYWcNCj4gPg0KPiA+ICsgICAgfCAgIE1hbnVmYWN0dXJpbmdGbGFnDQo+ID4NCj4gPiArICAg IHwgICBEZWZhdWx0RmxhZw0KPiA+DQo+ID4gKyAgICB8ICAgUmVzZXRSZXF1aXJlZEZsYWcNCj4g Pg0KPiA+ICsgICAgfCAgIFJlY29ubmVjdFJlcXVpcmVkRmxhZw0KPiA+DQo+ID4gKyAgICB8ICAg Tj1OVkFjY2Vzc0ZsYWcNCj4gPg0KPiA+ICsgICAgfCAgIEw9TGF0ZUNoZWNrRmxhZw0KPiA+DQo+ ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1 ZXN0DQo+ID4NCj4gPiArbG9jYWxzW05vZGU9SWZyVHJlZU5vZGUoRUZJX0lGUl9TVVBQUkVTU19J Rl9PUCldDQo+ID4NCj4gPiArICAgIDogICAnc3VwcHJlc3NpZicgdmZyU3RhdGVtZW50RXhwcmVz c2lvbltsb2NhbGN0eC5Ob2RlXSAnOycNCj4gPg0KPiA+ICsgICAgICAgICgnZmxhZ3MnICc9JyBm bGFnc0ZpZWxkICgnfCcgZmxhZ3NGaWVsZCApKiAnLCcpPw0KPiA+DQo+ID4gKyAgICAgICAgdmZy U3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0W2xvY2FsY3R4Lk5vZGVdDQo+ID4NCj4gPiArICAg ICAgICAnZW5kaWYnICgnOycpPw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArdmZyU3RhdGVtZW50R3JheU91dElmUXVlc3QNCj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1JZnJU cmVlTm9kZShFRklfSUZSX1NVUFBSRVNTX0lGX09QKV0NCj4gPg0KPiA+ICsgICAgOiAgICdncmF5 b3V0aWYnIHZmclN0YXRlbWVudEV4cHJlc3Npb25bbG9jYWxjdHguTm9kZV0gJzsnDQo+ID4NCj4g PiArICAgICAgICAoJ2ZsYWdzJyAnPScgZmxhZ3NGaWVsZCAoJ3wnIGZsYWdzRmllbGQgKSogJywn KT8NCj4gPg0KPiA+ICsgICAgICAgIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdFtsb2Nh bGN0eC5Ob2RlXQ0KPiA+DQo+ID4gKyAgICAgICAgJ2VuZGlmJyAoJzsnKT8NCj4gPg0KPiA+ICsg ICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudERlZmF1 bHQNCj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1JZnJUcmVlTm9kZShFRklfSUZSX0RFRkFVTFRfT1Ap XQ0KPiA+DQo+ID4gKyAgICA6ICAgRD0nZGVmYXVsdCcNCj4gPg0KPiA+ICsgICAgICAgICggICAo ICAgVj12ZnJTdGF0ZW1lbnRWYWx1ZSAnLCcNCj4gPg0KPiA+ICsgICAgICAgICAgICB8ICAgJz0n IHZmckNvbnN0YW50VmFsdWVGaWVsZCAnLCcNCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ID4N Cj4gPiArICAgICAgICAgICAgKCAgICdkZWZhdWx0c3RvcmUnICc9JyBTTj1TdHJpbmdJZGVudGlm aWVyICcsJw0KPiA+DQo+ID4gKyAgICAgICAgICAgICk/DQo+ID4NCj4gPiArICAgICAgICApDQo+ ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdGF0ZW1lbnRWYWx1ZQ0K PiA+DQo+ID4gK2xvY2Fsc1tOb2RlPUlmclRyZWVOb2RlKEVGSV9JRlJfVkFMVUVfT1ApXQ0KPiA+ DQo+ID4gKyAgICA6ICAgJ3ZhbHVlJyAnPScgdmZyU3RhdGVtZW50RXhwcmVzc2lvbltsb2NhbGN0 eC5Ob2RlXQ0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyU3RhdGVt ZW50T3B0aW9ucw0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlXQ0KPiA+DQo+ID4gKyAgICA6ICAgdmZy U3RhdGVtZW50T25lT2ZPcHRpb24NCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gK3ZmclN0YXRlbWVudE9uZU9mT3B0aW9uDQo+ID4NCj4gPiArbG9jYWxzW05vZGU9SWZyVHJl ZU5vZGUoRUZJX0lGUl9PTkVfT0ZfT1BUSU9OX09QKV0NCj4gPg0KPiA+ICsgICAgOiAgICdvcHRp b24nDQo+ID4NCj4gPiArICAgICAgICAndGV4dCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1i ZXIgJyknICcsJw0KPiA+DQo+ID4gKyAgICAgICAgJ3ZhbHVlJyAnPScgdmZyQ29uc3RhbnRWYWx1 ZUZpZWxkICcsJw0KPiA+DQo+ID4gKyAgICAgICAgRj0nZmxhZ3MnICc9JyB2ZnJPbmVPZk9wdGlv bkZsYWdzICgnLCcgJ2tleScgJz0nIEtOPU51bWJlcikgPyAoVD0nLCcNCj4gPiB2ZnJJbWFnZVRh ZykqICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyT25lT2ZP cHRpb25GbGFncw0KPiA+DQo+ID4gK2xvY2Fsc1tIRmxhZ3M9MCwgTEZsYWdzPTBdDQo+ID4NCj4g PiArICAgIDogICBvbmVvZm9wdGlvbkZsYWdzRmllbGQgKCd8JyBvbmVvZm9wdGlvbkZsYWdzRmll bGQpKjsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtvbmVvZm9wdGlvbkZsYWdzRmllbGQNCj4gPg0K PiA+ICsgICAgbG9jYWxzW0hGbGFnPTAsIExGbGFnPTBdDQo+ID4NCj4gPiArICAgIDogICBOdW1i ZXINCj4gPg0KPiA+ICsgICAgfCAgIE9wdGlvbkRlZmF1bHQNCj4gPg0KPiA+ICsgICAgfCAgIE9w dGlvbkRlZmF1bHRNZmcNCj4gPg0KPiA+ICsgICAgfCAgIEludGVyYWN0aXZlRmxhZw0KPiA+DQo+ ID4gKyAgICB8ICAgUmVzZXRSZXF1aXJlZEZsYWcNCj4gPg0KPiA+ICsgICAgfCAgIFJlc3RTdHls ZUZsYWcNCj4gPg0KPiA+ICsgICAgfCAgIFJlY29ubmVjdFJlcXVpcmVkRmxhZw0KPiA+DQo+ID4g KyAgICB8ICAgTWFudWZhY3R1cmluZ0ZsYWcNCj4gPg0KPiA+ICsgICAgfCAgIERlZmF1bHRGbGFn DQo+ID4NCj4gPiArICAgIHwgICBBPU5WQWNjZXNzRmxhZw0KPiA+DQo+ID4gKyAgICB8ICAgTD1M YXRlQ2hlY2tGbGFnDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJT dGF0ZW1lbnRSZWFkDQo+ID4NCj4gPiArbG9jYWxzW05vZGU9SWZyVHJlZU5vZGUoRUZJX0lGUl9S RUFEX09QKV0NCj4gPg0KPiA+ICsgICAgOiAgICdyZWFkJyB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9u W2xvY2FsY3R4Lk5vZGVdICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArdmZyU3RhdGVtZW50V3JpdGUNCj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1JZnJUcmVlTm9kZShF RklfSUZSX1dSSVRFX09QKV0NCj4gPg0KPiA+ICsgICAgOiAgICd3cml0ZScgdmZyU3RhdGVtZW50 RXhwcmVzc2lvbltsb2NhbGN0eC5Ob2RlXSAnOycNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdFtOb2RlXQ0KPiA+DQo+ ID4gKyAgICA6ICAgKHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uKSoNCj4gPg0KPiA+ICsgICAg Ow0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRl bWVudFF1ZXN0aW9uT3B0aW9uDQo+ID4NCj4gPiArbG9jYWxzW05vZGVdDQo+ID4NCj4gPiArICAg IDogICB2ZnJTdGF0ZW1lbnRRdWVzdGlvblRhZyB8IHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9u VGFnDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdGF0ZW1lbnRC b29sZWFuVHlwZQ0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlXQ0KPiA+DQo+ID4gKyAgICA6ICAgdmZy U3RhdGVtZW50Q2hlY2tCb3ggfCB2ZnJTdGF0ZW1lbnRBY3Rpb24NCj4gPg0KPiA+ICsgICAgOw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudENoZWNrQm94DQo+ID4NCj4gPg0KPiAr bG9jYWxzW05vZGU9SWZyVHJlZU5vZGUoRUZJX0lGUl9DSEVDS0JPWF9PUCksR3VpZE5vZGU9SWZy VHJlZU5vZGUoRUYNCj4gPiBJX0lGUl9HVUlEX09QKSwgUVR5cGU9RUZJX1FVRVNJT05fVFlQRS5R VUVTVElPTl9OT1JNQUxdDQo+ID4NCj4gPiArICAgIDogICBMPSdjaGVja2JveCcNCj4gPg0KPiA+ ICsgICAgICAgIHZmclF1ZXN0aW9uQmFzZUluZm9bbG9jYWxjdHguTm9kZSwgbG9jYWxjdHguUVR5 cGVdDQo+ID4NCj4gPiArICAgICAgICB2ZnJTdGF0ZW1lbnRIZWFkZXJbbG9jYWxjdHguTm9kZV0g JywnDQo+ID4NCj4gPiArICAgICAgICAoRj0nZmxhZ3MnICc9JyB2ZnJDaGVja0JveEZsYWdzICcs Jyk/DQo+ID4NCj4gPiArICAgICAgICAoJ2tleScgJz0nIE51bWJlciAnLCcpPw0KPiA+DQo+ID4g KyAgICAgICAgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0W2xvY2FsY3R4Lk5vZGVdDQo+ ID4NCj4gPiArICAgICAgICAnZW5kY2hlY2tib3gnICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArdmZyQ2hlY2tCb3hGbGFncw0KPiA+DQo+ID4gK2xvY2Fsc1tMRmxh Z3M9MCwgSEZsYWdzPTBdDQo+ID4NCj4gPiArICAgIDogICBjaGVja2JveEZsYWdzRmllbGQgKCd8 JyBjaGVja2JveEZsYWdzRmllbGQpKg0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArY2hlY2tib3hGbGFnc0ZpZWxkDQo+ID4NCj4gPiArbG9jYWxzW0xGbGFnPTAsIEhGbGFn PTBdDQo+ID4NCj4gPiArICAgIDogICBOdW1iZXINCj4gPg0KPiA+ICsgICAgfCAgIEQ9J0RFRkFV TFQnDQo+ID4NCj4gPiArICAgIHwgICBNPSdNQU5VRkFDVFVSSU5HJw0KPiA+DQo+ID4gKyAgICB8 ICAgJ0NIRUNLQk9YX0RFRkFVTFQnDQo+ID4NCj4gPiArICAgIHwgICAnQ0hFQ0tCT1hfREVGQVVM VF9NRkcnDQo+ID4NCj4gPiArICAgIHwgICBxdWVzdGlvbmhlYWRlckZsYWdzRmllbGQNCj4gPg0K PiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudEFjdGlvbg0KPiA+ DQo+ID4gK2xvY2Fsc1tOb2RlPUlmclRyZWVOb2RlKEVGSV9JRlJfQUNUSU9OX09QKSwNCj4gPiBR VHlwZT1FRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX05PUk1BTF0NCj4gPg0KPiA+ICsgICAgOiAg ICdhY3Rpb24nDQo+ID4NCj4gPiArICAgICAgICB2ZnJRdWVzdGlvbkhlYWRlcltsb2NhbGN0eC5O b2RlLCBsb2NhbGN0eC5RVHlwZV0gJywnDQo+ID4NCj4gPiArICAgICAgICAoJ2ZsYWdzJyAnPScg dmZyQWN0aW9uRmxhZ3MgJywnKT8NCj4gPg0KPiA+ICsgICAgICAgICdjb25maWcnICc9JyAnU1RS SU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCj4gPg0KPiA+ICsgICAgICAgIHZmclN0YXRl bWVudFF1ZXN0aW9uVGFnTGlzdFtsb2NhbGN0eC5Ob2RlXQ0KPiA+DQo+ID4gKyAgICAgICAgJ2Vu ZGFjdGlvbicgJzsnDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJB Y3Rpb25GbGFncw0KPiA+DQo+ID4gK2xvY2Fsc1tIRmxhZ3M9MF0NCj4gPg0KPiA+ICsgICAgOiAg IGFjdGlvbkZsYWdzRmllbGQgKCd8JyBhY3Rpb25GbGFnc0ZpZWxkKSoNCj4gPg0KPiA+ICsgICAg Ow0KPiA+DQo+ID4gK2FjdGlvbkZsYWdzRmllbGQNCj4gPg0KPiA+ICtsb2NhbHNbSEZsYWc9MF0N Cj4gPg0KPiA+ICsgICAgOiAgIE49TnVtYmVyIHwgcXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkDQo+ ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdGF0ZW1lbnROdW1lcmlj VHlwZQ0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlXQ0KPiA+DQo+ID4gKyAgICA6ICAgdmZyU3RhdGVt ZW50TnVtZXJpYyB8IHZmclN0YXRlbWVudE9uZU9mDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICt2ZnJTdGF0ZW1lbnROdW1lcmljDQo+ID4NCj4gPiArbG9jYWxzW05vZGU9 SWZyVHJlZU5vZGUoRUZJX0lGUl9OVU1FUklDX09QKSwNCj4gPiBHdWlkTm9kZT1JZnJUcmVlTm9k ZShFRklfSUZSX0dVSURfT1ApLA0KPiA+IFFUeXBlPUVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05f Tk9STUFMXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ251bWVyaWMnDQo+ID4NCj4gPiArICAgICAgICB2 ZnJRdWVzdGlvbkJhc2VJbmZvW2xvY2FsY3R4Lk5vZGUsIGxvY2FsY3R4LlFUeXBlXQ0KPiA+DQo+ ID4gKyAgICAgICAgdmZyU3RhdGVtZW50SGVhZGVyW2xvY2FsY3R4Lk5vZGVdICcsJw0KPiA+DQo+ ID4gKyAgICAgICAgKEY9J2ZsYWdzJyAnPScgdmZyTnVtZXJpY0ZsYWdzICcsJyk/DQo+ID4NCj4g PiArICAgICAgICAoJ2tleScgJz0nIE51bWJlciAnLCcpPw0KPiA+DQo+ID4gKyAgICAgICAgdmZy U2V0TWluTWF4U3RlcFtsb2NhbGN0eC5Ob2RlXQ0KPiA+DQo+ID4gKyAgICAgICAgdmZyU3RhdGVt ZW50UXVlc3Rpb25PcHRpb25MaXN0W2xvY2FsY3R4Lk5vZGVdDQo+ID4NCj4gPiArICAgICAgICAn ZW5kbnVtZXJpYycgJzsnDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2 ZnJTZXRNaW5NYXhTdGVwW05vZGVdIC8vIENJZnJNaW5NYXhTdGVwRGF0YQ0KPiA+DQo+ID4gKyAg ICA6ICAgJ21pbmltdW0nICc9JyAoTjE9Jy0nKT8gST1OdW1iZXIgJywnDQo+ID4NCj4gPiArICAg ICAgICAnbWF4aW11bScgJz0nIChOMj0nLScpPyBBPU51bWJlciAnLCcNCj4gPg0KPiA+ICsgICAg ICAgICgnc3RlcCcgJz0nIFM9TnVtYmVyICcsJyk/DQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICt2ZnJOdW1lcmljRmxhZ3MNCj4gPg0KPiA+ICtsb2NhbHNbSEZsYWdzPTAs IExGbGFncz0wLCBJc0Rpc3BsYXlTcGVjaWZpZWQ9RmFsc2UsIFVwZGF0ZVZhclR5cGU9RmFsc2Vd DQo+ID4NCj4gPiArICAgIDogICBudW1lcmljRmxhZ3NGaWVsZCAoJ3wnIG51bWVyaWNGbGFnc0Zp ZWxkKSoNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK251bWVyaWNGbGFn c0ZpZWxkDQo+ID4NCj4gPiArbG9jYWxzW0hGbGFnPTAsSXNTZXRUeXBlPUZhbHNlLElzRGlzcGxh eVNwZWNpZmllZD1GYWxzZV0NCj4gPg0KPiA+ICsgICAgOiAgIE49TnVtYmVyDQo+ID4NCj4gPiAr ICAgIHwgICAnTlVNRVJJQ19TSVpFXzEnDQo+ID4NCj4gPiArICAgIHwgICAnTlVNRVJJQ19TSVpF XzInDQo+ID4NCj4gPiArICAgIHwgICAnTlVNRVJJQ19TSVpFXzQnDQo+ID4NCj4gPiArICAgIHwg ICAnTlVNRVJJQ19TSVpFXzgnDQo+ID4NCj4gPiArICAgIHwgICAnRElTUExBWV9JTlRfREVDJw0K PiA+DQo+ID4gKyAgICB8ICAgJ0RJU1BMQVlfVUlOVF9ERUMnDQo+ID4NCj4gPiArICAgIHwgICAn RElTUExBWV9VSU5UX0hFWCcNCj4gPg0KPiA+ICsgICAgfCAgIHF1ZXN0aW9uaGVhZGVyRmxhZ3NG aWVsZA0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyU3RhdGVtZW50 T25lT2YNCj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1JZnJUcmVlTm9kZShFRklfSUZSX09ORV9PRl9P UCksDQo+ID4gR3VpZE5vZGU9SWZyVHJlZU5vZGUoRUZJX0lGUl9HVUlEX09QKSwNCj4gPiBRVHlw ZT1FRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX05PUk1BTF0NCj4gPg0KPiA+ICsgICAgOiAgICdv bmVvZicNCj4gPg0KPiA+ICsgICAgICAgIHZmclF1ZXN0aW9uQmFzZUluZm9bbG9jYWxjdHguTm9k ZSwgbG9jYWxjdHguUVR5cGVdDQo+ID4NCj4gPiArICAgICAgICB2ZnJTdGF0ZW1lbnRIZWFkZXJb bG9jYWxjdHguTm9kZV0gJywnDQo+ID4NCj4gPiArICAgICAgICAoRj0nZmxhZ3MnICc9JyB2ZnJP bmVvZkZsYWdzRmllbGQgJywnKT8gLy8NCj4gPg0KPiA+ICsgICAgICAgICh2ZnJTZXRNaW5NYXhT dGVwW2xvY2FsY3R4Lk5vZGVdKT8NCj4gPg0KPiA+ICsgICAgICAgIHZmclN0YXRlbWVudFF1ZXN0 aW9uT3B0aW9uTGlzdFtsb2NhbGN0eC5Ob2RlXQ0KPiA+DQo+ID4gKyAgICAgICAgJ2VuZG9uZW9m JyAnOycNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3Zmck9uZW9mRmxh Z3NGaWVsZA0KPiA+DQo+ID4gK2xvY2Fsc1tIRmxhZ3M9MCwgTEZsYWdzPTAsIFVwZGF0ZVZhclR5 cGU9RmFsc2VdDQo+ID4NCj4gPiArICAgIDogICBudW1lcmljRmxhZ3NGaWVsZCAoJ3wnIG51bWVy aWNGbGFnc0ZpZWxkKSoNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3Zm clN0YXRlbWVudFN0cmluZ1R5cGUNCj4gPg0KPiA+ICtsb2NhbHNbTm9kZV0NCj4gPg0KPiA+ICsg ICAgOiAgIHZmclN0YXRlbWVudFN0cmluZyB8IHZmclN0YXRlbWVudFBhc3N3b3JkDQo+ID4NCj4g PiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdGF0ZW1lbnRTdHJpbmcNCj4gPg0K PiA+ICtsb2NhbHNbTm9kZT1JZnJUcmVlTm9kZShFRklfSUZSX1NUUklOR19PUCksDQo+ID4gUVR5 cGU9RUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9OT1JNQUxdDQo+ID4NCj4gPiArICAgIDogICAn c3RyaW5nJw0KPiA+DQo+ID4gKyAgICAgICAgdmZyUXVlc3Rpb25IZWFkZXJbbG9jYWxjdHguTm9k ZSwgbG9jYWxjdHguUVR5cGVdICcsJw0KPiA+DQo+ID4gKyAgICAgICAgKEY9J2ZsYWdzJyAnPScg dmZyU3RyaW5nRmxhZ3NGaWVsZCAnLCcpPw0KPiA+DQo+ID4gKyAgICAgICAgKCdrZXknICc9JyBO dW1iZXIgJywnKT8NCj4gPg0KPiA+ICsgICAgICAgIE1pbj0nbWluc2l6ZScgJz0nIE51bWJlciAn LCcNCj4gPg0KPiA+ICsgICAgICAgIE1heD0nbWF4c2l6ZScgJz0nIE51bWJlciAnLCcNCj4gPg0K PiA+ICsgICAgICAgIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdFtsb2NhbGN0eC5Ob2Rl XQ0KPiA+DQo+ID4gKyAgICAgICAgJ2VuZHN0cmluZycgJzsnDQo+ID4NCj4gPiArICAgIDsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdHJpbmdGbGFnc0ZpZWxkDQo+ID4NCj4gPiArbG9jYWxz W0hGbGFncz0wLCBMRmxhZ3M9MF0NCj4gPg0KPiA+ICsgICAgOiAgIHN0cmluZ0ZsYWdzRmllbGQg KCd8JyBzdHJpbmdGbGFnc0ZpZWxkKSoNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gK3N0cmluZ0ZsYWdzRmllbGQNCj4gPg0KPiA+ICtsb2NhbHNbSEZsYWc9MCwgTEZsYWc9 MF0NCj4gPg0KPiA+ICsgICAgOiAgIE49TnVtYmVyDQo+ID4NCj4gPiArICAgIHwgICAnTVVMVElf TElORScNCj4gPg0KPiA+ICsgICAgfCAgIHF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZA0KPiA+DQo+ ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyU3RhdGVtZW50UGFzc3dvcmQNCj4g Pg0KPiA+ICtsb2NhbHNbTm9kZT1JZnJUcmVlTm9kZShFRklfSUZSX1BBU1NXT1JEX09QKSwNCj4g PiBRVHlwZT1FRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX05PUk1BTF0NCj4gPg0KPiA+ICsgICAg OiAgICdwYXNzd29yZCcNCj4gPg0KPiA+ICsgICAgICAgIHZmclF1ZXN0aW9uSGVhZGVyW2xvY2Fs Y3R4Lk5vZGUsIGxvY2FsY3R4LlFUeXBlXScsJw0KPiA+DQo+ID4gKyAgICAgICAgKEY9J2ZsYWdz JyAnPScgdmZyUGFzc3dvcmRGbGFnc0ZpZWxkICcsJyk/DQo+ID4NCj4gPiArICAgICAgICAoJ2tl eScgJz0nIE51bWJlciAnLCcpPw0KPiA+DQo+ID4gKyAgICAgICAgTWluPSdtaW5zaXplJyAnPScg TnVtYmVyICcsJw0KPiA+DQo+ID4gKyAgICAgICAgTWF4PSdtYXhzaXplJyAnPScgTnVtYmVyICcs Jw0KPiA+DQo+ID4gKyAgICAgICAgKCdlbmNvZGluZycgJz0nIE51bWJlciAnLCcpPw0KPiA+DQo+ ID4gKyAgICAgICAgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0W2xvY2FsY3R4Lk5vZGVd DQo+ID4NCj4gPiArICAgICAgICAnZW5kcGFzc3dvcmQnICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyUGFzc3dvcmRGbGFnc0ZpZWxkDQo+ID4NCj4gPiArbG9j YWxzW0hGbGFncz0wXQ0KPiA+DQo+ID4gKyAgICA6ICAgcGFzc3dvcmRGbGFnc0ZpZWxkKCd8JyBw YXNzd29yZEZsYWdzRmllbGQpKg0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArcGFzc3dvcmRGbGFnc0ZpZWxkDQo+ID4NCj4gPiArbG9jYWxzW0hGbGFnPTBdDQo+ID4NCj4g PiArICAgIDogICBOdW1iZXINCj4gPg0KPiA+ICsgICAgfCAgIHF1ZXN0aW9uaGVhZGVyRmxhZ3NG aWVsZA0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyU3RhdGVtZW50 T3JkZXJlZExpc3QNCj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1JZnJUcmVlTm9kZShFRklfSUZSX09S REVSRURfTElTVF9PUCksDQo+ID4gUVR5cGU9RUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9OT1JN QUxdDQo+ID4NCj4gPiArICAgIDogICAnb3JkZXJlZGxpc3QnDQo+ID4NCj4gPiArICAgICAgICB2 ZnJRdWVzdGlvbkhlYWRlcltsb2NhbGN0eC5Ob2RlLCBsb2NhbGN0eC5RVHlwZV0gJywnDQo+ID4N Cj4gPiArICAgICAgICAoTT0nbWF4Y29udGFpbmVycycgJz0nIE51bWJlciAnLCcpPw0KPiA+DQo+ ID4gKyAgICAgICAgKEY9J2ZsYWdzJyAnPScgdmZyT3JkZXJlZExpc3RGbGFncyAnLCcpPw0KPiA+ DQo+ID4gKyAgICAgICAgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0W2xvY2FsY3R4Lk5v ZGVdDQo+ID4NCj4gPiArICAgICAgICAnZW5kbGlzdCcgJzsnDQo+ID4NCj4gPiArICAgIDsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJPcmRlcmVkTGlzdEZsYWdzDQo+ID4NCj4gPiArbG9jYWxz W0hGbGFncz0wLCBMRmxhZ3M9MF0NCj4gPg0KPiA+ICsgICAgOiAgIG9yZGVyZWRsaXN0RmxhZ3NG aWVsZCAoJ3wnIG9yZGVyZWRsaXN0RmxhZ3NGaWVsZCkqDQo+ID4NCj4gPiArICAgIDsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICtvcmRlcmVkbGlzdEZsYWdzRmllbGQNCj4gPg0KPiA+ICtsb2NhbHNb SEZsYWc9MCwgTEZsYWc9MF0NCj4gPg0KPiA+ICsgICAgOiAgIE51bWJlcg0KPiA+DQo+ID4gKyAg ICB8ICAgJ1VOSVFVRScNCj4gPg0KPiA+ICsgICAgfCAgICdOT0VNUFRZJw0KPiA+DQo+ID4gKyAg ICB8ICAgcXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICt2ZnJTdGF0ZW1lbnREYXRlDQo+ID4NCj4gPiArbG9jYWxzW05vZGU9SWZy VHJlZU5vZGUoRUZJX0lGUl9EQVRFX09QKSwNCj4gPiBRVHlwZT1FRklfUVVFU0lPTl9UWVBFLlFV RVNUSU9OX0RBVEUsIFZhbD1FRklfSElJX0RBVEUoKV0NCj4gPg0KPiA+ICsgICAgOiAgICdkYXRl Jw0KPiA+DQo+ID4gKyAgICAgICAgKCAgICggICB2ZnJRdWVzdGlvbkhlYWRlcltsb2NhbGN0eC5O b2RlLCBsb2NhbGN0eC5RVHlwZV0gJywnDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIChGMT0n ZmxhZ3MnICc9JyB2ZnJEYXRlRmxhZ3MgJywnKT8NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg dmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0W2xvY2FsY3R4Lk5vZGVdDQo+ID4NCj4gPiAr ICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHwNCj4gPg0KPiA+ICsgICAgICAg ICAgICAoICAgJ3llYXInICd2YXJpZCcgJz0nIFN0cmluZ0lkZW50aWZpZXIgJy4nIFN0cmluZ0lk ZW50aWZpZXIgJywnDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICdwcm9tcHQnICc9JyAnU1RS SU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg J2hlbHAnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgbWluTWF4RGF0ZVN0ZXBEZWZhdWx0W2xvY2FsY3R4Lk5vZGUsIGxvY2Fs Y3R4LlZhbCwgMF0NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgJ21vbnRoJyAndmFyaWQnICc9 JyBTdHJpbmdJZGVudGlmaWVyICcuJyBTdHJpbmdJZGVudGlmaWVyICcsJw0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAncHJvbXB0JyAnPScgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAnKScg JywnDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICdoZWxwJyAnPScgJ1NUUklOR19UT0tFTicg JygnIE51bWJlciAnKScgJywnDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIG1pbk1heERhdGVT dGVwRGVmYXVsdFtsb2NhbGN0eC5Ob2RlLCBsb2NhbGN0eC5WYWwsIDFdDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICdkYXknICd2YXJpZCcgJz0nIFN0cmluZ0lkZW50aWZpZXIgJy4nIFN0cmlu Z0lkZW50aWZpZXIgJywnDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICdwcm9tcHQnICc9JyAn U1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgJ2hlbHAnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgbWluTWF4RGF0ZVN0ZXBEZWZhdWx0W2xvY2FsY3R4Lk5vZGUsIGxv Y2FsY3R4LlZhbCwgMl0NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgKEYyPSdmbGFncycgJz0n IHZmckRhdGVGbGFncyAnLCcpPw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAodmZyU3RhdGVt ZW50SW5jb25zaXN0ZW50SWYpKg0KPiA+DQo+ID4gKyAgICAgICAgICAgICkNCj4gPg0KPiA+ICsg ICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICdlbmRkYXRlJyAnOycNCj4gPg0KPiA+ICsgICAg Ow0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK21pbk1heERhdGVTdGVwRGVmYXVsdFtOb2RlLCBEYXRl LCBLZXlWYWx1ZV0NCj4gPg0KPiA+ICsgICAgOiAgICdtaW5pbXVtJyAnPScgTnVtYmVyICcsJw0K PiA+DQo+ID4gKyAgICAgICAgJ21heGltdW0nICc9JyBOdW1iZXIgJywnDQo+ID4NCj4gPiArICAg ICAgICAoJ3N0ZXAnICc9JyBOdW1iZXIgJywnKT8NCj4gPg0KPiA+ICsgICAgICAgICgnZGVmYXVs dCcgJz0nIE49TnVtYmVyICcsJyk/DQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICt2ZnJEYXRlRmxhZ3MNCj4gPg0KPiA+ICtsb2NhbHNbTEZsYWdzPTBdDQo+ID4NCj4gPiAr ICAgIDogICBkYXRlRmxhZ3NGaWVsZCAoJ3wnIGRhdGVGbGFnc0ZpZWxkKSoNCj4gPg0KPiA+ICsg ICAgOw0KPiA+DQo+ID4gK2RhdGVGbGFnc0ZpZWxkDQo+ID4NCj4gPiArbG9jYWxzW0xGbGFnPTBd DQo+ID4NCj4gPiArICAgIDogICBOdW1iZXINCj4gPg0KPiA+ICsgICAgfCAgICdZRUFSX1NVUFBS RVNTJw0KPiA+DQo+ID4gKyAgICB8ICAgJ01PTlRIX1NVUFBSRVNTJw0KPiA+DQo+ID4gKyAgICB8 ICAgJ0RBWV9TVVBQUkVTUycNCj4gPg0KPiA+ICsgICAgfCAgICdTVE9SQUdFX05PUk1BTCcNCj4g Pg0KPiA+ICsgICAgfCAgICdTVE9SQUdFX1RJTUUnDQo+ID4NCj4gPiArICAgIHwgICAnU1RPUkFH RV9XQUtFVVAnDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdGF0 ZW1lbnRUaW1lDQo+ID4NCj4gPiArbG9jYWxzW05vZGU9SWZyVHJlZU5vZGUoRUZJX0lGUl9USU1F X09QKSwNCj4gPiBRVHlwZT1FRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX1RJTUUsICBWYWw9RUZJ X0hJSV9USU1FKCldDQo+ID4NCj4gPiArICAgIDogICAndGltZScNCj4gPg0KPiA+ICsgICAgICAg ICggICAoICAgdmZyUXVlc3Rpb25IZWFkZXJbbG9jYWxjdHguTm9kZSwgbG9jYWxjdHguUVR5cGVd ICcsJw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAoRjE9J2ZsYWdzJyAnPScgdmZyVGltZUZs YWdzICcsJyk/DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHZmclN0YXRlbWVudFF1ZXN0aW9u T3B0aW9uTGlzdFtsb2NhbGN0eC5Ob2RlXQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICkNCj4gPg0K PiA+ICsgICAgICAgICAgICB8DQo+ID4NCj4gPiArICAgICAgICAgICAgKA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAnaG91cicgJ3ZhcmlkJyAnPScgU3RyaW5nSWRlbnRpZmllciAnLicgU3Ry aW5nSWRlbnRpZmllciAnLCcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgJ3Byb21wdCcgJz0n ICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAnaGVscCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBtaW5NYXhUaW1lU3RlcERlZmF1bHRbbG9jYWxjdHguTm9kZSwg bG9jYWxjdHguVmFsLCAwXQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAnbWludXRlJyAndmFy aWQnICc9JyBTdHJpbmdJZGVudGlmaWVyICcuJyBTdHJpbmdJZGVudGlmaWVyICcsJw0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAncHJvbXB0JyAnPScgJ1NUUklOR19UT0tFTicgJygnIE51bWJl ciAnKScgJywnDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICdoZWxwJyAnPScgJ1NUUklOR19U T0tFTicgJygnIE51bWJlciAnKScgJywnDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIG1pbk1h eFRpbWVTdGVwRGVmYXVsdFtsb2NhbGN0eC5Ob2RlLCBsb2NhbGN0eC5WYWwsIDFdDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICdzZWNvbmQnICd2YXJpZCcgJz0nIFN0cmluZ0lkZW50aWZpZXIg Jy4nIFN0cmluZ0lkZW50aWZpZXIgJywnDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICdwcm9t cHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgJ2hlbHAnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbWluTWF4VGltZVN0ZXBEZWZhdWx0W2xvY2FsY3R4 Lk5vZGUsIGxvY2FsY3R4LlZhbCwgMl0NCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgKEYyPSdm bGFncycgJz0nIHZmclRpbWVGbGFncyAnLCcpPw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAo dmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWYpKg0KPiA+DQo+ID4gKyAgICAgICAgICAgICkNCj4g Pg0KPiA+ICsgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICdlbmR0aW1lJyAnOycNCj4gPg0K PiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK21pbk1heFRpbWVTdGVwRGVmYXVsdFtO b2RlLCBUaW1lLCBLZXlWYWx1ZV0NCj4gPg0KPiA+ICsgICAgOiAgICdtaW5pbXVtJyAnPScgTnVt YmVyICcsJw0KPiA+DQo+ID4gKyAgICAgICAgJ21heGltdW0nICc9JyBOdW1iZXIgJywnDQo+ID4N Cj4gPiArICAgICAgICAoJ3N0ZXAnICc9JyBOdW1iZXIgJywnKT8NCj4gPg0KPiA+ICsgICAgICAg ICgnZGVmYXVsdCcgJz0nIE49TnVtYmVyICcsJyk/DQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICt2ZnJUaW1lRmxhZ3MNCj4gPg0KPiA+ICtsb2NhbHNbTEZsYWdzPTBdDQo+ ID4NCj4gPiArICAgIDogICB0aW1lRmxhZ3NGaWVsZCAoJ3wnIHRpbWVGbGFnc0ZpZWxkKSoNCj4g Pg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3RpbWVGbGFnc0ZpZWxkDQo+ID4N Cj4gPiArbG9jYWxzW0xGbGFnPTBdDQo+ID4NCj4gPiArICAgIDogICBOdW1iZXINCj4gPg0KPiA+ ICsgICAgfCAgICdIT1VSX1NVUFBSRVNTJw0KPiA+DQo+ID4gKyAgICB8ICAgJ01JTlVURV9TVVBQ UkVTUycNCj4gPg0KPiA+ICsgICAgfCAgICdTRUNPTkRfU1VQUFJFU1MnDQo+ID4NCj4gPiArICAg IHwgICAnU1RPUkFHRV9OT1JNQUwnDQo+ID4NCj4gPiArICAgIHwgICAnU1RPUkFHRV9USU1FJw0K PiA+DQo+ID4gKyAgICB8ICAgJ1NUT1JBR0VfV0FLRVVQJw0KPiA+DQo+ID4gKyAgICA7DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArdmZyU3RhdGVtZW50Q29uZGl0aW9uYWwNCj4gPg0KPiA+ICtsb2Nh bHNbTm9kZV0NCj4gPg0KPiA+ICsgICAgOiAgIHZmclN0YXRlbWVudERpc2FibGVJZlN0YXQNCj4g Pg0KPiA+ICsgICAgfCAgIHZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0IC8vZW5oYW5jZSB0byBi ZSBjb21wYXRpYmxlIGZvcg0KPiBmcmFtZXdvcmsNCj4gPiBlbmRpZg0KPiA+DQo+ID4gKyAgICB8 ICAgdmZyU3RhdGVtZW50R3JheU91dElmU3RhdA0KPiA+DQo+ID4gKyAgICB8ICAgdmZyU3RhdGVt ZW50SW5jb25zaXN0ZW50SWZTdGF0ICAgLy90byBiZSBjb21wYXRpYmxlIGZvciBmcmFtZXdvcmsN Cj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKy8vIG5ldyBzZWVtcyB0byBi ZSB0aGUgc2FtZSBhcyB0aGUgb2xkLCB3aHkgbmV3Pw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudENv bmRpdGlvbmFsTmV3DQo+ID4NCj4gPiArbG9jYWxzW05vZGVdDQo+ID4NCj4gPiArICAgIDogICB2 ZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0DQo+ID4NCj4gPiArICAgICAgICB2ZnJTdGF0ZW1lbnRT dXBwcmVzc0lmU3RhdE5ldw0KPiA+DQo+ID4gKyAgICAgICAgdmZyU3RhdGVtZW50R3JheU91dElm U3RhdE5ldw0KPiA+DQo+ID4gKyAgICAgICAgdmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0 ICAgLy90byBiZSBjb21wYXRpYmxlIGZvciBmcmFtZXdvcmsNCj4gPg0KPiA+ICsgICAgOw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0DQo+ID4NCj4gPiAr bG9jYWxzW05vZGVdDQo+ID4NCj4gPiArICAgIDogICB2ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3Rh dE5ldw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyU3RhdGVtZW50 R3JheU91dElmU3RhdA0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlXQ0KPiA+DQo+ID4gKyAgICA6ICAg dmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5ldw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArdmZyU3RhdGVtZW50U3RhdExpc3QNCj4gPg0KPiA+ICtsb2NhbHNbTm9kZV0N Cj4gPg0KPiA+ICsgICAgOiAgIHZmclN0YXRlbWVudFN0YXQNCj4gPg0KPiA+ICsgICAgfCAgIHZm clN0YXRlbWVudFF1ZXN0aW9ucw0KPiA+DQo+ID4gKyAgICB8ICAgdmZyU3RhdGVtZW50Q29uZGl0 aW9uYWwNCj4gPg0KPiA+ICsgICAgfCAgIHZmclN0YXRlbWVudExhYmVsDQo+ID4NCj4gPiArICAg IHwgICB2ZnJTdGF0ZW1lbnRFeHRlbnNpb24NCj4gPg0KPiA+ICsgICAgfCAgIHZmclN0YXRlbWVu dEludmFsaWQNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRl bWVudFN0YXRMaXN0T2xkDQo+ID4NCj4gPiArICAgIDogICB2ZnJTdGF0ZW1lbnRTdGF0DQo+ID4N Cj4gPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRRdWVzdGlvbnMNCj4gPg0KPiA+ICsgICAgfCAgIHZm clN0YXRlbWVudExhYmVsDQo+ID4NCj4gPiArICAvLyBKdXN0IGZvciBmcmFtZXdvcmsgdmZyIGNv bXBhdGliaWxpdHkNCj4gPg0KPiA+ICsgICAgfCAgIHZmclN0YXRlbWVudEludmFsaWQNCj4gPg0K PiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudERpc2FibGVJZlN0 YXQNCj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1JZnJUcmVlTm9kZShFRklfSUZSX0RJU0FCTEVfSUZf T1ApXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ2Rpc2FibGVpZicgdmZyU3RhdGVtZW50RXhwcmVzc2lv bltsb2NhbGN0eC5Ob2RlXSAnOycNCj4gPg0KPiA+ICsgICAgICAgICh2ZnJTdGF0ZW1lbnRTdGF0 TGlzdCkqDQo+ID4NCj4gPiArICAgICAgICAnZW5kaWYnICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArLy8gQ29tcGF0aWJsZSBmb3IgZnJhbWV3 b3JrIHZmciBmaWxlDQo+ID4NCj4gPiArdmZyU3RhdGVtZW50Z3JheW91dElmU3VwcHJlc3NJZg0K PiA+DQo+ID4gK2xvY2Fsc1tOb2RlXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ3N1cHByZXNzaWYnDQo+ ID4NCj4gPiArICAgICAgICAoJ2ZsYWdzJyAnPScgZmxhZ3NGaWVsZCAoJ3wnIGZsYWdzRmllbGQp KiAnLCcpPw0KPiA+DQo+ID4gKyAgICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvbltsb2NhbGN0 eC5Ob2RlXSAnOycNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0 YXRlbWVudHN1cHByZXNzSWZHcmF5T3V0SWYNCj4gPg0KPiA+ICtsb2NhbHNbTm9kZV0NCj4gPg0K PiA+ICsgICAgOiAgICdncmF5b3V0aWYnDQo+ID4NCj4gPiArICAgICAgICAoJ2ZsYWdzJyAnPScg ZmxhZ3NGaWVsZCAoJ3wnIGZsYWdzRmllbGQpKiAnLCcpPw0KPiA+DQo+ID4gKyAgICAgICAgdmZy U3RhdGVtZW50RXhwcmVzc2lvbltsb2NhbGN0eC5Ob2RlXSAnOycNCj4gPg0KPiA+ICsgICAgOw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0TmV3DQo+ID4N Cj4gPiArbG9jYWxzW05vZGU9SWZyVHJlZU5vZGUoRUZJX0lGUl9TVVBQUkVTU19JRl9PUCldDQo+ ID4NCj4gPiArICAgIDogICAnc3VwcHJlc3NpZicNCj4gPg0KPiA+ICsgICAgICAgICgnZmxhZ3Mn ICc9JyBmbGFnc0ZpZWxkICgnfCcgZmxhZ3NGaWVsZCkqICcsJyk/DQo+ID4NCj4gPiArICAgICAg ICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uW2xvY2FsY3R4Lk5vZGVdICc7Jw0KPiA+DQo+ID4gKyAg ICAgICAgKHZmclN0YXRlbWVudFN0YXRMaXN0KSoNCj4gPg0KPiA+ICsgICAgICAgICdlbmRpZicg JzsnDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdGF0ZW1lbnRH cmF5T3V0SWZTdGF0TmV3DQo+ID4NCj4gPiArbG9jYWxzW05vZGU9SWZyVHJlZU5vZGUoRUZJX0lG Ul9HUkFZX09VVF9JRl9PUCldDQo+ID4NCj4gPiArICAgIDogICAnZ3JheW91dGlmJw0KPiA+DQo+ ID4gKyAgICAgICAgKCdmbGFncycgJz0nIGZsYWdzRmllbGQgKCd8JyBmbGFnc0ZpZWxkKSogJywn KT8NCj4gPg0KPiA+ICsgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb25bbG9jYWxjdHguTm9k ZV0gJzsnDQo+ID4NCj4gPiArICAgICAgICAodmZyU3RhdGVtZW50U3RhdExpc3QpKg0KPiA+DQo+ ID4gKyAgICAgICAgJ2VuZGlmJyAnOycNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gK3ZmclN0YXRlbWVudEluY29uc2lzdGVudElmU3RhdA0KPiA+DQo+ID4gK2xvY2Fsc1tO b2RlPUlmclRyZWVOb2RlKEVGSV9JRlJfSU5DT05TSVNURU5UX0lGX09QKV0NCj4gPg0KPiA+ICsg ICAgOiAgICdpbmNvbnNpc3RlbnRpZicNCj4gPg0KPiA+ICsgICAgICAgICdwcm9tcHQnICc9JyAn U1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCj4gPg0KPiA+ICsgICAgICAgICgnZmxh Z3MnICc9JyBmbGFnc0ZpZWxkICgnfCcgZmxhZ3NGaWVsZCkqICcsJyk/DQo+ID4NCj4gPiArICAg ICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uW2xvY2FsY3R4Lk5vZGVdDQo+ID4NCj4gPiArICAg ICAgICAnZW5kaWYnICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr dmZyU3RhdGVtZW50SW52YWxpZCAvLyBmb3IgY29tcGF0aWJpbGl0eQ0KPiA+DQo+ID4gKyAgICA6 ICAgdmZyU3RhdGVtZW50SW52YWxpZEhpZGRlbg0KPiA+DQo+ID4gKyAgICB8ICAgdmZyU3RhdGVt ZW50SW52YWxpZEludmVudG9yeQ0KPiA+DQo+ID4gKyAgICB8ICAgdmZyU3RhdGVtZW50SW52YWxp ZFNhdmVSZXN0b3JlRGVmYXVsdHMNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gK3ZmclN0YXRlbWVudEludmFsaWRIaWRkZW4NCj4gPg0KPiA+ICsgICAgOiAgICdoaWRkZW4n DQo+ID4NCj4gPiArICAgICAgICAndmFsdWUnICc9JyBOdW1iZXIgJywnDQo+ID4NCj4gPiArICAg ICAgICAna2V5JyAnPScgTnVtYmVyICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArdmZyU3RhdGVtZW50SW52YWxpZEludmVudG9yeQ0KPiA+DQo+ID4gKyAgICA6ICAg J2ludmVudG9yeScNCj4gPg0KPiA+ICsgICAgICAgICdoZWxwJyAnPScgJ1NUUklOR19UT0tFTicg JygnIE51bWJlciAnKScgJywnDQo+ID4NCj4gPiArICAgICAgICAndGV4dCcgJz0nICdTVFJJTkdf VE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0KPiA+DQo+ID4gKyAgICAgICAgKCd0ZXh0JyAnPScg J1NUUklOR19UT0tFTicgJygnIE51bWJlciAnKScpPw0KPiA+DQo+ID4gKyAgICAgICAgJzsnDQo+ ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdGF0ZW1lbnRJbnZhbGlk U2F2ZVJlc3RvcmVEZWZhdWx0cw0KPiA+DQo+ID4gKyAgICA6ICAgKCAgICdzYXZlJw0KPiA+DQo+ ID4gKyAgICAgICAgfCAgICdyZXN0b3JlJw0KPiA+DQo+ID4gKyAgICAgICAgKQ0KPiA+DQo+ID4g KyAgICAgICAgJ2RlZmF1bHRzJyAnLCcNCj4gPg0KPiA+ICsgICAgICAgICdmb3JtaWQnICc9JyBO dW1iZXIgJywnDQo+ID4NCj4gPiArICAgICAgICAncHJvbXB0JyAnPScgJ1NUUklOR19UT0tFTicg JygnIE51bWJlciAnKScgJywnDQo+ID4NCj4gPiArICAgICAgICAnaGVscCcgJz0nICdTVFJJTkdf VE9LRU4nICcoJyBOdW1iZXIgJyknDQo+ID4NCj4gPiArICAgICAgICAoJywnICdmbGFncycgJz0n IGZsYWdzRmllbGQgKCd8JyBmbGFnc0ZpZWxkKSopPw0KPiA+DQo+ID4gKyAgICAgICAgKCcsJyAn a2V5JyAnPScgTnVtYmVyKT8NCj4gPg0KPiA+ICsgICAgICAgICc7Jw0KPiA+DQo+ID4gKyAgICA7 DQo+ID4NCj4gPiArdmZyU3RhdGVtZW50TGFiZWwNCj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1JZnJU cmVlTm9kZShFRklfSUZSX0dVSURfT1ApXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ2xhYmVsJyBOdW1i ZXIgJzsnDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJTdGF0ZW1l bnRCYW5uZXINCj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1JZnJUcmVlTm9kZShFRklfSUZSX0dVSURf T1ApXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ2Jhbm5lcicgKCcsJyk/DQo+ID4NCj4gPiArICAgICAg ICAndGl0bGUnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCj4gPg0KPiA+ ICsgICAgICAgICggICAoICAgJ2xpbmUnIE51bWJlciAnLCcNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgJ2FsaWduJyAoJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnKSAnOycNCj4gPg0KPiA+ ICsgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAgICAgfA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICggICAndGltZW91dCcgJz0nIE51bWJlciAnOycNCj4gPg0KPiA+ICsgICAgICAgICAg ICApDQo+ID4NCj4gPiArICAgICAgICApDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICt2ZnJTdGF0ZW1lbnRFeHRlbnNpb24NCj4gPg0KPiA+ICtsb2NhbHNbTm9kZT1JZnJU cmVlTm9kZShFRklfSUZSX0dVSURfT1ApLCBCdWZmZXI9Tm9uZSwgU2l6ZT0wLA0KPiA+IFR5cGVO YW1lPScnLCBUeXBlU2l6ZT0wLCBJc1N0cnVjdD1GYWxzZSwgQXJyYXlOdW09MF0NCj4gPg0KPiA+ ICsgICAgOiAgICdndWlkb3AnDQo+ID4NCj4gPiArICAgICAgICAnZ3VpZCcgJz0nIGd1aWREZWZp bml0aW9uDQo+ID4NCj4gPiArICAgICAgICAoICAgJywnIEQ9J2RhdGF0eXBlJyAnPScNCj4gPg0K PiA+ICsgICAgICAgICAgICAoICAgJ1VJTlQ2NCcgKCdbJyBOdW1iZXIgJ10nKT8NCj4gPg0KPiA+ ICsgICAgICAgICAgICB8ICAgJ1VJTlQzMicgKCdbJyBOdW1iZXIgJ10nKT8NCj4gPg0KPiA+ICsg ICAgICAgICAgICB8ICAgJ1VJTlQxNicgKCdbJyBOdW1iZXIgJ10nKT8NCj4gPg0KPiA+ICsgICAg ICAgICAgICB8ICAgJ1VJTlQ4JyAoJ1snIE51bWJlciAnXScpPw0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHwgICAnQk9PTEVBTicgKCdbJyBOdW1iZXIgJ10nKT8NCj4gPg0KPiA+ICsgICAgICAgICAg ICB8ICAgJ0VGSV9TVFJJTkdfSUQnICgnWycgTnVtYmVyICddJyk/DQo+ID4NCj4gPiArICAgICAg ICAgICAgfCAgICdFRklfSElJX0RBVEUnICgnWycgTnVtYmVyICddJyk/DQo+ID4NCj4gPiArICAg ICAgICAgICAgfCAgICdFRklfSElJX1RJTUUnICgnWycgTnVtYmVyICddJyk/DQo+ID4NCj4gPiAr ICAgICAgICAgICAgfCAgICdFRklfSElJX1JFRicgKCdbJyBOdW1iZXIgJ10nKT8NCj4gPg0KPiA+ ICsgICAgICAgICAgICB8ICAgU3RyaW5nSWRlbnRpZmllciAoJ1snIE51bWJlciAnXScpPw0KPiA+ DQo+ID4gKyAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICAgICAodmZyRXh0ZW5zaW9u RGF0YSkqDQo+ID4NCj4gPiArICAgICAgICApPw0KPiA+DQo+ID4gKyAgICAgICAgKA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICcsJyAodmZyU3RhdGVtZW50RXh0ZW5zaW9uKSoNCj4gPg0KPiA+ICsg ICAgICAgICAgICAnZW5kZ3VpZG9wJw0KPiA+DQo+ID4gKyAgICAgICAgKT8NCj4gPg0KPiA+ICsg ICAgICAgICc7Jw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArdmZyRXh0ZW5zaW9uRGF0YQ0KPiA+DQo+ID4gK2xvY2Fsc1tURk5hbWU9JycsIEZOYW1l PScnLCBURlZhbHVlPU5vbmVdDQo+ID4NCj4gPiArICAgIDogICAnLCcgJ2RhdGEnICgnWycgST1O dW1iZXIgJ10nKT8NCj4gPg0KPiA+ICsgICAgICAgICggJy4nIGFycmF5TmFtZSkqICAnPScgTj1O dW1iZXINCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g K3ZmclN0YXRlbWVudE1vZGFsDQo+ID4NCj4gPiArbG9jYWxzW05vZGVdDQo+ID4NCj4gPiArICAg IDogdmZyTW9kYWxUYWcgJzsnDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICt2ZnJNb2RhbFRhZw0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlPUlmclRyZWVOb2RlKEVGSV9JRlJf TU9EQUxfVEFHX09QKV0NCj4gPg0KPiA+ICsgICAgOiAgICdtb2RhbCcNCj4gPg0KPiA+ICsgICAg Ow0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmclN0YXRlbWVudEV4cHJlc3Npb25bUGFyZW50Tm9k ZV0NCj4gPg0KPiA+ICtsb2NhbHNbRXhwSW5mbz1FeHByZXNzaW9uSW5mbygpLCBOb2Rlcz1bXV0N Cj4gPg0KPiA+ICsgICAgOiAgIGFuZFRlcm1bbG9jYWxjdHguRXhwSW5mb10gKEw9J09SJyBhbmRU ZXJtW2xvY2FsY3R4LkV4cEluZm9dKSoNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gK3ZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJbUGFyZW50Tm9kZXNdDQo+ID4NCj4gPiAr bG9jYWxzW0V4cEluZm89RXhwcmVzc2lvbkluZm8oKSwgTm9kZXM9W11dDQo+ID4NCj4gPiArICAg IDogICBhbmRUZXJtW2xvY2FsY3R4LkV4cEluZm9dICgnT1InIGFuZFRlcm1bbG9jYWxjdHguRXhw SW5mb10pKg0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArYW5kVGVybVtF eHBJbmZvXQ0KPiA+DQo+ID4gK2xvY2Fsc1tOb2Rlcz1bXSwgTGluZV0NCj4gPg0KPiA+ICsgICAg OiAgIGJpdHdpc2VvclRlcm1bRXhwSW5mb10gKEw9J0FORCcgYml0d2lzZW9yVGVybVtFeHBJbmZv XSkqDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtiaXR3aXNlb3JUZXJt W0V4cEluZm9dDQo+ID4NCj4gPiArbG9jYWxzW05vZGVzPVtdLCBMaW5lXQ0KPiA+DQo+ID4gKyAg ICA6ICAgYml0d2lzZWFuZFRlcm1bRXhwSW5mb10gKEw9J3wnIGJpdHdpc2VhbmRUZXJtW0V4cElu Zm9dKSoNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g K2JpdHdpc2VhbmRUZXJtW0V4cEluZm9dDQo+ID4NCj4gPiArbG9jYWxzW05vZGVzPVtdLCBMaW5l XQ0KPiA+DQo+ID4gKyAgICA6ICAgZXF1YWxUZXJtW0V4cEluZm9dIChMPScmJyBlcXVhbFRlcm1b RXhwSW5mb10pKg0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArZXF1YWxUZXJtW0V4cEluZm9dDQo+ID4NCj4gPiArbG9jYWxzW05vZGVzPVtdLCBMaW5l XQ0KPiA+DQo+ID4gKyAgICA6ICAgY29tcGFyZVRlcm1bRXhwSW5mb10NCj4gPg0KPiA+ICsgICAg ICAgIChlcXVhbFRlcm1TdXBwbGVtZW50YXJ5W0V4cEluZm9dKSoNCj4gPg0KPiA+ICsgICAgOw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2VxdWFsVGVybVN1cHBsZW1lbnRhcnlb RXhwSW5mb10NCj4gPg0KPiA+ICtsb2NhbHNbTm9kZXM9W11dDQo+ID4NCj4gPiArICAgIDogICAo Jz09JyBjb21wYXJlVGVybVtFeHBJbmZvXSkgICMgZXF1YWxUZXJtRXF1YWxSdWxlDQo+ID4NCj4g PiArICAgICAgICB8DQo+ID4NCj4gPiArICAgICAgICAoJyE9JyBjb21wYXJlVGVybVtFeHBJbmZv XSkgIyBlcXVhbFRlcm1Ob3RFcXVhbFJ1bGUNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gK2NvbXBhcmVUZXJtW0V4cEluZm9dDQo+ID4NCj4gPiArbG9jYWxzW05vZGVzPVtd XQ0KPiA+DQo+ID4gKyAgICA6ICAgc2hpZnRUZXJtW0V4cEluZm9dDQo+ID4NCj4gPiArICAgICAg ICAoY29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5W0V4cEluZm9dKSoNCj4gPg0KPiA+ICsgICAgOw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gK2NvbXBhcmVUZXJtU3VwcGxlbWVudGFyeVtFeHBJbmZvXQ0K PiA+DQo+ID4gK2xvY2Fsc1tOb2Rlcz1bXV0NCj4gPg0KPiA+ICsgICAgOiAgICgnPCcgc2hpZnRU ZXJtW0V4cEluZm9dKSAgICMgY29tcGFyZVRlcm1MZXNzUnVsZQ0KPiA+DQo+ID4gKyAgICAgICAg fA0KPiA+DQo+ID4gKyAgICAgICAgKCc8PScgc2hpZnRUZXJtW0V4cEluZm9dKSAgIyAgY29tcGFy ZVRlcm1MZXNzRXF1YWxSdWxlDQo+ID4NCj4gPiArICAgICAgICB8DQo+ID4NCj4gPiArICAgICAg ICAoJz4nIHNoaWZ0VGVybVtFeHBJbmZvXSkgICAjICBjb21wYXJlVGVybUdyZWF0ZXJSdWxlDQo+ ID4NCj4gPiArICAgICAgICB8DQo+ID4NCj4gPiArICAgICAgICAoJz49JyBzaGlmdFRlcm1bRXhw SW5mb10pICAjICBjb21wYXJlVGVybUdyZWF0ZXJFcXVhbFJ1bGUNCj4gPg0KPiA+ICsgICAgOw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gK3NoaWZ0VGVybVtFeHBJbmZvXQ0KPiA+DQo+ID4gK2xvY2Fs c1tOb2Rlcz1bXV0NCj4gPg0KPiA+ICsgICAgOiAgIGFkZE1pbnVzVGVybVtFeHBJbmZvXQ0KPiA+ DQo+ID4gKyAgICAgICAgKHNoaWZ0VGVybVN1cHBsZW1lbnRhcnlbRXhwSW5mb10pKg0KPiA+DQo+ ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArc2hpZnRUZXJtU3VwcGxlbWVudGFyeVtF eHBJbmZvXQ0KPiA+DQo+ID4gK2xvY2Fsc1tOb2Rlcz1bXV0NCj4gPg0KPiA+ICsgICAgOiAgICgn PDwnIGFkZE1pbnVzVGVybVtFeHBJbmZvXSkgICMgc2hpZnRUZXJtTGVmdA0KPiA+DQo+ID4gKyAg ICAgICAgfA0KPiA+DQo+ID4gKyAgICAgICAgKCc+PicgYWRkTWludXNUZXJtW0V4cEluZm9dKSAj IHNoaWZ0VGVybVJpZ2h0DQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICth ZGRNaW51c1Rlcm1bRXhwSW5mb10NCj4gPg0KPiA+ICtsb2NhbHNbTm9kZXM9W11dDQo+ID4NCj4g PiArICAgIDogICBtdWx0ZGl2bW9kVGVybVtFeHBJbmZvXQ0KPiA+DQo+ID4gKyAgICAgICAgKGFk ZE1pbnVzVGVybVN1cHBsZW1lbnRhcnlbRXhwSW5mb10pKg0KPiA+DQo+ID4gKyAgICA7DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArYWRkTWludXNUZXJtU3VwcGxlbWVudGFyeVtFeHBJbmZvXQ0KPiA+ DQo+ID4gK2xvY2Fsc1tOb2Rlcz1bXV0NCj4gPg0KPiA+ICsgICAgOiAgICgnKycgbXVsdGRpdm1v ZFRlcm1bRXhwSW5mb10pICMgYWRkTWludXNUZXJtcEFkZA0KPiA+DQo+ID4gKyAgICAgICAgfA0K PiA+DQo+ID4gKyAgICAgICAgKCctJyBtdWx0ZGl2bW9kVGVybVtFeHBJbmZvXSkgIyBhZGRNaW51 c1Rlcm1TdWJ0cmFjdA0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArbXVs dGRpdm1vZFRlcm1bRXhwSW5mb10NCj4gPg0KPiA+ICtsb2NhbHNbTm9kZXM9W11dDQo+ID4NCj4g PiArICAgIDogICBjYXN0VGVybVtFeHBJbmZvXQ0KPiA+DQo+ID4gKyAgICAgICAgKG11bHRkaXZt b2RUZXJtU3VwcGxlbWVudGFyeVtFeHBJbmZvXSkqDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICttdWx0ZGl2bW9kVGVybVN1cHBsZW1lbnRhcnlbRXhwSW5mb10NCj4gPg0K PiA+ICtsb2NhbHNbTm9kZXM9W11dDQo+ID4NCj4gPiArICAgIDogICAoJyonIGNhc3RUZXJtW0V4 cEluZm9dKSAjIG11bHRkaXZtb2RUZXJtTXVsDQo+ID4NCj4gPiArICAgICAgICB8DQo+ID4NCj4g PiArICAgICAgICAoJy8nIGNhc3RUZXJtW0V4cEluZm9dKSAjIG11bHRkaXZtb2RUZXJtRGl2DQo+ ID4NCj4gPiArICAgICAgICB8DQo+ID4NCj4gPiArICAgICAgICAoJyUnIGNhc3RUZXJtW0V4cElu Zm9dKSAjIG11bHRkaXZtb2RUZXJtTW9kdWxvDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICtjYXN0VGVybVtFeHBJbmZvXQ0KPiA+DQo+ID4gK2xvY2Fsc1tOb2Rlcz1bXV0N Cj4gPg0KPiA+ICsgICAgOiAgIChjYXN0VGVybVN1YikqDQo+ID4NCj4gPiArICAgICAgICBhdG9t VGVybVtFeHBJbmZvXQ0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY2Fz dFRlcm1TdWINCj4gPg0KPiA+ICtsb2NhbHNbQ2FzdFR5cGU9MHhGRl0NCj4gPg0KPiA+ICsgICAg OiAgICcoJw0KPiA+DQo+ID4gKyAgICAgICAgKCAgJ0JPT0xFQU4nDQo+ID4NCj4gPiArICAgICAg ICB8ICAnVUlOVDY0Jw0KPiA+DQo+ID4gKyAgICAgICAgfCAgJ1VJTlQzMicNCj4gPg0KPiA+ICsg ICAgICAgIHwgICdVSU5UMTYnDQo+ID4NCj4gPiArICAgICAgICB8ICAnVUlOVDgnDQo+ID4NCj4g PiArICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAnKScNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2F0b21UZXJtW0V4cEluZm9dDQo+ID4NCj4g PiArbG9jYWxzW05vZGVzPVtdXQ0KPiA+DQo+ID4gKyAgICA6ICAgdmZyRXhwcmVzc2lvbkNhdGVu YXRlW0V4cEluZm9dDQo+ID4NCj4gPiArICAgIHwgICB2ZnJFeHByZXNzaW9uTWF0Y2hbRXhwSW5m b10NCj4gPg0KPiA+ICsgICAgfCAgIHZmckV4cHJlc3Npb25NYXRjaDJbRXhwSW5mb10NCj4gPg0K PiA+ICsgICAgfCAgIHZmckV4cHJlc3Npb25QYXJlbltFeHBJbmZvXQ0KPiA+DQo+ID4gKyAgICB8 ICAgdmZyRXhwcmVzc2lvbkJ1aWxkSW5GdW5jdGlvbltFeHBJbmZvXQ0KPiA+DQo+ID4gKyAgICB8 ICAgdmZyRXhwcmVzc2lvbkNvbnN0YW50W0V4cEluZm9dDQo+ID4NCj4gPiArICAgIHwgICB2ZnJF eHByZXNzaW9uVW5hcnlPcFtFeHBJbmZvXQ0KPiA+DQo+ID4gKyAgICB8ICAgdmZyRXhwcmVzc2lv blRlcm5hcnlPcFtFeHBJbmZvXQ0KPiA+DQo+ID4gKyAgICB8ICAgdmZyRXhwcmVzc2lvbk1hcFtF eHBJbmZvXQ0KPiA+DQo+ID4gKyAgICB8ICAgKCdOT1QnIGF0b21UZXJtW0V4cEluZm9dKQ0KPiA+ DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyRXhwcmVzc2lvbkNhdGVuYXRl W0V4cEluZm9dDQo+ID4NCj4gPiArbG9jYWxzW05vZGVzPVtdXQ0KPiA+DQo+ID4gKyAgICA6ICAg J2NhdGVuYXRlJw0KPiA+DQo+ID4gKyAgICAgICAgJygnIHZmclN0YXRlbWVudEV4cHJlc3Npb25T dWJbbG9jYWxjdHguTm9kZXNdICcsJw0KPiA+IHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJbbG9j YWxjdHguTm9kZXNdICcpJw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr dmZyRXhwcmVzc2lvbk1hdGNoW0V4cEluZm9dDQo+ID4NCj4gPiArbG9jYWxzW05vZGVzPVtdXQ0K PiA+DQo+ID4gKyAgICA6ICAgJ21hdGNoJw0KPiA+DQo+ID4gKyAgICAgICAgJygnIHZmclN0YXRl bWVudEV4cHJlc3Npb25TdWJbbG9jYWxjdHguTm9kZXNdICAnLCcNCj4gPiB2ZnJTdGF0ZW1lbnRF eHByZXNzaW9uU3ViW2xvY2FsY3R4Lk5vZGVzXSAnKScNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gK3ZmckV4cHJlc3Npb25NYXRjaDJbRXhwSW5mb10NCj4gPg0KPiA+ICts b2NhbHNbTm9kZXM9W11dDQo+ID4NCj4gPiArICAgIDogICAnbWF0Y2gyJw0KPiA+DQo+ID4gKyAg ICAgICAgJygnIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJbbG9jYWxjdHguTm9kZXNdICcsJw0K PiA+DQo+ID4gKyAgICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yltsb2NhbGN0eC5Ob2Rl c10gICcsJw0KPiA+DQo+ID4gKyAgICAgICAgZ3VpZERlZmluaXRpb24gJyknDQo+ID4NCj4gPiAr ICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJFeHByZXNzaW9uUGFyZW5bRXhwSW5mb10N Cj4gPg0KPiA+ICtsb2NhbHNbTm9kZXM9W11dDQo+ID4NCj4gPiArICAgIDogICAnKCcgdmZyU3Rh dGVtZW50RXhwcmVzc2lvblN1Yltsb2NhbGN0eC5Ob2Rlc10gICcpJw0KPiA+DQo+ID4gKyAgICA7 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyRXhwcmVzc2lvbkJ1aWxkSW5GdW5jdGlvbltFeHBJ bmZvXQ0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlXQ0KPiA+DQo+ID4gKyAgICA6ICAgZHVwRXhwW0V4 cEluZm9dDQo+ID4NCj4gPiArICAgIHwgICB2YXJlcXZhbEV4cFtFeHBJbmZvXQ0KPiA+DQo+ID4g KyAgICB8ICAgaWRlcXZhbEV4cFtFeHBJbmZvXQ0KPiA+DQo+ID4gKyAgICB8ICAgaWRlcWlkRXhw W0V4cEluZm9dDQo+ID4NCj4gPiArICAgIHwgICBpZGVxdmFsbGlzdEV4cFtFeHBJbmZvXQ0KPiA+ DQo+ID4gKyAgICB8ICAgcXVlc3Rpb25yZWYxRXhwW0V4cEluZm9dDQo+ID4NCj4gPiArICAgIHwg ICBydWxlcmVmRXhwW0V4cEluZm9dDQo+ID4NCj4gPiArICAgIHwgICBzdHJpbmdyZWYxRXhwW0V4 cEluZm9dDQo+ID4NCj4gPiArICAgIHwgICBwdXNodGhpc0V4cFtFeHBJbmZvXQ0KPiA+DQo+ID4g KyAgICB8ICAgc2VjdXJpdHlFeHBbRXhwSW5mb10NCj4gPg0KPiA+ICsgICAgfCAgIGdldEV4cFtF eHBJbmZvXQ0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArZHVwRXhwW0V4 cEluZm9dDQo+ID4NCj4gPiArbG9jYWxzW05vZGU9SWZyVHJlZU5vZGUoRUZJX0lGUl9EVVBfT1Ap XQ0KPiA+DQo+ID4gKyAgICA6ICAgJ2R1cCcNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZhcmVxdmFsRXhwW0V4cEluZm9dDQo+ID4NCj4gPiArbG9j YWxzW05vZGVdDQo+ID4NCj4gPiArICAgIDogICAndmFyZXF2YWwnDQo+ID4NCj4gPiArICAgICAg ICAndmFyJyAnKCcgVk49TnVtYmVyICcpJw0KPiA+DQo+ID4gKyAgICAgICAgKCAgICc9PScgTnVt YmVyDQo+ID4NCj4gPiArICAgICAgICB8ICAgJzw9JyBOdW1iZXINCj4gPg0KPiA+ICsgICAgICAg IHwgICAnPCcgIE51bWJlcg0KPiA+DQo+ID4gKyAgICAgICAgfCAgICc+PScgTnVtYmVyDQo+ID4N Cj4gPiArICAgICAgICB8ICAgJz4nICBOdW1iZXINCj4gPg0KPiA+ICsgICAgICAgICkNCj4gPg0K PiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2lkZXF2YWxFeHBbRXhwSW5mb10NCj4g Pg0KPiA+ICtsb2NhbHNbTm9kZV0NCj4gPg0KPiA+ICsgICAgOiAgIEk9J2lkZXF2YWwnIHZmclF1 ZXN0aW9uRGF0YUZpZWxkTmFtZQ0KPiA+DQo+ID4gKyAgICAgICAgKCAgICc9PScgTnVtYmVyDQo+ ID4NCj4gPiArICAgICAgICB8ICAgJzw9JyBOdW1iZXINCj4gPg0KPiA+ICsgICAgICAgIHwgICAn PCcgTnVtYmVyDQo+ID4NCj4gPiArICAgICAgICB8ICAgJz49JyBOdW1iZXINCj4gPg0KPiA+ICsg ICAgICAgIHwgICAnPicgTnVtYmVyDQo+ID4NCj4gPiArICAgICAgICApDQo+ID4NCj4gPiArICAg IDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtpZGVxaWRFeHBbRXhwSW5mb10NCj4gPg0KPiA+ICts b2NhbHNbTm9kZV0NCj4gPg0KPiA+ICsgICAgOiAgIEk9J2lkZXFpZCcgdmZyUXVlc3Rpb25EYXRh RmllbGROYW1lDQo+ID4NCj4gPiArICAgICAgICAoICAgRT0nPT0nIHZmclF1ZXN0aW9uRGF0YUZp ZWxkTmFtZQ0KPiA+DQo+ID4gKyAgICAgICAgfCAgIExFPSc8PScgdmZyUXVlc3Rpb25EYXRhRmll bGROYW1lDQo+ID4NCj4gPiArICAgICAgICB8ICAgTD0nPCcgdmZyUXVlc3Rpb25EYXRhRmllbGRO YW1lDQo+ID4NCj4gPiArICAgICAgICB8ICAgQkU9Jz49JyB2ZnJRdWVzdGlvbkRhdGFGaWVsZE5h bWUNCj4gPg0KPiA+ICsgICAgICAgIHwgICBCPSc+JyB2ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUN Cj4gPg0KPiA+ICsgICAgICAgICkNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gK2lkZXF2YWxsaXN0RXhwW0V4cEluZm9dDQo+ID4NCj4gPiArbG9jYWxzW05vZGVdDQo+ID4N Cj4gPiArICAgIDogICAnaWRlcXZhbGxpc3QnIHZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSAnPT0n IChOdW1iZXIpKw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdmZyUXVl c3Rpb25EYXRhRmllbGROYW1lDQo+ID4NCj4gPiArbG9jYWxzW1FJZD1FRklfUVVFU1RJT05fSURf SU5WQUxJRCwgTWFzaz0wLCBWYXJJZFN0cj0nJywgTGluZT1Ob25lXQ0KPiA+DQo+ID4gKyAgICA6 ICAgKFNOMT1TdHJpbmdJZGVudGlmaWVyICdbJyBJPU51bWJlciAnXScpICMNCj4gPiB2ZnJRdWVz dGlvbkRhdGFGaWVsZE5hbWVSdWxlMQ0KPiA+DQo+ID4gKyAgICAgICAgfCAgIChTTjI9U3RyaW5n SWRlbnRpZmllciAoJy4nIGFycmF5TmFtZSkqKSAjDQo+ID4gdmZyUXVlc3Rpb25EYXRhRmllbGRO YW1lUnVsZTINCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2FycmF5TmFt ZQ0KPiA+DQo+ID4gK2xvY2Fsc1tTdWJTdHI9JycsIFN1YlN0clo9JyddDQo+ID4NCj4gPiArICAg IDogU3RyaW5nSWRlbnRpZmllciAoJ1snIE49TnVtYmVyICddJyk/DQo+ID4NCj4gPiArICAgIDsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtxdWVzdGlvbnJlZjFFeHBbRXhwSW5mb10NCj4gPg0KPiA+ ICtsb2NhbHNbTm9kZT1JZnJUcmVlTm9kZShFRklfSUZSX1FVRVNUSU9OX1JFRjFfT1ApXQ0KPiA+ DQo+ID4gKyAgICA6ICAgJ3F1ZXN0aW9ucmVmJw0KPiA+DQo+ID4gKyAgICAgICAgJygnICggU3Ry aW5nSWRlbnRpZmllciB8IE51bWJlciApICcpJw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArcnVsZXJlZkV4cFtFeHBJbmZvXQ0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlPUlm clRyZWVOb2RlKEVGSV9JRlJfUlVMRV9SRUZfT1ApXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ3J1bGVy ZWYnICcoJyBTdHJpbmdJZGVudGlmaWVyICcpJw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArc3RyaW5ncmVmMUV4cFtFeHBJbmZvXQ0KPiA+DQo+ID4gK2xvY2Fsc1tOb2Rl PUlmclRyZWVOb2RlKEVGSV9JRlJfU1RSSU5HX1JFRjFfT1ApXQ0KPiA+DQo+ID4gKyAgICA6ICAg J3N0cmluZ3JlZicgJygnDQo+ID4NCj4gPiArICAgICAgICAoDQo+ID4NCj4gPiArICAgICAgICAg ICAgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAnKScNCj4gPg0KPiA+ICsgICAgICAgIHwgICBO dW1iZXINCj4gPg0KPiA+ICsgICAgICAgICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgJyknDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtwdXNo dGhpc0V4cFtFeHBJbmZvXQ0KPiA+DQo+ID4gK2xvY2Fsc1tOb2RlPUlmclRyZWVOb2RlKEVGSV9J RlJfVEhJU19PUCldDQo+ID4NCj4gPiArICAgIDogICAncHVzaHRoaXMnDQo+ID4NCj4gPiArICAg IDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtzZWN1cml0eUV4cFtFeHBJbmZvXQ0KPiA+DQo+ID4g K2xvY2Fsc1tOb2RlPUlmclRyZWVOb2RlKEVGSV9JRlJfU0VDVVJJVFlfT1ApXQ0KPiA+DQo+ID4g KyAgICA6ICAgJ3NlY3VyaXR5JyAnKCcgZ3VpZERlZmluaXRpb24gJyknDQo+ID4NCj4gPiArICAg IDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtudW1lcmljVmFyU3RvcmVUeXBlDQo+ID4NCj4gPiAr bG9jYWxzW1ZhclR5cGVdDQo+ID4NCj4gPiArICAgIDogICAnTlVNRVJJQ19TSVpFXzEnDQo+ID4N Cj4gPiArICAgIHwgICAnTlVNRVJJQ19TSVpFXzInDQo+ID4NCj4gPiArICAgIHwgICAnTlVNRVJJ Q19TSVpFXzQnDQo+ID4NCj4gPiArICAgIHwgICAnTlVNRVJJQ19TSVpFXzgnDQo+ID4NCj4gPiAr ICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtnZXRFeHBbRXhwSW5mb10NCj4gPg0KPiA+ICts b2NhbHNbQmFzZUluZm89RUZJX1ZBUlNUT1JFX0lORk8oKSwNCj4gPiBOb2RlPUlmclRyZWVOb2Rl KEVGSV9JRlJfR0VUX09QKV0NCj4gPg0KPiA+ICsgICAgOiAgICdnZXQnICcoJyB2ZnJTdG9yYWdl VmFySWRbbG9jYWxjdHguQmFzZUluZm8sIEZhbHNlXSgnfCcgJ2ZsYWdzJyAnPScNCj4gPiBudW1l cmljVmFyU3RvcmVUeXBlKT8gJyknDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICt2ZnJFeHByZXNzaW9uQ29uc3RhbnRbRXhwSW5mb10NCj4gPg0KPiA+ICtsb2NhbHNbTm9k ZV0NCj4gPg0KPiA+ICsgICAgOiAgICdUUlVFJw0KPiA+DQo+ID4gKyAgICB8ICAgJ0ZBTFNFJw0K PiA+DQo+ID4gKyAgICB8ICAgJ09ORScNCj4gPg0KPiA+ICsgICAgfCAgICdPTkVTJw0KPiA+DQo+ ID4gKyAgICB8ICAgJ1pFUk8nDQo+ID4NCj4gPiArICAgIHwgICAnVU5ERUZJTkVEJw0KPiA+DQo+ ID4gKyAgICB8ICAgJ1ZFUlNJT04nDQo+ID4NCj4gPiArICAgIHwgICBOdW1iZXINCj4gPg0KPiA+ ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3ZmckV4cHJlc3Npb25VbmFyeU9wW0V4cElu Zm9dDQo+ID4NCj4gPiArbG9jYWxzW05vZGVzXQ0KPiA+DQo+ID4gKyAgICA6ICAgbGVuZ3RoRXhw W0V4cEluZm9dDQo+ID4NCj4gPiArICAgIHwgICBiaXR3aXNlbm90RXhwW0V4cEluZm9dDQo+ID4N Cj4gPiArICAgIHwgICBxdWVzdGlvbjIzcmVmRXhwW0V4cEluZm9dDQo+ID4NCj4gPiArICAgIHwg ICBzdHJpbmdyZWYyRXhwW0V4cEluZm9dDQo+ID4NCj4gPiArICAgIHwgICB0b2Jvb2xFeHBbRXhw SW5mb10NCj4gPg0KPiA+ICsgICAgfCAgIHRvc3RyaW5nRXhwW0V4cEluZm9dDQo+ID4NCj4gPiAr ICAgIHwgICB1bmludEV4cFtFeHBJbmZvXQ0KPiA+DQo+ID4gKyAgICB8ICAgdG91cHBlckV4cFtF eHBJbmZvXQ0KPiA+DQo+ID4gKyAgICB8ICAgdG9sd2VyRXhwW0V4cEluZm9dDQo+ID4NCj4gPiAr ICAgIHwgICBzZXRFeHBbRXhwSW5mb10NCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gK2xlbmd0aEV4cFtFeHBJbmZvXQ0KPiA+DQo+ID4gK2xvY2Fsc1tOb2Rlcz1bXV0NCj4g Pg0KPiA+ICsgICAgOiAgICdsZW5ndGgnICcoJyB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViW2xv Y2FsY3R4Lk5vZGVzXSAnKScNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g K2JpdHdpc2Vub3RFeHBbRXhwSW5mb10NCj4gPg0KPiA+ICtsb2NhbHNbTm9kZXM9W11dDQo+ID4N Cj4gPiArICAgIDogICAnficgJygnIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJbbG9jYWxjdHgu Tm9kZXNdICcpJw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArcXVlc3Rp b24yM3JlZkV4cFtFeHBJbmZvXQ0KPiA+DQo+ID4gK2xvY2Fsc1tOb2Rlcz1bXV0NCj4gPg0KPiA+ ICsgICAgOiAgICdxdWVzdGlvbnJlZnZhbCcNCj4gPg0KPiA+ICsgICAgICAgICcoJw0KPiA+DQo+ ID4gKyAgICAgICAgKERldmljZVBhdGggJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJykn ICcsJyApPw0KPiA+DQo+ID4gKyAgICAgICAgKFV1aWQgJz0nIGd1aWREZWZpbml0aW9uICcsJyAp Pw0KPiA+DQo+ID4gKyAgICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yltsb2NhbGN0eC5O b2Rlc10NCj4gPg0KPiA+ICsgICAgICAgICcpJw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArc3RyaW5ncmVmMkV4cFtFeHBJbmZvXQ0KPiA+DQo+ID4gK2xvY2Fsc1tOb2Rl cz1bXV0NCj4gPg0KPiA+ICsgICAgOiAgICdzdHJpbmdyZWZ2YWwnICcoJyB2ZnJTdGF0ZW1lbnRF eHByZXNzaW9uU3ViW2xvY2FsY3R4Lk5vZGVzXSAnKScNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gK3RvYm9vbEV4cFtFeHBJbmZvXQ0KPiA+DQo+ID4gK2xvY2Fsc1tOb2Rl cz1bXV0NCj4gPg0KPiA+ICsgICAgOiAgICdib29sdmFsJyAnKCcgdmZyU3RhdGVtZW50RXhwcmVz c2lvblN1Yltsb2NhbGN0eC5Ob2Rlc10gJyknDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICt0b3N0cmluZ0V4cFtFeHBJbmZvXQ0KPiA+DQo+ID4gK2xvY2Fsc1tOb2Rlcz1b XV0NCj4gPg0KPiA+ICsgICAgOiAgICdzdHJpbmd2YWwnICgnZm9ybWF0JyAnPScgTnVtYmVyICcs JyApPw0KPiA+DQo+ID4gKyAgICAgICAgJygnIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJbbG9j YWxjdHguTm9kZXNdICcpJw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr dW5pbnRFeHBbRXhwSW5mb10NCj4gPg0KPiA+ICtsb2NhbHNbTm9kZXM9W11dDQo+ID4NCj4gPiAr ICAgIDogICAndW5pbnR2YWwnICcoJyB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViW2xvY2FsY3R4 Lk5vZGVzXSAnKScNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3RvdXBw ZXJFeHBbRXhwSW5mb10NCj4gPg0KPiA+ICtsb2NhbHNbTm9kZXM9W11dDQo+ID4NCj4gPiArICAg IDogICAndG91cHBlcicgJygnIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJbbG9jYWxjdHguTm9k ZXNdICcpJw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArdG9sd2VyRXhw W0V4cEluZm9dDQo+ID4NCj4gPiArbG9jYWxzW05vZGVzPVtdXQ0KPiA+DQo+ID4gKyAgICA6ICAg J3RvbG93ZXInICcoJyB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViW2xvY2FsY3R4Lk5vZGVzXSAn KScNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3NldEV4cFtFeHBJbmZv XQ0KPiA+DQo+ID4gK2xvY2Fsc1tCYXNlSW5mbz1FRklfVkFSU1RPUkVfSU5GTygpLCBOb2Rlcz1b XV0NCj4gPg0KPiA+ICsgICAgOiAgICdzZXQnDQo+ID4NCj4gPiArICAgICAgICAnKCcNCj4gPg0K PiA+ICsgICAgICAgIHZmclN0b3JhZ2VWYXJJZFtsb2NhbGN0eC5CYXNlSW5mbywgRmFsc2VdKCd8 JyAnZmxhZ3MnICc9Jw0KPiA+IG51bWVyaWNWYXJTdG9yZVR5cGUpPyAnLCcNCj4gPg0KPiA+ICsg ICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJbbG9jYWxjdHguTm9kZXNdDQo+ID4NCj4g PiArICAgICAgICAnKScNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK3Zm ckV4cHJlc3Npb25UZXJuYXJ5T3BbRXhwSW5mb10NCj4gPg0KPiA+ICtsb2NhbHNbTm9kZXNdDQo+ ID4NCj4gPiArICAgIDogICBjb25kaXRpb25hbEV4cFtFeHBJbmZvXQ0KPiA+DQo+ID4gKyAgICB8 ICAgZmluZEV4cFtFeHBJbmZvXQ0KPiA+DQo+ID4gKyAgICB8ICAgbWlkRXhwW0V4cEluZm9dDQo+ ID4NCj4gPiArICAgIHwgICB0b2tlbkV4cFtFeHBJbmZvXQ0KPiA+DQo+ID4gKyAgICB8ICAgc3Bh bkV4cFtFeHBJbmZvXQ0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArY29u ZGl0aW9uYWxFeHBbRXhwSW5mb10NCj4gPg0KPiA+ICtsb2NhbHNbTm9kZXM9W11dDQo+ID4NCj4g PiArICAgIDogICAnY29uZCcNCj4gPg0KPiA+ICsgICAgICAgICcoJw0KPiA+DQo+ID4gKyAgICAg ICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yltsb2NhbGN0eC5Ob2Rlc10NCj4gPg0KPiA+ICsg ICAgICAgICc/Jw0KPiA+DQo+ID4gKyAgICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Ylts b2NhbGN0eC5Ob2Rlc10NCj4gPg0KPiA+ICsgICAgICAgICc6Jw0KPiA+DQo+ID4gKyAgICAgICAg dmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yltsb2NhbGN0eC5Ob2Rlc10NCj4gPg0KPiA+ICsgICAg ICAgICcpJw0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArZmluZEV4cFtF eHBJbmZvXQ0KPiA+DQo+ID4gK2xvY2Fsc1tOb2Rlcz1bXV0NCj4gPg0KPiA+ICsgICAgOiAgICdm aW5kJw0KPiA+DQo+ID4gKyAgICAgICAgJygnDQo+ID4NCj4gPiArICAgICAgICBmaW5kRm9ybWF0 W0V4cEluZm9dICgnfCcgZmluZEZvcm1hdFtFeHBJbmZvXSkqDQo+ID4NCj4gPiArICAgICAgICAn LCcNCj4gPg0KPiA+ICsgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJbbG9jYWxjdHgu Tm9kZXNdDQo+ID4NCj4gPiArICAgICAgICAnLCcNCj4gPg0KPiA+ICsgICAgICAgIHZmclN0YXRl bWVudEV4cHJlc3Npb25TdWJbbG9jYWxjdHguTm9kZXNdDQo+ID4NCj4gPiArICAgICAgICAnLCcN Cj4gPg0KPiA+ICsgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJbbG9jYWxjdHguTm9k ZXNdDQo+ID4NCj4gPiArICAgICAgICAnKScNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gK2ZpbmRGb3JtYXRbRXhwSW5mb10NCj4gPg0KPiA+ICtsb2NhbHNbRm9ybWF0PTBd DQo+ID4NCj4gPiArICAgIDogICAnU0VOU0lUSVZFJyB8ICdJTlNFTlNJVElWRScNCj4gPg0KPiA+ ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK21pZEV4cFtFeHBJbmZvXQ0KPiA+DQo+ID4g K2xvY2Fsc1tOb2Rlcz1bXV0NCj4gPg0KPiA+ICsgICAgOiAgICdtaWQnDQo+ID4NCj4gPiArICAg ICAgICAnKCcNCj4gPg0KPiA+ICsgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJbbG9j YWxjdHguTm9kZXNdDQo+ID4NCj4gPiArICAgICAgICAnLCcNCj4gPg0KPiA+ICsgICAgICAgIHZm clN0YXRlbWVudEV4cHJlc3Npb25TdWJbbG9jYWxjdHguTm9kZXNdDQo+ID4NCj4gPiArICAgICAg ICAnLCcNCj4gPg0KPiA+ICsgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJbbG9jYWxj dHguTm9kZXNdDQo+ID4NCj4gPiArICAgICAgICAnKScNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gK3Rva2VuRXhwW0V4cEluZm9dDQo+ID4NCj4gPiArbG9jYWxzW05vZGVz PVtdXQ0KPiA+DQo+ID4gKyAgICA6ICAgJ3Rva2VuJw0KPiA+DQo+ID4gKyAgICAgICAgJygnDQo+ ID4NCj4gPiArICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViW2xvY2FsY3R4Lk5vZGVz XQ0KPiA+DQo+ID4gKyAgICAgICAgJywnDQo+ID4NCj4gPiArICAgICAgICB2ZnJTdGF0ZW1lbnRF eHByZXNzaW9uU3ViW2xvY2FsY3R4Lk5vZGVzXQ0KPiA+DQo+ID4gKyAgICAgICAgJywnDQo+ID4N Cj4gPiArICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViW2xvY2FsY3R4Lk5vZGVzXQ0K PiA+DQo+ID4gKyAgICAgICAgJyknDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICtzcGFuRXhwW0V4cEluZm9dDQo+ID4NCj4gPiArbG9jYWxzW05vZGVzPVtdXQ0KPiA+DQo+ ID4gKyAgICA6ICAgJ3NwYW4nDQo+ID4NCj4gPiArICAgICAgICAnKCcNCj4gPg0KPiA+ICsgICAg ICAgICdmbGFncycgJz0nIHNwYW5GbGFncyAoJ3wnIHNwYW5GbGFncykqDQo+ID4NCj4gPiArICAg ICAgICAnLCcNCj4gPg0KPiA+ICsgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJbbG9j YWxjdHguTm9kZXNdDQo+ID4NCj4gPiArICAgICAgICAnLCcNCj4gPg0KPiA+ICsgICAgICAgIHZm clN0YXRlbWVudEV4cHJlc3Npb25TdWJbbG9jYWxjdHguTm9kZXNdDQo+ID4NCj4gPiArICAgICAg ICAnLCcNCj4gPg0KPiA+ICsgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJbbG9jYWxj dHguTm9kZXNdDQo+ID4NCj4gPiArICAgICAgICAnKScNCj4gPg0KPiA+ICsgICAgOw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gK3NwYW5GbGFncw0KPiA+DQo+ID4gK2xvY2Fsc1tGbGFnPTBdDQo+ID4N Cj4gPiArICAgIDogICBOdW1iZXINCj4gPg0KPiA+ICsgICAgfCAgICdMQVNUX05PTl9NQVRDSCcN Cj4gPg0KPiA+ICsgICAgfCAgICdGSVJTVF9OT05fTUFUQ0gnDQo+ID4NCj4gPiArICAgIDsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICt2ZnJFeHByZXNzaW9uTWFwW0V4cEluZm9dDQo+ID4NCj4gPiAr bG9jYWxzW05vZGVzPVtdLCBOb2RlPUlmclRyZWVOb2RlKCldDQo+ID4NCj4gPiArICAgIDogICAn bWFwJw0KPiA+DQo+ID4gKyAgICAgICAgJygnDQo+ID4NCj4gPiArICAgICAgICB2ZnJTdGF0ZW1l bnRFeHByZXNzaW9uU3ViW2xvY2FsY3R4Lk5vZGVzXQ0KPiA+DQo+ID4gKyAgICAgICAgJzonDQo+ ID4NCj4gPiArICAgICAgICAoICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvbltsb2NhbGN0eC5Ob2Rl XQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICcsJw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHZmclN0 YXRlbWVudEV4cHJlc3Npb25bbG9jYWxjdHguTm9kZV0NCj4gPg0KPiA+ICsgICAgICAgICAgICAn OycNCj4gPg0KPiA+ICsgICAgICAgICkqDQo+ID4NCj4gPiArICAgICAgICAnKScNCj4gPg0KPiA+ ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK0RlZmluZSA6JyNkZWZp bmUnOw0KPiA+DQo+ID4gK0luY2x1ZGUgOiAnI2luY2x1ZGUnOw0KPiA+DQo+ID4gK0Zvcm1Qa2dU eXBlIDogJ2Zvcm1wa2d0eXBlJzsNCj4gPg0KPiA+ICtPcGVuQnJhY2UgOiAneyc7DQo+ID4NCj4g PiArQ2xvc2VCcmFjZSA6ICd9JzsNCj4gPg0KPiA+ICtPcGVuUGFyZW4gOiAnKCc7DQo+ID4NCj4g PiArQ2xvc2VQYXJlbiA6ICcpJzsNCj4gPg0KPiA+ICtPcGVuQnJhY2tldCA6ICdbJzsNCj4gPg0K PiA+ICtDbG9zZUJyYWNrZXQgOiAnXSc7DQo+ID4NCj4gPiArRG90IDogJy4nOw0KPiA+DQo+ID4g K05lZ2F0aXZlIDogJy0nOw0KPiA+DQo+ID4gK0NvbG9uIDogJzonOw0KPiA+DQo+ID4gK1NsYXNo IDogJy8nOw0KPiA+DQo+ID4gK1NlbWljb2xvbiA6ICc7JzsNCj4gPg0KPiA+ICtDb21tYSA6ICcs JzsNCj4gPg0KPiA+ICtFcXVhbCA6ICc9PSc7DQo+ID4NCj4gPiArTm90RXF1YWwgOiAnIT0nOw0K PiA+DQo+ID4gK0xlc3NFcXVhbDogJzw9JzsNCj4gPg0KPiA+ICtMZXNzOic8JzsNCj4gPg0KPiA+ ICtHcmVhdGVyRXF1YWw6Jz49JzsNCj4gPg0KPiA+ICtHcmVhdGVyOic+JzsNCj4gPg0KPiA+ICtC aXRXaXNlT3I6ICd8JzsNCj4gPg0KPiA+ICtCaXRXaXNlQW5kOiAnJic7DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArRGV2aWNlUGF0aCA6ICdkZXZpY2VwYXRoJzsNCj4gPg0KPiA+ICtGb3JtU2V0IDog J2Zvcm1zZXQnOw0KPiA+DQo+ID4gK0Zvcm1TZXRJZCA6ICdmb3Jtc2V0aWQnOw0KPiA+DQo+ID4g K0VuZEZvcm1TZXQgOiAnZW5kZm9ybXNldCc7DQo+ID4NCj4gPiArVGl0bGUgOiAndGl0bGUnOw0K PiA+DQo+ID4gK0Zvcm1JZCA6ICdmb3JtaWQnOw0KPiA+DQo+ID4gK09uZU9mIDogJ29uZW9mJzsN Cj4gPg0KPiA+ICtFbmRPbmVPZiA6ICdlbmRvbmVvZic7DQo+ID4NCj4gPiArUHJvbXB0IDogJ3By b21wdCc7DQo+ID4NCj4gPiArT3JkZXJlZExpc3QgOiAnb3JkZXJlZGxpc3QnOw0KPiA+DQo+ID4g K01heENvbnRhaW5lcnMgOiAnbWF4Y29udGFpbmVycyc7DQo+ID4NCj4gPiArRW5kTGlzdCA6ICdl bmRsaXN0JzsNCj4gPg0KPiA+ICtFbmRGb3JtIDogJ2VuZGZvcm0nOw0KPiA+DQo+ID4gK0Zvcm0g OiAnZm9ybSc7DQo+ID4NCj4gPiArRm9ybU1hcCA6ICdmb3JtbWFwJzsNCj4gPg0KPiA+ICtNYXBU aXRsZSA6ICdtYXB0aXRsZSc7DQo+ID4NCj4gPiArTWFwR3VpZCA6ICdtYXBndWlkJzsNCj4gPg0K PiA+ICtTdWJ0aXRsZSA6ICdzdWJ0aXRsZSc7DQo+ID4NCj4gPiArRW5kU3VidGl0bGUgOiAnZW5k c3VidGl0bGUnOw0KPiA+DQo+ID4gK0hlbHAgOiAnaGVscCc7DQo+ID4NCj4gPiArVGV4dCA6ICd0 ZXh0JzsNCj4gPg0KPiA+ICtPcHRpb24gOiAnb3B0aW9uJzsNCj4gPg0KPiA+ICtGTEFHUyA6ICdm bGFncyc7DQo+ID4NCj4gPiArRGF0ZSA6ICdkYXRlJzsNCj4gPg0KPiA+ICtFbmREYXRlIDogJ2Vu ZGRhdGUnOw0KPiA+DQo+ID4gK1llYXIgOiAneWVhcic7DQo+ID4NCj4gPiArTW9udGggOiAnbW9u dGgnOw0KPiA+DQo+ID4gK0RheSA6ICdkYXknOw0KPiA+DQo+ID4gK1RpbWUgOiAndGltZSc7DQo+ ID4NCj4gPiArRW5kVGltZSA6ICdlbmR0aW1lJzsNCj4gPg0KPiA+ICtIb3VyIDogJ2hvdXInOw0K PiA+DQo+ID4gK01pbnV0ZSA6ICdtaW51dGUnOw0KPiA+DQo+ID4gK1NlY29uZCA6ICdzZWNvbmQn Ow0KPiA+DQo+ID4gK0dyYXlPdXRJZiA6ICdncmF5b3V0aWYnOw0KPiA+DQo+ID4gK0xhYmVsIDog J2xhYmVsJzsNCj4gPg0KPiA+ICtUaW1lb3V0IDogJ3RpbWVvdXQnOw0KPiA+DQo+ID4gK0ludmVu dG9yeSA6ICdpbnZlbnRvcnknOw0KPiA+DQo+ID4gK05vbk52RGF0YU1hcCA6ICdfTk9OX05WX0RB VEFfTUFQJzsNCj4gPg0KPiA+ICtTdHJ1Y3QgOiAnc3RydWN0JzsNCj4gPg0KPiA+ICtVbmlvbiA6 ICd1bmlvbic7DQo+ID4NCj4gPiArQm9vbGVhbiA6ICdCT09MRUFOJzsNCj4gPg0KPiA+ICtVaW50 NjQgOiAnVUlOVDY0JzsNCj4gPg0KPiA+ICtVaW50MzIgOiAnVUlOVDMyJzsNCj4gPg0KPiA+ICtV aW50MTYgOiAnVUlOVDE2JzsNCj4gPg0KPiA+ICtVaW50OCA6J1VJTlQ4JzsNCj4gPg0KPiA+ICtF RklfU1RSSU5HX0lEIDonRUZJX1NUUklOR19JRCc7DQo+ID4NCj4gPiArRUZJX0hJSV9EQVRFIDog J0VGSV9ISUlfREFURSc7DQo+ID4NCj4gPiArRUZJX0hJSV9USU1FIDogJ0VGSV9ISUlfVElNRSc7 DQo+ID4NCj4gPiArRUZJX0hJSV9SRUYgOiAnRUZJX0hJSV9SRUYnOw0KPiA+DQo+ID4gK1V1aWQg OiAnZ3VpZCc7DQo+ID4NCj4gPiArQ2hlY2tCb3ggOiAnY2hlY2tib3gnOw0KPiA+DQo+ID4gK0Vu ZENoZWNrQm94IDogJ2VuZGNoZWNrYm94JzsNCj4gPg0KPiA+ICtOdW1lcmljIDogJ251bWVyaWMn Ow0KPiA+DQo+ID4gK0VuZE51bWVyaWMgOiAnZW5kbnVtZXJpYyc7DQo+ID4NCj4gPiArTWluaW11 bSA6ICdtaW5pbXVtJzsNCj4gPg0KPiA+ICtNYXhpbXVtIDogJ21heGltdW0nOw0KPiA+DQo+ID4g K1N0ZXAgOiAnc3RlcCc7DQo+ID4NCj4gPiArRGVmYXVsdCA6ICdkZWZhdWx0JzsNCj4gPg0KPiA+ ICtQYXNzd29yZCA6ICdwYXNzd29yZCc7DQo+ID4NCj4gPiArRW5kUGFzc3dvcmQgOiAnZW5kcGFz c3dvcmQnOw0KPiA+DQo+ID4gK1N0cmluZyA6ICdzdHJpbmcnOw0KPiA+DQo+ID4gK0VuZFN0cmlu ZyA6ICdlbmRzdHJpbmcnOw0KPiA+DQo+ID4gK01pblNpemUgOiAnbWluc2l6ZSc7DQo+ID4NCj4g PiArTWF4U2l6ZSA6ICdtYXhzaXplJzsNCj4gPg0KPiA+ICtFbmNvZGluZyA6ICdlbmNvZGluZyc7 DQo+ID4NCj4gPiArU3VwcHJlc3NJZiA6ICdzdXBwcmVzc2lmJzsNCj4gPg0KPiA+ICtEaXNhYmxl SWYgOiAnZGlzYWJsZWlmJzsNCj4gPg0KPiA+ICtIaWRkZW4gOiAnaGlkZGVuJzsNCj4gPg0KPiA+ ICtHb3RvIDogJ2dvdG8nOw0KPiA+DQo+ID4gK0Zvcm1TZXRHdWlkIDogJ2Zvcm1zZXRndWlkJzsN Cj4gPg0KPiA+ICtJbmNvbnNpc3RlbnRJZiA6ICdpbmNvbnNpc3RlbnRpZic7DQo+ID4NCj4gPiAr V2FybmluZ0lmIDogJ3dhcm5pbmdpZic7DQo+ID4NCj4gPiArTm9TdWJtaXRJZiA6ICdub3N1Ym1p dGlmJzsNCj4gPg0KPiA+ICtFbmRJZiA6ICdlbmRpZic7DQo+ID4NCj4gPiArS2V5IDogJ2tleSc7 DQo+ID4NCj4gPiArRGVmYXVsdEZsYWcgOiAnREVGQVVMVCc7DQo+ID4NCj4gPiArTWFudWZhY3R1 cmluZ0ZsYWcgOiAnTUFOVUZBQ1RVUklORyc7DQo+ID4NCj4gPiArQ2hlY2tCb3hEZWZhdWx0Rmxh ZyA6ICdDSEVDS0JPWF9ERUZBVUxUJzsNCj4gPg0KPiA+ICtDaGVja0JveERlZmF1bHRNZmdGbGFn IDogJ0NIRUNLQk9YX0RFRkFVTFRfTUZHJzsNCj4gPg0KPiA+ICtJbnRlcmFjdGl2ZUZsYWcgOiAn SU5URVJBQ1RJVkUnOw0KPiA+DQo+ID4gK05WQWNjZXNzRmxhZyA6ICdOVl9BQ0NFU1MnOw0KPiA+ DQo+ID4gK1Jlc2V0UmVxdWlyZWRGbGFnIDogJ1JFU0VUX1JFUVVJUkVEJzsNCj4gPg0KPiA+ICtS ZWNvbm5lY3RSZXF1aXJlZEZsYWcgOiAnUkVDT05ORUNUX1JFUVVJUkVEJzsNCj4gPg0KPiA+ICtM YXRlQ2hlY2tGbGFnIDogJ0xBVEVfQ0hFQ0snOw0KPiA+DQo+ID4gK1JlYWRPbmx5RmxhZyA6ICdS RUFEX09OTFknOw0KPiA+DQo+ID4gK09wdGlvbk9ubHlGbGFnIDogJ09QVElPTlNfT05MWSc7DQo+ ID4NCj4gPiArUmVzdFN0eWxlRmxhZyA6ICdSRVNUX1NUWUxFJzsNCj4gPg0KPiA+ICtDbGFzcyA6 ICdjbGFzcyc7DQo+ID4NCj4gPiArU3ViY2xhc3MgOiAnc3ViY2xhc3MnOw0KPiA+DQo+ID4gK0Ns YXNzR3VpZCA6ICdjbGFzc2d1aWQnOw0KPiA+DQo+ID4gK1R5cGVEZWYgOiAndHlwZWRlZic7DQo+ ID4NCj4gPiArUmVzdG9yZSA6ICdyZXN0b3JlJzsNCj4gPg0KPiA+ICtTYXZlIDogJ3NhdmUnOw0K PiA+DQo+ID4gK0RlZmF1bHRzIDogJ2RlZmF1bHRzJzsNCj4gPg0KPiA+ICtCYW5uZXIgOiAgJ2Jh bm5lcic7DQo+ID4NCj4gPiArQWxpZ24gOiAnYWxpZ24nOw0KPiA+DQo+ID4gK0xlZnQgOiAnbGVm dCc7DQo+ID4NCj4gPiArUmlnaHQgOiAncmlnaHQnOw0KPiA+DQo+ID4gK0NlbnRlciA6ICdjZW50 ZXInOw0KPiA+DQo+ID4gK0xpbmUgOiAnbGluZSc7DQo+ID4NCj4gPiArTmFtZSA6ICduYW1lJzsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtWYXJJZDogJ3ZhcmlkJzsNCj4gPg0KPiA+ICtRdWVzdGlv bjogJ3F1ZXN0aW9uJzsNCj4gPg0KPiA+ICtRdWVzdGlvbklkOiAncXVlc3Rpb25pZCc7DQo+ID4N Cj4gPiArSW1hZ2U6ICdpbWFnZSc7DQo+ID4NCj4gPiArTG9ja2VkOiAnbG9ja2VkJzsNCj4gPg0K PiA+ICtSdWxlOiAncnVsZSc7DQo+ID4NCj4gPiArRW5kUnVsZTogJ2VuZHJ1bGUnOw0KPiA+DQo+ ID4gK1ZhbHVlOiAndmFsdWUnOw0KPiA+DQo+ID4gK1JlYWQ6ICdyZWFkJzsNCj4gPg0KPiA+ICtX cml0ZTogJ3dyaXRlJzsNCj4gPg0KPiA+ICtSZXNldEJ1dHRvbjogJ3Jlc2V0YnV0dG9uJzsNCj4g Pg0KPiA+ICtFbmRSZXNldEJ1dHRvbjogJ2VuZHJlc2V0YnV0dG9uJzsNCj4gPg0KPiA+ICtEZWZh dWx0U3RvcmU6ICdkZWZhdWx0c3RvcmUnOw0KPiA+DQo+ID4gK0F0dHJpYnV0ZTogJ2F0dHJpYnV0 ZSc7DQo+ID4NCj4gPiArVmFyc3RvcmU6ICd2YXJzdG9yZSc7DQo+ID4NCj4gPiArRWZpdmFyc3Rv cmU6ICdlZml2YXJzdG9yZSc7DQo+ID4NCj4gPiArVmFyU2l6ZTogJ3ZhcnNpemUnOw0KPiA+DQo+ ID4gK05hbWVWYWx1ZVZhclN0b3JlOiAnbmFtZXZhbHVldmFyc3RvcmUnOw0KPiA+DQo+ID4gK0Fj dGlvbjogJ2FjdGlvbic7DQo+ID4NCj4gPiArQ29uZmlnOiAnY29uZmlnJzsNCj4gPg0KPiA+ICtF bmRBY3Rpb246ICdlbmRhY3Rpb24nOw0KPiA+DQo+ID4gK1JlZnJlc2g6ICdyZWZyZXNoJzsNCj4g Pg0KPiA+ICtJbnRlcnZhbDogJ2ludGVydmFsJzsNCj4gPg0KPiA+ICtWYXJzdG9yZURldmljZTog J3ZhcnN0b3JlZGV2aWNlJzsNCj4gPg0KPiA+ICtHdWlkT3A6ICdndWlkb3AnOw0KPiA+DQo+ID4g K0VuZEd1aWRPcDogJ2VuZGd1aWRvcCc7DQo+ID4NCj4gPiArRGF0YVR5cGU6ICdkYXRhdHlwZSc7 DQo+ID4NCj4gPiArRGF0YTogJ2RhdGEnOw0KPiA+DQo+ID4gK01vZGFsOiAnbW9kYWwnOw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKy8vDQo+ID4NCj4gPiArLy8gRGVmaW5lIHRoZSBjbGFzcyBhbmQg c3ViY2xhc3MgdG9rZW5zDQo+ID4NCj4gPiArLy8NCj4gPg0KPiA+ICsvLw0KPiA+DQo+ID4gK0Ns YXNzTm9uRGV2aWNlOiAnTk9OX0RFVklDRSc7DQo+ID4NCj4gPiArQ2xhc3NEaXNrRGV2aWNlOiAn RElTS19ERVZJQ0UnOw0KPiA+DQo+ID4gK0NsYXNzVmlkZW9EZXZpY2U6ICdWSURFT19ERVZJQ0Un Ow0KPiA+DQo+ID4gK0NsYXNzTmV0d29ya0RldmljZTogJ05FVFdPUktfREVWSUNFJzsNCj4gPg0K PiA+ICtDbGFzc0lucHV0RGV2aWNlOiAnSU5QVVRfREVWSUNFJzsNCj4gPg0KPiA+ICtDbGFzc09u Qm9hcmREZXZpY2U6ICdPTkJPQVJEX0RFVklDRSc7DQo+ID4NCj4gPiArQ2xhc3NPdGhlckRldmlj ZTogJ09USEVSX0RFVklDRSc7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArU3ViY2xhc3NTZXR1cEFw cGxpY2F0aW9uOiAnU0VUVVBfQVBQTElDQVRJT04nOw0KPiA+DQo+ID4gK1N1YmNsYXNzR2VuZXJh bEFwcGxpY2F0aW9uOiAnR0VORVJBTF9BUFBMSUNBVElPTic7DQo+ID4NCj4gPiArU3ViY2xhc3NG cm9udFBhZ2U6ICdGUk9OVF9QQUdFJzsNCj4gPg0KPiA+ICtTdWJjbGFzc1NpbmdsZVVzZTogJ1NJ TkdMRV9VU0UnOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK1llYXJTdXBwcHJlc3NGbGFnOiAnWUVB Ul9TVVBQUkVTUyc7DQo+ID4NCj4gPiArTW9udGhTdXBwcmVzc0ZsYWc6ICdNT05USF9TVVBQUkVT Uyc7DQo+ID4NCj4gPiArRGF5U3VwcHJlc3NGbGFnOiAnREFZX1NVUFBSRVNTJzsNCj4gPg0KPiA+ ICtIb3VyU3VwcHByZXNzRmxhZzogJ0hPVVJfU1VQUFJFU1MnOw0KPiA+DQo+ID4gK01pbnV0ZVN1 cHByZXNzRmxhZzogJ01JTlVURV9TVVBQUkVTUyc7DQo+ID4NCj4gPiArU2Vjb25kU3VwcHJlc3NG bGFnOiAnU0VDT05EX1NVUFBSRVNTJzsNCj4gPg0KPiA+ICtTdG9yYWdlTm9ybWFsRmxhZzogJ1NU T1JBR0VfTk9STUFMJzsNCj4gPg0KPiA+ICtTdG9yYWdlVGltZUZsYWc6ICdTVE9SQUdFX1RJTUUn Ow0KPiA+DQo+ID4gK1N0b3JhZ2VXYWtlVXBGbGFnOiAnU1RPUkFHRV9XQUtFVVAnOw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gK1VuaVF1ZUZsYWc6ICdVTklRVUUnOw0KPiA+DQo+ID4gK05vRW1wdHlG bGFnOiAnTk9FTVBUWSc7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArQ29uZDogJ2NvbmQnOw0KPiA+ DQo+ID4gK0ZpbmQ6ICdmaW5kJzsNCj4gPg0KPiA+ICtNaWQ6ICdtaWQnOw0KPiA+DQo+ID4gK1Rv azogJ3Rva2VuJzsNCj4gPg0KPiA+ICtTcGFuOiAnc3Bhbic7DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArLy8gVGhlIHN5bnRheCBvZiBleHByZXNzaW9uDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArRHVw OiAnZHVwJzsNCj4gPg0KPiA+ICtWYXJFcVZhbDogJ3ZhcmVxdmFsJzsNCj4gPg0KPiA+ICtWYXI6 ICd2YXInOw0KPiA+DQo+ID4gK0lkRXFWYWw6ICdpZGVxdmFsJzsNCj4gPg0KPiA+ICtJZEVxSWQ6 ICdpZGVxaWQnOw0KPiA+DQo+ID4gK0lkRXFWYWxMaXN0OiAnaWRlcXZhbGxpc3QnOw0KPiA+DQo+ ID4gK1F1ZXN0aW9uUmVmOiAncXVlc3Rpb25yZWYnOw0KPiA+DQo+ID4gK1J1bGVSZWY6ICdydWxl cmVmJzsNCj4gPg0KPiA+ICtTdHJpbmdSZWY6ICdzdHJpbmdyZWYnOw0KPiA+DQo+ID4gK1B1c2hU aGlzOiAncHVzaHRoaXMnOw0KPiA+DQo+ID4gK1NlY3VyaXR5OiAnc2VjdXJpdHknOw0KPiA+DQo+ ID4gK0dldDogJ2dldCc7DQo+ID4NCj4gPiArVHJ1ZVN5bWJvbDogJ1RSVUUnOw0KPiA+DQo+ID4g K0ZhbHNlU3ltYm9sOiAnRkFMU0UnOw0KPiA+DQo+ID4gK09uZTogJ09ORSc7DQo+ID4NCj4gPiAr T25lczogJ09ORVMnOw0KPiA+DQo+ID4gK1plcm86ICdaRVJPJzsNCj4gPg0KPiA+ICtVbmRlZmlu ZWQ6ICdVTkRFRklORUQnOw0KPiA+DQo+ID4gK1ZlcnNpb246ICdWRVJTSU9OJzsNCj4gPg0KPiA+ ICtMZW5ndGg6ICdsZW5ndGgnOw0KPiA+DQo+ID4gK0FORDogJ0FORCc7DQo+ID4NCj4gPiArT1I6 ICdPUic7DQo+ID4NCj4gPiArTk9UOiAnTk9UJzsNCj4gPg0KPiA+ICtTZXQ6ICdzZXQnOw0KPiA+ DQo+ID4gK0JpdFdpc2VOb3Q6ICd+JzsNCj4gPg0KPiA+ICtCb29sVmFsOiAnYm9vbHZhbCc7DQo+ ID4NCj4gPiArU3RyaW5nVmFsOiAnc3RyaW5ndmFsJzsNCj4gPg0KPiA+ICtVbkludFZhbDogJ3Vu aW50dmFsJzsNCj4gPg0KPiA+ICtUb1VwcGVyOiAndG91cHBlcic7DQo+ID4NCj4gPiArVG9Mb3dl cjogJ3RvbG93ZXInOw0KPiA+DQo+ID4gK01hdGNoOiAnbWF0Y2gnOw0KPiA+DQo+ID4gK01hdGNo MjogJ21hdGNoMic7DQo+ID4NCj4gPiArQ2F0ZW5hdGU6ICdjYXRlbmF0ZSc7DQo+ID4NCj4gPiAr UXVlc3Rpb25SZWZWYWw6ICdxdWVzdGlvbnJlZnZhbCc7DQo+ID4NCj4gPiArU3RyaW5nUmVmVmFs OiAnc3RyaW5ncmVmdmFsJzsNCj4gPg0KPiA+ICtNYXA6ICdtYXAnOw0KPiA+DQo+ID4gK1JlZnJl c2hHdWlkOiAncmVmcmVzaGd1aWQnOw0KPiA+DQo+ID4gK1N0cmluZ1Rva2VuOiAnU1RSSU5HX1RP S0VOJzsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtPcHRpb25EZWZhdWx0OiAnT1BUSU9OX0RFRkFV TFQnOw0KPiA+DQo+ID4gK09wdGlvbkRlZmF1bHRNZmc6ICdPUFRJT05fREVGQVVMVF9NRkcnOw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gK051bWVyaWNTaXplT25lOiAnTlVNRVJJQ19TSVpFXzEnOw0K PiA+DQo+ID4gK051bWVyaWNTaXplVHdvOiAnTlVNRVJJQ19TSVpFXzInOw0KPiA+DQo+ID4gK051 bWVyaWNTaXplRm91cjogJ05VTUVSSUNfU0laRV80JzsNCj4gPg0KPiA+ICtOdW1lcmljU2l6ZUVp Z2h0OiAnTlVNRVJJQ19TSVpFXzgnOw0KPiA+DQo+ID4gK0Rpc1BsYXlJbnREZWM6ICdESVNQTEFZ X0lOVF9ERUMnOw0KPiA+DQo+ID4gK0Rpc1BsYXlVSW50RGVjOiAnRElTUExBWV9VSU5UX0RFQyc7 DQo+ID4NCj4gPiArRGlzUGxheVVJbnRIZXg6ICdESVNQTEFZX1VJTlRfSEVYJzsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICtJbnNlbnNpdGl2ZTogICdJTlNFTlNJVElWRSc7DQo+ID4NCj4gPiArU2Vu c2l0aXZlOiAnU0VOU0lUSVZFJzsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtMYXN0Tm9uTWF0Y2g6 ICdMQVNUX05PTl9NQVRDSCc7DQo+ID4NCj4gPiArRmlyc3ROb25NYXRjaDogJ0ZJUlNUX05PTl9N QVRDSCc7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArTnVt YmVyDQo+ID4NCj4gPiArICAgIDogICAoJzB4J1swLTlBLUZhLWZdKykgfCBbMC05XSsNCj4gPg0K PiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK1N0cmluZ0lkZW50aWZpZXINCj4gPg0K PiA+ICsgICAgOiAgIFtBLVphLXpfXVtBLVphLXpfMC05XSoNCj4gPg0KPiA+ICsgICAgOw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gK0NvbXBsZXhEZWZpbmUNCj4gPg0KPiA+ICsgICAgOiAgICcjJyBX aGl0ZXNwYWNlPyAnZGVmaW5lJyAgflsjXHJcbl0qDQo+ID4NCj4gPiArICAgICAgICAtPiBza2lw DQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtMaW5l RGVmaW5pdGlvbg0KPiA+DQo+ID4gKyAgICA6ICAgJyMnIFdoaXRlc3BhY2U/ICdsaW5lJyAgflsj XHJcbl0qDQo+ID4NCj4gPiArICAgICAgICAtPiBza2lwDQo+ID4NCj4gPiArICAgIDsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICtJbmNsdWRlRGVmaW5pdGlvbg0KPiA+DQo+ID4gKyAgICA6ICAgJyMn IFdoaXRlc3BhY2U/ICdpbmNsdWRlJyAgflsjXHJcbl0qDQo+ID4NCj4gPiArICAgICAgICAtPiBz a2lwDQo+ID4NCj4gPiArICAgIDsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtXaGl0ZXNwYWNlDQo+ ID4NCj4gPiArICAgIDogICBbIFx0XSsNCj4gPg0KPiA+ICsgICAgICAgIC0+IHNraXANCj4gPg0K PiA+ICsgICAgOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK05ld2xpbmUNCj4gPg0KPiA+ICsgICAg OiAgICggICAnXHInICdcbic/DQo+ID4NCj4gPiArICAgICAgICB8ICAgJ1xuJw0KPiA+DQo+ID4g KyAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgLT4gc2tpcA0KPiA+DQo+ID4gKyAgICA7DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArTGluZUNvbW1lbnQNCj4gPg0KPiA+ICsgICAgOiAgICcvLycg fltcclxuXSoNCj4gPg0KPiA+ICsgICAgICAgIC0+IHNraXANCj4gPg0KPiA+ICsgICAgOw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKy8vIFNraXAgb3ZlciAnZXh0ZXJuJyBpbiBhbnkgaW5jbHVkZWQg LkggZmlsZQ0KPiA+DQo+ID4gK0V4dGVybg0KPiA+DQo+ID4gKyAgICA6ICdleHRlcm4nIH5bI1xy XG5dKg0KPiA+DQo+ID4gKyAgICAgICAgLT4gc2tpcA0KPiA+DQo+ID4gKyAgICA7DQo+ID4NCj4g PiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyU3lu dGF4TGV4ZXIucHkNCj4gPiBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1Zm clN5bnRheExleGVyLnB5DQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAw MDAwMDAwLi4wZTE2NWEwNDQ2DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL0Jhc2VUb29s cy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1ZmclN5bnRheExleGVyLnB5DQo+ID4gQEAgLTAs MCArMSwxNzA4IEBADQo+ID4gKyMgR2VuZXJhdGVkIGZyb20gVmZyU3ludGF4Lmc0IGJ5IEFOVExS IDQuNy4yDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAraW1wb3J0IHN5cw0KPiA+DQo+ID4gK2Zyb20g YW50bHI0IGltcG9ydCAqDQo+ID4NCj4gPiArZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8NCj4gPg0K PiA+ICtmcm9tIHR5cGluZyBpbXBvcnQgVGV4dElPDQo+ID4NCj4gPiArZnJvbSBWZnJDb21waWxl ci5JZnJDdHlwZXMgaW1wb3J0ICoNCj4gPg0KPiA+ICtmcm9tIFZmckNvbXBpbGVyLklmckZvcm1Q a2cgaW1wb3J0ICoNCj4gPg0KPiA+ICtmcm9tIFZmckNvbXBpbGVyLklmclV0aWxpdHkgaW1wb3J0 ICoNCj4gPg0KPiA+ICtmcm9tIFZmckNvbXBpbGVyLklmclRyZWUgaW1wb3J0ICoNCj4gPg0KPiA+ ICtmcm9tIFZmckNvbXBpbGVyLklmckVycm9yIGltcG9ydCAqDQo+ID4NCj4gPiArZnJvbSBWZnJD b21waWxlci5JZnJQcmVQcm9jZXNzIGltcG9ydCAqDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArZGVmIHNlcmlhbGl6ZWRBVE4oKToNCj4gPg0KPiA+ICsgICAgd2l0aCBTdHJpbmdJ TygpIGFzIGJ1ZjoNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHU2MDhiXHVhNzJh XHU4MTMzXHViOWVkXHU0MTdjXHUzYmU3XHU3Nzg2XHU1OTY0XDJcdTAxMA0KPiA+IDIiKQ0KPiA+ DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcdTBhYjdcYlwxXDRcMlx0XDJcNFwzXHRcM1w0XDRc dFw0XDRcNVx0XDVcNFw2XHRcNlw0XDciKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJc dFw3XDRcYlx0XGJcNFx0XHRcdFw0XG5cdFxuXDRcMTNcdFwxM1w0XGZcdFxmXDRcclx0XHIiKQ0K PiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcNFwxNlx0XDE2XDRcMTdcdFwxN1w0XDIwXHRc MjBcNFwyMVx0XDIxXDRcMjJcdFwyMlw0XDIzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0 ZSgiXHRcMjNcNFwyNFx0XDI0XDRcMjVcdFwyNVw0XDI2XHRcMjZcNFwyN1x0XDI3XDRcMzBcdFwz MCIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlw0XDMxXHRcMzFcNFwzMlx0XDMyXDRc MzNcdFwzM1w0XDM0XHRcMzRcNFwzNVx0XDM1XDRcMzYiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVm LndyaXRlKCJcdFwzNlw0XDM3XHRcMzdcNCBcdCBcNCFcdCFcNFwiXHRcIlw0I1x0I1w0JFx0JFw0 JVx0JSIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlw0Jlx0Jlw0XCdcdFwnXDQoXHQo XDQpXHQpXDQqXHQqXDQrXHQrXDQsXHQsXDQtXHQtXDQuIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXHQuXDQvXHQvXDRcNjBcdFw2MFw0XDYxXHRcNjFcNFw2Mlx0XDYyXDRcNjNcdFw2 M1w0XDY0IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHRcNjRcNFw2NVx0XDY1XDRc NjZcdFw2Nlw0XDY3XHRcNjdcNDhcdDhcNDlcdDlcNDpcdDoiKQ0KPiA+DQo+ID4gKyAgICAgICAg YnVmLndyaXRlKCJcNDtcdDtcNDxcdDxcND1cdD1cND5cdD5cND9cdD9cNEBcdEBcNEFcdEFcNEJc dEJcNENcdCIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIkNcNERcdERcNEVcdEVcNEZc dEZcNEdcdEdcNEhcdEhcNElcdElcNEpcdEpcNEtcdEtcNExcdCIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJMXDRNXHRNXDROXHROXDRPXHRPXDRQXHRQXDRRXHRRXDRSXHRSXDRTXHRTXDRU XHRUXDRVXHQiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJVXDRWXHRWXDRXXHRXXDRY XHRYXDRZXHRZXDRaXHRaXDRbXHRbXDRcXFx0XFxcNF1cdF1cNCIpDQo+ID4NCj4gPiArICAgICAg ICBidWYud3JpdGUoIl5cdF5cNF9cdF9cNGBcdGBcNGFcdGFcNGJcdGJcNGNcdGNcNGRcdGRcNGVc dGVcNGZcdGZcNCIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoImdcdGdcNGhcdGhcNGlc dGlcNGpcdGpcNGtcdGtcNGxcdGxcNG1cdG1cNG5cdG5cNG9cdG9cNCIpDQo+ID4NCj4gPiArICAg ICAgICBidWYud3JpdGUoInBcdHBcNHFcdHFcNHJcdHJcNHNcdHNcNHRcdHRcNHVcdHVcNHZcdHZc NHdcdHdcNHhcdHhcNCIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoInlcdHlcNHpcdHpc NHtcdHtcNHxcdHxcNH1cdH1cNH5cdH5cNFwxNzdcdFwxNzdcNFx1MDA4MCIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcdFx1MDA4MFw0XHUwMDgxXHRcdTAwODFcNFx1MDA4Mlx0XHUwMDgy XDRcdTAwODNcdFx1MDA4MyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcNFx1MDA4NFx0 XHUwMDg0XDRcdTAwODVcdFx1MDA4NVw0XHUwMDg2XHRcdTAwODZcNFx1MDA4NyIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcdFx1MDA4N1w0XHUwMDg4XHRcdTAwODhcNFx1MDA4OVx0XHUw MDg5XDRcdTAwOGFcdFx1MDA4YSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcNFx1MDA4 Ylx0XHUwMDhiXDRcdTAwOGNcdFx1MDA4Y1w0XHUwMDhkXHRcdTAwOGRcNFx1MDA4ZSIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdFx1MDA4ZVw0XHUwMDhmXHRcdTAwOGZcNFx1MDA5MFx0 XHUwMDkwXDRcdTAwOTFcdFx1MDA5MSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcNFx1 MDA5Mlx0XHUwMDkyXDRcdTAwOTNcdFx1MDA5M1w0XHUwMDk0XHRcdTAwOTRcNFx1MDA5NSIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdFx1MDA5NVw0XHUwMDk2XHRcdTAwOTZcNFx1MDA5 N1x0XHUwMDk3XDRcdTAwOThcdFx1MDA5OCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc NFx1MDA5OVx0XHUwMDk5XDRcdTAwOWFcdFx1MDA5YVw0XHUwMDliXHRcdTAwOWJcNFx1MDA5YyIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdFx1MDA5Y1w0XHUwMDlkXHRcdTAwOWRcNFx1 MDA5ZVx0XHUwMDllXDRcdTAwOWZcdFx1MDA5ZiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcNFx1MDBhMFx0XHUwMGEwXDRcdTAwYTFcdFx1MDBhMVw0XHUwMGEyXHRcdTAwYTJcNFx1MDBh MyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdFx1MDBhM1w0XHUwMGE0XHRcdTAwYTRc NFx1MDBhNVx0XHUwMGE1XDRcdTAwYTZcdFx1MDBhNiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcNFx1MDBhN1x0XHUwMGE3XDRcdTAwYThcdFx1MDBhOFw0XHUwMGE5XHRcdTAwYTlcNFx1 MDBhYSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdFx1MDBhYVw0XHUwMGFiXHRcdTAw YWJcNFx1MDBhY1x0XHUwMGFjXDRcdTAwYWRcdFx1MDBhZCIpDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJcNFx1MDBhZVx0XHUwMGFlXDRcdTAwYWZcdFx1MDBhZlw0XHUwMGIwXHRcdTAwYjBc NFx1MDBiMSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdFx1MDBiMVw0XHUwMGIyXHRc dTAwYjJcNFx1MDBiM1x0XHUwMGIzXDRcdTAwYjRcdFx1MDBiNCIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcNFx1MDBiNVx0XHUwMGI1XDRcdTAwYjZcdFx1MDBiNlw0XHUwMGI3XHRcdTAw YjdcNFx1MDBiOCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdFx1MDBiOFw0XHUwMGI5 XHRcdTAwYjlcNFx1MDBiYVx0XHUwMGJhXDRcdTAwYmJcdFx1MDBiYiIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcNFx1MDBiY1x0XHUwMGJjXDRcdTAwYmRcdFx1MDBiZFw0XHUwMGJlXHRc dTAwYmVcNFx1MDBiZiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdFx1MDBiZlw0XHUw MGMwXHRcdTAwYzBcNFx1MDBjMVx0XHUwMGMxXDRcdTAwYzJcdFx1MDBjMiIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcNFx1MDBjM1x0XHUwMGMzXDRcdTAwYzRcdFx1MDBjNFw0XHUwMGM1 XHRcdTAwYzVcNFx1MDBjNiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdFx1MDBjNlw0 XHUwMGM3XHRcdTAwYzdcNFx1MDBjOFx0XHUwMGM4XDRcdTAwYzlcdFx1MDBjOSIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcNFx1MDBjYVx0XHUwMGNhXDRcdTAwY2JcdFx1MDBjYlw0XHUw MGNjXHRcdTAwY2NcNFx1MDBjZCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdFx1MDBj ZFw0XHUwMGNlXHRcdTAwY2VcNFx1MDBjZlx0XHUwMGNmXDRcdTAwZDBcdFx1MDBkMCIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcNFx1MDBkMVx0XHUwMGQxXDRcdTAwZDJcdFx1MDBkMlw0 XHUwMGQzXHRcdTAwZDNcNFx1MDBkNCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdFx1 MDBkNFw0XHUwMGQ1XHRcdTAwZDVcNFx1MDBkNlx0XHUwMGQ2XDRcdTAwZDdcdFx1MDBkNyIpDQo+ ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcNFx1MDBkOFx0XHUwMGQ4XDRcdTAwZDlcdFx1 MDBkOVw0XHUwMGRhXHRcdTAwZGFcNFx1MDBkYiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcdFx1MDBkYlw0XHUwMGRjXHRcdTAwZGNcNFx1MDBkZFx0XHUwMGRkXDRcdTAwZGVcdFx1MDBk ZSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcNFx1MDBkZlx0XHUwMGRmXDRcdTAwZTBc dFx1MDBlMFw0XHUwMGUxXHRcdTAwZTFcNFx1MDBlMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcdFx1MDBlMlw0XHUwMGUzXHRcdTAwZTNcNFx1MDBlNFx0XHUwMGU0XDRcdTAwZTVcdFx1 MDBlNSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcNFx1MDBlNlx0XHUwMGU2XDRcdTAw ZTdcdFx1MDBlN1w0XHUwMGU4XHRcdTAwZThcNFx1MDBlOSIpDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJcdFx1MDBlOVw0XHUwMGVhXHRcdTAwZWFcNFx1MDBlYlx0XHUwMGViXDRcdTAwZWNc dFx1MDBlYyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcNFx1MDBlZFx0XHUwMGVkXDRc dTAwZWVcdFx1MDBlZVw0XHUwMGVmXHRcdTAwZWZcNFx1MDBmMCIpDQo+ID4NCj4gPiArDQo+IGJ1 Zi53cml0ZSgiXHRcdTAwZjBcNFx1MDBmMVx0XHUwMGYxXDRcdTAwZjJcdFx1MDBmMlw0XHUwMGYz XHRcdTAwZjMiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlw0XHUwMGY0XHRcdTAwZjRcNFx1 MDBmNVx0XHUwMGY1XDRcdTAwZjZcdFx1MDBmNlw0XHUwMGY3IikNCj4gPg0KPiA+ICsNCj4gYnVm LndyaXRlKCJcdFx1MDBmN1w0XHUwMGY4XHRcdTAwZjhcNFx1MDBmOVx0XHUwMGY5XDRcdTAwZmFc dFx1MDBmYSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDRcdTAwZmJcdFx1MDBmYlw0XHUw MGZjXHRcdTAwZmNcNFx1MDBmZFx0XHUwMGZkXDRcdTAwZmUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXHRcdTAwZmVcNFx1MDBmZlx0XHUwMGZmXDRcdTAxMDBcdFx1MDEwMFw0XHUwMTAx XHRcdTAxMDEiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDNcMlwzXDJcM1wy XDNcMlwzXDNcM1wzXDNcM1wzXDNcM1wzXDNcNFwzXDRcM1w0XDMiKQ0KPiA+DQo+ID4gKyAgICAg ICAgYnVmLndyaXRlKCJcNFwzXDVcM1w1XDNcNVwzXDVcM1w1XDNcNVwzXDVcM1w1XDNcNlwzXDZc M1w2XDNcNlwzXDYiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcM1w3XDNcN1wzXGJc M1xiXDNcYlwzXGJcM1xiXDNcYlwzXGJcM1xiXDNcYlwzXGJcM1xiXDMiKQ0KPiA+DQo+ID4gKyAg ICAgICAgYnVmLndyaXRlKCJcYlwzXHRcM1x0XDNcdFwzXHRcM1x0XDNcdFwzXHRcM1x0XDNcdFwz XHRcM1x0XDNcblwzXG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcM1xuXDNcblwz XG5cM1xuXDNcblwzXG5cM1xuXDNcblwzXG5cM1wxM1wzXDEzXDNcMTNcMyIpDQo+ID4NCj4gPiAr ICAgICAgICBidWYud3JpdGUoIlxmXDNcZlwzXGZcM1xyXDNcclwzXDE2XDNcMTZcM1wxN1wzXDE3 XDNcMjBcM1wyMFwzXDIwIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyMFwzXDIwXDNc MjBcM1wyMFwzXDIxXDNcMjFcM1wyMlwzXDIyXDNcMjJcM1wyMlwzXDIyIikNCj4gPg0KPiA+ICsN Cj4gYnVmLndyaXRlKCJcM1wyMlwzXDIyXDNcMjJcM1wyM1wzXDIzXDNcMjNcM1wyM1wzXDIzXDNc MjNcM1wyM1wzXDIzIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyM1wzXDI0XDNcMjRc M1wyNFwzXDI0XDNcMjRcM1wyNFwzXDI0XDNcMjRcM1wyNFwzXDI0IikNCj4gPg0KPiA+ICsNCj4g YnVmLndyaXRlKCJcM1wyNFwzXDI0XDNcMjVcM1wyNVwzXDI2XDNcMjZcM1wyN1wzXDI3XDNcMzBc M1wzMFwzXDMxIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wzMVwzXDMyXDNcMzJcM1wz M1wzXDMzXDNcMzRcM1wzNFwzXDM1XDNcMzVcM1wzNlwzXDM2IikNCj4gPg0KPiA+ICsgICAgICAg IGJ1Zi53cml0ZSgiXDNcMzdcM1wzN1wzIFwzIFwzIVwzIVwzIVwzXCJcM1wiXDNcIlwzI1wzI1wz I1wzJFwzJFwzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiJVwzJVwzJVwzJlwzJlwz XCdcM1wnXDMoXDMoXDMpXDMpXDMpXDMpXDMpXDMpXDMpXDMpXDMiKQ0KPiA+DQo+ID4gKw0KPiBi dWYud3JpdGUoIilcMylcMylcMypcMypcMypcMypcMypcMypcMypcMypcMytcMytcMytcMytcMytc MytcMytcMyIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIitcMytcMytcMyxcMyxcMyxc MyxcMyxcMyxcMyxcMyxcMyxcMyxcMyxcMy1cMy1cMy1cMy1cMyIpDQo+ID4NCj4gPiArICAgICAg ICBidWYud3JpdGUoIi1cMy1cMy5cMy5cMy5cMy5cMy5cMy5cMy5cMy9cMy9cMy9cMy9cMy9cMy9c M1w2MFwzXDYwIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1w2MFwzXDYwXDNcNjBcM1w2 MFwzXDYwXDNcNjBcM1w2MFwzXDYxXDNcNjFcM1w2MVwzXDYxIikNCj4gPg0KPiA+ICsNCj4gYnVm LndyaXRlKCJcM1w2MVwzXDYxXDNcNjFcM1w2MlwzXDYyXDNcNjJcM1w2MlwzXDYyXDNcNjJcM1w2 MlwzXDYyIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1w2MlwzXDYyXDNcNjJcM1w2Mlwz XDYzXDNcNjNcM1w2M1wzXDYzXDNcNjNcM1w2M1wzXDYzIikNCj4gPg0KPiA+ICsNCj4gYnVmLndy aXRlKCJcM1w2M1wzXDYzXDNcNjNcM1w2M1wzXDYzXDNcNjNcM1w2M1wzXDY0XDNcNjRcM1w2NFwz XDY0IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1w2NFwzXDY0XDNcNjRcM1w2NFwzXDY1 XDNcNjVcM1w2NVwzXDY1XDNcNjVcM1w2NVwzXDY1IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRl KCJcM1w2NVwzXDY2XDNcNjZcM1w2NlwzXDY2XDNcNjZcM1w2N1wzXDY3XDNcNjdcM1w2N1wzXDY3 IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1w2N1wzXDY3XDNcNjdcMzhcMzhcMzhcMzhc MzhcMzhcMzhcMzhcMzhcMzlcMzlcMzlcMyIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUo IjlcMzlcMzlcMzlcMzlcMzpcMzpcMzpcMzpcMzpcMzpcMzpcMzpcMzpcMztcMztcMztcMztcMyIp DQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIjtcMztcMztcMztcMztcMztcMztcMztcMzxc MzxcMzxcMzxcMzxcMz1cMz1cMz1cMz1cMz1cMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCI+XDM+XDM+XDM+XDM+XDM+XDM+XDM/XDM/XDM/XDM/XDM/XDM/XDNAXDNAXDNAXDNAXDNA XDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwz QlwzQlwzQlwzQlwzQlwzQ1wzQ1wzQ1wzQ1wzQ1wzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIkNcM0RcM0RcM0RcM0RcM0VcM0VcM0VcM0VcM0VcM0ZcM0ZcM0ZcM0ZcM0ZcM0ZcM0ZcM0Zc MyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJHXDNHXDNHXDNHXDNHXDNIXDNIXDNIXDNI XDNIXDNIXDNIXDNJXDNJXDNJXDNJXDNJXDNJXDMiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndy aXRlKCJJXDNKXDNKXDNKXDNKXDNKXDNKXDNKXDNKXDNKXDNKXDNLXDNLXDNLXDNLXDNLXDNLXDNM XDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiTFwzTFwzTFwzTFwzTFwzTFwzTFwz TVwzTVwzTVwzTVwzTVwzTVwzTVwzTVwzTVwzTVwzTlwNCj4gPiAzIikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIk5cM05cM05cM05cM05cM05cM05cM05cM05cM05cM05cM05cM05cM05c M05cM05cM09cM09cMyINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJPXDNP XDNPXDNPXDNPXDNQXDNQXDNQXDNQXDNQXDNQXDNRXDNRXDNRXDNRXDNRXDNRXDNRXDMiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiUVwzUlwzUlwzUlwzUlwzUlwzUlwzUlwzU1wzU1wzU1wz U1wzU1wzU1wzU1wzVFwzVFwzVFwzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlRcM1Rc M1RcM1RcM1VcM1VcM1VcM1VcM1VcM1VcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcMyIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJWXDNWXDNWXDNWXDNWXDNWXDNXXDNXXDNXXDNXXDNX XDNXXDNXXDNXXDNXXDNXXDNXXA0KPiA+IDNXXDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiV1wzWFwzWFwzWFwzWFwzWFwzWFwzWFwzWFwzWFwzWFwzWFwzWFwzWFwzWVwzWVwzWVwzWVwz IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiWVwzWVwzWVwzWVwzWVwzWVwzWVwzWVwz WlwzWlwzWlwzWlwzWlwzW1wzW1wzW1wzW1wzW1wzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53 cml0ZSgiW1wzW1wzW1wzW1wzXFxcM1xcXDNcXFwzXFxcM1xcXDNcXFwzXFxcM1xcXDNcXFwzXFxc M1xcIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcXFwzXVwzXVwzXVwzXVwzXVwz XVwzXVwzXVwzXlwzXlwzXlwzXlwzXlwzXlwzXlwzXlwzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXlwzXlwzXlwzX1wzX1wzX1wzX1wzX1wzX1wzX1wzX1wzYFwzYFwzYFwzYFwzYFwz YFwzYFwzIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJgXDNhXDNhXDNhXDNhXDNhXDNiXDNi XDNiXDNiXDNiXDNiXDNiXDNiXDNjXDNjXDNjXDNjXDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiY1wzY1wzY1wzY1wzY1wzZFwzZFwzZFwzZFwzZFwzZFwzZFwzZFwzZFwzZFwzZFwzZFwz ZVwzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiZVwzZVwzZVwzZVwzZVwzZVwzZlwz ZlwzZlwzZlwzZlwzZlwzZlwzZlwzZlwzZlwzZ1wzZ1wzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1 Zi53cml0ZSgiZ1wzZ1wzZ1wzZ1wzZ1wzZ1wzaFwzaFwzaFwzaFwzaFwzaFwzaFwzaFwzaVwzaVwz aVwzaVwzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiaVwzaVwzaVwzaVwzaVwzalwz alwzalwzalwzalwzalwzalwzalwzalwzalwzalwza1wza1wzIikNCj4gPg0KPiA+ICsgICAgICAg IGJ1Zi53cml0ZSgia1wza1wza1wza1wza1wza1wza1wza1wzbFwzbFwzbFwzbFwzbFwzbFwzbFwz bVwzbVwzbVwzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIm1cM21cM25cM25cM25cM25c M25cM25cM25cM25cM25cM25cM25cM25cM29cM29cM29cM29cMyIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJvXDNvXDNvXDNvXDNvXDNvXDNvXDNvXDNvXDNvXDNvXDNwXDNwXDNwXDNwXDNw XDNwXDNwXDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgicFwzcFwzcFwzcVwzcVwzcVwz cVwzcVwzcVwzcVwzcVwzcVwzcVwzcVwzclwzclwzclwzclwzIikNCj4gPg0KPiA+ICsgICAgICAg IGJ1Zi53cml0ZSgiclwzclwzc1wzc1wzc1wzc1wzdFwzdFwzdFwzdFwzdFwzdFwzdFwzdFwzdVwz dVwzdVwzdVwzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoInVcM3VcM3VcM3VcM3VcM3Vc M3VcM3VcM3VcM3VcM3ZcM3ZcM3ZcM3ZcM3ZcM3ZcM3ZcM3ZcMyIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJ2XDN2XDN2XDN2XDN2XDN2XDN2XDN2XDN2XDN3XDN3XDN3XDN3XDN3XDN3XDN3 XDN3XDN3XDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgid1wzd1wzd1wzd1wzd1wz d1wzd1wzd1wzd1wzd1wzd1wzd1wzeFwzeFwzeFwzeFwzeFwzeFwzIg0KPiA+ICkNCj4gPg0KPiA+ ICsgICAgICAgIGJ1Zi53cml0ZSgieFwzeFwzeFwzeFwzeFwzeFwzeVwzeVwzeVwzeVwzeVwzeVwz eVwzeVwzeVwzeVwzelwzelwzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgielwzelwz elwzelwzelwzelwzelwzelwzelwzelwzelwzelwzelwze1wze1wze1wze1wze1wzIikNCj4gPg0K PiA+ICsgICAgICAgIGJ1Zi53cml0ZSgie1wze1wze1wze1wze1wze1wze1wze1wze1wze1wze1wz e1wze1wze1wzfFwzfFwzfFwzfFwzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgifFwz fFwzfFwzfFwzfFwzfFwzfFwzfVwzfVwzfVwzfVwzfVwzfVwzfVwzfVwzfVwzfVwzflwzIikNCj4g Pg0KPiA+ICsNCj4gYnVmLndyaXRlKCJ+XDN+XDN+XDN+XDN+XDN+XDN+XDN+XDN+XDN+XDN+XDN+ XDNcMTc3XDNcMTc3XDNcMTc3XDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDE3N1wz XDE3N1wzXDE3N1wzXDE3N1wzXDE3N1wzXDE3N1wzXDE3N1wzXDE3N1wzXHUwMDgwIikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMDgwXDNcdTAwODBcM1x1MDA4MFwzXHUwMDgw XDNcdTAwODBcM1x1MDA4MVwzXHUwMDgxIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo IlwzXHUwMDgxXDNcdTAwODFcM1x1MDA4MVwzXHUwMDgxXDNcdTAwODFcM1x1MDA4MVwzXHUwMDgx IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMDgyXDNcdTAwODJcM1x1MDA4 MlwzXHUwMDgyXDNcdTAwODJcM1x1MDA4MlwzXHUwMDgyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlwzXHUwMDgyXDNcdTAwODJcM1x1MDA4MlwzXHUwMDgzXDNcdTAwODNcM1x1MDA4 M1wzXHUwMDgzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMDgzXDNcdTAw ODNcM1x1MDA4M1wzXHUwMDgzXDNcdTAwODRcM1x1MDA4NFwzXHUwMDg0IikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMDg0XDNcdTAwODRcM1x1MDA4NFwzXHUwMDg0XDNcdTAw ODRcM1x1MDA4NVwzXHUwMDg1IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUw MDg1XDNcdTAwODVcM1x1MDA4NVwzXHUwMDg2XDNcdTAwODZcM1x1MDA4NlwzXHUwMDg2IikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMDg2XDNcdTAwODZcM1x1MDA4NlwzXHUw MDg2XDNcdTAwODZcM1x1MDA4N1wzXHUwMDg3IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlwzXHUwMDg3XDNcdTAwODdcM1x1MDA4N1wzXHUwMDg3XDNcdTAwODdcM1x1MDA4OFwzXHUw MDg4IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMDg4XDNcdTAwODhcM1x1 MDA4OFwzXHUwMDg4XDNcdTAwODlcM1x1MDA4OVwzXHUwMDg5IikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlwzXHUwMDg5XDNcdTAwODlcM1x1MDA4YVwzXHUwMDhhXDNcdTAwOGFcM1x1 MDA4YVwzXHUwMDhhIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMDhhXDNc dTAwOGJcM1x1MDA4YlwzXHUwMDhiXDNcdTAwOGJcM1x1MDA4YlwzXHUwMDhiIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMDhiXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhjXDNcdTAw OGNcM1x1MDA4Y1wzXHUwMDhkIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUw MDhkXDNcdTAwOGRcM1x1MDA4ZFwzXHUwMDhkXDNcdTAwOGVcM1x1MDA4ZVwzXHUwMDhlIikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMDhlXDNcdTAwOGVcM1x1MDA4ZVwzXHUwMDhm XDNcdTAwOGZcM1x1MDA4ZlwzXHUwMDhmIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwz XHUwMDhmXDNcdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA5MFwzXHUwMDkwIikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMDkwXDNcdTAwOTBcM1x1MDA5MFwz XHUwMDkwXDNcdTAwOTBcM1x1MDA5MFwzXHUwMDkwIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYu d3JpdGUoIlwzXHUwMDkwXDNcdTAwOTBcM1x1MDA5MVwzXHUwMDkxXDNcdTAwOTFcM1x1MDA5MVwz XHUwMDkxIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMDkxXDNcdTAwOTJc M1x1MDA5MlwzXHUwMDkyXDNcdTAwOTJcM1x1MDA5MlwzXHUwMDkyIikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlwzXHUwMDkyXDNcdTAwOTNcM1x1MDA5M1wzXHUwMDkzXDNcdTAwOTNc M1x1MDA5M1wzXHUwMDk0IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMDk0 XDNcdTAwOTRcM1x1MDA5NFwzXHUwMDk0XDNcdTAwOTRcM1x1MDA5NFwzXHUwMDk0IikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMDk1XDNcdTAwOTVcM1x1MDA5NVwzXHUwMDk1 XDNcdTAwOTVcM1x1MDA5NVwzXHUwMDk2IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo IlwzXHUwMDk2XDNcdTAwOTZcM1x1MDA5NlwzXHUwMDk2XDNcdTAwOTdcM1x1MDA5N1wzXHUwMDk3 IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMDk3XDNcdTAwOTdcM1x1MDA5 N1wzXHUwMDk4XDNcdTAwOThcM1x1MDA5OFwzXHUwMDk4IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlwzXHUwMDk4XDNcdTAwOThcM1x1MDA5OFwzXHUwMDk4XDNcdTAwOThcM1x1MDA5 OFwzXHUwMDk4IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMDk4XDNcdTAw OTlcM1x1MDA5OVwzXHUwMDk5XDNcdTAwOTlcM1x1MDA5OVwzXHUwMDk5IikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMDk5XDNcdTAwOTlcM1x1MDA5OVwzXHUwMDk5XDNcdTAw OTlcM1x1MDA5OVwzXHUwMDk5IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUw MDk5XDNcdTAwOTlcM1x1MDA5YVwzXHUwMDlhXDNcdTAwOWFcM1x1MDA5YVwzXHUwMDlhIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMDlhXDNcdTAwOWFcM1x1MDA5YVwzXHUw MDlhXDNcdTAwOWFcM1x1MDA5YVwzXHUwMDlhIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlwzXHUwMDlhXDNcdTAwOWJcM1x1MDA5YlwzXHUwMDliXDNcdTAwOWJcM1x1MDA5YlwzXHUw MDliIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMDliXDNcdTAwOWJcM1x1 MDA5YlwzXHUwMDliXDNcdTAwOWNcM1x1MDA5Y1wzXHUwMDljIikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlwzXHUwMDljXDNcdTAwOWNcM1x1MDA5Y1wzXHUwMDljXDNcdTAwOWNcM1x1MDA5 Y1wzXHUwMDlkIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMDlkXDNcdTAw OWRcM1x1MDA5ZFwzXHUwMDlkXDNcdTAwOWRcM1x1MDA5ZFwzXHUwMDlkIikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMDlkXDNcdTAwOWRcM1x1MDA5ZFwzXHUwMDlkXDNcdTAw OWVcM1x1MDA5ZVwzXHUwMDllIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMDll XDNcdTAwOWVcM1x1MDA5ZVwzXHUwMDllXDNcdTAwOWVcM1x1MDA5ZlwzXHUwMDlmIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMDlmXDNcdTAwOWZcM1x1MDA5ZlwzXHUwMDlmXDNc dTAwOWZcM1x1MDA5ZlwzXHUwMDlmIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUw MDlmXDNcdTAwOWZcM1x1MDA5ZlwzXHUwMDlmXDNcdTAwOWZcM1x1MDA5ZlwzXHUwMDlmIikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMDlmXDNcdTAwOWZcM1x1MDBhMFwzXHUwMGEw XDNcdTAwYTBcM1x1MDBhMFwzXHUwMGEwIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo IlwzXHUwMGEwXDNcdTAwYTBcM1x1MDBhMVwzXHUwMGExXDNcdTAwYTFcM1x1MDBhMVwzXHUwMGEx IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGExXDNcdTAwYTFcM1x1MDBh MlwzXHUwMGEyXDNcdTAwYTJcM1x1MDBhMlwzXHUwMGEyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlwzXHUwMGEyXDNcdTAwYTJcM1x1MDBhMlwzXHUwMGEyXDNcdTAwYTJcM1x1MDBh M1wzXHUwMGEzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGEzXDNcdTAw YTNcM1x1MDBhM1wzXHUwMGEzXDNcdTAwYTNcM1x1MDBhM1wzXHUwMGE0IikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGE0XDNcdTAwYTRcM1x1MDBhNFwzXHUwMGE0XDNcdTAw YTRcM1x1MDBhNFwzXHUwMGE0IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUw MGE0XDNcdTAwYTVcM1x1MDBhNVwzXHUwMGE1XDNcdTAwYTVcM1x1MDBhNVwzXHUwMGE1IikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGE1XDNcdTAwYTVcM1x1MDBhNVwzXHUw MGE1XDNcdTAwYTVcM1x1MDBhNVwzXHUwMGE1IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlwzXHUwMGE1XDNcdTAwYTVcM1x1MDBhNlwzXHUwMGE2XDNcdTAwYTZcM1x1MDBhNlwzXHUw MGE2IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGE2XDNcdTAwYTZcM1x1 MDBhN1wzXHUwMGE3XDNcdTAwYTdcM1x1MDBhN1wzXHUwMGE3IikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlwzXHUwMGE3XDNcdTAwYTdcM1x1MDBhN1wzXHUwMGE3XDNcdTAwYTdcM1x1 MDBhOFwzXHUwMGE4IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGE4XDNc dTAwYThcM1x1MDBhOFwzXHUwMGE4XDNcdTAwYThcM1x1MDBhOFwzXHUwMGE4IikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGE5XDNcdTAwYTlcM1x1MDBhOVwzXHUwMGE5XDNc dTAwYTlcM1x1MDBhYVwzXHUwMGFhIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwz XHUwMGFhXDNcdTAwYWFcM1x1MDBhYVwzXHUwMGFhXDNcdTAwYWJcM1x1MDBhYlwzXHUwMGFiIikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGFiXDNcdTAwYWJcM1x1MDBhYlwz XHUwMGFiXDNcdTAwYWJcM1x1MDBhYlwzXHUwMGFiIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlwzXHUwMGFiXDNcdTAwYWNcM1x1MDBhY1wzXHUwMGFjXDNcdTAwYWNcM1x1MDBhY1wzXHUw MGFjIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGFjXDNcdTAwYWNcM1x1MDBh Y1wzXHUwMGFjXDNcdTAwYWNcM1x1MDBhY1wzXHUwMGFkIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlwzXHUwMGFkXDNcdTAwYWRcM1x1MDBhZFwzXHUwMGFkXDNcdTAwYWRcM1x1MDBh ZFwzXHUwMGFkIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGFkXDNcdTAw YWRcM1x1MDBhZFwzXHUwMGFkXDNcdTAwYWRcM1x1MDBhZVwzXHUwMGFlIikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGFlXDNcdTAwYWVcM1x1MDBhZVwzXHUwMGFlXDNcdTAw YWVcM1x1MDBhZVwzXHUwMGFlIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGFl XDNcdTAwYWVcM1x1MDBhZVwzXHUwMGFlXDNcdTAwYWVcM1x1MDBhZVwzXHUwMGFmIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGFmXDNcdTAwYWZcM1x1MDBhZlwzXHUwMGFmXDNc dTAwYWZcM1x1MDBhZlwzXHUwMGFmIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUw MGFmXDNcdTAwYWZcM1x1MDBhZlwzXHUwMGFmXDNcdTAwYWZcM1x1MDBiMFwzXHUwMGIwIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGIwXDNcdTAwYjBcM1x1MDBiMFwzXHUw MGIwXDNcdTAwYjBcM1x1MDBiMFwzXHUwMGIwIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlwzXHUwMGIwXDNcdTAwYjBcM1x1MDBiMFwzXHUwMGIwXDNcdTAwYjBcM1x1MDBiMFwzXHUw MGIxIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGIxXDNcdTAwYjFcM1x1 MDBiMVwzXHUwMGIxXDNcdTAwYjFcM1x1MDBiMVwzXHUwMGIxIikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlwzXHUwMGIxXDNcdTAwYjFcM1x1MDBiMVwzXHUwMGIxXDNcdTAwYjFcM1x1 MDBiMlwzXHUwMGIyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGIyXDNc dTAwYjJcM1x1MDBiMlwzXHUwMGIyXDNcdTAwYjJcM1x1MDBiMlwzXHUwMGIyIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGIyXDNcdTAwYjJcM1x1MDBiMlwzXHUwMGIyXDNc dTAwYjJcM1x1MDBiMlwzXHUwMGIyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwz XHUwMGIyXDNcdTAwYjJcM1x1MDBiM1wzXHUwMGIzXDNcdTAwYjNcM1x1MDBiM1wzXHUwMGIzIikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGIzXDNcdTAwYjNcM1x1MDBiM1wz XHUwMGIzXDNcdTAwYjNcM1x1MDBiM1wzXHUwMGIzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYu d3JpdGUoIlwzXHUwMGIzXDNcdTAwYjNcM1x1MDBiM1wzXHUwMGIzXDNcdTAwYjNcM1x1MDBiM1wz XHUwMGIzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGIzXDNcdTAwYjRc M1x1MDBiNFwzXHUwMGI0XDNcdTAwYjRcM1x1MDBiNFwzXHUwMGI0IikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlwzXHUwMGI0XDNcdTAwYjRcM1x1MDBiNFwzXHUwMGI0XDNcdTAwYjRc M1x1MDBiNVwzXHUwMGI1IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGI1 XDNcdTAwYjVcM1x1MDBiNVwzXHUwMGI1XDNcdTAwYjVcM1x1MDBiNVwzXHUwMGI1IikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGI1XDNcdTAwYjVcM1x1MDBiNlwzXHUwMGI2 XDNcdTAwYjZcM1x1MDBiNlwzXHUwMGI2IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo IlwzXHUwMGI2XDNcdTAwYjZcM1x1MDBiNlwzXHUwMGI2XDNcdTAwYjZcM1x1MDBiNlwzXHUwMGI2 IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGI2XDNcdTAwYjZcM1x1MDBi N1wzXHUwMGI3XDNcdTAwYjdcM1x1MDBiN1wzXHUwMGI3IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlwzXHUwMGI3XDNcdTAwYjdcM1x1MDBiN1wzXHUwMGI3XDNcdTAwYjdcM1x1MDBi N1wzXHUwMGI3IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGI3XDNcdTAw YjdcM1x1MDBiN1wzXHUwMGI4XDNcdTAwYjhcM1x1MDBiOFwzXHUwMGI4IikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGI4XDNcdTAwYjhcM1x1MDBiOFwzXHUwMGI4XDNcdTAw YjhcM1x1MDBiOFwzXHUwMGI4IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUw MGI4XDNcdTAwYjhcM1x1MDBiOVwzXHUwMGI5XDNcdTAwYjlcM1x1MDBiOVwzXHUwMGI5IikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGI5XDNcdTAwYjlcM1x1MDBiOVwzXHUw MGI5XDNcdTAwYjlcM1x1MDBiOVwzXHUwMGI5IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlwzXHUwMGI5XDNcdTAwYjlcM1x1MDBiYVwzXHUwMGJhXDNcdTAwYmFcM1x1MDBiYVwzXHUw MGJhIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGJhXDNcdTAwYmFcM1x1 MDBiYVwzXHUwMGJhXDNcdTAwYmFcM1x1MDBiYVwzXHUwMGJhIikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlwzXHUwMGJhXDNcdTAwYmFcM1x1MDBiYVwzXHUwMGJhXDNcdTAwYmJcM1x1 MDBiYlwzXHUwMGJiIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGJiXDNc dTAwYmJcM1x1MDBiYlwzXHUwMGJiXDNcdTAwYmJcM1x1MDBiYlwzXHUwMGJiIg0KPiA+ICkNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGJiXDNcdTAwYmJcM1x1MDBiYlwzXHUw MGJiXDNcdTAwYmJcM1x1MDBiYlwzXHUwMGJjIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo IlwzXHUwMGJjXDNcdTAwYmNcM1x1MDBiY1wzXHUwMGJjXDNcdTAwYmNcM1x1MDBiY1wzXHUwMGJj IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGJjXDNcdTAwYmNcM1x1MDBiY1wz XHUwMGJjXDNcdTAwYmNcM1x1MDBiY1wzXHUwMGJjIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYu d3JpdGUoIlwzXHUwMGJkXDNcdTAwYmRcM1x1MDBiZFwzXHUwMGJkXDNcdTAwYmRcM1x1MDBiZFwz XHUwMGJkIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGJkXDNc dTAwYmRcM1x1MDBiZFwzXHUwMGJkXDNcdTAwYmRcM1x1MDBiZFwzXHUwMGJlIg0KPiA+ICkNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGJlXDNcdTAwYmVcM1x1MDBiZVwzXHUw MGJlXDNcdTAwYmVcM1x1MDBiZVwzXHUwMGJlIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlwzXHUwMGJlXDNcdTAwYmVcM1x1MDBiZVwzXHUwMGJlXDNcdTAwYmVcM1x1MDBiZVwzXHUw MGJlIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGJmXDNcdTAwYmZcM1x1MDBi ZlwzXHUwMGJmXDNcdTAwYmZcM1x1MDBiZlwzXHUwMGJmIikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlwzXHUwMGMwXDNcdTAwYzBcM1x1MDBjMFwzXHUwMGMwXDNcdTAwYzBcM1x1MDBjMFwz XHUwMGMwIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGMwXDNcdTAwYzFcM1x1 MDBjMVwzXHUwMGMxXDNcdTAwYzFcM1x1MDBjMVwzXHUwMGMyIikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlwzXHUwMGMyXDNcdTAwYzJcM1x1MDBjMlwzXHUwMGMyXDNcdTAwYzNcM1x1MDBj M1wzXHUwMGMzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGMzXDNcdTAwYzRc M1x1MDBjNFwzXHUwMGM0XDNcdTAwYzRcM1x1MDBjNFwzXHUwMGM0IikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlwzXHUwMGM1XDNcdTAwYzVcM1x1MDBjNVwzXHUwMGM1XDNcdTAwYzVcM1x1 MDBjNlwzXHUwMGM2IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGM2XDNcdTAw YzZcM1x1MDBjN1wzXHUwMGM3XDNcdTAwYzdcM1x1MDBjN1wzXHUwMGM3IikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlwzXHUwMGM3XDNcdTAwYzdcM1x1MDBjN1wzXHUwMGM3XDNcdTAwYzhc M1x1MDBjOFwzXHUwMGM4IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGM4XDNc dTAwYzlcM1x1MDBjOVwzXHUwMGM5XDNcdTAwYzlcM1x1MDBjOVwzXHUwMGM5IikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGM5XDNcdTAwYzlcM1x1MDBjYVwzXHUwMGNhXDNcdTAw Y2FcM1x1MDBjYVwzXHUwMGNhIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGNh XDNcdTAwY2FcM1x1MDBjYlwzXHUwMGNiXDNcdTAwY2JcM1x1MDBjYlwzXHUwMGNiIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGNiXDNcdTAwY2JcM1x1MDBjYlwzXHUwMGNiXDNc dTAwY2JcM1x1MDBjYlwzXHUwMGNiIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUw MGNjXDNcdTAwY2NcM1x1MDBjY1wzXHUwMGNjXDNcdTAwY2NcM1x1MDBjY1wzXHUwMGNjIikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGNjXDNcdTAwY2NcM1x1MDBjY1wzXHUwMGNj XDNcdTAwY2NcM1x1MDBjZFwzXHUwMGNkIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwz XHUwMGNkXDNcdTAwY2RcM1x1MDBjZFwzXHUwMGNkXDNcdTAwY2RcM1x1MDBjZFwzXHUwMGNlIikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGNlXDNcdTAwY2VcM1x1MDBjZVwzXHUw MGNlXDNcdTAwY2VcM1x1MDBjZVwzXHUwMGNlIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo IlwzXHUwMGNlXDNcdTAwY2VcM1x1MDBjZlwzXHUwMGNmXDNcdTAwY2ZcM1x1MDBjZlwzXHUwMGNm IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGNmXDNcdTAwY2ZcM1x1MDBjZlwz XHUwMGNmXDNcdTAwZDBcM1x1MDBkMFwzXHUwMGQwIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYu d3JpdGUoIlwzXHUwMGQwXDNcdTAwZDBcM1x1MDBkMFwzXHUwMGQwXDNcdTAwZDBcM1x1MDBkMFwz XHUwMGQxIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGQxXDNcdTAwZDFc M1x1MDBkMVwzXHUwMGQyXDNcdTAwZDJcM1x1MDBkMlwzXHUwMGQyIikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlwzXHUwMGQyXDNcdTAwZDNcM1x1MDBkM1wzXHUwMGQzXDNcdTAwZDNc M1x1MDBkM1wzXHUwMGQzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGQ0 XDNcdTAwZDRcM1x1MDBkNFwzXHUwMGQ0XDNcdTAwZDVcM1x1MDBkNVwzXHUwMGQ1IikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGQ1XDNcdTAwZDVcM1x1MDBkNlwzXHUwMGQ2 XDNcdTAwZDZcM1x1MDBkNlwzXHUwMGQ2IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo IlwzXHUwMGQ3XDNcdTAwZDdcM1x1MDBkN1wzXHUwMGQ3XDNcdTAwZDdcM1x1MDBkN1wzXHUwMGQ3 IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGQ3XDNcdTAwZDdcM1x1MDBk N1wzXHUwMGQ4XDNcdTAwZDhcM1x1MDBkOFwzXHUwMGQ4IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlwzXHUwMGQ4XDNcdTAwZDhcM1x1MDBkOFwzXHUwMGQ4XDNcdTAwZDlcM1x1MDBk OVwzXHUwMGQ5IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGQ5XDNcdTAw ZDlcM1x1MDBkOVwzXHUwMGQ5XDNcdTAwZGFcM1x1MDBkYVwzXHUwMGRhIikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGRhXDNcdTAwZGJcM1x1MDBkYlwzXHUwMGRiXDNcdTAw ZGNcM1x1MDBkY1wzXHUwMGRjIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUw MGRjXDNcdTAwZGRcM1x1MDBkZFwzXHUwMGRkXDNcdTAwZGRcM1x1MDBkZVwzXHUwMGRlIikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGRmXDNcdTAwZGZcM1x1MDBkZlwzXHUwMGRm XDNcdTAwZGZcM1x1MDBkZlwzXHUwMGRmIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo IlwzXHUwMGRmXDNcdTAwZTBcM1x1MDBlMFwzXHUwMGUwXDNcdTAwZTBcM1x1MDBlMFwzXHUwMGUw IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGUwXDNcdTAwZTBcM1x1MDBl MFwzXHUwMGUwXDNcdTAwZTFcM1x1MDBlMVwzXHUwMGUxIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlwzXHUwMGUxXDNcdTAwZTFcM1x1MDBlMVwzXHUwMGUxXDNcdTAwZTFcM1x1MDBl MVwzXHUwMGUyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGUyXDNcdTAw ZTJcM1x1MDBlMlwzXHUwMGUyXDNcdTAwZTJcM1x1MDBlMlwzXHUwMGUyIikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGUzXDNcdTAwZTNcM1x1MDBlM1wzXHUwMGUzXDNcdTAw ZTNcM1x1MDBlM1wzXHUwMGUzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUw MGUzXDNcdTAwZTRcM1x1MDBlNFwzXHUwMGU0XDNcdTAwZTRcM1x1MDBlNFwzXHUwMGU0IikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGU1XDNcdTAwZTVcM1x1MDBlNVwzXHUw MGU1XDNcdTAwZTVcM1x1MDBlNVwzXHUwMGU1IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlwzXHUwMGU2XDNcdTAwZTZcM1x1MDBlNlwzXHUwMGU2XDNcdTAwZTZcM1x1MDBlNlwzXHUw MGU2IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGU2XDNcdTAwZTZcM1x1 MDBlN1wzXHUwMGU3XDNcdTAwZTdcM1x1MDBlN1wzXHUwMGU3IikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlwzXHUwMGU3XDNcdTAwZTdcM1x1MDBlN1wzXHUwMGU3XDNcdTAwZTdcM1x1 MDBlN1wzXHUwMGU3IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGU3XDNc dTAwZTdcM1x1MDBlN1wzXHUwMGU4XDNcdTAwZThcM1x1MDBlOFwzXHUwMGU4IikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGU4XDNcdTAwZThcM1x1MDBlOFwzXHUwMGU4XDNc dTAwZThcM1x1MDBlOFwzXHUwMGU4IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwz XHUwMGU4XDNcdTAwZThcM1x1MDBlOVwzXHUwMGU5XDNcdTAwZTlcM1x1MDBlOVwzXHUwMGVhIikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGVhXDNcdTAwZWFcM1x1MDBlYVwz XHUwMGVhXDNcdTAwZWFcM1x1MDBlYVwzXHUwMGVhIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYu d3JpdGUoIlwzXHUwMGVhXDNcdTAwZWFcM1x1MDBlYVwzXHUwMGVhXDNcdTAwZWJcM1x1MDBlYlwz XHUwMGViIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGViXDNcdTAwZWJc M1x1MDBlYlwzXHUwMGViXDNcdTAwZWJcM1x1MDBlYlwzXHUwMGViIikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlwzXHUwMGViXDNcdTAwZWJcM1x1MDBlYlwzXHUwMGVjXDNcdTAwZWNcM1x1 MDBlY1wzXHUwMGVjIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGVjXDNcdTAw ZWNcM1x1MDBlY1wzXHUwMGVjXDNcdTAwZWNcM1x1MDBlY1wzXHUwMGVjIikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlwzXHUwMGVjXDNcdTAwZWNcM1x1MDBlY1wzXHUwMGVjXDNcdTAwZWRc M1x1MDBlZFwzXHUwMGVkIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGVk XDNcdTAwZWRcM1x1MDBlZFwzXHUwMGVkXDNcdTAwZWRcM1x1MDBlZFwzXHUwMGVkIikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGVkXDNcdTAwZWRcM1x1MDBlZFwzXHUwMGVk XDNcdTAwZWRcM1x1MDBlZFwzXHUwMGVkIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo IlwzXHUwMGVkXDNcdTAwZWRcM1x1MDBlZVwzXHUwMGVlXDNcdTAwZWVcM1x1MDBlZVwzXHUwMGVl IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGVlXDNcdTAwZWVcM1x1MDBl ZVwzXHUwMGVlXDNcdTAwZWVcM1x1MDBlZVwzXHUwMGVlIikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlwzXHUwMGVlXDNcdTAwZWVcM1x1MDBlZVwzXHUwMGVmXDNcdTAwZWZcM1x1MDBlZlwz XHUwMGVmIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGVmXDNcdTAwZWZcM1x1 MDBlZlwzXHUwMGVmXDNcdTAwZWZcM1x1MDBlZlwzXHUwMGVmIikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlwzXHUwMGVmXDNcdTAwZWZcM1x1MDBlZlwzXHUwMGVmXDNcdTAwZjBcM1x1MDBm MFwzXHUwMGYwIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGYwXDNcdTAwZjBc M1x1MDBmMFwzXHUwMGYwXDNcdTAwZjBcM1x1MDBmMFwzXHUwMGYwIikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlwzXHUwMGYwXDNcdTAwZjBcM1x1MDBmMFwzXHUwMGYwXDNcdTAwZjBcM1x1 MDBmMVwzXHUwMGYxIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGYxXDNcdTAw ZjFcM1x1MDBmMVwzXHUwMGYxXDNcdTAwZjFcM1x1MDBmMVwzXHUwMGYxIikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlwzXHUwMGYxXDNcdTAwZjFcM1x1MDBmMVwzXHUwMGYxXDNcdTAwZjFc M1x1MDBmMVwzXHUwMGYyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGYyXDNc dTAwZjJcM1x1MDBmMlwzXHUwMGYyXDNcdTAwZjJcM1x1MDBmMlwzXHUwMGYyIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGYyXDNcdTAwZjJcM1x1MDBmMlwzXHUwMGYyXDNcdTAw ZjJcM1x1MDBmMlwzXHUwMGYyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGYy XDNcdTAwZjNcM1x1MDBmM1wzXHUwMGYzXDNcdTAwZjNcM1x1MDBmM1wzXHUwMGYzIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGYzXDNcdTAwZjNcM1x1MDBmM1wzXHUwMGYzXDNc dTAwZjNcM1x1MDBmM1wzXHUwMGYzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUw MGYzXDNcdTAwZjNcM1x1MDBmM1wzXHUwMGYzXDNcdTAwZjRcM1x1MDBmNFwzXHUwMGY0IikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGY0XDNcdTAwZjRcM1x1MDBmNFwzXHUwMGY0 XDNcdTAwZjRcM1x1MDBmNFwzXHUwMGY0IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwz XHUwMGY0XDNcdTAwZjRcM1x1MDBmNFwzXHUwMGY0XDNcdTAwZjRcM1x1MDBmNFwzXHUwMGY0IikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGY1XDNcdTAwZjVcM1x1MDBmNVwzXHUw MGY1XDNcdTAwZjVcM1x1MDBmNVwzXHUwMGY1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo IlwzXHUwMGY1XDNcdTAwZjVcM1x1MDBmNVwzXHUwMGY1XDNcdTAwZjVcM1x1MDBmNlwzXHUwMGY2 IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGY2XDNcdTAwZjZcM1x1MDBmNlwz XHUwMGY2XDNcdTAwZjZcM1x1MDBmNlwzXHUwMGY2IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlwzXHUwMGY2XDNcdTAwZjdcM1x1MDBmN1wzXHUwMGY3XDNcdTAwZjdcM1x1MDBmN1wzXHUw MGY3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGY3XDNcdTAwZjdcM1x1MDBm N1wzXHUwMGY3XDNcdTAwZjdcM1x1MDBmN1wzXHUwMGY3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlwzXHUwMGY3XDNcdTAwZjdcM1x1MDBmOFwzXHUwMGY4XDNcdTAwZjhcM1x1MDBmOFwz XHUwMGY4IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGY4XDNcdTAwZjhcM1x1 MDBmOFwzXHUwMGY4XDNcdTAwZjhcM1x1MDBmOFwzXHUwMGY4IikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlwzXHUwMGY4XDNcdTAwZjhcM1x1MDBmOFwzXHUwMGY4XDNcdTAwZjlcM1x1MDBm OVwzXHUwMGY5IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBmOVw2XHUwMGY5XHUw YTQ0XG5cdTAwZjlcclx1MDBmOVwxNlx1MDBmOVx1MGE0NSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53 cml0ZSgiXDNcdTAwZjlcNlx1MDBmOVx1MGE0OVxuXHUwMGY5XHJcdTAwZjlcMTZcdTAwZjlcdTBh NGEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDVcdTAwZjlcdTBhNGRcblx1MDBmOVwz XHUwMGZhXDNcdTAwZmFcN1x1MDBmYVx1MGE1MVxuIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRl KCJcdTAwZmFcZlx1MDBmYVwxNlx1MDBmYVx1MGE1NFwxM1x1MDBmYVwzXHUwMGZiXDNcdTAwZmIi KQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlw1XHUwMGZiXHUwYTU4XG5cdTAwZmJcM1x1MDBm YlwzXHUwMGZiXDNcdTAwZmJcM1x1MDBmYiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNc dTAwZmJcM1x1MDBmYlwzXHUwMGZiXDNcdTAwZmJcN1x1MDBmYlx1MGE2MlxuXHUwMGZiIikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlxmXHUwMGZiXDE2XHUwMGZiXHUwYTY1XDEzXHUwMGZi XDNcdTAwZmJcM1x1MDBmYlwzXHUwMGZjIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgi XDNcdTAwZmNcNVx1MDBmY1x1MGE2YlxuXHUwMGZjXDNcdTAwZmNcM1x1MDBmY1wzXHUwMGZjIikN Cj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwZmNcM1x1MDBmY1wzXHUwMGZjXDdc dTAwZmNcdTBhNzNcblx1MDBmY1xmXHUwMGZjIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo IlwxNlx1MDBmY1x1MGE3NlwxM1x1MDBmY1wzXHUwMGZjXDNcdTAwZmNcM1x1MDBmZFwzXHUwMGZk IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcNVx1MDBmZFx1MGE3Y1xuXHUwMGZkXDNcdTAw ZmRcM1x1MDBmZFwzXHUwMGZkXDNcdTAwZmQiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwz XHUwMGZkXDNcdTAwZmRcM1x1MDBmZFwzXHUwMGZkXDNcdTAwZmRcN1x1MDBmZFx1MGE4NyIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcblx1MDBmZFxmXHUwMGZkXDE2XHUwMGZkXHUwYThh XDEzXHUwMGZkXDNcdTAwZmRcM1x1MDBmZCIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUo IlwzXHUwMGZlXDZcdTAwZmVcdTBhOGZcblx1MDBmZVxyXHUwMGZlXDE2XHUwMGZlXHUwYTkwIikN Cj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwZmVcM1x1MDBmZVwzXHUwMGZmXDNc dTAwZmZcNVx1MDBmZlx1MGE5N1xuXHUwMGZmIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0 ZSgiXDNcdTAwZmZcNVx1MDBmZlx1MGE5YVxuXHUwMGZmXDNcdTAwZmZcM1x1MDBmZlwzXHUwMTAw IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMTAwXDNcdTAxMDBcM1x1MDEwMFw3 XHUwMTAwXHUwYWEyXG5cdTAxMDBcZlx1MDEwMCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcMTZcdTAxMDBcdTBhYTVcMTNcdTAxMDBcM1x1MDEwMFwzXHUwMTAwXDNcdTAxMDFcM1x1 MDEwMSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcM1x1MDEwMVwzXHUwMTAxXDNc dTAxMDFcM1x1MDEwMVwzXHUwMTAxXDNcdTAxMDFcN1x1MDEwMSIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcdTBhYjFcblx1MDEwMVxmXHUwMTAxXDE2XHUwMTAxXHUwYWI0XDEzXHUwMTAx XDNcdTAxMDEiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDEwMVwyXDJcdTAx MDJcM1wzXDVcNFw3XDVcdFw2XDEzXDdcclxiXDE3XHRcMjFcbiIpDQo+ID4NCj4gPiArDQo+IGJ1 Zi53cml0ZSgiXDIzXDEzXDI1XGZcMjdcclwzMVwxNlwzM1wxN1wzNVwyMFwzN1wyMSFcMjIjXDIz JVwyNFwnIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDI1KVwyNitcMjctXDMwL1wz MVw2MVwzMlw2M1wzM1w2NVwzNFw2N1wzNTlcMzY7XDM3PSAiKQ0KPiA+DQo+ID4gKyAgICAgICAg YnVmLndyaXRlKCI/IUFcIkMjRSRHJUkmS1wnTShPKVEqUytVLFctDQo+ID4gWS5bL11cNjBfXDYx YVw2MmNcNjNlXDY0ZyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcNjVpXDY2a1w2N204 bzlxOnM7dTx3PXk+ez99QFwxNzdBXHUwMDgxQlx1MDA4M0NcdTAwODUiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiRFx1MDA4N0VcdTAwODlGXHUwMDhiR1x1MDA4ZEhcdTAwOGZJXHUw MDkxSlx1MDA5M0tcdTAwOTUiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi TFx1MDA5N01cdTAwOTlOXHUwMDliT1x1MDA5ZFBcdTAwOWZRXHUwMGExUlx1MDBhM1NcdTAwYQ0K PiA+IDUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiVFx1MDBhN1VcdTAwYTlWXHUw MGFiV1x1MDBhZFhcdTAwYWZZXHUwMGIxWlx1MDBiM1tcdTAwYjUNCj4gPiAiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXFxcdTAwYjddXHUwMGI5Xlx1MDBiYl9cdTAwYmRgXHUwMGJm YVx1MDBjMWJcdTAwYzNjXHUwMGM1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoImRcdTAw YzdlXHUwMGM5Zlx1MDBjYmdcdTAwY2RoXHUwMGNmaVx1MDBkMWpcdTAwZDNrXHUwMGQ1IikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoImxcdTAwZDdtXHUwMGQ5blx1MDBkYm9cdTAwZGRw XHUwMGRmcVx1MDBlMXJcdTAwZTNzXHUwMGU1DQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoInRcdTAwZTd1XHUwMGU5dlx1MDBlYndcdTAwZWR4XHUwMGVmeVx1MDBmMXpcdTAw ZjN7XHUwMGY1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoInxcdTAwZjd9XHUwMGY5flx1 MDBmYlwxNzdcdTAwZmRcdTAwODBcdTAwZmZcdTAwODFcdTAxMDEiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwMDgyXHUwMTAzXHUwMDgzXHUwMTA1XHUwMDg0XHUwMTA3XHUwMDg1XHUw MTA5XHUwMDg2IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDEwYlx1MDA4N1x1MDEw ZFx1MDA4OFx1MDEwZlx1MDA4OVx1MDExMVx1MDA4YVx1MDExMyIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcdTAwOGJcdTAxMTVcdTAwOGNcdTAxMTdcdTAwOGRcdTAxMTlcdTAwOGVcdTAx MWJcdTAwOGYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMTFkXHUwMDkwXHUwMTFm XHUwMDkxXHUwMTIxXHUwMDkyXHUwMTIzXHUwMDkzXHUwMTI1IikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlx1MDA5NFx1MDEyN1x1MDA5NVx1MDEyOVx1MDA5Nlx1MDEyYlx1MDA5N1x1 MDEyZFx1MDA5OCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxMmZcdTAwOTlcdTAx MzFcdTAwOWFcdTAxMzNcdTAwOWJcdTAxMzVcdTAwOWNcdTAxMzciKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwMDlkXHUwMTM5XHUwMDllXHUwMTNiXHUwMDlmXHUwMTNkXHUwMGEwXHUw MTNmXHUwMGExIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDE0MVx1MDBhMlx1MDE0 M1x1MDBhM1x1MDE0NVx1MDBhNFx1MDE0N1x1MDBhNVx1MDE0OSIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcdTAwYTZcdTAxNGJcdTAwYTdcdTAxNGRcdTAwYThcdTAxNGZcdTAwYTlcdTAx NTFcdTAwYWEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMTUzXHUwMGFiXHUw MTU1XHUwMGFjXHUwMTU3XHUwMGFkXHUwMTU5XHUwMGFlXHUwMTViIikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlx1MDBhZlx1MDE1ZFx1MDBiMFx1MDE1Zlx1MDBiMVx1MDE2MVx1MDBiMlx1 MDE2M1x1MDBiMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAxNjVcdTAwYjRc dTAxNjdcdTAwYjVcdTAxNjlcdTAwYjZcdTAxNmJcdTAwYjdcdTAxNmQiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXHUwMGI4XHUwMTZmXHUwMGI5XHUwMTcxXHUwMGJhXHUwMTczXHUwMGJi XHUwMTc1XHUwMGJjIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDE3N1x1MDBiZFx1 MDE3OVx1MDBiZVx1MDE3Ylx1MDBiZlx1MDE3ZFx1MDBjMFx1MDE3ZiIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcdTAwYzFcdTAxODFcdTAwYzJcdTAxODNcdTAwYzNcdTAxODVcdTAwYzRc dTAxODdcdTAwYzUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMTg5XHUwMGM2XHUw MThiXHUwMGM3XHUwMThkXHUwMGM4XHUwMThmXHUwMGM5XHUwMTkxIikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlx1MDBjYVx1MDE5M1x1MDBjYlx1MDE5NVx1MDBjY1x1MDE5N1x1MDBjZFx1 MDE5OVx1MDBjZSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxOWJcdTAwY2ZcdTAx OWRcdTAwZDBcdTAxOWZcdTAwZDFcdTAxYTFcdTAwZDJcdTAxYTMiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXHUwMGQzXHUwMWE1XHUwMGQ0XHUwMWE3XHUwMGQ1XHUwMWE5XHUwMGQ2 XHUwMWFiXHUwMGQ3IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDFhZFx1MDBk OFx1MDFhZlx1MDBkOVx1MDFiMVx1MDBkYVx1MDFiM1x1MDBkYlx1MDFiNSIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcdTAwZGNcdTAxYjdcdTAwZGRcdTAxYjlcdTAwZGVcdTAxYmJc dTAwZGZcdTAxYmRcdTAwZTAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMWJmXHUw MGUxXHUwMWMxXHUwMGUyXHUwMWMzXHUwMGUzXHUwMWM1XHUwMGU0XHUwMWM3IikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlx1MDBlNVx1MDFjOVx1MDBlNlx1MDFjYlx1MDBlN1x1MDFjZFx1 MDBlOFx1MDFjZlx1MDBlOSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAxZDFc dTAwZWFcdTAxZDNcdTAwZWJcdTAxZDVcdTAwZWNcdTAxZDdcdTAwZWRcdTAxZDkiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMGVlXHUwMWRiXHUwMGVmXHUwMWRkXHUwMGYwXHUwMWRm XHUwMGYxXHUwMWUxXHUwMGYyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDFlM1x1 MDBmM1x1MDFlNVx1MDBmNFx1MDFlN1x1MDBmNVx1MDFlOVx1MDBmNlx1MDFlYiIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcdTAwZjdcdTAxZWRcdTAwZjhcdTAxZWZcdTAwZjlcdTAxZjFc dTAwZmFcdTAxZjNcdTAwZmIiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDFmNVx1MDBm Y1x1MDFmN1x1MDBmZFx1MDFmOVx1MDBmZVx1MDFmYlx1MDBmZlx1MDFmZCIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcdTAxMDBcdTAxZmZcdTAxMDFcdTAyMDFcdTAxMDJcM1wyXHRcNVwy XDYyO0NIY2hcM1wyXDYyIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiO1w1XDJDXFxh YWN8XDZcMlw2MjtDXFxhYWN8XDVcMlxmXGZcMTdcMTclJVw0XDJcMTNcMTMiKQ0KPiA+DQo+ID4g KyAgICAgICAgYnVmLndyaXRlKCJcIlwiXDRcMlxmXGZcMTdcMTdcMlx1MGFjNVwyXDNcM1wyXDJc MlwyXDVcM1wyXDJcMlwyXDciKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJc MlwyXHRcM1wyXDJcMlwyXDEzXDNcMlwyXDJcMlxyXDNcMlwyXDJcMlwxN1wzXDIiKQ0KPiA+DQo+ ID4gKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJcMjFcM1wyXDJcMlwyXDIzXDNcMlwyXDJcMlwy NVwzXDJcMlwyXDJcMjdcM1wyXDIiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcMlwy XDMxXDNcMlwyXDJcMlwzM1wzXDJcMlwyXDJcMzVcM1wyXDJcMlwyXDM3XDNcMlwyXDIiKQ0KPiA+ DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcMiFcM1wyXDJcMlwyI1wzXDJcMlwyXDIlXDNcMlwy XDJcMlwnXDNcMlwyXDJcMilcM1wyXDIiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJc MlwyK1wzXDJcMlwyXDItXDNcMlwyXDJcMi9cM1wyXDJcMlwyXDYxXDNcMlwyXDJcMlw2MyIpDQo+ ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXDJcNjVcM1wyXDJcMlwyXDY3XDNc MlwyXDJcMjlcM1wyXDJcMlwyO1wzXDJcMiIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUo IlwyXDI9XDNcMlwyXDJcMj9cM1wyXDJcMlwyQVwzXDJcMlwyXDJDXDNcMlwyXDJcMkVcM1wyIikN Cj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyR1wzXDJcMlwyXDJJXDNcMlwyXDJc MktcM1wyXDJcMlwyTVwzXDJcMlwyXDJPXDMiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwy XDJcMlwyUVwzXDJcMlwyXDJTXDNcMlwyXDJcMlVcM1wyXDJcMlwyV1wzXDJcMlwyXDJZIikNCj4g Pg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcMltcM1wyXDJcMlwyXVwzXDJcMlwy XDJfXDNcMlwyXDJcMmFcM1wyXDJcMlwyIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgi Y1wzXDJcMlwyXDJlXDNcMlwyXDJcMmdcM1wyXDJcMlwyaVwzXDJcMlwyXDJrXDNcMlwyXDIiKQ0K PiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcMm1cM1wyXDJcMlwyb1wzXDJcMlwyXDJxXDNc MlwyXDJcMnNcM1wyXDJcMlwydVwzXDJcMiIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUo IlwyXDJ3XDNcMlwyXDJcMnlcM1wyXDJcMlwye1wzXDJcMlwyXDJ9XDNcMlwyXDJcMlwxNzdcMyIp DQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXDJcdTAwODFcM1wyXDJcMlwyXHUwMDgz XDNcMlwyXDJcMlx1MDA4NVwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwy XHUwMDg3XDNcMlwyXDJcMlx1MDA4OVwzXDJcMlwyXDJcdTAwOGJcM1wyXDJcMlwyXHUwMDhkIikN Cj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMDhmXDNcMlwyXDJcMlx1MDA5 MVwzXDJcMlwyXDJcdTAwOTNcM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XDJcMlx1MDA5NVwzXDJcMlwyXDJcdTAwOTdcM1wyXDJcMlwyXHUwMDk5XDNcMlwyXDJcMlx1MDA5 YiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcMlx1MDA5ZFwzXDJcMlwyXDJc dTAwOWZcM1wyXDJcMlwyXHUwMGExXDNcMlwyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlwyXDJcdTAwYTNcM1wyXDJcMlwyXHUwMGE1XDNcMlwyXDJcMlx1MDBhN1wzXDJcMlwyXDJc dTAwYTkiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAwYWJcM1wyXDJc MlwyXHUwMGFkXDNcMlwyXDJcMlx1MDBhZlwzXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcMlwyXHUwMGIxXDNcMlwyXDJcMlx1MDBiM1wzXDJcMlwyXDJcdTAwYjVcM1wyXDJc MlwyXHUwMGI3IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMGI5XDNc MlwyXDJcMlx1MDBiYlwzXDJcMlwyXDJcdTAwYmRcM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXDJcMlx1MDBiZlwzXDJcMlwyXDJcdTAwYzFcM1wyXDJcMlwyXHUwMGMzXDNcMlwy XDJcMlx1MDBjNSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcMlx1MDBjN1wz XDJcMlwyXDJcdTAwYzlcM1wyXDJcMlwyXHUwMGNiXDNcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlwyXDJcdTAwY2RcM1wyXDJcMlwyXHUwMGNmXDNcMlwyXDJcMlx1MDBkMVwzXDJc MlwyXDJcdTAwZDMiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAwZDVc M1wyXDJcMlwyXHUwMGQ3XDNcMlwyXDJcMlx1MDBkOVwzXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcMlwyXHUwMGRiXDNcMlwyXDJcMlx1MDBkZFwzXDJcMlwyXDJcdTAwZGZc M1wyXDJcMlwyXHUwMGUxIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUw MGUzXDNcMlwyXDJcMlx1MDBlNVwzXDJcMlwyXDJcdTAwZTdcM1wyXDIiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDBlOVwzXDJcMlwyXDJcdTAwZWJcM1wyXDJcMlwyXHUw MGVkXDNcMlwyXDJcMlx1MDBlZiIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlwzXDJc MlwyXDJcdTAwZjFcM1wyXDJcMlwyXHUwMGYzXDNcMlwyXDJcMlx1MDBmNVwzXDJcMiIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXHUwMGY3XDNcMlwyXDJcMlx1MDBmOVwzXDJcMlwy XDJcdTAwZmJcM1wyXDJcMlwyXHUwMGZkIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgi XDNcMlwyXDJcMlx1MDBmZlwzXDJcMlwyXDJcdTAxMDFcM1wyXDJcMlwyXHUwMTAzXDNcMlwyIikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcdTAxMDVcM1wyXDJcMlwyXHUwMTA3 XDNcMlwyXDJcMlx1MDEwOVwzXDJcMlwyXDJcdTAxMGIiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3Jp dGUoIlwzXDJcMlwyXDJcdTAxMGRcM1wyXDJcMlwyXHUwMTBmXDNcMlwyXDJcMlx1MDExMVwzXDJc MiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXHUwMTEzXDNcMlwyXDJcMlx1 MDExNVwzXDJcMlwyXDJcdTAxMTdcM1wyXDJcMlwyXHUwMTE5IikNCj4gPg0KPiA+ICsNCj4gYnVm LndyaXRlKCJcM1wyXDJcMlwyXHUwMTFiXDNcMlwyXDJcMlx1MDExZFwzXDJcMlwyXDJcdTAxMWZc M1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDEyMVwzXDJcMlwy XDJcdTAxMjNcM1wyXDJcMlwyXHUwMTI1XDNcMlwyXDJcMlx1MDEyNyIpDQo+ID4NCj4gPiArDQo+ IGJ1Zi53cml0ZSgiXDNcMlwyXDJcMlx1MDEyOVwzXDJcMlwyXDJcdTAxMmJcM1wyXDJcMlwyXHUw MTJkXDNcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTAxMmZcM1wyXDJc MlwyXHUwMTMxXDNcMlwyXDJcMlx1MDEzM1wzXDJcMlwyXDJcdTAxMzUiKQ0KPiA+DQo+ID4gKw0K PiBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAxMzdcM1wyXDJcMlwyXHUwMTM5XDNcMlwyXDJcMlx1 MDEzYlwzXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXHUwMTNkXDNcMlwy XDJcMlx1MDEzZlwzXDJcMlwyXDJcdTAxNDFcM1wyXDJcMlwyXHUwMTQzIikNCj4gPg0KPiA+ICsN Cj4gYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMTQ1XDNcMlwyXDJcMlx1MDE0N1wzXDJcMlwyXDJc dTAxNDlcM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDE0Ylwz XDJcMlwyXDJcdTAxNGRcM1wyXDJcMlwyXHUwMTRmXDNcMlwyXDJcMlx1MDE1MSIpDQo+ID4NCj4g PiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcMlx1MDE1M1wzXDJcMlwyXDJcdTAxNTVcM1wyXDJc MlwyXHUwMTU3XDNcMlwyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcdTAx NTlcM1wyXDJcMlwyXHUwMTViXDNcMlwyXDJcMlx1MDE1ZFwzXDJcMlwyXDJcdTAxNWYiKQ0KPiA+ DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAxNjFcM1wyXDJcMlwyXHUwMTYzXDNc MlwyXDJcMlx1MDE2NVwzXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwy XHUwMTY3XDNcMlwyXDJcMlx1MDE2OVwzXDJcMlwyXDJcdTAxNmJcM1wyXDJcMlwyXHUwMTZkIikN Cj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMTZmXDNcMlwyXDJcMlx1MDE3 MVwzXDJcMlwyXDJcdTAxNzNcM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XDJcMlx1MDE3NVwzXDJcMlwyXDJcdTAxNzdcM1wyXDJcMlwyXHUwMTc5XDNcMlwyXDJcMlx1MDE3 YiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcMlx1MDE3ZFwzXDJcMlwyXDJc dTAxN2ZcM1wyXDJcMlwyXHUwMTgxXDNcMlwyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlwyXDJcdTAxODNcM1wyXDJcMlwyXHUwMTg1XDNcMlwyXDJcMlx1MDE4N1wzXDJcMlwyXDJc dTAxODkiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAxOGJcM1wyXDJc MlwyXHUwMThkXDNcMlwyXDJcMlx1MDE4ZlwzXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcMlwyXHUwMTkxXDNcMlwyXDJcMlx1MDE5M1wzXDJcMlwyXDJcdTAxOTVcM1wyXDJc MlwyXHUwMTk3IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMTk5XDNc MlwyXDJcMlx1MDE5YlwzXDJcMlwyXDJcdTAxOWRcM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXDJcMlx1MDE5ZlwzXDJcMlwyXDJcdTAxYTFcM1wyXDJcMlwyXHUwMWEzXDNcMlwy XDJcMlx1MDFhNSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcMlx1MDFhN1wz XDJcMlwyXDJcdTAxYTlcM1wyXDJcMlwyXHUwMWFiXDNcMlwyIikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlwyXDJcdTAxYWRcM1wyXDJcMlwyXHUwMWFmXDNcMlwyXDJcMlx1MDFiMVwz XDJcMlwyXDJcdTAxYjMiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAx YjVcM1wyXDJcMlwyXHUwMWI3XDNcMlwyXDJcMlx1MDFiOVwzXDJcMiIpDQo+ID4NCj4gPiArDQo+ ID4NCj4gYnVmLndyaXRlKCJcMlwyXHUwMWJiXDNcMlwyXDJcMlx1MDFiZFwzXDJcMlwyXDJcdTAx YmZcM1wyXDJcMlwyXHUwMWMxIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlwy XHUwMWMzXDNcMlwyXDJcMlx1MDFjNVwzXDJcMlwyXDJcdTAxYzdcM1wyXDIiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1MDFjOVwzXDJcMlwyXDJcdTAxY2JcM1wyXDJcMlwyXHUw MWNkXDNcMlwyXDJcMlx1MDFjZiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJc Mlx1MDFkMVwzXDJcMlwyXDJcdTAxZDNcM1wyXDJcMlwyXHUwMWQ1XDNcMlwyIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcdTAxZDdcM1wyXDJcMlwyXHUwMWQ5XDNcMlwyXDJc Mlx1MDFkYlwzXDJcMlwyXDJcdTAxZGQiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJc MlwyXDJcdTAxZGZcM1wyXDJcMlwyXHUwMWUxXDNcMlwyXDJcMlx1MDFlM1wzXDJcMiIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXHUwMWU1XDNcMlwyXDJcMlx1MDFlN1wzXDJc MlwyXDJcdTAxZTlcM1wyXDJcMlwyXHUwMWViIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJc M1wyXDJcMlwyXHUwMWVkXDNcMlwyXDJcMlx1MDFlZlwzXDJcMlwyXDJcdTAxZjFcM1wyXDIiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1MDFmM1wzXDJcMlwyXDJcdTAxZjVcM1wy XDJcMlwyXHUwMWY3XDNcMlwyXDJcMlx1MDFmOSIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3Jp dGUoIlwzXDJcMlwyXDJcdTAxZmJcM1wyXDJcMlwyXHUwMWZkXDNcMlwyXDJcMlx1MDFmZlwzXDJc MiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXHUwMjAxXDNcMlwyXDJcM1x1 MDIwM1wzXDJcMlwyXDVcdTAyMDhcM1wyXDJcMlw3XHUwMjBkIikNCj4gPg0KPiA+ICsgICAgICAg IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdFx1MDIxMVwzXDJcMlwyXDEzXHUwMjE5XDNcMlwyXDJcclx1 MDIxZVwzXDIiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwyXDJcMTdcdTAyMjBcM1wyXDJc MlwyMVx1MDIyY1wzXDJcMlwyXDIzXHUwMjM3XDNcMlwyIikNCj4gPg0KPiA+ICsNCj4gYnVmLndy aXRlKCJcMlwyNVx1MDI0MlwzXDJcMlwyXDI3XHUwMjQ1XDNcMlwyXDJcMzFcdTAyNDhcM1wyXDJc MiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMzNcdTAyNGFcM1wyXDJcMlwzNVx1 MDI0Y1wzXDJcMlwyXDM3XHUwMjRlXDNcMlwyXDIhXHUwMjU1IikNCj4gPg0KPiA+ICsNCj4gYnVm LndyaXRlKCJcM1wyXDJcMiNcdTAyNTdcM1wyXDJcMiVcdTAyNWZcM1wyXDJcMlwnXHUwMjY4XDNc MlwyXDIiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCIpXHUwMjc0XDNcMlwyXDIrXHUw Mjc2XDNcMlwyXDItDQo+IFx1MDI3OFwzXDJcMlwyL1x1MDI3YVwzIikNCj4gPg0KPiA+ICsNCj4g YnVmLndyaXRlKCJcMlwyXDJcNjFcdTAyN2NcM1wyXDJcMlw2M1x1MDI3ZVwzXDJcMlwyXDY1XHUw MjgwXDNcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDY3XHUwMjgyXDNc MlwyXDI5XHUwMjg0XDNcMlwyXDI7XHUwMjg2XDNcMlwyXDI9XHUwMjg4IikNCj4gPg0KPiA+ICsg ICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDI/XHUwMjhhXDNcMlwyXDJBXHUwMjhjXDNcMlwyXDJD XHUwMjhmXDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiRVx1MDI5MlwzXDJc MlwyR1x1MDI5NVwzXDJcMlwySVx1MDI5N1wzXDJcMlwyS1x1MDI5YVwzIikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMk1cdTAyOWNcM1wyXDJcMk9cdTAyOWVcM1wyXDJcMlFc dTAyYTBcM1wyXDJcMlNcdTAyYWIiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XDNcMlwyXDJVXHUwMmIzXDNcMlwyXDJXXHUwMmJkXDNcMlwyXDJZXHUwMmM4XDNcMlwyXDIiKQ0K PiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIltcdTAyY2VcM1wyXDJcMl1cdTAyZDVcM1wyXDJcMl9c dTAyZGJcM1wyXDJcMmFcdTAyZTRcMyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwy XDJjXHUwMmViXDNcMlwyXDJlXHUwMmY3XDNcMlwyXDJnXHUwMzA1XDNcMlwyXDJpXHUwMzBkIikN Cj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMmtcdTAzMTVcM1wyXDJcMm1cdTAzMWFc M1wyXDJcMm9cdTAzMjJcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJxXHUw MzJiXDNcMlwyXDJzXHUwMzMzXDNcMlwyXDJ1XHUwMzNjXDNcMlwyXDJ3XHUwMzQ4XDMiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlwyeVx1MDM0ZFwzXDJcMlwye1x1MDM1MlwzXDJc MlwyfVx1MDM1OVwzXDJcMlwyXDE3NyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAz NWZcM1wyXDJcMlx1MDA4MVx1MDM2NFwzXDJcMlwyXHUwMDgzXHUwMzZjXDNcMlwyXDIiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMDg1XHUwMzcxXDNcMlwyXDJcdTAwODdcdTAzNzdc M1wyXDJcMlx1MDA4OVx1MDM3YlwzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwy XDJcMlx1MDA4Ylx1MDM4MFwzXDJcMlwyXHUwMDhkXHUwMzg4XDNcMlwyXDJcdTAwOGZcdTAzOGQi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAwOTFcdTAzOTRcM1wyXDJc Mlx1MDA5M1x1MDM5YlwzXDJcMlwyXHUwMDk1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo Ilx1MDNhNVwzXDJcMlwyXHUwMDk3XHUwM2FiXDNcMlwyXDJcdTAwOTlcdTAzYjNcM1wyXDJcMiIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAwOWJcdTAzYmRcM1wyXDJcMlx1MDA5ZFx1 MDNjZVwzXDJcMlwyXHUwMDlmXHUwM2Q1XDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXDJcMlwyXHUwMGExXHUwM2RiXDNcMlwyXDJcdTAwYTNcdTAzZTNcM1wyXDJcMlx1MDBhNVx1 MDNlYSINCj4gPiApDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAwYTdcdTAz ZjFcM1wyXDJcMlx1MDBhOVx1MDNmOFwzXDJcMlwyXHUwMGFiIikNCj4gPg0KPiA+ICsNCj4gYnVm LndyaXRlKCJcdTAzZmVcM1wyXDJcMlx1MDBhZFx1MDQwY1wzXDJcMlwyXHUwMGFmXHUwNDE5XDNc MlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMGIxXHUwNDI2XDNcMlwyXDJc dTAwYjNcdTA0MzJcM1wyXDJcMlx1MDBiNVx1MDQzN1wzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlwyXDJcMlx1MDBiN1x1MDQ0MFwzXDJcMlwyXHUwMGI5XHUwNDRjXDNcMlwyXDJc dTAwYmJcdTA0NTQiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUw MGJkXHUwNDVmXDNcMlwyXDJcdTAwYmZcdTA0NjdcM1wyXDJcMlx1MDBjMSIpDQo+ID4NCj4gPiAr DQo+IGJ1Zi53cml0ZSgiXHUwNDZmXDNcMlwyXDJcdTAwYzNcdTA0NzRcM1wyXDJcMlx1MDBjNVx1 MDQ3Y1wzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDBjN1x1MDQ4NVwz XDJcMlwyXHUwMGM5XHUwNDkxXDNcMlwyXDJcdTAwY2JcdTA0OThcMyIpDQo+ID4NCj4gPiArDQo+ ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAwY2RcdTA0YTJcM1wyXDJcMlx1MDBjZlx1MDRhYVwz XDJcMlwyXHUwMGQxXHUwNGIyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwy XHUwMGQzXHUwNGJiXDNcMlwyXDJcdTAwZDVcdTA0YzZcM1wyXDJcMlx1MDBkNyIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcdTA0ZDBcM1wyXDJcMlx1MDBkOVx1MDRkN1wzXDJcMlwyXHUw MGRiXHUwNGRjXDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMGRkXHUw NGU4XDNcMlwyXDJcdTAwZGZcdTA0ZjdcM1wyXDJcMlx1MDBlMVx1MDUwMVwzIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDBlM1x1MDUwY1wzXDJcMlwyXHUwMGU1XHUw NTEyXDNcMlwyXDJcdTAwZTdcdTA1MTYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNc MlwyXDJcdTAwZTlcdTA1MWVcM1wyXDJcMlx1MDBlYlx1MDUyY1wzXDJcMlwyXHUwMGVkIikNCj4g Pg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTA1M2RcM1wyXDJcMlx1MDBlZlx1MDU1MlwzXDJcMlwy XHUwMGYxXHUwNTVlXDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMGYz XHUwNTY4XDNcMlwyXDJcdTAwZjVcdTA1NzdcM1wyXDJcMlx1MDBmN1x1MDU4YVwzIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcMlx1MDBmOVx1MDU5NVwzXDJcMlwyXHUwMGZiXHUw NTlmXDNcMlwyXDJcdTAwZmRcdTA1YWMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNc MlwyXDJcdTAwZmZcdTA1YjdcM1wyXDJcMlx1MDEwMVx1MDViZFwzXDJcMlwyXHUwMTAzIikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDVjNlwzXDJcMlwyXHUwMTA1XHUwNWQwXDNcMlwy XDJcdTAxMDdcdTA1ZDhcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAx MDlcdTA1ZTBcM1wyXDJcMlx1MDEwYlx1MDVlNVwzXDJcMlwyXHUwMTBkXHUwNWVlXDMiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTBmXHUwNWY1XDNcMlwyXDJcdTAx MTFcdTA1ZmJcM1wyXDJcMlx1MDExM1x1MDYwMCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcM1wyXDJcMlx1MDExNVx1MDYwNlwzXDJcMlwyXHUwMTE3XHUwNjBkXDNcMlwyXDJcdTAxMTki KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNjEyXDNcMlwyXDJcdTAxMWJcdTA2MTdc M1wyXDJcMlx1MDExZFx1MDYxZFwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo Ilx1MDExZlx1MDYyNlwzXDJcMlwyXHUwMTIxXHUwNjMxXDNcMlwyXDJcdTAxMjNcdTA2MzdcMyIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAxMjVcdTA2M2VcM1wyXDJc Mlx1MDEyN1x1MDY0M1wzXDJcMlwyXHUwMTI5XHUwNjRiIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMTJiXHUwNjUxXDNcMlwyXDJcdTAxMmRcdTA2NTZcM1wy XDJcMlx1MDEyZiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA2NWNcM1wyXDJcMlx1 MDEzMVx1MDY2OFwzXDJcMlwyXHUwMTMzXHUwNjc3XDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwMTM1XHUwNjg0XDNcMlwyXDJcdTAxMzdcdTA2OGVcM1wyXDJcMlx1MDEz OVx1MDY5N1wzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDEzYlx1 MDZhM1wzXDJcMlwyXHUwMTNkXHUwNmFiXDNcMlwyXDJcdTAxM2ZcdTA2YmQiDQo+ID4gKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxNDFcdTA2YzRcM1wyXDJcMlx1MDE0 M1x1MDZjYlwzXDJcMlwyXHUwMTQ1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDZk NVwzXDJcMlwyXHUwMTQ3XHUwNmRkXDNcMlwyXDJcdTAxNDlcdTA2ZTZcM1wyXDJcMiIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxNGJcdTA2ZjVcM1wyXDJcMlx1MDE0ZFx1MDZmY1wz XDJcMlwyXHUwMTRmXHUwNzA2XDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJc MlwyXHUwMTUxXHUwNzBmXDNcMlwyXDJcdTAxNTNcdTA3MTRcM1wyXDJcMlx1MDE1NVx1MDcxYSIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDE1N1x1MDcyNVwzXDJcMlwy XHUwMTU5XHUwNzMxXDNcMlwyXDJcdTAxNWIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XHUwNzNlXDNcMlwyXDJcdTAxNWRcdTA3NGRcM1wyXDJcMlx1MDE1Zlx1MDc1YVwzXDJcMlwyIikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDE2MVx1MDc2OVwzXDJcMlwyXHUwMTYzXHUw Nzc2XDNcMlwyXDJcdTAxNjVcdTA3ODhcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcMlwyXDJcdTAxNjdcdTA3OWNcM1wyXDJcMlx1MDE2OVx1MDdhN1wzXDJcMlwyXHUwMTZiXHUw N2IyIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDE2ZFx1MDdj MFwzXDJcMlwyXHUwMTZmXHUwN2NmXDNcMlwyXDJcdTAxNzEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXHUwN2RjXDNcMlwyXDJcdTAxNzNcdTA3ZWFcM1wyXDJcMlx1MDE3NVx1MDdmYVwz XDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDE3N1x1MDgwYVwzXDJcMlwy XHUwMTc5XHUwODE5XDNcMlwyXDJcdTAxN2JcdTA4MjZcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcMlwyXDJcdTAxN2RcdTA4MzVcM1wyXDJcMlx1MDE3Zlx1MDgzY1wzXDJcMlwy XHUwMTgxXHUwODQ0IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMTgz XHUwODQ5XDNcMlwyXDJcdTAxODVcdTA4NGVcM1wyXDJcMlx1MDE4NyIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcdTA4NTJcM1wyXDJcMlx1MDE4OVx1MDg1OFwzXDJcMlwyXHUwMThiXHUw ODVkXDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMThkXHUwODYxXDNc MlwyXDJcdTAxOGZcdTA4NmFcM1wyXDJcMlx1MDE5MVx1MDg2ZVwzIikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDE5M1x1MDg3NlwzXDJcMlwyXHUwMTk1XHUwODdkXDNc MlwyXDJcdTAxOTdcdTA4ODkiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNc MlwyXDJcdTAxOTlcdTA4OTVcM1wyXDJcMlx1MDE5Ylx1MDg5ZFwzXDJcMlwyXHUwMTlkIikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDhhN1wzXDJcMlwyXHUwMTlmXHUwOGIwXDNcMlwy XDJcdTAxYTFcdTA4YjlcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAx YTNcdTA4YmRcM1wyXDJcMlx1MDFhNVx1MDhjMlwzXDJcMlwyXHUwMWE3XHUwOGM4XDMiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMWE5XHUwOGNjXDNcMlwyXDJcdTAx YWJcdTA4ZDFcM1wyXDJcMlx1MDFhZFx1MDhkNiINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJcM1wyXDJcMlx1MDFhZlx1MDhlMFwzXDJcMlwyXHUwMWIxXHUwOGU4XDNcMlwyXDJc dTAxYjMiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDhlZlwzXDJcMlwyXHUwMWI1XHUw OGYzXDNcMlwyXDJcdTAxYjdcdTA4ZjZcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcdTAxYjlcdTA4ZmFcM1wyXDJcMlx1MDFiYlx1MDhmZVwzXDJcMlwyXHUwMWJkXHUwOTAw XDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMWJmXHUwOTA4XDNc MlwyXDJcdTAxYzFcdTA5MTJcM1wyXDJcMlx1MDFjM1x1MDkxYiIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcM1wyXDJcMlx1MDFjNVx1MDkyM1wzXDJcMlwyXHUwMWM3XHUwOTJiXDNcMlwy XDJcdTAxYzkiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwOTMxXDNcMlwyXDJcdTAx Y2JcdTA5MzhcM1wyXDJcMlx1MDFjZFx1MDk0MVwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlx1MDFjZlx1MDk1MFwzXDJcMlwyXHUwMWQxXHUwOTVkXDNcMlwyXDJcdTAxZDNc dTA5NjFcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAxZDVcdTA5 NmRcM1wyXDJcMlx1MDFkN1x1MDk3YVwzXDJcMlwyXHUwMWQ5XHUwOTg5Ig0KPiA+ICkNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMWRiXHUwOTljXDNcMlwyXDJcdTAxZGRc dTA5YWJcM1wyXDJcMlx1MDFkZiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA5YmFc M1wyXDJcMlx1MDFlMVx1MDljOVwzXDJcMlwyXHUwMWUzXHUwOWQ4XDNcMlwyXDIiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMWU1XHUwOWU4XDNcMlwyXDJcdTAxZTdcdTA5ZjlcM1wy XDJcMlx1MDFlOVx1MGEwYVwzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJc Mlx1MDFlYlx1MGExNlwzXDJcMlwyXHUwMWVkXHUwYTIwXDNcMlwyXDJcdTAxZWZcdTBhMmYiKQ0K PiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMWYxXHUwYTRjXDNcMlwyXDJcdTAx ZjNcdTBhNGVcM1wyXDJcMlx1MDFmNSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTU1 XDNcMlwyXDJcdTAxZjdcdTBhNjhcM1wyXDJcMlx1MDFmOVx1MGE3OVwzXDJcMlwyIikNCj4gPg0K PiA+ICsNCj4gYnVmLndyaXRlKCJcdTAxZmJcdTBhOGVcM1wyXDJcMlx1MDFmZFx1MGE5OVwzXDJc MlwyXHUwMWZmXHUwYTlkXDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwy XHUwMjAxXHUwYWE4XDNcMlwyXDJcdTAyMDNcdTAyMDRcN3VcMlwyXHUwMjA0XHUwMjA1IikNCj4g Pg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcN2pcMlwyXHUwMjA1XHUwMjA2XDdxXDJcMlx1MDIwNlx1 MDIwN1w3eVwyXDJcdTAyMDdcNCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcM1wy XDJcMlx1MDIwOFx1MDIwOVw3clwyXDJcdTAyMDlcdTAyMGFcN3dcMlwyXHUwMjBhXHUwMjBiIg0K PiA+ICkNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3dVwyXDJcdTAyMGJcdTAyMGNcN2pc MlwyXHUwMjBjXDZcM1wyXDJcMlx1MDIwZFx1MDIwZSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0 ZSgiXDdyXDJcMlx1MDIwZVx1MDIwZlw3cVwyXDJcdTAyMGZcdTAyMTBcN3JcMlwyXHUwMjEwXGIi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAyMTFcdTAyMTJcNyVc MlwyXHUwMjEyXHUwMjEzXDdyXDJcMlx1MDIxM1x1MDIxNCINCj4gPiApDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcN3RcMlwyXHUwMjE0XHUwMjE1XDdjXDJcMlx1MDIxNVx1MDIxNlw3aVwy XDJcdTAyMTZcdTAyMTciKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdvXDJcMlx1MDIx N1x1MDIxOFw3Y1wyXDJcdTAyMThcblwzXDJcMlwyXHUwMjE5XHUwMjFhIikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlw3clwyXDJcdTAyMWFcdTAyMWJcN2NcMlwyXHUwMjFiXHUwMjFj XDdlXDJcMlx1MDIxY1x1MDIxZCIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDdtXDJcMlx1 MDIxZFxmXDNcMlwyXDJcdTAyMWVcdTAyMWZcNz9cMlwyXHUwMjFmXDE2XDMiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMjIwXHUwMjIxXDdLXDJcMlx1MDIyMVx1MDIy Mlw3T1wyXDJcdTAyMjJcdTAyMjMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdD XDJcMlx1MDIyM1x1MDIyNFw3SVwyXDJcdTAyMjRcdTAyMjVcN0dcMlwyXHUwMjI1XHUwMjI2IikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3YVwyXDJcdTAyMjZcdTAyMjdcN1ZcMlwy XHUwMjI3XHUwMjI4XDdRXDJcMlx1MDIyOFx1MDIyOSINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcN01cMlwyXHUwMjI5XHUwMjJhXDdHXDJcMlx1MDIyYVx1MDIyYlw3UFwyXDJc dTAyMmJcMjAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAyMmNc dTAyMmRcN0pcMlwyXHUwMjJkXHUwMjJlXDdRXDJcMlx1MDIyZVx1MDIyZiIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcN1RcMlwyXHUwMjJmXHUwMjMwXDdLXDJcMlx1MDIzMFx1MDIz MVw3XFxcMlwyXHUwMjMxXHUwMjMyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3 UVwyXDJcdTAyMzJcdTAyMzNcN1BcMlwyXHUwMjMzXHUwMjM0XDdWXDJcMlx1MDIzNFx1MDIzNSIN Cj4gPiApDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcN0NcMlwyXHUwMjM1XHUwMjM2XDdO XDJcMlx1MDIzNlwyMlwzXDJcMlwyXHUwMjM3XHUwMjM4IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlw3T1wyXDJcdTAyMzhcdTAyMzlcN1dcMlwyXHUwMjM5XHUwMjNhXDdOXDJcMlx1 MDIzYVx1MDIzYg0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcN1ZcMlwy XHUwMjNiXHUwMjNjXDdLXDJcMlx1MDIzY1x1MDIzZFw3YVwyXDJcdTAyM2RcdTAyM2UiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdOXDJcMlx1MDIzZVx1MDIzZlw3S1wyXDJcdTAy M2ZcdTAyNDBcN1BcMlwyXHUwMjQwXHUwMjQxIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo Ilw3R1wyXDJcdTAyNDFcMjRcM1wyXDJcMlx1MDI0Mlx1MDI0M1w3PlwyXDJcdTAyNDNcdTAyNDQi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDc+XDJcMlx1MDI0NFwyNlwzXDJcMlwyXHUw MjQ1XHUwMjQ2XDdAXDJcMlx1MDI0Nlx1MDI0NyIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3Jp dGUoIlw3QFwyXDJcdTAyNDdcMzBcM1wyXDJcMlx1MDI0OFx1MDI0OVw3LQ0KPiA+IFwyXDJcdTAy NDlcMzJcMyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXDJcdTAyNGFcdTAyNGJc NyxcMlwyXHUwMjRiXDM0XDNcMlwyXDJcdTAyNGNcdTAyNGQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXDdcJ1wyXDJcdTAyNGRcMzZcM1wyXDJcMlx1MDI0ZVx1MDI0Zlw3aFwyXDJcdTAy NGZcdTAyNTAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdxXDJcMlx1MDI1MFx1 MDI1MVw3dFwyXDJcdTAyNTFcdTAyNTJcN29cMlwyXHUwMjUyXHUwMjUzIikNCj4gPg0KPiA+ICsg ICAgICAgIGJ1Zi53cml0ZSgiXDdjXDJcMlx1MDI1M1x1MDI1NFw3dlwyXDJcdTAyNTQNCj4gXDNc MlwyXDJcdTAyNTVcdTAyNTYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdBXDJcMlx1 MDI1NlwiXDNcMlwyXDJcdTAyNTdcdTAyNThcNyVcMlwyXHUwMjU4XHUwMjU5IikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3ZlwyXDJcdTAyNTlcdTAyNWFcN2dcMlwyXHUwMjVhXHUw MjViXDdoXDJcMlx1MDI1Ylx1MDI1YyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcN2tc MlwyXHUwMjVjXHUwMjVkXDdwXDJcMlx1MDI1ZFx1MDI1ZVw3Z1wyXDJcdTAyNWUkXDMiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMjVmXHUwMjYwXDclXDJcMlx1MDI2 MFx1MDI2MVw3a1wyXDJcdTAyNjFcdTAyNjIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXDdwXDJcMlx1MDI2Mlx1MDI2M1w3ZVwyXDJcdTAyNjNcdTAyNjRcN25cMlwyXHUwMjY0XHUw MjY1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3d1wyXDJcdTAyNjVcdTAyNjZcN2Zc MlwyXHUwMjY2XHUwMjY3XDdnXDJcMlx1MDI2NyZcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcMlwyXDJcdTAyNjhcdTAyNjlcN2hcMlwyXHUwMjY5XHUwMjZhXDdxXDJcMlx1MDI2 YVx1MDI2YiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcN3RcMlwyXHUwMjZiXHUw MjZjXDdvXDJcMlx1MDI2Y1x1MDI2ZFw3clwyXDJcdTAyNmRcdTAyNmUiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXDdtXDJcMlx1MDI2ZVx1MDI2Zlw3aVwyXDJcdTAyNmZcdTAyNzBc N3ZcMlwyXHUwMjcwXHUwMjcxIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3e1wyXDJc dTAyNzFcdTAyNzJcN3JcMlwyXHUwMjcyXHUwMjczXDdnXDJcMlx1MDI3MyhcMyIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXDJcdTAyNzRcdTAyNzVcN31cMlwyXHUwMjc1KlwzXDJc MlwyXHUwMjc2XHUwMjc3XDciKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwxNzdcMlwyXHUw Mjc3LFwzXDJcMlwyXHUwMjc4XHUwMjc5XDcqXDJcMlx1MDI3OS5cM1wyIikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlwyXDJcdTAyN2FcdTAyN2JcNytcMlwyXHUwMjdiXDYwXDNcMlwyXDJc dTAyN2NcdTAyN2RcNyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXVwyXDJcdTAyN2RcNjJc M1wyXDJcMlx1MDI3ZVx1MDI3Zlw3X1wyXDJcdTAyN2ZcNjRcM1wyIikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlwyXDJcdTAyODBcdTAyODFcN1w2MFwyXDJcdTAyODFcNjZcM1wyXDJcMlx1 MDI4Mlx1MDI4MyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDcvXDJcMlx1MDI4MzhcM1wy XDJcMlx1MDI4NFx1MDI4NVw3PFwyXDJcdTAyODU6XDNcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlwyXHUwMjg2XHUwMjg3XDdcNjFcMlwyXHUwMjg3PFwzXDJcMlwyXHUwMjg4XHUw Mjg5XDc9IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTAyODk+XDNcMlwyXDJc dTAyOGFcdTAyOGJcNy5cMlwyXHUwMjhiQFwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlx1MDI4Y1x1MDI4ZFw3P1wyXDJcdTAyOGRcdTAyOGVcNz9cMlwyXHUwMjhlQlwzXDJc MlwyIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTAyOGZcdTAyOTBcNyNcMlwyXHUwMjkw XHUwMjkxXDc/XDJcMlx1MDI5MURcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgi XHUwMjkyXHUwMjkzXDc+XDJcMlx1MDI5M1x1MDI5NFw3P1wyXDJcdTAyOTRGXDNcMlwyXDIiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMjk1XHUwMjk2XDc+XDJcMlx1MDI5NkhcM1wy XDJcMlx1MDI5N1x1MDI5OFw3QFwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUw Mjk4XHUwMjk5XDc/XDJcMlx1MDI5OUpcM1wyXDJcMlx1MDI5YVx1MDI5Ylw3QFwyXDIiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMjliTFwzXDJcMlwyXHUwMjljXHUwMjlkXDd+XDJc Mlx1MDI5ZE5cM1wyXDJcMlx1MDI5ZSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwMjlm XDcoXDJcMlx1MDI5ZlBcM1wyXDJcMlx1MDJhMFx1MDJhMVw3ZlwyXDJcdTAyYTEiKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMmEyXDdnXDJcMlx1MDJhMlx1MDJhM1w3eFwyXDJc dTAyYTNcdTAyYTRcN2tcMlwyXHUwMmE0IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo Ilx1MDJhNVw3ZVwyXDJcdTAyYTVcdTAyYTZcN2dcMlwyXHUwMmE2XHUwMmE3XDdyXDJcMlx1MDJh NyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAyYThcN2NcMlwyXHUwMmE4XHUw MmE5XDd2XDJcMlx1MDJhOVx1MDJhYVw3alwyXDJcdTAyYWEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiUlwzXDJcMlwyXHUwMmFiXHUwMmFjXDdoXDJcMlx1MDJhY1x1MDJhZFw3cVwyXDJc dTAyYWQiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMmFlXDd0XDJcMlx1MDJh ZVx1MDJhZlw3b1wyXDJcdTAyYWZcdTAyYjBcN3VcMlwyXHUwMmIwIikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlx1MDJiMVw3Z1wyXDJcdTAyYjFcdTAyYjJcN3ZcMlwyXHUwMmIyVFwzXDJc MlwyXHUwMmIzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDJiNFw3aFwyXDJc dTAyYjRcdTAyYjVcN3FcMlwyXHUwMmI1XHUwMmI2XDd0XDJcMlx1MDJiNiIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcdTAyYjdcN29cMlwyXHUwMmI3XHUwMmI4XDd1XDJcMlx1MDJi OFx1MDJiOVw3Z1wyXDJcdTAyYjkiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHUwMmJhXDd2XDJcMlx1MDJiYVx1MDJiYlw3a1wyXDJcdTAyYmJcdTAyYmNcN2ZcMlwyXHUw MmJjIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJWXDNcMlwyXDJcdTAyYmRcdTAyYmVcN2dc MlwyXHUwMmJlXHUwMmJmXDdwXDJcMlx1MDJiZiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcdTAyYzBcN2ZcMlwyXHUwMmMwXHUwMmMxXDdoXDJcMlx1MDJjMVx1MDJjMlw3cVwyXDJcdTAy YzIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMmMzXDd0XDJcMlx1MDJjM1x1MDJj NFw3b1wyXDJcdTAyYzRcdTAyYzVcN3VcMlwyXHUwMmM1IikNCj4gPg0KPiA+ICsNCj4gYnVmLndy aXRlKCJcdTAyYzZcN2dcMlwyXHUwMmM2XHUwMmM3XDd2XDJcMlx1MDJjN1hcM1wyXDJcMlx1MDJj OCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAyYzlcN3ZcMlwyXHUwMmM5XHUwMmNh XDdrXDJcMlx1MDJjYVx1MDJjYlw3dlwyXDJcdTAyY2IiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3Jp dGUoIlx1MDJjY1w3blwyXDJcdTAyY2NcdTAyY2RcN2dcMlwyXHUwMmNkWlwzXDJcMlwyXHUwMmNl IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDJjZlw3aFwyXDJcdTAyY2ZcdTAy ZDBcN3FcMlwyXHUwMmQwXHUwMmQxXDd0XDJcMlx1MDJkMSIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcdTAyZDJcN29cMlwyXHUwMmQyXHUwMmQzXDdrXDJcMlx1MDJkM1x1MDJkNFw3 ZlwyXDJcdTAyZDQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXFxcM1wyXDJcMlx1MDJk NVx1MDJkNlw3cVwyXDJcdTAyZDZcdTAyZDdcN3BcMlwyXHUwMmQ3IikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlx1MDJkOFw3Z1wyXDJcdTAyZDhcdTAyZDlcN3FcMlwyXHUwMmQ5XHUw MmRhXDdoXDJcMlx1MDJkYSINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJeXDNc MlwyXDJcdTAyZGJcdTAyZGNcN2dcMlwyXHUwMmRjXHUwMmRkXDdwXDJcMlx1MDJkZCIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAyZGVcN2ZcMlwyXHUwMmRlXHUwMmRmXDdxXDJc Mlx1MDJkZlx1MDJlMFw3cFwyXDJcdTAyZTAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHUwMmUxXDdnXDJcMlx1MDJlMVx1MDJlMlw3cVwyXDJcdTAyZTJcdTAyZTNcN2hcMlwyXHUw MmUzIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJgXDNcMlwyXDJcdTAyZTRcdTAyZTVcN3Jc MlwyXHUwMmU1XHUwMmU2XDd0XDJcMlx1MDJlNiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcdTAyZTdcN3FcMlwyXHUwMmU3XHUwMmU4XDdvXDJcMlx1MDJlOFx1MDJlOVw3clwyXDJc dTAyZTkiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDJlYVw3dlwyXDJcdTAyZWFiXDNc MlwyXDJcdTAyZWJcdTAyZWNcN3FcMlwyXHUwMmVjIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlx1MDJlZFw3dFwyXDJcdTAyZWRcdTAyZWVcN2ZcMlwyXHUwMmVlXHUwMmVmXDdnXDJcMlx1 MDJlZiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAyZjBcN3RcMlwyXHUwMmYwXHUw MmYxXDdnXDJcMlx1MDJmMVx1MDJmMlw3ZlwyXDJcdTAyZjIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXHUwMmYzXDduXDJcMlx1MDJmM1x1MDJmNFw3a1wyXDJcdTAyZjRcdTAyZjVcN3Vc MlwyXHUwMmY1IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMmY2XDd2XDJcMlx1 MDJmNmRcM1wyXDJcMlx1MDJmN1x1MDJmOFw3b1wyXDJcdTAyZjgiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwMmY5XDdjXDJcMlx1MDJmOVx1MDJmYVw3elwyXDJcdTAyZmFcdTAyZmJc N2VcMlwyXHUwMmZiIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDJmY1w3cVwyXDJc dTAyZmNcdTAyZmRcN3BcMlwyXHUwMmZkXHUwMmZlXDd2XDJcMlx1MDJmZSIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcdTAyZmZcN2NcMlwyXHUwMmZmXHUwMzAwXDdrXDJcMlx1MDMwMFx1 MDMwMVw3cFwyXDJcdTAzMDEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMzAy XDdnXDJcMlx1MDMwMlx1MDMwM1w3dFwyXDJcdTAzMDNcdTAzMDRcN3VcMlwyXHUwMzA0IikNCj4g Pg0KPiA+ICsNCj4gYnVmLndyaXRlKCJmXDNcMlwyXDJcdTAzMDVcdTAzMDZcN2dcMlwyXHUwMzA2 XHUwMzA3XDdwXDJcMlx1MDMwNyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAz MDhcN2ZcMlwyXHUwMzA4XHUwMzA5XDduXDJcMlx1MDMwOVx1MDMwYVw3a1wyXDJcdTAzMGEiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMzBiXDd1XDJcMlx1MDMwYlx1MDMwY1w3dlwy XDJcdTAzMGNoXDNcMlwyXDJcdTAzMGQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUw MzBlXDdnXDJcMlx1MDMwZVx1MDMwZlw3cFwyXDJcdTAzMGZcdTAzMTBcN2ZcMlwyXHUwMzEwIikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDMxMVw3aFwyXDJcdTAzMTFcdTAzMTJc N3FcMlwyXHUwMzEyXHUwMzEzXDd0XDJcMlx1MDMxMyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0 ZSgiXHUwMzE0XDdvXDJcMlx1MDMxNGpcM1wyXDJcMlx1MDMxNVx1MDMxNlw3aFwyXDJcdTAzMTYi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMzE3XDdxXDJcMlx1MDMxN1x1MDMx OFw3dFwyXDJcdTAzMThcdTAzMTlcN29cMlwyXHUwMzE5IikNCj4gPg0KPiA+ICsNCj4gYnVmLndy aXRlKCJsXDNcMlwyXDJcdTAzMWFcdTAzMWJcN2hcMlwyXHUwMzFiXHUwMzFjXDdxXDJcMlx1MDMx YyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAzMWRcN3RcMlwyXHUwMzFkXHUw MzFlXDdvXDJcMlx1MDMxZVx1MDMxZlw3b1wyXDJcdTAzMWYiKQ0KPiA+DQo+ID4gKw0KPiBidWYu d3JpdGUoIlx1MDMyMFw3Y1wyXDJcdTAzMjBcdTAzMjFcN3JcMlwyXHUwMzIxblwzXDJcMlwyXHUw MzIyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDMyM1w3b1wyXDJcdTAzMjNc dTAzMjRcN2NcMlwyXHUwMzI0XHUwMzI1XDdyXDJcMlx1MDMyNSIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcdTAzMjZcN3ZcMlwyXHUwMzI2XHUwMzI3XDdrXDJcMlx1MDMyN1x1MDMy OFw3dlwyXDJcdTAzMjgiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMzI5XDduXDJc Mlx1MDMyOVx1MDMyYVw3Z1wyXDJcdTAzMmFwXDNcMlwyXDJcdTAzMmIiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXHUwMzJjXDdvXDJcMlx1MDMyY1x1MDMyZFw3Y1wyXDJcdTAzMmRc dTAzMmVcN3JcMlwyXHUwMzJlIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDMy Zlw3aVwyXDJcdTAzMmZcdTAzMzBcN3dcMlwyXHUwMzMwXHUwMzMxXDdrXDJcMlx1MDMzMSIpDQo+ ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzMyXDdmXDJcMlx1MDMzMnJcM1wyXDJcMlx1MDMz M1x1MDMzNFw3dVwyXDJcdTAzMzQiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw MzM1XDd3XDJcMlx1MDMzNVx1MDMzNlw3ZFwyXDJcdTAzMzZcdTAzMzdcN3ZcMlwyXHUwMzM3Ig0K PiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDMzOFw3a1wyXDJcdTAzMzhc dTAzMzlcN3ZcMlwyXHUwMzM5XHUwMzNhXDduXDJcMlx1MDMzYSIpDQo+ID4NCj4gPiArDQo+IGJ1 Zi53cml0ZSgiXHUwMzNiXDdnXDJcMlx1MDMzYnRcM1wyXDJcMlx1MDMzY1x1MDMzZFw3Z1wyXDJc dTAzM2QiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMzNlXDdwXDJcMlx1MDMz ZVx1MDMzZlw3ZlwyXDJcdTAzM2ZcdTAzNDBcN3VcMlwyXHUwMzQwIikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlx1MDM0MVw3d1wyXDJcdTAzNDFcdTAzNDJcN2RcMlwyXHUwMzQyXHUw MzQzXDd2XDJcMlx1MDM0MyINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJc dTAzNDRcN2tcMlwyXHUwMzQ0XHUwMzQ1XDd2XDJcMlx1MDM0NVx1MDM0Nlw3blwyXDJcdTAzNDYi KQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDM0N1w3Z1wyXDJcdTAzNDd2XDNcMlwyXDJc dTAzNDhcdTAzNDlcN2pcMlwyXHUwMzQ5IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo Ilx1MDM0YVw3Z1wyXDJcdTAzNGFcdTAzNGJcN25cMlwyXHUwMzRiXHUwMzRjXDdyXDJcMlx1MDM0 YyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgieFwzXDJcMlwyXHUwMzRkXHUwMzRlXDd2XDJc Mlx1MDM0ZVx1MDM0Zlw3Z1wyXDJcdTAzNGYiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1 MDM1MFw3elwyXDJcdTAzNTBcdTAzNTFcN3ZcMlwyXHUwMzUxelwzXDJcMlwyXHUwMzUyIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDM1M1w3cVwyXDJcdTAzNTNcdTAzNTRcN3Jc MlwyXHUwMzU0XHUwMzU1XDd2XDJcMlx1MDM1NSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcdTAzNTZcN2tcMlwyXHUwMzU2XHUwMzU3XDdxXDJcMlx1MDM1N1x1MDM1OFw3cFwyXDJc dTAzNTgiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgifFwzXDJcMlwyXHUwMzU5XHUwMzVh XDdoXDJcMlx1MDM1YVx1MDM1Ylw3blwyXDJcdTAzNWIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXHUwMzVjXDdjXDJcMlx1MDM1Y1x1MDM1ZFw3aVwyXDJcdTAzNWRcdTAzNWVcN3Vc MlwyXHUwMzVlIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJ+XDNcMlwyXDJcdTAzNWZcdTAz NjBcN2ZcMlwyXHUwMzYwXHUwMzYxXDdjXDJcMlx1MDM2MSIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcdTAzNjJcN3ZcMlwyXHUwMzYyXHUwMzYzXDdnXDJcMlx1MDM2M1x1MDA4MFwz XDJcMlwyXHUwMzY0Ig0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDM2 NVw3Z1wyXDJcdTAzNjVcdTAzNjZcN3BcMlwyXHUwMzY2XHUwMzY3XDdmXDJcMlx1MDM2NyIpDQo+ ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAzNjhcN2ZcMlwyXHUwMzY4XHUwMzY5XDdj XDJcMlx1MDM2OVx1MDM2YVw3dlwyXDJcdTAzNmEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXHUwMzZiXDdnXDJcMlx1MDM2Ylx1MDA4MlwzXDJcMlwyXHUwMzZjXHUwMzZkXDd7XDJc Mlx1MDM2ZCINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAzNmVcN2dcMlwy XHUwMzZlXHUwMzZmXDdjXDJcMlx1MDM2Zlx1MDM3MFw3dFwyXDJcdTAzNzAiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMDg0XDNcMlwyXDJcdTAzNzFcdTAzNzJcN29cMlwyXHUw MzcyXHUwMzczXDdxXDJcMlx1MDM3MyINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcdTAzNzRcN3BcMlwyXHUwMzc0XHUwMzc1XDd2XDJcMlx1MDM3NVx1MDM3Nlw3alwyXDJc dTAzNzYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMDg2XDNcMlwyXDJcdTAz NzdcdTAzNzhcN2ZcMlwyXHUwMzc4XHUwMzc5XDdjXDJcMlx1MDM3OSIpDQo+ID4NCj4gPiArDQo+ ID4NCj4gYnVmLndyaXRlKCJcdTAzN2FcN3tcMlwyXHUwMzdhXHUwMDg4XDNcMlwyXDJcdTAzN2Jc dTAzN2NcN3ZcMlwyXHUwMzdjIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDM3 ZFw3a1wyXDJcdTAzN2RcdTAzN2VcN29cMlwyXHUwMzdlXHUwMzdmXDdnXDJcMlx1MDM3ZiIpDQo+ ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAwOGFcM1wyXDJcMlx1MDM4MFx1MDM4MVw3 Z1wyXDJcdTAzODFcdTAzODJcN3BcMlwyXHUwMzgyIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlx1MDM4M1w3ZlwyXDJcdTAzODNcdTAzODRcN3ZcMlwyXHUwMzg0XHUwMzg1 XDdrXDJcMlx1MDM4NSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAzODZcN29c MlwyXHUwMzg2XHUwMzg3XDdnXDJcMlx1MDM4N1x1MDA4Y1wzXDJcMlwyXHUwMzg4Ig0KPiA+ICkN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDM4OVw3alwyXDJcdTAzODlcdTAzOGFc N3FcMlwyXHUwMzhhXHUwMzhiXDd3XDJcMlx1MDM4YiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcdTAzOGNcN3RcMlwyXHUwMzhjXHUwMDhlXDNcMlwyXDJcdTAzOGRcdTAzOGVcN29c MlwyXHUwMzhlIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDM4Zlw3a1wyXDJc dTAzOGZcdTAzOTBcN3BcMlwyXHUwMzkwXHUwMzkxXDd3XDJcMlx1MDM5MSIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcdTAzOTJcN3ZcMlwyXHUwMzkyXHUwMzkzXDdnXDJcMlx1MDM5 M1x1MDA5MFwzXDJcMlwyXHUwMzk0Ig0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlx1MDM5NVw3dVwyXDJcdTAzOTVcdTAzOTZcN2dcMlwyXHUwMzk2XHUwMzk3XDdlXDJcMlx1 MDM5NyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAzOThcN3FcMlwyXHUwMzk4 XHUwMzk5XDdwXDJcMlx1MDM5OVx1MDM5YVw3ZlwyXDJcdTAzOWEiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXHUwMDkyXDNcMlwyXDJcdTAzOWJcdTAzOWNcN2lcMlwyXHUwMzljXHUw MzlkXDd0XDJcMlx1MDM5ZCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAzOWVcN2Nc MlwyXHUwMzllXHUwMzlmXDd7XDJcMlx1MDM5Zlx1MDNhMFw3cVwyXDJcdTAzYTAiKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwM2ExXDd3XDJcMlx1MDNhMVx1MDNhMlw3dlwyXDJc dTAzYTJcdTAzYTNcN2tcMlwyXHUwM2EzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo Ilx1MDNhNFw3aFwyXDJcdTAzYTRcdTAwOTRcM1wyXDJcMlx1MDNhNVx1MDNhNlw3blwyXDJcdTAz YTYiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwM2E3XDdjXDJcMlx1 MDNhN1x1MDNhOFw3ZFwyXDJcdTAzYThcdTAzYTlcN2dcMlwyXHUwM2E5IikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlx1MDNhYVw3blwyXDJcdTAzYWFcdTAwOTZcM1wyXDJcMlx1MDNh Ylx1MDNhY1w3dlwyXDJcdTAzYWMiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHUwM2FkXDdrXDJcMlx1MDNhZFx1MDNhZVw3b1wyXDJcdTAzYWVcdTAzYWZcN2dcMlwyXHUw M2FmIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDNiMFw3cVwyXDJcdTAzYjBc dTAzYjFcN3dcMlwyXHUwM2IxXHUwM2IyXDd2XDJcMlx1MDNiMiINCj4gPiApDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcdTAwOThcM1wyXDJcMlx1MDNiM1x1MDNiNFw3a1wyXDJcdTAz YjRcdTAzYjVcN3BcMlwyXHUwM2I1DQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlx1MDNiNlw3eFwyXDJcdTAzYjZcdTAzYjdcN2dcMlwyXHUwM2I3XHUwM2I4XDdwXDJcMlx1 MDNiOCINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAzYjlcN3ZcMlwy XHUwM2I5XHUwM2JhXDdxXDJcMlx1MDNiYVx1MDNiYlw3dFwyXDJcdTAzYmIiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwM2JjXDd7XDJcMlx1MDNiY1x1MDA5YVwzXDJcMlwyXHUw M2JkXHUwM2JlXDdhXDJcMlx1MDNiZSINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcdTAzYmZcN1BcMlwyXHUwM2JmXHUwM2MwXDdRXDJcMlx1MDNjMFx1MDNjMVw3UFwyXDJcdTAz YzEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwM2MyXDdhXDJcMlx1MDNjMlx1MDNj M1w3UFwyXDJcdTAzYzNcdTAzYzRcN1hcMlwyXHUwM2M0IikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlx1MDNjNVw3YVwyXDJcdTAzYzVcdTAzYzZcN0ZcMlwyXHUwM2M2XHUwM2M3XDdDXDJc Mlx1MDNjNyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAzYzhcN1ZcMlwyXHUw M2M4XHUwM2M5XDdDXDJcMlx1MDNjOVx1MDNjYVw3YVwyXDJcdTAzY2EiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXHUwM2NiXDdPXDJcMlx1MDNjYlx1MDNjY1w3Q1wyXDJcdTAzY2Nc dTAzY2RcN1JcMlwyXHUwM2NkIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDA5 Y1wzXDJcMlwyXHUwM2NlXHUwM2NmXDd1XDJcMlx1MDNjZlx1MDNkMFw3dlwyXDJcdTAzZDAiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwM2QxXDd0XDJcMlx1MDNkMVx1MDNkMlw3 d1wyXDJcdTAzZDJcdTAzZDNcN2VcMlwyXHUwM2QzIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlx1MDNkNFw3dlwyXDJcdTAzZDRcdTAwOWVcM1wyXDJcMlx1MDNkNVx1MDNk Nlw3d1wyXDJcdTAzZDYNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw M2Q3XDdwXDJcMlx1MDNkN1x1MDNkOFw3a1wyXDJcdTAzZDhcdTAzZDlcN3FcMlwyXHUwM2Q5Ig0K PiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDNkYVw3cFwyXDJcdTAzZGFc dTAwYTBcM1wyXDJcMlx1MDNkYlx1MDNkY1w3RFwyXDJcdTAzZGMNCj4gPiAiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwM2RkXDdRXDJcMlx1MDNkZFx1MDNkZVw3UVwyXDJcdTAz ZGVcdTAzZGZcN05cMlwyXHUwM2RmIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlx1MDNlMFw3R1wyXDJcdTAzZTBcdTAzZTFcN0NcMlwyXHUwM2UxXHUwM2UyXDdQXDJcMlx1 MDNlMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAwYTJcM1wyXDJcMlx1MDNl M1x1MDNlNFw3V1wyXDJcdTAzZTRcdTAzZTVcN0tcMlwyXHUwM2U1DQo+ID4gIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDNlNlw3UFwyXDJcdTAzZTZcdTAzZTdcN1ZcMlwyXHUw M2U3XHUwM2U4XDc4XDJcMlx1MDNlOCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAz ZTlcN1w2NlwyXDJcdTAzZTlcdTAwYTRcM1wyXDJcMlx1MDNlYVx1MDNlYlw3V1wyXDIiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwM2ViXHUwM2VjXDdLXDJcMlx1MDNlY1x1MDNlZFw3 UFwyXDJcdTAzZWRcdTAzZWVcN1YiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJc Mlx1MDNlZVx1MDNlZlw3XDY1XDJcMlx1MDNlZlx1MDNmMFw3XDY0XDJcMlx1MDNmMFx1MDBhNiIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDNmMVx1MDNmMlw3V1wy XDJcdTAzZjJcdTAzZjNcN0tcMlwyXHUwM2YzXHUwM2Y0IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXDdQXDJcMlx1MDNmNFx1MDNmNVw3VlwyXDJcdTAzZjVcdTAzZjZcN1w2M1wyXDJc dTAzZjYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwM2Y3XDc4XDJcMlx1MDNm N1x1MDBhOFwzXDJcMlwyXHUwM2Y4XHUwM2Y5XDdXXDJcMlx1MDNmOSIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcdTAzZmFcN0tcMlwyXHUwM2ZhXHUwM2ZiXDdQXDJcMlx1MDNmYlx1MDNm Y1w3VlwyXDJcdTAzZmMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwM2ZkXDc6XDJc Mlx1MDNmZFx1MDBhYVwzXDJcMlwyXHUwM2ZlXHUwM2ZmXDdHXDJcMlx1MDNmZiIpDQo+ID4NCj4g PiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0MDBcN0hcMlwyXHUwNDAwXHUwNDAxXDdLXDJcMlx1 MDQwMVx1MDQwMlw3YVwyXDJcdTA0MDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XHUwNDAzXDdVXDJcMlx1MDQwM1x1MDQwNFw3VlwyXDJcdTA0MDRcdTA0MDVcN1RcMlwyXHUwNDA1 IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDQwNlw3S1wyXDJcdTA0MDZcdTA0 MDdcN1BcMlwyXHUwNDA3XHUwNDA4XDdJXDJcMlx1MDQwOCIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcdTA0MDlcN2FcMlwyXHUwNDA5XHUwNDBhXDdLXDJcMlx1MDQwYVx1MDQwYlw3 RlwyXDJcdTA0MGIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMGFjXDNcMlwy XDJcdTA0MGNcdTA0MGRcN0dcMlwyXHUwNDBkXHUwNDBlXDdIXDJcMlx1MDQwZQ0KPiA+ICIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA0MGZcN0tcMlwyXHUwNDBmXHUwNDEwXDdhXDJc Mlx1MDQxMFx1MDQxMVw3SlwyXDJcdTA0MTEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHUwNDEyXDdLXDJcMlx1MDQxMlx1MDQxM1w3S1wyXDJcdTA0MTNcdTA0MTRcN2FcMlwyXHUw NDE0IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDQxNVw3RlwyXDJcdTA0MTVc dTA0MTZcN0NcMlwyXHUwNDE2XHUwNDE3XDdWXDJcMlx1MDQxNyIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcdTA0MThcN0dcMlwyXHUwNDE4XHUwMGFlXDNcMlwyXDJcdTA0MTlcdTA0 MWFcN0dcMlwyXHUwNDFhDQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1 MDQxYlw3SFwyXDJcdTA0MWJcdTA0MWNcN0tcMlwyXHUwNDFjXHUwNDFkXDdhXDJcMlx1MDQxZCIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA0MWVcN0pcMlwyXHUwNDFlXHUwNDFmXDdL XDJcMlx1MDQxZlx1MDQyMFw3S1wyXDJcdTA0MjAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXHUwNDIxXDdhXDJcMlx1MDQyMVx1MDQyMlw3VlwyXDJcdTA0MjJcdTA0MjNcN0tcMlwy XHUwNDIzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDQyNFw3T1wyXDJcdTA0 MjRcdTA0MjVcN0dcMlwyXHUwNDI1XHUwMGIwXDNcMlwyXDJcdTA0MjYNCj4gPiAiKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNDI3XDdHXDJcMlx1MDQyN1x1MDQyOFw3SFwyXDJc dTA0MjhcdTA0MjlcN0tcMlwyXHUwNDI5Ig0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYu d3JpdGUoIlx1MDQyYVw3YVwyXDJcdTA0MmFcdTA0MmJcN0pcMlwyXHUwNDJiXHUwNDJjXDdLXDJc Mlx1MDQyYyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0MmRcN0tcMlwyXHUw NDJkXHUwNDJlXDdhXDJcMlx1MDQyZVx1MDQyZlw3VFwyXDJcdTA0MmYiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXHUwNDMwXDdHXDJcMlx1MDQzMFx1MDQzMVw3SFwyXDJcdTA0MzFc dTAwYjJcM1wyXDJcMlx1MDQzMg0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcdTA0MzNcN2lcMlwyXHUwNDMzXHUwNDM0XDd3XDJcMlx1MDQzNFx1MDQzNVw3a1wyXDJcdTA0 MzUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNDM2XDdmXDJcMlx1MDQzNlx1 MDBiNFwzXDJcMlwyXHUwNDM3XHUwNDM4XDdlXDJcMlx1MDQzOCINCj4gPiApDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0MzlcN2pcMlwyXHUwNDM5XHUwNDNhXDdnXDJcMlx1MDQz YVx1MDQzYlw3ZVwyXDJcdTA0M2IiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw NDNjXDdtXDJcMlx1MDQzY1x1MDQzZFw3ZFwyXDJcdTA0M2RcdTA0M2VcN3FcMlwyXHUwNDNlIg0K PiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDQzZlw3elwyXDJcdTA0M2Zc dTAwYjZcM1wyXDJcMlx1MDQ0MFx1MDQ0MVw3Z1wyXDJcdTA0NDEiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXHUwNDQyXDdwXDJcMlx1MDQ0Mlx1MDQ0M1w3ZlwyXDJcdTA0NDNcdTA0 NDRcN2VcMlwyXHUwNDQ0IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDQ0NVw3 alwyXDJcdTA0NDVcdTA0NDZcN2dcMlwyXHUwNDQ2XHUwNDQ3XDdlXDJcMlx1MDQ0NyIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0NDhcN21cMlwyXHUwNDQ4XHUwNDQ5XDdkXDJc Mlx1MDQ0OVx1MDQ0YVw3cVwyXDJcdTA0NGEiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXHUwNDRiXDd6XDJcMlx1MDQ0Ylx1MDBiOFwzXDJcMlwyXHUwNDRjXHUwNDRkXDdw XDJcMlx1MDQ0ZCINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0NGVc N3dcMlwyXHUwNDRlXHUwNDRmXDdvXDJcMlx1MDQ0Zlx1MDQ1MFw3Z1wyXDJcdTA0NTAiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNDUxXDd0XDJcMlx1MDQ1MVx1MDQ1Mlw3a1wy XDJcdTA0NTJcdTA0NTNcN2VcMlwyXHUwNDUzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlx1MDBiYVwzXDJcMlwyXHUwNDU0XHUwNDU1XDdnXDJcMlx1MDQ1NVx1MDQ1Nlw3cFwyXDJc dTA0NTYiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNDU3XDdmXDJc Mlx1MDQ1N1x1MDQ1OFw3cFwyXDJcdTA0NThcdTA0NTlcN3dcMlwyXHUwNDU5IikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDQ1YVw3b1wyXDJcdTA0NWFcdTA0NWJcN2dcMlwyXHUw NDViXHUwNDVjXDd0XDJcMlx1MDQ1YyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJc dTA0NWRcN2tcMlwyXHUwNDVkXHUwNDVlXDdlXDJcMlx1MDQ1ZVx1MDBiY1wzXDJcMlwyXHUwNDVm IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDQ2MFw3b1wyXDJcdTA0NjBcdTA0 NjFcN2tcMlwyXHUwNDYxXHUwNDYyXDdwXDJcMlx1MDQ2MiIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcdTA0NjNcN2tcMlwyXHUwNDYzXHUwNDY0XDdvXDJcMlx1MDQ2NFx1MDQ2NVw3 d1wyXDJcdTA0NjUiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNDY2 XDdvXDJcMlx1MDQ2Nlx1MDBiZVwzXDJcMlwyXHUwNDY3XHUwNDY4XDdvXDJcMlx1MDQ2OCINCj4g PiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0NjlcN2NcMlwyXHUwNDY5XHUw NDZhXDd6XDJcMlx1MDQ2YVx1MDQ2Ylw3a1wyXDJcdTA0NmIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ IGJ1Zi53cml0ZSgiXHUwNDZjXDdvXDJcMlx1MDQ2Y1x1MDQ2ZFw3d1wyXDJcdTA0NmRcdTA0NmVc N29cMlwyXHUwNDZlIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDBj MFwzXDJcMlwyXHUwNDZmXHUwNDcwXDd1XDJcMlx1MDQ3MFx1MDQ3MVw3dlwyXDJcdTA0NzEiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNDcyXDdnXDJcMlx1MDQ3Mlx1MDQ3M1w3 clwyXDJcdTA0NzNcdTAwYzJcM1wyXDJcMlx1MDQ3NCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcdTA0NzVcN2ZcMlwyXHUwNDc1XHUwNDc2XDdnXDJcMlx1MDQ3Nlx1MDQ3N1w3aFwy XDJcdTA0NzciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNDc4XDdjXDJcMlx1 MDQ3OFx1MDQ3OVw3d1wyXDJcdTA0NzlcdTA0N2FcN25cMlwyXHUwNDdhIikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlx1MDQ3Ylw3dlwyXDJcdTA0N2JcdTAwYzRcM1wyXDJcMlx1MDQ3 Y1x1MDQ3ZFw3clwyXDJcdTA0N2QiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw NDdlXDdjXDJcMlx1MDQ3ZVx1MDQ3Zlw3dVwyXDJcdTA0N2ZcdTA0ODBcN3VcMlwyXHUwNDgwIikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDQ4MVw3eVwyXDJcdTA0ODFcdTA0ODJc N3FcMlwyXHUwNDgyXHUwNDgzXDd0XDJcMlx1MDQ4MyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcdTA0ODRcN2ZcMlwyXHUwNDg0XHUwMGM2XDNcMlwyXDJcdTA0ODVcdTA0ODZcN2dc MlwyXHUwNDg2IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDQ4N1w3cFwyXDJc dTA0ODdcdTA0ODhcN2ZcMlwyXHUwNDg4XHUwNDg5XDdyXDJcMlx1MDQ4OSIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0OGFcN2NcMlwyXHUwNDhhXHUwNDhiXDd1XDJcMlx1MDQ4 Ylx1MDQ4Y1w3dVwyXDJcdTA0OGMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw NDhkXDd5XDJcMlx1MDQ4ZFx1MDQ4ZVw3cVwyXDJcdTA0OGVcdTA0OGZcN3RcMlwyXHUwNDhmIikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDQ5MFw3ZlwyXDJcdTA0OTBcdTAwYzhc M1wyXDJcMlx1MDQ5MVx1MDQ5Mlw3dVwyXDJcdTA0OTIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXHUwNDkzXDd2XDJcMlx1MDQ5M1x1MDQ5NFw3dFwyXDJcdTA0OTRcdTA0OTVcN2tc MlwyXHUwNDk1IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDQ5Nlw3cFwyXDJc dTA0OTZcdTA0OTdcN2lcMlwyXHUwNDk3XHUwMGNhXDNcMlwyXDJcdTA0OTgiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNDk5XDdnXDJcMlx1MDQ5OVx1MDQ5YVw3cFwyXDJcdTA0 OWFcdTA0OWJcN2ZcMlwyXHUwNDliIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1 MDQ5Y1w3dVwyXDJcdTA0OWNcdTA0OWRcN3ZcMlwyXHUwNDlkXHUwNDllXDd0XDJcMlx1MDQ5ZSIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA0OWZcN2tcMlwyXHUwNDlmXHUwNGEwXDdw XDJcMlx1MDRhMFx1MDRhMVw3aVwyXDJcdTA0YTEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXHUwMGNjXDNcMlwyXDJcdTA0YTJcdTA0YTNcN29cMlwyXHUwNGEzXHUwNGE0XDdrXDJc Mlx1MDRhNCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0YTVcN3BcMlwyXHUw NGE1XHUwNGE2XDd1XDJcMlx1MDRhNlx1MDRhN1w3a1wyXDJcdTA0YTciKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXHUwNGE4XDd8XDJcMlx1MDRhOFx1MDRhOVw3Z1wyXDJcdTA0YTlc dTAwY2VcM1wyXDJcMlx1MDRhYSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0 YWJcN29cMlwyXHUwNGFiXHUwNGFjXDdjXDJcMlx1MDRhY1x1MDRhZFw3elwyXDJcdTA0YWQiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNGFlXDd1XDJcMlx1MDRhZVx1MDRhZlw3 a1wyXDJcdTA0YWZcdTA0YjBcN3xcMlwyXHUwNGIwIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYu d3JpdGUoIlx1MDRiMVw3Z1wyXDJcdTA0YjFcdTAwZDBcM1wyXDJcMlx1MDRiMlx1MDRiM1w3Z1wy XDJcdTA0YjMNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNGI0XDdw XDJcMlx1MDRiNFx1MDRiNVw3ZVwyXDJcdTA0YjVcdTA0YjZcN3FcMlwyXHUwNGI2Ig0KPiA+ICkN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDRiN1w3ZlwyXDJcdTA0YjdcdTA0Yjhc N2tcMlwyXHUwNGI4XHUwNGI5XDdwXDJcMlx1MDRiOSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcdTA0YmFcN2lcMlwyXHUwNGJhXHUwMGQyXDNcMlwyXDJcdTA0YmJcdTA0YmNcN3Vc MlwyXHUwNGJjIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDRiZFw3 d1wyXDJcdTA0YmRcdTA0YmVcN3JcMlwyXHUwNGJlXHUwNGJmXDdyXDJcMlx1MDRiZiIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA0YzBcN3RcMlwyXHUwNGMwXHUwNGMxXDdnXDJcMlx1 MDRjMVx1MDRjMlw3dVwyXDJcdTA0YzIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XHUwNGMzXDd1XDJcMlx1MDRjM1x1MDRjNFw3a1wyXDJcdTA0YzRcdTA0YzVcN2hcMlwyXHUwNGM1 IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDBkNFwzXDJcMlwyXHUwNGM2XHUw NGM3XDdmXDJcMlx1MDRjN1x1MDRjOFw3a1wyXDJcdTA0YzgiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ IGJ1Zi53cml0ZSgiXHUwNGM5XDd1XDJcMlx1MDRjOVx1MDRjYVw3Y1wyXDJcdTA0Y2FcdTA0Y2Jc N2RcMlwyXHUwNGNiIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDRjY1w3blwyXDJc dTA0Y2NcdTA0Y2RcN2dcMlwyXHUwNGNkXHUwNGNlXDdrXDJcMlx1MDRjZSIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0Y2ZcN2hcMlwyXHUwNGNmXHUwMGQ2XDNcMlwyXDJcdTA0 ZDBcdTA0ZDFcN2pcMlwyXHUwNGQxIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1 MDRkMlw3a1wyXDJcdTA0ZDJcdTA0ZDNcN2ZcMlwyXHUwNGQzXHUwNGQ0XDdmXDJcMlx1MDRkNCIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0ZDVcN2dcMlwyXHUwNGQ1XHUwNGQ2 XDdwXDJcMlx1MDRkNlx1MDBkOFwzXDJcMlwyXHUwNGQ3DQo+ID4gIikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlx1MDRkOFw3aVwyXDJcdTA0ZDhcdTA0ZDlcN3FcMlwyXHUwNGQ5XHUw NGRhXDd2XDJcMlx1MDRkYSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0ZGJc N3FcMlwyXHUwNGRiXHUwMGRhXDNcMlwyXDJcdTA0ZGNcdTA0ZGRcN2hcMlwyXHUwNGRkDQo+ID4g IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDRkZVw3cVwyXDJcdTA0ZGVcdTA0 ZGZcN3RcMlwyXHUwNGRmXHUwNGUwXDdvXDJcMlx1MDRlMCIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcdTA0ZTFcN3VcMlwyXHUwNGUxXHUwNGUyXDdnXDJcMlx1MDRlMlx1MDRlM1w3 dlwyXDJcdTA0ZTMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNGU0XDdpXDJc Mlx1MDRlNFx1MDRlNVw3d1wyXDJcdTA0ZTVcdTA0ZTZcN2tcMlwyXHUwNGU2IikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDRlN1w3ZlwyXDJcdTA0ZTdcdTAwZGNcM1wyXDJcMlx1 MDRlOFx1MDRlOVw3a1wyXDJcdTA0ZTkiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XHUwNGVhXDdwXDJcMlx1MDRlYVx1MDRlYlw3ZVwyXDJcdTA0ZWJcdTA0ZWNcN3FcMlwyXHUwNGVj IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDRlZFw3cFwyXDJcdTA0ZWRcdTA0 ZWVcN3VcMlwyXHUwNGVlXHUwNGVmXDdrXDJcMlx1MDRlZiIpDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJcdTA0ZjBcN3VcMlwyXHUwNGYwXHUwNGYxXDd2XDJcMlx1MDRmMVx1MDRmMlw3Z1wy XDJcdTA0ZjIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNGYzXDdwXDJcMlx1MDRm M1x1MDRmNFw3dlwyXDJcdTA0ZjRcdTA0ZjVcN2tcMlwyXHUwNGY1IikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlx1MDRmNlw3aFwyXDJcdTA0ZjZcdTAwZGVcM1wyXDJcMlx1MDRmN1x1 MDRmOFw3eVwyXDJcdTA0ZjgiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNGY5XDdj XDJcMlx1MDRmOVx1MDRmYVw3dFwyXDJcdTA0ZmFcdTA0ZmJcN3BcMlwyXHUwNGZiIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDRmY1w3a1wyXDJcdTA0ZmNcdTA0ZmRcN3BcMlwyXHUw NGZkXHUwNGZlXDdpXDJcMlx1MDRmZSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJc dTA0ZmZcN2tcMlwyXHUwNGZmXHUwNTAwXDdoXDJcMlx1MDUwMFx1MDBlMFwzXDJcMlwyXHUwNTAx IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDUwMlw3cFwyXDJcdTA1MDJcdTA1 MDNcN3FcMlwyXHUwNTAzXHUwNTA0XDd1XDJcMlx1MDUwNCIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcdTA1MDVcN3dcMlwyXHUwNTA1XHUwNTA2XDdkXDJcMlx1MDUwNlx1MDUwN1w3 b1wyXDJcdTA1MDciDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNTA4 XDdrXDJcMlx1MDUwOFx1MDUwOVw3dlwyXDJcdTA1MDlcdTA1MGFcN2tcMlwyXHUwNTBhIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDUwYlw3aFwyXDJcdTA1MGJcdTAwZTJcM1wy XDJcMlx1MDUwY1x1MDUwZFw3Z1wyXDJcdTA1MGQiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXHUwNTBlXDdwXDJcMlx1MDUwZVx1MDUwZlw3ZlwyXDJcdTA1MGZcdTA1MTBcN2tc MlwyXHUwNTEwIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDUxMVw3aFwyXDJc dTA1MTFcdTAwZTRcM1wyXDJcMlx1MDUxMlx1MDUxM1w3bVwyXDJcdTA1MTMNCj4gPiAiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNTE0XDdnXDJcMlx1MDUxNFx1MDUxNVw3e1wy XDJcdTA1MTVcdTAwZTZcM1wyXDJcMlx1MDUxNiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcdTA1MTdcN0ZcMlwyXHUwNTE3XHUwNTE4XDdHXDJcMlx1MDUxOFx1MDUxOVw3SFwyXDJc dTA1MTkiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNTFhXDdDXDJc Mlx1MDUxYVx1MDUxYlw3V1wyXDJcdTA1MWJcdTA1MWNcN05cMlwyXHUwNTFjIg0KPiA+ICkNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDUxZFw3VlwyXDJcdTA1MWRcdTAwZThcM1wy XDJcMlx1MDUxZVx1MDUxZlw3T1wyXDJcdTA1MWYiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ IGJ1Zi53cml0ZSgiXHUwNTIwXDdDXDJcMlx1MDUyMFx1MDUyMVw3UFwyXDJcdTA1MjFcdTA1MjJc N1dcMlwyXHUwNTIyIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDUy M1w3SFwyXDJcdTA1MjNcdTA1MjRcN0NcMlwyXHUwNTI0XHUwNTI1XDdFXDJcMlx1MDUyNSIpDQo+ ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1MjZcN1ZcMlwyXHUwNTI2XHUwNTI3XDdX XDJcMlx1MDUyN1x1MDUyOFw3VFwyXDJcdTA1MjgiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ IGJ1Zi53cml0ZSgiXHUwNTI5XDdLXDJcMlx1MDUyOVx1MDUyYVw3UFwyXDJcdTA1MmFcdTA1MmJc N0lcMlwyXHUwNTJiIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDBlYVwzXDJc MlwyXHUwNTJjXHUwNTJkXDdFXDJcMlx1MDUyZFx1MDUyZVw3SlwyXDJcdTA1MmUiKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNTJmXDdHXDJcMlx1MDUyZlx1MDUzMFw3RVwyXDJc dTA1MzBcdTA1MzFcN01cMlwyXHUwNTMxIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo Ilx1MDUzMlw3RFwyXDJcdTA1MzJcdTA1MzNcN1FcMlwyXHUwNTMzXHUwNTM0XDdaXDJcMlx1MDUz NCINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1MzVcN2FcMlwyXHUw NTM1XHUwNTM2XDdGXDJcMlx1MDUzNlx1MDUzN1w3R1wyXDJcdTA1MzciKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXHUwNTM4XDdIXDJcMlx1MDUzOFx1MDUzOVw3Q1wyXDJcdTA1Mzlc dTA1M2FcN1dcMlwyXHUwNTNhDQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo Ilx1MDUzYlw3TlwyXDJcdTA1M2JcdTA1M2NcN1ZcMlwyXHUwNTNjXHUwMGVjXDNcMlwyXDJcdTA1 M2QiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNTNlXDdFXDJcMlx1 MDUzZVx1MDUzZlw3SlwyXDJcdTA1M2ZcdTA1NDBcN0dcMlwyXHUwNTQwIikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlx1MDU0MVw3RVwyXDJcdTA1NDFcdTA1NDJcN01cMlwyXHUwNTQy XHUwNTQzXDdEXDJcMlx1MDU0MyINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcdTA1NDRcN1FcMlwyXHUwNTQ0XHUwNTQ1XDdaXDJcMlx1MDU0NVx1MDU0Nlw3YVwyXDJcdTA1 NDYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNTQ3XDdGXDJcMlx1MDU0N1x1 MDU0OFw3R1wyXDJcdTA1NDhcdTA1NDlcN0hcMlwyXHUwNTQ5Ig0KPiA+ICkNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlx1MDU0YVw3Q1wyXDJcdTA1NGFcdTA1NGJcN1dcMlwyXHUwNTRi XHUwNTRjXDdOXDJcMlx1MDU0YyINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcdTA1NGRcN1ZcMlwyXHUwNTRkXHUwNTRlXDdhXDJcMlx1MDU0ZVx1MDU0Zlw3T1wyXDJcdTA1 NGYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNTUwXDdIXDJcMlx1MDU1MFx1 MDU1MVw3SVwyXDJcdTA1NTFcdTAwZWVcM1wyXDJcMlx1MDU1MiINCj4gPiApDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1NTNcN0tcMlwyXHUwNTUzXHUwNTU0XDdQXDJcMlx1MDU1 NFx1MDU1NVw3VlwyXDJcdTA1NTUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw NTU2XDdHXDJcMlx1MDU1Nlx1MDU1N1w3VFwyXDJcdTA1NTdcdTA1NThcN0NcMlwyXHUwNTU4IikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDU1OVw3RVwyXDJcdTA1NTlcdTA1NWFc N1ZcMlwyXHUwNTVhXHUwNTViXDdLXDJcMlx1MDU1YiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcdTA1NWNcN1hcMlwyXHUwNTVjXHUwNTVkXDdHXDJcMlx1MDU1ZFx1MDBmMFwzXDJc MlwyXHUwNTVlIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDU1Zlw3 UFwyXDJcdTA1NWZcdTA1NjBcN1hcMlwyXHUwNTYwXHUwNTYxXDdhXDJcMlx1MDU2MSIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1NjJcN0NcMlwyXHUwNTYyXHUwNTYzXDdFXDJc Mlx1MDU2M1x1MDU2NFw3RVwyXDJcdTA1NjQiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHUwNTY1XDdHXDJcMlx1MDU2NVx1MDU2Nlw3VVwyXDJcdTA1NjZcdTA1NjdcN1VcMlwyXHUw NTY3Ig0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDBmMlwzXDJcMlwy XHUwNTY4XHUwNTY5XDdUXDJcMlx1MDU2OVx1MDU2YVw3R1wyXDJcdTA1NmEiDQo+ID4gKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNTZiXDdVXDJcMlx1MDU2Ylx1MDU2Y1w3R1wy XDJcdTA1NmNcdTA1NmRcN1ZcMlwyXHUwNTZkIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlx1MDU2ZVw3YVwyXDJcdTA1NmVcdTA1NmZcN1RcMlwyXHUwNTZmXHUwNTcwXDdH XDJcMlx1MDU3MCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1NzFcN1NcMlwy XHUwNTcxXHUwNTcyXDdXXDJcMlx1MDU3Mlx1MDU3M1w3S1wyXDJcdTA1NzMiDQo+ID4gKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNTc0XDdUXDJcMlx1MDU3NFx1MDU3NVw3R1wy XDJcdTA1NzVcdTA1NzZcN0ZcMlwyXHUwNTc2IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlx1MDBmNFwzXDJcMlwyXHUwNTc3XHUwNTc4XDdUXDJcMlx1MDU3OFx1MDU3OVw3R1wyXDJc dTA1NzkiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNTdhXDdFXDJc Mlx1MDU3YVx1MDU3Ylw3UVwyXDJcdTA1N2JcdTA1N2NcN1BcMlwyXHUwNTdjIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDU3ZFw3UFwyXDJcdTA1N2RcdTA1N2VcN0dcMlwyXHUw NTdlXHUwNTdmXDdFXDJcMlx1MDU3ZiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJc dTA1ODBcN1ZcMlwyXHUwNTgwXHUwNTgxXDdhXDJcMlx1MDU4MVx1MDU4Mlw3VFwyXDJcdTA1ODIi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNTgzXDdHXDJcMlx1MDU4M1x1MDU4 NFw3U1wyXDJcdTA1ODRcdTA1ODVcN1dcMlwyXHUwNTg1Ig0KPiA+ICkNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlx1MDU4Nlw3S1wyXDJcdTA1ODZcdTA1ODdcN1RcMlwyXHUwNTg3XHUw NTg4XDdHXDJcMlx1MDU4OCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1ODlc N0ZcMlwyXHUwNTg5XHUwMGY2XDNcMlwyXDJcdTA1OGFcdTA1OGJcN05cMlwyXHUwNThiIg0KPiA+ ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDU4Y1w3Q1wyXDJcdTA1OGNcdTA1 OGRcN1ZcMlwyXHUwNThkXHUwNThlXDdHXDJcMlx1MDU4ZSIpDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJcdTA1OGZcN2FcMlwyXHUwNThmXHUwNTkwXDdFXDJcMlx1MDU5MFx1MDU5MVw3Slwy XDJcdTA1OTEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNTkyXDdHXDJcMlx1 MDU5Mlx1MDU5M1w3RVwyXDJcdTA1OTNcdTA1OTRcN01cMlwyXHUwNTk0Ig0KPiA+ICkNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDBmOFwzXDJcMlwyXHUwNTk1XHUwNTk2XDdUXDJc Mlx1MDU5Nlx1MDU5N1w3R1wyXDJcdTA1OTciDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXHUwNTk4XDdDXDJcMlx1MDU5OFx1MDU5OVw3RlwyXDJcdTA1OTlcdTA1OWFcN2Fc MlwyXHUwNTlhIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDU5Ylw3UVwyXDJc dTA1OWJcdTA1OWNcN1BcMlwyXHUwNTljXHUwNTlkXDdOXDJcMlx1MDU5ZCINCj4gPiApDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1OWVcN1tcMlwyXHUwNTllXHUwMGZhXDNcMlwy XDJcdTA1OWZcdTA1YTBcN1FcMlwyXHUwNWEwIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlx1MDVhMVw3UlwyXDJcdTA1YTFcdTA1YTJcN1ZcMlwyXHUwNWEyXHUwNWEzXDdLXDJcMlx1 MDVhMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1YTRcN1FcMlwyXHUwNWE0 XHUwNWE1XDdQXDJcMlx1MDVhNVx1MDVhNlw3VVwyXDJcdTA1YTYiDQo+ID4gKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNWE3XDdhXDJcMlx1MDVhN1x1MDVhOFw3UVwyXDJcdTA1 YThcdTA1YTlcN1BcMlwyXHUwNWE5IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1 MDVhYVw3TlwyXDJcdTA1YWFcdTA1YWJcN1tcMlwyXHUwNWFiXHUwMGZjXDNcMlwyXDJcdTA1YWMi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNWFkXDdUXDJcMlx1MDVhZFx1MDVh ZVw3R1wyXDJcdTA1YWVcdTA1YWZcN1VcMlwyXHUwNWFmIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlx1MDViMFw3VlwyXDJcdTA1YjBcdTA1YjFcN2FcMlwyXHUwNWIxXHUwNWIyXDdV XDJcMlx1MDViMiINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1YjNc N1ZcMlwyXHUwNWIzXHUwNWI0XDdbXDJcMlx1MDViNFx1MDViNVw3TlwyXDJcdTA1YjUiDQo+ID4g KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNWI2XDdHXDJcMlx1MDViNlx1MDBm ZVwzXDJcMlwyXHUwNWI3XHUwNWI4XDdlXDJcMlx1MDViOCINCj4gPiApDQo+ID4NCj4gPiArDQo+ ID4NCj4gYnVmLndyaXRlKCJcdTA1YjlcN25cMlwyXHUwNWI5XHUwNWJhXDdjXDJcMlx1MDViYVx1 MDViYlw3dVwyXDJcdTA1YmIiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XHUwNWJjXDd1XDJcMlx1MDViY1x1MDEwMFwzXDJcMlwyXHUwNWJkXHUwNWJlXDd1XDJcMlx1MDVi ZQ0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1YmZcN3dcMlwyXHUw NWJmXHUwNWMwXDdkXDJcMlx1MDVjMFx1MDVjMVw3ZVwyXDJcdTA1YzEiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXHUwNWMyXDduXDJcMlx1MDVjMlx1MDVjM1w3Y1wyXDJcdTA1YzNcdTA1 YzRcN3VcMlwyXHUwNWM0IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDVjNVw3 dVwyXDJcdTA1YzVcdTAxMDJcM1wyXDJcMlx1MDVjNlx1MDVjN1w3ZVwyXDJcdTA1YzciKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNWM4XDduXDJcMlx1MDVjOFx1MDVjOVw3Y1wyXDJc dTA1YzlcdTA1Y2FcN3VcMlwyXHUwNWNhIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1 MDVjYlw3dVwyXDJcdTA1Y2JcdTA1Y2NcN2lcMlwyXHUwNWNjXHUwNWNkXDd3XDJcMlx1MDVjZCIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA1Y2VcN2tcMlwyXHUwNWNlXHUwNWNmXDdm XDJcMlx1MDVjZlx1MDEwNFwzXDJcMlwyXHUwNWQwIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYu d3JpdGUoIlx1MDVkMVw3dlwyXDJcdTA1ZDFcdTA1ZDJcN3tcMlwyXHUwNWQyXHUwNWQzXDdyXDJc Mlx1MDVkMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1ZDRcN2dcMlwyXHUw NWQ0XHUwNWQ1XDdmXDJcMlx1MDVkNVx1MDVkNlw3Z1wyXDJcdTA1ZDYiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXHUwNWQ3XDdoXDJcMlx1MDVkN1x1MDEwNlwzXDJcMlwyXHUwNWQ4 XHUwNWQ5XDd0XDJcMlx1MDVkOSINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcdTA1ZGFcN2dcMlwyXHUwNWRhXHUwNWRiXDd1XDJcMlx1MDVkYlx1MDVkY1w3dlwyXDJcdTA1 ZGMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNWRkXDdxXDJcMlx1MDVkZFx1 MDVkZVw3dFwyXDJcdTA1ZGVcdTA1ZGZcN2dcMlwyXHUwNWRmIikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlx1MDEwOFwzXDJcMlwyXHUwNWUwXHUwNWUxXDd1XDJcMlx1MDVlMVx1MDVl Mlw3Y1wyXDJcdTA1ZTIiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw NWUzXDd4XDJcMlx1MDVlM1x1MDVlNFw3Z1wyXDJcdTA1ZTRcdTAxMGFcM1wyXDJcMlx1MDVlNSIN Cj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1ZTZcN2ZcMlwyXHUwNWU2 XHUwNWU3XDdnXDJcMlx1MDVlN1x1MDVlOFw3aFwyXDJcdTA1ZTgiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXHUwNWU5XDdjXDJcMlx1MDVlOVx1MDVlYVw3d1wyXDJcdTA1ZWFcdTA1 ZWJcN25cMlwyXHUwNWViIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1 MDVlY1w3dlwyXDJcdTA1ZWNcdTA1ZWRcN3VcMlwyXHUwNWVkXHUwMTBjXDNcMlwyXDJcdTA1ZWUi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNWVmXDdkXDJcMlx1MDVlZlx1MDVmMFw3 Y1wyXDJcdTA1ZjBcdTA1ZjFcN3BcMlwyXHUwNWYxIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlx1MDVmMlw3cFwyXDJcdTA1ZjJcdTA1ZjNcN2dcMlwyXHUwNWYzXHUwNWY0XDd0XDJcMlx1 MDVmNCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxMGVcM1wyXDJcMlx1MDVmNVx1 MDVmNlw3Y1wyXDJcdTA1ZjZcdTA1ZjdcN25cMlwyXHUwNWY3IikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlx1MDVmOFw3a1wyXDJcdTA1ZjhcdTA1ZjlcN2lcMlwyXHUwNWY5XHUwNWZhXDdw XDJcMlx1MDVmYSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxMTBcM1wyXDJcMlx1 MDVmYlx1MDVmY1w3blwyXDJcdTA1ZmNcdTA1ZmRcN2dcMlwyXHUwNWZkIikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlx1MDVmZVw3aFwyXDJcdTA1ZmVcdTA1ZmZcN3ZcMlwyXHUwNWZmXHUw MTEyXDNcMlwyXDJcdTA2MDAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNjAx XDd0XDJcMlx1MDYwMVx1MDYwMlw3a1wyXDJcdTA2MDJcdTA2MDNcN2lcMlwyXHUwNjAzIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDYwNFw3alwyXDJcdTA2MDRcdTA2MDVcN3Zc MlwyXHUwNjA1XHUwMTE0XDNcMlwyXDJcdTA2MDYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXHUwNjA3XDdlXDJcMlx1MDYwN1x1MDYwOFw3Z1wyXDJcdTA2MDhcdTA2MDlcN3BcMlwy XHUwNjA5IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDYwYVw3dlwyXDJcdTA2 MGFcdTA2MGJcN2dcMlwyXHUwNjBiXHUwNjBjXDd0XDJcMlx1MDYwYyIpDQo+ID4NCj4gPiArDQo+ ID4NCj4gYnVmLndyaXRlKCJcdTAxMTZcM1wyXDJcMlx1MDYwZFx1MDYwZVw3blwyXDJcdTA2MGVc dTA2MGZcN2tcMlwyXHUwNjBmIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDYx MFw3cFwyXDJcdTA2MTBcdTA2MTFcN2dcMlwyXHUwNjExXHUwMTE4XDNcMlwyXDJcdTA2MTIiDQo+ ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNjEzXDdwXDJcMlx1MDYxM1x1 MDYxNFw3Y1wyXDJcdTA2MTRcdTA2MTVcN29cMlwyXHUwNjE1IikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlx1MDYxNlw3Z1wyXDJcdTA2MTZcdTAxMWFcM1wyXDJcMlx1MDYxN1x1MDYx OFw3eFwyXDJcdTA2MTgiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw NjE5XDdjXDJcMlx1MDYxOVx1MDYxYVw3dFwyXDJcdTA2MWFcdTA2MWJcN2tcMlwyXHUwNjFiIikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDYxY1w3ZlwyXDJcdTA2MWNcdTAxMWNc M1wyXDJcMlx1MDYxZFx1MDYxZVw3c1wyXDJcdTA2MWUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXHUwNjFmXDd3XDJcMlx1MDYxZlx1MDYyMFw3Z1wyXDJcdTA2MjBcdTA2MjFcN3Vc MlwyXHUwNjIxIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDYyMlw3dlwyXDJc dTA2MjJcdTA2MjNcN2tcMlwyXHUwNjIzXHUwNjI0XDdxXDJcMlx1MDYyNCIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2MjVcN3BcMlwyXHUwNjI1XHUwMTFlXDNcMlwyXDJcdTA2 MjZcdTA2MjdcN3NcMlwyXHUwNjI3Ig0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlx1MDYyOFw3d1wyXDJcdTA2MjhcdTA2MjlcN2dcMlwyXHUwNjI5XHUwNjJhXDd1XDJcMlx1 MDYyYSINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2MmJcN3ZcMlwy XHUwNjJiXHUwNjJjXDdrXDJcMlx1MDYyY1x1MDYyZFw3cVwyXDJcdTA2MmQiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXHUwNjJlXDdwXDJcMlx1MDYyZVx1MDYyZlw3a1wyXDJcdTA2MmZc dTA2MzBcN2ZcMlwyXHUwNjMwIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDEy MFwzXDJcMlwyXHUwNjMxXHUwNjMyXDdrXDJcMlx1MDYzMlx1MDYzM1w3b1wyXDJcdTA2MzMiDQo+ ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNjM0XDdjXDJcMlx1MDYzNFx1 MDYzNVw3aVwyXDJcdTA2MzVcdTA2MzZcN2dcMlwyXHUwNjM2IikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlx1MDEyMlwzXDJcMlwyXHUwNjM3XHUwNjM4XDduXDJcMlx1MDYzOFx1MDYz OVw3cVwyXDJcdTA2MzkiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw NjNhXDdlXDJcMlx1MDYzYVx1MDYzYlw3bVwyXDJcdTA2M2JcdTA2M2NcN2dcMlwyXHUwNjNjIikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDYzZFw3ZlwyXDJcdTA2M2RcdTAxMjRc M1wyXDJcMlx1MDYzZVx1MDYzZlw3dFwyXDJcdTA2M2YiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXHUwNjQwXDd3XDJcMlx1MDY0MFx1MDY0MVw3blwyXDJcdTA2NDFcdTA2NDJcN2dc MlwyXHUwNjQyIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDEyNlwz XDJcMlwyXHUwNjQzXHUwNjQ0XDdnXDJcMlx1MDY0NFx1MDY0NVw3cFwyXDJcdTA2NDUiDQo+ID4g KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNjQ2XDdmXDJcMlx1MDY0Nlx1MDY0 N1w3dFwyXDJcdTA2NDdcdTA2NDhcN3dcMlwyXHUwNjQ4IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlx1MDY0OVw3blwyXDJcdTA2NDlcdTA2NGFcN2dcMlwyXHUwNjRhXHUwMTI4XDNc MlwyXDJcdTA2NGIiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNjRj XDd4XDJcMlx1MDY0Y1x1MDY0ZFw3Y1wyXDJcdTA2NGRcdTA2NGVcN25cMlwyXHUwNjRlIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDY0Zlw3d1wyXDJcdTA2NGZcdTA2NTBcN2dc MlwyXHUwNjUwXHUwMTJhXDNcMlwyXDJcdTA2NTEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXHUwNjUyXDd0XDJcMlx1MDY1Mlx1MDY1M1w3Z1wyXDJcdTA2NTNcdTA2NTRcN2NcMlwy XHUwNjU0IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDY1NVw3ZlwyXDJcdTA2 NTVcdTAxMmNcM1wyXDJcMlx1MDY1Nlx1MDY1N1w3eVwyXDJcdTA2NTciKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXHUwNjU4XDd0XDJcMlx1MDY1OFx1MDY1OVw3a1wyXDJcdTA2NTlc dTA2NWFcN3ZcMlwyXHUwNjVhIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDY1 Ylw3Z1wyXDJcdTA2NWJcdTAxMmVcM1wyXDJcMlx1MDY1Y1x1MDY1ZFw3dFwyXDJcdTA2NWQiDQo+ ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNjVlXDdnXDJcMlx1MDY1ZVx1 MDY1Zlw3dVwyXDJcdTA2NWZcdTA2NjBcN2dcMlwyXHUwNjYwIikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlx1MDY2MVw3dlwyXDJcdTA2NjFcdTA2NjJcN2RcMlwyXHUwNjYyXHUwNjYz XDd3XDJcMlx1MDY2MyINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2 NjRcN3ZcMlwyXHUwNjY0XHUwNjY1XDd2XDJcMlx1MDY2NVx1MDY2Nlw3cVwyXDJcdTA2NjYiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNjY3XDdwXDJcMlx1MDY2N1x1MDEzMFwz XDJcMlwyXHUwNjY4XHUwNjY5XDdnXDJcMlx1MDY2OSINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcdTA2NmFcN3BcMlwyXHUwNjZhXHUwNjZiXDdmXDJcMlx1MDY2Ylx1MDY2 Y1w3dFwyXDJcdTA2NmMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNjZkXDdn XDJcMlx1MDY2ZFx1MDY2ZVw3dVwyXDJcdTA2NmVcdTA2NmZcN2dcMlwyXHUwNjZmIikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDY3MFw3dlwyXDJcdTA2NzBcdTA2NzFcN2RcMlwy XHUwNjcxXHUwNjcyXDd3XDJcMlx1MDY3MiINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcdTA2NzNcN3ZcMlwyXHUwNjczXHUwNjc0XDd2XDJcMlx1MDY3NFx1MDY3NVw3cVwy XDJcdTA2NzUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNjc2XDdwXDJcMlx1 MDY3Nlx1MDEzMlwzXDJcMlwyXHUwNjc3XHUwNjc4XDdmXDJcMlx1MDY3OCINCj4gPiApDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2NzlcN2dcMlwyXHUwNjc5XHUwNjdhXDdoXDJc Mlx1MDY3YVx1MDY3Ylw3Y1wyXDJcdTA2N2IiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHUwNjdjXDd3XDJcMlx1MDY3Y1x1MDY3ZFw3blwyXDJcdTA2N2RcdTA2N2VcN3ZcMlwyXHUw NjdlIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDY3Zlw3dVwyXDJcdTA2N2Zc dTA2ODBcN3ZcMlwyXHUwNjgwXHUwNjgxXDdxXDJcMlx1MDY4MSIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcdTA2ODJcN3RcMlwyXHUwNjgyXHUwNjgzXDdnXDJcMlx1MDY4M1x1MDEz NFwzXDJcMlwyXHUwNjg0IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDY4NVw3 Y1wyXDJcdTA2ODVcdTA2ODZcN3ZcMlwyXHUwNjg2XHUwNjg3XDd2XDJcMlx1MDY4NyIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2ODhcN3RcMlwyXHUwNjg4XHUwNjg5XDdrXDJc Mlx1MDY4OVx1MDY4YVw3ZFwyXDJcdTA2OGEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHUwNjhiXDd3XDJcMlx1MDY4Ylx1MDY4Y1w3dlwyXDJcdTA2OGNcdTA2OGRcN2dcMlwyXHUw NjhkIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDEzNlwzXDJcMlwyXHUwNjhl XHUwNjhmXDd4XDJcMlx1MDY4Zlx1MDY5MFw3Y1wyXDJcdTA2OTAiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXHUwNjkxXDd0XDJcMlx1MDY5MVx1MDY5Mlw3dVwyXDJcdTA2OTJcdTA2 OTNcN3ZcMlwyXHUwNjkzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDY5NFw3 cVwyXDJcdTA2OTRcdTA2OTVcN3RcMlwyXHUwNjk1XHUwNjk2XDdnXDJcMlx1MDY5NiIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAxMzhcM1wyXDJcMlx1MDY5N1x1MDY5OFw3Z1wy XDJcdTA2OThcdTA2OTlcN2hcMlwyXHUwNjk5Ig0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlx1MDY5YVw3a1wyXDJcdTA2OWFcdTA2OWJcN3hcMlwyXHUwNjliXHUwNjljXDdj XDJcMlx1MDY5YyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2OWRcN3RcMlwy XHUwNjlkXHUwNjllXDd1XDJcMlx1MDY5ZVx1MDY5Zlw3dlwyXDJcdTA2OWYiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNmEwXDdxXDJcMlx1MDZhMFx1MDZhMVw3dFwyXDJcdTA2 YTFcdTA2YTJcN2dcMlwyXHUwNmEyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1 MDEzYVwzXDJcMlwyXHUwNmEzXHUwNmE0XDd4XDJcMlx1MDZhNFx1MDZhNVw3Y1wyXDJcdTA2YTUi DQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNmE2XDd0XDJcMlx1MDZh Nlx1MDZhN1w3dVwyXDJcdTA2YTdcdTA2YThcN2tcMlwyXHUwNmE4IikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlx1MDZhOVw3fFwyXDJcdTA2YTlcdTA2YWFcN2dcMlwyXHUwNmFhXHUw MTNjXDNcMlwyXDJcdTA2YWIiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XHUwNmFjXDdwXDJcMlx1MDZhY1x1MDZhZFw3Y1wyXDJcdTA2YWRcdTA2YWVcN29cMlwyXHUwNmFl IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDZhZlw3Z1wyXDJcdTA2YWZcdTA2 YjBcN3hcMlwyXHUwNmIwXHUwNmIxXDdjXDJcMlx1MDZiMSIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcdTA2YjJcN25cMlwyXHUwNmIyXHUwNmIzXDd3XDJcMlx1MDZiM1x1MDZiNFw3 Z1wyXDJcdTA2YjQiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNmI1 XDd4XDJcMlx1MDZiNVx1MDZiNlw3Y1wyXDJcdTA2YjZcdTA2YjdcN3RcMlwyXHUwNmI3IikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDZiOFw3dVwyXDJcdTA2YjhcdTA2YjlcN3Zc MlwyXHUwNmI5XHUwNmJhXDdxXDJcMlx1MDZiYSINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcdTA2YmJcN3RcMlwyXHUwNmJiXHUwNmJjXDdnXDJcMlx1MDZiY1x1MDEzZVwz XDJcMlwyXHUwNmJkIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDZiZVw3 Y1wyXDJcdTA2YmVcdTA2YmZcN2VcMlwyXHUwNmJmXHUwNmMwXDd2XDJcMlx1MDZjMCIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2YzFcN2tcMlwyXHUwNmMxXHUwNmMyXDdxXDJc Mlx1MDZjMlx1MDZjM1w3cFwyXDJcdTA2YzMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHUwMTQwXDNcMlwyXDJcdTA2YzRcdTA2YzVcN2VcMlwyXHUwNmM1XHUwNmM2XDdxXDJcMlx1 MDZjNiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2YzdcN3BcMlwyXHUwNmM3 XHUwNmM4XDdoXDJcMlx1MDZjOFx1MDZjOVw3a1wyXDJcdTA2YzkiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwNmNhXDdpXDJcMlx1MDZjYVx1MDE0MlwzXDJcMlwyXHUwNmNiXHUwNmNj XDdnXDJcMlx1MDZjYyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA2Y2RcN3BcMlwy XHUwNmNkXHUwNmNlXDdmXDJcMlx1MDZjZVx1MDZjZlw3Y1wyXDJcdTA2Y2YiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNmQwXDdlXDJcMlx1MDZkMFx1MDZkMVw3dlwyXDJcdTA2 ZDFcdTA2ZDJcN2tcMlwyXHUwNmQyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1 MDZkM1w3cVwyXDJcdTA2ZDNcdTA2ZDRcN3BcMlwyXHUwNmQ0XHUwMTQ0XDNcMlwyXDJcdTA2ZDUN Cj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNmQ2XDd0XDJcMlx1MDZk Nlx1MDZkN1w3Z1wyXDJcdTA2ZDdcdTA2ZDhcN2hcMlwyXHUwNmQ4IikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlx1MDZkOVw3dFwyXDJcdTA2ZDlcdTA2ZGFcN2dcMlwyXHUwNmRhXHUw NmRiXDd1XDJcMlx1MDZkYiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2ZGNc N2pcMlwyXHUwNmRjXHUwMTQ2XDNcMlwyXDJcdTA2ZGRcdTA2ZGVcN2tcMlwyXHUwNmRlIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDZkZlw3cFwyXDJcdTA2ZGZcdTA2ZTBcN3Zc MlwyXHUwNmUwXHUwNmUxXDdnXDJcMlx1MDZlMSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcdTA2ZTJcN3RcMlwyXHUwNmUyXHUwNmUzXDd4XDJcMlx1MDZlM1x1MDZlNFw3Y1wyXDJc dTA2ZTQiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNmU1XDduXDJcMlx1MDZl NVx1MDE0OFwzXDJcMlwyXHUwNmU2XHUwNmU3XDd4XDJcMlx1MDZlNyINCj4gPiApDQo+ID4NCj4g PiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2ZThcN2NcMlwyXHUwNmU4XHUwNmU5XDd0XDJcMlx1 MDZlOVx1MDZlYVw3dVwyXDJcdTA2ZWEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XHUwNmViXDd2XDJcMlx1MDZlYlx1MDZlY1w3cVwyXDJcdTA2ZWNcdTA2ZWRcN3RcMlwyXHUwNmVk IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDZlZVw3Z1wyXDJcdTA2ZWVcdTA2ZWZc N2ZcMlwyXHUwNmVmXHUwNmYwXDdnXDJcMlx1MDZmMCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcdTA2ZjFcN3hcMlwyXHUwNmYxXHUwNmYyXDdrXDJcMlx1MDZmMlx1MDZmM1w3ZVwyXDJc dTA2ZjMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNmY0XDdnXDJcMlx1MDZmNFx1 MDE0YVwzXDJcMlwyXHUwNmY1XHUwNmY2XDdpXDJcMlx1MDZmNiIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcdTA2ZjdcN3dcMlwyXHUwNmY3XHUwNmY4XDdrXDJcMlx1MDZmOFx1MDZmOVw3 ZlwyXDJcdTA2ZjkiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNmZhXDdxXDJcMlx1 MDZmYVx1MDZmYlw3clwyXDJcdTA2ZmJcdTAxNGNcM1wyXDJcMlx1MDZmYyIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcdTA2ZmRcN2dcMlwyXHUwNmZkXHUwNmZlXDdwXDJcMlx1MDZmZVx1 MDZmZlw3ZlwyXDJcdTA2ZmYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNzAw XDdpXDJcMlx1MDcwMFx1MDcwMVw3d1wyXDJcdTA3MDFcdTA3MDJcN2tcMlwyXHUwNzAyIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDcwM1w3ZlwyXDJcdTA3MDNcdTA3MDRcN3Fc MlwyXHUwNzA0XHUwNzA1XDdyXDJcMlx1MDcwNSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcdTAxNGVcM1wyXDJcMlx1MDcwNlx1MDcwN1w3ZlwyXDJcdTA3MDdcdTA3MDhcN2NcMlwy XHUwNzA4IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDcwOVw3dlwyXDJcdTA3 MDlcdTA3MGFcN2NcMlwyXHUwNzBhXHUwNzBiXDd2XDJcMlx1MDcwYiIpDQo+ID4NCj4gPiArDQo+ ID4NCj4gYnVmLndyaXRlKCJcdTA3MGNcN3tcMlwyXHUwNzBjXHUwNzBkXDdyXDJcMlx1MDcwZFx1 MDcwZVw3Z1wyXDJcdTA3MGUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMTUw XDNcMlwyXDJcdTA3MGZcdTA3MTBcN2ZcMlwyXHUwNzEwXHUwNzExXDdjXDJcMlx1MDcxMSIpDQo+ ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3MTJcN3ZcMlwyXHUwNzEyXHUwNzEzXDdj XDJcMlx1MDcxM1x1MDE1MlwzXDJcMlwyXHUwNzE0Ig0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlx1MDcxNVw3b1wyXDJcdTA3MTVcdTA3MTZcN3FcMlwyXHUwNzE2XHUwNzE3 XDdmXDJcMlx1MDcxNyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3MThcN2Nc MlwyXHUwNzE4XHUwNzE5XDduXDJcMlx1MDcxOVx1MDE1NFwzXDJcMlwyXHUwNzFhIg0KPiA+ICkN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDcxYlw3UFwyXDJcdTA3MWJcdTA3MWNc N1FcMlwyXHUwNzFjXHUwNzFkXDdQXDJcMlx1MDcxZCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcdTA3MWVcN2FcMlwyXHUwNzFlXHUwNzFmXDdGXDJcMlx1MDcxZlx1MDcyMFw3R1wy XDJcdTA3MjAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNzIxXDdYXDJcMlx1 MDcyMVx1MDcyMlw3S1wyXDJcdTA3MjJcdTA3MjNcN0VcMlwyXHUwNzIzIikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlx1MDcyNFw3R1wyXDJcdTA3MjRcdTAxNTZcM1wyXDJcMlx1MDcy NVx1MDcyNlw3RlwyXDJcdTA3MjYiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHUwNzI3XDdLXDJcMlx1MDcyN1x1MDcyOFw3VVwyXDJcdTA3MjhcdTA3MjlcN01cMlwyXHUw NzI5Ig0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDcyYVw3YVwyXDJc dTA3MmFcdTA3MmJcN0ZcMlwyXHUwNzJiXHUwNzJjXDdHXDJcMlx1MDcyYyIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3MmRcN1hcMlwyXHUwNzJkXHUwNzJlXDdLXDJcMlx1MDcy ZVx1MDcyZlw3RVwyXDJcdTA3MmYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw NzMwXDdHXDJcMlx1MDczMFx1MDE1OFwzXDJcMlwyXHUwNzMxXHUwNzMyXDdYXDJcMlx1MDczMiIN Cj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3MzNcN0tcMlwyXHUwNzMz XHUwNzM0XDdGXDJcMlx1MDczNFx1MDczNVw3R1wyXDJcdTA3MzUiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXHUwNzM2XDdRXDJcMlx1MDczNlx1MDczN1w3YVwyXDJcdTA3MzdcdTA3 MzhcN0ZcMlwyXHUwNzM4IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDczOVw3 R1wyXDJcdTA3MzlcdTA3M2FcN1hcMlwyXHUwNzNhXHUwNzNiXDdLXDJcMlx1MDczYiINCj4gPiAp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3M2NcN0VcMlwyXHUwNzNjXHUwNzNk XDdHXDJcMlx1MDczZFx1MDE1YVwzXDJcMlwyXHUwNzNlIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlx1MDczZlw3UFwyXDJcdTA3M2ZcdTA3NDBcN0dcMlwyXHUwNzQwXHUw NzQxXDdWXDJcMlx1MDc0MSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3NDJc N1lcMlwyXHUwNzQyXHUwNzQzXDdRXDJcMlx1MDc0M1x1MDc0NFw3VFwyXDJcdTA3NDQiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNzQ1XDdNXDJcMlx1MDc0NVx1MDc0Nlw3YVwy XDJcdTA3NDZcdTA3NDdcN0ZcMlwyXHUwNzQ3Ig0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlx1MDc0OFw3R1wyXDJcdTA3NDhcdTA3NDlcN1hcMlwyXHUwNzQ5XHUwNzRhXDdL XDJcMlx1MDc0YSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3NGJcN0VcMlwy XHUwNzRiXHUwNzRjXDdHXDJcMlx1MDc0Y1x1MDE1Y1wzXDJcMlwyXHUwNzRkIg0KPiA+ICkNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDc0ZVw3S1wyXDJcdTA3NGVcdTA3NGZcN1Bc MlwyXHUwNzRmXHUwNzUwXDdSXDJcMlx1MDc1MCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcdTA3NTFcN1dcMlwyXHUwNzUxXHUwNzUyXDdWXDJcMlx1MDc1Mlx1MDc1M1w3YVwyXDJc dTA3NTMiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNzU0XDdGXDJc Mlx1MDc1NFx1MDc1NVw3R1wyXDJcdTA3NTVcdTA3NTZcN1hcMlwyXHUwNzU2IikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDc1N1w3S1wyXDJcdTA3NTdcdTA3NThcN0VcMlwyXHUw NzU4XHUwNzU5XDdHXDJcMlx1MDc1OSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJc dTAxNWVcM1wyXDJcMlx1MDc1YVx1MDc1Ylw3UVwyXDJcdTA3NWJcdTA3NWNcN1BcMlwyXHUwNzVj Ig0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDc1ZFw3RFwyXDJcdTA3 NWRcdTA3NWVcN1FcMlwyXHUwNzVlXHUwNzVmXDdDXDJcMlx1MDc1ZiIpDQo+ID4NCj4gPiArDQo+ ID4NCj4gYnVmLndyaXRlKCJcdTA3NjBcN1RcMlwyXHUwNzYwXHUwNzYxXDdGXDJcMlx1MDc2MVx1 MDc2Mlw3YVwyXDJcdTA3NjIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNzYz XDdGXDJcMlx1MDc2M1x1MDc2NFw3R1wyXDJcdTA3NjRcdTA3NjVcN1hcMlwyXHUwNzY1IikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDc2Nlw3S1wyXDJcdTA3NjZcdTA3NjdcN0Vc MlwyXHUwNzY3XHUwNzY4XDdHXDJcMlx1MDc2OCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcdTAxNjBcM1wyXDJcMlx1MDc2OVx1MDc2YVw3UVwyXDJcdTA3NmFcdTA3NmJcN1ZcMlwy XHUwNzZiDQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDc2Y1w3Slwy XDJcdTA3NmNcdTA3NmRcN0dcMlwyXHUwNzZkXHUwNzZlXDdUXDJcMlx1MDc2ZSIpDQo+ID4NCj4g PiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3NmZcN2FcMlwyXHUwNzZmXHUwNzcwXDdGXDJcMlx1 MDc3MFx1MDc3MVw3R1wyXDJcdTA3NzEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XHUwNzcyXDdYXDJcMlx1MDc3Mlx1MDc3M1w3S1wyXDJcdTA3NzNcdTA3NzRcN0VcMlwyXHUwNzc0 IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDc3NVw3R1wyXDJcdTA3NzVcdTAx NjJcM1wyXDJcMlx1MDc3Nlx1MDc3N1w3VVwyXDJcdTA3NzcNCj4gPiAiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXHUwNzc4XDdHXDJcMlx1MDc3OFx1MDc3OVw3VlwyXDJcdTA3Nzlc dTA3N2FcN1dcMlwyXHUwNzdhDQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo Ilx1MDc3Ylw3UlwyXDJcdTA3N2JcdTA3N2NcN2FcMlwyXHUwNzdjXHUwNzdkXDdDXDJcMlx1MDc3 ZCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3N2VcN1JcMlwyXHUwNzdlXHUw NzdmXDdSXDJcMlx1MDc3Zlx1MDc4MFw3TlwyXDJcdTA3ODAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ IGJ1Zi53cml0ZSgiXHUwNzgxXDdLXDJcMlx1MDc4MVx1MDc4Mlw3RVwyXDJcdTA3ODJcdTA3ODNc N0NcMlwyXHUwNzgzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDc4NFw3Vlwy XDJcdTA3ODRcdTA3ODVcN0tcMlwyXHUwNzg1XHUwNzg2XDdRXDJcMlx1MDc4NiINCj4gPiApDQo+ ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3ODdcN1BcMlwyXHUwNzg3XHUwMTY0XDNc MlwyXDJcdTA3ODhcdTA3ODlcN0lcMlwyXHUwNzg5IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYu d3JpdGUoIlx1MDc4YVw3R1wyXDJcdTA3OGFcdTA3OGJcN1BcMlwyXHUwNzhiXHUwNzhjXDdHXDJc Mlx1MDc4YyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3OGRcN1RcMlwyXHUw NzhkXHUwNzhlXDdDXDJcMlx1MDc4ZVx1MDc4Zlw3TlwyXDJcdTA3OGYiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXHUwNzkwXDdhXDJcMlx1MDc5MFx1MDc5MVw3Q1wyXDJcdTA3OTFc dTA3OTJcN1JcMlwyXHUwNzkyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDc5 M1w3UlwyXDJcdTA3OTNcdTA3OTRcN05cMlwyXHUwNzk0XHUwNzk1XDdLXDJcMlx1MDc5NSIpDQo+ ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3OTZcN0VcMlwyXHUwNzk2XHUwNzk3XDdD XDJcMlx1MDc5N1x1MDc5OFw3VlwyXDJcdTA3OTgiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXHUwNzk5XDdLXDJcMlx1MDc5OVx1MDc5YVw3UVwyXDJcdTA3OWFcdTA3OWJcN1BcMlwy XHUwNzliIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDE2NlwzXDJc MlwyXHUwNzljXHUwNzlkXDdIXDJcMlx1MDc5ZFx1MDc5ZVw3VFwyXDJcdTA3OWUiDQo+ID4gKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNzlmXDdRXDJcMlx1MDc5Zlx1MDdhMFw3 UFwyXDJcdTA3YTBcdTA3YTFcN1ZcMlwyXHUwN2ExIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYu d3JpdGUoIlx1MDdhMlw3YVwyXDJcdTA3YTJcdTA3YTNcN1JcMlwyXHUwN2EzXHUwN2E0XDdDXDJc Mlx1MDdhNCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3YTVcN0lcMlwyXHUw N2E1XHUwN2E2XDdHXDJcMlx1MDdhNlx1MDE2OFwzXDJcMlwyXHUwN2E3Ig0KPiA+ICkNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDdhOFw3VVwyXDJcdTA3YThcdTA3YTlcN0tcMlwy XHUwN2E5XHUwN2FhXDdQXDJcMlx1MDdhYSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcdTA3YWJcN0lcMlwyXHUwN2FiXHUwN2FjXDdOXDJcMlx1MDdhY1x1MDdhZFw3R1wyXDJcdTA3 YWQiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwN2FlXDdhXDJcMlx1MDdhZVx1 MDdhZlw3V1wyXDJcdTA3YWZcdTA3YjBcN1VcMlwyXHUwN2IwIikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlx1MDdiMVw3R1wyXDJcdTA3YjFcdTAxNmFcM1wyXDJcMlx1MDdiMlx1MDdi M1w3W1wyXDJcdTA3YjMNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw N2I0XDdHXDJcMlx1MDdiNFx1MDdiNVw3Q1wyXDJcdTA3YjVcdTA3YjZcN1RcMlwyXHUwN2I2Ig0K PiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDdiN1w3YVwyXDJcdTA3Yjdc dTA3YjhcN1VcMlwyXHUwN2I4XHUwN2I5XDdXXDJcMlx1MDdiOQ0KPiA+ICIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3YmFcN1JcMlwyXHUwN2JhXHUwN2JiXDdSXDJcMlx1MDdi Ylx1MDdiY1w3VFwyXDJcdTA3YmMiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHUwN2JkXDdHXDJcMlx1MDdiZFx1MDdiZVw3VVwyXDJcdTA3YmVcdTA3YmZcN1VcMlwyXHUw N2JmIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDE2Y1wzXDJcMlwy XHUwN2MwXHUwN2MxXDdPXDJcMlx1MDdjMVx1MDdjMlw3UVwyXDJcdTA3YzIiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXHUwN2MzXDdQXDJcMlx1MDdjM1x1MDdjNFw3VlwyXDJcdTA3YzRc dTA3YzVcN0pcMlwyXHUwN2M1IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDdj Nlw3YVwyXDJcdTA3YzZcdTA3YzdcN1VcMlwyXHUwN2M3XHUwN2M4XDdXXDJcMlx1MDdjOCIpDQo+ ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3YzlcN1JcMlwyXHUwN2M5XHUwN2NhXDdS XDJcMlx1MDdjYVx1MDdjYlw3VFwyXDJcdTA3Y2IiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXHUwN2NjXDdHXDJcMlx1MDdjY1x1MDdjZFw3VVwyXDJcdTA3Y2RcdTA3Y2VcN1VcMlwy XHUwN2NlIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDE2ZVwzXDJcMlwyXHUw N2NmXHUwN2QwXDdGXDJcMlx1MDdkMFx1MDdkMVw3Q1wyXDJcdTA3ZDEiDQo+ID4gKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwN2QyXDdbXDJcMlx1MDdkMlx1MDdkM1w3YVwyXDJc dTA3ZDNcdTA3ZDRcN1VcMlwyXHUwN2Q0Ig0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYu d3JpdGUoIlx1MDdkNVw3V1wyXDJcdTA3ZDVcdTA3ZDZcN1JcMlwyXHUwN2Q2XHUwN2Q3XDdSXDJc Mlx1MDdkNw0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3ZDhcN1Rc MlwyXHUwN2Q4XHUwN2Q5XDdHXDJcMlx1MDdkOVx1MDdkYVw3VVwyXDJcdTA3ZGENCj4gPiAiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwN2RiXDdVXDJcMlx1MDdkYlx1MDE3MFwz XDJcMlwyXHUwN2RjXHUwN2RkXDdKXDJcMlx1MDdkZA0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcdTA3ZGVcN1FcMlwyXHUwN2RlXHUwN2RmXDdXXDJcMlx1MDdkZlx1MDdl MFw3VFwyXDJcdTA3ZTAiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw N2UxXDdhXDJcMlx1MDdlMVx1MDdlMlw3VVwyXDJcdTA3ZTJcdTA3ZTNcN1dcMlwyXHUwN2UzDQo+ ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDdlNFw3UlwyXDJcdTA3ZTRc dTA3ZTVcN1JcMlwyXHUwN2U1XHUwN2U2XDdUXDJcMlx1MDdlNiIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcdTA3ZTdcN0dcMlwyXHUwN2U3XHUwN2U4XDdVXDJcMlx1MDdlOFx1MDdl OVw3VVwyXDJcdTA3ZTkiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw MTcyXDNcMlwyXDJcdTA3ZWFcdTA3ZWJcN09cMlwyXHUwN2ViXHUwN2VjXDdLXDJcMlx1MDdlYyIN Cj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3ZWRcN1BcMlwyXHUwN2Vk XHUwN2VlXDdXXDJcMlx1MDdlZVx1MDdlZlw3VlwyXDJcdTA3ZWYiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwN2YwXDdHXDJcMlx1MDdmMFx1MDdmMVw3YVwyXDJcdTA3ZjFcdTA3ZjJc N1VcMlwyXHUwN2YyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDdmM1w3V1wyXDJc dTA3ZjNcdTA3ZjRcN1JcMlwyXHUwN2Y0XHUwN2Y1XDdSXDJcMlx1MDdmNSIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcdTA3ZjZcN1RcMlwyXHUwN2Y2XHUwN2Y3XDdHXDJcMlx1MDdmN1x1 MDdmOFw3VVwyXDJcdTA3ZjgiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwN2Y5 XDdVXDJcMlx1MDdmOVx1MDE3NFwzXDJcMlwyXHUwN2ZhXHUwN2ZiXDdVXDJcMlx1MDdmYiIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA3ZmNcN0dcMlwyXHUwN2ZjXHUwN2ZkXDdFXDJc Mlx1MDdmZFx1MDdmZVw3UVwyXDJcdTA3ZmUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XHUwN2ZmXDdQXDJcMlx1MDdmZlx1MDgwMFw3RlwyXDJcdTA4MDBcdTA4MDFcN2FcMlwyXHUwODAx IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDgwMlw3VVwyXDJcdTA4MDJcdTA4 MDNcN1dcMlwyXHUwODAzXHUwODA0XDdSXDJcMlx1MDgwNA0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ ID4NCj4gYnVmLndyaXRlKCJcdTA4MDVcN1JcMlwyXHUwODA1XHUwODA2XDdUXDJcMlx1MDgwNlx1 MDgwN1w3R1wyXDJcdTA4MDciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwODA4 XDdVXDJcMlx1MDgwOFx1MDgwOVw3VVwyXDJcdTA4MDlcdTAxNzZcM1wyXDJcMlx1MDgwYQ0KPiA+ ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA4MGJcN1VcMlwyXHUwODBiXHUw ODBjXDdWXDJcMlx1MDgwY1x1MDgwZFw3UVwyXDJcdTA4MGQiDQo+ID4gKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXHUwODBlXDdUXDJcMlx1MDgwZVx1MDgwZlw3Q1wyXDJcdTA4MGZcdTA4 MTBcN0lcMlwyXHUwODEwIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDgxMVw3 R1wyXDJcdTA4MTFcdTA4MTJcN2FcMlwyXHUwODEyXHUwODEzXDdQXDJcMlx1MDgxMyIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA4MTRcN1FcMlwyXHUwODE0XHUwODE1XDdUXDJc Mlx1MDgxNVx1MDgxNlw3T1wyXDJcdTA4MTYiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXHUwODE3XDdDXDJcMlx1MDgxN1x1MDgxOFw3TlwyXDJcdTA4MThcdTAxNzhcM1wy XDJcMlx1MDgxOQ0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA4MWFc N1VcMlwyXHUwODFhXHUwODFiXDdWXDJcMlx1MDgxYlx1MDgxY1w3UVwyXDJcdTA4MWMiDQo+ID4g KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwODFkXDdUXDJcMlx1MDgxZFx1MDgx ZVw3Q1wyXDJcdTA4MWVcdTA4MWZcN0lcMlwyXHUwODFmIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlx1MDgyMFw3R1wyXDJcdTA4MjBcdTA4MjFcN2FcMlwyXHUwODIxXHUwODIyXDdW XDJcMlx1MDgyMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA4MjNcN0tcMlwy XHUwODIzXHUwODI0XDdPXDJcMlx1MDgyNFx1MDgyNVw3R1wyXDJcdTA4MjUiDQo+ID4gKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMTdhXDNcMlwyXDJcdTA4MjZcdTA4MjdcN1Vc MlwyXHUwODI3XHUwODI4XDdWXDJcMlx1MDgyOA0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcdTA4MjlcN1FcMlwyXHUwODI5XHUwODJhXDdUXDJcMlx1MDgyYVx1MDgyYlw3 Q1wyXDJcdTA4MmIiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwODJj XDdJXDJcMlx1MDgyY1x1MDgyZFw3R1wyXDJcdTA4MmRcdTA4MmVcN2FcMlwyXHUwODJlIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDgyZlw3WVwyXDJcdTA4MmZcdTA4MzBcN0Nc MlwyXHUwODMwXHUwODMxXDdNXDJcMlx1MDgzMSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcdTA4MzJcN0dcMlwyXHUwODMyXHUwODMzXDdXXDJcMlx1MDgzM1x1MDgzNFw3UlwyXDJc dTA4MzQNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMTdjXDNcMlwy XDJcdTA4MzVcdTA4MzZcN1dcMlwyXHUwODM2XHUwODM3XDdQXDJcMlx1MDgzNw0KPiA+ICIpDQo+ ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA4MzhcN0tcMlwyXHUwODM4XHUwODM5XDdT XDJcMlx1MDgzOVx1MDgzYVw3V1wyXDJcdTA4M2EiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ IGJ1Zi53cml0ZSgiXHUwODNiXDdHXDJcMlx1MDgzYlx1MDE3ZVwzXDJcMlwyXHUwODNjXHUwODNk XDdQXDJcMlx1MDgzZA0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA4 M2VcN1FcMlwyXHUwODNlXHUwODNmXDdHXDJcMlx1MDgzZlx1MDg0MFw3T1wyXDJcdTA4NDAiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwODQxXDdSXDJcMlx1MDg0MVx1MDg0Mlw3 VlwyXDJcdTA4NDJcdTA4NDNcN1tcMlwyXHUwODQzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYu d3JpdGUoIlx1MDE4MFwzXDJcMlwyXHUwODQ0XHUwODQ1XDdlXDJcMlx1MDg0NVx1MDg0Nlw3cVwy XDJcdTA4NDYiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwODQ3XDdw XDJcMlx1MDg0N1x1MDg0OFw3ZlwyXDJcdTA4NDhcdTAxODJcM1wyXDJcMlx1MDg0OSINCj4gPiAp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA4NGFcN2hcMlwyXHUwODRhXHUwODRi XDdrXDJcMlx1MDg0Ylx1MDg0Y1w3cFwyXDJcdTA4NGMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXHUwODRkXDdmXDJcMlx1MDg0ZFx1MDE4NFwzXDJcMlwyXHUwODRlXHUwODRmXDdv XDJcMlx1MDg0ZiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA4NTBcN2tcMlwy XHUwODUwXHUwODUxXDdmXDJcMlx1MDg1MVx1MDE4NlwzXDJcMlwyXHUwODUyIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDg1M1w3dlwyXDJcdTA4NTNcdTA4NTRcN3FcMlwyXHUw ODU0XHUwODU1XDdtXDJcMlx1MDg1NSINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcdTA4NTZcN2dcMlwyXHUwODU2XHUwODU3XDdwXDJcMlx1MDg1N1x1MDE4OFwzXDJcMlwy XHUwODU4Ig0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDg1OVw3dVwy XDJcdTA4NTlcdTA4NWFcN3JcMlwyXHUwODVhXHUwODViXDdjXDJcMlx1MDg1YiIpDQo+ID4NCj4g PiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA4NWNcN3BcMlwyXHUwODVjXHUwMThhXDNcMlwyXDJc dTA4NWRcdTA4NWVcN2ZcMlwyXHUwODVlIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo Ilx1MDg1Zlw3d1wyXDJcdTA4NWZcdTA4NjBcN3JcMlwyXHUwODYwXHUwMThjXDNcMlwyXDJcdTA4 NjEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwODYyXDd4XDJcMlx1MDg2Mlx1 MDg2M1w3Y1wyXDJcdTA4NjNcdTA4NjRcN3RcMlwyXHUwODY0IikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlx1MDg2NVw3Z1wyXDJcdTA4NjVcdTA4NjZcN3NcMlwyXHUwODY2XHUwODY3 XDd4XDJcMlx1MDg2NyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA4NjhcN2Nc MlwyXHUwODY4XHUwODY5XDduXDJcMlx1MDg2OVx1MDE4ZVwzXDJcMlwyXHUwODZhIg0KPiA+ICkN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDg2Ylw3eFwyXDJcdTA4NmJcdTA4NmNc N2NcMlwyXHUwODZjXHUwODZkXDd0XDJcMlx1MDg2ZCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcdTAxOTBcM1wyXDJcMlx1MDg2ZVx1MDg2Zlw3a1wyXDJcdTA4NmZcdTA4NzBcN2Zc MlwyXHUwODcwIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDg3MVw3Z1wyXDJc dTA4NzFcdTA4NzJcN3NcMlwyXHUwODcyXHUwODczXDd4XDJcMlx1MDg3MyIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcdTA4NzRcN2NcMlwyXHUwODc0XHUwODc1XDduXDJcMlx1MDg3 NVx1MDE5MlwzXDJcMlwyXHUwODc2Ig0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlx1MDg3N1w3a1wyXDJcdTA4NzdcdTA4NzhcN2ZcMlwyXHUwODc4XHUwODc5XDdnXDJcMlx1 MDg3OSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA4N2FcN3NcMlwyXHUwODdh XHUwODdiXDdrXDJcMlx1MDg3Ylx1MDg3Y1w3ZlwyXDJcdTA4N2MiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXHUwMTk0XDNcMlwyXDJcdTA4N2RcdTA4N2VcN2tcMlwyXHUwODdlXHUw ODdmXDdmXDJcMlx1MDg3ZiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA4ODBc N2dcMlwyXHUwODgwXHUwODgxXDdzXDJcMlx1MDg4MVx1MDg4Mlw3eFwyXDJcdTA4ODIiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwODgzXDdjXDJcMlx1MDg4M1x1MDg4NFw3blwy XDJcdTA4ODRcdTA4ODVcN25cMlwyXHUwODg1IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlx1MDg4Nlw3a1wyXDJcdTA4ODZcdTA4ODdcN3VcMlwyXHUwODg3XHUwODg4XDd2XDJcMlx1 MDg4OCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAxOTZcM1wyXDJcMlx1MDg4 OVx1MDg4YVw3c1wyXDJcdTA4OGFcdTA4OGJcN3dcMlwyXHUwODhiDQo+ID4gIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDg4Y1w3Z1wyXDJcdTA4OGNcdTA4OGRcN3VcMlwyXHUw ODhkXHUwODhlXDd2XDJcMlx1MDg4ZSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJc dTA4OGZcN2tcMlwyXHUwODhmXHUwODkwXDdxXDJcMlx1MDg5MFx1MDg5MVw3cFwyXDJcdTA4OTEi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwODkyXDd0XDJcMlx1MDg5Mlx1MDg5 M1w3Z1wyXDJcdTA4OTNcdTA4OTRcN2hcMlwyXHUwODk0IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlx1MDE5OFwzXDJcMlwyXHUwODk1XHUwODk2XDd0XDJcMlx1MDg5Nlx1MDg5N1w3 d1wyXDJcdTA4OTciDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwODk4 XDduXDJcMlx1MDg5OFx1MDg5OVw3Z1wyXDJcdTA4OTlcdTA4OWFcN3RcMlwyXHUwODlhIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDg5Ylw3Z1wyXDJcdTA4OWJcdTA4OWNcN2hc MlwyXHUwODljXHUwMTlhXDNcMlwyXDJcdTA4OWQiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXHUwODllXDd1XDJcMlx1MDg5ZVx1MDg5Zlw3dlwyXDJcdTA4OWZcdTA4YTBcN3Rc MlwyXHUwOGEwIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDhhMVw3a1wyXDJc dTA4YTFcdTA4YTJcN3BcMlwyXHUwOGEyXHUwOGEzXDdpXDJcMlx1MDhhMyIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcdTA4YTRcN3RcMlwyXHUwOGE0XHUwOGE1XDdnXDJcMlx1MDhh NVx1MDhhNlw3aFwyXDJcdTA4YTYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw MTljXDNcMlwyXDJcdTA4YTdcdTA4YThcN3JcMlwyXHUwOGE4XHUwOGE5XDd3XDJcMlx1MDhhOSIN Cj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA4YWFcN3VcMlwyXHUwOGFh XHUwOGFiXDdqXDJcMlx1MDhhYlx1MDhhY1w3dlwyXDJcdTA4YWMiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwOGFkXDdqXDJcMlx1MDhhZFx1MDhhZVw3a1wyXDJcdTA4YWVcdTA4YWZc N3VcMlwyXHUwOGFmIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDE5ZVwzXDJc MlwyXHUwOGIwXHUwOGIxXDd1XDJcMlx1MDhiMVx1MDhiMlw3Z1wyXDJcdTA4YjINCj4gPiAiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwOGIzXDdlXDJcMlx1MDhiM1x1MDhiNFw3 d1wyXDJcdTA4YjRcdTA4YjVcN3RcMlwyXHUwOGI1Ig0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlx1MDhiNlw3a1wyXDJcdTA4YjZcdTA4YjdcN3ZcMlwyXHUwOGI3XHUwOGI4 XDd7XDJcMlx1MDhiOCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAxYTBcM1wy XDJcMlx1MDhiOVx1MDhiYVw3aVwyXDJcdTA4YmFcdTA4YmJcN2dcMlwyXHUwOGJiIg0KPiA+ICkN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDhiY1w3dlwyXDJcdTA4YmNcdTAxYTJc M1wyXDJcMlx1MDhiZFx1MDhiZVw3VlwyXDJcdTA4YmUiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXHUwOGJmXDdUXDJcMlx1MDhiZlx1MDhjMFw3V1wyXDJcdTA4YzBcdTA4 YzFcN0dcMlwyXHUwOGMxIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDFhNFwz XDJcMlwyXHUwOGMyXHUwOGMzXDdIXDJcMlx1MDhjM1x1MDhjNFw3Q1wyXDJcdTA4YzQiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwOGM1XDdOXDJcMlx1MDhjNVx1MDhjNlw3VVwy XDJcdTA4YzZcdTA4YzdcN0dcMlwyXHUwOGM3IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlx1MDFhNlwzXDJcMlwyXHUwOGM4XHUwOGM5XDdRXDJcMlx1MDhjOVx1MDhjYVw3UFwyXDJc dTA4Y2EiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwOGNiXDdHXDJcMlx1MDhj Ylx1MDFhOFwzXDJcMlwyXHUwOGNjXHUwOGNkXDdRXDJcMlx1MDhjZCINCj4gPiApDQo+ID4NCj4g PiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA4Y2VcN1BcMlwyXHUwOGNlXHUwOGNmXDdHXDJcMlx1 MDhjZlx1MDhkMFw3VVwyXDJcdTA4ZDAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUw MWFhXDNcMlwyXDJcdTA4ZDFcdTA4ZDJcN1xcXDJcMlx1MDhkMlx1MDhkM1w3R1wyXDIiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwOGQzXHUwOGQ0XDdUXDJcMlx1MDhkNFx1MDhkNVw3 UVwyXDJcdTA4ZDVcdTAxYWNcM1wyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJc dTA4ZDZcdTA4ZDdcN1dcMlwyXHUwOGQ3XHUwOGQ4XDdQXDJcMlx1MDhkOFx1MDhkOSIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcN0ZcMlwyXHUwOGQ5XHUwOGRhXDdHXDJcMlx1MDhk YVx1MDhkYlw3SFwyXDJcdTA4ZGJcdTA4ZGMiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXDdLXDJcMlx1MDhkY1x1MDhkZFw3UFwyXDJcdTA4ZGRcdTA4ZGVcN0dcMlwyXHUw OGRlXHUwOGRmIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3RlwyXDJc dTA4ZGZcdTAxYWVcM1wyXDJcMlx1MDhlMFx1MDhlMVw3WFwyXDJcdTA4ZTFcdTA4ZTIiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdHXDJcMlx1MDhlMlx1MDhlM1w3VFwyXDJcdTA4 ZTNcdTA4ZTRcN1VcMlwyXHUwOGU0XHUwOGU1Ig0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlw3S1wyXDJcdTA4ZTVcdTA4ZTZcN1FcMlwyXHUwOGU2XHUwOGU3XDdQXDJcMlx1 MDhlN1x1MDFiMCINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcM1wyXDJc Mlx1MDhlOFx1MDhlOVw3blwyXDJcdTA4ZTlcdTA4ZWFcN2dcMlwyXHUwOGVhXHUwOGViIg0KPiA+ ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3cFwyXDJcdTA4ZWJcdTA4ZWNcN2lc MlwyXHUwOGVjXHUwOGVkXDd2XDJcMlx1MDhlZFx1MDhlZSIpDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJcN2pcMlwyXHUwOGVlXHUwMWIyXDNcMlwyXDJcdTA4ZWZcdTA4ZjBcN0NcMlwyXHUw OGYwXHUwOGYxIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3UFwyXDJcdTA4ZjFcdTA4 ZjJcN0ZcMlwyXHUwOGYyXHUwMWI0XDNcMlwyXDJcdTA4ZjNcdTA4ZjQiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXDdRXDJcMlx1MDhmNFx1MDhmNVw3VFwyXDJcdTA4ZjVcdTAxYjZc M1wyXDJcMlx1MDhmNlx1MDhmNyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcN1BcMlwy XHUwOGY3XHUwOGY4XDdRXDJcMlx1MDhmOFx1MDhmOVw3VlwyXDJcdTA4ZjlcdTAxYjgiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA4ZmFcdTA4ZmJcN3VcMlwyXHUwOGZi XHUwOGZjXDdnXDJcMlx1MDhmY1x1MDhmZCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc N3ZcMlwyXHUwOGZkXHUwMWJhXDNcMlwyXDJcdTA4ZmVcdTA4ZmZcN1x1MDA4MFwyXDJcdTA4ZmYi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMWJjXDNcMlwyXDJcdTA5MDBcdTA5 MDFcN2RcMlwyXHUwOTAxXHUwOTAyXDdxXDJcMlx1MDkwMiINCj4gPiApDQo+ID4NCj4gPiArDQo+ ID4NCj4gYnVmLndyaXRlKCJcdTA5MDNcN3FcMlwyXHUwOTAzXHUwOTA0XDduXDJcMlx1MDkwNFx1 MDkwNVw3eFwyXDJcdTA5MDUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwOTA2 XDdjXDJcMlx1MDkwNlx1MDkwN1w3blwyXDJcdTA5MDdcdTAxYmVcM1wyXDJcMlx1MDkwOCINCj4g PiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA5MDlcN3VcMlwyXHUwOTA5XHUw OTBhXDd2XDJcMlx1MDkwYVx1MDkwYlw3dFwyXDJcdTA5MGIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ IGJ1Zi53cml0ZSgiXHUwOTBjXDdrXDJcMlx1MDkwY1x1MDkwZFw3cFwyXDJcdTA5MGRcdTA5MGVc N2lcMlwyXHUwOTBlIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDkwZlw3eFwy XDJcdTA5MGZcdTA5MTBcN2NcMlwyXHUwOTEwXHUwOTExXDduXDJcMlx1MDkxMSIpDQo+ID4NCj4g PiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAxYzBcM1wyXDJcMlx1MDkxMlx1MDkxM1w3d1wyXDJc dTA5MTNcdTA5MTRcN3BcMlwyXHUwOTE0DQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYu d3JpdGUoIlx1MDkxNVw3a1wyXDJcdTA5MTVcdTA5MTZcN3BcMlwyXHUwOTE2XHUwOTE3XDd2XDJc Mlx1MDkxNyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA5MThcN3hcMlwyXHUw OTE4XHUwOTE5XDdjXDJcMlx1MDkxOVx1MDkxYVw3blwyXDJcdTA5MWEiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXHUwMWMyXDNcMlwyXDJcdTA5MWJcdTA5MWNcN3ZcMlwyXHUwOTFj XHUwOTFkXDdxXDJcMlx1MDkxZCINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcdTA5MWVcN3dcMlwyXHUwOTFlXHUwOTFmXDdyXDJcMlx1MDkxZlx1MDkyMFw3clwyXDJcdTA5 MjAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwOTIxXDdnXDJcMlx1MDkyMVx1 MDkyMlw3dFwyXDJcdTA5MjJcdTAxYzRcM1wyXDJcMlx1MDkyMyIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcdTA5MjRcN3ZcMlwyXHUwOTI0XHUwOTI1XDdxXDJcMlx1MDkyNVx1MDky Nlw3blwyXDJcdTA5MjYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwOTI3XDdx XDJcMlx1MDkyN1x1MDkyOFw3eVwyXDJcdTA5MjhcdTA5MjlcN2dcMlwyXHUwOTI5IikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDkyYVw3dFwyXDJcdTA5MmFcdTAxYzZcM1wyXDJc Mlx1MDkyYlx1MDkyY1w3b1wyXDJcdTA5MmMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHUwOTJkXDdjXDJcMlx1MDkyZFx1MDkyZVw3dlwyXDJcdTA5MmVcdTA5MmZcN2VcMlwyXHUw OTJmIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDkzMFw3alwyXDJcdTA5MzBc dTAxYzhcM1wyXDJcMlx1MDkzMVx1MDkzMlw3b1wyXDJcdTA5MzIiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXHUwOTMzXDdjXDJcMlx1MDkzM1x1MDkzNFw3dlwyXDJcdTA5MzRcdTA5 MzVcN2VcMlwyXHUwOTM1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDkzNlw3alwy XDJcdTA5MzZcdTA5MzdcN1w2NFwyXDJcdTA5MzdcdTAxY2FcM1wyXDJcMiIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcdTA5MzhcdTA5MzlcN2VcMlwyXHUwOTM5XHUwOTNhXDdjXDJcMlx1 MDkzYVx1MDkzYlw3diIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXHUwOTNiXHUw OTNjXDdnXDJcMlx1MDkzY1x1MDkzZFw3cFwyXDJcdTA5M2RcdTA5M2UiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXDdjXDJcMlx1MDkzZVx1MDkzZlw3dlwyXDJcdTA5M2ZcdTA5NDBcN2dc MlwyXHUwOTQwXHUwMWNjIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXDJcMlwy XHUwOTQxXHUwOTQyXDdzXDJcMlx1MDk0Mlx1MDk0M1w3d1wyXDJcdTA5NDNcdTA5NDQiDQo+ID4g KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdnXDJcMlx1MDk0NFx1MDk0NVw3dVwy XDJcdTA5NDVcdTA5NDZcN3ZcMlwyXHUwOTQ2XHUwOTQ3IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlw3a1wyXDJcdTA5NDdcdTA5NDhcN3FcMlwyXHUwOTQ4XHUwOTQ5XDdwXDJcMlx1 MDk0OVx1MDk0YSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcN3RcMlwyXHUwOTRh XHUwOTRiXDdnXDJcMlx1MDk0Ylx1MDk0Y1w3aFwyXDJcdTA5NGNcdTA5NGQiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDd4XDJcMlx1MDk0ZFx1MDk0ZVw3Y1wyXDJcdTA5NGVcdTA5 NGZcN25cMlwyXHUwOTRmXHUwMWNlIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwz XDJcMlwyXHUwOTUwXHUwOTUxXDd1XDJcMlx1MDk1MVx1MDk1Mlw3dlwyXDJcdTA5NTJcdTA5NTMi DQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDd0XDJcMlx1MDk1M1x1MDk1 NFw3a1wyXDJcdTA5NTRcdTA5NTVcN3BcMlwyXHUwOTU1XHUwOTU2IikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlw3aVwyXDJcdTA5NTZcdTA5NTdcN3RcMlwyXHUwOTU3XHUwOTU4XDdn XDJcMlx1MDk1OFx1MDk1OSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcN2hcMlwy XHUwOTU5XHUwOTVhXDd4XDJcMlx1MDk1YVx1MDk1Ylw3Y1wyXDJcdTA5NWJcdTA5NWMiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDduXDJcMlx1MDk1Y1x1MDFkMFwzXDJcMlwyXHUw OTVkXHUwOTVlXDdvXDJcMlx1MDk1ZVx1MDk1ZiINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcN2NcMlwyXHUwOTVmXHUwOTYwXDdyXDJcMlx1MDk2MFx1MDFkMlwzXDJcMlwy XHUwOTYxXHUwOTYyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3dFwyXDJcdTA5 NjJcdTA5NjNcN2dcMlwyXHUwOTYzXHUwOTY0XDdoXDJcMlx1MDk2NFx1MDk2NSIpDQo+ID4NCj4g PiArDQo+ID4NCj4gYnVmLndyaXRlKCJcN3RcMlwyXHUwOTY1XHUwOTY2XDdnXDJcMlx1MDk2Nlx1 MDk2N1w3dVwyXDJcdTA5NjdcdTA5NjgiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XDdqXDJcMlx1MDk2OFx1MDk2OVw3aVwyXDJcdTA5NjlcdTA5NmFcN3dcMlwyXHUwOTZhXHUwOTZi IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3a1wyXDJcdTA5NmJcdTA5NmNcN2Zc MlwyXHUwOTZjXHUwMWQ0XDNcMlwyXDJcdTA5NmRcdTA5NmUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ IGJ1Zi53cml0ZSgiXDdVXDJcMlx1MDk2ZVx1MDk2Zlw3VlwyXDJcdTA5NmZcdTA5NzBcN1RcMlwy XHUwOTcwXHUwOTcxIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3S1wyXDJcdTA5 NzFcdTA5NzJcN1BcMlwyXHUwOTcyXHUwOTczXDdJXDJcMlx1MDk3M1x1MDk3NCIpDQo+ID4NCj4g PiArDQo+ID4NCj4gYnVmLndyaXRlKCJcN2FcMlwyXHUwOTc0XHUwOTc1XDdWXDJcMlx1MDk3NVx1 MDk3Nlw3UVwyXDJcdTA5NzZcdTA5NzciDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXDdNXDJcMlx1MDk3N1x1MDk3OFw3R1wyXDJcdTA5NzhcdTA5NzlcN1BcMlwyXHUwOTc5 XHUwMWQ2DQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUw OTdhXHUwOTdiXDdRXDJcMlx1MDk3Ylx1MDk3Y1w3UlwyXDJcdTA5N2NcdTA5N2QNCj4gPiAiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdWXDJcMlx1MDk3ZFx1MDk3ZVw3S1wyXDJc dTA5N2VcdTA5N2ZcN1FcMlwyXHUwOTdmXHUwOTgwIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYu d3JpdGUoIlw3UFwyXDJcdTA5ODBcdTA5ODFcN2FcMlwyXHUwOTgxXHUwOTgyXDdGXDJcMlx1MDk4 Mlx1MDk4MyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcN0dcMlwyXHUwOTgzXHUw OTg0XDdIXDJcMlx1MDk4NFx1MDk4NVw3Q1wyXDJcdTA5ODVcdTA5ODYiDQo+ID4gKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdXXDJcMlx1MDk4Nlx1MDk4N1w3TlwyXDJcdTA5ODdc dTA5ODhcN1ZcMlwyXHUwOTg4XHUwMWQ4DQo+ID4gIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYu d3JpdGUoIlwzXDJcMlwyXHUwOTg5XHUwOThhXDdRXDJcMlx1MDk4YVx1MDk4Ylw3UlwyXDJcdTA5 OGJcdTA5OGMNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdWXDJcMlx1 MDk4Y1x1MDk4ZFw3S1wyXDJcdTA5OGRcdTA5OGVcN1FcMlwyXHUwOThlXHUwOThmIikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3UFwyXDJcdTA5OGZcdTA5OTBcN2FcMlwyXHUwOTkw XHUwOTkxXDdGXDJcMlx1MDk5MVx1MDk5MiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcN0dcMlwyXHUwOTkyXHUwOTkzXDdIXDJcMlx1MDk5M1x1MDk5NFw3Q1wyXDJcdTA5OTRcdTA5 OTUiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdXXDJcMlx1MDk5NVx1 MDk5Nlw3TlwyXDJcdTA5OTZcdTA5OTdcN1ZcMlwyXHUwOTk3XHUwOTk4DQo+ID4gIikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3YVwyXDJcdTA5OThcdTA5OTlcN09cMlwyXHUwOTk5 XHUwOTlhXDdIXDJcMlx1MDk5YVx1MDk5YiINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcN0lcMlwyXHUwOTliXHUwMWRhXDNcMlwyXDJcdTA5OWNcdTA5OWRcN1BcMlwyXHUw OTlkXHUwOTllIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3V1wyXDJc dTA5OWVcdTA5OWZcN09cMlwyXHUwOTlmXHUwOWEwXDdHXDJcMlx1MDlhMFx1MDlhMSINCj4gPiAp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcN1RcMlwyXHUwOWExXHUwOWEyXDdLXDJc Mlx1MDlhMlx1MDlhM1w3RVwyXDJcdTA5YTNcdTA5YTQiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXDdhXDJcMlx1MDlhNFx1MDlhNVw3VVwyXDJcdTA5YTVcdTA5YTZcN0tcMlwyXHUw OWE2XHUwOWE3IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3XFxcMlwyXHUwOWE3 XHUwOWE4XDdHXDJcMlx1MDlhOFx1MDlhOVw3YVwyXDJcdTA5YTlcdTA5YWEiDQo+ID4gKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdcNjNcMlwyXHUwOWFhXHUwMWRjXDNcMlwyXDJcdTA5 YWJcdTA5YWNcN1BcMlwyXHUwOWFjIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1 MDlhZFw3V1wyXDJcdTA5YWRcdTA5YWVcN09cMlwyXHUwOWFlXHUwOWFmXDdHXDJcMlx1MDlhZiIN Cj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA5YjBcN1RcMlwyXHUwOWIw XHUwOWIxXDdLXDJcMlx1MDliMVx1MDliMlw3RVwyXDJcdTA5YjIiDQo+ID4gKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwOWIzXDdhXDJcMlx1MDliM1x1MDliNFw3VVwyXDJcdTA5 YjRcdTA5YjVcN0tcMlwyXHUwOWI1Ig0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlx1MDliNlw3XFxcMlwyXHUwOWI2XHUwOWI3XDdHXDJcMlx1MDliN1x1MDliOFw3YVwyXDJc dTA5YjgNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwOWI5XDdcNjRcMlwy XHUwOWI5XHUwMWRlXDNcMlwyXDJcdTA5YmFcdTA5YmJcN1BcMlwyIikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlx1MDliYlx1MDliY1w3V1wyXDJcdTA5YmNcdTA5YmRcN09cMlwyXHUwOWJk XHUwOWJlXDdHIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTA5YmVcdTA5YmZc N1RcMlwyXHUwOWJmXHUwOWMwXDdLXDJcMlx1MDljMFx1MDljMSIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcN0VcMlwyXHUwOWMxXHUwOWMyXDdhXDJcMlx1MDljMlx1MDljM1w3VVwy XDJcdTA5YzNcdTA5YzQiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdLXDJcMlx1 MDljNFx1MDljNVw3XFxcMlwyXHUwOWM1XHUwOWM2XDdHXDJcMlx1MDljNlx1MDljNyIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcN2FcMlwyXHUwOWM3XHUwOWM4XDdcNjZcMlwyXHUwOWM4 XHUwMWUwXDNcMlwyXDJcdTA5YzkiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw OWNhXDdQXDJcMlx1MDljYVx1MDljYlw3V1wyXDJcdTA5Y2JcdTA5Y2NcN09cMlwyXHUwOWNjIikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDljZFw3R1wyXDJcdTA5Y2RcdTA5Y2VcN1Rc MlwyXHUwOWNlXHUwOWNmXDdLXDJcMlx1MDljZiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcdTA5ZDBcN0VcMlwyXHUwOWQwXHUwOWQxXDdhXDJcMlx1MDlkMVx1MDlkMlw3VVwyXDJc dTA5ZDIiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwOWQzXDdLXDJc Mlx1MDlkM1x1MDlkNFw3XFxcMlwyXHUwOWQ0XHUwOWQ1XDdHXDJcMlx1MDlkNQ0KPiA+ICIpDQo+ ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA5ZDZcN2FcMlwyXHUwOWQ2XHUwOWQ3XDc6 XDJcMlx1MDlkN1x1MDFlMlwzXDJcMlwyXHUwOWQ4Ig0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlx1MDlkOVw3RlwyXDJcdTA5ZDlcdTA5ZGFcN0tcMlwyXHUwOWRhXHUwOWRi XDdVXDJcMlx1MDlkYiINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA5 ZGNcN1JcMlwyXHUwOWRjXHUwOWRkXDdOXDJcMlx1MDlkZFx1MDlkZVw3Q1wyXDJcdTA5ZGUiDQo+ ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwOWRmXDdbXDJcMlx1MDlkZlx1 MDllMFw3YVwyXDJcdTA5ZTBcdTA5ZTFcN0tcMlwyXHUwOWUxIikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlx1MDllMlw3UFwyXDJcdTA5ZTJcdTA5ZTNcN1ZcMlwyXHUwOWUzXHUwOWU0 XDdhXDJcMlx1MDllNCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA5ZTVcN0Zc MlwyXHUwOWU1XHUwOWU2XDdHXDJcMlx1MDllNlx1MDllN1w3RVwyXDJcdTA5ZTciKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMWU0XDNcMlwyXDJcdTA5ZThcdTA5ZTlcN0ZcMlwy XHUwOWU5XHUwOWVhXDdLXDJcMlx1MDllYSINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcdTA5ZWJcN1VcMlwyXHUwOWViXHUwOWVjXDdSXDJcMlx1MDllY1x1MDllZFw3Tlwy XDJcdTA5ZWQiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwOWVlXDdDXDJc Mlx1MDllZVx1MDllZlw3W1wyXDJcdTA5ZWZcdTA5ZjBcN2FcMlwyXHUwOWYwIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlx1MDlmMVw3V1wyXDJcdTA5ZjFcdTA5ZjJcN0tcMlwyXHUwOWYy XHUwOWYzXDdQXDJcMlx1MDlmMyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA5ZjRc N1ZcMlwyXHUwOWY0XHUwOWY1XDdhXDJcMlx1MDlmNVx1MDlmNlw3RlwyXDJcdTA5ZjYiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwOWY3XDdHXDJcMlx1MDlmN1x1MDlmOFw3RVwy XDJcdTA5ZjhcdTAxZTZcM1wyXDJcMlx1MDlmOSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcdTA5ZmFcN0ZcMlwyXHUwOWZhXHUwOWZiXDdLXDJcMlx1MDlmYlx1MDlmY1w3VVwyXDJcdTA5 ZmMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwOWZkXDdSXDJcMlx1MDlmZFx1MDlm ZVw3TlwyXDJcdTA5ZmVcdTA5ZmZcN0NcMlwyXHUwOWZmIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlx1MGEwMFw3W1wyXDJcdTBhMDBcdTBhMDFcN2FcMlwyXHUwYTAxXHUwYTAyXDdX XDJcMlx1MGEwMiINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTBhMDNc N0tcMlwyXHUwYTAzXHUwYTA0XDdQXDJcMlx1MGEwNFx1MGEwNVw3VlwyXDJcdTBhMDUiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwYTA2XDdhXDJcMlx1MGEwNlx1MGEwN1w3Slwy XDJcdTBhMDdcdTBhMDhcN0dcMlwyXHUwYTA4IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlx1MGEwOVw3WlwyXDJcdTBhMDlcdTAxZThcM1wyXDJcMlx1MGEwYVx1MGEwYlw3S1wyXDJc dTBhMGIiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwYTBjXDdQXDJc Mlx1MGEwY1x1MGEwZFw3VVwyXDJcdTBhMGRcdTBhMGVcN0dcMlwyXHUwYTBlIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MGEwZlw3UFwyXDJcdTBhMGZcdTBhMTBcN1VcMlwyXHUw YTEwXHUwYTExXDdLXDJcMlx1MGExMSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJc dTBhMTJcN1ZcMlwyXHUwYTEyXHUwYTEzXDdLXDJcMlx1MGExM1x1MGExNFw3WFwyXDJcdTBhMTQi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwYTE1XDdHXDJcMlx1MGExNVx1MDFl YVwzXDJcMlwyXHUwYTE2XHUwYTE3XDdVXDJcMlx1MGExNw0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ ID4NCj4gYnVmLndyaXRlKCJcdTBhMThcN0dcMlwyXHUwYTE4XHUwYTE5XDdQXDJcMlx1MGExOVx1 MGExYVw3VVwyXDJcdTBhMWEiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XHUwYTFiXDdLXDJcMlx1MGExYlx1MGExY1w3VlwyXDJcdTBhMWNcdTBhMWRcN0tcMlwyXHUwYTFk IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MGExZVw3WFwyXDJcdTBhMWVcdTBh MWZcN0dcMlwyXHUwYTFmXHUwMWVjXDNcMlwyXDJcdTBhMjAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ IGJ1Zi53cml0ZSgiXHUwYTIxXDdOXDJcMlx1MGEyMVx1MGEyMlw3Q1wyXDJcdTBhMjJcdTBhMjNc N1VcMlwyXHUwYTIzIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MGEy NFw3VlwyXDJcdTBhMjRcdTBhMjVcN2FcMlwyXHUwYTI1XHUwYTI2XDdQXDJcMlx1MGEyNiIpDQo+ ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTBhMjdcN1FcMlwyXHUwYTI3XHUwYTI4XDdQ XDJcMlx1MGEyOFx1MGEyOVw3YVwyXDJcdTBhMjkiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXHUwYTJhXDdPXDJcMlx1MGEyYVx1MGEyYlw3Q1wyXDJcdTBhMmJcdTBhMmNcN1ZcMlwy XHUwYTJjIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MGEyZFw3RVwyXDJcdTBh MmRcdTBhMmVcN0pcMlwyXHUwYTJlXHUwMWVlXDNcMlwyXDJcdTBhMmYiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXHUwYTMwXDdIXDJcMlx1MGEzMFx1MGEzMVw3S1wyXDJcdTBhMzFc dTBhMzJcN1RcMlwyXHUwYTMyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MGEz M1w3VVwyXDJcdTBhMzNcdTBhMzRcN1ZcMlwyXHUwYTM0XHUwYTM1XDdhXDJcMlx1MGEzNSIpDQo+ ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTBhMzZcN1BcMlwyXHUwYTM2XHUwYTM3XDdR XDJcMlx1MGEzN1x1MGEzOFw3UFwyXDJcdTBhMzgiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXHUwYTM5XDdhXDJcMlx1MGEzOVx1MGEzYVw3T1wyXDJcdTBhM2FcdTBhM2JcN0NcMlwy XHUwYTNiIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MGEzY1w3Vlwy XDJcdTBhM2NcdTBhM2RcN0VcMlwyXHUwYTNkXHUwYTNlXDdKXDJcMlx1MGEzZSIpDQo+ID4NCj4g PiArDQo+IGJ1Zi53cml0ZSgiXHUwMWYwXDNcMlwyXDJcdTBhM2ZcdTBhNDBcN1w2MlwyXDJcdTBh NDBcdTBhNDFcN3pcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGE0MVx1MGE0 M1wzXDJcMlwyXHUwYTQyXHUwYTQ0XHRcMlwyXDJcdTBhNDNcdTBhNDJcMyIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTBhNDRcdTBhNDVcM1wyXDJcMlx1MGE0NVx1MGE0 M1wzXDJcMlwyXHUwYTQ1XHUwYTQ2Ig0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo IlwzXDJcMlwyXHUwYTQ2XHUwYTRkXDNcMlwyXDJcdTBhNDdcdTBhNDlcdFwzXDJcMlx1MGE0OCIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBhNDdcM1wyXDJcMlx1MGE0OVx1MGE0YVwz XDJcMlwyXHUwYTRhXHUwYTQ4XDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XHUwYTRhXHUwYTRiXDNcMlwyXDJcdTBhNGJcdTBhNGRcM1wyXDJcMlx1MGE0Y1x1MGEzZlwzIikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1MGE0Y1x1MGE0OFwzXDJcMlwy XHUwYTRkXHUwMWYyXDNcMlwyXDJcdTBhNGVcdTBhNTIiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3Jp dGUoIlx0XDRcMlwyXHUwYTRmXHUwYTUxXHRcNVwyXDJcdTBhNTBcdTBhNGZcM1wyXDJcMlx1MGE1 MSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBhNTRcM1wyXDJcMlx1MGE1Mlx1MGE1 MFwzXDJcMlwyXHUwYTUyXHUwYTUzXDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXHUwYTUzXHUwMWY0XDNcMlwyXDJcdTBhNTRcdTBhNTJcM1wyXDJcMlx1MGE1NVx1MGE1N1w3 IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIiVcMlwyXHUwYTU2XHUwYTU4XDVcdTAxZmJc dTAwZmVcMlx1MGE1N1x1MGE1NlwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo Ilx1MGE1N1x1MGE1OFwzXDJcMlwyXHUwYTU4XHUwYTU5XDNcMlwyXDJcdTBhNTlcdTBhNWFcNyIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJmXDJcMlx1MGE1YVx1MGE1Ylw3Z1wyXDJcdTBh NWJcdTBhNWNcN2hcMlwyXHUwYTVjXHUwYTVkIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlw3a1wyXDJcdTBhNWRcdTBhNWVcN3BcMlwyXHUwYTVlXHUwYTVmXDdnXDJcMlx1MGE1Zlx1 MGE2MyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MGE2MFx1MGE2Mlxu XDZcMlwyXHUwYTYxXHUwYTYwXDNcMlwyXDJcdTBhNjIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXHUwYTY1XDNcMlwyXDJcdTBhNjNcdTBhNjFcM1wyXDJcMlx1MGE2M1x1MGE2NFwzXDJc MlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGE2NFx1MGE2NlwzXDJcMlwyXHUw YTY1XHUwYTYzXDNcMlwyXDJcdTBhNjZcdTBhNjdcYiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcdTAwZmJcMlwyXHUwYTY3XHUwMWY2XDNcMlwyXDJcdTBhNjhcdTBhNmFcNyVcMlwyXHUw YTY5IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGE2Ylw1XHUwMWZiXHUwMGZlXDJc dTBhNmFcdTBhNjlcM1wyXDJcMlx1MGE2YVx1MGE2YiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0 ZSgiXDNcMlwyXDJcdTBhNmJcdTBhNmNcM1wyXDJcMlx1MGE2Y1x1MGE2ZFw3blwyXDJcdTBhNmQi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwYTZlXDdrXDJcMlx1MGE2ZVx1MGE2 Zlw3cFwyXDJcdTBhNmZcdTBhNzBcN2dcMlwyXHUwYTcwIikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlx1MGE3NFwzXDJcMlwyXHUwYTcxXHUwYTczXG5cNlwyXDJcdTBhNzJcdTBhNzFcM1wy XDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBhNzNcdTBhNzZcM1wyXDJcMlx1 MGE3NFx1MGE3MlwzXDJcMlwyXHUwYTc0XHUwYTc1XDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXDJcMlwyXHUwYTc1XHUwYTc3XDNcMlwyXDJcdTBhNzZcdTBhNzRcM1wyXDJcMlx1 MGE3N1x1MGE3OCINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcYlx1MDBm Y1wyXDJcdTBhNzhcdTAxZjhcM1wyXDJcMlx1MGE3OVx1MGE3Ylw3JVwyXDJcdTBhN2EiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwYTdjXDVcdTAxZmJcdTAwZmVcMlx1MGE3Ylx1MGE3 YVwzXDJcMlwyXHUwYTdiXHUwYTdjIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJc Mlx1MGE3Y1x1MGE3ZFwzXDJcMlwyXHUwYTdkXHUwYTdlXDdrXDJcMlx1MGE3ZSIpDQo+ID4NCj4g PiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTBhN2ZcN3BcMlwyXHUwYTdmXHUwYTgwXDdlXDJcMlx1 MGE4MFx1MGE4MVw3blwyXDJcdTBhODEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XHUwYTgyXDd3XDJcMlx1MGE4Mlx1MGE4M1w3ZlwyXDJcdTBhODNcdTBhODRcN2dcMlwyXHUwYTg0 IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGE4OFwzXDJcMlwyXHUwYTg1XHUwYTg3 XG5cNlwyXDJcdTBhODZcdTBhODVcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcdTBhODdcdTBhOGFcM1wyXDJcMlx1MGE4OFx1MGE4NlwzXDJcMlwyXHUwYTg4XHUwYTg5XDMi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwYTg5XHUwYThiXDNcMlwy XDJcdTBhOGFcdTBhODhcM1wyXDJcMlx1MGE4Ylx1MGE4YyINCj4gPiApDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcYlx1MDBmZFwyXDJcdTBhOGNcdTAxZmFcM1wyXDJcMlx1MGE4ZFx1MGE4 Zlx0XDdcMlwyXHUwYThlIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGE4ZFwzXDJc MlwyXHUwYThmXHUwYTkwXDNcMlwyXDJcdTBhOTBcdTBhOGVcM1wyXDJcMiIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcdTBhOTBcdTBhOTFcM1wyXDJcMlx1MGE5MVx1MGE5MlwzXDJcMlwy XHUwYTkyXHUwYTkzXGIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMGZlXDJcMlx1 MGE5M1x1MDFmY1wzXDJcMlwyXHUwYTk0XHUwYTk2XDdcMTdcMlwyXHUwYTk1IikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlx1MGE5N1w3XGZcMlwyXHUwYTk2XHUwYTk1XDNcMlwyXDJcdTBh OTZcdTBhOTdcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBhOTdcdTBh OWFcM1wyXDJcMlx1MGE5OFx1MGE5YVw3XGZcMlwyXHUwYTk5XHUwYTk0XDMiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwYTk5XHUwYTk4XDNcMlwyXDJcdTBhOWFcdTBh OWJcM1wyXDJcMlx1MGE5Ylx1MGE5YyINCj4gPiApDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgi XGJcdTAwZmZcMlwyXHUwYTljXHUwMWZlXDNcMlwyXDJcdTBhOWRcdTBhOWVcN1w2MVwyXDIiKQ0K PiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MGE5ZVx1MGE5Zlw3XDYxXDJcMlx1MGE5Zlx1MGFh M1wzXDJcMlwyXHUwYWEwXHUwYWEyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlxuXGJc MlwyXHUwYWExXHUwYWEwXDNcMlwyXDJcdTBhYTJcdTBhYTVcM1wyXDJcMlx1MGFhMyIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBhYTFcM1wyXDJcMlx1MGFhM1x1MGFhNFwzXDJcMlwy XHUwYWE0XHUwYWE2XDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw YWE1XHUwYWEzXDNcMlwyXDJcdTBhYTZcdTBhYTdcYlx1MDEwMFwyXDJcdTBhYTdcdTAyMDAiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBhYThcdTBhYTlcN2dcMlwy XHUwYWE5XHUwYWFhXDd6XDJcMlx1MGFhYVx1MGFhYiINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcN3ZcMlwyXHUwYWFiXHUwYWFjXDdnXDJcMlx1MGFhY1x1MGFhZFw3dFwy XDJcdTBhYWRcdTBhYWUiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlw3cFwyXDJcdTBhYWVc dTBhYjJcM1wyXDJcMlx1MGFhZlx1MGFiMVxuXDZcMlwyXHUwYWIwIikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlx1MGFhZlwzXDJcMlwyXHUwYWIxXHUwYWI0XDNcMlwyXDJcdTBhYjJcdTBh YjBcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBhYjJcdTBhYjNcM1wy XDJcMlx1MGFiM1x1MGFiNVwzXDJcMlwyXHUwYWI0XHUwYWIyXDMiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXDJcMlwyXHUwYWI1XHUwYWI2XGJcdTAxMDFcMlwyXHUwYWI2XHUwMjAyXDNc MlwyXDJcMjIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcdTBhNDVcdTBhNGFc dTBhNGNcdTBhNTJcdTBhNTdcdTBhNjNcdTBhNmFcdTBhNzRcdTBhN2IiDQo+ID4gKQ0KPiA+DQo+ ID4gKyAgICAgICAgYnVmLndyaXRlKCJcdTBhODhcdTBhOTBcdTBhOTZcdTBhOTlcdTBhYTNcdTBh YjJcM1xiXDJcMiIpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gYnVmLmdldHZhbHVlKCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBWZnJTeW50YXhMZXhlcihMZXhl cik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGF0biA9IEFUTkRlc2VyaWFsaXplcigpLmRl c2VyaWFsaXplKHNlcmlhbGl6ZWRBVE4oKSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVj aXNpb25zVG9ERkEgPSBbIERGQShkcywgaSkgZm9yIGksIGRzIGluDQo+IGVudW1lcmF0ZShhdG4u ZGVjaXNpb25Ub1N0YXRlKSBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIFRfXzAgPSAxDQo+ ID4NCj4gPiArICAgIFRfXzEgPSAyDQo+ID4NCj4gPiArICAgIFRfXzIgPSAzDQo+ID4NCj4gPiAr ICAgIFRfXzMgPSA0DQo+ID4NCj4gPiArICAgIFRfXzQgPSA1DQo+ID4NCj4gPiArICAgIFRfXzUg PSA2DQo+ID4NCj4gPiArICAgIFRfXzYgPSA3DQo+ID4NCj4gPiArICAgIFRfXzcgPSA4DQo+ID4N Cj4gPiArICAgIFRfXzggPSA5DQo+ID4NCj4gPiArICAgIFRfXzkgPSAxMA0KPiA+DQo+ID4gKyAg ICBUX18xMCA9IDExDQo+ID4NCj4gPiArICAgIFRfXzExID0gMTINCj4gPg0KPiA+ICsgICAgVF9f MTIgPSAxMw0KPiA+DQo+ID4gKyAgICBUX18xMyA9IDE0DQo+ID4NCj4gPiArICAgIFRfXzE0ID0g MTUNCj4gPg0KPiA+ICsgICAgVF9fMTUgPSAxNg0KPiA+DQo+ID4gKyAgICBEZWZpbmUgPSAxNw0K PiA+DQo+ID4gKyAgICBJbmNsdWRlID0gMTgNCj4gPg0KPiA+ICsgICAgRm9ybVBrZ1R5cGUgPSAx OQ0KPiA+DQo+ID4gKyAgICBPcGVuQnJhY2UgPSAyMA0KPiA+DQo+ID4gKyAgICBDbG9zZUJyYWNl ID0gMjENCj4gPg0KPiA+ICsgICAgT3BlblBhcmVuID0gMjINCj4gPg0KPiA+ICsgICAgQ2xvc2VQ YXJlbiA9IDIzDQo+ID4NCj4gPiArICAgIE9wZW5CcmFja2V0ID0gMjQNCj4gPg0KPiA+ICsgICAg Q2xvc2VCcmFja2V0ID0gMjUNCj4gPg0KPiA+ICsgICAgRG90ID0gMjYNCj4gPg0KPiA+ICsgICAg TmVnYXRpdmUgPSAyNw0KPiA+DQo+ID4gKyAgICBDb2xvbiA9IDI4DQo+ID4NCj4gPiArICAgIFNs YXNoID0gMjkNCj4gPg0KPiA+ICsgICAgU2VtaWNvbG9uID0gMzANCj4gPg0KPiA+ICsgICAgQ29t bWEgPSAzMQ0KPiA+DQo+ID4gKyAgICBFcXVhbCA9IDMyDQo+ID4NCj4gPiArICAgIE5vdEVxdWFs ID0gMzMNCj4gPg0KPiA+ICsgICAgTGVzc0VxdWFsID0gMzQNCj4gPg0KPiA+ICsgICAgTGVzcyA9 IDM1DQo+ID4NCj4gPiArICAgIEdyZWF0ZXJFcXVhbCA9IDM2DQo+ID4NCj4gPiArICAgIEdyZWF0 ZXIgPSAzNw0KPiA+DQo+ID4gKyAgICBCaXRXaXNlT3IgPSAzOA0KPiA+DQo+ID4gKyAgICBCaXRX aXNlQW5kID0gMzkNCj4gPg0KPiA+ICsgICAgRGV2aWNlUGF0aCA9IDQwDQo+ID4NCj4gPiArICAg IEZvcm1TZXQgPSA0MQ0KPiA+DQo+ID4gKyAgICBGb3JtU2V0SWQgPSA0Mg0KPiA+DQo+ID4gKyAg ICBFbmRGb3JtU2V0ID0gNDMNCj4gPg0KPiA+ICsgICAgVGl0bGUgPSA0NA0KPiA+DQo+ID4gKyAg ICBGb3JtSWQgPSA0NQ0KPiA+DQo+ID4gKyAgICBPbmVPZiA9IDQ2DQo+ID4NCj4gPiArICAgIEVu ZE9uZU9mID0gNDcNCj4gPg0KPiA+ICsgICAgUHJvbXB0ID0gNDgNCj4gPg0KPiA+ICsgICAgT3Jk ZXJlZExpc3QgPSA0OQ0KPiA+DQo+ID4gKyAgICBNYXhDb250YWluZXJzID0gNTANCj4gPg0KPiA+ ICsgICAgRW5kTGlzdCA9IDUxDQo+ID4NCj4gPiArICAgIEVuZEZvcm0gPSA1Mg0KPiA+DQo+ID4g KyAgICBGb3JtID0gNTMNCj4gPg0KPiA+ICsgICAgRm9ybU1hcCA9IDU0DQo+ID4NCj4gPiArICAg IE1hcFRpdGxlID0gNTUNCj4gPg0KPiA+ICsgICAgTWFwR3VpZCA9IDU2DQo+ID4NCj4gPiArICAg IFN1YnRpdGxlID0gNTcNCj4gPg0KPiA+ICsgICAgRW5kU3VidGl0bGUgPSA1OA0KPiA+DQo+ID4g KyAgICBIZWxwID0gNTkNCj4gPg0KPiA+ICsgICAgVGV4dCA9IDYwDQo+ID4NCj4gPiArICAgIE9w dGlvbiA9IDYxDQo+ID4NCj4gPiArICAgIEZMQUdTID0gNjINCj4gPg0KPiA+ICsgICAgRGF0ZSA9 IDYzDQo+ID4NCj4gPiArICAgIEVuZERhdGUgPSA2NA0KPiA+DQo+ID4gKyAgICBZZWFyID0gNjUN Cj4gPg0KPiA+ICsgICAgTW9udGggPSA2Ng0KPiA+DQo+ID4gKyAgICBEYXkgPSA2Nw0KPiA+DQo+ ID4gKyAgICBUaW1lID0gNjgNCj4gPg0KPiA+ICsgICAgRW5kVGltZSA9IDY5DQo+ID4NCj4gPiAr ICAgIEhvdXIgPSA3MA0KPiA+DQo+ID4gKyAgICBNaW51dGUgPSA3MQ0KPiA+DQo+ID4gKyAgICBT ZWNvbmQgPSA3Mg0KPiA+DQo+ID4gKyAgICBHcmF5T3V0SWYgPSA3Mw0KPiA+DQo+ID4gKyAgICBM YWJlbCA9IDc0DQo+ID4NCj4gPiArICAgIFRpbWVvdXQgPSA3NQ0KPiA+DQo+ID4gKyAgICBJbnZl bnRvcnkgPSA3Ng0KPiA+DQo+ID4gKyAgICBOb25OdkRhdGFNYXAgPSA3Nw0KPiA+DQo+ID4gKyAg ICBTdHJ1Y3QgPSA3OA0KPiA+DQo+ID4gKyAgICBVbmlvbiA9IDc5DQo+ID4NCj4gPiArICAgIEJv b2xlYW4gPSA4MA0KPiA+DQo+ID4gKyAgICBVaW50NjQgPSA4MQ0KPiA+DQo+ID4gKyAgICBVaW50 MzIgPSA4Mg0KPiA+DQo+ID4gKyAgICBVaW50MTYgPSA4Mw0KPiA+DQo+ID4gKyAgICBVaW50OCA9 IDg0DQo+ID4NCj4gPiArICAgIEVGSV9TVFJJTkdfSUQgPSA4NQ0KPiA+DQo+ID4gKyAgICBFRklf SElJX0RBVEUgPSA4Ng0KPiA+DQo+ID4gKyAgICBFRklfSElJX1RJTUUgPSA4Nw0KPiA+DQo+ID4g KyAgICBFRklfSElJX1JFRiA9IDg4DQo+ID4NCj4gPiArICAgIFV1aWQgPSA4OQ0KPiA+DQo+ID4g KyAgICBDaGVja0JveCA9IDkwDQo+ID4NCj4gPiArICAgIEVuZENoZWNrQm94ID0gOTENCj4gPg0K PiA+ICsgICAgTnVtZXJpYyA9IDkyDQo+ID4NCj4gPiArICAgIEVuZE51bWVyaWMgPSA5Mw0KPiA+ DQo+ID4gKyAgICBNaW5pbXVtID0gOTQNCj4gPg0KPiA+ICsgICAgTWF4aW11bSA9IDk1DQo+ID4N Cj4gPiArICAgIFN0ZXAgPSA5Ng0KPiA+DQo+ID4gKyAgICBEZWZhdWx0ID0gOTcNCj4gPg0KPiA+ ICsgICAgUGFzc3dvcmQgPSA5OA0KPiA+DQo+ID4gKyAgICBFbmRQYXNzd29yZCA9IDk5DQo+ID4N Cj4gPiArICAgIFN0cmluZyA9IDEwMA0KPiA+DQo+ID4gKyAgICBFbmRTdHJpbmcgPSAxMDENCj4g Pg0KPiA+ICsgICAgTWluU2l6ZSA9IDEwMg0KPiA+DQo+ID4gKyAgICBNYXhTaXplID0gMTAzDQo+ ID4NCj4gPiArICAgIEVuY29kaW5nID0gMTA0DQo+ID4NCj4gPiArICAgIFN1cHByZXNzSWYgPSAx MDUNCj4gPg0KPiA+ICsgICAgRGlzYWJsZUlmID0gMTA2DQo+ID4NCj4gPiArICAgIEhpZGRlbiA9 IDEwNw0KPiA+DQo+ID4gKyAgICBHb3RvID0gMTA4DQo+ID4NCj4gPiArICAgIEZvcm1TZXRHdWlk ID0gMTA5DQo+ID4NCj4gPiArICAgIEluY29uc2lzdGVudElmID0gMTEwDQo+ID4NCj4gPiArICAg IFdhcm5pbmdJZiA9IDExMQ0KPiA+DQo+ID4gKyAgICBOb1N1Ym1pdElmID0gMTEyDQo+ID4NCj4g PiArICAgIEVuZElmID0gMTEzDQo+ID4NCj4gPiArICAgIEtleSA9IDExNA0KPiA+DQo+ID4gKyAg ICBEZWZhdWx0RmxhZyA9IDExNQ0KPiA+DQo+ID4gKyAgICBNYW51ZmFjdHVyaW5nRmxhZyA9IDEx Ng0KPiA+DQo+ID4gKyAgICBDaGVja0JveERlZmF1bHRGbGFnID0gMTE3DQo+ID4NCj4gPiArICAg IENoZWNrQm94RGVmYXVsdE1mZ0ZsYWcgPSAxMTgNCj4gPg0KPiA+ICsgICAgSW50ZXJhY3RpdmVG bGFnID0gMTE5DQo+ID4NCj4gPiArICAgIE5WQWNjZXNzRmxhZyA9IDEyMA0KPiA+DQo+ID4gKyAg ICBSZXNldFJlcXVpcmVkRmxhZyA9IDEyMQ0KPiA+DQo+ID4gKyAgICBSZWNvbm5lY3RSZXF1aXJl ZEZsYWcgPSAxMjINCj4gPg0KPiA+ICsgICAgTGF0ZUNoZWNrRmxhZyA9IDEyMw0KPiA+DQo+ID4g KyAgICBSZWFkT25seUZsYWcgPSAxMjQNCj4gPg0KPiA+ICsgICAgT3B0aW9uT25seUZsYWcgPSAx MjUNCj4gPg0KPiA+ICsgICAgUmVzdFN0eWxlRmxhZyA9IDEyNg0KPiA+DQo+ID4gKyAgICBDbGFz cyA9IDEyNw0KPiA+DQo+ID4gKyAgICBTdWJjbGFzcyA9IDEyOA0KPiA+DQo+ID4gKyAgICBDbGFz c0d1aWQgPSAxMjkNCj4gPg0KPiA+ICsgICAgVHlwZURlZiA9IDEzMA0KPiA+DQo+ID4gKyAgICBS ZXN0b3JlID0gMTMxDQo+ID4NCj4gPiArICAgIFNhdmUgPSAxMzINCj4gPg0KPiA+ICsgICAgRGVm YXVsdHMgPSAxMzMNCj4gPg0KPiA+ICsgICAgQmFubmVyID0gMTM0DQo+ID4NCj4gPiArICAgIEFs aWduID0gMTM1DQo+ID4NCj4gPiArICAgIExlZnQgPSAxMzYNCj4gPg0KPiA+ICsgICAgUmlnaHQg PSAxMzcNCj4gPg0KPiA+ICsgICAgQ2VudGVyID0gMTM4DQo+ID4NCj4gPiArICAgIExpbmUgPSAx MzkNCj4gPg0KPiA+ICsgICAgTmFtZSA9IDE0MA0KPiA+DQo+ID4gKyAgICBWYXJJZCA9IDE0MQ0K PiA+DQo+ID4gKyAgICBRdWVzdGlvbiA9IDE0Mg0KPiA+DQo+ID4gKyAgICBRdWVzdGlvbklkID0g MTQzDQo+ID4NCj4gPiArICAgIEltYWdlID0gMTQ0DQo+ID4NCj4gPiArICAgIExvY2tlZCA9IDE0 NQ0KPiA+DQo+ID4gKyAgICBSdWxlID0gMTQ2DQo+ID4NCj4gPiArICAgIEVuZFJ1bGUgPSAxNDcN Cj4gPg0KPiA+ICsgICAgVmFsdWUgPSAxNDgNCj4gPg0KPiA+ICsgICAgUmVhZCA9IDE0OQ0KPiA+ DQo+ID4gKyAgICBXcml0ZSA9IDE1MA0KPiA+DQo+ID4gKyAgICBSZXNldEJ1dHRvbiA9IDE1MQ0K PiA+DQo+ID4gKyAgICBFbmRSZXNldEJ1dHRvbiA9IDE1Mg0KPiA+DQo+ID4gKyAgICBEZWZhdWx0 U3RvcmUgPSAxNTMNCj4gPg0KPiA+ICsgICAgQXR0cmlidXRlID0gMTU0DQo+ID4NCj4gPiArICAg IFZhcnN0b3JlID0gMTU1DQo+ID4NCj4gPiArICAgIEVmaXZhcnN0b3JlID0gMTU2DQo+ID4NCj4g PiArICAgIFZhclNpemUgPSAxNTcNCj4gPg0KPiA+ICsgICAgTmFtZVZhbHVlVmFyU3RvcmUgPSAx NTgNCj4gPg0KPiA+ICsgICAgQWN0aW9uID0gMTU5DQo+ID4NCj4gPiArICAgIENvbmZpZyA9IDE2 MA0KPiA+DQo+ID4gKyAgICBFbmRBY3Rpb24gPSAxNjENCj4gPg0KPiA+ICsgICAgUmVmcmVzaCA9 IDE2Mg0KPiA+DQo+ID4gKyAgICBJbnRlcnZhbCA9IDE2Mw0KPiA+DQo+ID4gKyAgICBWYXJzdG9y ZURldmljZSA9IDE2NA0KPiA+DQo+ID4gKyAgICBHdWlkT3AgPSAxNjUNCj4gPg0KPiA+ICsgICAg RW5kR3VpZE9wID0gMTY2DQo+ID4NCj4gPiArICAgIERhdGFUeXBlID0gMTY3DQo+ID4NCj4gPiAr ICAgIERhdGEgPSAxNjgNCj4gPg0KPiA+ICsgICAgTW9kYWwgPSAxNjkNCj4gPg0KPiA+ICsgICAg Q2xhc3NOb25EZXZpY2UgPSAxNzANCj4gPg0KPiA+ICsgICAgQ2xhc3NEaXNrRGV2aWNlID0gMTcx DQo+ID4NCj4gPiArICAgIENsYXNzVmlkZW9EZXZpY2UgPSAxNzINCj4gPg0KPiA+ICsgICAgQ2xh c3NOZXR3b3JrRGV2aWNlID0gMTczDQo+ID4NCj4gPiArICAgIENsYXNzSW5wdXREZXZpY2UgPSAx NzQNCj4gPg0KPiA+ICsgICAgQ2xhc3NPbkJvYXJkRGV2aWNlID0gMTc1DQo+ID4NCj4gPiArICAg IENsYXNzT3RoZXJEZXZpY2UgPSAxNzYNCj4gPg0KPiA+ICsgICAgU3ViY2xhc3NTZXR1cEFwcGxp Y2F0aW9uID0gMTc3DQo+ID4NCj4gPiArICAgIFN1YmNsYXNzR2VuZXJhbEFwcGxpY2F0aW9uID0g MTc4DQo+ID4NCj4gPiArICAgIFN1YmNsYXNzRnJvbnRQYWdlID0gMTc5DQo+ID4NCj4gPiArICAg IFN1YmNsYXNzU2luZ2xlVXNlID0gMTgwDQo+ID4NCj4gPiArICAgIFllYXJTdXBwcHJlc3NGbGFn ID0gMTgxDQo+ID4NCj4gPiArICAgIE1vbnRoU3VwcHJlc3NGbGFnID0gMTgyDQo+ID4NCj4gPiAr ICAgIERheVN1cHByZXNzRmxhZyA9IDE4Mw0KPiA+DQo+ID4gKyAgICBIb3VyU3VwcHByZXNzRmxh ZyA9IDE4NA0KPiA+DQo+ID4gKyAgICBNaW51dGVTdXBwcmVzc0ZsYWcgPSAxODUNCj4gPg0KPiA+ ICsgICAgU2Vjb25kU3VwcHJlc3NGbGFnID0gMTg2DQo+ID4NCj4gPiArICAgIFN0b3JhZ2VOb3Jt YWxGbGFnID0gMTg3DQo+ID4NCj4gPiArICAgIFN0b3JhZ2VUaW1lRmxhZyA9IDE4OA0KPiA+DQo+ ID4gKyAgICBTdG9yYWdlV2FrZVVwRmxhZyA9IDE4OQ0KPiA+DQo+ID4gKyAgICBVbmlRdWVGbGFn ID0gMTkwDQo+ID4NCj4gPiArICAgIE5vRW1wdHlGbGFnID0gMTkxDQo+ID4NCj4gPiArICAgIENv bmQgPSAxOTINCj4gPg0KPiA+ICsgICAgRmluZCA9IDE5Mw0KPiA+DQo+ID4gKyAgICBNaWQgPSAx OTQNCj4gPg0KPiA+ICsgICAgVG9rID0gMTk1DQo+ID4NCj4gPiArICAgIFNwYW4gPSAxOTYNCj4g Pg0KPiA+ICsgICAgRHVwID0gMTk3DQo+ID4NCj4gPiArICAgIFZhckVxVmFsID0gMTk4DQo+ID4N Cj4gPiArICAgIFZhciA9IDE5OQ0KPiA+DQo+ID4gKyAgICBJZEVxVmFsID0gMjAwDQo+ID4NCj4g PiArICAgIElkRXFJZCA9IDIwMQ0KPiA+DQo+ID4gKyAgICBJZEVxVmFsTGlzdCA9IDIwMg0KPiA+ DQo+ID4gKyAgICBRdWVzdGlvblJlZiA9IDIwMw0KPiA+DQo+ID4gKyAgICBSdWxlUmVmID0gMjA0 DQo+ID4NCj4gPiArICAgIFN0cmluZ1JlZiA9IDIwNQ0KPiA+DQo+ID4gKyAgICBQdXNoVGhpcyA9 IDIwNg0KPiA+DQo+ID4gKyAgICBTZWN1cml0eSA9IDIwNw0KPiA+DQo+ID4gKyAgICBHZXQgPSAy MDgNCj4gPg0KPiA+ICsgICAgVHJ1ZVN5bWJvbCA9IDIwOQ0KPiA+DQo+ID4gKyAgICBGYWxzZVN5 bWJvbCA9IDIxMA0KPiA+DQo+ID4gKyAgICBPbmUgPSAyMTENCj4gPg0KPiA+ICsgICAgT25lcyA9 IDIxMg0KPiA+DQo+ID4gKyAgICBaZXJvID0gMjEzDQo+ID4NCj4gPiArICAgIFVuZGVmaW5lZCA9 IDIxNA0KPiA+DQo+ID4gKyAgICBWZXJzaW9uID0gMjE1DQo+ID4NCj4gPiArICAgIExlbmd0aCA9 IDIxNg0KPiA+DQo+ID4gKyAgICBBTkQgPSAyMTcNCj4gPg0KPiA+ICsgICAgT1IgPSAyMTgNCj4g Pg0KPiA+ICsgICAgTk9UID0gMjE5DQo+ID4NCj4gPiArICAgIFNldCA9IDIyMA0KPiA+DQo+ID4g KyAgICBCaXRXaXNlTm90ID0gMjIxDQo+ID4NCj4gPiArICAgIEJvb2xWYWwgPSAyMjINCj4gPg0K PiA+ICsgICAgU3RyaW5nVmFsID0gMjIzDQo+ID4NCj4gPiArICAgIFVuSW50VmFsID0gMjI0DQo+ ID4NCj4gPiArICAgIFRvVXBwZXIgPSAyMjUNCj4gPg0KPiA+ICsgICAgVG9Mb3dlciA9IDIyNg0K PiA+DQo+ID4gKyAgICBNYXRjaCA9IDIyNw0KPiA+DQo+ID4gKyAgICBNYXRjaDIgPSAyMjgNCj4g Pg0KPiA+ICsgICAgQ2F0ZW5hdGUgPSAyMjkNCj4gPg0KPiA+ICsgICAgUXVlc3Rpb25SZWZWYWwg PSAyMzANCj4gPg0KPiA+ICsgICAgU3RyaW5nUmVmVmFsID0gMjMxDQo+ID4NCj4gPiArICAgIE1h cCA9IDIzMg0KPiA+DQo+ID4gKyAgICBSZWZyZXNoR3VpZCA9IDIzMw0KPiA+DQo+ID4gKyAgICBT dHJpbmdUb2tlbiA9IDIzNA0KPiA+DQo+ID4gKyAgICBPcHRpb25EZWZhdWx0ID0gMjM1DQo+ID4N Cj4gPiArICAgIE9wdGlvbkRlZmF1bHRNZmcgPSAyMzYNCj4gPg0KPiA+ICsgICAgTnVtZXJpY1Np emVPbmUgPSAyMzcNCj4gPg0KPiA+ICsgICAgTnVtZXJpY1NpemVUd28gPSAyMzgNCj4gPg0KPiA+ ICsgICAgTnVtZXJpY1NpemVGb3VyID0gMjM5DQo+ID4NCj4gPiArICAgIE51bWVyaWNTaXplRWln aHQgPSAyNDANCj4gPg0KPiA+ICsgICAgRGlzUGxheUludERlYyA9IDI0MQ0KPiA+DQo+ID4gKyAg ICBEaXNQbGF5VUludERlYyA9IDI0Mg0KPiA+DQo+ID4gKyAgICBEaXNQbGF5VUludEhleCA9IDI0 Mw0KPiA+DQo+ID4gKyAgICBJbnNlbnNpdGl2ZSA9IDI0NA0KPiA+DQo+ID4gKyAgICBTZW5zaXRp dmUgPSAyNDUNCj4gPg0KPiA+ICsgICAgTGFzdE5vbk1hdGNoID0gMjQ2DQo+ID4NCj4gPiArICAg IEZpcnN0Tm9uTWF0Y2ggPSAyNDcNCj4gPg0KPiA+ICsgICAgTnVtYmVyID0gMjQ4DQo+ID4NCj4g PiArICAgIFN0cmluZ0lkZW50aWZpZXIgPSAyNDkNCj4gPg0KPiA+ICsgICAgQ29tcGxleERlZmlu ZSA9IDI1MA0KPiA+DQo+ID4gKyAgICBMaW5lRGVmaW5pdGlvbiA9IDI1MQ0KPiA+DQo+ID4gKyAg ICBJbmNsdWRlRGVmaW5pdGlvbiA9IDI1Mg0KPiA+DQo+ID4gKyAgICBXaGl0ZXNwYWNlID0gMjUz DQo+ID4NCj4gPiArICAgIE5ld2xpbmUgPSAyNTQNCj4gPg0KPiA+ICsgICAgTGluZUNvbW1lbnQg PSAyNTUNCj4gPg0KPiA+ICsgICAgRXh0ZXJuID0gMjU2DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGNoYW5uZWxOYW1lcyA9IFsgdSJERUZBVUxUX1RPS0VOX0NIQU5ORUwiLCB1IkhJRERFTiIg XQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBtb2RlTmFtZXMgPSBbICJERUZBVUxUX01PREUi IF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgbGl0ZXJhbE5hbWVzID0gWyAiPElOVkFMSUQ+ IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiJ3Nob3cnIiwgIidwdXNoJyIsICIncG9wJyIsICIn I3ByYWdtYSciLCAiJ3BhY2snIiwgIic9JyIsDQo+ID4gIidJTUFHRV9UT0tFTiciLA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICInSE9SSVpPTlRBTCciLCAiJ01VTFRJX0xJTkUnIiwgIic8PCciLCAi Jz4+JyIsICInKyciLCAiJyonIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiJyUnIiwgIidmb3Jt YXQnIiwgIic/JyIsICInI2RlZmluZSciLCAiJyNpbmNsdWRlJyIsICInZm9ybXBrZ3R5cGUnIiwN Cj4gPg0KPiA+ICsgICAgICAgICAgICAiJ3snIiwgIid9JyIsICInKCciLCAiJyknIiwgIidbJyIs ICInXSciLCAiJy4nIiwgIictJyIsICInOiciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICInLyci LCAiJzsnIiwgIicsJyIsICInPT0nIiwgIichPSciLCAiJzw9JyIsICInPCciLCAiJz49JyIsDQo+ ID4NCj4gPiArICAgICAgICAgICAgIic+JyIsICInfCciLCAiJyYnIiwgIidkZXZpY2VwYXRoJyIs ICInZm9ybXNldCciLCAiJ2Zvcm1zZXRpZCciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICInZW5k Zm9ybXNldCciLCAiJ3RpdGxlJyIsICInZm9ybWlkJyIsICInb25lb2YnIiwgIidlbmRvbmVvZici LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICIncHJvbXB0JyIsICInb3JkZXJlZGxpc3QnIiwgIidt YXhjb250YWluZXJzJyIsICInZW5kbGlzdCciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICInZW5k Zm9ybSciLCAiJ2Zvcm0nIiwgIidmb3JtbWFwJyIsICInbWFwdGl0bGUnIiwgIidtYXBndWlkJyIs DQo+ID4NCj4gPiArICAgICAgICAgICAgIidzdWJ0aXRsZSciLCAiJ2VuZHN1YnRpdGxlJyIsICIn aGVscCciLCAiJ3RleHQnIiwgIidvcHRpb24nIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiJ2Zs YWdzJyIsICInZGF0ZSciLCAiJ2VuZGRhdGUnIiwgIid5ZWFyJyIsICInbW9udGgnIiwgIidkYXkn IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiJ3RpbWUnIiwgIidlbmR0aW1lJyIsICInaG91cici LCAiJ21pbnV0ZSciLCAiJ3NlY29uZCciLCAiJ2dyYXlvdXRpZiciLA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICInbGFiZWwnIiwgIid0aW1lb3V0JyIsICInaW52ZW50b3J5JyIsICInX05PTl9OVl9E QVRBX01BUCciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICInc3RydWN0JyIsICIndW5pb24nIiwg IidCT09MRUFOJyIsICInVUlOVDY0JyIsICInVUlOVDMyJyIsDQo+ID4NCj4gPiArICAgICAgICAg ICAgIidVSU5UMTYnIiwgIidVSU5UOCciLCAiJ0VGSV9TVFJJTkdfSUQnIiwgIidFRklfSElJX0RB VEUnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiJ0VGSV9ISUlfVElNRSciLCAiJ0VGSV9ISUlf UkVGJyIsICInZ3VpZCciLCAiJ2NoZWNrYm94JyIsDQo+ID4gIidlbmRjaGVja2JveCciLA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICInbnVtZXJpYyciLCAiJ2VuZG51bWVyaWMnIiwgIidtaW5pbXVt JyIsICInbWF4aW11bSciLCAiJ3N0ZXAnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiJ2RlZmF1 bHQnIiwgIidwYXNzd29yZCciLCAiJ2VuZHBhc3N3b3JkJyIsICInc3RyaW5nJyIsICInZW5kc3Ry aW5nJyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgIidtaW5zaXplJyIsICInbWF4c2l6ZSciLCAi J2VuY29kaW5nJyIsICInc3VwcHJlc3NpZiciLCAiJ2Rpc2FibGVpZiciLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICInaGlkZGVuJyIsICInZ290byciLCAiJ2Zvcm1zZXRndWlkJyIsICInaW5jb25z aXN0ZW50aWYnIiwgIid3YXJuaW5naWYnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiJ25vc3Vi bWl0aWYnIiwgIidlbmRpZiciLCAiJ2tleSciLCAiJ0RFRkFVTFQnIiwgIidNQU5VRkFDVFVSSU5H JyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgIidDSEVDS0JPWF9ERUZBVUxUJyIsICInQ0hFQ0tC T1hfREVGQVVMVF9NRkcnIiwNCj4gPiAiJ0lOVEVSQUNUSVZFJyIsDQo+ID4NCj4gPiArICAgICAg ICAgICAgIidOVl9BQ0NFU1MnIiwgIidSRVNFVF9SRVFVSVJFRCciLCAiJ1JFQ09OTkVDVF9SRVFV SVJFRCciLA0KPiA+ICInTEFURV9DSEVDSyciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICInUkVB RF9PTkxZJyIsICInT1BUSU9OU19PTkxZJyIsICInUkVTVF9TVFlMRSciLCAiJ2NsYXNzJyIsDQo+ ID4NCj4gPiArICAgICAgICAgICAgIidzdWJjbGFzcyciLCAiJ2NsYXNzZ3VpZCciLCAiJ3R5cGVk ZWYnIiwgIidyZXN0b3JlJyIsICInc2F2ZSciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICInZGVm YXVsdHMnIiwgIidiYW5uZXInIiwgIidhbGlnbiciLCAiJ2xlZnQnIiwgIidyaWdodCciLCAiJ2Nl bnRlciciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICInbGluZSciLCAiJ25hbWUnIiwgIid2YXJp ZCciLCAiJ3F1ZXN0aW9uJyIsICIncXVlc3Rpb25pZCciLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICInaW1hZ2UnIiwgIidsb2NrZWQnIiwgIidydWxlJyIsICInZW5kcnVsZSciLCAiJ3ZhbHVlJyIs ICIncmVhZCciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICInd3JpdGUnIiwgIidyZXNldGJ1dHRv biciLCAiJ2VuZHJlc2V0YnV0dG9uJyIsICInZGVmYXVsdHN0b3JlJyIsDQo+ID4NCj4gPiArICAg ICAgICAgICAgIidhdHRyaWJ1dGUnIiwgIid2YXJzdG9yZSciLCAiJ2VmaXZhcnN0b3JlJyIsICIn dmFyc2l6ZSciLA0KPiA+ICInbmFtZXZhbHVldmFyc3RvcmUnIiwNCj4gPg0KPiA+ICsgICAgICAg ICAgICAiJ2FjdGlvbiciLCAiJ2NvbmZpZyciLCAiJ2VuZGFjdGlvbiciLCAiJ3JlZnJlc2gnIiwg IidpbnRlcnZhbCciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICIndmFyc3RvcmVkZXZpY2UnIiwg IidndWlkb3AnIiwgIidlbmRndWlkb3AnIiwgIidkYXRhdHlwZSciLA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICInZGF0YSciLCAiJ21vZGFsJyIsICInTk9OX0RFVklDRSciLCAiJ0RJU0tfREVWSUNF JyIsDQo+ID4gIidWSURFT19ERVZJQ0UnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiJ05FVFdP UktfREVWSUNFJyIsICInSU5QVVRfREVWSUNFJyIsICInT05CT0FSRF9ERVZJQ0UnIiwNCj4gPiAi J09USEVSX0RFVklDRSciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICInU0VUVVBfQVBQTElDQVRJ T04nIiwgIidHRU5FUkFMX0FQUExJQ0FUSU9OJyIsDQo+ICInRlJPTlRfUEFHRSciLA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICInU0lOR0xFX1VTRSciLCAiJ1lFQVJfU1VQUFJFU1MnIiwgIidNT05U SF9TVVBQUkVTUyciLA0KPiA+ICInREFZX1NVUFBSRVNTJyIsDQo+ID4NCj4gPiArICAgICAgICAg ICAgIidIT1VSX1NVUFBSRVNTJyIsICInTUlOVVRFX1NVUFBSRVNTJyIsICInU0VDT05EX1NVUFBS RVNTJyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgIidTVE9SQUdFX05PUk1BTCciLCAiJ1NUT1JB R0VfVElNRSciLCAiJ1NUT1JBR0VfV0FLRVVQJyIsDQo+ID4gIidVTklRVUUnIiwNCj4gPg0KPiA+ ICsgICAgICAgICAgICAiJ05PRU1QVFknIiwgIidjb25kJyIsICInZmluZCciLCAiJ21pZCciLCAi J3Rva2VuJyIsICInc3BhbiciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICInZHVwJyIsICIndmFy ZXF2YWwnIiwgIid2YXInIiwgIidpZGVxdmFsJyIsICInaWRlcWlkJyIsICInaWRlcXZhbGxpc3Qn IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiJ3F1ZXN0aW9ucmVmJyIsICIncnVsZXJlZiciLCAi J3N0cmluZ3JlZiciLCAiJ3B1c2h0aGlzJyIsICInc2VjdXJpdHknIiwNCj4gPg0KPiA+ICsgICAg ICAgICAgICAiJ2dldCciLCAiJ1RSVUUnIiwgIidGQUxTRSciLCAiJ09ORSciLCAiJ09ORVMnIiwg IidaRVJPJyIsDQo+ID4gIidVTkRFRklORUQnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiJ1ZF UlNJT04nIiwgIidsZW5ndGgnIiwgIidBTkQnIiwgIidPUiciLCAiJ05PVCciLCAiJ3NldCciLA0K PiA+DQo+ID4gKyAgICAgICAgICAgICInficiLCAiJ2Jvb2x2YWwnIiwgIidzdHJpbmd2YWwnIiwg Iid1bmludHZhbCciLCAiJ3RvdXBwZXInIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiJ3RvbG93 ZXInIiwgIidtYXRjaCciLCAiJ21hdGNoMiciLCAiJ2NhdGVuYXRlJyIsICIncXVlc3Rpb25yZWZ2 YWwnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiJ3N0cmluZ3JlZnZhbCciLCAiJ21hcCciLCAi J3JlZnJlc2hndWlkJyIsICInU1RSSU5HX1RPS0VOJyIsDQo+ID4NCj4gPiArICAgICAgICAgICAg IidPUFRJT05fREVGQVVMVCciLCAiJ09QVElPTl9ERUZBVUxUX01GRyciLA0KPiA+ICInTlVNRVJJ Q19TSVpFXzEnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiJ05VTUVSSUNfU0laRV8yJyIsICIn TlVNRVJJQ19TSVpFXzQnIiwgIidOVU1FUklDX1NJWkVfOCciLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICInRElTUExBWV9JTlRfREVDJyIsICInRElTUExBWV9VSU5UX0RFQyciLA0KPiAiJ0RJU1BM QVlfVUlOVF9IRVgnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiJ0lOU0VOU0lUSVZFJyIsICIn U0VOU0lUSVZFJyIsICInTEFTVF9OT05fTUFUQ0gnIiwNCj4gPiAiJ0ZJUlNUX05PTl9NQVRDSCci IF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgc3ltYm9saWNOYW1lcyA9IFsgIjxJTlZBTElE PiIsDQo+ID4NCj4gPiArICAgICAgICAgICAgIkRlZmluZSIsICJJbmNsdWRlIiwgIkZvcm1Qa2dU eXBlIiwgIk9wZW5CcmFjZSIsICJDbG9zZUJyYWNlIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAi T3BlblBhcmVuIiwgIkNsb3NlUGFyZW4iLCAiT3BlbkJyYWNrZXQiLCAiQ2xvc2VCcmFja2V0Iiwg IkRvdCIsDQo+ID4NCj4gPiArICAgICAgICAgICAgIk5lZ2F0aXZlIiwgIkNvbG9uIiwgIlNsYXNo IiwgIlNlbWljb2xvbiIsICJDb21tYSIsICJFcXVhbCIsDQo+ID4NCj4gPiArICAgICAgICAgICAg Ik5vdEVxdWFsIiwgIkxlc3NFcXVhbCIsICJMZXNzIiwgIkdyZWF0ZXJFcXVhbCIsICJHcmVhdGVy IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiQml0V2lzZU9yIiwgIkJpdFdpc2VBbmQiLCAiRGV2 aWNlUGF0aCIsICJGb3JtU2V0IiwgIkZvcm1TZXRJZCIsDQo+ID4NCj4gPiArICAgICAgICAgICAg IkVuZEZvcm1TZXQiLCAiVGl0bGUiLCAiRm9ybUlkIiwgIk9uZU9mIiwgIkVuZE9uZU9mIiwgIlBy b21wdCIsDQo+ID4NCj4gPiArICAgICAgICAgICAgIk9yZGVyZWRMaXN0IiwgIk1heENvbnRhaW5l cnMiLCAiRW5kTGlzdCIsICJFbmRGb3JtIiwgIkZvcm0iLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICJGb3JtTWFwIiwgIk1hcFRpdGxlIiwgIk1hcEd1aWQiLCAiU3VidGl0bGUiLCAiRW5kU3VidGl0 bGUiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICJIZWxwIiwgIlRleHQiLCAiT3B0aW9uIiwgIkZM QUdTIiwgIkRhdGUiLCAiRW5kRGF0ZSIsICJZZWFyIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAi TW9udGgiLCAiRGF5IiwgIlRpbWUiLCAiRW5kVGltZSIsICJIb3VyIiwgIk1pbnV0ZSIsICJTZWNv bmQiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICJHcmF5T3V0SWYiLCAiTGFiZWwiLCAiVGltZW91 dCIsICJJbnZlbnRvcnkiLCAiTm9uTnZEYXRhTWFwIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAi U3RydWN0IiwgIlVuaW9uIiwgIkJvb2xlYW4iLCAiVWludDY0IiwgIlVpbnQzMiIsICJVaW50MTYi LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICJVaW50OCIsICJFRklfU1RSSU5HX0lEIiwgIkVGSV9I SUlfREFURSIsICJFRklfSElJX1RJTUUiLA0KPiA+ICJFRklfSElJX1JFRiIsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgIlV1aWQiLCAiQ2hlY2tCb3giLCAiRW5kQ2hlY2tCb3giLCAiTnVtZXJpYyIs ICJFbmROdW1lcmljIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiTWluaW11bSIsICJNYXhpbXVt IiwgIlN0ZXAiLCAiRGVmYXVsdCIsICJQYXNzd29yZCIsDQo+ID4gIkVuZFBhc3N3b3JkIiwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAiU3RyaW5nIiwgIkVuZFN0cmluZyIsICJNaW5TaXplIiwgIk1h eFNpemUiLCAiRW5jb2RpbmciLA0KPiAiU3VwcHJlc3NJZiIsDQo+ID4NCj4gPiArICAgICAgICAg ICAgIkRpc2FibGVJZiIsICJIaWRkZW4iLCAiR290byIsICJGb3JtU2V0R3VpZCIsICJJbmNvbnNp c3RlbnRJZiIsDQo+ID4NCj4gPiArICAgICAgICAgICAgIldhcm5pbmdJZiIsICJOb1N1Ym1pdElm IiwgIkVuZElmIiwgIktleSIsICJEZWZhdWx0RmxhZyIsDQo+ID4gIk1hbnVmYWN0dXJpbmdGbGFn IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiQ2hlY2tCb3hEZWZhdWx0RmxhZyIsICJDaGVja0Jv eERlZmF1bHRNZmdGbGFnIiwNCj4gIkludGVyYWN0aXZlRmxhZyIsDQo+ID4NCj4gPiArICAgICAg ICAgICAgIk5WQWNjZXNzRmxhZyIsICJSZXNldFJlcXVpcmVkRmxhZyIsICJSZWNvbm5lY3RSZXF1 aXJlZEZsYWciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICJMYXRlQ2hlY2tGbGFnIiwgIlJlYWRP bmx5RmxhZyIsICJPcHRpb25Pbmx5RmxhZyIsICJSZXN0U3R5bGVGbGFnIiwNCj4gPg0KPiA+ICsg ICAgICAgICAgICAiQ2xhc3MiLCAiU3ViY2xhc3MiLCAiQ2xhc3NHdWlkIiwgIlR5cGVEZWYiLCAi UmVzdG9yZSIsICJTYXZlIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiRGVmYXVsdHMiLCAiQmFu bmVyIiwgIkFsaWduIiwgIkxlZnQiLCAiUmlnaHQiLCAiQ2VudGVyIiwgIkxpbmUiLA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICJOYW1lIiwgIlZhcklkIiwgIlF1ZXN0aW9uIiwgIlF1ZXN0aW9uSWQi LCAiSW1hZ2UiLCAiTG9ja2VkIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiUnVsZSIsICJFbmRS dWxlIiwgIlZhbHVlIiwgIlJlYWQiLCAiV3JpdGUiLCAiUmVzZXRCdXR0b24iLA0KPiA+DQo+ID4g KyAgICAgICAgICAgICJFbmRSZXNldEJ1dHRvbiIsICJEZWZhdWx0U3RvcmUiLCAiQXR0cmlidXRl IiwgIlZhcnN0b3JlIiwNCj4gPiAiRWZpdmFyc3RvcmUiLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICJWYXJTaXplIiwgIk5hbWVWYWx1ZVZhclN0b3JlIiwgIkFjdGlvbiIsICJDb25maWciLCAiRW5k QWN0aW9uIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiUmVmcmVzaCIsICJJbnRlcnZhbCIsICJW YXJzdG9yZURldmljZSIsICJHdWlkT3AiLCAiRW5kR3VpZE9wIiwNCj4gPg0KPiA+ICsgICAgICAg ICAgICAiRGF0YVR5cGUiLCAiRGF0YSIsICJNb2RhbCIsICJDbGFzc05vbkRldmljZSIsICJDbGFz c0Rpc2tEZXZpY2UiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICJDbGFzc1ZpZGVvRGV2aWNlIiwg IkNsYXNzTmV0d29ya0RldmljZSIsICJDbGFzc0lucHV0RGV2aWNlIiwNCj4gPg0KPiA+ICsgICAg ICAgICAgICAiQ2xhc3NPbkJvYXJkRGV2aWNlIiwgIkNsYXNzT3RoZXJEZXZpY2UiLA0KPiA+ICJT dWJjbGFzc1NldHVwQXBwbGljYXRpb24iLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICJTdWJjbGFz c0dlbmVyYWxBcHBsaWNhdGlvbiIsICJTdWJjbGFzc0Zyb250UGFnZSIsDQo+ID4gIlN1YmNsYXNz U2luZ2xlVXNlIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiWWVhclN1cHBwcmVzc0ZsYWciLCAi TW9udGhTdXBwcmVzc0ZsYWciLCAiRGF5U3VwcHJlc3NGbGFnIiwNCj4gPg0KPiA+ICsgICAgICAg ICAgICAiSG91clN1cHBwcmVzc0ZsYWciLCAiTWludXRlU3VwcHJlc3NGbGFnIiwNCj4gIlNlY29u ZFN1cHByZXNzRmxhZyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgIlN0b3JhZ2VOb3JtYWxGbGFn IiwgIlN0b3JhZ2VUaW1lRmxhZyIsICJTdG9yYWdlV2FrZVVwRmxhZyIsDQo+ID4NCj4gPiArICAg ICAgICAgICAgIlVuaVF1ZUZsYWciLCAiTm9FbXB0eUZsYWciLCAiQ29uZCIsICJGaW5kIiwgIk1p ZCIsICJUb2siLCAiU3BhbiIsDQo+ID4NCj4gPiArICAgICAgICAgICAgIkR1cCIsICJWYXJFcVZh bCIsICJWYXIiLCAiSWRFcVZhbCIsICJJZEVxSWQiLCAiSWRFcVZhbExpc3QiLA0KPiA+DQo+ID4g KyAgICAgICAgICAgICJRdWVzdGlvblJlZiIsICJSdWxlUmVmIiwgIlN0cmluZ1JlZiIsICJQdXNo VGhpcyIsICJTZWN1cml0eSIsDQo+ID4NCj4gPiArICAgICAgICAgICAgIkdldCIsICJUcnVlU3lt Ym9sIiwgIkZhbHNlU3ltYm9sIiwgIk9uZSIsICJPbmVzIiwgIlplcm8iLA0KPiA+ICJVbmRlZmlu ZWQiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICJWZXJzaW9uIiwgIkxlbmd0aCIsICJBTkQiLCAi T1IiLCAiTk9UIiwgIlNldCIsICJCaXRXaXNlTm90IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAi Qm9vbFZhbCIsICJTdHJpbmdWYWwiLCAiVW5JbnRWYWwiLCAiVG9VcHBlciIsICJUb0xvd2VyIiwg Ik1hdGNoIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiTWF0Y2gyIiwgIkNhdGVuYXRlIiwgIlF1 ZXN0aW9uUmVmVmFsIiwgIlN0cmluZ1JlZlZhbCIsICJNYXAiLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICJSZWZyZXNoR3VpZCIsICJTdHJpbmdUb2tlbiIsICJPcHRpb25EZWZhdWx0IiwgIk9wdGlv bkRlZmF1bHRNZmciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICJOdW1lcmljU2l6ZU9uZSIsICJO dW1lcmljU2l6ZVR3byIsICJOdW1lcmljU2l6ZUZvdXIiLA0KPiA+ICJOdW1lcmljU2l6ZUVpZ2h0 IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiRGlzUGxheUludERlYyIsICJEaXNQbGF5VUludERl YyIsICJEaXNQbGF5VUludEhleCIsICJJbnNlbnNpdGl2ZSIsDQo+ID4NCj4gPiArICAgICAgICAg ICAgIlNlbnNpdGl2ZSIsICJMYXN0Tm9uTWF0Y2giLCAiRmlyc3ROb25NYXRjaCIsICJOdW1iZXIi LA0KPiA+ICJTdHJpbmdJZGVudGlmaWVyIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiQ29tcGxl eERlZmluZSIsICJMaW5lRGVmaW5pdGlvbiIsICJJbmNsdWRlRGVmaW5pdGlvbiIsDQo+ID4gIldo aXRlc3BhY2UiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICJOZXdsaW5lIiwgIkxpbmVDb21tZW50 IiwgIkV4dGVybiIgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBydWxlTmFtZXMgPSBbICJU X18wIiwgIlRfXzEiLCAiVF9fMiIsICJUX18zIiwgIlRfXzQiLCAiVF9fNSIsICJUX182IiwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAiVF9fNyIsICJUX184IiwgIlRfXzkiLCAiVF9fMTAi LCAiVF9fMTEiLCAiVF9fMTIiLCAiVF9fMTMiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICJUX18xNCIsICJUX18xNSIsICJEZWZpbmUiLCAiSW5jbHVkZSIsICJGb3JtUGtnVHlwZSIsDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgIk9wZW5CcmFjZSIsICJDbG9zZUJyYWNlIiwgIk9w ZW5QYXJlbiIsICJDbG9zZVBhcmVuIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAiT3Bl bkJyYWNrZXQiLCAiQ2xvc2VCcmFja2V0IiwgIkRvdCIsICJOZWdhdGl2ZSIsICJDb2xvbiIsDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgIlNsYXNoIiwgIlNlbWljb2xvbiIsICJDb21tYSIs ICJFcXVhbCIsICJOb3RFcXVhbCIsDQo+ICJMZXNzRXF1YWwiLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICJMZXNzIiwgIkdyZWF0ZXJFcXVhbCIsICJHcmVhdGVyIiwgIkJpdFdpc2VPciIs ICJCaXRXaXNlQW5kIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAiRGV2aWNlUGF0aCIs ICJGb3JtU2V0IiwgIkZvcm1TZXRJZCIsICJFbmRGb3JtU2V0IiwgIlRpdGxlIiwNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAiRm9ybUlkIiwgIk9uZU9mIiwgIkVuZE9uZU9mIiwgIlByb21w dCIsICJPcmRlcmVkTGlzdCIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgIk1heENvbnRh aW5lcnMiLCAiRW5kTGlzdCIsICJFbmRGb3JtIiwgIkZvcm0iLCAiRm9ybU1hcCIsDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgIk1hcFRpdGxlIiwgIk1hcEd1aWQiLCAiU3VidGl0bGUiLCAi RW5kU3VidGl0bGUiLCAiSGVscCIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgIlRleHQi LCAiT3B0aW9uIiwgIkZMQUdTIiwgIkRhdGUiLCAiRW5kRGF0ZSIsICJZZWFyIiwNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAiTW9udGgiLCAiRGF5IiwgIlRpbWUiLCAiRW5kVGltZSIsICJI b3VyIiwgIk1pbnV0ZSIsDQo+ICJTZWNvbmQiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICJHcmF5T3V0SWYiLCAiTGFiZWwiLCAiVGltZW91dCIsICJJbnZlbnRvcnkiLCAiTm9uTnZEYXRh TWFwIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAiU3RydWN0IiwgIlVuaW9uIiwgIkJv b2xlYW4iLCAiVWludDY0IiwgIlVpbnQzMiIsICJVaW50MTYiLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICJVaW50OCIsICJFRklfU1RSSU5HX0lEIiwgIkVGSV9ISUlfREFURSIsICJFRklf SElJX1RJTUUiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICJFRklfSElJX1JFRiIsICJV dWlkIiwgIkNoZWNrQm94IiwgIkVuZENoZWNrQm94IiwgIk51bWVyaWMiLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICJFbmROdW1lcmljIiwgIk1pbmltdW0iLCAiTWF4aW11bSIsICJTdGVw IiwgIkRlZmF1bHQiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICJQYXNzd29yZCIsICJF bmRQYXNzd29yZCIsICJTdHJpbmciLCAiRW5kU3RyaW5nIiwgIk1pblNpemUiLA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICJNYXhTaXplIiwgIkVuY29kaW5nIiwgIlN1cHByZXNzSWYiLCAi RGlzYWJsZUlmIiwgIkhpZGRlbiIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgIkdvdG8i LCAiRm9ybVNldEd1aWQiLCAiSW5jb25zaXN0ZW50SWYiLCAiV2FybmluZ0lmIiwNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAiTm9TdWJtaXRJZiIsICJFbmRJZiIsICJLZXkiLCAiRGVmYXVs dEZsYWciLA0KPiAiTWFudWZhY3R1cmluZ0ZsYWciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICJDaGVja0JveERlZmF1bHRGbGFnIiwgIkNoZWNrQm94RGVmYXVsdE1mZ0ZsYWciLA0KPiA+ ICJJbnRlcmFjdGl2ZUZsYWciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICJOVkFjY2Vz c0ZsYWciLCAiUmVzZXRSZXF1aXJlZEZsYWciLCAiUmVjb25uZWN0UmVxdWlyZWRGbGFnIiwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAiTGF0ZUNoZWNrRmxhZyIsICJSZWFkT25seUZsYWci LCAiT3B0aW9uT25seUZsYWciLA0KPiA+ICJSZXN0U3R5bGVGbGFnIiwNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAiQ2xhc3MiLCAiU3ViY2xhc3MiLCAiQ2xhc3NHdWlkIiwgIlR5cGVEZWYi LCAiUmVzdG9yZSIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgIlNhdmUiLCAiRGVmYXVs dHMiLCAiQmFubmVyIiwgIkFsaWduIiwgIkxlZnQiLCAiUmlnaHQiLA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICJDZW50ZXIiLCAiTGluZSIsICJOYW1lIiwgIlZhcklkIiwgIlF1ZXN0aW9u IiwgIlF1ZXN0aW9uSWQiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICJJbWFnZSIsICJM b2NrZWQiLCAiUnVsZSIsICJFbmRSdWxlIiwgIlZhbHVlIiwgIlJlYWQiLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICJXcml0ZSIsICJSZXNldEJ1dHRvbiIsICJFbmRSZXNldEJ1dHRvbiIs ICJEZWZhdWx0U3RvcmUiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICJBdHRyaWJ1dGUi LCAiVmFyc3RvcmUiLCAiRWZpdmFyc3RvcmUiLCAiVmFyU2l6ZSIsDQo+ID4gIk5hbWVWYWx1ZVZh clN0b3JlIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAiQWN0aW9uIiwgIkNvbmZpZyIs ICJFbmRBY3Rpb24iLCAiUmVmcmVzaCIsICJJbnRlcnZhbCIsDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgIlZhcnN0b3JlRGV2aWNlIiwgIkd1aWRPcCIsICJFbmRHdWlkT3AiLCAiRGF0YVR5 cGUiLCAiRGF0YSIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgIk1vZGFsIiwgIkNsYXNz Tm9uRGV2aWNlIiwgIkNsYXNzRGlza0RldmljZSIsDQo+ID4gIkNsYXNzVmlkZW9EZXZpY2UiLA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICJDbGFzc05ldHdvcmtEZXZpY2UiLCAiQ2xhc3NJ bnB1dERldmljZSIsDQo+ID4gIkNsYXNzT25Cb2FyZERldmljZSIsDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgIkNsYXNzT3RoZXJEZXZpY2UiLCAiU3ViY2xhc3NTZXR1cEFwcGxpY2F0aW9u IiwNCj4gPiAiU3ViY2xhc3NHZW5lcmFsQXBwbGljYXRpb24iLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICJTdWJjbGFzc0Zyb250UGFnZSIsICJTdWJjbGFzc1NpbmdsZVVzZSIsICJZZWFy U3VwcHByZXNzRmxhZyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgIk1vbnRoU3VwcHJl c3NGbGFnIiwgIkRheVN1cHByZXNzRmxhZyIsICJIb3VyU3VwcHByZXNzRmxhZyIsDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgIk1pbnV0ZVN1cHByZXNzRmxhZyIsICJTZWNvbmRTdXBwcmVz c0ZsYWciLA0KPiA+ICJTdG9yYWdlTm9ybWFsRmxhZyIsDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgIlN0b3JhZ2VUaW1lRmxhZyIsICJTdG9yYWdlV2FrZVVwRmxhZyIsICJVbmlRdWVGbGFn IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAiTm9FbXB0eUZsYWciLCAiQ29uZCIsICJG aW5kIiwgIk1pZCIsICJUb2siLCAiU3BhbiIsICJEdXAiLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICJWYXJFcVZhbCIsICJWYXIiLCAiSWRFcVZhbCIsICJJZEVxSWQiLCAiSWRFcVZhbExp c3QiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICJRdWVzdGlvblJlZiIsICJSdWxlUmVm IiwgIlN0cmluZ1JlZiIsICJQdXNoVGhpcyIsICJTZWN1cml0eSIsDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgIkdldCIsICJUcnVlU3ltYm9sIiwgIkZhbHNlU3ltYm9sIiwgIk9uZSIsICJP bmVzIiwgIlplcm8iLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICJVbmRlZmluZWQiLCAi VmVyc2lvbiIsICJMZW5ndGgiLCAiQU5EIiwgIk9SIiwgIk5PVCIsDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgIlNldCIsICJCaXRXaXNlTm90IiwgIkJvb2xWYWwiLCAiU3RyaW5nVmFsIiwg IlVuSW50VmFsIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAiVG9VcHBlciIsICJUb0xv d2VyIiwgIk1hdGNoIiwgIk1hdGNoMiIsICJDYXRlbmF0ZSIsDQo+ID4gIlF1ZXN0aW9uUmVmVmFs IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAiU3RyaW5nUmVmVmFsIiwgIk1hcCIsICJS ZWZyZXNoR3VpZCIsICJTdHJpbmdUb2tlbiIsDQo+ID4gIk9wdGlvbkRlZmF1bHQiLA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICJPcHRpb25EZWZhdWx0TWZnIiwgIk51bWVyaWNTaXplT25l IiwgIk51bWVyaWNTaXplVHdvIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAiTnVtZXJp Y1NpemVGb3VyIiwgIk51bWVyaWNTaXplRWlnaHQiLCAiRGlzUGxheUludERlYyIsDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgIkRpc1BsYXlVSW50RGVjIiwgIkRpc1BsYXlVSW50SGV4Iiwg Ikluc2Vuc2l0aXZlIiwgIlNlbnNpdGl2ZSIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg Ikxhc3ROb25NYXRjaCIsICJGaXJzdE5vbk1hdGNoIiwgIk51bWJlciIsICJTdHJpbmdJZGVudGlm aWVyIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAiQ29tcGxleERlZmluZSIsICJMaW5l RGVmaW5pdGlvbiIsICJJbmNsdWRlRGVmaW5pdGlvbiIsDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgIldoaXRlc3BhY2UiLCAiTmV3bGluZSIsICJMaW5lQ29tbWVudCIsICJFeHRlcm4iIF0N Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZ3JhbW1hckZpbGVOYW1lID0gIlZmclN5bnRheC5n NCINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIGlucHV0PU5v bmUsIG91dHB1dDpUZXh0SU8gPSBzeXMuc3Rkb3V0KToNCj4gPg0KPiA+ICsgICAgICAgIHN1cGVy KCkuX19pbml0X18oaW5wdXQsIG91dHB1dCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuY2hlY2tW ZXJzaW9uKCI0LjcuMiIpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9pbnRlcnAgPSBMZXhlckFU TlNpbXVsYXRvcihzZWxmLCBzZWxmLmF0biwgc2VsZi5kZWNpc2lvbnNUb0RGQSwNCj4gPiBQcmVk aWN0aW9uQ29udGV4dENhY2hlKCkpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9hY3Rpb25zID0g Tm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fcHJlZGljYXRlcyA9IE5vbmUNCj4gPg0KPiA+ IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9WZnJTeW50 YXhQYXJzZXIucHkNCj4gPiBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1Zm clN5bnRheFBhcnNlci5weQ0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAw MDAwMDAwMC4uZDVkNjFhMjZhOQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9CYXNlVG9v bHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9WZnJTeW50YXhQYXJzZXIucHkNCj4gPiBAQCAt MCwwICsxLDIwNDc1IEBADQo+ID4gKyMgR2VuZXJhdGVkIGZyb20gVmZyU3ludGF4Lmc0IGJ5IEFO VExSIDQuNy4yDQo+ID4NCj4gPiArIyBlbmNvZGluZzogdXRmLTgNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICtpbXBvcnQgb3MNCj4gPg0KPiA+ICtpbXBvcnQgc3lzDQo+ID4NCj4gPiArZnJvbSBhbnRs cjQgaW1wb3J0ICoNCj4gPg0KPiA+ICtmcm9tIGlvIGltcG9ydCBTdHJpbmdJTw0KPiA+DQo+ID4g K2Zyb20gdHlwaW5nIGltcG9ydCBUZXh0SU8NCj4gPg0KPiA+ICtmcm9tIFZmckNvbXBpbGVyLklm ckN0eXBlcyBpbXBvcnQgKg0KPiA+DQo+ID4gK2Zyb20gVmZyQ29tcGlsZXIuSWZyRm9ybVBrZyBp bXBvcnQgKg0KPiA+DQo+ID4gK2Zyb20gVmZyQ29tcGlsZXIuSWZyVXRpbGl0eSBpbXBvcnQgKg0K PiA+DQo+ID4gK2Zyb20gVmZyQ29tcGlsZXIuSWZyVHJlZSBpbXBvcnQgKg0KPiA+DQo+ID4gK2Zy b20gVmZyQ29tcGlsZXIuSWZyRXJyb3IgaW1wb3J0ICoNCj4gPg0KPiA+ICtmcm9tIFZmckNvbXBp bGVyLklmclByZVByb2Nlc3MgaW1wb3J0ICoNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICtkZWYgc2VyaWFsaXplZEFUTigpOg0KPiA+DQo+ID4gKyAgICB3aXRoIFN0cmluZ0lPKCkg YXMgYnVmOg0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTYwOGJcdWE3MmFcdTgx MzNcdWI5ZWRcdTQxN2NcdTNiZTdcdTc3ODZcdTU5NjRcM1x1MDEwDQo+ID4gMiIpDQo+ID4NCj4g PiArICAgICAgICBidWYud3JpdGUoIlx1MGJhN1w0XDJcdFwyXDRcM1x0XDNcNFw0XHRcNFw0XDVc dFw1XDRcNlx0XDZcNFw3XHRcNyIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlw0XGJc dFxiXDRcdFx0XHRcNFxuXHRcblw0XDEzXHRcMTNcNFxmXHRcZlw0XHJcdFxyXDRcMTYiKQ0KPiA+ DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcdFwxNlw0XDE3XHRcMTdcNFwyMFx0XDIwXDRcMjFc dFwyMVw0XDIyXHRcMjJcNFwyM1x0XDIzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgi XDRcMjRcdFwyNFw0XDI1XHRcMjVcNFwyNlx0XDI2XDRcMjdcdFwyN1w0XDMwXHRcMzBcNFwzMSIp DQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlx0XDMxXDRcMzJcdFwzMlw0XDMzXHRcMzNc NFwzNFx0XDM0XDRcMzVcdFwzNVw0XDM2XHRcMzYiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndy aXRlKCJcNFwzN1x0XDM3XDQgXHQgXDQhXHQhXDRcIlx0XCJcNCNcdCNcNCRcdCRcNCVcdCVcNCZc dCIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIiZcNFwnXHRcJ1w0KFx0KFw0KVx0KVw0 Klx0Klw0K1x0K1w0LFx0LFw0LVx0LVw0Llx0Llw0IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53 cml0ZSgiL1x0L1w0XDYwXHRcNjBcNFw2MVx0XDYxXDRcNjJcdFw2Mlw0XDYzXHRcNjNcNFw2NFx0 XDY0IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDRcNjVcdFw2NVw0XDY2XHRcNjZc NFw2N1x0XDY3XDQ4XHQ4XDQ5XHQ5XDQ6XHQ6XDQ7XHQiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3Jp dGUoIjtcNDxcdDxcND1cdD1cND5cdD5cND9cdD9cNEBcdEBcNEFcdEFcNEJcdEJcNENcdENcNERc dCIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIkRcNEVcdEVcNEZcdEZcNEdcdEdcNEhc dEhcNElcdElcNEpcdEpcNEtcdEtcNExcdExcNE1cdCIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0 ZSgiTVw0Tlx0Tlw0T1x0T1w0UFx0UFw0UVx0UVw0Ulx0Ulw0U1x0U1w0VFx0VFw0VVx0VVw0Vlx0 IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiVlw0V1x0V1w0WFx0WFw0WVx0WVw0Wlx0 Wlw0W1x0W1w0XFxcdFxcXDRdXHRdXDReXHReXDQiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndy aXRlKCJfXHRfXDRgXHRgXDRhXHRhXDRiXHRiXDRjXHRjXDRkXHRkXDRlXHRlXDRmXHRmXDRnXHRn XDQiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJoXHRoXDRpXHRpXDRqXHRqXDRrXHRr XDRsXHRsXDRtXHRtXDRuXHRuXDRvXHRvXDRwXHRwXDQiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVm LndyaXRlKCJxXHRxXDRyXHRyXDRzXHRzXDR0XHR0XDR1XHR1XDR2XHR2XDR3XHR3XDR4XHR4XDR5 XHR5XDQiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJ6XHR6XDR7XHR7XDR8XHR8XDR9 XHR9XDR+XHR+XDRcMTc3XHRcMTc3XDRcdTAwODBcdFx1MDA4MCIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcNFx1MDA4MVx0XHUwMDgxXDRcdTAwODJcdFx1MDA4Mlw0XHUwMDgzXHRcdTAw ODNcNFx1MDA4NCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdFx1MDA4NFw0XHUwMDg1 XHRcdTAwODVcNFx1MDA4Nlx0XHUwMDg2XDRcdTAwODdcdFx1MDA4NyIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcNFx1MDA4OFx0XHUwMDg4XDRcdTAwODlcdFx1MDA4OVw0XHUwMDhhXHRc dTAwOGFcNFx1MDA4YiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdFx1MDA4Ylw0XHUw MDhjXHRcdTAwOGNcNFx1MDA4ZFx0XHUwMDhkXDRcdTAwOGVcdFx1MDA4ZSIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcNFx1MDA4Zlx0XHUwMDhmXDRcdTAwOTBcdFx1MDA5MFw0XHUwMDkx XHRcdTAwOTFcNFx1MDA5MiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdFx1MDA5Mlw0 XHUwMDkzXHRcdTAwOTNcNFx1MDA5NFx0XHUwMDk0XDRcdTAwOTVcdFx1MDA5NSIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcNFx1MDA5Nlx0XHUwMDk2XDRcdTAwOTdcdFx1MDA5N1w0XHUw MDk4XHRcdTAwOThcNFx1MDA5OSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdFx1MDA5 OVw0XHUwMDlhXHRcdTAwOWFcNFx1MDA5Ylx0XHUwMDliXDRcdTAwOWNcdFx1MDA5YyIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcNFx1MDA5ZFx0XHUwMDlkXDRcdTAwOWVcdFx1MDA5ZVw0 XHUwMDlmXHRcdTAwOWZcNFx1MDBhMCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdFx1 MDBhMFw0XHUwMGExXHRcdTAwYTFcNFx1MDBhMlx0XHUwMGEyXDRcdTAwYTNcdFx1MDBhMyIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcNFx1MDBhNFx0XHUwMGE0XDRcdTAwYTVcdFx1MDBh NVw0XHUwMGE2XHRcdTAwYTZcNFx1MDBhNyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc dFx1MDBhN1w0XHUwMGE4XHRcdTAwYThcNFx1MDBhOVx0XHUwMGE5XDRcdTAwYWFcdFx1MDBhYSIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcNFx1MDBhYlx0XHUwMGFiXDRcdTAwYWNcdFx1 MDBhY1w0XHUwMGFkXHRcdTAwYWRcNFx1MDBhZSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcdFx1MDBhZVw0XHUwMGFmXHRcdTAwYWZcNFx1MDBiMFx0XHUwMGIwXDRcdTAwYjFcdFx1MDBi MSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcNFx1MDBiMlx0XHUwMGIyXDRcdTAwYjNc dFx1MDBiM1w0XHUwMGI0XHRcdTAwYjRcNFx1MDBiNSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcdFx1MDBiNVw0XHUwMGI2XHRcdTAwYjZcNFx1MDBiN1x0XHUwMGI3XDRcdTAwYjhcdFx1 MDBiOCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcNFx1MDBiOVx0XHUwMGI5XDRcdTAw YmFcdFx1MDBiYVw0XHUwMGJiXHRcdTAwYmJcNFx1MDBiYyIpDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJcdFx1MDBiY1w0XHUwMGJkXHRcdTAwYmRcNFx1MDBiZVx0XHUwMGJlXDRcdTAwYmZc dFx1MDBiZiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcNFx1MDBjMFx0XHUwMGMwXDRc dTAwYzFcdFx1MDBjMVw0XHUwMGMyXHRcdTAwYzJcNFx1MDBjMyIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcdFx1MDBjM1w0XHUwMGM0XHRcdTAwYzRcNFx1MDBjNVx0XHUwMGM1XDRcdTAw YzZcdFx1MDBjNiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcNFx1MDBjN1x0XHUwMGM3 XDRcdTAwYzhcdFx1MDBjOFw0XHUwMGM5XHRcdTAwYzlcNFx1MDBjYSIpDQo+ID4NCj4gPiArICAg ICAgICBidWYud3JpdGUoIlx0XHUwMGNhXDRcdTAwY2JcdFx1MDBjYlw0XHUwMGNjXHRcdTAwY2Nc M1wyXDNcMlwzXDJcNyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTAxOWNcblwyXGZc MlwxNlwyXHUwMTlmXDEzXDJcM1wyXDVcMlx1MDFhMlxuXDJcM1wzIikNCj4gPg0KPiA+ICsNCj4g YnVmLndyaXRlKCJcM1wzXDNcNFwzXDRcM1w0XDVcNFx1MDFhOVxuXDRcM1w0XDNcNFw1XDRcdTAx YWRcblw0XDMiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlw1XDVcNVx1MDFiMFxuXDVcM1w2 XDNcNlwzXDZcM1w2XDNcNlwzXDZcNVw2XHUwMWI4XG5cNiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53 cml0ZSgiXDNcNlwzXDZcM1w3XDVcN1x1MDFiZFxuXDdcM1w3XDNcN1w1XDdcdTAxYzFcblw3XDNc N1w1IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcN1x1MDFjNFxuXDdcM1w3XDNcN1wzXDdc M1w3XDVcN1x1MDFjYVxuXDdcM1w3XDNcN1wzXGIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXDVcYlx1MDFjZlxuXGJcM1xiXDNcYlw1XGJcdTAxZDNcblxiXDNcYlw1XGJcdTAxZDZcblxi IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcYlwzXGJcM1xiXDNcYlw1XGJcdTAx ZGNcblxiXDNcYlwzXGJcM1x0XDNcdFwzXHRcM1x0IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53 cml0ZSgiXDNcdFwzXHRcM1x0XDNcdFwzXHRcM1x0XDNcdFwzXHRcM1x0XDNcdFw3XHRcdTAxZWVc blx0IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXGZcdFwxNlx0XHUwMWYxXDEzXHRc M1xuXDNcblwzXG5cM1xuXDNcblw1XG5cdTAxZjhcblxuIikNCj4gPg0KPiA+ICsNCj4gYnVmLndy aXRlKCJcM1xuXDNcblwzXDEzXDNcMTNcM1wxM1wzXDEzXDNcMTNcNVwxM1x1MDIwMVxuXDEzXDNc MTMiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wxM1wzXGZcM1xmXDNcZlwzXGZc M1xmXDVcZlx1MDIwYVxuXGZcM1xmXDNcZlwzXHJcMyIpDQo+ID4NCj4gPiArICAgICAgICBidWYu d3JpdGUoIlxyXDNcclwzXHJcM1xyXDVcclx1MDIxM1xuXHJcM1xyXDNcclwzXDE2XDNcMTZcM1wx NlwzIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcMTZcM1wxNlw1XDE2XHUwMjFjXG5cMTZc M1wxNlwzXDE2XDNcMTdcM1wxN1wzXDE3XDNcMTciKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndy aXRlKCJcM1wxN1w1XDE3XHUwMjI1XG5cMTdcM1wxN1wzXDE3XDNcMjBcM1wyMFwzXDIwXDNcMjBc MyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDIwXDVcMjBcdTAyMmVcblwyMFwzXDIwXDNc MjBcM1wyMVwzXDIxXDNcMjFcM1wyMVwzXDIxIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0 ZSgiXDVcMjFcdTAyMzdcblwyMVwzXDIxXDNcMjFcM1wyMlwzXDIyXDNcMjJcM1wyMlwzXDIyXDUi KQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwyMlx1MDI0MFxuXDIyXDNcMjJcM1wyMlwzXDIz XDNcMjNcM1wyM1wzXDIzXDNcMjNcNVwyMyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUw MjQ5XG5cMjNcM1wyM1wzXDIzXDNcMjRcM1wyNFw1XDI0XHUwMjRmXG5cMjRcM1wyNFwzIikNCj4g Pg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcMjRcM1wyNFwzXDI0XDNcMjVcM1wyNVw1XDI1XHUwMjU3 XG5cMjVcM1wyNVwzXDI1XDNcMjUiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wy NVwzXDI2XDNcMjZcNVwyNlx1MDI1ZlxuXDI2XDNcMjZcM1wyNlwzXDI2XDNcMjZcMyIpDQo+ID4N Cj4gPiArDQo+IGJ1Zi53cml0ZSgiXDI3XDNcMjdcNVwyN1x1MDI2N1xuXDI3XDNcMjdcM1wyN1wz XDI3XDNcMjdcM1wzMFwzXDMwIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wzMFwzXDMw XDNcMzBcM1wzMFwzXDMwXDNcMzBcM1wzMFwzXDMwXDNcMzBcM1wzMFwzXDMwIikNCj4gPg0KPiA+ ICsNCj4gYnVmLndyaXRlKCJcM1wzMFwzXDMwXDNcMzBcM1wzMFwzXDMwXDNcMzBcM1wzMFwzXDMw XDNcMzBcM1wzMFwzXDMwIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcNVwzMFx1MDI4NVxu XDMwXDNcMzBcM1wzMFwzXDMwXDNcMzBcM1wzMFw1XDMwXHUwMjhjXG4iKQ0KPiA+DQo+ID4gKw0K PiBidWYud3JpdGUoIlwzMFwzXDMwXDNcMzBcM1wzMFwzXDMwXDNcMzBcNVwzMFx1MDI5M1xuXDMw XDNcMzBcM1wzMCIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlwzXDMwXDNcMzBcM1wz MVwzXDMxXDNcMzFcNVwzMVx1MDI5Y1xuXDMxXDNcMzFcM1wzMVw1IikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlwzMVx1MDJhMFxuXDMxXDNcMzFcM1wzMVw1XDMxXHUwMmE0XG5cMzFcM1wz MlwzXDMyXDNcMzIiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlw3XDMyXHUwMmE5XG5cMzJc ZlwzMlwxNlwzMlx1MDJhY1wxM1wzMlwzXDMzXDNcMzNcM1wzNCIpDQo+ID4NCj4gPiArDQo+IGJ1 Zi53cml0ZSgiXDNcMzRcM1wzNVw3XDM1XHUwMmIzXG5cMzVcZlwzNVwxNlwzNVx1MDJiNlwxM1wz NVwzXDM2IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDM2XDNcMzZcM1wzNlwzXDM2 XDNcMzZcM1wzNlwzXDM2XDNcMzZcM1wzNlw1XDM2XHUwMmMyIikNCj4gPg0KPiA+ICsNCj4gYnVm LndyaXRlKCJcblwzNlwzXDM3XDNcMzdcM1wzN1wzXDM3XDNcMzdcM1wzN1wzXDM3XDNcMzdcM1wz N1wzXDM3IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMzdcM1wzN1wzXDM3XDVc MzdcdTAyZDFcblwzN1wzXDM3XDNcMzdcMyBcMyBcMyBcMyAiKQ0KPiA+DQo+ID4gKyAgICAgICAg YnVmLndyaXRlKCJcMyBcMyBcMyBcMyBcMyBcMyBcMyBcMyBcMyBcMyBcMyBcMyBcMyBcNSBcdTAy ZTZcbiBcMyIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIiBcMyBcMyBcMyBcNSBcdTAy ZWNcbiBcMyBcMyBcMyBcMyBcMyBcMyBcMyBcMyBcMyBcMyFcMyIpDQo+ID4NCj4gPiArICAgICAg ICBidWYud3JpdGUoIiFcMyFcMyFcMyFcMyFcMyFcMyFcMyFcMyFcMyFcMyFcMyFcMyFcMyFcMyFc MyFcNSFcdTAzMDgiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcbiFcMyFcMyFcMyFc MyFcNSFcdTAzMGVcbiFcMyFcMyFcMyFcMyFcMyFcNyFcdTAzMTVcbiIpDQo+ID4NCj4gPiArICAg ICAgICBidWYud3JpdGUoIiFcZiFcMTYhXHUwMzE4XDEzIVwzIVwzIVwzIVwzIVwzIVwzIVwzIVwz IVwzIVwzIVwzIVwzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiIVwzIVwzIVwzIVwz IVw1IVx1MDMyYVxuIVwzIVwzIVwzIVwzIVwzIVwzXCJcM1wiXDMjXDMiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiI1wzI1wzI1wzI1wzI1wzI1w1I1x1MDMzYVxuI1wzI1wzI1wzI1wz I1wzI1wzI1wzI1w2I1x1MDM0MyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcbiNcciNc MTYjXHUwMzQ0XDMjXDMjXDMjXDMjXDMjXDMkXDMkXDMkXDMkXDMkXDMkXDMkXDMiKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiJVwzJVwzJVwzJVwzJVwzJVwzJVwzJlwzJlwzJlwzJlwz JlwzJlwzJlwzJlwzJlwzJlwzJlwNCj4gPiAzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0 ZSgiJlwzJlwzJlwzJlwzJlwzXCdcM1wnXDNcJ1wzXCdcM1wnXDNcJ1wzXCdcM1wnXDNcJ1wzXCci KQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wnXDNcJ1w1XCdcdTAzNzZcblwnXDNc J1wzXCdcMyhcMyhcMyhcMyhcMyhcMylcMylcMyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCIpXDMqXDMqXDMqXDMqXDUqXHUwMzg2XG4qXDMqXDMqXDMqXDMqXDMqXDUqXHUwMzhkXG4qXDMi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiKlwzKlwzKlwzKlw1Klx1MDM5M1xuKlwzK1wz K1wzK1wzK1wzK1wzK1wzK1wzK1wzK1wzK1wzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0 ZSgiK1wzK1wzK1wzK1wzLFwzLFwzLFwzLFwzLFwzLFwzLFwzLFw1LFx1MDNhYlxuLFwzLVwzLVwz IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiLVwzLVwzLVwzLVwzLVw3LVx1MDNiNFxu LVxmLVwxNi1cdTAzYjdcMTMtXDUtXHUwM2I5XG4iKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndy aXRlKCItXDMuXDUuXHUwM2JjXG4uXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMu XDMiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCIuXDMuXDMuXDMuXDMuXDMuXDMuXDMu XDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVm LndyaXRlKCIuXDMuXDMuXDMuXDMuXDcuXHUwM2UxXG4uXGYuXDE2Llx1MDNlNFwxMy5cMy5cNS5c dTAzZTciKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcbi5cMy9cMy9cMy9cMy9cMy9c My9cMy9cM1w2MFwzXDYwXDNcNjFcM1w2MVw1XDYxXHUwM2Y0IikNCj4gPg0KPiA+ICsgICAgICAg IGJ1Zi53cml0ZSgiXG5cNjFcM1w2MlwzXDYyXDNcNjJcN1w2Mlx1MDNmOVxuXDYyXGZcNjJcMTZc NjJcdTAzZmMiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcMTNcNjJcM1w2M1wzXDYz XDNcNjNcM1w2M1wzXDYzXDNcNjNcM1w2M1wzXDYzXDNcNjNcMyIpDQo+ID4NCj4gPiArDQo+IGJ1 Zi53cml0ZSgiXDYzXDNcNjNcM1w2M1wzXDYzXDdcNjNcdTA0MGJcblw2M1xmXDYzXDE2XDYzXHUw NDBlXDEzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDYzXDNcNjNcM1w2M1wzXDYz XDNcNjRcM1w2NFwzXDY0XDNcNjRcM1w2NFwzXDY0XDNcNjQiKQ0KPiA+DQo+ID4gKyAgICAgICAg YnVmLndyaXRlKCJcM1w2NFwzXDY0XDNcNjRcM1w2NFwzXDY0XDNcNjRcM1w2NFwzXDY0XDVcNjRc dTA0MjJcbiIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlw2NFwzXDY1XDNcNjVcM1w2 NVwzXDY1XDNcNjVcM1w2NVwzXDY1XDNcNjVcM1w2NVwzXDY1IikNCj4gPg0KPiA+ICsgICAgICAg IGJ1Zi53cml0ZSgiXDNcNjVcM1w2NVwzXDY1XDNcNjVcM1w2NVwzXDY1XDNcNjVcN1w2NVx1MDQz NVxuXDY1XGYiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlw2NVwxNlw2NVx1MDQzOFwxM1w2 NVwzXDY1XDdcNjVcdTA0M2Jcblw2NVxmXDY1XDE2XDY1IikNCj4gPg0KPiA+ICsNCj4gYnVmLndy aXRlKCJcdTA0M2VcMTNcNjVcM1w2NVwzXDY1XDNcNjVcM1w2NlwzXDY2XDNcNjZcM1w2N1wzXDY3 XDMiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcNjdcMzhcMzhcMzhcMzhcMzhcMzhc MzhcMzlcMzlcMzlcNTlcdTA0NTNcbjlcMzpcMzpcMyIpDQo+ID4NCj4gPiArICAgICAgICBidWYu d3JpdGUoIjpcMzpcMzpcMzpcMzpcMzpcMzpcMzpcMzpcNTpcdTA0NjBcbjpcMzpcMzpcNTpcdTA0 NjRcbiIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIjpcMzpcMzpcMzpcNTpcdTA0Njlc bjpcMzpcMzpcNzpcdTA0NmRcbjpcZjpcMTY6XHUwNDcwIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXDEzOlw1Olx1MDQ3MlxuOlwzOlwzOlw1Olx1MDQ3NlxuOlwzO1wzO1w1O1x1MDQ3 YVxuO1wzIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCI8XDM8XDM8XDc8XHUwNDdmXG48XGY8 XDE2PFx1MDQ4MlwxMzxcMz1cMz1cMz5cMz5cMz5cMyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0 ZSgiPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlw1 IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIj5cdTA0OWJcbj5cMz5cMz5cMz5cMz5cMz5c Mz5cNz5cdTA0YTNcbj5cZj5cMTY+XHUwNGE2IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo IlwxMz5cMz5cMz5cMz5cMz5cMz5cNT5cdTA0YWRcbj5cMz5cMz5cNT5cdTA0YjFcbj5cMz5cMyIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCI+XDM/XDM/XDU/XHUwNGI3XG4/XDNAXDNA XDVAXHUwNGJiXG5AXDNBXDNBXDNBXDNBXDNBXDMiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwz QVwzQVwzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIkFcM0FcM0FcM0FcM0FcM0FcM0Fc M0FcM0FcM0FcM0FcM0FcM0FcM0FcM0FcM0FcM0FcM0FcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJBXDNBXDNBXDVBXHUwNGU5XG5BXDNBXDNBXDVBXHUwNGVkXG5BXDNBXDNBXDNB XDNBXDNBXDUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiQVx1MDRmNFxuQVwzQVwzQVwz QVwzQVw1QVx1MDRmYVxuQVwzQVwzQVw1QVx1MDRmZVxuQVwzIikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIkFcM0FcM0JcM0JcM0JcN0JcdTA1MDVcbkJcZkJcMTZCXHUwNTA4XDEzQlwz Q1wzQ1w1Q1x1MDUwYyINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcbkNc M0RcM0RcM0RcM0RcM0RcM0RcM0RcM0RcM0RcM0RcNURcdTA1MThcbkRcM0RcM0RcMyIpDQo+ID4N Cj4gPiArDQo+IGJ1Zi53cml0ZSgiRFwzRVwzRVwzRVwzRVwzRVwzRVw1RVx1MDUyM1xuRVwzRlwz RlwzRlwzRlwzRlwzRlwzRlwzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIkZcM0ZcM0Zc M0ZcNUZcdTA1MzBcbkZcM0dcM0dcM0dcM0dcM0dcM0dcM0dcM0dcM0dcM0dcMyIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJHXDNHXDNHXDdHXHUwNTNmXG5HXGZHXDE2R1x1MDU0MlwxM0dc M0dcM0dcNUdcdTA1NDZcbiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJHXDNHXDNH XDNHXDVHXHUwNTRiXG5HXDNIXDNIXDNIXDNIXDNIXDNIXDNIXDNIXDNIXDNIXDMiDQo+ID4gKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiSFwzSFwzSFw3SFx1MDU1YVxuSFxmSFwxNkhcdTA1 NWRcMTNIXDNIXDNIXDVIXHUwNTYxXG4iKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIkhcM0hc M0hcM0hcNUhcdTA1NjZcbkhcM0lcM0lcM0lcM0lcM0lcM0lcNUlcdTA1NmVcbklcMyIpDQo+ID4N Cj4gPiArICAgICAgICBidWYud3JpdGUoIkpcM0pcM0pcM0pcM0pcM0tcM0tcM0tcM0tcM0tcM0tc M0tcM0tcM0xcM0xcM0xcM0xcM0xcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJN XDNNXDNNXDNNXDNNXDNNXDNNXDNNXDNNXDNNXDNNXDNNXDVNXHUwNThlXG5NXDMNCj4gPiBNXDNN XDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiTVw1TVx1MDU5M1xuTVwzTlw3Tlx1 MDU5NlxuTlxmTlwxNk5cdTA1OTlcMTNOXDNPXDNPXDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiT1wzT1wzT1wzT1wzT1w1T1x1MDVhMlxuT1wzUFwzUFwzUFwzUFwzUFwzUFwzUFwz UFw1UFx1MDVhDQo+ID4gYyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcblBcM1Fc M1FcM1FcM1FcM1FcM1FcM1FcM1FcN1FcdTA1YjZcblFcZlFcMTZRXHUwNWI5XDEzDQo+ID4gIikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlFcM1FcM1FcNVFcdTA1YmRcblFcM1FcM1Fc M1FcNVFcdTA1YzJcblFcM1JcM1JcM1JcM1JcMyINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJSXDNSXDNSXDNSXDdSXHUwNWNjXG5SXGZSXDE2Ulx1MDVjZlwxM1JcM1JcM1JcNVJc dTA1ZDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXG5SXDNSXDNSXDNSXDVSXHUw NWQ4XG5SXDNTXDNTXDNTXDNTXDNTXDNTXDNTXDNTXDVTXHUwNWUyIikNCj4gPg0KPiA+ICsNCj4g YnVmLndyaXRlKCJcblNcM1NcM1NcM1NcM1NcNVNcdTA1ZThcblNcM1RcM1RcM1RcM1RcM1VcM1Vc M1ZcM1ZcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJWXDNWXDNWXDNWXDNWXDNW XDNWXDNWXDNWXDNWXDNWXDNWXDNWXDNWXDNWXDNWXDNWXDVWXHUwNjAzDQo+ID4gIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlxuVlwzVlwzVlw3Vlx1MDYwN1xuVlxmVlwxNlZcdTA2MGFc MTNWXDNWXDNWXDNXXDNXXDNXIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3V1x1 MDYxMVxuV1xmV1wxNldcdTA2MTRcMTNXXDNYXDNYXDNYXDNYXDNYXDNYXDNYXDNYIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlwzWFwzWFwzWFw1WFx1MDYyMVxuWFwzWVwzWVwzWVwzWVwz WlwzWlwzWlwzWlwzW1w3W1x1MDYyYyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXG5bXGZb XDE2W1x1MDYyZlwxM1tcM1xcXDNcXFw1XFxcdTA2MzNcblxcXDNdXDNdXDVdXHUwNjM3IikNCj4g Pg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcbl1cM15cM15cM15cM15cM15cM15cM15cM15cM15cNV5c dTA2NDJcbl5cM15cM15cM15cMyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXlw1Xlx1MDY0 OFxuXlwzXlwzXlwzXlwzXlwzX1wzX1wzX1w3X1x1MDY1MVxuX1xmX1wxNl8iKQ0KPiA+DQo+ID4g KyAgICAgICAgYnVmLndyaXRlKCJcdTA2NTRcMTNfXDNgXDNgXDNgXDNgXDNgXDNgXDVgXHUwNjVj XG5gXDNhXDNhXDNhXDNhXDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiYVwzYVwzYVwz YVw1YVx1MDY2NlxuYVwzYVwzYVwzYVwzYVwzYVwzYVwzYVwzYVwzYVwzYVwzIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoImFcM2JcM2JcM2JcN2JcdTA2NzZcbmJcZmJcMTZiXHUwNjc5XDEz YlwzY1wzY1w1Y1x1MDY3ZCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcbmNcM2Rc M2RcNWRcdTA2ODFcbmRcM2VcM2VcM2VcM2VcM2VcM2VcM2VcM2VcM2VcNWVcdTA2OGMiKQ0KPiA+ DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcbmVcM2VcM2VcM2VcM2VcNWVcdTA2OTJcbmVcM2Vc M2VcM2VcM2VcM2VcM2ZcM2ZcM2ZcNSIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoImZc dTA2OWNcbmZcM2ZcM2ZcM2ZcM2ZcM2ZcNWZcdTA2YTNcbmZcM2ZcM2ZcM2ZcM2ZcM2ZcMyIpDQo+ ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoImZcNWZcdTA2YWJcbmZcM2dcM2dcM2dcN2dcdTA2 YjBcbmdcZmdcMTZnXHUwNmIzXDEzZ1wzIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJoXDNo XDNoXDNoXDNoXDNoXDNoXDNoXDNoXDVoXHUwNmJlXG5oXDNpXDNpXDNpXDNpXDNpXDMiKQ0KPiA+ DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJpXDNpXDNpXDNpXDVpXHUwNmM5XG5pXDNpXDVpXHUw NmNjXG5pXDNpXDNpXDNpXDNpXDNqXDMiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJq XDNqXDdqXHUwNmQ1XG5qXGZqXDE2alx1MDZkOFwxM2pcM2tcM2tcNWtcdTA2ZGNcbmtcMyIpDQo+ ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoImxcM2xcM2xcM2xcM2xcM2xcM2xcM2xcNWxcdTA2 ZTZcbmxcM2xcM2xcM2xcM2xcNWxcdTA2ZWMiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRl KCJcbmxcM2xcM2xcM2xcM2xcM2xcM2xcM2xcM2xcM2xcM2xcM2xcM2xcM21cM21cM21cN21cdTA2 ZmQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXG5tXGZtXDE2bVx1MDcwMFwxM21cM25c M25cM25cNW5cdTA3MDVcbm5cM29cM29cM29cM28iKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXDNvXDNvXDNvXDNvXDVvXHUwNzBmXG5vXDNvXDNvXDNvXDNvXDVvXHUwNzE1XG5vXDNvXDMi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgib1wzb1wzb1wzb1wzb1wzb1wzb1wzb1wzb1wz b1wzb1w1b1x1MDcyM1xub1wzb1wzb1wzb1wzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo Im9cM3BcM3BcM3BcN3BcdTA3MmNcbnBcZnBcMTZwXHUwNzJmXDEzcFwzcVwzcVw1cVx1MDczMyIp DQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlxucVwzclwzclwzclwzclwzclwzclwzclw1 clx1MDczY1xuclwzclwzclwzclwzclwzclw1IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJy XHUwNzQzXG5yXDNyXDNyXDNyXDNyXDNzXDNzXDNzXDdzXHUwNzRjXG5zXGZzXDE2c1x1MDc0ZiIp DQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDEzc1wzdFwzdFwzdFwzdFw1dFx1MDc1NVxudFwz dVwzdVwzdVwzdVwzdVwzdVwzdVwzdVw1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoInVc dTA3NWZcbnVcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcMyIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJ1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1 XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgidVwz dVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzIikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoInVcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3Vc M3VcM3VcM3VcM3VcM3VcM3VcM3VcMyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJ1XDN1 XDN1XDN1XDN1XDV1XHUwN2FhXG51XDN1XDd1XHUwN2FkXG51XGZ1XDE2dVx1MDdiMCIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMTN1XDV1XHUwN2IyXG51XDN1XDN1XDN1XDN2XDN2XDN2 XDN2XDN2XDN2XDN2XDN2XDN2XDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgidlwzdlwz dlw1dlx1MDdjM1xudlwzdlwzdlwzdlwzdlw1dlx1MDdjOVxudlwzd1wzd1wzd1w3IikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIndcdTA3Y2VcbndcZndcMTZ3XHUwN2QxXDEzd1wzeFwzeFwz eVwzeVwzeVwzeVwzeVwzeVwzIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJ5XDN5XDV5XHUw N2RkXG55XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDMiKQ0KPiA+DQo+ID4g KyAgICAgICAgYnVmLndyaXRlKCJ5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5 XDN5XDN5XDN5XDN5XDN5XDMiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJ5XDN5XDN5 XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDMiKQ0KPiA+DQo+ ID4gKyAgICAgICAgYnVmLndyaXRlKCJ5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5 XDN5XDN5XDN5XDN5XDN5XDN5XDMiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJ5XDN5 XDN5XDN5XDN5XDN5XDN5XDV5XHUwODI4XG55XDN5XDd5XHUwODJiXG55XGZ5XDE2eSIpDQo+ID4N Cj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwODJlXDEzeVw1eVx1MDgzMFxueVwzeVwzeVwzeVwzelwz elwzelwzelwzelwzelwzelwzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgielwzelwz elwzelwzelw1elx1MDg0MVxuelwzelwzelwzelwzelw1elx1MDg0N1xuelwze1wzIikNCj4gPg0K PiA+ICsgICAgICAgIGJ1Zi53cml0ZSgie1wze1w3e1x1MDg0Y1xue1xme1wxNntcdTA4NGZcMTN7 XDN8XDN8XDN9XDN9XDN9XDN9XDUiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIn1cdTA4NTdc bn1cM35cM35cM35cM35cM35cM1wxNzdcM1wxNzdcM1x1MDA4MFwzXHUwMDgwIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMDgxXDNcdTAwODFcM1x1MDA4MVwzXHUwMDgxXDNc dTAwODFcM1x1MDA4MVw1XHUwMDgxIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDg2 OFxuXHUwMDgxXDNcdTAwODJcM1x1MDA4MlwzXHUwMDgyXDNcdTAwODJcNVx1MDA4MiIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA4NmVcblx1MDA4MlwzXHUwMDgzXDNcdTAwODNcM1x1 MDA4M1wzXHUwMDgzXDdcdTAwODMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwODc0 XG5cdTAwODNcZlx1MDA4M1wxNlx1MDA4M1x1MDg3N1wxM1x1MDA4M1wzXHUwMDgzIikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMDgzXDNcdTAwODNcM1x1MDA4NFwzXHUwMDg0 XDNcdTAwODRcM1x1MDA4NFwzXHUwMDg0IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwz XHUwMDg0XDdcdTAwODRcdTA4ODJcblx1MDA4NFxmXHUwMDg0XDE2XHUwMDg0XHUwODg1IikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwxM1x1MDA4NFwzXHUwMDg0XDNcdTAwODRcNVx1MDA4 NFx1MDg4OVxuXHUwMDg0XDNcdTAwODQiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XDNcdTAwODRcM1x1MDA4NFwzXHUwMDg1XDNcdTAwODVcM1x1MDA4NVwzXHUwMDg1XDNcdTAwODUi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwODVcN1x1MDA4NVx1MDg5NFxuXHUw MDg1XGZcdTAwODVcMTZcdTAwODVcdTA4OTciKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XDEzXHUwMDg1XDNcdTAwODVcM1x1MDA4NVw1XHUwMDg1XHUwODliXG5cdTAwODVcM1x1MDA4NSIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcM1x1MDA4NVwzXHUwMDg1XDNcdTAwODZc M1x1MDA4NlwzXHUwMDg2XDNcdTAwODZcM1x1MDA4NiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcM1x1MDA4Nlw3XHUwMDg2XHUwOGE2XG5cdTAwODZcZlx1MDA4NlwxNlx1MDA4Nlx1MDhh OSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMTNcdTAwODZcM1x1MDA4NlwzXHUwMDg2 XDVcdTAwODZcdTA4YWRcblx1MDA4NlwzXHUwMDg2IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlwzXHUwMDg2XDNcdTAwODZcN1x1MDA4Nlx1MDhiMlxuXHUwMDg2XGZcdTAwODZcMTZcdTAw ODYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwOGI1XDEzXHUwMDg2XDNcdTAwODZc M1x1MDA4NlwzXHUwMDg2XDNcdTAwODdcM1x1MDA4NyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcM1x1MDA4N1wzXHUwMDg3XDNcdTAwODdcM1x1MDA4N1w3XHUwMDg3XHUwOGMwXG5cdTAw ODciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXGZcdTAwODdcMTZcdTAwODdcdTA4 YzNcMTNcdTAwODdcM1x1MDA4N1wzXHUwMDg3XDVcdTAwODciKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXHUwOGM3XG5cdTAwODdcM1x1MDA4N1wzXHUwMDg3XDNcdTAwODdcN1x1MDA4N1x1 MDhjY1xuIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDA4N1xmXHUwMDg3XDE2XHUw MDg3XHUwOGNmXDEzXHUwMDg3XDNcdTAwODdcM1x1MDA4NyIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcM1x1MDA4N1wzXHUwMDg4XDNcdTAwODhcM1x1MDA4OFwzXHUwMDg4XDNcdTAw ODhcM1x1MDA4OCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcM1x1MDA4OFwzXHUw MDg4XDNcdTAwODhcM1x1MDA4OFwzXHUwMDg4XDNcdTAwODhcM1x1MDA4OCIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcN1x1MDA4OFx1MDhlMVxuXHUwMDg4XGZcdTAwODhcMTZcdTAwODhc dTA4ZTRcMTNcdTAwODgiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwODhcM1x1 MDA4OFw1XHUwMDg4XHUwOGU4XG5cdTAwODhcM1x1MDA4OFwzXHUwMDg4IikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlwzXHUwMDg4XDNcdTAwODhcM1x1MDA4OVwzXHUwMDg5XDNcdTAwODlc NVx1MDA4OVx1MDhmMSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcblx1MDA4OVwz XHUwMDhhXDNcdTAwOGFcM1x1MDA4YVwzXHUwMDhhXDNcdTAwOGFcM1x1MDA4YSIpDQo+ID4NCj4g PiArDQo+ID4NCj4gYnVmLndyaXRlKCJcM1x1MDA4YVwzXHUwMDhhXDNcdTAwOGFcM1x1MDA4YVwz XHUwMDhiXDNcdTAwOGJcM1x1MDA4YiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJc M1x1MDA4YlwzXHUwMDhiXDNcdTAwOGJcM1x1MDA4YlwzXHUwMDhiXDNcdTAwOGJcM1x1MDA4YiIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcM1x1MDA4YlwzXHUwMDhiXDNcdTAwOGJc M1x1MDA4YlwzXHUwMDhiXDNcdTAwOGJcM1x1MDA4YiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcM1x1MDA4YlwzXHUwMDhiXDNcdTAwOGJcM1x1MDA4Ylw1XHUwMDhiXHUwOTEyXG5cdTAw OGIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwOGJcM1x1MDA4YlwzXHUwMDhj XDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhjXDNcdTAwOGMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhjXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhjXDNc dTAwOGMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwOGNcM1x1MDA4Y1wzXHUw MDhjXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhjXDNcdTAwOGMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhjXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhj XDNcdTAwOGMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdcdTAwOGNcdTA5MzBcblx1 MDA4Y1xmXHUwMDhjXDE2XHUwMDhjXHUwOTMzXDEzXHUwMDhjIikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlw1XHUwMDhjXHUwOTM1XG5cdTAwOGNcM1x1MDA4Y1wzXHUwMDhjXDNcdTAwOGNc M1x1MDA4YyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcNVx1MDA4Y1x1MDkzYlxuXHUw MDhjXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhkXDNcdTAwOGQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXDNcdTAwOGRcM1x1MDA4ZFwzXHUwMDhlXDNcdTAwOGVcNVx1MDA4ZVx1MDk0NVxu XHUwMDhlIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMDhlXDNcdTAwOGVc M1x1MDA4ZVwzXHUwMDhlXDNcdTAwOGVcM1x1MDA4ZVwzXHUwMDhlIikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlwzXHUwMDhlXDNcdTAwOGVcM1x1MDA4ZVwzXHUwMDhlXDNcdTAwOGVc M1x1MDA4ZVwzXHUwMDhlIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMDhlXDNc dTAwOGVcM1x1MDA4ZVw1XHUwMDhlXHUwOTU4XG5cdTAwOGVcM1x1MDA4ZiIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4ZlwzXHUwMDhm XDNcdTAwOGZcM1x1MDA4ZiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwOGZcM1x1 MDA4ZlwzXHUwMDhmXDVcdTAwOGZcdTA5NjVcblx1MDA4ZlwzXHUwMDhmIikNCj4gPg0KPiA+ICsN Cj4gYnVmLndyaXRlKCJcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcNVx1MDA4Zlx1MDk2YlxuXHUw MDhmXDNcdTAwOGYiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXHUwMDhmXDNcdTAwOGZc M1x1MDA4Zlw1XHUwMDhmXHUwOTcxXG5cdTAwOGZcM1x1MDA4ZiIpDQo+ID4NCj4gPiArDQo+IGJ1 Zi53cml0ZSgiXDNcdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDVcdTAwOGZcdTA5Nzdcblx1MDA4Zlwz XHUwMDhmIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDA4ZlwzXHUwMDhmXDNcdTAw OGZcNVx1MDA4Zlx1MDk3ZFxuXHUwMDhmXDNcdTAwOGYiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3Jp dGUoIlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4Zlw1XHUwMDhmXHUwOTgzXG5cdTAwOGZcM1x1MDA4 ZiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDVc dTAwOGZcdTA5ODlcblx1MDA4ZlwzXHUwMDhmIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJc M1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcNVx1MDA4Zlx1MDk4ZlxuXHUwMDhmXDNcdTAwOGYiKQ0K PiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4Zlw1XHUwMDhm XHUwOTk1XG5cdTAwOGZcM1x1MDA4ZiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAw OGZcM1x1MDA4ZlwzXHUwMDhmXDVcdTAwOGZcdTA5OWJcblx1MDA4Zlw1XHUwMDhmIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDk5ZFxuXHUwMDhmXDNcdTAwOGZcN1x1MDA4Zlx1MDlh MFxuXHUwMDhmXGZcdTAwOGZcMTYiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDA4Zlx1 MDlhM1wxM1x1MDA4Zlw1XHUwMDhmXHUwOWE1XG5cdTAwOGZcM1x1MDA4ZlwzIikNCj4gPg0KPiA+ ICsNCj4gYnVmLndyaXRlKCJcdTAwOGZcN1x1MDA4Zlx1MDlhOVxuXHUwMDhmXGZcdTAwOGZcMTZc dTAwOGZcdTA5YWNcMTMiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDA4ZlwzXHUwMDhm XDVcdTAwOGZcdTA5YWZcblx1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcMyIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcdTAwOTBcM1x1MDA5MFwzXHUwMDkwXDNcdTAwOTBcM1x1MDA5MFw1XHUw MDkwXHUwOWI4XG4iKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMDkwXDNcdTAwOTBc M1x1MDA5MFw3XHUwMDkwXHUwOWJjXG5cdTAwOTBcZlx1MDA5MFwxNiIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcdTAwOTBcdTA5YmZcMTNcdTAwOTBcM1x1MDA5MFwzXHUwMDkwXDNcdTAw OTBcM1x1MDA5MSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcM1x1MDA5MVwzXHUw MDkxXDNcdTAwOTJcM1x1MDA5MlwzXHUwMDkzXDNcdTAwOTNcM1x1MDA5MyIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcN1x1MDA5M1x1MDljY1xuXHUwMDkzXGZcdTAwOTNcMTZcdTAwOTNc dTA5Y2ZcMTNcdTAwOTMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwOTRcM1x1 MDA5NFwzXHUwMDk0XDdcdTAwOTRcdTA5ZDRcblx1MDA5NFxmXHUwMDk0IikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlwxNlx1MDA5NFx1MDlkN1wxM1x1MDA5NFwzXHUwMDk1XDNcdTAw OTVcM1x1MDA5NVw3XHUwMDk1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDlkY1xu XHUwMDk1XGZcdTAwOTVcMTZcdTAwOTVcdTA5ZGZcMTNcdTAwOTVcM1x1MDA5NiIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcM1x1MDA5NlwzXHUwMDk2XDdcdTAwOTZcdTA5ZTRcblx1MDA5 NlxmXHUwMDk2XDE2XHUwMDk2IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDllN1wx M1x1MDA5NlwzXHUwMDk3XDNcdTAwOTdcM1x1MDA5N1w3XHUwMDk3XHUwOWVjIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlxuXHUwMDk3XGZcdTAwOTdcMTZcdTAwOTdcdTA5ZWZcMTNc dTAwOTdcM1x1MDA5OFwzXHUwMDk4IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3XHUw MDk4XHUwOWYzXG5cdTAwOThcZlx1MDA5OFwxNlx1MDA5OFx1MDlmNlwxM1x1MDA5OCIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1x1MDA5OVwzXHUwMDk5XDNcdTAwOTlcM1x1MDA5OVw1 XHUwMDk5XHUwOWZjXG5cdTAwOTkiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAw OWFcM1x1MDA5YVw3XHUwMDlhXHUwYTAwXG5cdTAwOWFcZlx1MDA5YVwxNlx1MDA5YSIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTBhMDNcMTNcdTAwOWFcM1x1MDA5YlwzXHUwMDli XDNcdTAwOWJcM1x1MDA5YlwzXHUwMDliIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwz XHUwMDliXDNcdTAwOWJcM1x1MDA5Ylw1XHUwMDliXHUwYTBkXG5cdTAwOWJcM1x1MDA5YyIpDQo+ ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwOWNcN1x1MDA5Y1x1MGExMVxuXHUwMDljXGZc dTAwOWNcMTZcdTAwOWNcdTBhMTQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDEzXHUw MDljXDNcdTAwOWRcM1x1MDA5ZFwzXHUwMDlkXDNcdTAwOWRcNVx1MDA5ZFx1MGExYSIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcblx1MDA5ZFwzXHUwMDllXDNcdTAwOWVcN1x1MDA5ZVx1 MGExZVxuXHUwMDllXGZcdTAwOWUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDE2XHUw MDllXHUwYTIxXDEzXHUwMDllXDNcdTAwOWZcM1x1MDA5ZlwzXHUwMDlmXDNcdTAwOWYiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDVcdTAwOWZcdTBhMjdcblx1MDA5ZlwzXHUwMGEwXDNc dTAwYTBcN1x1MDBhMFx1MGEyYlxuIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDBh MFxmXHUwMGEwXDE2XHUwMGEwXHUwYTJlXDEzXHUwMGEwXDNcdTAwYTFcM1x1MDBhMSIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1x1MDBhMVwzXHUwMGExXDNcdTAwYTFcM1x1MDBhMVw1 XHUwMGExXHUwYTM2XG5cdTAwYTEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAw YTJcN1x1MDBhMlx1MGEzOVxuXHUwMGEyXGZcdTAwYTJcMTZcdTAwYTJcdTBhM2MiKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDEzXHUwMGEyXDNcdTAwYTJcM1x1MDBhMlwzXHUwMGEz XDNcdTAwYTNcM1x1MDBhM1wzXHUwMGEzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo IlwzXHUwMGE0XDNcdTAwYTRcM1x1MDBhNFwzXHUwMGE0XDNcdTAwYTRcM1x1MDBhNFwzXHUwMGE0 IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGE0XDNcdTAwYTRcM1x1MDBhNFwz XHUwMGE0XDVcdTAwYTRcdTBhNGZcblx1MDBhNCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcM1x1MDBhNVwzXHUwMGE1XDNcdTAwYTVcM1x1MDBhNVwzXHUwMGE1XDNcdTAwYTVcM1x1 MDBhNSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcM1x1MDBhNlwzXHUwMGE2XDNc dTAwYTZcM1x1MDBhNlwzXHUwMGE2XDNcdTAwYTZcM1x1MDBhNiIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcM1x1MDBhN1wzXHUwMGE3XDNcdTAwYTdcM1x1MDBhN1wzXHUwMGE3XDNc dTAwYTdcM1x1MDBhNyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcM1x1MDBhN1wz XHUwMGE3XDNcdTAwYThcM1x1MDBhOFwzXHUwMGE4XDNcdTAwYThcM1x1MDBhOSIpDQo+ID4NCj4g PiArDQo+ID4NCj4gYnVmLndyaXRlKCJcM1x1MDBhOVwzXHUwMGE5XDNcdTAwYTlcM1x1MDBhOVwz XHUwMGE5XDNcdTAwYTlcM1x1MDBhOSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1x1 MDBhOVwzXHUwMGE5XDNcdTAwYTlcNVx1MDBhOVx1MGE3N1xuXHUwMGE5XDNcdTAwYWEiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYWFcM1x1MDBhYlwzXHUwMGFiXDNcdTAw YWJcM1x1MDBhYlwzXHUwMGFiXDNcdTAwYWIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXDNcdTAwYWJcM1x1MDBhYlwzXHUwMGFiXDNcdTAwYWJcM1x1MDBhYlwzXHUwMGFiXDNcdTAw YWIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwYWJcM1x1MDBhYlw1XHUwMGFi XHUwYThhXG5cdTAwYWJcM1x1MDBhY1wzXHUwMGFjIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlwzXHUwMGFjXDNcdTAwYWNcM1x1MDBhY1wzXHUwMGFjXDNcdTAwYWNcM1x1MDBhY1wzXHUw MGFjIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGFjXDNcdTAwYWNcM1x1MDBh Y1w1XHUwMGFjXHUwYTk4XG5cdTAwYWNcM1x1MDBhZCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcM1x1MDBhZFwzXHUwMGFkXDNcdTAwYWRcM1x1MDBhZFwzXHUwMGFkXDNcdTAwYWRc M1x1MDBhZCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1x1MDBhZFwzXHUwMGFkXDNc dTAwYWRcM1x1MDBhZFw1XHUwMGFkXHUwYWE2XG5cdTAwYWQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXDNcdTAwYWVcM1x1MDBhZVwzXHUwMGFlXDNcdTAwYWVcNlx1MDBhZVx1MGFhY1xu XHUwMGFlIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlxyXHUwMGFlXDE2XHUwMGFlXHUw YWFkXDNcdTAwYWZcM1x1MDBhZlwzXHUwMGFmXDNcdTAwYWYiKQ0KPiA+DQo+ID4gKw0KPiBidWYu d3JpdGUoIlwzXHUwMGFmXDNcdTAwYWZcM1x1MDBhZlw3XHUwMGFmXHUwYWI3XG5cdTAwYWZcZlx1 MDBhZiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMTZcdTAwYWZcdTBhYmFcMTNcdTAw YWZcNVx1MDBhZlx1MGFiY1xuXHUwMGFmXDNcdTAwYjAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXDNcdTAwYjBcM1x1MDBiMFwzXHUwMGIwXDVcdTAwYjBcdTBhYzJcblx1MDBiMFwzXHUw MGIxIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGIxXDNcdTAwYjFcM1x1 MDBiMVwzXHUwMGIxXDNcdTAwYjJcM1x1MDBiMlwzXHUwMGIyIikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlwzXHUwMGIyXDNcdTAwYjJcM1x1MDBiM1wzXHUwMGIzXDNcdTAwYjNcM1x1 MDBiM1wzXHUwMGIzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGIzXDNcdTAw YjNcNVx1MDBiM1x1MGFkNVxuXHUwMGIzXDNcdTAwYjNcM1x1MDBiMyIpDQo+ID4NCj4gPiArDQo+ ID4NCj4gYnVmLndyaXRlKCJcM1x1MDBiNFwzXHUwMGI0XDNcdTAwYjVcM1x1MDBiNVwzXHUwMGI1 XDNcdTAwYjVcM1x1MDBiNSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcM1x1MDBi NlwzXHUwMGI2XDNcdTAwYjdcM1x1MDBiN1wzXHUwMGI3XDNcdTAwYjdcM1x1MDBiNyIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1x1MDBiN1wzXHUwMGI3XDVcdTAwYjdcdTBhZTlcblx1 MDBiN1wzXHUwMGI3XDNcdTAwYjciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNc dTAwYjhcM1x1MDBiOFwzXHUwMGI5XDNcdTAwYjlcM1x1MDBiOVwzXHUwMGI5XDNcdTAwYjkiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwYjlcM1x1MDBiOVwzXHUwMGI5XDNcdTAw YjlcM1x1MDBiOVw1XHUwMGI5XHUwYWY5IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo IlxuXHUwMGI5XDNcdTAwYmFcM1x1MDBiYVwzXHUwMGJhXDNcdTAwYmFcM1x1MDBiYVwzXHUwMGJi IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXHUwMGJiXDNcdTAwYmJcM1x1MDBi YlwzXHUwMGJiXDNcdTAwYmNcM1x1MDBiY1wzXHUwMGJjIikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlwzXHUwMGJjXDNcdTAwYmNcM1x1MDBiY1wzXHUwMGJjXDNcdTAwYmNcM1x1MDBiY1w1 XHUwMGJjIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGIwZVxuXHUwMGJjXDNcdTAw YmNcM1x1MDBiY1wzXHUwMGJjXDNcdTAwYmNcM1x1MDBiYyIpDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJcNVx1MDBiY1x1MGIxNVxuXHUwMGJjXDNcdTAwYmNcM1x1MDBiY1wzXHUwMGJjXDNc dTAwYmQiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYmRcM1x1MDBiZFwz XHUwMGJkXDNcdTAwYmRcM1x1MDBiZVwzXHUwMGJlXDNcdTAwYmUiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXDNcdTAwYmVcM1x1MDBiZVwzXHUwMGJmXDNcdTAwYmZcM1x1MDBiZlwzXHUw MGJmXDNcdTAwYmYiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlw1XHUwMGJmXHUwYjI5XG5c dTAwYmZcM1x1MDBiZlwzXHUwMGJmXDNcdTAwYmZcM1x1MDBiZiIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcM1x1MDBjMFwzXHUwMGMwXDNcdTAwYzBcM1x1MDBjMFwzXHUwMGMwXDNcdTAw YzFcM1x1MDBjMSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1x1MDBjMVwzXHUwMGMx XDNcdTAwYzFcM1x1MDBjMlwzXHUwMGMyXDNcdTAwYzJcM1x1MDBjMiIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcM1x1MDBjMlwzXHUwMGMzXDNcdTAwYzNcM1x1MDBjM1wzXHUwMGMzXDNc dTAwYzNcM1x1MDBjMyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1x1MDBjM1w1XHUw MGMzXHUwYjQ1XG5cdTAwYzNcM1x1MDBjM1wzXHUwMGMzXDNcdTAwYzMiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXDNcdTAwYzNcM1x1MDBjNFwzXHUwMGM0XDNcdTAwYzRcM1x1MDBjNFwz XHUwMGM0XDVcdTAwYzQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwYjUwXG5cdTAw YzRcM1x1MDBjNVwzXHUwMGM1XDNcdTAwYzVcM1x1MDBjNVwzXHUwMGM1IikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlwzXHUwMGM1XDNcdTAwYzVcM1x1MDBjNVwzXHUwMGM1XDNcdTAwYzZc M1x1MDBjNlwzXHUwMGM2IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXHUwMGM2XDNc dTAwYzZcN1x1MDBjNlx1MGI2MFxuXHUwMGM2XGZcdTAwYzZcMTZcdTAwYzYiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXHUwYjYzXDEzXHUwMGM2XDNcdTAwYzZcM1x1MDBjNlwzXHUwMGM2 XDNcdTAwYzZcM1x1MDBjNiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1x1MDBjNlwz XHUwMGM2XDNcdTAwYzZcM1x1MDBjN1wzXHUwMGM3XDNcdTAwYzhcM1x1MDBjOCIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcM1x1MDBjOFwzXHUwMGM4XDNcdTAwYzhcM1x1MDBjOFwzXHUw MGM4XDNcdTAwYzhcM1x1MDBjOCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1x1MDBj OVwzXHUwMGM5XDNcdTAwYzlcM1x1MDBjOVwzXHUwMGM5XDNcdTAwYzlcM1x1MDBjOSIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1x1MDBjOVwzXHUwMGM5XDNcdTAwY2FcM1x1MDBjYVwz XHUwMGNhXDNcdTAwY2FcM1x1MDBjYSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1x1 MDBjYVwzXHUwMGNhXDdcdTAwY2FcdTBiODhcblx1MDBjYVxmXHUwMGNhXDE2XHUwMGNhIikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGI4YlwxM1x1MDBjYVwzXHUwMGNhXDNcdTAwY2Fc M1x1MDBjYVwzXHUwMGNhXDNcdTAwY2EiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNc dTAwY2FcM1x1MDBjYVwzXHUwMGNhXDNcdTAwY2JcM1x1MDBjYlwzXHUwMGNjXDNcdTAwY2MiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcdTAwY2NcM1x1MDBjY1wzXHUwMGNjXDNcdTAw Y2NcM1x1MDBjY1wzXHUwMGNjXDNcdTAwY2MiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XDdcdTAwY2NcdTBiYTBcblx1MDBjY1xmXHUwMGNjXDE2XHUwMGNjXHUwYmEzXDEzXHUwMGNjIikN Cj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBjY1wzXHUwMGNjXDNcdTAwY2NcMlwyXHUw MGNkXDJcNFw2XGJcblxmXDE2XDIwXDIyIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgi XDI0XDI2XDMwXDMyXDM0XDM2DQo+IFwiJCYoKiwuXDYwXDYyXDY0XDY2ODo8PkBCREZISkxOUFIi KQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlRWWFpcXF5gYmRmaGpsbnBydHZ4enx+XHUwMDgw XHUwMDgyXHUwMDg0XHUwMDg2XHUwMDg4IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1 MDA4YVx1MDA4Y1x1MDA4ZVx1MDA5MFx1MDA5Mlx1MDA5NFx1MDA5Nlx1MDA5OFx1MDA5YSIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAwOWNcdTAwOWVcdTAwYTBcdTAwYTJcdTAwYTRc dTAwYTZcdTAwYThcdTAwYWFcdTAwYWMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XHUwMGFlXHUwMGIwXHUwMGIyXHUwMGI0XHUwMGI2XHUwMGI4XHUwMGJhXHUwMGJjXHUwMGJlIikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDBjMFx1MDBjMlx1MDBjNFx1MDBjNlx1MDBj OFx1MDBjYVx1MDBjY1x1MDBjZVx1MDBkMCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcdTAwZDJcdTAwZDRcdTAwZDZcdTAwZDhcdTAwZGFcdTAwZGNcdTAwZGVcdTAwZTBcdTAwZTIi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMGU0XHUwMGU2XHUwMGU4XHUwMGVhXHUw MGVjXHUwMGVlXHUwMGYwXHUwMGYyXHUwMGY0IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo Ilx1MDBmNlx1MDBmOFx1MDBmYVx1MDBmY1x1MDBmZVx1MDEwMFx1MDEwMlx1MDEwNFx1MDEwNiIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxMDhcdTAxMGFcdTAxMGNcdTAxMGVcdTAx MTBcdTAxMTJcdTAxMTRcdTAxMTZcdTAxMTgiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XHUwMTFhXHUwMTFjXHUwMTFlXHUwMTIwXHUwMTIyXHUwMTI0XHUwMTI2XHUwMTI4XHUwMTJhIikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDEyY1x1MDEyZVx1MDEzMFx1MDEzMlx1MDEz NFx1MDEzNlx1MDEzOFx1MDEzYVx1MDEzYyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc dTAxM2VcdTAxNDBcdTAxNDJcdTAxNDRcdTAxNDZcdTAxNDhcdTAxNGFcdTAxNGNcdTAxNGUiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMTUwXHUwMTUyXHUwMTU0XHUwMTU2XHUwMTU4 XHUwMTVhXHUwMTVjXHUwMTVlXHUwMTYwIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1 MDE2Mlx1MDE2NFx1MDE2Nlx1MDE2OFx1MDE2YVx1MDE2Y1x1MDE2ZVx1MDE3MFx1MDE3MiIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxNzRcdTAxNzZcdTAxNzhcdTAxN2FcdTAxN2Nc dTAxN2VcdTAxODBcdTAxODJcdTAxODQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUw MTg2XHUwMTg4XHUwMThhXHUwMThjXHUwMThlXHUwMTkwXHUwMTkyXHUwMTk0XHUwMTk2IikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDIwXDNcMlw0XDVcNFwyXHUwMGFjXHUwMGIyXHUw MGZhXHUwMGZhXDRcMlx1MDBiM1x1MDBiNiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc dTAwZmFcdTAwZmFcNFwyXG5cblx1MDBmYVx1MDBmYVw1XDJcdTAwYjdcdTAwYjlcdTAwYmQiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMGJmXHUwMGZhXHUwMGZhXDRcMlx1MDBiYVx1 MDBiZlx1MDBmYVx1MDBmYVwzXDJcdTAwODUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XHUwMDg2XDNcMlx1MDA4YVx1MDA4Y1wzXDJSVlwzXDJcdTAwZmFcdTAwZmJcM1wyXHUwMGVmIikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDBmMlw0XDJcdTAwZDNcdTAwZDlcdTAwZmFc dTAwZmFcM1wyXHUwMGY2XHUwMGY3XDNcMiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUw MGY4XHUwMGZhXDJcdTBjNzFcMlx1MDE5ZFwzXDJcMlwyXDRcdTAxYTNcM1wyXDJcMlw2IikNCj4g Pg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTAxYTVcM1wyXDJcMlxiXHUwMWFmXDNcMlwyXDJcblx1 MDFiMVwzXDJcMlwyXGZcdTAxYmMiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wy XDJcMlwxNlx1MDFjZVwzXDJcMlwyXDIwXHUwMWVmXDNcMlwyXDJcMjJcdTAxZjJcMyIpDQo+ID4N Cj4gPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXDI0XHUwMWZiXDNcMlwyXDJcMjZcdTAyMDRcM1wy XDJcMlwzMFx1MDIwZFwzXDIiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDMy XHUwMjE2XDNcMlwyXDJcMzRcdTAyMWZcM1wyXDJcMlwzNlx1MDIyOFwzXDJcMiIpDQo+ID4NCj4g PiArICAgICAgICBidWYud3JpdGUoIlwyDQo+ID4gXHUwMjMxXDNcMlwyXDJcIlx1MDIzYVwzXDJc MlwyJFx1MDI0M1wzXDJcMlwyJlx1MDI0YyIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUo IlwzXDJcMlwyKFx1MDI1NFwzXDJcMlwyKlx1MDI1Y1wzXDJcMlwyLFx1MDI2NFwzXDJcMlwyIikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIi5cdTAyNmNcM1wyXDJcMlw2MFx1MDI5OFwz XDJcMlwyXDYyXHUwMmE1XDNcMlwyXDJcNjRcdTAyYWQiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVm LndyaXRlKCJcM1wyXDJcMlw2Nlx1MDJhZlwzXDJcMlwyOFx1MDJiNFwzXDJcMlwyOlx1MDJjMVwz XDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMjxcdTAyYzNcM1wyXDJcMj5cdTAy ZDRcM1wyXDJcMkBcdTAyZjZcM1wyXDJcMkJcdTAzMzAiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3Jp dGUoIlwzXDJcMlwyRFx1MDMzMlwzXDJcMlwyRlx1MDM0YlwzXDJcMlwySFx1MDM1MlwzXDJcMlwy IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIkpcdTAzNTlcM1wyXDJcMkxcdTAzNjlcM1wy XDJcMk5cdTAzNzlcM1wyXDJcMlBcdTAzN2VcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcMlwyXDJSXHUwMzg1XDNcMlwyXDJUXHUwMzk0XDNcMlwyXDJWXHUwM2FhXDNcMlwyXDJY XHUwM2I4IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlpcdTAzZTZcM1wyXDJc MlxcXHUwM2U4XDNcMlwyXDJeXHUwM2VmXDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3Jp dGUoImBcdTAzZjNcM1wyXDJcMmJcdTAzZjVcM1wyXDJcMmRcdTAzZmRcM1wyXDJcMmZcdTA0MjFc MyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXDJoXHUwNDIzXDNcMlwyXDJqXHUw NDQyXDNcMlwyXDJsXHUwNDQ1XDNcMlwyXDJuXHUwNDQ4IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXDNcMlwyXDJwXHUwNDUyXDNcMlwyXDJyXHUwNDU0XDNcMlwyXDJ0XHUwNDc5XDNc MlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgidlx1MDQ3YlwzXDJcMlwyeFx1MDQ4 M1wzXDJcMlwyelx1MDQ4NVwzXDJcMlwyfFx1MDRiNlwzIikNCj4gPg0KPiA+ICsNCj4gYnVmLndy aXRlKCJcMlwyXDJ+XHUwNGJhXDNcMlwyXDJcdTAwODBcdTA0YmNcM1wyXDJcMlx1MDA4Mlx1MDUw MSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDA4NFx1MDUwYlwzXDJc MlwyXHUwMDg2XHUwNTBkXDNcMlwyXDJcdTAwODgiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXHUwNTIyXDNcMlwyXDJcdTAwOGFcdTA1MmZcM1wyXDJcMlx1MDA4Y1x1MDUzMVwzXDJcMlwy IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDA4ZVx1MDU0Y1wzXDJcMlwyXHUwMDkw XHUwNTY3XDNcMlwyXDJcdTAwOTJcdTA1NmZcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcMlwyXDJcdTAwOTRcdTA1NzRcM1wyXDJcMlx1MDA5Nlx1MDU3Y1wzXDJcMlwyXHUwMDk4 XHUwNTgxIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMDlhXHUwNTk3 XDNcMlwyXDJcdTAwOWNcdTA1YTFcM1wyXDJcMlx1MDA5ZSIpDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJcdTA1YWJcM1wyXDJcMlx1MDBhMFx1MDVhZFwzXDJcMlwyXHUwMGEyXHUwNWMzXDNc MlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMGE0XHUwNWQ5XDNcMlwyXDJc dTAwYTZcdTA1ZTlcM1wyXDJcMlx1MDBhOFx1MDVlZFwzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBi dWYud3JpdGUoIlwyXDJcMlx1MDBhYVx1MDVlZlwzXDJcMlwyXHUwMGFjXHUwNjBkXDNcMlwyXDJc dTAwYWVcdTA2MjAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAwYjBc dTA2MjJcM1wyXDJcMlx1MDBiMlx1MDYyNlwzXDJcMlwyXHUwMGI0IikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlx1MDYyZFwzXDJcMlwyXHUwMGI2XHUwNjMyXDNcMlwyXDJcdTAwYjhcdTA2 MzZcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAwYmFcdTA2MzhcM1wy XDJcMlx1MDBiY1x1MDY0ZFwzXDJcMlwyXHUwMGJlXHUwNjViXDMiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMGMwXHUwNjVkXDNcMlwyXDJcdTAwYzJcdTA2NzJcM1wy XDJcMlx1MDBjNFx1MDY3YyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1 MDBjNlx1MDY4MFwzXDJcMlwyXHUwMGM4XHUwNjgyXDNcMlwyXDJcdTAwY2EiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXHUwNjk4XDNcMlwyXDJcdTAwY2NcdTA2YWNcM1wyXDJcMlx1MDBj ZVx1MDZiZFwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDBkMFx1MDZi ZlwzXDJcMlwyXHUwMGQyXHUwNmQxXDNcMlwyXDJcdTAwZDRcdTA2ZGJcMyIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAwZDZcdTA2ZGRcM1wyXDJcMlx1MDBkOFx1MDZm OVwzXDJcMlwyXHUwMGRhXHUwNzA0Ig0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo IlwzXDJcMlwyXHUwMGRjXHUwNzA2XDNcMlwyXDJcdTAwZGVcdTA3MjhcM1wyXDJcMlx1MDBlMCIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA3MzJcM1wyXDJcMlx1MDBlMlx1MDczNFwz XDJcMlwyXHUwMGU0XHUwNzQ4XDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XHUwMGU2XHUwNzU0XDNcMlwyXDJcdTAwZThcdTA3NTZcM1wyXDJcMlx1MDBlYVx1MDdiNlwzIikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDBlY1x1MDdjYVwzXDJcMlwy XHUwMGVlXHUwN2QyXDNcMlwyXDJcdTAwZjBcdTA3ZDQiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3Jp dGUoIlwzXDJcMlwyXHUwMGYyXHUwODM0XDNcMlwyXDJcdTAwZjRcdTA4NDhcM1wyXDJcMlx1MDBm NiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwODUwXDNcMlwyXDJcdTAwZjhcdTA4NTZc M1wyXDJcMlx1MDBmYVx1MDg1OFwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJc dTAwZmNcdTA4NWRcM1wyXDJcMlx1MDBmZVx1MDg1ZlwzXDJcMlwyXHUwMTAwXHUwODY3XDMiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTAyXHUwODZkXDNcMlwyXDJc dTAxMDRcdTA4NmZcM1wyXDJcMlx1MDEwNlx1MDg3YiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcM1wyXDJcMlx1MDEwOFx1MDg4ZFwzXDJcMlwyXHUwMTBhXHUwODlmXDNcMlwyXDJcdTAx MGMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwOGI5XDNcMlwyXDJcdTAxMGVcdTA4 ZDNcM1wyXDJcMlx1MDExMFx1MDhmMFwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlx1MDExMlx1MDhmMlwzXDJcMlwyXHUwMTE0XHUwOGZjXDNcMlwyXDJcdTAxMTZcdTA5MTVc MyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAxMThcdTA5M2VcM1wy XDJcMlx1MDExYVx1MDk0MlwzXDJcMlwyXHUwMTFjXHUwOTU5IikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlwzXDJcMlwyXHUwMTFlXHUwOWIyXDNcMlwyXDJcdTAxMjBcdTA5YzNcM1wyXDJc Mlx1MDEyMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA5YzZcM1wyXDJcMlx1MDEy NFx1MDljOFwzXDJcMlwyXHUwMTI2XHUwOWQwXDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXHUwMTI4XHUwOWQ4XDNcMlwyXDJcdTAxMmFcdTA5ZTBcM1wyXDJcMlx1MDEyY1x1 MDllOFwzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDEyZVx1MDlm MFwzXDJcMlwyXHUwMTMwXHUwOWZiXDNcMlwyXDJcdTAxMzJcdTA5ZmQiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxMzRcdTBhMGNcM1wyXDJcMlx1MDEzNlx1MGEwZVwz XDJcMlwyXHUwMTM4IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGExOVwzXDJcMlwy XHUwMTNhXHUwYTFiXDNcMlwyXDJcdTAxM2NcdTBhMjZcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcdTAxM2VcdTBhMjhcM1wyXDJcMlx1MDE0MFx1MGEzNVwzXDJcMlwyXHUw MTQyXHUwYTNhXDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTQ0 XHUwYTNmXDNcMlwyXDJcdTAxNDZcdTBhNGVcM1wyXDJcMlx1MDE0OFx1MGE1MCIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDE0YVx1MGE1N1wzXDJcMlwyXHUwMTRjXHUw YTVlXDNcMlwyXDJcdTAxNGUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwYTY3XDNc MlwyXDJcdTAxNTBcdTBhNzZcM1wyXDJcMlx1MDE1Mlx1MGE3OFwzXDJcMlwyIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlx1MDE1NFx1MGE3YVwzXDJcMlwyXHUwMTU2XHUwYThiXDNcMlwy XDJcdTAxNThcdTBhOTlcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJc dTAxNWFcdTBhYTdcM1wyXDJcMlx1MDE1Y1x1MGFiYlwzXDJcMlwyXHUwMTVlXHUwYWJkIg0KPiA+ ICkNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMTYwXHUwYWMzXDNcMlwy XDJcdTAxNjJcdTBhYzhcM1wyXDJcMlx1MDE2NCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcdTBhY2RcM1wyXDJcMlx1MDE2Nlx1MGFkOFwzXDJcMlwyXHUwMTY4XHUwYWRhXDNcMlwyXDIi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMTZhXHUwYWRmXDNcMlwyXDJcdTAxNmNc dTBhZTFcM1wyXDJcMlx1MDE2ZVx1MGFlY1wzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo IlwyXDJcMlx1MDE3MFx1MGFmOFwzXDJcMlwyXHUwMTcyXHUwYWZhXDNcMlwyXDJcdTAxNzRcdTBh ZmYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxNzZcdTBiMDRcM1wy XDJcMlx1MDE3OFx1MGIxOVwzXDJcMlwyXHUwMTdhIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlx1MGIxZVwzXDJcMlwyXHUwMTdjXHUwYjIzXDNcMlwyXDJcdTAxN2VcdTBiMmVcM1wyXDJc MiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxODBcdTBiMzNcM1wyXDJcMlx1MDE4 Mlx1MGIzOFwzXDJcMlwyXHUwMTg0XHUwYjNkXDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXDJcMlwyXHUwMTg2XHUwYjRmXDNcMlwyXDJcdTAxODhcdTBiNTFcM1wyXDJcMlx1MDE4 YVx1MGI1YSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDE4Y1x1MGI2 Y1wzXDJcMlwyXHUwMThlXHUwYjZlXDNcMlwyXDJcdTAxOTAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXHUwYjc3XDNcMlwyXDJcdTAxOTJcdTBiODBcM1wyXDJcMlx1MDE5NFx1MGI5NFwz XDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDE5Nlx1MGI5NlwzXDJcMlwy XHUwMTk4XHUwMTljXDVcblw2XDJcdTAxOTlcdTAxOWNcNSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53 cml0ZSgiXGZcN1wyXHUwMTlhXHUwMTljXDVcMTZcYlwyXHUwMTliXHUwMTk4XDNcMlwyXDJcdTAx OWIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMTk5XDNcMlwyXDJcdTAxOWJcdTAx OWFcM1wyXDJcMlx1MDE5Y1x1MDE5ZlwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlx1MDE5ZFx1MDE5YlwzXDJcMlwyXHUwMTlkXHUwMTllXDNcMlwyXDJcdTAxOWVcdTAxYTFc MyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAxOWZcdTAxOWRcM1wy XDJcMlx1MDFhMFx1MDFhMlw1LlwzMFwyXHUwMWExXHUwMWEwIikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlwzXDJcMlwyXHUwMWExXHUwMWEyXDNcMlwyXDJcdTAxYTJcM1wzXDJcMlwyXHUw MWEzXHUwMWE0IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3XDNcMlwyXHUwMWE0XDVc M1wyXDJcMlx1MDFhNVx1MDFhOFx0XDJcMlwyXHUwMWE2XHUwMWE3IikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlw3IVwyXDJcdTAxYTdcdTAxYTlcN1x1MDBmYlwyXDJcdTAxYThcdTAx YTZcM1wyXDJcMlx1MDFhOCIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwMWE5XDNcMlwy XDJcdTAxYTlcdTAxYWNcM1wyXDJcMlx1MDFhYVx1MDFhYlw3IVwyXDIiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXHUwMWFiXHUwMWFkXDdcdTAwZmFcMlwyXHUwMWFjXHUwMWFhXDNcMlwy XDJcdTAxYWNcdTAxYWQiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMWFk XDdcM1wyXDJcMlx1MDFhZVx1MDFiMFw3XHUwMGZhXDJcMlx1MDFhZiIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcdTAxYWVcM1wyXDJcMlx1MDFhZlx1MDFiMFwzXDJcMlwyXHUwMWIwXHRc M1wyXDJcMlx1MDFiMSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxYjJcN1w2XDJc Mlx1MDFiMlx1MDFiM1w3XDdcMlwyXHUwMWIzXHUwMWI3XDdcMzBcMiIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcMlx1MDFiNFx1MDFiOFw1XDRcM1wyXHUwMWI1XHUwMWI4XDVcNlw0XDJc dTAxYjZcdTAxYjgiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDVcYlw1XDJcdTAxYjdc dTAxYjRcM1wyXDJcMlx1MDFiN1x1MDFiNVwzXDJcMlwyXHUwMWI3IikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlx1MDFiNlwzXDJcMlwyXHUwMWI3XHUwMWI4XDNcMlwyXDJcdTAxYjhcdTAx YjlcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAxYjlcdTAxYmFc N1wzMVwyXDJcdTAxYmFcMTNcM1wyXDJcMlx1MDFiYlx1MDFiZFw3XHUwMDg0DQo+ID4gIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcdTAxYmNcdTAxYmJcM1wyXDJcMlx1MDFi Y1x1MDFiZFwzXDJcMlwyXHUwMWJkXHUwMWJlIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlwzXDJcMlwyXHUwMWJlXHUwMWMwXDdQXDJcMlx1MDFiZlx1MDFjMVw3T1wyXDJcdTAxYzBc dTAxYmYiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMWMwXHUwMWMxXDNc MlwyXDJcdTAxYzFcdTAxYzNcM1wyXDJcMlx1MDFjMiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0 ZSgiXHUwMWM0XDdcdTAwZmJcMlwyXHUwMWMzXHUwMWMyXDNcMlwyXDJcdTAxYzNcdTAxYzRcM1wy IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTAxYzRcdTAxYzVcM1wyXDJcMlx1 MDFjNVx1MDFjNlw3XDI2XDJcMlx1MDFjNlx1MDFjNyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0 ZSgiXDVcMjBcdFwyXHUwMWM3XHUwMWM5XDdcMjdcMlwyXHUwMWM4XHUwMWNhXDdcdTAwZmJcMlwy IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDFjOVx1MDFjOFwzXDJcMlwyXHUwMWM5 XHUwMWNhXDNcMlwyXDJcdTAxY2FcdTAxY2JcMyIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3Jp dGUoIlwyXDJcMlx1MDFjYlx1MDFjY1w3IFwyXDJcdTAxY2NcclwzXDJcMlwyXHUwMWNkXHUwMWNm IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3XHUwMDg0XDJcMlx1MDFjZVx1MDFjZFwz XDJcMlwyXHUwMWNlXHUwMWNmXDNcMlwyXDJcdTAxY2YiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXHUwMWQwXDNcMlwyXDJcdTAxZDBcdTAxZDJcN1FcMlwyXHUwMWQxXHUwMWQzXDdP XDJcMlx1MDFkDQo+ID4gMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxZDFcM1wy XDJcMlx1MDFkMlx1MDFkM1wzXDJcMlwyXHUwMWQzXHUwMWQ1XDNcMlwyXDIiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMWQ0XHUwMWQ2XDdcdTAwZmJcMlwyXHUwMWQ1XHUwMWQ0 XDNcMlwyXDJcdTAxZDVcdTAxZDYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwy XDJcdTAxZDZcdTAxZDdcM1wyXDJcMlx1MDFkN1x1MDFkOFw3XDI2XDJcMlx1MDFkOCIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxZDlcNVwyMFx0XDJcdTAxZDlcdTAxZGJcN1wyN1wy XDJcdTAxZGFcdTAxZGNcN1x1MDBmYiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJc MlwyXHUwMWRiXHUwMWRhXDNcMlwyXDJcdTAxZGJcdTAxZGNcM1wyXDJcMlx1MDFkY1x1MDFkZCIp DQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwMWRkXHUwMWRlXDcNCj4g PiBcMlwyXHUwMWRlXDE3XDNcMlwyXDJcdTAxZGZcdTAxZWUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ IGJ1Zi53cml0ZSgiXDVcMjJcblwyXHUwMWUwXHUwMWVlXDVcMjRcMTNcMlx1MDFlMVx1MDFlZVw1 XDI2XGZcMlx1MDFlMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxZWVcNVwzMFxy XDJcdTAxZTNcdTAxZWVcNVwzMlwxNlwyXHUwMWU0XHUwMWVlXDVcMzQiKQ0KPiA+DQo+ID4gKyAg ICAgICAgYnVmLndyaXRlKCJcMTdcMlx1MDFlNVx1MDFlZVw1XDM2XDIwXDJcdTAxZTZcdTAxZWVc NQ0KPiBcMjFcMlx1MDFlNyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxZWVcNVwi XDIyXDJcdTAxZThcdTAxZWVcNSRcMjNcMlx1MDFlOVx1MDFlZVw1JlwyNCIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcMlx1MDFlYVx1MDFlZVw1KFwyNVwyXHUwMWViXHUwMWVlXDUqXDI2 XDJcdTAxZWNcdTAxZWUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDUsXDI3XDJcdTAx ZWRcdTAxZGZcM1wyXDJcMlx1MDFlZFx1MDFlMFwzXDJcMlwyXHUwMWVkIikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlx1MDFlMVwzXDJcMlwyXHUwMWVkXHUwMWUyXDNcMlwyXDJcdTAxZWRc dTAxZTNcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxZWRcdTAxZTRc M1wyXDJcMlx1MDFlZFx1MDFlNVwzXDJcMlwyXHUwMWVkXHUwMWU2XDMiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMWVkXHUwMWU3XDNcMlwyXDJcdTAxZWRcdTAxZThc M1wyXDJcMlx1MDFlZFx1MDFlOSINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc M1wyXDJcMlx1MDFlZFx1MDFlYVwzXDJcMlwyXHUwMWVkXHUwMWViXDNcMlwyXDJcdTAxZWQiKQ0K PiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDFlY1wzXDJcMlwyXHUwMWVlXHUwMWYxXDNcMlwy XDJcdTAxZWZcdTAxZWRcM1wyXDJcMiIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlx1 MDFlZlx1MDFmMFwzXDJcMlwyXHUwMWYwXDIxXDNcMlwyXDJcdTAxZjFcdTAxZWZcM1wyIikNCj4g Pg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDFmMlx1MDFmM1w3U1wyXDJcdTAxZjNc dTAxZjdcN1x1MDBmYlwyXDJcdTAxZjQiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJc dTAxZjVcN1wzMlwyXDJcdTAxZjVcdTAxZjZcN1x1MDBmYVwyXDJcdTAxZjZcdTAxZjhcNyIpDQo+ ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlwzM1wyXDJcdTAxZjdcdTAxZjRcM1wyXDJcMlx1 MDFmN1x1MDFmOFwzXDJcMlwyXHUwMWY4IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgi XHUwMWY5XDNcMlwyXDJcdTAxZjlcdTAxZmFcNw0KPiA+IFwyXDJcdTAxZmFcMjNcM1wyXDJcMlx1 MDFmYiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwMWZjXDdUXDJcMlx1MDFmY1x1MDIw MFw3XHUwMGZiXDJcMlx1MDFmZFx1MDFmZVw3XDMyIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRl KCJcMlwyXHUwMWZlXHUwMWZmXDdcdTAwZmFcMlwyXHUwMWZmXHUwMjAxXDdcMzNcMlwyXHUwMjAw IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDFmZFwzXDJcMlwyXHUwMjAwXHUwMjAx XDNcMlwyXDJcdTAyMDFcdTAyMDJcM1wyXDJcMiIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3Jp dGUoIlx1MDIwMlx1MDIwM1w3DQo+IFwyXDJcdTAyMDNcMjVcM1wyXDJcMlx1MDIwNFx1MDIwNVw3 VVwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXHUwMjA1XHUwMjA5XDdcdTAwZmJc MlwyXHUwMjA2XHUwMjA3XDdcMzJcMlwyXHUwMjA3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlx1MDIwOFw3XHUwMGZhXDJcMlx1MDIwOFx1MDIwYVw3XDMzXDJcMlx1MDIwOVx1MDIwNlwz IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDIwOVx1MDIwYVwzXDJc MlwyXHUwMjBhXHUwMjBiXDNcMlwyXDJcdTAyMGJcdTAyMGMiDQo+ID4gKQ0KPiA+DQo+ID4gKyAg ICAgICAgYnVmLndyaXRlKCJcNw0KPiA+IFwyXDJcdTAyMGNcMjdcM1wyXDJcMlx1MDIwZFx1MDIw ZVw3VlwyXDJcdTAyMGVcdTAyMTIiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlw3XHUwMGZi XDJcMlx1MDIwZlx1MDIxMFw3XDMyXDJcMlx1MDIxMFx1MDIxMVw3XHUwMGZhIikNCj4gPg0KPiA+ ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcdTAyMTFcdTAyMTNcN1wzM1wyXDJcdTAyMTJcdTAy MGZcM1wyXDJcMlx1MDIxMlx1MDIxMyIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlwz XDJcMlwyXHUwMjEzXHUwMjE0XDNcMlwyXDJcdTAyMTRcdTAyMTVcNw0KPiBcMlwyXHUwMjE1IikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzMVwzXDJcMlwyXHUwMjE2XHUwMjE3XDdSXDJc Mlx1MDIxN1x1MDIxYlw3XHUwMGZiXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcdTAyMThcdTAyMTlcN1wzMlwyXDJcdTAyMTlcdTAyMWFcN1x1MDBmYVwyXDJcdTAyMWFcdTAy MWMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdcMzNcMlwyXHUwMjFiXHUwMjE4XDNc MlwyXDJcdTAyMWJcdTAyMWNcM1wyXDJcMlx1MDIxYyIpDQo+ID4NCj4gPiArICAgICAgICBidWYu d3JpdGUoIlx1MDIxZFwzXDJcMlwyXHUwMjFkXHUwMjFlXDcNCj4gPiBcMlwyXHUwMjFlXDMzXDNc MlwyXDJcdTAyMWYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMjIwXDdXXDJcMlx1 MDIyMFx1MDIyNFw3XHUwMGZiXDJcMlx1MDIyMVx1MDIyMlw3XDMyIikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlwyXDJcdTAyMjJcdTAyMjNcN1x1MDBmYVwyXDJcdTAyMjNcdTAyMjVcN1wz M1wyXDJcdTAyMjQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMjIxXDNcMlwyXDJc dTAyMjRcdTAyMjVcM1wyXDJcMlx1MDIyNVx1MDIyNlwzXDJcMlwyIikNCj4gPg0KPiA+ICsgICAg ICAgIGJ1Zi53cml0ZSgiXHUwMjI2XHUwMjI3XDcNCj4gXDJcMlx1MDIyN1wzNVwzXDJcMlwyXHUw MjI4XHUwMjI5XDdYXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcdTAyMjlcdTAy MmRcN1x1MDBmYlwyXDJcdTAyMmFcdTAyMmJcN1wzMlwyXDJcdTAyMmIiKQ0KPiA+DQo+ID4gKw0K PiBidWYud3JpdGUoIlx1MDIyY1w3XHUwMGZhXDJcMlx1MDIyY1x1MDIyZVw3XDMzXDJcMlx1MDIy ZFx1MDIyYVwzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDIyZFx1 MDIyZVwzXDJcMlwyXHUwMjJlXHUwMjJmXDNcMlwyXDJcdTAyMmZcdTAyMzAiKQ0KPiA+DQo+ID4g KyAgICAgICAgYnVmLndyaXRlKCJcNw0KPiA+IFwyXDJcdTAyMzBcMzdcM1wyXDJcMlx1MDIzMVx1 MDIzMlw3WVwyXDJcdTAyMzJcdTAyMzYiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlw3XHUw MGZiXDJcMlx1MDIzM1x1MDIzNFw3XDMyXDJcMlx1MDIzNFx1MDIzNVw3XHUwMGZhIikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcdTAyMzVcdTAyMzdcN1wzM1wyXDJcdTAyMzZc dTAyMzNcM1wyXDJcMlx1MDIzNlx1MDIzNyIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUo IlwzXDJcMlwyXHUwMjM3XHUwMjM4XDNcMlwyXDJcdTAyMzhcdTAyMzlcNw0KPiBcMlwyXHUwMjM5 IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIiFcM1wyXDJcMlx1MDIzYVx1MDIzYlw3 WlwyXDJcdTAyM2JcdTAyM2ZcN1x1MDBmYlwyXDJcdTAyM2MiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXHUwMjNkXDdcMzJcMlwyXHUwMjNkXHUwMjNlXDdcdTAwZmFcMlwyXHUwMjNlXHUw MjQwXDciKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzM1wyXDJcdTAyM2ZcdTAyM2NcM1wy XDJcMlx1MDIzZlx1MDI0MFwzXDJcMlwyXHUwMjQwIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53 cml0ZSgiXHUwMjQxXDNcMlwyXDJcdTAyNDFcdTAyNDJcNw0KPiA+IFwyXDJcdTAyNDIjXDNcMlwy XDJcdTAyNDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMjQ0XDdcdTAwZmJcMlwy XHUwMjQ0XHUwMjQ4XDdcdTAwZmJcMlwyXHUwMjQ1XHUwMjQ2IikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlw3XDMyXDJcMlx1MDI0Nlx1MDI0N1w3XHUwMGZhXDJcMlx1MDI0N1x1MDI0OVw3 XDMzXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAyNDhcdTAyNDVcM1wyXDJc Mlx1MDI0OFx1MDI0OVwzXDJcMlwyXHUwMjQ5XHUwMjRhXDMiKQ0KPiA+DQo+ID4gKyAgICAgICAg YnVmLndyaXRlKCJcMlwyXDJcdTAyNGFcdTAyNGJcNw0KPiA+IFwyXDJcdTAyNGIlXDNcMlwyXDJc dTAyNGNcdTAyNGVcNyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJTXDJcMlx1MDI0ZFx1 MDI0Zlw3XHUwMGZiXDJcMlx1MDI0ZVx1MDI0ZFwzXDJcMlwyXHUwMjRlIikNCj4gPg0KPiA+ICsN Cj4gYnVmLndyaXRlKCJcdTAyNGZcM1wyXDJcMlx1MDI0Zlx1MDI1MFwzXDJcMlwyXHUwMjUwXHUw MjUxXDdcMzZcMiIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlwyXHUwMjUxXHUwMjUy XDdcdTAwZmFcMlwyXHUwMjUyXHUwMjUzXDcNCj4gXDJcMlx1MDI1M1wnIikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMjU0XHUwMjU2XDdUXDJcMlx1MDI1NVx1MDI1 N1w3XHUwMGZiXDJcMlx1MDI1NiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAyNTVc M1wyXDJcMlx1MDI1Nlx1MDI1N1wzXDJcMlwyXHUwMjU3XHUwMjU4XDNcMlwyXDIiKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMjU4XHUwMjU5XDdcMzZcMlwyXHUwMjU5XHUwMjVh XDdcdTAwZmFcMlwyXHUwMjVhXHUwMjViIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgi XDcNCj4gXDJcMlx1MDI1YilcM1wyXDJcMlx1MDI1Y1x1MDI1ZVw3VVwyXDJcdTAyNWRcdTAyNWYi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdcdTAwZmJcMlwyXHUwMjVlXHUwMjVk XDNcMlwyXDJcdTAyNWVcdTAyNWZcM1wyXDJcMlx1MDI1ZiIpDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJcdTAyNjBcM1wyXDJcMlx1MDI2MFx1MDI2MVw3XDM2XDJcMlx1MDI2MVx1MDI2Mlw3 XHUwMGZhIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDI2Mlx1MDI2M1w3 DQo+IFwyXDJcdTAyNjMrXDNcMlwyXDJcdTAyNjRcdTAyNjZcN1YiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXDJcMlx1MDI2NVx1MDI2N1w3XHUwMGZiXDJcMlx1MDI2Nlx1MDI2NVwzXDJc MlwyXHUwMjY2IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTAyNjdcM1wyXDJcMlx1MDI2 N1x1MDI2OFwzXDJcMlwyXHUwMjY4XHUwMjY5XDdcMzZcMiIpDQo+ID4NCj4gPiArICAgICAgICBi dWYud3JpdGUoIlwyXHUwMjY5XHUwMjZhXDdcdTAwZmFcMlwyXHUwMjZhXHUwMjZiXDcgXDJcMlx1 MDI2Yi0NCj4gPiBcMyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXDJcdTAyNmNc dTAyNmRcNytcMlwyXHUwMjZkXHUwMjZlXDdbXDJcMlx1MDI2ZVx1MDI2ZiIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcN1xiXDJcMlx1MDI2Zlx1MDI3MFw1TFwnXDJcdTAyNzBcdTAy NzFcNyFcMlwyXHUwMjcxXHUwMjcyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3 LlwyXDJcdTAyNzJcdTAyNzNcN1xiXDJcMlx1MDI3M1x1MDI3NFw3XHUwMGVjXDJcMlx1MDI3NCIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAyNzVcN1wzMFwyXDJcdTAyNzVcdTAyNzZc N1x1MDBmYVwyXDJcdTAyNzZcdTAyNzdcNyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcMzFcMlwyXHUwMjc3XHUwMjc4XDchXDJcMlx1MDI3OFx1MDI3OVw3PVwyXDJcdTAyNzlcdTAy N2EiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlw3XGJcMlwyXHUwMjdhXHUwMjdiXDdcdTAw ZWNcMlwyXHUwMjdiXHUwMjdjXDdcMzBcMlwyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlx1MDI3Y1x1MDI3ZFw3XHUwMGZhXDJcMlx1MDI3ZFx1MDI3ZVw3XDMxXDJcMlx1MDI3ZVx1 MDI4NCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcNyFcMlwyXHUwMjdmXHUwMjgw XDdcdTAwODNcMlwyXHUwMjgwXHUwMjgxXDdcYlwyXDJcdTAyODEiKQ0KPiA+DQo+ID4gKw0KPiBi dWYud3JpdGUoIlx1MDI4Mlw1XDYwXDMxXDJcdTAyODJcdTAyODNcNyFcMlwyXHUwMjgzXHUwMjg1 XDNcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXHUwMjg0XHUwMjdmXDNcMlwy XDJcdTAyODRcdTAyODVcM1wyXDJcMlx1MDI4NVx1MDI4YiIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcM1wyXDJcMlx1MDI4Nlx1MDI4N1w3XHUwMDgxXDJcMlx1MDI4N1x1MDI4OFw3 XGJcMlwyXHUwMjg4Ig0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTAyODlcNVw2 MlwzMlwyXHUwMjg5XHUwMjhhXDchXDJcMlx1MDI4YVx1MDI4Y1wzXDJcMiIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcMlx1MDI4Ylx1MDI4NlwzXDJcMlwyXHUwMjhiXHUwMjhjXDNcMlwy XDJcdTAyOGNcdTAyOTIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJc dTAyOGRcdTAyOGVcN1x1MDA4MlwyXDJcdTAyOGVcdTAyOGZcN1xiXDJcMlx1MDI4ZiIpDQo+ID4N Cj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwMjkwXDVcNjZcMzRcMlx1MDI5MFx1MDI5MVw3IVwyXDJc dTAyOTFcdTAyOTNcM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcdTAyOTJc dTAyOGRcM1wyXDJcMlx1MDI5Mlx1MDI5M1wzXDJcMlwyXHUwMjkzXHUwMjk0IikNCj4gPg0KPiA+ ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAyOTRcdTAyOTVcNThcMzVcMlx1MDI5NVx1 MDI5Nlw3LQ0KPiBcMlwyXHUwMjk2IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUw Mjk3XDcNCj4gXDJcMlx1MDI5Ny9cM1wyXDJcMlx1MDI5OFx1MDI5Ylw1TFwnXDJcdTAyOTkiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMjlhXDcoXDJcMlx1MDI5YVx1MDI5Y1w1 TFwnXDJcdTAyOWJcdTAyOTlcM1wyXDJcMlx1MDI5YiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0 ZSgiXHUwMjljXDNcMlwyXDJcdTAyOWNcdTAyOWZcM1wyXDJcMlx1MDI5ZFx1MDI5ZVw3KFwyXDIi KQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDI5ZVx1MDJhMFw1TFwnXDJcdTAyOWZcdTAy OWRcM1wyXDJcMlx1MDI5Zlx1MDJhMFwzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo IlwyXDJcMlx1MDJhMFx1MDJhM1wzXDJcMlwyXHUwMmExXHUwMmEyXDcoXDJcMlx1MDJhMlx1MDJh NCIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDVMXCdcMlx1MDJhM1x1MDJhMVwzXDJcMlwy XHUwMmEzXHUwMmE0XDNcMlwyXDJcdTAyYTQiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXDYxXDNcMlwyXDJcdTAyYTVcdTAyYWFcNVw2NFwzM1wyXHUwMmE2XHUwMmE3XDcoXDJcMlx1 MDJhNyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAyYTlcNVw2NFwzM1wyXHUwMmE4 XHUwMmE2XDNcMlwyXDJcdTAyYTlcdTAyYWNcM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXDJcdTAyYWFcdTAyYThcM1wyXDJcMlx1MDJhYVx1MDJhYlwzXDJcMlwyXHUwMmFiXDYz XDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMmFjXHUwMmFhXDNcMlwy XDJcdTAyYWRcdTAyYWVcdFwzXDJcMlx1MDJhZVw2NSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcM1wyXDJcMlx1MDJhZlx1MDJiMFx0XDRcMlwyXHUwMmIwXDY3XDNcMlwyXDJcdTAyYjFc dTAyYjMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDU6XDM2XDJcdTAyYjJcdTAyYjFc M1wyXDJcMlx1MDJiM1x1MDJiNlwzXDJcMlwyXHUwMmI0IikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlx1MDJiMlwzXDJcMlwyXHUwMmI0XHUwMmI1XDNcMlwyXDJcdTAyYjU5XDNcMlwyXDJc dTAyYjYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMmI0XDNcMlwyXDJcdTAyYjdc dTAyYzJcNWRcNjNcMlx1MDJiOFx1MDJjMlw1aFw2NVwyIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXHUwMmI5XHUwMmMyXDVqXDY2XDJcdTAyYmFcdTAyYzJcNT4NCj4gPiBcMlx1MDJi Ylx1MDJjMlw1QCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCIhXDJcdTAyYmNcdTAyYzJc NUQjXDJcdTAyYmRcdTAyYzJcNTxcMzdcMlx1MDJiZVx1MDJjMiIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcNUYkXDJcdTAyYmZcdTAyYzJcNUglXDJcdTAyYzBcdTAyYzJcNVx1MDEx Y1x1MDA4ZlwyXHUwMmMxIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDJi N1wzXDJcMlwyXHUwMmMxXHUwMmI4XDNcMlwyXDJcdTAyYzFcdTAyYjlcM1wyXDJcMiIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAyYzFcdTAyYmFcM1wyXDJcMlx1MDJjMVx1MDJiYlwz XDJcMlwyXHUwMmMxXHUwMmJjXDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJc MlwyXHUwMmMxXHUwMmJkXDNcMlwyXDJcdTAyYzFcdTAyYmVcM1wyXDJcMlx1MDJjMVx1MDJiZiIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDJjMVx1MDJjMFwzXDJcMlwy XHUwMmMyO1wzXDJcMlwyXHUwMmMzXHUwMmM0IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJc N1x1MDA5YlwyXDJcdTAyYzRcdTAyYzVcN1x1MDBmYlwyXDJcdTAyYzVcdTAyYzZcNyFcMiIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlx1MDJjNlx1MDJjN1w3XDYyXDJcMlx1MDJjN1x1 MDJjOFw3XGJcMlwyXHUwMmM4XHUwMmM5IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcN1x1 MDBlY1wyXDJcdTAyYzlcdTAyY2FcN1wzMFwyXDJcdTAyY2FcdTAyY2JcN1x1MDBmYSIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXHUwMmNiXHUwMmQwXDdcMzFcMlwyXHUwMmNjXHUw MmNkXDchXDJcMlx1MDJjZFx1MDJjZSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDdcdTAw OWNcMlwyXHUwMmNlXHUwMmNmXDdcYlwyXDJcdTAyY2ZcdTAyZDFcN1x1MDBmYVwyIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXHUwMmQwXHUwMmNjXDNcMlwyXDJcdTAyZDBcdTAyZDFc M1wyXDJcMlx1MDJkMVx1MDJkMiIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlwzXDJc MlwyXHUwMmQyXHUwMmQzXDcNCj4gPiBcMlwyXHUwMmQzPVwzXDJcMlwyXHUwMmQ0XHUwMmU1IikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3XHUwMDlkXDJcMlx1MDJkNVx1MDJkNlw3XHUw MGZiXDJcMlx1MDJkNlx1MDJlNlw3IVwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwy XHUwMmQ3XHUwMmQ4XDdWXDJcMlx1MDJkOFx1MDJlNlw3IVwyXDJcdTAyZDlcdTAyZGFcNyIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJVXDJcMlx1MDJkYVx1MDJlNlw3IVwyXDJcdTAyZGJc dTAyZGNcN1RcMlwyXHUwMmRjXHUwMmU2IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo Ilw3IVwyXDJcdTAyZGRcdTAyZGVcN1NcMlwyXHUwMmRlXHUwMmU2XDchXDJcMlx1MDJkZlx1MDJl MCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcN1hcMlwyXHUwMmUwXHUwMmU2XDch XDJcMlx1MDJlMVx1MDJlMlw3WVwyXDJcdTAyZTJcdTAyZTYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ IGJ1Zi53cml0ZSgiXDchXDJcMlx1MDJlM1x1MDJlNFw3WlwyXDJcdTAyZTRcdTAyZTZcNyFcMlwy XHUwMmU1XHUwMmQ1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMmU1 XHUwMmQ3XDNcMlwyXDJcdTAyZTVcdTAyZDlcM1wyXDJcMlx1MDJlNSIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcdTAyZGJcM1wyXDJcMlx1MDJlNVx1MDJkZFwzXDJcMlwyXHUwMmU1XHUw MmRmXDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMmU1XHUwMmUxXDNc MlwyXDJcdTAyZTVcdTAyZTNcM1wyXDJcMlx1MDJlNlx1MDJlYlwzIikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlwyXDJcMlx1MDJlN1x1MDJlOFw3XHUwMDhmXDJcMlx1MDJlOFx1MDJlOVw3 XGJcMlwyXHUwMmU5IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTAyZWFcN1x1MDBmYVwy XDJcdTAyZWFcdTAyZWNcNyFcMlwyXHUwMmViXHUwMmU3XDNcMiIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcMlwyXHUwMmViXHUwMmVjXDNcMlwyXDJcdTAyZWNcdTAyZWRcM1wyXDJcMlx1 MDJlZFx1MDJlZSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDdcdTAwOGVcMlwyXHUwMmVl XHUwMmVmXDdcYlwyXDJcdTAyZWZcdTAyZjBcN1x1MDBmYlwyIikNCj4gPg0KPiA+ICsNCj4gYnVm LndyaXRlKCJcMlx1MDJmMFx1MDJmMVw3IVwyXDJcdTAyZjFcdTAyZjJcN1tcMlwyXHUwMmYyXHUw MmYzXDciKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcYlwyXDJcdTAyZjNcdTAyZjRc NUxcJ1wyXHUwMmY0XHUwMmY1XDcgXDJcMlx1MDJmNT9cMyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53 cml0ZSgiXDJcMlwyXHUwMmY2XHUwMzA3XDdcdTAwOWVcMlwyXHUwMmY3XHUwMmY4XDdcdTAwZmJc MlwyIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMmY4XHUwMzA4XDchXDJcMlx1 MDJmOVx1MDJmYVw3VlwyXDJcdTAyZmFcdTAzMDhcNyEiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3Jp dGUoIlwyXDJcdTAyZmJcdTAyZmNcN1VcMlwyXHUwMmZjXHUwMzA4XDchXDJcMlx1MDJmZFx1MDJm ZSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcN1RcMlwyXHUwMmZlXHUwMzA4XDchXDJc Mlx1MDJmZlx1MDMwMFw3U1wyXDJcdTAzMDBcdTAzMDgiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXDchXDJcMlx1MDMwMVx1MDMwMlw3WFwyXDJcdTAzMDJcdTAzMDhcNyFcMlwyXHUw MzAzXHUwMzA0IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3WVwyXDJcdTAzMDRc dTAzMDhcNyFcMlwyXHUwMzA1XHUwMzA2XDdaXDJcMlx1MDMwNlx1MDMwOCIpDQo+ID4NCj4gPiAr DQo+IGJ1Zi53cml0ZSgiXDchXDJcMlx1MDMwN1x1MDJmN1wzXDJcMlwyXHUwMzA3XHUwMmY5XDNc MlwyXDJcdTAzMDciKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDJmYlwzXDJcMlwyXHUw MzA3XHUwMmZkXDNcMlwyXDJcdTAzMDdcdTAyZmZcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcdTAzMDdcdTAzMDFcM1wyXDJcMlx1MDMwN1x1MDMwM1wzXDJcMlwyXHUwMzA3 XHUwMzA1XDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMzA4XHUwMzBk XDNcMlwyXDJcdTAzMDlcdTAzMGFcN1x1MDA4ZlwyXDJcdTAzMGEiKQ0KPiA+DQo+ID4gKw0KPiBi dWYud3JpdGUoIlx1MDMwYlw3XGJcMlwyXHUwMzBiXHUwMzBjXDdcdTAwZmFcMlwyXHUwMzBjXHUw MzBlXDchIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTAzMGRcdTAzMDlcM1wy XDJcMlx1MDMwZFx1MDMwZVwzXDJcMlwyXHUwMzBlXHUwMzBmIikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMzBmXHUwMzEwXDdcdTAwOWNcMlwyXHUwMzEwXHUwMzEx XDdcYlwyXDJcdTAzMTEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMzE2XDVC XCJcMlx1MDMxMlx1MDMxM1w3KFwyXDJcdTAzMTNcdTAzMTVcNUJcIlwyXHUwMzE0IikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDMxMlwzXDJcMlwyXHUwMzE1XHUwMzE4XDNcMlwyXDJc dTAzMTZcdTAzMTRcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAzMTZc dTAzMTdcM1wyXDJcMlx1MDMxN1x1MDMxOVwzXDJcMlwyXHUwMzE4XHUwMzE2XDMiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMzE5XHUwMzI5XDchXDJcMlx1MDMxYVx1MDMx Ylw3XHUwMDhlXDJcMlx1MDMxYiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzFjXDdc YlwyXDJcdTAzMWNcdTAzMWRcN1x1MDBmYlwyXDJcdTAzMWRcdTAzMmFcNyEiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1MDMxZVx1MDMxZlw3XHUwMDhlXDJcMlx1MDMxZlx1MDMy MFw3XGJcMlwyXHUwMzIwIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDMyMVw3XHUw MGVjXDJcMlx1MDMyMVx1MDMyMlw3XDMwXDJcMlx1MDMyMlx1MDMyM1w3IikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlx1MDBmYVwyXDJcdTAzMjNcdTAzMjRcN1wzMVwyXDJcdTAzMjRcdTAz MjVcNyFcMlwyXHUwMzI1IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDMyNlw3 XHUwMDlmXDJcMlx1MDMyNlx1MDMyN1w3XGJcMlwyXHUwMzI3XHUwMzI4XDdcdTAwZmEiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1MDMyOFx1MDMyYVw3IVwyXDJcdTAzMjlcdTAz MWFcM1wyXDJcMlx1MDMyOVx1MDMxZSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwy XDJcdTAzMmFcdTAzMmJcM1wyXDJcMlx1MDMyYlx1MDMyY1w3W1wyXDJcdTAzMmMiKQ0KPiA+DQo+ ID4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAzMmRcN1xiXDJcMlx1MDMyZFx1MDMyZVw1TFwnXDJc dTAzMmVcdTAzMmZcNw0KPiA+IFwyXDJcdTAzMmYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiQVwzXDJcMlwyXHUwMzMwXHUwMzMxXDdcdTAwZmFcMlwyXHUwMzMxQ1wzXDJcMlwyXHUwMzMy IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDMzM1w3XHUwMGEwXDJcMlx1MDMzM1x1 MDMzNFw3XHUwMGZiXDJcMlx1MDMzNFx1MDMzOSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcNyFcMlwyXHUwMzM1XHUwMzM2XDdcdTAwOGZcMlwyXHUwMzM2XHUwMzM3XDdcYlwyXDJc dTAzMzciKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDMzOFw3XHUwMGZhXDJcMlx1MDMz OFx1MDMzYVw3IVwyXDJcdTAzMzlcdTAzMzVcM1wyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlwyXDJcdTAzMzlcdTAzM2FcM1wyXDJcMlx1MDMzYVx1MDM0MlwzXDJcMlwyXHUwMzNiXHUw MzNjIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3XHUwMDhlXDJcMlx1MDMzY1x1MDMz ZFw3XGJcMlwyXHUwMzNkXHUwMzNlXDdcdTAwZWNcMiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0 ZSgiXDJcdTAzM2VcdTAzM2ZcN1wzMFwyXDJcdTAzM2ZcdTAzNDBcN1x1MDBmYVwyXDJcdTAzNDAi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMzQxXDdcMzFcMlwyXHUwMzQxXHUwMzQz XDchXDJcMlx1MDM0Mlx1MDMzYlwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo Ilx1MDM0M1x1MDM0NFwzXDJcMlwyXHUwMzQ0XHUwMzQyXDNcMlwyXDJcdTAzNDRcdTAzNDVcMyIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAzNDVcdTAzNDZcM1wyXDJc Mlx1MDM0Nlx1MDM0N1w3W1wyXDJcdTAzNDdcdTAzNDgiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVm LndyaXRlKCJcN1xiXDJcMlx1MDM0OFx1MDM0OVw1TFwnXDJcdTAzNDlcdTAzNGFcNw0KPiBcMlwy XHUwMzRhRSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAzNGJcdTAzNGNc N2xcMlwyXHUwMzRjXHUwMzRkXDVcdTAxMjRcdTAwOTMiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVm LndyaXRlKCJcMlx1MDM0ZFx1MDM0ZVw3DQo+IFwyXDJcdTAzNGVcdTAzNGZcNThcMzVcMlx1MDM0 Zlx1MDM1MCIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlw3c1wyXDJcdTAzNTBcdTAz NTFcNw0KPiBcMlwyXHUwMzUxR1wzXDJcMlwyXHUwMzUyXHUwMzUzIikNCj4gPg0KPiA+ICsgICAg ICAgIGJ1Zi53cml0ZSgiXDdrXDJcMlx1MDM1M1x1MDM1NFw1XHUwMTI0XHUwMDkzXDJcdTAzNTRc dTAzNTVcNw0KPiA+IFwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMzU1XHUw MzU2XDU4XDM1XDJcdTAzNTZcdTAzNTdcN3NcMlwyXHUwMzU3XHUwMzU4XDciKQ0KPiA+DQo+ID4g KyAgICAgICAgYnVmLndyaXRlKCINCj4gPiBcMlwyXHUwMzU4SVwzXDJcMlwyXHUwMzU5XHUwMzVh XDdcdTAwZmFcMlwyXHUwMzVhXHUwMzViIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3 IVwyXDJcdTAzNWJcdTAzNWNcN1x1MDBmYVwyXDJcdTAzNWNcdTAzNWRcNyFcMlwyXHUwMzVkIikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDM1ZVw3XHUwMGZhXDJcMlx1MDM1ZVx1MDM1 Zlw3IVwyXDJcdTAzNWZcdTAzNjBcN1x1MDBmYSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgi XDJcMlx1MDM2MFx1MDM2MVw3IVwyXDJcdTAzNjFcdTAzNjJcN1x1MDBmYVwyXDJcdTAzNjIiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMzYzXDchXDJcMlx1MDM2M1x1MDM2NFw3XHUw MGZhXDJcMlx1MDM2NFx1MDM2NVw3IVwyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo IlwyXHUwMzY1XHUwMzY2XDdcdTAwZmFcMlwyXHUwMzY2XHUwMzY3XDchXDJcMlx1MDM2N1x1MDM2 OCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcN1x1MDBmYVwyXDJcdTAzNjhLXDNcMlwy XDJcdTAzNjlcdTAzNmFcN1wyNlwyXDJcdTAzNmEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXHUwMzZiXDdcdTAwZmFcMlwyXHUwMzZiXHUwMzZjXDchXDJcMlx1MDM2Y1x1MDM2ZFw3 XHUwMGZhIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwMzZkXHUwMzZlXDchXDJc Mlx1MDM2ZVx1MDM2Zlw3XHUwMGZhXDJcMlx1MDM2ZiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcdTAzNzVcNyFcMlwyXHUwMzcwXHUwMzcxXDdcMjZcMlwyXHUwMzcxXHUwMzcyXDVK JlwyXHUwMzcyIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDM3M1w3XDI3 XDJcMlx1MDM3M1x1MDM3NlwzXDJcMlwyXHUwMzc0XHUwMzc2XDVKJlwyIikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlx1MDM3NVx1MDM3MFwzXDJcMlwyXHUwMzc1XHUwMzc0XDNcMlwyXDJc dTAzNzZcdTAzNzdcMyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXDJcdTAzNzdc dTAzNzhcN1wyN1wyXDJcdTAzNzhNXDNcMlwyXDJcdTAzNzlcdTAzN2EiKQ0KPiA+DQo+ID4gKw0K PiBidWYud3JpdGUoIlw3XHUwMGVjXDJcMlx1MDM3YVx1MDM3Ylw3XDMwXDJcMlx1MDM3Ylx1MDM3 Y1w3XHUwMGZhIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTAzN2NcdTAzN2Rc N1wzMVwyXDJcdTAzN2RPXDNcMlwyXDJcdTAzN2VcdTAzN2ZcNSIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJSKlwyXHUwMzdmXHUwMzgwXDVUK1wyXHUwMzgwUVwzXDJcMlwyXHUwMzgx XHUwMzgyXDdcdTAwOGUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1MDM4Mlx1 MDM4M1w3XGJcMlwyXHUwMzgzXHUwMzg0XDdcdTAwZmJcMlwyXHUwMzg0IikNCj4gPg0KPiA+ICsN Cj4gYnVmLndyaXRlKCJcdTAzODZcNyFcMlwyXHUwMzg1XHUwMzgxXDNcMlwyXDJcdTAzODVcdTAz ODZcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAzODZcdTAzOGNcM1wy XDJcMlx1MDM4N1x1MDM4OFw3XHUwMDhmXDJcMlx1MDM4OFx1MDM4OSIpDQo+ID4NCj4gPiArICAg ICAgICBidWYud3JpdGUoIlw3XGJcMlwyXHUwMzg5XHUwMzhhXDVYLQ0KPiA+IFwyXHUwMzhhXHUw MzhiXDchXDJcMlx1MDM4Ylx1MDM4ZCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wy XDJcMlx1MDM4Y1x1MDM4N1wzXDJcMlwyXHUwMzhjXHUwMzhkXDNcMlwyXDJcdTAzOGQiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMzkyXDNcMlwyXDJcdTAzOGVcdTAzOGZcN1x1MDA5 MVwyXDJcdTAzOGZcdTAzOTBcN1xiIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUw MzkwXHUwMzkxXDdcdTAwZmFcMlwyXHUwMzkxXHUwMzkzXDchXDJcMlx1MDM5MiIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcdTAzOGVcM1wyXDJcMlx1MDM5Mlx1MDM5M1wzXDJcMlwyXHUw MzkzU1wzXDJcMlwyXHUwMzk0IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDM5NVw3 XDYyXDJcMlx1MDM5NVx1MDM5Nlw3XGJcMlwyXHUwMzk2XHUwMzk3XDdcdTAwZWMiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1MDM5N1x1MDM5OFw3XDMwXDJcMlx1MDM5OFx1MDM5 OVw3XHUwMGZhXDJcMlx1MDM5OSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzlhXDdc MzFcMlwyXHUwMzlhXHUwMzliXDchXDJcMlx1MDM5Ylx1MDM5Y1w3PVwyXDIiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXHUwMzljXHUwMzlkXDdcYlwyXDJcdTAzOWRcdTAzOWVcN1x1MDBl Y1wyXDJcdTAzOWVcdTAzOWYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdcMzBcMlwy XHUwMzlmXHUwM2EwXDdcdTAwZmFcMlwyXHUwM2EwXHUwM2ExXDdcMzFcMlwyIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlx1MDNhMVVcM1wyXDJcMlx1MDNhMlx1MDNhYlw3flwyXDJcdTAz YTNcdTAzYWJcN3lcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDNhNFx1MDNh Ylw3e1wyXDJcdTAzYTVcdTAzYWJcN1x1MDA4MFwyXDJcdTAzYTZcdTAzYWIiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXDd8XDJcMlx1MDNhN1x1MDNhYlw3XDE3N1wyXDJcdTAzYThcdTAz YWJcN3pcMlwyXHUwM2E5IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTAzYWJcN31cMlwy XHUwM2FhXHUwM2EyXDNcMlwyXDJcdTAzYWFcdTAzYTNcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcdTAzYWFcdTAzYTRcM1wyXDJcMlx1MDNhYVx1MDNhNVwzXDJcMlwyXHUw M2FhXHUwM2E2XDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwM2Fh XHUwM2E3XDNcMlwyXDJcdTAzYWFcdTAzYThcM1wyXDJcMlx1MDNhYVx1MDNhOSINCj4gPiApDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDNhYldcM1wyXDJcMlx1MDNhY1x1 MDNhZFw3XHUwMGZiXDJcMlx1MDNhZCIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwM2Fl XDdcMzJcMlwyXHUwM2FlXHUwM2FmXDdcdTAwZmFcMlwyXHUwM2FmXHUwM2I5XDciKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDMzXDJcMlx1MDNiMFx1MDNiNVw3XHUwMGZiXDJcMlx1 MDNiMVx1MDNiMlw3XDM0XDJcMlx1MDNiMiINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcdTAzYjRcNVx1MDE1ZVx1MDBiMFwyXHUwM2IzXHUwM2IxXDNcMlwyXDJcdTAzYjRcdTAz YjciKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAzYjVcdTAzYjNcM1wy XDJcMlx1MDNiNVx1MDNiNlwzXDJcMlwyXHUwM2I2IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlx1MDNiOVwzXDJcMlwyXHUwM2I3XHUwM2I1XDNcMlwyXDJcdTAzYjhcdTAzYWNcM1wyXDJc MiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAzYjhcdTAzYjBcM1wyXDJcMlx1MDNi OVlcM1wyXDJcMlx1MDNiYVx1MDNiY1w3XDM1XDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXDJcdTAzYmJcdTAzYmFcM1wyXDJcMlx1MDNiYlx1MDNiY1wzXDJcMlwyXHUwM2JjXHUwM2Jk IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwM2JkXHUwM2U3XDdcdTAw ZmFcMlwyXHUwM2JlXHUwM2U3XDdcdTAwZDNcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcMlx1MDNiZlx1MDNlN1w3XHUwMGQ0XDJcMlx1MDNjMFx1MDNlN1w3XHUwMGQ1XDJcMlx1MDNj MSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAzZTdcN1x1MDBkNlwyXDJcdTAzYzJc dTAzZTdcN1x1MDBkN1wyXDJcdTAzYzNcdTAzYzQiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUo Ilw3XHUwMGZhXDJcMlx1MDNjNFx1MDNjNVw3XDM2XDJcMlx1MDNjNVx1MDNjNlw3XHUwMGZhIikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTAzYzZcdTAzYzdcN1wzNlwyXDJcdTAz YzdcdTAzZTdcN1x1MDBmYVwyXDJcdTAzYzgiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1 MDNjOVw3XHUwMGZhXDJcMlx1MDNjOVx1MDNjYVw3XDM3XDJcMlx1MDNjYVx1MDNjYlw3IikNCj4g Pg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTAwZmFcMlwyXHUwM2NiXHUwM2NjXDdcMzdcMlwyXHUw M2NjXHUwM2U3XDdcdTAwZmFcMiIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlwyXHUw M2NkXHUwM2NlXDdcdTAwZmFcMlwyXHUwM2NlXHUwM2NmXDcNCj4gPiBcMlwyXHUwM2NmXHUwM2Qw IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDdcdTAwZmFcMlwyXHUwM2QwXHUwM2Qx XDcNCj4gPiBcMlwyXHUwM2QxXHUwM2QyXDVMXCdcMlx1MDNkMiIpDQo+ID4NCj4gPiArICAgICAg ICBidWYud3JpdGUoIlx1MDNkM1w3DQo+ID4gXDJcMlx1MDNkM1x1MDNkNFw3XHUwMGVjXDJcMlx1 MDNkNFx1MDNkNVw3XDMwIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTAzZDVc dTAzZDZcN1x1MDBmYVwyXDJcdTAzZDZcdTAzZDdcN1wzMVwyXDJcdTAzZDciKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXHUwM2U3XDNcMlwyXDJcdTAzZDhcdTAzZDlcN1x1MDBlY1wyXDJc dTAzZDlcdTAzZGFcN1wzMCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXHUwM2Rh XHUwM2RiXDdcdTAwZmFcMlwyXHUwM2RiXHUwM2U3XDdcMzFcMlwyXHUwM2RjIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlx1MDNkZFw3XDI2XDJcMlx1MDNkZFx1MDNlMlw3XHUwMGZhXDJc Mlx1MDNkZVx1MDNkZlw3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIiFcMlwyXHUwM2Rm XHUwM2UxXDdcdTAwZmFcMlwyXHUwM2UwXHUwM2RlXDNcMlwyXDJcdTAzZTEiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXHUwM2U0XDNcMlwyXDJcdTAzZTJcdTAzZTBcM1wyXDJcMlx1MDNl Mlx1MDNlM1wzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDNlM1x1MDNl NVwzXDJcMlwyXHUwM2U0XHUwM2UyXDNcMlwyXDJcdTAzZTVcdTAzZTdcNyIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcMjdcMlwyXHUwM2U2XHUwM2JiXDNcMlwyXDJcdTAzZTZcdTAzYmVc M1wyXDJcMlx1MDNlNiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwM2JmXDNcMlwyXDJc dTAzZTZcdTAzYzBcM1wyXDJcMlx1MDNlNlx1MDNjMVwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlx1MDNlNlx1MDNjMlwzXDJcMlwyXHUwM2U2XHUwM2MzXDNcMlwyXDJcdTAz ZTZcdTAzYzhcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAzZTZc dTAzY2RcM1wyXDJcMlx1MDNlNlx1MDNkOFwzXDJcMlwyXHUwM2U2XHUwM2RjIikNCj4gPg0KPiA+ ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDNlN1tcM1wyXDJcMlx1MDNlOFx1MDNlOVw3XHUw MDkyXDJcMlx1MDNlOSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwM2VhXDdcYlwyXDJc dTAzZWFcdTAzZWJcN1x0XDJcMlx1MDNlYlx1MDNlY1w3XDMwXDIiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXDJcdTAzZWNcdTAzZWRcN1x1MDBmYVwyXDJcdTAzZWRcdTAzZWVcN1wzMVwy XDJcdTAzZWUiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIl1cM1wyXDJcMlx1MDNlZlx1MDNm MFw3XHUwMDkzXDJcMlx1MDNmMF9cM1wyXDJcMlx1MDNmMSIpDQo+ID4NCj4gPiArICAgICAgICBi dWYud3JpdGUoIlx1MDNmNFw1XFwvXDJcdTAzZjJcdTAzZjRcNV5cNjBcMlx1MDNmM1x1MDNmMVwz XDJcMlwyIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwM2YzXHUwM2YyXDNcMlwy XDJcdTAzZjRhXDNcMlwyXDJcdTAzZjVcdTAzZmFcNWBcNjEiKQ0KPiA+DQo+ID4gKyAgICAgICAg YnVmLndyaXRlKCJcMlx1MDNmNlx1MDNmN1w3IVwyXDJcdTAzZjdcdTAzZjlcNWBcNjFcMlx1MDNm OFx1MDNmNiIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwM2Y5XHUw M2ZjXDNcMlwyXDJcdTAzZmFcdTAzZjhcM1wyXDJcMlx1MDNmYSIpDQo+ID4NCj4gPiArDQo+IGJ1 Zi53cml0ZSgiXHUwM2ZiXDNcMlwyXDJcdTAzZmJjXDNcMlwyXDJcdTAzZmNcdTAzZmFcM1wyXDJc Mlx1MDNmZCIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlx1MDNmZVw3XDY3XDJcMlx1 MDNmZVx1MDNmZlw3L1wyXDJcdTAzZmZcdTA0MDBcN1xiXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcdTA0MDBcdTA0MDFcN1x1MDBmYVwyXDJcdTA0MDFcdTA0MDJcNyFcMlwyXHUw NDAyXHUwNDAzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3LlwyXDJcdTA0MDNc dTA0MDRcN1xiXDJcMlx1MDQwNFx1MDQwNVw3XHUwMGVjXDJcMlx1MDQwNSIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcdTA0MDZcN1wzMFwyXDJcdTA0MDZcdTA0MDdcN1x1MDBmYVwyXDJc dTA0MDdcdTA0MDhcNyIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlwzMVwyXDJcdTA0 MDhcdTA0MGNcNw0KPiA+IFwyXDJcdTA0MDlcdTA0MGJcNWZcNjRcMlx1MDQwYVx1MDQwOSIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDQwYlx1MDQwZVwzXDJcMlwyXHUw NDBjXHUwNDBhXDNcMlwyXDJcdTA0MGMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUw NDBkXDNcMlwyXDJcdTA0MGRcdTA0MGZcM1wyXDJcMlx1MDQwZVx1MDQwY1wzXDJcMlwyIikNCj4g Pg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNDBmXHUwNDEwXDdcNjZcMlwyXHUwNDEwXHUw NDExXDcNCj4gXDJcMlx1MDQxMWVcM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XDJcdTA0MTJcdTA0MjJcNWpcNjZcMlx1MDQxM1x1MDQyMlw1bFw2N1wyXHUwNDE0XHUwNDIyIikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw1bjhcMlx1MDQxNVx1MDQyMlw1XHUwMGE0U1wy XHUwNDE2XHUwNDIyXDVwOVwyXHUwNDE3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1 MDQyMlw1XHUwMDg4RVwyXHUwNDE4XHUwNDIyXDVcdTAwZjh9XDJcdTA0MTlcdTA0MjJcNSIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxMThcdTAwOGRcMlx1MDQxYVx1MDQyMlw1XHUw MTFhXHUwMDhlXDJcdTA0MWJcdTA0MjIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XDVcdTAxMTBcdTAwODlcMlx1MDQxY1x1MDQyMlw1XHUwMTFjXHUwMDhmXDJcdTA0MWRcdTA0MjIi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDVcdTAxMjBcdTAwOTFcMlx1MDQxZVx1MDQx Zlw1XHUwMDk2TFwyXHUwNDFmXHUwNDIwXDciKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRl KCINCj4gPiBcMlwyXHUwNDIwXHUwNDIyXDNcMlwyXDJcdTA0MjFcdTA0MTJcM1wyXDJcMlx1MDQy MVx1MDQxMyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDQyMVx1MDQx NFwzXDJcMlwyXHUwNDIxXHUwNDE1XDNcMlwyXDJcdTA0MjEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXHUwNDE2XDNcMlwyXDJcdTA0MjFcdTA0MTdcM1wyXDJcMlx1MDQyMVx1MDQxOFwz XDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDQyMVx1MDQxOVwzXDJcMlwy XHUwNDIxXHUwNDFhXDNcMlwyXDJcdTA0MjFcdTA0MWJcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcMlwyXDJcdTA0MjFcdTA0MWNcM1wyXDJcMlx1MDQyMVx1MDQxZFwzXDJcMlwy XHUwNDIxXHUwNDFlIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwNDIy Z1wzXDJcMlwyXHUwNDIzXHUwNDI0XDc4XDJcMlx1MDQyNFx1MDQyNSIpDQo+ID4NCj4gPiArDQo+ ID4NCj4gYnVmLndyaXRlKCJcNy9cMlwyXHUwNDI1XHUwNDI2XDdcYlwyXDJcdTA0MjZcdTA0Mjdc N1x1MDBmYVwyXDJcdTA0MjciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNDM2 XDchXDJcMlx1MDQyOFx1MDQyOVw3OVwyXDJcdTA0MjlcdTA0MmFcN1xiXDJcMlx1MDQyYSINCj4g PiApDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA0MmJcN1x1MDBlY1wyXDJcdTA0MmJc dTA0MmNcN1wzMFwyXDJcdTA0MmNcdTA0MmRcNyIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3Jp dGUoIlx1MDBmYVwyXDJcdTA0MmRcdTA0MmVcN1wzMVwyXDJcdTA0MmVcdTA0MmZcNw0KPiA+IFwy XDJcdTA0MmYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNDMwXDc6XDJcMlx1 MDQzMFx1MDQzMVw3XGJcMlwyXHUwNDMxXHUwNDMyXDVMXCdcMlx1MDQzMiIpDQo+ID4NCj4gPiAr ICAgICAgICBidWYud3JpdGUoIlx1MDQzM1w3DQo+IFwyXDJcdTA0MzNcdTA0MzVcM1wyXDJcMlx1 MDQzNFx1MDQyOFwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDQzNVx1 MDQzOFwzXDJcMlwyXHUwNDM2XHUwNDM0XDNcMlwyXDJcdTA0MzZcdTA0MzdcMyIpDQo+ID4NCj4g PiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTA0MzdcdTA0M2NcM1wyXDJcMlx1MDQzOFx1 MDQzNlwzXDJcMlwyXHUwNDM5XHUwNDNiIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw1 Zlw2NFwyXHUwNDNhXHUwNDM5XDNcMlwyXDJcdTA0M2JcdTA0M2VcM1wyXDJcMlx1MDQzYyIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA0M2FcM1wyXDJcMlx1MDQzY1x1MDQzZFwzXDJc MlwyXHUwNDNkXHUwNDNmXDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDQz ZVx1MDQzY1wzXDJcMlwyXHUwNDNmXHUwNDQwXDdcNjZcMlwyXHUwNDQwXHUwNDQxIikNCj4gPg0K PiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDcgXDJcMlx1MDQ0MWlcM1wyXDJcMlx1MDQ0Mlx1MDQ0 M1w1XFwvXDJcdTA0NDNcdTA0NDQiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcNw0K PiA+IFwyXDJcdTA0NDRrXDNcMlwyXDJcdTA0NDVcdTA0NDZcNV5cNjBcMlx1MDQ0Nlx1MDQ0NyIp DQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlw3DQo+ID4gXDJcMlx1MDQ0N21cM1wyXDJc Mlx1MDQ0OFx1MDQ0OVw3XHUwMDk0XDJcMlx1MDQ0OVx1MDQ0YSIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcN1x1MDBmYlwyXDJcdTA0NGFcdTA0NGJcNyFcMlwyXHUwNDRiXHUwNDRj XDVcdTAxMjRcdTAwOTMiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDQ0Y1x1 MDQ0ZFw3XHUwMDk1XDJcMlx1MDQ0ZFx1MDQ0ZVw3DQo+ID4gXDJcMlx1MDQ0ZW9cMyIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXDJcdTA0NGZcdTA0NTNcNXI6XDJcdTA0NTBcdTA0 NTNcNXo+XDJcdTA0NTFcdTA0NTMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDV+ QFwyXHUwNDUyXHUwNDRmXDNcMlwyXDJcdTA0NTJcdTA0NTBcM1wyXDJcMlx1MDQ1Mlx1MDQ1MQ0K PiA+ICIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDQ1M3FcM1wyXDJc Mlx1MDQ1NFx1MDQ1NVw3O1wyXDJcdTA0NTVcdTA0NTYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXDc+XDJcMlx1MDQ1Nlx1MDQ1N1w3XGJcMlwyXHUwNDU3XHUwNDU4XDdcdTAwZWNc MlwyXHUwNDU4IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTA0NTlcN1wzMFwyXDJcdTA0 NTlcdTA0NWFcN1x1MDBmYVwyXDJcdTA0NWFcdTA0NWZcNyIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcMzFcMlwyXHUwNDViXHUwNDVjXDchXDJcMlx1MDQ1Y1x1MDQ1ZFw3QFwyXDJc dTA0NWRcdTA0NWUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA0 NWVcdTA0NjBcNXY8XDJcdTA0NWZcdTA0NWJcM1wyXDJcMlx1MDQ1Zlx1MDQ2MCIpDQo+ID4NCj4g PiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA0NjBcdTA0NzVcM1wyXDJcMlx1MDQ2MVx1MDQ2 Mlw3IVwyXDJcdTA0NjIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNDY0XDViXDYy XDJcdTA0NjNcdTA0NjFcM1wyXDJcMlx1MDQ2M1x1MDQ2NFwzXDJcMlwyIikNCj4gPg0KPiA+ICsg ICAgICAgIGJ1Zi53cml0ZSgiXHUwNDY0XHUwNDY1XDNcMlwyXDJcdTA0NjVcdTA0NzZcNw0KPiBc MlwyXHUwNDY2XHUwNDY3XDciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiIVwyXDJc dTA0NjdcdTA0NjlcNWJcNjJcMlx1MDQ2OFx1MDQ2NlwzXDJcMlwyXHUwNDY4XHUwNDY5IikNCj4g Pg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDQ2OVx1MDQ3MVwzXDJcMlwyXHUwNDZh XHUwNDZlXDchXDJcMlx1MDQ2YiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0 NmRcNXQ7XDJcdTA0NmNcdTA0NmJcM1wyXDJcMlx1MDQ2ZFx1MDQ3MFwzXDJcMlwyXHUwNDZlIikN Cj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTA0NmNcM1wyXDJcMlx1MDQ2ZVx1MDQ2ZlwzXDJc MlwyXHUwNDZmXHUwNDcyXDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUw NDcwXHUwNDZlXDNcMlwyXDJcdTA0NzFcdTA0NmFcM1wyXDJcMlx1MDQ3MVx1MDQ3MlwzIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDQ3Mlx1MDQ3M1wzXDJcMlwyXHUw NDczXHUwNDc0XDc8XDJcMlx1MDQ3NFx1MDQ3NiIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3Jp dGUoIlw3DQo+IFwyXDJcdTA0NzVcdTA0NjNcM1wyXDJcMlx1MDQ3NVx1MDQ2OFwzXDJcMlwyXHUw NDc2IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoInNcM1wyXDJcMlx1MDQ3N1x1MDQ3 YVw1cDlcMlx1MDQ3OFx1MDQ3YVw1XHUwMDg4RVwyXHUwNDc5IikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlx1MDQ3N1wzXDJcMlwyXHUwNDc5XHUwNDc4XDNcMlwyXDJcdTA0N2F1XDNcMlwy XDJcdTA0N2IiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNDgwXDV4PVwyXHUwNDdj XHUwNDdkXDcoXDJcMlx1MDQ3ZFx1MDQ3Zlw1eD1cMlx1MDQ3ZSIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcdTA0N2NcM1wyXDJcMlx1MDQ3Zlx1MDQ4MlwzXDJcMlwyXHUwNDgwXHUwNDdl XDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNDgwXHUwNDgxXDNcMlwy XDJcdTA0ODF3XDNcMlwyXDJcdTA0ODJcdTA0ODBcM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXDJcdTA0ODNcdTA0ODRcdFw1XDJcMlx1MDQ4NHlcM1wyXDJcMlx1MDQ4NVx1MDQ4 Nlw3PlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXHUwNDg2XHUwNDg3XDc9XDJc Mlx1MDQ4N1x1MDQ4OFw3XGJcMlwyXHUwNDg4XHUwNDg5IikNCj4gPg0KPiA+ICsNCj4gYnVmLndy aXRlKCJcN1x1MDBlY1wyXDJcdTA0ODlcdTA0OGFcN1wzMFwyXDJcdTA0OGFcdTA0OGJcN1x1MDBm YSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXHUwNDhiXHUwNDhjXDdcMzFcMlwy XHUwNDhjXHUwNDhkXDchXDJcMlx1MDQ4ZFx1MDQ4ZSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcNz5cMlwyXHUwNDhlXHUwNDhmXDdcYlwyXDJcdTA0OGZcdTA0OTBcN1x1MDBlY1wyXDJc dTA0OTAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNDkxXDdcMzBcMlwyXHUwNDkx XHUwNDkyXDdcdTAwZmFcMlwyXHUwNDkyXHUwNDlhXDciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXDMxXDJcMlx1MDQ5M1x1MDQ5NFw3IVwyXDJcdTA0OTRcdTA0OTVcNz5cMlwyXHUw NDk1XHUwNDk2IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcN1xiXDJcMlx1MDQ5Nlx1MDQ5 N1w3XHUwMGVjXDJcMlx1MDQ5N1x1MDQ5OFw3XDMwXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcdTA0OThcdTA0OTlcN1x1MDBmYVwyXDJcdTA0OTlcdTA0OWJcN1wzMVwyXDJc dTA0OWFcdTA0OTMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA0OWFc dTA0OWJcM1wyXDJcMlx1MDQ5Ylx1MDRhY1wzXDJcMlwyXHUwNDljIikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlx1MDQ5ZFw3IVwyXDJcdTA0OWRcdTA0OWVcN0BcMlwyXHUwNDllXHUw NDlmXDdcYlwyXDJcdTA0OWYiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUw NGE0XDV8P1wyXHUwNGEwXHUwNGExXDcoXDJcMlx1MDRhMVx1MDRhM1w1fD9cMlx1MDRhMiIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA0YTBcM1wyXDJcMlx1MDRhM1x1MDRhNlwzXDJc MlwyXHUwNGE0XHUwNGEyXDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUw NGE0XHUwNGE1XDNcMlwyXDJcdTA0YTVcdTA0YTdcM1wyXDJcMlx1MDRhNlx1MDRhNFwzIikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcMlx1MDRhN1x1MDRhOFw3IVwyXDJcdTA0YThc dTA0YTlcN3RcMlwyXHUwNGE5XHUwNGFhIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo Ilw3XGJcMlwyXHUwNGFhXHUwNGFiXDdcdTAwZmFcMlwyXHUwNGFiXHUwNGFkXDNcMlwyXDJcdTA0 YWMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNDljXDNcMlwyXDJcdTA0YWNcdTA0 YWRcM1wyXDJcMlx1MDRhZFx1MDRiMFwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRl KCJcdTA0YWVcdTA0YWZcNyFcMlwyXHUwNGFmXHUwNGIxXDViXDYyXDJcdTA0YjBcdTA0YWVcMyIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTA0YjBcdTA0YjFcM1wyXDJc Mlx1MDRiMVx1MDRiMlwzXDJcMlwyXHUwNGIyXHUwNGIzIg0KPiA+ICkNCj4gPg0KPiA+ICsgICAg ICAgIGJ1Zi53cml0ZSgiXDcNCj4gPiBcMlwyXHUwNGIze1wzXDJcMlwyXHUwNGI0XHUwNGI3XDdc dTAwZmFcMlwyXHUwNGI1XHUwNGI3IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcNVYsXDJc dTA0YjZcdTA0YjRcM1wyXDJcMlx1MDRiNlx1MDRiNVwzXDJcMlwyXHUwNGI3fSIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDRiOFx1MDRiYlw1XHUwMDgwQVwyXHUwNGI5 XHUwNGJiXDVcdTAwODZEXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNGJhXHUw NGI4XDNcMlwyXDJcdTA0YmFcdTA0YjlcM1wyXDJcMlx1MDRiYlwxNzdcM1wyIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTA0YmNcdTA0ZWNcN25cMlwyXHUwNGJkXHUwNGJlXDcq XDJcMlx1MDRiZVx1MDRiZiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA0 YmZcdTA0YzBcN1x1MDBlY1wyXDJcdTA0YzBcdTA0YzFcN1wzMFwyXDIiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXHUwNGMxXHUwNGMyXDdcdTAwZmFcMlwyXHUwNGMyXHUwNGMzXDdcMzFc MlwyXHUwNGMzXHUwNGM0IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3IVwyXDJc dTA0YzRcdTA0YzVcN29cMlwyXHUwNGM1XHUwNGM2XDdcYlwyXDJcdTA0YzZcdTA0YzciKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDVMXCdcMlx1MDRjN1x1MDRjOFw3IVwyXDJcdTA0Yzhc dTA0YzlcNy9cMlwyXHUwNGM5XHUwNGNhIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3 XGJcMlwyXHUwNGNhXHUwNGNiXDdcdTAwZmFcMlwyXHUwNGNiXHUwNGNjXDchXDJcMlx1MDRjYyIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA0Y2RcN1x1MDA5MFwyXDJcdTA0Y2Rc dTA0Y2VcN1xiXDJcMlx1MDRjZVx1MDRjZlw3XHUwMGZhIikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlwyXDJcdTA0Y2ZcdTA0ZDBcNyFcMlwyXHUwNGQwXHUwNGVkXDNcMlwyXDJcdTA0ZDFc dTA0ZDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdvXDJcMlx1MDRkMlx1MDRk M1w3XGJcMlwyXHUwNGQzXHUwNGQ0XDVMXCdcMlx1MDRkNFx1MDRkNSINCj4gPiApDQo+ID4NCj4g PiArDQo+ID4NCj4gYnVmLndyaXRlKCJcNyFcMlwyXHUwNGQ1XHUwNGQ2XDcvXDJcMlx1MDRkNlx1 MDRkN1w3XGJcMlwyXHUwNGQ3XHUwNGQ4Ig0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlw3XHUwMGZhXDJcMlx1MDRkOFx1MDRkOVw3IVwyXDJcdTA0ZDlcdTA0ZGFcN1x1MDA5MFwy IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXHUwNGRhXHUwNGRiXDdcYlwyXDJc dTA0ZGJcdTA0ZGNcN1x1MDBmYVwyXDJcdTA0ZGNcdTA0ZGQNCj4gPiAiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXDchXDJcMlx1MDRkZFx1MDRlZFwzXDJcMlwyXHUwNGRlXHUwNGRm XDcvXDJcMlx1MDRkZlx1MDRlMCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcN1xi XDJcMlx1MDRlMFx1MDRlMVw3XHUwMGZhXDJcMlx1MDRlMVx1MDRlMlw3IVwyXDJcdTA0ZTIiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNGUzXDdcdTAwOTBcMlwyXHUwNGUzXHUw NGU4XDdcYlwyXDJcdTA0ZTRcdTA0ZTVcN1x1MDBmYiINCj4gPiApDQo+ID4NCj4gPiArDQo+IGJ1 Zi53cml0ZSgiXDJcMlx1MDRlNVx1MDRlOVw3IVwyXDJcdTA0ZTZcdTA0ZTdcN1x1MDBmYVwyXDJc dTA0ZTciKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDRlOVw3IVwyXDJcdTA0ZThcdTA0 ZTRcM1wyXDJcMlx1MDRlOFx1MDRlNlwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYu d3JpdGUoIlx1MDRlOVx1MDRlZFwzXDJcMlwyXHUwNGVhXHUwNGViXDdcdTAwZmFcMlwyXHUwNGVi XHUwNGVkIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcNyFcMlwyXHUwNGVjXHUwNGJkXDNc MlwyXDJcdTA0ZWNcdTA0ZDFcM1wyXDJcMlx1MDRlYyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcdTA0ZGVcM1wyXDJcMlx1MDRlY1x1MDRlYVwzXDJcMlwyXHUwNGVjXHUwNGVkXDNcMlwy XDIiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDRlZFx1MDRlZVwzXDJcMlwyXHUwNGVl XHUwNGYzXDVQKVwyXHUwNGVmXHUwNGYwXDchIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo IlwyXDJcdTA0ZjBcdTA0ZjFcN0BcMlwyXHUwNGYxXHUwNGYyXDdcYlwyXDJcdTA0ZjJcdTA0ZjQi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDVcdTAwODJCXDJcdTA0ZjNcdTA0ZWZcM1wy XDJcMlx1MDRmM1x1MDRmNFwzXDJcMlwyXHUwNGY0IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlx1MDRmOVwzXDJcMlwyXHUwNGY1XHUwNGY2XDchXDJcMlx1MDRmNlx1MDRmN1w3dFwyXDJc dTA0ZjciKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDRmOFw3XGJcMlwyXHUwNGY4XHUw NGZhXDdcdTAwZmFcMlwyXHUwNGY5XHUwNGY1XDNcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcMlwyXHUwNGY5XHUwNGZhXDNcMlwyXDJcdTA0ZmFcdTA0ZmRcM1wyXDJcMlx1MDRmYlx1 MDRmYyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcNyFcMlwyXHUwNGZjXHUwNGZlXDVc dTAwYjRbXDJcdTA0ZmRcdTA0ZmJcM1wyXDJcMlx1MDRmZCIpDQo+ID4NCj4gPiArICAgICAgICBi dWYud3JpdGUoIlx1MDRmZVwzXDJcMlwyXHUwNGZlXHUwNGZmXDNcMlwyXDJcdTA0ZmZcdTA1MDBc NyBcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDUwMFx1MDA4MVwzXDJcMlwy XHUwNTAxXHUwNTA2XDVcdTAwODRDXDJcdTA1MDJcdTA1MDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXDcoXDJcMlx1MDUwM1x1MDUwNVw1XHUwMDg0Q1wyXHUwNTA0XHUwNTAyXDNcMlwy XDJcdTA1MDUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNTA4XDNcMlwyXDJcdTA1 MDZcdTA1MDRcM1wyXDJcMlx1MDUwNlx1MDUwN1wzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlx1MDUwN1x1MDA4M1wzXDJcMlwyXHUwNTA4XHUwNTA2XDNcMlwyXDJcdTA1MDlc dTA1MGNcNyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAwZmFcMlwyXHUwNTBhXHUw NTBjXDVWLFwyXHUwNTBiXHUwNTA5XDNcMlwyXDJcdTA1MGIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXHUwNTBhXDNcMlwyXDJcdTA1MGNcdTAwODVcM1wyXDJcMlx1MDUwZFx1MDUwZVw3 XHUwMDk5IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTA1MGVcdTA1MGZcN1x1 MDA5YlwyXDJcdTA1MGZcdTA1MTBcN1xiXDJcMlx1MDUxMCIpDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJcdTA1MTFcN1x1MDBmYlwyXDJcdTA1MTFcdTA1MTJcNyFcMlwyXHUwNTEyXHUwNTEz XDVUKyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlx1MDUxM1x1MDUxN1w3IVwyXDJc dTA1MTRcdTA1MTVcNWJcNjJcMlx1MDUxNVx1MDUxNiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0 ZSgiXDchXDJcMlx1MDUxNlx1MDUxOFwzXDJcMlwyXHUwNTE3XHUwNTE0XDNcMlwyXDJcdTA1MTci KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNTE4XDNcMlwyXDJcdTA1MThcdTA1MTlc M1wyXDJcMlx1MDUxOVx1MDUxYVw3XHUwMDlhIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0 ZSgiXDJcMlx1MDUxYVx1MDUxYlw3DQo+ID4gXDJcMlx1MDUxYlx1MDA4N1wzXDJcMlwyXHUwNTFj XHUwNTIzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw1XHUwMGI4XVwyXHUwNTFkXHUw NTIzXDVcdTAwZTh1XDJcdTA1MWVcdTA1MjNcNVx1MDBjNiIpDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJkXDJcdTA1MWZcdTA1MjNcNVx1MDBkNGtcMlx1MDUyMFx1MDUyM1w1XHUwMGUyclwy XHUwNTIxIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTA1MjNcNVx1MDBmMHlcMlx1MDUy Mlx1MDUxY1wzXDJcMlwyXHUwNTIyXHUwNTFkXDNcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcMlwyXHUwNTIyXHUwNTFlXDNcMlwyXDJcdTA1MjJcdTA1MWZcM1wyXDJcMlx1MDUyMlx1 MDUyMCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDUyMlx1MDUyMVwz XDJcMlwyXHUwNTIzXHUwMDg5XDNcMlwyXDJcdTA1MjQiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3Jp dGUoIlx1MDUyNVw1YFw2MVwyXHUwNTI1XHUwNTI2XDchXDJcMlx1MDUyNlx1MDUzMFwzXDJcMlwy IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDUyN1x1MDUzMFw1XHUwMDhjR1wy XHUwNTI4XHUwNTMwXDVcdTAwOGVIXDJcdTA1MjlcdTA1Mw0KPiA+IDAiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXDVcdTAwOTBJXDJcdTA1MmFcdTA1MzBcNVx1MDA5MkpcMlx1MDUyYlx1 MDUzMFw1XHUwMDk0IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIktcMlx1MDUyY1x1MDUz MFw1XHUwMTFjXHUwMDhmXDJcdTA1MmRcdTA1MzBcNVx1MDA5NkxcMiIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcdTA1MmVcdTA1MzBcNVx1MDA5OE1cMlx1MDUyZlx1MDUyNFwzXDJcMlwy XHUwNTJmXHUwNTI3IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDUyZlx1 MDUyOFwzXDJcMlwyXHUwNTJmXHUwNTI5XDNcMlwyXDJcdTA1MmYiKQ0KPiA+DQo+ID4gKw0KPiBi dWYud3JpdGUoIlx1MDUyYVwzXDJcMlwyXHUwNTJmXHUwNTJiXDNcMlwyXDJcdTA1MmZcdTA1MmNc M1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA1MmZcdTA1MmRcM1wyXDJc Mlx1MDUyZlx1MDUyZVwzXDJcMlwyXHUwNTMwXHUwMDhiXDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ IGJ1Zi53cml0ZSgiXDJcMlwyXHUwNTMxXHUwNTMyXDdwXDJcMlx1MDUzMlx1MDUzM1w3XDYyXDJc Mlx1MDUzM1x1MDUzNCINCj4gPiApDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDdcYlwyXDJc dTA1MzRcdTA1MzVcN1x1MDBlY1wyXDJcdTA1MzVcdTA1MzZcN1wzMFwyXDIiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNTM2XHUwNTM3XDdcdTAwZmFcMlwyXHUwNTM3XHUwNTM4 XDdcMzFcMlwyXHUwNTM4XHUwNTQ1IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3 IVwyXDJcdTA1MzlcdTA1M2FcN0BcMlwyXHUwNTNhXHUwNTNiXDdcYlwyXDJcdTA1M2JcdTA1NDAN Cj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDVcdTAwOWVQXDJcdTA1M2NcdTA1 M2RcNyhcMlwyXHUwNTNkXHUwNTNmXDVcdTAwOWVQXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXHUwNTNlXHUwNTNjXDNcMlwyXDJcdTA1M2ZcdTA1NDJcM1wyXDJcMlx1MDU0MFx1MDUz ZVwzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDU0MFx1MDU0MVwz XDJcMlwyXHUwNTQxXHUwNTQzXDNcMlwyXDJcdTA1NDJcdTA1NDAiDQo+ID4gKQ0KPiA+DQo+ID4g Kw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwNTQzXHUwNTQ0XDchXDJcMlx1MDU0NFx1MDU0Nlwz XDJcMlwyXHUwNTQ1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDUzOVwzXDJcMlwy XHUwNTQ1XHUwNTQ2XDNcMlwyXDJcdTA1NDZcdTA1NDdcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcdTA1NDdcdTA1NDhcNVx1MDEyNFx1MDA5M1wyXHUwNTQ4XHUwNTRhXDdz XDJcMlx1MDU0OSIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlx1MDU0Ylw3DQo+IFwy XDJcdTA1NGFcdTA1NDlcM1wyXDJcMlx1MDU0YVx1MDU0YlwzXDJcMlwyIikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlx1MDU0Ylx1MDA4ZFwzXDJcMlwyXHUwNTRjXHUwNTRkXDdyXDJcMlx1 MDU0ZFx1MDU0ZVw3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw2MlwyXDJcdTA1NGVc dTA1NGZcN1xiXDJcMlx1MDU0Zlx1MDU1MFw3XHUwMGVjXDJcMlx1MDU1MCIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcdTA1NTFcN1wzMFwyXDJcdTA1NTFcdTA1NTJcN1x1MDBmYVwyXDJc dTA1NTJcdTA1NTNcNyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMzFcMlwyXHUw NTUzXHUwNTYwXDchXDJcMlx1MDU1NFx1MDU1NVw3QFwyXDJcdTA1NTVcdTA1NTYiDQo+ID4gKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA1NTZcdTA1NWJcNVx1MDA5ZVBc Mlx1MDU1N1x1MDU1OFw3KFwyXDJcdTA1NTgiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XHUwNTVhXDVcdTAwOWVQXDJcdTA1NTlcdTA1NTdcM1wyXDJcMlx1MDU1YVx1MDU1ZFwzXDIiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1MDU1Ylx1MDU1OVwzXDJcMlwyXHUwNTVi XHUwNTVjXDNcMlwyXDJcdTA1NWNcdTA1NWUiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwz XDJcMlwyXHUwNTVkXHUwNTViXDNcMlwyXDJcdTA1NWVcdTA1NWZcNyFcMlwyXHUwNTVmIikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDU2MVwzXDJcMlwyXHUwNTYwXHUwNTU0XDNcMlwy XDJcdTA1NjBcdTA1NjFcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA1 NjFcdTA1NjJcM1wyXDJcMlx1MDU2Mlx1MDU2M1w1XHUwMTI0XHUwMDkzXDJcdTA1NjMiKQ0KPiA+ DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA1NjVcN3NcMlwyXHUwNTY0XHUwNTY2XDcNCj4g PiBcMlwyXHUwNTY1XHUwNTY0XDNcMlwyXDJcdTA1NjUiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3Jp dGUoIlx1MDU2NlwzXDJcMlwyXHUwNTY2XHUwMDhmXDNcMlwyXDJcdTA1NjdcdTA1NjhcN2xcMlwy IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTY4XHUwNTY5XDVcdTAxMjRcdTAw OTNcMlx1MDU2OVx1MDU2YVw3DQo+ID4gXDJcMlx1MDU2YSIpDQo+ID4NCj4gPiArICAgICAgICBi dWYud3JpdGUoIlx1MDU2Ylw1XHUwMGI0W1wyXHUwNTZiXHUwNTZkXDdzXDJcMlx1MDU2Y1x1MDU2 ZVw3DQo+IFwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXHUwNTZkXHUwNTZjXDNc MlwyXDJcdTA1NmRcdTA1NmVcM1wyXDJcMlx1MDU2ZVx1MDA5MSIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcM1wyXDJcMlx1MDU2Zlx1MDU3MFw3XHUwMGE0XDJcMlx1MDU3MFx1MDU3MVw3 XHUwMGE1XDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcdTA1NzFcdTA1NzJc N1xiXDJcMlx1MDU3Mlx1MDU3M1w3XHUwMGZhXDJcMlx1MDU3M1x1MDA5MyINCj4gPiApDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDU3NFx1MDU3NVw3XHUwMGE2XDJc Mlx1MDU3NVx1MDU3Nlw3XGJcMlwyXHUwNTc2Ig0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlx1MDU3N1w3XHUwMGVjXDJcMlx1MDU3N1x1MDU3OFw3XDMwXDJcMlx1MDU3OFx1MDU3 OVw3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDBmYVwyXDJcdTA1NzlcdTA1N2Fc N1wzMVwyXDJcdTA1N2FcdTA1N2JcNyFcMlwyXHUwNTdiIikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlx1MDA5NVwzXDJcMlwyXHUwNTdjXHUwNTdkXDdcdTAwZWJcMlwyXHUwNTdkXHUwNTdl XDdcYiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDU3ZVx1MDU3Zlw1TFwnXDJc dTA1N2ZcdTA1ODBcNyFcMlwyXHUwNTgwXHUwMDk3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlwzXDJcMlwyXHUwNTgxXHUwNTgyXDdxXDJcMlx1MDU4Mlx1MDU4M1w3XDYyXDJcMlx1MDU4 MyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA1ODRcN1xiXDJcMlx1MDU4NFx1MDU4 NVw3XHUwMGVjXDJcMlx1MDU4NVx1MDU4Nlw3XDMwIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlwyXDJcdTA1ODZcdTA1ODdcN1x1MDBmYVwyXDJcdTA1ODdcdTA1ODhcN1wzMVwyXDJcdTA1 ODgiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNThkXDchXDJcMlx1MDU4OVx1 MDU4YVw3TVwyXDJcdTA1OGFcdTA1OGJcN1xiXDJcMlx1MDU4Yg0KPiA+ICIpDQo+ID4NCj4gPiAr DQo+IGJ1Zi53cml0ZSgiXHUwNThjXDdcdTAwZmFcMlwyXHUwNThjXHUwNThlXDchXDJcMlx1MDU4 ZFx1MDU4OVwzXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1MDU4ZFx1MDU4 ZVwzXDJcMlwyXHUwNThlXHUwNThmXDNcMlwyXDJcdTA1OGZcdTA1OTAiKQ0KPiA+DQo+ID4gKyAg ICAgICAgYnVmLndyaXRlKCJcNVx1MDEyNFx1MDA5M1wyXHUwNTkwXHUwNTkyXDdzXDJcMlx1MDU5 MVx1MDU5M1w3DQo+ID4gXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA1OTJc dTA1OTFcM1wyXDJcMlx1MDU5Mlx1MDU5M1wzXDJcMlwyXHUwNTkzXHUwMDk5XDMiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwNTk0XHUwNTk2XDVcdTAwOGFGXDJcdTA1OTVc dTA1OTRcM1wyXDJcMlx1MDU5NiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA1OTlc M1wyXDJcMlx1MDU5N1x1MDU5NVwzXDJcMlwyXHUwNTk3XHUwNTk4XDNcMlwyXDIiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNTk4XHUwMDliXDNcMlwyXDJcdTA1OTlcdTA1OTdcM1wy XDJcMlx1MDU5YVx1MDVhMlw1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDBhMFFc Mlx1MDU5Ylx1MDVhMlw1XHUwMGEyUlwyXHUwNTljXHUwNWEyXDVcdTAwYTZUIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlwyXHUwNTlkXHUwNWEyXDVcdTAwYTRTXDJcdTA1OWVcdTA1YTJc NVx1MDBhOFVcMlx1MDU5ZiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA1YTJcNVx1 MDBiMFlcMlx1MDVhMFx1MDVhMlw1XHUwMGIyWlwyXHUwNWExXHUwNTlhXDMiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwNWExXHUwNTliXDNcMlwyXDJcdTA1YTFcdTA1 OWNcM1wyXDJcMlx1MDVhMVx1MDU5ZCINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcM1wyXDJcMlx1MDVhMVx1MDU5ZVwzXDJcMlwyXHUwNWExXHUwNTlmXDNcMlwyXDJcdTA1YTEi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNWEwXDNcMlwyXDJcdTA1YTJcdTAwOWRc M1wyXDJcMlx1MDVhM1x1MDVhY1w3XHUwMGZhIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo IlwyXDJcdTA1YTRcdTA1YWNcN3lcMlwyXHUwNWE1XHUwNWFjXDd2XDJcMlx1MDVhNlx1MDVhYyIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcN3VcMlwyXHUwNWE3XHUwNWFjXDd7XDJc Mlx1MDVhOFx1MDVhY1w3fFwyXDJcdTA1YTlcdTA1YWMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXDd6XDJcMlx1MDVhYVx1MDVhY1w3fVwyXDJcdTA1YWJcdTA1YTNcM1wyXDJcMlx1 MDVhYlx1MDVhNCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDVhYlx1 MDVhNVwzXDJcMlwyXHUwNWFiXHUwNWE2XDNcMlwyXDJcdTA1YWIiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwNWE3XDNcMlwyXDJcdTA1YWJcdTA1YThcM1wyXDJcMlx1MDVhYlx1MDVh OVwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDVhYlx1MDVhYVwzXDJc MlwyXHUwNWFjXHUwMDlmXDNcMlwyXDJcdTA1YWRcdTA1YWVcNyIpDQo+ID4NCj4gPiArICAgICAg ICBidWYud3JpdGUoImtcMlwyXHUwNWFlXHUwNWFmXDVcdTAxMjRcdTAwOTNcMlx1MDVhZlx1MDVi Y1w3DQo+ID4gXDJcMlx1MDViMCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA1YjFc N0BcMlwyXHUwNWIxXHUwNWIyXDdcYlwyXDJcdTA1YjJcdTA1YjdcNVx1MDA5ZSIpDQo+ID4NCj4g PiArDQo+ID4NCj4gYnVmLndyaXRlKCJQXDJcdTA1YjNcdTA1YjRcNyhcMlwyXHUwNWI0XHUwNWI2 XDVcdTAwOWVQXDJcdTA1YjVcdTA1YjMiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXDNcMlwyXDJcdTA1YjZcdTA1YjlcM1wyXDJcMlx1MDViN1x1MDViNVwzXDJcMlwyXHUwNWI3 IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDViOFwzXDJcMlwyXHUwNWI4XHUwNWJh XDNcMlwyXDJcdTA1YjlcdTA1YjdcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcdTA1YmFcdTA1YmJcNyFcMlwyXHUwNWJiXHUwNWJkXDNcMlwyXDJcdTA1YmNcdTA1YjBcMyIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTA1YmNcdTA1YmRcM1wyXDJc Mlx1MDViZFx1MDViZVwzXDJcMlwyXHUwNWJlXHUwNWJmIg0KPiA+ICkNCj4gPg0KPiA+ICsgICAg ICAgIGJ1Zi53cml0ZSgiXDVcdTAwYjRbXDJcdTA1YmZcdTA1YzFcN3NcMlwyXHUwNWMwXHUwNWMy XDcNCj4gPiBcMlwyXHUwNWMxIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTA1YzBcM1wy XDJcMlx1MDVjMVx1MDVjMlwzXDJcMlwyXHUwNWMyXHUwMGExXDNcMlwyXDIiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXHUwNWMzXHUwNWM0XDdLXDJcMlx1MDVjNFx1MDVjNVw1XHUwMTI0 XHUwMDkzXDJcdTA1YzUiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA1ZDJcNw0K PiA+IFwyXDJcdTA1YzZcdTA1YzdcN0BcMlwyXHUwNWM3XHUwNWM4XDdcYlwyXDJcdTA1YzgiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNWNkXDVcdTAwOWVQXDJcdTA1YzlcdTA1Y2Fc NyhcMlwyXHUwNWNhXHUwNWNjXDVcdTAwOWUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi UFwyXHUwNWNiXHUwNWM5XDNcMlwyXDJcdTA1Y2NcdTA1Y2ZcM1wyXDJcMlx1MDVjZFx1MDVjYiIp DQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA1Y2RcdTA1Y2VcM1wyXDJcMlx1 MDVjZVx1MDVkMFwzXDJcMlwyXHUwNWNmIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTA1 Y2RcM1wyXDJcMlx1MDVkMFx1MDVkMVw3IVwyXDJcdTA1ZDFcdTA1ZDNcM1wyXDJcMiIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA1ZDJcdTA1YzZcM1wyXDJcMlx1MDVkMlx1MDVkM1wz XDJcMlwyXHUwNWQzXHUwNWQ0XDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlwy XHUwNWQ0XHUwNWQ1XDVcdTAwYjRbXDJcdTA1ZDVcdTA1ZDdcN3NcMlwyXHUwNWQ2IikNCj4gPg0K PiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNWQ4XDcNCj4gXDJcMlx1MDVkN1x1MDVkNlwzXDJc MlwyXHUwNWQ3XHUwNWQ4XDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUw NWQ4XHUwMGEzXDNcMlwyXDJcdTA1ZDlcdTA1ZTFcN2NcMlwyXHUwNWRhXHUwNWRiXDUiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMGE2VFwyXHUwNWRiXHUwNWRjXDchXDJcMlx1MDVk Y1x1MDVlMlwzXDJcMlwyXHUwNWRkIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDVk ZVw3XGJcMlwyXHUwNWRlXHUwNWRmXDVaLlwyXHUwNWRmXHUwNWUwXDchXDJcMlx1MDVlMCIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA1ZTJcM1wyXDJcMlx1MDVlMVx1MDVkYVwzXDJc MlwyXHUwNWUxXHUwNWRkXDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XHUwNWUyXHUwNWU3XDNcMlwyXDJcdTA1ZTNcdTA1ZTRcN1x1MDA5YlwyXDJcdTA1ZTRcdTA1ZTUi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA1ZTVcdTA1ZTZcN1x1 MDBmYlwyXDJcdTA1ZTZcdTA1ZThcNyFcMlwyXHUwNWU3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlx1MDVlM1wzXDJcMlwyXHUwNWU3XHUwNWU4XDNcMlwyXDJcdTA1ZThcdTAwYTVcM1wy XDJcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA1ZTlcdTA1ZWFcN1x1MDA5 NlwyXDJcdTA1ZWFcdTA1ZWJcN1xiXDJcMlx1MDVlYlx1MDVlYyIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcNVx1MDEyNFx1MDA5M1wyXHUwNWVjXHUwMGE3XDNcMlwyXDJcdTA1ZWRc dTA1ZWVcNVx1MDBhYSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJWXDJcdTA1ZWVcdTAw YTlcM1wyXDJcMlx1MDVlZlx1MDVmMFw3P1wyXDJcdTA1ZjBcdTA1ZjEiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXDc+XDJcMlx1MDVmMVx1MDVmMlw3XGJcMlwyXHUwNWYyXHUwNWYzXDdc dTAwZWNcMlwyXHUwNWYzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNWY0XDdc MzBcMlwyXHUwNWY0XHUwNWY1XDdcdTAwZmFcMlwyXHUwNWY1XHUwNWY2XDciKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXDMxXDJcMlx1MDVmNlx1MDVmN1w3IVwyXDJcdTA1ZjdcdTA1Zjhc N1x1MDA5NlwyXDJcdTA1ZjgiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNWY5XDdc YlwyXDJcdTA1ZjlcdTA1ZmFcNVouXDJcdTA1ZmFcdTA1ZmJcNyFcMlwyXHUwNWZiIikNCj4gPg0K PiA+ICsNCj4gYnVmLndyaXRlKCJcdTA1ZmNcN0BcMlwyXHUwNWZjXHUwNWZkXDdcYlwyXDJcdTA1 ZmRcdTA2MDJcNVx1MDBhYyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiV1wyXHUwNWZlXHUw NWZmXDchXDJcMlx1MDVmZlx1MDYwMFw3dFwyXDJcdTA2MDBcdTA2MDEiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA2MDFcdTA2MDNcN1x1MDBmYVwyXDJcdTA2MDJc dTA1ZmVcM1wyXDJcMlx1MDYwMiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjAzXDNc MlwyXDJcdTA2MDNcdTA2MDhcM1wyXDJcMlx1MDYwNFx1MDYwNVw3IVwyXDIiKQ0KPiA+DQo+ID4g Kw0KPiBidWYud3JpdGUoIlx1MDYwNVx1MDYwN1w1XFwvXDJcdTA2MDZcdTA2MDRcM1wyXDJcMlx1 MDYwN1x1MDYwYVwzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDYw OFx1MDYwNlwzXDJcMlwyXHUwNjA4XHUwNjA5XDNcMlwyXDJcdTA2MDlcdTA2MGIiDQo+ID4gKQ0K PiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDYwYVx1MDYwOFwzXDJcMlwy XHUwNjBiXHUwNjBjXDcNCj4gXDJcMlx1MDYwYyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcdTAwYWJcM1wyXDJcMlx1MDYwZFx1MDYxMlw1XHUwMGFlWFwyXHUwNjBlXHUwNjBmXDcoXDIi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcdTA2MGZcdTA2MTFcNVx1MDBhZVhc Mlx1MDYxMFx1MDYwZVwzXDJcMlwyXHUwNjExXHUwNjE0IikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlwzXDJcMlwyXHUwNjEyXHUwNjEwXDNcMlwyXDJcdTA2MTJcdTA2MTNcM1wyXDJcMlx1 MDYxMyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAwYWRcM1wyXDJcMlx1MDYxNFx1 MDYxMlwzXDJcMlwyXHUwNjE1XHUwNjIxXDdcdTAwZmEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXDJcMlx1MDYxNlx1MDYyMVw3XHUwMGVkXDJcMlx1MDYxN1x1MDYyMVw3XHUwMGVl XDJcMlx1MDYxOA0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA2MjFcN3lc MlwyXHUwNjE5XHUwNjIxXDd7XDJcMlx1MDYxYVx1MDYyMVw3XHUwMDgwXDIiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXDJcdTA2MWJcdTA2MjFcN3xcMlwyXHUwNjFjXHUwNjIxXDd2XDJc Mlx1MDYxZFx1MDYyMVw3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoInVcMlwyXHUwNjFl XHUwNjIxXDd6XDJcMlx1MDYxZlx1MDYyMVw3fVwyXDJcdTA2MjBcdTA2MTUiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA2MjBcdTA2MTZcM1wyXDJcMlx1MDYyMFx1MDYx N1wzXDJcMlwyXHUwNjIwIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDYxOFwzXDJc MlwyXHUwNjIwXHUwNjE5XDNcMlwyXDJcdTA2MjBcdTA2MWFcM1wyXDJcMiIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcdTA2MjBcdTA2MWJcM1wyXDJcMlx1MDYyMFx1MDYxY1wzXDJcMlwy XHUwNjIwXHUwNjFkXDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUw NjIwXHUwNjFlXDNcMlwyXDJcdTA2MjBcdTA2MWZcM1wyXDJcMlx1MDYyMVx1MDBhZiIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDYyMlx1MDYyM1w3XHUwMDk3XDJc Mlx1MDYyM1x1MDYyNFw1XHUwMTI0XHUwMDkzDQo+ID4gIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXDJcdTA2MjRcdTA2MjVcNw0KPiA+IFwyXDJcdTA2MjVcdTAwYjFcM1wyXDJcMlx1 MDYyNlx1MDYyNyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcN1x1MDA5OFwyXDJcdTA2 MjdcdTA2MjhcNVx1MDEyNFx1MDA5M1wyXHUwNjI4XHUwNjI5XDciKQ0KPiA+DQo+ID4gKyAgICAg ICAgYnVmLndyaXRlKCINCj4gPiBcMlwyXHUwNjI5XHUwMGIzXDNcMlwyXDJcdTA2MmFcdTA2MmNc NVx1MDBiNlxcXDJcdTA2MmIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNjJhXDNc MlwyXDJcdTA2MmNcdTA2MmZcM1wyXDJcMlx1MDYyZFx1MDYyYlwzXDJcMlwyIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlx1MDYyZFx1MDYyZVwzXDJcMlwyXHUwNjJlXHUwMGI1XDNcMlwy XDJcdTA2MmZcdTA2MmRcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJc dTA2MzBcdTA2MzNcNVx1MDA4YUZcMlx1MDYzMVx1MDYzM1w1XHUwMDljT1wyXHUwNjMyDQo+ID4g IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDYzMFwzXDJcMlwyXHUwNjMyXHUwNjMx XDNcMlwyXDJcdTA2MzNcdTAwYjdcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcdTA2MzRcdTA2MzdcNVx1MDBiYV5cMlx1MDYzNVx1MDYzN1w1XHUwMGMwYVwyXHUwNjM2 XHUwNjMNCj4gPiA0IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwNjM2 XHUwNjM1XDNcMlwyXDJcdTA2MzdcdTAwYjlcM1wyXDJcMlx1MDYzOCIpDQo+ID4NCj4gPiArDQo+ ID4NCj4gYnVmLndyaXRlKCJcdTA2MzlcN1xcXDJcMlx1MDYzOVx1MDYzYVw1UipcMlx1MDYzYVx1 MDYzYlw1VCtcMlx1MDYzYiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2NDFc NyFcMlwyXHUwNjNjXHUwNjNkXDdAXDJcMlx1MDYzZFx1MDYzZVw3XGJcMlwyXHUwNjNlDQo+ID4g IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDYzZlw1XHUwMGJjX1wyXHUwNjNmXHUw NjQwXDchXDJcMlx1MDY0MFx1MDY0MlwzXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcMlx1MDY0MVx1MDYzY1wzXDJcMlwyXHUwNjQxXHUwNjQyXDNcMlwyXDJcdTA2NDJcdTA2NDci KQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwNjQzXHUwNjQ0XDd0XDJcMlx1 MDY0NFx1MDY0NVw3XGJcMlwyXHUwNjQ1IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTA2 NDZcN1x1MDBmYVwyXDJcdTA2NDZcdTA2NDhcNyFcMlwyXHUwNjQ3XHUwNjQzXDNcMiIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXHUwNjQ3XHUwNjQ4XDNcMlwyXDJcdTA2NDhcdTA2 NDlcM1wyXDJcMlx1MDY0OVx1MDY0YSIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlw1 XHUwMGI0W1wyXHUwNjRhXHUwNjRiXDddXDJcMlx1MDY0Ylx1MDY0Y1w3DQo+ID4gXDJcMlx1MDY0 YyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAwYmJcM1wyXDJcMlx1MDY0ZFx1MDY1 Mlw1XHUwMGJlYFwyXHUwNjRlXHUwNjRmXDcoXDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXDJcdTA2NGZcdTA2NTFcNVx1MDBiZWBcMlx1MDY1MFx1MDY0ZVwzXDJcMlwyXHUwNjUx XHUwNjU0IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwNjUyXHUwNjUw XDNcMlwyXDJcdTA2NTJcdTA2NTNcM1wyXDJcMlx1MDY1MyIpDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJcdTAwYmRcM1wyXDJcMlx1MDY1NFx1MDY1MlwzXDJcMlwyXHUwNjU1XHUwNjVjXDdc dTAwZmEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1MDY1Nlx1MDY1Y1w3dVwy XDJcdTA2NTdcdTA2NWNcN3ZcMlwyXHUwNjU4XHUwNjVjIikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlw3d1wyXDJcdTA2NTlcdTA2NWNcN3hcMlwyXHUwNjVhXHUwNjVjXDVWLFwyXHUwNjVi XHUwNjU1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwNjViXHUwNjU2 XDNcMlwyXDJcdTA2NWJcdTA2NTdcM1wyXDJcMlx1MDY1YiIpDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJcdTA2NThcM1wyXDJcMlx1MDY1Ylx1MDY1OVwzXDJcMlwyXHUwNjViXHUwNjVhXDNc MlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNjVjXHUwMGJmXDNcMlwyXDJc dTA2NWRcdTA2NWVcN1x1MDBhMVwyXDJcdTA2NWVcdTA2NWYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ IGJ1Zi53cml0ZSgiXDVQKVwyXHUwNjVmXHUwNjY1XDchXDJcMlx1MDY2MFx1MDY2MVw3QFwyXDJc dTA2NjFcdTA2NjIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA2NjJc dTA2NjNcNVx1MDBjMmJcMlx1MDY2M1x1MDY2NFw3IVwyXDJcdTA2NjQiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXHUwNjY2XDNcMlwyXDJcdTA2NjVcdTA2NjBcM1wyXDJcMlx1MDY2NVx1 MDY2NlwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDY2Nlx1MDY2 N1wzXDJcMlwyXHUwNjY3XHUwNjY4XDdcdTAwYTJcMlwyXHUwNjY4XHUwNjY5IikNCj4gPg0KPiA+ ICsNCj4gYnVmLndyaXRlKCJcN1xiXDJcMlx1MDY2OVx1MDY2YVw3XHUwMGVjXDJcMlx1MDY2YVx1 MDY2Ylw3XDMwXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA2NmJcdTA2 NmNcN1x1MDBmYVwyXDJcdTA2NmNcdTA2NmRcN1wzMVwyXDJcdTA2NmRcdTA2NmUiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDchXDJcMlx1MDY2ZVx1MDY2Zlw1XHUwMDlhTlwyXHUwNjZm XHUwNjcwXDdcdTAwYTNcMlwyIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjcw XHUwNjcxXDcNCj4gXDJcMlx1MDY3MVx1MDBjMVwzXDJcMlwyXHUwNjcyXHUwNjc3XDUiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMGM0Y1wyXHUwNjczXHUwNjc0XDcoXDJcMlx1 MDY3NFx1MDY3Nlw1XHUwMGM0Y1wyXHUwNjc1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo Ilx1MDY3M1wzXDJcMlwyXHUwNjc2XHUwNjc5XDNcMlwyXDJcdTA2NzdcdTA2NzVcM1wyXDJcMiIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA2NzdcdTA2NzhcM1wyXDJcMlx1MDY3OFx1 MDBjM1wzXDJcMlwyXHUwNjc5XHUwNjc3XDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XDJcMlwyXHUwNjdhXHUwNjdkXDdcdTAwZmFcMlwyXHUwNjdiXHUwNjdkXDVWLFwyXHUwNjdjIikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDY3YVwzXDJcMlwyXHUwNjdjXHUwNjdiXDNc MlwyXDJcdTA2N2RcdTAwYzVcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcdTA2N2VcdTA2ODFcNVx1MDBjOGVcMlx1MDY3Zlx1MDY4MVw1XHUwMGQwaVwyXHUwNjgwXHUw NjdlIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwNjgwXHUw NjdmXDNcMlwyXDJcdTA2ODFcdTAwYzdcM1wyXDJcMlx1MDY4MiIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcdTA2ODNcN15cMlwyXHUwNjgzXHUwNjg0XDVSKlwyXHUwNjg0XHUwNjg1XDVU K1wyXHUwNjg1IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDY4Ylw3IVwyXDJc dTA2ODZcdTA2ODdcN0BcMlwyXHUwNjg3XHUwNjg4XDdcYlwyXDJcdTA2ODgNCj4gPiAiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNjg5XDVcdTAwY2NnXDJcdTA2ODlcdTA2OGFcNyFc MlwyXHUwNjhhXHUwNjhjXDNcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXHUw NjhiXHUwNjg2XDNcMlwyXDJcdTA2OGJcdTA2OGNcM1wyXDJcMlx1MDY4Y1x1MDY5MSIpDQo+ID4N Cj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA2OGRcdTA2OGVcN3RcMlwyXHUwNjhlXHUw NjhmXDdcYlwyXDJcdTA2OGYiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDY5MFw3XHUw MGZhXDJcMlx1MDY5MFx1MDY5Mlw3IVwyXDJcdTA2OTFcdTA2OGRcM1wyIikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlwyXDJcdTA2OTFcdTA2OTJcM1wyXDJcMlx1MDY5Mlx1MDY5M1wzXDJc MlwyXHUwNjkzXHUwNjk0IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcNVx1MDBjYWZcMlx1 MDY5NFx1MDY5NVw1XHUwMGI0W1wyXHUwNjk1XHUwNjk2XDdfXDJcMiIpDQo+ID4NCj4gPiArICAg ICAgICBidWYud3JpdGUoIlx1MDY5Nlx1MDY5N1w3DQo+IFwyXDJcdTA2OTdcdTAwYzlcM1wyXDJc Mlx1MDY5OFx1MDY5OVw3IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoImBcMlwyXHUw Njk5XHUwNjliXDdcYlwyXDJcdTA2OWFcdTA2OWNcN1wzNVwyXDJcdTA2OWJcdTA2OWEiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA2OWJcdTA2OWNcM1wyXDJcMlx1MDY5 Y1x1MDY5ZFwzXDJcMlwyXHUwNjlkIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTA2OWVc N1x1MDBmYVwyXDJcdTA2OWVcdTA2OWZcNyFcMlwyXHUwNjlmXHUwNmEwXDdhXDIiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcdTA2YTBcdTA2YTJcN1xiXDJcMlx1MDZhMVx1MDZhM1w3 XDM1XDJcMlx1MDZhMlx1MDZhMSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJc Mlx1MDZhMlx1MDZhM1wzXDJcMlwyXHUwNmEzXHUwNmE0XDNcMlwyXDJcdTA2YTQiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNmE1XDdcdTAwZmFcMlwyXHUwNmE1XHUwNmFhXDchXDJc Mlx1MDZhNlx1MDZhN1w3YlwyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXHUw NmE3XHUwNmE4XDdcYlwyXDJcdTA2YThcdTA2YTlcN1x1MDBmYVwyXDJcdTA2YTlcdTA2YWIiDQo+ ID4gKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlw3IVwyXDJcdTA2YWFcdTA2YTZcM1wyXDJc Mlx1MDZhYVx1MDZhYlwzXDJcMlwyXHUwNmFiIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo Ilx1MDBjYlwzXDJcMlwyXHUwNmFjXHUwNmIxXDVcdTAwY2VoXDJcdTA2YWRcdTA2YWVcNyhcMiIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlx1MDZhZVx1MDZiMFw1XHUwMGNlaFwy XHUwNmFmXHUwNmFkXDNcMlwyXDJcdTA2YjBcdTA2YjMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXDNcMlwyXDJcdTA2YjFcdTA2YWZcM1wyXDJcMlx1MDZiMVx1MDZiMlwzXDJcMlwyXHUw NmIyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDBjZFwzXDJcMlwyXHUwNmIzXHUw NmIxXDNcMlwyXDJcdTA2YjRcdTA2YmVcN1x1MDBmYSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcMlwyXHUwNmI1XHUwNmJlXDdcdTAwZWZcMlwyXHUwNmI2XHUwNmJlXDdcdTAwZjBc MlwyXHUwNmI3Ig0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDZiZVw3XHUw MGYxXDJcMlx1MDZiOFx1MDZiZVw3XHUwMGYyXDJcMlx1MDZiOVx1MDZiZSIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcN1x1MDBmM1wyXDJcdTA2YmFcdTA2YmVcN1x1MDBmNFwyXDJcdTA2 YmJcdTA2YmVcN1x1MDBmNSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXHUwNmJj XHUwNmJlXDVWLFwyXHUwNmJkXHUwNmI0XDNcMlwyXDJcdTA2YmRcdTA2YjUiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA2YmRcdTA2YjZcM1wyXDJcMlx1MDZiZFx1MDZi N1wzXDJcMlwyXHUwNmJkIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDZiOFwzXDJc MlwyXHUwNmJkXHUwNmI5XDNcMlwyXDJcdTA2YmRcdTA2YmFcM1wyXDJcMiIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcdTA2YmRcdTA2YmJcM1wyXDJcMlx1MDZiZFx1MDZiY1wzXDJcMlwy XHUwNmJlXHUwMGNmXDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwNmJm XHUwNmMwXDdcNjBcMlwyXHUwNmMwXHUwNmMxXDVSKlwyXHUwNmMxXHUwNmMyIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlw1VCtcMlx1MDZjMlx1MDZjOFw3IVwyXDJcdTA2YzNcdTA2YzRc N0BcMlwyXHUwNmM0XHUwNmM1IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3XGJcMlwy XHUwNmM1XHUwNmM2XDVcdTAwZDJqXDJcdTA2YzZcdTA2YzdcNyFcMlwyXHUwNmM3IikNCj4gPg0K PiA+ICsNCj4gYnVmLndyaXRlKCJcdTA2YzlcM1wyXDJcMlx1MDZjOFx1MDZjM1wzXDJcMlwyXHUw NmM4XHUwNmM5XDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNmM5XHUw NmNiXDNcMlwyXDJcdTA2Y2FcdTA2Y2NcNVx1MDBjYWZcMlx1MDZjYlx1MDZjYSIpDQo+ID4NCj4g PiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA2Y2JcdTA2Y2NcM1wyXDJcMlx1MDZjY1x1MDZj ZFwzXDJcMlwyXHUwNmNkIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNmNlXDVc dTAwYjRbXDJcdTA2Y2VcdTA2Y2ZcN1w2MVwyXDJcdTA2Y2ZcdTA2ZDBcNw0KPiAiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1MDZkMFx1MDBkMVwzXDJcMlwyXHUwNmQxXHUwNmQ2 XDVcdTAwY2VoXDJcdTA2ZDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNmQzXDco XDJcMlx1MDZkM1x1MDZkNVw1XHUwMGNlaFwyXHUwNmQ0XHUwNmQyXDNcMlwyIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlwyXHUwNmQ1XHUwNmQ4XDNcMlwyXDJcdTA2ZDZcdTA2ZDRcM1wy XDJcMlx1MDZkNlx1MDZkNyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1 MDZkN1x1MDBkM1wzXDJcMlwyXHUwNmQ4XHUwNmQ2XDNcMlwyXDJcdTA2ZDkiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXHUwNmRjXDVcdTAwZDZsXDJcdTA2ZGFcdTA2ZGNcNVx1MDBkY29c Mlx1MDZkYlx1MDZkOVwzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1 MDZkYlx1MDZkYVwzXDJcMlwyXHUwNmRjXHUwMGQ1XDNcMlwyXDJcdTA2ZGRcdTA2ZGUiDQo+ID4g KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdmXDJcMlx1MDZkZVx1MDZkZlw1UClcMlx1 MDZkZlx1MDZlNVw3IVwyXDJcdTA2ZTBcdTA2ZTEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53 cml0ZSgiXDdAXDJcMlx1MDZlMVx1MDZlMlw3XGJcMlwyXHUwNmUyXHUwNmUzXDVcdTAwZDhtXDJc dTA2ZTMiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDZlNFw3IVwyXDJcdTA2 ZTRcdTA2ZTZcM1wyXDJcMlx1MDZlNVx1MDZlMFwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlx1MDZlNVx1MDZlNlwzXDJcMlwyXHUwNmU2XHUwNmViXDNcMlwyXDJcdTA2ZTdc dTA2ZThcNyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJ0XDJcMlx1MDZlOFx1MDZlOVw3 XGJcMlwyXHUwNmU5XHUwNmVhXDdcdTAwZmFcMlwyXHUwNmVhIikNCj4gPg0KPiA+ICsNCj4gYnVm LndyaXRlKCJcdTA2ZWNcNyFcMlwyXHUwNmViXHUwNmU3XDNcMlwyXDJcdTA2ZWJcdTA2ZWNcM1wy XDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA2ZWNcdTA2ZWRcM1wyXDJcMlx1 MDZlZFx1MDZlZVw3aFwyXDJcdTA2ZWVcdTA2ZWZcNyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0 ZSgiXGJcMlwyXHUwNmVmXHUwNmYwXDdcdTAwZmFcMlwyXHUwNmYwXHUwNmYxXDchXDJcMlx1MDZm MSIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlx1MDZmMlw3aVwyXDJcdTA2ZjJcdTA2 ZjNcN1xiXDJcMlx1MDZmM1x1MDZmNFw3XHUwMGZhIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlwyXDJcdTA2ZjRcdTA2ZjVcNyFcMlwyXHUwNmY1XHUwNmY2XDVcdTAwYjRbXDJcdTA2ZjZc dTA2ZjciKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcN2dcMlwyXHUwNmY3XHUwNmY4 XDcNCj4gPiBcMlwyXHUwNmY4XHUwMGQ3XDNcMlwyXDJcdTA2ZjlcdTA2ZmUiKQ0KPiA+DQo+ID4g Kw0KPiBidWYud3JpdGUoIlw1XHUwMGRhblwyXHUwNmZhXHUwNmZiXDcoXDJcMlx1MDZmYlx1MDZm ZFw1XHUwMGRhblwyIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTA2ZmNcdTA2ZmFcM1wy XDJcMlx1MDZmZFx1MDcwMFwzXDJcMlwyXHUwNmZlXHUwNmZjXDMiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXDJcMlwyXHUwNmZlXHUwNmZmXDNcMlwyXDJcdTA2ZmZcdTAwZDlcM1wyXDJc Mlx1MDcwMFx1MDZmZSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA3MDFc dTA3MDVcN1x1MDBmYVwyXDJcdTA3MDJcdTA3MDVcN1wxM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwNzAzXHUwNzA1XDVWLFwyXHUwNzA0XHUwNzAxXDNcMlwyXDJcdTA3MDRc dTA3MDJcM1wyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTA3MDRcdTA3MDNc M1wyXDJcMlx1MDcwNVx1MDBkYlwzXDJcMlwyXHUwNzA2XHUwNzA3IikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlw3ZFwyXDJcdTA3MDdcdTA3MDhcNVApXDJcdTA3MDhcdTA3MGVcNyFcMlwy XHUwNzA5XHUwNzBhIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3QFwyXDJcdTA3 MGFcdTA3MGJcN1xiXDJcMlx1MDcwYlx1MDcwY1w1XHUwMGRlcFwyXHUwNzBjIikNCj4gPg0KPiA+ ICsNCj4gYnVmLndyaXRlKCJcdTA3MGRcNyFcMlwyXHUwNzBkXHUwNzBmXDNcMlwyXDJcdTA3MGVc dTA3MDlcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA3MGVcdTA3MGZc M1wyXDJcMlx1MDcwZlx1MDcxNFwzXDJcMlwyXHUwNzEwXHUwNzExXDciKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgidFwyXDJcdTA3MTFcdTA3MTJcN1xiXDJcMlx1MDcxMlx1MDcxM1w3XHUw MGZhXDJcMlx1MDcxMyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzE1XDchXDJcMlx1 MDcxNFx1MDcxMFwzXDJcMlwyXHUwNzE0XHUwNzE1XDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwNzE1XHUwNzE2XDNcMlwyXDJcdTA3MTZcdTA3MTdcN2hcMlwyXHUwNzE3 XHUwNzE4XDciKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXGJcMlwyXHUwNzE4XHUwNzE5 XDdcdTAwZmFcMlwyXHUwNzE5XHUwNzFhXDchXDJcMlx1MDcxYSIpDQo+ID4NCj4gPiArDQo+IGJ1 Zi53cml0ZSgiXHUwNzFiXDdpXDJcMlx1MDcxYlx1MDcxY1w3XGJcMlwyXHUwNzFjXHUwNzFkXDdc dTAwZmEiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTA3MWRcdTA3MjJcNyFcMlwy XHUwNzFlXHUwNzFmXDdqXDJcMlx1MDcxZlx1MDcyMCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcN1xiXDJcMlx1MDcyMFx1MDcyMVw3XHUwMGZhXDJcMlx1MDcyMVx1MDcyM1w3IVwy XDJcdTA3MjIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNzFlXDNcMlwyXDJcdTA3 MjJcdTA3MjNcM1wyXDJcMlx1MDcyM1x1MDcyNFwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlx1MDcyNFx1MDcyNVw1XHUwMGI0W1wyXHUwNzI1XHUwNzI2XDdlXDJcMlx1MDcy Nlx1MDcyNyIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlw3DQo+ID4gXDJcMlx1MDcy N1x1MDBkZFwzXDJcMlwyXHUwNzI4XHUwNzJkXDVcdTAwZTBxXDJcdTA3MjkiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXHUwNzJhXDcoXDJcMlx1MDcyYVx1MDcyY1w1XHUwMGUwcVwyXHUw NzJiXHUwNzI5XDNcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXHUwNzJjXHUw NzJmXDNcMlwyXDJcdTA3MmRcdTA3MmJcM1wyXDJcMlx1MDcyZFx1MDcyZSIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDcyZVx1MDBkZlwzXDJcMlwyXHUwNzJmXHUwNzJk XDNcMlwyXDJcdTA3MzAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNzMzXDdcdTAw ZmFcMlwyXHUwNzMxXHUwNzMzXDVWLFwyXHUwNzMyXHUwNzMwXDNcMlwyIikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlwyXHUwNzMyXHUwNzMxXDNcMlwyXDJcdTA3MzNcdTAwZTFcM1wyXDJc Mlx1MDczNFx1MDczNSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcN1w2M1wyXDJc dTA3MzVcdTA3MzZcNVApXDJcdTA3MzZcdTA3M2JcNyFcMlwyXHUwNzM3XHUwNzM4IikNCj4gPg0K PiA+ICsNCj4gYnVmLndyaXRlKCJcN1w2NFwyXDJcdTA3MzhcdTA3MzlcN1xiXDJcMlx1MDczOVx1 MDczYVw3XHUwMGZhXDJcMiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzNhXHUwNzNj XDchXDJcMlx1MDczYlx1MDczN1wzXDJcMlwyXHUwNzNiXHUwNzNjXDMiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwNzNjXHUwNzQyXDNcMlwyXDJcdTA3M2RcdTA3M2Vc N0BcMlwyXHUwNzNlXHUwNzNmIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3XGJcMlwy XHUwNzNmXHUwNzQwXDVcdTAwZTRzXDJcdTA3NDBcdTA3NDFcNyFcMlwyXHUwNzQxIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDc0M1wzXDJcMlwyXHUwNzQyXHUwNzNkXDNcMlwyXDJc dTA3NDJcdTA3NDNcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA3NDNc dTA3NDRcM1wyXDJcMlx1MDc0NFx1MDc0NVw1XHUwMGI0W1wyXHUwNzQ1XHUwNzQ2IikNCj4gPg0K PiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDdcNjVcMlwyXHUwNzQ2XHUwNzQ3XDcNCj4gPiBcMlwy XHUwNzQ3XHUwMGUzXDNcMlwyXDJcdTA3NDgiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XHUwNzRkXDVcdTAwZTZ0XDJcdTA3NDlcdTA3NGFcNyhcMlwyXHUwNzRhXHUwNzRjXDVcdTAwZTYi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgidFwyXHUwNzRiXHUwNzQ5XDNcMlwyXDJcdTA3 NGNcdTA3NGZcM1wyXDJcMlx1MDc0ZFx1MDc0YiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcM1wyXDJcMlx1MDc0ZFx1MDc0ZVwzXDJcMlwyXHUwNzRlXHUwMGU1XDNcMlwyXDJcdTA3NGYi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNzRkXDNcMlwyXDJcdTA3NTBcdTA3 NTVcN1x1MDBmYVwyXDJcdTA3NTFcdTA3NTVcN1x1MDBjMCINCj4gPiApDQo+ID4NCj4gPiArDQo+ ID4NCj4gYnVmLndyaXRlKCJcMlwyXHUwNzUyXHUwNzU1XDdcdTAwYzFcMlwyXHUwNzUzXHUwNzU1 XDVWLFwyXHUwNzU0XHUwNzUwIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwz XDJcMlwyXHUwNzU0XHUwNzUxXDNcMlwyXDJcdTA3NTRcdTA3NTJcM1wyXDJcMlx1MDc1NCIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA3NTNcM1wyXDJcMlx1MDc1NVx1MDBlN1wzXDJc MlwyXHUwNzU2XHUwN2IxXDdBXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA3 NTdcdTA3NThcNVApXDJcdTA3NThcdTA3NWVcNyFcMlwyXHUwNzU5XHUwNzVhXDdAXDIiKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcdTA3NWFcdTA3NWJcN1xiXDJcMlx1MDc1Ylx1 MDc1Y1w1XHUwMGVjd1wyXHUwNzVjXHUwNzVkIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gYnVmLndy aXRlKCJcNyFcMlwyXHUwNzVkXHUwNzVmXDNcMlwyXDJcdTA3NWVcdTA3NTlcM1wyXDJcMlx1MDc1 ZSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA3NWZcM1wyXDJcMlx1MDc1Zlx1MDc2 MFwzXDJcMlwyXHUwNzYwXHUwNzYxXDVcdTAwYjQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiW1wyXHUwNzYxXHUwN2IyXDNcMlwyXDJcdTA3NjJcdTA3NjNcN0NcMlwyXHUwNzYzXHUwNzY0 IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3XHUwMDhmXDJcMlx1MDc2NFx1MDc2NVw3 XGJcMlwyXHUwNzY1XHUwNzY2XDdcdTAwZmJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcMlx1MDc2Nlx1MDc2N1w3XDM0XDJcMlx1MDc2N1x1MDc2OFw3XHUwMGZiXDJcMlx1MDc2OCIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA3NjlcNyFcMlwyXHUwNzY5XHUwNzZhXDdc NjJcMlwyXHUwNzZhXHUwNzZiXDdcYlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHUwNzZiXHUwNzZjXDdcdTAwZWNcMlwyXHUwNzZjXHUwNzZkXDdcMzBcMlwyXHUwNzZkXHUw NzZlIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3XHUwMGZhXDJcMlx1MDc2ZVx1 MDc2Zlw3XDMxXDJcMlx1MDc2Zlx1MDc3MFw3IVwyXDJcdTA3NzAiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwNzcxXDc9XDJcMlx1MDc3MVx1MDc3Mlw3XGJcMlwyXHUwNzcyXHUwNzcz XDdcdTAwZWMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1MDc3M1x1MDc3NFw3 XDMwXDJcMlx1MDc3NFx1MDc3NVw3XHUwMGZhXDJcMlx1MDc3NSIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcdTA3NzZcN1wzMVwyXDJcdTA3NzZcdTA3NzdcNyFcMlwyXHUwNzc3XHUwNzc4 XDVcdTAwZWEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgidlwyXHUwNzc4XHUwNzc5 XDdEXDJcMlx1MDc3OVx1MDc3YVw3XHUwMDhmXDJcMlx1MDc3YVx1MDc3Yg0KPiA+ICIpDQo+ID4N Cj4gPiArDQo+IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA3N2JcdTA3N2NcN1x1MDBmYlwyXDJcdTA3 N2NcdTA3N2RcN1wzNFwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNzdkXHUw NzdlXDdcdTAwZmJcMlwyXHUwNzdlXHUwNzdmXDchXDJcMlx1MDc3Zlx1MDc4MCIpDQo+ID4NCj4g PiArDQo+IGJ1Zi53cml0ZSgiXDdcNjJcMlwyXHUwNzgwXHUwNzgxXDdcYlwyXDJcdTA3ODFcdTA3 ODJcN1x1MDBlY1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwNzgyXHUw NzgzXDdcMzBcMlwyXHUwNzgzXHUwNzg0XDdcdTAwZmFcMlwyXHUwNzg0XHUwNzg1IikNCj4gPg0K PiA+ICsNCj4gYnVmLndyaXRlKCJcN1wzMVwyXDJcdTA3ODVcdTA3ODZcNyFcMlwyXHUwNzg2XHUw Nzg3XDc9XDJcMlx1MDc4NyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA3ODhcN1xi XDJcMlx1MDc4OFx1MDc4OVw3XHUwMGVjXDJcMlx1MDc4OVx1MDc4YVw3XDMwIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTA3OGFcdTA3OGJcN1x1MDBmYVwyXDJcdTA3OGJcdTA3 OGNcN1wzMVwyXDJcdTA3OGMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNzhkXDch XDJcMlx1MDc4ZFx1MDc4ZVw1XHUwMGVhdlwyXHUwNzhlXHUwNzhmXDdFXDIiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcdTA3OGZcdTA3OTBcN1x1MDA4ZlwyXDJcdTA3OTBcdTA3 OTFcN1xiXDJcMlx1MDc5MVx1MDc5MiINCj4gPiApDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgi XDdcdTAwZmJcMlwyXHUwNzkyXHUwNzkzXDdcMzRcMlwyXHUwNzkzXHUwNzk0XDdcdTAwZmIiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1MDc5NFx1MDc5NVw3IVwyXDJcdTA3OTVc dTA3OTZcN1w2MlwyXDJcdTA3OTZcdTA3OTciKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlw3 XGJcMlwyXHUwNzk3XHUwNzk4XDdcdTAwZWNcMlwyXHUwNzk4XHUwNzk5XDdcMzBcMlwyIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDc5OVx1MDc5YVw3XHUwMGZhXDJcMlx1MDc5 YVx1MDc5Ylw3XDMxXDJcMlx1MDc5Ylx1MDc5YyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcNyFcMlwyXHUwNzljXHUwNzlkXDc9XDJcMlx1MDc5ZFx1MDc5ZVw3XGJcMlwyXHUwNzll XHUwNzlmIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcN1x1MDBlY1wyXDJcdTA3OWZcdTA3 YTBcN1wzMFwyXDJcdTA3YTBcdTA3YTFcN1x1MDBmYSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcMlwyXHUwN2ExXHUwN2EyXDdcMzFcMlwyXHUwN2EyXHUwN2EzXDchXDJcMlx1MDdhM1x1 MDdhOSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcNVx1MDBlYXZcMlx1MDdhNFx1 MDdhNVw3QFwyXDJcdTA3YTVcdTA3YTZcN1xiXDJcMlx1MDdhNiIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcdTA3YTdcNVx1MDBlY3dcMlx1MDdhN1x1MDdhOFw3IVwyXDJcdTA3YThcdTA3 YWFcM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcdTA3YTlcdTA3YTRcM1wy XDJcMlx1MDdhOVx1MDdhYVwzXDJcMlwyXHUwN2FhXHUwN2FlIikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlwzXDJcMlwyXHUwN2FiXHUwN2FkXDVcdTAwOGNHXDJcdTA3YWNcdTA3YWJc M1wyXDJcMlx1MDdhZCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA3YjBcM1wyXDJc Mlx1MDdhZVx1MDdhY1wzXDJcMlwyXHUwN2FlXHUwN2FmXDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXHUwN2FmXHUwN2IyXDNcMlwyXDJcdTA3YjBcdTA3YWVcM1wyXDJcMlx1 MDdiMVx1MDc1N1wzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDdi MVx1MDc2MlwzXDJcMlwyXHUwN2IyXHUwN2IzXDNcMlwyXDJcdTA3YjNcdTA3YjQiDQo+ID4gKQ0K PiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcN0JcMlwyXHUwN2I0XHUwN2I1XDcNCj4gPiBc MlwyXHUwN2I1XHUwMGU5XDNcMlwyXDJcdTA3YjZcdTA3YjciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ IGJ1Zi53cml0ZSgiXDdgXDJcMlx1MDdiN1x1MDdiOFw3XGJcMlwyXHUwN2I4XHUwN2I5XDdcdTAw ZmFcMlwyXHUwN2I5IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDdiYVw3IVwy XDJcdTA3YmFcdTA3YmJcN2FcMlwyXHUwN2JiXHUwN2JjXDdcYlwyXDJcdTA3YmMiDQo+ID4gKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwN2JkXDdcdTAwZmFcMlwyXHUwN2JkXHUwN2My XDchXDJcMlx1MDdiZVx1MDdiZlw3YlwyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo IlwyXHUwN2JmXHUwN2MwXDdcYlwyXDJcdTA3YzBcdTA3YzFcN1x1MDBmYVwyXDJcdTA3YzFcdTA3 YzMiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlw3IVwyXDJcdTA3YzJcdTA3YmVcM1wyXDJc Mlx1MDdjMlx1MDdjM1wzXDJcMlwyXHUwN2MzIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJc dTA3YzhcM1wyXDJcMlx1MDdjNFx1MDdjNVw3Y1wyXDJcdTA3YzVcdTA3YzZcN1xiXDJcMiIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA3YzZcdTA3YzdcN1x1MDBmYVwyXDJcdTA3Yzdc dTA3YzlcNyFcMlwyXHUwN2M4XHUwN2M0IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wy XDJcMlx1MDdjOFx1MDdjOVwzXDJcMlwyXHUwN2M5XHUwMGViXDNcMlwyXDJcdTA3Y2EiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwN2NmXDVcdTAwZWV4XDJcdTA3Y2JcdTA3Y2NcNyhc MlwyXHUwN2NjXHUwN2NlXDVcdTAwZWUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgieFwy XHUwN2NkXHUwN2NiXDNcMlwyXDJcdTA3Y2VcdTA3ZDFcM1wyXDJcMlx1MDdjZlx1MDdjZCIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDdjZlx1MDdkMFwzXDJcMlwyXHUw N2QwXHUwMGVkXDNcMlwyXDJcdTA3ZDEiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDdj ZlwzXDJcMlwyXHUwN2QyXHUwN2QzXHRcNlwyXDJcdTA3ZDNcdTAwZWZcM1wyXDJcMiIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA3ZDRcdTA4MmZcN0ZcMlwyXHUwN2Q1XHUwN2Q2XDVQ KVwyXHUwN2Q2XHUwN2RjXDchXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcdTA3 ZDdcdTA3ZDhcN0BcMlwyXHUwN2Q4XHUwN2Q5XDdcYlwyXDJcdTA3ZDlcdTA3ZGEiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDVcdTAwZjR7XDJcdTA3ZGFcdTA3ZGJcNyFcMlwyXHUwN2Ri XHUwN2RkXDNcMlwyXDJcdTA3ZGMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwN2Q3 XDNcMlwyXDJcdTA3ZGNcdTA3ZGRcM1wyXDJcMlx1MDdkZFx1MDdkZVwzXDJcMlwyIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDdkZVx1MDdkZlw1XHUwMGI0W1wyXHUwN2RmXHUwODMw XDNcMlwyXDJcdTA3ZTBcdTA3ZTEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDdI XDJcMlx1MDdlMVx1MDdlMlw3XHUwMDhmXDJcMlx1MDdlMlx1MDdlM1w3XGJcMlwyXHUwN2UzIikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDdlNFw3XHUwMGZiXDJcMlx1MDdlNFx1MDdl NVw3XDM0XDJcMlx1MDdlNVx1MDdlNlw3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1 MDBmYlwyXDJcdTA3ZTZcdTA3ZTdcNyFcMlwyXHUwN2U3XHUwN2U4XDdcNjJcMlwyXHUwN2U4IikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDdlOVw3XGJcMlwyXHUwN2U5XHUwN2VhXDdc dTAwZWNcMlwyXHUwN2VhXHUwN2ViXDdcMzAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XDJcMlx1MDdlYlx1MDdlY1w3XHUwMGZhXDJcMlx1MDdlY1x1MDdlZFw3XDMxXDJcMlx1MDdlZCIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA3ZWVcNyFcMlwyXHUwN2VlXHUwN2Vm XDc9XDJcMlx1MDdlZlx1MDdmMFw3XGJcMlwyXHUwN2YwIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXHUwN2YxXDdcdTAwZWNcMlwyXHUwN2YxXHUwN2YyXDdcMzBcMlwyXHUwN2YyXHUw N2YzXDciKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMGZhXDJcMlx1MDdmM1x1MDdm NFw3XDMxXDJcMlx1MDdmNFx1MDdmNVw3IVwyXDJcdTA3ZjUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXHUwN2Y2XDVcdTAwZjJ6XDJcdTA3ZjZcdTA3ZjdcN0lcMlwyXHUwN2Y3XHUwN2Y4 XDdcdTAwOGYiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTA3ZjhcdTA3ZjlcN1xi XDJcMlx1MDdmOVx1MDdmYVw3XHUwMGZiXDJcMlx1MDdmYSIpDQo+ID4NCj4gPiArICAgICAgICBi dWYud3JpdGUoIlx1MDdmYlw3XDM0XDJcMlx1MDdmYlx1MDdmY1w3XHUwMGZiXDJcMlx1MDdmY1x1 MDdmZFw3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIiFcMlwyXHUwN2ZkXHUwN2ZlXDdc NjJcMlwyXHUwN2ZlXHUwN2ZmXDdcYlwyXDJcdTA3ZmZcdTA4MDAiKQ0KPiA+DQo+ID4gKw0KPiBi dWYud3JpdGUoIlw3XHUwMGVjXDJcMlx1MDgwMFx1MDgwMVw3XDMwXDJcMlx1MDgwMVx1MDgwMlw3 XHUwMGZhIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTA4MDJcdTA4MDNcN1wz MVwyXDJcdTA4MDNcdTA4MDRcNyFcMlwyXHUwODA0XHUwODA1IikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlw3PVwyXDJcdTA4MDVcdTA4MDZcN1xiXDJcMlx1MDgwNlx1MDgwN1w3XHUw MGVjXDJcMlx1MDgwNyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA4MDhcN1wzMFwy XDJcdTA4MDhcdTA4MDlcN1x1MDBmYVwyXDJcdTA4MDlcdTA4MGFcNyIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcMzFcMlwyXHUwODBhXHUwODBiXDchXDJcMlx1MDgwYlx1MDgwY1w1XHUw MGYyelwyXHUwODBjIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTA4MGRcN0pcMlwyXHUw ODBkXHUwODBlXDdcdTAwOGZcMlwyXHUwODBlXHUwODBmXDdcYiIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcMlwyXHUwODBmXHUwODEwXDdcdTAwZmJcMlwyXHUwODEwXHUwODExXDdcMzRc MlwyXHUwODExIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDgxMlw3XHUwMGZiXDJc Mlx1MDgxMlx1MDgxM1w3IVwyXDJcdTA4MTNcdTA4MTRcN1w2MiIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcMlwyXHUwODE0XHUwODE1XDdcYlwyXDJcdTA4MTVcdTA4MTZcN1x1MDBlY1wy XDJcdTA4MTYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwODE3XDdcMzBcMlwyXHUw ODE3XHUwODE4XDdcdTAwZmFcMlwyXHUwODE4XHUwODE5XDciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ IGJ1Zi53cml0ZSgiXDMxXDJcMlx1MDgxOVx1MDgxYVw3IVwyXDJcdTA4MWFcdTA4MWJcNz1cMlwy XHUwODFiXHUwODFjIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcN1xiXDJcMlx1MDgxY1x1 MDgxZFw3XHUwMGVjXDJcMlx1MDgxZFx1MDgxZVw3XDMwXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gYnVmLndyaXRlKCJcdTA4MWVcdTA4MWZcN1x1MDBmYVwyXDJcdTA4MWZcdTA4MjBcN1wzMVwy XDJcdTA4MjBcdTA4MjEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDchXDJcMlx1MDgy MVx1MDgyN1w1XHUwMGYyelwyXHUwODIyXHUwODIzXDdAXDJcMlx1MDgyMyIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcdTA4MjRcN1xiXDJcMlx1MDgyNFx1MDgyNVw1XHUwMGY0e1wyXHUw ODI1XHUwODI2XDchXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcdTA4MjZcdTA4 MjhcM1wyXDJcMlx1MDgyN1x1MDgyMlwzXDJcMlwyXHUwODI3XHUwODI4IikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwODI4XHUwODJjXDNcMlwyXDJcdTA4MjlcdTA4 MmJcNVx1MDA4Y0dcMlx1MDgyYSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA4Mjlc M1wyXDJcMlx1MDgyYlx1MDgyZVwzXDJcMlwyXHUwODJjXHUwODJhXDNcMlwyXDIiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwODJjXHUwODJkXDNcMlwyXDJcdTA4MmRcdTA4MzBcM1wy XDJcMlx1MDgyZVx1MDgyY1wzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJc Mlx1MDgyZlx1MDdkNVwzXDJcMlwyXHUwODJmXHUwN2UwXDNcMlwyXDJcdTA4MzBcdTA4MzEiKQ0K PiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDgzMVx1MDgzMlw3R1wyXDJc dTA4MzJcdTA4MzNcNw0KPiA+IFwyXDJcdTA4MzNcdTAwZjEiKQ0KPiA+DQo+ID4gKw0KPiBidWYu d3JpdGUoIlwzXDJcMlwyXHUwODM0XHUwODM1XDdgXDJcMlx1MDgzNVx1MDgzNlw3XGJcMlwyXHUw ODM2IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDgzN1w3XHUwMGZhXDJcMlx1MDgz N1x1MDgzOFw3IVwyXDJcdTA4MzhcdTA4MzlcN2FcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJcMlx1MDgzOVx1MDgzYVw3XGJcMlwyXHUwODNhXHUwODNiXDdcdTAwZmFcMlwyXHUw ODNiXHUwODQwIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3IVwyXDJc dTA4M2NcdTA4M2RcN2JcMlwyXHUwODNkXHUwODNlXDdcYlwyXDJcdTA4M2VcdTA4M2YiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdcdTAwZmFcMlwyXHUwODNmXHUwODQxXDchXDJcMlx1 MDg0MFx1MDgzY1wzXDJcMlwyXHUwODQwIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTA4 NDFcM1wyXDJcMlx1MDg0MVx1MDg0NlwzXDJcMlwyXHUwODQyXHUwODQzXDdjXDJcMiIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA4NDNcdTA4NDRcN1xiXDJcMlx1MDg0NFx1MDg0 NVw3XHUwMGZhXDJcMlx1MDg0NVx1MDg0NyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDch XDJcMlx1MDg0Nlx1MDg0MlwzXDJcMlwyXHUwODQ2XHUwODQ3XDNcMlwyXDJcdTA4NDciKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMGYzXDNcMlwyXDJcdTA4NDhcdTA4NGRcNVx1MDBm NnxcMlx1MDg0OVx1MDg0YVw3KFwyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwy XHUwODRhXHUwODRjXDVcdTAwZjZ8XDJcdTA4NGJcdTA4NDlcM1wyXDJcMlx1MDg0Y1x1MDg0ZiIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDg0ZFx1MDg0YlwzXDJcMlwy XHUwODRkXHUwODRlXDNcMlwyXDJcdTA4NGUiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1 MDBmNVwzXDJcMlwyXHUwODRmXHUwODRkXDNcMlwyXDJcdTA4NTBcdTA4NTFcdFw3XDJcMiIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA4NTFcdTAwZjdcM1wyXDJcMlx1MDg1Mlx1MDg1 N1w1XHUwMTA0XHUwMDgzXDJcdTA4NTMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUw ODU3XDVcdTAwZmNcMTc3XDJcdTA4NTRcdTA4NTdcNVx1MDBmZVx1MDA4MFwyXHUwODU1IikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDg1N1w1XHUwMTBlXHUwMDg4XDJcdTA4NTZcdTA4 NTJcM1wyXDJcMlx1MDg1Nlx1MDg1MyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wy XDJcMlx1MDg1Nlx1MDg1NFwzXDJcMlwyXHUwODU2XHUwODU1XDNcMlwyXDJcdTA4NTciKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMGY5XDNcMlwyXDJcdTA4NThcdTA4NTlcNVx1MDEw NFx1MDA4M1wyXHUwODU5XHUwODVhIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw1 XHUwMTBhXHUwMDg2XDJcdTA4NWFcdTA4NWJcNVx1MDEwY1x1MDA4N1wyXHUwODViXHUwODVjIikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw1XHUwMTBlXHUwMDg4XDJcdTA4NWNcdTAwZmJc M1wyXDJcMlx1MDg1ZFx1MDg1ZVw1XHUwMTBhIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo Ilx1MDA4NlwyXHUwODVlXHUwMGZkXDNcMlwyXDJcdTA4NWZcdTA4NjBcNVx1MDEwY1x1MDA4NyIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlx1MDg2MFx1MDBmZlwzXDJcMlwyXHUwODYx XHUwODY4XDVwOVwyXHUwODYyXHUwODY4XDUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHUwMDg4RVwyXHUwODYzXHUwODY4XDVcdTAwZjh9XDJcdTA4NjRcdTA4NjhcNVx1MDExOFx1 MDA4ZA0KPiA+ICIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlx1MDg2NVx1MDg2 OFw1XHUwMTFjXHUwMDhmXDJcdTA4NjZcdTA4NjhcNVx1MDExMFx1MDA4OSIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcMlx1MDg2N1x1MDg2MVwzXDJcMlwyXHUwODY3XHUwODYyXDNcMlwy XDJcdTA4NjdcdTA4NjMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA4 NjdcdTA4NjRcM1wyXDJcMlx1MDg2N1x1MDg2NVwzXDJcMlwyXHUwODY3IikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlx1MDg2NlwzXDJcMlwyXHUwODY4XHUwMTAxXDNcMlwyXDJcdTA4 NjlcdTA4NmVcNXA5XDJcdTA4NmEiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHUwODZlXDVcdTAwODhFXDJcdTA4NmJcdTA4NmVcNVx1MDExOFx1MDA4ZFwyXHUwODZjXHUw ODZlIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw1XHUwMTEwXHUwMDg5XDJc dTA4NmRcdTA4NjlcM1wyXDJcMlx1MDg2ZFx1MDg2YVwzXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcMlx1MDg2ZFx1MDg2YlwzXDJcMlwyXHUwODZkXHUwODZjXDNcMlwyXDJcdTA4 NmVcdTAxMDMiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwODZmXHUwODcw XDdsXDJcMlx1MDg3MFx1MDg3MVw1XHUwMTI0XHUwMDkzIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXDJcdTA4NzFcdTA4NzVcNw0KPiA+IFwyXDJcdTA4NzJcdTA4NzRcNVx1MDEwMFx1 MDA4MVwyXHUwODczIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDg3MlwzXDJcMlwy XHUwODc0XHUwODc3XDNcMlwyXDJcdTA4NzVcdTA4NzNcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcdTA4NzVcdTA4NzZcM1wyXDJcMlx1MDg3Nlx1MDg3OFwzXDJcMlwyXHUw ODc3XHUwODc1XDMiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJcdTA4Nzhc dTA4NzlcN3NcMlwyXHUwODc5XHUwODdhXDcNCj4gPiBcMlwyXHUwODdhXHUwMTA1IikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwODdiXHUwODg4XDdrXDJcMlx1MDg3 Y1x1MDg3ZFw3QFwyXDJcdTA4N2RcdTA4N2UNCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXDdcYlwyXDJcdTA4N2VcdTA4ODNcNVx1MDA5ZVBcMlx1MDg3Zlx1MDg4MFw3KFwyXDJc dTA4ODAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwODgyXDVcdTAwOWVQXDJcdTA4 ODFcdTA4N2ZcM1wyXDJcMlx1MDg4Mlx1MDg4NVwzXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXDJcMlx1MDg4M1x1MDg4MVwzXDJcMlwyXHUwODgzXHUwODg0XDNcMlwyXDJcdTA4ODRc dTA4ODYiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwODg1XHUwODgzXDNc MlwyXDJcdTA4ODZcdTA4ODdcNyFcMlwyXHUwODg3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlx1MDg4OVwzXDJcMlwyXHUwODg4XHUwODdjXDNcMlwyXDJcdTA4ODhcdTA4ODlcM1wyXDJc MiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA4ODlcdTA4OGFcM1wyXDJcMlx1MDg4 YVx1MDg4Ylw1XHUwMTI0XHUwMDkzXDJcdTA4OGIiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndy aXRlKCJcdTA4OGNcNw0KPiA+IFwyXDJcdTA4OGNcdTAxMDdcM1wyXDJcMlx1MDg4ZFx1MDg5YVw3 S1wyXDJcdTA4OGUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwODhmXDdAXDJcMlx1 MDg4Zlx1MDg5MFw3XGJcMlwyXHUwODkwXHUwODk1XDVcdTAwOWUiKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiUFwyXHUwODkxXHUwODkyXDcoXDJcMlx1MDg5Mlx1MDg5NFw1XHUwMDll UFwyXHUwODkzXHUwODkxIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUw ODk0XHUwODk3XDNcMlwyXDJcdTA4OTVcdTA4OTNcM1wyXDJcMlx1MDg5NSIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcdTA4OTZcM1wyXDJcMlx1MDg5Nlx1MDg5OFwzXDJcMlwyXHUwODk3 XHUwODk1XDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwODk4XHUwODk5 XDchXDJcMlx1MDg5OVx1MDg5YlwzXDJcMlwyXHUwODlhXHUwODhlXDMiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwODlhXHUwODliXDNcMlwyXDJcdTA4OWJcdTA4OWNc M1wyXDJcMlx1MDg5Y1x1MDg5ZCIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlw1XHUw MTI0XHUwMDkzXDJcdTA4OWRcdTA4OWVcNw0KPiA+IFwyXDJcdTA4OWVcdTAxMDlcM1wyXDIiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcdTA4OWZcdTA4YWNcN2tcMlwyXHUwOGEwXHUw OGExXDdAXDJcMlx1MDhhMVx1MDhhMlw3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlxi XDJcMlx1MDhhMlx1MDhhN1w1XHUwMDllUFwyXHUwOGEzXHUwOGE0XDcoXDJcMlx1MDhhNCIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA4YTZcNVx1MDA5ZVBcMlx1MDhhNVx1MDhhM1wz XDJcMlwyXHUwOGE2XHUwOGE5XDNcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwy XHUwOGE3XHUwOGE1XDNcMlwyXDJcdTA4YTdcdTA4YThcM1wyXDJcMlx1MDhhOFx1MDhhYSIpDQo+ ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA4YTlcdTA4YTdcM1wyXDJcMlx1MDhh YVx1MDhhYlw3IVwyXDJcdTA4YWIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwOGFk XDNcMlwyXDJcdTA4YWNcdTA4YTBcM1wyXDJcMlx1MDhhY1x1MDhhZFwzXDJcMlwyIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDhhZFx1MDhhZVwzXDJcMlwyXHUwOGFlXHUwOGFmXDVc dTAxMjRcdTAwOTNcMlx1MDhhZiIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlx1MDhi M1w3DQo+ID4gXDJcMlx1MDhiMFx1MDhiMlw1XHUwMTAwXHUwMDgxXDJcdTA4YjFcdTA4YjAiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA4YjJcdTA4YjVcM1wyXDJcMlx1 MDhiM1x1MDhiMVwzXDJcMlwyXHUwOGIzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1 MDhiNFwzXDJcMlwyXHUwOGI0XHUwOGI2XDNcMlwyXDJcdTA4YjVcdTA4YjNcM1wyXDJcMiIpDQo+ ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlx1MDhiNlx1MDhiN1w3c1wyXDJcdTA4YjdcdTA4 YjhcNw0KPiA+IFwyXDJcdTA4YjhcdTAxMGJcM1wyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlwyXDJcdTA4YjlcdTA4YzZcN0tcMlwyXHUwOGJhXHUwOGJiXDdAXDJcMlx1MDhiYlx1MDhi YyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcN1xiXDJcMlx1MDhiY1x1MDhjMVw1XHUw MDllUFwyXHUwOGJkXHUwOGJlXDcoXDJcMlx1MDhiZSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0 ZSgiXHUwOGMwXDVcdTAwOWVQXDJcdTA4YmZcdTA4YmRcM1wyXDJcMlx1MDhjMFx1MDhjM1wzXDIi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1MDhjMVx1MDhiZlwzXDJcMlwyXHUw OGMxXHUwOGMyXDNcMlwyXDJcdTA4YzJcdTA4YzQiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUo IlwzXDJcMlwyXHUwOGMzXHUwOGMxXDNcMlwyXDJcdTA4YzRcdTA4YzVcNyFcMlwyXHUwOGM1IikN Cj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTA4YzdcM1wyXDJcMlx1MDhjNlx1MDhiYVwzXDJc MlwyXHUwOGM2XHUwOGM3XDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUw OGM3XHUwOGM4XDNcMlwyXDJcdTA4YzhcdTA4YzlcNVx1MDEyNFx1MDA5M1wyXHUwOGM5IikNCj4g Pg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwOGNkXDcNCj4gXDJcMlx1MDhjYVx1MDhjY1w1 XHUwMTAwXHUwMDgxXDJcdTA4Y2JcdTA4Y2EiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwz XDJcMlwyXHUwOGNjXHUwOGNmXDNcMlwyXDJcdTA4Y2RcdTA4Y2JcM1wyXDJcMlx1MDhjZCIpDQo+ ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwOGNlXDNcMlwyXDJcdTA4Y2VcdTA4ZDBcM1wyXDJc Mlx1MDhjZlx1MDhjZFwzXDJcMlwyIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUw OGQwXHUwOGQxXDdzXDJcMlx1MDhkMVx1MDhkMlw3DQo+ID4gXDJcMlx1MDhkMlx1MDEwZFwzXDIi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDhkM1x1MDhkNFw3cFwyXDJc dTA4ZDRcdTA4ZDVcN1w2MlwyXDJcdTA4ZDVcdTA4ZDYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXDdcYlwyXDJcdTA4ZDZcdTA4ZDdcN1x1MDBlY1wyXDJcdTA4ZDdcdTA4ZDhcN1wzMFwy XDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwOGQ4XHUwOGQ5XDdcdTAwZmFc MlwyXHUwOGQ5XHUwOGRhXDdcMzFcMlwyXHUwOGRhXHUwOGU3IikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlw3IVwyXDJcdTA4ZGJcdTA4ZGNcN0BcMlwyXHUwOGRjXHUwOGRkXDdcYlwy XDJcdTA4ZGRcdTA4ZTINCj4gPiAiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlw1XHUwMDll UFwyXHUwOGRlXHUwOGRmXDcoXDJcMlx1MDhkZlx1MDhlMVw1XHUwMDllUFwyIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlx1MDhlMFx1MDhkZVwzXDJcMlwyXHUwOGUxXHUwOGU0XDNcMlwy XDJcdTA4ZTJcdTA4ZTBcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJc dTA4ZTJcdTA4ZTNcM1wyXDJcMlx1MDhlM1x1MDhlNVwzXDJcMlwyXHUwOGU0XHUwOGUyIg0KPiA+ ICkNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDhlNVx1MDhlNlw3IVwyXDJc dTA4ZTZcdTA4ZThcM1wyXDJcMlx1MDhlNyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc dTA4ZGJcM1wyXDJcMlx1MDhlN1x1MDhlOFwzXDJcMlwyXHUwOGU4XHUwOGU5XDNcMlwyXDIiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwOGU5XHUwOGVhXDVcdTAxMjRcdTAwOTNcMlx1 MDhlYVx1MDhlYlw3c1wyXDJcdTA4ZWIiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJc dTA4ZWNcNw0KPiBcMlwyXHUwOGVjXHUwMTBmXDNcMlwyXDJcdTA4ZWRcdTA4ZjFcNVx1MDExMiIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAwOGFcMlx1MDhlZVx1MDhmMVw1XHUw MTE0XHUwMDhiXDJcdTA4ZWZcdTA4ZjFcNVx1MDExNiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcdTAwOGNcMlx1MDhmMFx1MDhlZFwzXDJcMlwyXHUwOGYwXHUwOGVlXDNcMlwyXDJcdTA4 ZjAiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDhlZlwzXDJcMlwyXHUwOGYxXHUwMTEx XDNcMlwyXDJcdTA4ZjJcdTA4ZjNcN21cMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo Ilx1MDhmM1x1MDhmNFw3XHUwMDk2XDJcMlx1MDhmNFx1MDhmNVw3XGJcMlwyXHUwOGY1XHUwOGY2 IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3XHUwMGZhXDJcMlx1MDhmNlx1MDhmN1w3 IVwyXDJcdTA4ZjdcdTA4ZjhcN3RcMlwyXHUwOGY4IikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53 cml0ZSgiXHUwOGY5XDdcYlwyXDJcdTA4ZjlcdTA4ZmFcN1x1MDBmYVwyXDJcdTA4ZmFcdTA4ZmJc NyAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1MDhmYlx1MDExM1wzXDJcMlwy XHUwOGZjXHUwOGZkXDdOXDJcMlx1MDhmZFx1MDhmZSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcNz1cMlwyXHUwOGZlXHUwOGZmXDdcYlwyXDJcdTA4ZmZcdTA5MDBcN1x1MDBlY1wyXDJc dTA5MDAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwOTAxXDdcMzBcMlwyXHUwOTAx XHUwOTAyXDdcdTAwZmFcMlwyXHUwOTAyXHUwOTAzXDciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXDMxXDJcMlx1MDkwM1x1MDkwNFw3IVwyXDJcdTA5MDRcdTA5MDVcNz5cMlwyXHUw OTA1XHUwOTA2IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcN1xiXDJcMlx1MDkwNlx1MDkw N1w3XHUwMGVjXDJcMlx1MDkwN1x1MDkwOFw3XDMwXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4g YnVmLndyaXRlKCJcdTA5MDhcdTA5MDlcN1x1MDBmYVwyXDJcdTA5MDlcdTA5MGFcN1wzMVwyXDJc dTA5MGFcdTA5MTEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDchXDJcMlx1MDkw Ylx1MDkwY1w3PlwyXDJcdTA5MGNcdTA5MGRcN1xiXDJcMlx1MDkwZFx1MDkwZSIpDQo+ID4NCj4g PiArDQo+IGJ1Zi53cml0ZSgiXDdcdTAwZWNcMlwyXHUwOTBlXHUwOTBmXDdcMzBcMlwyXHUwOTBm XHUwOTEwXDdcdTAwZmEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDkx MFx1MDkxMlw3XDMxXDJcMlx1MDkxMVx1MDkwYlwzXDJcMlwyXHUwOTExXHUwOTEyIikNCj4gPg0K PiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA5MTJcdTA5MTNcM1wyXDJcMlx1MDkx M1x1MDkxNFw3DQo+IFwyXDJcdTA5MTQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUw MTE1XDNcMlwyXDJcdTA5MTVcdTA5MTZcdFxiXDJcMlx1MDkxNlx1MDkxN1w3XHUwMDg3IikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTA5MTdcdTA5MThcNyFcMlwyXHUwOTE4XHUw OTE5XDcvXDJcMlx1MDkxOVx1MDkxYSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcN1xi XDJcMlx1MDkxYVx1MDkxYlw3XHUwMGZhXDJcMlx1MDkxYlx1MDkxY1w3IVwyXDJcdTA5MWMiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwOTFkXDdcNjJcMlwyXHUwOTFkXHUwOTFlXDdc YlwyXDJcdTA5MWVcdTA5MWZcN1x1MDBlYyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc MlwyXHUwOTFmXHUwOTIwXDdcMzBcMlwyXHUwOTIwXHUwOTIxXDdcdTAwZmFcMlwyXHUwOTIxIikN Cj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTA5MjJcN1wzMVwyXDJcdTA5MjJcdTA5MjNcNyFc MlwyXHUwOTIzXHUwOTI0XDc9XDJcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJc dTA5MjRcdTA5MjVcN1xiXDJcMlx1MDkyNVx1MDkyNlw3XHUwMGVjXDJcMlx1MDkyNlx1MDkyNyIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcN1wzMFwyXDJcdTA5MjdcdTA5MjhcN1x1MDBm YVwyXDJcdTA5MjhcdTA5MzRcN1wzMVwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XHUwOTI5XHUwOTJhXDchXDJcMlx1MDkyYVx1MDkyYlw3QFwyXDJcdTA5MmJcdTA5MmNcN1xiIikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcdTA5MmNcdTA5MzFcNVx1MDA5ZVBc Mlx1MDkyZFx1MDkyZVw3KFwyXDJcdTA5MmVcdTA5MzAiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+IGJ1Zi53cml0ZSgiXDVcdTAwOWVQXDJcdTA5MmZcdTA5MmRcM1wyXDJcMlx1MDkzMFx1MDkz M1wzXDJcMlwyXHUwOTMxIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDkyZlwzXDJc MlwyXHUwOTMxXHUwOTMyXDNcMlwyXDJcdTA5MzJcdTA5MzVcM1wyXDJcMiIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcdTA5MzNcdTA5MzFcM1wyXDJcMlx1MDkzNFx1MDkyOVwzXDJcMlwy XHUwOTM0XHUwOTM1XDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUw OTM1XHUwOTNhXDNcMlwyXDJcdTA5MzZcdTA5MzdcNyFcMlwyXHUwOTM3XHUwOTM4IikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3dFwyXDJcdTA5MzhcdTA5MzlcN1xiXDJcMlx1MDkz OVx1MDkzYlw3XHUwMGZhXDJcMlx1MDkzYSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc dTA5MzZcM1wyXDJcMlx1MDkzYVx1MDkzYlwzXDJcMlwyXHUwOTNiXHUwOTNjXDNcMlwyXDIiKQ0K PiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA5M2NcdTA5M2RcNw0KPiBcMlwyXHUwOTNk XHUwMTE3XDNcMlwyXDJcdTA5M2VcdTA5M2ZcNyIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3Jp dGUoIkxcMlwyXHUwOTNmXHUwOTQwXDdcdTAwZmFcMlwyXHUwOTQwXHUwOTQxXDcNCj4gXDJcMlx1 MDk0MSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxMTlcM1wyXDJcMlx1MDk0Mlx1 MDk0NFw3XHUwMDg4XDJcMlx1MDk0M1x1MDk0NVw3ISIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcMlwyXHUwOTQ0XHUwOTQzXDNcMlwyXDJcdTA5NDRcdTA5NDVcM1wyXDJcMlx1MDk0NVx1 MDk0NiIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA5NDZcdTA5NDdcNy5c MlwyXHUwOTQ3XHUwOTQ4XDdcYlwyXDJcdTA5NDgiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXHUwOTQ5XDdcdTAwZWNcMlwyXHUwOTQ5XHUwOTRhXDdcMzBcMlwyXHUwOTRhXHUwOTRiXDci KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMGZhXDJcMlx1MDk0Ylx1MDk0Y1w3XDMx XDJcMlx1MDk0Y1x1MDk1N1w3IVwyXDJcdTA5NGQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXHUwOTRlXDdcdTAwOGRcMlwyXHUwOTRlXHUwOTRmXDdcdTAwZmFcMlwyXHUwOTRmXHUwOTUw IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3IVwyXDJcdTA5NTBcdTA5NTFcN1x1MDA4 OVwyXDJcdTA5NTFcdTA5NTJcdFx0XDJcMlx1MDk1MiIpDQo+ID4NCj4gPiArICAgICAgICBidWYu d3JpdGUoIlx1MDk1OFw3DQo+ID4gXDJcMlx1MDk1M1x1MDk1NFw3TVwyXDJcdTA5NTRcdTA5NTVc N1xiXDJcMlx1MDk1NSIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlx1MDk1Nlw3XHUw MGZhXDJcMlx1MDk1Nlx1MDk1OFw3DQo+IFwyXDJcdTA5NTdcdTA5NGRcM1wyIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTA5NTdcdTA5NTNcM1wyXDJcMlx1MDk1OFx1MDExYlwz XDJcMlwyXHUwOTU5XHUwOTVhIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw3XHUw MGE3XDJcMlx1MDk1YVx1MDk1Ylw3W1wyXDJcdTA5NWJcdTA5NWNcN1xiXDJcMlx1MDk1YyIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA5YTRcNUxcJ1wyXHUwOTVkXHUwOTVlXDchXDJc Mlx1MDk1ZVx1MDk1Zlw3XHUwMGE5XDIiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwyXHUw OTVmXHUwOTljXDdcYlwyXDJcdTA5NjBcdTA5NjRcN1NcMlwyXHUwOTYxXHUwOTYyIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlw3XDMyXDJcMlx1MDk2Mlx1MDk2M1w3XHUwMGZhXDJcMlx1 MDk2M1x1MDk2NVw3XDMzXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA5NjRc dTA5NjFcM1wyXDJcMlx1MDk2NFx1MDk2NVwzXDJcMlwyXHUwOTY1XHUwOTlkXDMiKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwOTY2XHUwOTZhXDdUXDJcMlx1MDk2N1x1 MDk2OFw3XDMyXDJcMlx1MDk2OFx1MDk2OSINCj4gPiApDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0 ZSgiXDdcdTAwZmFcMlwyXHUwOTY5XHUwOTZiXDdcMzNcMlwyXHUwOTZhXHUwOTY3XDNcMlwyXDIi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwOTZhXHUwOTZiXDNcMlwyXDJcdTA5NmJc dTA5OWRcM1wyXDJcMlx1MDk2Y1x1MDk3MFw3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo IlVcMlwyXHUwOTZkXHUwOTZlXDdcMzJcMlwyXHUwOTZlXHUwOTZmXDdcdTAwZmFcMlwyXHUwOTZm IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTA5NzFcN1wzM1wyXDJcdTA5NzBcdTA5NmRc M1wyXDJcMlx1MDk3MFx1MDk3MVwzXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc Mlx1MDk3MVx1MDk5ZFwzXDJcMlwyXHUwOTcyXHUwOTc2XDdWXDJcMlx1MDk3M1x1MDk3NCIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcN1wzMlwyXDJcdTA5NzRcdTA5NzVcN1x1MDBmYVwy XDJcdTA5NzVcdTA5NzdcN1wzM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUw OTc2XHUwOTczXDNcMlwyXDJcdTA5NzZcdTA5NzdcM1wyXDJcMlx1MDk3N1x1MDk5ZFwzIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDk3OFx1MDk3Y1w3UlwyXDJcdTA5 NzlcdTA5N2FcN1wzMlwyXDJcdTA5N2FcdTA5N2IiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiBidWYu d3JpdGUoIlw3XHUwMGZhXDJcMlx1MDk3Ylx1MDk3ZFw3XDMzXDJcMlx1MDk3Y1x1MDk3OVwzXDJc MlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDk3Y1x1MDk3ZFwzXDJcMlwyXHUw OTdkXHUwOTlkXDNcMlwyXDJcdTA5N2VcdTA5ODJcNyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVm LndyaXRlKCJXXDJcMlx1MDk3Zlx1MDk4MFw3XDMyXDJcMlx1MDk4MFx1MDk4MVw3XHUwMGZhXDJc Mlx1MDk4MSIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwOTgzXDdcMzNcMlwyXHUwOTgy XHUwOTdmXDNcMlwyXDJcdTA5ODJcdTA5ODNcM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXDJcdTA5ODNcdTA5OWRcM1wyXDJcMlx1MDk4NFx1MDk4OFw3WFwyXDJcdTA5ODVcdTA5 ODYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdcMzJcMlwyXHUwOTg2XHUwOTg3XDdc dTAwZmFcMlwyXHUwOTg3XHUwOTg5XDdcMzNcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlx1MDk4OFx1MDk4NVwzXDJcMlwyXHUwOTg4XHUwOTg5XDNcMlwyXDJcdTA5ODlcdTA5OWRc MyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTA5OGFcdTA5OGVcN1lc MlwyXHUwOThiXHUwOThjXDdcMzJcMlwyXHUwOThjXHUwOThkIg0KPiA+ICkNCj4gPg0KPiA+ICsN Cj4gYnVmLndyaXRlKCJcN1x1MDBmYVwyXDJcdTA5OGRcdTA5OGZcN1wzM1wyXDJcdTA5OGVcdTA5 OGJcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA5OGVcdTA5OGZcM1wy XDJcMlx1MDk4Zlx1MDk5ZFwzXDJcMlwyXHUwOTkwXHUwOTk0XDciKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiWlwyXDJcdTA5OTFcdTA5OTJcN1wzMlwyXDJcdTA5OTJcdTA5OTNcN1x1MDBm YVwyXDJcdTA5OTMiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDk5NVw3XDMzXDJcMlx1 MDk5NFx1MDk5MVwzXDJcMlwyXHUwOTk0XHUwOTk1XDNcMlwyIikNCj4gPg0KPiA+ICsNCj4gPg0K PiBidWYud3JpdGUoIlwyXHUwOTk1XHUwOTlkXDNcMlwyXDJcdTA5OTZcdTA5OWFcN1x1MDBmYlwy XDJcdTA5OTdcdTA5OTgiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdcMzJc MlwyXHUwOTk4XHUwOTk5XDdcdTAwZmFcMlwyXHUwOTk5XHUwOTliXDdcMzNcMlwyIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDk5YVx1MDk5N1wzXDJcMlwyXHUwOTlhXHUwOTliXDNc MlwyXDJcdTA5OWJcdTA5OWRcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwy XDJcdTA5OWNcdTA5NjBcM1wyXDJcMlx1MDk5Y1x1MDk2NlwzXDJcMlwyXHUwOTljXHUwOTZjIikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwOTljXHUwOTcyXDNcMlwyXDJc dTA5OWNcdTA5NzhcM1wyXDJcMlx1MDk5YyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc dTA5N2VcM1wyXDJcMlx1MDk5Y1x1MDk4NFwzXDJcMlwyXHUwOTljXHUwOThhXDNcMlwyXDIiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwOTljXHUwOTkwXDNcMlwyXDJcdTA5OWNcdTA5 OTZcM1wyXDJcMlx1MDk5ZFx1MDlhMVwzIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwy XDJcMlx1MDk5ZVx1MDlhMFw1XHUwMTFlXHUwMDkwXDJcdTA5OWZcdTA5OWVcM1wyXDJcMiIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA5YTBcdTA5YTNcM1wyXDJcMlx1MDlhMVx1MDk5 ZlwzXDJcMlwyXHUwOWExXHUwOWEyXDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XDJcMlwyXHUwOWEyXHUwOWE1XDNcMlwyXDJcdTA5YTNcdTA5YTFcM1wyXDJcMlx1MDlhNFx1MDk1 ZCINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDlhNFx1MDlh NVwzXDJcMlwyXHUwOWE1XHUwOWFlXDNcMlwyXDJcdTA5YTYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXHUwOWFhXDchXDJcMlx1MDlhN1x1MDlhOVw1XHUwMTFjXHUwMDhmXDJcdTA5YThc dTA5YTciKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA5YTlcdTA5YWNc M1wyXDJcMlx1MDlhYVx1MDlhOFwzXDJcMlwyXHUwOWFhIikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlx1MDlhYlwzXDJcMlwyXHUwOWFiXHUwOWFkXDNcMlwyXDJcdTA5YWNcdTA5YWFcM1wy XDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA5YWRcdTA5YWZcN1x1MDBhOFwy XDJcdTA5YWVcdTA5YTZcM1wyXDJcMlx1MDlhZVx1MDlhZiIpDQo+ID4NCj4gPiArICAgICAgICBi dWYud3JpdGUoIlwzXDJcMlwyXHUwOWFmXHUwOWIwXDNcMlwyXDJcdTA5YjBcdTA5YjFcNw0KPiBc MlwyXHUwOWIxIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDExZFwzXDJcMlwyXHUw OWIyXHUwOWIzXDchXDJcMlx1MDliM1x1MDliN1w3XHUwMGFhIikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlwyXDJcdTA5YjRcdTA5YjVcN1wzMlwyXDJcdTA5YjVcdTA5YjZcN1x1MDBmYVwy XDJcdTA5YjYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwOWI4XDdcMzNcMlwyXHUw OWI3XHUwOWI0XDNcMlwyXDJcdTA5YjdcdTA5YjhcM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXDJcdTA5YjhcdTA5YmRcM1wyXDJcMlx1MDliOVx1MDliYVw3XDM0XDJcMlx1MDli YVx1MDliYyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcNVx1MDE1ZVx1MDBiMFwyXHUw OWJiXHUwOWI5XDNcMlwyXDJcdTA5YmNcdTA5YmZcM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXDJcdTA5YmRcdTA5YmJcM1wyXDJcMlx1MDliZFx1MDliZVwzXDJcMlwyXHUwOWJl XHUwOWMwIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDliZlx1MDliZFwz XDJcMlwyXHUwOWMwXHUwOWMxXDdcYlwyXDJcdTA5YzEiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXHUwOWMyXDdcdTAwZmFcMlwyXHUwOWMyXHUwMTFmXDNcMlwyXDJcdTA5YzNcdTA5 YzRcNVx1MDEyMiIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlx1MDA5MlwyXHUwOWM0 XHUwOWM1XDcNCj4gXDJcMlx1MDljNVx1MDEyMVwzXDJcMlwyXHUwOWM2IikNCj4gPg0KPiA+ICsN Cj4gPg0KPiBidWYud3JpdGUoIlx1MDljN1w3XHUwMGFiXDJcMlx1MDljN1x1MDEyM1wzXDJcMlwy XHUwOWM4XHUwOWNkXDVcdTAxMjgiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0 ZSgiXHUwMDk1XDJcdTA5YzlcdTA5Y2FcN1x1MDBkY1wyXDJcdTA5Y2FcdTA5Y2NcNVx1MDEyOFx1 MDA5NSINCj4gPiApDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTA5Y2JcdTA5YzlcM1wy XDJcMlx1MDljY1x1MDljZlwzXDJcMlwyXHUwOWNkXHUwOWNiIikNCj4gPg0KPiA+ICsNCj4gYnVm LndyaXRlKCJcM1wyXDJcMlx1MDljZFx1MDljZVwzXDJcMlwyXHUwOWNlXHUwMTI1XDNcMlwyXDJc dTA5Y2YiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwOWNkXDNcMlwyXDJcdTA5ZDBc dTA5ZDVcNVx1MDEyOFx1MDA5NVwyXHUwOWQxXHUwOWQyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlw3XHUwMGRjXDJcMlx1MDlkMlx1MDlkNFw1XHUwMTI4XHUwMDk1XDJcdTA5ZDNcdTA5 ZDFcMyIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTA5ZDRcdTA5ZDdc M1wyXDJcMlx1MDlkNVx1MDlkM1wzXDJcMlwyXHUwOWQ1XHUwOWQ2Ig0KPiA+ICkNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwOWQ2XHUwMTI3XDNcMlwyXDJcdTA5ZDdcdTA5 ZDVcM1wyXDJcMlx1MDlkOCIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTA5ZGRc NVx1MDEyYVx1MDA5NlwyXHUwOWQ5XHUwOWRhXDdcdTAwZGJcMlwyXHUwOWRhXHUwOWQNCj4gPiBj IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw1XHUwMTJhXHUwMDk2XDJcdTA5ZGJcdTA5 ZDlcM1wyXDJcMlx1MDlkY1x1MDlkZlwzXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcMlx1MDlkZFx1MDlkYlwzXDJcMlwyXHUwOWRkXHUwOWRlXDNcMlwyXDJcdTA5ZGVcdTAxMjki KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA5ZGZcdTA5ZGRcM1wyXDJc Mlx1MDllMFx1MDllNVw1XHUwMTJjXHUwMDk3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo IlwyXHUwOWUxXHUwOWUyXDcoXDJcMlx1MDllMlx1MDllNFw1XHUwMTJjXHUwMDk3XDJcdTA5ZTMi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwOWUxXDNcMlwyXDJcdTA5ZTRcdTA5ZTdc M1wyXDJcMlx1MDllNVx1MDllM1wzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo Ilx1MDllNVx1MDllNlwzXDJcMlwyXHUwOWU2XHUwMTJiXDNcMlwyXDJcdTA5ZTdcdTA5ZTVcMyIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXDJcdTA5ZThcdTA5ZWRcNVx1MDEyZVx1 MDA5OFwyXHUwOWU5XHUwOWVhXDcpXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc dTA5ZWFcdTA5ZWNcNVx1MDEyZVx1MDA5OFwyXHUwOWViXHUwOWU5XDNcMlwyXDJcdTA5ZWMiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwOWVmXDNcMlwyXDJcdTA5ZWRcdTA5ZWJcM1wy XDJcMlx1MDllZFx1MDllZVwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1 MDllZVx1MDEyZFwzXDJcMlwyXHUwOWVmXHUwOWVkXDNcMlwyXDJcdTA5ZjBcdTA5ZjRcNSIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxMzJcdTAwOWFcMlx1MDlmMVx1MDlmM1w1XHUw MTMwXHUwMDk5XDJcdTA5ZjJcdTA5ZjEiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJc MlwyXHUwOWYzXHUwOWY2XDNcMlwyXDJcdTA5ZjRcdTA5ZjJcM1wyXDJcMlx1MDlmNCIpDQo+ID4N Cj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwOWY1XDNcMlwyXDJcdTA5ZjVcdTAxMmZcM1wyXDJcMlx1 MDlmNlx1MDlmNFwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTA5ZjdcdTA5 ZjhcN1wiXDJcMlx1MDlmOFx1MDlmY1w1XHUwMTMyXHUwMDlhXDJcdTA5ZjkiKQ0KPiA+DQo+ID4g Kw0KPiBidWYud3JpdGUoIlx1MDlmYVw3I1wyXDJcdTA5ZmFcdTA5ZmNcNVx1MDEzMlx1MDA5YVwy XHUwOWZiXHUwOWY3IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDlmYlx1 MDlmOVwzXDJcMlwyXHUwOWZjXHUwMTMxXDNcMlwyXDJcdTA5ZmQiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwYTAxXDVcdTAxMzZcdTAwOWNcMlx1MDlmZVx1MGEwMFw1XHUwMTM0XHUw MDliXDJcdTA5ZmYiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlx1MDlmZVwzXDJcMlwyXHUw YTAwXHUwYTAzXDNcMlwyXDJcdTBhMDFcdTA5ZmZcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcdTBhMDFcdTBhMDJcM1wyXDJcMlx1MGEwMlx1MDEzM1wzXDJcMlwyXHUwYTAz XHUwYTAxXDMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwYTA0XHUwYTA1 XDclXDJcMlx1MGEwNVx1MGEwZFw1XHUwMTM2XHUwMDljXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXHUwYTA2XHUwYTA3XDckXDJcMlx1MGEwN1x1MGEwZFw1XHUwMTM2XHUwMDljXDJc dTBhMDgiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwYTA5XDdcJ1wyXDJcdTBhMDlc dTBhMGRcNVx1MDEzNlx1MDA5Y1wyXHUwYTBhXHUwYTBiIikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlw3JlwyXDJcdTBhMGJcdTBhMGRcNVx1MDEzNlx1MDA5Y1wyXHUwYTBjXHUwYTA0XDNc MlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXHUwYTBjXHUwYTA2XDNcMlwyXDJc dTBhMGNcdTBhMDhcM1wyXDJcMlx1MGEwY1x1MGEwYSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcM1wyXDJcMlx1MGEwZFx1MDEzNVwzXDJcMlwyXHUwYTBlXHUwYTEyXDVcdTAxM2FcdTAw OWUiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcdTBhMGZcdTBhMTFcNVx1MDEzOFx1 MDA5ZFwyXHUwYTEwXHUwYTBmXDNcMlwyXDJcdTBhMTEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXHUwYTE0XDNcMlwyXDJcdTBhMTJcdTBhMTBcM1wyXDJcMlx1MGExMlx1MGExM1wzXDJc MlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGExM1x1MDEzN1wzXDJcMlwyXHUw YTE0XHUwYTEyXDNcMlwyXDJcdTBhMTVcdTBhMTZcNyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcZlwyXDJcdTBhMTZcdTBhMWFcNVx1MDEzYVx1MDA5ZVwyXHUwYTE3XHUwYTE4XDdcclwy XDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwYTE4XHUwYTFhXDVcdTAxM2FcdTAw OWVcMlx1MGExOVx1MGExNVwzXDJcMlwyXHUwYTE5IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3Jp dGUoIlx1MGExN1wzXDJcMlwyXHUwYTFhXHUwMTM5XDNcMlwyXDJcdTBhMWJcdTBhMWZcNVx1MDEz ZSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAwYTBcMlx1MGExY1x1MGExZVw1XHUw MTNjXHUwMDlmXDJcdTBhMWRcdTBhMWNcM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXDJcdTBhMWVcdTBhMjFcM1wyXDJcMlx1MGExZlx1MGExZFwzXDJcMlwyXHUwYTFmXHUwYTIw IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwYTIwXHUwMTNiXDNcMlwy XDJcdTBhMjFcdTBhMWZcM1wyXDJcMlx1MGEyMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcdTBhMjNcN1wxNlwyXDJcdTBhMjNcdTBhMjdcNVx1MDEzZVx1MDBhMFwyXHUwYTI0XHUwYTI1 IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3XDM1XDJcMlx1MGEyNVx1MGEyN1w1XHUw MTNlXHUwMGEwXDJcdTBhMjZcdTBhMjJcM1wyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo IlwyXDJcdTBhMjZcdTBhMjRcM1wyXDJcMlx1MGEyN1x1MDEzZFwzXDJcMlwyXHUwYTI4XHUwYTJj IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlw1XHUwMTQyXHUwMGEyXDJcdTBhMjlc dTBhMmJcNVx1MDE0MFx1MDBhMVwyXHUwYTJhXHUwYTI5IikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlwzXDJcMlwyXHUwYTJiXHUwYTJlXDNcMlwyXDJcdTBhMmNcdTBhMmFcM1wyXDJcMlx1 MGEyYyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBhMmRcM1wyXDJcMlx1MGEyZFx1 MDEzZlwzXDJcMlwyXHUwYTJlXHUwYTJjXDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXHUwYTJmXHUwYTMwXDdcMTdcMlwyXHUwYTMwXHUwYTM2XDVcdTAxNDJcdTAwYTJcMlx1 MGEzMSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBhMzJcN1wzN1wyXDJcdTBhMzJc dTBhMzZcNVx1MDE0Mlx1MDBhMlwyXHUwYTMzXHUwYTM0IikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlw3XDIwXDJcMlx1MGEzNFx1MGEzNlw1XHUwMTQyXHUwMGEyXDJcdTBhMzVcdTBhMmZc M1wyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTBhMzVcdTBhMzFcM1wyXDJc Mlx1MGEzNVx1MGEzM1wzXDJcMlwyXHUwYTM2XHUwMTQxIikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlwzXDJcMlwyXHUwYTM3XHUwYTM5XDVcdTAxNDRcdTAwYTNcMlx1MGEzOFx1MGEzN1wz XDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlx1MGEzOVx1MGEzY1wzXDJcMlwy XHUwYTNhXHUwYTM4XDNcMlwyXDJcdTBhM2FcdTBhM2IiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXDNcMlwyXDJcdTBhM2JcdTBhM2RcM1wyXDJcMlx1MGEzY1x1MGEzYVwzXDJcMlwyXHUw YTNkIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGEzZVw1XHUwMTQ2XHUwMGE0XDJc dTBhM2VcdTAxNDNcM1wyXDJcMlx1MGEzZlx1MGE0MCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcN1wzMFwyXDJcdTBhNDBcdTBhNDFcdFxuXDJcMlx1MGE0MVx1MGE0Mlw3XDMxXDJcMlx1 MGE0MiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAxNDVcM1wyXDJcMlx1MGE0M1x1 MGE0Zlw1XHUwMTQ4XHUwMGE1XDJcdTBhNDRcdTBhNGYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXDVcdTAxNGFcdTAwYTZcMlx1MGE0NVx1MGE0Zlw1XHUwMTRjXHUwMGE3XDJcdTBh NDZcdTBhNGYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDVcdTAxNGVcdTAwYThc Mlx1MGE0N1x1MGE0Zlw1XHUwMTUwXHUwMGE5XDJcdTBhNDhcdTBhNGYiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IGJ1Zi53cml0ZSgiXDVcdTAxNmVcdTAwYjhcMlx1MGE0OVx1MGE0Zlw1XHUwMTcwXHUw MGI5XDJcdTBhNGFcdTBhNGYiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDVcdTAx ODZcdTAwYzRcMlx1MGE0Ylx1MGE0Zlw1XHUwMTk2XHUwMGNjXDJcdTBhNGNcdTBhNGQiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdcdTAwZGRcMlwyXHUwYTRkXHUwYTRmXDVcdTAxNDZc dTAwYTRcMlx1MGE0ZVx1MGE0M1wzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwy XDJcMlx1MGE0ZVx1MGE0NFwzXDJcMlwyXHUwYTRlXHUwYTQ1XDNcMlwyXDJcdTBhNGVcdTBhNDYi DQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBhNGVcdTBhNDdc M1wyXDJcMlx1MGE0ZVx1MGE0OFwzXDJcMlwyXHUwYTRlIikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlx1MGE0OVwzXDJcMlwyXHUwYTRlXHUwYTRhXDNcMlwyXDJcdTBhNGVcdTBhNGJcM1wy XDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBhNGVcdTBhNGNcM1wyXDJcMlx1 MGE0Zlx1MDE0N1wzXDJcMlwyXHUwYTUwXHUwYTUxXDciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXHUwMGU3XDJcMlx1MGE1MVx1MGE1Mlw3XDMwXDJcMlx1MGE1Mlx1MGE1M1w1XHUw MTI2XHUwMDk0IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXHUwYTUzXHUwYTU0XDch XDJcMlx1MGE1NFx1MGE1NVw1XHUwMTI2XHUwMDk0XDJcdTBhNTUiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwYTU2XDdcMzFcMlwyXHUwYTU2XHUwMTQ5XDNcMlwyXDJcdTBhNTdcdTBh NThcN1x1MDBlNSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcMlwyXHUwYTU4XHUwYTU5 XDdcMzBcMlwyXHUwYTU5XHUwYTVhXDVcdTAxMjZcdTAwOTRcMiIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcdTBhNWFcdTBhNWJcNyFcMlwyXHUwYTViXHUwYTVjXDVcdTAxMjZcdTAwOTRc Mlx1MGE1YyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBhNWRcN1wzMVwyXDJcdTBh NWRcdTAxNGJcM1wyXDJcMlx1MGE1ZVx1MGE1Zlw3XHUwMGU2IikNCj4gPg0KPiA+ICsNCj4gPiBi dWYud3JpdGUoIlwyXDJcdTBhNWZcdTBhNjBcN1wzMFwyXDJcdTBhNjBcdTBhNjFcNVx1MDEyNlx1 MDA5NFwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGE2MVx1MGE2Mlw3IVwyXDJc dTBhNjJcdTBhNjNcNVx1MDEyNlx1MDA5NFwyXHUwYTYzIikNCj4gPg0KPiA+ICsNCj4gYnVmLndy aXRlKCJcdTBhNjRcNyFcMlwyXHUwYTY0XHUwYTY1XDVMXCdcMlx1MGE2NVx1MGE2Nlw3XDMxXDJc MiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBhNjZcdTAxNGRcM1wyXDJcMlx1MGE2 N1x1MGE2OFw3XDMwXDJcMlx1MGE2OFx1MGE2OSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcNVx1MDEyNlx1MDA5NFwyXHUwYTY5XHUwYTZhXDdcMzFcMlwyXHUwYTZhXHUwMTRmXDNcMiIp DQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXHUwYTZiXHUwYTc3XDVcdTAxNTJc dTAwYWFcMlx1MGE2Y1x1MGE3N1w1XHUwMTU0XHUwMGFiDQo+ID4gIikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlwyXHUwYTZkXHUwYTc3XDVcdTAxNTZcdTAwYWNcMlx1MGE2ZVx1MGE3 N1w1XHUwMTU4XHUwMGFkIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXHUwYTZm XHUwYTc3XDVcdTAxNWFcdTAwYWVcMlx1MGE3MFx1MGE3N1w1XHUwMTYwXHUwMGIxIikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXHUwYTcxXHUwYTc3XDVcdTAxNjJcdTAwYjJcMlx1 MGE3Mlx1MGE3N1w1XHUwMTY0XHUwMGIzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUo IlwyXHUwYTczXHUwYTc3XDVcdTAxNjZcdTAwYjRcMlx1MGE3NFx1MGE3N1w1XHUwMTY4XHUwMGI1 IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXHUwYTc1XHUwYTc3XDVcdTAxNmNc dTAwYjdcMlx1MGE3Nlx1MGE2YlwzXDJcMlwyXHUwYTc2IikNCj4gPg0KPiA+ICsNCj4gPiBidWYu d3JpdGUoIlx1MGE2Y1wzXDJcMlwyXHUwYTc2XHUwYTZkXDNcMlwyXDJcdTBhNzZcdTBhNmVcM1wy XDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBhNzZcdTBhNmZcM1wyXDJcMlx1 MGE3Nlx1MGE3MFwzXDJcMlwyXHUwYTc2XHUwYTcxXDMiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1 Zi53cml0ZSgiXDJcMlwyXHUwYTc2XHUwYTcyXDNcMlwyXDJcdTBhNzZcdTBhNzNcM1wyXDJcMlx1 MGE3Nlx1MGE3NCINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1 MGE3Nlx1MGE3NVwzXDJcMlwyXHUwYTc3XHUwMTUxXDNcMlwyXDJcdTBhNzgiKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwYTc5XDdcdTAwYzdcMlwyXHUwYTc5XHUwMTUzXDNcMlwy XDJcdTBhN2FcdTBhN2JcN1x1MDBjOCINCj4gPiApDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcMlwyXHUwYTdiXHUwYTdjXDdcdTAwYzlcMlwyXHUwYTdjXHUwYTdkXDdcMzBcMlwyXHUwYTdk IikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTBhN2VcN1x1MDBmYVwyXDJcdTBhN2VcdTBh ODlcN1wzMVwyXDJcdTBhN2ZcdTBhODBcNyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc IlwyXDJcdTBhODBcdTBhOGFcN1x1MDBmYVwyXDJcdTBhODFcdTBhODJcNyRcMlwyXHUwYTgyIikN Cj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MGE4YVw3XHUwMGZhXDJcMlx1MGE4M1x1 MGE4NFw3JVwyXDJcdTBhODRcdTBhOGFcN1x1MDBmYSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcMlwyXHUwYTg1XHUwYTg2XDcmXDJcMlx1MGE4Nlx1MGE4YVw3XHUwMGZhXDJcMlx1MGE4 NyIpDQo+ID4NCj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTg4XDdcJ1wyXDJcdTBhODhcdTBhOGFc N1x1MDBmYVwyXDJcdTBhODlcdTBhN2ZcM1wyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo IlwyXDJcdTBhODlcdTBhODFcM1wyXDJcMlx1MGE4OVx1MGE4M1wzXDJcMlwyXHUwYTg5XHUwYTg1 IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwYTg5XHUwYTg3XDNcMlwy XDJcdTBhOGFcdTAxNTVcM1wyXDJcMlx1MGE4YiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndy aXRlKCJcdTBhOGNcN1x1MDBjYVwyXDJcdTBhOGNcdTBhOTdcNVx1MDE1Y1x1MDBhZlwyXHUwYThk XHUwYThlIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3XCJcMlwyXHUwYThl XHUwYTk4XDdcdTAwZmFcMlwyXHUwYThmXHUwYTkwXDckXDJcMlx1MGE5MCIpDQo+ID4NCj4gPiAr DQo+ID4NCj4gYnVmLndyaXRlKCJcdTBhOThcN1x1MDBmYVwyXDJcdTBhOTFcdTBhOTJcNyVcMlwy XHUwYTkyXHUwYTk4XDdcdTAwZmEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1 MGE5M1x1MGE5NFw3JlwyXDJcdTBhOTRcdTBhOThcN1x1MDBmYVwyXDJcdTBhOTUiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwYTk2XDdcJ1wyXDJcdTBhOTZcdTBhOThcN1x1MDBmYVwy XDJcdTBhOTdcdTBhOGRcM1wyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTBh OTdcdTBhOGZcM1wyXDJcMlx1MGE5N1x1MGE5MVwzXDJcMlwyXHUwYTk3XHUwYTkzIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwYTk3XHUwYTk1XDNcMlwyXDJcdTBhOThc dTAxNTdcM1wyXDJcMlx1MGE5OSIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTBh OWFcN1x1MDBjYlwyXDJcdTBhOWFcdTBhYTVcNVx1MDE1Y1x1MDBhZlwyXHUwYTliXHUwYTljIg0K PiA+ICkNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcN1wiXDJcMlx1MGE5Y1x1MGFhNlw1XHUw MTVjXHUwMGFmXDJcdTBhOWRcdTBhOWVcNyRcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcMlx1MGE5ZVx1MGFhNlw1XHUwMTVjXHUwMGFmXDJcdTBhOWZcdTBhYTBcNyVcMlwyXHUwYWEw IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGFhNlw1XHUwMTVjXHUwMGFmXDJcdTBh YTFcdTBhYTJcNyZcMlwyXHUwYWEyXHUwYWE2IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo Ilw1XHUwMTVjXHUwMGFmXDJcdTBhYTNcdTBhYTRcN1wnXDJcMlx1MGFhNFx1MGFhNlw1XHUwMTVj IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDBhZlwyXHUwYWE1XHUwYTliXDNcMlwy XDJcdTBhYTVcdTBhOWRcM1wyXDJcMlx1MGFhNSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcdTBhOWZcM1wyXDJcMlx1MGFhNVx1MGFhMVwzXDJcMlwyXHUwYWE1XHUwYWEzXDNcMlwyXDIi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwYWE2XHUwMTU5XDNcMlwyXDJcdTBh YTdcdTBhYThcN1x1MDBjY1wyXDJcdTBhYThcdTBhYTkiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53 cml0ZSgiXDVcdTAxNWNcdTAwYWZcMlx1MGFhOVx1MGFhYlw3XCJcMlwyXHUwYWFhXHUwYWFjXDdc dTAwZmEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcMlx1MGFhYlx1MGFhYVwzXDJc MlwyXHUwYWFjXHUwYWFkXDNcMlwyXDJcdTBhYWRcdTBhYWIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXDNcMlwyXDJcdTBhYWRcdTBhYWVcM1wyXDJcMlx1MGFhZVx1MDE1YlwzXDJcMlwy XHUwYWFmIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGFiMFw3XHUwMGZiXDJcMlx1 MGFiMFx1MGFiMVw3XDMyXDJcMlx1MGFiMVx1MGFiMlw3IikNCj4gPg0KPiA+ICsNCj4gYnVmLndy aXRlKCJcdTAwZmFcMlwyXHUwYWIyXHUwYWJjXDdcMzNcMlwyXHUwYWIzXHUwYWI4XDdcdTAwZmJc MiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlx1MGFiNFx1MGFiNVw3XDM0XDJc Mlx1MGFiNVx1MGFiN1w1XHUwMTVlXHUwMGIwXDJcdTBhYjYiDQo+ID4gKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXHUwYWI0XDNcMlwyXDJcdTBhYjdcdTBhYmFcM1wyXDJcMlx1MGFiOFx1 MGFiNlwzXDJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGFiOFx1MGFiOVwz XDJcMlwyXHUwYWI5XHUwYWJjXDNcMlwyXDJcdTBhYmFcdTBhYjhcMyIpDQo+ID4NCj4gPiArDQo+ ID4NCj4gYnVmLndyaXRlKCJcMlwyXDJcdTBhYmJcdTBhYWZcM1wyXDJcMlx1MGFiYlx1MGFiM1wz XDJcMlwyXHUwYWJjXHUwMTVkIg0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcM1wy XDJcMlx1MGFiZFx1MGFjMVw3XHUwMGZiXDJcMlx1MGFiZVx1MGFiZlw3XDMyXDJcMiIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBhYmZcdTBhYzBcN1x1MDBmYVwyXDJcdTBhYzBcdTBh YzJcN1wzM1wyXDJcdTBhYzFcdTBhYmUiKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJc MlwyXHUwYWMxXHUwYWMyXDNcMlwyXDJcdTBhYzJcdTAxNWZcM1wyXDJcMlx1MGFjMyIpDQo+ID4N Cj4gPiArDQo+IGJ1Zi53cml0ZSgiXHUwYWM0XDdcdTAwY2RcMlwyXHUwYWM0XHUwYWM1XDdcMzBc MlwyXHUwYWM1XHUwYWM2XHQiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDEzXDJcMlx1 MGFjNlx1MGFjN1w3XDMxXDJcMlx1MGFjN1x1MDE2MVwzXDJcMlwyXHUwYWM4IikNCj4gPg0KPiA+ ICsNCj4gYnVmLndyaXRlKCJcdTBhYzlcN1x1MDBjZVwyXDJcdTBhYzlcdTBhY2FcN1wzMFwyXDJc dTBhY2FcdTBhY2JcNyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAwZmJcMlwyXHUw YWNiXHUwYWNjXDdcMzFcMlwyXHUwYWNjXHUwMTYzXDNcMlwyXDJcdTBhY2QiKQ0KPiA+DQo+ID4g Kw0KPiBidWYud3JpdGUoIlx1MGFjZVw3XHUwMGNmXDJcMlx1MGFjZVx1MGFkNFw3XDMwXDJcMlx1 MGFjZlx1MGFkMFw3IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDBlY1wyXDJcdTBh ZDBcdTBhZDFcN1wzMFwyXDJcdTBhZDFcdTBhZDJcN1x1MDBmYVwyIikNCj4gPg0KPiA+ICsNCj4g PiBidWYud3JpdGUoIlwyXHUwYWQyXHUwYWQ1XDdcMzFcMlwyXHUwYWQzXHUwYWQ1XDdcdTAwZmFc MlwyXHUwYWQ0IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGFjZlwzXDJcMlwyXHUw YWQ0XHUwYWQzXDNcMlwyXDJcdTBhZDVcdTBhZDZcM1wyXDJcMiIpDQo+ID4NCj4gPiArDQo+ID4g YnVmLndyaXRlKCJcdTBhZDZcdTBhZDdcN1wzMVwyXDJcdTBhZDdcdTAxNjVcM1wyXDJcMlx1MGFk OFx1MGFkOSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcN1x1MDBkMFwyXDJcdTBhZDlc dTAxNjdcM1wyXDJcMlx1MGFkYVx1MGFkYlw3XHUwMGQxXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXDJcdTBhZGJcdTBhZGNcN1wzMFwyXDJcdTBhZGNcdTBhZGRcNUxcJ1wyXHUwYWRk XHUwYWRlIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3XDMxXDJcMlx1MGFkZVx1MDE2 OVwzXDJcMlwyXHUwYWRmXHUwYWUwXHRcZlwyXDJcdTBhZTAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXHUwMTZiXDNcMlwyXDJcdTBhZTFcdTBhZTJcN1x1MDBkMlwyXDJcdTBhZTJcdTBh ZTNcN1wzMCIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUoIlwyXDJcdTBhZTNcdTBhZThc NVgtDQo+ID4gXDJcdTBhZTRcdTBhZTVcNyhcMlwyXHUwYWU1XHUwYWU2IikNCj4gPg0KPiA+ICsN Cj4gPiBidWYud3JpdGUoIlw3QFwyXDJcdTBhZTZcdTBhZTdcN1xiXDJcMlx1MGFlN1x1MGFlOVw1 XHUwMTZhXHUwMGI2IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXHUwYWU4XHUwYWU0 XDNcMlwyXDJcdTBhZThcdTBhZTlcM1wyXDJcMlx1MGFlOVx1MGFlYSIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MGFlYVx1MGFlYlw3XDMxXDJcMlx1MGFlYlx1MDE2ZFwz XDJcMlwyXHUwYWVjIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcdTBhZWRcdFxyXDJcMlx1 MGFlZFx1MDE2ZlwzXDJcMlwyXHUwYWVlXHUwYWY5XDVcdTAxNzIiKQ0KPiA+DQo+ID4gKw0KPiA+ IGJ1Zi53cml0ZSgiXHUwMGJhXDJcdTBhZWZcdTBhZjlcNVx1MDE3NFx1MDBiYlwyXHUwYWYwXHUw YWY5XDVcdTAxNzYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMGJjXDJcdTBhZjFc dTBhZjlcNVx1MDE3OFx1MDBiZFwyXHUwYWYyXHUwYWY5XDVcdTAxN2EiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXHUwMGJlXDJcdTBhZjNcdTBhZjlcNVx1MDE3Y1x1MDBiZlwyXHUwYWY0 XHUwYWY5XDVcdTAxN2UiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMGMwXDJcdTBh ZjVcdTBhZjlcNVx1MDE4MFx1MDBjMVwyXHUwYWY2XHUwYWY5XDVcdTAxODIiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXHUwMGMyXDJcdTBhZjdcdTBhZjlcNVx1MDE4NFx1MDBjM1wyXHUw YWY4XHUwYWVlXDNcMlwyIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcMlx1MGFmOFx1MGFl ZlwzXDJcMlwyXHUwYWY4XHUwYWYwXDNcMlwyXDJcdTBhZjhcdTBhZjEiKQ0KPiA+DQo+ID4gKyAg ICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MGFmOFx1MGFmMlwzXDJcMlwyXHUwYWY4XHUwYWYz XDNcMlwyXDJcdTBhZjgiKQ0KPiA+DQo+ID4gKyAgICAgICAgYnVmLndyaXRlKCJcdTBhZjRcM1wy XDJcMlx1MGFmOFx1MGFmNVwzXDJcMlwyXHUwYWY4XHUwYWY2XDNcMlwyXDIiKQ0KPiA+DQo+ID4g Kw0KPiBidWYud3JpdGUoIlx1MGFmOFx1MGFmN1wzXDJcMlwyXHUwYWY5XHUwMTcxXDNcMlwyXDJc dTBhZmFcdTBhZmJcNyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAwZGFcMlwyXHUw YWZiXHUwYWZjXDdcMzBcMlwyXHUwYWZjXHUwYWZkXDVcdTAxMjZcdTAwOTQiKQ0KPiA+DQo+ID4g Kw0KPiBidWYud3JpdGUoIlwyXHUwYWZkXHUwYWZlXDdcMzFcMlwyXHUwYWZlXHUwMTczXDNcMlwy XDJcdTBhZmZcdTBiMDAiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdcdTAwZGZcMlwy XHUwYjAwXHUwYjAxXDdcMzBcMlwyXHUwYjAxXHUwYjAyXDVcdTAxMjYiKQ0KPiA+DQo+ID4gKw0K PiA+IGJ1Zi53cml0ZSgiXHUwMDk0XDJcdTBiMDJcdTBiMDNcN1wzMVwyXDJcdTBiMDNcdTAxNzVc M1wyXDJcMlx1MGIwNCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBiMDVcN1x1MDBl OFwyXDJcdTBiMDVcdTBiMGRcN1wzMFwyXDJcdTBiMDZcdTBiMDdcNyIpDQo+ID4NCj4gPiArDQo+ ID4gYnVmLndyaXRlKCIqXDJcMlx1MGIwN1x1MGIwOFw3XGJcMlwyXHUwYjA4XHUwYjA5XDdcdTAw ZWNcMlwyXHUwYjA5IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGIwYVw3XDMwXDJc Mlx1MGIwYVx1MGIwYlw3XHUwMGZhXDJcMlx1MGIwYlx1MGIwY1w3IikNCj4gPg0KPiA+ICsNCj4g Pg0KPiBidWYud3JpdGUoIlwzMVwyXDJcdTBiMGNcdTBiMGVcNyFcMlwyXHUwYjBkXHUwYjA2XDNc MlwyXDJcdTBiMGRcdTBiMGUiDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiBidWYud3JpdGUoIlwzXDJc MlwyXHUwYjBlXHUwYjE0XDNcMlwyXDJcdTBiMGZcdTBiMTBcN1tcMlwyXHUwYjEwIikNCj4gPg0K PiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MGIxMVw3XGJcMlwyXHUwYjExXHUwYjEyXDVMXCdc Mlx1MGIxMlx1MGIxM1w3IVwyXDJcdTBiMTMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XHUwYjE1XDNcMlwyXDJcdTBiMTRcdTBiMGZcM1wyXDJcMlx1MGIxNFx1MGIxNVwzXDJcMlwyIikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGIxNVx1MGIxNlwzXDJcMlwyXHUwYjE2XHUw YjE3XDVcdTAxMjZcdTAwOTRcMlx1MGIxNyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc dTBiMThcN1wzMVwyXDJcdTBiMThcdTAxNzdcM1wyXDJcMlx1MGIxOVx1MGIxYVw3XHUwMGU5IikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTBiMWFcdTBiMWJcN1wzMFwyXDJcdTBi MWJcdTBiMWNcNVx1MDEyNlx1MDA5NFwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1 MGIxY1x1MGIxZFw3XDMxXDJcMlx1MGIxZFx1MDE3OVwzXDJcMlwyXHUwYjFlXHUwYjFmIikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3XHUwMGUwXDJcMlx1MGIxZlx1MGIyMFw3XDMwXDJc Mlx1MGIyMFx1MGIyMVw1XHUwMTI2IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDA5 NFwyXHUwYjIxXHUwYjIyXDdcMzFcMlwyXHUwYjIyXHUwMTdiXDNcMlwyXDJcdTBiMjMiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwYjI4XDdcdTAwZTFcMlwyXHUwYjI0XHUwYjI1XDdc MjFcMlwyXHUwYjI1XHUwYjI2XDciKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXGJcMlwy XHUwYjI2XHUwYjI3XDdcdTAwZmFcMlwyXHUwYjI3XHUwYjI5XDchXDJcMlx1MGIyOCIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBiMjRcM1wyXDJcMlx1MGIyOFx1MGIyOVwzXDJcMlwy XHUwYjI5XHUwYjJhXDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwYjJh XHUwYjJiXDdcMzBcMlwyXHUwYjJiXHUwYjJjXDVcdTAxMjZcdTAwOTRcMlx1MGIyYyIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBiMmRcN1wzMVwyXDJcdTBiMmRcdTAxN2RcM1wyXDJc Mlx1MGIyZVx1MGIyZlw3XHUwMGUyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJc dTBiMmZcdTBiMzBcN1wzMFwyXDJcdTBiMzBcdTBiMzFcNVx1MDEyNlx1MDA5NFwyIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGIzMVx1MGIzMlw3XDMxXDJcMlx1MGIzMlx1MDE3Zlwz XDJcMlwyXHUwYjMzXHUwYjM0IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlw3XHUwMGUz XDJcMlx1MGIzNFx1MGIzNVw3XDMwXDJcMlx1MGIzNVx1MGIzNlw1XHUwMTI2IikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlx1MDA5NFwyXHUwYjM2XHUwYjM3XDdcMzFcMlwyXHUwYjM3XHUw MTgxXDNcMlwyXDJcdTBiMzgiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwYjM5XDdc dTAwZTRcMlwyXHUwYjM5XHUwYjNhXDdcMzBcMlwyXHUwYjNhXHUwYjNiXDUiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXHUwMTI2XHUwMDk0XDJcdTBiM2JcdTBiM2NcN1wzMVwyXDJcdTBi M2NcdTAxODNcM1wyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcdTBiM2RcdTBi M2VcN1x1MDBkZVwyXDJcdTBiM2VcdTBiM2ZcN1wzMFwyXDJcdTBiM2YiKQ0KPiA+DQo+ID4gKyAg ICAgICAgYnVmLndyaXRlKCJcdTBiNDRcNVgtDQo+ID4gXDJcdTBiNDBcdTBiNDFcNyhcMlwyXHUw YjQxXHUwYjQyXDdAXDJcMlx1MGI0MiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBi NDNcN1xiXDJcMlx1MGI0M1x1MGI0NVw1XHUwMTZhXHUwMGI2XDJcdTBiNDRcdTBiNDAiKQ0KPiA+ DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBiNDRcdTBiNDVcM1wyXDJcMlx1MGI0 NVx1MGI0NlwzXDJcMlwyXHUwYjQ2IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGI0 N1w3IVwyXDJcdTBiNDdcdTBiNDhcNVx1MDEyNlx1MDA5NFwyXHUwYjQ4XHUwYjQ5IikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlw3XDMxXDJcMlx1MGI0OVx1MDE4NVwzXDJcMlwyXHUwYjRh XHUwYjUwXDVcdTAxODhcdTAwYzUiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJc dTBiNGJcdTBiNTBcNVx1MDE4YVx1MDBjNlwyXHUwYjRjXHUwYjUwXDVcdTAxOGVcdTAwYzgiKQ0K PiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXDJcdTBiNGRcdTBiNTBcNVx1MDE5MFx1MDBj OVwyXHUwYjRlXHUwYjUwXDVcdTAxOTJcdTAwY2EiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXDJcdTBiNGZcdTBiNGFcM1wyXDJcMlx1MGI0Zlx1MGI0YlwzXDJcMlwyXHUwYjRmXHUwYjRj IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwYjRmXHUwYjRkXDNcMlwy XDJcdTBiNGZcdTBiNGVcM1wyXDJcMlx1MGI1MCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRl KCJcdTAxODdcM1wyXDJcMlx1MGI1MVx1MGI1Mlw3XHUwMGMyXDJcMlx1MGI1Mlx1MGI1M1w3XDMw IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTBiNTNcdTBiNTRcNVx1MDEyNlx1 MDA5NFwyXHUwYjU0XHUwYjU1XDdcMjJcMlwyIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3Jp dGUoIlx1MGI1NVx1MGI1Nlw1XHUwMTI2XHUwMDk0XDJcdTBiNTZcdTBiNTdcN1wzNlwyXDJcdTBi NTciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwYjU4XDVcdTAxMjZcdTAwOTRc Mlx1MGI1OFx1MGI1OVw3XDMxXDJcMlx1MGI1OVx1MDE4OSIpDQo+ID4NCj4gPiArDQo+ID4gYnVm LndyaXRlKCJcM1wyXDJcMlx1MGI1YVx1MGI1Ylw3XHUwMGMzXDJcMlx1MGI1Ylx1MGI1Y1w3XDMw XDJcMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBiNWNcdTBiNjFcNVx1MDE4Y1x1 MDBjN1wyXHUwYjVkXHUwYjVlXDcoXDJcMlx1MGI1ZSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcdTBiNjBcNVx1MDE4Y1x1MDBjN1wyXHUwYjVmXHUwYjVkXDNcMlwyXDJcdTBiNjBcdTBi NjMiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBiNjFcdTBiNWZcM1wy XDJcMlx1MGI2MVx1MGI2MlwzXDJcMlwyXHUwYjYyIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRl KCJcdTBiNjRcM1wyXDJcMlx1MGI2M1x1MGI2MVwzXDJcMlwyXHUwYjY0XHUwYjY1XDchXDJcMiIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBiNjVcdTBiNjZcNVx1MDEyNlx1MDA5NFwy XHUwYjY2XHUwYjY3XDchXDJcMlx1MGI2NyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc dTBiNjhcNVx1MDEyNlx1MDA5NFwyXHUwYjY4XHUwYjY5XDchXDJcMlx1MGI2OVx1MGI2YSIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcNVx1MDEyNlx1MDA5NFwyXHUwYjZhXHUwYjZiXDdc MzFcMlwyXHUwYjZiXHUwMThiXDNcMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJc MlwyXHUwYjZjXHUwYjZkXHRcMTZcMlwyXHUwYjZkXHUwMThkXDNcMlwyXDJcdTBiNmVcdTBiNmYi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdcdTAwYzRcMlwyXHUwYjZmXHUwYjcwXDdc MzBcMlwyXHUwYjcwXHUwYjcxXDVcdTAxMjYiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XHUwMDk0XDJcdTBiNzFcdTBiNzJcNyFcMlwyXHUwYjcyXHUwYjczXDVcdTAxMjZcdTAwOTQiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDJcdTBiNzNcdTBiNzRcNyFcMlwyXHUwYjc0XHUw Yjc1XDVcdTAxMjZcdTAwOTRcMlx1MGI3NSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc dTBiNzZcN1wzMVwyXDJcdTBiNzZcdTAxOGZcM1wyXDJcMlx1MGI3N1x1MGI3OFw3XHUwMGM1IikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlwyXDJcdTBiNzhcdTBiNzlcN1wzMFwyXDJcdTBi NzlcdTBiN2FcNVx1MDEyNlx1MDA5NFwyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1 MGI3YVx1MGI3Ylw3IVwyXDJcdTBiN2JcdTBiN2NcNVx1MDEyNlx1MDA5NFwyXHUwYjdjIikNCj4g Pg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGI3ZFw3IVwyXDJcdTBiN2RcdTBiN2VcNVx1MDEy Nlx1MDA5NFwyXHUwYjdlXHUwYjdmIikNCj4gPg0KPiA+ICsNCj4gYnVmLndyaXRlKCJcN1wzMVwy XDJcdTBiN2ZcdTAxOTFcM1wyXDJcMlx1MGI4MFx1MGI4MVw3XHUwMGM2XDJcMiIpDQo+ID4NCj4g PiArDQo+ID4gYnVmLndyaXRlKCJcdTBiODFcdTBiODJcN1wzMFwyXDJcdTBiODJcdTBiODNcN0Bc MlwyXHUwYjgzXHUwYjg0XDciKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXGJcMlwyXHUw Yjg0XHUwYjg5XDVcdTAxOTRcdTAwY2JcMlx1MGI4NVx1MGI4Nlw3KFwyXDIiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXHUwYjg2XHUwYjg4XDVcdTAxOTRcdTAwY2JcMlx1MGI4N1x1MGI4 NVwzXDJcMlwyXHUwYjg4IikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGI4YlwzXDJc MlwyXHUwYjg5XHUwYjg3XDNcMlwyXDJcdTBiODlcdTBiOGFcM1wyXDJcMiIpDQo+ID4NCj4gPiAr DQo+ID4gYnVmLndyaXRlKCJcdTBiOGFcdTBiOGNcM1wyXDJcMlx1MGI4Ylx1MGI4OVwzXDJcMlwy XHUwYjhjXHUwYjhkXDciKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiIVwyXDJcdTBi OGRcdTBiOGVcNVx1MDEyNlx1MDA5NFwyXHUwYjhlXHUwYjhmXDchXDJcMlx1MGI4ZiINCj4gPiAp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBiOTBcNVx1MDEyNlx1MDA5NFwyXHUwYjkw XHUwYjkxXDchXDJcMlx1MGI5MVx1MGI5MiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc NVx1MDEyNlx1MDA5NFwyXHUwYjkyXHUwYjkzXDdcMzFcMlwyXHUwYjkzXHUwMTkzXDNcMiIpDQo+ ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRlKCJcMlwyXHUwYjk0XHUwYjk1XHRcMTdcMlwyXHUw Yjk1XHUwMTk1XDNcMlwyXDJcdTBiOTZcdTBiOTciKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0 ZSgiXDdcdTAwZWFcMlwyXHUwYjk3XHUwYjk4XDdcMzBcMlwyXHUwYjk4XHUwYjk5XDVcdTAxMjYi KQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUwMDk0XDJcdTBiOTlcdTBiYTFcN1wz NlwyXDJcdTBiOWFcdTBiOWJcNVx1MDEyNFx1MDA5MyIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndy aXRlKCJcMlx1MGI5Ylx1MGI5Y1w3IVwyXDJcdTBiOWNcdTBiOWRcNVx1MDEyNFx1MDA5M1wyXHUw YjlkIikNCj4gPg0KPiA+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwYjllXDcNCj4gXDJcMlx1MGI5 ZVx1MGJhMFwzXDJcMlwyXHUwYjlmXHUwYjlhXDNcMlwyXDIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1 Zi53cml0ZSgiXHUwYmEwXHUwYmEzXDNcMlwyXDJcdTBiYTFcdTBiOWZcM1wyXDJcMlx1MGJhMVx1 MGJhMlwzIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlwyXDJcMlx1MGJhMlx1MGJh NFwzXDJcMlwyXHUwYmEzXHUwYmExXDNcMlwyXDJcdTBiYTRcdTBiYTUiDQo+ID4gKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXDdcMzFcMlwyXHUwYmE1XHUwMTk3XDNcMlwyXDJcdTAwZjFc dTAxOWJcdTAxOWRcdTAxYTEiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwMWE4XHUw MWFjXHUwMWFmXHUwMWI3XHUwMWJjXHUwMWMwXHUwMWMzXHUwMWM5XHUwMWNlIikNCj4gPg0KPiA+ ICsNCj4gPiBidWYud3JpdGUoIlx1MDFkMlx1MDFkNVx1MDFkYlx1MDFlZFx1MDFlZlx1MDFmN1x1 MDIwMFx1MDIwOVx1MDIxMiIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTAyMWJcdTAy MjRcdTAyMmRcdTAyMzZcdTAyM2ZcdTAyNDhcdTAyNGVcdTAyNTZcdTAyNWUiKQ0KPiA+DQo+ID4g Kw0KPiA+IGJ1Zi53cml0ZSgiXHUwMjY2XHUwMjg0XHUwMjhiXHUwMjkyXHUwMjliXHUwMjlmXHUw MmEzXHUwMmFhXHUwMmI0IikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDJjMVx1 MDJkMFx1MDJlNVx1MDJlYlx1MDMwN1x1MDMwZFx1MDMxNlx1MDMyOVx1MDMzOSIpDQo+ID4NCj4g PiArDQo+ID4NCj4gYnVmLndyaXRlKCJcdTAzNDRcdTAzNzVcdTAzODVcdTAzOGNcdTAzOTJcdTAz YWFcdTAzYjVcdTAzYjhcdTAzYmIiKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwM2Uy XHUwM2U2XHUwM2YzXHUwM2ZhXHUwNDBjXHUwNDIxXHUwNDM2XHUwNDNjXHUwNDUyIikNCj4gPg0K PiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDQ1Zlx1MDQ2M1x1MDQ2OFx1MDQ2ZVx1MDQ3MVx1MDQ3 NVx1MDQ3OVx1MDQ4MFx1MDQ5YSIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA0YTRc dTA0YWNcdTA0YjBcdTA0YjZcdTA0YmFcdTA0ZThcdTA0ZWNcdTA0ZjNcdTA0ZjkiKQ0KPiA+DQo+ ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNGZkXHUwNTA2XHUwNTBiXHUwNTE3XHUwNTIyXHUwNTJm XHUwNTQwXHUwNTQ1XHUwNTRhIikNCj4gPg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDU1 Ylx1MDU2MFx1MDU2NVx1MDU2ZFx1MDU4ZFx1MDU5Mlx1MDU5N1x1MDVhMVx1MDVhYiIpDQo+ID4N Cj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA1YjdcdTA1YmNcdTA1YzFcdTA1Y2RcdTA1ZDJcdTA1 ZDdcdTA1ZTFcdTA1ZTdcdTA2MDIiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgiXHUw NjA4XHUwNjEyXHUwNjIwXHUwNjJkXHUwNjMyXHUwNjM2XHUwNjQxXHUwNjQ3XHUwNjUyIikNCj4g Pg0KPiA+ICsNCj4gPg0KPiBidWYud3JpdGUoIlx1MDY1Ylx1MDY2NVx1MDY3N1x1MDY3Y1x1MDY4 MFx1MDY4Ylx1MDY5MVx1MDY5Ylx1MDZhMiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gYnVmLndyaXRl KCJcdTA2YWFcdTA2YjFcdTA2YmRcdTA2YzhcdTA2Y2JcdTA2ZDZcdTA2ZGJcdTA2ZTVcdTA2ZWIi KQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwNmZlXHUwNzA0XHUwNzBlXHUwNzE0XHUw NzIyXHUwNzJkXHUwNzMyXHUwNzNiXHUwNzQyIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUo Ilx1MDc0ZFx1MDc1NFx1MDc1ZVx1MDdhOVx1MDdhZVx1MDdiMVx1MDdjMlx1MDdjOFx1MDdjZiIp DQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTA3ZGNcdTA4MjdcdTA4MmNcdTA4MmZcdTA4 NDBcdTA4NDZcdTA4NGRcdTA4NTZcdTA4NjciKQ0KPiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgi XHUwODZkXHUwODc1XHUwODgzXHUwODg4XHUwODk1XHUwODlhXHUwOGE3XHUwOGFjXHUwOGIzIikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MDhjMVx1MDhjNlx1MDhjZFx1MDhlMlx1MDhl N1x1MDhmMFx1MDkxMVx1MDkzMVx1MDkzNCIpDQo+ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJc dTA5M2FcdTA5NDRcdTA5NTdcdTA5NjRcdTA5NmFcdTA5NzBcdTA5NzZcdTA5N2NcdTA5ODIiKQ0K PiA+DQo+ID4gKw0KPiA+IGJ1Zi53cml0ZSgiXHUwOTg4XHUwOThlXHUwOTk0XHUwOTlhXHUwOTlj XHUwOWExXHUwOWE0XHUwOWFhXHUwOWFlIikNCj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1 MDliN1x1MDliZFx1MDljZFx1MDlkNVx1MDlkZFx1MDllNVx1MDllZFx1MDlmNFx1MDlmYiIpDQo+ ID4NCj4gPiArDQo+ID4gYnVmLndyaXRlKCJcdTBhMDFcdTBhMGNcdTBhMTJcdTBhMTlcdTBhMWZc dTBhMjZcdTBhMmNcdTBhMzVcdTBhM2EiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+IGJ1Zi53cml0ZSgi XHUwYTRlXHUwYTc2XHUwYTg5XHUwYTk3XHUwYWE1XHUwYWFkXHUwYWI4XHUwYWJiXHUwYWMxIikN Cj4gPg0KPiA+ICsNCj4gPiBidWYud3JpdGUoIlx1MGFkNFx1MGFlOFx1MGFmOFx1MGIwZFx1MGIx NFx1MGIyOFx1MGI0NFx1MGI0Zlx1MGI2MSIpDQo+ID4NCj4gPiArICAgICAgICBidWYud3JpdGUo Ilx1MGI4OVx1MGJhMSIpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gYnVmLmdldHZhbHVlKCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtjbGFzcyBWZnJTeW50YXhQYXJzZXIg KCBQYXJzZXIgKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZ3JhbW1hckZpbGVOYW1lID0g IlZmclN5bnRheC5nNCINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgYXRuID0gQVRORGVzZXJp YWxpemVyKCkuZGVzZXJpYWxpemUoc2VyaWFsaXplZEFUTigpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBkZWNpc2lvbnNUb0RGQSA9IFsgREZBKGRzLCBpKSBmb3IgaSwgZHMgaW4NCj4gZW51 bWVyYXRlKGF0bi5kZWNpc2lvblRvU3RhdGUpIF0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg c2hhcmVkQ29udGV4dENhY2hlID0gUHJlZGljdGlvbkNvbnRleHRDYWNoZSgpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGxpdGVyYWxOYW1lcyA9IFsgIjxJTlZBTElEPiIsICInc2hvdyciLCAi J3B1c2gnIiwgIidwb3AnIiwgIicjcHJhZ21hJyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgIidwYWNrJyIsICInPSciLCAiJ0lNQUdFX1RPS0VOJyIsICInSE9SSVpPTlRBTCciLA0K PiA+ICInTVVMVElfTElORSciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICInPDwn IiwgIic+PiciLCAiJysnIiwgIicqJyIsICInJSciLCAiJ2Zvcm1hdCciLCAiJz8nIiwNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAiJyNkZWZpbmUnIiwgIicjaW5jbHVkZSciLCAiJ2Zv cm1wa2d0eXBlJyIsICIneyciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICInfSci LCAiJygnIiwgIicpJyIsICInWyciLCAiJ10nIiwgIicuJyIsICInLSciLCAiJzonIiwNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAiJy8nIiwgIic7JyIsICInLCciLCAiJz09JyIsICIn IT0nIiwgIic8PSciLCAiJzwnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAiJz49 JyIsICInPiciLCAiJ3wnIiwgIicmJyIsICInZGV2aWNlcGF0aCciLCAiJ2Zvcm1zZXQnIiwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAiJ2Zvcm1zZXRpZCciLCAiJ2VuZGZvcm1zZXQn IiwgIid0aXRsZSciLCAiJ2Zvcm1pZCciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICInb25lb2YnIiwgIidlbmRvbmVvZiciLCAiJ3Byb21wdCciLCAiJ29yZGVyZWRsaXN0JyIsDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgIidtYXhjb250YWluZXJzJyIsICInZW5kbGlz dCciLCAiJ2VuZGZvcm0nIiwgIidmb3JtJyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgIidmb3JtbWFwJyIsICInbWFwdGl0bGUnIiwgIidtYXBndWlkJyIsICInc3VidGl0bGUnIiwN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAiJ2VuZHN1YnRpdGxlJyIsICInaGVscCci LCAiJ3RleHQnIiwgIidvcHRpb24nIiwgIidmbGFncyciLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICInZGF0ZSciLCAiJ2VuZGRhdGUnIiwgIid5ZWFyJyIsICInbW9udGgnIiwgIidk YXknIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAiJ3RpbWUnIiwgIidlbmR0aW1l JyIsICInaG91ciciLCAiJ21pbnV0ZSciLCAiJ3NlY29uZCciLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICInZ3JheW91dGlmJyIsICInbGFiZWwnIiwgIid0aW1lb3V0JyIsICInaW52 ZW50b3J5JyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgIidfTk9OX05WX0RBVEFf TUFQJyIsICInc3RydWN0JyIsICIndW5pb24nIiwgIidCT09MRUFOJyIsDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgIidVSU5UNjQnIiwgIidVSU5UMzInIiwgIidVSU5UMTYnIiwgIidV SU5UOCciLA0KPiAiJ0VGSV9TVFJJTkdfSUQnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAiJ0VGSV9ISUlfREFURSciLCAiJ0VGSV9ISUlfVElNRSciLCAiJ0VGSV9ISUlfUkVGJyIs DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgIidndWlkJyIsICInY2hlY2tib3gnIiwg IidlbmRjaGVja2JveCciLCAiJ251bWVyaWMnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAiJ2VuZG51bWVyaWMnIiwgIidtaW5pbXVtJyIsICInbWF4aW11bSciLCAiJ3N0ZXAnIiwN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAiJ2RlZmF1bHQnIiwgIidwYXNzd29yZCci LCAiJ2VuZHBhc3N3b3JkJyIsICInc3RyaW5nJyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgIidlbmRzdHJpbmcnIiwgIidtaW5zaXplJyIsICInbWF4c2l6ZSciLCAiJ2VuY29kaW5n JyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgIidzdXBwcmVzc2lmJyIsICInZGlz YWJsZWlmJyIsICInaGlkZGVuJyIsICInZ290byciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICInZm9ybXNldGd1aWQnIiwgIidpbmNvbnNpc3RlbnRpZiciLCAiJ3dhcm5pbmdpZici LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICInbm9zdWJtaXRpZiciLCAiJ2VuZGlm JyIsICIna2V5JyIsICInREVGQVVMVCciLA0KPiA+ICInTUFOVUZBQ1RVUklORyciLA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICInQ0hFQ0tCT1hfREVGQVVMVCciLCAiJ0NIRUNLQk9Y X0RFRkFVTFRfTUZHJyIsDQo+ID4gIidJTlRFUkFDVElWRSciLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICInTlZfQUNDRVNTJyIsICInUkVTRVRfUkVRVUlSRUQnIiwNCj4gIidSRUNP Tk5FQ1RfUkVRVUlSRUQnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAiJ0xBVEVf Q0hFQ0snIiwgIidSRUFEX09OTFknIiwgIidPUFRJT05TX09OTFknIiwNCj4gPiAiJ1JFU1RfU1RZ TEUnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAiJ2NsYXNzJyIsICInc3ViY2xh c3MnIiwgIidjbGFzc2d1aWQnIiwgIid0eXBlZGVmJyIsDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgIidyZXN0b3JlJyIsICInc2F2ZSciLCAiJ2RlZmF1bHRzJyIsICInYmFubmVyJyIs ICInYWxpZ24nIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAiJ2xlZnQnIiwgIidy aWdodCciLCAiJ2NlbnRlciciLCAiJ2xpbmUnIiwgIiduYW1lJyIsDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgIid2YXJpZCciLCAiJ3F1ZXN0aW9uJyIsICIncXVlc3Rpb25pZCciLCAi J2ltYWdlJyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgIidsb2NrZWQnIiwgIidy dWxlJyIsICInZW5kcnVsZSciLCAiJ3ZhbHVlJyIsICIncmVhZCciLA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICInd3JpdGUnIiwgIidyZXNldGJ1dHRvbiciLCAiJ2VuZHJlc2V0YnV0 dG9uJyIsICInZGVmYXVsdHN0b3JlJyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg IidhdHRyaWJ1dGUnIiwgIid2YXJzdG9yZSciLCAiJ2VmaXZhcnN0b3JlJyIsICIndmFyc2l6ZSci LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICInbmFtZXZhbHVldmFyc3RvcmUnIiwg IidhY3Rpb24nIiwgIidjb25maWcnIiwgIidlbmRhY3Rpb24nIiwNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAiJ3JlZnJlc2gnIiwgIidpbnRlcnZhbCciLCAiJ3ZhcnN0b3JlZGV2aWNl JyIsICInZ3VpZG9wJyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgIidlbmRndWlk b3AnIiwgIidkYXRhdHlwZSciLCAiJ2RhdGEnIiwgIidtb2RhbCciLA0KPiAiJ05PTl9ERVZJQ0Un IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAiJ0RJU0tfREVWSUNFJyIsICInVklE RU9fREVWSUNFJyIsICInTkVUV09SS19ERVZJQ0UnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAiJ0lOUFVUX0RFVklDRSciLCAiJ09OQk9BUkRfREVWSUNFJyIsICInT1RIRVJfREVW SUNFJyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgIidTRVRVUF9BUFBMSUNBVElP TiciLCAiJ0dFTkVSQUxfQVBQTElDQVRJT04nIiwNCj4gPiAiJ0ZST05UX1BBR0UnIiwNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAiJ1NJTkdMRV9VU0UnIiwgIidZRUFSX1NVUFBSRVNT JyIsICInTU9OVEhfU1VQUFJFU1MnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAi J0RBWV9TVVBQUkVTUyciLCAiJ0hPVVJfU1VQUFJFU1MnIiwNCj4gIidNSU5VVEVfU1VQUFJFU1Mn IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAiJ1NFQ09ORF9TVVBQUkVTUyciLCAi J1NUT1JBR0VfTk9STUFMJyIsDQo+ID4gIidTVE9SQUdFX1RJTUUnIiwNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAiJ1NUT1JBR0VfV0FLRVVQJyIsICInVU5JUVVFJyIsICInTk9FTVBU WSciLCAiJ2NvbmQnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAiJ2ZpbmQnIiwg IidtaWQnIiwgIid0b2tlbiciLCAiJ3NwYW4nIiwgIidkdXAnIiwgIid2YXJlcXZhbCciLA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICIndmFyJyIsICInaWRlcXZhbCciLCAiJ2lkZXFp ZCciLCAiJ2lkZXF2YWxsaXN0JyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgIidx dWVzdGlvbnJlZiciLCAiJ3J1bGVyZWYnIiwgIidzdHJpbmdyZWYnIiwgIidwdXNodGhpcyciLA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICInc2VjdXJpdHknIiwgIidnZXQnIiwgIidU UlVFJyIsICInRkFMU0UnIiwgIidPTkUnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAiJ09ORVMnIiwgIidaRVJPJyIsICInVU5ERUZJTkVEJyIsICInVkVSU0lPTiciLCAiJ2xlbmd0 aCciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICInQU5EJyIsICInT1InIiwgIidO T1QnIiwgIidzZXQnIiwgIid+JyIsICInYm9vbHZhbCciLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICInc3RyaW5ndmFsJyIsICIndW5pbnR2YWwnIiwgIid0b3VwcGVyJyIsICIndG9s b3dlciciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICInbWF0Y2gnIiwgIidtYXRj aDInIiwgIidjYXRlbmF0ZSciLCAiJ3F1ZXN0aW9ucmVmdmFsJyIsDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgIidzdHJpbmdyZWZ2YWwnIiwgIidtYXAnIiwgIidyZWZyZXNoZ3VpZCci LCAiJ1NUUklOR19UT0tFTiciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICInT1BU SU9OX0RFRkFVTFQnIiwgIidPUFRJT05fREVGQVVMVF9NRkcnIiwNCj4gPiAiJ05VTUVSSUNfU0la RV8xJyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgIidOVU1FUklDX1NJWkVfMici LCAiJ05VTUVSSUNfU0laRV80JyIsDQo+ICInTlVNRVJJQ19TSVpFXzgnIiwNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAiJ0RJU1BMQVlfSU5UX0RFQyciLCAiJ0RJU1BMQVlfVUlOVF9E RUMnIiwNCj4gPiAiJ0RJU1BMQVlfVUlOVF9IRVgnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAiJ0lOU0VOU0lUSVZFJyIsICInU0VOU0lUSVZFJyIsICInTEFTVF9OT05fTUFUQ0gn IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAiJ0ZJUlNUX05PTl9NQVRDSCciIF0N Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgc3ltYm9saWNOYW1lcyA9IFsgIjxJTlZBTElEPiIs ICI8SU5WQUxJRD4iLCAiPElOVkFMSUQ+IiwNCj4gIjxJTlZBTElEPiIsDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICI8SU5WQUxJRD4iLCAiPElOVkFMSUQ+IiwgIjxJTlZBTElEPiIs ICI8SU5WQUxJRD4iLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAiPElOVkFMSUQ+ IiwgIjxJTlZBTElEPiIsICI8SU5WQUxJRD4iLCAiPElOVkFMSUQ+IiwNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIjxJTlZBTElEPiIsICI8SU5WQUxJRD4iLCAiPElOVkFMSUQ+Iiwg IjxJTlZBTElEPiIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICI8SU5WQUxJRD4i LCAiRGVmaW5lIiwgIkluY2x1ZGUiLCAiRm9ybVBrZ1R5cGUiLA0KPiAiT3BlbkJyYWNlIiwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIkNsb3NlQnJhY2UiLCAiT3BlblBhcmVuIiwg IkNsb3NlUGFyZW4iLCAiT3BlbkJyYWNrZXQiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAiQ2xvc2VCcmFja2V0IiwgIkRvdCIsICJOZWdhdGl2ZSIsICJDb2xvbiIsICJTbGFzaCIs DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICJTZW1pY29sb24iLCAiQ29tbWEiLCAi RXF1YWwiLCAiTm90RXF1YWwiLCAiTGVzc0VxdWFsIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIkxlc3MiLCAiR3JlYXRlckVxdWFsIiwgIkdyZWF0ZXIiLCAiQml0V2lzZU9yIiwg IkJpdFdpc2VBbmQiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAiRGV2aWNlUGF0 aCIsICJGb3JtU2V0IiwgIkZvcm1TZXRJZCIsICJFbmRGb3JtU2V0IiwNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIlRpdGxlIiwgIkZvcm1JZCIsICJPbmVPZiIsICJFbmRPbmVPZiIs ICJQcm9tcHQiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAiT3JkZXJlZExpc3Qi LCAiTWF4Q29udGFpbmVycyIsICJFbmRMaXN0IiwgIkVuZEZvcm0iLA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAiRm9ybSIsICJGb3JtTWFwIiwgIk1hcFRpdGxlIiwgIk1hcEd1aWQi LCAiU3VidGl0bGUiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAiRW5kU3VidGl0 bGUiLCAiSGVscCIsICJUZXh0IiwgIk9wdGlvbiIsICJGTEFHUyIsDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICJEYXRlIiwgIkVuZERhdGUiLCAiWWVhciIsICJNb250aCIsICJEYXki LCAiVGltZSIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICJFbmRUaW1lIiwgIkhv dXIiLCAiTWludXRlIiwgIlNlY29uZCIsICJHcmF5T3V0SWYiLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAiTGFiZWwiLCAiVGltZW91dCIsICJJbnZlbnRvcnkiLCAiTm9uTnZEYXRh TWFwIiwgIlN0cnVjdCIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICJVbmlvbiIs ICJCb29sZWFuIiwgIlVpbnQ2NCIsICJVaW50MzIiLCAiVWludDE2IiwNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIlVpbnQ4IiwgIkVGSV9TVFJJTkdfSUQiLCAiRUZJX0hJSV9EQVRF IiwgIkVGSV9ISUlfVElNRSIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICJFRklf SElJX1JFRiIsICJVdWlkIiwgIkNoZWNrQm94IiwgIkVuZENoZWNrQm94IiwNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgIk51bWVyaWMiLCAiRW5kTnVtZXJpYyIsICJNaW5pbXVtIiwg Ik1heGltdW0iLCAiU3RlcCIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICJEZWZh dWx0IiwgIlBhc3N3b3JkIiwgIkVuZFBhc3N3b3JkIiwgIlN0cmluZyIsICJFbmRTdHJpbmciLA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAiTWluU2l6ZSIsICJNYXhTaXplIiwgIkVu Y29kaW5nIiwgIlN1cHByZXNzSWYiLCAiRGlzYWJsZUlmIiwNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIkhpZGRlbiIsICJHb3RvIiwgIkZvcm1TZXRHdWlkIiwgIkluY29uc2lzdGVu dElmIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIldhcm5pbmdJZiIsICJOb1N1 Ym1pdElmIiwgIkVuZElmIiwgIktleSIsICJEZWZhdWx0RmxhZyIsDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICJNYW51ZmFjdHVyaW5nRmxhZyIsICJDaGVja0JveERlZmF1bHRGbGFn IiwNCj4gPiAiQ2hlY2tCb3hEZWZhdWx0TWZnRmxhZyIsDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICJJbnRlcmFjdGl2ZUZsYWciLCAiTlZBY2Nlc3NGbGFnIiwgIlJlc2V0UmVxdWly ZWRGbGFnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIlJlY29ubmVjdFJlcXVp cmVkRmxhZyIsICJMYXRlQ2hlY2tGbGFnIiwgIlJlYWRPbmx5RmxhZyIsDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICJPcHRpb25Pbmx5RmxhZyIsICJSZXN0U3R5bGVGbGFnIiwgIkNs YXNzIiwgIlN1YmNsYXNzIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIkNsYXNz R3VpZCIsICJUeXBlRGVmIiwgIlJlc3RvcmUiLCAiU2F2ZSIsICJEZWZhdWx0cyIsDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICJCYW5uZXIiLCAiQWxpZ24iLCAiTGVmdCIsICJSaWdo dCIsICJDZW50ZXIiLCAiTGluZSIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICJO YW1lIiwgIlZhcklkIiwgIlF1ZXN0aW9uIiwgIlF1ZXN0aW9uSWQiLCAiSW1hZ2UiLA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAiTG9ja2VkIiwgIlJ1bGUiLCAiRW5kUnVsZSIsICJW YWx1ZSIsICJSZWFkIiwgIldyaXRlIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg IlJlc2V0QnV0dG9uIiwgIkVuZFJlc2V0QnV0dG9uIiwgIkRlZmF1bHRTdG9yZSIsICJBdHRyaWJ1 dGUiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAiVmFyc3RvcmUiLCAiRWZpdmFy c3RvcmUiLCAiVmFyU2l6ZSIsICJOYW1lVmFsdWVWYXJTdG9yZSIsDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICJBY3Rpb24iLCAiQ29uZmlnIiwgIkVuZEFjdGlvbiIsICJSZWZyZXNo IiwgIkludGVydmFsIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIlZhcnN0b3Jl RGV2aWNlIiwgIkd1aWRPcCIsICJFbmRHdWlkT3AiLCAiRGF0YVR5cGUiLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAiRGF0YSIsICJNb2RhbCIsICJDbGFzc05vbkRldmljZSIsICJD bGFzc0Rpc2tEZXZpY2UiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAiQ2xhc3NW aWRlb0RldmljZSIsICJDbGFzc05ldHdvcmtEZXZpY2UiLA0KPiAiQ2xhc3NJbnB1dERldmljZSIs DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICJDbGFzc09uQm9hcmREZXZpY2UiLCAi Q2xhc3NPdGhlckRldmljZSIsDQo+ID4gIlN1YmNsYXNzU2V0dXBBcHBsaWNhdGlvbiIsDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICJTdWJjbGFzc0dlbmVyYWxBcHBsaWNhdGlvbiIs ICJTdWJjbGFzc0Zyb250UGFnZSIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICJT dWJjbGFzc1NpbmdsZVVzZSIsICJZZWFyU3VwcHByZXNzRmxhZyIsDQo+ID4gIk1vbnRoU3VwcHJl c3NGbGFnIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIkRheVN1cHByZXNzRmxh ZyIsICJIb3VyU3VwcHByZXNzRmxhZyIsDQo+ID4gIk1pbnV0ZVN1cHByZXNzRmxhZyIsDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICJTZWNvbmRTdXBwcmVzc0ZsYWciLCAiU3RvcmFn ZU5vcm1hbEZsYWciLA0KPiAiU3RvcmFnZVRpbWVGbGFnIiwNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIlN0b3JhZ2VXYWtlVXBGbGFnIiwgIlVuaVF1ZUZsYWciLCAiTm9FbXB0eUZs YWciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAiQ29uZCIsICJGaW5kIiwgIk1p ZCIsICJUb2siLCAiU3BhbiIsICJEdXAiLCAiVmFyRXFWYWwiLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAiVmFyIiwgIklkRXFWYWwiLCAiSWRFcUlkIiwgIklkRXFWYWxMaXN0Iiwg IlF1ZXN0aW9uUmVmIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIlJ1bGVSZWYi LCAiU3RyaW5nUmVmIiwgIlB1c2hUaGlzIiwgIlNlY3VyaXR5IiwgIkdldCIsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICJUcnVlU3ltYm9sIiwgIkZhbHNlU3ltYm9sIiwgIk9uZSIs ICJPbmVzIiwgIlplcm8iLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAiVW5kZWZp bmVkIiwgIlZlcnNpb24iLCAiTGVuZ3RoIiwgIkFORCIsICJPUiIsICJOT1QiLA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAiU2V0IiwgIkJpdFdpc2VOb3QiLCAiQm9vbFZhbCIsICJT dHJpbmdWYWwiLCAiVW5JbnRWYWwiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAi VG9VcHBlciIsICJUb0xvd2VyIiwgIk1hdGNoIiwgIk1hdGNoMiIsICJDYXRlbmF0ZSIsDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICJRdWVzdGlvblJlZlZhbCIsICJTdHJpbmdSZWZW YWwiLCAiTWFwIiwgIlJlZnJlc2hHdWlkIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgIlN0cmluZ1Rva2VuIiwgIk9wdGlvbkRlZmF1bHQiLCAiT3B0aW9uRGVmYXVsdE1mZyIsDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICJOdW1lcmljU2l6ZU9uZSIsICJOdW1lcmlj U2l6ZVR3byIsICJOdW1lcmljU2l6ZUZvdXIiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAiTnVtZXJpY1NpemVFaWdodCIsICJEaXNQbGF5SW50RGVjIiwgIkRpc1BsYXlVSW50RGVj IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIkRpc1BsYXlVSW50SGV4IiwgIklu c2Vuc2l0aXZlIiwgIlNlbnNpdGl2ZSIsICJMYXN0Tm9uTWF0Y2giLA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAiRmlyc3ROb25NYXRjaCIsICJOdW1iZXIiLCAiU3RyaW5nSWRlbnRp ZmllciIsDQo+ID4gIkNvbXBsZXhEZWZpbmUiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAiTGluZURlZmluaXRpb24iLCAiSW5jbHVkZURlZmluaXRpb24iLCAiV2hpdGVzcGFjZSIs DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICJOZXdsaW5lIiwgIkxpbmVDb21tZW50 IiwgIkV4dGVybiIgXQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclByb2dyYW0g PSAwDQo+ID4NCj4gPiArICAgIFJVTEVfcHJhZ21hUGFja1Nob3dEZWYgPSAxDQo+ID4NCj4gPiAr ICAgIFJVTEVfcHJhZ21hUGFja1N0YWNrRGVmID0gMg0KPiA+DQo+ID4gKyAgICBSVUxFX3ByYWdt YVBhY2tOdW1iZXIgPSAzDQo+ID4NCj4gPiArICAgIFJVTEVfdmZyUHJhZ21hUGFja0RlZmluaXRp b24gPSA0DQo+ID4NCj4gPiArICAgIFJVTEVfdmZyRGF0YVN0cnVjdERlZmluaXRpb24gPSA1DQo+ ID4NCj4gPiArICAgIFJVTEVfdmZyRGF0YVVuaW9uRGVmaW5pdGlvbiA9IDYNCj4gPg0KPiA+ICsg ICAgUlVMRV92ZnJEYXRhU3RydWN0RmllbGRzID0gNw0KPiA+DQo+ID4gKyAgICBSVUxFX2RhdGFT dHJ1Y3RGaWVsZDY0ID0gOA0KPiA+DQo+ID4gKyAgICBSVUxFX2RhdGFTdHJ1Y3RGaWVsZDMyID0g OQ0KPiA+DQo+ID4gKyAgICBSVUxFX2RhdGFTdHJ1Y3RGaWVsZDE2ID0gMTANCj4gPg0KPiA+ICsg ICAgUlVMRV9kYXRhU3RydWN0RmllbGQ4ID0gMTENCj4gPg0KPiA+ICsgICAgUlVMRV9kYXRhU3Ry dWN0RmllbGRCb29sID0gMTINCj4gPg0KPiA+ICsgICAgUlVMRV9kYXRhU3RydWN0RmllbGRTdHJp bmcgPSAxMw0KPiA+DQo+ID4gKyAgICBSVUxFX2RhdGFTdHJ1Y3RGaWVsZERhdGUgPSAxNA0KPiA+ DQo+ID4gKyAgICBSVUxFX2RhdGFTdHJ1Y3RGaWVsZFRpbWUgPSAxNQ0KPiA+DQo+ID4gKyAgICBS VUxFX2RhdGFTdHJ1Y3RGaWVsZFJlZiA9IDE2DQo+ID4NCj4gPiArICAgIFJVTEVfZGF0YVN0cnVj dEZpZWxkVXNlciA9IDE3DQo+ID4NCj4gPiArICAgIFJVTEVfZGF0YVN0cnVjdEJpdEZpZWxkNjQg PSAxOA0KPiA+DQo+ID4gKyAgICBSVUxFX2RhdGFTdHJ1Y3RCaXRGaWVsZDMyID0gMTkNCj4gPg0K PiA+ICsgICAgUlVMRV9kYXRhU3RydWN0Qml0RmllbGQxNiA9IDIwDQo+ID4NCj4gPiArICAgIFJV TEVfZGF0YVN0cnVjdEJpdEZpZWxkOCA9IDIxDQo+ID4NCj4gPiArICAgIFJVTEVfdmZyRm9ybVNl dERlZmluaXRpb24gPSAyMg0KPiA+DQo+ID4gKyAgICBSVUxFX2NsYXNzZ3VpZERlZmluaXRpb24g PSAyMw0KPiA+DQo+ID4gKyAgICBSVUxFX2NsYXNzRGVmaW5pdGlvbiA9IDI0DQo+ID4NCj4gPiAr ICAgIFJVTEVfdmFsaWRDbGFzc05hbWVzID0gMjUNCj4gPg0KPiA+ICsgICAgUlVMRV9zdWJjbGFz c0RlZmluaXRpb24gPSAyNg0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmckZvcm1TZXRMaXN0ID0gMjcN Cj4gPg0KPiA+ICsgICAgUlVMRV92ZnJGb3JtU2V0ID0gMjgNCj4gPg0KPiA+ICsgICAgUlVMRV92 ZnJTdGF0ZW1lbnREZWZhdWx0U3RvcmUgPSAyOQ0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRl bWVudFZhclN0b3JlTGluZWFyID0gMzANCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRW YXJTdG9yZUVmaSA9IDMxDQo+ID4NCj4gPiArICAgIFJVTEVfdmZyVmFyU3RvcmVFZmlBdHRyID0g MzINCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRWYXJTdG9yZU5hbWVWYWx1ZSA9IDMz DQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50RGlzYWJsZUlmRm9ybVNldCA9IDM0DQo+ ID4NCj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50U3VwcHJlc3NJZkZvcm1TZXQgPSAzNQ0KPiA+ DQo+ID4gKyAgICBSVUxFX2d1aWRTdWJEZWZpbml0aW9uID0gMzYNCj4gPg0KPiA+ICsgICAgUlVM RV9ndWlkRGVmaW5pdGlvbiA9IDM3DQo+ID4NCj4gPiArICAgIFJVTEVfZ2V0U3RyaW5nSWQgPSAz OA0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclF1ZXN0aW9uSGVhZGVyID0gMzkNCj4gPg0KPiA+ICsg ICAgUlVMRV92ZnJRdWVzdGlvbkJhc2VJbmZvID0gNDANCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJT dGF0ZW1lbnRIZWFkZXIgPSA0MQ0KPiA+DQo+ID4gKyAgICBSVUxFX3F1ZXN0aW9uaGVhZGVyRmxh Z3NGaWVsZCA9IDQyDQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3RvcmFnZVZhcklkID0gNDMNCj4g Pg0KPiA+ICsgICAgUlVMRV92ZnJDb25zdGFudFZhbHVlRmllbGQgPSA0NA0KPiA+DQo+ID4gKyAg ICBSVUxFX3ZmckltYWdlVGFnID0gNDUNCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJMb2NrZWRUYWcg PSA0Ng0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFN0YXRUYWcgPSA0Nw0KPiA+DQo+ ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFN0YXRUYWdMaXN0ID0gNDgNCj4gPg0KPiA+ICsgICAg UlVMRV92ZnJGb3JtRGVmaW5pdGlvbiA9IDQ5DQo+ID4NCj4gPiArICAgIFJVTEVfdmZyRm9ybSA9 IDUwDQo+ID4NCj4gPiArICAgIFJVTEVfdmZyRm9ybU1hcERlZmluaXRpb24gPSA1MQ0KPiA+DQo+ ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudEltYWdlID0gNTINCj4gPg0KPiA+ICsgICAgUlVMRV92 ZnJTdGF0ZW1lbnRMb2NrZWQgPSA1Mw0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFJ1 bGVzID0gNTQNCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRTdGF0ID0gNTUNCj4gPg0K PiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRTdWJUaXRsZSA9IDU2DQo+ID4NCj4gPiArICAgIFJV TEVfdmZyU3RhdGVtZW50U3ViVGl0bGVDb21wb25lbnQgPSA1Nw0KPiA+DQo+ID4gKyAgICBSVUxF X3ZmclN1YnRpdGxlRmxhZ3MgPSA1OA0KPiA+DQo+ID4gKyAgICBSVUxFX3N1YnRpdGxlRmxhZ3NG aWVsZCA9IDU5DQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50U3RhdGljVGV4dCA9IDYw DQo+ID4NCj4gPiArICAgIFJVTEVfc3RhdGljVGV4dEZsYWdzRmllbGQgPSA2MQ0KPiA+DQo+ID4g KyAgICBSVUxFX3ZmclN0YXRlbWVudENyb3NzUmVmZXJlbmNlID0gNjINCj4gPg0KPiA+ICsgICAg UlVMRV92ZnJTdGF0ZW1lbnRHb3RvID0gNjMNCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJHb3RvRmxh Z3MgPSA2NA0KPiA+DQo+ID4gKyAgICBSVUxFX2dvdG9GbGFnc0ZpZWxkID0gNjUNCj4gPg0KPiA+ ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRSZXNldEJ1dHRvbiA9IDY2DQo+ID4NCj4gPiArICAgIFJV TEVfdmZyU3RhdGVtZW50UXVlc3Rpb25zID0gNjcNCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0 ZW1lbnRRdWVzdGlvblRhZyA9IDY4DQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50SW5j b25zaXN0ZW50SWYgPSA2OQ0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudE5vU3VibWl0 SWYgPSA3MA0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudERpc2FibGVJZlF1ZXN0ID0g NzENCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRSZWZyZXNoID0gNzINCj4gPg0KPiA+ ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRWYXJzdG9yZURldmljZSA9IDczDQo+ID4NCj4gPiArICAg IFJVTEVfdmZyU3RhdGVtZW50UmVmcmVzaEV2ZW50ID0gNzQNCj4gPg0KPiA+ICsgICAgUlVMRV92 ZnJTdGF0ZW1lbnRXYXJuaW5nSWYgPSA3NQ0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVu dFF1ZXN0aW9uVGFnTGlzdCA9IDc2DQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50UXVl c3Rpb25PcHRpb25UYWcgPSA3Nw0KPiA+DQo+ID4gKyAgICBSVUxFX2ZsYWdzRmllbGQgPSA3OA0K PiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFN1cHByZXNzSWZRdWVzdCA9IDc5DQo+ID4N Cj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50R3JheU91dElmUXVlc3QgPSA4MA0KPiA+DQo+ID4g KyAgICBSVUxFX3ZmclN0YXRlbWVudERlZmF1bHQgPSA4MQ0KPiA+DQo+ID4gKyAgICBSVUxFX3Zm clN0YXRlbWVudFZhbHVlID0gODINCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRPcHRp b25zID0gODMNCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRPbmVPZk9wdGlvbiA9IDg0 DQo+ID4NCj4gPiArICAgIFJVTEVfdmZyT25lT2ZPcHRpb25GbGFncyA9IDg1DQo+ID4NCj4gPiAr ICAgIFJVTEVfb25lb2ZvcHRpb25GbGFnc0ZpZWxkID0gODYNCj4gPg0KPiA+ICsgICAgUlVMRV92 ZnJTdGF0ZW1lbnRSZWFkID0gODcNCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRXcml0 ZSA9IDg4DQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0 ID0gODkNCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbiA9IDkw DQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50Qm9vbGVhblR5cGUgPSA5MQ0KPiA+DQo+ ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudENoZWNrQm94ID0gOTINCj4gPg0KPiA+ICsgICAgUlVM RV92ZnJDaGVja0JveEZsYWdzID0gOTMNCj4gPg0KPiA+ICsgICAgUlVMRV9jaGVja2JveEZsYWdz RmllbGQgPSA5NA0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudEFjdGlvbiA9IDk1DQo+ ID4NCj4gPiArICAgIFJVTEVfdmZyQWN0aW9uRmxhZ3MgPSA5Ng0KPiA+DQo+ID4gKyAgICBSVUxF X2FjdGlvbkZsYWdzRmllbGQgPSA5Nw0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudE51 bWVyaWNUeXBlID0gOTgNCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnROdW1lcmljID0g OTkNCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTZXRNaW5NYXhTdGVwID0gMTAwDQo+ID4NCj4gPiAr ICAgIFJVTEVfdmZyTnVtZXJpY0ZsYWdzID0gMTAxDQo+ID4NCj4gPiArICAgIFJVTEVfbnVtZXJp Y0ZsYWdzRmllbGQgPSAxMDINCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRPbmVPZiA9 IDEwMw0KPiA+DQo+ID4gKyAgICBSVUxFX3Zmck9uZW9mRmxhZ3NGaWVsZCA9IDEwNA0KPiA+DQo+ ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFN0cmluZ1R5cGUgPSAxMDUNCj4gPg0KPiA+ICsgICAg UlVMRV92ZnJTdGF0ZW1lbnRTdHJpbmcgPSAxMDYNCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdHJp bmdGbGFnc0ZpZWxkID0gMTA3DQo+ID4NCj4gPiArICAgIFJVTEVfc3RyaW5nRmxhZ3NGaWVsZCA9 IDEwOA0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFBhc3N3b3JkID0gMTA5DQo+ID4N Cj4gPiArICAgIFJVTEVfdmZyUGFzc3dvcmRGbGFnc0ZpZWxkID0gMTEwDQo+ID4NCj4gPiArICAg IFJVTEVfcGFzc3dvcmRGbGFnc0ZpZWxkID0gMTExDQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3Rh dGVtZW50T3JkZXJlZExpc3QgPSAxMTINCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJPcmRlcmVkTGlz dEZsYWdzID0gMTEzDQo+ID4NCj4gPiArICAgIFJVTEVfb3JkZXJlZGxpc3RGbGFnc0ZpZWxkID0g MTE0DQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50RGF0ZSA9IDExNQ0KPiA+DQo+ID4g KyAgICBSVUxFX21pbk1heERhdGVTdGVwRGVmYXVsdCA9IDExNg0KPiA+DQo+ID4gKyAgICBSVUxF X3ZmckRhdGVGbGFncyA9IDExNw0KPiA+DQo+ID4gKyAgICBSVUxFX2RhdGVGbGFnc0ZpZWxkID0g MTE4DQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50VGltZSA9IDExOQ0KPiA+DQo+ID4g KyAgICBSVUxFX21pbk1heFRpbWVTdGVwRGVmYXVsdCA9IDEyMA0KPiA+DQo+ID4gKyAgICBSVUxF X3ZmclRpbWVGbGFncyA9IDEyMQ0KPiA+DQo+ID4gKyAgICBSVUxFX3RpbWVGbGFnc0ZpZWxkID0g MTIyDQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50Q29uZGl0aW9uYWwgPSAxMjMNCj4g Pg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRDb25kaXRpb25hbE5ldyA9IDEyNA0KPiA+DQo+ ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0ID0gMTI1DQo+ID4NCj4gPiAr ICAgIFJVTEVfdmZyU3RhdGVtZW50R3JheU91dElmU3RhdCA9IDEyNg0KPiA+DQo+ID4gKyAgICBS VUxFX3ZmclN0YXRlbWVudFN0YXRMaXN0ID0gMTI3DQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3Rh dGVtZW50U3RhdExpc3RPbGQgPSAxMjgNCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRE aXNhYmxlSWZTdGF0ID0gMTI5DQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50Z3JheW91 dElmU3VwcHJlc3NJZiA9IDEzMA0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudHN1cHBy ZXNzSWZHcmF5T3V0SWYgPSAxMzENCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRTdXBw cmVzc0lmU3RhdE5ldyA9IDEzMg0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudEdyYXlP dXRJZlN0YXROZXcgPSAxMzMNCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRJbmNvbnNp c3RlbnRJZlN0YXQgPSAxMzQNCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRJbnZhbGlk ID0gMTM1DQo+ID4NCj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50SW52YWxpZEhpZGRlbiA9IDEz Ng0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudEludmFsaWRJbnZlbnRvcnkgPSAxMzcN Cj4gPg0KPiA+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRJbnZhbGlkU2F2ZVJlc3RvcmVEZWZhdWx0 cyA9IDEzOA0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudExhYmVsID0gMTM5DQo+ID4N Cj4gPiArICAgIFJVTEVfdmZyU3RhdGVtZW50QmFubmVyID0gMTQwDQo+ID4NCj4gPiArICAgIFJV TEVfdmZyU3RhdGVtZW50RXh0ZW5zaW9uID0gMTQxDQo+ID4NCj4gPiArICAgIFJVTEVfdmZyRXh0 ZW5zaW9uRGF0YSA9IDE0Mg0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmclN0YXRlbWVudE1vZGFsID0g MTQzDQo+ID4NCj4gPiArICAgIFJVTEVfdmZyTW9kYWxUYWcgPSAxNDQNCj4gPg0KPiA+ICsgICAg UlVMRV92ZnJTdGF0ZW1lbnRFeHByZXNzaW9uID0gMTQ1DQo+ID4NCj4gPiArICAgIFJVTEVfdmZy U3RhdGVtZW50RXhwcmVzc2lvblN1YiA9IDE0Ng0KPiA+DQo+ID4gKyAgICBSVUxFX2FuZFRlcm0g PSAxNDcNCj4gPg0KPiA+ICsgICAgUlVMRV9iaXR3aXNlb3JUZXJtID0gMTQ4DQo+ID4NCj4gPiAr ICAgIFJVTEVfYml0d2lzZWFuZFRlcm0gPSAxNDkNCj4gPg0KPiA+ICsgICAgUlVMRV9lcXVhbFRl cm0gPSAxNTANCj4gPg0KPiA+ICsgICAgUlVMRV9lcXVhbFRlcm1TdXBwbGVtZW50YXJ5ID0gMTUx DQo+ID4NCj4gPiArICAgIFJVTEVfY29tcGFyZVRlcm0gPSAxNTINCj4gPg0KPiA+ICsgICAgUlVM RV9jb21wYXJlVGVybVN1cHBsZW1lbnRhcnkgPSAxNTMNCj4gPg0KPiA+ICsgICAgUlVMRV9zaGlm dFRlcm0gPSAxNTQNCj4gPg0KPiA+ICsgICAgUlVMRV9zaGlmdFRlcm1TdXBwbGVtZW50YXJ5ID0g MTU1DQo+ID4NCj4gPiArICAgIFJVTEVfYWRkTWludXNUZXJtID0gMTU2DQo+ID4NCj4gPiArICAg IFJVTEVfYWRkTWludXNUZXJtU3VwcGxlbWVudGFyeSA9IDE1Nw0KPiA+DQo+ID4gKyAgICBSVUxF X211bHRkaXZtb2RUZXJtID0gMTU4DQo+ID4NCj4gPiArICAgIFJVTEVfbXVsdGRpdm1vZFRlcm1T dXBwbGVtZW50YXJ5ID0gMTU5DQo+ID4NCj4gPiArICAgIFJVTEVfY2FzdFRlcm0gPSAxNjANCj4g Pg0KPiA+ICsgICAgUlVMRV9jYXN0VGVybVN1YiA9IDE2MQ0KPiA+DQo+ID4gKyAgICBSVUxFX2F0 b21UZXJtID0gMTYyDQo+ID4NCj4gPiArICAgIFJVTEVfdmZyRXhwcmVzc2lvbkNhdGVuYXRlID0g MTYzDQo+ID4NCj4gPiArICAgIFJVTEVfdmZyRXhwcmVzc2lvbk1hdGNoID0gMTY0DQo+ID4NCj4g PiArICAgIFJVTEVfdmZyRXhwcmVzc2lvbk1hdGNoMiA9IDE2NQ0KPiA+DQo+ID4gKyAgICBSVUxF X3ZmckV4cHJlc3Npb25QYXJlbiA9IDE2Ng0KPiA+DQo+ID4gKyAgICBSVUxFX3ZmckV4cHJlc3Np b25CdWlsZEluRnVuY3Rpb24gPSAxNjcNCj4gPg0KPiA+ICsgICAgUlVMRV9kdXBFeHAgPSAxNjgN Cj4gPg0KPiA+ICsgICAgUlVMRV92YXJlcXZhbEV4cCA9IDE2OQ0KPiA+DQo+ID4gKyAgICBSVUxF X2lkZXF2YWxFeHAgPSAxNzANCj4gPg0KPiA+ICsgICAgUlVMRV9pZGVxaWRFeHAgPSAxNzENCj4g Pg0KPiA+ICsgICAgUlVMRV9pZGVxdmFsbGlzdEV4cCA9IDE3Mg0KPiA+DQo+ID4gKyAgICBSVUxF X3ZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSA9IDE3Mw0KPiA+DQo+ID4gKyAgICBSVUxFX2FycmF5 TmFtZSA9IDE3NA0KPiA+DQo+ID4gKyAgICBSVUxFX3F1ZXN0aW9ucmVmMUV4cCA9IDE3NQ0KPiA+ DQo+ID4gKyAgICBSVUxFX3J1bGVyZWZFeHAgPSAxNzYNCj4gPg0KPiA+ICsgICAgUlVMRV9zdHJp bmdyZWYxRXhwID0gMTc3DQo+ID4NCj4gPiArICAgIFJVTEVfcHVzaHRoaXNFeHAgPSAxNzgNCj4g Pg0KPiA+ICsgICAgUlVMRV9zZWN1cml0eUV4cCA9IDE3OQ0KPiA+DQo+ID4gKyAgICBSVUxFX251 bWVyaWNWYXJTdG9yZVR5cGUgPSAxODANCj4gPg0KPiA+ICsgICAgUlVMRV9nZXRFeHAgPSAxODEN Cj4gPg0KPiA+ICsgICAgUlVMRV92ZnJFeHByZXNzaW9uQ29uc3RhbnQgPSAxODINCj4gPg0KPiA+ ICsgICAgUlVMRV92ZnJFeHByZXNzaW9uVW5hcnlPcCA9IDE4Mw0KPiA+DQo+ID4gKyAgICBSVUxF X2xlbmd0aEV4cCA9IDE4NA0KPiA+DQo+ID4gKyAgICBSVUxFX2JpdHdpc2Vub3RFeHAgPSAxODUN Cj4gPg0KPiA+ICsgICAgUlVMRV9xdWVzdGlvbjIzcmVmRXhwID0gMTg2DQo+ID4NCj4gPiArICAg IFJVTEVfc3RyaW5ncmVmMkV4cCA9IDE4Nw0KPiA+DQo+ID4gKyAgICBSVUxFX3RvYm9vbEV4cCA9 IDE4OA0KPiA+DQo+ID4gKyAgICBSVUxFX3Rvc3RyaW5nRXhwID0gMTg5DQo+ID4NCj4gPiArICAg IFJVTEVfdW5pbnRFeHAgPSAxOTANCj4gPg0KPiA+ICsgICAgUlVMRV90b3VwcGVyRXhwID0gMTkx DQo+ID4NCj4gPiArICAgIFJVTEVfdG9sd2VyRXhwID0gMTkyDQo+ID4NCj4gPiArICAgIFJVTEVf c2V0RXhwID0gMTkzDQo+ID4NCj4gPiArICAgIFJVTEVfdmZyRXhwcmVzc2lvblRlcm5hcnlPcCA9 IDE5NA0KPiA+DQo+ID4gKyAgICBSVUxFX2NvbmRpdGlvbmFsRXhwID0gMTk1DQo+ID4NCj4gPiAr ICAgIFJVTEVfZmluZEV4cCA9IDE5Ng0KPiA+DQo+ID4gKyAgICBSVUxFX2ZpbmRGb3JtYXQgPSAx OTcNCj4gPg0KPiA+ICsgICAgUlVMRV9taWRFeHAgPSAxOTgNCj4gPg0KPiA+ICsgICAgUlVMRV90 b2tlbkV4cCA9IDE5OQ0KPiA+DQo+ID4gKyAgICBSVUxFX3NwYW5FeHAgPSAyMDANCj4gPg0KPiA+ ICsgICAgUlVMRV9zcGFuRmxhZ3MgPSAyMDENCj4gPg0KPiA+ICsgICAgUlVMRV92ZnJFeHByZXNz aW9uTWFwID0gMjAyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIHJ1bGVOYW1lcyA9ICBbICJ2 ZnJQcm9ncmFtIiwgInByYWdtYVBhY2tTaG93RGVmIiwNCj4gPiAicHJhZ21hUGFja1N0YWNrRGVm IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgInByYWdtYVBhY2tOdW1iZXIiLCAidmZy UHJhZ21hUGFja0RlZmluaXRpb24iLA0KPiA+ICJ2ZnJEYXRhU3RydWN0RGVmaW5pdGlvbiIsDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICJ2ZnJEYXRhVW5pb25EZWZpbml0aW9uIiwgInZm ckRhdGFTdHJ1Y3RGaWVsZHMiLA0KPiA+ICJkYXRhU3RydWN0RmllbGQ2NCIsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICJkYXRhU3RydWN0RmllbGQzMiIsICJkYXRhU3RydWN0RmllbGQx NiIsICJkYXRhU3RydWN0RmllbGQ4IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgImRh dGFTdHJ1Y3RGaWVsZEJvb2wiLCAiZGF0YVN0cnVjdEZpZWxkU3RyaW5nIiwNCj4gPiAiZGF0YVN0 cnVjdEZpZWxkRGF0ZSIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICJkYXRhU3RydWN0 RmllbGRUaW1lIiwgImRhdGFTdHJ1Y3RGaWVsZFJlZiIsDQo+ID4gImRhdGFTdHJ1Y3RGaWVsZFVz ZXIiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAiZGF0YVN0cnVjdEJpdEZpZWxkNjQi LCAiZGF0YVN0cnVjdEJpdEZpZWxkMzIiLA0KPiA+ICJkYXRhU3RydWN0Qml0RmllbGQxNiIsDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICJkYXRhU3RydWN0Qml0RmllbGQ4IiwgInZmckZv cm1TZXREZWZpbml0aW9uIiwNCj4gPiAiY2xhc3NndWlkRGVmaW5pdGlvbiIsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICJjbGFzc0RlZmluaXRpb24iLCAidmFsaWRDbGFzc05hbWVzIiwg InN1YmNsYXNzRGVmaW5pdGlvbiIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICJ2ZnJG b3JtU2V0TGlzdCIsICJ2ZnJGb3JtU2V0IiwgInZmclN0YXRlbWVudERlZmF1bHRTdG9yZSIsDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRWYXJTdG9yZUxpbmVhciIs ICJ2ZnJTdGF0ZW1lbnRWYXJTdG9yZUVmaSIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICJ2ZnJWYXJTdG9yZUVmaUF0dHIiLCAidmZyU3RhdGVtZW50VmFyU3RvcmVOYW1lVmFsdWUiLA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50RGlzYWJsZUlmRm9ybVNl dCIsDQo+ID4gInZmclN0YXRlbWVudFN1cHByZXNzSWZGb3JtU2V0IiwNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgImd1aWRTdWJEZWZpbml0aW9uIiwgImd1aWREZWZpbml0aW9uIiwgImdl dFN0cmluZ0lkIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgInZmclF1ZXN0aW9uSGVh ZGVyIiwgInZmclF1ZXN0aW9uQmFzZUluZm8iLA0KPiA+ICJ2ZnJTdGF0ZW1lbnRIZWFkZXIiLA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAicXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkIiwg InZmclN0b3JhZ2VWYXJJZCIsDQo+ID4gInZmckNvbnN0YW50VmFsdWVGaWVsZCIsDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICJ2ZnJJbWFnZVRhZyIsICJ2ZnJMb2NrZWRUYWciLCAidmZy U3RhdGVtZW50U3RhdFRhZyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0 ZW1lbnRTdGF0VGFnTGlzdCIsICJ2ZnJGb3JtRGVmaW5pdGlvbiIsICJ2ZnJGb3JtIiwNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgInZmckZvcm1NYXBEZWZpbml0aW9uIiwgInZmclN0YXRl bWVudEltYWdlIiwNCj4gPiAidmZyU3RhdGVtZW50TG9ja2VkIiwNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgInZmclN0YXRlbWVudFJ1bGVzIiwgInZmclN0YXRlbWVudFN0YXQiLA0KPiAi dmZyU3RhdGVtZW50U3ViVGl0bGUiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAidmZy U3RhdGVtZW50U3ViVGl0bGVDb21wb25lbnQiLCAidmZyU3VidGl0bGVGbGFncyIsDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICJzdWJ0aXRsZUZsYWdzRmllbGQiLCAidmZyU3RhdGVtZW50 U3RhdGljVGV4dCIsDQo+ID4gInN0YXRpY1RleHRGbGFnc0ZpZWxkIiwNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgInZmclN0YXRlbWVudENyb3NzUmVmZXJlbmNlIiwgInZmclN0YXRlbWVu dEdvdG8iLA0KPiA+ICJ2ZnJHb3RvRmxhZ3MiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAiZ290b0ZsYWdzRmllbGQiLCAidmZyU3RhdGVtZW50UmVzZXRCdXR0b24iLA0KPiA+ICJ2ZnJT dGF0ZW1lbnRRdWVzdGlvbnMiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAidmZyU3Rh dGVtZW50UXVlc3Rpb25UYWciLCAidmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWYiLA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50Tm9TdWJtaXRJZiIsICJ2ZnJTdGF0 ZW1lbnREaXNhYmxlSWZRdWVzdCIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICJ2ZnJT dGF0ZW1lbnRSZWZyZXNoIiwgInZmclN0YXRlbWVudFZhcnN0b3JlRGV2aWNlIiwNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgInZmclN0YXRlbWVudFJlZnJlc2hFdmVudCIsICJ2ZnJTdGF0 ZW1lbnRXYXJuaW5nSWYiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVt ZW50UXVlc3Rpb25UYWdMaXN0IiwNCj4gPiAidmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25UYWci LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAiZmxhZ3NGaWVsZCIsICJ2ZnJTdGF0ZW1l bnRTdXBwcmVzc0lmUXVlc3QiLA0KPiA+ICJ2ZnJTdGF0ZW1lbnRHcmF5T3V0SWZRdWVzdCIsDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnREZWZhdWx0IiwgInZmclN0 YXRlbWVudFZhbHVlIiwNCj4gPiAidmZyU3RhdGVtZW50T3B0aW9ucyIsDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRPbmVPZk9wdGlvbiIsICJ2ZnJPbmVPZk9wdGlv bkZsYWdzIiwNCj4gPiAib25lb2ZvcHRpb25GbGFnc0ZpZWxkIiwNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgInZmclN0YXRlbWVudFJlYWQiLCAidmZyU3RhdGVtZW50V3JpdGUiLA0KPiA+ ICJ2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3QiLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAidmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb24iLCAidmZyU3RhdGVtZW50Qm9vbGVh blR5cGUiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50Q2hlY2tC b3giLCAidmZyQ2hlY2tCb3hGbGFncyIsDQo+ID4gImNoZWNrYm94RmxhZ3NGaWVsZCIsDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRBY3Rpb24iLCAidmZyQWN0aW9u RmxhZ3MiLCAiYWN0aW9uRmxhZ3NGaWVsZCIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICJ2ZnJTdGF0ZW1lbnROdW1lcmljVHlwZSIsICJ2ZnJTdGF0ZW1lbnROdW1lcmljIiwNCj4gPiAi dmZyU2V0TWluTWF4U3RlcCIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICJ2ZnJOdW1l cmljRmxhZ3MiLCAibnVtZXJpY0ZsYWdzRmllbGQiLCAidmZyU3RhdGVtZW50T25lT2YiLA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAidmZyT25lb2ZGbGFnc0ZpZWxkIiwgInZmclN0YXRl bWVudFN0cmluZ1R5cGUiLA0KPiA+ICJ2ZnJTdGF0ZW1lbnRTdHJpbmciLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAidmZyU3RyaW5nRmxhZ3NGaWVsZCIsICJzdHJpbmdGbGFnc0ZpZWxk IiwNCj4gInZmclN0YXRlbWVudFBhc3N3b3JkIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgInZmclBhc3N3b3JkRmxhZ3NGaWVsZCIsICJwYXNzd29yZEZsYWdzRmllbGQiLA0KPiA+ICJ2 ZnJTdGF0ZW1lbnRPcmRlcmVkTGlzdCIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICJ2 ZnJPcmRlcmVkTGlzdEZsYWdzIiwgIm9yZGVyZWRsaXN0RmxhZ3NGaWVsZCIsDQo+ICJ2ZnJTdGF0 ZW1lbnREYXRlIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIm1pbk1heERhdGVTdGVw RGVmYXVsdCIsICJ2ZnJEYXRlRmxhZ3MiLCAiZGF0ZUZsYWdzRmllbGQiLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50VGltZSIsICJtaW5NYXhUaW1lU3RlcERlZmF1 bHQiLCAidmZyVGltZUZsYWdzIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgInRpbWVG bGFnc0ZpZWxkIiwgInZmclN0YXRlbWVudENvbmRpdGlvbmFsIiwNCj4gPiAidmZyU3RhdGVtZW50 Q29uZGl0aW9uYWxOZXciLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVt ZW50U3VwcHJlc3NJZlN0YXQiLCAidmZyU3RhdGVtZW50R3JheU91dElmU3RhdCIsDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRTdGF0TGlzdCIsICJ2ZnJTdGF0ZW1l bnRTdGF0TGlzdE9sZCIsDQo+ID4gInZmclN0YXRlbWVudERpc2FibGVJZlN0YXQiLA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50Z3JheW91dElmU3VwcHJlc3NJZiIs DQo+ID4gInZmclN0YXRlbWVudHN1cHByZXNzSWZHcmF5T3V0SWYiLA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAidmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXROZXciLA0KPiA+ICJ2ZnJT dGF0ZW1lbnRHcmF5T3V0SWZTdGF0TmV3IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg InZmclN0YXRlbWVudEluY29uc2lzdGVudElmU3RhdCIsICJ2ZnJTdGF0ZW1lbnRJbnZhbGlkIiwN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgInZmclN0YXRlbWVudEludmFsaWRIaWRkZW4i LCAidmZyU3RhdGVtZW50SW52YWxpZEludmVudG9yeSIsDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICJ2ZnJTdGF0ZW1lbnRJbnZhbGlkU2F2ZVJlc3RvcmVEZWZhdWx0cyIsICJ2ZnJTdGF0 ZW1lbnRMYWJlbCIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRC YW5uZXIiLCAidmZyU3RhdGVtZW50RXh0ZW5zaW9uIiwNCj4gPiAidmZyRXh0ZW5zaW9uRGF0YSIs DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRNb2RhbCIsICJ2ZnJN b2RhbFRhZyIsDQo+ICJ2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uIiwNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgInZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIiLCAiYW5kVGVybSIsICJiaXR3 aXNlb3JUZXJtIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgImJpdHdpc2VhbmRUZXJt IiwgImVxdWFsVGVybSIsICJlcXVhbFRlcm1TdXBwbGVtZW50YXJ5IiwNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgImNvbXBhcmVUZXJtIiwgImNvbXBhcmVUZXJtU3VwcGxlbWVudGFyeSIs ICJzaGlmdFRlcm0iLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAic2hpZnRUZXJtU3Vw cGxlbWVudGFyeSIsICJhZGRNaW51c1Rlcm0iLA0KPiA+ICJhZGRNaW51c1Rlcm1TdXBwbGVtZW50 YXJ5IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIm11bHRkaXZtb2RUZXJtIiwgIm11 bHRkaXZtb2RUZXJtU3VwcGxlbWVudGFyeSIsDQo+ID4gImNhc3RUZXJtIiwNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgImNhc3RUZXJtU3ViIiwgImF0b21UZXJtIiwgInZmckV4cHJlc3Np b25DYXRlbmF0ZSIsDQo+ID4gInZmckV4cHJlc3Npb25NYXRjaCIsDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICJ2ZnJFeHByZXNzaW9uTWF0Y2gyIiwgInZmckV4cHJlc3Npb25QYXJlbiIs DQo+ID4gInZmckV4cHJlc3Npb25CdWlsZEluRnVuY3Rpb24iLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAiZHVwRXhwIiwgInZhcmVxdmFsRXhwIiwgImlkZXF2YWxFeHAiLCAiaWRlcWlk RXhwIiwNCj4gPiAiaWRlcXZhbGxpc3RFeHAiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAidmZyUXVlc3Rpb25EYXRhRmllbGROYW1lIiwgImFycmF5TmFtZSIsICJxdWVzdGlvbnJlZjFF eHAiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAicnVsZXJlZkV4cCIsICJzdHJpbmdy ZWYxRXhwIiwgInB1c2h0aGlzRXhwIiwgInNlY3VyaXR5RXhwIiwNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIm51bWVyaWNWYXJTdG9yZVR5cGUiLCAiZ2V0RXhwIiwgInZmckV4cHJlc3Np b25Db25zdGFudCIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICJ2ZnJFeHByZXNzaW9u VW5hcnlPcCIsICJsZW5ndGhFeHAiLCAiYml0d2lzZW5vdEV4cCIsDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICJxdWVzdGlvbjIzcmVmRXhwIiwgInN0cmluZ3JlZjJFeHAiLCAidG9ib29s RXhwIiwgInRvc3RyaW5nRXhwIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgInVuaW50 RXhwIiwgInRvdXBwZXJFeHAiLCAidG9sd2VyRXhwIiwgInNldEV4cCIsDQo+ID4gInZmckV4cHJl c3Npb25UZXJuYXJ5T3AiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAiY29uZGl0aW9u YWxFeHAiLCAiZmluZEV4cCIsICJmaW5kRm9ybWF0IiwgIm1pZEV4cCIsDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICJ0b2tlbkV4cCIsICJzcGFuRXhwIiwgInNwYW5GbGFncyIsICJ2ZnJF eHByZXNzaW9uTWFwIiBdDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIEVPRiA9IFRva2VuLkVP Rg0KPiA+DQo+ID4gKyAgICBUX18wPTENCj4gPg0KPiA+ICsgICAgVF9fMT0yDQo+ID4NCj4gPiAr ICAgIFRfXzI9Mw0KPiA+DQo+ID4gKyAgICBUX18zPTQNCj4gPg0KPiA+ICsgICAgVF9fND01DQo+ ID4NCj4gPiArICAgIFRfXzU9Ng0KPiA+DQo+ID4gKyAgICBUX182PTcNCj4gPg0KPiA+ICsgICAg VF9fNz04DQo+ID4NCj4gPiArICAgIFRfXzg9OQ0KPiA+DQo+ID4gKyAgICBUX185PTEwDQo+ID4N Cj4gPiArICAgIFRfXzEwPTExDQo+ID4NCj4gPiArICAgIFRfXzExPTEyDQo+ID4NCj4gPiArICAg IFRfXzEyPTEzDQo+ID4NCj4gPiArICAgIFRfXzEzPTE0DQo+ID4NCj4gPiArICAgIFRfXzE0PTE1 DQo+ID4NCj4gPiArICAgIFRfXzE1PTE2DQo+ID4NCj4gPiArICAgIERlZmluZT0xNw0KPiA+DQo+ ID4gKyAgICBJbmNsdWRlPTE4DQo+ID4NCj4gPiArICAgIEZvcm1Qa2dUeXBlPTE5DQo+ID4NCj4g PiArICAgIE9wZW5CcmFjZT0yMA0KPiA+DQo+ID4gKyAgICBDbG9zZUJyYWNlPTIxDQo+ID4NCj4g PiArICAgIE9wZW5QYXJlbj0yMg0KPiA+DQo+ID4gKyAgICBDbG9zZVBhcmVuPTIzDQo+ID4NCj4g PiArICAgIE9wZW5CcmFja2V0PTI0DQo+ID4NCj4gPiArICAgIENsb3NlQnJhY2tldD0yNQ0KPiA+ DQo+ID4gKyAgICBEb3Q9MjYNCj4gPg0KPiA+ICsgICAgTmVnYXRpdmU9MjcNCj4gPg0KPiA+ICsg ICAgQ29sb249MjgNCj4gPg0KPiA+ICsgICAgU2xhc2g9MjkNCj4gPg0KPiA+ICsgICAgU2VtaWNv bG9uPTMwDQo+ID4NCj4gPiArICAgIENvbW1hPTMxDQo+ID4NCj4gPiArICAgIEVxdWFsPTMyDQo+ ID4NCj4gPiArICAgIE5vdEVxdWFsPTMzDQo+ID4NCj4gPiArICAgIExlc3NFcXVhbD0zNA0KPiA+ DQo+ID4gKyAgICBMZXNzPTM1DQo+ID4NCj4gPiArICAgIEdyZWF0ZXJFcXVhbD0zNg0KPiA+DQo+ ID4gKyAgICBHcmVhdGVyPTM3DQo+ID4NCj4gPiArICAgIEJpdFdpc2VPcj0zOA0KPiA+DQo+ID4g KyAgICBCaXRXaXNlQW5kPTM5DQo+ID4NCj4gPiArICAgIERldmljZVBhdGg9NDANCj4gPg0KPiA+ ICsgICAgRm9ybVNldD00MQ0KPiA+DQo+ID4gKyAgICBGb3JtU2V0SWQ9NDINCj4gPg0KPiA+ICsg ICAgRW5kRm9ybVNldD00Mw0KPiA+DQo+ID4gKyAgICBUaXRsZT00NA0KPiA+DQo+ID4gKyAgICBG b3JtSWQ9NDUNCj4gPg0KPiA+ICsgICAgT25lT2Y9NDYNCj4gPg0KPiA+ICsgICAgRW5kT25lT2Y9 NDcNCj4gPg0KPiA+ICsgICAgUHJvbXB0PTQ4DQo+ID4NCj4gPiArICAgIE9yZGVyZWRMaXN0PTQ5 DQo+ID4NCj4gPiArICAgIE1heENvbnRhaW5lcnM9NTANCj4gPg0KPiA+ICsgICAgRW5kTGlzdD01 MQ0KPiA+DQo+ID4gKyAgICBFbmRGb3JtPTUyDQo+ID4NCj4gPiArICAgIEZvcm09NTMNCj4gPg0K PiA+ICsgICAgRm9ybU1hcD01NA0KPiA+DQo+ID4gKyAgICBNYXBUaXRsZT01NQ0KPiA+DQo+ID4g KyAgICBNYXBHdWlkPTU2DQo+ID4NCj4gPiArICAgIFN1YnRpdGxlPTU3DQo+ID4NCj4gPiArICAg IEVuZFN1YnRpdGxlPTU4DQo+ID4NCj4gPiArICAgIEhlbHA9NTkNCj4gPg0KPiA+ICsgICAgVGV4 dD02MA0KPiA+DQo+ID4gKyAgICBPcHRpb249NjENCj4gPg0KPiA+ICsgICAgRkxBR1M9NjINCj4g Pg0KPiA+ICsgICAgRGF0ZT02Mw0KPiA+DQo+ID4gKyAgICBFbmREYXRlPTY0DQo+ID4NCj4gPiAr ICAgIFllYXI9NjUNCj4gPg0KPiA+ICsgICAgTW9udGg9NjYNCj4gPg0KPiA+ICsgICAgRGF5PTY3 DQo+ID4NCj4gPiArICAgIFRpbWU9NjgNCj4gPg0KPiA+ICsgICAgRW5kVGltZT02OQ0KPiA+DQo+ ID4gKyAgICBIb3VyPTcwDQo+ID4NCj4gPiArICAgIE1pbnV0ZT03MQ0KPiA+DQo+ID4gKyAgICBT ZWNvbmQ9NzINCj4gPg0KPiA+ICsgICAgR3JheU91dElmPTczDQo+ID4NCj4gPiArICAgIExhYmVs PTc0DQo+ID4NCj4gPiArICAgIFRpbWVvdXQ9NzUNCj4gPg0KPiA+ICsgICAgSW52ZW50b3J5PTc2 DQo+ID4NCj4gPiArICAgIE5vbk52RGF0YU1hcD03Nw0KPiA+DQo+ID4gKyAgICBTdHJ1Y3Q9NzgN Cj4gPg0KPiA+ICsgICAgVW5pb249NzkNCj4gPg0KPiA+ICsgICAgQm9vbGVhbj04MA0KPiA+DQo+ ID4gKyAgICBVaW50NjQ9ODENCj4gPg0KPiA+ICsgICAgVWludDMyPTgyDQo+ID4NCj4gPiArICAg IFVpbnQxNj04Mw0KPiA+DQo+ID4gKyAgICBVaW50OD04NA0KPiA+DQo+ID4gKyAgICBFRklfU1RS SU5HX0lEPTg1DQo+ID4NCj4gPiArICAgIEVGSV9ISUlfREFURT04Ng0KPiA+DQo+ID4gKyAgICBF RklfSElJX1RJTUU9ODcNCj4gPg0KPiA+ICsgICAgRUZJX0hJSV9SRUY9ODgNCj4gPg0KPiA+ICsg ICAgVXVpZD04OQ0KPiA+DQo+ID4gKyAgICBDaGVja0JveD05MA0KPiA+DQo+ID4gKyAgICBFbmRD aGVja0JveD05MQ0KPiA+DQo+ID4gKyAgICBOdW1lcmljPTkyDQo+ID4NCj4gPiArICAgIEVuZE51 bWVyaWM9OTMNCj4gPg0KPiA+ICsgICAgTWluaW11bT05NA0KPiA+DQo+ID4gKyAgICBNYXhpbXVt PTk1DQo+ID4NCj4gPiArICAgIFN0ZXA9OTYNCj4gPg0KPiA+ICsgICAgRGVmYXVsdD05Nw0KPiA+ DQo+ID4gKyAgICBQYXNzd29yZD05OA0KPiA+DQo+ID4gKyAgICBFbmRQYXNzd29yZD05OQ0KPiA+ DQo+ID4gKyAgICBTdHJpbmc9MTAwDQo+ID4NCj4gPiArICAgIEVuZFN0cmluZz0xMDENCj4gPg0K PiA+ICsgICAgTWluU2l6ZT0xMDINCj4gPg0KPiA+ICsgICAgTWF4U2l6ZT0xMDMNCj4gPg0KPiA+ ICsgICAgRW5jb2Rpbmc9MTA0DQo+ID4NCj4gPiArICAgIFN1cHByZXNzSWY9MTA1DQo+ID4NCj4g PiArICAgIERpc2FibGVJZj0xMDYNCj4gPg0KPiA+ICsgICAgSGlkZGVuPTEwNw0KPiA+DQo+ID4g KyAgICBHb3RvPTEwOA0KPiA+DQo+ID4gKyAgICBGb3JtU2V0R3VpZD0xMDkNCj4gPg0KPiA+ICsg ICAgSW5jb25zaXN0ZW50SWY9MTEwDQo+ID4NCj4gPiArICAgIFdhcm5pbmdJZj0xMTENCj4gPg0K PiA+ICsgICAgTm9TdWJtaXRJZj0xMTINCj4gPg0KPiA+ICsgICAgRW5kSWY9MTEzDQo+ID4NCj4g PiArICAgIEtleT0xMTQNCj4gPg0KPiA+ICsgICAgRGVmYXVsdEZsYWc9MTE1DQo+ID4NCj4gPiAr ICAgIE1hbnVmYWN0dXJpbmdGbGFnPTExNg0KPiA+DQo+ID4gKyAgICBDaGVja0JveERlZmF1bHRG bGFnPTExNw0KPiA+DQo+ID4gKyAgICBDaGVja0JveERlZmF1bHRNZmdGbGFnPTExOA0KPiA+DQo+ ID4gKyAgICBJbnRlcmFjdGl2ZUZsYWc9MTE5DQo+ID4NCj4gPiArICAgIE5WQWNjZXNzRmxhZz0x MjANCj4gPg0KPiA+ICsgICAgUmVzZXRSZXF1aXJlZEZsYWc9MTIxDQo+ID4NCj4gPiArICAgIFJl Y29ubmVjdFJlcXVpcmVkRmxhZz0xMjINCj4gPg0KPiA+ICsgICAgTGF0ZUNoZWNrRmxhZz0xMjMN Cj4gPg0KPiA+ICsgICAgUmVhZE9ubHlGbGFnPTEyNA0KPiA+DQo+ID4gKyAgICBPcHRpb25Pbmx5 RmxhZz0xMjUNCj4gPg0KPiA+ICsgICAgUmVzdFN0eWxlRmxhZz0xMjYNCj4gPg0KPiA+ICsgICAg Q2xhc3M9MTI3DQo+ID4NCj4gPiArICAgIFN1YmNsYXNzPTEyOA0KPiA+DQo+ID4gKyAgICBDbGFz c0d1aWQ9MTI5DQo+ID4NCj4gPiArICAgIFR5cGVEZWY9MTMwDQo+ID4NCj4gPiArICAgIFJlc3Rv cmU9MTMxDQo+ID4NCj4gPiArICAgIFNhdmU9MTMyDQo+ID4NCj4gPiArICAgIERlZmF1bHRzPTEz Mw0KPiA+DQo+ID4gKyAgICBCYW5uZXI9MTM0DQo+ID4NCj4gPiArICAgIEFsaWduPTEzNQ0KPiA+ DQo+ID4gKyAgICBMZWZ0PTEzNg0KPiA+DQo+ID4gKyAgICBSaWdodD0xMzcNCj4gPg0KPiA+ICsg ICAgQ2VudGVyPTEzOA0KPiA+DQo+ID4gKyAgICBMaW5lPTEzOQ0KPiA+DQo+ID4gKyAgICBOYW1l PTE0MA0KPiA+DQo+ID4gKyAgICBWYXJJZD0xNDENCj4gPg0KPiA+ICsgICAgUXVlc3Rpb249MTQy DQo+ID4NCj4gPiArICAgIFF1ZXN0aW9uSWQ9MTQzDQo+ID4NCj4gPiArICAgIEltYWdlPTE0NA0K PiA+DQo+ID4gKyAgICBMb2NrZWQ9MTQ1DQo+ID4NCj4gPiArICAgIFJ1bGU9MTQ2DQo+ID4NCj4g PiArICAgIEVuZFJ1bGU9MTQ3DQo+ID4NCj4gPiArICAgIFZhbHVlPTE0OA0KPiA+DQo+ID4gKyAg ICBSZWFkPTE0OQ0KPiA+DQo+ID4gKyAgICBXcml0ZT0xNTANCj4gPg0KPiA+ICsgICAgUmVzZXRC dXR0b249MTUxDQo+ID4NCj4gPiArICAgIEVuZFJlc2V0QnV0dG9uPTE1Mg0KPiA+DQo+ID4gKyAg ICBEZWZhdWx0U3RvcmU9MTUzDQo+ID4NCj4gPiArICAgIEF0dHJpYnV0ZT0xNTQNCj4gPg0KPiA+ ICsgICAgVmFyc3RvcmU9MTU1DQo+ID4NCj4gPiArICAgIEVmaXZhcnN0b3JlPTE1Ng0KPiA+DQo+ ID4gKyAgICBWYXJTaXplPTE1Nw0KPiA+DQo+ID4gKyAgICBOYW1lVmFsdWVWYXJTdG9yZT0xNTgN Cj4gPg0KPiA+ICsgICAgQWN0aW9uPTE1OQ0KPiA+DQo+ID4gKyAgICBDb25maWc9MTYwDQo+ID4N Cj4gPiArICAgIEVuZEFjdGlvbj0xNjENCj4gPg0KPiA+ICsgICAgUmVmcmVzaD0xNjINCj4gPg0K PiA+ICsgICAgSW50ZXJ2YWw9MTYzDQo+ID4NCj4gPiArICAgIFZhcnN0b3JlRGV2aWNlPTE2NA0K PiA+DQo+ID4gKyAgICBHdWlkT3A9MTY1DQo+ID4NCj4gPiArICAgIEVuZEd1aWRPcD0xNjYNCj4g Pg0KPiA+ICsgICAgRGF0YVR5cGU9MTY3DQo+ID4NCj4gPiArICAgIERhdGE9MTY4DQo+ID4NCj4g PiArICAgIE1vZGFsPTE2OQ0KPiA+DQo+ID4gKyAgICBDbGFzc05vbkRldmljZT0xNzANCj4gPg0K PiA+ICsgICAgQ2xhc3NEaXNrRGV2aWNlPTE3MQ0KPiA+DQo+ID4gKyAgICBDbGFzc1ZpZGVvRGV2 aWNlPTE3Mg0KPiA+DQo+ID4gKyAgICBDbGFzc05ldHdvcmtEZXZpY2U9MTczDQo+ID4NCj4gPiAr ICAgIENsYXNzSW5wdXREZXZpY2U9MTc0DQo+ID4NCj4gPiArICAgIENsYXNzT25Cb2FyZERldmlj ZT0xNzUNCj4gPg0KPiA+ICsgICAgQ2xhc3NPdGhlckRldmljZT0xNzYNCj4gPg0KPiA+ICsgICAg U3ViY2xhc3NTZXR1cEFwcGxpY2F0aW9uPTE3Nw0KPiA+DQo+ID4gKyAgICBTdWJjbGFzc0dlbmVy YWxBcHBsaWNhdGlvbj0xNzgNCj4gPg0KPiA+ICsgICAgU3ViY2xhc3NGcm9udFBhZ2U9MTc5DQo+ ID4NCj4gPiArICAgIFN1YmNsYXNzU2luZ2xlVXNlPTE4MA0KPiA+DQo+ID4gKyAgICBZZWFyU3Vw cHByZXNzRmxhZz0xODENCj4gPg0KPiA+ICsgICAgTW9udGhTdXBwcmVzc0ZsYWc9MTgyDQo+ID4N Cj4gPiArICAgIERheVN1cHByZXNzRmxhZz0xODMNCj4gPg0KPiA+ICsgICAgSG91clN1cHBwcmVz c0ZsYWc9MTg0DQo+ID4NCj4gPiArICAgIE1pbnV0ZVN1cHByZXNzRmxhZz0xODUNCj4gPg0KPiA+ ICsgICAgU2Vjb25kU3VwcHJlc3NGbGFnPTE4Ng0KPiA+DQo+ID4gKyAgICBTdG9yYWdlTm9ybWFs RmxhZz0xODcNCj4gPg0KPiA+ICsgICAgU3RvcmFnZVRpbWVGbGFnPTE4OA0KPiA+DQo+ID4gKyAg ICBTdG9yYWdlV2FrZVVwRmxhZz0xODkNCj4gPg0KPiA+ICsgICAgVW5pUXVlRmxhZz0xOTANCj4g Pg0KPiA+ICsgICAgTm9FbXB0eUZsYWc9MTkxDQo+ID4NCj4gPiArICAgIENvbmQ9MTkyDQo+ID4N Cj4gPiArICAgIEZpbmQ9MTkzDQo+ID4NCj4gPiArICAgIE1pZD0xOTQNCj4gPg0KPiA+ICsgICAg VG9rPTE5NQ0KPiA+DQo+ID4gKyAgICBTcGFuPTE5Ng0KPiA+DQo+ID4gKyAgICBEdXA9MTk3DQo+ ID4NCj4gPiArICAgIFZhckVxVmFsPTE5OA0KPiA+DQo+ID4gKyAgICBWYXI9MTk5DQo+ID4NCj4g PiArICAgIElkRXFWYWw9MjAwDQo+ID4NCj4gPiArICAgIElkRXFJZD0yMDENCj4gPg0KPiA+ICsg ICAgSWRFcVZhbExpc3Q9MjAyDQo+ID4NCj4gPiArICAgIFF1ZXN0aW9uUmVmPTIwMw0KPiA+DQo+ ID4gKyAgICBSdWxlUmVmPTIwNA0KPiA+DQo+ID4gKyAgICBTdHJpbmdSZWY9MjA1DQo+ID4NCj4g PiArICAgIFB1c2hUaGlzPTIwNg0KPiA+DQo+ID4gKyAgICBTZWN1cml0eT0yMDcNCj4gPg0KPiA+ ICsgICAgR2V0PTIwOA0KPiA+DQo+ID4gKyAgICBUcnVlU3ltYm9sPTIwOQ0KPiA+DQo+ID4gKyAg ICBGYWxzZVN5bWJvbD0yMTANCj4gPg0KPiA+ICsgICAgT25lPTIxMQ0KPiA+DQo+ID4gKyAgICBP bmVzPTIxMg0KPiA+DQo+ID4gKyAgICBaZXJvPTIxMw0KPiA+DQo+ID4gKyAgICBVbmRlZmluZWQ9 MjE0DQo+ID4NCj4gPiArICAgIFZlcnNpb249MjE1DQo+ID4NCj4gPiArICAgIExlbmd0aD0yMTYN Cj4gPg0KPiA+ICsgICAgQU5EPTIxNw0KPiA+DQo+ID4gKyAgICBPUj0yMTgNCj4gPg0KPiA+ICsg ICAgTk9UPTIxOQ0KPiA+DQo+ID4gKyAgICBTZXQ9MjIwDQo+ID4NCj4gPiArICAgIEJpdFdpc2VO b3Q9MjIxDQo+ID4NCj4gPiArICAgIEJvb2xWYWw9MjIyDQo+ID4NCj4gPiArICAgIFN0cmluZ1Zh bD0yMjMNCj4gPg0KPiA+ICsgICAgVW5JbnRWYWw9MjI0DQo+ID4NCj4gPiArICAgIFRvVXBwZXI9 MjI1DQo+ID4NCj4gPiArICAgIFRvTG93ZXI9MjI2DQo+ID4NCj4gPiArICAgIE1hdGNoPTIyNw0K PiA+DQo+ID4gKyAgICBNYXRjaDI9MjI4DQo+ID4NCj4gPiArICAgIENhdGVuYXRlPTIyOQ0KPiA+ DQo+ID4gKyAgICBRdWVzdGlvblJlZlZhbD0yMzANCj4gPg0KPiA+ICsgICAgU3RyaW5nUmVmVmFs PTIzMQ0KPiA+DQo+ID4gKyAgICBNYXA9MjMyDQo+ID4NCj4gPiArICAgIFJlZnJlc2hHdWlkPTIz Mw0KPiA+DQo+ID4gKyAgICBTdHJpbmdUb2tlbj0yMzQNCj4gPg0KPiA+ICsgICAgT3B0aW9uRGVm YXVsdD0yMzUNCj4gPg0KPiA+ICsgICAgT3B0aW9uRGVmYXVsdE1mZz0yMzYNCj4gPg0KPiA+ICsg ICAgTnVtZXJpY1NpemVPbmU9MjM3DQo+ID4NCj4gPiArICAgIE51bWVyaWNTaXplVHdvPTIzOA0K PiA+DQo+ID4gKyAgICBOdW1lcmljU2l6ZUZvdXI9MjM5DQo+ID4NCj4gPiArICAgIE51bWVyaWNT aXplRWlnaHQ9MjQwDQo+ID4NCj4gPiArICAgIERpc1BsYXlJbnREZWM9MjQxDQo+ID4NCj4gPiAr ICAgIERpc1BsYXlVSW50RGVjPTI0Mg0KPiA+DQo+ID4gKyAgICBEaXNQbGF5VUludEhleD0yNDMN Cj4gPg0KPiA+ICsgICAgSW5zZW5zaXRpdmU9MjQ0DQo+ID4NCj4gPiArICAgIFNlbnNpdGl2ZT0y NDUNCj4gPg0KPiA+ICsgICAgTGFzdE5vbk1hdGNoPTI0Ng0KPiA+DQo+ID4gKyAgICBGaXJzdE5v bk1hdGNoPTI0Nw0KPiA+DQo+ID4gKyAgICBOdW1iZXI9MjQ4DQo+ID4NCj4gPiArICAgIFN0cmlu Z0lkZW50aWZpZXI9MjQ5DQo+ID4NCj4gPiArICAgIENvbXBsZXhEZWZpbmU9MjUwDQo+ID4NCj4g PiArICAgIExpbmVEZWZpbml0aW9uPTI1MQ0KPiA+DQo+ID4gKyAgICBJbmNsdWRlRGVmaW5pdGlv bj0yNTINCj4gPg0KPiA+ICsgICAgV2hpdGVzcGFjZT0yNTMNCj4gPg0KPiA+ICsgICAgTmV3bGlu ZT0yNTQNCj4gPg0KPiA+ICsgICAgTGluZUNvbW1lbnQ9MjU1DQo+ID4NCj4gPiArICAgIEV4dGVy bj0yNTYNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIGlucHV0 OlRva2VuU3RyZWFtLCBvdXRwdXQ6VGV4dElPID0gc3lzLnN0ZG91dCk6DQo+ID4NCj4gPiArICAg ICAgICBzdXBlcigpLl9faW5pdF9fKGlucHV0LCBvdXRwdXQpDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLmNoZWNrVmVyc2lvbigiNC43LjIiKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5faW50ZXJw ID0gUGFyc2VyQVROU2ltdWxhdG9yKHNlbGYsIHNlbGYuYXRuLCBzZWxmLmRlY2lzaW9uc1RvREZB LA0KPiA+IHNlbGYuc2hhcmVkQ29udGV4dENhY2hlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5f cHJlZGljYXRlcyA9IE5vbmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyUHJvZ3JhbUNvbnRleHQoUGFyc2VyUnVs ZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNl bGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdT dGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFy ZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0g cGFyc2VyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyUHJhZ21hUGFja0Rl ZmluaXRpb24oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJQcmFnbWFQYWNrRGVmaW5pdGlv bkNvbnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJQcmFnbWFQYWNrRGVmaW5pdGlvbkNvbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJEYXRhU3RydWN0RGVmaW5pdGlvbihz ZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmckRhdGFTdHJ1Y3REZWZpbml0aW9uQ29udGV4dCkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckRhdGFT dHJ1Y3REZWZpbml0aW9uQ29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIHZmckRhdGFVbmlvbkRlZmluaXRpb24oc2VsZiwgaTppbnQ9Tm9uZSk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBh cnNlci5WZnJEYXRhVW5pb25EZWZpbml0aW9uQ29udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckRhdGFVbmlvbkRlZmluaXRpb25Db250 ZXh0LGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZy Rm9ybVNldERlZmluaXRpb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJGb3JtU2V0RGVm aW5pdGlvbkNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu IFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclByb2dyYW0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0K PiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJQcm9ncmFtIiAp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclByb2dy YW0oc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJQ cm9ncmFtKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBW ZnJTeW50YXhQYXJzZXIuVmZyUHJvZ3JhbUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0 YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDAsIHNlbGYu UlVMRV92ZnJQcm9ncmFtKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4g dHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNDExDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0K PiA+ICsgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5UX18zIG9yICgoKChf bGEgLSA3OCkpICYgfjB4M2YpID09IDAgYW5kDQo+ICgoMQ0KPiA+IDw8IChfbGEgLSA3OCkpICYg KCgxIDw8IChWZnJTeW50YXhQYXJzZXIuU3RydWN0IC0gNzgpKSB8ICgxIDw8DQo+ID4gKFZmclN5 bnRheFBhcnNlci5VbmlvbiAtIDc4KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlR5cGVEZWYg LSA3OCkpKSkgIT0gMCk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0 MDkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVBy ZWRpY3Qoc2VsZi5faW5wdXQsMCxzZWxmLl9jdHgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IGlmIGxhXyA9PSAxOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDQwNg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZnJQcmFnbWFQYWNrRGVm aW5pdGlvbigpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGVsaWYgbGFfID09IDI6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDA3DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICBzZWxmLnZmckRhdGFTdHJ1Y3REZWZpbml0aW9uKCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ZWxpZiBsYV8gPT0gMzoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA0MDgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYudmZyRGF0YVVuaW9uRGVm aW5pdGlvbigpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MTMN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQxNQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xh PT1WZnJTeW50YXhQYXJzZXIuRm9ybVNldDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDQxNA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmckZvcm1TZXRE ZWZpbml0aW9uKCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4 Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBs b2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAg IHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBj bGFzcyBQcmFnbWFQYWNrU2hvd0RlZkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50 OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRl KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9wcmFnbWFQ YWNrU2hvd0RlZg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxm LCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhh c2F0dHIoIHZpc2l0b3IsICJ2aXNpdFByYWdtYVBhY2tTaG93RGVmIiApOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFByYWdtYVBhY2tTaG93RGVmKHNlbGYp DQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgcHJhZ21hUGFja1No b3dEZWYoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZm clN5bnRheFBhcnNlci5QcmFnbWFQYWNrU2hvd0RlZkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0K PiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0 eCwgMiwgc2VsZi5SVUxFX3ByYWdtYVBhY2tTaG93RGVmKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5 Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDE3DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fMCkNCj4gPg0KPiA+ICsgICAgICAg IGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxs eToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBjbGFzcyBQcmFnbWFQYWNrU3RhY2tEZWZDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBh cmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdT dGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmll ciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy Lk51bWJlciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5k ZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5S VUxFX3ByYWdtYVBhY2tTdGFja0RlZg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFByYWdtYVBhY2tTdGFja0RlZiIgKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRQcmFnbWFQYWNr U3RhY2tEZWYoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiBwcmFnbWFQYWNrU3RhY2tEZWYoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5QcmFnbWFQYWNrU3RhY2tEZWZDb250ZXh0KHNl bGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5l bnRlclJ1bGUobG9jYWxjdHgsIDQsIHNlbGYuUlVMRV9wcmFnbWFQYWNrU3RhY2tEZWYpDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAg ICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MTkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIG5vdChfbGE9PVZmclN5bnRheFBhcnNlci5UX18xIG9yIF9sYT09VmZyU3ludGF4UGFyc2Vy LlRfXzIpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292 ZXJJbmxpbmUoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydE1hdGNoKHNlbGYpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuY29uc3VtZSgpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDQyMg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu c3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFw dGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsMyxzZWxmLl9jdHgpDQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgbGFfID09IDE6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0 MjANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MjENCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRl bnRpZmllcikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNDI2DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5Db21tYToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQyNA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQyNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4g Pg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0 UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgUHJhZ21hUGFja051bWJlckNvbnRleHQoUGFy c2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52 b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0 X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFy c2VyID0gcGFyc2VyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5OdW1iZXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0 UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQ YXJzZXIuUlVMRV9wcmFnbWFQYWNrTnVtYmVyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0UHJhZ21hUGFja051bWJlciIg KToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRQcmFnbWFQ YWNrTnVtYmVyKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBk ZWYgcHJhZ21hUGFja051bWJlcihzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlByYWdtYVBhY2tOdW1iZXJDb250ZXh0KHNlbGYs IHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRl clJ1bGUobG9jYWxjdHgsIDYsIHNlbGYuUlVMRV9wcmFnbWFQYWNrTnVtYmVyKQ0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5 Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDI5DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAg X2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZm clN5bnRheFBhcnNlci5OdW1iZXI6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA0MjgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5 Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAg ICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGNsYXNzIFZmclByYWdtYVBhY2tEZWZpbml0aW9uQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2Vy LCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0t MSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9r aW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5Q YXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IHByYWdtYVBhY2tTaG93RGVmKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0K PiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuUHJhZ21hUGFja1No b3dEZWZDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgcHJhZ21hUGFja1N0YWNrRGVmKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuUHJhZ21h UGFja1N0YWNrRGVmQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIHByYWdtYVBhY2tOdW1iZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5Q cmFnbWFQYWNrTnVtYmVyQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyUHJhZ21hUGFja0RlZmluaXRpb24NCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJz ZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9y LCAidmlzaXRWZnJQcmFnbWFQYWNrRGVmaW5pdGlvbiIgKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJQcmFnbWFQYWNrRGVmaW5pdGlvbihzZWxmKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclByYWdtYVBhY2tE ZWZpbml0aW9uKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHgg PSBWZnJTeW50YXhQYXJzZXIuVmZyUHJhZ21hUGFja0RlZmluaXRpb25Db250ZXh0KHNlbGYsDQo+ IHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRl clJ1bGUobG9jYWxjdHgsIDgsIHNlbGYuUlVMRV92ZnJQcmFnbWFQYWNrRGVmaW5pdGlvbikNCj4g Pg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQz MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzMp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQzMg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzQpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDQzMw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNDM3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJl ZGljdChzZWxmLl9pbnB1dCw2LHNlbGYuX2N0eCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBs YV8gPT0gMToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQzNA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnByYWdtYVBhY2tTaG93RGVmKCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIGxhXyA9PSAyOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gNDM1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYucHJhZ21hUGFja1N0YWNrRGVmKCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAg ICBlbGlmIGxhXyA9PSAzOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g NDM2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYucHJhZ21hUGFja051bWJlcigpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDQzOQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNs b3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24g YXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCBy ZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyRGF0YVN0cnVjdERlZmluaXRp b25Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1O b25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBz dXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTjEg PSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk4yID0gTm9uZSAjIFRv a2VuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RydWN0KHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5T dHJ1Y3QsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgT3BlbkJyYWNlKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5PcGVuQnJhY2UsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg dmZyRGF0YVN0cnVjdEZpZWxkcyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4N Cj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckRhdGFTdHJ1 Y3RGaWVsZHNDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgQ2xvc2VCcmFjZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFjZSwgMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBUeXBlRGVmKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5UeXBl RGVmLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE5vbk52RGF0YU1hcChz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuTm9uTnZEYXRhTWFwLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIGkpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJEYXRhU3RydWN0RGVmaW5p dGlvbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNp dG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIo IHZpc2l0b3IsICJ2aXNpdFZmckRhdGFTdHJ1Y3REZWZpbml0aW9uIiApOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckRhdGFTdHJ1Y3REZWZpbml0aW9u KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyRGF0 YVN0cnVjdERlZmluaXRpb24oc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBs b2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJEYXRhU3RydWN0RGVmaW5pdGlvbkNvbnRleHQo c2VsZiwNCj4gc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTAsIHNlbGYuUlVMRV92ZnJEYXRhU3RydWN0RGVmaW5p dGlvbikNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0K PiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ0Mg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuVHlwZURlZjoNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ0MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5UeXBlRGVmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NDQNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJ1Y3QpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDQ0Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0 LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuTm9u TnZEYXRhTWFwOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDQ1DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk5vbk52 RGF0YU1hcCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNDQ5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVu dGlmaWVyOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDQ4DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4Lk4xID0gc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDUxDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA0NTINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnZmckRhdGFTdHJ1 Y3RGaWVsZHMoRmFsc2UpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ1Mw0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJh Y2UpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ1NQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xh PT1WZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcjoNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDQ1NA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBsb2NhbGN0 eC5OMiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ1 Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWlj b2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyBy ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0K PiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4 aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJEYXRhVW5pb25EZWZpbml0aW9uQ29u dGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwN Cj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIo KS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk4xID0gTm9u ZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5OMiA9IE5vbmUgIyBUb2tlbg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFVuaW9uKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Vbmlvbiwg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBPcGVuQnJhY2Uoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy Lk9wZW5CcmFjZSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJEYXRh U3RydWN0RmllbGRzKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRGF0YVN0cnVjdEZpZWxk c0NvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBDbG9zZUJyYWNlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNlLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFR5cGVEZWYoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlR5cGVEZWYsIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTm9uTnZEYXRhTWFwKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5Ob25OdkRhdGFNYXAsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3Ry aW5nSWRlbnRpZmllcihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VucyhWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckRhdGFVbmlvbkRlZmluaXRpb24NCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJz ZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9y LCAidmlzaXRWZnJEYXRhVW5pb25EZWZpbml0aW9uIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckRhdGFVbmlvbkRlZmluaXRpb24oc2VsZikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJEYXRhVW5pb25EZWZp bml0aW9uKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBW ZnJTeW50YXhQYXJzZXIuVmZyRGF0YVVuaW9uRGVmaW5pdGlvbkNvbnRleHQoc2VsZiwNCj4gc2Vs Zi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVs ZShsb2NhbGN0eCwgMTIsIHNlbGYuUlVMRV92ZnJEYXRhVW5pb25EZWZpbml0aW9uKQ0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAg dHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDYwDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAg ICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9 PVZmclN5bnRheFBhcnNlci5UeXBlRGVmOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gNDU5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlR5cGVEZWYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ2Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlVuaW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA0NjQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk5vbk52RGF0YU1hcDoNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ2Mw0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Ob25OdkRhdGFNYXApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ2 Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcjoNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ2Ng0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBsb2NhbGN0eC5OMSA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lk ZW50aWZpZXIpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDQ2OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk9wZW5CcmFjZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g NDcwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJEYXRhU3RydWN0RmllbGRzKFRydWUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ3MQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2UpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ3Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJz ZXIuU3RyaW5nSWRlbnRpZmllcjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDQ3Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5OMiA9IHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ3NQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAg ICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0K PiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBjbGFzcyBWZnJEYXRhU3RydWN0RmllbGRzQ29udGV4dChQYXJzZXJSdWxlQ29u dGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg cGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRl OmludD0tMSwgRmllbGRJblVuaW9uPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVy KCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5GaWVsZElu VW5pb24gPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBG aWVsZEluVW5pb24NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBkYXRhU3RydWN0 RmllbGQ2NChzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlz IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZDY0Q29udGV4dCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkRhdGFT dHJ1Y3RGaWVsZDY0Q29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZDMyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRGF0 YVN0cnVjdEZpZWxkMzJDb250ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkMzJDb250ZXh0LGkpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZGF0YVN0cnVjdEZpZWxkMTYoc2Vs ZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHRzKFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGQxNkNvbnRleHQpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGQx NkNvbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBkYXRhU3RydWN0RmllbGQ4KHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxk OENvbnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5EYXRhU3RydWN0RmllbGQ4Q29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZEJvb2woc2VsZiwgaTppbnQ9Tm9u ZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRh eFBhcnNlci5EYXRhU3RydWN0RmllbGRCb29sQ29udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZEJvb2xDb250ZXh0 LGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZGF0YVN0 cnVjdEZpZWxkU3RyaW5nKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkU3Ry aW5nQ29udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZFN0cmluZ0NvbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBkYXRhU3RydWN0RmllbGREYXRlKHNlbGYsIGk6 aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhW ZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkRGF0ZUNvbnRleHQpDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGREYXRl Q29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IGRhdGFTdHJ1Y3RGaWVsZFRpbWUoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4g PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0Rmll bGRUaW1lQ29udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZFRpbWVDb250ZXh0LGkpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZGF0YVN0cnVjdEZpZWxkUmVmKHNlbGYsIGk6 aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhW ZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkUmVmQ29udGV4dCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZFJlZkNv bnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBk YXRhU3RydWN0RmllbGRVc2VyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxk VXNlckNvbnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5EYXRhU3RydWN0RmllbGRVc2VyQ29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RCaXRGaWVsZDY0KHNlbGYsIGk6 aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhW ZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEJpdEZpZWxkNjRDb250ZXh0KQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEJpdEZpZWxk NjRDb250ZXh0LGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgZGF0YVN0cnVjdEJpdEZpZWxkMzIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4N Cj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0 Qml0RmllbGQzMkNvbnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5EYXRhU3RydWN0Qml0RmllbGQzMkNvbnRleHQsaSkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBkYXRhU3RydWN0Qml0RmllbGQxNihz ZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dHMoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RCaXRGaWVsZDE2Q29udGV4dCkNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4N Cj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RC aXRGaWVsZDE2Q29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIGRhdGFTdHJ1Y3RCaXRGaWVsZDgoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5EYXRh U3RydWN0Qml0RmllbGQ4Q29udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RCaXRGaWVsZDhDb250ZXh0LGkpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJE YXRhU3RydWN0RmllbGRzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0 KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyRGF0YVN0cnVjdEZpZWxkcyIgKToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJEYXRhU3RydWN0Rmll bGRzKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZy RGF0YVN0cnVjdEZpZWxkcyhzZWxmLCBGaWVsZEluVW5pb24pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyRGF0YVN0cnVjdEZpZWxk c0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUsIEZpZWxkSW5VbmlvbikN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxNCwgc2VsZi5SVUxF X3ZmckRhdGFTdHJ1Y3RGaWVsZHMpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBU b2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA0OTMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5 bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHdoaWxlICgoKChfbGEgLSA4MCkpICYgfjB4M2YpID09IDAg YW5kICgoMSA8PCAoX2xhIC0gODApKSAmICgoMSA8PA0KPiA+IChWZnJTeW50YXhQYXJzZXIuQm9v bGVhbiAtIDgwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlVpbnQ2NCAtIDgwKSkgfCAoMSA8 PA0KPiA+IChWZnJTeW50YXhQYXJzZXIuVWludDMyIC0gODApKSB8ICgxIDw8IChWZnJTeW50YXhQ YXJzZXIuVWludDE2IC0gODApKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5VaW50OCAt IDgwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkVGSV9TVFJJTkdfSUQgLSA4MCkpIHwNCj4g KDENCj4gPiA8PCAoVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfREFURSAtIDgwKSkgfCAoMSA8PA0K PiAoVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfVElNRQ0KPiA+IC0gODApKSB8ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuRUZJX0hJSV9SRUYgLSA4MCkpKSkgIT0gMCkgb3INCj4gPiBfbGE9PVZmclN5 bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNDkxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBsYV8gPSBzZWxmLl9pbnRl cnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDE1LHNlbGYuX2N0eCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgaWYgbGFfID09IDE6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNDc3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLmRh dGFTdHJ1Y3RGaWVsZDY0KEZpZWxkSW5VbmlvbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIHBhc3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZWxpZiBsYV8g PT0gMjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NzgNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YVN0cnVjdEZpZWxkMzIoRmllbGRJ blVuaW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBlbGlmIGxhXyA9PSAzOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ3OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5kYXRhU3RydWN0RmllbGQxNihGaWVsZEluVW5pb24pDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIGVsaWYgbGFfID09IDQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNDgwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGFTdHJ1Y3RG aWVsZDgoRmllbGRJblVuaW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgcGFzcw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBlbGlmIGxhXyA9PSA1Og0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ4MQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhU3RydWN0RmllbGRCb29sKEZpZWxkSW5VbmlvbikN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgZWxpZiBsYV8gPT0gNjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA0ODINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNl bGYuZGF0YVN0cnVjdEZpZWxkU3RyaW5nKEZpZWxkSW5VbmlvbikNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ZWxpZiBsYV8gPT0gNzoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA0ODMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YVN0cnVjdEZpZWxk RGF0ZShGaWVsZEluVW5pb24pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBwYXNzDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGVsaWYgbGFfID09IDg6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDg0DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBzZWxmLmRhdGFTdHJ1Y3RGaWVsZFRpbWUoRmllbGRJblVuaW9uKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBlbGlmIGxhXyA9PSA5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDQ4NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5kYXRhU3RydWN0RmllbGRSZWYoRmllbGRJblVuaW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBlbGlm IGxhXyA9PSAxMDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0 ODYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YVN0cnVjdEZpZWxkVXNl cihGaWVsZEluVW5pb24pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBwYXNzDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGVsaWYgbGFfID09IDExOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ4Nw0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5kYXRhU3RydWN0Qml0RmllbGQ2NChGaWVsZEluVW5pb24pDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIGVsaWYgbGFfID09IDEyOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDQ4OA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5kYXRhU3RydWN0Qml0RmllbGQzMihGaWVsZEluVW5pb24pDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGVs aWYgbGFfID09IDEzOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDQ4OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhU3RydWN0Qml0Rmll bGQxNihGaWVsZEluVW5pb24pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBwYXNzDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGVsaWYgbGFfID09IDE0Og0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ5MA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhU3RydWN0Qml0RmllbGQ4KEZpZWxkSW5VbmlvbikN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ5NQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAg ICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4g Pg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBjbGFzcyBEYXRhU3RydWN0RmllbGQ2NENvbnRleHQoUGFyc2VyUnVsZUNv bnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYs IHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0 ZTppbnQ9LTEsIEZpZWxkSW5Vbmlvbj1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRmllbGRJ blVuaW9uID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tl bg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gRmllbGRJblVuaW9u DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgVWludDY0KHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VaW50 NjQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5TZW1pY29sb24sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3Ry aW5nSWRlbnRpZmllcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBPcGVuQnJhY2tldChzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQs IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5O dW1iZXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VCcmFja2V0 KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5DbG9zZUJyYWNrZXQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBW ZnJTeW50YXhQYXJzZXIuUlVMRV9kYXRhU3RydWN0RmllbGQ2NA0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdERhdGFTdHJ1 Y3RGaWVsZDY0IiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdERhdGFTdHJ1Y3RGaWVsZDY0KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihz ZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBkZWYgZGF0YVN0cnVjdEZpZWxkNjQoc2VsZiwgRmllbGRJblVuaW9uKToNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkRh dGFTdHJ1Y3RGaWVsZDY0Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSwg RmllbGRJblVuaW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDE2LCBzZWxmLlJVTEVfZGF0YVN0cnVjdEZpZWxkNjQpDQo+ID4NCj4gPiArICAgICAgICBzZWxm Ll9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA0OTYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5VaW50NjQpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDQ5Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA1MDENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgx KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk9wZW5CcmFj a2V0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDk4DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0 KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDk5DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUwMA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUwMw0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xv bikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+ DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBEYXRhU3RydWN0RmllbGQzMkNvbnRleHQoUGFy c2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52 b2tpbmdTdGF0ZTppbnQ9LTEsIEZpZWxkSW5Vbmlvbj1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuRmllbGRJblVuaW9uID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTiA9IE5v bmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gRmll bGRJblVuaW9uDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgVWludDMyKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5VaW50MzIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNv bG9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBPcGVuQnJhY2tldChzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3Bl bkJyYWNrZXQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5OdW1iZXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xv c2VCcmFja2V0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9kYXRhU3RydWN0RmllbGQzMg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZp c2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNp dERhdGFTdHJ1Y3RGaWVsZDMyIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdERhdGFTdHJ1Y3RGaWVsZDMyKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRD aGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgZGF0YVN0cnVjdEZpZWxkMzIoc2VsZiwgRmllbGRJblVu aW9uKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4 UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZDMyQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2Vs Zi5zdGF0ZSwgRmllbGRJblVuaW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUo bG9jYWxjdHgsIDE4LCBzZWxmLlJVTEVfZGF0YVN0cnVjdEZpZWxkMzIpDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MDUNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VaW50MzIpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDUwNg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MTANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9p bnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2Vy Lk9wZW5CcmFja2V0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTA3 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9w ZW5CcmFja2V0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTA4DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJl cikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUwOQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDUxMg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlv biBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwg cmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYs IHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBEYXRhU3RydWN0RmllbGQxNkNv bnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUs DQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEZpZWxkSW5Vbmlvbj1Ob25lKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuTiA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVu aW9uID0gRmllbGRJblVuaW9uDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgVWlu dDE2KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5VaW50MTYsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmll ciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBPcGVuQnJhY2tldChzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuT3BlbkJyYWNrZXQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg TnVtYmVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgQ2xvc2VCcmFja2V0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQsIDApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9kYXRhU3RydWN0RmllbGQxNg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBh cnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0 b3IsICJ2aXNpdERhdGFTdHJ1Y3RGaWVsZDE2IiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdERhdGFTdHJ1Y3RGaWVsZDE2KHNlbGYpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgZGF0YVN0cnVjdEZpZWxkMTYoc2VsZiwg RmllbGRJblVuaW9uKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0g VmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZDE2Q29udGV4dChzZWxmLCBzZWxmLl9jdHgs DQo+ID4gc2VsZi5zdGF0ZSwgRmllbGRJblVuaW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5l bnRlclJ1bGUobG9jYWxjdHgsIDIwLCBzZWxmLlJVTEVfZGF0YVN0cnVjdEZpZWxkMTYpDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAg ICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MTQNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VaW50MTYpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUxNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2Fs Y3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MTkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEg PSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3lu dGF4UGFyc2VyLk9wZW5CcmFja2V0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNTE2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk9wZW5CcmFja2V0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNTE3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUxOA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9z ZUJyYWNrZXQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDUyMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlv bkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRp b24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0 eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBEYXRhU3RydWN0 RmllbGQ4Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRl eHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRmllbGRJblVuaW9uPU5vbmUpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0 YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBOb25lDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5G aWVsZEluVW5pb24gPSBGaWVsZEluVW5pb24NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBVaW50OChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuVWludDgsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRl bnRpZmllciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBPcGVuQnJhY2tl dChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuT3BlbkJyYWNrZXQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgTnVtYmVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgQ2xvc2VCcmFja2V0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQsIDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9kYXRhU3RydWN0Rmll bGQ4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0 b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0cigg dmlzaXRvciwgInZpc2l0RGF0YVN0cnVjdEZpZWxkOCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREYXRhU3RydWN0RmllbGQ4KHNlbGYpDQo+ID4NCj4g PiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgZGF0YVN0cnVjdEZpZWxkOChzZWxm LCBGaWVsZEluVW5pb24pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHgg PSBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkOENvbnRleHQoc2VsZiwgc2VsZi5fY3R4 LA0KPiA+IHNlbGYuc3RhdGUsIEZpZWxkSW5VbmlvbikNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu ZW50ZXJSdWxlKGxvY2FsY3R4LCAyMiwgc2VsZi5SVUxFX2RhdGFTdHJ1Y3RGaWVsZDgpDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAg ICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MjMNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VaW50OCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gNTI0DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxj dHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUyOA0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9 IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50 YXhQYXJzZXIuT3BlbkJyYWNrZXQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA1MjUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuT3BlbkJyYWNrZXQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA1MjYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTI3DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3Nl QnJhY2tldCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNTMwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9u RXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlv biA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJv cihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292 ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIERhdGFTdHJ1Y3RG aWVsZEJvb2xDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29u dGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBGaWVsZEluVW5pb249Tm9uZSk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5n U3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IE5vbmUNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LkZpZWxkSW5VbmlvbiA9IEZpZWxkSW5Vbmlvbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIEJvb2xlYW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJvb2xlYW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3Ry aW5nSWRlbnRpZmllciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBPcGVu QnJhY2tldChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgQ2xvc2VCcmFja2V0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQsIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9kYXRhU3Ry dWN0RmllbGRCb29sDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNl bGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYg aGFzYXR0ciggdmlzaXRvciwgInZpc2l0RGF0YVN0cnVjdEZpZWxkQm9vbCIgKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREYXRhU3RydWN0RmllbGRCb29s KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgZGF0YVN0 cnVjdEZpZWxkQm9vbChzZWxmLCBGaWVsZEluVW5pb24pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkQm9vbENv bnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUsIEZpZWxkSW5VbmlvbikNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNCwgc2VsZi5SVUxFX2Rh dGFTdHJ1Y3RGaWVsZEJvb2wpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tl biB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA1MzINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Cb29sZWFuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MzMNCj4g Pg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g NTM3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUzNA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUzNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA1MzYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MzkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiAr ICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAg IGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4g PiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgY2xhc3MgRGF0YVN0cnVjdEZpZWxkU3RyaW5nQ29udGV4dChQYXJzZXJSdWxlQ29u dGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg cGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRl OmludD0tMSwgRmllbGRJblVuaW9uPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVy KCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5GaWVsZElu VW5pb24gPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2Vu DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBGaWVsZEluVW5pb24N Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBFRklfU1RSSU5HX0lEKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5FRklfU1RSSU5HX0lELCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFNl bWljb2xvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgT3BlbkJyYWNrZXQoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy Lk9wZW5CcmFja2V0LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJl cihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IENsb3NlQnJhY2tldChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0LCAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZGF0YVN0cnVjdEZpZWxkU3RyaW5nDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRv ciwgInZpc2l0RGF0YVN0cnVjdEZpZWxkU3RyaW5nIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdERhdGFTdHJ1Y3RGaWVsZFN0cmluZyhzZWxmKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZFN0 cmluZyhzZWxmLCBGaWVsZEluVW5pb24pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg bG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkU3RyaW5nQ29udGV4dChz ZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSwgRmllbGRJblVuaW9uKQ0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI2LCBzZWxmLlJVTEVfZGF0YVN0cnVj dEZpZWxkU3RyaW5nKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlw ZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50 ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNTQxDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu RUZJX1NUUklOR19JRCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTQyDQo+ ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDU0Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQ6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NDMNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NDQNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNTQ1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTQ4DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4g KyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAg ICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgIGNsYXNzIERhdGFTdHJ1Y3RGaWVsZERhdGVDb250ZXh0KFBhcnNlclJ1bGVDb250 ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw YXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6 aW50PS0xLCBGaWVsZEluVW5pb249Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIo KS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkZpZWxkSW5V bmlvbiA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4N Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IEZpZWxkSW5Vbmlvbg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEVGSV9ISUlfREFURShzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu RUZJX0hJSV9EQVRFLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFNlbWlj b2xvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgT3BlbkJyYWNrZXQoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9w ZW5CcmFja2V0LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENs b3NlQnJhY2tldChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZGF0YVN0cnVjdEZpZWxkRGF0ZQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJl ZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2 aXNpdERhdGFTdHJ1Y3RGaWVsZERhdGUiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0RGF0YVN0cnVjdEZpZWxkRGF0ZShzZWxmKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZERhdGUoc2VsZiwg RmllbGRJblVuaW9uKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0g VmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZERhdGVDb250ZXh0KHNlbGYsIHNlbGYuX2N0 eCwNCj4gPiBzZWxmLnN0YXRlLCBGaWVsZEluVW5pb24pDQo+ID4NCj4gPiArICAgICAgICBzZWxm LmVudGVyUnVsZShsb2NhbGN0eCwgMjgsIHNlbGYuUlVMRV9kYXRhU3RydWN0RmllbGREYXRlKQ0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAg ICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTUwDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9EQVRFKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NTENCj4gPg0KPiA+ICsgICAgICAg ICAgICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRp ZmllcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTU1DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAg ICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBf bGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDU1Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDU1Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA1NTQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ2xvc2VCcmFja2V0KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NTcNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQg UmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1 cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3Mg RGF0YVN0cnVjdEZpZWxkVGltZUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBh cnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEZpZWxkSW5V bmlvbj1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVu dCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBh cnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gTm9uZQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gRmllbGRJblVuaW9uDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgRUZJX0hJSV9USU1FKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FRklfSElJX1RJTUUsIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5T ZW1pY29sb24sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5nSWRl bnRpZmllcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBPcGVuQnJhY2tldChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQsIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIs IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VCcmFja2V0KHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5DbG9zZUJyYWNrZXQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg Z2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50 YXhQYXJzZXIuUlVMRV9kYXRhU3RydWN0RmllbGRUaW1lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0RGF0YVN0cnVjdEZp ZWxkVGltZSIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXREYXRhU3RydWN0RmllbGRUaW1lKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihz ZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBkZWYgZGF0YVN0cnVjdEZpZWxkVGltZShzZWxmLCBGaWVsZEluVW5pb24pOg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu RGF0YVN0cnVjdEZpZWxkVGltZUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3Rh dGUsIEZpZWxkSW5VbmlvbikNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2Fs Y3R4LCAzMCwgc2VsZi5SVUxFX2RhdGFTdHJ1Y3RGaWVsZFRpbWUpDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NTkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FRklfSElJX1RJTUUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDU2MA0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4Lk4g PSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NjQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFy c2VyLk9wZW5CcmFja2V0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g NTYxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk9wZW5CcmFja2V0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTYy DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU2Mw0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNr ZXQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDU2Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2Vw dGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSBy ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2Vs ZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNl bGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBEYXRhU3RydWN0RmllbGRS ZWZDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1O b25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBGaWVsZEluVW5pb249Tm9uZSk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkZpZWxk SW5VbmlvbiA9IEZpZWxkSW5Vbmlvbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IEVGSV9ISUlfUkVGKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5FRklfSElJX1JFRiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5T dHJpbmdJZGVudGlmaWVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9w ZW5CcmFja2V0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZUJyYWNrZXQoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCwg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2RhdGFT dHJ1Y3RGaWVsZFJlZg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChz ZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlm IGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdERhdGFTdHJ1Y3RGaWVsZFJlZiIgKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREYXRhU3RydWN0RmllbGRSZWYo c2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBkYXRhU3Ry dWN0RmllbGRSZWYoc2VsZiwgRmllbGRJblVuaW9uKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZFJlZkNvbnRl eHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUsIEZpZWxkSW5VbmlvbikNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzMiwgc2VsZi5SVUxFX2RhdGFT dHJ1Y3RGaWVsZFJlZikNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5 cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDU2OA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkVGSV9ISUlfUkVGKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NjkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g NTczDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU3MA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU3MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA1NzINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NzUNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiAr ICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAg IGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4g PiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgY2xhc3MgRGF0YVN0cnVjdEZpZWxkVXNlckNvbnRleHQoUGFyc2VyUnVsZUNvbnRl eHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh cnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTpp bnQ9LTEsIEZpZWxkSW5Vbmlvbj1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigp Ll9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVu aW9uID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuVCA9IE5vbmUgIyBUb2tlbg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gRmllbGRJblVuaW9uDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmLCBp OmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIu U3RyaW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3Ry aW5nSWRlbnRpZmllciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBPcGVu QnJhY2tldChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgQ2xvc2VCcmFja2V0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQsIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9kYXRhU3Ry dWN0RmllbGRVc2VyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNl bGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYg aGFzYXR0ciggdmlzaXRvciwgInZpc2l0RGF0YVN0cnVjdEZpZWxkVXNlciIgKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREYXRhU3RydWN0RmllbGRVc2Vy KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgZGF0YVN0 cnVjdEZpZWxkVXNlcihzZWxmLCBGaWVsZEluVW5pb24pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkVXNlckNv bnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUsIEZpZWxkSW5VbmlvbikNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzNCwgc2VsZi5SVUxFX2Rh dGFTdHJ1Y3RGaWVsZFVzZXIpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tl biB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA1NzcNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5UID0gc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNTc4DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDU4Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIu T3BlbkJyYWNrZXQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NzkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3Bl bkJyYWNrZXQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1ODANCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVy KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTgxDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNTg0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu U2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9u IGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCBy ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwg cmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIERhdGFTdHJ1Y3RCaXRGaWVsZDY0 Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9u ZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRmllbGRJblVuaW9uPU5vbmUpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5EID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5OID0gTm9u ZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBGaWVs ZEluVW5pb24NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb2xvbihzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuQ29sb24sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5OdW1iZXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU2Vt aWNvbG9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgVWludDY0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VaW50NjQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmll ciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2Rh dGFTdHJ1Y3RCaXRGaWVsZDY0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNj ZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0RGF0YVN0cnVjdEJpdEZpZWxkNjQiICk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RGF0YVN0cnVjdEJp dEZpZWxkNjQoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiBkYXRhU3RydWN0Qml0RmllbGQ2NChzZWxmLCBGaWVsZEluVW5pb24pOg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEJp dEZpZWxkNjRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlLCBGaWVsZElu VW5pb24pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzYsIHNl bGYuUlVMRV9kYXRhU3RydWN0Qml0RmllbGQ2NCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xh ID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDU4Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LkQg PSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VaW50NjQpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDU4OA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxB KDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuU3RyaW5n SWRlbnRpZmllcjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU4Nw0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTkwDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29sb24pDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDU5MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTky DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNv bG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhp dFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIERhdGFTdHJ1Y3RCaXRGaWVsZDMyQ29udGV4 dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg X19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4g PiBpbnZva2luZ1N0YXRlOmludD0tMSwgRmllbGRJblVuaW9uPU5vbmUpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5GaWVsZEluVW5pb24gPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5E ID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRv a2VuDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBGaWVsZEluVW5p b24NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb2xvbihzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29s b24sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5OdW1iZXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNvbG9u KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgVWludDMyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5VaW50MzIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2RhdGFTdHJ1 Y3RCaXRGaWVsZDMyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNl bGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYg aGFzYXR0ciggdmlzaXRvciwgInZpc2l0RGF0YVN0cnVjdEJpdEZpZWxkMzIiICk6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RGF0YVN0cnVjdEJpdEZpZWxk MzIoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBkYXRh U3RydWN0Qml0RmllbGQzMihzZWxmLCBGaWVsZEluVW5pb24pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEJpdEZpZWxk MzJDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlLCBGaWVsZEluVW5pb24p DQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzgsIHNlbGYuUlVM RV9kYXRhU3RydWN0Qml0RmllbGQzMikNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAj IFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDU5NA0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LkQgPSBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5VaW50MzIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDU5Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRp ZmllcjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU5NQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gNTk4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ29sb24pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDU5OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjAwDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0K PiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4g PiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUo KQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGNsYXNzIERhdGFTdHJ1Y3RCaXRGaWVsZDE2Q29udGV4dChQYXJz ZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0 X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZv a2luZ1N0YXRlOmludD0tMSwgRmllbGRJblVuaW9uPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5GaWVsZEluVW5pb24gPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5EID0gTm9u ZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBGaWVsZEluVW5pb24NCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb2xvbihzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29sb24sIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1i ZXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5TZW1pY29sb24sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgVWlu dDE2KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5VaW50MTYsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2RhdGFTdHJ1Y3RCaXRG aWVsZDE2DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZp c2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0 ciggdmlzaXRvciwgInZpc2l0RGF0YVN0cnVjdEJpdEZpZWxkMTYiICk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RGF0YVN0cnVjdEJpdEZpZWxkMTYoc2Vs ZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBkYXRhU3RydWN0 Qml0RmllbGQxNihzZWxmLCBGaWVsZEluVW5pb24pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEJpdEZpZWxkMTZDb250 ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlLCBGaWVsZEluVW5pb24pDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgNDAsIHNlbGYuUlVMRV9kYXRh U3RydWN0Qml0RmllbGQxNikNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2Vu IHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDYwMg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LkQgPSBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5VaW50MTYpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDYwNA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcjoN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYwMw0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3Ry aW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gNjA2DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ29sb24pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDYwNw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjA4DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAg ICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGNsYXNzIERhdGFTdHJ1Y3RCaXRGaWVsZDhDb250ZXh0KFBhcnNlclJ1bGVD b250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm LCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3Rh dGU6aW50PS0xLCBGaWVsZEluVW5pb249Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3Vw ZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkZpZWxk SW5VbmlvbiA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkQgPSBOb25lICMgVG9r ZW4NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IEZpZWxkSW5Vbmlvbg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbG9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db2xvbiwgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNl bWljb2xvbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBVaW50OChzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuVWludDgsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5n SWRlbnRpZmllcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2RhdGFTdHJ1Y3RCaXRGaWVsZDgNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJz ZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9y LCAidmlzaXREYXRhU3RydWN0Qml0RmllbGQ4IiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdERhdGFTdHJ1Y3RCaXRGaWVsZDgoc2VsZikNCj4gPg0KPiA+ ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBkYXRhU3RydWN0Qml0RmllbGQ4KHNl bGYsIEZpZWxkSW5Vbmlvbik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0 eCA9IFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0Qml0RmllbGQ4Q29udGV4dChzZWxmLCBzZWxm Ll9jdHgsDQo+ID4gc2VsZi5zdGF0ZSwgRmllbGRJblVuaW9uKQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDQyLCBzZWxmLlJVTEVfZGF0YVN0cnVjdEJpdEZpZWxk OCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYxMA0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LkQgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5VaW50OCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjEyDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAg ICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBfbGE9PVZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gNjExDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxv Y2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA2MTQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D b2xvbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjE1DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MTYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICBleGNl cHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9j YWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICBy ZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xh c3MgVmZyRm9ybVNldERlZmluaXRpb25Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVu dDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0 ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfRk9STV9TRVRfT1Ap DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRm9ybVNldChzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRm9y bVNldCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBVdWlkKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5VdWlkLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGd1aWREZWZpbml0 aW9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuR3VpZERlZmluaXRpb25Db250ZXh0LDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwg aTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBUaXRsZShzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVGl0bGUsIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5nVG9rZW4oc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlN0 cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tl biwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZiwg aTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2Vy Lk9wZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVu LCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmlu dD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVt YmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmLCBpOmludD1Ob25l KToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJl bikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgaSkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBIZWxwKHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5IZWxwLCAwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmckZvcm1TZXRMaXN0KHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZyRm9ybVNldExpc3RDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRW5kRm9ybVNldChzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5k Rm9ybVNldCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24o c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBDbGFzc0d1aWQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsYXNzR3VpZCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBjbGFzc2d1aWREZWZpbml0aW9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuQ2xhc3NndWlkRGVmaW5pdGlvbkNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbGFzcyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xhc3MsIDApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgY2xhc3NEZWZpbml0aW9uKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuQ2xhc3NEZWZpbml0aW9uQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFN1YmNsYXNzKHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdWJjbGFzcywg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBzdWJjbGFzc0RlZmluaXRpb24o c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5TdWJjbGFzc0RlZmluaXRpb25Db250ZXh0LDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4 KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVM RV92ZnJGb3JtU2V0RGVmaW5pdGlvbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckZvcm1TZXREZWZpbml0aW9uIiAp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckZvcm1T ZXREZWZpbml0aW9uKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBkZWYgdmZyRm9ybVNldERlZmluaXRpb24oc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJGb3JtU2V0RGVmaW5pdGlvbkNv bnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgNDQsIHNlbGYuUlVMRV92ZnJGb3JtU2V0RGVmaW5p dGlvbikNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0K PiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYxOA0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZvcm1TZXQp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYxOQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlV1aWQpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDYyMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDYyMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZ3VpZERlZmluaXRpb24oKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MjINCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNjIzDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuVGl0bGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYyNA0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYyNQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MjYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDYyNw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjI4DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJl bikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjI5DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDYzMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkhlbHApDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDYzMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYzMg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MzMNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDYzNA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNjM1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjM2DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY0Mg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9 IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50 YXhQYXJzZXIuQ2xhc3NHdWlkOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNjM3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkNsYXNzR3VpZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYz OA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5U X181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjM5DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NndWlkRGVmaW5pdGlvbihsb2NhbGN0eC5Ob2Rl KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjQwDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NDkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0K PiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkNsYXNzOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNjQ0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsYXNzKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNjQ1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA2NDYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5jbGFzc0RlZmluaXRpb24oKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjQ3DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NTYNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLlN1YmNsYXNzOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNjUxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlN1YmNsYXNzKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNjUyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA2NTMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdWJjbGFzc0RlZmluaXRp b24oKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjU0DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2 NTgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnZmckZvcm1TZXRMaXN0KGxvY2FsY3R4Lk5v ZGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY1OQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuZEZvcm1TZXQpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY2MA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4 Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBs b2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAg IHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBj bGFzcyBDbGFzc2d1aWREZWZpbml0aW9uQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJl bnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSwgTm9k ZT1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwg aW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNl cg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLkd1aWRMaXN0ID0gW10NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5v ZGUgPSBOb2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ3VpZERlZmluaXRp b24oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNvbnRleHQpDQo+ID4NCj4g PiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlv bkNvbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYg aSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3lu dGF4UGFyc2VyLlJVTEVfY2xhc3NndWlkRGVmaW5pdGlvbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdENsYXNzZ3VpZERl ZmluaXRpb24iICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2xhc3NndWlkRGVmaW5pdGlvbihzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgZGVmIGNsYXNzZ3VpZERlZmluaXRpb24oc2VsZiwgTm9kZSk6DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5DbGFzc2d1 aWREZWZpbml0aW9uQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSwgTm9k ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA0Niwgc2VsZi5S VUxFX2NsYXNzZ3VpZERlZmluaXRpb24pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAg IyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA2NjINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmd1aWREZWZpbml0 aW9uKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjY1DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAg ICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCwzNCxz ZWxmLl9jdHgpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgbGFfID09IDE6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NjMNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gNjY0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuZ3VpZERlZmluaXRpb24oKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NjkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBsYV8gPSBzZWxmLl9p bnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDM1LHNlbGYuX2N0eCkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBsYV8gPT0gMToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDY2Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA2NjgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5ndWlkRGVmaW5pdGlvbigp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDY3Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjcxDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY3Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLmd1aWREZWZpbml0aW9uKCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAg ICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0K PiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBjbGFzcyBDbGFzc0RlZmluaXRpb25Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0 KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJz ZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50 PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52 b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfR1VJ RF9PUCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2YWxpZENsYXNzTmFtZXMo c2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHRzKFZmclN5bnRheFBhcnNlci5WYWxpZENsYXNzTmFtZXNDb250ZXh0KQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+ IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmFsaWRDbGFzc05hbWVz Q29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBp IGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu cyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5CaXRXaXNlT3IsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg Z2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50 YXhQYXJzZXIuUlVMRV9jbGFzc0RlZmluaXRpb24NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRDbGFzc0RlZmluaXRpb24i ICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2xhc3NE ZWZpbml0aW9uKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBk ZWYgY2xhc3NEZWZpbml0aW9uKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg bG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQ2xhc3NEZWZpbml0aW9uQ29udGV4dChzZWxmLCBz ZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJS dWxlKGxvY2FsY3R4LCA0OCwgc2VsZi5SVUxFX2NsYXNzRGVmaW5pdGlvbikNCj4gPg0KPiA+ICsg ICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY3NQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYudmFsaWRDbGFzc05hbWVzKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNjgwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0K PiA+ICsgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NzYNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjc3DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYudmFsaWRDbGFzc05hbWVzKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDY4Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5w dXQuTEEoMSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlv bkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRp b24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0 eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWYWxpZENsYXNz TmFtZXNDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4 dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu Q2xhc3NOYW1lID0gMA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsYXNzTm9u RGV2aWNlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5DbGFzc05vbkRldmljZSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBDbGFzc0Rpc2tEZXZpY2Uoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsYXNzRGlza0RldmljZSwg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbGFzc1ZpZGVvRGV2aWNlKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5DbGFzc1ZpZGVvRGV2aWNlLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIENsYXNzTmV0d29ya0RldmljZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xhc3NOZXR3b3JrRGV2aWNlLCAw KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsYXNzSW5wdXREZXZpY2Uoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkNsYXNzSW5wdXREZXZpY2UsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgQ2xhc3NPbkJvYXJkRGV2aWNlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbGFzc09uQm9hcmREZXZpY2UsIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xhc3NPdGhlckRldmljZShzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuQ2xhc3NPdGhlckRldmljZSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBOdW1iZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZhbGlkQ2xhc3NOYW1lcw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3Ip Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZhbGlk Q2xhc3NOYW1lcyIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRWYWxpZENsYXNzTmFtZXMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNl bGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgIGRlZiB2YWxpZENsYXNzTmFtZXMoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WYWxpZENsYXNzTmFtZXNDb250 ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDUwLCBzZWxmLlJVTEVfdmFsaWRDbGFzc05hbWVzKQ0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAg ICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjgzDQo+ID4NCj4g PiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBpZiBub3QoKCgoKF9sYSAtIDE3MCkpICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCAoX2xh IC0gMTcwKSkgJiAoKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLkNsYXNzTm9uRGV2aWNlIC0g MTcwKSkgfCAoMSA8PA0KPiA+IChWZnJTeW50YXhQYXJzZXIuQ2xhc3NEaXNrRGV2aWNlIC0gMTcw KSkgfCAoMSA8PA0KPiA+IChWZnJTeW50YXhQYXJzZXIuQ2xhc3NWaWRlb0RldmljZSAtIDE3MCkp IHwgKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLkNsYXNzTmV0d29ya0RldmljZSAtIDE3MCkp IHwgKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLkNsYXNzSW5wdXREZXZpY2UgLSAxNzApKSB8 ICgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5DbGFzc09uQm9hcmREZXZpY2UgLSAxNzApKSB8 ICgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5DbGFzc090aGVyRGV2aWNlIC0gMTcwKSkpKSAh PSAwKSBvcg0KPiA+IF9sYT09VmZyU3ludGF4UGFyc2VyLk51bWJlcik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcklubGluZShzZWxmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0TWF0Y2goc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5jb25zdW1lKCkNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlv biBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwg cmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYs IHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBTdWJjbGFzc0RlZmluaXRpb25D b250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25l LA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9 IElmclRyZWVOb2RlKEVGSV9JRlJfR1VJRF9PUCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBTdWJjbGFzc1NldHVwQXBwbGljYXRpb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN1YmNsYXNzU2V0dXBB cHBsaWNhdGlvbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdWJjbGFz c0dlbmVyYWxBcHBsaWNhdGlvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3ViY2xhc3NHZW5lcmFsQXBwbGljYXRpb24s IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3ViY2xhc3NGcm9udFBhZ2Uo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlN1YmNsYXNzRnJvbnRQYWdlLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIFN1YmNsYXNzU2luZ2xlVXNlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdWJjbGFzc1NpbmdsZVVzZSwg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51 bWJlciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxF X3N1YmNsYXNzRGVmaW5pdGlvbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFj Y2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFN1YmNsYXNzRGVmaW5pdGlvbiIgKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRTdWJjbGFzc0RlZmlu aXRpb24oc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBz dWJjbGFzc0RlZmluaXRpb24oc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBs b2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5TdWJjbGFzc0RlZmluaXRpb25Db250ZXh0KHNlbGYs IHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRl clJ1bGUobG9jYWxjdHgsIDUyLCBzZWxmLlJVTEVfc3ViY2xhc3NEZWZpbml0aW9uKQ0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAg dHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjg1DQo+ID4NCj4gPiArICAg ICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBub3QoKCgoKF9sYSAtIDE3NykpICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCAoX2xhIC0gMTc3 KSkgJiAoKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLlN1YmNsYXNzU2V0dXBBcHBsaWNhdGlv biAtIDE3NykpIHwgKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLlN1YmNsYXNzR2VuZXJhbEFw cGxpY2F0aW9uIC0gMTc3KSkgfCAoMSA8PA0KPiA+IChWZnJTeW50YXhQYXJzZXIuU3ViY2xhc3NG cm9udFBhZ2UgLSAxNzcpKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5TdWJjbGFzc1Np bmdsZVVzZSAtIDE3NykpKSkgIT0gMCkgb3INCj4gPiBfbGE9PVZmclN5bnRheFBhcnNlci5OdW1i ZXIpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXJJ bmxpbmUoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydE1hdGNoKHNlbGYpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuY29uc3VtZSgpDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQg UmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1 cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3Mg VmZyRm9ybVNldExpc3RDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJS dWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBOb2RlPU5vbmUpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0 YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuTm9kZSA9IE5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJGb3Jt U2V0KHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyRm9ybVNldENvbnRleHQpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJGb3JtU2V0Q29udGV4 dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1 bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFy c2VyLlJVTEVfdmZyRm9ybVNldExpc3QNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJGb3JtU2V0TGlzdCIgKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJGb3JtU2V0TGlz dChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmckZv cm1TZXRMaXN0KHNlbGYsIE5vZGUpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9j YWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyRm9ybVNldExpc3RDb250ZXh0KHNlbGYsIHNlbGYu X2N0eCwNCj4gc2VsZi5zdGF0ZSwNCj4gPiBOb2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5l bnRlclJ1bGUobG9jYWxjdHgsIDU0LCBzZWxmLlJVTEVfdmZyRm9ybVNldExpc3QpDQo+ID4NCj4g PiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0 cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2OTANCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHdoaWxlIF9s YT09VmZyU3ludGF4UGFyc2VyLkZvcm0gb3IgX2xhPT1WZnJTeW50YXhQYXJzZXIuRm9ybU1hcA0K PiA+IG9yICgoKChfbGEgLSAxMDUpKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDEw NSkpICYgKCgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmIC0gMTA1KSkgfCAo MSA8PCAoVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZiAtIDEwNSkpDQo+IHwNCj4gPiAoMSA8PCAo VmZyU3ludGF4UGFyc2VyLkltYWdlIC0gMTA1KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkRl ZmF1bHRTdG9yZSAtDQo+ID4gMTA1KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlZhcnN0b3Jl IC0gMTA1KSkgfCAoMSA8PA0KPiA+IChWZnJTeW50YXhQYXJzZXIuRWZpdmFyc3RvcmUgLSAxMDUp KSB8ICgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5OYW1lVmFsdWVWYXJTdG9yZSAtIDEwNSkp IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5HdWlkT3ANCj4gLQ0KPiA+IDEwNSkpKSkgIT0gMCk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2ODcNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi52ZnJGb3JtU2V0KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDY5Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25p dGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNl cHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0 RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2Nh bGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJGb3Jt U2V0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAg c3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5v ZGUgPSBOb25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyRm9ybURlZmlu aXRpb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJGb3JtRGVmaW5pdGlvbkNvbnRleHQs MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJGb3Jt TWFwRGVmaW5pdGlvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckZvcm1NYXBEZWZpbml0 aW9uQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIHZmclN0YXRlbWVudEltYWdlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVy bg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVt ZW50SW1hZ2VDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgdmZyU3RhdGVtZW50VmFyU3RvcmVMaW5lYXIoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnRWYXJTdG9yZUxpbmVhckNvbnRleHQNCj4gPiAsMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRWYXJT dG9yZUVmaShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFZhclN0b3Jl RWZpQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIHZmclN0YXRlbWVudFZhclN0b3JlTmFtZVZhbHVlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuVmZyU3RhdGVtZW50VmFyU3RvcmVOYW1lVmFsdWVDbw0KPiA+IG50ZXh0LDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RGVm YXVsdFN0b3JlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RGVmYXVs dFN0b3JlQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIHZmclN0YXRlbWVudERpc2FibGVJZkZvcm1TZXQoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnREaXNhYmxlSWZGb3JtU2V0Q29udA0KPiA+IGV4dCwwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN1 cHByZXNzSWZGb3JtU2V0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+ DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 U3VwcHJlc3NJZkZvcm1TZXRDb24NCj4gPiB0ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXh0ZW5zaW9uKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXh0ZW5zaW9uQ29udGV4dCwwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyRm9y bVNldA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNp dG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIo IHZpc2l0b3IsICJ2aXNpdFZmckZvcm1TZXQiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0VmZyRm9ybVNldChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmckZvcm1TZXQoc2VsZik6DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJGb3JtU2V0Q29u dGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxm LmVudGVyUnVsZShsb2NhbGN0eCwgNTYsIHNlbGYuUlVMRV92ZnJGb3JtU2V0KQ0KPiA+DQo+ID4g KyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChs b2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzAzDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRm9ybV06DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA2OTMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi52ZnJGb3JtRGVmaW5pdGlvbigpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRm9ybU1h cF06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2OTQNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJGb3JtTWFwRGVmaW5pdGlvbigpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGlu IFtWZnJTeW50YXhQYXJzZXIuSW1hZ2VdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gNjk1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50 SW1hZ2UoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlZhcnN0b3JlXToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY5Ng0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnZmclN0YXRlbWVudFZhclN0b3JlTGluZWFyKCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5 bnRheFBhcnNlci5FZml2YXJzdG9yZV06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA2OTcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRW YXJTdG9yZUVmaSgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTmFtZVZhbHVlVmFyU3Rv cmVdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjk4DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50VmFyU3RvcmVOYW1lVmFsdWUoKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxp ZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRTdG9yZV06DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2OTkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi52ZnJTdGF0ZW1lbnREZWZhdWx0U3RvcmUoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFy c2VyLkRpc2FibGVJZl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3 MDANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnREaXNhYmxlSWZG b3JtU2V0KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmXToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDcwMQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN1cHByZXNzSWZGb3JtU2V0KCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5HdWlkT3BdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gNzAyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50 RXh0ZW5zaW9uKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxl QWx0RXhjZXB0aW9uKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQg UmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1 cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3Mg VmZyU3RhdGVtZW50RGVmYXVsdFN0b3JlQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJl bnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3Rh dGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX0RFRkFVTFRTVE9S RV9PUCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLlMgPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLkEgPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBEZWZhdWx0U3RvcmUoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRTdG9yZSwgMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIFByb21wdChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUHJvbXB0LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbiwgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5Q YXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IFNlbWljb2xvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIs IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50 PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1i ZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBBdHRyaWJ1dGUoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkF0dHJpYnV0 ZSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3Zm clN0YXRlbWVudERlZmF1bHRTdG9yZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudERlZmF1bHRTdG9y ZSIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJT dGF0ZW1lbnREZWZhdWx0U3RvcmUoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNl bGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnREZWZhdWx0U3RvcmUoc2VsZik6DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnREZWZhdWx0U3RvcmVDb250ZXh0KHNlbGYsDQo+ID4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDU4LCBzZWxmLlJVTEVf dmZyU3RhdGVtZW50RGVmYXVsdFN0b3JlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAw ICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNzA1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuRGVmYXVsdFN0b3JlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA3MDYNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNzA3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDcwOA0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlByb21wdCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzA5DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gNzEwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDcxMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk9wZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzEyDQo+ ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguUyA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzEzDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzE4DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAg X2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZm clN5bnRheFBhcnNlci5Db21tYToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDcxNA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDcxNQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5BdHRy aWJ1dGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MTYNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDcxNw0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBsb2NhbGN0eC5BID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVy KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA3MjANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRp b24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYs IHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxm LCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50VmFyU3Rv cmVMaW5lYXJDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29u dGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfVkFSU1RPUkVfT1ApDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5UTiA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuSUQgPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlNOID0gTm9u ZSAjIFRva2VuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgVmFyc3RvcmUoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLlZhcnN0b3JlLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE5h bWUoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLk5hbWUsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg Q29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBO b25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZy U3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5D b21tYSwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBVdWlkKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5VdWlkLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGd1aWREZWZpbml0 aW9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuR3VpZERlZmluaXRpb25Db250ZXh0LDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5TZW1pY29sb24sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg U3RyaW5nSWRlbnRpZmllcihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VucyhWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsgICAg ICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgaSkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBVaW50OChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVWludDgsIDApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgVWludDE2KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VaW50MTYsIDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgVWludDMyKHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VaW50MzIsIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgVWludDY0KHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VaW50 NjQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRUZJX0hJSV9EQVRFKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5FRklfSElJX0RBVEUsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgRUZJX0hJSV9USU1FKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FRklfSElJX1RJTUUsIDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgRUZJX0hJSV9SRUYoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfUkVGLCAw KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFZhcklkKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5WYXJJ ZCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy Lk51bWJlciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5k ZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5S VUxFX3ZmclN0YXRlbWVudFZhclN0b3JlTGluZWFyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50VmFy U3RvcmVMaW5lYXIiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0VmZyU3RhdGVtZW50VmFyU3RvcmVMaW5lYXIoc2VsZikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRWYXJTdG9yZUxpbmVhcihzZWxm KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudFZhclN0b3JlTGluZWFyQ29udGV4dChzZWxmLA0KPiA+IHNlbGYuX2N0 eCwgc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4 LCA2MCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFZhclN0b3JlTGluZWFyKQ0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzIyDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVmFyc3RvcmUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDczOQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5w dXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFy c2VyLlN0cmluZ0lkZW50aWZpZXJdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNzIzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LlROID0gc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDcyNA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5VaW50OF06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MjUNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVWludDgp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MjYNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuVWludDE2XToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDcyNw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5VaW50MTYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA3MjgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuVWludDMyXToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDcyOQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VaW50MzIpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MzANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQ YXJzZXIuVWludDY0XToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDcz MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5V aW50NjQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MzINCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlm IHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9EQVRFXToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDczMw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FRklfSElJX0RBVEUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MzQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJz ZXIuRUZJX0hJSV9USU1FXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDczNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5FRklfSElJX1RJTUUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3 MzYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAg ICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9SRUZdOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzM3DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfUkVGKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzM4DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzQ1DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAg X2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZm clN5bnRheFBhcnNlci5WYXJJZDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDc0MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5WYXJJZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc0Mg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181 KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzQzDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIGxvY2FsY3R4LklEID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu TnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzQ0DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA3NDcNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5O YW1lKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NDgNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NDkNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0 eC5TTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc1MA0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA3NTENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5VdWlkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NTIN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NTMNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLmd1aWREZWZpbml0aW9uKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNzU0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0 aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFZhclN0 b3JlRWZpQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRl eHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Lk5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX1ZBUlNUT1JFX0VGSV9PUCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLlROID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5JRCA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuU04gPSBO b25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlZOID0gTm9uZSAjIFRva2Vu DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgRWZpdmFyc3RvcmUoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVmaXZhcnN0b3Jl LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEF0dHJpYnV0ZShzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuQXR0cmlidXRlLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclZh clN0b3JlRWZpQXR0cihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclZhclN0b3JlRWZpQXR0ckNv bnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5WZnJWYXJTdG9yZUVmaUF0dHJDb250ZXh0LGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBVdWlkKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5VdWlkLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIGd1aWREZWZpbml0aW9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuR3VpZERl ZmluaXRpb25Db250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgVWludDgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVpbnQ4LCAwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFVpbnQxNihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVWludDE2LCAwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFVpbnQzMihzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVWludDMyLCAw KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFVpbnQ2NChzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVWlu dDY0LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEVGSV9ISUlfREFURShz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuRUZJX0hJSV9EQVRFLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIEVGSV9ISUlfVElNRShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9USU1FLCAwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIEVGSV9ISUlfUkVGKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FRklfSElJX1JFRiwg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOYW1lKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OYW1l LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5TdHJpbmdUb2tlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBP cGVuUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFZhclNpemUoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlZhclNpemUsIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmLCBp OmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIu U3RyaW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3Ry aW5nSWRlbnRpZmllciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBWYXJJ ZChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuVmFySWQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg Qml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkg aXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5z KFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBO dW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBO b25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZy U3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu TnVtYmVyLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRl eChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJV TEVfdmZyU3RhdGVtZW50VmFyU3RvcmVFZmkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRWYXJTdG9y ZUVmaSIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRW ZnJTdGF0ZW1lbnRWYXJTdG9yZUVmaShzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgZGVmIHZmclN0YXRlbWVudFZhclN0b3JlRWZpKHNlbGYpOg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVt ZW50VmFyU3RvcmVFZmlDb250ZXh0KHNlbGYsDQo+IHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRl KQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDYyLCBzZWxmLlJV TEVfdmZyU3RhdGVtZW50VmFyU3RvcmVFZmkpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9 IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA3NTYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5FZml2YXJzdG9yZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNzczDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRl bnRpZmllcl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NTcNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguVE4gPSBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gNzU4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4g PiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlVpbnQ4XToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc1OQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VaW50OCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc2MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5VaW50MTZdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g NzYxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlVpbnQxNikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc2Mg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs aWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VaW50MzJdOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNzYzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlVpbnQzMikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDc2NA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VaW50NjRd Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzY1DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlVpbnQ2NCkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc2Ng0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1Zm clN5bnRheFBhcnNlci5FRklfSElJX0RBVEVdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNzY3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkVGSV9ISUlfREFURSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDc2OA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5FRklfSElJX1RJ TUVdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzY5DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfVElN RSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc3MA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9r ZW4gaW4gW1ZmclN5bnRheFBhcnNlci5FRklfSElJX1JFRl06DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA3NzENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9SRUYpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA3NzINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MN Cj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy YWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NzkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9p bnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2Vy LlZhcklkOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzc1DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlZhcklkKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzc2DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NzcNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgbG9jYWxjdHguSUQgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NzgNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc4MQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkF0dHJpYnV0ZSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzgyDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNzgzDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJWYXJTdG9y ZUVmaUF0dHIoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3ODgNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsg ICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDc4NA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA3ODUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJW YXJTdG9yZUVmaUF0dHIoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g NzkwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3OTENCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODA3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgbGFfID0gc2Vs Zi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCw0NixzZWxmLl9jdHgpDQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgbGFfID09IDE6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA3OTINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuTmFtZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDc5Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzk0DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LlNOID0gc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDc5NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgbGFfID09IDI6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3OTYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTmFtZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDc5Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNzk4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNzk5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk9wZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgw MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5WTiA9IHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDgwMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g ODAyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gODAzDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlZhclNpemUp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MDQNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgwNQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gODA2DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDgwOQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlV1aWQpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDgxMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgxMQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuZ3VpZERlZmluaXRpb24oKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA4MTINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRp b25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0 aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVy cm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVj b3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxj dHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyVmFyU3Rv cmVFZmlBdHRyQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLkF0dHIgPSAwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5OdW1iZXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0 UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQ YXJzZXIuUlVMRV92ZnJWYXJTdG9yZUVmaUF0dHINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJWYXJTdG9yZUVmaUF0 dHIiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZy VmFyU3RvcmVFZmlBdHRyKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICBkZWYgdmZyVmFyU3RvcmVFZmlBdHRyKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyVmFyU3RvcmVFZmlBdHRyQ29u dGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA2NCwgc2VsZi5SVUxFX3ZmclZhclN0b3JlRWZpQXR0 cikNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDgxNA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRWYXJTdG9yZU5h bWVWYWx1ZUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250 ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5Ob2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9WQVJTVE9SRV9OQU1FX1ZBTFVFX09QKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuU04gPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLklEID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgTmFtZVZhbHVlVmFyU3RvcmUoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk5hbWVWYWx1ZVZhclN0b3JlLCAw KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5v bmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgVXVpZChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVXVpZCwgMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBndWlkRGVmaW5pdGlvbihzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLkd1aWREZWZpbml0aW9uQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAw KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgVmFySWQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLlZhcklkLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIE5hbWUoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbnMoVmZyU3ludGF4UGFyc2VyLk5hbWUpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLk5hbWUsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5n VG9rZW4oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBO b25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZy U3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5TdHJpbmdUb2tlbiwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBP cGVuUGFyZW4oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMo VmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuT3BlblBhcmVuLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51 bWJlcihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5v bmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJT eW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5O dW1iZXIsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihz ZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQ YXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xv c2VQYXJlbiwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5k ZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5S VUxFX3ZmclN0YXRlbWVudFZhclN0b3JlTmFtZVZhbHVlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50 VmFyU3RvcmVOYW1lVmFsdWUiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50VmFyU3RvcmVOYW1lVmFsdWUoc2VsZikNCj4gPg0KPiA+ ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRWYXJTdG9yZU5h bWVWYWx1ZShzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0N Cj4gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFZhclN0b3JlTmFtZVZhbHVlQ29udGV4dChz ZWxmLA0KPiA+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu ZW50ZXJSdWxlKGxvY2FsY3R4LCA2NiwNCj4gc2VsZi5SVUxFX3ZmclN0YXRlbWVudFZhclN0b3Jl TmFtZVZhbHVlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0K PiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g ODE2DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTmFt ZVZhbHVlVmFyU3RvcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgxNw0K PiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LlNOID0gc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gODE4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgyMw0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYg X2xhPT1WZnJTeW50YXhQYXJzZXIuVmFySWQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA4MTkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuVmFySWQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA4MjANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgyMQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5JRCA9IHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgy Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D b21tYSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gODMyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5j KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICB3aGlsZSBUcnVlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gODI1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk5hbWUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA4MjYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgyNw0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJp bmdUb2tlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgyOA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFy ZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MjkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gODMwDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MzENCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MzQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIF9sYSA9 IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIG5vdCAoX2xh PT1WZnJTeW50YXhQYXJzZXIuTmFtZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBi cmVhaw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MzYN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VdWlkKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MzcNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA4MzgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmd1aWREZWZp bml0aW9uKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODM5DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+ DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiAr ICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudERpc2FibGVJZkZvcm1TZXRDb250ZXh0 KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+ IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9f aW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRy ZWVOb2RlKEVGSV9JRlJfRElTQUJMRV9JRl9PUCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBEaXNhYmxlSWYoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZiwgMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQsMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZiwgaTppbnQ9 Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlNlbWlj b2xvbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCBpKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmckZvcm1TZXRMaXN0KHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZyRm9ybVNldExpc3RDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRW5kSWYoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVuZElmLCAw KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3Rh dGVtZW50RGlzYWJsZUlmRm9ybVNldA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudERpc2FibGVJZkZv cm1TZXQiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 VmZyU3RhdGVtZW50RGlzYWJsZUlmRm9ybVNldChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hp bGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0YXRlbWVudERpc2FibGVJZkZvcm1TZXQoc2VsZik6 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnREaXNhYmxlSWZGb3JtU2V0Q29udGV4dChzZWxmLA0KPiA+IHNlbGYuX2N0 eCwgc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4 LCA2OCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudERpc2FibGVJZkZvcm1TZXQpDQo+ID4NCj4gPiAr ICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NDENCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5EaXNhYmxlSWYpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg0Mg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvbihsb2NhbGN0eC5Ob2RlKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NDMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDg0NA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyRm9ybVNldExp c3QobG9jYWxjdHguTm9kZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODQ1 DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kSWYp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg0Ng0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsg ICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAg ZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRTdXBwcmVzc0lmRm9ybVNldENvbnRleHQoUGFyc2Vy UnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9f KHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tp bmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18o cGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2Vy ID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gSWZyVHJlZU5vZGUo RUZJX0lGUl9TVVBQUkVTU19JRl9PUCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBTdXBwcmVzc0lmKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb24oc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmLCBpOmludD1Ob25l KToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9u KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIGkpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyRm9ybVNldExpc3Qoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5WZnJGb3JtU2V0TGlzdENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBFbmRJZihzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kSWYsIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1l bnRTdXBwcmVzc0lmRm9ybVNldA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFj Y2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFN1cHByZXNzSWZGb3Jt U2V0IiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZm clN0YXRlbWVudFN1cHByZXNzSWZGb3JtU2V0KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAg ZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGls ZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50U3VwcHJlc3NJZkZvcm1TZXQoc2VsZik6 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnRTdXBwcmVzc0lmRm9ybVNldENvbnRleHQoc2VsZiwNCj4gPiBzZWxmLl9j dHgsIHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0 eCwgNzAsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmRm9ybVNldCkNCj4gPg0KPiA+ ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg0OA0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN1cHByZXNzSWYp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg0OQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvbihsb2NhbGN0eC5Ob2RlKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NTANCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDg1MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyRm9ybVNl dExpc3QobG9jYWxjdHguTm9kZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g ODUyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5k SWYpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg1Mw0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAg ICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0K PiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBjbGFzcyBHdWlkU3ViRGVmaW5pdGlvbkNvbnRleHQoUGFyc2VyUnVsZUNvbnRl eHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh cnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTpp bnQ9LTEsIEd1aWQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRf XyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJz ZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkd1aWQgPSBOb25lDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5HdWlkID0gR3VpZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMo VmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5Db21tYSwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5k ZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5S VUxFX2d1aWRTdWJEZWZpbml0aW9uDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg YWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0R3VpZFN1YkRlZmluaXRpb24iICk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0R3VpZFN1YkRlZmlu aXRpb24oc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBn dWlkU3ViRGVmaW5pdGlvbihzZWxmLCBHdWlkKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkd1aWRTdWJEZWZpbml0aW9uQ29udGV4dChz ZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSwgR3VpZCkNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA3Miwgc2VsZi5SVUxFX2d1aWRTdWJEZWZpbml0aW9u KQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50 ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gODU1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu TnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NTYNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODU3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA4NTgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODU5DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NjANCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gODYxDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA4NjINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D b21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODYzDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NjQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gODY1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NjYNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODY3DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA4NjgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g ODY5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVt YmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhp dFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIEd1aWREZWZpbml0aW9uQ29udGV4dChQYXJz ZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0 X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZv a2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRf XyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJz ZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBJZnJUcmVlTm9k ZSgpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5HdWlkID0gRUZJX0dVSUQoKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5CcmFjZShzZWxmLCBpOmludD1Ob25lKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNlKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2UsIGkpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4g PiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIENsb3NlQnJhY2Uoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbnMoVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2UpDQo+ID4NCj4gPiArICAgICAgICAgICAg ZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkNsb3NlQnJhY2UsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgZ3VpZFN1YkRlZmluaXRpb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5HdWlkU3Vi RGVmaW5pdGlvbkNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2d1aWREZWZpbml0aW9uDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0R3VpZERl ZmluaXRpb24iICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0R3VpZERlZmluaXRpb24oc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGRlZiBndWlkRGVmaW5pdGlvbihzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkd1aWREZWZpbml0aW9uQ29udGV4dChz ZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgNzQsIHNlbGYuUlVMRV9ndWlkRGVmaW5pdGlvbikNCj4gPg0KPiA+ ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg3MQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFjZSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODcyDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA4NzMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gODc0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu TnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NzUNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODc2DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA4NzcNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODgzDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4g PiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNlXToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg3OA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2UpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NzkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5ndWlkU3ViRGVmaW5pdGlvbihsb2NhbGN0eC5HdWlkKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gODgwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2UpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQ YXJzZXIuTnVtYmVyXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg4 Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmd1aWRTdWJEZWZpbml0aW9uKGxvY2Fs Y3R4Lkd1aWQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAg ICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFs dEV4Y2VwdGlvbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA4ODUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5DbG9zZUJyYWNlKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhj ZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihz ZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIo c2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIEdldFN0cmluZ0lkQ29u dGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwN Cj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIo KS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlN0cmluZ0lk ID0gJycNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuU3RyaW5nVG9rZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg T3BlblBhcmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2dldFN0cmluZ0lk DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6 UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlz aXRvciwgInZpc2l0R2V0U3RyaW5nSWQiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0R2V0U3RyaW5nSWQoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAg ICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENo aWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGRlZiBnZXRTdHJpbmdJZChzZWxmKToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkdldFN0cmluZ0lkQ29u dGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxm LmVudGVyUnVsZShsb2NhbGN0eCwgNzYsIHNlbGYuUlVMRV9nZXRTdHJpbmdJZCkNCj4gPg0KPiA+ ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg4Nw0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2Vu KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4ODgNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg4OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gODkwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4 Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24g PSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Io c2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVy KHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJRdWVzdGlvbkhl YWRlckNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0 PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIE5vZGU9Tm9uZSwgUVR5cGU9Tm9uZSk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5n U3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5RVHlwZSA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb2Rl DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5RVHlwZSA9IFFUeXBlDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgdmZyUXVlc3Rpb25CYXNlSW5mbyhzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmclF1ZXN0aW9uQmFzZUluZm9Db250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50SGVhZGVyKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SGVhZGVyQ29udGV4dCwwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyUXVl c3Rpb25IZWFkZXINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2Vs ZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBo YXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJRdWVzdGlvbkhlYWRlciIgKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJRdWVzdGlvbkhlYWRlcihzZWxm KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclF1ZXN0aW9u SGVhZGVyKHNlbGYsIE5vZGUsIFFUeXBlKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uSGVhZGVyQ29udGV4dChzZWxm LCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSwgTm9kZSwgUVR5cGUpDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgNzgsIHNlbGYuUlVMRV92ZnJRdWVzdGlvbkhl YWRlcikNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDg5Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25CYXNlSW5m byhOb2RlLCBRVHlwZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODkzDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRIZWFkZXIoTm9kZSkNCj4gPg0K PiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAg ICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4g Pg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBjbGFzcyBWZnJRdWVzdGlvbkJhc2VJbmZvQ29udGV4dChQYXJzZXJSdWxl Q29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2Vs ZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0 YXRlOmludD0tMSwgTm9kZT1Ob25lLCBRVHlwZT1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu Tm9kZSA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlFUeXBlID0gTm9uZQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuQmFzZUluZm8gPSBFRklfVkFSU1RPUkVfSU5GTygpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5RSWQgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuQ2hlY2tGbGFnID0gVHJ1ZQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuUU5hbWUgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5W YXJJZFN0ciA9ICcnDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5RTiA9IE5vbmUgIyBUb2tl bg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuSUQgPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb2RlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5RVHlwZSA9IFFUeXBlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTmFtZShz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuTmFtZSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb21t YShzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1h LCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFZhcklkKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5W YXJJZCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdG9yYWdlVmFy SWQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdG9yYWdlVmFySWRDb250ZXh0LDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgUXVlc3Rpb25JZChz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuUXVlc3Rpb25JZCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyUXVlc3Rp b25CYXNlSW5mbw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxm LCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhh c2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclF1ZXN0aW9uQmFzZUluZm8iICk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyUXVlc3Rpb25CYXNlSW5mbyhz ZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclF1ZXN0 aW9uQmFzZUluZm8oc2VsZiwgTm9kZSwgUVR5cGUpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25CYXNlSW5mb0NvbnRl eHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUsIE5vZGUsIFFUeXBlKQ0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDgwLCBzZWxmLlJVTEVfdmZyUXVl c3Rpb25CYXNlSW5mbykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5 cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDg5OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuTmFtZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg5NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OYW1lKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gODk2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA4OTcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguUU4gPSBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gODk4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MDYNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBf bGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIF9sYT09VmZy U3ludGF4UGFyc2VyLlZhcklkOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gOTAxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlZhcklkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTAyDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MDMNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi52ZnJTdG9yYWdlVmFySWQobG9jYWxjdHguQmFzZUluZm8sIGxv Y2FsY3R4LkNoZWNrRmxhZykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDkwNA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5Db21tYSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gOTEyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5RdWVzdGlvbklk Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTA4DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uSWQpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MDkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkxMA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBsb2NhbGN0eC5JRCA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkxMQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRIZWFkZXJDb250 ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0K PiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBOb2RlPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5Ob2RlID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vZGUNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBQcm9tcHQoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlByb21wdCwg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmLCBp OmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIu U3RyaW5nVG9rZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rv a2VuLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxm LCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJz ZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFy ZW4sIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6 aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5O dW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYsIGk6aW50PU5v bmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5DbG9zZVBh cmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCBpKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBIZWxwKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5IZWxw LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZy U3RhdGVtZW50SGVhZGVyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0 KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50SGVhZGVyIiApOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudEhlYWRl cihzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0 YXRlbWVudEhlYWRlcihzZWxmLCBOb2RlKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEhlYWRlckNvbnRleHQoc2Vs Ziwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUsIE5vZGUpDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgODIsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRIZWFkZXIp DQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA5MTQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Q cm9tcHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkxNQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkxNg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA5MTcNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDkxOA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTE5DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTIwDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDkyMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkhlbHApDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkyMg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkyMw0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MjQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDkyNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTI2DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJl bikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+ DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBRdWVzdGlvbmhlYWRlckZsYWdzRmllbGRDb250 ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0K PiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigp Ll9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuUUhGbGFnID0g MA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTyA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuTCA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IFJlYWRPbmx5RmxhZyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUmVhZE9ubHlGbGFnLCAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIEludGVyYWN0aXZlRmxhZyhzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuSW50ZXJhY3RpdmVG bGFnLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFJlc2V0UmVxdWlyZWRG bGFnKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5SZXNldFJlcXVpcmVkRmxhZywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBSZXN0U3R5bGVGbGFnKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5SZXN0U3R5bGVGbGFnLCAwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFJlY29ubmVjdFJlcXVpcmVkRmxhZyhz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuUmVjb25uZWN0UmVxdWlyZWRGbGFnLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIE9wdGlvbk9ubHlGbGFnKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcHRpb25Pbmx5RmxhZywgMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOVkFjY2Vzc0ZsYWcoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy Lk5WQWNjZXNzRmxhZywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBMYXRl Q2hlY2tGbGFnKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5MYXRlQ2hlY2tGbGFnLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfcXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRv ciwgInZpc2l0UXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkIiApOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZChzZWxm KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHF1ZXN0aW9uaGVh ZGVyRmxhZ3NGaWVsZChzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2Fs Y3R4ID0gVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZENvbnRleHQoc2Vs ZiwNCj4gPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgODQsIHNlbGYuUlVMRV9xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQp DQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDkzNg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlJlYWRPbmx5Rmxh Z106DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0 eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkyOA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5SZWFkT25seUZs YWcpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAg ICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSW50ZXJhY3RpdmVGbGFnXToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTI5DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkludGVyYWN0aXZlRmxhZykNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYg dG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5SZXNldFJlcXVpcmVkRmxhZ106DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMykNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkzMA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5SZXNldFJlcXVpcmVkRmxhZykNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9r ZW4gaW4gW1ZmclN5bnRheFBhcnNlci5SZXN0U3R5bGVGbGFnXToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA0KQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gOTMxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlJlc3RTdHlsZUZsYWcpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJT eW50YXhQYXJzZXIuUmVjb25uZWN0UmVxdWlyZWRGbGFnXToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA1KQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gOTMyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlJlY29ubmVjdFJlcXVpcmVkRmxhZykNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5PcHRpb25Pbmx5RmxhZ106DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNikNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDkzMw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBsb2NhbGN0 eC5PID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3B0aW9uT25seUZsYWcpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuTlZBY2Nlc3NGbGFnXToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA3KQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gOTM0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2Fs Y3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OVkFjY2Vzc0ZsYWcpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZ106DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgOCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDkzNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBsb2Nh bGN0eC5MID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZykNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRp b24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYs IHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxm LCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyU3RvcmFnZVZhcklkQ29u dGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwN Cj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSwgQmFzZUluZm89Tm9uZSwgQ2hlY2tGbGFnPU5vbmUp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2lu Z1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5CYXNlSW5mbyA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLkNoZWNrRmxhZyA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlZh cklkU3RyID0gJycNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkJhc2VJbmZvID0gQmFzZUlu Zm8NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkNoZWNrRmxhZyA9IENoZWNrRmxhZw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVf dmZyU3RvcmFnZVZhcklkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgY29weUZyb20oc2VsZiwgY3R4OlBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzdXBlcigpLmNvcHlGcm9tKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLkJhc2VJbmZvID0gY3R4LkJhc2VJbmZvDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5D aGVja0ZsYWcgPSBjdHguQ2hlY2tGbGFnDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5WYXJJ ZFN0ciA9IGN0eC5WYXJJZFN0cg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdG9yYWdlVmFySWRSdWxlMUNvbnRleHQoVmZyU3RvcmFn ZVZhcklkQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0 X18oc2VsZiwgcGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOiAjIGFjdHVhbGx5IGENCj4g PiBWZnJTeW50YXhQYXJzZXIuVmZyU3RvcmFnZVZhcklkQ29udGV4dA0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyc2VyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuU04xID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5JID0gTm9u ZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5jb3B5RnJvbShjdHgpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgT3BlbkJyYWNrZXQoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5C cmFja2V0LCAwKQ0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsb3NlQnJhY2tldChzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu Q2xvc2VCcmFja2V0LCAwKQ0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVt YmVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RvcmFnZVZhcklkUnVsZTEi ICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3Rv cmFnZVZhcklkUnVsZTEoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0b3JhZ2VWYXJJ ZFJ1bGUyQ29udGV4dChWZnJTdG9yYWdlVmFySWRDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIGN0eDpQYXJzZXJSdWxlQ29u dGV4dCk6ICMgYWN0dWFsbHkgYQ0KPiA+IFZmclN5bnRheFBhcnNlci5WZnJTdG9yYWdlVmFySWRD b250ZXh0DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJzZXIpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5TTjIgPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLmNvcHlGcm9tKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0K PiA+DQo+ID4gKyAgICAgICAgZGVmIERvdChzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuRG90KQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5Eb3QsIGkpDQo+ID4NCj4gPiArICAgICAgICBkZWYgYXJyYXlOYW1l KHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0cyhWZnJTeW50YXhQYXJzZXIuQXJyYXlOYW1lQ29udGV4dCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkFycmF5TmFtZUNvbnRleHQsaSkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2Vs ZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBo YXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdG9yYWdlVmFySWRSdWxlMiIgKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdG9yYWdlVmFySWRSdWxl MihzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0b3JhZ2VWYXJJZChz ZWxmLCBCYXNlSW5mbywgQ2hlY2tGbGFnKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0b3JhZ2VWYXJJZENvbnRleHQoc2VsZiwg c2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUsIEJhc2VJbmZvLCBDaGVja0ZsYWcpDQo+ID4NCj4g PiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgODYsIHNlbGYuUlVMRV92ZnJTdG9y YWdlVmFySWQpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDk1MA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qo c2VsZi5faW5wdXQsNTUsc2VsZi5fY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGxhXyA9 PSAxOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNl ci5WZnJTdG9yYWdlVmFySWRSdWxlMUNvbnRleHQoc2VsZiwNCj4gPiBsb2NhbGN0eCkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTM4DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIGxvY2FsY3R4LlNOMSA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmlu Z0lkZW50aWZpZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MzkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3Bl bkJyYWNrZXQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NDANCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguSSA9IHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk0 MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D bG9zZUJyYWNrZXQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIGxhXyA9PSAyOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdG9yYWdlVmFySWRSdWxlMkNv bnRleHQoc2VsZiwNCj4gPiBsb2NhbGN0eCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gOTQyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LlNOMiA9 IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NDcNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHdoaWxl IF9sYT09VmZyU3ludGF4UGFyc2VyLkRvdDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA5NDMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkRvdCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA5NDQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuYXJyYXlO YW1lKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NDkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFz IHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUp DQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu ZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmckNvbnN0YW50VmFsdWVGaWVsZENv bnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUs DQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVy KCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5WYWx1ZUxp c3QgPSBbXQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTGlzdFR5cGUgPSBGYWxzZQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuVmFsdWVUeXBlID0gTm9uZQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgTmVnYXRpdmUoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk5lZ2F0aXZlLCAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIFRydWVTeW1ib2woc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlRydWVTeW1ib2wsIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRmFsc2VTeW1ib2woc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZh bHNlU3ltYm9sLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9uZShzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuT25lLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9uZXMoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLk9uZXMsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgWmVybyhz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuWmVybywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb2xv bihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50 YXhQYXJzZXIuQ29sb24pDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbG9u LCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFNsYXNoKHNlbGYsIGk6aW50 PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TbGFz aCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2xhc2gsIGkpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYsIGk6aW50PU5vbmUpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgaSkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBndWlkRGVmaW5pdGlvbihzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLkd1aWREZWZpbml0aW9uQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tl biwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLk9wZW5QYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9z ZVBhcmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIE9wZW5CcmFjZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNlLCAwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIENsb3NlQnJhY2Uoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2UsIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9u ZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckNvbnN0YW50VmFsdWVGaWVs ZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9y OlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZp c2l0b3IsICJ2aXNpdFZmckNvbnN0YW50VmFsdWVGaWVsZCIgKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJDb25zdGFudFZhbHVlRmllbGQoc2VsZikN Cj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJDb25zdGFudFZh bHVlRmllbGQoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5WZnJDb25zdGFudFZhbHVlRmllbGRDb250ZXh0KHNlbGYsIHNlbGYu X2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUo bG9jYWxjdHgsIDg4LCBzZWxmLlJVTEVfdmZyQ29uc3RhbnRWYWx1ZUZpZWxkKQ0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5 Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5OTYNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAg ICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDU4LHNlbGYu X2N0eCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBsYV8gPT0gMToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTUzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBf bGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBfbGE9 PVZmclN5bnRheFBhcnNlci5OZWdhdGl2ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA5NTINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk5lZ2F0aXZlKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTU1DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs aWYgbGFfID09IDI6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk1 Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5U cnVlU3ltYm9sKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxpZiBsYV8gPT0gMzoNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gOTU3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkZhbHNlU3ltYm9sKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBwYXNzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiBsYV8gPT0g NDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCA0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTU4DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9uZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsaWYgbGFfID09IDU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDk1OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5PbmVzKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxpZiBsYV8gPT0gNjoNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA2KQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gOTYwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlplcm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBh c3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIGxhXyA9PSA3Og0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDcpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NjENCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTYyDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gOTYzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDk2NA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db2xvbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDk2NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIGxhXyA9PSA4Og0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDgpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NjYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gOTY3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlNsYXNoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gOTY4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk2 OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5T bGFzaCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk3MA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgICAgICBlbGlmIGxhXyA9PSA5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA5NzENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g OTcyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk3Mw0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1i ZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NzQNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTc1DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuZ3VpZERlZmluaXRpb24oKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gOTc2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDk3Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDk3OA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA5NzkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTgw DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNs b3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbGlmIGxhXyA9PSAxMDoNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxMCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDk4Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDk4Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA5ODQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gOTg1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIGxhXyA9PSAxMToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxMSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk4Ng0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2UpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5ODcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gOTkyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5 bnRheFBhcnNlci5Db21tYToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA5ODgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDk4OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDk5NA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1 dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gOTk1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkNsb3NlQnJhY2UpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2Vw dGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSBy ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2Vs ZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNl bGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJJbWFnZVRhZ0NvbnRl eHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCku X19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gSWZy VHJlZU5vZGUoRUZJX0lGUl9JTUFHRV9PUCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBJbWFnZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuSW1hZ2UsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJl biwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3Zm ckltYWdlVGFnDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYs IHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0VmZySW1hZ2VUYWciICk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZySW1hZ2VUYWcoc2VsZikNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJJbWFnZVRhZyhzZWxmKToNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmcklt YWdlVGFnQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgOTAsIHNlbGYuUlVMRV92ZnJJbWFnZVRhZykN Cj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDk5OA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLklt YWdlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5OTkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDAwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTAwMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk9wZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTAwMg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTAwMw0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiAr ICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAg IGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4g PiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgY2xhc3MgVmZyTG9ja2VkVGFnQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBw YXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5n U3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX0xPQ0tFRF9P UCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBMb2NrZWQoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkxv Y2tlZCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxF X3ZmckxvY2tlZFRhZw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChz ZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlm IGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckxvY2tlZFRhZyIgKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJMb2NrZWRUYWcoc2VsZikNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJMb2NrZWRUYWcoc2VsZik6 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNl ci5WZnJMb2NrZWRUYWdDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA5Miwgc2VsZi5SVUxFX3Zmckxv Y2tlZFRhZykNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEwMDUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Mb2NrZWQpDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNl cHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0g cmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNl bGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zlcihz ZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50U3Rh dFRhZ0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0 PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5O b2RlID0gTm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmckltYWdlVGFn KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZySW1hZ2VUYWdDb250ZXh0LDApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyTG9ja2VkVGFnKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuVmZyTG9ja2VkVGFnQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVt ZW50U3RhdFRhZw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxm LCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhh c2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFN0YXRUYWciICk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50U3RhdFRhZyhz ZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0YXRl bWVudFN0YXRUYWcoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0 eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdGF0VGFnQ29udGV4dChzZWxmLCBzZWxm Ll9jdHgsDQo+ID4gc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxl KGxvY2FsY3R4LCA5NCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFN0YXRUYWcpDQo+ID4NCj4gPiAr ICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMDkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5JbWFnZV06DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMDcNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi52ZnJJbWFnZVRhZygpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTG9ja2Vk XToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTAwOA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmckxvY2tlZFRhZygpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4N Cj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1 bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFN0YXRUYWdMaXN0Q29udGV4 dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg X19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4g PiBpbnZva2luZ1N0YXRlOmludD0tMSwgTm9kZT1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu Tm9kZSA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb2RlDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3RhdFRhZyhzZWxmLCBp OmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMo VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRUYWdDb250ZXh0KQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdFRh Z0NvbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlz IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhW ZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkNvbW1hLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRl eChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJV TEVfdmZyU3RhdGVtZW50U3RhdFRhZ0xpc3QNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRTdGF0VGFn TGlzdCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRW ZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgZGVmIHZmclN0YXRlbWVudFN0YXRUYWdMaXN0KHNlbGYsIE5vZGUpOg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50U3RhdFRhZ0xpc3RDb250ZXh0KHNlbGYsDQo+IHNlbGYuX2N0eCwNCj4gPiBzZWxm LnN0YXRlLCBOb2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDk2LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50U3RhdFRhZ0xpc3QpDQo+ID4NCj4gPiArICAgICAg ICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDExDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdGF0VGFnKCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTAxNg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9hbHQgPSBzZWxmLl9pbnRl cnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDYwLHNlbGYuX2N0eCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICB3aGlsZSBfYWx0IT0yIGFuZCBfYWx0IT1BVE4uSU5WQUxJRF9BTFRfTlVNQkVS Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBfYWx0PT0xOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMTINCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMTMNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIHNlbGYudmZyU3RhdGVtZW50U3RhdFRhZygpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMDE4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfYWx0ID0gc2Vs Zi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCw2MCxzZWxmLl9jdHgpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMg cmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkN Cj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5l eGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyRm9ybURlZmluaXRpb25Db250ZXh0 KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+ IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9f aW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRy ZWVOb2RlKEVGSV9JRlJfRk9STV9PUCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBGb3JtKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5Gb3JtLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIEZvcm1JZChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuRm9ybUlkLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs c2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5OdW1iZXIsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg Q29tbWEoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkNvbW1hLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIFRpdGxlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5UaXRsZSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIDApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu Q2xvc2VQYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZW1pY29s b24oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3lu dGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu U2VtaWNvbG9uLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEVuZEZvcm0o c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkVuZEZvcm0sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg dmZyRm9ybShzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlz IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJGb3JtQ29udGV4dCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJGb3JtQ29udGV4dCxpKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRl eChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJV TEVfdmZyRm9ybURlZmluaXRpb24NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBh Y2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJGb3JtRGVmaW5pdGlvbiIgKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJGb3JtRGVmaW5p dGlvbihzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZm ckZvcm1EZWZpbml0aW9uKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9j YWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyRm9ybURlZmluaXRpb25Db250ZXh0KHNlbGYsIHNl bGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1 bGUobG9jYWxjdHgsIDk4LCBzZWxmLlJVTEVfdmZyRm9ybURlZmluaXRpb24pDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDE5DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRm9ybSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTAyMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkZvcm1JZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTAyMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMjINCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMjMNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTAyNA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlRpdGxlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDI1 DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTAyNg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDI3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxMDI4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MDI5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xv c2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTAzMA0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTAzNA0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9s YSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgd2hpbGUgKCgoKF9s YSAtIDQ2KSkgJiB+MHgzZikgPT0gMCBhbmQgKCgxIDw8IChfbGEgLSA0NikpICYgKCgxIDw8DQo+ ID4gKFZmclN5bnRheFBhcnNlci5PbmVPZiAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2Vy Lk9yZGVyZWRMaXN0IC0gNDYpKSB8ICgxDQo+ID4gPDwgKFZmclN5bnRheFBhcnNlci5TdWJ0aXRs ZSAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlRleHQgLSA0NikpIHwgKDEgPDwNCj4g PiAoVmZyU3ludGF4UGFyc2VyLkRhdGUgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5U aW1lIC0gNDYpKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5HcmF5T3V0SWYgLSA0Nikp IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5MYWJlbCAtIDQ2KSkgfCAoMSA8PA0KPiA+IChWZnJT eW50YXhQYXJzZXIuSW52ZW50b3J5IC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuQ2hl Y2tCb3ggLSA0NikpIHwNCj4gKDENCj4gPiA8PCAoVmZyU3ludGF4UGFyc2VyLk51bWVyaWMgLSA0 NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5EZWZhdWx0IC0gNDYpKSB8ICgxDQo+ID4gPDwg KFZmclN5bnRheFBhcnNlci5QYXNzd29yZCAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2Vy LlN0cmluZyAtIDQ2KSkgfCAoMQ0KPiA+IDw8IChWZnJTeW50YXhQYXJzZXIuU3VwcHJlc3NJZiAt IDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZiAtIDQ2KSkNCj4gfA0KPiA+ ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuSGlkZGVuIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQ YXJzZXIuR290byAtIDQ2KSkpKSAhPQ0KPiAwKQ0KPiA+IG9yICgoKChfbGEgLSAxMTApKSAmIH4w eDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDExMCkpICYgKCgxIDw8DQo+ID4gKFZmclN5bnRh eFBhcnNlci5JbmNvbnNpc3RlbnRJZiAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5S ZXN0b3JlIC0NCj4gMTEwKSkNCj4gPiB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuU2F2ZSAtIDEx MCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5CYW5uZXIgLSAxMTApKSB8DQo+ID4gKDEgPDwg KFZmclN5bnRheFBhcnNlci5JbWFnZSAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5M b2NrZWQgLSAxMTApKSB8DQo+ID4gKDEgPDwgKFZmclN5bnRheFBhcnNlci5SdWxlIC0gMTEwKSkg fCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlJlc2V0QnV0dG9uIC0NCj4gMTEwKSkNCj4gPiB8ICgx IDw8IChWZnJTeW50YXhQYXJzZXIuQWN0aW9uIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFy c2VyLkd1aWRPcCAtDQo+IDExMCkpDQo+ID4gfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk1vZGFs IC0gMTEwKSkpKSAhPSAwKSBvcg0KPiA+IF9sYT09VmZyU3ludGF4UGFyc2VyLlJlZnJlc2hHdWlk Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTAzMQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnZmckZvcm0oKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTAzNg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTAzNw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkVuZEZvcm0pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMzgNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgp DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyRm9ybUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQp Og0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNl ciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9 LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZv a2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEltYWdlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50SW1hZ2VDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50TG9ja2VkKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50TG9ja2VkQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFJ1bGVzKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UnVsZXNDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RGVmYXVsdChzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudERlZmF1bHRDb250ZXh0LDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3Rh dChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRDb250ZXh0LDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50 UXVlc3Rpb25zKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25z Q29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IHZmclN0YXRlbWVudENvbmRpdGlvbmFsKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50Q29uZGl0aW9uYWxDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50TGFiZWwoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnRMYWJlbENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRCYW5uZXIoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRCYW5uZXJDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50SW52YWxpZChzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEludmFsaWRDb250ZXh0LDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXh0 ZW5zaW9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXh0ZW5zaW9uQ29u dGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZm clN0YXRlbWVudE1vZGFsKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+ IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50TW9k YWxDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgdmZyU3RhdGVtZW50UmVmcmVzaEV2ZW50KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50UmVmcmVzaEV2ZW50Q29udGV4dCwwDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNv bG9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVf dmZyRm9ybQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2 aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0 dHIoIHZpc2l0b3IsICJ2aXNpdFZmckZvcm0iICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0VmZyRm9ybShzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hp bGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmckZvcm0oc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJGb3JtQ29udGV4dChzZWxm LCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVs ZShsb2NhbGN0eCwgMTAwLCBzZWxmLlJVTEVfdmZyRm9ybSkNCj4gPg0KPiA+ICsgICAgICAgIHRy eToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNTUNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAg ICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgdG9r ZW4gaW4gW1ZmclN5bnRheFBhcnNlci5JbWFnZV06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxMDQwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3Rh dGVtZW50SW1hZ2UoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkxvY2tlZF06DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDQxDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50TG9ja2VkKCkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5SdWxlXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEw NDINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRSdWxlcygpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlm IHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRGVmYXVsdF06DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxMDQzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu dmZyU3RhdGVtZW50RGVmYXVsdCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuU3VidGl0 bGUsIFZmclN5bnRheFBhcnNlci5UZXh0LA0KPiA+IFZmclN5bnRheFBhcnNlci5Hb3RvLCBWZnJT eW50YXhQYXJzZXIuUmVzZXRCdXR0b25dOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTA0NA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVu dFN0YXQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk9uZU9mLCBWZnJTeW50YXhQYXJz ZXIuT3JkZXJlZExpc3QsDQo+ID4gVmZyU3ludGF4UGFyc2VyLkRhdGUsIFZmclN5bnRheFBhcnNl ci5UaW1lLCBWZnJTeW50YXhQYXJzZXIuQ2hlY2tCb3gsDQo+ID4gVmZyU3ludGF4UGFyc2VyLk51 bWVyaWMsIFZmclN5bnRheFBhcnNlci5QYXNzd29yZCwgVmZyU3ludGF4UGFyc2VyLlN0cmluZywN Cj4gPiBWZnJTeW50YXhQYXJzZXIuQWN0aW9uXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEwNDUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0 ZW1lbnRRdWVzdGlvbnMoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4g PiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkdyYXlPdXRJZiwg VmZyU3ludGF4UGFyc2VyLlN1cHByZXNzSWYsDQo+ID4gVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJ ZiwgVmZyU3ludGF4UGFyc2VyLkluY29uc2lzdGVudElmXToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDEwNDYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52 ZnJTdGF0ZW1lbnRDb25kaXRpb25hbCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MN Cj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTGFi ZWxdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA0Nw0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudExhYmVsKCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5CYW5uZXJdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTA0OA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVu dEJhbm5lcigpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAg ICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSW52ZW50b3J5LCBWZnJTeW50 YXhQYXJzZXIuSGlkZGVuLA0KPiA+IFZmclN5bnRheFBhcnNlci5SZXN0b3JlLCBWZnJTeW50YXhQ YXJzZXIuU2F2ZV06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDQ5 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50SW52YWxpZCgpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlm IHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuR3VpZE9wXToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDEwNTANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52 ZnJTdGF0ZW1lbnRFeHRlbnNpb24oKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk1vZGFs XToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNTENCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRNb2RhbCgpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtW ZnJTeW50YXhQYXJzZXIuUmVmcmVzaEd1aWRdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTA1Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRl bWVudFJlZnJlc2hFdmVudCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMDUzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4g KyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlh YmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNl cHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9j YWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICBy ZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xh c3MgVmZyRm9ybU1hcERlZmluaXRpb25Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVu dDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0 ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfRk9STV9NQVBfT1Ap DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5TMSA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEZvcm1NYXAoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZvcm1NYXAsIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRm9ybUlkKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Gb3JtSWQs IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29tbWEoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNv bW1hLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEVuZEZvcm0oc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkVuZEZvcm0sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNv bG9uKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5 bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlNlbWljb2xvbiwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIo c2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVy LCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE1hcFRpdGxlKHNlbGYsIGk6 aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5N YXBUaXRsZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWFwVGl0bGUsIGkp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5nVG9rZW4oc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlN0 cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tl biwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZiwg aTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2Vy Lk9wZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVu LCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZiwg aTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2Vy LkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFy ZW4sIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTWFwR3VpZChzZWxmLCBp OmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIu TWFwR3VpZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWFwR3VpZCwgaSkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBndWlkRGVmaW5pdGlvbihzZWxmLCBp OmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMo VmZyU3ludGF4UGFyc2VyLkd1aWREZWZpbml0aW9uQ29udGV4dCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkd1aWREZWZpbml0aW9uQ29udGV4dCxp KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmckZvcm0o c2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyRm9ybUNvbnRleHQpDQo+ID4NCj4gPiArICAgICAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRm9ybUNvbnRleHQsaSkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckZv cm1NYXBEZWZpbml0aW9uDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0 KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyRm9ybU1hcERlZmluaXRpb24iICk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyRm9ybU1hcERlZmlu aXRpb24oc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2 ZnJGb3JtTWFwRGVmaW5pdGlvbihzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckZvcm1NYXBEZWZpbml0aW9uQ29udGV4dChz ZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu ZW50ZXJSdWxlKGxvY2FsY3R4LCAxMDIsIHNlbGYuUlVMRV92ZnJGb3JtTWFwRGVmaW5pdGlvbikN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsg ICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNTcNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Gb3JtTWFwKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDU4DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRm9ybUlkKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMDU5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTA2MA0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LlMxID0gc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MDYxDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNzYNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHdoaWxl IF9sYT09VmZyU3ludGF4UGFyc2VyLk1hcFRpdGxlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTA2Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5NYXBUaXRsZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEwNjMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDEwNjQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuU3RyaW5nVG9rZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MDY1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk9wZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNjYN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVt YmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA2Nw0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVu KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA2OA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDY5DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk1hcEd1aWQpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDcwDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDcxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuZ3VpZERlZmluaXRpb24oKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTA3Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MDc4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDgyDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAg ICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICB3 aGlsZSAoKCgoX2xhIC0gNDYpKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDQ2KSkg JiAoKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLk9uZU9mIC0gNDYpKSB8ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuT3JkZXJlZExpc3QgLSA0NikpIHwgKDENCj4gPiA8PCAoVmZyU3ludGF4UGFy c2VyLlN1YnRpdGxlIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVGV4dCAtIDQ2KSkg fCAoMSA8PA0KPiA+IChWZnJTeW50YXhQYXJzZXIuRGF0ZSAtIDQ2KSkgfCAoMSA8PCAoVmZyU3lu dGF4UGFyc2VyLlRpbWUgLSA0NikpIHwgKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLkdyYXlP dXRJZiAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkxhYmVsIC0gNDYpKSB8ICgxIDw8 DQo+ID4gKFZmclN5bnRheFBhcnNlci5JbnZlbnRvcnkgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRh eFBhcnNlci5DaGVja0JveCAtIDQ2KSkgfA0KPiAoMQ0KPiA+IDw8IChWZnJTeW50YXhQYXJzZXIu TnVtZXJpYyAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkRlZmF1bHQgLSA0NikpIHwg KDENCj4gPiA8PCAoVmZyU3ludGF4UGFyc2VyLlBhc3N3b3JkIC0gNDYpKSB8ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuU3RyaW5nIC0gNDYpKSB8ICgxDQo+ID4gPDwgKFZmclN5bnRheFBhcnNlci5T dXBwcmVzc0lmIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuRGlzYWJsZUlmIC0gNDYp KQ0KPiB8DQo+ID4gKDEgPDwgKFZmclN5bnRheFBhcnNlci5IaWRkZW4gLSA0NikpIHwgKDEgPDwg KFZmclN5bnRheFBhcnNlci5Hb3RvIC0gNDYpKSkpICE9DQo+IDApDQo+ID4gb3IgKCgoKF9sYSAt IDExMCkpICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCAoX2xhIC0gMTEwKSkgJiAoKDEgPDwNCj4g PiAoVmZyU3ludGF4UGFyc2VyLkluY29uc2lzdGVudElmIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3lu dGF4UGFyc2VyLlJlc3RvcmUgLQ0KPiAxMTApKQ0KPiA+IHwgKDEgPDwgKFZmclN5bnRheFBhcnNl ci5TYXZlIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkJhbm5lciAtIDExMCkpIHwN Cj4gPiAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkltYWdlIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3lu dGF4UGFyc2VyLkxvY2tlZCAtIDExMCkpIHwNCj4gPiAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlJ1 bGUgLSAxMTApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuUmVzZXRCdXR0b24gLQ0KPiAxMTAp KQ0KPiA+IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5BY3Rpb24gLSAxMTApKSB8ICgxIDw8IChW ZnJTeW50YXhQYXJzZXIuR3VpZE9wIC0NCj4gMTEwKSkNCj4gPiB8ICgxIDw8IChWZnJTeW50YXhQ YXJzZXIuTW9kYWwgLSAxMTApKSkpICE9IDApIG9yDQo+ID4gX2xhPT1WZnJTeW50YXhQYXJzZXIu UmVmcmVzaEd1aWQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDc5 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyRm9ybSgpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDg0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBf bGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxMDg1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuRW5kRm9ybSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTA4Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNl bWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRJbWFnZUNvbnRl eHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCku X19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9u ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmckltYWdlVGFnKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZySW1hZ2VUYWdDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29s b24sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92 ZnJTdGF0ZW1lbnRJbWFnZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2Vw dChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudEltYWdlIiApOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudEltYWdl KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3Rh dGVtZW50SW1hZ2Uoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0 eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbWFnZUNvbnRleHQoc2VsZiwgc2VsZi5f Y3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShs b2NhbGN0eCwgMTA0LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50SW1hZ2UpDQo+ID4NCj4gPiArICAg ICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDg4DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi52ZnJJbWFnZVRhZygpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEwODkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRp b25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0 aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVy cm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVj b3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxj dHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyU3RhdGVt ZW50TG9ja2VkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLk5vZGUgPSBOb25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyTG9j a2VkVGFnKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyTG9ja2VkVGFnQ29udGV4dCwwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFNlbWljb2xvbihz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3lu dGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50TG9ja2VkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50 TG9ja2VkIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dFZmclN0YXRlbWVudExvY2tlZChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2Vs ZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIHZmclN0YXRlbWVudExvY2tlZChzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudExvY2tl ZENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTA2LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50 TG9ja2VkKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTA5MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyTG9ja2VkVGFnKCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA5Mg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsg ICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAg ZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRSdWxlc0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQp Og0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNl ciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9 LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZv a2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9SVUxF X09QKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFJ1bGUoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlJ1 bGUsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmll cihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBDb21tYShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvbihzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRW5kUnVsZShzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kUnVsZSwg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlNlbWljb2xvbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxl SW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNl ci5SVUxFX3ZmclN0YXRlbWVudFJ1bGVzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50UnVsZXMiICk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVt ZW50UnVsZXMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiB2ZnJTdGF0ZW1lbnRSdWxlcyhzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFJ1bGVzQ29udGV4dChzZWxm LCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50 ZXJSdWxlKGxvY2FsY3R4LCAxMDgsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRSdWxlcykNCj4gPg0K PiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwOTQN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5SdWxlKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDk1DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA5Ng0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxMDk3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1l bnRFeHByZXNzaW9uKGxvY2FsY3R4Lk5vZGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDEwOTgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5FbmRSdWxlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDk5DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9u KQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4N Cj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1 bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFN0YXRDb250ZXh0KFBhcnNl clJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9r aW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNl ciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdWJUaXRsZShzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN1YlRpdGxlQ29udGV4dCwwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN0YXRp Y1RleHQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdGF0aWNUZXh0Q29u dGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZm clN0YXRlbWVudENyb3NzUmVmZXJlbmNlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50Q3Jvc3NSZWZlcmVuY2VDb250ZXgNCj4gPiB0LDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRT dGF0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0 b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0cigg dmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50U3RhdCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRTdGF0KHNlbGYpDQo+ID4NCj4g PiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50U3RhdChzZWxm KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudFN0YXRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0 YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDExMCwgc2Vs Zi5SVUxFX3ZmclN0YXRlbWVudFN0YXQpDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMDQNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICB0b2tlbiA9 IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1Zm clN5bnRheFBhcnNlci5TdWJ0aXRsZV06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDExMDENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1l bnRTdWJUaXRsZSgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuVGV4dF06DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMDINCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdGF0aWNUZXh0KCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5 bnRheFBhcnNlci5Hb3RvLCBWZnJTeW50YXhQYXJzZXIuUmVzZXRCdXR0b25dOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTAzDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYudmZyU3RhdGVtZW50Q3Jvc3NSZWZlcmVuY2UoKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+ DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbnRleHQo UGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9f aW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4g aW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19p bml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu cGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gSWZyVHJl ZU5vZGUoRUZJX0lGUl9TVUJUSVRMRV9PUCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBTdWJ0aXRsZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3VidGl0bGUsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgVGV4dChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVGV4dCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVu UGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5OdW1iZXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VQ YXJlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBFbmRTdWJ0aXRsZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kU3VidGl0bGUsIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9u ZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3VidGl0bGVGbGFncyhzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLlZmclN1YnRpdGxlRmxhZ3NDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3RhdFRhZ0xpc3Qoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdENvbnRleHQsMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1l bnRTdWJUaXRsZUNvbXBvbmVudChzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+ DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dFN1YlRpdGxlQ29tcG9uZW50Qw0KPiA+IG9udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBl bHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN1YlRpdGxlQ29tcG9u ZW50Q28NCj4gPiBudGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50U3ViVGl0bGUNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNp dG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRW ZnJTdGF0ZW1lbnRTdWJUaXRsZSIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRTdWJUaXRsZShzZWxmKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0YXRlbWVudFN1YlRpdGxlKHNlbGYpOg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50U3ViVGl0bGVDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0 YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDExMiwgc2Vs Zi5SVUxFX3ZmclN0YXRlbWVudFN1YlRpdGxlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEg PSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTEwNg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlN1YnRpdGxlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxMTA3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTEwOA0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMDkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTExMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTExMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTExMg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4p DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMTcNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAg ICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDY2LHNlbGYu X2N0eCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBsYV8gPT0gMToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMTMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMTE0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTExNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTExNg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN1YnRpdGxlRmxhZ3MoKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMTM5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYp DQo+ID4NCj4gPiArICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGlj dChzZWxmLl9pbnB1dCw3MSxzZWxmLl9jdHgpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgbGFf ID09IDE6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTIxDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5Db21tYToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTE5DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTIwDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN0YXRUYWdMaXN0KGxvY2FsY3R4Lk5vZGUpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxMTIzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgbGFfID09IDI6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTI2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBs YV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDY4LHNlbGYuX2N0 eCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgbGFfID09IDE6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTEyNA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTEyNQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdChsb2NhbGN0eC5Ob2RlKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTEzNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMo c2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuQ29tbWE6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTEyOA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTEzMg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCgoKF9sYSAtIDQ2KSkgJiB+MHgzZikgPT0g MCBhbmQgKCgxIDw8IChfbGEgLSA0NikpICYgKCgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5P bmVPZiAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk9yZGVyZWRMaXN0IC0gNDYpKSB8 ICgxDQo+ID4gPDwgKFZmclN5bnRheFBhcnNlci5TdWJ0aXRsZSAtIDQ2KSkgfCAoMSA8PCAoVmZy U3ludGF4UGFyc2VyLlRleHQgLSA0NikpIHwgKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLkRh dGUgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5UaW1lIC0gNDYpKSB8ICgxIDw8DQo+ ID4gKFZmclN5bnRheFBhcnNlci5DaGVja0JveCAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFy c2VyLk51bWVyaWMgLSA0NikpIHwgKDENCj4gPiA8PCAoVmZyU3ludGF4UGFyc2VyLlBhc3N3b3Jk IC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuU3RyaW5nIC0gNDYpKSB8ICgxDQo+ID4g PDwgKFZmclN5bnRheFBhcnNlci5Hb3RvIC0gNDYpKSkpICE9IDApIG9yIF9sYT09VmZyU3ludGF4 UGFyc2VyLlJlc2V0QnV0dG9uDQo+IG9yDQo+ID4gX2xhPT1WZnJTeW50YXhQYXJzZXIuQWN0aW9u Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTI5DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdWJUaXRs ZUNvbXBvbmVudCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDExMzQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBfbGEgPSBz ZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTEzNw0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmRTdWJ0aXRsZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMzgNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAg IGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4g PiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50U3ViVGl0bGVDb21wb25lbnRDb250ZXh0KFBhcnNl clJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9r aW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNl ciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdGF0KHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbnMoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbnNDb250ZXh0LDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4 KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVM RV92ZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbXBvbmVudA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFN1 YlRpdGxlQ29tcG9uZW50IiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdFZmclN0YXRlbWVudFN1YlRpdGxlQ29tcG9uZW50KHNlbGYpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50U3ViVGl0bGVDb21w b25lbnQoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9DQo+ IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbXBvbmVudENvbnRleHQoc2Vs ZiwNCj4gPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgMTE0LA0KPiBzZWxmLlJVTEVfdmZyU3RhdGVtZW50U3ViVGl0bGVD b21wb25lbnQpDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDExNDMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxB KDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5T dWJ0aXRsZSwgVmZyU3ludGF4UGFyc2VyLlRleHQsDQo+ID4gVmZyU3ludGF4UGFyc2VyLkdvdG8s IFZmclN5bnRheFBhcnNlci5SZXNldEJ1dHRvbl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDExNDENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJT dGF0ZW1lbnRTdGF0KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4g KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5PbmVPZiwgVmZyU3lu dGF4UGFyc2VyLk9yZGVyZWRMaXN0LA0KPiA+IFZmclN5bnRheFBhcnNlci5EYXRlLCBWZnJTeW50 YXhQYXJzZXIuVGltZSwgVmZyU3ludGF4UGFyc2VyLkNoZWNrQm94LA0KPiA+IFZmclN5bnRheFBh cnNlci5OdW1lcmljLCBWZnJTeW50YXhQYXJzZXIuUGFzc3dvcmQsIFZmclN5bnRheFBhcnNlci5T dHJpbmcsDQo+ID4gVmZyU3ludGF4UGFyc2VyLkFjdGlvbl06DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNDINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi52ZnJTdGF0ZW1lbnRRdWVzdGlvbnMoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNz DQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAg ZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBjbGFzcyBWZnJTdWJ0aXRsZUZsYWdzQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2Vy LCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0t MSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9r aW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLlN1YkZsYWdzID0gMA0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIHN1YnRpdGxlRmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2Vy LlN1YnRpdGxlRmxhZ3NGaWVsZENvbnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5TdWJ0aXRsZUZsYWdzRmllbGRDb250ZXh0LGkpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYs IGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNl ci5CaXRXaXNlT3IpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VP ciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3Zm clN1YnRpdGxlRmxhZ3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQo c2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdWJ0aXRsZUZsYWdzIiApOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN1YnRpdGxlRmxhZ3Moc2Vs ZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdWJ0aXRs ZUZsYWdzKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBW ZnJTeW50YXhQYXJzZXIuVmZyU3VidGl0bGVGbGFnc0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0K PiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0 eCwgMTE2LCBzZWxmLlJVTEVfdmZyU3VidGl0bGVGbGFncykNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNDUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN1YnRpdGxlRmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDExNTANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNDYNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE0Nw0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN1YnRpdGxlRmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxMTUyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9p bnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0 aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2Vw dGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRF cnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl Y292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2Fs Y3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFN1YnRpdGxl RmxhZ3NGaWVsZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5GbGFnID0gMA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdl dFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4 UGFyc2VyLlJVTEVfc3VidGl0bGVGbGFnc0ZpZWxkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0U3VidGl0bGVGbGFnc0Zp ZWxkIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFN1 YnRpdGxlRmxhZ3NGaWVsZChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgZGVmIHN1YnRpdGxlRmxhZ3NGaWVsZChzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlN1YnRpdGxlRmxhZ3NGaWVsZENv bnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTE4LCBzZWxmLlJVTEVfc3VidGl0bGVGbGFnc0Zp ZWxkKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE1Mw0K PiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgbm90KF9sYT09VmZyU3ludGF4UGFyc2VyLlRfXzcgb3IgX2xhPT1WZnJT eW50YXhQYXJzZXIuTnVtYmVyKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZWNvdmVySW5saW5lKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRNYXRjaChz ZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmNvbnN1bWUoKQ0KPiA+DQo+ID4g KyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAg ICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFN0YXRpY1RleHRDb250ZXh0KFBhcnNlclJ1bGVD b250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm LCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3Rh dGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVu dCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBh cnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRyZWVOb2RlKEVGSV9J RlJfVEVYVF9PUCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlMxID0gTm9uZSAjIFRva2Vu DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5TMiA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuUzMgPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLkYgPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlM0ID0g Tm9uZSAjIFRva2VuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgVGV4dChzZWxm LCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJz ZXIuVGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVGV4dCwgaSkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBIZWxwKHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5IZWxwLCAwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYsIGk6aW50 PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TdHJp bmdUb2tlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4s IGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYsIGk6 aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5P cGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwg aSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYsIGk6 aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5D bG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVu LCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50 PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21t YSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24s IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50 PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1i ZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBzdGF0aWNUZXh0RmxhZ3NGaWVsZChzZWxmLCBp OmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMo VmZyU3ludGF4UGFyc2VyLlN0YXRpY1RleHRGbGFnc0ZpZWxkQ29udGV4dCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlN0YXRpY1RleHRGbGFnc0Zp ZWxkQ29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIEtleShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuS2V5LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIHZmclN0YXRlbWVudFN0YXRUYWdMaXN0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50U3RhdFRhZ0xpc3RDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRTdGF0aWNU ZXh0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0 b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0cigg dmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50U3RhdGljVGV4dCIgKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRTdGF0aWNUZXh0KHNl bGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVt ZW50U3RhdGljVGV4dChzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2Fs Y3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRpY1RleHRDb250ZXh0KHNlbGYs IHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRl clJ1bGUobG9jYWxjdHgsIDEyMCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFN0YXRpY1RleHQpDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAg ICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTU1DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVGV4dCkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE1Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkhlbHApDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDExNTcNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTU4DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9r ZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNTkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNjANCj4gPg0KPiA+ICsgICAgICAgICAgICBs b2NhbGN0eC5TMSA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE2MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDExNjINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTE2Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRl eHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNjQNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTY1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDExNjYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDExNjcNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5TMiA9IHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTE2OA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNs b3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNzYNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsg ICAgICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0 LDc0LHNlbGYuX2N0eCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBsYV8gPT0gMToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNjkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTcwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMTcxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMTcyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTE3Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMTc0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LlMzID0gc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTE3NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTk0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgbGFfID0gc2Vs Zi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCw3NixzZWxmLl9jdHgpDQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgbGFfID09IDE6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxMTc4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTE3OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5GID0gc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMTgwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMTgxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGljVGV4dEZsYWdzRmll bGQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE4Ng0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExODINCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTgzDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRpY1RleHRGbGFnc0ZpZWxkKCkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTg4DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTg5DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE5MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5LZXkpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMTkxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMTkyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LlM0ID0gc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTk4DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAg X2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZm clN5bnRheFBhcnNlci5Db21tYToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDExOTYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTk3 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50U3RhdFRhZ0xpc3Qo bG9jYWxjdHguTm9kZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTIwMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNv Z25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5l eGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBs b2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBTdGF0 aWNUZXh0RmxhZ3NGaWVsZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNl clJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5GbGFnID0gMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUg IyBUb2tlbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHF1ZXN0aW9u aGVhZGVyRmxhZ3NGaWVsZChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4g Pg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uaGVh ZGVyRmxhZ3NGaWVsZENvbnRleHQsMA0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3N0YXRpY1RleHRGbGFnc0ZpZWxkDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRv ciwgInZpc2l0U3RhdGljVGV4dEZsYWdzRmllbGQiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0U3RhdGljVGV4dEZsYWdzRmllbGQoc2VsZikNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBzdGF0aWNUZXh0RmxhZ3NGaWVs ZChzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3lu dGF4UGFyc2VyLlN0YXRpY1RleHRGbGFnc0ZpZWxkQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ ID4gc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4 LCAxMjIsIHNlbGYuUlVMRV9zdGF0aWNUZXh0RmxhZ3NGaWVsZCkNCj4gPg0KPiA+ICsgICAgICAg IHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIwNA0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk51bWJlcl06DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMDINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbG9j YWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5JbnRlcmFjdGl2ZUZsYWcsDQo+ID4gVmZyU3ludGF4UGFyc2VyLk5W QWNjZXNzRmxhZywgVmZyU3ludGF4UGFyc2VyLlJlc2V0UmVxdWlyZWRGbGFnLA0KPiA+IFZmclN5 bnRheFBhcnNlci5SZWNvbm5lY3RSZXF1aXJlZEZsYWcsIFZmclN5bnRheFBhcnNlci5MYXRlQ2hl Y2tGbGFnLA0KPiA+IFZmclN5bnRheFBhcnNlci5SZWFkT25seUZsYWcsIFZmclN5bnRheFBhcnNl ci5PcHRpb25Pbmx5RmxhZywNCj4gPiBWZnJTeW50YXhQYXJzZXIuUmVzdFN0eWxlRmxhZ106DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMDMNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRDcm9zc1JlZmVy ZW5jZUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0 PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5O b2RlID0gTm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVu dEdvdG8oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRHb3RvQ29udGV4dCww KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRl bWVudFJlc2V0QnV0dG9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+ DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 UmVzZXRCdXR0b25Db250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRDcm9zc1JlZmVyZW5jZQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNl VHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3Is ICJ2aXNpdFZmclN0YXRlbWVudENyb3NzUmVmZXJlbmNlIiApOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudENyb3NzUmVmZXJlbmNlKHNl bGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVt ZW50Q3Jvc3NSZWZlcmVuY2Uoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBs b2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRDcm9zc1JlZmVyZW5jZUNvbnRl eHQoc2VsZiwNCj4gPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTI0LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50Q3Jvc3NS ZWZlcmVuY2UpDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEyMDgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxB KDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5H b3RvXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIwNg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEdvdG8oKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLlJlc2V0QnV0dG9uXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTIwNw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZm clN0YXRlbWVudFJlc2V0QnV0dG9uKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJh aXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZp bmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiAr ICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50R290b0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg cGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2lu Z1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9SRUZfT1Ap DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVF U1RJT05fUkVGDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5RTiA9IE5vbmUgIyBUb2tlbg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuRSA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIEdvdG8oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkdvdG8sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgdmZyUXVlc3Rpb25IZWFkZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5W ZnJRdWVzdGlvbkhlYWRlckNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4g PiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIEZMQUdTKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiB2ZnJHb3RvRmxhZ3Moc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5WZnJHb3RvRmxhZ3NDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgS2V5KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5LZXksIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3Qoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3RDbw0KPiA+IG50ZXh0LDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRGV2aWNlUGF0aChz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuRGV2aWNlUGF0aCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBTdHJpbmdUb2tlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQ YXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBGb3JtU2V0R3VpZChz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuRm9ybVNldEd1aWQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgZ3VpZERlZmluaXRpb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlv bkNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBGb3JtSWQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkZvcm1JZCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBRdWVzdGlvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUXVlc3Rpb24sIDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRp ZmllciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxF X3ZmclN0YXRlbWVudEdvdG8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2Nl cHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRHb3RvIiApOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudEdvdG8o c2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0 ZW1lbnRHb3RvKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHgg PSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50R290b0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4 LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2Nh bGN0eCwgMTI2LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50R290bykNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMTANCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Hb3RvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMjU4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgx KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRGV2 aWNlUGF0aF06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjExDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRldmlj ZVBhdGgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjEyDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjEzDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIxNA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjE1DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMTYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMTcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxMjE4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkZvcm1TZXRHdWlkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTIxOQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTIyMA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmd1aWREZWZpbml0aW9uKCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMjENCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjIyDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZvcm1JZCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMjMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDEyMjQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTIyNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDEyMjYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuUXVlc3Rpb24pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjI3 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRf XzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjI4DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMjkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGlu IFtWZnJTeW50YXhQYXJzZXIuRm9ybVNldEd1aWRdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTIzMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5Gb3JtU2V0R3VpZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEyMzINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEyMzMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5ndWlkRGVmaW5pdGlvbigp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjM0DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIzNQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Gb3JtSWQpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjM2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMjM3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEyMzgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMjM5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlF1ZXN0aW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI0 MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5U X181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI0MQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjQyDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLkZvcm1JZF06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMjQ0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkZvcm1JZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEyNDUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNDYN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVt YmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI0Nw0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNDgNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUXVlc3Rpb24pDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjQ5DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjU0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICB0b2tl biA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcl06DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI1MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgbG9jYWxjdHguUU4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVu dGlmaWVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNTEN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTnVtYmVyXToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjUyDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI1Mw0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFs dEV4Y2VwdGlvbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBw YXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2Vy Lk51bWJlcl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjU2DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MjU3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlByb21wdCwgVmZyU3ludGF4UGFy c2VyLk5hbWUsDQo+ID4gVmZyU3ludGF4UGFyc2VyLlZhcklkLCBWZnJTeW50YXhQYXJzZXIuUXVl c3Rpb25JZF06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAg ICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNjANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnZmclF1ZXN0aW9uSGVhZGVyKGxvY2FsY3R4Lk5vZGUsIGxvY2FsY3R4LlFUeXBlKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjY1DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgbGFfID0g c2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCw4MixzZWxmLl9jdHgpDQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgbGFfID09IDE6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMjYxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTI2Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5GTEFHUykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDEyNjMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNjQNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJHb3RvRmxhZ3MoKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjcxDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1 dCw4MyxzZWxmLl9jdHgpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgbGFfID09IDE6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjY3DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI2OA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5LZXkpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMjY5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMjcwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTI3NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIu Q29tbWE6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjczDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LkUgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNzQN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlv bkxpc3QobG9jYWxjdHguTm9kZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI3Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2Vw dCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2Nh bGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJl dHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFz cyBWZnJHb3RvRmxhZ3NDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJS dWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuR290b0ZsYWdzID0gMA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IGdvdG9GbGFnc0ZpZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuR290b0ZsYWdzRmllbGRDb250 ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu R290b0ZsYWdzRmllbGRDb250ZXh0LGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckdvdG9GbGFncw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3Ip Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckdv dG9GbGFncyIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRWZnJHb3RvRmxhZ3Moc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiB2ZnJHb3RvRmxhZ3Moc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJHb3RvRmxhZ3NDb250ZXh0KHNlbGYsIHNl bGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxv Y2FsY3R4LCAxMjgsIHNlbGYuUlVMRV92ZnJHb3RvRmxhZ3MpDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjc5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5nb3RvRmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEy ODQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyODANCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI4MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLmdvdG9GbGFnc0ZpZWxkKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDEyODYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxB KDEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNl cHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0g cmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNl bGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zlcihz ZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgR290b0ZsYWdzRmllbGRD b250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25l LA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRmxhZyA9 IDANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBxdWVzdGlvbmhlYWRlckZsYWdzRmllbGQo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5RdWVzdGlvbmhlYWRlckZsYWdzRmllbGRDb250 ZXh0LDANCj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJT eW50YXhQYXJzZXIuUlVMRV9nb3RvRmxhZ3NGaWVsZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdEdvdG9GbGFnc0ZpZWxk IiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEdvdG9G bGFnc0ZpZWxkKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBk ZWYgZ290b0ZsYWdzRmllbGQoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBs b2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5Hb3RvRmxhZ3NGaWVsZENvbnRleHQoc2VsZiwgc2Vs Zi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUo bG9jYWxjdHgsIDEzMCwgc2VsZi5SVUxFX2dvdG9GbGFnc0ZpZWxkKQ0KPiA+DQo+ID4gKyAgICAg ICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjg5DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAg ICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTnVtYmVyXToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI4Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBs b2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLkludGVyYWN0aXZlRmxhZywNCj4gPiBWZnJTeW50YXhQYXJzZXIu TlZBY2Nlc3NGbGFnLCBWZnJTeW50YXhQYXJzZXIuUmVzZXRSZXF1aXJlZEZsYWcsDQo+ID4gVmZy U3ludGF4UGFyc2VyLlJlY29ubmVjdFJlcXVpcmVkRmxhZywgVmZyU3ludGF4UGFyc2VyLkxhdGVD aGVja0ZsYWcsDQo+ID4gVmZyU3ludGF4UGFyc2VyLlJlYWRPbmx5RmxhZywgVmZyU3ludGF4UGFy c2VyLk9wdGlvbk9ubHlGbGFnLA0KPiA+IFZmclN5bnRheFBhcnNlci5SZXN0U3R5bGVGbGFnXToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAy KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI4OA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZCgpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9u IGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCBy ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwg cmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFJlc2V0QnV0 dG9uQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAg c3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5v ZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX1JFU0VUX0JVVFRPTl9PUCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBSZXNldEJ1dHRvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUmVzZXRCdXR0b24sIDApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgRGVmYXVsdFN0b3JlKHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5EZWZhdWx0U3Rv cmUsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRIZWFkZXIoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRIZWFkZXJDb250ZXh0LDApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRW5kUmVzZXRCdXR0b24oc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkVuZFJlc2V0QnV0dG9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IFNlbWljb2xvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIs IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3RhdFRh Z0xpc3Qoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdENv bnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBn ZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRh eFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFJlc2V0QnV0dG9uDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVt ZW50UmVzZXRCdXR0b24iICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0VmZyU3RhdGVtZW50UmVzZXRCdXR0b24oc2VsZikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRSZXNldEJ1dHRvbihzZWxmKToN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudFJlc2V0QnV0dG9uQ29udGV4dChzZWxmLA0KPiA+IHNlbGYuX2N0eCwgc2Vs Zi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxMzIs IHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRSZXNldEJ1dHRvbikNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyOTENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5SZXNldEJ1dHRvbikNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTI5Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkRlZmF1bHRTdG9yZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTI5Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyOTQNCj4gPg0K PiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu U3RyaW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI5 NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1h KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjk2DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRIZWFkZXIobG9jYWxjdHguTm9kZSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI5Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMzAxDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5JbWFnZSBvciBf bGE9PVZmclN5bnRheFBhcnNlci5Mb2NrZWQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMjk4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVt ZW50U3RhdFRhZ0xpc3QobG9jYWxjdHguTm9kZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEyOTkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMDMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmRSZXNldEJ1dHRvbikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTMwNA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNv Z25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5l eGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBs b2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJT dGF0ZW1lbnRRdWVzdGlvbnNDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJz ZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiB2ZnJTdGF0ZW1lbnRCb29sZWFuVHlwZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudEJvb2xlYW5UeXBlQ29udGV4dCwwDQo+ID4gKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudERhdGUoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnREYXRlQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudE51bWVyaWNUeXBlKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50TnVtZXJpY1R5cGVDb250ZXh0 LDANCj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg dmZyU3RhdGVtZW50U3RyaW5nVHlwZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudFN0cmluZ1R5cGVDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50T3JkZXJlZExpc3Qoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRPcmRlcmVkTGlzdENvbnRleHQsMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRUaW1lKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VGltZUNvbnRleHQsMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0 YXRlbWVudFF1ZXN0aW9ucw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2Vw dChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFF1ZXN0aW9ucyIgKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRR dWVzdGlvbnMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbnMoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbnNDb250 ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDEzNCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFF1ZXN0 aW9ucykNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTMxMg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkNoZWNr Qm94LCBWZnJTeW50YXhQYXJzZXIuQWN0aW9uXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTMwNg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0 YXRlbWVudEJvb2xlYW5UeXBlKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5EYXRlXToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAy KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMwNw0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudERhdGUoKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZy U3ludGF4UGFyc2VyLk9uZU9mLCBWZnJTeW50YXhQYXJzZXIuTnVtZXJpY106DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMykNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMDgNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi52ZnJTdGF0ZW1lbnROdW1lcmljVHlwZSgpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50 YXhQYXJzZXIuUGFzc3dvcmQsIFZmclN5bnRheFBhcnNlci5TdHJpbmddOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDQpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzA5DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYudmZyU3RhdGVtZW50U3RyaW5nVHlwZSgpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQ YXJzZXIuT3JkZXJlZExpc3RdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxMzEwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50T3Jk ZXJlZExpc3QoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlRpbWVdOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDYpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzExDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYudmZyU3RhdGVtZW50VGltZSgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAg ICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFF1ZXN0aW9uVGFnQ29udGV4dChQYXJzZXJS dWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18o c2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2lu Z1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhw YXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIg PSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3RhdFRhZyhzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRUYWdDb250ZXh0LDApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29tbWEoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1h LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEluY29u c2lzdGVudElmKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW5jb25z aXN0ZW50SWZDb250ZXh0LA0KPiA+IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50Tm9TdWJtaXRJZihzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudE5vU3VibWl0SWZDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RGlzYWJsZUlmUXVl c3Qoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnREaXNhYmxlSWZRdWVz dENvbnRleHQNCj4gPiAsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiB2ZnJTdGF0ZW1lbnRSZWZyZXNoKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50UmVmcmVzaENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRWYXJzdG9yZURldmljZShzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFZhcnN0b3JlRGV2aWNlQ29udGV4dA0KPiA+ICww KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRl bWVudEV4dGVuc2lvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4dGVu c2lvbkNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiB2ZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnRDb250ZXh0LDANCj4gPiApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50V2FybmluZ0lmKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50V2FybmluZ0lmQ29udGV4dCwwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRl eChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJV TEVfdmZyU3RhdGVtZW50UXVlc3Rpb25UYWcNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRRdWVzdGlv blRhZyIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRW ZnJTdGF0ZW1lbnRRdWVzdGlvblRhZyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9uVGFnKHNlbGYpOg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVt ZW50UXVlc3Rpb25UYWdDb250ZXh0KHNlbGYsDQo+ID4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDEzNiwgc2VsZi5SVUxF X3ZmclN0YXRlbWVudFF1ZXN0aW9uVGFnKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzI1DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgdG9rZW4g PSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtW ZnJTeW50YXhQYXJzZXIuSW1hZ2UsIFZmclN5bnRheFBhcnNlci5Mb2NrZWRdOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzE0DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYudmZyU3RhdGVtZW50U3RhdFRhZygpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMzE1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNz DQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLklu Y29uc2lzdGVudElmXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTMxNw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEluY29uc2lz dGVudElmKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5Ob1N1Ym1pdElmXToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMxOA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudE5vU3VibWl0SWYoKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZy U3ludGF4UGFyc2VyLkRpc2FibGVJZl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEzMTkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1l bnREaXNhYmxlSWZRdWVzdCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuUmVmcmVzaF06 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg NSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMjANCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRSZWZyZXNoKCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5WYXJzdG9yZURldmljZV06DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNikNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDEzMjENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52 ZnJTdGF0ZW1lbnRWYXJzdG9yZURldmljZSgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBh c3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIu R3VpZE9wXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCA3KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMyMg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4dGVuc2lvbigpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlm IHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuUmVmcmVzaEd1aWRdOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDgpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzIzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYudmZyU3RhdGVtZW50UmVmcmVzaEV2ZW50KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBh cnNlci5XYXJuaW5nSWZdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMzI0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50V2Fybmlu Z0lmKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhj ZXB0aW9uKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2du aXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhj ZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9y dEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9j YWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyU3Rh dGVtZW50SW5jb25zaXN0ZW50SWZDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQ YXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0K PiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfSU5DT05TSVNURU5UX0lG X09QKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEluY29uc2lzdGVudElmKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5JbmNvbnNpc3RlbnRJZiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBQcm9tcHQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLlByb21wdCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIDApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4s IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5O dW1iZXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlz IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhW ZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkNvbW1hLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVu dEV4cHJlc3Npb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNz aW9uQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIEVuZElmKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5FbmRJZiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBGTEFHUyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgZmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0K PiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkZsYWdzRmllbGRD b250ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuRmxhZ3NGaWVsZENvbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50SW5jb25z aXN0ZW50SWYNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwg dmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNh dHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZiIgKToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRJbmNv bnNpc3RlbnRJZihzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIHZmclN0YXRlbWVudEluY29uc2lzdGVudElmKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW5jb25z aXN0ZW50SWZDb250ZXh0KHNlbGYsDQo+ID4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDEzOCwgc2VsZi5SVUxFX3ZmclN0 YXRlbWVudEluY29uc2lzdGVudElmKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMg VG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTMyNw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkluY29uc2lzdGVudElmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxMzI4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuUHJvbXB0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzI5DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMzMA0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxMzMxDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMzMyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzMzDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJl bikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMzNA0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzQ3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNl ci5GTEFHUzoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMzUNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1Mp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzM2DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzM3DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuZmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMzQyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu c3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5M QSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNl ci5CaXRXaXNlT3I6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTMzOA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEzMzkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3NGaWVsZCgp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM0NA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM0NQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTM0OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvbihs b2NhbGN0eC5Ob2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzUwDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kSWYpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzNTINCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBs YV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDkyLHNlbGYuX2N0 eCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBsYV8gPT0gMToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzNTENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4N Cj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1 bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudE5vU3VibWl0SWZDb250ZXh0 KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+ IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9f aW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRy ZWVOb2RlKEVGSV9JRlJfTk9fU1VCTUlUX0lGX09QKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIE5vU3VibWl0SWYoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk5vU3VibWl0SWYsIDApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgUHJvbXB0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Qcm9tcHQsIDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5nVG9rZW4oc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmlu Z1Rva2VuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IE51bWJlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBFbmRJZihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kSWYsIDApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGZsYWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9u ZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRh eFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLkZsYWdzRmllbGRDb250ZXh0LGkpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1p Y29sb24sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQml0V2lzZU9yKHNl bGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBh cnNlci5CaXRXaXNlT3IpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdp c2VPciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxF X3ZmclN0YXRlbWVudE5vU3VibWl0SWYNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnROb1N1Ym1pdElm IiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0 YXRlbWVudE5vU3VibWl0SWYoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGRlZiB2ZnJTdGF0ZW1lbnROb1N1Ym1pdElmKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50Tm9T dWJtaXRJZkNvbnRleHQoc2VsZiwNCj4gc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTQwLCBzZWxmLlJVTEVfdmZy U3RhdGVtZW50Tm9TdWJtaXRJZikNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRv a2VuIHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEzNTQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Ob1N1Ym1pdElmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MzU1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUHJv bXB0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzU2DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM1Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxMzU4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMzU5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu TnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzYwDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM2MQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMzc0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQu TEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5GTEFH UzoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzNjINCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzYzDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzY0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuZmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMzY5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRX aXNlT3I6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM2NQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Qml0V2lzZU9yKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEz NjYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3NGaWVsZCgpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM3MQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM3Mg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM3Ng0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvbihsb2NhbGN0 eC5Ob2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzc3DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kSWYpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzNzkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBsYV8gPSBz ZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDk1LHNlbGYuX2N0eCkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBsYV8gPT0gMToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDEzNzgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiAr ICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudERpc2FibGVJZlF1ZXN0Q29udGV4dChQ YXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19p bml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBp bnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2lu aXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5w YXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBJZnJUcmVl Tm9kZShFRklfSUZSX0RJU0FCTEVfSUZfT1ApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgRGlzYWJsZUlmKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5EaXNhYmxlSWYsIDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvbihzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0LDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYsIGk6aW50PU5v bmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TZW1pY29s b24pDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgaSkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlv bkxpc3Qoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9w dGlvbkxpc3RDbw0KPiA+IG50ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgRW5kSWYoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVuZElmLCAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50RGlzYWJsZUlmUXVl c3QNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRv cjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2 aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnREaXNhYmxlSWZRdWVzdCIgKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnREaXNhYmxlSWZR dWVzdChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZm clN0YXRlbWVudERpc2FibGVJZlF1ZXN0KHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RGlzYWJsZUlmUXVl c3RDb250ZXh0KHNlbGYsDQo+ID4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE0Miwgc2VsZi5SVUxFX3ZmclN0YXRlbWVu dERpc2FibGVJZlF1ZXN0KQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTM4MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTM4Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVz c2lvbihsb2NhbGN0eC5Ob2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MzgzDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2Vt aWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzg0DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3QobG9jYWxj dHguTm9kZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM4NQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuZElmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzg3DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgbGFfID0g c2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCw5NixzZWxmLl9jdHgpDQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgbGFfID09IDE6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMzg2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0K PiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4g KyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkN Cj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRSZWZyZXNoQ29udGV4dChQYXJzZXJS dWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18o c2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2lu Z1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhw YXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIg PSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBJZnJUcmVlTm9kZShF RklfSUZSX1JFRlJFU0hfT1ApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgUmVm cmVzaChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuUmVmcmVzaCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBJbnRlcnZhbChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuSW50ZXJ2YWwsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRSZWZyZXNoDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRv ciwgInZpc2l0VmZyU3RhdGVtZW50UmVmcmVzaCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRSZWZyZXNoKHNlbGYpDQo+ID4NCj4g PiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50UmVmcmVzaChz ZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4 UGFyc2VyLlZmclN0YXRlbWVudFJlZnJlc2hDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBz ZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE0 NCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFJlZnJlc2gpDQo+ID4NCj4gPiArICAgICAgICB0cnk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzg5DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUmVmcmVzaCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTM5MA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkludGVydmFsKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMzkxDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM5Mg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4g Pg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0K PiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4g KyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkN Cj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRWYXJzdG9yZURldmljZUNvbnRleHQo UGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9f aW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4g aW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19p bml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu cGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gSWZyVHJl ZU5vZGUoRUZJX0lGUl9WQVJTVE9SRV9ERVZJQ0VfT1ApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgVmFyc3RvcmVEZXZpY2Uoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlZhcnN0b3JlRGV2aWNlLCAwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5T dHJpbmdUb2tlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBPcGVuUGFy ZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBOdW1iZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFZh cnN0b3JlRGV2aWNlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNl bGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYg aGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50VmFyc3RvcmVEZXZpY2UiICk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50 VmFyc3RvcmVEZXZpY2Uoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiB2ZnJTdGF0ZW1lbnRWYXJzdG9yZURldmljZShzZWxmKToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFZh cnN0b3JlRGV2aWNlQ29udGV4dChzZWxmLA0KPiA+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxNDYsIHNlbGYuUlVMRV92 ZnJTdGF0ZW1lbnRWYXJzdG9yZURldmljZSkNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzOTQNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5WYXJzdG9yZURldmljZSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTM5NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEzOTYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5TdHJpbmdUb2tlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM5Nw0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJl bikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM5OA0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM5OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE0MDANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4 Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24g PSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Io c2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVy KHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRS ZWZyZXNoRXZlbnRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfUkVGUkVTSF9JRF9PUCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBSZWZyZXNoR3VpZChzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUmVmcmVzaEd1 aWQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ3VpZERlZmluaXRpb24o c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNvbnRleHQsMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb21tYShzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu Q29tbWEsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4 KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVM RV92ZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRSZWZyZXNo RXZlbnQiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 VmZyU3RhdGVtZW50UmVmcmVzaEV2ZW50KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxz ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJl bihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50UmVmcmVzaEV2ZW50KHNlbGYpOg0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50UmVmcmVzaEV2ZW50Q29udGV4dChzZWxmLA0KPiA+IHNlbGYuX2N0eCwgc2VsZi5zdGF0 ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxNDgsIHNlbGYu UlVMRV92ZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnQpDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDAyDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUmVmcmVzaEd1aWQpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MDMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNDA0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5ndWlkRGVmaW5pdGlvbigpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MDUNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAg IGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxs eToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBjbGFzcyBWZnJTdGF0ZW1lbnRXYXJuaW5nSWZDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs IHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0x KToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tp bmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfV0FSTklO R19JRl9PUCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBXYXJuaW5nSWYoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLldhcm5pbmdJZiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBQ cm9tcHQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlByb21wdCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBTdHJpbmdUb2tlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAw KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5v bmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvbihzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0LDApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRW5kSWYoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVu ZElmLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFRpbWVvdXQoc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlRpbWVvdXQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNv bG9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBW ZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRXYXJuaW5nSWYNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9y KToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJT dGF0ZW1lbnRXYXJuaW5nSWYiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50V2FybmluZ0lmKHNlbGYpDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50V2FybmluZ0lmKHNlbGYpOg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50V2FybmluZ0lmQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5z dGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxNTAsIHNl bGYuUlVMRV92ZnJTdGF0ZW1lbnRXYXJuaW5nSWYpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9s YSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNDA3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuV2FybmluZ0lmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNDA4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuUHJvbXB0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDA5DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQxMA0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDExDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNDEyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDEz DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQ YXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQxNA0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDE5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2Vs Zi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBh cnNlci5UaW1lb3V0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQx NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5U aW1lb3V0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQxNg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQxNw0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDE4DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDIxDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKGxvY2FsY3R4Lk5vZGUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MjINCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmRJZikNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTQyNA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxhXyA9IHNlbGYuX2lu dGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsOTgsc2VsZi5fY3R4KQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIGxhXyA9PSAxOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTQyMw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAg IGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4g PiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50UXVlc3Rpb25UYWdMaXN0Q29udGV4dChQYXJzZXJS dWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18o c2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2lu Z1N0YXRlOmludD0tMSwgTm9kZT1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigp Ll9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5v bmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb2RlDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25UYWcoc2VsZiwgaTppbnQ9 Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvblRhZ0NvbnRleHQpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4N Cj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRR dWVzdGlvblRhZ0NvbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFF1ZXN0aW9uVGFnTGlzdA0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNl VHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3Is ICJ2aXNpdFZmclN0YXRlbWVudFF1ZXN0aW9uVGFnTGlzdCIgKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRRdWVzdGlvblRhZ0xpc3Qo c2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0 ZW1lbnRRdWVzdGlvblRhZ0xpc3Qoc2VsZiwgTm9kZSk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvblRh Z0xpc3RDb250ZXh0KHNlbGYsDQo+ID4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBOb2RlKQ0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE1Miwgc2VsZi5SVUxFX3Zm clN0YXRlbWVudFF1ZXN0aW9uVGFnTGlzdCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0g MCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE0MjkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5M QSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHdoaWxlICgoKChfbGEgLSAxMDYpKSAmIH4weDNm KSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDEwNikpICYgKCgxIDw8DQo+ID4gKFZmclN5bnRheFBh cnNlci5EaXNhYmxlSWYgLSAxMDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuSW5jb25zaXN0 ZW50SWYgLQ0KPiAxMDYpKQ0KPiA+IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5XYXJuaW5nSWYg LSAxMDYpKSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuTm9TdWJtaXRJZg0KPiA+IC0gMTA2 KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkltYWdlIC0gMTA2KSkgfCAoMSA8PCAoVmZyU3lu dGF4UGFyc2VyLkxvY2tlZA0KPiAtDQo+ID4gMTA2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2Vy LlJlZnJlc2ggLSAxMDYpKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5WYXJzdG9yZURl dmljZSAtIDEwNikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5HdWlkT3AgLQ0KPiA+IDEwNikp KSkgIT0gMCkgb3IgX2xhPT1WZnJTeW50YXhQYXJzZXIuUmVmcmVzaEd1aWQ6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDI2DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYudmZyU3RhdGVtZW50UXVlc3Rpb25UYWcoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTQzMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgX2xhID0gc2Vs Zi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNv Z25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5l eGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBs b2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJT dGF0ZW1lbnRRdWVzdGlvbk9wdGlvblRhZ0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFy ZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0 YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIHZmclN0YXRlbWVudFN1cHByZXNzSWZRdWVzdChzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudFN1cHByZXNzSWZRdWVzdENvbnRlDQo+ID4geHQsMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRH cmF5T3V0SWZRdWVzdChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0K PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEdy YXlPdXRJZlF1ZXN0Q29udGV4DQo+ID4gdCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFZhbHVlKHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuVmZyU3RhdGVtZW50VmFsdWVDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RGVmYXVsdChzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudERlZmF1bHRDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50T3B0aW9ucyhzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudE9wdGlvbnNDb250ZXh0LDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50UmVh ZChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFJlYWRDb250ZXh0LDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50 V3JpdGUoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRXcml0ZUNvbnRleHQs MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxl SW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNl ci5SVUxFX3ZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uVGFnDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVt ZW50UXVlc3Rpb25PcHRpb25UYWciICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25UYWcoc2VsZikNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlv bk9wdGlvblRhZyhzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4 ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uVGFnQ29udGV4dChz ZWxmLA0KPiA+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu ZW50ZXJSdWxlKGxvY2FsY3R4LCAxNTQsDQo+IHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRRdWVzdGlv bk9wdGlvblRhZykNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTQzOQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQu TEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2Vy LlN1cHByZXNzSWZdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NDMyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50U3VwcHJlc3NJ ZlF1ZXN0KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5HcmF5T3V0SWZdOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDMzDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50R3JheU91dElmUXVlc3QoKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBb VmZyU3ludGF4UGFyc2VyLlZhbHVlXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTQzNA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVu dFZhbHVlKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5EZWZhdWx0XToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA0KQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQzNQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnZmclN0YXRlbWVudERlZmF1bHQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4 UGFyc2VyLk9wdGlvbl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE0MzYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRPcHRpb25z KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAg IGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5SZWFkXToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA2KQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQzNw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnZmclN0YXRlbWVudFJlYWQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLldyaXRl XToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCA3KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQzOA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFdyaXRlKCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMg cmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkN Cj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5l eGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgRmxhZ3NGaWVsZENvbnRleHQoUGFyc2Vy UnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9f KHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tp bmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18o cGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2Vy ID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5MID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgSW50ZXJhY3RpdmVGbGFnKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5JbnRl cmFjdGl2ZUZsYWcsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTWFudWZh Y3R1cmluZ0ZsYWcoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLk1hbnVmYWN0dXJpbmdGbGFnLCAwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIERlZmF1bHRGbGFnKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5EZWZhdWx0RmxhZywg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBSZXNldFJlcXVpcmVkRmxhZyhz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuUmVzZXRSZXF1aXJlZEZsYWcsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgUmVjb25uZWN0UmVxdWlyZWRGbGFnKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5SZWNvbm5lY3RSZXF1aXJl ZEZsYWcsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTlZBY2Nlc3NGbGFn KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5OVkFjY2Vzc0ZsYWcsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgTGF0ZUNoZWNrRmxhZyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZywgMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2ZsYWdzRmllbGQNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRy ZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAi dmlzaXRGbGFnc0ZpZWxkIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdEZsYWdzRmllbGQoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNl bGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgIGRlZiBmbGFnc0ZpZWxkKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQoc2VsZiwg c2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUo bG9jYWxjdHgsIDE1Niwgc2VsZi5SVUxFX2ZsYWdzRmllbGQpDQo+ID4NCj4gPiArICAgICAgICB0 cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NDkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAg ICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYg dG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OdW1iZXJdOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNDQxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5JbnRlcmFjdGl2ZUZsYWddOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNDQyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkludGVyYWN0aXZlRmxhZykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5NYW51 ZmFjdHVyaW5nRmxhZ106DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgMykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE0NDMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuTWFudWZhY3R1cmluZ0ZsYWcpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRGVmYXVs dEZsYWddOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDQ0DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRlZmF1 bHRGbGFnKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlJlc2V0UmVxdWlyZWRGbGFnXToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA1 KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ0NQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5SZXNldFJlcXVpcmVk RmxhZykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5SZWNvbm5lY3RSZXF1aXJlZEZsYWdd Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgs IDYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDQ2DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlJlY29ubmVjdFJl cXVpcmVkRmxhZykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OVkFjY2Vzc0ZsYWddOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDcp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDQ3DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5O VkFjY2Vzc0ZsYWcpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZ106 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg OCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NDgNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguTCA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkxhdGVDaGVja0ZsYWcpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1Zp YWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhj ZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAg cmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNs YXNzIFZmclN0YXRlbWVudFN1cHByZXNzSWZRdWVzdENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQp Og0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNl ciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9 LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZv a2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9TVVBQ UkVTU19JRl9PUCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdXBwcmVzc0lm KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5TdXBwcmVzc0lmLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJT dGF0ZW1lbnRFeHByZXNzaW9uQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIGkpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0Q28NCj4g PiBudGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IEVuZElmKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5FbmRJZiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBGTEFHUyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgZmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+ IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkZsYWdzRmllbGRDb250 ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu RmxhZ3NGaWVsZENvbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBDb21tYShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFN1cHByZXNzSWZRdWVzdA0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBh cnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0 b3IsICJ2aXNpdFZmclN0YXRlbWVudFN1cHByZXNzSWZRdWVzdCIgKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRTdXBwcmVzc0lmUXVl c3Qoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJT dGF0ZW1lbnRTdXBwcmVzc0lmUXVlc3Qoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdXBwcmVzc0lmUXVl c3RDb250ZXh0KHNlbGYsDQo+ID4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE1OCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVu dFN1cHByZXNzSWZRdWVzdCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2Vu IHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE0NTENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5TdXBwcmVzc0lmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDUy DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKGxvY2Fs Y3R4Lk5vZGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NTMNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NjYNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBf bGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIF9sYT09VmZy U3ludGF4UGFyc2VyLkZMQUdTOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTQ1NA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5GTEFHUykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NTUN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9f NSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NTYNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5mbGFnc0ZpZWxkKCkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE0NjENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIF9sYSA9IHNl bGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHdoaWxlIF9sYT09VmZy U3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNDU3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTQ1OA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5m bGFnc0ZpZWxkKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NDYzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMo c2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxB KDEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NDY0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNDY4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRR dWVzdGlvbk9wdGlvbkxpc3QobG9jYWxjdHguTm9kZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTQ2OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkVuZElmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDcx DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4N Cj4gPiArICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxm Ll9pbnB1dCwxMDQsc2VsZi5fY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGxhXyA9PSAx Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ3MA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRp b25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0 aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVy cm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVj b3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxj dHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyU3RhdGVt ZW50R3JheU91dElmUXVlc3RDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJz ZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfU1VQUFJFU1NfSUZfT1ApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgR3JheU91dElmKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5HcmF5 T3V0SWYsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50 RXhwcmVzc2lvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Np b25Db250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgU2VtaWNvbG9uKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlm IGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW5zKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxz ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlNlbWljb2xvbiwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3Qoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3RDbw0KPiA+IG50ZXh0LDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRW5kSWYoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkVuZElmLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEZMQUdTKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5GTEFHUywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBmbGFnc0Zp ZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4 dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1h KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5Db21tYSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBC aXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMo VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuQml0V2lzZU9yLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdl dFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4 UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50R3JheU91dElmUXVlc3QNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0 ZW1lbnRHcmF5T3V0SWZRdWVzdCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRHcmF5T3V0SWZRdWVzdChzZWxmKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0YXRlbWVudEdyYXlPdXRJZlF1 ZXN0KHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50R3JheU91dElmUXVlc3RDb250ZXh0KHNlbGYsDQo+ID4g c2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUo bG9jYWxjdHgsIDE2MCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudEdyYXlPdXRJZlF1ZXN0KQ0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAg ICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0 eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ3Mw0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkdyYXlPdXRJZikNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ3NA0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvbihsb2NhbGN0eC5Ob2RlKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDc1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNDg4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5GTEFHUzoNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NzYNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDc3DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNDc4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu ZmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDgz DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ3OQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lz ZU9yKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0ODANCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ4NQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ4Ng0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ5MA0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KGxvY2Fs Y3R4Lk5vZGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0OTENCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmRJZikNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ5Mw0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxhXyA9 IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsMTA3LHNlbGYuX2N0eCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBsYV8gPT0gMToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE0OTINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4g PiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUo KQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudERlZmF1bHRDb250ZXh0KFBhcnNl clJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9r aW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNl ciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRyZWVOb2Rl KEVGSV9JRlJfREVGQVVMVF9PUCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkQgPSBOb25l ICMgVG9rZW4NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlYgPSBOb25lICMgVmZyU3RhdGVt ZW50VmFsdWVDb250ZXh0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5TTiA9IE5vbmUgIyBU b2tlbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIERlZmF1bHQoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkRlZmF1bHQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29tbWEoc2Vs ZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFy c2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJDb25zdGFudFZhbHVlRmllbGQo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJDb25zdGFudFZhbHVlRmllbGRDb250ZXh0LDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVt ZW50VmFsdWUoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRWYWx1ZUNvbnRl eHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBEZWZh dWx0U3RvcmUoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRTdG9yZSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVy LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZy U3RhdGVtZW50RGVmYXVsdA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2Vw dChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudERlZmF1bHQiICk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50RGVm YXVsdChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZm clN0YXRlbWVudERlZmF1bHQoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBs b2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnREZWZhdWx0Q29udGV4dChzZWxm LCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50 ZXJSdWxlKGxvY2FsY3R4LCAxNjIsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnREZWZhdWx0KQ0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAg ICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0 eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ5NQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIGxvY2FsY3R4LkQgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5EZWZh dWx0KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTAz DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4N Cj4gPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuVmFsdWVdOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ5Ng0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBsb2NhbGN0eC5WID0gc2VsZi52ZnJTdGF0ZW1lbnRWYWx1ZSgpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDk3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4 UGFyc2VyLlRfXzVdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ5 OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5U X181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUwMA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmckNvbnN0YW50VmFsdWVGaWVsZCgpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTAxDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUwOQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xh PT1WZnJTeW50YXhQYXJzZXIuRGVmYXVsdFN0b3JlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTUwNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5EZWZhdWx0U3RvcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxNTA2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNTA3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LlNOID0gc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MDgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgp DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50VmFsdWVDb250ZXh0KFBhcnNlclJ1 bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5n U3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBh cmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9 IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRyZWVOb2RlKEVG SV9JRlJfVkFMVUVfT1ApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgVmFsdWUo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlZhbHVlLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZm clN0YXRlbWVudEV4cHJlc3Npb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu DQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRFeHByZXNzaW9uQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50VmFsdWUNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNp dG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRW ZnJTdGF0ZW1lbnRWYWx1ZSIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRWYWx1ZShzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hp bGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0YXRlbWVudFZhbHVlKHNlbGYpOg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVt ZW50VmFsdWVDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE2NCwgc2VsZi5SVUxFX3ZmclN0 YXRlbWVudFZhbHVlKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTUxMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlZhbHVlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NTEyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9f NSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUxMw0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvbihsb2NhbGN0eC5Ob2RlKQ0KPiA+ DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiAr ICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudE9wdGlvbnNDb250ZXh0KFBhcnNlclJ1 bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5n U3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBh cmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9 IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRPbmVPZk9wdGlvbihzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudE9uZU9mT3B0aW9uQ29udGV4dCwNCj4g PiAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1 bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFy c2VyLlJVTEVfdmZyU3RhdGVtZW50T3B0aW9ucw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudE9wdGlv bnMiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZy U3RhdGVtZW50T3B0aW9ucyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgZGVmIHZmclN0YXRlbWVudE9wdGlvbnMoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRPcHRpb25z Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxNjYsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRP cHRpb25zKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTUxNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50T25l T2ZPcHRpb24oKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9u IGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCBy ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwg cmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudE9uZU9mT3B0 aW9uQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAg c3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5v ZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX09ORV9PRl9PUFRJT05fT1ApDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5GID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5LTiA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuVCA9IE5vbmUg IyBUb2tlbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wdGlvbihzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuT3B0aW9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFRleHQoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLlRleHQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5n VG9rZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4gPg0K PiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIFZhbHVlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5WYWx1ZSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiB2ZnJDb25zdGFudFZhbHVlRmllbGQoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJDb25zdGFudFZhbHVlRmllbGRDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyT25lT2ZPcHRpb25GbGFncyhzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLlZmck9uZU9mT3B0aW9uRmxhZ3NDb250ZXh0LDApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5TZW1pY29sb24sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRkxBR1Mo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkZMQUdTLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEtl eShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuS2V5LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZm ckltYWdlVGFnKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkg aXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZySW1hZ2VUYWdDb250ZXh0KQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy bg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZySW1hZ2VU YWdDb250ZXh0LGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJT eW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRPbmVPZk9wdGlvbg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3Ip Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0 YXRlbWVudE9uZU9mT3B0aW9uIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdFZmclN0YXRlbWVudE9uZU9mT3B0aW9uKHNlbGYpDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50T25lT2ZPcHRpb24oc2Vs Zik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRPbmVPZk9wdGlvbkNvbnRleHQoc2VsZiwNCj4gPiBzZWxmLl9jdHgs IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwg MTY4LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50T25lT2ZPcHRpb24pDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTE3DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3B0aW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxNTE4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuVGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUx OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MjANCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUyMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTUyMg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTUyMw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNs b3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MjQNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUyNQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlZhbHVlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxNTI2DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUy Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyQ29uc3RhbnRWYWx1ZUZpZWxkKCkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUyOA0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNTI5DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguRiA9 IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxNTMwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUz MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyT25lT2ZPcHRpb25GbGFncygpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MzYNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBsYV8g PSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDExMCxzZWxmLl9jdHgp DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgbGFfID09IDE6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNTMyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTUzMw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5LZXkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxNTM0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTM1DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LktOID0gc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNTQyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5w dXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNl ci5Db21tYToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MzgNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguVCA9IHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUz OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmckltYWdlVGFnKCkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NDQNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE1NDUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVj b2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHgu ZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g bG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZy T25lT2ZPcHRpb25GbGFnc0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNl clJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5IRmxhZ3MgPSAwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5MRmxhZ3Mg PSAwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgb25lb2ZvcHRpb25GbGFnc0Zp ZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuT25lb2ZvcHRpb25GbGFnc0ZpZWxkQ29udGV4dCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLk9uZW9m b3B0aW9uRmxhZ3NGaWVsZENvbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyT25lT2ZPcHRpb25GbGFncw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJl ZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2 aXNpdFZmck9uZU9mT3B0aW9uRmxhZ3MiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0VmZyT25lT2ZPcHRpb25GbGFncyhzZWxmKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmck9uZU9mT3B0aW9uRmxhZ3Moc2VsZik6 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNl ci5WZnJPbmVPZk9wdGlvbkZsYWdzQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5z dGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxNzAsIHNl bGYuUlVMRV92ZnJPbmVPZk9wdGlvbkZsYWdzKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEg PSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTU0Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYub25lb2Zv cHRpb25GbGFnc0ZpZWxkKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU1 Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU0OA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTQ5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYub25lb2ZvcHRpb25GbGFnc0ZpZWxkKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE1NTQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRp b25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0 aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVy cm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVj b3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxj dHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgT25lb2ZvcHRp b25GbGFnc0ZpZWxkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVs ZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLkhGbGFnID0gMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTEZsYWcgPSAwDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5BID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5MID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgT3B0aW9uRGVmYXVsdChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3B0aW9uRGVmYXVsdCwgMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBPcHRpb25EZWZhdWx0TWZnKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5PcHRpb25EZWZhdWx0TWZnLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIEludGVyYWN0aXZlRmxhZyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuSW50ZXJhY3RpdmVGbGFnLCAwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFJlc2V0UmVxdWlyZWRGbGFnKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5S ZXNldFJlcXVpcmVkRmxhZywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBS ZXN0U3R5bGVGbGFnKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5SZXN0U3R5bGVGbGFnLCAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIFJlY29ubmVjdFJlcXVpcmVkRmxhZyhzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUmVjb25u ZWN0UmVxdWlyZWRGbGFnLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE1h bnVmYWN0dXJpbmdGbGFnKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5NYW51ZmFjdHVyaW5nRmxhZywgMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBEZWZhdWx0RmxhZyhzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRGVmYXVsdEZs YWcsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTlZBY2Nlc3NGbGFnKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5OVkFjY2Vzc0ZsYWcsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgTGF0ZUNoZWNrRmxhZyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZywgMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX29uZW9mb3B0aW9uRmxhZ3NGaWVs ZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9y OlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZp c2l0b3IsICJ2aXNpdE9uZW9mb3B0aW9uRmxhZ3NGaWVsZCIgKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRPbmVvZm9wdGlvbkZsYWdzRmllbGQoc2VsZikN Cj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBvbmVvZm9wdGlvbkZs YWdzRmllbGQoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5PbmVvZm9wdGlvbkZsYWdzRmllbGRDb250ZXh0KHNlbGYsIHNlbGYu X2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUo bG9jYWxjdHgsIDE3Miwgc2VsZi5SVUxFX29uZW9mb3B0aW9uRmxhZ3NGaWVsZCkNCj4gPg0KPiA+ ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU2Ng0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk51bWJlcl06DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NTUNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZy U3ludGF4UGFyc2VyLk9wdGlvbkRlZmF1bHRdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxNTU2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk9wdGlvbkRlZmF1bHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJz ZXIuT3B0aW9uRGVmYXVsdE1mZ106DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50 ZXJPdXRlckFsdChsb2NhbGN0eCwgMykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE1NTcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuT3B0aW9uRGVmYXVsdE1mZykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFz cw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5J bnRlcmFjdGl2ZUZsYWddOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxNTU4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkludGVyYWN0aXZlRmxhZykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5SZXNldFJl cXVpcmVkRmxhZ106DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1 NTkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu UmVzZXRSZXF1aXJlZEZsYWcpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuUmVzdFN0eWxl RmxhZ106DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgNikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NjANCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUmVzdFN0 eWxlRmxhZykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5SZWNvbm5lY3RSZXF1aXJlZEZs YWddOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDcpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTYxDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlJlY29ubmVj dFJlcXVpcmVkRmxhZykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4g KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5NYW51ZmFjdHVyaW5n RmxhZ106DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgOCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NjINCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWFudWZh Y3R1cmluZ0ZsYWcpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRGVmYXVsdEZsYWddOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDkp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTYzDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRGbGFnKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxp ZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk5WQWNjZXNzRmxhZ106DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMTApDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTY0DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIGxvY2FsY3R4LkEgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OVkFjY2Vzc0ZsYWcp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBl bGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZ106DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMTEpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTY1DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIGxvY2FsY3R4LkwgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5MYXRlQ2hlY2tG bGFnKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNl cHRpb24oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25p dGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNl cHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0 RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2Nh bGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0 ZW1lbnRSZWFkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLk5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX1JFQURfT1ApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgUmVhZChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUmVhZCwgMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQsMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNl bWljb2xvbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5k ZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5S VUxFX3ZmclN0YXRlbWVudFJlYWQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBh Y2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRSZWFkIiApOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFJl YWQoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJT dGF0ZW1lbnRSZWFkKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxj dHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UmVhZENvbnRleHQoc2VsZiwgc2VsZi5f Y3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShs b2NhbGN0eCwgMTc0LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50UmVhZCkNCj4gPg0KPiA+ICsgICAg ICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NjgNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5SZWFkKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTY5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKGxvY2FsY3R4Lk5vZGUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE1NzANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVj b2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHgu ZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g bG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZy U3RhdGVtZW50V3JpdGVDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJS dWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfV1JJVEVfT1ApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgV3JpdGUoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLldyaXRlLCAwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb24oc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uQ29udGV4dCwwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdl dFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4 UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50V3JpdGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRXcml0 ZSIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJT dGF0ZW1lbnRXcml0ZShzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgZGVmIHZmclN0YXRlbWVudFdyaXRlKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50V3JpdGVDb250ZXh0 KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5lbnRlclJ1bGUobG9jYWxjdHgsIDE3Niwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFdyaXRlKQ0K PiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTU3Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLldy aXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTczDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKGxvY2FsY3R4Lk5vZGUpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NzQNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAg ICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZp bmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiAr ICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0Q29udGV4dChQYXJzZXJS dWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18o c2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2lu Z1N0YXRlOmludD0tMSwgTm9kZT1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigp Ll9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5v bmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb2RlDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb24oc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRz KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkNvbnRlDQo+ID4geHQp DQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkNvbnRleA0KPiA+IHQsaSkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVu dFF1ZXN0aW9uT3B0aW9uTGlzdA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFj Y2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9u TGlzdCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRW ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3Qoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAg ICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENo aWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3Qoc2Vs ZiwgTm9kZSk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3RDb250ZXh0KHNlbGYsDQo+ ID4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBOb2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5l bnRlclJ1bGUobG9jYWxjdHgsIDE3OCwNCj4gc2VsZi5SVUxFX3ZmclN0YXRlbWVudFF1ZXN0aW9u T3B0aW9uTGlzdCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUN Cj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE1NzkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHdoaWxlICgoKChfbGEgLSA2MSkpICYgfjB4M2YpID09IDAgYW5kICgoMSA8 PCAoX2xhIC0gNjEpKSAmICgoMSA8PA0KPiA+IChWZnJTeW50YXhQYXJzZXIuT3B0aW9uIC0gNjEp KSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuR3JheU91dElmIC0gNjEpKSB8ICgxDQo+IDw8DQo+ ID4gKFZmclN5bnRheFBhcnNlci5EZWZhdWx0IC0gNjEpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJz ZXIuU3VwcHJlc3NJZiAtIDYxKSkgfCAoMQ0KPiA+IDw8IChWZnJTeW50YXhQYXJzZXIuRGlzYWJs ZUlmIC0gNjEpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuSW5jb25zaXN0ZW50SWYgLQ0KPiA+ IDYxKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLldhcm5pbmdJZiAtIDYxKSkgfCAoMSA8PA0K PiA+IChWZnJTeW50YXhQYXJzZXIuTm9TdWJtaXRJZiAtIDYxKSkpKSAhPSAwKSBvciAoKCgoX2xh IC0gMTQ0KSkgJiB+MHgzZikgPT0gMCBhbmQNCj4gPiAoKDEgPDwgKF9sYSAtIDE0NCkpICYgKCgx IDw8IChWZnJTeW50YXhQYXJzZXIuSW1hZ2UgLSAxNDQpKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRh eFBhcnNlci5Mb2NrZWQgLSAxNDQpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVmFsdWUgLSAx NDQpKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5SZWFkIC0gMTQ0KSkgfCAoMSA8PCAo VmZyU3ludGF4UGFyc2VyLldyaXRlIC0gMTQ0KSkgfCAoMSA8PA0KPiA+IChWZnJTeW50YXhQYXJz ZXIuUmVmcmVzaCAtIDE0NCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5WYXJzdG9yZURldmlj ZSAtDQo+IDE0NCkpDQo+ID4gfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkd1aWRPcCAtIDE0NCkp KSkgIT0gMCkgb3INCj4gPiBfbGE9PVZmclN5bnRheFBhcnNlci5SZWZyZXNoR3VpZDoNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NzYNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbigpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTgxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBf bGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhj ZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAg cmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNs YXNzIFZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2Vy LCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0t MSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9r aW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25UYWcoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvblRhZ0NvbnRleHQsMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9w dGlvblRhZyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9u T3B0aW9uVGFnQ28NCj4gPiBudGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb24N Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQ YXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNp dG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbiIgKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlv bihzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0 YXRlbWVudFF1ZXN0aW9uT3B0aW9uKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25D b250ZXh0KHNlbGYsDQo+ID4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE4MCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFF1 ZXN0aW9uT3B0aW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNTg0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1 dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJz ZXIuRGlzYWJsZUlmLCBWZnJTeW50YXhQYXJzZXIuSW5jb25zaXN0ZW50SWYsDQo+ID4gVmZyU3lu dGF4UGFyc2VyLldhcm5pbmdJZiwgVmZyU3ludGF4UGFyc2VyLk5vU3VibWl0SWYsDQo+IFZmclN5 bnRheFBhcnNlci5JbWFnZSwNCj4gPiBWZnJTeW50YXhQYXJzZXIuTG9ja2VkLCBWZnJTeW50YXhQ YXJzZXIuUmVmcmVzaCwNCj4gPiBWZnJTeW50YXhQYXJzZXIuVmFyc3RvcmVEZXZpY2UsIFZmclN5 bnRheFBhcnNlci5HdWlkT3AsDQo+ID4gVmZyU3ludGF4UGFyc2VyLlJlZnJlc2hHdWlkXToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU4Mg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFF1ZXN0aW9uVGFnKCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5PcHRpb24sIFZmclN5bnRheFBhcnNlci5HcmF5T3V0SWYsDQo+ID4g VmZyU3ludGF4UGFyc2VyLkRlZmF1bHQsIFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmLCBWZnJT eW50YXhQYXJzZXIuVmFsdWUsDQo+ID4gVmZyU3ludGF4UGFyc2VyLlJlYWQsIFZmclN5bnRheFBh cnNlci5Xcml0ZV06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1 ODMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRRdWVzdGlvbk9w dGlvblRhZygpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAg ICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFs dEV4Y2VwdGlvbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJl Y29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJu IGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZm clN0YXRlbWVudEJvb2xlYW5UeXBlQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6 UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgdmZyU3RhdGVtZW50Q2hlY2tCb3goc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJT dGF0ZW1lbnRDaGVja0JveENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRBY3Rpb24oc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRBY3Rpb25Db250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRCb29sZWFu VHlwZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNp dG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIo IHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudEJvb2xlYW5UeXBlIiApOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudEJvb2xlYW5UeXBl KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3Rh dGVtZW50Qm9vbGVhblR5cGUoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBs b2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRCb29sZWFuVHlwZUNvbnRleHQo c2VsZiwNCj4gPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxm LmVudGVyUnVsZShsb2NhbGN0eCwgMTgyLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50Qm9vbGVhblR5 cGUpDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE1ODgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMo c2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5DaGVja0Jv eF06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0 eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1ODYNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRDaGVja0JveCgpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuQWN0aW9uXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTU4Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0 YXRlbWVudEFjdGlvbigpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1Zp YWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhj ZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAg cmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNs YXNzIFZmclN0YXRlbWVudENoZWNrQm94Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJl bnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3Rh dGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX0NIRUNLQk9YX09Q KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuR3VpZE5vZGUgPSBJZnJUcmVlTm9kZShFRklf SUZSX0dVSURfT1ApDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5RVHlwZSA9IEVGSV9RVUVT SU9OX1RZUEUuUVVFU1RJT05fTk9STUFMDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5MID0g Tm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5GID0gTm9uZSAjIFRva2Vu DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyUXVlc3Rpb25CYXNlSW5mbyhz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uQmFzZUluZm9Db250ZXh0LDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50 SGVhZGVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SGVhZGVyQ29udGV4 dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1h KHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEs IGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rp b25PcHRpb25MaXN0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+ IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVl c3Rpb25PcHRpb25MaXN0Q28NCj4gPiBudGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIEVuZENoZWNrQm94KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRDaGVja0JveCwg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlNlbWljb2xvbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDaGVja0Jv eChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuQ2hlY2tCb3gsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgdmZyQ2hlY2tCb3hGbGFncyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4N Cj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckNoZWNrQm94 RmxhZ3NDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgS2V5KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5LZXksIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgTnVtYmVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50Q2hlY2tCb3gNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRy ZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAi dmlzaXRWZnJTdGF0ZW1lbnRDaGVja0JveCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRDaGVja0JveChzZWxmKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0YXRlbWVudENoZWNrQm94KHNl bGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQ YXJzZXIuVmZyU3RhdGVtZW50Q2hlY2tCb3hDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBz ZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE4 NCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudENoZWNrQm94KQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU5MA0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2Fs Y3R4LkwgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DaGVja0JveCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU5MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu dmZyUXVlc3Rpb25CYXNlSW5mbyhsb2NhbGN0eC5Ob2RlLCBsb2NhbGN0eC5RVHlwZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU5Mg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYudmZyU3RhdGVtZW50SGVhZGVyKGxvY2FsY3R4Lk5vZGUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE1OTMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTU5OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuRkxBR1M6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTk0DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIGxvY2FsY3R4LkYgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5GTEFHUykNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1OTUNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1OTYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi52ZnJDaGVja0JveEZsYWdzKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE1OTcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE2MDUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1 dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLktl eToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MDENCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuS2V5KQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYwMg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYwMw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNjA0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjA3DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi52ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3QobG9jYWxjdHguTm9kZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYwOA0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuZENoZWNrQm94KQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNjA5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJl Y29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJu IGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZm ckNoZWNrQm94RmxhZ3NDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJS dWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuTEZsYWdzID0gMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuSEZsYWdzID0g MA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGNoZWNrYm94RmxhZ3NGaWVsZChz ZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dHMoVmZyU3ludGF4UGFyc2VyLkNoZWNrYm94RmxhZ3NGaWVsZENvbnRleHQpDQo+ID4NCj4g PiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5DaGVja2JveEZsYWdz RmllbGRDb250ZXh0LGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+ID4NCj4gPiArICAgICAgICAgICAg ZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZm clN5bnRheFBhcnNlci5SVUxFX3ZmckNoZWNrQm94RmxhZ3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJDaGVja0Jv eEZsYWdzIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dFZmckNoZWNrQm94RmxhZ3Moc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGRlZiB2ZnJDaGVja0JveEZsYWdzKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyQ2hlY2tCb3hGbGFnc0NvbnRl eHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTg2LCBzZWxmLlJVTEVfdmZyQ2hlY2tCb3hGbGFncykN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsg ICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MTENCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLmNoZWNrYm94RmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MTYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9p bnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFy c2VyLkJpdFdpc2VPcjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2 MTINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Qml0V2lzZU9yKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYxMw0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmNoZWNrYm94RmxhZ3NGaWVsZCgpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjE4DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBm aW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4g KyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGNsYXNzIENoZWNrYm94RmxhZ3NGaWVsZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQp Og0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNl ciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9 LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZv a2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5MRmxhZyA9IDANCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLkhGbGFnID0gMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRCA9IE5vbmUgIyBU b2tlbg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTSA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIERlZmF1bHRGbGFnKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5E ZWZhdWx0RmxhZywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBNYW51ZmFj dHVyaW5nRmxhZyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuTWFudWZhY3R1cmluZ0ZsYWcsIDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgQ2hlY2tCb3hEZWZhdWx0RmxhZyhzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2hlY2tC b3hEZWZhdWx0RmxhZywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDaGVj a0JveERlZmF1bHRNZmdGbGFnKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DaGVja0JveERlZmF1bHRNZmdGbGFnLCAwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVs ZChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZENv bnRleHQsMA0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZm clN5bnRheFBhcnNlci5SVUxFX2NoZWNrYm94RmxhZ3NGaWVsZA0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdENoZWNrYm94 RmxhZ3NGaWVsZCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRDaGVja2JveEZsYWdzRmllbGQoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVu KHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGRlZiBjaGVja2JveEZsYWdzRmllbGQoc2VsZik6DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5DaGVja2JveEZsYWdz RmllbGRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE4OCwgc2VsZi5SVUxFX2NoZWNrYm94 RmxhZ3NGaWVsZCkNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTYyNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQu TEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2Vy Lk51bWJlcl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChs b2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MTkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVt YmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAg ICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRGbGFnXToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYyMA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBsb2NhbGN0eC5EID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRGVmYXVsdEZs YWcpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAg ICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTWFudWZhY3R1cmluZ0ZsYWddOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjIxDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIGxvY2FsY3R4Lk0gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5NYW51 ZmFjdHVyaW5nRmxhZykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4g KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5DaGVja0JveERlZmF1 bHRGbGFnXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCA0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYyMg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DaGVj a0JveERlZmF1bHRGbGFnKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4g PiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkNoZWNrQm94RGVm YXVsdE1mZ0ZsYWddOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NjIzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNoZWNrQm94RGVmYXVsdE1mZ0ZsYWcpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MN Cj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSW50 ZXJhY3RpdmVGbGFnLA0KPiA+IFZmclN5bnRheFBhcnNlci5OVkFjY2Vzc0ZsYWcsIFZmclN5bnRh eFBhcnNlci5SZXNldFJlcXVpcmVkRmxhZywNCj4gPiBWZnJTeW50YXhQYXJzZXIuUmVjb25uZWN0 UmVxdWlyZWRGbGFnLCBWZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZywNCj4gPiBWZnJTeW50 YXhQYXJzZXIuUmVhZE9ubHlGbGFnLCBWZnJTeW50YXhQYXJzZXIuT3B0aW9uT25seUZsYWcsDQo+ ID4gVmZyU3ludGF4UGFyc2VyLlJlc3RTdHlsZUZsYWddOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDYpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNjI0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu cXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFz cw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAg IGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4g PiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50QWN0aW9uQ29udGV4dChQYXJzZXJSdWxlQ29udGV4 dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFy c2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmlu dD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGlu dm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXIN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX0FD VElPTl9PUCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlFUeXBlID0gRUZJX1FVRVNJT05f VFlQRS5RVUVTVElPTl9OT1JNQUwNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBB Y3Rpb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkFjdGlvbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiB2ZnJRdWVzdGlvbkhlYWRlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0 aW9uSGVhZGVyQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuQ29tbWEsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29u ZmlnKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5Db25maWcsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgU3RyaW5nVG9rZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAw KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkNsb3NlUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3Rh dGVtZW50UXVlc3Rpb25UYWdMaXN0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVy bg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50UXVlc3Rpb25UYWdMaXN0Q29udGV4DQo+ID4gdCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEVuZEFjdGlvbihzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kQWN0aW9u LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuU2VtaWNvbG9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEZMQUdT KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5GTEFHUywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2 ZnJBY3Rpb25GbGFncyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckFjdGlvbkZsYWdzQ29u dGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdl dFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4 UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50QWN0aW9uDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50QWN0 aW9uIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZm clN0YXRlbWVudEFjdGlvbihzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgZGVmIHZmclN0YXRlbWVudEFjdGlvbihzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEFjdGlvbkNv bnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTkwLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50QWN0 aW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYyNw0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkFjdGlvbikN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYyOA0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYudmZyUXVlc3Rpb25IZWFkZXIobG9jYWxjdHguTm9kZSwgbG9jYWxjdHguUVR5 cGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MjkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYzNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJz ZXIuRkxBR1M6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjMwDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdT KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYzMQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYzMg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnZmckFjdGlvbkZsYWdzKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE2MzMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MzcNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5Db25maWcpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE2MzgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjM5DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9r ZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NDANCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NDENCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE2NDINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxNjQzDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NDQNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFF1ZXN0aW9uVGFnTGlzdChsb2NhbGN0eC5O b2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjQ1DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kQWN0aW9uKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjQ2DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAg ZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5 Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAg ICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGNsYXNzIFZmckFjdGlvbkZsYWdzQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6 UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLkhGbGFncyA9IDANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBhY3Rpb25GbGFnc0ZpZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuQWN0aW9uRmxhZ3NG aWVsZENvbnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5BY3Rpb25GbGFnc0ZpZWxkQ29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJBY3Rpb25GbGFncw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNl VHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3Is ICJ2aXNpdFZmckFjdGlvbkZsYWdzIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdFZmckFjdGlvbkZsYWdzKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRD aGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyQWN0aW9uRmxhZ3Moc2VsZik6DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJBY3Rpb25G bGFnc0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE5Miwgc2VsZi5SVUxFX3ZmckFjdGlvbkZs YWdzKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY0OA0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuYWN0aW9uRmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NTMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4 UGFyc2VyLkJpdFdpc2VPcjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE2NDkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQml0V2lzZU9yKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY1 MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmFjdGlvbkZsYWdzRmllbGQoKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY1NQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAg ZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBjbGFzcyBBY3Rpb25GbGFnc0ZpZWxkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2Vy LCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0t MSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9r aW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLkhGbGFnID0gMA0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IE51bWJlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIHF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLlF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZENvbnRleHQsMA0KPiA+ICkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2FjdGlvbkZs YWdzRmllbGQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwg dmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNh dHRyKCB2aXNpdG9yLCAidmlzaXRBY3Rpb25GbGFnc0ZpZWxkIiApOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEFjdGlvbkZsYWdzRmllbGQoc2VsZikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBhY3Rpb25GbGFnc0ZpZWxk KHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50 YXhQYXJzZXIuQWN0aW9uRmxhZ3NGaWVsZENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNl bGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTk0 LCBzZWxmLlJVTEVfYWN0aW9uRmxhZ3NGaWVsZCkNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY1OA0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHRv a2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLk51bWJlcl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE2NTYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguTiA9 IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5JbnRlcmFjdGl2ZUZsYWcsDQo+ID4gVmZyU3ludGF4UGFyc2VyLk5WQWNjZXNzRmxh ZywgVmZyU3ludGF4UGFyc2VyLlJlc2V0UmVxdWlyZWRGbGFnLA0KPiA+IFZmclN5bnRheFBhcnNl ci5SZWNvbm5lY3RSZXF1aXJlZEZsYWcsIFZmclN5bnRheFBhcnNlci5MYXRlQ2hlY2tGbGFnLA0K PiA+IFZmclN5bnRheFBhcnNlci5SZWFkT25seUZsYWcsIFZmclN5bnRheFBhcnNlci5PcHRpb25P bmx5RmxhZywNCj4gPiBWZnJTeW50YXhQYXJzZXIuUmVzdFN0eWxlRmxhZ106DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NTcNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxl KCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnROdW1lcmljVHlwZUNvbnRleHQo UGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9f aW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4g aW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19p bml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu cGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudE51bWVyaWMoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnROdW1lcmljQ29udGV4dCwwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudE9u ZU9mKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50T25lT2ZDb250ZXh0LDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUlu ZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIu UlVMRV92ZnJTdGF0ZW1lbnROdW1lcmljVHlwZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudE51bWVy aWNUeXBlIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dFZmclN0YXRlbWVudE51bWVyaWNUeXBlKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxz ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJl bihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50TnVtZXJpY1R5cGUoc2VsZik6DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0 ZW1lbnROdW1lcmljVHlwZUNvbnRleHQoc2VsZiwNCj4gPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUp DQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTk2LCBzZWxmLlJV TEVfdmZyU3RhdGVtZW50TnVtZXJpY1R5cGUpDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NjINCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICB0b2tl biA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5OdW1lcmljXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTY2MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRl bWVudE51bWVyaWMoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk9uZU9mXToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY2MQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudE9uZU9mKCkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgp DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50TnVtZXJpY0NvbnRleHQoUGFyc2Vy UnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9f KHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tp bmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18o cGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2Vy ID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gSWZyVHJlZU5vZGUo RUZJX0lGUl9OVU1FUklDX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuR3VpZE5vZGUg PSBJZnJUcmVlTm9kZShFRklfSUZSX0dVSURfT1ApDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9STUFMDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5GID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgTnVtZXJpYyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtZXJpYywgMCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiB2ZnJRdWVzdGlvbkJhc2VJbmZvKHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuVmZyUXVlc3Rpb25CYXNlSW5mb0NvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRIZWFkZXIoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRIZWFkZXJDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTZXRNaW5NYXhTdGVwKHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuVmZyU2V0TWluTWF4U3RlcENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3Qoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3RD bw0KPiA+IG50ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgRW5kTnVtZXJpYyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kTnVtZXJpYywgMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJOdW1lcmljRmxhZ3Moc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5WZnJOdW1lcmljRmxhZ3NDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgS2V5KHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5LZXksIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIs IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZM QUdTLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVf dmZyU3RhdGVtZW50TnVtZXJpYw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFj Y2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudE51bWVyaWMiICk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50 TnVtZXJpYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVm IHZmclN0YXRlbWVudE51bWVyaWMoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnROdW1lcmljQ29udGV4dChz ZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu ZW50ZXJSdWxlKGxvY2FsY3R4LCAxOTgsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnROdW1lcmljKQ0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAg ICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY2NA0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWVyaWMpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NjUNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnZmclF1ZXN0aW9uQmFzZUluZm8obG9jYWxjdHguTm9kZSwgbG9jYWxjdHguUVR5cGUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NjYNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnZmclN0YXRlbWVudEhlYWRlcihsb2NhbGN0eC5Ob2RlKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjY3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE2NzMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5 bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkZMQUdTOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY2OA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBsb2NhbGN0eC5GID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1Mp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjY5DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjcwDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYudmZyTnVtZXJpY0ZsYWdzKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE2NzENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NzkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFy c2VyLktleToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NzUNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuS2V5KQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY3Ng0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY3Nw0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjc4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjgxDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi52ZnJTZXRNaW5NYXhTdGVwKGxvY2FsY3R4Lk5vZGUpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2ODINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnZm clN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdChsb2NhbGN0eC5Ob2RlKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjgzDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuRW5kTnVtZXJpYykNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTY4NA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlv bkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRp b24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0 eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTZXRNaW5N YXhTdGVwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRl eHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSwgTm9kZT1Ob25lKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk4xID0g Tm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5JID0gTm9uZSAjIFRva2Vu DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5OMiA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuQSA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuUyA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9 IE5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBNaW5pbXVtKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5NaW5pbXVtLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNl bGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBh cnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTWF4aW11bShzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWF4 aW11bSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwg aTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2Vy Lk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFN0ZXAoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0ZXAsIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTmVnYXRpdmUoc2VsZiwgaTppbnQ9 Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk5lZ2F0 aXZlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OZWdhdGl2ZSwgaSkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclNldE1pbk1h eFN0ZXANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlz aXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRy KCB2aXNpdG9yLCAidmlzaXRWZnJTZXRNaW5NYXhTdGVwIiApOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclNldE1pbk1heFN0ZXAoc2VsZikNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTZXRNaW5NYXhTdGVwKHNl bGYsIE5vZGUpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJT eW50YXhQYXJzZXIuVmZyU2V0TWluTWF4U3RlcENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+ IHNlbGYuc3RhdGUsIE5vZGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2Nh bGN0eCwgMjAwLCBzZWxmLlJVTEVfdmZyU2V0TWluTWF4U3RlcCkNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2ODYNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5NaW5pbXVtKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxNjg3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY4 OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuTmVnYXRpdmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjg4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IGxvY2FsY3R4Lk4xID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTmVnYXRpdmUpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2 OTENCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5JID0gc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjky DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2OTMNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5NYXhpbXVtKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjk0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTY5Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuTmVnYXRpdmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjk1DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIGxvY2FsY3R4Lk4yID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTmVnYXRp dmUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE2OTgNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5BID0gc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNjk5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MDQNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsg ICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLlN0ZXA6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxNzAwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlN0ZXApDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNzAxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzAy DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LlMgPSBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxNzAzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkNvbW1hKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhj ZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAg cmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNs YXNzIFZmck51bWVyaWNGbGFnc0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBh cnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5IRmxhZ3MgPSAwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5MRmxh Z3MgPSAwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Jc0Rpc3BsYXlTcGVjaWZpZWQgPSBG YWxzZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuVXBkYXRlVmFyVHlwZSA9IEZhbHNlDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgbnVtZXJpY0ZsYWdzRmllbGQoc2VsZiwg aTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRz KFZmclN5bnRheFBhcnNlci5OdW1lcmljRmxhZ3NGaWVsZENvbnRleHQpDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5OdW1lcmljRmxhZ3NGaWVsZENv bnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBC aXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMo VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuQml0V2lzZU9yLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdl dFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4 UGFyc2VyLlJVTEVfdmZyTnVtZXJpY0ZsYWdzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyTnVtZXJpY0ZsYWdzIiAp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmck51bWVy aWNGbGFncyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVm IHZmck51bWVyaWNGbGFncyhzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxv Y2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmck51bWVyaWNGbGFnc0NvbnRleHQoc2VsZiwgc2Vs Zi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVs ZShsb2NhbGN0eCwgMjAyLCBzZWxmLlJVTEVfdmZyTnVtZXJpY0ZsYWdzKQ0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTcwNg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYubnVtZXJpY0ZsYWdzRmllbGQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNzExDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5j KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzA3DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MDgNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5udW1lcmljRmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNzEzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBz ZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJl Y29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJu IGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIE51 bWVyaWNGbGFnc0ZpZWxkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2Vy UnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLkhGbGFnID0gMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuSXNTZXRUeXBl ID0gRmFsc2UNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLklzRGlzcGxheVNwZWNpZmllZCA9 IEZhbHNlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtZXJpY1NpemVPbmUoc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLk51bWVyaWNTaXplT25lLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IE51bWVyaWNTaXplVHdvKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1lcmljU2l6ZVR3bywgMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1lcmljU2l6ZUZvdXIoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWVyaWNT aXplRm91ciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1lcmljU2l6 ZUVpZ2h0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5OdW1lcmljU2l6ZUVpZ2h0LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIERpc1BsYXlJbnREZWMoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRpc1BsYXlJbnREZWMsIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRGlzUGxheVVJbnREZWMoc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkRpc1BsYXlVSW50RGVjLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IERpc1BsYXlVSW50SGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5EaXNQbGF5VUludEhleCwgMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBxdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5RdWVzdGlvbmhlYWRlckZsYWdzRmllbGRDb250ZXh0LDANCj4g PiApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVs ZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJz ZXIuUlVMRV9udW1lcmljRmxhZ3NGaWVsZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdE51bWVyaWNGbGFnc0ZpZWxkIiAp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdE51bWVyaWNG bGFnc0ZpZWxkKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBk ZWYgbnVtZXJpY0ZsYWdzRmllbGQoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5OdW1lcmljRmxhZ3NGaWVsZENvbnRleHQoc2Vs Ziwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgMjA0LCBzZWxmLlJVTEVfbnVtZXJpY0ZsYWdzRmllbGQpDQo+ID4N Cj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3 MjMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4g Pg0KPiA+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OdW1iZXJdOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzE0DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBl bGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVPbmVdOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzE1DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWVyaWNTaXplT25lKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tl biBpbiBbVmZyU3ludGF4UGFyc2VyLk51bWVyaWNTaXplVHdvXToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTcxNg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1lcmljU2l6ZVR3bykNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1Zm clN5bnRheFBhcnNlci5OdW1lcmljU2l6ZUZvdXJdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDQpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNzE3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk51bWVyaWNTaXplRm91cikNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5OdW1lcmljU2l6ZUVpZ2h0XToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA1KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTcxOA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5OdW1lcmljU2l6ZUVpZ2h0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFy c2VyLkRpc1BsYXlJbnREZWNdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNzE5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkRpc1BsYXlJbnREZWMpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRGlzUGxh eVVJbnREZWNdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDcpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzIw DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRp c1BsYXlVSW50RGVjKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkRpc1BsYXlVSW50SGV4 XToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCA4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTcyMQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5EaXNQbGF5VUlu dEhleCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5JbnRlcmFjdGl2ZUZsYWcsDQo+ID4g VmZyU3ludGF4UGFyc2VyLk5WQWNjZXNzRmxhZywgVmZyU3ludGF4UGFyc2VyLlJlc2V0UmVxdWly ZWRGbGFnLA0KPiA+IFZmclN5bnRheFBhcnNlci5SZWNvbm5lY3RSZXF1aXJlZEZsYWcsIFZmclN5 bnRheFBhcnNlci5MYXRlQ2hlY2tGbGFnLA0KPiA+IFZmclN5bnRheFBhcnNlci5SZWFkT25seUZs YWcsIFZmclN5bnRheFBhcnNlci5PcHRpb25Pbmx5RmxhZywNCj4gPiBWZnJTeW50YXhQYXJzZXIu UmVzdFN0eWxlRmxhZ106DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgOSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE3MjINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5xdWVzdGlvbmhlYWRlckZsYWdz RmllbGQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRF eGNlcHRpb24oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNv Z25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5l eGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBs b2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJT dGF0ZW1lbnRPbmVPZkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1 bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5Ob2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9PTkVfT0ZfT1ApDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5HdWlkTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfR1VJRF9PUCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVT VElPTl9OT1JNQUwNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkYgPSBOb25lICMgVG9rZW4N Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBPbmVPZihzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT25lT2Ys IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyUXVlc3Rpb25CYXNlSW5m byhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uQmFzZUluZm9Db250ZXh0LDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVt ZW50SGVhZGVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SGVhZGVyQ29u dGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENv bW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29t bWEsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50UXVl c3Rpb25PcHRpb25MaXN0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+ DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 UXVlc3Rpb25PcHRpb25MaXN0Q28NCj4gPiBudGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEVuZE9uZU9mKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRPbmVPZiwgMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNl bWljb2xvbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJPbmVvZkZs YWdzRmllbGQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJPbmVvZkZsYWdzRmllbGRDb250 ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZy U2V0TWluTWF4U3RlcChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclNldE1pbk1heFN0ZXBD b250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg RkxBR1Moc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZy U3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50T25lT2YNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1l bnRPbmVPZiIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRWZnJTdGF0ZW1lbnRPbmVPZihzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2Vs ZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIHZmclN0YXRlbWVudE9uZU9mKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50T25lT2ZD b250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIwNiwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudE9u ZU9mKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTcyNQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9uZU9mKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzI2DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi52ZnJRdWVzdGlvbkJhc2VJbmZvKGxvY2FsY3R4Lk5vZGUsIGxvY2FsY3R4LlFU eXBlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzI3DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRIZWFkZXIobG9jYWxjdHguTm9kZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTcyOA0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxNzM0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEo MSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5GTEFHUzoN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MjkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgbG9jYWxjdHguRiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZM QUdTKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTczMA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTczMQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnZmck9uZW9mRmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNzMyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzM3DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xh ID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5 bnRheFBhcnNlci5NaW5pbXVtOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTczNg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclNldE1pbk1heFN0ZXAo bG9jYWxjdHguTm9kZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTczOQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3Rh dGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KGxvY2FsY3R4Lk5vZGUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE3NDANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5FbmRPbmVPZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTc0MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2Vw dGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSBy ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2Vs ZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNl bGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJPbmVvZkZsYWdzRmll bGRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1O b25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBz dXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuSEZs YWdzID0gMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTEZsYWdzID0gMA0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuVXBkYXRlVmFyVHlwZSA9IEZhbHNlDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgbnVtZXJpY0ZsYWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNl ci5OdW1lcmljRmxhZ3NGaWVsZENvbnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5OdW1lcmljRmxhZ3NGaWVsZENvbnRleHQsaSkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwg aTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2Vy LkJpdFdpc2VPcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9y LCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZy T25lb2ZGbGFnc0ZpZWxkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0 KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyT25lb2ZGbGFnc0ZpZWxkIiApOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmck9uZW9mRmxhZ3NGaWVs ZChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmck9u ZW9mRmxhZ3NGaWVsZChzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2Fs Y3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmck9uZW9mRmxhZ3NGaWVsZENvbnRleHQoc2VsZiwgc2Vs Zi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVs ZShsb2NhbGN0eCwgMjA4LCBzZWxmLlJVTEVfdmZyT25lb2ZGbGFnc0ZpZWxkKQ0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5 Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc0Mw0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYubnVtZXJpY0ZsYWdzRmllbGQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNzQ4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNl T3I6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzQ0DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NDUNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5udW1lcmljRmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzUwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEg PSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0 IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2Fs Y3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0 dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNz IFZmclN0YXRlbWVudFN0cmluZ1R5cGVDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVu dDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0 ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdHJpbmcoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJT dGF0ZW1lbnRTdHJpbmdDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50UGFzc3dvcmQoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRQYXNzd29yZENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFN0cmlu Z1R5cGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlz aXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRy KCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRTdHJpbmdUeXBlIiApOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFN0cmluZ1R5cGUo c2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0 ZW1lbnRTdHJpbmdUeXBlKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9j YWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RyaW5nVHlwZUNvbnRleHQoc2Vs ZiwNCj4gc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxm LmVudGVyUnVsZShsb2NhbGN0eCwgMjEwLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50U3RyaW5nVHlw ZSkNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTc1Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlN0cmluZ106 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NTENCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdHJpbmcoKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBb VmZyU3ludGF4UGFyc2VyLlBhc3N3b3JkXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTc1Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRl bWVudFBhc3N3b3JkKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4g KyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlh YmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNl cHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9j YWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICBy ZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xh c3MgVmZyU3RhdGVtZW50U3RyaW5nQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6 UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLk5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX1NUUklOR19PUCkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElP Tl9OT1JNQUwNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkYgPSBOb25lICMgVG9rZW4NCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLk1pbiA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuTWF4ID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgU3RyaW5nKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmcsIDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgdmZyUXVlc3Rpb25IZWFkZXIoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5WZnJRdWVzdGlvbkhlYWRlckNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs c2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5OdW1iZXIsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg dmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0Q28NCj4gPiBudGV4dCwwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEVuZFN0cmluZyhzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuRW5kU3RyaW5nLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFNlbWlj b2xvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIE1pblNpemUoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk1pblNpemUsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgTWF4U2l6ZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWF4U2l6ZSwgMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdHJpbmdGbGFnc0ZpZWxkKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuVmZyU3RyaW5nRmxhZ3NGaWVsZENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBLZXkoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLktleSwgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0 ZW1lbnRTdHJpbmcNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2Vs ZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBo YXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRTdHJpbmciICk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50U3RyaW5nKHNl bGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVt ZW50U3RyaW5nKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHgg PSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RyaW5nQ29udGV4dChzZWxmLCBzZWxmLl9j dHgsDQo+ID4gc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxv Y2FsY3R4LCAyMTIsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRTdHJpbmcpDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzU1DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNzU2DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJRdWVz dGlvbkhlYWRlcihsb2NhbGN0eC5Ob2RlLCBsb2NhbGN0eC5RVHlwZSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTc1Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNzYzDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5GTEFHUzoNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NTgNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgbG9jYWxjdHguRiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc1OQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc2MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnZmclN0cmluZ0ZsYWdzRmllbGQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTc2MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc2OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJz ZXIuS2V5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc2NQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5LZXkpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzY2DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzY3DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NjgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NzENCj4gPg0KPiA+ICsgICAgICAg ICAgICBsb2NhbGN0eC5NaW4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5NaW5TaXplKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzcyDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTc3Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTc3NA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzc1DQo+ID4NCj4g PiArICAgICAgICAgICAgbG9jYWxjdHguTWF4ID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu TWF4U2l6ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc3Ng0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NzcNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE3NzgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc3 OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25M aXN0KGxvY2FsY3R4Lk5vZGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3 ODANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmRT dHJpbmcpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3ODENCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4N Cj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsg ICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyU3RyaW5nRmxhZ3NGaWVsZENvbnRleHQoUGFyc2VyUnVs ZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNl bGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdT dGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFy ZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0g cGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5IRmxhZ3MgPSAwDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5MRmxhZ3MgPSAwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgc3RyaW5nRmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0K PiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlN0cmluZ0ZsYWdz RmllbGRDb250ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuU3RyaW5nRmxhZ3NGaWVsZENvbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RyaW5nRmxhZ3NGaWVs ZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9y OlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZp c2l0b3IsICJ2aXNpdFZmclN0cmluZ0ZsYWdzRmllbGQiICk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RyaW5nRmxhZ3NGaWVsZChzZWxmKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0cmluZ0ZsYWdzRmll bGQoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5WZnJTdHJpbmdGbGFnc0ZpZWxkQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ ID4gc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4 LCAyMTQsIHNlbGYuUlVMRV92ZnJTdHJpbmdGbGFnc0ZpZWxkKQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc4Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RyaW5nRmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE3ODgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3ODQNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc4NQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0cmluZ0ZsYWdzRmllbGQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTc5MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5w dXQuTEEoMSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlv bkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRp b24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0 eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBTdHJpbmdGbGFn c0ZpZWxkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRl eHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LkhGbGFnID0gMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTEZsYWcgPSAwDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgcXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuUXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkQ29udGV4dCwwDQo+ID4g KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJ bmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2Vy LlJVTEVfc3RyaW5nRmxhZ3NGaWVsZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFN0cmluZ0ZsYWdzRmllbGQiICk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0U3RyaW5nRmxhZ3NG aWVsZChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHN0 cmluZ0ZsYWdzRmllbGQoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2Nh bGN0eCA9IFZmclN5bnRheFBhcnNlci5TdHJpbmdGbGFnc0ZpZWxkQ29udGV4dChzZWxmLCBzZWxm Ll9jdHgsDQo+ID4gc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxl KGxvY2FsY3R4LCAyMTYsIHNlbGYuUlVMRV9zdHJpbmdGbGFnc0ZpZWxkKQ0KPiA+DQo+ID4gKyAg ICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzk0DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTnVtYmVyXToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc5MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tl biBpbiBbVmZyU3ludGF4UGFyc2VyLlRfXzhdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxNzkyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlRfXzgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSW50ZXJh Y3RpdmVGbGFnLA0KPiA+IFZmclN5bnRheFBhcnNlci5OVkFjY2Vzc0ZsYWcsIFZmclN5bnRheFBh cnNlci5SZXNldFJlcXVpcmVkRmxhZywNCj4gPiBWZnJTeW50YXhQYXJzZXIuUmVjb25uZWN0UmVx dWlyZWRGbGFnLCBWZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZywNCj4gPiBWZnJTeW50YXhQ YXJzZXIuUmVhZE9ubHlGbGFnLCBWZnJTeW50YXhQYXJzZXIuT3B0aW9uT25seUZsYWcsDQo+ID4g VmZyU3ludGF4UGFyc2VyLlJlc3RTdHlsZUZsYWddOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNzkzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYucXVl c3Rpb25oZWFkZXJGbGFnc0ZpZWxkKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJh aXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZp bmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiAr ICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50UGFzc3dvcmRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0 KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJz ZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50 PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52 b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfUEFT U1dPUkRfT1ApDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5RVHlwZSA9IEVGSV9RVUVTSU9O X1RZUEUuUVVFU1RJT05fTk9STUFMDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5GID0gTm9u ZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5NaW4gPSBOb25lICMgVG9rZW4N Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk1heCA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFBhc3N3b3JkKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5QYXNzd29yZCwgMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJRdWVzdGlvbkhlYWRlcihzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uSGVhZGVyQ29udGV4dCwwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50 PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21t YSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4g PiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3Qoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3RDbw0KPiA+ IG50ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg RW5kUGFzc3dvcmQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVuZFBhc3N3b3JkLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE1pblNpemUoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk1pblNpemUsIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTWF4U2l6ZShzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWF4 U2l6ZSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJQYXNzd29yZEZs YWdzRmllbGQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJQYXNzd29yZEZsYWdzRmllbGRD b250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg S2V5KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5LZXksIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg RW5jb2Rpbmcoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkVuY29kaW5nLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIEZMQUdTKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFBhc3N3b3JkDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVl VmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZp c2l0VmZyU3RhdGVtZW50UGFzc3dvcmQiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50UGFzc3dvcmQoc2VsZikNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRQYXNzd29yZChzZWxm KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudFBhc3N3b3JkQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2Vs Zi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyMTgs IHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRQYXNzd29yZCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu X2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3OTYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5QYXNzd29yZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTc5Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25IZWFk ZXIobG9jYWxjdHguTm9kZSwgbG9jYWxjdHguUVR5cGUpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE3OTgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgw NA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuRkxBR1M6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzk5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxv Y2FsY3R4LkYgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5GTEFHUykNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MDANCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE4MDENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52 ZnJQYXNzd29yZEZsYWdzRmllbGQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTgwMg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTgxMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0 LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuS2V5 Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgwNg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5LZXkpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODA3DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODA4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE4MDkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MTINCj4gPg0KPiA+ICsgICAgICAgICAgICBs b2NhbGN0eC5NaW4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5NaW5TaXplKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODEzDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTgxNA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgx NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1h KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODE2DQo+ID4NCj4gPiArICAg ICAgICAgICAgbG9jYWxjdHguTWF4ID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWF4U2l6 ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgxNw0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MTgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE4MTkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgyNA0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuRW5jb2Rpbmc6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxODIwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuY29kaW5nKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTgyMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTgyMg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx ODIzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxODI2DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRR dWVzdGlvbk9wdGlvbkxpc3QobG9jYWxjdHguTm9kZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTgyNw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkVuZFBhc3N3b3JkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxODI4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu U2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9u IGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCBy ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwg cmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclBhc3N3b3JkRmxhZ3NGaWVs ZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5v bmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1 cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5IRmxh Z3MgPSAwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgcGFzc3dvcmRGbGFnc0Zp ZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuUGFzc3dvcmRGbGFnc0ZpZWxkQ29udGV4dCkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlBhc3N3b3Jk RmxhZ3NGaWVsZENvbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyUGFzc3dvcmRGbGFnc0ZpZWxkDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlz aXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0 VmZyUGFzc3dvcmRGbGFnc0ZpZWxkIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdFZmclBhc3N3b3JkRmxhZ3NGaWVsZChzZWxmKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclBhc3N3b3JkRmxhZ3NGaWVsZChzZWxm KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLlZmclBhc3N3b3JkRmxhZ3NGaWVsZENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNl bGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjIw LCBzZWxmLlJVTEVfdmZyUGFzc3dvcmRGbGFnc0ZpZWxkKQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgzMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu cGFzc3dvcmRGbGFnc0ZpZWxkKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTgzNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgzMQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODMyDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYucGFzc3dvcmRGbGFnc0ZpZWxkKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE4MzcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRp b25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0 aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVy cm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVj b3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxj dHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgUGFzc3dvcmRG bGFnc0ZpZWxkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLkhGbGFnID0gMA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHF1 ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlF1ZXN0 aW9uaGVhZGVyRmxhZ3NGaWVsZENvbnRleHQsMA0KPiA+ICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3Bhc3N3b3JkRmxhZ3NGaWVs ZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9y OlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZp c2l0b3IsICJ2aXNpdFBhc3N3b3JkRmxhZ3NGaWVsZCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRQYXNzd29yZEZsYWdzRmllbGQoc2VsZikNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBwYXNzd29yZEZsYWdzRmllbGQo c2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRh eFBhcnNlci5QYXNzd29yZEZsYWdzRmllbGRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBz ZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIy Miwgc2VsZi5SVUxFX3Bhc3N3b3JkRmxhZ3NGaWVsZCkNCj4gPg0KPiA+ICsgICAgICAgIHRyeToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg0MA0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiB0b2tl biBpbiBbVmZyU3ludGF4UGFyc2VyLk51bWJlcl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE4MzgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNz DQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLklu dGVyYWN0aXZlRmxhZywNCj4gPiBWZnJTeW50YXhQYXJzZXIuTlZBY2Nlc3NGbGFnLCBWZnJTeW50 YXhQYXJzZXIuUmVzZXRSZXF1aXJlZEZsYWcsDQo+ID4gVmZyU3ludGF4UGFyc2VyLlJlY29ubmVj dFJlcXVpcmVkRmxhZywgVmZyU3ludGF4UGFyc2VyLkxhdGVDaGVja0ZsYWcsDQo+ID4gVmZyU3lu dGF4UGFyc2VyLlJlYWRPbmx5RmxhZywgVmZyU3ludGF4UGFyc2VyLk9wdGlvbk9ubHlGbGFnLA0K PiA+IFZmclN5bnRheFBhcnNlci5SZXN0U3R5bGVGbGFnXToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTgzOQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBh c3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAg ICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudE9yZGVyZWRMaXN0Q29udGV4dChQYXJzZXJSdWxl Q29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2Vs ZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0 YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJl bnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBw YXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBJZnJUcmVlTm9kZShFRklf SUZSX09SREVSRURfTElTVF9PUCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlFUeXBlID0g RUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9OT1JNQUwNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLk0gPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkYgPSBOb25l ICMgVG9rZW4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBPcmRlcmVkTGlzdChz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuT3JkZXJlZExpc3QsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgdmZyUXVlc3Rpb25IZWFkZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu DQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJRdWVzdGlv bkhlYWRlckNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkNvbW1hLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0 YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdENvDQo+ID4gbnRleHQsMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBFbmRMaXN0KHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRM aXN0LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51 bWJlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIHZmck9yZGVyZWRMaXN0RmxhZ3Moc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJPcmRl cmVkTGlzdEZsYWdzQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIE1heENvbnRhaW5lcnMoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk1heENvbnRhaW5lcnMsIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAw KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3Rh dGVtZW50T3JkZXJlZExpc3QNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2Nl cHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRPcmRlcmVkTGlzdCIgKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1l bnRPcmRlcmVkTGlzdChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgZGVmIHZmclN0YXRlbWVudE9yZGVyZWRMaXN0KHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50T3JkZXJl ZExpc3RDb250ZXh0KHNlbGYsDQo+IHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIyNCwgc2VsZi5SVUxFX3ZmclN0 YXRlbWVudE9yZGVyZWRMaXN0KQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9r ZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTg0Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk9yZGVyZWRMaXN0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx ODQzDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJRdWVzdGlvbkhlYWRlcihsb2NhbGN0 eC5Ob2RlLCBsb2NhbGN0eC5RVHlwZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTg0NA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODQ5DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAg ICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBfbGE9PVZmclN5bnRheFBhcnNlci5NYXhDb250YWluZXJzOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTg0NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBsb2Nh bGN0eC5NID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWF4Q29udGFpbmVycykNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NDYNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NDcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTg0OA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg1Ng0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9 IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50 YXhQYXJzZXIuRkxBR1M6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx ODUxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LkYgPSBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5GTEFHUykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE4NTINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NTMN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJPcmRlcmVkTGlzdEZsYWdzKCkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NTQNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NTgNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdChs b2NhbGN0eC5Ob2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODU5DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kTGlzdCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg2MA0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsg ICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAg ZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBjbGFzcyBWZnJPcmRlcmVkTGlzdEZsYWdzQ29udGV4dChQYXJzZXJSdWxlQ29udGV4 dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFy c2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmlu dD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGlu dm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXIN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkhGbGFncyA9IDANCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLkxGbGFncyA9IDANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBv cmRlcmVkbGlzdEZsYWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4g PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5PcmRlcmVkbGlzdEZs YWdzRmllbGRDb250ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuT3JkZXJlZGxpc3RGbGFnc0ZpZWxkQ29udGV4dCxpKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1O b25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0V2lz ZU9yKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJPcmRlcmVk TGlzdEZsYWdzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYs IHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0VmZyT3JkZXJlZExpc3RGbGFncyIgKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJPcmRlcmVkTGlzdEZsYWdzKHNl bGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyT3JkZXJl ZExpc3RGbGFncyhzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4 ID0gVmZyU3ludGF4UGFyc2VyLlZmck9yZGVyZWRMaXN0RmxhZ3NDb250ZXh0KHNlbGYsIHNlbGYu X2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUo bG9jYWxjdHgsIDIyNiwgc2VsZi5SVUxFX3Zmck9yZGVyZWRMaXN0RmxhZ3MpDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODYyDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5vcmRlcmVkbGlzdEZsYWdzRmllbGQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxODY3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEo MSkNCj4gPg0KPiA+ICsgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRX aXNlT3I6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODYzDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VP cikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NjQNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5vcmRlcmVkbGlzdEZsYWdzRmllbGQoKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg2OQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxs eToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBjbGFzcyBPcmRlcmVkbGlzdEZsYWdzRmllbGRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs IHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0x KToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tp bmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuSEZsYWcgPSAwDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5MRmxhZyA9IDANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLk51bWJlciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBV bmlRdWVGbGFnKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5VbmlRdWVGbGFnLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIE5vRW1wdHlGbGFnKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Ob0VtcHR5RmxhZywgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBxdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5RdWVzdGlvbmhlYWRlckZsYWdzRmllbGRDb250ZXh0 LDANCj4gPiApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg Z2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50 YXhQYXJzZXIuUlVMRV9vcmRlcmVkbGlzdEZsYWdzRmllbGQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRPcmRlcmVkbGlz dEZsYWdzRmllbGQiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0T3JkZXJlZGxpc3RGbGFnc0ZpZWxkKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAg ZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGls ZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgb3JkZXJlZGxpc3RGbGFnc0ZpZWxkKHNlbGYpOg0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuT3JkZXJl ZGxpc3RGbGFnc0ZpZWxkQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSkN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyMjgsIHNlbGYuUlVM RV9vcmRlcmVkbGlzdEZsYWdzRmllbGQpDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NzQNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICB0b2tlbiA9 IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1Zm clN5bnRheFBhcnNlci5OdW1iZXJdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxODcwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VbmlRdWVGbGFn XToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg3MQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VbmlRdWVGbGFn KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAg ZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk5vRW1wdHlGbGFnXToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg3Mg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Ob0VtcHR5RmxhZykNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5JbnRlcmFjdGl2ZUZsYWcsDQo+ID4gVmZyU3ludGF4UGFyc2VyLk5W QWNjZXNzRmxhZywgVmZyU3ludGF4UGFyc2VyLlJlc2V0UmVxdWlyZWRGbGFnLA0KPiA+IFZmclN5 bnRheFBhcnNlci5SZWNvbm5lY3RSZXF1aXJlZEZsYWcsIFZmclN5bnRheFBhcnNlci5MYXRlQ2hl Y2tGbGFnLA0KPiA+IFZmclN5bnRheFBhcnNlci5SZWFkT25seUZsYWcsIFZmclN5bnRheFBhcnNl ci5PcHRpb25Pbmx5RmxhZywNCj4gPiBWZnJTeW50YXhQYXJzZXIuUmVzdFN0eWxlRmxhZ106DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NzMNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnREYXRlQ29udGV4 dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg X19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4g PiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5f X2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBJZnJU cmVlTm9kZShFRklfSUZSX0RBVEVfT1ApDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5RVHlw ZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fREFURQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuVmFsID0gRUZJX0hJSV9EQVRFKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkYx ID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5GMiA9IE5vbmUgIyBU b2tlbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIERhdGUoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRh dGUsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRW5kRGF0ZShzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuRW5kRGF0ZSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZW1pY29s b24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiB2ZnJRdWVzdGlvbkhlYWRlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0 aW9uSGVhZGVyQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuQ29tbWEsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZy U3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0Q28NCj4gPiBudGV4dCwwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFllYXIoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlllYXIs IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgVmFySWQoc2VsZiwgaTppbnQ9 Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlZhcklk KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5WYXJJZCwgaSkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYsIGk6aW50PU5v bmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TdHJpbmdJ ZGVudGlmaWVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVu dGlmaWVyLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIERvdChzZWxmLCBp OmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIu RG90KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Eb3QsIGkpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgUHJvbXB0KHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Qcm9tcHQpDQo+ID4NCj4g PiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlByb21wdCwgaSkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+ID4NCj4g PiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCBpKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0K PiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIGkpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIEhlbHAoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkhlbHApDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxz ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkhlbHAsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgbWlu TWF4RGF0ZVN0ZXBEZWZhdWx0KHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4N Cj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuTWluTWF4RGF0ZVN0 ZXBEZWZhdWx0Q29udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLk1pbk1heERhdGVTdGVwRGVmYXVsdENvbnRleHQsaSkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBNb250aChzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTW9u dGgsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRGF5KHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5E YXksIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyRGF0ZUZsYWdzKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRGF0ZUZsYWdzQ29udGV4dCwwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEluY29uc2lz dGVudElmKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW5jb25zaXN0ZW50 SWZDb250ZXh0DQo+ID4gKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZDb250ZXh0LGkNCj4gPiAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRkxBR1Moc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkZMQUdTLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1 bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFy c2VyLlJVTEVfdmZyU3RhdGVtZW50RGF0ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudERhdGUiICk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVt ZW50RGF0ZShzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVm IHZmclN0YXRlbWVudERhdGUoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBs b2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnREYXRlQ29udGV4dChzZWxmLCBz ZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJS dWxlKGxvY2FsY3R4LCAyMzAsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnREYXRlKQ0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5 Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg3Ng0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRhdGUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE5NjcNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lu cHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBh cnNlci5Qcm9tcHQsIFZmclN5bnRheFBhcnNlci5OYW1lLA0KPiA+IFZmclN5bnRheFBhcnNlci5W YXJJZCwgVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uSWRdOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTg3Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZm clF1ZXN0aW9uSGVhZGVyKGxvY2FsY3R4Lk5vZGUsIGxvY2FsY3R4LlFUeXBlKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg3OA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4ODQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIF9sYSA9 IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIF9sYT09VmZy U3ludGF4UGFyc2VyLkZMQUdTOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE4NzkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGxvY2FsY3R4LkYxID0g c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTg4MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxODgxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBz ZWxmLnZmckRhdGVGbGFncygpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTg4Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODg2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYudmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KGxvY2FsY3R4Lk5vZGUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRv a2VuIGluIFtWZnJTeW50YXhQYXJzZXIuWWVhcl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxODg4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlllYXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxODg5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlZhcklkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg5 MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5U X181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg5MQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVu dGlmaWVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg5Mg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Eb3QpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODkzDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODk0DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg5NQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Qcm9tcHQpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODk2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxODk3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTg5OA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxODk5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE5MDANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE5MDENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTAyDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkhlbHAp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTAzDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTA0DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkwNQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTA2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE5MDcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE5MDgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxOTA5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWluTWF4RGF0ZVN0 ZXBEZWZhdWx0KGxvY2FsY3R4Lk5vZGUsIGxvY2FsY3R4LlZhbCwgMCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MTANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTW9udGgpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxOTExDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlZhcklkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTkxMg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTkxMw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTkxNA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Eb3QpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTE1DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmlu Z0lkZW50aWZpZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTE2 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkxNw0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Qcm9tcHQpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTE4DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTE5DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkyMA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTIxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE5MjINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE5MjMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxOTI0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkhlbHApDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTI1 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRf XzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTI2DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2Vu KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkyNw0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTI4DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MjkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MzANCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxOTMxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu bWluTWF4RGF0ZVN0ZXBEZWZhdWx0KGxvY2FsY3R4Lk5vZGUsIGxvY2FsY3R4LlZhbCwgMSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MzINCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRGF5KQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkzMw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5WYXJJZCkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE5MzQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE5MzUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE5MzYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuRG90KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTkzNw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTkzOA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5 MzkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu UHJvbXB0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk0MA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk0MQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NDINCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk0Mw0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTQ0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTQ1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTk0Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5IZWxwKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTk0Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk0 OA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5T dHJpbmdUb2tlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NDkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3Bl blBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk1MA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTUxDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTUyDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk1Mw0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLm1pbk1heERhdGVTdGVwRGVmYXVsdChsb2NhbGN0eC5Ob2RlLCBsb2NhbGN0eC5W YWwsIDIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTU5DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5GTEFHUzoNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTU0DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICBsb2NhbGN0eC5GMiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdT KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NTUNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk1Ng0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZnJEYXRlRmxhZ3MoKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NTcNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk2NA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuSW5jb25zaXN0ZW50 SWY6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk2MQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJ ZigpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk2Ng0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRF eGNlcHRpb24oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTk2OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkVuZERhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NzANCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24p DQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0K PiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgTWluTWF4RGF0ZVN0ZXBEZWZhdWx0Q29udGV4dChQ YXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19p bml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBp bnZva2luZ1N0YXRlOmludD0tMSwgTm9kZT1Ob25lLCBEYXRlPU5vbmUsIEtleVZhbHVlPU5vbmUp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2lu Z1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuRGF0ZSA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLktleVZhbHVlID0g Tm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vZGUNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLkRhdGUgPSBEYXRlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5LZXlWYWx1ZSA9IEtl eVZhbHVlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTWluaW11bShzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuTWluaW11bSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIo c2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVy LCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50 PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21t YSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTWF4aW11bShzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWF4aW11bSwgMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdGVwKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdGVwLCAw KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIERlZmF1bHQoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRl ZmF1bHQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4 KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVM RV9taW5NYXhEYXRlU3RlcERlZmF1bHQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRNaW5NYXhEYXRlU3RlcERlZmF1bHQi ICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0TWluTWF4 RGF0ZVN0ZXBEZWZhdWx0KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICBkZWYgbWluTWF4RGF0ZVN0ZXBEZWZhdWx0KHNlbGYsIE5vZGUsIERhdGUsIEtleVZhbHVl KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLk1pbk1heERhdGVTdGVwRGVmYXVsdENvbnRleHQoc2VsZiwNCj4gc2VsZi5fY3R4LA0KPiA+ IHNlbGYuc3RhdGUsIE5vZGUsIERhdGUsIEtleVZhbHVlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5lbnRlclJ1bGUobG9jYWxjdHgsIDIzMiwgc2VsZi5SVUxFX21pbk1heERhdGVTdGVwRGVmYXVs dCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NzINCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5NaW5pbXVtKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTczDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTk3NA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTk3NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTc2DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWF4aW11bSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk3Nw0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE5NzgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5 NzkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21t YSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk4NA0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xh PT1WZnJTeW50YXhQYXJzZXIuU3RlcDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE5ODANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU3RlcCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5 ODENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu VF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5ODINCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk4Mw0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk5MA0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuRGVmYXVsdDoNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5ODYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRGVmYXVsdCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE5ODcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE5ODgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE5ODkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAg IGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4g PiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgY2xhc3MgVmZyRGF0ZUZsYWdzQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBw YXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5n U3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLkxGbGFncyA9IDANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBkYXRlRmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy bg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkRhdGVGbGFn c0ZpZWxkQ29udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLkRhdGVGbGFnc0ZpZWxkQ29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJEYXRlRmxhZ3MNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRy ZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAi dmlzaXRWZnJEYXRlRmxhZ3MiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0VmZyRGF0ZUZsYWdzKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxz ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJl bihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgdmZyRGF0ZUZsYWdzKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyRGF0ZUZsYWdzQ29udGV4 dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgMjM0LCBzZWxmLlJVTEVfdmZyRGF0ZUZsYWdzKQ0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5 Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk5Mg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuZGF0ZUZsYWdzRmllbGQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxOTk3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5j KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTkzDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5OTQNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5kYXRlRmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxOTk5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29n bml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4 Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBv cnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxv Y2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIERhdGVG bGFnc0ZpZWxkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLkxGbGFnID0gMA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFll YXJTdXBwcHJlc3NGbGFnKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5ZZWFyU3VwcHByZXNzRmxhZywgMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBNb250aFN1cHByZXNzRmxhZyhzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTW9u dGhTdXBwcmVzc0ZsYWcsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRGF5 U3VwcHJlc3NGbGFnKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5EYXlTdXBwcmVzc0ZsYWcsIDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgU3RvcmFnZU5vcm1hbEZsYWcoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0b3JhZ2VO b3JtYWxGbGFnLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFN0b3JhZ2VU aW1lRmxhZyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuU3RvcmFnZVRpbWVGbGFnLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIFN0b3JhZ2VXYWtlVXBGbGFnKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdG9yYWdlV2FrZVVw RmxhZywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxF X2RhdGVGbGFnc0ZpZWxkDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0 KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0RGF0ZUZsYWdzRmllbGQiICk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RGF0ZUZsYWdzRmllbGQoc2VsZikN Cj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBkYXRlRmxhZ3NGaWVs ZChzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3lu dGF4UGFyc2VyLkRhdGVGbGFnc0ZpZWxkQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYu c3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjM2LCBz ZWxmLlJVTEVfZGF0ZUZsYWdzRmllbGQpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAg IyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMDAwDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5w dXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBub3QoKCgoKF9sYSAtIDE4MSkpICYg fjB4M2YpID09IDAgYW5kICgoMSA8PCAoX2xhIC0gMTgxKSkgJiAoKDEgPDwNCj4gPiAoVmZyU3lu dGF4UGFyc2VyLlllYXJTdXBwcHJlc3NGbGFnIC0gMTgxKSkgfCAoMSA8PA0KPiA+IChWZnJTeW50 YXhQYXJzZXIuTW9udGhTdXBwcmVzc0ZsYWcgLSAxODEpKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRh eFBhcnNlci5EYXlTdXBwcmVzc0ZsYWcgLSAxODEpKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRheFBh cnNlci5TdG9yYWdlTm9ybWFsRmxhZyAtIDE4MSkpIHwgKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFy c2VyLlN0b3JhZ2VUaW1lRmxhZyAtIDE4MSkpIHwgKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2Vy LlN0b3JhZ2VXYWtlVXBGbGFnIC0gMTgxKSkpKSAhPSAwKSBvcg0KPiA+IF9sYT09VmZyU3ludGF4 UGFyc2VyLk51bWJlcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcklubGluZShzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0TWF0Y2goc2VsZikN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5jb25zdW1lKCkNCj4gPg0KPiA+ICsgICAg ICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmlu YWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsg ICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRUaW1lQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBw YXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5n U3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX1RJTUVfT1Ap DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVF U1RJT05fVElNRQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuVmFsID0gRUZJX0hJSV9USU1F KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkYxID0gTm9uZSAjIFRva2VuDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5GMiA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIFRpbWUoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlRpbWUsIDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgRW5kVGltZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kVGltZSwgMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJRdWVzdGlvbkhlYWRlcihz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uSGVhZGVyQ29udGV4dCwwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6 aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5D b21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25M aXN0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRp b25MaXN0Q28NCj4gPiBudGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIEhvdXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkhvdXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgVmFySWQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlZhcklkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5WYXJJZCwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCBpKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIERvdChzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuRG90KQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5Eb3QsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgUHJvbXB0KHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkg aXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5z KFZmclN5bnRheFBhcnNlci5Qcm9tcHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlByb21wdCwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJpbmdU b2tlbihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5v bmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJT eW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlN0cmluZ1Rva2VuLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9w ZW5QYXJlbihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlz IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhW ZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5PcGVuUGFyZW4sIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVt YmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5 bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51 bWJlciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNl bGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBh cnNlci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9z ZVBhcmVuLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEhlbHAoc2VsZiwg aTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2Vy LkhlbHApDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkhlbHAsIGkpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgbWluTWF4VGltZVN0ZXBEZWZhdWx0KHNlbGYs IGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0cyhWZnJTeW50YXhQYXJzZXIuTWluTWF4VGltZVN0ZXBEZWZhdWx0Q29udGV4dCkNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4N Cj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLk1pbk1heFRp bWVTdGVwRGVmYXVsdENvbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBNaW51dGUoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk1pbnV0ZSwgMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBTZWNvbmQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlY29uZCwgMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJUaW1lRmxhZ3Moc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJUaW1lRmxhZ3NDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWYoc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRz KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZkNvbnRleHQNCj4gPiAp DQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZkNvbnRleHQsaQ0KPiA+ICkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0 ZW1lbnRUaW1lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYs IHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50VGltZSIgKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRUaW1lKHNlbGYpDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50VGlt ZShzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudFRpbWVDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBz ZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIz OCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFRpbWUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9s YSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMDAyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuVGltZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjA5Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlByb21wdCwgVmZy U3ludGF4UGFyc2VyLk5hbWUsDQo+ID4gVmZyU3ludGF4UGFyc2VyLlZhcklkLCBWZnJTeW50YXhQ YXJzZXIuUXVlc3Rpb25JZF06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMDAzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25IZWFkZXIo bG9jYWxjdHguTm9kZSwgbG9jYWxjdHguUVR5cGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMDA0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjAxMA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5 bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEo MSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuRkxB R1M6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAwNQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgbG9jYWxjdHguRjEgPSBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5GTEFHUykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMDA2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIwMDcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYudmZyVGltZUZsYWdz KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDA4DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21t YSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIwMTINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1l bnRRdWVzdGlvbk9wdGlvbkxpc3QobG9jYWxjdHguTm9kZSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5Ib3VyXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIw MTQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu SG91cikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMTUNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVmFySWQpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDE2DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDE3DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDE4DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRvdCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMTkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMjANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMDIxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlByb21wdCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIwMjINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIwMjMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuU3RyaW5nVG9rZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy MDI0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk9wZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMjUN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVt YmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAyNg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVu KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAyNw0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMjgNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuSGVscCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMjkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIwMzANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMDMxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIwMzINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjAzMw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjAzNA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMzUNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5taW5NYXhUaW1lU3RlcERlZmF1bHQobG9jYWxj dHguTm9kZSwgbG9jYWxjdHguVmFsLCAwKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjAzNg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5NaW51dGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMDM3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlZhcklkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAzOA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181 KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAzOQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlm aWVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA0MA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Eb3QpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDQxDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDQyDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA0Mw0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Qcm9tcHQpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDQ0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMDQ1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjA0Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMDQ3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIwNDgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIw NDkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDUwDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkhlbHApDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDUxDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDUyDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA1Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDU0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIwNTUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIwNTYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMDU3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWluTWF4VGltZVN0ZXBE ZWZhdWx0KGxvY2FsY3R4Lk5vZGUsIGxvY2FsY3R4LlZhbCwgMSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNTgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2Vjb25kKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjA1OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5WYXJJZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIwNjANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIw NjENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu U3RyaW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIwNjINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuRG90KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA2Mw0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJ ZGVudGlmaWVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA2NA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21t YSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNjUNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUHJvbXB0KQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA2Ng0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA2Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNjgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjA2OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMDcwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMDcxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjA3Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5IZWxwKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA3Mw0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181 KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA3NA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNzUNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA3Ng0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDc3DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDc4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjA3OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1p bk1heFRpbWVTdGVwRGVmYXVsdChsb2NhbGN0eC5Ob2RlLCBsb2NhbGN0eC5WYWwsIDIpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDg1DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5GTEFHUzoNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMDgwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBs b2NhbGN0eC5GMiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwODENCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA4Mg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgc2VsZi52ZnJUaW1lRmxhZ3MoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIwODMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA5MA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuSW5jb25zaXN0ZW50SWY6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA4Nw0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZigpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA5Mg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2Vs ZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA5NQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuZFRpbWUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwOTYNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiAr ICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAg IGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4g PiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgY2xhc3MgTWluTWF4VGltZVN0ZXBEZWZhdWx0Q29udGV4dChQYXJzZXJSdWxlQ29u dGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg cGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRl OmludD0tMSwgTm9kZT1Ob25lLCBUaW1lPU5vbmUsIEtleVZhbHVlPU5vbmUpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuVGltZSA9 IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLktleVZhbHVlID0gTm9uZQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuTm9kZSA9IE5vZGUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlRpbWUgPSBU aW1lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5LZXlWYWx1ZSA9IEtleVZhbHVlDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTWluaW11bShzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWluaW11bSwg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9 Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJl cikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgTWF4aW11bShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWF4aW11bSwgMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdGVwKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdGVwLCAwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIERlZmF1bHQoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRlZmF1bHQsIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9taW5NYXhUaW1l U3RlcERlZmF1bHQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2Vs ZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBo YXNhdHRyKCB2aXNpdG9yLCAidmlzaXRNaW5NYXhUaW1lU3RlcERlZmF1bHQiICk6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0TWluTWF4VGltZVN0ZXBEZWZh dWx0KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgbWlu TWF4VGltZVN0ZXBEZWZhdWx0KHNlbGYsIE5vZGUsIFRpbWUsIEtleVZhbHVlKToNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLk1pbk1heFRp bWVTdGVwRGVmYXVsdENvbnRleHQoc2VsZiwNCj4gPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIE5v ZGUsIFRpbWUsIEtleVZhbHVlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9j YWxjdHgsIDI0MCwgc2VsZi5SVUxFX21pbk1heFRpbWVTdGVwRGVmYXVsdCkNCj4gPg0KPiA+ICsg ICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwOTgNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5NaW5pbXVtKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMDk5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjEwMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjEwMQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTAyDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWF4aW11bSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjEwMw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIx MDQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1i ZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMDUNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjExMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJz ZXIuU3RlcDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMDYNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RlcCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMDcNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMDgNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjEwOQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjExNg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1W ZnJTeW50YXhQYXJzZXIuRGVmYXVsdDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIxMTINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuRGVmYXVsdCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIxMTMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMTQNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIx MTUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQg UmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1 cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3Mg VmZyVGltZUZsYWdzQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVs ZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLkxGbGFncyA9IDANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB0aW1l RmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBp IGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlRpbWVGbGFnc0ZpZWxkQ29udGV4dCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlRpbWVG bGFnc0ZpZWxkQ29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVy biBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJUaW1lRmxhZ3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJUaW1lRmxh Z3MiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZy VGltZUZsYWdzKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBk ZWYgdmZyVGltZUZsYWdzKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9j YWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyVGltZUZsYWdzQ29udGV4dChzZWxmLCBzZWxmLl9j dHgsIHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0 eCwgMjQyLCBzZWxmLlJVTEVfdmZyVGltZUZsYWdzKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5f bGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjExOA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudGlt ZUZsYWdzRmllbGQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTIzDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4g PiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTE5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMjANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi50aW1lRmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMTI1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9u IGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCBy ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwg cmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFRpbWVGbGFnc0ZpZWxkQ29udGV4 dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg X19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4g PiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5f X2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkxGbGFnID0gMA0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVy LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEhvdXJTdXBwcHJlc3NGbGFn KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5Ib3VyU3VwcHByZXNzRmxhZywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBNaW51dGVTdXBwcmVzc0ZsYWcoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk1pbnV0ZVN1cHByZXNzRmxh ZywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZWNvbmRTdXBwcmVzc0Zs YWcoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLlNlY29uZFN1cHByZXNzRmxhZywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBTdG9yYWdlTm9ybWFsRmxhZyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RvcmFnZU5vcm1hbEZs YWcsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RvcmFnZVRpbWVGbGFn KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5TdG9yYWdlVGltZUZsYWcsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgU3RvcmFnZVdha2VVcEZsYWcoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0b3JhZ2VXYWtlVXBGbGFnLCAw KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdGltZUZs YWdzRmllbGQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwg dmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNh dHRyKCB2aXNpdG9yLCAidmlzaXRUaW1lRmxhZ3NGaWVsZCIgKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRUaW1lRmxhZ3NGaWVsZChzZWxmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHRpbWVGbGFnc0ZpZWxkKHNlbGYp Og0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuVGltZUZsYWdzRmllbGRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSkN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNDQsIHNlbGYuUlVM RV90aW1lRmxhZ3NGaWVsZCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2Vu IHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIxMjYNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgx KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIG5vdCgoKCgoX2xhIC0gMTg0KSkgJiB+MHgzZikg PT0gMCBhbmQgKCgxIDw8IChfbGEgLSAxODQpKSAmICgoMSA8PA0KPiA+IChWZnJTeW50YXhQYXJz ZXIuSG91clN1cHBwcmVzc0ZsYWcgLSAxODQpKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNl ci5NaW51dGVTdXBwcmVzc0ZsYWcgLSAxODQpKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNl ci5TZWNvbmRTdXBwcmVzc0ZsYWcgLSAxODQpKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNl ci5TdG9yYWdlTm9ybWFsRmxhZyAtIDE4NCkpIHwgKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2Vy LlN0b3JhZ2VUaW1lRmxhZyAtIDE4NCkpIHwgKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLlN0 b3JhZ2VXYWtlVXBGbGFnIC0gMTg0KSkpKSAhPSAwKSBvcg0KPiA+IF9sYT09VmZyU3ludGF4UGFy c2VyLk51bWJlcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVjb3ZlcklubGluZShzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0TWF0Y2goc2VsZikNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5jb25zdW1lKCkNCj4gPg0KPiA+ICsgICAgICAg IGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxs eToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBjbGFzcyBWZnJTdGF0ZW1lbnRDb25kaXRpb25hbENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQp Og0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNl ciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9 LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZv a2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudERpc2FibGVJZlN0YXQoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0Q29udGV4dCwwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN1cHBy ZXNzSWZTdGF0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3VwcHJl c3NJZlN0YXRDb250ZXh0LA0KPiA+IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50R3JheU91dElmU3RhdChzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXRDb250ZXh0LA0KPiA+IDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50 SW5jb25zaXN0ZW50SWZTdGF0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0K PiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVt ZW50SW5jb25zaXN0ZW50SWZTdGF0Q29udA0KPiA+IGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50Q29u ZGl0aW9uYWwNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwg dmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNh dHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRDb25kaXRpb25hbCIgKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRDb25kaXRp b25hbChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZm clN0YXRlbWVudENvbmRpdGlvbmFsKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50Q29uZGl0aW9uYWxDb250 ZXh0KHNlbGYsDQo+IHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI0Niwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudENv bmRpdGlvbmFsKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMTMyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5M QSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIu RGlzYWJsZUlmXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0 KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjEy OA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudERpc2FibGVJZlN0 YXQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAg ICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlN1cHByZXNzSWZdOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTI5DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYudmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXQoKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZy U3ludGF4UGFyc2VyLkdyYXlPdXRJZl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIxMzANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1l bnRHcmF5T3V0SWZTdGF0KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5JbmNvbnNpc3Rl bnRJZl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgNCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMzENCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZlN0 YXQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNl cHRpb24oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25p dGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNl cHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0 RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2Nh bGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0 ZW1lbnRDb25kaXRpb25hbE5ld0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBh cnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIHZmclN0YXRlbWVudERpc2FibGVJZlN0YXQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0Q29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0TmV3 KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXRO ZXdDb24NCj4gPiB0ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgdmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5ldyhzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXROZXdDb250DQo+ID4gZXh0LDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50 SW5jb25zaXN0ZW50SWZTdGF0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0K PiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVt ZW50SW5jb25zaXN0ZW50SWZTdGF0Q29udA0KPiA+IGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50Q29u ZGl0aW9uYWxOZXcNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2Vs ZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBo YXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRDb25kaXRpb25hbE5ldyIgKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRD b25kaXRpb25hbE5ldyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgZGVmIHZmclN0YXRlbWVudENvbmRpdGlvbmFsTmV3KHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50Q29u ZGl0aW9uYWxOZXdDb250ZXh0KHNlbGYsDQo+ID4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI0OCwgc2VsZi5SVUxFX3Zm clN0YXRlbWVudENvbmRpdGlvbmFsTmV3KQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjEzNA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYudmZyU3RhdGVtZW50RGlzYWJsZUlmU3RhdCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIxMzUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN1 cHByZXNzSWZTdGF0TmV3KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjEz Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5l dygpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMzcNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEluY29uc2lzdGVudElmU3RhdCgpDQo+ID4NCj4g PiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAg ICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4N Cj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXRDb250ZXh0KFBhcnNl clJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9r aW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNl ciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdE5l dyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0 TmV3Q29uDQo+ID4gdGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXQNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRy ZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAi dmlzaXRWZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdChzZWxm KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0YXRlbWVu dFN1cHByZXNzSWZTdGF0KHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9j YWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXRDb250ZXh0 KHNlbGYsDQo+ID4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5lbnRlclJ1bGUobG9jYWxjdHgsIDI1MCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFN1cHByZXNz SWZTdGF0KQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjEzOQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50U3Vw cHJlc3NJZlN0YXROZXcoKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhj ZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihz ZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIo c2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudEdy YXlPdXRJZlN0YXRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuTm9kZSA9IE5vbmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJT dGF0ZW1lbnRHcmF5T3V0SWZTdGF0TmV3KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50R3JheU91dElmU3RhdE5ld0NvbnQNCj4gPiBleHQsMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVu dEdyYXlPdXRJZlN0YXQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQo c2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0IiApOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVu dEdyYXlPdXRJZlN0YXQoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiB2ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0KHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50R3Jh eU91dElmU3RhdENvbnRleHQoc2VsZiwNCj4gPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjUyLCBzZWxmLlJVTEVfdmZy U3RhdGVtZW50R3JheU91dElmU3RhdCkNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNDENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXROZXcoKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0 IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2Fs Y3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0 dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNz IFZmclN0YXRlbWVudFN0YXRMaXN0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6 UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgdmZyU3RhdGVtZW50U3RhdChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudFN0YXRDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25zKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50UXVlc3Rpb25zQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudENvbmRpdGlvbmFsKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50Q29uZGl0aW9uYWxDb250ZXh0LDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50TGFi ZWwoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRMYWJlbENvbnRleHQsMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1l bnRFeHRlbnNpb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHRlbnNp b25Db250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgdmZyU3RhdGVtZW50SW52YWxpZChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudEludmFsaWRDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRTdGF0TGlzdA0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZp c2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNp dFZmclN0YXRlbWVudFN0YXRMaXN0IiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFN0YXRMaXN0KHNlbGYpDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50U3RhdExpc3Qoc2VsZik6 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnRTdGF0TGlzdENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYu c3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjU0LCBz ZWxmLlJVTEVfdmZyU3RhdGVtZW50U3RhdExpc3QpDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNDkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICB0 b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgdG9rZW4g aW4gW1ZmclN5bnRheFBhcnNlci5TdWJ0aXRsZSwgVmZyU3ludGF4UGFyc2VyLlRleHQsDQo+ID4g VmZyU3ludGF4UGFyc2VyLkdvdG8sIFZmclN5bnRheFBhcnNlci5SZXNldEJ1dHRvbl06DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNDMNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdGF0KCkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5PbmVPZiwgVmZyU3ludGF4UGFyc2VyLk9yZGVyZWRMaXN0LA0KPiA+IFZmclN5bnRh eFBhcnNlci5EYXRlLCBWZnJTeW50YXhQYXJzZXIuVGltZSwgVmZyU3ludGF4UGFyc2VyLkNoZWNr Qm94LA0KPiA+IFZmclN5bnRheFBhcnNlci5OdW1lcmljLCBWZnJTeW50YXhQYXJzZXIuUGFzc3dv cmQsIFZmclN5bnRheFBhcnNlci5TdHJpbmcsDQo+ID4gVmZyU3ludGF4UGFyc2VyLkFjdGlvbl06 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNDQNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRRdWVzdGlvbnMoKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLkdyYXlPdXRJZiwgVmZyU3ludGF4UGFyc2VyLlN1cHByZXNzSWYs DQo+ID4gVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZiwgVmZyU3ludGF4UGFyc2VyLkluY29uc2lz dGVudElmXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCAzKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE0NQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudENvbmRpdGlvbmFsKCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs aWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5MYWJlbF06DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNDYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi52ZnJTdGF0ZW1lbnRMYWJlbCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuR3VpZE9w XToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCA1KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE0Nw0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4dGVuc2lvbigpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuSW52ZW50b3J5LCBWZnJTeW50YXhQYXJzZXIuSGlkZGVuLA0K PiA+IFZmclN5bnRheFBhcnNlci5SZXN0b3JlLCBWZnJTeW50YXhQYXJzZXIuU2F2ZV06DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNikNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNDgNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRJbnZhbGlkKCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0K PiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50U3RhdExpc3RPbGRDb250ZXh0 KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+ IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9f aW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0 YXRlbWVudFN0YXQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdGF0Q29u dGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZm clN0YXRlbWVudFF1ZXN0aW9ucyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4N Cj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dFF1ZXN0aW9uc0NvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRMYWJlbChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudExhYmVsQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEludmFsaWQoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRJbnZhbGlkQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50U3RhdExp c3RPbGQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlz aXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRy KCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRTdGF0TGlzdE9sZCIgKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRTdGF0TGlzdE9s ZChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0 YXRlbWVudFN0YXRMaXN0T2xkKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg bG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdExpc3RPbGRDb250ZXh0 KHNlbGYsDQo+IHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI1Niwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFN0YXRM aXN0T2xkKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMTU1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgx KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuU3Vi dGl0bGUsIFZmclN5bnRheFBhcnNlci5UZXh0LA0KPiA+IFZmclN5bnRheFBhcnNlci5Hb3RvLCBW ZnJTeW50YXhQYXJzZXIuUmVzZXRCdXR0b25dOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMTUxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3Rh dGVtZW50U3RhdCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuT25lT2YsIFZmclN5bnRh eFBhcnNlci5PcmRlcmVkTGlzdCwNCj4gPiBWZnJTeW50YXhQYXJzZXIuRGF0ZSwgVmZyU3ludGF4 UGFyc2VyLlRpbWUsIFZmclN5bnRheFBhcnNlci5DaGVja0JveCwNCj4gPiBWZnJTeW50YXhQYXJz ZXIuTnVtZXJpYywgVmZyU3ludGF4UGFyc2VyLlBhc3N3b3JkLCBWZnJTeW50YXhQYXJzZXIuU3Ry aW5nLA0KPiA+IFZmclN5bnRheFBhcnNlci5BY3Rpb25dOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMTUyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu dmZyU3RhdGVtZW50UXVlc3Rpb25zKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5MYWJl bF06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0 eCwgMykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNTMNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRMYWJlbCgpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGlu IFtWZnJTeW50YXhQYXJzZXIuSW52ZW50b3J5LCBWZnJTeW50YXhQYXJzZXIuSGlkZGVuLA0KPiA+ IFZmclN5bnRheFBhcnNlci5SZXN0b3JlLCBWZnJTeW50YXhQYXJzZXIuU2F2ZV06DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNCkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNTQNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRJbnZhbGlkKCkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgp DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50RGlzYWJsZUlmU3RhdENvbnRleHQo UGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9f aW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4g aW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19p bml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu cGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gSWZyVHJl ZU5vZGUoRUZJX0lGUl9ESVNBQkxFX0lGX09QKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIERpc2FibGVJZihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRGlzYWJsZUlmLCAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb24oc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmLCBpOmludD1O b25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuU2VtaWNv bG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIGkpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRW5kSWYoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVuZElmLCAw KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN0YXRMaXN0 KHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdExpc3RDb250ZXh0KQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy bg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVt ZW50U3RhdExpc3RDb250ZXh0LGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VU cmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwg InZpc2l0VmZyU3RhdGVtZW50RGlzYWJsZUlmU3RhdCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0KHNlbGYp DQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50 RGlzYWJsZUlmU3RhdChzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2Fs Y3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudERpc2FibGVJZlN0YXRDb250ZXh0KHNl bGYsDQo+ID4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5l bnRlclJ1bGUobG9jYWxjdHgsIDI1OCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudERpc2FibGVJZlN0 YXQpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4g PiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0 KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTU3DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRGlzYWJsZUlm KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTU4DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKGxvY2FsY3R4Lk5vZGUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNTkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIxNjMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1 dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHdoaWxlICgoKChfbGEgLSA0NikpICYgfjB4 M2YpID09IDAgYW5kICgoMSA8PCAoX2xhIC0gNDYpKSAmICgoMSA8PA0KPiA+IChWZnJTeW50YXhQ YXJzZXIuT25lT2YgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5PcmRlcmVkTGlzdCAt IDQ2KSkgfCAoMQ0KPiA+IDw8IChWZnJTeW50YXhQYXJzZXIuU3VidGl0bGUgLSA0NikpIHwgKDEg PDwgKFZmclN5bnRheFBhcnNlci5UZXh0IC0gNDYpKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRheFBh cnNlci5EYXRlIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVGltZSAtIDQ2KSkgfCAo MSA8PA0KPiA+IChWZnJTeW50YXhQYXJzZXIuR3JheU91dElmIC0gNDYpKSB8ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuTGFiZWwgLSA0NikpIHwgKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLklu dmVudG9yeSAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkNoZWNrQm94IC0gNDYpKSB8 DQo+ICgxDQo+ID4gPDwgKFZmclN5bnRheFBhcnNlci5OdW1lcmljIC0gNDYpKSB8ICgxIDw8IChW ZnJTeW50YXhQYXJzZXIuUGFzc3dvcmQgLSA0NikpIHwNCj4gPiAoMSA8PCAoVmZyU3ludGF4UGFy c2VyLlN0cmluZyAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN1cHByZXNzSWYgLSA0 NikpDQo+IHwNCj4gPiAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZiAtIDQ2KSkgfCAo MSA8PCAoVmZyU3ludGF4UGFyc2VyLkhpZGRlbiAtIDQ2KSkNCj4gfA0KPiA+ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuR290byAtIDQ2KSkpKSAhPSAwKSBvciAoKCgoX2xhIC0gMTEwKSkgJiB+MHgz ZikgPT0gMCBhbmQNCj4gKCgxDQo+ID4gPDwgKF9sYSAtIDExMCkpICYgKCgxIDw8IChWZnJTeW50 YXhQYXJzZXIuSW5jb25zaXN0ZW50SWYgLSAxMTApKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRheFBh cnNlci5SZXN0b3JlIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlNhdmUgLSAxMTAp KSB8ICgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5SZXNldEJ1dHRvbiAtIDExMCkpIHwgKDEg PDwgKFZmclN5bnRheFBhcnNlci5BY3Rpb24gLSAxMTApKSB8DQo+ID4gKDEgPDwgKFZmclN5bnRh eFBhcnNlci5HdWlkT3AgLSAxMTApKSkpICE9IDApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjE2MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0 YXRlbWVudFN0YXRMaXN0KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIxNjUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNjYNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmRJZikNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE2Nw0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAg IGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxs eToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBjbGFzcyBWZnJTdGF0ZW1lbnRncmF5b3V0SWZTdXBwcmVzc0lmQ29udGV4dChQYXJzZXJSdWxl Q29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2Vs ZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0 YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJl bnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBw YXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgU3VwcHJlc3NJZihzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3VwcHJlc3NJZiwg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNz aW9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvbkNvbnRl eHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZW1p Y29sb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBGTEFHUyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgZmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0K PiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkZsYWdzRmllbGRD b250ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuRmxhZ3NGaWVsZENvbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBDb21tYShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudGdyYXlvdXRJZlN1cHBy ZXNzSWYNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlz aXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRy KCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRncmF5b3V0SWZTdXBwcmVzc0lmIiApOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudGdy YXlvdXRJZlN1cHByZXNzSWYoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRncmF5b3V0SWZTdXBwcmVzc0lmKHNlbGYpOg0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPQ0KPiBWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50Z3JheW91dElmU3VwcHJlc3NJZkNvbnRleHQoc2VsZiwNCj4gPiBzZWxmLl9jdHgs IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwg MjYwLA0KPiBzZWxmLlJVTEVfdmZyU3RhdGVtZW50Z3JheW91dElmU3VwcHJlc3NJZikNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAgICAg IHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgs IDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNjkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTgyDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0g c2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRh eFBhcnNlci5GTEFHUzoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIx NzANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu RkxBR1MpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTcxDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTcyDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuZmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMTc3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9p bnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRh eFBhcnNlci5CaXRXaXNlT3I6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjE3Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIxNzQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3NG aWVsZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE3OQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE4MA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21t YSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjE4NA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVz c2lvbihsb2NhbGN0eC5Ob2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy MTg1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2Vt aWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFz IHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUp DQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu ZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudHN1cHByZXNzSWZH cmF5T3V0SWZDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29u dGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuTm9kZSA9IE5vbmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBHcmF5T3V0 SWYoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkdyYXlPdXRJZiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZmxhZ3NGaWVsZChzZWxmLCBpOmlu dD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZy U3ludGF4UGFyc2VyLkZsYWdzRmllbGRDb250ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs c2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQsaSkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb21tYShzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29t bWEsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYs IGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNl ci5CaXRXaXNlT3IpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VP ciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3Zm clN0YXRlbWVudHN1cHByZXNzSWZHcmF5T3V0SWYNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRzdXBw cmVzc0lmR3JheU91dElmIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdFZmclN0YXRlbWVudHN1cHByZXNzSWZHcmF5T3V0SWYoc2VsZikNCj4gPg0KPiA+ ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRzdXBwcmVzc0lm R3JheU91dElmKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHgg PQ0KPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50c3VwcHJlc3NJZkdyYXlPdXRJZkNvbnRl eHQoc2VsZiwNCj4gPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjYyLA0KPiBzZWxmLlJVTEVfdmZyU3RhdGVtZW50c3Vw cHJlc3NJZkdyYXlPdXRJZikNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2Vu IHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIxODcNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5HcmF5T3V0SWYpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyMDAN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0K PiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkZMQUdTOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjE4OA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5GTEFHUykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIxODkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIxOTANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5mbGFnc0ZpZWxkKCkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxOTUNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTkxDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE5Mg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5mbGFnc0ZpZWxkKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMTk3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIF9s YSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMTk4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjAyDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKGxvY2FsY3R4Lk5vZGUpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyMDMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQg UmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1 cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3Mg VmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXROZXdDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs IHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0x KToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tp bmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfU1VQUFJF U1NfSUZfT1ApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3VwcHJlc3NJZihz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuU3VwcHJlc3NJZiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50RXhwcmVzc2lvbkNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIEVuZElmKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRJZiwgMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgZmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2Vy LkZsYWdzRmllbGRDb250ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb21tYShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3RhdExpc3Qoc2VsZiwg aTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRz KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdGF0TGlzdENvbnRleHQpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdGF0 TGlzdENvbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBl bHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZy U3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXROZXcNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVW aXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlz aXRWZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdE5ldyIgKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdE5ldyhz ZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0YXRl bWVudFN1cHByZXNzSWZTdGF0TmV3KHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXRO ZXdDb250ZXh0KHNlbGYsDQo+ID4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI2NCwNCj4gc2VsZi5SVUxFX3ZmclN0YXRl bWVudFN1cHByZXNzSWZTdGF0TmV3KQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMg VG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjIwNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlN1cHByZXNzSWYpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIyMTgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkZMQUdTOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIwNg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5GTEFHUykNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIyMDcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIyMDgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5mbGFnc0ZpZWxk KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyMTMNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjA5DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIxMA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgc2VsZi5mbGFnc0ZpZWxkKCkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjE1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjE2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjIwDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKGxvY2FsY3R4Lk5vZGUpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyMjENCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIyMjUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5M QSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHdoaWxlICgoKChfbGEgLSA0NikpICYgfjB4M2Yp ID09IDAgYW5kICgoMSA8PCAoX2xhIC0gNDYpKSAmICgoMSA8PA0KPiA+IChWZnJTeW50YXhQYXJz ZXIuT25lT2YgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5PcmRlcmVkTGlzdCAtIDQ2 KSkgfCAoMQ0KPiA+IDw8IChWZnJTeW50YXhQYXJzZXIuU3VidGl0bGUgLSA0NikpIHwgKDEgPDwg KFZmclN5bnRheFBhcnNlci5UZXh0IC0gNDYpKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNl ci5EYXRlIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVGltZSAtIDQ2KSkgfCAoMSA8 PA0KPiA+IChWZnJTeW50YXhQYXJzZXIuR3JheU91dElmIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50 YXhQYXJzZXIuTGFiZWwgLSA0NikpIHwgKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLkludmVu dG9yeSAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkNoZWNrQm94IC0gNDYpKSB8DQo+ ICgxDQo+ID4gPDwgKFZmclN5bnRheFBhcnNlci5OdW1lcmljIC0gNDYpKSB8ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuUGFzc3dvcmQgLSA0NikpIHwNCj4gPiAoMSA8PCAoVmZyU3ludGF4UGFyc2Vy LlN0cmluZyAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN1cHByZXNzSWYgLSA0Nikp DQo+IHwNCj4gPiAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZiAtIDQ2KSkgfCAoMSA8 PCAoVmZyU3ludGF4UGFyc2VyLkhpZGRlbiAtIDQ2KSkNCj4gfA0KPiA+ICgxIDw8IChWZnJTeW50 YXhQYXJzZXIuR290byAtIDQ2KSkpKSAhPSAwKSBvciAoKCgoX2xhIC0gMTEwKSkgJiB+MHgzZikg PT0gMCBhbmQNCj4gKCgxDQo+ID4gPDwgKF9sYSAtIDExMCkpICYgKCgxIDw8IChWZnJTeW50YXhQ YXJzZXIuSW5jb25zaXN0ZW50SWYgLSAxMTApKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNl ci5SZXN0b3JlIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlNhdmUgLSAxMTApKSB8 ICgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5SZXNldEJ1dHRvbiAtIDExMCkpIHwgKDEgPDwg KFZmclN5bnRheFBhcnNlci5BY3Rpb24gLSAxMTApKSB8DQo+ID4gKDEgPDwgKFZmclN5bnRheFBh cnNlci5HdWlkT3AgLSAxMTApKSkpICE9IDApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjIyMg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRl bWVudFN0YXRMaXN0KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIy MjcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyMjgNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmRJZikNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIyOQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4 Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBs b2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAg IHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBj bGFzcyBWZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0TmV3Q29udGV4dChQYXJzZXJSdWxlQ29udGV4 dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFy c2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmlu dD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGlu dm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXIN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX0dS QVlfT1VUX0lGX09QKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEdyYXlPdXRJ ZihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuR3JheU91dElmLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJT dGF0ZW1lbnRFeHByZXNzaW9uQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIGkpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgRW5kSWYoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVuZElmLCAwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIEZMQUdTKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBmbGFnc0ZpZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJz ZXIuRmxhZ3NGaWVsZENvbnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdGF0TGlzdChzZWxm LCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRMaXN0Q29udGV4dCkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4g PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0 YXRMaXN0Q29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBW ZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0TmV3DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVl VmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZp c2l0VmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5ldyIgKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0TmV3KHNl bGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVt ZW50R3JheU91dElmU3RhdE5ldyhzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXROZXdD b250ZXh0KHNlbGYsDQo+ID4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI2Niwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudEdy YXlPdXRJZlN0YXROZXcpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0 eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMjMxDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuR3JheU91dElmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjQ0DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4g PiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5GTEFHUzoNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIyMzINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMjMzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMjM0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3NGaWVsZCgpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjM5DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIzNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyMzYNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIHNlbGYuZmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjI0MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBfbGEg PSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjI0Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI0Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYudmZyU3RhdGVtZW50RXhwcmVzc2lvbihsb2NhbGN0eC5Ob2RlKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMjQ3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMjUxDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5j KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICB3aGlsZSAoKCgoX2xhIC0gNDYpKSAmIH4weDNmKSA9PSAwIGFu ZCAoKDEgPDwgKF9sYSAtIDQ2KSkgJiAoKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLk9uZU9m IC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuT3JkZXJlZExpc3QgLSA0NikpIHwgKDEN Cj4gPiA8PCAoVmZyU3ludGF4UGFyc2VyLlN1YnRpdGxlIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50 YXhQYXJzZXIuVGV4dCAtIDQ2KSkgfCAoMSA8PA0KPiA+IChWZnJTeW50YXhQYXJzZXIuRGF0ZSAt IDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlRpbWUgLSA0NikpIHwgKDEgPDwNCj4gPiAo VmZyU3ludGF4UGFyc2VyLkdyYXlPdXRJZiAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2Vy LkxhYmVsIC0gNDYpKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5JbnZlbnRvcnkgLSA0 NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5DaGVja0JveCAtIDQ2KSkgfA0KPiAoMQ0KPiA+ IDw8IChWZnJTeW50YXhQYXJzZXIuTnVtZXJpYyAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFy c2VyLlBhc3N3b3JkIC0gNDYpKSB8DQo+ID4gKDEgPDwgKFZmclN5bnRheFBhcnNlci5TdHJpbmcg LSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmIC0gNDYpKQ0KPiB8DQo+ ID4gKDEgPDwgKFZmclN5bnRheFBhcnNlci5EaXNhYmxlSWYgLSA0NikpIHwgKDEgPDwgKFZmclN5 bnRheFBhcnNlci5IaWRkZW4gLSA0NikpDQo+IHwNCj4gPiAoMSA8PCAoVmZyU3ludGF4UGFyc2Vy LkdvdG8gLSA0NikpKSkgIT0gMCkgb3IgKCgoKF9sYSAtIDExMCkpICYgfjB4M2YpID09IDAgYW5k DQo+ICgoMQ0KPiA+IDw8IChfbGEgLSAxMTApKSAmICgoMSA8PCAoVmZyU3ludGF4UGFyc2VyLklu Y29uc2lzdGVudElmIC0gMTEwKSkgfCAoMSA8PA0KPiA+IChWZnJTeW50YXhQYXJzZXIuUmVzdG9y ZSAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5TYXZlIC0gMTEwKSkgfCAoMSA8PA0K PiA+IChWZnJTeW50YXhQYXJzZXIuUmVzZXRCdXR0b24gLSAxMTApKSB8ICgxIDw8IChWZnJTeW50 YXhQYXJzZXIuQWN0aW9uIC0gMTEwKSkgfA0KPiA+ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuR3Vp ZE9wIC0gMTEwKSkpKSAhPSAwKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIyNDgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdGF0 TGlzdCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjUzDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjU0DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kSWYpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIyNTUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVj b2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHgu ZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g bG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZy U3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBw YXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5n U3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX0lOQ09OU0lT VEVOVF9JRl9PUCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBJbmNvbnNpc3Rl bnRJZihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuSW5jb25zaXN0ZW50SWYsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgUHJvbXB0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Qcm9tcHQsIDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgU3RyaW5nVG9rZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCAwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3Bl blBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsb3Nl UGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5Db21tYSwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJT dGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0K PiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 RXhwcmVzc2lvbkNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBFbmRJZihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kSWYsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGZsYWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9u ZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRh eFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLkZsYWdzRmllbGRDb250ZXh0LGkpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5v bmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNl T3IpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVu dEluY29uc2lzdGVudElmU3RhdA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFj Y2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudEluY29uc2lzdGVudElm U3RhdCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRW ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZlN0YXQoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAg ICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENo aWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZlN0YXQoc2Vs Zik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZlN0YXRDb250ZXh0KHNlbGYsDQo+ID4gc2Vs Zi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9j YWxjdHgsIDI2OCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudEluY29uc2lzdGVudElmU3RhdCkNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAg ICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNTcNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5JbmNvbnNpc3RlbnRJZikN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI1OA0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlByb21wdCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjI1OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIyNjANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5TdHJpbmdUb2tlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI2MQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJl bikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI2Mg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI2Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIyNjQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI3 Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuRkxBR1M6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjY1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjI2Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjI2Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmZsYWdzRmllbGQoKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI3Mg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNjgNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjY5DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBzZWxmLmZsYWdzRmllbGQoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIyNzQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg X2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIyNzUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNzkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb24obG9jYWxjdHguTm9kZSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI4MA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuZElmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMjgxDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhj ZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihz ZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIo c2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudElu dmFsaWRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4 dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIHZmclN0YXRlbWVudEludmFsaWRIaWRkZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRJbnZhbGlkSGlkZGVuQ29udGV4dCwNCj4gPiAwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEludmFsaWRJ bnZlbnRvcnkoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbnZhbGlk SW52ZW50b3J5Q29udGUNCj4gPiB4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEludmFsaWRTYXZlUmVzdG9yZURlZmF1bHRzKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW52YWxpZFNhdmVSZXN0b3Jl RGVmDQo+ID4gYXVsdHNDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRJbnZhbGlkDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVl VmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZp c2l0VmZyU3RhdGVtZW50SW52YWxpZCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRJbnZhbGlkKHNlbGYpDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50SW52YWxpZChzZWxmKToN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudEludmFsaWRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0 YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI3MCwgc2Vs Zi5SVUxFX3ZmclN0YXRlbWVudEludmFsaWQpDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyODYNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICB0b2tl biA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5IaWRkZW5dOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMjgzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVt ZW50SW52YWxpZEhpZGRlbigpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSW52ZW50b3J5 XToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI4NA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEludmFsaWRJbnZlbnRvcnkoKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxp ZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlJlc3RvcmUsIFZmclN5bnRheFBhcnNlci5TYXZl XToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAzKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI4NQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEludmFsaWRTYXZlUmVzdG9yZURl ZmF1bHRzKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0 RXhjZXB0aW9uKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVj b2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHgu ZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g bG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZy U3RhdGVtZW50SW52YWxpZEhpZGRlbkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50 OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRl KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgSGlkZGVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5IaWRkZW4sIDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgVmFsdWUoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlZhbHVlLCAwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25l KToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29tbWEoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCAwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEtleShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuS2V5LCAwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9u LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZy U3RhdGVtZW50SW52YWxpZEhpZGRlbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudEludmFsaWRIaWRk ZW4iICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZy U3RhdGVtZW50SW52YWxpZEhpZGRlbihzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgZGVmIHZmclN0YXRlbWVudEludmFsaWRIaWRkZW4oc2VsZik6DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0 ZW1lbnRJbnZhbGlkSGlkZGVuQ29udGV4dChzZWxmLA0KPiA+IHNlbGYuX2N0eCwgc2VsZi5zdGF0 ZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNzIsIHNlbGYu UlVMRV92ZnJTdGF0ZW1lbnRJbnZhbGlkSGlkZGVuKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI4OA0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkhpZGRlbikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjI4OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlZhbHVlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMjkwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu VF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI5MQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI5Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMjkzDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuS2V5KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjk0DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI5NQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjI5Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNv Z25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5l eGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBs b2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJT dGF0ZW1lbnRJbnZhbGlkSW52ZW50b3J5Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJl bnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3Rh dGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBJbnZlbnRvcnkoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkludmVudG9yeSwg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBIZWxwKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5IZWxw LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYs IGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNl ci5TdHJpbmdUb2tlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5n VG9rZW4sIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNl bGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBh cnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5Q YXJlbiwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwg aTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2Vy Lk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZiwgaTppbnQ9 Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNsb3Nl UGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIGkp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9u ZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBUZXh0KHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5UZXh0KQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5UZXh0LCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50SW52YWxpZEludmVu dG9yeQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNp dG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIo IHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudEludmFsaWRJbnZlbnRvcnkiICk6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50SW52YWxp ZEludmVudG9yeShzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIHZmclN0YXRlbWVudEludmFsaWRJbnZlbnRvcnkoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbnZh bGlkSW52ZW50b3J5Q29udGV4dChzZWxmLA0KPiA+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNzQsIHNlbGYuUlVMRV92 ZnJTdGF0ZW1lbnRJbnZhbGlkSW52ZW50b3J5KQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEg PSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjI5OA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkludmVudG9yeSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjI5OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkhlbHApDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMDANCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzAxDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIzMDINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIzMDMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMDQNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVu KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzA1DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMDYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5UZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMzA3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMwOA0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzA5DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzEwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMzExDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMx Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1h KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzE5DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAg ICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9 PVZmclN5bnRheFBhcnNlci5UZXh0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjMxMw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5UZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMx NA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5U X181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMxNQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tl bikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMTYNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMxNw0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzE4DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMjENCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24p DQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0K PiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MNCj4gVmZyU3RhdGVtZW50SW52YWxpZFNhdmVSZXN0 b3JlRGVmYXVsdHNDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIERlZmF1bHRzKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5EZWZhdWx0cywgMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIEZvcm1JZChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRm9ybUlkLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgUHJvbXB0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5Qcm9tcHQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgU3RyaW5nVG9rZW4oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbiwgaSkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIGkpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgSGVscChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuSGVscCwgMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTYXZlKHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TYXZlLCAwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFJlc3RvcmUoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlJlc3Rv cmUsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkZMQUdTLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGZsYWdzRmllbGQo c2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHRzKFZmclN5bnRheFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4dCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkZsYWdzRmllbGRDb250ZXh0LGkp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgS2V5KHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5LZXksIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQml0V2lzZU9y KHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRh eFBhcnNlci5CaXRXaXNlT3IpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJp dFdpc2VPciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5k ZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+IFZmclN5bnRheFBhcnNl ci5SVUxFX3ZmclN0YXRlbWVudEludmFsaWRTYXZlUmVzdG9yZURlZmF1bHRzDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlz aXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0 VmZyU3RhdGVtZW50SW52YWxpZFNhdmVSZXN0b3JlRGVmYXVsdHMiICk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50SW52YWxpZFNhdmVS ZXN0b3JlRGVmYXVsdHMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiB2ZnJTdGF0ZW1lbnRJbnZhbGlkU2F2ZVJlc3RvcmVEZWZhdWx0cyhzZWxmKToNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0NCj4gPiBWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50SW52YWxpZFNhdmVSZXN0b3JlRGVmYXVsdHNDb250ZXh0KHNlbGYsDQo+ IHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRl clJ1bGUobG9jYWxjdHgsIDI3NiwNCj4gPiBzZWxmLlJVTEVfdmZyU3RhdGVtZW50SW52YWxpZFNh dmVSZXN0b3JlRGVmYXVsdHMpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tl biB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMzIzDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEo MSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBub3QoX2xhPT1WZnJTeW50YXhQYXJzZXIuUmVz dG9yZSBvciBfbGE9PVZmclN5bnRheFBhcnNlci5TYXZlKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVySW5saW5lKHNlbGYpDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZXBvcnRNYXRjaChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmNvbnN1 bWUoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzI0DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRGVmYXVsdHMpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMjUNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjMyNg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkZvcm1JZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMy Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMjgNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMjkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjMzMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlByb21wdCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMzMQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMzINCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjMzMw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjMzNA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMzNQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFy ZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMzYNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMzNw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkhlbHApDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIzMzgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzM5DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4p DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNDANCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNDENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIzNDINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy MzU0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ ID4NCj4gPiArICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChz ZWxmLl9pbnB1dCwxODIsc2VsZi5fY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGxhXyA9 PSAxOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM0Mw0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNDQNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzQ1DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMzQ2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu ZmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzUx DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM0Nw0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lz ZU9yKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNDgNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3NGaWVsZCgpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM1Mw0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzYw DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4N Cj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5Db21tYToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNTYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMzU3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLktleSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIzNTgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNTkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVt YmVyKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMzYyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhj ZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihz ZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIo c2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudExh YmVsQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAg c3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5v ZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX0dVSURfT1ApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgTGFiZWwoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkxhYmVsLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVt ZW50TGFiZWwNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwg dmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNh dHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRMYWJlbCIgKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRMYWJlbChzZWxmKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmclN0YXRlbWVudExh YmVsKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50TGFiZWxDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4g PiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDI3OCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudExhYmVsKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5 Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM2NA0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkxhYmVsKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMzY1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMzY2DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0 aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVudEJhbm5l ckNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5v bmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1 cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2Rl ID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9HVUlEX09QKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIEJhbm5lcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQmFubmVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIFRpdGxlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5UaXRsZSwgMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5P cGVuUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNl bGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBh cnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwg aSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5DbG9zZVBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1h KHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEs IGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTGluZShzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTGlu ZSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBBbGlnbihzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu QWxpZ24sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5TZW1pY29sb24sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg VGltZW91dChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuVGltZW91dCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBMZWZ0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5MZWZ0LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIENlbnRlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2VudGVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIFJpZ2h0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5SaWdodCwgMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudEJhbm5lcg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNl VHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3Is ICJ2aXNpdFZmclN0YXRlbWVudEJhbm5lciIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRCYW5uZXIoc2VsZikNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRCYW5uZXIoc2VsZik6 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnRCYW5uZXJDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0 YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI4MCwgc2Vs Zi5SVUxFX3ZmclN0YXRlbWVudEJhbm5lcikNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0g MCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIzNjgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5CYW5uZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIzNzANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkNvbW1hOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM2OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM3Mg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRpdGxlKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzczDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjM3NA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzc1 DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBh cmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzc2DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzc3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjM3OA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy Mzg5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ ID4NCj4gPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTGluZV06DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzc5DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkxpbmUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzgwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIzODENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMzgyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkFsaWduKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjM4Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBub3QoKCgoKF9sYSAtIDEzNikpICYgfjB4M2Yp ID09IDAgYW5kICgoMSA8PCAoX2xhIC0gMTM2KSkgJiAoKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFy c2VyLkxlZnQgLSAxMzYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuUmlnaHQgLSAxMzYpKSB8 ICgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5DZW50ZXIgLSAxMzYpKSkpICE9IDApKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcklubGlu ZShzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRNYXRjaChzZWxmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25zdW1lKCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzODQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4 UGFyc2VyLlRpbWVvdXRdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjM4NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5UaW1lb3V0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM4Ng0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181 KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM4Nw0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzg4DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24g YXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCBy ZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50RXh0ZW5zaW9u Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9u ZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3Vw ZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUg PSBJZnJUcmVlTm9kZShFRklfSUZSX0dVSURfT1ApDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5CdWZmZXIgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5TaXplID0gMA0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuVHlwZU5hbWUgPSAnJw0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuVHlwZVNpemUgPSAwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Jc1N0cnVj dCA9IEZhbHNlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5BcnJheU51bSA9IDANCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLkQgPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBHdWlkT3Aoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkd1aWRPcCwgMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBVdWlkKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VdWlkLCAwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGd1aWREZWZpbml0aW9uKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuR3VpZERlZmluaXRpb25Db250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9u ZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBFbmRHdWlkT3Aoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVuZEd1aWRPcCwgMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBEYXRhVHlwZShzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRGF0 YVR5cGUsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgVWludDY0KHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5VaW50NjQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgVWludDMy KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5VaW50MzIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg VWludDE2KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5VaW50MTYsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgVWludDgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVpbnQ4LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIEJvb2xlYW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJvb2xlYW4sIDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgRUZJX1NUUklOR19JRChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRUZJX1NUUklOR19JRCwg MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBFRklfSElJX0RBVEUoc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkVGSV9ISUlfREFURSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBF RklfSElJX1RJTUUoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfVElNRSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBFRklfSElJX1JFRihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9SRUYsIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiB2ZnJFeHRlbnNpb25EYXRhKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyRXh0ZW5zaW9uRGF0 YUNvbnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5WZnJFeHRlbnNpb25EYXRhQ29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4dGVuc2lvbihzZWxmLCBpOmludD1O b25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudEV4dGVuc2lvbkNvbnRleHQpDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHRlbnNpb25D b250ZXh0LGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg T3BlbkJyYWNrZXQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIENsb3NlQnJhY2tldChzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0 LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZy U3RhdGVtZW50RXh0ZW5zaW9uDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNj ZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50RXh0ZW5zaW9uIiApOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVu dEV4dGVuc2lvbihzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIHZmclN0YXRlbWVudEV4dGVuc2lvbihzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4dGVuc2lvbkNv bnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjgyLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50RXh0 ZW5zaW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+ DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM5 MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkd1aWRP cCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM5Mg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlV1aWQpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzOTMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMzk0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5ndWlkRGVmaW5pdGlvbigpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NjYNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBs YV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDE5OCxzZWxmLl9j dHgpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgbGFfID09IDE6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzk1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjM5Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5E ID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRGF0YVR5cGUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzk3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNDU4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICB0b2tlbiA9IHNlbGYu X2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJT eW50YXhQYXJzZXIuVWludDY0XToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMzk4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5VaW50NjQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjQwMg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgX2xhPT1WZnJT eW50YXhQYXJzZXIuT3BlbkJyYWNrZXQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIzOTkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQwMA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQwMQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJh Y2tldCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3lu dGF4UGFyc2VyLlVpbnQzMl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjQwNA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuVWludDMyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI0MDgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIF9sYT09VmZyU3lu dGF4UGFyc2VyLk9wZW5CcmFja2V0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNDA1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MDYNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MDcNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNr ZXQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5VaW50MTZdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI0MTANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlVpbnQxNikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNDE0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRh eFBhcnNlci5PcGVuQnJhY2tldDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjQxMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDEyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDEzDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0 KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg cGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQ YXJzZXIuVWludDhdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI0MTYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlVpbnQ4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI0MjANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQu TEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFy c2VyLk9wZW5CcmFja2V0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNDE3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MTgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MTkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBwYXNz DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5Cb29sZWFuXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy NDIyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Cb29sZWFuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI0MjYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQu TEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFy c2VyLk9wZW5CcmFja2V0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNDIzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MjQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MjUNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBwYXNz DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5FRklfU1RSSU5HX0lEXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNDI4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5FRklfU1RSSU5HX0lEKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI0MzINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgX2xhID0g c2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIF9sYT09 VmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNDI5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MzANCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MzENCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9z ZUJyYWNrZXQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1Zm clN5bnRheFBhcnNlci5FRklfSElJX0RBVEVdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI0MzQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfREFURSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDM4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQzNQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0KQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDM2DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVt YmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDM3 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ2xvc2VCcmFja2V0KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBlbGlmIHRv a2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9USU1FXToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDQwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FRklfSElJX1RJTUUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ0NA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQ6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NDENCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJh Y2tldCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ0 Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjQ0Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfUkVGXToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDQ2DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FRklfSElJX1JFRikNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDUwDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ0Nw0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk9wZW5CcmFja2V0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNDQ4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNDQ5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmll cl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ1Mg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3Ry aW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyNDU2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5 bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0 LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBh cnNlci5PcGVuQnJhY2tldDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjQ1Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDU0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDU1DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgcGFz cw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NjMNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIF9hbHQgPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0 LDE5NyxzZWxmLl9jdHgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHdoaWxlIF9hbHQhPTIg YW5kIF9hbHQhPUFUTi5JTlZBTElEX0FMVF9OVU1CRVI6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICBpZiBfYWx0PT0xOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNDYwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52 ZnJFeHRlbnNpb25EYXRhKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNDY1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIF9hbHQgPSBzZWxmLl9p bnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDE5NyxzZWxmLl9jdHgpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI0NzYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMo c2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkNvbW1hOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ2OA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NzINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIF9s YSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHdoaWxlIF9s YT09VmZyU3ludGF4UGFyc2VyLkd1aWRPcDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNDY5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnZm clN0YXRlbWVudEV4dGVuc2lvbigpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjQ3NA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjQ3NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5FbmRHdWlkT3ApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NzgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICBleGNl cHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9j YWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICBy ZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xh c3MgVmZyRXh0ZW5zaW9uRGF0YUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBh cnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5URk5hbWUgPSAnJw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRk5h bWUgPSAnJw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuVEZWYWx1ZSA9IE5vbmUNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLkkgPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBDb21tYShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgRGF0YShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRGF0YSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBl bHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IE9wZW5CcmFja2V0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBDbG9zZUJyYWNrZXQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCwgMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBEb3Qoc2VsZiwgaTppbnQ9Tm9uZSk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkRvdCkNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRG90LCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIGFycmF5TmFtZShzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy bg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkFycmF5TmFt ZUNvbnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5BcnJheU5hbWVDb250ZXh0LGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJFeHRlbnNpb25EYXRhDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlz aXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0 VmZyRXh0ZW5zaW9uRGF0YSIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRWZnJFeHRlbnNpb25EYXRhKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAg ZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGls ZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyRXh0ZW5zaW9uRGF0YShzZWxmKToNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckV4dGVuc2lv bkRhdGFDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI4NCwgc2VsZi5SVUxFX3ZmckV4dGVu c2lvbkRhdGEpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy NDgwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0ODENCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5EYXRhKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDg1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNl ci5PcGVuQnJhY2tldDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0 ODINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu T3BlbkJyYWNrZXQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDgz DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LkkgPSBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyNDg0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkNsb3NlQnJhY2tldCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjQ5MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJz ZXIuRG90Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ4Nw0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Eb3QpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDg4DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuYXJyYXlOYW1lKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI0OTMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI0OTQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5U X181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDk1DQo+ID4NCj4gPiAr ICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJl cikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+ DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRNb2RhbENvbnRleHQoUGFy c2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52 b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0 X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFy c2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmck1vZGFsVGFnKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuVmZyTW9kYWxUYWdDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0 ZW1lbnRNb2RhbA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxm LCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhh c2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudE1vZGFsIiApOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudE1vZGFsKHNlbGYp DQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyU3RhdGVtZW50 TW9kYWwoc2VsZik6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRNb2RhbENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0K PiA+IHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0 eCwgMjg2LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50TW9kYWwpDQo+ID4NCj4gPiArICAgICAgICB0 cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDk3DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi52ZnJNb2RhbFRhZygpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI0OTgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNl cHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0g cmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNl bGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zlcihz ZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyTW9kYWxUYWdDb250 ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0K PiA+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigp Ll9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElm clRyZWVOb2RlKEVGSV9JRlJfTU9EQUxfVEFHX09QKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIE1vZGFsKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Nb2RhbCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3Zmck1vZGFsVGFnDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyTW9k YWxUYWciICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 VmZyTW9kYWxUYWcoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiB2ZnJNb2RhbFRhZyhzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxv Y2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmck1vZGFsVGFnQ29udGV4dChzZWxmLCBzZWxmLl9j dHgsIHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0 eCwgMjg4LCBzZWxmLlJVTEVfdmZyTW9kYWxUYWcpDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTAwDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTW9kYWwpDQo+ID4NCj4gPiArICAgICAgICBl eGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg bG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAg ICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg Y2xhc3MgVmZyU3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg cGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEs IFBhcmVudE5vZGU9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRf XyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJz ZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlBhcmVudE5vZGUgPSBOb25l DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwcmVzc2lvbkluZm8oKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZXMgPSBbXQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuTCA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuUGFy ZW50Tm9kZSA9IFBhcmVudE5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBh bmRUZXJtKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkFuZFRlcm1Db250ZXh0KQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkFuZFRlcm1Db250ZXh0LGkpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgT1Ioc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk9S KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PUiwgaSkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudEV4cHJlc3Np b24NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRv cjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2 aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRFeHByZXNzaW9uIiApOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudEV4cHJlc3Npb24oc2Vs ZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB2ZnJTdGF0ZW1l bnRFeHByZXNzaW9uKHNlbGYsIFBhcmVudE5vZGUpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvbkNv bnRleHQoc2VsZiwNCj4gc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUsIFBhcmVudE5vZGUpDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjkwLCBzZWxmLlJVTEVf dmZyU3RhdGVtZW50RXhwcmVzc2lvbikNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAj IFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI1MDINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmFuZFRlcm0obG9j YWxjdHguRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjUwNw0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAg ICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuT1I6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNTAzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2Fs Y3R4LkwgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PUikNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MDQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5hbmRUZXJtKGxvY2FsY3R4LkV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNTA5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1 dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9u RXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlv biA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJv cihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292 ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclN0YXRlbWVu dEV4cHJlc3Npb25TdWJDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJS dWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBQYXJlbnROb2Rlcz1O b25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52 b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuUGFyZW50Tm9kZXMgPSBOb25lDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwcmVzc2lvbkluZm8oKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuTm9kZXMgPSBbXQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuUGFy ZW50Tm9kZXMgPSBQYXJlbnROb2Rlcw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IGFuZFRlcm0oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuQW5kVGVybUNvbnRleHQpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuQW5kVGVybUNvbnRleHQsaSkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBPUihzZWxmLCBp OmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIu T1IpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9SLCBpKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50RXhwcmVz c2lvblN1Yg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2 aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0 dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIiICk6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50RXhwcmVz c2lvblN1YihzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVm IHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoc2VsZiwgUGFyZW50Tm9kZXMpOg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVt ZW50RXhwcmVzc2lvblN1YkNvbnRleHQoc2VsZiwNCj4gPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUs IFBhcmVudE5vZGVzKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDI5Miwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIpDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTEwDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5hbmRUZXJtKGxvY2FsY3R4LkV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI1MTUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgx KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLk9SOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjUxMQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PUikNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MTINCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5hbmRUZXJtKGxvY2FsY3R4LkV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNTE3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29n bml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4 Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBv cnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxv Y2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIEFuZFRl cm1Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1O b25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9k ZXMgPSBbXQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTGluZSA9IE5vbmUNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLkwgPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgYml0d2lzZW9yVGVybShzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkJpdHdpc2VvclRlcm1Db250 ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu Qml0d2lzZW9yVGVybUNvbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBBTkQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkFORCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuQU5ELCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1 bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFy c2VyLlJVTEVfYW5kVGVybQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2Vw dChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdEFuZFRlcm0iICk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0QW5kVGVybShzZWxmKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIGFuZFRlcm0oc2VsZiwgRXhwSW5mbyk6DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5B bmRUZXJtQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsDQo+ID4gRXhwSW5mbykN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyOTQsIHNlbGYuUlVM RV9hbmRUZXJtKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0K PiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjUxOA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuYml0d2lzZW9yVGVybShFeHBJbmZvKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTIzDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAg X2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICB3aGlsZSBfbGE9 PVZmclN5bnRheFBhcnNlci5BTkQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNTE5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LkwgPSBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5BTkQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNTIwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuYml0d2lzZW9yVGVy bShFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjUyNQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+ DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBCaXR3aXNlb3JUZXJtQ29udGV4dChQYXJzZXJS dWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18o c2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2lu Z1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5m byA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5vZGVzID0gW10NCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLkxpbmUgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5MID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0g RXhwSW5mbw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGJpdHdpc2VhbmRUZXJt KHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0cyhWZnJTeW50YXhQYXJzZXIuQml0d2lzZWFuZFRlcm1Db250ZXh0KQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+ IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuQml0d2lzZWFuZFRlcm1D b250ZXh0LGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg Qml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkg aXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5z KFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBn ZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRh eFBhcnNlci5SVUxFX2JpdHdpc2VvclRlcm0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRCaXR3aXNlb3JUZXJtIiApOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEJpdHdpc2VvclRl cm0oc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBiaXR3 aXNlb3JUZXJtKHNlbGYsIEV4cEluZm8pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg bG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQml0d2lzZW9yVGVybUNvbnRleHQoc2VsZiwgc2Vs Zi5fY3R4LA0KPiBzZWxmLnN0YXRlLA0KPiA+IEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjk2LCBzZWxmLlJVTEVfYml0d2lzZW9yVGVybSkNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAg ICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MjYNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLmJpdHdpc2VhbmRUZXJtKEV4cEluZm8pDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MzENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9p bnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFy c2VyLkJpdFdpc2VPcjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1 MjcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguTCA9IHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI1MjgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5iaXR3aXNlYW5kVGVy bShFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjUzMw0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+ DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBCaXR3aXNlYW5kVGVybUNvbnRleHQoUGFyc2Vy UnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9f KHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tp bmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3Vw ZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cElu Zm8gPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlcyA9IFtdDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5MaW5lID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuTCA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9 IEV4cEluZm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBlcXVhbFRlcm0oc2Vs ZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHRzKFZmclN5bnRheFBhcnNlci5FcXVhbFRlcm1Db250ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuRXF1YWxUZXJtQ29udGV4dCxpKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEJpdFdpc2VBbmQoc2Vs ZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFy c2VyLkJpdFdpc2VBbmQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdp c2VBbmQsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4 KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVM RV9iaXR3aXNlYW5kVGVybQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2Vw dChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdEJpdHdpc2VhbmRUZXJtIiApOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEJpdHdpc2VhbmRUZXJtKHNlbGYp DQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgYml0d2lzZWFuZFRl cm0oc2VsZiwgRXhwSW5mbyk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0 eCA9IFZmclN5bnRheFBhcnNlci5CaXR3aXNlYW5kVGVybUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4 LA0KPiA+IHNlbGYuc3RhdGUsIEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVy UnVsZShsb2NhbGN0eCwgMjk4LCBzZWxmLlJVTEVfYml0d2lzZWFuZFRlcm0pDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTM0DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5lcXVhbFRlcm0oRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjUzOQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ ID4NCj4gPiArICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZUFu ZDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MzUNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguTCA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkJpdFdpc2VBbmQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTM2 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZXF1YWxUZXJtKEV4cEluZm8pDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTQxDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBm aW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4g KyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGNsYXNzIEVxdWFsVGVybUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50 OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cElu Zm89Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQs IGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJz ZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5Ob2RlcyA9IFtdDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5M aW5lID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8N Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBjb21wYXJlVGVybShzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJtQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGVxdWFsVGVybVN1cHBsZW1lbnRhcnkoc2VsZiwg aTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHRzKFZmclN5bnRheFBhcnNlci5FcXVhbFRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dCkNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4N Cj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkVxdWFsVGVy bVN1cHBsZW1lbnRhcnlDb250ZXh0LGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9lcXVhbFRlcm0NCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRFcXVhbFRl cm0iICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RXF1 YWxUZXJtKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYg ZXF1YWxUZXJtKHNlbGYsIEV4cEluZm8pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg bG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRXF1YWxUZXJtQ29udGV4dChzZWxmLCBzZWxmLl9j dHgsIHNlbGYuc3RhdGUsDQo+ID4gRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50 ZXJSdWxlKGxvY2FsY3R4LCAzMDAsIHNlbGYuUlVMRV9lcXVhbFRlcm0pDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTQyDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5jb21wYXJlVGVybShFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNTQ2DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5j KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5FcXVhbCBvciBf bGE9PVZmclN5bnRheFBhcnNlci5Ob3RFcXVhbDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI1NDMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lcXVhbFRl cm1TdXBwbGVtZW50YXJ5KEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNTQ4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu c3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5M QSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhj ZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihz ZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIo c2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIEVxdWFsVGVybVN1cHBs ZW1lbnRhcnlDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29u dGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRl KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuTm9kZXMgPSBbXQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cElu Zm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxl SW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNl ci5SVUxFX2VxdWFsVGVybVN1cHBsZW1lbnRhcnkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBjb3B5RnJvbShzZWxmLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuY29weUZyb20oY3R4KQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IGN0eC5FeHBJbmZvDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5Ob2RlcyA9IGN0eC5Ob2Rlcw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBFcXVhbFRlcm1FcXVhbFJ1bGVDb250ZXh0KEVx dWFsVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6ICMg YWN0dWFsbHkgYQ0KPiA+IFZmclN5bnRheFBhcnNlci5FcXVhbFRlcm1TdXBwbGVtZW50YXJ5Q29u dGV4dA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyc2VyKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuY29weUZyb20oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIEVxdWFsKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FcXVhbCwgMCkNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBjb21wYXJlVGVybShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4N Cj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJt Q29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdEVxdWFsVGVybUVxdWFsUnVsZSIgKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRFcXVhbFRlcm1F cXVhbFJ1bGUoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzDQo+IEVxdWFsVGVybU5vdEVxdWFs UnVsZUNvbnRleHQoRXF1YWxUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQpOg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgY3R4OlBhcnNlclJ1 bGVDb250ZXh0KTogIyBhY3R1YWxseSBhDQo+ID4gVmZyU3ludGF4UGFyc2VyLkVxdWFsVGVybVN1 cHBsZW1lbnRhcnlDb250ZXh0DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRf XyhwYXJzZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5jb3B5RnJvbShjdHgpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTm90RXF1YWwoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk5vdEVxdWFs LCAwKQ0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGNvbXBhcmVUZXJtKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuQ29tcGFyZVRlcm1Db250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRv cik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0RXF1 YWxUZXJtTm90RXF1YWxSdWxlIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdEVxdWFsVGVybU5vdEVxdWFsUnVsZShzZWxmKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgZGVmIGVxdWFsVGVybVN1cHBsZW1lbnRhcnkoc2VsZiwgRXhwSW5mbyk6DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5F cXVhbFRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dChzZWxmLA0KPiA+IHNlbGYuX2N0eCwgc2VsZi5z dGF0ZSwgRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4 LCAzMDIsIHNlbGYuUlVMRV9lcXVhbFRlcm1TdXBwbGVtZW50YXJ5KQ0KPiA+DQo+ID4gKyAgICAg ICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTUzDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAg ICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRXF1YWxdOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5FcXVhbFRlcm1FcXVhbFJ1bGVDb250 ZXh0KHNlbGYsDQo+IGxvY2FsY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNTQ5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkVxdWFsKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjU1MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmNvbXBhcmVUZXJtKEV4cEluZm8p DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBl bGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTm90RXF1YWxdOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5FcXVhbFRlcm1Ob3RFcXVhbFJ1 bGVDb250ZXh0KHNlbGYsDQo+ID4gbG9jYWxjdHgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI1NTENCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTm90RXF1YWwpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNTUyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuY29tcGFyZVRl cm0oRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxl QWx0RXhjZXB0aW9uKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQg UmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1 cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3Mg Q29tcGFyZVRlcm1Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0 YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuTm9kZXMgPSBbXQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4 cEluZm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBzaGlmdFRlcm0oc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuU2hpZnRUZXJtQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGNvbXBhcmVUZXJtU3VwcGxlbWVudGFyeShzZWxm LCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dHMoVmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJtU3VwcGxlbWVudGFyeUNvbnQNCj4gPiBl eHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5Db21wYXJlVGVybVN1cHBsZW1lbnRhcnlDb250ZQ0KPiA+IHh0LGkpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9jb21wYXJlVGVy bQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9y OlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZp c2l0b3IsICJ2aXNpdENvbXBhcmVUZXJtIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdENvbXBhcmVUZXJtKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRD aGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgY29tcGFyZVRlcm0oc2VsZiwgRXhwSW5mbyk6DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5Db21w YXJlVGVybUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlLA0KPiA+IEV4cElu Zm8pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzA0LCBzZWxm LlJVTEVfY29tcGFyZVRlcm0pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tl biB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNTU1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zaGlmdFRlcm0oRXhwSW5m bykNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU1OQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgd2hpbGUg KCgoX2xhKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgX2xhKSAmICgoMSA8PA0KPiA+IFZmclN5 bnRheFBhcnNlci5MZXNzRXF1YWwpIHwgKDEgPDwgVmZyU3ludGF4UGFyc2VyLkxlc3MpIHwgKDEg PDwNCj4gPiBWZnJTeW50YXhQYXJzZXIuR3JlYXRlckVxdWFsKSB8ICgxIDw8IFZmclN5bnRheFBh cnNlci5HcmVhdGVyKSkpICE9IDApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjU1Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmNvbXBhcmVUZXJtU3Vw cGxlbWVudGFyeShFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjU2MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMo c2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlv biBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwg cmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYs IHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBDb21wYXJlVGVybVN1cHBsZW1l bnRhcnlDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4 dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu Tm9kZXMgPSBbXQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8N Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5k ZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5S VUxFX2NvbXBhcmVUZXJtU3VwcGxlbWVudGFyeQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIGNvcHlGcm9tKHNlbGYsIGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5jb3B5RnJvbShjdHgpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gY3R4LkV4cEluZm8NCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLk5vZGVzID0gY3R4Lk5vZGVzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzDQo+ID4gQ29tcGFyZVRlcm1MZXNzUnVsZUNvbnRl eHQoQ29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNvbnRl eHQpOiAjIGFjdHVhbGx5IGENCj4gPiBWZnJTeW50YXhQYXJzZXIuQ29tcGFyZVRlcm1TdXBwbGVt ZW50YXJ5Q29udGV4dA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFy c2VyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuY29weUZyb20oY3R4KQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIExlc3Moc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkxlc3MsIDApDQo+ID4NCj4g PiArICAgICAgICBkZWYgc2hpZnRUZXJtKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlNoaWZ0VGVy bUNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRDb21wYXJlVGVybUxlc3NSdWxlIiAp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENvbXBhcmVU ZXJtTGVzc1J1bGUoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzDQo+ID4NCj4gQ29tcGFyZVRl cm1HcmVhdGVyRXF1YWxSdWxlQ29udGV4dChDb21wYXJlVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0 DQo+ID4gKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm LCBwYXJzZXIsIGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6ICMgYWN0dWFsbHkgYQ0KPiA+IFZmclN5 bnRheFBhcnNlci5Db21wYXJlVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0DQo+ID4NCj4gPiArICAg ICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJzZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5jb3B5RnJvbShjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgR3Jl YXRlckVxdWFsKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5HcmVhdGVyRXF1YWwsIDApDQo+ID4NCj4gPiArICAgICAgICBk ZWYgc2hpZnRUZXJtKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlNoaWZ0VGVybUNvbnRleHQsMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2Vs ZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBo YXNhdHRyKCB2aXNpdG9yLCAidmlzaXRDb21wYXJlVGVybUdyZWF0ZXJFcXVhbFJ1bGUiICk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q29tcGFyZVRlcm1H cmVhdGVyRXF1YWxSdWxlKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcw0KPiA+IENvbXBhcmVU ZXJtR3JlYXRlclJ1bGVDb250ZXh0KENvbXBhcmVUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQpOg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg Y3R4OlBhcnNlclJ1bGVDb250ZXh0KTogIyBhY3R1YWxseSBhDQo+ID4gVmZyU3ludGF4UGFyc2Vy LkNvbXBhcmVUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQNCj4gPg0KPiA+ICsgICAgICAgICAgICBz dXBlcigpLl9faW5pdF9fKHBhcnNlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmNvcHlG cm9tKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBHcmVhdGVyKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5HcmVhdGVyLCAwKQ0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHNoaWZ0VGVybShzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5TaGlmdFRlcm1Db250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVl VmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZp c2l0Q29tcGFyZVRlcm1HcmVhdGVyUnVsZSIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRDb21wYXJlVGVybUdyZWF0ZXJSdWxlKHNlbGYpDQo+ID4NCj4g PiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICBjbGFzcw0KPiA+IENvbXBhcmVUZXJtTGVzc0VxdWFsUnVsZUNvbnRleHQoQ29tcGFy ZVRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOiAjIGFj dHVhbGx5IGENCj4gPiBWZnJTeW50YXhQYXJzZXIuQ29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5Q29u dGV4dA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyc2VyKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuY29weUZyb20oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIExlc3NFcXVhbChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTGVzc0VxdWFsLCAwKQ0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIHNoaWZ0VGVybShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5TaGlmdFRl cm1Db250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0Q29tcGFyZVRlcm1MZXNzRXF1YWxS dWxlIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENv bXBhcmVUZXJtTGVzc0VxdWFsUnVsZShzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIGNvbXBhcmVUZXJtU3VwcGxlbWVudGFyeShzZWxmLCBFeHBJbmZvKToNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJt U3VwcGxlbWVudGFyeUNvbnRleHQoc2VsZiwNCj4gPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEV4 cEluZm8pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzA2LCBz ZWxmLlJVTEVfY29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5KQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5 Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTcwDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAg ICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHRv a2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTGVzc106DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJtTGVzc1J1bGVDb250ZXh0KHNl bGYsDQo+ID4gbG9jYWxjdHgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI1NjINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuTGVzcykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1NjMN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zaGlmdFRlcm0oRXhwSW5mbykNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9r ZW4gaW4gW1ZmclN5bnRheFBhcnNlci5MZXNzRXF1YWxdOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBsb2NhbGN0eCA9DQo+IFZmclN5bnRheFBhcnNlci5Db21wYXJlVGVybUxlc3NFcXVhbFJ1 bGVDb250ZXh0KHNlbGYsDQo+ID4gbG9jYWxjdHgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI1NjQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTGVzc0VxdWFsKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjU2NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnNoaWZ0VGVy bShFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkdyZWF0ZXJdOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5Db21wYXJlVGVy bUdyZWF0ZXJSdWxlQ29udGV4dChzZWxmLA0KPiA+IGxvY2FsY3R4KQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTY2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkdyZWF0ZXIpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNTY3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c2hpZnRUZXJtKEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuR3JlYXRlckVx dWFsXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHggPQ0KPiA+IFZmclN5bnRh eFBhcnNlci5Db21wYXJlVGVybUdyZWF0ZXJFcXVhbFJ1bGVDb250ZXh0KHNlbGYsIGxvY2FsY3R4 KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgs IDQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTY4DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkdyZWF0ZXJFcXVh bCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1NjkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zaGlmdFRlcm0oRXhwSW5mbykNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4g Pg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0 UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgU2hpZnRUZXJtQ29udGV4dChQYXJzZXJSdWxl Q29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2Vs ZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0 YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigp Ll9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9 IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5vZGVzID0gW10NCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgYWRkTWludXNUZXJtKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuQWRkTWlu dXNUZXJtQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIHNoaWZ0VGVybVN1cHBsZW1lbnRhcnkoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5T aGlmdFRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlNoaWZ0VGVybVN1cHBsZW1lbnRhcnlDb250ZXh0 LGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVs ZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJz ZXIuUlVMRV9zaGlmdFRlcm0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2Nl cHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRTaGlmdFRlcm0iICk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0U2hpZnRUZXJtKHNlbGYpDQo+ID4NCj4g PiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgc2hpZnRUZXJtKHNlbGYsIEV4cElu Zm8pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQ YXJzZXIuU2hpZnRUZXJtQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsDQo+ID4g RXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzMDgs IHNlbGYuUlVMRV9zaGlmdFRlcm0pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBU b2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNTcyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5hZGRNaW51c1Rlcm0o RXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU3Ng0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAg d2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuVF9fOSBvciBfbGE9PVZmclN5bnRheFBhcnNlci5U X18xMDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1NzMNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zaGlmdFRlcm1TdXBwbGVtZW50YXJ5KEV4cEluZm8p DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTc4DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAg ICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgIGNsYXNzIFNoaWZ0VGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KFBhcnNlclJ1 bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5n U3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVy KCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZv ID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZXMgPSBbXQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3NoaWZ0VGVybVN1cHBsZW1l bnRhcnkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBjb3B5 RnJvbShzZWxmLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHN1cGVyKCkuY29weUZyb20oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5m byA9IGN0eC5FeHBJbmZvDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlcyA9IGN0eC5O b2Rlcw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBj bGFzcyBTaGlmdFRlcm1SaWdodENvbnRleHQoU2hpZnRUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQp Og0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNl ciwgY3R4OlBhcnNlclJ1bGVDb250ZXh0KTogIyBhY3R1YWxseSBhDQo+ID4gVmZyU3ludGF4UGFy c2VyLlNoaWZ0VGVybVN1cHBsZW1lbnRhcnlDb250ZXh0DQo+ID4NCj4gPiArICAgICAgICAgICAg c3VwZXIoKS5fX2luaXRfXyhwYXJzZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5jb3B5 RnJvbShjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWRkTWludXNUZXJt KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuQWRkTWludXNUZXJtQ29udGV4dCwwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNp dG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIo IHZpc2l0b3IsICJ2aXNpdFNoaWZ0VGVybVJpZ2h0IiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdFNoaWZ0VGVybVJpZ2h0KHNlbGYpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICBjbGFzcyBTaGlmdFRlcm1MZWZ0Q29udGV4dChTaGlmdFRlcm1TdXBwbGVtZW50YXJ5Q29u dGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg cGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOiAjIGFjdHVhbGx5IGENCj4gPiBWZnJTeW50 YXhQYXJzZXIuU2hpZnRUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzdXBlcigpLl9faW5pdF9fKHBhcnNlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LmNvcHlGcm9tKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhZGRNaW51 c1Rlcm0oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5BZGRNaW51c1Rlcm1Db250ZXh0LDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYs IHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0U2hpZnRUZXJtTGVmdCIgKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRTaGlmdFRlcm1MZWZ0KHNlbGYpDQo+ID4NCj4g PiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgc2hpZnRUZXJtU3VwcGxlbWVudGFyeShzZWxmLCBFeHBJ bmZvKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4 UGFyc2VyLlNoaWZ0VGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KHNlbGYsDQo+IHNlbGYuX2N0eCwN Cj4gPiBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1 bGUobG9jYWxjdHgsIDMxMCwgc2VsZi5SVUxFX3NoaWZ0VGVybVN1cHBsZW1lbnRhcnkpDQo+ID4N Cj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1 ODMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4g Pg0KPiA+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5UX185XToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuU2hpZnRUZXJtTGVm dENvbnRleHQoc2VsZiwgbG9jYWxjdHgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI1NzkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuVF9fOSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI1ODANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5hZGRNaW51c1Rlcm0oRXhwSW5m bykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAg IGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5UX18xMF06DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlNoaWZ0VGVybVJpZ2h0Q29udGV4 dChzZWxmLCBsb2NhbGN0eCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjU4MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5UX18xMCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1ODIN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5hZGRNaW51c1Rlcm0oRXhwSW5mbykNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNl bGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNl cHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0g cmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNl bGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zlcihz ZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgQWRkTWludXNUZXJtQ29u dGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwN Cj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5vZGVzID0g W10NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgbXVsdGRpdm1vZFRlcm0oc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5NdWx0ZGl2bW9kVGVybUNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5KHNlbGYs IGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0cyhWZnJTeW50YXhQYXJzZXIuQWRkTWludXNUZXJtU3VwcGxlbWVudGFyeUNvbg0KPiA+IHRl eHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5BZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5Q29udA0KPiA+IGV4dCxpKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfYWRkTWludXNU ZXJtDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0 b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0cigg dmlzaXRvciwgInZpc2l0QWRkTWludXNUZXJtIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdEFkZE1pbnVzVGVybShzZWxmKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIGFkZE1pbnVzVGVybShzZWxmLCBFeHBJbmZvKToN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2Vy LkFkZE1pbnVzVGVybUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUsIEV4 cEluZm8pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzEyLCBz ZWxmLlJVTEVfYWRkTWludXNUZXJtKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMg VG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjU4NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubXVsdGRpdm1vZFRl cm0oRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU4OQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAg ICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuVF9fMTEgb3IgX2xhPT1WZnJTeW50YXhQYXJz ZXIuTmVnYXRpdmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTg2 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuYWRkTWludXNUZXJtU3VwcGxlbWVudGFy eShFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU5MQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+ DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBBZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5Q29u dGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwN Cj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5vZGVzID0g W10NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9hZGRN aW51c1Rlcm1TdXBwbGVtZW50YXJ5DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgY29weUZyb20oc2VsZiwgY3R4OlBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0K PiA+ICsgICAgICAgICAgICBzdXBlcigpLmNvcHlGcm9tKGN0eCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLkV4cEluZm8gPSBjdHguRXhwSW5mbw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuTm9kZXMgPSBjdHguTm9kZXMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgY2xhc3MNCj4gPiBBZGRNaW51c1Rlcm1wQWRkQ29udGV4dChBZGRNaW51 c1Rlcm1TdXBwbGVtZW50YXJ5Q29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOiAjIGFj dHVhbGx5IGENCj4gPiBWZnJTeW50YXhQYXJzZXIuQWRkTWludXNUZXJtU3VwcGxlbWVudGFyeUNv bnRleHQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcnNlcikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLmNvcHlGcm9tKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBtdWx0ZGl2bW9kVGVybShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy Lk11bHRkaXZtb2RUZXJtQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdEFkZE1pbnVz VGVybXBBZGQiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0QWRkTWludXNUZXJtcEFkZChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2Vs ZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MNCj4gPiBBZGRN aW51c1Rlcm1TdWJ0cmFjdENvbnRleHQoQWRkTWludXNUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQp Og0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNl ciwgY3R4OlBhcnNlclJ1bGVDb250ZXh0KTogIyBhY3R1YWxseSBhDQo+ID4gVmZyU3ludGF4UGFy c2VyLkFkZE1pbnVzVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0DQo+ID4NCj4gPiArICAgICAgICAg ICAgc3VwZXIoKS5fX2luaXRfXyhwYXJzZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5j b3B5RnJvbShjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTmVnYXRpdmUo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLk5lZ2F0aXZlLCAwKQ0KPiA+DQo+ID4gKyAgICAgICAgZGVmIG11bHRkaXZtb2RU ZXJtKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuTXVsdGRpdm1vZFRlcm1Db250ZXh0LDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYs IHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0QWRkTWludXNUZXJtU3VidHJhY3QiICk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0QWRkTWludXNUZXJtU3VidHJhY3Qo c2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBhZGRNaW51c1Rlcm1TdXBwbGVt ZW50YXJ5KHNlbGYsIEV4cEluZm8pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9j YWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQWRkTWludXNUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQo c2VsZiwNCj4gPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEV4cEluZm8pDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzE0LCBzZWxmLlJVTEVfYWRkTWludXNUZXJt U3VwcGxlbWVudGFyeSkNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjU5Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5w dXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFy c2VyLlRfXzExXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50 YXhQYXJzZXIuQWRkTWludXNUZXJtcEFkZENvbnRleHQoc2VsZiwNCj4gPiBsb2NhbGN0eCkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU5Mg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX18xMSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1OTMNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5tdWx0ZGl2bW9kVGVybShFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4 UGFyc2VyLk5lZ2F0aXZlXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHggPSBW ZnJTeW50YXhQYXJzZXIuQWRkTWludXNUZXJtU3VidHJhY3RDb250ZXh0KHNlbGYsDQo+ID4gbG9j YWxjdHgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgMikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1OTQNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTmVnYXRp dmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTk1DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYubXVsdGRpdm1vZFRlcm0oRXhwSW5mbykNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24g YXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCBy ZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgTXVsdGRpdm1vZFRlcm1Db250ZXh0 KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+ IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZXMgPSBbXQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBjYXN0VGVybShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5D YXN0VGVybUNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBtdWx0ZGl2bW9kVGVybVN1cHBsZW1lbnRhcnkoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBh cnNlci5NdWx0ZGl2bW9kVGVybVN1cHBsZW1lbnRhcnlDDQo+ID4gb250ZXh0KQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+ DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuTXVsdGRpdm1vZFRl cm1TdXBwbGVtZW50YXJ5Q28NCj4gPiBudGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfbXVsdGRpdm1vZFRlcm0NCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRy ZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAi dmlzaXRNdWx0ZGl2bW9kVGVybSIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRNdWx0ZGl2bW9kVGVybShzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hp bGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgZGVmIG11bHRkaXZtb2RUZXJtKHNlbGYsIEV4cEluZm8pOg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuTXVs dGRpdm1vZFRlcm1Db250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlLCBFeHBJ bmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDMxNiwgc2Vs Zi5SVUxFX211bHRkaXZtb2RUZXJtKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMg VG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjU5OA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuY2FzdFRlcm0oRXhw SW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYwMg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgd2hp bGUgKCgoX2xhKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgX2xhKSAmICgoMSA8PA0KPiA+IFZm clN5bnRheFBhcnNlci5UX18xMikgfCAoMSA8PCBWZnJTeW50YXhQYXJzZXIuVF9fMTMpIHwgKDEg PDwNCj4gPiBWZnJTeW50YXhQYXJzZXIuU2xhc2gpKSkgIT0gMCk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTk5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYubXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50YXJ5KEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjA0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEg PSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0 IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2Fs Y3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0 dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNz IE11bHRkaXZtb2RUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg cGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEs IEV4cEluZm89Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhw YXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIg PSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlcyA9IFtdDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfbXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50YXJ5DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgY29weUZyb20oc2Vs ZiwgY3R4OlBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigp LmNvcHlGcm9tKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBjdHgu RXhwSW5mbw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZXMgPSBjdHguTm9kZXMNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MNCj4g PiBNdWx0ZGl2bW9kVGVybURpdkNvbnRleHQoTXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50YXJ5Q29u dGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg cGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOiAjIGFjdHVhbGx5IGENCj4gPiBWZnJTeW50 YXhQYXJzZXIuTXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dA0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyc2VyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuY29weUZyb20oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFNs YXNoKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5TbGFzaCwgMCkNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBjYXN0VGVybShz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5DYXN0VGVybUNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJz ZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9y LCAidmlzaXRNdWx0ZGl2bW9kVGVybURpdiIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRNdWx0ZGl2bW9kVGVybURpdihzZWxmKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgY2xhc3MNCj4gPiBNdWx0ZGl2bW9kVGVybU11bENvbnRleHQoTXVsdGRpdm1vZFRlcm1TdXBw bGVtZW50YXJ5Q29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19p bml0X18oc2VsZiwgcGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOiAjIGFjdHVhbGx5IGEN Cj4gPiBWZnJTeW50YXhQYXJzZXIuTXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dA0K PiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyc2VyKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuY29weUZyb20oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIGNhc3RUZXJtKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0K PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkNhc3RUZXJtQ29udGV4 dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2Vw dChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdE11bHRkaXZtb2RUZXJtTXVsIiApOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdE11bHRkaXZtb2RUZXJtTXVs KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcw0KPiA+IE11bHRkaXZtb2RUZXJtTW9kdWxvQ29u dGV4dChNdWx0ZGl2bW9kVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIGN0eDpQYXJzZXJSdWxl Q29udGV4dCk6ICMgYWN0dWFsbHkgYQ0KPiA+IFZmclN5bnRheFBhcnNlci5NdWx0ZGl2bW9kVGVy bVN1cHBsZW1lbnRhcnlDb250ZXh0DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2lu aXRfXyhwYXJzZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5jb3B5RnJvbShjdHgpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgY2FzdFRlcm0oc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuQ2FzdFRlcm1Db250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0TXVsdGRp dm1vZFRlcm1Nb2R1bG8iICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0TXVsdGRpdm1vZFRlcm1Nb2R1bG8oc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAg ICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENo aWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGRlZiBtdWx0ZGl2bW9kVGVybVN1cHBsZW1lbnRhcnkoc2VsZiwgRXhwSW5mbyk6DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9DQo+IFZmclN5bnRheFBhcnNl ci5NdWx0ZGl2bW9kVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KHNlbGYsDQo+ID4gc2VsZi5fY3R4 LCBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUo bG9jYWxjdHgsIDMxOCwNCj4gc2VsZi5SVUxFX211bHRkaXZtb2RUZXJtU3VwcGxlbWVudGFyeSkN Cj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjYxMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlRfXzEyXToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuTXVsdGRp dm1vZFRlcm1NdWxDb250ZXh0KHNlbGYsDQo+ID4gbG9jYWxjdHgpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MDUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fMTIpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNjA2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuY2Fz dFRlcm0oRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4g KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5TbGFzaF06DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLk11bHRkaXZt b2RUZXJtRGl2Q29udGV4dChzZWxmLA0KPiBsb2NhbGN0eCkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjYwNw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5TbGFzaCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI2MDgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5jYXN0VGVy bShFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlRfXzEzXToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuTXVsdGRpdm1vZFRl cm1Nb2R1bG9Db250ZXh0KHNlbGYsDQo+ID4gbG9jYWxjdHgpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMykNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MDkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fMTMpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNjEwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuY2FzdFRl cm0oRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxl QWx0RXhjZXB0aW9uKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQg UmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1 cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3Mg Q2FzdFRlcm1Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29u dGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRl KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuTm9kZXMgPSBbXQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cElu Zm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhdG9tVGVybShzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5BdG9tVGVybUNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBjYXN0VGVybVN1YihzZWxmLCBpOmludD1Ob25lKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2Vy LkNhc3RUZXJtU3ViQ29udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLkNhc3RUZXJtU3ViQ29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfY2FzdFRlcm0NCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRy ZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAi dmlzaXRDYXN0VGVybSIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDYXN0VGVybShzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgZGVmIGNhc3RUZXJtKHNlbGYsIEV4cEluZm8pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQ2FzdFRlcm1Db250ZXh0KHNlbGYs IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwNCj4gPiBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDMyMCwgc2VsZi5SVUxFX2Nhc3RUZXJtKQ0KPiA+DQo+ ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYxNg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIF9hbHQgPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYu X2lucHV0LDIxOCxzZWxmLl9jdHgpDQo+ID4NCj4gPiArICAgICAgICAgICAgd2hpbGUgX2FsdCE9 MiBhbmQgX2FsdCE9QVROLklOVkFMSURfQUxUX05VTUJFUjoNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgaWYgX2FsdD09MToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNjEzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLmNhc3RUZXJtU3Vi KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MTgNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIF9hbHQgPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYu X2lucHV0LDIxOCxzZWxmLl9jdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI2MTkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmF0b21UZXJtKEV4 cEluZm8pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMg cmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkN Cj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5l eGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgQ2FzdFRlcm1TdWJDb250ZXh0KFBhcnNl clJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9r aW5nU3RhdGU6aW50PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNl ciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuQ2FzdFR5cGUgPSAweEZGDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVu UGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBCb29sZWFuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5Cb29sZWFuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIFVpbnQ2NChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVWludDY0LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIFVpbnQzMihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVWludDMyLCAwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIFVpbnQxNihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVWludDE2LCAwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFVpbnQ4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VaW50OCwgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2Nhc3RUZXJtU3Vi DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6 UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlz aXRvciwgInZpc2l0Q2FzdFRlcm1TdWIiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0Q2FzdFRlcm1TdWIoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAg ICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENo aWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgIGRlZiBjYXN0VGVybVN1YihzZWxmKToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkNhc3RUZXJtU3ViQ29u dGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxm LmVudGVyUnVsZShsb2NhbGN0eCwgMzIyLCBzZWxmLlJVTEVfY2FzdFRlcm1TdWIpDQo+ID4NCj4g PiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0 cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjIxDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjIyDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xh ID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBub3QoKCgoKF9s YSAtIDgwKSkgJiB+MHgzZikgPT0gMCBhbmQgKCgxIDw8IChfbGEgLSA4MCkpICYgKCgxIDw8DQo+ ID4gKFZmclN5bnRheFBhcnNlci5Cb29sZWFuIC0gODApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJz ZXIuVWludDY0IC0gODApKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5VaW50MzIgLSA4 MCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5VaW50MTYgLSA4MCkpIHwgKDEgPDwNCj4gPiAo VmZyU3ludGF4UGFyc2VyLlVpbnQ4IC0gODApKSkpICE9IDApKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVySW5saW5lKHNlbGYpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZXBvcnRNYXRjaChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmNv bnN1bWUoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjIzDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4g Pg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0K PiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4g KyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkN Cj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBjbGFzcyBBdG9tVGVybUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQp Og0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNl ciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9 LTEsIEV4cEluZm89Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRf XyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJz ZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlcyA9IFtdDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIHZmckV4cHJlc3Npb25DYXRlbmF0ZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckV4 cHJlc3Npb25DYXRlbmF0ZUNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiB2ZnJFeHByZXNzaW9uTWF0Y2goc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5WZnJFeHByZXNzaW9uTWF0Y2hDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyRXhwcmVzc2lvbk1hdGNoMihzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLlZmckV4cHJlc3Npb25NYXRjaDJDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyRXhwcmVzc2lvblBhcmVuKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVzc2lvblBhcmVuQ29udGV4dCwwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmckV4cHJlc3Npb25CdWls ZEluRnVuY3Rpb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uQnVp bGRJbkZ1bmN0aW9uQ29udGUNCj4gPiB4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIHZmckV4cHJlc3Npb25Db25zdGFudChzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmckV4cHJlc3Npb25Db25zdGFudENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJFeHByZXNzaW9uVW5hcnlPcChzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckV4cHJlc3Npb25VbmFyeU9wQ29udGV4dCwwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmckV4cHJlc3Npb25U ZXJuYXJ5T3Aoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uVGVybmFy eU9wQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIHZmckV4cHJlc3Npb25NYXAoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu DQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJFeHByZXNz aW9uTWFwQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIE5PVChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuTk9ULCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIGF0b21UZXJtKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkF0b21UZXJtQ29udGV4dCww KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJ bmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2Vy LlJVTEVfYXRvbVRlcm0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQo c2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRBdG9tVGVybSIgKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRBdG9tVGVybShzZWxmKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIGF0b21UZXJtKHNlbGYsIEV4cEluZm8pOg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu QXRvbVRlcm1Db250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwNCj4gPiBFeHBJbmZv KQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDMyNCwgc2VsZi5S VUxFX2F0b21UZXJtKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNjM2DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1 dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJz ZXIuQ2F0ZW5hdGVdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy NjI1DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyRXhwcmVzc2lvbkNhdGVuYXRl KEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAg ICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTWF0Y2hdOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjI2DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYudmZyRXhwcmVzc2lvbk1hdGNoKEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJT eW50YXhQYXJzZXIuTWF0Y2gyXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjYyNw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmckV4cHJlc3Npb25N YXRjaDIoRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4g KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5PcGVuUGFyZW5dOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDQp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjI4DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYudmZyRXhwcmVzc2lvblBhcmVuKEV4cEluZm8pDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuRHVwLCBWZnJTeW50YXhQYXJzZXIuVmFyRXFWYWwsDQo+ID4g VmZyU3ludGF4UGFyc2VyLklkRXFWYWwsIFZmclN5bnRheFBhcnNlci5JZEVxSWQsIFZmclN5bnRh eFBhcnNlci5JZEVxVmFsTGlzdCwNCj4gPiBWZnJTeW50YXhQYXJzZXIuUXVlc3Rpb25SZWYsIFZm clN5bnRheFBhcnNlci5SdWxlUmVmLA0KPiA+IFZmclN5bnRheFBhcnNlci5TdHJpbmdSZWYsIFZm clN5bnRheFBhcnNlci5QdXNoVGhpcywNCj4gVmZyU3ludGF4UGFyc2VyLlNlY3VyaXR5LA0KPiA+ IFZmclN5bnRheFBhcnNlci5HZXRdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNjI5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyRXhwcmVzc2lv bkJ1aWxkSW5GdW5jdGlvbihFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNz DQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlRy dWVTeW1ib2wsDQo+ID4gVmZyU3ludGF4UGFyc2VyLkZhbHNlU3ltYm9sLCBWZnJTeW50YXhQYXJz ZXIuT25lLCBWZnJTeW50YXhQYXJzZXIuT25lcywNCj4gPiBWZnJTeW50YXhQYXJzZXIuWmVybywg VmZyU3ludGF4UGFyc2VyLlVuZGVmaW5lZCwgVmZyU3ludGF4UGFyc2VyLlZlcnNpb24sDQo+ID4g VmZyU3ludGF4UGFyc2VyLk51bWJlcl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI2MzANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJFeHByZXNz aW9uQ29uc3RhbnQoRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5MZW5ndGgs IFZmclN5bnRheFBhcnNlci5TZXQsDQo+ID4gVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VOb3QsIFZm clN5bnRheFBhcnNlci5Cb29sVmFsLA0KPiA+IFZmclN5bnRheFBhcnNlci5TdHJpbmdWYWwsIFZm clN5bnRheFBhcnNlci5VbkludFZhbCwgVmZyU3ludGF4UGFyc2VyLlRvVXBwZXIsDQo+ID4gVmZy U3ludGF4UGFyc2VyLlRvTG93ZXIsIFZmclN5bnRheFBhcnNlci5RdWVzdGlvblJlZlZhbCwNCj4g PiBWZnJTeW50YXhQYXJzZXIuU3RyaW5nUmVmVmFsXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA3KQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjYzMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZm ckV4cHJlc3Npb25VbmFyeU9wKEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBh c3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIu Q29uZCwgVmZyU3ludGF4UGFyc2VyLkZpbmQsDQo+ID4gVmZyU3ludGF4UGFyc2VyLk1pZCwgVmZy U3ludGF4UGFyc2VyLlRvaywgVmZyU3ludGF4UGFyc2VyLlNwYW5dOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDgpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjMyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYudmZyRXhwcmVzc2lvblRlcm5hcnlPcChFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3lu dGF4UGFyc2VyLk1hcF06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgOSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI2MzMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJFeHByZXNzaW9uTWFwKEV4 cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAg ICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTk9UXToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxMCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MzQNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTk9UKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjYzNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmF0 b21UZXJtKEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1Zp YWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhj ZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAg cmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNs YXNzIFZmckV4cHJlc3Npb25DYXRlbmF0ZUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFy ZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4 cEluZm89Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJl bnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBw YXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5Ob2RlcyA9IFtdDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5FeHBJbmZvID0gRXhwSW5mbw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENh dGVuYXRlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5DYXRlbmF0ZSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNlbGYsIGk6aW50 PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnRleA0KPiA+IHQpDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJT dGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udGV4dCwNCj4gPiBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9z ZVBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRl eChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJV TEVfdmZyRXhwcmVzc2lvbkNhdGVuYXRlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyRXhwcmVzc2lvbkNhdGVuYXRl IiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckV4 cHJlc3Npb25DYXRlbmF0ZShzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgZGVmIHZmckV4cHJlc3Npb25DYXRlbmF0ZShzZWxmLCBFeHBJbmZvKToNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckV4cHJl c3Npb25DYXRlbmF0ZUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUsIEV4 cEluZm8pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzI2LCBz ZWxmLlJVTEVfdmZyRXhwcmVzc2lvbkNhdGVuYXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYzOA0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNhdGVuYXRlKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNjM5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNjQwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHBy ZXNzaW9uU3ViKGxvY2FsY3R4Lk5vZGVzKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNjQxDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NDINCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIobG9jYWxjdHgu Tm9kZXMpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NDMNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiA+ DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiAr ICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGNsYXNzIFZmckV4cHJlc3Npb25NYXRjaENvbnRleHQoUGFyc2VyUnVs ZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNl bGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdT dGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIo KS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8g PSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlcyA9IFtdDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIE1hdGNoKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5NYXRjaCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNl bGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnRleA0K PiA+IHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udGV4dCwNCj4gPiBpKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21t YSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5DbG9zZVBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdl dFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4 UGFyc2VyLlJVTEVfdmZyRXhwcmVzc2lvbk1hdGNoDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyRXhwcmVzc2lvbk1h dGNoIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZm ckV4cHJlc3Npb25NYXRjaChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgZGVmIHZmckV4cHJlc3Npb25NYXRjaChzZWxmLCBFeHBJbmZvKToNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckV4cHJlc3Np b25NYXRjaENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUsIEV4cEluZm8p DQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzI4LCBzZWxmLlJV TEVfdmZyRXhwcmVzc2lvbk1hdGNoKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY0NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk1hdGNoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNjQ2DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjQ3 DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKGxv Y2FsY3R4Lk5vZGVzKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjQ4DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NDkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIobG9jYWxjdHguTm9kZXMpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NTANCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAg ICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5h bGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAg ICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGNsYXNzIFZmckV4cHJlc3Npb25NYXRjaDJDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs IHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0x LCBFeHBJbmZvPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18o cGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2Vy ID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZXMgPSBbXQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBNYXRjaDIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLk1hdGNoMiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNlbGYsIGk6aW50 PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnRleA0KPiA+IHQpDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJT dGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udGV4dCwNCj4gPiBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgZ3VpZERlZmluaXRpb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5H dWlkRGVmaW5pdGlvbkNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyRXhwcmVzc2lvbk1h dGNoMg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNp dG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIo IHZpc2l0b3IsICJ2aXNpdFZmckV4cHJlc3Npb25NYXRjaDIiICk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyRXhwcmVzc2lvbk1hdGNoMihzZWxmKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmckV4cHJlc3Npb25N YXRjaDIoc2VsZiwgRXhwSW5mbyk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2Nh bGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uTWF0Y2gyQ29udGV4dChzZWxmLCBz ZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSwgRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzMzAsIHNlbGYuUlVMRV92ZnJFeHByZXNzaW9uTWF0Y2gy KQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50 ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjY1Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk1hdGNoMikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY1Mw0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY1NA0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yihsb2NhbGN0eC5Ob2RlcykNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY1NQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNjU2DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1l bnRFeHByZXNzaW9uU3ViKGxvY2FsY3R4Lk5vZGVzKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNjU3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NTgN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmd1aWREZWZpbml0aW9uKCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY1OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICBleGNl cHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9j YWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICBy ZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xh c3MgVmZyRXhwcmVzc2lvblBhcmVuQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6 UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5m bz1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwg aW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNl cg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLk5vZGVzID0gW10NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4 cEluZm8gPSBFeHBJbmZvDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgT3BlblBh cmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250ZXh0LA0KPiA+IDApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu Q2xvc2VQYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxl SW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNl ci5SVUxFX3ZmckV4cHJlc3Npb25QYXJlbg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckV4cHJlc3Npb25QYXJlbiIg KToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJFeHBy ZXNzaW9uUGFyZW4oc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiB2ZnJFeHByZXNzaW9uUGFyZW4oc2VsZiwgRXhwSW5mbyk6DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uUGFy ZW5Db250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDMzMiwgc2VsZi5SVUxFX3Zm ckV4cHJlc3Npb25QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI2NjENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI2NjINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJl c3Npb25TdWIobG9jYWxjdHguTm9kZXMpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI2NjMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0 aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmckV4cHJlc3Npb25CdWls ZEluRnVuY3Rpb25Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0 YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuTm9kZSA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBF eHBJbmZvDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZHVwRXhwKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLkR1cEV4cENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiB2YXJlcXZhbEV4cChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LlZhcmVxdmFsRXhwQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIGlkZXF2YWxFeHAoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5JZGVxdmFs RXhwQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIGlkZXFpZEV4cChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5JZGVxaWRFeHBDb250ZXh0LDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgaWRlcXZhbGxp c3RFeHAoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5JZGVxdmFsbGlzdEV4cENvbnRleHQsMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBxdWVzdGlvbnJl ZjFFeHAoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5RdWVzdGlvbnJlZjFFeHBDb250ZXh0LDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgcnVsZXJlZkV4 cChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5SdWxlcmVmRXhwQ29udGV4dCwwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHN0cmluZ3JlZjFFeHAoc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5TdHJpbmdyZWYxRXhwQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHB1c2h0aGlzRXhwKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuUHVzaHRoaXNFeHBDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgc2VjdXJpdHlFeHAoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5TZWN1cml0eUV4cENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBnZXRFeHAoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuR2V0RXhwQ29u dGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdl dFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4 UGFyc2VyLlJVTEVfdmZyRXhwcmVzc2lvbkJ1aWxkSW5GdW5jdGlvbg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3Ip Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckV4 cHJlc3Npb25CdWlsZEluRnVuY3Rpb24iICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0VmZyRXhwcmVzc2lvbkJ1aWxkSW5GdW5jdGlvbihzZWxmKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmckV4cHJlc3Npb25CdWls ZEluRnVuY3Rpb24oc2VsZiwgRXhwSW5mbyk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uQnVpbGRJbkZ1bmN0aW9u Q29udGV4dChzZWxmLA0KPiA+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgRXhwSW5mbykNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzMzQsIHNlbGYuUlVMRV92ZnJF eHByZXNzaW9uQnVpbGRJbkZ1bmN0aW9uKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjc2DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgdG9rZW4g PSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtW ZnJTeW50YXhQYXJzZXIuRHVwXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjY2NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmR1cEV4cChFeHBJbmZv KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAg ZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlZhckVxVmFsXToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY2Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnZhcmVxdmFsRXhwKEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBh c3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIu SWRFcVZhbF06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChs b2NhbGN0eCwgMykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NjcN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5pZGVxdmFsRXhwKEV4cEluZm8pDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRv a2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSWRFcUlkXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjY2OA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmlk ZXFpZEV4cChFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4g PiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLklkRXFWYWxMaXN0 XToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCA1KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY2OQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLmlkZXF2YWxsaXN0RXhwKEV4cEluZm8pDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuUXVlc3Rpb25SZWZdOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDYpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNjcwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu cXVlc3Rpb25yZWYxRXhwKEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MN Cj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuUnVs ZVJlZl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgNykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NzENCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5ydWxlcmVmRXhwKEV4cEluZm8pDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuU3RyaW5nUmVmXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjY3Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 cmluZ3JlZjFFeHAoRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5QdXNoVGhp c106DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0 eCwgOSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NzMNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5wdXNodGhpc0V4cChFeHBJbmZvKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLlNlY3VyaXR5XToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxMCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI2NzQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zZWN1 cml0eUV4cChFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4g PiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkdldF06DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMTEpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjc1DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuZ2V0RXhwKEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiAr ICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGNsYXNzIER1cEV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg cGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEs IEV4cEluZm89Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhw YXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIg PSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9EVVBfT1Ap DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIER1cChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRHVwLCAwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZHVwRXhwDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlz aXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0 RHVwRXhwIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dER1cEV4cChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVm IGR1cEV4cChzZWxmLCBFeHBJbmZvKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxv Y2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkR1cEV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBz ZWxmLnN0YXRlLA0KPiA+IEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVs ZShsb2NhbGN0eCwgMzM2LCBzZWxmLlJVTEVfZHVwRXhwKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5 Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY3OA0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkR1cCkNCj4gPg0KPiA+ICsgICAgICAg IGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxs eToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBjbGFzcyBWYXJlcXZhbEV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBh cnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89 Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGlu dm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXIN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuVk4g PSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJ bmZvDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgVmFyRXFWYWwoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlZhckVxVmFsLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFZhcihzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuVmFyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5QYXJl bihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBFcXVhbChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRXF1YWwsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgTGVzc0VxdWFsKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5MZXNzRXF1YWwsIDApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgTGVzcyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTGVzcywgMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBHcmVhdGVyRXF1YWwoc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkdyZWF0ZXJF cXVhbCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBHcmVhdGVyKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5HcmVhdGVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1 bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFy c2VyLlJVTEVfdmFyZXF2YWxFeHANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBh Y2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWYXJlcXZhbEV4cCIgKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWYXJlcXZhbEV4cChzZWxmKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZhcmVxdmFsRXhwKHNl bGYsIEV4cEluZm8pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBW ZnJTeW50YXhQYXJzZXIuVmFyZXF2YWxFeHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5z dGF0ZSwNCj4gPiBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9j YWxjdHgsIDMzOCwgc2VsZi5SVUxFX3ZhcmVxdmFsRXhwKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5 Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY4MA0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlZhckVxVmFsKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjgxDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuVmFyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNjgyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjgzDQo+ ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguVk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2ODQNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVu KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjk1DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAg ICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHRv a2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRXF1YWxdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjY4NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5FcXVhbCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI2ODYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4g PiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkxlc3NFcXVhbF06 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjg3DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkxlc3NFcXVhbCkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2ODgNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLkxlc3NdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjY4OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5MZXNzKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjY5MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAg ICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuR3JlYXRlckVxdWFsXToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2OTENCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuR3JlYXRlckVxdWFsKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY5Mg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGlu IFtWZnJTeW50YXhQYXJzZXIuR3JlYXRlcl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNjkzDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkdyZWF0ZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNjk0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4g KyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlh YmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNl cHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9j YWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICBy ZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xh c3MgSWRlcXZhbEV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1 bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5n U3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuSSA9IE5vbmUg IyBUb2tlbg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVDb250 ZXh0LA0KPiA+IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgSWRFcVZhbChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuSWRFcVZhbCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBFcXVhbChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRXF1YWwsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgTGVzc0VxdWFsKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5MZXNzRXF1YWwsIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTGVzcyhzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTGVzcywgMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBHcmVhdGVyRXF1YWwoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkdyZWF0ZXJFcXVhbCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBHcmVh dGVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5HcmVhdGVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZy U3ludGF4UGFyc2VyLlJVTEVfaWRlcXZhbEV4cA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdElkZXF2YWxFeHAiICk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0SWRlcXZhbEV4cChz ZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIGlkZXF2YWxF eHAoc2VsZiwgRXhwSW5mbyk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0 eCA9IFZmclN5bnRheFBhcnNlci5JZGVxdmFsRXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNl bGYuc3RhdGUsDQo+ID4gRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxl KGxvY2FsY3R4LCAzNDAsIHNlbGYuUlVMRV9pZGVxdmFsRXhwKQ0KPiA+DQo+ID4gKyAgICAgICAg dHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY5Nw0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGxvY2FsY3R4LkkgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5JZEVxVmFs KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjk4DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNzA5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9p bnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQ YXJzZXIuRXF1YWxdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY5 OQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5F cXVhbCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MDANCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxp ZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkxlc3NFcXVhbF06DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzAxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkxlc3NFcXVhbCkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI3MDINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBw YXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2Vy Lkxlc3NdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcwMw0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5MZXNzKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcwNA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuR3JlYXRlckVxdWFsXToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI3MDUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuR3JlYXRlckVxdWFsKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjcwNg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBh c3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIu R3JlYXRlcl06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzA3DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkdyZWF0 ZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzA4DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNl bGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNl cHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0g cmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNl bGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zlcihz ZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgSWRlcWlkRXhwQ29udGV4 dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg X19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4g PiBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuRXhwSW5mbyA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25l DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5JID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5FID0gTm9uZSAjIFRva2VuDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5MRSA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTCA9IE5v bmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuQkUgPSBOb25lICMgVG9rZW4N Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkIgPSBOb25lICMgVG9rZW4NCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgdmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKHNlbGYsIGk6aW50PU5vbmUpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQ YXJzZXIuVmZyUXVlc3Rpb25EYXRhRmllbGROYW1lQ29udGV4DQo+ID4gdCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPg0K PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uRGF0 YUZpZWxkTmFtZUNvbnRleHQsDQo+ID4gaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBJZEVxSWQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLklkRXFJZCwgMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBFcXVhbChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRXF1YWwsIDApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTGVzc0VxdWFsKHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5MZXNzRXF1YWws IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTGVzcyhzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTGVz cywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBHcmVhdGVyRXF1YWwoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkdyZWF0ZXJFcXVhbCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBHcmVhdGVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5HcmVhdGVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfaWRlcWlkRXhwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0SWRlcWlkRXhwIiAp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdElkZXFpZEV4 cChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIGlkZXFp ZEV4cChzZWxmLCBFeHBJbmZvKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2Fs Y3R4ID0gVmZyU3ludGF4UGFyc2VyLklkZXFpZEV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBz ZWxmLnN0YXRlLA0KPiA+IEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVs ZShsb2NhbGN0eCwgMzQyLCBzZWxmLlJVTEVfaWRlcWlkRXhwKQ0KPiA+DQo+ID4gKyAgICAgICAg dHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcxMQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGxvY2FsY3R4LkkgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5JZEVxSWQp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MTINCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI3MjMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lu cHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBh cnNlci5FcXVhbF06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzEz DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LkUgPSBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5FcXVhbCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI3MTQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJRdWVzdGlvbkRhdGFGaWVs ZE5hbWUoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkxlc3NFcXVhbF06DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzE1DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIGxvY2FsY3R4LkxFID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTGVzc0VxdWFs KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcxNg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgpDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuTGVzc106DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNzE3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LkwgPSBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5MZXNzKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjcxOA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclF1 ZXN0aW9uRGF0YUZpZWxkTmFtZSgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuR3JlYXRl ckVxdWFsXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MTkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguQkUgPSBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5HcmVhdGVyRXF1YWwpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNzIwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25EYXRh RmllbGROYW1lKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5HcmVhdGVyXToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MjENCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgbG9jYWxjdHguQiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkdyZWF0ZXIp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzIyDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKCkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24g YXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCBy ZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgSWRlcXZhbGxpc3RFeHBDb250ZXh0 KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+ IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vbmUN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgSWRFcVZhbExpc3Qoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLklkRXFWYWxMaXN0 LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclF1ZXN0aW9uRGF0YUZp ZWxkTmFtZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uRGF0YUZpZWxk TmFtZUNvbnRleHQsDQo+ID4gMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBFcXVhbChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRXF1YWwsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZm clN5bnRheFBhcnNlci5SVUxFX2lkZXF2YWxsaXN0RXhwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0SWRlcXZhbGxpc3RF eHAiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0SWRl cXZhbGxpc3RFeHAoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGRlZiBpZGVxdmFsbGlzdEV4cChzZWxmLCBFeHBJbmZvKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLklkZXF2YWxsaXN0RXhwQ29udGV4 dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUsDQo+ID4gRXhwSW5mbykNCj4gPg0KPiA+ ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzNDQsIHNlbGYuUlVMRV9pZGVxdmFs bGlzdEV4cCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4g Pg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3 MjUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5JZEVx VmFsTGlzdCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcyNg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKCkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcyNw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVxdWFsKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNzI5DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICB3aGlsZSBUcnVlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjcyOA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNzMxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1 dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBub3QgKF9sYT09VmZyU3ludGF4 UGFyc2VyLk51bWJlcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBicmVhaw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFz IHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUp DQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu ZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmclF1ZXN0aW9uRGF0YUZpZWxkTmFt ZUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5v bmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1 cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5RSWQg PSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTWFz ayA9IDANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlZhcklkU3RyID0gJycNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLkxpbmUgPSBOb25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJRdWVzdGlvbkRhdGFGaWVsZE5h bWUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBjb3B5RnJv bShzZWxmLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1 cGVyKCkuY29weUZyb20oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuUUlkID0gY3R4 LlFJZA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTWFzayA9IGN0eC5NYXNrDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5WYXJJZFN0ciA9IGN0eC5WYXJJZFN0cg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuTGluZSA9IGN0eC5MaW5lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzDQo+ID4NCj4gVmZyUXVlc3Rpb25EYXRhRmll bGROYW1lUnVsZTJDb250ZXh0KFZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZUNvbnRleHQpDQo+ID4g Og0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNl ciwgY3R4OlBhcnNlclJ1bGVDb250ZXh0KTogIyBhY3R1YWxseSBhDQo+ID4gVmZyU3ludGF4UGFy c2VyLlZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZUNvbnRleHQNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcnNlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlNO MiA9IE5vbmUgIyBUb2tlbg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuY29weUZyb20oY3R4 KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQo+ID4NCj4gPiArICAgICAgICBkZWYgRG90KHNl bGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBh cnNlci5Eb3QpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRvdCwgaSkNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBhcnJheU5hbWUoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5BcnJh eU5hbWVDb250ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuQXJyYXlOYW1lQ29udGV4dCxpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3Ip Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclF1 ZXN0aW9uRGF0YUZpZWxkTmFtZVJ1bGUyIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdFZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZVJ1bGUyKHNlbGYpDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBjbGFzcw0KPiA+DQo+IFZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZVJ1bGUx Q29udGV4dChWZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVDb250ZXh0KQ0KPiA+IDoNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIGN0eDpQYXJz ZXJSdWxlQ29udGV4dCk6ICMgYWN0dWFsbHkgYQ0KPiA+IFZmclN5bnRheFBhcnNlci5WZnJRdWVz dGlvbkRhdGFGaWVsZE5hbWVDb250ZXh0DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5f X2luaXRfXyhwYXJzZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5TTjEgPSBOb25lICMg VG9rZW4NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkkgPSBOb25lICMgVG9rZW4NCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLmNvcHlGcm9tKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBPcGVuQnJhY2tldChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQsIDApDQo+ID4N Cj4gPiArICAgICAgICBkZWYgQ2xvc2VCcmFja2V0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQsIDAp DQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5n SWRlbnRpZmllciwgMCkNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51 bWJlciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwg dmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNh dHRyKCB2aXNpdG9yLCAidmlzaXRWZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVSdWxlMSIgKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJRdWVzdGlvbkRh dGFGaWVsZE5hbWVSdWxlMShzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZm clF1ZXN0aW9uRGF0YUZpZWxkTmFtZShzZWxmKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZUNv bnRleHQoc2VsZiwNCj4gPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzQ2LCBzZWxmLlJVTEVfdmZyUXVlc3Rpb25EYXRh RmllbGROYW1lKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0K PiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyNzQ1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYp DQo+ID4NCj4gPiArICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGlj dChzZWxmLl9pbnB1dCwyMjYsc2VsZi5fY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGxh XyA9PSAxOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eCA9DQo+ID4gVmZyU3lu dGF4UGFyc2VyLlZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZVJ1bGUxQ29udGV4dChzZWxmLCBsb2Nh bGN0eCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjczMw0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5TTjEgPSBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjczNA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5PcGVuQnJhY2tldCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI3MzUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguSSA9IHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI3MzYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBw YXNzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiBsYV8gPT0gMjoNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHggPQ0KPiA+IFZmclN5bnRheFBhcnNlci5W ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVSdWxlMkNvbnRleHQoc2VsZiwgbG9jYWxjdHgpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MzcNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgbG9jYWxjdHguU04yID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3Ry aW5nSWRlbnRpZmllcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3 NDINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkRvdDoNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzM4DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Eb3QpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjczOQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgc2VsZi5hcnJheU5hbWUoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NDQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5 Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAg ICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg IGNsYXNzIEFycmF5TmFtZUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNl clJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5TdWJTdHIgPSAnJw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuU3ViU3Ry WiA9ICcnDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu U3RyaW5nSWRlbnRpZmllciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBP cGVuQnJhY2tldChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgQ2xvc2VCcmFja2V0KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQsIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIs IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9hcnJh eU5hbWUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlz aXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRy KCB2aXNpdG9yLCAidmlzaXRBcnJheU5hbWUiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0QXJyYXlOYW1lKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRD aGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgYXJyYXlOYW1lKHNlbGYpOg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQXJyYXlOYW1lQ29udGV4 dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgMzQ4LCBzZWxmLlJVTEVfYXJyYXlOYW1lKQ0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc0Nw0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NTENCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBz ZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4 UGFyc2VyLk9wZW5CcmFja2V0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjc0OA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5PcGVuQnJhY2tldCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI3NDkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI3NTANCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAg ICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgIGNsYXNzIFF1ZXN0aW9ucmVmMUV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQp Og0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNl ciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9 LTEsIEV4cEluZm89Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRf XyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJz ZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9RVUVT VElPTl9SRUYxX09QKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cElu Zm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBRdWVzdGlvblJlZihzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuUXVlc3Rpb25SZWYsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgT3Bl blBhcmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJ ZGVudGlmaWVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdl dFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4 UGFyc2VyLlJVTEVfcXVlc3Rpb25yZWYxRXhwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0UXVlc3Rpb25yZWYxRXhwIiAp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFF1ZXN0aW9u cmVmMUV4cChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVm IHF1ZXN0aW9ucmVmMUV4cChzZWxmLCBFeHBJbmZvKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9ucmVmMUV4cENvbnRleHQo c2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUsIEV4cEluZm8pDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzUwLCBzZWxmLlJVTEVfcXVlc3Rpb25yZWYx RXhwKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc1Mw0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9u UmVmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzU0DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzU1DQo+ID4NCj4gPiArICAgICAgICAgICAg X2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBub3QoX2xh PT1WZnJTeW50YXhQYXJzZXIuTnVtYmVyIG9yDQo+ID4gX2xhPT1WZnJTeW50YXhQYXJzZXIuU3Ry aW5nSWRlbnRpZmllcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcklubGluZShzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0TWF0Y2goc2VsZikN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5jb25zdW1lKCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjc1Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQg UmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1 cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3Mg UnVsZXJlZkV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3Rh dGUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5Ob2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9SVUxFX1JFRl9PUCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgUnVsZVJlZihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUnVsZVJlZiwgMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IENsb3NlUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9ydWxlcmVmRXhwDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0UnVsZXJl ZkV4cCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRS dWxlcmVmRXhwKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBk ZWYgcnVsZXJlZkV4cChzZWxmLCBFeHBJbmZvKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlJ1bGVyZWZFeHBDb250ZXh0KHNlbGYsIHNl bGYuX2N0eCwgc2VsZi5zdGF0ZSwNCj4gPiBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi5lbnRlclJ1bGUobG9jYWxjdHgsIDM1Miwgc2VsZi5SVUxFX3J1bGVyZWZFeHApDQo+ID4NCj4g PiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0 KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzU4DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUnVsZVJlZikN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc1OQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc2MA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI3NjENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJl Y29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJu IGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFN0 cmluZ3JlZjFFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0 YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfU1RSSU5HX1JFRjFfT1ApDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIFN0cmluZ1JlZihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nUmVmLCAwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmLCBpOmludD1Ob25lKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIGkpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmLCBpOmludD1Ob25lKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikN Cj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgaSkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5n VG9rZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5OdW1iZXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVs ZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJz ZXIuUlVMRV9zdHJpbmdyZWYxRXhwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg YWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0U3RyaW5ncmVmMUV4cCIgKToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRTdHJpbmdyZWYxRXhwKHNl bGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgc3RyaW5ncmVm MUV4cChzZWxmLCBFeHBJbmZvKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2Fs Y3R4ID0gVmZyU3ludGF4UGFyc2VyLlN0cmluZ3JlZjFFeHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0 eCwNCj4gc2VsZi5zdGF0ZSwNCj4gPiBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5l bnRlclJ1bGUobG9jYWxjdHgsIDM1NCwgc2VsZi5SVUxFX3N0cmluZ3JlZjFFeHApDQo+ID4NCj4g PiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0 KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzYzDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nUmVm KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzY0DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzcwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgdG9rZW4gPSBz ZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJT eW50YXhQYXJzZXIuU3RyaW5nVG9rZW5dOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjc2NQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI3NjYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjc2Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5OdW1iZXIpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzY4 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNs b3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAg ICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTnVtYmVyXToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NjkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc3Mg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4g PiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAg ICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4N Cj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgY2xhc3MgUHVzaHRoaXNFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs IHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0x LCBFeHBJbmZvPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18o cGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2Vy ID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfVEhJU19P UCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgUHVzaFRoaXMoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlB1c2hUaGlzLCAw KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfcHVzaHRo aXNFeHANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlz aXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRy KCB2aXNpdG9yLCAidmlzaXRQdXNodGhpc0V4cCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRQdXNodGhpc0V4cChzZWxmKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHB1c2h0aGlzRXhwKHNlbGYsIEV4cEluZm8pOg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu UHVzaHRoaXNFeHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwNCj4gPiBFeHBJ bmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM1Niwgc2Vs Zi5SVUxFX3B1c2h0aGlzRXhwKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjc3NA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlB1c2hUaGlzKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJl Y29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJu IGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFNl Y3VyaXR5RXhwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0 ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLk5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX1NFQ1VSSVRZX09QKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBTZWN1cml0eShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VjdXJpdHksIDApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ3VpZERlZmluaXRpb24oc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9z ZVBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRl eChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJV TEVfc2VjdXJpdHlFeHANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQo c2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRTZWN1cml0eUV4cCIgKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRTZWN1cml0eUV4cChzZWxmKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHNlY3VyaXR5RXhwKHNlbGYsIEV4 cEluZm8pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50 YXhQYXJzZXIuU2VjdXJpdHlFeHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwN Cj4gPiBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDM1OCwgc2VsZi5SVUxFX3NlY3VyaXR5RXhwKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc3Ng0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlY3VyaXR5KQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNzc3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNzc4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5ndWlkRGVmaW5pdGlvbigpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NzkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAg ICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBm aW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4g KyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGNsYXNzIE51bWVyaWNWYXJTdG9yZVR5cGVDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0 KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJz ZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50 PS0xKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52 b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuVmFyVHlwZSA9IE5vbmUNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiBOdW1lcmljU2l6ZU9uZShzZWxmKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVP bmUsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTnVtZXJpY1NpemVUd28o c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLk51bWVyaWNTaXplVHdvLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIE51bWVyaWNTaXplRm91cihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVGb3VyLCAwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWVyaWNTaXplRWlnaHQoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy Lk51bWVyaWNTaXplRWlnaHQsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg Z2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50 YXhQYXJzZXIuUlVMRV9udW1lcmljVmFyU3RvcmVUeXBlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0TnVtZXJpY1ZhclN0 b3JlVHlwZSIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXROdW1lcmljVmFyU3RvcmVUeXBlKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihz ZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBkZWYgbnVtZXJpY1ZhclN0b3JlVHlwZShzZWxmKToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLk51bWVyaWNWYXJTdG9y ZVR5cGVDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM2MCwgc2VsZi5SVUxFX251bWVyaWNW YXJTdG9yZVR5cGUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBl DQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyNzgxDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBub3QoKCgoKF9sYSAtIDIzNykpICYgfjB4M2YpID09IDAg YW5kICgoMSA8PCAoX2xhIC0gMjM3KSkgJiAoKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLk51 bWVyaWNTaXplT25lIC0gMjM3KSkgfCAoMSA8PA0KPiA+IChWZnJTeW50YXhQYXJzZXIuTnVtZXJp Y1NpemVUd28gLSAyMzcpKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5OdW1lcmljU2l6 ZUZvdXIgLSAyMzcpKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5OdW1lcmljU2l6ZUVp Z2h0IC0gMjM3KSkpKSAhPSAwKSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcklubGluZShzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0TWF0Y2go c2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5jb25zdW1lKCkNCj4gPg0KPiA+ ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAg ICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0K PiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICBjbGFzcyBHZXRFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVu dDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJ bmZvPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50 LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFy c2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuQmFzZUluZm8gPSBFRklfVkFSU1RPUkVfSU5GTygpDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9HRVRfT1ApDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIEdldChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuR2V0LCAwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0b3JhZ2VWYXJJZChzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLlZmclN0b3JhZ2VWYXJJZENvbnRleHQsMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5D bG9zZVBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIEJpdFdpc2VP cihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuQml0V2lzZU9yLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIEZMQUdTKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBudW1lcmljVmFyU3RvcmVUeXBlKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuTnVt ZXJpY1ZhclN0b3JlVHlwZUNvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2dldEV4cA0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdEdldEV4cCIg KToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRHZXRFeHAo c2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBnZXRFeHAo c2VsZiwgRXhwSW5mbyk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5HZXRFeHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0 ZSwNCj4gPiBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxj dHgsIDM2Miwgc2VsZi5SVUxFX2dldEV4cCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0g MCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI3ODMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5HZXQpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3 ODQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVu UGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3ODUNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnZmclN0b3JhZ2VWYXJJZChsb2NhbGN0eC5CYXNlSW5mbywgRmFs c2UpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3OTANCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIF9s YT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI3ODYNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjc4Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5GTEFHUykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI3ODgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVF9fNSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3ODkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5udW1lcmljVmFyU3RvcmVUeXBlKCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc5 Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3Nl UGFyZW4pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMg cmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkN Cj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5l eGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVmZyRXhwcmVzc2lvbkNvbnN0YW50Q29u dGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwN Cj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBO b25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFRydWVTeW1ib2woc2VsZik6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlRydWVTeW1i b2wsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRmFsc2VTeW1ib2woc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkZhbHNlU3ltYm9sLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IE9uZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuT25lLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IE9uZXMoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk9uZXMsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgWmVybyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuWmVybywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBVbmRlZmluZWQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVuZGVmaW5lZCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBWZXJzaW9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5WZXJzaW9uLCAwKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyRXhwcmVzc2lv bkNvbnN0YW50DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYs IHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0VmZyRXhwcmVzc2lvbkNvbnN0YW50IiApOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckV4cHJlc3Npb25Db25zdGFu dChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmckV4 cHJlc3Npb25Db25zdGFudChzZWxmLCBFeHBJbmZvKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckV4cHJlc3Npb25Db25zdGFudENv bnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUsIEV4cEluZm8pDQo+ID4NCj4g PiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzY0LCBzZWxmLlJVTEVfdmZyRXhw cmVzc2lvbkNvbnN0YW50KQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4g dHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjc5NA0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEp DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgbm90KCgoKChfbGEgLSAyMDkpKSAmIH4weDNmKSA9 PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDIwOSkpICYgKCgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNl ci5UcnVlU3ltYm9sIC0gMjA5KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkZhbHNlU3ltYm9s IC0NCj4gPiAyMDkpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuT25lIC0gMjA5KSkgfCAoMSA8 PCAoVmZyU3ludGF4UGFyc2VyLk9uZXMgLQ0KPiAyMDkpKQ0KPiA+IHwgKDEgPDwgKFZmclN5bnRh eFBhcnNlci5aZXJvIC0gMjA5KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlVuZGVmaW5lZCAt DQo+IDIwOSkpDQo+ID4gfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlZlcnNpb24gLSAyMDkpKSB8 ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuTnVtYmVyIC0NCj4gPiAyMDkpKSkpICE9IDApKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVySW5saW5lKHNl bGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRNYXRjaChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLmNvbnN1bWUoKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0 aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2Vw dGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRF cnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl Y292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2Fs Y3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmckV4cHJl c3Npb25VbmFyeU9wQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVs ZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdT dGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLk5vZGVzID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9 IEV4cEluZm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBsZW5ndGhFeHAoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuTGVuZ3RoRXhwQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGJpdHdpc2Vub3RFeHAoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5CaXR3aXNlbm90RXhwQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHF1ZXN0aW9uMjNyZWZFeHAoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5RdWVzdGlvbjIzcmVmRXhwQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHN0cmluZ3JlZjJFeHAoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5TdHJpbmdyZWYyRXhwQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHRvYm9vbEV4cChzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5Ub2Jvb2xFeHBDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgdG9zdHJpbmdFeHAoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5Ub3N0 cmluZ0V4cENvbnRleHQsMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiB1bmludEV4cChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5VbmludEV4cENvbnRleHQsMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB0b3VwcGVyRXhw KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVG91cHBlckV4cENvbnRleHQsMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB0b2x3ZXJFeHAoc2VsZik6DQo+ ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuVG9sd2VyRXhwQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHNldEV4cChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5TZXRF eHBDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJT eW50YXhQYXJzZXIuUlVMRV92ZnJFeHByZXNzaW9uVW5hcnlPcA0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckV4cHJl c3Npb25VbmFyeU9wIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdFZmckV4cHJlc3Npb25VbmFyeU9wKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAg ZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGls ZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICBkZWYgdmZyRXhwcmVzc2lvblVuYXJ5T3Aoc2VsZiwgRXhwSW5mbyk6 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNl ci5WZnJFeHByZXNzaW9uVW5hcnlPcENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYu c3RhdGUsIEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0 eCwgMzY2LCBzZWxmLlJVTEVfdmZyRXhwcmVzc2lvblVuYXJ5T3ApDQo+ID4NCj4gPiArICAgICAg ICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MDYNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAg ICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5MZW5ndGhdOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzk2DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYubGVuZ3RoRXhwKEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuQml0V2lz ZU5vdF06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgMikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3OTcNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5iaXR3aXNlbm90RXhwKEV4cEluZm8pDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIHRv a2VuIGluIFtWZnJTeW50YXhQYXJzZXIuUXVlc3Rpb25SZWZWYWxdOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzk4DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYucXVlc3Rpb24yM3JlZkV4cChFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFy c2VyLlN0cmluZ1JlZlZhbF06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgNCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI3OTkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdHJpbmdyZWYyRXhwKEV4 cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsgICAgICAg ICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuQm9vbFZhbF06DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MDANCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi50b2Jvb2xFeHAoRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5TdHJpbmdWYWxdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy ODAxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudG9zdHJpbmdFeHAoRXhwSW5mbykN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs aWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VbkludFZhbF06DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNykNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MDINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi51bmludEV4cChFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlRvVXBw ZXJdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODAzDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYudG91cHBlckV4cChFeHBJbmZvKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLlRvTG93ZXJdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyODA0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudG9sd2Vy RXhwKEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuU2V0XToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxMCkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MDUNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5zZXRFeHAoRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAg ICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4N Cj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgY2xhc3MgTGVuZ3RoRXhwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBw YXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSwg RXhwSW5mbz1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBh cmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9 IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLk5vZGVzID0gW10NCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg TGVuZ3RoKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5MZW5ndGgsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250ZXh0LA0KPiA+IDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VQYXJl bihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZm clN5bnRheFBhcnNlci5SVUxFX2xlbmd0aEV4cA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdExlbmd0aEV4cCIgKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRMZW5ndGhFeHAoc2Vs ZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBsZW5ndGhFeHAo c2VsZiwgRXhwSW5mbyk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5MZW5ndGhFeHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5z dGF0ZSwNCj4gPiBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9j YWxjdHgsIDM2OCwgc2VsZi5SVUxFX2xlbmd0aEV4cCkNCj4gPg0KPiA+ICsgICAgICAgIHRyeToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MDgNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5MZW5ndGgpDQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI4MDkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI4MTANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJl c3Npb25TdWIobG9jYWxjdHguTm9kZXMpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI4MTENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0 aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIEJpdHdpc2Vub3RFeHBDb250 ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0K PiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZXMgPSBb XQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBCaXRXaXNlTm90KHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlTm90 LCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuT3BlblBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0 YXRlbWVudEV4cHJlc3Npb25TdWIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu DQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0 ZW1lbnRFeHByZXNzaW9uU3ViQ29udGV4dCwNCj4gPiAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4s IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9iaXR3 aXNlbm90RXhwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYs IHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0Qml0d2lzZW5vdEV4cCIgKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRCaXR3aXNlbm90RXhwKHNlbGYpDQo+ID4NCj4g PiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgYml0d2lzZW5vdEV4cChzZWxmLCBF eHBJbmZvKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3lu dGF4UGFyc2VyLkJpdHdpc2Vub3RFeHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5z dGF0ZSwNCj4gPiBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9j YWxjdHgsIDM3MCwgc2VsZi5SVUxFX2JpdHdpc2Vub3RFeHApDQo+ID4NCj4gPiArICAgICAgICB0 cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODEzDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU5vdCkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgxNA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjgxNQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVt ZW50RXhwcmVzc2lvblN1Yihsb2NhbGN0eC5Ob2RlcykNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjgxNg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRp b25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0 aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVy cm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVj b3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxj dHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgUXVlc3Rpb24y M3JlZkV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250 ZXh0PU5vbmUsDQo+ID4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5Ob2RlcyA9IFtdDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5m bw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIFF1ZXN0aW9uUmVmVmFsKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5RdWVzdGlvblJlZlZhbCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBPcGVuUGFyZW4oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYg aSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bnMoVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuT3BlblBhcmVuLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udGV4dCwNCj4gPiAwKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZiwgaTppbnQ9Tm9u ZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFy ZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIGkpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRGV2aWNlUGF0aChzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRGV2 aWNlUGF0aCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJpbmdUb2tl bihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgTnVtYmVyKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs c2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5Db21tYSwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBV dWlkKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5VdWlkLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVm IGd1aWREZWZpbml0aW9uKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+ IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuR3VpZERlZmluaXRpb25D b250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg Z2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50 YXhQYXJzZXIuUlVMRV9xdWVzdGlvbjIzcmVmRXhwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0UXVlc3Rpb24yM3JlZkV4 cCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRRdWVz dGlvbjIzcmVmRXhwKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBkZWYgcXVlc3Rpb24yM3JlZkV4cChzZWxmLCBFeHBJbmZvKToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uMjNyZWZFeHBD b250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM3Miwgc2VsZi5SVUxFX3F1ZXN0 aW9uMjNyZWZFeHApDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBl DQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyODE4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu UXVlc3Rpb25SZWZWYWwpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MTkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFy ZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MjcNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIF9s YT09VmZyU3ludGF4UGFyc2VyLkRldmljZVBhdGg6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyODIwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkRldmljZVBhdGgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyODIxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyODIyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlN0cmluZ1Rva2VuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjgyMw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODI0 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MjUNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJl bikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MjYNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4 MzQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLlV1aWQ6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODI5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlV1aWQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyODMwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyODMxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZ3VpZERlZmluaXRpb24o KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgzMg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgz Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yihs b2NhbGN0eC5Ob2RlcykNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgzNw0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFy ZW4pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4g Pg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0 UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgU3RyaW5ncmVmMkV4cENvbnRleHQoUGFyc2Vy UnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9f KHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tp bmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3Vw ZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cElu Zm8gPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlcyA9IFtdDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIFN0cmluZ1JlZlZhbChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nUmVmVmFsLCAwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3Bl blBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVu dEV4cHJlc3Npb25TdWIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4N Cj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRF eHByZXNzaW9uU3ViQ29udGV4dCwNCj4gPiAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9zdHJpbmdyZWYy RXhwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0 b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0cigg dmlzaXRvciwgInZpc2l0U3RyaW5ncmVmMkV4cCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRTdHJpbmdyZWYyRXhwKHNlbGYpDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgc3RyaW5ncmVmMkV4cChzZWxmLCBFeHBJbmZv KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLlN0cmluZ3JlZjJFeHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSwN Cj4gPiBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDM3NCwgc2VsZi5SVUxFX3N0cmluZ3JlZjJFeHApDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODM5DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nUmVmVmFsKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODQwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyODQxDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRF eHByZXNzaW9uU3ViKGxvY2FsY3R4Lk5vZGVzKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyODQyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4 Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24g PSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Io c2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVy KHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBjbGFzcyBUb2Jvb2xFeHBDb250 ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0K PiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZXMgPSBb XQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBCb29sVmFsKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Cb29sVmFsLCAwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3Bl blBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVu dEV4cHJlc3Npb25TdWIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4N Cj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRF eHByZXNzaW9uU3ViQ29udGV4dCwNCj4gPiAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV90b2Jvb2xFeHAN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQ YXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNp dG9yLCAidmlzaXRUb2Jvb2xFeHAiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0VG9ib29sRXhwKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxz ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJl bihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBkZWYgdG9ib29sRXhwKHNlbGYsIEV4cEluZm8pOg0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVG9ib29sRXhwQ29u dGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsDQo+ID4gRXhwSW5mbykNCj4gPg0KPiA+ ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzNzYsIHNlbGYuUlVMRV90b2Jvb2xF eHApDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyODQ0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQm9vbFZhbCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg0NQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg0Ng0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yihsb2NhbGN0eC5Ob2RlcykNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg0Nw0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAg ICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZp bmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiAr ICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgY2xhc3MgVG9zdHJpbmdFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVu dDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJ bmZvPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50 LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFy c2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuTm9kZXMgPSBbXQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu RXhwSW5mbyA9IEV4cEluZm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBTdHJp bmdWYWwoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlN0cmluZ1ZhbCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnRleHQsDQo+ID4g MCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDbG9zZVBh cmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZGVmIE51bWJlcihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZGVmIENvbW1hKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgMCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3Rvc3RyaW5nRXhwDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRv cik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VG9z dHJpbmdFeHAiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0VG9zdHJpbmdFeHAoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiB0b3N0cmluZ0V4cChzZWxmLCBFeHBJbmZvKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlRvc3RyaW5nRXhwQ29udGV4dChz ZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsDQo+ID4gRXhwSW5mbykNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzNzgsIHNlbGYuUlVMRV90b3N0cmluZ0V4cCkN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ICsg ICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NDkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdWYWwpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NTQNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBf bGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIF9sYT09VmZy U3ludGF4UGFyc2VyLlRfXzE0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjg1MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5UX18xNCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NTEN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9f NSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NTINCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg1Mw0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg1Ng0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg1Nw0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yihsb2NhbGN0eC5Ob2RlcykNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg1OA0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ID4NCj4gPiArICAg ICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZp bmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiAr ICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgY2xhc3MgVW5pbnRFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQ YXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZv PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBp bnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2Vy DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuTm9kZXMgPSBbXQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhw SW5mbyA9IEV4cEluZm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBVbkludFZh bChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuVW5JbnRWYWwsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgT3BlblBhcmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250ZXh0LA0KPiA+IDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5 bnRheFBhcnNlci5SVUxFX3VuaW50RXhwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VW5pbnRFeHAiICk6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VW5pbnRFeHAoc2VsZikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiB1bmludEV4cChzZWxmLCBF eHBJbmZvKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3lu dGF4UGFyc2VyLlVuaW50RXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsDQo+ ID4gRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAz ODAsIHNlbGYuUlVMRV91bmludEV4cCkNCj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NjANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5VbkludFZhbCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjg2MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g Mjg2Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1 Yihsb2NhbGN0eC5Ob2RlcykNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg2 Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3Nl UGFyZW4pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMg cmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkN Cj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5l eGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVG91cHBlckV4cENvbnRleHQoUGFyc2Vy UnVsZUNvbnRleHQpOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIF9faW5pdF9f KHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ID4gaW52b2tp bmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc3Vw ZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cElu Zm8gPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5Ob2RlcyA9IFtdDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIFRvVXBwZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlRvVXBwZXIsIDApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lv blN1YihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25T dWJDb250ZXh0LA0KPiA+IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3RvdXBwZXJFeHANCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVW aXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlz aXRUb3VwcGVyRXhwIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdFRvdXBwZXJFeHAoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgIGRlZiB0b3VwcGVyRXhwKHNlbGYsIEV4cEluZm8pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVG91cHBlckV4cENvbnRleHQo c2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLA0KPiA+IEV4cEluZm8pDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzgyLCBzZWxmLlJVTEVfdG91cHBlckV4cCkN Cj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI4NjUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5U b1VwcGVyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODY2DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODY3DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKGxvY2FsY3R4Lk5vZGVzKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODY4DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0KPiA+ICsgICAgICAg IGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgZmluYWxs eToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICBjbGFzcyBUb2x3ZXJFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJz ZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5v bmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZv a2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuTm9kZXMgPSBbXQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5m byA9IEV4cEluZm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBUb0xvd2VyKHNl bGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5Ub0xvd2VyLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9w ZW5QYXJlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udGV4dCwNCj4gPiAwKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkNsb3NlUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0 UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQ YXJzZXIuUlVMRV90b2x3ZXJFeHANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBh Y2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRUb2x3ZXJFeHAiICk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VG9sd2VyRXhwKHNlbGYpDQo+ID4N Cj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgdG9sd2VyRXhwKHNlbGYsIEV4 cEluZm8pOg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50 YXhQYXJzZXIuVG9sd2VyRXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsDQo+ ID4gRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAz ODQsIHNlbGYuUlVMRV90b2x3ZXJFeHApDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODcwDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVG9Mb3dlcikNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjg3MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g Mjg3Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1 Yihsb2NhbGN0eC5Ob2RlcykNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg3 Mw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3Nl UGFyZW4pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMg cmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkN Cj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5l eGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgU2V0RXhwQ29udGV4dChQYXJzZXJSdWxl Q29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2Vs ZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0 YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigp Ll9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9 IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkJhc2VJbmZvID0gRUZJX1ZBUlNUT1JF X0lORk8oKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZXMgPSBbXQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBTZXQoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNldCwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdG9yYWdlVmFySWQoc2VsZik6DQo+ID4NCj4g PiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5WZnJTdG9yYWdlVmFySWRDb250ZXh0LDApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29tbWEoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCAwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29u dGV4dCwNCj4gPiAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIDApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIG51bWVyaWNWYXJTdG9yZVR5cGUoc2Vs Zik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5OdW1lcmljVmFyU3RvcmVUeXBlQ29udGV4dCwwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChz ZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVf c2V0RXhwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZp c2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0 ciggdmlzaXRvciwgInZpc2l0U2V0RXhwIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdFNldEV4cChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs c2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRy ZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgZGVmIHNldEV4cChzZWxmLCBFeHBJbmZvKToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlNldEV4cENvbnRleHQo c2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLA0KPiA+IEV4cEluZm8pDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzg2LCBzZWxmLlJVTEVfc2V0RXhwKQ0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAg ICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0 eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg3NQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNldCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg3Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjg3Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RvcmFnZVZh cklkKGxvY2FsY3R4LkJhc2VJbmZvLCBGYWxzZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjg4Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg3OA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODc5DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg4MA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjg4MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm51 bWVyaWNWYXJTdG9yZVR5cGUoKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODg0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI4ODUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJl c3Npb25TdWIobG9jYWxjdHguTm9kZXMpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI4ODYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0 aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmckV4cHJlc3Npb25UZXJu YXJ5T3BDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4 dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu Tm9kZXMgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5m bw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGNvbmRpdGlvbmFsRXhwKHNlbGYp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuQ29uZGl0aW9uYWxFeHBDb250ZXh0LDApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZmluZEV4cChzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5GaW5kRXhwQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIG1pZEV4cChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5NaWRFeHBDb250ZXh0 LDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdG9rZW5F eHAoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVG9rZW5FeHBDb250ZXh0LDApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgc3BhbkV4cChzZWxmKToNCj4gPg0K PiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5TcGFuRXhwQ29udGV4dCwwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyRXhwcmVzc2lvblRlcm5hcnlPcA0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNl VHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3Is ICJ2aXNpdFZmckV4cHJlc3Npb25UZXJuYXJ5T3AiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyRXhwcmVzc2lvblRlcm5hcnlPcChzZWxmKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHZmckV4cHJlc3Npb25UZXJu YXJ5T3Aoc2VsZiwgRXhwSW5mbyk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2Nh bGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uVGVybmFyeU9wQ29udGV4dChzZWxm LA0KPiBzZWxmLl9jdHgsDQo+ID4gc2VsZi5zdGF0ZSwgRXhwSW5mbykNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzODgsIHNlbGYuUlVMRV92ZnJFeHByZXNzaW9u VGVybmFyeU9wKQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyODkzDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5M QSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIu Q29uZF06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4ODgNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5jb25kaXRpb25hbEV4cChFeHBJbmZvKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiB0 b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkZpbmRdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyODg5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuZmlu ZEV4cChFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk1pZF06DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMykNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4OTANCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5taWRFeHAoRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5Ub2tdOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODkxDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudG9rZW5FeHAoRXhwSW5mbykNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4g aW4gW1ZmclN5bnRheFBhcnNlci5TcGFuXToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA1KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjg5Mg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnNwYW5FeHAo RXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0 RXhjZXB0aW9uKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVj b2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHgu ZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g bG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgQ29u ZGl0aW9uYWxFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0 YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuTm9kZXMgPSBbXQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4 cEluZm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb25kKHNlbGYpOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5D b25kLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxm KToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuT3BlblBhcmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIHZm clN0YXRlbWVudEV4cHJlc3Npb25TdWIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4N Cj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJTdGF0 ZW1lbnRFeHByZXNzaW9uU3ViQ29udGV4DQo+ID4gdCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBl bHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJD b250ZXh0LA0KPiA+IGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBkZWYgQ29sb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbG9uLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9jb25kaXRpb25hbEV4cA0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNl VHJlZVZpc2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3Is ICJ2aXNpdENvbmRpdGlvbmFsRXhwIiApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdENvbmRpdGlvbmFsRXhwKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRD aGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgY29uZGl0aW9uYWxFeHAoc2VsZiwgRXhwSW5mbyk6DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5D b25kaXRpb25hbEV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiA+IHNlbGYuc3RhdGUsIEV4 cEluZm8pDQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzkwLCBz ZWxmLlJVTEVfY29uZGl0aW9uYWxFeHApDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODk1DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29uZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjg5Ng0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk9wZW5QYXJlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg5 Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yihs b2NhbGN0eC5Ob2RlcykNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg5OA0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzE1KQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODk5DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKGxvY2FsY3R4Lk5vZGVzKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTAwDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29sb24pDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI5MDENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRl bWVudEV4cHJlc3Npb25TdWIobG9jYWxjdHguTm9kZXMpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI5MDINCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0 aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2Vw dGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRF cnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl Y292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2Fs Y3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIEZpbmRFeHBD b250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25l LA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZXMg PSBbXQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBGaW5kKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5GaW5kLCAwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBh cmVuLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGZpbmRGb3JtYXQoc2Vs ZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHRzKFZmclN5bnRheFBhcnNlci5GaW5kRm9ybWF0Q29udGV4dCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkZpbmRGb3JtYXRDb250ZXh0LGkpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwg aTppbnQ9Tm9uZSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3Vi KHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnRl eA0KPiA+IHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udGV4dCwNCj4gPiBpKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkNsb3NlUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgQml0 V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZm clN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkJpdFdpc2VPciwgaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRS dWxlSW5kZXgoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBh cnNlci5SVUxFX2ZpbmRFeHANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2Nl cHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRGaW5kRXhwIiApOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEZpbmRFeHAoc2VsZikNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBmaW5kRXhwKHNlbGYsIEV4cEluZm8pOg0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu RmluZEV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLA0KPiA+IEV4cEluZm8p DQo+ID4NCj4gPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzkyLCBzZWxmLlJV TEVfZmluZEV4cCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUN Cj4gPg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI5MDQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5G aW5kKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTA1DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTA2DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5maW5kRm9ybWF0KEV4cEluZm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI5MTENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MDcNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkwOA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLmZpbmRGb3JtYXQoRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI5MTMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI5MTQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkxNQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yihsb2NhbGN0eC5O b2RlcykNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkxNg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTE3DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKGxvY2FsY3R4Lk5vZGVzKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTE4DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI5MTkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJl c3Npb25TdWIobG9jYWxjdHguTm9kZXMpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI5MjANCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5DbG9zZVBhcmVuKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0 aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIEZpbmRGb3JtYXRDb250ZXh0 KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+ IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRm9ybWF0ID0gMA0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiBTZW5zaXRpdmUoc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbnNpdGl2ZSwgMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBJbnNlbnNpdGl2ZShzZWxmKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu SW5zZW5zaXRpdmUsIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0UnVs ZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJz ZXIuUlVMRV9maW5kRm9ybWF0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNj ZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0RmluZEZvcm1hdCIgKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRGaW5kRm9ybWF0KHNlbGYpDQo+ID4N Cj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgZmluZEZvcm1hdChzZWxmLCBF eHBJbmZvKToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3lu dGF4UGFyc2VyLkZpbmRGb3JtYXRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwN Cj4gPiBFeHBJbmZvKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDM5NCwgc2VsZi5SVUxFX2ZpbmRGb3JtYXQpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9 IDAgIyBUb2tlbiB0eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyOTIyDQo+ID4NCj4gPiArICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBub3QoX2xhPT1WZnJTeW50YXhQ YXJzZXIuSW5zZW5zaXRpdmUgb3INCj4gPiBfbGE9PVZmclN5bnRheFBhcnNlci5TZW5zaXRpdmUp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXJJbmxp bmUoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydE1hdGNoKHNlbGYpDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuY29uc3VtZSgpDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVj b2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHgu ZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g bG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgTWlk RXhwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLk5v ZGVzID0gW10NCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTWlkKHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5NaWQsIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVu UGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50 RXhwcmVzc2lvblN1YihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJl c3Npb25TdWJDb250ZXgNCj4gPiB0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnRleHQsDQo+ ID4gaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBDb21t YShzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1h LCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6 DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkNsb3NlUGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgZ2V0 UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQ YXJzZXIuUlVMRV9taWRFeHANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBhY2Nl cHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRNaWRFeHAiICk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0TWlkRXhwKHNlbGYpDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRDaGlsZHJlbihzZWxmKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgbWlkRXhwKHNlbGYsIEV4cEluZm8pOg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuTWlk RXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsDQo+ID4gRXhwSW5mbykNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzOTYsIHNlbGYuUlVMRV9t aWRFeHApDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyOTI0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuTWlkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTI1DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTI2DQo+ID4NCj4gPiArICAgICAg ICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKGxvY2FsY3R4Lk5vZGVzKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTI3DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI5MjgNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRl bWVudEV4cHJlc3Npb25TdWIobG9jYWxjdHguTm9kZXMpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI5MjkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkz MA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yihs b2NhbGN0eC5Ob2RlcykNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkzMQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFy ZW4pDQo+ID4NCj4gPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4g Pg0KPiA+ICsgICAgICAgIGZpbmFsbHk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5leGl0 UnVsZSgpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgY2xhc3MgVG9rZW5FeHBDb250ZXh0KFBhcnNlclJ1bGVD b250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm LCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3Rh dGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCku X19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0g Tm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZXMgPSBbXQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBUb2soc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlRvaywgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNlbGYsIGk6 aW50PU5vbmUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 cyhWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnRleA0KPiA+IHQp DQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg cmV0dXJuDQo+ID4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udGV4dCwNCj4gPiBpKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3Rva2VuRXhwDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRv ciwgInZpc2l0VG9rZW5FeHAiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0VG9rZW5FeHAoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNl bGYpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgIGRlZiB0b2tlbkV4cChzZWxmLCBFeHBJbmZvKToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlRva2VuRXhwQ29udGV4dChz ZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsDQo+ID4gRXhwSW5mbykNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzOTgsIHNlbGYuUlVMRV90b2tlbkV4cCkNCj4g Pg0KPiA+ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5 MzMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Ub2sp DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MzQNCj4gPg0KPiA+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MzUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIobG9jYWxjdHguTm9kZXMpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MzYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjkzNw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVz c2lvblN1Yihsb2NhbGN0eC5Ob2RlcykNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjkzOA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTM5DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKGxvY2FsY3R4Lk5v ZGVzKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTQwDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0K PiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAg ICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4g Pg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBjbGFzcyBTcGFuRXhwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBw YXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gPiBpbnZva2luZ1N0YXRlOmludD0tMSwg RXhwSW5mbz1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBh cmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9 IHBhcnNlcg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLk5vZGVzID0gW10NCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg U3BhbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuU3BhbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRl ZiBPcGVuUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgc3BhbkZsYWdzKHNlbGYsIGk6aW50PU5vbmUpOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0 dXJuDQo+ID4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuU3BhbkZs YWdzQ29udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICByZXR1cm4NCj4gPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLlNwYW5GbGFnc0NvbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ID4NCj4g PiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4NCj4gPg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udGV4DQo+ID4gdCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gPg0KPiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Np b25TdWJDb250ZXh0LA0KPiA+IGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfc3BhbkV4cA0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZp c2l0b3IpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNp dFNwYW5FeHAiICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0U3BhbkV4cChzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ZGVmIHNwYW5FeHAoc2VsZiwgRXhwSW5mbyk6DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5TcGFuRXhwQ29udGV4dChzZWxmLCBzZWxmLl9j dHgsIHNlbGYuc3RhdGUsDQo+ID4gRXhwSW5mbykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuZW50 ZXJSdWxlKGxvY2FsY3R4LCA0MDAsIHNlbGYuUlVMRV9zcGFuRXhwKQ0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk0Mg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNwYW4pDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI5NDMNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI5NDQNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5G TEFHUykNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk0NQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NDYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnNwYW5GbGFncygpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NTENCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gPg0KPiA+ ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NDcNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjk0OA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnNwYW5GbGFncygpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTUz DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTU0DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NTUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIobG9jYWxjdHguTm9kZXMpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NTYNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjk1Nw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVz c2lvblN1Yihsb2NhbGN0eC5Ob2RlcykNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjk1OA0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTU5DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKGxvY2FsY3R4Lk5v ZGVzKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTYwDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gPg0K PiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+DQo+ID4gKyAg ICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4g Pg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICBjbGFzcyBTcGFuRmxhZ3NDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs IHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0x KToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tp bmdTdGF0ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRmxhZyA9IDANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBMYXN0Tm9uTWF0Y2goc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkxhc3ROb25NYXRjaCwgMCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGRlZiBGaXJzdE5vbk1hdGNoKHNlbGYpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5GaXJzdE5vbk1hdGNoLCAwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZGVmIGdl dFJ1bGVJbmRleChzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4 UGFyc2VyLlJVTEVfc3BhbkZsYWdzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYg YWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0U3BhbkZsYWdzIiApOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFNwYW5GbGFncyhzZWxmKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIHNwYW5GbGFncyhzZWxmKToN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2Vy LlNwYW5GbGFnc0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDQwMiwgc2VsZi5SVUxFX3NwYW5GbGFn cykNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gPg0KPiA+ ICsgICAgICAgIHRyeToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NjINCj4g Pg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIG5vdCgoKCgoX2xhIC0gMjQ2KSkgJiB+MHgzZikgPT0gMCBhbmQgKCgxIDw8 IChfbGEgLSAyNDYpKSAmICgoMSA8PA0KPiA+IChWZnJTeW50YXhQYXJzZXIuTGFzdE5vbk1hdGNo IC0gMjQ2KSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLkZpcnN0Tm9uTWF0Y2gNCj4gPiAt IDI0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5OdW1iZXIgLSAyNDYpKSkpICE9IDApKToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVySW5saW5l KHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRNYXRjaChzZWxmKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLmNvbnN1bWUoKQ0KPiA+DQo+ID4gKyAgICAgICAgZXhjZXB0IFJlY29n bml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4 Y2VwdGlvbiA9IHJlDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBv cnRFcnJvcihzZWxmLCByZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlY292ZXIoc2VsZiwgcmUpDQo+ID4NCj4gPiArICAgICAgICBmaW5hbGx5Og0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGxv Y2FsY3R4DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNsYXNzIFZmckV4 cHJlc3Npb25NYXBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLA0KPiA+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0 YXRlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuTm9kZXMgPSBbXQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IElmclRy ZWVOb2RlKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgTWFwKHNlbGYpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5NYXAsIDApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVu UGFyZW4sIDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50 RXhwcmVzc2lvblN1YihzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4NCj4gPg0K PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4 cHJlc3Npb25TdWJDb250ZXh0LA0KPiA+IDApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBkZWYgQ29sb24oc2VsZik6DQo+ID4NCj4gPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbG9uLCAwKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+ID4NCj4gPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lv bihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0KQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJl dHVybg0KPiA+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50RXhwcmVzc2lvbkNvbnRleHQsaSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg ZGVmIFNlbWljb2xvbihzZWxmLCBpOmludD1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VucyhWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs c2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5TZW1pY29sb24sIGkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBk ZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBWZnJT eW50YXhQYXJzZXIuUlVMRV92ZnJFeHByZXNzaW9uTWFwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyRXhwcmVzc2lv bk1hcCIgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRW ZnJFeHByZXNzaW9uTWFwKHNlbGYpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICBkZWYgdmZyRXhwcmVzc2lvbk1hcChzZWxmLCBFeHBJbmZvKToNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckV4cHJlc3Npb25N YXBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gPiBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDQwNCwgc2VsZi5SVUxFX3Zm ckV4cHJlc3Npb25NYXApDQo+ID4NCj4gPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0 eXBlDQo+ID4NCj4gPiArICAgICAgICB0cnk6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyOTY0DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuTWFwKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTY1DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTY2DQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKGxvY2FsY3R4Lk5vZGVzKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTY3DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29sb24pDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI5NzUNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnN5bmMoc2VsZikNCj4gPg0KPiA+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgx KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLk9wZW5Q YXJlbiBvciAoKCgoX2xhIC0gMTkyKSkgJiB+MHgzZikgPT0NCj4gMA0KPiA+IGFuZCAoKDEgPDwg KF9sYSAtIDE5MikpICYgKCgxIDw8IChWZnJTeW50YXhQYXJzZXIuQ29uZCAtIDE5MikpIHwgKDEg PDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLkZpbmQgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQ YXJzZXIuTWlkIC0gMTkyKSkgfCAoMSA8PA0KPiA+IChWZnJTeW50YXhQYXJzZXIuVG9rIC0gMTky KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlNwYW4gLSAxOTIpKSB8ICgxIDw8DQo+ID4gKFZm clN5bnRheFBhcnNlci5EdXAgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVmFyRXFW YWwgLSAxOTIpKSB8ICgxIDw8DQo+ID4gKFZmclN5bnRheFBhcnNlci5JZEVxVmFsIC0gMTkyKSkg fCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLklkRXFJZCAtIDE5MikpIHwgKDENCj4gPDwNCj4gPiAo VmZyU3ludGF4UGFyc2VyLklkRXFWYWxMaXN0IC0gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFy c2VyLlF1ZXN0aW9uUmVmIC0NCj4gPiAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuUnVs ZVJlZiAtIDE5MikpIHwgKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLlN0cmluZ1JlZiAtIDE5 MikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5QdXNoVGhpcyAtIDE5MikpIHwNCj4gKDENCj4g PiA8PCAoVmZyU3ludGF4UGFyc2VyLlNlY3VyaXR5IC0gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4 UGFyc2VyLkdldCAtIDE5MikpIHwgKDENCj4gPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLlRydWVT eW1ib2wgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuRmFsc2VTeW1ib2wgLQ0KPiA+ IDE5MikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5PbmUgLSAxOTIpKSB8ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuT25lcyAtDQo+IDE5MikpDQo+ID4gfCAoMSA8PCAoVmZyU3ludGF4UGFyc2Vy Llplcm8gLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVW5kZWZpbmVkIC0NCj4gMTky KSkNCj4gPiB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVmVyc2lvbiAtIDE5MikpIHwgKDEgPDwg KFZmclN5bnRheFBhcnNlci5MZW5ndGggLQ0KPiAxOTIpKQ0KPiA+IHwgKDEgPDwgKFZmclN5bnRh eFBhcnNlci5OT1QgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuU2V0IC0gMTkyKSkg fCAoMQ0KPiA8PA0KPiA+IChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU5vdCAtIDE5MikpIHwgKDEg PDwgKFZmclN5bnRheFBhcnNlci5Cb29sVmFsIC0gMTkyKSkgfA0KPiA+ICgxIDw8IChWZnJTeW50 YXhQYXJzZXIuU3RyaW5nVmFsIC0gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlVuSW50 VmFsIC0NCj4gPiAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVG9VcHBlciAtIDE5Mikp IHwgKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLlRvTG93ZXIgLSAxOTIpKSB8ICgxIDw8IChW ZnJTeW50YXhQYXJzZXIuTWF0Y2ggLSAxOTIpKSB8ICgxDQo+IDw8DQo+ID4gKFZmclN5bnRheFBh cnNlci5NYXRjaDIgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuQ2F0ZW5hdGUgLSAx OTIpKSB8ICgxDQo+ID4gPDwgKFZmclN5bnRheFBhcnNlci5RdWVzdGlvblJlZlZhbCAtIDE5Mikp IHwgKDEgPDwNCj4gPiAoVmZyU3ludGF4UGFyc2VyLlN0cmluZ1JlZlZhbCAtIDE5MikpIHwgKDEg PDwgKFZmclN5bnRheFBhcnNlci5NYXAgLSAxOTIpKSB8DQo+ICgxDQo+ID4gPDwgKFZmclN5bnRh eFBhcnNlci5OdW1iZXIgLSAxOTIpKSkpICE9IDApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjk2OA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0 YXRlbWVudEV4cHJlc3Npb24obG9jYWxjdHguTm9kZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI5NjkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyOTcwDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50 RXhwcmVzc2lvbihsb2NhbGN0eC5Ob2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjk3MQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5TZW1pY29sb24pDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyOTc3DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgx KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTc4DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJl bikNCj4gPg0KPiA+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiA+ DQo+ID4gKyAgICAgICAgZmluYWxseToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiA+DQo+ID4gZGlmZiAt LWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1ZmclN5bnRheFZpc2l0 b3IucHkNCj4gPiBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1ZmclN5bnRh eFZpc2l0b3IucHkNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAw MDAuLjYyMmU2MzM0N2MNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvQmFzZVRvb2xzL1Nv dXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyU3ludGF4VmlzaXRvci5weQ0KPiA+IEBAIC0wLDAg KzEsNTUwNCBAQA0KPiA+ICsjIyBAZmlsZQ0KPiA+DQo+ID4gKyMgVGhlIGZpbGUgaXMgZGVmaW5l ZCB0byBwYXJzZSBWZnIgc3ludGF4DQo+ID4NCj4gPiArIw0KPiA+DQo+ID4gKyMgQ29weXJpZ2h0 IChjKSAyMDIyLSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0K PiA+DQo+ID4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQN Cj4gPg0KPiA+ICsjIw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2Zyb20gYW50bHI0IGltcG9ydCAq DQo+ID4NCj4gPiArZnJvbSBWZnJDb21waWxlci5JZnJDdHlwZXMgaW1wb3J0ICoNCj4gPg0KPiA+ ICtmcm9tIFZmckNvbXBpbGVyLklmckZvcm1Qa2cgaW1wb3J0ICoNCj4gPg0KPiA+ICtmcm9tIFZm ckNvbXBpbGVyLklmclV0aWxpdHkgaW1wb3J0ICoNCj4gPg0KPiA+ICtmcm9tIFZmckNvbXBpbGVy LklmclRyZWUgaW1wb3J0ICoNCj4gPg0KPiA+ICtmcm9tIFZmckNvbXBpbGVyLklmckVycm9yIGlt cG9ydCAqDQo+ID4NCj4gPiArZnJvbSBWZnJDb21waWxlci5JZnJQcmVQcm9jZXNzIGltcG9ydCAq DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAraWYgX19uYW1lX18gaXMgbm90IE5vbmUgYW5kICIuIiBp biBfX25hbWVfXzoNCj4gPg0KPiA+ICsgICAgZnJvbSAuVmZyU3ludGF4UGFyc2VyIGltcG9ydCBW ZnJTeW50YXhQYXJzZXINCj4gPg0KPiA+ICtlbHNlOg0KPiA+DQo+ID4gKyAgICBmcm9tIFZmclN5 bnRheFBhcnNlciBpbXBvcnQgVmZyU3ludGF4UGFyc2VyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArIyBUaGlzIGNsYXNzIGRlZmluZXMgYSBjb21wbGV0ZSBnZW5lcmljIHZpc2l0 b3IgZm9yIGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiA+IFZmclN5bnRheFBhcnNlci4NCj4g Pg0KPiA+ICtjbGFzcyBWZnJTeW50YXhWaXNpdG9yKFBhcnNlVHJlZVZpc2l0b3IpOg0KPiA+DQo+ ID4gKyAgICBkZWYgX19pbml0X18oDQo+ID4NCj4gPiArICAgICAgICBzZWxmLA0KPiA+DQo+ID4g KyAgICAgICAgUHJlUHJvY2Vzc0RCOiBQcmVQcm9jZXNzREIgPSBOb25lLA0KPiA+DQo+ID4gKyAg ICAgICAgUm9vdD1Ob25lLA0KPiA+DQo+ID4gKyAgICAgICAgT3ZlcnJpZGVDbGFzc0d1aWQ9Tm9u ZSwNCj4gPg0KPiA+ICsgICAgICAgIFF1ZXN0aW9uREI6IFZmclF1ZXN0aW9uREIgPSBOb25lLA0K PiA+DQo+ID4gKyAgICApOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5Sb290ID0gUm9vdCBpZiBS b290ICE9IE5vbmUgZWxzZSBJZnJUcmVlTm9kZSgpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlBy ZVByb2Nlc3NEQiA9IFByZVByb2Nlc3NEQg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5PdmVycmlk ZUNsYXNzR3VpZCA9IE92ZXJyaWRlQ2xhc3NHdWlkDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlZm clF1ZXN0aW9uREIgPSBRdWVzdGlvbkRCIGlmIFF1ZXN0aW9uREIgIT0gTm9uZSBlbHNlDQo+ID4g VmZyUXVlc3Rpb25EQigpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlBhcnNlclN0YXR1cyA9IDAN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYuVmFsdWUgPSBOb25lDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLkxhc3RGb3JtTm9kZSA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuSWZyT3BIZHJJ bmRleCA9IDANCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuQ29uc3RhbnRPbmx5SW5FeHByZXNzaW9u ID0gRmFsc2UNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuSWZyT3BIZHIgPSBbTm9uZV0NCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuSWZyT3BIZHJMaW5lTm8gPSBbMF0NCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuVXNlZERlZmF1bHRBcnJheSA9IFtdDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlZmclJ1 bGVzREIgPSBWZnJSdWxlc0RCKCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuQ3VyclFlc3RWYXJJ bmZvID0gRUZJX1ZBUlNUT1JFX0lORk8oKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5DdXJyZW50 UXVlc3Rpb24gPSBOb25lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkN1cnJlbnRNaW5NYXhEYXRh ID0gTm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5Jc1N0cmluZ09wID0gRmFsc2UNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYuSXNPcmRlcmVkTGlzdCA9IEZhbHNlDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLklzQ2hlY2tCb3hPcCA9IEZhbHNlDQo+ID4NCj4gPiArICAgICAgICBzZWxmLk5lZWRB ZGp1c3RPcGNvZGUgPSBGYWxzZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEg cGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyUHJvZ3JhbS4NCj4gPg0K PiA+ICsgICAgZGVmIHZpc2l0VmZyUHJvZ3JhbShzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5W ZnJQcm9ncmFtQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRy ZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ByYWdtYVBhY2tTaG93RGVmLg0KPiA+DQo+ ID4gKyAgICBkZWYgdmlzaXRQcmFnbWFQYWNrU2hvd0RlZihzZWxmLCBjdHg6DQo+ID4gVmZyU3lu dGF4UGFyc2VyLlByYWdtYVBhY2tTaG93RGVmQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBM aW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gPg0KPiA+ICsgICAgICAgIGdWZnJWYXJEYXRhVHlwZURC LlBhY2soTGluZSwgVkZSX1BBQ0tfU0hPVykNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxm LnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEg cGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjcHJhZ21hUGFja1N0YWNrRGVm Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRQcmFnbWFQYWNrU3RhY2tEZWYoc2VsZiwgY3R4Og0K PiA+IFZmclN5bnRheFBhcnNlci5QcmFnbWFQYWNrU3RhY2tEZWZDb250ZXh0KToNCj4gPg0KPiA+ ICsgICAgICAgIElkZW50aWZpZXIgPSBzZWxmLlRyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIo KSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIHN0cihjdHguZ2V0Q2hpbGQoMCkp ID09ICJwdXNoIjoNCj4gPg0KPiA+ICsgICAgICAgICAgICBBY3Rpb24gPSBWRlJfUEFDS19QVVNI DQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIEFjdGlvbiA9 IFZGUl9QQUNLX1BPUA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4Lk51bWJl cigpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgQWN0aW9uIHw9IFZGUl9QQUNLX0FT U0lHTg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgUGFja051bWJlciA9IHNlbGYuVHJh bnNOdW0oY3R4Lk51bWJlcigpLCBERUZBVUxUX1BBQ0tfQUxJR04pDQo+ID4NCj4gPiArICAgICAg ICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gPg0KPiA+ICsgICAgICAgIGdWZnJWYXJEYXRhVHlw ZURCLlBhY2soTGluZSwgQWN0aW9uLCBJZGVudGlmaWVyLCBQYWNrTnVtYmVyKQ0KPiA+DQo+ID4g KyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNl ciNwcmFnbWFQYWNrTnVtYmVyLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRQcmFnbWFQYWNrTnVt YmVyKHNlbGYsIGN0eDoNCj4gPiBWZnJTeW50YXhQYXJzZXIuUHJhZ21hUGFja051bWJlckNvbnRl eHQpOg0KPiA+DQo+ID4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+ID4NCj4gPiAr ICAgICAgICBQYWNrTnVtYmVyID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKCksIERFRkFVTFRf UEFDS19BTElHTikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGdWZnJWYXJEYXRhVHlw ZURCLlBhY2soTGluZSwgVkZSX1BBQ0tfQVNTSUdOLCBOb25lLA0KPiBQYWNrTnVtYmVyKQ0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5 bnRheFBhcnNlciN2ZnJQcmFnbWFQYWNrRGVmaW5pdGlvbi4NCj4gPg0KPiA+ICsgICAgZGVmIHZp c2l0VmZyUHJhZ21hUGFja0RlZmluaXRpb24oc2VsZiwgY3R4Og0KPiA+IFZmclN5bnRheFBhcnNl ci5WZnJQcmFnbWFQYWNrRGVmaW5pdGlvbkNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0 dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMg VmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJEYXRhU3Ry dWN0RGVmaW5pdGlvbi4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyRGF0YVN0cnVjdERlZmlu aXRpb24oc2VsZiwgY3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5WZnJEYXRhU3RydWN0RGVmaW5p dGlvbkNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgZ1ZmclZhckRhdGFUeXBlREIuRGVjbGFy ZURhdGFUeXBlQmVnaW4oKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4Lk4x ICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgUmV0dXJuQ29kZSA9IGdWZnJWYXJEYXRh VHlwZURCLlNldE5ld1R5cGVOYW1lKGN0eC5OMS50ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5OMS5saW5lLCBjdHguTjEudGV4dCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5OMiAhPSBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIFJldHVybkNvZGUgPSBnVmZyVmFyRGF0YVR5cGVEQi5TZXROZXdUeXBl TmFtZShjdHguTjIudGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxl cihSZXR1cm5Db2RlLCBjdHguTjIubGluZSwgY3R4Lk4yLnRleHQpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZ1ZmclZhckRhdGFUeXBlREIuRGVjbGFyZURhdGFUeXBlRW5kKCkNCj4gPg0K PiA+ICsgICAgICAgIHJldHVybiBOb25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlz aXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2ZnJEYXRhVW5p b25EZWZpbml0aW9uLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJEYXRhVW5pb25EZWZpbml0 aW9uKHNlbGYsIGN0eDoNCj4gPiBWZnJTeW50YXhQYXJzZXIuVmZyRGF0YVVuaW9uRGVmaW5pdGlv bkNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgZ1ZmclZhckRhdGFUeXBlREIuRGVjbGFyZURh dGFUeXBlQmVnaW4oKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4Lk4xICE9IE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgUmV0dXJuQ29kZSA9IGdWZnJWYXJEYXRhVHlwZURCLlNldE5ld1R5 cGVOYW1lKGN0eC5OMS50ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5k bGVyKFJldHVybkNvZGUsIGN0eC5OMS5saW5lLCBjdHguTjEudGV4dCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGlmIGN0eC5OMiAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IFJldHVybkNvZGUgPSBnVmZyVmFyRGF0YVR5cGVEQi5TZXROZXdUeXBlTmFtZShjdHguTjIudGV4 dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBj dHguTjIubGluZSwgY3R4Lk4yLnRleHQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZ1Zm clZhckRhdGFUeXBlREIuRGVjbGFyZURhdGFUeXBlRW5kKCkNCj4gPg0KPiA+ICsgICAgICAgIHJl dHVybiBOb25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVl IHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJEYXRhU3RydWN0RmllbGRzLg0KPiA+DQo+ ID4gKyAgICBkZWYgdmlzaXRWZnJEYXRhU3RydWN0RmllbGRzKHNlbGYsIGN0eDoNCj4gPiBWZnJT eW50YXhQYXJzZXIuVmZyRGF0YVN0cnVjdEZpZWxkc0NvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAg ICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNkYXRh U3RydWN0RmllbGQ2NC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0RGF0YVN0cnVjdEZpZWxkNjQo c2VsZiwgY3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGQ2NENvbnRleHQp Og0KPiA+DQo+ID4gKyAgICAgICAgQXJyYXlOdW0gPSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIo KSkNCj4gPg0KPiA+ICsgICAgICAgIFJldHVybkNvZGUgPSBnVmZyVmFyRGF0YVR5cGVEQi5EYXRh VHlwZUFkZEZpZWxkKA0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5OLnRleHQsICJVSU5UNjQi LCBBcnJheU51bSwgY3R4LkZpZWxkSW5Vbmlvbg0KPiA+DQo+ID4gKyAgICAgICAgKQ0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4Lk4ubGluZSwgY3R4 Lk4udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4 KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNl ZCBieSBWZnJTeW50YXhQYXJzZXIjZGF0YVN0cnVjdEZpZWxkMzIuDQo+ID4NCj4gPiArICAgIGRl ZiB2aXNpdERhdGFTdHJ1Y3RGaWVsZDMyKHNlbGYsIGN0eDoNCj4gPiBWZnJTeW50YXhQYXJzZXIu RGF0YVN0cnVjdEZpZWxkMzJDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIEFycmF5TnVtID0g c2VsZi5UcmFuc051bShjdHguTnVtYmVyKCkpDQo+ID4NCj4gPiArICAgICAgICBSZXR1cm5Db2Rl ID0gZ1ZmclZhckRhdGFUeXBlREIuRGF0YVR5cGVBZGRGaWVsZCgNCj4gPg0KPiA+ICsgICAgICAg ICAgICBjdHguTi50ZXh0LCAiVUlOVDMyIiwgQXJyYXlOdW0sIGN0eC5GaWVsZEluVW5pb24NCj4g Pg0KPiA+ICsgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKFJl dHVybkNvZGUsIGN0eC5OLmxpbmUsIGN0eC5OLnRleHQpDQo+ID4NCj4gPiArICAgICAgICByZXR1 cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBW aXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2RhdGFTdHJ1Y3RG aWVsZDE2Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXREYXRhU3RydWN0RmllbGQxNihzZWxmLCBj dHg6DQo+ID4gVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZDE2Q29udGV4dCk6DQo+ID4N Cj4gPiArICAgICAgICBBcnJheU51bSA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KPiA+ DQo+ID4gKyAgICAgICAgUmV0dXJuQ29kZSA9IGdWZnJWYXJEYXRhVHlwZURCLkRhdGFUeXBlQWRk RmllbGQoDQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk4udGV4dCwgIlVJTlQxNiIsIEFycmF5 TnVtLCBjdHguRmllbGRJblVuaW9uDQo+ID4NCj4gPiArICAgICAgICApDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLkVycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguTi5saW5lLCBjdHguTi50ZXh0 KQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZm clN5bnRheFBhcnNlciNkYXRhU3RydWN0RmllbGQ4Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRE YXRhU3RydWN0RmllbGQ4KHNlbGYsIGN0eDoNCj4gPiBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVj dEZpZWxkOENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgQXJyYXlOdW0gPSBzZWxmLlRyYW5z TnVtKGN0eC5OdW1iZXIoKSkNCj4gPg0KPiA+ICsgICAgICAgIFJldHVybkNvZGUgPSBnVmZyVmFy RGF0YVR5cGVEQi5EYXRhVHlwZUFkZEZpZWxkKA0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5O LnRleHQsICJVSU5UOCIsIEFycmF5TnVtLCBjdHguRmllbGRJblVuaW9uDQo+ID4NCj4gPiArICAg ICAgICApDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkVycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBj dHguTi5saW5lLCBjdHguTi50ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlz aXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJz ZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNkYXRhU3RydWN0RmllbGRCb29sLg0K PiA+DQo+ID4gKyAgICBkZWYgdmlzaXREYXRhU3RydWN0RmllbGRCb29sKHNlbGYsIGN0eDoNCj4g PiBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkQm9vbENvbnRleHQpOg0KPiA+DQo+ID4g KyAgICAgICAgQXJyYXlOdW0gPSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCj4gPg0KPiA+ ICsgICAgICAgIFJldHVybkNvZGUgPSBnVmZyVmFyRGF0YVR5cGVEQi5EYXRhVHlwZUFkZEZpZWxk KA0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5OLnRleHQsICJCT09MRUFOIiwgQXJyYXlOdW0s IGN0eC5GaWVsZEluVW5pb24NCj4gPg0KPiA+ICsgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5OLmxpbmUsIGN0eC5OLnRleHQpDQo+ ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3lu dGF4UGFyc2VyI2RhdGFTdHJ1Y3RGaWVsZFN0cmluZy4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0 RGF0YVN0cnVjdEZpZWxkU3RyaW5nKHNlbGYsIGN0eDoNCj4gPiBWZnJTeW50YXhQYXJzZXIuRGF0 YVN0cnVjdEZpZWxkU3RyaW5nQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBBcnJheU51bSA9 IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KPiA+DQo+ID4gKyAgICAgICAgUmV0dXJuQ29k ZSA9IGdWZnJWYXJEYXRhVHlwZURCLkRhdGFUeXBlQWRkRmllbGQoDQo+ID4NCj4gPiArICAgICAg ICAgICAgY3R4Lk4udGV4dCwgIkVGSV9TVFJJTkdfSUQiLCBBcnJheU51bSwgY3R4LkZpZWxkSW5V bmlvbg0KPiA+DQo+ID4gKyAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5FcnJvckhh bmRsZXIoUmV0dXJuQ29kZSwgY3R4Lk4ubGluZSwgY3R4Lk4udGV4dCkNCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjZGF0 YVN0cnVjdEZpZWxkRGF0ZS4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0RGF0YVN0cnVjdEZpZWxk RGF0ZShzZWxmLCBjdHg6DQo+ID4gVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZERhdGVD b250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIEFycmF5TnVtID0gc2VsZi5UcmFuc051bShjdHgu TnVtYmVyKCkpDQo+ID4NCj4gPiArICAgICAgICBSZXR1cm5Db2RlID0gZ1ZmclZhckRhdGFUeXBl REIuRGF0YVR5cGVBZGRGaWVsZCgNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTi50ZXh0LCAi RUZJX0hJSV9EQVRFIiwgQXJyYXlOdW0sIGN0eC5GaWVsZEluVW5pb24NCj4gPg0KPiA+ICsgICAg ICAgICkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0 eC5OLmxpbmUsIGN0eC5OLnRleHQpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi52aXNp dENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2RhdGFTdHJ1Y3RGaWVsZFRpbWUuDQo+ ID4NCj4gPiArICAgIGRlZiB2aXNpdERhdGFTdHJ1Y3RGaWVsZFRpbWUoc2VsZiwgY3R4Og0KPiA+ IFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGRUaW1lQ29udGV4dCk6DQo+ID4NCj4gPiAr ICAgICAgICBBcnJheU51bSA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KPiA+DQo+ID4g KyAgICAgICAgUmV0dXJuQ29kZSA9IGdWZnJWYXJEYXRhVHlwZURCLkRhdGFUeXBlQWRkRmllbGQo DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk4udGV4dCwgIkVGSV9ISUlfVElNRSIsIEFycmF5 TnVtLCBjdHguRmllbGRJblVuaW9uDQo+ID4NCj4gPiArICAgICAgICApDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLkVycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguTi5saW5lLCBjdHguTi50ZXh0 KQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZm clN5bnRheFBhcnNlciNkYXRhU3RydWN0RmllbGRSZWYuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNp dERhdGFTdHJ1Y3RGaWVsZFJlZihzZWxmLCBjdHg6DQo+ID4gVmZyU3ludGF4UGFyc2VyLkRhdGFT dHJ1Y3RGaWVsZFJlZkNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgQXJyYXlOdW0gPSBzZWxm LlRyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCj4gPg0KPiA+ICsgICAgICAgIFJldHVybkNvZGUgPSBn VmZyVmFyRGF0YVR5cGVEQi5EYXRhVHlwZUFkZEZpZWxkKA0KPiA+DQo+ID4gKyAgICAgICAgICAg IGN0eC5OLnRleHQsICJFRklfSElJX1JFRiIsIEFycmF5TnVtLCBjdHguRmllbGRJblVuaW9uDQo+ ID4NCj4gPiArICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkVycm9ySGFuZGxlcihS ZXR1cm5Db2RlLCBjdHguTi5saW5lLCBjdHguTi50ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0 dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMg VmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNkYXRhU3RydWN0 RmllbGRVc2VyLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXREYXRhU3RydWN0RmllbGRVc2VyKHNl bGYsIGN0eDoNCj4gPiBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkVXNlckNvbnRleHQp Og0KPiA+DQo+ID4gKyAgICAgICAgQXJyYXlOdW0gPSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIo KSkNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5ULnRleHQgIT0gIkNIQVIxNiI6DQo+ID4NCj4g PiArICAgICAgICAgICAgUmV0dXJuQ29kZSA9IGdWZnJWYXJEYXRhVHlwZURCLkRhdGFUeXBlQWRk RmllbGQoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5OLnRleHQsIGN0eC5ULnRleHQs IEFycmF5TnVtLCBjdHguRmllbGRJblVuaW9uDQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0KPiA+ DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBSZXR1cm5Db2RlID0g Z1ZmclZhckRhdGFUeXBlREIuRGF0YVR5cGVBZGRGaWVsZCgNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgY3R4Lk4udGV4dCwgIlVJTlQxNiIsIEFycmF5TnVtLCBjdHguRmllbGRJblVuaW9uDQo+ ID4NCj4gPiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5FcnJvckhhbmRs ZXIoUmV0dXJuQ29kZSwgY3R4Lk4ubGluZSwgY3R4Lk4udGV4dCkNCj4gPg0KPiA+ICsgICAgICAg IHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjZGF0YVN0 cnVjdEJpdEZpZWxkNjQuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdERhdGFTdHJ1Y3RCaXRGaWVs ZDY0KHNlbGYsIGN0eDoNCj4gPiBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEJpdEZpZWxkNjRD b250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIFdpZHRoID0gc2VsZi5UcmFuc051bShjdHguTnVt YmVyKCkpDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguTiAhPSBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBn VmZyVmFyRGF0YVR5cGVEQi5EYXRhVHlwZUFkZEJpdEZpZWxkKA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgY3R4Lk4udGV4dCwgIlVJTlQ2NCIsIFdpZHRoLCBjdHguRmllbGRJblVuaW9u DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICksDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IGN0eC5OLmxpbmUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5OLnRleHQsDQo+ID4N Cj4gPiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg Z1ZmclZhckRhdGFUeXBlREIuRGF0YVR5cGVBZGRCaXRGaWVsZChOb25lLCAiVUlOVDY0IiwgV2lk dGgsDQo+ID4gY3R4LkZpZWxkSW5VbmlvbiksDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0 eC5ELmxpbmUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5ELnRleHQsDQo+ID4NCj4g PiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNl bGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQg YSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNkYXRhU3RydWN0Qml0Rmll bGQzMi4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0RGF0YVN0cnVjdEJpdEZpZWxkMzIoc2VsZiwg Y3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0Qml0RmllbGQzMkNvbnRleHQpOg0K PiA+DQo+ID4gKyAgICAgICAgV2lkdGggPSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCj4g Pg0KPiA+ICsgICAgICAgIGlmIGN0eC5OICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5FcnJvckhhbmRsZXIoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGdWZnJWYXJEYXRh VHlwZURCLkRhdGFUeXBlQWRkQml0RmllbGQoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBjdHguTi50ZXh0LCAiVUlOVDMyIiwgV2lkdGgsIGN0eC5GaWVsZEluVW5pb24NCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4Lk4ubGlu ZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4Lk4udGV4dCwNCj4gPg0KPiA+ICsgICAg ICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuRXJyb3JIYW5kbGVyKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBnVmZyVmFyRGF0 YVR5cGVEQi5EYXRhVHlwZUFkZEJpdEZpZWxkKE5vbmUsICJVSU5UMzIiLCBXaWR0aCwNCj4gPiBj dHguRmllbGRJblVuaW9uKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4LkQubGluZSwN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4LkQudGV4dCwNCj4gPg0KPiA+ICsgICAgICAg ICAgICApDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQg YnkgVmZyU3ludGF4UGFyc2VyI2RhdGFTdHJ1Y3RCaXRGaWVsZDE2Lg0KPiA+DQo+ID4gKyAgICBk ZWYgdmlzaXREYXRhU3RydWN0Qml0RmllbGQxNihzZWxmLCBjdHg6DQo+ID4gVmZyU3ludGF4UGFy c2VyLkRhdGFTdHJ1Y3RCaXRGaWVsZDE2Q29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBXaWR0 aCA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4 Lk4gIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgZ1ZmclZhckRhdGFUeXBlREIuRGF0YVR5cGVBZGRCaXRG aWVsZCgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGN0eC5OLnRleHQsICJVSU5UMTYi LCBXaWR0aCwgY3R4LkZpZWxkSW5Vbmlvbg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICApLA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjdHguTi5saW5lLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBjdHguTi50ZXh0LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICkNCj4gPg0KPiA+ICsg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIGdWZnJWYXJEYXRhVHlwZURCLkRhdGFUeXBlQWRkQml0 RmllbGQoTm9uZSwgIlVJTlQxNiIsIFdpZHRoLA0KPiA+IGN0eC5GaWVsZEluVW5pb24pLA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBjdHguRC5saW5lLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBjdHguRC50ZXh0LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjZGF0 YVN0cnVjdEJpdEZpZWxkOC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0RGF0YVN0cnVjdEJpdEZp ZWxkOChzZWxmLCBjdHg6DQo+ID4gVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RCaXRGaWVsZDhD b250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIFdpZHRoID0gc2VsZi5UcmFuc051bShjdHguTnVt YmVyKCkpDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguTiAhPSBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBn VmZyVmFyRGF0YVR5cGVEQi5EYXRhVHlwZUFkZEJpdEZpZWxkKGN0eC5OLnRleHQsICJVSU5UOCIs DQo+ID4gV2lkdGgsIGN0eC5GaWVsZEluVW5pb24pLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBjdHguTi5saW5lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjdHguTi50ZXh0LA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IGdWZnJWYXJEYXRhVHlwZURCLkRhdGFUeXBlQWRkQml0RmllbGQoTm9uZSwgIlVJTlQ4IiwgV2lk dGgsDQo+ID4gY3R4LkZpZWxkSW5VbmlvbiksDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0 eC5ELmxpbmUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5ELnRleHQsDQo+ID4NCj4g PiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGls ZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBEZWNsYXJlU3RhbmRhcmRE ZWZhdWx0U3RvcmFnZShzZWxmLCBMaW5lTm8pOg0KPiA+DQo+ID4gKyAgICAgICAgRFNPYmogPSBJ ZnJEZWZhdWx0U3RvcmUoIlN0YW5kYXJkIERlZmF1bHRzIikNCj4gPg0KPiA+ICsgICAgICAgIGdW ZnJEZWZhdWx0U3RvcmUuUmVnaXN0ZXJEZWZhdWx0U3RvcmUoDQo+ID4NCj4gPiArICAgICAgICAg ICAgRFNPYmouRGVmYXVsdFN0b3JlLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICJTdGFuZGFyZCBE ZWZhdWx0cyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgRUZJX1NUUklOR19JRF9JTlZBTElELA0K PiA+DQo+ID4gKyAgICAgICAgICAgIEVGSV9ISUlfREVGQVVMVF9DTEFTU19TVEFOREFSRCwNCj4g Pg0KPiA+ICsgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgIERTT2JqLlNldExpbmVObyhMaW5l Tm8pDQo+ID4NCj4gPiArICAgICAgICBEU09iai5TZXREZWZhdWx0TmFtZShFRklfU1RSSU5HX0lE X0lOVkFMSUQpDQo+ID4NCj4gPiArICAgICAgICBEU09iai5TZXREZWZhdWx0SWQoRUZJX0hJSV9E RUZBVUxUX0NMQVNTX1NUQU5EQVJEKQ0KPiA+DQo+ID4gKyAgICAgICAgRHNOb2RlID0gSWZyVHJl ZU5vZGUoDQo+ID4NCj4gPiArICAgICAgICAgICAgRUZJX0lGUl9ERUZBVUxUU1RPUkVfT1AsIERT T2JqLA0KPiA+IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKERTT2JqLkdldEluZm8oKSkNCj4gPg0K PiA+ICsgICAgICAgICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIERTT2JqTUYgPSBJ ZnJEZWZhdWx0U3RvcmUoIlN0YW5kYXJkIE1hbnVGYWN0dXJpbmciKQ0KPiA+DQo+ID4gKyAgICAg ICAgZ1ZmckRlZmF1bHRTdG9yZS5SZWdpc3RlckRlZmF1bHRTdG9yZSgNCj4gPg0KPiA+ICsgICAg ICAgICAgICBEU09iak1GLkRlZmF1bHRTdG9yZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAiU3Rh bmRhcmQgTWFudUZhY3R1cmluZyIsDQo+ID4NCj4gPiArICAgICAgICAgICAgRUZJX1NUUklOR19J RF9JTlZBTElELA0KPiA+DQo+ID4gKyAgICAgICAgICAgIEVGSV9ISUlfREVGQVVMVF9DTEFTU19N QU5VRkFDVFVSSU5HLA0KPiA+DQo+ID4gKyAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgRFNP YmpNRi5TZXRMaW5lTm8oTGluZU5vKQ0KPiA+DQo+ID4gKyAgICAgICAgRFNPYmpNRi5TZXREZWZh dWx0TmFtZShFRklfU1RSSU5HX0lEX0lOVkFMSUQpDQo+ID4NCj4gPiArICAgICAgICBEU09iak1G LlNldERlZmF1bHRJZChFRklfSElJX0RFRkFVTFRfQ0xBU1NfTUFOVUZBQ1RVUklORykNCj4gPg0K PiA+ICsgICAgICAgIERzTm9kZU1GID0gSWZyVHJlZU5vZGUoDQo+ID4NCj4gPiArICAgICAgICAg ICAgRUZJX0lGUl9ERUZBVUxUU1RPUkVfT1AsIERTT2JqTUYsDQo+ID4gZ0Zvcm1Qa2cuU3RydWN0 VG9TdHJlYW0oRFNPYmpNRi5HZXRJbmZvKCkpDQo+ID4NCj4gPiArICAgICAgICApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gRHNOb2RlLCBEc05vZGVNRg0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50 YXhQYXJzZXIjdmZyRm9ybVNldERlZmluaXRpb24uDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZm ckZvcm1TZXREZWZpbml0aW9uKHNlbGYsIGN0eDoNCj4gPiBWZnJTeW50YXhQYXJzZXIuVmZyRm9y bVNldERlZmluaXRpb25Db250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuSW5zZXJ0Q2hp bGQoc2VsZi5Sb290LCBjdHgpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkluc2VydENoaWxkKGN0 eC5Ob2RlLCBjdHguY2xhc3NEZWZpbml0aW9uKCkpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLklu c2VydENoaWxkKGN0eC5Ob2RlLCBjdHguc3ViY2xhc3NEZWZpbml0aW9uKCkpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBEc05vZGUsIERzTm9kZU1GID0NCj4gc2VsZi5EZWNsYXJlU3Rh bmRhcmREZWZhdWx0U3RvcmFnZShjdHguc3RhcnQubGluZSkNCj4gPg0KPiA+ICsgICAgICAgIGN0 eC5Ob2RlLmluc2VydENoaWxkKERzTm9kZSkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLmlu c2VydENoaWxkKERzTm9kZU1GKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIENsYXNzR3Vp ZE51bSA9IDANCj4gPg0KPiA+ICsgICAgICAgIEd1aWRMaXN0ID0gW10NCj4gPg0KPiA+ICsgICAg ICAgIGlmIGN0eC5jbGFzc2d1aWREZWZpbml0aW9uKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBHdWlkTGlzdCA9IGN0eC5jbGFzc2d1aWREZWZpbml0aW9uKCkuR3VpZExpc3QNCj4g Pg0KPiA+ICsgICAgICAgICAgICBDbGFzc0d1aWROdW0gPSBsZW4oR3VpZExpc3QpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBEZWZhdWx0Q2xhc3NHdWlkID0gRUZJX0hJSV9QTEFURk9S TV9TRVRVUF9GT1JNU0VUX0dVSUQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIHNl bGYuT3ZlcnJpZGVDbGFzc0d1aWQgIT0gTm9uZSBhbmQgQ2xhc3NHdWlkTnVtID49IDQ6DQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgY3R4LnN0YXJ0LmxpbmUsDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIE5vbmUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICJBbHJlYWR5IGhhcyA0IGNs YXNzIGd1aWRzLCBjYW4gbm90IGFkZCBleHRyYSBjbGFzcyBndWlkISIsDQo+ID4NCj4gPiArICAg ICAgICAgICAgKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgQ2xhc3NHdWlkTnVt ID09IDA6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgc2VsZi5PdmVycmlkZUNsYXNzR3VpZCAh PSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBDbGFzc0d1aWROdW0gPSAyDQo+ID4N Cj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgQ2xhc3NH dWlkTnVtID0gMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIEZTT2JqID0gSWZyRm9ybVNldChzaXpl b2YoRUZJX0lGUl9GT1JNX1NFVCkgKyBDbGFzc0d1aWROdW0gKg0KPiA+IHNpemVvZihFRklfR1VJ RCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgRlNPYmouU2V0Q2xhc3NHdWlkKERlZmF1bHRDbGFz c0d1aWQpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgc2VsZi5PdmVycmlkZUNsYXNzR3VpZCAh PSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBGU09iai5TZXRDbGFzc0d1aWQoc2Vs Zi5PdmVycmlkZUNsYXNzR3VpZCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYg Q2xhc3NHdWlkTnVtID09IDE6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgc2VsZi5PdmVycmlk ZUNsYXNzR3VpZCAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBDbGFzc0d1aWRO dW0gKz0gMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIEZTT2JqID0gSWZyRm9ybVNldChzaXplb2Yo RUZJX0lGUl9GT1JNX1NFVCkgKyBDbGFzc0d1aWROdW0gKg0KPiA+IHNpemVvZihFRklfR1VJRCkp DQo+ID4NCj4gPiArICAgICAgICAgICAgRlNPYmouU2V0Q2xhc3NHdWlkKEd1aWRMaXN0WzBdKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHNlbGYuT3ZlcnJpZGVDbGFzc0d1aWQgIT0gTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgRlNPYmouU2V0Q2xhc3NHdWlkKHNlbGYuT3ZlcnJp ZGVDbGFzc0d1aWQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbGlmIENsYXNzR3Vp ZE51bSA9PSAyOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHNlbGYuT3ZlcnJpZGVDbGFzc0d1 aWQgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgQ2xhc3NHdWlkTnVtICs9IDEN Cj4gPg0KPiA+ICsgICAgICAgICAgICBGU09iaiA9IElmckZvcm1TZXQoc2l6ZW9mKEVGSV9JRlJf Rk9STV9TRVQpICsgQ2xhc3NHdWlkTnVtICoNCj4gPiBzaXplb2YoRUZJX0dVSUQpKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIEZTT2JqLlNldENsYXNzR3VpZChHdWlkTGlzdFswXSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBGU09iai5TZXRDbGFzc0d1aWQoR3VpZExpc3RbMV0pDQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgc2VsZi5PdmVycmlkZUNsYXNzR3VpZCAhPSBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBGU09iai5TZXRDbGFzc0d1aWQoc2VsZi5PdmVycmlkZUNsYXNzR3Vp ZCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgQ2xhc3NHdWlkTnVtID09IDM6 DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgc2VsZi5PdmVycmlkZUNsYXNzR3VpZCAhPSBOb25l Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBDbGFzc0d1aWROdW0gKz0gMQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIEZTT2JqID0gSWZyRm9ybVNldChzaXplb2YoRUZJX0lGUl9GT1JNX1NFVCkg KyBDbGFzc0d1aWROdW0gKg0KPiA+IHNpemVvZihFRklfR1VJRCkpDQo+ID4NCj4gPiArICAgICAg ICAgICAgRlNPYmouU2V0Q2xhc3NHdWlkKEd1aWRMaXN0WzBdKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIEZTT2JqLlNldENsYXNzR3VpZChHdWlkTGlzdFsxXSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBGU09iai5TZXRDbGFzc0d1aWQoR3VpZExpc3RbMl0pDQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgc2VsZi5PdmVycmlkZUNsYXNzR3VpZCAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBGU09iai5TZXRDbGFzc0d1aWQoc2VsZi5PdmVycmlkZUNsYXNzR3VpZCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgQ2xhc3NHdWlkTnVtID09IDQ6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgc2VsZi5PdmVycmlkZUNsYXNzR3VpZCAhPSBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBDbGFzc0d1aWROdW0gKz0gMQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IEZTT2JqID0gSWZyRm9ybVNldChzaXplb2YoRUZJX0lGUl9GT1JNX1NFVCkgKyBDbGFzc0d1aWRO dW0gKg0KPiA+IHNpemVvZihFRklfR1VJRCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgRlNPYmou U2V0Q2xhc3NHdWlkKEd1aWRMaXN0WzBdKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIEZTT2JqLlNl dENsYXNzR3VpZChHdWlkTGlzdFsxXSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBGU09iai5TZXRD bGFzc0d1aWQoR3VpZExpc3RbMl0pDQo+ID4NCj4gPiArICAgICAgICAgICAgRlNPYmouU2V0Q2xh c3NHdWlkKEd1aWRMaXN0WzNdKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgRlNPYmou U2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgRlNPYmouU2V0R3Vp ZChjdHguZ3VpZERlZmluaXRpb24oKS5HdWlkKQ0KPiA+DQo+ID4gKyAgICAgICAgRlNPYmouU2V0 Rm9ybVNldFRpdGxlKHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkpDQo+ID4NCj4gPiArICAg ICAgICBGU09iai5TZXRIZWxwKHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkpDQo+ID4NCj4g PiArICAgICAgICBGU09iai5TZXRDbGFzc0d1aWROdW0obGVuKEd1aWRMaXN0KSkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBGU09iag0KPiA+DQo+ID4gKyAg ICAgICAgY3R4Lk5vZGUuQnVmZmVyID0gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oRlNPYmouR2V0 SW5mbygpKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgbGVuKEd1aWRMaXN0KSA9PSAwOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlLkJ1ZmZlciArPSBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVh bShEZWZhdWx0Q2xhc3NHdWlkKQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oR3VpZExpc3QpKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgY3R4Lk5vZGUuQnVmZmVyICs9IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFt KEd1aWRMaXN0W2ldKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgIyBEZWNsYXJlIHVu ZGVmaW5lZCBRdWVzdGlvbiBzbyB0aGF0IHRoZXkgY2FuIGJlIHVzZWQgaW4gZXhwcmVzc2lvbi4N Cj4gPg0KPiA+ICsgICAgICAgIEluc2VydE9wQ29kZUxpc3QgPSBOb25lDQo+ID4NCj4gPiArICAg ICAgICBpZiBnRm9ybVBrZy5IYXZlUGVuZGluZ1VuYXNzaWduZWQoKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBJbnNlcnRPcENvZGVMaXN0LCBSZXR1cm5Db2RlID0NCj4gZ0Zvcm1Qa2cuRGVjbGFy ZVBlbmRpbmdRdWVzdGlvbigNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZ1ZmclZhckRhdGFU eXBlREIsIGdWZnJEYXRhU3RvcmFnZSwgc2VsZi5WZnJRdWVzdGlvbkRCLA0KPiA+IGN0eC5zdG9w LmxpbmUNCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAgICAgU3Rh dHVzID0gMCBpZiBSZXR1cm5Db2RlID09IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNT DQo+ID4gZWxzZSAxDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5QYXJzZXJTdGF0dXMgKz0g U3RhdHVzDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5OZWVkQWRqdXN0T3Bjb2RlID0gVHJ1 ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5JbnNlcnRFbmROb2RlKGN0eC5O b2RlLCBjdHguc3RvcC5saW5lKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgc2Vs Zi5OZWVkQWRqdXN0T3Bjb2RlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuTGFzdEZvcm1O b2RlLkNoaWxkLnBvcCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgZm9yIEluc2VydE9wQ29kZSBp biBJbnNlcnRPcENvZGVMaXN0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBJbnNlcnROb2Rl ID0gSWZyVHJlZU5vZGUoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBJbnNlcnRPcENv ZGUuT3BDb2RlLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgSW5zZXJ0T3BDb2RlLkRh dGEsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVh bShJbnNlcnRPcENvZGUuRGF0YS5HZXRJbmZvKCkpLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICApDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuTGFzdEZvcm1Ob2RlLmluc2VydENo aWxkKEluc2VydE5vZGUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBnRm9ybVBrZy5C dWlsZFBrZyhzZWxmLlJvb3QpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkg VmZyU3ludGF4UGFyc2VyI2NsYXNzZ3VpZERlZmluaXRpb24uDQo+ID4NCj4gPiArICAgIGRlZiB2 aXNpdENsYXNzZ3VpZERlZmluaXRpb24oc2VsZiwgY3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5D bGFzc2d1aWREZWZpbml0aW9uQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0 Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZm9yIEd1aWRDdHgg aW4gY3R4Lmd1aWREZWZpbml0aW9uKCk6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lkd1aWRM aXN0LmFwcGVuZChHdWlkQ3R4Lkd1aWQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBy ZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2NsYXNzRGVmaW5pdGlvbi4NCj4gPg0K PiA+ICsgICAgZGVmIHZpc2l0Q2xhc3NEZWZpbml0aW9uKHNlbGYsIGN0eDogVmZyU3ludGF4UGFy c2VyLkNsYXNzRGVmaW5pdGlvbkNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgQ09iaiA9IElm ckNsYXNzKCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4N Cj4gPiArICAgICAgICBDbGFzcyA9IDANCj4gPg0KPiA+ICsgICAgICAgIGZvciBDbGFzc05hbWVD dHggaW4gY3R4LnZhbGlkQ2xhc3NOYW1lcygpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIENsYXNz IHw9IENsYXNzTmFtZUN0eC5DbGFzc05hbWUNCj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHgu c3RhcnQubGluZQ0KPiA+DQo+ID4gKyAgICAgICAgQ09iai5TZXRMaW5lTm8oTGluZSkNCj4gPg0K PiA+ICsgICAgICAgIENPYmouU2V0Q2xhc3MoQ2xhc3MpDQo+ID4NCj4gPiArICAgICAgICBDT2Jq LlNldENsYXNzU3RyKHNlbGYuRXh0cmFjdE9yaWdpbmFsVGV4dChjdHgpKQ0KPiA+DQo+ID4gKyAg ICAgICAgY3R4Lk5vZGUuRGF0YSA9IENPYmoNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkJ1 ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKENPYmouR2V0SW5mbygpKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2 YWxpZENsYXNzTmFtZXMuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZhbGlkQ2xhc3NOYW1lcyhz ZWxmLCBjdHg6DQo+ID4gVmZyU3ludGF4UGFyc2VyLlZhbGlkQ2xhc3NOYW1lc0NvbnRleHQpOg0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGlmIGN0eC5DbGFzc05vbkRldmljZSgpICE9IE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgY3R4LkNsYXNzTmFtZSA9IEVGSV9OT05fREVWSUNFX0NMQVNTDQo+ID4N Cj4gPiArICAgICAgICBlbGlmIGN0eC5DbGFzc0Rpc2tEZXZpY2UoKSAhPSBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGN0eC5DbGFzc05hbWUgPSBFRklfRElTS19ERVZJQ0VfQ0xBU1MNCj4g Pg0KPiA+ICsgICAgICAgIGVsaWYgY3R4LkNsYXNzVmlkZW9EZXZpY2UoKSAhPSBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGN0eC5DbGFzc05hbWUgPSBFRklfVklERU9fREVWSUNFX0NMQVNT DQo+ID4NCj4gPiArICAgICAgICBlbGlmIGN0eC5DbGFzc05ldHdvcmtEZXZpY2UoKSAhPSBOb25l Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5DbGFzc05hbWUgPSBFRklfTkVUV09SS19ERVZJ Q0VfQ0xBU1MNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgY3R4LkNsYXNzSW5wdXREZXZpY2UoKSAh PSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5DbGFzc05hbWUgPSBFRklfSU5QVVRf REVWSUNFX0NMQVNTDQo+ID4NCj4gPiArICAgICAgICBlbGlmIGN0eC5DbGFzc09uQm9hcmREZXZp Y2UoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5DbGFzc05hbWUgPSBFRklf T05fQk9BUkRfREVWSUNFX0NMQVNTDQo+ID4NCj4gPiArICAgICAgICBlbGlmIGN0eC5DbGFzc090 aGVyRGV2aWNlKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguQ2xhc3NOYW1l ID0gRUZJX09USEVSX0RFVklDRV9DTEFTUw0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0K PiA+ICsgICAgICAgICAgICBjdHguQ2xhc3NOYW1lID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVy KCkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4LkNsYXNzTmFtZQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBi eSBWZnJTeW50YXhQYXJzZXIjc3ViY2xhc3NEZWZpbml0aW9uLg0KPiA+DQo+ID4gKyAgICBkZWYg dmlzaXRTdWJjbGFzc0RlZmluaXRpb24oc2VsZiwgY3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5T dWJjbGFzc0RlZmluaXRpb25Db250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIFN1Yk9iaiA9IElm clN1YkNsYXNzKCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGls ZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0 LmxpbmUNCj4gPg0KPiA+ICsgICAgICAgIFN1Yk9iai5TZXRMaW5lTm8oTGluZSkNCj4gPg0KPiA+ ICsgICAgICAgIFN1YkNsYXNzID0gMA0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LlN1YmNsYXNz U2V0dXBBcHBsaWNhdGlvbigpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgU3ViQ2xh c3MgfD0gRUZJX1NFVFVQX0FQUExJQ0FUSU9OX1NVQkNMQVNTDQo+ID4NCj4gPiArICAgICAgICBl bGlmIGN0eC5TdWJjbGFzc0dlbmVyYWxBcHBsaWNhdGlvbigpICE9IE5vbmU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgU3ViQ2xhc3MgfD0gRUZJX0dFTkVSQUxfQVBQTElDQVRJT05fU1VCQ0xBU1MN Cj4gPg0KPiA+ICsgICAgICAgIGVsaWYgY3R4LlN1YmNsYXNzRnJvbnRQYWdlKCkgIT0gTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBTdWJDbGFzcyB8PSBFRklfRlJPTlRfUEFHRV9TVUJDTEFT Uw0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBjdHguU3ViY2xhc3NTaW5nbGVVc2UoKSAhPSBOb25l Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIFN1YkNsYXNzIHw9IEVGSV9TSU5HTEVfVVNFX1NVQkNM QVNTDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFN1YkNs YXNzID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKCkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBTdWJPYmouU2V0U3ViQ2xhc3MoU3ViQ2xhc3MpDQo+ID4NCj4gPiArICAgICAgICBT dWJPYmouU2V0U3ViQ2xhc3NTdHIoc2VsZi5FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eCkpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gU3ViT2JqDQo+ID4NCj4g PiArICAgICAgICBjdHguTm9kZS5CdWZmZXIgPSBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShTdWJP YmouR2V0SW5mbygpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5O b2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1 Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJGb3JtU2V0TGlzdC4NCj4gPg0KPiA+ICsgICAgZGVm IHZpc2l0VmZyRm9ybVNldExpc3Qoc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuVmZyRm9ybVNl dExpc3RDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgp DQo+ID4NCj4gPiArICAgICAgICBmb3IgQ3R4IGluIGN0eC52ZnJGb3JtU2V0KCk6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5JbnNlcnRDaGlsZChjdHguTm9kZSwgQ3R4KQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2 ZnJGb3JtU2V0Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJGb3JtU2V0KHNlbGYsIGN0eDog VmZyU3ludGF4UGFyc2VyLlZmckZvcm1TZXRDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBj dHgudmZyRm9ybURlZmluaXRpb24oKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0 eC5Ob2RlID0gY3R4LnZmckZvcm1EZWZpbml0aW9uKCkuTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAg aWYgY3R4LnZmckZvcm1NYXBEZWZpbml0aW9uKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBjdHguTm9kZSA9IGN0eC52ZnJGb3JtTWFwRGVmaW5pdGlvbigpLk5vZGUNCj4gPg0KPiA+ ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRJbWFnZSgpICE9IE5vbmU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50SW1hZ2UoKS5Ob2RlDQo+ID4N Cj4gPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50VmFyU3RvcmVMaW5lYXIoKSAhPSBOb25l Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFZhclN0 b3JlTGluZWFyKCkuTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFZh clN0b3JlRWZpKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0 eC52ZnJTdGF0ZW1lbnRWYXJTdG9yZUVmaSgpLk5vZGUNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0 eC52ZnJTdGF0ZW1lbnRWYXJTdG9yZU5hbWVWYWx1ZSgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50VmFyU3RvcmVOYW1lVmFsdWUoKS5O b2RlDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50RGVmYXVsdFN0b3JlKCkg IT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1l bnREZWZhdWx0U3RvcmUoKS5Ob2RlDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVt ZW50RGlzYWJsZUlmRm9ybVNldCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4 Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50RGlzYWJsZUlmRm9ybVNldCgpLk5vZGUNCj4gPg0KPiA+ ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmRm9ybVNldCgpICE9IE5vbmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50U3VwcHJl c3NJZkZvcm1TZXQoKS5Ob2RlDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50 RXh0ZW5zaW9uKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0 eC52ZnJTdGF0ZW1lbnRFeHRlbnNpb24oKS5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50 RGVmYXVsdFN0b3JlLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnREZWZhdWx0 U3RvcmUoc2VsZiwgY3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnREZWZhdWx0 U3RvcmVDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIFJlZk5hbWUgPSBjdHguTi50ZXh0DQo+ID4NCj4gPiArICAgICAgICBE U09iaiA9IElmckRlZmF1bHRTdG9yZShSZWZOYW1lKQ0KPiA+DQo+ID4gKyAgICAgICAgRGVmYXVs dFN0b3JlTmFtZUlkID0gc2VsZi5UcmFuc051bShjdHguUy50ZXh0KQ0KPiA+DQo+ID4gKyAgICAg ICAgRGVmYXVsdElkID0gKA0KPiA+DQo+ID4gKyAgICAgICAgICAgIEVGSV9ISUlfREVGQVVMVF9D TEFTU19TVEFOREFSRCBpZiBjdHguQXR0cmlidXRlKCkgPT0gTm9uZSBlbHNlDQo+ID4gc2VsZi5U cmFuc051bShjdHguQS50ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAg ICAgaWYgY3R4LkF0dHJpYnV0ZSgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgRFNP YmouSGFzQXR0ciA9IFRydWUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGdWZnJE ZWZhdWx0U3RvcmUuRGVmYXVsdElkUmVnaXN0ZXJlZChEZWZhdWx0SWQpID09IEZhbHNlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBnVmZyRGVmYXVsdFN0b3JlLlJlZ2lzdGVyRGVmYXVsdFN0b3JlKA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgRFNPYmouRGVmYXVsdFN0b3JlLCBSZWZOYW1lLCBEZWZhdWx0 U3RvcmVOYW1lSWQsIERlZmF1bHRJZA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICApLA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBMaW5lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBEU09iai5TZXREZWZhdWx0TmFtZShEZWZhdWx0U3RvcmVOYW1l SWQpDQo+ID4NCj4gPiArICAgICAgICAgICAgRFNPYmouU2V0RGVmYXVsdElkKERlZmF1bHRJZCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBEU09iai5TZXRMaW5lTm8oTGluZSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBjdHguTm9kZS5EYXRhID0gRFNPYmoNCj4gPg0KPiA+ICsgICAgICAgICAgICBj dHguTm9kZS5CdWZmZXIgPSBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShEU09iai5HZXRJbmZvKCkp DQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBOb2RlLCBS ZXR1cm5Db2RlID0gZ1ZmckRlZmF1bHRTdG9yZS5SZVJlZ2lzdGVyRGVmYXVsdFN0b3JlQnlJZCgN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgRGVmYXVsdElkLCBSZWZOYW1lLCBEZWZhdWx0U3Rv cmVOYW1lSWQNCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgTGluZSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBjdHguTm9kZS5PcENvZGUgPSBFRklfSUZSX1NIT1dOX0RFRkFVTFRTVE9SRV9PUCAgIyBGb3IN Cj4gPiBkaXNwbGF5IGluIFlBTUwNCj4gPg0KPiA+ICsgICAgICAgICAgICBEU09iai5TZXREZWZh dWx0SWQoRGVmYXVsdElkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIERTT2JqLlNldERlZmF1bHRO YW1lKERlZmF1bHRTdG9yZU5hbWVJZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZS5E YXRhID0gRFNPYmoNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiA+IFZm clN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRWYXJTdG9yZUxpbmVhci4NCj4gPg0KPiA+ICsgICAg ZGVmIHZpc2l0VmZyU3RhdGVtZW50VmFyU3RvcmVMaW5lYXIoDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRWYXJTdG9yZUxpbmVhckNvbnRl eHQNCj4gPg0KPiA+ICsgICAgKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJl bihjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBUeXBlTmFtZSA9IHN0cihjdHgu Z2V0Q2hpbGQoMSkpDQo+ID4NCj4gPiArICAgICAgICBpZiBUeXBlTmFtZSA9PSAiQ0hBUjE2IjoN Cj4gPg0KPiA+ICsgICAgICAgICAgICBUeXBlTmFtZSA9ICJVSU5UMTYiDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBJc0JpdFZhclN0b3JlID0gRmFsc2UNCj4gPg0KPiA+ICsgICAgICAg IGlmIGN0eC5UTiAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIElzQml0VmFyU3RvcmUg PSBnVmZyVmFyRGF0YVR5cGVEQi5EYXRhVHlwZUhhc0JpdEZpZWxkKGN0eC5UTi50ZXh0KQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgVmFyU3RvcmVJZCA9IEVGSV9WQVJTVE9SRV9JRF9J TlZBTElEDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguVmFySWQoKSAhPSBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIFZhclN0b3JlSWQgPSBzZWxmLlRyYW5zTnVtKGN0eC5JRC50ZXh0KQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuQ29tcGFyZUVycm9ySGFuZGxlcigNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgVmFyU3RvcmVJZCAhPSAwLCBUcnVlLCBjdHguSUQubGluZSwgY3R4 LklELnRleHQsICJ2YXJpZCAwIGlzIG5vdA0KPiBhbGxvd2VkLiINCj4gPg0KPiA+ICsgICAgICAg ICAgICApDQo+ID4NCj4gPiArICAgICAgICBTdG9yZU5hbWUgPSBjdHguU04udGV4dA0KPiA+DQo+ ID4gKyAgICAgICAgVlNPYmogPSBJZnJWYXJTdG9yZShUeXBlTmFtZSwgU3RvcmVOYW1lKQ0KPiA+ DQo+ID4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+ID4NCj4gPiArICAgICAgICBW U09iai5TZXRMaW5lTm8oTGluZSkNCj4gPg0KPiA+ICsgICAgICAgIFZTT2JqLlNldEhhc1ZhclN0 b3JlSWQoY3R4LlZhcklkKCkgIT0gTm9uZSkNCj4gPg0KPiA+ICsgICAgICAgIEd1aWQgPSBjdHgu Z3VpZERlZmluaXRpb24oKS5HdWlkDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkVycm9ySGFuZGxl cigNCj4gPg0KPiA+ICsgICAgICAgICAgICBnVmZyRGF0YVN0b3JhZ2UuRGVjbGFyZUJ1ZmZlclZh clN0b3JlKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBTdG9yZU5hbWUsIEd1aWQsIGdWZnJW YXJEYXRhVHlwZURCLCBUeXBlTmFtZSwgVmFyU3RvcmVJZCwNCj4gPiBJc0JpdFZhclN0b3JlDQo+ ID4NCj4gPiArICAgICAgICAgICAgKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICBMaW5lLA0KPiA+ DQo+ID4gKyAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgVlNPYmouU2V0R3VpZChHdWlkKQ0K PiA+DQo+ID4gKyAgICAgICAgVmFyU3RvcmVJZCwgUmV0dXJuQ29kZSA9IGdWZnJEYXRhU3RvcmFn ZS5HZXRWYXJTdG9yZUlkKFN0b3JlTmFtZSwNCj4gPiBHdWlkKQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4LlNOLmxpbmUsIGN0eC5TTi50ZXh0KQ0K PiA+DQo+ID4gKyAgICAgICAgVlNPYmouU2V0VmFyU3RvcmVJZChWYXJTdG9yZUlkKQ0KPiA+DQo+ ID4gKyAgICAgICAgU2l6ZSwgUmV0dXJuQ29kZSA9DQo+ID4gZ1ZmclZhckRhdGFUeXBlREIuR2V0 RGF0YVR5cGVTaXplQnlUeXBlTmFtZShUeXBlTmFtZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu RXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIExpbmUpDQo+ID4NCj4gPiArICAgICAgICBWU09iai5T ZXRTaXplKFNpemUpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gVlNPYmoNCj4g Pg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFt KFZTT2JqLkdldEluZm8oKSkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkJ1ZmZlciArPSBi eXRlcygiXDAiLCBlbmNvZGluZz0idXRmLTgiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgcmV0dXJuIFZTT2JqDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJz ZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRWYXJTdG9y ZUVmaS4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50VmFyU3RvcmVFZmkoc2Vs ZiwgY3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRWYXJTdG9yZUVmaUNvbnRl eHQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgR3VpZCA9IGN0eC5ndWlkRGVmaW5pdGlvbigpLkd1aWQNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIEN1c3RvbWl6ZWROYW1lID0gRmFsc2UNCj4gPg0KPiA+ICsgICAgICAgIElz Qml0VmFyU3RvcmUgPSBGYWxzZQ0KPiA+DQo+ID4gKyAgICAgICAgVmFyU3RvcmVJZCA9IEVGSV9W QVJTVE9SRV9JRF9JTlZBTElEDQo+ID4NCj4gPiArICAgICAgICBJc1VFRkkyM0VmaVZhcnN0b3Jl ID0gVHJ1ZQ0KPiA+DQo+ID4gKyAgICAgICAgUmV0dXJuQ29kZSA9IE5vbmUNCj4gPg0KPiA+ICsg ICAgICAgIE5hbWVTdHJpbmdJZCA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgIFZhclNpemUgPSBO b25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBUeXBlTmFtZSA9IHN0cihjdHguZ2V0 Q2hpbGQoMSkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBUeXBlTmFtZSA9PSAi Q0hBUjE2IjoNCj4gPg0KPiA+ICsgICAgICAgICAgICBUeXBlTmFtZSA9ICJVSU5UMTYiDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbGlmIGN0eC5UTiAhPSBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIEN1c3RvbWl6ZWROYW1lID0gVHJ1ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IElzQml0VmFyU3RvcmUgPSBnVmZyVmFyRGF0YVR5cGVEQi5EYXRhVHlwZUhhc0JpdEZpZWxkKFR5 cGVOYW1lKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LlZhcklkKCkgIT0g Tm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBWYXJTdG9yZUlkID0gc2VsZi5UcmFuc051bShj dHguSUQudGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkNvbXBhcmVFcnJvckhhbmRs ZXIoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIFZhclN0b3JlSWQgIT0gMCwgVHJ1ZSwgY3R4 LklELmxpbmUsIGN0eC5JRC50ZXh0LCAidmFyaWQgMCBpcyBub3QNCj4gYWxsb3dlZC4iDQo+ID4N Cj4gPiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgQXR0cmli dXRlcyA9IDANCj4gPg0KPiA+ICsgICAgICAgIEF0dHJpYnV0ZXNUZXh0ID0gIiINCj4gPg0KPiA+ ICsgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihjdHgudmZyVmFyU3RvcmVFZmlBdHRyKCkp KToNCj4gPg0KPiA+ICsgICAgICAgICAgICBBdHRyaWJ1dGVzIHw9IGN0eC52ZnJWYXJTdG9yZUVm aUF0dHIoaSkuQXR0cg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkgIT0g bGVuKGN0eC52ZnJWYXJTdG9yZUVmaUF0dHIoKSkgLSAxOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBBdHRyaWJ1dGVzVGV4dCArPSBmIntjdHgudmZyVmFyU3RvcmVFZmlBdHRyKGkpLkF0dHI6 IzAxMHh9IHwgIg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIEF0dHJpYnV0ZXNUZXh0ICs9IGYie2N0eC52ZnJWYXJTdG9yZUVmaUF0dHIoaSku QXR0cjojMDEweH0iDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguU04gIT0g Tm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBTdG9yZU5hbWUgPSBjdHguU04udGV4dA0KPiA+ DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBJc1VFRkkyM0VmaVZh cnN0b3JlID0gRmFsc2UNCj4gPg0KPiA+ICsgICAgICAgICAgICBOYW1lU3RyaW5nSWQgPSBzZWxm LlRyYW5zTnVtKGN0eC5WTi50ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFN0b3JlTmFtZSA9 DQo+ID4gZ1ZmclN0cmluZ0RCLkdldFZhclN0b3JlTmFtZUZyb21TdHJpbmdJZChOYW1lU3RyaW5n SWQpICAjDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgU3RvcmVOYW1lID09IE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIGdWZnJFcnJvckhhbmRsZS5IYW5kbGVXYXJuaW5nKA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOU1VQ UE9SVEVELA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgY3R4LlZOLmxpbmUsDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgZ2V0IHZhcnN0b3JlIG5hbWUgZm9yIHRo aXMgU3RyaW5nSWQhIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIG5vdCAoQ3VzdG9taXplZE5hbWUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIExpbmUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAiT2xkIHN0eWxl IGVmaXZhcnN0b3JlIG11c3QgaGF2ZSBTdHJpbmcgSWRlbnRpZmllciEiLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAgICAgU2l6ZSA9IHNlbGYuVHJhbnNO dW0oY3R4Lk4udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBTaXplID09IDE6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIFR5cGVOYW1lID0gIlVJTlQ4Ig0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGVsaWYgU2l6ZSA9PSAyOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBUeXBlTmFt ZSA9ICJVSU5UMTYiDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiBTaXplID09IDQ6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIFR5cGVOYW1lID0gIlVJTlQzMiINCj4gPg0KPiA+ICsgICAg ICAgICAgICBlbGlmIFNpemUgPT0gODoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgVHlwZU5h bWUgPSAiVUlOVDY0Ig0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9V TlNVUFBPUlRFRCwNCj4gPiBjdHguTi5saW5lLCBjdHguTi50ZXh0KQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgaWYgSXNVRUZJMjNFZmlWYXJzdG9yZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZ1ZmckRh dGFTdG9yYWdlLkRlY2xhcmVCdWZmZXJWYXJTdG9yZSgNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIFN0b3JlTmFtZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIEd1aWQsDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBnVmZyVmFyRGF0YVR5cGVEQiwNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIFR5cGVOYW1lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgVmFyU3RvcmVJZCwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIElzQml0VmFy U3RvcmUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVzLA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICApLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBMaW5lLA0K PiA+DQo+ID4gKyAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICAgICBWYXJTdG9yZUlk LCBSZXR1cm5Db2RlID0NCj4gZ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlSWQoU3RvcmVOYW1l LA0KPiA+IEd1aWQpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoUmV0 dXJuQ29kZSwgY3R4LlNOLmxpbmUsIGN0eC5TTi50ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IFNpemUsIFJldHVybkNvZGUgPQ0KPiA+IGdWZnJWYXJEYXRhVHlwZURCLkdldERhdGFUeXBlU2l6 ZUJ5VHlwZU5hbWUoVHlwZU5hbWUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FcnJvckhh bmRsZXIoUmV0dXJuQ29kZSwgTGluZSkNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIGdWZnJEYXRhU3RvcmFnZS5EZWNsYXJlQnVmZmVyVmFyU3RvcmUoDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBzZWxmLkdldFRleHQoY3R4LlROKSwNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIEd1aWQsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBnVmZyVmFy RGF0YVR5cGVEQiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIFR5cGVOYW1lLA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgVmFyU3RvcmVJZCwNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIElzQml0VmFyU3RvcmUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBBdHRyaWJ1dGVzLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICApLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBMaW5lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICkgICMNCj4gPg0KPiA+ ICsgICAgICAgICAgICBWYXJTdG9yZUlkLCBSZXR1cm5Db2RlID0NCj4gPiBnVmZyRGF0YVN0b3Jh Z2UuR2V0VmFyU3RvcmVJZChzZWxmLkdldFRleHQoY3R4LlROKSwgR3VpZCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguVk4ubGluZSwgY3R4 LlZOLnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgU2l6ZSwgUmV0dXJuQ29kZSA9DQo+ID4g Z1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlUeXBlTmFtZShUeXBlTmFtZSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguTi5s aW5lKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgVlNFT2JqID0gSWZyVmFyU3RvcmVF ZmkoVHlwZU5hbWUsIFN0b3JlTmFtZSkNCj4gPg0KPiA+ICsgICAgICAgIFZTRU9iai5TZXRMaW5l Tm8oTGluZSkNCj4gPg0KPiA+ICsgICAgICAgIFZTRU9iai5TZXRIYXNWYXJTdG9yZUlkKGN0eC5W YXJJZCgpICE9IE5vbmUpDQo+ID4NCj4gPiArICAgICAgICBWU0VPYmouU2V0R3VpZChHdWlkKQ0K PiA+DQo+ID4gKyAgICAgICAgVlNFT2JqLlNldFZhclN0b3JlSWQoVmFyU3RvcmVJZCkNCj4gPg0K PiA+ICsgICAgICAgIFZTRU9iai5TZXRTaXplKFNpemUpDQo+ID4NCj4gPiArICAgICAgICBWU0VP YmouU2V0QXR0cmlidXRlcyhBdHRyaWJ1dGVzKQ0KPiA+DQo+ID4gKyAgICAgICAgVlNFT2JqLlNl dEF0dHJpYnV0ZXNUZXh0KEF0dHJpYnV0ZXNUZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgVlNFT2Jq LlNldE5hbWVTdHJpbmdJZChOYW1lU3RyaW5nSWQpDQo+ID4NCj4gPiArICAgICAgICBWU0VPYmou U2V0VmFyU2l6ZShWYXJTaXplKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5v ZGUuRGF0YSA9IFZTRU9iag0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuQnVmZmVyID0gZ0Zv cm1Qa2cuU3RydWN0VG9TdHJlYW0oVlNFT2JqLkdldEluZm8oKSkNCj4gPg0KPiA+ICsgICAgICAg IGN0eC5Ob2RlLkJ1ZmZlciArPSBieXRlcygiXDAiLCBlbmNvZGluZz0idXRmLTgiKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNl ciN2ZnJWYXJTdG9yZUVmaUF0dHIuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclZhclN0b3Jl RWZpQXR0cihzZWxmLCBjdHg6DQo+ID4gVmZyU3ludGF4UGFyc2VyLlZmclZhclN0b3JlRWZpQXR0 ckNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4g Pg0KPiA+ICsgICAgICAgIGN0eC5BdHRyID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKCkpDQo+ ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4LkF0dHINCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gPiBWZnJTeW50YXhQYXJzZXIj dmZyU3RhdGVtZW50VmFyU3RvcmVOYW1lVmFsdWUuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZm clN0YXRlbWVudFZhclN0b3JlTmFtZVZhbHVlKA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZiwgY3R4 OiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFyU3RvcmVOYW1lVmFsdWVDb250ZXh0DQo+ ID4NCj4gPiArICAgICk6DQo+ID4NCj4gPiArICAgICAgICBTdG9yZU5hbWUgPSBjdHguU04udGV4 dA0KPiA+DQo+ID4gKyAgICAgICAgVlNOVk9iaiA9IElmclZhclN0b3JlTmFtZVZhbHVlKFN0b3Jl TmFtZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBHdWlkID0gY3R4Lmd1aWREZWZpbml0aW9uKCkuR3VpZA0K PiA+DQo+ID4gKyAgICAgICAgSGFzVmFyU3RvcmVJZCA9IEZhbHNlDQo+ID4NCj4gPiArICAgICAg ICBWYXJTdG9yZUlkID0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGlmIGN0eC5WYXJJZCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAg ICAgSGFzVmFyU3RvcmVJZCA9IFRydWUNCj4gPg0KPiA+ICsgICAgICAgICAgICBWYXJTdG9yZUlk ID0gc2VsZi5UcmFuc051bShjdHguSUQudGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LkNvbXBhcmVFcnJvckhhbmRsZXIoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIFZhclN0b3Jl SWQgIT0gMCwgVHJ1ZSwgY3R4LklELmxpbmUsIGN0eC5JRC50ZXh0LCAidmFyaWQgMCBpcyBub3QN Cj4gYWxsb3dlZCINCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBDcmVhdGVkID0gRmFsc2UNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IHNJbmRleCA9IDAgaWYgSGFzVmFyU3RvcmVJZCA9PSBGYWxzZSBlbHNlIDENCj4gPg0KPiA+ICsg ICAgICAgIGVJbmRleCA9IHNJbmRleCArIGxlbihjdHguTmFtZSgpKQ0KPiA+DQo+ID4gKyAgICAg ICAgZm9yIGkgaW4gcmFuZ2Uoc0luZGV4LCBlSW5kZXgpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGlmIENyZWF0ZWQgPT0gRmFsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuRXJy b3JIYW5kbGVyKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZ1ZmckRhdGFTdG9yYWdl LkRlY2xhcmVOYW1lVmFyU3RvcmVCZWdpbihTdG9yZU5hbWUsDQo+ID4gVmFyU3RvcmVJZCksDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBjdHguU04ubGluZSwNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgIGN0eC5TTi50ZXh0LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIENyZWF0ZWQgPSBUcnVlDQo+ID4NCj4gPiArICAg ICAgICAgICAgSXRlbSA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcihpKSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBWU05WT2JqLlNldE5hbWVJdGVtTGlzdChJdGVtKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGdWZnJEYXRhU3RvcmFnZS5OYW1lVGFibGVBZGRJdGVtKEl0ZW0pDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBnVmZyRGF0YVN0b3JhZ2UuRGVjbGFyZU5hbWVWYXJTdG9yZUVu ZChHdWlkKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgVlNOVk9iai5TZXRMaW5lTm8o Y3R4LnN0YXJ0LmxpbmUpDQo+ID4NCj4gPiArICAgICAgICBWU05WT2JqLlNldEd1aWQoR3VpZCkN Cj4gPg0KPiA+ICsgICAgICAgIFZhcnN0b3JlSWQsIFJldHVybkNvZGUgPSBnVmZyRGF0YVN0b3Jh Z2UuR2V0VmFyU3RvcmVJZChTdG9yZU5hbWUsDQo+ID4gR3VpZCkNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5TTi5saW5lLCBjdHguU04udGV4dCkN Cj4gPg0KPiA+ICsgICAgICAgIFZTTlZPYmouU2V0VmFyU3RvcmVJZChWYXJzdG9yZUlkKQ0KPiA+ DQo+ID4gKyAgICAgICAgVlNOVk9iai5TZXRIYXNWYXJTdG9yZUlkKEhhc1ZhclN0b3JlSWQpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gVlNOVk9iag0KPiA+ DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuQnVmZmVyID0gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0o VlNOVk9iai5HZXRJbmZvKCkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g Y3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUg cHJvZHVjZWQgYnkNCj4gPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50RGlzYWJsZUlmRm9y bVNldC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50RGlzYWJsZUlmRm9ybVNl dCgNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYsIGN0eDogVmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudERpc2FibGVJZkZvcm1TZXRDb250ZXh0DQo+ID4NCj4gPiArICAgICk6DQo+ID4NCj4gPiAr ICAgICAgICBESU9iaiA9IElmckRpc2FibGVJZigpDQo+ID4NCj4gPiArICAgICAgICBESU9iai5T ZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkNvbnN0YW50 T25seUluRXhwcmVzc2lvbiA9IFRydWUNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEg PSBESU9iag0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuQ29uZGl0aW9uID0gKA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICJkaXNhYmxlaWYiICsgIiAiICsNCj4gPiBzZWxmLkV4dHJhY3RPcmln aW5hbFRleHQoY3R4LnZmclN0YXRlbWVudEV4cHJlc3Npb24oKSkNCj4gPg0KPiA+ICsgICAgICAg ICkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkV4cHJlc3Npb24gPQ0KPiA+IHNlbGYuRXh0 cmFjdE9yaWdpbmFsVGV4dChjdHgudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpKQ0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu SW5zZXJ0RW5kTm9kZShjdHguTm9kZSwgY3R4LnN0b3AubGluZSkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAj IFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiA+IFZmclN5bnRheFBhcnNlciN2ZnJT dGF0ZW1lbnRTdXBwcmVzc0lmRm9ybVNldC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3Rh dGVtZW50U3VwcHJlc3NJZkZvcm1TZXQoDQo+ID4NCj4gPiArICAgICAgICBzZWxmLCBjdHg6IFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdXBwcmVzc0lmRm9ybVNldENvbnRleHQNCj4gPg0K PiA+ICsgICAgKToNCj4gPg0KPiA+ICsgICAgICAgIFNJT2JqID0gSWZyU3VwcHJlc3NJZigpDQo+ ID4NCj4gPiArICAgICAgICBTSU9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+ID4NCj4g PiArICAgICAgICBjdHguTm9kZS5EYXRhID0gU0lPYmoNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5O b2RlLkNvbmRpdGlvbiA9ICgNCj4gPg0KPiA+ICsgICAgICAgICAgICAic3VwcHJlc3NpZiIgKyAi ICIgKw0KPiA+IHNlbGYuRXh0cmFjdE9yaWdpbmFsVGV4dChjdHgudmZyU3RhdGVtZW50RXhwcmVz c2lvbigpKQ0KPiA+DQo+ID4gKyAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUu RXhwcmVzc2lvbiA9DQo+ID4gc2VsZi5FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1l bnRFeHByZXNzaW9uKCkpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4 KQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5JbnNlcnRFbmROb2RlKGN0eC5Ob2RlLCBjdHguc3Rv cC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBh cnNlciNndWlkU3ViRGVmaW5pdGlvbi4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0R3VpZFN1YkRl ZmluaXRpb24oc2VsZiwgY3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5HdWlkU3ViRGVmaW5pdGlv bkNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lkd1aWQuRGF0YTRbMF0gPSBzZWxmLlRy YW5zTnVtKGN0eC5OdW1iZXIoMCkpDQo+ID4NCj4gPiArICAgICAgICBjdHguR3VpZC5EYXRhNFsx XSA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5H dWlkLkRhdGE0WzJdID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDIpKQ0KPiA+DQo+ID4gKyAg ICAgICAgY3R4Lkd1aWQuRGF0YTRbM10gPSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoMykpDQo+ ID4NCj4gPiArICAgICAgICBjdHguR3VpZC5EYXRhNFs0XSA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51 bWJlcig0KSkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5HdWlkLkRhdGE0WzVdID0gc2VsZi5UcmFu c051bShjdHguTnVtYmVyKDUpKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lkd1aWQuRGF0YTRbNl0g PSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoNikpDQo+ID4NCj4gPiArICAgICAgICBjdHguR3Vp ZC5EYXRhNFs3XSA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcig3KSkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50 YXhQYXJzZXIjZ3VpZERlZmluaXRpb24uDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdEd1aWREZWZp bml0aW9uKHNlbGYsIGN0eDogVmZyU3ludGF4UGFyc2VyLkd1aWREZWZpbml0aW9uQ29udGV4dCk6 DQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgY3R4Lkd1aWQuRGF0YTEgPSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1i ZXIoMCkpDQo+ID4NCj4gPiArICAgICAgICBjdHguR3VpZC5EYXRhMiA9IHNlbGYuVHJhbnNOdW0o Y3R4Lk51bWJlcigxKSkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5HdWlkLkRhdGEzID0gc2VsZi5U cmFuc051bShjdHguTnVtYmVyKDIpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0 dXJuIE5vbmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUg cHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2dldFN0cmluZ0lkLg0KPiA+DQo+ID4gKyAgICBk ZWYgdmlzaXRHZXRTdHJpbmdJZChzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5HZXRTdHJpbmdJ ZENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgY3R4LlN0cmluZ0lkID0gc2VsZi5UcmFuc051 bShjdHguTnVtYmVyKCkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudEhlYWRl ci4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50SGVhZGVyKHNlbGYsIGN0eDoN Cj4gPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SGVhZGVyQ29udGV4dCk6DQo+ID4NCj4g PiArICAgICAgICBpZiBjdHguTm9kZS5EYXRhICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAg ICAgUHJvbXB0ID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDApKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGN0eC5Ob2RlLkRhdGEuU2V0UHJvbXB0KFByb21wdCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBIZWxwID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDEpKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGN0eC5Ob2RlLkRhdGEuU2V0SGVscChIZWxwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNl ciN2ZnJRdWVzdGlvbkhlYWRlci4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyUXVlc3Rpb25I ZWFkZXIoc2VsZiwgY3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5WZnJRdWVzdGlvbkhlYWRlckNv bnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2Vk IGJ5IFZmclN5bnRheFBhcnNlciN2ZnJRdWVzdGlvbkJhc2VJbmZvLg0KPiA+DQo+ID4gKyAgICBk ZWYgdmlzaXRWZnJRdWVzdGlvbkJhc2VJbmZvKHNlbGYsIGN0eDoNCj4gPiBWZnJTeW50YXhQYXJz ZXIuVmZyUXVlc3Rpb25CYXNlSW5mb0NvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkJh c2VJbmZvLlZhclR5cGUgPSBFRklfSUZSX1RZUEVfT1RIRVINCj4gPg0KPiA+ICsgICAgICAgIGN0 eC5CYXNlSW5mby5WYXJUb3RhbFNpemUgPSAwDQo+ID4NCj4gPiArICAgICAgICBjdHguQmFzZUlu Zm8uSW5mby5WYXJPZmZzZXQgPSBFRklfVkFST0ZGU0VUX0lOVkFMSUQNCj4gPg0KPiA+ICsgICAg ICAgIGN0eC5CYXNlSW5mby5WYXJTdG9yZUlkID0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQNCj4g Pg0KPiA+ICsgICAgICAgIGN0eC5CYXNlSW5mby5Jc0JpdFZhciA9IEZhbHNlDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBRTmFtZSA9IE5vbmUNCj4gPg0KPiA+ICsgICAgICAgIFFJZCA9 IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEDQo+ID4NCj4gPiArICAgICAgICBSZXR1cm5Db2RlID0g Tm9uZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5Vc2VkRGVmYXVsdEFycmF5ID0gW10NCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguTmFtZSgpICE9IE5vbmU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgUU5hbWUgPSBjdHguUU4udGV4dA0KPiA+DQo+ID4gKyAgICAgICAgICAgIFJl dHVybkNvZGUgPSBzZWxmLlZmclF1ZXN0aW9uREIuRmluZFF1ZXN0aW9uQnlOYW1lKFFOYW1lKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuQ29tcGFyZUVycm9ySGFuZGxlcigNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgUmV0dXJuQ29kZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOREVGSU5FRCwNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgY3R4LlFOLmxpbmUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5RTi50ZXh0 LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAiaGFzIGFscmVhZHkgYmVlbiB1c2VkIHBsZWFz ZSB1c2VkIGFudGhlciBuYW1lIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBWYXJJZFN0ciA9ICIiIGlmIGN0eC5WYXJJZCgpID09IE5vbmUg ZWxzZSBjdHgudmZyU3RvcmFnZVZhcklkKCkuVmFySWRTdHINCj4gPg0KPiA+ICsgICAgICAgIGlm IGN0eC5RdWVzdGlvbklkKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBRSWQgPSBz ZWxmLlRyYW5zTnVtKGN0eC5JRC50ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFJldHVybkNv ZGUgPSBzZWxmLlZmclF1ZXN0aW9uREIuRmluZFF1ZXN0aW9uQnlJZChRSWQpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5Db21wYXJlRXJyb3JIYW5kbGVyKA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBSZXR1cm5Db2RlLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fVU5ERUZJTkVELA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjdHgu SUQubGluZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4LklELnRleHQsDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICJoYXMgYWxyZWFkeSBiZWVuIHVzZWQgcGxlYXNlIHVzZWQgYW50 aGVyIG51bWJlciIsDQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgaWYgY3R4LlFUeXBlID09IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9S TUFMOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHNlbGYuSXNDaGVja0JveE9wOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyVHlwZSA9IEVGSV9JRlJfVFlQRV9C T09MRUFODQo+ID4NCj4gPiArICAgICAgICAgICAgUUlkLCBSZXR1cm5Db2RlID0gc2VsZi5WZnJR dWVzdGlvbkRCLlJlZ2lzdGVyUXVlc3Rpb24oUU5hbWUsDQo+ID4gVmFySWRTdHIsIFFJZCwgZ0Zv cm1Qa2cpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoUmV0dXJuQ29k ZSwgY3R4LnN0YXJ0LmxpbmUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbGlmIGN0 eC5RVHlwZSA9PSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX0RBVEU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclR5cGUgPSBFRklfSUZSX1RZUEVfREFURQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIFFJZCwgUmV0dXJuQ29kZSA9IHNlbGYuVmZyUXVlc3Rpb25EQi5SZWdp c3Rlck5ld0RhdGVRdWVzdGlvbigNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgUU5hbWUsIFZh cklkU3RyLCBRSWQsIGdGb3JtUGtnDQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5zdGFydC5saW5l KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBjdHguUVR5cGUgPT0gRUZJX1FV RVNJT05fVFlQRS5RVUVTVElPTl9USU1FOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5CYXNl SW5mby5WYXJUeXBlID0gRUZJX0lGUl9UWVBFX1RJTUUNCj4gPg0KPiA+ICsgICAgICAgICAgICBR SWQsIFJldHVybkNvZGUgPSBzZWxmLlZmclF1ZXN0aW9uREIuUmVnaXN0ZXJOZXdUaW1lUXVlc3Rp b24oDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIFFOYW1lLCBWYXJJZFN0ciwgUUlkLCBnRm9y bVBrZw0KPiA+DQo+ID4gKyAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LkVycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguc3RhcnQubGluZSkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGVsaWYgY3R4LlFUeXBlID09IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJ T05fUkVGOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5CYXNlSW5mby5WYXJUeXBlID0gRUZJ X0lGUl9UWVBFX1JFRg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIFZhcklkU3RyICE9ICIiOiAg IyBzdGFuZCBmb3IgcXVlc3Rpb24gd2l0aCBzdG9yYWdlLg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBRSWQsIFJldHVybkNvZGUgPSBzZWxmLlZmclF1ZXN0aW9uREIuUmVnaXN0ZXJSZWZRdWVz dGlvbigNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIFFOYW1lLCBWYXJJZFN0ciwgUUlk LCBnRm9ybVBrZw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5zdGFydC5saW5lKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIFFJ ZCwgUmV0dXJuQ29kZSA9IHNlbGYuVmZyUXVlc3Rpb25EQi5SZWdpc3RlclF1ZXN0aW9uKFFOYW1l LA0KPiA+IE5vbmUsIFFJZCwgZ0Zvcm1Qa2cpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAg ICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcihWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1IsDQo+ID4gY3R4LnN0YXJ0LmxpbmUpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkN1cnJRZXN0VmFySW5mbyA9IGN0eC5C YXNlSW5mbw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4Lk5vZGUuT3BDb2Rl ID09IEVGSV9JRlJfT05FX09GX09QOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICMgbmVlZCB0byBm dXJ0aGVyIHVwZGF0ZSB0aGUgVmFyVHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2Rl LkRhdGEgPSBJZnJPbmVPZihFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQsIFFOYW1lLA0KPiA+IFZh cklkU3RyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuQ3VycmVudFF1ZXN0aW9uID0gY3R4 Lk5vZGUuRGF0YQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuQ3VycmVudE1pbk1heERhdGEg PSBjdHguTm9kZS5EYXRhDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbGlmIGN0eC5O b2RlLk9wQ29kZSA9PSBFRklfSUZSX05VTUVSSUNfT1A6DQo+ID4NCj4gPiArICAgICAgICAgICAg Y3R4Lk5vZGUuRGF0YSA9IElmck51bWVyaWMoRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0LCBRTmFt ZSwNCj4gPiBWYXJJZFN0cikNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkN1cnJlbnRRdWVz dGlvbiA9IGN0eC5Ob2RlLkRhdGENCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkN1cnJlbnRN aW5NYXhEYXRhID0gY3R4Lk5vZGUuRGF0YQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg aWYgY3R4Lk5vZGUuRGF0YSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2Rl LkRhdGEuU2V0UU5hbWUoUU5hbWUpDQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUuRGF0 YS5TZXRWYXJJZFN0cihWYXJJZFN0cikNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZS5E YXRhLlNldFF1ZXN0aW9uSWQoUUlkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlLkRh dGEuU2V0SGFzUXVlc3Rpb25JZChjdHguUXVlc3Rpb25JZCgpICE9IE5vbmUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgaWYgY3R4LkJhc2VJbmZvLlZhclN0b3JlSWQgIT0gRUZJX1ZBUlNUT1JFX0lE X0lOVkFMSUQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5Ob2RlLkRhdGEuU2V0VmFy U3RvcmVJbmZvKGN0eC5CYXNlSW5mbykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJl dHVybiBjdHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2Ug dHJlZSBwcm9kdWNlZCBieQ0KPiA+IFZmclN5bnRheFBhcnNlciNxdWVzdGlvbmhlYWRlckZsYWdz RmllbGQuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZChz ZWxmLCBjdHg6DQo+ID4gVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZENv bnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0K PiA+ICsgICAgICAgIGlmIGN0eC5SZWFkT25seUZsYWcoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGN0eC5RSEZsYWcgPSAweDAxDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBlbGlmIGN0eC5JbnRlcmFjdGl2ZUZsYWcoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGN0eC5RSEZsYWcgPSAweDA0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbGlm IGN0eC5SZXNldFJlcXVpcmVkRmxhZygpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg Y3R4LlFIRmxhZyA9IDB4MTANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgY3R4 LlJlc3RTdHlsZUZsYWcoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5RSEZs YWcgPSAweDIwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbGlmIGN0eC5SZWNvbm5l Y3RSZXF1aXJlZEZsYWcoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5RSEZs YWcgPSAweDQwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbGlmIGN0eC5PcHRpb25P bmx5RmxhZygpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgZ1ZmckVycm9ySGFuZGxl LkhhbmRsZVdhcm5pbmcoDQo+ID4NCj4gPiArDQo+ID4NCj4gRUZJX1ZGUl9XQVJOSU5HX0NPREUu VkZSX1dBUk5JTkdfT0JTT0xFVEVEX0ZSQU1FV09SS19PUENPDQo+ID4gREUsIGN0eC5PLmxpbmUs IGN0eC5PLnRleHQNCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBlbGlmIGN0eC5OVkFjY2Vzc0ZsYWcoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGdWZnJFcnJvckhhbmRsZS5IYW5kbGVXYXJuaW5nKA0KPiA+DQo+ID4gKw0KPiA+ DQo+IEVGSV9WRlJfV0FSTklOR19DT0RFLlZGUl9XQVJOSU5HX09CU09MRVRFRF9GUkFNRVdPUktf T1BDTw0KPiA+IERFLCBjdHguTi5saW5lLCBjdHguTi50ZXh0DQo+ID4NCj4gPiArICAgICAgICAg ICAgKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBjdHguTGF0ZUNoZWNrRmxh ZygpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgZ1ZmckVycm9ySGFuZGxlLkhhbmRs ZVdhcm5pbmcoDQo+ID4NCj4gPiArDQo+ID4NCj4gRUZJX1ZGUl9XQVJOSU5HX0NPREUuVkZSX1dB Uk5JTkdfT0JTT0xFVEVEX0ZSQU1FV09SS19PUENPDQo+ID4gREUsIGN0eC5MLmxpbmUsIGN0eC5M LnRleHQNCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICByZXR1cm4gY3R4LlFIRmxhZw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0 IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RvcmFnZVZhcklk UnVsZTEuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclN0b3JhZ2VWYXJJZFJ1bGUxKHNlbGYs IGN0eDoNCj4gPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RvcmFnZVZhcklkUnVsZTFDb250ZXh0KToN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBTTmFtZSA9IGN0eC5TTjEudGV4dA0KPiA+DQo+ID4gKyAgICAgICAg Y3R4LlZhcklkU3RyICs9IFNOYW1lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBJZHgg PSBzZWxmLlRyYW5zTnVtKGN0eC5JLnRleHQpDQo+ID4NCj4gPiArICAgICAgICBjdHguVmFySWRT dHIgKz0gIlsiDQo+ID4NCj4gPiArICAgICAgICBjdHguVmFySWRTdHIgKz0gY3R4LkkudGV4dA0K PiA+DQo+ID4gKyAgICAgICAgY3R4LlZhcklkU3RyICs9ICJdIg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgY3R4LkJhc2VJbmZvLlZhclN0b3JlSWQsIFJldHVybkNvZGUgPQ0KPiA+IGdW ZnJEYXRhU3RvcmFnZS5HZXRWYXJTdG9yZUlkKFNOYW1lKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYg Y3R4LkNoZWNrRmxhZyBvciBSZXR1cm5Db2RlID09DQo+ID4gVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX1NVQ0NFU1M6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoUmV0 dXJuQ29kZSwgY3R4LlNOMS5saW5lLCBjdHguU04xLnRleHQpDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGdWZnJEYXRh U3RvcmFnZS5HZXROYW1lVmFyU3RvcmVJbmZvKGN0eC5CYXNlSW5mbywgSWR4KSwNCj4gPiBjdHgu U04xLmxpbmUsIGN0eC5TTjEudGV4dA0KPiA+DQo+ID4gKyAgICAgICAgICAgICkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguVmFySWRTdHINCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFy c2VyI3ZmclN0b3JhZ2VWYXJJZFJ1bGUyLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdG9y YWdlVmFySWRSdWxlMihzZWxmLCBjdHg6DQo+ID4gVmZyU3ludGF4UGFyc2VyLlZmclN0b3JhZ2VW YXJJZFJ1bGUyQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4o Y3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgVmFyU3RyID0gIiIgICMgdHlwZS5m aWVsZA0KPiA+DQo+ID4gKyAgICAgICAgU05hbWUgPSBjdHguU04yLnRleHQNCj4gPg0KPiA+ICsg ICAgICAgIGN0eC5WYXJJZFN0ciArPSBTTmFtZQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkJhc2VJ bmZvLlZhclN0b3JlSWQsIFJldHVybkNvZGUgPQ0KPiA+IGdWZnJEYXRhU3RvcmFnZS5HZXRWYXJT dG9yZUlkKFNOYW1lKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LkNoZWNrRmxhZyBvciBSZXR1 cm5Db2RlID09DQo+ID4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1M6DQo+ID4NCj4g PiArICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4LlNOMi5saW5l LCBjdHguU04yLnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgVmFyU3RvcmVUeXBlID0NCj4g PiBnVmZyRGF0YVN0b3JhZ2UuR2V0VmFyU3RvcmVUeXBlKGN0eC5CYXNlSW5mby5WYXJTdG9yZUlk KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmICgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg VmFyU3RvcmVUeXBlID09DQo+ID4gRUZJX1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RP UkVfQlVGRkVSDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIG9yIFZhclN0b3JlVHlwZSA9PQ0K PiA+IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX0JVRkZFUl9CSVRTDQo+ ID4NCj4gPiArICAgICAgICAgICAgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgVE5hbWUs IFJldHVybkNvZGUyID0NCj4gPiBnVmZyRGF0YVN0b3JhZ2UuR2V0QnVmZmVyVmFyU3RvcmVEYXRh VHlwZU5hbWUoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFy U3RvcmVJZA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKFJldHVybkNvZGUyLCBjdHguU04yLmxpbmUsIGN0eC5T TjIudGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgVmFyU3RyICs9IFROYW1lDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBDb3VudCA9IGxlbihjdHguRG90KCkpDQo+ID4NCj4g PiArICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBDb3VudCk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgY3R4LkNoZWNrRmxhZyBvciBSZXR1cm5Db2RlID09DQo+ID4gVmZyUmV0dXJuQ29kZS5W RlJfUkVUVVJOX1NVQ0NFU1M6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGNvbmQgPSAoVmFy U3RvcmVUeXBlICE9DQo+ID4gRUZJX1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVf QlVGRkVSKSBhbmQgKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgVmFyU3RvcmVUeXBl ICE9DQo+ID4gRUZJX1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfQlVGRkVSX0JJ VFMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBSZXR1cm5Db2RlID0gKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX0VGSVZBUlNUT1JFX1VTRV9FUlJPUg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgaWYgY29uZA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZWxzZSBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICApDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKFJldHVybkNv ZGUsIGN0eC5TTjIubGluZSwgY3R4LlNOMi50ZXh0KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGN0eC5WYXJJZFN0ciArPSAiLiINCj4gPg0KPiA+ICsgICAgICAgICAgICBWYXJT dHIgKz0gIi4iDQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LlZhcklkU3RyICs9IGN0eC5hcnJh eU5hbWUoaSkuU3ViU3RyDQo+ID4NCj4gPiArICAgICAgICAgICAgVmFyU3RyICs9IGN0eC5hcnJh eU5hbWUoaSkuU3ViU3RyWg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgVmFyU3Rv cmVUeXBlID09IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX0VGSToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgZ1ZmckRhdGFTdG9yYWdlLkdldEVmaVZhclN0b3JlSW5mbyhjdHguQmFzZUluZm8p LCBjdHguU04yLmxpbmUsDQo+ID4gY3R4LlNOMi50ZXh0DQo+ID4NCj4gPiArICAgICAgICAgICAg KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiAoDQo+ID4NCj4gPiArICAgICAg ICAgICAgVmFyU3RvcmVUeXBlID09DQo+ID4gRUZJX1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJf VkFSU1RPUkVfQlVGRkVSDQo+ID4NCj4gPiArICAgICAgICAgICAgb3IgVmFyU3RvcmVUeXBlID09 DQo+ID4gRUZJX1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfQlVGRkVSX0JJVFMN Cj4gPg0KPiA+ICsgICAgICAgICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgKA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8uSW5mby5WYXJPZmZzZXQsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5mby5WYXJUeXBlLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBjdHguQmFzZUluZm8uVmFyVG90YWxTaXplLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBjdHguQmFzZUluZm8uSXNCaXRWYXIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIFJl dHVybkNvZGUsDQo+ID4NCj4gPiArICAgICAgICAgICAgKSA9IGdWZnJWYXJEYXRhVHlwZURCLkdl dERhdGFGaWVsZEluZm8oVmFyU3RyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXJyb3JI YW5kbGVyKFJldHVybkNvZGUsIGN0eC5TTjIubGluZSwgVmFyU3RyKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIFZhckd1aWQgPQ0KPiBnVmZyRGF0YVN0b3JhZ2UuR2V0VmFyU3RvcmVHdWlkKGN0eC5C YXNlSW5mby5WYXJTdG9yZUlkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5k bGVyKGdWZnJCdWZmZXJDb25maWcuUmVnaXN0ZXIoU05hbWUsIFZhckd1aWQpLA0KPiA+IGN0eC5T TjIubGluZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBSZXR1cm5Db2RlID0gVmZyUmV0dXJuQ29k ZSgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZ1ZmckJ1ZmZlckNvbmZpZy5Xcml0ZSgNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICJhIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIFNOYW1lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgVmFyR3VpZCwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIE5vbmUsDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICBjdHguQmFzZUluZm8uVmFyVHlwZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIGN0eC5CYXNlSW5mby5JbmZvLlZhck9mZnNldCwNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIGN0eC5CYXNlSW5mby5WYXJUb3RhbFNpemUsDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICBzZWxmLlZhbHVlLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICApDQo+ID4NCj4g PiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVy KFJldHVybkNvZGUsIGN0eC5TTjIubGluZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkVy cm9ySGFuZGxlcigNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZ1ZmckRhdGFTdG9yYWdlLkFk ZEJ1ZmZlclZhclN0b3JlRmllbGRJbmZvKGN0eC5CYXNlSW5mbyksDQo+ID4gY3R4LlNOMi5saW5l DQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg cmV0dXJuIGN0eC5WYXJJZFN0cg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEg cGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyQ29uc3RhbnRWYWx1ZUZp ZWxkLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJDb25zdGFudFZhbHVlRmllbGQoc2VsZiwg Y3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5WZnJDb25zdGFudFZhbHVlRmllbGRDb250ZXh0KToN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBJbnREZWNTdHlsZSA9IEZhbHNlDQo+ID4NCj4gPiArICAgICAgICBp ZiBzZWxmLkN1cnJlbnRNaW5NYXhEYXRhICE9IE5vbmUgYW5kDQo+ID4gc2VsZi5DdXJyZW50TWlu TWF4RGF0YS5Jc051bWVyaWNPcGNvZGUoKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBOdW1lcmlj UXN0ID0gSWZyTnVtZXJpYyhzZWxmLkN1cnJlbnRRdWVzdGlvbikgICMNCj4gPg0KPiA+ICsgICAg ICAgICAgICBJbnREZWNTdHlsZSA9ICgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgVHJ1ZSBp ZiAoTnVtZXJpY1FzdC5HZXROdW1lcmljRmxhZ3MoKSAmIEVGSV9JRlJfRElTUExBWSkgPT0gMA0K PiBlbHNlDQo+ID4gRmFsc2UNCj4gPg0KPiA+ICsgICAgICAgICAgICApICAjDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguVHJ1ZVN5bWJvbCgpICE9IE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgY3R4LlZhbHVlTGlzdC5hcHBlbmQoMSkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGVsaWYgY3R4LkZhbHNlU3ltYm9sKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBjdHguVmFsdWVMaXN0LmFwcGVuZCgwKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgZWxpZiBjdHguT25lKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBj dHguVmFsdWVMaXN0LmFwcGVuZChpbnQoY3R4LmdldFRleHQoKSkpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBlbGlmIGN0eC5PbmVzKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBjdHguVmFsdWVMaXN0LmFwcGVuZChpbnQoY3R4LmdldFRleHQoKSkpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBlbGlmIGN0eC5aZXJvKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBjdHguVmFsdWVMaXN0LmFwcGVuZChpbnQoY3R4LmdldFRleHQoKSkpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbGlmIGN0eC5Db2xvbigpICE9IFtdOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIFRpbWUgPSBFRklfSElJX1RJTUUoKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIFRpbWUuSG91ciA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBUaW1lLk1pbnV0ZSA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBUaW1lLlNlY29uZCA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJl cigyKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguVmFsdWVMaXN0LmFwcGVuZChUaW1lKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBjdHguU2xhc2goKSAhPSBbXToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBEYXRlID0gRUZJX0hJSV9EQVRFKCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBEYXRlLlllYXIgPSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoMCkpDQo+ID4NCj4g PiArICAgICAgICAgICAgRGF0ZS5Nb250aCA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBEYXRlLkRheSA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJl cigyKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguVmFsdWVMaXN0LmFwcGVuZChEYXRlKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBjdHguU2VtaWNvbG9uKCkgIT0gW106 DQo+ID4NCj4gPiArICAgICAgICAgICAgUmVmID0gRUZJX0hJSV9SRUYoKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIFJlZi5RdWVzdGlvbklkID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDApKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIFJlZi5Gb3JtSWQgPSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1i ZXIoMSkpDQo+ID4NCj4gPiArICAgICAgICAgICAgUmVmLkRldmljZVBhdGggPSBzZWxmLlRyYW5z TnVtKGN0eC5OdW1iZXIoMikpDQo+ID4NCj4gPiArICAgICAgICAgICAgUmVmLkZvcm1TZXRHdWlk ID0gY3R4Lmd1aWREZWZpbml0aW9uKCkuR3VpZA0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5W YWx1ZUxpc3QuYXBwZW5kKFJlZikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYg Y3R4LlN0cmluZ1Rva2VuKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguVmFs dWVMaXN0LmFwcGVuZChzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoMCkpKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZWxpZiBjdHguT3BlbkJyYWNlKCkgIT0gTm9uZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBjdHguTGlzdFR5cGUgPSBUcnVlDQo+ID4NCj4gPiArICAgICAgICAgICAg VHlwZSA9IHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUNCj4gPg0KPiA+ICsgICAgICAgICAg ICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oY3R4Lk51bWJlcigpKSk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIGN0eC5WYWx1ZUxpc3QuYXBwZW5kKHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcihp KSkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIE5lZ2F0aXZlID0gVHJ1ZSBpZiBjdHguTmVnYXRpdmUoKSAhPSBOb25lIGVsc2UgRmFs c2UNCj4gPg0KPiA+ICsgICAgICAgICAgICAjIFRoZSB2YWx1ZSBzdG9yZWQgaW4gYml0IGZpZWxk cyBpcyBhbHdheXMgc2V0IHRvIFVJTlQzMiB0eXBlLg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlm IHNlbGYuQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBjdHguVmFsdWVMaXN0LmFwcGVuZChzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoMCkpKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIFR5cGUg PSBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJUeXBlDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICBWYWx1ZSA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIGlmIEludERlY1N0eWxlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgIGlmIE5lZ2F0aXZlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZiBWYWx1ZSA+IDB4ODA6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9Q QVJBTUVURVIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y3R4LnN0YXJ0LmxpbmUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIklOVDggdHlwZSBjYW4ndCBiaWcgdGhhbiAweDdGLCBzbWFsbCB0aGFuIC0weDgwIiwN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZiBWYWx1ZSA+IDB4N0Y6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9Q QVJBTUVURVIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y3R4LnN0YXJ0LmxpbmUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIklOVDggdHlwZSBjYW4ndCBiaWcgdGhhbiAweDdGLCBzbWFsbCB0aGFuIC0weDgwIiwN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIGlmIE5lZ2F0aXZlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgIFZhbHVlID0gflZhbHVlICsgMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgY3R4LlZhbHVlTGlzdC5hcHBlbmQoVmFsdWUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzE2Og0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgVmFsdWUgPSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIo MCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBJbnREZWNTdHlsZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBOZWdhdGl2ZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWYgVmFsdWUgPiAweDgwMDA6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY3R4LnN0YXJ0LmxpbmUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIklOVDE2IHR5cGUgY2FuJ3QgYmlnIHRoYW4gMHg3RkZGLCBz bWFsbCB0aGFuIC0weDgwMDAiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIFZhbHVlID4gMHg3RkZGOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGN0eC5zdGFydC5saW5lLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJTlQxNiB0eXBlIGNhbid0IGJpZyB0aGFuIDB4 N0ZGRiwgc21hbGwgdGhhbiAtMHg4MDAwIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIE5lZ2F0aXZl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0gflZhbHVlICsgMQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgY3R4LlZhbHVlTGlzdC5hcHBlbmQoVmFsdWUp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lG Ul9UWVBFX05VTV9TSVpFXzMyOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgVmFsdWUg PSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoMCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICBpZiBJbnREZWNTdHlsZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBp ZiBOZWdhdGl2ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgVmFs dWUgPiAweDgwMDAwMDAwOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5zdGFydC5s aW5lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJTlQz MiB0eXBlIGNhbid0IGJpZyB0aGFuIDB4N0ZGRkZGRkYsIHNtYWxsIHRoYW4gLQ0KPiA+IDB4ODAw MDAwMDAiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlmIFZhbHVlID4gMHg3RkZGRkZGRjoNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjdHguc3RhcnQubGluZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiSU5UMzIgdHlwZSBjYW4ndCBiaWcgdGhhbiAweDdGRkZGRkZG LCBzbWFsbCB0aGFuIC0NCj4gPiAweDgwMDAwMDAwIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIE5l Z2F0aXZlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0gflZhbHVl ICsgMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgY3R4LlZhbHVlTGlzdC5hcHBlbmQo VmFsdWUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0g RUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg VmFsdWUgPSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoMCkpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICBpZiBJbnREZWNTdHlsZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICBpZiBOZWdhdGl2ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg aWYgVmFsdWUgPiAweDgwMDAwMDAwMDAwMDAwMDA6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJ RF9QQVJBTUVURVIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY3R4LnN0YXJ0LmxpbmUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIklOVDY0IHR5cGUgY2FuJ3QgYmlnIHRoYW4gMHg3RkZGRkZGRkZGRkZGRkZGLCBz bWFsbA0KPiA+IHRoYW4gLTB4ODAwMDAwMDAwMDAwMDAwMCIsDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgVmFsdWUg PiAweDdGRkZGRkZGRkZGRkZGRkY6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVU RVIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LnN0 YXJ0LmxpbmUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IklOVDY0IHR5cGUgY2FuJ3QgYmlnIHRoYW4gMHg3RkZGRkZGRkZGRkZGRkZGLCBzbWFsbA0KPiA+ IHRoYW4gLTB4ODAwMDAwMDAwMDAwMDAwMCIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBOZWdhdGl2 ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9IH5WYWx1ZSArIDEN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGN0eC5WYWx1ZUxpc3QuYXBwZW5kKFZhbHVl KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgY3R4LlZhbHVlTGlzdC5hcHBlbmQoc2VsZi5UcmFuc051bShj dHguTnVtYmVyKDApKSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHgu VmFsdWVMaXN0DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVl IHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJJbWFnZVRhZy4NCj4gPg0KPiA+ICsgICAg ZGVmIHZpc2l0VmZySW1hZ2VUYWcoc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuVmZySW1hZ2VU YWdDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIElPYmogPSBJZnJJbWFnZSgpDQo+ID4NCj4g PiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgSU9i ai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+ID4NCj4gPiArICAgICAgICBJT2JqLlNldElt YWdlSWQoc2VsZi5UcmFuc051bShjdHguTnVtYmVyKCkpKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4 Lk5vZGUuRGF0YSA9IElPYmoNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkJ1ZmZlciA9IGdG b3JtUGtnLlN0cnVjdFRvU3RyZWFtKElPYmouR2V0SW5mbygpKQ0KPiA+DQo+ID4gKyAgICAgICAg cmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJz ZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJMb2NrZWRUYWcuDQo+ID4NCj4g PiArICAgIGRlZiB2aXNpdFZmckxvY2tlZFRhZyhzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5W ZnJMb2NrZWRUYWdDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIExPYmogPSBJZnJMb2NrZWQo KQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsg ICAgICAgIExPYmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAg Y3R4Lk5vZGUuRGF0YSA9IExPYmoNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkJ1ZmZlciA9 IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKExPYmouR2V0SW5mbygpKQ0KPiA+DQo+ID4gKyAgICAg ICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRTdGF0VGFn Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRTdGF0VGFnKHNlbGYsIGN0eDoN Cj4gPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdFRhZ0NvbnRleHQpOg0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIGlm IGN0eC52ZnJJbWFnZVRhZygpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5v ZGUgPSBjdHgudmZySW1hZ2VUYWcoKS5Ob2RlDQo+ID4NCj4gPiArICAgICAgICBlbGlmIGN0eC52 ZnJMb2NrZWRUYWcoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0g Y3R4LnZmckxvY2tlZFRhZygpLk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJl dHVybiBjdHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2Ug dHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50U3RhdFRhZ0xpc3Qu DQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFN0YXRUYWdMaXN0KHNlbGYsIGN0 eDoNCj4gPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdFRhZ0xpc3RDb250ZXh0KToN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAg ICAgICBmb3IgQ3R4IGluIGN0eC52ZnJTdGF0ZW1lbnRTdGF0VGFnKCk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5JbnNlcnRDaGlsZChjdHguTm9kZSwgQ3R4KQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJGb3Jt RGVmaW5pdGlvbi4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyRm9ybURlZmluaXRpb24oc2Vs ZiwgY3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5WZnJGb3JtRGVmaW5pdGlvbkNvbnRleHQpOg0K PiA+DQo+ID4gKyAgICAgICAgRk9iaiA9IElmckZvcm0oKQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIEZPYmou U2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgRm9ybUlkID0gc2Vs Zi5UcmFuc051bShjdHguTnVtYmVyKDApKQ0KPiA+DQo+ID4gKyAgICAgICAgRk9iai5TZXRGb3Jt SWQoRm9ybUlkKQ0KPiA+DQo+ID4gKyAgICAgICAgRm9ybVRpdGxlID0gc2VsZi5UcmFuc051bShj dHguTnVtYmVyKDEpKQ0KPiA+DQo+ID4gKyAgICAgICAgRk9iai5TZXRGb3JtVGl0bGUoRm9ybVRp dGxlKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IEZPYmoN Cj4gPg0KPiA+ICsgICAgICAgIGZvciBDdHggaW4gY3R4LnZmckZvcm0oKToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBzZWxmLkluc2VydENoaWxkKGN0eC5Ob2RlLCBDdHgpDQo+ID4NCj4gPiArICAg ICAgICBjdHguTm9kZS5CdWZmZXIgPSBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShGT2JqLkdldElu Zm8oKSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuSW5zZXJ0RW5kTm9kZShj dHguTm9kZSwgY3R4LnN0b3AubGluZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuTGFzdEZvcm1O b2RlID0gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHgu Tm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9k dWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyRm9ybS4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0 VmZyRm9ybShzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5WZnJGb3JtQ29udGV4dCk6DQo+ID4N Cj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAg aWYgY3R4LnZmclN0YXRlbWVudEltYWdlKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRJbWFnZSgpLk5vZGUNCj4gPg0KPiA+ICsgICAg ICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRMb2NrZWQoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudExvY2tlZCgpLk5vZGUNCj4gPg0KPiA+ ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRSdWxlcygpICE9IE5vbmU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50UnVsZXMoKS5Ob2RlDQo+ID4N Cj4gPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50RGVmYXVsdCgpICE9IE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50RGVmYXVsdCgpLk5v ZGUNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRTdGF0KCkgIT0gTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRTdGF0KCku Tm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFF1ZXN0aW9ucygpICE9 IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50 UXVlc3Rpb25zKCkuTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudENv bmRpdGlvbmFsKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0 eC52ZnJTdGF0ZW1lbnRDb25kaXRpb25hbCgpLk5vZGUNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0 eC52ZnJTdGF0ZW1lbnRMYWJlbCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4 Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50TGFiZWwoKS5Ob2RlDQo+ID4NCj4gPiArICAgICAgICBp ZiBjdHgudmZyU3RhdGVtZW50QmFubmVyKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRCYW5uZXIoKS5Ob2RlDQo+ID4NCj4gPiArICAg ICAgICBpZiBjdHgudmZyU3RhdGVtZW50SW52YWxpZCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50SW52YWxpZCgpLk5vZGUNCj4gPg0K PiA+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRFeHRlbnNpb24oKSAhPSBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudEV4dGVuc2lvbigp Lk5vZGUNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRNb2RhbCgpICE9IE5v bmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50TW9k YWwoKS5Ob2RlDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50UmVmcmVzaEV2 ZW50KCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJT dGF0ZW1lbnRSZWZyZXNoRXZlbnQoKS5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBh cnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckZvcm1NYXBEZWZpbml0aW9u Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJGb3JtTWFwRGVmaW5pdGlvbihzZWxmLCBjdHg6 DQo+ID4gVmZyU3ludGF4UGFyc2VyLlZmckZvcm1NYXBEZWZpbml0aW9uQ29udGV4dCk6DQo+ID4N Cj4gPiArICAgICAgICBGTWFwT2JqID0gSWZyRm9ybU1hcCgpDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgRm9ybU1hcE1ldGhvZE51 bWJlciA9IGxlbihjdHguTWFwVGl0bGUoKSkNCj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHgu c3RhcnQubGluZQ0KPiA+DQo+ID4gKyAgICAgICAgRk1hcE9iai5TZXRMaW5lTm8oTGluZSkNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKEZNYXBPYmouU2V0Rm9ybUlkKHNlbGYu VHJhbnNOdW0oY3R4LlMxLnRleHQpKSwNCj4gPiBjdHguUzEubGluZSwgY3R4LlMxLmxpbmUpDQo+ ID4NCj4gPiArICAgICAgICBpZiBGb3JtTWFwTWV0aG9kTnVtYmVyID09IDA6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwgTGluZSwgIk5vDQo+ ID4gTWFwTWV0aG9kIGlzIHNldCBmb3IgRm9ybU1hcCEiDQo+ID4NCj4gPiArICAgICAgICAgICAg KQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBmb3IgaSBp biByYW5nZSgwLCBGb3JtTWFwTWV0aG9kTnVtYmVyKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgRk1hcE9iai5TZXRGb3JtTWFwTWV0aG9kKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5UcmFuc051bShjdHguTnVtYmVyKGkgKyAxKSksIGN0eC5ndWlkRGVmaW5pdGlvbihp KS5HdWlkDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgIEZv cm1NYXAgPSBGTWFwT2JqLkdldEluZm8oKQ0KPiA+DQo+ID4gKyAgICAgICAgTWV0aG9kTWFwTGlz dCA9IEZNYXBPYmouR2V0TWV0aG9kTWFwTGlzdCgpDQo+ID4NCj4gPiArICAgICAgICBmb3IgTWV0 aG9kTWFwIGluIE1ldGhvZE1hcExpc3Q6DQo+ID4NCj4gPiArICAgICAgICAgICAgIyBFeHRlbmQg SGVhZGVyIFNpemUgZm9yIE1ldGhvZE1hcExpc3QNCj4gPg0KPiA+ICsgICAgICAgICAgICBGb3Jt TWFwLkhlYWRlci5MZW5ndGggKz0gc2l6ZW9mKEVGSV9JRlJfRk9STV9NQVBfTUVUSE9EKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IEZNYXBPYmoNCj4gPg0K PiA+ICsgICAgICAgIGN0eC5Ob2RlLkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKEZv cm1NYXApDQo+ID4NCj4gPiArICAgICAgICBmb3IgTWV0aG9kTWFwIGluIE1ldGhvZE1hcExpc3Q6 DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUuQnVmZmVyICs9IGdGb3JtUGtnLlN0cnVj dFRvU3RyZWFtKE1ldGhvZE1hcCkNCj4gPg0KPiA+ICsgICAgICAgIGZvciBDdHggaW4gY3R4LnZm ckZvcm0oKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkluc2VydENoaWxkKGN0eC5Ob2Rl LCBDdHgpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkluc2VydEVuZE5vZGUoY3R4Lk5vZGUsIGN0 eC5zdG9wLmxpbmUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5v ZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudEltYWdlLg0KPiA+DQo+ID4gKyAgICBk ZWYgdmlzaXRWZnJTdGF0ZW1lbnRJbWFnZShzZWxmLCBjdHg6DQo+ID4gVmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudEltYWdlQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0 Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZySW1hZ2VU YWcoKS5Ob2RlDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4 UGFyc2VyI3ZmclN0YXRlbWVudExvY2tlZC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3Rh dGVtZW50TG9ja2VkKHNlbGYsIGN0eDoNCj4gPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 TG9ja2VkQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4 KQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyTG9ja2VkVGFnKCkuTm9kZQ0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJT dGF0ZW1lbnRSdWxlcy4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50UnVsZXMo c2VsZiwgY3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRSdWxlc0NvbnRleHQp Og0KPiA+DQo+ID4gKyAgICAgICAgUk9iaiA9IElmclJ1bGUoKQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIFJP YmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgUnVsZU5hbWUg PSBzZWxmLlRyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIoKSkNCj4gPg0KPiA+ICsgICAgICAg IFJPYmouU2V0UnVsZU5hbWUoUnVsZU5hbWUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlZmclJ1 bGVzREIuUmVnaXN0ZXJSdWxlKFJ1bGVOYW1lKQ0KPiA+DQo+ID4gKyAgICAgICAgUk9iai5TZXRS dWxlSWQoc2VsZi5WZnJSdWxlc0RCLkdldFJ1bGVJZChSdWxlTmFtZSkpDQo+ID4NCj4gPiArICAg ICAgICBjdHguTm9kZS5EYXRhID0gUk9iag0KPiA+DQo+ID4gKyAgICAgICAgIyBleHByZXNzaW9u DQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5FeHByZXNzaW9uID0NCj4gPiBzZWxmLkV4dHJh Y3RPcmlnaW5hbFRleHQoY3R4LnZmclN0YXRlbWVudEV4cHJlc3Npb24oKSkNCj4gPg0KPiA+ICsg ICAgICAgIGN0eC5Ob2RlLkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKFJPYmouR2V0 SW5mbygpKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5JbnNlcnRFbmROb2RlKGN0eC5Ob2RlLCBj dHguc3RvcC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5 bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRTdGF0Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJT dGF0ZW1lbnRTdGF0KHNlbGYsIGN0eDoNCj4gPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 U3RhdENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkN Cj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRTdWJUaXRsZSgpICE9IE5vbmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50U3ViVGl0 bGUoKS5Ob2RlDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50U3RhdGljVGV4 dCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3Rh dGVtZW50U3RhdGljVGV4dCgpLk5vZGUNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0 ZW1lbnRDcm9zc1JlZmVyZW5jZSgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4 Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50Q3Jvc3NSZWZlcmVuY2UoKS5Ob2RlDQo+ID4NCj4gPiAr ICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNp dCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFN1 YlRpdGxlLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRTdWJUaXRsZShzZWxm LCBjdHg6DQo+ID4gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN1YlRpdGxlQ29udGV4dCk6 DQo+ID4NCj4gPiArICAgICAgICBTT2JqID0gSWZyU3VidGl0bGUoKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+ID4NCj4gPiArICAgICAgICBT T2JqLlNldExpbmVObyhMaW5lKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgUHJvbXB0 ID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKCkpDQo+ID4NCj4gPiArICAgICAgICBTT2JqLlNl dFByb21wdChQcm9tcHQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0 Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnZmclN1 YnRpdGxlRmxhZ3MoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFNPYmouU2V0Rmxh Z3MoY3R4LnZmclN1YnRpdGxlRmxhZ3MoKS5TdWJGbGFncykNCj4gPg0KPiA+ICsgICAgICAgICAg ICBTT2JqLlNldEZsYWdzU3RyZWFtKHNlbGYuRXh0cmFjdE9yaWdpbmFsVGV4dChjdHgudmZyU3Vi dGl0bGVGbGFncygpKSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkJ1 ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKFNPYmouR2V0SW5mbygpKQ0KPiA+DQo+ID4g KyAgICAgICAgIyBzZXF1ZW5jZSBxdWVzdGlvbg0KPiA+DQo+ID4gKyAgICAgICAgZm9yIEN0eCBp biBjdHgudmZyU3RhdGVtZW50U3ViVGl0bGVDb21wb25lbnQoKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLkluc2VydENoaWxkKGN0eC5Ob2RlLCBDdHgpDQo+ID4NCj4gPiArICAgICAgICBj dHguTm9kZS5EYXRhID0gU09iag0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5JbnNlcnRFbmROb2Rl KGN0eC5Ob2RlLCBjdHguc3RvcC5saW5lKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg cmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJz ZSB0cmVlIHByb2R1Y2VkIGJ5DQo+ID4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFN1YlRp dGxlQ29tcG9uZW50Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRTdWJUaXRs ZUNvbXBvbmVudCgNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYsIGN0eDogVmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudFN1YlRpdGxlQ29tcG9uZW50Q29udGV4dA0KPiA+DQo+ID4gKyAgICApOg0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAg ICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRRdWVzdGlvbnMoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFF1ZXN0aW9ucygpLk5vZGUNCj4g Pg0KPiA+ICsgICAgICAgIGVsaWYgY3R4LnZmclN0YXRlbWVudFN0YXQoKSAhPSBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFN0YXQoKS5Ob2Rl DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3Zm clN1YnRpdGxlRmxhZ3MuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclN1YnRpdGxlRmxhZ3Mo c2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJzZXIuVmZyU3VidGl0bGVGbGFnc0NvbnRleHQpOg0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGZvciBGbGFnc0ZpZWxkQ3R4IGluIGN0eC5zdWJ0aXRsZUZsYWdzRmll bGQoKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguU3ViRmxhZ3MgfD0gRmxhZ3NGaWVsZEN0 eC5GbGFnDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gTm9uZQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJT eW50YXhQYXJzZXIjc3VidGl0bGVGbGFnc0ZpZWxkLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRT dWJ0aXRsZUZsYWdzRmllbGQoc2VsZiwgY3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5TdWJ0aXRs ZUZsYWdzRmllbGRDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5OdW1iZXIoKSAh PSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5GbGFnID0gc2VsZi5UcmFuc051bShj dHguTnVtYmVyKCkpDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGN0eC5GbGFnID0gMHgwMQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJu IHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlz aXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRT dGF0aWNUZXh0Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRTdGF0aWNUZXh0 KHNlbGYsIGN0eDoNCj4gPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdGljVGV4dENv bnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIFFJZCA9IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEDQo+ ID4NCj4gPiArICAgICAgICBIZWxwID0gc2VsZi5UcmFuc051bShjdHguUzEudGV4dCkNCj4gPg0K PiA+ICsgICAgICAgIFByb21wdCA9IHNlbGYuVHJhbnNOdW0oY3R4LlMyLnRleHQpDQo+ID4NCj4g PiArICAgICAgICBUeHRUd28gPSBFRklfU1RSSU5HX0lEX0lOVkFMSUQNCj4gPg0KPiA+ICsgICAg ICAgIGlmIGN0eC5TMyAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFR4dFR3byA9IHNl bGYuVHJhbnNOdW0oY3R4LlMzLnRleHQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBU ZXh0RmxhZ3MgPSAwDQo+ID4NCj4gPiArICAgICAgICBGbGFnc1N0cmVhbSA9ICIiDQo+ID4NCj4g PiArICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oY3R4LnN0YXRpY1RleHRGbGFnc0ZpZWxk KCkpKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBUZXh0RmxhZ3MgfD0gY3R4LnN0YXRpY1RleHRG bGFnc0ZpZWxkKGkpLkZsYWcNCj4gPg0KPiA+ICsgICAgICAgICAgICBGbGFnc1N0cmVhbSArPSBz ZWxmLkV4dHJhY3RPcmlnaW5hbFRleHQoY3R4LnN0YXRpY1RleHRGbGFnc0ZpZWxkKGkpKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIGkgIT0gbGVuKGN0eC5zdGF0aWNUZXh0RmxhZ3NGaWVsZCgp KSAtIDE6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIEZsYWdzU3RyZWFtICs9ICIgfCAiDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBUZXh0RmxhZ3MgJiBFRklfSUZSX0ZMQUdf Q0FMTEJBQ0s6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgVHh0VHdvICE9IEVGSV9TVFJJTkdf SURfSU5WQUxJRDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZ1ZmckVycm9ySGFuZGxlLkhh bmRsZVdhcm5pbmcoDQo+ID4NCj4gPiArDQo+ID4gRUZJX1ZGUl9XQVJOSU5HX0NPREUuVkZSX1dB Uk5JTkdfQUNUSU9OX1dJVEhfVEVYVF9UV08sDQo+ID4gY3R4LlMzLmxpbmUsIGN0eC5TMy50ZXh0 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgICAgICBBT2JqID0gSWZyQWN0aW9uKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBRSWQsIF8g PSBzZWxmLlZmclF1ZXN0aW9uREIuUmVnaXN0ZXJRdWVzdGlvbihOb25lLCBOb25lLCBRSWQsDQo+ ID4gZ0Zvcm1Qa2cpDQo+ID4NCj4gPiArICAgICAgICAgICAgQU9iai5TZXRMaW5lTm8oY3R4LkYu bGluZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBBT2JqLlNldFF1ZXN0aW9uSWQoUUlkKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIEFPYmouU2V0SGVscChIZWxwKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIEFPYmouU2V0UHJvbXB0KFByb21wdCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBBT2JqLlNl dEZsYWdzU3RyZWFtKEZsYWdzU3RyZWFtKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXJy b3JIYW5kbGVyKEFPYmouU2V0RmxhZ3MoVGV4dEZsYWdzKSwgY3R4LkYubGluZSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBjdHguS2V5KCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgQU9iai5TZXRIYXNLZXkoVHJ1ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgS2V5 ID0gc2VsZi5UcmFuc051bShjdHguUzQudGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5Bc3NpZ25RdWVzdGlvbktleShBT2JqLCBLZXkpDQo+ID4NCj4gPiArICAgICAgICAgICAg Y3R4Lk5vZGUuRGF0YSA9IEFPYmoNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZS5PcENv ZGUgPSBFRklfSUZSX1RFWFRfT1AgICMNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZS5C dWZmZXIgPSBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShBT2JqLkdldEluZm8oKSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLkluc2VydEVuZE5vZGUoY3R4Lk5vZGUsIGN0eC5zdG9wLmxpbmUp DQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFRPYmogPSBJ ZnJUZXh0KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4g Pg0KPiA+ICsgICAgICAgICAgICBUT2JqLlNldExpbmVObyhMaW5lKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIFRPYmouU2V0SGVscChIZWxwKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFRPYmouU2V0 UHJvbXB0KFByb21wdCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBUeHRUd28gIT0gRUZJX1NU UklOR19JRF9JTlZBTElEOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBUT2JqLlNldFRleHRU d28oVHh0VHdvKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBUT2JqLlNldEhhc1RleHRUd28o VHJ1ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZS5EYXRhID0gVE9iag0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlLkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFt KFRPYmouR2V0SW5mbygpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0 eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNzdGF0aWNUZXh0RmxhZ3NGaWVsZC4NCj4gPg0KPiA+ ICsgICAgZGVmIHZpc2l0U3RhdGljVGV4dEZsYWdzRmllbGQoc2VsZiwgY3R4Og0KPiA+IFZmclN5 bnRheFBhcnNlci5TdGF0aWNUZXh0RmxhZ3NGaWVsZENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGlmIGN0eC5OdW1iZXIoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5GbGFn ID0gc2VsZi5UcmFuc051bShjdHguTi50ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGN0 eC5GbGFnICE9IDA6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVy KFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwNCj4gPiBjdHguTi5saW5lKQ0K PiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguRmxhZyA9 IGN0eC5xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoKS5RSEZsYWcNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIHJldHVybiBjdHguRmxhZw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAj IFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiA+IFZmclN5bnRheFBhcnNlciN2ZnJT dGF0ZW1lbnRDcm9zc1JlZmVyZW5jZS4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVt ZW50Q3Jvc3NSZWZlcmVuY2UoDQo+ID4NCj4gPiArICAgICAgICBzZWxmLCBjdHg6IFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnRDcm9zc1JlZmVyZW5jZUNvbnRleHQNCj4gPg0KPiA+ICsgICAg KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiAr ICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50R290bygpICE9IE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50R290bygpLk5vZGUNCj4gPg0KPiA+ ICsgICAgICAgIGVsaWYgY3R4LnZmclN0YXRlbWVudFJlc2V0QnV0dG9uKCkgIT0gTm9uZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRSZXNldEJ1dHRv bigpLk5vZGUNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQ YXJzZXIjdmZyU3RhdGVtZW50R290by4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVt ZW50R290byhzZWxmLCBjdHg6DQo+ID4gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEdvdG9D b250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIFJlZlR5cGUgPSA1DQo+ID4NCj4gPiArICAgICAg ICBEZXZQYXRoID0gRUZJX1NUUklOR19JRF9JTlZBTElEDQo+ID4NCj4gPiArICAgICAgICBRSWQg PSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KPiA+DQo+ID4gKyAgICAgICAgQml0TWFzayA9IDAN Cj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+DQo+ID4gKyAgICAg ICAgUjVPYmogPSBJZnJSZWY1KCkNCj4gPg0KPiA+ICsgICAgICAgIFI1T2JqLlNldExpbmVObyhM aW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgR09iaiA9IFI1T2JqDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBpZiBjdHguRGV2aWNlUGF0aCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgUmVmVHlwZSA9IDQNCj4gPg0KPiA+ICsgICAgICAgICAgICBEZXZQYXRoID0gc2VsZi5U cmFuc051bShjdHguTnVtYmVyKDApKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIEZJZCA9IHNlbGYu VHJhbnNOdW0oY3R4Lk51bWJlcigxKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBRSWQgPSBzZWxm LlRyYW5zTnVtKGN0eC5OdW1iZXIoMikpDQo+ID4NCj4gPiArICAgICAgICAgICAgUjRPYmogPSBJ ZnJSZWY0KCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBSNE9iai5TZXRMaW5lTm8oTGluZSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBSNE9iai5TZXREZXZpY2VQYXRoKERldlBhdGgpDQo+ID4NCj4g PiArICAgICAgICAgICAgUjRPYmouU2V0Rm9ybUlkKEZJZCkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBSNE9iai5TZXRRSWQoUUlkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIEdPYmogPSBSNE9iag0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBjdHguRm9ybVNldEd1aWQoKSAhPSBO b25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFJlZlR5cGUgPSAzDQo+ID4NCj4gPiArICAgICAg ICAgICAgRklkID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDApKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIFFJZCA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBSM09iaiA9IElmclJlZjMoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFIzT2JqLlNl dExpbmVObyhMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFIzT2JqLlNldEZvcm1JZChGSWQp DQo+ID4NCj4gPiArICAgICAgICAgICAgUjNPYmouU2V0UUlkKFFJZCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBHT2JqID0gUjNPYmoNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYg Y3R4LlF1ZXN0aW9uKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBGSWQgPSBzZWxm LlRyYW5zTnVtKGN0eC5OdW1iZXIoMCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgUmVmVHlwZSA9 IDINCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBjdHguUU4gIT0gTm9uZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgTmFtZSA9IGN0eC5RTi50ZXh0DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIFFJZCwgQml0TWFzaywgXyA9IHNlbGYuVmZyUXVlc3Rpb25EQi5HZXRRdWVzdGlvbklkKE5h bWUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFFJZCA9PSBFRklfUVVFU1RJT05fSURf SU5WQUxJRDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVy KFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTkRFRklORUQsDQo+ID4gY3R4LlFOLmxpbmUpDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgUUlk ID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDEpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFIy T2JqID0gSWZyUmVmMigpDQo+ID4NCj4gPiArICAgICAgICAgICAgUjJPYmouU2V0TGluZU5vKExp bmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgUjJPYmouU2V0Rm9ybUlkKEZJZCkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBSMk9iai5TZXRRSWQoUUlkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIEdP YmogPSBSMk9iag0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBjdHguTiAhPSBO b25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFJlZlR5cGUgPSAxDQo+ID4NCj4gPiArICAgICAg ICAgICAgRklkID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDApKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIFJPYmogPSBJZnJSZWYoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFJPYmouU2V0TGlu ZU5vKExpbmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgUk9iai5TZXRGb3JtSWQoRklkKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIEdPYmogPSBST2JqDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBjdHguTm9kZS5EYXRhID0gR09iag0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlm IHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX09USEVSOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUgPT0gRUZJX0lG Ul9UWVBFX1JFRg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgUmVmVHlwZSA9PSA0 IG9yIFJlZlR5cGUgPT0gMzoNCj4gPg0KPiA+ICsgICAgICAgICAgICBHT2JqLlNldEZvcm1TZXRJ ZChjdHguZ3VpZERlZmluaXRpb24oKS5HdWlkKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgaWYgY3R4LkZMQUdTKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBHT2JqLlNl dEZsYWdzKGN0eC52ZnJHb3RvRmxhZ3MoKS5Hb3RvRmxhZ3MpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBpZiBjdHguS2V5KCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBp bmRleCA9IGludChsZW4oY3R4Lk51bWJlcigpKSkgLSAxDQo+ID4NCj4gPiArICAgICAgICAgICAg S2V5ID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKGluZGV4KSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLkFzc2lnblF1ZXN0aW9uS2V5KEdPYmosIEtleSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBHT2JqLlNldEhhc0tleShUcnVlKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg aWYgY3R4LnZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdCgpICE9IE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgR09iai5TZXRTY29wZSgxKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuSW5zZXJ0RW5kTm9kZShjdHguTm9kZSwgY3R4LkUubGluZSkNCj4gPg0KPiA+ICsgICAgICAg IGN0eC5Ob2RlLkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKEdPYmouR2V0SW5mbygp KQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2 ZnJHb3RvRmxhZ3MuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmckdvdG9GbGFncyhzZWxmLCBj dHg6IFZmclN5bnRheFBhcnNlci5WZnJHb3RvRmxhZ3NDb250ZXh0KToNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAgICBmb3IgRmxhZ3NG aWVsZEN0eCBpbiBjdHguZ290b0ZsYWdzRmllbGQoKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBj dHguR290b0ZsYWdzIHw9IEZsYWdzRmllbGRDdHguRmxhZw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgcmV0dXJuIGN0eC5Hb3RvRmxhZ3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg IyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2dvdG9GbGFn c0ZpZWxkLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRHb3RvRmxhZ3NGaWVsZChzZWxmLCBjdHg6 IFZmclN5bnRheFBhcnNlci5Hb3RvRmxhZ3NGaWVsZENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGlmIGN0eC5OICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgc2VsZi5UcmFuc051 bShjdHguTi50ZXh0KSAhPSAwOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLkVycm9y SGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQsDQo+ID4gY3R4Lk4u bGluZSkNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4 LkZsYWcgPSBjdHgucXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKCkuUUhGbGFnDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4LkZsYWcNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gPiBWZnJTeW50YXhQYXJz ZXIjdmZyU3RhdGVtZW50UmVzZXRCdXR0b24uDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclN0 YXRlbWVudFJlc2V0QnV0dG9uKHNlbGYsIGN0eDoNCj4gPiBWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50UmVzZXRCdXR0b25Db250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIERlZmF1bHRzdG9y ZSA9IGN0eC5OLnRleHQNCj4gPg0KPiA+ICsgICAgICAgIFJCT2JqID0gSWZyUmVzZXRCdXR0b24o RGVmYXVsdHN0b3JlKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFJCT2JqDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAg ICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+ID4NCj4gPiArICAgICAgICBSQk9iai5TZXRMaW5l Tm8oTGluZSkNCj4gPg0KPiA+ICsgICAgICAgIERlZmF1bHRJZCwgUmV0dXJuQ29kZSA9IGdWZnJE ZWZhdWx0U3RvcmUuR2V0RGVmYXVsdElkKERlZmF1bHRzdG9yZSkNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYuRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5OLmxpbmUpDQo+ID4NCj4gPiArICAg ICAgICBSQk9iai5TZXREZWZhdWx0SWQoRGVmYXVsdElkKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgY3R4Lk5vZGUuQnVmZmVyID0gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oUkJPYmou R2V0SW5mbygpKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5JbnNlcnRFbmROb2RlKGN0eC5Ob2Rl LCBjdHguc3RvcC5saW5lKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0 eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRRdWVzdGlvbnMuDQo+ID4NCj4g PiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFF1ZXN0aW9ucyhzZWxmLCBjdHg6DQo+ID4gVmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uc0NvbnRleHQpOg0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52 ZnJTdGF0ZW1lbnRCb29sZWFuVHlwZSgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg Y3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50Qm9vbGVhblR5cGUoKS5Ob2RlDQo+ID4NCj4gPiAr ICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50RGF0ZSgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50RGF0ZSgpLk5vZGUNCj4gPg0KPiA+ ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnROdW1lcmljVHlwZSgpICE9IE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50TnVtZXJpY1R5cGUo KS5Ob2RlDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50U3RyaW5nVHlwZSgp ICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVt ZW50U3RyaW5nVHlwZSgpLk5vZGUNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1l bnRPcmRlcmVkTGlzdCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUg PSBjdHgudmZyU3RhdGVtZW50T3JkZXJlZExpc3QoKS5Ob2RlDQo+ID4NCj4gPiArICAgICAgICBp ZiBjdHgudmZyU3RhdGVtZW50VGltZSgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg Y3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50VGltZSgpLk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAj IFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiA+IFZmclN5bnRheFBhcnNlciN2ZnJT dGF0ZW1lbnRRdWVzdGlvblRhZy4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50 UXVlc3Rpb25UYWcoc2VsZiwgY3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRR dWVzdGlvblRhZ0NvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVu KGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRTdGF0VGFnKCkgIT0g Tm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRT dGF0VGFnKCkuTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudEluY29u c2lzdGVudElmKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0 eC52ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZigpLk5vZGUNCj4gPg0KPiA+ICsgICAgICAgIGlm IGN0eC52ZnJTdGF0ZW1lbnROb1N1Ym1pdElmKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnROb1N1Ym1pdElmKCkuTm9kZQ0KPiA+DQo+ ID4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudERpc2FibGVJZlF1ZXN0KCkgIT0gTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnREaXNhYmxl SWZRdWVzdCgpLk5vZGUNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRSZWZy ZXNoKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJT dGF0ZW1lbnRSZWZyZXNoKCkuTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRl bWVudFZhcnN0b3JlRGV2aWNlKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHgu Tm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRWYXJzdG9yZURldmljZSgpLk5vZGUNCj4gPg0KPiA+ICsg ICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRFeHRlbnNpb24oKSAhPSBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudEV4dGVuc2lvbigpLk5vZGUN Cj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnQoKSAhPSBO b25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFJl ZnJlc2hFdmVudCgpLk5vZGUNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRX YXJuaW5nSWYoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4 LnZmclN0YXRlbWVudFdhcm5pbmdJZigpLk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBjdHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEg cGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiA+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRJ bmNvbnNpc3RlbnRJZi4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50SW5jb25z aXN0ZW50SWYoDQo+ID4NCj4gPiArICAgICAgICBzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZkNvbnRleHQNCj4gPg0KPiA+ICsgICAgKToNCj4gPg0K PiA+ICsgICAgICAgIElJT2JqID0gSWZySW5jb25zaXN0ZW50SWYyKCkNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICBJSU9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+ID4NCj4gPiArICAgICAgICBJSU9i ai5TZXRFcnJvcihzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoKSkpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBpZiBjdHguRkxBR1MoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIEZsYWdzID0gIiINCj4gPg0KPiA+ICsgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBs ZW4oY3R4LmZsYWdzRmllbGQoKSkpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBGbGFncyAr PSBzZWxmLkV4dHJhY3RPcmlnaW5hbFRleHQoY3R4LmZsYWdzRmllbGQoaSkpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIGlmIGkgIT0gbGVuKGN0eC5mbGFnc0ZpZWxkKCkpIC0gMToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgIEZsYWdzICs9ICIgfCAiDQo+ID4NCj4gPiArICAgICAg ICAgICAgSUlPYmouU2V0RmxhZ3NTdHJlYW0oRmxhZ3MpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBjdHguTm9kZS5EYXRhID0gSUlPYmoNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2Rl LkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKElJT2JqLkdldEluZm8oKSkNCj4gPg0K PiA+ICsgICAgICAgIGN0eC5Ob2RlLkNvbmRpdGlvbiA9ICgNCj4gPg0KPiA+ICsgICAgICAgICAg ICAiaW5jb25zaXN0ZW50aWYiICsgIiAiICsNCj4gPiBzZWxmLkV4dHJhY3RPcmlnaW5hbFRleHQo Y3R4LnZmclN0YXRlbWVudEV4cHJlc3Npb24oKSkNCj4gPg0KPiA+ICsgICAgICAgICkNCj4gPg0K PiA+ICsgICAgICAgIGN0eC5Ob2RlLkV4cHJlc3Npb24gPQ0KPiA+IHNlbGYuRXh0cmFjdE9yaWdp bmFsVGV4dChjdHgudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpKQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5JbnNlcnRFbmROb2RlKGN0eC5Ob2RlLCBjdHguc3RvcC5saW5lKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2 ZnJTdGF0ZW1lbnROb1N1Ym1pdElmLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1l bnROb1N1Ym1pdElmKHNlbGYsIGN0eDoNCj4gPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 Tm9TdWJtaXRJZkNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgTlNJT2JqID0gSWZyTm9TdWJt aXRJZigpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgTlNJT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkN Cj4gPg0KPiA+ICsgICAgICAgIE5TSU9iai5TZXRFcnJvcihzZWxmLlRyYW5zTnVtKGN0eC5OdW1i ZXIoKSkpDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguRkxBR1MoKSAhPSBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIEZsYWdzID0gIiINCj4gPg0KPiA+ICsgICAgICAgICAgICBmb3IgaSBp biByYW5nZSgwLCBsZW4oY3R4LmZsYWdzRmllbGQoKSkpOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBGbGFncyArPSBzZWxmLkV4dHJhY3RPcmlnaW5hbFRleHQoY3R4LmZsYWdzRmllbGQoaSkp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIGkgIT0gbGVuKGN0eC5mbGFnc0ZpZWxkKCkp IC0gMToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIEZsYWdzICs9ICIgfCAiDQo+ID4N Cj4gPiArICAgICAgICAgICAgTlNJT2JqLlNldEZsYWdzU3RyZWFtKEZsYWdzKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IE5TSU9iag0KPiA+DQo+ID4gKyAg ICAgICAgY3R4Lk5vZGUuQnVmZmVyID0gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oTlNJT2JqLkdl dEluZm8oKSkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkV4cHJlc3Npb24gPQ0KPiA+IHNl bGYuRXh0cmFjdE9yaWdpbmFsVGV4dChjdHgudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpKQ0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5JbnNlcnRFbmROb2RlKGN0eC5Ob2RlLCBjdHguc3RvcC5saW5l KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+ID4g VmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudERpc2FibGVJZlF1ZXN0Lg0KPiA+DQo+ID4gKyAg ICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnREaXNhYmxlSWZRdWVzdCgNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYsIGN0eDogVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudERpc2FibGVJZlF1ZXN0Q29u dGV4dA0KPiA+DQo+ID4gKyAgICApOg0KPiA+DQo+ID4gKyAgICAgICAgRElPYmogPSBJZnJEaXNh YmxlSWYoKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIERJT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkN Cj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBESU9iag0KPiA+DQo+ID4gKyAgICAg ICAgY3R4Lk5vZGUuQnVmZmVyID0gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oRElPYmouR2V0SW5m bygpKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuQ29uZGl0aW9uID0gKA0KPiA+DQo+ID4g KyAgICAgICAgICAgICJkaXNhYmxlaWYiICsgIiAiICsNCj4gPiBzZWxmLkV4dHJhY3RPcmlnaW5h bFRleHQoY3R4LnZmclN0YXRlbWVudEV4cHJlc3Npb24oKSkNCj4gPg0KPiA+ICsgICAgICAgICkN Cj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkV4cHJlc3Npb24gPQ0KPiA+IHNlbGYuRXh0cmFj dE9yaWdpbmFsVGV4dChjdHgudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpKQ0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5JbnNlcnRFbmROb2RlKGN0eC5Ob2RlLCBjdHguc3RvcC5saW5lKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNl ciN2ZnJTdGF0ZW1lbnRSZWZyZXNoLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1l bnRSZWZyZXNoKHNlbGYsIGN0eDoNCj4gPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UmVm cmVzaENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgUk9iaiA9IElmclJlZnJlc2goKQ0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIFJPYmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAg ICAgICAgUk9iai5TZXRSZWZyZXNoSW50ZXJ2YWwoc2VsZi5UcmFuc051bShjdHguTnVtYmVyKCkp KQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFJPYmoNCj4gPg0KPiA+ICsgICAg ICAgIGN0eC5Ob2RlLkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKFJPYmouR2V0SW5m bygpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+ ID4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFZhcnN0b3JlRGV2aWNlLg0KPiA+DQo+ID4g KyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRWYXJzdG9yZURldmljZSgNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYsIGN0eDogVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFZhcnN0b3JlRGV2aWNl Q29udGV4dA0KPiA+DQo+ID4gKyAgICApOg0KPiA+DQo+ID4gKyAgICAgICAgVkRPYmogPSBJZnJW YXJTdG9yZURldmljZSgpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4 KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgVkRPYmouU2V0TGluZU5vKGN0eC5zdGFy dC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgVkRPYmouU2V0RGV2aWNlUGF0aChzZWxmLlRyYW5z TnVtKGN0eC5OdW1iZXIoKSkpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gVkRP YmoNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRv U3RyZWFtKFZET2JqLkdldEluZm8oKSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJl dHVybiBjdHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2Ug dHJlZSBwcm9kdWNlZCBieQ0KPiA+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRSZWZyZXNo RXZlbnQuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFJlZnJlc2hFdmVudChz ZWxmLCBjdHg6DQo+ID4gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFJlZnJlc2hFdmVudENv bnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgUmlPYmogPSBJZnJSZWZyZXNoSWQoKQ0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIFJpT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCj4gPg0KPiA+ICsgICAg ICAgIFJpT2JqLlNldFJlZnJlc2hFdmVudEdyb3V0SWQoY3R4Lmd1aWREZWZpbml0aW9uKCkuR3Vp ZCkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBSaU9iag0KPiA+DQo+ID4gKyAg ICAgICAgY3R4Lk5vZGUuQnVmZmVyID0gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oUmlPYmouR2V0 SW5mbygpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5 IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRXYXJuaW5nSWYuDQo+ID4NCj4gPiArICAgIGRl ZiB2aXNpdFZmclN0YXRlbWVudFdhcm5pbmdJZihzZWxmLCBjdHg6DQo+ID4gVmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudFdhcm5pbmdJZkNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgV0lP YmogPSBJZnJXYXJuaW5nSWYoKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVu KGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIFdJT2JqLlNldExpbmVObyhjdHgu c3RhcnQubGluZSkNCj4gPg0KPiA+ICsgICAgICAgIFdJT2JqLlNldFdhcm5pbmcoc2VsZi5UcmFu c051bShjdHguTnVtYmVyKDApKSkNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5UaW1lb3V0KCkg IT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBXSU9iai5TZXRUaW1lT3V0KHNlbGYuVHJh bnNOdW0oY3R4Lk51bWJlcigxKSkpDQo+ID4NCj4gPiArICAgICAgICAgICAgV0lPYmouU2V0SGFz SGFzVGltZU91dChUcnVlKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFdJT2Jq DQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5CdWZmZXIgPSBnRm9ybVBrZy5TdHJ1Y3RUb1N0 cmVhbShXSU9iai5HZXRJbmZvKCkpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5FeHByZXNz aW9uID0NCj4gPiBzZWxmLkV4dHJhY3RPcmlnaW5hbFRleHQoY3R4LnZmclN0YXRlbWVudEV4cHJl c3Npb24oKSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuSW5zZXJ0RW5kTm9kZShjdHguTm9kZSwg Y3R4LnN0b3AubGluZSkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiA+ IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRRdWVzdGlvblRhZ0xpc3QuDQo+ID4NCj4gPiAr ICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFF1ZXN0aW9uVGFnTGlzdCgNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYsIGN0eDogVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uVGFnTGlz dENvbnRleHQNCj4gPg0KPiA+ICsgICAgKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRD aGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAgICBmb3IgQ3R4IGluIGN0eC52ZnJTdGF0ZW1l bnRRdWVzdGlvblRhZygpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuSW5zZXJ0Q2hpbGQo Y3R4Lk5vZGUsIEN0eCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiA+ IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvblRhZy4NCj4gPg0KPiA+ ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25UYWcoDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9w dGlvblRhZ0NvbnRleHQNCj4gPg0KPiA+ICsgICAgKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu dmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50 U3VwcHJlc3NJZlF1ZXN0KCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9k ZSA9IGN0eC52ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmUXVlc3QoKS5Ob2RlDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50R3JheU91dElmUXVlc3QoKSAhPSBO b25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudEdy YXlPdXRJZlF1ZXN0KCkuTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4 LnZmclN0YXRlbWVudFZhbHVlKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHgu Tm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRWYWx1ZSgpLk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnREZWZhdWx0KCkgIT0gTm9uZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnREZWZhdWx0KCkuTm9kZQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudE9wdGlvbnMo KSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRl bWVudE9wdGlvbnMoKS5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgu dmZyU3RhdGVtZW50UmVhZCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5v ZGUgPSBjdHgudmZyU3RhdGVtZW50UmVhZCgpLk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRXcml0ZSgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50V3JpdGUoKS5Ob2RlDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gPiBWZnJTeW50YXhQ YXJzZXIjdmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlz aXRWZnJTdGF0ZW1lbnRTdXBwcmVzc0lmUXVlc3QoDQo+ID4NCj4gPiArICAgICAgICBzZWxmLCBj dHg6IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdXBwcmVzc0lmUXVlc3RDb250ZXh0DQo+ ID4NCj4gPiArICAgICk6DQo+ID4NCj4gPiArICAgICAgICBTSU9iaiA9IElmclN1cHByZXNzSWYo KQ0KPiA+DQo+ID4gKyAgICAgICAgU0lPYmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiA+ DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFNJT2JqDQo+ID4NCj4gPiArICAgICAgICBj dHguTm9kZS5Db25kaXRpb24gPSAoDQo+ID4NCj4gPiArICAgICAgICAgICAgInN1cHByZXNzaWYi ICsgIiAiICsNCj4gPiBzZWxmLkV4dHJhY3RPcmlnaW5hbFRleHQoY3R4LnZmclN0YXRlbWVudEV4 cHJlc3Npb24oKSkNCj4gPg0KPiA+ICsgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5O b2RlLkV4cHJlc3Npb24gPQ0KPiA+IHNlbGYuRXh0cmFjdE9yaWdpbmFsVGV4dChjdHgudmZyU3Rh dGVtZW50RXhwcmVzc2lvbigpKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVu KGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVj dFRvU3RyZWFtKFNJT2JqLkdldEluZm8oKSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuSW5zZXJ0 RW5kTm9kZShjdHguTm9kZSwgY3R4LnN0b3AubGluZSkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVy biBjdHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJl ZSBwcm9kdWNlZCBieQ0KPiA+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRHcmF5T3V0SWZR dWVzdC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50R3JheU91dElmUXVlc3Qo DQo+ID4NCj4gPiArICAgICAgICBzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRHcmF5T3V0SWZRdWVzdENvbnRleHQNCj4gPg0KPiA+ICsgICAgKToNCj4gPg0KPiA+ICsgICAg ICAgIEdPSU9iaiA9IElmckdyYXlPdXRJZigpDQo+ID4NCj4gPiArICAgICAgICBHT0lPYmouU2V0 TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9 IEdPSU9iag0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuQ29uZGl0aW9uID0gKA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICJncmF5b3V0aWYiICsgIiAiICsNCj4gPiBzZWxmLkV4dHJhY3RPcmln aW5hbFRleHQoY3R4LnZmclN0YXRlbWVudEV4cHJlc3Npb24oKSkNCj4gPg0KPiA+ICsgICAgICAg ICkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkV4cHJlc3Npb24gPQ0KPiA+IHNlbGYuRXh0 cmFjdE9yaWdpbmFsVGV4dChjdHgudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpKQ0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5O b2RlLkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKEdPSU9iai5HZXRJbmZvKCkpDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLkluc2VydEVuZE5vZGUoY3R4Lk5vZGUsIGN0eC5zdG9wLmxp bmUpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2Vy I2ZsYWdzRmllbGQuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdEZsYWdzRmllbGQoc2VsZiwgY3R4 OiBWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAg aWYgY3R4Lk4gIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBWZnJFcnJvckhhbmRsZS5I YW5kbGVXYXJuaW5nKA0KPiA+DQo+ID4gKw0KPiA+DQo+IEVGSV9WRlJfV0FSTklOR19DT0RFLlZG Ul9XQVJOSU5HX09CU09MRVRFRF9GUkFNRVdPUktfT1BDTw0KPiA+IERFLCBjdHguTi5saW5lLCBj dHguTi50ZXh0DQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYg Y3R4LkwgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBWZnJFcnJvckhhbmRsZS5IYW5k bGVXYXJuaW5nKA0KPiA+DQo+ID4gKw0KPiA+DQo+IEVGSV9WRlJfV0FSTklOR19DT0RFLlZGUl9X QVJOSU5HX09CU09MRVRFRF9GUkFNRVdPUktfT1BDTw0KPiA+IERFLCBjdHguTC5saW5lLCBjdHgu TC50ZXh0DQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2 ZnJTdGF0ZW1lbnREZWZhdWx0Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRE ZWZhdWx0KHNlbGYsIGN0eDoNCj4gPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RGVmYXVs dENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4g Pg0KPiA+ICsgICAgICAgIElzRXhwID0gRmFsc2UNCj4gPg0KPiA+ICsgICAgICAgIERlZmF1bHRJ ZCA9IEVGSV9ISUlfREVGQVVMVF9DTEFTU19TVEFOREFSRA0KPiA+DQo+ID4gKyAgICAgICAgTGlu ZSA9IGN0eC5zdGFydC5saW5lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgu dmZyQ29uc3RhbnRWYWx1ZUZpZWxkKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBW YWx1ZUxpc3QgPSBjdHgudmZyQ29uc3RhbnRWYWx1ZUZpZWxkKCkuVmFsdWVMaXN0DQo+ID4NCj4g PiArICAgICAgICAgICAgVmFsdWUgPSBWYWx1ZUxpc3RbMF0NCj4gPg0KPiA+ICsgICAgICAgICAg ICBUeXBlID0gc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVHlwZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGlmIHNlbGYuQ3VycmVudE1pbk1heERhdGEgIT0gTm9uZSBhbmQNCj4g PiBzZWxmLkN1cnJlbnRNaW5NYXhEYXRhLklzTnVtZXJpY09wY29kZSgpOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAjIGNoZWNrIGRlZmF1bHQgdmFsdWUgaXMgdmFsaWQgZm9yIE51bWVyaWMg T3Bjb2RlDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihW YWx1ZUxpc3QpKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIFZhbHVlID0gVmFsdWVM aXN0W2ldDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiB0eXBlKFZhbHVlKSA9PSBp bnQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgKA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA8IHNlbGYuQ3VycmVudE1pbk1heERhdGEu R2V0TWluRGF0YSgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIFZh bHVlID4gc2VsZi5DdXJyZW50TWluTWF4RGF0YS5HZXRNYXhEYXRhKCkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmUsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTnVtZXJpYyBkZWZhdWx0IHZhbHVlIG11 c3QgYmUgYmV0d2VlbiBNaW5WYWx1ZSBhbmQNCj4gPiBNYXhWYWx1ZS4iLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfT1RIRVI6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZBVEFMX0VSUk9SLCBMaW5lLCAiRGVmYXVsdCBkYXRh DQo+ID4gdHlwZSBlcnJvci4iDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oVmFsdWVMaXN0KSk6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIGlmIHR5cGUoVmFsdWVMaXN0W2ldKSA9PSBpbnQ6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9USU1FOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlTGlzdFtpXSA9IEVGSV9ISUlfVElN RSgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBUeXBlID09 IEVGSV9JRlJfVFlQRV9EQVRFOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIFZh bHVlTGlzdFtpXSA9IEVGSV9ISUlfREFURSgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9SRUY6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgVmFsdWVMaXN0W2ldID0gRUZJX0hJSV9SRUYoKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIERPYmogPSBJZnJEZWZhdWx0KFR5cGUsIFZhbHVlTGlzdCkNCj4gPg0K PiA+ICsgICAgICAgICAgICBET2JqLlNldExpbmVObyhMaW5lKQ0KPiA+DQo+ID4gKw0KPiA+IERP YmouU2V0VmFsdWVTdHJlYW0oc2VsZi5FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJDb25zdGFu dFZhbHVlRmllbGQoKSkpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgbm90IGN0eC52ZnJDb25z dGFudFZhbHVlRmllbGQoKS5MaXN0VHlwZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYg c2VsZi5Jc1N0cmluZ09wOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgRE9iai5TZXRU eXBlKEVGSV9JRlJfVFlQRV9TVFJJTkcpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5J c0JpdFZhcjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBET2JqLlNldFR5cGUo RUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBET2JqLlNldFR5cGUoc2Vs Zi5DdXJyUWVzdFZhckluZm8uVmFyVHlwZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBET2JqLlNldFR5cGUoRUZJX0lGUl9UWVBFX0JVRkZF UikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAg ICAgICAgSXNFeHAgPSBUcnVlDQo+ID4NCj4gPiArICAgICAgICAgICAgRE9iaiA9IElmckRlZmF1 bHQyKCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBET2JqLlNldExpbmVObyhMaW5lKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIERPYmouU2V0U2NvcGUoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLkluc2VydENoaWxkKGN0eC5Ob2RlLCBjdHgudmZyU3RhdGVtZW50VmFsdWUoKSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLkluc2VydEVuZE5vZGUoY3R4Lk5vZGUsIExpbmUpDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguRGVmYXVsdFN0b3JlKCkgIT0gTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBEZWZhdWx0SWQsIFJldHVybkNvZGUgPSBnVmZyRGVmYXVs dFN0b3JlLkdldERlZmF1bHRJZChjdHguU04udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBz ZWxmLkVycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguU04ubGluZSwgY3R4LlNOLnRleHQpDQo+ ID4NCj4gPiArICAgICAgICAgICAgRE9iai5TZXREZWZhdWx0SWQoRGVmYXVsdElkKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIERPYmouU2V0RGVmYXVsdFN0b3JlKGN0eC5TTi50ZXh0KQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5DaGVja0R1cGxpY2F0ZURlZmF1bHRWYWx1ZShE ZWZhdWx0SWQsIGN0eC5ELmxpbmUsIGN0eC5ELnRleHQpDQo+ID4NCj4gPiArICAgICAgICBpZiBz ZWxmLkN1cnJRZXN0VmFySW5mby5WYXJTdG9yZUlkICE9IEVGSV9WQVJTVE9SRV9JRF9JTlZBTElE Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIFZhclN0b3JlTmFtZSwgUmV0dXJuQ29kZSA9IGdWZnJE YXRhU3RvcmFnZS5HZXRWYXJTdG9yZU5hbWUoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuQ3VyclFlc3RWYXJJbmZvLlZhclN0b3JlSWQNCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgTGluZSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBWYXJHdWlkID0NCj4gPiBnVmZyRGF0YVN0b3JhZ2UuR2V0 VmFyU3RvcmVHdWlkKHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclN0b3JlSWQpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgVmFyU3RvcmVUeXBlID0NCj4gPiBnVmZyRGF0YVN0b3JhZ2UuR2V0VmFyU3Rv cmVUeXBlKHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclN0b3JlSWQpDQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgKElzRXhwID09IEZhbHNlKSBhbmQgKFZhclN0b3JlVHlwZSA9PQ0KPiA+IEVGSV9W RlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX0JVRkZFUik6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgZ1ZmckRlZmF1bHRTdG9yZS5CdWZmZXJWYXJTdG9yZUFsdENvbmZpZ0FkZCgNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0SWQsDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5DdXJyUWVzdFZhckluZm8sDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgVmFyU3RvcmVOYW1lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgIFZhckd1aWQsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5DdXJyUWVzdFZhckluZm8uVmFyVHlwZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICBWYWx1ZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICksDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBMaW5lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICApDQo+ ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gRE9iag0KPiA+DQo+ID4gKyAgICAgICAg Y3R4Lk5vZGUuQnVmZmVyID0gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oRE9iai5HZXRJbmZvKCkp DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3Zm clN0YXRlbWVudFZhbHVlLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRWYWx1 ZShzZWxmLCBjdHg6DQo+ID4gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFZhbHVlQ29udGV4 dCk6DQo+ID4NCj4gPiArICAgICAgICBWT2JqID0gSWZyVmFsdWUoKQ0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IFZPYmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5v ZGUuRGF0YSA9IFZPYmoNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkJ1ZmZlciA9IGdGb3Jt UGtnLlN0cnVjdFRvU3RyZWFtKFZPYmouR2V0SW5mbygpKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4 Lk5vZGUuRXhwcmVzc2lvbiA9DQo+ID4gc2VsZi5FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJT dGF0ZW1lbnRFeHByZXNzaW9uKCkpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkluc2VydEVuZE5v ZGUoY3R4Lk5vZGUsIGN0eC5zdG9wLmxpbmUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBh cnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudE9wdGlvbnMu DQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudE9wdGlvbnMoc2VsZiwgY3R4Og0K PiA+IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRPcHRpb25zQ29udGV4dCk6DQo+ID4NCj4g PiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4 Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50T25lT2ZPcHRpb24oKS5Ob2RlDQo+ID4NCj4gPiArICAg ICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50 T25lT2ZPcHRpb24uDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudE9uZU9mT3B0 aW9uKHNlbGYsIGN0eDoNCj4gPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50T25lT2ZPcHRp b25Db250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+ DQo+ID4gKyAgICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVHlwZSA9PSBFRklfSUZS X1RZUEVfT1RIRVI6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZBVEFMX0VSUk9SLCBMaW5lLA0KPiA+ICJHZXQgZGF0YSB0 eXBlIGVycm9yLiIpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hp bGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgVmFsdWVMaXN0ID0gY3R4 LnZmckNvbnN0YW50VmFsdWVGaWVsZCgpLlZhbHVlTGlzdA0KPiA+DQo+ID4gKyAgICAgICAgVmFs dWUgPSBWYWx1ZUxpc3RbMF0NCj4gPg0KPiA+ICsgICAgICAgIFR5cGUgPSBzZWxmLkN1cnJRZXN0 VmFySW5mby5WYXJUeXBlDQo+ID4NCj4gPiArICAgICAgICBpZiBzZWxmLkN1cnJlbnRNaW5NYXhE YXRhICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgIyBzZXQgbWluL21heCB2YWx1ZSBm b3Igb25lb2Ygb3Bjb2RlDQo+ID4NCj4gPiArICAgICAgICAgICAgU3RlcCA9IHNlbGYuQ3VycmVu dE1pbk1heERhdGEuR2V0U3RlcERhdGEoKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuQ3Vy cmVudE1pbk1heERhdGEuU2V0TWluTWF4U3RlcERhdGEoVmFsdWUsIFZhbHVlLCBTdGVwKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8uSXNCaXRW YXI6DQo+ID4NCj4gPiArICAgICAgICAgICAgVHlwZSA9IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8z Mg0KPiA+DQo+ID4gKyAgICAgICAgT09PT2JqID0gSWZyT25lT2ZPcHRpb24oVHlwZSwgVmFsdWVM aXN0KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgbm90IGN0eC52ZnJDb25zdGFu dFZhbHVlRmllbGQoKS5MaXN0VHlwZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBPT09PYmouU2V0 VHlwZShUeXBlKQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBPT09PYmouU2V0VHlwZShFRklfSUZSX1RZUEVfQlVGRkVSKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgT09PT2JqLlNldExpbmVObyhMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgT09P T2JqLlNldE9wdGlvbihzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoMCkpKQ0KPiA+DQo+ID4gKw0K PiA+DQo+IE9PT09iai5TZXRWYWx1ZVN0cmVhbShzZWxmLkV4dHJhY3RPcmlnaW5hbFRleHQoY3R4 LnZmckNvbnN0YW50VmFsdWVGaWVsZCgpKSkNCj4gPg0KPiA+ICsNCj4gPg0KPiBPT09PYmouU2V0 RmxhZ3NTdHJlYW0oc2VsZi5FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJPbmVPZk9wdGlvbkZs YWdzKCkpKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoT09PT2JqLlNldEZs YWdzKGN0eC52ZnJPbmVPZk9wdGlvbkZsYWdzKCkuTEZsYWdzKSwNCj4gPiBjdHguRi5saW5lKQ0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ID4NCj4gPiArDQo+ID4gc2Vs Zi5DdXJyZW50UXVlc3Rpb24uU2V0UUhlYWRlckZsYWdzKGN0eC52ZnJPbmVPZk9wdGlvbkZsYWdz KCkuSEZsYWdzKSwNCj4gPiBjdHguRi5saW5lDQo+ID4NCj4gPiArICAgICAgICApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICAjIEFycmF5IHR5cGUgb25seSBmb3IgZGVmYXVsdCB0eXBl IE9uZU9mT3B0aW9uLg0KPiA+DQo+ID4gKyAgICAgICAgaWYgKE9PT09iai5HZXRGbGFncygpICYg KEVGSV9JRlJfT1BUSU9OX0RFRkFVTFQgfA0KPiA+IEVGSV9JRlJfT1BUSU9OX0RFRkFVTFRfTUZH KSkgPT0gMCBhbmQgKA0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC52ZnJDb25zdGFudFZhbHVl RmllbGQoKS5MaXN0VHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgKToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgVmZyUmV0 dXJuQ29kZS5WRlJfUkVUVVJOX0ZBVEFMX0VSUk9SLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBMaW5lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAiRGVmYXVsdCBrZXl3b3JkIHNob3Vs ZCB3aXRoIGFycmF5IHZhbHVlIHR5cGUhIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICAjIENsZWFyIHRoZSBkZWZhdWx0IGZsYWcgaWYgdGhl IG9wdGlvbiBub3QgdXNlIGFycmF5IHZhbHVlIGJ1dCBoYXMNCj4gZGVmYXVsdA0KPiA+IGZsYWcu DQo+ID4NCj4gPiArICAgICAgICBpZiAoDQo+ID4NCj4gPiArICAgICAgICAgICAgKE9PT09iai5H ZXRGbGFncygpICYgKEVGSV9JRlJfT1BUSU9OX0RFRkFVTFQgfA0KPiA+IEVGSV9JRlJfT1BUSU9O X0RFRkFVTFRfTUZHKSkgIT0gMA0KPiA+DQo+ID4gKyAgICAgICAgICAgIGFuZCAoY3R4LnZmckNv bnN0YW50VmFsdWVGaWVsZCgpLkxpc3RUeXBlID09IEZhbHNlKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGFuZCAoc2VsZi5Jc09yZGVyZWRMaXN0KQ0KPiA+DQo+ID4gKyAgICAgICAgKToNCj4gPg0K PiA+ICsgICAgICAgICAgICBPT09PYmouU2V0RmxhZ3MoDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIE9PT09iai5HZXRGbGFncygpICYgfihFRklfSUZSX09QVElPTl9ERUZBVUxUIHwNCj4gPiBF RklfSUZSX09QVElPTl9ERUZBVUxUX01GRykNCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJTdG9y ZUlkICE9IEVGSV9WQVJTVE9SRV9JRF9JTlZBTElEOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFZh clN0b3JlTmFtZSwgUmV0dXJuQ29kZSA9IGdWZnJEYXRhU3RvcmFnZS5HZXRWYXJTdG9yZU5hbWUo DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclN0b3Jl SWQNCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5F cnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgTGluZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBWYXJT dG9yZUd1aWQgPQ0KPiA+IGdWZnJEYXRhU3RvcmFnZS5HZXRWYXJTdG9yZUd1aWQoc2VsZi5DdXJy UWVzdFZhckluZm8uVmFyU3RvcmVJZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBPT09PYmou R2V0RmxhZ3MoKSAmIEVGSV9JRlJfT1BUSU9OX0RFRkFVTFQ6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuQ2hlY2tEdXBsaWNhdGVEZWZhdWx0VmFsdWUoDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBFRklfSElJX0RFRkFVTFRfQ0xBU1NfU1RBTkRBUkQsIGN0eC5GLmxpbmUs IGN0eC5GLnRleHQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIGdWZnJEZWZhdWx0U3RvcmUuQnVmZmVyVmFyU3RvcmVBbHRDb25maWdBZGQoDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0hJSV9ERUZBVUxUX0NMQVNTX1NUQU5EQVJE LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuQ3VyclFlc3RWYXJJbmZv LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIFZhclN0b3JlTmFtZSwNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBWYXJTdG9yZUd1aWQsDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVHlwZSwNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSwNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICksDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBMaW5lLA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgT09PT2JqLkdl dEZsYWdzKCkgJiBFRklfSUZSX09QVElPTl9ERUZBVUxUX01GRzoNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgc2VsZi5DaGVja0R1cGxpY2F0ZURlZmF1bHRWYWx1ZSgNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgIEVGSV9ISUlfREVGQVVMVF9DTEFTU19NQU5VRkFDVFVSSU5HLCBjdHgu Ri5saW5lLCBjdHguRi50ZXh0DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICBnVmZyRGVmYXVsdFN0b3JlLkJ1ZmZlclZhclN0b3JlQWx0Q29uZmlnQWRkKA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9ISUlfREVGQVVMVF9DTEFTU19N QU5VRkFDVFVSSU5HLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuQ3Vy clFlc3RWYXJJbmZvLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIFZhclN0b3Jl TmFtZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBWYXJTdG9yZUd1aWQsDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5DdXJyUWVzdFZhckluZm8uVmFy VHlwZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSwNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICksDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBM aW5lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBpZiBjdHguS2V5KCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LkVycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQsDQo+ID4g Y3R4LktOLmxpbmUsIGN0eC5LTi50ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICMg44CAR3Vp ZCBPcHRpb24gS2V5DQo+ID4NCj4gPiArICAgICAgICAgICAgT09PT2JqLlNldElmck9wdGlvbktl eShzZWxmLlRyYW5zTnVtKGN0eC5LTi50ZXh0KSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBnSWZy T3B0aW9uS2V5ID0gSWZyT3B0aW9uS2V5KA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LkN1cnJlbnRRdWVzdGlvbi5HZXRRdWVzdGlvbklkKCksIFR5cGUsIFZhbHVlLA0KPiA+IHNlbGYu VHJhbnNOdW0oY3R4LktOLnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIE5vZGUgPSBJZnJUcmVlTm9kZSgNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgRUZJX0lGUl9HVUlEX09QLCBnSWZyT3B0aW9uS2V5LA0KPiA+IGdGb3JtUGtnLlN0cnVjdFRv U3RyZWFtKGdJZnJPcHRpb25LZXkuR2V0SW5mbygpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBnSWZyT3B0aW9uS2V5LlNldExpbmVObygpDQo+ID4NCj4g PiArICAgICAgICAgICAgY3R4Lk5vZGUuaW5zZXJ0Q2hpbGQoTm9kZSkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGZvciBDdHggaW4gY3R4LnZmckltYWdlVGFnKCk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgT09PT2JqLlNldFNjb3BlKDEpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5JbnNlcnRDaGlsZChjdHguTm9kZSwgQ3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYu SW5zZXJ0RW5kTm9kZShjdHguTm9kZSwgY3R4LlQubGluZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBPT09PYmoNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5O b2RlLkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKE9PT09iai5HZXRJbmZvKCkpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4 UGFyc2VyI3Zmck9uZU9mT3B0aW9uRmxhZ3MuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmck9u ZU9mT3B0aW9uRmxhZ3Moc2VsZiwgY3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5WZnJPbmVPZk9w dGlvbkZsYWdzQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4o Y3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkxGbGFncyA9IHNlbGYuQ3Vy clFlc3RWYXJJbmZvLlZhclR5cGUNCj4gPg0KPiA+ICsgICAgICAgIGZvciBGbGFnc0ZpZWxkQ3R4 IGluIGN0eC5vbmVvZm9wdGlvbkZsYWdzRmllbGQoKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBj dHguSEZsYWdzIHw9IEZsYWdzRmllbGRDdHguSEZsYWcNCj4gPg0KPiA+ICsgICAgICAgICAgICBj dHguTEZsYWdzIHw9IEZsYWdzRmllbGRDdHguTEZsYWcNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIHJldHVybiBjdHguSEZsYWdzLCBjdHguTEZsYWdzDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNv bmVvZm9wdGlvbkZsYWdzRmllbGQuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdE9uZW9mb3B0aW9u RmxhZ3NGaWVsZChzZWxmLCBjdHg6DQo+ID4gVmZyU3ludGF4UGFyc2VyLk9uZW9mb3B0aW9uRmxh Z3NGaWVsZENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0 eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5OdW1iZXIoKSAhPSBOb25l Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5MRmxhZyA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51 bWJlcigpKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4Lk9wdGlvbkRlZmF1bHQoKSAhPSBOb25l Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5MRmxhZyA9IDB4MTANCj4gPg0KPiA+ICsgICAg ICAgIGlmIGN0eC5PcHRpb25EZWZhdWx0TWZnKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBjdHguTEZsYWcgPSAweDIwDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguSW50ZXJhY3Rp dmVGbGFnKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguSEZsYWcgPSAweDA0 DQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguUmVzZXRSZXF1aXJlZEZsYWcoKSAhPSBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5IRmxhZyA9IDB4MTANCj4gPg0KPiA+ICsgICAgICAg IGlmIGN0eC5SZXN0U3R5bGVGbGFnKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBj dHguSEZsYWcgPSAweDIwDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguUmVjb25uZWN0UmVxdWly ZWRGbGFnKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguSEZsYWcgPSAweDQw DQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguTWFudWZhY3R1cmluZ0ZsYWcoKSAhPSBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5MRmxhZyA9IDB4MjANCj4gPg0KPiA+ICsgICAgICAg IGlmIGN0eC5EZWZhdWx0RmxhZygpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4 LkxGbGFnID0gMHgxMA0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4Lk5WQWNjZXNzRmxhZygpICE9 IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgZ1ZmckVycm9ySGFuZGxlLkhhbmRsZVdhcm5p bmcoDQo+ID4NCj4gPiArDQo+ID4NCj4gRUZJX1ZGUl9XQVJOSU5HX0NPREUuVkZSX1dBUk5JTkdf T0JTT0xFVEVEX0ZSQU1FV09SS19PUENPDQo+ID4gREUsIGN0eC5BLmxpbmUsIGN0eC5BLnRleHQN Cj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguTGF0ZUNo ZWNrRmxhZygpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgZ1ZmckVycm9ySGFuZGxl LkhhbmRsZVdhcm5pbmcoDQo+ID4NCj4gPiArDQo+ID4NCj4gRUZJX1ZGUl9XQVJOSU5HX0NPREUu VkZSX1dBUk5JTkdfT0JTT0xFVEVEX0ZSQU1FV09SS19PUENPDQo+ID4gREUsIGN0eC5MLmxpbmUs IGN0eC5MLnRleHQNCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICByZXR1cm4gY3R4LkhGbGFnLCBjdHguTEZsYWcNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2Vy I3ZmclN0YXRlbWVudFJlYWQuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFJl YWQoc2VsZiwgY3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRSZWFkQ29udGV4 dCk6DQo+ID4NCj4gPiArICAgICAgICBST2JqID0gSWZyUmVhZCgpDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg Uk9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9k ZS5EYXRhID0gUk9iag0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuQnVmZmVyID0gZ0Zvcm1Q a2cuU3RydWN0VG9TdHJlYW0oUk9iai5HZXRJbmZvKCkpDQo+ID4NCj4gPiArICAgICAgICBjdHgu Tm9kZS5FeHByZXNzaW9uID0NCj4gPiBzZWxmLkV4dHJhY3RPcmlnaW5hbFRleHQoY3R4LnZmclN0 YXRlbWVudEV4cHJlc3Npb24oKSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVy biBjdHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJl ZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50V3JpdGUuDQo+ID4NCj4g PiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFdyaXRlKHNlbGYsIGN0eDoNCj4gPiBWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50V3JpdGVDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIFdP YmogPSBJZnJXcml0ZSgpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4 KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgV09iai5TZXRMaW5lTm8oY3R4LnN0YXJ0 LmxpbmUpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gV09iag0KPiA+DQo+ID4g KyAgICAgICAgY3R4Lk5vZGUuQnVmZmVyID0gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oV09iai5H ZXRJbmZvKCkpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5FeHByZXNzaW9uID0NCj4gPiBz ZWxmLkV4dHJhY3RPcmlnaW5hbFRleHQoY3R4LnZmclN0YXRlbWVudEV4cHJlc3Npb24oKSkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiA+IFZmclN5 bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3QuDQo+ID4NCj4gPiArICAg IGRlZiB2aXNpdFZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdCgNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYsIGN0eDogVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9u TGlzdENvbnRleHQNCj4gPg0KPiA+ICsgICAgKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlz aXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAgICBmb3IgQ3R4IGluIGN0eC52ZnJTdGF0 ZW1lbnRRdWVzdGlvbk9wdGlvbigpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuSW5zZXJ0 Q2hpbGQoY3R4Lk5vZGUsIEN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVy biBjdHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJl ZSBwcm9kdWNlZCBieQ0KPiA+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9w dGlvbi4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb24o DQo+ID4NCj4gPiArICAgICAgICBzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRRdWVzdGlvbk9wdGlvbkNvbnRleHQNCj4gPg0KPiA+ICsgICAgKToNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgudmZy U3RhdGVtZW50UXVlc3Rpb25UYWcoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0 eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFF1ZXN0aW9uVGFnKCkuTm9kZQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgZWxpZiBjdHgudmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25UYWco KSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRl bWVudFF1ZXN0aW9uT3B0aW9uVGFnKCkuTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0 eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5DQo+ID4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudEJvb2xlYW5UeXBlLg0K PiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRCb29sZWFuVHlwZShzZWxmLCBjdHg6 DQo+ID4gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEJvb2xlYW5UeXBlQ29udGV4dCk6DQo+ ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAg ICAgaWYgY3R4LnZmclN0YXRlbWVudENoZWNrQm94KCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50Q2hlY2tCb3goKS5HdWlkTm9k ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudENoZWNrQm94KCkuTm9kZQ0KPiA+DQo+ID4gKyAg ICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0 ZW1lbnRBY3Rpb24oKS5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g Y3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUg cHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudENoZWNrQm94Lg0KPiA+DQo+ ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRDaGVja0JveChzZWxmLCBjdHg6DQo+ID4gVmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudENoZWNrQm94Q29udGV4dCk6DQo+ID4NCj4gPiArICAg ICAgICBDQk9iaiA9IElmckNoZWNrQm94KCkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkRh dGEgPSBDQk9iag0KPiA+DQo+ID4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+ID4N Cj4gPiArICAgICAgICBDQk9iai5TZXRMaW5lTm8oTGluZSkNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuQ3VycmVudFF1ZXN0aW9uID0gQ0JPYmoNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuSXNDaGVj a0JveE9wID0gVHJ1ZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICMgQ3JlYXRlIGEgR1VJRCBvcGNvZGUgdG8g d3JhcCB0aGUgY2hlY2tib3ggb3Bjb2RlLCBpZiBpdCByZWZlciB0byBiaXQNCj4gPiB2YXJzdG9y ZS4NCj4gPg0KPiA+ICsgICAgICAgIGlmIHNlbGYuQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIEd1aWRPYmogPSBJZnJHdWlkKDApDQo+ID4NCj4gPiArICAg ICAgICAgICAgR3VpZE9iai5TZXRHdWlkKEVES0lJX0lGUl9CSVRfVkFSU1RPUkVfR1VJRCkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBHdWlkT2JqLlNldExpbmVObyhMaW5lKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIEd1aWRPYmouU2V0U2NvcGUoMSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHgu R3VpZE5vZGUuRGF0YSA9IEd1aWRPYmoNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguR3VpZE5v ZGUuQnVmZmVyID0gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oR3VpZE9iai5HZXRJbmZvKCkpDQo+ ID4NCj4gPiArICAgICAgICAgICAgY3R4Lkd1aWROb2RlLmluc2VydENoaWxkKGN0eC5Ob2RlKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuSW5zZXJ0RW5kTm9kZShjdHguR3VpZE5vZGUsIGN0 eC5zdG9wLmxpbmUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAjIGNoZWNrIGRhdGFU eXBlDQo+ID4NCj4gPiArICAgICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJUeXBlID09 IEVGSV9JRlJfVFlQRV9PVEhFUjoNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkN1cnJRZXN0 VmFySW5mby5WYXJUeXBlID0gRUZJX0lGUl9UWVBFX0JPT0xFQU4NCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGlmIHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclN0b3JlSWQgIT0gRUZJX1ZB UlNUT1JFX0lEX0lOVkFMSUQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgIyBDaGVjayB3aGV0aGVy IHRoZSBxdWVzdGlvbiByZWZlcnMgdG8gYSBiaXQgZmllbGQsIGlmIHllcy4gY3JlYXRlIGENCj4g R3VpZA0KPiA+IHRvIGluZGljYXRlIHRoZSBxdWVzdGlvbiByZWZlcnMgdG8gYSBiaXQgZmllbGQu DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8uSXNCaXRWYXI6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIF8sIFJldHVybkNvZGUgPQ0KPiBnVmZyVmFyRGF0 YVR5cGVEQi5HZXREYXRhVHlwZVNpemVCeURhdGFUeXBlKA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVHlwZQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKFJl dHVybkNvZGUsIExpbmUsICJDaGVja0JveCB2YXJpZCBpcyBub3QgdGhlDQo+IHZhbGlkDQo+ID4g ZGF0YSB0eXBlIikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgKA0KPiA+DQo+ID4gKw0K PiA+IGdWZnJEYXRhU3RvcmFnZS5HZXRWYXJTdG9yZVR5cGUoc2VsZi5DdXJyUWVzdFZhckluZm8u VmFyU3RvcmVJZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgID09IEVGSV9WRlJfVkFS U1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX0JVRkZFUl9CSVRTDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBhbmQgc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVG90YWxTaXplICE9IDEN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICBMaW5lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICJDaGVja0JveCB2YXJpZCBvbmx5IG9jY3VweSAxIGJpdCBpbiBCaXQgVmFyc3RvcmUi LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgU2l6ZSwgUmV0dXJuQ29k ZSA9DQo+ID4gZ1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlEYXRhVHlwZSgNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJU eXBlDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBMaW5lLCAiQ2hlY2tCb3gg dmFyaWQgaXMgbm90IHRoZQ0KPiA+IHZhbGlkIGRhdGEgdHlwZSIpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBpZiBTaXplICE9IDAgYW5kIFNpemUgIT0gc2VsZi5DdXJyUWVzdFZhcklu Zm8uVmFyVG90YWxTaXplOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu RXJyb3JIYW5kbGVyKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpbmUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJDaGVja0JveCB2YXJpZCBkb2Vzbid0IHN1cHBvcnQgYXJyYXkiLA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIGVsaWYgZ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlVHlwZSgNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJTdG9yZUlkDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICApID09IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklf VkZSX1ZBUlNUT1JFX0JVRkZFUiBhbmQNCj4gPiBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJUb3Rh bFNpemUgIT0gc2l6ZW9mKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGNfYm9v bA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgKToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVS LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5lLA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hlY2tCb3ggdmFyaWQgb25seSBzdXBwb3J0 IEJPT0xFQU4gZGF0YSB0eXBlIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguRkxBR1MoKSAhPSBOb25lOg0K PiA+DQo+ID4gKw0KPiA+IENCT2JqLlNldEZsYWdzU3RyZWFtKHNlbGYuRXh0cmFjdE9yaWdpbmFs VGV4dChjdHgudmZyQ2hlY2tCb3hGbGFncygpKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBDQk9i ai5TZXRGbGFncyhjdHgudmZyQ2hlY2tCb3hGbGFncygpLkhGbGFncywNCj4gPiBjdHgudmZyQ2hl Y2tCb3hGbGFncygpLkxGbGFncykNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBzZWxmLkN1cnJR ZXN0VmFySW5mby5WYXJTdG9yZUlkICE9IEVGSV9WQVJTVE9SRV9JRF9JTlZBTElEOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBWYXJTdG9yZU5hbWUsIFJldHVybkNvZGUgPSBnVmZyRGF0YVN0 b3JhZ2UuR2V0VmFyU3RvcmVOYW1lKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5DdXJyUWVzdFZhckluZm8uVmFyU3RvcmVJZA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuQ29tcGFyZUVycm9ySGFuZGxlcigNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIFJldHVybkNvZGUsDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUywNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIExpbmUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBjdHguTC50ZXh0LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBy ZXRyaWV2ZSB2YXJzdG9yZSBuYW1lIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBWYXJTdG9yZUd1aWQgPQ0KPiA+IGdW ZnJEYXRhU3RvcmFnZS5HZXRWYXJTdG9yZUd1aWQoc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyU3Rv cmVJZCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5WYWx1ZSA9IFRydWUNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgaWYgQ0JPYmouR2V0RmxhZ3MoKSAmIDB4MDE6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICBzZWxmLkNoZWNrRHVwbGljYXRlRGVmYXVsdFZhbHVlKA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9ISUlfREVGQVVMVF9DTEFTU19T VEFOREFSRCwgY3R4LkYubGluZSwgY3R4LkYudGV4dA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgUmV0dXJuQ29kZSA9IGdWZnJE ZWZhdWx0U3RvcmUuQnVmZmVyVmFyU3RvcmVBbHRDb25maWdBZGQoDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgRUZJX0hJSV9ERUZBVUxUX0NMQVNTX1NUQU5EQVJELA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuQ3VyclFlc3RWYXJJbmZvLA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIFZhclN0b3JlTmFtZSwNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICBWYXJTdG9yZUd1aWQsDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVHlwZSwNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLlZhbHVlLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5Db21wYXJlRXJyb3JI YW5kbGVyKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybkNvZGUsDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X1NVQ0NFU1MsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgTGluZSwNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBjdHguTC50ZXh0LA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICJObyBzdGFuZGFyZCBkZWZhdWx0IHN0b3JhZ2UgZm91bmQiLA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBpZiBDQk9iai5HZXRGbGFncygpICYgMHgwMjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIHNlbGYuQ2hlY2tEdXBsaWNhdGVEZWZhdWx0VmFsdWUoDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgRUZJX0hJSV9ERUZBVUxUX0NMQVNTX01BTlVGQUNUVVJJTkcsIGN0eC5G LmxpbmUsDQo+IGN0eC5GLnRleHQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIFJldHVybkNvZGUgPSBnVmZyRGVmYXVsdFN0b3Jl LkJ1ZmZlclZhclN0b3JlQWx0Q29uZmlnQWRkKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgIEVGSV9ISUlfREVGQVVMVF9DTEFTU19NQU5VRkFDVFVSSU5HLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuQ3VyclFlc3RWYXJJbmZvLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgIFZhclN0b3JlTmFtZSwNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICBWYXJTdG9yZUd1aWQsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVHlwZSwNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLlZhbHVlLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5Db21wYXJlRXJyb3JIYW5kbGVy KA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybkNvZGUsDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NF U1MsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgTGluZSwNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICBjdHguTC50ZXh0LA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICJObyBtYW51ZmFjdHVyaW5nIGRlZmF1bHQgc3RvcmFnZSBmb3VuZCIsDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBpZiBjdHguS2V5KCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBLZXkgPSBz ZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkFz c2lnblF1ZXN0aW9uS2V5KENCT2JqLCBLZXkpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5C dWZmZXIgPSBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShDQk9iai5HZXRJbmZvKCkpDQo+ID4NCj4g PiArICAgICAgICBzZWxmLkluc2VydEVuZE5vZGUoY3R4Lk5vZGUsIGN0eC5zdG9wLmxpbmUpDQo+ ID4NCj4gPiArICAgICAgICBzZWxmLklzQ2hlY2tCb3hPcCA9IEZhbHNlDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckNo ZWNrQm94RmxhZ3MuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmckNoZWNrQm94RmxhZ3Moc2Vs ZiwgY3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5WZnJDaGVja0JveEZsYWdzQ29udGV4dCk6DQo+ ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAg ICAgZm9yIEZsYWdzRmllbGRDdHggaW4gY3R4LmNoZWNrYm94RmxhZ3NGaWVsZCgpOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGN0eC5MRmxhZ3MgfD0gRmxhZ3NGaWVsZEN0eC5MRmxhZw0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGN0eC5IRmxhZ3MgfD0gRmxhZ3NGaWVsZEN0eC5IRmxhZw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5IRmxhZ3MsIGN0eC5MRmxhZ3MNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkg VmZyU3ludGF4UGFyc2VyI2NoZWNrYm94RmxhZ3NGaWVsZC4NCj4gPg0KPiA+ICsgICAgZGVmIHZp c2l0Q2hlY2tib3hGbGFnc0ZpZWxkKHNlbGYsIGN0eDoNCj4gPiBWZnJTeW50YXhQYXJzZXIuQ2hl Y2tib3hGbGFnc0ZpZWxkQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hp bGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4Lk51bWJlcigp ICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgc2VsZi5UcmFuc051bShjdHguTnVt YmVyKCkpICE9IDA6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVy KFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwNCj4gPiBjdHguc3RhcnQubGlu ZSkNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgY3R4LkRlZmF1bHRGbGFnKCkgIT0gTm9uZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fVU5TVVBQT1JURUQsDQo+ID4gY3R4LkQubGluZSwgY3R4LkQudGV4dCkNCj4gPg0KPiA+ ICsgICAgICAgIGVsaWYgY3R4Lk1hbnVmYWN0dXJpbmdGbGFnKCkgIT0gTm9uZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f VU5TVVBQT1JURUQsDQo+ID4gY3R4Lk0ubGluZSwgY3R4Lk0udGV4dCkNCj4gPg0KPiA+ICsgICAg ICAgIGVsaWYgY3R4LkNoZWNrQm94RGVmYXVsdEZsYWcoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGN0eC5MRmxhZyA9IDB4MDENCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgY3R4LkNo ZWNrQm94RGVmYXVsdE1mZ0ZsYWcoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0 eC5MRmxhZyA9IDB4MDINCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAg ICAgICAgY3R4LkhGbGFnID0gY3R4LnF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZCgpLlFIRmxhZw0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5IRmxhZywgY3R4LkxGbGFn DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2Vk IGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRBY3Rpb24uDQo+ID4NCj4gPiArICAgIGRl ZiB2aXNpdFZmclN0YXRlbWVudEFjdGlvbihzZWxmLCBjdHg6DQo+ID4gVmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudEFjdGlvbkNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgQU9iaiA9IElm ckFjdGlvbigpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gQU9iag0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIEFP YmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgQU9iai5TZXRR dWVzdGlvbkNvbmZpZyhzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoKSkpDQo+ID4NCj4gPiArICAg ICAgICBpZiBjdHguRkxBR1MoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIEFPYmou U2V0RmxhZ3MoY3R4LnZmckFjdGlvbkZsYWdzKCkuSEZsYWdzKQ0KPiA+DQo+ID4gKyAgICAgICAg Y3R4Lk5vZGUuQnVmZmVyID0gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oQU9iai5HZXRJbmZvKCkp DQo+ID4NCj4gPiArICAgICAgICBzZWxmLkluc2VydEVuZE5vZGUoY3R4Lk5vZGUsIGN0eC5zdG9w LmxpbmUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkg VmZyU3ludGF4UGFyc2VyI3ZmckFjdGlvbkZsYWdzLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRW ZnJBY3Rpb25GbGFncyhzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5WZnJBY3Rpb25GbGFnc0Nv bnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0K PiA+ICsgICAgICAgIGZvciBGbGFnc0ZpZWxkQ3R4IGluIGN0eC5hY3Rpb25GbGFnc0ZpZWxkKCk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LkhGbGFncyB8PSBGbGFnc0ZpZWxkQ3R4LkhGbGFn DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4LkhGbGFncw0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJT eW50YXhQYXJzZXIjYWN0aW9uRmxhZ3NGaWVsZC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0QWN0 aW9uRmxhZ3NGaWVsZChzZWxmLCBjdHg6DQo+ID4gVmZyU3ludGF4UGFyc2VyLkFjdGlvbkZsYWdz RmllbGRDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguTnVtYmVyKCkgIT0gTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoKSkgIT0g MDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELA0KPiA+IGN0eC5OLmxpbmUpDQo+ID4NCj4gPiAr ICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5IRmxhZyA9IGN0eC5xdWVz dGlvbmhlYWRlckZsYWdzRmllbGQoKS5RSEZsYWcNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBj dHguSEZsYWcNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUg cHJvZHVjZWQgYnkNCj4gPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50TnVtZXJpY1R5cGUu DQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudE51bWVyaWNUeXBlKHNlbGYsIGN0 eDoNCj4gPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50TnVtZXJpY1R5cGVDb250ZXh0KToN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAg ICAgICBpZiBjdHgudmZyU3RhdGVtZW50TnVtZXJpYygpICE9IE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8uSXNCaXRWYXI6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudE51bWVyaWMoKS5HdWlkTm9k ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudE51bWVyaWMoKS5Ob2RlDQo+ID4NCj4gPiArICAg ICAgICBlbGlmIGN0eC52ZnJTdGF0ZW1lbnRPbmVPZigpICE9IE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8uSXNCaXRWYXI6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudE9uZU9mKCkuR3VpZE5vZGUN Cj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBj dHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRPbmVPZigpLk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAj IFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQLWFyc2VyI3ZmclN0YXRl bWVudE51bWVyaWMuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudE51bWVyaWMo c2VsZiwgY3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnROdW1lcmljQ29udGV4 dCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4g KyAgICAgICAgTk9iaiA9IGN0eC5Ob2RlLkRhdGENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIE5PYmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgTGlu ZSA9IGN0eC5zdGFydC5saW5lDQo+ID4NCj4gPiArICAgICAgICBVcGRhdGVWYXJUeXBlID0gRmFs c2UNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICMgQ3JlYXRlIGEgR1VJRCBvcGNvZGUg dG8gd3JhcCB0aGUgbnVtZXJpYyBvcGNvZGUsIGlmIGl0IHJlZmVyIHRvIGJpdA0KPiA+IHZhcnN0 b3JlLg0KPiA+DQo+ID4gKyAgICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8uSXNCaXRWYXI6 DQo+ID4NCj4gPiArICAgICAgICAgICAgR3VpZE9iaiA9IElmckd1aWQoMCkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBHdWlkT2JqLlNldEd1aWQoRURLSUlfSUZSX0JJVF9WQVJTVE9SRV9HVUlEKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIEd1aWRPYmouU2V0TGluZU5vKExpbmUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgR3VpZE9iai5TZXRTY29wZSgxKSAgIyBwb3MNCj4gPg0KPiA+ICsgICAgICAg ICAgICBjdHguR3VpZE5vZGUuRGF0YSA9IEd1aWRPYmoNCj4gPg0KPiA+ICsgICAgICAgICAgICBj dHguR3VpZE5vZGUuQnVmZmVyID0gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oR3VpZE9iai5HZXRJ bmZvKCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lkd1aWROb2RlLmluc2VydENoaWxkKGN0 eC5Ob2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuSW5zZXJ0RW5kTm9kZShjdHguR3Vp ZE5vZGUsIGN0eC5zdG9wLmxpbmUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAjIGNo ZWNrIGRhdGEgdHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8u VmFyU3RvcmVJZCAhPSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRDoNCj4gPg0KPiA+ICsgICAgICAg ICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgTEZsYWdzID0gRURLSUlfSUZSX05VTUVSSUNfU0laRV9CSVQgJg0KPiA+IHNlbGYu Q3VyclFlc3RWYXJJbmZvLlZhclRvdGFsU2l6ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLkVycm9ySGFuZGxlcihOT2JqLlNldEZsYWdzRm9yQml0RmllbGQoTk9iai5HZXRRRmxhZ3Mo KSwNCj4gPiBMRmxhZ3MpLCBMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIERhdGFUeXBlU2l6ZSwgUmV0dXJuQ29kZSA9DQo+ID4gZ1Zm clZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlEYXRhVHlwZSgNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgIHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFu ZGxlcihSZXR1cm5Db2RlLCBMaW5lLCAiTnVtZXJpYyB2YXJpZCBpcyBub3QgdGhlDQo+IHZhbGlk DQo+ID4gZGF0YSB0eXBlIikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgRGF0YVR5cGVT aXplICE9IDAgYW5kIERhdGFUeXBlU2l6ZSAhPQ0KPiA+IHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZh clRvdGFsU2l6ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5k bGVyKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZS X1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICBMaW5lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICJOdW1lcmljIHZh cmlkIGRvZXNuJ3Qgc3VwcG9ydCBhcnJheSIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICApDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgTk9iai5TZXRGbGFncyhOT2JqLkdldFFGbGFncygpLCBz ZWxmLkN1cnJRZXN0VmFySW5mby5WYXJUeXBlKSwNCj4gPiBMaW5lDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5GTEFHUygp ICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgVXBkYXRlVmFyVHlwZSA9IGN0eC52ZnJO dW1lcmljRmxhZ3MoKS5VcGRhdGVWYXJUeXBlDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgc2Vs Zi5DdXJyUWVzdFZhckluZm8uSXNCaXRWYXI6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuRXJyb3JIYW5kbGVyKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgTk9iai5TZXRG bGFnc0ZvckJpdEZpZWxkKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC52 ZnJOdW1lcmljRmxhZ3MoKS5IRmxhZ3MsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgY3R4LnZmck51bWVyaWNGbGFncygpLkxGbGFncywNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICBjdHgudmZyTnVtZXJpY0ZsYWdzKCkuSXNEaXNwbGF5U3BlY2lmaWVkLA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIGN0eC5GLmxpbmUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFu ZGxlcigNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIE5PYmouU2V0RmxhZ3MoDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgY3R4LnZmck51bWVyaWNGbGFncygpLkhGbGFn cywNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBjdHgudmZyTnVtZXJpY0ZsYWdz KCkuTEZsYWdzLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC52ZnJOdW1l cmljRmxhZ3MoKS5Jc0Rpc3BsYXlTcGVjaWZpZWQsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICApLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgY3R4LkYubGluZSwNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIE5PYmouU2V0Rmxh Z3NTdHJlYW0oc2VsZi5FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJOdW1lcmljRmxhZ3MoKSkp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguS2V5KCkgIT0gTm9uZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBLZXkgPSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLkFzc2lnblF1ZXN0aW9uS2V5KE5PYmosIEtleSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBOT2JqLlNldEhhc0tleShUcnVlKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgTk9iai5TZXRIYXNTdGVwKGN0eC52ZnJTZXRNaW5NYXhTdGVwKCkuU3Rl cCgpICE9IE5vbmUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiAoc2VsZi5DdXJy UWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2UpIGFuZCAoDQo+ID4NCj4gPiArICAgICAgICAg ICAgc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVHlwZSBub3QgaW4gQmFzaWNUeXBlcw0KPiA+DQo+ ID4gKyAgICAgICAgKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFM SURfUEFSQU1FVEVSLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBMaW5lLA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAiTnVtZXJpYyBxdWVzdGlvbiBvbmx5IHN1cHBvcnQgVUlOVDgsIFVJ TlQxNiwgVUlOVDMyIGFuZA0KPiA+IFVJTlQ2NCBkYXRhIHR5cGUuIiwNCj4gPg0KPiA+ICsgICAg ICAgICAgICApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAjIG1vZGlmeSB0aGUgZGF0 YSBmb3IgbmFtZXZhbHVlDQo+ID4NCj4gPiArICAgICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5m by5WYXJUeXBlICE9IEVGSV9JRlJfVFlQRV9OVU1fU0laRV82NDoNCj4gPg0KPiA+ICsgICAgICAg ICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgVXBkYXRlZE5PYmogPSBJZnJOdW1lcmljKEVGSV9JRlJfVFlQRV9OVU1fU0laRV8z MikNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBVcGRhdGVkTk9iaiA9IElmck51bWVyaWMoc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVHlwZSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBVcGRhdGVkTk9iai5RTmFtZSA9IE5PYmouUU5hbWUNCj4g Pg0KPiA+ICsgICAgICAgICAgICBVcGRhdGVkTk9iai5WYXJJZFN0ciA9IE5PYmouVmFySWRTdHIN Cj4gPg0KPiA+ICsgICAgICAgICAgICBVcGRhdGVkTk9iai5IYXNRdWVzdGlvbklkID0gTk9iai5I YXNRdWVzdGlvbklkDQo+ID4NCj4gPiArICAgICAgICAgICAgVXBkYXRlZE5PYmouRmxhZ3NTdHJl YW0gPSBOT2JqLkZsYWdzU3RyZWFtDQo+ID4NCj4gPiArICAgICAgICAgICAgVXBkYXRlZE5PYmou SGFzS2V5ID0gTk9iai5IYXNLZXkNCj4gPg0KPiA+ICsgICAgICAgICAgICBVcGRhdGVkTk9iai5I YXNTdGVwID0gTk9iai5IYXNTdGVwDQo+ID4NCj4gPiArICAgICAgICAgICAgVXBkYXRlZE5PYmou TGluZU5vID0gTk9iai5MaW5lTm8NCj4gPg0KPiA+ICsgICAgICAgICAgICBVcGRhdGVkTk9iai5H ZXRJbmZvKCkuUXVlc3Rpb24gPSBOT2JqLkdldEluZm8oKS5RdWVzdGlvbg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIFVwZGF0ZWROT2JqLkdldEluZm8oKS5GbGFncyA9IE5PYmouR2V0SW5mbygpLkZs YWdzDQo+ID4NCj4gPiArICAgICAgICAgICAgVXBkYXRlZE5PYmouR2V0SW5mbygpLkRhdGEuTWlu VmFsdWUgPQ0KPiA+IE5PYmouR2V0SW5mbygpLkRhdGEuTWluVmFsdWUNCj4gPg0KPiA+ICsgICAg ICAgICAgICBVcGRhdGVkTk9iai5HZXRJbmZvKCkuRGF0YS5NYXhWYWx1ZSA9DQo+ID4gTk9iai5H ZXRJbmZvKCkuRGF0YS5NYXhWYWx1ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFVwZGF0ZWROT2Jq LkdldEluZm8oKS5EYXRhLlN0ZXAgPSBOT2JqLkdldEluZm8oKS5EYXRhLlN0ZXANCj4gPg0KPiA+ ICsgICAgICAgICAgICBOT2JqID0gVXBkYXRlZE5PYmoNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBOT2JqDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5C dWZmZXIgPSBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShOT2JqLkdldEluZm8oKSkNCj4gPg0KPiA+ ICsgICAgICAgIHNlbGYuSW5zZXJ0RW5kTm9kZShjdHguTm9kZSwgY3R4LnN0b3AubGluZSkNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYuQ3VycmVudE1pbk1heERhdGEgPSBOb25lDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3Zm clNldE1pbk1heFN0ZXAuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclNldE1pbk1heFN0ZXAo c2VsZiwgY3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5WZnJTZXRNaW5NYXhTdGVwQ29udGV4dCk6 DQo+ID4NCj4gPiArICAgICAgICBJbnREZWNTdHlsZSA9IEZhbHNlDQo+ID4NCj4gPiArICAgICAg ICBPcE9iaiA9IGN0eC5Ob2RlLkRhdGENCj4gPg0KPiA+ICsgICAgICAgIGlmICgNCj4gPg0KPiA+ ICsgICAgICAgICAgICAoc2VsZi5DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgYW5kIChPcE9iai5HZXRPcENvZGUoKSA9PSBFRklfSUZSX05VTUVSSUNfT1Ap DQo+ID4NCj4gPiArICAgICAgICAgICAgYW5kICgoT3BPYmouR2V0TnVtZXJpY0ZsYWdzKCkgJiBF REtJSV9JRlJfRElTUExBWV9CSVQpID09IDApDQo+ID4NCj4gPiArICAgICAgICApIG9yICgNCj4g Pg0KPiA+ICsgICAgICAgICAgICAoc2VsZi5DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFs c2UpDQo+ID4NCj4gPiArICAgICAgICAgICAgYW5kIChPcE9iai5HZXRPcENvZGUoKSA9PSBFRklf SUZSX05VTUVSSUNfT1ApDQo+ID4NCj4gPiArICAgICAgICAgICAgYW5kICgoT3BPYmouR2V0TnVt ZXJpY0ZsYWdzKCkgJiBFRklfSUZSX0RJU1BMQVkpID09IDApDQo+ID4NCj4gPiArICAgICAgICAp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIEludERlY1N0eWxlID0gVHJ1ZQ0KPiA+DQo+ID4gKyAg ICAgICAgTWluTmVnYXRpdmUgPSBGYWxzZQ0KPiA+DQo+ID4gKyAgICAgICAgTWF4TmVnYXRpdmUg PSBGYWxzZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVu KGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIE1pbiA9IHNlbGYuVHJhbnNOdW0o Y3R4LkkudGV4dCkNCj4gPg0KPiA+ICsgICAgICAgIE1heCA9IHNlbGYuVHJhbnNOdW0oY3R4LkEu dGV4dCkNCj4gPg0KPiA+ICsgICAgICAgIFN0ZXAgPSBzZWxmLlRyYW5zTnVtKGN0eC5TLnRleHQp IGlmIGN0eC5TdGVwKCkgIT0gTm9uZSBlbHNlIDANCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGlmIGN0eC5OMSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIE1pbk5lZ2F0aXZl ID0gVHJ1ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgSW50RGVjU3R5bGUgPT0g RmFsc2UgYW5kIE1pbk5lZ2F0aXZlID09IFRydWU6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2Vs Zi5FcnJvckhhbmRsZXIoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg Y3R4LkkubGluZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgIictJyBjYW4ndCBiZSB1c2Vk IHdoZW4gbm90IGluIGludCBkZWNpbWFsIHR5cGUuIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAp DQo+ID4NCj4gPiArICAgICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiAoSW50RGVjU3R5bGUgPT0gRmFsc2UpIGFuZCAoTWluID4g KDEgPDwNCj4gPiBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJUb3RhbFNpemUpIC0gMSk6ICAjDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1F VEVSLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgY3R4LkkubGluZSwNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICJCSVQgdHlwZSBtaW5pbXVtIGNhbid0IHNtYWxsIHRoYW4g MCwgYmlnZ2VyIHRoYW4gMl5CaXRXaWR0aCAtDQo+ID4gMSIsDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBUeXBlID0gc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVHlwZQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV82NDoNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIEludERlY1N0eWxlOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgIGlmIE1pbk5lZ2F0aXZlOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpZiBNaW4gPiAweDgwMDAwMDAwMDAwMDAwMDA6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY3R4LkkubGluZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiSU5UNjQgdHlwZSBtaW5pbXVtIGNhbid0IHNtYWxsIHRoYW4g LQ0KPiA+IDB4ODAwMDAwMDAwMDAwMDAwMCwgYmlnIHRoYW4gMHg3RkZGRkZGRkZGRkZGRkZGIiwN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZiBNaW4gPiAweDdGRkZGRkZGRkZGRkZGRkY6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY3R4LkkubGluZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiSU5UNjQgdHlwZSBtaW5pbXVtIGNhbid0IHNtYWxsIHRoYW4gLQ0KPiA+ IDB4ODAwMDAwMDAwMDAwMDAwMCwgYmlnIHRoYW4gMHg3RkZGRkZGRkZGRkZGRkZGIiwNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIGlmIE1pbk5lZ2F0aXZlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgIE1pbiA9IH5NaW4gKyAxDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgaWYgSW50RGVjU3R5bGU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgaWYgTWluTmVnYXRpdmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlmIE1pbiA+IDB4ODAwMDAwMDA6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9Q QVJBTUVURVIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y3R4LkkubGluZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiSU5UMzIgdHlwZSBtaW5pbXVtIGNhbid0IHNtYWxsIHRoYW4gLTB4ODAwMDAwMDAsDQo+IGJp Zw0KPiA+IHRoYW4gMHg3RkZGRkZGRiIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWluID4gMHg3RkZGRkZGRjoN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5k bGVyKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZmclJl dHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHguSS5saW5lLA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJTlQzMiB0eXBlIG1pbmltdW0gY2FuJ3Qg c21hbGwgdGhhbiAtMHg4MDAwMDAwMCwNCj4gYmlnDQo+ID4gdGhhbiAweDdGRkZGRkZGIiwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgIGlmIE1pbk5lZ2F0aXZlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgIE1pbiA9IH5NaW4gKyAxDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzE2Og0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgaWYgSW50RGVjU3R5bGU6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgaWYgTWluTmVnYXRpdmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmIE1pbiA+IDB4ODAwMDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BB UkFNRVRFUiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj dHguSS5saW5lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJJTlQxNiB0eXBlIG1pbmltdW0gY2FuJ3Qgc21hbGwgdGhhbiAtMHg4MDAwLCBiaWcNCj4gdGhh bg0KPiA+IDB4N0ZGRiIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICApDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWluID4gMHg3RkZGOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGN0eC5JLmxpbmUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIklOVDE2IHR5cGUgbWluaW11bSBjYW4ndCBzbWFsbCB0aGFuIC0w eDgwMDAsIGJpZw0KPiB0aGFuDQo+ID4gMHg3RkZGIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIE1p bk5lZ2F0aXZlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIE1pbiA9IH5NaW4g KyAxDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJ X0lGUl9UWVBFX05VTV9TSVpFXzg6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBJ bnREZWNTdHlsZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBNaW5OZWdh dGl2ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWluID4gMHg4 MDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JI YW5kbGVyKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHguSS5saW5lLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJTlQ4IHR5cGUgbWluaW11bSBjYW4n dCBzbWFsbCB0aGFuIC0weDgwLCBiaWcgdGhhbg0KPiA+IDB4N0YiLA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIE1p biA+IDB4N0Y6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm LkVycm9ySGFuZGxlcigNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LkkubGluZSwNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSU5UOCB0eXBlIG1pbmlt dW0gY2FuJ3Qgc21hbGwgdGhhbiAtMHg4MCwgYmlnIHRoYW4NCj4gPiAweDdGIiwNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgIGlmIE1pbk5lZ2F0aXZlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgIE1pbiA9IH5NaW4gKyAxDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgu TjIgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBNYXhOZWdhdGl2ZSA9IFRydWUNCj4g Pg0KPiA+ICsgICAgICAgIGlmIEludERlY1N0eWxlID09IEZhbHNlIGFuZCBNYXhOZWdhdGl2ZSA9 PSBUcnVlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJB TUVURVIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5BLmxpbmUsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICIgJy0nIGNhbid0IGJlIHVzZWQgd2hlbiBub3QgaW4gaW50IGRlY2lt YWwgdHlwZS4iLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgIGlm IHNlbGYuQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlm IChJbnREZWNTdHlsZSA9PSBGYWxzZSkgYW5kIChNYXggPiAoMSA8PA0KPiA+IHNlbGYuQ3VyclFl c3RWYXJJbmZvLlZhclRvdGFsU2l6ZSkgLSAxKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5FcnJvckhhbmRsZXIoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBWZnJSZXR1 cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICBjdHguQS5saW5lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIkJJ VCB0eXBlIG1heGltdW0gY2FuJ3QgYmUgYmlnZ2VyIHRoYW4gMl5CaXRXaWR0aCAtMSIsDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBUeXBlID0gc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVHlw ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1f U0laRV82NDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIEludERlY1N0eWxlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIE1heE5lZ2F0aXZlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBNYXggPiAweDgwMDAwMDAwMDAwMDAw MDA6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkVycm9y SGFuZGxlcigNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LkEubGluZSwNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSU5UNjQgdHlwZSBtaW5pbXVtIGNh bid0IHNtYWxsIHRoYW4gLQ0KPiA+IDB4ODAwMDAwMDAwMDAwMDAwMCwgYmlnIHRoYW4gMHg3RkZG RkZGRkZGRkZGRkZGIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBNYXggPiAweDdGRkZGRkZGRkZGRkZGRkY6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxl cigNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZnJSZXR1 cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LkEubGluZSwNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSU5UNjQgdHlwZSBtaW5pbXVtIGNhbid0IHNt YWxsIHRoYW4gLQ0KPiA+IDB4ODAwMDAwMDAwMDAwMDAwMCwgYmlnIHRoYW4gMHg3RkZGRkZGRkZG RkZGRkZGIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIE1heE5lZ2F0aXZlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgIE1heCA9IH5NYXggKyAxDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICBpZiBNYXggPCBNaW46ICAjDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFN RVRFUiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LkEubGluZSwN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1heGltdW0gY2FuJ3QgYmUg bGVzcyB0aGFuIE1pbmltdW0iLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZS X1RZUEVfTlVNX1NJWkVfMzI6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBJbnRE ZWNTdHlsZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBNYXhOZWdhdGl2 ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWF4ID4gMHg4MDAw MDAwMDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuRXJy b3JIYW5kbGVyKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHguQS5saW5lLA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJTlQzMiB0eXBlIG1pbmltdW0g Y2FuJ3Qgc21hbGwgdGhhbiAtMHg4MDAwMDAwMCwNCj4gYmlnDQo+ID4gdGhhbiAweDdGRkZGRkZG IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpZiBNYXggPiAweDdGRkZGRkZGOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lO VkFMSURfUEFSQU1FVEVSLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGN0eC5BLmxpbmUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIklOVDMyIHR5cGUgbWluaW11bSBjYW4ndCBzbWFsbCB0aGFuIC0weDgwMDAwMDAw LA0KPiBiaWcNCj4gPiB0aGFuIDB4N0ZGRkZGRkYiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgTWF4 TmVnYXRpdmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgTWF4ID0gfk1heCAr IDENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIE1heCA8IE1p bjogICMNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxl cigNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5W RlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjdHguQS5saW5lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiTWF4aW11bSBjYW4ndCBiZSBsZXNzIHRoYW4gTWluaW11bSIsDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNjoNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgIGlmIEludERlY1N0eWxlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgIGlmIE1heE5lZ2F0aXZlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpZiBNYXggPiAweDgwMDA6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJB TUVURVIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4 LkEubGluZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi SU5UMTYgdHlwZSBtaW5pbXVtIGNhbid0IHNtYWxsIHRoYW4gLTB4ODAwMCwgYmlnDQo+IHRoYW4N Cj4gPiAweDdGRkYiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIE1heCA+IDB4N0ZGRjoNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjdHguQS5saW5lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJJTlQxNiB0eXBlIG1pbmltdW0gY2FuJ3Qgc21hbGwgdGhhbiAtMHg4 MDAwLCBiaWcNCj4gdGhhbg0KPiA+IDB4N0ZGRiIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBNYXhO ZWdhdGl2ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBNYXggPSB+TWF4ICsg MQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgTWF4IDwgTWlu OiAgIw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVy KA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGN0eC5BLmxpbmUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJNYXhpbXVtIGNhbid0IGJlIGxlc3MgdGhhbiBNaW5pbXVtIiwNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBpZiBJbnREZWNTdHlsZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICBpZiBNYXhOZWdhdGl2ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaWYgTWF4ID4gMHg4MDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRF UiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHguQS5s aW5lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJTlQ4 IHR5cGUgbWluaW11bSBjYW4ndCBzbWFsbCB0aGFuIC0weDgwLCBiaWcgdGhhbg0KPiA+IDB4N0Yi LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlmIE1heCA+IDB4N0Y6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9Q QVJBTUVURVIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y3R4LkEubGluZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiSU5UOCB0eXBlIG1pbmltdW0gY2FuJ3Qgc21hbGwgdGhhbiAtMHg4MCwgYmlnIHRoYW4NCj4g PiAweDdGIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGlmIE1heE5lZ2F0aXZlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgIE1heCA9IH5NYXggKyAxDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICBpZiBNYXggPCBNaW46ICAjDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFN RVRFUiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LkEubGluZSwN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1heGltdW0gY2FuJ3QgYmUg bGVzcyB0aGFuIE1pbmltdW0iLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICkN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIE9wT2JqLlNldE1pbk1heFN0ZXBEYXRhKE1p biwgTWF4LCBTdGVwKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5 bnRheFBhcnNlciN2ZnJOdW1lcmljRmxhZ3MuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmck51 bWVyaWNGbGFncyhzZWxmLCBjdHg6DQo+ID4gVmZyU3ludGF4UGFyc2VyLlZmck51bWVyaWNGbGFn c0NvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgIyBjaGVjayBkYXRhIHR5cGUgZmxhZw0KPiA+ DQo+ID4gKyAgICAgICAgY3R4LkxGbGFncyA9IHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUg JiBFRklfSUZSX05VTUVSSUNfU0laRQ0KPiA+DQo+ID4gKyAgICAgICAgVmFyU3RvcmVUeXBlID0N Cj4gPiBnVmZyRGF0YVN0b3JhZ2UuR2V0VmFyU3RvcmVUeXBlKHNlbGYuQ3VyclFlc3RWYXJJbmZv LlZhclN0b3JlSWQpDQo+ID4NCj4gPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4g Pg0KPiA+ICsgICAgICAgIElzU2V0VHlwZSA9IEZhbHNlDQo+ID4NCj4gPiArICAgICAgICBzZWxm LnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZm9yIEZs YWdzRmllbGRDdHggaW4gY3R4Lm51bWVyaWNGbGFnc0ZpZWxkKCk6DQo+ID4NCj4gPiArICAgICAg ICAgICAgY3R4LkhGbGFncyB8PSBGbGFnc0ZpZWxkQ3R4LkhGbGFnDQo+ID4NCj4gPiArICAgICAg ICAgICAgY3R4LklzRGlzcGxheVNwZWNpZmllZCB8PSBGbGFnc0ZpZWxkQ3R4LklzRGlzcGxheVNw ZWNpZmllZA0KPiA+DQo+ID4gKyAgICAgICAgICAgIElzU2V0VHlwZSB8PSBGbGFnc0ZpZWxkQ3R4 LklzU2V0VHlwZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIEZsYWdzRmllbGRDdHguTnVtZXJp Y1NpemVPbmUoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBzZWxmLkN1 cnJRZXN0VmFySW5mby5Jc0JpdFZhciA9PSBGYWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIGN0eC5MRmxhZ3MgPSAoY3R4LkxGbGFncyAmIH5FRklfSUZSX05VTUVSSUNfU0laRSkg fA0KPiA+IEVGSV9JRlJfTlVNRVJJQ19TSVpFXzENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgICAgICBpZiBGbGFnc0ZpZWxkQ3R4Lk51bWVyaWNTaXplVHdvKCkgIT0gTm9uZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0g RmFsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBjdHguTEZsYWdzID0gKGN0eC5M RmxhZ3MgJiB+RUZJX0lGUl9OVU1FUklDX1NJWkUpIHwNCj4gPiBFRklfSUZSX05VTUVSSUNfU0la RV8yDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgRmxhZ3NGaWVsZEN0eC5O dW1lcmljU2l6ZUZvdXIoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBz ZWxmLkN1cnJRZXN0VmFySW5mby5Jc0JpdFZhciA9PSBGYWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIGN0eC5MRmxhZ3MgPSAoY3R4LkxGbGFncyAmIH5FRklfSUZSX05VTUVSSUNf U0laRSkgfA0KPiA+IEVGSV9JRlJfTlVNRVJJQ19TSVpFXzQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgICAgICBpZiBGbGFnc0ZpZWxkQ3R4Lk51bWVyaWNTaXplRWlnaHQoKSAhPSBOb25l Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5Jc0Jp dFZhciA9PSBGYWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3Mg PSAoY3R4LkxGbGFncyAmIH5FRklfSUZSX05VTUVSSUNfU0laRSkgfA0KPiA+IEVGSV9JRlJfTlVN RVJJQ19TSVpFXzgNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBGbGFnc0Zp ZWxkQ3R4LkRpc1BsYXlJbnREZWMoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5Jc0JpdFZhciA9PSBGYWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3MgPSAoY3R4LkxGbGFncyAmIH5FRklfSUZSX0RJ U1BMQVkpIHwNCj4gPiBFRklfSUZSX0RJU1BMQVlfSU5UX0RFQw0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9 ICgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBjdHguTEZsYWdzICYgfkVES0lJ X0lGUl9ESVNQTEFZX0JJVA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgKSB8IEVES0lJ X0lGUl9ESVNQTEFZX0lOVF9ERUNfQklUDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgRmxhZ3NGaWVsZEN0eC5EaXNQbGF5VUludERlYygpICE9IE5vbmU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIGlmIHNlbGYuQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyID09IEZhbHNl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9IChjdHguTEZsYWdz ICYgfkVGSV9JRlJfRElTUExBWSkgfA0KPiA+IEVGSV9JRlJfRElTUExBWV9VSU5UX0RFQw0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgY3R4LkxGbGFncyA9ICgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBjdHgu TEZsYWdzICYgfkVES0lJX0lGUl9ESVNQTEFZX0JJVA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgKSB8IEVES0lJX0lGUl9ESVNQTEFZX1VJTlRfREVDX0JJVA0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIEZsYWdzRmllbGRDdHguRGlzUGxheVVJbnRIZXgoKSAhPSBO b25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5J c0JpdFZhciA9PSBGYWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGN0eC5MRmxh Z3MgPSAoY3R4LkxGbGFncyAmIH5FRklfSUZSX0RJU1BMQVkpIHwNCj4gPiBFRklfSUZSX0RJU1BM QVlfVUlOVF9IRVgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3MgPSAoDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgY3R4LkxGbGFncyAmIH5FREtJSV9JRlJfRElTUExBWV9CSVQNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICkgfCBFREtJSV9JRlJfRElTUExBWV9VSU5UX0hFWF9CSVQN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIFZhclR5cGUgPSBzZWxmLkN1cnJRZXN0VmFy SW5mby5WYXJUeXBlDQo+ID4NCj4gPiArICAgICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5J c0JpdFZhciA9PSBGYWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBzZWxmLkN1cnJRZXN0 VmFySW5mby5WYXJTdG9yZUlkICE9IEVGSV9WQVJTVE9SRV9JRF9JTlZBTElEOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBpZiAoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBWYXJT dG9yZVR5cGUgPT0NCj4gPiBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9C VUZGRVINCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIG9yIFZhclN0b3JlVHlwZSA9PQ0K PiA+IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX0VGSQ0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICApOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgaWYgc2Vs Zi5DdXJyUWVzdFZhckluZm8uVmFyVHlwZSAhPSAoY3R4LkxGbGFncyAmDQo+ID4gRUZJX0lGUl9O VU1FUklDX1NJWkUpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuRXJy b3JIYW5kbGVyKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZnJSZXR1 cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExpbmUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJOdW1lcmljIEZsYWcgaXMgbm90IHNhbWUgdG8gTnVtZXJpYyBWYXJEYXRhIHR5cGUi LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICMgdXBkYXRlIGRh dGEgdHlwZSBmb3IgbmFtZS92YWx1ZSBzdG9yZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVHlwZSA9IGN0eC5MRmxhZ3MgJg0KPiA+IEVGSV9J RlJfTlVNRVJJQ19TSVpFDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBTaXplLCBfID0g Z1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlEYXRhVHlwZSgNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJUeXBlDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJUb3RhbFNpemUgPSBTaXplDQo+ID4NCj4gPiArICAg ICAgICAgICAgZWxpZiBJc1NldFR5cGU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYu Q3VyclFlc3RWYXJJbmZvLlZhclR5cGUgPSBjdHguTEZsYWdzICYNCj4gRUZJX0lGUl9OVU1FUklD X1NJWkUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgKA0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclN0b3JlSWQgIT0gRUZJX1ZBUlNUT1JF X0lEX0lOVkFMSUQNCj4gPg0KPiA+ICsgICAgICAgICAgICBhbmQgc2VsZi5DdXJyUWVzdFZhcklu Zm8uSXNCaXRWYXINCj4gPg0KPiA+ICsgICAgICAgICk6DQo+ID4NCj4gPiArICAgICAgICAgICAg Y3R4LkxGbGFncyAmPSBFREtJSV9JRlJfRElTUExBWV9CSVQNCj4gPg0KPiA+ICsgICAgICAgICAg ICBjdHguTEZsYWdzIHw9IEVES0lJX0lGUl9OVU1FUklDX1NJWkVfQklUICYNCj4gPiBzZWxmLkN1 cnJRZXN0VmFySW5mby5WYXJUb3RhbFNpemUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGlmIFZhclR5cGUgIT0gc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVHlwZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBjdHguVXBkYXRlVmFyVHlwZSA9IFRydWUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBjdHguSEZsYWdzLCBjdHguTEZsYWdzDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNl ciNudW1lcmljRmxhZ3NGaWVsZC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0TnVtZXJpY0ZsYWdz RmllbGQoc2VsZiwgY3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5OdW1lcmljRmxhZ3NGaWVsZENv bnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+DQo+ID4g KyAgICAgICAgaWYgY3R4Lk51bWJlcigpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgc2VsZi5UcmFuc051bShjdHguTi50ZXh0KSAhPSAwOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBzZWxmLkVycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JU RUQsDQo+ID4gTGluZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5OdW1l cmljU2l6ZU9uZSgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgc2VsZi5DdXJy UWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IGN0eC5Jc1NldFR5cGUgPSBUcnVlDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIs DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBMaW5lLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgIkNhbiBub3Qgc3BlY2lmeSB0aGUgc2l6ZSBvZiB0aGUgbnVtZXJpYyB2YWx1 ZSBmb3IgQklUIGZpZWxkIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4Lk51bWVyaWNTaXplVHdvKCkgIT0gTm9uZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5Jc0JpdFZhciA9PSBG YWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4LklzU2V0VHlwZSA9IFRydWUNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxm LkVycm9ySGFuZGxlcigNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIFZmclJldHVybkNv ZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIExpbmUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAiQ2FuIG5vdCBzcGVj aWZ5IHRoZSBzaXplIG9mIHRoZSBudW1lcmljIHZhbHVlIGZvciBCSVQgZmllbGQiLA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBj dHguTnVtZXJpY1NpemVGb3VyKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBz ZWxmLkN1cnJRZXN0VmFySW5mby5Jc0JpdFZhciA9PSBGYWxzZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgY3R4LklzU2V0VHlwZSA9IFRydWUNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BB UkFNRVRFUiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIExpbmUsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAiQ2FuIG5vdCBzcGVjaWZ5IHRoZSBzaXplIG9mIHRoZSBudW1l cmljIHZhbHVlIGZvciBCSVQgZmllbGQiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguTnVtZXJpY1NpemVFaWdodCgpICE9 IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8uSXNC aXRWYXIgPT0gRmFsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5Jc1NldFR5cGUg PSBUcnVlDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBMaW5lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIkNh biBub3Qgc3BlY2lmeSB0aGUgc2l6ZSBvZiB0aGUgbnVtZXJpYyB2YWx1ZSBmb3IgQklUIGZpZWxk IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgaWYgY3R4LkRpc1BsYXlJbnREZWMoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGN0eC5Jc0Rpc3BsYXlTcGVjaWZpZWQgPSBUcnVlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICBpZiBjdHguRGlzUGxheVVJbnREZWMoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGN0eC5Jc0Rpc3BsYXlTcGVjaWZpZWQgPSBUcnVlDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBpZiBjdHguRGlzUGxheVVJbnRIZXgoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGN0eC5Jc0Rpc3BsYXlTcGVjaWZpZWQgPSBUcnVlDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBpZiBjdHgucXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKCkgIT0gTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguSEZsYWcgPSBjdHgucXVlc3Rpb25oZWFkZXJGbGFn c0ZpZWxkKCkuUUhGbGFnDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4 LkhGbGFnDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRPbmVPZi4NCj4gPg0KPiA+ICsg ICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50T25lT2Yoc2VsZiwgY3R4Og0KPiA+IFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRPbmVPZkNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIFVwZGF0ZVZhclR5cGUgPSBGYWxz ZQ0KPiA+DQo+ID4gKyAgICAgICAgT09iaiA9IGN0eC5Ob2RlLkRhdGENCj4gPg0KPiA+ICsgICAg ICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgc2VsZi5DdXJy UWVzdFZhckluZm8uSXNCaXRWYXI6DQo+ID4NCj4gPiArICAgICAgICAgICAgR3VpZE9iaiA9IElm ckd1aWQoMCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBHdWlkT2JqLlNldEd1aWQoRURLSUlfSUZS X0JJVF9WQVJTVE9SRV9HVUlEKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIEd1aWRPYmouU2V0TGlu ZU5vKGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIEd1aWRPYmouU2V0U2Nv cGUoMSkgICMgcG9zDQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lkd1aWROb2RlLkRhdGEgPSBH dWlkT2JqDQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lkd1aWROb2RlLkJ1ZmZlciA9IGdGb3Jt UGtnLlN0cnVjdFRvU3RyZWFtKEd1aWRPYmouR2V0SW5mbygpKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGN0eC5HdWlkTm9kZS5pbnNlcnRDaGlsZChjdHguTm9kZSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBzZWxmLkluc2VydEVuZE5vZGUoY3R4Lkd1aWROb2RlLCBjdHguc3RvcC5saW5lKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgIyBjaGVjayBkYXRhIHR5cGUNCj4gPg0KPiA+ICsg ICAgICAgIGlmIHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclN0b3JlSWQgIT0gRUZJX1ZBUlNUT1JF X0lEX0lOVkFMSUQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhcklu Zm8uSXNCaXRWYXI6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIExGbGFncyA9IEVES0lJX0lG Ul9OVU1FUklDX1NJWkVfQklUICYNCj4gPiBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJUb3RhbFNp emUNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoT09iai5TZXRG bGFnc0ZvckJpdEZpZWxkKE9PYmouR2V0UUZsYWdzKCksDQo+ID4gTEZsYWdzKSwgTGluZSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBEYXRh VHlwZVNpemUsIFJldHVybkNvZGUgPQ0KPiA+IGdWZnJWYXJEYXRhVHlwZURCLkdldERhdGFUeXBl U2l6ZUJ5RGF0YVR5cGUoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLkN1cnJR ZXN0VmFySW5mby5WYXJUeXBlDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgTGluZSwgIk9u ZU9mIHZhcmlkIGlzIG5vdCB0aGUgdmFsaWQNCj4gPiBkYXRhIHR5cGUiKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBpZiBEYXRhVHlwZVNpemUgIT0gMCBhbmQgRGF0YVR5cGVTaXplICE9DQo+ ID4gc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVG90YWxTaXplOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIExpbmUsDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgIk9uZU9mIHZhcmlkIGRvZXNuJ3Qgc3VwcG9ydCBhcnJheSIsDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNl bGYuRXJyb3JIYW5kbGVyKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgT09iai5TZXRG bGFncyhPT2JqLkdldFFGbGFncygpLCBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJUeXBlKSwNCj4g PiBMaW5lDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgIGlm IGN0eC5GTEFHUygpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgVXBkYXRlVmFyVHlw ZSA9IGN0eC52ZnJPbmVvZkZsYWdzRmllbGQoKS5VcGRhdGVWYXJUeXBlDQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8uSXNCaXRWYXI6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgT09iai5TZXRGbGFnc0ZvckJpdEZpZWxkKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgIGN0eC52ZnJPbmVvZkZsYWdzRmllbGQoKS5IRmxhZ3MsDQo+IGN0eC52ZnJPbmVv ZkZsYWdzRmllbGQoKS5MRmxhZ3MNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICksDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBjdHguRi5saW5lLA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICBPT2JqLlNldEZsYWdzKGN0eC52ZnJPbmVvZkZsYWdzRmllbGQoKS5IRmxhZ3MsDQo+ID4g Y3R4LnZmck9uZW9mRmxhZ3NGaWVsZCgpLkxGbGFncyksDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICBjdHguRi5saW5lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICApDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBpZiAoc2VsZi5DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIg PT0gRmFsc2UpIGFuZCAoDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5DdXJyUWVzdFZhcklu Zm8uVmFyVHlwZSBub3QgaW4gQmFzaWNUeXBlcw0KPiA+DQo+ID4gKyAgICAgICAgKToNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBMaW5lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAiT25l T2YgcXVlc3Rpb24gb25seSBzdXBwb3J0IFVJTlQ4LCBVSU5UMTYsIFVJTlQzMiBhbmQNCj4gVUlO VDY0DQo+ID4gZGF0YSB0eXBlLiIsDQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgIyBtb2RpZnkgdGhlIGRhdGEgVmFydHlwZSBmb3IgTmFtZVZh bHVlDQo+ID4NCj4gPiArICAgICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJUeXBlICE9 IEVGSV9JRlJfVFlQRV9OVU1fU0laRV82NDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBzZWxm LkN1cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgVXBk YXRlZE9PYmogPSBJZnJPbmVPZihFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzIpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgVXBkYXRlZE9PYmog PSBJZnJPbmVPZihzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJUeXBlKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIFVwZGF0ZWRPT2JqLlFOYW1lID0gT09iai5RTmFtZQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIFVwZGF0ZWRPT2JqLlZhcklkU3RyID0gT09iai5WYXJJZFN0cg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIFVwZGF0ZWRPT2JqLkhhc1F1ZXN0aW9uSWQgPSBPT2JqLkhhc1F1ZXN0aW9uSWQNCj4g Pg0KPiA+ICsgICAgICAgICAgICBVcGRhdGVkT09iai5HZXRJbmZvKCkuUXVlc3Rpb24gPSBPT2Jq LkdldEluZm8oKS5RdWVzdGlvbg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFVwZGF0ZWRPT2JqLkdl dEluZm8oKS5GbGFncyA9IE9PYmouR2V0SW5mbygpLkZsYWdzDQo+ID4NCj4gPiArICAgICAgICAg ICAgVXBkYXRlZE9PYmouR2V0SW5mbygpLkRhdGEuTWluVmFsdWUgPQ0KPiA+IE9PYmouR2V0SW5m bygpLkRhdGEuTWluVmFsdWUNCj4gPg0KPiA+ICsgICAgICAgICAgICBVcGRhdGVkT09iai5HZXRJ bmZvKCkuRGF0YS5NYXhWYWx1ZSA9DQo+ID4gT09iai5HZXRJbmZvKCkuRGF0YS5NYXhWYWx1ZQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIFVwZGF0ZWRPT2JqLkdldEluZm8oKS5EYXRhLlN0ZXAgPSBP T2JqLkdldEluZm8oKS5EYXRhLlN0ZXANCj4gPg0KPiA+ICsgICAgICAgICAgICBPT2JqID0gVXBk YXRlZE9PYmoNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIE9PYmouU2V0TGluZU5vKGN0 eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LkZMQUdTKCkgIT0gTm9uZToN Cj4gPg0KPiA+ICsNCj4gPiBPT2JqLlNldEZsYWdzU3RyZWFtKHNlbGYuRXh0cmFjdE9yaWdpbmFs VGV4dChjdHgudmZyT25lb2ZGbGFnc0ZpZWxkKCkpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgaWYgY3R4LnZmclNldE1pbk1heFN0ZXAoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIE9PYmouU2V0SGFzTWluTWF4KFRydWUpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYg Y3R4LnZmclNldE1pbk1heFN0ZXAoKS5TdGVwKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgT09iai5TZXRIYXNTdGVwKFRydWUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICBjdHguTm9kZS5EYXRhID0gT09iag0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuQnVm ZmVyID0gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oT09iai5HZXRJbmZvKCkpDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLkluc2VydEVuZE5vZGUoY3R4Lk5vZGUsIGN0eC5zdG9wLmxpbmUpDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLkN1cnJlbnRNaW5NYXhEYXRhID0gTm9uZQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJP bmVvZkZsYWdzRmllbGQuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmck9uZW9mRmxhZ3NGaWVs ZChzZWxmLCBjdHg6DQo+ID4gVmZyU3ludGF4UGFyc2VyLlZmck9uZW9mRmxhZ3NGaWVsZENvbnRl eHQpOg0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkxGbGFncyA9IHNlbGYuQ3VyclFlc3RWYXJJbmZv LlZhclR5cGUgJiBFRklfSUZSX05VTUVSSUNfU0laRQ0KPiA+DQo+ID4gKyAgICAgICAgVmFyU3Rv cmVUeXBlID0NCj4gPiBnVmZyRGF0YVN0b3JhZ2UuR2V0VmFyU3RvcmVUeXBlKHNlbGYuQ3VyclFl c3RWYXJJbmZvLlZhclN0b3JlSWQpDQo+ID4NCj4gPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0 LmxpbmUNCj4gPg0KPiA+ICsgICAgICAgIElzU2V0VHlwZSA9IEZhbHNlDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgZm9yIEZsYWdzRmllbGRDdHggaW4gY3R4Lm51bWVyaWNGbGFnc0ZpZWxkKCk6DQo+ID4NCj4g PiArICAgICAgICAgICAgY3R4LkhGbGFncyB8PSBGbGFnc0ZpZWxkQ3R4LkhGbGFnDQo+ID4NCj4g PiArICAgICAgICAgICAgSXNTZXRUeXBlIHw9IEZsYWdzRmllbGRDdHguSXNTZXRUeXBlDQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgRmxhZ3NGaWVsZEN0eC5OdW1lcmljU2l6ZU9uZSgpICE9IE5v bmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIHNlbGYuQ3VyclFlc3RWYXJJbmZvLklz Qml0VmFyID09IEZhbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFn cyA9IChjdHguTEZsYWdzICYgfkVGSV9JRlJfTlVNRVJJQ19TSVpFKSB8DQo+ID4gRUZJX0lGUl9O VU1FUklDX1NJWkVfMQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIEZsYWdz RmllbGRDdHguTnVtZXJpY1NpemVUd28oKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5Jc0JpdFZhciA9PSBGYWxzZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3MgPSAoY3R4LkxGbGFncyAmIH5FRklfSUZS X05VTUVSSUNfU0laRSkgfA0KPiA+IEVGSV9JRlJfTlVNRVJJQ19TSVpFXzINCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBGbGFnc0ZpZWxkQ3R4Lk51bWVyaWNTaXplRm91cigp ICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIHNlbGYuQ3VyclFlc3RWYXJJ bmZvLklzQml0VmFyID09IEZhbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgY3R4 LkxGbGFncyA9IChjdHguTEZsYWdzICYgfkVGSV9JRlJfTlVNRVJJQ19TSVpFKSB8DQo+ID4gRUZJ X0lGUl9OVU1FUklDX1NJWkVfNA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlm IEZsYWdzRmllbGRDdHguTnVtZXJpY1NpemVFaWdodCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIGlmIHNlbGYuQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyID09IEZhbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9IChjdHguTEZsYWdzICYg fkVGSV9JRlJfTlVNRVJJQ19TSVpFKSB8DQo+ID4gRUZJX0lGUl9OVU1FUklDX1NJWkVfOA0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIEZsYWdzRmllbGRDdHguRGlzUGxheUlu dERlYygpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIHNlbGYuQ3VyclFl c3RWYXJJbmZvLklzQml0VmFyID09IEZhbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgY3R4LkxGbGFncyA9IChjdHguTEZsYWdzICYgfkVGSV9JRlJfRElTUExBWSkgfA0KPiA+IEVG SV9JRlJfRElTUExBWV9JTlRfREVDDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGVsc2U6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBjdHguTEZsYWdzID0gKA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3MgJiB+RURLSUlfSUZSX0RJU1BMQVlfQklU DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICApIHwgRURLSUlfSUZSX0RJU1BMQVlfSU5U X0RFQ19CSVQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBGbGFnc0ZpZWxk Q3R4LkRpc1BsYXlVSW50RGVjKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg aWYgc2VsZi5DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBjdHguTEZsYWdzID0gKGN0eC5MRmxhZ3MgJiB+RUZJX0lGUl9ESVNQ TEFZKSB8DQo+ID4gRUZJX0lGUl9ESVNQTEFZX1VJTlRfREVDDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBjdHguTEZsYWdzID0g KA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3MgJiB+RURLSUlf SUZSX0RJU1BMQVlfQklUDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICApIHwgRURLSUlf SUZSX0RJU1BMQVlfVUlOVF9ERUNfQklUDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAg ICAgaWYgRmxhZ3NGaWVsZEN0eC5EaXNQbGF5VUludEhleCgpICE9IE5vbmU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIGlmIHNlbGYuQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyID09IEZhbHNl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9IChjdHguTEZsYWdz ICYgfkVGSV9JRlJfRElTUExBWSkgfA0KPiA+IEVGSV9JRlJfRElTUExBWV9VSU5UX0hFWA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgY3R4LkxGbGFncyA9ICgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBjdHgu TEZsYWdzICYgfkVES0lJX0lGUl9ESVNQTEFZX0JJVA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgKSB8IEVES0lJX0lGUl9ESVNQTEFZX1VJTlRfSEVYX0JJVA0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgVmFyVHlwZSA9IHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUNCj4g Pg0KPiA+ICsgICAgICAgIGlmIHNlbGYuQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyID09IEZhbHNl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclN0b3Jl SWQgIT0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IGlmICgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIFZhclN0b3JlVHlwZSA9PQ0KPiA+ IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX0JVRkZFUg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgb3IgVmFyU3RvcmVUeXBlID09DQo+ID4gRUZJX1ZGUl9WQVJT VE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfRUZJDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5m by5WYXJUeXBlICE9IChjdHguTEZsYWdzICYNCj4gPiBFRklfSUZSX05VTUVSSUNfU0laRSk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTGluZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk51bWVyaWMg RmxhZyBpcyBub3Qgc2FtZSB0byBOdW1lcmljIFZhckRhdGEgdHlwZSIsDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIyB1cGRhdGUgZGF0YSB0eXBlIGZvciBuYW1l L3ZhbHVlIHN0b3JlDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLkN1cnJRZXN0 VmFySW5mby5WYXJUeXBlID0gY3R4LkxGbGFncyAmDQo+ID4gRUZJX0lGUl9OVU1FUklDX1NJWkUN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIFNpemUsIF8gPSBnVmZyVmFyRGF0YVR5cGVE Qi5HZXREYXRhVHlwZVNpemVCeURhdGFUeXBlKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuQ3VyclFlc3RW YXJJbmZvLlZhclRvdGFsU2l6ZSA9IFNpemUNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIElz U2V0VHlwZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5DdXJyUWVzdFZhckluZm8u VmFyVHlwZSA9IGN0eC5MRmxhZ3MgJg0KPiBFRklfSUZSX05VTUVSSUNfU0laRQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJTdG9yZUlk ICE9IEVGSV9WQVJTVE9SRV9JRF9JTlZBTElEOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5M RmxhZ3MgJj0gRURLSUlfSUZSX0RJU1BMQVlfQklUDQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4 LkxGbGFncyB8PSBFREtJSV9JRlJfTlVNRVJJQ19TSVpFX0JJVCAmDQo+ID4gc2VsZi5DdXJyUWVz dFZhckluZm8uVmFyVG90YWxTaXplDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBW YXJUeXBlICE9IHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclR5cGU6DQo+ID4NCj4gPiArICAgICAg ICAgICAgY3R4LlVwZGF0ZVZhclR5cGUgPSBUcnVlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICByZXR1cm4gY3R4LkhGbGFncywgY3R4LkxGbGFncw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiBWZnJTeW50YXhQYXJzZXIj dmZyU3RhdGVtZW50U3RyaW5nVHlwZS4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVt ZW50U3RyaW5nVHlwZShzZWxmLCBjdHg6DQo+ID4gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dFN0cmluZ1R5cGVDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJl bihjdHgpDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50UGFzc3dvcmQoKSAh PSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVu dFBhc3N3b3JkKCkuTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBjdHgudmZyU3RhdGVtZW50 U3RyaW5nKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52 ZnJTdGF0ZW1lbnRTdHJpbmcoKS5Ob2RlDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5v ZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFN0cmluZy4NCj4gPg0KPiA+ICsgICAg ZGVmIHZpc2l0VmZyU3RhdGVtZW50U3RyaW5nKHNlbGYsIGN0eDoNCj4gPiBWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50U3RyaW5nQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLklz U3RyaW5nT3AgPSBUcnVlDQo+ID4NCj4gPiArICAgICAgICBTT2JqID0gSWZyU3RyaW5nKCkNCj4g Pg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBTT2JqDQo+ID4NCj4gPiArICAgICAgICBT T2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuQ3Vy cmVudFF1ZXN0aW9uID0gU09iag0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5G TEFHUygpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgSEZsYWdzID0gY3R4LnZmclN0 cmluZ0ZsYWdzRmllbGQoKS5IRmxhZ3MNCj4gPg0KPiA+ICsgICAgICAgICAgICBMRmxhZ3MgPSBj dHgudmZyU3RyaW5nRmxhZ3NGaWVsZCgpLkxGbGFncw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNl bGYuRXJyb3JIYW5kbGVyKFNPYmouU2V0RmxhZ3MoSEZsYWdzLCBMRmxhZ3MpLCBjdHguRi5saW5l KQ0KPiA+DQo+ID4gKw0KPiBTT2JqLlNldEZsYWdzU3RyZWFtKHNlbGYuRXh0cmFjdE9yaWdpbmFs VGV4dChjdHgudmZyU3RyaW5nRmxhZ3NGaWVsZCgpKSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGlmIGN0eC5LZXkoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIEtleSA9 IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LkFzc2lnblF1ZXN0aW9uS2V5KFNPYmosIEtleSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBTT2Jq LlNldEhhc0tleShUcnVlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFN0cmluZ01pblNpemUgPSBz ZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoMSkpDQo+ID4NCj4gPiArICAgICAgICAgICAgU3RyaW5n TWF4U2l6ZSA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigyKSkNCj4gPg0KPiA+ICsgICAgICAg IGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgU3RyaW5nTWluU2l6ZSA9IHNlbGYuVHJhbnNO dW0oY3R4Lk51bWJlcigwKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBTdHJpbmdNYXhTaXplID0g c2VsZi5UcmFuc051bShjdHguTnVtYmVyKDEpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgVmFyQXJyYXlTaXplID0gc2VsZi5HZXRDdXJBcnJheVNpemUoKQ0KPiA+DQo+ID4gKyAgICAg ICAgaWYgU3RyaW5nTWluU2l6ZSA+IDB4RkY6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5F cnJvckhhbmRsZXIoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZS X1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4 Lk1pbi5saW5lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAiU3RyaW5nIE1pblNpemUgdGFr ZXMgb25seSBvbmUgYnl0ZSwgd2hpY2ggY2FuJ3QgYmUgbGFyZ2VyIHRoYW4NCj4gPiAweEZGLiIs DQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgVmFyQXJyYXlT aXplICE9IDAgYW5kIFN0cmluZ01pblNpemUgPiBWYXJBcnJheVNpemU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgY3R4Lk1pbi5saW5lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAiU3Ry aW5nIE1pblNpemUgY2FuJ3QgYmUgbGFyZ2VyIHRoYW4gdGhlIG1heCBudW1iZXIgb2YgZWxlbWVu dHMNCj4gaW4NCj4gPiBzdHJpbmcgYXJyYXkuIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ ID4NCj4gPiArICAgICAgICBTT2JqLlNldE1pblNpemUoU3RyaW5nTWluU2l6ZSkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIFN0cmluZ01heFNpemUgPiAweEZGOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIGN0eC5NYXgubGluZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg IlN0cmluZyBNYXhTaXplIHRha2VzIG9ubHkgb25lIGJ5dGUsIHdoaWNoIGNhbid0IGJlIGxhcmdl ciB0aGFuDQo+ID4gMHhGRi4iLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICkNCj4gPg0KPiA+ICsg ICAgICAgIGVsaWYgVmFyQXJyYXlTaXplICE9IDAgYW5kIFN0cmluZ01heFNpemUgPiBWYXJBcnJh eVNpemU6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFN RVRFUiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4Lk1heC5saW5lLA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAiU3RyaW5nIE1heFNpemUgY2FuJ3QgYmUgbGFyZ2VyIHRoYW4gdGhl IG1heCBudW1iZXIgb2YgZWxlbWVudHMNCj4gaW4NCj4gPiBzdHJpbmcgYXJyYXkuIiwNCj4gPg0K PiA+ICsgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICBlbGlmIFN0cmluZ01heFNpemUg PCBTdHJpbmdNaW5TaXplOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVy KA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5W QUxJRF9QQVJBTUVURVIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5NYXgubGluZSwN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgIlN0cmluZyBNYXhTaXplIGNhbid0IGJlIGxlc3Mg dGhhbiBTdHJpbmcgTWluU2l6ZS4iLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICkNCj4gPg0KPiA+ ICsgICAgICAgIFNPYmouU2V0TWF4U2l6ZShTdHJpbmdNYXhTaXplKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuQnVmZmVyID0gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0o U09iai5HZXRJbmZvKCkpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkluc2VydEVuZE5vZGUoY3R4 Lk5vZGUsIGN0eC5zdG9wLmxpbmUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxm LklzU3RyaW5nT3AgPSBGYWxzZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJu IGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVl IHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdHJpbmdGbGFnc0ZpZWxkLg0KPiA+DQo+ ID4gKyAgICBkZWYgdmlzaXRWZnJTdHJpbmdGbGFnc0ZpZWxkKHNlbGYsIGN0eDoNCj4gPiBWZnJT eW50YXhQYXJzZXIuVmZyU3RyaW5nRmxhZ3NGaWVsZENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIGZvciBGbGFnc0Zp ZWxkQ3R4IGluIGN0eC5zdHJpbmdGbGFnc0ZpZWxkKCk6DQo+ID4NCj4gPiArICAgICAgICAgICAg Y3R4LkhGbGFncyB8PSBGbGFnc0ZpZWxkQ3R4LkhGbGFnDQo+ID4NCj4gPiArICAgICAgICAgICAg Y3R4LkxGbGFncyB8PSBGbGFnc0ZpZWxkQ3R4LkxGbGFnDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICByZXR1cm4gY3R4LkhGbGFncywgY3R4LkxGbGFncw0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIj c3RyaW5nRmxhZ3NGaWVsZC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0U3RyaW5nRmxhZ3NGaWVs ZChzZWxmLCBjdHg6DQo+IFZmclN5bnRheFBhcnNlci5TdHJpbmdGbGFnc0ZpZWxkQ29udGV4dCk6 DQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgaWYgY3R4Lk51bWJlcigpICE9IE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgaWYgc2VsZi5UcmFuc051bShjdHguTnVtYmVyKCkpICE9IDA6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9VTlNVUFBPUlRFRCwNCj4gPiBjdHguc3RhcnQubGluZSkNCj4gPg0KPiA+ICsgICAgICAgIGVs aWYgY3R4LnF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAg ICAgICAgICAgY3R4LkhGbGFnID0gY3R4LnF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZCgpLlFIRmxh Zw0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTEZs YWcgPSAweDAxDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4LkhGbGFn LCBjdHguTEZsYWcNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRy ZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFBhc3N3b3JkLg0KPiA+ DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRQYXNzd29yZChzZWxmLCBjdHg6DQo+ID4g VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFBhc3N3b3JkQ29udGV4dCk6DQo+ID4NCj4gPiAr ICAgICAgICBQT2JqID0gSWZyUGFzc3dvcmQoKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUu RGF0YSA9IFBPYmoNCj4gPg0KPiA+ICsgICAgICAgIFBPYmouU2V0TGluZU5vKGN0eC5zdGFydC5s aW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5DdXJyZW50UXVlc3Rpb24gPSBQT2JqDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LktleSgpICE9IE5vbmU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgS2V5ID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDApKQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuQXNzaWduUXVlc3Rpb25LZXkoUE9iaiwgS2V5KQ0KPiA+DQo+ID4g KyAgICAgICAgICAgIFBhc3NXb3JkTWluU2l6ZSA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigx KSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBQYXNzd29yZE1heFNpemUgPSBzZWxmLlRyYW5zTnVt KGN0eC5OdW1iZXIoMikpDQo+ID4NCj4gPiArICAgICAgICAgICAgUE9iai5TZXRIYXNLZXkoVHJ1 ZSkNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgUGFzc1dv cmRNaW5TaXplID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDApKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIFBhc3N3b3JkTWF4U2l6ZSA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5GTEFHUygpICE9IE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgSEZsYWdzID0gY3R4LnZmclBhc3N3b3JkRmxhZ3NGaWVsZCgpLkhG bGFncw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKFBPYmouU2V0Rmxh Z3MoSEZsYWdzKSwgY3R4LkYubGluZSkNCj4gPg0KPiA+ICsNCj4gPiBQT2JqLlNldEZsYWdzU3Ry ZWFtKHNlbGYuRXh0cmFjdE9yaWdpbmFsVGV4dChjdHgudmZyUGFzc3dvcmRGbGFnc0ZpZWxkKCkp KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgVmFyQXJyYXlTaXplID0gc2VsZi5HZXRD dXJBcnJheVNpemUoKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgUGFzc1dvcmRNaW5TaXplID4gMHhG RjoNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVS LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjdHguTWluLmxpbmUsDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICJTdHJpbmcgTWluU2l6ZSB0YWtlcyBvbmx5IG9uZSBieXRlLCB3aGljaCBj YW4ndCBiZSBsYXJnZXIgdGhhbg0KPiA+IDB4RkYuIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAp DQo+ID4NCj4gPiArICAgICAgICBpZiBWYXJBcnJheVNpemUgIT0gMCBhbmQgUGFzc1dvcmRNaW5T aXplID4gVmFyQXJyYXlTaXplOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5k bGVyKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f SU5WQUxJRF9QQVJBTUVURVIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5NaW4ubGlu ZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgIlN0cmluZyBNaW5TaXplIGNhbid0IGJlIGxh cmdlciB0aGFuIHRoZSBtYXggbnVtYmVyIG9mIGVsZW1lbnRzDQo+IGluDQo+ID4gc3RyaW5nIGFy cmF5LiIsDQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgUE9iai5T ZXRNaW5TaXplKFBhc3NXb3JkTWluU2l6ZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGlmIFBhc3N3b3JkTWF4U2l6ZSA+IDB4RkY6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5F cnJvckhhbmRsZXIoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZS X1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4 Lk1heC5saW5lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAiU3RyaW5nIE1heFNpemUgdGFr ZXMgb25seSBvbmUgYnl0ZSwgd2hpY2ggY2FuJ3QgYmUgbGFyZ2VyIHRoYW4NCj4gPiAweEZGLiIs DQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBWYXJBcnJh eVNpemUgIT0gMCBhbmQgUGFzc3dvcmRNYXhTaXplID4gVmFyQXJyYXlTaXplOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIGN0eC5NYXgubGluZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg IlN0cmluZyBNYXhTaXplIGNhbid0IGJlIGxhcmdlciB0aGFuIHRoZSBtYXggbnVtYmVyIG9mIGVs ZW1lbnRzDQo+IGluDQo+ID4gc3RyaW5nIGFycmF5LiIsDQo+ID4NCj4gPiArICAgICAgICAgICAg KQ0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBQYXNzd29yZE1heFNpemUgPCBQYXNzV29yZE1pblNp emU6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRF UiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4Lk1heC5saW5lLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAiU3RyaW5nIE1heFNpemUgY2FuJ3QgYmUgbGVzcyB0aGFuIFN0cmluZyBN aW5TaXplLiIsDQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgUE9i ai5TZXRNYXhTaXplKFBhc3N3b3JkTWF4U2l6ZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGN0eC5Ob2RlLkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKFBPYmouR2V0SW5m bygpKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5JbnNlcnRFbmROb2RlKGN0eC5Ob2RlLCBjdHgu c3RvcC5saW5lKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2Rl DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2Vk IGJ5IFZmclN5bnRheFBhcnNlciN2ZnJQYXNzd29yZEZsYWdzRmllbGQuDQo+ID4NCj4gPiArICAg IGRlZiB2aXNpdFZmclBhc3N3b3JkRmxhZ3NGaWVsZChzZWxmLCBjdHg6DQo+ID4gVmZyU3ludGF4 UGFyc2VyLlZmclBhc3N3b3JkRmxhZ3NGaWVsZENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIGZvciBGbGFnc0ZpZWxk Q3R4IGluIGN0eC5wYXNzd29yZEZsYWdzRmllbGQoKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBj dHguSEZsYWdzIHw9IEZsYWdzRmllbGRDdHguSEZsYWcNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIHJldHVybiBjdHguSEZsYWdzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlz aXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNwYXNzd29yZEZsYWdz RmllbGQuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFBhc3N3b3JkRmxhZ3NGaWVsZChzZWxmLCBj dHg6DQo+ID4gVmZyU3ludGF4UGFyc2VyLlBhc3N3b3JkRmxhZ3NGaWVsZENvbnRleHQpOg0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIGlmIGN0eC5OdW1iZXIoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigpKSAhPSAwOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5T VVBQT1JURUQsDQo+ID4gY3R4LnN0YXJ0LmxpbmUpDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5IRmxhZyA9IGN0eC5xdWVzdGlvbmhlYWRlckZsYWdz RmllbGQoKS5RSEZsYWcNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHgu SEZsYWcNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJv ZHVjZWQgYnkNCj4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudE9yZGVyZWRMaXN0Lg0KPiA+ DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRPcmRlcmVkTGlzdChzZWxmLCBjdHg6DQo+ ID4gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudE9yZGVyZWRMaXN0Q29udGV4dCk6DQo+ID4N Cj4gPiArICAgICAgICBPTE9iaiA9IElmck9yZGVyZWRMaXN0KCkNCj4gPg0KPiA+ICsgICAgICAg IGN0eC5Ob2RlLkRhdGEgPSBPTE9iag0KPiA+DQo+ID4gKyAgICAgICAgT0xPYmouU2V0TGluZU5v KGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5DdXJyZW50UXVlc3Rpb24g PSBPTE9iag0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5Jc09yZGVyZWRMaXN0ID0gVHJ1ZQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIFZhckFycmF5U2l6ZSA9IHNlbGYuR2V0Q3VyQXJyYXlT aXplKCkNCj4gPg0KPiA+ICsgICAgICAgIGlmIFZhckFycmF5U2l6ZSA+IDB4RkY6DQo+ID4NCj4g PiArICAgICAgICAgICAgT0xPYmouU2V0TWF4Q29udGFpbmVycygweEZGKQ0KPiA+DQo+ID4gKyAg ICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBPTE9iai5TZXRNYXhDb250YWluZXJz KFZhckFycmF5U2l6ZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5NYXhD b250YWluZXJzKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBNYXhDb250YWluZXJz ID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYg TWF4Q29udGFpbmVycyA+IDB4RkY6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuRXJy b3JIYW5kbGVyKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5W RlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgY3R4Lk0ubGluZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICJPcmRlcmVkTGlz dCBNYXhDb250YWluZXJzIHRha2VzIG9ubHkgb25lIGJ5dGUsIHdoaWNoIGNhbid0IGJlDQo+ID4g bGFyZ2VyIHRoYW4gMHhGRi4iLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICApDQo+ID4NCj4g PiArICAgICAgICAgICAgZWxpZiBWYXJBcnJheVNpemUgIT0gMCBhbmQgTWF4Q29udGFpbmVycyA+ IFZhckFycmF5U2l6ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRs ZXIoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBjdHgu TS5saW5lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIk9yZGVyZWRMaXN0IE1heENv bnRhaW5lcnMgY2FuJ3QgYmUgbGFyZ2VyIHRoYW4gdGhlIG1heA0KPiBudW1iZXINCj4gPiBvZiBl bGVtZW50cyBpbiBhcnJheS4iLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICApDQo+ID4NCj4g PiArICAgICAgICAgICAgT0xPYmouU2V0TWF4Q29udGFpbmVycyhNYXhDb250YWluZXJzKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIE9MT2JqLlNldEhhc01heENvbnRhaW5lcnMoVHJ1ZSkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5GTEFHUygpICE9IE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgSEZsYWdzID0gY3R4LnZmck9yZGVyZWRMaXN0RmxhZ3MoKS5IRmxhZ3MN Cj4gPg0KPiA+ICsgICAgICAgICAgICBMRmxhZ3MgPSBjdHgudmZyT3JkZXJlZExpc3RGbGFncygp LkxGbGFncw0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKE9MT2JqLlNl dEZsYWdzKEhGbGFncywgTEZsYWdzKSwgY3R4LkYubGluZSkNCj4gPg0KPiA+ICsNCj4gPiBPTE9i ai5TZXRGbGFnc1N0cmVhbShzZWxmLkV4dHJhY3RPcmlnaW5hbFRleHQoY3R4LnZmck9yZGVyZWRM aXN0RmxhZ3MoKSkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5CdWZm ZXIgPSBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShPTE9iai5HZXRJbmZvKCkpDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLkluc2VydEVuZE5vZGUoY3R4Lk5vZGUsIGN0eC5zdG9wLmxpbmUpDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLklzT3JkZXJlZExpc3QgPSBGYWxzZQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJPcmRl cmVkTGlzdEZsYWdzLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJPcmRlcmVkTGlzdEZsYWdz KHNlbGYsIGN0eDoNCj4gPiBWZnJTeW50YXhQYXJzZXIuVmZyT3JkZXJlZExpc3RGbGFnc0NvbnRl eHQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGZvciBGbGFnc0ZpZWxkQ3R4IGluIGN0eC5vcmRlcmVkbGlz dEZsYWdzRmllbGQoKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguSEZsYWdzIHw9IEZsYWdz RmllbGRDdHguSEZsYWcNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTEZsYWdzIHw9IEZsYWdz RmllbGRDdHguTEZsYWcNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHgu SEZsYWdzLCBjdHguTEZsYWdzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNvcmRlcmVkbGlzdEZsYWdzRmll bGQuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdE9yZGVyZWRsaXN0RmxhZ3NGaWVsZChzZWxmLCBj dHg6DQo+ID4gVmZyU3ludGF4UGFyc2VyLk9yZGVyZWRsaXN0RmxhZ3NGaWVsZENvbnRleHQpOg0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGlmIGN0eC5OdW1iZXIoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigpKSAhPSAwOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f VU5TVVBQT1JURUQsDQo+ID4gY3R4LnN0YXJ0LmxpbmUpDQo+ID4NCj4gPiArICAgICAgICBlbGlm IGN0eC5xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGN0eC5IRmxhZyA9IGN0eC5xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoKS5RSEZsYWcN Cj4gPg0KPiA+ICsgICAgICAgIGVsaWYgY3R4LlVuaVF1ZUZsYWcoKSAhPSBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGN0eC5MRmxhZyA9IDB4MDENCj4gPg0KPiA+ICsgICAgICAgIGVsaWYg Y3R4Lk5vRW1wdHlGbGFnKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTEZs YWcgPSAweDAyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4LkhGbGFn LCBjdHguTEZsYWcNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRy ZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudERhdGUuDQo+ID4NCj4g PiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudERhdGUoc2VsZiwgY3R4Og0KPiA+IFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnREYXRlQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBET2Jq ID0gSWZyRGF0ZSgpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gRE9iag0KPiA+ DQo+ID4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+ID4NCj4gPiArICAgICAgICBE T2JqLlNldExpbmVObyhMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5WYWx1ZSA9IGN0eC5W YWwNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgudmZyUXVlc3Rpb25IZWFkZXIoKSAhPSBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUgPT0g RUZJX0lGUl9UWVBFX09USEVSOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBzZWxmLkN1cnJR ZXN0VmFySW5mby5WYXJUeXBlID09IEVGSV9JRlJfVFlQRV9EQVRFDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgY3R4LkZMQUdTKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgRE9iai5TZXRGbGFnc1N0cmVhbShzZWxmLkV4dHJhY3RPcmlnaW5hbFRleHQo Y3R4LnZmckRhdGVGbGFncygpKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5FcnJv ckhhbmRsZXIoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBET2JqLlNldEZsYWdzKEVG SV9JRlJfUVVFU1RJT05fRkxBR19ERUZBVUxULA0KPiA+IGN0eC52ZnJEYXRlRmxhZ3MoKS5MRmxh Z3MpLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgY3R4LkYxLmxpbmUsDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgWWVhciA9IHNlbGYuVHJhbnNJZChjdHguU3RyaW5nSWRl bnRpZmllcigwKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBZZWFyICs9ICIuIg0KPiA+DQo+ID4g KyAgICAgICAgICAgIFllYXIgKz0gc2VsZi5UcmFuc0lkKGN0eC5TdHJpbmdJZGVudGlmaWVyKDEp KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIERPYmouWWVhciA9IFllYXINCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBNb250aCA9IHNlbGYuVHJhbnNJZChjdHgu U3RyaW5nSWRlbnRpZmllcigyKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBNb250aCArPSAiLiIN Cj4gPg0KPiA+ICsgICAgICAgICAgICBNb250aCArPSBzZWxmLlRyYW5zSWQoY3R4LlN0cmluZ0lk ZW50aWZpZXIoMykpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgRE9iai5Nb250 aCA9IE1vbnRoDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgRGF5ID0gc2VsZi5U cmFuc0lkKGN0eC5TdHJpbmdJZGVudGlmaWVyKDQpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIERh eSArPSAiLiINCj4gPg0KPiA+ICsgICAgICAgICAgICBEYXkgKz0gc2VsZi5UcmFuc0lkKGN0eC5T dHJpbmdJZGVudGlmaWVyKDUpKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIERP YmouRGF5ID0gRGF5DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgY3R4LkZM QUdTKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgRE9iai5TZXRGbGFnc1N0 cmVhbShzZWxmLkV4dHJhY3RPcmlnaW5hbFRleHQoY3R4LnZmckRhdGVGbGFncygpKSkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBET2JqLlNldEZsYWdzKEVGSV9JRlJfUVVFU1RJT05fRkxBR19ERUZBVUxU LA0KPiA+IGN0eC52ZnJEYXRlRmxhZ3MoKS5MRmxhZ3MpLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgY3R4LkYyLmxpbmUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBRSWQsIF8gPSBzZWxmLlZmclF1ZXN0aW9uREIu UmVnaXN0ZXJPbGREYXRlUXVlc3Rpb24oDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIFllYXIs IE1vbnRoLCBEYXksIEVGSV9RVUVTVElPTl9JRF9JTlZBTElELCBnRm9ybVBrZw0KPiA+DQo+ID4g KyAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICAgICBET2JqLlNldFF1ZXN0aW9uSWQo UUlkKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIERPYmouU2V0RmxhZ3MoRUZJX0lGUl9RVUVTVElP Tl9GTEFHX0RFRkFVTFQsDQo+ID4gUUZfREFURV9TVE9SQUdFX1RJTUUpDQo+ID4NCj4gPiArICAg ICAgICAgICAgRE9iai5TZXRQcm9tcHQoc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDApKSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBET2JqLlNldEhlbHAoc2VsZi5UcmFuc051bShjdHguTnVtYmVy KDEpKSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBEZWZhdWx0T2JqID0gSWZy RGVmYXVsdCgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgRUZJX0lGUl9UWVBFX0RBVEUsIFtj dHguVmFsXSwNCj4gRUZJX0hJSV9ERUZBVUxUX0NMQVNTX1NUQU5EQVJELA0KPiA+IEVGSV9JRlJf VFlQRV9EQVRFDQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IERlZmF1bHRPYmouU2V0TGluZU5vKExpbmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgRGVmYXVs dE5vZGUgPSBJZnJUcmVlTm9kZSgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgRUZJX0lGUl9E RUZBVUxUX09QLCBEZWZhdWx0T2JqLA0KPiA+IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKERlZmF1 bHRPYmouR2V0SW5mbygpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBjdHguTm9kZS5pbnNlcnRDaGlsZChEZWZhdWx0Tm9kZSkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFt KERPYmouR2V0SW5mbygpKQ0KPiA+DQo+ID4gKyAgICAgICAgZm9yIEN0eCBpbiBjdHgudmZyU3Rh dGVtZW50SW5jb25zaXN0ZW50SWYoKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkluc2Vy dENoaWxkKGN0eC5Ob2RlLCBDdHgpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkluc2VydEVuZE5v ZGUoY3R4Lk5vZGUsIGN0eC5zdG9wLmxpbmUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBh cnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gVmZyU3ludGF4UGFyc2VyI21pbk1heERhdGVTdGVwRGVm YXVsdC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0TWluTWF4RGF0ZVN0ZXBEZWZhdWx0KHNlbGYs IGN0eDoNCj4gPiBWZnJTeW50YXhQYXJzZXIuTWluTWF4RGF0ZVN0ZXBEZWZhdWx0Q29udGV4dCk6 DQo+ID4NCj4gPiArICAgICAgICBNaW5pbXVtID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDAp KQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YS5NaW4gPSBNaW5pbXVtDQo+ID4NCj4g PiArICAgICAgICBNYXhpbXVtID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDEpKQ0KPiA+DQo+ ID4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YS5NYXggPSBNYXhpbXVtDQo+ID4NCj4gPiArICAgICAg ICBpZiBjdHguU3RlcCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUu RGF0YS5TdGVwID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDIpKQ0KPiA+DQo+ID4gKyAgICAg ICAgaWYgY3R4LkRlZmF1bHQoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGN0 eC5LZXlWYWx1ZSA9PSAwOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjdHguRGF0ZS5ZZWFy ID0gc2VsZi5UcmFuc051bShjdHguTi50ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBj dHguTm9kZS5EYXRhLkRfWWVhciA9IGN0eC5EYXRlLlllYXINCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgaWYgY3R4LkRhdGUuWWVhciA8IE1pbmltdW0gb3IgY3R4LkRhdGUuWWVhciA+IE1heGlt dW06DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f SU5WQUxJRF9QQVJBTUVURVIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgY3R4 Lk4ubGluZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAiWWVhciBkZWZhdWx0 IHZhbHVlIG11c3QgYmUgYmV0d2VlbiBNaW4geWVhciBhbmQgTWF4DQo+IHllYXIuIiwNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBjdHgu S2V5VmFsdWUgPT0gMToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4LkRhdGUuTW9udGgg PSBzZWxmLlRyYW5zTnVtKGN0eC5OLnRleHQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0 eC5Ob2RlLkRhdGEuRF9Nb250aCA9IGN0eC5EYXRlLk1vbnRoDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIGlmIGN0eC5EYXRlLk1vbnRoIDwgMSBvciBjdHguRGF0ZS5Nb250aCA+IDEyOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURf UEFSQU1FVEVSLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5ELmxpbmUs DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIk1vbnRoIGRlZmF1bHQgdmFsdWUg bXVzdCBiZSBiZXR3ZWVuIE1pbiAxIGFuZCBNYXggMTIuIiwNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBjdHguS2V5VmFsdWUgPT0gMjoN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4LkRhdGUuRGF5ID0gc2VsZi5UcmFuc051bShj dHguTi50ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjdHguTm9kZS5EYXRhLkRfRGF5 ID0gY3R4LkRhdGUuRGF5DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIGN0eC5EYXRlLkRh eSA8IDEgb3IgY3R4LkRhdGUuRGF5ID4gMzE6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAg ICBzZWxmLkVycm9ySGFuZGxlcigNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgY3R4LkQubGluZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAiRGF5IGRlZmF1bHQgdmFsdWUgbXVzdCBiZSBiZXR3ZWVuIE1pbiAxIGFuZCBN YXggMzEuIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZy RGF0ZUZsYWdzLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJEYXRlRmxhZ3Moc2VsZiwgY3R4 OiBWZnJTeW50YXhQYXJzZXIuVmZyRGF0ZUZsYWdzQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAg ICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg Zm9yIEZsYWdzRmllbGRDdHggaW4gY3R4LmRhdGVGbGFnc0ZpZWxkKCk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgY3R4LkxGbGFncyB8PSBGbGFnc0ZpZWxkQ3R4LkxGbGFnDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4LkxGbGFncw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjZGF0 ZUZsYWdzRmllbGQuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdERhdGVGbGFnc0ZpZWxkKHNlbGYs IGN0eDogVmZyU3ludGF4UGFyc2VyLkRhdGVGbGFnc0ZpZWxkQ29udGV4dCk6DQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgaWYgY3R4Lk51bWJlcigpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4 LkxGbGFnID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKCkpDQo+ID4NCj4gPiArICAgICAgICBp ZiBjdHguWWVhclN1cHBwcmVzc0ZsYWcoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGN0eC5MRmxhZyA9IDB4MDENCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5Nb250aFN1cHByZXNz RmxhZygpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgwMg0K PiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LkRheVN1cHByZXNzRmxhZygpICE9IE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgwNA0KPiA+DQo+ID4gKyAgICAgICAgaWYg Y3R4LlN0b3JhZ2VOb3JtYWxGbGFnKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBj dHguTEZsYWcgPSAweDAwDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguU3RvcmFnZVRpbWVGbGFn KCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTEZsYWcgPSAweDAxMA0KPiA+ DQo+ID4gKyAgICAgICAgaWYgY3R4LlN0b3JhZ2VXYWtlVXBGbGFnKCkgIT0gTm9uZToNCj4gPg0K PiA+ICsgICAgICAgICAgICBjdHguTEZsYWcgPSAweDIwDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICAgICByZXR1cm4gY3R4LkxGbGFnDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlz aXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRU aW1lLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRUaW1lKHNlbGYsIGN0eDoN Cj4gPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VGltZUNvbnRleHQpOg0KPiA+DQo+ID4g KyAgICAgICAgVE9iaiA9IElmclRpbWUoKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuRGF0 YSA9IFRPYmoNCj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+DQo+ ID4gKyAgICAgICAgVE9iai5TZXRMaW5lTm8oTGluZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYu VmFsdWUgPSBjdHguVmFsDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4 KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnZmclF1ZXN0aW9uSGVhZGVy KCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5m by5WYXJUeXBlID09IEVGSV9JRlJfVFlQRV9PVEhFUjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfVElNRQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGN0eC5GTEFHUygpICE9IE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIFRPYmouU2V0RmxhZ3NTdHJlYW0oc2VsZi5FeHRyYWN0 T3JpZ2luYWxUZXh0KGN0eC52ZnJUaW1lRmxhZ3MoKSkpDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgVE9i ai5TZXRGbGFncyhFRklfSUZSX1FVRVNUSU9OX0ZMQUdfREVGQVVMVCwNCj4gPiBjdHgudmZyVGlt ZUZsYWdzKCkuTEZsYWdzKSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGN0eC5GMS5s aW5lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICBlbHNl Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIEhvdXIgPSBzZWxmLlRyYW5zSWQoY3R4LlN0cmluZ0lk ZW50aWZpZXIoMCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgSG91ciArPSAiLiINCj4gPg0KPiA+ ICsgICAgICAgICAgICBIb3VyICs9IHNlbGYuVHJhbnNJZChjdHguU3RyaW5nSWRlbnRpZmllcigx KSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBUT2JqLlNldEhvdXIoSG91cikN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBNaW51dGUgPSBzZWxmLlRyYW5zSWQo Y3R4LlN0cmluZ0lkZW50aWZpZXIoMikpDQo+ID4NCj4gPiArICAgICAgICAgICAgTWludXRlICs9 ICIuIg0KPiA+DQo+ID4gKyAgICAgICAgICAgIE1pbnV0ZSArPSBzZWxmLlRyYW5zSWQoY3R4LlN0 cmluZ0lkZW50aWZpZXIoMykpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgVE9i ai5TZXRNaW51dGUoTWludXRlKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIFNl Y29uZCA9IHNlbGYuVHJhbnNJZChjdHguU3RyaW5nSWRlbnRpZmllcig0KSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBTZWNvbmQgKz0gIi4iDQo+ID4NCj4gPiArICAgICAgICAgICAgU2Vjb25kICs9 IHNlbGYuVHJhbnNJZChjdHguU3RyaW5nSWRlbnRpZmllcig1KSkNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgICAgICBUT2JqLlNldFNlY29uZChTZWNvbmQpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgY3R4LkZMQUdTKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgVE9iai5TZXRGbGFnc1N0cmVhbShzZWxmLkV4dHJhY3RPcmlnaW5hbFRleHQo Y3R4LnZmclRpbWVGbGFncygpKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5FcnJv ckhhbmRsZXIoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBUT2JqLlNldEZsYWdzKEVG SV9JRlJfUVVFU1RJT05fRkxBR19ERUZBVUxULA0KPiA+IGN0eC52ZnJUaW1lRmxhZ3MoKS5MRmxh Z3MpLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgY3R4LkYyLmxpbmUsDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBR SWQsIF8gPSBzZWxmLlZmclF1ZXN0aW9uREIuUmVnaXN0ZXJPbGRUaW1lUXVlc3Rpb24oDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIEhvdXIsIE1pbnV0ZSwgU2Vjb25kLCBFRklfUVVFU1RJT05f SURfSU5WQUxJRCwgZ0Zvcm1Qa2cNCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ID4NCj4gPiAr ICAgICAgICAgICAgVE9iai5TZXRRdWVzdGlvbklkKFFJZCkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBUT2JqLlNldEZsYWdzKEVGSV9JRlJfUVVFU1RJT05fRkxBR19ERUZBVUxULA0KPiA+IFFGX1RJ TUVfU1RPUkFHRV9USU1FKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFRPYmouU2V0UHJvbXB0KHNl bGYuVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkpDQo+ID4NCj4gPiArICAgICAgICAgICAgVE9iai5T ZXRIZWxwKHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICAgICAgRGVmYXVsdE9iaiA9IElmckRlZmF1bHQoDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIEVGSV9JRlJfVFlQRV9USU1FLCBbY3R4LlZhbF0sDQo+IEVGSV9ISUlfREVGQVVM VF9DTEFTU19TVEFOREFSRCwNCj4gPiBFRklfSUZSX1RZUEVfVElNRQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICAgICBEZWZhdWx0T2JqLlNldExpbmVObyhMaW5l KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIERlZmF1bHROb2RlID0gSWZyVHJlZU5vZGUoDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIEVGSV9JRlJfREVGQVVMVF9PUCwgRGVmYXVsdE9iaiwNCj4g PiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShEZWZhdWx0T2JqLkdldEluZm8oKSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUuaW5zZXJ0Q2hp bGQoRGVmYXVsdE5vZGUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5C dWZmZXIgPSBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShUT2JqLkdldEluZm8oKSkNCj4gPg0KPiA+ ICsgICAgICAgIGZvciBDdHggaW4gY3R4LnZmclN0YXRlbWVudEluY29uc2lzdGVudElmKCk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5JbnNlcnRDaGlsZChjdHguTm9kZSwgQ3R4KQ0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5JbnNlcnRFbmROb2RlKGN0eC5Ob2RlLCBjdHguc3RvcC5saW5l KQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNl ciNtaW5NYXhUaW1lU3RlcERlZmF1bHQuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdE1pbk1heFRp bWVTdGVwRGVmYXVsdChzZWxmLCBjdHg6DQo+ID4gVmZyU3ludGF4UGFyc2VyLk1pbk1heFRpbWVT dGVwRGVmYXVsdENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YS5NaW4g PSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoMCkpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9k ZS5EYXRhLk1heCA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkNCj4gPg0KPiA+ICsgICAg ICAgIGlmIGN0eC5TdGVwKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9k ZS5EYXRhLlN0ZXAgPSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoMikpDQo+ID4NCj4gPiArICAg ICAgICBpZiBjdHguRGVmYXVsdCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYg Y3R4LktleVZhbHVlID09IDA6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5UaW1lLkhv dXIgPSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIobGVuKGN0eC5OdW1iZXIoKSkgLQ0KPiAxKSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4Lk5vZGUuRGF0YS5EX0hvdXIgPSBjdHguVGlt ZS5Ib3VyDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGlmIGN0eC5UaW1lLkhvdXIgPiAyMzoN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZB TElEX1BBUkFNRVRFUiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBjdHguTi5s aW5lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICJIb3VyIGRlZmF1bHQgdmFs dWUgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDIzLiIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICApDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgY3R4LktleVZhbHVlID09IDE6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIGN0eC5UaW1lLk1pbnV0ZSA9IHNlbGYuVHJhbnNOdW0oY3R4 Lk51bWJlcihsZW4oY3R4Lk51bWJlcigpKSAtDQo+ID4gMSkpDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIGN0eC5Ob2RlLkRhdGEuRF9NaW51dGUgPSBjdHguVGltZS5NaW51dGUNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgaWYgY3R4LlRpbWUuTWludXRlID4gNTk6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIs DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgY3R4Lk4ubGluZSwNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAiTWludXRlIGRlZmF1bHQgdmFsdWUgbXVzdCBiZSBi ZXR3ZWVuIDAgYW5kIDU5LiIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICApDQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgY3R4LktleVZhbHVlID09IDI6DQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIGN0eC5UaW1lLlNlY29uZCA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcihsZW4o Y3R4Lk51bWJlcigpKSAtDQo+ID4gMSkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5O b2RlLkRhdGEuRF9TZWNvbmQgPSBjdHguVGltZS5TZWNvbmQNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgaWYgY3R4LlRpbWUuU2Vjb25kID4gNTk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgICBzZWxmLkVycm9ySGFuZGxlcigNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgY3R4Lk4ubGluZSwNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAiU2Vjb25kIGRlZmF1bHQgdmFsdWUgbXVzdCBiZSBiZXR3ZWVuIDAgYW5k IDU5LiIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAg ICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclRp bWVGbGFncy4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyVGltZUZsYWdzKHNlbGYsIGN0eDog VmZyU3ludGF4UGFyc2VyLlZmclRpbWVGbGFnc0NvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGZv ciBGbGFnc0ZpZWxkQ3R4IGluIGN0eC50aW1lRmxhZ3NGaWVsZCgpOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGN0eC5MRmxhZ3MgfD0gRmxhZ3NGaWVsZEN0eC5MRmxhZw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5MRmxhZ3MNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3RpbWVG bGFnc0ZpZWxkLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRUaW1lRmxhZ3NGaWVsZChzZWxmLCBj dHg6IFZmclN5bnRheFBhcnNlci5UaW1lRmxhZ3NGaWVsZENvbnRleHQpOg0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGlmIGN0eC5OdW1iZXIoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5M RmxhZyA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYg Y3R4LkhvdXJTdXBwcHJlc3NGbGFnKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBj dHguTEZsYWcgPSAweDAxDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguTWludXRlU3VwcHJlc3NG bGFnKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTEZsYWcgPSAweDAyDQo+ ID4NCj4gPiArICAgICAgICBpZiBjdHguU2Vjb25kU3VwcHJlc3NGbGFnKCkgIT0gTm9uZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBjdHguTEZsYWcgPSAweDA0DQo+ID4NCj4gPiArICAgICAgICBp ZiBjdHguU3RvcmFnZU5vcm1hbEZsYWcoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGN0eC5MRmxhZyA9IDB4MDANCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5TdG9yYWdlVGltZUZs YWcoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5MRmxhZyA9IDB4MTANCj4g Pg0KPiA+ICsgICAgICAgIGlmIGN0eC5TdG9yYWdlV2FrZVVwRmxhZygpICE9IE5vbmU6DQo+ID4N Cj4gPiArICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgyMA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgcmV0dXJuIGN0eC5MRmxhZw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZp c2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVt ZW50Q29uZGl0aW9uYWwuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudENvbmRp dGlvbmFsKHNlbGYsIGN0eDoNCj4gPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50Q29uZGl0 aW9uYWxDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgp DQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50RGlzYWJsZUlmU3RhdCgpICE9 IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50 RGlzYWJsZUlmU3RhdCgpLk5vZGUNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1l bnRTdXBwcmVzc0lmU3RhdCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5v ZGUgPSBjdHgudmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXQoKS5Ob2RlDQo+ID4NCj4gPiArICAg ICAgICBpZiBjdHgudmZyU3RhdGVtZW50R3JheU91dElmU3RhdCgpICE9IE5vbmU6DQo+ID4NCj4g PiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50R3JheU91dElmU3RhdCgp Lk5vZGUNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJ ZlN0YXQoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZm clN0YXRlbWVudEluY29uc2lzdGVudElmU3RhdCgpLk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZp c2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiA+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0 ZW1lbnRDb25kaXRpb25hbE5ldy4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50 Q29uZGl0aW9uYWxOZXcoDQo+ID4NCj4gPiArICAgICAgICBzZWxmLCBjdHg6IFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRDb25kaXRpb25hbE5ld0NvbnRleHQNCj4gPg0KPiA+ICsgICAgKToN Cj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiA+ IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdC4NCj4gPg0KPiA+ICsg ICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXQoDQo+ID4NCj4gPiArICAgICAg ICBzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdENv bnRleHQNCj4gPg0KPiA+ICsgICAgKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGls ZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRT dXBwcmVzc0lmU3RhdE5ldygpLk5vZGUNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguTm9k ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNl ZCBieQ0KPiA+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0Lg0KPiA+ DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0KHNlbGYsIGN0eDoN Cj4gPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50R3JheU91dElmU3RhdENvbnRleHQpOg0K PiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAg ICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXROZXcoKS5Ob2RlDQo+ ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0 YXRlbWVudFN0YXRMaXN0Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRTdGF0 TGlzdChzZWxmLCBjdHg6DQo+ID4gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRMaXN0 Q29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+ DQo+ID4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFN0YXQoKSAhPSBOb25lOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFN0YXQoKS5Ob2RlDQo+ ID4NCj4gPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50UXVlc3Rpb25zKCkgIT0gTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRRdWVzdGlv bnMoKS5Ob2RlDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50Q29uZGl0aW9u YWwoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0 YXRlbWVudENvbmRpdGlvbmFsKCkuTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnZmclN0 YXRlbWVudExhYmVsKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9 IGN0eC52ZnJTdGF0ZW1lbnRMYWJlbCgpLk5vZGUNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52 ZnJTdGF0ZW1lbnRFeHRlbnNpb24oKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0 eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudEV4dGVuc2lvbigpLk5vZGUNCj4gPg0KPiA+ICsgICAg ICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRJbnZhbGlkKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRJbnZhbGlkKCkuTm9kZQ0KPiA+DQo+ ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMg VmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0 ZW1lbnRTdGF0TGlzdE9sZC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50U3Rh dExpc3RPbGQoc2VsZiwgY3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdGF0 TGlzdE9sZENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGls ZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVl IHByb2R1Y2VkIGJ5DQo+ID4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudERpc2FibGVJZlN0 YXQuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudERpc2FibGVJZlN0YXQoc2Vs ZiwgY3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0Q29u dGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBESU9iaiA9IElmckRpc2FibGVJZigpDQo+ID4NCj4g PiArICAgICAgICBESU9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+ID4NCj4gPiArICAg ICAgICBjdHguTm9kZS5EYXRhID0gRElPYmoNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkJ1 ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKERJT2JqLkdldEluZm8oKSkNCj4gPg0KPiA+ ICsgICAgICAgIGN0eC5Ob2RlLkNvbmRpdGlvbiA9ICgNCj4gPg0KPiA+ICsgICAgICAgICAgICAi ZGlzYWJsZWlmIiArICIgIiArDQo+ID4gc2VsZi5FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJT dGF0ZW1lbnRFeHByZXNzaW9uKCkpDQo+ID4NCj4gPiArICAgICAgICApDQo+ID4NCj4gPiArICAg ICAgICBjdHguTm9kZS5FeHByZXNzaW9uID0NCj4gPiBzZWxmLkV4dHJhY3RPcmlnaW5hbFRleHQo Y3R4LnZmclN0YXRlbWVudEV4cHJlc3Npb24oKSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlz aXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAgICBmb3IgQ3R4IGluIGN0eC52ZnJTdGF0 ZW1lbnRTdGF0TGlzdCgpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuSW5zZXJ0Q2hpbGQo Y3R4Lk5vZGUsIEN0eCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuSW5zZXJ0RW5kTm9kZShjdHgu Tm9kZSwgY3R4LnN0b3AubGluZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVy biBjdHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJl ZSBwcm9kdWNlZCBieQ0KPiA+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRTdXBwcmVzc0lm U3RhdE5ldy4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0 YXROZXcoDQo+ID4NCj4gPiArICAgICAgICBzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5WZnJT dGF0ZW1lbnRTdXBwcmVzc0lmU3RhdE5ld0NvbnRleHQNCj4gPg0KPiA+ICsgICAgKToNCj4gPg0K PiA+ICsgICAgICAgIFNJT2JqID0gSWZyU3VwcHJlc3NJZigpDQo+ID4NCj4gPiArICAgICAgICBT SU9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9k ZS5EYXRhID0gU0lPYmoNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkJ1ZmZlciA9IGdGb3Jt UGtnLlN0cnVjdFRvU3RyZWFtKFNJT2JqLkdldEluZm8oKSkNCj4gPg0KPiA+ICsgICAgICAgIGN0 eC5Ob2RlLkNvbmRpdGlvbiA9ICgNCj4gPg0KPiA+ICsgICAgICAgICAgICAic3VwcHJlc3NpZiIg KyAiICIgKw0KPiA+IHNlbGYuRXh0cmFjdE9yaWdpbmFsVGV4dChjdHgudmZyU3RhdGVtZW50RXhw cmVzc2lvbigpKQ0KPiA+DQo+ID4gKyAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5v ZGUuRXhwcmVzc2lvbiA9DQo+ID4gc2VsZi5FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0 ZW1lbnRFeHByZXNzaW9uKCkpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4o Y3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgZm9yIEN0eCBpbiBjdHgudmZyU3RhdGVtZW50U3RhdExp c3QoKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkluc2VydENoaWxkKGN0eC5Ob2RlLCBD dHgpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkluc2VydEVuZE5vZGUoY3R4Lk5vZGUsIGN0eC5z dG9wLmxpbmUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQg YnkNCj4gPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5ldy4NCj4g Pg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5ldygNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYsIGN0eDogVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEdyYXlP dXRJZlN0YXROZXdDb250ZXh0DQo+ID4NCj4gPiArICAgICk6DQo+ID4NCj4gPiArICAgICAgICBH T0lPYmogPSBJZnJHcmF5T3V0SWYoKQ0KPiA+DQo+ID4gKyAgICAgICAgR09JT2JqLlNldExpbmVO byhjdHguc3RhcnQubGluZSkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBHT0lP YmoNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRv U3RyZWFtKEdPSU9iai5HZXRJbmZvKCkpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5Db25k aXRpb24gPSAoDQo+ID4NCj4gPiArICAgICAgICAgICAgImdyYXlvdXRpZiIgKyAiICIgKw0KPiA+ IHNlbGYuRXh0cmFjdE9yaWdpbmFsVGV4dChjdHgudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpKQ0K PiA+DQo+ID4gKyAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuRXhwcmVzc2lv biA9DQo+ID4gc2VsZi5FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNz aW9uKCkpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ ID4gKyAgICAgICAgZm9yIEN0eCBpbiBjdHgudmZyU3RhdGVtZW50U3RhdExpc3QoKToNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLkluc2VydENoaWxkKGN0eC5Ob2RlLCBDdHgpDQo+ID4NCj4g PiArICAgICAgICBzZWxmLkluc2VydEVuZE5vZGUoY3R4Lk5vZGUsIGN0eC5zdG9wLmxpbmUpDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gPiBWZnJT eW50YXhQYXJzZXIjdmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0Lg0KPiA+DQo+ID4gKyAg ICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZlN0YXQoDQo+ID4NCj4gPiArICAg ICAgICBzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJ ZlN0YXRDb250ZXh0DQo+ID4NCj4gPiArICAgICk6DQo+ID4NCj4gPiArICAgICAgICBJSU9iaiA9 IElmckluY29uc2lzdGVudElmKCkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVy KFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwNCj4gPiBjdHguc3RhcnQubGlu ZSkNCj4gPg0KPiA+ICsgICAgICAgIElJT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAg ICBJSU9iai5TZXRFcnJvcihzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoKSkpDQo+ID4NCj4gPiAr ICAgICAgICBjdHguTm9kZS5EYXRhID0gSUlPYmoNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2Rl LkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKElJT2JqLkdldEluZm8oKSkNCj4gPg0K PiA+ICsgICAgICAgIGN0eC5Ob2RlLkNvbmRpdGlvbiA9ICgNCj4gPg0KPiA+ICsgICAgICAgICAg ICAiaW5jb25zaXN0ZW50aWYiICsgIiAiICsNCj4gPiBzZWxmLkV4dHJhY3RPcmlnaW5hbFRleHQo Y3R4LnZmclN0YXRlbWVudEV4cHJlc3Npb24oKSkNCj4gPg0KPiA+ICsgICAgICAgICkNCj4gPg0K PiA+ICsgICAgICAgIGN0eC5Ob2RlLkV4cHJlc3Npb24gPQ0KPiA+IHNlbGYuRXh0cmFjdE9yaWdp bmFsVGV4dChjdHgudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpKQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5JbnNlcnRFbmROb2RlKGN0eC5Ob2RlLCBjdHguc3RvcC5saW5lKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJT dGF0ZW1lbnRJbnZhbGlkLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRJbnZh bGlkKHNlbGYsIGN0eDoNCj4gPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW52YWxpZENv bnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2Vk IGJ5DQo+ID4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudEludmFsaWRIaWRkZW4uDQo+ID4N Cj4gPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudEludmFsaWRIaWRkZW4oc2VsZiwgY3R4Og0K PiA+IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbnZhbGlkSGlkZGVuQ29udGV4dCk6DQo+ ID4NCj4gPiArICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gPiBW ZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50SW52YWxpZEludmVudG9yeS4NCj4gPg0KPiA+ICsg ICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50SW52YWxpZEludmVudG9yeSgNCj4gPg0KPiA+ICsgICAg ICAgIHNlbGYsIGN0eDogVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEludmFsaWRJbnZlbnRv cnlDb250ZXh0DQo+ID4NCj4gPiArICAgICk6DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50 SW52YWxpZFNhdmVSZXN0b3JlRGVmYXVsdHMuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmclN0 YXRlbWVudEludmFsaWRTYXZlUmVzdG9yZURlZmF1bHRzKA0KPiA+DQo+ID4gKyAgICAgICAgc2Vs ZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW52YWxpZFNhdmVSZXN0b3Jl RGVmYXVsdHNDb250ZXh0DQo+ID4NCj4gPiArICAgICk6DQo+ID4NCj4gPiArICAgICAgICByZXR1 cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBW aXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVu dExhYmVsLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRMYWJlbChzZWxmLCBj dHg6DQo+ID4gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudExhYmVsQ29udGV4dCk6DQo+ID4N Cj4gPiArICAgICAgICBMT2JqID0gSWZyTGFiZWwoKQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIExPYmouU2V0TGluZU5vKGN0eC5z dGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgTE9iai5TZXROdW1iZXIoc2VsZi5UcmFuc051 bShjdHguTnVtYmVyKCkpKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IExPYmoN Cj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRvU3Ry ZWFtKExPYmouR2V0SW5mbygpKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5 DQo+ID4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWV4LkJPYmpudEJhbm5lci4NCj4gPg0KPiA+ ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50QmFubmVyKHNlbGYsIGN0eDoNCj4gPiBWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50QmFubmVyQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBz ZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgQk9iaiA9IElmckJhbm5l cigpDQo+ID4NCj4gPiArICAgICAgICBCT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCj4g Pg0KPiA+ICsgICAgICAgIEJPYmouU2V0VGl0bGUoc2VsZi5UcmFuc051bShjdHguTnVtYmVyKDAp KSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5MaW5lKCkgIT0gTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBCT2JqLlNldExpbmUoc2VsZi5UcmFuc051bShjdHguTnVt YmVyKDEpKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBjdHguTGVmdCgpICE9IE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5Ob2RlLkRpY3RbImFsaWduIl0gPSBLVigibGVm dCIsIDApDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIEJPYmouU2V0QWxpZ24oMCkNCj4gPg0K PiA+ICsgICAgICAgICAgICBpZiBjdHguQ2VudGVyKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgY3R4Lk5vZGUuRGljdFsiYWxpZ24iXSA9IEtWKCJjZW50ZXIiLCAxKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBCT2JqLlNldEFsaWduKDEpDQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgY3R4LlJpZ2h0KCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg Y3R4Lk5vZGUuRGljdFsiYWxpZ24iXSA9IEtWKCJyaWdodCIsIDIpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIEJPYmouU2V0QWxpZ24oMikNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IGN0eC5Ob2RlLkRhdGEgPSBCT2JqDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5CdWZmZXIg PSBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShCT2JqLkdldEluZm8oKSkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIGlmIGN0eC5UaW1lb3V0KCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBUT2JqID0gSWZyVGltZW91dCgpDQo+ID4NCj4gPiArICAgICAgICAgICAgVE9iai5T ZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgVE9iai5TZXRU aW1lb3V0KHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigyKSkpDQo+ID4NCj4gPiArICAgICAgICAg ICAgTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfR1VJRF9PUCwgVE9iaiwNCj4gPiBnRm9ybVBr Zy5TdHJ1Y3RUb1N0cmVhbShUT2JqLkdldEluZm8oKSkpDQo+ID4NCj4gPiArICAgICAgICAgICAg Y3R4Lk5vZGUuaW5zZXJ0Q2hpbGQoTm9kZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBCT2JqLlNl dEhhc1RpbWVPdXQoVHJ1ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBCT2JqLlNldFRpbWVPdXQo c2VsZi5UcmFuc051bShjdHguTnVtYmVyKDIpKSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBjdHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEg cGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50RXh0ZW5z aW9uLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRFeHRlbnNpb24oc2VsZiwg Y3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHRlbnNpb25Db250ZXh0KToN Cj4gPg0KPiA+ICsgICAgICAgIGN0eC5Jc1N0cnVjdCA9IEZhbHNlDQo+ID4NCj4gPiArICAgICAg ICBpZiBjdHguRGF0YVR5cGUoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGN0 eC5VaW50NjQoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjdHguVHlwZU5h bWUgPSAiVUlOVDY0Ig0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgY3R4LlVpbnQzMigpICE9 IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5UeXBlTmFtZSA9ICJVSU5UMzIi DQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiBjdHguVWludDE2KCkgIT0gTm9uZToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgY3R4LlR5cGVOYW1lID0gIlVJTlQxNiINCj4gPg0KPiA+ICsg ICAgICAgICAgICBlbGlmIGN0eC5VaW50OCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgIGN0eC5UeXBlTmFtZSA9ICJVSU5UOCINCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlm IGN0eC5Cb29sZWFuKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4LlR5 cGVOYW1lID0gIkJPT0xFQU4iDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiBjdHguRUZJX1NU UklOR19JRCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5UeXBlTmFt ZSA9ICJFRklfU1RSSU5HX0lEIg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgY3R4LkVGSV9I SUlfREFURSgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5UeXBlTmFt ZSA9ICJFRklfSElJX0RBVEUiDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5Jc1N0cnVj dCA9IFRydWUNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIGN0eC5FRklfSElJX1RJTUUoKSAh PSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjdHguVHlwZU5hbWUgPSAiRUZJX0hJ SV9USU1FIg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjdHguSXNTdHJ1Y3QgPSBUcnVlDQo+ ID4NCj4gPiArICAgICAgICAgICAgZWxpZiBjdHguRUZJX0hJSV9SRUYoKSAhPSBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBjdHguVHlwZU5hbWUgPSAiRUZJX0hJSV9SRUYiDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIGN0eC5Jc1N0cnVjdCA9IFRydWUNCj4gPg0KPiA+ICsgICAg ICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjdHguVHlwZU5hbWUgPSBz ZWxmLlRyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIoKSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgY3R4LklzU3RydWN0ID0gVHJ1ZQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5BcnJh eU51bSA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IGN0eC5UeXBlU2l6ZSwgUmV0dXJuQ29kZSA9DQo+ID4gZ1ZmclZhckRhdGFUeXBlREIuR2V0RGF0 YVR5cGVTaXplQnlUeXBlTmFtZShjdHguVHlwZU5hbWUpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4LkQubGluZSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICBjdHguU2l6ZSA9IGN0eC5UeXBlU2l6ZSAqIGN0eC5BcnJheU51bSBpZiBjdHguQXJy YXlOdW0gPiAwIGVsc2UNCj4gPiBjdHguVHlwZVNpemUNCj4gPg0KPiA+ICsgICAgICAgICAgICBj dHguQnVmZmVyID0gYnl0ZWFycmF5KGN0eC5TaXplKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBj dHguc3RhcnQubGluZQ0KPiA+DQo+ID4gKyAgICAgICAgR3VpZE9iaiA9IElmckV4dGVuc2lvbkd1 aWQoY3R4LlNpemUsIGN0eC5UeXBlTmFtZSwgY3R4LkFycmF5TnVtKQ0KPiA+DQo+ID4gKyAgICAg ICAgZm9yIEN0eCBpbiBjdHgudmZyRXh0ZW5zaW9uRGF0YSgpOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIEd1aWRPYmouU2V0RmllbGRMaXN0KEN0eC5GTmFtZSwgQ3R4LlRGVmFsdWUpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBHdWlkT2JqLlNldExpbmVObyhMaW5lKQ0KPiA+DQo+ID4g KyAgICAgICAgR3VpZE9iai5TZXRHdWlkKGN0eC5ndWlkRGVmaW5pdGlvbigpLkd1aWQpDQo+ID4N Cj4gPiArICAgICAgICBpZiBjdHguVHlwZU5hbWUgIT0gIiI6DQo+ID4NCj4gPiArICAgICAgICAg ICAgR3VpZE9iai5TZXREYXRhKGN0eC5CdWZmZXIpDQo+ID4NCj4gPiArICAgICAgICBHdWlkT2Jq LlNldFNjb3BlKDEpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gR3VpZE9iag0K PiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGUuQnVmZmVyID0gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJl YW0oR3VpZE9iai5HZXRJbmZvKCkpDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguRGF0YVR5cGUo KSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIEJ1ZmZlciA9IGJ5dGVhcnJheShjdHgu U2l6ZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oQnVmZmVy KSk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIEJ1ZmZlcltpXSA9IGN0eC5CdWZmZXJbaV0N Cj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZS5CdWZmZXIgKz0gQnVmZmVyDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBmb3IgQ3R4IGluIGN0eC52ZnJTdGF0ZW1lbnRFeHRlbnNp b24oKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLkluc2VydENoaWxkKGN0eC5Ob2RlLCBD dHgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxmLkluc2VydEVuZE5vZGUoY3R4 Lk5vZGUsIGN0eC5zdG9wLmxpbmUpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQg YnkgVmZyU3ludGF4UGFyc2VyI3ZmckV4dGVuc2lvbkRhdGEuDQo+ID4NCj4gPiArICAgIGRlZiB2 aXNpdFZmckV4dGVuc2lvbkRhdGEoc2VsZiwgY3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5WZnJF eHRlbnNpb25EYXRhQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBJc0FycmF5ID0gRmFsc2Ug aWYgY3R4LkkgPT0gTm9uZSBlbHNlIFRydWUNCj4gPg0KPiA+ICsgICAgICAgIGlmIElzQXJyYXk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgSW5kZXggPSBzZWxmLlRyYW5zTnVtKGN0eC5JLnRleHQp DQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIEluZGV4ID0g MA0KPiA+DQo+ID4gKyAgICAgICAgSXNTdHJ1Y3QgPSBjdHgucGFyZW50Q3R4LklzU3RydWN0DQo+ ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAg ICAgY3R4LlRGVmFsdWUgPSBzZWxmLlRyYW5zTnVtKGN0eC5OLnRleHQpDQo+ID4NCj4gPiArICAg ICAgICBEYXRhID0gc2VsZi5UcmFuc051bShjdHguTi50ZXh0KQ0KPiA+DQo+ID4gKyAgICAgICAg aWYgSXNBcnJheToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguRk5hbWUgKz0gImRhdGEiICsg IlsiICsgY3R4LkkudGV4dCArICJdIg0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBjdHguRk5hbWUgKz0gImRhdGEiDQo+ID4NCj4gPiArICAgICAgICBjdHgu VEZOYW1lID0gY3R4LnBhcmVudEN0eC5UeXBlTmFtZQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgSXNT dHJ1Y3Q6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LlRGTmFtZSArPSBjdHgucGFyZW50Q3R4 LlR5cGVOYW1lDQo+ID4NCj4gPiArICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGN0 eC5hcnJheU5hbWUoKSkpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjdHguVEZOYW1lICs9 ICIuIg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjdHguVEZOYW1lICs9IGN0eC5hcnJheU5h bWUoaSkuU3ViU3RyWg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjdHguRk5hbWUgKz0gIi4i DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5GTmFtZSArPSBjdHguYXJyYXlOYW1lKGkp LlN1YlN0cloNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIEJ1ZmZlciA9IGN0eC5wYXJl bnRDdHguQnVmZmVyDQo+ID4NCj4gPiArICAgICAgICBGaWVsZE9mZnNldCwgRmllbGRUeXBlLCBG aWVsZFNpemUsIEJpdEZpZWxkLCBfID0NCj4gPiBnVmZyVmFyRGF0YVR5cGVEQi5HZXREYXRhRmll bGRJbmZvKA0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5URk5hbWUNCj4gPg0KPiA+ICsgICAg ICAgICkNCj4gPg0KPiA+ICsgICAgICAgIEJ5dGVPZmZzZXQgPSBjdHgucGFyZW50Q3R4LlR5cGVT aXplICogSW5kZXgNCj4gPg0KPiA+ICsgICAgICAgIGlmIG5vdCBCaXRGaWVsZDoNCj4gPg0KPiA+ ICsgICAgICAgICAgICBPZmZzZXQgPSBCeXRlT2Zmc2V0ICsgRmllbGRPZmZzZXQNCj4gPg0KPiA+ ICsgICAgICAgICAgICBCdWZmZXJbT2Zmc2V0IDogT2Zmc2V0ICsgRmllbGRTaXplXSA9IGN0eC5U RlZhbHVlLnRvX2J5dGVzKEZpZWxkU2l6ZSwNCj4gPiAibGl0dGxlIikNCj4gPg0KPiA+ICsgICAg ICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgTWFzayA9ICgxIDw8IEZpZWxkU2l6ZSkg LSAxDQo+ID4NCj4gPiArICAgICAgICAgICAgT2Zmc2V0ID0gRmllbGRPZmZzZXQgLy8gOA0KPiA+ DQo+ID4gKyAgICAgICAgICAgIFByZUJpdHMgPSBGaWVsZE9mZnNldCAlIDgNCj4gPg0KPiA+ICsg ICAgICAgICAgICBNYXNrIDw8PSBQcmVCaXRzDQo+ID4NCj4gPiArICAgICAgICAgICAgVmFsdWUg PSBpbnQuZnJvbV9ieXRlcygNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgQnVmZmVyW0J5dGVP ZmZzZXQgKyBPZmZzZXQgOiBCeXRlT2Zmc2V0ICsgT2Zmc2V0ICsgRmllbGRTaXplXSwgImxpdHRs ZSINCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAgICAgRGF0YSA8 PD0gUHJlQml0cw0KPiA+DQo+ID4gKyAgICAgICAgICAgIFZhbHVlID0gKFZhbHVlICYgKH5NYXNr KSkgfCBEYXRhDQo+ID4NCj4gPiArICAgICAgICAgICAgQnVmZmVyW0J5dGVPZmZzZXQgKyBPZmZz ZXQgOiBCeXRlT2Zmc2V0ICsgT2Zmc2V0ICsgRmllbGRTaXplXSA9DQo+ID4gVmFsdWUudG9fYnl0 ZXMoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIEZpZWxkU2l6ZSwgImxpdHRsZSINCj4gPg0K PiA+ICsgICAgICAgICAgICApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g QnVmZmVyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRNb2RhbC4NCj4gPg0KPiA+ICsg ICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50TW9kYWwoc2VsZiwgY3R4Og0KPiA+IFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRNb2RhbENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmck1v ZGFsVGFnKCkuTm9kZQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5 bnRheFBhcnNlciN2ZnJNb2RhbFRhZy4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyTW9kYWxU YWcoc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuVmZyTW9kYWxUYWdDb250ZXh0KToNCj4gPg0K PiA+ICsgICAgICAgIE1PYmogPSBJZnJNb2RhbCgpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZp c2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgTU9iai5TZXRMaW5lTm8oY3R4LnN0 YXJ0LmxpbmUpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gTU9iag0KPiA+DQo+ ID4gKyAgICAgICAgY3R4Lk5vZGUuQnVmZmVyID0gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oTU9i ai5HZXRJbmZvKCkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5v ZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIFNhdmVPcEhkckNvbmQoc2VsZiwgT3BI ZHIsIENvbmQsIExpbmVObz0wKToNCj4gPg0KPiA+ICsgICAgICAgIGlmIENvbmQgPT0gVHJ1ZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBzZWxmLklmck9wSGRyW3NlbGYuSWZyT3BIZHJJbmRl eF0gIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5JZnJPcEhkcltzZWxmLklmck9wSGRySW5kZXhdID0gT3BIZHINCj4g Pg0KPiA+ICsgICAgICAgICAgICBzZWxmLklmck9wSGRyTGluZU5vW3NlbGYuSWZyT3BIZHJJbmRl eF0gPSBMaW5lTm8NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgZGVmIEluaXRPcEhkckNvbmQo c2VsZik6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLklmck9wSGRyLmFwcGVuZChOb25lKQ0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi5JZnJPcEhkckxpbmVOby5hcHBlbmQoMCkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgZGVmIFNldFNhdmVkT3BIZHJTY29wZShzZWxmKToNCj4gPg0KPiA+ICsg ICAgICAgIGlmIHNlbGYuSWZyT3BIZHJbc2VsZi5JZnJPcEhkckluZGV4XSAhPSBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIHNlbGYuSWZyT3BIZHJbc2VsZi5JZnJPcEhkckluZGV4XS5TY29w ZSA9IDENCj4gPg0KPiA+ICsgICAgICAgICAgICByZXR1cm4gVHJ1ZQ0KPiA+DQo+ID4gKyAgICAg ICAgcmV0dXJuIEZhbHNlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBDbGVhclNhdmVk T1BIZHIoc2VsZik6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLklmck9wSGRyW3NlbGYuSWZyT3BI ZHJJbmRleF0gPSBOb25lDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJz ZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRFeHByZXNz aW9uLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYs IGN0eDoNCj4gPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQp Og0KPiA+DQo+ID4gKyAgICAgICAgIyBSb290IGV4cHJlc3Npb24gZXh0ZW5zaW9uIGZ1bmN0aW9u IGNhbGxlZCBieSBvdGhlciBmdW5jdGlvbi4gIyMNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5F eHBJbmZvLlJvb3RMZXZlbCA9PSAwOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuSWZyT3BI ZHJJbmRleCArPSAxDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgc2VsZi5JZnJPcEhkckluZGV4 ID49IE1BWF9JRlJfRVhQUkVTU0lPTl9ERVBUSDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg c2VsZi5FcnJvckhhbmRsZXIoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBWZnJSZXR1 cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICBjdHguc3RhcnQubGluZSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICJUaGUgZGVwdGggb2YgZXhwcmVzc2lvbiBleGNlZWRzIHRoZSBtYXggc3VwcG9ydGVkIGxldmVs IDghIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAg IHNlbGYuSW5pdE9wSGRyQ29uZCgpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBzZWxm LnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZm9yIGkg aW4gcmFuZ2UoMCwgbGVuKGN0eC5hbmRUZXJtKCkpKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBj dHguTm9kZXMuZXh0ZW5kKGN0eC5hbmRUZXJtKGkpLk5vZGVzKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGlmIGkgIT0gMDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4LkV4cEluZm8uRXhw T3BDb3VudCArPSAxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIE9PYmogPSBJZnJPcihjdHgu YW5kVGVybShpKS5MaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBOb2RlID0gSWZyVHJl ZU5vZGUoRUZJX0lGUl9PUl9PUCwgT09iaiwNCj4gPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShP T2JqLkdldEluZm8oKSkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5Ob2Rlcy5hcHBl bmQoTm9kZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICMgRXh0ZW5kIE9wQ29kZSBT Y29wZSBvbmx5IGZvciB0aGUgcm9vdCBleHByZXNzaW9uLg0KPiA+DQo+ID4gKyAgICAgICAgaWYg Y3R4LkV4cEluZm8uRXhwT3BDb3VudCA+IDEgYW5kIGN0eC5FeHBJbmZvLlJvb3RMZXZlbCA9PSAw Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIHNlbGYuU2V0U2F2ZWRPcEhkclNjb3BlKCk6DQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIEVPYmogPSBJZnJFbmQoKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBpZiBzZWxmLklmck9wSGRyTGluZU5vW3NlbGYuSWZyT3BIZHJJbmRleF0gIT0g MDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIEVPYmouU2V0TGluZU5vKHNlbGYuSWZy T3BIZHJMaW5lTm9bc2VsZi5JZnJPcEhkckluZGV4XSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIEVPYmouU2V0TGluZU5vKGN0 eC5zdG9wLmxpbmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIE5vZGUgPSBJZnJUcmVlTm9k ZShFRklfSUZSX0VORF9PUCwgRU9iaiwNCj4gPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShFT2Jq LkdldEluZm8oKSkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5Ob2Rlcy5hcHBlbmQo Tm9kZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5FeHBJbmZvLlJvb3RM ZXZlbCA9PSAwOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuQ2xlYXJTYXZlZE9QSGRyKCkN Cj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLklmck9wSGRySW5kZXggPSBzZWxmLklmck9wSGRy SW5kZXggLSAxDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBmb3IgTm9kZSBpbiBjdHgu Tm9kZXM6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgY3R4LlBhcmVudE5vZGUgIT0gTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4LlBhcmVudE5vZGUuaW5zZXJ0Q2hpbGQoTm9k ZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuQ29uc3RhbnRPbmx5SW5FeHBy ZXNzaW9uID0gRmFsc2UNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHgu Tm9kZXMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJv ZHVjZWQgYnkNCj4gPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yi4N Cj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxmLCBj dHg6DQo+ID4gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250ZXh0 KToNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5FeHBJbmZvLlJvb3RMZXZlbCA9IGN0eC5wYXJlbnRD dHguRXhwSW5mby5Sb290TGV2ZWwgKyAxDQo+ID4NCj4gPiArICAgICAgICBjdHguRXhwSW5mby5F eHBPcENvdW50ID0gY3R4LnBhcmVudEN0eC5FeHBJbmZvLkV4cE9wQ291bnQNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oY3R4LmFuZFRlcm0oKSkpOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2Rlcy5leHRlbmQoY3R4LmFuZFRlcm0oaSkuTm9k ZXMpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSAhPSAwOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgT09iaiA9IElmck9yKGN0eC5hbmRUZXJtKGkpLkxpbmUpDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIE5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX09SX09QLCBPT2JqLA0KPiA+IGdG b3JtUGtnLlN0cnVjdFRvU3RyZWFtKE9PYmouR2V0SW5mbygpKSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgY3R4Lk5vZGVzLmFwcGVuZChOb2RlKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgY3R4LlBhcmVudE5vZGVzLmV4dGVuZChjdHguTm9kZXMpICAjIyMjIyMNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5wYXJlbnRDdHguRXhwSW5mby5FeHBPcENvdW50ID0g Y3R4LkV4cEluZm8uRXhwT3BDb3VudA0KPiA+ICMjIyMjIyMjIyMNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgICAgIHJldHVybiBjdHguTm9kZXMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg IyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2FuZFRlcm0u DQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdEFuZFRlcm0oc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJz ZXIuQW5kVGVybUNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkxpbmUgPSBjdHguc3Rh cnQubGluZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0K PiA+ICsgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihjdHguYml0d2lzZW9yVGVybSgpKSk6 DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGVzLmV4dGVuZChjdHguYml0d2lzZW9yVGVy bShpKS5Ob2RlcykNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBpICE9IDA6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBBT2JqID0gSWZyQW5kKGN0eC5iaXR3aXNlb3JUZXJtKGkpLkxpbmUpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIE5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX0FORF9P UCwgQU9iaiwNCj4gPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShBT2JqLkdldEluZm8oKSkpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5Ob2Rlcy5hcHBlbmQoTm9kZSkNCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBjdHguTm9kZXMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBW aXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2JpdHdpc2VvclRl cm0uDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdEJpdHdpc2VvclRlcm0oc2VsZiwgY3R4OiBWZnJT eW50YXhQYXJzZXIuQml0d2lzZW9yVGVybUNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgY3R4 LkxpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxk cmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihjdHguYml0 d2lzZWFuZFRlcm0oKSkpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2Rlcy5leHRlbmQo Y3R4LmJpdHdpc2VhbmRUZXJtKGkpLk5vZGVzKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGkg IT0gMDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCAr PSAxDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIEJXT09iaiA9IElmckJpdFdpc2VPcihjdHgu Yml0d2lzZWFuZFRlcm0oaSkuTGluZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgTm9kZSA9 IElmclRyZWVOb2RlKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgRUZJX0lGUl9CSVRX SVNFX09SX09QLCBCV09PYmosDQo+ID4gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oQldPT2JqLkdl dEluZm8oKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBjdHguTm9kZXMuYXBwZW5kKE5vZGUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICByZXR1cm4gY3R4Lk5vZGVzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQg YSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNiaXR3aXNlYW5kVGVybS4N Cj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0Qml0d2lzZWFuZFRlcm0oc2VsZiwgY3R4Og0KPiA+IFZm clN5bnRheFBhcnNlci5CaXR3aXNlYW5kVGVybUNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAg Y3R4LkxpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihjdHgu ZXF1YWxUZXJtKCkpKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZXMuZXh0ZW5kKGN0 eC5lcXVhbFRlcm0oaSkuTm9kZXMpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYgaSAhPSAwOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgQldBT2JqID0gSWZyQml0V2lzZUFuZChjdHguZXF1YWxU ZXJtKGkpLkxpbmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIE5vZGUgPSBJZnJUcmVlTm9k ZSgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfQklUV0lTRV9BTkRfT1As IEJXQU9iaiwNCj4gPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShCV0FPYmouR2V0SW5mbygpKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0 eC5Ob2Rlcy5hcHBlbmQoTm9kZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVy biBjdHguTm9kZXMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRy ZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2VxdWFsVGVybS4NCj4gPg0KPiA+ICsgICAg ZGVmIHZpc2l0RXF1YWxUZXJtKHNlbGYsIGN0eDogVmZyU3ludGF4UGFyc2VyLkVxdWFsVGVybUNv bnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkxpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAg IGN0eC5Ob2Rlcy5leHRlbmQoY3R4LmNvbXBhcmVUZXJtKCkuTm9kZXMpDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBmb3IgQ2hpbGRDdHggaW4gY3R4LmVxdWFsVGVybVN1cHBsZW1lbnRh cnkoKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDEN Cj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZXMuZXh0ZW5kKENoaWxkQ3R4Lk5vZGVzKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2Rlcw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50 YXhQYXJzZXIjZXF1YWxUZXJtRXF1YWxSdWxlLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRFcXVh bFRlcm1FcXVhbFJ1bGUoc2VsZiwgY3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5FcXVhbFRlcm1F cXVhbFJ1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihj dHgpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZXMuZXh0ZW5kKGN0eC5jb21wYXJlVGVybSgp Lk5vZGVzKQ0KPiA+DQo+ID4gKyAgICAgICAgRU9iaiA9IElmckVxdWFsKGN0eC5zdGFydC5saW5l KQ0KPiA+DQo+ID4gKyAgICAgICAgTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfRVFVQUxfT1As IEVPYmosDQo+ID4gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oRU9iai5HZXRJbmZvKCkpKQ0KPiA+ DQo+ID4gKyAgICAgICAgY3R4Lk5vZGVzLmFwcGVuZChOb2RlKQ0KPiA+DQo+ID4gKyAgICAgICAg cmV0dXJuIGN0eC5Ob2Rlcw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFy c2UgdHJlZSBwcm9kdWNlZCBieQ0KPiBWZnJTeW50YXhQYXJzZXIjZXF1YWxUZXJtTm90RXF1YWxS dWxlLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRFcXVhbFRlcm1Ob3RFcXVhbFJ1bGUoc2VsZiwg Y3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5FcXVhbFRlcm1Ob3RFcXVhbFJ1bGVDb250ZXh0KToN Cj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAg ICAgICBjdHguTm9kZXMuZXh0ZW5kKGN0eC5jb21wYXJlVGVybSgpLk5vZGVzKQ0KPiA+DQo+ID4g KyAgICAgICAgTkVPYmogPSBJZnJOb3RFcXVhbChjdHguc3RhcnQubGluZSkNCj4gPg0KPiA+ICsg ICAgICAgIE5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX05PVF9FUVVBTF9PUCwgTkVPYmosDQo+ ID4gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oTkVPYmouR2V0SW5mbygpKSkNCj4gPg0KPiA+ICsg ICAgICAgIGN0eC5Ob2Rlcy5hcHBlbmQoTm9kZSkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBj dHguTm9kZXMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUg cHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2NvbXBhcmVUZXJtLg0KPiA+DQo+ID4gKyAgICBk ZWYgdmlzaXRDb21wYXJlVGVybShzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5Db21wYXJlVGVy bUNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4g Pg0KPiA+ICsgICAgICAgIGN0eC5Ob2Rlcy5leHRlbmQoY3R4LnNoaWZ0VGVybSgpLk5vZGVzKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZm9yIENoaWxkQ3R4IGluIGN0eC5jb21wYXJl VGVybVN1cHBsZW1lbnRhcnkoKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguRXhwSW5mby5F eHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZXMuZXh0ZW5kKENo aWxkQ3R4Lk5vZGVzKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5O b2Rlcw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9k dWNlZCBieSBWZnJTeW50YXhQYXJzZXIjY29tcGFyZVRlcm1MZXNzUnVsZS4NCj4gPg0KPiA+ICsg ICAgZGVmIHZpc2l0Q29tcGFyZVRlcm1MZXNzUnVsZShzZWxmLCBjdHg6DQo+ID4gVmZyU3ludGF4 UGFyc2VyLkNvbXBhcmVUZXJtTGVzc1J1bGVDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZXMuZXh0ZW5k KGN0eC5zaGlmdFRlcm0oKS5Ob2RlcykNCj4gPg0KPiA+ICsgICAgICAgIExUT2JqID0gSWZyTGVz c1RoYW4oY3R4LnN0YXJ0LmxpbmUpDQo+ID4NCj4gPiArICAgICAgICBOb2RlID0gSWZyVHJlZU5v ZGUoRUZJX0lGUl9MRVNTX1RIQU5fT1AsIExUT2JqLA0KPiA+IGdGb3JtUGtnLlN0cnVjdFRvU3Ry ZWFtKExUT2JqLkdldEluZm8oKSkpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZXMuYXBwZW5k KE5vZGUpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGVzDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+ID4gVmZyU3lu dGF4UGFyc2VyI2NvbXBhcmVUZXJtTGVzc0VxdWFsUnVsZS4NCj4gPg0KPiA+ICsgICAgZGVmIHZp c2l0Q29tcGFyZVRlcm1MZXNzRXF1YWxSdWxlKHNlbGYsIGN0eDoNCj4gPiBWZnJTeW50YXhQYXJz ZXIuQ29tcGFyZVRlcm1MZXNzRXF1YWxSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBz ZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGVzLmV4dGVu ZChjdHguc2hpZnRUZXJtKCkuTm9kZXMpDQo+ID4NCj4gPiArICAgICAgICBMRU9iaiA9IElmckxl c3NFcXVhbChjdHguc3RhcnQubGluZSkNCj4gPg0KPiA+ICsgICAgICAgIE5vZGUgPSBJZnJUcmVl Tm9kZShFRklfSUZSX0xFU1NfRVFVQUxfT1AsIExFT2JqLA0KPiA+IGdGb3JtUGtnLlN0cnVjdFRv U3RyZWFtKExFT2JqLkdldEluZm8oKSkpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZXMuYXBw ZW5kKE5vZGUpDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGVzDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+ID4gVmZy U3ludGF4UGFyc2VyI2NvbXBhcmVUZXJtR3JlYXRlclJ1bGUuDQo+ID4NCj4gPiArICAgIGRlZiB2 aXNpdENvbXBhcmVUZXJtR3JlYXRlclJ1bGUoc2VsZiwgY3R4Og0KPiA+IFZmclN5bnRheFBhcnNl ci5Db21wYXJlVGVybUdyZWF0ZXJSdWxlQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxm LnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGVzLmV4dGVuZChj dHguc2hpZnRUZXJtKCkuTm9kZXMpDQo+ID4NCj4gPiArICAgICAgICBHVE9iaiA9IElmckdyZWF0 ZXJUaGFuKGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgTm9kZSA9IElmclRyZWVO b2RlKEVGSV9JRlJfR1JFQVRFUl9USEFOX09QLCBHVE9iaiwNCj4gPiBnRm9ybVBrZy5TdHJ1Y3RU b1N0cmVhbShHVE9iai5HZXRJbmZvKCkpKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGVzLmFw cGVuZChOb2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2Rlcw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiA+IFZm clN5bnRheFBhcnNlciNjb21wYXJlVGVybUdyZWF0ZXJFcXVhbFJ1bGUuDQo+ID4NCj4gPiArICAg IGRlZiB2aXNpdENvbXBhcmVUZXJtR3JlYXRlckVxdWFsUnVsZSgNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYsIGN0eDogVmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJtR3JlYXRlckVxdWFsUnVsZUNv bnRleHQNCj4gPg0KPiA+ICsgICAgKToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGls ZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZXMuZXh0ZW5kKGN0eC5zaGlmdFRl cm0oKS5Ob2RlcykNCj4gPg0KPiA+ICsgICAgICAgIEdFT2JqID0gSWZyR3JlYXRlckVxdWFsKGN0 eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgTm9kZSA9IElmclRyZWVOb2RlKA0KPiA+ DQo+ID4gKyAgICAgICAgICAgIEVGSV9JRlJfR1JFQVRFUl9FUVVBTF9PUCwgR0VPYmosDQo+ID4g Z0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oR0VPYmouR2V0SW5mbygpKQ0KPiA+DQo+ID4gKyAgICAg ICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGVzLmFwcGVuZChOb2RlKQ0KPiA+DQo+ID4g KyAgICAgICAgcmV0dXJuIGN0eC5Ob2Rlcw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZp c2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjc2hpZnRUZXJtLg0K PiA+DQo+ID4gKyAgICBkZWYgdmlzaXRTaGlmdFRlcm0oc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJz ZXIuU2hpZnRUZXJtQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRy ZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGVzLmV4dGVuZChjdHguYWRkTWludXNU ZXJtKCkuTm9kZXMpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBmb3IgQ2hpbGRDdHgg aW4gY3R4LnNoaWZ0VGVybVN1cHBsZW1lbnRhcnkoKToNCj4gPg0KPiA+ICsgICAgICAgICAgICBj dHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9k ZXMuZXh0ZW5kKENoaWxkQ3R4Lk5vZGVzKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg cmV0dXJuIGN0eC5Ob2Rlcw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFy c2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjc2hpZnRUZXJtTGVmdC4NCj4gPg0K PiA+ICsgICAgZGVmIHZpc2l0U2hpZnRUZXJtTGVmdChzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNl ci5TaGlmdFRlcm1MZWZ0Q29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hp bGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGVzLmV4dGVuZChjdHguYWRkTWlu dXNUZXJtKCkuTm9kZXMpDQo+ID4NCj4gPiArICAgICAgICBTTE9iaiA9IElmclNoaWZ0TGVmdChj dHguc3RhcnQubGluZSkNCj4gPg0KPiA+ICsgICAgICAgIE5vZGUgPSBJZnJUcmVlTm9kZShFRklf SUZSX1NISUZUX0xFRlRfT1AsIFNMT2JqLA0KPiA+IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKFNM T2JqLkdldEluZm8oKSkpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZXMuYXBwZW5kKE5vZGUp DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGVzDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNz aGlmdFRlcm1SaWdodC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0U2hpZnRUZXJtUmlnaHQoc2Vs ZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuU2hpZnRUZXJtUmlnaHRDb250ZXh0KToNCj4gPg0KPiA+ ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAgICBjdHgu Tm9kZXMuZXh0ZW5kKGN0eC5hZGRNaW51c1Rlcm0oKS5Ob2RlcykNCj4gPg0KPiA+ICsgICAgICAg IFNST2JqID0gSWZyU2hpZnRSaWdodChjdHguc3RhcnQubGluZSkNCj4gPg0KPiA+ICsgICAgICAg IE5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX1NISUZUX1JJR0hUX09QLCBTUk9iaiwNCj4gPiBn Rm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShTUk9iai5HZXRJbmZvKCkpKQ0KPiA+DQo+ID4gKyAgICAg ICAgY3R4Lk5vZGVzLmFwcGVuZChOb2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5O b2Rlcw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9k dWNlZCBieSBWZnJTeW50YXhQYXJzZXIjYWRkTWludXNUZXJtLg0KPiA+DQo+ID4gKyAgICBkZWYg dmlzaXRBZGRNaW51c1Rlcm0oc2VsZiwgY3R4Og0KPiBWZnJTeW50YXhQYXJzZXIuQWRkTWludXNU ZXJtQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0K PiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGVzLmV4dGVuZChjdHgubXVsdGRpdm1vZFRlcm0oKS5O b2RlcykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGZvciBDaGlsZEN0eCBpbiBjdHgu YWRkTWludXNUZXJtU3VwcGxlbWVudGFyeSgpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5F eHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2Rlcy5l eHRlbmQoQ2hpbGRDdHguTm9kZXMpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1 cm4gY3R4Lk5vZGVzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNhZGRNaW51c1Rlcm1wQWRkLg0KPiA+DQo+ ID4gKyAgICBkZWYgdmlzaXRBZGRNaW51c1Rlcm1wQWRkKHNlbGYsIGN0eDoNCj4gPiBWZnJTeW50 YXhQYXJzZXIuQWRkTWludXNUZXJtcEFkZENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2Rlcy5leHRlbmQo Y3R4Lm11bHRkaXZtb2RUZXJtKCkuTm9kZXMpDQo+ID4NCj4gPiArICAgICAgICBBT2JqID0gSWZy QWRkKGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgTm9kZSA9IElmclRyZWVOb2Rl KEVGSV9JRlJfQUREX09QLCBBT2JqLA0KPiA+IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKEFPYmou R2V0SW5mbygpKSkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2Rlcy5hcHBlbmQoTm9kZSkNCj4g Pg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguTm9kZXMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gVmZyU3ludGF4UGFyc2VyI2Fk ZE1pbnVzVGVybVN1YnRyYWN0Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRBZGRNaW51c1Rlcm1T dWJ0cmFjdChzZWxmLCBjdHg6DQo+ID4gVmZyU3ludGF4UGFyc2VyLkFkZE1pbnVzVGVybVN1YnRy YWN0Q29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0K PiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGVzLmV4dGVuZChjdHgubXVsdGRpdm1vZFRlcm0oKS5O b2RlcykNCj4gPg0KPiA+ICsgICAgICAgIFNPYmogPSBJZnJTdWJ0cmFjdChjdHguc3RhcnQubGlu ZSkNCj4gPg0KPiA+ICsgICAgICAgIE5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX1NVQlRSQUNU X09QLCBTT2JqLA0KPiA+IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKFNPYmouR2V0SW5mbygpKSkN Cj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2Rlcy5hcHBlbmQoTm9kZSkNCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBjdHguTm9kZXMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI211bHRkaXZtb2RUZXJtLg0K PiA+DQo+ID4gKyAgICBkZWYgdmlzaXRNdWx0ZGl2bW9kVGVybShzZWxmLCBjdHg6DQo+ID4gVmZy U3ludGF4UGFyc2VyLk11bHRkaXZtb2RUZXJtQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBz ZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGVzLmV4dGVu ZChjdHguY2FzdFRlcm0oKS5Ob2RlcykNCj4gPg0KPiA+ICsgICAgICAgIGZvciBDaGlsZEN0eCBp biBjdHgubXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50YXJ5KCk6DQo+ID4NCj4gPiArICAgICAgICAg ICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4 Lk5vZGVzLmV4dGVuZChDaGlsZEN0eC5Ob2RlcykNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBjdHguTm9kZXMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI211bHRkaXZtb2RUZXJtTXVs Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRNdWx0ZGl2bW9kVGVybU11bChzZWxmLCBjdHg6DQo+ ID4gVmZyU3ludGF4UGFyc2VyLk11bHRkaXZtb2RUZXJtTXVsQ29udGV4dCk6DQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5v ZGVzLmV4dGVuZChjdHguY2FzdFRlcm0oKS5Ob2RlcykNCj4gPg0KPiA+ICsgICAgICAgIE1PYmog PSBJZnJNdWx0aXBseShjdHguc3RhcnQubGluZSkNCj4gPg0KPiA+ICsgICAgICAgIE5vZGUgPSBJ ZnJUcmVlTm9kZShFRklfSUZSX01VTFRJUExZX09QLCBNT2JqLA0KPiA+IGdGb3JtUGtnLlN0cnVj dFRvU3RyZWFtKE1PYmouR2V0SW5mbygpKSkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2Rlcy5h cHBlbmQoTm9kZSkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguTm9kZXMNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3lu dGF4UGFyc2VyI211bHRkaXZtb2RUZXJtRGl2Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRNdWx0 ZGl2bW9kVGVybURpdihzZWxmLCBjdHg6DQo+ID4gVmZyU3ludGF4UGFyc2VyLk11bHRkaXZtb2RU ZXJtRGl2Q29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4 KQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGVzLmV4dGVuZChjdHguY2FzdFRlcm0oKS5Ob2Rl cykNCj4gPg0KPiA+ICsgICAgICAgIERPYmogPSBJZnJEaXZpZGUoY3R4LnN0YXJ0LmxpbmUpDQo+ ID4NCj4gPiArICAgICAgICBOb2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9ESVZJREVfT1AsIERP YmosDQo+ID4gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oRE9iai5HZXRJbmZvKCkpKQ0KPiA+DQo+ ID4gKyAgICAgICAgY3R4Lk5vZGVzLmFwcGVuZChOb2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0 dXJuIGN0eC5Ob2Rlcw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2Ug dHJlZSBwcm9kdWNlZCBieQ0KPiBWZnJTeW50YXhQYXJzZXIjbXVsdGRpdm1vZFRlcm1Sb3VuZC4N Cj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0TXVsdGRpdm1vZFRlcm1Nb2R1bG8oc2VsZiwgY3R4Og0K PiA+IFZmclN5bnRheFBhcnNlci5NdWx0ZGl2bW9kVGVybU1vZHVsb0NvbnRleHQpOg0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIGN0 eC5Ob2Rlcy5leHRlbmQoY3R4LmNhc3RUZXJtKCkuTm9kZXMpDQo+ID4NCj4gPiArICAgICAgICBN T2JqID0gSWZyTW9kdWxvKGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgTm9kZSA9 IElmclRyZWVOb2RlKEVGSV9JRlJfTU9EVUxPX09QLCBNT2JqLA0KPiA+IGdGb3JtUGtnLlN0cnVj dFRvU3RyZWFtKE1PYmouR2V0SW5mbygpKSkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2Rlcy5h cHBlbmQoTm9kZSkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguTm9kZXMNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3lu dGF4UGFyc2VyI2Nhc3RUZXJtLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRDYXN0VGVybShzZWxm LCBjdHg6IFZmclN5bnRheFBhcnNlci5DYXN0VGVybUNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAg ICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIENhc3RUeXBlID0g MHhGRg0KPiA+DQo+ID4gKyAgICAgICAgZm9yIENoaWxkQ3R4IGluIGN0eC5jYXN0VGVybVN1Yigp Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIENhc3RUeXBlID0gQ2hpbGRDdHguQ2FzdFR5cGUNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2Rlcy5leHRlbmQoY3R4LmF0b21UZXJt KCkuTm9kZXMpDQo+ID4NCj4gPiArICAgICAgICBpZiBDYXN0VHlwZSA9PSAwOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIFRCT2JqID0gSWZyVG9Cb29sZWFuKGN0eC5zdGFydC5saW5lKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIE5vZGUgPSBJZnJUcmVlTm9kZSgNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgRUZJX0lGUl9UT19CT09MRUFOX09QLCBUQk9iaiwNCj4gPiBnRm9ybVBrZy5TdHJ1Y3RU b1N0cmVhbShUQk9iai5HZXRJbmZvKCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIGN0eC5Ob2Rlcy5hcHBlbmQoTm9kZSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGVsaWYgQ2FzdFR5cGUgPT0gMToNCj4gPg0KPiA+ICsgICAgICAgICAgICBUVU9iaiA9 IElmclRvVWludChjdHguc3RhcnQubGluZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBOb2RlID0g SWZyVHJlZU5vZGUoRUZJX0lGUl9UT19VSU5UX09QLCBUVU9iaiwNCj4gPiBnRm9ybVBrZy5TdHJ1 Y3RUb1N0cmVhbShUVU9iai5HZXRJbmZvKCkpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5O b2Rlcy5hcHBlbmQoTm9kZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguRXhwSW5mby5FeHBP cENvdW50ICs9IDENCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguTm9kZXMNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3lu dGF4UGFyc2VyI2Nhc3RUZXJtU3ViLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRDYXN0VGVybVN1 YihzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5DYXN0VGVybVN1YkNvbnRleHQpOg0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIGlm IGN0eC5Cb29sZWFuKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguQ2FzdFR5 cGUgPSAwDQo+ID4NCj4gPiArICAgICAgICBlbGlmIGN0eC5VaW50MzIoKSAhPSBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGN0eC5DYXN0VHlwZSA9IDENCj4gPg0KPiA+ICsgICAgICAgIGVs aWYgY3R4LlVpbnQxNigpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LkNhc3RU eXBlID0gMQ0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBjdHguVWludDgoKSAhPSBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGN0eC5DYXN0VHlwZSA9IDENCj4gPg0KPiA+ICsgICAgICAgIHJl dHVybiBjdHguQ2FzdFR5cGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBh cnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2F0b21UZXJtLg0KPiA+DQo+ID4g KyAgICBkZWYgdmlzaXRBdG9tVGVybShzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5BdG9tVGVy bUNvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4g Pg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJFeHByZXNzaW9uQ2F0ZW5hdGUoKSAhPSBOb25lOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlcyA9IGN0eC52ZnJFeHByZXNzaW9uQ2F0ZW5h dGUoKS5Ob2Rlcw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnZmckV4cHJlc3Npb25NYXRjaCgp ICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGVzID0gY3R4LnZmckV4cHJl c3Npb25NYXRjaCgpLk5vZGVzDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgudmZyRXhwcmVzc2lv bk1hdGNoMigpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGVzID0gY3R4 LnZmckV4cHJlc3Npb25NYXRjaDIoKS5Ob2Rlcw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnZm ckV4cHJlc3Npb25QYXJlbigpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5v ZGVzID0gY3R4LnZmckV4cHJlc3Npb25QYXJlbigpLk5vZGVzDQo+ID4NCj4gPiArICAgICAgICBp ZiBjdHgudmZyRXhwcmVzc2lvbkJ1aWxkSW5GdW5jdGlvbigpICE9IE5vbmU6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgY3R4Lk5vZGVzLmFwcGVuZChjdHgudmZyRXhwcmVzc2lvbkJ1aWxkSW5GdW5j dGlvbigpLk5vZGUpDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgudmZyRXhwcmVzc2lvbkNvbnN0 YW50KCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZXMuYXBwZW5kKGN0 eC52ZnJFeHByZXNzaW9uQ29uc3RhbnQoKS5Ob2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4 LnZmckV4cHJlc3Npb25VbmFyeU9wKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBj dHguTm9kZXMgPSBjdHgudmZyRXhwcmVzc2lvblVuYXJ5T3AoKS5Ob2Rlcw0KPiA+DQo+ID4gKyAg ICAgICAgaWYgY3R4LnZmckV4cHJlc3Npb25UZXJuYXJ5T3AoKSAhPSBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGN0eC5Ob2RlcyA9IGN0eC52ZnJFeHByZXNzaW9uVGVybmFyeU9wKCkuTm9k ZXMNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC52ZnJFeHByZXNzaW9uTWFwKCkgIT0gTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZXMgPSBjdHgudmZyRXhwcmVzc2lvbk1hcCgp Lk5vZGVzDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguYXRvbVRlcm0oKSAhPSBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlcyA9IGN0eC5hdG9tVGVybSgpLk5vZGVzDQo+ID4N Cj4gPiArICAgICAgICAgICAgTk9iaiA9IElmck5vdChjdHguc3RhcnQubGluZSkNCj4gPg0KPiA+ ICsgICAgICAgICAgICBOb2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9OT1RfT1AsIE5PYmosDQo+ ID4gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oTk9iai5HZXRJbmZvKCkpKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGN0eC5Ob2Rlcy5hcHBlbmQoTm9kZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBj dHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHgu Tm9kZXMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJv ZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckV4cHJlc3Npb25DYXRlbmF0ZS4NCj4gPg0KPiA+ ICsgICAgZGVmIHZpc2l0VmZyRXhwcmVzc2lvbkNhdGVuYXRlKHNlbGYsIGN0eDoNCj4gPiBWZnJT eW50YXhQYXJzZXIuVmZyRXhwcmVzc2lvbkNhdGVuYXRlQ29udGV4dCk6DQo+ID4NCj4gPiArICAg ICAgICBjdHguRXhwSW5mby5Sb290TGV2ZWwgKz0gMQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBj dHguc3RhcnQubGluZQ0KPiA+DQo+ID4gKyAgICAgICAgQ09iaiA9IElmckNhdGVuYXRlKExpbmUp DQo+ID4NCj4gPiArICAgICAgICBOb2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9DQVRFTkFURV9P UCwgQ09iaiwNCj4gPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShDT2JqLkdldEluZm8oKSkpDQo+ ID4NCj4gPiArICAgICAgICBjdHguTm9kZXMuYXBwZW5kKE5vZGUpDQo+ID4NCj4gPiArICAgICAg ICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBjdHguTm9kZXMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckV4cHJlc3Npb25NYXRj aC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VmZyRXhwcmVzc2lvbk1hdGNoKHNlbGYsIGN0eDoN Cj4gPiBWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVzc2lvbk1hdGNoQ29udGV4dCk6DQo+ID4NCj4g PiArICAgICAgICBjdHguRXhwSW5mby5Sb290TGV2ZWwgKz0gMQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIExp bmUgPSBjdHguc3RhcnQubGluZQ0KPiA+DQo+ID4gKyAgICAgICAgTU9iaiA9IElmck1hdGNoKExp bmUpDQo+ID4NCj4gPiArICAgICAgICBOb2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9NQVRDSF9P UCwgTU9iaiwNCj4gPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShNT2JqLkdldEluZm8oKSkpDQo+ ID4NCj4gPiArICAgICAgICBjdHguTm9kZXMuYXBwZW5kKE5vZGUpDQo+ID4NCj4gPiArICAgICAg ICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBjdHguTm9kZXMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckV4cHJlc3Npb25NYXRj aDIuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmckV4cHJlc3Npb25NYXRjaDIoc2VsZiwgY3R4 Og0KPiA+IFZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uTWF0Y2gyQ29udGV4dCk6DQo+ID4N Cj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+ID4NCj4gPiArICAgICAgICBHdWlk ID0gY3R4Lmd1aWREZWZpbml0aW9uKCkuR3VpZA0KPiA+DQo+ID4gKyAgICAgICAgTTJPYmogPSBJ ZnJNYXRjaDIoTGluZSwgR3VpZCkNCj4gPg0KPiA+ICsgICAgICAgIE5vZGUgPSBJZnJUcmVlTm9k ZShFRklfSUZSX01BVENIMl9PUCwgTTJPYmosDQo+ID4gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0o TTJPYmouR2V0SW5mbygpKSkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2Rlcy5hcHBlbmQoTm9k ZSkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2Rlcw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJz ZXIjdmZyRXhwcmVzc2lvblBhcmVuLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJFeHByZXNz aW9uUGFyZW4oc2VsZiwgY3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uUGFy ZW5Db250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGVzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+ID4gVmZyU3ludGF4UGFyc2Vy I3ZmckV4cHJlc3Npb25CdWlsZEluRnVuY3Rpb24uDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZm ckV4cHJlc3Npb25CdWlsZEluRnVuY3Rpb24oDQo+ID4NCj4gPiArICAgICAgICBzZWxmLCBjdHg6 IFZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uQnVpbGRJbkZ1bmN0aW9uQ29udGV4dA0KPiA+ DQo+ID4gKyAgICApOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkN Cj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5kdXBFeHAoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LmR1cEV4cCgpLk5vZGUNCj4gPg0KPiA+ICsgICAgICAg IGlmIGN0eC52YXJlcXZhbEV4cCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4 Lk5vZGUgPSBjdHgudmFyZXF2YWxFeHAoKS5Ob2RlDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgu aWRlcXZhbEV4cCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBj dHguaWRlcXZhbEV4cCgpLk5vZGUNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5pZGVxaWRFeHAo KSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LmlkZXFpZEV4 cCgpLk5vZGUNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5pZGVxdmFsbGlzdEV4cCgpICE9IE5v bmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHguaWRlcXZhbGxpc3RFeHAo KS5Ob2RlDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgucXVlc3Rpb25yZWYxRXhwKCkgIT0gTm9u ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC5xdWVzdGlvbnJlZjFFeHAo KS5Ob2RlDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgucnVsZXJlZkV4cCgpICE9IE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgucnVsZXJlZkV4cCgpLk5vZGUNCj4g Pg0KPiA+ICsgICAgICAgIGlmIGN0eC5zdHJpbmdyZWYxRXhwKCkgIT0gTm9uZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC5zdHJpbmdyZWYxRXhwKCkuTm9kZQ0KPiA+DQo+ ID4gKyAgICAgICAgaWYgY3R4LnB1c2h0aGlzRXhwKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBjdHguTm9kZSA9IGN0eC5wdXNodGhpc0V4cCgpLk5vZGUNCj4gPg0KPiA+ICsgICAg ICAgIGlmIGN0eC5zZWN1cml0eUV4cCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg Y3R4Lk5vZGUgPSBjdHguc2VjdXJpdHlFeHAoKS5Ob2RlDQo+ID4NCj4gPiArICAgICAgICBpZiBj dHguZ2V0RXhwKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0 eC5nZXRFeHAoKS5Ob2RlDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZy U3ludGF4UGFyc2VyI2R1cEV4cC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0RHVwRXhwKHNlbGYs IGN0eDogVmZyU3ludGF4UGFyc2VyLkR1cEV4cENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHguc3Rh cnQubGluZQ0KPiA+DQo+ID4gKyAgICAgICAgRE9iaiA9IElmckR1cChMaW5lKQ0KPiA+DQo+ID4g KyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IERPYmoNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2Rl LkJ1ZmZlciA9IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKERPYmouR2V0SW5mbygpKQ0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZi5TYXZlT3BIZHJDb25kKERPYmouR2V0SGVhZGVyKCksIChjdHguRXhw SW5mby5FeHBPcENvdW50ID09DQo+IDApLA0KPiA+IExpbmUpICAjDQo+ID4NCj4gPiArICAgICAg ICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIHJldHVybiBjdHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEg cGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmFyZXF2YWxFeHAuDQo+ID4N Cj4gPiArICAgIGRlZiB2aXNpdFZhcmVxdmFsRXhwKHNlbGYsIGN0eDogVmZyU3ludGF4UGFyc2Vy LlZhcmVxdmFsRXhwQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0 LmxpbmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICAgICBSZXR1cm5Db2RlID0gVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX1VOU1VQUE9SVEVEDQo+ID4NCj4gPiArICAgICAgICBWYXJJZFN0ciA9ICJ2YXIiDQo+ID4N Cj4gPiArICAgICAgICBWYXJJZFN0ciArPSBjdHguVk4udGV4dA0KPiA+DQo+ID4gKyAgICAgICAg VmFyU3RvcmVJZCwgUmV0dXJuQ29kZSA9IGdWZnJEYXRhU3RvcmFnZS5HZXRWYXJTdG9yZUlkKFZh cklkU3RyKQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgUmV0dXJuQ29kZSA9PSBWZnJSZXR1cm5Db2Rl LlZGUl9SRVRVUk5fVU5ERUZJTkVEOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHBhc3MgICMjIyMj IyMjIw0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxm LkVycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguVk4ubGluZSkNCj4gPg0KPiA+ICsgICAgICAg IFFJZCwgTWFzaywgXyA9IHNlbGYuVmZyUXVlc3Rpb25EQi5HZXRRdWVzdGlvbklkKE5vbmUsIFZh cklkU3RyKQ0KPiA+DQo+ID4gKyAgICAgICAgQ29uc3RWYWwgPSBzZWxmLlRyYW5zTnVtKGN0eC5O dW1iZXIoMSkpDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguRXF1YWwoKSAhPSBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIE1hc2sgPT0gMDoNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgRUlWT2JqID0gSWZyRXFJZFZhbChMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBz ZWxmLlNhdmVPcEhkckNvbmQoRUlWT2JqLkdldEhlYWRlcigpLA0KPiAoY3R4LkV4cEluZm8uRXhw T3BDb3VudA0KPiA+ID09IDApLCBMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBFSVZP YmouU2V0UXVlc3Rpb25JZChRSWQsIFZhcklkU3RyLCBjdHguVk4ubGluZSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgRUlWT2JqLlNldFZhbHVlKENvbnN0VmFsKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBjdHguTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfRVFfSURfVkFMX09QLCBF SVZPYmopDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQg Kz0gMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIGN0eC5Ob2RlID0gc2VsZi5JZEVxVmFsRG9TcGVjaWFsKA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgY3R4LkV4cEluZm8sIExpbmUsIFFJZCwgVmFySWRTdHIsIE1hc2ssIENvbnN0 VmFsLA0KPiA+IEVGSV9DT01QQVJFX1RZUEUuRVFVQUwNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBjdHguTGVzc0VxdWFsKCkgIT0gTm9uZToNCj4g Pg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IHNlbGYuSWRFcVZhbERvU3BlY2lhbCgNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4LkV4cEluZm8sIExpbmUsIFFJZCwgVmFySWRTdHIs IE1hc2ssIENvbnN0VmFsLA0KPiA+IEVGSV9DT01QQVJFX1RZUEUuTEVTU19FUVVBTA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgY3R4 Lkxlc3MoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gc2VsZi5J ZEVxVmFsRG9TcGVjaWFsKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjdHguRXhwSW5mbywg TGluZSwgUUlkLCBWYXJJZFN0ciwgTWFzaywgQ29uc3RWYWwsDQo+ID4gRUZJX0NPTVBBUkVfVFlQ RS5MRVNTX1RIQU4NCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBlbGlmIGN0eC5HcmVhdGVyRXF1YWwoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGN0eC5Ob2RlID0gc2VsZi5JZEVxVmFsRG9TcGVjaWFsKA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBjdHguRXhwSW5mbywgTGluZSwgUUlkLCBWYXJJZFN0ciwgTWFzaywgQ29u c3RWYWwsDQo+ID4gRUZJX0NPTVBBUkVfVFlQRS5HUkVBVEVSX0VRVUFMDQo+ID4NCj4gPiArICAg ICAgICAgICAgKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBjdHguR3JlYXRl cigpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBzZWxmLklkRXFW YWxEb1NwZWNpYWwoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5FeHBJbmZvLCBMaW5l LCBRSWQsIFZhcklkU3RyLCBNYXNrLCBDb25zdFZhbCwNCj4gPiBFRklfQ09NUEFSRV9UWVBFLkdS RUFURVJfVEhBTg0KPiA+DQo+ID4gKyAgICAgICAgICAgICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYg Q29udmVydElkRXhwcihzZWxmLCBFeHBJbmZvLCBMaW5lTm8sIFFJZCwgVmFySWRTdHIsIEJpdE1h c2spOg0KPiA+DQo+ID4gKyAgICAgICAgUVIxT2JqID0gSWZyUXVlc3Rpb25SZWYxKExpbmVObykN Cj4gPg0KPiA+ICsgICAgICAgIFFSMU9iai5TZXRRdWVzdGlvbklkKFFJZCwgVmFySWRTdHIsIExp bmVObykNCj4gPg0KPiA+ICsgICAgICAgIE5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX1FVRVNU SU9OX1JFRjFfT1AsIFFSMU9iaikNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2F2ZU9wSGRyQ29u ZChRUjFPYmouR2V0SGVhZGVyKCksIChFeHBJbmZvLkV4cE9wQ291bnQgPT0NCj4gMCkpDQo+ID4N Cj4gPiArICAgICAgICBpZiBCaXRNYXNrICE9IDA6DQo+ID4NCj4gPiArICAgICAgICAgICAgVTMy T2JqID0gSWZyVWludDMyKExpbmVObykNCj4gPg0KPiA+ICsgICAgICAgICAgICBVMzJPYmouU2V0 VmFsdWUoQml0TWFzaykNCj4gPg0KPiA+ICsgICAgICAgICAgICBOb2RlLmluc2VydENoaWxkKA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICBJZnJUcmVlTm9kZShFRklfSUZSX1VJTlQzMl9PUCwg VTMyT2JqLA0KPiA+IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKFUzMk9iai5HZXRJbmZvKCkpKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAg ICBCV0FPYmogPSBJZnJCaXRXaXNlQW5kKExpbmVObykNCj4gPg0KPiA+ICsgICAgICAgICAgICBO b2RlLmluc2VydENoaWxkKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBJZnJUcmVlTm9kZSgN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfQklUV0lTRV9BTkRfT1AsIEJX QU9iaiwNCj4gPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShCV0FPYmouR2V0SW5mbygpKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgICAgIFU4T2JqID0gSWZyVWludDgoTGluZU5vKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIEJpdE1hc2sgPT0gREFURV9ZRUFSX0JJVE1BU0s6DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIFU4T2JqLlNldFZhbHVlKDApDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxpZiBCaXRNYXNrID09IFRJTUVfU0VDT05EX0JJVE1BU0s6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIFU4T2JqLlNldFZhbHVlKDB4MTApDQo+ID4NCj4gPiArICAgICAgICAgICAg ZWxpZiBCaXRNYXNrID09IERBVEVfREFZX0JJVE1BU0s6DQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIFU4T2JqLlNldFZhbHVlKDB4MTgpDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiBCaXRN YXNrID09IFRJTUVfSE9VUl9CSVRNQVNLOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBVOE9i ai5TZXRWYWx1ZSgwKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgQml0TWFzayA9PSBUSU1F X01JTlVURV9CSVRNQVNLOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBVOE9iai5TZXRWYWx1 ZSgweDgpDQo+ID4NCj4gPiArICAgICAgICAgICAgTm9kZS5pbnNlcnRDaGlsZCgNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgSWZyVHJlZU5vZGUoRUZJX0lGUl9VSU5UOF9PUCwgVThPYmosDQo+ ID4gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oVThPYmouR2V0SW5mbygpKSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgU1JPYmogPSBJ ZnJTaGlmdFJpZ2h0KExpbmVObykNCj4gPg0KPiA+ICsgICAgICAgICAgICBOb2RlLmluc2VydENo aWxkKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBJZnJUcmVlTm9kZShFRklfSUZSX1NISUZU X1JJR0hUX09QLCBTUk9iaiwNCj4gPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShTUk9iai5HZXRJ bmZvKCkpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIEV4cEluZm8uRXhwT3BDb3VudCArPSA0DQo+ID4NCj4gPiArICAgICAgICByZXR1cm4g Tm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgSWRFcVZhbERvU3BlY2lhbChzZWxm LCBFeHBJbmZvLCBMaW5lTm8sIFFJZCwgVmFySWRTdHIsIEJpdE1hc2ssDQo+ID4gQ29uc3RWYWws IENvbXBhcmVUeXBlKToNCj4gPg0KPiA+ICsgICAgICAgIE5vZGUgPSBzZWxmLkNvbnZlcnRJZEV4 cHIoRXhwSW5mbywgTGluZU5vLCBRSWQsIFZhcklkU3RyLCBCaXRNYXNrKQ0KPiA+DQo+ID4gKyAg ICAgICAgaWYgQ29uc3RWYWwgPiAweEZGOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFUxNk9iaiA9 IElmclVpbnQxNihMaW5lTm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgVTE2T2JqLlNldFZhbHVl KENvbnN0VmFsKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIE5vZGUuaW5zZXJ0Q2hpbGQoDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIElmclRyZWVOb2RlKEVGSV9JRlJfVUlOVDE2X09QLCBVMTZP YmosDQo+ID4gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oVTE2T2JqLkdldEluZm8oKSkpDQo+ID4N Cj4gPiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICBVOE9iaiA9IElmclVpbnQ4KExpbmVObykNCj4gPg0KPiA+ICsgICAgICAgICAg ICBVOE9iai5TZXRWYWx1ZShDb25zdFZhbCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBOb2RlLmlu c2VydENoaWxkKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBJZnJUcmVlTm9kZShFRklfSUZS X1VJTlQ4X09QLCBVOE9iaiwNCj4gPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShVOE9iai5HZXRJ bmZvKCkpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGlmIENvbXBhcmVUeXBlID09IEVGSV9DT01QQVJFX1RZUEUuRVFVQUw6DQo+ID4NCj4g PiArICAgICAgICAgICAgRU9iaiA9IElmckVxdWFsKExpbmVObykNCj4gPg0KPiA+ICsgICAgICAg ICAgICBOb2RlLmluc2VydENoaWxkKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBJZnJUcmVl Tm9kZShFRklfSUZSX0VRVUFMX09QLCBFT2JqLA0KPiA+IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFt KEVPYmouR2V0SW5mbygpKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBpZiBDb21wYXJlVHlwZSA9PSBFRklfQ09NUEFSRV9UWVBFLkxFU1Nf RVFVQUw6DQo+ID4NCj4gPiArICAgICAgICAgICAgTEVPYmogPSBJZnJMZXNzRXF1YWwoTGluZU5v KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIE5vZGUuaW5zZXJ0Q2hpbGQoDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIElmclRyZWVOb2RlKEVGSV9JRlJfTEVTU19FUVVBTF9PUCwgTEVPYmosDQo+ ID4gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oTEVPYmouR2V0SW5mbygpKSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBDb21wYXJlVHlw ZSA9PSBFRklfQ09NUEFSRV9UWVBFLkxFU1NfVEhBTjoNCj4gPg0KPiA+ICsgICAgICAgICAgICBM VE9iaiA9IElmckxlc3NUaGFuKExpbmVObykNCj4gPg0KPiA+ICsgICAgICAgICAgICBOb2RlLmlu c2VydENoaWxkKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBJZnJUcmVlTm9kZShFRklfSUZS X0xFU1NfVEhBTl9PUCwgTFRPYmosDQo+ID4gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oTFRPYmou R2V0SW5mbygpKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBpZiBDb21wYXJlVHlwZSA9PSBFRklfQ09NUEFSRV9UWVBFLkdSRUFURVJfRVFV QUw6DQo+ID4NCj4gPiArICAgICAgICAgICAgR0VPYmogPSBJZnJHcmVhdGVyRXF1YWwoTGluZU5v KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIE5vZGUuaW5zZXJ0Q2hpbGQoDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIElmclRyZWVOb2RlKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg RUZJX0lGUl9HUkVBVEVSX0VRVUFMX09QLCBHRU9iaiwNCj4gPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0 cmVhbShHRU9iai5HZXRJbmZvKCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICkNCj4gPg0K PiA+ICsgICAgICAgICAgICApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBDb21w YXJlVHlwZSA9PSBFRklfQ09NUEFSRV9UWVBFLkdSRUFURVJfVEhBTjoNCj4gPg0KPiA+ICsgICAg ICAgICAgICBHVE9iaiA9IElmckdyZWF0ZXJUaGFuKExpbmVObykNCj4gPg0KPiA+ICsgICAgICAg ICAgICBOb2RlLmluc2VydENoaWxkKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBJZnJUcmVl Tm9kZSgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfR1JFQVRFUl9USEFO X09QLCBHVE9iaiwNCj4gPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShHVE9iai5HZXRJbmZvKCkp DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBFeHBJbmZvLkV4cE9wQ291bnQgKz0gMg0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIE5vZGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBW aXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2lkZXF2YWxFeHAu DQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdElkZXF2YWxFeHAoc2VsZiwgY3R4OiBWZnJTeW50YXhQ YXJzZXIuSWRlcXZhbEV4cENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgTGluZSA9IGN0eC5z dGFydC5saW5lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+ DQo+ID4gKyAgICAgICAgTWFzayA9IGN0eC52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoKS5NYXNr DQo+ID4NCj4gPiArICAgICAgICBRSWQgPSBjdHgudmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKCku UUlkDQo+ID4NCj4gPiArICAgICAgICBWYXJJZFN0ciA9IGN0eC52ZnJRdWVzdGlvbkRhdGFGaWVs ZE5hbWUoKS5WYXJJZFN0cg0KPiA+DQo+ID4gKyAgICAgICAgTGluZU5vID0gY3R4LnZmclF1ZXN0 aW9uRGF0YUZpZWxkTmFtZSgpLkxpbmUNCj4gPg0KPiA+ICsgICAgICAgIENvbnN0VmFsID0gc2Vs Zi5UcmFuc051bShjdHguTnVtYmVyKCkpDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguRXF1YWwo KSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIE1hc2sgPT0gMDoNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgRUlWT2JqID0gSWZyRXFJZFZhbChMaW5lKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBzZWxmLlNhdmVPcEhkckNvbmQoRUlWT2JqLkdldEhlYWRlcigpLA0KPiAo Y3R4LkV4cEluZm8uRXhwT3BDb3VudA0KPiA+ID09IDApLCBMaW5lKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBFSVZPYmouU2V0UXVlc3Rpb25JZChRSWQsIFZhcklkU3RyLCBMaW5lTm8pDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIEVJVk9iai5TZXRWYWx1ZShDb25zdFZhbCkNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgY3R4Lk5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX0VRX0lE X1ZBTF9PUCwgRUlWT2JqKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjdHguRXhwSW5mby5F eHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBjdHguTm9kZSA9IHNlbGYuSWRFcVZhbERvU3BlY2lhbCgNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIGN0eC5FeHBJbmZvLCBMaW5lLCBRSWQsIFZhcklkU3RyLCBN YXNrLCBDb25zdFZhbCwNCj4gPiBFRklfQ09NUEFSRV9UWVBFLkVRVUFMDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgY3R4Lkxl c3NFcXVhbCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBzZWxm LklkRXFWYWxEb1NwZWNpYWwoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5FeHBJbmZv LCBMaW5lLCBRSWQsIFZhcklkU3RyLCBNYXNrLCBDb25zdFZhbCwNCj4gPiBFRklfQ09NUEFSRV9U WVBFLkxFU1NfRVFVQUwNCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBlbGlmIGN0eC5MZXNzKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBjdHguTm9kZSA9IHNlbGYuSWRFcVZhbERvU3BlY2lhbCgNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgY3R4LkV4cEluZm8sIExpbmUsIFFJZCwgVmFySWRTdHIsIE1hc2ssIENvbnN0VmFs LA0KPiA+IEVGSV9DT01QQVJFX1RZUEUuTEVTU19USEFODQo+ID4NCj4gPiArICAgICAgICAgICAg KQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBjdHguR3JlYXRlckVxdWFsKCkg IT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IHNlbGYuSWRFcVZhbERv U3BlY2lhbCgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4LkV4cEluZm8sIExpbmUsIFFJ ZCwgVmFySWRTdHIsIE1hc2ssIENvbnN0VmFsLA0KPiA+IEVGSV9DT01QQVJFX1RZUEUuR1JFQVRF Ul9FUVVBTA0KPiA+DQo+ID4gKyAgICAgICAgICAgICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGVsaWYgY3R4LkdyZWF0ZXIoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAg IGN0eC5Ob2RlID0gc2VsZi5JZEVxVmFsRG9TcGVjaWFsKA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBjdHguRXhwSW5mbywgTGluZSwgUUlkLCBWYXJJZFN0ciwgTWFzaywgQ29uc3RWYWwsDQo+ ID4gRUZJX0NPTVBBUkVfVFlQRS5HUkVBVEVSX1RIQU4NCj4gPg0KPiA+ICsgICAgICAgICAgICAp DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgZGVmIElkRXFJZERvU3BlY2lhbCgNCj4gPg0KPiA+ICsgICAgICAg IHNlbGYsIEV4cEluZm8sIExpbmVObywgUUlkMSwgVmFySWRTdHIxLCBNYXNrMSwgUUlkMiwgVmFy SWRTdHIyLCBNYXNrMiwNCj4gPiBDb21wYXJlVHlwZQ0KPiA+DQo+ID4gKyAgICApOg0KPiA+DQo+ ID4gKyAgICAgICAgTm9kZTEgPSBzZWxmLkNvbnZlcnRJZEV4cHIoRXhwSW5mbywgTGluZU5vLCBR SWQxLCBWYXJJZFN0cjEsIE1hc2sxKQ0KPiA+DQo+ID4gKyAgICAgICAgTm9kZTIgPSBzZWxmLkNv bnZlcnRJZEV4cHIoRXhwSW5mbywgTGluZU5vLCBRSWQyLCBWYXJJZFN0cjIsIE1hc2syKQ0KPiA+ DQo+ID4gKyAgICAgICAgTm9kZTEuaW5zZXJ0Q2hpbGQoTm9kZTIpDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBpZiBDb21wYXJlVHlwZSA9PSBFRklfQ09NUEFSRV9UWVBFLkVRVUFMOg0K PiA+DQo+ID4gKyAgICAgICAgICAgIEVPYmogPSBJZnJFcXVhbChMaW5lTm8pDQo+ID4NCj4gPiAr ICAgICAgICAgICAgTm9kZTEuaW5zZXJ0Q2hpbGQoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IElmclRyZWVOb2RlKEVGSV9JRlJfRVFVQUxfT1AsIEVPYmosDQo+ID4gZ0Zvcm1Qa2cuU3RydWN0 VG9TdHJlYW0oRU9iai5HZXRJbmZvKCkpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIENvbXBhcmVUeXBlID09IEVGSV9DT01QQVJFX1RZ UEUuTEVTU19FUVVBTDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBMRU9iaiA9IElmckxlc3NFcXVh bChMaW5lTm8pDQo+ID4NCj4gPiArICAgICAgICAgICAgTm9kZTEuaW5zZXJ0Q2hpbGQoDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIElmclRyZWVOb2RlKEVGSV9JRlJfTEVTU19FUVVBTF9PUCwg TEVPYmosDQo+ID4gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oTEVPYmouR2V0SW5mbygpKSkNCj4g Pg0KPiA+ICsgICAgICAgICAgICApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBpZiBD b21wYXJlVHlwZSA9PSBFRklfQ09NUEFSRV9UWVBFLkxFU1NfVEhBTjoNCj4gPg0KPiA+ICsgICAg ICAgICAgICBMVE9iaiA9IElmckxlc3NUaGFuKExpbmVObykNCj4gPg0KPiA+ICsgICAgICAgICAg ICBOb2RlMS5pbnNlcnRDaGlsZCgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgSWZyVHJlZU5v ZGUoRUZJX0lGUl9MRVNTX1RIQU5fT1AsIExUT2JqLA0KPiA+IGdGb3JtUGtnLlN0cnVjdFRvU3Ry ZWFtKExUT2JqLkdldEluZm8oKSkpDQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgaWYgQ29tcGFyZVR5cGUgPT0gRUZJX0NPTVBBUkVfVFlQRS5H UkVBVEVSX0VRVUFMOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIEdFT2JqID0gSWZyR3JlYXRlckVx dWFsKExpbmVObykNCj4gPg0KPiA+ICsgICAgICAgICAgICBOb2RlMS5pbnNlcnRDaGlsZCgNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgSWZyVHJlZU5vZGUoDQo+ID4NCj4gPiArICAgICAgICAg ICAgICAgICAgICBFRklfSUZSX0dSRUFURVJfRVFVQUxfT1AsIEdFT2JqLA0KPiA+IGdGb3JtUGtn LlN0cnVjdFRvU3RyZWFtKEdFT2JqLkdldEluZm8oKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIGlmIENvbXBhcmVUeXBlID09IEVGSV9DT01QQVJFX1RZUEUuR1JFQVRFUl9USEFOOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIEdUT2JqID0gSWZyR3JlYXRlclRoYW4oTGluZU5vKQ0KPiA+DQo+ ID4gKyAgICAgICAgICAgIE5vZGUxLmluc2VydENoaWxkKA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBJZnJUcmVlTm9kZSgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJf R1JFQVRFUl9USEFOX09QLCBHVE9iaiwNCj4gPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShHVE9i ai5HZXRJbmZvKCkpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAg ICAgICAgICApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBFeHBJbmZvLkV4cE9wQ291 bnQgKz0gMQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIE5vZGUxDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNl ciNpZGVxaWRFeHAuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdElkZXFpZEV4cChzZWxmLCBjdHg6 IFZmclN5bnRheFBhcnNlci5JZGVxaWRFeHBDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0 LmxpbmUNCj4gPg0KPiA+ICsgICAgICAgIE1hc2sxID0gY3R4LnZmclF1ZXN0aW9uRGF0YUZpZWxk TmFtZSgwKS5NYXNrDQo+ID4NCj4gPiArICAgICAgICBRSWQxID0gY3R4LnZmclF1ZXN0aW9uRGF0 YUZpZWxkTmFtZSgwKS5RSWQNCj4gPg0KPiA+ICsgICAgICAgIFZhcklkU3RyMSA9IGN0eC52ZnJR dWVzdGlvbkRhdGFGaWVsZE5hbWUoMCkuVmFySWRTdHINCj4gPg0KPiA+ICsgICAgICAgIExpbmVO bzEgPSBjdHgudmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKDApLkxpbmUNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIE1hc2syID0gY3R4LnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgxKS5N YXNrDQo+ID4NCj4gPiArICAgICAgICBRSWQyID0gY3R4LnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFt ZSgxKS5RSWQNCj4gPg0KPiA+ICsgICAgICAgIFZhcklkU3RyMiA9IGN0eC52ZnJRdWVzdGlvbkRh dGFGaWVsZE5hbWUoMSkuVmFySWRTdHINCj4gPg0KPiA+ICsgICAgICAgIExpbmVObzIgPSBjdHgu dmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKDEpLkxpbmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIGlmIGN0eC5FcXVhbCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgaWYg TWFzazEgJiBNYXNrMjoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4Lk5vZGUgPSBzZWxm LklkRXFJZERvU3BlY2lhbCgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGN0eC5FeHBJ bmZvLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgTGluZSwNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgIFFJZDEsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBWYXJJ ZFN0cjEsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBNYXNrMSwNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgIFFJZDIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBW YXJJZFN0cjIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBNYXNrMiwNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgIEVGSV9DT01QQVJFX1RZUEUuRVFVQUwsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBFSUlPYmogPSBJZnJFcUlkSWQoTGluZSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5TYXZlT3BIZHJDb25kKEVJSU9iai5HZXRIZWFkZXIoKSwNCj4gKGN0 eC5FeHBJbmZvLkV4cE9wQ291bnQNCj4gPiA9PSAwKSwgTGluZSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgRUlJT2JqLlNldFF1ZXN0aW9uSWQxKFFJZDEsIFZhcklkU3RyMSwgTGluZU5vMSkN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgRUlJT2JqLlNldFF1ZXN0aW9uSWQyKFFJZDIsIFZh cklkU3RyMiwgTGluZU5vMikNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4Lk5vZGUgPSBJ ZnJUcmVlTm9kZShFRklfSUZSX0VRX0lEX0lEX09QLCBFSUlPYmopDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAgICAgZWxpZiBjdHguTGVzc0VxdWFsKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBjdHguTm9kZSA9IHNlbGYuSWRFcUlkRG9TcGVjaWFsKA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICBjdHguRXhwSW5mbywNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgTGluZSwN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgUUlkMSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAg ICAgVmFySWRTdHIxLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBNYXNrMSwNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgUUlkMiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgVmFySWRT dHIyLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBNYXNrMiwNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgRUZJX0NPTVBBUkVfVFlQRS5MRVNTX0VRVUFMLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgY3R4Lkxlc3MoKSAhPSBO b25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gc2VsZi5JZEVxSWREb1NwZWNp YWwoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5FeHBJbmZvLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBMaW5lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBRSWQxLA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICBWYXJJZFN0cjEsDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgIE1hc2sxLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBRSWQyLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICBWYXJJZFN0cjIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIE1hc2sy LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBFRklfQ09NUEFSRV9UWVBFLkxFU1NfVEhBTiwN Cj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBl bGlmIGN0eC5HcmVhdGVyRXF1YWwoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0 eC5Ob2RlID0gc2VsZi5JZEVxSWREb1NwZWNpYWwoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IGN0eC5FeHBJbmZvLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBMaW5lLA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICBRSWQxLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBWYXJJZFN0 cjEsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIE1hc2sxLA0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBRSWQyLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBWYXJJZFN0cjIsDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIE1hc2syLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBF RklfQ09NUEFSRV9UWVBFLkdSRUFURVJfRVFVQUwsDQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0K PiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBjdHguR3JlYXRlcigpICE9IE5vbmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBzZWxmLklkRXFJZERvU3BlY2lhbCgN Cj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgY3R4LkV4cEluZm8sDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIExpbmUsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIFFJZDEsDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIFZhcklkU3RyMSwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg TWFzazEsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIFFJZDIsDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgIFZhcklkU3RyMiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgTWFzazIsDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIEVGSV9DT01QQVJFX1RZUEUuR1JFQVRFUl9USEFOLA0K PiA+DQo+ID4gKyAgICAgICAgICAgICkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguTm9k ZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgSWRFcUxpc3REb1NwZWNpYWwoc2VsZiwg RXhwSW5mbywgTGluZU5vLCBRSWQsIFZhcklkU3RyLCBNYXNrLCBMaXN0TGVuLA0KPiA+IFZhbHVl TGlzdCk6DQo+ID4NCj4gPiArICAgICAgICBpZiBMaXN0TGVuID09IDA6DQo+ID4NCj4gPiArICAg ICAgICAgICAgcmV0dXJuIE5vbmUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIE5vZGUg PSBzZWxmLklkRXFWYWxEb1NwZWNpYWwoDQo+ID4NCj4gPiArICAgICAgICAgICAgRXhwSW5mbywg TGluZU5vLCBRSWQsIFZhcklkU3RyLCBNYXNrLCBWYWx1ZUxpc3RbMF0sDQo+ID4gRUZJX0NPTVBB UkVfVFlQRS5FUVVBTA0KPiA+DQo+ID4gKyAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgZm9y IGkgaW4gcmFuZ2UoMSwgTGlzdExlbik6DQo+ID4NCj4gPiArICAgICAgICAgICAgTm9kZS5pbnNl cnRDaGlsZCgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5JZEVxVmFsRG9TcGVjaWFs KA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgRXhwSW5mbywgTGluZU5vLCBRSWQsIFZh cklkU3RyLCBNYXNrLCBWYWx1ZUxpc3RbaV0sDQo+ID4gRUZJX0NPTVBBUkVfVFlQRS5FUVVBTA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIE9PYmogPSBJZnJPcihMaW5lTm8pDQo+ID4NCj4gPiArICAgICAg ICAgICAgTm9kZS5pbnNlcnRDaGlsZCgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgSWZyVHJl ZU5vZGUoRUZJX0lGUl9PUl9PUCwgT09iaiwNCj4gPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShP T2JqLkdldEluZm8oKSkpDQo+ID4NCj4gPiArICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIEV4cEluZm8uRXhwT3BDb3VudCArPSAxDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICAgICByZXR1cm4gTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFy c2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjaWRlcXZhbGxpc3RFeHAuDQo+ID4N Cj4gPiArICAgIGRlZiB2aXNpdElkZXF2YWxsaXN0RXhwKHNlbGYsIGN0eDogVmZyU3ludGF4UGFy c2VyLklkZXF2YWxsaXN0RXhwQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0 Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+ ID4NCj4gPiArICAgICAgICBNYXNrID0gY3R4LnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgpLk1h c2sNCj4gPg0KPiA+ICsgICAgICAgIFFJZCA9IGN0eC52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUo KS5RSWQNCj4gPg0KPiA+ICsgICAgICAgIFZhcklkU3RyID0gY3R4LnZmclF1ZXN0aW9uRGF0YUZp ZWxkTmFtZSgpLlZhcklkU3RyDQo+ID4NCj4gPiArICAgICAgICBMaW5lTm8gPSBjdHgudmZyUXVl c3Rpb25EYXRhRmllbGROYW1lKCkuTGluZQ0KPiA+DQo+ID4gKyAgICAgICAgVmFsdWVMaXN0ID0g W10NCj4gPg0KPiA+ICsgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihjdHguTnVtYmVyKCkp KToNCj4gPg0KPiA+ICsgICAgICAgICAgICBWYWx1ZUxpc3QuYXBwZW5kKHNlbGYuVHJhbnNOdW0o Y3R4Lk51bWJlcihpKSkpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICBMaXN0TGVuID0g bGVuKFZhbHVlTGlzdCkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIE1hc2sgIT0g MDoNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZSA9IHNlbGYuSWRFcUxpc3REb1NwZWNp YWwoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5FeHBJbmZvLCBMaW5lTm8sIFFJZCwg VmFySWRTdHIsIE1hc2ssIExpc3RMZW4sIFZhbHVlTGlzdA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICkNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgRUlMT2Jq ID0gSWZyRXFJZExpc3QoTGluZSwgTGlzdExlbikNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBR SWQgIT0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQ6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IEVJTE9iai5TZXRRdWVzdGlvbklkKFFJZCwgVmFySWRTdHIsIExpbmVObykNCj4gPg0KPiA+ICsg ICAgICAgICAgICBFSUxPYmouU2V0TGlzdExlbmd0aChMaXN0TGVuKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIEVJTE9iai5TZXRWYWx1ZUxpc3QoVmFsdWVMaXN0KQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuU2F2ZU9wSGRyQ29uZChFSUxPYmouR2V0SGVhZGVyKCksIChjdHguRXhwSW5mby5F eHBPcENvdW50DQo+ID09DQo+ID4gMCksIExpbmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgaWYg UUlkID09IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBFSUxPYmouU2V0UXVlc3Rpb25JZChRSWQsIFZhcklkU3RyLCBMaW5lTm8pDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX0VR X0lEX1ZBTF9MSVNUX09QLCBFSUxPYmopDQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LkV4cElu Zm8uRXhwT3BDb3VudCArPSAxDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkN Cj4gPiBWZnJTeW50YXhQYXJzZXIjdmZyUXVlc3Rpb25EYXRhRmllbGROYW1lUnVsZTEuDQo+ID4N Cj4gPiArICAgIGRlZiB2aXNpdFZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZVJ1bGUxKA0KPiA+DQo+ ID4gKyAgICAgICAgc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25EYXRhRmll bGROYW1lUnVsZTFDb250ZXh0DQo+ID4NCj4gPiArICAgICk6DQo+ID4NCj4gPiArICAgICAgICBj dHguTGluZSA9IGN0eC5zdGFydC5saW5lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hp bGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4LlZhcklkU3RyICs9IGN0eC5TTjEudGV4 dA0KPiA+DQo+ID4gKyAgICAgICAgY3R4LlZhcklkU3RyICs9ICJbIg0KPiA+DQo+ID4gKyAgICAg ICAgY3R4LlZhcklkU3RyICs9IGN0eC5JLnRleHQNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5WYXJJ ZFN0ciArPSAiXSINCj4gPg0KPiA+ICsgICAgICAgIGN0eC5RSWQsIGN0eC5NYXNrLCBfID0gc2Vs Zi5WZnJRdWVzdGlvbkRCLkdldFF1ZXN0aW9uSWQoTm9uZSwNCj4gPiBjdHguVmFySWRTdHIpDQo+ ID4NCj4gPiArICAgICAgICBpZiBzZWxmLkNvbnN0YW50T25seUluRXhwcmVzc2lvbjoNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLkVycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fQ09OU1RBTlRfT05MWSwNCj4gPiBjdHguU04xLmxpbmUpDQo+ID4NCj4gPiArICAgICAgICBy ZXR1cm4gY3R4LlFJZCwgY3R4Lk1hc2ssIGN0eC5WYXJJZFN0cg0KPiA+DQo+ID4gKw0KPiA+DQo+ ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiA+IFZmclN5bnRheFBh cnNlciN2ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVSdWxlMi4NCj4gPg0KPiA+ICsgICAgZGVmIHZp c2l0VmZyUXVlc3Rpb25EYXRhRmllbGROYW1lUnVsZTIoDQo+ID4NCj4gPiArICAgICAgICBzZWxm LCBjdHg6IFZmclN5bnRheFBhcnNlci5WZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVSdWxlMkNvbnRl eHQNCj4gPg0KPiA+ICsgICAgKToNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5MaW5lID0gY3R4LnN0 YXJ0LmxpbmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4N Cj4gPiArICAgICAgICBjdHguVmFySWRTdHIgKz0gY3R4LlNOMi50ZXh0DQo+ID4NCj4gPiArICAg ICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oY3R4LmFycmF5TmFtZSgpKSk6DQo+ID4NCj4gPiAr ICAgICAgICAgICAgY3R4LlZhcklkU3RyICs9ICIuIg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlm IHNlbGYuQ29uc3RhbnRPbmx5SW5FeHByZXNzaW9uOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLkVycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fQ09OU1RBTlRfT05M WSwNCj4gPiBjdHguU04yLmxpbmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LlZhcklkU3Ry ICs9IGN0eC5hcnJheU5hbWUoaSkuU3ViU3RyWg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAg ICAgY3R4LlFJZCwgY3R4Lk1hc2ssIF8gPSBzZWxmLlZmclF1ZXN0aW9uREIuR2V0UXVlc3Rpb25J ZChOb25lLA0KPiA+IGN0eC5WYXJJZFN0cikNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHgu UUlkLCBjdHguTWFzaywgY3R4LlZhcklkU3RyDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMg VmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNhcnJheU5hbWUu DQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdEFycmF5TmFtZShzZWxmLCBjdHg6IFZmclN5bnRheFBh cnNlci5BcnJheU5hbWVDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGls ZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAgICBjdHguU3ViU3RyICs9IHNlbGYuVHJhbnNJZChj dHguU3RyaW5nSWRlbnRpZmllcigpKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4LlN1YlN0clogKz0g c2VsZi5UcmFuc0lkKGN0eC5TdHJpbmdJZGVudGlmaWVyKCkpDQo+ID4NCj4gPiArICAgICAgICBp ZiBjdHguTiAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIElkeCA9IHNlbGYuVHJhbnNO dW0oY3R4Lk4udGV4dCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBJZHggPiAwOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICBjdHguU3ViU3RyICs9ICJbIg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBjdHguU3ViU3RyICs9IHN0cihJZHgpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg IGN0eC5TdWJTdHIgKz0gIl0iDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4 LlN1YlN0clogKz0gIlsiDQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4LlN1YlN0clogKz0gc3Ry KElkeCkNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguU3ViU3RyWiArPSAiXSINCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguU3ViU3RyLCBjdHguU3ViU3RyWg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBW ZnJTeW50YXhQYXJzZXIjcXVlc3Rpb25yZWYxRXhwLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRR dWVzdGlvbnJlZjFFeHAoc2VsZiwgY3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5RdWVzdGlvbnJl ZjFFeHBDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZSAg Iw0KPiA+DQo+ID4gKyAgICAgICAgUU5hbWUgPSBOb25lICAjDQo+ID4NCj4gPiArICAgICAgICBR SWQgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNp dENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5TdHJpbmdJZGVudGlmaWVy KCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBRTmFtZSA9IHNlbGYuVHJhbnNJZChj dHguU3RyaW5nSWRlbnRpZmllcigpKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIFFJZCwgXywgXyA9 IHNlbGYuVmZyUXVlc3Rpb25EQi5HZXRRdWVzdGlvbklkKFFOYW1lKQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgZWxpZiBjdHguTnVtYmVyKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBRSWQgPSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIFFSMU9iaiA9IElmclF1ZXN0aW9uUmVmMShMaW5lKQ0KPiA+DQo+ID4g KyAgICAgICAgc2VsZi5TYXZlT3BIZHJDb25kKFFSMU9iai5HZXRIZWFkZXIoKSwgKGN0eC5FeHBJ bmZvLkV4cE9wQ291bnQNCj4gPT0NCj4gPiAwKSwgTGluZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIFFSMU9iai5TZXRRdWVzdGlvbklkKFFJZCwgUU5hbWUsIExpbmUpDQo+ID4NCj4g PiArICAgICAgICBjdHguTm9kZS5EYXRhID0gUVIxT2JqDQo+ID4NCj4gPiArICAgICAgICBjdHgu RXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIHJl dHVybiBjdHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2Ug dHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjcnVsZXJlZkV4cC4NCj4gPg0KPiA+ICsg ICAgZGVmIHZpc2l0UnVsZXJlZkV4cChzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5SdWxlcmVm RXhwQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAg ICBSUk9iaiA9IElmclJ1bGVSZWYoTGluZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2F2ZU9w SGRyQ29uZChSUk9iai5HZXRIZWFkZXIoKSwgKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgPT0NCj4g PiAwKSwgTGluZSkNCj4gPg0KPiA+ICsgICAgICAgIFJ1bGVJZCA9IHNlbGYuVmZyUnVsZXNEQi5H ZXRSdWxlSWQoc2VsZi5UcmFuc0lkKGN0eC5TdHJpbmdJZGVudGlmaWVyKCkpKQ0KPiA+DQo+ID4g KyAgICAgICAgUlJPYmouU2V0UnVsZUlkKFJ1bGVJZCkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5O b2RlLkRhdGEgPSBSUk9iag0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3Vu dCArPSAxDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkg VmZyU3ludGF4UGFyc2VyI3N0cmluZ3JlZjFFeHAuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFN0 cmluZ3JlZjFFeHAoc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuU3RyaW5ncmVmMUV4cENvbnRl eHQpOg0KPiA+DQo+ID4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+ID4NCj4gPiAr ICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgUmVmU3Ry aW5nSWQgPSBzZWxmLlRyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCj4gPg0KPiA+ICsgICAgICAgIFNS MU9iaiA9IElmclN0cmluZ1JlZjEoTGluZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2F2ZU9w SGRyQ29uZChTUjFPYmouR2V0SGVhZGVyKCksIChjdHguRXhwSW5mby5FeHBPcENvdW50DQo+ID09 DQo+ID4gMCksIExpbmUpDQo+ID4NCj4gPiArICAgICAgICBTUjFPYmouU2V0U3RyaW5nSWQoUmVm U3RyaW5nSWQpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gU1IxT2JqDQo+ID4N Cj4gPiArICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjcHVzaHRo aXNFeHAuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFB1c2h0aGlzRXhwKHNlbGYsIGN0eDogVmZy U3ludGF4UGFyc2VyLlB1c2h0aGlzRXhwQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBMaW5l ID0gY3R4LnN0YXJ0LmxpbmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihj dHgpDQo+ID4NCj4gPiArICAgICAgICBUT2JqID0gSWZyVGhpcyhMaW5lKQ0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi5TYXZlT3BIZHJDb25kKFRPYmouR2V0SGVhZGVyKCksIChjdHguRXhwSW5mby5F eHBPcENvdW50ID09DQo+IDApLA0KPiA+IExpbmUpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9k ZS5EYXRhID0gVE9iag0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCAr PSAxDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZy U3ludGF4UGFyc2VyI3NlY3VyaXR5RXhwLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRTZWN1cml0 eUV4cChzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5TZWN1cml0eUV4cENvbnRleHQpOg0KPiA+ DQo+ID4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+ID4NCj4gPiArICAgICAgICBz ZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgU09iaiA9IElmclNlY3Vy aXR5KExpbmUpDQo+ID4NCj4gPiArICAgICAgICBzZWxmLlNhdmVPcEhkckNvbmQoU09iai5HZXRI ZWFkZXIoKSwgKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgPT0NCj4gMCksDQo+ID4gTGluZSkNCj4g Pg0KPiA+ICsgICAgICAgIFNPYmouU2V0UGVybWlzc2lvbnMoY3R4Lmd1aWREZWZpbml0aW9uKCku R3VpZCkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBTT2JqDQo+ID4NCj4gPiAr ICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBjdHguRXhwSW5mbw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAj IFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjbnVtZXJpY1Zh clN0b3JlVHlwZS4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0TnVtZXJpY1ZhclN0b3JlVHlwZShz ZWxmLCBjdHg6DQo+ID4gVmZyU3ludGF4UGFyc2VyLk51bWVyaWNWYXJTdG9yZVR5cGVDb250ZXh0 KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiAr ICAgICAgICBpZiBjdHguTnVtZXJpY1NpemVPbmUoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGN0eC5WYXJUeXBlID0gRUZJX0lGUl9OVU1FUklDX1NJWkVfMQ0KPiA+DQo+ID4gKyAg ICAgICAgaWYgY3R4Lk51bWVyaWNTaXplVHdvKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICBjdHguVmFyVHlwZSA9IEVGSV9JRlJfTlVNRVJJQ19TSVpFXzINCj4gPg0KPiA+ICsgICAg ICAgIGlmIGN0eC5OdW1lcmljU2l6ZUZvdXIoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGN0eC5WYXJUeXBlID0gRUZJX0lGUl9OVU1FUklDX1NJWkVfNA0KPiA+DQo+ID4gKyAgICAg ICAgaWYgY3R4Lk51bWVyaWNTaXplRWlnaHQoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGN0eC5WYXJUeXBlID0gRUZJX0lGUl9OVU1FUklDX1NJWkVfOA0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5WYXJUeXBlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNnZXRF eHAuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdEdldEV4cChzZWxmLCBjdHg6IFZmclN5bnRheFBh cnNlci5HZXRFeHBDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQu bGluZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ ICsgICAgICAgIGlmIGN0eC5CYXNlSW5mby5WYXJTdG9yZUlkID09IDA6DQo+ID4NCj4gPiArICAg ICAgICAgICAgIyBzdXBwb3J0IERhdGUvVGltZSBxdWVzdGlvbg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIFZhcklkU3RyID0gY3R4LnZmclN0b3JhZ2VWYXJJZCgpLlZhcklkU3RyDQo+ID4NCj4gPiAr ICAgICAgICAgICAgUUlkLCBNYXNrLCBRVHlwZSA9IHNlbGYuVmZyUXVlc3Rpb25EQi5HZXRRdWVz dGlvbklkKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBOb25lLCBWYXJJZFN0ciwgRUZJX1FV RVNJT05fVFlQRS5RVUVTVElPTl9OT1JNQUwNCj4gPg0KPiA+ICsgICAgICAgICAgICApDQo+ID4N Cj4gPiArICAgICAgICAgICAgaWYgKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAoUUlkID09 IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBvciAo TWFzayA9PSAwKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBvciAoUVR5cGUgPT0gRUZJX1FV RVNJT05fVFlQRS5RVUVTVElPTl9OT1JNQUwpDQo+ID4NCj4gPiArICAgICAgICAgICAgKToNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQsDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBMaW5lLA0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgIkdldC9TZXQgb3Bjb2RlIGNhbid0IGdldCB0aGUgZW5vdWdoIHZhcnN0b3JlIGlu Zm9ybWF0aW9uIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIGlmIFFUeXBlID09IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fREFURToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclR5cGUgPSBFRklfSUZSX1RZUEVf REFURQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsaWYgUVR5cGUgPT0gRUZJX1FVRVNJT05fVFlQ RS5RVUVTVElPTl9USU1FOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8u VmFyVHlwZSA9IEVGSV9JRlJfVFlQRV9USU1FDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgTWFzayA9PSBEQVRFX1lFQVJfQklUTUFTSzoNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgY3R4LkJhc2VJbmZvLlZhck9mZnNldCA9IDANCj4gPg0KPiA+ICsgICAgICAgICAgICBl bGlmIE1hc2sgPT0gREFURV9EQVlfQklUTUFTSzoNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg Y3R4LkJhc2VJbmZvLlZhck9mZnNldCA9IDMNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIE1h c2sgPT0gVElNRV9IT1VSX0JJVE1BU0s6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5C YXNlSW5mby5WYXJPZmZzZXQgPSAwDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiBNYXNrID09 IFRJTUVfTUlOVVRFX0JJVE1BU0s6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5CYXNl SW5mby5WYXJPZmZzZXQgPSAxDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxpZiBNYXNrID09IFRJ TUVfU0VDT05EX0JJVE1BU0s6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5m by5WYXJPZmZzZXQgPSAyDQo+ID4NCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ID4NCj4gPiArICAgICAgICAgICAg ICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQsDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICAgICBMaW5lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg IkdldC9TZXQgb3Bjb2RlIGNhbid0IGdldCB0aGUgZW5vdWdoIHZhcnN0b3JlIGluZm9ybWF0aW9u IiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg ICAgICAgZWxzZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBWYXJUeXBlID0gRUZJX0lGUl9UWVBF X1VOREVGSU5FRA0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmIGN0eC5GTEFHUygpICE9IE5vbmU6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIFZhclR5cGUgPSBjdHgubnVtZXJpY1ZhclN0b3Jl VHlwZSgpLlZhclR5cGUNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiAoDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIGdWZnJEYXRhU3RvcmFnZS5HZXRWYXJTdG9yZVR5cGUo Y3R4LkJhc2VJbmZvLlZhclN0b3JlSWQpDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgID09IEVG SV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX05BTUUNCj4gPg0KPiA+ICsgICAg ICAgICAgICApIGFuZCAoVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfVU5ERUZJTkVEKToNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQsDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICBMaW5lLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgIkdldC9TZXQgb3Bjb2RlIGRvbid0IHN1cHBvcnQgbmFtZSBzdHJpbmciLA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAgICAgICAg aWYgVmFyVHlwZSAhPSBFRklfSUZSX1RZUEVfVU5ERUZJTkVEOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBjdHguQmFzZUluZm8uVmFyVHlwZSA9IFZhclR5cGUNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgU2l6ZSwgUmV0dXJuQ29kZSA9DQo+ID4gZ1ZmclZhckRhdGFUeXBlREIuR2V0RGF0 YVR5cGVTaXplQnlEYXRhVHlwZShjdHguQmFzZUluZm8uVmFyVHlwZSkNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgTGluZSwgIkdldC9TZXQg b3Bjb2RlIGNhbid0IGdldCB2YXINCj4gPiB0eXBlIHNpemUiKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBjdHguQmFzZUluZm8uVmFyVG90YWxTaXplID0gU2l6ZQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgICAgIFNpemUsIFJldHVybkNvZGUgPQ0KPiA+IGdWZnJWYXJEYXRhVHlw ZURCLkdldERhdGFUeXBlU2l6ZUJ5RGF0YVR5cGUoY3R4LkJhc2VJbmZvLlZhclR5cGUpDQo+ID4N Cj4gPiArICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgTGluZSwgIkdl dC9TZXQgb3Bjb2RlIGNhbid0IGdldCB2YXINCj4gPiB0eXBlIHNpemUiKQ0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAgICAgICAgIGlmIFNpemUgIT0gY3R4LkJhc2VJbmZvLlZhclRvdGFsU2l6 ZToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgc2VsZi5FcnJvckhhbmRsZXIoDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JU RUQsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICBMaW5lLA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgIkdldC9TZXQgb3Bjb2RlIGRvbid0IHN1cHBvcnQgZGF0YSBhcnJheSIs DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAg ICAgIEdPYmogPSBJZnJHZXQoTGluZSkNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYuU2F2ZU9wSGRy Q29uZChHT2JqLkdldEhlYWRlcigpLCAoY3R4LkV4cEluZm8uRXhwT3BDb3VudCA9PQ0KPiAwKSwN Cj4gPiBMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgR09iai5TZXRWYXJJbmZvKGN0eC5CYXNlSW5m bykNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBHT2JqDQo+ID4NCj4gPiArICAg ICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsg ICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0 IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyRXhwcmVzc2lvbkNv bnN0YW50Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJFeHByZXNzaW9uQ29uc3RhbnQoc2Vs ZiwgY3R4Og0KPiA+IFZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uQ29uc3RhbnRDb250ZXh0 KToNCj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5U cnVlU3ltYm9sKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBUT2JqID0gSWZyVHJ1 ZShMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuU2F2ZU9wSGRyQ29uZChUT2JqLkdl dEhlYWRlcigpLCAoY3R4LkV4cEluZm8uRXhwT3BDb3VudCA9PQ0KPiA+IDApLCBMaW5lKQ0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9UUlVFX09Q LCBUT2JqKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0g MQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LkZhbHNlU3ltYm9sKCkgIT0g Tm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBGT2JqID0gSWZyRmFsc2UoTGluZSkNCj4gPg0K PiA+ICsgICAgICAgICAgICBzZWxmLlNhdmVPcEhkckNvbmQoRk9iai5HZXRIZWFkZXIoKSwgKGN0 eC5FeHBJbmZvLkV4cE9wQ291bnQgPT0NCj4gPiAwKSwgTGluZSkNCj4gPg0KPiA+ICsgICAgICAg ICAgICBjdHguTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfRkFMU0VfT1AsIEZPYmopDQo+ID4N Cj4gPiArICAgICAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguT25lKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBPT2JqID0gSWZyT25lKExpbmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5T YXZlT3BIZHJDb25kKE9PYmouR2V0SGVhZGVyKCksIChjdHguRXhwSW5mby5FeHBPcENvdW50DQo+ ID09DQo+ID4gMCksIExpbmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBJZnJU cmVlTm9kZShFRklfSUZSX09ORV9PUCwgT09iaikNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHgu RXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlm IGN0eC5PbmVzKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBPT2JqID0gSWZyT25l cyhMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuU2F2ZU9wSGRyQ29uZChPT2JqLkdl dEhlYWRlcigpLCAoY3R4LkV4cEluZm8uRXhwT3BDb3VudA0KPiA9PQ0KPiA+IDApLCBMaW5lKQ0K PiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9PTkVT X09QLCBPT2JqKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQg Kz0gMQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4Llplcm8oKSAhPSBOb25l Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIFpPYmogPSBJZnJaZXJvKExpbmUpDQo+ID4NCj4gPiAr ICAgICAgICAgICAgc2VsZi5TYXZlT3BIZHJDb25kKFpPYmouR2V0SGVhZGVyKCksIChjdHguRXhw SW5mby5FeHBPcENvdW50ID09DQo+ID4gMCksIExpbmUpDQo+ID4NCj4gPiArICAgICAgICAgICAg Y3R4Lk5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX1pFUk9fT1AsIFpPYmopDQo+ID4NCj4gPiAr ICAgICAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICAgICBpZiBjdHguVW5kZWZpbmVkKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBVT2JqID0gSWZyVW5kZWZpbmVkKExpbmUpDQo+ID4NCj4gPiArICAgICAgICAgICAg c2VsZi5TYXZlT3BIZHJDb25kKFVPYmouR2V0SGVhZGVyKCksIChjdHguRXhwSW5mby5FeHBPcENv dW50DQo+ID09DQo+ID4gMCksIExpbmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGUg PSBJZnJUcmVlTm9kZShFRklfSUZSX1VOREVGSU5FRF9PUCwgVU9iaikNCj4gPg0KPiA+ICsgICAg ICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgICAgIGlmIGN0eC5WZXJzaW9uKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAg ICBWT2JqID0gSWZyVmVyc2lvbihMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuU2F2 ZU9wSGRyQ29uZChWT2JqLkdldEhlYWRlcigpLCAoY3R4LkV4cEluZm8uRXhwT3BDb3VudA0KPiA9 PQ0KPiA+IDApLCBMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gSWZyVHJl ZU5vZGUoRUZJX0lGUl9WRVJTSU9OX09QLCBWT2JqKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0 eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAg aWYgY3R4Lk51bWJlcigpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgVTY0T2JqID0g SWZyVWludDY0KExpbmUpDQo+ID4NCj4gPiArICAgICAgICAgICAgVTY0T2JqLlNldFZhbHVlKHNl bGYuVHJhbnNOdW0oY3R4Lk51bWJlcigpKSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBzZWxmLlNh dmVPcEhkckNvbmQoVTY0T2JqLkdldEhlYWRlcigpLCAoY3R4LkV4cEluZm8uRXhwT3BDb3VudA0K PiA+ID09IDApLCBMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gSWZyVHJl ZU5vZGUoRUZJX0lGUl9VSU5UNjRfT1AsIFU2NE9iaikNCj4gPg0KPiA+ICsgICAgICAgICAgICBj dHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAg IHJldHVybiBjdHguTm9kZQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFy c2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyRXhwcmVzc2lvblVuYXJ5T3Au DQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFZmckV4cHJlc3Npb25VbmFyeU9wKHNlbGYsIGN0eDoN Cj4gPiBWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVzc2lvblVuYXJ5T3BDb250ZXh0KToNCj4gPg0K PiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAgICBp ZiBjdHgubGVuZ3RoRXhwKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9k ZXMgPSBjdHgubGVuZ3RoRXhwKCkuTm9kZXMNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5iaXR3 aXNlbm90RXhwKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZXMgPSBj dHguYml0d2lzZW5vdEV4cCgpLk5vZGVzDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHgucXVlc3Rp b24yM3JlZkV4cCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGVzID0g Y3R4LnF1ZXN0aW9uMjNyZWZFeHAoKS5Ob2Rlcw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnN0 cmluZ3JlZjJFeHAoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlcyA9 IGN0eC5zdHJpbmdyZWYyRXhwKCkuTm9kZXMNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC50b2Jv b2xFeHAoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2RlcyA9IGN0eC50 b2Jvb2xFeHAoKS5Ob2Rlcw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnRvc3RyaW5nRXhwKCkg IT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZXMgPSBjdHgudG9zdHJpbmdF eHAoKS5Ob2Rlcw0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnVuaW50RXhwKCkgIT0gTm9uZToN Cj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZXMgPSBjdHgudW5pbnRFeHAoKS5Ob2Rlcw0K PiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LnRvdXBwZXJFeHAoKSAhPSBOb25lOg0KPiA+DQo+ID4g KyAgICAgICAgICAgIGN0eC5Ob2RlcyA9IGN0eC50b3VwcGVyRXhwKCkuTm9kZXMNCj4gPg0KPiA+ ICsgICAgICAgIGlmIGN0eC50b2x3ZXJFeHAoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgIGN0eC5Ob2RlcyA9IGN0eC50b2x3ZXJFeHAoKS5Ob2Rlcw0KPiA+DQo+ID4gKyAgICAgICAg aWYgY3R4LnNldEV4cCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGVz ID0gY3R4LnNldEV4cCgpLk5vZGVzDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGVz DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2Vk IGJ5IFZmclN5bnRheFBhcnNlciNsZW5ndGhFeHAuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdExl bmd0aEV4cChzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5MZW5ndGhFeHBDb250ZXh0KToNCj4g Pg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIExPYmogPSBJZnJMZW5n dGgoTGluZSkNCj4gPg0KPiA+ICsgICAgICAgIE5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX0xF TkdUSF9PUCwgTE9iaiwNCj4gPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShMT2JqLkdldEluZm8o KSkpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZXMuYXBwZW5kKE5vZGUpDQo+ID4NCj4gPiAr ICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsgICAgICAgIHJl dHVybiBjdHguTm9kZXMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2JpdHdpc2Vub3RFeHAuDQo+ID4NCj4g PiArICAgIGRlZiB2aXNpdEJpdHdpc2Vub3RFeHAoc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIu Qml0d2lzZW5vdEV4cENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFy dC5saW5lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ ID4gKyAgICAgICAgQldOT2JqID0gSWZyQml0V2lzZU5vdChMaW5lKQ0KPiA+DQo+ID4gKyAgICAg ICAgTm9kZSA9IElmclRyZWVOb2RlKA0KPiA+DQo+ID4gKyAgICAgICAgICAgIEVGSV9JRlJfQklU V0lTRV9OT1RfT1AsIEJXTk9iaiwNCj4gPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShCV05PYmou R2V0SW5mbygpKQ0KPiA+DQo+ID4gKyAgICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5v ZGVzLmFwcGVuZChOb2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3Vu dCArPSAxDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGVzDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBh cnNlciNxdWVzdGlvbjIzcmVmRXhwLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRRdWVzdGlvbjIz cmVmRXhwKHNlbGYsIGN0eDoNCj4gPiBWZnJTeW50YXhQYXJzZXIuUXVlc3Rpb24yM3JlZkV4cENv bnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+ID4NCj4g PiArICAgICAgICBUeXBlID0gMHgxDQo+ID4NCj4gPiArICAgICAgICBEZXZpY2VQYXRoID0gRUZJ X1NUUklOR19JRF9JTlZBTElEDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4o Y3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgaWYgY3R4LkRldmljZVBhdGgoKSAhPSBOb25lOg0KPiA+ DQo+ID4gKyAgICAgICAgICAgIFR5cGUgPSAweDINCj4gPg0KPiA+ICsgICAgICAgICAgICBEZXZp Y2VQYXRoID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKCkpDQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICAgICAgICBpZiBjdHguVXVpZCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAg VHlwZSA9IDB4Mw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgVHlwZSA9PSAweDE6 DQo+ID4NCj4gPiArICAgICAgICAgICAgUVIyT2JqID0gSWZyUXVlc3Rpb25SZWYyKExpbmUpDQo+ ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5TYXZlT3BIZHJDb25kKFFSMk9iai5HZXRIZWFkZXIo KSwgKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQNCj4gPiA9PSAwKSwgTGluZSkNCj4gPg0KPiA+ICsg ICAgICAgICAgICBOb2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9RVUVTVElPTl9SRUYyX09QLCBR UjJPYmopDQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGVzLmFwcGVuZChOb2RlKQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgaWYgVHlwZSA9PSAweDI6DQo+ID4NCj4gPiArICAg ICAgICAgICAgUVIzXzJPYmogPSBJZnJRdWVzdGlvblJlZjNfMihMaW5lKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIHNlbGYuU2F2ZU9wSGRyQ29uZChRUjNfMk9iai5HZXRIZWFkZXIoKSwNCj4gPiAo Y3R4LkV4cEluZm8uRXhwT3BDb3VudCA9PSAwKSwgTGluZSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICBRUjNfMk9iai5TZXREZXZpY2VQYXRoKERldmljZVBhdGgpDQo+ID4NCj4gPiArICAgICAgICAg ICAgTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfUVVFU1RJT05fUkVGM19PUCwgUVIzXzJPYmop DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGVzLmFwcGVuZChOb2RlKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgaWYgVHlwZSA9PSAweDM6DQo+ID4NCj4gPiArICAgICAgICAg ICAgUVIzXzNPYmogPSBJZnJRdWVzdGlvblJlZjNfMyhMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgIHNlbGYuU2F2ZU9wSGRyQ29uZChRUjNfM09iai5HZXRIZWFkZXIoKSwNCj4gPiAoY3R4LkV4 cEluZm8uRXhwT3BDb3VudCA9PSAwKSwgTGluZSkNCj4gPg0KPiA+ICsgICAgICAgICAgICBRUjNf M09iai5TZXREZXZpY2VQYXRoKERldmljZVBhdGgpDQo+ID4NCj4gPiArICAgICAgICAgICAgUVIz XzNPYmouU2V0R3VpZChjdHguZ3VpZERlZmluaXRpb24oKS5HdWlkKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgIE5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX1FVRVNUSU9OX1JFRjNfT1AsIFFSM18z T2JqKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2Rlcy5hcHBlbmQoTm9kZSkNCj4gPg0K PiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2Rlcw0KPiA+DQo+ID4gKw0K PiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQ YXJzZXIjc3RyaW5ncmVmMkV4cC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0U3RyaW5ncmVmMkV4 cChzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5TdHJpbmdyZWYyRXhwQ29udGV4dCk6DQo+ID4N Cj4gPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAgICBTUjJPYmogPSBJZnJTdHJp bmdSZWYyKExpbmUpDQo+ID4NCj4gPiArICAgICAgICBOb2RlID0gSWZyVHJlZU5vZGUoDQo+ID4N Cj4gPiArICAgICAgICAgICAgRUZJX0lGUl9TVFJJTkdfUkVGMl9PUCwgU1IyT2JqLA0KPiA+IGdG b3JtUGtnLlN0cnVjdFRvU3RyZWFtKFNSMk9iai5HZXRJbmZvKCkpDQo+ID4NCj4gPiArICAgICAg ICApDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZXMuYXBwZW5kKE5vZGUpDQo+ID4NCj4gPiAr ICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ICsgICAgICAgIHJl dHVybiBjdHguTm9kZXMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3RvYm9vbEV4cC4NCj4gPg0KPiA+ICsg ICAgZGVmIHZpc2l0VG9ib29sRXhwKHNlbGYsIGN0eDogVmZyU3ludGF4UGFyc2VyLlRvYm9vbEV4 cENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+ID4N Cj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAg VEJPYmogPSBJZnJUb0Jvb2xlYW4oTGluZSkNCj4gPg0KPiA+ICsgICAgICAgIE5vZGUgPSBJZnJU cmVlTm9kZShFRklfSUZSX1RPX0JPT0xFQU5fT1AsIFRCT2JqLA0KPiA+IGdGb3JtUGtnLlN0cnVj dFRvU3RyZWFtKFRCT2JqLkdldEluZm8oKSkpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZXMu YXBwZW5kKE5vZGUpDQo+ID4NCj4gPiArICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9 IDENCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguTm9kZXMNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2Vy I3Rvc3RyaW5nRXhwLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRUb3N0cmluZ0V4cChzZWxmLCBj dHg6IFZmclN5bnRheFBhcnNlci5Ub3N0cmluZ0V4cENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAg ICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hp bGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgVFNPYmogPSBJZnJUb1N0cmluZyhMaW5lKQ0K PiA+DQo+ID4gKyAgICAgICAgRm10ID0gc2VsZi5UcmFuc051bShjdHguTnVtYmVyKCkpDQo+ID4N Cj4gPiArICAgICAgICBUU09iai5TZXRGb3JtYXQoRm10KQ0KPiA+DQo+ID4gKyAgICAgICAgTm9k ZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfVE9fU1RSSU5HX09QLCBUU09iaiwNCj4gPiBnRm9ybVBr Zy5TdHJ1Y3RUb1N0cmVhbShUU09iai5HZXRJbmZvKCkpKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4 Lk5vZGVzLmFwcGVuZChOb2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BD b3VudCArPSAxDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGVzDQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRh eFBhcnNlciN1bmludEV4cC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VW5pbnRFeHAoc2VsZiwg Y3R4OiBWZnJTeW50YXhQYXJzZXIuVW5pbnRFeHBDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAg IExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxk cmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIFRVT2JqID0gSWZyVG9VaW50KExpbmUpDQo+ID4N Cj4gPiArICAgICAgICBOb2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9UT19VSU5UX09QLCBUVU9i aiwNCj4gPiBnRm9ybVBrZy5TdHJ1Y3RUb1N0cmVhbShUVU9iai5HZXRJbmZvKCkpKQ0KPiA+DQo+ ID4gKyAgICAgICAgY3R4Lk5vZGVzLmFwcGVuZChOb2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4 LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5v ZGVzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1 Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN0b3VwcGVyRXhwLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlz aXRUb3VwcGVyRXhwKHNlbGYsIGN0eDogVmZyU3ludGF4UGFyc2VyLlRvdXBwZXJFeHBDb250ZXh0 KToNCj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+DQo+ID4gKyAg ICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIFRVT2JqID0g SWZyVG9VcHBlcihMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgTm9kZSA9IElmclRyZWVOb2RlKEVG SV9JRlJfVE9fVVBQRVJfT1AsIFRVT2JqLA0KPiA+IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKFRV T2JqLkdldEluZm8oKSkpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZXMuYXBwZW5kKE5vZGUp DQo+ID4NCj4gPiArICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gPg0KPiA+ ICsgICAgICAgIHJldHVybiBjdHguTm9kZXMNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgIyBW aXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3RvbHdlckV4cC4N Cj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VG9sd2VyRXhwKHNlbGYsIGN0eDogVmZyU3ludGF4UGFy c2VyLlRvbHdlckV4cENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFy dC5saW5lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ ID4gKyAgICAgICAgVExPYmogPSBJZnJUb0xvd2VyKExpbmUpDQo+ID4NCj4gPiArICAgICAgICBO b2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9UT19MT1dFUl9PUCwgVExPYmosDQo+ID4gZ0Zvcm1Q a2cuU3RydWN0VG9TdHJlYW0oVExPYmouR2V0SW5mbygpKSkNCj4gPg0KPiA+ICsgICAgICAgIGN0 eC5Ob2Rlcy5hcHBlbmQoTm9kZSkNCj4gPg0KPiA+ICsgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9w Q291bnQgKz0gMQ0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2Rlcw0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50 YXhQYXJzZXIjc2V0RXhwLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRTZXRFeHAoc2VsZiwgY3R4 OiBWZnJTeW50YXhQYXJzZXIuU2V0RXhwQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBMaW5l ID0gY3R4LnN0YXJ0LmxpbmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihj dHgpDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguQmFzZUluZm8uVmFyU3RvcmVJZCA9PSAwOg0K PiA+DQo+ID4gKyAgICAgICAgICAgICMgc3VwcG9ydCBEYXRlL1RpbWUgcXVlc3Rpb24NCj4gPg0K PiA+ICsgICAgICAgICAgICBWYXJJZFN0ciA9IGN0eC52ZnJTdG9yYWdlVmFySWQoKS5WYXJJZFN0 cg0KPiA+DQo+ID4gKyAgICAgICAgICAgIFFJZCwgTWFzaywgUVR5cGUgPSBzZWxmLlZmclF1ZXN0 aW9uREIuR2V0UXVlc3Rpb25JZCgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgTm9uZSwgVmFy SWRTdHIsIEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9STUFMDQo+ID4NCj4gPiArICAgICAg ICAgICAgKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGlmICgNCj4gPg0KPiA+ICsgICAgICAgICAg ICAgICAgKFFJZCA9PSBFRklfUVVFU1RJT05fSURfSU5WQUxJRCkNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgb3IgKE1hc2sgPT0gMCkNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgb3IgKFFU eXBlID09IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9STUFMKQ0KPiA+DQo+ID4gKyAgICAg ICAgICAgICk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VO U1VQUE9SVEVELA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgTGluZSwNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICJHZXQvU2V0IG9wY29kZSBjYW4ndCBnZXQgdGhlIGVub3Vn aCB2YXJzdG9yZSBpbmZvcm1hdGlvbiIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICkNCj4g Pg0KPiA+ICsgICAgICAgICAgICBpZiBRVHlwZSA9PSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9O X0RBVEU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5mby5WYXJUeXBlID0g RUZJX0lGUl9UWVBFX0RBVEUNCj4gPg0KPiA+ICsgICAgICAgICAgICBlbGlmIFFUeXBlID09IEVG SV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fVElNRToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAg Y3R4LkJhc2VJbmZvLlZhclR5cGUgPSBFRklfSUZSX1RZUEVfVElNRQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgICAgIGlmIE1hc2sgPT0gREFURV9ZRUFSX0JJVE1BU0s6DQo+ID4NCj4g PiArICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5mby5WYXJPZmZzZXQgPSAwDQo+ID4NCj4gPiAr ICAgICAgICAgICAgZWxpZiBNYXNrID09IERBVEVfREFZX0JJVE1BU0s6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIGN0eC5CYXNlSW5mby5WYXJPZmZzZXQgPSAzDQo+ID4NCj4gPiArICAgICAg ICAgICAgZWxpZiBNYXNrID09IFRJTUVfSE9VUl9CSVRNQVNLOg0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICBjdHguQmFzZUluZm8uVmFyT2Zmc2V0ID0gMA0KPiA+DQo+ID4gKyAgICAgICAgICAg IGVsaWYgTWFzayA9PSBUSU1FX01JTlVURV9CSVRNQVNLOg0KPiA+DQo+ID4gKyAgICAgICAgICAg ICAgICBjdHguQmFzZUluZm8uVmFyT2Zmc2V0ID0gMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVs aWYgTWFzayA9PSBUSU1FX1NFQ09ORF9CSVRNQVNLOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAg ICBjdHguQmFzZUluZm8uVmFyT2Zmc2V0ID0gMg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6 DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVE LA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgTGluZSwNCj4gPg0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICJHZXQvU2V0IG9wY29kZSBjYW4ndCBnZXQgdGhlIGVub3VnaCB2YXJzdG9y ZSBpbmZvcm1hdGlvbiIsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAgVmFyVHlwZSA9 IEVGSV9JRlJfVFlQRV9VTkRFRklORUQNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBjdHguRkxB R1MoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBWYXJUeXBlID0gY3R4Lm51 bWVyaWNWYXJTdG9yZVR5cGUoKS5WYXJUeXBlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICAg ICAgICAgaWYgKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBnVmZyRGF0YVN0b3JhZ2UuR2V0 VmFyU3RvcmVUeXBlKGN0eC5CYXNlSW5mby5WYXJTdG9yZUlkKQ0KPiA+DQo+ID4gKyAgICAgICAg ICAgICAgICA9PSBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9OQU1FDQo+ ID4NCj4gPiArICAgICAgICAgICAgKSBhbmQgKFZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX1VOREVG SU5FRCk6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKA0KPiA+ DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOU1VQ UE9SVEVELA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgTGluZSwNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICJHZXQvU2V0IG9wY29kZSBkb24ndCBzdXBwb3J0IG5hbWUgc3Ry aW5nIiwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICAgICAgICAgIGlmIFZhclR5cGUgIT0gRUZJX0lGUl9UWVBFX1VOREVGSU5FRDoNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclR5cGUgPSBWYXJUeXBlDQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgIFNpemUsIFJldHVybkNvZGUgPQ0KPiA+IGdWZnJWYXJEYXRh VHlwZURCLkdldERhdGFUeXBlU2l6ZUJ5RGF0YVR5cGUoY3R4LkJhc2VJbmZvLlZhclR5cGUpDQo+ ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIExp bmUsICJHZXQvU2V0IG9wY29kZSBjYW4ndCBnZXQgdmFyDQo+ID4gdHlwZSBzaXplIikNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclRvdGFsU2l6ZSA9IFNpemUNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBTaXplLCBSZXR1cm5Db2RlID0NCj4gPiBn VmZyVmFyRGF0YVR5cGVEQi5HZXREYXRhVHlwZVNpemVCeURhdGFUeXBlKGN0eC5CYXNlSW5mby5W YXJUeXBlKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5kbGVyKFJldHVybkNv ZGUsIExpbmUsICJHZXQvU2V0IG9wY29kZSBjYW4ndCBnZXQgdmFyDQo+ID4gdHlwZSBzaXplIikN Cj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgICAgICBpZiBTaXplICE9IGN0eC5CYXNlSW5m by5WYXJUb3RhbFNpemU6DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuRXJyb3JIYW5k bGVyKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX1VOU1VQUE9SVEVELA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgTGluZSwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICJHZXQvU2V0IG9wY29kZSBkb24ndCBzdXBwb3J0 IGRhdGEgYXJyYXkiLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICApDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICAgICAgICBUU09iaiA9IElmclNldChMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAg c2VsZi5TYXZlT3BIZHJDb25kKFRTT2JqLkdldEhlYWRlcigpLCAoY3R4LkV4cEluZm8uRXhwT3BD b3VudCA9PQ0KPiA+IDApLCBMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgVFNPYmouU2V0VmFySW5m byhjdHguQmFzZUluZm8pDQo+ID4NCj4gPiArICAgICAgICBOb2RlID0gSWZyVHJlZU5vZGUoRUZJ X0lGUl9TRVRfT1AsIFRTT2JqKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGVzLmFwcGVuZChO b2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQo+ID4N Cj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGVzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2ZnJF eHByZXNzaW9uVGVybmFyeU9wLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJFeHByZXNzaW9u VGVybmFyeU9wKHNlbGYsIGN0eDoNCj4gPiBWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVzc2lvblRl cm5hcnlPcENvbnRleHQpOg0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0 eCkNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5jb25kaXRpb25hbEV4cCgpICE9IE5vbmU6DQo+ ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGVzID0gY3R4LmNvbmRpdGlvbmFsRXhwKCkuTm9k ZXMNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5maW5kRXhwKCkgIT0gTm9uZToNCj4gPg0KPiA+ ICsgICAgICAgICAgICBjdHguTm9kZXMgPSBjdHguZmluZEV4cCgpLk5vZGVzDQo+ID4NCj4gPiAr ICAgICAgICBpZiBjdHgubWlkRXhwKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBj dHguTm9kZXMgPSBjdHgubWlkRXhwKCkuTm9kZXMNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC50 b2tlbkV4cCgpICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgY3R4Lk5vZGVzID0gY3R4 LnRva2VuRXhwKCkuTm9kZXMNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0eC5zcGFuRXhwKCkgIT0g Tm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguTm9kZXMgPSBjdHguc3BhbkV4cCgpLk5v ZGVzDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGVzDQo+ID4NCj4gPiArDQo+ID4N Cj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNl ciNjb25kaXRpb25hbEV4cC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0Q29uZGl0aW9uYWxFeHAo c2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuQ29uZGl0aW9uYWxFeHBDb250ZXh0KToNCj4gPg0K PiA+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+DQo+ID4gKyAgICAgICAgc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIENPYmogPSBJZnJDb25kaXRp b25hbChMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJf Q09ORElUSU9OQUxfT1AsIENPYmosDQo+ID4gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oQ09iai5H ZXRJbmZvKCkpKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGVzLmFwcGVuZChOb2RlKQ0KPiA+ DQo+ID4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQo+ID4NCj4gPiArICAg ICAgICByZXR1cm4gY3R4Lk5vZGVzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQg YSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNmaW5kRXhwLg0KPiA+DQo+ ID4gKyAgICBkZWYgdmlzaXRGaW5kRXhwKHNlbGYsIGN0eDogVmZyU3ludGF4UGFyc2VyLkZpbmRF eHBDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+ DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAg IEZPYmogPSBJZnJGaW5kKExpbmUpDQo+ID4NCj4gPiArICAgICAgICBmb3IgaSBpbiByYW5nZSgw LCBsZW4oY3R4LmZpbmRGb3JtYXQoKSkpOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIEZvcm1hdCA9 IGN0eC5maW5kRm9ybWF0KGkpLkZvcm1hdA0KPiA+DQo+ID4gKyAgICAgICAgICAgIEZPYmouU2V0 Rm9ybWF0KEZvcm1hdCkNCj4gPg0KPiA+ICsgICAgICAgIE5vZGUgPSBJZnJUcmVlTm9kZShFRklf SUZSX0ZJTkRfT1AsIEZPYmosDQo+ID4gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oRk9iai5HZXRJ bmZvKCkpKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4Lk5vZGVzLmFwcGVuZChOb2RlKQ0KPiA+DQo+ ID4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQo+ID4NCj4gPiArICAgICAg ICByZXR1cm4gY3R4Lk5vZGVzDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNmaW5kRm9ybWF0Lg0KPiA+DQo+ ID4gKyAgICBkZWYgdmlzaXRGaW5kRm9ybWF0KHNlbGYsIGN0eDogVmZyU3ludGF4UGFyc2VyLkZp bmRGb3JtYXRDb250ZXh0KToNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihj dHgpDQo+ID4NCj4gPiArICAgICAgICBpZiBjdHguU2Vuc2l0aXZlKCkgIT0gTm9uZToNCj4gPg0K PiA+ICsgICAgICAgICAgICBjdHguRm9ybWF0ID0gMHgwMA0KPiA+DQo+ID4gKyAgICAgICAgZWxp ZiBjdHguSW5zZW5zaXRpdmUoKSAhPSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5G b3JtYXQgPSAweDAxDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4LkZvcm1hdA0KPiA+DQo+ ID4gKw0KPiA+DQo+ID4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJT eW50YXhQYXJzZXIjbWlkRXhwLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRNaWRFeHAoc2VsZiwg Y3R4OiBWZnJTeW50YXhQYXJzZXIuTWlkRXhwQ29udGV4dCk6DQo+ID4NCj4gPiArICAgICAgICBM aW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gPg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJl bihjdHgpDQo+ID4NCj4gPiArICAgICAgICBNT2JqID0gSWZyTWlkKExpbmUpDQo+ID4NCj4gPiAr ICAgICAgICBOb2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9NSURfT1AsIE1PYmosDQo+ID4gZ0Zv cm1Qa2cuU3RydWN0VG9TdHJlYW0oTU9iai5HZXRJbmZvKCkpKQ0KPiA+DQo+ID4gKyAgICAgICAg Y3R4Lk5vZGVzLmFwcGVuZChOb2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhw T3BDb3VudCArPSAxDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGVzDQo+ID4NCj4g PiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5 bnRheFBhcnNlciN0b2tlbkV4cC4NCj4gPg0KPiA+ICsgICAgZGVmIHZpc2l0VG9rZW5FeHAoc2Vs ZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuVG9rZW5FeHBDb250ZXh0KToNCj4gPg0KPiA+ICsgICAg ICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCj4gPg0KPiA+ICsgICAgICAgIFRPYmogPSBJZnJUb2tlbihMaW5lKQ0KPiA+ DQo+ID4gKyAgICAgICAgTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfVE9LRU5fT1AsIFRPYmos DQo+ID4gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oVE9iai5HZXRJbmZvKCkpKQ0KPiA+DQo+ID4g KyAgICAgICAgY3R4Lk5vZGVzLmFwcGVuZChOb2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkV4 cEluZm8uRXhwT3BDb3VudCArPSAxDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGVz DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2Vk IGJ5IFZmclN5bnRheFBhcnNlciNzcGFuRXhwLg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRTcGFu RXhwKHNlbGYsIGN0eDogVmZyU3ludGF4UGFyc2VyLlNwYW5FeHBDb250ZXh0KToNCj4gPg0KPiA+ ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiA+DQo+ID4gKyAgICAgICAgRmxhZ3Mg PSAwDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4g KyAgICAgICAgZm9yIEZsYWdzQ3R4IGluIGN0eC5zcGFuRmxhZ3MoKToNCj4gPg0KPiA+ICsgICAg ICAgICAgICBGbGFncyB8PSBGbGFnc0N0eC5GbGFnDQo+ID4NCj4gPiArICAgICAgICBTT2JqID0g SWZyU3BhbihMaW5lKQ0KPiA+DQo+ID4gKyAgICAgICAgU09iai5TZXRGbGFncyhGbGFncykNCj4g Pg0KPiA+ICsgICAgICAgIE5vZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX1NQQU5fT1AsIFNPYmos DQo+ID4gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oU09iai5HZXRJbmZvKCkpKQ0KPiA+DQo+ID4g KyAgICAgICAgY3R4Lk5vZGVzLmFwcGVuZChOb2RlKQ0KPiA+DQo+ID4gKyAgICAgICAgY3R4LkV4 cEluZm8uRXhwT3BDb3VudCArPSAxDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGVz DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2Vk IGJ5IFZmclN5bnRheFBhcnNlciNzcGFuRmxhZ3MuDQo+ID4NCj4gPiArICAgIGRlZiB2aXNpdFNw YW5GbGFncyhzZWxmLCBjdHg6IFZmclN5bnRheFBhcnNlci5TcGFuRmxhZ3NDb250ZXh0KToNCj4g Pg0KPiA+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ID4NCj4gPiArICAgICAg ICBpZiBjdHguTnVtYmVyKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguRmxh ZyA9IHNlbGYuVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KPiA+DQo+ID4gKyAgICAgICAgZWxpZiBj dHguTGFzdE5vbk1hdGNoKCkgIT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAgICAgICBjdHguRmxh ZyA9IDB4MDANCj4gPg0KPiA+ICsgICAgICAgIGVsaWYgY3R4LkZpcnN0Tm9uTWF0Y2goKSAhPSBO b25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5GbGFnID0gMHgwMQ0KPiA+DQo+ID4gKyAg ICAgICAgcmV0dXJuIGN0eC5GbGFnDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgICMgVmlzaXQg YSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJFeHByZXNzaW9uTWFw Lg0KPiA+DQo+ID4gKyAgICBkZWYgdmlzaXRWZnJFeHByZXNzaW9uTWFwKHNlbGYsIGN0eDoNCj4g PiBWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVzc2lvbk1hcENvbnRleHQpOg0KPiA+DQo+ID4gKyAg ICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+ID4NCj4gPiArICAgICAgICBzZWxmLnZpc2l0 Q2hpbGRyZW4oY3R4KQ0KPiA+DQo+ID4gKyAgICAgICAgTU9iaiA9IElmck1hcChMaW5lKQ0KPiA+ DQo+ID4gKyAgICAgICAgTm9kZSA9IElmclRyZWVOb2RlKEVGSV9JRlJfTUFQX09QLCBNT2JqLA0K PiA+IGdGb3JtUGtnLlN0cnVjdFRvU3RyZWFtKE1PYmouR2V0SW5mbygpKSkNCj4gPg0KPiA+ICsg ICAgICAgIGN0eC5Ob2Rlcy5hcHBlbmQoTm9kZSkNCj4gPg0KPiA+ICsgICAgICAgIGZvciBOb2Rl IGluIGN0eC5Ob2RlLkNoaWxkOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIGN0eC5Ob2Rlcy5hcHBl bmQoTm9kZSkNCj4gPg0KPiA+ICsgICAgICAgIEVPYmogPSBJZnJFbmQoKQ0KPiA+DQo+ID4gKyAg ICAgICAgRU9iai5TZXRMaW5lTm8oY3R4LnN0b3AubGluZSkNCj4gPg0KPiA+ICsgICAgICAgIE5v ZGUgPSBJZnJUcmVlTm9kZShFRklfSUZSX0VORF9PUCwgRU9iaiwNCj4gPiBnRm9ybVBrZy5TdHJ1 Y3RUb1N0cmVhbShFT2JqLkdldEluZm8oKSkpDQo+ID4NCj4gPiArICAgICAgICBjdHguTm9kZXMu YXBwZW5kKE5vZGUpDQo+ID4NCj4gPiArICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9 IDENCj4gPg0KPiA+ICsgICAgICAgIHJldHVybiBjdHguTm9kZXMNCj4gPg0KPiA+ICsNCj4gPg0K PiA+ICsgICAgZGVmIEdldFRleHQoc2VsZiwgY3R4KToNCj4gPg0KPiA+ICsgICAgICAgIGlmIGN0 eCA9PSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBOb25lDQo+ID4NCj4gPiAr ICAgICAgICBlbHNlOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBjdHgudGV4dA0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgVHJhbnNJZChzZWxmLCBTdHJpbmdJZGVudGlmaWVy VG9rZW4sIERlZmF1bHRWYWx1ZT1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgIGlmIFN0cmluZ0lk ZW50aWZpZXJUb2tlbiA9PSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybiBEZWZh dWx0VmFsdWUNCj4gPg0KPiA+ICsgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAgICAgICAgICAg cmV0dXJuIHN0cihTdHJpbmdJZGVudGlmaWVyVG9rZW4pDQo+ID4NCj4gPiArDQo+ID4NCj4gPiAr ICAgIGRlZiBUcmFuc051bShzZWxmLCBOdW1iZXJUb2tlbiwgRGVmYXVsdFZhbHVlPTApOg0KPiA+ DQo+ID4gKyAgICAgICAgaWYgTnVtYmVyVG9rZW4gPT0gTm9uZToNCj4gPg0KPiA+ICsgICAgICAg ICAgICByZXR1cm4gRGVmYXVsdFZhbHVlDQo+ID4NCj4gPiArICAgICAgICBlbHNlOg0KPiA+DQo+ ID4gKyAgICAgICAgICAgIFN0clRva2VuID0gc3RyKE51bWJlclRva2VuKQ0KPiA+DQo+ID4gKyAg ICAgICAgICAgIGlmIFN0clRva2VuLnN0YXJ0c3dpdGgoIjB4Iikgb3IgU3RyVG9rZW4uc3RhcnRz d2l0aCgiMFgiKToNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgTnVtYmVyVG9rZW4gPSBpbnQo U3RyVG9rZW4sIDE2KQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGVsc2U6DQo+ID4NCj4gPiArICAg ICAgICAgICAgICAgIE51bWJlclRva2VuID0gaW50KFN0clRva2VuKQ0KPiA+DQo+ID4gKyAgICAg ICAgcmV0dXJuIE51bWJlclRva2VuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBBc3Np Z25RdWVzdGlvbktleShzZWxmLCBPcE9iaiwgS2V5KToNCj4gPg0KPiA+ICsgICAgICAgIGlmIEtl eSA9PSBOb25lOg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHJldHVybg0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgICAgaWYgT3BPYmouR2V0UUZsYWdzKCkgJiBFRklfSUZSX0ZMQUdfQ0FMTEJB Q0s6DQo+ID4NCj4gPiArICAgICAgICAgICAgIyBpZiB0aGUgcXVlc3Rpb24gaXMgbm90IENBTExC QUNLIGlnbm9yZSB0aGUga2V5Lg0KPiA+DQo+ID4gKyAgICAgICAgICAgIHNlbGYuVmZyUXVlc3Rp b25EQi5VcGRhdGVRdWVzdGlvbklkKE9wT2JqLkdldFF1ZXN0aW9uSWQoKSwgS2V5LA0KPiA+IGdG b3JtUGtnKQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIE9wT2JqLlNldFF1ZXN0aW9uSWQoS2V5KQ0K PiA+DQo+ID4gKyAgICAgICAgcmV0dXJuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBF eHRyYWN0T3JpZ2luYWxUZXh0KHNlbGYsIGN0eCk6DQo+ID4NCj4gPiArICAgICAgICBTb3VyY2Ug PSBjdHguc3RhcnQuZ2V0VG9rZW5Tb3VyY2UoKQ0KPiA+DQo+ID4gKyAgICAgICAgSW5wdXRTdHJl YW0gPSBTb3VyY2UuaW5wdXRTdHJlYW0NCj4gPg0KPiA+ICsgICAgICAgIHN0YXJ0LCBzdG9wID0g Y3R4LnN0YXJ0LnN0YXJ0LCBjdHguc3RvcC5zdG9wDQo+ID4NCj4gPiArICAgICAgICBUZXh0ID0g SW5wdXRTdHJlYW0uZ2V0VGV4dChzdGFydCwgc3RvcCkNCj4gPg0KPiA+ICsgICAgICAgIHJldHVy biBUZXh0LnJlcGxhY2UoIlxyIiwgIiIpLnJlcGxhY2UoIlxuIiwgIiIpLnJlcGxhY2UoIiAgIiwg IiAiKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgQ2hlY2tEdXBsaWNhdGVEZWZhdWx0 VmFsdWUoc2VsZiwgRGVmYXVsdElkLCBMaW5lLCBUb2tlblZhbHVlKToNCj4gPg0KPiA+ICsgICAg ICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihzZWxmLlVzZWREZWZhdWx0QXJyYXkpKToNCj4gPg0K PiA+ICsgICAgICAgICAgICBpZiBzZWxmLlVzZWREZWZhdWx0QXJyYXlbaV0gPT0gRGVmYXVsdElk Og0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICBnVmZyRXJyb3JIYW5kbGUuSGFuZGxlV2Fybmlu ZygNCj4gPg0KPiA+ICsNCj4gPiBFRklfVkZSX1dBUk5JTkdfQ09ERS5WRlJfV0FSTklOR19ERUZB VUxUX1ZBTFVFX1JFREVGSU5FRCwNCj4gTGluZSwNCj4gPiBUb2tlblZhbHVlDQo+ID4NCj4gPiAr ICAgICAgICAgICAgICAgICkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICAgICAgIGlmIGxlbihz ZWxmLlVzZWREZWZhdWx0QXJyYXkpID49IEVGSV9JRlJfTUFYX0RFRkFVTFRfVFlQRSAtIDE6DQo+ ID4NCj4gPiArDQo+ID4gZ1ZmckVycm9ySGFuZGxlLkhhbmRsZUVycm9yKFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9GQVRBTF9FUlJPUiwNCj4gPiBMaW5lLCBUb2tlblZhbHVlKQ0KPiA+DQo+ID4g Kw0KPiA+DQo+ID4gKyAgICAgICAgc2VsZi5Vc2VkRGVmYXVsdEFycmF5LmFwcGVuZChEZWZhdWx0 SWQpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBFcnJvckhhbmRsZXIoc2VsZiwgUmV0 dXJuQ29kZSwgTGluZU51bSwgVG9rZW5WYWx1ZT1Ob25lKToNCj4gPg0KPiA+ICsgICAgICAgIHNl bGYuUGFyc2VyU3RhdHVzICs9IGdWZnJFcnJvckhhbmRsZS5IYW5kbGVFcnJvcihSZXR1cm5Db2Rl LA0KPiA+IExpbmVOdW0sIFRva2VuVmFsdWUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRl ZiBDb21wYXJlRXJyb3JIYW5kbGVyKA0KPiA+DQo+ID4gKyAgICAgICAgc2VsZiwgUmV0dXJuQ29k ZSwgRXhwZWN0ZWRDb2RlLCBMaW5lTnVtLCBUb2tlblZhbHVlPU5vbmUsDQo+ID4gRXJyb3JNc2c9 Tm9uZQ0KPiA+DQo+ID4gKyAgICApOg0KPiA+DQo+ID4gKyAgICAgICAgaWYgUmV0dXJuQ29kZSAh PSBFeHBlY3RlZENvZGU6DQo+ID4NCj4gPiArICAgICAgICAgICAgc2VsZi5QYXJzZXJTdGF0dXMg Kz0gMQ0KPiA+DQo+ID4gKyAgICAgICAgICAgIGdWZnJFcnJvckhhbmRsZS5QcmludE1zZyhMaW5l TnVtLCAiRXJyb3IiLCBFcnJvck1zZywgVG9rZW5WYWx1ZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgZGVmIEluc2VydENoaWxkKHNlbGYsIFBhcmVudE5vZGU6IElmclRyZWVOb2RlLCBDaGls ZEN0eCk6DQo+ID4NCj4gPiArICAgICAgICBpZiBDaGlsZEN0eCAhPSBOb25lIGFuZCBDaGlsZEN0 eC5Ob2RlICE9IE5vbmU6DQo+ID4NCj4gPiArICAgICAgICAgICAgUGFyZW50Tm9kZS5pbnNlcnRD aGlsZChDaGlsZEN0eC5Ob2RlKQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWYgSW5zZXJ0 RW5kTm9kZShzZWxmLCBQYXJlbnROb2RlLCBMaW5lKToNCj4gPg0KPiA+ICsgICAgICAgIEVPYmog PSBJZnJFbmQoKQ0KPiA+DQo+ID4gKyAgICAgICAgRU9iai5TZXRMaW5lTm8oTGluZSkNCj4gPg0K PiA+ICsgICAgICAgIEVOb2RlID0gSWZyVHJlZU5vZGUoRUZJX0lGUl9FTkRfT1AsIEVPYmosDQo+ ID4gZ0Zvcm1Qa2cuU3RydWN0VG9TdHJlYW0oRU9iai5HZXRJbmZvKCkpKQ0KPiA+DQo+ID4gKyAg ICAgICAgUGFyZW50Tm9kZS5pbnNlcnRDaGlsZChFTm9kZSkNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgICAgZGVmIEdldEN1ckFycmF5U2l6ZShzZWxmKToNCj4gPg0KPiA+ICsgICAgICAgIFNpemUg PSAxDQo+ID4NCj4gPiArICAgICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJUeXBlID09 IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIFNpemUgPSAx DQo+ID4NCj4gPiArICAgICAgICBpZiBzZWxmLkN1cnJRZXN0VmFySW5mby5WYXJUeXBlID09IEVG SV9JRlJfVFlQRV9OVU1fU0laRV8xNjoNCj4gPg0KPiA+ICsgICAgICAgICAgICBTaXplID0gMg0K PiA+DQo+ID4gKyAgICAgICAgaWYgc2VsZi5DdXJyUWVzdFZhckluZm8uVmFyVHlwZSA9PSBFRklf SUZSX1RZUEVfTlVNX1NJWkVfMzI6DQo+ID4NCj4gPiArICAgICAgICAgICAgU2l6ZSA9IDQNCj4g Pg0KPiA+ICsgICAgICAgIGlmIHNlbGYuQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUgPT0gRUZJX0lG Ul9UWVBFX05VTV9TSVpFXzY0Og0KPiA+DQo+ID4gKyAgICAgICAgICAgIFNpemUgPSA4DQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICAgICAgICByZXR1cm4gaW50KHNlbGYuQ3VyclFlc3RWYXJJbmZv LlZhclRvdGFsU2l6ZSAvIFNpemUpDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGRlZiBHZXRR dWVzdGlvbkRCKHNlbGYpOg0KPiA+DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuVmZyUXVlc3Rp b25EQg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gK2RlbCBWZnJTeW50YXhQYXJz ZXINCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21w aWxlci9fX2luaXRfXy5weQ0KPiA+IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGls ZXIvX19pbml0X18ucHkNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAw MDAwMDAuLjcyZDNhNDdiYjcNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvQmFzZVRvb2xz L1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvX19pbml0X18ucHkNCj4gPiBAQCAtMCwwICsxIEBA DQo+ID4gK19fYWxsX18gPSBbIlZmckNvbXBpbGVyIl0NCj4gPg0KPiA+IC0tDQo+ID4gMi4zOS4x LndpbmRvd3MuMQ0KPiANCj4gDQo+IA0KPiANCj4gDQoNCg0KCi09LT0tPS09LT0tPS09LT0tPS09 LT0tCkdyb3Vwcy5pbyBMaW5rczogWW91IHJlY2VpdmUgYWxsIG1lc3NhZ2VzIHNlbnQgdG8gdGhp cyBncm91cC4KVmlldy9SZXBseSBPbmxpbmUgKCMxMTA5MzUpOiBodHRwczovL2VkazIuZ3JvdXBz LmlvL2cvZGV2ZWwvbWVzc2FnZS8xMTA5MzUKTXV0ZSBUaGlzIFRvcGljOiBodHRwczovL2dyb3Vw cy5pby9tdC8xMDI0NjM0NjAvNzY4NjE3NgpHcm91cCBPd25lcjogZGV2ZWwrb3duZXJAZWRrMi5n cm91cHMuaW8KVW5zdWJzY3JpYmU6IGh0dHBzOi8vZWRrMi5ncm91cHMuaW8vZy9kZXZlbC91bnN1 YiBbcmViZWNjYUBvcGVuZncuaW9dCi09LT0tPS09LT0tPS09LT0tPS09LT0tCgoNCg==