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 1vE3f3-003zR6-RI for pgpool-hackers@arkaria.postgresql.org; Wed, 29 Oct 2025 10:44:13 +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 1vE3f2-00HSDA-Rm for pgpool-hackers@arkaria.postgresql.org; Wed, 29 Oct 2025 10:44:11 +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 1vE3f2-00HSD2-GW for pgpool-hackers@lists.postgresql.org; Wed, 29 Oct 2025 10:44:11 +0000 Received: from mail-yw1-x1136.google.com ([2607:f8b0:4864:20::1136]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vE3ey-004reD-2e for pgpool-hackers@lists.postgresql.org; Wed, 29 Oct 2025 10:44:11 +0000 Received: by mail-yw1-x1136.google.com with SMTP id 00721157ae682-781421f5bf5so79526847b3.3 for ; Wed, 29 Oct 2025 03:44:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tailorbrands.com; s=google; t=1761734647; x=1762339447; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=qFm0066SKqeSZHrfydtY1iOd/nA5h0x6IGUM95HZKJ4=; b=M1dOedPR3QIPJf1bDRwn17waIWAhpX/d99ntbjgpZ5vpiTf/CbLQiA6cF4qzNMnp7v op6dVxkEa1PMWJelhFzd/G6xGNx94XNgsInDExUsoR2s609ykttkdTBcod3SG8TuEz6x SAJT/ZkmEV9tQNcEVfccsYGdeJD0u2fLy6Kp8F9MM7H9rTbgBYwyqPGGRaDgDAZ1ZIqL skv6ZA4JpnSLwcAnuvF09OPepx1lb2P7TfOlZ6qKyqI+jTt2TdBaNQHGj5oRHdBuwlL0 c+PB+uSrDVm8Yi39Iij+zA05lOk+XCwX26O6LK8nkxNBMpPyR1ozG9tvcr9Uftmm+ZXR gVsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761734647; x=1762339447; 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=qFm0066SKqeSZHrfydtY1iOd/nA5h0x6IGUM95HZKJ4=; b=v2sxTNNtEo/cW8yKMvqnIEJkcTMZsM984bxgAm1A2A0T/hxPKubJiTraw5XYB5fxWu ViQTCi9aPwSRk0lAHEAnmU3hyoPxGDDht/lA6ZZC+W0SSSLzN5Q5s8s2BW1bNKys+sn1 xJiwvajGaOMOlw47KkT/Ht+BXFP6Wnk05doWSWv8aD1/hmQ0viKhEOJPRA+EtD4pah7F a1jZ9QvOS5CO+QbCdGZ07cv/IUXlb9cBd7U7wUWJnAopOSscMjBCwcKTIHQc0Yla0BUW 628QL3QyNKbGJDmkMNdyMVVQrllFyeGGGxBgktxl0BJJGJr6xGfZq2eHHvcXKN9I3xz3 D2gA== X-Gm-Message-State: AOJu0YwAEvXrTBZqkC7iXIk9guILl2sStVA/E3ofbWe0wC0qA8vz6xes ItIFx/hxYbKc+BEQv+YXqEeGfEuSwM4V2s+uC3bWa3c4IDJ1zjVK2hVqvBoTdkfM8v6ecD8iCkx qppojTtElsDtCmOaRt3DQgrPAhR02463JP5Fv7hilDg== X-Gm-Gg: ASbGncukFokVL0tt8iDGXcBC76IfcTp9eg6Wxb1twxGfLen8ph1/JO3FFwlKTQtkDZx tnj8SaQ+B0t+D4oOF35epE4ARnPe0g9OnvGFGDOfz2eR10QzVmpZ5Kno1nSryql1a2ncaD0Fww/ lnLqZdFTRLpWZM2JlgeKOjv9Q9iVTc9gqF7jDMShI3RRFqT5fi9L1535SMnHxNopUTAARJV0iAA 5kJWTm4DlwW5bi7HEbIRMCRv1QwP/TobWDVsXHqcm4nj0t1vhvq6+4gRUMDNVaHdk1ogtYhrWBz 7/r4z1wWYGfLqhDjW29w3pKBEB+m7KVcuHhZZyqMs5/ItYDvDHg8oSdqSQ== X-Google-Smtp-Source: AGHT+IHpZBGSavTfdIWhTT4TuOkeWt10k3rX/FUnMQPAN6OlY+r60Wx4nZBhHXS+WoI75MYR7ld7r+MtL2NEA/ldcQc= X-Received: by 2002:a05:690c:2605:b0:781:64f:2b18 with SMTP id 00721157ae682-7862939f249mr36806937b3.58.1761734646734; Wed, 29 Oct 2025 03:44:06 -0700 (PDT) MIME-Version: 1.0 References: <534F5F0C-708B-4DBB-AD98-101E324E5361@tailorbrands.com> <20250922.073400.794497598091925011.ishii@postgresql.org> <20250930.183509.1786375391511683043.ishii@postgresql.org> In-Reply-To: <20250930.183509.1786375391511683043.ishii@postgresql.org> From: Nadav Shatz Date: Wed, 29 Oct 2025 12:43:54 +0200 X-Gm-Features: AWmQ_bk8Gqe8SzMUb-DD394H2x9g8tYiIjpmQuiFmlwNrxdKb8m-gkzpNll4K-U Message-ID: Subject: Re: Proposal: recent access based routing for primary-replica setups To: Tatsuo Ishii Cc: pgpool-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000cf07be064249cf55" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000cf07be064249cf55 Content-Type: multipart/alternative; boundary="000000000000cf07bd064249cf53" --000000000000cf07bd064249cf53 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, I'm back at work - wdyt of this version? (side note - Japan was incredible :)) On Tue, Sep 30, 2025 at 12:35=E2=80=AFPM Tatsuo Ishii wrote: > > I would actually suggest including down state instances in case pgpool > > isn=E2=80=99t aware yet. It can exclude them once it does. > > For these cases maybe -1 ? > > I don't think pgpool will triger failover even if > replication_delay_source_cmd returns -1 for such instance because > pgpool already has its own method to detect instance down (i.e. health > check) and method to avoid false positive > (i.e. failover_require_consensus). > > Still for such instaces replication_delay_source_cmd returns -1 maybe > useful if it's logged for admins. > > So I am Okay with the idea. > > Best regards, > -- > Tatsuo Ishii > SRA OSS K.K. > English: http://www.sraoss.co.jp/index_en/ > Japanese:http://www.sraoss.co.jp > > > Nadav Shatz > > Tailor Brands | CTO > > > > > > On Mon, Sep 22, 2025 at 7:34=E2=80=AFAM Tatsuo Ishii > wrote: > > > >> > Thank you for the kind words. We are having a great time! > >> > >> Glad to hear that! > >> > >> > Regarding the command knowing about the primary I think it is safe t= o > >> assume. > >> > >> Okay. > >> > >> > We can start this way and evolve in the future if needed. > >> > >> Agreed. > >> > >> > I can include a note about it in the notes that the command will onl= y > >> receive the secondary instances as arguments. > >> > > >> > Anything else that comes to mind? > >> > >> Sounds like a reasonable requirement. Also the command excludes any > >> instance which is in down state? > >> > >> Best regards, > >> -- > >> Tatsuo Ishii > >> SRA OSS K.K. > >> English: http://www.sraoss.co.jp/index_en/ > >> Japanese:http://www.sraoss.co.jp > >> > >> > Nadav Shatz > >> > CTO > >> > > >> >> On Sep 16, 2025, at 7:30=E2=80=AFPM, Tatsuo Ishii > wrote: > >> >> > >> >> =EF=BB=BF > >> >>> > >> >>> Hi Tatsuo, > >> >>> > >> >>> Sorry for the late reply - I'm traveling with my family at the > moment > >> (in > >> >>> Japan actually) > >> >> > >> >> Excellent! Hope you and your family are spending great time in Japa= n. > >> >> > >> >>> and might be delayed in responding. > >> >> > >> >> No problem at all. I think you should focus on the travel at this > >> >> moment. > >> >> > >> >>> Re your points: > >> >>> 1 - we can, but I have to say that a user I tend to prefer > >> configuration > >> >>> values not have a "magic" value that does something different than > the > >> >>> usual case like this would create. I'd stick with what we already > have > >> >>> planned. happy to hear from others on the mailing list as well of > >> course. > >> >> > >> >> Makes sense. I withdraw my proposal. > >> >> > >> >>> 2 - I think we can have the primary always be the first or we can > >> >>> completely remove it since it might be redundant as it's always > going > >> to be > >> >>> 0. what do you think? > >> >> > >> >> What I am not sure is, whether we can assume the command always kno= ws > >> >> which host (or IP) is primary? If the answer is yes, then we could > >> >> omit the primary. What do you think? > >> >> > >> >>> 3 - I agree with you, next version (after we clear everything else= ) > >> will > >> >>> have only ip/hostname+port. > >> >> > >> >> Thank you for understanding. > >> >> > >> >>> Let me know your thoughts > >> >>> > >> >>> Thanks! > >> >>> > >> >>>> On Tue, Sep 9, 2025 at 9:42=E2=80=AFAM Tatsuo Ishii > >> wrote: > >> >>>> > >> >>>> Hi Nadav, > >> >>>> > >> >>>>> Hi Tatsuo, > >> >>>>> > >> >>>>> Please find attached the 3 patch files (implementation, tests, > docs) > >> with > >> >>>>> the updates we discussed. > >> >>>>> > >> >>>>> What do you think? > >> >>>> > >> >>>> I haven't read the code details yet but I have a few questions. > >> >>>> > >> >>>> 1) Can we use only replication_delay_source_cmd and if it's value > is > >> >>>> 'builtin', then we treat it as replication_delay_source =3D > builtin? > >> >>>> Maybe this is matter of taste but I would like to know your > >> >>>> opinion. > >> >>>> > >> >>>> 2) replication_delay_source_cmd will be given an ordered list of > >> >>>> instance identifiers. But it seems there's no way for the comma= nd > >> >>>> which one is the primary instance. Is it okay for the command? > >> >>>> > >> >>>> 3) Why do you have 3 kind of instance identifiers (application > name, > >> >>>> hostname (IP) + port and node id? I thought "hostname (IP) + > port" > >> >>>> is sufficient. > >> >>>> > >> >>>> Comments? > >> >>>> -- > >> >>>> Tatsuo Ishii > >> >>>> SRA OSS K.K. > >> >>>> English: http://www.sraoss.co.jp/index_en/ > >> >>>> Japanese:http://www.sraoss.co.jp > >> >>>> > >> >>> > >> >>> > >> >>> -- > >> >>> Nadav Shatz > >> >>> Tailor Brands | CTO > >> > > >> > > >> > --=20 Nadav Shatz Tailor Brands | CTO --000000000000cf07bd064249cf53 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

I'm back at work - wdyt of this= version?

(side note - Japan was incredible :))

On Tue, Sep 30, 2025 at 12:35=E2=80=AFPM Tatsuo Is= hii <ishii@postgresql.org>= ; wrote:
> I = would actually suggest including down state instances in case pgpool
> isn=E2=80=99t aware yet. It can exclude them once it does.
> For these cases maybe=C2=A0 -1 ?

I don't think pgpool will triger failover even if
replication_delay_source_cmd returns -1 for such instance because
pgpool already has its own method to detect instance down (i.e. health
check) and method to avoid false positive
(i.e. failover_require_consensus).

Still for such instaces replication_delay_source_cmd returns -1 maybe
useful if it's logged for admins.

So I am Okay with the idea.

Best regards,
--
Tatsuo Ishii
SRA OSS K.K.
English: http://www.sraoss.co.jp/index_en/
Japanese:http://www.sraoss.co.jp

