Return-Path: Received: from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by lists.linuxfoundation.org (Postfix) with ESMTP id 86150C002A for ; Mon, 1 May 2023 14:18:46 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 544F140491 for ; Mon, 1 May 2023 14:18:46 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 544F140491 Authentication-Results: smtp2.osuosl.org; dkim=pass (2048-bit key) header.d=protonmail.com header.i=@protonmail.com header.a=rsa-sha256 header.s=protonmail3 header.b=g1fyv3xd X-Virus-Scanned: amavisd-new at osuosl.org X-Spam-Flag: NO X-Spam-Score: -2.101 X-Spam-Level: X-Spam-Status: No, score=-2.101 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id fMU632MaiakT for ; Mon, 1 May 2023 14:18:44 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 835CB400CC Received: from mail-4322.protonmail.ch (mail-4322.protonmail.ch [185.70.43.22]) by smtp2.osuosl.org (Postfix) with ESMTPS id 835CB400CC for ; Mon, 1 May 2023 14:18:43 +0000 (UTC) Date: Mon, 01 May 2023 14:18:29 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1682950719; x=1683209919; bh=7Wy8+J3H1sSsPVjt5XSN8rfmKPuXGsZNZdIvcdO1Nt4=; h=Date:To:From:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=g1fyv3xd0/00h+8ZlR5YPCNtJyDddYHEGSGPmFO3Zdma/hEoLFU7I0LIO6luQgL/Q cRz2qhz3P0QPJqVRQRRu8g2Vdu8J8hE/HAqVsj+wDe3pFVUCJv19jowiquxXegyUvX 70zdPCqVcOtzoNJ/Ih4oExJ+o1C4x8DO5CfCE4BrLeKnidzfWRKdHW916UAqf5UCXD Zkc3uvnMWE6ofwsQrgWjBdDNj5NXP9QoUARWNvbJJHPPv59SVzvn2C+uRflFDcnzNp jALvFkxZKL7NgV1p3HWytyNk/xb7ZPysxRDa7LVvgb53+AKhtuCJhc4SiOD8BATK7G d2Zj6n/r2Xxdw== To: Salvatore Ingala , Bitcoin Protocol Discussion From: Michael Folkson Message-ID: <2ApImRS_OSlctWlRLsNykOYE9Z2nEfg8-IUooIluZG2MAVrY9F5oHYi5LBXN7q5QxB2_sLPIVgV-MOUBMEc451HTpPyPdrvog9jPjBpTZ5E=@protonmail.com> In-Reply-To: References: Feedback-ID: 27732268:user:proton MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="b1_Q581qU1RY6fcpVI05uu0KPWhScRcexk5WHyMBmG2U" X-Mailman-Approved-At: Mon, 01 May 2023 14:37:13 +0000 Subject: Re: [bitcoin-dev] Vaults in the MATT framework X-BeenThere: bitcoin-dev@lists.linuxfoundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Bitcoin Protocol Discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 May 2023 14:18:46 -0000 This is a multi-part message in MIME format. --b1_Q581qU1RY6fcpVI05uu0KPWhScRcexk5WHyMBmG2U Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 SGkgU2FsdmF0b3JlCgpDYW4geW91IGNsYXJpZnkgZm9yIG1lIHdoaWNoIGJ1Y2tldCB0aGlzIHBy b3Bvc2FsIHNpdHM/IFdlIGhhdmUgQVBPLCBDVFYsIE9QX1ZBVUxUIGV0YyB0aGF0IGFyZSBwcm9w b3NhbHMgdG8gYWRkIGFkZGl0aW9uYWwgZnVuY3Rpb25hbGl0eSB0byBTZWdXaXQgdmVyc2lvbiAx LCBUYXBsZWFmIHZlcnNpb24gMCBzY3JpcHRzLiBXZSBoYXZlIFNpbXBsaWNpdHkgdGhhdCB3b3Vs ZCBuZWVkIGEgbmV3IFRhcGxlYWYgdmVyc2lvbiAoZS5nLiBUYXBsZWFmIHZlcnNpb24gMSkuIEFu ZCB0aGVuIHRoZXJlIGFyZSBDSVNBIGxpa2UgcHJvcG9zYWxzIHRoYXQgd291bGQgbmVlZCBhIG5l dyBTZWdXaXQgdmVyc2lvbiAoZS5nLiBTZWdXaXQgdmVyc2lvbiAyKS4gSXQgbG9va3MgdG8gbWUg bGlrZSB5b3VyIHByb3Bvc2FsIGlzIGluIHRoZSBmaXJzdCBidWNrZXQgKHNhbWUgYXMgQVBPLCBD VFYgZXRjKSBhcyBpdCBpcyBqdXN0IGludHJvZHVjaW5nIG5ldyBvcGNvZGUgZnVuY3Rpb25hbGl0 eSB0byBleGlzdGluZyBzY3JpcHQgd2l0aCBubyBkZWVwZXIgaW50cm9zcGVjdGlvbiBuZWVkZWQg YnV0IHByZXZpb3VzIGFuZCBjdXJyZW50IGRpc2N1c3Npb24gb2YgZnJhdWQgcHJvb2ZzLCBNQVRU IGZyYW1ld29ya3MgZXRjIG1hZGUgbWUgaW5pdGlhbGx5IHRoaW5rIGl0IHdhcyBnb2luZyB0byBy ZXF1aXJlIG1vcmUgdGhhbiB0aGF0LgoKVGhhbmtzCk1pY2hhZWwKCi0tCk1pY2hhZWwgRm9sa3Nv bgpFbWFpbDogbWljaGFlbGZvbGtzb24gYXQgW3Byb3Rvbm1haWwuY29tXShodHRwOi8vcHJvdG9u bWFpbC5jb20vKQpHUEc6IEEyQ0Y1RDcxNjAzQzkyMDEwNjU5ODE4RDJBNzVENjAxQjIzRkVFMEYK CkxlYXJuIGFib3V0IEJpdGNvaW46IGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL0Bwb3J0b2ZiaXRj b2luCgotLS0tLS0tIE9yaWdpbmFsIE1lc3NhZ2UgLS0tLS0tLQpPbiBNb25kYXksIEFwcmlsIDI0 dGgsIDIwMjMgYXQgMjA6MzcsIFNhbHZhdG9yZSBJbmdhbGEgdmlhIGJpdGNvaW4tZGV2IDxiaXRj b2luLWRldkBsaXN0cy5saW51eGZvdW5kYXRpb24ub3JnPiB3cm90ZToKCj4gSGVsbG8gbGlzdCwK Pgo+IFRMO0RSOiB0aGUgY29yZSBvcGNvZGVzIG9mIE1BVFQgY2FuIGJ1aWxkIHZhdWx0cyB3aXRo IGEgdmVyeSBzaW1pbGFyIGRlc2lnbgo+IHRvIE9QX1ZBVUxULiBDb2RlIGV4YW1wbGUgaGVyZToK Pgo+IGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luLWlucXVpc2l0aW9uL2JpdGNvaW4vY29tcGFy ZS8yNC4wLi4uYmlnc3BpZGVyOmJpdGNvaW4taW5xdWlzaXRpb246bWF0dC12YXVsdAo+Cj4gSW4g bXkgcHJldmlvdXMgZW1haWxzIGFib3V0IHRoZSBNQVRUIHByb3Bvc2FsIGZvciBzbWFydCBjb250 cmFjdHMgaW4KPiBiaXRjb2luIFsxXSwgSSBtb3N0bHkgZm9jdXNlZCBvbiBwcm92aW5nIGl0cyBn ZW5lcmFsaXR5OyB0aGF0IGlzLCBpdAo+IGFsbG93cyBhcmJpdHJhcnkgc21hcnQgY29udHJhY3Rz IHRoYW5rcyB0byBmcmF1ZCBwcm9vZnMuCj4KPiBXaGlsZSBJIHN0aWxsIGZpbmQgdGhpcyAiY29t cGxldGVuZXNzIiByZXN1bHQgY29tcGVsbGluZywgSSBzcGVudCBtb3JlIHRpbWUKPiB0aGlua2lu ZyBhYm91dCB0aGUgZnJhbWV3b3JrIGl0c2VsZjsgdGhlIGNvbnN0cnVjdGlvbiBpcyBub3QgdmVy eSBpbnRlcmVzdGluZwo+IGlmIGl0IHR1cm5zIHNpbXBsZSB0aGluZ3MgaW50byBjb21wbGljYXRl ZCBvbmVzLiBMdWNraWx5LCB0aGlzIGlzIG5vdCB0aGUgY2FzZS4KPiBJbiBwYXJ0aWN1bGFyLCBp biB0aGlzIGVtYWlsIHdlIHdpbGwgbm90IG1lcmtsZWl6ZSBhbnl0aGluZyAob3RoZXIgdGhhbiB0 YXB0cmVlcykuCj4KPiBUaGlzIHBvc3QgZGVzY3JpYmVzIHNvbWUgcHJvZ3Jlc3MgaW50byBmb3Jt YWxpemluZyB0aGUgc2VtYW50aWNzIG9mIHRoZSBjb3JlCj4gb3Bjb2RlcywgYW5kIGRlbW9uc3Ry YXRlcyBob3cgdGhleSBjb3VsZCBiZSB1c2VkIHRvIGNyZWF0ZSB2YXVsdHMgdGhhdCBzZWVtCj4g Y29tcGFyYWJsZSB0byB0aGUgb25lcyBidWlsdCB3aXRoIE9QX1ZBVUxUIFsyXSwgZGVzcGl0ZSB1 c2luZyBnZW5lcmFsIHB1cnBvc2UKPiBvcGNvZGVzLgo+Cj4gQW4gaW1wbGVtZW50YXRpb24gYW5k IHNvbWUgbWluaW1hbCB0ZXN0cyBtYXRjaGluZyB0aGUgY29udGVudCBvZiB0aGlzCj4gZS1tYWls IGNhbiBiZSBmb3VuZCBpbiB0aGUgbGluayBhYm92ZSwgdXNpbmcgdGhlIGJpdGNvaW4taW5xdWlz aXRpb24gYXMgdGhlCj4gYmFzZSBicmFuY2guCj4KPiBOb3RlIHRoYXQgdGhlIGxpbmtlZCBjb2Rl IGlzIG5vdCB3ZWxsIHRlc3RlZCBhbmQgaXMgb25seSBpbnRlbmRlZCBmb3IKPiBleHBsb3JhdG9y eSBhbmQgZGVtb25zdHJhdGl2ZSBwdXJwb3NlczsgdGhlcmVmb3JlLCBidWdzIGFyZSBsaWtlbHkg YXQgdGhpcwo+IHN0YWdlLgo+Cj4gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiAjIFBBUlQg MTogTUFUVCdzIGNvcmUKPiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+Cj4gSW4gdGhpcyBz ZWN0aW9uLCBJIHdpbGwgZGlzY3VzcyBwbGF1c2libGUgc2VtYW50aWNzIGZvciB0aGUgY29yZSBv cGNvZGVzIGZvciBNQVRULgo+Cj4gVGhlIHR3byBjb3JlIG9wY29kZXMgYXJlIGRlZmluZWQgYmVs b3cgYXMgT1BfQ0hFQ0tJTlBVVENPTlRSQUNUVkVSSUZZIGFuZAo+IE9QX0NIRUNLT1VUUFVUQ09O VFJBQ1RWRVJJRlkuCj4KPiAodGhlIGluaXRpYWwgcG9zdHMgbmFtZWQgdGhlbSBPUF9DSEVDS3tJ TlBVVCxPVVRQVVR9Q09WRU5BTlRWRVJJRlkpCj4KPiBUaGV5IGVuaGFuY2UgU2NyaXB0IHdpdGgg dGhlIGZvbGxvd2luZyBjYXBhYmlsaXRpZXM6Cj4gLSBkZWNpZGUgdGhlIHRhcHRyZWUgb2YgdGhl IG91dHB1dAo+IC0gZW1iZWQgc29tZSAoZHluYW1pY2FsbHkgY29tcHV0ZWQpIGRhdGEgaW4gdGhl IG91dHB1dAo+IC0gYWNjZXNzIHRoZSBlbWJlZGRlZCBkYXRhIGluIHRoZSBjdXJyZW50IFVUWE8g KGlmIGFueSkKPgo+IFRoZSBvcGNvZGVzIGJlbG93IGFyZSBpbmNvbXBsZXRlLCBhcyB0aGV5IG9u bHkgY29udHJvbCB0aGUgb3V0cHV0J3MgU2NyaXB0IGFuZAo+IG5vdCB0aGUgYW1vdW50czsgbW9y ZSBvbiB0aGF0IGJlbG93Lgo+Cj4gT3RoZXIgdGhhbiB0aGF0LCB0aGUgc2VtYW50aWNzIHNob3Vs ZCBiZSBxdWl0ZSBjbG9zZSB0byB0aGUgInJpZ2h0IiBvbmUgZm9yCj4gdGhlIE1BVFQgZnJhbWV3 b3JrLgo+Cj4gIyMjIFRoZSBvcGNvZGVzCj4KPiBjYXNlIE9QX0NIRUNLSU5QVVRDT05UUkFDVFZF UklGWToKPiB7Cj4gLy8gT1BfQ0hFQ0tJTlBVVENPTlRSQUNUVkVSSUZZIGlzIG9ubHkgYXZhaWxh YmxlIGluIFRhcHNjcmlwdAo+IGlmIChzaWd2ZXJzaW9uID09IFNpZ1ZlcnNpb246OkJBU0UgfHwg c2lndmVyc2lvbiA9PSBTaWdWZXJzaW9uOjpXSVRORVNTX1YwKSByZXR1cm4gc2V0X2Vycm9yKHNl cnJvciwgU0NSSVBUX0VSUl9CQURfT1BDT0RFKTsKPiAvLyAoeCBkIC0tICkKPiBpZiAoc3RhY2su c2l6ZSgpIDwgMikKPiByZXR1cm4gc2V0X2Vycm9yKHNlcnJvciwgU0NSSVBUX0VSUl9JTlZBTElE X1NUQUNLX09QRVJBVElPTik7Cj4gdmFsdHlwZSYgeCA9IHN0YWNrdG9wKC0yKTsKPiB2YWx0eXBl JiBkID0gc3RhY2t0b3AoLTEpOwo+IGlmICh4LnNpemUoKSAhPSAzMiB8fCBkLnNpemUoKSAhPSAz MikKPiByZXR1cm4gc2V0X2Vycm9yKHNlcnJvciwgU0NSSVBUX0VSUl9JTlZBTElEX1NUQUNLX09Q RVJBVElPTik7Cj4gY29uc3QgWE9ubHlQdWJLZXkgbmFrZWRYT25seUtleXtTcGFuPGNvbnN0IHVu c2lnbmVkIGNoYXI+e3guZGF0YSgpLCB4LmRhdGEoKSArIDMyfX07Cj4gY29uc3QgdWludDI1NiBk YXRhKGQpOwo+IGlmICghZXhlY2RhdGEubV9pbnRlcm5hbF9rZXkuaGFzX3ZhbHVlKCkpCj4gcmV0 dXJuIHNldF9lcnJvcihzZXJyb3IsIFNDUklQVF9FUlJfVU5LTk9XTl9FUlJPUik7IC8vIFRPRE8K PiAvLyBWZXJpZnkgdGhhdCB0d2VhayhsaWZ0X3goeCksIGQpIGVxdWFscyB0aGUgaW50ZXJuYWwg cHVia2V5Cj4gaWYgKCFleGVjZGF0YS5tX2ludGVybmFsX2tleS52YWx1ZSgpLkNoZWNrRG91Ymxl VHdlYWsobmFrZWRYT25seUtleSwgJmRhdGEsIG51bGxwdHIpKQo+IHJldHVybiBzZXRfZXJyb3Io c2Vycm9yLCBTQ1JJUFRfRVJSX1dST05HQ09OVFJBQ1REQVRBKTsKPiBwb3BzdGFjayhzdGFjayk7 Cj4gcG9wc3RhY2soc3RhY2spOwo+IH0KPiBicmVhazsKPiBjYXNlIE9QX0NIRUNLT1VUUFVUQ09O VFJBQ1RWRVJJRlk6Cj4gewo+IC8vIE9QX0NIRUNLT1VUUFVUQ09OVFJBQ1RWRVJJRlkgaXMgb25s eSBhdmFpbGFibGUgaW4gVGFwc2NyaXB0Cj4gaWYgKHNpZ3ZlcnNpb24gPT0gU2lnVmVyc2lvbjo6 QkFTRSB8fCBzaWd2ZXJzaW9uID09IFNpZ1ZlcnNpb246OldJVE5FU1NfVjApIHJldHVybiBzZXRf ZXJyb3Ioc2Vycm9yLCBTQ1JJUFRfRVJSX0JBRF9PUENPREUpOwo+IC8vIChvdXRfaSB4IHRhcHRy ZWUgZCAtLSApCj4gaWYgKHN0YWNrLnNpemUoKSA8IDQpCj4gcmV0dXJuIHNldF9lcnJvcihzZXJy b3IsIFNDUklQVF9FUlJfSU5WQUxJRF9TVEFDS19PUEVSQVRJT04pOwo+IGludCBvdXRfaSA9IENT Y3JpcHROdW0oc3RhY2t0b3AoLTQpLCBmUmVxdWlyZU1pbmltYWwpLmdldGludCgpOwo+IHZhbHR5 cGUmIHggPSBzdGFja3RvcCgtMyk7Cj4gdmFsdHlwZSYgdGFwdHJlZSA9IHN0YWNrdG9wKC0yKTsK PiB2YWx0eXBlJiBkID0gc3RhY2t0b3AoLTEpOwo+IGF1dG8gb3V0cHMgPSBjaGVja2VyLkdldFR4 dk91dCgpOwo+IC8vIFJldHVybiBlcnJvciBpZiB0aGUgZXZhbHVhdGlvbiBjb250ZXh0IGlzIHVu YXZhaWxhYmxlCj4gaWYgKCFvdXRwcykKPiByZXR1cm4gc2V0X2Vycm9yKHNlcnJvciwgU0NSSVBU X0VSUl9VTktOT1dOX0VSUk9SKTsgLy8gVE9ETwo+IGlmICh4LnNpemUoKSAhPSAzMiB8fCB0YXB0 cmVlLnNpemUoKSAhPSAzMiB8fCAoZC5zaXplKCkgIT0gMCAmJiBkLnNpemUoKSAhPSAzMikpCj4g cmV0dXJuIHNldF9lcnJvcihzZXJyb3IsIFNDUklQVF9FUlJfSU5WQUxJRF9TVEFDS19PUEVSQVRJ T04pOwo+IGlmIChvdXRfaSA8IDAgfHwgb3V0X2kgPj0gKGludClvdXRwcy0+c2l6ZSgpKQo+IHJl dHVybiBzZXRfZXJyb3Ioc2Vycm9yLCBTQ1JJUFRfRVJSX0lOVkFMSURfU1RBQ0tfT1BFUkFUSU9O KTsKPiBjb25zdCBYT25seVB1YktleSBuYWtlZFhPbmx5S2V5e1NwYW48Y29uc3QgdW5zaWduZWQg Y2hhcj57eC5kYXRhKCksIHguZGF0YSgpICsgMzJ9fTsKPiBjb25zdCB1aW50MjU2IGRhdGEoZCk7 Cj4gY29uc3QgdWludDI1NiAqZGF0YV9wdHIgPSAoZC5zaXplKCkgPT0gMCA/IG51bGxwdHIgOiAm ZGF0YSk7Cj4gY29uc3QgdWludDI1NiBtZXJrbGVfdHJlZSh0YXB0cmVlKTsKPiBDU2NyaXB0IHNj cmlwdFB1YktleSA9IG91dHBzLT5hdChvdXRfaSkuc2NyaXB0UHViS2V5Owo+IGlmIChzY3JpcHRQ dWJLZXkuc2l6ZSgpICE9IDEgKyAxICsgMzIgfHwgc2NyaXB0UHViS2V5WzBdICE9IE9QXzEgfHwg c2NyaXB0UHViS2V5WzFdICE9IDMyKQo+IHJldHVybiBzZXRfZXJyb3Ioc2Vycm9yLCBTQ1JJUFRf RVJSX1dST05HQ09OVFJBQ1REQVRBKTsKPiBjb25zdCBYT25seVB1YktleSBvdXRwdXRYT25seUtl eXtTcGFuPGNvbnN0IHVuc2lnbmVkIGNoYXI+e3NjcmlwdFB1YktleS5kYXRhKCkgKyAyLCBzY3Jp cHRQdWJLZXkuZGF0YSgpICsgMzR9fTsKPiAvLyBWZXJpZnkgdGhhdCB0YXB0d2Vhayh0d2Vhayhs aWZ0X3goeCksIGQpLCB0YXB0cmVlKSBlcXVhbHMgdGhlIGludGVybmFsIHB1YmtleQo+IGlmICgh b3V0cHV0WE9ubHlLZXkuQ2hlY2tEb3VibGVUd2VhayhuYWtlZFhPbmx5S2V5LCBkYXRhX3B0ciwg Jm1lcmtsZV90cmVlKSkKPiByZXR1cm4gc2V0X2Vycm9yKHNlcnJvciwgU0NSSVBUX0VSUl9XUk9O R0NPTlRSQUNUREFUQSk7Cj4gcG9wc3RhY2soc3RhY2spOwo+IHBvcHN0YWNrKHN0YWNrKTsKPiBw b3BzdGFjayhzdGFjayk7Cj4gcG9wc3RhY2soc3RhY2spOwo+IH0KPiBicmVhazsKPgo+ICMjIyBD b21tZW50YXJ5Cj4KPiBDaGVja0RvdWJsZVR3ZWFrIGZ1bmN0aW9uIChpbXBsZW1lbnRlZCBpbiB0 aGUgYnJhbmNoKSBnZXRzIGFuIHgtb25seSBwdWJrZXksCj4gb3B0aW9uYWxseSBzb21lIGRhdGEs IGFuZCBvcHRpb25hbGx5IHRhcHRyZWUncyBtZXJrbGUgcm9vdC4KPiBJdCB2ZXJpZmllcyB0aGF0 IHRoZSB4LW9ubHkgcHVia2V5IGJlaW5nIHRlc3RlZCBlcXVhbHMgdGhlIGdpdmVuIG5ha2VkIHB1 YmtleSwKPiBvcHRpb25hbGx5IHR3ZWFrZWQgd2l0aCB0aGUgZW1iZWRkZWQgZGF0YSwgb3B0aW9u YWxseSB0d2Vha2VkIHdpdGggdGhlIHRhZ2dlZAo+IGhhc2ggb2YgdGhlIG1lcmtsZSB0cmVlIHBl ciBCSVAtMDM0MSBbM10uCj4gTWFraW5nIGJvdGggdGhlIHR3ZWFrcyBvcHRpb25hbCBhbGxvd3Mg dG8gc2ltcGxpZnkgdGhlIGNvZGUsIGFuZCBhbHNvIHRvIG9idGFpbgo+IG1vcmUgY29tcGFjdCBz Y3JpcHRzIGluIHNvbWUgc3BlbmRpbmcgcGF0aHMuCj4KPiBJbiB3b3JkczoKPgo+IC0gT1BfQ0hF Q0tJTlBVVENPTlRSQUNUVkVSSUZZOiB2ZXJpZnkgdGhhdCB0aGUgY3VycmVudCBpbnB1dCdzIGlu dGVybmFsIGtleQo+IGNvbnRhaW5zIHNvbWUgZW1iZWRkZWQgZGF0YSAod2hpY2ggd291bGQgdHlw aWNhbGx5IGJlIHBhc3NlZCB0aHJvdWdoIHRoZQo+IHdpdG5lc3Mgc3RhY2spCj4gLSBPUF9DSEVD S09VVFBVVENPTlRSQUNUVkVSSUZZOiB2ZXJpZnkgdGhhdCBhIGdpdmVuIG91dHB1dCBpcyBhIGNl cnRhaW4gUDJUUgo+IG91dHB1dCBzY3JpcHQgY29udGFpbmluZyB0aGUgZGVzaXJlZCBlbWJlZGRl ZCBkYXRhLgo+Cj4gVEJEIGlmIHRoZSB0d2Vha2luZyB1c2VkIGZvciB0aGUgZW1iZWRkZWQgZGF0 YSB0d2VhayBzaG91bGQgdXNlIGEgdGFnZ2VkIGhhc2g7Cj4gb21pdHRlZCBmb3Igc2ltcGxpY2l0 eSBpbiB0aGlzIGRlbW8gaW1wbGVtZW50YXRpb24uCj4KPiAjIyMgQW1vdW50IHByZXNlcnZhdGlv bgo+Cj4gSW4gdGhlIGNvZGUgYWJvdmUgYW5kIGluIHRoZSBsaW5rZWQgZGVtbyBpbXBsZW1lbnRh dGlvbiwgdGhlIG9wY29kZXMgb25seQo+IG9wZXJhdGUgb24gdGhlIHNjcmlwdFB1YmtleTsgYSBj b21wbGV0ZSBpbXBsZW1lbnRhdGlvbiB3b3VsZCB3YW50IHRvIG1ha2Ugc3VyZQo+IHRoYXQgYW1v dW50cyBhcmUgY29ycmVjdGx5IHByZXNlcnZlZC4KPgo+IFRoZSBtb3N0IGRpcmVjdCBhbmQgZ2Vu ZXJhbCB3YXkgdG8gYWRkcmVzcyB0aGlzIHdvdWxkIGJlIHRvIGFsbG93IGRpcmVjdAo+IGludHJv c3BlY3Rpb24gb24gdGhlIG91dHB1dCBhbW91bnRzLiBUaGlzIGhhcyB0aGUgY29tcGxpY2F0aW9u IHRoYXQgb3V0cHV0Cj4gYW1vdW50cyByZXF1aXJlIDY0LWJpdHMgYXJpdGhtZXRpY3MsIGFzIGRp c2N1c3NlZCBpbiB0aGUgY29udGV4dCBvZiBvdGhlcgo+IHByb3Bvc2FscywgZm9yIGV4YW1wbGU6 IFs0XS4KPgo+IE9uZSBtb3JlIGxpbWl0ZWQgYXBwcm9hY2ggdGhhdCB3b3JrcyB3ZWxsIGZvciBt YW55IGludGVyZXN0aW5nIGNvbnRyYWN0cwo+IGlzIHRoYXQgb2YgdGhlIGRlZmVycmVkIGNoZWNr cywgaW1wbGVtZW50ZWQgaW4gT1BfVkFVTFQgWzJdLgo+IFRoZSBpZGVhIGlzIHRoYXQgYWxsIHRo ZSBhbW91bnRzIG9mIHRoZSBpbnB1dHMgdGhhdCBjb21taXQgdG8gdGhlIHNhbWUgb3V0cHV0Cj4g c2NyaXB0IHdpdGggT1BfQ0hFQ0tPVVRQVVRDT05UUkFDVFZFUklGWSBhcmUgYWRkZWQgdG9nZXRo ZXIsIGFuZCB0aGUgc2NyaXB0Cj4gaW50ZXJwcmV0ZXIgcmVxdWlyZXMgdGhhdCB0aGUgYW1vdW50 IG9mIHRoYXQgb3V0cHV0IGlzIG5vdCBzbWFsbGVyIHRoYW4gdGhlCj4gdG90YWwgYW1vdW50IG9m IHRob3NlIGlucHV0cy4gVGhpcyBjaGVjayBpcyB0aGVyZWZvcmUgdHJhbnNhY3Rpb24td2lkZSBy YXRoZXIKPiB0aGFuIGJlaW5nIHRlc3RlZCBkdXJpbmcgdGhlIGlucHV0J3Mgc2NyaXB0IGV2YWx1 YXRpb24uCj4KPiBUaGlzIGJlaGF2aW91ciBpcyBhZGVxdWF0ZSBmb3IgdmF1bHRzIGFuZCBsaWtl bHkgc3VpdGFibGUgZm9yIG1hbnkgb3RoZXIKPiBhcHBsaWNhdGlvbnM7IGhvd2V2ZXIsIGl0J3Mg bm90IHRoZSBtb3N0IGdlbmVyYWwgYXBwcm9hY2guIEkgZGlkbid0IHRyeSB0bwo+IGltcGxlbWVu dCBpdCB5ZXQsIGFuZCBkZWZlciB0aGUgZGVjaXNpb24gb24gdGhlIGJlc3QgYXBwcm9hY2ggdG8g YSBsYXRlciB0aW1lLgo+Cj4gIyMjIEV4dGVuc2lvbnMKPgo+IFRoZSBvcGNvZGVzIGFib3ZlIGFy ZSBub3QgZW5vdWdoIGZvciB0aGUgZnVsbCBnZW5lcmFsaXR5IG9mIE1BVFQ6IG9uZSB3b3VsZAo+ IG5lZWQgdG8gYWRkIGFuIG9wY29kZSBsaWtlIE9QX1NIQTI1NkNBVCB0byBhbGxvdyB0aGUgZGF0 YSBlbWJlZGRpbmcgdG8gY29tbWl0Cj4gdG8gbXVsdGlwbGUgcGllY2VzIG9mIGRhdGEuCj4gVGhp cyBpcyBub3QgdXNlZCBpbiB0b2RheSdzIHBvc3QsIHRoZXJlZm9yZSBJIGxlZnQgaXQgb3V0IG9m IHRoZXNlIGNvZGUgZXhhbXBsZXMuCj4KPiBJdCB3b3VsZCBiZSBlYXN5IHRvIGV4dGVuZCBPUF9D SEVDS09VVFBVVENPTlRSQUNUVkVSSUZZIHRvIGFsc28gYXBwbHkgZm9yCj4gYW4gYXJiaXRyYXJ5 IGlucHV0ICh0eXBpY2FsbHksIGRpZmZlcmVudCBmcm9tIHRoZSBjdXJyZW50bHkgZXhlY3V0ZWQg b25lKTsgdGhlcmUKPiBhcmUgbGlrZWx5IHVzZSBjYXNlcyBmb3IgdGhhdCwgYWxsb3dpbmcgdG8g ZGVmaW5lIGNvbnRyYWN0cyB3aXRoIG1vcmUgY29tcGxleAo+IGNyb3NzLWlucHV0IHNlbWFudGlj cywgYnV0IEkgcHJlZmVycmVkIHRvIGtlZXAgdGhpbmdzIHNpbXBsZS4KPgo+IE9mIGNvdXJzZSwg b25lIGNvdWxkIGFsc28gZW50aXJlbHkgcmVwbGFjZSBDSUNWL0NPQ1Ygd2l0aCBnZW5lcmljIGZ1 bGwKPiBpbnRyb3NwZWN0aW9uIG9uIGlucHV0cy9vdXRwdXQncyBwcm9ncmFtLCBwbHVzIG9wY29k ZXMgZm9yIGVsbGlwdGljIGN1cnZlIG1hdGgKPiBhbmQgdGFnZ2VkIGhhc2hlcy4KPgo+ICMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gIyBQQVJUIDI6IFZhdWx0cyB3aXRoIE1BVFQKPiAjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+Cj4gSW4gdGhlIHJlc3Qgb2YgdGhpcyBwb3N0LCBJIHdp bGwgZG9jdW1lbnQgdGhlIGZpcnN0IGF0dGVtcHQgYXQgY3JlYXRpbmcgYSB2YXVsdAo+IHVzaW5n IHRoZSBvcGNvZGVzIGRlc2NyaWJlZC4KPgo+IFdoaWxlIG5vdCBhbiBhdHRlbXB0IGF0IGNsb25p bmcgZXhhY3RseSB0aGUgZnVuY3Rpb25hbGl0eSBvZiBPUF9WQVVMVCBbMl0sCj4gaXQgYm9ycm93 cyBoZWF2aWx5IGZyb20gdGhlIGV4Y2VsbGVudCB3b3JrIHRoYXQgd2FzIGRvbmUgdGhlcmUuCj4K PiBJbiBwYXJ0aWN1bGFyLCBpdCBhbHNvIGluaGVyaXRzIHRoZSBjaG9pY2Ugb2YgdXNpbmcgT1Bf Q1RWIGFzIGEgcHJpbWl0aXZlLAo+IGJ1aWxkaW5nIG9uIHRvcCBvZiB0aGUgYml0Y29pbi1pbnF1 aXNpdGlvbidzIGN1cnJlbnQgYnJhbmNoIHRoYXQgaGFzIGFscmVhZHkKPiBtZXJnZWQgT1BfQ1RW LiBSZWFzb25hYmxlIHZhdWx0cyB3b3VsZCBiZSBwb3NzaWJsZSB3aXRob3V0IENUViwgYnV0IHRo ZXkKPiB3b3VsZCBiZSBsZXNzIGVmZmljaWVudCwgcGFydGljdWxhcmx5IGluIHRoZSBjYXNlIG9m IHNlbmRpbmcgdG8gbWFueSBhZGRyZXNzZXMKPiBpbiBhIHNpbmdsZSB1bnZhdWx0aW5nIGZsb3cu Cj4KPiAjIyMgRGlzdGlsbGluZyBPUF9WQVVMVAo+Cj4gQWJzdHJhY3RpbmcgZnJvbSB0aGUgaW1w bGVtZW50YXRpb24gZGV0YWlscywgSSBtZW50YWxseSBtb2RlbCBhIHZhdWx0IGFzIGEKPiBzaW1w bGUgc3RhdGUgbWFjaGluZSB3aXRoIDIgc3RhdGVzOiBbVl0gYW5kIFtVXToKPgo+IFtWXTogdGhl IGluaXRpYWwgdmF1bHQgVVRYTyhzKTsKPiBbVV06IHRoZSB1dHhvIHByb2R1Y2VkIGJ5IHRoZSAi dHJpZ2dlciB0cmFuc2FjdGlvbiIgZHVyaW5nIHVudmF1bHRpbmcuCj4KPiBPbiB0aGUgdHlwaWNh bCBwYXRoOiBvbmUgb3IgbW9yZSBbVl0gVVRYT3MgYXJlIHNlbnQgdG8gdGhlIFtVXSBzdGF0ZSwg YW5kIGFmdGVyCj4gYSB0aW1lbG9jayBzZXQgb24gW1VdIGV4cGlyZXMsIFtVXSBpcyBzcGVudCB0 byBvbmUgb3Igc2V2ZXJhbCBkZXN0aW5hdGlvbnMuCj4gQ3J1Y2lhbGx5LCB0aGUgZGVzdGluYXRp b24gb3V0cHV0cyBhbmQgYW1vdW50cyBhcmUgYWxyZWFkeSBkZWNpZGVkIHdoZW4gW1ZdIGlzCj4g c3BlbnQgaW50byBbVV0uCj4KPiBBdCBhbnkgdGltZSBiZWZvcmUgdGhlIGZ1bmRzIGFyZSBzcGVu dCBmcm9tIFtVXSwgdGhleSBjYW4gYWx3YXlzIGJlIHNwZW50IGJ5Cj4gc2VuZGluZyB0aGVtIHRv IHNvbWUgc3BlY2lmaWVkIHJlY292ZXJ5IHBhdGguCj4KPiBUaGVyZSBhcmUgdHdvIGtleSBlbGVt ZW50cyB0aGF0IGFyZSBwYXJ0IG9mIE9QX1ZBVUxUJ3Mgc2VtYW50aWNzLCBhbmQgY291bGQgYmUK PiBnZW5lcmFsaXplZDoKPgo+IOKIkiBGb3JjaW5nIHRoZSBzY3JpcHQvYW1vdW50IG9mIHRoZSBu ZXh0IHN0ZXBvbgo+IOKIkiBTdG9yaW5nIHNvbWUgZGF0YSBmb3IgZnV0dXJlIFNjcmlwdCdzIGFj Y2VzcyAoaW4gdGhlIHZhdWx0J3MgY2FzZSwgYSBoYXNoCj4gdGhhdCBjb21taXRzIHRvIHRoZSBm aW5hbCB3aXRoZHJhd2FsIHRyYW5zYWN0aW9uKS4KPgo+IENJQ1YvQ09DViBnZW5lcmFsaXplIGJv dGggdG8gYXJiaXRyYXJ5IHNjcmlwdHMgKHRhcHRyZWVzKSBhbmQgc3RhdGUgbWFjaGluZXMsCj4g YW5kIHRvIGR5bmFtaWNhbCBhbmQgd2l0bmVzcy1kZXBlbmRlbnQgZGF0YSBlbWJlZGRlZCBpbiB0 aGUgcHVia2V5IG9mIGEgUDJUUgo+IG91dHB1dC4KPgo+ICMjIyBWYXVsdCBwYXJhbWV0ZXJzCj4K PiBBIGNvbnRyYWN0IHRoYXQgcmVwcmVzZW50cyBhIHZhdWx0IGhhcyB0aGUgZm9sbG93aW5nIHBh cmFtZXRlcnMgKGhhcmRjb2RlZCBpbgo+IHRoZSBzY3JpcHQgd2hlbiB0aGUgdmF1bHQgaXMgY3Jl YXRlZCk6Cj4KPiAtIGFsdGVybmF0ZV9wazogYSBrZXkgdGhhdCBjYW4gYmUgdXNlZCBhbnkgdGlt ZS4KPiAtIHNwZW5kX2RlbGF5OiB0aGUgcmVsYXRpdmUgdGltZWxvY2sgYmVmb3JlIHRoZSB3aXRo ZHJhd2FsIGNhbiBiZSBmaW5hbGl6ZWQ7Cj4gLSByZWNvdmVyX3BrOiBhIHB1YmtleSBmb3IgYSBQ MlRSIG91dHB1dCB3aGVyZSBmdW5kcyBjYW4gYmUgc2VudCBhdCBhbnkgdGltZS4KPgo+IFRoZSBh bHRlcm5hdGVfcGsgaXMgYSBwdWJrZXkgdGhhdCBjYW4gb3B0aW9uYWxseSBiZSB1c2VkIGFzIHRo ZSBrZXktcGF0aAo+IHNwZW5kaW5nIGNvbmRpdGlvbiBmb3IgYm90aCBzdGF0ZXMgW1ZdIGFuZCBb VV0uIElmIHN1Y2ggYSBzcGVuZGluZyBjb25kaXRpb24gaXMgbm90Cj4gZGVzaXJlZCwgaXQgY2Fu IGJlIHJlcGxhY2VkIHdpdGggYSBOVU1TIHBvaW50LCBtYWtpbmcgdGhlIGtleS1wYXRoIHVuc3Bl bmRhYmxlLgo+Cj4gVGhlIHNwZW5kX2RlbGF5IGlzIHRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQg bXVzdCBiZSBtaW5lZCBiZWZvcmUgdGhlIGZpbmFsCj4gd2l0aGRyYXdhbCB0cmFuc2FjdGlvbgo+ Cj4gSW4gdGhpcyBleGFtcGxlIHdlIGFsc28gdXNlIGFuIHVudmF1bHRfcGsgbmVlZGVkIHRvIGF1 dGhvcml6ZSB0aGUgdW52YXVsdGluZwo+IHByb2Nlc3MgKHRoYXQgaXMsIHNwZW5kIFtWXSBpbnRv IFtVXSk7IHRoaXMgY291bGQgYmUgcmVwbGFjZWQgd2l0aCBhbnkgbWluaXNjcmlwdAo+IG9yIG90 aGVyIGNvbmRpdGlvbnMgZXhwcmVzc2libGUgaW4gU2NyaXB0Lgo+Cj4gIyMjIFAyVFIgc3RydWN0 dXJlIGZvciBbVl0gKHZhdWx0KQo+Cj4gaW50ZXJuYWwga2V5OiBhbHRlcm5hdGVfcGsKPgo+IFNj cmlwdCAxOiAidHJpZ2dlciIKPiAjIHdpdG5lc3M6IDxvdXRfaT4gPGN0di1oYXNoPgo+IHsKPiA8 YWx0ZXJuYXRlX3BrPiwKPiA8bWVya2xlIHJvb3Qgb2YgVSdzIHRhcHRyZWU+LAo+IDIsIE9QX1JP TEwsCj4gT1BfQ0hFQ0tPVVRQVVRDT05UUkFDVFZFUklGWSwKPgo+IDx1bnZhdWx0X3BrPgo+IE9Q X0NIRUNLU0lHCj4gfQo+Cj4gU2NyaXB0IDI6ICJyZWNvdmVyIgo+ICMgd2l0bmVzczogPG91dF9p Pgo+IHsKPiByZWNvdmVyX3BrLAo+IE9QXzAsICMgbm8gZGF0YSB0d2Vhawo+IE9QXzAsICMgbm8g dGFwdHdlYWsKPiBPUF9DSEVDS09VVFBVVENPTlRSQUNUVkVSSUZZLAo+IE9QX1RSVUUKPiB9Cj4K PiBUaGUgInRyaWdnZXIiIHNjcmlwdCByZXF1aXJlcyBpbiB0aGUgd2l0bmVzcyBhbiBvdXRwdXQg aW5kZXggYW5kIHRoZSBjdHYtaGFzaAo+IHRoYXQgZGVzY3JpYmVzIHRoZSB3aXRoZHJhd2FsIHRy YW5zYWN0aW9uLgo+IENPQ1YgZm9yY2VzIHRoZSBvdXRwdXQgdG8gY29udGFpbiB0aGUgY3R2LWhh c2ggYXMgZW1iZWRkZWQgZGF0YS4KPiBUaGF0J3MgZm9sbG93ZWQgYnkgdGhlIHVudmF1bHRpbmcg Y29uZGl0aW9uIOKIkiBpbiB0aGlzIGV4YW1wbGUsIGEgc2ltcGxlCj4gc2lnbmF0dXJlIGNoZWNr Lgo+Cj4gVGhlICJyZWNvdmVyIiBzY3JpcHQgZG9lc24ndCByZXF1aXJlIGFueSBzaWduYXR1cmUs IGFuZCBpdCBzaW1wbHkgZm9yY2VzCj4gdGhlIG91dHB1dCBzcGVjaWZpZWQgaW4gdGhlIHdpdG5l c3MgdG8gYmUgYSBQMlRSIG91dHB1dCB3aXRoIHJlY292ZXJfcGsgYXMgaXRzCj4gcHVia2V5Lgo+ Cj4gKE9taXR0aW5nIHRoZSAicmVjb3ZlciIgc2NyaXB0IGluIFtWXSB3b3VsZCByZWR1Y2UgdGhl IHNpemUgb2YgdGhlIHdpdG5lc3MgYnkKPiAzMiBieXRlcyBpbiB0aGUgZXhwZWN0ZWQgY2FzZSwg YW5kIG1pZ2h0IGJlIHByZWZlcnJlZCBmb3Igc29tZSB1c2VycykKPgo+ICMjIyBQMlRSIHN0cnVj dHVyZSBmb3IgW1VdICh1bnZhdWx0aW5nIHN0YXRlKQo+Cj4gaW50ZXJuYWwga2V5OiBhbHRlcm5h dGVfcGsgKHR3ZWFrZWQgd2l0aCBjdHZfaGFzaCkKPgo+IFNjcmlwdCAxOiAid2l0aGRyYXdhbCIK PiAjIHdpdG5lc3M6IDxjdHZfaGFzaD4KPiB7Cj4gT1BfRFVQLAo+Cj4gIyBjaGVjayB0aGF0IHRo ZSB0b3Agb2YgdGhlIHN0YWNrIGlzIHRoZQo+ICMgZW1iZWRkZWQgZGF0YSBpbiB0aGUgY3VycmVu dCBpbnB1dAo+IDxhbHRlcm5hdGVfcGs+LCBPUF9TV0FQLAo+IE9QX0NIRUNLSU5QVVRDT05UUkFD VFZFUklGWSwKPgo+ICMgQ2hlY2sgdGltZWxvY2sKPiA8c3BlbmRfZGVsYXk+LAo+IE9QX0NIRUNL U0VRVUVOQ0VWRVJJRlksCj4gT1BfRFJPUCwKPgo+ICMgQ2hlY2sgdGhhdCB0aGUgdHJhbnNhY3Rp b24gb3V0cHV0IGlzIGFzIGV4cGVjdGVkCj4gT1BfQ0hFQ0tURU1QTEFURVZFUklGWQo+IH0KPgo+ IFNjcmlwdCAyOiAicmVjb3ZlciIKPiAjIHdpdG5lc3M6IDxvdXRfaT4KPiB7Cj4gPHJlY292ZXJf cGs+LAo+IE9QXzAsCj4gT1BfMCwKPiBPUF9DSEVDS09VVFBVVENPTlRSQUNUVkVSSUZZLAo+IE9Q X1RSVUUKPiB9Cj4KPiBUaGUgIndpdGhkcmF3YWwiIGZpbmFsaXplcyB0aGUgdHJhbnNhY3Rpb24s IGJ5IGNoZWNraW5nIHRoYXQgdGhlIHRpbWVsb2NrIGV4cGlyZWQgYW5kCj4gdGhlIG91dHB1dHMg c2F0aXNmeSB0aGUgQ1RWIGhhc2ggdGhhdCB3YXMgY29tbWl0dGVkIHRvIGluIHRoZSBwcmV2aW91 cyB0cmFuc2FjdGlvbi4KPgo+IFRoZSAicmVjb3ZlciIgc2NyaXB0IGlzIGlkZW50aWNhbCBhcyBi ZWZvcmUuCj4KPiAjIyMgRGlmZmVyZW5jZXMgd2l0aCBPUF9WQVVMVCB2YXVsdHMKPgo+IEhlcmUg SSByZWZlciB0byB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgT1BfVkFVTFQgYXQgdGhlIHRpbWUgb2Yg d3JpdGluZy4gWzVdCj4gSXQgaXMgbm90IGEgdGhvcm91Z2ggYW5hbHlzaXMuCj4KPiBVbmxpa2Ug dGhlIGltcGxlbWVudGF0aW9uIGJhc2VkIG9uIE9QX1ZBVUxULCB0aGUgW1ZdIHV0eG9zIGRvbid0 IGhhdmUgYW4gb3B0aW9uCj4gdG8gYWRkIGFuIGFkZGl0aW9uYWwgb3V0cHV0IHRoYXQgaXMgc2Vu dCBiYWNrIHRvIHRoZSBzYW1lIGV4YWN0IHZhdWx0Lgo+IFN1cHBvcnRpbmcgdGhpcyB1c2UgY2Fz ZSBzZWVtcyB0byByZXF1aXJlIGEgbW9yZSBnZW5lcmFsIHdheSBvZiBoYW5kbGluZyB0aGUKPiBk aXN0cmlidXRpb24gb2YgYW1vdW50cyB0aGFuIHdoYXQgSSBkaXNjdXNzZWQgaW4gdGhlIHNlY3Rp b24gYWJvdmU6IHRoYXQgd291bGQKPiBpbiBmYWN0IG5lZWQgdG8gYmUgZ2VuZXJhbGl6ZWQgdG8g dGhlIGNhc2Ugb2YgbXVsdGlwbGUKPiBPUF9DSEVDS09VVFBVVENPTlRSQUNUVkVSSUZZIG9wY29k ZXMgZXhlY3V0ZWQgZm9yIHRoZSBzYW1lIGlucHV0Lgo+Cj4gQnkgc2VwYXJhdGluZyB0aGUgY3R2 LWhhc2ggKHdoaWNoIGlzIGNvbnNpZGVyZWQgImRhdGEiKSBmcm9tIHRoZSBzY3JpcHRzIGluIHRo ZQo+IHRhcHRyZWUsIG9uZSBlbnRpcmVseSBhdm9pZHMgdGhlIG5lZWQgdG8gZHluYW1pY2FsbHkg Y3JlYXRlIHRhcHRyZWVzIGFuZAo+IHJlcGxhY2UgbGVhdmVzIGluIHRoZSBjb3ZlbmFudC1lbmN1 bWJlcmVkIFVUWE9zOyBpbiBmYWN0LCB0aGUgdGFwdHJlZXMgb2YgW1ZdCj4gYW5kIFtVXSBhcmUg YWxyZWFkeSBzZXQgaW4gc3RvbmUgd2hlbiBbVl0gdXR4b3MgYXJlIGNyZWF0ZWQsIGFuZCBvbmx5 IHRoZQo+ICJkYXRhIiBwb3J0aW9uIG9mIFtVXSdzIHNjcmlwdFB1YktleSBpcyBkeW5hbWljYWxs eSBjb21wdXRlZC4gSW4gbXkgb3BpbmlvbiwKPiB0aGlzIG1ha2VzIGl0IHN1YnN0YW50aWFsbHkg ZWFzaWVyIHRvIHByb2dyYW0gInN0YXRlIG1hY2hpbmVzIiB0aGF0IGNvbnRyb2wgdGhlCj4gYmVo YXZpb3Igb2YgY29pbnMsIG9mIHdoaWNoIHZhdWx0cyBhcmUgYSBzcGVjaWFsIGNhc2UuCj4KPiBJ IGhvcGUgeW91J2xsIGZpbmQgdGhpcyBpbnRlcmVzdGluZywgYW5kIGxvb2sgZm9yd2FyZCB0byB5 b3VyIGNvbW1lbnRzLgo+Cj4gU2FsdmF0b3JlIEluZ2FsYQo+Cj4gWzFdIC0gaHR0cHM6Ly9saXN0 cy5saW51eGZvdW5kYXRpb24ub3JnL3BpcGVybWFpbC9iaXRjb2luLWRldi8yMDIyLU5vdmVtYmVy LzAyMTIyMy5odG1sCj4gWzJdIC0gaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW4vYmlwcy9wdWxs LzE0MjEKPiBbM10gLSBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbi9iaXBzL2Jsb2IvbWFzdGVy L2JpcC0wMzQxLm1lZGlhd2lraQo+IFs0XSAtIGh0dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9u Lm9yZy9waXBlcm1haWwvYml0Y29pbi1kZXYvMjAyMS1TZXB0ZW1iZXIvMDE5NDIwLmh0bWwKPiBb NV0gLSBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbi9iaXBzL2Jsb2IvNzExMmYzMDhiMzU2Y2Rm MGM1MWQ5MTdkYmRjMWI5OGUzMDYyMWY4MC9iaXAtMDM0NS5tZWRpYXdpa2k= --b1_Q581qU1RY6fcpVI05uu0KPWhScRcexk5WHyMBmG2U Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE0 cHg7Ij5IaSBTYWx2YXRvcmU8L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTogQXJpYWwsIHNh bnMtc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsiPjxicj48L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZh bWlseTogQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsiPkNhbiB5b3UgY2xhcmlm eSBmb3IgbWUgd2hpY2ggYnVja2V0IHRoaXMgcHJvcG9zYWwgc2l0cz8gV2UgaGF2ZSBBUE8sIENU ViwgT1BfVkFVTFQgZXRjIHRoYXQgYXJlIHByb3Bvc2FscyB0byBhZGQgYWRkaXRpb25hbCBmdW5j dGlvbmFsaXR5IHRvIFNlZ1dpdCB2ZXJzaW9uIDEsIFRhcGxlYWYgdmVyc2lvbiAwIHNjcmlwdHMu IFdlIGhhdmUgU2ltcGxpY2l0eSB0aGF0IHdvdWxkIG5lZWQgYSBuZXcgVGFwbGVhZiB2ZXJzaW9u IChlLmcuIFRhcGxlYWYgdmVyc2lvbiAxKS4gQW5kIHRoZW4gdGhlcmUgYXJlIENJU0EgbGlrZSBw cm9wb3NhbHMgdGhhdCB3b3VsZCBuZWVkIGEgbmV3IFNlZ1dpdCB2ZXJzaW9uIChlLmcuIFNlZ1dp dCB2ZXJzaW9uIDIpLiBJdCBsb29rcyB0byBtZSBsaWtlIHlvdXIgcHJvcG9zYWwgaXMgaW4gdGhl IGZpcnN0IGJ1Y2tldCAoc2FtZSBhcyBBUE8sIENUViBldGMpIGFzIGl0IGlzIGp1c3QgaW50cm9k dWNpbmcgbmV3IG9wY29kZSBmdW5jdGlvbmFsaXR5IHRvIGV4aXN0aW5nIHNjcmlwdCB3aXRoIG5v IGRlZXBlciBpbnRyb3NwZWN0aW9uIG5lZWRlZCBidXQgcHJldmlvdXMgYW5kIGN1cnJlbnQgZGlz Y3Vzc2lvbiBvZiBmcmF1ZCBwcm9vZnMsIE1BVFQgZnJhbWV3b3JrcyBldGMgbWFkZSBtZSBpbml0 aWFsbHkgdGhpbmsgaXQgd2FzIGdvaW5nIHRvIHJlcXVpcmUgbW9yZSB0aGFuIHRoYXQuPC9kaXY+ PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE0 cHg7Ij48YnI+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlm OyBmb250LXNpemU6IDE0cHg7Ij5UaGFua3M8L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTog QXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsiPk1pY2hhZWw8L2Rpdj48ZGl2IHN0 eWxlPSJmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsiPjxi cj48L2Rpdj4NCjxkaXYgY2xhc3M9InByb3Rvbm1haWxfc2lnbmF0dXJlX2Jsb2NrIiBzdHlsZT0i Zm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE0cHg7Ij4NCiAgICA8 ZGl2IGNsYXNzPSJwcm90b25tYWlsX3NpZ25hdHVyZV9ibG9jay11c2VyIj4NCiAgICAgICAgPGRp diBzdHlsZT0iZm9udC1mYW1pbHk6YXJpYWw7Zm9udC1zaXplOjE0cHg7Ij48c3BhbiBzdHlsZT0i Y29sb3I6cmdiKDM4LDQyLDUxKTtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7bGV0 dGVyLXNwYWNpbmc6bm9ybWFsO3RleHQtaW5kZW50OjBweDt0ZXh0LXRyYW5zZm9ybTpub25lO3do aXRlLXNwYWNlOnByZS13cmFwO3dvcmQtc3BhY2luZzowcHg7YmFja2dyb3VuZC1jb2xvcjpyZ2Io MjU1LDI1NSwyNTUpO2Zsb2F0Om5vbmU7ZGlzcGxheTppbmxpbmU7Ij48c3BhbiBzdHlsZT0iZm9u dC1mYW1pbHk6J1NGTW9uby1SZWd1bGFyJywgQ29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLCBN ZW5sbywgbW9ub3NwYWNlLCBtb25vc3BhY2U7IiBjbGFzcz0iZm9udCI+PHNwYW4gc3R5bGU9ImZv bnQtc2l6ZToxNHB4OyIgY2xhc3M9InNpemUiPi0tPGJyPk1pY2hhZWwgRm9sa3Nvbjwvc3Bhbj48 L3NwYW4+PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OmFyaWFsO2ZvbnQtc2l6 ZToxNHB4OyI+PHNwYW4gc3R5bGU9ImNvbG9yOnJnYigzOCw0Miw1MSk7Zm9udC1zdHlsZTpub3Jt YWw7Zm9udC13ZWlnaHQ6NDAwO2xldHRlci1zcGFjaW5nOm5vcm1hbDt0ZXh0LWluZGVudDowcHg7 dGV4dC10cmFuc2Zvcm06bm9uZTt3aGl0ZS1zcGFjZTpwcmUtd3JhcDt3b3JkLXNwYWNpbmc6MHB4 O2JhY2tncm91bmQtY29sb3I6cmdiKDI1NSwyNTUsMjU1KTtmbG9hdDpub25lO2Rpc3BsYXk6aW5s aW5lOyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OidTRk1vbm8tUmVndWxhcicsIENvbnNvbGFz LCAnTGliZXJhdGlvbiBNb25vJywgTWVubG8sIG1vbm9zcGFjZSwgbW9ub3NwYWNlOyIgY2xhc3M9 ImZvbnQiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTRweDsiIGNsYXNzPSJzaXplIj5FbWFpbDog bWljaGFlbGZvbGtzb24gYXQgPC9zcGFuPjwvc3Bhbj48L3NwYW4+PGEgaHJlZj0iaHR0cDovL3By b3Rvbm1haWwuY29tLyIgc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbDt0ZXh0LWRlY29yYXRpb246 dW5kZXJsaW5lO2ZvbnQtZmFtaWx5OidTRk1vbm8tUmVndWxhcicsIENvbnNvbGFzLCAnTGliZXJh dGlvbiBNb25vJywgTWVubG8sIG1vbm9zcGFjZSwgbW9ub3NwYWNlO2ZvbnQtc2l6ZToxNHB4O2Zv bnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtsZXR0ZXItc3BhY2luZzpub3JtYWw7dGV4 dC1pbmRlbnQ6MHB4O3RleHQtdHJhbnNmb3JtOm5vbmU7d2hpdGUtc3BhY2U6cHJlLXdyYXA7d29y ZC1zcGFjaW5nOjBweDsiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIgdGFyZ2V0PSJfYmxhbmsi PnByb3Rvbm1haWwuY29tPC9hPjxzcGFuIHN0eWxlPSJjb2xvcjpyZ2IoMzgsNDIsNTEpO2ZvbnQt c3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtsZXR0ZXItc3BhY2luZzpub3JtYWw7dGV4dC1p bmRlbnQ6MHB4O3RleHQtdHJhbnNmb3JtOm5vbmU7d2hpdGUtc3BhY2U6cHJlLXdyYXA7d29yZC1z cGFjaW5nOjBweDtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNTUsMjU1LDI1NSk7ZmxvYXQ6bm9uZTtk aXNwbGF5OmlubGluZTsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTonU0ZNb25vLVJlZ3VsYXIn LCBDb25zb2xhcywgJ0xpYmVyYXRpb24gTW9ubycsIE1lbmxvLCBtb25vc3BhY2UsIG1vbm9zcGFj ZTsiIGNsYXNzPSJmb250Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjE0cHg7IiBjbGFzcz0ic2l6 ZSI+IDwvc3Bhbj48L3NwYW4+PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OmFy aWFsO2ZvbnQtc2l6ZToxNHB4OyI+PHNwYW4gc3R5bGU9ImNvbG9yOnJnYigzOCw0Miw1MSk7Zm9u dC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO2xldHRlci1zcGFjaW5nOm5vcm1hbDt0ZXh0 LWluZGVudDowcHg7dGV4dC10cmFuc2Zvcm06bm9uZTt3aGl0ZS1zcGFjZTpwcmUtd3JhcDt3b3Jk LXNwYWNpbmc6MHB4O2JhY2tncm91bmQtY29sb3I6cmdiKDI1NSwyNTUsMjU1KTtmbG9hdDpub25l O2Rpc3BsYXk6aW5saW5lOyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OidTRk1vbm8tUmVndWxh cicsIENvbnNvbGFzLCAnTGliZXJhdGlvbiBNb25vJywgTWVubG8sIG1vbm9zcGFjZSwgbW9ub3Nw YWNlOyIgY2xhc3M9ImZvbnQiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTRweDsiIGNsYXNzPSJz aXplIj5HUEc6IDxzcGFuPkEyQ0Y1RDcxNjAzQzkyMDEwNjU5ODE4RDJBNzVENjAxQjIzRkVFMEY8 L3NwYW4+PC9zcGFuPjwvc3Bhbj48L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6 YXJpYWw7Zm9udC1zaXplOjE0cHg7Ij48c3BhbiBzdHlsZT0iY29sb3I6cmdiKDM4LDQyLDUxKTtm b250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO3Rl eHQtaW5kZW50OjBweDt0ZXh0LXRyYW5zZm9ybTpub25lO3doaXRlLXNwYWNlOnByZS13cmFwO3dv cmQtc3BhY2luZzowcHg7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1LDI1NSwyNTUpO2Zsb2F0Om5v bmU7ZGlzcGxheTppbmxpbmU7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6J1NGTW9uby1SZWd1 bGFyJywgQ29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlLCBtb25v c3BhY2U7IiBjbGFzcz0iZm9udCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxNHB4OyIgY2xhc3M9 InNpemUiPjxzcGFuPjxicj48L3NwYW4+PC9zcGFuPjwvc3Bhbj48L3NwYW4+PC9kaXY+PGRpdiBz dHlsZT0iZm9udC1mYW1pbHk6YXJpYWw7Zm9udC1zaXplOjE0cHg7Ij48c3BhbiBzdHlsZT0iY29s b3I6cmdiKDM4LDQyLDUxKTtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7bGV0dGVy LXNwYWNpbmc6bm9ybWFsO3RleHQtaW5kZW50OjBweDt0ZXh0LXRyYW5zZm9ybTpub25lO3doaXRl LXNwYWNlOnByZS13cmFwO3dvcmQtc3BhY2luZzowcHg7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1 LDI1NSwyNTUpO2Zsb2F0Om5vbmU7ZGlzcGxheTppbmxpbmU7Ij48c3BhbiBzdHlsZT0iZm9udC1m YW1pbHk6J1NGTW9uby1SZWd1bGFyJywgQ29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLCBNZW5s bywgbW9ub3NwYWNlLCBtb25vc3BhY2U7IiBjbGFzcz0iZm9udCI+PHNwYW4gc3R5bGU9ImZvbnQt c2l6ZToxNHB4OyIgY2xhc3M9InNpemUiPjxzcGFuPkxlYXJuIGFib3V0IEJpdGNvaW46IDxzcGFu PjxhIGhyZWY9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL0Bwb3J0b2ZiaXRjb2luIiByZWw9Im5v b3BlbmVyIG5vcmVmZXJyZXIiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL3d3dy55b3V0dWJlLmNv bS9AcG9ydG9mYml0Y29pbjwvYT48L3NwYW4+PC9zcGFuPjwvc3Bhbj48L3NwYW4+PC9zcGFuPjwv ZGl2Pg0KICAgIDwvZGl2Pg0KICAgIA0KICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvdG9ubWFp bF9zaWduYXR1cmVfYmxvY2stcHJvdG9uIHByb3Rvbm1haWxfc2lnbmF0dXJlX2Jsb2NrLWVtcHR5 Ij4NCiAgICAgICAgDQogICAgICAgICAgICA8L2Rpdj4NCjwvZGl2Pg0KPGRpdiBzdHlsZT0iZm9u dC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE0cHg7Ij48YnI+PC9kaXY+ PGRpdiBjbGFzcz0icHJvdG9ubWFpbF9xdW90ZSI+DQogICAgICAgIC0tLS0tLS0gT3JpZ2luYWwg TWVzc2FnZSAtLS0tLS0tPGJyPg0KICAgICAgICBPbiBNb25kYXksIEFwcmlsIDI0dGgsIDIwMjMg YXQgMjA6MzcsIFNhbHZhdG9yZSBJbmdhbGEgdmlhIGJpdGNvaW4tZGV2ICZsdDtiaXRjb2luLWRl dkBsaXN0cy5saW51eGZvdW5kYXRpb24ub3JnJmd0OyB3cm90ZTo8YnI+PGJyPg0KICAgICAgICA8 YmxvY2txdW90ZSBjbGFzcz0icHJvdG9ubWFpbF9xdW90ZSIgdHlwZT0iY2l0ZSI+DQogICAgICAg ICAgICA8ZGl2IGRpcj0ibHRyIj5IZWxsbyBsaXN0LDxicj48YnI+VEw7RFI6IHRoZSBjb3JlIG9w Y29kZXMgb2YgTUFUVCBjYW4gYnVpbGQgdmF1bHRzIHdpdGggYSB2ZXJ5IHNpbWlsYXIgZGVzaWdu PGJyPnRvIE9QX1ZBVUxULiBDb2RlIGV4YW1wbGUgaGVyZTo8YnI+PGJyPiA8YSBocmVmPSJodHRw czovL2dpdGh1Yi5jb20vYml0Y29pbi1pbnF1aXNpdGlvbi9iaXRjb2luL2NvbXBhcmUvMjQuMC4u LmJpZ3NwaWRlcjpiaXRjb2luLWlucXVpc2l0aW9uOm1hdHQtdmF1bHQiIHJlbD0ibm9yZWZlcnJl ciBub2ZvbGxvdyBub29wZW5lciIgdGFyZ2V0PSJfYmxhbmsiPiBodHRwczovL2dpdGh1Yi5jb20v Yml0Y29pbi1pbnF1aXNpdGlvbi9iaXRjb2luL2NvbXBhcmUvMjQuMC4uLmJpZ3NwaWRlcjpiaXRj b2luLWlucXVpc2l0aW9uOm1hdHQtdmF1bHQ8L2E+PGJyPjxicj48YnI+SW4gbXkgcHJldmlvdXMg ZW1haWxzIGFib3V0IHRoZSBNQVRUIHByb3Bvc2FsIGZvciBzbWFydCBjb250cmFjdHMgaW48YnI+ Yml0Y29pbiBbMV0sIEkgbW9zdGx5IGZvY3VzZWQgb24gcHJvdmluZyBpdHMgZ2VuZXJhbGl0eTsg dGhhdCBpcywgaXQ8YnI+YWxsb3dzIGFyYml0cmFyeSBzbWFydCBjb250cmFjdHMgdGhhbmtzIHRv IGZyYXVkIHByb29mcy48YnI+PGJyPldoaWxlIEkgc3RpbGwgZmluZCB0aGlzICJjb21wbGV0ZW5l c3MiIHJlc3VsdCBjb21wZWxsaW5nLCBJIHNwZW50IG1vcmUgdGltZTxicj50aGlua2luZyBhYm91 dCB0aGUgZnJhbWV3b3JrIGl0c2VsZjsgdGhlIGNvbnN0cnVjdGlvbiBpcyBub3QgdmVyeSBpbnRl cmVzdGluZzxicj5pZiBpdCB0dXJucyBzaW1wbGUgdGhpbmdzIGludG8gY29tcGxpY2F0ZWQgb25l cy4gTHVja2lseSwgdGhpcyBpcyBub3QgdGhlIGNhc2UuPGJyPkluIHBhcnRpY3VsYXIsIGluIHRo aXMgZW1haWwgd2Ugd2lsbCBub3QgbWVya2xlaXplIGFueXRoaW5nIChvdGhlciB0aGFuIHRhcHRy ZWVzKS48YnI+PGJyPlRoaXMgcG9zdCBkZXNjcmliZXMgc29tZSBwcm9ncmVzcyBpbnRvIGZvcm1h bGl6aW5nIHRoZSBzZW1hbnRpY3Mgb2YgdGhlIGNvcmU8YnI+b3Bjb2RlcywgYW5kIGRlbW9uc3Ry YXRlcyBob3cgdGhleSBjb3VsZCBiZSB1c2VkIHRvIGNyZWF0ZSB2YXVsdHMgdGhhdCBzZWVtPGJy PmNvbXBhcmFibGUgdG8gdGhlIG9uZXMgYnVpbHQgd2l0aCBPUF9WQVVMVCBbMl0sIGRlc3BpdGUg dXNpbmcgZ2VuZXJhbCBwdXJwb3NlPGJyPm9wY29kZXMuPGJyPjxicj5BbiBpbXBsZW1lbnRhdGlv biBhbmQgc29tZSBtaW5pbWFsIHRlc3RzIG1hdGNoaW5nIHRoZSBjb250ZW50IG9mIHRoaXM8YnI+ ZS1tYWlsIGNhbiBiZSBmb3VuZCBpbiB0aGUgbGluayBhYm92ZSwgdXNpbmcgdGhlIGJpdGNvaW4t aW5xdWlzaXRpb24gYXMgdGhlPGJyPmJhc2UgYnJhbmNoLjxicj48YnI+Tm90ZSB0aGF0IHRoZSBs aW5rZWQgY29kZSBpcyBub3Qgd2VsbCB0ZXN0ZWQgYW5kIGlzIG9ubHkgaW50ZW5kZWQgZm9yPGJy PmV4cGxvcmF0b3J5IGFuZCBkZW1vbnN0cmF0aXZlIHB1cnBvc2VzOyB0aGVyZWZvcmUsIGJ1Z3Mg YXJlIGxpa2VseSBhdCB0aGlzPGJyPnN0YWdlLjxicj48YnI+PGJyPiMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjPGJyPiMgICAgUEFSVCAxOiBNQVRUJ3MgY29yZTxicj4jIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIzxicj48YnI+SW4gdGhpcyBzZWN0aW9uLCBJIHdpbGwgZGlzY3VzcyBwbGF1c2li bGUgc2VtYW50aWNzIGZvciB0aGUgY29yZSBvcGNvZGVzIGZvciBNQVRULjxicj48YnI+VGhlIHR3 byBjb3JlIG9wY29kZXMgYXJlIGRlZmluZWQgYmVsb3cgYXMgT1BfQ0hFQ0tJTlBVVENPTlRSQUNU VkVSSUZZIGFuZDxicj5PUF9DSEVDS09VVFBVVENPTlRSQUNUVkVSSUZZLjxicj48YnI+KHRoZSBp bml0aWFsIHBvc3RzIG5hbWVkIHRoZW0gT1BfQ0hFQ0t7SU5QVVQsT1VUUFVUfUNPVkVOQU5UVkVS SUZZKTxicj48YnI+VGhleSBlbmhhbmNlIFNjcmlwdCB3aXRoIHRoZSBmb2xsb3dpbmcgY2FwYWJp bGl0aWVzOjxicj4gIC0gZGVjaWRlIHRoZSB0YXB0cmVlIG9mIHRoZSBvdXRwdXQ8YnI+ICAtIGVt YmVkIHNvbWUgKGR5bmFtaWNhbGx5IGNvbXB1dGVkKSBkYXRhIGluIHRoZSBvdXRwdXQ8YnI+ICAt IGFjY2VzcyB0aGUgZW1iZWRkZWQgZGF0YSBpbiB0aGUgY3VycmVudCBVVFhPIChpZiBhbnkpPGJy Pjxicj5UaGUgb3Bjb2RlcyBiZWxvdyBhcmUgaW5jb21wbGV0ZSwgYXMgdGhleSBvbmx5IGNvbnRy b2wgdGhlIG91dHB1dCdzIFNjcmlwdCBhbmQ8YnI+bm90IHRoZSBhbW91bnRzOyBtb3JlIG9uIHRo YXQgYmVsb3cuPGJyPjxicj5PdGhlciB0aGFuIHRoYXQsIHRoZSBzZW1hbnRpY3Mgc2hvdWxkIGJl IHF1aXRlIGNsb3NlIHRvIHRoZSAicmlnaHQiIG9uZSBmb3I8YnI+dGhlIE1BVFQgZnJhbWV3b3Jr Ljxicj48YnI+PGJyPiMjIyBUaGUgb3Bjb2Rlczxicj48YnI+PGZvbnQgZmFjZT0ibW9ub3NwYWNl Ij5jYXNlIE9QX0NIRUNLSU5QVVRDT05UUkFDVFZFUklGWTo8YnI+ezxicj4gICAgLy8gT1BfQ0hF Q0tJTlBVVENPTlRSQUNUVkVSSUZZIGlzIG9ubHkgYXZhaWxhYmxlIGluIFRhcHNjcmlwdDxicj4g ICAgaWYgKHNpZ3ZlcnNpb24gPT0gU2lnVmVyc2lvbjo6QkFTRSB8fCBzaWd2ZXJzaW9uID09IFNp Z1ZlcnNpb246OldJVE5FU1NfVjApIHJldHVybiBzZXRfZXJyb3Ioc2Vycm9yLCBTQ1JJUFRfRVJS X0JBRF9PUENPREUpOzxicj4gICAgLy8gKHggZCAtLSApPGJyPiAgICBpZiAoc3RhY2suc2l6ZSgp ICZsdDsgMik8YnI+ICAgICAgICByZXR1cm4gc2V0X2Vycm9yKHNlcnJvciwgU0NSSVBUX0VSUl9J TlZBTElEX1NUQUNLX09QRVJBVElPTik7PGJyPiAgICB2YWx0eXBlJmFtcDsgeCA9IHN0YWNrdG9w KC0yKTs8YnI+ICAgIHZhbHR5cGUmYW1wOyBkID0gc3RhY2t0b3AoLTEpOzxicj4gICAgaWYgKHgu c2l6ZSgpICE9IDMyIHx8IGQuc2l6ZSgpICE9IDMyKTxicj4gICAgICAgIHJldHVybiBzZXRfZXJy b3Ioc2Vycm9yLCBTQ1JJUFRfRVJSX0lOVkFMSURfU1RBQ0tfT1BFUkFUSU9OKTs8YnI+ICAgIGNv bnN0IFhPbmx5UHViS2V5IG5ha2VkWE9ubHlLZXl7U3BhbiZsdDtjb25zdCB1bnNpZ25lZCBjaGFy Jmd0O3t4LmRhdGEoKSwgeC5kYXRhKCkgKyAzMn19Ozxicj4gICAgY29uc3QgdWludDI1NiBkYXRh KGQpOzxicj4gICAgaWYgKCFleGVjZGF0YS5tX2ludGVybmFsX2tleS5oYXNfdmFsdWUoKSk8YnI+ ICAgICAgICByZXR1cm4gc2V0X2Vycm9yKHNlcnJvciwgU0NSSVBUX0VSUl9VTktOT1dOX0VSUk9S KTsgIC8vIFRPRE88YnI+ICAgIC8vIFZlcmlmeSB0aGF0IHR3ZWFrKGxpZnRfeCh4KSwgZCkgZXF1 YWxzIHRoZSBpbnRlcm5hbCBwdWJrZXk8YnI+ICAgIGlmICghZXhlY2RhdGEubV9pbnRlcm5hbF9r ZXkudmFsdWUoKS5DaGVja0RvdWJsZVR3ZWFrKG5ha2VkWE9ubHlLZXksICZhbXA7ZGF0YSwgbnVs bHB0cikpPGJyPiAgICAgICAgcmV0dXJuIHNldF9lcnJvcihzZXJyb3IsIFNDUklQVF9FUlJfV1JP TkdDT05UUkFDVERBVEEpOzxicj4gICAgcG9wc3RhY2soc3RhY2spOzxicj4gICAgcG9wc3RhY2so c3RhY2spOzxicj59PGJyPmJyZWFrOzxicj5jYXNlIE9QX0NIRUNLT1VUUFVUQ09OVFJBQ1RWRVJJ Rlk6PGJyPns8YnI+ICAgIC8vIE9QX0NIRUNLT1VUUFVUQ09OVFJBQ1RWRVJJRlkgaXMgb25seSBh dmFpbGFibGUgaW4gVGFwc2NyaXB0PGJyPiAgICBpZiAoc2lndmVyc2lvbiA9PSBTaWdWZXJzaW9u OjpCQVNFIHx8IHNpZ3ZlcnNpb24gPT0gU2lnVmVyc2lvbjo6V0lUTkVTU19WMCkgcmV0dXJuIHNl dF9lcnJvcihzZXJyb3IsIFNDUklQVF9FUlJfQkFEX09QQ09ERSk7PGJyPiAgICAvLyAob3V0X2kg eCB0YXB0cmVlIGQgLS0gKTxicj4gICAgaWYgKHN0YWNrLnNpemUoKSAmbHQ7IDQpPGJyPiAgICAg ICAgcmV0dXJuIHNldF9lcnJvcihzZXJyb3IsIFNDUklQVF9FUlJfSU5WQUxJRF9TVEFDS19PUEVS QVRJT04pOzxicj4gICAgaW50IG91dF9pID0gQ1NjcmlwdE51bShzdGFja3RvcCgtNCksIGZSZXF1 aXJlTWluaW1hbCkuZ2V0aW50KCk7PGJyPiAgICB2YWx0eXBlJmFtcDsgeCA9IHN0YWNrdG9wKC0z KTs8YnI+ICAgIHZhbHR5cGUmYW1wOyB0YXB0cmVlID0gc3RhY2t0b3AoLTIpOzxicj4gICAgdmFs dHlwZSZhbXA7IGQgPSBzdGFja3RvcCgtMSk7PGJyPiAgICBhdXRvIG91dHBzID0gY2hlY2tlci5H ZXRUeHZPdXQoKTs8YnI+ICAgIC8vIFJldHVybiBlcnJvciBpZiB0aGUgZXZhbHVhdGlvbiBjb250 ZXh0IGlzIHVuYXZhaWxhYmxlPGJyPiAgICBpZiAoIW91dHBzKTxicj4gICAgICAgIHJldHVybiBz ZXRfZXJyb3Ioc2Vycm9yLCBTQ1JJUFRfRVJSX1VOS05PV05fRVJST1IpOyAvLyBUT0RPPGJyPiAg ICBpZiAoeC5zaXplKCkgIT0gMzIgfHwgdGFwdHJlZS5zaXplKCkgIT0gMzIgfHwgKGQuc2l6ZSgp ICE9IDAgJmFtcDsmYW1wOyBkLnNpemUoKSAhPSAzMikpPGJyPiAgICAgICAgcmV0dXJuIHNldF9l cnJvcihzZXJyb3IsIFNDUklQVF9FUlJfSU5WQUxJRF9TVEFDS19PUEVSQVRJT04pOzxicj4gICAg aWYgKG91dF9pICZsdDsgMCB8fCBvdXRfaSAmZ3Q7PSAoaW50KW91dHBzLSZndDtzaXplKCkpPGJy PiAgICAgICAgcmV0dXJuIHNldF9lcnJvcihzZXJyb3IsIFNDUklQVF9FUlJfSU5WQUxJRF9TVEFD S19PUEVSQVRJT04pOzxicj4gICAgY29uc3QgWE9ubHlQdWJLZXkgbmFrZWRYT25seUtleXtTcGFu Jmx0O2NvbnN0IHVuc2lnbmVkIGNoYXImZ3Q7e3guZGF0YSgpLCB4LmRhdGEoKSArIDMyfX07PGJy PiAgICBjb25zdCB1aW50MjU2IGRhdGEoZCk7PGJyPiAgICBjb25zdCB1aW50MjU2ICpkYXRhX3B0 ciA9IChkLnNpemUoKSA9PSAwID8gbnVsbHB0ciA6ICZhbXA7ZGF0YSk7PGJyPiAgICBjb25zdCB1 aW50MjU2IG1lcmtsZV90cmVlKHRhcHRyZWUpOzxicj4gICAgQ1NjcmlwdCBzY3JpcHRQdWJLZXkg PSBvdXRwcy0mZ3Q7YXQob3V0X2kpLnNjcmlwdFB1YktleTs8YnI+ICAgIGlmIChzY3JpcHRQdWJL ZXkuc2l6ZSgpICE9IDEgKyAxICsgMzIgfHwgc2NyaXB0UHViS2V5WzBdICE9IE9QXzEgfHwgc2Ny aXB0UHViS2V5WzFdICE9IDMyKTxicj4gICAgICAgIHJldHVybiBzZXRfZXJyb3Ioc2Vycm9yLCBT Q1JJUFRfRVJSX1dST05HQ09OVFJBQ1REQVRBKTs8YnI+ICAgIGNvbnN0IFhPbmx5UHViS2V5IG91 dHB1dFhPbmx5S2V5e1NwYW4mbHQ7Y29uc3QgdW5zaWduZWQgY2hhciZndDt7c2NyaXB0UHViS2V5 LmRhdGEoKSArIDIsIHNjcmlwdFB1YktleS5kYXRhKCkgKyAzNH19Ozxicj4gICAgLy8gVmVyaWZ5 IHRoYXQgdGFwdHdlYWsodHdlYWsobGlmdF94KHgpLCBkKSwgdGFwdHJlZSkgZXF1YWxzIHRoZSBp bnRlcm5hbCBwdWJrZXk8YnI+ICAgIGlmICghb3V0cHV0WE9ubHlLZXkuQ2hlY2tEb3VibGVUd2Vh ayhuYWtlZFhPbmx5S2V5LCBkYXRhX3B0ciwgJmFtcDttZXJrbGVfdHJlZSkpPGJyPiAgICAgICAg cmV0dXJuIHNldF9lcnJvcihzZXJyb3IsIFNDUklQVF9FUlJfV1JPTkdDT05UUkFDVERBVEEpOzxi cj4gICAgcG9wc3RhY2soc3RhY2spOzxicj4gICAgcG9wc3RhY2soc3RhY2spOzxicj4gICAgcG9w c3RhY2soc3RhY2spOzxicj4gICAgcG9wc3RhY2soc3RhY2spOzxicj59PGJyPmJyZWFrOzwvZm9u dD48YnI+PGJyPiMjIyBDb21tZW50YXJ5PGJyPjxicj5DaGVja0RvdWJsZVR3ZWFrIGZ1bmN0aW9u IChpbXBsZW1lbnRlZCBpbiB0aGUgYnJhbmNoKSBnZXRzIGFuIHgtb25seSBwdWJrZXksPGJyPm9w dGlvbmFsbHkgc29tZSBkYXRhLCBhbmQgb3B0aW9uYWxseSB0YXB0cmVlJ3MgbWVya2xlIHJvb3Qu PGJyPkl0IHZlcmlmaWVzIHRoYXQgdGhlIHgtb25seSBwdWJrZXkgYmVpbmcgdGVzdGVkIGVxdWFs cyB0aGUgZ2l2ZW4gbmFrZWQgcHVia2V5LDxicj5vcHRpb25hbGx5IHR3ZWFrZWQgd2l0aCB0aGUg ZW1iZWRkZWQgZGF0YSwgb3B0aW9uYWxseSB0d2Vha2VkIHdpdGggdGhlIHRhZ2dlZDxicj5oYXNo IG9mIHRoZSBtZXJrbGUgdHJlZSBwZXIgQklQLTAzNDEgWzNdLjxkaXY+TWFraW5nIGJvdGggdGhl IHR3ZWFrcyBvcHRpb25hbCBhbGxvd3MgdG8gc2ltcGxpZnkgdGhlIGNvZGUsIGFuZCBhbHNvIHRv IG9idGFpbjwvZGl2PjxkaXY+bW9yZSBjb21wYWN0IHNjcmlwdHMgaW4gc29tZSBzcGVuZGluZyBw YXRocy48YnI+PGJyPkluIHdvcmRzOjxicj48YnI+LSBPUF9DSEVDS0lOUFVUQ09OVFJBQ1RWRVJJ Rlk6IHZlcmlmeSB0aGF0IHRoZSBjdXJyZW50IGlucHV0J3MgaW50ZXJuYWwga2V5PGJyPiAgY29u dGFpbnMgc29tZSBlbWJlZGRlZCBkYXRhICh3aGljaCB3b3VsZCB0eXBpY2FsbHkgYmUgcGFzc2Vk IHRocm91Z2ggdGhlPGJyPiAgd2l0bmVzcyBzdGFjayk8YnI+LSBPUF9DSEVDS09VVFBVVENPTlRS QUNUVkVSSUZZOiB2ZXJpZnkgdGhhdCBhIGdpdmVuIG91dHB1dCBpcyBhIGNlcnRhaW4gUDJUUjxi cj4gIG91dHB1dCBzY3JpcHQgY29udGFpbmluZyB0aGUgZGVzaXJlZCBlbWJlZGRlZCBkYXRhLjxi cj48YnI+VEJEIGlmIHRoZSB0d2Vha2luZyB1c2VkIGZvciB0aGUgZW1iZWRkZWQgZGF0YSB0d2Vh ayBzaG91bGQgdXNlIGEgdGFnZ2VkIGhhc2g7PGJyPm9taXR0ZWQgZm9yIHNpbXBsaWNpdHkgaW4g dGhpcyBkZW1vIGltcGxlbWVudGF0aW9uLjxicj48YnI+IyMjIEFtb3VudCBwcmVzZXJ2YXRpb248 YnI+PGJyPkluIHRoZSBjb2RlIGFib3ZlIGFuZCBpbiB0aGUgbGlua2VkIGRlbW8gaW1wbGVtZW50 YXRpb24sIHRoZSBvcGNvZGVzIG9ubHk8YnI+b3BlcmF0ZSBvbiB0aGUgc2NyaXB0UHVia2V5OyBh IGNvbXBsZXRlIGltcGxlbWVudGF0aW9uIHdvdWxkIHdhbnQgdG8gbWFrZSBzdXJlPGJyPnRoYXQg YW1vdW50cyBhcmUgY29ycmVjdGx5IHByZXNlcnZlZC48YnI+PGJyPlRoZSBtb3N0IGRpcmVjdCBh bmQgZ2VuZXJhbCB3YXkgdG8gYWRkcmVzcyB0aGlzIHdvdWxkIGJlIHRvIGFsbG93IGRpcmVjdDxi cj5pbnRyb3NwZWN0aW9uIG9uIHRoZSBvdXRwdXQgYW1vdW50cy4gVGhpcyBoYXMgdGhlIGNvbXBs aWNhdGlvbiB0aGF0IG91dHB1dDxicj5hbW91bnRzIHJlcXVpcmUgNjQtYml0cyBhcml0aG1ldGlj cywgYXMgZGlzY3Vzc2VkIGluIHRoZSBjb250ZXh0IG9mIG90aGVyPGJyPnByb3Bvc2FscywgZm9y IGV4YW1wbGU6IFs0XS48YnI+PGJyPk9uZSBtb3JlIGxpbWl0ZWQgYXBwcm9hY2ggdGhhdCB3b3Jr cyB3ZWxsIGZvciBtYW55IGludGVyZXN0aW5nIGNvbnRyYWN0czxicj5pcyB0aGF0IG9mIHRoZSBk ZWZlcnJlZCBjaGVja3MsIGltcGxlbWVudGVkIGluIE9QX1ZBVUxUIFsyXS48YnI+VGhlIGlkZWEg aXMgdGhhdCBhbGwgdGhlIGFtb3VudHMgb2YgdGhlIGlucHV0cyB0aGF0IGNvbW1pdCB0byB0aGUg c2FtZSBvdXRwdXQ8YnI+c2NyaXB0IHdpdGggT1BfQ0hFQ0tPVVRQVVRDT05UUkFDVFZFUklGWSBh cmUgYWRkZWQgdG9nZXRoZXIsIGFuZCB0aGUgc2NyaXB0PGJyPmludGVycHJldGVyIHJlcXVpcmVz IHRoYXQgdGhlIGFtb3VudCBvZiB0aGF0IG91dHB1dCBpcyBub3Qgc21hbGxlciB0aGFuIHRoZTxi cj50b3RhbCBhbW91bnQgb2YgdGhvc2UgaW5wdXRzLiBUaGlzIGNoZWNrIGlzIHRoZXJlZm9yZSB0 cmFuc2FjdGlvbi13aWRlIHJhdGhlcjxicj50aGFuIGJlaW5nIHRlc3RlZCBkdXJpbmcgdGhlIGlu cHV0J3Mgc2NyaXB0IGV2YWx1YXRpb24uPGJyPjxicj5UaGlzIGJlaGF2aW91ciBpcyBhZGVxdWF0 ZSBmb3IgdmF1bHRzIGFuZCBsaWtlbHkgc3VpdGFibGUgZm9yIG1hbnkgb3RoZXI8YnI+YXBwbGlj YXRpb25zOyBob3dldmVyLCBpdCdzIG5vdCB0aGUgbW9zdCBnZW5lcmFsIGFwcHJvYWNoLiBJIGRp ZG4ndCB0cnkgdG88YnI+aW1wbGVtZW50IGl0IHlldCwgYW5kIGRlZmVyIHRoZSBkZWNpc2lvbiBv biB0aGUgYmVzdCBhcHByb2FjaCB0byBhIGxhdGVyIHRpbWUuPGJyPjxicj4jIyMgRXh0ZW5zaW9u czxicj48YnI+VGhlIG9wY29kZXMgYWJvdmUgYXJlIG5vdCBlbm91Z2ggZm9yIHRoZSBmdWxsIGdl bmVyYWxpdHkgb2YgTUFUVDogb25lIHdvdWxkPGJyPm5lZWQgdG8gYWRkIGFuIG9wY29kZSBsaWtl IE9QX1NIQTI1NkNBVCB0byBhbGxvdyB0aGUgZGF0YSBlbWJlZGRpbmcgdG8gY29tbWl0PGJyPnRv IG11bHRpcGxlIHBpZWNlcyBvZiBkYXRhLjxicj5UaGlzIGlzIG5vdCB1c2VkIGluIHRvZGF5J3Mg cG9zdCwgdGhlcmVmb3JlIEkgbGVmdCBpdCBvdXQgb2YgdGhlc2UgY29kZSBleGFtcGxlcy48YnI+ PGJyPkl0IHdvdWxkIGJlIGVhc3kgdG8gZXh0ZW5kIE9QX0NIRUNLT1VUUFVUQ09OVFJBQ1RWRVJJ RlkgdG8gYWxzbyBhcHBseSBmb3I8YnI+YW4gYXJiaXRyYXJ5IGlucHV0ICh0eXBpY2FsbHksIGRp ZmZlcmVudCBmcm9tIHRoZSBjdXJyZW50bHkgZXhlY3V0ZWQgb25lKTsgdGhlcmU8YnI+YXJlIGxp a2VseSB1c2UgY2FzZXMgZm9yIHRoYXQsIGFsbG93aW5nIHRvIGRlZmluZSBjb250cmFjdHMgd2l0 aCBtb3JlIGNvbXBsZXg8YnI+Y3Jvc3MtaW5wdXQgc2VtYW50aWNzLCBidXQgSSBwcmVmZXJyZWQg dG8ga2VlcCB0aGluZ3Mgc2ltcGxlLjxicj48YnI+T2YgY291cnNlLCBvbmUgY291bGQgYWxzbyBl bnRpcmVseSByZXBsYWNlIENJQ1YvQ09DViB3aXRoIGdlbmVyaWMgZnVsbDxicj5pbnRyb3NwZWN0 aW9uIG9uIGlucHV0cy9vdXRwdXQncyBwcm9ncmFtLCBwbHVzIG9wY29kZXMgZm9yIGVsbGlwdGlj IGN1cnZlIG1hdGg8YnI+YW5kIHRhZ2dlZCBoYXNoZXMuPGJyPjxicj48YnI+IyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyM8YnI+IyAgICBQQVJUIDI6IFZhdWx0cyB3aXRoIE1BVFQ8YnI+IyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyM8YnI+PGJyPkluIHRoZSByZXN0IG9mIHRoaXMgcG9zdCwgSSB3 aWxsIGRvY3VtZW50IHRoZSBmaXJzdCBhdHRlbXB0IGF0IGNyZWF0aW5nIGEgdmF1bHQ8YnI+dXNp bmcgdGhlIG9wY29kZXMgZGVzY3JpYmVkLjxicj48YnI+V2hpbGUgbm90IGFuIGF0dGVtcHQgYXQg Y2xvbmluZyBleGFjdGx5IHRoZSBmdW5jdGlvbmFsaXR5IG9mIE9QX1ZBVUxUIFsyXSw8YnI+aXQg Ym9ycm93cyBoZWF2aWx5IGZyb20gdGhlIGV4Y2VsbGVudCB3b3JrIHRoYXQgd2FzIGRvbmUgdGhl cmUuPGJyPjxicj5JbiBwYXJ0aWN1bGFyLCBpdCBhbHNvIGluaGVyaXRzIHRoZSBjaG9pY2Ugb2Yg dXNpbmcgT1BfQ1RWIGFzIGEgcHJpbWl0aXZlLDxicj5idWlsZGluZyBvbiB0b3Agb2YgdGhlIGJp dGNvaW4taW5xdWlzaXRpb24ncyBjdXJyZW50IGJyYW5jaCB0aGF0IGhhcyBhbHJlYWR5PGJyPm1l cmdlZCBPUF9DVFYuIFJlYXNvbmFibGUgdmF1bHRzIHdvdWxkIGJlIHBvc3NpYmxlIHdpdGhvdXQg Q1RWLCBidXQgdGhleTxicj53b3VsZCBiZSBsZXNzIGVmZmljaWVudCwgcGFydGljdWxhcmx5IGlu IHRoZSBjYXNlIG9mIHNlbmRpbmcgdG8gbWFueSBhZGRyZXNzZXM8YnI+aW4gYSBzaW5nbGUgdW52 YXVsdGluZyBmbG93Ljxicj48YnI+IyMjIERpc3RpbGxpbmcgT1BfVkFVTFQ8YnI+PGJyPkFic3Ry YWN0aW5nIGZyb20gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIEkgbWVudGFsbHkgbW9kZWwg YSB2YXVsdCBhcyBhPGJyPnNpbXBsZSBzdGF0ZSBtYWNoaW5lIHdpdGggMiBzdGF0ZXM6IFtWXSBh bmQgW1VdOjxicj48YnI+W1ZdOiB0aGUgaW5pdGlhbCB2YXVsdCBVVFhPKHMpOzxicj5bVV06IHRo ZSB1dHhvIHByb2R1Y2VkIGJ5IHRoZSAidHJpZ2dlciB0cmFuc2FjdGlvbiIgZHVyaW5nIHVudmF1 bHRpbmcuPGJyPjxicj5PbiB0aGUgdHlwaWNhbCBwYXRoOiBvbmUgb3IgbW9yZSBbVl0gVVRYT3Mg YXJlIHNlbnQgdG8gdGhlIFtVXSBzdGF0ZSwgYW5kIGFmdGVyPGJyPmEgdGltZWxvY2sgc2V0IG9u IFtVXSBleHBpcmVzLCBbVV0gaXMgc3BlbnQgdG8gb25lIG9yIHNldmVyYWwgZGVzdGluYXRpb25z Ljxicj5DcnVjaWFsbHksIHRoZSBkZXN0aW5hdGlvbiBvdXRwdXRzIGFuZCBhbW91bnRzIGFyZSBh bHJlYWR5IGRlY2lkZWQgd2hlbiBbVl0gaXM8YnI+c3BlbnQgaW50byBbVV0uPGJyPjxicj5BdCBh bnkgdGltZSBiZWZvcmUgdGhlIGZ1bmRzIGFyZSBzcGVudCBmcm9tIFtVXSwgdGhleSBjYW4gYWx3 YXlzIGJlIHNwZW50IGJ5PGJyPnNlbmRpbmcgdGhlbSB0byBzb21lIHNwZWNpZmllZCByZWNvdmVy eSBwYXRoLjxicj48YnI+VGhlcmUgYXJlIHR3byBrZXkgZWxlbWVudHMgdGhhdCBhcmUgcGFydCBv ZiBPUF9WQVVMVCdzIHNlbWFudGljcywgYW5kIGNvdWxkIGJlPGJyPmdlbmVyYWxpemVkOjxicj48 YnI+4oiSIEZvcmNpbmcgdGhlIHNjcmlwdC9hbW91bnQgb2YgdGhlIG5leHQgc3RlcG9uPGJyPuKI kiBTdG9yaW5nIHNvbWUgZGF0YSBmb3IgZnV0dXJlIFNjcmlwdCdzIGFjY2VzcyAoaW4gdGhlIHZh dWx0J3MgY2FzZSwgYSBoYXNoPGJyPiAgIHRoYXQgY29tbWl0cyB0byB0aGUgZmluYWwgd2l0aGRy YXdhbCB0cmFuc2FjdGlvbikuPGJyPjxicj5DSUNWL0NPQ1YgZ2VuZXJhbGl6ZSBib3RoIHRvIGFy Yml0cmFyeSBzY3JpcHRzICh0YXB0cmVlcykgYW5kIHN0YXRlIG1hY2hpbmVzLDxicj5hbmQgdG8g ZHluYW1pY2FsIGFuZCB3aXRuZXNzLWRlcGVuZGVudCBkYXRhIGVtYmVkZGVkIGluIHRoZSBwdWJr ZXkgb2YgYSBQMlRSPGJyPm91dHB1dC48YnI+PGJyPiMjIyBWYXVsdCBwYXJhbWV0ZXJzPGJyPjxi cj5BIGNvbnRyYWN0IHRoYXQgcmVwcmVzZW50cyBhIHZhdWx0IGhhcyB0aGUgZm9sbG93aW5nIHBh cmFtZXRlcnMgKGhhcmRjb2RlZCBpbjxicj50aGUgc2NyaXB0IHdoZW4gdGhlIHZhdWx0IGlzIGNy ZWF0ZWQpOjxicj48YnI+LSBhbHRlcm5hdGVfcGs6IGEga2V5IHRoYXQgY2FuIGJlIHVzZWQgYW55 IHRpbWUuPGJyPi0gc3BlbmRfZGVsYXk6IHRoZSByZWxhdGl2ZSB0aW1lbG9jayBiZWZvcmUgdGhl IHdpdGhkcmF3YWwgY2FuIGJlIGZpbmFsaXplZDs8YnI+LSByZWNvdmVyX3BrOiBhIHB1YmtleSBm b3IgYSBQMlRSIG91dHB1dCB3aGVyZSBmdW5kcyBjYW4gYmUgc2VudCBhdCBhbnkgdGltZS48YnI+ PGJyPlRoZSBhbHRlcm5hdGVfcGsgaXMgYSBwdWJrZXkgdGhhdCBjYW4gb3B0aW9uYWxseSBiZSB1 c2VkIGFzIHRoZSBrZXktcGF0aDxicj5zcGVuZGluZyBjb25kaXRpb24gZm9yIGJvdGggc3RhdGVz IFtWXSBhbmQgW1VdLiBJZiBzdWNoIGEgc3BlbmRpbmcgY29uZGl0aW9uIGlzIG5vdDxkaXY+ZGVz aXJlZCwgaXQgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBOVU1TIHBvaW50LCBtYWtpbmcgdGhlIGtl eS1wYXRoIHVuc3BlbmRhYmxlLjxicj48YnI+VGhlIHNwZW5kX2RlbGF5IGlzIHRoZSBudW1iZXIg b2YgYmxvY2tzIHRoYXQgbXVzdCBiZSBtaW5lZCBiZWZvcmUgdGhlIGZpbmFsPGJyPndpdGhkcmF3 YWwgdHJhbnNhY3Rpb248YnI+PGJyPkluIHRoaXMgZXhhbXBsZSB3ZSBhbHNvIHVzZSBhbiB1bnZh dWx0X3BrIG5lZWRlZCB0byBhdXRob3JpemUgdGhlIHVudmF1bHRpbmc8YnI+cHJvY2VzcyAodGhh dCBpcywgc3BlbmQgW1ZdIGludG8gW1VdKTsgdGhpcyBjb3VsZCBiZSByZXBsYWNlZCB3aXRoIGFu eSBtaW5pc2NyaXB0PGJyPm9yIG90aGVyIGNvbmRpdGlvbnMgZXhwcmVzc2libGUgaW4gU2NyaXB0 Ljxicj48YnI+IyMjIFAyVFIgc3RydWN0dXJlIGZvciBbVl0gKHZhdWx0KTxicj48YnI+aW50ZXJu YWwga2V5OiBhbHRlcm5hdGVfcGs8YnI+PGJyPlNjcmlwdCAxOiAidHJpZ2dlciI8YnI+ICAgICAg ICAjIHdpdG5lc3M6ICZsdDtvdXRfaSZndDsgJmx0O2N0di1oYXNoJmd0Ozxicj48Zm9udCBmYWNl PSJtb25vc3BhY2UiPns8YnI+ICAgICZsdDthbHRlcm5hdGVfcGsmZ3Q7LDxicj4gICAgJmx0O21l cmtsZSByb290IG9mIFUncyB0YXB0cmVlJmd0Oyw8YnI+ICAgIDIsIE9QX1JPTEwsPGJyPiAgICBP UF9DSEVDS09VVFBVVENPTlRSQUNUVkVSSUZZLDxicj48YnI+ICAgICZsdDt1bnZhdWx0X3BrJmd0 Ozxicj4gICAgT1BfQ0hFQ0tTSUc8YnI+fTwvZm9udD48YnI+PGJyPlNjcmlwdCAyOiAicmVjb3Zl ciI8YnI+ICAgICAgICAjIHdpdG5lc3M6ICZsdDtvdXRfaSZndDs8YnI+PGZvbnQgZmFjZT0ibW9u b3NwYWNlIj57PGJyPiAgICByZWNvdmVyX3BrLDxicj4gICAgT1BfMCwgICAgICAgICAgICAgICAg ICAgICAgICAgICMgbm8gZGF0YSB0d2Vhazxicj4gICAgT1BfMCwgICAgICAgICAgICAgICAgICAg ICAgICAgICMgbm8gdGFwdHdlYWs8YnI+ICAgIE9QX0NIRUNLT1VUUFVUQ09OVFJBQ1RWRVJJRlks PGJyPiAgICBPUF9UUlVFPGJyPn08L2ZvbnQ+PGJyPjxicj5UaGUgInRyaWdnZXIiIHNjcmlwdCBy ZXF1aXJlcyBpbiB0aGUgd2l0bmVzcyBhbiBvdXRwdXQgaW5kZXggYW5kIHRoZSBjdHYtaGFzaDxi cj50aGF0IGRlc2NyaWJlcyB0aGUgd2l0aGRyYXdhbCB0cmFuc2FjdGlvbi48YnI+Q09DViBmb3Jj ZXMgdGhlIG91dHB1dCB0byBjb250YWluIHRoZSBjdHYtaGFzaCBhcyBlbWJlZGRlZCBkYXRhLjxi cj5UaGF0J3MgZm9sbG93ZWQgYnkgdGhlIHVudmF1bHRpbmcgY29uZGl0aW9uIOKIkiBpbiB0aGlz IGV4YW1wbGUsIGEgc2ltcGxlPGJyPnNpZ25hdHVyZSBjaGVjay48YnI+PGJyPlRoZSAicmVjb3Zl ciIgc2NyaXB0IGRvZXNuJ3QgcmVxdWlyZSBhbnkgc2lnbmF0dXJlLCBhbmQgaXQgc2ltcGx5IGZv cmNlczxicj50aGUgb3V0cHV0IHNwZWNpZmllZCBpbiB0aGUgd2l0bmVzcyB0byBiZSBhIFAyVFIg b3V0cHV0IHdpdGggcmVjb3Zlcl9wayBhcyBpdHM8YnI+cHVia2V5Ljxicj48YnI+KE9taXR0aW5n IHRoZSAicmVjb3ZlciIgc2NyaXB0IGluIFtWXSB3b3VsZCByZWR1Y2UgdGhlIHNpemUgb2YgdGhl IHdpdG5lc3MgYnk8YnI+MzIgYnl0ZXMgaW4gdGhlIGV4cGVjdGVkIGNhc2UsIGFuZCBtaWdodCBi ZSBwcmVmZXJyZWQgZm9yIHNvbWUgdXNlcnMpPGJyPjxicj4jIyMgUDJUUiBzdHJ1Y3R1cmUgZm9y IFtVXSAodW52YXVsdGluZyBzdGF0ZSk8YnI+PGJyPmludGVybmFsIGtleTogYWx0ZXJuYXRlX3Br ICh0d2Vha2VkIHdpdGggY3R2X2hhc2gpPGJyPjxicj5TY3JpcHQgMTogIndpdGhkcmF3YWwiPGJy PiAgICAgICAgIyB3aXRuZXNzOiAmbHQ7Y3R2X2hhc2gmZ3Q7PGJyPjxmb250IGZhY2U9Im1vbm9z cGFjZSI+ezxicj4gICAgT1BfRFVQLDxicj48YnI+ICAgICMgY2hlY2sgdGhhdCB0aGUgdG9wIG9m IHRoZSBzdGFjayBpcyB0aGU8YnI+ICAgICMgZW1iZWRkZWQgZGF0YSBpbiB0aGUgY3VycmVudCBp bnB1dDxicj4gICAgJmx0O2FsdGVybmF0ZV9wayZndDssIE9QX1NXQVAsPGJyPiAgICBPUF9DSEVD S0lOUFVUQ09OVFJBQ1RWRVJJRlksPGJyPjxicj4gICAgIyBDaGVjayB0aW1lbG9jazxicj4gICAg Jmx0O3NwZW5kX2RlbGF5Jmd0Oyw8YnI+ICAgIE9QX0NIRUNLU0VRVUVOQ0VWRVJJRlksPGJyPiAg ICBPUF9EUk9QLDxicj48YnI+ICAgICMgQ2hlY2sgdGhhdCB0aGUgdHJhbnNhY3Rpb24gb3V0cHV0 IGlzIGFzIGV4cGVjdGVkPGJyPiAgICBPUF9DSEVDS1RFTVBMQVRFVkVSSUZZPGJyPn08L2ZvbnQ+ PGJyPjxicj5TY3JpcHQgMjogInJlY292ZXIiPGJyPiAgICAgICAgIyB3aXRuZXNzOiAmbHQ7b3V0 X2kmZ3Q7PGJyPjxmb250IGZhY2U9Im1vbm9zcGFjZSI+ezxicj4gICAgJmx0O3JlY292ZXJfcGsm Z3Q7LDxicj4gICAgT1BfMCw8YnI+ICAgIE9QXzAsPGJyPiAgICBPUF9DSEVDS09VVFBVVENPTlRS QUNUVkVSSUZZLDxicj4gICAgT1BfVFJVRTxicj59PC9mb250Pjxicj48YnI+VGhlICJ3aXRoZHJh d2FsIiBmaW5hbGl6ZXMgdGhlIHRyYW5zYWN0aW9uLCBieSBjaGVja2luZyB0aGF0IHRoZSB0aW1l bG9jayBleHBpcmVkIGFuZDwvZGl2PjxkaXY+dGhlIG91dHB1dHMgc2F0aXNmeSB0aGUgQ1RWIGhh c2ggdGhhdCB3YXMgY29tbWl0dGVkIHRvIGluIHRoZSBwcmV2aW91cyB0cmFuc2FjdGlvbi48YnI+ PGJyPlRoZSAicmVjb3ZlciIgc2NyaXB0IGlzIGlkZW50aWNhbCBhcyBiZWZvcmUuPGJyPjxicj48 YnI+IyMjIERpZmZlcmVuY2VzIHdpdGggT1BfVkFVTFQgdmF1bHRzPGJyPjxicj5IZXJlIEkgcmVm ZXIgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIE9QX1ZBVUxUIGF0IHRoZSB0aW1lIG9mIHdyaXRp bmcuIFs1XTxicj5JdCBpcyBub3QgYSB0aG9yb3VnaCBhbmFseXNpcy48YnI+PGJyPlVubGlrZSB0 aGUgaW1wbGVtZW50YXRpb24gYmFzZWQgb24gT1BfVkFVTFQsIHRoZSBbVl0gdXR4b3MgZG9uJ3Qg aGF2ZSBhbiBvcHRpb248YnI+dG8gYWRkIGFuIGFkZGl0aW9uYWwgb3V0cHV0IHRoYXQgaXMgc2Vu dCBiYWNrIHRvIHRoZSBzYW1lIGV4YWN0IHZhdWx0Ljxicj5TdXBwb3J0aW5nIHRoaXMgdXNlIGNh c2Ugc2VlbXMgdG8gcmVxdWlyZSBhIG1vcmUgZ2VuZXJhbCB3YXkgb2YgaGFuZGxpbmcgdGhlPGJy PmRpc3RyaWJ1dGlvbiBvZiBhbW91bnRzIHRoYW4gd2hhdCBJIGRpc2N1c3NlZCBpbiB0aGUgc2Vj dGlvbiBhYm92ZTogdGhhdCB3b3VsZDxicj5pbiBmYWN0IG5lZWQgdG8gYmUgZ2VuZXJhbGl6ZWQg dG8gdGhlIGNhc2Ugb2YgbXVsdGlwbGU8YnI+T1BfQ0hFQ0tPVVRQVVRDT05UUkFDVFZFUklGWSBv cGNvZGVzIGV4ZWN1dGVkIGZvciB0aGUgc2FtZSBpbnB1dC48YnI+PGJyPkJ5IHNlcGFyYXRpbmcg dGhlIGN0di1oYXNoICh3aGljaCBpcyBjb25zaWRlcmVkICJkYXRhIikgZnJvbSB0aGUgc2NyaXB0 cyBpbiB0aGU8YnI+dGFwdHJlZSwgb25lIGVudGlyZWx5IGF2b2lkcyB0aGUgbmVlZCB0byBkeW5h bWljYWxseSBjcmVhdGUgdGFwdHJlZXMgYW5kPGJyPnJlcGxhY2UgbGVhdmVzIGluIHRoZSBjb3Zl bmFudC1lbmN1bWJlcmVkIFVUWE9zOyBpbiBmYWN0LCB0aGUgdGFwdHJlZXMgb2YgW1ZdPGJyPmFu ZCBbVV0gYXJlIGFscmVhZHkgc2V0IGluIHN0b25lIHdoZW4gW1ZdIHV0eG9zIGFyZSBjcmVhdGVk LCBhbmQgb25seSB0aGU8YnI+ImRhdGEiIHBvcnRpb24gb2YgW1VdJ3Mgc2NyaXB0UHViS2V5IGlz IGR5bmFtaWNhbGx5IGNvbXB1dGVkLiBJbiBteSBvcGluaW9uLDxicj50aGlzIG1ha2VzIGl0IHN1 YnN0YW50aWFsbHkgZWFzaWVyIHRvIHByb2dyYW0gInN0YXRlIG1hY2hpbmVzIiB0aGF0IGNvbnRy b2wgdGhlPGJyPmJlaGF2aW9yIG9mIGNvaW5zLCBvZiB3aGljaCB2YXVsdHMgYXJlIGEgc3BlY2lh bCBjYXNlLjxicj48YnI+SSBob3BlIHlvdSdsbCBmaW5kIHRoaXMgaW50ZXJlc3RpbmcsIGFuZCBs b29rIGZvcndhcmQgdG8geW91ciBjb21tZW50cy48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PlNh bHZhdG9yZSBJbmdhbGE8YnI+PGJyPjxicj5bMV0gLSA8YSBocmVmPSJodHRwczovL2xpc3RzLmxp bnV4Zm91bmRhdGlvbi5vcmcvcGlwZXJtYWlsL2JpdGNvaW4tZGV2LzIwMjItTm92ZW1iZXIvMDIx MjIzLmh0bWwiIHJlbD0ibm9yZWZlcnJlciBub2ZvbGxvdyBub29wZW5lciIgdGFyZ2V0PSJfYmxh bmsiPmh0dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9waXBlcm1haWwvYml0Y29pbi1k ZXYvMjAyMi1Ob3ZlbWJlci8wMjEyMjMuaHRtbDwvYT48YnI+WzJdIC0gPGEgaHJlZj0iaHR0cHM6 Ly9naXRodWIuY29tL2JpdGNvaW4vYmlwcy9wdWxsLzE0MjEiIHJlbD0ibm9yZWZlcnJlciBub2Zv bGxvdyBub29wZW5lciIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2lu L2JpcHMvcHVsbC8xNDIxPC9hPjxicj5bM10gLSA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20v Yml0Y29pbi9iaXBzL2Jsb2IvbWFzdGVyL2JpcC0wMzQxLm1lZGlhd2lraSIgcmVsPSJub3JlZmVy cmVyIG5vZm9sbG93IG5vb3BlbmVyIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9naXRodWIuY29t L2JpdGNvaW4vYmlwcy9ibG9iL21hc3Rlci9iaXAtMDM0MS5tZWRpYXdpa2k8L2E+PGJyPls0XSAt IDxhIGhyZWY9Imh0dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9waXBlcm1haWwvYml0 Y29pbi1kZXYvMjAyMS1TZXB0ZW1iZXIvMDE5NDIwLmh0bWwiIHJlbD0ibm9yZWZlcnJlciBub2Zv bGxvdyBub29wZW5lciIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBzOi8vbGlzdHMubGludXhmb3VuZGF0 aW9uLm9yZy9waXBlcm1haWwvYml0Y29pbi1kZXYvMjAyMS1TZXB0ZW1iZXIvMDE5NDIwLmh0bWw8 L2E+PGJyPls1XSAtIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luL2JpcHMvYmxv Yi83MTEyZjMwOGIzNTZjZGYwYzUxZDkxN2RiZGMxYjk4ZTMwNjIxZjgwL2JpcC0wMzQ1Lm1lZGlh d2lraSIgcmVsPSJub3JlZmVycmVyIG5vZm9sbG93IG5vb3BlbmVyIiB0YXJnZXQ9Il9ibGFuayI+ aHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW4vYmlwcy9ibG9iLzcxMTJmMzA4YjM1NmNkZjBjNTFk OTE3ZGJkYzFiOThlMzA2MjFmODAvYmlwLTAzNDUubWVkaWF3aWtpPC9hPjxicj48L2Rpdj48L2Rp dj48L2Rpdj4NCg0KICAgICAgICA8L2Jsb2NrcXVvdGU+PGJyPg0KICAgIDwvZGl2Pg== --b1_Q581qU1RY6fcpVI05uu0KPWhScRcexk5WHyMBmG2U--