Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vjKDR-00D1ov-18 for pgsql-hackers@arkaria.postgresql.org; Fri, 23 Jan 2026 16:40:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vjKDQ-000bFG-0t for pgsql-hackers@arkaria.postgresql.org; Fri, 23 Jan 2026 16:40:56 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vjKDP-000bF4-29 for pgsql-hackers@lists.postgresql.org; Fri, 23 Jan 2026 16:40:56 +0000 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1vjKDL-000000006aQ-16Tg for pgsql-hackers@postgresql.org; Fri, 23 Jan 2026 16:40:55 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1769186448; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=u2QXv+8TXEj+R9DyqSDXm6DH1Re87WgnKQKJy5OVAr4=; b=cYj5n1q4A+FxrRfamie1RrcsXFyDoka5tulYBw459xeuk1ch39QqOBDVjLFGJgrzC41Cj2 m9FMRkHeP4zuljkIj2o9bBc+jnx2K6HQhAL7D+McLYnU9EZ6XQ3IRjHpsNOghYSQNrlA0+ zI36M49mDnMlROehld9plUsG+9LAybE= Received: from mail-ej1-f71.google.com (mail-ej1-f71.google.com [209.85.218.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-360-8NY0YVV4OGy6_C1gJQli-Q-1; Fri, 23 Jan 2026 11:40:46 -0500 X-MC-Unique: 8NY0YVV4OGy6_C1gJQli-Q-1 X-Mimecast-MFC-AGG-ID: 8NY0YVV4OGy6_C1gJQli-Q_1769186445 Received: by mail-ej1-f71.google.com with SMTP id a640c23a62f3a-b8720608e53so377093266b.1 for ; Fri, 23 Jan 2026 08:40:45 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769186445; x=1769791245; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=U/iLqnqzk8s3QbhO9ETqEYT6tigCOVty9frXf3D5bsE=; b=deddBV9j+MJFy+dTlpyRp6h01HaeNr020ux0Z+3JnxBktaD8SPxnZnLSzhWEdQbSss JtMB1VstVtWUJ5VCQzd6sTWqbuVqrJCEJARK+TPIDxyZ+ihwRq2CSVnNdB+ogMxIhQ51 cI2rRcMyvRB58/3Of5MGR7qN367GgowbeaV+s6B6S5HVYzqmsZ08LkiIkGCjBO5EXLGM oTqmcbWY/xvYNQI11Y74qXRwykikcceojZEeZII3SL1GgUkdotcOetuO7vztgFXKqAfA FHaShK9vfEiTiFTdWmBukMC5MOkUkN4zlEh5j8s1K+H6Y9GsMHqtSyvk4Ym5Yeob+4Ah LagA== X-Gm-Message-State: AOJu0Yz/pcwEE2MLUh7HtEgLN1U0WG0Ltf39B63bI0Nyb2kNc+n0xluS SLv5FJDdRGLB+f+B9w6hSXS3X1iDne/pxQnNyMFlxBHQhykMpXLTrDduckiQ/x275XQD9cWhblQ WJyWYV4qKQlOzSCu/Tlcs60QHndneo+o55oGRTcnpQN4cmsC5bgxDUbnfqK3eYWXbPc0rgy3Nz8 K78yC4gIAVJEkCBthSXVUF5DUkTeELujOA8Fs9Y52r X-Gm-Gg: AZuq6aIFH9sw1Lr6XTdfH44LRTj8zs6n6G1itbtjyPwA7RZnuYnpHPl/IYiLGAeg5uj 14Szs3yuQp1WbXAlFp8kNHS1Jdkcxd61nEsxhSX8axLrQ+Ilk/mgt5mieqTjsVh+WHOJbRiQW5c i/+08KOM80EmB/fxMV85CTl8Rk8ZXJQTcIS5BPug0V2cMuh1AJtlY+8TzaNIwcoLyczw== X-Received: by 2002:a17:907:944e:b0:b86:edb9:c01b with SMTP id a640c23a62f3a-b885ac100dcmr264325366b.8.1769186444809; Fri, 23 Jan 2026 08:40:44 -0800 (PST) X-Received: by 2002:a17:907:944e:b0:b86:edb9:c01b with SMTP id a640c23a62f3a-b885ac100dcmr264323766b.8.1769186444330; Fri, 23 Jan 2026 08:40:44 -0800 (PST) MIME-Version: 1.0 References: <7bcc0420-d457-4af5-a459-a4e5d929a665@vondra.me> <7gbzkoxrpqvj2sgxof4pqirz7pf6wb5vizak3mxrz2zpvrf3pa@lvnwdsy3em56> In-Reply-To: From: Filip Janus Date: Fri, 23 Jan 2026 17:40:32 +0100 X-Gm-Features: AZwV_QidWSBd9qhszA3TqdxWlrJ77Nv9cc5KVWHvOmSS3bye7bZEb0TtwG1bMiI Message-ID: Subject: Re: Proposal: Adding compression of temporary files To: lakshmi Cc: pgsql-hackers , zsolt.parragi@percona.com X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: kDCgTKwBg0mqqnjct76_h2gpo2Ixd8TOW3wmtO3MuzI_1769186445 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="0000000000008f3231064910d10a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000008f3231064910d10a Content-Type: multipart/alternative; boundary="0000000000008f322f064910d108" --0000000000008f322f064910d108 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi all, Thanks for the feedback and the provided patch. I've addressed your findings and proposals. Lakshmi's documentation patch was incorporated. -Filip- st 21. 1. 2026 v 7:30 odes=C3=ADlatel lakshmi naps= al: > HI all, > While testing the temp file compression patch,noticed that the new > temp_file_compression GUC isn't documented yet.I put together a small doc= s > patch to add a short description and clarify that the effect of compressi= on > depends on the workload(for example ,hash join spills may not show visibl= e > size reduction due to fixed_size chunks). > > patch is attached.Happy to adjust the wording if needed. > thanks, > lakshmi > > On Tue, Jan 20, 2026 at 4:21=E2=80=AFPM lakshmi = wrote: > >> Hi Filip, >> >> I tested both patches on current master using git am -3 .They apply >> cleanly,build fine,and the temp_file _compression GUC works as expected. >> Query results are unchanged. >> >> For hash join spill test,temp files were created as expected,but the >> logged size were same for no,lz4,and pglz,which seems consistent with >> fixed-size fileset chunking.It might be helpful to briefly note this in = the >> documentation to avoid confusion. >> >> Thanks for working on this . >> best regards, >> lakshmi >> >> On Tue, Jan 20, 2026 at 4:10=E2=80=AFAM Zsolt Parragi >> wrote: >> >>> Hello! >>> >>> I tried to review the code. It compiled, the test suite passed. >>> >>> I noticed two typos: >>> >>> buffile.c:77 - "Disaled" >>> buffile.c:133 - "mathods" >>> >>> And a few other small findings: >>> >>> buffile.h:35 and buffile.c:63 - same constants defined first as an >>> Enum and then as #defines - code builds properly without the defines. >>> >>> buffile.c:121 - compress_tempfile is defined, set to false at :167, >>> but never used otherwise >>> >>> guc_tables.c:470 - the comment says that pglz isn't supported yet, but >>> we have a value for it, and I see support for it in the code >>> >>> buffile.c:659: (and at other places) if USE_LZ4 is undefined, the >>> codepath doesn't do anything. I think these ifdefs should follow how >>> other compression code works, such as wal compression where there's an >>> #else path with elog(ERROR, ...) >>> Similarly, maybe there should be an explicit TEMP_NONE_COMPRESSION >>> branch that does nothing, and the default branch should be an error? >>> >>> buffile.c:265: If seek isn't supported/limited, shouldn't there be at >>> least an assertion about it in BufFileSeek? And tell isn't mentioned, >>> but it seems to me that tell also doesn't work properly. >>> >> --0000000000008f322f064910d108 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi all,=C2=A0
Thanks for the feedback and t= he provided patch.
I've addressed=C2=A0your findings and prop= osals.=C2=A0Lakshmi's documentation patch was incorporated.=C2=A0 =C2= =A0

=C2=A0 =C2=A0 -Filip-


<= div class=3D"gmail_quote gmail_quote_container">
st 21. 1. 2026 v=C2=A07:30 odes=C3=ADlatel lakshmi <lakshmigcdac@gmail.com> napsal:
= HI all,
While testing the temp file compression patch,noticed that the n= ew temp_file_compression GUC isn't documented yet.I put together a smal= l docs patch to add a short description and clarify that the effect=C2=A0of= compression depends on the workload(for example ,hash join spills may not = show visible size reduction due to fixed_size chunks).

patch is atta= ched.Happy to adjust the wording if needed.
thanks,
lakshmi

=
On Tue, Ja= n 20, 2026 at 4:21=E2=80=AFPM lakshmi <lakshmigcdac@gmail.com> wrote:
<= blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l= eft:1px solid rgb(204,204,204);padding-left:1ex">
Hi Filip,=

I tested both patches on current master using git am -3 .They apply= cleanly,build fine,and the temp_file _compression GUC works as expected.Query results are unchanged.

For hash join spill test,temp files w= ere created as expected,but the logged size were same for no,lz4,and pglz,w= hich seems consistent with fixed-size fileset chunking.It might be helpful = to briefly note this in the documentation to avoid confusion.

Thanks= for working on this .
best regards,
lakshmi

On Tue, Jan 20, 2026 at 4= :10=E2=80=AFAM Zsolt Parragi <zsolt.parragi@percona.com> wrote:
Hello!

I tried to review the code. It compiled, the test suite passed.

I noticed two typos:

buffile.c:77 - "Disaled"
buffile.c:133 - "mathods"

And a few other small findings:

buffile.h:35 and buffile.c:63 - same constants defined first as an
Enum and then as #defines - code builds properly without the defines.

buffile.c:121 - compress_tempfile is defined, set to false at :167,
but never used otherwise

guc_tables.c:470 - the comment says that pglz isn't supported yet, but<= br> we have a value for it, and I see support for it in the code

buffile.c:659: (and at other places) if USE_LZ4 is undefined, the
codepath doesn't do anything. I think these ifdefs should follow how other compression code works, such as wal compression where there's an<= br> #else path with elog(ERROR, ...)
Similarly, maybe there should be an explicit TEMP_NONE_COMPRESSION
branch that does nothing, and the default branch should be an error?

buffile.c:265: If seek isn't supported/limited, shouldn't there be = at
least an assertion about it in BufFileSeek? And tell isn't mentioned, but it seems to me that tell also doesn't work properly.
--0000000000008f322f064910d108-- --0000000000008f3231064910d10a Content-Type: application/octet-stream; name="0002-Add-regression-tests-for-temporary-file-compression.patch" Content-Disposition: attachment; filename="0002-Add-regression-tests-for-temporary-file-compression.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkr3svy01 RnJvbSBhNWM2YjdiMGY5NzdhZGU5ODg0ZDczNTBkZWI5ZmRmOTNkZjMxMmFlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBGaWxpcCBKYW51cyA8ZmphbnVzQHJlZGhhdC5jb20+CkRhdGU6 IFRodSwgMzEgSnVsIDIwMjUgMTQ6MDI6NDUgKzAyMDAKU3ViamVjdDogW1BBVENIIDIvMl0gQWRk IHJlZ3Jlc3Npb24gdGVzdHMgZm9yIHRlbXBvcmFyeSBmaWxlIGNvbXByZXNzaW9uCgpUaGlzIGNv bW1pdCBhZGRzIGNvbXByZWhlbnNpdmUgcmVncmVzc2lvbiB0ZXN0cyBmb3IgdGhlIHRyYW5zcGFy ZW50CnRlbXBvcmFyeSBmaWxlIGNvbXByZXNzaW9uIGZlYXR1cmUuCgpUZXN0IGNvdmVyYWdlOgot IGpvaW5faGFzaF9sejQuc3FsOiBUZXN0cyBoYXNoIGpvaW4gb3BlcmF0aW9ucyB3aXRoIExaNCBj b21wcmVzc2lvbgotIGpvaW5faGFzaF9wZ2x6LnNxbDogVGVzdHMgaGFzaCBqb2luIG9wZXJhdGlv bnMgd2l0aCBQR0xaIGNvbXByZXNzaW9uCi0gQm90aCB0ZXN0cyB2ZXJpZnkgY29tcHJlc3Npb24g d29ya3MgY29ycmVjdGx5IGZvciB2YXJpb3VzIGhhc2ggam9pbiBzY2VuYXJpb3MKLSBFeHBlY3Rl ZCBvdXRwdXQgZmlsZXMgZm9yIHZhbGlkYXRpb24KClRlc3QgaW50ZWdyYXRpb246Ci0gTFo0IHRl c3RzIGFyZSBjb25kaXRpb25hbGx5IGVuYWJsZWQgd2hlbiBQb3N0Z3JlU1FMIGlzIGJ1aWx0IHdp dGggLS13aXRoLWx6NAotIFBHTFogdGVzdHMgYXJlIGFsd2F5cyBlbmFibGVkIGFzIFBHTFogaXMg YnVpbHQtaW4KLSBUZXN0cyBhZGRlZCB0byBwYXJhbGxlbCByZWdyZXNzaW9uIHRlc3Qgc2NoZWR1 bGUKLSBHTlVtYWtlZmlsZSB1cGRhdGVkIHRvIGluY2x1ZGUgY29uZGl0aW9uYWwgTFo0IHRlc3Qg ZXhlY3V0aW9uCgpUaGUgdGVzdHMgZW5zdXJlIHRoYXQgY29tcHJlc3Npb24vZGVjb21wcmVzc2lv biB3b3JrcyB0cmFuc3BhcmVudGx5CndpdGhvdXQgYWZmZWN0aW5nIHF1ZXJ5IHJlc3VsdHMsIHdo aWxlIHByb3ZpZGluZyBjb3ZlcmFnZSBmb3IgYm90aApzdXBwb3J0ZWQgY29tcHJlc3Npb24gYWxn b3JpdGhtcy4KLS0tCiBzcmMvTWFrZWZpbGUuZ2xvYmFsLmluICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9HTlVtYWtlZmlsZSAgICAgICAgICAgICAgICAg fCAgICA0ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbl9oYXNoX2x6NC5vdXQgIHwg MTE2NyArKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbl9o YXNoX3BnbHoub3V0IHwgMTE2NyArKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mv cGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAgIHwgICAgNCArLQogc3JjL3Rlc3QvcmVncmVzcy9z cWwvam9pbl9oYXNoX2x6NC5zcWwgICAgICAgfCAgNjI3ICsrKysrKysrKysKIHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2pvaW5faGFzaF9wZ2x6LnNxbCAgICAgIHwgIDYyNyArKysrKysrKysrCiA3IGZp bGVzIGNoYW5nZWQsIDM1OTYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbl9oYXNoX2x6NC5vdXQKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW5faGFzaF9wZ2x6 Lm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW5faGFzaF9s ejQuc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbl9oYXNo X3BnbHouc3FsCgpkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmdsb2JhbC5pbiBiL3NyYy9NYWtl ZmlsZS5nbG9iYWwuaW4KaW5kZXggOTQ3YTJkNzllMjkuLjg3Yzk1MGNjYTgyIDEwMDY0NAotLS0g YS9zcmMvTWFrZWZpbGUuZ2xvYmFsLmluCisrKyBiL3NyYy9NYWtlZmlsZS5nbG9iYWwuaW4KQEAg LTIwMSw2ICsyMDEsNyBAQCB3aXRoX2xpYnVyaW5nCT0gQHdpdGhfbGlidXJpbmdACiB3aXRoX2xp YnhtbAk9IEB3aXRoX2xpYnhtbEAKIHdpdGhfbGlieHNsdAk9IEB3aXRoX2xpYnhzbHRACiB3aXRo X2xsdm0JPSBAd2l0aF9sbHZtQAord2l0aF9sejQJPSBAd2l0aF9sejRACiB3aXRoX3N5c3RlbV90 emRhdGEgPSBAd2l0aF9zeXN0ZW1fdHpkYXRhQAogd2l0aF91dWlkCT0gQHdpdGhfdXVpZEAKIHdp dGhfemxpYgk9IEB3aXRoX3psaWJACmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL0dOVW1h a2VmaWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9HTlVtYWtlZmlsZQppbmRleCBhOGJhMTllNTk3MS4u NWM0ZTI1YmMwN2MgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvR05VbWFrZWZpbGUKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9HTlVtYWtlZmlsZQpAQCAtOTQsNiArOTQsMTAgQEAgaW5zdGFs bGRpcnMtdGVzdHM6IGluc3RhbGxkaXJzCiBSRUdSRVNTX09QVFMgPSAtLWRscGF0aD0uIC0tbWF4 LWNvbmN1cnJlbnQtdGVzdHM9MjAgXAogCSQoRVhUUkFfUkVHUkVTU19PUFRTKQogCitpZmVxICgk KHdpdGhfbHo0KSx5ZXMpCitvdmVycmlkZSBFWFRSQV9URVNUUyA6PSAkKEVYVFJBX1RFU1RTKSBq b2luX2hhc2hfbHo0CitlbmRpZgorCiBjaGVjazogYWxsCiAJJChwZ19yZWdyZXNzX2NoZWNrKSAk KFJFR1JFU1NfT1BUUykgLS1zY2hlZHVsZT0kKHNyY2RpcikvcGFyYWxsZWxfc2NoZWR1bGUgJChN QVhDT05OT1BUKSAkKEVYVFJBX1RFU1RTKQogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2pvaW5faGFzaF9sejQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9q b2luX2hhc2hfbHo0Lm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u NzgzNjdiZjM3MTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2pvaW5faGFzaF9sejQub3V0CkBAIC0wLDAgKzEsMTE2NyBAQAorLS0KKy0tIGV4ZXJjaXNlcyBm b3IgdGhlIGhhc2ggam9pbiBjb2RlCistLQorYmVnaW47CitzZXQgbG9jYWwgbWluX3BhcmFsbGVs X3RhYmxlX3NjYW5fc2l6ZSA9IDA7CitzZXQgbG9jYWwgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7 CitzZXQgbG9jYWwgZW5hYmxlX2hhc2hqb2luID0gb247CitzZXQgbG9jYWwgdGVtcF9maWxlX2Nv bXByZXNzaW9uID0gJ2x6NCc7CistLSBFeHRyYWN0IGJ1Y2tldCBhbmQgYmF0Y2ggY291bnRzIGZy b20gYW4gZXhwbGFpbiBhbmFseXplIHBsYW4uICBJbgorLS0gZ2VuZXJhbCB3ZSBjYW4ndCBtYWtl IGFzc2VydGlvbnMgYWJvdXQgaG93IG1hbnkgYmF0Y2hlcyAob3IKKy0tIGJ1Y2tldHMpIHdpbGwg YmUgcmVxdWlyZWQgYmVjYXVzZSBpdCBjYW4gdmFyeSwgYnV0IHdlIGNhbiBpbiBzb21lCistLSBz cGVjaWFsIGNhc2VzIGFuZCB3ZSBjYW4gY2hlY2sgZm9yIGdyb3d0aC4KK2NyZWF0ZSBvciByZXBs YWNlIGZ1bmN0aW9uIGZpbmRfaGFzaChub2RlIGpzb24pCityZXR1cm5zIGpzb24gbGFuZ3VhZ2Ug cGxwZ3NxbAorYXMKKyQkCitkZWNsYXJlCisgIHgganNvbjsKKyAgY2hpbGQganNvbjsKK2JlZ2lu CisgIGlmIG5vZGUtPj4nTm9kZSBUeXBlJyA9ICdIYXNoJyB0aGVuCisgICAgcmV0dXJuIG5vZGU7 CisgIGVsc2UKKyAgICBmb3IgY2hpbGQgaW4gc2VsZWN0IGpzb25fYXJyYXlfZWxlbWVudHMobm9k ZS0+J1BsYW5zJykKKyAgICBsb29wCisgICAgICB4IDo9IGZpbmRfaGFzaChjaGlsZCk7CisgICAg ICBpZiB4IGlzIG5vdCBudWxsIHRoZW4KKyAgICAgICAgcmV0dXJuIHg7CisgICAgICBlbmQgaWY7 CisgICAgZW5kIGxvb3A7CisgICAgcmV0dXJuIG51bGw7CisgIGVuZCBpZjsKK2VuZDsKKyQkOwor Y3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gaGFzaF9qb2luX2JhdGNoZXMocXVlcnkgdGV4dCkK K3JldHVybnMgdGFibGUgKG9yaWdpbmFsIGludCwgZmluYWwgaW50KSBsYW5ndWFnZSBwbHBnc3Fs CithcworJCQKK2RlY2xhcmUKKyAgd2hvbGVfcGxhbiBqc29uOworICBoYXNoX25vZGUganNvbjsK K2JlZ2luCisgIGZvciB3aG9sZV9wbGFuIGluCisgICAgZXhlY3V0ZSAnZXhwbGFpbiAoYW5hbHl6 ZSwgZm9ybWF0ICcnanNvbicnKSAnIHx8IHF1ZXJ5CisgIGxvb3AKKyAgICBoYXNoX25vZGUgOj0g ZmluZF9oYXNoKGpzb25fZXh0cmFjdF9wYXRoKHdob2xlX3BsYW4sICcwJywgJ1BsYW4nKSk7Cisg ICAgb3JpZ2luYWwgOj0gaGFzaF9ub2RlLT4+J09yaWdpbmFsIEhhc2ggQmF0Y2hlcyc7CisgICAg ZmluYWwgOj0gaGFzaF9ub2RlLT4+J0hhc2ggQmF0Y2hlcyc7CisgICAgcmV0dXJuIG5leHQ7Cisg IGVuZCBsb29wOworZW5kOworJCQ7CistLSBNYWtlIGEgc2ltcGxlIHJlbGF0aW9uIHdpdGggd2Vs bCBkaXN0cmlidXRlZCBrZXlzIGFuZCBjb3JyZWN0bHkKKy0tIGVzdGltYXRlZCBzaXplLgorY3Jl YXRlIHRhYmxlIHNpbXBsZSBhcworICBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMDAwKSBB UyBpZCwgJ2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEnOworYWx0ZXIgdGFibGUg c2ltcGxlIHNldCAocGFyYWxsZWxfd29ya2VycyA9IDIpOworYW5hbHl6ZSBzaW1wbGU7CistLSBN YWtlIGEgcmVsYXRpb24gd2hvc2Ugc2l6ZSB3ZSB3aWxsIHVuZGVyLWVzdGltYXRlLiAgV2Ugd2Fu dCBzdGF0cworLS0gdG8gc2F5IDEwMDAgcm93cywgYnV0IGFjdHVhbGx5IHRoZXJlIGFyZSAyMCww MDAgcm93cy4KK2NyZWF0ZSB0YWJsZSBiaWdnZXJfdGhhbl9pdF9sb29rcyBhcworICBzZWxlY3Qg Z2VuZXJhdGVfc2VyaWVzKDEsIDIwMDAwKSBhcyBpZCwgJ2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWEnOworYWx0ZXIgdGFibGUgYmlnZ2VyX3RoYW5faXRfbG9va3Mgc2V0IChhdXRv dmFjdXVtX2VuYWJsZWQgPSAnZmFsc2UnKTsKK2FsdGVyIHRhYmxlIGJpZ2dlcl90aGFuX2l0X2xv b2tzIHNldCAocGFyYWxsZWxfd29ya2VycyA9IDIpOworYW5hbHl6ZSBiaWdnZXJfdGhhbl9pdF9s b29rczsKK3VwZGF0ZSBwZ19jbGFzcyBzZXQgcmVsdHVwbGVzID0gMTAwMCB3aGVyZSByZWxuYW1l ID0gJ2JpZ2dlcl90aGFuX2l0X2xvb2tzJzsKKy0tIE1ha2UgYSByZWxhdGlvbiB3aG9zZSBzaXpl IHdlIHVuZGVyZXN0aW1hdGUgYW5kIHRoYXQgYWxzbyBoYXMgYQorLS0ga2luZCBvZiBza2V3IHRo YXQgYnJlYWtzIG91ciBiYXRjaGluZyBzY2hlbWUuICBXZSB3YW50IHN0YXRzIHRvIHNheQorLS0g MiByb3dzLCBidXQgYWN0dWFsbHkgdGhlcmUgYXJlIDIwLDAwMCByb3dzIHdpdGggdGhlIHNhbWUg a2V5LgorY3JlYXRlIHRhYmxlIGV4dHJlbWVseV9za2V3ZWQgKGlkIGludCwgdCB0ZXh0KTsKK2Fs dGVyIHRhYmxlIGV4dHJlbWVseV9za2V3ZWQgc2V0IChhdXRvdmFjdXVtX2VuYWJsZWQgPSAnZmFs c2UnKTsKK2FsdGVyIHRhYmxlIGV4dHJlbWVseV9za2V3ZWQgc2V0IChwYXJhbGxlbF93b3JrZXJz ID0gMik7CithbmFseXplIGV4dHJlbWVseV9za2V3ZWQ7CitpbnNlcnQgaW50byBleHRyZW1lbHlf c2tld2VkCisgIHNlbGVjdCA0MiBhcyBpZCwgJ2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWEnCisgIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMDAwKTsKK3VwZGF0ZSBwZ19jbGFz cworICBzZXQgcmVsdHVwbGVzID0gMiwgcmVscGFnZXMgPSBwZ19yZWxhdGlvbl9zaXplKCdleHRy ZW1lbHlfc2tld2VkJykgLyA4MTkyCisgIHdoZXJlIHJlbG5hbWUgPSAnZXh0cmVtZWx5X3NrZXdl ZCc7CistLSBNYWtlIGEgcmVsYXRpb24gd2l0aCBhIGNvdXBsZSBvZiBlbm9ybW91cyB0dXBsZXMu CitjcmVhdGUgdGFibGUgd2lkZSBhcyBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEsIDIpIGFzIGlk LCBycGFkKCcnLCAzMjAwMDAsICd4JykgYXMgdDsKK2FsdGVyIHRhYmxlIHdpZGUgc2V0IChwYXJh bGxlbF93b3JrZXJzID0gMik7CistLSBUaGUgIm9wdGltYWwiIGNhc2U6IHRoZSBoYXNoIHRhYmxl IGZpdHMgaW4gbWVtb3J5OyB3ZSBwbGFuIGZvciAxCistLSBiYXRjaCwgd2Ugc3RpY2sgdG8gdGhh dCBudW1iZXIsIGFuZCBwZWFrIG1lbW9yeSB1c2FnZSBzdGF5cyB3aXRoaW4KKy0tIG91ciB3b3Jr X21lbSBidWRnZXQKKy0tIG5vbi1wYXJhbGxlbAorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxv Y2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworc2V0IGxvY2FsIHdvcmtf bWVtID0gJzRNQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxh aW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1w bGUgcyB1c2luZyAoaWQpOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQor ICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAgIC0+ICBIYXNoCisgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHMKKyg2IHJvd3MpCisKK3NlbGVjdCBjb3Vu dCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0t LS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxs eV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZy b20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUg ciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CiskJCk7CisgaW5pdGlhbGx5X211bHRpYmF0Y2gg fCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLQorIGYgICAgICAgICAgICAgICAgICAgIHwgZgorKDEgcm93KQorCityb2xsYmFjayB0 byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtb2JsaXZpb3VzIGhhc2ggam9p bgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Bl cl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzRNQic7CitzZXQgbG9jYWwgaGFz aF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9 IG9mZjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxl IHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQorICAgLT4g IEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVkOiAyCisgICAgICAgICAtPiAgUGFydGlh bCBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAg ICAgICAgIEhhc2ggQ29uZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAgICAgICAgICAgICAgLT4g IFBhcmFsbGVsIFNlcSBTY2FuIG9uIHNpbXBsZSByCisgICAgICAgICAgICAgICAgICAgICAtPiAg SGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHNpbXBsZSBz CisoOSByb3dzKQorCitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBz IHVzaW5nIChpZCk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworc2VsZWN0 IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBh cyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2Vs ZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworJCQp OworIGluaXRpYWxseV9tdWx0aWJhdGNoIHwgaW5jcmVhc2VkX2JhdGNoZXMgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmICAgICAgICAgICAgICAgICAgICB8 IGYKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBwYXJhbGxlbCB3aXRoIHBh cmFsbGVsLWF3YXJlIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1h eF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0g JzRNQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBl bmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3Qg Y291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgRmluYWxpemUgQWdncmVnYXRlCisgICAtPiAgR2F0aGVyCisgICAgICAgICBXb3JrZXJz IFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBQYXJ0aWFsIEFnZ3JlZ2F0ZQorICAgICAgICAgICAg ICAgLT4gIFBhcmFsbGVsIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25k OiAoci5pZCA9IHMuaWQpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNj YW4gb24gc2ltcGxlIHIKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxl IHMKKyg5IHJvd3MpCisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxl IHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxl Y3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFs IGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBz ZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7Cisk JCk7CisgaW5pdGlhbGx5X211bHRpYmF0Y2ggfCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIGYgICAgICAgICAgICAgICAgICAg IHwgZgorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIFRoZSAiZ29vZCIgY2Fz ZTogYmF0Y2hlcyByZXF1aXJlZCwgYnV0IHdlIHBsYW4gdGhlIHJpZ2h0IG51bWJlcjsgd2UKKy0t IHBsYW4gZm9yIHNvbWUgbnVtYmVyIG9mIGJhdGNoZXMsIGFuZCB3ZSBzdGljayB0byB0aGF0IG51 bWJlciwgYW5kCistLSBwZWFrIG1lbW9yeSB1c2FnZSBzYXlzIHdpdGhpbiBvdXIgd29ya19tZW0g YnVkZ2V0CistLSBub24tcGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBt YXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKK3NldCBsb2NhbCB3b3JrX21lbSA9 ICcxMjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4g KGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUg cyB1c2luZyAoaWQpOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAg LT4gIEhhc2ggSm9pbgorICAgICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHMKKyg2IHJvd3MpCisKK3NlbGVjdCBjb3VudCgq KSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0t LS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9t dWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20g aGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBq b2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CiskJCk7CisgaW5pdGlhbGx5X211bHRpYmF0Y2ggfCBp bmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLQorIHQgICAgICAgICAgICAgICAgICAgIHwgZgorKDEgcm93KQorCityb2xsYmFjayB0byBz ZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtb2JsaXZpb3VzIGhhc2ggam9pbgor c2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9n YXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzEyOGtCJzsKK3NldCBsb2NhbCBoYXNo X21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0g b2ZmOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUg ciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgQWdncmVnYXRlCisgICAtPiAg R2F0aGVyCisgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBQYXJ0aWFs IEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAg ICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAgICAgICAgICAgICAgICAtPiAg UGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBI YXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHMK Kyg5IHJvd3MpCisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMg dXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxlY3Qg b3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFsIGFz IGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxl Y3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CiskJCk7 CisgaW5pdGlhbGx5X211bHRpYmF0Y2ggfCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICAgICAgICAgICAgIHwg ZgorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFy YWxsZWwtYXdhcmUgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4 X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQgbG9jYWwgd29ya19tZW0gPSAn MTkya0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwg ZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0 IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQorICAgLT4gIEdhdGhlcgorICAgICAgICAgV29ya2Vy cyBQbGFubmVkOiAyCisgICAgICAgICAtPiAgUGFydGlhbCBBZ2dyZWdhdGUKKyAgICAgICAgICAg ICAgIC0+ICBQYXJhbGxlbCBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29u ZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBT Y2FuIG9uIHNpbXBsZSByCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHNpbXBs ZSBzCisoOSByb3dzKQorCitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBs ZSBzIHVzaW5nIChpZCk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworc2Vs ZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5h bCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAg c2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOwor JCQpOworIGluaXRpYWxseV9tdWx0aWJhdGNoIHwgaW5jcmVhc2VkX2JhdGNoZXMgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgICAgICAgICAg ICB8IGYKKygxIHJvdykKKworLS0gcGFyYWxsZWwgZnVsbCBtdWx0aS1iYXRjaCBoYXNoIGpvaW4K K3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1 c2luZyAoaWQpOworIGNvdW50IAorLS0tLS0tLQorIDIwMDAwCisoMSByb3cpCisKK3JvbGxiYWNr IHRvIHNldHRpbmdzOworLS0gVGhlICJiYWQiIGNhc2U6IGR1cmluZyBleGVjdXRpb24gd2UgbmVl ZCB0byBpbmNyZWFzZSBudW1iZXIgb2YKKy0tIGJhdGNoZXM7IGluIHRoaXMgY2FzZSB3ZSBwbGFu IGZvciAxIGJhdGNoLCBhbmQgaW5jcmVhc2UgYXQgbGVhc3QgYQorLS0gY291cGxlIG9mIHRpbWVz LCBhbmQgcGVhayBtZW1vcnkgdXNhZ2Ugc3RheXMgd2l0aGluIG91ciB3b3JrX21lbQorLS0gYnVk Z2V0CistLSBub24tcGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhf cGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKK3NldCBsb2NhbCB3b3JrX21lbSA9ICcx MjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4gKGNv c3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIEZST00gc2ltcGxlIHIgSk9JTiBiaWdnZXJfdGhh bl9pdF9sb29rcyBzIFVTSU5HIChpZCk7CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEhhc2ggSm9pbgorICAg ICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24g c2ltcGxlIHIKKyAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gYmlnZ2VyX3RoYW5faXRfbG9va3MgcworKDYgcm93cykKKworc2VsZWN0IGNvdW50KCopIEZS T00gc2ltcGxlIHIgSk9JTiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIFVTSU5HIChpZCk7CisgY291 bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworc2VsZWN0IG9yaWdpbmFsID4gMSBhcyBp bml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hl cworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIEZST00g c2ltcGxlIHIgSk9JTiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIFVTSU5HIChpZCk7CiskJCk7Cisg aW5pdGlhbGx5X211bHRpYmF0Y2ggfCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIGYgICAgICAgICAgICAgICAgICAgIHwgdAor KDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxs ZWwtb2JsaXZpb3VzIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1h eF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0g JzEyOGtCJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0IGxvY2Fs IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxl Y3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMgdXNp bmcgKGlkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgQWdncmVnYXRlCisgICAt PiAgR2F0aGVyCisgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBQYXJ0 aWFsIEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAg ICAgICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAgICAgICAgICAgICAgICAt PiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gYmlnZ2Vy X3RoYW5faXRfbG9va3MgcworKDkgcm93cykKKworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxl IHIgam9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CisgY291bnQgCistLS0t LS0tCisgMjAwMDAKKygxIHJvdykKKworc2VsZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlf bXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9t IGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIg am9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CiskJCk7CisgaW5pdGlhbGx5 X211bHRpYmF0Y2ggfCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLQorIGYgICAgICAgICAgICAgICAgICAgIHwgdAorKDEgcm93KQor Cityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtYXdhcmUg aGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dv cmtlcnNfcGVyX2dhdGhlciA9IDE7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnMTkya0InOworc2V0 IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwgZW5hYmxlX3BhcmFs bGVsX2hhc2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZy b20gc2ltcGxlIHIgam9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQor ICAgLT4gIEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVkOiAxCisgICAgICAgICAtPiAg UGFydGlhbCBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoIEpvaW4K KyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAg ICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHNpbXBsZSByCisgICAgICAgICAg ICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMKKyg5IHJvd3Mp CisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gYmlnZ2VyX3RoYW5faXRfbG9v a3MgcyB1c2luZyAoaWQpOworIGNvdW50IAorLS0tLS0tLQorIDIwMDAwCisoMSByb3cpCisKK3Nl bGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gsIGZpbmFsID4gb3JpZ2lu YWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisg IHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gYmlnZ2VyX3RoYW5faXRfbG9va3Mg cyB1c2luZyAoaWQpOworJCQpOworIGluaXRpYWxseV9tdWx0aWJhdGNoIHwgaW5jcmVhc2VkX2Jh dGNoZXMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmICAg ICAgICAgICAgICAgICAgICB8IHQKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7Cist LSBUaGUgInVnbHkiIGNhc2U6IGluY3JlYXNpbmcgdGhlIG51bWJlciBvZiBiYXRjaGVzIGR1cmlu ZyBleGVjdXRpb24KKy0tIGRvZXNuJ3QgaGVscCwgc28gc3RvcCB0cnlpbmcgdG8gZml0IGluIHdv cmtfbWVtIGFuZCBob3BlIGZvciB0aGUKKy0tIGJlc3Q7IGluIHRoaXMgY2FzZSB3ZSBwbGFuIGZv ciAxIGJhdGNoLCBpbmNyZWFzZXMganVzdCBvbmNlIGFuZAorLS0gdGhlbiBzdG9wIGluY3JlYXNp bmcgYmVjYXVzZSB0aGF0IGRpZG4ndCBoZWxwIGF0IGFsbCwgc28gd2UgYmxvdworLS0gcmlnaHQg dGhyb3VnaCB0aGUgd29ya19tZW0gYnVkZ2V0IGFuZCBob3BlIGZvciB0aGUgYmVzdC4uLgorLS0g bm9uLXBhcmFsbGVsCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVs X3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnMTI4a0InOwor c2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0cyBvZmYp CisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5X3NrZXdlZCBz IHVzaW5nIChpZCk7CisgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgIEhhc2ggQ29uZDogKHIu aWQgPSBzLmlkKQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHNpbXBsZSByCisgICAgICAgICAt PiAgSGFzaAorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGV4dHJlbWVseV9za2V3ZWQg cworKDYgcm93cykKKworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1l bHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93 KQorCitzZWxlY3QgKiBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50 KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKKyQk KTsKKyBvcmlnaW5hbCB8IGZpbmFsIAorLS0tLS0tLS0tLSstLS0tLS0tCisgICAgICAgIDEgfCAg ICAgMgorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGgg cGFyYWxsZWwtb2JsaXZpb3VzIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxv Y2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtf bWVtID0gJzEyOGtCJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0 IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworZXhwbGFpbiAoY29zdHMgb2ZmKQor ICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4dHJlbWVseV9za2V3ZWQgcyB1 c2luZyAoaWQpOworICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgR2F0aGVyCisgICAgICAgICBXb3JrZXJz IFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIEhhc2gg Q29uZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2Fu IG9uIHNpbXBsZSByCisgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIGV4dHJlbWVseV9za2V3ZWQgcworKDggcm93cykKKworc2VsZWN0 IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlk KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxlY3QgKiBmcm9tIGhh c2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9p biBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKKyQkKTsKKyBvcmlnaW5hbCB8IGZpbmFs IAorLS0tLS0tLS0tLSstLS0tLS0tCisgICAgICAgIDEgfCAgICAgMgorKDEgcm93KQorCityb2xs YmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtYXdhcmUgaGFzaCBq b2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNf cGVyX2dhdGhlciA9IDE7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnMTI4a0InOworc2V0IGxvY2Fs IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwgZW5hYmxlX3BhcmFsbGVsX2hh c2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2lt cGxlIHIgam9pbiBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVk OiAxCisgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaCBKb2luCisgICAgICAgICAgICAgICBIYXNo IENvbmQ6IChyLmlkID0gcy5pZCkKKyAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2Nh biBvbiBzaW1wbGUgcgorICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2gKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBleHRyZW1lbHlfc2tld2VkIHMK Kyg4IHJvd3MpCisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5 X3NrZXdlZCBzIHVzaW5nIChpZCk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykK Kworc2VsZWN0ICogZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgq KSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CiskJCk7 Cisgb3JpZ2luYWwgfCBmaW5hbCAKKy0tLS0tLS0tLS0rLS0tLS0tLQorICAgICAgICAxIHwgICAg IDQKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBBIGNvdXBsZSBvZiBvdGhl ciBoYXNoIGpvaW4gdGVzdHMgdW5yZWxhdGVkIHRvIHdvcmtfbWVtIG1hbmFnZW1lbnQuCistLSBD aGVjayB0aGF0IEVYUExBSU4gQU5BTFlaRSBoYXMgZGF0YSBldmVuIGlmIHRoZSBsZWFkZXIgZG9l c24ndCBwYXJ0aWNpcGF0ZQorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJh bGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzRNQic7 CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBwYXJhbGxl bF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9mZjsKK3NlbGVjdCAqIGZyb20gaGFzaF9qb2luX2Jh dGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBz IHVzaW5nIChpZCk7CiskJCk7Cisgb3JpZ2luYWwgfCBmaW5hbCAKKy0tLS0tLS0tLS0rLS0tLS0t LQorICAgICAgICAxIHwgICAgIDEKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7Cist LSBFeGVyY2lzZSByZXNjYW5zLiAgV2UnbGwgdHVybiBvZmYgcGFyYWxsZWxfbGVhZGVyX3BhcnRp Y2lwYXRpb24gc28KKy0tIHRoYXQgd2UgY2FuIGNoZWNrIHRoYXQgaW5zdHJ1bWVudGF0aW9uIGNv bWVzIGJhY2sgY29ycmVjdGx5LgorY3JlYXRlIHRhYmxlIGpvaW5fZm9vIGFzIHNlbGVjdCBnZW5l cmF0ZV9zZXJpZXMoMSwgMykgYXMgaWQsICd4eHh4eCc6OnRleHQgYXMgdDsKK2FsdGVyIHRhYmxl IGpvaW5fZm9vIHNldCAocGFyYWxsZWxfd29ya2VycyA9IDApOworY3JlYXRlIHRhYmxlIGpvaW5f YmFyIGFzIHNlbGVjdCBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMDApIGFzIGlkLCAneHh4eHgnOjp0 ZXh0IGFzIHQ7CithbHRlciB0YWJsZSBqb2luX2JhciBzZXQgKHBhcmFsbGVsX3dvcmtlcnMgPSAy KTsKK2FuYWx5emUgam9pbl9mb28sIGpvaW5fYmFyOworLS0gbXVsdGktYmF0Y2ggd2l0aCByZXNj YW4sIHBhcmFsbGVsLW9ibGl2aW91cworc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGVuYWJsZV9w YXJhbGxlbF9oYXNoID0gb2ZmOworc2V0IHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0g b2ZmOworc2V0IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOworc2V0IHBhcmFsbGVs X3NldHVwX2Nvc3QgPSAwOworc2V0IHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworc2V0IG1heF9w YXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVuYWJsZV9tYXRlcmlhbCA9IG9m ZjsKK3NldCBlbmFibGVfbWVyZ2Vqb2luID0gb2ZmOworc2V0IHdvcmtfbWVtID0gJzY0a0InOwor c2V0IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNl bGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQs IGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisg ICAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAx OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBOZXN0ZWQgTG9vcCBMZWZ0IEpvaW4KKyAgICAgICAgIEpv aW4gRmlsdGVyOiAoKGpvaW5fZm9vLmlkIDwgKGIxLmlkICsgMSkpIEFORCAoam9pbl9mb28uaWQg PiAoYjEuaWQgLSAxKSkpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gam9pbl9mb28KKyAgICAg ICAgIC0+ICBHYXRoZXIKKyAgICAgICAgICAgICAgIFdvcmtlcnMgUGxhbm5lZDogMgorICAgICAg ICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAo YjEuaWQgPSBiMi5pZCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2Nh biBvbiBqb2luX2JhciBiMQorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBqb2luX2JhciBiMgorKDExIHJvd3Mp CisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgIGxlZnQgam9pbiAoc2VsZWN0IGIx LmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBz cworICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAt IDE7CisgY291bnQgCistLS0tLS0tCisgICAgIDMKKygxIHJvdykKKworc2VsZWN0IGZpbmFsID4g MSBhcyBtdWx0aWJhdGNoCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3Qg Y291bnQoKikgZnJvbSBqb2luX2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50 IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9u IGpvaW5fZm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyQk KTsKKyBtdWx0aWJhdGNoIAorLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCityb2xsYmFjayB0 byBzZXR0aW5nczsKKy0tIHNpbmdsZS1iYXRjaCB3aXRoIHJlc2NhbiwgcGFyYWxsZWwtb2JsaXZp b3VzCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7 CitzZXQgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7CitzZXQgbWluX3BhcmFs bGVsX3RhYmxlX3NjYW5fc2l6ZSA9IDA7CitzZXQgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7Citz ZXQgcGFyYWxsZWxfdHVwbGVfY29zdCA9IDA7CitzZXQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVy X2dhdGhlciA9IDI7CitzZXQgZW5hYmxlX21hdGVyaWFsID0gb2ZmOworc2V0IGVuYWJsZV9tZXJn ZWpvaW4gPSBvZmY7CitzZXQgd29ya19tZW0gPSAnNE1CJzsKK3NldCBoYXNoX21lbV9tdWx0aXBs aWVyID0gMS4wOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBq b2luX2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIg YjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9uIGpvaW5fZm9vLmlkIDwg c3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAt PiAgTmVzdGVkIExvb3AgTGVmdCBKb2luCisgICAgICAgICBKb2luIEZpbHRlcjogKChqb2luX2Zv by5pZCA8IChiMS5pZCArIDEpKSBBTkQgKGpvaW5fZm9vLmlkID4gKGIxLmlkIC0gMSkpKQorICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIGpvaW5fZm9vCisgICAgICAgICAtPiAgR2F0aGVyCisgICAg ICAgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpv aW4KKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKGIxLmlkID0gYjIuaWQpCisgICAg ICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gam9pbl9iYXIgYjEKKyAg ICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gam9pbl9iYXIgYjIKKygxMSByb3dzKQorCitzZWxlY3QgY291bnQoKikg ZnJvbSBqb2luX2ZvbworICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5f YmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgb24gam9pbl9mb28uaWQg PCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworIGNvdW50IAorLS0tLS0t LQorICAgICAzCisoMSByb3cpCisKK3NlbGVjdCBmaW5hbCA+IDEgYXMgbXVsdGliYXRjaAorICBm cm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9m b28KKyAgICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIxIGpv aW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgICBvbiBqb2luX2Zvby5pZCA8IHNzLmlk ICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CiskJCk7CisgbXVsdGliYXRjaCAKKy0t LS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBtdWx0 aS1iYXRjaCB3aXRoIHJlc2NhbiwgcGFyYWxsZWwtYXdhcmUKK3NhdmVwb2ludCBzZXR0aW5nczsK K3NldCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworc2V0IHBhcmFsbGVsX2xlYWRlcl9wYXJ0 aWNpcGF0aW9uID0gb2ZmOworc2V0IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOwor c2V0IHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworc2V0IHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAw Oworc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVuYWJsZV9t YXRlcmlhbCA9IG9mZjsKK3NldCBlbmFibGVfbWVyZ2Vqb2luID0gb2ZmOworc2V0IHdvcmtfbWVt ID0gJzY0a0InOworc2V0IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0 cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVmdCBqb2luIChz ZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5n IChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlk ID4gc3MuaWQgLSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBOZXN0ZWQgTG9vcCBMZWZ0IEpvaW4K KyAgICAgICAgIEpvaW4gRmlsdGVyOiAoKGpvaW5fZm9vLmlkIDwgKGIxLmlkICsgMSkpIEFORCAo am9pbl9mb28uaWQgPiAoYjEuaWQgLSAxKSkpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gam9p bl9mb28KKyAgICAgICAgIC0+ICBHYXRoZXIKKyAgICAgICAgICAgICAgIFdvcmtlcnMgUGxhbm5l ZDogMgorICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2ggSm9pbgorICAgICAgICAgICAg ICAgICAgICAgSGFzaCBDb25kOiAoYjEuaWQgPSBiMi5pZCkKKyAgICAgICAgICAgICAgICAgICAg IC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBqb2luX2JhciBiMQorICAgICAgICAgICAgICAgICAg ICAgLT4gIFBhcmFsbGVsIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJh bGxlbCBTZXEgU2NhbiBvbiBqb2luX2JhciBiMgorKDExIHJvd3MpCisKK3NlbGVjdCBjb3VudCgq KSBmcm9tIGpvaW5fZm9vCisgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9p bl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICBvbiBqb2luX2Zvby5p ZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CisgY291bnQgCistLS0t LS0tCisgICAgIDMKKygxIHJvdykKKworc2VsZWN0IGZpbmFsID4gMSBhcyBtdWx0aWJhdGNoCisg IGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBqb2lu X2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEg am9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9uIGpvaW5fZm9vLmlkIDwgc3Mu aWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyQkKTsKKyBtdWx0aWJhdGNoIAor LS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHNp bmdsZS1iYXRjaCB3aXRoIHJlc2NhbiwgcGFyYWxsZWwtYXdhcmUKK3NhdmVwb2ludCBzZXR0aW5n czsKK3NldCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworc2V0IHBhcmFsbGVsX2xlYWRlcl9w YXJ0aWNpcGF0aW9uID0gb2ZmOworc2V0IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAw Oworc2V0IHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworc2V0IHBhcmFsbGVsX3R1cGxlX2Nvc3Qg PSAwOworc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVuYWJs ZV9tYXRlcmlhbCA9IG9mZjsKK3NldCBlbmFibGVfbWVyZ2Vqb2luID0gb2ZmOworc2V0IHdvcmtf bWVtID0gJzRNQic7CitzZXQgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4gKGNv c3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9mb28KKyAgICBsZWZ0IGpvaW4g KHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNp bmcgKGlkKSkgc3MKKyAgICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28u aWQgPiBzcy5pZCAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIE5lc3RlZCBMb29wIExlZnQgSm9p bgorICAgICAgICAgSm9pbiBGaWx0ZXI6ICgoam9pbl9mb28uaWQgPCAoYjEuaWQgKyAxKSkgQU5E IChqb2luX2Zvby5pZCA+IChiMS5pZCAtIDEpKSkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBq b2luX2ZvbworICAgICAgICAgLT4gIEdhdGhlcgorICAgICAgICAgICAgICAgV29ya2VycyBQbGFu bmVkOiAyCisgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaCBKb2luCisgICAgICAgICAg ICAgICAgICAgICBIYXNoIENvbmQ6IChiMS5pZCA9IGIyLmlkKQorICAgICAgICAgICAgICAgICAg ICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIGpvaW5fYmFyIGIxCisgICAgICAgICAgICAgICAg ICAgICAtPiAgUGFyYWxsZWwgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBh cmFsbGVsIFNlcSBTY2FuIG9uIGpvaW5fYmFyIGIyCisoMTEgcm93cykKKworc2VsZWN0IGNvdW50 KCopIGZyb20gam9pbl9mb28KKyAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBq b2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgIG9uIGpvaW5fZm9v LmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyBjb3VudCAKKy0t LS0tLS0KKyAgICAgMworKDEgcm93KQorCitzZWxlY3QgZmluYWwgPiAxIGFzIG11bHRpYmF0Y2gK KyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpv aW5fZm9vCisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBi MSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBz cy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworJCQpOworIG11bHRpYmF0Y2gg CistLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0g QSBmdWxsIG91dGVyIGpvaW4gd2hlcmUgZXZlcnkgcmVjb3JkIGlzIG1hdGNoZWQuCistLSBub24t cGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29y a2Vyc19wZXJfZ2F0aGVyID0gMDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgICAgc2VsZWN0ICBj b3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQp OworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEhhc2ggRnVs bCBKb2luCisgICAgICAgICBIYXNoIENvbmQ6IChyLmlkID0gcy5pZCkKKyAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBzaW1wbGUgcgorICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBzaW1wbGUgcworKDYgcm93cykKKworc2VsZWN0ICBjb3VudCgqKSBmcm9t IHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworIGNvdW50IAor LS0tLS0tLQorIDIwMDAwCisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0gcGFy YWxsZWxpc20gbm90IHBvc3NpYmxlIHdpdGggcGFyYWxsZWwtb2JsaXZpb3VzIGZ1bGwgaGFzaCBq b2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7 CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitleHBsYWlu IChjb3N0cyBvZmYpCisgICAgIHNlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91 dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBBZ2dyZWdhdGUKKyAgIC0+ICBIYXNoIEZ1bGwgSm9pbgorICAgICAgICAgSGFzaCBDb25kOiAo ci5pZCA9IHMuaWQpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAg IC0+ICBIYXNoCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHMKKyg2IHJv d3MpCisKK3NlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2lt cGxlIHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCity b2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsaXNtIGlzIHBvc3NpYmxlIHdpdGggcGFy YWxsZWwtYXdhcmUgZnVsbCBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2Nh bCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK2V4cGxhaW4gKGNvc3RzIG9m ZikKKyAgICAgc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBz aW1wbGUgcyB1c2luZyAoaWQpOworICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQorICAg LT4gIEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVkOiAyCisgICAgICAgICAtPiAgUGFy dGlhbCBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoIEZ1bGwgSm9p bgorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAg ICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxlIHMKKyg5IHJvd3MpCisKK3NlbGVjdCAg Y291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlk KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0 aW5nczsKKy0tIEEgZnVsbCBvdXRlciBqb2luIHdoZXJlIGV2ZXJ5IHJlY29yZCBpcyBub3QgbWF0 Y2hlZC4KKy0tIG5vbi1wYXJhbGxlbAorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1h eF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworZXhwbGFpbiAoY29zdHMgb2ZmKQor ICAgICBzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBs ZSBzIG9uIChyLmlkID0gMCAtIHMuaWQpOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFn Z3JlZ2F0ZQorICAgLT4gIEhhc2ggRnVsbCBKb2luCisgICAgICAgICBIYXNoIENvbmQ6ICgoMCAt IHMuaWQpID0gci5pZCkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcworICAgICAg ICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcgorKDYg cm93cykKKworc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBz aW1wbGUgcyBvbiAoci5pZCA9IDAgLSBzLmlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyA0MDAwMAor KDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsaXNtIG5vdCBwb3Nz aWJsZSB3aXRoIHBhcmFsbGVsLW9ibGl2aW91cyBmdWxsIGhhc2ggam9pbgorc2F2ZXBvaW50IHNl dHRpbmdzOworc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworc2V0IGxvY2FsIG1heF9w YXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICAg ICBzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBz IG9uIChyLmlkID0gMCAtIHMuaWQpOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3Jl Z2F0ZQorICAgLT4gIEhhc2ggRnVsbCBKb2luCisgICAgICAgICBIYXNoIENvbmQ6ICgoMCAtIHMu aWQpID0gci5pZCkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcworICAgICAgICAg LT4gIEhhc2gKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcgorKDYgcm93 cykKKworc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1w bGUgcyBvbiAoci5pZCA9IDAgLSBzLmlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyA0MDAwMAorKDEg cm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsaXNtIGlzIHBvc3NpYmxl IHdpdGggcGFyYWxsZWwtYXdhcmUgZnVsbCBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsK K3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK2V4cGxhaW4g KGNvc3RzIG9mZikKKyAgICAgc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0 ZXIgam9pbiBzaW1wbGUgcyBvbiAoci5pZCA9IDAgLSBzLmlkKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5h bGl6ZSBBZ2dyZWdhdGUKKyAgIC0+ICBHYXRoZXIKKyAgICAgICAgIFdvcmtlcnMgUGxhbm5lZDog MgorICAgICAgICAgLT4gIFBhcnRpYWwgQWdncmVnYXRlCisgICAgICAgICAgICAgICAtPiAgUGFy YWxsZWwgSGFzaCBGdWxsIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKCgw IC0gcy5pZCkgPSByLmlkKQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBT Y2FuIG9uIHNpbXBsZSBzCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHNpbXBs ZSByCisoOSByb3dzKQorCitzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRl ciBqb2luIHNpbXBsZSBzIG9uIChyLmlkID0gMCAtIHMuaWQpOworIGNvdW50IAorLS0tLS0tLQor IDQwMDAwCisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0gZXhlcmNpc2Ugc3Bl Y2lhbCBjb2RlIHBhdGhzIGZvciBodWdlIHR1cGxlcyAobm90ZSB1c2Ugb2Ygbm9uLXN0cmljdAor LS0gZXhwcmVzc2lvbiBhbmQgbGVmdCBqb2luIHJlcXVpcmVkIHRvIGdldCB0aGUgZGV0b2FzdGVk IHR1cGxlIGludG8KKy0tIHRoZSBoYXNoIHRhYmxlKQorLS0gcGFyYWxsZWwgd2l0aCBwYXJhbGxl bC1hd2FyZSBoYXNoIGpvaW4gKGhpdHMgRXhlY1BhcmFsbGVsSGFzaExvYWRUdXBsZSBhbmQKKy0t IHN0c19wdXR0dXBsZSBvdmVyc2l6ZWQgdHVwbGUgY2FzZXMgYmVjYXVzZSBpdCdzIG11bHRpLWJh dGNoKQorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9n YXRoZXIgPSAyOworc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb247CitzZXQgd29ya19tZW0g PSAnMTI4a0InOworc2V0IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0 cyBvZmYpCisgIHNlbGVjdCBsZW5ndGgobWF4KHMudCkpCisgIGZyb20gd2lkZSBsZWZ0IGpvaW4g KHNlbGVjdCBpZCwgY29hbGVzY2UodCwgJycpIHx8ICcnIGFzIHQgZnJvbSB3aWRlKSBzIHVzaW5n IChpZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgQWdncmVnYXRlCisgICAtPiAgR2F0 aGVyCisgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBQYXJ0aWFsIEFn Z3JlZ2F0ZQorICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2ggTGVmdCBKb2luCisgICAg ICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh3aWRlLmlkID0gd2lkZV8xLmlkKQorICAgICAg ICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHdpZGUKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gd2lkZSB3aWRlXzEKKyg5IHJvd3MpCisKK3NlbGVjdCBs ZW5ndGgobWF4KHMudCkpCitmcm9tIHdpZGUgbGVmdCBqb2luIChzZWxlY3QgaWQsIGNvYWxlc2Nl KHQsICcnKSB8fCAnJyBhcyB0IGZyb20gd2lkZSkgcyB1c2luZyAoaWQpOworIGxlbmd0aCAKKy0t LS0tLS0tCisgMzIwMDAwCisoMSByb3cpCisKK3NlbGVjdCBmaW5hbCA+IDEgYXMgbXVsdGliYXRj aAorICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGxlbmd0aChtYXgocy50 KSkKKyAgZnJvbSB3aWRlIGxlZnQgam9pbiAoc2VsZWN0IGlkLCBjb2FsZXNjZSh0LCAnJykgfHwg JycgYXMgdCBmcm9tIHdpZGUpIHMgdXNpbmcgKGlkKTsKKyQkKTsKKyBtdWx0aWJhdGNoIAorLS0t LS0tLS0tLS0tCisgdAorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIEhhc2gg am9pbiByZXVzZXMgdGhlIEhPVCBzdGF0dXMgYml0IHRvIGluZGljYXRlIG1hdGNoIHN0YXR1cy4g VGhpcyBjYW4gb25seQorLS0gYmUgZ3VhcmFudGVlZCB0byBwcm9kdWNlIGNvcnJlY3QgcmVzdWx0 cyBpZiBhbGwgdGhlIGhhc2ggam9pbiB0dXBsZSBtYXRjaAorLS0gYml0cyBhcmUgcmVzZXQgYmVm b3JlIHJldXNlLiBUaGlzIGlzIGRvbmUgdXBvbiBsb2FkaW5nIHRoZW0gaW50byB0aGUKKy0tIGhh c2h0YWJsZS4KK1NBVkVQT0lOVCBzZXR0aW5nczsKK1NFVCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9 IG9uOworU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOworU0VUIHBhcmFsbGVs X3NldHVwX2Nvc3QgPSAwOworU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworQ1JFQVRFIFRB QkxFIGhqdGVzdF9tYXRjaGJpdHNfdDEoaWQgaW50KTsKK0NSRUFURSBUQUJMRSBoanRlc3RfbWF0 Y2hiaXRzX3QyKGlkIGludCk7CitJTlNFUlQgSU5UTyBoanRlc3RfbWF0Y2hiaXRzX3QxIFZBTFVF UyAoMSk7CitJTlNFUlQgSU5UTyBoanRlc3RfbWF0Y2hiaXRzX3QyIFZBTFVFUyAoMik7CistLSBV cGRhdGUgc2hvdWxkIGNyZWF0ZSBhIEhPVCB0dXBsZS4gSWYgdGhpcyBzdGF0dXMgYml0IGlzbid0 IGNsZWFyZWQsIHdlIHdvbid0CistLSBjb3JyZWN0bHkgZW1pdCB0aGUgTlVMTC1leHRlbmRlZCB1 bm1hdGNoaW5nIHR1cGxlIGluIGZ1bGwgaGFzaCBqb2luLgorVVBEQVRFIGhqdGVzdF9tYXRjaGJp dHNfdDIgc2V0IGlkID0gMjsKK1NFTEVDVCAqIEZST00gaGp0ZXN0X21hdGNoYml0c190MSB0MSBG VUxMIEpPSU4gaGp0ZXN0X21hdGNoYml0c190MiB0MiBPTiB0MS5pZCA9IHQyLmlkCisgIE9SREVS IEJZIHQxLmlkOworIGlkIHwgaWQgCistLS0tKy0tLS0KKyAgMSB8ICAgCisgICAgfCAgMgorKDIg cm93cykKKworLS0gVGVzdCBzZXJpYWwgZnVsbCBoYXNoIGpvaW4uCistLSBSZXNldHRpbmcgcGFy YWxsZWxfc2V0dXBfY29zdCBzaG91bGQgZm9yY2UgYSBzZXJpYWwgcGxhbi4KKy0tIEp1c3QgdG8g YmUgc2FmZSwgaG93ZXZlciwgc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoIHRvIG9mZiwgYXMgcGFy YWxsZWwgZnVsbAorLS0gaGFzaCBqb2lucyBhcmUgb25seSBzdXBwb3J0ZWQgd2l0aCBzaGFyZWQg aGFzaHRhYmxlcy4KK1JFU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3Q7CitTRVQgZW5hYmxlX3BhcmFs bGVsX2hhc2ggPSBvZmY7CitTRUxFQ1QgKiBGUk9NIGhqdGVzdF9tYXRjaGJpdHNfdDEgdDEgRlVM TCBKT0lOIGhqdGVzdF9tYXRjaGJpdHNfdDIgdDIgT04gdDEuaWQgPSB0Mi5pZDsKKyBpZCB8IGlk IAorLS0tLSstLS0tCisgIDEgfCAgIAorICAgIHwgIDIKKygyIHJvd3MpCisKK1JPTExCQUNLIFRP IHNldHRpbmdzOworcm9sbGJhY2s7CistLSBWZXJpZnkgdGhhdCBoYXNoIGtleSBleHByZXNzaW9u cyByZWZlcmVuY2UgdGhlIGNvcnJlY3QKKy0tIG5vZGVzLiBIYXNoam9pbidzIGhhc2hrZXlzIG5l ZWQgdG8gcmVmZXJlbmNlIGl0cyBvdXRlciBwbGFuLCBIYXNoJ3MKKy0tIG5lZWQgdG8gcmVmZXJl bmNlIEhhc2gncyBvdXRlciBwbGFuICh3aGljaCBpcyBiZWxvdyBIYXNoSm9pbidzCistLSBpbm5l ciBwbGFuKS4gSXQncyBub3QgdHJpdmlhbCB0byB2ZXJpZnkgdGhhdCB0aGUgcmVmZXJlbmNlcyBh cmUKKy0tIGNvcnJlY3QgKHdlIGRvbid0IGRpc3BsYXkgdGhlIGhhc2hrZXlzIHRoZW1zZWx2ZXMp LCBidXQgaWYgdGhlCistLSBoYXNoa2V5cyBjb250YWluIHN1YnBsYW4gcmVmZXJlbmNlcywgdGhv c2Ugd2lsbCBiZSBkaXNwbGF5ZWQuIEZvcmNlCistLSBzdWJwbGFucyB0byBhcHBlYXIganVzdCBh Ym91dCBldmVyeXdoZXJlLgorLS0KKy0tIEJ1ZyByZXBvcnQ6CistLSBodHRwczovL3d3dy5wb3N0 Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0NBUHBIZmR2R1ZlZ0ZfVEtLUmlCclNtYXRKTDJkUjl1d0ZD dVIlMkJ0ZVFfOHRFWFU4bXhnJTQwbWFpbC5nbWFpbC5jb20KKy0tCitCRUdJTjsKK1NFVCBMT0NB TCBlbmFibGVfc29ydCA9IE9GRjsgLS0gYXZvaWQgbWVyZ2Vqb2lucworU0VUIExPQ0FMIGZyb21f Y29sbGFwc2VfbGltaXQgPSAxOyAtLSBhbGxvd3MgZWFzeSBjaGFuZ2luZyBvZiBqb2luIG9yZGVy CitDUkVBVEUgVEFCTEUgaGp0ZXN0XzEgKGEgdGV4dCwgYiBpbnQsIGlkIGludCwgYyBib29sKTsK K0NSRUFURSBUQUJMRSBoanRlc3RfMiAoYSBib29sLCBpZCBpbnQsIGIgdGV4dCwgYyBpbnQpOwor SU5TRVJUIElOVE8gaGp0ZXN0XzEoYSwgYiwgaWQsIGMpIFZBTFVFUyAoJ3RleHQnLCAyLCAxLCBm YWxzZSk7IC0tIG1hdGNoZXMKK0lOU0VSVCBJTlRPIGhqdGVzdF8xKGEsIGIsIGlkLCBjKSBWQUxV RVMgKCd0ZXh0JywgMSwgMiwgZmFsc2UpOyAtLSBmYWlscyBpZCBqb2luIGNvbmRpdGlvbgorSU5T RVJUIElOVE8gaGp0ZXN0XzEoYSwgYiwgaWQsIGMpIFZBTFVFUyAoJ3RleHQnLCAyMCwgMSwgZmFs c2UpOyAtLSBmYWlscyA8IDUwCitJTlNFUlQgSU5UTyBoanRlc3RfMShhLCBiLCBpZCwgYykgVkFM VUVTICgndGV4dCcsIDEsIDEsIGZhbHNlKTsgLS0gZmFpbHMgKFNFTEVDVCBoanRlc3RfMS5iICog NSkgPSAoU0VMRUNUIGhqdGVzdF8yLmMqNSkKK0lOU0VSVCBJTlRPIGhqdGVzdF8yKGEsIGlkLCBi LCBjKSBWQUxVRVMgKHRydWUsIDEsICdhbm90aGVyJywgMik7IC0tIG1hdGNoZXMKK0lOU0VSVCBJ TlRPIGhqdGVzdF8yKGEsIGlkLCBiLCBjKSBWQUxVRVMgKHRydWUsIDMsICdhbm90aGVyJywgNyk7 IC0tIGZhaWxzIGlkIGpvaW4gY29uZGl0aW9uCitJTlNFUlQgSU5UTyBoanRlc3RfMihhLCBpZCwg YiwgYykgVkFMVUVTICh0cnVlLCAxLCAnYW5vdGhlcicsIDkwKTsgIC0tIGZhaWxzIDwgNTUKK0lO U0VSVCBJTlRPIGhqdGVzdF8yKGEsIGlkLCBiLCBjKSBWQUxVRVMgKHRydWUsIDEsICdhbm90aGVy JywgMyk7IC0tIGZhaWxzIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpID0gKFNFTEVDVCBoanRlc3Rf Mi5jKjUpCitJTlNFUlQgSU5UTyBoanRlc3RfMihhLCBpZCwgYiwgYykgVkFMVUVTICh0cnVlLCAx LCAndGV4dCcsIDEpOyAtLSAgZmFpbHMgaGp0ZXN0XzEuYSA8PiBoanRlc3RfMi5iOworRVhQTEFJ TiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQorU0VMRUNUIGhqdGVzdF8xLmEgYTEsIGhqdGVzdF8yLmEg YTIsaGp0ZXN0XzEudGFibGVvaWQ6OnJlZ2NsYXNzIHQxLCBoanRlc3RfMi50YWJsZW9pZDo6cmVn Y2xhc3MgdDIKK0ZST00gaGp0ZXN0XzEsIGhqdGVzdF8yCitXSEVSRQorICAgIGhqdGVzdF8xLmlk ID0gKFNFTEVDVCAxIFdIRVJFIGhqdGVzdF8yLmlkID0gMSkKKyAgICBBTkQgKFNFTEVDVCBoanRl c3RfMS5iICogNSkgPSAoU0VMRUNUIGhqdGVzdF8yLmMqNSkKKyAgICBBTkQgKFNFTEVDVCBoanRl c3RfMS5iICogNSkgPCA1MAorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8yLmMgKiA1KSA8IDU1Cisg ICAgQU5EIGhqdGVzdF8xLmEgPD4gaGp0ZXN0XzIuYjsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgSGFzaCBKb2luCisgICBPdXRwdXQ6IGhqdGVzdF8xLmEsIGhqdGVzdF8yLmEsIChoanRlc3Rf MS50YWJsZW9pZCk6OnJlZ2NsYXNzLCAoaGp0ZXN0XzIudGFibGVvaWQpOjpyZWdjbGFzcworICAg SGFzaCBDb25kOiAoKGhqdGVzdF8xLmlkID0gKFN1YlBsYW4gZXhwcl8xKSkgQU5EICgoU3ViUGxh biBleHByXzIpID0gKFN1YlBsYW4gZXhwcl8zKSkpCisgICBKb2luIEZpbHRlcjogKGhqdGVzdF8x LmEgPD4gaGp0ZXN0XzIuYikKKyAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuaGp0ZXN0XzEKKyAg ICAgICAgIE91dHB1dDogaGp0ZXN0XzEuYSwgaGp0ZXN0XzEudGFibGVvaWQsIGhqdGVzdF8xLmlk LCBoanRlc3RfMS5iCisgICAgICAgICBGaWx0ZXI6ICgoU3ViUGxhbiBleHByXzQpIDwgNTApCisg ICAgICAgICBTdWJQbGFuIGV4cHJfNAorICAgICAgICAgICAtPiAgUmVzdWx0CisgICAgICAgICAg ICAgICAgIE91dHB1dDogKGhqdGVzdF8xLmIgKiA1KQorICAgLT4gIEhhc2gKKyAgICAgICAgIE91 dHB1dDogaGp0ZXN0XzIuYSwgaGp0ZXN0XzIudGFibGVvaWQsIGhqdGVzdF8yLmlkLCBoanRlc3Rf Mi5jLCBoanRlc3RfMi5iCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmhqdGVzdF8y CisgICAgICAgICAgICAgICBPdXRwdXQ6IGhqdGVzdF8yLmEsIGhqdGVzdF8yLnRhYmxlb2lkLCBo anRlc3RfMi5pZCwgaGp0ZXN0XzIuYywgaGp0ZXN0XzIuYgorICAgICAgICAgICAgICAgRmlsdGVy OiAoKFN1YlBsYW4gZXhwcl81KSA8IDU1KQorICAgICAgICAgICAgICAgU3ViUGxhbiBleHByXzUK KyAgICAgICAgICAgICAgICAgLT4gIFJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IChoanRlc3RfMi5jICogNSkKKyAgICAgICAgIFN1YlBsYW4gZXhwcl8xCisgICAgICAgICAg IC0+ICBSZXN1bHQKKyAgICAgICAgICAgICAgICAgT3V0cHV0OiAxCisgICAgICAgICAgICAgICAg IE9uZS1UaW1lIEZpbHRlcjogKGhqdGVzdF8yLmlkID0gMSkKKyAgICAgICAgIFN1YlBsYW4gZXhw cl8zCisgICAgICAgICAgIC0+ICBSZXN1bHQKKyAgICAgICAgICAgICAgICAgT3V0cHV0OiAoaGp0 ZXN0XzIuYyAqIDUpCisgICBTdWJQbGFuIGV4cHJfMgorICAgICAtPiAgUmVzdWx0CisgICAgICAg ICAgIE91dHB1dDogKGhqdGVzdF8xLmIgKiA1KQorKDI4IHJvd3MpCisKK1NFTEVDVCBoanRlc3Rf MS5hIGExLCBoanRlc3RfMi5hIGEyLGhqdGVzdF8xLnRhYmxlb2lkOjpyZWdjbGFzcyB0MSwgaGp0 ZXN0XzIudGFibGVvaWQ6OnJlZ2NsYXNzIHQyCitGUk9NIGhqdGVzdF8xLCBoanRlc3RfMgorV0hF UkUKKyAgICBoanRlc3RfMS5pZCA9IChTRUxFQ1QgMSBXSEVSRSBoanRlc3RfMi5pZCA9IDEpCisg ICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpID0gKFNFTEVDVCBoanRlc3RfMi5jKjUpCisg ICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpIDwgNTAKKyAgICBBTkQgKFNFTEVDVCBoanRl c3RfMi5jICogNSkgPCA1NQorICAgIEFORCBoanRlc3RfMS5hIDw+IGhqdGVzdF8yLmI7CisgIGEx ICB8IGEyIHwgICAgdDEgICAgfCAgICB0MiAgICAKKy0tLS0tLSstLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tLQorIHRleHQgfCB0ICB8IGhqdGVzdF8xIHwgaGp0ZXN0XzIKKygxIHJvdykKKworRVhQ TEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQorU0VMRUNUIGhqdGVzdF8xLmEgYTEsIGhqdGVzdF8y LmEgYTIsaGp0ZXN0XzEudGFibGVvaWQ6OnJlZ2NsYXNzIHQxLCBoanRlc3RfMi50YWJsZW9pZDo6 cmVnY2xhc3MgdDIKK0ZST00gaGp0ZXN0XzIsIGhqdGVzdF8xCitXSEVSRQorICAgIGhqdGVzdF8x LmlkID0gKFNFTEVDVCAxIFdIRVJFIGhqdGVzdF8yLmlkID0gMSkKKyAgICBBTkQgKFNFTEVDVCBo anRlc3RfMS5iICogNSkgPSAoU0VMRUNUIGhqdGVzdF8yLmMqNSkKKyAgICBBTkQgKFNFTEVDVCBo anRlc3RfMS5iICogNSkgPCA1MAorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8yLmMgKiA1KSA8IDU1 CisgICAgQU5EIGhqdGVzdF8xLmEgPD4gaGp0ZXN0XzIuYjsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgSGFzaCBKb2luCisgICBPdXRwdXQ6IGhqdGVzdF8xLmEsIGhqdGVzdF8yLmEsIChoanRl c3RfMS50YWJsZW9pZCk6OnJlZ2NsYXNzLCAoaGp0ZXN0XzIudGFibGVvaWQpOjpyZWdjbGFzcwor ICAgSGFzaCBDb25kOiAoKChTdWJQbGFuIGV4cHJfMSkgPSBoanRlc3RfMS5pZCkgQU5EICgoU3Vi UGxhbiBleHByXzMpID0gKFN1YlBsYW4gZXhwcl8yKSkpCisgICBKb2luIEZpbHRlcjogKGhqdGVz dF8xLmEgPD4gaGp0ZXN0XzIuYikKKyAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuaGp0ZXN0XzIK KyAgICAgICAgIE91dHB1dDogaGp0ZXN0XzIuYSwgaGp0ZXN0XzIudGFibGVvaWQsIGhqdGVzdF8y LmlkLCBoanRlc3RfMi5jLCBoanRlc3RfMi5iCisgICAgICAgICBGaWx0ZXI6ICgoU3ViUGxhbiBl eHByXzUpIDwgNTUpCisgICAgICAgICBTdWJQbGFuIGV4cHJfNQorICAgICAgICAgICAtPiAgUmVz dWx0CisgICAgICAgICAgICAgICAgIE91dHB1dDogKGhqdGVzdF8yLmMgKiA1KQorICAgLT4gIEhh c2gKKyAgICAgICAgIE91dHB1dDogaGp0ZXN0XzEuYSwgaGp0ZXN0XzEudGFibGVvaWQsIGhqdGVz dF8xLmlkLCBoanRlc3RfMS5iCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmhqdGVz dF8xCisgICAgICAgICAgICAgICBPdXRwdXQ6IGhqdGVzdF8xLmEsIGhqdGVzdF8xLnRhYmxlb2lk LCBoanRlc3RfMS5pZCwgaGp0ZXN0XzEuYgorICAgICAgICAgICAgICAgRmlsdGVyOiAoKFN1YlBs YW4gZXhwcl80KSA8IDUwKQorICAgICAgICAgICAgICAgU3ViUGxhbiBleHByXzQKKyAgICAgICAg ICAgICAgICAgLT4gIFJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IChoanRl c3RfMS5iICogNSkKKyAgICAgICAgIFN1YlBsYW4gZXhwcl8yCisgICAgICAgICAgIC0+ICBSZXN1 bHQKKyAgICAgICAgICAgICAgICAgT3V0cHV0OiAoaGp0ZXN0XzEuYiAqIDUpCisgICBTdWJQbGFu IGV4cHJfMQorICAgICAtPiAgUmVzdWx0CisgICAgICAgICAgIE91dHB1dDogMQorICAgICAgICAg ICBPbmUtVGltZSBGaWx0ZXI6IChoanRlc3RfMi5pZCA9IDEpCisgICBTdWJQbGFuIGV4cHJfMwor ICAgICAtPiAgUmVzdWx0CisgICAgICAgICAgIE91dHB1dDogKGhqdGVzdF8yLmMgKiA1KQorKDI4 IHJvd3MpCisKK1NFTEVDVCBoanRlc3RfMS5hIGExLCBoanRlc3RfMi5hIGEyLGhqdGVzdF8xLnRh Ymxlb2lkOjpyZWdjbGFzcyB0MSwgaGp0ZXN0XzIudGFibGVvaWQ6OnJlZ2NsYXNzIHQyCitGUk9N IGhqdGVzdF8yLCBoanRlc3RfMQorV0hFUkUKKyAgICBoanRlc3RfMS5pZCA9IChTRUxFQ1QgMSBX SEVSRSBoanRlc3RfMi5pZCA9IDEpCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpID0g KFNFTEVDVCBoanRlc3RfMi5jKjUpCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpIDwg NTAKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMi5jICogNSkgPCA1NQorICAgIEFORCBoanRlc3Rf MS5hIDw+IGhqdGVzdF8yLmI7CisgIGExICB8IGEyIHwgICAgdDEgICAgfCAgICB0MiAgICAKKy0t LS0tLSstLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHRleHQgfCB0ICB8IGhqdGVzdF8xIHwg aGp0ZXN0XzIKKygxIHJvdykKKworUk9MTEJBQ0s7CistLSBWZXJpZnkgdGhhdCB3ZSBiZWhhdmUg c2FuZWx5IHdoZW4gdGhlIGlubmVyIGhhc2gga2V5cyBjb250YWluIHBhcmFtZXRlcnMKKy0tICh0 aGF0IGlzLCBvdXRlciBvciBsYXRlcmFsIHJlZmVyZW5jZXMpLiAgVGhpcyBzaXR1YXRpb24gaGFz IHRvIGRlZmVhdAorLS0gcmUtdXNlIG9mIHRoZSBpbm5lciBoYXNoIHRhYmxlIGFjcm9zcyByZXNj YW5zLgorYmVnaW47CitzZXQgbG9jYWwgZW5hYmxlX2hhc2hqb2luID0gb247CitleHBsYWluIChj b3N0cyBvZmYpCitzZWxlY3QgaTgucTIsIHNzLiogZnJvbQoraW50OF90YmwgaTgsCitsYXRlcmFs IChzZWxlY3QgdDEuZml2ZXRob3VzLCBpNC5mMSBmcm9tIHRlbmsxIHQxIGpvaW4gaW50NF90Ymwg aTQKKyAgICAgICAgIG9uIHQxLmZpdmV0aG91cyA9IGk0LmYxK2k4LnEyIG9yZGVyIGJ5IDEsMikg c3M7CisgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9vcAorICAgLT4gIFNlcSBTY2FuIG9uIGludDhfdGJsIGk4 CisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IHQxLmZpdmV0aG91cywgaTQuZjEKKyAg ICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLmZpdmV0 aG91cyA9IChpNC5mMSArIGk4LnEyKSkKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0 ZW5rMSB0MQorICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBpbnQ0X3RibCBpNAorKDkgcm93cykKKworc2VsZWN0IGk4LnEyLCBzcy4q IGZyb20KK2ludDhfdGJsIGk4LAorbGF0ZXJhbCAoc2VsZWN0IHQxLmZpdmV0aG91cywgaTQuZjEg ZnJvbSB0ZW5rMSB0MSBqb2luIGludDRfdGJsIGk0CisgICAgICAgICBvbiB0MS5maXZldGhvdXMg PSBpNC5mMStpOC5xMiBvcmRlciBieSAxLDIpIHNzOworIHEyICB8IGZpdmV0aG91cyB8IGYxIAor LS0tLS0rLS0tLS0tLS0tLS0rLS0tLQorIDQ1NiB8ICAgICAgIDQ1NiB8ICAwCisgNDU2IHwgICAg ICAgNDU2IHwgIDAKKyAxMjMgfCAgICAgICAxMjMgfCAgMAorIDEyMyB8ICAgICAgIDEyMyB8ICAw CisoNCByb3dzKQorCityb2xsYmFjazsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvam9pbl9oYXNoX3BnbHoub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2lu X2hhc2hfcGdsei5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmM2 YWU1ZTI1NWQyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9q b2luX2hhc2hfcGdsei5vdXQKQEAgLTAsMCArMSwxMTY3IEBACistLQorLS0gZXhlcmNpc2VzIGZv ciB0aGUgaGFzaCBqb2luIGNvZGUKKy0tCitiZWdpbjsKK3NldCBsb2NhbCBtaW5fcGFyYWxsZWxf dGFibGVfc2Nhbl9zaXplID0gMDsKK3NldCBsb2NhbCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0gMDsK K3NldCBsb2NhbCBlbmFibGVfaGFzaGpvaW4gPSBvbjsKK3NldCBsb2NhbCB0ZW1wX2ZpbGVfY29t cHJlc3Npb24gPSAncGdseic7CistLSBFeHRyYWN0IGJ1Y2tldCBhbmQgYmF0Y2ggY291bnRzIGZy b20gYW4gZXhwbGFpbiBhbmFseXplIHBsYW4uICBJbgorLS0gZ2VuZXJhbCB3ZSBjYW4ndCBtYWtl IGFzc2VydGlvbnMgYWJvdXQgaG93IG1hbnkgYmF0Y2hlcyAob3IKKy0tIGJ1Y2tldHMpIHdpbGwg YmUgcmVxdWlyZWQgYmVjYXVzZSBpdCBjYW4gdmFyeSwgYnV0IHdlIGNhbiBpbiBzb21lCistLSBz cGVjaWFsIGNhc2VzIGFuZCB3ZSBjYW4gY2hlY2sgZm9yIGdyb3d0aC4KK2NyZWF0ZSBvciByZXBs YWNlIGZ1bmN0aW9uIGZpbmRfaGFzaChub2RlIGpzb24pCityZXR1cm5zIGpzb24gbGFuZ3VhZ2Ug cGxwZ3NxbAorYXMKKyQkCitkZWNsYXJlCisgIHgganNvbjsKKyAgY2hpbGQganNvbjsKK2JlZ2lu CisgIGlmIG5vZGUtPj4nTm9kZSBUeXBlJyA9ICdIYXNoJyB0aGVuCisgICAgcmV0dXJuIG5vZGU7 CisgIGVsc2UKKyAgICBmb3IgY2hpbGQgaW4gc2VsZWN0IGpzb25fYXJyYXlfZWxlbWVudHMobm9k ZS0+J1BsYW5zJykKKyAgICBsb29wCisgICAgICB4IDo9IGZpbmRfaGFzaChjaGlsZCk7CisgICAg ICBpZiB4IGlzIG5vdCBudWxsIHRoZW4KKyAgICAgICAgcmV0dXJuIHg7CisgICAgICBlbmQgaWY7 CisgICAgZW5kIGxvb3A7CisgICAgcmV0dXJuIG51bGw7CisgIGVuZCBpZjsKK2VuZDsKKyQkOwor Y3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gaGFzaF9qb2luX2JhdGNoZXMocXVlcnkgdGV4dCkK K3JldHVybnMgdGFibGUgKG9yaWdpbmFsIGludCwgZmluYWwgaW50KSBsYW5ndWFnZSBwbHBnc3Fs CithcworJCQKK2RlY2xhcmUKKyAgd2hvbGVfcGxhbiBqc29uOworICBoYXNoX25vZGUganNvbjsK K2JlZ2luCisgIGZvciB3aG9sZV9wbGFuIGluCisgICAgZXhlY3V0ZSAnZXhwbGFpbiAoYW5hbHl6 ZSwgZm9ybWF0ICcnanNvbicnKSAnIHx8IHF1ZXJ5CisgIGxvb3AKKyAgICBoYXNoX25vZGUgOj0g ZmluZF9oYXNoKGpzb25fZXh0cmFjdF9wYXRoKHdob2xlX3BsYW4sICcwJywgJ1BsYW4nKSk7Cisg ICAgb3JpZ2luYWwgOj0gaGFzaF9ub2RlLT4+J09yaWdpbmFsIEhhc2ggQmF0Y2hlcyc7CisgICAg ZmluYWwgOj0gaGFzaF9ub2RlLT4+J0hhc2ggQmF0Y2hlcyc7CisgICAgcmV0dXJuIG5leHQ7Cisg IGVuZCBsb29wOworZW5kOworJCQ7CistLSBNYWtlIGEgc2ltcGxlIHJlbGF0aW9uIHdpdGggd2Vs bCBkaXN0cmlidXRlZCBrZXlzIGFuZCBjb3JyZWN0bHkKKy0tIGVzdGltYXRlZCBzaXplLgorY3Jl YXRlIHRhYmxlIHNpbXBsZSBhcworICBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMDAwKSBB UyBpZCwgJ2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEnOworYWx0ZXIgdGFibGUg c2ltcGxlIHNldCAocGFyYWxsZWxfd29ya2VycyA9IDIpOworYW5hbHl6ZSBzaW1wbGU7CistLSBN YWtlIGEgcmVsYXRpb24gd2hvc2Ugc2l6ZSB3ZSB3aWxsIHVuZGVyLWVzdGltYXRlLiAgV2Ugd2Fu dCBzdGF0cworLS0gdG8gc2F5IDEwMDAgcm93cywgYnV0IGFjdHVhbGx5IHRoZXJlIGFyZSAyMCww MDAgcm93cy4KK2NyZWF0ZSB0YWJsZSBiaWdnZXJfdGhhbl9pdF9sb29rcyBhcworICBzZWxlY3Qg Z2VuZXJhdGVfc2VyaWVzKDEsIDIwMDAwKSBhcyBpZCwgJ2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWEnOworYWx0ZXIgdGFibGUgYmlnZ2VyX3RoYW5faXRfbG9va3Mgc2V0IChhdXRv dmFjdXVtX2VuYWJsZWQgPSAnZmFsc2UnKTsKK2FsdGVyIHRhYmxlIGJpZ2dlcl90aGFuX2l0X2xv b2tzIHNldCAocGFyYWxsZWxfd29ya2VycyA9IDIpOworYW5hbHl6ZSBiaWdnZXJfdGhhbl9pdF9s b29rczsKK3VwZGF0ZSBwZ19jbGFzcyBzZXQgcmVsdHVwbGVzID0gMTAwMCB3aGVyZSByZWxuYW1l ID0gJ2JpZ2dlcl90aGFuX2l0X2xvb2tzJzsKKy0tIE1ha2UgYSByZWxhdGlvbiB3aG9zZSBzaXpl IHdlIHVuZGVyZXN0aW1hdGUgYW5kIHRoYXQgYWxzbyBoYXMgYQorLS0ga2luZCBvZiBza2V3IHRo YXQgYnJlYWtzIG91ciBiYXRjaGluZyBzY2hlbWUuICBXZSB3YW50IHN0YXRzIHRvIHNheQorLS0g MiByb3dzLCBidXQgYWN0dWFsbHkgdGhlcmUgYXJlIDIwLDAwMCByb3dzIHdpdGggdGhlIHNhbWUg a2V5LgorY3JlYXRlIHRhYmxlIGV4dHJlbWVseV9za2V3ZWQgKGlkIGludCwgdCB0ZXh0KTsKK2Fs dGVyIHRhYmxlIGV4dHJlbWVseV9za2V3ZWQgc2V0IChhdXRvdmFjdXVtX2VuYWJsZWQgPSAnZmFs c2UnKTsKK2FsdGVyIHRhYmxlIGV4dHJlbWVseV9za2V3ZWQgc2V0IChwYXJhbGxlbF93b3JrZXJz ID0gMik7CithbmFseXplIGV4dHJlbWVseV9za2V3ZWQ7CitpbnNlcnQgaW50byBleHRyZW1lbHlf c2tld2VkCisgIHNlbGVjdCA0MiBhcyBpZCwgJ2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWEnCisgIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMDAwKTsKK3VwZGF0ZSBwZ19jbGFz cworICBzZXQgcmVsdHVwbGVzID0gMiwgcmVscGFnZXMgPSBwZ19yZWxhdGlvbl9zaXplKCdleHRy ZW1lbHlfc2tld2VkJykgLyA4MTkyCisgIHdoZXJlIHJlbG5hbWUgPSAnZXh0cmVtZWx5X3NrZXdl ZCc7CistLSBNYWtlIGEgcmVsYXRpb24gd2l0aCBhIGNvdXBsZSBvZiBlbm9ybW91cyB0dXBsZXMu CitjcmVhdGUgdGFibGUgd2lkZSBhcyBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEsIDIpIGFzIGlk LCBycGFkKCcnLCAzMjAwMDAsICd4JykgYXMgdDsKK2FsdGVyIHRhYmxlIHdpZGUgc2V0IChwYXJh bGxlbF93b3JrZXJzID0gMik7CistLSBUaGUgIm9wdGltYWwiIGNhc2U6IHRoZSBoYXNoIHRhYmxl IGZpdHMgaW4gbWVtb3J5OyB3ZSBwbGFuIGZvciAxCistLSBiYXRjaCwgd2Ugc3RpY2sgdG8gdGhh dCBudW1iZXIsIGFuZCBwZWFrIG1lbW9yeSB1c2FnZSBzdGF5cyB3aXRoaW4KKy0tIG91ciB3b3Jr X21lbSBidWRnZXQKKy0tIG5vbi1wYXJhbGxlbAorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxv Y2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworc2V0IGxvY2FsIHdvcmtf bWVtID0gJzRNQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxh aW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1w bGUgcyB1c2luZyAoaWQpOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQor ICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAgIC0+ICBIYXNoCisgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHMKKyg2IHJvd3MpCisKK3NlbGVjdCBjb3Vu dCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0t LS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxs eV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZy b20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUg ciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CiskJCk7CisgaW5pdGlhbGx5X211bHRpYmF0Y2gg fCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLQorIGYgICAgICAgICAgICAgICAgICAgIHwgZgorKDEgcm93KQorCityb2xsYmFjayB0 byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtb2JsaXZpb3VzIGhhc2ggam9p bgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Bl cl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzRNQic7CitzZXQgbG9jYWwgaGFz aF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9 IG9mZjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxl IHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQorICAgLT4g IEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVkOiAyCisgICAgICAgICAtPiAgUGFydGlh bCBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAg ICAgICAgIEhhc2ggQ29uZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAgICAgICAgICAgICAgLT4g IFBhcmFsbGVsIFNlcSBTY2FuIG9uIHNpbXBsZSByCisgICAgICAgICAgICAgICAgICAgICAtPiAg SGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHNpbXBsZSBz CisoOSByb3dzKQorCitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBz IHVzaW5nIChpZCk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworc2VsZWN0 IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBh cyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2Vs ZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworJCQp OworIGluaXRpYWxseV9tdWx0aWJhdGNoIHwgaW5jcmVhc2VkX2JhdGNoZXMgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmICAgICAgICAgICAgICAgICAgICB8 IGYKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBwYXJhbGxlbCB3aXRoIHBh cmFsbGVsLWF3YXJlIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1h eF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0g JzRNQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBl bmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3Qg Y291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgRmluYWxpemUgQWdncmVnYXRlCisgICAtPiAgR2F0aGVyCisgICAgICAgICBXb3JrZXJz IFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBQYXJ0aWFsIEFnZ3JlZ2F0ZQorICAgICAgICAgICAg ICAgLT4gIFBhcmFsbGVsIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25k OiAoci5pZCA9IHMuaWQpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNj YW4gb24gc2ltcGxlIHIKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxl IHMKKyg5IHJvd3MpCisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxl IHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxl Y3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFs IGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBz ZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7Cisk JCk7CisgaW5pdGlhbGx5X211bHRpYmF0Y2ggfCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIGYgICAgICAgICAgICAgICAgICAg IHwgZgorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIFRoZSAiZ29vZCIgY2Fz ZTogYmF0Y2hlcyByZXF1aXJlZCwgYnV0IHdlIHBsYW4gdGhlIHJpZ2h0IG51bWJlcjsgd2UKKy0t IHBsYW4gZm9yIHNvbWUgbnVtYmVyIG9mIGJhdGNoZXMsIGFuZCB3ZSBzdGljayB0byB0aGF0IG51 bWJlciwgYW5kCistLSBwZWFrIG1lbW9yeSB1c2FnZSBzYXlzIHdpdGhpbiBvdXIgd29ya19tZW0g YnVkZ2V0CistLSBub24tcGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBt YXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKK3NldCBsb2NhbCB3b3JrX21lbSA9 ICcxMjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4g KGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUg cyB1c2luZyAoaWQpOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAg LT4gIEhhc2ggSm9pbgorICAgICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHMKKyg2IHJvd3MpCisKK3NlbGVjdCBjb3VudCgq KSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0t LS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9t dWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20g aGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBq b2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CiskJCk7CisgaW5pdGlhbGx5X211bHRpYmF0Y2ggfCBp bmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLQorIHQgICAgICAgICAgICAgICAgICAgIHwgZgorKDEgcm93KQorCityb2xsYmFjayB0byBz ZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtb2JsaXZpb3VzIGhhc2ggam9pbgor c2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9n YXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzEyOGtCJzsKK3NldCBsb2NhbCBoYXNo X21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0g b2ZmOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUg ciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgQWdncmVnYXRlCisgICAtPiAg R2F0aGVyCisgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBQYXJ0aWFs IEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAg ICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAgICAgICAgICAgICAgICAtPiAg UGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBI YXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHMK Kyg5IHJvd3MpCisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMg dXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxlY3Qg b3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFsIGFz IGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxl Y3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CiskJCk7 CisgaW5pdGlhbGx5X211bHRpYmF0Y2ggfCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICAgICAgICAgICAgIHwg ZgorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFy YWxsZWwtYXdhcmUgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4 X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQgbG9jYWwgd29ya19tZW0gPSAn MTkya0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwg ZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0 IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQorICAgLT4gIEdhdGhlcgorICAgICAgICAgV29ya2Vy cyBQbGFubmVkOiAyCisgICAgICAgICAtPiAgUGFydGlhbCBBZ2dyZWdhdGUKKyAgICAgICAgICAg ICAgIC0+ICBQYXJhbGxlbCBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29u ZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBT Y2FuIG9uIHNpbXBsZSByCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHNpbXBs ZSBzCisoOSByb3dzKQorCitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBs ZSBzIHVzaW5nIChpZCk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworc2Vs ZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5h bCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAg c2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOwor JCQpOworIGluaXRpYWxseV9tdWx0aWJhdGNoIHwgaW5jcmVhc2VkX2JhdGNoZXMgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgICAgICAgICAg ICB8IGYKKygxIHJvdykKKworLS0gcGFyYWxsZWwgZnVsbCBtdWx0aS1iYXRjaCBoYXNoIGpvaW4K K3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1 c2luZyAoaWQpOworIGNvdW50IAorLS0tLS0tLQorIDIwMDAwCisoMSByb3cpCisKK3JvbGxiYWNr IHRvIHNldHRpbmdzOworLS0gVGhlICJiYWQiIGNhc2U6IGR1cmluZyBleGVjdXRpb24gd2UgbmVl ZCB0byBpbmNyZWFzZSBudW1iZXIgb2YKKy0tIGJhdGNoZXM7IGluIHRoaXMgY2FzZSB3ZSBwbGFu IGZvciAxIGJhdGNoLCBhbmQgaW5jcmVhc2UgYXQgbGVhc3QgYQorLS0gY291cGxlIG9mIHRpbWVz LCBhbmQgcGVhayBtZW1vcnkgdXNhZ2Ugc3RheXMgd2l0aGluIG91ciB3b3JrX21lbQorLS0gYnVk Z2V0CistLSBub24tcGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhf cGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKK3NldCBsb2NhbCB3b3JrX21lbSA9ICcx MjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4gKGNv c3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIEZST00gc2ltcGxlIHIgSk9JTiBiaWdnZXJfdGhh bl9pdF9sb29rcyBzIFVTSU5HIChpZCk7CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEhhc2ggSm9pbgorICAg ICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24g c2ltcGxlIHIKKyAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gYmlnZ2VyX3RoYW5faXRfbG9va3MgcworKDYgcm93cykKKworc2VsZWN0IGNvdW50KCopIEZS T00gc2ltcGxlIHIgSk9JTiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIFVTSU5HIChpZCk7CisgY291 bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworc2VsZWN0IG9yaWdpbmFsID4gMSBhcyBp bml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hl cworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIEZST00g c2ltcGxlIHIgSk9JTiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIFVTSU5HIChpZCk7CiskJCk7Cisg aW5pdGlhbGx5X211bHRpYmF0Y2ggfCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIGYgICAgICAgICAgICAgICAgICAgIHwgdAor KDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxs ZWwtb2JsaXZpb3VzIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1h eF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0g JzEyOGtCJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0IGxvY2Fs IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxl Y3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMgdXNp bmcgKGlkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgQWdncmVnYXRlCisgICAt PiAgR2F0aGVyCisgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBQYXJ0 aWFsIEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAg ICAgICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAgICAgICAgICAgICAgICAt PiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gYmlnZ2Vy X3RoYW5faXRfbG9va3MgcworKDkgcm93cykKKworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxl IHIgam9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CisgY291bnQgCistLS0t LS0tCisgMjAwMDAKKygxIHJvdykKKworc2VsZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlf bXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9t IGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIg am9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CiskJCk7CisgaW5pdGlhbGx5 X211bHRpYmF0Y2ggfCBpbmNyZWFzZWRfYmF0Y2hlcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLQorIGYgICAgICAgICAgICAgICAgICAgIHwgdAorKDEgcm93KQor Cityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtYXdhcmUg aGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dv cmtlcnNfcGVyX2dhdGhlciA9IDE7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnMTkya0InOworc2V0 IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwgZW5hYmxlX3BhcmFs bGVsX2hhc2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZy b20gc2ltcGxlIHIgam9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQor ICAgLT4gIEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVkOiAxCisgICAgICAgICAtPiAg UGFydGlhbCBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoIEpvaW4K KyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAg ICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHNpbXBsZSByCisgICAgICAgICAg ICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMKKyg5IHJvd3Mp CisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gYmlnZ2VyX3RoYW5faXRfbG9v a3MgcyB1c2luZyAoaWQpOworIGNvdW50IAorLS0tLS0tLQorIDIwMDAwCisoMSByb3cpCisKK3Nl bGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gsIGZpbmFsID4gb3JpZ2lu YWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisg IHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gYmlnZ2VyX3RoYW5faXRfbG9va3Mg cyB1c2luZyAoaWQpOworJCQpOworIGluaXRpYWxseV9tdWx0aWJhdGNoIHwgaW5jcmVhc2VkX2Jh dGNoZXMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmICAg ICAgICAgICAgICAgICAgICB8IHQKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7Cist LSBUaGUgInVnbHkiIGNhc2U6IGluY3JlYXNpbmcgdGhlIG51bWJlciBvZiBiYXRjaGVzIGR1cmlu ZyBleGVjdXRpb24KKy0tIGRvZXNuJ3QgaGVscCwgc28gc3RvcCB0cnlpbmcgdG8gZml0IGluIHdv cmtfbWVtIGFuZCBob3BlIGZvciB0aGUKKy0tIGJlc3Q7IGluIHRoaXMgY2FzZSB3ZSBwbGFuIGZv ciAxIGJhdGNoLCBpbmNyZWFzZXMganVzdCBvbmNlIGFuZAorLS0gdGhlbiBzdG9wIGluY3JlYXNp bmcgYmVjYXVzZSB0aGF0IGRpZG4ndCBoZWxwIGF0IGFsbCwgc28gd2UgYmxvdworLS0gcmlnaHQg dGhyb3VnaCB0aGUgd29ya19tZW0gYnVkZ2V0IGFuZCBob3BlIGZvciB0aGUgYmVzdC4uLgorLS0g bm9uLXBhcmFsbGVsCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVs X3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnMTI4a0InOwor c2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0cyBvZmYp CisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5X3NrZXdlZCBz IHVzaW5nIChpZCk7CisgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgIEhhc2ggQ29uZDogKHIu aWQgPSBzLmlkKQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHNpbXBsZSByCisgICAgICAgICAt PiAgSGFzaAorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGV4dHJlbWVseV9za2V3ZWQg cworKDYgcm93cykKKworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1l bHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93 KQorCitzZWxlY3QgKiBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50 KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKKyQk KTsKKyBvcmlnaW5hbCB8IGZpbmFsIAorLS0tLS0tLS0tLSstLS0tLS0tCisgICAgICAgIDEgfCAg ICAgMgorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGgg cGFyYWxsZWwtb2JsaXZpb3VzIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxv Y2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtf bWVtID0gJzEyOGtCJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0 IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworZXhwbGFpbiAoY29zdHMgb2ZmKQor ICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4dHJlbWVseV9za2V3ZWQgcyB1 c2luZyAoaWQpOworICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgR2F0aGVyCisgICAgICAgICBXb3JrZXJz IFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIEhhc2gg Q29uZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2Fu IG9uIHNpbXBsZSByCisgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIGV4dHJlbWVseV9za2V3ZWQgcworKDggcm93cykKKworc2VsZWN0 IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlk KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxlY3QgKiBmcm9tIGhh c2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9p biBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKKyQkKTsKKyBvcmlnaW5hbCB8IGZpbmFs IAorLS0tLS0tLS0tLSstLS0tLS0tCisgICAgICAgIDEgfCAgICAgMgorKDEgcm93KQorCityb2xs YmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtYXdhcmUgaGFzaCBq b2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNf cGVyX2dhdGhlciA9IDE7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnMTI4a0InOworc2V0IGxvY2Fs IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwgZW5hYmxlX3BhcmFsbGVsX2hh c2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2lt cGxlIHIgam9pbiBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVk OiAxCisgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaCBKb2luCisgICAgICAgICAgICAgICBIYXNo IENvbmQ6IChyLmlkID0gcy5pZCkKKyAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2Nh biBvbiBzaW1wbGUgcgorICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2gKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBleHRyZW1lbHlfc2tld2VkIHMK Kyg4IHJvd3MpCisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5 X3NrZXdlZCBzIHVzaW5nIChpZCk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykK Kworc2VsZWN0ICogZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgq KSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CiskJCk7 Cisgb3JpZ2luYWwgfCBmaW5hbCAKKy0tLS0tLS0tLS0rLS0tLS0tLQorICAgICAgICAxIHwgICAg IDQKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBBIGNvdXBsZSBvZiBvdGhl ciBoYXNoIGpvaW4gdGVzdHMgdW5yZWxhdGVkIHRvIHdvcmtfbWVtIG1hbmFnZW1lbnQuCistLSBD aGVjayB0aGF0IEVYUExBSU4gQU5BTFlaRSBoYXMgZGF0YSBldmVuIGlmIHRoZSBsZWFkZXIgZG9l c24ndCBwYXJ0aWNpcGF0ZQorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJh bGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzRNQic7 CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBwYXJhbGxl bF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9mZjsKK3NlbGVjdCAqIGZyb20gaGFzaF9qb2luX2Jh dGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBz IHVzaW5nIChpZCk7CiskJCk7Cisgb3JpZ2luYWwgfCBmaW5hbCAKKy0tLS0tLS0tLS0rLS0tLS0t LQorICAgICAgICAxIHwgICAgIDEKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7Cist LSBFeGVyY2lzZSByZXNjYW5zLiAgV2UnbGwgdHVybiBvZmYgcGFyYWxsZWxfbGVhZGVyX3BhcnRp Y2lwYXRpb24gc28KKy0tIHRoYXQgd2UgY2FuIGNoZWNrIHRoYXQgaW5zdHJ1bWVudGF0aW9uIGNv bWVzIGJhY2sgY29ycmVjdGx5LgorY3JlYXRlIHRhYmxlIGpvaW5fZm9vIGFzIHNlbGVjdCBnZW5l cmF0ZV9zZXJpZXMoMSwgMykgYXMgaWQsICd4eHh4eCc6OnRleHQgYXMgdDsKK2FsdGVyIHRhYmxl IGpvaW5fZm9vIHNldCAocGFyYWxsZWxfd29ya2VycyA9IDApOworY3JlYXRlIHRhYmxlIGpvaW5f YmFyIGFzIHNlbGVjdCBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMDApIGFzIGlkLCAneHh4eHgnOjp0 ZXh0IGFzIHQ7CithbHRlciB0YWJsZSBqb2luX2JhciBzZXQgKHBhcmFsbGVsX3dvcmtlcnMgPSAy KTsKK2FuYWx5emUgam9pbl9mb28sIGpvaW5fYmFyOworLS0gbXVsdGktYmF0Y2ggd2l0aCByZXNj YW4sIHBhcmFsbGVsLW9ibGl2aW91cworc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGVuYWJsZV9w YXJhbGxlbF9oYXNoID0gb2ZmOworc2V0IHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0g b2ZmOworc2V0IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOworc2V0IHBhcmFsbGVs X3NldHVwX2Nvc3QgPSAwOworc2V0IHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworc2V0IG1heF9w YXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVuYWJsZV9tYXRlcmlhbCA9IG9m ZjsKK3NldCBlbmFibGVfbWVyZ2Vqb2luID0gb2ZmOworc2V0IHdvcmtfbWVtID0gJzY0a0InOwor c2V0IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNl bGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQs IGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisg ICAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAx OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBOZXN0ZWQgTG9vcCBMZWZ0IEpvaW4KKyAgICAgICAgIEpv aW4gRmlsdGVyOiAoKGpvaW5fZm9vLmlkIDwgKGIxLmlkICsgMSkpIEFORCAoam9pbl9mb28uaWQg PiAoYjEuaWQgLSAxKSkpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gam9pbl9mb28KKyAgICAg ICAgIC0+ICBHYXRoZXIKKyAgICAgICAgICAgICAgIFdvcmtlcnMgUGxhbm5lZDogMgorICAgICAg ICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAo YjEuaWQgPSBiMi5pZCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2Nh biBvbiBqb2luX2JhciBiMQorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBqb2luX2JhciBiMgorKDExIHJvd3Mp CisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgIGxlZnQgam9pbiAoc2VsZWN0IGIx LmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBz cworICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAt IDE7CisgY291bnQgCistLS0tLS0tCisgICAgIDMKKygxIHJvdykKKworc2VsZWN0IGZpbmFsID4g MSBhcyBtdWx0aWJhdGNoCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3Qg Y291bnQoKikgZnJvbSBqb2luX2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50 IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9u IGpvaW5fZm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyQk KTsKKyBtdWx0aWJhdGNoIAorLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCityb2xsYmFjayB0 byBzZXR0aW5nczsKKy0tIHNpbmdsZS1iYXRjaCB3aXRoIHJlc2NhbiwgcGFyYWxsZWwtb2JsaXZp b3VzCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7 CitzZXQgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7CitzZXQgbWluX3BhcmFs bGVsX3RhYmxlX3NjYW5fc2l6ZSA9IDA7CitzZXQgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7Citz ZXQgcGFyYWxsZWxfdHVwbGVfY29zdCA9IDA7CitzZXQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVy X2dhdGhlciA9IDI7CitzZXQgZW5hYmxlX21hdGVyaWFsID0gb2ZmOworc2V0IGVuYWJsZV9tZXJn ZWpvaW4gPSBvZmY7CitzZXQgd29ya19tZW0gPSAnNE1CJzsKK3NldCBoYXNoX21lbV9tdWx0aXBs aWVyID0gMS4wOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBq b2luX2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIg YjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9uIGpvaW5fZm9vLmlkIDwg c3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAt PiAgTmVzdGVkIExvb3AgTGVmdCBKb2luCisgICAgICAgICBKb2luIEZpbHRlcjogKChqb2luX2Zv by5pZCA8IChiMS5pZCArIDEpKSBBTkQgKGpvaW5fZm9vLmlkID4gKGIxLmlkIC0gMSkpKQorICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIGpvaW5fZm9vCisgICAgICAgICAtPiAgR2F0aGVyCisgICAg ICAgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpv aW4KKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKGIxLmlkID0gYjIuaWQpCisgICAg ICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gam9pbl9iYXIgYjEKKyAg ICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gam9pbl9iYXIgYjIKKygxMSByb3dzKQorCitzZWxlY3QgY291bnQoKikg ZnJvbSBqb2luX2ZvbworICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5f YmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgb24gam9pbl9mb28uaWQg PCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworIGNvdW50IAorLS0tLS0t LQorICAgICAzCisoMSByb3cpCisKK3NlbGVjdCBmaW5hbCA+IDEgYXMgbXVsdGliYXRjaAorICBm cm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9m b28KKyAgICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIxIGpv aW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgICBvbiBqb2luX2Zvby5pZCA8IHNzLmlk ICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CiskJCk7CisgbXVsdGliYXRjaCAKKy0t LS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBtdWx0 aS1iYXRjaCB3aXRoIHJlc2NhbiwgcGFyYWxsZWwtYXdhcmUKK3NhdmVwb2ludCBzZXR0aW5nczsK K3NldCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworc2V0IHBhcmFsbGVsX2xlYWRlcl9wYXJ0 aWNpcGF0aW9uID0gb2ZmOworc2V0IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOwor c2V0IHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworc2V0IHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAw Oworc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVuYWJsZV9t YXRlcmlhbCA9IG9mZjsKK3NldCBlbmFibGVfbWVyZ2Vqb2luID0gb2ZmOworc2V0IHdvcmtfbWVt ID0gJzY0a0InOworc2V0IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0 cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVmdCBqb2luIChz ZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5n IChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlk ID4gc3MuaWQgLSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBOZXN0ZWQgTG9vcCBMZWZ0IEpvaW4K KyAgICAgICAgIEpvaW4gRmlsdGVyOiAoKGpvaW5fZm9vLmlkIDwgKGIxLmlkICsgMSkpIEFORCAo am9pbl9mb28uaWQgPiAoYjEuaWQgLSAxKSkpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gam9p bl9mb28KKyAgICAgICAgIC0+ICBHYXRoZXIKKyAgICAgICAgICAgICAgIFdvcmtlcnMgUGxhbm5l ZDogMgorICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2ggSm9pbgorICAgICAgICAgICAg ICAgICAgICAgSGFzaCBDb25kOiAoYjEuaWQgPSBiMi5pZCkKKyAgICAgICAgICAgICAgICAgICAg IC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBqb2luX2JhciBiMQorICAgICAgICAgICAgICAgICAg ICAgLT4gIFBhcmFsbGVsIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJh bGxlbCBTZXEgU2NhbiBvbiBqb2luX2JhciBiMgorKDExIHJvd3MpCisKK3NlbGVjdCBjb3VudCgq KSBmcm9tIGpvaW5fZm9vCisgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9p bl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICBvbiBqb2luX2Zvby5p ZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CisgY291bnQgCistLS0t LS0tCisgICAgIDMKKygxIHJvdykKKworc2VsZWN0IGZpbmFsID4gMSBhcyBtdWx0aWJhdGNoCisg IGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBqb2lu X2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEg am9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9uIGpvaW5fZm9vLmlkIDwgc3Mu aWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyQkKTsKKyBtdWx0aWJhdGNoIAor LS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHNp bmdsZS1iYXRjaCB3aXRoIHJlc2NhbiwgcGFyYWxsZWwtYXdhcmUKK3NhdmVwb2ludCBzZXR0aW5n czsKK3NldCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworc2V0IHBhcmFsbGVsX2xlYWRlcl9w YXJ0aWNpcGF0aW9uID0gb2ZmOworc2V0IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAw Oworc2V0IHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworc2V0IHBhcmFsbGVsX3R1cGxlX2Nvc3Qg PSAwOworc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVuYWJs ZV9tYXRlcmlhbCA9IG9mZjsKK3NldCBlbmFibGVfbWVyZ2Vqb2luID0gb2ZmOworc2V0IHdvcmtf bWVtID0gJzRNQic7CitzZXQgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4gKGNv c3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9mb28KKyAgICBsZWZ0IGpvaW4g KHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNp bmcgKGlkKSkgc3MKKyAgICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28u aWQgPiBzcy5pZCAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIE5lc3RlZCBMb29wIExlZnQgSm9p bgorICAgICAgICAgSm9pbiBGaWx0ZXI6ICgoam9pbl9mb28uaWQgPCAoYjEuaWQgKyAxKSkgQU5E IChqb2luX2Zvby5pZCA+IChiMS5pZCAtIDEpKSkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBq b2luX2ZvbworICAgICAgICAgLT4gIEdhdGhlcgorICAgICAgICAgICAgICAgV29ya2VycyBQbGFu bmVkOiAyCisgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaCBKb2luCisgICAgICAgICAg ICAgICAgICAgICBIYXNoIENvbmQ6IChiMS5pZCA9IGIyLmlkKQorICAgICAgICAgICAgICAgICAg ICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIGpvaW5fYmFyIGIxCisgICAgICAgICAgICAgICAg ICAgICAtPiAgUGFyYWxsZWwgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBh cmFsbGVsIFNlcSBTY2FuIG9uIGpvaW5fYmFyIGIyCisoMTEgcm93cykKKworc2VsZWN0IGNvdW50 KCopIGZyb20gam9pbl9mb28KKyAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBq b2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgIG9uIGpvaW5fZm9v LmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyBjb3VudCAKKy0t LS0tLS0KKyAgICAgMworKDEgcm93KQorCitzZWxlY3QgZmluYWwgPiAxIGFzIG11bHRpYmF0Y2gK KyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpv aW5fZm9vCisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBi MSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBz cy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworJCQpOworIG11bHRpYmF0Y2gg CistLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0g QSBmdWxsIG91dGVyIGpvaW4gd2hlcmUgZXZlcnkgcmVjb3JkIGlzIG1hdGNoZWQuCistLSBub24t cGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29y a2Vyc19wZXJfZ2F0aGVyID0gMDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgICAgc2VsZWN0ICBj b3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQp OworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEhhc2ggRnVs bCBKb2luCisgICAgICAgICBIYXNoIENvbmQ6IChyLmlkID0gcy5pZCkKKyAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBzaW1wbGUgcgorICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBzaW1wbGUgcworKDYgcm93cykKKworc2VsZWN0ICBjb3VudCgqKSBmcm9t IHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworIGNvdW50IAor LS0tLS0tLQorIDIwMDAwCisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0gcGFy YWxsZWxpc20gbm90IHBvc3NpYmxlIHdpdGggcGFyYWxsZWwtb2JsaXZpb3VzIGZ1bGwgaGFzaCBq b2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7 CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitleHBsYWlu IChjb3N0cyBvZmYpCisgICAgIHNlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91 dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBBZ2dyZWdhdGUKKyAgIC0+ICBIYXNoIEZ1bGwgSm9pbgorICAgICAgICAgSGFzaCBDb25kOiAo ci5pZCA9IHMuaWQpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAg IC0+ICBIYXNoCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gc2ltcGxlIHMKKyg2IHJv d3MpCisKK3NlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2lt cGxlIHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCity b2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsaXNtIGlzIHBvc3NpYmxlIHdpdGggcGFy YWxsZWwtYXdhcmUgZnVsbCBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2Nh bCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK2V4cGxhaW4gKGNvc3RzIG9m ZikKKyAgICAgc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBz aW1wbGUgcyB1c2luZyAoaWQpOworICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQorICAg LT4gIEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVkOiAyCisgICAgICAgICAtPiAgUGFy dGlhbCBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoIEZ1bGwgSm9p bgorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAg ICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxlIHMKKyg5IHJvd3MpCisKK3NlbGVjdCAg Y291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlk KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0 aW5nczsKKy0tIEEgZnVsbCBvdXRlciBqb2luIHdoZXJlIGV2ZXJ5IHJlY29yZCBpcyBub3QgbWF0 Y2hlZC4KKy0tIG5vbi1wYXJhbGxlbAorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1h eF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworZXhwbGFpbiAoY29zdHMgb2ZmKQor ICAgICBzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBs ZSBzIG9uIChyLmlkID0gMCAtIHMuaWQpOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFn Z3JlZ2F0ZQorICAgLT4gIEhhc2ggRnVsbCBKb2luCisgICAgICAgICBIYXNoIENvbmQ6ICgoMCAt IHMuaWQpID0gci5pZCkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcworICAgICAg ICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcgorKDYg cm93cykKKworc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBz aW1wbGUgcyBvbiAoci5pZCA9IDAgLSBzLmlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyA0MDAwMAor KDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsaXNtIG5vdCBwb3Nz aWJsZSB3aXRoIHBhcmFsbGVsLW9ibGl2aW91cyBmdWxsIGhhc2ggam9pbgorc2F2ZXBvaW50IHNl dHRpbmdzOworc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworc2V0IGxvY2FsIG1heF9w YXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICAg ICBzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBz IG9uIChyLmlkID0gMCAtIHMuaWQpOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3Jl Z2F0ZQorICAgLT4gIEhhc2ggRnVsbCBKb2luCisgICAgICAgICBIYXNoIENvbmQ6ICgoMCAtIHMu aWQpID0gci5pZCkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcworICAgICAgICAg LT4gIEhhc2gKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcgorKDYgcm93 cykKKworc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1w bGUgcyBvbiAoci5pZCA9IDAgLSBzLmlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyA0MDAwMAorKDEg cm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIHBhcmFsbGVsaXNtIGlzIHBvc3NpYmxl IHdpdGggcGFyYWxsZWwtYXdhcmUgZnVsbCBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsK K3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK2V4cGxhaW4g KGNvc3RzIG9mZikKKyAgICAgc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0 ZXIgam9pbiBzaW1wbGUgcyBvbiAoci5pZCA9IDAgLSBzLmlkKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5h bGl6ZSBBZ2dyZWdhdGUKKyAgIC0+ICBHYXRoZXIKKyAgICAgICAgIFdvcmtlcnMgUGxhbm5lZDog MgorICAgICAgICAgLT4gIFBhcnRpYWwgQWdncmVnYXRlCisgICAgICAgICAgICAgICAtPiAgUGFy YWxsZWwgSGFzaCBGdWxsIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKCgw IC0gcy5pZCkgPSByLmlkKQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBT Y2FuIG9uIHNpbXBsZSBzCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHNpbXBs ZSByCisoOSByb3dzKQorCitzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRl ciBqb2luIHNpbXBsZSBzIG9uIChyLmlkID0gMCAtIHMuaWQpOworIGNvdW50IAorLS0tLS0tLQor IDQwMDAwCisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0gZXhlcmNpc2Ugc3Bl Y2lhbCBjb2RlIHBhdGhzIGZvciBodWdlIHR1cGxlcyAobm90ZSB1c2Ugb2Ygbm9uLXN0cmljdAor LS0gZXhwcmVzc2lvbiBhbmQgbGVmdCBqb2luIHJlcXVpcmVkIHRvIGdldCB0aGUgZGV0b2FzdGVk IHR1cGxlIGludG8KKy0tIHRoZSBoYXNoIHRhYmxlKQorLS0gcGFyYWxsZWwgd2l0aCBwYXJhbGxl bC1hd2FyZSBoYXNoIGpvaW4gKGhpdHMgRXhlY1BhcmFsbGVsSGFzaExvYWRUdXBsZSBhbmQKKy0t IHN0c19wdXR0dXBsZSBvdmVyc2l6ZWQgdHVwbGUgY2FzZXMgYmVjYXVzZSBpdCdzIG11bHRpLWJh dGNoKQorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9n YXRoZXIgPSAyOworc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb247CitzZXQgd29ya19tZW0g PSAnMTI4a0InOworc2V0IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0 cyBvZmYpCisgIHNlbGVjdCBsZW5ndGgobWF4KHMudCkpCisgIGZyb20gd2lkZSBsZWZ0IGpvaW4g KHNlbGVjdCBpZCwgY29hbGVzY2UodCwgJycpIHx8ICcnIGFzIHQgZnJvbSB3aWRlKSBzIHVzaW5n IChpZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgQWdncmVnYXRlCisgICAtPiAgR2F0 aGVyCisgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBQYXJ0aWFsIEFn Z3JlZ2F0ZQorICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2ggTGVmdCBKb2luCisgICAg ICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh3aWRlLmlkID0gd2lkZV8xLmlkKQorICAgICAg ICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHdpZGUKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gd2lkZSB3aWRlXzEKKyg5IHJvd3MpCisKK3NlbGVjdCBs ZW5ndGgobWF4KHMudCkpCitmcm9tIHdpZGUgbGVmdCBqb2luIChzZWxlY3QgaWQsIGNvYWxlc2Nl KHQsICcnKSB8fCAnJyBhcyB0IGZyb20gd2lkZSkgcyB1c2luZyAoaWQpOworIGxlbmd0aCAKKy0t LS0tLS0tCisgMzIwMDAwCisoMSByb3cpCisKK3NlbGVjdCBmaW5hbCA+IDEgYXMgbXVsdGliYXRj aAorICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGxlbmd0aChtYXgocy50 KSkKKyAgZnJvbSB3aWRlIGxlZnQgam9pbiAoc2VsZWN0IGlkLCBjb2FsZXNjZSh0LCAnJykgfHwg JycgYXMgdCBmcm9tIHdpZGUpIHMgdXNpbmcgKGlkKTsKKyQkKTsKKyBtdWx0aWJhdGNoIAorLS0t LS0tLS0tLS0tCisgdAorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIEhhc2gg am9pbiByZXVzZXMgdGhlIEhPVCBzdGF0dXMgYml0IHRvIGluZGljYXRlIG1hdGNoIHN0YXR1cy4g VGhpcyBjYW4gb25seQorLS0gYmUgZ3VhcmFudGVlZCB0byBwcm9kdWNlIGNvcnJlY3QgcmVzdWx0 cyBpZiBhbGwgdGhlIGhhc2ggam9pbiB0dXBsZSBtYXRjaAorLS0gYml0cyBhcmUgcmVzZXQgYmVm b3JlIHJldXNlLiBUaGlzIGlzIGRvbmUgdXBvbiBsb2FkaW5nIHRoZW0gaW50byB0aGUKKy0tIGhh c2h0YWJsZS4KK1NBVkVQT0lOVCBzZXR0aW5nczsKK1NFVCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9 IG9uOworU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOworU0VUIHBhcmFsbGVs X3NldHVwX2Nvc3QgPSAwOworU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworQ1JFQVRFIFRB QkxFIGhqdGVzdF9tYXRjaGJpdHNfdDEoaWQgaW50KTsKK0NSRUFURSBUQUJMRSBoanRlc3RfbWF0 Y2hiaXRzX3QyKGlkIGludCk7CitJTlNFUlQgSU5UTyBoanRlc3RfbWF0Y2hiaXRzX3QxIFZBTFVF UyAoMSk7CitJTlNFUlQgSU5UTyBoanRlc3RfbWF0Y2hiaXRzX3QyIFZBTFVFUyAoMik7CistLSBV cGRhdGUgc2hvdWxkIGNyZWF0ZSBhIEhPVCB0dXBsZS4gSWYgdGhpcyBzdGF0dXMgYml0IGlzbid0 IGNsZWFyZWQsIHdlIHdvbid0CistLSBjb3JyZWN0bHkgZW1pdCB0aGUgTlVMTC1leHRlbmRlZCB1 bm1hdGNoaW5nIHR1cGxlIGluIGZ1bGwgaGFzaCBqb2luLgorVVBEQVRFIGhqdGVzdF9tYXRjaGJp dHNfdDIgc2V0IGlkID0gMjsKK1NFTEVDVCAqIEZST00gaGp0ZXN0X21hdGNoYml0c190MSB0MSBG VUxMIEpPSU4gaGp0ZXN0X21hdGNoYml0c190MiB0MiBPTiB0MS5pZCA9IHQyLmlkCisgIE9SREVS IEJZIHQxLmlkOworIGlkIHwgaWQgCistLS0tKy0tLS0KKyAgMSB8ICAgCisgICAgfCAgMgorKDIg cm93cykKKworLS0gVGVzdCBzZXJpYWwgZnVsbCBoYXNoIGpvaW4uCistLSBSZXNldHRpbmcgcGFy YWxsZWxfc2V0dXBfY29zdCBzaG91bGQgZm9yY2UgYSBzZXJpYWwgcGxhbi4KKy0tIEp1c3QgdG8g YmUgc2FmZSwgaG93ZXZlciwgc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoIHRvIG9mZiwgYXMgcGFy YWxsZWwgZnVsbAorLS0gaGFzaCBqb2lucyBhcmUgb25seSBzdXBwb3J0ZWQgd2l0aCBzaGFyZWQg aGFzaHRhYmxlcy4KK1JFU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3Q7CitTRVQgZW5hYmxlX3BhcmFs bGVsX2hhc2ggPSBvZmY7CitTRUxFQ1QgKiBGUk9NIGhqdGVzdF9tYXRjaGJpdHNfdDEgdDEgRlVM TCBKT0lOIGhqdGVzdF9tYXRjaGJpdHNfdDIgdDIgT04gdDEuaWQgPSB0Mi5pZDsKKyBpZCB8IGlk IAorLS0tLSstLS0tCisgIDEgfCAgIAorICAgIHwgIDIKKygyIHJvd3MpCisKK1JPTExCQUNLIFRP IHNldHRpbmdzOworcm9sbGJhY2s7CistLSBWZXJpZnkgdGhhdCBoYXNoIGtleSBleHByZXNzaW9u cyByZWZlcmVuY2UgdGhlIGNvcnJlY3QKKy0tIG5vZGVzLiBIYXNoam9pbidzIGhhc2hrZXlzIG5l ZWQgdG8gcmVmZXJlbmNlIGl0cyBvdXRlciBwbGFuLCBIYXNoJ3MKKy0tIG5lZWQgdG8gcmVmZXJl bmNlIEhhc2gncyBvdXRlciBwbGFuICh3aGljaCBpcyBiZWxvdyBIYXNoSm9pbidzCistLSBpbm5l ciBwbGFuKS4gSXQncyBub3QgdHJpdmlhbCB0byB2ZXJpZnkgdGhhdCB0aGUgcmVmZXJlbmNlcyBh cmUKKy0tIGNvcnJlY3QgKHdlIGRvbid0IGRpc3BsYXkgdGhlIGhhc2hrZXlzIHRoZW1zZWx2ZXMp LCBidXQgaWYgdGhlCistLSBoYXNoa2V5cyBjb250YWluIHN1YnBsYW4gcmVmZXJlbmNlcywgdGhv c2Ugd2lsbCBiZSBkaXNwbGF5ZWQuIEZvcmNlCistLSBzdWJwbGFucyB0byBhcHBlYXIganVzdCBh Ym91dCBldmVyeXdoZXJlLgorLS0KKy0tIEJ1ZyByZXBvcnQ6CistLSBodHRwczovL3d3dy5wb3N0 Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0NBUHBIZmR2R1ZlZ0ZfVEtLUmlCclNtYXRKTDJkUjl1d0ZD dVIlMkJ0ZVFfOHRFWFU4bXhnJTQwbWFpbC5nbWFpbC5jb20KKy0tCitCRUdJTjsKK1NFVCBMT0NB TCBlbmFibGVfc29ydCA9IE9GRjsgLS0gYXZvaWQgbWVyZ2Vqb2lucworU0VUIExPQ0FMIGZyb21f Y29sbGFwc2VfbGltaXQgPSAxOyAtLSBhbGxvd3MgZWFzeSBjaGFuZ2luZyBvZiBqb2luIG9yZGVy CitDUkVBVEUgVEFCTEUgaGp0ZXN0XzEgKGEgdGV4dCwgYiBpbnQsIGlkIGludCwgYyBib29sKTsK K0NSRUFURSBUQUJMRSBoanRlc3RfMiAoYSBib29sLCBpZCBpbnQsIGIgdGV4dCwgYyBpbnQpOwor SU5TRVJUIElOVE8gaGp0ZXN0XzEoYSwgYiwgaWQsIGMpIFZBTFVFUyAoJ3RleHQnLCAyLCAxLCBm YWxzZSk7IC0tIG1hdGNoZXMKK0lOU0VSVCBJTlRPIGhqdGVzdF8xKGEsIGIsIGlkLCBjKSBWQUxV RVMgKCd0ZXh0JywgMSwgMiwgZmFsc2UpOyAtLSBmYWlscyBpZCBqb2luIGNvbmRpdGlvbgorSU5T RVJUIElOVE8gaGp0ZXN0XzEoYSwgYiwgaWQsIGMpIFZBTFVFUyAoJ3RleHQnLCAyMCwgMSwgZmFs c2UpOyAtLSBmYWlscyA8IDUwCitJTlNFUlQgSU5UTyBoanRlc3RfMShhLCBiLCBpZCwgYykgVkFM VUVTICgndGV4dCcsIDEsIDEsIGZhbHNlKTsgLS0gZmFpbHMgKFNFTEVDVCBoanRlc3RfMS5iICog NSkgPSAoU0VMRUNUIGhqdGVzdF8yLmMqNSkKK0lOU0VSVCBJTlRPIGhqdGVzdF8yKGEsIGlkLCBi LCBjKSBWQUxVRVMgKHRydWUsIDEsICdhbm90aGVyJywgMik7IC0tIG1hdGNoZXMKK0lOU0VSVCBJ TlRPIGhqdGVzdF8yKGEsIGlkLCBiLCBjKSBWQUxVRVMgKHRydWUsIDMsICdhbm90aGVyJywgNyk7 IC0tIGZhaWxzIGlkIGpvaW4gY29uZGl0aW9uCitJTlNFUlQgSU5UTyBoanRlc3RfMihhLCBpZCwg YiwgYykgVkFMVUVTICh0cnVlLCAxLCAnYW5vdGhlcicsIDkwKTsgIC0tIGZhaWxzIDwgNTUKK0lO U0VSVCBJTlRPIGhqdGVzdF8yKGEsIGlkLCBiLCBjKSBWQUxVRVMgKHRydWUsIDEsICdhbm90aGVy JywgMyk7IC0tIGZhaWxzIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpID0gKFNFTEVDVCBoanRlc3Rf Mi5jKjUpCitJTlNFUlQgSU5UTyBoanRlc3RfMihhLCBpZCwgYiwgYykgVkFMVUVTICh0cnVlLCAx LCAndGV4dCcsIDEpOyAtLSAgZmFpbHMgaGp0ZXN0XzEuYSA8PiBoanRlc3RfMi5iOworRVhQTEFJ TiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQorU0VMRUNUIGhqdGVzdF8xLmEgYTEsIGhqdGVzdF8yLmEg YTIsaGp0ZXN0XzEudGFibGVvaWQ6OnJlZ2NsYXNzIHQxLCBoanRlc3RfMi50YWJsZW9pZDo6cmVn Y2xhc3MgdDIKK0ZST00gaGp0ZXN0XzEsIGhqdGVzdF8yCitXSEVSRQorICAgIGhqdGVzdF8xLmlk ID0gKFNFTEVDVCAxIFdIRVJFIGhqdGVzdF8yLmlkID0gMSkKKyAgICBBTkQgKFNFTEVDVCBoanRl c3RfMS5iICogNSkgPSAoU0VMRUNUIGhqdGVzdF8yLmMqNSkKKyAgICBBTkQgKFNFTEVDVCBoanRl c3RfMS5iICogNSkgPCA1MAorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8yLmMgKiA1KSA8IDU1Cisg ICAgQU5EIGhqdGVzdF8xLmEgPD4gaGp0ZXN0XzIuYjsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgSGFzaCBKb2luCisgICBPdXRwdXQ6IGhqdGVzdF8xLmEsIGhqdGVzdF8yLmEsIChoanRlc3Rf MS50YWJsZW9pZCk6OnJlZ2NsYXNzLCAoaGp0ZXN0XzIudGFibGVvaWQpOjpyZWdjbGFzcworICAg SGFzaCBDb25kOiAoKGhqdGVzdF8xLmlkID0gKFN1YlBsYW4gZXhwcl8xKSkgQU5EICgoU3ViUGxh biBleHByXzIpID0gKFN1YlBsYW4gZXhwcl8zKSkpCisgICBKb2luIEZpbHRlcjogKGhqdGVzdF8x LmEgPD4gaGp0ZXN0XzIuYikKKyAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuaGp0ZXN0XzEKKyAg ICAgICAgIE91dHB1dDogaGp0ZXN0XzEuYSwgaGp0ZXN0XzEudGFibGVvaWQsIGhqdGVzdF8xLmlk LCBoanRlc3RfMS5iCisgICAgICAgICBGaWx0ZXI6ICgoU3ViUGxhbiBleHByXzQpIDwgNTApCisg ICAgICAgICBTdWJQbGFuIGV4cHJfNAorICAgICAgICAgICAtPiAgUmVzdWx0CisgICAgICAgICAg ICAgICAgIE91dHB1dDogKGhqdGVzdF8xLmIgKiA1KQorICAgLT4gIEhhc2gKKyAgICAgICAgIE91 dHB1dDogaGp0ZXN0XzIuYSwgaGp0ZXN0XzIudGFibGVvaWQsIGhqdGVzdF8yLmlkLCBoanRlc3Rf Mi5jLCBoanRlc3RfMi5iCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmhqdGVzdF8y CisgICAgICAgICAgICAgICBPdXRwdXQ6IGhqdGVzdF8yLmEsIGhqdGVzdF8yLnRhYmxlb2lkLCBo anRlc3RfMi5pZCwgaGp0ZXN0XzIuYywgaGp0ZXN0XzIuYgorICAgICAgICAgICAgICAgRmlsdGVy OiAoKFN1YlBsYW4gZXhwcl81KSA8IDU1KQorICAgICAgICAgICAgICAgU3ViUGxhbiBleHByXzUK KyAgICAgICAgICAgICAgICAgLT4gIFJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IChoanRlc3RfMi5jICogNSkKKyAgICAgICAgIFN1YlBsYW4gZXhwcl8xCisgICAgICAgICAg IC0+ICBSZXN1bHQKKyAgICAgICAgICAgICAgICAgT3V0cHV0OiAxCisgICAgICAgICAgICAgICAg IE9uZS1UaW1lIEZpbHRlcjogKGhqdGVzdF8yLmlkID0gMSkKKyAgICAgICAgIFN1YlBsYW4gZXhw cl8zCisgICAgICAgICAgIC0+ICBSZXN1bHQKKyAgICAgICAgICAgICAgICAgT3V0cHV0OiAoaGp0 ZXN0XzIuYyAqIDUpCisgICBTdWJQbGFuIGV4cHJfMgorICAgICAtPiAgUmVzdWx0CisgICAgICAg ICAgIE91dHB1dDogKGhqdGVzdF8xLmIgKiA1KQorKDI4IHJvd3MpCisKK1NFTEVDVCBoanRlc3Rf MS5hIGExLCBoanRlc3RfMi5hIGEyLGhqdGVzdF8xLnRhYmxlb2lkOjpyZWdjbGFzcyB0MSwgaGp0 ZXN0XzIudGFibGVvaWQ6OnJlZ2NsYXNzIHQyCitGUk9NIGhqdGVzdF8xLCBoanRlc3RfMgorV0hF UkUKKyAgICBoanRlc3RfMS5pZCA9IChTRUxFQ1QgMSBXSEVSRSBoanRlc3RfMi5pZCA9IDEpCisg ICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpID0gKFNFTEVDVCBoanRlc3RfMi5jKjUpCisg ICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpIDwgNTAKKyAgICBBTkQgKFNFTEVDVCBoanRl c3RfMi5jICogNSkgPCA1NQorICAgIEFORCBoanRlc3RfMS5hIDw+IGhqdGVzdF8yLmI7CisgIGEx ICB8IGEyIHwgICAgdDEgICAgfCAgICB0MiAgICAKKy0tLS0tLSstLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tLQorIHRleHQgfCB0ICB8IGhqdGVzdF8xIHwgaGp0ZXN0XzIKKygxIHJvdykKKworRVhQ TEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQorU0VMRUNUIGhqdGVzdF8xLmEgYTEsIGhqdGVzdF8y LmEgYTIsaGp0ZXN0XzEudGFibGVvaWQ6OnJlZ2NsYXNzIHQxLCBoanRlc3RfMi50YWJsZW9pZDo6 cmVnY2xhc3MgdDIKK0ZST00gaGp0ZXN0XzIsIGhqdGVzdF8xCitXSEVSRQorICAgIGhqdGVzdF8x LmlkID0gKFNFTEVDVCAxIFdIRVJFIGhqdGVzdF8yLmlkID0gMSkKKyAgICBBTkQgKFNFTEVDVCBo anRlc3RfMS5iICogNSkgPSAoU0VMRUNUIGhqdGVzdF8yLmMqNSkKKyAgICBBTkQgKFNFTEVDVCBo anRlc3RfMS5iICogNSkgPCA1MAorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8yLmMgKiA1KSA8IDU1 CisgICAgQU5EIGhqdGVzdF8xLmEgPD4gaGp0ZXN0XzIuYjsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgSGFzaCBKb2luCisgICBPdXRwdXQ6IGhqdGVzdF8xLmEsIGhqdGVzdF8yLmEsIChoanRl c3RfMS50YWJsZW9pZCk6OnJlZ2NsYXNzLCAoaGp0ZXN0XzIudGFibGVvaWQpOjpyZWdjbGFzcwor ICAgSGFzaCBDb25kOiAoKChTdWJQbGFuIGV4cHJfMSkgPSBoanRlc3RfMS5pZCkgQU5EICgoU3Vi UGxhbiBleHByXzMpID0gKFN1YlBsYW4gZXhwcl8yKSkpCisgICBKb2luIEZpbHRlcjogKGhqdGVz dF8xLmEgPD4gaGp0ZXN0XzIuYikKKyAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuaGp0ZXN0XzIK KyAgICAgICAgIE91dHB1dDogaGp0ZXN0XzIuYSwgaGp0ZXN0XzIudGFibGVvaWQsIGhqdGVzdF8y LmlkLCBoanRlc3RfMi5jLCBoanRlc3RfMi5iCisgICAgICAgICBGaWx0ZXI6ICgoU3ViUGxhbiBl eHByXzUpIDwgNTUpCisgICAgICAgICBTdWJQbGFuIGV4cHJfNQorICAgICAgICAgICAtPiAgUmVz dWx0CisgICAgICAgICAgICAgICAgIE91dHB1dDogKGhqdGVzdF8yLmMgKiA1KQorICAgLT4gIEhh c2gKKyAgICAgICAgIE91dHB1dDogaGp0ZXN0XzEuYSwgaGp0ZXN0XzEudGFibGVvaWQsIGhqdGVz dF8xLmlkLCBoanRlc3RfMS5iCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmhqdGVz dF8xCisgICAgICAgICAgICAgICBPdXRwdXQ6IGhqdGVzdF8xLmEsIGhqdGVzdF8xLnRhYmxlb2lk LCBoanRlc3RfMS5pZCwgaGp0ZXN0XzEuYgorICAgICAgICAgICAgICAgRmlsdGVyOiAoKFN1YlBs YW4gZXhwcl80KSA8IDUwKQorICAgICAgICAgICAgICAgU3ViUGxhbiBleHByXzQKKyAgICAgICAg ICAgICAgICAgLT4gIFJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IChoanRl c3RfMS5iICogNSkKKyAgICAgICAgIFN1YlBsYW4gZXhwcl8yCisgICAgICAgICAgIC0+ICBSZXN1 bHQKKyAgICAgICAgICAgICAgICAgT3V0cHV0OiAoaGp0ZXN0XzEuYiAqIDUpCisgICBTdWJQbGFu IGV4cHJfMQorICAgICAtPiAgUmVzdWx0CisgICAgICAgICAgIE91dHB1dDogMQorICAgICAgICAg ICBPbmUtVGltZSBGaWx0ZXI6IChoanRlc3RfMi5pZCA9IDEpCisgICBTdWJQbGFuIGV4cHJfMwor ICAgICAtPiAgUmVzdWx0CisgICAgICAgICAgIE91dHB1dDogKGhqdGVzdF8yLmMgKiA1KQorKDI4 IHJvd3MpCisKK1NFTEVDVCBoanRlc3RfMS5hIGExLCBoanRlc3RfMi5hIGEyLGhqdGVzdF8xLnRh Ymxlb2lkOjpyZWdjbGFzcyB0MSwgaGp0ZXN0XzIudGFibGVvaWQ6OnJlZ2NsYXNzIHQyCitGUk9N IGhqdGVzdF8yLCBoanRlc3RfMQorV0hFUkUKKyAgICBoanRlc3RfMS5pZCA9IChTRUxFQ1QgMSBX SEVSRSBoanRlc3RfMi5pZCA9IDEpCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpID0g KFNFTEVDVCBoanRlc3RfMi5jKjUpCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpIDwg NTAKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMi5jICogNSkgPCA1NQorICAgIEFORCBoanRlc3Rf MS5hIDw+IGhqdGVzdF8yLmI7CisgIGExICB8IGEyIHwgICAgdDEgICAgfCAgICB0MiAgICAKKy0t LS0tLSstLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHRleHQgfCB0ICB8IGhqdGVzdF8xIHwg aGp0ZXN0XzIKKygxIHJvdykKKworUk9MTEJBQ0s7CistLSBWZXJpZnkgdGhhdCB3ZSBiZWhhdmUg c2FuZWx5IHdoZW4gdGhlIGlubmVyIGhhc2gga2V5cyBjb250YWluIHBhcmFtZXRlcnMKKy0tICh0 aGF0IGlzLCBvdXRlciBvciBsYXRlcmFsIHJlZmVyZW5jZXMpLiAgVGhpcyBzaXR1YXRpb24gaGFz IHRvIGRlZmVhdAorLS0gcmUtdXNlIG9mIHRoZSBpbm5lciBoYXNoIHRhYmxlIGFjcm9zcyByZXNj YW5zLgorYmVnaW47CitzZXQgbG9jYWwgZW5hYmxlX2hhc2hqb2luID0gb247CitleHBsYWluIChj b3N0cyBvZmYpCitzZWxlY3QgaTgucTIsIHNzLiogZnJvbQoraW50OF90YmwgaTgsCitsYXRlcmFs IChzZWxlY3QgdDEuZml2ZXRob3VzLCBpNC5mMSBmcm9tIHRlbmsxIHQxIGpvaW4gaW50NF90Ymwg aTQKKyAgICAgICAgIG9uIHQxLmZpdmV0aG91cyA9IGk0LmYxK2k4LnEyIG9yZGVyIGJ5IDEsMikg c3M7CisgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9vcAorICAgLT4gIFNlcSBTY2FuIG9uIGludDhfdGJsIGk4 CisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IHQxLmZpdmV0aG91cywgaTQuZjEKKyAg ICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLmZpdmV0 aG91cyA9IChpNC5mMSArIGk4LnEyKSkKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0 ZW5rMSB0MQorICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBpbnQ0X3RibCBpNAorKDkgcm93cykKKworc2VsZWN0IGk4LnEyLCBzcy4q IGZyb20KK2ludDhfdGJsIGk4LAorbGF0ZXJhbCAoc2VsZWN0IHQxLmZpdmV0aG91cywgaTQuZjEg ZnJvbSB0ZW5rMSB0MSBqb2luIGludDRfdGJsIGk0CisgICAgICAgICBvbiB0MS5maXZldGhvdXMg PSBpNC5mMStpOC5xMiBvcmRlciBieSAxLDIpIHNzOworIHEyICB8IGZpdmV0aG91cyB8IGYxIAor LS0tLS0rLS0tLS0tLS0tLS0rLS0tLQorIDQ1NiB8ICAgICAgIDQ1NiB8ICAwCisgNDU2IHwgICAg ICAgNDU2IHwgIDAKKyAxMjMgfCAgICAgICAxMjMgfCAgMAorIDEyMyB8ICAgICAgIDEyMyB8ICAw CisoNCByb3dzKQorCityb2xsYmFjazsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFy YWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4 IDAyMWQ1N2Y2NmJiLi5lZWIwNjQwN2QxMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9w YXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl CkBAIC0xNSw3ICsxNSw2IEBAIHRlc3Q6IHRlc3Rfc2V0dXAKICMgVGhlIGZpcnN0IGdyb3VwIG9m IHBhcmFsbGVsIHRlc3RzCiAjIC0tLS0tLS0tLS0KIHRlc3Q6IGJvb2xlYW4gY2hhciBuYW1lIHZh cmNoYXIgdGV4dCBpbnQyIGludDQgaW50OCBvaWQgZmxvYXQ0IGZsb2F0OCBiaXQgbnVtZXJpYyB0 eGlkIHV1aWQgZW51bSBtb25leSByYW5nZXR5cGVzIHBnX2xzbiByZWdwcm9jCi0KICMgLS0tLS0t LS0tLQogIyBUaGUgc2Vjb25kIGdyb3VwIG9mIHBhcmFsbGVsIHRlc3RzCiAjIG11bHRpcmFuZ2V0 eXBlcyBkZXBlbmRzIG9uIHJhbmdldHlwZXMKQEAgLTE0MCwzICsxMzksNiBAQCB0ZXN0OiBmYXN0 X2RlZmF1bHQKICMgcnVuIHRhYmxlc3BhY2UgdGVzdCBhdCB0aGUgZW5kIGJlY2F1c2UgaXQgZHJv cHMgdGhlIHRhYmxlc3BhY2UgY3JlYXRlZCBkdXJpbmcKICMgc2V0dXAgdGhhdCBvdGhlciB0ZXN0 cyBtYXkgdXNlLgogdGVzdDogdGFibGVzcGFjZQorCisjIHRoaXMgdGVzdCBpcyBlcXVpdmFsZW50 IHRvIGpvaW5faGFzaCB0ZXN0IGp1c3QgdGhlIGNvbXByZXNzaW9uIGlzIGVuYWJsZWQKK3Rlc3Q6 IGpvaW5faGFzaF9wZ2x6CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luX2hh c2hfbHo0LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW5faGFzaF9sejQuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43Zjc5MjQyYzMwNgotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW5faGFzaF9sejQuc3FsCkBAIC0wLDAg KzEsNjI3IEBACistLQorLS0gZXhlcmNpc2VzIGZvciB0aGUgaGFzaCBqb2luIGNvZGUKKy0tCisK K2JlZ2luOworCitzZXQgbG9jYWwgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZSA9IDA7Citz ZXQgbG9jYWwgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitzZXQgbG9jYWwgZW5hYmxlX2hhc2hq b2luID0gb247CitzZXQgbG9jYWwgdGVtcF9maWxlX2NvbXByZXNzaW9uID0gJ2x6NCc7CisKKy0t IEV4dHJhY3QgYnVja2V0IGFuZCBiYXRjaCBjb3VudHMgZnJvbSBhbiBleHBsYWluIGFuYWx5emUg cGxhbi4gIEluCistLSBnZW5lcmFsIHdlIGNhbid0IG1ha2UgYXNzZXJ0aW9ucyBhYm91dCBob3cg bWFueSBiYXRjaGVzIChvcgorLS0gYnVja2V0cykgd2lsbCBiZSByZXF1aXJlZCBiZWNhdXNlIGl0 IGNhbiB2YXJ5LCBidXQgd2UgY2FuIGluIHNvbWUKKy0tIHNwZWNpYWwgY2FzZXMgYW5kIHdlIGNh biBjaGVjayBmb3IgZ3Jvd3RoLgorY3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gZmluZF9oYXNo KG5vZGUganNvbikKK3JldHVybnMganNvbiBsYW5ndWFnZSBwbHBnc3FsCithcworJCQKK2RlY2xh cmUKKyAgeCBqc29uOworICBjaGlsZCBqc29uOworYmVnaW4KKyAgaWYgbm9kZS0+PidOb2RlIFR5 cGUnID0gJ0hhc2gnIHRoZW4KKyAgICByZXR1cm4gbm9kZTsKKyAgZWxzZQorICAgIGZvciBjaGls ZCBpbiBzZWxlY3QganNvbl9hcnJheV9lbGVtZW50cyhub2RlLT4nUGxhbnMnKQorICAgIGxvb3AK KyAgICAgIHggOj0gZmluZF9oYXNoKGNoaWxkKTsKKyAgICAgIGlmIHggaXMgbm90IG51bGwgdGhl bgorICAgICAgICByZXR1cm4geDsKKyAgICAgIGVuZCBpZjsKKyAgICBlbmQgbG9vcDsKKyAgICBy ZXR1cm4gbnVsbDsKKyAgZW5kIGlmOworZW5kOworJCQ7CitjcmVhdGUgb3IgcmVwbGFjZSBmdW5j dGlvbiBoYXNoX2pvaW5fYmF0Y2hlcyhxdWVyeSB0ZXh0KQorcmV0dXJucyB0YWJsZSAob3JpZ2lu YWwgaW50LCBmaW5hbCBpbnQpIGxhbmd1YWdlIHBscGdzcWwKK2FzCiskJAorZGVjbGFyZQorICB3 aG9sZV9wbGFuIGpzb247CisgIGhhc2hfbm9kZSBqc29uOworYmVnaW4KKyAgZm9yIHdob2xlX3Bs YW4gaW4KKyAgICBleGVjdXRlICdleHBsYWluIChhbmFseXplLCBmb3JtYXQgJydqc29uJycpICcg fHwgcXVlcnkKKyAgbG9vcAorICAgIGhhc2hfbm9kZSA6PSBmaW5kX2hhc2goanNvbl9leHRyYWN0 X3BhdGgod2hvbGVfcGxhbiwgJzAnLCAnUGxhbicpKTsKKyAgICBvcmlnaW5hbCA6PSBoYXNoX25v ZGUtPj4nT3JpZ2luYWwgSGFzaCBCYXRjaGVzJzsKKyAgICBmaW5hbCA6PSBoYXNoX25vZGUtPj4n SGFzaCBCYXRjaGVzJzsKKyAgICByZXR1cm4gbmV4dDsKKyAgZW5kIGxvb3A7CitlbmQ7CiskJDsK KworLS0gTWFrZSBhIHNpbXBsZSByZWxhdGlvbiB3aXRoIHdlbGwgZGlzdHJpYnV0ZWQga2V5cyBh bmQgY29ycmVjdGx5CistLSBlc3RpbWF0ZWQgc2l6ZS4KK2NyZWF0ZSB0YWJsZSBzaW1wbGUgYXMK KyAgc2VsZWN0IGdlbmVyYXRlX3NlcmllcygxLCAyMDAwMCkgQVMgaWQsICdhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhJzsKK2FsdGVyIHRhYmxlIHNpbXBsZSBzZXQgKHBhcmFsbGVs X3dvcmtlcnMgPSAyKTsKK2FuYWx5emUgc2ltcGxlOworCistLSBNYWtlIGEgcmVsYXRpb24gd2hv c2Ugc2l6ZSB3ZSB3aWxsIHVuZGVyLWVzdGltYXRlLiAgV2Ugd2FudCBzdGF0cworLS0gdG8gc2F5 IDEwMDAgcm93cywgYnV0IGFjdHVhbGx5IHRoZXJlIGFyZSAyMCwwMDAgcm93cy4KK2NyZWF0ZSB0 YWJsZSBiaWdnZXJfdGhhbl9pdF9sb29rcyBhcworICBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEs IDIwMDAwKSBhcyBpZCwgJ2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEnOworYWx0 ZXIgdGFibGUgYmlnZ2VyX3RoYW5faXRfbG9va3Mgc2V0IChhdXRvdmFjdXVtX2VuYWJsZWQgPSAn ZmFsc2UnKTsKK2FsdGVyIHRhYmxlIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHNldCAocGFyYWxsZWxf d29ya2VycyA9IDIpOworYW5hbHl6ZSBiaWdnZXJfdGhhbl9pdF9sb29rczsKK3VwZGF0ZSBwZ19j bGFzcyBzZXQgcmVsdHVwbGVzID0gMTAwMCB3aGVyZSByZWxuYW1lID0gJ2JpZ2dlcl90aGFuX2l0 X2xvb2tzJzsKKworLS0gTWFrZSBhIHJlbGF0aW9uIHdob3NlIHNpemUgd2UgdW5kZXJlc3RpbWF0 ZSBhbmQgdGhhdCBhbHNvIGhhcyBhCistLSBraW5kIG9mIHNrZXcgdGhhdCBicmVha3Mgb3VyIGJh dGNoaW5nIHNjaGVtZS4gIFdlIHdhbnQgc3RhdHMgdG8gc2F5CistLSAyIHJvd3MsIGJ1dCBhY3R1 YWxseSB0aGVyZSBhcmUgMjAsMDAwIHJvd3Mgd2l0aCB0aGUgc2FtZSBrZXkuCitjcmVhdGUgdGFi bGUgZXh0cmVtZWx5X3NrZXdlZCAoaWQgaW50LCB0IHRleHQpOworYWx0ZXIgdGFibGUgZXh0cmVt ZWx5X3NrZXdlZCBzZXQgKGF1dG92YWN1dW1fZW5hYmxlZCA9ICdmYWxzZScpOworYWx0ZXIgdGFi bGUgZXh0cmVtZWx5X3NrZXdlZCBzZXQgKHBhcmFsbGVsX3dvcmtlcnMgPSAyKTsKK2FuYWx5emUg ZXh0cmVtZWx5X3NrZXdlZDsKK2luc2VydCBpbnRvIGV4dHJlbWVseV9za2V3ZWQKKyAgc2VsZWN0 IDQyIGFzIGlkLCAnYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYScKKyAgZnJvbSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMjAwMDApOwordXBkYXRlIHBnX2NsYXNzCisgIHNldCByZWx0dXBs ZXMgPSAyLCByZWxwYWdlcyA9IHBnX3JlbGF0aW9uX3NpemUoJ2V4dHJlbWVseV9za2V3ZWQnKSAv IDgxOTIKKyAgd2hlcmUgcmVsbmFtZSA9ICdleHRyZW1lbHlfc2tld2VkJzsKKworLS0gTWFrZSBh IHJlbGF0aW9uIHdpdGggYSBjb3VwbGUgb2YgZW5vcm1vdXMgdHVwbGVzLgorY3JlYXRlIHRhYmxl IHdpZGUgYXMgc2VsZWN0IGdlbmVyYXRlX3NlcmllcygxLCAyKSBhcyBpZCwgcnBhZCgnJywgMzIw MDAwLCAneCcpIGFzIHQ7CithbHRlciB0YWJsZSB3aWRlIHNldCAocGFyYWxsZWxfd29ya2VycyA9 IDIpOworCistLSBUaGUgIm9wdGltYWwiIGNhc2U6IHRoZSBoYXNoIHRhYmxlIGZpdHMgaW4gbWVt b3J5OyB3ZSBwbGFuIGZvciAxCistLSBiYXRjaCwgd2Ugc3RpY2sgdG8gdGhhdCBudW1iZXIsIGFu ZCBwZWFrIG1lbW9yeSB1c2FnZSBzdGF5cyB3aXRoaW4KKy0tIG91ciB3b3JrX21lbSBidWRnZXQK KworLS0gbm9uLXBhcmFsbGVsCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3Bh cmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnNE1C JzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworZXhwbGFpbiAoY29zdHMg b2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5n IChpZCk7CitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5n IChpZCk7CitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5h bCA+IG9yaWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNo ZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVz aW5nIChpZCk7CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsKKworLS0gcGFyYWxsZWwgd2l0 aCBwYXJhbGxlbC1vYmxpdmlvdXMgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQg bG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQgbG9jYWwgd29y a19tZW0gPSAnNE1CJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0 IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworZXhwbGFpbiAoY29zdHMgb2ZmKQor ICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7 CitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7 CitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9y aWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCisk JAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChp ZCk7CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsKKworLS0gcGFyYWxsZWwgd2l0aCBwYXJh bGxlbC1hd2FyZSBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhf cGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3NldCBsb2NhbCB3b3JrX21lbSA9ICc0 TUInOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwgZW5h YmxlX3BhcmFsbGVsX2hhc2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNv dW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworc2VsZWN0IGNv dW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworc2VsZWN0IG9y aWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBp bmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0 IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworJCQpOwor cm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIFRoZSAiZ29vZCIgY2FzZTogYmF0Y2hlcyByZXF1 aXJlZCwgYnV0IHdlIHBsYW4gdGhlIHJpZ2h0IG51bWJlcjsgd2UKKy0tIHBsYW4gZm9yIHNvbWUg bnVtYmVyIG9mIGJhdGNoZXMsIGFuZCB3ZSBzdGljayB0byB0aGF0IG51bWJlciwgYW5kCistLSBw ZWFrIG1lbW9yeSB1c2FnZSBzYXlzIHdpdGhpbiBvdXIgd29ya19tZW0gYnVkZ2V0CisKKy0tIG5v bi1wYXJhbGxlbAorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93 b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzEyOGtCJzsKK3Nl dCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworZXhwbGFpbiAoY29zdHMgb2ZmKQor ICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7 CitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7 CitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9y aWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCisk JAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChp ZCk7CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsKKworLS0gcGFyYWxsZWwgd2l0aCBwYXJh bGxlbC1vYmxpdmlvdXMgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwg bWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQgbG9jYWwgd29ya19tZW0g PSAnMTI4a0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9j YWwgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNl bGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3Nl bGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3Nl bGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gsIGZpbmFsID4gb3JpZ2lu YWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisg IHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsK KyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBwYXJhbGxlbCB3aXRoIHBhcmFsbGVs LWF3YXJlIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJh bGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzE5MmtC JzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0IGxvY2FsIGVuYWJs ZV9wYXJhbGxlbF9oYXNoID0gb247CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3Vu dCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBjb3Vu dCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBvcmln aW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gsIGZpbmFsID4gb3JpZ2luYWwgYXMgaW5j cmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBj b3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyQkKTsKKy0t IHBhcmFsbGVsIGZ1bGwgbXVsdGktYmF0Y2ggaGFzaCBqb2luCitzZWxlY3QgY291bnQoKikgZnJv bSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3JvbGxiYWNr IHRvIHNldHRpbmdzOworCistLSBUaGUgImJhZCIgY2FzZTogZHVyaW5nIGV4ZWN1dGlvbiB3ZSBu ZWVkIHRvIGluY3JlYXNlIG51bWJlciBvZgorLS0gYmF0Y2hlczsgaW4gdGhpcyBjYXNlIHdlIHBs YW4gZm9yIDEgYmF0Y2gsIGFuZCBpbmNyZWFzZSBhdCBsZWFzdCBhCistLSBjb3VwbGUgb2YgdGlt ZXMsIGFuZCBwZWFrIG1lbW9yeSB1c2FnZSBzdGF5cyB3aXRoaW4gb3VyIHdvcmtfbWVtCistLSBi dWRnZXQKKworLS0gbm9uLXBhcmFsbGVsCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwg bWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CitzZXQgbG9jYWwgd29ya19tZW0g PSAnMTI4a0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWlu IChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBGUk9NIHNpbXBsZSByIEpPSU4gYmlnZ2Vy X3RoYW5faXRfbG9va3MgcyBVU0lORyAoaWQpOworc2VsZWN0IGNvdW50KCopIEZST00gc2ltcGxl IHIgSk9JTiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIFVTSU5HIChpZCk7CitzZWxlY3Qgb3JpZ2lu YWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFsIGFzIGluY3Jl YXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291 bnQoKikgRlJPTSBzaW1wbGUgciBKT0lOIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMgVVNJTkcgKGlk KTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBwYXJhbGxlbCB3aXRoIHBhcmFs bGVsLW9ibGl2aW91cyBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBt YXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3NldCBsb2NhbCB3b3JrX21lbSA9 ICcxMjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2Nh bCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2Vs ZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVz aW5nIChpZCk7CitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGJpZ2dlcl90aGFu X2l0X2xvb2tzIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5 X211bHRpYmF0Y2gsIGZpbmFsID4gb3JpZ2luYWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJv bSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSBy IGpvaW4gYmlnZ2VyX3RoYW5faXRfbG9va3MgcyB1c2luZyAoaWQpOworJCQpOworcm9sbGJhY2sg dG8gc2V0dGluZ3M7CisKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtYXdhcmUgaGFzaCBqb2lu CitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVy X2dhdGhlciA9IDE7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnMTkya0InOworc2V0IGxvY2FsIGhh c2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwgZW5hYmxlX3BhcmFsbGVsX2hhc2gg PSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxl IHIgam9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CitzZWxlY3QgY291bnQo KikgZnJvbSBzaW1wbGUgciBqb2luIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMgdXNpbmcgKGlkKTsK K3NlbGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gsIGZpbmFsID4gb3Jp Z2luYWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQk CisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gYmlnZ2VyX3RoYW5faXRfbG9v a3MgcyB1c2luZyAoaWQpOworJCQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIFRoZSAi dWdseSIgY2FzZTogaW5jcmVhc2luZyB0aGUgbnVtYmVyIG9mIGJhdGNoZXMgZHVyaW5nIGV4ZWN1 dGlvbgorLS0gZG9lc24ndCBoZWxwLCBzbyBzdG9wIHRyeWluZyB0byBmaXQgaW4gd29ya19tZW0g YW5kIGhvcGUgZm9yIHRoZQorLS0gYmVzdDsgaW4gdGhpcyBjYXNlIHdlIHBsYW4gZm9yIDEgYmF0 Y2gsIGluY3JlYXNlcyBqdXN0IG9uY2UgYW5kCistLSB0aGVuIHN0b3AgaW5jcmVhc2luZyBiZWNh dXNlIHRoYXQgZGlkbid0IGhlbHAgYXQgYWxsLCBzbyB3ZSBibG93CistLSByaWdodCB0aHJvdWdo IHRoZSB3b3JrX21lbSBidWRnZXQgYW5kIGhvcGUgZm9yIHRoZSBiZXN0Li4uCisKKy0tIG5vbi1w YXJhbGxlbAorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3Jr ZXJzX3Blcl9nYXRoZXIgPSAwOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzEyOGtCJzsKK3NldCBs b2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBz ZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4dHJlbWVseV9za2V3ZWQgcyB1c2lu ZyAoaWQpOworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1lbHlfc2tl d2VkIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCAqIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAor ICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4dHJlbWVseV9za2V3ZWQgcyB1 c2luZyAoaWQpOworJCQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIHBhcmFsbGVsIHdp dGggcGFyYWxsZWwtb2JsaXZpb3VzIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0 IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdv cmtfbWVtID0gJzEyOGtCJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOwor c2V0IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworZXhwbGFpbiAoY29zdHMgb2Zm KQorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4dHJlbWVseV9za2V3ZWQg cyB1c2luZyAoaWQpOworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1l bHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCAqIGZyb20gaGFzaF9qb2luX2JhdGNoZXMo CiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4dHJlbWVseV9za2V3 ZWQgcyB1c2luZyAoaWQpOworJCQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIHBhcmFs bGVsIHdpdGggcGFyYWxsZWwtYXdhcmUgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7Citz ZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDE7CitzZXQgbG9jYWwg d29ya19tZW0gPSAnMTI4a0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7 CitzZXQgbG9jYWwgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9m ZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1lbHlfc2tld2Vk IHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVt ZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CitzZWxlY3QgKiBmcm9tIGhhc2hfam9pbl9iYXRjaGVz KAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1lbHlfc2tl d2VkIHMgdXNpbmcgKGlkKTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBBIGNv dXBsZSBvZiBvdGhlciBoYXNoIGpvaW4gdGVzdHMgdW5yZWxhdGVkIHRvIHdvcmtfbWVtIG1hbmFn ZW1lbnQuCisKKy0tIENoZWNrIHRoYXQgRVhQTEFJTiBBTkFMWVpFIGhhcyBkYXRhIGV2ZW4gaWYg dGhlIGxlYWRlciBkb2Vzbid0IHBhcnRpY2lwYXRlCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQg bG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQgbG9jYWwgd29y a19tZW0gPSAnNE1CJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0 IGxvY2FsIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0gb2ZmOworc2VsZWN0ICogZnJv bSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSBy IGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOwor CistLSBFeGVyY2lzZSByZXNjYW5zLiAgV2UnbGwgdHVybiBvZmYgcGFyYWxsZWxfbGVhZGVyX3Bh cnRpY2lwYXRpb24gc28KKy0tIHRoYXQgd2UgY2FuIGNoZWNrIHRoYXQgaW5zdHJ1bWVudGF0aW9u IGNvbWVzIGJhY2sgY29ycmVjdGx5LgorCitjcmVhdGUgdGFibGUgam9pbl9mb28gYXMgc2VsZWN0 IGdlbmVyYXRlX3NlcmllcygxLCAzKSBhcyBpZCwgJ3h4eHh4Jzo6dGV4dCBhcyB0OworYWx0ZXIg dGFibGUgam9pbl9mb28gc2V0IChwYXJhbGxlbF93b3JrZXJzID0gMCk7CitjcmVhdGUgdGFibGUg am9pbl9iYXIgYXMgc2VsZWN0IGdlbmVyYXRlX3NlcmllcygxLCAxMDAwMCkgYXMgaWQsICd4eHh4 eCc6OnRleHQgYXMgdDsKK2FsdGVyIHRhYmxlIGpvaW5fYmFyIHNldCAocGFyYWxsZWxfd29ya2Vy cyA9IDIpOworYW5hbHl6ZSBqb2luX2Zvbywgam9pbl9iYXI7CisKKy0tIG11bHRpLWJhdGNoIHdp dGggcmVzY2FuLCBwYXJhbGxlbC1vYmxpdmlvdXMKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBl bmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK3NldCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBh dGlvbiA9IG9mZjsKK3NldCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplID0gMDsKK3NldCBw YXJhbGxlbF9zZXR1cF9jb3N0ID0gMDsKK3NldCBwYXJhbGxlbF90dXBsZV9jb3N0ID0gMDsKK3Nl dCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3NldCBlbmFibGVfbWF0ZXJp YWwgPSBvZmY7CitzZXQgZW5hYmxlX21lcmdlam9pbiA9IG9mZjsKK3NldCB3b3JrX21lbSA9ICc2 NGtCJzsKK3NldCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworZXhwbGFpbiAoY29zdHMgb2Zm KQorICBzZWxlY3QgY291bnQoKikgZnJvbSBqb2luX2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0 IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQp KSBzcworICAgIG9uIGpvaW5fZm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNz LmlkIC0gMTsKK3NlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgIGxlZnQgam9pbiAoc2Vs ZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAo aWQpKSBzcworICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBz cy5pZCAtIDE7CitzZWxlY3QgZmluYWwgPiAxIGFzIG11bHRpYmF0Y2gKKyAgZnJvbSBoYXNoX2pv aW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVm dCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFy IGIyIHVzaW5nIChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpv aW5fZm9vLmlkID4gc3MuaWQgLSAxOworJCQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0t IHNpbmdsZS1iYXRjaCB3aXRoIHJlc2NhbiwgcGFyYWxsZWwtb2JsaXZpb3VzCitzYXZlcG9pbnQg c2V0dGluZ3M7CitzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7CitzZXQgcGFyYWxsZWxf bGVhZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7CitzZXQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5f c2l6ZSA9IDA7CitzZXQgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitzZXQgcGFyYWxsZWxfdHVw bGVfY29zdCA9IDA7CitzZXQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7Citz ZXQgZW5hYmxlX21hdGVyaWFsID0gb2ZmOworc2V0IGVuYWJsZV9tZXJnZWpvaW4gPSBvZmY7Citz ZXQgd29ya19tZW0gPSAnNE1CJzsKK3NldCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworZXhw bGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBqb2luX2ZvbworICAgIGxl ZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2Jh ciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9uIGpvaW5fZm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBq b2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKK3NlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisg IGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2lu X2JhciBiMiB1c2luZyAoaWQpKSBzcworICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQg am9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CitzZWxlY3QgZmluYWwgPiAxIGFzIG11bHRpYmF0Y2gK KyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpv aW5fZm9vCisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBi MSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBz cy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworJCQpOworcm9sbGJhY2sgdG8g c2V0dGluZ3M7CisKKy0tIG11bHRpLWJhdGNoIHdpdGggcmVzY2FuLCBwYXJhbGxlbC1hd2FyZQor c2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb247CitzZXQg cGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7CitzZXQgbWluX3BhcmFsbGVsX3Rh YmxlX3NjYW5fc2l6ZSA9IDA7CitzZXQgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitzZXQgcGFy YWxsZWxfdHVwbGVfY29zdCA9IDA7CitzZXQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhl ciA9IDI7CitzZXQgZW5hYmxlX21hdGVyaWFsID0gb2ZmOworc2V0IGVuYWJsZV9tZXJnZWpvaW4g PSBvZmY7CitzZXQgd29ya19tZW0gPSAnNjRrQic7CitzZXQgaGFzaF9tZW1fbXVsdGlwbGllciA9 IDEuMDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9m b28KKyAgICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIxIGpv aW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgICBvbiBqb2luX2Zvby5pZCA8IHNzLmlk ICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CitzZWxlY3QgY291bnQoKikgZnJvbSBq b2luX2ZvbworICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIx IGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgb24gam9pbl9mb28uaWQgPCBzcy5p ZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworc2VsZWN0IGZpbmFsID4gMSBhcyBt dWx0aWJhdGNoCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQo KikgZnJvbSBqb2luX2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20g am9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9uIGpvaW5f Zm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyQkKTsKK3Jv bGxiYWNrIHRvIHNldHRpbmdzOworCistLSBzaW5nbGUtYmF0Y2ggd2l0aCByZXNjYW4sIHBhcmFs bGVsLWF3YXJlCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2gg PSBvbjsKK3NldCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9mZjsKK3NldCBtaW5f cGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplID0gMDsKK3NldCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0g MDsKK3NldCBwYXJhbGxlbF90dXBsZV9jb3N0ID0gMDsKK3NldCBtYXhfcGFyYWxsZWxfd29ya2Vy c19wZXJfZ2F0aGVyID0gMjsKK3NldCBlbmFibGVfbWF0ZXJpYWwgPSBvZmY7CitzZXQgZW5hYmxl X21lcmdlam9pbiA9IG9mZjsKK3NldCB3b3JrX21lbSA9ICc0TUInOworc2V0IGhhc2hfbWVtX211 bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBm cm9tIGpvaW5fZm9vCisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2lu X2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgICAgb24gam9pbl9mb28u aWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworc2VsZWN0IGNvdW50 KCopIGZyb20gam9pbl9mb28KKyAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBq b2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgIG9uIGpvaW5fZm9v LmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKK3NlbGVjdCBmaW5h bCA+IDEgYXMgbXVsdGliYXRjaAorICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2Vs ZWN0IGNvdW50KCopIGZyb20gam9pbl9mb28KKyAgICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwg YjEudCBmcm9tIGpvaW5fYmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAg ICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7 CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsKKworLS0gQSBmdWxsIG91dGVyIGpvaW4gd2hl cmUgZXZlcnkgcmVjb3JkIGlzIG1hdGNoZWQuCisKKy0tIG5vbi1wYXJhbGxlbAorc2F2ZXBvaW50 IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAw OworZXhwbGFpbiAoY29zdHMgb2ZmKQorICAgICBzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxl IHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CitzZWxlY3QgIGNvdW50KCop IGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7Cityb2xs YmFjayB0byBzZXR0aW5nczsKKworLS0gcGFyYWxsZWxpc20gbm90IHBvc3NpYmxlIHdpdGggcGFy YWxsZWwtb2JsaXZpb3VzIGZ1bGwgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQg ZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtl cnNfcGVyX2dhdGhlciA9IDI7CitleHBsYWluIChjb3N0cyBvZmYpCisgICAgIHNlbGVjdCAgY291 bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsK K3NlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMg dXNpbmcgKGlkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBwYXJhbGxlbGlzbSBpcyBw b3NzaWJsZSB3aXRoIHBhcmFsbGVsLWF3YXJlIGZ1bGwgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0 dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7Citl eHBsYWluIChjb3N0cyBvZmYpCisgICAgIHNlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBm dWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCAgY291bnQoKikgZnJv bSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3JvbGxiYWNr IHRvIHNldHRpbmdzOworCistLSBBIGZ1bGwgb3V0ZXIgam9pbiB3aGVyZSBldmVyeSByZWNvcmQg aXMgbm90IG1hdGNoZWQuCisKKy0tIG5vbi1wYXJhbGxlbAorc2F2ZXBvaW50IHNldHRpbmdzOwor c2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworZXhwbGFpbiAo Y29zdHMgb2ZmKQorICAgICBzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRl ciBqb2luIHNpbXBsZSBzIG9uIChyLmlkID0gMCAtIHMuaWQpOworc2VsZWN0ICBjb3VudCgqKSBm cm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyBvbiAoci5pZCA9IDAgLSBzLmlk KTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBwYXJhbGxlbGlzbSBub3QgcG9zc2libGUg d2l0aCBwYXJhbGxlbC1vYmxpdmlvdXMgZnVsbCBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5n czsKK3NldCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK3NldCBsb2NhbCBtYXhfcGFyYWxs ZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgICAgc2Vs ZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyBvbiAo ci5pZCA9IDAgLSBzLmlkKTsKK3NlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91 dGVyIGpvaW4gc2ltcGxlIHMgb24gKHIuaWQgPSAwIC0gcy5pZCk7Cityb2xsYmFjayB0byBzZXR0 aW5nczsKKworLS0gcGFyYWxsZWxpc20gaXMgcG9zc2libGUgd2l0aCBwYXJhbGxlbC1hd2FyZSBm dWxsIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxl bF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICAgICBzZWxl Y3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIG9uIChy LmlkID0gMCAtIHMuaWQpOworc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0 ZXIgam9pbiBzaW1wbGUgcyBvbiAoci5pZCA9IDAgLSBzLmlkKTsKK3JvbGxiYWNrIHRvIHNldHRp bmdzOworCisKKy0tIGV4ZXJjaXNlIHNwZWNpYWwgY29kZSBwYXRocyBmb3IgaHVnZSB0dXBsZXMg KG5vdGUgdXNlIG9mIG5vbi1zdHJpY3QKKy0tIGV4cHJlc3Npb24gYW5kIGxlZnQgam9pbiByZXF1 aXJlZCB0byBnZXQgdGhlIGRldG9hc3RlZCB0dXBsZSBpbnRvCistLSB0aGUgaGFzaCB0YWJsZSkK KworLS0gcGFyYWxsZWwgd2l0aCBwYXJhbGxlbC1hd2FyZSBoYXNoIGpvaW4gKGhpdHMgRXhlY1Bh cmFsbGVsSGFzaExvYWRUdXBsZSBhbmQKKy0tIHN0c19wdXR0dXBsZSBvdmVyc2l6ZWQgdHVwbGUg Y2FzZXMgYmVjYXVzZSBpdCdzIG11bHRpLWJhdGNoKQorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0 IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVuYWJsZV9wYXJhbGxl bF9oYXNoID0gb247CitzZXQgd29ya19tZW0gPSAnMTI4a0InOworc2V0IGhhc2hfbWVtX211bHRp cGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBsZW5ndGgobWF4KHMu dCkpCisgIGZyb20gd2lkZSBsZWZ0IGpvaW4gKHNlbGVjdCBpZCwgY29hbGVzY2UodCwgJycpIHx8 ICcnIGFzIHQgZnJvbSB3aWRlKSBzIHVzaW5nIChpZCk7CitzZWxlY3QgbGVuZ3RoKG1heChzLnQp KQorZnJvbSB3aWRlIGxlZnQgam9pbiAoc2VsZWN0IGlkLCBjb2FsZXNjZSh0LCAnJykgfHwgJycg YXMgdCBmcm9tIHdpZGUpIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBmaW5hbCA+IDEgYXMgbXVsdGli YXRjaAorICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGxlbmd0aChtYXgo cy50KSkKKyAgZnJvbSB3aWRlIGxlZnQgam9pbiAoc2VsZWN0IGlkLCBjb2FsZXNjZSh0LCAnJykg fHwgJycgYXMgdCBmcm9tIHdpZGUpIHMgdXNpbmcgKGlkKTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNl dHRpbmdzOworCisKKy0tIEhhc2ggam9pbiByZXVzZXMgdGhlIEhPVCBzdGF0dXMgYml0IHRvIGlu ZGljYXRlIG1hdGNoIHN0YXR1cy4gVGhpcyBjYW4gb25seQorLS0gYmUgZ3VhcmFudGVlZCB0byBw cm9kdWNlIGNvcnJlY3QgcmVzdWx0cyBpZiBhbGwgdGhlIGhhc2ggam9pbiB0dXBsZSBtYXRjaAor LS0gYml0cyBhcmUgcmVzZXQgYmVmb3JlIHJldXNlLiBUaGlzIGlzIGRvbmUgdXBvbiBsb2FkaW5n IHRoZW0gaW50byB0aGUKKy0tIGhhc2h0YWJsZS4KK1NBVkVQT0lOVCBzZXR0aW5nczsKK1NFVCBl bmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3Np emUgPSAwOworU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworU0VUIHBhcmFsbGVsX3R1cGxl X2Nvc3QgPSAwOworQ1JFQVRFIFRBQkxFIGhqdGVzdF9tYXRjaGJpdHNfdDEoaWQgaW50KTsKK0NS RUFURSBUQUJMRSBoanRlc3RfbWF0Y2hiaXRzX3QyKGlkIGludCk7CitJTlNFUlQgSU5UTyBoanRl c3RfbWF0Y2hiaXRzX3QxIFZBTFVFUyAoMSk7CitJTlNFUlQgSU5UTyBoanRlc3RfbWF0Y2hiaXRz X3QyIFZBTFVFUyAoMik7CistLSBVcGRhdGUgc2hvdWxkIGNyZWF0ZSBhIEhPVCB0dXBsZS4gSWYg dGhpcyBzdGF0dXMgYml0IGlzbid0IGNsZWFyZWQsIHdlIHdvbid0CistLSBjb3JyZWN0bHkgZW1p dCB0aGUgTlVMTC1leHRlbmRlZCB1bm1hdGNoaW5nIHR1cGxlIGluIGZ1bGwgaGFzaCBqb2luLgor VVBEQVRFIGhqdGVzdF9tYXRjaGJpdHNfdDIgc2V0IGlkID0gMjsKK1NFTEVDVCAqIEZST00gaGp0 ZXN0X21hdGNoYml0c190MSB0MSBGVUxMIEpPSU4gaGp0ZXN0X21hdGNoYml0c190MiB0MiBPTiB0 MS5pZCA9IHQyLmlkCisgIE9SREVSIEJZIHQxLmlkOworLS0gVGVzdCBzZXJpYWwgZnVsbCBoYXNo IGpvaW4uCistLSBSZXNldHRpbmcgcGFyYWxsZWxfc2V0dXBfY29zdCBzaG91bGQgZm9yY2UgYSBz ZXJpYWwgcGxhbi4KKy0tIEp1c3QgdG8gYmUgc2FmZSwgaG93ZXZlciwgc2V0IGVuYWJsZV9wYXJh bGxlbF9oYXNoIHRvIG9mZiwgYXMgcGFyYWxsZWwgZnVsbAorLS0gaGFzaCBqb2lucyBhcmUgb25s eSBzdXBwb3J0ZWQgd2l0aCBzaGFyZWQgaGFzaHRhYmxlcy4KK1JFU0VUIHBhcmFsbGVsX3NldHVw X2Nvc3Q7CitTRVQgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7CitTRUxFQ1QgKiBGUk9NIGhq dGVzdF9tYXRjaGJpdHNfdDEgdDEgRlVMTCBKT0lOIGhqdGVzdF9tYXRjaGJpdHNfdDIgdDIgT04g dDEuaWQgPSB0Mi5pZDsKK1JPTExCQUNLIFRPIHNldHRpbmdzOworCityb2xsYmFjazsKKworLS0g VmVyaWZ5IHRoYXQgaGFzaCBrZXkgZXhwcmVzc2lvbnMgcmVmZXJlbmNlIHRoZSBjb3JyZWN0Cist LSBub2Rlcy4gSGFzaGpvaW4ncyBoYXNoa2V5cyBuZWVkIHRvIHJlZmVyZW5jZSBpdHMgb3V0ZXIg cGxhbiwgSGFzaCdzCistLSBuZWVkIHRvIHJlZmVyZW5jZSBIYXNoJ3Mgb3V0ZXIgcGxhbiAod2hp Y2ggaXMgYmVsb3cgSGFzaEpvaW4ncworLS0gaW5uZXIgcGxhbikuIEl0J3Mgbm90IHRyaXZpYWwg dG8gdmVyaWZ5IHRoYXQgdGhlIHJlZmVyZW5jZXMgYXJlCistLSBjb3JyZWN0ICh3ZSBkb24ndCBk aXNwbGF5IHRoZSBoYXNoa2V5cyB0aGVtc2VsdmVzKSwgYnV0IGlmIHRoZQorLS0gaGFzaGtleXMg Y29udGFpbiBzdWJwbGFuIHJlZmVyZW5jZXMsIHRob3NlIHdpbGwgYmUgZGlzcGxheWVkLiBGb3Jj ZQorLS0gc3VicGxhbnMgdG8gYXBwZWFyIGp1c3QgYWJvdXQgZXZlcnl3aGVyZS4KKy0tCistLSBC dWcgcmVwb3J0OgorLS0gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9DQVBw SGZkdkdWZWdGX1RLS1JpQnJTbWF0SkwyZFI5dXdGQ3VSJTJCdGVRXzh0RVhVOG14ZyU0MG1haWwu Z21haWwuY29tCistLQorQkVHSU47CitTRVQgTE9DQUwgZW5hYmxlX3NvcnQgPSBPRkY7IC0tIGF2 b2lkIG1lcmdlam9pbnMKK1NFVCBMT0NBTCBmcm9tX2NvbGxhcHNlX2xpbWl0ID0gMTsgLS0gYWxs b3dzIGVhc3kgY2hhbmdpbmcgb2Ygam9pbiBvcmRlcgorCitDUkVBVEUgVEFCTEUgaGp0ZXN0XzEg KGEgdGV4dCwgYiBpbnQsIGlkIGludCwgYyBib29sKTsKK0NSRUFURSBUQUJMRSBoanRlc3RfMiAo YSBib29sLCBpZCBpbnQsIGIgdGV4dCwgYyBpbnQpOworCitJTlNFUlQgSU5UTyBoanRlc3RfMShh LCBiLCBpZCwgYykgVkFMVUVTICgndGV4dCcsIDIsIDEsIGZhbHNlKTsgLS0gbWF0Y2hlcworSU5T RVJUIElOVE8gaGp0ZXN0XzEoYSwgYiwgaWQsIGMpIFZBTFVFUyAoJ3RleHQnLCAxLCAyLCBmYWxz ZSk7IC0tIGZhaWxzIGlkIGpvaW4gY29uZGl0aW9uCitJTlNFUlQgSU5UTyBoanRlc3RfMShhLCBi LCBpZCwgYykgVkFMVUVTICgndGV4dCcsIDIwLCAxLCBmYWxzZSk7IC0tIGZhaWxzIDwgNTAKK0lO U0VSVCBJTlRPIGhqdGVzdF8xKGEsIGIsIGlkLCBjKSBWQUxVRVMgKCd0ZXh0JywgMSwgMSwgZmFs c2UpOyAtLSBmYWlscyAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1KSA9IChTRUxFQ1QgaGp0ZXN0XzIu Yyo1KQorCitJTlNFUlQgSU5UTyBoanRlc3RfMihhLCBpZCwgYiwgYykgVkFMVUVTICh0cnVlLCAx LCAnYW5vdGhlcicsIDIpOyAtLSBtYXRjaGVzCitJTlNFUlQgSU5UTyBoanRlc3RfMihhLCBpZCwg YiwgYykgVkFMVUVTICh0cnVlLCAzLCAnYW5vdGhlcicsIDcpOyAtLSBmYWlscyBpZCBqb2luIGNv bmRpdGlvbgorSU5TRVJUIElOVE8gaGp0ZXN0XzIoYSwgaWQsIGIsIGMpIFZBTFVFUyAodHJ1ZSwg MSwgJ2Fub3RoZXInLCA5MCk7ICAtLSBmYWlscyA8IDU1CitJTlNFUlQgSU5UTyBoanRlc3RfMihh LCBpZCwgYiwgYykgVkFMVUVTICh0cnVlLCAxLCAnYW5vdGhlcicsIDMpOyAtLSBmYWlscyAoU0VM RUNUIGhqdGVzdF8xLmIgKiA1KSA9IChTRUxFQ1QgaGp0ZXN0XzIuYyo1KQorSU5TRVJUIElOVE8g aGp0ZXN0XzIoYSwgaWQsIGIsIGMpIFZBTFVFUyAodHJ1ZSwgMSwgJ3RleHQnLCAxKTsgLS0gIGZh aWxzIGhqdGVzdF8xLmEgPD4gaGp0ZXN0XzIuYjsKKworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJC T1NFKQorU0VMRUNUIGhqdGVzdF8xLmEgYTEsIGhqdGVzdF8yLmEgYTIsaGp0ZXN0XzEudGFibGVv aWQ6OnJlZ2NsYXNzIHQxLCBoanRlc3RfMi50YWJsZW9pZDo6cmVnY2xhc3MgdDIKK0ZST00gaGp0 ZXN0XzEsIGhqdGVzdF8yCitXSEVSRQorICAgIGhqdGVzdF8xLmlkID0gKFNFTEVDVCAxIFdIRVJF IGhqdGVzdF8yLmlkID0gMSkKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMS5iICogNSkgPSAoU0VM RUNUIGhqdGVzdF8yLmMqNSkKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMS5iICogNSkgPCA1MAor ICAgIEFORCAoU0VMRUNUIGhqdGVzdF8yLmMgKiA1KSA8IDU1CisgICAgQU5EIGhqdGVzdF8xLmEg PD4gaGp0ZXN0XzIuYjsKKworU0VMRUNUIGhqdGVzdF8xLmEgYTEsIGhqdGVzdF8yLmEgYTIsaGp0 ZXN0XzEudGFibGVvaWQ6OnJlZ2NsYXNzIHQxLCBoanRlc3RfMi50YWJsZW9pZDo6cmVnY2xhc3Mg dDIKK0ZST00gaGp0ZXN0XzEsIGhqdGVzdF8yCitXSEVSRQorICAgIGhqdGVzdF8xLmlkID0gKFNF TEVDVCAxIFdIRVJFIGhqdGVzdF8yLmlkID0gMSkKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMS5i ICogNSkgPSAoU0VMRUNUIGhqdGVzdF8yLmMqNSkKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMS5i ICogNSkgPCA1MAorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8yLmMgKiA1KSA8IDU1CisgICAgQU5E IGhqdGVzdF8xLmEgPD4gaGp0ZXN0XzIuYjsKKworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NF KQorU0VMRUNUIGhqdGVzdF8xLmEgYTEsIGhqdGVzdF8yLmEgYTIsaGp0ZXN0XzEudGFibGVvaWQ6 OnJlZ2NsYXNzIHQxLCBoanRlc3RfMi50YWJsZW9pZDo6cmVnY2xhc3MgdDIKK0ZST00gaGp0ZXN0 XzIsIGhqdGVzdF8xCitXSEVSRQorICAgIGhqdGVzdF8xLmlkID0gKFNFTEVDVCAxIFdIRVJFIGhq dGVzdF8yLmlkID0gMSkKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMS5iICogNSkgPSAoU0VMRUNU IGhqdGVzdF8yLmMqNSkKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMS5iICogNSkgPCA1MAorICAg IEFORCAoU0VMRUNUIGhqdGVzdF8yLmMgKiA1KSA8IDU1CisgICAgQU5EIGhqdGVzdF8xLmEgPD4g aGp0ZXN0XzIuYjsKKworU0VMRUNUIGhqdGVzdF8xLmEgYTEsIGhqdGVzdF8yLmEgYTIsaGp0ZXN0 XzEudGFibGVvaWQ6OnJlZ2NsYXNzIHQxLCBoanRlc3RfMi50YWJsZW9pZDo6cmVnY2xhc3MgdDIK K0ZST00gaGp0ZXN0XzIsIGhqdGVzdF8xCitXSEVSRQorICAgIGhqdGVzdF8xLmlkID0gKFNFTEVD VCAxIFdIRVJFIGhqdGVzdF8yLmlkID0gMSkKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMS5iICog NSkgPSAoU0VMRUNUIGhqdGVzdF8yLmMqNSkKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMS5iICog NSkgPCA1MAorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8yLmMgKiA1KSA8IDU1CisgICAgQU5EIGhq dGVzdF8xLmEgPD4gaGp0ZXN0XzIuYjsKKworUk9MTEJBQ0s7CisKKy0tIFZlcmlmeSB0aGF0IHdl IGJlaGF2ZSBzYW5lbHkgd2hlbiB0aGUgaW5uZXIgaGFzaCBrZXlzIGNvbnRhaW4gcGFyYW1ldGVy cworLS0gKHRoYXQgaXMsIG91dGVyIG9yIGxhdGVyYWwgcmVmZXJlbmNlcykuICBUaGlzIHNpdHVh dGlvbiBoYXMgdG8gZGVmZWF0CistLSByZS11c2Ugb2YgdGhlIGlubmVyIGhhc2ggdGFibGUgYWNy b3NzIHJlc2NhbnMuCitiZWdpbjsKK3NldCBsb2NhbCBlbmFibGVfaGFzaGpvaW4gPSBvbjsKKwor ZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0IGk4LnEyLCBzcy4qIGZyb20KK2ludDhfdGJsIGk4 LAorbGF0ZXJhbCAoc2VsZWN0IHQxLmZpdmV0aG91cywgaTQuZjEgZnJvbSB0ZW5rMSB0MSBqb2lu IGludDRfdGJsIGk0CisgICAgICAgICBvbiB0MS5maXZldGhvdXMgPSBpNC5mMStpOC5xMiBvcmRl ciBieSAxLDIpIHNzOworCitzZWxlY3QgaTgucTIsIHNzLiogZnJvbQoraW50OF90YmwgaTgsCits YXRlcmFsIChzZWxlY3QgdDEuZml2ZXRob3VzLCBpNC5mMSBmcm9tIHRlbmsxIHQxIGpvaW4gaW50 NF90YmwgaTQKKyAgICAgICAgIG9uIHQxLmZpdmV0aG91cyA9IGk0LmYxK2k4LnEyIG9yZGVyIGJ5 IDEsMikgc3M7CisKK3JvbGxiYWNrOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv am9pbl9oYXNoX3BnbHouc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbl9oYXNoX3BnbHou c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hNzUyOWVjMzQwMAot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW5faGFzaF9wZ2x6LnNx bApAQCAtMCwwICsxLDYyNyBAQAorLS0KKy0tIGV4ZXJjaXNlcyBmb3IgdGhlIGhhc2ggam9pbiBj b2RlCistLQorCitiZWdpbjsKKworc2V0IGxvY2FsIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3Np emUgPSAwOworc2V0IGxvY2FsIHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworc2V0IGxvY2FsIGVu YWJsZV9oYXNoam9pbiA9IG9uOworc2V0IGxvY2FsIHRlbXBfZmlsZV9jb21wcmVzc2lvbiA9ICdw Z2x6JzsKKworLS0gRXh0cmFjdCBidWNrZXQgYW5kIGJhdGNoIGNvdW50cyBmcm9tIGFuIGV4cGxh aW4gYW5hbHl6ZSBwbGFuLiAgSW4KKy0tIGdlbmVyYWwgd2UgY2FuJ3QgbWFrZSBhc3NlcnRpb25z IGFib3V0IGhvdyBtYW55IGJhdGNoZXMgKG9yCistLSBidWNrZXRzKSB3aWxsIGJlIHJlcXVpcmVk IGJlY2F1c2UgaXQgY2FuIHZhcnksIGJ1dCB3ZSBjYW4gaW4gc29tZQorLS0gc3BlY2lhbCBjYXNl cyBhbmQgd2UgY2FuIGNoZWNrIGZvciBncm93dGguCitjcmVhdGUgb3IgcmVwbGFjZSBmdW5jdGlv biBmaW5kX2hhc2gobm9kZSBqc29uKQorcmV0dXJucyBqc29uIGxhbmd1YWdlIHBscGdzcWwKK2Fz CiskJAorZGVjbGFyZQorICB4IGpzb247CisgIGNoaWxkIGpzb247CitiZWdpbgorICBpZiBub2Rl LT4+J05vZGUgVHlwZScgPSAnSGFzaCcgdGhlbgorICAgIHJldHVybiBub2RlOworICBlbHNlCisg ICAgZm9yIGNoaWxkIGluIHNlbGVjdCBqc29uX2FycmF5X2VsZW1lbnRzKG5vZGUtPidQbGFucycp CisgICAgbG9vcAorICAgICAgeCA6PSBmaW5kX2hhc2goY2hpbGQpOworICAgICAgaWYgeCBpcyBu b3QgbnVsbCB0aGVuCisgICAgICAgIHJldHVybiB4OworICAgICAgZW5kIGlmOworICAgIGVuZCBs b29wOworICAgIHJldHVybiBudWxsOworICBlbmQgaWY7CitlbmQ7CiskJDsKK2NyZWF0ZSBvciBy ZXBsYWNlIGZ1bmN0aW9uIGhhc2hfam9pbl9iYXRjaGVzKHF1ZXJ5IHRleHQpCityZXR1cm5zIHRh YmxlIChvcmlnaW5hbCBpbnQsIGZpbmFsIGludCkgbGFuZ3VhZ2UgcGxwZ3NxbAorYXMKKyQkCitk ZWNsYXJlCisgIHdob2xlX3BsYW4ganNvbjsKKyAgaGFzaF9ub2RlIGpzb247CitiZWdpbgorICBm b3Igd2hvbGVfcGxhbiBpbgorICAgIGV4ZWN1dGUgJ2V4cGxhaW4gKGFuYWx5emUsIGZvcm1hdCAn J2pzb24nJykgJyB8fCBxdWVyeQorICBsb29wCisgICAgaGFzaF9ub2RlIDo9IGZpbmRfaGFzaChq c29uX2V4dHJhY3RfcGF0aCh3aG9sZV9wbGFuLCAnMCcsICdQbGFuJykpOworICAgIG9yaWdpbmFs IDo9IGhhc2hfbm9kZS0+PidPcmlnaW5hbCBIYXNoIEJhdGNoZXMnOworICAgIGZpbmFsIDo9IGhh c2hfbm9kZS0+PidIYXNoIEJhdGNoZXMnOworICAgIHJldHVybiBuZXh0OworICBlbmQgbG9vcDsK K2VuZDsKKyQkOworCistLSBNYWtlIGEgc2ltcGxlIHJlbGF0aW9uIHdpdGggd2VsbCBkaXN0cmli dXRlZCBrZXlzIGFuZCBjb3JyZWN0bHkKKy0tIGVzdGltYXRlZCBzaXplLgorY3JlYXRlIHRhYmxl IHNpbXBsZSBhcworICBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMDAwKSBBUyBpZCwgJ2Fh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEnOworYWx0ZXIgdGFibGUgc2ltcGxlIHNl dCAocGFyYWxsZWxfd29ya2VycyA9IDIpOworYW5hbHl6ZSBzaW1wbGU7CisKKy0tIE1ha2UgYSBy ZWxhdGlvbiB3aG9zZSBzaXplIHdlIHdpbGwgdW5kZXItZXN0aW1hdGUuICBXZSB3YW50IHN0YXRz CistLSB0byBzYXkgMTAwMCByb3dzLCBidXQgYWN0dWFsbHkgdGhlcmUgYXJlIDIwLDAwMCByb3dz LgorY3JlYXRlIHRhYmxlIGJpZ2dlcl90aGFuX2l0X2xvb2tzIGFzCisgIHNlbGVjdCBnZW5lcmF0 ZV9zZXJpZXMoMSwgMjAwMDApIGFzIGlkLCAnYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYSc7CithbHRlciB0YWJsZSBiaWdnZXJfdGhhbl9pdF9sb29rcyBzZXQgKGF1dG92YWN1dW1f ZW5hYmxlZCA9ICdmYWxzZScpOworYWx0ZXIgdGFibGUgYmlnZ2VyX3RoYW5faXRfbG9va3Mgc2V0 IChwYXJhbGxlbF93b3JrZXJzID0gMik7CithbmFseXplIGJpZ2dlcl90aGFuX2l0X2xvb2tzOwor dXBkYXRlIHBnX2NsYXNzIHNldCByZWx0dXBsZXMgPSAxMDAwIHdoZXJlIHJlbG5hbWUgPSAnYmln Z2VyX3RoYW5faXRfbG9va3MnOworCistLSBNYWtlIGEgcmVsYXRpb24gd2hvc2Ugc2l6ZSB3ZSB1 bmRlcmVzdGltYXRlIGFuZCB0aGF0IGFsc28gaGFzIGEKKy0tIGtpbmQgb2Ygc2tldyB0aGF0IGJy ZWFrcyBvdXIgYmF0Y2hpbmcgc2NoZW1lLiAgV2Ugd2FudCBzdGF0cyB0byBzYXkKKy0tIDIgcm93 cywgYnV0IGFjdHVhbGx5IHRoZXJlIGFyZSAyMCwwMDAgcm93cyB3aXRoIHRoZSBzYW1lIGtleS4K K2NyZWF0ZSB0YWJsZSBleHRyZW1lbHlfc2tld2VkIChpZCBpbnQsIHQgdGV4dCk7CithbHRlciB0 YWJsZSBleHRyZW1lbHlfc2tld2VkIHNldCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gJ2ZhbHNlJyk7 CithbHRlciB0YWJsZSBleHRyZW1lbHlfc2tld2VkIHNldCAocGFyYWxsZWxfd29ya2VycyA9IDIp OworYW5hbHl6ZSBleHRyZW1lbHlfc2tld2VkOworaW5zZXJ0IGludG8gZXh0cmVtZWx5X3NrZXdl ZAorICBzZWxlY3QgNDIgYXMgaWQsICdhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh JworICBmcm9tIGdlbmVyYXRlX3NlcmllcygxLCAyMDAwMCk7Cit1cGRhdGUgcGdfY2xhc3MKKyAg c2V0IHJlbHR1cGxlcyA9IDIsIHJlbHBhZ2VzID0gcGdfcmVsYXRpb25fc2l6ZSgnZXh0cmVtZWx5 X3NrZXdlZCcpIC8gODE5MgorICB3aGVyZSByZWxuYW1lID0gJ2V4dHJlbWVseV9za2V3ZWQnOwor CistLSBNYWtlIGEgcmVsYXRpb24gd2l0aCBhIGNvdXBsZSBvZiBlbm9ybW91cyB0dXBsZXMuCitj cmVhdGUgdGFibGUgd2lkZSBhcyBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEsIDIpIGFzIGlkLCBy cGFkKCcnLCAzMjAwMDAsICd4JykgYXMgdDsKK2FsdGVyIHRhYmxlIHdpZGUgc2V0IChwYXJhbGxl bF93b3JrZXJzID0gMik7CisKKy0tIFRoZSAib3B0aW1hbCIgY2FzZTogdGhlIGhhc2ggdGFibGUg Zml0cyBpbiBtZW1vcnk7IHdlIHBsYW4gZm9yIDEKKy0tIGJhdGNoLCB3ZSBzdGljayB0byB0aGF0 IG51bWJlciwgYW5kIHBlYWsgbWVtb3J5IHVzYWdlIHN0YXlzIHdpdGhpbgorLS0gb3VyIHdvcmtf bWVtIGJ1ZGdldAorCistLSBub24tcGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBs b2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKK3NldCBsb2NhbCB3b3Jr X21lbSA9ICc0TUInOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBs YWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2lt cGxlIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2lt cGxlIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRp YmF0Y2gsIGZpbmFsID4gb3JpZ2luYWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNo X2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4g c2ltcGxlIHMgdXNpbmcgKGlkKTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBw YXJhbGxlbCB3aXRoIHBhcmFsbGVsLW9ibGl2aW91cyBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0 aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3Nl dCBsb2NhbCB3b3JrX21lbSA9ICc0TUInOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIg PSAxLjA7CitzZXQgbG9jYWwgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7CitleHBsYWluIChj b3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMg dXNpbmcgKGlkKTsKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMg dXNpbmcgKGlkKTsKK3NlbGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gs IGZpbmFsID4gb3JpZ2luYWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5f YmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxl IHMgdXNpbmcgKGlkKTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBwYXJhbGxl bCB3aXRoIHBhcmFsbGVsLWF3YXJlIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0 IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdv cmtfbWVtID0gJzRNQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3Nl dCBsb2NhbCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworZXhwbGFpbiAoY29zdHMgb2ZmKQor ICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7 CitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7 CitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9y aWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCisk JAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChp ZCk7CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsKKworLS0gVGhlICJnb29kIiBjYXNlOiBi YXRjaGVzIHJlcXVpcmVkLCBidXQgd2UgcGxhbiB0aGUgcmlnaHQgbnVtYmVyOyB3ZQorLS0gcGxh biBmb3Igc29tZSBudW1iZXIgb2YgYmF0Y2hlcywgYW5kIHdlIHN0aWNrIHRvIHRoYXQgbnVtYmVy LCBhbmQKKy0tIHBlYWsgbWVtb3J5IHVzYWdlIHNheXMgd2l0aGluIG91ciB3b3JrX21lbSBidWRn ZXQKKworLS0gbm9uLXBhcmFsbGVsCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4 X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CitzZXQgbG9jYWwgd29ya19tZW0gPSAn MTI4a0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChj b3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMg dXNpbmcgKGlkKTsKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMg dXNpbmcgKGlkKTsKK3NlbGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gs IGZpbmFsID4gb3JpZ2luYWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5f YmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxl IHMgdXNpbmcgKGlkKTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBwYXJhbGxl bCB3aXRoIHBhcmFsbGVsLW9ibGl2aW91cyBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsK K3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3NldCBsb2Nh bCB3b3JrX21lbSA9ICcxMjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEu MDsKK3NldCBsb2NhbCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK2V4cGxhaW4gKGNvc3Rz IG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2lu ZyAoaWQpOworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2lu ZyAoaWQpOworc2VsZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmlu YWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRj aGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1 c2luZyAoaWQpOworJCQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIHBhcmFsbGVsIHdp dGggcGFyYWxsZWwtYXdhcmUgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9j YWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQgbG9jYWwgd29ya19t ZW0gPSAnMTkya0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQg bG9jYWwgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAg c2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOwor c2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOwor c2VsZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmln aW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQK KyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQp OworJCQpOworLS0gcGFyYWxsZWwgZnVsbCBtdWx0aS1iYXRjaCBoYXNoIGpvaW4KK3NlbGVjdCBj b3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQp Oworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIFRoZSAiYmFkIiBjYXNlOiBkdXJpbmcgZXhl Y3V0aW9uIHdlIG5lZWQgdG8gaW5jcmVhc2UgbnVtYmVyIG9mCistLSBiYXRjaGVzOyBpbiB0aGlz IGNhc2Ugd2UgcGxhbiBmb3IgMSBiYXRjaCwgYW5kIGluY3JlYXNlIGF0IGxlYXN0IGEKKy0tIGNv dXBsZSBvZiB0aW1lcywgYW5kIHBlYWsgbWVtb3J5IHVzYWdlIHN0YXlzIHdpdGhpbiBvdXIgd29y a19tZW0KKy0tIGJ1ZGdldAorCistLSBub24tcGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0aW5nczsK K3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKK3NldCBsb2Nh bCB3b3JrX21lbSA9ICcxMjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEu MDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIEZST00gc2ltcGxlIHIg Sk9JTiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIFVTSU5HIChpZCk7CitzZWxlY3QgY291bnQoKikg RlJPTSBzaW1wbGUgciBKT0lOIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMgVVNJTkcgKGlkKTsKK3Nl bGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gsIGZpbmFsID4gb3JpZ2lu YWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisg IHNlbGVjdCBjb3VudCgqKSBGUk9NIHNpbXBsZSByIEpPSU4gYmlnZ2VyX3RoYW5faXRfbG9va3Mg cyBVU0lORyAoaWQpOworJCQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIHBhcmFsbGVs IHdpdGggcGFyYWxsZWwtb2JsaXZpb3VzIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOwor c2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2Fs IHdvcmtfbWVtID0gJzEyOGtCJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4w Oworc2V0IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworZXhwbGFpbiAoY29zdHMg b2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGJpZ2dlcl90aGFuX2l0 X2xvb2tzIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4g YmlnZ2VyX3RoYW5faXRfbG9va3MgcyB1c2luZyAoaWQpOworc2VsZWN0IG9yaWdpbmFsID4gMSBh cyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0 Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZy b20gc2ltcGxlIHIgam9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CiskJCk7 Cityb2xsYmFjayB0byBzZXR0aW5nczsKKworLS0gcGFyYWxsZWwgd2l0aCBwYXJhbGxlbC1hd2Fy ZSBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxf d29ya2Vyc19wZXJfZ2F0aGVyID0gMTsKK3NldCBsb2NhbCB3b3JrX21lbSA9ICcxOTJrQic7Citz ZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBlbmFibGVfcGFy YWxsZWxfaGFzaCA9IG9uOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikg ZnJvbSBzaW1wbGUgciBqb2luIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMgdXNpbmcgKGlkKTsKK3Nl bGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gYmlnZ2VyX3RoYW5faXRfbG9va3MgcyB1 c2luZyAoaWQpOworc2VsZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwg ZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9i YXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBiaWdnZXJf dGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsK KworLS0gVGhlICJ1Z2x5IiBjYXNlOiBpbmNyZWFzaW5nIHRoZSBudW1iZXIgb2YgYmF0Y2hlcyBk dXJpbmcgZXhlY3V0aW9uCistLSBkb2Vzbid0IGhlbHAsIHNvIHN0b3AgdHJ5aW5nIHRvIGZpdCBp biB3b3JrX21lbSBhbmQgaG9wZSBmb3IgdGhlCistLSBiZXN0OyBpbiB0aGlzIGNhc2Ugd2UgcGxh biBmb3IgMSBiYXRjaCwgaW5jcmVhc2VzIGp1c3Qgb25jZSBhbmQKKy0tIHRoZW4gc3RvcCBpbmNy ZWFzaW5nIGJlY2F1c2UgdGhhdCBkaWRuJ3QgaGVscCBhdCBhbGwsIHNvIHdlIGJsb3cKKy0tIHJp Z2h0IHRocm91Z2ggdGhlIHdvcmtfbWVtIGJ1ZGdldCBhbmQgaG9wZSBmb3IgdGhlIGJlc3QuLi4K KworLS0gbm9uLXBhcmFsbGVsCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3Bh cmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnMTI4 a0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0 cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5X3Nr ZXdlZCBzIHVzaW5nIChpZCk7CitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4 dHJlbWVseV9za2V3ZWQgcyB1c2luZyAoaWQpOworc2VsZWN0ICogZnJvbSBoYXNoX2pvaW5fYmF0 Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5 X3NrZXdlZCBzIHVzaW5nIChpZCk7CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsKKworLS0g cGFyYWxsZWwgd2l0aCBwYXJhbGxlbC1vYmxpdmlvdXMgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0 dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7Citz ZXQgbG9jYWwgd29ya19tZW0gPSAnMTI4a0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxp ZXIgPSAxLjA7CitzZXQgbG9jYWwgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7CitleHBsYWlu IChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVt ZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBq b2luIGV4dHJlbWVseV9za2V3ZWQgcyB1c2luZyAoaWQpOworc2VsZWN0ICogZnJvbSBoYXNoX2pv aW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0 cmVtZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsK KworLS0gcGFyYWxsZWwgd2l0aCBwYXJhbGxlbC1hd2FyZSBoYXNoIGpvaW4KK3NhdmVwb2ludCBz ZXR0aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMTsK K3NldCBsb2NhbCB3b3JrX21lbSA9ICcxMjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlw bGllciA9IDEuMDsKK3NldCBsb2NhbCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworZXhwbGFp biAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4dHJl bWVseV9za2V3ZWQgcyB1c2luZyAoaWQpOworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIg am9pbiBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCAqIGZyb20gaGFzaF9q b2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4 dHJlbWVseV9za2V3ZWQgcyB1c2luZyAoaWQpOworJCQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7 CisKKy0tIEEgY291cGxlIG9mIG90aGVyIGhhc2ggam9pbiB0ZXN0cyB1bnJlbGF0ZWQgdG8gd29y a19tZW0gbWFuYWdlbWVudC4KKworLS0gQ2hlY2sgdGhhdCBFWFBMQUlOIEFOQUxZWkUgaGFzIGRh dGEgZXZlbiBpZiB0aGUgbGVhZGVyIGRvZXNuJ3QgcGFydGljaXBhdGUKK3NhdmVwb2ludCBzZXR0 aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3Nl dCBsb2NhbCB3b3JrX21lbSA9ICc0TUInOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIg PSAxLjA7CitzZXQgbG9jYWwgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7Citz ZWxlY3QgKiBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZy b20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworJCQpOworcm9sbGJhY2sgdG8g c2V0dGluZ3M7CisKKy0tIEV4ZXJjaXNlIHJlc2NhbnMuICBXZSdsbCB0dXJuIG9mZiBwYXJhbGxl bF9sZWFkZXJfcGFydGljaXBhdGlvbiBzbworLS0gdGhhdCB3ZSBjYW4gY2hlY2sgdGhhdCBpbnN0 cnVtZW50YXRpb24gY29tZXMgYmFjayBjb3JyZWN0bHkuCisKK2NyZWF0ZSB0YWJsZSBqb2luX2Zv byBhcyBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEsIDMpIGFzIGlkLCAneHh4eHgnOjp0ZXh0IGFz IHQ7CithbHRlciB0YWJsZSBqb2luX2ZvbyBzZXQgKHBhcmFsbGVsX3dvcmtlcnMgPSAwKTsKK2Ny ZWF0ZSB0YWJsZSBqb2luX2JhciBhcyBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDAwKSBh cyBpZCwgJ3h4eHh4Jzo6dGV4dCBhcyB0OworYWx0ZXIgdGFibGUgam9pbl9iYXIgc2V0IChwYXJh bGxlbF93b3JrZXJzID0gMik7CithbmFseXplIGpvaW5fZm9vLCBqb2luX2JhcjsKKworLS0gbXVs dGktYmF0Y2ggd2l0aCByZXNjYW4sIHBhcmFsbGVsLW9ibGl2aW91cworc2F2ZXBvaW50IHNldHRp bmdzOworc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworc2V0IHBhcmFsbGVsX2xlYWRl cl9wYXJ0aWNpcGF0aW9uID0gb2ZmOworc2V0IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUg PSAwOworc2V0IHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworc2V0IHBhcmFsbGVsX3R1cGxlX2Nv c3QgPSAwOworc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVu YWJsZV9tYXRlcmlhbCA9IG9mZjsKK3NldCBlbmFibGVfbWVyZ2Vqb2luID0gb2ZmOworc2V0IHdv cmtfbWVtID0gJzY0a0InOworc2V0IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWlu IChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVmdCBq b2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIy IHVzaW5nIChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5f Zm9vLmlkID4gc3MuaWQgLSAxOworc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9mb28KKyAgbGVm dCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFy IGIyIHVzaW5nIChpZCkpIHNzCisgIG9uIGpvaW5fZm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBqb2lu X2Zvby5pZCA+IHNzLmlkIC0gMTsKK3NlbGVjdCBmaW5hbCA+IDEgYXMgbXVsdGliYXRjaAorICBm cm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9m b28KKyAgICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIxIGpv aW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgICBvbiBqb2luX2Zvby5pZCA8IHNzLmlk ICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CiskJCk7Cityb2xsYmFjayB0byBzZXR0 aW5nczsKKworLS0gc2luZ2xlLWJhdGNoIHdpdGggcmVzY2FuLCBwYXJhbGxlbC1vYmxpdmlvdXMK K3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK3Nl dCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9mZjsKK3NldCBtaW5fcGFyYWxsZWxf dGFibGVfc2Nhbl9zaXplID0gMDsKK3NldCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0gMDsKK3NldCBw YXJhbGxlbF90dXBsZV9jb3N0ID0gMDsKK3NldCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0 aGVyID0gMjsKK3NldCBlbmFibGVfbWF0ZXJpYWwgPSBvZmY7CitzZXQgZW5hYmxlX21lcmdlam9p biA9IG9mZjsKK3NldCB3b3JrX21lbSA9ICc0TUInOworc2V0IGhhc2hfbWVtX211bHRpcGxpZXIg PSAxLjA7CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5f Zm9vCisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBq b2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBzcy5p ZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworc2VsZWN0IGNvdW50KCopIGZyb20g am9pbl9mb28KKyAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBi MSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgIG9uIGpvaW5fZm9vLmlkIDwgc3Mu aWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKK3NlbGVjdCBmaW5hbCA+IDEgYXMg bXVsdGliYXRjaAorICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50 KCopIGZyb20gam9pbl9mb28KKyAgICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9t IGpvaW5fYmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgICBvbiBqb2lu X2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CiskJCk7City b2xsYmFjayB0byBzZXR0aW5nczsKKworLS0gbXVsdGktYmF0Y2ggd2l0aCByZXNjYW4sIHBhcmFs bGVsLWF3YXJlCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2gg PSBvbjsKK3NldCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9mZjsKK3NldCBtaW5f cGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplID0gMDsKK3NldCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0g MDsKK3NldCBwYXJhbGxlbF90dXBsZV9jb3N0ID0gMDsKK3NldCBtYXhfcGFyYWxsZWxfd29ya2Vy c19wZXJfZ2F0aGVyID0gMjsKK3NldCBlbmFibGVfbWF0ZXJpYWwgPSBvZmY7CitzZXQgZW5hYmxl X21lcmdlam9pbiA9IG9mZjsKK3NldCB3b3JrX21lbSA9ICc2NGtCJzsKK3NldCBoYXNoX21lbV9t dWx0aXBsaWVyID0gMS4wOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikg ZnJvbSBqb2luX2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9p bl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9uIGpvaW5fZm9v LmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKK3NlbGVjdCBjb3Vu dCgqKSBmcm9tIGpvaW5fZm9vCisgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20g am9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICBvbiBqb2luX2Zv by5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CitzZWxlY3QgZmlu YWwgPiAxIGFzIG11bHRpYmF0Y2gKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNl bGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQs IGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisg ICAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAx OworJCQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIHNpbmdsZS1iYXRjaCB3aXRoIHJl c2NhbiwgcGFyYWxsZWwtYXdhcmUKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBlbmFibGVfcGFy YWxsZWxfaGFzaCA9IG9uOworc2V0IHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0gb2Zm Oworc2V0IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOworc2V0IHBhcmFsbGVsX3Nl dHVwX2Nvc3QgPSAwOworc2V0IHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworc2V0IG1heF9wYXJh bGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVuYWJsZV9tYXRlcmlhbCA9IG9mZjsK K3NldCBlbmFibGVfbWVyZ2Vqb2luID0gb2ZmOworc2V0IHdvcmtfbWVtID0gJzRNQic7CitzZXQg aGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0 IGNvdW50KCopIGZyb20gam9pbl9mb28KKyAgICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEu dCBmcm9tIGpvaW5fYmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgICBv biBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7Citz ZWxlY3QgY291bnQoKikgZnJvbSBqb2luX2ZvbworICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwg YjEudCBmcm9tIGpvaW5fYmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAg b24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOwor c2VsZWN0IGZpbmFsID4gMSBhcyBtdWx0aWJhdGNoCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMo CiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBqb2luX2ZvbworICAgIGxlZnQgam9pbiAoc2Vs ZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAo aWQpKSBzcworICAgIG9uIGpvaW5fZm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+ IHNzLmlkIC0gMTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBBIGZ1bGwgb3V0 ZXIgam9pbiB3aGVyZSBldmVyeSByZWNvcmQgaXMgbWF0Y2hlZC4KKworLS0gbm9uLXBhcmFsbGVs CitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVy X2dhdGhlciA9IDA7CitleHBsYWluIChjb3N0cyBvZmYpCisgICAgIHNlbGVjdCAgY291bnQoKikg ZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3NlbGVj dCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcg KGlkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBwYXJhbGxlbGlzbSBub3QgcG9zc2li bGUgd2l0aCBwYXJhbGxlbC1vYmxpdmlvdXMgZnVsbCBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0 aW5nczsKK3NldCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK3NldCBsb2NhbCBtYXhfcGFy YWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgICAg c2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1 c2luZyAoaWQpOworc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9p biBzaW1wbGUgcyB1c2luZyAoaWQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIHBhcmFs bGVsaXNtIGlzIHBvc3NpYmxlIHdpdGggcGFyYWxsZWwtYXdhcmUgZnVsbCBoYXNoIGpvaW4KK3Nh dmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0 aGVyID0gMjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgICAgc2VsZWN0ICBjb3VudCgqKSBmcm9t IHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworc2VsZWN0ICBj b3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQp Oworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIEEgZnVsbCBvdXRlciBqb2luIHdoZXJlIGV2 ZXJ5IHJlY29yZCBpcyBub3QgbWF0Y2hlZC4KKworLS0gbm9uLXBhcmFsbGVsCitzYXZlcG9pbnQg c2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7 CitleHBsYWluIChjb3N0cyBvZmYpCisgICAgIHNlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUg ciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgb24gKHIuaWQgPSAwIC0gcy5pZCk7CitzZWxlY3Qg IGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIG9uIChyLmlk ID0gMCAtIHMuaWQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIHBhcmFsbGVsaXNtIG5v dCBwb3NzaWJsZSB3aXRoIHBhcmFsbGVsLW9ibGl2aW91cyBmdWxsIGhhc2ggam9pbgorc2F2ZXBv aW50IHNldHRpbmdzOworc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworc2V0IGxvY2Fs IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworZXhwbGFpbiAoY29zdHMgb2Zm KQorICAgICBzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNp bXBsZSBzIG9uIChyLmlkID0gMCAtIHMuaWQpOworc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBs ZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyBvbiAoci5pZCA9IDAgLSBzLmlkKTsKK3JvbGxi YWNrIHRvIHNldHRpbmdzOworCistLSBwYXJhbGxlbGlzbSBpcyBwb3NzaWJsZSB3aXRoIHBhcmFs bGVsLWF3YXJlIGZ1bGwgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwg bWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitleHBsYWluIChjb3N0cyBvZmYp CisgICAgIHNlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2lt cGxlIHMgb24gKHIuaWQgPSAwIC0gcy5pZCk7CitzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxl IHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIG9uIChyLmlkID0gMCAtIHMuaWQpOworcm9sbGJh Y2sgdG8gc2V0dGluZ3M7CisKKworLS0gZXhlcmNpc2Ugc3BlY2lhbCBjb2RlIHBhdGhzIGZvciBo dWdlIHR1cGxlcyAobm90ZSB1c2Ugb2Ygbm9uLXN0cmljdAorLS0gZXhwcmVzc2lvbiBhbmQgbGVm dCBqb2luIHJlcXVpcmVkIHRvIGdldCB0aGUgZGV0b2FzdGVkIHR1cGxlIGludG8KKy0tIHRoZSBo YXNoIHRhYmxlKQorCistLSBwYXJhbGxlbCB3aXRoIHBhcmFsbGVsLWF3YXJlIGhhc2ggam9pbiAo aGl0cyBFeGVjUGFyYWxsZWxIYXNoTG9hZFR1cGxlIGFuZAorLS0gc3RzX3B1dHR1cGxlIG92ZXJz aXplZCB0dXBsZSBjYXNlcyBiZWNhdXNlIGl0J3MgbXVsdGktYmF0Y2gpCitzYXZlcG9pbnQgc2V0 dGluZ3M7CitzZXQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQgZW5h YmxlX3BhcmFsbGVsX2hhc2ggPSBvbjsKK3NldCB3b3JrX21lbSA9ICcxMjhrQic7CitzZXQgaGFz aF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGxl bmd0aChtYXgocy50KSkKKyAgZnJvbSB3aWRlIGxlZnQgam9pbiAoc2VsZWN0IGlkLCBjb2FsZXNj ZSh0LCAnJykgfHwgJycgYXMgdCBmcm9tIHdpZGUpIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBsZW5n dGgobWF4KHMudCkpCitmcm9tIHdpZGUgbGVmdCBqb2luIChzZWxlY3QgaWQsIGNvYWxlc2NlKHQs ICcnKSB8fCAnJyBhcyB0IGZyb20gd2lkZSkgcyB1c2luZyAoaWQpOworc2VsZWN0IGZpbmFsID4g MSBhcyBtdWx0aWJhdGNoCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3Qg bGVuZ3RoKG1heChzLnQpKQorICBmcm9tIHdpZGUgbGVmdCBqb2luIChzZWxlY3QgaWQsIGNvYWxl c2NlKHQsICcnKSB8fCAnJyBhcyB0IGZyb20gd2lkZSkgcyB1c2luZyAoaWQpOworJCQpOworcm9s bGJhY2sgdG8gc2V0dGluZ3M7CisKKworLS0gSGFzaCBqb2luIHJldXNlcyB0aGUgSE9UIHN0YXR1 cyBiaXQgdG8gaW5kaWNhdGUgbWF0Y2ggc3RhdHVzLiBUaGlzIGNhbiBvbmx5CistLSBiZSBndWFy YW50ZWVkIHRvIHByb2R1Y2UgY29ycmVjdCByZXN1bHRzIGlmIGFsbCB0aGUgaGFzaCBqb2luIHR1 cGxlIG1hdGNoCistLSBiaXRzIGFyZSByZXNldCBiZWZvcmUgcmV1c2UuIFRoaXMgaXMgZG9uZSB1 cG9uIGxvYWRpbmcgdGhlbSBpbnRvIHRoZQorLS0gaGFzaHRhYmxlLgorU0FWRVBPSU5UIHNldHRp bmdzOworU0VUIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb247CitTRVQgbWluX3BhcmFsbGVsX3Rh YmxlX3NjYW5fc2l6ZSA9IDA7CitTRVQgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitTRVQgcGFy YWxsZWxfdHVwbGVfY29zdCA9IDA7CitDUkVBVEUgVEFCTEUgaGp0ZXN0X21hdGNoYml0c190MShp ZCBpbnQpOworQ1JFQVRFIFRBQkxFIGhqdGVzdF9tYXRjaGJpdHNfdDIoaWQgaW50KTsKK0lOU0VS VCBJTlRPIGhqdGVzdF9tYXRjaGJpdHNfdDEgVkFMVUVTICgxKTsKK0lOU0VSVCBJTlRPIGhqdGVz dF9tYXRjaGJpdHNfdDIgVkFMVUVTICgyKTsKKy0tIFVwZGF0ZSBzaG91bGQgY3JlYXRlIGEgSE9U IHR1cGxlLiBJZiB0aGlzIHN0YXR1cyBiaXQgaXNuJ3QgY2xlYXJlZCwgd2Ugd29uJ3QKKy0tIGNv cnJlY3RseSBlbWl0IHRoZSBOVUxMLWV4dGVuZGVkIHVubWF0Y2hpbmcgdHVwbGUgaW4gZnVsbCBo YXNoIGpvaW4uCitVUERBVEUgaGp0ZXN0X21hdGNoYml0c190MiBzZXQgaWQgPSAyOworU0VMRUNU ICogRlJPTSBoanRlc3RfbWF0Y2hiaXRzX3QxIHQxIEZVTEwgSk9JTiBoanRlc3RfbWF0Y2hiaXRz X3QyIHQyIE9OIHQxLmlkID0gdDIuaWQKKyAgT1JERVIgQlkgdDEuaWQ7CistLSBUZXN0IHNlcmlh bCBmdWxsIGhhc2ggam9pbi4KKy0tIFJlc2V0dGluZyBwYXJhbGxlbF9zZXR1cF9jb3N0IHNob3Vs ZCBmb3JjZSBhIHNlcmlhbCBwbGFuLgorLS0gSnVzdCB0byBiZSBzYWZlLCBob3dldmVyLCBzZXQg ZW5hYmxlX3BhcmFsbGVsX2hhc2ggdG8gb2ZmLCBhcyBwYXJhbGxlbCBmdWxsCistLSBoYXNoIGpv aW5zIGFyZSBvbmx5IHN1cHBvcnRlZCB3aXRoIHNoYXJlZCBoYXNodGFibGVzLgorUkVTRVQgcGFy YWxsZWxfc2V0dXBfY29zdDsKK1NFVCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK1NFTEVD VCAqIEZST00gaGp0ZXN0X21hdGNoYml0c190MSB0MSBGVUxMIEpPSU4gaGp0ZXN0X21hdGNoYml0 c190MiB0MiBPTiB0MS5pZCA9IHQyLmlkOworUk9MTEJBQ0sgVE8gc2V0dGluZ3M7CisKK3JvbGxi YWNrOworCistLSBWZXJpZnkgdGhhdCBoYXNoIGtleSBleHByZXNzaW9ucyByZWZlcmVuY2UgdGhl IGNvcnJlY3QKKy0tIG5vZGVzLiBIYXNoam9pbidzIGhhc2hrZXlzIG5lZWQgdG8gcmVmZXJlbmNl IGl0cyBvdXRlciBwbGFuLCBIYXNoJ3MKKy0tIG5lZWQgdG8gcmVmZXJlbmNlIEhhc2gncyBvdXRl ciBwbGFuICh3aGljaCBpcyBiZWxvdyBIYXNoSm9pbidzCistLSBpbm5lciBwbGFuKS4gSXQncyBu b3QgdHJpdmlhbCB0byB2ZXJpZnkgdGhhdCB0aGUgcmVmZXJlbmNlcyBhcmUKKy0tIGNvcnJlY3Qg KHdlIGRvbid0IGRpc3BsYXkgdGhlIGhhc2hrZXlzIHRoZW1zZWx2ZXMpLCBidXQgaWYgdGhlCist LSBoYXNoa2V5cyBjb250YWluIHN1YnBsYW4gcmVmZXJlbmNlcywgdGhvc2Ugd2lsbCBiZSBkaXNw bGF5ZWQuIEZvcmNlCistLSBzdWJwbGFucyB0byBhcHBlYXIganVzdCBhYm91dCBldmVyeXdoZXJl LgorLS0KKy0tIEJ1ZyByZXBvcnQ6CistLSBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNz YWdlLWlkL0NBUHBIZmR2R1ZlZ0ZfVEtLUmlCclNtYXRKTDJkUjl1d0ZDdVIlMkJ0ZVFfOHRFWFU4 bXhnJTQwbWFpbC5nbWFpbC5jb20KKy0tCitCRUdJTjsKK1NFVCBMT0NBTCBlbmFibGVfc29ydCA9 IE9GRjsgLS0gYXZvaWQgbWVyZ2Vqb2lucworU0VUIExPQ0FMIGZyb21fY29sbGFwc2VfbGltaXQg PSAxOyAtLSBhbGxvd3MgZWFzeSBjaGFuZ2luZyBvZiBqb2luIG9yZGVyCisKK0NSRUFURSBUQUJM RSBoanRlc3RfMSAoYSB0ZXh0LCBiIGludCwgaWQgaW50LCBjIGJvb2wpOworQ1JFQVRFIFRBQkxF IGhqdGVzdF8yIChhIGJvb2wsIGlkIGludCwgYiB0ZXh0LCBjIGludCk7CisKK0lOU0VSVCBJTlRP IGhqdGVzdF8xKGEsIGIsIGlkLCBjKSBWQUxVRVMgKCd0ZXh0JywgMiwgMSwgZmFsc2UpOyAtLSBt YXRjaGVzCitJTlNFUlQgSU5UTyBoanRlc3RfMShhLCBiLCBpZCwgYykgVkFMVUVTICgndGV4dCcs IDEsIDIsIGZhbHNlKTsgLS0gZmFpbHMgaWQgam9pbiBjb25kaXRpb24KK0lOU0VSVCBJTlRPIGhq dGVzdF8xKGEsIGIsIGlkLCBjKSBWQUxVRVMgKCd0ZXh0JywgMjAsIDEsIGZhbHNlKTsgLS0gZmFp bHMgPCA1MAorSU5TRVJUIElOVE8gaGp0ZXN0XzEoYSwgYiwgaWQsIGMpIFZBTFVFUyAoJ3RleHQn LCAxLCAxLCBmYWxzZSk7IC0tIGZhaWxzIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpID0gKFNFTEVD VCBoanRlc3RfMi5jKjUpCisKK0lOU0VSVCBJTlRPIGhqdGVzdF8yKGEsIGlkLCBiLCBjKSBWQUxV RVMgKHRydWUsIDEsICdhbm90aGVyJywgMik7IC0tIG1hdGNoZXMKK0lOU0VSVCBJTlRPIGhqdGVz dF8yKGEsIGlkLCBiLCBjKSBWQUxVRVMgKHRydWUsIDMsICdhbm90aGVyJywgNyk7IC0tIGZhaWxz IGlkIGpvaW4gY29uZGl0aW9uCitJTlNFUlQgSU5UTyBoanRlc3RfMihhLCBpZCwgYiwgYykgVkFM VUVTICh0cnVlLCAxLCAnYW5vdGhlcicsIDkwKTsgIC0tIGZhaWxzIDwgNTUKK0lOU0VSVCBJTlRP IGhqdGVzdF8yKGEsIGlkLCBiLCBjKSBWQUxVRVMgKHRydWUsIDEsICdhbm90aGVyJywgMyk7IC0t IGZhaWxzIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpID0gKFNFTEVDVCBoanRlc3RfMi5jKjUpCitJ TlNFUlQgSU5UTyBoanRlc3RfMihhLCBpZCwgYiwgYykgVkFMVUVTICh0cnVlLCAxLCAndGV4dCcs IDEpOyAtLSAgZmFpbHMgaGp0ZXN0XzEuYSA8PiBoanRlc3RfMi5iOworCitFWFBMQUlOIChDT1NU UyBPRkYsIFZFUkJPU0UpCitTRUxFQ1QgaGp0ZXN0XzEuYSBhMSwgaGp0ZXN0XzIuYSBhMixoanRl c3RfMS50YWJsZW9pZDo6cmVnY2xhc3MgdDEsIGhqdGVzdF8yLnRhYmxlb2lkOjpyZWdjbGFzcyB0 MgorRlJPTSBoanRlc3RfMSwgaGp0ZXN0XzIKK1dIRVJFCisgICAgaGp0ZXN0XzEuaWQgPSAoU0VM RUNUIDEgV0hFUkUgaGp0ZXN0XzIuaWQgPSAxKQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIg KiA1KSA9IChTRUxFQ1QgaGp0ZXN0XzIuYyo1KQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIg KiA1KSA8IDUwCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzIuYyAqIDUpIDwgNTUKKyAgICBBTkQg aGp0ZXN0XzEuYSA8PiBoanRlc3RfMi5iOworCitTRUxFQ1QgaGp0ZXN0XzEuYSBhMSwgaGp0ZXN0 XzIuYSBhMixoanRlc3RfMS50YWJsZW9pZDo6cmVnY2xhc3MgdDEsIGhqdGVzdF8yLnRhYmxlb2lk OjpyZWdjbGFzcyB0MgorRlJPTSBoanRlc3RfMSwgaGp0ZXN0XzIKK1dIRVJFCisgICAgaGp0ZXN0 XzEuaWQgPSAoU0VMRUNUIDEgV0hFUkUgaGp0ZXN0XzIuaWQgPSAxKQorICAgIEFORCAoU0VMRUNU IGhqdGVzdF8xLmIgKiA1KSA9IChTRUxFQ1QgaGp0ZXN0XzIuYyo1KQorICAgIEFORCAoU0VMRUNU IGhqdGVzdF8xLmIgKiA1KSA8IDUwCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzIuYyAqIDUpIDwg NTUKKyAgICBBTkQgaGp0ZXN0XzEuYSA8PiBoanRlc3RfMi5iOworCitFWFBMQUlOIChDT1NUUyBP RkYsIFZFUkJPU0UpCitTRUxFQ1QgaGp0ZXN0XzEuYSBhMSwgaGp0ZXN0XzIuYSBhMixoanRlc3Rf MS50YWJsZW9pZDo6cmVnY2xhc3MgdDEsIGhqdGVzdF8yLnRhYmxlb2lkOjpyZWdjbGFzcyB0Mgor RlJPTSBoanRlc3RfMiwgaGp0ZXN0XzEKK1dIRVJFCisgICAgaGp0ZXN0XzEuaWQgPSAoU0VMRUNU IDEgV0hFUkUgaGp0ZXN0XzIuaWQgPSAxKQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1 KSA9IChTRUxFQ1QgaGp0ZXN0XzIuYyo1KQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1 KSA8IDUwCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzIuYyAqIDUpIDwgNTUKKyAgICBBTkQgaGp0 ZXN0XzEuYSA8PiBoanRlc3RfMi5iOworCitTRUxFQ1QgaGp0ZXN0XzEuYSBhMSwgaGp0ZXN0XzIu YSBhMixoanRlc3RfMS50YWJsZW9pZDo6cmVnY2xhc3MgdDEsIGhqdGVzdF8yLnRhYmxlb2lkOjpy ZWdjbGFzcyB0MgorRlJPTSBoanRlc3RfMiwgaGp0ZXN0XzEKK1dIRVJFCisgICAgaGp0ZXN0XzEu aWQgPSAoU0VMRUNUIDEgV0hFUkUgaGp0ZXN0XzIuaWQgPSAxKQorICAgIEFORCAoU0VMRUNUIGhq dGVzdF8xLmIgKiA1KSA9IChTRUxFQ1QgaGp0ZXN0XzIuYyo1KQorICAgIEFORCAoU0VMRUNUIGhq dGVzdF8xLmIgKiA1KSA8IDUwCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzIuYyAqIDUpIDwgNTUK KyAgICBBTkQgaGp0ZXN0XzEuYSA8PiBoanRlc3RfMi5iOworCitST0xMQkFDSzsKKworLS0gVmVy aWZ5IHRoYXQgd2UgYmVoYXZlIHNhbmVseSB3aGVuIHRoZSBpbm5lciBoYXNoIGtleXMgY29udGFp biBwYXJhbWV0ZXJzCistLSAodGhhdCBpcywgb3V0ZXIgb3IgbGF0ZXJhbCByZWZlcmVuY2VzKS4g IFRoaXMgc2l0dWF0aW9uIGhhcyB0byBkZWZlYXQKKy0tIHJlLXVzZSBvZiB0aGUgaW5uZXIgaGFz aCB0YWJsZSBhY3Jvc3MgcmVzY2Fucy4KK2JlZ2luOworc2V0IGxvY2FsIGVuYWJsZV9oYXNoam9p biA9IG9uOworCitleHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3QgaTgucTIsIHNzLiogZnJvbQor aW50OF90YmwgaTgsCitsYXRlcmFsIChzZWxlY3QgdDEuZml2ZXRob3VzLCBpNC5mMSBmcm9tIHRl bmsxIHQxIGpvaW4gaW50NF90YmwgaTQKKyAgICAgICAgIG9uIHQxLmZpdmV0aG91cyA9IGk0LmYx K2k4LnEyIG9yZGVyIGJ5IDEsMikgc3M7CisKK3NlbGVjdCBpOC5xMiwgc3MuKiBmcm9tCitpbnQ4 X3RibCBpOCwKK2xhdGVyYWwgKHNlbGVjdCB0MS5maXZldGhvdXMsIGk0LmYxIGZyb20gdGVuazEg dDEgam9pbiBpbnQ0X3RibCBpNAorICAgICAgICAgb24gdDEuZml2ZXRob3VzID0gaTQuZjEraTgu cTIgb3JkZXIgYnkgMSwyKSBzczsKKworcm9sbGJhY2s7Ci0tIAoyLjM5LjUgKEFwcGxlIEdpdC0x NTQpCgo= --0000000000008f3231064910d10a Content-Type: application/octet-stream; name="0001-Add-transparent-compression-for-temporary-files.patch" Content-Disposition: attachment; filename="0001-Add-transparent-compression-for-temporary-files.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkr3svww0 RnJvbSAyZTVlNmJkYzNkMjhlMzQyZjUyNWZiMGYxY2Y3NjcxOWY3YTMyMTNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBGaWxpcCBKYW51cyA8ZmphbnVzQHJlZGhhdC5jb20+CkRhdGU6 IFRodSwgMzEgSnVsIDIwMjUgMTQ6MDI6MTYgKzAyMDAKU3ViamVjdDogW1BBVENIIDEvMl0gQWRk IHRyYW5zcGFyZW50IGNvbXByZXNzaW9uIGZvciB0ZW1wb3JhcnkgZmlsZXMKClRoaXMgY29tbWl0 IGltcGxlbWVudHMgdHJhbnNwYXJlbnQgY29tcHJlc3Npb24gZm9yIHRlbXBvcmFyeSBmaWxlcyBp biBQb3N0Z3JlU1FMLApzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIGhhc2ggam9pbiBvcGVyYXRp b25zIHRoYXQgc3BpbGwgdG8gZGlzay4KCkZlYXR1cmVzOgotIFN1cHBvcnQgZm9yIExaNCBhbmQg UEdMWiBjb21wcmVzc2lvbiBhbGdvcml0aG1zCi0gR1VDIHBhcmFtZXRlciAndGVtcF9maWxlX2Nv bXByZXNzaW9uJyB0byBjb250cm9sIGNvbXByZXNzaW9uCi0gVHJhbnNwYXJlbnQgY29tcHJlc3Np b24vZGVjb21wcmVzc2lvbiBpbiBCdWZGaWxlIGxheWVyCi0gU2hhcmVkIGNvbXByZXNzaW9uIGJ1 ZmZlciB0byBtaW5pbWl6ZSBtZW1vcnkgYWxsb2NhdGlvbgotIEludGVncmF0aW9uOiBIYXNoIGpv aW4gdXNlcyBCdWZGaWxlQ3JlYXRlQ29tcHJlc3NUZW1wKCksIHR1cGxlc3RvcmUKICAgICB1c2Vz IGNvbXByZXNzaW9uIHdoZW4gRVhFQ19GTEFHX0JBQ0tXQVJEIGlzIG5vdCByZXF1aXJlZAoKVGhl IGNvbXByZXNzaW9uIGlzIGFwcGxpZWQgYXV0b21hdGljYWxseSB3aGVuIHRlbXBfZmlsZV9jb21w cmVzc2lvbiBpcyBlbmFibGVkLAp3aXRoIG5vIGNoYW5nZXMgcmVxdWlyZWQgdG8gY2FsbGluZyBj b2RlLiBPbmx5IGhhc2ggam9pbnMgdXNlIGNvbXByZXNzaW9uCmN1cnJlbnRseSwgd2l0aCBzZWVr aW5nIGxpbWl0ZWQgdG8gcmV3aW5kaW5nIHRvIHN0YXJ0LgoKQ29uZmlndXJhdGlvbiBvcHRpb25z OgotIHRlbXBfZmlsZV9jb21wcmVzc2lvbiA9ICdubycgKGRlZmF1bHQpCi0gdGVtcF9maWxlX2Nv bXByZXNzaW9uID0gJ3BnbHonCi0gdGVtcF9maWxlX2NvbXByZXNzaW9uID0gJ2x6NCcgKHJlcXVp cmVzIC0td2l0aC1sejQpCgpUaGlzIHBhdGNoIGFsc28gYWRkcyBkb2N1bWVudGF0aW9uIGZvciBn dWMtdGVtcC1maWxlLWNvbXByZXNzaW9uIChjb250cmlidXRlZCBieSBMYWtzaG1pIDxsYWtzaG1p Z2NkYWNAZ21haWwuY29tPikuCi0tLQogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAg ICAgICAgICAgICAgIHwgIDIwICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5j ICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL2J1ZmZpbGUuYyAg ICAgICAgICAgIHwgMzc0ICsrKysrKysrKysrKysrKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9ndWNfcGFyYW1ldGVycy5kYXQgICAgIHwgICA4ICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjX3RhYmxlcy5jICAgICAgICAgICB8ICAxMCArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3Bv c3RncmVzcWwuY29uZi5zYW1wbGUgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVw bGVzdG9yZS5jICAgICAgICAgICB8ICAgOCArLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZmaWxl LmggICAgICAgICAgICAgICAgIHwgIDEwICsKIDggZmlsZXMgY2hhbmdlZCwgNDE0IGluc2VydGlv bnMoKyksIDIzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcu c2dtbCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAppbmRleCA1NTYwYjk1ZWU2MC4uMTc5ZTA5 YTg2MDQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwKQEAgLTE5NTUsNiArMTk1NSwyNiBAQCBpbmNsdWRlX2RpciAnY29u Zi5kJwogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICA8dmFy bGlzdGVudHJ5IGlkPSJndWMtdGVtcC1maWxlLWNvbXByZXNzaW9uIj4KKyAgICAgPHRlcm0+PHZh cm5hbWU+dGVtcF9maWxlX2NvbXByZXNzaW9uPC92YXJuYW1lPiAoPHR5cGU+ZW51bTwvdHlwZT4p PC90ZXJtPgorICAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgRW5hYmxlcyB0cmFu c3BhcmVudCBjb21wcmVzc2lvbiBvZiB0ZW1wb3JhcnkgZmlsZXMgdXNlZCBieSBxdWVyeSBleGVj dXRpb24uCisgICAgICBTdXBwb3J0ZWQgdmFsdWVzIGFyZSA8bGl0ZXJhbD5ubzwvbGl0ZXJhbD4s IDxsaXRlcmFsPmx6NDwvbGl0ZXJhbD4sIGFuZAorICAgICA8bGl0ZXJhbD5wZ2x6PC9saXRlcmFs Pi4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICBUaGUgZWZmZWN0aXZlbmVzcyBv ZiB0ZW1wb3JhcnkgZmlsZSBjb21wcmVzc2lvbiBkZXBlbmRzIG9uIHRoZSB3b3JrbG9hZC4KKyAg ICAgRm9yIGV4YW1wbGUsIHRlbXBvcmFyeSBmaWxlcyBjcmVhdGVkIGJ5IGhhc2ggam9pbiBzcGls bHMgdXNlIGZpeGVkLXNpemUKKyAgICAgY2h1bmtzLCBzbyBvbi1kaXNrIGZpbGUgc2l6ZXMgbWF5 IG5vdCB2aXNpYmx5IHNocmluayBldmVuIHdoZW4gY29tcHJlc3Npb24KKyAgICAgaXMgZW5hYmxl ZC4gU3RhdGlzdGljcyBzdWNoIGFzIDxsaXRlcmFsPnRlbXBfYnl0ZXM8L2xpdGVyYWw+IHJlcG9y dCBsb2dpY2FsCisgICAgIGJ5dGVzIHdyaXR0ZW4gYmVmb3JlIGNvbXByZXNzaW9uLgorICAgICA8 L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCisKICAgICAg PHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWhhc2gtbWVtLW11bHRpcGxpZXIiIHhyZWZsYWJlbD0iaGFz aF9tZW1fbXVsdGlwbGllciI+CiAgICAgICA8dGVybT48dmFybmFtZT5oYXNoX21lbV9tdWx0aXBs aWVyPC92YXJuYW1lPiAoPHR5cGU+ZmxvYXRpbmcgcG9pbnQ8L3R5cGU+KQogICAgICAgPGluZGV4 dGVybT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKaW5kZXggMTE0NjIwYTgxMzcuLmMy ZjFiMjY1OGUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaGpvaW4u YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaGpvaW4uYwpAQCAtMTQzNCw3ICsx NDM0LDcgQEAgRXhlY0hhc2hKb2luU2F2ZVR1cGxlKE1pbmltYWxUdXBsZSB0dXBsZSwgdWludDMy IGhhc2h2YWx1ZSwKIAl7CiAJCU1lbW9yeUNvbnRleHQgb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3 aXRjaFRvKGhhc2h0YWJsZS0+c3BpbGxDeHQpOwogCi0JCWZpbGUgPSBCdWZGaWxlQ3JlYXRlVGVt cChmYWxzZSk7CisJCWZpbGUgPSBCdWZGaWxlQ3JlYXRlQ29tcHJlc3NUZW1wKGZhbHNlKTsKIAkJ KmZpbGVwdHIgPSBmaWxlOwogCiAJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL2J1ZmZpbGUuYyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvZmlsZS9idWZmaWxlLmMKaW5kZXggZGRmM2E0MTBkNmYuLmU2ZDJhZjBmODE1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvYnVmZmlsZS5jCisrKyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvZmlsZS9idWZmaWxlLmMKQEAgLTUzLDYgKzUzLDEyIEBACiAjaW5jbHVk ZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAi dXRpbHMvcmVzb3duZXIuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUg ImNvbW1vbi9wZ19semNvbXByZXNzLmgiCisKKyNpZmRlZiBVU0VfTFo0CisjaW5jbHVkZSA8bHo0 Lmg+CisjZW5kaWYKIAogLyoKICAqIFdlIGJyZWFrIEJ1ZkZpbGVzIGludG8gZ2lnYWJ5dGUtc2l6 ZWQgc2VnbWVudHMsIHJlZ2FyZGxlc3Mgb2YgUkVMU0VHX1NJWkUuCkBAIC02Miw2ICs2OCwxMSBA QAogI2RlZmluZSBNQVhfUEhZU0lDQUxfRklMRVNJWkUJMHg0MDAwMDAwMAogI2RlZmluZSBCVUZG SUxFX1NFR19TSVpFCQkoTUFYX1BIWVNJQ0FMX0ZJTEVTSVpFIC8gQkxDS1NaKQogCisvKgorICog T3B0aW9uYWwgdHJhbnNwYXJlbnQgY29tcHJlc3Npb24gb2YgdGVtcG9yYXJ5IGZpbGVzLiBEaXNh YmxlZCBieSBkZWZhdWx0LgorICovCitpbnQJCQl0ZW1wX2ZpbGVfY29tcHJlc3Npb24gPSBURU1Q X05PTkVfQ09NUFJFU1NJT047CisKIC8qCiAgKiBUaGlzIGRhdGEgc3RydWN0dXJlIHJlcHJlc2Vu dHMgYSBidWZmZXJlZCBmaWxlIHRoYXQgY29uc2lzdHMgb2Ygb25lIG9yCiAgKiBtb3JlIHBoeXNp Y2FsIGZpbGVzIChlYWNoIGFjY2Vzc2VkIHRocm91Z2ggYSB2aXJ0dWFsIGZpbGUgZGVzY3JpcHRv cgpAQCAtMTAxLDggKzExMiwyOCBAQCBzdHJ1Y3QgQnVmRmlsZQogCSAqIHdhc3RpbmcgcGVyLWZp bGUgYWxpZ25tZW50IHBhZGRpbmcgd2hlbiBzb21lIHVzZXJzIGNyZWF0ZSBtYW55IGZpbGVzLgog CSAqLwogCVBHQWxpZ25lZEJsb2NrIGJ1ZmZlcjsKKworCWludAkJCWNvbXByZXNzOwkJLyogZW5h YmxlZCBjb21wcmVzc2lvbiBmb3IgdGhlIGZpbGUgKi8KKwljaGFyCSAgICpjQnVmZmVyOwkJLyog Y29tcHJlc3Npb24gYnVmZmVyICovCiB9OwogCisvKgorICogSGVhZGVyIHdyaXR0ZW4gcmlnaHQg YmVmb3JlIGVhY2ggY2h1bmsgb2YgZGF0YSB3aXRoIGNvbXByZXNzaW9uIGVuYWJsZWQuCisgKiBU aGUgJ2xlbicgaXMgdGhlIGxlbmd0aCBvZiB0aGUgZGF0YSBidWZmZXIgd3JpdHRlbiByaWdodCBh ZnRlciB0aGUgaGVhZGVyLAorICogYW5kICdyYXdfbGVuJyBpcyB0aGUgbGVuZ3RoIG9mIHVuY29t cHJlc3NlZCBkYXRhLiBJZiB0aGUgZGF0YSBlbmRzIHVwIG5vdAorICogYmVpbmcgY29tcHJlc3Nl ZCAoZS5nLiB3aGVuIHBnbHogZG9lcyBub3QgcmVhY2ggdGhlIGNvbXByZXNzaW9uIHJhdGlvKSwK KyAqIHRoZSByYXdfbGVuIGlzIHNldCB0byAtMSBhbmQgdGhlIGxlbiBpcyB0aGUgcmF3ICh1bmNv bXByZXNzZWQpIGxlbmd0aC4KKyAqCisgKiBUbyBtYWtlIHRoaW5ncyBzaW1wbGVyLCB3ZSB3cml0 ZSB0aGVzZSBoZWFkZXJzIGV2ZW4gZm9yIG1ldGhvZHMgdGhhdCBkbworICogbm90IGZhaWwgKG9y IHJhdGhlciB3aGVuIHRoZXkgZmFpbCwgaXQncyBhIHByb3BlciBlcnJvcikuIFRoZSBzcGFjZSBm b3IKKyAqIGFuIGV4dHJhIGludGVnZXIgc2VlbXMgbmVnbGlnaWJsZS4KKyAqLwordHlwZWRlZiBz dHJ1Y3QgQ29tcHJlc3NIZWFkZXIKK3sKKwlpbnQJCQlsZW47CQkJLyogZGF0YSBsZW5ndGggKGNv bXByZXNzZWQsIGV4Y2x1ZGluZyBoZWFkZXIpICovCisJaW50CQkJcmF3X2xlbjsJCS8qIHJhdyBs ZW5ndGggKC0xOiBub3QgY29tcHJlc3NlZCkgKi8KK30JCQlDb21wcmVzc0hlYWRlcjsKKwogc3Rh dGljIEJ1ZkZpbGUgKm1ha2VCdWZGaWxlQ29tbW9uKGludCBuZmlsZXMpOwogc3RhdGljIEJ1ZkZp bGUgKm1ha2VCdWZGaWxlKEZpbGUgZmlyc3RmaWxlKTsKIHN0YXRpYyB2b2lkIGV4dGVuZEJ1ZkZp bGUoQnVmRmlsZSAqZmlsZSk7CkBAIC0xMjcsNiArMTU4LDggQEAgbWFrZUJ1ZkZpbGVDb21tb24o aW50IG5maWxlcykKIAlmaWxlLT5jdXJPZmZzZXQgPSAwOwogCWZpbGUtPnBvcyA9IDA7CiAJZmls ZS0+bmJ5dGVzID0gMDsKKwlmaWxlLT5jb21wcmVzcyA9IFRFTVBfTk9ORV9DT01QUkVTU0lPTjsK KwlmaWxlLT5jQnVmZmVyID0gTlVMTDsKIAogCXJldHVybiBmaWxlOwogfQpAQCAtMjE1LDYgKzI0 OCw2MyBAQCBCdWZGaWxlQ3JlYXRlVGVtcChib29sIGludGVyWGFjdCkKIAlyZXR1cm4gZmlsZTsK IH0KIAorLyoKKyAqIEJ1ZkZpbGVDcmVhdGVDb21wcmVzc1RlbXAKKyAqCQlDcmVhdGUgYSB0ZW1w b3JhcnkgZmlsZSB3aXRoIHRyYW5zcGFyZW50IGNvbXByZXNzaW9uLgorICoKKyAqIFRoZSB0ZW1w b3JhcnkgZmlsZXMgd2lsbCB1c2UgY29tcHJlc3Npb24sIGRlcGVuZGluZyBvbiB0aGUgY3VycmVu dCB2YWx1ZSBvZgorICogdGVtcF9maWxlX2NvbXByZXNzaW9uIEdVQy4KKyAqCisgKiBOb3RlOiBD b21wcmVzc2VkIGZpbGVzIGRvIG5vdCBzdXBwb3J0IHJhbmRvbSBhY2Nlc3MuIEEgc2VlayBvcGVy YXRpb24gb3RoZXIKKyAqIHRoYW4gc2VlayB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBidWZmaWxl IHdpbGwgY29ycnVwdCBkYXRhLgorICoKKyAqIE5vdGU6IFRoZSBjb21wcmVzc2lvbiBhbGdvcml0 aG0gaXMgZGV0ZXJtaW5lZCBieSB0ZW1wX2ZpbGVfY29tcHJlc3Npb24gR1VDLgorICogSWYgc2V0 IHRvICJub25lIiAoVEVNUF9OT05FX0NPTVBSRVNTSU9OKSwgdGhlIGZpbGUgaXMgbm90IGNvbXBy ZXNzZWQuCisgKgorICovCitCdWZGaWxlICoKK0J1ZkZpbGVDcmVhdGVDb21wcmVzc1RlbXAoYm9v bCBpbnRlclhhY3QpCit7CisJQnVmRmlsZSAgICAqZmlsZSA9IEJ1ZkZpbGVDcmVhdGVUZW1wKGlu dGVyWGFjdCk7CisKKwlpZiAodGVtcF9maWxlX2NvbXByZXNzaW9uICE9IFRFTVBfTk9ORV9DT01Q UkVTU0lPTikKKwl7CisJCWludAkJCXNpemUgPSAwOworCisJCXN3aXRjaCAodGVtcF9maWxlX2Nv bXByZXNzaW9uKQorCQl7CisJCQljYXNlIFRFTVBfTFo0X0NPTVBSRVNTSU9OOgorI2lmZGVmIFVT RV9MWjQKKwkJCQlzaXplID0gTFo0X2NvbXByZXNzQm91bmQoQkxDS1NaKSArIHNpemVvZihDb21w cmVzc0hlYWRlcik7CisjZWxzZQorCQkJCWVsb2coRVJST1IsICJMWjQgaXMgbm90IHN1cHBvcnRl ZCBieSB0aGlzIGJ1aWxkIik7CisjZW5kaWYKKwkJCQlicmVhazsKKwkJCWNhc2UgVEVNUF9QR0xa X0NPTVBSRVNTSU9OOgorCQkJCXNpemUgPSBwZ2x6X21heGltdW1fY29tcHJlc3NlZF9zaXplKEJM Q0tTWiwgQkxDS1NaKSArIHNpemVvZihDb21wcmVzc0hlYWRlcik7CisJCQkJYnJlYWs7CisJCQlj YXNlIFRFTVBfTk9ORV9DT01QUkVTU0lPTjoKKwkJCQkvKiBubyBjb21wcmVzc2lvbiwgbm90aGlu ZyB0byBkbyAqLworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAidW5r bm93biBjb21wcmVzc2lvbiBtZXRob2Q6ICVkIiwgdGVtcF9maWxlX2NvbXByZXNzaW9uKTsKKwkJ CQlicmVhazsKKwkJfQorCisJCWlmIChzaXplID4gMCkKKwkJeworCQkJZmlsZS0+Y29tcHJlc3Mg PSB0ZW1wX2ZpbGVfY29tcHJlc3Npb247CisJCQlmaWxlLT5jQnVmZmVyID0gcGFsbG9jKHNpemUp OworCQl9CisJfQorCisJLyogY29tcHJlc3Npb24gd2l0aCBidWZmZXIsIG9yIG5vIGNvbXByZXNz aW9uIGFuZCBubyBidWZmZXIgKi8KKwlBc3NlcnQoKCFmaWxlLT5jb21wcmVzcyAmJiBmaWxlLT5j QnVmZmVyID09IE5VTEwpIHx8CisJCSAgIChmaWxlLT5jb21wcmVzcyAmJiBmaWxlLT5jQnVmZmVy ICE9IE5VTEwpKTsKKworCXJldHVybiBmaWxlOworfQorCiAvKgogICogQnVpbGQgdGhlIG5hbWUg Zm9yIGEgZ2l2ZW4gc2VnbWVudCBvZiBhIGdpdmVuIEJ1ZkZpbGUuCiAgKi8KQEAgLTQxNSw5ICs1 MDUsMTUgQEAgQnVmRmlsZUNsb3NlKEJ1ZkZpbGUgKmZpbGUpCiAKIAkvKiBmbHVzaCBhbnkgdW53 cml0dGVuIGRhdGEgKi8KIAlCdWZGaWxlRmx1c2goZmlsZSk7CisKIAkvKiBjbG9zZSBhbmQgZGVs ZXRlIHRoZSB1bmRlcmx5aW5nIGZpbGUocykgKi8KIAlmb3IgKGkgPSAwOyBpIDwgZmlsZS0+bnVt RmlsZXM7IGkrKykKIAkJRmlsZUNsb3NlKGZpbGUtPmZpbGVzW2ldKTsKKworCS8qIHJlbGVhc2Ug Y29tcHJlc3Npb24gYnVmZmVyIGlmIGFsbG9jYXRlZCAqLworCWlmIChmaWxlLT5jQnVmZmVyKQor CQlwZnJlZShmaWxlLT5jQnVmZmVyKTsKKwogCS8qIHJlbGVhc2UgdGhlIGJ1ZmZlciBzcGFjZSAq LwogCXBmcmVlKGZpbGUtPmZpbGVzKTsKIAlwZnJlZShmaWxlKTsKQEAgLTQ1NCwyMSArNTUwLDE0 NSBAQCBCdWZGaWxlTG9hZEJ1ZmZlcihCdWZGaWxlICpmaWxlKQogCWVsc2UKIAkJSU5TVFJfVElN RV9TRVRfWkVSTyhpb19zdGFydCk7CiAKLQkvKgotCSAqIFJlYWQgd2hhdGV2ZXIgd2UgY2FuIGdl dCwgdXAgdG8gYSBmdWxsIGJ1ZmZlcmxvYWQuCi0JICovCi0JZmlsZS0+bmJ5dGVzID0gRmlsZVJl YWQodGhpc2ZpbGUsCi0JCQkJCQkJZmlsZS0+YnVmZmVyLmRhdGEsCi0JCQkJCQkJc2l6ZW9mKGZp bGUtPmJ1ZmZlci5kYXRhKSwKLQkJCQkJCQlmaWxlLT5jdXJPZmZzZXQsCi0JCQkJCQkJV0FJVF9F VkVOVF9CVUZGSUxFX1JFQUQpOwotCWlmIChmaWxlLT5uYnl0ZXMgPCAwKQorCWlmIChmaWxlLT5j b21wcmVzcyA9PSBURU1QX05PTkVfQ09NUFJFU1NJT04pCiAJewotCQlmaWxlLT5uYnl0ZXMgPSAw OwotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAotCQkJ CSBlcnJtc2coImNvdWxkIG5vdCByZWFkIGZpbGUgXCIlc1wiOiAlbSIsCi0JCQkJCQlGaWxlUGF0 aE5hbWUodGhpc2ZpbGUpKSkpOworCQkvKgorCQkgKiBSZWFkIHdoYXRldmVyIHdlIGNhbiBnZXQs IHVwIHRvIGEgZnVsbCBidWZmZXJsb2FkLgorCQkgKi8KKwkJZmlsZS0+bmJ5dGVzID0gRmlsZVJl YWQodGhpc2ZpbGUsCisJCQkJCQkJCWZpbGUtPmJ1ZmZlci5kYXRhLAorCQkJCQkJCQlzaXplb2Yo ZmlsZS0+YnVmZmVyKSwKKwkJCQkJCQkJZmlsZS0+Y3VyT2Zmc2V0LAorCQkJCQkJCQlXQUlUX0VW RU5UX0JVRkZJTEVfUkVBRCk7CisJCWlmIChmaWxlLT5uYnl0ZXMgPCAwKQorCQl7CisJCQlmaWxl LT5uYnl0ZXMgPSAwOworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGVfZm9yX2ZpbGVf YWNjZXNzKCksCisJCQkJCSBlcnJtc2coImNvdWxkIG5vdCByZWFkIGZpbGUgXCIlc1wiOiAlbSIs CisJCQkJCQkJRmlsZVBhdGhOYW1lKHRoaXNmaWxlKSkpKTsKKwkJfQorCX0KKwllbHNlCisJewor CQkvKgorCQkgKiBSZWFkIGFuZCBkZWNvbXByZXNzIGRhdGEgZnJvbSBhIHRlbXBvcmFyeSBmaWxl LiBXZSBmaXJzdCByZWFkIHRoZQorCQkgKiBoZWFkZXIgd2l0aCBjb21wcmVzc2VkL3JhdyBsZW5n dGhzLCBhbmQgdGhlbiB0aGUgY29tcHJlc3NlZCBkYXRhLgorCQkgKi8KKwkJaW50CQkJbnJlYWQ7 CisJCUNvbXByZXNzSGVhZGVyIGhlYWRlcjsKKworCQlucmVhZCA9IEZpbGVSZWFkKHRoaXNmaWxl LAorCQkJCQkJICZoZWFkZXIsCisJCQkJCQkgc2l6ZW9mKGhlYWRlciksCisJCQkJCQkgZmlsZS0+ Y3VyT2Zmc2V0LAorCQkJCQkJIFdBSVRfRVZFTlRfQlVGRklMRV9SRUFEKTsKKworCQkvKiBkaWQg d2UgcmVhZCB0aGUgbGVuZ3RoIG9mIHRoZSBuZXh0IGJ1ZmZlcj8gKi8KKwkJaWYgKG5yZWFkID09 IDApCisJCXsKKwkJCS8qIGVvZiwgbm90aGluZyB0byBkbyAqLworCQl9CisJCWVsc2UgaWYgKG5y ZWFkICE9IHNpemVvZihoZWFkZXIpKQorCQl7CisJCQkvKiB1bmV4cGVjdGVkIG51bWJlciBvZiBi eXRlcywgYWxzbyBjb3ZlcnMgKG5yZWFkIDwgMCkgKi8KKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAorCQkJCQkgZXJybXNnKCJjb3VsZCBub3QgcmVh ZCBmaWxlIFwiJXNcIjogJW0iLAorCQkJCQkJCUZpbGVQYXRoTmFtZSh0aGlzZmlsZSkpKSk7CisJ CX0KKwkJZWxzZQorCQl7CisJCQkvKiByZWFkIGxlbmd0aCBvZiBjb21wcmVzc2VkIGRhdGEsIHJl YWQgKGFuZCBkZWNvbXByZXNzKSBkYXRhICovCisJCQljaGFyCSAgICpidWZmID0gZmlsZS0+Y0J1 ZmZlcjsKKworCQkJQXNzZXJ0KGZpbGUtPmNCdWZmZXIgIT0gTlVMTCk7CisKKwkJCS8qIGFkdmFu Y2UgcGFzdCB0aGUgbGVuZ3RoIGZpZWxkICovCisJCQlmaWxlLT5jdXJPZmZzZXQgKz0gc2l6ZW9m KGhlYWRlcik7CisKKwkJCS8qCisJCQkgKiByYXdfbGVuPT0tMSBtZWFucyB0aGUgZGF0YSB3YXMg bm90IGNvbXByZXNzZWQgYWZ0ZXIgYWxsLCB3aGljaAorCQkJICogY2FuIGhhcHBlbiBlLmcuIGZv ciBub24tY29tcHJlc3NpYmxlIGRhdGEgd2l0aCBwZ2x6LiBJbiB0aGF0CisJCQkgKiBjYXNlIGp1 c3QgY29weSB0aGUgZGF0YSBpbiBwbGFjZS4gT3RoZXJ3aXNlIGRvIHRoZQorCQkJICogZGVjb21w cmVzc2lvbi4KKwkJCSAqCisJCQkgKiBYWFggTWF5YmUgd2Ugc2hvdWxkIGp1c3QgZG8gdGhlIEZp bGVSZWFkIGZpcnN0LCBhbmQgdGhlbiBlaXRoZXIKKwkJCSAqIGRlY29tcHJlc3Mgb3IgbWVtY3B5 KCkgZm9yIHJhd19sZW49LTEuIFRoYXQnZCBiZSBhbiBleHRyYQorCQkJICogbWVtY3B5LCBidXQg aXQnZCBtYWtlIHRoZSBjb2RlIHNpbXBsZXIgKHRoaXMgd2F5cyB3ZSBkbyB0aGUKKwkJCSAqIGVy cm9yIGNoZWNrcyB0d2ljZSwgZm9yIGVhY2ggYnJhbmNoKS4KKwkJCSAqLworCQkJaWYgKGhlYWRl ci5yYXdfbGVuID09IC0xKQorCQkJeworCQkJCW5yZWFkID0gRmlsZVJlYWQodGhpc2ZpbGUsCisJ CQkJCQkJCSBmaWxlLT5idWZmZXIuZGF0YSwKKwkJCQkJCQkJIGhlYWRlci5sZW4sCisJCQkJCQkJ CSBmaWxlLT5jdXJPZmZzZXQsCisJCQkJCQkJCSBXQUlUX0VWRU5UX0JVRkZJTEVfUkVBRCk7CisJ CQkJaWYgKG5yZWFkICE9IGhlYWRlci5sZW4pCisJCQkJeworCQkJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAorCQkJCQkJCSBlcnJtc2coImNvdWxk IG5vdCByZWFkIGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJCQkJCQlGaWxlUGF0aE5hbWUodGhpc2Zp bGUpKSkpOworCQkJCX0KKworCQkJCWZpbGUtPm5ieXRlcyA9IG5yZWFkOworCQkJCWZpbGUtPmN1 ck9mZnNldCArPSBucmVhZDsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFJl YWQgY29tcHJlc3NlZCBkYXRhIGludG8gdGhlIHNlcGFyYXRlIGJ1ZmZlciwgYW5kIHRoZW4KKwkJ CQkgKiBkZWNvbXByZXNzIGludG8gdGhlIHRhcmdldCBmaWxlIGJ1ZmZlci4KKwkJCQkgKi8KKwkJ CQlucmVhZCA9IEZpbGVSZWFkKHRoaXNmaWxlLAorCQkJCQkJCQkgYnVmZiwKKwkJCQkJCQkJIGhl YWRlci5sZW4sCisJCQkJCQkJCSBmaWxlLT5jdXJPZmZzZXQsCisJCQkJCQkJCSBXQUlUX0VWRU5U X0JVRkZJTEVfUkVBRCk7CisJCQkJaWYgKG5yZWFkICE9IGhlYWRlci5sZW4pCisJCQkJeworCQkJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAorCQkJ CQkJCSBlcnJtc2coImNvdWxkIG5vdCByZWFkIGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJCQkJCQlG aWxlUGF0aE5hbWUodGhpc2ZpbGUpKSkpOworCQkJCX0KKworCQkJCXN3aXRjaCAoZmlsZS0+Y29t cHJlc3MpCisJCQkJeworCQkJCQljYXNlIFRFTVBfTFo0X0NPTVBSRVNTSU9OOgorI2lmZGVmIFVT RV9MWjQKKwkJCQkJCWZpbGUtPm5ieXRlcyA9IExaNF9kZWNvbXByZXNzX3NhZmUoYnVmZiwKKwkJ CQkJCQkJCQkJCQkJICAgZmlsZS0+YnVmZmVyLmRhdGEsIGhlYWRlci5sZW4sCisJCQkJCQkJCQkJ CQkJCSAgIHNpemVvZihmaWxlLT5idWZmZXIpKTsKKyNlbHNlCisJCQkJCQllbG9nKEVSUk9SLCAi TFo0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBidWlsZCIpOworI2VuZGlmCisJCQkJCQlicmVh azsKKworCQkJCQljYXNlIFRFTVBfUEdMWl9DT01QUkVTU0lPTjoKKwkJCQkJCWZpbGUtPm5ieXRl cyA9IHBnbHpfZGVjb21wcmVzcyhidWZmLCBoZWFkZXIubGVuLAorCQkJCQkJCQkJCQkJCSAgIGZp bGUtPmJ1ZmZlci5kYXRhLCBoZWFkZXIucmF3X2xlbiwgZmFsc2UpOworCQkJCQkJYnJlYWs7CisJ CQkJCWNhc2UgVEVNUF9OT05FX0NPTVBSRVNTSU9OOgorCQkJCQkJLyogbm8gY29tcHJlc3Npb24s IG5vdGhpbmcgdG8gZG8gKi8KKwkJCQkJCWJyZWFrOworCQkJCQlkZWZhdWx0OgorCQkJCQkJZWxv ZyhFUlJPUiwgInVua25vd24gY29tcHJlc3Npb24gbWV0aG9kOiAlZCIsIGZpbGUtPmNvbXByZXNz KTsKKwkJCQkJCWJyZWFrOworCQkJCX0KKwkJCQlmaWxlLT5jdXJPZmZzZXQgKz0gbnJlYWQ7CisK KwkJCQlpZiAoZmlsZS0+bmJ5dGVzIDwgMCkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQko ZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKKwkJCQkJCQkgZXJybXNnX2ludGVybmFs KCJjb21wcmVzc2VkIGRhdGEgaXMgY29ycnVwdCIpKSk7CisKKwkJCQkvKiBzaG91bGQgaGF2ZSBn b3QgdGhlIGV4cGVjdGVkIGxlbmd0aCAqLworCQkJCUFzc2VydChmaWxlLT5uYnl0ZXMgPT0gaGVh ZGVyLnJhd19sZW4pOworCQkJfQorCQl9CiAJfQogCiAJaWYgKHRyYWNrX2lvX3RpbWluZykKQEAg LTQ5NCw4ICs3MTQsMTAxIEBAIHN0YXRpYyB2b2lkCiBCdWZGaWxlRHVtcEJ1ZmZlcihCdWZGaWxl ICpmaWxlKQogewogCWludDY0CQl3cG9zID0gMDsKLQlpbnQ2NAkJYnl0ZXN0b3dyaXRlOworCWlu dDY0CQlieXRlc3Rvd3JpdGUgPSAwOwogCUZpbGUJCXRoaXNmaWxlOworCWNoYXIJICAgKkRhdGFU b1dyaXRlID0gZmlsZS0+YnVmZmVyLmRhdGE7CisJaW50CQkJbmJ5dGVzT3JpZ2luYWwgPSBmaWxl LT5uYnl0ZXM7CisKKwkvKgorCSAqIENvbXByZXNzIHRoZSBkYXRhIGlmIHJlcXVlc3RlZCBmb3Ig dGhpcyB0ZW1wb3JhcnkgZmlsZSAoYW5kIGlmIGVuYWJsZWQKKwkgKiBieSB0aGUgdGVtcF9maWxl X2NvbXByZXNzaW9uIEdVQykuCisJICoKKwkgKiBUaGUgY29tcHJlc3NlZCBkYXRhIGlzIHdyaXR0 ZW4gdG8gdGhlIG9uZSBzaGFyZWQgY29tcHJlc3Npb24gYnVmZmVyLgorCSAqIFRoZXJlJ3Mgb25s eSBhIHNpbmdsZSBjb21wcmVzc2lvbiBvcGVyYXRpb24gYXQgYW55IGdpdmVuIHRpbWUsIHNvIG9u ZQorCSAqIGJ1ZmZlciBpcyBlbm91Z2guCisJICoKKwkgKiBUaGVuIHdlIHNpbXBseSBwb2ludCB0 aGUgIkRhdGFUb1dyaXRlIiBidWZmZXIgYXQgdGhlIGNvbXByZXNzZWQgYnVmZmVyLgorCSAqLwor CWlmIChmaWxlLT5jb21wcmVzcyAhPSBURU1QX05PTkVfQ09NUFJFU1NJT04pCisJeworCQljaGFy CSAgICpjRGF0YTsKKwkJaW50CQkJY1NpemUgPSAwOworCQlDb21wcmVzc0hlYWRlciBoZWFkZXI7 CisKKwkJQXNzZXJ0KGZpbGUtPmNCdWZmZXIgIT0gTlVMTCk7CisJCWNEYXRhID0gZmlsZS0+Y0J1 ZmZlcjsKKworCQkvKiBpbml0aWFsaXplIHRoZSBoZWFkZXIgZm9yIGNvbXByZXNzaW9uICovCisJ CWhlYWRlci5sZW4gPSAtMTsKKwkJaGVhZGVyLnJhd19sZW4gPSBuYnl0ZXNPcmlnaW5hbDsKKwor CQlzd2l0Y2ggKGZpbGUtPmNvbXByZXNzKQorCQl7CisJCWNhc2UgVEVNUF9MWjRfQ09NUFJFU1NJ T046CisJCQl7CisjaWZkZWYgVVNFX0xaNAorCQkJCWludAkJCWNCdWZmZXJTaXplID0gTFo0X2Nv bXByZXNzQm91bmQoZmlsZS0+bmJ5dGVzKTsKKworCQkJCS8qCisJCQkJICogWFhYIFdlIG1pZ2h0 IHVzZSBsejQgc3RyZWFtIGNvbXByZXNzaW9uIGhlcmUuIERlcGVuZGluZworCQkJCSAqIG9uIHRo ZSBkYXRhLCB0aGF0IG1pZ2h0IGltcHJvdmUgdGhlIGNvbXByZXNzaW9uIHJhdGlvLgorCQkJCSAq IFRoZSBsZW5ndGggaXMgc3RvcmVkIGF0IHRoZSBiZWdpbm5pbmcsIHdlJ2xsIGZpbGwgaXQgaW4K KwkJCQkgKiBhdCB0aGUgZW5kLgorCQkJCSAqLworCQkJCWNTaXplID0gTFo0X2NvbXByZXNzX2Rl ZmF1bHQoZmlsZS0+YnVmZmVyLmRhdGEsCisJCQkJCQkJCQkJCSBjRGF0YSArIHNpemVvZihDb21w cmVzc0hlYWRlciksCisJCQkJCQkJCQkJCSBmaWxlLT5uYnl0ZXMsIGNCdWZmZXJTaXplKTsKKwkJ CQlpZiAoY1NpemUgPT0gMCkKKwkJCQl7CisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCisJCQkJCQkJIGVycm1zZ19pbnRlcm5hbCgi Y29tcHJlc3Npb24gZmFpbGVkLCBjb21wcmVzc2VkIHNpemUgJWQsIG9yaWdpbmFsIHNpemUgJWQi LAorCQkJCQkJCQkJCQkgY1NpemUsIG5ieXRlc09yaWdpbmFsKSkpOworCQkJCX0KKyNlbHNlCisJ CQkJZWxvZyhFUlJPUiwgIkxaNCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnVpbGQiKTsKKyNl bmRpZgorCQkJCWJyZWFrOworCQkJfQorCQkJY2FzZSBURU1QX1BHTFpfQ09NUFJFU1NJT046CisJ CQkJY1NpemUgPSBwZ2x6X2NvbXByZXNzKGZpbGUtPmJ1ZmZlci5kYXRhLCBmaWxlLT5uYnl0ZXMs CisJCQkJCQkJCQkgIGNEYXRhICsgc2l6ZW9mKENvbXByZXNzSGVhZGVyKSwKKwkJCQkJCQkJCSAg UEdMWl9zdHJhdGVneV9hbHdheXMpOworCisJCQkJLyoKKwkJCQkgKiBwZ2x6IHJldHVybnMgLTEg Zm9yIG5vbi1jb21wcmVzc2libGUgZGF0YS4gSW4gdGhhdCBjYXNlCisJCQkJICoganVzdCBjb3B5 IHRoZSByYXcgZGF0YSBpbnRvIHRoZSBvdXRwdXQgYnVmZmVyLgorCQkJCSAqLworCQkJCWlmIChj U2l6ZSA9PSAtMSkKKwkJCQl7CisJCQkJCW1lbWNweShjRGF0YSArIHNpemVvZihDb21wcmVzc0hl YWRlciksIGZpbGUtPmJ1ZmZlci5kYXRhLAorCQkJCQkJICAgaGVhZGVyLnJhd19sZW4pOworCisJ CQkJCWNTaXplID0gaGVhZGVyLnJhd19sZW47CisJCQkJCWhlYWRlci5yYXdfbGVuID0gLTE7CisJ CQkJfQorCQkJCWJyZWFrOworCQkJY2FzZSBURU1QX05PTkVfQ09NUFJFU1NJT046CisJCQkJLyog bm8gY29tcHJlc3Npb24sIG5vdGhpbmcgdG8gZG8gKi8KKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6 CisJCQkJZWxvZyhFUlJPUiwgInVua25vd24gY29tcHJlc3Npb24gbWV0aG9kOiAlZCIsIGZpbGUt PmNvbXByZXNzKTsKKwkJCQlicmVhazsKKwkJfQorCisJCUFzc2VydChjU2l6ZSAhPSAtMSk7CisJ CWhlYWRlci5sZW4gPSBjU2l6ZTsKKworCQkvKgorCQkgKiBXcml0ZSB0aGUgaGVhZGVyIHdpdGgg Y29tcHJlc3NlZCBsZW5ndGggYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUKKwkJICogYnVmZmVyLiBX ZSBzdG9yZSBib3RoIHRoZSBjb21wcmVzc2VkIGFuZCByYXcgbGVuZ3RocywgYW5kIHVzZQorCQkg KiByYXdfbGVuPS0xIHdoZW4gdGhlIGRhdGEgd2FzIG5vdCBjb21wcmVzc2VkIGFmdGVyIGFsbC4K KwkJICovCisJCW1lbWNweShjRGF0YSwgJmhlYWRlciwgc2l6ZW9mKENvbXByZXNzSGVhZGVyKSk7 CisJCWZpbGUtPm5ieXRlcyA9IGhlYWRlci5sZW4gKyBzaXplb2YoQ29tcHJlc3NIZWFkZXIpOwor CisJCURhdGFUb1dyaXRlID0gY0RhdGE7CisJfQogCiAJLyoKIAkgKiBVbmxpa2UgQnVmRmlsZUxv YWRCdWZmZXIsIHdlIG11c3QgZHVtcCB0aGUgd2hvbGUgYnVmZmVyIGV2ZW4gaWYgaXQKQEAgLTUz NSw3ICs4NDgsNyBAQCBCdWZGaWxlRHVtcEJ1ZmZlcihCdWZGaWxlICpmaWxlKQogCQkJSU5TVFJf VElNRV9TRVRfWkVSTyhpb19zdGFydCk7CiAKIAkJYnl0ZXN0b3dyaXRlID0gRmlsZVdyaXRlKHRo aXNmaWxlLAotCQkJCQkJCQkgZmlsZS0+YnVmZmVyLmRhdGEgKyB3cG9zLAorCQkJCQkJCQkgRGF0 YVRvV3JpdGUgKyB3cG9zLAogCQkJCQkJCQkgYnl0ZXN0b3dyaXRlLAogCQkJCQkJCQkgZmlsZS0+ Y3VyT2Zmc2V0LAogCQkJCQkJCQkgV0FJVF9FVkVOVF9CVUZGSUxFX1dSSVRFKTsKQEAgLTU2NCw3 ICs4NzcsMTcgQEAgQnVmRmlsZUR1bXBCdWZmZXIoQnVmRmlsZSAqZmlsZSkKIAkgKiBsb2dpY2Fs IGZpbGUgcG9zaXRpb24sIGllLCBvcmlnaW5hbCB2YWx1ZSArIHBvcywgaW4gY2FzZSB0aGF0IGlz IGxlc3MKIAkgKiAoYXMgY291bGQgaGFwcGVuIGR1ZSB0byBhIHNtYWxsIGJhY2t3YXJkcyBzZWVr IGluIGEgZGlydHkgYnVmZmVyISkKIAkgKi8KLQlmaWxlLT5jdXJPZmZzZXQgLT0gKGZpbGUtPm5i eXRlcyAtIGZpbGUtPnBvcyk7CisJaWYgKCFmaWxlLT5jb21wcmVzcykKKwkJZmlsZS0+Y3VyT2Zm c2V0IC09IChmaWxlLT5uYnl0ZXMgLSBmaWxlLT5wb3MpOworCWVsc2UgaWYgKG5ieXRlc09yaWdp bmFsIC0gZmlsZS0+cG9zICE9IDApCisJeworCQkvKgorCQkgKiBjdXJPZmZzZXQgbXVzdCBiZSBj b3JyZWN0ZWQgYWxzbyBpZiBjb21wcmVzc2lvbiBpcyBlbmFibGVkLCBuYnl0ZXMKKwkJICogd2Fz IGNoYW5nZWQgYnkgY29tcHJlc3Npb24gYnV0IHdlIGhhdmUgdG8gdXNlIHRoZSBvcmlnaW5hbCB2 YWx1ZSBvZgorCQkgKiBuYnl0ZXMKKwkJICovCisJCWZpbGUtPmN1ck9mZnNldCAtPSBieXRlc3Rv d3JpdGU7CisJfQogCWlmIChmaWxlLT5jdXJPZmZzZXQgPCAwKQkvKiBoYW5kbGUgcG9zc2libGUg c2VnbWVudCBjcm9zc2luZyAqLwogCXsKIAkJZmlsZS0+Y3VyRmlsZS0tOwpAQCAtNjAyLDggKzky NSwxNCBAQCBCdWZGaWxlUmVhZENvbW1vbihCdWZGaWxlICpmaWxlLCB2b2lkICpwdHIsIHNpemVf dCBzaXplLCBib29sIGV4YWN0LCBib29sIGVvZk9LKQogCXsKIAkJaWYgKGZpbGUtPnBvcyA+PSBm aWxlLT5uYnl0ZXMpCiAJCXsKLQkJCS8qIFRyeSB0byBsb2FkIG1vcmUgZGF0YSBpbnRvIGJ1ZmZl ci4gKi8KLQkJCWZpbGUtPmN1ck9mZnNldCArPSBmaWxlLT5wb3M7CisJCQkvKgorCQkJICogVHJ5 IHRvIGxvYWQgbW9yZSBkYXRhIGludG8gYnVmZmVyLgorCQkJICoKKwkJCSAqIGN1ck9mZnNldCBp cyBtb3ZlZCB3aXRoaW4gQnVmRmlsZUxvYWRCdWZmZXIgYmVjYXVzZSBzdG9yZWQgZGF0YQorCQkJ ICogc2l6ZSBkaWZmZXJzIGZyb20gbG9hZGVkLyBkZWNvbXByZXNzZWQgc2l6ZQorCQkJICovCisJ CQlpZiAoIWZpbGUtPmNvbXByZXNzKQorCQkJCWZpbGUtPmN1ck9mZnNldCArPSBmaWxlLT5wb3M7 CiAJCQlmaWxlLT5wb3MgPSAwOwogCQkJZmlsZS0+bmJ5dGVzID0gMDsKIAkJCUJ1ZkZpbGVMb2Fk QnVmZmVyKGZpbGUpOwpAQCAtNzQyLDYgKzEwNzEsMTAgQEAgQnVmRmlsZVNlZWsoQnVmRmlsZSAq ZmlsZSwgaW50IGZpbGVubywgcGdvZmZfdCBvZmZzZXQsIGludCB3aGVuY2UpCiAJaW50CQkJbmV3 RmlsZTsKIAlwZ29mZl90CQluZXdPZmZzZXQ7CiAKKwkvKiBDb21wcmVzc2VkIGZpbGVzIG9ubHkg c3VwcG9ydCBzZWVrIHRvIHRoZSBiZWdpbm5pbmcgKi8KKwlBc3NlcnQoZmlsZS0+Y29tcHJlc3Mg PT0gVEVNUF9OT05FX0NPTVBSRVNTSU9OIHx8CisJCSAgICh3aGVuY2UgPT0gU0VFS19TRVQgJiYg ZmlsZW5vID09IDAgJiYgb2Zmc2V0ID09IDApKTsKKwogCXN3aXRjaCAod2hlbmNlKQogCXsKIAkJ Y2FzZSBTRUVLX1NFVDoKQEAgLTgzMSw2ICsxMTY0LDkgQEAgQnVmRmlsZVNlZWsoQnVmRmlsZSAq ZmlsZSwgaW50IGZpbGVubywgcGdvZmZfdCBvZmZzZXQsIGludCB3aGVuY2UpCiB2b2lkCiBCdWZG aWxlVGVsbChCdWZGaWxlICpmaWxlLCBpbnQgKmZpbGVubywgcGdvZmZfdCAqb2Zmc2V0KQogewor CS8qIFRlbGwgZG9lc24ndCB3b3JrIGNvcnJlY3RseSBmb3IgY29tcHJlc3NlZCBmaWxlcyAqLwor CUFzc2VydChmaWxlLT5jb21wcmVzcyA9PSBURU1QX05PTkVfQ09NUFJFU1NJT04pOworCiAJKmZp bGVubyA9IGZpbGUtPmN1ckZpbGU7CiAJKm9mZnNldCA9IGZpbGUtPmN1ck9mZnNldCArIGZpbGUt PnBvczsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRl cnMuZGF0IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKaW5kZXgg ZjAyNjBlNmU0MTIuLjU1YmYyMDc2MzdmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9t aXNjL2d1Y19wYXJhbWV0ZXJzLmRhdAorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19w YXJhbWV0ZXJzLmRhdApAQCAtMjkzMSw2ICsyOTMxLDE0IEBACiAgIGNoZWNrX2hvb2sgPT4gJ2No ZWNrX3RlbXBfYnVmZmVycycsCiB9LAogCit7IG5hbWUgPT4gJ3RlbXBfZmlsZV9jb21wcmVzc2lv bicsIHR5cGUgPT4gJ2VudW0nLCBjb250ZXh0ID0+ICdQR0NfVVNFUlNFVCcsIGdyb3VwID0+ICdD TElFTlRfQ09OTl9TVEFURU1FTlQnLAorICBzaG9ydF9kZXNjID0+ICdTZXRzIHRoZSBkZWZhdWx0 IGNvbXByZXNzaW9uIG1ldGhvZCBmb3IgdGVtcG9yYXJ5IGZpbGVzLicsCisgIGxvbmdfZGVzYyA9 PiAnQ29tcHJlc3Npb24gaXMgYXBwbGllZCB0cmFuc3BhcmVudGx5IHRvIHRlbXBvcmFyeSBmaWxl cyB1c2VkIGJ5IGhhc2ggam9pbnMuIE5vdGUgdGhhdCB0aGUgbG9nZ2VkIGZpbGUgc2l6ZXMgbWF5 IGFwcGVhciB0aGUgc2FtZSByZWdhcmRsZXNzIG9mIGNvbXByZXNzaW9uIG1ldGhvZCBkdWUgdG8g Zml4ZWQtc2l6ZSBjaHVua2luZzsgYWN0dWFsIGRpc2sgc3BhY2Ugc2F2aW5ncyBkZXBlbmQgb24g ZGF0YSBjb21wcmVzc2liaWxpdHkuJywKKyAgdmFyaWFibGUgPT4gJ3RlbXBfZmlsZV9jb21wcmVz c2lvbicsCisgIGJvb3RfdmFsID0+ICdURU1QX05PTkVfQ09NUFJFU1NJT04nLAorICBvcHRpb25z ID0+ICd0ZW1wX2ZpbGVfY29tcHJlc3Npb25fb3B0aW9ucycsCit9LAorCiB7IG5hbWUgPT4gJ3Rl bXBfZmlsZV9saW1pdCcsIHR5cGUgPT4gJ2ludCcsIGNvbnRleHQgPT4gJ1BHQ19TVVNFVCcsIGdy b3VwID0+ICdSRVNPVVJDRVNfRElTSycsCiAgIHNob3J0X2Rlc2MgPT4gJ0xpbWl0cyB0aGUgdG90 YWwgc2l6ZSBvZiBhbGwgdGVtcG9yYXJ5IGZpbGVzIHVzZWQgYnkgZWFjaCBwcm9jZXNzLicsCiAg IGxvbmdfZGVzYyA9PiAnLTEgbWVhbnMgbm8gbGltaXQuJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNf dGFibGVzLmMKaW5kZXggMTNjNTY5ZDg3OTAuLjk0NWUwMDkyMGNkIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9t aXNjL2d1Y190YWJsZXMuYwpAQCAtNzgsNiArNzgsNyBAQAogI2luY2x1ZGUgInJlcGxpY2F0aW9u L3N5bmNyZXAuaCIKICNpbmNsdWRlICJzdG9yYWdlL2Fpby5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv YnVmbWdyLmgiCisjaW5jbHVkZSAic3RvcmFnZS9idWZmaWxlLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9idWZwYWdlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9jb3B5ZGlyLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9pb193b3JrZXIuaCIKQEAgLTQ2NCw2ICs0NjUsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBjb25maWdfZW51bV9lbnRyeSBkZWZhdWx0X3RvYXN0X2NvbXByZXNzaW9uX29wdGlvbnNbXSA9 IHsKIAl7TlVMTCwgMCwgZmFsc2V9CiB9OwogCitzdGF0aWMgY29uc3Qgc3RydWN0IGNvbmZpZ19l bnVtX2VudHJ5IHRlbXBfZmlsZV9jb21wcmVzc2lvbl9vcHRpb25zW10gPSB7CisJeyJubyIsIFRF TVBfTk9ORV9DT01QUkVTU0lPTiwgZmFsc2V9LAorCXsicGdseiIsIFRFTVBfUEdMWl9DT01QUkVT U0lPTiwgZmFsc2V9LAorI2lmZGVmICBVU0VfTFo0CisJeyJsejQiLCBURU1QX0xaNF9DT01QUkVT U0lPTiwgZmFsc2V9LAorI2VuZGlmCisJe05VTEwsIDAsIGZhbHNlfQorfTsKKwogc3RhdGljIGNv bnN0IHN0cnVjdCBjb25maWdfZW51bV9lbnRyeSB3YWxfY29tcHJlc3Npb25fb3B0aW9uc1tdID0g ewogCXsicGdseiIsIFdBTF9DT01QUkVTU0lPTl9QR0xaLCBmYWxzZX0sCiAjaWZkZWYgVVNFX0xa NApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2Ft cGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4 IGM0ZjkyZmNkYWM4Li5kYjIzNjk2ZDI0MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv cG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtMTgwLDggKzE4MCw5IEBACiAKICNmaWxlX2NvcHlf bWV0aG9kID0gY29weSAgICAgICAgICAgICAgICAjIGNvcHksIGNsb25lIChpZiBzdXBwb3J0ZWQg YnkgT1MpCiAKLSNtYXhfbm90aWZ5X3F1ZXVlX3BhZ2VzID0gMTA0ODU3NiAgICAgICAjIGxpbWl0 cyB0aGUgbnVtYmVyIG9mIFNMUlUgcGFnZXMgYWxsb2NhdGVkCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyBmb3IgTk9USUZZIC8gTElTVEVOIHF1ZXVlCisjbWF4X25v dGlmeV9xdWV1ZV9wYWdlcyA9IDEwNDg1NzYJIyBsaW1pdHMgdGhlIG51bWJlciBvZiBTTFJVIHBh Z2VzIGFsbG9jYXRlZAorCQkJCQkjIGZvciBOT1RJRlkgLyBMSVNURU4gcXVldWUKKyN0ZW1wX2Zp bGVfY29tcHJlc3Npb24gPSAnbm8nCQkjIGVuYWJsZXMgdGVtcG9yYXJ5IGZpbGVzIGNvbXByZXNz aW9uCiAKICMgLSBLZXJuZWwgUmVzb3VyY2VzIC0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvc29ydC90dXBsZXN0b3JlLmMgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc3Rv cmUuYwppbmRleCBlNTdmYTViY2E2NC4uNzY2OTVlNGM5ZTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL3NvcnQvdHVwbGVzdG9yZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQv dHVwbGVzdG9yZS5jCkBAIC04NjAsNyArODYwLDEzIEBAIHR1cGxlc3RvcmVfcHV0dHVwbGVfY29t bW9uKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHZvaWQgKnR1cGxlKQogCQkJICovCiAJCQlvbGRj eHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oc3RhdGUtPmNvbnRleHQtPnBhcmVudCk7CiAKLQkJ CXN0YXRlLT5teWZpbGUgPSBCdWZGaWxlQ3JlYXRlVGVtcChzdGF0ZS0+aW50ZXJYYWN0KTsKKwkJ CS8qCisJCQkgKiBJZiByZXF1ZXN0ZWQgcmFuZG9tIGFjY2VzcywgY2FuJ3QgY29tcHJlc3MgdGhl IHRlbXAgZmlsZS4KKwkJCSAqLworCQkJaWYgKChzdGF0ZS0+ZWZsYWdzICYgRVhFQ19GTEFHX0JB Q0tXQVJEKSAhPSAwKQorCQkJCXN0YXRlLT5teWZpbGUgPSBCdWZGaWxlQ3JlYXRlVGVtcChzdGF0 ZS0+aW50ZXJYYWN0KTsKKwkJCWVsc2UKKwkJCQlzdGF0ZS0+bXlmaWxlID0gQnVmRmlsZUNyZWF0 ZUNvbXByZXNzVGVtcChzdGF0ZS0+aW50ZXJYYWN0KTsKIAogCQkJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGN4dCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmZmlsZS5o IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZmaWxlLmgKaW5kZXggNjc1NGYzNzgzNmMuLjJlNTJj YTc0YmRlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1ZmZpbGUuaAorKysgYi9z cmMvaW5jbHVkZS9zdG9yYWdlL2J1ZmZpbGUuaApAQCAtMzIsMTEgKzMyLDIxIEBACiAKIHR5cGVk ZWYgc3RydWN0IEJ1ZkZpbGUgQnVmRmlsZTsKIAordHlwZWRlZiBlbnVtCit7CisJVEVNUF9OT05F X0NPTVBSRVNTSU9OLAorCVRFTVBfUEdMWl9DT01QUkVTU0lPTiwKKwlURU1QX0xaNF9DT01QUkVT U0lPTgorfSBUZW1wQ29tcHJlc3Npb247CisKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQgdGVtcF9m aWxlX2NvbXByZXNzaW9uOworCiAvKgogICogcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIGJ1 ZmZpbGUuYwogICovCiAKIGV4dGVybiBCdWZGaWxlICpCdWZGaWxlQ3JlYXRlVGVtcChib29sIGlu dGVyWGFjdCk7CitleHRlcm4gQnVmRmlsZSAqQnVmRmlsZUNyZWF0ZUNvbXByZXNzVGVtcChib29s IGludGVyWGFjdCk7CiBleHRlcm4gdm9pZCBCdWZGaWxlQ2xvc2UoQnVmRmlsZSAqZmlsZSk7CiBw Z19ub2Rpc2NhcmQgZXh0ZXJuIHNpemVfdCBCdWZGaWxlUmVhZChCdWZGaWxlICpmaWxlLCB2b2lk ICpwdHIsIHNpemVfdCBzaXplKTsKIGV4dGVybiB2b2lkIEJ1ZkZpbGVSZWFkRXhhY3QoQnVmRmls ZSAqZmlsZSwgdm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSk7Ci0tIAoyLjM5LjUgKEFwcGxlIEdpdC0x NTQpCgo= --0000000000008f3231064910d10a--