> Nadav Shatz
> Tailor Brands | CTO
>
>
> On Mon, Sep 22, 2025 at 7:34=E2=80=AFAM Tatsuo Ishii <ishii@postgresql.org> w= rote:
>
>> > Thank you for the kind words. We are having a great time!
>>
>> Glad to hear that!
>>
>> > Regarding the command knowing about the primary I think it is= safe to
>> assume.
>>
>> Okay.
>>
>> > We can start this way and evolve in the future if needed.
>>
>> Agreed.
>>
>> > I can include a note about it in the notes that the command w= ill only
>> receive the secondary instances as arguments.
>> >
>> > Anything else that comes to mind?
>>
>> Sounds like a reasonable requirement. Also the command excludes an= y
>> instance which is in down state?
>>
>> Best regards,
>> --
>> Tatsuo Ishii
>> SRA OSS K.K.
>> English: http://www.sraoss.co.jp/index_en/
>> Japanese:http://www.sraoss.co.jp
>>
>> > Nadav Shatz
>> > CTO
>> >
>> >> On Sep 16, 2025, at 7:30=E2=80=AFPM, Tatsuo Ishii <ishii@postgresql.org= > wrote:
>> >>
>> >> =EF=BB=BF
>> >>>
>> >>> Hi Tatsuo,
>> >>>
>> >>> Sorry for the late reply - I'm traveling with my = family at the moment
>> (in
>> >>> Japan actually)
>> >>
>> >> Excellent! Hope you and your family are spending great ti= me in Japan.
>> >>
>> >>> and might be delayed in responding.
>> >>
>> >> No problem at all. I think you should focus on the travel= at this
>> >> moment.
>> >>
>> >>> Re your points:
>> >>> 1 - we can, but I have to say that a user I tend to p= refer
>> configuration
>> >>> values not have a "magic" value that does s= omething different than the
>> >>> usual case like this would create. I'd stick with= what we already have
>> >>> planned. happy to hear from others on the mailing lis= t as well of
>> course.
>> >>
>> >> Makes sense. I withdraw my proposal.
>> >>
>> >>> 2 - I think we can have the primary always be the fir= st or we can
>> >>> completely remove it since it might be redundant as i= t's always going
>> to be
>> >>> 0. what do you think?
>> >>
>> >> What I am not sure is, whether we can assume the command = always knows
>> >> which host (or IP) is primary? If the answer is yes, then= we could
>> >> omit the primary. What do you think?
>> >>
>> >>> 3 - I agree with you, next version (after we clear ev= erything else)
>> will
>> >>> have only ip/hostname+port.
>> >>
>> >> Thank you for understanding.
>> >>
>> >>> Let me know your thoughts
>> >>>
>> >>> Thanks!
>> >>>
>> >>>> On Tue, Sep 9, 2025 at 9:42=E2=80=AFAM Tatsuo Ish= ii <ishii@post= gresql.org>
>> wrote:
>> >>>>
>> >>>> Hi Nadav,
>> >>>>
>> >>>>> Hi Tatsuo,
>> >>>>>
>> >>>>> Please find attached the 3 patch files (imple= mentation, tests, docs)
>> with
>> >>>>> the updates we discussed.
>> >>>>>
>> >>>>> What do you think?
>> >>>>
>> >>>> I haven't read the code details yet but I hav= e a few questions.
>> >>>>
>> >>>> 1) Can we use only replication_delay_source_cmd a= nd if it's value is
>> >>>>=C2=A0 =C2=A0'builtin', then we treat it a= s replication_delay_source =3D builtin?
>> >>>>=C2=A0 =C2=A0Maybe this is matter of taste but I w= ould like to know your
>> >>>>=C2=A0 =C2=A0opinion.
>> >>>>
>> >>>> 2) replication_delay_source_cmd will be given an = ordered list of
>> >>>>=C2=A0 =C2=A0instance identifiers. But it seems th= ere's no way for the command
>> >>>>=C2=A0 =C2=A0which one is the primary instance. Is= it okay for the command?
>> >>>>
>> >>>> 3) Why do you have 3 kind of instance identifiers= (application name,
>> >>>>=C2=A0 =C2=A0hostname (IP) + port and node id? I t= hought "hostname (IP) + port"
>> >>>>=C2=A0 =C2=A0is sufficient.
>> >>>>
>> >>>> Comments?
>> >>>> --
>> >>>> Tatsuo Ishii
>> >>>> SRA OSS K.K.
>> >>>> English: http://www.sraoss.co.jp/index_en= /
>> >>>> Japanese:http://www.sraoss.co.jp
>> >>>>
>> >>>
>> >>>
>> >>> --
>> >>> Nadav Shatz
>> >>> Tailor Brands | CTO
>> >
>> >
>>


--
Nadav Shatz
<= font color=3D"#000000">Tailor Brands=C2=A0| CTO
--000000000000cf07bd064249cf53-- --000000000000cf07be064249cf55 Content-Type: application/octet-stream; name="0001-external-replication-delay-implementation.patch" Content-Disposition: attachment; filename="0001-external-replication-delay-implementation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhbvb1qv0 RnJvbSAyNTY1ZDY2YjQ0MWM4MmUxZTRhNzBiMTQ2YWE4YmZiZGE3MWUxNDcxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOYWRhdiBTaGF0eiA8bmFkYXZAdGFpbG9yYnJhbmRzLmNvbT4K RGF0ZTogTW9uLCAyNyBPY3QgMjAyNSAxNjoyMjozMSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMS8y XSBmZWF0OiBleHRlcm5hbCByZXBsaWNhdGlvbiBkZWxheSBpbmplY3Rpb24gdmlhIGV4dGVybmFs CiBjb21tYW5kCgpJbXBsZW1lbnRhdGlvbjoKLSBBZGQgcmVwbGljYXRpb25fZGVsYXlfc291cmNl X2NtZCBjb25maWd1cmF0aW9uIHN0cmluZyBvcHRpb24KLSBSZW1vdmUgcmVwbGljYXRpb25fZGVs YXlfc291cmNlIGVudW0gKG5vIG1hZ2ljIHZhbHVlcykKLSBDb21tYW5kIHJlY2VpdmVzIHJlcGxp Y2Egbm9kZSBpZGVudGlmaWVycyBpbiBob3N0OnBvcnQgZm9ybWF0Ci0gUHJpbWFyeSBub2RlIG9t aXR0ZWQgZnJvbSBjb21tYW5kIGFyZ3VtZW50cyBhbmQgb3V0cHV0Ci0gSGFuZGxlIC0xIGZvciBk b3duIG5vZGVzIChsb2cgd2l0aG91dCB0cmlnZ2VyaW5nIGZhaWxvdmVyKQotIENvbW1hbmQgb3V0 cHV0cyBvbmUgZGVsYXkgdmFsdWUgKG1zKSBwZXIgcmVwbGljYQotIEZhbGxzIGJhY2sgdG8gYnVp bHRpbiBxdWVyaWVzIGlmIGNvbW1hbmQgbm90IGNvbmZpZ3VyZWQKLSBUaW1lb3V0IGhhbmRsaW5n IHdpdGggcmVwbGljYXRpb25fZGVsYXlfc291cmNlX3RpbWVvdXQKLS0tCiBzcmMvY29uZmlnL3Bv b2xfY29uZmlnX3ZhcmlhYmxlcy5jICAgICAgICAgICAgfCAgMjEgKysKIHNyYy9pbmNsdWRlL3Bv b2xfY29uZmlnLmggICAgICAgICAgICAgICAgICAgICB8ICAgMyArLQogc3JjL3NhbXBsZS9wZ3Bv b2wuY29uZi5zYW1wbGUtc3RyZWFtICAgICAgICAgIHwgIDE0ICsKIHNyYy9zdHJlYW1pbmdfcmVw bGljYXRpb24vcG9vbF93b3JrZXJfY2hpbGQuYyB8IDM0MCArKysrKysrKysrKysrKysrKy0KIDQg ZmlsZXMgY2hhbmdlZCwgMzc2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2NvbmZpZy9wb29sX2NvbmZpZ192YXJpYWJsZXMuYyBiL3NyYy9jb25maWcvcG9v bF9jb25maWdfdmFyaWFibGVzLmMKaW5kZXggNWJiZTQ2ZDNhLi5lZmFjMGQ4NjYgMTAwNjQ0Ci0t LSBhL3NyYy9jb25maWcvcG9vbF9jb25maWdfdmFyaWFibGVzLmMKKysrIGIvc3JjL2NvbmZpZy9w b29sX2NvbmZpZ192YXJpYWJsZXMuYwpAQCAtOTgwLDYgKzk4MCwxNiBAQCBzdGF0aWMgc3RydWN0 IGNvbmZpZ19zdHJpbmcgQ29uZmlndXJlTmFtZXNTdHJpbmdbXSA9CiAJCU5VTEwsIE5VTEwsIE5V TEwsIE5VTEwKIAl9LAogCisJeworCQl7InJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9jbWQiLCBD RkdDWFRfUkVMT0FELCBTVFJFQU1JTkdfUkVQTElDQVRJT05fQ09ORklHLAorCQkJIkV4dGVybmFs IGNvbW1hbmQgdG8gcmV0cmlldmUgcmVwbGljYXRpb24gZGVsYXkgaW5mb3JtYXRpb24uIiwKKwkJ CUNPTkZJR19WQVJfVFlQRV9TVFJJTkcsIGZhbHNlLCAwCisJCX0sCisJCSZnX3Bvb2xfY29uZmln LnJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9jbWQsCisJCSIiLAorCQlOVUxMLCBOVUxMLCBOVUxM LCBOVUxMCisJfSwKKwogCXsKIAkJeyJmYWlsYmFja19jb21tYW5kIiwgQ0ZHQ1hUX1JFTE9BRCwg RkFJTE9WRVJfQ09ORklHLAogCQkJIkNvbW1hbmQgdG8gZXhlY3V0ZSB3aGVuIGJhY2tlbmQgbm9k ZSBpcyBhdHRhY2hlZC4iLApAQCAtMjMyMyw2ICsyMzMzLDE3IEBAIHN0YXRpYyBzdHJ1Y3QgY29u ZmlnX2ludCBDb25maWd1cmVOYW1lc0ludFtdID0KIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCiAK Kwl7CisJCXsicmVwbGljYXRpb25fZGVsYXlfc291cmNlX3RpbWVvdXQiLCBDRkdDWFRfUkVMT0FE LCBTVFJFQU1JTkdfUkVQTElDQVRJT05fQ09ORklHLAorCQkJIlRpbWVvdXQgZm9yIGV4dGVybmFs IHJlcGxpY2F0aW9uIGRlbGF5IGNvbW1hbmQgZXhlY3V0aW9uIGluIHNlY29uZHMuIiwKKwkJCUNP TkZJR19WQVJfVFlQRV9JTlQsIGZhbHNlLCAwCisJCX0sCisJCSZnX3Bvb2xfY29uZmlnLnJlcGxp Y2F0aW9uX2RlbGF5X3NvdXJjZV90aW1lb3V0LAorCQkxMCwKKwkJMSwgMzYwMCwKKwkJTlVMTCwg TlVMTCwgTlVMTAorCX0sCisKIAkvKiBFbmQtb2YtbGlzdCBtYXJrZXIgKi8KIAlFTVBUWV9DT05G SUdfSU5UCiB9OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9vbF9jb25maWcuaCBiL3NyYy9p bmNsdWRlL3Bvb2xfY29uZmlnLmgKaW5kZXggYmU4Mjc1MGU1Li42NzI3NTU1OWYgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3Bvb2xfY29uZmlnLmgKKysrIGIvc3JjL2luY2x1ZGUvcG9vbF9jb25m aWcuaApAQCAtOTQsNyArOTQsNiBAQCB0eXBlZGVmIGVudW0gTG9nU3RhbmRieURlbGF5TW9kZXMK IAlMU0RfTk9ORQogfSBMb2dTdGFuZGJ5RGVsYXlNb2RlczsKIAotCiB0eXBlZGVmIGVudW0gTWVt Q2FjaGVNZXRob2QKIHsKIAlTSE1FTV9DQUNIRSA9IDEsCkBAIC0zNzEsNiArMzcwLDggQEAgdHlw ZWRlZiBzdHJ1Y3QKIAljaGFyCSAgICpzcl9jaGVja19wYXNzd29yZDsJLyogcGFzc3dvcmQgZm9y IHNyX2NoZWNrX3VzZXIgKi8KIAljaGFyCSAgICpzcl9jaGVja19kYXRhYmFzZTsJLyogUG9zdGdy ZVNRTCBkYXRhYmFzZSBuYW1lIGZvciBzdHJlYW1pbmcKIAkJCQkJCQkJCSAqIHJlcGxpY2F0aW9u IGNoZWNrICovCisJY2hhcgkgICAqcmVwbGljYXRpb25fZGVsYXlfc291cmNlX2NtZDsJLyogZXh0 ZXJuYWwgY29tbWFuZCBmb3IgcmVwbGljYXRpb24gZGVsYXkgKi8KKwlpbnQJCQlyZXBsaWNhdGlv bl9kZWxheV9zb3VyY2VfdGltZW91dDsJLyogdGltZW91dCBmb3IgZXh0ZXJuYWwgY29tbWFuZCBp biBzZWNvbmRzICovCiAJY2hhcgkgICAqZmFpbG92ZXJfY29tbWFuZDsJLyogZXhlY3V0ZSBjb21t YW5kIHdoZW4gZmFpbG92ZXIgaGFwcGVucyAqLwogCWNoYXIJICAgKmZvbGxvd19wcmltYXJ5X2Nv bW1hbmQ7IC8qIGV4ZWN1dGUgY29tbWFuZCB3aGVuIGZhaWxvdmVyIGlzCiAJCQkJCQkJCQkJICog ZW5kZWQgKi8KZGlmZiAtLWdpdCBhL3NyYy9zYW1wbGUvcGdwb29sLmNvbmYuc2FtcGxlLXN0cmVh bSBiL3NyYy9zYW1wbGUvcGdwb29sLmNvbmYuc2FtcGxlLXN0cmVhbQppbmRleCBhN2ViNTk0Yzku LjJjY2M5MDdlYSAxMDA2NDQKLS0tIGEvc3JjL3NhbXBsZS9wZ3Bvb2wuY29uZi5zYW1wbGUtc3Ry ZWFtCisrKyBiL3NyYy9zYW1wbGUvcGdwb29sLmNvbmYuc2FtcGxlLXN0cmVhbQpAQCAtNTE5LDYg KzUxOSwyMCBAQCBiYWNrZW5kX2NsdXN0ZXJpbmdfbW9kZSA9IHN0cmVhbWluZ19yZXBsaWNhdGlv bgogCiAjc3JfY2hlY2tfZGF0YWJhc2UgPSAncG9zdGdyZXMnCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgRGF0YWJhc2UgbmFtZSBmb3Igc3RyZWFtaW5nIHJlcGxpY2F0aW9u IGNoZWNrCisKKyNyZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfY21kID0gJycKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyBFeHRlcm5hbCBjb21tYW5kIHRvIHJldHJpZXZlIHJl cGxpY2F0aW9uIGRlbGF5IGluZm9ybWF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgSWYgc2V0LCBwZ3Bvb2wgdXNlcyB0aGlzIGNvbW1hbmQgaW5zdGVhZCBvZiBidWls dC1pbiBxdWVyaWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ29tbWFu ZCByZWNlaXZlcyByZXBsaWNhIG5vZGUgaWRlbnRpZmllcnMgKGhvc3Q6cG9ydCkgYXMgYXJndW1l bnRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUHJpbWFyeSBub2RlIGlz IG9taXR0ZWQgZnJvbSBhcmd1bWVudHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIyBDb21tYW5kIHNob3VsZCBvdXRwdXQgb25lIGRlbGF5IHZhbHVlIChpbiBtcykgcGVyIHJl cGxpY2EKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBVc2UgLTEgdG8gaW5k aWNhdGUgYSByZXBsaWNhIHRoYXQgaXMgZG93biBidXQgbm90IHlldCBkZXRlY3RlZAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZvcm1hdDogIjI1IDEwMCIgZm9yIDIgcmVw bGljYXMgKGUuZy4sIDMtbm9kZSBjbHVzdGVyIHdpdGggMSBwcmltYXJ5KQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIENvbW1hbmQgcnVucyBhcyB0aGUgcGdwb29sIHByb2Nl c3MgdXNlcgorI3JlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV90aW1lb3V0ID0gMTAKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUaW1lb3V0IGZvciBleHRlcm5hbCBjb21tYW5k IGV4ZWN1dGlvbiBpbiBzZWNvbmRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgUmFuZ2U6IDEtMzYwMCBzZWNvbmRzIChkZWZhdWx0OiAxMCkKKwogI2RlbGF5X3RocmVzaG9s ZCA9IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUaHJlc2hvbGQgYmVm b3JlIG5vdCBkaXNwYXRjaGluZyBxdWVyeSB0byBzdGFuZGJ5IG5vZGUKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyBVbml0IGlzIGluIGJ5dGVzCmRpZmYgLS1naXQgYS9zcmMv c3RyZWFtaW5nX3JlcGxpY2F0aW9uL3Bvb2xfd29ya2VyX2NoaWxkLmMgYi9zcmMvc3RyZWFtaW5n X3JlcGxpY2F0aW9uL3Bvb2xfd29ya2VyX2NoaWxkLmMKaW5kZXggNGY4ZjgyM2EzLi4wNzU1OWJh NDUgMTAwNjQ0Ci0tLSBhL3NyYy9zdHJlYW1pbmdfcmVwbGljYXRpb24vcG9vbF93b3JrZXJfY2hp bGQuYworKysgYi9zcmMvc3RyZWFtaW5nX3JlcGxpY2F0aW9uL3Bvb2xfd29ya2VyX2NoaWxkLmMK QEAgLTc2LDYgKzc2LDggQEAgc3RhdGljIHZvbGF0aWxlIHNpZ19hdG9taWNfdCByZXN0YXJ0X3Jl cXVlc3QgPSAwOwogc3RhdGljIHZvaWQgZXN0YWJsaXNoX3BlcnNpc3RlbnRfY29ubmVjdGlvbih2 b2lkKTsKIHN0YXRpYyB2b2lkIGRpc2NhcmRfcGVyc2lzdGVudF9jb25uZWN0aW9uKHZvaWQpOwog c3RhdGljIHZvaWQgY2hlY2tfcmVwbGljYXRpb25fdGltZV9sYWcodm9pZCk7CitzdGF0aWMgdm9p ZCBjaGVja19yZXBsaWNhdGlvbl90aW1lX2xhZ193aXRoX2NtZCh2b2lkKTsKK3N0YXRpYyBjaGFy ICpidWlsZF9pbnN0YW5jZV9pZGVudGlmaWVyX2Zvcl9ub2RlKGludCBub2RlX2lkKTsKIHN0YXRp YyB2b2lkIENoZWNrUmVwbGljYXRpb25UaW1lTGFnRXJyb3JDYih2b2lkICphcmcpOwogc3RhdGlj IHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgdGV4dF90b19sc24oY2hhciAqdGV4dCk7CiBzdGF0aWMg UkVUU0lHVFlQRSBteV9zaWduYWxfaGFuZGxlcihpbnQgc2lnKTsKQEAgLTI1OSw3ICsyNjEsMTIg QEAgZG9fd29ya2VyX2NoaWxkKHZvaWQpCiAJCQkJCVBPT0xfTk9ERV9TVEFUVVMgKm5vZGVfc3Rh dHVzOwogCQkJCQlpbnQJCQlpOwogCi0JCQkJCS8qIERvIHJlcGxpY2F0aW9uIHRpbWUgbGFnIGNo ZWNraW5nICovCisJCQkJLyogRG8gcmVwbGljYXRpb24gdGltZSBsYWcgY2hlY2tpbmcgKi8KKwkJ CQkvKiBVc2UgZXh0ZXJuYWwgY29tbWFuZCBpZiByZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfY21k IGlzIGNvbmZpZ3VyZWQgKi8KKwkJCQlpZiAocG9vbF9jb25maWctPnJlcGxpY2F0aW9uX2RlbGF5 X3NvdXJjZV9jbWQgJiYKKwkJCQkJc3RybGVuKHBvb2xfY29uZmlnLT5yZXBsaWNhdGlvbl9kZWxh eV9zb3VyY2VfY21kKSA+IDApCisJCQkJCWNoZWNrX3JlcGxpY2F0aW9uX3RpbWVfbGFnX3dpdGhf Y21kKCk7CisJCQkJZWxzZQogCQkJCQljaGVja19yZXBsaWNhdGlvbl90aW1lX2xhZygpOwogCiAJ CQkJCS8qIENoZWNrIG5vZGUgc3RhdHVzICovCkBAIC02NTksNiArNjY2LDMzNyBAQCBjaGVja19y ZXBsaWNhdGlvbl90aW1lX2xhZyh2b2lkKQogCWVycm9yX2NvbnRleHRfc3RhY2sgPSBjYWxsYmFj ay5wcmV2aW91czsKIH0KIAorI2RlZmluZSBNQVhfQ01EX09VVFBVVCA0MDk2CisjZGVmaW5lIE1B WF9SRUFTT05BQkxFX0RFTEFZX01TIDM2MDAwMDAuMCAgLyogMSBob3VyIGluIG1pbGxpc2Vjb25k cyAqLworCisvKiBHbG9iYWwgdmFyaWFibGUgdG8gdHJhY2sgY29tbWFuZCB0aW1lb3V0ICovCitz dGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IGNvbW1hbmRfdGltZW91dF9vY2N1cnJlZCA9IDA7 CisKKy8qCisgKiBTaWduYWwgaGFuZGxlciBmb3IgY29tbWFuZCB0aW1lb3UKKyAqLworc3RhdGlj IHZvaWQKK2NvbW1hbmRfdGltZW91dF9oYW5kbGVyKGludCBzaWcpCit7CisJY29tbWFuZF90aW1l b3V0X29jY3VycmVkID0gMTsKK30KKworCisKKy8qCisgKiBDaGVjayByZXBsaWNhdGlvbiB0aW1l IGxhZyB1c2luZyBleHRlcm5hbCBjb21tYW5kCisgKgorICogVGhlIGV4dGVybmFsIGNvbW1hbmQg cmVjZWl2ZXMgb25seSByZXBsaWNhIChzdGFuZGJ5KSBub2RlIGlkZW50aWZpZXJzIGFzIGFyZ3Vt ZW50cywKKyAqIG9taXR0aW5nIHRoZSBwcmltYXJ5IG5vZGUuIEl0IHJldHVybnMgZGVsYXkgdmFs dWVzIGluIG1pbGxpc2Vjb25kcyBmb3IgZWFjaCByZXBsaWNhLgorICogQSB2YWx1ZSBvZiAtMSBp bmRpY2F0ZXMgYSBub2RlIHRoYXQgaXMgZG93biBidXQgbm90IHlldCBkZXRlY3RlZCBieSBwZ3Bv b2wncyBoZWFsdGggY2hlY2tzLgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfcmVwbGljYXRpb25f dGltZV9sYWdfd2l0aF9jbWQodm9pZCkKK3sKKwlGSUxFCQkgICAqZnA7CisJY2hhcgkJICAgKmNv bW1hbmQ7CisJY2hhcgkJICAgKmxpbmU7CisJY2hhcgkJICAgKnRva2VuOworCWNoYXIJCSAgICpz YXZlcHRyOworCWludAkJCQlyZXBsaWNhX2lkeDsKKwlpbnQJCQkJbnVtX3JlcGxpY2FzOworCWRv dWJsZQkJCWRlbGF5X21zOworCXVpbnQ2NAkJCWRlbGF5OworCWludAkJCQl0b2tlbl9jb3VudCA9 IDA7CisJQmFja2VuZEluZm8JICAgKmJraW5mbzsKKwlFcnJvckNvbnRleHRDYWxsYmFjayBjYWxs YmFjazsKKworCWlmIChOVU1fQkFDS0VORFMgPD0gMSkKKwl7CisJCS8qIElmIHRoZXJlJ3Mgb25s eSBvbmUgbm9kZSwgdGhlcmUncyBubyBwb2ludCB0byBkbyBjaGVja2luZyAqLworCQlyZXR1cm47 CisJfQorCisJaWYgKFJFQUxfUFJJTUFSWV9OT0RFX0lEIDwgMCkKKwl7CisJCS8qIE5vIG5lZWQg dG8gY2hlY2sgaWYgdGhlcmUncyBubyBwcmltYXJ5ICovCisJCXJldHVybjsKKwl9CisKKwlpZiAo IVZBTElEX0JBQ0tFTkQoUkVBTF9QUklNQVJZX05PREVfSUQpKQorCXsKKwkJLyogTm8gbmVlZCB0 byBjaGVjayByZXBsaWNhdGlvbiBkZWxheSBpZiBwcmltYXJ5IGlzIGRvd24gKi8KKwkJcmV0dXJu OworCX0KKworCWlmICghcG9vbF9jb25maWctPnJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9jbWQg fHwKKwkJc3RybGVuKHBvb2xfY29uZmlnLT5yZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfY21kKSA9 PSAwKQorCXsKKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJtc2coInJlcGxpY2F0aW9uX2Rl bGF5X3NvdXJjZV9jbWQgaXMgbm90IGNvbmZpZ3VyZWQiKSwKKwkJCQkgZXJyaGludCgiU2V0IHJl cGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9jbWQgdG8gdXNlIGV4dGVybmFsIGNvbW1hbmQgbW9kZSIp KSk7CisJCS8qIEZhbGwgYmFjayB0byBidWlsdGluIG1ldGhvZCAqLworCQljaGVja19yZXBsaWNh dGlvbl90aW1lX2xhZygpOworCQlyZXR1cm47CisJfQorCisJLyogQWxsb2NhdGUgYnVmZmVyIGZv ciBjb21tYW5kIG91dHB1dCAqLworCWxpbmUgPSBwYWxsb2MoTUFYX0NNRF9PVVRQVVQpOworCWZw ID0gTlVMTDsKKworCS8qCisJICogUmVnaXN0ZXIgYSBlcnJvciBjb250ZXh0IGNhbGxiYWNrIHRv IHRocm93IHByb3BlciBjb250ZXh0IG1lc3NhZ2UKKwkgKi8KKwljYWxsYmFjay5jYWxsYmFjayA9 IENoZWNrUmVwbGljYXRpb25UaW1lTGFnRXJyb3JDYjsKKwljYWxsYmFjay5hcmcgPSBOVUxMOwor CWNhbGxiYWNrLnByZXZpb3VzID0gZXJyb3JfY29udGV4dF9zdGFjazsKKwllcnJvcl9jb250ZXh0 X3N0YWNrID0gJmNhbGxiYWNrOworCisJLyogRXhlY3V0ZSBjb21tYW5kIGFzIGN1cnJlbnQgcHJv Y2VzcyB1c2VyICovCisJUEdfVFJZKCk7CisJeworCQljb25zdCBjaGFyICpiYXNlX2NvbW1hbmQg PSBwb29sX2NvbmZpZy0+cmVwbGljYXRpb25fZGVsYXlfc291cmNlX2NtZDsKKwkJc2l6ZV90IHRv dGFsX2xlbiA9IHN0cmxlbihiYXNlX2NvbW1hbmQpICsgMTsgLyogKzEgZm9yIE5VTCAqLworCQkK KwkJLyogQnVpbGQgY29tbWFuZCB3aXRoIHJlcGxpY2Etb25seSBhcmd1bWVudHMgKG9taXQgcHJp bWFyeSkgKi8KKwkJLyogQ2FsY3VsYXRlIHRvdGFsIGNvbW1hbmQgbGVuZ3RoIGluY2x1ZGluZyBz cGFjZS1zZXBhcmF0ZWQgcmVwbGljYSBpZGVudGlmaWVycyAqLworCQlmb3IgKGludCBpID0gMDsg aSA8IE5VTV9CQUNLRU5EUzsgaSsrKQorCQl7CisJCQlpZiAoaSA9PSBSRUFMX1BSSU1BUllfTk9E RV9JRCkKKwkJCQljb250aW51ZTsgLyogU2tpcCBwcmltYXJ5IG5vZGUgKi8KKwkJCQorCQkJY2hh ciAqaWRlbnQgPSBidWlsZF9pbnN0YW5jZV9pZGVudGlmaWVyX2Zvcl9ub2RlKGkpOworCQkJdG90 YWxfbGVuICs9IDEgLyogc3BhY2UgKi8gKyBzdHJsZW4oaWRlbnQpOworCQkJcGZyZWUoaWRlbnQp OworCQl9CisKKwkJY29tbWFuZCA9IHBhbGxvYyh0b3RhbF9sZW4pOworCQlzdHJsY3B5KGNvbW1h bmQsIGJhc2VfY29tbWFuZCwgdG90YWxfbGVuKTsKKworCQkvKiBBcHBlbmQgcmVwbGljYSBpZGVu dGlmaWVycyAqLworCQlmb3IgKGludCBpID0gMDsgaSA8IE5VTV9CQUNLRU5EUzsgaSsrKQorCQl7 CisJCQlpZiAoaSA9PSBSRUFMX1BSSU1BUllfTk9ERV9JRCkKKwkJCQljb250aW51ZTsgLyogU2tp cCBwcmltYXJ5IG5vZGUgKi8KKwkJCQorCQkJY2hhciAqaWRlbnQgPSBidWlsZF9pbnN0YW5jZV9p ZGVudGlmaWVyX2Zvcl9ub2RlKGkpOworCQkJc3RybGNhdChjb21tYW5kLCAiICIsIHRvdGFsX2xl bik7CisJCQlzdHJsY2F0KGNvbW1hbmQsIGlkZW50LCB0b3RhbF9sZW4pOworCQkJcGZyZWUoaWRl bnQpOworCQl9CisKKwkJZXJlcG9ydChERUJVRzEsCisJCQkJKGVycm1zZygiZXhlY3V0aW5nIHJl cGxpY2F0aW9uIGRlbGF5IGNvbW1hbmQ6ICVzIiwgY29tbWFuZCkpKTsKKworCQkvKiBTZXQgdXAg dGltZW91dCBmb3IgY29tbWFuZCBleGVjdXRpb24gKi8KKwkJY29tbWFuZF90aW1lb3V0X29jY3Vy cmVkID0gMDsKKwkJc2lnbmFsKFNJR0FMUk0sIGNvbW1hbmRfdGltZW91dF9oYW5kbGVyKTsKKwkJ YWxhcm0ocG9vbF9jb25maWctPnJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV90aW1lb3V0KTsKKwor CQlmcCA9IHBvcGVuKGNvbW1hbmQsICJyIik7CisJCWlmIChmcCA9PSBOVUxMKQorCQl7CisJCQlh bGFybSgwKTsgLyogQ2FuY2VsIGFsYXJtICovCisJCQlzaWduYWwoU0lHQUxSTSwgU0lHX0RGTCk7 CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJybXNnKCJmYWlsZWQgdG8gZXhlY3V0ZSByZXBs aWNhdGlvbiBkZWxheSBjb21tYW5kOiAlcyIsIGNvbW1hbmQpLAorCQkJCQkgZXJyZGV0YWlsKCJw b3BlbiBmYWlsZWQ6ICVtIikpKTsKKwkJfQorCisJCWlmIChmZ2V0cyhsaW5lLCBNQVhfQ01EX09V VFBVVCwgZnApID09IE5VTEwpCisJCXsKKwkJCWludCBwY2xvc2VfcmVzdWx0ID0gcGNsb3NlKGZw KTsKKwkJCWZwID0gTlVMTDsKKwkJCWFsYXJtKDApOyAvKiBDYW5jZWwgYWxhcm0gKi8KKwkJCXNp Z25hbChTSUdBTFJNLCBTSUdfREZMKTsKKworCQkJaWYgKGNvbW1hbmRfdGltZW91dF9vY2N1cnJl ZCkKKwkJCXsKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycm1zZygicmVwbGljYXRpb24g ZGVsYXkgY29tbWFuZCB0aW1lZCBvdXQgYWZ0ZXIgJWQgc2Vjb25kczogJXMiLAorCQkJCQkJCQlw b29sX2NvbmZpZy0+cmVwbGljYXRpb25fZGVsYXlfc291cmNlX3RpbWVvdXQsIGNvbW1hbmQpLAor CQkJCQkJIGVycmhpbnQoIkNvbnNpZGVyIGluY3JlYXNpbmcgcmVwbGljYXRpb25fZGVsYXlfc291 cmNlX3RpbWVvdXQgb3Igb3B0aW1pemluZyB0aGUgY29tbWFuZCIpKSk7CisJCQl9CisJCQllbHNl CisJCQl7CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJtc2coImZhaWxlZCB0byByZWFk IG91dHB1dCBmcm9tIHJlcGxpY2F0aW9uIGRlbGF5IGNvbW1hbmQ6ICVzIiwgY29tbWFuZCksCisJ CQkJCQkgZXJyZGV0YWlsKCJjb21tYW5kIGV4aXQgc3RhdHVzOiAlZCIsIHBjbG9zZV9yZXN1bHQp KSk7CisJCQl9CisJCX0KKworCQlhbGFybSgwKTsgLyogQ2FuY2VsIGFsYXJtICovCisJCXNpZ25h bChTSUdBTFJNLCBTSUdfREZMKTsKKworCQkvKiBDaGVjayBpZiBvdXRwdXQgd2FzIHRydW5jYXRl ZCAqLworCQlpZiAoc3RybGVuKGxpbmUpID09IE1BWF9DTURfT1VUUFVUIC0gMSAmJiBsaW5lW01B WF9DTURfT1VUUFVUIC0gMl0gIT0gJ1xuJykKKwkJeworCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJ CQkoZXJybXNnKCJyZXBsaWNhdGlvbiBkZWxheSBjb21tYW5kIG91dHB1dCBtYXkgaGF2ZSBiZWVu IHRydW5jYXRlZCIpKSk7CisJCX0KKworCQlwY2xvc2UoZnApOworCQlmcCA9IE5VTEw7CisJCXBm cmVlKGNvbW1hbmQpOworCQljb21tYW5kID0gTlVMTDsKKworCQkvKiBTZXQgcHJpbWFyeSBub2Rl IGRlbGF5IHRvIDAgKi8KKwkJYmtpbmZvID0gcG9vbF9nZXRfbm9kZV9pbmZvKFJFQUxfUFJJTUFS WV9OT0RFX0lEKTsKKwkJYmtpbmZvLT5zdGFuZGJ5X2RlbGF5ID0gMDsKKwkJYmtpbmZvLT5zdGFu ZGJ5X2RlbGF5X2J5X3RpbWUgPSB0cnVlOworCisJCS8qIENvdW50IGV4cGVjdGVkIHJlcGxpY2Fz ICovCisJCW51bV9yZXBsaWNhcyA9IE5VTV9CQUNLRU5EUyAtIDE7IC8qIFRvdGFsIG5vZGVzIG1p bnVzIHByaW1hcnkgKi8KKworCQkvKiBDb3VudCB0b2tlbnMgaW4gb3V0cHV0IGZvciB2YWxpZGF0 aW9uICovCisJCWNoYXIgKmxpbmVfY29weSA9IHBzdHJkdXAobGluZSk7CisJCWNoYXIgKnRlbXBf dG9rZW4gPSBzdHJ0b2sobGluZV9jb3B5LCAiIFx0XG4iKTsKKwkJd2hpbGUgKHRlbXBfdG9rZW4g IT0gTlVMTCkKKwkJeworCQkJdG9rZW5fY291bnQrKzsKKwkJCXRlbXBfdG9rZW4gPSBzdHJ0b2so TlVMTCwgIiBcdFxuIik7CisJCX0KKwkJcGZyZWUobGluZV9jb3B5KTsKKworCQlpZiAodG9rZW5f Y291bnQgIT0gbnVtX3JlcGxpY2FzKQorCQl7CisJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJCShl cnJtc2coInJlcGxpY2F0aW9uIGRlbGF5IGNvbW1hbmQgcmV0dXJuZWQgJWQgdmFsdWVzLCBleHBl Y3RlZCAlZCAob25lIHBlciByZXBsaWNhLCBleGNsdWRpbmcgcHJpbWFyeSkiLAorCQkJCQkJCXRv a2VuX2NvdW50LCBudW1fcmVwbGljYXMpLAorCQkJCQkgZXJyaGludCgiQ29tbWFuZCBzaG91bGQg b3V0cHV0IG9uZSBkZWxheSB2YWx1ZSBwZXIgcmVwbGljYSBub2RlIikpKTsKKwkJfQorCisJCS8q IFBhcnNlIHRoZSBvdXRwdXQgLSBvbmUgZGVsYXkgdmFsdWUgcGVyIHJlcGxpY2EgaW4gb3JkZXIg Ki8KKwkJdG9rZW4gPSBzdHJ0b2tfcihsaW5lLCAiIFx0XG4iLCAmc2F2ZXB0cik7CisJCXJlcGxp Y2FfaWR4ID0gMDsKKworCQlmb3IgKGludCBpID0gMDsgaSA8IE5VTV9CQUNLRU5EUyAmJiB0b2tl biAhPSBOVUxMOyBpKyspCisJCXsKKwkJCWlmIChpID09IFJFQUxfUFJJTUFSWV9OT0RFX0lEKQor CQkJCWNvbnRpbnVlOyAvKiBTa2lwIHByaW1hcnkgLSBpdCdzIG5vdCBpbiB0aGUgb3V0cHV0ICov CisKKwkJCWlmICghVkFMSURfQkFDS0VORChpKSkKKwkJCXsKKwkJCQkvKiBTa2lwIGludmFsaWQg YmFja2VuZCBidXQgY29uc3VtZSB0b2tlbiAqLworCQkJCXRva2VuID0gc3RydG9rX3IoTlVMTCwg IiBcdFxuIiwgJnNhdmVwdHIpOworCQkJCXJlcGxpY2FfaWR4Kys7CisJCQkJY29udGludWU7CisJ CQl9CisKKwkJCWNoYXIgKmVuZHB0cjsKKwkJCWRlbGF5X21zID0gc3RydG9kKHRva2VuLCAmZW5k cHRyKTsKKworCQkJLyogVmFsaWRhdGUgdGhlIGNvbnZlcnNpb24gKi8KKwkJCWlmICgqZW5kcHRy ICE9ICdcMCcpCisJCQl7CisJCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQkJKGVycm1zZygiaW52 YWxpZCBkZWxheSB2YWx1ZSAnJXMnIGZvciBub2RlICVkLCB0cmVhdGluZyBhcyAwIiwKKwkJCQkJ CQkJdG9rZW4sIGkpKSk7CisJCQkJZGVsYXlfbXMgPSAwOworCQkJfQorCisJCQlia2luZm8gPSBw b29sX2dldF9ub2RlX2luZm8oaSk7CisKKwkJCS8qIEhhbmRsZSAtMSBmb3IgZG93biBub2RlcyAq LworCQkJaWYgKGRlbGF5X21zID09IC0xLjApCisJCQl7CisJCQkJZXJlcG9ydChMT0csCisJCQkJ CQkoZXJybXNnKCJub2RlICVkIHJlcG9ydGVkIGFzIGRvd24gYnkgZXh0ZXJuYWwgY29tbWFuZCAo ZGVsYXkgLTEpLCByZWx5aW5nIG9uIGhlYWx0aCBjaGVjayBmb3IgZmFpbG92ZXIgZGVjaXNpb24i LAorCQkJCQkJCQlpKSkpOworCQkJCS8qIEtlZXAgcHJldmlvdXMgZGVsYXkgdmFsdWUsIGRvbid0 IHRyaWdnZXIgZmFpbG92ZXIgKi8KKwkJCQl0b2tlbiA9IHN0cnRva19yKE5VTEwsICIgXHRcbiIs ICZzYXZlcHRyKTsKKwkJCQlyZXBsaWNhX2lkeCsrOworCQkJCWNvbnRpbnVlOworCQkJfQorCisJ CQkvKiBWYWxpZGF0ZSBkZWxheSB2YWx1ZSByYW5nZSAqLworCQkJaWYgKGRlbGF5X21zIDwgMCkK KwkJCXsKKwkJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJCQkoZXJybXNnKCJuZWdhdGl2ZSBkZWxh eSB2YWx1ZSAlLjNmIGZvciBub2RlICVkIChvdGhlciB0aGFuIC0xKSwgdHJlYXRpbmcgYXMgMCIs CisJCQkJCQkJCWRlbGF5X21zLCBpKSkpOworCQkJCWRlbGF5X21zID0gMDsKKwkJCX0KKwkJCWVs c2UgaWYgKGRlbGF5X21zID4gTUFYX1JFQVNPTkFCTEVfREVMQVlfTVMpCisJCQl7CisJCQkJZXJl cG9ydChXQVJOSU5HLAorCQkJCQkJKGVycm1zZygiZXh0cmVtZWx5IGxhcmdlIGRlbGF5IHZhbHVl ICUuM2YgZm9yIG5vZGUgJWQiLAorCQkJCQkJCQlkZWxheV9tcywgaSkpKTsKKwkJCX0KKworCQkJ LyogQ29udmVydCBkZWxheSBmcm9tIG1pbGxpc2Vjb25kcyB0byBtaWNyb3NlY29uZHMgZm9yIGlu dGVybmFsIHN0b3JhZ2UgKi8KKwkJCWRlbGF5ID0gKHVpbnQ2NCkoZGVsYXlfbXMgKiAxMDAwKTsK KwkJCWJraW5mby0+c3RhbmRieV9kZWxheSA9IGRlbGF5OworCQkJYmtpbmZvLT5zdGFuZGJ5X2Rl bGF5X2J5X3RpbWUgPSB0cnVlOworCisJCQkvKiBMb2cgZGVsYXkgaWYgbmVjZXNzYXJ5ICovCisJ CQl1aW50NjQgZGVsYXlfdGhyZXNob2xkX2J5X3RpbWUgPSBwb29sX2NvbmZpZy0+ZGVsYXlfdGhy ZXNob2xkX2J5X3RpbWUgKiAxMDAwOyAvKiB0aHJlc2hvbGQgaXMgaW4gbWlsbGlzZWNvbmRzLCBj b252ZXJ0IHRvIG1pY3Jvc2Vjb25kcyAqLworCisJCQlpZiAoKHBvb2xfY29uZmlnLT5sb2dfc3Rh bmRieV9kZWxheSA9PSBMU0RfQUxXQVlTICYmIGRlbGF5X21zID4gMCkgfHwKKwkJCQkocG9vbF9j b25maWctPmxvZ19zdGFuZGJ5X2RlbGF5ID09IExTRF9PVkVSX1RIUkVTSE9MRCAmJgorCQkJCSBi a2luZm8tPnN0YW5kYnlfZGVsYXkgPiBkZWxheV90aHJlc2hvbGRfYnlfdGltZSkpCisJCQl7CisJ CQkJZXJlcG9ydChMT0csCisJCQkJCQkoZXJybXNnKCJSZXBsaWNhdGlvbiBvZiBub2RlOiAlZCBp cyBiZWhpbmQgJS4zZiBzZWNvbmQocykgZnJvbSB0aGUgcHJpbWFyeSBzZXJ2ZXIgKG5vZGU6ICVk KSBbZXh0ZXJuYWwgY29tbWFuZF0iLAorCQkJCQkJCQlpLCBkZWxheV9tcyAvIDEwMDAsIFJFQUxf UFJJTUFSWV9OT0RFX0lEKSkpOworCQkJfQorCisJCQl0b2tlbiA9IHN0cnRva19yKE5VTEwsICIg XHRcbiIsICZzYXZlcHRyKTsKKwkJCXJlcGxpY2FfaWR4Kys7CisJCX0KKworCX0KKwlQR19DQVRD SCgpOworCXsKKwkJLyogQ2xlYW51cCBpbiBjYXNlIG9mIGVycm9yICovCisJCWFsYXJtKDApOyAv KiBDYW5jZWwgYW55IHBlbmRpbmcgYWxhcm0gKi8KKwkJc2lnbmFsKFNJR0FMUk0sIFNJR19ERkwp OworCQlpZiAoZnApCisJCXsKKwkJCXBjbG9zZShmcCk7CisJCQlmcCA9IE5VTEw7CisJCX0KKwkJ aWYgKGxpbmUpCisJCQlwZnJlZShsaW5lKTsKKwkJaWYgKGNvbW1hbmQpCisJCQlwZnJlZShjb21t YW5kKTsKKwkJZXJyb3JfY29udGV4dF9zdGFjayA9IGNhbGxiYWNrLnByZXZpb3VzOworCQlQR19S RV9USFJPVygpOworCX0KKwlQR19FTkRfVFJZKCk7CisKKwkvKiBOb3JtYWwgY2xlYW51cCAqLwor CWlmIChsaW5lKQorCQlwZnJlZShsaW5lKTsKKworCWVycm9yX2NvbnRleHRfc3RhY2sgPSBjYWxs YmFjay5wcmV2aW91czsKK30KKworLyoKKyAqIGJ1aWxkX2luc3RhbmNlX2lkZW50aWZpZXJfZm9y X25vZGUKKyAqICBCdWlsZCBhbiBpZGVudGlmaWVyIHN0cmluZyBmb3IgYSBiYWNrZW5kIG5vZGUg Zm9yIHBhc3NpbmcgdG8gZXh0ZXJuYWwgY29tbWFuZHMuCisgKiAgRm9ybWF0OiAiPGhvc3RuYW1l Pjo8cG9ydD4iCisgKi8KK3N0YXRpYyBjaGFyICoKK2J1aWxkX2luc3RhbmNlX2lkZW50aWZpZXJf Zm9yX25vZGUoaW50IG5vZGVfaWQpCit7CisJQmFja2VuZEluZm8gKmJpID0gcG9vbF9nZXRfbm9k ZV9pbmZvKG5vZGVfaWQpOworCXNpemVfdCBobGVuOworCXNpemVfdCBvdXRfbGVuOworCWNoYXIg Km91dDsKKworCWlmICghYmkgfHwgYmktPmJhY2tlbmRfaG9zdG5hbWVbMF0gPT0gJ1wwJyB8fCBi aS0+YmFja2VuZF9wb3J0IDw9IDApCisJeworCQkvKiBGYWxsYmFjayBpZiBob3N0bmFtZSBvciBw b3J0IGlzIG5vdCBzZXQgKi8KKwkJb3V0ID0gcGFsbG9jKDMyKTsKKwkJc25wcmludGYob3V0LCAz MiwgInVua25vd25fbm9kZV8lZCIsIG5vZGVfaWQpOworCQlyZXR1cm4gb3V0OworCX0KKworCS8q IFVzZSBob3N0bmFtZTpwb3J0IGZvcm1hdCAqLworCWhsZW4gPSBzdHJsZW4oYmktPmJhY2tlbmRf aG9zdG5hbWUpOworCS8qIG1heCBwb3J0IGNoYXJzIH41LCBwbHVzIGNvbG9uIGFuZCBOVUwgKi8K KwlvdXRfbGVuID0gaGxlbiArIDEgKyA1ICsgMTsKKwlvdXQgPSBwYWxsb2Mob3V0X2xlbik7CisJ c25wcmludGYob3V0LCBvdXRfbGVuLCAiJXM6JWQiLCBiaS0+YmFja2VuZF9ob3N0bmFtZSwgYmkt PmJhY2tlbmRfcG9ydCk7CisJcmV0dXJuIG91dDsKK30KKwogc3RhdGljIHZvaWQKIENoZWNrUmVw bGljYXRpb25UaW1lTGFnRXJyb3JDYih2b2lkICphcmcpCiB7Ci0tIAoyLjUxLjEKCg== --000000000000cf07be064249cf55 Content-Type: application/octet-stream; name="0002-external-replication-delay-tests-and-docs.patch" Content-Disposition: attachment; filename="0002-external-replication-delay-tests-and-docs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhbvb1qz1 RnJvbSBjMzFjZTBlZDI1NjEwZGU5NWFhNTVjOTc1Mjk0OTVhMDkwNWYxMzhkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOYWRhdiBTaGF0eiA8bmFkYXZAdGFpbG9yYnJhbmRzLmNvbT4K RGF0ZTogTW9uLCAyNyBPY3QgMjAyNSAxNjoyMjo0MCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMi8y XSB0ZXN0K2RvYzogdGVzdHMgYW5kIGRvY3VtZW50YXRpb24gZm9yIGV4dGVybmFsCiByZXBsaWNh dGlvbiBkZWxheQoKVGVzdHM6Ci0gVmVyaWZ5IGNvbW1hbmQgcmVjZWl2ZXMgcmVwbGljYXMgb25s eSAocHJpbWFyeSBvbWl0dGVkKQotIFZlcmlmeSBob3N0OnBvcnQgaWRlbnRpZmllciBmb3JtYXQK LSBUZXN0IC0xIGhhbmRsaW5nIGZvciBkb3duIG5vZGVzCi0gVGVzdCBpbnRlZ2VyIGFuZCBmbG9h dCBkZWxheSB2YWx1ZXMKLSBUZXN0IHZhbGlkYXRpb24sIHRpbWVvdXRzLCBhbmQgZXJyb3IgaGFu ZGxpbmcKLSBUZXN0IHdyb25nIG91dHB1dCBjb3VudHMgYW5kIGVkZ2UgY2FzZXMKCkRvY3VtZW50 YXRpb246Ci0gUmVtb3ZlIHJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZSBlbnVtIGRvY3VtZW50YXRp b24KLSBEb2N1bWVudCByZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfY21kIHdpdGggcmVwbGljYS1v bmx5IHNlbWFudGljcwotIERvY3VtZW50IC0xIGZvciBkb3duIG5vZGVzCi0gUHJvdmlkZSBleGFt cGxlcyB3aXRoIGNvcnJlY3Qgb3V0cHV0IGZvcm1hdAotIFVwZGF0ZSByZXBsaWNhdGlvbl9kZWxh eV9zb3VyY2VfdGltZW91dCBkb2NzCi0tLQogZG9jL3NyYy9zZ21sL3N0cmVhbS1jaGVjay5zZ21s ICAgICAgICAgICAgICAgIHwgIDY4ICsrKwogLi4uLzA0MS5leHRlcm5hbF9yZXBsaWNhdGlvbl9k ZWxheS9SRUFETUUgICAgIHwgIDU5ICsrKwogLi4uLzA0MS5leHRlcm5hbF9yZXBsaWNhdGlvbl9k ZWxheS90ZXN0LnNoICAgIHwgMzk2ICsrKysrKysrKysrKysrKysrKwogLi4uL3Rlc3RfcGFyc2lu Zy5zaCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDU1ICsrKwogLi4uL3Rlc3RfdmFsaWRh dGlvbi5zaCAgICAgICAgICAgICAgICAgICAgICAgIHwgMzE4ICsrKysrKysrKysrKysrCiA1IGZp bGVzIGNoYW5nZWQsIDg5NiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvcmVncmVzc2lvbi90ZXN0cy8wNDEuZXh0ZXJuYWxfcmVwbGljYXRpb25fZGVsYXkvUkVBRE1F CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzc2lvbi90ZXN0cy8wNDEuZXh0ZXJu YWxfcmVwbGljYXRpb25fZGVsYXkvdGVzdC5zaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L3JlZ3Jlc3Npb24vdGVzdHMvMDQxLmV4dGVybmFsX3JlcGxpY2F0aW9uX2RlbGF5L3Rlc3RfcGFy c2luZy5zaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Npb24vdGVzdHMvMDQx LmV4dGVybmFsX3JlcGxpY2F0aW9uX2RlbGF5L3Rlc3RfdmFsaWRhdGlvbi5zaAoKZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9zdHJlYW0tY2hlY2suc2dtbCBiL2RvYy9zcmMvc2dtbC9zdHJlYW0t Y2hlY2suc2dtbAppbmRleCBkMmNhM2NhNDkuLmZjNDc5OTA4MCAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3N0cmVhbS1jaGVjay5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9zdHJlYW0tY2hlY2su c2dtbApAQCAtMzA5LDYgKzMwOSw3NCBAQCBHUkFOVCBwZ19tb25pdG9yIFRPIHNyX2NoZWNrX3Vz ZXI7CiAgICAgPC9saXN0aXRlbT4KICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgPHZhcmxpc3RlbnRy eSBpZD0iZ3VjLXJlcGxpY2F0aW9uLWRlbGF5LXNvdXJjZS1jbWQiIHhyZWZsYWJlbD0icmVwbGlj YXRpb25fZGVsYXlfc291cmNlX2NtZCI+CisgICA8dGVybT48dmFybmFtZT5yZXBsaWNhdGlvbl9k ZWxheV9zb3VyY2VfY21kPC92YXJuYW1lPiAoPHR5cGU+c3RyaW5nPC90eXBlPikKKyAgICA8aW5k ZXh0ZXJtPgorICAgICA8cHJpbWFyeT48dmFybmFtZT5yZXBsaWNhdGlvbl9kZWxheV9zb3VyY2Vf Y21kPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICA8L2lu ZGV4dGVybT4KKyAgIDwvdGVybT4KKyAgIDxsaXN0aXRlbT4KKyAgICA8cGFyYT4KKyAgICAgU3Bl Y2lmaWVzIGFuIGV4dGVybmFsIGNvbW1hbmQgdG8gcmV0cmlldmUgcmVwbGljYXRpb24gZGVsYXkg aW5mb3JtYXRpb24gZm9yIHJlcGxpY2Egbm9kZXMuCisgICAgIFdoZW4gdGhpcyBwYXJhbWV0ZXIg aXMgc2V0IGFuZCBub3QgZW1wdHksIDxwcm9kdWN0bmFtZT5QZ3Bvb2wtSUk8L3Byb2R1Y3RuYW1l PiB1c2VzIHRoZQorICAgICBleHRlcm5hbCBjb21tYW5kIGluc3RlYWQgb2YgYnVpbHQtaW4gZGF0 YWJhc2UgcXVlcmllcyB0byBvYnRhaW4gcmVwbGljYXRpb24gZGVsYXlzLgorICAgICBUaGUgY29t bWFuZCBpcyBleGVjdXRlZCBhcyB0aGUgPHByb2R1Y3RuYW1lPlBncG9vbC1JSTwvcHJvZHVjdG5h bWU+IHByb2Nlc3MgdXNlci4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgIFRoZSBjb21t YW5kIHJlY2VpdmVzIHJlcGxpY2Egbm9kZSBpZGVudGlmaWVycyBhcyBwb3NpdGlvbmFsIGFyZ3Vt ZW50cywgd2l0aCB0aGUgcHJpbWFyeQorICAgICBub2RlIG9taXR0ZWQuIEVhY2ggaWRlbnRpZmll ciBpcyBpbiB0aGUgZm9ybWF0IDxsaXRlcmFsPiZsdDtob3N0bmFtZSZndDs6Jmx0O3BvcnQmZ3Q7 PC9saXRlcmFsPiwKKyAgICAgZm9yIGV4YW1wbGUgPGxpdGVyYWw+c2VydmVyMTo1NDMyIHNlcnZl cjI6NTQzMjwvbGl0ZXJhbD4uIFRoZSBvcmRlciBtYXRjaGVzCisgICAgIDxwcm9kdWN0bmFtZT5Q Z3Bvb2wtSUk8L3Byb2R1Y3RuYW1lPidzIGJhY2tlbmQgb3JkZXIgKGV4Y2x1ZGluZyB0aGUgcHJp bWFyeSksIGFsbG93aW5nIHRoZQorICAgICBzY3JpcHQgdG8gY29ycmVsYXRlIGV4dGVybmFsIG1l dHJpY3MgKHN1Y2ggYXMgZnJvbSBBV1MgQ2xvdWRXYXRjaCBmb3IgQXVyb3JhKSB0byB0aGUgY29y cmVjdCBub2Rlcy4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgIFRoZSBjb21tYW5kIG11 c3Qgd3JpdGUgYSBzaW5nbGUgbGluZSB0byBzdGRvdXQgY29udGFpbmluZyBvbmUgd2hpdGVzcGFj ZS1zZXBhcmF0ZWQgZGVsYXkgdmFsdWUKKyAgICAgcGVyIHJlcGxpY2EsIGluIG1pbGxpc2Vjb25k cywgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIGFyZ3VtZW50cy4gVGhlIHByaW1hcnkgbm9kZSdz IGRlbGF5IGlzCisgICAgIGltcGxpY2l0bHkgemVybyBhbmQgc2hvdWxkIG5vdCBiZSBpbmNsdWRl ZCBpbiB0aGUgb3V0cHV0LiBEZWxheSB2YWx1ZXMgY2FuIGJlIGludGVnZXJzIG9yCisgICAgIGZs b2F0aW5nLXBvaW50IG51bWJlcnMuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBTcGVj aWFsIHZhbHVlOiA8bGl0ZXJhbD4tMTwvbGl0ZXJhbD4gaW5kaWNhdGVzIGEgcmVwbGljYSB0aGF0 IGlzIGRvd24gYnV0IG5vdCB5ZXQgZGV0ZWN0ZWQKKyAgICAgYnkgPHByb2R1Y3RuYW1lPlBncG9v bC1JSTwvcHJvZHVjdG5hbWU+J3MgaGVhbHRoIGNoZWNrcy4gPHByb2R1Y3RuYW1lPlBncG9vbC1J STwvcHJvZHVjdG5hbWU+CisgICAgIHdpbGwgbG9nIHRoaXMgY29uZGl0aW9uIGJ1dCByZWx5IG9u IGl0cyBvd24gaGVhbHRoLWNoZWNrIGxvZ2ljIHRvIGRlY2lkZSB3aGV0aGVyIHRvIHRyaWdnZXIK KyAgICAgZmFpbG92ZXI7IG5vIGZhaWxvdmVyIGlzIHRyaWdnZXJlZCBzb2xlbHkgYnkgcmVjZWl2 aW5nIDxsaXRlcmFsPi0xPC9saXRlcmFsPi4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAg IEV4YW1wbGUgZm9yIGEgMy1ub2RlIGNsdXN0ZXIgKDEgcHJpbWFyeSArIDIgcmVwbGljYXMpOiBp ZiB0aGUgY29tbWFuZCByZWNlaXZlcyBhcmd1bWVudHMKKyAgICAgPGxpdGVyYWw+c2VydmVyMTo1 NDMyIHNlcnZlcjI6NTQzMjwvbGl0ZXJhbD4sIGl0IHNob3VsZCBvdXRwdXQgPGxpdGVyYWw+IjI1 LjUgMTAwIjwvbGl0ZXJhbD4KKyAgICAgdG8gaW5kaWNhdGUgdGhlIGZpcnN0IHJlcGxpY2EgaGFz IDI1LjVtcyBkZWxheSBhbmQgdGhlIHNlY29uZCBoYXMgMTAwbXMgZGVsYXkuCisgICAgPC9wYXJh PgorICAgIDxwYXJhPgorICAgICBEZWZhdWx0IGlzIGVtcHR5ICh1c2UgYnVpbHQtaW4gcmVwbGlj YXRpb24gZGVsYXkgcXVlcmllcykuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBUaGlz IHBhcmFtZXRlciBjYW4gYmUgY2hhbmdlZCBieSByZWxvYWRpbmcgdGhlIDxwcm9kdWN0bmFtZT5Q Z3Bvb2wtSUk8Lz4gY29uZmlndXJhdGlvbnMuCisgICAgPC9wYXJhPgorICAgPC9saXN0aXRlbT4K KyAgPC92YXJsaXN0ZW50cnk+CisKKyAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLXJlcGxpY2F0aW9u LWRlbGF5LXNvdXJjZS10aW1lb3V0IiB4cmVmbGFiZWw9InJlcGxpY2F0aW9uX2RlbGF5X3NvdXJj ZV90aW1lb3V0Ij4KKyAgIDx0ZXJtPjx2YXJuYW1lPnJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV90 aW1lb3V0PC92YXJuYW1lPiAoPHR5cGU+aW50ZWdlcjwvdHlwZT4pCisgICAgPGluZGV4dGVybT4K KyAgICAgPHByaW1hcnk+PHZhcm5hbWU+cmVwbGljYXRpb25fZGVsYXlfc291cmNlX3RpbWVvdXQ8 L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgIDwvaW5kZXh0 ZXJtPgorICAgPC90ZXJtPgorICAgPGxpc3RpdGVtPgorICAgIDxwYXJhPgorICAgICBTcGVjaWZp ZXMgdGhlIHRpbWVvdXQgaW4gc2Vjb25kcyBmb3IgdGhlIGV4dGVybmFsIGNvbW1hbmQgc3BlY2lm aWVkIGJ5CisgICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1yZXBsaWNhdGlvbi1kZWxheS1zb3VyY2Ut Y21kIj4uCisgICAgIElmIHRoZSBjb21tYW5kIGRvZXMgbm90IGZpbmlzaCB3aXRoaW4gdGhlIHRp bWVvdXQsIDxwcm9kdWN0bmFtZT5QZ3Bvb2wtSUk8L3Byb2R1Y3RuYW1lPgorICAgICBsb2dzIGFu IGVycm9yIGFuZCBjb250aW51ZXMgdXNpbmcgdGhlIGJ1aWx0LWluIG1ldGhvZC4KKyAgICA8L3Bh cmE+CisgICAgPHBhcmE+CisgICAgIERlZmF1bHQgaXMgMTAgc2Vjb25kcy4gVmFsaWQgcmFuZ2Ug aXMgMS0zNjAwIHNlY29uZHMuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBUaGlzIHBh cmFtZXRlciBjYW4gYmUgY2hhbmdlZCBieSByZWxvYWRpbmcgdGhlIDxwcm9kdWN0bmFtZT5QZ3Bv b2wtSUk8Lz4gY29uZmlndXJhdGlvbnMuCisgICAgPC9wYXJhPgorICAgPC9saXN0aXRlbT4KKyAg PC92YXJsaXN0ZW50cnk+CisKICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWxvZy1zdGFuZGJ5LWRl bGF5IiB4cmVmbGFiZWw9ImxvZ19zdGFuZGJ5X2RlbGF5Ij4KICAgIDx0ZXJtPjx2YXJuYW1lPmxv Z19zdGFuZGJ5X2RlbGF5PC92YXJuYW1lPiAoPHR5cGU+ZW51bTwvdHlwZT4pCiAgICAgPGluZGV4 dGVybT4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Npb24vdGVzdHMvMDQxLmV4dGVybmFs X3JlcGxpY2F0aW9uX2RlbGF5L1JFQURNRSBiL3NyYy90ZXN0L3JlZ3Jlc3Npb24vdGVzdHMvMDQx LmV4dGVybmFsX3JlcGxpY2F0aW9uX2RlbGF5L1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAuLmI0ZGY1ZGE0MAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Npb24vdGVzdHMvMDQxLmV4dGVybmFsX3JlcGxpY2F0aW9uX2RlbGF5L1JFQURNRQpAQCAt MCwwICsxLDU5IEBACitFeHRlcm5hbCBSZXBsaWNhdGlvbiBEZWxheSBDb21tYW5kIFRlc3QKKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyB0ZXN0IHZlcmlm aWVzIHRoZSBleHRlcm5hbCBjb21tYW5kIHJlcGxpY2F0aW9uIGRlbGF5IHNvdXJjZSBmZWF0dXJl LgorCitUZXN0IENvdmVyYWdlOgorLSBFeHRlcm5hbCBjb21tYW5kIHJlY2VpdmVzIHJlcGxpY2Eg bm9kZSBpZGVudGlmaWVycyBvbmx5IChwcmltYXJ5IG9taXR0ZWQpCistIEluc3RhbmNlIGlkZW50 aWZpZXJzIGluIGhvc3Q6cG9ydCBmb3JtYXQKKy0gQmFzaWMgZXh0ZXJuYWwgY29tbWFuZCBleGVj dXRpb24gd2l0aCBpbnRlZ2VyIGFuZCBmbG9hdCBtaWxsaXNlY29uZCB2YWx1ZXMKKy0gRGVsYXkg dGhyZXNob2xkIGZ1bmN0aW9uYWxpdHkgd2l0aCBleHRlcm5hbCBjb21tYW5kcworLSBDb21tYW5k IGV4ZWN1dGlvbiBhcyBwZ3Bvb2wgcHJvY2VzcyB1c2VyIChubyBzdSB3cmFwcGVyKQorLSBFcnJv ciBoYW5kbGluZyBmb3IgbWlzc2luZy9pbnZhbGlkIGNvbW1hbmRzCistIENvbW1hbmQgZXhlY3V0 aW9uIGZhaWx1cmUgc2NlbmFyaW9zCistIENvbW1hbmQgdGltZW91dCBoYW5kbGluZyB3aXRoIGNv bmZpZ3VyYWJsZSB0aW1lb3V0IHZhbHVlcworLSBJbnB1dCB2YWxpZGF0aW9uIGZvciBpbnZhbGlk LCBuZWdhdGl2ZSAob3RoZXIgdGhhbiAtMSksIGFuZCBleHRyZW1lbHkgbGFyZ2UgZGVsYXkgdmFs dWVzCistIEhhbmRsaW5nIG9mIC0xIGZvciBkb3duIG5vZGVzIChsb2dnZWQgYnV0IG5vIGltbWVk aWF0ZSBmYWlsb3ZlcikKKy0gV3JvbmcgbnVtYmVyIG9mIG91dHB1dCB2YWx1ZXMgdmFsaWRhdGlv bgorLSBNdWx0aXBsZSAtMSB2YWx1ZXMgKG11bHRpcGxlIGRvd24gcmVwbGljYXMpCistIE1peGVk IHNjZW5hcmlvcyAoc29tZSByZXBsaWNhcyB1cCwgc29tZSBkb3duKQorLSBPdXRwdXQgdHJ1bmNh dGlvbiBkZXRlY3Rpb24KKworRmlsZXM6CistIHRlc3Quc2g6IE1haW4gdGVzdCBzY3JpcHQKKy0g dGVzdF9wYXJzaW5nLnNoOiBVbml0IHRlc3QgZm9yIHBhcnNpbmcgbG9naWMKKy0gdGVzdF92YWxp ZGF0aW9uLnNoOiBWYWxpZGF0aW9uIGFuZCBlZGdlIGNhc2UgdGVzdGluZworLSBSRUFETUU6IFRo aXMgZG9jdW1lbnRhdGlvbgorCitLZXkgQ2hhbmdlcyBmcm9tIE9yaWdpbmFsIFZlcnNpb246Cist IFByaW1hcnkgbm9kZSBpcyBvbWl0dGVkIGZyb20gY29tbWFuZCBhcmd1bWVudHMKKy0gQ29tbWFu ZCByZWNlaXZlcyBvbmx5IHJlcGxpY2EgaWRlbnRpZmllcnMKKy0gSW5zdGFuY2UgaWRlbnRpZmll cnMgYXJlIGluIGhvc3Q6cG9ydCBmb3JtYXQgKG5vdCBhcHBsaWNhdGlvbl9uYW1lKQorLSBPdXRw dXQgZm9ybWF0OiBvbmUgZGVsYXkgcGVyIHJlcGxpY2EgKG5vdCBwZXIgYWxsIG5vZGVzKQorLSAt MSB2YWx1ZSBpbmRpY2F0ZXMgZG93biByZXBsaWNhIHdpdGhvdXQgdHJpZ2dlcmluZyBmYWlsb3Zl cgorLSBGb3JtYXQgZXhhbXBsZTogIjI1IDEwMCIgZm9yIDIgcmVwbGljYXMgKDMtbm9kZSBjbHVz dGVyID0gMSBwcmltYXJ5ICsgMiByZXBsaWNhcykKKworVGhlIHRlc3QgY3JlYXRlcyB0ZW1wb3Jh cnkgY29tbWFuZCBzY3JpcHRzIHRoYXQgb3V0cHV0IGRlbGF5IHZhbHVlcyBpbiB0aGUgZm9ybWF0 OgorInJlcGxpY2ExX2RlbGF5IHJlcGxpY2EyX2RlbGF5IC4uLiIKKworV2hlcmUgZGVsYXlzIGFy ZSBpbiBtaWxsaXNlY29uZHMgYW5kIGNhbiBiZSBpbnRlZ2VyIG9yIGZsb2F0aW5nLXBvaW50IHZh bHVlcy4KK1NwZWNpYWwgdmFsdWUgLTEgaW5kaWNhdGVzIGEgcmVwbGljYSB0aGF0IGlzIGRvd24g YnV0IG5vdCB5ZXQgZGV0ZWN0ZWQgYnkgcGdwb29sLgorCitUZXN0IEVudmlyb25tZW50OgorLSBV c2VzIHN0cmVhbWluZyByZXBsaWNhdGlvbiBtb2RlIHdpdGggMyBub2RlcworLSBOb2RlIDAgaXMg cHJpbWFyeSAob21pdHRlZCBmcm9tIGNvbW1hbmQgYXJndW1lbnRzKQorLSBOb2RlcyAxIGFuZCAy IGFyZSByZXBsaWNhcyAoaW5jbHVkZWQgaW4gY29tbWFuZCBhcmd1bWVudHMpCistIENvbmZpZ3Vy ZXMgc3JfY2hlY2tfcGVyaW9kID0gMSBzZWNvbmQgZm9yIGZhc3RlciB0ZXN0aW5nCistIFRlc3Rz IHZhcmlvdXMgZGVsYXkgc2NlbmFyaW9zIGFuZCB0aHJlc2hvbGQgYmVoYXZpb3JzCisKK0V4cGVj dGVkIEJlaGF2aW9yOgorLSBFeHRlcm5hbCBjb21tYW5kcyByZWNlaXZlIHJlcGxpY2EgaWRlbnRp ZmllcnMgaW4gaG9zdDpwb3J0IGZvcm1hdAorLSBQcmltYXJ5IG5vZGUgaWRlbnRpZmllciBpcyBu ZXZlciBwYXNzZWQgdG8gY29tbWFuZAorLSBDb21tYW5kIG91dHB1dHMgb25lIGRlbGF5IHZhbHVl IHBlciByZXBsaWNhCistIC0xIHZhbHVlcyBhcmUgbG9nZ2VkIGJ1dCBkb24ndCB0cmlnZ2VyIGlt bWVkaWF0ZSBmYWlsb3ZlcgorLSBEZWxheSB2YWx1ZXMgYXJlIHBhcnNlZCBjb3JyZWN0bHkgKGJv dGggaW50IGFuZCBmbG9hdCkKKy0gVGhyZXNob2xkIGNvbXBhcmlzb25zIHdvcmsgcHJvcGVybHkK Ky0gRXJyb3IgY29uZGl0aW9ucyBhcmUgaGFuZGxlZCBncmFjZWZ1bGx5CistIENvbW1hbmRzIHRp bWVvdXQgYXBwcm9wcmlhdGVseSBiYXNlZCBvbiBjb25maWd1cmF0aW9uCistIFRpbWVvdXQgZXJy b3JzIHByb3ZpZGUgaGVscGZ1bCBtZXNzYWdlcyBhbmQgaGludHMKKy0gVGVzdHMgYXJlIHJlbGlh YmxlIHdpdGggcHJvcGVyIHdhaXQgbWVjaGFuaXNtcyBpbnN0ZWFkIG9mIGZpeGVkIHNsZWVwcwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzc2lvbi90ZXN0cy8wNDEuZXh0ZXJuYWxfcmVwbGlj YXRpb25fZGVsYXkvdGVzdC5zaCBiL3NyYy90ZXN0L3JlZ3Jlc3Npb24vdGVzdHMvMDQxLmV4dGVy bmFsX3JlcGxpY2F0aW9uX2RlbGF5L3Rlc3Quc2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwLi5mNTY3NWFmOTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz aW9uL3Rlc3RzLzA0MS5leHRlcm5hbF9yZXBsaWNhdGlvbl9kZWxheS90ZXN0LnNoCkBAIC0wLDAg KzEsMzk2IEBACisjIS91c3IvYmluL2VudiBiYXNoCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyB0ZXN0IHNjcmlw dCBmb3IgZXh0ZXJuYWwgY29tbWFuZCByZXBsaWNhdGlvbiBkZWxheSBzb3VyY2UKKyMKK3NvdXJj ZSAkVEVTVExJQlMKK1RFU1RESVI9dGVzdGRpcgorUEdfQ1RMPSRQR0JJTi9wZ19jdGwKK1BTUUw9 IiRQR0JJTi9wc3FsIC1YICIKKworcm0gLWZyICRURVNURElSCitta2RpciAkVEVTVERJUgorY2Qg JFRFU1RESVIKKworIyBjcmVhdGUgdGVzdCBlbnZpcm9ubWVudAorZWNobyAtbiAiY3JlYXRpbmcg dGVzdCBlbnZpcm9ubWVudC4uLiIKKyRQR1BPT0xfU0VUVVAgLW0gcyAtbiAzIHx8IGV4aXQgMQor ZWNobyAiZG9uZS4iCitzb3VyY2UgLi9iYXNocmMucG9ydHMKK2V4cG9ydCBQR1BPUlQ9JFBHUE9P TF9QT1JUCisKKyMgQ3JlYXRlIGV4dGVybmFsIGNvbW1hbmQgc2NyaXB0cyBmb3IgdGVzdGluZwor IyBOT1RFOiBDb21tYW5kcyBub3cgb25seSBvdXRwdXQgZGVsYXkgdmFsdWVzIGZvciBSRVBMSUNB UyAobm90IHByaW1hcnkpCitjYXQgPiBkZWxheV9jbWRfc3RhdGljLnNoIDw8ICdFT0YnCisjIS9i aW4vYmFzaAorIyBTdGF0aWMgZGVsYXkgdmFsdWVzIGZvciByZXBsaWNhczogbm9kZTE9MjVtcywg bm9kZTI9NTBtcyAobm9kZTAgaXMgcHJpbWFyeSwgbm90IGluY2x1ZGVkKQorZWNobyAiMjUgNTAi CitFT0YKK2NobW9kICt4IGRlbGF5X2NtZF9zdGF0aWMuc2gKKworY2F0ID4gZGVsYXlfY21kX2Zs b2F0LnNoIDw8ICdFT0YnCisjIS9iaW4vYmFzaAorIyBGbG9hdCBkZWxheSB2YWx1ZXMgZm9yIHJl cGxpY2FzOiBub2RlMT0yNS41bXMsIG5vZGUyPTEwMC43NW1zCitlY2hvICIyNS41IDEwMC43NSIK K0VPRgorY2htb2QgK3ggZGVsYXlfY21kX2Zsb2F0LnNoCisKK2NhdCA+IGRlbGF5X2NtZF9oaWdo LnNoIDw8ICdFT0YnCisjIS9iaW4vYmFzaAorIyBIaWdoIGRlbGF5IHZhbHVlcyB0byB0ZXN0IHRo cmVzaG9sZDogbm9kZTE9MjAwMG1zLCBub2RlMj0zMDAwbXMKK2VjaG8gIjIwMDAgMzAwMCIKK0VP RgorY2htb2QgK3ggZGVsYXlfY21kX2hpZ2guc2gKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCitlY2hvID09PSBUZXN0MDogRXh0ZXJuYWwgY29tbWFuZCByZWNlaXZlcyByZXBs aWNhIGlkZW50aWZpZXJzIG9ubHkgKHByaW1hcnkgb21pdHRlZCkgPT09CisjIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29tbWFuZCB0aGF0IGNhcHR1cmVzIGl0cyBhcmd1bWVu dHMgYW5kIG91dHB1dHMgdmFsaWQgZGVsYXlzIGZvciAyIHJlcGxpY2FzCitjYXQgPiBkZWxheV9j bWRfYXJncy5zaCA8PCAnRU9GJworIyEvYmluL2Jhc2gKK3ByaW50ZiAiJXMgIiAiJEAiID4gYXJn cy50eHQKK2VjaG8gIjI1IDUwIgorRU9GCitjaG1vZCAreCBkZWxheV9jbWRfYXJncy5zaAorCitl Y2hvICJyZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfY21kID0gJy4vZGVsYXlfY21kX2FyZ3Muc2gn IiA+PiBldGMvcGdwb29sLmNvbmYKK2VjaG8gInNyX2NoZWNrX3BlcmlvZCA9IDEiID4+IGV0Yy9w Z3Bvb2wuY29uZgorZWNobyAibG9nX21pbl9tZXNzYWdlcyA9ICdERUJVRzEnIiA+PiBldGMvcGdw b29sLmNvbmYKKworLi9zdGFydGFsbAord2FpdF9mb3JfcGdwb29sX3N0YXJ0dXAKKworZWNobyAi V2FpdGluZyBmb3Igc3JfY2hlY2sgdG8gcGFzcyBhcmdzLi4uIgorZm9yIGkgaW4gezEuLjEwfTsg ZG8KKyAgICBpZiBbIC1mIGFyZ3MudHh0IF07IHRoZW4KKyAgICAgICAgYnJlYWsKKyAgICBmaQor ICAgIHNsZWVwIDEKK2RvbmUKKworaWYgWyAhIC1mIGFyZ3MudHh0IF07IHRoZW4KKyAgICBlY2hv IGZhaWw6IGRpZCBub3QgY2FwdHVyZSBjb21tYW5kIGFyZ3VtZW50cworICAgIC4vc2h1dGRvd25h bGwKKyAgICBleGl0IDEKK2ZpCisKK0FSR1NfQ09OVEVOVD0kKGNhdCBhcmdzLnR4dCB8IHNlZCAn cy9bWzpzcGFjZTpdXSokLy8nKQorIyBTaG91bGQgcmVjZWl2ZSAyIHJlcGxpY2EgaWRlbnRpZmll cnMgaW4gaG9zdDpwb3J0IGZvcm1hdCAoc2VydmVyMToxMTAwMyBzZXJ2ZXIyOjExMDA0KQorIyBQ cmltYXJ5IChzZXJ2ZXIwOjExMDAyKSBzaG91bGQgYmUgb21pdHRlZAoraWYgISBlY2hvICIkQVJH U19DT05URU5UIiB8IGdyZXAgLXEgInNlcnZlcjE6MTEwMDMiOyB0aGVuCisgICAgZWNobyAiZmFp bDogZXhwZWN0ZWQgc2VydmVyMToxMTAwMyBpbiBhcmd1bWVudHMsIGdvdDogJyRBUkdTX0NPTlRF TlQnIgorICAgIC4vc2h1dGRvd25hbGwKKyAgICBleGl0IDEKK2ZpCitpZiAhIGVjaG8gIiRBUkdT X0NPTlRFTlQiIHwgZ3JlcCAtcSAic2VydmVyMjoxMTAwNCI7IHRoZW4KKyAgICBlY2hvICJmYWls OiBleHBlY3RlZCBzZXJ2ZXIyOjExMDA0IGluIGFyZ3VtZW50cywgZ290OiAnJEFSR1NfQ09OVEVO VCciCisgICAgLi9zaHV0ZG93bmFsbAorICAgIGV4aXQgMQorZmkKK2lmIGVjaG8gIiRBUkdTX0NP TlRFTlQiIHwgZ3JlcCAtcSAic2VydmVyMDoxMTAwMiI7IHRoZW4KKyAgICBlY2hvICJmYWlsOiBw cmltYXJ5IChzZXJ2ZXIwOjExMDAyKSBzaG91bGQgbm90IGJlIGluIGFyZ3VtZW50cywgZ290OiAn JEFSR1NfQ09OVEVOVCciCisgICAgLi9zaHV0ZG93bmFsbAorICAgIGV4aXQgMQorZmkKKworZWNo byBvazogYXJndW1lbnQgb3JkZXIgY29ycmVjdCAtIHJlcGxpY2FzIG9ubHksIHByaW1hcnkgb21p dHRlZCwgaG9zdDpwb3J0IGZvcm1hdAorLi9zaHV0ZG93bmFsbAorCisjIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KK2VjaG8gPT09IFRlc3QxOiBCYXNpYyBleHRlcm5hbCBjb21tYW5k IHdpdGggaW50ZWdlciBtaWxsaXNlY29uZCB2YWx1ZXMgPT09CisjIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KK2VjaG8gInJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9jbWQgPSAnLi9k ZWxheV9jbWRfc3RhdGljLnNoJyIgPj4gZXRjL3BncG9vbC5jb25mCitlY2hvICJzcl9jaGVja19w ZXJpb2QgPSAxIiA+PiBldGMvcGdwb29sLmNvbmYKK2VjaG8gImxvZ19zdGFuZGJ5X2RlbGF5ID0g J2Fsd2F5cyciID4+IGV0Yy9wZ3Bvb2wuY29uZgorZWNobyAibG9nX21pbl9tZXNzYWdlcyA9ICdE RUJVRzEnIiA+PiBldGMvcGdwb29sLmNvbmYKKworLi9zdGFydGFsbAord2FpdF9mb3JfcGdwb29s X3N0YXJ0dXAKKworJFBTUUwgdGVzdCA8PEVPRgorQ1JFQVRFIFRBQkxFIHQxKGkgSU5URUdFUik7 CitFT0YKKworIyBXYWl0IGZvciBzcl9jaGVjayB0byBydW4gYW5kIHBvcHVsYXRlIGRlbGF5IHZh bHVlcworIyBzcl9jaGVja19wZXJpb2QgaXMgMSBzZWNvbmQsIHNvIHdhaXQgYSBiaXQgbG9uZ2Vy IHRvIGVuc3VyZSBpdCBydW5zCitlY2hvICJXYWl0aW5nIGZvciBzcl9jaGVjayB0byBydW4uLi4i Citmb3IgaSBpbiB7MS4uMTB9OyBkbworICAgIGlmIGdyZXAgLXEgImV4ZWN1dGluZyByZXBsaWNh dGlvbiBkZWxheSBjb21tYW5kIiBsb2cvcGdwb29sLmxvZyAyPi9kZXYvbnVsbDsgdGhlbgorICAg ICAgICBlY2hvICJDb21tYW5kIGV4ZWN1dGVkIGFmdGVyICR7aX0gc2Vjb25kcyIKKyAgICAgICAg YnJlYWsKKyAgICBmaQorICAgIHNsZWVwIDEKK2RvbmUKKworJFBTUUwgdGVzdCA8PEVPRgorU0hP VyBQT09MX05PREVTOworRU9GCisKKyMgQ2hlY2sgdGhhdCBkZWxheSB2YWx1ZXMgYXJlIHBvcHVs YXRlZCBpbiB0aGUgbG9nCitncmVwICJleGVjdXRpbmcgcmVwbGljYXRpb24gZGVsYXkgY29tbWFu ZCIgbG9nL3BncG9vbC5sb2cgPi9kZXYvbnVsbCAyPiYxCitpZiBbICQ/ICE9IDAgXTt0aGVuCisg ICAgZWNobyBmYWlsOiBleHRlcm5hbCBjb21tYW5kIHdhcyBub3QgZXhlY3V0ZWQKKyAgICBlY2hv ICJMb2cgY29udGVudHM6IgorICAgIHRhaWwgLTIwIGxvZy9wZ3Bvb2wubG9nCisgICAgLi9zaHV0 ZG93bmFsbAorICAgIGV4aXQgMQorZmkKKworIyBWZXJpZnkgYWN0dWFsIGRlbGF5IHZhbHVlcyB3 ZXJlIHBhcnNlZAoraWYgISAkUFNRTCAtdCAtYyAiU0hPVyBQT09MX05PREVTIiB0ZXN0IHwgZ3Jl cCAtRSAiWzAtOV0rXC5bMC05XSsiID4vZGV2L251bGw7IHRoZW4KKyAgICBlY2hvICJXYXJuaW5n OiBObyBkZWxheSB2YWx1ZXMgZm91bmQgaW4gUE9PTF9OT0RFUyBvdXRwdXQiCitmaQorCisjIENo ZWNrIGZvciBkZWxheSBsb2cgbWVzc2FnZXMKK2dyZXAgIlJlcGxpY2F0aW9uIG9mIG5vZGUuKmV4 dGVybmFsIGNvbW1hbmQiIGxvZy9wZ3Bvb2wubG9nID4vZGV2L251bGwgMj4mMQoraWYgWyAkPyAh PSAwIF07dGhlbgorICAgIGVjaG8gZmFpbDogZXh0ZXJuYWwgY29tbWFuZCBkZWxheSBsb2dnaW5n IG5vdCBmb3VuZAorICAgIC4vc2h1dGRvd25hbGwKKyAgICBleGl0IDEKK2ZpCisKK2VjaG8gb2s6 IGJhc2ljIGV4dGVybmFsIGNvbW1hbmQgdGVzdCBzdWNjZWVkZWQKKy4vc2h1dGRvd25hbGwKKwor IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitlY2hvID09PSBUZXN0MjogRXh0ZXJu YWwgY29tbWFuZCB3aXRoIGZsb2F0aW5nLXBvaW50IG1pbGxpc2Vjb25kIHZhbHVlcyA9PT0KKyMg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBVcGRhdGUgY29uZmlndXJhdGlvbiB0 byB1c2UgZmxvYXQgY29tbWFuZAorc2VkIC1pLmJhayAic3xkZWxheV9jbWRfc3RhdGljLnNofGRl bGF5X2NtZF9mbG9hdC5zaHwiIGV0Yy9wZ3Bvb2wuY29uZgorCisuL3N0YXJ0YWxsCit3YWl0X2Zv cl9wZ3Bvb2xfc3RhcnR1cAorCisjIFdhaXQgZm9yIHNyX2NoZWNrIHRvIHJ1biB3aXRoIGZsb2F0 IHZhbHVlcworZWNobyAiV2FpdGluZyBmb3Igc3JfY2hlY2sgd2l0aCBmbG9hdCB2YWx1ZXMuLi4i Citmb3IgaSBpbiB7MS4uMTB9OyBkbworICAgIGlmIGdyZXAgLXEgImV4ZWN1dGluZyByZXBsaWNh dGlvbiBkZWxheSBjb21tYW5kLipkZWxheV9jbWRfZmxvYXQuc2giIGxvZy9wZ3Bvb2wubG9nIDI+ L2Rldi9udWxsOyB0aGVuCisgICAgICAgIGVjaG8gIkZsb2F0IGNvbW1hbmQgZXhlY3V0ZWQgYWZ0 ZXIgJHtpfSBzZWNvbmRzIgorICAgICAgICBicmVhaworICAgIGZpCisgICAgc2xlZXAgMQorZG9u ZQorCiskUFNRTCB0ZXN0IDw8RU9GCitTSE9XIFBPT0xfTk9ERVM7CitFT0YKKworIyBDaGVjayB0 aGF0IGZsb2F0IHZhbHVlcyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkKK2dyZXAgImV4ZWN1dGluZyBy ZXBsaWNhdGlvbiBkZWxheSBjb21tYW5kLipkZWxheV9jbWRfZmxvYXQuc2giIGxvZy9wZ3Bvb2wu bG9nID4vZGV2L251bGwgMj4mMQoraWYgWyAkPyAhPSAwIF07dGhlbgorICAgIGVjaG8gZmFpbDog ZmxvYXQgY29tbWFuZCB3YXMgbm90IGV4ZWN1dGVkCisgICAgLi9zaHV0ZG93bmFsbAorICAgIGV4 aXQgMQorZmkKKworZWNobyBvazogZmxvYXRpbmctcG9pbnQgdmFsdWVzIHRlc3Qgc3VjY2VlZGVk CisuL3NodXRkb3duYWxsCisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZWNo byA9PT0gVGVzdDM6IEV4dGVybmFsIGNvbW1hbmQgd2l0aCBkZWxheSB0aHJlc2hvbGQgPT09Cisj IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVXBkYXRlIGNvbmZpZ3VyYXRpb24g dG8gdXNlIGhpZ2ggZGVsYXkgY29tbWFuZCBhbmQgc2V0IHRocmVzaG9sZAorc2VkIC1pLmJhayAi c3xkZWxheV9jbWRfZmxvYXQuc2h8ZGVsYXlfY21kX2hpZ2guc2h8IiBldGMvcGdwb29sLmNvbmYK K2VjaG8gImRlbGF5X3RocmVzaG9sZF9ieV90aW1lID0gMTAwMCIgPj4gZXRjL3BncG9vbC5jb25m CitlY2hvICJiYWNrZW5kX3dlaWdodDAgPSAwIiA+PiBldGMvcGdwb29sLmNvbmYgICMgRm9yY2Ug cXVlcmllcyB0byBzdGFuZGJ5IG5vcm1hbGx5CitlY2hvICJiYWNrZW5kX3dlaWdodDIgPSAwIiA+ PiBldGMvcGdwb29sLmNvbmYgICMgT25seSB1c2Ugbm9kZSAxIGFzIHN0YW5kYnkKKworLi9zdGFy dGFsbAord2FpdF9mb3JfcGdwb29sX3N0YXJ0dXAKKworIyBXYWl0IGZvciBzcl9jaGVjayB0byBy dW4gYW5kIGRldGVjdCBoaWdoIGRlbGF5cworZWNobyAiV2FpdGluZyBmb3Igc3JfY2hlY2sgd2l0 aCBoaWdoIGRlbGF5IHZhbHVlcy4uLiIKK2ZvciBpIGluIHsxLi4xMH07IGRvCisgICAgaWYgZ3Jl cCAtcSAiZXhlY3V0aW5nIHJlcGxpY2F0aW9uIGRlbGF5IGNvbW1hbmQuKmRlbGF5X2NtZF9oaWdo LnNoIiBsb2cvcGdwb29sLmxvZyAyPi9kZXYvbnVsbDsgdGhlbgorICAgICAgICBlY2hvICJIaWdo IGRlbGF5IGNvbW1hbmQgZXhlY3V0ZWQgYWZ0ZXIgJHtpfSBzZWNvbmRzIgorICAgICAgICBicmVh aworICAgIGZpCisgICAgc2xlZXAgMQorZG9uZQorCiskUFNRTCB0ZXN0IDw8RU9GCitTRUxFQ1Qg KiBGUk9NIHQxIExJTUlUIDE7CitFT0YKKworIyBXaXRoIGhpZ2ggZGVsYXlzICgyMDAwbXMgPiAx MDAwbXMgdGhyZXNob2xkKSwgcXVlcnkgc2hvdWxkIGdvIHRvIHByaW1hcnkgKG5vZGUgMCkKK2dy ZXAgIlNFTEVDVCBcKiBGUk9NIHQxIExJTUlUIDEuKkRCIG5vZGUgaWQ6IDAiIGxvZy9wZ3Bvb2wu bG9nID4vZGV2L251bGwgMj4mMQoraWYgWyAkPyAhPSAwIF07dGhlbgorICAgIGVjaG8gZmFpbDog cXVlcnkgd2FzIG5vdCBzZW50IHRvIHByaW1hcnkgbm9kZSBkZXNwaXRlIGhpZ2ggZGVsYXkKKyAg ICAuL3NodXRkb3duYWxsCisgICAgZXhpdCAxCitmaQorCitlY2hvIG9rOiBkZWxheSB0aHJlc2hv bGQgdGVzdCBzdWNjZWVkZWQKKy4vc2h1dGRvd25hbGwKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCitlY2hvID09PSBUZXN0NDogRXh0ZXJuYWwgY29tbWFuZCBleGVjdXRpb24g YXMgcHJvY2VzcyB1c2VyID09PQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisj IFRlc3QgdGhhdCBjb21tYW5kIHJ1bnMgYXMgdGhlIGN1cnJlbnQgcGdwb29sIHByb2Nlc3MgdXNl cgorc2VkIC1pLmJhayAic3xkZWxheV9jbWRfaGlnaC5zaHxkZWxheV9jbWRfc3RhdGljLnNofCIg ZXRjL3BncG9vbC5jb25mCisKKy4vc3RhcnRhbGwKK3dhaXRfZm9yX3BncG9vbF9zdGFydHVwCisK KyMgV2FpdCBmb3Igc3JfY2hlY2sgdG8gcnVuCitlY2hvICJXYWl0aW5nIGZvciBzcl9jaGVjayB0 byBydW4gYXMgcHJvY2VzcyB1c2VyLi4uIgorZm9yIGkgaW4gezEuLjEwfTsgZG8KKyAgICBpZiBn cmVwIC1xICJleGVjdXRpbmcgcmVwbGljYXRpb24gZGVsYXkgY29tbWFuZC4qZGVsYXlfY21kX3N0 YXRpYy5zaCIgbG9nL3BncG9vbC5sb2cgMj4vZGV2L251bGw7IHRoZW4KKyAgICAgICAgZWNobyAi Q29tbWFuZCBleGVjdXRlZCBhcyBwcm9jZXNzIHVzZXIgYWZ0ZXIgJHtpfSBzZWNvbmRzIgorICAg ICAgICBicmVhaworICAgIGZpCisgICAgc2xlZXAgMQorZG9uZQorCisjIENoZWNrIHRoYXQgY29t bWFuZCB3YXMgZXhlY3V0ZWQgKHdpdGhvdXQgc3Ugd3JhcHBlcikKK2dyZXAgImV4ZWN1dGluZyBy ZXBsaWNhdGlvbiBkZWxheSBjb21tYW5kLipkZWxheV9jbWRfc3RhdGljLnNoIiBsb2cvcGdwb29s LmxvZyA+L2Rldi9udWxsIDI+JjEKK2lmIFsgJD8gIT0gMCBdO3RoZW4KKyAgICBlY2hvIGZhaWw6 IGNvbW1hbmQgd2FzIG5vdCBleGVjdXRlZCBhcyBwcm9jZXNzIHVzZXIKKyAgICAuL3NodXRkb3du YWxsCisgICAgZXhpdCAxCitmaQorCisjIFZlcmlmeSBubyBzdSBjb21tYW5kIHdhcyB1c2VkCitp ZiBncmVwIC1xICJleGVjdXRpbmcgcmVwbGljYXRpb24gZGVsYXkgY29tbWFuZC4qc3UuKiIgbG9n L3BncG9vbC5sb2cgMj4vZGV2L251bGw7IHRoZW4KKyAgICBlY2hvIGZhaWw6IGNvbW1hbmQgc2hv dWxkIG5vdCB1c2Ugc3Ugd3JhcHBlcgorICAgIC4vc2h1dGRvd25hbGwKKyAgICBleGl0IDEKK2Zp CisKK2VjaG8gb2s6IHByb2Nlc3MgdXNlciBleGVjdXRpb24gdGVzdCBzdWNjZWVkZWQKKy4vc2h1 dGRvd25hbGwKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitlY2hvID09PSBU ZXN0NTogRXJyb3IgaGFuZGxpbmcgLSBtaXNzaW5nIGNvbW1hbmQgPT09CisjIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGVzdCBlcnJvciBoYW5kbGluZyB3aGVuIGNvbW1hbmQg aXMgbm90IGNvbmZpZ3VyZWQKK3NlZCAtaS5iYWsgInN8cmVwbGljYXRpb25fZGVsYXlfc291cmNl X2NtZCA9ICcuL2RlbGF5X2NtZF9zdGF0aWMuc2gnfHJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9j bWQgPSAnJ3wiIGV0Yy9wZ3Bvb2wuY29uZgorCisuL3N0YXJ0YWxsCit3YWl0X2Zvcl9wZ3Bvb2xf c3RhcnR1cAorCisjIFdpdGggZW1wdHkgY29tbWFuZCwgc2hvdWxkIGZhbGwgYmFjayB0byBidWls dGluIG1ldGhvZAorIyBObyBzcGVjaWZpYyBlcnJvciBtZXNzYWdlIGV4cGVjdGVkIC0ganVzdCB2 ZXJpZnkgaXQgZG9lc24ndCBjcmFzaAorc2xlZXAgMworCitlY2hvIG9rOiBlbXB0eSBjb21tYW5k IHRlc3Qgc3VjY2VlZGVkIChmYWxsYmFjayB0byBidWlsdGluKQorLi9zaHV0ZG93bmFsbAorCisj IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2VjaG8gPT09IFRlc3Q2OiBFcnJvciBo YW5kbGluZyAtIGNvbW1hbmQgZXhlY3V0aW9uIGZhaWx1cmUgPT09CisjIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyMgVGVzdCBlcnJvciBoYW5kbGluZyB3aGVuIGNvbW1hbmQgZmFp bHMKK2VjaG8gInJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9jbWQgPSAnLi9ub25leGlzdGVudF9j b21tYW5kLnNoJyIgPj4gZXRjL3BncG9vbC5jb25mCisKKy4vc3RhcnRhbGwKK3dhaXRfZm9yX3Bn cG9vbF9zdGFydHVwCisKKyMgV2FpdCBmb3Igc3JfY2hlY2sgdG8gcnVuIHdpdGggZmFpbGluZyBj b21tYW5kCitlY2hvICJXYWl0aW5nIGZvciBzcl9jaGVjayB3aXRoIGZhaWxpbmcgY29tbWFuZC4u LiIKK2ZvciBpIGluIHsxLi41fTsgZG8KKyAgICBpZiBncmVwIC1xICJmYWlsZWQgdG8gZXhlY3V0 ZSByZXBsaWNhdGlvbiBkZWxheSBjb21tYW5kIiBsb2cvcGdwb29sLmxvZyAyPi9kZXYvbnVsbDsg dGhlbgorICAgICAgICBlY2hvICJDb21tYW5kIGZhaWx1cmUgZGV0ZWN0ZWQgYWZ0ZXIgJHtpfSBz ZWNvbmRzIgorICAgICAgICBicmVhaworICAgIGZpCisgICAgc2xlZXAgMQorZG9uZQorCisjIENo ZWNrIGZvciBlcnJvciBtZXNzYWdlIGFib3V0IGNvbW1hbmQgZXhlY3V0aW9uIGZhaWx1cmUKK2dy ZXAgImZhaWxlZCB0byBleGVjdXRlIHJlcGxpY2F0aW9uIGRlbGF5IGNvbW1hbmQiIGxvZy9wZ3Bv b2wubG9nID4vZGV2L251bGwgMj4mMQoraWYgWyAkPyAhPSAwIF07dGhlbgorICAgIGVjaG8gZmFp bDogY29tbWFuZCBleGVjdXRpb24gZmFpbHVyZSBub3QgZGV0ZWN0ZWQKKyAgICAuL3NodXRkb3du YWxsCisgICAgZXhpdCAxCitmaQorCitlY2hvIG9rOiBjb21tYW5kIGZhaWx1cmUgdGVzdCBzdWNj ZWVkZWQKKy4vc2h1dGRvd25hbGwKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CitlY2hvID09PSBUZXN0NzogQ29tbWFuZCB0aW1lb3V0IGhhbmRsaW5nID09PQorIyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENyZWF0ZSBhIGNvbW1hbmQgdGhhdCB0YWtlcyBs b25nZXIgdGhhbiB0aGUgdGltZW91dAorY2F0ID4gZGVsYXlfY21kX3Nsb3cuc2ggPDwgJ0VPRicK KyMhL2Jpbi9iYXNoCisjIFNsb3cgY29tbWFuZCB0aGF0IHRha2VzIDE1IHNlY29uZHMgKGxvbmdl ciB0aGFuIGRlZmF1bHQgMTBzIHRpbWVvdXQpCitzbGVlcCAxNQorZWNobyAiMjUgNTAiCitFT0YK K2NobW9kICt4IGRlbGF5X2NtZF9zbG93LnNoCisKKyMgU2V0IGEgc2hvcnQgdGltZW91dCBhbmQg dXNlIHRoZSBzbG93IGNvbW1hbmQKK3NlZCAtaS5iYWsgInN8cmVwbGljYXRpb25fZGVsYXlfc291 cmNlX2NtZCA9ICcuL25vbmV4aXN0ZW50X2NvbW1hbmQuc2gnfHJlcGxpY2F0aW9uX2RlbGF5X3Nv dXJjZV9jbWQgPSAnLi9kZWxheV9jbWRfc2xvdy5zaCd8IiBldGMvcGdwb29sLmNvbmYKK2VjaG8g InJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV90aW1lb3V0ID0gMyIgPj4gZXRjL3BncG9vbC5jb25m CisKKy4vc3RhcnRhbGwKK3dhaXRfZm9yX3BncG9vbF9zdGFydHVwCisKKyMgV2FpdCBmb3Igc3Jf Y2hlY2sgdG8gcnVuIGFuZCB0aW1lb3V0CitlY2hvICJXYWl0aW5nIGZvciBjb21tYW5kIHRpbWVv dXQuLi4iCitmb3IgaSBpbiB7MS4uMTV9OyBkbworICAgIGlmIGdyZXAgLXEgInJlcGxpY2F0aW9u IGRlbGF5IGNvbW1hbmQgdGltZWQgb3V0IiBsb2cvcGdwb29sLmxvZyAyPi9kZXYvbnVsbDsgdGhl bgorICAgICAgICBlY2hvICJDb21tYW5kIHRpbWVvdXQgZGV0ZWN0ZWQgYWZ0ZXIgJHtpfSBzZWNv bmRzIgorICAgICAgICBicmVhaworICAgIGZpCisgICAgc2xlZXAgMQorZG9uZQorCisjIENoZWNr IGZvciB0aW1lb3V0IGVycm9yIG1lc3NhZ2UKK2dyZXAgInJlcGxpY2F0aW9uIGRlbGF5IGNvbW1h bmQgdGltZWQgb3V0IGFmdGVyIDMgc2Vjb25kcyIgbG9nL3BncG9vbC5sb2cgPi9kZXYvbnVsbCAy PiYxCitpZiBbICQ/ICE9IDAgXTt0aGVuCisgICAgZWNobyBmYWlsOiBjb21tYW5kIHRpbWVvdXQg bm90IGRldGVjdGVkCisgICAgLi9zaHV0ZG93bmFsbAorICAgIGV4aXQgMQorZmkKKworZWNobyBv azogY29tbWFuZCB0aW1lb3V0IHRlc3Qgc3VjY2VlZGVkCisuL3NodXRkb3duYWxsCisKKyMgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZWNobyA9PT0gVGVzdDg6IEhhbmRsaW5nIG9m IC0xIGZvciBkb3duIG5vZGVzID09PQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisjIENyZWF0ZSBhIGNvbW1hbmQgdGhhdCByZXR1cm5zIC0xIGZvciBvbmUgcmVwbGljYQorY2F0 ID4gZGVsYXlfY21kX3dpdGhfZG93bl9ub2RlLnNoIDw8ICdFT0YnCisjIS9iaW4vYmFzaAorIyBS ZXR1cm4gLTEgZm9yIGZpcnN0IHJlcGxpY2EgKGluZGljYXRpbmcgaXQncyBkb3duKSwgbm9ybWFs IHZhbHVlIGZvciBzZWNvbmQKK2VjaG8gIi0xIDUwIgorRU9GCitjaG1vZCAreCBkZWxheV9jbWRf d2l0aF9kb3duX25vZGUuc2gKKworIyBSZXNldCBjb25maWcKK3JtIC1mIGV0Yy9wZ3Bvb2wuY29u Zi5iYWsKK3NlZCAtaS5iYWsgInN8ZGVsYXlfY21kX3Nsb3cuc2h8ZGVsYXlfY21kX3dpdGhfZG93 bl9ub2RlLnNofCIgZXRjL3BncG9vbC5jb25mCitzZWQgLWkuYmFrICJzfHJlcGxpY2F0aW9uX2Rl bGF5X3NvdXJjZV90aW1lb3V0ID0gM3xyZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfdGltZW91dCA9 IDEwfCIgZXRjL3BncG9vbC5jb25mCisKKy4vc3RhcnRhbGwKK3dhaXRfZm9yX3BncG9vbF9zdGFy dHVwCisKKyMgV2FpdCBmb3Igc3JfY2hlY2sgdG8gcHJvY2VzcyAtMSB2YWx1ZQorZWNobyAiV2Fp dGluZyBmb3Igc3JfY2hlY2sgdG8gcHJvY2VzcyAtMSB2YWx1ZS4uLiIKK2ZvciBpIGluIHsxLi4x MH07IGRvCisgICAgaWYgZ3JlcCAtcSAibm9kZS4qcmVwb3J0ZWQgYXMgZG93biBieSBleHRlcm5h bCBjb21tYW5kLipkZWxheSAtMSIgbG9nL3BncG9vbC5sb2cgMj4vZGV2L251bGw7IHRoZW4KKyAg ICAgICAgZWNobyAiLTEgaGFuZGxpbmcgZGV0ZWN0ZWQgYWZ0ZXIgJHtpfSBzZWNvbmRzIgorICAg ICAgICBicmVhaworICAgIGZpCisgICAgc2xlZXAgMQorZG9uZQorCisjIENoZWNrIGZvciAtMSBs b2dnaW5nIG1lc3NhZ2UKK2dyZXAgIm5vZGUuKnJlcG9ydGVkIGFzIGRvd24gYnkgZXh0ZXJuYWwg Y29tbWFuZC4qZGVsYXkgLTEuKnJlbHlpbmcgb24gaGVhbHRoIGNoZWNrIiBsb2cvcGdwb29sLmxv ZyA+L2Rldi9udWxsIDI+JjEKK2lmIFsgJD8gIT0gMCBdO3RoZW4KKyAgICBlY2hvIGZhaWw6IC0x IGhhbmRsaW5nIG1lc3NhZ2Ugbm90IGZvdW5kCisgICAgLi9zaHV0ZG93bmFsbAorICAgIGV4aXQg MQorZmkKKworIyBWZXJpZnkgdGhhdCBwZ3Bvb2wgZGlkbid0IGNyYXNoIG9yIHRyaWdnZXIgZmFp bG92ZXIganVzdCBmcm9tIC0xCitpZiBncmVwIC1xICJmYWlsb3ZlciIgbG9nL3BncG9vbC5sb2cg Mj4vZGV2L251bGw7IHRoZW4KKyAgICBlY2hvICJmYWlsOiAtMSBzaG91bGQgbm90IHRyaWdnZXIg aW1tZWRpYXRlIGZhaWxvdmVyIgorICAgIC4vc2h1dGRvd25hbGwKKyAgICBleGl0IDEKK2ZpCisK K2VjaG8gb2s6IC0xIGhhbmRsaW5nIHRlc3Qgc3VjY2VlZGVkCisuL3NodXRkb3duYWxsCisKK2Vj aG8gIkFsbCBleHRlcm5hbCByZXBsaWNhdGlvbiBkZWxheSB0ZXN0cyBwYXNzZWQhIgorZXhpdCAw CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzaW9uL3Rlc3RzLzA0MS5leHRlcm5hbF9yZXBs aWNhdGlvbl9kZWxheS90ZXN0X3BhcnNpbmcuc2ggYi9zcmMvdGVzdC9yZWdyZXNzaW9uL3Rlc3Rz LzA0MS5leHRlcm5hbF9yZXBsaWNhdGlvbl9kZWxheS90ZXN0X3BhcnNpbmcuc2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5kMDI0Y2U1NTkKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzaW9uL3Rlc3RzLzA0MS5leHRlcm5hbF9yZXBsaWNhdGlvbl9kZWxh eS90ZXN0X3BhcnNpbmcuc2gKQEAgLTAsMCArMSw1NSBAQAorIyEvYmluL2Jhc2gKKyMtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisjIFVuaXQgdGVzdCBmb3IgZXh0ZXJuYWwgY29tbWFuZCBwYXJzaW5nIGxvZ2ljCisjIFRo aXMgdGVzdHMgdGhlIHBhcnNpbmcgd2l0aG91dCBuZWVkaW5nIGEgZnVsbCBwZ3Bvb2wgc2V0dXAK KyMKKworZWNobyAiPT09IFRlc3RpbmcgZXh0ZXJuYWwgY29tbWFuZCBvdXRwdXQgcGFyc2luZyA9 PT0iCisKKyMgVGVzdCAxOiBJbnRlZ2VyIHZhbHVlcworZWNobyAiVGVzdCAxOiBJbnRlZ2VyIG1p bGxpc2Vjb25kIHZhbHVlcyIKK2VjaG8gIjAgMjUgNTAiID4gdGVzdF9vdXRwdXQudHh0CitlY2hv ICJFeHBlY3RlZDogMG1zLCAyNW1zLCA1MG1zIgorZWNobyAiT3V0cHV0OiAkKGNhdCB0ZXN0X291 dHB1dC50eHQpIgorZWNobyAiIgorCisjIFRlc3QgMjogRmxvYXQgdmFsdWVzCitlY2hvICJUZXN0 IDI6IEZsb2F0aW5nLXBvaW50IG1pbGxpc2Vjb25kIHZhbHVlcyIKK2VjaG8gIjAgMjUuNSAxMDAu NzUiID4gdGVzdF9vdXRwdXRfZmxvYXQudHh0CitlY2hvICJFeHBlY3RlZDogMG1zLCAyNS41bXMs IDEwMC43NW1zIgorZWNobyAiT3V0cHV0OiAkKGNhdCB0ZXN0X291dHB1dF9mbG9hdC50eHQpIgor ZWNobyAiIgorCisjIFRlc3QgMzogSGlnaCBwcmVjaXNpb24gZmxvYXQgdmFsdWVzCitlY2hvICJU ZXN0IDM6IEhpZ2ggcHJlY2lzaW9uIHZhbHVlcyIKK2VjaG8gIjAgMC4wMDEgOTk5Ljk5OSIgPiB0 ZXN0X291dHB1dF9wcmVjaXNpb24udHh0CitlY2hvICJFeHBlY3RlZDogMG1zLCAwLjAwMW1zLCA5 OTkuOTk5bXMiCitlY2hvICJPdXRwdXQ6ICQoY2F0IHRlc3Rfb3V0cHV0X3ByZWNpc2lvbi50eHQp IgorZWNobyAiIgorCisjIFRlc3QgNDogRWRnZSBjYXNlIC0gemVybyB2YWx1ZXMKK2VjaG8gIlRl c3QgNDogQWxsIHplcm8gdmFsdWVzIgorZWNobyAiMCAwIDAiID4gdGVzdF9vdXRwdXRfemVyb3Mu dHh0CitlY2hvICJFeHBlY3RlZDogMG1zLCAwbXMsIDBtcyIKK2VjaG8gIk91dHB1dDogJChjYXQg dGVzdF9vdXRwdXRfemVyb3MudHh0KSIKK2VjaG8gIiIKKworIyBUZXN0IDU6IEVkZ2UgY2FzZSAt IGxhcmdlIHZhbHVlcworZWNobyAiVGVzdCA1OiBMYXJnZSBkZWxheSB2YWx1ZXMiCitlY2hvICIw IDUwMDAgMTAwMDAiID4gdGVzdF9vdXRwdXRfbGFyZ2UudHh0CitlY2hvICJFeHBlY3RlZDogMG1z LCA1MDAwbXMsIDEwMDAwbXMiCitlY2hvICJPdXRwdXQ6ICQoY2F0IHRlc3Rfb3V0cHV0X2xhcmdl LnR4dCkiCitlY2hvICIiCisKKyMgVGVzdCA2OiBNaXhlZCBpbnRlZ2VyIGFuZCBmbG9hdCB2YWx1 ZXMKK2VjaG8gIlRlc3QgNjogTWl4ZWQgaW50ZWdlciBhbmQgZmxvYXQgdmFsdWVzIgorZWNobyAi MCAyNSA1MC41IiA+IHRlc3Rfb3V0cHV0X21peGVkLnR4dAorZWNobyAiRXhwZWN0ZWQ6IDBtcywg MjVtcywgNTAuNW1zIgorZWNobyAiT3V0cHV0OiAkKGNhdCB0ZXN0X291dHB1dF9taXhlZC50eHQp IgorZWNobyAiIgorCisjIENsZWFudXAKK3JtIC1mIHRlc3Rfb3V0cHV0XyoudHh0CisKK2VjaG8g IkFsbCBwYXJzaW5nIHRlc3RzIGNvbXBsZXRlZC4gVGhlc2Ugb3V0cHV0cyBzaG91bGQgYmUgcGFy c2VhYmxlIGJ5IHRoZSBleHRlcm5hbCBjb21tYW5kIGZlYXR1cmUuIgorCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzaW9uL3Rlc3RzLzA0MS5leHRlcm5hbF9yZXBsaWNhdGlvbl9kZWxheS90 ZXN0X3ZhbGlkYXRpb24uc2ggYi9zcmMvdGVzdC9yZWdyZXNzaW9uL3Rlc3RzLzA0MS5leHRlcm5h bF9yZXBsaWNhdGlvbl9kZWxheS90ZXN0X3ZhbGlkYXRpb24uc2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwLi4yZDk2YzkxYTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9yZWdyZXNzaW9uL3Rlc3RzLzA0MS5leHRlcm5hbF9yZXBsaWNhdGlvbl9kZWxheS90ZXN0X3Zh bGlkYXRpb24uc2gKQEAgLTAsMCArMSwzMTggQEAKKyMhL3Vzci9iaW4vZW52IGJhc2gKKyMtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisjIHRlc3Qgc2NyaXB0IGZvciBleHRlcm5hbCBjb21tYW5kIHZhbGlkYXRpb24gYW5k IGVkZ2UgY2FzZXMKKyMKK3NvdXJjZSAkVEVTVExJQlMKK1RFU1RESVI9dGVzdGRpcl92YWxpZGF0 aW9uCitQR19DVEw9JFBHQklOL3BnX2N0bAorUFNRTD0iJFBHQklOL3BzcWwgLVggIgorCitybSAt ZnIgJFRFU1RESVIKK21rZGlyICRURVNURElSCitjZCAkVEVTVERJUgorCisjIGNyZWF0ZSB0ZXN0 IGVudmlyb25tZW50CitlY2hvIC1uICJjcmVhdGluZyB0ZXN0IGVudmlyb25tZW50Li4uIgorJFBH UE9PTF9TRVRVUCAtbSBzIC1uIDMgfHwgZXhpdCAxCitlY2hvICJkb25lLiIKK3NvdXJjZSAuL2Jh c2hyYy5wb3J0cworZXhwb3J0IFBHUE9SVD0kUEdQT09MX1BPUlQKKworIyBDcmVhdGUgdGVzdCBj b21tYW5kIHNjcmlwdHMKKyMgTk9URTogQWxsIGNvbW1hbmRzIG91dHB1dCB2YWx1ZXMgZm9yIFJF UExJQ0FTIG9ubHkgKHByaW1hcnkgb21pdHRlZCkKK2NhdCA+IGRlbGF5X2NtZF92YWxpZGF0aW9u LnNoIDw8ICdFT0YnCisjIS9iaW4vYmFzaAorIyBUZXN0IHZhbGlkYXRpb246IG91dHB1dCB3aXRo IGludmFsaWQgdmFsdWVzIGZvciAyIHJlcGxpY2FzCitlY2hvICJpbnZhbGlkX3ZhbHVlIDUwLjUi CitFT0YKK2NobW9kICt4IGRlbGF5X2NtZF92YWxpZGF0aW9uLnNoCisKK2NhdCA+IGRlbGF5X2Nt ZF9uZWdhdGl2ZS5zaCA8PCAnRU9GJworIyEvYmluL2Jhc2gKKyMgVGVzdCBuZWdhdGl2ZSB2YWx1 ZXMgKG90aGVyIHRoYW4gLTEpCitlY2hvICItMjUgNTAiCitFT0YKK2NobW9kICt4IGRlbGF5X2Nt ZF9uZWdhdGl2ZS5zaAorCitjYXQgPiBkZWxheV9jbWRfbGFyZ2Uuc2ggPDwgJ0VPRicKKyMhL2Jp bi9iYXNoCisjIFRlc3QgZXh0cmVtZWx5IGxhcmdlIHZhbHVlcworZWNobyAiOTk5OTk5OSA1MCIK K0VPRgorY2htb2QgK3ggZGVsYXlfY21kX2xhcmdlLnNoCisKK2NhdCA+IGRlbGF5X2NtZF93cm9u Z19jb3VudC5zaCA8PCAnRU9GJworIyEvYmluL2Jhc2gKKyMgVGVzdCB3cm9uZyBudW1iZXIgb2Yg dmFsdWVzIChvbmx5IDEgaW5zdGVhZCBvZiAyIGZvciAyIHJlcGxpY2FzKQorZWNobyAiMjUiCitF T0YKK2NobW9kICt4IGRlbGF5X2NtZF93cm9uZ19jb3VudC5zaAorCisjIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KK2VjaG8gPT09IFRlc3QxOiBWYWxpZGF0aW9uIG9mIGludmFsaWQg ZGVsYXkgdmFsdWVzID09PQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitlY2hv ICJyZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfY21kID0gJy4vZGVsYXlfY21kX3ZhbGlkYXRpb24u c2gnIiA+PiBldGMvcGdwb29sLmNvbmYKK2VjaG8gInNyX2NoZWNrX3BlcmlvZCA9IDEiID4+IGV0 Yy9wZ3Bvb2wuY29uZgorZWNobyAibG9nX3N0YW5kYnlfZGVsYXkgPSAnYWx3YXlzJyIgPj4gZXRj L3BncG9vbC5jb25mCitlY2hvICJsb2dfbWluX21lc3NhZ2VzID0gJ0RFQlVHMSciID4+IGV0Yy9w Z3Bvb2wuY29uZgorCisuL3N0YXJ0YWxsCit3YWl0X2Zvcl9wZ3Bvb2xfc3RhcnR1cAorCiskUFNR TCB0ZXN0IDw8RU9GCitDUkVBVEUgVEFCTEUgdDEoaSBJTlRFR0VSKTsKK0VPRgorCisjIFdhaXQg Zm9yIHNyX2NoZWNrIHRvIHJ1bgorZWNobyAiV2FpdGluZyBmb3IgdmFsaWRhdGlvbiB0ZXN0Li4u IgorZm9yIGkgaW4gezEuLjEwfTsgZG8KKyAgICBpZiBncmVwIC1xICJpbnZhbGlkIGRlbGF5IHZh bHVlIiBsb2cvcGdwb29sLmxvZyAyPi9kZXYvbnVsbDsgdGhlbgorICAgICAgICBlY2hvICJWYWxp ZGF0aW9uIGVycm9yIGRldGVjdGVkIGFmdGVyICR7aX0gc2Vjb25kcyIKKyAgICAgICAgYnJlYWsK KyAgICBmaQorICAgIHNsZWVwIDEKK2RvbmUKKworIyBDaGVjayBmb3IgdmFsaWRhdGlvbiB3YXJu aW5nCitncmVwICJpbnZhbGlkIGRlbGF5IHZhbHVlICdpbnZhbGlkX3ZhbHVlJyBmb3Igbm9kZSIg bG9nL3BncG9vbC5sb2cgPi9kZXYvbnVsbCAyPiYxCitpZiBbICQ/ICE9IDAgXTt0aGVuCisgICAg ZWNobyBmYWlsOiB2YWxpZGF0aW9uIHdhcm5pbmcgbm90IGZvdW5kCisgICAgLi9zaHV0ZG93bmFs bAorICAgIGV4aXQgMQorZmkKKworZWNobyBvazogaW52YWxpZCB2YWx1ZSB2YWxpZGF0aW9uIHRl c3Qgc3VjY2VlZGVkCisuL3NodXRkb3duYWxsCisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorZWNobyA9PT0gVGVzdDI6IE5lZ2F0aXZlIGRlbGF5IHZhbHVlcyAob3RoZXIgdGhh biAtMSkgPT09CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3NlZCAtaS5iYWsg InN8ZGVsYXlfY21kX3ZhbGlkYXRpb24uc2h8ZGVsYXlfY21kX25lZ2F0aXZlLnNofCIgZXRjL3Bn cG9vbC5jb25mCisKKy4vc3RhcnRhbGwKK3dhaXRfZm9yX3BncG9vbF9zdGFydHVwCisKKyMgV2Fp dCBmb3Igc3JfY2hlY2sgdG8gcnVuCitlY2hvICJXYWl0aW5nIGZvciBuZWdhdGl2ZSB2YWx1ZSB0 ZXN0Li4uIgorZm9yIGkgaW4gezEuLjEwfTsgZG8KKyAgICBpZiBncmVwIC1xICJuZWdhdGl2ZSBk ZWxheSB2YWx1ZS4qb3RoZXIgdGhhbiAtMSIgbG9nL3BncG9vbC5sb2cgMj4vZGV2L251bGw7IHRo ZW4KKyAgICAgICAgZWNobyAiTmVnYXRpdmUgdmFsdWUgd2FybmluZyBkZXRlY3RlZCBhZnRlciAk e2l9IHNlY29uZHMiCisgICAgICAgIGJyZWFrCisgICAgZmkKKyAgICBzbGVlcCAxCitkb25lCisK KyMgQ2hlY2sgZm9yIG5lZ2F0aXZlIHZhbHVlIHdhcm5pbmcKK2dyZXAgIm5lZ2F0aXZlIGRlbGF5 IHZhbHVlLipvdGhlciB0aGFuIC0xLip0cmVhdGluZyBhcyAwIiBsb2cvcGdwb29sLmxvZyA+L2Rl di9udWxsIDI+JjEKK2lmIFsgJD8gIT0gMCBdO3RoZW4KKyAgICBlY2hvIGZhaWw6IG5lZ2F0aXZl IHZhbHVlIHdhcm5pbmcgbm90IGZvdW5kCisgICAgLi9zaHV0ZG93bmFsbAorICAgIGV4aXQgMQor ZmkKKworZWNobyBvazogbmVnYXRpdmUgdmFsdWUgdmFsaWRhdGlvbiB0ZXN0IHN1Y2NlZWRlZAor Li9zaHV0ZG93bmFsbAorCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2VjaG8g PT09IFRlc3QzOiBFeHRyZW1lbHkgbGFyZ2UgZGVsYXkgdmFsdWVzID09PQorIyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzZWQgLWkuYmFrICJzfGRlbGF5X2NtZF9uZWdhdGl2ZS5z aHxkZWxheV9jbWRfbGFyZ2Uuc2h8IiBldGMvcGdwb29sLmNvbmYKKworLi9zdGFydGFsbAord2Fp dF9mb3JfcGdwb29sX3N0YXJ0dXAKKworIyBXYWl0IGZvciBzcl9jaGVjayB0byBydW4KK2VjaG8g IldhaXRpbmcgZm9yIGxhcmdlIHZhbHVlIHRlc3QuLi4iCitmb3IgaSBpbiB7MS4uMTB9OyBkbwor ICAgIGlmIGdyZXAgLXEgImV4dHJlbWVseSBsYXJnZSBkZWxheSB2YWx1ZSIgbG9nL3BncG9vbC5s b2cgMj4vZGV2L251bGw7IHRoZW4KKyAgICAgICAgZWNobyAiTGFyZ2UgdmFsdWUgd2FybmluZyBk ZXRlY3RlZCBhZnRlciAke2l9IHNlY29uZHMiCisgICAgICAgIGJyZWFrCisgICAgZmkKKyAgICBz bGVlcCAxCitkb25lCisKKyMgQ2hlY2sgZm9yIGxhcmdlIHZhbHVlIHdhcm5pbmcKK2dyZXAgImV4 dHJlbWVseSBsYXJnZSBkZWxheSB2YWx1ZS4qZm9yIG5vZGUiIGxvZy9wZ3Bvb2wubG9nID4vZGV2 L251bGwgMj4mMQoraWYgWyAkPyAhPSAwIF07dGhlbgorICAgIGVjaG8gZmFpbDogbGFyZ2UgdmFs dWUgd2FybmluZyBub3QgZm91bmQKKyAgICAuL3NodXRkb3duYWxsCisgICAgZXhpdCAxCitmaQor CitlY2hvIG9rOiBsYXJnZSB2YWx1ZSB2YWxpZGF0aW9uIHRlc3Qgc3VjY2VlZGVkCisuL3NodXRk b3duYWxsCisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZWNobyA9PT0gVGVz dDQ6IFdyb25nIG51bWJlciBvZiBvdXRwdXQgdmFsdWVzID09PQorIyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCitzZWQgLWkuYmFrICJzfGRlbGF5X2NtZF9sYXJnZS5zaHxkZWxheV9j bWRfd3JvbmdfY291bnQuc2h8IiBldGMvcGdwb29sLmNvbmYKKworLi9zdGFydGFsbAord2FpdF9m b3JfcGdwb29sX3N0YXJ0dXAKKworIyBXYWl0IGZvciBzcl9jaGVjayB0byBydW4KK2VjaG8gIldh aXRpbmcgZm9yIHdyb25nIGNvdW50IHRlc3QuLi4iCitmb3IgaSBpbiB7MS4uMTB9OyBkbworICAg IGlmIGdyZXAgLXEgInJldHVybmVkLip2YWx1ZXMsIGV4cGVjdGVkLipyZXBsaWNhIiBsb2cvcGdw b29sLmxvZyAyPi9kZXYvbnVsbDsgdGhlbgorICAgICAgICBlY2hvICJXcm9uZyBjb3VudCB3YXJu aW5nIGRldGVjdGVkIGFmdGVyICR7aX0gc2Vjb25kcyIKKyAgICAgICAgYnJlYWsKKyAgICBmaQor ICAgIHNsZWVwIDEKK2RvbmUKKworIyBDaGVjayBmb3Igd3JvbmcgY291bnQgd2FybmluZworZ3Jl cCAicmV0dXJuZWQuKnZhbHVlcywgZXhwZWN0ZWQuKnJlcGxpY2EuKkNvbW1hbmQgc2hvdWxkIG91 dHB1dCBvbmUgZGVsYXkgdmFsdWUgcGVyIHJlcGxpY2EiIGxvZy9wZ3Bvb2wubG9nID4vZGV2L251 bGwgMj4mMQoraWYgWyAkPyAhPSAwIF07dGhlbgorICAgIGVjaG8gZmFpbDogd3JvbmcgY291bnQg dmFsaWRhdGlvbiB0ZXN0IG5vdCBmb3VuZAorICAgIC4vc2h1dGRvd25hbGwKKyAgICBleGl0IDEK K2ZpCisKK2VjaG8gb2s6IHdyb25nIGNvdW50IHZhbGlkYXRpb24gdGVzdCBzdWNjZWVkZWQKKy4v c2h1dGRvd25hbGwKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitlY2hvID09 PSBUZXN0NTogTXVsdGlwbGUgLTEgdmFsdWVzID09PQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCitjYXQgPiBkZWxheV9jbWRfbXVsdGlfZG93bi5zaCA8PCAnRU9GJworIyEvYmlu L2Jhc2gKKyMgVGVzdCBtdWx0aXBsZSByZXBsaWNhcyBkb3duCitlY2hvICItMSAtMSIKK0VPRgor Y2htb2QgK3ggZGVsYXlfY21kX211bHRpX2Rvd24uc2gKKworc2VkIC1pLmJhayAic3xkZWxheV9j bWRfd3JvbmdfY291bnQuc2h8ZGVsYXlfY21kX211bHRpX2Rvd24uc2h8IiBldGMvcGdwb29sLmNv bmYKKworLi9zdGFydGFsbAord2FpdF9mb3JfcGdwb29sX3N0YXJ0dXAKKworIyBXYWl0IGZvciBz cl9jaGVjayB0byBydW4KK2VjaG8gIldhaXRpbmcgZm9yIG11bHRpLWRvd24gdGVzdC4uLiIKK2Zv ciBpIGluIHsxLi4xMH07IGRvCisgICAgaWYgZ3JlcCAtcSAibm9kZS4qcmVwb3J0ZWQgYXMgZG93 biBieSBleHRlcm5hbCBjb21tYW5kIiBsb2cvcGdwb29sLmxvZyAyPi9kZXYvbnVsbDsgdGhlbgor ICAgICAgICBlY2hvICJNdWx0aXBsZSBkb3duIG5vZGVzIGRldGVjdGVkIGFmdGVyICR7aX0gc2Vj b25kcyIKKyAgICAgICAgYnJlYWsKKyAgICBmaQorICAgIHNsZWVwIDEKK2RvbmUKKworIyBDaGVj ayBmb3IgbXVsdGlwbGUgLTEgaGFuZGxpbmcKK0RPV05fQ09VTlQ9JChncmVwIC1jICJub2RlLipy ZXBvcnRlZCBhcyBkb3duIGJ5IGV4dGVybmFsIGNvbW1hbmQuKmRlbGF5IC0xIiBsb2cvcGdwb29s LmxvZykKK2lmIFsgIiRET1dOX0NPVU5UIiAtbHQgMiBdOyB0aGVuCisgICAgZWNobyBmYWlsOiBl eHBlY3RlZCAyIGRvd24gbm9kZSBtZXNzYWdlcywgZm91bmQgJERPV05fQ09VTlQKKyAgICAuL3No dXRkb3duYWxsCisgICAgZXhpdCAxCitmaQorCitlY2hvIG9rOiBtdWx0aXBsZSAtMSBoYW5kbGlu ZyB0ZXN0IHN1Y2NlZWRlZAorLi9zaHV0ZG93bmFsbAorCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KK2VjaG8gPT09IFRlc3Q2OiBDb21tYW5kIHRpbWVvdXQgd2l0aCBkaWZmZXJl bnQgdGltZW91dCB2YWx1ZXMgPT09CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K K2NhdCA+IGRlbGF5X2NtZF90aW1lb3V0LnNoIDw8ICdFT0YnCisjIS9iaW4vYmFzaAorIyBDb21t YW5kIHRoYXQgdGFrZXMgNSBzZWNvbmRzCitzbGVlcCA1CitlY2hvICIyNSA1MCIKK0VPRgorY2ht b2QgK3ggZGVsYXlfY21kX3RpbWVvdXQuc2gKKworIyBUZXN0IHdpdGggdGltZW91dCBzaG9ydGVy IHRoYW4gY29tbWFuZCBkdXJhdGlvbgorc2VkIC1pLmJhayAic3xkZWxheV9jbWRfbXVsdGlfZG93 bi5zaHxkZWxheV9jbWRfdGltZW91dC5zaHwiIGV0Yy9wZ3Bvb2wuY29uZgorZWNobyAicmVwbGlj YXRpb25fZGVsYXlfc291cmNlX3RpbWVvdXQgPSAyIiA+PiBldGMvcGdwb29sLmNvbmYKKworLi9z dGFydGFsbAord2FpdF9mb3JfcGdwb29sX3N0YXJ0dXAKKworIyBXYWl0IGZvciB0aW1lb3V0Citl Y2hvICJXYWl0aW5nIGZvciB0aW1lb3V0IHRlc3QgKDJzIHRpbWVvdXQsIDVzIGNvbW1hbmQpLi4u IgorZm9yIGkgaW4gezEuLjEwfTsgZG8KKyAgICBpZiBncmVwIC1xICJyZXBsaWNhdGlvbiBkZWxh eSBjb21tYW5kIHRpbWVkIG91dCBhZnRlciAyIHNlY29uZHMiIGxvZy9wZ3Bvb2wubG9nIDI+L2Rl di9udWxsOyB0aGVuCisgICAgICAgIGVjaG8gIlRpbWVvdXQgZGV0ZWN0ZWQgYWZ0ZXIgJHtpfSBz ZWNvbmRzIgorICAgICAgICBicmVhaworICAgIGZpCisgICAgc2xlZXAgMQorZG9uZQorCisjIENo ZWNrIGZvciB0aW1lb3V0IG1lc3NhZ2UKK2dyZXAgInJlcGxpY2F0aW9uIGRlbGF5IGNvbW1hbmQg dGltZWQgb3V0IGFmdGVyIDIgc2Vjb25kcyIgbG9nL3BncG9vbC5sb2cgPi9kZXYvbnVsbCAyPiYx CitpZiBbICQ/ICE9IDAgXTt0aGVuCisgICAgZWNobyBmYWlsOiB0aW1lb3V0IG5vdCBkZXRlY3Rl ZAorICAgIC4vc2h1dGRvd25hbGwKKyAgICBleGl0IDEKK2ZpCisKK2VjaG8gb2s6IHRpbWVvdXQg dGVzdCBzdWNjZWVkZWQKKy4vc2h1dGRvd25hbGwKKworIyBUZXN0IHdpdGggdGltZW91dCBsb25n ZXIgdGhhbiBjb21tYW5kIGR1cmF0aW9uCitzZWQgLWkuYmFrICJzfHJlcGxpY2F0aW9uX2RlbGF5 X3NvdXJjZV90aW1lb3V0ID0gMnxyZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfdGltZW91dCA9IDEw fCIgZXRjL3BncG9vbC5jb25mCisKKy4vc3RhcnRhbGwKK3dhaXRfZm9yX3BncG9vbF9zdGFydHVw CisKKyMgV2FpdCBmb3Igc3VjY2Vzc2Z1bCBleGVjdXRpb24KK2VjaG8gIldhaXRpbmcgZm9yIHN1 Y2Nlc3NmdWwgZXhlY3V0aW9uICgxMHMgdGltZW91dCwgNXMgY29tbWFuZCkuLi4iCitmb3IgaSBp biB7MS4uMTV9OyBkbworICAgIGlmIGdyZXAgLXEgImV4ZWN1dGluZyByZXBsaWNhdGlvbiBkZWxh eSBjb21tYW5kLipkZWxheV9jbWRfdGltZW91dC5zaCIgbG9nL3BncG9vbC5sb2cgMj4vZGV2L251 bGw7IHRoZW4KKyAgICAgICAgZWNobyAiQ29tbWFuZCBleGVjdXRlZCBzdWNjZXNzZnVsbHkgYWZ0 ZXIgJHtpfSBzZWNvbmRzIgorICAgICAgICBicmVhaworICAgIGZpCisgICAgc2xlZXAgMQorZG9u ZQorCisjIFNob3VsZCBub3QgdGltZW91dCB0aGlzIHRpbWUKK2lmIGdyZXAgLXEgInJlcGxpY2F0 aW9uIGRlbGF5IGNvbW1hbmQgdGltZWQgb3V0IiBsb2cvcGdwb29sLmxvZyAyPi9kZXYvbnVsbDsg dGhlbgorICAgIGVjaG8gZmFpbDogY29tbWFuZCBzaG91bGQgbm90IGhhdmUgdGltZWQgb3V0IHdp dGggMTBzIHRpbWVvdXQKKyAgICAuL3NodXRkb3duYWxsCisgICAgZXhpdCAxCitmaQorCitlY2hv IG9rOiBleHRlbmRlZCB0aW1lb3V0IHRlc3Qgc3VjY2VlZGVkCisuL3NodXRkb3duYWxsCisKKyMg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZWNobyA9PT0gVGVzdDc6IE1peCBvZiB2 YWxpZCBkZWxheXMgYW5kIC0xID09PQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CitjYXQgPiBkZWxheV9jbWRfbWl4ZWQuc2ggPDwgJ0VPRicKKyMhL2Jpbi9iYXNoCisjIE9uZSBy ZXBsaWNhIHVwICgyNW1zKSwgb25lIGRvd24gKC0xKQorZWNobyAiMjUgLTEiCitFT0YKK2NobW9k ICt4IGRlbGF5X2NtZF9taXhlZC5zaAorCitzZWQgLWkuYmFrICJzfGRlbGF5X2NtZF90aW1lb3V0 LnNofGRlbGF5X2NtZF9taXhlZC5zaHwiIGV0Yy9wZ3Bvb2wuY29uZgorCisuL3N0YXJ0YWxsCit3 YWl0X2Zvcl9wZ3Bvb2xfc3RhcnR1cAorCisjIFdhaXQgZm9yIHNyX2NoZWNrCitlY2hvICJXYWl0 aW5nIGZvciBtaXhlZCBkZWxheSB0ZXN0Li4uIgorZm9yIGkgaW4gezEuLjEwfTsgZG8KKyAgICBp ZiBncmVwIC1xICJub2RlLipyZXBvcnRlZCBhcyBkb3duIGJ5IGV4dGVybmFsIGNvbW1hbmQiIGxv Zy9wZ3Bvb2wubG9nIDI+L2Rldi9udWxsOyB0aGVuCisgICAgICAgIGVjaG8gIk1peGVkIGRlbGF5 IGhhbmRsaW5nIGRldGVjdGVkIGFmdGVyICR7aX0gc2Vjb25kcyIKKyAgICAgICAgYnJlYWsKKyAg ICBmaQorICAgIHNsZWVwIDEKK2RvbmUKKworIyBTaG91bGQgbG9nIG9uZSAtMSBhbmQgcHJvY2Vz cyBvbmUgbm9ybWFsIGRlbGF5CitncmVwICJub2RlLipyZXBvcnRlZCBhcyBkb3duIGJ5IGV4dGVy bmFsIGNvbW1hbmQuKmRlbGF5IC0xIiBsb2cvcGdwb29sLmxvZyA+L2Rldi9udWxsIDI+JjEKK2lm IFsgJD8gIT0gMCBdO3RoZW4KKyAgICBlY2hvIGZhaWw6IC0xIG5vdCBsb2dnZWQKKyAgICAuL3No dXRkb3duYWxsCisgICAgZXhpdCAxCitmaQorCisjIFNob3VsZCBhbHNvIGxvZyB0aGUgbm9ybWFs IHJlcGxpY2EgZGVsYXkKK2dyZXAgIlJlcGxpY2F0aW9uIG9mIG5vZGUuKmV4dGVybmFsIGNvbW1h bmQiIGxvZy9wZ3Bvb2wubG9nID4vZGV2L251bGwgMj4mMQoraWYgWyAkPyAhPSAwIF07dGhlbgor ICAgIGVjaG8gIk5vdGU6IE5vcm1hbCByZXBsaWNhIGRlbGF5IGxvZ2dpbmcgbWF5IG5vdCBiZSB2 aXNpYmxlIHdpdGggbG9nX3N0YW5kYnlfZGVsYXkgc2V0dGluZ3MiCitmaQorCitlY2hvIG9rOiBt aXhlZCBkZWxheSBoYW5kbGluZyB0ZXN0IHN1Y2NlZWRlZAorLi9zaHV0ZG93bmFsbAorCitlY2hv ICJBbGwgdmFsaWRhdGlvbiB0ZXN0cyBwYXNzZWQhIgorZXhpdCAwCi0tIAoyLjUxLjEKCg== --000000000000cf07be064249cf55--