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.94.2) (envelope-from ) id 1u8R04-003x0z-Di for pgsql-hackers@arkaria.postgresql.org; Fri, 25 Apr 2025 21:54:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1u8R02-00FhoM-A5 for pgsql-hackers@arkaria.postgresql.org; Fri, 25 Apr 2025 21:54:23 +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.94.2) (envelope-from ) id 1u8R01-00FhoD-Ly for pgsql-hackers@lists.postgresql.org; Fri, 25 Apr 2025 21:54:22 +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.96) (envelope-from ) id 1u8Qzx-0024iF-2P for pgsql-hackers@postgresql.org; Fri, 25 Apr 2025 21:54:22 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1745618056; 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=dJsBDkIE0ZhVkHGUW/KJ6eS7S8BYQl2Gf50Chrl17L4=; b=C4kuO43todqLiD4yeFS+WAs8EAJiKG6t5k7DWMz+f6TuWavxfxyk/ERNADG69vjp0HXLn0 cckzsHXh5u+jZLDr764DxQ63OeM1nAXEYo8jmOAcpsvYL6BzY0Fo/X51XTW8MOQLl4y0wI CxEYqm+wwKBVzwoGepMRhpI5yOuqRzA= Received: from mail-ej1-f70.google.com (mail-ej1-f70.google.com [209.85.218.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-32-9eMP-BhSMYST9ZypDXTXTQ-1; Fri, 25 Apr 2025 17:54:13 -0400 X-MC-Unique: 9eMP-BhSMYST9ZypDXTXTQ-1 X-Mimecast-MFC-AGG-ID: 9eMP-BhSMYST9ZypDXTXTQ_1745618052 Received: by mail-ej1-f70.google.com with SMTP id a640c23a62f3a-ac6ce5fe9bfso274192366b.1 for ; Fri, 25 Apr 2025 14:54:13 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745618052; x=1746222852; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=sANDYCESAQ5iiB8lZPPUgrvCUR4129x4GIshSR3JXU0=; b=bxgwJadm8WjWuHuj1++Z+ajszkXgCxRNWZfWqW8c/skjbd5/EvfwFKVAkyaSW/zL6y o1ULg68CyXYZ7iDbgQpNVFgRu+NP/aruXIaRhm9VvYSNDnYX7v0MyghMsz/b2oNd7b4n TisbW+buLetav8f/y0LiUq06rIteRhppcd8mWTSvNT93lLIIkEbZlg2XjjcpC2wwie3d gMGXhQr55yCECPJbyUaeQNGh3LcSRC/GCVvkqZxKdxvh85N6IM7CL9WJRwk5pZHmlpZw SJG2za3gGhmoXJk2kKz+DPLAgbjF89iZ6rnsipolZdsVsK5vXtbYwFUIEr1pkdAIsPaj ir5w== X-Forwarded-Encrypted: i=1; AJvYcCW4KP5EqVEL28LtOmNhCcMceNO6hfiBvECtLl2qO7I6mzApmmevKlv18ZL3pRzi5/ZTOgeRm6+O1hOmIUum@postgresql.org X-Gm-Message-State: AOJu0Yyqbeblc29tkir3GmLKVCg0GCKDQ0HXBcfnegR9W0CcanUnWjaH p385ZDWIq9FYlcSwc3sq9JMJ3L17JYxHf6xxtFqswrT4zKF+997fCfyuInAVdMMfMt+McNUPMfR CDpRUVKln61c23K5v5jpxNMPfQ6P9de31R3AIaULXvdYVWHwRaCGeoSEd/AwrYpRdOHRuz3nfHO PK6fXqTq+TvEbRcf0Poo1wQ5RwIapPIy89CptS X-Gm-Gg: ASbGnctgFLDVRzz04IuTrqRg5OV5X1paM8LFDqHEUNHHk88mKrGy+U9fgWC/dFkJyOB OFv3V1x1ERH4ttM3D8i6bUB6ubvRmXhLkaBUXj6or2OyhM8A593iZlpWQBuil5QGQxNyk X-Received: by 2002:a17:907:3da1:b0:ac3:8896:416f with SMTP id a640c23a62f3a-ace73a4313emr307114566b.15.1745618052228; Fri, 25 Apr 2025 14:54:12 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFCABC//QMfMRiEzikyW/+yJTUQAN7dYkJLV3eY6X2pVnPxGRKJsB1mgHiGy/oyCoTmMLwKllT4HFuDHmBgWss= X-Received: by 2002:a17:907:3da1:b0:ac3:8896:416f with SMTP id a640c23a62f3a-ace73a4313emr307113166b.15.1745618051821; Fri, 25 Apr 2025 14:54:11 -0700 (PDT) MIME-Version: 1.0 References: <29c87c10-fdbc-4d0f-b0f4-15e14dd36bce@vondra.me> <7bcc0420-d457-4af5-a459-a4e5d929a665@vondra.me> In-Reply-To: From: Filip Janus Date: Fri, 25 Apr 2025 23:54:00 +0200 X-Gm-Features: ATxdqUHSmzn7TwrHUT_Rak5vcD7fBC0wAmVkPelKuOw9QoBo7PMxz5yQrS0P7vM Message-ID: Subject: Re: Proposal: Adding compression of temporary files To: Dmitry Dolgov <9erthalion6@gmail.com> Cc: Tomas Vondra , Alexander Korotkov , pgsql-hackers@postgresql.org X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 5PcyhH2MZR4lgK_t3FAk3Jy4l9uuJ7i7mMBo22uyf7M_1745618052 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="000000000000e546140633a15f9f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e546140633a15f9f Content-Type: multipart/alternative; boundary="000000000000e546110633a15f9d" --000000000000e546110633a15f9d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable The latest rebase. -Filip- =C3=BAt 22. 4. 2025 v 9:17 odes=C3=ADlatel Filip Janus = napsal: > Since the patch was prepared months ago, it needs to be rebased. > > -Filip- > > > ne 13. 4. 2025 v 21:53 odes=C3=ADlatel Dmitry Dolgov <9erthalion6@gmail.c= om> > napsal: > >> > On Fri, Mar 28, 2025 at 09:23:13AM GMT, Filip Janus wrote: >> > > + else >> > > + if (nbytesOriginal - file->pos !=3D 0) >> > > + /* curOffset must be corrected also if compression is >> > > + * enabled, nbytes was changed by compression but we >> > > + * have to use the original value of nbytes >> > > + */ >> > > + file->curOffset-=3Dbytestowrite; >> > > >> > > It's not something introduced by the compression patch - the first >> part >> > > is what we used to do before. But I find it a bit confusing - isn't = it >> > > mixing the correction of "logical file position" adjustment we did >> > > before, and also the adjustment possibly needed due to compression? >> > > >> > > In fact, isn't it going to fail if the code gets multiple loops in >> > > >> > > while (wpos < file->nbytes) >> > > { >> > > ... >> > > } >> > > >> > > because bytestowrite will be the value from the last loop? I haven't >> > > tried, but I guess writing wide tuples (more than 8k) might fail. >> > > >> > >> > I will definitely test it with larger tuples than 8K. >> > >> > Maybe I don't understand it correctly, >> > the adjustment is performed in the case that file->nbytes and file->po= s >> > differ. >> > So it must persist also if we are working with the compressed data, bu= t >> the >> > problem is that data stored and compressed on disk has different sizes >> than >> > data incoming uncompressed ones, so what should be the correction valu= e. >> > By debugging, I realized that the correction should correspond to the >> size >> > of >> > bytestowrite from the last iteration of the loop. >> >> I agree, this looks strange. If the idea is to set curOffset to its >> original value + pos, and the original value was advanced multiple times >> by bytestowrite, it seems incorrect to adjust it by bytestowrite, it >> seems incorrect to adjust it only once. From what I see current tests do >> not exercise a case where the while will get multiple loops, so it looks >> fine. >> >> At the same time maybe I'm missing something, but how exactly such test >> for 8k tuples and multiple loops in the while block should look like? >> E.g. when I force a hash join on a table with a single wide text column, >> the minimal tuple that is getting written to the temporary file still >> has rather small length, I assume due to toasting. Is there some other >> way to achieve that? >> >> --000000000000e546110633a15f9d Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
The latest rebase.

=C2=A0 =C2=A0 -Filip-
<= /div>


=C3=BAt 22. 4. 2025 v=C2= =A09:17 odes=C3=ADlatel Filip Janus <fjanus@redhat.com> napsal:
Since the patch was prepared mont= hs ago, it needs to be rebased.

=C2=A0 =C2=A0 -Filip-


ne 13. 4. 2025= v=C2=A021:53 odes=C3=ADlatel Dmitry Dolgov <9erthalion6@gmail.com> napsal:
> On Fri, Mar 28, = 2025 at 09:23:13AM GMT, Filip Janus wrote:
> > +=C2=A0 =C2=A0 else
> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 if (nbytesOriginal - file->pos != =3D 0)
> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* curOffset must be c= orrected also if compression is
> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* enabled, nbyte= s was changed by compression but we
> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* have to use th= e original value of nbytes
> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*/
> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 file->curOffset-=3D= bytestowrite;
> >
> > It's not something introduced by the compression patch - the = first part
> > is what we used to do before. But I find it a bit confusing - isn= 't it
> > mixing the correction of "logical file position" adjust= ment we did
> > before, and also the adjustment possibly needed due to compressio= n?
> >
> > In fact, isn't it going to fail if the code gets multiple loo= ps in
> >
> >=C2=A0 =C2=A0 =C2=A0while (wpos < file->nbytes)
> >=C2=A0 =C2=A0 =C2=A0{
> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 ...
> >=C2=A0 =C2=A0 =C2=A0}
> >
> > because bytestowrite will be the value from the last loop? I have= n't
> > tried, but I guess writing wide tuples (more than 8k) might fail.=
> >
>
> I will definitely test it with larger tuples than 8K.
>
> Maybe I don't understand it correctly,
> the adjustment is performed in the case that file->nbytes and file-= >pos
> differ.
> So it must persist also if we are working with the compressed data, bu= t the
> problem is that data stored and compressed on disk has different sizes= than
> data incoming uncompressed ones, so what should be the correction valu= e.
> By debugging, I realized that the correction should correspond to the = size
> of
> bytestowrite from the last iteration of the loop.

I agree, this looks strange. If the idea is to set curOffset to its
original value + pos, and the original value was advanced multiple times by bytestowrite, it seems incorrect to adjust it by bytestowrite, it
seems incorrect to adjust it only once. From what I see current tests do not exercise a case where the while will get multiple loops, so it looks fine.

At the same time maybe I'm missing something, but how exactly such test=
for 8k tuples and multiple loops in the while block should look like?
E.g. when I force a hash join on a table with a single wide text column, the minimal tuple that is getting written to the temporary file still
has rather small length, I assume due to toasting. Is there some other
way to achieve that?

--000000000000e546110633a15f9d-- --000000000000e546140633a15f9f Content-Type: application/octet-stream; name="0002-Add-test-for-temporary-files-compression-this-commit.patch" Content-Disposition: attachment; filename="0002-Add-test-for-temporary-files-compression-this-commit.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m9xbwid91 RnJvbSBmNWI4MzUwNGFkOTI0YzY2MzhjZTRmYmYyYzI2ZDdhMDU4ZDc2YzQ1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBGaWxpcCBKYW51cyA8ZmphbnVzQHJlZGhhdC5jb20+CkRhdGU6 IFdlZCwgMTYgQXByIDIwMjUgMTI6MDg6MjggKzAyMDAKU3ViamVjdDogW1BBVENIIDIvMl0gQWRk IHRlc3QgZm9yIHRlbXBvcmFyeSBmaWxlcyBjb21wcmVzc2lvbiwgdGhpcyBjb21taXQKIGFkZHMg dGVzdHMgZm9yIGx6NCBhbmQgcGdsei4KCi0tLQogc3JjL3Rlc3QvcmVncmVzcy9HTlVtYWtlZmls ZSAgICAgICAgICAgICAgICAgfCAgICA0ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9p bl9oYXNoX2x6NC5vdXQgIHwgMTE2NiArKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvam9pbl9oYXNoX3BnbHoub3V0IHwgMTE2NiArKysrKysrKysrKysrKysrKysK IHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAgIHwgICAgNCArLQog c3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbl9oYXNoX2x6NC5zcWwgICAgICAgfCAgNjI2ICsrKysr KysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW5faGFzaF9wZ2x6LnNxbCAgICAgIHwgIDYy NiArKysrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDM1OTEgaW5zZXJ0aW9ucygrKSwgMSBkZWxl dGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9p bl9oYXNoX2x6NC5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2pvaW5faGFzaF9wZ2x6Lm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2pvaW5faGFzaF9sejQuc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVn cmVzcy9zcWwvam9pbl9oYXNoX3BnbHouc3FsCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9HTlVtYWtlZmlsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvR05VbWFrZWZpbGUKaW5kZXggZWYyYmRk ZjQyY2EuLjAwNzU3YTQ0Y2E2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL0dOVW1ha2Vm aWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvR05VbWFrZWZpbGUKQEAgLTk0LDYgKzk0LDEwIEBA IGluc3RhbGxkaXJzLXRlc3RzOiBpbnN0YWxsZGlycwogUkVHUkVTU19PUFRTID0gLS1kbHBhdGg9 LiAtLW1heC1jb25jdXJyZW50LXRlc3RzPTIwIFwKIAkkKEVYVFJBX1JFR1JFU1NfT1BUUykKIAor aWZlcSAoJCh3aXRoX2x6NCkseWVzKQorb3ZlcnJpZGUgRVhUUkFfVEVTVFMgOj0gam9pbl9oYXNo X2x6NCAkKEVYVFJBX1RFU1RTKQorZW5kaWYKKwogY2hlY2s6IGFsbAogCSQocGdfcmVncmVzc19j aGVjaykgJChSRUdSRVNTX09QVFMpIC0tc2NoZWR1bGU9JChzcmNkaXIpL3BhcmFsbGVsX3NjaGVk dWxlICQoTUFYQ09OTk9QVCkgJChFWFRSQV9URVNUUykKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9qb2luX2hhc2hfbHo0Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvam9pbl9oYXNoX2x6NC5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjk2NmE1Y2Q4ZjU1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9qb2luX2hhc2hfbHo0Lm91dApAQCAtMCwwICsxLDExNjYgQEAKKy0tCistLSBleGVy Y2lzZXMgZm9yIHRoZSBoYXNoIGpvaW4gY29kZQorLS0KK2JlZ2luOworc2V0IGxvY2FsIG1pbl9w YXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOworc2V0IGxvY2FsIHBhcmFsbGVsX3NldHVwX2Nv c3QgPSAwOworc2V0IGxvY2FsIGVuYWJsZV9oYXNoam9pbiA9IG9uOworc2V0IGxvY2FsIHRlbXBf ZmlsZV9jb21wcmVzc2lvbiA9ICdsejQnOworLS0gRXh0cmFjdCBidWNrZXQgYW5kIGJhdGNoIGNv dW50cyBmcm9tIGFuIGV4cGxhaW4gYW5hbHl6ZSBwbGFuLiAgSW4KKy0tIGdlbmVyYWwgd2UgY2Fu J3QgbWFrZSBhc3NlcnRpb25zIGFib3V0IGhvdyBtYW55IGJhdGNoZXMgKG9yCistLSBidWNrZXRz KSB3aWxsIGJlIHJlcXVpcmVkIGJlY2F1c2UgaXQgY2FuIHZhcnksIGJ1dCB3ZSBjYW4gaW4gc29t ZQorLS0gc3BlY2lhbCBjYXNlcyBhbmQgd2UgY2FuIGNoZWNrIGZvciBncm93dGguCitjcmVhdGUg b3IgcmVwbGFjZSBmdW5jdGlvbiBmaW5kX2hhc2gobm9kZSBqc29uKQorcmV0dXJucyBqc29uIGxh bmd1YWdlIHBscGdzcWwKK2FzCiskJAorZGVjbGFyZQorICB4IGpzb247CisgIGNoaWxkIGpzb247 CitiZWdpbgorICBpZiBub2RlLT4+J05vZGUgVHlwZScgPSAnSGFzaCcgdGhlbgorICAgIHJldHVy biBub2RlOworICBlbHNlCisgICAgZm9yIGNoaWxkIGluIHNlbGVjdCBqc29uX2FycmF5X2VsZW1l bnRzKG5vZGUtPidQbGFucycpCisgICAgbG9vcAorICAgICAgeCA6PSBmaW5kX2hhc2goY2hpbGQp OworICAgICAgaWYgeCBpcyBub3QgbnVsbCB0aGVuCisgICAgICAgIHJldHVybiB4OworICAgICAg ZW5kIGlmOworICAgIGVuZCBsb29wOworICAgIHJldHVybiBudWxsOworICBlbmQgaWY7CitlbmQ7 CiskJDsKK2NyZWF0ZSBvciByZXBsYWNlIGZ1bmN0aW9uIGhhc2hfam9pbl9iYXRjaGVzKHF1ZXJ5 IHRleHQpCityZXR1cm5zIHRhYmxlIChvcmlnaW5hbCBpbnQsIGZpbmFsIGludCkgbGFuZ3VhZ2Ug cGxwZ3NxbAorYXMKKyQkCitkZWNsYXJlCisgIHdob2xlX3BsYW4ganNvbjsKKyAgaGFzaF9ub2Rl IGpzb247CitiZWdpbgorICBmb3Igd2hvbGVfcGxhbiBpbgorICAgIGV4ZWN1dGUgJ2V4cGxhaW4g KGFuYWx5emUsIGZvcm1hdCAnJ2pzb24nJykgJyB8fCBxdWVyeQorICBsb29wCisgICAgaGFzaF9u b2RlIDo9IGZpbmRfaGFzaChqc29uX2V4dHJhY3RfcGF0aCh3aG9sZV9wbGFuLCAnMCcsICdQbGFu JykpOworICAgIG9yaWdpbmFsIDo9IGhhc2hfbm9kZS0+PidPcmlnaW5hbCBIYXNoIEJhdGNoZXMn OworICAgIGZpbmFsIDo9IGhhc2hfbm9kZS0+PidIYXNoIEJhdGNoZXMnOworICAgIHJldHVybiBu ZXh0OworICBlbmQgbG9vcDsKK2VuZDsKKyQkOworLS0gTWFrZSBhIHNpbXBsZSByZWxhdGlvbiB3 aXRoIHdlbGwgZGlzdHJpYnV0ZWQga2V5cyBhbmQgY29ycmVjdGx5CistLSBlc3RpbWF0ZWQgc2l6 ZS4KK2NyZWF0ZSB0YWJsZSBzaW1wbGUgYXMKKyAgc2VsZWN0IGdlbmVyYXRlX3NlcmllcygxLCAy MDAwMCkgQVMgaWQsICdhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhJzsKK2FsdGVy IHRhYmxlIHNpbXBsZSBzZXQgKHBhcmFsbGVsX3dvcmtlcnMgPSAyKTsKK2FuYWx5emUgc2ltcGxl OworLS0gTWFrZSBhIHJlbGF0aW9uIHdob3NlIHNpemUgd2Ugd2lsbCB1bmRlci1lc3RpbWF0ZS4g IFdlIHdhbnQgc3RhdHMKKy0tIHRvIHNheSAxMDAwIHJvd3MsIGJ1dCBhY3R1YWxseSB0aGVyZSBh cmUgMjAsMDAwIHJvd3MuCitjcmVhdGUgdGFibGUgYmlnZ2VyX3RoYW5faXRfbG9va3MgYXMKKyAg c2VsZWN0IGdlbmVyYXRlX3NlcmllcygxLCAyMDAwMCkgYXMgaWQsICdhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhJzsKK2FsdGVyIHRhYmxlIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHNl dCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gJ2ZhbHNlJyk7CithbHRlciB0YWJsZSBiaWdnZXJfdGhh bl9pdF9sb29rcyBzZXQgKHBhcmFsbGVsX3dvcmtlcnMgPSAyKTsKK2FuYWx5emUgYmlnZ2VyX3Ro YW5faXRfbG9va3M7Cit1cGRhdGUgcGdfY2xhc3Mgc2V0IHJlbHR1cGxlcyA9IDEwMDAgd2hlcmUg cmVsbmFtZSA9ICdiaWdnZXJfdGhhbl9pdF9sb29rcyc7CistLSBNYWtlIGEgcmVsYXRpb24gd2hv c2Ugc2l6ZSB3ZSB1bmRlcmVzdGltYXRlIGFuZCB0aGF0IGFsc28gaGFzIGEKKy0tIGtpbmQgb2Yg c2tldyB0aGF0IGJyZWFrcyBvdXIgYmF0Y2hpbmcgc2NoZW1lLiAgV2Ugd2FudCBzdGF0cyB0byBz YXkKKy0tIDIgcm93cywgYnV0IGFjdHVhbGx5IHRoZXJlIGFyZSAyMCwwMDAgcm93cyB3aXRoIHRo ZSBzYW1lIGtleS4KK2NyZWF0ZSB0YWJsZSBleHRyZW1lbHlfc2tld2VkIChpZCBpbnQsIHQgdGV4 dCk7CithbHRlciB0YWJsZSBleHRyZW1lbHlfc2tld2VkIHNldCAoYXV0b3ZhY3V1bV9lbmFibGVk ID0gJ2ZhbHNlJyk7CithbHRlciB0YWJsZSBleHRyZW1lbHlfc2tld2VkIHNldCAocGFyYWxsZWxf d29ya2VycyA9IDIpOworYW5hbHl6ZSBleHRyZW1lbHlfc2tld2VkOworaW5zZXJ0IGludG8gZXh0 cmVtZWx5X3NrZXdlZAorICBzZWxlY3QgNDIgYXMgaWQsICdhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhYWFhJworICBmcm9tIGdlbmVyYXRlX3NlcmllcygxLCAyMDAwMCk7Cit1cGRhdGUg cGdfY2xhc3MKKyAgc2V0IHJlbHR1cGxlcyA9IDIsIHJlbHBhZ2VzID0gcGdfcmVsYXRpb25fc2l6 ZSgnZXh0cmVtZWx5X3NrZXdlZCcpIC8gODE5MgorICB3aGVyZSByZWxuYW1lID0gJ2V4dHJlbWVs eV9za2V3ZWQnOworLS0gTWFrZSBhIHJlbGF0aW9uIHdpdGggYSBjb3VwbGUgb2YgZW5vcm1vdXMg dHVwbGVzLgorY3JlYXRlIHRhYmxlIHdpZGUgYXMgc2VsZWN0IGdlbmVyYXRlX3NlcmllcygxLCAy KSBhcyBpZCwgcnBhZCgnJywgMzIwMDAwLCAneCcpIGFzIHQ7CithbHRlciB0YWJsZSB3aWRlIHNl dCAocGFyYWxsZWxfd29ya2VycyA9IDIpOworLS0gVGhlICJvcHRpbWFsIiBjYXNlOiB0aGUgaGFz aCB0YWJsZSBmaXRzIGluIG1lbW9yeTsgd2UgcGxhbiBmb3IgMQorLS0gYmF0Y2gsIHdlIHN0aWNr IHRvIHRoYXQgbnVtYmVyLCBhbmQgcGVhayBtZW1vcnkgdXNhZ2Ugc3RheXMgd2l0aGluCistLSBv dXIgd29ya19tZW0gYnVkZ2V0CistLSBub24tcGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0aW5nczsK K3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKK3NldCBsb2Nh bCB3b3JrX21lbSA9ICc0TUInOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7 CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpv aW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dy ZWdhdGUKKyAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgIEhhc2ggQ29uZDogKHIuaWQgPSBzLmlk KQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHNpbXBsZSByCisgICAgICAgICAtPiAgSGFzaAor ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHNpbXBsZSBzCisoNiByb3dzKQorCitzZWxl Y3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CisgY291 bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworc2VsZWN0IG9yaWdpbmFsID4gMSBhcyBp bml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hl cworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20g c2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworJCQpOworIGluaXRpYWxseV9tdWx0 aWJhdGNoIHwgaW5jcmVhc2VkX2JhdGNoZXMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0KKyBmICAgICAgICAgICAgICAgICAgICB8IGYKKygxIHJvdykKKworcm9s bGJhY2sgdG8gc2V0dGluZ3M7CistLSBwYXJhbGxlbCB3aXRoIHBhcmFsbGVsLW9ibGl2aW91cyBo YXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29y a2Vyc19wZXJfZ2F0aGVyID0gMjsKK3NldCBsb2NhbCB3b3JrX21lbSA9ICc0TUInOworc2V0IGxv Y2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwgZW5hYmxlX3BhcmFsbGVs X2hhc2ggPSBvZmY7CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9t IHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5hbGl6ZSBBZ2dyZWdhdGUK KyAgIC0+ICBHYXRoZXIKKyAgICAgICAgIFdvcmtlcnMgUGxhbm5lZDogMgorICAgICAgICAgLT4g IFBhcnRpYWwgQWdncmVnYXRlCisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAg ICAgICAgICAgICAgICBIYXNoIENvbmQ6IChyLmlkID0gcy5pZCkKKyAgICAgICAgICAgICAgICAg ICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBzaW1wbGUgcgorICAgICAgICAgICAgICAgICAg ICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBz aW1wbGUgcworKDkgcm93cykKKworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBz aW1wbGUgcyB1c2luZyAoaWQpOworIGNvdW50IAorLS0tLS0tLQorIDIwMDAwCisoMSByb3cpCisK K3NlbGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gsIGZpbmFsID4gb3Jp Z2luYWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQk CisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlk KTsKKyQkKTsKKyBpbml0aWFsbHlfbXVsdGliYXRjaCB8IGluY3JlYXNlZF9iYXRjaGVzIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisgZiAgICAgICAgICAgICAg ICAgICAgfCBmCisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0gcGFyYWxsZWwg d2l0aCBwYXJhbGxlbC1hd2FyZSBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBs b2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3NldCBsb2NhbCB3b3Jr X21lbSA9ICc0TUInOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQg bG9jYWwgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAg c2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOwor ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQorICAgLT4gIEdhdGhlcgorICAgICAgICAg V29ya2VycyBQbGFubmVkOiAyCisgICAgICAgICAtPiAgUGFydGlhbCBBZ2dyZWdhdGUKKyAgICAg ICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIEhh c2ggQ29uZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVs IFNlcSBTY2FuIG9uIHNpbXBsZSByCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwg SGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9u IHNpbXBsZSBzCisoOSByb3dzKQorCitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2lu IHNpbXBsZSBzIHVzaW5nIChpZCk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykK Kworc2VsZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBv cmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAor JCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAo aWQpOworJCQpOworIGluaXRpYWxseV9tdWx0aWJhdGNoIHwgaW5jcmVhc2VkX2JhdGNoZXMgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmICAgICAgICAgICAg ICAgICAgICB8IGYKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBUaGUgImdv b2QiIGNhc2U6IGJhdGNoZXMgcmVxdWlyZWQsIGJ1dCB3ZSBwbGFuIHRoZSByaWdodCBudW1iZXI7 IHdlCistLSBwbGFuIGZvciBzb21lIG51bWJlciBvZiBiYXRjaGVzLCBhbmQgd2Ugc3RpY2sgdG8g dGhhdCBudW1iZXIsIGFuZAorLS0gcGVhayBtZW1vcnkgdXNhZ2Ugc2F5cyB3aXRoaW4gb3VyIHdv cmtfbWVtIGJ1ZGdldAorLS0gbm9uLXBhcmFsbGVsCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQg bG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CitzZXQgbG9jYWwgd29y a19tZW0gPSAnMTI4a0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7Citl eHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4g c2ltcGxlIHMgdXNpbmcgKGlkKTsKKyAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdh dGUKKyAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgIEhhc2ggQ29uZDogKHIuaWQgPSBzLmlkKQor ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHNpbXBsZSByCisgICAgICAgICAtPiAgSGFzaAorICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHNpbXBsZSBzCisoNiByb3dzKQorCitzZWxlY3Qg Y291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CisgY291bnQg CistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworc2VsZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0 aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hlcwor ICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2lt cGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworJCQpOworIGluaXRpYWxseV9tdWx0aWJh dGNoIHwgaW5jcmVhc2VkX2JhdGNoZXMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0KKyB0ICAgICAgICAgICAgICAgICAgICB8IGYKKygxIHJvdykKKworcm9sbGJh Y2sgdG8gc2V0dGluZ3M7CistLSBwYXJhbGxlbCB3aXRoIHBhcmFsbGVsLW9ibGl2aW91cyBoYXNo IGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vy c19wZXJfZ2F0aGVyID0gMjsKK3NldCBsb2NhbCB3b3JrX21lbSA9ICcxMjhrQic7CitzZXQgbG9j YWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBlbmFibGVfcGFyYWxsZWxf aGFzaCA9IG9mZjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20g c2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQor ICAgLT4gIEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVkOiAyCisgICAgICAgICAtPiAg UGFydGlhbCBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAg ICAgICAgICAgICAgIEhhc2ggQ29uZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAgICAgICAgICAg ICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHNpbXBsZSByCisgICAgICAgICAgICAgICAgICAg ICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHNp bXBsZSBzCisoOSByb3dzKQorCitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNp bXBsZSBzIHVzaW5nIChpZCk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKwor c2VsZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmln aW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQK KyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQp OworJCQpOworIGluaXRpYWxseV9tdWx0aWJhdGNoIHwgaW5jcmVhc2VkX2JhdGNoZXMgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgICAgICAg ICAgICB8IGYKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBwYXJhbGxlbCB3 aXRoIHBhcmFsbGVsLWF3YXJlIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxv Y2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtf bWVtID0gJzE5MmtCJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0 IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb247CitleHBsYWluIChjb3N0cyBvZmYpCisg IHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBGaW5hbGl6ZSBBZ2dyZWdhdGUKKyAgIC0+ICBHYXRoZXIKKyAgICAgICAg IFdvcmtlcnMgUGxhbm5lZDogMgorICAgICAgICAgLT4gIFBhcnRpYWwgQWdncmVnYXRlCisgICAg ICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBI YXNoIENvbmQ6IChyLmlkID0gcy5pZCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxl bCBTZXEgU2NhbiBvbiBzaW1wbGUgcgorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVs IEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBv biBzaW1wbGUgcworKDkgcm93cykKKworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9p biBzaW1wbGUgcyB1c2luZyAoaWQpOworIGNvdW50IAorLS0tLS0tLQorIDIwMDAwCisoMSByb3cp CisKK3NlbGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gsIGZpbmFsID4g b3JpZ2luYWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygK KyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcg KGlkKTsKKyQkKTsKKyBpbml0aWFsbHlfbXVsdGliYXRjaCB8IGluY3JlYXNlZF9iYXRjaGVzIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICAgICAg ICAgICAgICAgfCBmCisoMSByb3cpCisKKy0tIHBhcmFsbGVsIGZ1bGwgbXVsdGktYmF0Y2ggaGFz aCBqb2luCitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2lt cGxlIHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCity b2xsYmFjayB0byBzZXR0aW5nczsKKy0tIFRoZSAiYmFkIiBjYXNlOiBkdXJpbmcgZXhlY3V0aW9u IHdlIG5lZWQgdG8gaW5jcmVhc2UgbnVtYmVyIG9mCistLSBiYXRjaGVzOyBpbiB0aGlzIGNhc2Ug d2UgcGxhbiBmb3IgMSBiYXRjaCwgYW5kIGluY3JlYXNlIGF0IGxlYXN0IGEKKy0tIGNvdXBsZSBv ZiB0aW1lcywgYW5kIHBlYWsgbWVtb3J5IHVzYWdlIHN0YXlzIHdpdGhpbiBvdXIgd29ya19tZW0K Ky0tIGJ1ZGdldAorLS0gbm9uLXBhcmFsbGVsCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9j YWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CitzZXQgbG9jYWwgd29ya19t ZW0gPSAnMTI4a0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBs YWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBGUk9NIHNpbXBsZSByIEpPSU4gYmln Z2VyX3RoYW5faXRfbG9va3MgcyBVU0lORyAoaWQpOworICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBIYXNoIEpv aW4KKyAgICAgICAgIEhhc2ggQ29uZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHNpbXBsZSByCisgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMKKyg2IHJvd3MpCisKK3NlbGVjdCBjb3Vu dCgqKSBGUk9NIHNpbXBsZSByIEpPSU4gYmlnZ2VyX3RoYW5faXRfbG9va3MgcyBVU0lORyAoaWQp OworIGNvdW50IAorLS0tLS0tLQorIDIwMDAwCisoMSByb3cpCisKK3NlbGVjdCBvcmlnaW5hbCA+ IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gsIGZpbmFsID4gb3JpZ2luYWwgYXMgaW5jcmVhc2Vk X2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgq KSBGUk9NIHNpbXBsZSByIEpPSU4gYmlnZ2VyX3RoYW5faXRfbG9va3MgcyBVU0lORyAoaWQpOwor JCQpOworIGluaXRpYWxseV9tdWx0aWJhdGNoIHwgaW5jcmVhc2VkX2JhdGNoZXMgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmICAgICAgICAgICAgICAgICAg ICB8IHQKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBwYXJhbGxlbCB3aXRo IHBhcmFsbGVsLW9ibGl2aW91cyBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBs b2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3NldCBsb2NhbCB3b3Jr X21lbSA9ICcxMjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3Nl dCBsb2NhbCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK2V4cGxhaW4gKGNvc3RzIG9mZikK KyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBiaWdnZXJfdGhhbl9pdF9sb29r cyBzIHVzaW5nIChpZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0 ZQorICAgLT4gIEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVkOiAyCisgICAgICAgICAt PiAgUGFydGlhbCBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAg ICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAgICAgICAg ICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHNpbXBsZSByCisgICAgICAgICAgICAgICAg ICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMKKyg5IHJvd3MpCisKK3NlbGVjdCBjb3VudCgqKSBmcm9t IHNpbXBsZSByIGpvaW4gYmlnZ2VyX3RoYW5faXRfbG9va3MgcyB1c2luZyAoaWQpOworIGNvdW50 IAorLS0tLS0tLQorIDIwMDAwCisoMSByb3cpCisKK3NlbGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5p dGlhbGx5X211bHRpYmF0Y2gsIGZpbmFsID4gb3JpZ2luYWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMK KyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNp bXBsZSByIGpvaW4gYmlnZ2VyX3RoYW5faXRfbG9va3MgcyB1c2luZyAoaWQpOworJCQpOworIGlu aXRpYWxseV9tdWx0aWJhdGNoIHwgaW5jcmVhc2VkX2JhdGNoZXMgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmICAgICAgICAgICAgICAgICAgICB8IHQKKygx IHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBwYXJhbGxlbCB3aXRoIHBhcmFsbGVs LWF3YXJlIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJh bGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAxOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzE5MmtC JzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0IGxvY2FsIGVuYWJs ZV9wYXJhbGxlbF9oYXNoID0gb247CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3Vu dCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gYmlnZ2VyX3RoYW5faXRfbG9va3MgcyB1c2luZyAoaWQp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5hbGl6ZSBBZ2dy ZWdhdGUKKyAgIC0+ICBHYXRoZXIKKyAgICAgICAgIFdvcmtlcnMgUGxhbm5lZDogMQorICAgICAg ICAgLT4gIFBhcnRpYWwgQWdncmVnYXRlCisgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFz aCBKb2luCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6IChyLmlkID0gcy5pZCkKKyAg ICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBzaW1wbGUgcgorICAg ICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2gKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzCiso OSByb3dzKQorCitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGJpZ2dlcl90aGFu X2l0X2xvb2tzIHMgdXNpbmcgKGlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93 KQorCitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+ IG9yaWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMo CiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGJpZ2dlcl90aGFuX2l0 X2xvb2tzIHMgdXNpbmcgKGlkKTsKKyQkKTsKKyBpbml0aWFsbHlfbXVsdGliYXRjaCB8IGluY3Jl YXNlZF9iYXRjaGVzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t CisgZiAgICAgICAgICAgICAgICAgICAgfCB0CisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRp bmdzOworLS0gVGhlICJ1Z2x5IiBjYXNlOiBpbmNyZWFzaW5nIHRoZSBudW1iZXIgb2YgYmF0Y2hl cyBkdXJpbmcgZXhlY3V0aW9uCistLSBkb2Vzbid0IGhlbHAsIHNvIHN0b3AgdHJ5aW5nIHRvIGZp dCBpbiB3b3JrX21lbSBhbmQgaG9wZSBmb3IgdGhlCistLSBiZXN0OyBpbiB0aGlzIGNhc2Ugd2Ug cGxhbiBmb3IgMSBiYXRjaCwgaW5jcmVhc2VzIGp1c3Qgb25jZSBhbmQKKy0tIHRoZW4gc3RvcCBp bmNyZWFzaW5nIGJlY2F1c2UgdGhhdCBkaWRuJ3QgaGVscCBhdCBhbGwsIHNvIHdlIGJsb3cKKy0t IHJpZ2h0IHRocm91Z2ggdGhlIHdvcmtfbWVtIGJ1ZGdldCBhbmQgaG9wZSBmb3IgdGhlIGJlc3Qu Li4KKy0tIG5vbi1wYXJhbGxlbAorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9w YXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzEy OGtCJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworZXhwbGFpbiAoY29z dHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4dHJlbWVseV9z a2V3ZWQgcyB1c2luZyAoaWQpOworICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgSGFzaCBKb2luCisgICAgICAgICBIYXNoIENv bmQ6IChyLmlkID0gcy5pZCkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcgorICAg ICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBleHRyZW1lbHlf c2tld2VkIHMKKyg2IHJvd3MpCisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4g ZXh0cmVtZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAK KygxIHJvdykKKworc2VsZWN0ICogZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVj dCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5X3NrZXdlZCBzIHVzaW5nIChp ZCk7CiskJCk7Cisgb3JpZ2luYWwgfCBmaW5hbCAKKy0tLS0tLS0tLS0rLS0tLS0tLQorICAgICAg ICAxIHwgICAgIDIKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBwYXJhbGxl bCB3aXRoIHBhcmFsbGVsLW9ibGl2aW91cyBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsK K3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3NldCBsb2Nh bCB3b3JrX21lbSA9ICcxMjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEu MDsKK3NldCBsb2NhbCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK2V4cGxhaW4gKGNvc3Rz IG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1lbHlfc2tl d2VkIHMgdXNpbmcgKGlkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEdhdGhlcgorICAgICAgICAg V29ya2VycyBQbGFubmVkOiAyCisgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAg ICBIYXNoIENvbmQ6IChyLmlkID0gcy5pZCkKKyAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBT ZXEgU2NhbiBvbiBzaW1wbGUgcgorICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBleHRyZW1lbHlfc2tld2VkIHMKKyg4IHJvd3MpCisK K3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5X3NrZXdlZCBzIHVz aW5nIChpZCk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworc2VsZWN0ICog ZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBs ZSByIGpvaW4gZXh0cmVtZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CiskJCk7Cisgb3JpZ2luYWwg fCBmaW5hbCAKKy0tLS0tLS0tLS0rLS0tLS0tLQorICAgICAgICAxIHwgICAgIDIKKygxIHJvdykK Kworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBwYXJhbGxlbCB3aXRoIHBhcmFsbGVsLWF3YXJl IGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93 b3JrZXJzX3Blcl9nYXRoZXIgPSAxOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzEyOGtCJzsKK3Nl dCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0IGxvY2FsIGVuYWJsZV9wYXJh bGxlbF9oYXNoID0gb247CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBm cm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBHYXRoZXIKKyAgICAgICAgIFdvcmtlcnMg UGxhbm5lZDogMQorICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2ggSm9pbgorICAgICAgICAgICAg ICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQpCisgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwg U2VxIFNjYW4gb24gc2ltcGxlIHIKKyAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoCisg ICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gZXh0cmVtZWx5X3Nr ZXdlZCBzCisoOCByb3dzKQorCitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4 dHJlbWVseV9za2V3ZWQgcyB1c2luZyAoaWQpOworIGNvdW50IAorLS0tLS0tLQorIDIwMDAwCiso MSByb3cpCisKK3NlbGVjdCAqIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3Qg Y291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4dHJlbWVseV9za2V3ZWQgcyB1c2luZyAoaWQp OworJCQpOworIG9yaWdpbmFsIHwgZmluYWwgCistLS0tLS0tLS0tKy0tLS0tLS0KKyAgICAgICAg MSB8ICAgICA0CisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0gQSBjb3VwbGUg b2Ygb3RoZXIgaGFzaCBqb2luIHRlc3RzIHVucmVsYXRlZCB0byB3b3JrX21lbSBtYW5hZ2VtZW50 LgorLS0gQ2hlY2sgdGhhdCBFWFBMQUlOIEFOQUxZWkUgaGFzIGRhdGEgZXZlbiBpZiB0aGUgbGVh ZGVyIGRvZXNuJ3QgcGFydGljaXBhdGUKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBt YXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3NldCBsb2NhbCB3b3JrX21lbSA9 ICc0TUInOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwg cGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7CitzZWxlY3QgKiBmcm9tIGhhc2hf am9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBz aW1wbGUgcyB1c2luZyAoaWQpOworJCQpOworIG9yaWdpbmFsIHwgZmluYWwgCistLS0tLS0tLS0t Ky0tLS0tLS0KKyAgICAgICAgMSB8ICAgICAxCisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRp bmdzOworLS0gRXhlcmNpc2UgcmVzY2Fucy4gIFdlJ2xsIHR1cm4gb2ZmIHBhcmFsbGVsX2xlYWRl cl9wYXJ0aWNpcGF0aW9uIHNvCistLSB0aGF0IHdlIGNhbiBjaGVjayB0aGF0IGluc3RydW1lbnRh dGlvbiBjb21lcyBiYWNrIGNvcnJlY3RseS4KK2NyZWF0ZSB0YWJsZSBqb2luX2ZvbyBhcyBzZWxl Y3QgZ2VuZXJhdGVfc2VyaWVzKDEsIDMpIGFzIGlkLCAneHh4eHgnOjp0ZXh0IGFzIHQ7CithbHRl ciB0YWJsZSBqb2luX2ZvbyBzZXQgKHBhcmFsbGVsX3dvcmtlcnMgPSAwKTsKK2NyZWF0ZSB0YWJs ZSBqb2luX2JhciBhcyBzZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDAwKSBhcyBpZCwgJ3h4 eHh4Jzo6dGV4dCBhcyB0OworYWx0ZXIgdGFibGUgam9pbl9iYXIgc2V0IChwYXJhbGxlbF93b3Jr ZXJzID0gMik7CistLSBtdWx0aS1iYXRjaCB3aXRoIHJlc2NhbiwgcGFyYWxsZWwtb2JsaXZpb3Vz CitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7Citz ZXQgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7CitzZXQgbWluX3BhcmFsbGVs X3RhYmxlX3NjYW5fc2l6ZSA9IDA7CitzZXQgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitzZXQg cGFyYWxsZWxfdHVwbGVfY29zdCA9IDA7CitzZXQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dh dGhlciA9IDI7CitzZXQgZW5hYmxlX21hdGVyaWFsID0gb2ZmOworc2V0IGVuYWJsZV9tZXJnZWpv aW4gPSBvZmY7CitzZXQgd29ya19tZW0gPSAnNjRrQic7CitzZXQgaGFzaF9tZW1fbXVsdGlwbGll ciA9IDEuMDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gam9p bl9mb28KKyAgICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIx IGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgICBvbiBqb2luX2Zvby5pZCA8IHNz LmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4g IE5lc3RlZCBMb29wIExlZnQgSm9pbgorICAgICAgICAgSm9pbiBGaWx0ZXI6ICgoam9pbl9mb28u aWQgPCAoYjEuaWQgKyAxKSkgQU5EIChqb2luX2Zvby5pZCA+IChiMS5pZCAtIDEpKSkKKyAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBqb2luX2ZvbworICAgICAgICAgLT4gIEdhdGhlcgorICAgICAg ICAgICAgICAgV29ya2VycyBQbGFubmVkOiAyCisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2lu CisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6IChiMS5pZCA9IGIyLmlkKQorICAgICAg ICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIGpvaW5fYmFyIGIxCisgICAg ICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIGpvaW5fYmFyIGIyCisoMTEgcm93cykKKworc2VsZWN0IGNvdW50KCopIGZy b20gam9pbl9mb28KKyAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2Jh ciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgIG9uIGpvaW5fZm9vLmlkIDwg c3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyBjb3VudCAKKy0tLS0tLS0K KyAgICAgMworKDEgcm93KQorCitzZWxlY3QgZmluYWwgPiAxIGFzIG11bHRpYmF0Y2gKKyAgZnJv bSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9v CisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2lu IGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBzcy5pZCAr IDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworJCQpOworIG11bHRpYmF0Y2ggCistLS0t LS0tLS0tLS0KKyB0CisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0gc2luZ2xl LWJhdGNoIHdpdGggcmVzY2FuLCBwYXJhbGxlbC1vYmxpdmlvdXMKK3NhdmVwb2ludCBzZXR0aW5n czsKK3NldCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK3NldCBwYXJhbGxlbF9sZWFkZXJf cGFydGljaXBhdGlvbiA9IG9mZjsKK3NldCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplID0g MDsKK3NldCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0gMDsKK3NldCBwYXJhbGxlbF90dXBsZV9jb3N0 ID0gMDsKK3NldCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3NldCBlbmFi bGVfbWF0ZXJpYWwgPSBvZmY7CitzZXQgZW5hYmxlX21lcmdlam9pbiA9IG9mZjsKK3NldCB3b3Jr X21lbSA9ICc0TUInOworc2V0IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChj b3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVmdCBqb2lu IChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVz aW5nIChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9v LmlkID4gc3MuaWQgLSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBOZXN0ZWQgTG9vcCBMZWZ0IEpv aW4KKyAgICAgICAgIEpvaW4gRmlsdGVyOiAoKGpvaW5fZm9vLmlkIDwgKGIxLmlkICsgMSkpIEFO RCAoam9pbl9mb28uaWQgPiAoYjEuaWQgLSAxKSkpCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24g am9pbl9mb28KKyAgICAgICAgIC0+ICBHYXRoZXIKKyAgICAgICAgICAgICAgIFdvcmtlcnMgUGxh bm5lZDogMgorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAg ICAgSGFzaCBDb25kOiAoYjEuaWQgPSBiMi5pZCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQ YXJhbGxlbCBTZXEgU2NhbiBvbiBqb2luX2JhciBiMQorICAgICAgICAgICAgICAgICAgICAgLT4g IEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBqb2luX2Jh ciBiMgorKDExIHJvd3MpCisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgIGxlZnQg am9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBi MiB1c2luZyAoaWQpKSBzcworICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9m b28uaWQgPiBzcy5pZCAtIDE7CisgY291bnQgCistLS0tLS0tCisgICAgIDMKKygxIHJvdykKKwor c2VsZWN0IGZpbmFsID4gMSBhcyBtdWx0aWJhdGNoCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMo CiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBqb2luX2ZvbworICAgIGxlZnQgam9pbiAoc2Vs ZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAo aWQpKSBzcworICAgIG9uIGpvaW5fZm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+ IHNzLmlkIC0gMTsKKyQkKTsKKyBtdWx0aWJhdGNoIAorLS0tLS0tLS0tLS0tCisgZgorKDEgcm93 KQorCityb2xsYmFjayB0byBzZXR0aW5nczsKKy0tIG11bHRpLWJhdGNoIHdpdGggcmVzY2FuLCBw YXJhbGxlbC1hd2FyZQorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGVuYWJsZV9wYXJhbGxlbF9o YXNoID0gb247CitzZXQgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7CitzZXQg bWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZSA9IDA7CitzZXQgcGFyYWxsZWxfc2V0dXBfY29z dCA9IDA7CitzZXQgcGFyYWxsZWxfdHVwbGVfY29zdCA9IDA7CitzZXQgbWF4X3BhcmFsbGVsX3dv cmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQgZW5hYmxlX21hdGVyaWFsID0gb2ZmOworc2V0IGVu YWJsZV9tZXJnZWpvaW4gPSBvZmY7CitzZXQgd29ya19tZW0gPSAnNjRrQic7CitzZXQgaGFzaF9t ZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50 KCopIGZyb20gam9pbl9mb28KKyAgICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9t IGpvaW5fYmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgICBvbiBqb2lu X2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3Jl Z2F0ZQorICAgLT4gIE5lc3RlZCBMb29wIExlZnQgSm9pbgorICAgICAgICAgSm9pbiBGaWx0ZXI6 ICgoam9pbl9mb28uaWQgPCAoYjEuaWQgKyAxKSkgQU5EIChqb2luX2Zvby5pZCA+IChiMS5pZCAt IDEpKSkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBqb2luX2ZvbworICAgICAgICAgLT4gIEdh dGhlcgorICAgICAgICAgICAgICAgV29ya2VycyBQbGFubmVkOiAyCisgICAgICAgICAgICAgICAt PiAgUGFyYWxsZWwgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6IChi MS5pZCA9IGIyLmlkKQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2Fu IG9uIGpvaW5fYmFyIGIxCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIGpvaW5f YmFyIGIyCisoMTEgcm93cykKKworc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9mb28KKyAgbGVm dCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFy IGIyIHVzaW5nIChpZCkpIHNzCisgIG9uIGpvaW5fZm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBqb2lu X2Zvby5pZCA+IHNzLmlkIC0gMTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMworKDEgcm93KQor CitzZWxlY3QgZmluYWwgPiAxIGFzIG11bHRpYmF0Y2gKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hl cygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVmdCBqb2luIChz ZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5n IChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlk ID4gc3MuaWQgLSAxOworJCQpOworIG11bHRpYmF0Y2ggCistLS0tLS0tLS0tLS0KKyB0CisoMSBy b3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0gc2luZ2xlLWJhdGNoIHdpdGggcmVzY2Fu LCBwYXJhbGxlbC1hd2FyZQorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGVuYWJsZV9wYXJhbGxl bF9oYXNoID0gb247CitzZXQgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7Citz ZXQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZSA9IDA7CitzZXQgcGFyYWxsZWxfc2V0dXBf Y29zdCA9IDA7CitzZXQgcGFyYWxsZWxfdHVwbGVfY29zdCA9IDA7CitzZXQgbWF4X3BhcmFsbGVs X3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQgZW5hYmxlX21hdGVyaWFsID0gb2ZmOworc2V0 IGVuYWJsZV9tZXJnZWpvaW4gPSBvZmY7CitzZXQgd29ya19tZW0gPSAnNE1CJzsKK3NldCBoYXNo X21lbV9tdWx0aXBsaWVyID0gMS4wOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291 bnQoKikgZnJvbSBqb2luX2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZy b20gam9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9uIGpv aW5fZm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdn cmVnYXRlCisgICAtPiAgTmVzdGVkIExvb3AgTGVmdCBKb2luCisgICAgICAgICBKb2luIEZpbHRl cjogKChqb2luX2Zvby5pZCA8IChiMS5pZCArIDEpKSBBTkQgKGpvaW5fZm9vLmlkID4gKGIxLmlk IC0gMSkpKQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGpvaW5fZm9vCisgICAgICAgICAtPiAg R2F0aGVyCisgICAgICAgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgICAgICAg IC0+ICBQYXJhbGxlbCBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDog KGIxLmlkID0gYjIuaWQpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNj YW4gb24gam9pbl9iYXIgYjEKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNo CisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gam9p bl9iYXIgYjIKKygxMSByb3dzKQorCitzZWxlY3QgY291bnQoKikgZnJvbSBqb2luX2ZvbworICBs ZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIxIGpvaW4gam9pbl9i YXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpv aW5fZm9vLmlkID4gc3MuaWQgLSAxOworIGNvdW50IAorLS0tLS0tLQorICAgICAzCisoMSByb3cp CisKK3NlbGVjdCBmaW5hbCA+IDEgYXMgbXVsdGliYXRjaAorICBmcm9tIGhhc2hfam9pbl9iYXRj aGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9mb28KKyAgICBsZWZ0IGpvaW4g KHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNp bmcgKGlkKSkgc3MKKyAgICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28u aWQgPiBzcy5pZCAtIDE7CiskJCk7CisgbXVsdGliYXRjaCAKKy0tLS0tLS0tLS0tLQorIGYKKygx IHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBBIGZ1bGwgb3V0ZXIgam9pbiB3aGVy ZSBldmVyeSByZWNvcmQgaXMgbWF0Y2hlZC4KKy0tIG5vbi1wYXJhbGxlbAorc2F2ZXBvaW50IHNl dHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOwor ZXhwbGFpbiAoY29zdHMgb2ZmKQorICAgICBzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIg ZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CisgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgSGFzaCBGdWxsIEpvaW4KKyAgICAgICAgIEhhc2gg Q29uZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHNpbXBsZSByCisg ICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHNpbXBsZSBz CisoNiByb3dzKQorCitzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBq b2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJv dykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBwYXJhbGxlbGlzbSBub3QgcG9zc2libGUg d2l0aCBwYXJhbGxlbC1vYmxpdmlvdXMgZnVsbCBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5n czsKK3NldCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK3NldCBsb2NhbCBtYXhfcGFyYWxs ZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgICAgc2Vs ZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2lu ZyAoaWQpOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEhh c2ggRnVsbCBKb2luCisgICAgICAgICBIYXNoIENvbmQ6IChyLmlkID0gcy5pZCkKKyAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcgorICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcworKDYgcm93cykKKworc2VsZWN0ICBjb3VudCgq KSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworIGNv dW50IAorLS0tLS0tLQorIDIwMDAwCisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOwor LS0gcGFyYWxsZWxpc20gaXMgcG9zc2libGUgd2l0aCBwYXJhbGxlbC1hd2FyZSBmdWxsIGhhc2gg am9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJz X3Blcl9nYXRoZXIgPSAyOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICAgICBzZWxlY3QgIGNvdW50 KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgRmluYWxpemUgQWdncmVnYXRlCisgICAtPiAgR2F0aGVyCisgICAgICAgICBX b3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgIC0+ICBQYXJ0aWFsIEFnZ3JlZ2F0ZQorICAgICAg ICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2ggRnVsbCBKb2luCisgICAgICAgICAgICAgICAgICAg ICBIYXNoIENvbmQ6IChyLmlkID0gcy5pZCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJh bGxlbCBTZXEgU2NhbiBvbiBzaW1wbGUgcgorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFs bGVsIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2Nh biBvbiBzaW1wbGUgcworKDkgcm93cykKKworc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSBy IGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworIGNvdW50IAorLS0tLS0tLQor IDIwMDAwCisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0gQSBmdWxsIG91dGVy IGpvaW4gd2hlcmUgZXZlcnkgcmVjb3JkIGlzIG5vdCBtYXRjaGVkLgorLS0gbm9uLXBhcmFsbGVs CitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVy X2dhdGhlciA9IDA7CitleHBsYWluIChjb3N0cyBvZmYpCisgICAgIHNlbGVjdCAgY291bnQoKikg ZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgb24gKHIuaWQgPSAwIC0gcy5p ZCk7CisgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgSGFzaCBG dWxsIEpvaW4KKyAgICAgICAgIEhhc2ggQ29uZDogKCgwIC0gcy5pZCkgPSByLmlkKQorICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHNpbXBsZSBzCisgICAgICAgICAtPiAgSGFzaAorICAgICAgICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHNpbXBsZSByCisoNiByb3dzKQorCitzZWxlY3QgIGNvdW50 KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIG9uIChyLmlkID0gMCAt IHMuaWQpOworIGNvdW50IAorLS0tLS0tLQorIDQwMDAwCisoMSByb3cpCisKK3JvbGxiYWNrIHRv IHNldHRpbmdzOworLS0gcGFyYWxsZWxpc20gbm90IHBvc3NpYmxlIHdpdGggcGFyYWxsZWwtb2Js aXZpb3VzIGZ1bGwgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgZW5hYmxlX3Bh cmFsbGVsX2hhc2ggPSBvZmY7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dh dGhlciA9IDI7CitleHBsYWluIChjb3N0cyBvZmYpCisgICAgIHNlbGVjdCAgY291bnQoKikgZnJv bSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgb24gKHIuaWQgPSAwIC0gcy5pZCk7 CisgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgSGFzaCBGdWxs IEpvaW4KKyAgICAgICAgIEhhc2ggQ29uZDogKCgwIC0gcy5pZCkgPSByLmlkKQorICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHNpbXBsZSBzCisgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHNpbXBsZSByCisoNiByb3dzKQorCitzZWxlY3QgIGNvdW50KCop IGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIG9uIChyLmlkID0gMCAtIHMu aWQpOworIGNvdW50IAorLS0tLS0tLQorIDQwMDAwCisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNl dHRpbmdzOworLS0gcGFyYWxsZWxpc20gaXMgcG9zc2libGUgd2l0aCBwYXJhbGxlbC1hd2FyZSBm dWxsIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxl bF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICAgICBzZWxl Y3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIG9uIChy LmlkID0gMCAtIHMuaWQpOworICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQorICAgLT4g IEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVkOiAyCisgICAgICAgICAtPiAgUGFydGlh bCBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoIEZ1bGwgSm9pbgor ICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAoKDAgLSBzLmlkKSA9IHIuaWQpCisgICAg ICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxlIHMKKyAgICAg ICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyg5IHJvd3MpCisKK3NlbGVj dCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgb24gKHIu aWQgPSAwIC0gcy5pZCk7CisgY291bnQgCistLS0tLS0tCisgNDAwMDAKKygxIHJvdykKKworcm9s bGJhY2sgdG8gc2V0dGluZ3M7CistLSBleGVyY2lzZSBzcGVjaWFsIGNvZGUgcGF0aHMgZm9yIGh1 Z2UgdHVwbGVzIChub3RlIHVzZSBvZiBub24tc3RyaWN0CistLSBleHByZXNzaW9uIGFuZCBsZWZ0 IGpvaW4gcmVxdWlyZWQgdG8gZ2V0IHRoZSBkZXRvYXN0ZWQgdHVwbGUgaW50bworLS0gdGhlIGhh c2ggdGFibGUpCistLSBwYXJhbGxlbCB3aXRoIHBhcmFsbGVsLWF3YXJlIGhhc2ggam9pbiAoaGl0 cyBFeGVjUGFyYWxsZWxIYXNoTG9hZFR1cGxlIGFuZAorLS0gc3RzX3B1dHR1cGxlIG92ZXJzaXpl ZCB0dXBsZSBjYXNlcyBiZWNhdXNlIGl0J3MgbXVsdGktYmF0Y2gpCitzYXZlcG9pbnQgc2V0dGlu Z3M7CitzZXQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQgZW5hYmxl X3BhcmFsbGVsX2hhc2ggPSBvbjsKK3NldCB3b3JrX21lbSA9ICcxMjhrQic7CitzZXQgaGFzaF9t ZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGxlbmd0 aChtYXgocy50KSkKKyAgZnJvbSB3aWRlIGxlZnQgam9pbiAoc2VsZWN0IGlkLCBjb2FsZXNjZSh0 LCAnJykgfHwgJycgYXMgdCBmcm9tIHdpZGUpIHMgdXNpbmcgKGlkKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBGaW5hbGl6ZSBBZ2dyZWdhdGUKKyAgIC0+ICBHYXRoZXIKKyAgICAgICAgIFdvcmtlcnMg UGxhbm5lZDogMgorICAgICAgICAgLT4gIFBhcnRpYWwgQWdncmVnYXRlCisgICAgICAgICAgICAg ICAtPiAgUGFyYWxsZWwgSGFzaCBMZWZ0IEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIEhhc2gg Q29uZDogKHdpZGUuaWQgPSB3aWRlXzEuaWQpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFy YWxsZWwgU2VxIFNjYW4gb24gd2lkZQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVs IEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBv biB3aWRlIHdpZGVfMQorKDkgcm93cykKKworc2VsZWN0IGxlbmd0aChtYXgocy50KSkKK2Zyb20g d2lkZSBsZWZ0IGpvaW4gKHNlbGVjdCBpZCwgY29hbGVzY2UodCwgJycpIHx8ICcnIGFzIHQgZnJv bSB3aWRlKSBzIHVzaW5nIChpZCk7CisgbGVuZ3RoIAorLS0tLS0tLS0KKyAzMjAwMDAKKygxIHJv dykKKworc2VsZWN0IGZpbmFsID4gMSBhcyBtdWx0aWJhdGNoCisgIGZyb20gaGFzaF9qb2luX2Jh dGNoZXMoCiskJAorICBzZWxlY3QgbGVuZ3RoKG1heChzLnQpKQorICBmcm9tIHdpZGUgbGVmdCBq b2luIChzZWxlY3QgaWQsIGNvYWxlc2NlKHQsICcnKSB8fCAnJyBhcyB0IGZyb20gd2lkZSkgcyB1 c2luZyAoaWQpOworJCQpOworIG11bHRpYmF0Y2ggCistLS0tLS0tLS0tLS0KKyB0CisoMSByb3cp CisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0gSGFzaCBqb2luIHJldXNlcyB0aGUgSE9UIHN0 YXR1cyBiaXQgdG8gaW5kaWNhdGUgbWF0Y2ggc3RhdHVzLiBUaGlzIGNhbiBvbmx5CistLSBiZSBn dWFyYW50ZWVkIHRvIHByb2R1Y2UgY29ycmVjdCByZXN1bHRzIGlmIGFsbCB0aGUgaGFzaCBqb2lu IHR1cGxlIG1hdGNoCistLSBiaXRzIGFyZSByZXNldCBiZWZvcmUgcmV1c2UuIFRoaXMgaXMgZG9u ZSB1cG9uIGxvYWRpbmcgdGhlbSBpbnRvIHRoZQorLS0gaGFzaHRhYmxlLgorU0FWRVBPSU5UIHNl dHRpbmdzOworU0VUIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb247CitTRVQgbWluX3BhcmFsbGVs X3RhYmxlX3NjYW5fc2l6ZSA9IDA7CitTRVQgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitTRVQg cGFyYWxsZWxfdHVwbGVfY29zdCA9IDA7CitDUkVBVEUgVEFCTEUgaGp0ZXN0X21hdGNoYml0c190 MShpZCBpbnQpOworQ1JFQVRFIFRBQkxFIGhqdGVzdF9tYXRjaGJpdHNfdDIoaWQgaW50KTsKK0lO U0VSVCBJTlRPIGhqdGVzdF9tYXRjaGJpdHNfdDEgVkFMVUVTICgxKTsKK0lOU0VSVCBJTlRPIGhq dGVzdF9tYXRjaGJpdHNfdDIgVkFMVUVTICgyKTsKKy0tIFVwZGF0ZSBzaG91bGQgY3JlYXRlIGEg SE9UIHR1cGxlLiBJZiB0aGlzIHN0YXR1cyBiaXQgaXNuJ3QgY2xlYXJlZCwgd2Ugd29uJ3QKKy0t IGNvcnJlY3RseSBlbWl0IHRoZSBOVUxMLWV4dGVuZGVkIHVubWF0Y2hpbmcgdHVwbGUgaW4gZnVs bCBoYXNoIGpvaW4uCitVUERBVEUgaGp0ZXN0X21hdGNoYml0c190MiBzZXQgaWQgPSAyOworU0VM RUNUICogRlJPTSBoanRlc3RfbWF0Y2hiaXRzX3QxIHQxIEZVTEwgSk9JTiBoanRlc3RfbWF0Y2hi aXRzX3QyIHQyIE9OIHQxLmlkID0gdDIuaWQKKyAgT1JERVIgQlkgdDEuaWQ7CisgaWQgfCBpZCAK Ky0tLS0rLS0tLQorICAxIHwgICAKKyAgICB8ICAyCisoMiByb3dzKQorCistLSBUZXN0IHNlcmlh bCBmdWxsIGhhc2ggam9pbi4KKy0tIFJlc2V0dGluZyBwYXJhbGxlbF9zZXR1cF9jb3N0IHNob3Vs ZCBmb3JjZSBhIHNlcmlhbCBwbGFuLgorLS0gSnVzdCB0byBiZSBzYWZlLCBob3dldmVyLCBzZXQg ZW5hYmxlX3BhcmFsbGVsX2hhc2ggdG8gb2ZmLCBhcyBwYXJhbGxlbCBmdWxsCistLSBoYXNoIGpv aW5zIGFyZSBvbmx5IHN1cHBvcnRlZCB3aXRoIHNoYXJlZCBoYXNodGFibGVzLgorUkVTRVQgcGFy YWxsZWxfc2V0dXBfY29zdDsKK1NFVCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK1NFTEVD VCAqIEZST00gaGp0ZXN0X21hdGNoYml0c190MSB0MSBGVUxMIEpPSU4gaGp0ZXN0X21hdGNoYml0 c190MiB0MiBPTiB0MS5pZCA9IHQyLmlkOworIGlkIHwgaWQgCistLS0tKy0tLS0KKyAgMSB8ICAg CisgICAgfCAgMgorKDIgcm93cykKKworUk9MTEJBQ0sgVE8gc2V0dGluZ3M7Cityb2xsYmFjazsK Ky0tIFZlcmlmeSB0aGF0IGhhc2gga2V5IGV4cHJlc3Npb25zIHJlZmVyZW5jZSB0aGUgY29ycmVj dAorLS0gbm9kZXMuIEhhc2hqb2luJ3MgaGFzaGtleXMgbmVlZCB0byByZWZlcmVuY2UgaXRzIG91 dGVyIHBsYW4sIEhhc2gncworLS0gbmVlZCB0byByZWZlcmVuY2UgSGFzaCdzIG91dGVyIHBsYW4g KHdoaWNoIGlzIGJlbG93IEhhc2hKb2luJ3MKKy0tIGlubmVyIHBsYW4pLiBJdCdzIG5vdCB0cml2 aWFsIHRvIHZlcmlmeSB0aGF0IHRoZSByZWZlcmVuY2VzIGFyZQorLS0gY29ycmVjdCAod2UgZG9u J3QgZGlzcGxheSB0aGUgaGFzaGtleXMgdGhlbXNlbHZlcyksIGJ1dCBpZiB0aGUKKy0tIGhhc2hr ZXlzIGNvbnRhaW4gc3VicGxhbiByZWZlcmVuY2VzLCB0aG9zZSB3aWxsIGJlIGRpc3BsYXllZC4g Rm9yY2UKKy0tIHN1YnBsYW5zIHRvIGFwcGVhciBqdXN0IGFib3V0IGV2ZXJ5d2hlcmUuCistLQor LS0gQnVnIHJlcG9ydDoKKy0tIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQv Q0FQcEhmZHZHVmVnRl9US0tSaUJyU21hdEpMMmRSOXV3RkN1UiUyQnRlUV84dEVYVThteGclNDBt YWlsLmdtYWlsLmNvbQorLS0KK0JFR0lOOworU0VUIExPQ0FMIGVuYWJsZV9zb3J0ID0gT0ZGOyAt LSBhdm9pZCBtZXJnZWpvaW5zCitTRVQgTE9DQUwgZnJvbV9jb2xsYXBzZV9saW1pdCA9IDE7IC0t IGFsbG93cyBlYXN5IGNoYW5naW5nIG9mIGpvaW4gb3JkZXIKK0NSRUFURSBUQUJMRSBoanRlc3Rf MSAoYSB0ZXh0LCBiIGludCwgaWQgaW50LCBjIGJvb2wpOworQ1JFQVRFIFRBQkxFIGhqdGVzdF8y IChhIGJvb2wsIGlkIGludCwgYiB0ZXh0LCBjIGludCk7CitJTlNFUlQgSU5UTyBoanRlc3RfMShh LCBiLCBpZCwgYykgVkFMVUVTICgndGV4dCcsIDIsIDEsIGZhbHNlKTsgLS0gbWF0Y2hlcworSU5T RVJUIElOVE8gaGp0ZXN0XzEoYSwgYiwgaWQsIGMpIFZBTFVFUyAoJ3RleHQnLCAxLCAyLCBmYWxz ZSk7IC0tIGZhaWxzIGlkIGpvaW4gY29uZGl0aW9uCitJTlNFUlQgSU5UTyBoanRlc3RfMShhLCBi LCBpZCwgYykgVkFMVUVTICgndGV4dCcsIDIwLCAxLCBmYWxzZSk7IC0tIGZhaWxzIDwgNTAKK0lO U0VSVCBJTlRPIGhqdGVzdF8xKGEsIGIsIGlkLCBjKSBWQUxVRVMgKCd0ZXh0JywgMSwgMSwgZmFs c2UpOyAtLSBmYWlscyAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1KSA9IChTRUxFQ1QgaGp0ZXN0XzIu Yyo1KQorSU5TRVJUIElOVE8gaGp0ZXN0XzIoYSwgaWQsIGIsIGMpIFZBTFVFUyAodHJ1ZSwgMSwg J2Fub3RoZXInLCAyKTsgLS0gbWF0Y2hlcworSU5TRVJUIElOVE8gaGp0ZXN0XzIoYSwgaWQsIGIs IGMpIFZBTFVFUyAodHJ1ZSwgMywgJ2Fub3RoZXInLCA3KTsgLS0gZmFpbHMgaWQgam9pbiBjb25k aXRpb24KK0lOU0VSVCBJTlRPIGhqdGVzdF8yKGEsIGlkLCBiLCBjKSBWQUxVRVMgKHRydWUsIDEs ICdhbm90aGVyJywgOTApOyAgLS0gZmFpbHMgPCA1NQorSU5TRVJUIElOVE8gaGp0ZXN0XzIoYSwg aWQsIGIsIGMpIFZBTFVFUyAodHJ1ZSwgMSwgJ2Fub3RoZXInLCAzKTsgLS0gZmFpbHMgKFNFTEVD VCBoanRlc3RfMS5iICogNSkgPSAoU0VMRUNUIGhqdGVzdF8yLmMqNSkKK0lOU0VSVCBJTlRPIGhq dGVzdF8yKGEsIGlkLCBiLCBjKSBWQUxVRVMgKHRydWUsIDEsICd0ZXh0JywgMSk7IC0tICBmYWls cyBoanRlc3RfMS5hIDw+IGhqdGVzdF8yLmI7CitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0Up CitTRUxFQ1QgaGp0ZXN0XzEuYSBhMSwgaGp0ZXN0XzIuYSBhMixoanRlc3RfMS50YWJsZW9pZDo6 cmVnY2xhc3MgdDEsIGhqdGVzdF8yLnRhYmxlb2lkOjpyZWdjbGFzcyB0MgorRlJPTSBoanRlc3Rf MSwgaGp0ZXN0XzIKK1dIRVJFCisgICAgaGp0ZXN0XzEuaWQgPSAoU0VMRUNUIDEgV0hFUkUgaGp0 ZXN0XzIuaWQgPSAxKQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1KSA9IChTRUxFQ1Qg aGp0ZXN0XzIuYyo1KQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1KSA8IDUwCisgICAg QU5EIChTRUxFQ1QgaGp0ZXN0XzIuYyAqIDUpIDwgNTUKKyAgICBBTkQgaGp0ZXN0XzEuYSA8PiBo anRlc3RfMi5iOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBIYXNoIEpvaW4KKyAgIE91dHB1 dDogaGp0ZXN0XzEuYSwgaGp0ZXN0XzIuYSwgKGhqdGVzdF8xLnRhYmxlb2lkKTo6cmVnY2xhc3Ms IChoanRlc3RfMi50YWJsZW9pZCk6OnJlZ2NsYXNzCisgICBIYXNoIENvbmQ6ICgoaGp0ZXN0XzEu aWQgPSAoU3ViUGxhbiAxKSkgQU5EICgoU3ViUGxhbiAyKSA9IChTdWJQbGFuIDMpKSkKKyAgIEpv aW4gRmlsdGVyOiAoaGp0ZXN0XzEuYSA8PiBoanRlc3RfMi5iKQorICAgLT4gIFNlcSBTY2FuIG9u IHB1YmxpYy5oanRlc3RfMQorICAgICAgICAgT3V0cHV0OiBoanRlc3RfMS5hLCBoanRlc3RfMS50 YWJsZW9pZCwgaGp0ZXN0XzEuaWQsIGhqdGVzdF8xLmIKKyAgICAgICAgIEZpbHRlcjogKChTdWJQ bGFuIDQpIDwgNTApCisgICAgICAgICBTdWJQbGFuIDQKKyAgICAgICAgICAgLT4gIFJlc3VsdAor ICAgICAgICAgICAgICAgICBPdXRwdXQ6IChoanRlc3RfMS5iICogNSkKKyAgIC0+ICBIYXNoCisg ICAgICAgICBPdXRwdXQ6IGhqdGVzdF8yLmEsIGhqdGVzdF8yLnRhYmxlb2lkLCBoanRlc3RfMi5p ZCwgaGp0ZXN0XzIuYywgaGp0ZXN0XzIuYgorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1Ymxp Yy5oanRlc3RfMgorICAgICAgICAgICAgICAgT3V0cHV0OiBoanRlc3RfMi5hLCBoanRlc3RfMi50 YWJsZW9pZCwgaGp0ZXN0XzIuaWQsIGhqdGVzdF8yLmMsIGhqdGVzdF8yLmIKKyAgICAgICAgICAg ICAgIEZpbHRlcjogKChTdWJQbGFuIDUpIDwgNTUpCisgICAgICAgICAgICAgICBTdWJQbGFuIDUK KyAgICAgICAgICAgICAgICAgLT4gIFJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IChoanRlc3RfMi5jICogNSkKKyAgICAgICAgIFN1YlBsYW4gMQorICAgICAgICAgICAtPiAg UmVzdWx0CisgICAgICAgICAgICAgICAgIE91dHB1dDogMQorICAgICAgICAgICAgICAgICBPbmUt VGltZSBGaWx0ZXI6IChoanRlc3RfMi5pZCA9IDEpCisgICAgICAgICBTdWJQbGFuIDMKKyAgICAg ICAgICAgLT4gIFJlc3VsdAorICAgICAgICAgICAgICAgICBPdXRwdXQ6IChoanRlc3RfMi5jICog NSkKKyAgIFN1YlBsYW4gMgorICAgICAtPiAgUmVzdWx0CisgICAgICAgICAgIE91dHB1dDogKGhq dGVzdF8xLmIgKiA1KQorKDI4IHJvd3MpCisKK1NFTEVDVCBoanRlc3RfMS5hIGExLCBoanRlc3Rf Mi5hIGEyLGhqdGVzdF8xLnRhYmxlb2lkOjpyZWdjbGFzcyB0MSwgaGp0ZXN0XzIudGFibGVvaWQ6 OnJlZ2NsYXNzIHQyCitGUk9NIGhqdGVzdF8xLCBoanRlc3RfMgorV0hFUkUKKyAgICBoanRlc3Rf MS5pZCA9IChTRUxFQ1QgMSBXSEVSRSBoanRlc3RfMi5pZCA9IDEpCisgICAgQU5EIChTRUxFQ1Qg aGp0ZXN0XzEuYiAqIDUpID0gKFNFTEVDVCBoanRlc3RfMi5jKjUpCisgICAgQU5EIChTRUxFQ1Qg aGp0ZXN0XzEuYiAqIDUpIDwgNTAKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMi5jICogNSkgPCA1 NQorICAgIEFORCBoanRlc3RfMS5hIDw+IGhqdGVzdF8yLmI7CisgIGExICB8IGEyIHwgICAgdDEg ICAgfCAgICB0MiAgICAKKy0tLS0tLSstLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHRleHQg fCB0ICB8IGhqdGVzdF8xIHwgaGp0ZXN0XzIKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZG LCBWRVJCT1NFKQorU0VMRUNUIGhqdGVzdF8xLmEgYTEsIGhqdGVzdF8yLmEgYTIsaGp0ZXN0XzEu dGFibGVvaWQ6OnJlZ2NsYXNzIHQxLCBoanRlc3RfMi50YWJsZW9pZDo6cmVnY2xhc3MgdDIKK0ZS T00gaGp0ZXN0XzIsIGhqdGVzdF8xCitXSEVSRQorICAgIGhqdGVzdF8xLmlkID0gKFNFTEVDVCAx IFdIRVJFIGhqdGVzdF8yLmlkID0gMSkKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMS5iICogNSkg PSAoU0VMRUNUIGhqdGVzdF8yLmMqNSkKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMS5iICogNSkg PCA1MAorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8yLmMgKiA1KSA8IDU1CisgICAgQU5EIGhqdGVz dF8xLmEgPD4gaGp0ZXN0XzIuYjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSGFzaCBKb2lu CisgICBPdXRwdXQ6IGhqdGVzdF8xLmEsIGhqdGVzdF8yLmEsIChoanRlc3RfMS50YWJsZW9pZCk6 OnJlZ2NsYXNzLCAoaGp0ZXN0XzIudGFibGVvaWQpOjpyZWdjbGFzcworICAgSGFzaCBDb25kOiAo KChTdWJQbGFuIDEpID0gaGp0ZXN0XzEuaWQpIEFORCAoKFN1YlBsYW4gMykgPSAoU3ViUGxhbiAy KSkpCisgICBKb2luIEZpbHRlcjogKGhqdGVzdF8xLmEgPD4gaGp0ZXN0XzIuYikKKyAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuaGp0ZXN0XzIKKyAgICAgICAgIE91dHB1dDogaGp0ZXN0XzIuYSwg aGp0ZXN0XzIudGFibGVvaWQsIGhqdGVzdF8yLmlkLCBoanRlc3RfMi5jLCBoanRlc3RfMi5iCisg ICAgICAgICBGaWx0ZXI6ICgoU3ViUGxhbiA1KSA8IDU1KQorICAgICAgICAgU3ViUGxhbiA1Cisg ICAgICAgICAgIC0+ICBSZXN1bHQKKyAgICAgICAgICAgICAgICAgT3V0cHV0OiAoaGp0ZXN0XzIu YyAqIDUpCisgICAtPiAgSGFzaAorICAgICAgICAgT3V0cHV0OiBoanRlc3RfMS5hLCBoanRlc3Rf MS50YWJsZW9pZCwgaGp0ZXN0XzEuaWQsIGhqdGVzdF8xLmIKKyAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMuaGp0ZXN0XzEKKyAgICAgICAgICAgICAgIE91dHB1dDogaGp0ZXN0XzEuYSwg aGp0ZXN0XzEudGFibGVvaWQsIGhqdGVzdF8xLmlkLCBoanRlc3RfMS5iCisgICAgICAgICAgICAg ICBGaWx0ZXI6ICgoU3ViUGxhbiA0KSA8IDUwKQorICAgICAgICAgICAgICAgU3ViUGxhbiA0Cisg ICAgICAgICAgICAgICAgIC0+ICBSZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiAoaGp0ZXN0XzEuYiAqIDUpCisgICAgICAgICBTdWJQbGFuIDIKKyAgICAgICAgICAgLT4gIFJl c3VsdAorICAgICAgICAgICAgICAgICBPdXRwdXQ6IChoanRlc3RfMS5iICogNSkKKyAgIFN1YlBs YW4gMQorICAgICAtPiAgUmVzdWx0CisgICAgICAgICAgIE91dHB1dDogMQorICAgICAgICAgICBP bmUtVGltZSBGaWx0ZXI6IChoanRlc3RfMi5pZCA9IDEpCisgICBTdWJQbGFuIDMKKyAgICAgLT4g IFJlc3VsdAorICAgICAgICAgICBPdXRwdXQ6IChoanRlc3RfMi5jICogNSkKKygyOCByb3dzKQor CitTRUxFQ1QgaGp0ZXN0XzEuYSBhMSwgaGp0ZXN0XzIuYSBhMixoanRlc3RfMS50YWJsZW9pZDo6 cmVnY2xhc3MgdDEsIGhqdGVzdF8yLnRhYmxlb2lkOjpyZWdjbGFzcyB0MgorRlJPTSBoanRlc3Rf MiwgaGp0ZXN0XzEKK1dIRVJFCisgICAgaGp0ZXN0XzEuaWQgPSAoU0VMRUNUIDEgV0hFUkUgaGp0 ZXN0XzIuaWQgPSAxKQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1KSA9IChTRUxFQ1Qg aGp0ZXN0XzIuYyo1KQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1KSA8IDUwCisgICAg QU5EIChTRUxFQ1QgaGp0ZXN0XzIuYyAqIDUpIDwgNTUKKyAgICBBTkQgaGp0ZXN0XzEuYSA8PiBo anRlc3RfMi5iOworICBhMSAgfCBhMiB8ICAgIHQxICAgIHwgICAgdDIgICAgCistLS0tLS0rLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyB0ZXh0IHwgdCAgfCBoanRlc3RfMSB8IGhqdGVzdF8y CisoMSByb3cpCisKK1JPTExCQUNLOworLS0gVmVyaWZ5IHRoYXQgd2UgYmVoYXZlIHNhbmVseSB3 aGVuIHRoZSBpbm5lciBoYXNoIGtleXMgY29udGFpbiBwYXJhbWV0ZXJzCistLSAodGhhdCBpcywg b3V0ZXIgb3IgbGF0ZXJhbCByZWZlcmVuY2VzKS4gIFRoaXMgc2l0dWF0aW9uIGhhcyB0byBkZWZl YXQKKy0tIHJlLXVzZSBvZiB0aGUgaW5uZXIgaGFzaCB0YWJsZSBhY3Jvc3MgcmVzY2Fucy4KK2Jl Z2luOworc2V0IGxvY2FsIGVuYWJsZV9oYXNoam9pbiA9IG9uOworZXhwbGFpbiAoY29zdHMgb2Zm KQorc2VsZWN0IGk4LnEyLCBzcy4qIGZyb20KK2ludDhfdGJsIGk4LAorbGF0ZXJhbCAoc2VsZWN0 IHQxLmZpdmV0aG91cywgaTQuZjEgZnJvbSB0ZW5rMSB0MSBqb2luIGludDRfdGJsIGk0CisgICAg ICAgICBvbiB0MS5maXZldGhvdXMgPSBpNC5mMStpOC5xMiBvcmRlciBieSAxLDIpIHNzOworICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgTmVzdGVkIExvb3AKKyAgIC0+ICBTZXEgU2NhbiBvbiBpbnQ4X3RibCBpOAorICAgLT4g IFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiB0MS5maXZldGhvdXMsIGk0LmYxCisgICAgICAgICAt PiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS5maXZldGhvdXMgPSAo aTQuZjEgKyBpOC5xMikpCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gdGVuazEgdDEK KyAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gaW50NF90YmwgaTQKKyg5IHJvd3MpCisKK3NlbGVjdCBpOC5xMiwgc3MuKiBmcm9tCitp bnQ4X3RibCBpOCwKK2xhdGVyYWwgKHNlbGVjdCB0MS5maXZldGhvdXMsIGk0LmYxIGZyb20gdGVu azEgdDEgam9pbiBpbnQ0X3RibCBpNAorICAgICAgICAgb24gdDEuZml2ZXRob3VzID0gaTQuZjEr aTgucTIgb3JkZXIgYnkgMSwyKSBzczsKKyBxMiAgfCBmaXZldGhvdXMgfCBmMSAKKy0tLS0tKy0t LS0tLS0tLS0tKy0tLS0KKyA0NTYgfCAgICAgICA0NTYgfCAgMAorIDQ1NiB8ICAgICAgIDQ1NiB8 ICAwCisgMTIzIHwgICAgICAgMTIzIHwgIDAKKyAxMjMgfCAgICAgICAxMjMgfCAgMAorKDQgcm93 cykKKworcm9sbGJhY2s7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pv aW5faGFzaF9wZ2x6Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbl9oYXNoX3Bn bHoub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45OWM2N2Y5ODJh ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbl9oYXNo X3BnbHoub3V0CkBAIC0wLDAgKzEsMTE2NiBAQAorLS0KKy0tIGV4ZXJjaXNlcyBmb3IgdGhlIGhh c2ggam9pbiBjb2RlCistLQorYmVnaW47CitzZXQgbG9jYWwgbWluX3BhcmFsbGVsX3RhYmxlX3Nj YW5fc2l6ZSA9IDA7CitzZXQgbG9jYWwgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitzZXQgbG9j YWwgZW5hYmxlX2hhc2hqb2luID0gb247CitzZXQgbG9jYWwgdGVtcF9maWxlX2NvbXByZXNzaW9u ID0gJ3BnbHonOworLS0gRXh0cmFjdCBidWNrZXQgYW5kIGJhdGNoIGNvdW50cyBmcm9tIGFuIGV4 cGxhaW4gYW5hbHl6ZSBwbGFuLiAgSW4KKy0tIGdlbmVyYWwgd2UgY2FuJ3QgbWFrZSBhc3NlcnRp b25zIGFib3V0IGhvdyBtYW55IGJhdGNoZXMgKG9yCistLSBidWNrZXRzKSB3aWxsIGJlIHJlcXVp cmVkIGJlY2F1c2UgaXQgY2FuIHZhcnksIGJ1dCB3ZSBjYW4gaW4gc29tZQorLS0gc3BlY2lhbCBj YXNlcyBhbmQgd2UgY2FuIGNoZWNrIGZvciBncm93dGguCitjcmVhdGUgb3IgcmVwbGFjZSBmdW5j dGlvbiBmaW5kX2hhc2gobm9kZSBqc29uKQorcmV0dXJucyBqc29uIGxhbmd1YWdlIHBscGdzcWwK K2FzCiskJAorZGVjbGFyZQorICB4IGpzb247CisgIGNoaWxkIGpzb247CitiZWdpbgorICBpZiBu b2RlLT4+J05vZGUgVHlwZScgPSAnSGFzaCcgdGhlbgorICAgIHJldHVybiBub2RlOworICBlbHNl CisgICAgZm9yIGNoaWxkIGluIHNlbGVjdCBqc29uX2FycmF5X2VsZW1lbnRzKG5vZGUtPidQbGFu cycpCisgICAgbG9vcAorICAgICAgeCA6PSBmaW5kX2hhc2goY2hpbGQpOworICAgICAgaWYgeCBp cyBub3QgbnVsbCB0aGVuCisgICAgICAgIHJldHVybiB4OworICAgICAgZW5kIGlmOworICAgIGVu ZCBsb29wOworICAgIHJldHVybiBudWxsOworICBlbmQgaWY7CitlbmQ7CiskJDsKK2NyZWF0ZSBv ciByZXBsYWNlIGZ1bmN0aW9uIGhhc2hfam9pbl9iYXRjaGVzKHF1ZXJ5IHRleHQpCityZXR1cm5z IHRhYmxlIChvcmlnaW5hbCBpbnQsIGZpbmFsIGludCkgbGFuZ3VhZ2UgcGxwZ3NxbAorYXMKKyQk CitkZWNsYXJlCisgIHdob2xlX3BsYW4ganNvbjsKKyAgaGFzaF9ub2RlIGpzb247CitiZWdpbgor ICBmb3Igd2hvbGVfcGxhbiBpbgorICAgIGV4ZWN1dGUgJ2V4cGxhaW4gKGFuYWx5emUsIGZvcm1h dCAnJ2pzb24nJykgJyB8fCBxdWVyeQorICBsb29wCisgICAgaGFzaF9ub2RlIDo9IGZpbmRfaGFz aChqc29uX2V4dHJhY3RfcGF0aCh3aG9sZV9wbGFuLCAnMCcsICdQbGFuJykpOworICAgIG9yaWdp bmFsIDo9IGhhc2hfbm9kZS0+PidPcmlnaW5hbCBIYXNoIEJhdGNoZXMnOworICAgIGZpbmFsIDo9 IGhhc2hfbm9kZS0+PidIYXNoIEJhdGNoZXMnOworICAgIHJldHVybiBuZXh0OworICBlbmQgbG9v cDsKK2VuZDsKKyQkOworLS0gTWFrZSBhIHNpbXBsZSByZWxhdGlvbiB3aXRoIHdlbGwgZGlzdHJp YnV0ZWQga2V5cyBhbmQgY29ycmVjdGx5CistLSBlc3RpbWF0ZWQgc2l6ZS4KK2NyZWF0ZSB0YWJs ZSBzaW1wbGUgYXMKKyAgc2VsZWN0IGdlbmVyYXRlX3NlcmllcygxLCAyMDAwMCkgQVMgaWQsICdh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhJzsKK2FsdGVyIHRhYmxlIHNpbXBsZSBz ZXQgKHBhcmFsbGVsX3dvcmtlcnMgPSAyKTsKK2FuYWx5emUgc2ltcGxlOworLS0gTWFrZSBhIHJl bGF0aW9uIHdob3NlIHNpemUgd2Ugd2lsbCB1bmRlci1lc3RpbWF0ZS4gIFdlIHdhbnQgc3RhdHMK Ky0tIHRvIHNheSAxMDAwIHJvd3MsIGJ1dCBhY3R1YWxseSB0aGVyZSBhcmUgMjAsMDAwIHJvd3Mu CitjcmVhdGUgdGFibGUgYmlnZ2VyX3RoYW5faXRfbG9va3MgYXMKKyAgc2VsZWN0IGdlbmVyYXRl X3NlcmllcygxLCAyMDAwMCkgYXMgaWQsICdhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhJzsKK2FsdGVyIHRhYmxlIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHNldCAoYXV0b3ZhY3V1bV9l bmFibGVkID0gJ2ZhbHNlJyk7CithbHRlciB0YWJsZSBiaWdnZXJfdGhhbl9pdF9sb29rcyBzZXQg KHBhcmFsbGVsX3dvcmtlcnMgPSAyKTsKK2FuYWx5emUgYmlnZ2VyX3RoYW5faXRfbG9va3M7Cit1 cGRhdGUgcGdfY2xhc3Mgc2V0IHJlbHR1cGxlcyA9IDEwMDAgd2hlcmUgcmVsbmFtZSA9ICdiaWdn ZXJfdGhhbl9pdF9sb29rcyc7CistLSBNYWtlIGEgcmVsYXRpb24gd2hvc2Ugc2l6ZSB3ZSB1bmRl cmVzdGltYXRlIGFuZCB0aGF0IGFsc28gaGFzIGEKKy0tIGtpbmQgb2Ygc2tldyB0aGF0IGJyZWFr cyBvdXIgYmF0Y2hpbmcgc2NoZW1lLiAgV2Ugd2FudCBzdGF0cyB0byBzYXkKKy0tIDIgcm93cywg YnV0IGFjdHVhbGx5IHRoZXJlIGFyZSAyMCwwMDAgcm93cyB3aXRoIHRoZSBzYW1lIGtleS4KK2Ny ZWF0ZSB0YWJsZSBleHRyZW1lbHlfc2tld2VkIChpZCBpbnQsIHQgdGV4dCk7CithbHRlciB0YWJs ZSBleHRyZW1lbHlfc2tld2VkIHNldCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gJ2ZhbHNlJyk7Cith bHRlciB0YWJsZSBleHRyZW1lbHlfc2tld2VkIHNldCAocGFyYWxsZWxfd29ya2VycyA9IDIpOwor YW5hbHl6ZSBleHRyZW1lbHlfc2tld2VkOworaW5zZXJ0IGludG8gZXh0cmVtZWx5X3NrZXdlZAor ICBzZWxlY3QgNDIgYXMgaWQsICdhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhJwor ICBmcm9tIGdlbmVyYXRlX3NlcmllcygxLCAyMDAwMCk7Cit1cGRhdGUgcGdfY2xhc3MKKyAgc2V0 IHJlbHR1cGxlcyA9IDIsIHJlbHBhZ2VzID0gcGdfcmVsYXRpb25fc2l6ZSgnZXh0cmVtZWx5X3Nr ZXdlZCcpIC8gODE5MgorICB3aGVyZSByZWxuYW1lID0gJ2V4dHJlbWVseV9za2V3ZWQnOworLS0g TWFrZSBhIHJlbGF0aW9uIHdpdGggYSBjb3VwbGUgb2YgZW5vcm1vdXMgdHVwbGVzLgorY3JlYXRl IHRhYmxlIHdpZGUgYXMgc2VsZWN0IGdlbmVyYXRlX3NlcmllcygxLCAyKSBhcyBpZCwgcnBhZCgn JywgMzIwMDAwLCAneCcpIGFzIHQ7CithbHRlciB0YWJsZSB3aWRlIHNldCAocGFyYWxsZWxfd29y a2VycyA9IDIpOworLS0gVGhlICJvcHRpbWFsIiBjYXNlOiB0aGUgaGFzaCB0YWJsZSBmaXRzIGlu IG1lbW9yeTsgd2UgcGxhbiBmb3IgMQorLS0gYmF0Y2gsIHdlIHN0aWNrIHRvIHRoYXQgbnVtYmVy LCBhbmQgcGVhayBtZW1vcnkgdXNhZ2Ugc3RheXMgd2l0aGluCistLSBvdXIgd29ya19tZW0gYnVk Z2V0CistLSBub24tcGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhf cGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKK3NldCBsb2NhbCB3b3JrX21lbSA9ICc0 TUInOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0 cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNp bmcgKGlkKTsKKyAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBI YXNoIEpvaW4KKyAgICAgICAgIEhhc2ggQ29uZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHNpbXBsZSByCisgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHNpbXBsZSBzCisoNiByb3dzKQorCitzZWxlY3QgY291bnQoKikgZnJv bSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CisgY291bnQgCistLS0tLS0tCisg MjAwMDAKKygxIHJvdykKKworc2VsZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGli YXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hf am9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBz aW1wbGUgcyB1c2luZyAoaWQpOworJCQpOworIGluaXRpYWxseV9tdWx0aWJhdGNoIHwgaW5jcmVh c2VkX2JhdGNoZXMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0K KyBmICAgICAgICAgICAgICAgICAgICB8IGYKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGlu Z3M7CistLSBwYXJhbGxlbCB3aXRoIHBhcmFsbGVsLW9ibGl2aW91cyBoYXNoIGpvaW4KK3NhdmVw b2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVy ID0gMjsKK3NldCBsb2NhbCB3b3JrX21lbSA9ICc0TUInOworc2V0IGxvY2FsIGhhc2hfbWVtX211 bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7Citl eHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4g c2ltcGxlIHMgdXNpbmcgKGlkKTsKKyAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5hbGl6ZSBBZ2dyZWdhdGUKKyAgIC0+ICBHYXRoZXIK KyAgICAgICAgIFdvcmtlcnMgUGxhbm5lZDogMgorICAgICAgICAgLT4gIFBhcnRpYWwgQWdncmVn YXRlCisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBI YXNoIENvbmQ6IChyLmlkID0gcy5pZCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxl bCBTZXEgU2NhbiBvbiBzaW1wbGUgcgorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcworKDkgcm93 cykKKworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAo aWQpOworIGNvdW50IAorLS0tLS0tLQorIDIwMDAwCisoMSByb3cpCisKK3NlbGVjdCBvcmlnaW5h bCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gsIGZpbmFsID4gb3JpZ2luYWwgYXMgaW5jcmVh c2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3Vu dCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyQkKTsKKyBpbml0 aWFsbHlfbXVsdGliYXRjaCB8IGluY3JlYXNlZF9iYXRjaGVzIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisgZiAgICAgICAgICAgICAgICAgICAgfCBmCisoMSBy b3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0gcGFyYWxsZWwgd2l0aCBwYXJhbGxlbC1h d2FyZSBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxs ZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3NldCBsb2NhbCB3b3JrX21lbSA9ICc0TUInOwor c2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwgZW5hYmxlX3Bh cmFsbGVsX2hhc2ggPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCop IGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZp bmFsaXplIEFnZ3JlZ2F0ZQorICAgLT4gIEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVk OiAyCisgICAgICAgICAtPiAgUGFydGlhbCBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIC0+ICBQ YXJhbGxlbCBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHIuaWQg PSBzLmlkKQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHNp bXBsZSByCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIHNpbXBsZSBzCisoOSBy b3dzKQorCitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5n IChpZCk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworc2VsZWN0IG9yaWdp bmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNy ZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNv dW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworJCQpOworIGlu aXRpYWxseV9tdWx0aWJhdGNoIHwgaW5jcmVhc2VkX2JhdGNoZXMgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmICAgICAgICAgICAgICAgICAgICB8IGYKKygx IHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBUaGUgImdvb2QiIGNhc2U6IGJhdGNo ZXMgcmVxdWlyZWQsIGJ1dCB3ZSBwbGFuIHRoZSByaWdodCBudW1iZXI7IHdlCistLSBwbGFuIGZv ciBzb21lIG51bWJlciBvZiBiYXRjaGVzLCBhbmQgd2Ugc3RpY2sgdG8gdGhhdCBudW1iZXIsIGFu ZAorLS0gcGVhayBtZW1vcnkgdXNhZ2Ugc2F5cyB3aXRoaW4gb3VyIHdvcmtfbWVtIGJ1ZGdldAor LS0gbm9uLXBhcmFsbGVsCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFs bGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnMTI4a0In Oworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0cyBv ZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcg KGlkKTsKKyAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBIYXNo IEpvaW4KKyAgICAgICAgIEhhc2ggQ29uZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIHNpbXBsZSByCisgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHNpbXBsZSBzCisoNiByb3dzKQorCitzZWxlY3QgY291bnQoKikgZnJvbSBz aW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CisgY291bnQgCistLS0tLS0tCisgMjAw MDAKKygxIHJvdykKKworc2VsZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRj aCwgZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9p bl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1w bGUgcyB1c2luZyAoaWQpOworJCQpOworIGluaXRpYWxseV9tdWx0aWJhdGNoIHwgaW5jcmVhc2Vk X2JhdGNoZXMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0 ICAgICAgICAgICAgICAgICAgICB8IGYKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7 CistLSBwYXJhbGxlbCB3aXRoIHBhcmFsbGVsLW9ibGl2aW91cyBoYXNoIGpvaW4KK3NhdmVwb2lu dCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0g MjsKK3NldCBsb2NhbCB3b3JrX21lbSA9ICcxMjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVs dGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK2V4 cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBz aW1wbGUgcyB1c2luZyAoaWQpOworICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQorICAgLT4gIEdhdGhlcgor ICAgICAgICAgV29ya2VycyBQbGFubmVkOiAyCisgICAgICAgICAtPiAgUGFydGlhbCBBZ2dyZWdh dGUKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIEhh c2ggQ29uZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVs IFNlcSBTY2FuIG9uIHNpbXBsZSByCisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHNpbXBsZSBzCisoOSByb3dz KQorCitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChp ZCk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworc2VsZWN0IG9yaWdpbmFs ID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFz ZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50 KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworJCQpOworIGluaXRp YWxseV9tdWx0aWJhdGNoIHwgaW5jcmVhc2VkX2JhdGNoZXMgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgICAgICAgICAgICB8IGYKKygxIHJv dykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBwYXJhbGxlbCB3aXRoIHBhcmFsbGVsLWF3 YXJlIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxl bF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzE5MmtCJzsK K3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0IGxvY2FsIGVuYWJsZV9w YXJhbGxlbF9oYXNoID0gb247CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgq KSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBG aW5hbGl6ZSBBZ2dyZWdhdGUKKyAgIC0+ICBHYXRoZXIKKyAgICAgICAgIFdvcmtlcnMgUGxhbm5l ZDogMgorICAgICAgICAgLT4gIFBhcnRpYWwgQWdncmVnYXRlCisgICAgICAgICAgICAgICAtPiAg UGFyYWxsZWwgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6IChyLmlk ID0gcy5pZCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBz aW1wbGUgcgorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2gKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBzaW1wbGUgcworKDkg cm93cykKKworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2lu ZyAoaWQpOworIGNvdW50IAorLS0tLS0tLQorIDIwMDAwCisoMSByb3cpCisKK3NlbGVjdCBvcmln aW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gsIGZpbmFsID4gb3JpZ2luYWwgYXMgaW5j cmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBj b3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyQkKTsKKyBp bml0aWFsbHlfbXVsdGliYXRjaCB8IGluY3JlYXNlZF9iYXRjaGVzIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICAgICAgICAgICAgICAgfCBmCiso MSByb3cpCisKKy0tIHBhcmFsbGVsIGZ1bGwgbXVsdGktYmF0Y2ggaGFzaCBqb2luCitzZWxlY3Qg Y291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlk KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCityb2xsYmFjayB0byBzZXR0 aW5nczsKKy0tIFRoZSAiYmFkIiBjYXNlOiBkdXJpbmcgZXhlY3V0aW9uIHdlIG5lZWQgdG8gaW5j cmVhc2UgbnVtYmVyIG9mCistLSBiYXRjaGVzOyBpbiB0aGlzIGNhc2Ugd2UgcGxhbiBmb3IgMSBi YXRjaCwgYW5kIGluY3JlYXNlIGF0IGxlYXN0IGEKKy0tIGNvdXBsZSBvZiB0aW1lcywgYW5kIHBl YWsgbWVtb3J5IHVzYWdlIHN0YXlzIHdpdGhpbiBvdXIgd29ya19tZW0KKy0tIGJ1ZGdldAorLS0g bm9uLXBhcmFsbGVsCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVs X3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnMTI4a0InOwor c2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0cyBvZmYp CisgIHNlbGVjdCBjb3VudCgqKSBGUk9NIHNpbXBsZSByIEpPSU4gYmlnZ2VyX3RoYW5faXRfbG9v a3MgcyBVU0lORyAoaWQpOworICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgIEhh c2ggQ29uZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHNpbXBsZSBy CisgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGJpZ2dl cl90aGFuX2l0X2xvb2tzIHMKKyg2IHJvd3MpCisKK3NlbGVjdCBjb3VudCgqKSBGUk9NIHNpbXBs ZSByIEpPSU4gYmlnZ2VyX3RoYW5faXRfbG9va3MgcyBVU0lORyAoaWQpOworIGNvdW50IAorLS0t LS0tLQorIDIwMDAwCisoMSByb3cpCisKK3NlbGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5 X211bHRpYmF0Y2gsIGZpbmFsID4gb3JpZ2luYWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJv bSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBGUk9NIHNpbXBsZSBy IEpPSU4gYmlnZ2VyX3RoYW5faXRfbG9va3MgcyBVU0lORyAoaWQpOworJCQpOworIGluaXRpYWxs eV9tdWx0aWJhdGNoIHwgaW5jcmVhc2VkX2JhdGNoZXMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0KKyBmICAgICAgICAgICAgICAgICAgICB8IHQKKygxIHJvdykK Kworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBwYXJhbGxlbCB3aXRoIHBhcmFsbGVsLW9ibGl2 aW91cyBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxs ZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3NldCBsb2NhbCB3b3JrX21lbSA9ICcxMjhrQic7 CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBlbmFibGVf cGFyYWxsZWxfaGFzaCA9IG9mZjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50 KCopIGZyb20gc2ltcGxlIHIgam9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQorICAgLT4gIEdhdGhl cgorICAgICAgICAgV29ya2VycyBQbGFubmVkOiAyCisgICAgICAgICAtPiAgUGFydGlhbCBBZ2dy ZWdhdGUKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAg IEhhc2ggQ29uZDogKHIuaWQgPSBzLmlkKQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFs bGVsIFNlcSBTY2FuIG9uIHNpbXBsZSByCisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGJpZ2dlcl90aGFuX2l0 X2xvb2tzIHMKKyg5IHJvd3MpCisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4g YmlnZ2VyX3RoYW5faXRfbG9va3MgcyB1c2luZyAoaWQpOworIGNvdW50IAorLS0tLS0tLQorIDIw MDAwCisoMSByb3cpCisKK3NlbGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0 Y2gsIGZpbmFsID4gb3JpZ2luYWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pv aW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gYmln Z2VyX3RoYW5faXRfbG9va3MgcyB1c2luZyAoaWQpOworJCQpOworIGluaXRpYWxseV9tdWx0aWJh dGNoIHwgaW5jcmVhc2VkX2JhdGNoZXMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0KKyBmICAgICAgICAgICAgICAgICAgICB8IHQKKygxIHJvdykKKworcm9sbGJh Y2sgdG8gc2V0dGluZ3M7CistLSBwYXJhbGxlbCB3aXRoIHBhcmFsbGVsLWF3YXJlIGhhc2ggam9p bgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Bl cl9nYXRoZXIgPSAxOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzE5MmtCJzsKK3NldCBsb2NhbCBo YXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNo ID0gb247CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBs ZSByIGpvaW4gYmlnZ2VyX3RoYW5faXRfbG9va3MgcyB1c2luZyAoaWQpOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5hbGl6ZSBBZ2dyZWdhdGUKKyAgIC0+ICBH YXRoZXIKKyAgICAgICAgIFdvcmtlcnMgUGxhbm5lZDogMQorICAgICAgICAgLT4gIFBhcnRpYWwg QWdncmVnYXRlCisgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaCBKb2luCisgICAgICAg ICAgICAgICAgICAgICBIYXNoIENvbmQ6IChyLmlkID0gcy5pZCkKKyAgICAgICAgICAgICAgICAg ICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBzaW1wbGUgcgorICAgICAgICAgICAgICAgICAg ICAgLT4gIFBhcmFsbGVsIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJh bGxlbCBTZXEgU2NhbiBvbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzCisoOSByb3dzKQorCitzZWxl Y3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMgdXNp bmcgKGlkKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitzZWxlY3Qgb3Jp Z2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFsIGFzIGlu Y3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3Qg Y291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMgdXNpbmcg KGlkKTsKKyQkKTsKKyBpbml0aWFsbHlfbXVsdGliYXRjaCB8IGluY3JlYXNlZF9iYXRjaGVzIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisgZiAgICAgICAgICAg ICAgICAgICAgfCB0CisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0gVGhlICJ1 Z2x5IiBjYXNlOiBpbmNyZWFzaW5nIHRoZSBudW1iZXIgb2YgYmF0Y2hlcyBkdXJpbmcgZXhlY3V0 aW9uCistLSBkb2Vzbid0IGhlbHAsIHNvIHN0b3AgdHJ5aW5nIHRvIGZpdCBpbiB3b3JrX21lbSBh bmQgaG9wZSBmb3IgdGhlCistLSBiZXN0OyBpbiB0aGlzIGNhc2Ugd2UgcGxhbiBmb3IgMSBiYXRj aCwgaW5jcmVhc2VzIGp1c3Qgb25jZSBhbmQKKy0tIHRoZW4gc3RvcCBpbmNyZWFzaW5nIGJlY2F1 c2UgdGhhdCBkaWRuJ3QgaGVscCBhdCBhbGwsIHNvIHdlIGJsb3cKKy0tIHJpZ2h0IHRocm91Z2gg dGhlIHdvcmtfbWVtIGJ1ZGdldCBhbmQgaG9wZSBmb3IgdGhlIGJlc3QuLi4KKy0tIG5vbi1wYXJh bGxlbAorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJz X3Blcl9nYXRoZXIgPSAwOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzEyOGtCJzsKK3NldCBsb2Nh bCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxl Y3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4dHJlbWVseV9za2V3ZWQgcyB1c2luZyAo aWQpOworICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdn cmVnYXRlCisgICAtPiAgSGFzaCBKb2luCisgICAgICAgICBIYXNoIENvbmQ6IChyLmlkID0gcy5p ZCkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBzaW1wbGUgcgorICAgICAgICAgLT4gIEhhc2gK KyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBleHRyZW1lbHlfc2tld2VkIHMKKyg2IHJv d3MpCisKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5X3NrZXdl ZCBzIHVzaW5nIChpZCk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworc2Vs ZWN0ICogZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9t IHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CiskJCk7Cisgb3Jp Z2luYWwgfCBmaW5hbCAKKy0tLS0tLS0tLS0rLS0tLS0tLQorICAgICAgICAxIHwgICAgIDIKKygx IHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CistLSBwYXJhbGxlbCB3aXRoIHBhcmFsbGVs LW9ibGl2aW91cyBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhf cGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3NldCBsb2NhbCB3b3JrX21lbSA9ICcx MjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBl bmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0 IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlk KTsKKyAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEdhdGhlcgorICAgICAgICAgV29ya2VycyBQbGFubmVk OiAyCisgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICBIYXNoIENvbmQ6IChy LmlkID0gcy5pZCkKKyAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBzaW1w bGUgcgorICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBleHRyZW1lbHlfc2tld2VkIHMKKyg4IHJvd3MpCisKK3NlbGVjdCBjb3VudCgq KSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CisgY291 bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworc2VsZWN0ICogZnJvbSBoYXNoX2pvaW5f YmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVt ZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CiskJCk7Cisgb3JpZ2luYWwgfCBmaW5hbCAKKy0tLS0t LS0tLS0rLS0tLS0tLQorICAgICAgICAxIHwgICAgIDIKKygxIHJvdykKKworcm9sbGJhY2sgdG8g c2V0dGluZ3M7CistLSBwYXJhbGxlbCB3aXRoIHBhcmFsbGVsLWF3YXJlIGhhc2ggam9pbgorc2F2 ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRo ZXIgPSAxOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzEyOGtCJzsKK3NldCBsb2NhbCBoYXNoX21l bV9tdWx0aXBsaWVyID0gMS4wOworc2V0IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb247 CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpv aW4gZXh0cmVtZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBB Z2dyZWdhdGUKKyAgIC0+ICBHYXRoZXIKKyAgICAgICAgIFdvcmtlcnMgUGxhbm5lZDogMQorICAg ICAgICAgLT4gIFBhcmFsbGVsIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgSGFzaCBDb25kOiAo ci5pZCA9IHMuaWQpCisgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2lt cGxlIHIKKyAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoCisgICAgICAgICAgICAgICAg ICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gZXh0cmVtZWx5X3NrZXdlZCBzCisoOCByb3dz KQorCitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4dHJlbWVseV9za2V3ZWQg cyB1c2luZyAoaWQpOworIGNvdW50IAorLS0tLS0tLQorIDIwMDAwCisoMSByb3cpCisKK3NlbGVj dCAqIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBz aW1wbGUgciBqb2luIGV4dHJlbWVseV9za2V3ZWQgcyB1c2luZyAoaWQpOworJCQpOworIG9yaWdp bmFsIHwgZmluYWwgCistLS0tLS0tLS0tKy0tLS0tLS0KKyAgICAgICAgMSB8ICAgICA0CisoMSBy b3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0gQSBjb3VwbGUgb2Ygb3RoZXIgaGFzaCBq b2luIHRlc3RzIHVucmVsYXRlZCB0byB3b3JrX21lbSBtYW5hZ2VtZW50LgorLS0gQ2hlY2sgdGhh dCBFWFBMQUlOIEFOQUxZWkUgaGFzIGRhdGEgZXZlbiBpZiB0aGUgbGVhZGVyIGRvZXNuJ3QgcGFy dGljaXBhdGUKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29y a2Vyc19wZXJfZ2F0aGVyID0gMjsKK3NldCBsb2NhbCB3b3JrX21lbSA9ICc0TUInOworc2V0IGxv Y2FsIGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwgcGFyYWxsZWxfbGVhZGVy X3BhcnRpY2lwYXRpb24gPSBvZmY7CitzZWxlY3QgKiBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAor JCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAo aWQpOworJCQpOworIG9yaWdpbmFsIHwgZmluYWwgCistLS0tLS0tLS0tKy0tLS0tLS0KKyAgICAg ICAgMSB8ICAgICAxCisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0gRXhlcmNp c2UgcmVzY2Fucy4gIFdlJ2xsIHR1cm4gb2ZmIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9u IHNvCistLSB0aGF0IHdlIGNhbiBjaGVjayB0aGF0IGluc3RydW1lbnRhdGlvbiBjb21lcyBiYWNr IGNvcnJlY3RseS4KK2NyZWF0ZSB0YWJsZSBqb2luX2ZvbyBhcyBzZWxlY3QgZ2VuZXJhdGVfc2Vy aWVzKDEsIDMpIGFzIGlkLCAneHh4eHgnOjp0ZXh0IGFzIHQ7CithbHRlciB0YWJsZSBqb2luX2Zv byBzZXQgKHBhcmFsbGVsX3dvcmtlcnMgPSAwKTsKK2NyZWF0ZSB0YWJsZSBqb2luX2JhciBhcyBz ZWxlY3QgZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDAwKSBhcyBpZCwgJ3h4eHh4Jzo6dGV4dCBhcyB0 OworYWx0ZXIgdGFibGUgam9pbl9iYXIgc2V0IChwYXJhbGxlbF93b3JrZXJzID0gMik7CistLSBt dWx0aS1iYXRjaCB3aXRoIHJlc2NhbiwgcGFyYWxsZWwtb2JsaXZpb3VzCitzYXZlcG9pbnQgc2V0 dGluZ3M7CitzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7CitzZXQgcGFyYWxsZWxfbGVh ZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7CitzZXQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6 ZSA9IDA7CitzZXQgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitzZXQgcGFyYWxsZWxfdHVwbGVf Y29zdCA9IDA7CitzZXQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQg ZW5hYmxlX21hdGVyaWFsID0gb2ZmOworc2V0IGVuYWJsZV9tZXJnZWpvaW4gPSBvZmY7CitzZXQg d29ya19tZW0gPSAnNjRrQic7CitzZXQgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxh aW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9mb28KKyAgICBsZWZ0 IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIxIGpvaW4gam9pbl9iYXIg YjIgdXNpbmcgKGlkKSkgc3MKKyAgICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9p bl9mb28uaWQgPiBzcy5pZCAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIE5lc3RlZCBMb29wIExl ZnQgSm9pbgorICAgICAgICAgSm9pbiBGaWx0ZXI6ICgoam9pbl9mb28uaWQgPCAoYjEuaWQgKyAx KSkgQU5EIChqb2luX2Zvby5pZCA+IChiMS5pZCAtIDEpKSkKKyAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBqb2luX2ZvbworICAgICAgICAgLT4gIEdhdGhlcgorICAgICAgICAgICAgICAgV29ya2Vy cyBQbGFubmVkOiAyCisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAg ICAgICAgICBIYXNoIENvbmQ6IChiMS5pZCA9IGIyLmlkKQorICAgICAgICAgICAgICAgICAgICAg LT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIGpvaW5fYmFyIGIxCisgICAgICAgICAgICAgICAgICAg ICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGpv aW5fYmFyIGIyCisoMTEgcm93cykKKworc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9mb28KKyAg bGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5f YmFyIGIyIHVzaW5nIChpZCkpIHNzCisgIG9uIGpvaW5fZm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBq b2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMworKDEgcm93 KQorCitzZWxlY3QgZmluYWwgPiAxIGFzIG11bHRpYmF0Y2gKKyAgZnJvbSBoYXNoX2pvaW5fYmF0 Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVmdCBqb2lu IChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVz aW5nIChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9v LmlkID4gc3MuaWQgLSAxOworJCQpOworIG11bHRpYmF0Y2ggCistLS0tLS0tLS0tLS0KKyB0Ciso MSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0gc2luZ2xlLWJhdGNoIHdpdGggcmVz Y2FuLCBwYXJhbGxlbC1vYmxpdmlvdXMKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBlbmFibGVf cGFyYWxsZWxfaGFzaCA9IG9mZjsKK3NldCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbiA9 IG9mZjsKK3NldCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplID0gMDsKK3NldCBwYXJhbGxl bF9zZXR1cF9jb3N0ID0gMDsKK3NldCBwYXJhbGxlbF90dXBsZV9jb3N0ID0gMDsKK3NldCBtYXhf cGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3NldCBlbmFibGVfbWF0ZXJpYWwgPSBv ZmY7CitzZXQgZW5hYmxlX21lcmdlam9pbiA9IG9mZjsKK3NldCB3b3JrX21lbSA9ICc0TUInOwor 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 KTsKKyBtdWx0aWJhdGNoIAorLS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQorCityb2xsYmFjayB0 byBzZXR0aW5nczsKKy0tIG11bHRpLWJhdGNoIHdpdGggcmVzY2FuLCBwYXJhbGxlbC1hd2FyZQor c2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb247CitzZXQg cGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7CitzZXQgbWluX3BhcmFsbGVsX3Rh YmxlX3NjYW5fc2l6ZSA9IDA7CitzZXQgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitzZXQgcGFy YWxsZWxfdHVwbGVfY29zdCA9IDA7CitzZXQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhl ciA9IDI7CitzZXQgZW5hYmxlX21hdGVyaWFsID0gb2ZmOworc2V0IGVuYWJsZV9tZXJnZWpvaW4g PSBvZmY7CitzZXQgd29ya19tZW0gPSAnNjRrQic7CitzZXQgaGFzaF9tZW1fbXVsdGlwbGllciA9 IDEuMDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9m b28KKyAgICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIxIGpv aW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgICBvbiBqb2luX2Zvby5pZCA8IHNzLmlk ICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIE5l c3RlZCBMb29wIExlZnQgSm9pbgorICAgICAgICAgSm9pbiBGaWx0ZXI6ICgoam9pbl9mb28uaWQg PCAoYjEuaWQgKyAxKSkgQU5EIChqb2luX2Zvby5pZCA+IChiMS5pZCAtIDEpKSkKKyAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBqb2luX2ZvbworICAgICAgICAgLT4gIEdhdGhlcgorICAgICAgICAg ICAgICAgV29ya2VycyBQbGFubmVkOiAyCisgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFz aCBKb2luCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6IChiMS5pZCA9IGIyLmlkKQor ICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIGpvaW5fYmFyIGIx CisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgSGFzaAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIGpvaW5fYmFyIGIyCisoMTEgcm93 cykKKworc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9mb28KKyAgbGVmdCBqb2luIChzZWxlY3Qg YjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkp IHNzCisgIG9uIGpvaW5fZm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlk IC0gMTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMworKDEgcm93KQorCitzZWxlY3QgZmluYWwg PiAxIGFzIG11bHRpYmF0Y2gKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVj dCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIx LnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgICAg b24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOwor JCQpOworIG11bHRpYmF0Y2ggCistLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK3JvbGxiYWNr IHRvIHNldHRpbmdzOworLS0gc2luZ2xlLWJhdGNoIHdpdGggcmVzY2FuLCBwYXJhbGxlbC1hd2Fy ZQorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb247Citz ZXQgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7CitzZXQgbWluX3BhcmFsbGVs X3RhYmxlX3NjYW5fc2l6ZSA9IDA7CitzZXQgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitzZXQg cGFyYWxsZWxfdHVwbGVfY29zdCA9IDA7CitzZXQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dh dGhlciA9IDI7CitzZXQgZW5hYmxlX21hdGVyaWFsID0gb2ZmOworc2V0IGVuYWJsZV9tZXJnZWpv aW4gPSBvZmY7CitzZXQgd29ya19tZW0gPSAnNE1CJzsKK3NldCBoYXNoX21lbV9tdWx0aXBsaWVy ID0gMS4wOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBqb2lu X2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEg am9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9uIGpvaW5fZm9vLmlkIDwgc3Mu aWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAg TmVzdGVkIExvb3AgTGVmdCBKb2luCisgICAgICAgICBKb2luIEZpbHRlcjogKChqb2luX2Zvby5p ZCA8IChiMS5pZCArIDEpKSBBTkQgKGpvaW5fZm9vLmlkID4gKGIxLmlkIC0gMSkpKQorICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIGpvaW5fZm9vCisgICAgICAgICAtPiAgR2F0aGVyCisgICAgICAg ICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IDIKKyAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBI YXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKGIxLmlkID0gYjIuaWQp CisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gam9pbl9iYXIg YjEKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gam9pbl9iYXIgYjIKKygxMSBy b3dzKQorCitzZWxlY3QgY291bnQoKikgZnJvbSBqb2luX2ZvbworICBsZWZ0IGpvaW4gKHNlbGVj dCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlk KSkgc3MKKyAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3Mu aWQgLSAxOworIGNvdW50IAorLS0tLS0tLQorICAgICAzCisoMSByb3cpCisKK3NlbGVjdCBmaW5h bCA+IDEgYXMgbXVsdGliYXRjaAorICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2Vs ZWN0IGNvdW50KCopIGZyb20gam9pbl9mb28KKyAgICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwg YjEudCBmcm9tIGpvaW5fYmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAg ICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7 CiskJCk7CisgbXVsdGliYXRjaCAKKy0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworcm9sbGJh Y2sgdG8gc2V0dGluZ3M7CistLSBBIGZ1bGwgb3V0ZXIgam9pbiB3aGVyZSBldmVyeSByZWNvcmQg aXMgbWF0Y2hlZC4KKy0tIG5vbi1wYXJhbGxlbAorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxv Y2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworZXhwbGFpbiAoY29zdHMg b2ZmKQorICAgICBzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2lu IHNpbXBsZSBzIHVzaW5nIChpZCk7CisgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVn YXRlCisgICAtPiAgSGFzaCBGdWxsIEpvaW4KKyAgICAgICAgIEhhc2ggQ29uZDogKHIuaWQgPSBz LmlkKQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHNpbXBsZSByCisgICAgICAgICAtPiAgSGFz aAorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHNpbXBsZSBzCisoNiByb3dzKQorCitz ZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIHVz aW5nIChpZCk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworcm9sbGJhY2sg dG8gc2V0dGluZ3M7CistLSBwYXJhbGxlbGlzbSBub3QgcG9zc2libGUgd2l0aCBwYXJhbGxlbC1v YmxpdmlvdXMgZnVsbCBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBlbmFibGVf cGFyYWxsZWxfaGFzaCA9IG9mZjsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJf Z2F0aGVyID0gMjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgICAgc2VsZWN0ICBjb3VudCgqKSBm cm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEhhc2ggRnVsbCBKb2luCisg ICAgICAgICBIYXNoIENvbmQ6IChyLmlkID0gcy5pZCkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBzaW1wbGUgcgorICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBzaW1wbGUgcworKDYgcm93cykKKworc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSBy IGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworIGNvdW50IAorLS0tLS0tLQor IDIwMDAwCisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0gcGFyYWxsZWxpc20g aXMgcG9zc2libGUgd2l0aCBwYXJhbGxlbC1hd2FyZSBmdWxsIGhhc2ggam9pbgorc2F2ZXBvaW50 IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAy OworZXhwbGFpbiAoY29zdHMgb2ZmKQorICAgICBzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxl IHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmlu YWxpemUgQWdncmVnYXRlCisgICAtPiAgR2F0aGVyCisgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6 IDIKKyAgICAgICAgIC0+ICBQYXJ0aWFsIEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgLT4gIFBh cmFsbGVsIEhhc2ggRnVsbCBKb2luCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6IChy LmlkID0gcy5pZCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBv biBzaW1wbGUgcgorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2gKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBzaW1wbGUgcwor KDkgcm93cykKKworc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9p biBzaW1wbGUgcyB1c2luZyAoaWQpOworIGNvdW50IAorLS0tLS0tLQorIDIwMDAwCisoMSByb3cp CisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0gQSBmdWxsIG91dGVyIGpvaW4gd2hlcmUgZXZl cnkgcmVjb3JkIGlzIG5vdCBtYXRjaGVkLgorLS0gbm9uLXBhcmFsbGVsCitzYXZlcG9pbnQgc2V0 dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7Citl eHBsYWluIChjb3N0cyBvZmYpCisgICAgIHNlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBm dWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgb24gKHIuaWQgPSAwIC0gcy5pZCk7CisgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgSGFzaCBGdWxsIEpvaW4KKyAgICAg ICAgIEhhc2ggQ29uZDogKCgwIC0gcy5pZCkgPSByLmlkKQorICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHNpbXBsZSBzCisgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHNpbXBsZSByCisoNiByb3dzKQorCitzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxl IHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIG9uIChyLmlkID0gMCAtIHMuaWQpOworIGNvdW50 IAorLS0tLS0tLQorIDQwMDAwCisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0g cGFyYWxsZWxpc20gbm90IHBvc3NpYmxlIHdpdGggcGFyYWxsZWwtb2JsaXZpb3VzIGZ1bGwgaGFz aCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBv ZmY7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitleHBs YWluIChjb3N0cyBvZmYpCisgICAgIHNlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxs IG91dGVyIGpvaW4gc2ltcGxlIHMgb24gKHIuaWQgPSAwIC0gcy5pZCk7CisgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgSGFzaCBGdWxsIEpvaW4KKyAgICAgICAg IEhhc2ggQ29uZDogKCgwIC0gcy5pZCkgPSByLmlkKQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IHNpbXBsZSBzCisgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHNpbXBsZSByCisoNiByb3dzKQorCitzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIg ZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIG9uIChyLmlkID0gMCAtIHMuaWQpOworIGNvdW50IAor LS0tLS0tLQorIDQwMDAwCisoMSByb3cpCisKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworLS0gcGFy YWxsZWxpc20gaXMgcG9zc2libGUgd2l0aCBwYXJhbGxlbC1hd2FyZSBmdWxsIGhhc2ggam9pbgor c2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9n YXRoZXIgPSAyOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICAgICBzZWxlY3QgIGNvdW50KCopIGZy b20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIG9uIChyLmlkID0gMCAtIHMuaWQp OworICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEZpbmFsaXplIEFnZ3JlZ2F0ZQorICAgLT4gIEdhdGhlcgorICAgICAg ICAgV29ya2VycyBQbGFubmVkOiAyCisgICAgICAgICAtPiAgUGFydGlhbCBBZ2dyZWdhdGUKKyAg ICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoIEZ1bGwgSm9pbgorICAgICAgICAgICAgICAg ICAgICAgSGFzaCBDb25kOiAoKDAgLSBzLmlkKSA9IHIuaWQpCisgICAgICAgICAgICAgICAgICAg ICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxlIHMKKyAgICAgICAgICAgICAgICAgICAg IC0+ICBQYXJhbGxlbCBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxs ZWwgU2VxIFNjYW4gb24gc2ltcGxlIHIKKyg5IHJvd3MpCisKK3NlbGVjdCAgY291bnQoKikgZnJv bSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgb24gKHIuaWQgPSAwIC0gcy5pZCk7 CisgY291bnQgCistLS0tLS0tCisgNDAwMDAKKygxIHJvdykKKworcm9sbGJhY2sgdG8gc2V0dGlu Z3M7CistLSBleGVyY2lzZSBzcGVjaWFsIGNvZGUgcGF0aHMgZm9yIGh1Z2UgdHVwbGVzIChub3Rl IHVzZSBvZiBub24tc3RyaWN0CistLSBleHByZXNzaW9uIGFuZCBsZWZ0IGpvaW4gcmVxdWlyZWQg dG8gZ2V0IHRoZSBkZXRvYXN0ZWQgdHVwbGUgaW50bworLS0gdGhlIGhhc2ggdGFibGUpCistLSBw YXJhbGxlbCB3aXRoIHBhcmFsbGVsLWF3YXJlIGhhc2ggam9pbiAoaGl0cyBFeGVjUGFyYWxsZWxI YXNoTG9hZFR1cGxlIGFuZAorLS0gc3RzX3B1dHR1cGxlIG92ZXJzaXplZCB0dXBsZSBjYXNlcyBi ZWNhdXNlIGl0J3MgbXVsdGktYmF0Y2gpCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbWF4X3Bh cmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2gg PSBvbjsKK3NldCB3b3JrX21lbSA9ICcxMjhrQic7CitzZXQgaGFzaF9tZW1fbXVsdGlwbGllciA9 IDEuMDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGxlbmd0aChtYXgocy50KSkKKyAg ZnJvbSB3aWRlIGxlZnQgam9pbiAoc2VsZWN0IGlkLCBjb2FsZXNjZSh0LCAnJykgfHwgJycgYXMg dCBmcm9tIHdpZGUpIHMgdXNpbmcgKGlkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5hbGl6ZSBB Z2dyZWdhdGUKKyAgIC0+ICBHYXRoZXIKKyAgICAgICAgIFdvcmtlcnMgUGxhbm5lZDogMgorICAg ICAgICAgLT4gIFBhcnRpYWwgQWdncmVnYXRlCisgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwg SGFzaCBMZWZ0IEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHdpZGUuaWQg PSB3aWRlXzEuaWQpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4g b24gd2lkZQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2gKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiB3aWRlIHdpZGVfMQor KDkgcm93cykKKworc2VsZWN0IGxlbmd0aChtYXgocy50KSkKK2Zyb20gd2lkZSBsZWZ0IGpvaW4g KHNlbGVjdCBpZCwgY29hbGVzY2UodCwgJycpIHx8ICcnIGFzIHQgZnJvbSB3aWRlKSBzIHVzaW5n IChpZCk7CisgbGVuZ3RoIAorLS0tLS0tLS0KKyAzMjAwMDAKKygxIHJvdykKKworc2VsZWN0IGZp bmFsID4gMSBhcyBtdWx0aWJhdGNoCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBz ZWxlY3QgbGVuZ3RoKG1heChzLnQpKQorICBmcm9tIHdpZGUgbGVmdCBqb2luIChzZWxlY3QgaWQs IGNvYWxlc2NlKHQsICcnKSB8fCAnJyBhcyB0IGZyb20gd2lkZSkgcyB1c2luZyAoaWQpOworJCQp OworIG11bHRpYmF0Y2ggCistLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK3JvbGxiYWNrIHRv IHNldHRpbmdzOworLS0gSGFzaCBqb2luIHJldXNlcyB0aGUgSE9UIHN0YXR1cyBiaXQgdG8gaW5k aWNhdGUgbWF0Y2ggc3RhdHVzLiBUaGlzIGNhbiBvbmx5CistLSBiZSBndWFyYW50ZWVkIHRvIHBy b2R1Y2UgY29ycmVjdCByZXN1bHRzIGlmIGFsbCB0aGUgaGFzaCBqb2luIHR1cGxlIG1hdGNoCist LSBiaXRzIGFyZSByZXNldCBiZWZvcmUgcmV1c2UuIFRoaXMgaXMgZG9uZSB1cG9uIGxvYWRpbmcg dGhlbSBpbnRvIHRoZQorLS0gaGFzaHRhYmxlLgorU0FWRVBPSU5UIHNldHRpbmdzOworU0VUIGVu YWJsZV9wYXJhbGxlbF9oYXNoID0gb247CitTRVQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6 ZSA9IDA7CitTRVQgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitTRVQgcGFyYWxsZWxfdHVwbGVf Y29zdCA9IDA7CitDUkVBVEUgVEFCTEUgaGp0ZXN0X21hdGNoYml0c190MShpZCBpbnQpOworQ1JF QVRFIFRBQkxFIGhqdGVzdF9tYXRjaGJpdHNfdDIoaWQgaW50KTsKK0lOU0VSVCBJTlRPIGhqdGVz dF9tYXRjaGJpdHNfdDEgVkFMVUVTICgxKTsKK0lOU0VSVCBJTlRPIGhqdGVzdF9tYXRjaGJpdHNf dDIgVkFMVUVTICgyKTsKKy0tIFVwZGF0ZSBzaG91bGQgY3JlYXRlIGEgSE9UIHR1cGxlLiBJZiB0 aGlzIHN0YXR1cyBiaXQgaXNuJ3QgY2xlYXJlZCwgd2Ugd29uJ3QKKy0tIGNvcnJlY3RseSBlbWl0 IHRoZSBOVUxMLWV4dGVuZGVkIHVubWF0Y2hpbmcgdHVwbGUgaW4gZnVsbCBoYXNoIGpvaW4uCitV UERBVEUgaGp0ZXN0X21hdGNoYml0c190MiBzZXQgaWQgPSAyOworU0VMRUNUICogRlJPTSBoanRl c3RfbWF0Y2hiaXRzX3QxIHQxIEZVTEwgSk9JTiBoanRlc3RfbWF0Y2hiaXRzX3QyIHQyIE9OIHQx LmlkID0gdDIuaWQKKyAgT1JERVIgQlkgdDEuaWQ7CisgaWQgfCBpZCAKKy0tLS0rLS0tLQorICAx IHwgICAKKyAgICB8ICAyCisoMiByb3dzKQorCistLSBUZXN0IHNlcmlhbCBmdWxsIGhhc2ggam9p bi4KKy0tIFJlc2V0dGluZyBwYXJhbGxlbF9zZXR1cF9jb3N0IHNob3VsZCBmb3JjZSBhIHNlcmlh bCBwbGFuLgorLS0gSnVzdCB0byBiZSBzYWZlLCBob3dldmVyLCBzZXQgZW5hYmxlX3BhcmFsbGVs X2hhc2ggdG8gb2ZmLCBhcyBwYXJhbGxlbCBmdWxsCistLSBoYXNoIGpvaW5zIGFyZSBvbmx5IHN1 cHBvcnRlZCB3aXRoIHNoYXJlZCBoYXNodGFibGVzLgorUkVTRVQgcGFyYWxsZWxfc2V0dXBfY29z dDsKK1NFVCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK1NFTEVDVCAqIEZST00gaGp0ZXN0 X21hdGNoYml0c190MSB0MSBGVUxMIEpPSU4gaGp0ZXN0X21hdGNoYml0c190MiB0MiBPTiB0MS5p ZCA9IHQyLmlkOworIGlkIHwgaWQgCistLS0tKy0tLS0KKyAgMSB8ICAgCisgICAgfCAgMgorKDIg cm93cykKKworUk9MTEJBQ0sgVE8gc2V0dGluZ3M7Cityb2xsYmFjazsKKy0tIFZlcmlmeSB0aGF0 IGhhc2gga2V5IGV4cHJlc3Npb25zIHJlZmVyZW5jZSB0aGUgY29ycmVjdAorLS0gbm9kZXMuIEhh c2hqb2luJ3MgaGFzaGtleXMgbmVlZCB0byByZWZlcmVuY2UgaXRzIG91dGVyIHBsYW4sIEhhc2gn cworLS0gbmVlZCB0byByZWZlcmVuY2UgSGFzaCdzIG91dGVyIHBsYW4gKHdoaWNoIGlzIGJlbG93 IEhhc2hKb2luJ3MKKy0tIGlubmVyIHBsYW4pLiBJdCdzIG5vdCB0cml2aWFsIHRvIHZlcmlmeSB0 aGF0IHRoZSByZWZlcmVuY2VzIGFyZQorLS0gY29ycmVjdCAod2UgZG9uJ3QgZGlzcGxheSB0aGUg aGFzaGtleXMgdGhlbXNlbHZlcyksIGJ1dCBpZiB0aGUKKy0tIGhhc2hrZXlzIGNvbnRhaW4gc3Vi cGxhbiByZWZlcmVuY2VzLCB0aG9zZSB3aWxsIGJlIGRpc3BsYXllZC4gRm9yY2UKKy0tIHN1YnBs YW5zIHRvIGFwcGVhciBqdXN0IGFib3V0IGV2ZXJ5d2hlcmUuCistLQorLS0gQnVnIHJlcG9ydDoK Ky0tIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvQ0FQcEhmZHZHVmVnRl9U S0tSaUJyU21hdEpMMmRSOXV3RkN1UiUyQnRlUV84dEVYVThteGclNDBtYWlsLmdtYWlsLmNvbQor LS0KK0JFR0lOOworU0VUIExPQ0FMIGVuYWJsZV9zb3J0ID0gT0ZGOyAtLSBhdm9pZCBtZXJnZWpv aW5zCitTRVQgTE9DQUwgZnJvbV9jb2xsYXBzZV9saW1pdCA9IDE7IC0tIGFsbG93cyBlYXN5IGNo YW5naW5nIG9mIGpvaW4gb3JkZXIKK0NSRUFURSBUQUJMRSBoanRlc3RfMSAoYSB0ZXh0LCBiIGlu dCwgaWQgaW50LCBjIGJvb2wpOworQ1JFQVRFIFRBQkxFIGhqdGVzdF8yIChhIGJvb2wsIGlkIGlu dCwgYiB0ZXh0LCBjIGludCk7CitJTlNFUlQgSU5UTyBoanRlc3RfMShhLCBiLCBpZCwgYykgVkFM VUVTICgndGV4dCcsIDIsIDEsIGZhbHNlKTsgLS0gbWF0Y2hlcworSU5TRVJUIElOVE8gaGp0ZXN0 XzEoYSwgYiwgaWQsIGMpIFZBTFVFUyAoJ3RleHQnLCAxLCAyLCBmYWxzZSk7IC0tIGZhaWxzIGlk IGpvaW4gY29uZGl0aW9uCitJTlNFUlQgSU5UTyBoanRlc3RfMShhLCBiLCBpZCwgYykgVkFMVUVT ICgndGV4dCcsIDIwLCAxLCBmYWxzZSk7IC0tIGZhaWxzIDwgNTAKK0lOU0VSVCBJTlRPIGhqdGVz dF8xKGEsIGIsIGlkLCBjKSBWQUxVRVMgKCd0ZXh0JywgMSwgMSwgZmFsc2UpOyAtLSBmYWlscyAo U0VMRUNUIGhqdGVzdF8xLmIgKiA1KSA9IChTRUxFQ1QgaGp0ZXN0XzIuYyo1KQorSU5TRVJUIElO VE8gaGp0ZXN0XzIoYSwgaWQsIGIsIGMpIFZBTFVFUyAodHJ1ZSwgMSwgJ2Fub3RoZXInLCAyKTsg LS0gbWF0Y2hlcworSU5TRVJUIElOVE8gaGp0ZXN0XzIoYSwgaWQsIGIsIGMpIFZBTFVFUyAodHJ1 ZSwgMywgJ2Fub3RoZXInLCA3KTsgLS0gZmFpbHMgaWQgam9pbiBjb25kaXRpb24KK0lOU0VSVCBJ TlRPIGhqdGVzdF8yKGEsIGlkLCBiLCBjKSBWQUxVRVMgKHRydWUsIDEsICdhbm90aGVyJywgOTAp OyAgLS0gZmFpbHMgPCA1NQorSU5TRVJUIElOVE8gaGp0ZXN0XzIoYSwgaWQsIGIsIGMpIFZBTFVF UyAodHJ1ZSwgMSwgJ2Fub3RoZXInLCAzKTsgLS0gZmFpbHMgKFNFTEVDVCBoanRlc3RfMS5iICog NSkgPSAoU0VMRUNUIGhqdGVzdF8yLmMqNSkKK0lOU0VSVCBJTlRPIGhqdGVzdF8yKGEsIGlkLCBi LCBjKSBWQUxVRVMgKHRydWUsIDEsICd0ZXh0JywgMSk7IC0tICBmYWlscyBoanRlc3RfMS5hIDw+ IGhqdGVzdF8yLmI7CitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpCitTRUxFQ1QgaGp0ZXN0 XzEuYSBhMSwgaGp0ZXN0XzIuYSBhMixoanRlc3RfMS50YWJsZW9pZDo6cmVnY2xhc3MgdDEsIGhq dGVzdF8yLnRhYmxlb2lkOjpyZWdjbGFzcyB0MgorRlJPTSBoanRlc3RfMSwgaGp0ZXN0XzIKK1dI RVJFCisgICAgaGp0ZXN0XzEuaWQgPSAoU0VMRUNUIDEgV0hFUkUgaGp0ZXN0XzIuaWQgPSAxKQor ICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1KSA9IChTRUxFQ1QgaGp0ZXN0XzIuYyo1KQor ICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1KSA8IDUwCisgICAgQU5EIChTRUxFQ1QgaGp0 ZXN0XzIuYyAqIDUpIDwgNTUKKyAgICBBTkQgaGp0ZXN0XzEuYSA8PiBoanRlc3RfMi5iOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBIYXNoIEpvaW4KKyAgIE91dHB1dDogaGp0ZXN0XzEuYSwg aGp0ZXN0XzIuYSwgKGhqdGVzdF8xLnRhYmxlb2lkKTo6cmVnY2xhc3MsIChoanRlc3RfMi50YWJs ZW9pZCk6OnJlZ2NsYXNzCisgICBIYXNoIENvbmQ6ICgoaGp0ZXN0XzEuaWQgPSAoU3ViUGxhbiAx KSkgQU5EICgoU3ViUGxhbiAyKSA9IChTdWJQbGFuIDMpKSkKKyAgIEpvaW4gRmlsdGVyOiAoaGp0 ZXN0XzEuYSA8PiBoanRlc3RfMi5iKQorICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5oanRlc3Rf MQorICAgICAgICAgT3V0cHV0OiBoanRlc3RfMS5hLCBoanRlc3RfMS50YWJsZW9pZCwgaGp0ZXN0 XzEuaWQsIGhqdGVzdF8xLmIKKyAgICAgICAgIEZpbHRlcjogKChTdWJQbGFuIDQpIDwgNTApCisg ICAgICAgICBTdWJQbGFuIDQKKyAgICAgICAgICAgLT4gIFJlc3VsdAorICAgICAgICAgICAgICAg ICBPdXRwdXQ6IChoanRlc3RfMS5iICogNSkKKyAgIC0+ICBIYXNoCisgICAgICAgICBPdXRwdXQ6 IGhqdGVzdF8yLmEsIGhqdGVzdF8yLnRhYmxlb2lkLCBoanRlc3RfMi5pZCwgaGp0ZXN0XzIuYywg aGp0ZXN0XzIuYgorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5oanRlc3RfMgorICAg ICAgICAgICAgICAgT3V0cHV0OiBoanRlc3RfMi5hLCBoanRlc3RfMi50YWJsZW9pZCwgaGp0ZXN0 XzIuaWQsIGhqdGVzdF8yLmMsIGhqdGVzdF8yLmIKKyAgICAgICAgICAgICAgIEZpbHRlcjogKChT dWJQbGFuIDUpIDwgNTUpCisgICAgICAgICAgICAgICBTdWJQbGFuIDUKKyAgICAgICAgICAgICAg ICAgLT4gIFJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IChoanRlc3RfMi5j ICogNSkKKyAgICAgICAgIFN1YlBsYW4gMQorICAgICAgICAgICAtPiAgUmVzdWx0CisgICAgICAg ICAgICAgICAgIE91dHB1dDogMQorICAgICAgICAgICAgICAgICBPbmUtVGltZSBGaWx0ZXI6ICho anRlc3RfMi5pZCA9IDEpCisgICAgICAgICBTdWJQbGFuIDMKKyAgICAgICAgICAgLT4gIFJlc3Vs dAorICAgICAgICAgICAgICAgICBPdXRwdXQ6IChoanRlc3RfMi5jICogNSkKKyAgIFN1YlBsYW4g MgorICAgICAtPiAgUmVzdWx0CisgICAgICAgICAgIE91dHB1dDogKGhqdGVzdF8xLmIgKiA1KQor KDI4IHJvd3MpCisKK1NFTEVDVCBoanRlc3RfMS5hIGExLCBoanRlc3RfMi5hIGEyLGhqdGVzdF8x LnRhYmxlb2lkOjpyZWdjbGFzcyB0MSwgaGp0ZXN0XzIudGFibGVvaWQ6OnJlZ2NsYXNzIHQyCitG Uk9NIGhqdGVzdF8xLCBoanRlc3RfMgorV0hFUkUKKyAgICBoanRlc3RfMS5pZCA9IChTRUxFQ1Qg MSBXSEVSRSBoanRlc3RfMi5pZCA9IDEpCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUp ID0gKFNFTEVDVCBoanRlc3RfMi5jKjUpCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUp IDwgNTAKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMi5jICogNSkgPCA1NQorICAgIEFORCBoanRl c3RfMS5hIDw+IGhqdGVzdF8yLmI7CisgIGExICB8IGEyIHwgICAgdDEgICAgfCAgICB0MiAgICAK Ky0tLS0tLSstLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHRleHQgfCB0ICB8IGhqdGVzdF8x IHwgaGp0ZXN0XzIKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQorU0VM RUNUIGhqdGVzdF8xLmEgYTEsIGhqdGVzdF8yLmEgYTIsaGp0ZXN0XzEudGFibGVvaWQ6OnJlZ2Ns YXNzIHQxLCBoanRlc3RfMi50YWJsZW9pZDo6cmVnY2xhc3MgdDIKK0ZST00gaGp0ZXN0XzIsIGhq dGVzdF8xCitXSEVSRQorICAgIGhqdGVzdF8xLmlkID0gKFNFTEVDVCAxIFdIRVJFIGhqdGVzdF8y LmlkID0gMSkKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMS5iICogNSkgPSAoU0VMRUNUIGhqdGVz dF8yLmMqNSkKKyAgICBBTkQgKFNFTEVDVCBoanRlc3RfMS5iICogNSkgPCA1MAorICAgIEFORCAo U0VMRUNUIGhqdGVzdF8yLmMgKiA1KSA8IDU1CisgICAgQU5EIGhqdGVzdF8xLmEgPD4gaGp0ZXN0 XzIuYjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSGFzaCBKb2luCisgICBPdXRwdXQ6IGhq dGVzdF8xLmEsIGhqdGVzdF8yLmEsIChoanRlc3RfMS50YWJsZW9pZCk6OnJlZ2NsYXNzLCAoaGp0 ZXN0XzIudGFibGVvaWQpOjpyZWdjbGFzcworICAgSGFzaCBDb25kOiAoKChTdWJQbGFuIDEpID0g aGp0ZXN0XzEuaWQpIEFORCAoKFN1YlBsYW4gMykgPSAoU3ViUGxhbiAyKSkpCisgICBKb2luIEZp bHRlcjogKGhqdGVzdF8xLmEgPD4gaGp0ZXN0XzIuYikKKyAgIC0+ICBTZXEgU2NhbiBvbiBwdWJs aWMuaGp0ZXN0XzIKKyAgICAgICAgIE91dHB1dDogaGp0ZXN0XzIuYSwgaGp0ZXN0XzIudGFibGVv aWQsIGhqdGVzdF8yLmlkLCBoanRlc3RfMi5jLCBoanRlc3RfMi5iCisgICAgICAgICBGaWx0ZXI6 ICgoU3ViUGxhbiA1KSA8IDU1KQorICAgICAgICAgU3ViUGxhbiA1CisgICAgICAgICAgIC0+ICBS ZXN1bHQKKyAgICAgICAgICAgICAgICAgT3V0cHV0OiAoaGp0ZXN0XzIuYyAqIDUpCisgICAtPiAg SGFzaAorICAgICAgICAgT3V0cHV0OiBoanRlc3RfMS5hLCBoanRlc3RfMS50YWJsZW9pZCwgaGp0 ZXN0XzEuaWQsIGhqdGVzdF8xLmIKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuaGp0 ZXN0XzEKKyAgICAgICAgICAgICAgIE91dHB1dDogaGp0ZXN0XzEuYSwgaGp0ZXN0XzEudGFibGVv aWQsIGhqdGVzdF8xLmlkLCBoanRlc3RfMS5iCisgICAgICAgICAgICAgICBGaWx0ZXI6ICgoU3Vi UGxhbiA0KSA8IDUwKQorICAgICAgICAgICAgICAgU3ViUGxhbiA0CisgICAgICAgICAgICAgICAg IC0+ICBSZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiAoaGp0ZXN0XzEuYiAq IDUpCisgICAgICAgICBTdWJQbGFuIDIKKyAgICAgICAgICAgLT4gIFJlc3VsdAorICAgICAgICAg ICAgICAgICBPdXRwdXQ6IChoanRlc3RfMS5iICogNSkKKyAgIFN1YlBsYW4gMQorICAgICAtPiAg UmVzdWx0CisgICAgICAgICAgIE91dHB1dDogMQorICAgICAgICAgICBPbmUtVGltZSBGaWx0ZXI6 IChoanRlc3RfMi5pZCA9IDEpCisgICBTdWJQbGFuIDMKKyAgICAgLT4gIFJlc3VsdAorICAgICAg ICAgICBPdXRwdXQ6IChoanRlc3RfMi5jICogNSkKKygyOCByb3dzKQorCitTRUxFQ1QgaGp0ZXN0 XzEuYSBhMSwgaGp0ZXN0XzIuYSBhMixoanRlc3RfMS50YWJsZW9pZDo6cmVnY2xhc3MgdDEsIGhq dGVzdF8yLnRhYmxlb2lkOjpyZWdjbGFzcyB0MgorRlJPTSBoanRlc3RfMiwgaGp0ZXN0XzEKK1dI RVJFCisgICAgaGp0ZXN0XzEuaWQgPSAoU0VMRUNUIDEgV0hFUkUgaGp0ZXN0XzIuaWQgPSAxKQor ICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1KSA9IChTRUxFQ1QgaGp0ZXN0XzIuYyo1KQor ICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1KSA8IDUwCisgICAgQU5EIChTRUxFQ1QgaGp0 ZXN0XzIuYyAqIDUpIDwgNTUKKyAgICBBTkQgaGp0ZXN0XzEuYSA8PiBoanRlc3RfMi5iOworICBh MSAgfCBhMiB8ICAgIHQxICAgIHwgICAgdDIgICAgCistLS0tLS0rLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyB0ZXh0IHwgdCAgfCBoanRlc3RfMSB8IGhqdGVzdF8yCisoMSByb3cpCisKK1JP TExCQUNLOworLS0gVmVyaWZ5IHRoYXQgd2UgYmVoYXZlIHNhbmVseSB3aGVuIHRoZSBpbm5lciBo YXNoIGtleXMgY29udGFpbiBwYXJhbWV0ZXJzCistLSAodGhhdCBpcywgb3V0ZXIgb3IgbGF0ZXJh bCByZWZlcmVuY2VzKS4gIFRoaXMgc2l0dWF0aW9uIGhhcyB0byBkZWZlYXQKKy0tIHJlLXVzZSBv ZiB0aGUgaW5uZXIgaGFzaCB0YWJsZSBhY3Jvc3MgcmVzY2Fucy4KK2JlZ2luOworc2V0IGxvY2Fs IGVuYWJsZV9oYXNoam9pbiA9IG9uOworZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0IGk4LnEy LCBzcy4qIGZyb20KK2ludDhfdGJsIGk4LAorbGF0ZXJhbCAoc2VsZWN0IHQxLmZpdmV0aG91cywg aTQuZjEgZnJvbSB0ZW5rMSB0MSBqb2luIGludDRfdGJsIGk0CisgICAgICAgICBvbiB0MS5maXZl dGhvdXMgPSBpNC5mMStpOC5xMiBvcmRlciBieSAxLDIpIHNzOworICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTmVzdGVkIExv b3AKKyAgIC0+ICBTZXEgU2NhbiBvbiBpbnQ4X3RibCBpOAorICAgLT4gIFNvcnQKKyAgICAgICAg IFNvcnQgS2V5OiB0MS5maXZldGhvdXMsIGk0LmYxCisgICAgICAgICAtPiAgSGFzaCBKb2luCisg ICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS5maXZldGhvdXMgPSAoaTQuZjEgKyBpOC5xMikp CisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gdGVuazEgdDEKKyAgICAgICAgICAgICAg IC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gaW50NF90Ymwg aTQKKyg5IHJvd3MpCisKK3NlbGVjdCBpOC5xMiwgc3MuKiBmcm9tCitpbnQ4X3RibCBpOCwKK2xh dGVyYWwgKHNlbGVjdCB0MS5maXZldGhvdXMsIGk0LmYxIGZyb20gdGVuazEgdDEgam9pbiBpbnQ0 X3RibCBpNAorICAgICAgICAgb24gdDEuZml2ZXRob3VzID0gaTQuZjEraTgucTIgb3JkZXIgYnkg MSwyKSBzczsKKyBxMiAgfCBmaXZldGhvdXMgfCBmMSAKKy0tLS0tKy0tLS0tLS0tLS0tKy0tLS0K KyA0NTYgfCAgICAgICA0NTYgfCAgMAorIDQ1NiB8ICAgICAgIDQ1NiB8ICAwCisgMTIzIHwgICAg ICAgMTIzIHwgIDAKKyAxMjMgfCAgICAgICAxMjMgfCAgMAorKDQgcm93cykKKworcm9sbGJhY2s7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rl c3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCAwZjM4Y2FhMGQyNC4uNzcwMWU1N2Zh ZDMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtMTUsNyArMTUsNiBAQCB0ZXN0 OiB0ZXN0X3NldHVwCiAjIFRoZSBmaXJzdCBncm91cCBvZiBwYXJhbGxlbCB0ZXN0cwogIyAtLS0t LS0tLS0tCiB0ZXN0OiBib29sZWFuIGNoYXIgbmFtZSB2YXJjaGFyIHRleHQgaW50MiBpbnQ0IGlu dDggb2lkIGZsb2F0NCBmbG9hdDggYml0IG51bWVyaWMgdHhpZCB1dWlkIGVudW0gbW9uZXkgcmFu Z2V0eXBlcyBwZ19sc24gcmVncHJvYwotCiAjIC0tLS0tLS0tLS0KICMgVGhlIHNlY29uZCBncm91 cCBvZiBwYXJhbGxlbCB0ZXN0cwogIyBtdWx0aXJhbmdldHlwZXMgZGVwZW5kcyBvbiByYW5nZXR5 cGVzCkBAIC0xMzYsMyArMTM1LDYgQEAgdGVzdDogZmFzdF9kZWZhdWx0CiAjIHJ1biB0YWJsZXNw YWNlIHRlc3QgYXQgdGhlIGVuZCBiZWNhdXNlIGl0IGRyb3BzIHRoZSB0YWJsZXNwYWNlIGNyZWF0 ZWQgZHVyaW5nCiAjIHNldHVwIHRoYXQgb3RoZXIgdGVzdHMgbWF5IHVzZS4KIHRlc3Q6IHRhYmxl c3BhY2UKKworIyB0aGlzIHRlc3QgaXMgZXF1aXZhbGVudCB0byBqb2luX2hhc2ggdGVzdCBqdXN0 IHRoZSBjb21wcmVzc2lvbiBpcyBlbmFibGVkCit0ZXN0OiBqb2luX2hhc2hfcGdsegpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbl9oYXNoX2x6NC5zcWwgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9qb2luX2hhc2hfbHo0LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uMWQxOWMxOTgwZTEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9qb2luX2hhc2hfbHo0LnNxbApAQCAtMCwwICsxLDYyNiBAQAorLS0KKy0tIGV4ZXJj aXNlcyBmb3IgdGhlIGhhc2ggam9pbiBjb2RlCistLQorCitiZWdpbjsKKworc2V0IGxvY2FsIG1p bl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOworc2V0IGxvY2FsIHBhcmFsbGVsX3NldHVw X2Nvc3QgPSAwOworc2V0IGxvY2FsIGVuYWJsZV9oYXNoam9pbiA9IG9uOworc2V0IGxvY2FsIHRl bXBfZmlsZV9jb21wcmVzc2lvbiA9ICdsejQnOworCistLSBFeHRyYWN0IGJ1Y2tldCBhbmQgYmF0 Y2ggY291bnRzIGZyb20gYW4gZXhwbGFpbiBhbmFseXplIHBsYW4uICBJbgorLS0gZ2VuZXJhbCB3 ZSBjYW4ndCBtYWtlIGFzc2VydGlvbnMgYWJvdXQgaG93IG1hbnkgYmF0Y2hlcyAob3IKKy0tIGJ1 Y2tldHMpIHdpbGwgYmUgcmVxdWlyZWQgYmVjYXVzZSBpdCBjYW4gdmFyeSwgYnV0IHdlIGNhbiBp biBzb21lCistLSBzcGVjaWFsIGNhc2VzIGFuZCB3ZSBjYW4gY2hlY2sgZm9yIGdyb3d0aC4KK2Ny ZWF0ZSBvciByZXBsYWNlIGZ1bmN0aW9uIGZpbmRfaGFzaChub2RlIGpzb24pCityZXR1cm5zIGpz b24gbGFuZ3VhZ2UgcGxwZ3NxbAorYXMKKyQkCitkZWNsYXJlCisgIHgganNvbjsKKyAgY2hpbGQg anNvbjsKK2JlZ2luCisgIGlmIG5vZGUtPj4nTm9kZSBUeXBlJyA9ICdIYXNoJyB0aGVuCisgICAg cmV0dXJuIG5vZGU7CisgIGVsc2UKKyAgICBmb3IgY2hpbGQgaW4gc2VsZWN0IGpzb25fYXJyYXlf ZWxlbWVudHMobm9kZS0+J1BsYW5zJykKKyAgICBsb29wCisgICAgICB4IDo9IGZpbmRfaGFzaChj aGlsZCk7CisgICAgICBpZiB4IGlzIG5vdCBudWxsIHRoZW4KKyAgICAgICAgcmV0dXJuIHg7Cisg ICAgICBlbmQgaWY7CisgICAgZW5kIGxvb3A7CisgICAgcmV0dXJuIG51bGw7CisgIGVuZCBpZjsK K2VuZDsKKyQkOworY3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gaGFzaF9qb2luX2JhdGNoZXMo cXVlcnkgdGV4dCkKK3JldHVybnMgdGFibGUgKG9yaWdpbmFsIGludCwgZmluYWwgaW50KSBsYW5n dWFnZSBwbHBnc3FsCithcworJCQKK2RlY2xhcmUKKyAgd2hvbGVfcGxhbiBqc29uOworICBoYXNo X25vZGUganNvbjsKK2JlZ2luCisgIGZvciB3aG9sZV9wbGFuIGluCisgICAgZXhlY3V0ZSAnZXhw bGFpbiAoYW5hbHl6ZSwgZm9ybWF0ICcnanNvbicnKSAnIHx8IHF1ZXJ5CisgIGxvb3AKKyAgICBo YXNoX25vZGUgOj0gZmluZF9oYXNoKGpzb25fZXh0cmFjdF9wYXRoKHdob2xlX3BsYW4sICcwJywg J1BsYW4nKSk7CisgICAgb3JpZ2luYWwgOj0gaGFzaF9ub2RlLT4+J09yaWdpbmFsIEhhc2ggQmF0 Y2hlcyc7CisgICAgZmluYWwgOj0gaGFzaF9ub2RlLT4+J0hhc2ggQmF0Y2hlcyc7CisgICAgcmV0 dXJuIG5leHQ7CisgIGVuZCBsb29wOworZW5kOworJCQ7CisKKy0tIE1ha2UgYSBzaW1wbGUgcmVs YXRpb24gd2l0aCB3ZWxsIGRpc3RyaWJ1dGVkIGtleXMgYW5kIGNvcnJlY3RseQorLS0gZXN0aW1h dGVkIHNpemUuCitjcmVhdGUgdGFibGUgc2ltcGxlIGFzCisgIHNlbGVjdCBnZW5lcmF0ZV9zZXJp ZXMoMSwgMjAwMDApIEFTIGlkLCAnYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSc7 CithbHRlciB0YWJsZSBzaW1wbGUgc2V0IChwYXJhbGxlbF93b3JrZXJzID0gMik7CithbmFseXpl IHNpbXBsZTsKKworLS0gTWFrZSBhIHJlbGF0aW9uIHdob3NlIHNpemUgd2Ugd2lsbCB1bmRlci1l c3RpbWF0ZS4gIFdlIHdhbnQgc3RhdHMKKy0tIHRvIHNheSAxMDAwIHJvd3MsIGJ1dCBhY3R1YWxs eSB0aGVyZSBhcmUgMjAsMDAwIHJvd3MuCitjcmVhdGUgdGFibGUgYmlnZ2VyX3RoYW5faXRfbG9v a3MgYXMKKyAgc2VsZWN0IGdlbmVyYXRlX3NlcmllcygxLCAyMDAwMCkgYXMgaWQsICdhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhJzsKK2FsdGVyIHRhYmxlIGJpZ2dlcl90aGFuX2l0 X2xvb2tzIHNldCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gJ2ZhbHNlJyk7CithbHRlciB0YWJsZSBi aWdnZXJfdGhhbl9pdF9sb29rcyBzZXQgKHBhcmFsbGVsX3dvcmtlcnMgPSAyKTsKK2FuYWx5emUg YmlnZ2VyX3RoYW5faXRfbG9va3M7Cit1cGRhdGUgcGdfY2xhc3Mgc2V0IHJlbHR1cGxlcyA9IDEw MDAgd2hlcmUgcmVsbmFtZSA9ICdiaWdnZXJfdGhhbl9pdF9sb29rcyc7CisKKy0tIE1ha2UgYSBy ZWxhdGlvbiB3aG9zZSBzaXplIHdlIHVuZGVyZXN0aW1hdGUgYW5kIHRoYXQgYWxzbyBoYXMgYQor LS0ga2luZCBvZiBza2V3IHRoYXQgYnJlYWtzIG91ciBiYXRjaGluZyBzY2hlbWUuICBXZSB3YW50 IHN0YXRzIHRvIHNheQorLS0gMiByb3dzLCBidXQgYWN0dWFsbHkgdGhlcmUgYXJlIDIwLDAwMCBy b3dzIHdpdGggdGhlIHNhbWUga2V5LgorY3JlYXRlIHRhYmxlIGV4dHJlbWVseV9za2V3ZWQgKGlk IGludCwgdCB0ZXh0KTsKK2FsdGVyIHRhYmxlIGV4dHJlbWVseV9za2V3ZWQgc2V0IChhdXRvdmFj dXVtX2VuYWJsZWQgPSAnZmFsc2UnKTsKK2FsdGVyIHRhYmxlIGV4dHJlbWVseV9za2V3ZWQgc2V0 IChwYXJhbGxlbF93b3JrZXJzID0gMik7CithbmFseXplIGV4dHJlbWVseV9za2V3ZWQ7CitpbnNl cnQgaW50byBleHRyZW1lbHlfc2tld2VkCisgIHNlbGVjdCA0MiBhcyBpZCwgJ2FhYWFhYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEnCisgIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMDAw KTsKK3VwZGF0ZSBwZ19jbGFzcworICBzZXQgcmVsdHVwbGVzID0gMiwgcmVscGFnZXMgPSBwZ19y ZWxhdGlvbl9zaXplKCdleHRyZW1lbHlfc2tld2VkJykgLyA4MTkyCisgIHdoZXJlIHJlbG5hbWUg PSAnZXh0cmVtZWx5X3NrZXdlZCc7CisKKy0tIE1ha2UgYSByZWxhdGlvbiB3aXRoIGEgY291cGxl IG9mIGVub3Jtb3VzIHR1cGxlcy4KK2NyZWF0ZSB0YWJsZSB3aWRlIGFzIHNlbGVjdCBnZW5lcmF0 ZV9zZXJpZXMoMSwgMikgYXMgaWQsIHJwYWQoJycsIDMyMDAwMCwgJ3gnKSBhcyB0OworYWx0ZXIg dGFibGUgd2lkZSBzZXQgKHBhcmFsbGVsX3dvcmtlcnMgPSAyKTsKKworLS0gVGhlICJvcHRpbWFs IiBjYXNlOiB0aGUgaGFzaCB0YWJsZSBmaXRzIGluIG1lbW9yeTsgd2UgcGxhbiBmb3IgMQorLS0g YmF0Y2gsIHdlIHN0aWNrIHRvIHRoYXQgbnVtYmVyLCBhbmQgcGVhayBtZW1vcnkgdXNhZ2Ugc3Rh eXMgd2l0aGluCistLSBvdXIgd29ya19tZW0gYnVkZ2V0CisKKy0tIG5vbi1wYXJhbGxlbAorc2F2 ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRo ZXIgPSAwOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzRNQic7CitzZXQgbG9jYWwgaGFzaF9tZW1f bXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCop IGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworc2VsZWN0IGNvdW50KCop IGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworc2VsZWN0IG9yaWdpbmFs ID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFz ZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50 KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworJCQpOworcm9sbGJh Y2sgdG8gc2V0dGluZ3M7CisKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtb2JsaXZpb3VzIGhh c2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3Jr ZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzRNQic7CitzZXQgbG9j YWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBlbmFibGVfcGFyYWxsZWxf aGFzaCA9IG9mZjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20g c2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworc2VsZWN0IGNvdW50KCopIGZyb20g c2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworc2VsZWN0IG9yaWdpbmFsID4gMSBh cyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0 Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZy b20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworJCQpOworcm9sbGJhY2sgdG8g c2V0dGluZ3M7CisKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtYXdhcmUgaGFzaCBqb2luCitz YXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dh dGhlciA9IDI7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnNE1CJzsKK3NldCBsb2NhbCBoYXNoX21l bV9tdWx0aXBsaWVyID0gMS4wOworc2V0IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb247 CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpv aW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpv aW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5 X211bHRpYmF0Y2gsIGZpbmFsID4gb3JpZ2luYWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJv bSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSBy IGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOwor CistLSBUaGUgImdvb2QiIGNhc2U6IGJhdGNoZXMgcmVxdWlyZWQsIGJ1dCB3ZSBwbGFuIHRoZSBy aWdodCBudW1iZXI7IHdlCistLSBwbGFuIGZvciBzb21lIG51bWJlciBvZiBiYXRjaGVzLCBhbmQg d2Ugc3RpY2sgdG8gdGhhdCBudW1iZXIsIGFuZAorLS0gcGVhayBtZW1vcnkgdXNhZ2Ugc2F5cyB3 aXRoaW4gb3VyIHdvcmtfbWVtIGJ1ZGdldAorCistLSBub24tcGFyYWxsZWwKK3NhdmVwb2ludCBz ZXR0aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsK K3NldCBsb2NhbCB3b3JrX21lbSA9ICcxMjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlw bGllciA9IDEuMDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20g c2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworc2VsZWN0IGNvdW50KCopIGZyb20g c2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworc2VsZWN0IG9yaWdpbmFsID4gMSBh cyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0 Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZy b20gc2ltcGxlIHIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworJCQpOworcm9sbGJhY2sgdG8g c2V0dGluZ3M7CisKKy0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtb2JsaXZpb3VzIGhhc2ggam9p bgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Bl cl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzEyOGtCJzsKK3NldCBsb2NhbCBo YXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNo ID0gb2ZmOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1w bGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1w bGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGlu aXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVz CisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBz aW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CiskJCk7Cityb2xsYmFjayB0byBzZXR0 aW5nczsKKworLS0gcGFyYWxsZWwgd2l0aCBwYXJhbGxlbC1hd2FyZSBoYXNoIGpvaW4KK3NhdmVw b2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVy ID0gMjsKK3NldCBsb2NhbCB3b3JrX21lbSA9ICcxOTJrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1f bXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOwor ZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2lu IHNpbXBsZSBzIHVzaW5nIChpZCk7CitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2lu IHNpbXBsZSBzIHVzaW5nIChpZCk7CitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9t dWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20g aGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBq b2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CiskJCk7CistLSBwYXJhbGxlbCBmdWxsIG11bHRpLWJh dGNoIGhhc2ggam9pbgorc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBq b2luIHNpbXBsZSBzIHVzaW5nIChpZCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsKKworLS0gVGhl ICJiYWQiIGNhc2U6IGR1cmluZyBleGVjdXRpb24gd2UgbmVlZCB0byBpbmNyZWFzZSBudW1iZXIg b2YKKy0tIGJhdGNoZXM7IGluIHRoaXMgY2FzZSB3ZSBwbGFuIGZvciAxIGJhdGNoLCBhbmQgaW5j cmVhc2UgYXQgbGVhc3QgYQorLS0gY291cGxlIG9mIHRpbWVzLCBhbmQgcGVhayBtZW1vcnkgdXNh Z2Ugc3RheXMgd2l0aGluIG91ciB3b3JrX21lbQorLS0gYnVkZ2V0CisKKy0tIG5vbi1wYXJhbGxl bAorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Bl cl9nYXRoZXIgPSAwOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzEyOGtCJzsKK3NldCBsb2NhbCBo YXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3Qg Y291bnQoKikgRlJPTSBzaW1wbGUgciBKT0lOIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMgVVNJTkcg KGlkKTsKK3NlbGVjdCBjb3VudCgqKSBGUk9NIHNpbXBsZSByIEpPSU4gYmlnZ2VyX3RoYW5faXRf bG9va3MgcyBVU0lORyAoaWQpOworc2VsZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVs dGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhh c2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIEZST00gc2ltcGxlIHIgSk9J TiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIFVTSU5HIChpZCk7CiskJCk7Cityb2xsYmFjayB0byBz ZXR0aW5nczsKKworLS0gcGFyYWxsZWwgd2l0aCBwYXJhbGxlbC1vYmxpdmlvdXMgaGFzaCBqb2lu CitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVy X2dhdGhlciA9IDI7CitzZXQgbG9jYWwgd29ya19tZW0gPSAnMTI4a0InOworc2V0IGxvY2FsIGhh c2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitzZXQgbG9jYWwgZW5hYmxlX3BhcmFsbGVsX2hhc2gg PSBvZmY7CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBs ZSByIGpvaW4gYmlnZ2VyX3RoYW5faXRfbG9va3MgcyB1c2luZyAoaWQpOworc2VsZWN0IGNvdW50 KCopIGZyb20gc2ltcGxlIHIgam9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7 CitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9y aWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCisk JAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGJpZ2dlcl90aGFuX2l0X2xv b2tzIHMgdXNpbmcgKGlkKTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBwYXJh bGxlbCB3aXRoIHBhcmFsbGVsLWF3YXJlIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOwor c2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAxOworc2V0IGxvY2Fs IHdvcmtfbWVtID0gJzE5MmtCJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4w Oworc2V0IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb247CitleHBsYWluIChjb3N0cyBv ZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gYmlnZ2VyX3RoYW5faXRf bG9va3MgcyB1c2luZyAoaWQpOworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBi aWdnZXJfdGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFz IGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFsIGFzIGluY3JlYXNlZF9iYXRj aGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJv bSBzaW1wbGUgciBqb2luIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMgdXNpbmcgKGlkKTsKKyQkKTsK K3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBUaGUgInVnbHkiIGNhc2U6IGluY3JlYXNpbmcg dGhlIG51bWJlciBvZiBiYXRjaGVzIGR1cmluZyBleGVjdXRpb24KKy0tIGRvZXNuJ3QgaGVscCwg c28gc3RvcCB0cnlpbmcgdG8gZml0IGluIHdvcmtfbWVtIGFuZCBob3BlIGZvciB0aGUKKy0tIGJl c3Q7IGluIHRoaXMgY2FzZSB3ZSBwbGFuIGZvciAxIGJhdGNoLCBpbmNyZWFzZXMganVzdCBvbmNl IGFuZAorLS0gdGhlbiBzdG9wIGluY3JlYXNpbmcgYmVjYXVzZSB0aGF0IGRpZG4ndCBoZWxwIGF0 IGFsbCwgc28gd2UgYmxvdworLS0gcmlnaHQgdGhyb3VnaCB0aGUgd29ya19tZW0gYnVkZ2V0IGFu ZCBob3BlIGZvciB0aGUgYmVzdC4uLgorCistLSBub24tcGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0 aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKK3Nl dCBsb2NhbCB3b3JrX21lbSA9ICcxMjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGll ciA9IDEuMDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2lt cGxlIHIgam9pbiBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBjb3VudCgq KSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CitzZWxl Y3QgKiBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20g c2ltcGxlIHIgam9pbiBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKKyQkKTsKK3JvbGxi YWNrIHRvIHNldHRpbmdzOworCistLSBwYXJhbGxlbCB3aXRoIHBhcmFsbGVsLW9ibGl2aW91cyBo YXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29y a2Vyc19wZXJfZ2F0aGVyID0gMjsKK3NldCBsb2NhbCB3b3JrX21lbSA9ICcxMjhrQic7CitzZXQg bG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBlbmFibGVfcGFyYWxs ZWxfaGFzaCA9IG9mZjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZy b20gc2ltcGxlIHIgam9pbiBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBj b3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7 CitzZWxlY3QgKiBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCop IGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKKyQkKTsK K3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBwYXJhbGxlbCB3aXRoIHBhcmFsbGVsLWF3YXJl IGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93 b3JrZXJzX3Blcl9nYXRoZXIgPSAxOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzEyOGtCJzsKK3Nl dCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0IGxvY2FsIGVuYWJsZV9wYXJh bGxlbF9oYXNoID0gb247CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBm cm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CitzZWxlY3Qg Y291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4dHJlbWVseV9za2V3ZWQgcyB1c2luZyAoaWQp Oworc2VsZWN0ICogZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgq KSBmcm9tIHNpbXBsZSByIGpvaW4gZXh0cmVtZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CiskJCk7 Cityb2xsYmFjayB0byBzZXR0aW5nczsKKworLS0gQSBjb3VwbGUgb2Ygb3RoZXIgaGFzaCBqb2lu IHRlc3RzIHVucmVsYXRlZCB0byB3b3JrX21lbSBtYW5hZ2VtZW50LgorCistLSBDaGVjayB0aGF0 IEVYUExBSU4gQU5BTFlaRSBoYXMgZGF0YSBldmVuIGlmIHRoZSBsZWFkZXIgZG9lc24ndCBwYXJ0 aWNpcGF0ZQorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3Jr ZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzRNQic7CitzZXQgbG9j YWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBwYXJhbGxlbF9sZWFkZXJf cGFydGljaXBhdGlvbiA9IG9mZjsKK3NlbGVjdCAqIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCisk JAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChp ZCk7CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsKKworLS0gRXhlcmNpc2UgcmVzY2Fucy4g IFdlJ2xsIHR1cm4gb2ZmIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uIHNvCistLSB0aGF0 IHdlIGNhbiBjaGVjayB0aGF0IGluc3RydW1lbnRhdGlvbiBjb21lcyBiYWNrIGNvcnJlY3RseS4K KworY3JlYXRlIHRhYmxlIGpvaW5fZm9vIGFzIHNlbGVjdCBnZW5lcmF0ZV9zZXJpZXMoMSwgMykg YXMgaWQsICd4eHh4eCc6OnRleHQgYXMgdDsKK2FsdGVyIHRhYmxlIGpvaW5fZm9vIHNldCAocGFy YWxsZWxfd29ya2VycyA9IDApOworY3JlYXRlIHRhYmxlIGpvaW5fYmFyIGFzIHNlbGVjdCBnZW5l cmF0ZV9zZXJpZXMoMSwgMTAwMDApIGFzIGlkLCAneHh4eHgnOjp0ZXh0IGFzIHQ7CithbHRlciB0 YWJsZSBqb2luX2JhciBzZXQgKHBhcmFsbGVsX3dvcmtlcnMgPSAyKTsKKworLS0gbXVsdGktYmF0 Y2ggd2l0aCByZXNjYW4sIHBhcmFsbGVsLW9ibGl2aW91cworc2F2ZXBvaW50IHNldHRpbmdzOwor c2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworc2V0IHBhcmFsbGVsX2xlYWRlcl9wYXJ0 aWNpcGF0aW9uID0gb2ZmOworc2V0IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOwor c2V0IHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworc2V0IHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAw Oworc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVuYWJsZV9t YXRlcmlhbCA9IG9mZjsKK3NldCBlbmFibGVfbWVyZ2Vqb2luID0gb2ZmOworc2V0IHdvcmtfbWVt ID0gJzY0a0InOworc2V0IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0 cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVmdCBqb2luIChz ZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5n IChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlk ID4gc3MuaWQgLSAxOworc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9mb28KKyAgbGVmdCBqb2lu IChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVz aW5nIChpZCkpIHNzCisgIG9uIGpvaW5fZm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5p ZCA+IHNzLmlkIC0gMTsKK3NlbGVjdCBmaW5hbCA+IDEgYXMgbXVsdGliYXRjaAorICBmcm9tIGhh c2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9mb28KKyAg ICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIxIGpvaW4gam9p bl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBh bmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsK KworLS0gc2luZ2xlLWJhdGNoIHdpdGggcmVzY2FuLCBwYXJhbGxlbC1vYmxpdmlvdXMKK3NhdmVw b2ludCBzZXR0aW5nczsKK3NldCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK3NldCBwYXJh bGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9mZjsKK3NldCBtaW5fcGFyYWxsZWxfdGFibGVf c2Nhbl9zaXplID0gMDsKK3NldCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0gMDsKK3NldCBwYXJhbGxl bF90dXBsZV9jb3N0ID0gMDsKK3NldCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0g MjsKK3NldCBlbmFibGVfbWF0ZXJpYWwgPSBvZmY7CitzZXQgZW5hYmxlX21lcmdlam9pbiA9IG9m ZjsKK3NldCB3b3JrX21lbSA9ICc0TUInOworc2V0IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7 CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisg ICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpv aW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEg YW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9m b28KKyAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2lu IGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgIG9uIGpvaW5fZm9vLmlkIDwgc3MuaWQgKyAx IGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKK3NlbGVjdCBmaW5hbCA+IDEgYXMgbXVsdGli YXRjaAorICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZy b20gam9pbl9mb28KKyAgICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5f YmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgICBvbiBqb2luX2Zvby5p ZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CiskJCk7Cityb2xsYmFj ayB0byBzZXR0aW5nczsKKworLS0gbXVsdGktYmF0Y2ggd2l0aCByZXNjYW4sIHBhcmFsbGVsLWF3 YXJlCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvbjsK K3NldCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9mZjsKK3NldCBtaW5fcGFyYWxs ZWxfdGFibGVfc2Nhbl9zaXplID0gMDsKK3NldCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0gMDsKK3Nl dCBwYXJhbGxlbF90dXBsZV9jb3N0ID0gMDsKK3NldCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJf Z2F0aGVyID0gMjsKK3NldCBlbmFibGVfbWF0ZXJpYWwgPSBvZmY7CitzZXQgZW5hYmxlX21lcmdl am9pbiA9IG9mZjsKK3NldCB3b3JrX21lbSA9ICc2NGtCJzsKK3NldCBoYXNoX21lbV9tdWx0aXBs aWVyID0gMS4wOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBq b2luX2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIg YjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9uIGpvaW5fZm9vLmlkIDwg c3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKK3NlbGVjdCBjb3VudCgqKSBm cm9tIGpvaW5fZm9vCisgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9i YXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICBvbiBqb2luX2Zvby5pZCA8 IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CitzZWxlY3QgZmluYWwgPiAx IGFzIG11bHRpYmF0Y2gKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBj b3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQg ZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgICAgb24g am9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworJCQp Oworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIHNpbmdsZS1iYXRjaCB3aXRoIHJlc2Nhbiwg cGFyYWxsZWwtYXdhcmUKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBlbmFibGVfcGFyYWxsZWxf aGFzaCA9IG9uOworc2V0IHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0gb2ZmOworc2V0 IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOworc2V0IHBhcmFsbGVsX3NldHVwX2Nv c3QgPSAwOworc2V0IHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworc2V0IG1heF9wYXJhbGxlbF93 b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVuYWJsZV9tYXRlcmlhbCA9IG9mZjsKK3NldCBl bmFibGVfbWVyZ2Vqb2luID0gb2ZmOworc2V0IHdvcmtfbWVtID0gJzRNQic7CitzZXQgaGFzaF9t ZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50 KCopIGZyb20gam9pbl9mb28KKyAgICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9t IGpvaW5fYmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgICBvbiBqb2lu X2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CitzZWxlY3Qg Y291bnQoKikgZnJvbSBqb2luX2ZvbworICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBm cm9tIGpvaW5fYmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgb24gam9p bl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworc2VsZWN0 IGZpbmFsID4gMSBhcyBtdWx0aWJhdGNoCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAor ICBzZWxlY3QgY291bnQoKikgZnJvbSBqb2luX2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIx LmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBz cworICAgIG9uIGpvaW5fZm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlk IC0gMTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBBIGZ1bGwgb3V0ZXIgam9p biB3aGVyZSBldmVyeSByZWNvcmQgaXMgbWF0Y2hlZC4KKworLS0gbm9uLXBhcmFsbGVsCitzYXZl cG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhl ciA9IDA7CitleHBsYWluIChjb3N0cyBvZmYpCisgICAgIHNlbGVjdCAgY291bnQoKikgZnJvbSBz aW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCAgY291 bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsK K3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBwYXJhbGxlbGlzbSBub3QgcG9zc2libGUgd2l0 aCBwYXJhbGxlbC1vYmxpdmlvdXMgZnVsbCBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsK K3NldCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxf d29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgICAgc2VsZWN0 ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAo aWQpOworc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1w bGUgcyB1c2luZyAoaWQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIHBhcmFsbGVsaXNt IGlzIHBvc3NpYmxlIHdpdGggcGFyYWxsZWwtYXdhcmUgZnVsbCBoYXNoIGpvaW4KK3NhdmVwb2lu dCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0g MjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgICAgc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBs ZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworc2VsZWN0ICBjb3VudCgq KSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworcm9s bGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIEEgZnVsbCBvdXRlciBqb2luIHdoZXJlIGV2ZXJ5IHJl Y29yZCBpcyBub3QgbWF0Y2hlZC4KKworLS0gbm9uLXBhcmFsbGVsCitzYXZlcG9pbnQgc2V0dGlu Z3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CitleHBs YWluIChjb3N0cyBvZmYpCisgICAgIHNlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxs IG91dGVyIGpvaW4gc2ltcGxlIHMgb24gKHIuaWQgPSAwIC0gcy5pZCk7CitzZWxlY3QgIGNvdW50 KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIG9uIChyLmlkID0gMCAt IHMuaWQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIHBhcmFsbGVsaXNtIG5vdCBwb3Nz aWJsZSB3aXRoIHBhcmFsbGVsLW9ibGl2aW91cyBmdWxsIGhhc2ggam9pbgorc2F2ZXBvaW50IHNl dHRpbmdzOworc2V0IGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworc2V0IGxvY2FsIG1heF9w YXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICAg ICBzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBz IG9uIChyLmlkID0gMCAtIHMuaWQpOworc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1 bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyBvbiAoci5pZCA9IDAgLSBzLmlkKTsKK3JvbGxiYWNrIHRv IHNldHRpbmdzOworCistLSBwYXJhbGxlbGlzbSBpcyBwb3NzaWJsZSB3aXRoIHBhcmFsbGVsLWF3 YXJlIGZ1bGwgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3Bh cmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitleHBsYWluIChjb3N0cyBvZmYpCisgICAg IHNlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMg b24gKHIuaWQgPSAwIC0gcy5pZCk7CitzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVs bCBvdXRlciBqb2luIHNpbXBsZSBzIG9uIChyLmlkID0gMCAtIHMuaWQpOworcm9sbGJhY2sgdG8g c2V0dGluZ3M7CisKKworLS0gZXhlcmNpc2Ugc3BlY2lhbCBjb2RlIHBhdGhzIGZvciBodWdlIHR1 cGxlcyAobm90ZSB1c2Ugb2Ygbm9uLXN0cmljdAorLS0gZXhwcmVzc2lvbiBhbmQgbGVmdCBqb2lu IHJlcXVpcmVkIHRvIGdldCB0aGUgZGV0b2FzdGVkIHR1cGxlIGludG8KKy0tIHRoZSBoYXNoIHRh YmxlKQorCistLSBwYXJhbGxlbCB3aXRoIHBhcmFsbGVsLWF3YXJlIGhhc2ggam9pbiAoaGl0cyBF eGVjUGFyYWxsZWxIYXNoTG9hZFR1cGxlIGFuZAorLS0gc3RzX3B1dHR1cGxlIG92ZXJzaXplZCB0 dXBsZSBjYXNlcyBiZWNhdXNlIGl0J3MgbXVsdGktYmF0Y2gpCitzYXZlcG9pbnQgc2V0dGluZ3M7 CitzZXQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQgZW5hYmxlX3Bh cmFsbGVsX2hhc2ggPSBvbjsKK3NldCB3b3JrX21lbSA9ICcxMjhrQic7CitzZXQgaGFzaF9tZW1f bXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGxlbmd0aCht YXgocy50KSkKKyAgZnJvbSB3aWRlIGxlZnQgam9pbiAoc2VsZWN0IGlkLCBjb2FsZXNjZSh0LCAn JykgfHwgJycgYXMgdCBmcm9tIHdpZGUpIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBsZW5ndGgobWF4 KHMudCkpCitmcm9tIHdpZGUgbGVmdCBqb2luIChzZWxlY3QgaWQsIGNvYWxlc2NlKHQsICcnKSB8 fCAnJyBhcyB0IGZyb20gd2lkZSkgcyB1c2luZyAoaWQpOworc2VsZWN0IGZpbmFsID4gMSBhcyBt dWx0aWJhdGNoCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgbGVuZ3Ro KG1heChzLnQpKQorICBmcm9tIHdpZGUgbGVmdCBqb2luIChzZWxlY3QgaWQsIGNvYWxlc2NlKHQs ICcnKSB8fCAnJyBhcyB0IGZyb20gd2lkZSkgcyB1c2luZyAoaWQpOworJCQpOworcm9sbGJhY2sg dG8gc2V0dGluZ3M7CisKKworLS0gSGFzaCBqb2luIHJldXNlcyB0aGUgSE9UIHN0YXR1cyBiaXQg dG8gaW5kaWNhdGUgbWF0Y2ggc3RhdHVzLiBUaGlzIGNhbiBvbmx5CistLSBiZSBndWFyYW50ZWVk IHRvIHByb2R1Y2UgY29ycmVjdCByZXN1bHRzIGlmIGFsbCB0aGUgaGFzaCBqb2luIHR1cGxlIG1h dGNoCistLSBiaXRzIGFyZSByZXNldCBiZWZvcmUgcmV1c2UuIFRoaXMgaXMgZG9uZSB1cG9uIGxv YWRpbmcgdGhlbSBpbnRvIHRoZQorLS0gaGFzaHRhYmxlLgorU0FWRVBPSU5UIHNldHRpbmdzOwor U0VUIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb247CitTRVQgbWluX3BhcmFsbGVsX3RhYmxlX3Nj YW5fc2l6ZSA9IDA7CitTRVQgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitTRVQgcGFyYWxsZWxf dHVwbGVfY29zdCA9IDA7CitDUkVBVEUgVEFCTEUgaGp0ZXN0X21hdGNoYml0c190MShpZCBpbnQp OworQ1JFQVRFIFRBQkxFIGhqdGVzdF9tYXRjaGJpdHNfdDIoaWQgaW50KTsKK0lOU0VSVCBJTlRP IGhqdGVzdF9tYXRjaGJpdHNfdDEgVkFMVUVTICgxKTsKK0lOU0VSVCBJTlRPIGhqdGVzdF9tYXRj aGJpdHNfdDIgVkFMVUVTICgyKTsKKy0tIFVwZGF0ZSBzaG91bGQgY3JlYXRlIGEgSE9UIHR1cGxl LiBJZiB0aGlzIHN0YXR1cyBiaXQgaXNuJ3QgY2xlYXJlZCwgd2Ugd29uJ3QKKy0tIGNvcnJlY3Rs eSBlbWl0IHRoZSBOVUxMLWV4dGVuZGVkIHVubWF0Y2hpbmcgdHVwbGUgaW4gZnVsbCBoYXNoIGpv aW4uCitVUERBVEUgaGp0ZXN0X21hdGNoYml0c190MiBzZXQgaWQgPSAyOworU0VMRUNUICogRlJP TSBoanRlc3RfbWF0Y2hiaXRzX3QxIHQxIEZVTEwgSk9JTiBoanRlc3RfbWF0Y2hiaXRzX3QyIHQy IE9OIHQxLmlkID0gdDIuaWQKKyAgT1JERVIgQlkgdDEuaWQ7CistLSBUZXN0IHNlcmlhbCBmdWxs IGhhc2ggam9pbi4KKy0tIFJlc2V0dGluZyBwYXJhbGxlbF9zZXR1cF9jb3N0IHNob3VsZCBmb3Jj ZSBhIHNlcmlhbCBwbGFuLgorLS0gSnVzdCB0byBiZSBzYWZlLCBob3dldmVyLCBzZXQgZW5hYmxl X3BhcmFsbGVsX2hhc2ggdG8gb2ZmLCBhcyBwYXJhbGxlbCBmdWxsCistLSBoYXNoIGpvaW5zIGFy ZSBvbmx5IHN1cHBvcnRlZCB3aXRoIHNoYXJlZCBoYXNodGFibGVzLgorUkVTRVQgcGFyYWxsZWxf c2V0dXBfY29zdDsKK1NFVCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK1NFTEVDVCAqIEZS T00gaGp0ZXN0X21hdGNoYml0c190MSB0MSBGVUxMIEpPSU4gaGp0ZXN0X21hdGNoYml0c190MiB0 MiBPTiB0MS5pZCA9IHQyLmlkOworUk9MTEJBQ0sgVE8gc2V0dGluZ3M7CisKK3JvbGxiYWNrOwor CistLSBWZXJpZnkgdGhhdCBoYXNoIGtleSBleHByZXNzaW9ucyByZWZlcmVuY2UgdGhlIGNvcnJl Y3QKKy0tIG5vZGVzLiBIYXNoam9pbidzIGhhc2hrZXlzIG5lZWQgdG8gcmVmZXJlbmNlIGl0cyBv dXRlciBwbGFuLCBIYXNoJ3MKKy0tIG5lZWQgdG8gcmVmZXJlbmNlIEhhc2gncyBvdXRlciBwbGFu ICh3aGljaCBpcyBiZWxvdyBIYXNoSm9pbidzCistLSBpbm5lciBwbGFuKS4gSXQncyBub3QgdHJp dmlhbCB0byB2ZXJpZnkgdGhhdCB0aGUgcmVmZXJlbmNlcyBhcmUKKy0tIGNvcnJlY3QgKHdlIGRv bid0IGRpc3BsYXkgdGhlIGhhc2hrZXlzIHRoZW1zZWx2ZXMpLCBidXQgaWYgdGhlCistLSBoYXNo a2V5cyBjb250YWluIHN1YnBsYW4gcmVmZXJlbmNlcywgdGhvc2Ugd2lsbCBiZSBkaXNwbGF5ZWQu IEZvcmNlCistLSBzdWJwbGFucyB0byBhcHBlYXIganVzdCBhYm91dCBldmVyeXdoZXJlLgorLS0K Ky0tIEJ1ZyByZXBvcnQ6CistLSBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlk L0NBUHBIZmR2R1ZlZ0ZfVEtLUmlCclNtYXRKTDJkUjl1d0ZDdVIlMkJ0ZVFfOHRFWFU4bXhnJTQw bWFpbC5nbWFpbC5jb20KKy0tCitCRUdJTjsKK1NFVCBMT0NBTCBlbmFibGVfc29ydCA9IE9GRjsg LS0gYXZvaWQgbWVyZ2Vqb2lucworU0VUIExPQ0FMIGZyb21fY29sbGFwc2VfbGltaXQgPSAxOyAt LSBhbGxvd3MgZWFzeSBjaGFuZ2luZyBvZiBqb2luIG9yZGVyCisKK0NSRUFURSBUQUJMRSBoanRl c3RfMSAoYSB0ZXh0LCBiIGludCwgaWQgaW50LCBjIGJvb2wpOworQ1JFQVRFIFRBQkxFIGhqdGVz dF8yIChhIGJvb2wsIGlkIGludCwgYiB0ZXh0LCBjIGludCk7CisKK0lOU0VSVCBJTlRPIGhqdGVz dF8xKGEsIGIsIGlkLCBjKSBWQUxVRVMgKCd0ZXh0JywgMiwgMSwgZmFsc2UpOyAtLSBtYXRjaGVz CitJTlNFUlQgSU5UTyBoanRlc3RfMShhLCBiLCBpZCwgYykgVkFMVUVTICgndGV4dCcsIDEsIDIs IGZhbHNlKTsgLS0gZmFpbHMgaWQgam9pbiBjb25kaXRpb24KK0lOU0VSVCBJTlRPIGhqdGVzdF8x KGEsIGIsIGlkLCBjKSBWQUxVRVMgKCd0ZXh0JywgMjAsIDEsIGZhbHNlKTsgLS0gZmFpbHMgPCA1 MAorSU5TRVJUIElOVE8gaGp0ZXN0XzEoYSwgYiwgaWQsIGMpIFZBTFVFUyAoJ3RleHQnLCAxLCAx LCBmYWxzZSk7IC0tIGZhaWxzIChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpID0gKFNFTEVDVCBoanRl c3RfMi5jKjUpCisKK0lOU0VSVCBJTlRPIGhqdGVzdF8yKGEsIGlkLCBiLCBjKSBWQUxVRVMgKHRy dWUsIDEsICdhbm90aGVyJywgMik7IC0tIG1hdGNoZXMKK0lOU0VSVCBJTlRPIGhqdGVzdF8yKGEs IGlkLCBiLCBjKSBWQUxVRVMgKHRydWUsIDMsICdhbm90aGVyJywgNyk7IC0tIGZhaWxzIGlkIGpv aW4gY29uZGl0aW9uCitJTlNFUlQgSU5UTyBoanRlc3RfMihhLCBpZCwgYiwgYykgVkFMVUVTICh0 cnVlLCAxLCAnYW5vdGhlcicsIDkwKTsgIC0tIGZhaWxzIDwgNTUKK0lOU0VSVCBJTlRPIGhqdGVz dF8yKGEsIGlkLCBiLCBjKSBWQUxVRVMgKHRydWUsIDEsICdhbm90aGVyJywgMyk7IC0tIGZhaWxz IChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpID0gKFNFTEVDVCBoanRlc3RfMi5jKjUpCitJTlNFUlQg SU5UTyBoanRlc3RfMihhLCBpZCwgYiwgYykgVkFMVUVTICh0cnVlLCAxLCAndGV4dCcsIDEpOyAt LSAgZmFpbHMgaGp0ZXN0XzEuYSA8PiBoanRlc3RfMi5iOworCitFWFBMQUlOIChDT1NUUyBPRkYs IFZFUkJPU0UpCitTRUxFQ1QgaGp0ZXN0XzEuYSBhMSwgaGp0ZXN0XzIuYSBhMixoanRlc3RfMS50 YWJsZW9pZDo6cmVnY2xhc3MgdDEsIGhqdGVzdF8yLnRhYmxlb2lkOjpyZWdjbGFzcyB0MgorRlJP TSBoanRlc3RfMSwgaGp0ZXN0XzIKK1dIRVJFCisgICAgaGp0ZXN0XzEuaWQgPSAoU0VMRUNUIDEg V0hFUkUgaGp0ZXN0XzIuaWQgPSAxKQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1KSA9 IChTRUxFQ1QgaGp0ZXN0XzIuYyo1KQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1KSA8 IDUwCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzIuYyAqIDUpIDwgNTUKKyAgICBBTkQgaGp0ZXN0 XzEuYSA8PiBoanRlc3RfMi5iOworCitTRUxFQ1QgaGp0ZXN0XzEuYSBhMSwgaGp0ZXN0XzIuYSBh MixoanRlc3RfMS50YWJsZW9pZDo6cmVnY2xhc3MgdDEsIGhqdGVzdF8yLnRhYmxlb2lkOjpyZWdj bGFzcyB0MgorRlJPTSBoanRlc3RfMSwgaGp0ZXN0XzIKK1dIRVJFCisgICAgaGp0ZXN0XzEuaWQg PSAoU0VMRUNUIDEgV0hFUkUgaGp0ZXN0XzIuaWQgPSAxKQorICAgIEFORCAoU0VMRUNUIGhqdGVz dF8xLmIgKiA1KSA9IChTRUxFQ1QgaGp0ZXN0XzIuYyo1KQorICAgIEFORCAoU0VMRUNUIGhqdGVz dF8xLmIgKiA1KSA8IDUwCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzIuYyAqIDUpIDwgNTUKKyAg ICBBTkQgaGp0ZXN0XzEuYSA8PiBoanRlc3RfMi5iOworCitFWFBMQUlOIChDT1NUUyBPRkYsIFZF UkJPU0UpCitTRUxFQ1QgaGp0ZXN0XzEuYSBhMSwgaGp0ZXN0XzIuYSBhMixoanRlc3RfMS50YWJs ZW9pZDo6cmVnY2xhc3MgdDEsIGhqdGVzdF8yLnRhYmxlb2lkOjpyZWdjbGFzcyB0MgorRlJPTSBo anRlc3RfMiwgaGp0ZXN0XzEKK1dIRVJFCisgICAgaGp0ZXN0XzEuaWQgPSAoU0VMRUNUIDEgV0hF UkUgaGp0ZXN0XzIuaWQgPSAxKQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1KSA9IChT RUxFQ1QgaGp0ZXN0XzIuYyo1KQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1KSA8IDUw CisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzIuYyAqIDUpIDwgNTUKKyAgICBBTkQgaGp0ZXN0XzEu YSA8PiBoanRlc3RfMi5iOworCitTRUxFQ1QgaGp0ZXN0XzEuYSBhMSwgaGp0ZXN0XzIuYSBhMixo anRlc3RfMS50YWJsZW9pZDo6cmVnY2xhc3MgdDEsIGhqdGVzdF8yLnRhYmxlb2lkOjpyZWdjbGFz cyB0MgorRlJPTSBoanRlc3RfMiwgaGp0ZXN0XzEKK1dIRVJFCisgICAgaGp0ZXN0XzEuaWQgPSAo U0VMRUNUIDEgV0hFUkUgaGp0ZXN0XzIuaWQgPSAxKQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8x LmIgKiA1KSA9IChTRUxFQ1QgaGp0ZXN0XzIuYyo1KQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8x LmIgKiA1KSA8IDUwCisgICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzIuYyAqIDUpIDwgNTUKKyAgICBB TkQgaGp0ZXN0XzEuYSA8PiBoanRlc3RfMi5iOworCitST0xMQkFDSzsKKworLS0gVmVyaWZ5IHRo YXQgd2UgYmVoYXZlIHNhbmVseSB3aGVuIHRoZSBpbm5lciBoYXNoIGtleXMgY29udGFpbiBwYXJh bWV0ZXJzCistLSAodGhhdCBpcywgb3V0ZXIgb3IgbGF0ZXJhbCByZWZlcmVuY2VzKS4gIFRoaXMg c2l0dWF0aW9uIGhhcyB0byBkZWZlYXQKKy0tIHJlLXVzZSBvZiB0aGUgaW5uZXIgaGFzaCB0YWJs ZSBhY3Jvc3MgcmVzY2Fucy4KK2JlZ2luOworc2V0IGxvY2FsIGVuYWJsZV9oYXNoam9pbiA9IG9u OworCitleHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3QgaTgucTIsIHNzLiogZnJvbQoraW50OF90 YmwgaTgsCitsYXRlcmFsIChzZWxlY3QgdDEuZml2ZXRob3VzLCBpNC5mMSBmcm9tIHRlbmsxIHQx IGpvaW4gaW50NF90YmwgaTQKKyAgICAgICAgIG9uIHQxLmZpdmV0aG91cyA9IGk0LmYxK2k4LnEy IG9yZGVyIGJ5IDEsMikgc3M7CisKK3NlbGVjdCBpOC5xMiwgc3MuKiBmcm9tCitpbnQ4X3RibCBp OCwKK2xhdGVyYWwgKHNlbGVjdCB0MS5maXZldGhvdXMsIGk0LmYxIGZyb20gdGVuazEgdDEgam9p biBpbnQ0X3RibCBpNAorICAgICAgICAgb24gdDEuZml2ZXRob3VzID0gaTQuZjEraTgucTIgb3Jk ZXIgYnkgMSwyKSBzczsKKworcm9sbGJhY2s7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9qb2luX2hhc2hfcGdsei5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luX2hhc2hf cGdsei5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjI2ODZhZmFi MjcyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbl9oYXNoX3Bn bHouc3FsCkBAIC0wLDAgKzEsNjI2IEBACistLQorLS0gZXhlcmNpc2VzIGZvciB0aGUgaGFzaCBq b2luIGNvZGUKKy0tCisKK2JlZ2luOworCitzZXQgbG9jYWwgbWluX3BhcmFsbGVsX3RhYmxlX3Nj YW5fc2l6ZSA9IDA7CitzZXQgbG9jYWwgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitzZXQgbG9j YWwgZW5hYmxlX2hhc2hqb2luID0gb247CitzZXQgbG9jYWwgdGVtcF9maWxlX2NvbXByZXNzaW9u ID0gJ3BnbHonOworCistLSBFeHRyYWN0IGJ1Y2tldCBhbmQgYmF0Y2ggY291bnRzIGZyb20gYW4g ZXhwbGFpbiBhbmFseXplIHBsYW4uICBJbgorLS0gZ2VuZXJhbCB3ZSBjYW4ndCBtYWtlIGFzc2Vy dGlvbnMgYWJvdXQgaG93IG1hbnkgYmF0Y2hlcyAob3IKKy0tIGJ1Y2tldHMpIHdpbGwgYmUgcmVx dWlyZWQgYmVjYXVzZSBpdCBjYW4gdmFyeSwgYnV0IHdlIGNhbiBpbiBzb21lCistLSBzcGVjaWFs IGNhc2VzIGFuZCB3ZSBjYW4gY2hlY2sgZm9yIGdyb3d0aC4KK2NyZWF0ZSBvciByZXBsYWNlIGZ1 bmN0aW9uIGZpbmRfaGFzaChub2RlIGpzb24pCityZXR1cm5zIGpzb24gbGFuZ3VhZ2UgcGxwZ3Nx bAorYXMKKyQkCitkZWNsYXJlCisgIHgganNvbjsKKyAgY2hpbGQganNvbjsKK2JlZ2luCisgIGlm IG5vZGUtPj4nTm9kZSBUeXBlJyA9ICdIYXNoJyB0aGVuCisgICAgcmV0dXJuIG5vZGU7CisgIGVs c2UKKyAgICBmb3IgY2hpbGQgaW4gc2VsZWN0IGpzb25fYXJyYXlfZWxlbWVudHMobm9kZS0+J1Bs YW5zJykKKyAgICBsb29wCisgICAgICB4IDo9IGZpbmRfaGFzaChjaGlsZCk7CisgICAgICBpZiB4 IGlzIG5vdCBudWxsIHRoZW4KKyAgICAgICAgcmV0dXJuIHg7CisgICAgICBlbmQgaWY7CisgICAg ZW5kIGxvb3A7CisgICAgcmV0dXJuIG51bGw7CisgIGVuZCBpZjsKK2VuZDsKKyQkOworY3JlYXRl IG9yIHJlcGxhY2UgZnVuY3Rpb24gaGFzaF9qb2luX2JhdGNoZXMocXVlcnkgdGV4dCkKK3JldHVy bnMgdGFibGUgKG9yaWdpbmFsIGludCwgZmluYWwgaW50KSBsYW5ndWFnZSBwbHBnc3FsCithcwor JCQKK2RlY2xhcmUKKyAgd2hvbGVfcGxhbiBqc29uOworICBoYXNoX25vZGUganNvbjsKK2JlZ2lu CisgIGZvciB3aG9sZV9wbGFuIGluCisgICAgZXhlY3V0ZSAnZXhwbGFpbiAoYW5hbHl6ZSwgZm9y bWF0ICcnanNvbicnKSAnIHx8IHF1ZXJ5CisgIGxvb3AKKyAgICBoYXNoX25vZGUgOj0gZmluZF9o YXNoKGpzb25fZXh0cmFjdF9wYXRoKHdob2xlX3BsYW4sICcwJywgJ1BsYW4nKSk7CisgICAgb3Jp Z2luYWwgOj0gaGFzaF9ub2RlLT4+J09yaWdpbmFsIEhhc2ggQmF0Y2hlcyc7CisgICAgZmluYWwg Oj0gaGFzaF9ub2RlLT4+J0hhc2ggQmF0Y2hlcyc7CisgICAgcmV0dXJuIG5leHQ7CisgIGVuZCBs b29wOworZW5kOworJCQ7CisKKy0tIE1ha2UgYSBzaW1wbGUgcmVsYXRpb24gd2l0aCB3ZWxsIGRp c3RyaWJ1dGVkIGtleXMgYW5kIGNvcnJlY3RseQorLS0gZXN0aW1hdGVkIHNpemUuCitjcmVhdGUg dGFibGUgc2ltcGxlIGFzCisgIHNlbGVjdCBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwMDApIEFTIGlk LCAnYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSc7CithbHRlciB0YWJsZSBzaW1w bGUgc2V0IChwYXJhbGxlbF93b3JrZXJzID0gMik7CithbmFseXplIHNpbXBsZTsKKworLS0gTWFr ZSBhIHJlbGF0aW9uIHdob3NlIHNpemUgd2Ugd2lsbCB1bmRlci1lc3RpbWF0ZS4gIFdlIHdhbnQg c3RhdHMKKy0tIHRvIHNheSAxMDAwIHJvd3MsIGJ1dCBhY3R1YWxseSB0aGVyZSBhcmUgMjAsMDAw IHJvd3MuCitjcmVhdGUgdGFibGUgYmlnZ2VyX3RoYW5faXRfbG9va3MgYXMKKyAgc2VsZWN0IGdl bmVyYXRlX3NlcmllcygxLCAyMDAwMCkgYXMgaWQsICdhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWFhYWFhJzsKK2FsdGVyIHRhYmxlIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHNldCAoYXV0b3Zh Y3V1bV9lbmFibGVkID0gJ2ZhbHNlJyk7CithbHRlciB0YWJsZSBiaWdnZXJfdGhhbl9pdF9sb29r cyBzZXQgKHBhcmFsbGVsX3dvcmtlcnMgPSAyKTsKK2FuYWx5emUgYmlnZ2VyX3RoYW5faXRfbG9v a3M7Cit1cGRhdGUgcGdfY2xhc3Mgc2V0IHJlbHR1cGxlcyA9IDEwMDAgd2hlcmUgcmVsbmFtZSA9 ICdiaWdnZXJfdGhhbl9pdF9sb29rcyc7CisKKy0tIE1ha2UgYSByZWxhdGlvbiB3aG9zZSBzaXpl IHdlIHVuZGVyZXN0aW1hdGUgYW5kIHRoYXQgYWxzbyBoYXMgYQorLS0ga2luZCBvZiBza2V3IHRo YXQgYnJlYWtzIG91ciBiYXRjaGluZyBzY2hlbWUuICBXZSB3YW50IHN0YXRzIHRvIHNheQorLS0g MiByb3dzLCBidXQgYWN0dWFsbHkgdGhlcmUgYXJlIDIwLDAwMCByb3dzIHdpdGggdGhlIHNhbWUg a2V5LgorY3JlYXRlIHRhYmxlIGV4dHJlbWVseV9za2V3ZWQgKGlkIGludCwgdCB0ZXh0KTsKK2Fs dGVyIHRhYmxlIGV4dHJlbWVseV9za2V3ZWQgc2V0IChhdXRvdmFjdXVtX2VuYWJsZWQgPSAnZmFs c2UnKTsKK2FsdGVyIHRhYmxlIGV4dHJlbWVseV9za2V3ZWQgc2V0IChwYXJhbGxlbF93b3JrZXJz ID0gMik7CithbmFseXplIGV4dHJlbWVseV9za2V3ZWQ7CitpbnNlcnQgaW50byBleHRyZW1lbHlf c2tld2VkCisgIHNlbGVjdCA0MiBhcyBpZCwgJ2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh YWFhYWEnCisgIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMDAwKTsKK3VwZGF0ZSBwZ19jbGFz cworICBzZXQgcmVsdHVwbGVzID0gMiwgcmVscGFnZXMgPSBwZ19yZWxhdGlvbl9zaXplKCdleHRy ZW1lbHlfc2tld2VkJykgLyA4MTkyCisgIHdoZXJlIHJlbG5hbWUgPSAnZXh0cmVtZWx5X3NrZXdl ZCc7CisKKy0tIE1ha2UgYSByZWxhdGlvbiB3aXRoIGEgY291cGxlIG9mIGVub3Jtb3VzIHR1cGxl cy4KK2NyZWF0ZSB0YWJsZSB3aWRlIGFzIHNlbGVjdCBnZW5lcmF0ZV9zZXJpZXMoMSwgMikgYXMg aWQsIHJwYWQoJycsIDMyMDAwMCwgJ3gnKSBhcyB0OworYWx0ZXIgdGFibGUgd2lkZSBzZXQgKHBh cmFsbGVsX3dvcmtlcnMgPSAyKTsKKworLS0gVGhlICJvcHRpbWFsIiBjYXNlOiB0aGUgaGFzaCB0 YWJsZSBmaXRzIGluIG1lbW9yeTsgd2UgcGxhbiBmb3IgMQorLS0gYmF0Y2gsIHdlIHN0aWNrIHRv IHRoYXQgbnVtYmVyLCBhbmQgcGVhayBtZW1vcnkgdXNhZ2Ugc3RheXMgd2l0aGluCistLSBvdXIg d29ya19tZW0gYnVkZ2V0CisKKy0tIG5vbi1wYXJhbGxlbAorc2F2ZXBvaW50IHNldHRpbmdzOwor c2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworc2V0IGxvY2Fs IHdvcmtfbWVtID0gJzRNQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsK K2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9p biBzaW1wbGUgcyB1c2luZyAoaWQpOworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9p biBzaW1wbGUgcyB1c2luZyAoaWQpOworc2VsZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlf bXVsdGliYXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9t IGhhc2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIg am9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworJCQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisK Ky0tIHBhcmFsbGVsIHdpdGggcGFyYWxsZWwtb2JsaXZpb3VzIGhhc2ggam9pbgorc2F2ZXBvaW50 IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAy Oworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzRNQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlw bGllciA9IDEuMDsKK3NldCBsb2NhbCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK2V4cGxh aW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1w bGUgcyB1c2luZyAoaWQpOworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1w bGUgcyB1c2luZyAoaWQpOworc2VsZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGli YXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hf am9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBz aW1wbGUgcyB1c2luZyAoaWQpOworJCQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIHBh cmFsbGVsIHdpdGggcGFyYWxsZWwtYXdhcmUgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGluZ3M7 CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQgbG9j YWwgd29ya19tZW0gPSAnNE1CJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4w Oworc2V0IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb247CitleHBsYWluIChjb3N0cyBv ZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcg KGlkKTsKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNpbmcg KGlkKTsKK3NlbGVjdCBvcmlnaW5hbCA+IDEgYXMgaW5pdGlhbGx5X211bHRpYmF0Y2gsIGZpbmFs ID4gb3JpZ2luYWwgYXMgaW5jcmVhc2VkX2JhdGNoZXMKKyAgZnJvbSBoYXNoX2pvaW5fYmF0Y2hl cygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gc2ltcGxlIHMgdXNp bmcgKGlkKTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBUaGUgImdvb2QiIGNh c2U6IGJhdGNoZXMgcmVxdWlyZWQsIGJ1dCB3ZSBwbGFuIHRoZSByaWdodCBudW1iZXI7IHdlCist LSBwbGFuIGZvciBzb21lIG51bWJlciBvZiBiYXRjaGVzLCBhbmQgd2Ugc3RpY2sgdG8gdGhhdCBu dW1iZXIsIGFuZAorLS0gcGVhayBtZW1vcnkgdXNhZ2Ugc2F5cyB3aXRoaW4gb3VyIHdvcmtfbWVt IGJ1ZGdldAorCistLSBub24tcGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2Nh bCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKK3NldCBsb2NhbCB3b3JrX21l bSA9ICcxMjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxh aW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1w bGUgcyB1c2luZyAoaWQpOworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBzaW1w bGUgcyB1c2luZyAoaWQpOworc2VsZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGli YXRjaCwgZmluYWwgPiBvcmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hf am9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBz aW1wbGUgcyB1c2luZyAoaWQpOworJCQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIHBh cmFsbGVsIHdpdGggcGFyYWxsZWwtb2JsaXZpb3VzIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRp bmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0 IGxvY2FsIHdvcmtfbWVtID0gJzEyOGtCJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVy ID0gMS4wOworc2V0IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworZXhwbGFpbiAo Y29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBz IHVzaW5nIChpZCk7CitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBz IHVzaW5nIChpZCk7CitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNo LCBmaW5hbCA+IG9yaWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2lu X2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBs ZSBzIHVzaW5nIChpZCk7CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsKKworLS0gcGFyYWxs ZWwgd2l0aCBwYXJhbGxlbC1hd2FyZSBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsKK3Nl dCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3NldCBsb2NhbCB3 b3JrX21lbSA9ICcxOTJrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsK K3NldCBsb2NhbCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworZXhwbGFpbiAoY29zdHMgb2Zm KQorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChp ZCk7CitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChp ZCk7CitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+ IG9yaWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMo CiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5n IChpZCk7CiskJCk7CistLSBwYXJhbGxlbCBmdWxsIG11bHRpLWJhdGNoIGhhc2ggam9pbgorc2Vs ZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIHVzaW5n IChpZCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsKKworLS0gVGhlICJiYWQiIGNhc2U6IGR1cmlu ZyBleGVjdXRpb24gd2UgbmVlZCB0byBpbmNyZWFzZSBudW1iZXIgb2YKKy0tIGJhdGNoZXM7IGlu IHRoaXMgY2FzZSB3ZSBwbGFuIGZvciAxIGJhdGNoLCBhbmQgaW5jcmVhc2UgYXQgbGVhc3QgYQor LS0gY291cGxlIG9mIHRpbWVzLCBhbmQgcGVhayBtZW1vcnkgdXNhZ2Ugc3RheXMgd2l0aGluIG91 ciB3b3JrX21lbQorLS0gYnVkZ2V0CisKKy0tIG5vbi1wYXJhbGxlbAorc2F2ZXBvaW50IHNldHRp bmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworc2V0 IGxvY2FsIHdvcmtfbWVtID0gJzEyOGtCJzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVy ID0gMS4wOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikgRlJPTSBzaW1w bGUgciBKT0lOIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMgVVNJTkcgKGlkKTsKK3NlbGVjdCBjb3Vu dCgqKSBGUk9NIHNpbXBsZSByIEpPSU4gYmlnZ2VyX3RoYW5faXRfbG9va3MgcyBVU0lORyAoaWQp Oworc2VsZWN0IG9yaWdpbmFsID4gMSBhcyBpbml0aWFsbHlfbXVsdGliYXRjaCwgZmluYWwgPiBv cmlnaW5hbCBhcyBpbmNyZWFzZWRfYmF0Y2hlcworICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAor JCQKKyAgc2VsZWN0IGNvdW50KCopIEZST00gc2ltcGxlIHIgSk9JTiBiaWdnZXJfdGhhbl9pdF9s b29rcyBzIFVTSU5HIChpZCk7CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsKKworLS0gcGFy YWxsZWwgd2l0aCBwYXJhbGxlbC1vYmxpdmlvdXMgaGFzaCBqb2luCitzYXZlcG9pbnQgc2V0dGlu Z3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQg bG9jYWwgd29ya19tZW0gPSAnMTI4a0InOworc2V0IGxvY2FsIGhhc2hfbWVtX211bHRpcGxpZXIg PSAxLjA7CitzZXQgbG9jYWwgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvZmY7CitleHBsYWluIChj b3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gYmlnZ2VyX3Ro YW5faXRfbG9va3MgcyB1c2luZyAoaWQpOworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIg am9pbiBiaWdnZXJfdGhhbl9pdF9sb29rcyBzIHVzaW5nIChpZCk7CitzZWxlY3Qgb3JpZ2luYWwg PiAxIGFzIGluaXRpYWxseV9tdWx0aWJhdGNoLCBmaW5hbCA+IG9yaWdpbmFsIGFzIGluY3JlYXNl ZF9iYXRjaGVzCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQo KikgZnJvbSBzaW1wbGUgciBqb2luIGJpZ2dlcl90aGFuX2l0X2xvb2tzIHMgdXNpbmcgKGlkKTsK KyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBwYXJhbGxlbCB3aXRoIHBhcmFsbGVs LWF3YXJlIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJh bGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAxOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzE5MmtC JzsKK3NldCBsb2NhbCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworc2V0IGxvY2FsIGVuYWJs ZV9wYXJhbGxlbF9oYXNoID0gb247CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3Vu dCgqKSBmcm9tIHNpbXBsZSByIGpvaW4gYmlnZ2VyX3RoYW5faXRfbG9va3MgcyB1c2luZyAoaWQp Oworc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBiaWdnZXJfdGhhbl9pdF9sb29r cyBzIHVzaW5nIChpZCk7CitzZWxlY3Qgb3JpZ2luYWwgPiAxIGFzIGluaXRpYWxseV9tdWx0aWJh dGNoLCBmaW5hbCA+IG9yaWdpbmFsIGFzIGluY3JlYXNlZF9iYXRjaGVzCisgIGZyb20gaGFzaF9q b2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGJp Z2dlcl90aGFuX2l0X2xvb2tzIHMgdXNpbmcgKGlkKTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNldHRp bmdzOworCistLSBUaGUgInVnbHkiIGNhc2U6IGluY3JlYXNpbmcgdGhlIG51bWJlciBvZiBiYXRj aGVzIGR1cmluZyBleGVjdXRpb24KKy0tIGRvZXNuJ3QgaGVscCwgc28gc3RvcCB0cnlpbmcgdG8g Zml0IGluIHdvcmtfbWVtIGFuZCBob3BlIGZvciB0aGUKKy0tIGJlc3Q7IGluIHRoaXMgY2FzZSB3 ZSBwbGFuIGZvciAxIGJhdGNoLCBpbmNyZWFzZXMganVzdCBvbmNlIGFuZAorLS0gdGhlbiBzdG9w IGluY3JlYXNpbmcgYmVjYXVzZSB0aGF0IGRpZG4ndCBoZWxwIGF0IGFsbCwgc28gd2UgYmxvdwor LS0gcmlnaHQgdGhyb3VnaCB0aGUgd29ya19tZW0gYnVkZ2V0IGFuZCBob3BlIGZvciB0aGUgYmVz dC4uLgorCistLSBub24tcGFyYWxsZWwKK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBsb2NhbCBt YXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKK3NldCBsb2NhbCB3b3JrX21lbSA9 ICcxMjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKK2V4cGxhaW4g KGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRyZW1l bHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpv aW4gZXh0cmVtZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CitzZWxlY3QgKiBmcm9tIGhhc2hfam9p bl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBleHRy ZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOwor CistLSBwYXJhbGxlbCB3aXRoIHBhcmFsbGVsLW9ibGl2aW91cyBoYXNoIGpvaW4KK3NhdmVwb2lu dCBzZXR0aW5nczsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0g MjsKK3NldCBsb2NhbCB3b3JrX21lbSA9ICcxMjhrQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVs dGlwbGllciA9IDEuMDsKK3NldCBsb2NhbCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK2V4 cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9pbiBl eHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBs ZSByIGpvaW4gZXh0cmVtZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CitzZWxlY3QgKiBmcm9tIGhh c2hfam9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gc2ltcGxlIHIgam9p biBleHRyZW1lbHlfc2tld2VkIHMgdXNpbmcgKGlkKTsKKyQkKTsKK3JvbGxiYWNrIHRvIHNldHRp bmdzOworCistLSBwYXJhbGxlbCB3aXRoIHBhcmFsbGVsLWF3YXJlIGhhc2ggam9pbgorc2F2ZXBv aW50IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIg PSAxOworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzEyOGtCJzsKK3NldCBsb2NhbCBoYXNoX21lbV9t dWx0aXBsaWVyID0gMS4wOworc2V0IGxvY2FsIGVuYWJsZV9wYXJhbGxlbF9oYXNoID0gb247Citl eHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpvaW4g ZXh0cmVtZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CitzZWxlY3QgY291bnQoKikgZnJvbSBzaW1w bGUgciBqb2luIGV4dHJlbWVseV9za2V3ZWQgcyB1c2luZyAoaWQpOworc2VsZWN0ICogZnJvbSBo YXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGpv aW4gZXh0cmVtZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CiskJCk7Cityb2xsYmFjayB0byBzZXR0 aW5nczsKKworLS0gQSBjb3VwbGUgb2Ygb3RoZXIgaGFzaCBqb2luIHRlc3RzIHVucmVsYXRlZCB0 byB3b3JrX21lbSBtYW5hZ2VtZW50LgorCistLSBDaGVjayB0aGF0IEVYUExBSU4gQU5BTFlaRSBo YXMgZGF0YSBldmVuIGlmIHRoZSBsZWFkZXIgZG9lc24ndCBwYXJ0aWNpcGF0ZQorc2F2ZXBvaW50 IHNldHRpbmdzOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAy Oworc2V0IGxvY2FsIHdvcmtfbWVtID0gJzRNQic7CitzZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlw bGllciA9IDEuMDsKK3NldCBsb2NhbCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9m ZjsKK3NlbGVjdCAqIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQo KikgZnJvbSBzaW1wbGUgciBqb2luIHNpbXBsZSBzIHVzaW5nIChpZCk7CiskJCk7Cityb2xsYmFj ayB0byBzZXR0aW5nczsKKworLS0gRXhlcmNpc2UgcmVzY2Fucy4gIFdlJ2xsIHR1cm4gb2ZmIHBh cmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uIHNvCistLSB0aGF0IHdlIGNhbiBjaGVjayB0aGF0 IGluc3RydW1lbnRhdGlvbiBjb21lcyBiYWNrIGNvcnJlY3RseS4KKworY3JlYXRlIHRhYmxlIGpv aW5fZm9vIGFzIHNlbGVjdCBnZW5lcmF0ZV9zZXJpZXMoMSwgMykgYXMgaWQsICd4eHh4eCc6OnRl eHQgYXMgdDsKK2FsdGVyIHRhYmxlIGpvaW5fZm9vIHNldCAocGFyYWxsZWxfd29ya2VycyA9IDAp OworY3JlYXRlIHRhYmxlIGpvaW5fYmFyIGFzIHNlbGVjdCBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAw MDApIGFzIGlkLCAneHh4eHgnOjp0ZXh0IGFzIHQ7CithbHRlciB0YWJsZSBqb2luX2JhciBzZXQg KHBhcmFsbGVsX3dvcmtlcnMgPSAyKTsKKworLS0gbXVsdGktYmF0Y2ggd2l0aCByZXNjYW4sIHBh cmFsbGVsLW9ibGl2aW91cworc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGVuYWJsZV9wYXJhbGxl bF9oYXNoID0gb2ZmOworc2V0IHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0gb2ZmOwor c2V0IG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOworc2V0IHBhcmFsbGVsX3NldHVw X2Nvc3QgPSAwOworc2V0IHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworc2V0IG1heF9wYXJhbGxl bF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworc2V0IGVuYWJsZV9tYXRlcmlhbCA9IG9mZjsKK3Nl dCBlbmFibGVfbWVyZ2Vqb2luID0gb2ZmOworc2V0IHdvcmtfbWVtID0gJzY0a0InOworc2V0IGhh c2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0cyBvZmYpCisgIHNlbGVjdCBj b3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQg ZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgICAgb24g am9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworc2Vs ZWN0IGNvdW50KCopIGZyb20gam9pbl9mb28KKyAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIx LnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgIG9u IGpvaW5fZm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKK3Nl bGVjdCBmaW5hbCA+IDEgYXMgbXVsdGliYXRjaAorICBmcm9tIGhhc2hfam9pbl9iYXRjaGVzKAor JCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9mb28KKyAgICBsZWZ0IGpvaW4gKHNlbGVj dCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIxIGpvaW4gam9pbl9iYXIgYjIgdXNpbmcgKGlk KSkgc3MKKyAgICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9pbl9mb28uaWQgPiBz cy5pZCAtIDE7CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsKKworLS0gc2luZ2xlLWJhdGNo IHdpdGggcmVzY2FuLCBwYXJhbGxlbC1vYmxpdmlvdXMKK3NhdmVwb2ludCBzZXR0aW5nczsKK3Nl dCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK3NldCBwYXJhbGxlbF9sZWFkZXJfcGFydGlj aXBhdGlvbiA9IG9mZjsKK3NldCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplID0gMDsKK3Nl dCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0gMDsKK3NldCBwYXJhbGxlbF90dXBsZV9jb3N0ID0gMDsK K3NldCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3NldCBlbmFibGVfbWF0 ZXJpYWwgPSBvZmY7CitzZXQgZW5hYmxlX21lcmdlam9pbiA9IG9mZjsKK3NldCB3b3JrX21lbSA9 ICc0TUInOworc2V0IGhhc2hfbWVtX211bHRpcGxpZXIgPSAxLjA7CitleHBsYWluIChjb3N0cyBv ZmYpCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgICAgbGVmdCBqb2luIChzZWxl Y3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5nIChp ZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBzcy5pZCArIDEgYW5kIGpvaW5fZm9vLmlkID4g c3MuaWQgLSAxOworc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9mb28KKyAgbGVmdCBqb2luIChz ZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBqb2luIGpvaW5fYmFyIGIyIHVzaW5n IChpZCkpIHNzCisgIG9uIGpvaW5fZm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+ IHNzLmlkIC0gMTsKK3NlbGVjdCBmaW5hbCA+IDEgYXMgbXVsdGliYXRjaAorICBmcm9tIGhhc2hf am9pbl9iYXRjaGVzKAorJCQKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9mb28KKyAgICBs ZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIxIGpvaW4gam9pbl9i YXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQg am9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CiskJCk7Cityb2xsYmFjayB0byBzZXR0aW5nczsKKwor LS0gbXVsdGktYmF0Y2ggd2l0aCByZXNjYW4sIHBhcmFsbGVsLWF3YXJlCitzYXZlcG9pbnQgc2V0 dGluZ3M7CitzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvbjsKK3NldCBwYXJhbGxlbF9sZWFk ZXJfcGFydGljaXBhdGlvbiA9IG9mZjsKK3NldCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXpl ID0gMDsKK3NldCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0gMDsKK3NldCBwYXJhbGxlbF90dXBsZV9j b3N0ID0gMDsKK3NldCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK3NldCBl bmFibGVfbWF0ZXJpYWwgPSBvZmY7CitzZXQgZW5hYmxlX21lcmdlam9pbiA9IG9mZjsKK3NldCB3 b3JrX21lbSA9ICc2NGtCJzsKK3NldCBoYXNoX21lbV9tdWx0aXBsaWVyID0gMS4wOworZXhwbGFp biAoY29zdHMgb2ZmKQorICBzZWxlY3QgY291bnQoKikgZnJvbSBqb2luX2ZvbworICAgIGxlZnQg am9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2JhciBi MiB1c2luZyAoaWQpKSBzcworICAgIG9uIGpvaW5fZm9vLmlkIDwgc3MuaWQgKyAxIGFuZCBqb2lu X2Zvby5pZCA+IHNzLmlkIC0gMTsKK3NlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5fZm9vCisgIGxl ZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9pbl9iYXIgYjEgam9pbiBqb2luX2Jh ciBiMiB1c2luZyAoaWQpKSBzcworICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsgMSBhbmQgam9p bl9mb28uaWQgPiBzcy5pZCAtIDE7CitzZWxlY3QgZmluYWwgPiAxIGFzIG11bHRpYmF0Y2gKKyAg ZnJvbSBoYXNoX2pvaW5fYmF0Y2hlcygKKyQkCisgIHNlbGVjdCBjb3VudCgqKSBmcm9tIGpvaW5f Zm9vCisgICAgbGVmdCBqb2luIChzZWxlY3QgYjEuaWQsIGIxLnQgZnJvbSBqb2luX2JhciBiMSBq b2luIGpvaW5fYmFyIGIyIHVzaW5nIChpZCkpIHNzCisgICAgb24gam9pbl9mb28uaWQgPCBzcy5p ZCArIDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworJCQpOworcm9sbGJhY2sgdG8gc2V0 dGluZ3M7CisKKy0tIHNpbmdsZS1iYXRjaCB3aXRoIHJlc2NhbiwgcGFyYWxsZWwtYXdhcmUKK3Nh dmVwb2ludCBzZXR0aW5nczsKK3NldCBlbmFibGVfcGFyYWxsZWxfaGFzaCA9IG9uOworc2V0IHBh cmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0gb2ZmOworc2V0IG1pbl9wYXJhbGxlbF90YWJs ZV9zY2FuX3NpemUgPSAwOworc2V0IHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworc2V0IHBhcmFs bGVsX3R1cGxlX2Nvc3QgPSAwOworc2V0IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIg PSAyOworc2V0IGVuYWJsZV9tYXRlcmlhbCA9IG9mZjsKK3NldCBlbmFibGVfbWVyZ2Vqb2luID0g b2ZmOworc2V0IHdvcmtfbWVtID0gJzRNQic7CitzZXQgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEu MDsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGNvdW50KCopIGZyb20gam9pbl9mb28K KyAgICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIxIGpvaW4g am9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgICBvbiBqb2luX2Zvby5pZCA8IHNzLmlkICsg MSBhbmQgam9pbl9mb28uaWQgPiBzcy5pZCAtIDE7CitzZWxlY3QgY291bnQoKikgZnJvbSBqb2lu X2ZvbworICBsZWZ0IGpvaW4gKHNlbGVjdCBiMS5pZCwgYjEudCBmcm9tIGpvaW5fYmFyIGIxIGpv aW4gam9pbl9iYXIgYjIgdXNpbmcgKGlkKSkgc3MKKyAgb24gam9pbl9mb28uaWQgPCBzcy5pZCAr IDEgYW5kIGpvaW5fZm9vLmlkID4gc3MuaWQgLSAxOworc2VsZWN0IGZpbmFsID4gMSBhcyBtdWx0 aWJhdGNoCisgIGZyb20gaGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgY291bnQoKikg ZnJvbSBqb2luX2ZvbworICAgIGxlZnQgam9pbiAoc2VsZWN0IGIxLmlkLCBiMS50IGZyb20gam9p bl9iYXIgYjEgam9pbiBqb2luX2JhciBiMiB1c2luZyAoaWQpKSBzcworICAgIG9uIGpvaW5fZm9v LmlkIDwgc3MuaWQgKyAxIGFuZCBqb2luX2Zvby5pZCA+IHNzLmlkIC0gMTsKKyQkKTsKK3JvbGxi YWNrIHRvIHNldHRpbmdzOworCistLSBBIGZ1bGwgb3V0ZXIgam9pbiB3aGVyZSBldmVyeSByZWNv cmQgaXMgbWF0Y2hlZC4KKworLS0gbm9uLXBhcmFsbGVsCitzYXZlcG9pbnQgc2V0dGluZ3M7Citz ZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CitleHBsYWluIChj b3N0cyBvZmYpCisgICAgIHNlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVy IGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUg ciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgdXNpbmcgKGlkKTsKK3JvbGxiYWNrIHRvIHNldHRp bmdzOworCistLSBwYXJhbGxlbGlzbSBub3QgcG9zc2libGUgd2l0aCBwYXJhbGxlbC1vYmxpdmlv dXMgZnVsbCBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBlbmFibGVfcGFyYWxs ZWxfaGFzaCA9IG9mZjsKK3NldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVy ID0gMjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgICAgc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNp bXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworc2VsZWN0ICBjb3Vu dCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOwor cm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKy0tIHBhcmFsbGVsaXNtIGlzIHBvc3NpYmxlIHdpdGgg cGFyYWxsZWwtYXdhcmUgZnVsbCBoYXNoIGpvaW4KK3NhdmVwb2ludCBzZXR0aW5nczsKK3NldCBs b2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK2V4cGxhaW4gKGNvc3Rz IG9mZikKKyAgICAgc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9p biBzaW1wbGUgcyB1c2luZyAoaWQpOworc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1 bGwgb3V0ZXIgam9pbiBzaW1wbGUgcyB1c2luZyAoaWQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7 CisKKy0tIEEgZnVsbCBvdXRlciBqb2luIHdoZXJlIGV2ZXJ5IHJlY29yZCBpcyBub3QgbWF0Y2hl ZC4KKworLS0gbm9uLXBhcmFsbGVsCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4 X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CitleHBsYWluIChjb3N0cyBvZmYpCisg ICAgIHNlbGVjdCAgY291bnQoKikgZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxl IHMgb24gKHIuaWQgPSAwIC0gcy5pZCk7CitzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIg ZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIG9uIChyLmlkID0gMCAtIHMuaWQpOworcm9sbGJhY2sg dG8gc2V0dGluZ3M7CisKKy0tIHBhcmFsbGVsaXNtIG5vdCBwb3NzaWJsZSB3aXRoIHBhcmFsbGVs LW9ibGl2aW91cyBmdWxsIGhhc2ggam9pbgorc2F2ZXBvaW50IHNldHRpbmdzOworc2V0IGVuYWJs ZV9wYXJhbGxlbF9oYXNoID0gb2ZmOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Bl cl9nYXRoZXIgPSAyOworZXhwbGFpbiAoY29zdHMgb2ZmKQorICAgICBzZWxlY3QgIGNvdW50KCop IGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBsZSBzIG9uIChyLmlkID0gMCAtIHMu aWQpOworc2VsZWN0ICBjb3VudCgqKSBmcm9tIHNpbXBsZSByIGZ1bGwgb3V0ZXIgam9pbiBzaW1w bGUgcyBvbiAoci5pZCA9IDAgLSBzLmlkKTsKK3JvbGxiYWNrIHRvIHNldHRpbmdzOworCistLSBw YXJhbGxlbGlzbSBpcyBwb3NzaWJsZSB3aXRoIHBhcmFsbGVsLWF3YXJlIGZ1bGwgaGFzaCBqb2lu CitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVy X2dhdGhlciA9IDI7CitleHBsYWluIChjb3N0cyBvZmYpCisgICAgIHNlbGVjdCAgY291bnQoKikg ZnJvbSBzaW1wbGUgciBmdWxsIG91dGVyIGpvaW4gc2ltcGxlIHMgb24gKHIuaWQgPSAwIC0gcy5p ZCk7CitzZWxlY3QgIGNvdW50KCopIGZyb20gc2ltcGxlIHIgZnVsbCBvdXRlciBqb2luIHNpbXBs ZSBzIG9uIChyLmlkID0gMCAtIHMuaWQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKworLS0g ZXhlcmNpc2Ugc3BlY2lhbCBjb2RlIHBhdGhzIGZvciBodWdlIHR1cGxlcyAobm90ZSB1c2Ugb2Yg bm9uLXN0cmljdAorLS0gZXhwcmVzc2lvbiBhbmQgbGVmdCBqb2luIHJlcXVpcmVkIHRvIGdldCB0 aGUgZGV0b2FzdGVkIHR1cGxlIGludG8KKy0tIHRoZSBoYXNoIHRhYmxlKQorCistLSBwYXJhbGxl bCB3aXRoIHBhcmFsbGVsLWF3YXJlIGhhc2ggam9pbiAoaGl0cyBFeGVjUGFyYWxsZWxIYXNoTG9h ZFR1cGxlIGFuZAorLS0gc3RzX3B1dHR1cGxlIG92ZXJzaXplZCB0dXBsZSBjYXNlcyBiZWNhdXNl IGl0J3MgbXVsdGktYmF0Y2gpCitzYXZlcG9pbnQgc2V0dGluZ3M7CitzZXQgbWF4X3BhcmFsbGVs X3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2ggPSBvbjsK K3NldCB3b3JrX21lbSA9ICcxMjhrQic7CitzZXQgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsK K2V4cGxhaW4gKGNvc3RzIG9mZikKKyAgc2VsZWN0IGxlbmd0aChtYXgocy50KSkKKyAgZnJvbSB3 aWRlIGxlZnQgam9pbiAoc2VsZWN0IGlkLCBjb2FsZXNjZSh0LCAnJykgfHwgJycgYXMgdCBmcm9t IHdpZGUpIHMgdXNpbmcgKGlkKTsKK3NlbGVjdCBsZW5ndGgobWF4KHMudCkpCitmcm9tIHdpZGUg bGVmdCBqb2luIChzZWxlY3QgaWQsIGNvYWxlc2NlKHQsICcnKSB8fCAnJyBhcyB0IGZyb20gd2lk ZSkgcyB1c2luZyAoaWQpOworc2VsZWN0IGZpbmFsID4gMSBhcyBtdWx0aWJhdGNoCisgIGZyb20g aGFzaF9qb2luX2JhdGNoZXMoCiskJAorICBzZWxlY3QgbGVuZ3RoKG1heChzLnQpKQorICBmcm9t IHdpZGUgbGVmdCBqb2luIChzZWxlY3QgaWQsIGNvYWxlc2NlKHQsICcnKSB8fCAnJyBhcyB0IGZy b20gd2lkZSkgcyB1c2luZyAoaWQpOworJCQpOworcm9sbGJhY2sgdG8gc2V0dGluZ3M7CisKKwor LS0gSGFzaCBqb2luIHJldXNlcyB0aGUgSE9UIHN0YXR1cyBiaXQgdG8gaW5kaWNhdGUgbWF0Y2gg c3RhdHVzLiBUaGlzIGNhbiBvbmx5CistLSBiZSBndWFyYW50ZWVkIHRvIHByb2R1Y2UgY29ycmVj dCByZXN1bHRzIGlmIGFsbCB0aGUgaGFzaCBqb2luIHR1cGxlIG1hdGNoCistLSBiaXRzIGFyZSBy ZXNldCBiZWZvcmUgcmV1c2UuIFRoaXMgaXMgZG9uZSB1cG9uIGxvYWRpbmcgdGhlbSBpbnRvIHRo ZQorLS0gaGFzaHRhYmxlLgorU0FWRVBPSU5UIHNldHRpbmdzOworU0VUIGVuYWJsZV9wYXJhbGxl bF9oYXNoID0gb247CitTRVQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZSA9IDA7CitTRVQg cGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitTRVQgcGFyYWxsZWxfdHVwbGVfY29zdCA9IDA7CitD UkVBVEUgVEFCTEUgaGp0ZXN0X21hdGNoYml0c190MShpZCBpbnQpOworQ1JFQVRFIFRBQkxFIGhq dGVzdF9tYXRjaGJpdHNfdDIoaWQgaW50KTsKK0lOU0VSVCBJTlRPIGhqdGVzdF9tYXRjaGJpdHNf dDEgVkFMVUVTICgxKTsKK0lOU0VSVCBJTlRPIGhqdGVzdF9tYXRjaGJpdHNfdDIgVkFMVUVTICgy KTsKKy0tIFVwZGF0ZSBzaG91bGQgY3JlYXRlIGEgSE9UIHR1cGxlLiBJZiB0aGlzIHN0YXR1cyBi aXQgaXNuJ3QgY2xlYXJlZCwgd2Ugd29uJ3QKKy0tIGNvcnJlY3RseSBlbWl0IHRoZSBOVUxMLWV4 dGVuZGVkIHVubWF0Y2hpbmcgdHVwbGUgaW4gZnVsbCBoYXNoIGpvaW4uCitVUERBVEUgaGp0ZXN0 X21hdGNoYml0c190MiBzZXQgaWQgPSAyOworU0VMRUNUICogRlJPTSBoanRlc3RfbWF0Y2hiaXRz X3QxIHQxIEZVTEwgSk9JTiBoanRlc3RfbWF0Y2hiaXRzX3QyIHQyIE9OIHQxLmlkID0gdDIuaWQK KyAgT1JERVIgQlkgdDEuaWQ7CistLSBUZXN0IHNlcmlhbCBmdWxsIGhhc2ggam9pbi4KKy0tIFJl c2V0dGluZyBwYXJhbGxlbF9zZXR1cF9jb3N0IHNob3VsZCBmb3JjZSBhIHNlcmlhbCBwbGFuLgor LS0gSnVzdCB0byBiZSBzYWZlLCBob3dldmVyLCBzZXQgZW5hYmxlX3BhcmFsbGVsX2hhc2ggdG8g b2ZmLCBhcyBwYXJhbGxlbCBmdWxsCistLSBoYXNoIGpvaW5zIGFyZSBvbmx5IHN1cHBvcnRlZCB3 aXRoIHNoYXJlZCBoYXNodGFibGVzLgorUkVTRVQgcGFyYWxsZWxfc2V0dXBfY29zdDsKK1NFVCBl bmFibGVfcGFyYWxsZWxfaGFzaCA9IG9mZjsKK1NFTEVDVCAqIEZST00gaGp0ZXN0X21hdGNoYml0 c190MSB0MSBGVUxMIEpPSU4gaGp0ZXN0X21hdGNoYml0c190MiB0MiBPTiB0MS5pZCA9IHQyLmlk OworUk9MTEJBQ0sgVE8gc2V0dGluZ3M7CisKK3JvbGxiYWNrOworCistLSBWZXJpZnkgdGhhdCBo YXNoIGtleSBleHByZXNzaW9ucyByZWZlcmVuY2UgdGhlIGNvcnJlY3QKKy0tIG5vZGVzLiBIYXNo am9pbidzIGhhc2hrZXlzIG5lZWQgdG8gcmVmZXJlbmNlIGl0cyBvdXRlciBwbGFuLCBIYXNoJ3MK Ky0tIG5lZWQgdG8gcmVmZXJlbmNlIEhhc2gncyBvdXRlciBwbGFuICh3aGljaCBpcyBiZWxvdyBI YXNoSm9pbidzCistLSBpbm5lciBwbGFuKS4gSXQncyBub3QgdHJpdmlhbCB0byB2ZXJpZnkgdGhh dCB0aGUgcmVmZXJlbmNlcyBhcmUKKy0tIGNvcnJlY3QgKHdlIGRvbid0IGRpc3BsYXkgdGhlIGhh c2hrZXlzIHRoZW1zZWx2ZXMpLCBidXQgaWYgdGhlCistLSBoYXNoa2V5cyBjb250YWluIHN1YnBs YW4gcmVmZXJlbmNlcywgdGhvc2Ugd2lsbCBiZSBkaXNwbGF5ZWQuIEZvcmNlCistLSBzdWJwbGFu cyB0byBhcHBlYXIganVzdCBhYm91dCBldmVyeXdoZXJlLgorLS0KKy0tIEJ1ZyByZXBvcnQ6Cist LSBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0NBUHBIZmR2R1ZlZ0ZfVEtL UmlCclNtYXRKTDJkUjl1d0ZDdVIlMkJ0ZVFfOHRFWFU4bXhnJTQwbWFpbC5nbWFpbC5jb20KKy0t CitCRUdJTjsKK1NFVCBMT0NBTCBlbmFibGVfc29ydCA9IE9GRjsgLS0gYXZvaWQgbWVyZ2Vqb2lu cworU0VUIExPQ0FMIGZyb21fY29sbGFwc2VfbGltaXQgPSAxOyAtLSBhbGxvd3MgZWFzeSBjaGFu Z2luZyBvZiBqb2luIG9yZGVyCisKK0NSRUFURSBUQUJMRSBoanRlc3RfMSAoYSB0ZXh0LCBiIGlu dCwgaWQgaW50LCBjIGJvb2wpOworQ1JFQVRFIFRBQkxFIGhqdGVzdF8yIChhIGJvb2wsIGlkIGlu dCwgYiB0ZXh0LCBjIGludCk7CisKK0lOU0VSVCBJTlRPIGhqdGVzdF8xKGEsIGIsIGlkLCBjKSBW QUxVRVMgKCd0ZXh0JywgMiwgMSwgZmFsc2UpOyAtLSBtYXRjaGVzCitJTlNFUlQgSU5UTyBoanRl c3RfMShhLCBiLCBpZCwgYykgVkFMVUVTICgndGV4dCcsIDEsIDIsIGZhbHNlKTsgLS0gZmFpbHMg aWQgam9pbiBjb25kaXRpb24KK0lOU0VSVCBJTlRPIGhqdGVzdF8xKGEsIGIsIGlkLCBjKSBWQUxV RVMgKCd0ZXh0JywgMjAsIDEsIGZhbHNlKTsgLS0gZmFpbHMgPCA1MAorSU5TRVJUIElOVE8gaGp0 ZXN0XzEoYSwgYiwgaWQsIGMpIFZBTFVFUyAoJ3RleHQnLCAxLCAxLCBmYWxzZSk7IC0tIGZhaWxz IChTRUxFQ1QgaGp0ZXN0XzEuYiAqIDUpID0gKFNFTEVDVCBoanRlc3RfMi5jKjUpCisKK0lOU0VS VCBJTlRPIGhqdGVzdF8yKGEsIGlkLCBiLCBjKSBWQUxVRVMgKHRydWUsIDEsICdhbm90aGVyJywg Mik7IC0tIG1hdGNoZXMKK0lOU0VSVCBJTlRPIGhqdGVzdF8yKGEsIGlkLCBiLCBjKSBWQUxVRVMg KHRydWUsIDMsICdhbm90aGVyJywgNyk7IC0tIGZhaWxzIGlkIGpvaW4gY29uZGl0aW9uCitJTlNF UlQgSU5UTyBoanRlc3RfMihhLCBpZCwgYiwgYykgVkFMVUVTICh0cnVlLCAxLCAnYW5vdGhlcics IDkwKTsgIC0tIGZhaWxzIDwgNTUKK0lOU0VSVCBJTlRPIGhqdGVzdF8yKGEsIGlkLCBiLCBjKSBW QUxVRVMgKHRydWUsIDEsICdhbm90aGVyJywgMyk7IC0tIGZhaWxzIChTRUxFQ1QgaGp0ZXN0XzEu YiAqIDUpID0gKFNFTEVDVCBoanRlc3RfMi5jKjUpCitJTlNFUlQgSU5UTyBoanRlc3RfMihhLCBp ZCwgYiwgYykgVkFMVUVTICh0cnVlLCAxLCAndGV4dCcsIDEpOyAtLSAgZmFpbHMgaGp0ZXN0XzEu YSA8PiBoanRlc3RfMi5iOworCitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpCitTRUxFQ1Qg aGp0ZXN0XzEuYSBhMSwgaGp0ZXN0XzIuYSBhMixoanRlc3RfMS50YWJsZW9pZDo6cmVnY2xhc3Mg dDEsIGhqdGVzdF8yLnRhYmxlb2lkOjpyZWdjbGFzcyB0MgorRlJPTSBoanRlc3RfMSwgaGp0ZXN0 XzIKK1dIRVJFCisgICAgaGp0ZXN0XzEuaWQgPSAoU0VMRUNUIDEgV0hFUkUgaGp0ZXN0XzIuaWQg PSAxKQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1KSA9IChTRUxFQ1QgaGp0ZXN0XzIu Yyo1KQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1KSA8IDUwCisgICAgQU5EIChTRUxF Q1QgaGp0ZXN0XzIuYyAqIDUpIDwgNTUKKyAgICBBTkQgaGp0ZXN0XzEuYSA8PiBoanRlc3RfMi5i OworCitTRUxFQ1QgaGp0ZXN0XzEuYSBhMSwgaGp0ZXN0XzIuYSBhMixoanRlc3RfMS50YWJsZW9p ZDo6cmVnY2xhc3MgdDEsIGhqdGVzdF8yLnRhYmxlb2lkOjpyZWdjbGFzcyB0MgorRlJPTSBoanRl c3RfMSwgaGp0ZXN0XzIKK1dIRVJFCisgICAgaGp0ZXN0XzEuaWQgPSAoU0VMRUNUIDEgV0hFUkUg aGp0ZXN0XzIuaWQgPSAxKQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1KSA9IChTRUxF Q1QgaGp0ZXN0XzIuYyo1KQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1KSA8IDUwCisg ICAgQU5EIChTRUxFQ1QgaGp0ZXN0XzIuYyAqIDUpIDwgNTUKKyAgICBBTkQgaGp0ZXN0XzEuYSA8 PiBoanRlc3RfMi5iOworCitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpCitTRUxFQ1QgaGp0 ZXN0XzEuYSBhMSwgaGp0ZXN0XzIuYSBhMixoanRlc3RfMS50YWJsZW9pZDo6cmVnY2xhc3MgdDEs IGhqdGVzdF8yLnRhYmxlb2lkOjpyZWdjbGFzcyB0MgorRlJPTSBoanRlc3RfMiwgaGp0ZXN0XzEK K1dIRVJFCisgICAgaGp0ZXN0XzEuaWQgPSAoU0VMRUNUIDEgV0hFUkUgaGp0ZXN0XzIuaWQgPSAx KQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1KSA9IChTRUxFQ1QgaGp0ZXN0XzIuYyo1 KQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1KSA8IDUwCisgICAgQU5EIChTRUxFQ1Qg aGp0ZXN0XzIuYyAqIDUpIDwgNTUKKyAgICBBTkQgaGp0ZXN0XzEuYSA8PiBoanRlc3RfMi5iOwor CitTRUxFQ1QgaGp0ZXN0XzEuYSBhMSwgaGp0ZXN0XzIuYSBhMixoanRlc3RfMS50YWJsZW9pZDo6 cmVnY2xhc3MgdDEsIGhqdGVzdF8yLnRhYmxlb2lkOjpyZWdjbGFzcyB0MgorRlJPTSBoanRlc3Rf MiwgaGp0ZXN0XzEKK1dIRVJFCisgICAgaGp0ZXN0XzEuaWQgPSAoU0VMRUNUIDEgV0hFUkUgaGp0 ZXN0XzIuaWQgPSAxKQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1KSA9IChTRUxFQ1Qg aGp0ZXN0XzIuYyo1KQorICAgIEFORCAoU0VMRUNUIGhqdGVzdF8xLmIgKiA1KSA8IDUwCisgICAg QU5EIChTRUxFQ1QgaGp0ZXN0XzIuYyAqIDUpIDwgNTUKKyAgICBBTkQgaGp0ZXN0XzEuYSA8PiBo anRlc3RfMi5iOworCitST0xMQkFDSzsKKworLS0gVmVyaWZ5IHRoYXQgd2UgYmVoYXZlIHNhbmVs eSB3aGVuIHRoZSBpbm5lciBoYXNoIGtleXMgY29udGFpbiBwYXJhbWV0ZXJzCistLSAodGhhdCBp cywgb3V0ZXIgb3IgbGF0ZXJhbCByZWZlcmVuY2VzKS4gIFRoaXMgc2l0dWF0aW9uIGhhcyB0byBk ZWZlYXQKKy0tIHJlLXVzZSBvZiB0aGUgaW5uZXIgaGFzaCB0YWJsZSBhY3Jvc3MgcmVzY2Fucy4K K2JlZ2luOworc2V0IGxvY2FsIGVuYWJsZV9oYXNoam9pbiA9IG9uOworCitleHBsYWluIChjb3N0 cyBvZmYpCitzZWxlY3QgaTgucTIsIHNzLiogZnJvbQoraW50OF90YmwgaTgsCitsYXRlcmFsIChz ZWxlY3QgdDEuZml2ZXRob3VzLCBpNC5mMSBmcm9tIHRlbmsxIHQxIGpvaW4gaW50NF90YmwgaTQK KyAgICAgICAgIG9uIHQxLmZpdmV0aG91cyA9IGk0LmYxK2k4LnEyIG9yZGVyIGJ5IDEsMikgc3M7 CisKK3NlbGVjdCBpOC5xMiwgc3MuKiBmcm9tCitpbnQ4X3RibCBpOCwKK2xhdGVyYWwgKHNlbGVj dCB0MS5maXZldGhvdXMsIGk0LmYxIGZyb20gdGVuazEgdDEgam9pbiBpbnQ0X3RibCBpNAorICAg ICAgICAgb24gdDEuZml2ZXRob3VzID0gaTQuZjEraTgucTIgb3JkZXIgYnkgMSwyKSBzczsKKwor cm9sbGJhY2s7Ci0tIAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --000000000000e546140633a15f9f Content-Type: application/octet-stream; name="0001-This-commit-adds-support-for-temporary-files-compres.patch" Content-Disposition: attachment; filename="0001-This-commit-adds-support-for-temporary-files-compres.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m9xbwid20 RnJvbSA3MGY4NWI5MDI0NjNhZjdmZWM4M2JjOTcyMWI3M2MzZWI1MzQ2NWYxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBGaWxpcCBKYW51cyA8ZmphbnVzQHJlZGhhdC5jb20+CkRhdGU6 IFdlZCwgMTYgQXByIDIwMjUgMTI6MDM6MDMgKzAyMDAKU3ViamVjdDogW1BBVENIIDEvMl0gVGhp cyBjb21taXQgYWRkcyBzdXBwb3J0IGZvciB0ZW1wb3JhcnkgZmlsZXMgY29tcHJlc3Npb24sCiBp dCBjYW4gYmUgdXNlZCBvbmx5IGZvciBoYXNoam9pbnMgbm93LgoKSXQgYWxzbyBhZGRzIEdVQyBw YXJhbWV0ZXIgdGVtcF9maWxlX2NvbXByZXNzaW9uIHRoYXQgZW5hYmxlcyB0aGlzIGZ1bmN0aW9u YWxpdHkuCkZvciBub3csIGl0IHN1cHBvcnRzIGp1c3QgbHo0IGFuZCBwZ2x6IGFsZ29yaXRobXMu IEluIHRoZSBmdXR1cmUsIGl0CmNvdWxkIGFsc28gYmUgaW1wbGVtZW50ZWQgenN0ZCBzdXBwb3J0 LgoKSXQgaW1wbGVtZW50cyBqdXN0IG9uZSB3b3JraW5nIGJ1ZmZlciBmb3IgY29tcHJlc3Npb24g YW5kIGRlY29tcHJlc3Npb24gdG8gYXZvaWQKbWVtb3J5IHdhc3RpbmcuIFRoZSBidWZmZXIgaXMg YWxsb2NhdGVkIGluIHRoZSB0b3AgbWVtb3J5IGNvbnRleHQuCi0tLQogc3JjL01ha2VmaWxlLmds b2JhbC5pbiAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3RidWlsZGJ1ZmZlcnMuYyAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYmFja3Vw L2JhY2t1cF9tYW5pZmVzdC5jICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlSGFzaGpvaW4uYyAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2Uv ZmlsZS9idWZmaWxlLmMgICAgICAgICAgICB8IDIxNyArKysrKysrKysrKysrKysrKy0KIHNyYy9i YWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAgICAgICB8ICAyNCArKwogc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIHwgICAxICsKIHNyYy9iYWNr ZW5kL3V0aWxzL3NvcnQvbG9ndGFwZS5jICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tl bmQvdXRpbHMvc29ydC90dXBsZXN0b3JlLmMgICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVk ZS9zdG9yYWdlL2J1ZmZpbGUuaCAgICAgICAgICAgICAgICAgfCAgMTMgKy0KIDEwIGZpbGVzIGNo YW5nZWQsIDI1MSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvTWFrZWZpbGUuZ2xvYmFsLmluIGIvc3JjL01ha2VmaWxlLmdsb2JhbC5pbgppbmRleCA2NzIy ZmJkZjM2NS4uNmZmNjdiZGExN2MgMTAwNjQ0Ci0tLSBhL3NyYy9NYWtlZmlsZS5nbG9iYWwuaW4K KysrIGIvc3JjL01ha2VmaWxlLmdsb2JhbC5pbgpAQCAtMjAxLDYgKzIwMSw3IEBAIHdpdGhfbGli dXJpbmcJPSBAd2l0aF9saWJ1cmluZ0AKIHdpdGhfbGlieG1sCT0gQHdpdGhfbGlieG1sQAogd2l0 aF9saWJ4c2x0CT0gQHdpdGhfbGlieHNsdEAKIHdpdGhfbGx2bQk9IEB3aXRoX2xsdm1ACit3aXRo X2x6NAk9IEB3aXRoX2x6NEAKIHdpdGhfc3lzdGVtX3R6ZGF0YSA9IEB3aXRoX3N5c3RlbV90emRh dGFACiB3aXRoX3V1aWQJPSBAd2l0aF91dWlkQAogd2l0aF96bGliCT0gQHdpdGhfemxpYkAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZGJ1ZmZlcnMuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZGJ1ZmZlcnMuYwppbmRleCAwNzA3MjU0ZDE4 ZS4uOWNjMzcxZjQ3ZmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3Ri dWlsZGJ1ZmZlcnMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGRidWZm ZXJzLmMKQEAgLTU0LDcgKzU0LDcgQEAgZ2lzdEluaXRCdWlsZEJ1ZmZlcnMoaW50IHBhZ2VzUGVy QnVmZmVyLCBpbnQgbGV2ZWxTdGVwLCBpbnQgbWF4TGV2ZWwpCiAJICogQ3JlYXRlIGEgdGVtcG9y YXJ5IGZpbGUgdG8gaG9sZCBidWZmZXIgcGFnZXMgdGhhdCBhcmUgc3dhcHBlZCBvdXQgb2YKIAkg KiBtZW1vcnkuCiAJICovCi0JZ2ZiYi0+cGZpbGUgPSBCdWZGaWxlQ3JlYXRlVGVtcChmYWxzZSk7 CisJZ2ZiYi0+cGZpbGUgPSBCdWZGaWxlQ3JlYXRlVGVtcChmYWxzZSwgZmFsc2UpOwogCWdmYmIt Pm5GaWxlQmxvY2tzID0gMDsKIAogCS8qIEluaXRpYWxpemUgZnJlZSBwYWdlIG1hbmFnZW1lbnQu ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9iYWNrdXAvYmFja3VwX21hbmlmZXN0LmMgYi9z cmMvYmFja2VuZC9iYWNrdXAvYmFja3VwX21hbmlmZXN0LmMKaW5kZXggMjJlMmJlMzdjOTUuLmM5 ZjdkYWExNDk3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9iYWNrdXAvYmFja3VwX21hbmlmZXN0 LmMKKysrIGIvc3JjL2JhY2tlbmQvYmFja3VwL2JhY2t1cF9tYW5pZmVzdC5jCkBAIC02NSw3ICs2 NSw3IEBAIEluaXRpYWxpemVCYWNrdXBNYW5pZmVzdChiYWNrdXBfbWFuaWZlc3RfaW5mbyAqbWFu aWZlc3QsCiAJCW1hbmlmZXN0LT5idWZmaWxlID0gTlVMTDsKIAllbHNlCiAJewotCQltYW5pZmVz dC0+YnVmZmlsZSA9IEJ1ZkZpbGVDcmVhdGVUZW1wKGZhbHNlKTsKKwkJbWFuaWZlc3QtPmJ1ZmZp bGUgPSBCdWZGaWxlQ3JlYXRlVGVtcChmYWxzZSwgZmFsc2UpOwogCQltYW5pZmVzdC0+bWFuaWZl c3RfY3R4ID0gcGdfY3J5cHRvaGFzaF9jcmVhdGUoUEdfU0hBMjU2KTsKIAkJaWYgKHBnX2NyeXB0 b2hhc2hfaW5pdChtYW5pZmVzdC0+bWFuaWZlc3RfY3R4KSA8IDApCiAJCQllbG9nKEVSUk9SLCAi ZmFpbGVkIHRvIGluaXRpYWxpemUgY2hlY2tzdW0gb2YgYmFja3VwIG1hbmlmZXN0OiAlcyIsCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaGpvaW4uYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jCmluZGV4IDU2NjFhZDc2ODMwLi4zODQyNjVjYTc0 YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKQEAgLTE0MzQsNyArMTQzNCw3IEBA IEV4ZWNIYXNoSm9pblNhdmVUdXBsZShNaW5pbWFsVHVwbGUgdHVwbGUsIHVpbnQzMiBoYXNodmFs dWUsCiAJewogCQlNZW1vcnlDb250ZXh0IG9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyho YXNodGFibGUtPnNwaWxsQ3h0KTsKIAotCQlmaWxlID0gQnVmRmlsZUNyZWF0ZVRlbXAoZmFsc2Up OworCQlmaWxlID0gQnVmRmlsZUNyZWF0ZUNvbXByZXNzVGVtcChmYWxzZSk7CiAJCSpmaWxlcHRy ID0gZmlsZTsKIAogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9idWZmaWxlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2ZpbGUvYnVmZmlsZS5jCmluZGV4IDM2NmQ3MGQzOGExLi4xMDNmNjU1MDMyMiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL2J1ZmZpbGUuYworKysgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2ZpbGUvYnVmZmlsZS5jCkBAIC01Myw2ICs1MywxOCBAQAogI2luY2x1ZGUgInN0b3Jh Z2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInV0aWxzL3Jl c293bmVyLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKworI2luY2x1ZGUgImNvbW1v bi9wZ19semNvbXByZXNzLmgiCisjaWZkZWYgVVNFX0xaNAorI2luY2x1ZGUgPGx6NC5oPgorI2Vu ZGlmCisKKyNkZWZpbmUgTk9fTFo0X1NVUFBPUlQoKSBcCisJZXJlcG9ydChFUlJPUiwgXAorCQkJ KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLCBcCisJCQkgZXJybXNnKCJj b21wcmVzc2lvbiBtZXRob2QgbHo0IG5vdCBzdXBwb3J0ZWQiKSwgXAorCQkJIGVycmRldGFpbCgi VGhpcyBmdW5jdGlvbmFsaXR5IHJlcXVpcmVzIHRoZSBzZXJ2ZXIgdG8gYmUgYnVpbHQgd2l0aCBs ejQgc3VwcG9ydC4iKSkpCiAKIC8qCiAgKiBXZSBicmVhayBCdWZGaWxlcyBpbnRvIGdpZ2FieXRl LXNpemVkIHNlZ21lbnRzLCByZWdhcmRsZXNzIG9mIFJFTFNFR19TSVpFLgpAQCAtNjIsNiArNzQs OCBAQAogI2RlZmluZSBNQVhfUEhZU0lDQUxfRklMRVNJWkUJMHg0MDAwMDAwMAogI2RlZmluZSBC VUZGSUxFX1NFR19TSVpFCQkoTUFYX1BIWVNJQ0FMX0ZJTEVTSVpFIC8gQkxDS1NaKQogCitpbnQg dGVtcF9maWxlX2NvbXByZXNzaW9uID0gVEVNUF9OT05FX0NPTVBSRVNTSU9OOworCiAvKgogICog VGhpcyBkYXRhIHN0cnVjdHVyZSByZXByZXNlbnRzIGEgYnVmZmVyZWQgZmlsZSB0aGF0IGNvbnNp c3RzIG9mIG9uZSBvcgogICogbW9yZSBwaHlzaWNhbCBmaWxlcyAoZWFjaCBhY2Nlc3NlZCB0aHJv dWdoIGEgdmlydHVhbCBmaWxlIGRlc2NyaXB0b3IKQEAgLTk1LDcgKzEwOSw4IEBAIHN0cnVjdCBC dWZGaWxlCiAJb2ZmX3QJCWN1ck9mZnNldDsJCS8qIG9mZnNldCBwYXJ0IG9mIGN1cnJlbnQgcG9z ICovCiAJaW50CQkJcG9zOwkJCS8qIG5leHQgcmVhZC93cml0ZSBwb3NpdGlvbiBpbiBidWZmZXIg Ki8KIAlpbnQJCQluYnl0ZXM7CQkJLyogdG90YWwgIyBvZiB2YWxpZCBieXRlcyBpbiBidWZmZXIg Ki8KLQorCWJvb2wJCQljb21wcmVzczsgLyrCoFN0YXRlIG9mIHVzZWdlIGZpbGUgY29tcHJlc3Np b24gKi8KKyAgIGNoYXIgICAgICAgICpjQnVmZmVyOwogCS8qCiAJICogWFhYIFNob3VsZCBpZGVh bGx5IHVzZSBQR0lPQWxpZ25lZEJsb2NrLCBidXQgbWlnaHQgbmVlZCBhIHdheSB0byBhdm9pZAog CSAqIHdhc3RpbmcgcGVyLWZpbGUgYWxpZ25tZW50IHBhZGRpbmcgd2hlbiBzb21lIHVzZXJzIGNy ZWF0ZSBtYW55IGZpbGVzLgpAQCAtMTI3LDYgKzE0Miw4IEBAIG1ha2VCdWZGaWxlQ29tbW9uKGlu dCBuZmlsZXMpCiAJZmlsZS0+Y3VyT2Zmc2V0ID0gMDsKIAlmaWxlLT5wb3MgPSAwOwogCWZpbGUt Pm5ieXRlcyA9IDA7CisJZmlsZS0+Y29tcHJlc3MgPSBmYWxzZTsKKyAgIGZpbGUtPmNCdWZmZXIg PSBOVUxMOwogCiAJcmV0dXJuIGZpbGU7CiB9CkBAIC0xODgsOSArMjA1LDE3IEBAIGV4dGVuZEJ1 ZkZpbGUoQnVmRmlsZSAqZmlsZSkKICAqIE5vdGU6IGlmIGludGVyWGFjdCBpcyB0cnVlLCB0aGUg Y2FsbGVyIGhhZCBiZXR0ZXIgYmUgY2FsbGluZyB1cyBpbiBhCiAgKiBtZW1vcnkgY29udGV4dCwg YW5kIHdpdGggYSByZXNvdXJjZSBvd25lciwgdGhhdCB3aWxsIHN1cnZpdmUgYWNyb3NzCiAgKiB0 cmFuc2FjdGlvbiBib3VuZGFyaWVzLgorICoKKyAqIElmIGNvbXByZXNzIGlzIHRydWUgdGhlIHRl bXBvcmFyeSBmaWxlcyB3aWxsIGJlIGNvbXByZXNzZWQgYmVmb3JlCisgKiB3cml0aW5nIG9uIGRp c2suCisgKgorICogTm90ZTogVGhlIGNvbXByZXNzaW9uIGRvZXMgbm90IHN1cHBvcnQgcmFuZG9t IGFjY2Vzcy4gT25seSB0aGUgaGFzaCBqb2lucworICogdXNlIGl0IGZvciBub3cuIFRoZSBzZWVr IG9wZXJhdGlvbiBvdGhlciB0aGFuIHNlZWsgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUKKyAqIGJ1 ZmZpbGUgd2lsbCBjb3JydXB0IHRlbXBvcmFyeSBkYXRhIG9mZnNldHMuCisgKgogICovCiBCdWZG aWxlICoKLUJ1ZkZpbGVDcmVhdGVUZW1wKGJvb2wgaW50ZXJYYWN0KQorQnVmRmlsZUNyZWF0ZVRl bXAoYm9vbCBpbnRlclhhY3QsIGJvb2wgY29tcHJlc3MpCiB7CiAJQnVmRmlsZSAgICAqZmlsZTsK IAlGaWxlCQlwZmlsZTsKQEAgLTIxMiw5ICsyMzcsNDcgQEAgQnVmRmlsZUNyZWF0ZVRlbXAoYm9v bCBpbnRlclhhY3QpCiAJZmlsZSA9IG1ha2VCdWZGaWxlKHBmaWxlKTsKIAlmaWxlLT5pc0ludGVy WGFjdCA9IGludGVyWGFjdDsKIAorCWlmICh0ZW1wX2ZpbGVfY29tcHJlc3Npb24gIT0gVEVNUF9O T05FX0NPTVBSRVNTSU9OKQorCXsKKwkJZmlsZS0+Y29tcHJlc3MgPSBjb21wcmVzczsKKwl9CisK IAlyZXR1cm4gZmlsZTsKKwogfQorLyoKKyAqIFdyYXBwZXIgZm9yIEJ1ZmZpbGVDcmVhdGVUZW1w CisgKiBXZSB3YW50IHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgbWVtb3J5IGFsbG9jYXRpb25zIGZv ciB0aGUgY29tcHJlc3Npb24gYnVmZmVyLAorICogb25seSBvbmUgYnVmZmVyIGZvciBhbGwgY29t cHJlc3Npb24gb3BlcmF0aW9ucyBpcyBlbm91Z2gKKyAqLworQnVmRmlsZSAqCitCdWZGaWxlQ3Jl YXRlQ29tcHJlc3NUZW1wKGJvb2wgaW50ZXJYYWN0KXsKKyAgIHN0YXRpYyBjaGFyICogYnVmZiA9 IE5VTEw7CisgICBCdWZGaWxlICp0bXBCdWZGaWxlID0gQnVmRmlsZUNyZWF0ZVRlbXAoaW50ZXJY YWN0LCB0cnVlKTsKIAorICAgaWYgKGJ1ZmYgPT0gTlVMTCAmJiB0ZW1wX2ZpbGVfY29tcHJlc3Np b24gIT0gVEVNUF9OT05FX0NPTVBSRVNTSU9OKQorICAgeworCQlpbnQgc2l6ZSA9IDA7CisKKwkJ c3dpdGNoICh0ZW1wX2ZpbGVfY29tcHJlc3Npb24pCisJCXsKKwkJCWNhc2UgVEVNUF9MWjRfQ09N UFJFU1NJT046CisjaWZkZWYgVVNFX0xaNAorCQkJCXNpemUgPSBMWjRfY29tcHJlc3NCb3VuZChC TENLU1opK3NpemVvZihpbnQpOworI2VuZGlmCisJCQkJYnJlYWs7CisJCQljYXNlIFRFTVBfUEdM Wl9DT01QUkVTU0lPTjoKKwkJCQlzaXplID0gcGdsel9tYXhpbXVtX2NvbXByZXNzZWRfc2l6ZShC TENLU1osIEJMQ0tTWikrc2l6ZW9mKGludCk7CisJCQkJYnJlYWs7CisJCX0KKwkJLyoKKwkJICog UGVyc2lzdGVudCBidWZmZXIgZm9yIGFsbCB0ZW1wb3JhcnkgZmlsZSBjb21wcmVzc2lvbnMKKwkJ ICovCisJCWJ1ZmYgPSBNZW1vcnlDb250ZXh0QWxsb2MoVG9wTWVtb3J5Q29udGV4dCwgc2l6ZSk7 CisJfQorCXRtcEJ1ZkZpbGUtPmNCdWZmZXIgPSBidWZmOworCXJldHVybiB0bXBCdWZGaWxlOwor fQogLyoKICAqIEJ1aWxkIHRoZSBuYW1lIGZvciBhIGdpdmVuIHNlZ21lbnQgb2YgYSBnaXZlbiBC dWZGaWxlLgogICovCkBAIC0yNzUsNiArMzM4LDcgQEAgQnVmRmlsZUNyZWF0ZUZpbGVTZXQoRmls ZVNldCAqZmlsZXNldCwgY29uc3QgY2hhciAqbmFtZSkKIAlmaWxlLT5maWxlc1swXSA9IE1ha2VO ZXdGaWxlU2V0U2VnbWVudChmaWxlLCAwKTsKIAlmaWxlLT5yZWFkT25seSA9IGZhbHNlOwogCisK IAlyZXR1cm4gZmlsZTsKIH0KIApAQCAtNDU3LDExICs1MjEsNzUgQEAgQnVmRmlsZUxvYWRCdWZm ZXIoQnVmRmlsZSAqZmlsZSkKIAkvKgogCSAqIFJlYWQgd2hhdGV2ZXIgd2UgY2FuIGdldCwgdXAg dG8gYSBmdWxsIGJ1ZmZlcmxvYWQuCiAJICovCi0JZmlsZS0+bmJ5dGVzID0gRmlsZVJlYWQodGhp c2ZpbGUsCisJaWYgKCFmaWxlLT5jb21wcmVzcykKKwl7CisKKwkJLyoKKwkJKiBSZWFkIHdoYXRl dmVyIHdlIGNhbiBnZXQsIHVwIHRvIGEgZnVsbCBidWZmZXJsb2FkLgorCQkqLworCQlmaWxlLT5u Ynl0ZXMgPSBGaWxlUmVhZCh0aGlzZmlsZSwKIAkJCQkJCQlmaWxlLT5idWZmZXIuZGF0YSwKLQkJ CQkJCQlzaXplb2YoZmlsZS0+YnVmZmVyLmRhdGEpLAorCQkJCQkJCXNpemVvZihmaWxlLT5idWZm ZXIpLAorCQkJCQkJCWZpbGUtPmN1ck9mZnNldCwKKwkJCQkJCQlXQUlUX0VWRU5UX0JVRkZJTEVf UkVBRCk7CisJLyoKKwkgKiBSZWFkIGFuZCBkZWNvbXByZXNzIGRhdGEgZnJvbSB0aGUgdGVtcG9y YXJ5IGZpbGUKKwkgKiBUaGUgZmlyc3QgcmVhZGluZyBsb2FkcyBzaXplIG9mIHRoZSBjb21wcmVz c2VkIGJsb2NrCisJICogU2Vjb25kIHJlYWRpbmcgbG9hZHMgY29tcHJlc3NlZCBkYXRhCisJICov CisJfSBlbHNlIHsKKwkJaW50IG5yZWFkOworCQlpbnQgbmJ5dGVzOworCisJCW5yZWFkID0gRmls ZVJlYWQodGhpc2ZpbGUsCisJCQkJCQkJJm5ieXRlcywKKwkJCQkJCQlzaXplb2YobmJ5dGVzKSwK KwkJCQkJCQlmaWxlLT5jdXJPZmZzZXQsCisJCQkJCQkJV0FJVF9FVkVOVF9CVUZGSUxFX1JFQUQp OworCQkvKiBpZiBub3QgRU9GIGxldCdzIGNvbnRpbnVlICovCisJCWlmIChucmVhZCA+IDApCisJ CXsKKwkJCS8qIEEgbG9uZyBsaWZlIGJ1ZmZlciBsaW1pdHMgbnVtYmVyIG9mIG1lbW9yeSBhbGxv Y2F0aW9ucyAqLworCQkJY2hhciAqIGJ1ZmYgPSBmaWxlLT5jQnVmZmVyOworCisJCQlBc3NlcnQo ZmlsZS0+Y0J1ZmZlciAhPSBOVUxMKTsKKwkJCS8qCisJCQkgKiBSZWFkIGNvbXByZXNzZWQgZGF0 YSwgY3VyT2Zmc2V0IGRpZmZlcnMgd2l0aCBwb3MKKwkJCSAqIEl0IHJlYWRzIGxlc3MgZGF0YSB0 aGFuIGl0IHJldHVybnMgdG8gY2FsbGVyCisJCQkgKiBTbyB0aGUgY3VyT2Zmc2V0IG11c3QgYmUg YWR2YW5jZWQgaGVyZSBiYXNlZCBvbiBjb21wcmVzc2VkIHNpemUKKwkJCSAqLworCQkJZmlsZS0+ Y3VyT2Zmc2V0Kz1zaXplb2YobmJ5dGVzKTsKKworCQkJbnJlYWQgPSBGaWxlUmVhZCh0aGlzZmls ZSwKKwkJCQkJCQlidWZmLAorCQkJCQkJCW5ieXRlcywKIAkJCQkJCQlmaWxlLT5jdXJPZmZzZXQs CiAJCQkJCQkJV0FJVF9FVkVOVF9CVUZGSUxFX1JFQUQpOworCisJCQlzd2l0Y2ggKHRlbXBfZmls ZV9jb21wcmVzc2lvbikKKwkJCXsKKwkJCQljYXNlIFRFTVBfTFo0X0NPTVBSRVNTSU9OOgorI2lm ZGVmIFVTRV9MWjQKKwkJCQkJZmlsZS0+bmJ5dGVzID0gTFo0X2RlY29tcHJlc3Nfc2FmZShidWZm LAorCQkJCQkJZmlsZS0+YnVmZmVyLmRhdGEsbmJ5dGVzLHNpemVvZihmaWxlLT5idWZmZXIpKTsK KyNlbmRpZgorCQkJCQlicmVhazsKKworCQkJCWNhc2UgVEVNUF9QR0xaX0NPTVBSRVNTSU9OOgor CQkJCQlmaWxlLT5uYnl0ZXMgPSBwZ2x6X2RlY29tcHJlc3MoYnVmZixuYnl0ZXMsCisJCQkJCQlm aWxlLT5idWZmZXIuZGF0YSxzaXplb2YoZmlsZS0+YnVmZmVyKSxmYWxzZSk7CisJCQkJCWJyZWFr OworCQkJfQorCQkJZmlsZS0+Y3VyT2Zmc2V0ICs9IG5yZWFkOworCisJCQlpZiAoZmlsZS0+bmJ5 dGVzIDwgMCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRB X0NPUlJVUFRFRCksCisJCQkJCQkgZXJybXNnX2ludGVybmFsKCJjb21wcmVzc2VkIGx6NCBkYXRh IGlzIGNvcnJ1cHQiKSkpOworCQl9CisKKwl9CisKIAlpZiAoZmlsZS0+bmJ5dGVzIDwgMCkKIAl7 CiAJCWZpbGUtPm5ieXRlcyA9IDA7CkBAIC00OTQsOSArNjIyLDYxIEBAIHN0YXRpYyB2b2lkCiBC dWZGaWxlRHVtcEJ1ZmZlcihCdWZGaWxlICpmaWxlKQogewogCWludAkJCXdwb3MgPSAwOwotCWlu dAkJCWJ5dGVzdG93cml0ZTsKKwlpbnQJCQlieXRlc3Rvd3JpdGUgPSAwOwogCUZpbGUJCXRoaXNm aWxlOwogCisKKwkvKiBTYXZlIG5ieXRlcyB2YWx1ZSBiZWNhdXNlIHRoZSBzaXplIGNoYW5nZXMg ZHVlIHRvIGNvbXByZXNzaW9uICovCisJaW50IG5ieXRlc09yaWdpbmFsID0gZmlsZS0+bmJ5dGVz OworCisJY2hhciAqIERhdGFUb1dyaXRlOworCURhdGFUb1dyaXRlID0gZmlsZS0+YnVmZmVyLmRh dGE7CisKKwkvKgorCSAqIFByZXBhcmUgY29tcHJlc3NlZCBkYXRhIHRvIHdyaXRlCisJICogc2l6 ZSBvZiBjb21wcmVzc2VkIGJsb2NrIG5lZWRzIHRvIGJlIGFkZGVkIGF0IHRoZSBiZWdnaW5pbmcg b2YgdGhlCisJICogY29tcHJlc3NlZCBkYXRhCisJICovCisKKworCWlmIChmaWxlLT5jb21wcmVz cykgeworCQljaGFyICogY0RhdGE7CisJCWludCBjU2l6ZSA9IDA7CisKKwkJQXNzZXJ0KGZpbGUt PmNCdWZmZXIgIT0gTlVMTCk7CisJCWNEYXRhID0gZmlsZS0+Y0J1ZmZlcjsKKworCQlzd2l0Y2gg KHRlbXBfZmlsZV9jb21wcmVzc2lvbikKKwkJCXsKKwkJCWNhc2UgVEVNUF9MWjRfQ09NUFJFU1NJ T046CisJCQkJeworI2lmZGVmIFVTRV9MWjQKKwkJCQlpbnQgY0J1ZmZlclNpemUgPSBMWjRfY29t cHJlc3NCb3VuZChmaWxlLT5uYnl0ZXMpOworCQkJCS8qCisJCQkJKiBVc2luZyBzdHJlYW0gY29t cHJlc3Npb24gd291bGQgbGVhZCB0byB0aGUgc2xpZ2h0IGltcHJvdmVtZW50IGluCisJCQkJKiBj b21wcmVzc2lvbiByYXRpbworCQkJCSovCisJCQkJY1NpemUgPSBMWjRfY29tcHJlc3NfZGVmYXVs dChmaWxlLT5idWZmZXIuZGF0YSwKKwkJCQkJY0RhdGEgKyBzaXplb2YoaW50KSxmaWxlLT5uYnl0 ZXMsIGNCdWZmZXJTaXplKTsKKyNlbmRpZgorCQkJCWJyZWFrOworCQkJCX0KKwkJCWNhc2UgVEVN UF9QR0xaX0NPTVBSRVNTSU9OOgorCQkJCWNTaXplID0gcGdsel9jb21wcmVzcyhmaWxlLT5idWZm ZXIuZGF0YSxmaWxlLT5uYnl0ZXMsCisJCQkJCWNEYXRhICsgc2l6ZW9mKGludCksUEdMWl9zdHJh dGVneV9hbHdheXMpOworCQkJCWJyZWFrOworCQkJfQorCisKKwkJLyogV3JpdGUgc2l6ZSBvZiBj b21wcmVzc2VkIGJsb2NrIGluIGZyb250IG9mIGNvbXByZXNzZWQgZGF0YQorCQkgKiBJdCdzIHVz ZWQgdG8gZGV0ZXJtaW5lIGFtb3VudCBvZiBkYXRhIHRvIHJlYWQgd2l0aGluCisJCSAqIGRlY29t cHJlc3Npb24gcHJvY2VzcworCQkgKi8KKwkJbWVtY3B5KGNEYXRhLCZjU2l6ZSxzaXplb2YoaW50 KSk7CisJCWZpbGUtPm5ieXRlcz1jU2l6ZSArIHNpemVvZihpbnQpOworCQlEYXRhVG9Xcml0ZSA9 IGNEYXRhOworCX0KKwogCS8qCiAJICogVW5saWtlIEJ1ZkZpbGVMb2FkQnVmZmVyLCB3ZSBtdXN0 IGR1bXAgdGhlIHdob2xlIGJ1ZmZlciBldmVuIGlmIGl0CiAJICogY3Jvc3NlcyBhIGNvbXBvbmVu dC1maWxlIGJvdW5kYXJ5OyBzbyB3ZSBuZWVkIGEgbG9vcC4KQEAgLTUzNSw3ICs3MTUsNyBAQCBC dWZGaWxlRHVtcEJ1ZmZlcihCdWZGaWxlICpmaWxlKQogCQkJSU5TVFJfVElNRV9TRVRfWkVSTyhp b19zdGFydCk7CiAKIAkJYnl0ZXN0b3dyaXRlID0gRmlsZVdyaXRlKHRoaXNmaWxlLAotCQkJCQkJ CQkgZmlsZS0+YnVmZmVyLmRhdGEgKyB3cG9zLAorCQkJCQkJCQkgRGF0YVRvV3JpdGUgKyB3cG9z LAogCQkJCQkJCQkgYnl0ZXN0b3dyaXRlLAogCQkJCQkJCQkgZmlsZS0+Y3VyT2Zmc2V0LAogCQkJ CQkJCQkgV0FJVF9FVkVOVF9CVUZGSUxFX1dSSVRFKTsKQEAgLTU2NCw3ICs3NDQsMTkgQEAgQnVm RmlsZUR1bXBCdWZmZXIoQnVmRmlsZSAqZmlsZSkKIAkgKiBsb2dpY2FsIGZpbGUgcG9zaXRpb24s IGllLCBvcmlnaW5hbCB2YWx1ZSArIHBvcywgaW4gY2FzZSB0aGF0IGlzIGxlc3MKIAkgKiAoYXMg Y291bGQgaGFwcGVuIGR1ZSB0byBhIHNtYWxsIGJhY2t3YXJkcyBzZWVrIGluIGEgZGlydHkgYnVm ZmVyISkKIAkgKi8KLQlmaWxlLT5jdXJPZmZzZXQgLT0gKGZpbGUtPm5ieXRlcyAtIGZpbGUtPnBv cyk7CisKKworCWlmICghZmlsZS0+Y29tcHJlc3MpCisJCWZpbGUtPmN1ck9mZnNldCAtPSAoZmls ZS0+bmJ5dGVzIC0gZmlsZS0+cG9zKTsKKwllbHNlCisJCWlmIChuYnl0ZXNPcmlnaW5hbCAtIGZp bGUtPnBvcyAhPSAwKQorCQkJLyogY3VyT2Zmc2V0IG11c3QgYmUgY29ycmVjdGVkIGFsc28gaWYg Y29tcHJlc3Npb24gaXMKKwkJCSAqIGVuYWJsZWQsIG5ieXRlcyB3YXMgY2hhbmdlZCBieSBjb21w cmVzc2lvbiBidXQgd2UKKwkJCSAqIGhhdmUgdG8gdXNlIHRoZSBvcmlnaW5hbCB2YWx1ZSBvZiBu Ynl0ZXMKKwkJCSAqLworCQkJZmlsZS0+Y3VyT2Zmc2V0LT1ieXRlc3Rvd3JpdGU7CisKKwogCWlm IChmaWxlLT5jdXJPZmZzZXQgPCAwKQkvKiBoYW5kbGUgcG9zc2libGUgc2VnbWVudCBjcm9zc2lu ZyAqLwogCXsKIAkJZmlsZS0+Y3VyRmlsZS0tOwpAQCAtNTc3LDYgKzc2OSw3IEBAIEJ1ZkZpbGVE dW1wQnVmZmVyKEJ1ZkZpbGUgKmZpbGUpCiAJICovCiAJZmlsZS0+cG9zID0gMDsKIAlmaWxlLT5u Ynl0ZXMgPSAwOworCiB9CiAKIC8qCkBAIC02MDIsOCArNzk1LDE0IEBAIEJ1ZkZpbGVSZWFkQ29t bW9uKEJ1ZkZpbGUgKmZpbGUsIHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsIGJvb2wgZXhhY3QsIGJv b2wgZW9mT0spCiAJewogCQlpZiAoZmlsZS0+cG9zID49IGZpbGUtPm5ieXRlcykKIAkJewotCQkJ LyogVHJ5IHRvIGxvYWQgbW9yZSBkYXRhIGludG8gYnVmZmVyLiAqLwotCQkJZmlsZS0+Y3VyT2Zm c2V0ICs9IGZpbGUtPnBvczsKKwkJCS8qIFRyeSB0byBsb2FkIG1vcmUgZGF0YSBpbnRvIGJ1ZmZl ci4KKwkJCSAqCisJCQkgKiBjdXJPZmZzZXQgaXMgbW92ZWQgd2l0aGluIEJ1ZkZpbGVMb2FkQnVm ZmVyCisJCQkgKiBiZWNhdXNlIHN0b3JlZCBkYXRhIHNpemUgZGlmZmVycyBmcm9tIGxvYWRlZC8K KwkJCSAqIGRlY29tcHJlc3NlZCBzaXplCisJCQkgKiAqLworCQkJaWYgKCFmaWxlLT5jb21wcmVz cykKKwkJCQlmaWxlLT5jdXJPZmZzZXQgKz0gZmlsZS0+cG9zOwogCQkJZmlsZS0+cG9zID0gMDsK IAkJCWZpbGUtPm5ieXRlcyA9IDA7CiAJCQlCdWZGaWxlTG9hZEJ1ZmZlcihmaWxlKTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggNjBiMTI0NDZhMWMuLmFlMDUyNjQwYWMwIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtNzgsNiArNzgsNyBAQAogI2luY2x1 ZGUgInJlcGxpY2F0aW9uL3N5bmNyZXAuaCIKICNpbmNsdWRlICJzdG9yYWdlL2Fpby5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCisjaW5jbHVkZSAic3RvcmFnZS9idWZmaWxlLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9idWZwYWdlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9jb3B5ZGlyLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9pb193b3JrZXIuaCIKQEAgLTQ2Myw2ICs0NjQsMTggQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBjb25maWdfZW51bV9lbnRyeSBkZWZhdWx0X3RvYXN0X2NvbXByZXNz aW9uX29wdGlvbnNbXSA9IHsKICNlbmRpZgogCXtOVUxMLCAwLCBmYWxzZX0KIH07CisvKgorICog cGdseiBhbmQgenN0ZCBzdXBwb3J0IHNob3VsZCBiZSBhZGRlZCBhcyBmdXR1cmUgZW5oYW5jZW1l bnQKKyAqCisgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY29uZmlnX2VudW1fZW50cnkgdGVtcF9m aWxlX2NvbXByZXNzaW9uX29wdGlvbnNbXSA9IHsKKwl7Im5vIiwgVEVNUF9OT05FX0NPTVBSRVNT SU9OLCBmYWxzZX0sCisJeyJwZ2x6IiwgVEVNUF9QR0xaX0NPTVBSRVNTSU9OLCBmYWxzZX0sCisj aWZkZWYgIFVTRV9MWjQKKwl7Imx6NCIsIFRFTVBfTFo0X0NPTVBSRVNTSU9OLCBmYWxzZX0sCisj ZW5kaWYKKwl7TlVMTCwgMCwgZmFsc2V9Cit9OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGNvbmZp Z19lbnVtX2VudHJ5IHdhbF9jb21wcmVzc2lvbl9vcHRpb25zW10gPSB7CiAJeyJwZ2x6IiwgV0FM X0NPTVBSRVNTSU9OX1BHTFosIGZhbHNlfSwKQEAgLTUwNTgsNiArNTA3MSwxNyBAQCBzdHJ1Y3Qg Y29uZmlnX2VudW0gQ29uZmlndXJlTmFtZXNFbnVtW10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJ fSwKIAorCXsKKwkJeyJ0ZW1wX2ZpbGVfY29tcHJlc3Npb24iLCBQR0NfVVNFUlNFVCwgQ0xJRU5U X0NPTk5fU1RBVEVNRU5ULAorCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRoZSBkZWZhdWx0IGNvbXBy ZXNzaW9uIG1ldGhvZCBmb3IgY29tcHJlc3NpYmxlIHZhbHVlcy4iKSwKKwkJCU5VTEwKKwkJfSwK KwkJJnRlbXBfZmlsZV9jb21wcmVzc2lvbiwKKwkJVEVNUF9OT05FX0NPTVBSRVNTSU9OLAorCQl0 ZW1wX2ZpbGVfY29tcHJlc3Npb25fb3B0aW9ucywKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCisK IAl7CiAJCXsiZGVmYXVsdF90cmFuc2FjdGlvbl9pc29sYXRpb24iLCBQR0NfVVNFUlNFVCwgQ0xJ RU5UX0NPTk5fU1RBVEVNRU5ULAogCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRoZSB0cmFuc2FjdGlv biBpc29sYXRpb24gbGV2ZWwgb2YgZWFjaCBuZXcgdHJhbnNhY3Rpb24uIiksCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggMzQ4MjZkMDEzODAu Ljc3OTYxYTQ1ZDY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVz cWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNv bmYuc2FtcGxlCkBAIC0xODIsNiArMTgyLDcgQEAKIAogI21heF9ub3RpZnlfcXVldWVfcGFnZXMg PSAxMDQ4NTc2CSMgbGltaXRzIHRoZSBudW1iZXIgb2YgU0xSVSBwYWdlcyBhbGxvY2F0ZWQKIAkJ CQkJIyBmb3IgTk9USUZZIC8gTElTVEVOIHF1ZXVlCisjdGVtcF9maWxlX2NvbXByZXNzaW9uID0g J25vJwkjIGVuYWJsZXMgdGVtcG9yYXJ5IGZpbGVzIGNvbXByZXNzaW9uCiAKICNmaWxlX2NvcHlf bWV0aG9kID0gY29weQkjIHRoZSBkZWZhdWx0IGlzIHRoZSBmaXJzdCBvcHRpb24KIAkJCQkJIyAJ Y29weQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC9sb2d0YXBlLmMgYi9zcmMv YmFja2VuZC91dGlscy9zb3J0L2xvZ3RhcGUuYwppbmRleCBlNTI5Y2ViODI2MC4uZDg2MmUyMmVm MTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvbG9ndGFwZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL3NvcnQvbG9ndGFwZS5jCkBAIC01OTIsNyArNTkyLDcgQEAgTG9naWNh bFRhcGVTZXRDcmVhdGUoYm9vbCBwcmVhbGxvY2F0ZSwgU2hhcmVkRmlsZVNldCAqZmlsZXNldCwg aW50IHdvcmtlcikKIAkJbHRzLT5wZmlsZSA9IEJ1ZkZpbGVDcmVhdGVGaWxlU2V0KCZmaWxlc2V0 LT5mcywgZmlsZW5hbWUpOwogCX0KIAllbHNlCi0JCWx0cy0+cGZpbGUgPSBCdWZGaWxlQ3JlYXRl VGVtcChmYWxzZSk7CisJCWx0cy0+cGZpbGUgPSBCdWZGaWxlQ3JlYXRlVGVtcChmYWxzZSwgZmFs c2UpOwogCiAJcmV0dXJuIGx0czsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL3Nv cnQvdHVwbGVzdG9yZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXN0b3JlLmMKaW5k ZXggYzlhZWNhYjhkNjYuLmVmODU5MjRjZDIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9zb3J0L3R1cGxlc3RvcmUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc3Rv cmUuYwpAQCAtODYwLDcgKzg2MCw3IEBAIHR1cGxlc3RvcmVfcHV0dHVwbGVfY29tbW9uKFR1cGxl c3RvcmVzdGF0ZSAqc3RhdGUsIHZvaWQgKnR1cGxlKQogCQkJICovCiAJCQlvbGRjeHQgPSBNZW1v cnlDb250ZXh0U3dpdGNoVG8oc3RhdGUtPmNvbnRleHQtPnBhcmVudCk7CiAKLQkJCXN0YXRlLT5t eWZpbGUgPSBCdWZGaWxlQ3JlYXRlVGVtcChzdGF0ZS0+aW50ZXJYYWN0KTsKKwkJCXN0YXRlLT5t eWZpbGUgPSBCdWZGaWxlQ3JlYXRlVGVtcChzdGF0ZS0+aW50ZXJYYWN0LCBmYWxzZSk7CiAKIAkJ CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9zdG9yYWdlL2J1ZmZpbGUuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmZmlsZS5oCmluZGV4 IGEyZjQ4MjFmMjQwLi45MzFhMjExMDM4YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFn ZS9idWZmaWxlLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZmaWxlLmgKQEAgLTMyLDEx ICszMiwyMiBAQAogCiB0eXBlZGVmIHN0cnVjdCBCdWZGaWxlIEJ1ZkZpbGU7CiAKK3R5cGVkZWYg ZW51bQoreworCVRFTVBfTk9ORV9DT01QUkVTU0lPTiwKKwlURU1QX1BHTFpfQ09NUFJFU1NJT04s CisJVEVNUF9MWjRfQ09NUFJFU1NJT04KK30gVGVtcENvbXByZXNzaW9uOworCitleHRlcm4gUEdE TExJTVBPUlQgaW50IHRlbXBfZmlsZV9jb21wcmVzc2lvbjsKKworCiAvKgogICogcHJvdG90eXBl cyBmb3IgZnVuY3Rpb25zIGluIGJ1ZmZpbGUuYwogICovCiAKLWV4dGVybiBCdWZGaWxlICpCdWZG aWxlQ3JlYXRlVGVtcChib29sIGludGVyWGFjdCk7CitleHRlcm4gQnVmRmlsZSAqQnVmRmlsZUNy ZWF0ZUNvbXByZXNzVGVtcChib29sIGludGVyWGFjdCk7CitleHRlcm4gQnVmRmlsZSAqQnVmRmls ZUNyZWF0ZVRlbXAoYm9vbCBpbnRlclhhY3QsIGJvb2wgY29tcHJlc3MpOwogZXh0ZXJuIHZvaWQg QnVmRmlsZUNsb3NlKEJ1ZkZpbGUgKmZpbGUpOwogcGdfbm9kaXNjYXJkIGV4dGVybiBzaXplX3Qg QnVmRmlsZVJlYWQoQnVmRmlsZSAqZmlsZSwgdm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSk7CiBleHRl cm4gdm9pZCBCdWZGaWxlUmVhZEV4YWN0KEJ1ZkZpbGUgKmZpbGUsIHZvaWQgKnB0ciwgc2l6ZV90 IHNpemUpOwotLSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --000000000000e546140633a15f9f--