From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-0.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 76267C3A59E for ; Wed, 21 Aug 2019 14:22:48 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 33E3822D6D for ; Wed, 21 Aug 2019 14:22:48 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="PZ04PIvg" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 33E3822D6D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=virtuozzo.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:48982 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i0RVf-0003RW-Bh for qemu-devel@archiver.kernel.org; Wed, 21 Aug 2019 10:22:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34530) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i0RUq-0002zW-2f for qemu-devel@nongnu.org; Wed, 21 Aug 2019 10:21:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i0RUm-0007aD-Aw for qemu-devel@nongnu.org; Wed, 21 Aug 2019 10:21:55 -0400 Received: from mail-eopbgr10097.outbound.protection.outlook.com ([40.107.1.97]:54215 helo=EUR02-HE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1i0RUl-0007ZT-EL; Wed, 21 Aug 2019 10:21:52 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Agnky9w0EFWMJMSvQZt1g5DDrnWkNytFhMtj0GIiVmZ0wPU8ZkSDaLzrJrJFL2tUdk5VNWXxEjEViVrOv5tN5rCItmPw3l3Q5H32wAuJuixOWMz50I0YMZGwsWXAkKKQH+s4jhV+8VK3XJO9OUU4pXKcHPfYoTL2hoGYI0ezgl1fqkxm0ROEZb6STIOnIWlYnLsXn09Pqjn5vfk5notI2VPK/WIP1g5gHirAkr3FOEj1keb3lkbpDpjUxIhu1SJhtQfRRUua5kWKeXbTD6nxZejk8QniAaTDVrIX3qUuYwZw6wS00+qXFcIdToAQ2C6SVwfx5/vzN0FPnVFTqN8UIw== 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-SenderADCheck; bh=vH6PwjAGVFBop6m/4BBRmyupDlPL+Ls3vsf0t4jcByw=; b=kWO9l7ZoyESXZ9iynT9DeEsF0qWkGXPxc2xuOU8NpKLVOWwNwA4n/qEfla/fD7/CcgRUSdj+hHyyDyuhht1XUzFi2Up5Y3SUqAyuba+QD5SZ84EtG2lMQTHElJe7rx6QSU/Wvet2d3Htg8R6smx7bvySwwbnPFgoNs2h8MJTTubXxMLyUAkMwY9gC8947N2c99f6ruH7sRgqsckx87NdbNOgZnOhQ7Lmiooj7X9PGACS9bYrgN3ekUp1udZtFy4GsnzDDODgSpzAVOH6DRcvNuYlNDx3uoABbU9qQxh62CqeT2SUeNqh4yviCswei3Gc1eZ8c37DlgVzcHJIW32zmA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vH6PwjAGVFBop6m/4BBRmyupDlPL+Ls3vsf0t4jcByw=; b=PZ04PIvgbFkommTewfVr8zRyYkDYDvQJBelNolAfp2Blb1+NCk8SLJJGL8mjIR5nm0RVuZKa9CEBfPJmTiyMyPwT1D0/X/91YMkaY4JxNFVXeuavoeIDzXRBTyG1OcUCIP+knXZp0N4E0RqTO1O/lh9gqr1iXGmAoiYAylwzUiw= Received: from DB8PR08MB5498.eurprd08.prod.outlook.com (52.133.242.216) by DB8PR08MB4201.eurprd08.prod.outlook.com (20.179.8.215) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2178.18; Wed, 21 Aug 2019 14:21:47 +0000 Received: from DB8PR08MB5498.eurprd08.prod.outlook.com ([fe80::617b:d2c2:11e9:4604]) by DB8PR08MB5498.eurprd08.prod.outlook.com ([fe80::617b:d2c2:11e9:4604%3]) with mapi id 15.20.2178.020; Wed, 21 Aug 2019 14:21:47 +0000 From: Vladimir Sementsov-Ogievskiy To: John Snow , Qemu-block Thread-Topic: QEMU bitmap backup usability FAQ Thread-Index: AQHVV6Y76lbX5xLa+kinI7VdyhNbYacFqDcA Date: Wed, 21 Aug 2019 14:21:47 +0000 Message-ID: <436c161e-fe05-da2c-835c-562da489ba82@virtuozzo.com> References: <5777a218-1ba4-78e0-ef73-bdfeecf04b25@redhat.com> In-Reply-To: <5777a218-1ba4-78e0-ef73-bdfeecf04b25@redhat.com> Accept-Language: ru-RU, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: HE1P189CA0027.EURP189.PROD.OUTLOOK.COM (2603:10a6:7:53::40) To DB8PR08MB5498.eurprd08.prod.outlook.com (2603:10a6:10:11c::24) authentication-results: spf=none (sender IP is ) smtp.mailfrom=vsementsov@virtuozzo.com; x-ms-exchange-messagesentrepresentingtype: 1 x-tagtoolbar-keys: D20190821172144621 x-originating-ip: [185.231.240.5] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: a836969b-7c95-4f68-78d5-08d72642e62c x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(5600148)(711020)(4605104)(1401327)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020); SRVR:DB8PR08MB4201; x-ms-traffictypediagnostic: DB8PR08MB4201: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 0136C1DDA4 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(346002)(376002)(396003)(136003)(366004)(39850400004)(52314003)(199004)(189003)(102836004)(36756003)(6116002)(6506007)(478600001)(6246003)(8676002)(476003)(486006)(11346002)(186003)(14444005)(107886003)(386003)(71190400001)(446003)(66946007)(66446008)(71200400001)(7736002)(8936002)(305945005)(66556008)(2616005)(30864003)(53936002)(256004)(66476007)(64756008)(25786009)(54906003)(6512007)(110136005)(229853002)(316002)(4326008)(26005)(5660300002)(53946003)(6436002)(76176011)(81156014)(66066001)(14454004)(52116002)(31686004)(6486002)(86362001)(81166006)(3846002)(99286004)(31696002)(2906002)(559001)(579004); DIR:OUT; SFP:1102; SCL:1; SRVR:DB8PR08MB4201; H:DB8PR08MB5498.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: virtuozzo.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: AeCZoT0on+cfkmL3HqVT20j7vdPIEg/R2xi5sEYhugB8ojq3rr17R0SUbFVEhJnOepGAq3Ivo0mILCOMvED1GoCoK/7xiFkAy4iREBjijNAB2OV7vtuXjRTQOgv/cRFWOIIt+2IUU5YNAFSJjtN8J8s82aLDQT/LkBYDUUzuRU91thO9putnYC9V7uc9t1vktsNO/+0oTM+Wc9ogHijADnd+nQlLtVV7RsPEVcSU7mXP9iiBM2V4CCxH5YFNq0p7gMepCbH8I2lAjizQ0AQ/B+zExU6RJmdonq9M43oE3bQUw6tY4E07osObwaB790oNdR6OuJ/vKLHrLVOvWviPz4XymM0ihved6njPhnreWfs7mbtNQAloxxZZVIKT7Zktj4mlhIHCdTE5FSD+S5bnAzdg7dN5nhR24xCPiqp6AnQ= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: a836969b-7c95-4f68-78d5-08d72642e62c X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Aug 2019 14:21:47.0347 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: aZV+iGWaC0axdPE3yTF2Xt4eOCzn3Urkca3IflbKiokFd8xaCgS7a6zR0xV8mIZpwenel1tbrD1FNjcgtjlYiaieISi2Gbg38WmnL73IwPM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR08MB4201 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.1.97 Subject: Re: [Qemu-devel] QEMU bitmap backup usability FAQ X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Krempa , "libvir-list@redhat.com" , qemu-devel , Nir Soffer , Nikolay Shirokovskiy Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" W0NDIE5pa29sYXldDQoNCjIxLjA4LjIwMTkgMToyNSwgSm9obiBTbm93IHdyb3RlOg0KPiBIaSwg ZG93bnN0cmVhbSBoZXJlIGF0IFJlZCBIYXQgSSd2ZSBiZWVuIGZpZWxkaW5nIHNvbWUgcXVlc3Rp b25zIGFib3V0DQo+IHRoZSB1c2FiaWxpdHkgYW5kIGZlYXR1cmUgcmVhZGluZXNzIG9mIEJpdG1h cHMgKGFuZCByZWxhdGVkIGZlYXR1cmVzKSBpbg0KPiBRRU1VLg0KPiANCj4gSGVyZSBhcmUgc29t ZSBxdWVzdGlvbnMgSSBhbnN3ZXJlZCBpbnRlcm5hbGx5IHRoYXQgSSBhbSBjb3B5aW5nIHRvIHRo ZQ0KPiBsaXN0IGZvciB0d28gcmVhc29uczoNCj4gDQo+ICgxKSBUbyBtYWtlIHN1cmUgbXkgYW5z d2VycyBhcmUgYWN0dWFsbHkgY29ycmVjdCwgYW5kDQo+ICgyKSBUbyBzaGFyZSB0aGlzIHBzZXVk by1yZWZlcmVuY2Ugd2l0aCB0aGUgY29tbXVuaXR5IGF0IGxhcmdlLg0KPiANCj4gVGhpcyBpcyBs b25nLCBhbmQgbW9zdGx5IGZvciByZWZlcmVuY2UuIFRoZXJlJ3MgYSBzdW1tYXJ5IGF0IHRoZSBi b3R0b20NCj4gd2l0aCBzb21lIHRvZG8gaXRlbXMgYW5kIG9ic2VydmF0aW9ucyBhYm91dCB0aGUg dXNhYmlsaXR5IG9mIHRoZSBmZWF0dXJlDQo+IGFzIGl0IGV4aXN0cyBpbiBRRU1VLg0KPiANCj4g QmVmb3JlIHRvbyBsb25nLCBJIGludGVuZCB0byBzZW5kIGEgbW9yZSBzdW1tYXJpemVkICJyb2Fk bWFwIiBtYWlsIHdoaWNoDQo+IGRldGFpbHMgYWxsIG9mIHRoZSBjdXJyZW50IGFuZCByZW1haW5p bmcgd29yayB0byBiZSBkb25lIGluIGFuZCBhcm91bmQNCj4gdGhlIGJpdG1hcHMgZmVhdHVyZSBp biBRRU1VLg0KPiANCj4gDQo+IFF1ZXN0aW9uczoNCj4gDQo+PiAiV2hhdCBmb3JtYXQocykgaXMv YXJlIHJlcXVpcmVkIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHk/Ig0KPiANCj4gIEZyb20gdGhlIFFF TVUgQVBJLCBhbnkgZm9ybWF0IGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhbmQgYXV0aG9yDQo+IGlu Y3JlbWVudGFsIGJhY2t1cHMuIFRoZSBvbmx5IGtub3duIGZvcm1hdCBsaW1pdGF0aW9ucyBhcmU6 DQo+IA0KPiAxLiBQZXJzaXN0ZW50IGJpdG1hcHMgY2Fubm90IGJlIGNyZWF0ZWQgb24gYW55IGZv cm1hdCBleGNlcHQgcWNvdzIsDQo+IGFsdGhvdWdoIHRoZXJlIGFyZSBob29rcyB0byBhZGQgc3Vw cG9ydCB0byBvdGhlciBmb3JtYXRzIGF0IGEgbGF0ZXIgZGF0ZQ0KPiBpZiBkZXNpcmVkLg0KPiAN Cj4gREFOR0VSIENBVkVBVCAjMTogQWRkaW5nIGJpdG1hcHMgdG8gUUVNVSBieSBkZWZhdWx0IGNy ZWF0ZXMgdHJhbnNpZW50DQo+IGJpdG1hcHMgaW5zdGVhZCBvZiBwZXJzaXN0ZW50IG9uZXMuDQo+ IA0KPiBQb3NzaWJsZSBUT0RPOiBBbGxvdyB1c2VycyB0byAndXBncmFkZScgdHJhbnNpZW50IGJp dG1hcHMgdG8gcGVyc2lzdGVudA0KPiBvbmVzIGluIGNhc2UgdGhleSBtYWRlIGEgbWlzdGFrZS4N Cg0KSSBkb3VidCwgYXMgaW4gbXkgb3BpbmlvbiByZWFsIHVzZXJzIG9mIFFlbXUgYXJlIG5vdCBw ZW9wbGUgYnV0IGxpYnZpcnQsIHdoaWNoDQpzaG91bGQgbmV2ZXIgbWFrZSBzdWNoIG1pc3Rha2Uu DQoNCj4gDQo+IA0KPiAyLiBXaGVuIHVzaW5nIHB1c2ggYmFja3VwcyAoYmxvY2tkZXYtYmFja3Vw LCBkcml2ZS1iYWNrdXApLCB5b3UgbWF5IHVzZQ0KPiBhbnkgZm9ybWF0IGFzIGEgdGFyZ2V0IGZv cm1hdC4gPg0KPiBEQU5HRVIgQ0FWRUFUICMyOiB3aXRob3V0IGJhY2tpbmcgZmlsZSBhbmQvb3Ig ZmlsZXN5c3RlbS1sZXNzIHNwYXJzZQ0KPiBzdXBwb3J0LCB0aGVzZSBpbWFnZXMgd2lsbCBiZSB1 bnVzYWJsZS4NCg0KWW91IG1lYW4gaW5jcmVtZW50YWwgYmFja3VwcyBvZiBjb3Vyc2UsIGFzIHRo ZSB3aG9sZSBkb2N1bWVudCBpcyBhYm91dCBiaXRtYXBzLg0KDQo+IA0KPiBFWEFNUExFOiBCYWNr aW5nIHVwIHRvIGEgcmF3IGZpbGUgbG9zZXMgYWxsb2NhdGlvbiBpbmZvcm1hdGlvbiwgc28gd2UN Cj4gY2FuIG5vIGxvbmdlciBkaXN0aW5ndWlzaCBiZXR3ZWVuIHplcm9lcyBhbmQgdW5hbGxvY2F0 ZWQgcmVnaW9ucy4gVGhlDQo+IGNsdXN0ZXIgc2l6ZSBpcyBhbHNvIGxvc3QuIFRoaXMgZmlsZSB3 aWxsIG5vdCBiZSB1c2FibGUgd2l0aG91dA0KPiBhZGRpdGlvbmFsIG1ldGFkYXRhIHJlY29yZGVk IGVsc2V3aGVyZS4qDQo+IA0KPiAoKiBUaGlzIGlzIGNvbXBsaWNhdGVkLCBidXQgaXQgaXMgaW4g dGhlb3J5IHBvc3NpYmxlIHRvIGRvIGEgcHVzaCBiYWNrdXANCj4gdG8gZS5nLiBhbiBOQkQgdGFy Z2V0IHdpdGggY3VzdG9tIHNlcnZlciBjb2RlIHRoYXQgc2F2ZXMgYWxsb2NhdGlvbg0KPiBpbmZv cm1hdGlvbiB0byBhIG1ldGFkYXRhIGZpbGUsIHdoaWNoIHdvdWxkIGFsbG93IHlvdSB0byByZWNv bnN0cnVjdA0KPiBiYWNrdXBzLiBGb3IgaW5zdGFuY2UsIHJlY29yZGluZyBpbiBhIC5qc29uIGZp bGUgd2hpY2ggZXh0ZW50cyB3ZXJlDQo+IHdyaXR0ZW4gb3V0IHdvdWxkIGFsbG93IHlvdSB0byAt LSB3aXRoIGEgY3VzdG9tIGJpbmFyeSAtLSB3cml0ZSB0aGlzDQo+IGluZm9ybWF0aW9uIG9uIHRv cCBvZiBhIGJhc2UgZmlsZSB0byByZWNvbnN0cnVjdCBhIGJhY2t1cC4pDQo+IA0KPiANCj4gMy4g QW55IGZvcm1hdCBjYW4gYmUgdXNlZCBmb3IgZWl0aGVyIHNoYXJlZCBzdG9yYWdlIG9yIGxpdmUg c3RvcmFnZQ0KPiBtaWdyYXRpb25zLiBUaGVyZSBhcmUgVFdPIGRpc3RpbmN0IG1lY2hhbmlzbXMg Zm9yIG1pZ3JhdGluZyBiaXRtYXBzOg0KPiANCj4gQSkgVGhlIGJpdG1hcCBpcyBmbHVzaGVkIHRv IHN0b3JhZ2UgYW5kIHJlLW9wZW5lZCBvbiB0aGUgZGVzdGluYXRpb24uDQo+IFRoaXMgaXMgb25s eSBzdXBwb3J0ZWQgZm9yIHFjb3cyIGFuZCBzaGFyZWQtc3RvcmFnZSBtaWdyYXRpb25zLg0KDQpj b25zOiBmbHVzaGluZy9yZW9wZW5pbmcgaXMgZG9uZSBkdXJpbmcgbWlncmF0aW9uIGRvd250aW1l LCBzbyBpZiB5b3UgaGF2ZQ0KYSBsb3Qgb2YgYml0bWFwIGRhdGEgKGZvciBleGFtcGxlLCA2NGsg Z3JhbnVsYXJlZCBiaXRtYXAgZm9yIDE2dGIgZGlzayBpcw0KfjMwTUIsIGFuZCB0aGVyZSBtYXkg YmUgc2V2ZXJhbCBiaXRtYXBzKSBkb3dudGltZSB3aWxsIGJlY29tZSBsb25nLg0KDQo+IA0KPiBC KSBUaGUgYml0bWFwIGlzIGxpdmUtbWlncmF0ZWQgdG8gdGhlIGRlc3RpbmF0aW9uLiBUaGlzIGlz IHN1cHBvcnRlZCBmb3INCj4gYW55IGZvcm1hdCBhbmQgY2FuIGJlIHVzZWQgZm9yIGVpdGhlciBz aGFyZWQgc3RvcmFnZSBvciBsaXZlIHN0b3JhZ2UNCj4gbWlncmF0aW9ucy4NCj4gDQo+IERBTkdF UiBDQVZFQVQgIzM6IFRoZSBzZWNvbmQgYml0bWFwIG1pZ3JhdGlvbiB0ZWNobmlxdWUgdGhlcmUg aXMgYW4NCj4gb3B0aW9uYWwgbWlncmF0aW9uIGNhcGFiaWxpdHkgdGhhdCBtdXN0IGJlIGVuYWJs ZWQgZXhwbGljaXRseS4NCj4gT3RoZXJ3aXNlLCBzb21lIG1pZ3JhdGlvbiBjb21iaW5hdGlvbnMg bWF5IGRyb3AgYml0bWFwcy4NCg0KQWxzbywgYmFkIHRoaW5nIG1heSBoYXBwZW4gaWYgd2UgdHJ5 IHRvIG1pZ3JhdGUgcGVyc2lzdGVudCBiaXRtYXAgdG8gbm90IHFjb3cyLg0KDQpBbHNvLCB3aXRo IGVuYWJsZWQgY2FwYWJpbGl0eSwgZmx1c2hpbmcvcmVvcGVuaW5nIGlzIGF1dG9tYXRpY2FsbHkg ZGlzYWJsZWQuDQoNCj4gDQo+IE1hdHJpeDoNCj4gDQo+PiBtaWdyYXRlID0gbWlncmF0ZV9jYXBh YmlsaXR5IG9yIChwZXJzaXN0ZW50IGFuZCBzaGFyZWRfc3RvcmFnZSkNCj4gDQo+IEVudW1lcmF0 ZWQ6DQo+IA0KPiBsaXZlIHN0b3JhZ2UgKyByYXcgOiB0cmFuc2llbnQgKyBuby1jYXBhYmlsaXR5 OiBEcm9wcGVkDQo+IGxpdmUtc3RvcmFnZSArIHJhdyA6IHRyYW5zaWVudCArIGJtLWNhcGFiaWxp dHk6IE1pZ3JhdGVkDQo+IGxpdmUtc3RvcmFnZSArIHFjb3cyIDogdHJhbnNpZW50ICsgbm8tY2Fw YWJpbGl0eTogRHJvcHBlZA0KPiBsaXZlLXN0b3JhZ2UgKyBxY293MiA6IHRyYW5zaWVudCArIGJt LWNhcGFiaWxpdHk6IE1pZ3JhdGVkDQo+IGxpdmUtc3RvcmFnZSArIHFjb3cyIDogcGVyc2lzdGVu dCArIG5vLWNhcGFiaWxpdHk6IERyb3BwZWQgKCEpDQo+IGxpdmUtc3RvcmFnZSArIHFjb3cyIDog cGVyc2lzdGVudCArIGJtLWNhcGFiaWxpdHk6IE1pZ3JhdGVkDQo+IA0KPiBzaGFyZWQtc3RvcmFn ZSArIHJhdyA6IHRyYW5zaWVudCAtIG5vLWNhcGFiaWxpdHk6IERyb3BwZWQNCj4gc2hhcmVkLXN0 b3JhZ2UgKyByYXcgOiB0cmFuc2llbnQgKyBibS1jYXBhYmlsaXR5OiBNaWdyYXRlZA0KPiBzaGFy ZWQtc3RvcmFnZSArIHFjb3cyIDogdHJhbnNpZW50ICsgbm8tY2FwYWJpbGl0eTogTWlncmF0ZWQN Cg0KRHJvcHBlZCB5b3UgbWVhbg0KDQo+IHNoYXJlZC1zdG9yYWdlICsgcWNvdzIgOiB0cmFuc2ll bnQgKyBibS1jYXBhYmlsaXR5OiBNaWdyYXRlZA0KPiBzaGFyZWQtc3RvcmFnZSArIHFjb3cyIDog cGVyc2lzdGVudCArIG5vLWNhcGFiaWxpdHk6IE1pZ3JhdGVkDQo+IHNoYXJlZC1zdG9yYWdlICsg cWNvdzIgOiBwZXJzaXN0ZW50ICsgYm0tY2FwYWJpbGl0eTogTWlncmF0ZWQNCj4gDQo+IEVuYWJs aW5nIHRoZSBiaXRtYXAgbWlncmF0aW9uIGNhcGFiaWxpdHkgd2lsbCBBTFdBWVMgbWlncmF0ZSB0 aGUgYml0bWFwLg0KPiBJZiBpdCdzIGRpc2FibGVkLCB3ZSB3aWxsIG9ubHkgbWlncmF0ZSB0aGUg Yml0bWFwcyBmb3Igc2hhcmVkIHN0b3JhZ2UNCj4gbWlncmF0aW9ucyB3aGVyZSB0aGUgYml0bWFw IGlzIHBlcnNpc3RlbnQsIHdoaWNoIGlzIGEgcWNvdzItb25seSBjYXNlLg0KPiANCj4gVGhlcmUg aXMgbm8gd2FybmluZyBvciBlcnJvciBpZiB5b3UgYXR0ZW1wdCB0byBtaWdyYXRlIGluIGEgbWFu bmVyIHRoYXQNCj4gbG9zZXMgeW91ciBiaXRtYXBzLg0KPiANCj4gKEkgbWlnaHQgYmUgcGVyc3Vh ZGVkIHRvIGFkZCBhIGNhc2UgZm9yIHdoZW4geW91IGFyZSBkb2luZyBhIGxpdmUNCj4gc3RvcmFn ZSBtaWdyYXRpb24gb2YgcWNvdzIgd2l0aCBwZXJzaXN0ZW50IGJpdG1hcHMsIHdoaWNoIGlzIHNv bWV3aGF0IGENCj4gY29uZmxpY3RpbmcgY2FzZTogeW91J3ZlIGFza2VkIGZvciB0aGUgYml0bWFw IHRvIGJlIHBlcnNpc3RlbnQsIGJ1dCBpdA0KPiBzZWVtcyBsaWtlbHkgdGhhdCBpZiB0aGlzIGV2 ZXIgaGFwcGVucyBpbiBwcmFjdGljZSwgaXQncyBiZWNhdXNlIHlvdQ0KPiBoYXZlIG5lZ2xlY3Rl ZCB0byBhc2sgZm9yIGl0IHRvIGJlIG1pZ3JhdGVkIHRvIHRoZSBuZXcgaG9zdC4pDQo+IA0KPiBT ZWUgaW90ZXN0IDE2OSBmb3IgbW9yZSBkZXRhaWxzIG9uIHRoaXMuDQo+IA0KPiBBdCBwcmVzZW50 LCB0aGVzZSBhcmUgdGhlIG9ubHkgZm9ybWF0IGxpbWl0YXRpb25zIEkgYW0gY29uc2Npb3VzbHkg YXdhcmUNCj4gb2YuIEZyb20gYSBtYW5hZ2VtZW50IEFQSS9HVUkgcGVyc3BlY3RpdmUsIGl0IG1h a2VzIHNlbnNlIHRvIHJlc3RyaWN0DQo+IHRoZSBmZWF0dXJlIHNldCB0byAicWNvdzIgb25seSIg dG8gbWluaW1pemUgZWRnZSBjYXNlcy4NCj4gDQo+IA0KPj4gIklzIGxpYnZpcnQgYXdhcmUgb2Yg dGhlc2UgJ2dvdGNoYScgY2FzZXM/Ig0KPiANCj4gIEZyb20gdGFsa3MgSSd2ZSBoYWQgd2l0aCBF cmljIEJsYWtlIGFuZCBQZXRlciBLcmVtcGEsIHRoZXkgY2VydGFpbmx5IGFyZQ0KPiBub3cuDQo+ IA0KPiANCj4+ICJJcyBpdCBwb3NzaWJsZSB0byBtYWtlIHBlcnNpc3RlbnQgdGhlIGRlZmF1bHQ/ Ig0KPiANCj4gTm90IHF1aWNrbHkuDQo+IA0KPiBJbiBRRU1VLCBub3Qgd2l0aG91dCBhIGRlcHJl Y2F0aW9uIHBlcmlvZCBvciBzb21lIG90aGVyIGluY29tcGF0aWJpbGl0eS4NCj4gRGVmYXVsdCB2 YWx1ZXMgYXJlIG5vdCAoeWV0PykgaW50cm9zcGVjdGFibGUgdmlhIHRoZSBzY2hlbWEuIFdlIG5l ZWQNCj4gKHBvc3NpYmx5KSB1cCB0byB0d28gUUFQSSBleHRlbnNpb25zOg0KPiANCj4gSSkgVGhl IGFiaWxpdHkgdG8gcmV0dXJuIGRlcHJlY2F0aW9uIHdhcm5pbmdzIHdoZW4gaXNzdWluZyBhIGNv bW1hbmQNCj4gdGhhdCB3aWxsIGNlYXNlIHRvIHdvcmsgaW4gdGhlIGZ1dHVyZS4NCj4gDQo+IFRo aXMgaGFzIGJlZW4gYmVpbmcgZGlzY3Vzc2VkIHNvbWV3aGF0IG9uLWxpc3QgcmVjZW50bHkuIEl0 IHNlZW1zIGxpa2UNCj4gdGhlcmUgaXMgbm90IGEgYmlnIGFwcGV0aXRlIGZvciB0YWNrbGluZyBz b21ldGhpbmcgcGVyY2VpdmVkIGFzDQo+IGxvdy12YWx1ZSBiZWNhdXNlIGl0IGlzIGxpa2VseSB0 byBiZSBpZ25vcmVkLg0KPiANCj4gSUkpIFRoZSBhYmlsaXR5IHRvIGRvY3VtZW50IGRlZmF1bHQg dmFsdWVzIGluIHRoZSBRQVBJIHNjaGVtYSBmb3IgdGhlDQo+IHB1cnBvc2VzIG9mIGludHJvc3Bl Y3Rpb24uDQo+IA0KPiBXaXRoIG9uZSBvciBib3RoIG9mIHRoZXNlIGV4dGVuc2lvbnMsIHdlIGNv dWxkIHJlbW92ZSB0aGUgZGVmYXVsdCB2YWx1ZQ0KPiBmb3IgcGVyc2lzdGVuY2UgYW5kIHByb21v dGUgaXQgdG8gYSByZXF1aXJlZCBhcmd1bWVudCB3aXRoIGENCj4gdHJhbnNpdGlvbmFyeSBwZXJp b2Qgd2hlcmUgaXQgd2lsbCB3b3JrIHdpdGggYSB3YXJuaW5nLiBUaGVuLCBpbiB0aGUNCj4gZnV0 dXJlLCB1c2VycyB3aWxsIGJlIGZvcmNlZCB0byBzcGVjaWZ5IGlmIHRoZXkgd2FudCBwZXJzaXN0 ZW50PXRydWUgb3INCj4gcGVyc2lzdGVudD1mYWxzZS4NCj4gDQo+IFRoaXMgaXMgbm90IG9uIG15 IHBlcnNvbmFsIHJvYWRtYXAgdG8gaW1wbGVtZW50Lg0KPiANCj4gDQo+PiAiSXMgaXQgcG9zc2li bGUgdG8gbWFrZSBiaXRtYXAgbWlncmF0aW9uIHRoZSBkZWZhdWx0PyINCj4gDQo+IEkgZG9uJ3Qg a25vdyBhdCBwcmVzZW50LiBNaWdyYXRpb24gY2FwYWJpbGl0aWVzIGFyZSBlaXRoZXIgIm9uIiBv ciAib2ZmIg0KPiBhbmQgdGhlIGV4aXN0aW5nIG5lZ290aWF0aW9uIG1lY2hhbmlzbXMgZm9yIGNh cGFiaWxpdGllcyBhcmUgZXh0cmVtZWx5DQo+IHJ1ZGltZW50YXJ5Lg0KPiANCj4gQ2hhbmdpbmcg dGhpcyBtaWdodCByZXF1aXJlIGZpZGRsaW5nIHdpdGggbWFjaGluZSBjb21wYXQgcHJvcGVydGll cywNCj4gYWRkaW5nIGZlYXR1cmVzIHRvIHRoZSBtaWdyYXRpb24gcHJvdG9jb2wsIG9yIG1vcmUu IEkgZG9uJ3Qga25vdyB3aGF0IEkNCj4gZG9uJ3Qga25vdywgc28gSSB3aWxsIGVzdGltYXRlIHRo aXMgY2hhbmdlIGFzIGxpa2VseSBpbnZhc2l2ZS4NCj4gDQo+IEkndmUgZGlzY3Vzc2VkIHRoaXMg d2l0aCBEYXZpZCBHaWxiZXJ0IGFuZCBpdCBzZWVtcyBsaWtlIGEgY29tcGxpY2F0ZWQNCj4gcHJv amVjdCBmb3IgdGhlIGJlbmVmaXQgb2YgdGhpcyBzdWItcHJvamVjdCBhbG9uZSwgc28gdGhpcyBp c24ndCBvbiBteQ0KPiBwZXJzb25hbCByb2FkbWFwIHRvIHJlc29sdmUuDQo+IA0KPiBUaGUgZ2Vu ZXJhbCBjb25zZW5zdXMgYXBwZWFycyB0byBiZSB0aGF0IHByb3RlY3RpbmcgdGhlIHVzZXIgaXMN Cj4gbGlidmlydCdzIGpvYi4NCj4gDQo+IA0KPj4gIldoZXJlIGRvIHdlIHN0YW5kIHdpdGggZXh0 ZXJuYWwgc25hcHNob3Qgc3VwcG9ydD8iDQo+IA0KPiBTdGlsbCBicm9rZW4uIEluIHRoZSBhZnRl cm1hdGggb2YgNC4xLCBpdCdzIHRoZSBtb3N0IG9idmlvdXMgb3V0c3RhbmRpbmcNCj4gYnJva2Vu IGZlYXR1cmUuIFZsYWRpbWlyIGhhcyBwYXRjaGVzIHRvIGZpeCBpdCwgYnV0IHRoZXkgbmVlZCBz b21lDQo+IGF0dGVudGlvbi4NCg0KWW91IG1lYW4gIltQQVRDSCB2NCAwMC8xMF0gcWNvdzItYml0 bWFwczogcmV3cml0ZSByZW9wZW5pbmcgbG9naWMiDQp5ZXMsIHJldmlld3MgYXJlIHdlbGNvbWUu DQoNCj4gDQo+IA0KPj4gIldoYXQgbmVlZHMgdG8gaGFwcGVuIHRvIGJpdG1hcHMgd2hlbiBkb2lu ZyBzdHJlYW0gb3IgY29tbWl0PyINCj4gDQo+IFVuY2VydGFpbiBpbiBRRU1VOyBjcmVhdGluZyBh biBleHRlcm5hbCBzbmFwc2hvdCBpbXBsaWNpdGx5IGVuZHMgdGhlDQo+IHRpbWVzbGljZSByZXBy ZXNlbnRlZCBieSB0aGUgb2xkIGJpdG1hcCwgYnV0IGFuIGV4cGxpY2l0IGNoZWNrcG9pbnQgaXMN Cj4gYmV0dGVyLg0KDQpXaXRoIHJlY2VudCBwYXRjaGVzIHRvIFFBUEkgd2UgbW92ZWQgdG8gdGhl IGZvbGxvd2luZyB3YXk6DQpRZW11IGRvbid0IGNhcmUgYW5kIGRvbid0IGRvIGFueSBtYWdpYyBh cm91bmQgYml0bWFwcyBhdXRvbWF0aWNhbGx5LCBzbw0KYml0bWFwIGlzIHN0YXlpbmcgYXQgdGhl IHNhbWUgbm9kZSBhbmQgZG8gaXRzIHdvcmsuIFNvLCBvZmNvdXJzZSwgaWYgd2UgY29tbWl0IHRv cA0KdG8gYmFzZSwgZW5hYmxlZCBiaXRtYXBzIGluIGJhc2Ugd2lsbCB0cmFjayBhbGwgd3JpdGVz IG9mIHRoaXMgY29tbWl0IGpvYi4gQW5kIHNhbWUNCnRoaW5nIHdpdGggc3RyZWFtIGpvYi4gU28g aWYgdXNlciB3YW50cywgaXQgc2hvdWxkIG1vdmUsIGNvcHksIGVuYWJsZS9kaXNhYmxlIGJpdG1h cHMNCmFzIGRlc2lyZWQgYnkgaGFuZC4NCg0KPiANCj4gSSB0aGluayBzb21lIGxpdHRsZSBhc2Np aSBjaGFydHMgd2lsbCBoZWxwIHBlb3BsZSB1bmRlcnN0YW5kIHdoYXQgd2UncmUNCj4gdGFsa2lu ZyBhYm91dCBoZXJlLCBzbyBsZXQncyBjb3ZlciBzb21lIGV4YW1wbGVzLg0KPiANCj4gDQo+IFND RU5BUklPIDEpDQo+IA0KPiBIZXJlJ3MgYSB0aW1lbGluZSBmb3IgYSBzaW5nbGUgbm9kZSAob25l IGltYWdlLCBubyBiYWNraW5nIGZpbGVzKSwgd2l0aA0KPiBzb21lIHBvaW50cyBpbiB0aW1lIGhp Z2hsaWdodGVkOg0KPiANCj4gVGltZSBUID0gMC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5uDQo+ ICtyZWM6ICAgIFstLVgtLS0tLS1ZLS0tLS0tWi0tLS0tLS0tXQ0KPiAtcmVjOiAgICBbLS0tLS0t LS0teC0tLS0tLXktLS0tLS0tLV0NCj4gcmVnaW9uOiAgW2FhYmJiYmJiYmNjY2NjY2NkZGRkZGRk ZGRdDQo+IA0KPiANCj4gWCwgWSwgYW5kIFogYXJlIHBvaW50cyBpbiB0aW1lIHdoZXJlIGJpdG1h cHMgJ3gnLCAneScsIGFuZCAneicgd2VyZQ0KPiBjcmVhdGVkIGFuZCBiZWdhbiByZWNvcmRpbmcu IHggYW5kIHkgYXJlIHBvaW50cyBpbiB0aW1lIHdoZXJlIGJpdG1hcHMNCj4gJ3gnIGFuZCAneScg c3RvcHBlZCByZWNvcmRpbmcuDQo+IA0KPiBUaGlzIGNyZWF0ZXMgYSBmZXcgZGlzdGluY3QgcmVn aW9ucyAvIHRpbWVzbGljZXMuDQo+IA0KPiBhOiBEYXRhIHdyaXR0ZW4gYmVmb3JlIHdlIGJlZ2Fu IHRyYWNraW5nIHdyaXRlcy4NCj4gYjogRGF0YSB3cml0dGVuIHRvIGJpdG1hcCAneCcNCj4gYzog RGF0YSB3cml0dGVuIHRvIGJpdG1hcCAneScNCj4gZDogZGF0YSB3cml0dGVuIHRvIGJpdG1hcCAn eicNCj4gDQo+IHJlZ2lvbiAnYScgaXMgb2YgYW4gdW5rbm93biBzaXplIGFuZCBpbmRldGVybWlu YXRlIGxlbmd0aCwgYmVjYXVzZSB0aGVyZQ0KPiBpcyBubyByZWZlcmVuY2UgcG9pbnQgKGNoZWNr cG9pbnQpIHByaW9yIHRvIGl0Lg0KPiANCj4gcmVnaW9ucyAnYicgYW5kICdjJyBhcmUgb2YgZmlu aXRlIHNpemUgYW5kIGRldGVybWluYXRlIGxlbmd0aCwgYmVjYXVzZQ0KPiB0aGV5IGhhdmUgZml4 ZWQgcmVmZXJlbmNlIHBvaW50cyBvbiBlaXRoZXIgc2lkZXMgb2YgdGhlaXIgdGltZXNsaWNlLg0K PiANCj4gcmVnaW9uICdkJyBpcyBhbHNvIG9mIGFuIHVua25vd24gc2l6ZSBhbmQgaW5kZXRlcm1p bmF0ZSBsZW5ndGgsIGJlY2F1c2UNCj4gaXQgaXMgYWN0aXZlbHkgcmVjb3JkaW5nIGFuZCBoYXMg bm8gY2hlY2twb2ludCB0byBpdHMgcmlnaHQuIEl0IG1heSBiZQ0KPiBmaXhlZCBhdCBhbnkgdGlt ZSBieSBkaXNhYmxpbmcgYml0bWFwICd6Jy4NCj4gDQo+IEluIFFFTVUsIGdlbmVyYWxseSB3aGF0 IHdlIHdhbnQgdG8gZG8gaXMgdG8gZG8gc2V2ZXJhbCB0aGluZ3MgYXQgb25lDQo+IGF0b21pYyBt b21lbnQgdG8ga2VlcCB0aGVzZSByZWdpb25zIGFkamFjZW50LCBjb250aWd1b3VzLCBhbmQgZGlz am9pbnQuDQo+IFNvIGZyb20gYSBoaWdoLWxldmVsICh1c2luZyBhIGZpY3Rpb25hbCBzaW1wbGlm aWVkIHN5bnRheCksIHdlIGRvOg0KPiANCj4gVHJhbnNhY3Rpb24oDQo+ICAgICAgY3JlYXRlKCd5 JyksDQo+ICAgICAgZGlzYWJsZSgneCcpLA0KPiAgICAgIGJhY2t1cCgneCcpDQo+ICkNCj4gDQo+ IHdoaWNoIHRvZ2V0aGVyIHBlcmZvcm1zIGEgYmFja3VwK2NoZWNrcG9pbnQuDQo+IA0KPiBXZSBj YW4gZG8gYSBiYWNrdXAgd2l0aG91dCBhIGNoZWNrcG9pbnQ6DQo+IA0KPiA0LjE6DQo+IFRyYW5z YWN0aW9uKA0KPiAgICAgIGNyZWF0ZSgndG1wJykNCj4gICAgICBtZXJnZSgndG1wJywgJ3gnKQ0K PiAgICAgIGJhY2t1cCgndG1wJykNCj4gKQ0KPiANCj4gNC4yOg0KPj4gYmFja3VwKCd4JywgYml0 bWFwX3N5bmM9bmV2ZXIpDQo+IA0KPiBPciBhIGNoZWNrcG9pbnQgd2l0aG91dCBhIGJhY2t1cDoN Cj4gDQo+IFRyYW5zYWN0aW9uKA0KPiAgICAgIGNyZWF0ZSgneScpLA0KPiAgICAgIGRpc2FibGUo J3gnKQ0KPiApDQo+IA0KPiANCj4gU0NFTkFSSU8gMikNCj4gDQo+IE5vdywgd2hhdCBoYXBwZW5z IHdoZW4gd2UgbWFrZSBhbiBleHRlcm5hbCBzbmFwc2hvdCBhbmQgZG8gbm90aGluZyBhdA0KPiBh bGwgdG8gb3VyIGJpdG1hcHM/DQo+IA0KPiBUaW1lIFQgPSAwLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4ubg0KPiArcmVjOiAgICBbLS1YLS0tLS0tWS0tLS0tLVotLS0tLS0t LV0gPC0tIFstLS0tLS0tXQ0KPiAtcmVjOiAgICBbLS0tLS0tLS0teC0tLS0tLXktLS0tLS0tLV0g PC0tIFstLS0tLS0tXQ0KPiByZWdpb246ICBbYWFiYmJiYmJiY2NjY2NjY2RkZGRkZGRkZF0gPC0t IFtlZWVlZWVlXQ0KPiAgICAgICAgICAgeyAgICAgICAgICBiYXNlICAgICAgICAgICB9IDwtLSB7 ICB0b3AgIH0NCj4gDQo+IFdlJ3ZlIGNyZWF0ZWQgYSBuZXcgaW1wbGljaXQgdGltZXNsaWNlLCAi ZSIgd2l0aG91dCBjcmVhdGluZyBhIG5ldw0KPiBiaXRtYXAuIEJlY2F1c2UgdGhlIGJpdG1hcCAn eicgd2FzIHN0aWxsIGFjdGl2ZSBhdCB0aGUgdGltZSBvZiB0aGUNCj4gc25hcHNob3QsIGl0IG5v dyBoYXMgYSB0ZW1wb3JhcmlseS1kZXRlcm1pbmF0ZSBlbmRwb2ludCB0byBpdHMgcmVnaW9uLg0K PiANCj4gVGhpcyBpcyBraW5kIG9mIGxpa2UgYW4gImltcGxpZWQgY2hlY2twb2ludCIsIGJ1dCBp dCdzIGEgdmVyeSBwb29yIG9uZQ0KPiBiZWNhdXNlIGl0J3Mgbm90IHJlYWxseSBhZGRyZXNzYWJs ZS4NCj4gDQo+IERBTkdFUiBDQVZFQVQgIzQ6IFdlIGhhdmUgbm8gd2F5IHRvIGNyZWF0ZSBpbmNy ZW1lbnRhbCBiYWNrdXBzIGFueW1vcmUsDQo+IGJlY2F1c2UgdGhlIGN1cnJlbnQgbW9tZW50IGlu IHRpbWUgaGFzIG5vIGFkZHJlc3NhYmxlIHBvaW50Lg0KPiANCj4gVGhhdCdzIG5vdCBncmVhdDsg YnV0IGl0IGlzIGxpa2VseSBhIGZpeGFibGUgc2NlbmFyaW8gd2hlbiBjb21taXQgaXMNCg0KYm90 aCBjb21taXQgYW5kIHNuYXBzaG90IGFyZSB0byBiZSBmaXhlZCwgb3IgbW9yZSBwcmVjaXNlbHkg cmVvcGVuaW5nIGJpdG1hcHMNCnJvLT5ydyBhbmQgcnctPnJvIGFyZSBhbGwgYnJva2VuLg0KDQo+ IGZpeGVkOiBjb21taXR0aW5nIHRoZSB0b3AgbGF5ZXIgYmFjayBkb3duIGludG8gdGhlIGJhc2Ug bGF5ZXIgd2lsbCBhZGQNCj4gYWxsIG5ldyB3cml0ZXMgdG8gdGhlIGVuZCBvZiB0aGUgb2xkIHJl Z2lvbjsgcmVzdG9yaW5nIG91ciBiYWNrdXAgY2hhaW46DQo+IA0KPiBUaW1lIFQgPSAwLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLkMuLi4uLi4ubg0KPiArcmVjOiAgICBbLS1YLS0tLS0tWS0tLS0t LVotLS0tLS0tLSAtLS0tLS0tXQ0KPiAtcmVjOiAgICBbLS0tLS0tLS0teC0tLS0tLXktLS0tLS0t LSAtLS0tLS0tXQ0KPiByZWdpb246ICBbYWFiYmJiYmJiY2NjY2NjY2RkZGRkZGRkZCBkZGRkZGRk XQ0KPiANCj4gSGVyZSwgcmVnaW9uICdlJyBqdXN0IGdldHMgYXBwZW5kZWQgdG8gcmVnaW9uIGQs IGFuZCB3ZSBjYW4gbWFrZQ0KPiBpbmNyZW1lbnRhbCBiYWNrdXBzIGZyb20gYW55IGNoZWNrcG9p bnQgWCwgWSwgWiB0byB0aGUgY3VycmVudCBtb21lbnQgYWdhaW4uDQo+IA0KPiANCj4gU0NFTkFS SU8gMykNCj4gDQo+IFdoYXQgaGFwcGVucyBpZiB3ZSBtYWtlIGEgZmlybSBjaGVja3BvaW50IGF0 IHRoZSBzYW1lIHRpbWUgd2UgbWFrZSB0aGUNCj4gc25hcHNob3Q/DQo+IA0KPiBUcmFuc2FjdGlv bigNCj4gICAgICBkaXNhYmxlKCd6JyksDQo+ICAgICAgc25hcHNob3QoJ3RvcCcpLA0KPiAgICAg IGNyZWF0ZSgndycpDQo+ICkNCj4gDQo+IFRpbWUgVCA9IDAuLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uICAgICAgICAgLi4uLi4ubg0KPiArcmVjOiAgICBbLS1YLS0tLS0tWS0tLS0tLVotLS0tLS0t LSBdIDwtLSBbVy0tLS0tLV0NCj4gLXJlYzogICAgWy0tLS0tLS0tLXgtLS0tLS15LS0tLS0tLS16 XSA8LS0gWy0tLS0tLS1dDQo+IHJlZ2lvbjogIFthYWJiYmJiYmJjY2NjY2NjZGRkZGRkZGRkIF0g PC0tIFtlZWVlZWVlXQ0KPiAgICAgICAgICAgeyAgICAgICAgICBiYXNlICAgICAgICAgICAgfSA8 LS0geyAgdG9wICB9DQo+IA0KPiBOb3cgaW5zdGVhZCBvZiB0aGUgbmV3IHJlZ2lvbiAnZScgYmVp bmcgaW1wbGllZCwgaXQncyBleHBsaWNpdC4gV2UgY2FuDQo+IG1ha2UgYmFja3VwcyBiZXR3ZWVu IGFueSBwb2ludCBhbmQgdGhlIGN1cnJlbnQgbW9tZW50ICphY3Jvc3MqIHRoZSBnYXAuDQo+IA0K PiBJdCB3YXMgbXkgdGhvdWdodCB0aGF0IHRoaXMgd2FzIHRoZSBtb3N0IHByZWZlcmFibGUgbWV0 aG9kIHRoYXQgbGlidmlydA0KPiBzaG91bGQgdXNlLCBidXQgdGhlcmUgaXMgc29tZSBkb3VidCBm cm9tIFBldGVyIEtyZW1wYS4gV2UnbGwgc2VlIGhvdyBpdA0KPiBzaGFrZXMgb3V0Lg0KPiANCj4g DQo+IA0KPiBUaGVyZSBhcmUgcXVlc3Rpb25zIGFib3V0IHdoYXQgUUVNVSBzaG91bGQgZG8gYnkg ZGVmYXVsdCwgd2l0aG91dA0KPiBsaWJ2aXJ0J3MgaGVscC4gQXQgdGhlIG1vbWVudCwgaXQncyAi bm90aGluZyIgYnV0IHRoZXJlIGhhdmUgYmVlbg0KPiBxdWVzdGlvbnMgYWJvdXQgInNvbWV0aGlu ZyIuDQo+IA0KPiBLZWVwaW5nIGluIG1pbmQgdGhhdCB3ZSBsaWtlbHkgY2FuJ3QgY2hhbmdlIG91 ciBleGlzdGluZyBiZWhhdmlvcg0KPiB3aXRob3V0IHNvbWUga2luZCBvZiBmbGFnLCB0aGVyZSBh cmUgc3RpbGwgc29tZSBBUEkvdXNhYmlsaXR5IHF1ZXN0aW9uczoNCj4gDQo+IA0KPj4gSWYgd2Ug Y3JlYXRlIGFuIGV4dGVybmFsIHNuYXBzaG90IG9uIHRvcCBvZiBhbiBpbWFnZSB3aXRoIGFjdGl2 ZWx5DQo+PiByZWNvcmRpbmcgYml0bWFwcywgc2hvdWxkIHdlIGRpc2FibGUgdGhlbT8NCj4gDQo+ IFdlIGNhbiBsZWF2ZSB0aGVtIGVuYWJsZWQsIGJ1dCB0aGV5J2xsIG5ldmVyIHNlZSBhbnkgd3Jp dGVzLiBPciB3ZSBjYW4NCj4gZXhwbGljaXRseSBkaXNhYmxlIHRoZW0uIEV4cGxpY2l0bHkgZGlz YWJsaW5nIHRoZW0gbWF5IG1ha2UgbW9yZSBzZW5zZQ0KPiB0byBwcmV2ZW50IG1vZGlmeWluZyBi aXRtYXBzIGFjY2lkZW50YWxseSBvbiBjb21taXQuDQo+IA0KPiBNeSBndWVzczogTm8uIHdlIHNo b3VsZCBsZWF2ZSB0aGVtIGFsb25lOyBhbGxvdyBjaGVja3BvaW50IGNyZWF0aW9uDQo+IG1lY2hh bmlzbXMgdG8gZG8gdGhlIGRpc2FibGUrY3JlYXRlIGRhbmNlIGZvciBiaXRtYXBzIGFzIG5lZWRl ZC4NCg0KQWdyZWVkOiBOby4gV2UndmUgZXhwb3NlZCBBUElzIGZvciB0aGUgdXNlciB0byBlbmFi bGUvZGlzYWJsZS9tb3ZlIGJpdG1hcHMgaW4NCmFueSB3YXksIHNvIGRlZmF1bHQgdG8gZG8gbm90 aGluZyBpcyB0aGUgc2FmZXN0IHdheS4NCg0KQW5kIG1ha2luZyBiaXRtYXAgZGlzYWJsZWQgYXV0 b21hdGljYWxseSBpcyBhIGdyZWF0IGRhbmdlciBvZiBsb3NpbmcgZGlydHkNCmJpdHMgYW5kIGZp bmFsbHkgcHJvZHVjZSBpbmNvbnNpc3RlbnQgYmFja3VwLg0KDQo+IA0KPiBQb3RlbnRpYWwgcHJv YmxlbXM6IFRoZSBiYWNraW5nIGltYWdlIGlzIHJlYWQtb25seSwgYW5kIGlmIHdlIGNoYW5nZSBv dXINCj4gbWluZCBsYXRlciwgd2Ugd2lsbCBuZWVkIHRvIGZpbmQgYSB3YXkgdG8gcmUtb3BlbiB0 aGUgYmFja2luZyBpbWFnZSBhcw0KPiByZWFkLXdyaXRlIGZvciB0aGUgcHVycG9zZXMgb2YgdG9n Z2xpbmcgdGhlIHJlY29yZGluZyBiaXQgcHJpb3IgdG8gYW55DQo+IGxlZ2l0aW1hdGUgZ3Vlc3Qg dXNhZ2Ugb2YgdGhhdCBub2RlLiBUaGVuLCByZS1vcGVuIGFzIFJPIGFnYWluLg0KPiANCj4gDQo+ IA0KPj4gU2hvdWxkIHdlIGZvcmsgYml0bWFwcyAob24gc25hcHNob3QpPw0KPiANCj4gSWYgYSBi aXRtYXAgbmFtZWQgJ3onIGlzIHJlY29yZGluZyB3aGVuIHdlIGNyZWF0ZSBhbiBleHRlcm5hbCBz bmFwc2hvdCwNCj4gc2hvdWxkIHRoYXQgYml0bWFwIGJlICpjb3BpZWQqIGludG8gdGhlIHRvcCBs YXllcj8NCj4gDQo+IE15IGd1ZXNzOiBOby4NCg0KQWdyZWVkLiBOb3RoaW5nIGF1dG9tYXRpY2Fs bHkuIElmIHVzZXIgd2FudHMgbGV0IGhpbSBjb3B5IGJ5IGhhbmRzLiBDb25zaWRlcg0KY2FzZSB3 aGVuIHVzZXIgdXNlcyBVVUlEcyB0byBuYW1lIGJpdG1hcHMgYW5kIGlzIG5vdCBwcmVwYXJlZCB0 byBhcHBlYXJpbmcNCm9mIHR3byBiaXRtYXBzIHdpdGggdGhlIHNhbWUgbmFtZSBpbiB0aGUgc3lz dGVtLg0KDQo+IA0KPiBUaGlzIHdvdWxkIGFsbG93IHVzIHRvIGNyZWF0ZSBleHRlcm5hbCBzbmFw c2hvdHMgKndpdGhvdXQqIGNyZWF0aW5nIGENCj4gY2hlY2twb2ludCwgYnV0IGNvbmNlcHR1YWxs eSB0aGF0J3MgYSBuaWdodG1hcmU6IEl0IHdvdWxkIGFsbG93IGZvcg0KPiBtdXR1YWxseSBpbmRl cGVuZGVudCBjcmVhdGlvbiBvZiBzbmFwc2hvdHMgT1IgY2hlY2twb2ludHMuIFRoaXMgd291bGQg YmUNCj4gaGFyZCB0byBjb3JyYWwgd2hlbiB1bmRvaW5nIGEgc25hcHNob3QsIGZvciBpbnN0YW5j ZS4NCj4gDQo+IEluIG15IG9waW5pb24sIHNuYXBzaG90cyBNVVNUIGJlIGNoZWNrcG9pbnRzLCBh bmQgdGhlcmVmb3JlIGFsbG93aW5nIGENCj4gc25hcHNob3Qgd2l0aG91dCBjcmVhdGluZyBhIGNo ZWNrcG9pbnQgaXMgYSBuby1nby4NCj4gDQo+IA0KPj4gKFNob3VsZCB3ZSBmb3JrIGJpdG1hcHMp IGlmIHdlJ3JlIG5vdCB1c2luZyBjaGVja3BvaW50cz8NCj4gDQo+IElmIHdlIGFyZSB1c2luZyBh IGNoZWNrcG9pbnQtbGVzcyBwYXJhZGlnbSAoaS5lLiB0aGUgcm9sbGluZyBpbmNyZW1lbnRhbA0K PiBiYWNrdXAgdXNpbmcgb25seSBvbmUgYml0bWFwKSB3ZSBtaWdodCB3YW50IHRvIGNvcHkgdGhl IGJpdG1hcCB1cCB0bw0KPiBtYWtlIHRoZSBuZXh0IGluY3JlbWVudGFsIGJhY2t1cCBhcyBpZiBu b3RoaW5nIGV2ZXIgaGFwcGVuZWQuDQo+IA0KPiBIb3dldmVyLCByb2xsaW5nIGluY3JlbWVudGFs IGJhY2t1cHMgZG9lc24ndCBuZWVkIGFueSBraW5kIG9mIGF1dG8tY29weQ0KPiBmZWF0dXJlLiBU aGlzIGlzIHBvc3NpYmxlIHRvZGF5Og0KPiANCj4+IGNyZWF0ZSgnYmFzZScsICdBJykNCj4+IHRy YW5zYWN0KHNuYXBzaG90KCd0b3AnKSwgY3JlYXRlKCd0b3AnLCAnQicpKQ0KPj4gbWVyZ2UoJ0In LCBbKCdiYXNlJywgJ0EnKSwgKCd0b3AnLCAnQicpXSkNCg0KRXhhY3RseS4gQXMgSSBub3RlZCwg d2UgYXJlIGFscmVhZHkgb24gdGhlIHdheSBvZiBleHBvc2luZyBBUElzIGluc3RlYWQgb2YNCmF1 dG9tYXRpYyBsb2dpYy4NCg0KPiANCj4gaS5lLiwgd2UgY3JlYXRlIGEgbmV3IGJpdG1hcCBvbiB0 aGUgdG9wIGxheWVyLCB0aGVuIG1lcmdlIGluIHRoZSBvbGQNCj4gZGF0YSBmcm9tIHRoZSBiYWNr aW5nIGZpbGUsIHdoaWNoIHJlbWFpbnMgYWRkcmVzc2FibGUuDQo+IA0KPiBXaGV0aGVyIHRoZSB1 c2VyIHdhbnRzIHRvIGNvcHkgdXAgb3Igbm90LCB0aGVyZSBhcmUgY29tbWFuZHMgdGhhdCB3aWxs DQo+IGRvIHRoYXQgYWxyZWFkeS4NCj4gDQo+IA0KPj4gU2hvdWxkIHdlIGNyZWF0ZSBuZXcgYml0 bWFwcyBieSBkZWZhdWx0IHdoZW4gd2UgY2FuPw0KPiANCj4gSWYgYSBiYWNraW5nIGltYWdlIGhh cyBiaXRtYXBzLCBzaG91bGQgUUVNVSBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBhIG5ldw0KPiBiaXRt YXAgZm9yIHRoZSB0b3AgbGF5ZXI/IFNob3VsZCBpdCBiZSBuYW1lZCBzb21ldGhpbmcgbmV3LCBz b21ldGhpbmcNCj4gdXNlci1wcm92aWRlZCwgb3IgYmFzZWQgb24gZXhpc3RpbmcgYWN0aXZlIGJp dG1hcHM/DQo+IA0KPiBJZiBhIHVzZXIgY3JlYXRlcyBhIG5ldyBleHRlcm5hbCBzbmFwc2hvdCB3 aXRoIG5vIGNvbnNpZGVyYXRpb24gcGFpZCB0bw0KPiBiaXRtYXBzIChsaWtlICJTQ0VOQVJJTyAy IiBhYm92ZSksIHRoZXkgdGVtcG9yYXJpbHkgbG9zZSB0aGUgYWJpbGl0eSB0bw0KPiBkbyBpbmNy ZW1lbnRhbCBiYWNrdXBzLiBUaGV5IG1pZ2h0IGJlIGFibGUgdG8gY29tbWl0IHRoZSBpbWFnZSBi YWNrIHRvDQo+ICJ0cnkgYWdhaW4uIg0KPiANCj4gVGhhdCdzIG5vdCBncmVhdC4gSGVyZSBhcmUg c29tZSBvcHRpb25zIGZvciByZXNvbHZpbmcgdGhpczoNCg0KQnV0IEkgZG9uJ3Qgc2VlIGFueSBw cm9ibGVtIHdpdGggaXQuIElmIHVzZXIgZm9yZ2V0IHRvIGNyZWF0ZSBiaXRtYXAsIGl0J3MNCm5v dCBvdXIgcHJvYmxlbSBhbmQgbm90IHRoZSByZWFzb24gdG8gY3JlYXRlIGJpdG1hcHMgYXV0b21h dGljYWxseS4NCkxpYnZpcnQgd2lsbCBub3QgZm9yZ2V0LiBNYW5hZ2luZyBsYXllciB3aWxsIG5v dCBmb3JlZ2V0LCBvciBpdCBoYXMgYnVnIHdoaWNoDQpzaG91bGQgYmUgZml4ZWQuIExpYnZpcnQg d2lsbCBub3QgYmUgYWJsZSB0byB1c2UgYW55IGJpdG1hcHMgd2l0aCBhdXRvbWF0aWMNCm5hbWVz LCBhcyBpdCBkb24ndCBrbm93ICJ3aGF0IGlzIGl0IiBhbnl3YXkuDQoNCj4gDQo+IC0gQXV0b21h dGljIG5hbWVzOiBNaWdodCBjYXVzZSBjb2xsaXNpb25zIG91dC1vZi1iYW5kIHdpdGggbWFuYWdl bWVudA0KPiB0b29saW5nIGJ5IGFjY2lkZW50LCB0b29saW5nIGhhcyB0byBxdWVyeSB0byBkaXNj b3ZlciB3aGF0IGJpdG1hcHMgd2VyZQ0KPiBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQuDQoNCkFuZCAi d2hlbiIgdGhleSBhcmUgY3JlYXRlZC4uIEFuZCBjcmVhdGUgc2VwYXJhdGUgbmFtaW5nIG5hbWVz cGFjZSBieSByZXN0cmljdGluZw0KbmFtaW5nIG9yIGFkZGl0aW9uYWwgYml0bWFwIGZpZWxkLi4N Cg0KPiANCj4gLSBTYW1lIG5hbWVzOiBDYW4gY3JlYXRlIG5hbWVzcGFjZSBjb25mdXNpb24gd2hl biBjb21taXR0aW5nIHNuYXBzaG90cw0KPiBsYXRlcjsgYWx0aG91Z2ggZWFjaCBsYXllciBvZiBh IGJhY2tpbmcgY2hhaW4gY2FuIGhhdmUgYml0bWFwcyBuYW1lZCB0aGUNCj4gc2FtZSB0aGluZywg aXQgY2F1c2VzIGZ1dHVyZSBwcm9ibGVtcyB3aGVuIGNvbW1pdHRpbmcgdG9nZXRoZXIgdGhhdCBj YW4NCj4gYmUgaGFyZCB0byByZXNvbHZlLg0KDQpBbmQgdXNlciBtYXkgYmUgdW5wcmVwYXJlZCB0 byBhcHBlYXJpbmcgb2YgYml0bWFwcyB3aXRoIHRoZSBzYW1lIG5hbWUsIGlmIGJpdG1hcA0KbmFt ZXMgZGlyZWN0bHkgYm91bmQgdG8gY2hlY2twb2ludHMuDQoNCj4gDQo+IC0gVXNlci1wcm92aWRl ZCBuYW1lOiBUaGlzIGlzIHdvcmthYmxlLCBhbmQgcmVxdWlyZXMgYW4gYW1lbmRtZW50IHRvIHRo ZQ0KPiBzbmFwc2hvdCBjb21tYW5kIHRvIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGEgbmV3IGJpdG1h cCBvbiB0aGUgc25hcHNob3QuDQoNCldlIGhhdmUgdHJhbnNhY3Rpb25zIHRvIGNvbWJpbmUgY29t bWFuZHMsIHNvIEkgZG9uJ3QgdGhpbmsgdGhhdCBjb21iaW5pbmcgY29tbWFuZHMNCmludG8gb25l IGNvbW1hbmQgaXMgYSBnb29kIGlkZWEuDQoNCj4gDQo+IA0KPiBNeSBndWVzczogTm8sIHdlIGNh bid0IGF1dG9tYXRpY2FsbHkgY3JlYXRlIGEgbmV3IGJpdG1hcCBmb3IgdGhlIHVzZXIuDQo+IFdl IGNhbiBhbWVuZCB0aGUgc25hcHNob3QgY29tbWFuZHMgdG8gYWNjZXB0IGJpdG1hcCBuYW1lcywg YnV0IGF0IHRoYXQNCj4gcG9pbnQgd2UndmUganVzdCBkdXBsaWNhdGVkIHRyYW5zYWN0aW9uczoN Cj4gDQo+IFRyYW5zYWN0KA0KPiAgICAgIHNuYXBzaG90KCd0b3AnKSwNCj4gICAgICBjcmVhdGUo J3RvcCcsICduZXctYml0bWFwJykNCj4gKQ0KPiANCj4gDQo+IEFsbCB0aGF0IHNhaWQgKE1vc3Rs eSBhIGxvdCAiTm8sIGxldCdzIG5vdCBkbyBhbnl0aGluZyIpLCBtYXliZSB0aGVyZSdzDQo+IHJv b20gZm9yIGFuICJhc3Npc3RpdmUiIG1vZGUgZm9yIHVzZXJzLCBhIGJpdG1hcC1hd2FyZSBzbmFw c2hvdCBjcmVhdGlvbg0KPiBjb21tYW5kLiBJdCBjb3VsZCBkbyB0aGUgZm9sbG93aW5nIHdlbGwt ZGVmaW5lZCBtYWdpYzoNCj4gDQo+IGJpdG1hcC1zbmFwc2hvdChiYXNlLCB0b3AsIGJpdG1hcF9u YW1lKToNCj4gICAgICAxLiBkaXNhYmxlIGFueSBhY3RpdmUgYml0bWFwcyBpbiB0aGUgYmFzZSBu b2RlLg0KPiAgICAgIDIuIGNyZWF0ZSBhIGJpdG1hcCBuYW1lZCAiYml0bWFwX25hbWUiIGluIHRo ZSB0b3Agbm9kZSwgZmFpbGluZyBpZg0KPiAgICAgICAgIGEgYml0bWFwIGJ5IHRoYXQgbmFtZSBh bHJlYWR5IGV4aXN0cyBvbiBlaXRoZXIgbm9kZS4NCg0KV2UgZG9uJ3QgaGF2ZSBiaXRtYXAtY3Jl YXRpb24gb3B0aW9uIGV2ZW4gZm9yIGJhY2t1cCBjb21tYW5kIHdoaWNoIGlzIHRoZQ0KbWFpbiB1 c2VyIG9mIGJpdG1hcHMuLiBJIGRvbid0IHRoaW5rIHdlIG5lZWQgdG8gaW1wbGVtZW50IG5ldyBj b21tYW5kcyBvbmx5DQp0byBtb3ZlIGluIGxpYnZpcnQgY29kZSBmcm9tIHRyYW5zYWN0aW9uIHRv IG9uZSBjb21tYW5kIChhbmQgbGlidmlydCB3aWxsIGhhdmUNCmZpcnN0bHkgdG8gY2hlY2sgZXhp c3RlbmNlIG9mIG5ld2VyIGNvbW1hbmQgYW5kIGlmIGl0IGV4aXN0IHVzZSBpdCBpbnN0ZWFkIG9m DQp0cmFuc2FjdGlvbj8gSXQncyBub3QgYSBzaW1wbGlmaWNhdGlvbikNCg0KPiANCj4gV2hhdCB0 aGlzIGFjY29tcGxpc2hlczoNCj4gLSBEaXNhYmxlcyBhbnkgYml0bWFwcyBpbiB0aGUgYmFzZSBs YXllciBhaGVhZCBvZiB0aW1lLCBpbiBwcmVwYXJhdGlvbg0KPiBmb3IgYW4gZXZlbnR1YWwgY29t bWl0IG9wZXJhdGlvbi4NCg0KSSByZWFsbHkgZG91YnQgdGhhdCB3ZSBzaG91bGQgZGlzYWJsZSBi aXRtYXBzIGluIHRoZSBiYXNlIGxheWVyIG9uIHNuYXBzaG90Li4NCldoeT8gT24gY29tbWl0IHRo ZXkgbXVzdCBiZSBlbmFibGVkLiBPbiBzZXBhcmF0ZSBvcGVuaW5nIG9mIHRoaXMgaW1hZ2UgbGF0 ZXINCnRoZXkgbXVzdCBiZSBlbmFibGVkLiBUaGUgb25seSByZWFzb24gdG8gc3RvcmUgZGlzYWJs ZWQgYml0bWFwIEEgaW4gdGhlIGltYWdlDQppcyB3aGVuIHdlIGhhdmUgdGhlIGJpdG1hcCBCIHdo aWNoIHN0YXJ0cyBpdHMgaGlzdG9yeSBmcm9tIHRoZSBwb2ludCB3aGVuIEENCndhcyBkaXNhYmxl ZCBhbmQgQiBpcyBpbiB0aGUgX3NhbWVfIGltYWdlLg0KDQpBbmQgYXV0b21hdGljIGRpc2FibGlu ZyBvZiBiaXRtYXBzIGlzIGFsd2F5cyBkYW5nZXJvdXMuIFdlJ2xsIG5ldmVyIHByZWRpY3QgYWxs DQpwb3NzaWJsZSBlZmZlY3RzLg0KDQo+IC0gQWx3YXlzIGNyZWF0ZXMgYSBuZXcsIGVuYWJsZWQg Yml0bWFwIG9uIHRoZSBzbmFwc2hvdCBtb2RlIHdoaWNoIGlzDQo+IGd1YXJhbnRlZWQgbm90IHRv IGNvbmZsaWN0IHdpdGggYSBuYW1lIG9uIHRoZSBiYXNlIG5vZGUuIFRoaXMgYml0bWFwIGNhbg0K PiBiZSB1c2VkIHRvIGNyZWF0ZSBhZGRpdGlvbmFsIGNvcGllcyBwb3N0LWhvYywgaWYgZGVzaXJl ZC4NCj4gLSBGb3JtYWxpemVzIG91ciAiYmVzdCBwcmFjdGljZSIgc3VnZ2VzdGlvbiBmb3IgbWl4 aW5nIGJpdG1hcHMgYW5kDQo+IHNuYXBzaG90cyBpbnRvIGEgc2luZ2xlLCBkb2N1bWVudGVkIGNv bW1hbmQuDQo+IA0KPiBJcyB0aGlzIHN0cmljdGx5IG5lZWRlZD8gTm8sIGlmIHlvdSBoYXZlIHRo ZSBmb3Jlc2lnaHQsIHlvdSBjYW4gZG8gdGhpcw0KPiBpbnN0ZWFkOg0KPiANCj4gVHJhbnNhY3Qo DQo+ICAgICAgZGlzYWJsZSgnYScpLA0KPiAgICAgIGRpc2FibGUoJ2InKSwNCj4gICAgICBkaXNh YmxlKCdjJyksDQo+ICAgICAgIyBwbHVzIGhvd2V2ZXIgbWFueSBtb3JlIC4uLg0KDQpXaHkgZG8g eW91IHRoaW5rIHdlIHNob3VsZCBkaXNhYmxlIGJpdG1hcHMgaW4gdGhlIGJhc2U/IEFtIEkgbWlz c2luZyBzb21ldGhpbmc/DQoNCj4gICAgICBzbmFwc2hvdCgndG9wJywgLi4uKSwNCj4gICAgICBj cmVhdGUoJ3RvcCcsICdkJykNCj4gKQ0KPiANCj4gYnV0IGEgY29udmVuaWVuY2UgY29tbWFuZCBt aWdodCBzdGlsbCBoYXZlIGEgcm9sZSB0byBwbGF5IGluIGhlbHBpbmcNCj4gdGFrZSB0aGUgZ3Vl c3N3b3JrIG91dCBmb3Igbm9uLWxpYnZpcnQgdXNlcnMuDQoNCkhtbSwgbXkgcHJvYmxlbSBpcyB0 aGF0IEkgZG9uJ3Qga25vdywgZG8gd2UgcmVhbGx5IGhhdmUgc3VjaCB1c2Vycz8gT2YgY291cnNl DQpzb21lIHZlbmRvcnMgaGF2ZSB0byB3b3JrYXJvdW5kIGxpYnZpcnQgc29tZXRpbWVzIGFuZCBj YWxsIFFNUCBkaXJlY3RseSAoZm9yDQpleGFtcGxlLCBWaXJ0dW96em8pLCBidXQgaXQncyBub3Qg YSBwcm9ibGVtIHRvIHVzZSB0cmFuc2FjdGlvbiBmb3IgdXMuLiBCdXQNCmRvIHdlIGhhdmUgcmVh bCB1c2VycyB3aGljaCBhcmUgbm90IHByb2dyYW1tZXJzIGFuZCBub3QgdGVzdGVycyBidXQgcmVh bCB1c2Vycw0Kb2YgUWVtdSBhbmQgUU1QPyBPSywgbXkgdmlldyBpcyBhIGJpdCBvbmUtc2lkZWQs IGFzIEkgbW9zdGx5IHRoaW5rIGFib3V0DQpWaXJ0dW96em8gdXNlY2FzZXMgYW5kIHdlIGRvbid0 IGhhdmUgc3VjaCB1c2Vycy4NCg0KPiANCj4gDQo+IA0KPiBUaGF0J3MgdGhlIGJ1bGsgb2Ygd2hh dCB3YXMgZGlzY3Vzc2VkLg0KPiANCj4gU3VtbWFyeToNCj4gDQo+IA0KPiBHT1RDSEFzOg0KPiAj MTogQml0bWFwcyBhcmUgY3JlYXRlZCBub24tcGVyc2lzdGVudCBieSBkZWZhdWx0LCBhbmQgY2Fu J3QgYmUgY2hhbmdlZC4NCg0KSU1ITywgbm90IGEgcHJvYmxlbQ0KDQo+IA0KPiAjMjogUHVzaCBi YWNrdXAgZGVzdGluYXRpb24gZm9ybWF0cyB3aWxsIGhhcHBpbHkgYmFjayB1cCB0byBhIGZvcm1h dA0KPiB0aGF0IGlzbid0IHNlbWFudGljYWxseSB1c2VmdWwuDQoNClRoYXQgaXMgaW50ZXJlc3Rp bmcgb25lLi4gV2UgaGF2ZSBzb21lIGNoZWNrcyBhbmQgd2FybmluZyBhcm91bmQgY2x1c3Rlcg0K c2l6ZXMgb2YgdGFyZ2V0IGFuZCBzb3VyY2UsIGJ1dCBhbGwgaXQgaXMgbm90IHZlcnkgcmVsaWFi bGUuLg0KDQo+IA0KPiAjMzogTWlncmF0aW5nIG5vbi1zaGFyZWQgYmxvY2sgc3RvcmFnZSBjYW4g ZHJvcCBldmVuIHBlcnNpc3RlbnQgYml0bWFwcw0KPiBpZiB5b3UgZG9uJ3QgcGFzcyB0aGUgYml0 bWFwIG1pZ3JhdGlvbiBjYXBhYmlsaXR5IGZsYWcgdG8gYm90aCBRRU1VDQo+IGluc3RhbmNlcy4N Cg0KTG9zaW5nIGEgYml0bWFwIHdhcyBuZXZlciBjb25zaWRlcmVkIGFzIGEgcmVhbCBwcm9ibGVt IGFzIGl0IGp1c3QgbWVhbnMNCiJkbyBmdWxsIGJhY2t1cCIuLiBBbHNvLCBhY3R1YWxseSB0aGV5 IG1heSBiZSBkcm9wcGVkIGV2ZW4gaWYgd2UgZW5hYmxlZA0KdGhlIGNhcGFiaWxpdHk6IGJpdG1h cHMgYXJlIG1pZ3JhdGVkIHRocm91Z2ggInBvc3Rjb3B5IiBtZWNoYW5pc20sIHNvIGFueQ0KZXJy b3IgbGVhZHMgdG8gdW5yZWNvdmVyYWJsZSBsb3NzIG9mIGJpdG1hcHMuDQoNCj4gDQo+ICM0OiBD cmVhdGluZyBhIHNuYXBzaG90IHdpdGhvdXQgZG9pbmcgc29tZSBiaXRtYXAgbWFuaXB1bGF0aW9u DQo+IGJlZm9yZWhhbmQgY2FuIHRlbXBvcmFyaWx5IHJlbmRlciB5b3VyIGJpdG1hcHMgdW51c2Fi bGUuIEZhaWxpbmcgdG8NCj4gZGlzYWJsZSBiaXRtYXBzIGJlZm9yZSBjcmVhdGluZyBhIHNuYXBz aG90IG1pZ2h0IG1ha2UgY29tbWl0cyB2ZXJ5DQo+IHRyaWNreSBsYXRlciBvbi4NCg0KQWhhLCB1 bmRlcnN0YW5kIG5vdyB3aHkgeW91IHdhbnQgdG8gZGlzYWJsZSBiaXRtYXBzIGluIGJhc2U6IHlv dSBkb24ndCB3YW50DQp0aGVtIHRvIGNhdGNoIGNvbW1pdCB3cml0ZXMsIGZvciB3aGljaCB3ZSBt b3N0IHByb2JhYmx5IGhhdmUgYml0bWFwIGluIHRvcA0Kd2hpY2ggd2UgYXJlIGdvaW5nIHRvIG1v dmUgdG8gdGhlIGJhc2UuLi4NCg0KQW55d2F5LCBJIHRoaW5rIGl0IGlzIG1vcmUgY29ycmVjdCB0 byBkaXNhYmxlIGJpdG1hcHMgaW4gb25lIHRyYW5zYWN0aW9uIHdpdGgNCmNvbW1pdCBjb21tYW5k LiBPaywgd2UgZG9uJ3QgaGF2ZSB0cmFuc2FjdGlvbiBmb3IgY29tbWl0LCBtYXkgYml0IHdlIHdh bnQgaXQuDQpBcyBhIHdvcmthcm91bmQgdXNlciBtYXkgZGlzYWJsZSBiaXRtYXBzIGFmdGVyIGNv bW1pdCBzdGFydC4gVGhleSB3aWxsIGJlY29tZQ0KYSBiaXQgbW9yZSBkaXJ0eSB0aGFuIHRoZXkg c2hvdWxkIGJ1dCBpdCdzIG5vdCBhIHByb2JsZW0uDQoNCj4gDQo+IEdvdGNoYXMgMSBhbmQgNCBj YW4gYmUgYXQgbGVhc3QgcGFydGlhbGx5IGFsbGV2aWF0ZWQuIGdvdGNoYSAyIHJlbWFpbnMgYQ0K PiBwYWluIHBvaW50IHdlIGNhbm5vdCBpbnRlcmNlcHQgYXQgdGhlIFFFTVUgbGF5ZXIuIGdvdGNo YSAzIGhhcyBwb3RlbnRpYWwNCj4gcmVtZWRpZXMsIGJ1dCB0aGV5IGFyZSBjb21wbGljYXRlZC4N Cj4gDQo+IA0KPiBRRU1VIHRvZG8gaXRlbXM6DQo+IC0gRml4IGJpdG1hcCBkYXRhIGNvcnJ1cHRp b24gb24gY29tbWl0IChPbmdvaW5nLCBieSBWbGFkaW1pckBWaXJ0dW96em8pDQoNCjspDQoNCj4g DQo+IC0gYWRkIGEgc2V0X3BlcnNpc3RlbmNlIG1ldGhvZCBmb3IgYml0bWFwcyB0aGF0IGFsbG93 cyB1cyB0byBjaGFuZ2UgdGhlDQo+IHN0b3JhZ2UgY2xhc3Mgb2YgYSBiaXRtYXAgYWZ0ZXIgY3Jl YXRpb24uIChIZWxwcyBhbGxldmlhdGUgZ290Y2hhICMxLikNCg0KU3RpbGwsIEkganVzdCBkb24n dCBrbm93IHVzZXJzIHdobyBuZWVkIGl0Lg0KDQo+IA0KPiAtIEFkZCBhIGNvbW1hbmQgdGhhdCBh bGxvd3MgdXMgdG8gbWVyZ2UgYWxsb2NhdGlvbiBkYXRhIGludG8gYSBiaXRtYXAuDQo+IFRoaXMg aGVscHMgYWxsZXZpYXRlIGdvdGNoYSAjNDogSWYgd2UgY3JlYXRlIGEgbmV3IGltYWdlIGJ1dCBu ZWdsZWN0ZWQNCj4gdG8gZG8gdGhlIHByb3BlciB0cmFuc2FjdGlvbiBkYW5jZSwgd2UgY2FuIHNp bXBseSBjb3B5IHRoZSBhbGxvY2F0aW9uDQo+IGRhdGEgaW50byBhIG5ldyBiaXRtYXAuIChOb3Rl LCB3ZSdkIHN0aWxsIG5lZWQgc2V0X3BlcnNpc3RlbmNlIHRvIGhlbHANCj4gdXMgZGlzYWJsZSB0 aGUgb2xkIGJpdG1hcCBiZWZvcmUgYW55IGNvbW1pdCBoYXBwZW5zLikNCg0KT29vcHMuIFlvdSBh cmUgZ29pbmcgdG8gdXNlIHNldF9wZXJzaXN0ZW5jZSB0byBkaXNhYmxlIHBlcnNpdGVuY2UgdG8g d29ya2Fyb3VuZA0KdGhlIGZhY3QgdGhhdCB5b3UgY2FuJ3QgZGlzYWJsZSBiaXRtYXAgd2l0aG91 dCBtYXJraW5nIGl0IElOX1VTRSBpbiB0aGUgaW1hZ2U/DQpUaGlzIGlzIHdyb25nLiBXZSBtdXN0 IG5vdCBtb2RpZnkgYml0bWFwIHdoaWNoIGlzIG5vdCBtYXJrZWQgSU5fVVNFIGluIHRoZSBpbWFn ZSwNCmFzIGl0IG1heSBsZWFkIHRvIGFueSBraW5kIG9mIGRhdGEgY29ycnVwdGlvbiAoaW4gY2Fz ZSBvZiBjcmFzaCwgd2UnbGwgZmluaXNoIHVwDQp3aXRoIGJpdG1hcCBub3QgbWFya2VkIElOX1VT RSBidXQgaW52YWxpZCwgYW5kIHdlJ2xsIGNvbnNpZGVyIGl0IHZhbGlkIG9uIG5leHQNCnZtIHN0 YXJ0KS4uIFNvLCBpdCdzIGEgcmVhc29uIHRvIG5ldmVyIGltcGxlbWVudCBzZXRfcGVyc2lzdGVu Y2UgKG9yIGF0IGxlYXN0DQpzZXRfcGVyc2lzdGVuY2UgbXVzdCBzZXQgSU5fVVNFIGZsYWcgaW4g dGhlIGltYWdlLCBhbmQgd2lsbCBub3QgaGVscCBpbiBjb25zaWRlcmVkDQpjYXNlKS4NCg0KQW5k IGFsc28sIEkgZG9uJ3Qga25vdyB1c2VycyB3aG8gbWF5IGZvcmdldCB0byBjcmVhdGUgYml0bWFw IGlmIHRoZXkgbmVlZC4uIEl0J3MNCm5vdCBhYm91dCBsaWJ2aXJ0IG9mIGNvdXJzZS4NCg0KPiAN Cj4gLSBBZGQgY29udmVuaWVuY2UgY29tbWFuZCBmb3IgZWFzeSArIHNhZmUgY29tYmluYXRpb24g b2YgYml0bWFwcyArDQo+IHNuYXBzaG90cy4gSGVscHMgcHJldmVudCAjNC4NCj4gDQo+IA0KPiBS ZXNlYXJjaCBpdGVtczoNCj4gLSBIb3cgaGFyZCBpcyBpdCB0byByZW9wZW4gYSBiYWNraW5nIGlt YWdlIGFzIFJXIHdoaWxlIGl0J3MgaW4tdXNlLA0KPiBkaXNhYmxlIGEgYml0bWFwLCBhbmQgdGhl biByZW9wZW4gYXMgUk8/IFRoaXMgaXMgdG8gcGFydGlhbGx5IGFkZHJlc3MNCj4gZ290Y2hhICM0 OyBpZiB3ZSBmb3JnZXQgdG8gZGlzYWJsZSBiaXRtYXBzIGJlZm9yZSBjcmVhdGluZyB0aGUgc25h cHNob3QuDQoNCkl0J3MgdW5zYWZlIHRvIGhhdmUgYW4gaW1hZ2Ugd2l0aCBkaXNhYmxlZCB0b3Bt b3N0IGJpdG1hcC4gU28gSSB0aGluayB0aGUgcmlnaHQgd2F5IGlzDQp0byBkaXNhYmxlIGl0IGlu IG9uZSB0cmFuc2FjdGlvbiB3aXRoIGNvbW1pdCwgb3IgYWZ0ZXIgY29tbWl0IHN0YXJ0LiBBbmQg bWF5IGJlIGV2ZW4NCmNyZWF0ZSBuZXcgZW5hYmxlZCB0b3AgYml0bWFwIGluIGJhc2UgdG8gcmVh bGx5IGNhdGNoIHdyaXRlcywgc28gaW4gY2FzZSBvZiBmYWlsdXJlIHdlDQpjYW4gZmluaXNoIHVw IHdpdGggdmFsaWQgYml0bWFwIGNoYWluLi4uIEJ1dCBJJ20gYWZyYWlkIEkgZG9uJ3QgaGF2ZSBh IGNvbXBsZXRlIHZpZXcNCm9mIGhvdyBpdCBzaG91bGQgd29yay4NCg0KPiANCj4gLSBIb3cgaGFy ZCBpcyB0aGUgcmV2ZXJzZSBvcGVyYXRpb24/IENhbiB3ZSByZW9wZW4gYSBiYWNraW5nIGltYWdl IFJXLA0KPiBlbmFibGUgYSBiaXRtYXAsIGFuZCB0aGVuIHJlb3BlbiBhcyBSTz8gVGhpcyBnaXZl cyB1cyBiZXR0ZXIgY29udHJvbA0KPiBvdmVyIHdoYXQgaGFwcGVucyBvbiBjb21taXQuDQo+IA0K PiAtIEFmdGVyIHdlIGZpeCB0aGUgY29tbWl0IGJ1Zywgd2hhdCBkb2VzL3Nob3VsZCBjb21taXQg YWN0dWFsbHkgZG8gd2l0aA0KPiBiaXRtYXBzPyBXaGF0IGFib3V0IGJpdG1hcHMgdGhhdCBjb2xs aWRlPyBUaGUgY3VycmVudCBiZWhhdmlvciBpcyB0aGF0DQo+IGFueSBiaXRtYXBzIGRvbid0IHRy YW5zZmVyIGZyb20gdG9wIHRvIGJhc2UuIEFueSBiaXRtYXBzIGFjdGl2ZSBpbiB0aGUNCj4gYmFz ZSByZWNvcmQgYWxsIHRoZSBuZXcgd3JpdGVzIGZyb20gdGhlIHRvcC4NCg0KSSB0aGluayBjdXJy ZW50IGJlaGF2aW9yIChhZnRlciBidWcgZml4KSBpcyBjb3JyZWN0IHRoaW5nIGZvciBRZW11IGFu ZCBhbGwNCmN1c3RvbWl6YXRpb25zIHNob3VsZCBiZSBkb25lIHdpdGggaGVscCBvZiBiaXRtYXBz IEFQSSBhbmQgdHJhbnNhY3Rpb25zLg0KDQo+IA0KPiANCj4gVGhhdCdzIGFsbCENCj4gLS1qcw0K PiANCg0KDQotLSANCkJlc3QgcmVnYXJkcywNClZsYWRpbWlyDQo=