Return-Path: Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 46E19187E for ; Sun, 27 Jan 2019 12:21:02 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.7.6 Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.51]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id BF0E81FB for ; Sun, 27 Jan 2019 12:20:59 +0000 (UTC) Received: by mail-ed1-f51.google.com with SMTP id h15so10827686edb.4 for ; Sun, 27 Jan 2019 04:20:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:references:from:openpgp:autocrypt:subject:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=5A3RnDeQCFwP5mnzTUHmie/hLKCfvBYapqnDKCnAu3c=; b=VahTzBLhDBVgTbUX7ZguwBRf2BLTFRWi6UjSaU4Sfg66MDtL6b+vA6ZNll1eHI4N8L AszwD2F7jgmAY9V4PGK9vSV5vBPPMK05w748ZhJBHDalM/BEc7gLIb/rx7WF87yk/f9f KCj/tuEjzVQkf/7Ej3wYRvstFpxPe57Bq36uFPy6WwDqa5vCgKhmAJs5xtbJx8p3yygB 7bl9ecF0mL0EvVxnYvhqEQH51AA3cIiK5sPCHFmZj+g7SQfzIvC9lmcjq8EYf9ulSD7q z57hAQ4y0VOTOwS/i20OLCfp1IaqPlXbE7ypC++F0fOAmkx9a9dNHtYlCLKJhSjv764V kG3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:references:from:openpgp:autocrypt:subject :message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=5A3RnDeQCFwP5mnzTUHmie/hLKCfvBYapqnDKCnAu3c=; b=eX7WiJk5Tsg1QRf/laQZ5AbkltIW4dwuY7OEe5T5T9c1TIPQhE7gxjjBdH0StoUN2w uIPqDbS/wMUXBhLleilKSsTZmFIhEpGq44/AqXxmBxcM3mgVkvdG2AAx0oQHHG31sbjW LHmQEWDNpd/ElMGcZl0feKwjXIaGMnjlQtFStdUL/3U/3BT5c7j6sPexnNOLUIgqaaqT VbIlBnp7sjYxCg4NiQpeBNMBHaguKJQLzxRQcVc+y1PfbTJXF3UH7pTBnSQSV13z/28V cDEEUu0Yty/n5cXukUUmDoTMcjmoE90Q8GEeG0ntfy0jn4cgCAXWcAZDtQa6LtNEP875 8AJQ== X-Gm-Message-State: AJcUukeYY3i4U84btL8M4gZO+DU9yWoozR9x5KUDOC/PS9elaefbVnvo Id0VdAMtMNGAxrYXaUekAcVgpP/V X-Google-Smtp-Source: ALg8bN7+zw2XbhBh5lDSgfvCYNTbKebxC0sgJprJjPdWW+ly4c6OF9XCBrn5OABRjEzudnyIaTHDAg== X-Received: by 2002:a17:906:35d9:: with SMTP id p25mr10383886ejb.98.1548591657204; Sun, 27 Jan 2019 04:20:57 -0800 (PST) Received: from [10.5.0.5] ([77.243.183.203]) by smtp.gmail.com with ESMTPSA id o4sm918027ejr.19.2019.01.27.04.20.55 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 27 Jan 2019 04:20:55 -0800 (PST) To: rhavar@protonmail.com, Bitcoin Protocol Discussion References: <-yZhdFkKfKAEz1_4GKKSpTxjvR8EDSsH_5-TTh_4X5qwa79igXKR14rh6JASrald-F97o1htWY_kcBQ7IVr7ZH9zOQlOEwzhkWDjTq0d7F4=@protonmail.com> From: Adam Gibson Openpgp: preference=signencrypt Autocrypt: addr=ekaggata@gmail.com; prefer-encrypt=mutual; keydata= mQINBFv0DQgBEADhaaCIS7omfkdE11EuLtyhjHTFGANwsrAkhf1eKYBMdHpC5jbPi2MgJWMk j5CMgvbKe+Y4vlUFzXW94uw8rMqH6Gd995+qs5EVqiA/8le80mTyuAG6JfpNqAo8ojHlPbr/ 9errq8kYNVfH5HhEJB2WEsFKFCB3L7IjukhroNzpSWCl2t8oCdLFtAorZiIBDIVXjMrJRCIP N4JhqV9O3PbXGiM2y+SIqwPemQF/qvwGfcSy+5OZ2TuDSPyGG7am8+a/kiq+s4prY/gJ2oxs i0iVtOMG48VRCHlg/LD5t82DYsHUpuZAXT7Ubz+ZI051vDPPutxR/op/7r2zkkWqrQUSoluL csUf+lb/3KSz8XkQwO9pLFC65qAqqBExKHAeh+uZnWDzn8E2JcpgDKYfW2eRZ4kL3PHozcZ6 1Ek9JbSBWTj2ghTkuwCi6eH+E8ybtiqWeB25LfLhqs2Qnk2IzC5NtqwyU+poYZD/ya0PPdoN QVXsUB6F8j0M62bU25qqkkeUhW8aGDPVN0V/X4nCoyeUrOgU7oW9wCuFyg+eYn1q62iwCFrA rjGvKSv3LzdzIqHeM8gaEs2sjUnvxwlcjJDVdiEW0nngcGU5+czH06hD0Nvu4nAgXeE5s4wv d9FhGW9pjNb8TM2aQqMZzYJJDLNdVIZQNVycAtOwLKcCq0btFQARAQABtDNBZGFtIEdpYnNv biAoQ09ERSBTSUdOSU5HIEtFWSkgPGVrYWdnYXRhQGdtYWlsLmNvbT6JAjcEEwECACECGwMC HgECF4AFAlv0Dk0FCwkIBwMFFQoJCAsFFgIDAQAACgkQFBABoa938guczQ//f38lBKjg7c+U t31x5ciX1LtxvLyfnmTIDQRq4pB2FWrl14utkK4afDRwcBR6zRlQx8PE52+M9Rg7+KYQ7hDY y9c3IQonL2KdZgj+q2x99t5uUR9fj8b18U/2VDkVn1m8L//U3m596zZLwVBPr4OQ2Rd/rC6Y GznMNXSN97nNr7SPGLXYH3rUEcmBf4VklneO6/M5y0PgNdTTM4DyKfrCk9ailWtev06G6gvT kyLzjpHHZ5IyZvhpHua/oUHjeRzuS4VYUYQuuiATD7raJhXsxfL7g/NF/fOi3KwvRlAm4ns1 fOxOInLD2QK5hiEjdlPixwmuLMtTdHk5dAM+QX8Hr2Tis/cN+5J7vpvZoP7L0M7XxYo9J6wV RMKOxNeFNa88W/n+pBDVCUdTqDOrVHP632zXt0sbaSKXa/KqznD+ReGOjaYsKKenEmyXgfv+ WoaUoqn9uZ8R2MywWyKojYguTP+RLHtzuiN3GPFPXQban27Ah+M5d6ruh/P/AXyuddtibq36 baD3iOXcGlmvfaAhYCVE59a3/AIAIZmkJr1DLJkfdF38BIqs+2/5jC05QyuGI94zmYy7Ivfj w8ncqUUpir2M6X25YD00AzNruXDFVz8mpU3RcHEyVAhBtQeZuB+d8pZMzROoXpY0K+VwM4VD 3jiOJKQzYb+/kcaj20j9slS5Ag0EW/QNCAEQALueFahxEGALaZcBdBTYk5W32wdjdoZEjMUc z7iWFyArDHeXjmxAis3+Q6TkFlAuJhGHL0NVpHjqDe0wg5B0V/c+Ew3WJTS6Or8UmKKg/OjU b9gbRMmy+Jxm2Y7D8Lx7ikct3jo0aXJHApVzvFzQOUZUCO67/5PS9LY6RMqoyV97xnlaypsx 9CUF9Fc0eK7U/rliUJ0cSKoKm8kI1QTUfgRXkm33tn1qX5piAO8iyzPLZlJC0sVkI6tG0NMX 8d8/ifNmCZolBaYT8Y/J7tQgbdshMi7NSzpuPdZfeSo5JHIaQcBQCrjVPQvtWyQbVhbUKOFx qLqIkaMEwOTVBNAMxuvwWLfr9sCiCpbPGTdu5ujyI4JsdxT+LkwgQSPPC0CZpxbNFeOdKcQM o0f5la7zwNvEgXu0r9DGUAqM7cHPUUP0RQQl72vk1B2rr33gONeG8EzTYwYfuX5jjjyrd0Py 9XAgg3b9RFxRIsTmzTzsAmyxRRBJmwBsEJ/8A8mLlEWhgDDn/gl23YfTBlV/J/PBN0vVFrSe IZtmWaDuxhiI07B/y1NKtttTkrU9R3K7GIinlIZ0/CR7LZRyP0F5NGLsDQwcrSNPLGoCeYLn 9cSYCtQjZjAXCBDbPFQqq8LV7INtGXHG8FUoclibHU13eK1SBiSY836lwt4PlZ/IiVsmvMBX ABEBAAGJAh8EGAECAAkFAlv0DQgCGwwACgkQFBABoa938gsiOhAAtOQG/+Hh5vlk1r+AdFCO kgLCFlNqGWk4pLlAhpxmE5NVJKfqjjb+0AA9u8WpEmJAudw0vUQNC/fBHQFT8czKy4u7QFSk IPo2NtcGXYFjxMwzya5G87EgSgw8rekNHlC87r0lbcN/YZY3R0apcMCrbagjL7H4CGrc1oDl YSRqiwekkItKLNpv3RocHI/SQDcGdJAtq/K5S3kKxwGPKLG+8Tdau4WkPWG+YnPj594mNGJv 5ZHUlma5r5hJHPSQregaDGJnq+ln3jDZ21rUEu1DROBP2UmS517WSiSZz+hQqgnRlXVql42f vsggFpL3zdOXq0UbqPee1FVOuUidXaA8dGBfujJ/4MjCfCt5zyhr1+l3tKVjDiQhUkFbMaNp fEUueW1gJuVgzofLmAhf3pTGiQQDpjKlijPLQxwAuQ4lM2KZObGSxDyw8Ffn8XX05DwU/s2h /MKuRgYyp20UiVUmdnZ/+KrH/KhFgh9dn7fueWh//4AaDAZ8NJruondaLkmZ+D53V4qsbJE3 cpd1sXg5JL7eWE/8rwDsNWaJtM2p3viUujprCL7IMnXzv0dLfZm3fPGPWTg96/pdlWmpg4Ky QjnH5SYgtHM+2GQnUD5nwsOGbXU27qQDMCpWU8aDvz2LPyD4qx9sS0gPpvOAYK5S3c0lWB5y nl9Ca4x7aeV2qGM= Message-ID: <2cd4fe6d-c0ca-5ae7-4107-38e1609743a8@gmail.com> Date: Sun, 27 Jan 2019 13:20:54 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 MIME-Version: 1.0 In-Reply-To: <-yZhdFkKfKAEz1_4GKKSpTxjvR8EDSsH_5-TTh_4X5qwa79igXKR14rh6JASrald-F97o1htWY_kcBQ7IVr7ZH9zOQlOEwzhkWDjTq0d7F4=@protonmail.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: base64 X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org X-Mailman-Approved-At: Sun, 27 Jan 2019 16:43:56 +0000 Subject: Re: [bitcoin-dev] bustapay BIP :: a practical sender/receiver coinjoin protocol X-BeenThere: bitcoin-dev@lists.linuxfoundation.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: Bitcoin Protocol Discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 Jan 2019 12:21:02 -0000 DQoNCk9uIDI3LiAwMS4gMTkgODozNiwgcmhhdmFyQHByb3Rvbm1haWwuY29tIHdyb3RlOg0K PiBUaGFua3MgQWRhbSwNCj4gDQo+IEkgaGF2ZSBmaXhlZCB0aGUgbWlzdGFrZXMgeW91IGhh dmUgcG9pbnRlZCBvdXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luL2JpcHMvcHVsbC83 NTQNCj4gDQo+IFRoYW5rcyBmb3IgdGhlIGRldGFpbGVkIGxvb2shDQo+IA0KPj4gYnV0IGl0 cyB2aXJ0dWUgb2Ygc3RlZ2Fub2dyYXBoaWMgaGlkaW5nIG1lYW5zIG9ubHkgbWluaW1hbCB1 cHRha2UNCj4+IGlzIHN0aWxsIGVub3Jtb3VzbHkgaW50ZXJlc3RpbmcgYW5kIHdvcnRoIHB1 cnN1aW5nOyB0aGF0J3MgbXkgY3VycmVudCBmZWVsaW5nLg0KPiANCj4gSSB2ZXJ5IG11Y2gg YWdyZWUgPSkgSSByZWFsbHkgdGhpbmsgYW55dGhpbmcgdGhhdCAoc2lsZW50bHkpIGJyZWFr cyB0aGUgYXNzdW1wdGlvbiBvZiBjb21tb24gb3duZXJzaGlwIG9mIHRyYW5zYWN0aW9uIGlu cHV0cyBvZmZlcnMgb3V0c2l6ZWQgYmVuZWZpdHMgZm9yIHRoZSB3aG9sZSBlY29zeXN0ZW0u DQo+IA0KPiBPbmUgb3RoZXIgaWRlYSBJIGhhdmUgIGlzICh3YXkpIGJldHRlciBzdXBwb3J0 IGZvciBtb3ZpbmcgdXR4bydzIGJldHdlZW4gd2FsbGV0cy4gVGhlIGxlYXN0IGNvbnRyb3Zl cnNpYWwgdXNlIGNhc2UgaXMgbW92aW5nIGZ1bmRzIGJldHdlZW4gd2FsbGV0cyB5b3Ugb3du LiBMaWtlIEkgbWlnaHQgd2FudCB0byBtb3ZlICpzcGVjaWZpYyogdXR4bydzIGZyb20vdG8g bXkgam9pbm1hcmtldCB3YWxsZXQsIGJ1dCBub3QgY3JlYXRlIGEgKHByaXZhY3kgbG9zaW5n IC8gZXhwZW5zaXZlKSB0cmFuc2FjdGlvbi4gQm90aCBjb3JlIGFuZCBqb2lubWFya2V0IGZh aWwgYXQgdGhpcyBhdCBhIHByYWN0aWNhbCBwb2ludCBvZiB2aWV3Lg0KDQoodGFuZ2VudGlh bCwgYnV0IHllcyBjb2luIGNvbnRyb2wgaW4gSk0gaXMgYW4gb2J2aW91c2x5IG5lY2Vzc2Fy eQ0KZmVhdHVyZSBhbmQgd2lsbCBiZSBkb25lLCBJIGp1c3QgZG9uJ3QgaGF2ZSB0aW1lKS4N Cg0KPiANCj4gTGlrZSBpbWhvIGl0J2QgYmUgcHJldHR5IGNvb2wgaGF2aW5nIGEgc3RhbmRh cmRpemVkIGZvcm1hdCBmb3IgKHR4aWQ6dm91dDpwcml2YXRla2V5KSB3aXRoIHdhbGxldHMg c2hvd2luZyBpdCBhcyAiRXh0ZXJuYWwgVVRYTyIgYW5kIHByZWZlcmVudGlhbGx5IHNwZW5k aW5nIGl0IChhbmQgd2FsbGV0IG5vdCBhdXRvbWF0aWNhbGx5IGltcG9ydGluZyBhbnkgb3Ro ZXIgdXR4byBmcm9tIHRoYXQgYWRkcmVzcykuDQo+IA0KPiBUYWtlbiBhIGJpdCBmdXJ0aGVy ICh0aGlzIGlzIHRoZSBwYXJ0IHdoaWNoIGV2ZXJ5b25lIGhhdGVzKSB5b3UgY291bGQgc2Vu ZCBzb21lb25lIG1vbmV5IChvciB3aXRoZHJhdyBpdCBmcm9tIGEgc2VydmljZSkgYnkgZ2l2 aW5nIGEgcGVyc29uLiBJdCdzIG5vdCBnZW5lcmFsbHkgdXNlZnVsIChmb3Igb2J2aW91cyBy ZWFzb25zKSwgYnV0IHRoZXJlJ3MgYSBsb3Qgb2YgY2FzZXMgSSB0aGluayBpdCdzIHN1cGVy IGNvb2wuDQoNCklzIHRoZXJlIGEgbWlzc2luZyB3b3JkLiAiYnkgZ2l2aW5nIGEgcGVyc29u Li4iPyBOb3QgYWN0dWFsbHkgc3VyZSB3aGF0DQp5b3UncmUgZ2V0dGluZyBhdCBoZXJlIGJ1 dCBJIHN1c3BlY3QgaXQncyBhZ2FpbiB0YW5nZW50aWFsIHRvIHRoaXMgQklQDQpkaXNjdXNz aW9uLg0KDQo+IA0KPiAtLS0NCj4gDQo+IEdldHRpbmcgYmFjayBvbiB0b3BpYywgd2l0aG91 dCB0cnlpbmcgdG8gZG8gYSBwb2ludC1ieS1wb2ludCByZXBseSwgSSBhZ3JlZSB3aXRoIHBy ZXR0eSBtdWNoIGV2ZXJ5dGhpbmcgeW91IHNhaWQgYnV0IEkgYW0gcmVsdWN0YW50IHRvIG1h a2UgYW55IGNoYW5nZXMuDQo+IA0KPiBJIGRvbid0IG1lYW50IHRvIGJlIG9idHVzZSBvciBh bnl0aGluZywgYnV0IEkgc3Ryb25nbHkgYmVsaWV2ZSB0aGUgbGltaXRpbmcgZmFjdG9yIHRv IGFkb3B0aW9uIHRvIGFsbCB0aGVzZSBwcm90b2NvbHMgaXMgYWN0dWFsbHkganVzdCBnZXR0 aW5nIHBlb3BsZSB0byBpbXBsZW1lbnQgaXQuIEkgbWFkZSBtdWx0aXBsZSBpbXBsZW1lbnRh dGlvbnMgb2YgYnVzdGFwYXkgZnJvbSBib3RoIHRoZSBzZW5kaW5nL3JlY2VpdmluZyBlbmQs IHNvIEkgY291bGQgdHJ5IGRldmVsb3AgdGhlIGVhc2llc3QgdG8gaW1wbGVtZW50IHN5c3Rl bSB0aGF0IGlzIHN0aWxsIHByYWN0aWNhbC4NCg0KWW91IGtub3csIHRoZXJlJ3MgY29uc2lk ZXJhYmxlIGV2aWRlbmNlIHRvIHRoZSBjb250cmFyeSwgSSdkIGFyZ3VlOiB0aGlzDQppZGVh ICpoYXMqIGJlZW4gaW1wbGVtZW50ZWQgYWxyZWFkeSB0aHJlZSB0aW1lczogYnkgeW91cnNl bGYsIGJ5IG15c2VsZg0KYW5kIGJ5IFNhbW91cmFpLiBBbmQgaW4gZnVsbHkgaW5jb21wYXRp YmxlIHdheXMgOikgU28gSSB0aGluayB0aGUNCmxpbWl0aW5nIGZhY3RvciBpcyBpbiBmYWN0 IGNyZWF0aW5nIGEgc3RhbmRhcmQgdGhhdCBhIHJlYXNvbmFibGUgbnVtYmVyDQpvZiBwZW9w bGUgY291bGQgYWdyZWUgd2l0aCAoYW5kIEkgbGlrZSBvcGVyYXRpb25hbCBkZWZpbml0aW9u cywgc28NCnN1YmplY3RpdmUgYXMgaXQgaXMsIEkgbGlrZSB0aGUgZ29hbCBvZiAiZ29vZC9j bGVhciBlbm91Z2ggdGhhdCBpdCBjb3VsZA0KYmUgaW5jb3Jwb3JhdGVkIGludG8gc29tZXRo aW5nIGxpa2UgQnRjUGF5U2VydmVyIikNCg0KPiANCj4gRm9yIGluc3RhbmNlIEkgbGlrZSBQ U0JUIGFuZCBpdCdzIG5pY2UgaW4gdGhlb3J5LiBJIGFjdHVhbGx5IGhhZCBhbiBvcmlnaW5h bCBpbXBsZW1lbnRhdGlvbiB1c2luZyBpdCwgd2hpY2ggaXMgaG93IEkgZm91bmQgc29tZSBi dWdzIGluIHRoZSBjb3JlIGFuZCBnb2xhbmcgdmVyc2lvbiBvZiBQU0JUKS4gQnV0IGluIHBy YWN0aWNlIGl0J3MgaHVnZWx5IG92ZXJraWxsIGFuZCBzaWduaWZpY2FudGx5IGluY3JlYXNl cyB0aGUgaW1wbGVtZW50YXRpb24gY29tcGxleGl0eSBjb21wbGV4aXR5IGFuZCBpcyBwb29y bHkgc3VwcG9ydGVkLiBTd2l0Y2hpbmcgdG8ganVzdCBhIHJhdyB0cmFuc2FjdGlvbiBhY3R1 YWxseSBtYWRlIGV2ZXJ5dGhpbmcgZWFzaWVyLiAoQW5kIHRoYXQncyBub3QgdG8gY3JpdGlj aXNlIFBTQlQsIEkgd291bGQgZGVmaW5pdGVseSB3YW50IHRvIHVzZSBpdCBpbiBvdGhlciBj b250ZXh0cykuDQoNCkJ1dCB0aGlzIHJlbGF0ZXMgYmFjayB0byBteSBmaXJzdCAiZ2VuZXJp YyIgcG9pbnQgdGhhdCB5b3UgaGF2ZW4ndA0KYWRkcmVzc2VkIGhlcmUgLSBwcm90b2NvbCB2 ZXJzaW9uaW5nIGFuZCB0aGUgcG9zc2liaWxpdHkgb2YgbW9yZSB0aGFuDQpvbmUgb3B0aW9u LiBQZXJoYXBzIG1vcmUgcmVhbGlzdGljIChkZWJhdGFibGUpOiBoYXZlIHRoZSBjdXJyZW50 IHZlcnNpb24NCmJlIG5vbi1QU0JUIGJ1dCB3aXRoIGEgcGxhbiB0byBoYXZlIGEgdmVyc2lv biBidW1wIHdpdGggUFNCVCBpbiBmdXR1cmUuDQpTdHVmZiBsaWtlIHRoYXQuIEl0IHNlZW1z IGNyYXp5IHRvIGFjdHVhbGx5IGxvbmcgdGVybSByZWplY3QgaXQuDQoNCj4gDQo+IEFueXdh eSwgYSBiaWcgbW90aXZhdGlvbiBmb3IgbWUgZXZlbiB3cml0aW5nIGl0IGFzIGEgQklQIHdh cyB0byBmb3JtYWxpemUgbXkgbGl0dGxlIGFudGktRE9TIHRyaWNrIG9mIHByaXZhdGVseSBj cmVhdGluZyBhICJ0ZW1wbGF0ZSB0cmFuc2FjdGlvbiIgd2hpY2ggY2FuIGp1c3QgYmUgZHVt cGVkIG9uIHRoZSBuZXR3b3JrIGFzIHB1bmlzaG1lbnQuIFNvIGlmIG5vdGhpbmcgZWxzZSwg aG9wZWZ1bGx5IEknbGwgaGF2ZSBkZW1vbnN0cmF0ZWQgaXQncyBhIHByZXR0eSBwcmFjdGlj YWwgd2F5IG9mIGRvaW5nIHRoaW5ncy4NCj4gDQoNCkkgZG9uJ3Qgd2FudCB0byBiZSB0aGF0 IGd1eSwgYnV0IHRoaXMgd2FzIGEgY2VudHJhbCBwYXJ0IG9mIHRoZSBwcm9wb3NhbA0KdGhh dCBjYW1lIG9mIHRoZSBtZWV0dXAgbGFzdCBzdW1tZXIgYW5kIGlzIGluIEhheXdvb2QncyBi bG9ncG9zdC4gSSBtZWFuDQppZiB5b3UgY2FtZSB1cCBpdCB3aXRoIHNlcGFyYXRlbHksIHRo ZW4gY29vbCA6KSBCdXQgSSB3YXMgdGhlcmUsIHRoYXQNCndhcyBlc3RhYmxpc2hlZCBpbW1l ZGlhdGVseSBhcyB0aGUgcmlnaHQgd2F5IG9mIGRvaW5nIHRoaXMgdG8gYXZvaWQgYQ0KdHJp dmlhbCBhdHRhY2suDQpXaGF0IG1pZ2h0IGhhdmUgY29uZnVzZWQgeW91IGlzIGFsbCB0aGF0 IHN0dWZmIGFib3V0IG11bHRpcGxlIGNhbmRpZGF0ZXMNCmFuZCBldmVuIFpLUCBhcHByb2Fj aGVzIC0gdGhvc2Ugd2VyZSBqdXN0IGV4dHJhIGlkZWFzIGFib3V0IG1ha2luZyBpdA0KcmVh bGx5IHNlY3VyZSBhdCBsYXJnZSBzY2FsZTsgYnV0IHRob3NlIGlkZWFzIGRvbid0IHF1aXRl IG1lZXQgdGhlIGdvYWwNCihmb3IgdmFyaW91cyByZWFzb25zKTsgd2VsbCwgYXJndWFibHku IFRoZSBiYXNpYyBhbnRpLURPUyBvZiBhbiBpbml0aWFsDQpub24tY29pbmpvaW4gd2FzIHNv cnRhIGNlbnRyYWwuDQooQWxzbyBJJ20gbm90aW5nIHlvdSBkaWRuJ3QgcmVzcG9uZCB0byBt eSBjcml0aXF1ZSBvZiB5b3VyICJhbHdheXMgdXNlDQp0aGUgc2FtZSBjb250cmlidXRpb25z IiBkZWZlbmNlOyBJIG1lYW4sIHByb2JhYmx5IHRoYXQncyBmaW5lLCBpdCB3YXMNCm9ubHkg cmVhbGx5IHNheWluZyBpdCBpc24ndCBwZXJmZWN0LiBXYXMganVzdCBjdXJpb3VzIHRvIGhl YXINCnlvdXIvb3RoZXJzIHRob3VnaHRzIG9uIGl0KS4NCg0KPiAtLQ0KPiANCj4gQWxzbyB5 b3VyIGFuYWx5c2lzIG9uICJVbm5lY2Vzc2FyeSBJbnB1dCBIZXVyaXN0aWMiIGlzIHByZXR0 eSBjb29sLCBidXQgSSBhbHNvIGRvbid0IGxpa2UgdGVsbGluZyBwZW9wbGUgdG8gImF2b2lk IHRoZSBVSUgyIiB3aXRob3V0IHByb3ZpZGluZyB0aGUgYWN0dWFsIGFsZ28gdGhleSBzaG91 bGQgdXNlLiBCdXQgcmVhbGx5IEkgdGhpbmsgaXQncyBiZXR0ZXIgb2ZmIGluIGEgc29ydCBv ZiBhcnRpY2xlICJob3cgdG8gcGljayBjb250cmlidXRlZCBpbnB1dHMiIG9yIHNvbWV0aGlu ZywgYXMgd2hpbGUgaXQncyBuaWNlIGl0J3Mgbm90IGEgaHVnZSBkZWFsIGFuZCB0aGVyZSdz IGEgbG90IG9mIGRlYmF0YWJsZSB0cmFkZW9mZnMgdGhhdCBjYW4vc2hvdWxkIGJlIHVzZWQu IEZvciBpbnN0YW5jZSB0aGUgaW1wbGVtZW50YXRpb24gSSB3cm90ZSBmb3IgYnVzdGFiaXQu Y29tIGN1cnJlbnRseSBqdXN0IGhlYXZpbHkgYmlhc2VzIHRhaW50ZWQgaW5wdXRzIChlLmcu IG9uZXMgYXNzb2NpYXRlZCB3aXRoIGFkZHJlc3MgcmV1c2UpLg0KPiANCg0KR29vZCBwb2lu dCBhYm91dCBhbGdvLg0KSSB3cm90ZSBteSBiZXN0IGVmZm9ydCBhdCBhIHByb2NlZHVyZSBo ZXJlOg0KaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vQWRhbUlTWi80NTUxYjk0Nzc4OWQzMjE2 YmFjZmNiN2FmMjVlMDI5ZSNnaXN0Y29tbWVudC0yNzk5NzA5DQoNCkkgYXNrZWQgZm9yIGNv bW1lbnRzIG9uIGl0IGJ1dCBnb3Qgbm9uZSBiYWNrIHNvIGZhciAoZ2lzdHMgYXJlIHRlcnJp YmxlDQpmb3IgdGhpcyB1bmZvcnR1bmF0ZWx5LCBwZXJoYXBzIEknbGwgaGF2ZSBtb3JlIGx1 Y2sgb24gdGhlIGxpc3QpLg0KDQpJIHdvdWxkIGFyZ3VlIHRoYXQgdGhpcyBpc3N1ZSAqc2hv dWxkKiBiZSBtZW50aW9uZWQgb24gdGhlIEJJUC4gQSAqaHVnZSoNCnBhcnQgb2Ygd2hhdCBt YWtlcyBQYXlKb2luL0J1c3RhUGF5IG9mIGludGVyZXN0IGlzIHRoZSBzdGVnYW5vZ3JhcGhp Yw0KZmVhdHVyZSwgaWYgeW91IGRvbid0IHBheSBhdHRlbnRpb24gdG8gdGhpcyB0aGVuIGl0 IGRvZXNuJ3QgbG9vayBsaWtlIGENCnBheW1lbnQgKGNhdmVhdC4tLT4pLg0KVGhlIGNvdW50 ZXJhcmd1bWVudCBpcyBMYXVyZW50J3Mgc3RhdGlzdGljcyB3aGljaCBJIHByZXZpb3VzbHkg bGlua2VkLA0Kc3VnZ2VzdGluZyB0aGF0IG1heWJlIDMwJSBvZiB0eHMgdmlvbGF0ZSB0aGlz IGFueXdheSwgdG9kYXkuIEknbSBub3QNCnN1cmUgYWJvdXQgdGhhdCwgd2lsbCBuZWVkIG1v cmUgYW5hbHlzaXM7IENvcmUncyBTUkQgYWxnbyBtYXkgYmUgb25lDQpyZWFzb24sIGJ1dCBh bnl3YXkgLi4uIGJldHRlciB0byBtYWtlIHRoaW5ncyBsb29rIGxpa2UgcGF5bWVudHMuDQoN Ckl0IGRvZXNuJ3QgaHVydCB0byBwcm9tcHQgYW4gaW1wbGVtZW50ZXIgdG8gZG8gdGhpczsg d2hldGhlciBpdCdzDQpmZWFzaWJsZSBpbiB0aGF0IHNwZWNpZmljIHdhbGxldCBzaXR1YXRp b24gb3Igbm90IGlzIHVwIHRvIHRoZW07IHdoZXRoZXINCnRoZXkgd2FudCB0byBnbyBob2cg d2lsZCBhbmQgY29udHJvbCBwZXJjZW50YWdlcyBvZiBVSUgxIGFuZCBVSUgyIGFuZA0Kd2hh dG5vdCBpcyB0aGVyZSBidXNpbmVzcywgb3IgdGhleSBjYW4gdG90YWxseSBpZ25vcmUgaXQg LSBidXQgd2l0aG91dA0KaXQgYmVpbmcgbWVudGlvbmVkIGluIHRoZSBCSVAsIHRoZXkgbWF5 IG5vdCBldmVuIHRoaW5rIG9mIGl0Lg0KDQpBIGxhc3QgcG9pbnQsIHlvdSBhbHNvIGRvbid0 IHNlZSB2YWx1ZSBpbiBiZWluZyBtb3JlIGV4cGxpY2l0IGFib3V0DQpzaW1wbGUgdGhpbmdz IGxpa2UgdHJhbnNhY3Rpb24gdmVyc2lvbiBhbmQgbG9ja3RpbWU/IEV2ZW4gaWYgeW91IHRo aW5rDQp0aGVzZSB0aGluZ3Mgc2hvdWxkICpub3QqIGJlIGNvbnRyb2xsZWQsIGUuZy4gdGhl IHByb3RvY29sIHNob3VsZCBhbGxvdw0KZWl0aGVyIHRyYW5zYWN0aW9uIHZlcnNpb24sIHRo ZW4gaXQnZCBiZSBiZXR0ZXIgdG8gZXhwbGljaXRseSBzYXkgc28uDQo+IA0KPiANCj4gLVJ5 YW4NCj4gDQo+IOKAkOKAkOKAkOKAkOKAkOKAkOKAkCBPcmlnaW5hbCBNZXNzYWdlIOKAkOKA kOKAkOKAkOKAkOKAkOKAkA0KPiBPbiBGcmlkYXksIEphbnVhcnkgMjUsIDIwMTkgNjo0NyBB TSwgQWRhbSBHaWJzb24gdmlhIGJpdGNvaW4tZGV2IDxiaXRjb2luLWRldkBsaXN0cy5saW51 eGZvdW5kYXRpb24ub3JnPiB3cm90ZToNCj4gDQo+PiBSeWFuIGFuZCBsaXN0LA0KPj4gSSB3 YW50IHRvIGFkZCBzb21lIGNvbW1lbnRhcnkgdG8gdGhpcyAoQklQNzkpIHRvIHNlZSBpZiB3 ZSBjYW4gZ2V0DQo+PiBmdXJ0aGVyIGluIHN0YW5kYXJkaXppbmcgdGhpcyBpZGVhLg0KPj4N Cj4+IFdoZW4gSSBmaXJzdCBtdWxsZWQgaXQgb3ZlciBJIHRob3VnaHQgaXQgdG9vIGltcHJh Y3RpY2FsLCBidXQgaXRzIHZpcnR1ZQ0KPj4gb2Ygc3RlZ2Fub2dyYXBoaWMgaGlkaW5nIG1l YW5zIG9ubHkgbWluaW1hbCB1cHRha2UgaXMgc3RpbGwgZW5vcm1vdXNseQ0KPj4gaW50ZXJl c3RpbmcgYW5kIHdvcnRoIHB1cnN1aW5nOyB0aGF0J3MgbXkgY3VycmVudCBmZWVsaW5nLiBJ J3ZlIG9mZmVyZWQNCj4+IG1vcmUgZGV0YWlsZWQgdGhvdWdodHMgaW4gbXkgYmxvZyBwb3N0 WzFdIChkZWYgbm90IHJlcXVpcmVkIHJlYWRpbmcgaGVyZSkuDQo+Pg0KPj4gQm90aCBKb2lu bWFya2V0IGFuZCBTYW1vdXJhaSBoYXZlIHN0YXJ0ZWQgaW1wbGVtZW50aW5nIHRoaXMga2lu ZCBvZg0KPj4gdHJhbnNhY3Rpb24uIEFuZCB3aGlsZSB0aGF0J3MgaW50ZXJlc3RpbmcgZXhw ZXJpbWVudGFsbHksIHNvbWUga2luZCBvZg0KPj4gY3Jvc3Mtd2FsbGV0IHN0YW5kYXJkIHdv dWxkIGJlIGhlbHBmdWwsIGFsYmVpdCB0aGVyZSBzb21lIGRpZmZlcmVuY2VzDQo+PiBiZXR3 ZWVuIHRoYXQgYW5kIHRoZSBtZXJjaGFudC9jZW50cmFsaXplZCBzZXJ2aWNlIHVzZS1jYXNl Lg0KPj4NCj4+IFdlIG1pZ2h0IGltYWdpbmUgYXMgYSBjb25jcmV0ZSBnb2FsIGZvciB0aGlz IEJJUCB0byBjcmVhdGUgc29tZXRoaW5nDQo+PiB0aGF0IHdvdWxkIGJlIGFjY2VwdGFibGUg Zm9yIGluY2x1c2lvbiBpbnRvIGEgcHJvamVjdCBsaWtlIEJUQ1BheVNlcnZlciwNCj4+IHNv IHRoYXQgaXQgY291bGQgYmUgdXNlZCBpbiBhIHJlYWxpc3RpYyB1c2UgY2FzZSBieSBzbWFs bGVyIGJpdGNvaW4NCj4+IGFjY2VwdGluZyBtZXJjaGFudHMuDQo+Pg0KPj4gQ29tbWVudHMg dG8gdGhlIEJJUFsyXSBhcyBmb2xsb3dzLCB3aXRoIGdlbmVyaWMgY29tbWVudHMgZmlyc3Qs IGFuZCB0aGVuDQo+PiBzcGVjaWZpYyBjb21tZW50cyBmb3IgZXhpc3RpbmcgcG9pbnRzIGlu IHRoZSBCSVA6DQo+Pg0KPj4gWzFdIGh0dHBzOi8vam9pbm1hcmtldC5tZS9ibG9nL2Jsb2cv cGF5am9pbg0KPj4gWzJdIGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luL2JpcHMvYmxvYi9t YXN0ZXIvYmlwLTAwNzkubWVkaWF3aWtpDQo+Pg0KPj4gR2VuZXJpYyBjb21tZW50cw0KPj4N Cj4+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPj4NCj4+IC0gICBQ cm90b2NvbCB2ZXJzaW9uaW5nLiBTaW5jZSBpbmV2aXRhYmx5IChldmVuIGlmIG9ubHkgbWVy Y2hhbnRzKSwgdGhpcw0KPj4gICAgIG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgbXVsdGlwbGUg d2FsbGV0cyB0byBiZSB1c2VmdWwsIHRoZSBjb21tdW5pY2F0aW9uDQo+PiAgICAgcHJvdG9j b2wgd2lsbCBuZWVkIHZlcnNpb25pbmcgKGZvciBleGFtcGxlIGkgaGF2ZSBpbiBteQ0KPj4g ICAgIHNpbXBsZS9leHBlcmltZW50YWwgSm9pbm1hcmtldCBQYXlKb2luIHRoYXQgc2VuZGVy IHNlbmRzIG1pbiBhbmQgbWF4DQo+PiAgICAgc3VwcG9ydGVkIHZlcnNpb24gYW5kIHJlY2Vp dmVyIHJlc3BvbmRzIHdpdGggYSBjaG9zZW4gcHJvdG9jb2wgdmVyc2lvbg0KPj4gICAgIHNv IHdlIGNhbiB1cGRhdGUpLiBJIGRvIHVuZGVyc3RhbmQgdGhhdCBhcyBhIGNsaWVudC1zZXJ2 ZXIgbW9kZWwgY2FuDQo+PiAgICAgYXBwbHkgaGVyZSwgd2UgY2FuIGRpdGNoIGEgbG90IG9m IHRoZSBjb21wbGV4aXRpZXMgYXJvdW5kIG5ldHdvcmsvcDJwDQo+PiAgICAgaW50ZXJhY3Rp b24sIGJ1dCB0aGlzIG11Y2ggYXQgbGVhc3Qgc2VlbXMgbmVjZXNzYXJ5Lg0KPj4NCj4+IC0g ICBBbHRob3VnaCBpdCBoYXMgaXRzIGxvZ2ljLCBJIGRvbid0IHRoaW5rICJCdXN0YXBheSIg aXMgYSBnb29kIG5hbWUgZm9yDQo+PiAgICAgdGhpcyBwcm90b2NvbC4gSSBwcmVmZXIgIlBh eUpvaW4iIHdoaWNoIGlzIG5ldXRyYWwgc291bmRpbmcgYW5kDQo+PiAgICAgc2VsZi1kZXNj cmlwdGl2ZS4gTmVlZGxlc3MgdG8gc2F5IHRoaXMgaXMgbm90IGEgaGlsbCBJIGludGVuZCB0 byBkaWUgb24uDQo+Pg0KPj4gLSAgIFBTQlQvQklQMTc0LiBJIHJlYWxpc2UgdGhpcyBoYXMg YWxyZWFkeSBiZWVuIGRpc2N1c3NlZCwgYnV0IHRoaXMgaXMgYQ0KPj4gICAgIGdvb2QgZXhh bXBsZSBvZiB3aGF0IHRoaXMgc3RhbmRhcmRpc2F0aW9uIHdhcyBkZXNpZ25lZCBmb3IsIHNv IEknZCBiZQ0KPj4gICAgIGFnYWluc3Qgbm90IGluY2x1ZGluZyBpdCwgZXZlbiBnaXZlbiB0 aGUgcmVhbGl0eSB0aGF0LCBhcyB5b3UgY29ycmVjdGx5DQo+PiAgICAgb2JzZXJ2ZSwgaXQg aXMgbm90IHlldCBpbXBsZW1lbnRlZCBpbiB0aGUgbWFqb3JpdHkgb2Ygd2FsbGV0cyBhbmQN Cj4+ICAgICBsaWJyYXJpZXMuIE9uZSB3YXkgcm91bmQgdGhhdCBpcyB0byBtYWtlIGl0IG9w dGlvbmFsIChwb3NzaWJseSBjb21iaW5lZA0KPj4gICAgIHdpdGggYWJvdmUgcG9pbnQgYWJv dXQgdmVyc2lvbmluZykuIE5vdGUgdGhhdCBmb3IgZXhhbXBsZSB5b3Ugd2VyZQ0KPj4gICAg IG9ic2VydmluZyB0aGUgbmVjZXNzaXR5IHRvIGNoZWNrIHRoZSBzZXF1ZW5jZSBudW1iZXIg d2FzIHVuY2hhbmdlZDsgdGhhdA0KPj4gICAgIHdvdWxkIGJlIGVuY2Fwc3VsYXRlZCBieSBj aGVja2luZyBlcXVhbGl0eSBvZiBQU0JUIElucHV0IG9iamVjdHMvZmllbGRzLg0KPj4gICAg IFdoaWxlIG9uZSBjYW4gbWFrZSBzdWNoIHNvZnR3YXJlIGFyY2hpdGVjdHVyZSBhcmd1bWVu dHMsIHRoZSByZWFsbHkNCj4+ICAgICBmdW5kYW1lbnRhbCBwb2ludCBpcyB0aGUgbmVlZCBm b3Igc3RhbmRhcmRzIGZvciB4LXdhbGxldCBjb21wYXRpYmlsaXR5Lg0KPj4NCj4+IC0gICBW ZXJzaW9uLCBMb2NrdGltZTogUGVyaGFwcyB0aGlzIGlzIG5vdCBuZWVkZWQ7IGluIGEgcGVl ciB0byBwZWVyDQo+PiAgICAgd2FsbGV0IHNjZW5hcmlvIEkgdGhpbmsgdGhlcmUgbWlnaHQg YmUgbG9naWMgaW4gdHJ5aW5nIHRvIGdldCBjb3Zlcg0KPj4gICAgIHRyYWZmaWMgb2YgKENv cmUsIEVsZWN0cnVtLCBvdGhlcnMpLCBzYXksIGJ5IHVzaW5nDQo+PiAgICAgbGFzdC1ibG9j ay1sb2NrdGltZS1tb3N0bHksIGFzIHRoZXkgZG8uIFZlcnNpb24gc2hvdWxkIGJlIDIgYW5k IHNlcXVlbmNlDQo+PiAgICAgaXMgYSBmdW5jdGlvbiBvZiB5b3VyIHN1Z2dlc3Rpb24gdG8g dXNlIEJJUDEyNS4gV29ydGggbm90aW5nIHRoYXQgQklQMTI1DQo+PiAgICAgaXMgbm90IGN1 cnJlbnRseSB3aWRlbHkgdXNlZCBvbiB0aGUgbmV0d29yaywgdGhvdWdoIChzZWUNCj4+ICAg ICBodHRwczovL3Ayc2guaW5mby9kYXNoYm9hcmQvZGIvcmVwbGFjZS1ieS1mZWU/b3JnSWQ9 MSkuIEZvciB0aGlzIHJlYXNvbg0KPj4gICAgIGl0IHNob3VsZCBwZXJoYXBzIGJlIGV4cGxp Y2l0bHkgb25seSBvcHRpb25hbC4NCj4+DQo+PiAtICAgQXZvaWRhbmNlIG9mIG5vbi1wYXlt ZW50ICJVbm5lY2Vzc2FyeSBJbnB1dCBIZXVyaXN0aWMiICgxLCAyKS4gRm9yDQo+PiAgICAg cmVmZXJlbmNlLCBzZWUgdGhlIGRlZmluaXRpb24gaGVyZQ0KPj4gICAgIGh0dHBzOi8vZ2lz dC5naXRodWIuY29tL0FkYW1JU1ovNDU1MWI5NDc3ODlkMzIxNmJhY2ZjYjdhZjI1ZTAyOWUj Z2lzdGNvbW1lbnQtMjc5NjUzOQ0KPj4gICAgIGFuZCBzb21lIGRhdGEgaGVyZQ0KPj4gICAg IGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL0FkYW1JU1ovNDU1MWI5NDc3ODlkMzIxNmJhY2Zj YjdhZjI1ZTAyOWUjZ2lzdGNvbW1lbnQtMjgwMDc5MQ0KPj4gICAgICh3aG9sZSBjb21tZW50 IHRocmVhZCBtYXkgYmUgb2YgaW50ZXJlc3QpIC0gbm90ZSB0aGlzIFVJSCBuYW1lIGlzIGFm YWlrDQo+PiAgICAgQ2hyaXMgQmVsY2hlcidzIGludmVudGlvbiwgaXQgc2VlbXMgdXNlZnVs IGFzIGEgY2F0ZWdvcmlzYXRpb24uDQo+PiAgICAgU28sIGl0IHNlZW1zIHRoYXQgVUlIMiBp cyBtb3JlIGltcG9ydGFudCB0byBhdm9pZDsgd2hpbGUgc29tZSBtb3JlDQo+PiAgICAgc29w aGlzdGljYXRlZCB3YWxsZXQgY29pbiBzZWxlY3Rpb24gYWxnb3JpdGhtcyBtYXkgb2NjYXNp b25hbGx5IHBpY2sNCj4+ICAgICBhbiBpbnB1dCBzZXQgd2hlcmUgb25lIGlucHV0IGlzIGxh cmdlciB0aGFuIGFueSBvdXRwdXQsIG1vc3Qgd29uJ3QsIGFuZA0KPj4gICAgIHNvbWUgaW4g cGFydGljdWxhciBuZXZlciB3aWxsLiBTbyBJIHRoaW5rIHRoZSB0ZXh0IGhlcmUgc2hvdWxk IGluZGljYXRlDQo+PiAgICAgdGhhdCAqdGhlIHJlY2VpdmVyJ3MgY29udHJpYnV0ZWQgaW5w dXQocykgU0hPVUxEIGJlIGNob3NlbiB0byBhdm9pZA0KPj4gICAgIHRyaWdnZXJpbmcgdGhl IFVJSDIgaGV1cmlzdGljIHdoZXJlIHBvc3NpYmxlLCBzbyB0aGF0IHRoZSBmaW5hbCBwYXlq b2luDQo+PiAgICAgdHJhbnNhY3Rpb24gaXMgbWF4aW1hbGx5IHBsYXVzaWJsZSBhcyBhbiBv cmRpbmFyeSBwYXltZW50IiBvciBzaW1pbGFyLg0KPj4gICAgIFVJSDEgaXMgYSBuaWNlLXRv LWhhdmUgKG1lYW5pbmcgdGhlIHBsYXVzaWJpbGl0eSBleHRlbmRzIHRvIHR3bw0KPj4gICAg IGRpZmZlcmVudCAoYm90aCB3cm9uZykgcGF5bWVudCBhbW91bnRzLCBidXQgaXQgbWF5IG5v dCBiZSBuZWNlc3NhcnkgdG8NCj4+ICAgICBtZW50aW9uIGl0IGluIHRoZSBCSVAuDQo+Pg0K Pj4gICAgIFNwZWNpZmljIGNvbW1lbnRzDQo+PiAgICAgPT09PT09PT09PT09PT09PT0NCj4+ DQo+Pg0KPj4+PiA9PT09U3RlcCA0LiBSZWNlaXZlciB2YWxpZGF0ZXMsIHJlLXNpZ25zLCBh bmQgcHJvcGFnYXRlcyBvbiB0aGUNCj4+DQo+PiBiaXRjb2luIG5ldHdvcms9PT09DQo+Pg0K Pj4gSSBiZWxpZXZlIHRoaXMgc2hvdWxkIHNheSAiU2VuZGVyIiBub3QgUmVjZWl2ZXIuIEFs c28gZm9yIHRoZSBuZXh0DQo+PiBzZW50ZW5jZSwgcy9yZWNlaXZlci9zZW5kZXIvOg0KPj4N Cj4+Pj4gVGhlIHJlY2VpdmVyIE1VU1QgdmFsaWRhdGUgdGhlICcncGFydGlhbCB0cmFuc2Fj dGlvbicnIHdhcyBjaGFuZ2VkDQo+Pg0KPj4gY29ycmVjdGx5IGFuZCBub24tbWFsaWNpb3Vz bHkgKHRvIGFsbG93IHVzaW5nIHBvdGVudGlhbGx5IHVudHJ1c3RlZA0KPj4gY29tbXVuaWNh dGlvbiBjaGFubmVscyksIHJlLXNpZ24gaXRzIG9yaWdpbmFsIGlucHV0cyBhbmQgcHJvcGFn YXRlIHRoZQ0KPj4gZmluYWwgdHJhbnNhY3Rpb24gb3ZlciB0aGUgYml0Y29pbiBuZXR3b3Jr Lg0KPj4NCj4+IFlvdXIgdmVyeSBjb3JyZWN0IGhpZ2hsaWdodGluZyBvZiB0aGUgYXR0YWNr IHZlY3RvciBvZiAicmVjZWl2ZXIgZ2l2ZXMNCj4+IHNlbmRlciBvdGhlciBpbnB1dHMgYmVs b25naW5nIHRvIHNlbmRlciB0byB1bndpdHRpbmdseSBzaWduIChkZXNjcmliZWQNCj4+IGJl bG93KSwgc2hvdWxkIGJlIGhpZ2hsaWdodGVkIGhlcmUsIHBlcmhhcHMgd2l0aCB0aGUgcGhy YXNlICJyZS1zaWduIGl0cw0KPj4gT1JJR0lOQUwgaW5wdXRzIiAob25seSEpIi4NCj4+DQo+ Pj4+IFdoZW4gdGhlIHNlbmRlciBpcyBjcmVhdGluZyBhICJ0ZW1wbGF0ZSB0cmFuc2FjdGlv biIgaXQgaXMgZG9uZQ0KPj4NCj4+IGFsbW9zdCBpZGVudGljYWxseSB0byBjcmVhdGluZyBh IG5vcm1hbCBzZW5kLCB3aXRoIHRoZSBleGNlcHRpb24gdGhhdA0KPj4gb25seSBzZWd3aXQg aW5wdXRzIG1heSBiZSB1c2VkLiBUaGUgc2VuZGVyIGlzIGFsc28gZW5jb3VyYWdlZCB0byB1 c2UgYQ0KPj4gc2xpZ2h0bHkgbW9yZSBhZ2dyZXNzaXZlIGZlZXJhdGUgdGhhbiB1c3VhbCBh cyB3ZWxsIGFzIEJJUDEyNSAoT3B0LWluDQo+PiBGdWxsIFJlcGxhY2UtYnktRmVlIFNpZ25h bGluZyksIGJ1dCBuZWl0aGVyIGlzIHN0cmljdGx5IHJlcXVpcmVkLg0KPj4NCj4+ICJzbGln aHRseSBtb3JlIGFnZ3Jlc3NpdmUgZmVlcmF0ZSB0aGFuIHVzdWFsIiAtIHRoaXMgSSB1bmRl cnN0YW5kIGlzIHRvDQo+PiBtYWtlIHVwIGZvciByZWNlaXZlciBjb250cmlidXRlZCB1dHhv LCBPSy4NCj4+DQo+PiAib25seSBzZWd3aXQgaW5wdXRzIiAtIGl0IGNlcnRhaW5seSBtYWtl cyB0aGluZ3Mgc2ltcGxlci4gT25lIGNhbiB3b3JrDQo+PiB3aXRoIG5vbi1zZWd3aXQgaW5w dXRzIGJ1dCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIChhcyBtZW50aW9uZWQgYmVsb3cpDQo+ PiB3ZSByZWFsbHkgb3VnaHQgdG8gIk1VU1QiIHRoZSBwYXJ0IGFib3V0IG1hdGNoaW5nIGlu cHV0IHR5cGVzLCBJIHRlbmQgdG8NCj4+IGFncmVlIHRoYXQgbm9uLXNlZ3dpdCBzaG91bGQg YmUgZGlzYWxsb3dlZC4NCj4+DQo+Pj4+IFRoZSByZWNlaXZlciBtdXN0IGFkZCBhdCBsZWFz dCBvbmUgaW5wdXQgdG8gdGhlIHRyYW5zYWN0aW9uICh0aGUNCj4+DQo+PiAiY29udHJpYnV0 ZWQgaW5wdXRzIikuIElmIHRoZSByZWNlaXZlciBoYXMgbm8gaW5wdXRzLCBpdCBzaG91bGQg dXNlIGENCj4+IDUwMCBpbnRlcm5hbCBzZXJ2ZXIgZXJyb3IsIHNvIHRoZSBjbGllbnQgY2Fu IHNlbmQgdGhlIHRyYW5zYWN0aW9uIGFzIHBlcg0KPj4gbm9ybWFsIChvciB0cnkgYWdhaW4g bGF0ZXIpLg0KPj4NCj4+IFdvdWxkIGl0IG5vdCBiZSBtdWNoIHNpbXBsZXIgZm9yIHRoZSBz ZXJ2ZXIgdG8gcmV0dXJuIGEgZGlmZmVyZW50DQo+PiAobm9uLWVycm9yKSByZXNwb25zZSBp bmRpY2F0aW5nIHRoYXQgaXQgd2lsbCBicm9hZGNhc3QgdGhlIHRlbXBsYXRlIHR4DQo+PiBp biB0aGlzIGNhc2U/DQo+Pg0KPj4+PiBJdHMgZ2VuZXJhbGx5IGFkdmlzZWQgdG8gb25seSBh ZGQgYSBzaW5nbGUgY29udHJpYnV0ZWQgaW5wdXQsIGhvd2V2ZXINCj4+DQo+PiB0aGV5IGFy ZSBjaXJjdW1zdGFuY2VzIHdoZXJlIGFkZGluZyBtb3JlIHRoYW4gYSBzaW5nbGUgaW5wdXQg Y2FuIGJlIHVzZWZ1bC4NCj4+DQo+PiBJIGRvbid0IHNlZSBhIGdvb2QgcmVhc29uIHRvIGFk dmlzZSB0aGUgdXNlIG9mIG9ubHkgMSBpbnB1dD8gKGJ1dCB0aGlzDQo+PiB3aWxsIGFsc28g Y29ubmVjdCB3aXRoIHRoZSBhYm92ZSBnZW5lcmljIGNvbW1lbnQgYWJvdXQgIlVJSCIpLiBJ IGd1ZXNzDQo+PiBpdCdzIGJlY2F1c2Ugb2YgeW91ciBhcHByb2FjaCB0byBmZWVzLiBJJ2Qg cHJlZmVyIG5vdCB0byBjcmVhdGUgYQ0KPj4gbGltaXRhdGlvbiBoZXJlLg0KPj4NCj4+Pj4g VG8gcHJldmVudCBhbiBhdHRhY2sgd2hlcmUgYSByZWNlaXZlciBpcyBjb250aW51YWxseSBz ZW50IHZhcmlhdGlvbnMNCj4+DQo+PiBvZiB0aGUgc2FtZSB0cmFuc2FjdGlvbiB0byBlbnVt ZXJhdGUgdGhlIHJlY2VpdmVycyB1dHhvIHNldCwgaXQgaXMNCj4+IGVzc2VudGlhbCB0aGF0 IHRoZSByZWNlaXZlciBhbHdheXMgcmV0dXJucyB0aGUgc2FtZSBjb250cmlidXRlZCBpbnB1 dHMNCj4+IHdoZW4gaXQncyBzZWVuIHRoZSBzYW1lIGlucHV0cy4NCj4+DQo+PiBUaGlzIGlz IGFuIGFwcHJvYWNoIHRvIGF2b2lkaW5nIHRoaXMgcHJvYmxlbSB3aGljaCBoYXMgdGhlIHZp cnR1ZSBvZg0KPj4gc2ltcGxpY2l0eSwgYnV0IGl0IHNlZW1zIGEgbGl0dGxlIHByb2JsZW1h dGljLiAoMSkgWW91IG11c3Qga2VlcCBhDQo+PiBtYXBwaW5nIG9mIHByb3Bvc2VkIHBheW1l bnQgdXR4b3MgdG8gb25lJ3MgcHJvcG9zZWQgY29udHJpYnV0ZWQgaW5wdXQNCj4+IHV0eG9z LCBidXQgKDIpIGhvdyBzaG91bGQgdGhpcyBiZSB1cGRhdGVkIGlmIHlvdSBuZWVkIHRvIHNw ZW5kIHRoZQ0KPj4gY29udHJpYnV0aW9uIG1lbnRpb25lZCBpbiAoMSk/IElyb25pY2FsbHkg dXNlIG9mIHBheWpvaW4gZXhhY2VyYmF0ZXMNCj4+IHRoaXMgaXNzdWUsIGJlY2F1c2UgaXQg cmVzdWx0cyBpbiBhIHNtYWxsZXIgbnVtYmVyIG9mIHV0eG9zIGJlaW5nIGhlbGQNCj4+IGJ5 IHRoZSByZWNlaXZlciBhdCBhbnkgb25lIHRpbWUgOikgQWxsIHRoaXMgY29uc2lkZXJlZCwg SSBzdGlsbCBzZWUgdGhlDQo+PiB2YWx1ZSBpbiB5b3VyIGFwcHJvYWNoLCBidXQgaXQgbWln aHQgZW5kIHVwIHdpdGggYSByZS1hdHRlbXB0ZWQgcGF5bWVudA0KPj4gYmVpbmcgcmVqZWN0 ZWQuIENlcnRhaW5seSB0aGUgbW9yZSBjb21wbGV4IHN1Z2dlc3RlZCBzb2x1dGlvbnMgY29t aW5nDQo+PiBvdXQgb2YgdGhlIHN1bW1lciAyMDE4IGNvaW5qb2luIHdvcmtzaG9wIGFyZW4n dCBhcyBwcmFjdGljYWwgYXMgdGhpcywNCj4+IGFuZCBtYXkgYmUgb3ZlcmtpbGwgZm9yIHNt YWxsIG1lcmNoYW50cy9yZWNlaXZlcnMuDQo+Pg0KPj4+PiBJdCBpcyBzdHJvbmdseSBwcmVm ZXJhYmxlIHRoYXQgdGhlIHJlY2VpdmVyIG1ha2VzIGFuIGVmZm9ydCB0byBwaWNrIGENCj4+ DQo+PiBjb250cmlidXRlZCBpbnB1dCBvZiB0aGUgc2FtZSB0eXBlIGFzIHRoZSBvdGhlciB0 cmFuc2FjdGlvbiBpbnB1dHMgaWYNCj4+IHBvc3NpYmxlLg0KPj4NCj4+IEkgaGF2ZSBhbHNv IHRob3VnaHQgYWJvdXQgdGhpcyBhbmQgeW91IGNvdWxkIHJlYXNvbmFibHkgYXJndWUgdGhp cw0KPj4gc2hvdWxkIGJlIGEgTVVTVCBzZWN0aW9uIGluIHRoZSBCSVAsIHRoYXQgaXMsIGlm IHRoZSByZWNlaXZlciBjYW5ub3QgdXNlDQo+PiBpbnB1dHMgb2YgdGhlIHNhbWUgdHlwZSwg aGUgc2hvdWxkIGZhbGwgYmFjayB0byB0aGUgdGVtcGxhdGUNCj4+IHRyYW5zYWN0aW9uLiBB IG1peGVkLWlucHV0IHBheWpvaW4vY29pbmpvaW4gaXMgZXNzZW50aWFsbHkNCj4+IG5lYXIt cGVyZmVjdGx5IGlkZW50aWZpYWJsZSBhcyBzdWNoICh0aGVyZSBpcyBhbG1vc3QgemVybyBv dGhlciB1c2FnZSBvZg0KPj4gbXVsdGktdHlwZS1pbnB1dCB0cmFuc2FjdGlvbnMpLCB3aGlj aCBpcyBhIHZlcnkgZGlmZmVyZW50IHRoaW5nIHRoYW4gYQ0KPj4gbm9uLWlkZW50aWZpYWJs ZSBwYXlqb2luIHRyYW5zYWN0aW9uLiBUaGF0IG1heSBvciBtYXkgbm90IGJlIE9LIHRvIHRo ZQ0KPj4gc2VuZGVyLiBUaGlzIGlzIGRlYmF0YWJsZSB0aG91Z2gsIGZvciBzdXJlLg0KPj4N Cj4+Pj4gQWZ0ZXIgYWRkaW5nIGlucHV0cyB0byB0aGUgdHJhbnNhY3Rpb24sIHRoZSByZWNl aXZlciBnZW5lcmFsbHkgd2lsbA0KPj4NCj4+IHdhbnQgdG8gYWRqdXN0IHRoZSBvdXRwdXQg dGhhdCBwYXlzIGhpbXNlbGYgYnkgaW5jcmVhc2luZyBpdCBieSB0aGUgc3VtDQo+PiBvZiB0 aGUgY29udHJpYnV0ZWQgaW5wdXQgYW1vdW50cyAobWludXMgYW55IGZlZXMgaGUgd2FudHMg dG8NCj4+IGNvbnRyaWJ1dGUpLiBIb3dldmVyIHRoZSBvbmx5IHN0cmljdCByZXF1aXJlbWVu dCBpcyB0aGF0IHRoZSByZWNlaXZlcg0KPj4gbXVzdCBuZXZlciBhZGQgb3IgcmVtb3ZlIGlu cHV0cywgYW5kIG11c3Qgbm90IGV2ZXIgZGVjcmVhc2UgYW55DQo+PiBvdXRwdXQgYW1vdW50 Lg0KPj4NCj4+ICJtdXN0IG5ldmVyIGFkZCBvciByZW1vdmUgaW5wdXRzIiAtIGRpZCB5b3Ug bWVhbiAibXVzdCBuZXZlciByZW1vdmUNCj4+IGlucHV0cyI/IGhlIHN1cmVseSBoYXMgdG8g YWRkIG9uZSEgT3IsIHBlcmhhcHMgeW91IG1lYW4gaGUgbXVzdCBub3QNCj4+IGFsdGVyIHRo ZSBsaXN0IG9mIGlucHV0cyBwcm92aWRlZCBieSB0aGUgc2VuZGVyIChpbiB3aGljaCBjYXNl IGl0IHNob3VsZA0KPj4gYmUgY2xhcmlmaWVkKS4NCj4+DQo+PiAibXVzdCBub3QgZGVjcmVh c2UgYW55IG91dHB1dCBhbW91bnQiIC0gSSBpbml0YWxseSBkaXNhZ3JlZWQgd2l0aCB0aGlz DQo+PiBidXQgaXQgaXMgYSBiZXR0ZXIgb3B0aW9uIHRoYW4gdGhlIG9uZSBJIGN1cnJlbnRs eSBjaG9zZSBpbiBKb2lubWFya2V0DQo+PiBwYXlqb2luIChzZW5kZXIgcGF5cyBhbGwgZmVl IGFzIGxvbmcgYXMgcmVjZWl2ZXIgdXR4b3MgYXJlIG5vdCB0b28NCj4+IG11Y2gpLiBTbyB0 aGlzIG1lYW5zIHRoYXQgdGhlIHJlY2VpdmVyIGVpdGhlciBjb25zY2lvdXNseSBjaG9vc2Vz IHRvIG5vdA0KPj4gaW5jcmVhc2UgdGhlIGZlZSwgbWVhbmluZyB0aGUgZmVlIHJhdGUgbWF5 IGJlIGEgYml0IGxvdyAoaGVuY2UgeW91cg0KPj4gZWFybGllciBjb21tZW50IGFib3V0IGJl aW5nIGdlbmVyb3VzLCBnb3QgaXQpLCBvciBjb250cmlidXRlcyB2aWEgdGhlDQo+PiBwYXlv dXQgYW1vdW50LiBJIGd1ZXNzIHRoZSBsYXR0ZXIgbWlnaHQgYnJlYWsgbWVyY2hhbnQgc29m dHdhcmUNCj4+IGV4cGVjdGluZyB0byBoYXZlIGFtb3VudCBvdXRwdXQgZml4ZWQgYW5kIGZl ZXMgZGV0ZXJtaW5lZCBieSBjaGFuZ2UuDQo+Pg0KPj4gUmVnYXJkcywNCj4+IEFkYW0gR2li c29uL3dheHdpbmcNCj4+DQo+PiBPbiAzMC4gMDguIDE4IDIyOjI0LCBSeWFuIEhhdmFyIHZp YSBiaXRjb2luLWRldiB3cm90ZToNCj4+DQo+Pj4gSSd2ZSBqdXN0IGZpbmlzaGVkIHdyaXRp bmcgYW4gaW1wbGVtZW50aW5nIG9mIHRoaXMsIGFuZCBleHRyZW1lbHkgaGFwcHkNCj4+PiB3 aXRoIGhvdyBpdCB0dXJuZWQgb3V0LiBTbyBJJ2QgbGlrZSB0byBnbyBhbmQgdHJ5IGdvIGRv d24gdGhlIHBhdGggb2YNCj4+PiBtb3JlIGZvcm1hbGx5IGRlc2NyaWJpbmcgaXQgYW5kIGdl dHRpbmcgc29tZSBjb21tZW50cyBhbmQgdWx0aW1hdGVseQ0KPj4+IGVuY291cmFnZSBpdHMg d2lkZS1zcHJlYWQgdXNlLg0KPj4+ID09QWJzdHJhY3Q9PQ0KPj4+IFRoZSB3YXkgYml0Y29p biB0cmFuc2FjdGlvbnMgYXJlIG92ZXJ3aGVsbWluZyB1c2VkIGlzIGtub3duIHRvIGxlYWsg bW9yZQ0KPj4+IGluZm9ybWF0aW9uIHRoYW4gZGVzaXJhYmxlLiBUaGlzIGhhcyBsZWFkIHRv IGZ1bmdpYmlsaXR5IGNvbmNlcm5zIGluIGJpdGNvaW4NCj4+PiBhbmQgYSByYWlzZSBvZiB1 bnJlYXNvbmFibHkgZWZmZWN0aXZlIGJsb2NrY2hhaW4gYW5hbHlzaXMuDQo+Pj4gQnVzdGFw YXkgcHJvcG9zZXMgYSBzaW1wbGUsIHByYWN0aWNhbCB3YXkgdG8gYnVzdCB0aGVzZSBhc3N1 bXB0aW9ucyB0bw0KPj4+IGltbWVkaWF0ZQ0KPj4+IGJlbmVmaXQgb2YgdGhlIHNlbmRlciBh bmQgcmVjaWV2ZXJzLiBGdXJ0aGVybW9yZSBpdCBkb2VzIHNvIGluIHN1Y2ggYQ0KPj4+IHdh eSB0aGF0DQo+Pj4gaGVscHMgcmVjaWV2ZXJzIGF2b2lkIHV0eG8gYmxvYXQsIGEgY29uc3Rh bnQgcHJvYmxlbSBmb3IgYml0Y29pbiBtZXJjaGFudHMuDQo+Pj4gPT1Db3B5cmlnaHQ9PQ0K Pj4+IFRoaXMgQklQIGlzIGluIHRoZSBwdWJsaWMgZG9tYWluLg0KPj4+ID09TW90aXZhdGlv bj09DQo+Pj4gT25lIG9mIHRoZSBtb3N0IHBvd2VyZnVsIGhldXJpc3RpYydzIGVtcGxveWVk IGJ5IHRob3NlIHdob3NlIGdvYWwgaXMgdG8NCj4+PiB1bmRlcm1pbmUNCj4+PiBiaXRjb2lu J3MgZnVuZ2libGl0eSBoYXMgYmVlbiB0byBhc3N1bWUgYWxsIGlucHV0cyBvZiBhIHRyYW5z YWN0aW9uIGFyZQ0KPj4+IHNpZ25lZCBieQ0KPj4+IGEgc2luZ2xlIHBhcnR5LiBJbiB0aGUg ZmV3IGNhc2VzIHRoaXMgYXNzdW1wdGlvbiBkb2VzIG5vdCBob2xkLCBpdCBpcw0KPj4+IGdl bmVyYWxseQ0KPj4+IHJlYWRpYmx5IHJlY29nbml6YWJsZSAoZS5nLiB0cmFkaXRpb25hbCBj b2luam9pbnMgaGF2ZSBhIHZlcnkgb2J2aW91cw0KPj4+IHN0cnVjdHVyZSwNCj4+PiBvciBt dWx0aXNpZyBvdXRwdXRzIGFyZSBtb3N0IGZyZXF1ZW50bHkgdmFsaWRhdGVkIG9uY2hhaW4p Lg0KPj4+IEJ1c3RhcGF5IHJlcXVpcmVzIG5vIGNoYW5nZXMgdG8gYml0Y29pbiBhbmQgY3Jl YXRlcyBiaXRjb2luIHRyYW5zYWN0aW9ucw0KPj4+IHRoYXQgYXJlDQo+Pj4gaW5kaXN0aW5n dWlzaGFibGUgZnJvbSBub3JtYWwgb25lcy4NCj4+PiBJdCBpcyB3b3J0aCBub3RpbmcgdGhh dCB0aGlzIHNwZWNpZmljYXRpb24gaGFzIGJlZW4gaW50ZW50aW9uYWxseSBrZXB0DQo+Pj4g YXMgc2ltcGxlDQo+Pj4gYXMgcG9zc2libGUgdG8gZW5jb3VyYWdlIGFkb3B0aW9uLiBUaGVy ZSBhcmUgYWxtb3N0IGFuIGVuZGxlc3MgYW1vdW50IG9mDQo+Pj4gZXh0ZW5zaW9ucw0KPj4+ IHBvc3NpYmxlIGJ1dCB0aGUgaGFyZGVyIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBjbGllbnRz L3NlcnZlciB0aGUgbGVzcw0KPj4+IGxpa2VseSBpdA0KPj4+IHdpbGwgZXZlciBiZSBkb25l LiBTaG91bGQgYnVzdGFwYXkgZW5qb3kgd2lkZXNwcmVhZCBhZG9wdGlvbiwgYSAidjIiDQo+ Pj4gc3BlY2lmaWNhdGlvbg0KPj4+IHdpbGwgYmUgY3JlYXRlZCB3aXRoIGRlc2lyZWQgZXh0 ZW5zaW9ucy4NCj4+PiA9PVNwZWNpZmljYXRpb249PQ0KPj4+IEEgYnVzdGFwYXkgcGF5bWVu dCBpcyBtYWRlIGZyb20gYSBzZW5kZXIgdG8gYSByZWNlaXZlci4NCj4+PiBTdGVwIDEuIFNl bmRlciBjcmVhdGVzIGEgYml0Y29pbiB0cmFuc2FjdGlvbiBwYXlpbmcgdGhlIHJlY2VpdmVy DQo+Pj4gVGhpcyB0cmFuc2FjdGlvbiBtdXN0IGJlIGZ1bGx5IHZhbGlkLCBzaWduZWQgYW5k IGFsbCBpbnB1dHMgbXVzdCB1c2UNCj4+PiBzZWd3aXQuIFRoaXMgdHJhbnNhY3Rpb24gaXMg a25vd24gYXMgdGhlICJ0ZW1wbGF0ZSB0cmFuc2FjdGlvbiIuIFRoaXMNCj4+PiB0cmFuc2Fj dGlvbiBtdXN0IG5vdCBiZSBwcm9wYWdhdGVkIG9uIHRoZSBiaXRjb2luIG5ldHdvcmsuDQo+ Pj4gU3RlcCAyLiBTZW5kZXIgZ2l2ZXMgdGhlICJ0ZW1wbGF0ZSB0cmFuc2FjdGlvbiIgdG8g dGhlIHJlY2VpdmVyDQo+Pj4gVGhpcyB3b3VsZCBnZW5lcmFsbHkgYmUgZG9uZSBhcyBhbiBI VFRQIFBPU1QuIFRoZSBleGFjdCBVUkwgdG8gc3VibWl0IGl0DQo+Pj4gdG8gY291bGQgYmUg c3BlY2lmaWVkIHdpdGggYSBiaXAyMSBlbmNvZGVkIGFkZHJlc3MuIFN1Y2ggYXMNCj4+PiBi aXRjb2luOjJOQUJiVXI5eWVSQ3Axb1VDdFZtZ0pGOEhHUkNvM2lmcFRUP2J1c3RhcGF5PWh0 dHBzOi8vYnAuYnVzdGFiaXQuY29tL3N1Ym1pdA0KPj4+IGFuZCB0aGUgSFRUUCBib2R5IHNo b3VsZCBiZSB0aGUgcmF3IHRyYW5zYWN0aW9uIGhleCBlbmNvZGVkIGFzIHRleHQuDQo+Pj4g U3RlcCAzLiBSZWNlaXZlciBwcm9jZXNzZXMgdGhlIHRyYW5zYWN0aW9uIGFuZCByZXR1cm5z IGEgcGFydGlhbGx5DQo+Pj4gc2lnbmVkIGNvaW5qb2luDQo+Pj4gVGhlIHJlY2VpdmVyIHZh bGlkYXRlcyB0aGUgdHJhbnNhY3Rpb24gaXMgdmFsaWQsIHBheXMgaGltc2VsZiBhbmQgaXMN Cj4+PiBlbGlnaWJsZSBmb3IgcHJvcGF0aW9uLiBUaGUgcmVjZWl2ZXIgdGhlbiBhZGRzIG9u ZSBvZiBoaXMgb3duIGlucHV0cw0KPj4+IChrbm93biBhcyB0aGUgImNvbnRyaWJ1dGVkIGlu cHV0IikgYW5kIGluY3JlYXNlIHRoZSBvdXRwdXQgdGhhdCBwYXlzDQo+Pj4gaGltc2VsZiBi eSB0aGUgY29udHJpYnV0ZWQgaW5wdXQgYW1vdW50LiBEb2luZyBzbyB3aWxsIGludmFsaWRh dGUgdGhlDQo+Pj4gInRlbXBsYXRlIHRyYW5zYWN0aW9uIidzIG9yaWdpbmFsIGlucHV0IHNp Z25hdHVyZXMsIHNvIHRoZSBzZW5kZXIgbmVlZHMNCj4+PiB0byByZXR1cm4gdGhpcyAicGFy dGlhbCB0cmFuc2FjdGlvbiIgYmFjayB0byB0aGUgcmVjZWl2ZXIgdG8gc2lnbi4gVGhpcw0K Pj4+IGlzIHJldHVybmVkIGFzIGEgaGV4LWVuY29kZWQgcmF3IHRyYW5zYWN0aW9uIGEgcmVz cG9uc2UgdG8gdGhlIG9yaWdpbmFsDQo+Pj4gSFRUUCBQT1NUIHJlcXVlc3QuDQo+Pj4gU3Rl cCA0LiBSZWNlaXZlciB2YWxpZGF0ZXMsIHJlLXNpZ25zLCBhbmQgcHJvcGFnYXRlcyBvbiB0 aGUgYml0Y29pbiBuZXR3b3JrDQo+Pj4gVGhlIHJlY2VpdmVyIGlzIHJlc3BvbnNpYmxlIGlu IG1ha2luZyBzdXJlIHRoZSAicGFydGlhbCB0cmFuc2FjdGlvbiINCj4+PiByZXR1cm5lZCBi eSB0aGUgc2VuZGVyIHdhcyBjaGFuZ2VkIGNvcnJlY3RseSAoaXQgc2hvdWxkIGFzc3VtZSB0 aGUNCj4+PiBjb25uZWN0aW9uIGhhcyBiZWVuIE1JVE0nZCBhbmQgYWN0IGFjY29yZGluZ2x5 KSwgcmVzaWduIGl0cyBvcmlnaW5hbA0KPj4+IGlucHV0cyBhbmQgcHJvcGFnYXRlcyB0aGlz IHRyYW5zYWN0aW9uIG92ZXIgdGhlIGJpdGNvaW4gbmV0d29yay4gVGhlDQo+Pj4gY2xpZW50 IG11c3QgYmUgYXdhcmUgdGhhdCB0aGUgc2VydmVyIGNhbiByZW9yZGVyIGlucHV0cyBhbmQg b3V0cHV0cy4NCj4+PiBTdGVwIDUuIFJlY2VpdmVyIG9ic2VydmVzIHRoZSBmaW5hbGl6ZWQg dHJhbnNhY3Rpb24gb24gdGhlIGJpdGNvaW4gbmV0d29yaw0KPj4+IE9uY2UgdGhlIHJlY2Vp dmVyIGhhcyBzZWVuIHRoZSBmaW5hbGl6ZWQgdHJhbnNhY3Rpb25zIG9uIHRoZSBuZXR3b3Jr DQo+Pj4gKGFuZCBoYXMgZW5vdWdoIGNvbmZpcm1hdGlvbnMpIGl0IGNhbiBwcm9jZXNzIGl0 IGxpa2UgYSBub3JtYWwgcGF5bWVudA0KPj4+IGZvciB0aGUgc2VudCBhbW91bnQgKGFzIG9w cG9zZWQgdG8gdGhlIGFtb3VudCB0aGF0IGl0IGxvb2tzIGxpa2Ugb24gdGhlDQo+Pj4gbmV0 d29yaykuIElmIHRoZSByZWNlaXZlciBkb2VzIG5vdCBzZWUgdGhlIGZpbmFsaXplZCB0cmFu c2FjdGlvbiBhZnRlciBhDQo+Pj4gdGltZW91dCB3aWxsIHByb3BhZ2F0ZSB0aGUgb3JpZ2lu YWwgInRlbXBsYXRlIHRyYW5zYWN0aW9uIiB0byBlbnN1cmUgdGhlDQo+Pj4gcGF5bWVudCBo YXBwZW5zIGFuZCBmdW5jdGlvbiBhIHN0cm9uZyBhbnRpLURvUyBtZWNoYW5pc20uDQo+Pj4g PT09IEltcGxlbWVudGF0aW9uIE5vdGVzID09PQ0KPj4+IEZvciBhbnlvbmUgd2FudGluZyB0 byBpbXBsZW1lbnQgYnVzdGFwYXkgcGF5bWVudHMsIGhlcmUgYXJlIHNvbWUgbm90ZXMNCj4+ PiBmb3IgcmVjZWl2ZXJzOg0KPj4+DQo+Pj4gLSAgIEEgdHJhbnNhY3Rpb24gY2FuIGVhc2ls eSBiZSBjaGVja2VkIGlmIGl0J3Mgc3VpdGFibGUgZm9yIHRoZSBtZW1wb29sDQo+Pj4gICAg IHdpdGggdGVzdG1lbXBvb2xhY2NlcHQgaW4gYml0Y29pbiBjb3JlIDAuMTcNCj4+Pg0KPj4+ IC0gICBUcmFja2luZyB0cmFuc2FjdGlvbnMgYnkgdHhpZCBpcyBwcmVjYXJpb3VzLiBUbyBr ZWVwIHlvdXIgc2FuaXR5IG1ha2UNCj4+PiAgICAgc3VyZSBhbGwgaW5wdXRzIGFyZSBzZWd3 aXQuIEJ1dCByZW1lbWJlciBzZWd3aXQgZG9lcyBub3QgcHJldmVudCB0eGlkDQo+Pj4gICAg IG1hbGxlYWJpbGl0eSB1bmxlc3MgeW91IHZhbGlkYXRlIHRoZSB0cmFuc2FjdGlvbi4gU28g cmVhbGx5IG1ha2Ugc3VyZQ0KPj4+ICAgICB5b3UncmUgdXNpbmcgdGVzdG1lbXBvb2xhY2Nl cHQgYXQgdGhlIHZlcnkgbGVhc3QNCj4+Pg0KPj4+IC0gICBCdXN0YXBheSBjb3VsZCBiZSBh YnVzZWQgYnkgYSBtYWxpY2lvdXMgcGFydHkgdG8gcXVlcnkgaWYgeW91IG93biBhDQo+Pj4g ICAgIGRlcG9zaXQgYWRkcmVzcyBvciBub3QuIFNvIG5ldmVyIGFjY2VwdCBhIGJ1c3RhcGF5 IHRyYW5zYWN0aW9uIHRoYXQgcGF5cw0KPj4+ICAgICBhbiBhbHJlYWR5IHVzZWQgZGVwb3Np dCBhZGRyZXNzDQo+Pj4NCj4+PiAtICAgWW91IHdpbGwgbmVlZCB0byBrZWVwIGEgbWFwcGlu ZyBvZiB3aGljaCB1dHhvcyBwZW9wbGUgaGF2ZSBzaG93ZWQgeW91DQo+Pj4gICAgIGFuZCB3 aGljaCB5b3UgcmV2ZWFsZWQuIFNvIGlmIHlvdSBzZWUgdGhlbSBhZ2FpbiwgeW91IGNhbiBy ZXZlYWwgdGhlDQo+Pj4gICAgIHNhbWUgb25lIG9mIHlvdXIgb3duDQo+Pj4NCj4+PiAtICAg Q2hlY2sgaWYgdGhlIHRyYW5zYWN0aW9uIHdhcyBhbHJlYWR5IHNvcnRlZCBhY2NvcmRpbmcg dG8gQklQNjksIGlmIHNvDQo+Pj4gICAgIGVuc3VyZSB0aGUgcmVzdWx0IHN0YXlzIHRoYXQg d2F5LiBPdGhlcndpc2UgcHJvYmFibHkganVzdCBzaHVmZmxlIHRoZQ0KPj4+ICAgICBpbnB1 dHMvb3V0cHVzDQo+Pj4NCj4+Pg0KPj4+IE5vdGVzIGZvciBzZW5kaW5nIGFwcGxpY2F0aW9u czoNCj4+Pg0KPj4+IC0gICBUaGUgSFRUUCByZXNwb25zZSBtdXN0IG5vdCBiZSB0cnVzdGVk LiBJdCBzaG91bGQgYmUgZnVsbHkgdmFsaWRhdGVkDQo+Pj4gICAgIHRoYXQgbm8gdW5leHBl Y3RlZCBjaGFuZ2VzIGhhdmUgYmVlbiBtYWRlIHRvIHRoZSB0cmFuc2FjdGlvbi4NCj4+Pg0K Pj4+IC0gICBUaGUgc2VuZGVyIHNob3VsZCBiZSBhd2FyZSB0aGUgb3JpZ2luYWwgInRlbXBs YXRlIHRyYW5zYWN0aW9uIiBtYXkgYmUNCj4+PiAgICAgcHJvcGFnYXRlZCBhdCBhbnkgdGlt ZSwgYW5kIGluIGZhY3QgY2FuIGludGVudGlvbmFsbHkgYmUNCj4+PiAgICAgwqAgZG9uZSBz byBmb3IgdGhlIHB1cnBvc2Ugb2YgUkJGIGFzIGl0IHNob3VsZCBoYXZlIGEgc2xpZ2h0bHkg aGlnaGVyIGZlZQ0KPj4+ICAgICByYXRlLg0KPj4+DQo+Pj4NCj4+PiA9PSBDcmVkaXRzID09 DQo+Pj4gVGhlIGlkZWEgaXMgb2J2aW91c2x5IGJhc2VkIHVwb24gRHIuIE1heHdlbGwncyBz ZW1pbmFsIENvaW5Kb2luDQo+Pj4gcHJvcG9zYWwsIGFuZCByZWR1Y2VkIHNjb3BlIGluc3Bp cmVkIGJ5IGEgc2ltcGxpZmljYXRpb24gb2YgdGhlICJwYXkgMg0KPj4+IGVuZHBvaW50IiAo bm93IG9mZmxpbmUpIGJsb2cgcG9zdCBieSBibG9ja3N0cmVhbS4NCj4+PiAtUnlhbg0KPj4+ DQo+Pj4gYml0Y29pbi1kZXYgbWFpbGluZyBsaXN0DQo+Pj4gYml0Y29pbi1kZXZAbGlzdHMu bGludXhmb3VuZGF0aW9uLm9yZw0KPj4+IGh0dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9u Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2JpdGNvaW4tZGV2DQo+Pg0KPj4gYml0Y29pbi1kZXYg bWFpbGluZyBsaXN0DQo+PiBiaXRjb2luLWRldkBsaXN0cy5saW51eGZvdW5kYXRpb24ub3Jn DQo+PiBodHRwczovL2xpc3RzLmxpbnV4Zm91bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5m by9iaXRjb2luLWRldg0KPiANCj4gDQo=