From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mx.groups.io with SMTP id smtpd.web11.5090.1637793958254350719 for ; Wed, 24 Nov 2021 14:45:58 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=LwDyi5Q5; spf=pass (domain: intel.com, ip: 134.134.136.100, mailfrom: michael.d.kinney@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10178"; a="298799894" X-IronPort-AV: E=Sophos;i="5.87,261,1631602800"; d="scan'208";a="298799894" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Nov 2021 14:45:57 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,261,1631602800"; d="scan'208";a="591760427" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by FMSMGA003.fm.intel.com with ESMTP; 24 Nov 2021 14:45:56 -0800 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Wed, 24 Nov 2021 14:45:56 -0800 Received: from orsmsx604.amr.corp.intel.com (10.22.229.17) by ORSMSX607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Wed, 24 Nov 2021 14:45:55 -0800 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Wed, 24 Nov 2021 14:45:55 -0800 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.105) 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.2242.12; Wed, 24 Nov 2021 14:45:54 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LKmUuKp0DDud/Ck2c2KeDNyLSRRLTJhNYqLCDmT47N/+7eEjOnOj2IThmv3COBXkaccf0SV+CvsNkpA45rutf624g7sQcXVUGKJbdOQU14LTpguLUU+wlXSSo72WfxJY+DeRjIHpXOzz0A81+56epdsXZ+HGhn+crovAdtRH6uGQAqyMlmhLSNcCqUUg3kRmXgRvQ3oz7J/QNavGi7PFkYvxUDq58I7fFPC14Dp0Dt5DU4meEmZCPECWnsnu2k79mmc6MhSsaGCsE64TdiRt/Y88pCOU/2PDjWoJgruzfAaRiVK6NdD43DCxRlvqxmF6iXKCPoExnuowftcJsoIxFA== 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=38VaM8WE4KWovoDZ9eJ7dYRObYkJbw4YivVad03xU6I=; b=Zklxxj0jen+GVUwJ3MpHYef71LYZht+VN3UmGWe/iiLVUuhc5rPPtXqYeJXwyzqdavLEjLH3VCVJrQYNuCON1NxJDxnYxSSkaeZlF8979EZ2sNyeaM4du8Rknu7CbEo1DFQhpqrj4QorGtKxdKd5+95UHCzvHCkgyJwwp2XRHjxMqJh6l83Va5Wb7G36yGWC7C5Rsquxyi3BobRmzHIisU9hm8azLGTTCW2FDyoWh5an3TVVcqRo0lbzfG05WqMspaop4AXIyPaQ4kCmii2ZB5JQQqFrw67zLW/FXZi7gJ9ulXAHerISXbq/r7/H8QYI8jXrJmfKoc5BHiqiMbglLg== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=38VaM8WE4KWovoDZ9eJ7dYRObYkJbw4YivVad03xU6I=; b=LwDyi5Q5m6CVTSW1bo/xSSc0Al0byra9F1HV/iYLpXUeBL2JnuMpO5DTHDKNfTN3Lq7uG4TQJMMS2k1MzUz1/Gl9z32FQ51LlE9+gmTXkesuTN5RwnI84A+6n7rPIZl6Ta7VdojxB1iQqP5I3VwQG63el0iV9EDLzRDj22hQUJo= Received: from CO1PR11MB4929.namprd11.prod.outlook.com (2603:10b6:303:6d::19) by MWHPR11MB1504.namprd11.prod.outlook.com (2603:10b6:301:c::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.27; Wed, 24 Nov 2021 22:45:52 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::68cc:6227:db69:d81a]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::68cc:6227:db69:d81a%6]) with mapi id 15.20.4713.025; Wed, 24 Nov 2021 22:45:52 +0000 From: "Michael D Kinney" To: "mikuback@linux.microsoft.com" , "devel@edk2.groups.io" , "Kinney, Michael D" CC: Liming Gao , Sean Brogan , Bret Barkelew Subject: Re: [PATCH v4 1/1] .pytool/Plugin/UncrustifyCheck: Add Uncrustify CI plugin Thread-Topic: [PATCH v4 1/1] .pytool/Plugin/UncrustifyCheck: Add Uncrustify CI plugin Thread-Index: AQHX4XwmMYDqp0mP/kqm0Cd+X+x24qwTRrIg Date: Wed, 24 Nov 2021 22:45:52 +0000 Message-ID: References: <20211124214131.2705-1-mikuback@linux.microsoft.com> In-Reply-To: <20211124214131.2705-1-mikuback@linux.microsoft.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.200.16 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: db92fcb2-19d7-4618-6c15-08d9af9c2b64 x-ms-traffictypediagnostic: MWHPR11MB1504: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: FFzwdnezPrS/vIQ/hrNMy9c9AiDbZaMIyvK9scuRogFPYs0sJnpJlZpuSoS2zCJvI4dixPNZK97HaIkzq4Vr56WE5j0A78ZQkfG1hAWehxqUS2bKB70W+cIik0MRQGplFV+MaGI88s7GJcUKyHLed8NLumZBLomqEDOHFbvSO7vcAwx0PmznncyzBcIMN6gDbphWoGKcxdFeHFtwwlEL9cyrQ3yIiSvO2BaAgdIl/hNnvKvlVUhRiOZAE4ATD3j156rCxnKhfJ7W4UWN6rGzZt3MS2Gt943fcoxcQlWs6X83Qx2DrWjqBLaBuHTIezOqXwmucdCGL3W5jeV6+D0CdokVJtOjz+t70NjOXwvXyRNrRIEuhv2iL2Jv/xSnKBXCgQNZyIjDu7ncuazQu7XrPtud9MIp4UpNSsh/VtmKYzPwzN8qULwpusGHv4CxZhJy2t4J/nl4vYfdTkVZqyHoRVFAmL5YEwrJblDIyxNBIZ0fBvWW4UenNHDqnfGtbK8Gb2K5GL1L+4ugp2M2t0aluRqhEIqamAjjMblYym0ieyuFWfzO2XmIPXjJSE8hP0+0Dyfi4ZFir0lST+mRk0wRAHq7Z71j4hi0BgWMHlddsLf5T0DHTZPv+OWRzQq0FmZ5EreXCXNoA2qpoz6U5siQJIL6TZThT0M4j4DBJyu/hJUwVJaGhf+EDKXik7Xr4F+MWDuJYjNjsj9+mRscTfOUl5Y/gYFws8ku0TGlYu/3Qxtd8IPmSCnFvILZ+2+kZ8dkU3lbaeyl0GYGcC2akulgOtxprXeefXetdO/BRdi0CLHZrAx9MMhvp2+rJQ86JrUekpp8D17tVMjKLTWvJW8LVA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4929.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(122000001)(110136005)(26005)(5660300002)(2906002)(55016003)(66556008)(966005)(64756008)(83380400001)(86362001)(508600001)(316002)(186003)(6506007)(52536014)(38100700002)(53546011)(4326008)(8936002)(66446008)(82960400001)(30864003)(76116006)(7696005)(54906003)(38070700005)(19627235002)(45080400002)(33656002)(71200400001)(8676002)(66946007)(9686003)(66476007)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Qnh1cFY5ZWN1WGhVdE5qL09haXI0Z1gvOHZMSHBCdzJXN2hwejltcDhnNTc0?= =?utf-8?B?RTQ5SU9lMmlDWG9FcUMyS1NOQVpQSmpTb1A5TmdhbThLNy9yS3M2bWJNMG9Q?= =?utf-8?B?ckhCeGF5ajRvblZrVXN5ZFFVcmRaV2sxanh1RUpPY3RreU9wbnBUNEsyaS9I?= =?utf-8?B?Zk1pOVNBcnp1QVdpMURZL1dlKys2QTB2N0hCN3hlRkhHaDlYVDgzQW5qdVhI?= =?utf-8?B?cUVjRTBKaVdZNW9CWVVoSENBQlYyRERCa3hSSlREZ0xKblV4Q3F3di9lbjc4?= =?utf-8?B?WFVBbGNON1lGbjhLZW1KZWxkaUZTUDZSVVRDQmNrNi9CVDF4enc2NGtkajFX?= =?utf-8?B?NEVQaC9RSFJJT1U2bzRoMG91M3pMRVlIKys0Sm54N1hDVHdnRzlMMGRONG1C?= =?utf-8?B?aGhSUWJ1MUFXVTJwd2VsSVlUeTlJQXBRaHJqSjFWRFVCK3Y3VytqVnp2blI0?= =?utf-8?B?Vk1vbFdrd1BQRm50L1lVQ2JvOVhYRVFMdi95SmhRQ25jcDhpN0ViQTgwVVJX?= =?utf-8?B?cmFRclR0VDB3bXpyYW9hRzliUS9pR2Y4SlRRaU4yRHZ5ZWZRSGJTdzM3c1Er?= =?utf-8?B?YWRlYlMwdytNQzREWFVyV1RvOHlydXZlaVA3aHJnRWFwS1BFSGFIeWZwQ1lR?= =?utf-8?B?eFFrVEpiU2ZUSG5vallpbDVNdndUT3VTczc0ZGM2WHl5M3BFRG5WTDBEcmFF?= =?utf-8?B?UkwwckRLaFI4MVVyY0d3Yy9PQTEvSlZnN0Vyd2Zidk1KdzBpVmhCbUd5dGNH?= =?utf-8?B?TkdLTERuYXFCQmM0aVo3UHlQUWVzR0pNZUk3aDdtTmVjb1Fkcm5hdlhvdnpN?= =?utf-8?B?RmdzeEVSdlUvWnBPdHVIcHdtU0dYM0VpVGtXWnpFSDVNaVJESHd3dG9qcmtt?= =?utf-8?B?M0tyZlRLanNkY3FBVWMzZWhDeFBpcGZ0cnBERmxvNXJ3ODJCUXA0NkNFTGd4?= =?utf-8?B?TktjRm8raXdLQ01jMmVGZnVOUzF4dFNUdklBNU92dUgwT0U1dU5IVDhlNVRk?= =?utf-8?B?eXZ2U3RFblN2SDlQZEllaXBoUzZjd2JpWW56WWNWNFNkYlNjOWNuR0kxd3g1?= =?utf-8?B?WktlSDVQczVUVFFsdWNYcmxVVk9xcEM2MkVOdUs4UlloWTAxbGRLWVg4SUcy?= =?utf-8?B?VlduMUFpcFE1MXRqSnBxcFBOTDhNbnJ4cVRxUis1Y09wRFVSeHlScDFKR2gy?= =?utf-8?B?eFhOU3VwYkRhcmg5NHZ6eEdFNXE1Z2NrcmR0VEpERCthR3A5Zk9XbFZVSWUz?= =?utf-8?B?bWNQaXdidm1xdXhuaGl1RkFyWm90eUpiUGhYZEhUTGZSYnc2SVAvakpnM1dy?= =?utf-8?B?NzVnRXBzSk1XNjQzZDVPNHRJNkhIWXBzZDUxbmovU2VKMVhMek4rbS9XQlJQ?= =?utf-8?B?R1FKbTV0UkxNOEJHOFUvdXZxazRuUU5Ed2JRMVAwcUdZMVdiR0syNW81VVN1?= =?utf-8?B?OHIxLy9rQ0kvQ1VNWUhqeU1UZmUzdWFJKzU0VHE1RHdiakU4ejhBK0lVVTZF?= =?utf-8?B?MFF6ay93cytNRm05RUs5cElNRWhqTjNYQm9ORC84czdVeGJNM2p3TnhNMWFL?= =?utf-8?B?RXJySnYzOHB5L1huQTJ5a2VDZFQwSm1SZGR1TitTdGFid3FmNVN5b214amlB?= =?utf-8?B?S052RnJ5aCtBVjVzdWl0RGJYV2NScGYvOHlscklLbll2bWdtWWJlSGEzaFRD?= =?utf-8?B?Wjh1V2lITkN6MzlsZWRlYzhXcWp2a1RVSEFuejB4MWEwUkVudWpQdk5OV0c1?= =?utf-8?B?NnpNb1d0MEQzYzFiN25LM0VkaFhSa0JWdWpOYnU5djlsaWlqMTlDNWcxV05L?= =?utf-8?B?TjZaMDBlSU1Ja2VMSUVIOFEyY2thWHBCVkpYR01Gc0VsM2pNSkxoYWI3b0NH?= =?utf-8?B?aWo1UTBJRGkrOE9qNlA0SEZ0enhZUk4rMEo3aCtQQzY3ZWZLNG05VjE2Z2ty?= =?utf-8?B?ZVFaWlB0T0FyU1ZlUW41N2FFMnBUcUNPU055dlpSQmNaZkhjWEZobkljdVFJ?= =?utf-8?B?UHJPclFmS2U3YTBsUWR3WUc2b3dOb3d2RitBdGl5bnNKa1plRjZRRzVtVEFF?= =?utf-8?B?VWRxbnd2eFdOU20xZWt0cmVDRnhvWnYxYVRJOVkwZFNnRDdUaGNyeWpqT0Zu?= =?utf-8?B?K1BVMXI5eUl1VjFkMDA1bCt4TkVHdU01YTlXL0ZTdVRLRGIyUkVsT3NSb2tt?= =?utf-8?B?d3ljcEZ1SHpUTit3K2g1SzlZNDNYZW9nbWpLRmh6WkE4UzJFSCtBWVhsTHJC?= =?utf-8?B?dEFiUGZ3UHNQWWp2ZEpsVURKS0tnPT0=?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4929.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: db92fcb2-19d7-4618-6c15-08d9af9c2b64 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Nov 2021 22:45:52.6540 (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: jt8MBovEzeIrsSfy73iJ91Z4Ss5JAJcY8hm5ZgXyxRq+1I+PXZOqR7GcUfcGwFX8CqAOAagGdHEqz8WxLFYKEbSovvB3ULjRNtQxiHqghP4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR11MB1504 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTWljaGFlbCwNCg0KSSBzZWUgYSBjb3VwbGUgc2V0dGluZ3MgZGVsZXRlZCBmcm9tIHRoZSB1 bmNydXN0aWZ5LmNmZy4gIFdhcyB0aGF0IGluIHB1cnBvc2U/ICBEb2VzIGl0IGNoYW5nZSB0aGUg Zm9ybWF0Pw0KDQoNCi1ubF9mdW5jX2NhbGxfc3RhcnRfbXVsdGlfbGluZSAgID0gdHJ1ZSAgICAg ICMgV2hldGhlciB0byBhZGQgYSBuZXdsaW5lIGFmdGVyICcoJyBpbiBhIGZ1bmN0aW9uIGNhbGwg aWYgJygnIGFuZCAnKScgYXJlDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAjIGluIGRpZmZlcmVudCBsaW5lcy4NCg0KDQotbmxfZnVuY19jYWxsX2FyZ3NfbXVs dGlfbGluZSAgICAgICAgICAgICAgICAgPSB0cnVlDQotbmxfZnVuY19jYWxsX2FyZ3NfbXVsdGlf bGluZV9pZ25vcmVfY2xvc3VyZXMgPSBmYWxzZQ0KDQoNClRoYW5rcywNCg0KTWlrZQ0KDQo+IC0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IG1pa3ViYWNrQGxpbnV4Lm1pY3Jvc29m dC5jb20gPG1pa3ViYWNrQGxpbnV4Lm1pY3Jvc29mdC5jb20+DQo+IFNlbnQ6IFdlZG5lc2RheSwg Tm92ZW1iZXIgMjQsIDIwMjEgMTo0MiBQTQ0KPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4g Q2M6IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IExpbWlu ZyBHYW8gPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj47IFNlYW4gQnJvZ2FuDQo+IDxzZWFuLmJy b2dhbkBtaWNyb3NvZnQuY29tPjsgQnJldCBCYXJrZWxldyA8QnJldC5CYXJrZWxld0BtaWNyb3Nv ZnQuY29tPg0KPiBTdWJqZWN0OiBbUEFUQ0ggdjQgMS8xXSAucHl0b29sL1BsdWdpbi9VbmNydXN0 aWZ5Q2hlY2s6IEFkZCBVbmNydXN0aWZ5IENJIHBsdWdpbg0KPiANCj4gRnJvbTogTWljaGFlbCBL dWJhY2tpIDxtaWNoYWVsLmt1YmFja2lAbWljcm9zb2Z0LmNvbT4NCj4gDQo+IFJFRjpodHRwczov L2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTM3NDgNCj4gDQo+IEFkZHMg YSBuZXcgQ0kgcGx1Z2luIGZvciBVbmNydXN0aWZ5LiBUaGlzIGlzIHVzZWQgdG8gY2hlY2sNCj4g Y29kaW5nIHN0YW5kYXJkIGNvbXBsaWFuY2Ugb2Ygc291cmNlIGNvZGUgdG8gdGhlIEVESyBJSSBD IENvZGluZw0KPiBTdGFuZGFyZHMgU3BlY2lmaWNhdGlvbi4NCj4gDQo+IEFuIGV4dGVybmFsIGRl cGVuZGVuY3kgaXMgYWRkZWQgaW4gdGhlIHBsdWdpbiBkaXJlY3RvcnkgdG8gcmV0cmlldmUNCj4g dGhlIFVuY3J1c3RpZnkgZXhlY3V0YWJsZS4gQ3VycmVudGx5LCB0aGUgZXhlY3V0YWJsZSBpcyBm cm9tIGFuIGVkazINCj4gZm9yayBvZiB0aGUgYXBwbGljYXRpb24gaG9zdCBpbiB0aGlzIHJlcG9z aXRvcnk6DQo+IA0KPiBodHRwczovL2Rldi5henVyZS5jb20vcHJvamVjdG11L1VuY3J1c3RpZnkv DQo+IA0KPiBOb3RlIHRoYXQgdGhlIFVuY3J1c3RpZnkgYXBwbGljYXRpb24gb3V0cHV0cyB0aGUg Y29tbWl0IElEIHRoYXQgdGhlDQo+IGFwcGxpY2F0aW9uIHdhcyBidWlsdCBmcm9tIHdoZW4gZ2l2 ZW4gdGhlIC0tdmVyc2lvbiBwYXJhbWV0ZXIuDQo+IA0KPiBUaGlzIElEIGNhbiBiZSBtYXBwZWQg dG8gdGhlIHZlcnNpb24gc3BlY2lmaWVkIGluIHRoZSBVbmNydXN0aWZ5IENJDQo+IHBsdWdpbiBl eHRlcm5hbCBkZXBlbmRlbmN5IGZpbGUgKHVuY3J1c3RpZnlfZXh0X2RlcC55YW1sKSBzdWNoIGFz DQo+IDczLjAuMyBieSB2aXNpdGluZyB0aGUgVW5jcnVzdGlmeSBlZGsyIGZvcmsgcmVsZWFzZSBw aXBlbGluZSBwYWdlDQo+IHdoaWNoIGFzc29jaWF0ZXMgdGhlIE51R2V0IHBhY2thZ2UgdmVyc2lv biB3aXRoIHRoZSBjb21taXQgSUQgaXQgd2FzDQo+IGJ1aWx0IGZyb206DQo+IA0KPiBodHRwczov L2Rldi5henVyZS5jb20vcHJvamVjdG11L1VuY3J1c3RpZnkvX2J1aWxkDQo+IA0KPiBUaGUgZGVm YXVsdCBVbmNydXN0aWZ5IGNvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIGFkZGVkIGluIHRoZSBwbHVn aW4NCj4gZGlyZWN0b3J5LiBBZGRpdGlvbmFsIGRldGFpbHMgYXJlIGluIHRoZSBSZWFkbWUubWQg ZmlsZSBhZGRlZCBpbg0KPiB0aGUgVW5jcnVzdGlmeSBwbHVnaW4gZGlyZWN0b3J5Lg0KPiANCj4g Q2M6IE1pY2hhZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiBDYzog TGltaW5nIEdhbyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPg0KPiBDYzogU2VhbiBCcm9nYW4g PHNlYW4uYnJvZ2FuQG1pY3Jvc29mdC5jb20+DQo+IENjOiBCcmV0IEJhcmtlbGV3IDxCcmV0LkJh cmtlbGV3QG1pY3Jvc29mdC5jb20+DQo+IFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgS3ViYWNraSA8 bWljaGFlbC5rdWJhY2tpQG1pY3Jvc29mdC5jb20+DQo+IC0tLQ0KPiANCj4gTm90ZXM6DQo+ICAg ICBWNCBjaGFuZ2VzOg0KPiANCj4gICAgIDEuIFVwZGF0ZWQgY29tbWl0IHN1YmplY3QgdG8gdXNl IHRoZSBuZXcgcGx1Z2luIG5hbWUuDQo+ICAgICAyLiBFbmFibGVkIGZpbGUgYW5kIGZ1bmN0aW9u IGhlYWRlciB0ZW1wbGF0ZXMgdG8gYmUgcGxhY2VkIGluDQo+ICAgICAgICBmaWxlcyBtaXNzaW5n IGEgZmlsZSBvciBmdW5jdGlvbiBoZWFkZXIgKGNvbW1lbnQgYmxvY2spLg0KPiAgICAgMy4gQWRk ZWQgc3VwcG9ydCB0byBkZXRlY3Qgd2hldGhlciBhIGZpbGUgaGVhZGVyIG9yIGZ1bmN0aW9uDQo+ ICAgICAgICBoZWFkZXIgaXMgbWlzc2luZyBpbiBhIGZpbGUgYnkgc2VhcmNoaW5nIGZpbGVzIG1v ZGlmaWVkIGJ5DQo+ICAgICAgICBVbmNydXN0aWZ5IGZvciB0aGUgdGVtcGxhdGUgZmlsZSB0ZXh0 Lg0KPiAgICAgNC4gVXBkYXRlZCB0aGUgcGx1Z2luIG5hbWUgZGlzcGxheWVkIGluIHNvbWUgbG9n IG91dHB1dCBtZXNzYWdlcy4NCj4gDQo+ICAgICBWMyBjaGFuZ2VzOg0KPiANCj4gICAgIDEuIFJl bmFtZWQgdGhlIENJIHBsdWdpbiB0byAiVW5jcnVzdGlmeUNoZWNrIiBmcm9tICJVbmNydXN0aWZ5 Ig0KPiAgICAgICAgdG8gZm9sbG93IHNpbWlsYXIgbmFtaW5nIGNvbnZlbnRpb25zIHVzZWQgaW4g b3RoZXIgcGx1Z2lucw0KPiAgICAgICAgdGhhdCBjaGVjayBmaWxlcw0KPiAgICAgMi4gQWRkZWQg YSBjbGFyaWZ5aW5nIHBhcmFncmFwaCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBVbmNydXN0aWZ5 DQo+ICAgICAgICBDSSBwbHVnaW4gUmVhZG1lLm1kIGZpbGUgdGhhdCB0aGUgcGx1Z2luIGlzIGVu YWJsZWQgYnkgZGVmYXVsdA0KPiAgICAgICAgYW5kIHRlc3QgcmVzdWx0cyBjYW4gYmUgaWdub3Jl ZCBieSBlbmFibGluZyAiQXVkaXRPbmx5IiBtb2RlLg0KPiAgICAgMy4gQWRkZWQgaW5zdHJ1Y3Rp b25zIGluIHRoZSBjb21taXQgbWVzc2FnZSBvbiBob3cgdG8gbWFwIHRoZQ0KPiAgICAgICAgdmVy c2lvbiByZXBvcnRlZCBieSB0aGUgVW5jcnVzdGlmeSBhcHBsaWNhdGlvbiAoLS12ZXJzaW9uKSB0 bw0KPiAgICAgICAgdGhlIHZlcnNpb24gc3BlY2lmaWVkIGluIHRoZSBDSSBwbHVnaW4gZXh0ZXJu YWwgZGVwZW5kZW5jeQ0KPiAgICAgICAgWUFNTCBmaWxlLg0KPiANCj4gICAgIFYyIGNoYW5nZXM6 DQo+IA0KPiAgICAgMS4gQ2hhbmdlZCBwbHVnaW4gdGVtcCBkaXJlY3RvcnkgdG8gQnVpbGQvLnB5 dG9vbC9QbHVnaW4vVW5jcnVzdGlmeQ0KPiAgICAgMi4gQWRkZWQgVENCWiBSRUYgaW4gcGF0Y2gg Y29tbWl0IG1lc3NhZ2UNCj4gDQo+ICAucHl0b29sL1BsdWdpbi9VbmNydXN0aWZ5Q2hlY2svUmVh ZG1lLm1kICAgICAgICAgICAgICAgICAgIHwgMTIwICsrKysNCj4gIC5weXRvb2wvUGx1Z2luL1Vu Y3J1c3RpZnlDaGVjay9VbmNydXN0aWZ5Q2hlY2sucHkgICAgICAgICAgfCA2MTcgKysrKysrKysr KysrKysrKysrKysNCj4gIC5weXRvb2wvUGx1Z2luL1VuY3J1c3RpZnlDaGVjay9kZWZhdWx0X2Zp bGVfaGVhZGVyLnR4dCAgICAgfCAgIDkgKw0KPiAgLnB5dG9vbC9QbHVnaW4vVW5jcnVzdGlmeUNo ZWNrL2RlZmF1bHRfZnVuY3Rpb25faGVhZGVyLnR4dCB8ICAxNSArDQo+ICAucHl0b29sL1BsdWdp bi9VbmNydXN0aWZ5Q2hlY2svdW5jcnVzdGlmeS5jZmcgICAgICAgICAgICAgIHwgNDYyICsrKysr KysrKysrKysrKw0KPiAgLnB5dG9vbC9QbHVnaW4vVW5jcnVzdGlmeUNoZWNrL3VuY3J1c3RpZnlf ZXh0X2RlcC55YW1sICAgICB8ICAxNiArDQo+ICAucHl0b29sL1BsdWdpbi9VbmNydXN0aWZ5Q2hl Y2svdW5jcnVzdGlmeV9wbHVnX2luLnlhbWwgICAgIHwgIDExICsNCj4gIC5weXRvb2wvUmVhZG1l Lm1kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKw0KPiAg OCBmaWxlcyBjaGFuZ2VkLCAxMjU0IGluc2VydGlvbnMoKykNCj4gDQo+IGRpZmYgLS1naXQgYS8u cHl0b29sL1BsdWdpbi9VbmNydXN0aWZ5Q2hlY2svUmVhZG1lLm1kIGIvLnB5dG9vbC9QbHVnaW4v VW5jcnVzdGlmeUNoZWNrL1JlYWRtZS5tZA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRl eCAwMDAwMDAwMDAwMDAuLmJiMjYzYmNjODdkNw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiLy5w eXRvb2wvUGx1Z2luL1VuY3J1c3RpZnlDaGVjay9SZWFkbWUubWQNCj4gQEAgLTAsMCArMSwxMjAg QEANCj4gKyMgVW5jcnVzdGlmeUNoZWNrIFBsdWdpbg0KPiArDQo+ICtUaGlzIENpQnVpbGRQbHVn aW4gc2NhbnMgYWxsIHRoZSBmaWxlcyBpbiBhIGdpdmVuIHBhY2thZ2UgYW5kIGNoZWNrcyBmb3Ig Y29kaW5nIHN0YW5kYXJkIGNvbXBsaWFuY2UgaXNzdWVzLg0KPiArDQo+ICtUaGlzIHBsdWdpbiBp cyBlbmFibGVkIGJ5IGRlZmF1bHQuIElmIGEgcGFja2FnZSB3b3VsZCBsaWtlIHRvIHByZXZlbnQg dGhlIHBsdWdpbiBmcm9tIHJlcG9ydGluZyBlcnJvcnMsIGl0IGNhbiBkbw0KPiArc28gYnkgZW5h YmxpbmcgW2BBdWRpdE9ubHlgXSgjYXVkaXRvbmx5KSBtb2RlLg0KPiArDQo+ICtUaGlzIHBsdWdp biByZXF1aXJlcyB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIFVuY3J1c3RpZnkgZXhlY3V0 YWJsZSB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciB0aGlzIHBsdWdpbiB0bw0KPiArYmUgc3BlY2lm aWVkIGluIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVkIGBVTkNSVVNUSUZZX0NJX1BBVEhg LiBUaGlzIHVuaXF1ZSB2YXJpYWJsZSBuYW1lIGlzIHVzZWQgdG8gYXZvaWQgY29uZnVzaW9uDQo+ ICt3aXRoIG90aGVyIHBhdGhzIHRvIFVuY3J1c3RpZnkgd2hpY2ggbWlnaHQgbm90IGJlIHRoZSBl eHBlY3RlZCBidWlsZCBmb3IgdXNlIGJ5IHRoaXMgcGx1Z2luLg0KPiArDQo+ICtCeSBkZWZhdWx0 LCBhbiBVbmNydXN0aWZ5IGNvbmZpZ3VyYXRpb24gZmlsZSBuYW1lZCAidW5jcnVzdGlmeS5jZmci IGxvY2F0ZWQgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSBwbHVnaW4gaXMNCj4gK3VzZWQu IFRoZSB2YWx1ZSBjYW4gYmUgb3ZlcnJpZGRlbiB0byBhIHBhY2thZ2Utc3BlY2lmaWMgcGF0aCB3 aXRoIHRoZSBgQ29uZmlnRmlsZVBhdGhgIGNvbmZpZ3VyYXRpb24gZmlsZSBvcHRpb24uDQo+ICsN Cj4gKyogVW5jcnVzdGlmeSBzb3VyY2UgY29kZSBhbmQgZG9jdW1lbnRhdGlvbjogaHR0cHM6Ly9n aXRodWIuY29tL3VuY3J1c3RpZnkvdW5jcnVzdGlmeQ0KPiArKiBQcm9qZWN0IE11IFVuY3J1c3Rp ZnkgZm9yayBzb3VyY2UgY29kZSBhbmQgZG9jdW1lbnRhdGlvbjogaHR0cHM6Ly9kZXYuYXp1cmUu Y29tL3Byb2plY3RtdS9VbmNydXN0aWZ5DQo+ICsNCj4gKyMjIEZpbGVzIENoZWNrZWQgaW4gYSBQ YWNrYWdlDQo+ICsNCj4gK0J5IGRlZmF1bHQsIHRoaXMgcGx1Z2luIHdpbGwgZGlzY292ZXIgYWxs IGZpbGVzIGluIHRoZSBwYWNrYWdlIHdpdGggdGhlIGZvbGxvd2luZyBkZWZhdWx0IHBhdGhzOg0K PiArDQo+ICtgYGBweXRob24NCj4gK1sNCj4gKyMgQyBzb3VyY2UNCj4gKyIqLmMiLA0KPiArIiou aCINCj4gK10NCj4gK2BgYA0KPiArDQo+ICtGcm9tIHRoaXMgbGlzdCBvZiBmaWxlcywgYW55IGZp bGVzIGlnbm9yZWQgYnkgR2l0IG9yIHJlc2lkaW5nIGluIGEgR2l0IHN1Ym1vZHVsZSB3aWxsIGJl IHJlbW92ZWQuIElmIEdpdCBpcyBub3QNCj4gK2ZvdW5kLCBzdWJtb2R1bGVzIGFyZSBub3QgZm91 bmQsIG9yIGlnbm9yZWQgZmlsZXMgYXJlIG5vdCBmb3VuZCBubyBjaGFuZ2VzIGFyZSBtYWRlIHRv IHRoZSBsaXN0IG9mIGRpc2NvdmVyZWQgZmlsZXMuDQo+ICsNCj4gK1RvIGNvbnRyb2wgdGhlIHBh dGhzIGNoZWNrZWQgaW4gYSBnaXZlbiBwYWNrYWdlLCByZXZpZXcgdGhlIGNvbmZpZ3VyYXRpb24g b3B0aW9ucyBkZXNjcmliZWQgaW4gdGhpcyBmaWxlLg0KPiArDQo+ICsjIyBDb25maWd1cmF0aW9u DQo+ICsNCj4gK1RoZSBwbHVnaW4gY2FuIGJlIGNvbmZpZ3VyZWQgd2l0aCBhIGZldyBvcHRpb25h bCBjb25maWd1cmF0aW9uIG9wdGlvbnMuDQo+ICsNCj4gK2BgYCB5YW1sDQo+ICsgICJVbmNydXN0 aWZ5Q2hlY2siOiB7DQo+ICsgICAgICAiQWRkaXRpb25hbEluY2x1ZGVQYXRocyI6IFtdLCAjIEFk ZGl0aW9uYWwgcGF0aHMgdG8gY2hlY2sgZm9ybWF0dGluZyAod2lsZGNhcmRzIHN1cHBvcnRlZCku DQo+ICsgICAgICAiQXVkaXRPbmx5IjogRmFsc2UsICAgICAgICAgICAjIERvbid0IGZhaWwgdGhl IGJ1aWxkIGlmIHRoZXJlIGFyZSBlcnJvcnMuICBKdXN0IGxvZyB0aGVtLg0KPiArICAgICAgIkNv bmZpZ0ZpbGVQYXRoIjogIiIsICAgICAgICAgIyBDdXN0b20gcGF0aCB0byBhbiBVbmNydXN0aWZ5 IGNvbmZpZyBmaWxlLg0KPiArICAgICAgIklnbm9yZVN0YW5kYXJkUGF0aHMiOiBbXSwgICAgIyBT dGFuZGFyZCBQbHVnaW4gZGVmaW5lZCBwYXRocyB0aGF0IHNob3VsZCBiZSBpZ25vcmVkLg0KPiAr ICAgICAgIk91dHB1dEZpbGVEaWZmcyI6IEZhbHNlLCAgICAgIyBPdXRwdXQgY2h1bmtzIG9mIGZv cm1hdHRpbmcgZGlmZnMgaW4gdGhlIHRlc3QgY2FzZSBsb2cuDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjIFRoaXMgY2FuIHNpZ25pZmljYW50bHkgc2xvdyBkb3duIHRo ZSBwbHVnaW4gb24gdmVyeSBsYXJnZSBwYWNrYWdlcy4NCj4gKyAgICAgICJTa2lwR2l0RXhjbHVz aW9ucyI6IEZhbHNlICAgICMgRG9uJ3QgZXhjbHVkZSBnaXQgaWdub3JlZCBmaWxlcyBhbmQgZmls ZXMgaW4gZ2l0IHN1Ym1vZHVsZXMuDQo+ICsgIH0NCj4gK2BgYA0KPiArDQo+ICsjIyMgYEFkZGl0 aW9uYWxJbmNsdWRlUGF0aHNgDQo+ICsNCj4gK0EgcGFja2FnZSBjb25maWd1cmF0aW9uIGZpbGUg Y2FuIHNwZWNpZnkgYW55IGFkZGl0aW9uYWwgcGF0aHMgdG8gYmUgaW5jbHVkZWQgd2l0aCB0aGlz IG9wdGlvbi4NCj4gKw0KPiArQXQgdGhpcyB0aW1lLCBpdCBpcyByZWNvbW1lbmRlZCBhbGwgZmls ZXMgcnVuIGFnYWluc3QgdGhlIHBsdWdpbiBiZSB3cml0dGVuIGluIHRoZSBDIG9yIEMrKyBsYW5n dWFnZS4NCj4gKw0KPiArIyMjIGBBdWRpdE9ubHlgDQo+ICsNCj4gK2BCb29sZWFuYCAtIERlZmF1 bHQgaXMgYEZhbHNlYC4NCj4gKw0KPiArSWYgYFRydWVgLCBydW4gdGhlIHRlc3QgaW4gYW4gImF1 ZGl0IG9ubHkgbW9kZSIgd2hpY2ggd2lsbCBsb2cgYWxsIGVycm9ycyBidXQgaW5zdGVhZCBvZiBm YWlsaW5nIHRoZSBidWlsZCwgaXQgd2lsbCBzZXQNCj4gK3RoZSB0ZXN0IGFzIHNraXBwZWQuIFRo aXMgYWxsb3dzIHZpc2liaWxpdHkgaW50byB0aGUgZmFpbHVyZXMgd2l0aG91dCBicmVha2luZyB0 aGUgYnVpbGQuDQo+ICsNCj4gKyMjIyBgQ29uZmlnRmlsZVBhdGhgDQo+ICsNCj4gK2BTdHJpbmdg IC0gRGVmYXVsdCBpcyBgInVuY3J1c3RpZnkuY2ZnImANCj4gKw0KPiArV2hlbiBzcGVjaWZpZWQg aW4gdGhlIGNvbmZpZyBmaWxlLCB0aGlzIGlzIGEgcGFja2FnZSByZWxhdGl2ZSBwYXRoIHRvIHRo ZSBVbmNydXN0aWZ5IGNvbmZpZ3VyYXRpb24gZmlsZS4NCj4gKw0KPiArIyMjIGBJZ25vcmVTdGFu ZGFyZFBhdGhzYA0KPiArDQo+ICtUaGlzIHBsdWdpbiBieSBkZWZhdWx0IHdpbGwgY2hlY2sgdGhl IGJlbG93IHN0YW5kYXJkIHBhdGhzLiBBIHBhY2thZ2UgY29uZmlndXJhdGlvbiBmaWxlIGNhbiBz cGVjaWZ5IGFueSBvZiB0aGVzZSBwYXRocw0KPiArdG8gYmUgaWdub3JlZC4NCj4gKw0KPiArYGBg cHl0aG9uDQo+ICtbDQo+ICsjIEMgc291cmNlDQo+ICsiKi5jIiwNCj4gKyIqLmgiDQo+ICtdDQo+ ICtgYGANCj4gKw0KPiArIyMjIGBPdXRwdXRGaWxlRGlmZnNgDQo+ICsNCj4gK2BCb29sZWFuYCAt IERlZmF1bHQgaXMgYEZhbHNlYC4NCj4gKw0KPiArSWYgYFRydWVgLCBvdXRwdXQgZGlmZnMgb2Yg Zm9ybWF0dGluZyBjaGFuZ2VzIGludG8gdGhlIHRlc3QgY2FzZSBsb2cuIFRoaXMgaXMgaGVscGZ1 bCB0byBleGFjdGx5IHVuZGVyc3RhbmQgd2hhdCBjaGFuZ2VzDQo+ICtuZWVkIHRvIGJlIG1hZGUg dG8gdGhlIHNvdXJjZSBjb2RlIGluIG9yZGVyIHRvIGZpeCBhIGNvZGluZyBzdGFuZGFyZCBjb21w bGlhbmNlIGlzc3VlLg0KPiArDQo+ICtOb3RlIHRoYXQgY2FsY3VsYXRpbmcgdGhlIGZpbGUgZGlm ZnMgb24gYSB2ZXJ5IGxhcmdlIHNldCBvZiBvZiByZXN1bHRzIChlLmcuID4xMDAgZmlsZXMpIGNh biBzaWduaWZpY2FudGx5IHNsb3cgZG93bg0KPiArcGx1Z2luIGV4ZWN1dGlvbi4NCj4gKw0KPiAr IyMjIGBTa2lwR2l0RXhjbHVzaW9uc2ANCj4gKw0KPiArYEJvb2xlYW5gIC0gRGVmYXVsdCBpcyBg RmFsc2VgLg0KPiArDQo+ICtCeSBkZWZhdWx0LCBmaWxlcyBpbiBwYXRocyBtYXRjaGVkIGluIGEg LmdpdGlnbm9yZSBmaWxlIG9yIGEgcmVjb2duaXplZCBnaXQgc3VibW9kdWxlIGFyZSBleGNsdWRl ZC4gSWYgdGhpcyBvcHRpb24NCj4gK2lzIGBUcnVlYCwgdGhlIHBsdWdpbiB3aWxsIG5vdCBhdHRl bXB0IHRvIHJlY29nbml6ZSB0aGVzZSBmaWxlcyBhbmQgZXhjbHVkZSB0aGVtLg0KPiArDQo+ICsj IyBIaWdoLUxldmVsIFBsdWdpbiBPcGVyYXRpb24NCj4gKw0KPiArVGhpcyBwbHVnaW4gZ2VuZXJh dGVzIHR3byBtYWluIHNldHMgb2YgdGVtcG9yYXJ5IGZpbGVzOg0KPiArDQo+ICsgIDEuIEEgd29y a2luZyBkaXJlY3RvcnkgaW4gdGhlIGRpcmVjdG9yeSBgQnVpbGQvLnB5dG9vbC9QbHVnaW4vVW5j cnVzdGlmeWANCj4gKyAgMi4gRm9yIGVhY2ggc291cmNlIGZpbGUgd2l0aCBmb3JtYXR0aW5nIGVy cm9ycywgYSBzaWJsaW5nIGZpbGUgd2l0aCB0aGUgYC51bmNydXN0aWZ5X3BsdWdpbmAgZXh0ZW5z aW9uDQo+ICsNCj4gK1RoZSB3b3JraW5nIGRpcmVjdG9yeSBjb250YWlucyB0ZW1wb3JhcnkgZmls ZXMgdW5pcXVlIHRvIG9wZXJhdGlvbiBvZiB0aGUgcGx1Z2luLiBBbGwgb2YgdGhlc2UgZmlsZXMg YXJlIHJlbW92ZWQgb24NCj4gK2V4aXQgb2YgdGhlIHBsdWdpbiBpbmNsdWRpbmcgc3VjY2Vzc2Z1 bCBvciB1bnN1Y2Nlc3NmdWwgZXhlY3V0aW9uIChzdWNoIGFzIGEgUHl0aG9uIGV4Y2VwdGlvbiBv Y2N1cnJpbmcpLiBJZiBmb3IgYW55DQo+ICtyZWFzb24sIGFueSBmaWxlcyBpbiB0aGUgcGFja2Fn ZSBleGlzdCBwcmlvciB0byBydW5uaW5nIHRoZSBwbHVnaW4gd2l0aCB0aGUgYC51bmNydXN0aWZ5 X3BsdWdpbmAgZXh0ZW5zaW9uLCB0aGUgcGx1Z2luDQo+ICt3aWxsIGluZm9ybSB0aGUgdXNlciB0 byByZW1vdmUgdGhlc2UgZmlsZXMgYW5kIGV4aXQgYmVmb3JlIHJ1bm5pbmcgVW5jcnVzdGlmeS4g VGhpcyBpcyB0byBlbnN1cmUgdGhlIGFjY3VyYWN5IG9mIHRoZQ0KPiArcmVzdWx0cyByZXBvcnRl ZCBmcm9tIGVhY2ggZXhlY3V0aW9uIGluc3RhbmNlIG9mIHRoZSBwbHVnaW4uDQo+ICsNCj4gK1Ro ZSBwbHVnaW4gZGV0ZXJtaW5lcyB0aGUgbGlzdCBvZiByZWxldmFudCBmaWxlcyB0byBjaGVjayB3 aXRoIFVuY3J1c3RpZnkgYW5kIHRoZW4gaW52b2tlcyBVbmNydXN0aWZ5IHdpdGggdGhhdCBmaWxl DQo+ICtsaXN0LiBGb3IgYW55IGZpbGVzIG5vdCBjb21wbGlhbnQgdG8gdGhlIGNvbmZpZ3VyYXRp b24gZmlsZSBwcm92aWRlZCwgVW5jcnVzdGlmeSB3aWxsIGdlbmVyYXRlIGEgY29ycmVzcG9uZGlu ZyBmaWxlDQo+ICt3aXRoIHRoZSBgLnVuY3J1c3RpZnlfcGx1Z2luYCBleHRlbnNpb24uIFRoZSBw bHVnaW4gZGlzY292ZXJzIGFsbCBvZiB0aGVzZSBmaWxlcy4gSWYgYW55IHN1Y2ggZmlsZXMgYXJl IHByZXNlbnQsIHRoaXMNCj4gK2luZGljYXRlcyBhIGZvcm1hdHRpbmcgaXNzdWUgd2FzIGZvdW5k IGFuZCB0aGUgdGVzdCBpcyBtYXJrZWQgZmFpbGVkICh1bmxlc3MgYEF1ZGl0T25seWAgbW9kZSBp cyBlbmFibGVkKS4NCj4gKw0KPiArVGhlIHRlc3QgY2FzZSBsb2cgd2lsbCBjb250YWluIGEgcmVw b3J0IG9mIHdoaWNoIGZpbGVzIGZhaWxlZCB0byBmb3JtYXQgcHJvcGVybHksIGFsbG93aW5nIHRo ZSB1c2VyIHRvIHJ1biBVbmNydXN0aWZ5DQo+ICthZ2FpbnN0IHRoZSBmaWxlIGxvY2FsbHkgdG8g Zml4IHRoZSBpc3N1ZS4gSWYgdGhlIGBPdXRwdXRGaWxlRGlmZnNgIGNvbmZpZ3VyYXRpb24gb3B0 aW9uIGlzIHNldCB0byBgVHJ1ZWAsIHRoZSBwbHVnaW4NCj4gK3dpbGwgb3V0cHV0IGRpZmYgY2h1 bmtzIGZvciBhbGwgY29kZSBmb3JtYXR0aW5nIGlzc3VlcyBpbiB0aGUgdGVzdCBjYXNlIGxvZy4N Cj4gZGlmZiAtLWdpdCBhLy5weXRvb2wvUGx1Z2luL1VuY3J1c3RpZnlDaGVjay9VbmNydXN0aWZ5 Q2hlY2sucHkgYi8ucHl0b29sL1BsdWdpbi9VbmNydXN0aWZ5Q2hlY2svVW5jcnVzdGlmeUNoZWNr LnB5DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uNTk1MzQ0 NjlhMmQzDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvLnB5dG9vbC9QbHVnaW4vVW5jcnVzdGlm eUNoZWNrL1VuY3J1c3RpZnlDaGVjay5weQ0KPiBAQCAtMCwwICsxLDYxNyBAQA0KPiArIyBAZmls ZSBVbmNydXN0aWZ5Q2hlY2sucHkNCj4gKyMNCj4gKyMgQW4gZWRrMi1weXRvb2wgYmFzZWQgcGx1 Z2luIHdyYXBwZXIgZm9yIFVuY3J1c3RpZnkNCj4gKyMNCj4gKyMgQ29weXJpZ2h0IChjKSBNaWNy b3NvZnQgQ29ycG9yYXRpb24uDQo+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1D bGF1c2UtUGF0ZW50DQo+ICsjIw0KPiAraW1wb3J0IGNvbmZpZ3BhcnNlcg0KPiAraW1wb3J0IGRp ZmZsaWINCj4gK2ltcG9ydCBlcnJubw0KPiAraW1wb3J0IGxvZ2dpbmcNCj4gK2ltcG9ydCBvcw0K PiAraW1wb3J0IHBhdGhsaWINCj4gK2ltcG9ydCBzaHV0aWwNCj4gK2ltcG9ydCB0aW1laXQNCj4g K2Zyb20gZWRrMnRvb2xleHQuZW52aXJvbm1lbnQgaW1wb3J0IHZlcnNpb25fYWdncmVnYXRvcg0K PiArZnJvbSBlZGsydG9vbGV4dC5lbnZpcm9ubWVudC5wbHVnaW5fbWFuYWdlciBpbXBvcnQgUGx1 Z2luTWFuYWdlcg0KPiArZnJvbSBlZGsydG9vbGV4dC5lbnZpcm9ubWVudC5wbHVnaW50eXBlcy5j aV9idWlsZF9wbHVnaW4gaW1wb3J0IElDaUJ1aWxkUGx1Z2luDQo+ICtmcm9tIGVkazJ0b29sZXh0 LmVudmlyb25tZW50LnBsdWdpbnR5cGVzLnVlZmlfaGVscGVyX3BsdWdpbiBpbXBvcnQgSGVscGVy RnVuY3Rpb25zDQo+ICtmcm9tIGVkazJ0b29sZXh0LmVudmlyb25tZW50LnZhcl9kaWN0IGltcG9y dCBWYXJEaWN0DQo+ICtmcm9tIGVkazJ0b29sbGliLmxvZy5qdW5pdF9yZXBvcnRfZm9ybWF0IGlt cG9ydCBKdW5pdFJlcG9ydFRlc3RDYXNlDQo+ICtmcm9tIGVkazJ0b29sbGliLnVlZmkuZWRrMi5w YXRoX3V0aWxpdGllcyBpbXBvcnQgRWRrMlBhdGgNCj4gK2Zyb20gZWRrMnRvb2xsaWIudXRpbGl0 eV9mdW5jdGlvbnMgaW1wb3J0ICBSdW5DbWQNCj4gK2Zyb20gaW8gaW1wb3J0IFN0cmluZ0lPDQo+ ICtmcm9tIHR5cGluZyBpbXBvcnQgQW55LCBEaWN0LCBMaXN0LCBUdXBsZQ0KPiArDQo+ICsjDQo+ ICsjIFByb3ZpZGUgbW9yZSB1c2VyIGZyaWVuZGx5IG1lc3NhZ2VzIGZvciBjZXJ0YWluIHNjZW5h cmlvcw0KPiArIw0KPiArY2xhc3MgVW5jcnVzdGlmeUV4Y2VwdGlvbihFeGNlcHRpb24pOg0KPiAr ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlLCBleGl0X2NvZGUpOg0KPiArICAgICAgICBz dXBlcigpLl9faW5pdF9fKG1lc3NhZ2UpDQo+ICsgICAgICAgIHNlbGYuZXhpdF9jb2RlID0gZXhp dF9jb2RlDQo+ICsNCj4gKw0KPiArY2xhc3MgVW5jcnVzdGlmeUFwcEVudlZhck5vdEZvdW5kRXhj ZXB0aW9uKFVuY3J1c3RpZnlFeGNlcHRpb24pOg0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBt ZXNzYWdlKToNCj4gKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhtZXNzYWdlLCAtMTAxKQ0KPiAr DQo+ICsNCj4gK2NsYXNzIFVuY3J1c3RpZnlBcHBWZXJzaW9uRXJyb3JFeGNlcHRpb24oVW5jcnVz dGlmeUV4Y2VwdGlvbik6DQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2UpOg0KPiAr ICAgICAgICBzdXBlcigpLl9faW5pdF9fKG1lc3NhZ2UsIC0xMDIpDQo+ICsNCj4gKw0KPiArY2xh c3MgVW5jcnVzdGlmeUFwcEV4ZWN1dGlvbkV4Y2VwdGlvbihVbmNydXN0aWZ5RXhjZXB0aW9uKToN Cj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZSk6DQo+ICsgICAgICAgIHN1cGVyKCku X19pbml0X18obWVzc2FnZSwgLTEwMykNCj4gKw0KPiArDQo+ICtjbGFzcyBVbmNydXN0aWZ5U3Rh bGVQbHVnaW5Gb3JtYXR0ZWRGaWxlc0V4Y2VwdGlvbihVbmNydXN0aWZ5RXhjZXB0aW9uKToNCj4g KyAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZSk6DQo+ICsgICAgICAgIHN1cGVyKCkuX19p bml0X18obWVzc2FnZSwgLTEyMCkNCj4gKw0KPiArDQo+ICtjbGFzcyBVbmNydXN0aWZ5SW5wdXRG aWxlQ3JlYXRpb25FcnJvckV4Y2VwdGlvbihVbmNydXN0aWZ5RXhjZXB0aW9uKToNCj4gKyAgICBk ZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZSk6DQo+ICsgICAgICAgIHN1cGVyKCkuX19pbml0X18o bWVzc2FnZSwgLTEyMSkNCj4gKw0KPiArY2xhc3MgVW5jcnVzdGlmeUludmFsaWRJZ25vcmVTdGFu ZGFyZFBhdGhzRXhjZXB0aW9uKFVuY3J1c3RpZnlFeGNlcHRpb24pOg0KPiArICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBtZXNzYWdlKToNCj4gKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhtZXNzYWdl LCAtMTIyKQ0KPiArDQo+ICtjbGFzcyBVbmNydXN0aWZ5R2l0SWdub3JlRmlsZUV4Y2VwdGlvbihV bmNydXN0aWZ5RXhjZXB0aW9uKToNCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZSk6 DQo+ICsgICAgICAgIHN1cGVyKCkuX19pbml0X18obWVzc2FnZSwgLTE0MCkNCj4gKw0KPiArDQo+ ICtjbGFzcyBVbmNydXN0aWZ5R2l0U3VibW9kdWxlRXhjZXB0aW9uKFVuY3J1c3RpZnlFeGNlcHRp b24pOg0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlKToNCj4gKyAgICAgICAgc3Vw ZXIoKS5fX2luaXRfXyhtZXNzYWdlLCAtMTQxKQ0KPiArDQo+ICsNCj4gK2NsYXNzIFVuY3J1c3Rp ZnlDaGVjayhJQ2lCdWlsZFBsdWdpbik6DQo+ICsgICAgIiIiDQo+ICsgICAgQSBDaUJ1aWxkUGx1 Z2luIHRoYXQgdXNlcyBVbmNydXN0aWZ5IHRvIGNoZWNrIHRoZSBzb3VyY2UgZmlsZXMgaW4gdGhl DQo+ICsgICAgcGFja2FnZSBiZWluZyB0ZXN0ZWQgZm9yIGNvZGluZyBzdGFuZGFyZCBpc3N1ZXMu DQo+ICsNCj4gKyAgICBCeSBkZWZhdWx0LCB0aGUgcGx1Z2luIHJ1bnMgYWdhaW5zdCBzdGFuZGFy ZCBDIHNvdXJjZSBmaWxlIGV4dGVuc2lvbnMgYnV0DQo+ICsgICAgaXRzIGNvbmZpZ3VyYXRpb24g Y2FuIGJlIG1vZGlmaWVkIHRocm91Z2ggaXRzIGNvbmZpZ3VyYXRpb24gZmlsZS4NCj4gKw0KPiAr ICAgIENvbmZpZ3VyYXRpb24gb3B0aW9uczoNCj4gKyAgICAiVW5jcnVzdGlmeUNoZWNrIjogew0K PiArICAgICAgICAiQWRkaXRpb25hbEluY2x1ZGVQYXRocyI6IFtdLCAjIEFkZGl0aW9uYWwgcGF0 aHMgdG8gY2hlY2sgZm9ybWF0dGluZyAod2lsZGNhcmRzIHN1cHBvcnRlZCkuDQo+ICsgICAgICAg ICJBdWRpdE9ubHkiOiBGYWxzZSwgICAgICAgICAgICMgRG9uJ3QgZmFpbCB0aGUgYnVpbGQgaWYg dGhlcmUgYXJlIGVycm9ycy4gIEp1c3QgbG9nIHRoZW0uDQo+ICsgICAgICAgICJDb25maWdGaWxl UGF0aCI6ICIiLCAgICAgICAgICMgQ3VzdG9tIHBhdGggdG8gYW4gVW5jcnVzdGlmeSBjb25maWcg ZmlsZS4NCj4gKyAgICAgICAgIklnbm9yZVN0YW5kYXJkUGF0aHMiOiBbXSwgICAgIyBTdGFuZGFy ZCBQbHVnaW4gZGVmaW5lZCBwYXRocyB0aGF0IHNob3VsZCBiZSBpZ25vcmVkLg0KPiArICAgICAg ICAiT3V0cHV0RmlsZURpZmZzIjogRmFsc2UsICAgICAjIE91dHB1dCBjaHVua3Mgb2YgZm9ybWF0 dGluZyBkaWZmcyBpbiB0aGUgdGVzdCBjYXNlIGxvZy4NCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIyBUaGlzIGNhbiBzaWduaWZpY2FudGx5IHNsb3cgZG93biB0aGUg cGx1Z2luIG9uIHZlcnkgbGFyZ2UgcGFja2FnZXMuDQo+ICsgICAgICAgICJTa2lwR2l0RXhjbHVz aW9ucyI6IEZhbHNlICAgICMgRG9uJ3QgZXhjbHVkZSBnaXQgaWdub3JlZCBmaWxlcyBhbmQgZmls ZXMgaW4gZ2l0IHN1Ym1vZHVsZXMuDQo+ICsgICAgfQ0KPiArICAgICIiIg0KPiArDQo+ICsgICAg Iw0KPiArICAgICMgQnkgZGVmYXVsdCwgdXNlIGFuICJ1bmNydXN0aWZ5LmNmZyIgY29uZmlnIGZp bGUgaW4gdGhlIHBsdWdpbiBkaXJlY3RvcnkNCj4gKyAgICAjIEEgcGFja2FnZSBjYW4gb3ZlcnJp ZGUgdGhpcyBwYXRoIHZpYSAiQ29uZmlnRmlsZVBhdGgiDQo+ICsgICAgIw0KPiArICAgICMgTm90 ZTogVmFsdWVzIHNwZWNpZmllZCB2aWEgIkNvbmZpZ0ZpbGVQYXRoIiBhcmUgcmVsYXRpdmUgdG8g dGhlIHBhY2thZ2UNCj4gKyAgICAjDQo+ICsgICAgREVGQVVMVF9DT05GSUdfRklMRV9QQVRIID0g b3MucGF0aC5qb2luKA0KPiArICAgICAgICBwYXRobGliLlBhdGgoX19maWxlX18pLnBhcmVudC5y ZXNvbHZlKCksICJ1bmNydXN0aWZ5LmNmZyIpDQo+ICsNCj4gKyAgICAjDQo+ICsgICAgIyBUaGUg ZXh0ZW5zaW9uIHVzZWQgZm9yIGZvcm1hdHRlZCBmaWxlcyBwcm9kdWNlZCBieSB0aGlzIHBsdWdp bg0KPiArICAgICMNCj4gKyAgICBGT1JNQVRURURfRklMRV9FWFRFTlNJT04gPSAiLnVuY3J1c3Rp ZnlfcGx1Z2luIg0KPiArDQo+ICsgICAgIw0KPiArICAgICMgQSBwYWNrYWdlIGNhbiBhZGQgYW55 IGFkZGl0aW9uYWwgcGF0aHMgd2l0aCAiQWRkaXRpb25hbEluY2x1ZGVQYXRocyINCj4gKyAgICAj IEEgcGFja2FnZSBjYW4gcmVtb3ZlIGFueSBvZiB0aGVzZSBwYXRocyB3aXRoICJJZ25vcmVTdGFu ZGFyZFBhdGhzIg0KPiArICAgICMNCj4gKyAgICBTVEFOREFSRF9QTFVHSU5fREVGSU5FRF9QQVRI UyA9ICgiKi5jIiwgIiouaCIpDQo+ICsNCj4gKyAgICAjDQo+ICsgICAgIyBUaGUgVW5jcnVzdGlm eSBhcHBsaWNhdGlvbiBwYXRoIHNob3VsZCBzZXQgaW4gdGhpcyBlbnZpcm9ubWVudCB2YXJpYWJs ZQ0KPiArICAgICMNCj4gKyAgICBVTkNSVVNUSUZZX1BBVEhfRU5WX0tFWSA9ICJVTkNSVVNUSUZZ X0NJX1BBVEgiDQo+ICsNCj4gKyAgICBkZWYgR2V0VGVzdE5hbWUoc2VsZiwgcGFja2FnZW5hbWU6 IHN0ciwgZW52aXJvbm1lbnQ6IFZhckRpY3QpIC0+IFR1cGxlOg0KPiArICAgICAgICAiIiIgUHJv dmlkZSB0aGUgdGVzdGNhc2UgbmFtZSBhbmQgY2xhc3NuYW1lIGZvciB1c2UgaW4gcmVwb3J0aW5n DQo+ICsNCj4gKyAgICAgICAgICAgIEFyZ3M6DQo+ICsgICAgICAgICAgICAgIHBhY2thZ2VuYW1l OiBzdHJpbmcgY29udGFpbmluZyBuYW1lIG9mIHBhY2thZ2UgdG8gYnVpbGQNCj4gKyAgICAgICAg ICAgICAgZW52aXJvbm1lbnQ6IFRoZSBWYXJEaWN0IGZvciB0aGUgdGVzdCB0byBydW4gaW4NCj4g KyAgICAgICAgICAgIFJldHVybnM6DQo+ICsgICAgICAgICAgICAgICAgQSB0dXBsZSBjb250YWlu aW5nIHRoZSB0ZXN0Y2FzZSBuYW1lIGFuZCB0aGUgY2xhc3NuYW1lDQo+ICsgICAgICAgICAgICAg ICAgKHRlc3RjYXNlbmFtZSwgY2xhc3NuYW1lKQ0KPiArICAgICAgICAgICAgICAgIHRlc3RjbGFz c25hbWU6IGEgZGVzY3JpcHRpdmUgc3RyaW5nIGZvciB0aGUgdGVzdGNhc2UgY2FuIGluY2x1ZGUg d2hpdGVzcGFjZQ0KPiArICAgICAgICAgICAgICAgIGNsYXNzbmFtZTogc2hvdWxkIGJlIHBhdHRl cm5lZCA8cGFja2FnZW5hbWU+LjxwbHVnaW4+LjxvcHRpb25hbGx5IGFueSB1bmlxdWUgY29uZGl0 aW9uPg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgcmV0dXJuICgiQ2hlY2sgZmlsZSBjb2Rp bmcgc3RhbmRhcmQgY29tcGxpYW5jZSBpbiAiICsgcGFja2FnZW5hbWUsIHBhY2thZ2VuYW1lICsg Ii5VbmNydXN0aWZ5Q2hlY2siKQ0KPiArDQo+ICsgICAgZGVmIFJ1bkJ1aWxkUGx1Z2luKHNlbGYs IHBhY2thZ2VfcmVsX3BhdGg6IHN0ciwgZWRrMl9wYXRoOiBFZGsyUGF0aCwgcGFja2FnZV9jb25m aWc6IERpY3Rbc3RyLCBMaXN0W3N0cl1dLA0KPiBlbnZpcm9ubWVudF9jb25maWc6IEFueSwgcGx1 Z2luX21hbmFnZXI6IFBsdWdpbk1hbmFnZXIsIHBsdWdpbl9tYW5hZ2VyX2hlbHBlcjogSGVscGVy RnVuY3Rpb25zLCB0YzogSnVuaXRSZXBvcnRUZXN0Q2FzZSwNCj4gb3V0cHV0X3N0cmVhbT1Ob25l KSAtPiBpbnQ6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBFeHRlcm5hbCBmdW5jdGlvbiBv ZiBwbHVnaW4uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBwZXJmb3JtIHRoZSB0YXNrIG9mIHRo ZSBDaUJ1aWxkIFBsdWdpbi4NCj4gKw0KPiArICAgICAgICBBcmdzOg0KPiArICAgICAgICAgIC0g cGFja2FnZV9yZWxfcGF0aDogZWRrMiB3b3Jrc3BhY2UgcmVsYXRpdmUgcGF0aCB0byB0aGUgcGFj a2FnZQ0KPiArICAgICAgICAgIC0gZWRrMl9wYXRoOiBFZGsyUGF0aCBvYmplY3Qgd2l0aCB3b3Jr c3BhY2UgYW5kIHBhY2thZ2VzIHBhdGhzDQo+ICsgICAgICAgICAgLSBwYWNrYWdlX2NvbmZpZzog RGljdGlvbmFyeSB3aXRoIHRoZSBwYWNrYWdlIGNvbmZpZ3VyYXRpb24NCj4gKyAgICAgICAgICAt IGVudmlyb25tZW50X2NvbmZpZzogRW52aXJvbm1lbnQgY29uZmlndXJhdGlvbg0KPiArICAgICAg ICAgIC0gcGx1Z2luX21hbmFnZXI6IFBsdWdpbiBNYW5hZ2VyIEluc3RhbmNlDQo+ICsgICAgICAg ICAgLSBwbHVnaW5fbWFuYWdlcl9oZWxwZXI6IFBsdWdpbiBNYW5hZ2VyIEhlbHBlciBJbnN0YW5j ZQ0KPiArICAgICAgICAgIC0gdGM6IEpVbml0IHRlc3QgY2FzZQ0KPiArICAgICAgICAgIC0gb3V0 cHV0X3N0cmVhbTogVGhlIFN0cmluZ0lPIG91dHB1dCBzdHJlYW0gZnJvbSB0aGlzIHBsdWdpbiAo bG9nZ2luZykNCj4gKw0KPiArICAgICAgICBSZXR1cm5zDQo+ICsgICAgICAgICAgPjAgOiBOdW1i ZXIgb2YgZXJyb3JzIGZvdW5kDQo+ICsgICAgICAgICAgMCAgOiBQYXNzZWQgc3VjY2Vzc2Z1bGx5 DQo+ICsgICAgICAgICAgLTEgOiBTa2lwcGVkIGZvciBtaXNzaW5nIHByZXJlcQ0KPiArICAgICAg ICAiIiINCj4gKyAgICAgICAgdHJ5Og0KPiArICAgICAgICAgICAgIyBJbml0aWFsaXplIHBsdWdp biBhbmQgY2hlY2sgcHJlLXJlcXVpc2l0ZXMuDQo+ICsgICAgICAgICAgICBzZWxmLl9pbml0aWFs aXplX2Vudmlyb25tZW50X2luZm8oDQo+ICsgICAgICAgICAgICAgICAgcGFja2FnZV9yZWxfcGF0 aCwgZWRrMl9wYXRoLCBwYWNrYWdlX2NvbmZpZywgdGMpDQo+ICsgICAgICAgICAgICBzZWxmLl9p bml0aWFsaXplX2NvbmZpZ3VyYXRpb24oKQ0KPiArICAgICAgICAgICAgc2VsZi5fY2hlY2tfZm9y X3ByZWV4aXN0aW5nX2Zvcm1hdHRlZF9maWxlcygpDQo+ICsNCj4gKyAgICAgICAgICAgICMgTG9n IGltcG9ydGFudCBjb250ZXh0IGluZm9ybWF0aW9uLg0KPiArICAgICAgICAgICAgc2VsZi5fbG9n X3VuY3J1c3RpZnlfYXBwX2luZm8oKQ0KPiArDQo+ICsgICAgICAgICAgICAjIEdldCB0ZW1wbGF0 ZSBmaWxlIGNvbnRlbnRzIGlmIHNwZWNpZmllZA0KPiArICAgICAgICAgICAgc2VsZi5fZ2V0X3Rl bXBsYXRlX2ZpbGVfY29udGVudHMoKQ0KPiArDQo+ICsgICAgICAgICAgICAjIENyZWF0ZSBtZXRh IGlucHV0IGZpbGVzICYgZGlyZWN0b3JpZXMNCj4gKyAgICAgICAgICAgIHNlbGYuX2NyZWF0ZV90 ZW1wX3dvcmtpbmdfZGlyZWN0b3J5KCkNCj4gKyAgICAgICAgICAgIHNlbGYuX2NyZWF0ZV91bmNy dXN0aWZ5X2ZpbGVfbGlzdF9maWxlKCkNCj4gKw0KPiArICAgICAgICAgICAgc2VsZi5fcnVuX3Vu Y3J1c3RpZnkoKQ0KPiArDQo+ICsgICAgICAgICAgICAjIFBvc3QtZXhlY3V0aW9uIGFjdGlvbnMu DQo+ICsgICAgICAgICAgICBzZWxmLl9wcm9jZXNzX3VuY3J1c3RpZnlfcmVzdWx0cygpDQo+ICsN Cj4gKyAgICAgICAgZXhjZXB0IFVuY3J1c3RpZnlFeGNlcHRpb24gYXMgZToNCj4gKyAgICAgICAg ICAgIHNlbGYuX3RjLkxvZ1N0ZEVycm9yKA0KPiArICAgICAgICAgICAgICAgIGYiVW5jcnVzdGlm eSBlcnJvciB7ZS5leGl0X2NvZGV9LiBEZXRhaWxzOlxuXG57c3RyKGUpfSIpDQo+ICsgICAgICAg ICAgICBsb2dnaW5nLndhcm5pbmcoDQo+ICsgICAgICAgICAgICAgICAgZiJVbmNydXN0aWZ5IGVy cm9yIHtlLmV4aXRfY29kZX0uIERldGFpbHM6XG5cbntzdHIoZSl9IikNCj4gKyAgICAgICAgICAg IHJldHVybiAtMQ0KPiArICAgICAgICBlbHNlOg0KPiArICAgICAgICAgICAgaWYgc2VsZi5fZm9y bWF0dGVkX2ZpbGVfZXJyb3JfY291bnQgPiAwOg0KPiArICAgICAgICAgICAgICAgIGlmIHNlbGYu X2F1ZGl0X29ubHlfbW9kZToNCj4gKyAgICAgICAgICAgICAgICAgICAgbG9nZ2luZy5pbmZvKA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgIlNldHRpbmcgdGVzdCBhcyBza2lwcGVkIHNpbmNl IEF1ZGl0T25seSBpcyBlbmFibGVkIikNCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fdGMu U2V0U2tpcHBlZCgpDQo+ICsgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMQ0KPiArICAgICAg ICAgICAgICAgIGVsc2U6DQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX3RjLlNldEZhaWxl ZCgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYie3NlbGYuX3BsdWdpbl9uYW1lfSBmYWls ZWQgZHVlIHRvIHtzZWxmLl9mb3JtYXR0ZWRfZmlsZV9lcnJvcl9jb3VudH0gaW5jb3JyZWN0bHkg Zm9ybWF0dGVkDQo+IGZpbGVzLiIsICJDSEVDS19GQUlMRUQiKQ0KPiArICAgICAgICAgICAgZWxz ZToNCj4gKyAgICAgICAgICAgICAgICBzZWxmLl90Yy5TZXRTdWNjZXNzKCkNCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLl9mb3JtYXR0ZWRfZmlsZV9lcnJvcl9jb3VudA0KPiArICAgICAgICBm aW5hbGx5Og0KPiArICAgICAgICAgICAgc2VsZi5fY2xlYW51cF90ZW1wb3JhcnlfZm9ybWF0dGVk X2ZpbGVzKCkNCj4gKyAgICAgICAgICAgIHNlbGYuX2NsZWFudXBfdGVtcG9yYXJ5X2RpcmVjdG9y eSgpDQo+ICsNCj4gKyAgICBkZWYgX2luaXRpYWxpemVfY29uZmlndXJhdGlvbihzZWxmKSAtPiBO b25lOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgSW5pdGlhbGl6ZXMgcGx1Z2luIGNvbmZp Z3VyYXRpb24uDQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBzZWxmLl9pbml0aWFsaXplX2Fw cF9pbmZvKCkNCj4gKyAgICAgICAgc2VsZi5faW5pdGlhbGl6ZV9jb25maWdfZmlsZV9pbmZvKCkN Cj4gKyAgICAgICAgc2VsZi5faW5pdGlhbGl6ZV9maWxlX3RvX2Zvcm1hdF9pbmZvKCkNCj4gKyAg ICAgICAgc2VsZi5faW5pdGlhbGl6ZV90ZXN0X2Nhc2Vfb3V0cHV0X29wdGlvbnMoKQ0KPiArDQo+ ICsgICAgZGVmIF9jaGVja19mb3JfcHJlZXhpc3RpbmdfZm9ybWF0dGVkX2ZpbGVzKHNlbGYpIC0+ IE5vbmU6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBDaGVja3MgaWYgYW55IGZvcm1hdHRl ZCBmaWxlcyBmcm9tIHByaW9yIGV4ZWN1dGlvbiBhcmUgcHJlc2VudC4NCj4gKw0KPiArICAgICAg ICBFeGlzdGVuY2Ugb2Ygc3VjaCBmaWxlcyBpcyBhbiB1bmV4cGVjdGVkIGNvbmRpdGlvbi4gVGhp cyBtaWdodCByZXN1bHQNCj4gKyAgICAgICAgZnJvbSBhbiBlcnJvciB0aGF0IG9jY3VycmVkIGR1 cmluZyBhIHByZXZpb3VzIHJ1biBvciBhIHByZW1hdHVyZSBleGl0IGZyb20gYSBkZWJ1ZyBzY2Vu YXJpby4gSW4gYW55IGNhc2UsIHRoZQ0KPiBwYWNrYWdlIHNob3VsZCBiZSBjbGVhbiBiZWZvcmUg c3RhcnRpbmcgYSBuZXcgcnVuLg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgcHJlX2V4aXN0 aW5nX2Zvcm1hdHRlZF9maWxlX2NvdW50ID0gbGVuKA0KPiArICAgICAgICAgICAgW3N0cihwYXRo LnJlc29sdmUoKSkgZm9yIHBhdGggaW4NCj4gcGF0aGxpYi5QYXRoKHNlbGYuX2Fic19wYWNrYWdl X3BhdGgpLnJnbG9iKGYnKntVbmNydXN0aWZ5Q2hlY2suRk9STUFUVEVEX0ZJTEVfRVhURU5TSU9O fScpXSkNCj4gKw0KPiArICAgICAgICBpZiBwcmVfZXhpc3RpbmdfZm9ybWF0dGVkX2ZpbGVfY291 bnQgPiAwOg0KPiArICAgICAgICAgICAgcmFpc2UgVW5jcnVzdGlmeVN0YWxlUGx1Z2luRm9ybWF0 dGVkRmlsZXNFeGNlcHRpb24oDQo+ICsgICAgICAgICAgICAgICAgZiJ7cHJlX2V4aXN0aW5nX2Zv cm1hdHRlZF9maWxlX2NvdW50fSBmb3JtYXR0ZWQgZmlsZXMgYWxyZWFkeSBleGlzdC4gVG8gcHJl dmVudCBvdmVyd3JpdGluZyB0aGVzZSBmaWxlcywNCj4gcGxlYXNlIHJlbW92ZSB0aGVtIGJlZm9y ZSBydW5uaW5nIHRoaXMgcGx1Z2luLiIpDQo+ICsNCj4gKyAgICBkZWYgX2NsZWFudXBfdGVtcG9y YXJ5X2RpcmVjdG9yeShzZWxmKSAtPiBOb25lOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAg Q2xlYW5zIHVwIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHVzZWQgZm9yIHRoaXMgZXhlY3V0aW9u IGluc3RhbmNlLg0KPiArDQo+ICsgICAgICAgIFRoaXMgcmVtb3ZlcyB0aGUgZGlyZWN0b3J5IGFu ZCBhbGwgZmlsZXMgY3JlYXRlZCBkdXJpbmcgdGhpcyBpbnN0YW5jZS4NCj4gKyAgICAgICAgIiIi DQo+ICsgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ193b3JraW5nX2RpcicpOg0KPiArICAgICAg ICAgICAgc2VsZi5fcmVtb3ZlX3RyZWUoc2VsZi5fd29ya2luZ19kaXIpDQo+ICsNCj4gKyAgICBk ZWYgX2NsZWFudXBfdGVtcG9yYXJ5X2Zvcm1hdHRlZF9maWxlcyhzZWxmKSAtPiBOb25lOg0KPiAr ICAgICAgICAiIiINCj4gKyAgICAgICAgQ2xlYW5zIHVwIHRoZSB0ZW1wb3JhcnkgZm9ybW1hdHRl ZCBmaWxlcyBwcm9kdWNlZCBieSBVbmNydXN0aWZ5Lg0KPiArDQo+ICsgICAgICAgIFRoaXMgd2ls bCByZWN1cnNpdmVseSByZW1vdmUgYWxsIGZvcm1hdHRlZCBmaWxlcyBnZW5lcmF0ZWQgYnkgVW5j cnVzdGlmeQ0KPiArICAgICAgICBkdXJpbmcgdGhpcyBleGVjdXRpb24gaW5zdGFuY2UuDQo+ICsg ICAgICAgICIiIg0KPiArICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdfYWJzX3BhY2thZ2VfcGF0 aCcpOg0KPiArICAgICAgICAgICAgZm9ybWF0dGVkX2ZpbGVzID0gW3N0cihwYXRoLnJlc29sdmUo KSkgZm9yIHBhdGggaW4gcGF0aGxpYi5QYXRoKA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2Fi c19wYWNrYWdlX3BhdGgpLnJnbG9iKGYnKntVbmNydXN0aWZ5Q2hlY2suRk9STUFUVEVEX0ZJTEVf RVhURU5TSU9OfScpXQ0KPiArDQo+ICsgICAgICAgICAgICBmb3IgZm9ybWF0dGVkX2ZpbGUgaW4g Zm9ybWF0dGVkX2ZpbGVzOg0KPiArICAgICAgICAgICAgICAgIG9zLnJlbW92ZShmb3JtYXR0ZWRf ZmlsZSkNCj4gKw0KPiArICAgIGRlZiBfY3JlYXRlX3RlbXBfd29ya2luZ19kaXJlY3Rvcnkoc2Vs ZikgLT4gTm9uZToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIENyZWF0ZXMgdGhlIHRlbXBv cmFyeSBkaXJlY3RvcnkgdXNlZCBmb3IgdGhpcyBleGVjdXRpb24gaW5zdGFuY2UuDQo+ICsgICAg ICAgICIiIg0KPiArICAgICAgICBzZWxmLl93b3JraW5nX2RpciA9IG9zLnBhdGguam9pbigNCj4g KyAgICAgICAgICAgIHNlbGYuX2Fic193b3Jrc3BhY2VfcGF0aCwgIkJ1aWxkIiwgIi5weXRvb2wi LCAiUGx1Z2luIiwgZiJ7c2VsZi5fcGx1Z2luX25hbWV9IikNCj4gKw0KPiArICAgICAgICB0cnk6 DQo+ICsgICAgICAgICAgICBwYXRobGliLlBhdGgoc2VsZi5fd29ya2luZ19kaXIpLm1rZGlyKHBh cmVudHM9VHJ1ZSwgZXhpc3Rfb2s9VHJ1ZSkNCj4gKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMg ZToNCj4gKyAgICAgICAgICAgIHJhaXNlIFVuY3J1c3RpZnlJbnB1dEZpbGVDcmVhdGlvbkVycm9y RXhjZXB0aW9uKA0KPiArICAgICAgICAgICAgICAgIGYiRXJyb3IgY3JlYXRpbmcgcGx1Z2luIGRp cmVjdG9yeSB7c2VsZi5fd29ya2luZ19kaXJ9LlxuXG57cmVwcihlKX0uIikNCj4gKw0KPiArICAg IGRlZiBfY3JlYXRlX3VuY3J1c3RpZnlfZmlsZV9saXN0X2ZpbGUoc2VsZikgLT4gTm9uZToNCj4g KyAgICAgICAgIiIiDQo+ICsgICAgICAgIENyZWF0ZXMgdGhlIGZpbGUgd2l0aCB0aGUgbGlzdCBv ZiBzb3VyY2UgZmlsZXMgZm9yIFVuY3J1c3RpZnkgdG8gcHJvY2Vzcy4NCj4gKyAgICAgICAgIiIi DQo+ICsgICAgICAgIHNlbGYuX2FwcF9pbnB1dF9maWxlX3BhdGggPSBvcy5wYXRoLmpvaW4oDQo+ ICsgICAgICAgICAgICBzZWxmLl93b3JraW5nX2RpciwgInVuY3J1c3RpZnlfZmlsZV9saXN0LnR4 dCIpDQo+ICsNCj4gKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuX2FwcF9pbnB1dF9maWxlX3BhdGgs ICd3JywgZW5jb2Rpbmc9J3V0ZjgnKSBhcyBmOg0KPiArICAgICAgICAgICAgZi53cml0ZWxpbmVz KGYiXG4iLmpvaW4oc2VsZi5fYWJzX2ZpbGVfcGF0aHNfdG9fZm9ybWF0KSkNCj4gKw0KPiArICAg IGRlZiBfZXhlY3V0ZV91bmNydXN0aWZ5KHNlbGYpIC0+IE5vbmU6DQo+ICsgICAgICAgICIiIg0K PiArICAgICAgICBFeGVjdXRlcyBVbmNydXN0aWZ5IHdpdGggdGhlIGluaXRpYWxpemVkIGNvbmZp Z3VyYXRpb24uDQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBvdXRwdXQgPSBTdHJpbmdJTygp DQo+ICsgICAgICAgIHNlbGYuX2FwcF9leGl0X2NvZGUgPSBSdW5DbWQoDQo+ICsgICAgICAgICAg ICBzZWxmLl9hcHBfcGF0aCwNCj4gKyAgICAgICAgICAgIGYiLWMge3NlbGYuX2FwcF9jb25maWdf ZmlsZX0gLUYge3NlbGYuX2FwcF9pbnB1dF9maWxlX3BhdGh9IC0taWYtY2hhbmdlZCAtLXN1ZmZp eA0KPiB7VW5jcnVzdGlmeUNoZWNrLkZPUk1BVFRFRF9GSUxFX0VYVEVOU0lPTn0iLCBvdXRzdHJl YW09b3V0cHV0KQ0KPiArICAgICAgICBzZWxmLl9hcHBfb3V0cHV0ID0gb3V0cHV0LmdldHZhbHVl KCkuc3RyaXAoKS5zcGxpdGxpbmVzKCkNCj4gKw0KPiArICAgIGRlZiBfZ2V0X2dpdF9pZ25vcmVk X3BhdGhzKHNlbGYpIC0+IExpc3Rbc3RyXToNCj4gKyAgICAgICAgIiIiIg0KPiArICAgICAgICBS ZXR1cm5zIGEgbGlzdCBvZiBmaWxlIGFic29sdXRlIHBhdGggc3RyaW5ncyB0byBhbGwgZmlsZXMg aWdub3JlZCBpbiB0aGlzIGdpdCByZXBvc2l0b3J5Lg0KPiArDQo+ICsgICAgICAgIElmIGdpdCBp cyBub3QgZm91bmQsIGFuIGVtcHR5IGxpc3Qgd2lsbCBiZSByZXR1cm5lZC4NCj4gKyAgICAgICAg IiIiDQo+ICsgICAgICAgIGlmIG5vdCBzaHV0aWwud2hpY2goImdpdCIpOg0KPiArICAgICAgICAg ICAgbG9nZ2luZy53YXJuKA0KPiArICAgICAgICAgICAgICAgICJHaXQgaXMgbm90IGZvdW5kIG9u IHRoaXMgc3lzdGVtLiBHaXQgc3VibW9kdWxlIHBhdGhzIHdpbGwgbm90IGJlIGNvbnNpZGVyZWQu IikNCj4gKyAgICAgICAgICAgIHJldHVybiBbXQ0KPiArDQo+ICsgICAgICAgIG91dHN0cmVhbV9i dWZmZXIgPSBTdHJpbmdJTygpDQo+ICsgICAgICAgIGV4aXRfY29kZSA9IFJ1bkNtZCgiZ2l0Iiwg ImxzLWZpbGVzIC0tb3RoZXIiLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya2lu Z2Rpcj1zZWxmLl9hYnNfd29ya3NwYWNlX3BhdGgsIG91dHN0cmVhbT1vdXRzdHJlYW1fYnVmZmVy LCBsb2dnaW5nX2xldmVsPWxvZ2dpbmcuTk9UU0VUKQ0KPiArICAgICAgICBpZiAoZXhpdF9jb2Rl ICE9IDApOg0KPiArICAgICAgICAgICAgcmFpc2UgVW5jcnVzdGlmeUdpdElnbm9yZUZpbGVFeGNl cHRpb24oDQo+ICsgICAgICAgICAgICAgICAgZiJBbiBlcnJvciBvY2N1cnJlZCByZWFkaW5nIGdp dCBpZ25vcmUgc2V0dGluZ3MuIFRoaXMgd2lsbCBwcmV2ZW50IFVuY3J1c3RpZnkgZnJvbSBydW5u aW5nIGFnYWluc3QgdGhlDQo+IGV4cGVjdGVkIHNldCBvZiBmaWxlcy4iKQ0KPiArDQo+ICsgICAg ICAgICMgTm90ZTogVGhpcyB3aWxsIHBvdGVudGlhbGx5IGJlIGEgbGFyZ2UgbGlzdCwgYnV0IGF0 IGxlYXN0IHNvcnRlZA0KPiArICAgICAgICByZXR1cm4gb3V0c3RyZWFtX2J1ZmZlci5nZXR2YWx1 ZSgpLnN0cmlwKCkuc3BsaXRsaW5lcygpDQo+ICsNCj4gKyAgICBkZWYgX2dldF9naXRfc3VibW9k dWxlX3BhdGhzKHNlbGYpIC0+IExpc3Rbc3RyXToNCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAg IFJldHVybnMgYSBsaXN0IG9mIGRpcmVjdG9yeSBhYnNvbHV0ZSBwYXRoIHN0cmluZ3MgdG8gdGhl IHJvb3Qgb2YgZWFjaCBzdWJtb2R1bGUgaW4gdGhlIHdvcmtzcGFjZSByZXBvc2l0b3J5Lg0KPiAr DQo+ICsgICAgICAgIElmIGdpdCBpcyBub3QgZm91bmQsIGFuIGVtcHR5IGxpc3Qgd2lsbCBiZSBy ZXR1cm5lZC4NCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIGlmIG5vdCBzaHV0aWwud2hpY2go ImdpdCIpOg0KPiArICAgICAgICAgICAgbG9nZ2luZy53YXJuKA0KPiArICAgICAgICAgICAgICAg ICJHaXQgaXMgbm90IGZvdW5kIG9uIHRoaXMgc3lzdGVtLiBHaXQgc3VibW9kdWxlIHBhdGhzIHdp bGwgbm90IGJlIGNvbnNpZGVyZWQuIikNCj4gKyAgICAgICAgICAgIHJldHVybiBbXQ0KPiArDQo+ ICsgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzZWxmLl9hYnNfd29ya3Nw YWNlX3BhdGgsICIuZ2l0bW9kdWxlcyIpKToNCj4gKyAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygN Cj4gKyAgICAgICAgICAgICAgICBmIi5naXRtb2R1bGVzIGZpbGUgZm91bmQuIEV4Y2x1ZGluZyBz dWJtb2R1bGVzIGluIHtzZWxmLl9wYWNrYWdlX25hbWV9LiIpDQo+ICsNCj4gKyAgICAgICAgICAg IG91dHN0cmVhbV9idWZmZXIgPSBTdHJpbmdJTygpDQo+ICsgICAgICAgICAgICBleGl0X2NvZGUg PSBSdW5DbWQoImdpdCIsICJjb25maWcgLS1maWxlIC5naXRtb2R1bGVzIC0tZ2V0LXJlZ2V4cCBw YXRoIiwgd29ya2luZ2Rpcj1zZWxmLl9hYnNfd29ya3NwYWNlX3BhdGgsDQo+IG91dHN0cmVhbT1v dXRzdHJlYW1fYnVmZmVyLCBsb2dnaW5nX2xldmVsPWxvZ2dpbmcuTk9UU0VUKQ0KPiArICAgICAg ICAgICAgaWYgKGV4aXRfY29kZSAhPSAwKToNCj4gKyAgICAgICAgICAgICAgICByYWlzZSBVbmNy dXN0aWZ5R2l0U3VibW9kdWxlRXhjZXB0aW9uKA0KPiArICAgICAgICAgICAgICAgICAgICBmIi5n aXRtb2R1bGUgZmlsZSBkZXRlY3RlZCBidXQgYW4gZXJyb3Igb2NjdXJyZWQgcmVhZGluZyB0aGUg ZmlsZS4gQ2Fubm90IHByb2NlZWQgd2l0aCB1bmtub3duDQo+IHN1Ym1vZHVsZSBwYXRocy4iKQ0K PiArDQo+ICsgICAgICAgICAgICBzdWJtb2R1bGVfcGF0aHMgPSBbXQ0KPiArICAgICAgICAgICAg Zm9yIGxpbmUgaW4gb3V0c3RyZWFtX2J1ZmZlci5nZXR2YWx1ZSgpLnN0cmlwKCkuc3BsaXRsaW5l cygpOg0KPiArICAgICAgICAgICAgICAgIHN1Ym1vZHVsZV9wYXRocy5hcHBlbmQoDQo+ICsgICAg ICAgICAgICAgICAgICAgIG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKHNlbGYuX2Fic193 b3Jrc3BhY2VfcGF0aCwgbGluZS5zcGxpdCgpWzFdKSkpDQo+ICsNCj4gKyAgICAgICAgICAgIHJl dHVybiBzdWJtb2R1bGVfcGF0aHMNCj4gKyAgICAgICAgZWxzZToNCj4gKyAgICAgICAgICAgIHJl dHVybiBbXQ0KPiArDQo+ICsgICAgZGVmIF9nZXRfdGVtcGxhdGVfZmlsZV9jb250ZW50cyhzZWxm KSAtPiBOb25lOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgR2V0cyB0aGUgY29udGVudHMg b2YgVW5jcnVzdGlmeSB0ZW1wbGF0ZSBmaWxlcyBpZiB0aGV5IGFyZSBzcGVjaWZpZWQNCj4gKyAg ICAgICAgaW4gdGhlIFVuY3J1c3RpZnkgY29uZmlndXJhdGlvbiBmaWxlLg0KPiArICAgICAgICAi IiINCj4gKw0KPiArICAgICAgICBzZWxmLl9maWxlX3RlbXBsYXRlX2NvbnRlbnRzID0gTm9uZQ0K PiArICAgICAgICBzZWxmLl9mdW5jX3RlbXBsYXRlX2NvbnRlbnRzID0gTm9uZQ0KPiArDQo+ICsg ICAgICAgICMgQWxsb3cgbm8gdmFsdWUgdG8gYWxsb3cgInNldCIgc3RhdGVtZW50cyBpbiB0aGUg Y29uZmlnIGZpbGUgd2hpY2ggZG8NCj4gKyAgICAgICAgIyBub3Qgc3BlY2lmeSB2YWx1ZSBhc3Np Z25tZW50DQo+ICsgICAgICAgIHBhcnNlciA9IGNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIoYWxs b3dfbm9fdmFsdWU9VHJ1ZSkNCj4gKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuX2FwcF9jb25maWdf ZmlsZSwgJ3InKSBhcyBjZjoNCj4gKyAgICAgICAgICAgIHBhcnNlci5yZWFkX3N0cmluZygiW2R1 bW15X3NlY3Rpb25dXG4iICsgY2YucmVhZCgpKQ0KPiArDQo+ICsgICAgICAgIHRyeToNCj4gKyAg ICAgICAgICAgIGZpbGVfdGVtcGxhdGVfbmFtZSA9IHBhcnNlclsiZHVtbXlfc2VjdGlvbiJdWyJj bXRfaW5zZXJ0X2ZpbGVfaGVhZGVyIl0NCj4gKw0KPiArICAgICAgICAgICAgZmlsZV90ZW1wbGF0 ZV9wYXRoID0gcGF0aGxpYi5QYXRoKGZpbGVfdGVtcGxhdGVfbmFtZSkNCj4gKw0KPiArICAgICAg ICAgICAgaWYgbm90IGZpbGVfdGVtcGxhdGVfcGF0aC5pc19maWxlKCk6DQo+ICsgICAgICAgICAg ICAgICAgZmlsZV90ZW1wbGF0ZV9wYXRoID0gcGF0aGxpYi5QYXRoKG9zLnBhdGguam9pbihzZWxm Ll9wbHVnaW5fcGF0aCwgZmlsZV90ZW1wbGF0ZV9uYW1lKSkNCj4gKyAgICAgICAgICAgICAgICBz ZWxmLl9maWxlX3RlbXBsYXRlX2NvbnRlbnRzID0gZmlsZV90ZW1wbGF0ZV9wYXRoLnJlYWRfdGV4 dCgpDQo+ICsgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoNCj4gKyAgICAgICAgICAgIGxvZ2dpbmcu d2FybigiQSBmaWxlIGhlYWRlciB0ZW1wbGF0ZSBpcyBub3Qgc3BlY2lmaWVkIGluIHRoZSBjb25m aWcgZmlsZS4iKQ0KPiArICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6DQo+ICsgICAg ICAgICAgICBsb2dnaW5nLndhcm4oIlRoZSBzcGVjaWZpZWQgZmlsZSBoZWFkZXIgdGVtcGxhdGUg ZmlsZSB3YXMgbm90IGZvdW5kLiIpDQo+ICsgICAgICAgIHRyeToNCj4gKyAgICAgICAgICAgIGZ1 bmNfdGVtcGxhdGVfbmFtZSA9IHBhcnNlclsiZHVtbXlfc2VjdGlvbiJdWyJjbXRfaW5zZXJ0X2Z1 bmNfaGVhZGVyIl0NCj4gKw0KPiArICAgICAgICAgICAgZnVuY190ZW1wbGF0ZV9wYXRoID0gcGF0 aGxpYi5QYXRoKGZ1bmNfdGVtcGxhdGVfbmFtZSkNCj4gKw0KPiArICAgICAgICAgICAgaWYgbm90 IGZ1bmNfdGVtcGxhdGVfcGF0aC5pc19maWxlKCk6DQo+ICsgICAgICAgICAgICAgICAgZnVuY190 ZW1wbGF0ZV9wYXRoID0gcGF0aGxpYi5QYXRoKG9zLnBhdGguam9pbihzZWxmLl9wbHVnaW5fcGF0 aCwgZnVuY190ZW1wbGF0ZV9uYW1lKSkNCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9mdW5jX3Rl bXBsYXRlX2NvbnRlbnRzID0gZnVuY190ZW1wbGF0ZV9wYXRoLnJlYWRfdGV4dCgpDQo+ICsgICAg ICAgIGV4Y2VwdCBLZXlFcnJvcjoNCj4gKyAgICAgICAgICAgIGxvZ2dpbmcud2FybigiQSBmdW5j dGlvbiBoZWFkZXIgdGVtcGxhdGUgaXMgbm90IHNwZWNpZmllZCBpbiB0aGUgY29uZmlnIGZpbGUu IikNCj4gKyAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOg0KPiArICAgICAgICAgICAg bG9nZ2luZy53YXJuKCJUaGUgc3BlY2lmaWVkIGZ1bmN0aW9uIGhlYWRlciB0ZW1wbGF0ZSBmaWxl IHdhcyBub3QgZm91bmQuIikNCj4gKw0KPiArICAgIGRlZiBfaW5pdGlhbGl6ZV9hcHBfaW5mbyhz ZWxmKSAtPiBOb25lOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgSW5pdGlhbGl6ZSBVbmNy dXN0aWZ5IGFwcGxpY2F0aW9uIGluZm9ybWF0aW9uLg0KPiArDQo+ICsgICAgICAgIFRoaXMgZnVu Y3Rpb24gd2lsbCBkZXRlcm1pbmUgdGhlIGFwcGxpY2F0aW9uIHBhdGggYW5kIHZlcnNpb24uDQo+ ICsgICAgICAgICIiIg0KPiArICAgICAgICAjIFZlcmlmeSBVbmNydXN0aWZ5IGlzIHNwZWNpZmll ZCBpbiB0aGUgZW52aXJvbm1lbnQuDQo+ICsgICAgICAgIGlmIFVuY3J1c3RpZnlDaGVjay5VTkNS VVNUSUZZX1BBVEhfRU5WX0tFWSBub3QgaW4gb3MuZW52aXJvbjoNCj4gKyAgICAgICAgICAgIHJh aXNlIFVuY3J1c3RpZnlBcHBFbnZWYXJOb3RGb3VuZEV4Y2VwdGlvbigNCj4gKyAgICAgICAgICAg ICAgICBmIlVuY3J1c3RpZnkgZW52aXJvbm1lbnQgdmFyaWFibGUge1VuY3J1c3RpZnlDaGVjay5V TkNSVVNUSUZZX1BBVEhfRU5WX0tFWX0gaXMgbm90IHByZXNlbnQuIikNCj4gKw0KPiArICAgICAg ICBzZWxmLl9hcHBfcGF0aCA9IHNodXRpbC53aGljaCgndW5jcnVzdGlmeScsIHBhdGg9b3MuZW52 aXJvbltVbmNydXN0aWZ5Q2hlY2suVU5DUlVTVElGWV9QQVRIX0VOVl9LRVldKQ0KPiArDQo+ICsg ICAgICAgIGlmIHNlbGYuX2FwcF9wYXRoIGlzIE5vbmU6DQo+ICsgICAgICAgICAgICByYWlzZSBG aWxlTm90Rm91bmRFcnJvcigNCj4gKyAgICAgICAgICAgICAgICBlcnJuby5FTk9FTlQsIG9zLnN0 cmVycm9yKGVycm5vLkVOT0VOVCksIHNlbGYuX2FwcF9wYXRoKQ0KPiArDQo+ICsgICAgICAgIHNl bGYuX2FwcF9wYXRoID0gb3MucGF0aC5ub3JtY2FzZShvcy5wYXRoLm5vcm1wYXRoKHNlbGYuX2Fw cF9wYXRoKSkNCj4gKw0KPiArICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoc2VsZi5fYXBw X3BhdGgpOg0KPiArICAgICAgICAgICAgcmFpc2UgRmlsZU5vdEZvdW5kRXJyb3IoDQo+ICsgICAg ICAgICAgICAgICAgZXJybm8uRU5PRU5ULCBvcy5zdHJlcnJvcihlcnJuby5FTk9FTlQpLCBzZWxm Ll9hcHBfcGF0aCkNCj4gKw0KPiArICAgICAgICAjIFZlcmlmeSBVbmNydXN0aWZ5IGlzIHByZXNl bnQgYXQgdGhlIGV4cGVjdGVkIHBhdGguDQo+ICsgICAgICAgIHJldHVybl9idWZmZXIgPSBTdHJp bmdJTygpDQo+ICsgICAgICAgIHJldCA9IFJ1bkNtZChzZWxmLl9hcHBfcGF0aCwgIi0tdmVyc2lv biIsIG91dHN0cmVhbT1yZXR1cm5fYnVmZmVyKQ0KPiArICAgICAgICBpZiAocmV0ICE9IDApOg0K PiArICAgICAgICAgICAgcmFpc2UgVW5jcnVzdGlmeUFwcFZlcnNpb25FcnJvckV4Y2VwdGlvbigN Cj4gKyAgICAgICAgICAgICAgICBmIkVycm9yIG9jY3VycmVkIGV4ZWN1dGluZyAtLXZlcnNpb246 IHtyZXR9LiIpDQo+ICsNCj4gKyAgICAgICAgIyBMb2cgVW5jcnVzdGlmeSB2ZXJzaW9uIGluZm9y bWF0aW9uLg0KPiArICAgICAgICBzZWxmLl9hcHBfdmVyc2lvbiA9IHJldHVybl9idWZmZXIuZ2V0 dmFsdWUoKS5zdHJpcCgpDQo+ICsgICAgICAgIHNlbGYuX3RjLkxvZ1N0ZE91dChmIlVuY3J1c3Rp ZnkgdmVyc2lvbjoge3NlbGYuX2FwcF92ZXJzaW9ufSIpDQo+ICsgICAgICAgIHZlcnNpb25fYWdn cmVnYXRvci5HZXRWZXJzaW9uQWdncmVnYXRvcigpLlJlcG9ydFZlcnNpb24oDQo+ICsgICAgICAg ICAgICAiVW5jcnVzdGlmeSIsIHNlbGYuX2FwcF92ZXJzaW9uLCB2ZXJzaW9uX2FnZ3JlZ2F0b3Iu VmVyc2lvblR5cGVzLklORk8pDQo+ICsNCj4gKyAgICBkZWYgX2luaXRpYWxpemVfY29uZmlnX2Zp bGVfaW5mbyhzZWxmKSAtPiBOb25lOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgSW5pdGlh bGl6ZSBVbmNydXN0aWZ5IGNvbmZpZ3VyYXRpb24gZmlsZSBpbmZvLg0KPiArDQo+ICsgICAgICAg IFRoZSBjb25maWcgZmlsZSBwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBwYWNrYWdlIHJvb3QuDQo+ ICsgICAgICAgICIiIg0KPiArICAgICAgICBzZWxmLl9hcHBfY29uZmlnX2ZpbGUgPSBVbmNydXN0 aWZ5Q2hlY2suREVGQVVMVF9DT05GSUdfRklMRV9QQVRIDQo+ICsgICAgICAgIGlmICJDb25maWdG aWxlUGF0aCIgaW4gc2VsZi5fcGFja2FnZV9jb25maWc6DQo+ICsgICAgICAgICAgICBzZWxmLl9h cHBfY29uZmlnX2ZpbGUgPSBzZWxmLl9wYWNrYWdlX2NvbmZpZ1siQ29uZmlnRmlsZVBhdGgiXS5z dHJpcCgpDQo+ICsNCj4gKyAgICAgICAgICAgIHNlbGYuX2FwcF9jb25maWdfZmlsZSA9IG9zLnBh dGgubm9ybXBhdGgoDQo+ICsgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYuX2Fic19w YWNrYWdlX3BhdGgsIHNlbGYuX2FwcF9jb25maWdfZmlsZSkpDQo+ICsNCj4gKyAgICAgICAgaWYg bm90IG9zLnBhdGguaXNmaWxlKHNlbGYuX2FwcF9jb25maWdfZmlsZSk6DQo+ICsgICAgICAgICAg ICByYWlzZSBGaWxlTm90Rm91bmRFcnJvcigNCj4gKyAgICAgICAgICAgICAgICBlcnJuby5FTk9F TlQsIG9zLnN0cmVycm9yKGVycm5vLkVOT0VOVCksIHNlbGYuX2FwcF9jb25maWdfZmlsZSkNCj4g Kw0KPiArICAgIGRlZiBfaW5pdGlhbGl6ZV9lbnZpcm9ubWVudF9pbmZvKHNlbGYsIHBhY2thZ2Vf cmVsX3BhdGg6IHN0ciwgZWRrMl9wYXRoOiBFZGsyUGF0aCwgcGFja2FnZV9jb25maWc6IERpY3Rb c3RyLA0KPiBMaXN0W3N0cl1dLCB0YzogSnVuaXRSZXBvcnRUZXN0Q2FzZSkgLT4gTm9uZToNCj4g KyAgICAgICAgIiIiDQo+ICsgICAgICAgIEluaXRpYWxpemVzIHBsdWdpbiBlbnZpcm9ubWVudCBp bmZvcm1hdGlvbi4NCj4gKyAgICAgICAgIiIiDQo+ICsgICAgICAgIHNlbGYuX2Fic19wYWNrYWdl X3BhdGggPSBlZGsyX3BhdGguR2V0QWJzb2x1dGVQYXRoT25UaGlzU3l0ZW1Gcm9tRWRrMlJlbGF0 aXZlUGF0aCgNCj4gKyAgICAgICAgICAgIHBhY2thZ2VfcmVsX3BhdGgpDQo+ICsgICAgICAgIHNl bGYuX2Fic193b3Jrc3BhY2VfcGF0aCA9IGVkazJfcGF0aC5Xb3Jrc3BhY2VQYXRoDQo+ICsgICAg ICAgIHNlbGYuX3BhY2thZ2VfY29uZmlnID0gcGFja2FnZV9jb25maWcNCj4gKyAgICAgICAgc2Vs Zi5fcGFja2FnZV9uYW1lID0gb3MucGF0aC5iYXNlbmFtZSgNCj4gKyAgICAgICAgICAgIG9zLnBh dGgubm9ybXBhdGgocGFja2FnZV9yZWxfcGF0aCkpDQo+ICsgICAgICAgIHNlbGYuX3BsdWdpbl9u YW1lID0gc2VsZi5fX2NsYXNzX18uX19uYW1lX18NCj4gKyAgICAgICAgc2VsZi5fcGx1Z2luX3Bh dGggPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykpDQo+ICsgICAg ICAgIHNlbGYuX3JlbF9wYWNrYWdlX3BhdGggPSBwYWNrYWdlX3JlbF9wYXRoDQo+ICsgICAgICAg IHNlbGYuX3RjID0gdGMNCj4gKw0KPiArICAgIGRlZiBfaW5pdGlhbGl6ZV9maWxlX3RvX2Zvcm1h dF9pbmZvKHNlbGYpIC0+IE5vbmU6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBGb3JtcyB0 aGUgbGlzdCBvZiBzb3VyY2UgZmlsZXMgZm9yIFVuY3J1c3RpZnkgdG8gcHJvY2Vzcy4NCj4gKyAg ICAgICAgIiIiDQo+ICsgICAgICAgICMgQ3JlYXRlIGEgbGlzdCBvZiBhbGwgdGhlIHBhY2thZ2Ug cmVsYXRpdmUgZmlsZSBwYXRocyBpbiB0aGUgcGFja2FnZSB0byBydW4gYWdhaW5zdCBVbmNydXN0 aWZ5Lg0KPiArICAgICAgICByZWxfZmlsZV9wYXRoc190b19mb3JtYXQgPSBsaXN0KA0KPiArICAg ICAgICAgICAgVW5jcnVzdGlmeUNoZWNrLlNUQU5EQVJEX1BMVUdJTl9ERUZJTkVEX1BBVEhTKQ0K PiArDQo+ICsgICAgICAgICMgQWxsb3cgdGhlIGNpLnlhbWwgdG8gcmVtb3ZlIGFueSBvZiB0aGUg cHJlLWRlZmluZWQgc3RhbmRhcmQgcGF0aHMNCj4gKyAgICAgICAgaWYgIklnbm9yZVN0YW5kYXJk UGF0aHMiIGluIHNlbGYuX3BhY2thZ2VfY29uZmlnOg0KPiArICAgICAgICAgICAgZm9yIGEgaW4g c2VsZi5fcGFja2FnZV9jb25maWdbIklnbm9yZVN0YW5kYXJkUGF0aHMiXToNCj4gKyAgICAgICAg ICAgICAgICBpZiBhLnN0cmlwKCkgaW4gcmVsX2ZpbGVfcGF0aHNfdG9fZm9ybWF0Og0KPiArICAg ICAgICAgICAgICAgICAgICBzZWxmLl90Yy5Mb2dTdGRPdXQoDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICBmIklnbm9yaW5nIHN0YW5kYXJkIHBhdGggZHVlIHRvIGNpLnlhbWwgaWdub3JlOiB7 YX0iKQ0KPiArICAgICAgICAgICAgICAgICAgICByZWxfZmlsZV9wYXRoc190b19mb3JtYXQucmVt b3ZlKGEuc3RyaXAoKSkNCj4gKyAgICAgICAgICAgICAgICBlbHNlOg0KPiArICAgICAgICAgICAg ICAgICAgICByYWlzZSBVbmNydXN0aWZ5SW52YWxpZElnbm9yZVN0YW5kYXJkUGF0aHNFeGNlcHRp b24oZiJJbnZhbGlkIElnbm9yZVN0YW5kYXJkUGF0aHMgdmFsdWU6IHthfSIpDQo+ICsNCj4gKyAg ICAgICAgIyBBbGxvdyB0aGUgY2kueWFtbCB0byBzcGVjaWZ5IGFkZGl0aW9uYWwgaW5jbHVkZSBw YXRocyBmb3IgdGhpcyBwYWNrYWdlDQo+ICsgICAgICAgIGlmICJBZGRpdGlvbmFsSW5jbHVkZVBh dGhzIiBpbiBzZWxmLl9wYWNrYWdlX2NvbmZpZzoNCj4gKyAgICAgICAgICAgIHJlbF9maWxlX3Bh dGhzX3RvX2Zvcm1hdC5leHRlbmQoDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fcGFja2FnZV9j b25maWdbIkFkZGl0aW9uYWxJbmNsdWRlUGF0aHMiXSkNCj4gKw0KPiArICAgICAgICBzZWxmLl9h YnNfZmlsZV9wYXRoc190b19mb3JtYXQgPSBbXQ0KPiArICAgICAgICBmb3IgcGF0aCBpbiByZWxf ZmlsZV9wYXRoc190b19mb3JtYXQ6DQo+ICsgICAgICAgICAgICBzZWxmLl9hYnNfZmlsZV9wYXRo c190b19mb3JtYXQuZXh0ZW5kKA0KPiArICAgICAgICAgICAgICAgIFtzdHIocGF0aC5yZXNvbHZl KCkpIGZvciBwYXRoIGluIHBhdGhsaWIuUGF0aChzZWxmLl9hYnNfcGFja2FnZV9wYXRoKS5yZ2xv YihwYXRoKV0pDQo+ICsNCj4gKyAgICAgICAgaWYgbm90ICJTa2lwR2l0RXhjbHVzaW9ucyIgaW4g c2VsZi5fcGFja2FnZV9jb25maWcgb3Igbm90IHNlbGYuX3BhY2thZ2VfY29uZmlnWyJTa2lwR2l0 RXhjbHVzaW9ucyJdOg0KPiArICAgICAgICAgICAgIyBSZW1vdmUgZmlsZXMgaWdub3JlZCBieSBn aXQNCj4gKyAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygNCj4gKyAgICAgICAgICAgICAgICBmIntz ZWxmLl9wYWNrYWdlX25hbWV9IGZpbGUgY291bnQgYmVmb3JlIGdpdCBpZ25vcmUgZmlsZSBleGNs dXNpb246DQo+IHtsZW4oc2VsZi5fYWJzX2ZpbGVfcGF0aHNfdG9fZm9ybWF0KX0iKQ0KPiArDQo+ ICsgICAgICAgICAgICBpZ25vcmVkX3BhdGhzID0gc2VsZi5fZ2V0X2dpdF9pZ25vcmVkX3BhdGhz KCkNCj4gKyAgICAgICAgICAgIHNlbGYuX2Fic19maWxlX3BhdGhzX3RvX2Zvcm1hdCA9IGxpc3Qo DQo+ICsgICAgICAgICAgICAgICAgc2V0KHNlbGYuX2Fic19maWxlX3BhdGhzX3RvX2Zvcm1hdCku ZGlmZmVyZW5jZShpZ25vcmVkX3BhdGhzKSkNCj4gKw0KPiArICAgICAgICAgICAgbG9nZ2luZy5p bmZvKA0KPiArICAgICAgICAgICAgICAgIGYie3NlbGYuX3BhY2thZ2VfbmFtZX0gZmlsZSBjb3Vu dCBhZnRlciBnaXQgaWdub3JlIGZpbGUgZXhjbHVzaW9uOg0KPiB7bGVuKHNlbGYuX2Fic19maWxl X3BhdGhzX3RvX2Zvcm1hdCl9IikNCj4gKw0KPiArICAgICAgICAgICAgIyBSZW1vdmUgZmlsZXMg aW4gc3VibW9kdWxlcw0KPiArICAgICAgICAgICAgbG9nZ2luZy5pbmZvKA0KPiArICAgICAgICAg ICAgICAgIGYie3NlbGYuX3BhY2thZ2VfbmFtZX0gZmlsZSBjb3VudCBiZWZvcmUgc3VibW9kdWxl IGV4Y2x1c2lvbjoge2xlbihzZWxmLl9hYnNfZmlsZV9wYXRoc190b19mb3JtYXQpfSIpDQo+ICsN Cj4gKyAgICAgICAgICAgIHN1Ym1vZHVsZV9wYXRocyA9IHR1cGxlKHNlbGYuX2dldF9naXRfc3Vi bW9kdWxlX3BhdGhzKCkpDQo+ICsgICAgICAgICAgICBmb3IgcGF0aCBpbiBzdWJtb2R1bGVfcGF0 aHM6DQo+ICsgICAgICAgICAgICAgICAgbG9nZ2luZy5pbmZvKGYiICBzdWJtb2R1bGUgcGF0aDog e3BhdGh9IikNCj4gKw0KPiArICAgICAgICAgICAgc2VsZi5fYWJzX2ZpbGVfcGF0aHNfdG9fZm9y bWF0ID0gWw0KPiArICAgICAgICAgICAgICAgIGYgZm9yIGYgaW4gc2VsZi5fYWJzX2ZpbGVfcGF0 aHNfdG9fZm9ybWF0IGlmIG5vdCBmLnN0YXJ0c3dpdGgoc3VibW9kdWxlX3BhdGhzKV0NCj4gKw0K PiArICAgICAgICAgICAgbG9nZ2luZy5pbmZvKA0KPiArICAgICAgICAgICAgICAgIGYie3NlbGYu X3BhY2thZ2VfbmFtZX0gZmlsZSBjb3VudCBhZnRlciBzdWJtb2R1bGUgZXhjbHVzaW9uOiB7bGVu KHNlbGYuX2Fic19maWxlX3BhdGhzX3RvX2Zvcm1hdCl9IikNCj4gKw0KPiArICAgICAgICAjIFNv cnQgdGhlIGZpbGVzIGZvciBtb3JlIGNvbnNpc3RlbnQgcmVzdWx0cw0KPiArICAgICAgICBzZWxm Ll9hYnNfZmlsZV9wYXRoc190b19mb3JtYXQuc29ydCgpDQo+ICsNCj4gKyAgICBkZWYgX2luaXRp YWxpemVfdGVzdF9jYXNlX291dHB1dF9vcHRpb25zKHNlbGYpIC0+IE5vbmU6DQo+ICsgICAgICAg ICIiIg0KPiArICAgICAgICBJbml0aWFsaXplcyBvcHRpb25zIHRoYXQgaW5mbHVlbmNlIHRlc3Qg Y2FzZSBvdXRwdXQuDQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBzZWxmLl9hdWRpdF9vbmx5 X21vZGUgPSBGYWxzZQ0KPiArICAgICAgICBzZWxmLl9vdXRwdXRfZmlsZV9kaWZmcyA9IEZhbHNl DQo+ICsNCj4gKyAgICAgICAgaWYgIkF1ZGl0T25seSIgaW4gc2VsZi5fcGFja2FnZV9jb25maWcg YW5kIHNlbGYuX3BhY2thZ2VfY29uZmlnWyJBdWRpdE9ubHkiXToNCj4gKyAgICAgICAgICAgIHNl bGYuX2F1ZGl0X29ubHlfbW9kZSA9IFRydWUNCj4gKw0KPiArICAgICAgICBpZiAiT3V0cHV0Rmls ZURpZmZzIiBpbiBzZWxmLl9wYWNrYWdlX2NvbmZpZyBhbmQgc2VsZi5fcGFja2FnZV9jb25maWdb Ik91dHB1dEZpbGVEaWZmcyJdOg0KPiArICAgICAgICAgICAgc2VsZi5fb3V0cHV0X2ZpbGVfZGlm ZnMgPSBUcnVlDQo+ICsNCj4gKyAgICBkZWYgX2xvZ191bmNydXN0aWZ5X2FwcF9pbmZvKHNlbGYp IC0+IE5vbmU6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBMb2dzIFVuY3J1c3RpZnkgYXBw bGljYXRpb24gaW5mb3JtYXRpb24uDQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBzZWxmLl90 Yy5Mb2dTdGRPdXQoZiJGb3VuZCBVbmNydXN0aWZ5IGF0IHtzZWxmLl9hcHBfcGF0aH0iKQ0KPiAr ICAgICAgICBzZWxmLl90Yy5Mb2dTdGRPdXQoZiJVbmNydXN0aWZ5IHZlcnNpb246IHtzZWxmLl9h cHBfdmVyc2lvbn0iKQ0KPiArICAgICAgICBzZWxmLl90Yy5Mb2dTdGRPdXQoJ1xuJykNCj4gKyAg ICAgICAgbG9nZ2luZy5pbmZvKGYiRm91bmQgVW5jcnVzdGlmeSBhdCB7c2VsZi5fYXBwX3BhdGh9 IikNCj4gKyAgICAgICAgbG9nZ2luZy5pbmZvKGYiVW5jcnVzdGlmeSB2ZXJzaW9uOiB7c2VsZi5f YXBwX3ZlcnNpb259IikNCj4gKyAgICAgICAgbG9nZ2luZy5pbmZvKCdcbicpDQo+ICsNCj4gKyAg ICBkZWYgX3Byb2Nlc3NfdW5jcnVzdGlmeV9yZXN1bHRzKHNlbGYpIC0+IE5vbmU6DQo+ICsgICAg ICAgICIiIg0KPiArICAgICAgICBQcm9jZXNzIHRoZSByZXN1bHRzIGZyb20gVW5jcnVzdGlmeS4N Cj4gKw0KPiArICAgICAgICBEZXRlcm1pbmVzIHdoZXRoZXIgZm9ybWF0dGluZyBlcnJvcnMgYXJl IHByZXNlbnQgYW5kIGxvZ3MgZmFpbHVyZXMuDQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBm b3JtYXR0ZWRfZmlsZXMgPSBbc3RyKHBhdGgucmVzb2x2ZSgpKSBmb3IgcGF0aCBpbiBwYXRobGli LlBhdGgoDQo+ICsgICAgICAgICAgICBzZWxmLl9hYnNfcGFja2FnZV9wYXRoKS5yZ2xvYihmJyp7 VW5jcnVzdGlmeUNoZWNrLkZPUk1BVFRFRF9GSUxFX0VYVEVOU0lPTn0nKV0NCj4gKw0KPiArICAg ICAgICBzZWxmLl9mb3JtYXR0ZWRfZmlsZV9lcnJvcl9jb3VudCA9IGxlbihmb3JtYXR0ZWRfZmls ZXMpDQo+ICsNCj4gKyAgICAgICAgaWYgc2VsZi5fZm9ybWF0dGVkX2ZpbGVfZXJyb3JfY291bnQg PiAwOg0KPiArICAgICAgICAgICAgc2VsZi5fdGMuTG9nU3RkRXJyb3IoIkZpbGVzIHdpdGggZm9y bWF0dGluZyBlcnJvcnM6XG4iKQ0KPiArDQo+ICsgICAgICAgICAgICBpZiBzZWxmLl9vdXRwdXRf ZmlsZV9kaWZmczoNCj4gKyAgICAgICAgICAgICAgICBsb2dnaW5nLmluZm8oIkNhbGN1bGF0aW5n IGZpbGUgZGlmZnMuIFRoaXMgbWlnaHQgdGFrZSBhIHdoaWxlLi4uIikNCj4gKw0KPiArICAgICAg ICBmb3IgZm9ybWF0dGVkX2ZpbGUgaW4gZm9ybWF0dGVkX2ZpbGVzOg0KPiArICAgICAgICAgICAg cHJlX2Zvcm1hdHRlZF9maWxlID0gZm9ybWF0dGVkX2ZpbGVbOi0NCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihVbmNydXN0aWZ5Q2hlY2suRk9S TUFUVEVEX0ZJTEVfRVhURU5TSU9OKV0NCj4gKw0KPiArICAgICAgICAgICAgaWYgKHNlbGYuX291 dHB1dF9maWxlX2RpZmZzIG9yDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVfdGVt cGxhdGVfY29udGVudHMgaXMgbm90IE5vbmUgb3INCj4gKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5fZnVuY190ZW1wbGF0ZV9jb250ZW50cyBpcyBub3QgTm9uZSk6DQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5fdGMuTG9nU3RkRXJyb3IoDQo+ICsgICAgICAgICAgICAgICAgICAgIGYiRm9ybWF0 dGluZyBlcnJvcnMgaW4ge29zLnBhdGgucmVscGF0aChwcmVfZm9ybWF0dGVkX2ZpbGUsIHNlbGYu X2Fic19wYWNrYWdlX3BhdGgpfVxuIikNCj4gKw0KPiArICAgICAgICAgICAgICAgIHdpdGggb3Bl bihmb3JtYXR0ZWRfZmlsZSkgYXMgZmY6DQo+ICsgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRl ZF9maWxlX3RleHQgPSBmZi5yZWFkKCkNCj4gKw0KPiArICAgICAgICAgICAgICAgICAgICBpZiAo c2VsZi5fZmlsZV90ZW1wbGF0ZV9jb250ZW50cyBpcyBub3QgTm9uZSBhbmQNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLl9maWxlX3RlbXBsYXRlX2NvbnRlbnRzIGluIGZvcm1h dHRlZF9maWxlX3RleHQpOg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdGMuTG9n U3RkRXJyb3IoZiJGaWxlIGhlYWRlciBpcyBtaXNzaW5nIGluIHtvcy5wYXRoLnJlbHBhdGgocHJl X2Zvcm1hdHRlZF9maWxlLA0KPiBzZWxmLl9hYnNfcGFja2FnZV9wYXRoKX1cbiIpDQo+ICsNCj4g KyAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuX2Z1bmNfdGVtcGxhdGVfY29udGVudHMgaXMg bm90IE5vbmUgYW5kDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZnVuY190 ZW1wbGF0ZV9jb250ZW50cyBpbiBmb3JtYXR0ZWRfZmlsZV90ZXh0KToNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYuX3RjLkxvZ1N0ZEVycm9yKGYiQSBmdW5jdGlvbiBoZWFkZXIgaXMg bWlzc2luZyBpbiB7b3MucGF0aC5yZWxwYXRoKHByZV9mb3JtYXR0ZWRfZmlsZSwNCj4gc2VsZi5f YWJzX3BhY2thZ2VfcGF0aCl9XG4iKQ0KPiArDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIHNl bGYuX291dHB1dF9maWxlX2RpZmZzOg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBv cGVuKHByZV9mb3JtYXR0ZWRfZmlsZSkgYXMgcGY6DQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcHJlX2Zvcm1hdHRlZF9maWxlX3RleHQgPSBwZi5yZWFkKCkNCj4gKw0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZGlmZmxpYi51bmlmaWVkX2RpZmYocHJlX2Zv cm1hdHRlZF9maWxlX3RleHQuc3BsaXQoJ1xuJyksDQo+IGZvcm1hdHRlZF9maWxlX3RleHQuc3Bs aXQoJ1xuJyksIGZyb21maWxlPXByZV9mb3JtYXR0ZWRfZmlsZSwgdG9maWxlPWZvcm1hdHRlZF9m aWxlLCBuPTMpOg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3RjLkxvZ1N0 ZEVycm9yKGxpbmUpDQo+ICsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3RjLkxv Z1N0ZEVycm9yKCdcbicpDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiArICAgICAgICAgICAgICAg IHNlbGYuX3RjLkxvZ1N0ZEVycm9yKHByZV9mb3JtYXR0ZWRfZmlsZSkNCj4gKw0KPiArICAgIGRl ZiBfcmVtb3ZlX3RyZWUoc2VsZiwgZGlyX3BhdGg6IHN0ciwgaWdub3JlX2Vycm9yczogYm9vbCA9 IEZhbHNlKSAtPiBOb25lOg0KPiArICAgICAgICAiIiINCj4gKyAgICAgICAgSGVscGVyIGZvciBy ZW1vdmluZyBhIGRpcmVjdG9yeS4gT3ZlciB0aW1lIHRoZXJlIGhhdmUgYmVlbg0KPiArICAgICAg ICBtYW55IHByaXZhdGUgaW1wbGVtZW50YXRpb25zIG9mIHRoaXMgZHVlIHRvIHJlbGlhYmlsaXR5 IGlzc3VlcyBpbiB0aGUNCj4gKyAgICAgICAgc2h1dGlsIGltcGxlbWVudGF0aW9ucy4gVG8gY29u c29saWRhdGUgb24gYSBzaW5nbGUgZnVuY3Rpb24gdGhpcyBoZWxwZXIgaXMgYWRkZWQuDQo+ICsN Cj4gKyAgICAgICAgT24gZXJyb3IgdHJ5IHRvIGNoYW5nZSBmaWxlIGF0dHJpYnV0ZXMuIEFsc28g YWRkIHJldHJ5IGxvZ2ljLg0KPiArDQo+ICsgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdGVtcG9y YXJpbHkgYm9ycm93ZWQgZnJvbSBlZGsydG9vbGxpYi51dGlsaXR5X2Z1bmN0aW9ucw0KPiArICAg ICAgICBzaW5jZSB0aGUgdmVyc2lvbiB1c2VkIGluIGVkazIgaXMgbm90IHJlY2VudCBlbm91Z2gg dG8gaW5jbHVkZSB0aGUNCj4gKyAgICAgICAgZnVuY3Rpb24uDQo+ICsNCj4gKyAgICAgICAgVGhp cyBmdW5jdGlvbiBzaG91bGQgYmUgcmVwbGFjZWQgYnkgIlJlbW92ZVRyZWUiIHdoZW4gaXQgaXMg YXZhaWxhYmxlLg0KPiArDQo+ICsgICAgICAgIEFyZ3M6DQo+ICsgICAgICAgICAgLSBkaXJfcGF0 aDogUGF0aCB0byBkaXJlY3RvcnkgdG8gcmVtb3ZlLg0KPiArICAgICAgICAgIC0gaWdub3JlX2Vy cm9yczogV2hldGhlciB0byBpZ25vcmUgZXJyb3JzIGR1cmluZyByZW1vdmFsDQo+ICsgICAgICAg ICIiIg0KPiArDQo+ICsgICAgICAgIGRlZiBfcmVtb3ZlX3JlYWRvbmx5KGZ1bmMsIHBhdGgsIF8p Og0KPiArICAgICAgICAgICAgIiIiDQo+ICsgICAgICAgICAgICBQcml2YXRlIGZ1bmN0aW9uIHRv IGF0dGVtcHQgdG8gY2hhbmdlIHBlcm1pc3Npb25zIG9uIGZpbGUvZm9sZGVyIGJlaW5nIGRlbGV0 ZWQuDQo+ICsgICAgICAgICAgICAiIiINCj4gKyAgICAgICAgICAgIG9zLmNobW9kKHBhdGgsIG9z LnN0YXQuU19JV1JJVEUpDQo+ICsgICAgICAgICAgICBmdW5jKHBhdGgpDQo+ICsNCj4gKyAgICAg ICAgZm9yIF8gaW4gcmFuZ2UoMyk6ICAjIHJldHJ5IHVwIHRvIDMgdGltZXMNCj4gKyAgICAgICAg ICAgIHRyeToNCj4gKyAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKGRpcl9wYXRoLCBpZ25v cmVfZXJyb3JzPWlnbm9yZV9lcnJvcnMsIG9uZXJyb3I9X3JlbW92ZV9yZWFkb25seSkNCj4gKyAg ICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoNCj4gKyAgICAgICAgICAgICAgICBsb2dn aW5nLndhcm5pbmcoZiJGYWlsZWQgdG8gZnVsbHkgcmVtb3ZlIHtkaXJfcGF0aH06IHtlcnJ9IikN Cj4gKyAgICAgICAgICAgIGVsc2U6DQo+ICsgICAgICAgICAgICAgICAgYnJlYWsNCj4gKyAgICAg ICAgZWxzZToNCj4gKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcihmIkZhaWxlZCB0byBy ZW1vdmUge2Rpcl9wYXRofSIpDQo+ICsNCj4gKyAgICBkZWYgX3J1bl91bmNydXN0aWZ5KHNlbGYp IC0+IE5vbmU6DQo+ICsgICAgICAgICIiIg0KPiArICAgICAgICBSdW5zIFVuY3J1c3RpZnkgZm9y IHRoaXMgaW5zdGFuY2Ugb2YgcGx1Z2luIGV4ZWN1dGlvbi4NCj4gKyAgICAgICAgIiIiDQo+ICsg ICAgICAgIGxvZ2dpbmcuaW5mbygiRXhlY3V0aW5nIFVuY3J1c3RpZnkuIFRoaXMgbWlnaHQgdGFr ZSBhIHdoaWxlLi4uIikNCj4gKyAgICAgICAgc3RhcnRfdGltZSA9IHRpbWVpdC5kZWZhdWx0X3Rp bWVyKCkNCj4gKyAgICAgICAgc2VsZi5fZXhlY3V0ZV91bmNydXN0aWZ5KCkNCj4gKyAgICAgICAg ZW5kX3RpbWUgPSB0aW1laXQuZGVmYXVsdF90aW1lcigpIC0gc3RhcnRfdGltZQ0KPiArDQo+ICsg ICAgICAgIGV4ZWN1dGlvbl9zdW1tYXJ5ID0gZiJVbmNydXN0aWZ5IGV4ZWN1dGVkIGFnYWluc3Qg e2xlbihzZWxmLl9hYnNfZmlsZV9wYXRoc190b19mb3JtYXQpfSBmaWxlcyBpbg0KPiB7c2VsZi5f cGFja2FnZV9uYW1lfSBpbiB7ZW5kX3RpbWU6LjJmfSBzZWNvbmRzLlxuIg0KPiArDQo+ICsgICAg ICAgIHNlbGYuX3RjLkxvZ1N0ZE91dChleGVjdXRpb25fc3VtbWFyeSkNCj4gKyAgICAgICAgbG9n Z2luZy5pbmZvKGV4ZWN1dGlvbl9zdW1tYXJ5KQ0KPiArDQo+ICsgICAgICAgIGlmIHNlbGYuX2Fw cF9leGl0X2NvZGUgIT0gMCBhbmQgc2VsZi5fYXBwX2V4aXRfY29kZSAhPSAxOg0KPiArICAgICAg ICAgICAgcmFpc2UgVW5jcnVzdGlmeUFwcEV4ZWN1dGlvbkV4Y2VwdGlvbigNCj4gKyAgICAgICAg ICAgICAgICBmIkVycm9yIHtzdHIoc2VsZi5fYXBwX2V4aXRfY29kZSl9IHJldHVybmVkIGZyb20g VW5jcnVzdGlmeTpcblxue3N0cihzZWxmLl9hcHBfb3V0cHV0KX0iKQ0KPiBkaWZmIC0tZ2l0IGEv LnB5dG9vbC9QbHVnaW4vVW5jcnVzdGlmeUNoZWNrL2RlZmF1bHRfZmlsZV9oZWFkZXIudHh0DQo+ IGIvLnB5dG9vbC9QbHVnaW4vVW5jcnVzdGlmeUNoZWNrL2RlZmF1bHRfZmlsZV9oZWFkZXIudHh0 DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMjk1NWE3MzRk ZmUxDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvLnB5dG9vbC9QbHVnaW4vVW5jcnVzdGlmeUNo ZWNrL2RlZmF1bHRfZmlsZV9oZWFkZXIudHh0DQo+IEBAIC0wLDAgKzEsOSBAQA0KPiArLyoqIEBm aWxlDQo+ICsgIEJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBmaWxlJ3MgcHVycG9zZS4NCj4gKw0K PiArICBEZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgZmlsZSdzIGNvbnRlbnRzIGFuZCBvdGhl ciB1c2VmdWwNCj4gKyAgaW5mb3JtYXRpb24gZm9yIGEgcGVyc29uIHZpZXdpbmcgdGhlIGZpbGUg Zm9yIHRoZSBmaXJzdCB0aW1lLg0KPiArDQo+ICsgIDw8Q29weXJpZ2h0Pj4NCj4gKyAgU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKyoqLw0KPiBkaWZmIC0t Z2l0IGEvLnB5dG9vbC9QbHVnaW4vVW5jcnVzdGlmeUNoZWNrL2RlZmF1bHRfZnVuY3Rpb25faGVh ZGVyLnR4dA0KPiBiLy5weXRvb2wvUGx1Z2luL1VuY3J1c3RpZnlDaGVjay9kZWZhdWx0X2Z1bmN0 aW9uX2hlYWRlci50eHQNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAw MDAwLi42NmVkYzcyZTY3MzENCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi8ucHl0b29sL1BsdWdp bi9VbmNydXN0aWZ5Q2hlY2svZGVmYXVsdF9mdW5jdGlvbl9oZWFkZXIudHh0DQo+IEBAIC0wLDAg KzEsMTUgQEANCj4gKy8qKg0KPiArICBCcmllZiBkZXNjcmlwdGlvbiBvZiB0aGlzIGZ1bmN0aW9u J3MgcHVycG9zZS4NCj4gKw0KPiArICBGb2xsb3cgaXQgaW1tZWRpYXRlbHkgd2l0aCB0aGUgZGV0 YWlsZWQgZGVzY3JpcHRpb24uDQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgICAgIEFyZzEgIERlc2Ny aXB0aW9uIG9mIEFyZzEuDQo+ICsgIEBwYXJhbVtpbl0gICAgICBBcmcyICBEZXNjcmlwdGlvbiBv ZiBBcmcyIFRoaXMgaXMgY29tcGxpY2F0ZWQgYW5kIHJlcXVpcmVzDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICBtdWx0aXBsZSBsaW5lcyB0byBkZXNjcmliZS4NCj4gKyAgQHBhcmFtW291dF0g ICAgIEFyZzMgIERlc2NyaXB0aW9uIG9mIEFyZzMuDQo+ICsgIEBwYXJhbVtpbiwgb3V0XSBBcmc0 ICBEZXNjcmlwdGlvbiBvZiBBcmc0Lg0KPiArDQo+ICsgIEByZXR2YWwgVkFMX09ORSAgRGVzY3Jp cHRpb24gb2Ygd2hhdCBWQUxfT05FIHNpZ25pZmllcy4NCj4gKyAgQHJldHZhbCBPVEhFUiAgICBU aGlzIGlzIHRoZSBvbmx5IG90aGVyIHJldHVybiB2YWx1ZS4gSWYgdGhlcmUgd2VyZSBvdGhlcg0K PiArICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZXMsIHRoZXkgd291bGQgYmUgbGlzdGVk Lg0KPiArKiovDQo+IGRpZmYgLS1naXQgYS8ucHl0b29sL1BsdWdpbi9VbmNydXN0aWZ5Q2hlY2sv dW5jcnVzdGlmeS5jZmcgYi8ucHl0b29sL1BsdWdpbi9VbmNydXN0aWZ5Q2hlY2svdW5jcnVzdGlm eS5jZmcNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi4xYTg3 Mjk1ZWM5ZjkNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi8ucHl0b29sL1BsdWdpbi9VbmNydXN0 aWZ5Q2hlY2svdW5jcnVzdGlmeS5jZmcNCj4gQEAgLTAsMCArMSw0NjIgQEANCj4gKyMjIEBmaWxl DQo+ICsjIFVuY3J1c3RpZnkgQ29uZmlndXJhdGlvbiBGaWxlIGZvciBFREsgSUkgQyBDb2RlDQo+ ICsjDQo+ICsjIENvZGluZyBTdGFuZGFyZDogaHR0cHM6Ly9lZGsyLWRvY3MuZ2l0Ym9vay5pby9l ZGstaWktYy1jb2Rpbmctc3RhbmRhcmRzLXNwZWNpZmljYXRpb24vDQo+ICsjDQo+ICsjIFRoaXMg Y29uZmlndXJhdGlvbiBmaWxlIGlzIG1lYW50IHRvIGJlIGEgImJlc3QgYXR0ZW1wdCIgdG8gYWxp Z24gd2l0aCB0aGUNCj4gKyMgZGVmaW5pdGlvbnMgaW4gdGhlIEVESyBJSSBDIENvZGluZyBTdGFu ZGFyZHMgU3BlY2lmaWNhdGlvbi4NCj4gKyMNCj4gKyMgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQg Q29ycG9yYXRpb24uDQo+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2Ut UGF0ZW50DQo+ICsjIw0KPiArDQo+ICsjIEZvcmNlIFVURi04IGVuY29kaW5nIChubyBVVEYtMTYp DQo+ICtlbmFibGVfZGlncmFwaHMgICAgICAgICAgICAgICAgID0gZmFsc2UNCj4gK3V0ZjhfYnl0 ZSAgICAgICAgICAgICAgICAgICAgICAgPSBmYWxzZQ0KPiArdXRmOF9mb3JjZSAgICAgICAgICAg ICAgICAgICAgICA9IHRydWUNCj4gKw0KPiArIyBDb2RlIHdpZHRoIC8gbGluZSBzcGxpdHRpbmcN Cj4gKyNjb2RlX3dpZHRoICAgICAgICAgICAgICAgICAgICAgID0xMjAgICAgICMgVE9ETzogVGhp cyBjYXVzZXMgbm9uLWRldGVybWluaXN0aWMgYmVoYXZpb3VyIGluIHNvbWUgY2FzZXMgd2hlbiBj b2RlIHdyYXBzDQo+ICtsc19jb2RlX3dpZHRoICAgICAgICAgICAgICAgICAgID1mYWxzZQ0KPiAr bHNfZm9yX3NwbGl0X2Z1bGwgICAgICAgICAgICAgICA9dHJ1ZQ0KPiArbHNfZnVuY19zcGxpdF9m dWxsICAgICAgICAgICAgICA9dHJ1ZQ0KPiArcG9zX2NvbW1hICAgICAgICAgICAgICAgICAgICAg ICA9dHJhaWwNCj4gKw0KPiArIyA1LjEuNyAgQWxsIGZpbGVzIG11c3QgZW5kIHdpdGggQ1JMRg0K PiArbmV3bGluZXMgICAgICAgICAgICAgICAgICAgICAgICA9IGNybGYNCj4gKw0KPiArIyA1LjEu MiBEbyBub3QgdXNlIHRhYiBjaGFyYWN0ZXJzDQo+ICsNCj4gK2NtdF9jb252ZXJ0X3RhYl90b19z cGFjZXMgICAgICAgPSB0cnVlICAgICAgIyBXaGV0aGVyIHRvIGNvbnZlcnQgYWxsIHRhYnMgdG8g c3BhY2VzIGluIGNvbW1lbnRzLiBJZiBmYWxzZSwgdGFicyBpbg0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNvbW1lbnRzIGFyZSBsZWZ0IGFsb25lLCB1 bmxlc3MgdXNlZCBmb3IgaW5kZW50aW5nLg0KPiAraW5kZW50X2NvbHVtbnMgICAgICAgICAgICAg ICAgICA9IDIgICAgICAgICAjIE51bWJlciBvZiBzcGFjZXMgZm9yIGluZGVudGF0aW9uDQo+ICtp bmRlbnRfd2l0aF90YWJzICAgICAgICAgICAgICAgID0gMCAgICAgICAgICMgRG8gbm90IHVzZSBU QUIgY2hhcmFjdGVycw0KPiArc3RyaW5nX3JlcGxhY2VfdGFiX2NoYXJzICAgICAgICA9IHRydWUg ICAgICAjIFJlcGxhY2UgVEFCIHdpdGggU1BBQ0UNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyBOb3RlOiBUaGlzIHdpbGwgYnJlYWsgLnJvYm90IGZpbGVz IGJ1dCBpcyBuZWVkZWQgZm9yIGVkazIgc3R5bGUNCj4gKw0KPiArIyA1LjIuMS4xIFRoZXJlIHNo YWxsIGJlIG9ubHkgb25lIHN0YXRlbWVudCBvbiBhIGxpbmUgKHN0YXRlbWVudCBlbmRzIHdpdGgg OykNCj4gK25sX211bHRpX2xpbmVfY29uZCAgICAgICAgICAgICAgPSB0cnVlICAgICAgIyBBZGQg YSBuZXdsaW5lIGJldHdlZW4gJyknIGFuZCAneycgaWYgdGhlICcpJyBpcyBvbiBhIGRpZmZlcmVu dCBsaW5lIHRoYW4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIyB0aGUgaWYvZm9yL2V0Yy4NCj4gK25sX2FmdGVyX3NlbWljb2xvbiAgICAgICAgICAgICAg PSB0cnVlICAgICAgIyBXaGV0aGVyIHRvIGFkZCBhIG5ld2xpbmUgYWZ0ZXIgc2VtaWNvbG9ucywg ZXhjZXB0IGluICdmb3InIHN0YXRlbWVudHMuDQo+ICsNCj4gKyMgNS4yLjEuMyBBbiBvcGVuIGJy YWNlICd7JyBnb2VzIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGNsb3NpbmcgcGFyZW50aGVzaXMg JyknIG9mIHNpbXBsZSBwcmVkaWNhdGUgZXhwcmVzc2lvbnMNCj4gK21vZF9mdWxsX2JyYWNlX2Rv ICAgICAgICAgICAgICAgPSBhZGQgICAgICAgIyBBZGQgb3IgcmVtb3ZlIGJyYWNlcyBvbiBhIHNp bmdsZS1saW5lICdkbycgc3RhdGVtZW50Lg0KPiArbW9kX2Z1bGxfYnJhY2VfZm9yICAgICAgICAg ICAgICA9IGFkZA0KPiArbW9kX2Z1bGxfYnJhY2VfZnVuY3Rpb24gICAgICAgICA9IGFkZCAgICAg ICAjIEFkZCBvciByZW1vdmUgYnJhY2VzIG9uIGEgc2luZ2xlLWxpbmUgZnVuY3Rpb24gZGVmaW5p dGlvbi4NCj4gK21vZF9mdWxsX2JyYWNlX2lmICAgICAgICAgICAgICAgPSBhZGQgICAgICAgIyBB ZGQgb3IgcmVtb3ZlIGJyYWNlcyBvbiBhIHNpbmdsZS1saW5lICdpZicgc3RhdGVtZW50LiBCcmFj ZXMgd2lsbCBub3QgYmUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIyByZW1vdmVkIGlmIHRoZSBicmFjZWQgc3RhdGVtZW50IGNvbnRhaW5zIGFuICdlbHNl Jy4NCj4gK21vZF9mdWxsX2JyYWNlX2lmX2NoYWluICAgICAgICAgPSBmYWxzZQ0KPiArbW9kX2Z1 bGxfYnJhY2Vfd2hpbGUgICAgICAgICAgICA9IGFkZA0KPiArDQo+ICsjIDUuMi4xLjQgQSBjbG9z ZSBicmFjZSAnfScgYWx3YXlzIGdvZXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGFzdCBsaW5l IG9mIHRoZSBib2R5DQo+ICtlYXRfYmxhbmtzX2FmdGVyX29wZW5fYnJhY2UgICAgID0gdHJ1ZQ0K PiArZWF0X2JsYW5rc19iZWZvcmVfY2xvc2VfYnJhY2UgICA9IHRydWUgICAgICAjIFdoZXRoZXIg dG8gcmVtb3ZlIGJsYW5rIGxpbmVzIGJlZm9yZSAnfScuDQo+ICsNCj4gKyMgNS4yLjIuMiBBbHdh eXMgcHV0IHNwYWNlIGJlZm9yZSBhbmQgYWZ0ZXIgYmluYXJ5IG9wZXJhdG9ycy4NCj4gK3NwX2Fz c2lnbiAgICAgICAgICAgICAgICAgICAgICAgPSBhZGQgICAgICAgIyBBZGQgb3IgcmVtb3ZlIHNw YWNlIGFyb3VuZCBhc3NpZ25tZW50IG9wZXJhdG9yICc9JywgJys9JywgZXRjLg0KPiArc3BfYXNz aWduX2RlZmF1bHQgICAgICAgICAgICAgICA9IGFkZA0KPiArc3BfYm9vbCAgICAgICAgICAgICAg ICAgICAgICAgICA9IGFkZCAgICAgICAjIEFkZCBvciByZW1vdmUgc3BhY2UgYXJvdW5kIGJvb2xl YW4gb3BlcmF0b3JzICcmJicgYW5kICd8fCcuDQo+ICtzcF9jb21wYXJlICAgICAgICAgICAgICAg ICAgICAgID0gYWRkICAgICAgICMgQWRkIG9yIHJlbW92ZSBzcGFjZSBhcm91bmQgY29tcGFyZSBv cGVyYXRvciAnPCcsICc+JywgJz09JywgZXRjLg0KPiArDQo+ICsjIDUuMi4yLjMgRG8gbm90IHB1 dCBzcGFjZSBiZXR3ZWVuIHVuYXJ5IG9wZXJhdG9ycyBhbmQgdGhlaXIgb2JqZWN0DQo+ICtzcF9h ZGRyICAgICAgICAgICAgICAgICAgICAgICAgID0gcmVtb3ZlICAgICMgQSBvciByZW1vdmUgc3Bh Y2UgYWZ0ZXIgdGhlICcmJyAoYWRkcmVzcy1vZikgdW5hcnkgb3BlcmF0b3IuDQo+ICtzcF9pbmNk ZWMgICAgICAgICAgICAgICAgICAgICAgID0gcmVtb3ZlICAgICMgQWRkIG9yIHJlbW92ZSBzcGFj ZSBiZXR3ZWVuICcrKycgYW5kICctLScgdGhlIHdvcmQgdG8gd2hpY2ggaXQgaXMgYmVpbmcNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhcHBsaWVkLCBh cyBpbiAnKC0teCknIG9yICd5Kys7Jy4NCj4gK3NwX2ludiAgICAgICAgICAgICAgICAgICAgICAg ICAgPSByZW1vdmUgICAgIyBBZGQgb3IgcmVtb3ZlIHNwYWNlIGFmdGVyIHRoZSAnficgKGludmVy dCkgdW5hcnkgb3BlcmF0b3IuDQo+ICtzcF9ub3QgICAgICAgICAgICAgICAgICAgICAgICAgID0g cmVtb3ZlICAgICMgQWRkIG9yIHJlbW92ZSBzcGFjZSBhZnRlciB0aGUgJyEnIChub3QpIHVuYXJ5 IG9wZXJhdG9yLg0KPiArc3Bfc2lnbiAgICAgICAgICAgICAgICAgICAgICAgICA9IHJlbW92ZSAg ICAjIEFkZCBvciByZW1vdmUgc3BhY2UgYWZ0ZXIgJysnIG9yICctJywgYXMgaW4gJ3ggPSAtNScg b3IgJ3kgPSArNycuDQo+ICsNCj4gKyMgNS4yLjIuNCBTdWJzZXF1ZW50IGxpbmVzIG9mIG11bHRp LWxpbmUgZnVuY3Rpb24gY2FsbHMgc2hvdWxkIGxpbmUgdXAgdHdvIHNwYWNlcyBmcm9tIHRoZSBi ZWdpbm5pbmcgb2YgdGhlIGZ1bmN0aW9uDQo+ICsjICAgICAgICAgbmFtZQ0KPiArbmxfZnVuY19j YWxsX2FyZ3NfbXVsdGlfbGluZSAgICA9IHRydWUgICAgICAjIFdoZXRoZXIgdG8gYWRkIGEgbmV3 bGluZSBhZnRlciBlYWNoICcsJyBpbiBhIGZ1bmN0aW9uIGNhbGwgaWYgJygnIGFuZCAnKScNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhcmUgaW4gZGlm ZmVyZW50IGxpbmVzLg0KPiArbmxfZnVuY19jYWxsX2FyZ3NfbXVsdGlfbGluZV9pZ25vcmVfY2xv c3VyZXMgPSBmYWxzZQ0KPiArDQo+ICsjIC0gSW5kZW50IGVhY2ggYXJndW1lbnQgMiBzcGFjZXMg ZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZ1bmN0aW9uIG5hbWUuIElmIGENCj4gKyMgICBmdW5jdGlv biBpcyBjYWxsZWQgdGhyb3VnaCBhIHN0cnVjdHVyZSBvciB1bmlvbiBtZW1iZXIsIG9mIHR5cGUN Cj4gKyMgICBwb2ludGVyLXRvLWZ1bmN0aW9uLCB0aGVuIGluZGVudCBlYWNoIGFyZ3VtZW50IDIg c3BhY2VzIGZyb20gdGhlIHN0YXJ0IG9mIHRoZQ0KPiArIyAgIG1lbWJlciBuYW1lLg0KPiAraW5k ZW50X2Z1bmNfY2FsbF9lZGsyX3N0eWxlICAgICA9IHRydWUgICAgICAjIFVzZSBFREsyIGluZGVu dGF0aW9uIHN0eWxlIGZvciBmdW5jdGlvbiBjYWxscyAgKCoqQ1VTVE9NIFNFVFRJTkcqKikNCj4g K2luZGVudF9wYXJlbl9hZnRlcl9mdW5jX2NhbGwgICAgPSB0cnVlICAgICAgIyBXaGV0aGVyIHRv IGluZGVudCB0aGUgb3BlbiBwYXJlbnRoZXNpcyBvZiBhIGZ1bmN0aW9uIGNhbGwsIGlmIHRoZQ0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHBhcmVudGhl c2lzIGlzIG9uIGl0cyBvd24gbGluZS4NCj4gKw0KPiArIyAtIEFsaWduIHRoZSBjbG9zZSBwYXJl bnRoZXNpcyB3aXRoIHRoZSBzdGFydCBvZiB0aGUgbGFzdCBhcmd1bWVudA0KPiAraW5kZW50X3Bh cmVuX2Nsb3NlICAgICAgICAgICAgICA9IDAgICAgICAgICAjIEhvdyB0byBpbmRlbnQgYSBjbG9z ZSBwYXJlbnRoZXNpcyBhZnRlciBhIG5ld2xpbmUuDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICMgKDA6IEJvZHksIDE6IE9wZW5wYXJlbnRoZXNpcywgMjog QnJhY2UgbGV2ZWwpDQo+ICsNCj4gKw0KPiArIyA1LjIuMi41IEFsd2F5cyBwdXQgc3BhY2UgYWZ0 ZXIgY29tbWFzIG9yIHNlbWljb2xvbnMgdGhhdCBzZXBhcmF0ZSBpdGVtcw0KPiArc3BfYWZ0ZXJf Y29tbWEgICAgICAgICAgICAgICAgICA9IGZvcmNlICAgICAjIEFkZCBvciByZW1vdmUgc3BhY2Ug YWZ0ZXIgJywnLCBpLmUuICdhLGInIHZzLiAnYSwgYicuDQo+ICtzcF9iZWZvcmVfY29tbWEgICAg ICAgICAgICAgICAgID0gcmVtb3ZlICAgICMgQWRkIG9yIHJlbW92ZSBzcGFjZSBiZWZvcmUgJywn Lg0KPiArDQo+ICsjIDUuMi4yLjYgQWx3YXlzIHB1dCBzcGFjZSBiZWZvcmUgYW4gb3BlbiBwYXJl bnRoZXNpcw0KPiArc3BfYWZ0ZXJfc3BhcmVuICAgICAgICAgICAgICAgICA9IGFkZCAgICAgICAj IEFkZCBvciByZW1vdmUgc3BhY2UgYWZ0ZXIgJyknIG9mIGNvbnRyb2wgc3RhdGVtZW50cy4NCj4g K3NwX2F0dHJpYnV0ZV9wYXJlbiAgICAgICAgICAgICAgPSBhZGQgICAgICAgIyBBZGQgb3IgcmVt b3ZlIHNwYWNlIGJldHdlZW4gJ19fYXR0cmlidXRlX18nIGFuZCAnKCcuDQo+ICtzcF9iZWZvcmVf c3BhcmVuICAgICAgICAgICAgICAgID0gZm9yY2UgICAgICMgQWRkIG9yIHJlbW92ZSBzcGFjZSBi ZWZvcmUgJygnIG9mIGNvbnRyb2wgc3RhdGVtZW50cw0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjICgnaWYnLCAnZm9yJywgJ3N3aXRjaCcsICd3aGlsZScs IGV0Yy4pLg0KPiArc3BfZGVmaW5lZF9wYXJlbiAgICAgICAgICAgICAgICA9IGZvcmNlICAgICAj IEFkZCBvciByZW1vdmUgc3BhY2UgYmV0d2VlbiAnZGVmaW5lZCcgYW5kICcoJyBpbiAnI2lmIGRl ZmluZWQgKEZPTyknLg0KPiArc3BfZnVuY19jYWxsX3BhcmVuICAgICAgICAgICAgICA9IGZvcmNl ICAgICAjIEFkZCBvciByZW1vdmUgc3BhY2UgYmV0d2VlbiBmdW5jdGlvbiBuYW1lIGFuZCAnKCcg b24gZnVuY3Rpb24gY2FsbHMuDQo+ICtzcF9mdW5jX2NhbGxfcGFyZW5fZW1wdHkgICAgICAgID0g Zm9yY2UgICAgICMgQWRkIG9yIHJlbW92ZSBzcGFjZSBiZXR3ZWVuIGZ1bmN0aW9uIG5hbWUgYW5k ICcoKScgb24gZnVuY3Rpb24gY2FsbHMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyB3aXRob3V0IHBhcmFtZXRlcnMuIElmIHNldCB0byBpZ25vcmUgKHRo ZSBkZWZhdWx0KSwgc3BfZnVuY19jYWxsX3BhcmVuIGlzDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICMgdXNlZC4NCj4gK3NwX2Z1bmNfZGVmX3BhcmVuICAg ICAgICAgICAgICAgPSBhZGQgICAgICAgIyBBZGQgb3IgcmVtb3ZlIHNwYWNlIGJldHdlZW4gYWxp YXMgbmFtZSBhbmQgJygnIG9mIGEgbm9uLXBvaW50ZXIgZnVuY3Rpb24NCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0eXBlIHR5cGVkZWYuDQo+ICtzcF9m dW5jX3Byb3RvX3BhcmVuICAgICAgICAgICAgID0gYWRkICAgICAgICMgQWRkIG9yIHJlbW92ZSBz cGFjZSBiZXR3ZWVuIGZ1bmN0aW9uIG5hbWUgYW5kICcoKScgb24gZnVuY3Rpb24gZGVjbGFyYXRp b24NCj4gK3NwX3NpemVvZl9wYXJlbiAgICAgICAgICAgICAgICAgPSBmb3JjZSAgICAgIyBBZGQg b3IgcmVtb3ZlIHNwYWNlIGJldHdlZW4gJ3NpemVvZicgYW5kICcoJy4NCj4gK3NwX3R5cGVfZnVu YyAgICAgICAgICAgICAgICAgICAgPSBhZGQgICAgICAgIyBBZGQgb3IgcmVtb3ZlIHNwYWNlIGJl dHdlZW4gcmV0dXJuIHR5cGUgYW5kIGZ1bmN0aW9uIG5hbWUuIEEgbWluaW11bSBvZiAxDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaXMgZm9yY2VkIGV4 Y2VwdCBmb3IgcG9pbnRlciByZXR1cm4gdHlwZXMuDQo+ICsNCj4gKyMgTm90IHNwZWNpZmllZCwg YnV0IGFsc28gZ29vZCBzdHlsZSB0byByZW1vdmUgc3BhY2VzIGluc2lkZSBwYXJlbnRoZXNlcyAo T3B0aW9uYWwpDQo+ICtzcF9jcGFyZW5fb3BhcmVuICAgICAgICAgICAgICAgID0gcmVtb3ZlICAg ICMgQWRkIG9yIHJlbW92ZSBzcGFjZSBiZXR3ZWVuIGJhY2stdG8tYmFjayBwYXJlbnRoZXNlcywg aS5lLiAnKSgnIHZzLiAnKSAoJy4NCj4gK3NwX2luc2lkZV9mcGFyZW4gICAgICAgICAgICAgICAg PSByZW1vdmUgICAgIyBBZGQgb3IgcmVtb3ZlIHNwYWNlIGluc2lkZSBmdW5jdGlvbiAnKCcgYW5k ICcpJy4NCj4gK3NwX2luc2lkZV9mcGFyZW5zICAgICAgICAgICAgICAgPSByZW1vdmUgICAgIyBB ZGQgb3IgcmVtb3ZlIHNwYWNlIGluc2lkZSBlbXB0eSBmdW5jdGlvbiAnKCknLg0KPiArc3BfaW5z aWRlX3BhcmVuICAgICAgICAgICAgICAgICA9IHJlbW92ZSAgICAjIEFkZCBvciByZW1vdmUgc3Bh Y2UgaW5zaWRlICcoJyBhbmQgJyknLg0KPiArc3BfaW5zaWRlX3BhcmVuX2Nhc3QgICAgICAgICAg ICA9IHJlbW92ZSAgICAjIEFkZCBvciByZW1vdmUgc3BhY2VzIGluc2lkZSBjYXN0IHBhcmVudGhl c2VzLiAnKGludCl4Jw0KPiArc3BfaW5zaWRlX3NxdWFyZSAgICAgICAgICAgICAgICA9IHJlbW92 ZSAgICAjIEFkZCBvciByZW1vdmUgc3BhY2UgaW5zaWRlIGEgbm9uLWVtcHR5ICdbJyBhbmQgJ10n Lg0KPiArc3BfcGFyZW5fcGFyZW4gICAgICAgICAgICAgICAgICA9IHJlbW92ZSAgICAjIEFkZCBv ciByZW1vdmUgc3BhY2UgYmV0d2VlbiBuZXN0ZWQgcGFyZW50aGVzZXMsIGkuZS4gJygoJyB2cy4g JykgKScuDQo+ICtzcF9zcXVhcmVfZnBhcmVuICAgICAgICAgICAgICAgID0gcmVtb3ZlICAgICMg QWRkIG9yIHJlbW92ZSBzcGFjZSBiZXR3ZWVuICddJyBhbmQgJygnIHdoZW4gcGFydCBvZiBhIGZ1 bmN0aW9uIGNhbGwuDQo+ICsNCj4gKyMgNS4yLjIuNyBQdXQgYSBzcGFjZSBiZWZvcmUgYW4gb3Bl biBicmFjZSBpZiBpdCBpcyBub3Qgb24gaXRzIG93biBsaW5lDQo+ICtzcF9kb19icmFjZV9vcGVu ICAgICAgICAgICAgICAgID0gZm9yY2UgICAgICMgQWRkIG9yIHJlbW92ZSBzcGFjZSBiZXR3ZWVu ICdkbycgYW5kICd7Jy4NCj4gK3NwX3BhcmVuX2JyYWNlICAgICAgICAgICAgICAgICAgPSBmb3Jj ZSAgICAgIyBBZGQgb3IgcmVtb3ZlIHNwYWNlIGJldHdlZW4gJyknIGFuZCAneycuDQo+ICtzcF9z cGFyZW5fYnJhY2UgICAgICAgICAgICAgICAgID0gZm9yY2UgICAgICMgQWRkIG9yIHJlbW92ZSBz cGFjZSBiZXR3ZWVuICcpJyBhbmQgJ3snIG9mIG9mIGNvbnRyb2wgc3RhdGVtZW50cy4NCj4gKw0K PiArIyA1LjIuMi44IERvIG5vdCBwdXQgc3BhY2VzIGFyb3VuZCBzdHJ1Y3R1cmUgbWVtYmVyIGFu ZCBwb2ludGVyIG9wZXJhdG9ycw0KPiArc3BfYWZ0ZXJfYnlyZWYgICAgICAgICAgICAgICAgICA9 IHJlbW92ZSAgICAjIEFkZCBvciByZW1vdmUgc3BhY2UgYWZ0ZXIgcmVmZXJlbmNlIHNpZ24gJyYn LCBpZiBmb2xsb3dlZCBieSBhIHdvcmQuDQo+ICtzcF9iZWZvcmVfYnlyZWYgICAgICAgICAgICAg ICAgID0gYWRkICAgICAgICMgQWRkIG9yIHJlbW92ZSBzcGFjZSBiZWZvcmUgYSByZWZlcmVuY2Ug c2lnbiAnJicuDQo+ICtzcF9kZXJlZiAgICAgICAgICAgICAgICAgICAgICAgID0gcmVtb3ZlICAg ICMgQWRkIG9yIHJlbW92ZSBzcGFjZSBhZnRlciB0aGUgJyonIChkZXJlZmVyZW5jZSkgdW5hcnkg b3BlcmF0b3IuIFRoaXMgZG9lcw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjIG5vdCBhZmZlY3QgdGhlIHNwYWNpbmcgYWZ0ZXIgYSAnKicgdGhhdCBpcyBw YXJ0IG9mIGEgdHlwZS4NCj4gK3NwX21lbWJlciAgICAgICAgICAgICAgICAgICAgICAgPSByZW1v dmUgICAgIyBBZGQgb3IgcmVtb3ZlIHNwYWNlIGFyb3VuZCB0aGUgJy4nIG9yICctPicgb3BlcmF0 b3JzLg0KPiArDQo+ICsjIDUuMi4yLjkgRG8gbm90IHB1dCBzcGFjZXMgYmVmb3JlIG9wZW4gYnJh Y2tldHMgb2YgYXJyYXkgc3Vic2NyaXB0cw0KPiArc3BfYmVmb3JlX3NxdWFyZSAgICAgICAgICAg ICAgICA9IHJlbW92ZSAgICAjIEFkZCBvciByZW1vdmUgc3BhY2UgYmVmb3JlICdbJyAoZXhjZXB0 ICdbXScpLg0KPiArc3BfYmVmb3JlX3NxdWFyZXMgICAgICAgICAgICAgICA9IHJlbW92ZSAgICAj IEFkZCBvciByZW1vdmUgc3BhY2UgYmVmb3JlICdbXScuDQo+ICtzcF9iZWZvcmVfdmFyZGVmX3Nx dWFyZSAgICAgICAgID0gcmVtb3ZlICAgICMgQWRkIG9yIHJlbW92ZSBzcGFjZSBiZWZvcmUgJ1sn IGZvciBhIHZhcmlhYmxlIGRlZmluaXRpb24uDQo+ICsNCj4gKyMgNS4yLjIuMTAgVXNlIGV4dHJh IHBhcmVudGhlc2VzIHJhdGhlciB0aGFuIGRlcGVuZGluZyBvbiBpbi1kZXB0aCBrbm93bGVkZ2Ug b2YgdGhlIG9yZGVyIG9mIHByZWNlZGVuY2Ugb2YgQw0KPiArbW9kX2Z1bGxfcGFyZW5faWZfYm9v bCAgICAgICAgICA9IHRydWUgICAgICAjIFdoZXRoZXIgdG8gZnVsbHkgcGFyZW50aGVzaXplIEJv b2xlYW4gZXhwcmVzc2lvbnMgaW4gJ3doaWxlJyBhbmQgJ2lmJw0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHN0YXRlbWVudCwgYXMgaW4gJ2lmIChhICYm IGIgPiBjKScgPT4gJ2lmIChhICYmIChiID4gYykpJy4NCj4gKw0KPiArIyA1LjIuMi4xMSBBbGln biBhIGNvbnRpbnVhdGlvbiBsaW5lIHdpdGggdGhlIHBhcnQgb2YgdGhlIGxpbmUgdGhhdCBpdCBj b250aW51ZXMuDQo+ICt1c2VfaW5kZW50X2NvbnRpbnVlX29ubHlfb25jZSAgID0gdHJ1ZQ0KPiAr DQo+ICsjIEFkZGl0aW9uYWwgJ3t9JyBicmFjaW5nIHJ1bGVzIChPcHRpb25hbCkNCj4gKyMgTk9U RSAtIFRoZSBzdHlsZSBndWlkZSBzcGVjaWZpZXMgdHdvIGRpZmZlcmVudCBzdHlsZXMgZm9yIGJy YWNlcywNCj4gKyMgc28gdGhlc2UgYXJlIGlnbm9yZWQgZm9yIG5vdyB0byBhbGxvdyBkZXZlbG9w ZXJzIHNvbWUgZmxleGliaWxpdHkuDQo+ICtubF9hZnRlcl9icmFjZV9jbG9zZSAgICAgICAgICAg ID0gdHJ1ZSAgICAgICMgV2hldGhlciB0byBhZGQgYSBuZXdsaW5lIGFmdGVyICd9Jy4gRG9lcyBu b3QgYXBwbHkgaWYgZm9sbG93ZWQgYnkgYQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIG5lY2Vzc2FyeSAnOycuDQo+ICtubF9icmFjZV9lbHNlICAgICAg ICAgICAgICAgICAgID0gcmVtb3ZlICAgICMgQWRkIG9yIHJlbW92ZSBuZXdsaW5lIGJldHdlZW4g J30nIGFuZCAnZWxzZScuDQo+ICtubF9icmFjZV93aGlsZSAgICAgICAgICAgICAgICAgID0gcmVt b3ZlICAgICMgQWRkIG9yIHJlbW92ZSBuZXdsaW5lIGJldHdlZW4gJ30nIGFuZCAnd2hpbGUnIG9m ICdkbycgc3RhdGVtZW50Lg0KPiArbmxfZG9fYnJhY2UgICAgICAgICAgICAgICAgICAgICA9IHJl bW92ZSAgICAjIEFkZCBvciByZW1vdmUgbmV3bGluZSBiZXR3ZWVuICdkbycgYW5kICd7Jy4NCj4g K25sX2Vsc2VfYnJhY2UgICAgICAgICAgICAgICAgICAgPSByZW1vdmUgICAgIyBBZGQgb3IgcmVt b3ZlIG5ld2xpbmUgYmV0d2VlbiAnZWxzZScgYW5kICd7Jy4NCj4gK25sX2Vsc2VfaWYgICAgICAg ICAgICAgICAgICAgICAgPSByZW1vdmUgICAgIyBBZGQgb3IgcmVtb3ZlIG5ld2xpbmUgYmV0d2Vl biAnZWxzZScgYW5kICdpZicuDQo+ICtubF9lbHNlaWZfYnJhY2UgICAgICAgICAgICAgICAgID0g cmVtb3ZlICAgICMgQWRkIG9yIHJlbW92ZSBuZXdsaW5lIGJldHdlZW4gJ2Vsc2UgaWYnIGFuZCAn eycuDQo+ICtubF9lbnVtX2JyYWNlICAgICAgICAgICAgICAgICAgID0gcmVtb3ZlICAgICMgQWRk IG9yIHJlbW92ZSBuZXdsaW5lIGJldHdlZW4gJ2VudW0nIGFuZCAneycuDQo+ICtubF9mY2FsbF9i cmFjZSAgICAgICAgICAgICAgICAgID0gcmVtb3ZlICAgICMgQWRkIG9yIHJlbW92ZSBuZXdsaW5l IGJldHdlZW4gYSBmdW5jdGlvbiBjYWxsJ3MgJyknIGFuZCAneycsDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYXMgaW4gJ2xpc3RfZm9yX2VhY2goaXRl bSwgJmxpc3QpIHsgfScuDQo+ICtubF9mb3JfYnJhY2UgICAgICAgICAgICAgICAgICAgID0gcmVt b3ZlICAgICMgQWRkIG9yIHJlbW92ZSBuZXdsaW5lIGJldHdlZW4gJ2ZvcicgYW5kICd7Jy4NCj4g K25sX2lmX2JyYWNlICAgICAgICAgICAgICAgICAgICAgPSByZW1vdmUgICAgIyBBZGQgb3IgcmVt b3ZlIG5ld2xpbmUgYmV0d2VlbiAnaWYnIGFuZCAneycuDQo+ICtubF9zdHJ1Y3RfYnJhY2UgICAg ICAgICAgICAgICAgID0gcmVtb3ZlICAgICMgQWRkIG9yIHJlbW92ZSBuZXdsaW5lIGJldHdlZW4g J3N0cnVjdCBhbmQgJ3snLg0KPiArbmxfc3dpdGNoX2JyYWNlICAgICAgICAgICAgICAgICA9IHJl bW92ZSAgICAjIEFkZCBvciByZW1vdmUgbmV3bGluZSBiZXR3ZWVuICdzd2l0Y2gnIGFuZCAneycu DQo+ICtubF91bmlvbl9icmFjZSAgICAgICAgICAgICAgICAgID0gcmVtb3ZlICAgICMgQWRkIG9y IHJlbW92ZSBuZXdsaW5lIGJldHdlZW4gJ3VuaW9uJyBhbmQgJ3snLg0KPiArbmxfd2hpbGVfYnJh Y2UgICAgICAgICAgICAgICAgICA9IHJlbW92ZSAgICAjIEFkZCBvciByZW1vdmUgbmV3bGluZSBi ZXR3ZWVuICd3aGlsZScgYW5kICd7Jy4NCj4gKw0KPiArIyBBZGRpdGlvbmFsIHdoaXRlc3BhY2Ug cnVsZXMgKE9wdGlvbmFsKQ0KPiArc3BfYWZ0ZXJfcHRyX3N0YXIgICAgICAgICAgICAgICA9IHJl bW92ZSAgICAjIEFkZCBvciByZW1vdmUgc3BhY2UgYWZ0ZXIgcG9pbnRlciBzdGFyICcqJywgaWYg Zm9sbG93ZWQgYnkgYSB3b3JkLg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjIFVzZWZ1bCB3aGVuIHBhaXJlZCB3aXRoIGFsaWduX3Zhcl9kZWZfc3Rhcl9z dHlsZT09Mg0KPiArc3BfYWZ0ZXJfcHRyX3N0YXJfZnVuYyAgICAgICAgICA9IHJlbW92ZSAgICAj IEFkZCBvciByZW1vdmUgc3BhY2UgYWZ0ZXIgYSBwb2ludGVyIHN0YXIgJyonLCBpZiBmb2xsb3dl ZCBieSBhIGZ1bmN0aW9uDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgcHJvdG90eXBlIG9yIGZ1bmN0aW9uIGRlZmluaXRpb24uDQo+ICtzcF9hZnRlcl9z ZW1pICAgICAgICAgICAgICAgICAgID0gcmVtb3ZlICAgICMgQWRkIG9yIHJlbW92ZSBzcGFjZSBh ZnRlciAnOycsIGV4Y2VwdCB3aGVuIGZvbGxvd2VkIGJ5IGEgY29tbWVudC4NCj4gK3NwX2JlZm9y ZV9jYXNlX2NvbG9uICAgICAgICAgICAgPSByZW1vdmUgICAgIyBBZGQgb3IgcmVtb3ZlIHNwYWNl IGJlZm9yZSBjYXNlICc6Jy4NCj4gK3NwX2JlZm9yZV9wdHJfc3RhciAgICAgICAgICAgICAgPSBh ZGQgICAgICAgIyBBZGQgb3IgcmVtb3ZlIHNwYWNlIGJlZm9yZSBwb2ludGVyIHN0YXIgJyonLg0K PiArc3BfYmVmb3JlX3B0cl9zdGFyX2Z1bmMgICAgICAgICA9IGFkZCAgICAgICAjIEFkZCBvciBy ZW1vdmUgc3BhY2UgYmVmb3JlIGEgcG9pbnRlciBzdGFyICcqJywgaWYgZm9sbG93ZWQgYnkgYSBm dW5jdGlvbg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IHByb3RvdHlwZSBvciBmdW5jdGlvbiBkZWZpbml0aW9uLg0KPiArc3BfYmVmb3JlX3NlbWkgICAg ICAgICAgICAgICAgICA9IHJlbW92ZSAgICAjIEFkZCBvciByZW1vdmUgc3BhY2UgYmVmb3JlICc7 Jw0KPiArc3BfYmVmb3JlX3NlbWlfZm9yICAgICAgICAgICAgICA9IHJlbW92ZSAgICAjIEFkZCBv ciByZW1vdmUgc3BhY2UgYmVmb3JlICc7JyBpbiBub24tZW1wdHkgJ2Zvcicgc3RhdGVtZW50cy4N Cj4gK3NwX2JlZm9yZV9zZW1pX2Zvcl9lbXB0eSAgICAgICAgPSBhZGQgICAgICAgIyBBZGQgb3Ig cmVtb3ZlIHNwYWNlIGJlZm9yZSBhIHNlbWljb2xvbiBvZiBhbiBlbXB0eSBwYXJ0IG9mIGEgZm9y IHN0YXRlbWVudA0KPiArc3BfYmV0d2Vlbl9wdHJfc3RhciAgICAgICAgICAgICA9IHJlbW92ZSAg ICAjIEFkZCBvciByZW1vdmUgc3BhY2UgYmV0d2VlbiBwb2ludGVyIHN0YXJzICcqJy4gKGllLCAn Vk9JRCAqKicpDQo+ICtzcF9icmFjZV9jbG9zZV93aGlsZSAgICAgICAgICAgID0gZm9yY2UgICAg ICMgQWRkIG9yIHJlbW92ZSBzcGFjZSBiZXR3ZWVuICd9JyBhbmQgJ3doaWxlJy4NCj4gKw0KPiAr c3BfYWZ0ZXJfY2FzdCAgICAgICAgICAgICAgICAgICA9IHJlbW92ZQ0KPiArc3BfYWZ0ZXJfdHlw ZSAgICAgICAgICAgICAgICAgICA9IGFkZA0KPiArc3BfYmFsYW5jZV9uZXN0ZWRfcGFyZW5zICAg ICAgICA9IGZhbHNlDQo+ICtzcF9iZWZvcmVfbmxfY29udCAgICAgICAgICAgICAgID0gYWRkDQo+ ICtzcF9iZWZvcmVfc3F1YXJlX2FzbV9ibG9jayAgICAgID0gaWdub3JlDQo+ICtzcF9iZWZvcmVf dW5uYW1lZF9ieXJlZiAgICAgICAgID0gYWRkDQo+ICtzcF9icmFjZV9icmFjZSAgICAgICAgICAg ICAgICAgID0gaWdub3JlDQo+ICtzcF9icmFjZV9lbHNlICAgICAgICAgICAgICAgICAgID0gZm9y Y2UNCj4gK3NwX2JyYWNlX3R5cGVkZWYgICAgICAgICAgICAgICAgPSBhZGQNCj4gK3NwX2Nhc2Vf bGFiZWwgICAgICAgICAgICAgICAgICAgPSBmb3JjZQ0KPiArc3BfY210X2NwcF9kb3h5Z2VuICAg ICAgICAgICAgICA9IHRydWUNCj4gK3NwX2NvbmRfY29sb24gICAgICAgICAgICAgICAgICAgPSBh ZGQNCj4gK3NwX2NvbmRfcXVlc3Rpb24gICAgICAgICAgICAgICAgPSBhZGQNCj4gK3NwX2NwcF9j YXN0X3BhcmVuICAgICAgICAgICAgICAgPSBmb3JjZQ0KPiArc3BfZWxzZV9icmFjZSAgICAgICAg ICAgICAgICAgICA9IGZvcmNlDQo+ICtzcF9lbmRpZl9jbXQgICAgICAgICAgICAgICAgICAgID0g Zm9yY2UNCj4gK3NwX2VudW1fYXNzaWduICAgICAgICAgICAgICAgICAgPSBhZGQNCj4gK3NwX2lu c2lkZV9icmFjZXMgICAgICAgICAgICAgICAgPSBmb3JjZQ0KPiArc3BfaW5zaWRlX2JyYWNlc19l bXB0eSAgICAgICAgICA9IGZvcmNlDQo+ICtzcF9pbnNpZGVfYnJhY2VzX2VudW0gICAgICAgICAg ID0gZm9yY2UNCj4gK3NwX2luc2lkZV9icmFjZXNfc3RydWN0ICAgICAgICAgPSBmb3JjZQ0KPiAr c3BfcHBfY29uY2F0ICAgICAgICAgICAgICAgICAgICA9IGFkZA0KPiArc3BfcHBfc3RyaW5naWZ5 ICAgICAgICAgICAgICAgICA9IGFkZA0KPiArc3BfcmV0dXJuX3BhcmVuICAgICAgICAgICAgICAg ICA9IGFkZA0KPiArc3Bfc3BlY2lhbF9zZW1pICAgICAgICAgICAgICAgICA9IGZvcmNlDQo+ICtz cF93aGlsZV9wYXJlbl9vcGVuICAgICAgICAgICAgID0gZm9yY2UNCj4gKw0KPiArIyBBZGRpdGlv bmFsIEluZGVudGF0aW9uIFJ1bGVzDQo+ICtpbmRlbnRfYWNjZXNzX3NwZWMgICAgICAgICAgICAg ID0gMQ0KPiAraW5kZW50X2FjY2Vzc19zcGVjX2JvZHkgICAgICAgICA9IGZhbHNlDQo+ICtpbmRl bnRfYWxpZ25fYXNzaWduICAgICAgICAgICAgID0gdHJ1ZQ0KPiAraW5kZW50X2FsaWduX3N0cmlu ZyAgICAgICAgICAgICA9IHRydWUNCj4gK2luZGVudF9ib29sX3BhcmVuICAgICAgICAgICAgICAg PSB0cnVlDQo+ICtpbmRlbnRfYnJhY2VfcGFyZW50ICAgICAgICAgICAgID0gZmFsc2UNCj4gK2lu ZGVudF9icmFjZXMgICAgICAgICAgICAgICAgICAgPSBmYWxzZQ0KPiAraW5kZW50X2JyYWNlc19u b19jbGFzcyAgICAgICAgICA9IGZhbHNlDQo+ICtpbmRlbnRfYnJhY2VzX25vX2Z1bmMgICAgICAg ICAgID0gdHJ1ZQ0KPiAraW5kZW50X2JyYWNlc19ub19zdHJ1Y3QgICAgICAgICA9IGZhbHNlDQo+ ICtpbmRlbnRfY2xhc3MgICAgICAgICAgICAgICAgICAgID0gZmFsc2UNCj4gK2luZGVudF9jbGFz c19jb2xvbiAgICAgICAgICAgICAgPSBmYWxzZQ0KPiAraW5kZW50X2NtdF93aXRoX3RhYnMgICAg ICAgICAgICA9IGZhbHNlICAgICAgICAgIyBXaGV0aGVyIHRvIGluZGVudCBjb21tZW50cyB0aGF0 IGFyZSBub3QgYXQgYSBicmFjZSBsZXZlbCB3aXRoIHRhYnMgb24NCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYSB0YWJzdG9wLiBSZXF1aXJlcyBp bmRlbnRfd2l0aF90YWJzPTIuIElmIGZhbHNlLCB3aWxsIHVzZSBzcGFjZXMuDQo+ICtpbmRlbnRf Y29sMV9jb21tZW50ICAgICAgICAgICAgID0gdHJ1ZQ0KPiAraW5kZW50X2NvbDFfbXVsdGlfc3Ry aW5nX2xpdGVyYWw9IHRydWUNCj4gK2luZGVudF9jb21tYV9wYXJlbiAgICAgICAgICAgICAgPSB0 cnVlDQo+ICtpbmRlbnRfZWxzZV9pZiAgICAgICAgICAgICAgICAgID0gdHJ1ZQ0KPiAraW5kZW50 X2V4dGVybiAgICAgICAgICAgICAgICAgICA9IGZhbHNlDQo+ICtpbmRlbnRfZmlyc3RfYm9vbF9l eHByICAgICAgICAgID0gdHJ1ZQ0KPiArDQo+ICtpbmRlbnRfZnVuY19kZWZfcGFyYW1fcGFyZW5f cG9zX3RocmVzaG9sZCA9IDANCj4gK2luZGVudF9mdW5jX3BhcmFtX2RvdWJsZSAgICAgICAgICAg ICAgICAgID0gZmFsc2UNCj4gK2luZGVudF9mdW5jX3Byb3RvX3BhcmFtICAgICAgICAgICAgICAg ICAgID0gdHJ1ZQ0KPiAraW5kZW50X2lnbm9yZV9hc21fYmxvY2sgICAgICAgICAgICAgICAgICAg PSB0cnVlDQo+ICtpbmRlbnRfbGFiZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDEN Cj4gK2luZGVudF9tZW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMg0KPiAraW5k ZW50X25hbWVzcGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgPSBmYWxzZQ0KPiAraW5kZW50 X3BhcmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAyDQo+ICtpbmRlbnRfcGFyZW5f bmwgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGZhbHNlDQo+ICtpbmRlbnRfcGFyZW5fb3Bl bl9icmFjZSAgICAgICAgICAgICAgICAgICA9IGZhbHNlDQo+ICtpbmRlbnRfcHJlc2VydmVfc3Fs ICAgICAgICAgICAgICAgICAgICAgICA9IGZhbHNlDQo+ICtpbmRlbnRfcmVsYXRpdmVfc2luZ2xl X2xpbmVfY29tbWVudHMgICAgICA9IGZhbHNlDQo+ICtpbmRlbnRfc2luZ19saW5lX2NvbW1lbnRz ICAgICAgICAgICAgICAgICA9IDANCj4gK2luZGVudF9zaW5nbGVfbmV3bGluZXMgICAgICAgICAg ICAgICAgICAgID0gZmFsc2UNCj4gK2luZGVudF9zcXVhcmVfbmwgICAgICAgICAgICAgICAgICAg ICAgICAgID0gZmFsc2UNCj4gK2luZGVudF9zd2l0Y2hfY2FzZSAgICAgICAgICAgICAgICAgICAg ICAgID0gMg0KPiAraW5kZW50X3RlbXBsYXRlX3BhcmFtICAgICAgICAgICAgICAgICAgICAgPSB0 cnVlDQo+ICtpbmRlbnRfdmFyX2RlZl9ibGsgICAgICAgICAgICAgICAgICAgICAgICA9IDANCj4g K2luZGVudF92YXJfZGVmX2NvbnQgICAgICAgICAgICAgICAgICAgICAgID0gZmFsc2UNCj4gKw0K PiArIyBUaWR5LXVwIHJ1bGVzIChPcHRpb25hbCkNCj4gK21vZF9tb3ZlX2Nhc2VfYnJlYWsgICAg ICAgICAgICAgPSB0cnVlICAgICAgIyBXaGV0aGVyIHRvIG1vdmUgYSAnYnJlYWsnIHRoYXQgYXBw ZWFycyBhZnRlciBhIGZ1bGx5IGJyYWNlZCAnY2FzZScNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyBiZWZvcmUgdGhlIGNsb3NlIGJyYWNlLCBhcyBpbiAn Y2FzZSBYOiB7IC4uLiB9IGJyZWFrOycgPT4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIyAnY2FzZSBYOiB7IC4uLiBicmVhazsgfScuDQo+ICttb2RfcGF3 bl9zZW1pY29sb24gICAgICAgICAgICAgID0gZmFsc2UNCj4gK21vZF9yZW1vdmVfZW1wdHlfcmV0 dXJuICAgICAgICAgPSBmYWxzZSAgICAgIyBXaGV0aGVyIHRvIHJlbW92ZSBhIHZvaWQgJ3JldHVy bjsnIHRoYXQgYXBwZWFycyBhcyB0aGUgbGFzdCBzdGF0ZW1lbnQNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbiBhIGZ1bmN0aW9uLg0KPiArbW9kX3Jl bW92ZV9leHRyYV9zZW1pY29sb24gICAgICA9IHRydWUNCj4gK21vZF9zb3J0X2ltcG9ydCAgICAg ICAgICAgICAgICAgPSBmYWxzZQ0KPiArbW9kX3NvcnRfaW5jbHVkZSAgICAgICAgICAgICAgICA9 IGZhbHNlDQo+ICttb2Rfc29ydF91c2luZyAgICAgICAgICAgICAgICAgID0gZmFsc2UNCj4gK25s X2FmdGVyX2Nhc2UgICAgICAgICAgICAgICAgICAgPSBmYWxzZSAgICAgIyBXaGV0aGVyIHRvIGFk ZCBhIG5ld2xpbmUgYWZ0ZXIgYSAnY2FzZScgc3RhdGVtZW50Lg0KPiArbmxfZW5kX29mX2ZpbGUg ICAgICAgICAgICAgICAgICA9IGZvcmNlICAgICAjIEFkZCBvciByZW1vdmUgbmV3bGluZSBhdCB0 aGUgZW5kIG9mIHRoZSBmaWxlLg0KPiArbmxfZW5kX29mX2ZpbGVfbWluICAgICAgICAgICAgICA9 IDEgICAgICAgICAjIFRoZSBtaW5pbXVtIG51bWJlciBvZiBuZXdsaW5lcyBhdCB0aGUgZW5kIG9m IHRoZSBmaWxlDQo+ICtubF9tYXggICAgICAgICAgICAgICAgICAgICAgICAgID0gMiAgICAgICAg ICMgVGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnNlY3V0aXZlIG5ld2xpbmVzICgzID0gMiBibGFu ayBsaW5lcykuDQo+ICtubF9zdGFydF9vZl9maWxlICAgICAgICAgICAgICAgID0gcmVtb3ZlICAg ICMgQWRkIG9yIHJlbW92ZSBuZXdsaW5lcyBhdCB0aGUgc3RhcnQgb2YgdGhlIGZpbGUuDQo+ICsN Cj4gKyMgQ29kZSBhbGlnbm1lbnQgcnVsZXMgKE9wdGlvbmFsKQ0KPiArYWxpZ25fYXNtX2NvbG9u ICAgICAgICAgICAgICAgICA9IGZhbHNlDQo+ICthbGlnbl9hc3NpZ25fc3BhbiAgICAgICAgICAg ICAgID0gMSAgICAgICAgICMgVGhlIHNwYW4gZm9yIGFsaWduaW5nIG9uICc9JyBpbiBhc3NpZ25t ZW50cy4NCj4gK2FsaWduX2Fzc2lnbl90aHJlc2ggICAgICAgICAgICAgPSA0DQo+ICthbGlnbl9l ZGsyX3N0eWxlICAgICAgICAgICAgICAgID0gdHJ1ZSAgICAgICMgV2hldGhlciB0byBhcHBseSBl ZGsyLXNwZWNpZmljIGFsaWdubWVudCBmb3JtYXR0aW5nDQo+ICthbGlnbl9lbnVtX2VxdV9zcGFu ICAgICAgICAgICAgID0gMSAgICAgICAgICMgVGhlIHNwYW4gZm9yIGFsaWduaW5nIG9uICc9JyBp biBlbnVtcy4NCj4gK2FsaWduX2Z1bmNfcGFyYW1zICAgICAgICAgICAgICAgPSB0cnVlICAgICAg IyBXaGV0aGVyIHRvIGFsaWduIHZhcmlhYmxlIGRlZmluaXRpb25zIGluIHByb3RvdHlwZXMgYW5k IGZ1bmN0aW9ucy4NCj4gK2FsaWduX2Z1bmNfcGFyYW1zX2dhcCAgICAgICAgICAgPSAyDQo+ICth bGlnbl9mdW5jX3BhcmFtc19zcGFuICAgICAgICAgID0gMiAgICAgICAgICMgVGhlIHNwYW4gZm9y IGFsaWduaW5nIHBhcmFtZXRlciBkZWZpbml0aW9ucyBpbiBmdW5jdGlvbiBvbiBwYXJhbWV0ZXIg bmFtZS4NCj4gK2FsaWduX2Z1bmNfcGFyYW1zX3RocmVzaCAgICAgICAgPSAwDQo+ICthbGlnbl9m dW5jX3Byb3RvX3NwYW4gICAgICAgICAgID0gMA0KPiArYWxpZ25fa2VlcF90YWJzICAgICAgICAg ICAgICAgICA9IGZhbHNlDQo+ICthbGlnbl9sZWZ0X3NoaWZ0ICAgICAgICAgICAgICAgID0gZmFs c2UNCj4gK2FsaWduX21peF92YXJfcHJvdG8gICAgICAgICAgICAgPSBmYWxzZQ0KPiArYWxpZ25f bmxfY29udCAgICAgICAgICAgICAgICAgICA9IGZhbHNlDQo+ICthbGlnbl9vY19kZWNsX2NvbG9u ICAgICAgICAgICAgID0gZmFsc2UNCj4gK2FsaWduX29uX29wZXJhdG9yICAgICAgICAgICAgICAg PSBmYWxzZQ0KPiArYWxpZ25fb25fdGFic3RvcCAgICAgICAgICAgICAgICA9IGZhbHNlDQo+ICth bGlnbl9wcF9kZWZpbmVfZ2FwICAgICAgICAgICAgID0gMg0KPiArYWxpZ25fcHBfZGVmaW5lX3Nw YW4gICAgICAgICAgICA9IDENCj4gK2FsaWduX3JpZ2h0X2NtdF9hdF9jb2wgICAgICAgICAgPSAw ICAgICAgICAgIyBBbGlnbiB0cmFpbGluZyBjb21tZW50IGF0IG9yIGJleW9uZCBjb2x1bW4gTjsg J3B1bGxzIGluJyBjb21tZW50cyBhcw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAjIGEgYm9udXMgc2lkZSBlZmZlY3QgKDA9aWdub3JlKQ0KPiArYWxpZ25f cmlnaHRfY210X2dhcCAgICAgICAgICAgICA9IDAgICAgICAgICAjIElmIGEgdHJhaWxpbmcgY29t bWVudCBpcyBtb3JlIHRoYW4gdGhpcyBudW1iZXIgb2YgY29sdW1ucyBhd2F5IGZyb20gdGhlDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGV4dCBpdCBm b2xsb3dzLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IGl0IHdpbGwgcXVhbGlmeSBmb3IgYmVpbmcgYWxpZ25lZC4gVGhpcyBoYXMgdG8gYmUgPiAwIHRv IGRvIGFueXRoaW5nLg0KPiArYWxpZ25fcmlnaHRfY210X21peCAgICAgICAgICAgICA9IGZhbHNl ICAgICAjIElmIGFsaWduaW5nIGNvbW1lbnRzLCBtaXggd2l0aCBjb21tZW50cyBhZnRlciAnfScg YW5kICNlbmRpZiB3aXRoIGxlc3MNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyB0aGFuIDMgc3BhY2VzIGJlZm9yZSB0aGUgY29tbWVudA0KPiArYWxpZ25f cmlnaHRfY210X3NhbWVfbGV2ZWwgICAgICA9IHRydWUgICAgICAjIFdoZXRoZXIgdG8gb25seSBh bGlnbiB0cmFpbGluZyBjb21tZW50cyB0aGF0IGFyZSBhdCB0aGUgc2FtZSBicmFjZSBsZXZlbC4N Cj4gK2FsaWduX3JpZ2h0X2NtdF9zcGFuICAgICAgICAgICAgPSAyICAgICAgICAgIyBUaGUgc3Bh biBmb3IgYWxpZ25pbmcgY29tbWVudHMgdGhhdCBlbmQgbGluZXMuDQo+ICthbGlnbl9zYW1lX2Z1 bmNfY2FsbF9wYXJhbXMgICAgID0gZmFsc2UNCj4gK2FsaWduX3NpbmdsZV9saW5lX2JyYWNlICAg ICAgICAgPSB0cnVlDQo+ICthbGlnbl9zaW5nbGVfbGluZV9mdW5jICAgICAgICAgID0gdHJ1ZQ0K PiArYWxpZ25fc3RydWN0X2luaXRfc3BhbiAgICAgICAgICA9IDEgICAgICAgICAjIFRoZSBzcGFu IGZvciBhbGlnbmluZyBzdHJ1Y3QgaW5pdGlhbGl6ZXIgdmFsdWVzLg0KPiArYWxpZ25fdHlwZWRl Zl9hbXBfc3R5bGUgICAgICAgICA9IDENCj4gK2FsaWduX3R5cGVkZWZfZnVuYyAgICAgICAgICAg ICAgPSAxICAgICAgICAgIyBIb3cgdG8gYWxpZ24gdHlwZWRlZidkIGZ1bmN0aW9ucyB3aXRoIG90 aGVyIHR5cGVkZWZzLg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjICgwOiBObyBhbGlnbiwgMTogQWxpZ24gb3BlbiBwYXJhbnRoZXNpcywgMjogQWxpZ24g ZnVuY3Rpb24gdHlwZSBuYW1lKQ0KPiArYWxpZ25fdHlwZWRlZl9nYXAgICAgICAgICAgICAgICA9 IDINCj4gK2FsaWduX3R5cGVkZWZfc3BhbiAgICAgICAgICAgICAgPSAxICAgICAgICAgIyBUaGUg c3BhbiBmb3IgYWxpZ25pbmcgc2luZ2xlLWxpbmUgdHlwZWRlZnMuDQo+ICthbGlnbl90eXBlZGVm X3N0YXJfc3R5bGUgICAgICAgID0gMQ0KPiArYWxpZ25fdmFyX2RlZl9hbXBfc3R5bGUgICAgICAg ICA9IDENCj4gK2FsaWduX3Zhcl9kZWZfYXR0cmlidXRlICAgICAgICAgPSB0cnVlDQo+ICthbGln bl92YXJfZGVmX2NvbG9uICAgICAgICAgICAgID0gdHJ1ZSAgICAgICMgV2hldGhlciB0byBhbGln biB0aGUgY29sb24gaW4gc3RydWN0IGJpdCBmaWVsZHMuDQo+ICthbGlnbl92YXJfZGVmX2dhcCAg ICAgICAgICAgICAgID0gMiAgICAgICAgICMgVGhlIGdhcCAobWluaW11bSBzcGFjaW5nIGZvciBh bGlnbmVkIGl0ZW1zKSBmb3IgdmFyaWFibGUgZGVmaW5pdGlvbnMuDQo+ICthbGlnbl92YXJfZGVm X2lubGluZSAgICAgICAgICAgID0gZmFsc2UNCj4gK2FsaWduX3Zhcl9kZWZfc3BhbiAgICAgICAg ICAgICAgPSAxICAgICAgICAgIyBUaGUgc3BhbiAobGluZXMgbmVlZGVkIHRvIGFsaWduKSBmb3Ig YWxpZ25pbmcgdmFyaWFibGUgZGVmaW5pdGlvbnMuDQo+ICthbGlnbl92YXJfZGVmX3N0YXJfc3R5 bGUgICAgICAgID0gMSAgICAgICAgICMgSG93IHRvIGNvbnNpZGVyIChvciB0cmVhdCkgdGhlICcq JyBpbiB0aGUgYWxpZ25tZW50IG9mIHZhcmlhYmxlDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICMgZGVmaW5pdGlvbnMuDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMDogUGFydCBvZiB0aGUgdHlwZSAgICAgJ3Zv aWQgKiAgIGZvbzsnIChkZWZhdWx0KQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAjIDE6IFBhcnQgb2YgdGhlIHZhcmlhYmxlICd2b2lkICAgICAqZm9vOycN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAyOiBEYW5n bGluZyAgICAgICAgICAgICAndm9pZCAgICAqZm9vOycNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyAoTm90ZSAtIHNob3VsZCBhbHNvIHNldCBzcF9hZnRl cl9wdHJfc3Rhcj1yZW1vdmUpDQo+ICthbGlnbl92YXJfc3RydWN0X2dhcCAgICAgICAgICAgID0g NA0KPiArYWxpZ25fdmFyX3N0cnVjdF9zcGFuICAgICAgICAgICA9IDggICAgICAgICAjIFRoZSBz cGFuIGZvciBhbGlnbmluZyBzdHJ1Y3QvdW5pb24gbWVtYmVyIGRlZmluaXRpb25zLg0KPiArYWxp Z25fdmFyX3N0cnVjdF90aHJlc2ggICAgICAgICA9IDANCj4gK2FsaWduX3dpdGhfdGFicyAgICAg ICAgICAgICAgICAgPSBmYWxzZQ0KPiArDQo+ICsjIENvbW1lbnQgZm9ybWF0dGluZw0KPiArY210 X2FsaWduX2RveHlnZW5famF2YWRvY190YWdzICA9IHRydWUgICAgICAjIFdoZXRoZXIgdG8gYWxp Z24gZG94eWdlbiBqYXZhZG9jLXN0eWxlIHRhZ3MgKCdAcGFyYW0nLCAnQHJldHVybicsIGV0Yy4p DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVE9ETzog RWF0cyAnWycgaW4gJ1tpbl0nDQo+ICtjbXRfY19ncm91cCAgICAgICAgICAgICAgICAgICAgID0g ZmFsc2UNCj4gK2NtdF9jX25sX2VuZCAgICAgICAgICAgICAgICAgICAgPSB0cnVlICAgICAgIyBX aGV0aGVyIHRvIGFkZCBhIG5ld2xpbmUgYmVmb3JlIHRoZSBjbG9zaW5nICcqLycgb2YgdGhlIGNv bWJpbmVkIGMtY29tbWVudC4NCj4gK2NtdF9jX25sX3N0YXJ0ICAgICAgICAgICAgICAgICAgPSB0 cnVlDQo+ICtjbXRfY3BwX2dyb3VwICAgICAgICAgICAgICAgICAgID0gZmFsc2UNCj4gK2NtdF9j cHBfbmxfZW5kICAgICAgICAgICAgICAgICAgPSB0cnVlDQo+ICtjbXRfY3BwX25sX3N0YXJ0ICAg ICAgICAgICAgICAgID0gdHJ1ZQ0KPiArY210X2NwcF90b19jICAgICAgICAgICAgICAgICAgICA9 IGZhbHNlDQo+ICtjbXRfaW5kZW50X211bHRpICAgICAgICAgICAgICAgID0gZmFsc2UgICAgICMg V2hldGhlciB0byBhcHBseSBjaGFuZ2VzIHRvIG11bHRpLWxpbmUgY29tbWVudHMsIGluY2x1ZGlu ZyBjbXRfd2lkdGgsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICMga2V5d29yZCBzdWJzdGl0dXRpb24gYW5kIGxlYWRpbmcgY2hhcnMuDQo+ICtjbXRfaW5z ZXJ0X2JlZm9yZV9wcmVwcm9jICAgICAgID0gZmFsc2UNCj4gK2NtdF9pbnNlcnRfZmlsZV9oZWFk ZXIgICAgICAgICAgPSBkZWZhdWx0X2ZpbGVfaGVhZGVyLnR4dA0KPiArY210X2luc2VydF9mdW5j X2hlYWRlciAgICAgICAgICA9IGRlZmF1bHRfZnVuY3Rpb25faGVhZGVyLnR4dA0KPiArY210X211 bHRpX2NoZWNrX2xhc3QgICAgICAgICAgICA9IGZhbHNlDQo+ICtjbXRfbXVsdGlfZmlyc3RfbGVu X21pbmltdW0gICAgID0gMg0KPiArY210X3JlZmxvd19tb2RlICAgICAgICAgICAgICAgICA9IDEg ICAgICAgICAjIEhvdyB0byByZWZsb3cgY29tbWVudHMuDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICMgKDA6Tm8gcmVmbG93LCAxOk5vIHRvdWNoaW5nIGF0 IGFsbCwgMjogRnVsbCByZWZsb3cpDQo+ICtjbXRfc3BfYWZ0ZXJfc3Rhcl9jb250ICAgICAgICAg ID0gMCAgICAgICAgICMgVGhlIG51bWJlciBvZiBzcGFjZXMgdG8gaW5zZXJ0IGFmdGVyIHRoZSBz dGFyIG9uIHN1YnNlcXVlbnQgY29tbWVudCBsaW5lcy4NCj4gK2NtdF9zcF9iZWZvcmVfc3Rhcl9j b250ICAgICAgICAgPSAwICAgICAgICAgIyBUaGUgbnVtYmVyIG9mIHNwYWNlcyB0byBpbnNlcnQg YXQgdGhlIHN0YXJ0IG9mIHN1YnNlcXVlbnQgY29tbWVudCBsaW5lcy4NCj4gK2NtdF9zdGFyX2Nv bnQgICAgICAgICAgICAgICAgICAgPSBmYWxzZSAgICAgIyBXaGV0aGVyIHRvIHB1dCBhIHN0YXIg b24gc3Vic2VxdWVudCBjb21tZW50IGxpbmVzLg0KPiArY210X3dpZHRoICAgICAgICAgICAgICAg ICAgICAgICA9IDEyMCAgICAgICAjIFRyeSB0byB3cmFwIGNvbW1lbnRzIGF0IE4gY29sdW1ucy4N Cj4gK3NwX2NtdF9jcHBfc3RhcnQgICAgICAgICAgICAgICAgPSBhZGQgICAgICAgIyBBZGQgb3Ig cmVtb3ZlIHNwYWNlIGFmdGVyIHRoZSBvcGVuaW5nIG9mIGEgQysrIGNvbW1lbnQsIGFzIGluDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgJy8vIDxoZXJl PiBBJy4gIE5PVEU6IEJyZWFrcyBpbmRlbnRhdGlvbiB3aXRoaW4gY29tbWVudHMuDQo+ICsNCj4g KyMgRnVuY3Rpb24gZGVmaW5pdGlvbnMgLyBkZWNsYXJhdGlvbnMNCj4gK2luZGVudF9mdW5jX2Nh bGxfcGFyYW0gICAgICAgICAgPSBmYWxzZSAgICAgIyBXaGV0aGVyIHRvIGluZGVudCBjb250aW51 ZWQgZnVuY3Rpb24gY2FsbCBwYXJhbWV0ZXJzIG9uZSBpbmRlbnQgbGV2ZWwsDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmF0aGVyIHRoYW4gYWxpZ25p bmcgcGFyYW1ldGVycyB1bmRlciB0aGUgb3BlbiBwYXJlbnRoZXNpcy4NCj4gK2luZGVudF9mdW5j X2NsYXNzX3BhcmFtICAgICAgICAgPSBmYWxzZSAgICAgIyBXaGV0aGVyIHRvIGluZGVudCBjb250 aW51ZWQgZnVuY3Rpb24gY2FsbCBkZWNsYXJhdGlvbiBvbmUgaW5kZW50IGxldmVsLA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJhdGhlciB0aGFuIGFs aWduaW5nIHBhcmFtZXRlcnMgdW5kZXIgdGhlIG9wZW4gcGFyZW50aGVzaXMuDQo+ICtpbmRlbnRf ZnVuY19jdG9yX3Zhcl9wYXJhbSAgICAgID0gZmFsc2UgICAgICMgV2hldGhlciB0byBpbmRlbnQg Y29udGludWVkIGNsYXNzIHZhcmlhYmxlIGNvbnN0cnVjdG9ycyBvbmUgaW5kZW50IGxldmVsLA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJhdGhlciB0 aGFuIGFsaWduaW5nIHBhcmFtZXRlcnMgdW5kZXIgdGhlIG9wZW4gcGFyZW50aGVzaXMuDQo+ICtp bmRlbnRfZnVuY19kZWZfcGFyYW0gICAgICAgICAgID0gdHJ1ZSAgICAgICMgV2hldGhlciB0byBp bmRlbnQgY29udGludWVkIGZ1bmN0aW9uIGRlZmluaXRpb24gcGFyYW1ldGVycyBvbmUgaW5kZW50 DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbGV2ZWws IHJhdGhlciB0aGFuIGFsaWduaW5nIHBhcmFtZXRlcnMgdW5kZXIgdGhlIG9wZW4gcGFyZW50aGVz aXMuDQo+ICtubF9mZGVmX2JyYWNlICAgICAgICAgICAgICAgICAgID0gYWRkICAgICAgICMgQWRk IG9yIHJlbW92ZSBuZXdsaW5lIGJldHdlZW4gZnVuY3Rpb24gc2lnbmF0dXJlIGFuZCAneycuDQo+ ICtubF9mdW5jX2NhbGxfZW5kX211bHRpX2xpbmUgICAgID0gdHJ1ZSAgICAgICMgV2hldGhlciB0 byBhZGQgYSBuZXdsaW5lIGJlZm9yZSAnKScgaW4gYSBmdW5jdGlvbiBjYWxsIGlmICcoJyBhbmQg JyknIGFyZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IGluIGRpZmZlcmVudCBsaW5lcy4NCj4gK25sX2Z1bmNfY2FsbF9wYXJlbiAgICAgICAgICAgICAg PSByZW1vdmUgICAgIyBBZGQgb3IgcmVtb3ZlIG5ld2xpbmUgYmV0d2VlbiBhIGZ1bmN0aW9uIG5h bWUgYW5kIHRoZSBvcGVuaW5nICcoJyBpbiB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyBjYWxsLg0KPiArbmxfZnVuY19jYWxsX3N0YXJ0X211bHRp X2xpbmUgICA9IHRydWUgICAgICAjIFdoZXRoZXIgdG8gYWRkIGEgbmV3bGluZSBhZnRlciAnKCcg aW4gYSBmdW5jdGlvbiBjYWxsIGlmICcoJyBhbmQgJyknIGFyZQ0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGluIGRpZmZlcmVudCBsaW5lcy4NCj4gK25s X2Z1bmNfZGVjbF9hcmdzICAgICAgICAgICAgICAgPSBmb3JjZSAgICAgIyBBZGQgb3IgcmVtb3Zl IG5ld2xpbmUgYWZ0ZXIgZWFjaCAnLCcgaW4gYSBmdW5jdGlvbiBkZWNsYXJhdGlvbi4NCj4gK25s X2Z1bmNfZGVjbF9lbXB0eSAgICAgICAgICAgICAgPSBhZGQgICAgICAgIyBBZGQgb3IgcmVtb3Zl IG5ld2xpbmUgYmV0d2VlbiAnKCknIGluIGEgZnVuY3Rpb24gZGVjbGFyYXRpb24uDQo+ICtubF9m dW5jX2RlZl9hcmdzICAgICAgICAgICAgICAgID0gZm9yY2UgICAgICMgQWRkIG9yIHJlbW92ZSBu ZXdsaW5lIGFmdGVyIGVhY2ggJywnIGluIGEgZnVuY3Rpb24gZGVmaW5pdGlvbi4NCj4gK25sX2Z1 bmNfZGVmX2VtcHR5ICAgICAgICAgICAgICAgPSBhZGQgICAgICAgIyBBZGQgb3IgcmVtb3ZlIG5l d2xpbmUgYmV0d2VlbiAnKCknIGluIGEgZnVuY3Rpb24gZGVmaW5pdGlvbi4NCj4gK25sX2Z1bmNf ZGVmX3BhcmVuICAgICAgICAgICAgICAgPSByZW1vdmUgICAgIyBBZGQgb3IgcmVtb3ZlIG5ld2xp bmUgYmV0d2VlbiBhIGZ1bmN0aW9uIG5hbWUgYW5kIHRoZSBvcGVuaW5nICcoJw0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGluIHRoZSBkZWZpbml0aW9u Lg0KPiArbmxfZnVuY19wYXJlbiAgICAgICAgICAgICAgICAgICA9IHJlbW92ZSAgICAjIEFkZCBv ciByZW1vdmUgbmV3bGluZSBiZXR3ZWVuIGEgZnVuY3Rpb24gbmFtZSBhbmQgdGhlIG9wZW5pbmcg JygnIGluDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg dGhlIGRlY2xhcmF0aW9uLg0KPiArbmxfZnVuY190eXBlX25hbWUgICAgICAgICAgICAgICA9IGFk ZCAgICAgICAjIEFkZCBvciByZW1vdmUgbmV3bGluZSBiZXR3ZWVuIHJldHVybiB0eXBlIGFuZCBm dW5jdGlvbiBuYW1lIGluIGEgZnVuY3Rpb24NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIyBkZWZpbml0aW9uLg0KPiArc3BfZnBhcmVuX2JyYWNlICAgICAg ICAgICAgICAgICA9IGZvcmNlICAgICAjIEFkZCBvciByZW1vdmUgc3BhY2UgYmV0d2VlbiAnKScg YW5kICd7JyBvZiBmdW5jdGlvbi4NCj4gK3VzZV9pbmRlbnRfZnVuY19jYWxsX3BhcmFtICAgICAg PSB0cnVlICAgICAgIyBpbmRlbnRfZnVuY19jYWxsX3BhcmFtIHdpbGwgYmUgdXNlZA0KPiArDQo+ ICsjIEFkZGl0aW9uYWwgTmV3bGluZSBSdWxlcw0KPiArbmxfYWZ0ZXJfYnJhY2Vfb3BlbiAgICAg ICAgICAgICAgICAgICAgICAgICAgPSB0cnVlICAgICAjIFdoZXRoZXIgdG8gYWRkIGEgbmV3bGlu ZSBhZnRlciAneycuIFRoaXMgYWxzbyBhZGRzIGEgbmV3bGluZQ0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJlZm9yZSB0aGUgbWF0 Y2hpbmcgJ30nLg0KPiArbmxfYWZ0ZXJfYnJhY2Vfb3Blbl9jbXQgICAgICAgICAgICAgICAgICAg ICAgPSB0cnVlICAgICAjIFdoZXRoZXIgdG8gYWRkIGEgbmV3bGluZSBiZXR3ZWVuIHRoZSBvcGVu IGJyYWNlIGFuZCBhDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgdHJhaWxpbmcgc2luZ2xlLWxpbmUgY29tbWVudC4NCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBSZXF1 aXJlcyBubF9hZnRlcl9icmFjZV9vcGVuID0gdHJ1ZS4NCj4gK25sX2FmdGVyX2RvICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgID0gYWRkICAgICAgIyBBZGQgb3IgcmVtb3ZlIGJsYW5r IGxpbmUgYWZ0ZXIgJ2RvL3doaWxlJyBzdGF0ZW1lbnQuDQo+ICtubF9hZnRlcl9mb3IgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGFkZCAgICAgICMgQWRkIG9yIHJlbW92ZSBibGFu ayBsaW5lIGFmdGVyICdmb3InIHN0YXRlbWVudC4NCj4gK25sX2FmdGVyX2Z1bmNfYm9keSAgICAg ICAgICAgICAgICAgICAgICAgICAgID0gMiAgICAgICAgIyBUaGUgbnVtYmVyIG9mIG5ld2xpbmVz IGFmdGVyICd9JyBvZiBhIG11bHRpLWxpbmUgZnVuY3Rpb24gYm9keQ0KPiArbmxfYWZ0ZXJfZnVu Y19ib2R5X29uZV9saW5lciAgICAgICAgICAgICAgICAgPSAyDQo+ICtubF9hZnRlcl9mdW5jX3By b3RvICAgICAgICAgICAgICAgICAgICAgICAgICA9IDINCj4gK25sX2FmdGVyX2Z1bmNfcHJvdG9f Z3JvdXAgICAgICAgICAgICAgICAgICAgID0gMg0KPiArbmxfYWZ0ZXJfaWYgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPSBhZGQNCj4gK25sX2FmdGVyX211bHRpbGluZV9jb21tZW50 ICAgICAgICAgICAgICAgICAgID0gZmFsc2UNCj4gK25sX2FmdGVyX3JldHVybiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgID0gZmFsc2UNCj4gK25sX2FmdGVyX3N0cnVjdCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgID0gMg0KPiArbmxfYWZ0ZXJfc3dpdGNoICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPSBhZGQNCj4gK25sX2FmdGVyX3ZicmFjZV9jbG9zZSAgICAgICAgICAg ICAgICAgICAgICAgID0gdHJ1ZQ0KPiArbmxfYWZ0ZXJfdmJyYWNlX29wZW4gICAgICAgICAgICAg ICAgICAgICAgICAgPSB0cnVlDQo+ICtubF9hZnRlcl92YnJhY2Vfb3Blbl9lbXB0eSAgICAgICAg ICAgICAgICAgICA9IHRydWUNCj4gK25sX2FmdGVyX3doaWxlICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgID0gYWRkDQo+ICtubF9hc3NpZ25fbGVhdmVfb25lX2xpbmVycyAgICAgICAgICAg ICAgICAgICA9IHRydWUNCj4gK25sX2JlZm9yZV9ibG9ja19jb21tZW50ICAgICAgICAgICAgICAg ICAgICAgID0gMg0KPiArbmxfYmVmb3JlX2Nhc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPSBmYWxzZQ0KPiArbmxfYmVmb3JlX2RvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPSBpZ25vcmUNCj4gK25sX2JlZm9yZV9mb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgID0gaWdub3JlDQo+ICtubF9iZWZvcmVfaWYgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA9IGlnbm9yZQ0KPiArbmxfYmVmb3JlX3N3aXRjaCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPSBpZ25vcmUNCj4gK25sX2JlZm9yZV93aGlsZSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgID0gaWdub3JlDQo+ICtubF9iZWZvcmVfd2hvbGVfZmlsZV9pZmRlZiAgICAgICAgICAg ICAgICAgICA9IDINCj4gK25sX2JyYWNlX2JyYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgID0gZm9yY2UNCj4gK25sX2JyYWNlX3N0cnVjdF92YXIgICAgICAgICAgICAgICAgICAgICAg ICAgID0gcmVtb3ZlDQo+ICtubF9jYXNlX2NvbG9uX2JyYWNlICAgICAgICAgICAgICAgICAgICAg ICAgICA9IGFkZA0KPiArbmxfY2xhc3NfbGVhdmVfb25lX2xpbmVycyAgICAgICAgICAgICAgICAg ICAgPSBmYWxzZQ0KPiArbmxfY29sbGFwc2VfZW1wdHlfYm9keSAgICAgICAgICAgICAgICAgICAg ICAgPSBmYWxzZQ0KPiArbmxfY29tbWVudF9mdW5jX2RlZiAgICAgICAgICAgICAgICAgICAgICAg ICAgPSAxDQo+ICtubF9jcmVhdGVfZm9yX29uZV9saW5lciAgICAgICAgICAgICAgICAgICAgICA9 IGZhbHNlDQo+ICtubF9jcmVhdGVfaWZfb25lX2xpbmVyICAgICAgICAgICAgICAgICAgICAgICA9 IGZhbHNlDQo+ICtubF9jcmVhdGVfd2hpbGVfb25lX2xpbmVyICAgICAgICAgICAgICAgICAgICA9 IGZhbHNlDQo+ICtubF9kZWZpbmVfbWFjcm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9 IGZhbHNlDQo+ICtubF9kc19zdHJ1Y3RfZW51bV9jbG9zZV9icmFjZSAgICAgICAgICAgICAgICA9 IHRydWUNCj4gK25sX2RzX3N0cnVjdF9lbnVtX2NtdCAgICAgICAgICAgICAgICAgICAgICAgID0g ZmFsc2UNCj4gK25sX2VudW1fbGVhdmVfb25lX2xpbmVycyAgICAgICAgICAgICAgICAgICAgID0g ZmFsc2UNCj4gK25sX2Z1bmNfZGVjbF9lbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g YWRkDQo+ICtubF9mdW5jX2RlY2xfc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGFk ZA0KPiArbmxfZnVuY19kZWZfZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhZGQN Cj4gK25sX2Z1bmNfZGVmX3N0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYWRkDQo+ ICtubF9mdW5jX2xlYXZlX29uZV9saW5lcnMgICAgICAgICAgICAgICAgICAgICA9IGZhbHNlDQo+ ICtubF9mdW5jX3Byb3RvX3R5cGVfbmFtZSAgICAgICAgICAgICAgICAgICAgICA9IGFkZA0KPiAr bmxfZnVuY192YXJfZGVmX2JsayAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxDQo+ICtubF9n ZXRzZXRfbGVhdmVfb25lX2xpbmVycyAgICAgICAgICAgICAgICAgICA9IGZhbHNlDQo+ICtubF9p Zl9sZWF2ZV9vbmVfbGluZXJzICAgICAgICAgICAgICAgICAgICAgICA9IGZhbHNlDQo+ICtubF9t dWx0aV9saW5lX2RlZmluZSAgICAgICAgICAgICAgICAgICAgICAgICA9IGZhbHNlDQo+ICtubF9z cXVlZXplX2lmZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGZhbHNlDQo+ICtubF92 YXJfZGVmX2Jsa19lbmQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDANCj4gK25sX3Zhcl9k ZWZfYmxrX3N0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgID0gMA0KPiArDQo+ICsjIFByZXBy b2Nlc3NvciBSdWxlcw0KPiArcHBfZGVmaW5lX2F0X2xldmVsICAgICAgPSB0cnVlDQo+ICtwcF9p Zl9pbmRlbnRfY29kZSAgICAgICA9IGZhbHNlDQo+ICtwcF9pbmRlbnRfZnVuY19kZWYgICAgICA9 IGZhbHNlDQo+ICtwcF9pbmRlbnRfZXh0ZXJuICAgICAgICA9IGZhbHNlDQo+ICtwcF9pZ25vcmVf ZGVmaW5lX2JvZHkgICA9IHRydWUgICAgICAgICAgICAgICAgIyBXb3JrYXJvdW5kOiBUdXJuIG9m ZiBwcm9jZXNzaW5nIGZvciAjZGVmaW5lIGJvZHkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIChjdXJyZW50IHJ1bGVzIGRvIG5vdCB3b3JrIGZvciBz b21lIGRlZmluZXMpDQo+ICtwcF9pbmRlbnQgICAgICAgICAgICAgICA9IGFkZA0KPiArcHBfaW5k ZW50X2F0X2xldmVsICAgICAgPSB0cnVlDQo+ICtwcF9pbmRlbnRfY291bnQgICAgICAgICA9IDIN Cj4gK3BwX2luZGVudF9pZiAgICAgICAgICAgID0gMg0KPiArcHBfaW5kZW50X3JlZ2lvbiAgICAg ICAgPSAyDQo+ICtwcF9yZWdpb25faW5kZW50X2NvZGUgICA9IGZhbHNlDQo+ICtwcF9zcGFjZSAg ICAgICAgICAgICAgICA9IHJlbW92ZQ0KPiArDQo+ICsjDQo+ICsjIFRoZSB0b2tlbnMgYmVsb3cg YXJlIGFzc2lnbmVkIHNwZWNpZmljIHR5cGVzIHNvIHRoZXkgYXJlIGFsd2F5cyByZWNvZ25pemVk IHByb3Blcmx5Lg0KPiArIw0KPiArDQo+ICsjIEV4cGxpY2l0bHkgZGVmaW5lIEVESyBJSSBxdWFs aWZpZXJzDQo+ICtzZXQgUVVBTElGSUVSIENPTlNUDQo+ICtzZXQgUVVBTElGSUVSIEVGSUFQSQ0K PiArc2V0IFFVQUxJRklFUiBJTg0KPiArc2V0IFFVQUxJRklFUiBPUFRJT05BTA0KPiArc2V0IFFV QUxJRklFUiBPVVQNCj4gKw0KPiArIyBFeHBsaWNpdGx5IGRlZmluZSBFREsgSUkgdHlwZXMNCj4g K3NldCBUWVBFIEVGSV9TVEFUVVMNCj4gK3NldCBUWVBFIFZPSUQNCj4gZGlmZiAtLWdpdCBhLy5w eXRvb2wvUGx1Z2luL1VuY3J1c3RpZnlDaGVjay91bmNydXN0aWZ5X2V4dF9kZXAueWFtbA0KPiBi Ly5weXRvb2wvUGx1Z2luL1VuY3J1c3RpZnlDaGVjay91bmNydXN0aWZ5X2V4dF9kZXAueWFtbA0K PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLmQ4YzIyNDAzYjRi MQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiLy5weXRvb2wvUGx1Z2luL1VuY3J1c3RpZnlDaGVj ay91bmNydXN0aWZ5X2V4dF9kZXAueWFtbA0KPiBAQCAtMCwwICsxLDE2IEBADQo+ICsjIyBAZmls ZQ0KPiArIyBEb3dubG9hZHMgdGhlIFVuY3J1c3RpZnkgYXBwbGljYXRpb24gZnJvbSBhIFByb2pl Y3QgTXUgTnVHZXQgcGFja2FnZS4NCj4gKyMNCj4gKyMgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQg Q29ycG9yYXRpb24uDQo+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2Ut UGF0ZW50DQo+ICsjIw0KPiArew0KPiArICAiaWQiOiAidW5jcnVzdGlmeS1jaS0xIiwNCj4gKyAg InNjb3BlIjogImNpYnVpbGQiLA0KPiArICAidHlwZSI6ICJudWdldCIsDQo+ICsgICJuYW1lIjog Im11LXVuY3J1c3RpZnktcmVsZWFzZSIsDQo+ICsgICJzb3VyY2UiOiAiaHR0cHM6Ly9wa2dzLmRl di5henVyZS5jb20vcHJvamVjdG11L1VuY3J1c3RpZnkvX3BhY2thZ2luZy9tdV91bmNydXN0aWZ5 L251Z2V0L3YzL2luZGV4Lmpzb24iLA0KPiArICAidmVyc2lvbiI6ICI3My4wLjMiLA0KPiArICAi ZmxhZ3MiOiBbInNldF9zaGVsbF92YXIiLCAiaG9zdF9zcGVjaWZpYyJdLA0KPiArICAidmFyX25h bWUiOiAiVU5DUlVTVElGWV9DSV9QQVRIIg0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvLnB5dG9vbC9Q bHVnaW4vVW5jcnVzdGlmeUNoZWNrL3VuY3J1c3RpZnlfcGx1Z19pbi55YW1sDQo+IGIvLnB5dG9v bC9QbHVnaW4vVW5jcnVzdGlmeUNoZWNrL3VuY3J1c3RpZnlfcGx1Z19pbi55YW1sDQo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMDZjNzZhZjAyNzU5DQo+IC0t LSAvZGV2L251bGwNCj4gKysrIGIvLnB5dG9vbC9QbHVnaW4vVW5jcnVzdGlmeUNoZWNrL3VuY3J1 c3RpZnlfcGx1Z19pbi55YW1sDQo+IEBAIC0wLDAgKzEsMTEgQEANCj4gKyMjIEBmaWxlDQo+ICsj IENpQnVpbGRQbHVnaW4gdXNlZCB0byBjaGVjayBjb2Rpbmcgc3RhbmRhcmQgY29tcGxpYW5jZSBv ZiBFREsgSUkgc3R5bGUgQyBzb3VyY2UgY29kZQ0KPiArIw0KPiArIyBDb3B5cmlnaHQgKGMpIE1p Y3Jvc29mdCBDb3Jwb3JhdGlvbi4NCj4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0y LUNsYXVzZS1QYXRlbnQNCj4gKyMjDQo+ICt7DQo+ICsgICJzY29wZSI6ICJjaWJ1aWxkIiwNCj4g KyAgIm5hbWUiOiAiVW5jcnVzdGlmeSBDb2RpbmcgU3RhbmRhcmQgVGVzdCIsDQo+ICsgICJtb2R1 bGUiOiAiVW5jcnVzdGlmeUNoZWNrIg0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvLnB5dG9vbC9SZWFk bWUubWQgYi8ucHl0b29sL1JlYWRtZS5tZA0KPiBpbmRleCBmNjUwNTUwNzk2NmEuLmUwZDA3ZjMx NzA0OSAxMDA2NDQNCj4gLS0tIGEvLnB5dG9vbC9SZWFkbWUubWQNCj4gKysrIGIvLnB5dG9vbC9S ZWFkbWUubWQNCj4gQEAgLTI2NCw2ICsyNjQsMTAgQEAgQlNELTItQ2xhdXNlLVBhdGVudC4NCj4g IFJ1biB0aGUgRWNjIHRvb2wgb24gdGhlIHBhY2thZ2UuIFRoZSBFY2MgdG9vbCBpcyBhdmFpbGFi bGUgaW4gdGhlIEJhc2VUb29scw0KPiAgcGFja2FnZS4gSXQgY2hlY2tzIHRoYXQgdGhlIGNvZGUg Y29tcGxpZXMgdG8gdGhlIEVES0lJIGNvZGluZyBzdGFuZGFyZC4NCj4gDQo+ICsjIyMgQ29kaW5n IFN0YW5kYXJkIENvbXBsaWFuY2UgLSBVbmNydXN0aWZ5Q2hlY2sNCj4gKw0KPiArUnVucyB0aGUg VW5jcnVzdGlmeSBhcHBsaWNhdGlvbiB0byBjaGVjayBmb3IgY29kaW5nIHN0YW5kYXJkIGNvbXBs aWFuY2UgaXNzdWVzLg0KPiArDQo+ICAjIyBQeVRvb2wgU2NvcGVzDQo+IA0KPiAgU2NvcGVzIGFy ZSBob3cgdGhlIFB5VG9vbCBleHRfZGVwLCBwYXRoX2VudiwgYW5kIHBsdWdpbnMgYXJlIGFjdGl2 YXRlZC4gIE1lYW5pbmcNCj4gLS0NCj4gMi4yOC4wLndpbmRvd3MuMQ0KDQo=