From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from xry111.site (xry111.site [89.208.246.23]) by sourceware.org (Postfix) with ESMTPS id F2E483858C60 for ; Sat, 27 Jan 2024 11:12:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org F2E483858C60 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=xry111.site Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=xry111.site ARC-Filter: OpenARC Filter v1.0.0 sourceware.org F2E483858C60 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=89.208.246.23 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706353935; cv=none; b=qn3QnnQ6L2qMh30aqAtA7ptEVMwCKXNXfmo8S7aw2+GH2zuAmMl+4ucLZAJaokQ45i+yR2vKitsGx0QeO8rihghHTkajZSZhfHR4rbnSROM9HcaUtzUujYKSEOsWj/ZJMCVWOqz7+Afv/oBrnTYa0Rxrs4ufaRlRJOKEpH08+uw= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706353935; c=relaxed/simple; bh=v6CdqLh9xb/iQ+L9gMpdzP8X5VjZQSEg/1359u4bxEI=; h=DKIM-Signature:Message-ID:Subject:From:To:Date:MIME-Version; b=AMtpgHj8nxmN/0f4ffzT0tZSmGwDP/TrrTRAt+DRLIFAYG7c0WDjy/VTXzywsagZcjMCrhKRStaO8Pd6VjqqdfEa0WP9nnpxPZZjzNLFloH/PYrTL/jaa4RBi2L6O6EuBVxAq5A7MtWHM11pftHv6pR5W7DBvIWYY75oigpme1c= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=xry111.site; s=default; t=1706353929; bh=v6CdqLh9xb/iQ+L9gMpdzP8X5VjZQSEg/1359u4bxEI=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=aMAbZ+dwgvi5sacDVGfCd8EEud9NkC3Rdi/Yb7BuvGCBBOjoVPdnHzTS1eFTY3SnU svNNA+WKv/F7N58vffXWR50jjBzUgprpJibU5xasIzQA1J0Td+7CXy2b10T8n83wUV QcScxvZe0ZBIsnfxUigLD9LI4rb5IEhy5qrMEnMY= Received: from [IPv6:2408:8471:1104:2f7:db:cb83:e9fb:64f1] (unknown [IPv6:2408:8471:1104:2f7:db:cb83:e9fb:64f1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature ECDSA (P-384) server-digest SHA384) (Client did not present a certificate) (Authenticated sender: xry111@xry111.site) by xry111.site (Postfix) with ESMTPSA id C1E9666C24; Sat, 27 Jan 2024 06:12:05 -0500 (EST) Message-ID: <3db91947279b4a62cf9fd0393c319ce758aa04f0.camel@xry111.site> Subject: Re: [PATCH v4 0/4] When cmodel=extreme, add macro support and only support macros. From: Xi Ruoyao To: chenglulu , gcc-patches@gcc.gnu.org Cc: i@xen0n.name, xuchenghua@loongson.cn Date: Sat, 27 Jan 2024 19:11:56 +0800 In-Reply-To: References: <20240126073745.13252-1-chenglulu@loongson.cn> <8031fd77ea3209ccac6c085ac5692f92f4291534.camel@xry111.site> <4f79de603056628da59234b89ed3878b0472087e.camel@xry111.site> Autocrypt: addr=xry111@xry111.site; prefer-encrypt=mutual; keydata=mDMEYnkdPhYJKwYBBAHaRw8BAQdAsY+HvJs3EVKpwIu2gN89cQT/pnrbQtlvd6Yfq7egugi0HlhpIFJ1b3lhbyA8eHJ5MTExQHhyeTExMS5zaXRlPoiTBBMWCgA7FiEEkdD1djAfkk197dzorKrSDhnnEOMFAmJ5HT4CGwMFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQrKrSDhnnEOPHFgD8D9vUToTd1MF5bng9uPJq5y3DfpcxDp+LD3joA3U2TmwA/jZtN9xLH7CGDHeClKZK/ZYELotWfJsqRcthOIGjsdAPuDgEYnkdPhIKKwYBBAGXVQEFAQEHQG+HnNiPZseiBkzYBHwq/nN638o0NPwgYwH70wlKMZhRAwEIB4h4BBgWCgAgFiEEkdD1djAfkk197dzorKrSDhnnEOMFAmJ5HT4CGwwACgkQrKrSDhnnEOPjXgD/euD64cxwqDIqckUaisT3VCst11RcnO5iRHm6meNIwj0BALLmWplyi7beKrOlqKfuZtCLbiAPywGfCNg8LOTt4iMD Content-Type: multipart/mixed; boundary="=-Z7S1tQCm3hvWhOrRrhlM" User-Agent: Evolution 3.50.3 MIME-Version: 1.0 X-Spam-Status: No, score=-6.7 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,KAM_STOCKGEN,LIKELY_SPAM_FROM,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --=-Z7S1tQCm3hvWhOrRrhlM Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, 2024-01-27 at 18:02 +0800, Xi Ruoyao wrote: > On Sat, 2024-01-27 at 11:15 +0800, chenglulu wrote: > >=20 > > =E5=9C=A8 2024/1/26 =E4=B8=8B=E5=8D=886:57, Xi Ruoyao =E5=86=99=E9=81= =93: > > > On Fri, 2024-01-26 at 16:59 +0800, chenglulu wrote: > > > > =E5=9C=A8 2024/1/26 =E4=B8=8B=E5=8D=884:49, Xi Ruoyao =E5=86=99=E9= =81=93: > > > > > On Fri, 2024-01-26 at 15:37 +0800, Lulu Cheng wrote: > > > > > > v3 -> v4: > > > > > > =C2=A0=C2=A0=C2=A0 1. Add macro support for TLS symbols > > > > > > =C2=A0=C2=A0=C2=A0 2. Added support for loading __get_tls_addr = symbol address using call36. > > > > > > =C2=A0=C2=A0=C2=A0 3. Merge template got_load_tls_{ld/gd/le/ie}= . > > > > > > =C2=A0=C2=A0=C2=A0 4. Enable explicit reloc for extreme TLS GD/= LD with -mexplicit-relocs=3Dauto. > > > > > I've rebased and attached the patch to fix the bad split in -mexp= licit- > > > > > relocs=3D{always,auto} -mcmodel=3Dextreme on top of this series.= =C2=A0 I've not > > > > > tested it seriously though (only tested the added and modified te= st > > > > > cases). > > > > >=20 > > > > OK, I'll test the spec for correctness. > > > I suppose this still won't work yet because Binutils is not fully fix= ed. > > > GAS has been changed not to emit R_LARCH_RELAX for "la.tls.ie a0, t0, > > > foo", but ld is still not checking if an R_LARCH_RELAX is after > > > R_LARCH_TLS_IE_PC_{HI20,LO12} properly.=C2=A0 Thus an invalid "partia= l" TLS > > > transition can still happen. > > >=20 > >=20 > > The following situations are not handled in the patch: > >=20 > > diff --git a/gcc/config/loongarch/loongarch.cc=20 > > b/gcc/config/loongarch/loongarch.cc > >=20 > > index 3fab4b64453..6336a9f696f 100644 > > --- a/gcc/config/loongarch/loongarch.cc > > +++ b/gcc/config/loongarch/loongarch.cc > > @@ -7472,7 +7472,13 @@ loongarch_output_mi_thunk (FILE *file, tree=20 > > thunk_fndecl ATTRIBUTE_UNUSED, > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 { > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (TARGET_CMODEL_EXTREME) > > =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=C2=A0=C2=A0=C2=A0 emit_insn (gen_movdi_= symbolic_off64 (temp1, fnaddr, temp2)); > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (la_opt_explicit_r= elocs !=3D EXPLICIT_RELOCS_NONE) > > +=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=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 emit_insn (gen_la_pcrel64_two_parts (temp1, temp2, fnaddr)); > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 emit_move_insn (temp1, gen_rtx_PLUS (Pmode, temp1, temp2)); > > +=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=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 else > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 emit_insn= (gen_movdi_symbolic_off64 (temp1, fnaddr, temp2)); It looks like this part is unreachable: with -mcmodel=3Dextreme use_sibcall_p will never be true. So cleaned up this part and fixed an ERROR in the added test: diff --git a/gcc/config/loongarch/loongarch.cc b/gcc/config/loongarch/loong= arch.cc index 3a97ba61362..7b8c85a1606 100644 --- a/gcc/config/loongarch/loongarch.cc +++ b/gcc/config/loongarch/loongarch.cc @@ -7481,21 +7481,24 @@ loongarch_output_mi_thunk (FILE *file, tree thunk_f= ndecl ATTRIBUTE_UNUSED, allowed, otherwise load the address into a register first. */ if (use_sibcall_p) { - if (TARGET_CMODEL_EXTREME) - { - emit_insn (gen_movdi_symbolic_off64 (temp1, fnaddr, temp2)); - insn =3D emit_call_insn (gen_sibcall_internal (temp1, const0_rtx)); - } - else - insn =3D emit_call_insn (gen_sibcall_internal (fnaddr, const0_rtx)); + /* If TARGET_CMODEL_EXTREME, we cannot do a direct jump at all + and const_call_insn_operand should have returned false. */ + gcc_assert (!TARGET_CMODEL_EXTREME); + + insn =3D emit_call_insn (gen_sibcall_internal (fnaddr, const0_rtx)); SIBLING_CALL_P (insn) =3D 1; } else { - if (TARGET_CMODEL_EXTREME) + if (!TARGET_CMODEL_EXTREME) + loongarch_emit_move (temp1, fnaddr); + else if (la_opt_explicit_relocs =3D=3D EXPLICIT_RELOCS_NONE) emit_insn (gen_movdi_symbolic_off64 (temp1, fnaddr, temp2)); else - loongarch_emit_move (temp1, fnaddr); + { + emit_insn (gen_la_pcrel64_two_parts (temp1, temp2, fnaddr)); + emit_move_insn (temp1, gen_rtx_PLUS (Pmode, temp1, temp2)); + } =20 emit_jump_insn (gen_indirect_jump (temp1)); } diff --git a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-extreme-aut= o-tls-ld-gd.c b/gcc/testsuite/gcc.target/loongarch/explicit-relocs-extreme-= auto-tls-ld-gd.c index 27baf4886d6..35bd4570a9e 100644 --- a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-extreme-auto-tls-l= d-gd.c +++ b/gcc/testsuite/gcc.target/loongarch/explicit-relocs-extreme-auto-tls-l= d-gd.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fPIC -mexplicit-relocs=3Dauto -mcmodel=3Dextreme -fn= o-plt" } */ -/* { dg-final { scan-assembler-not "la.tls.[lg]d" { target tls_native } } = } */ +/* { dg-final { scan-assembler-not "la.tls.\[lg\]d" { target tls_native } = } } */ =20 #include "./explicit-relocs-auto-tls-ld-gd.c" And added 3 tests for output_mi_thunk. The updated patch attached, now running regression test. --=20 Xi Ruoyao School of Aerospace Science and Technology, Xidian University --=-Z7S1tQCm3hvWhOrRrhlM Content-Disposition: attachment; filename*0=0001-LoongArch-Don-t-split-the-instructions-containing-re.pat; filename*1=ch Content-Type: text/x-patch; name="0001-LoongArch-Don-t-split-the-instructions-containing-re.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBlY2JhZGYzNDEyMzRmY2VjMmUwYzE2ZTZiMjQzNWQxMTdiZjgwNDQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBYaSBSdW95YW8gPHhyeTExMUB4cnkxMTEuc2l0ZT4KRGF0ZTog RnJpLCA1IEphbiAyMDI0IDE4OjQwOjA2ICswODAwClN1YmplY3Q6IFtQQVRDSCA1LzRdIExvb25n QXJjaDogRG9uJ3Qgc3BsaXQgdGhlIGluc3RydWN0aW9ucyBjb250YWluaW5nIHJlbG9jcyBmb3IK IGV4dHJlbWUgY29kZSBtb2RlbAoKVGhlIEFCSSBtYW5kYXRlcyB0aGUgcGNhbGF1MTJpL2FkZGku ZC9sdTMyaS5kL2x1NTJpLmQgaW5zdHJ1Y3Rpb25zIGZvcgphZGRyZXNzaW5nIGEgc3ltYm9sIHRv IGJlIGFkamFjZW50LiAgU28gbW9kZWwgdGhlbSBhcyAib25lIGxhcmdlCmluc3RydWN0aW9uIiwg aS5lLiBkZWZpbmVfaW5zbiwgd2l0aCB0d28gb3V0cHV0IHJlZ2lzdGVycy4gIFRoZSByZWFsCmFk ZHJlc3MgaXMgdGhlIHN1bSBvZiB0aGVzZSB0d28gcmVnaXN0ZXJzLgoKVGhlIGFkdmFudGFnZSBv ZiB0aGlzIGFwcHJvYWNoIGlzIHRoZSBSVEwgcGFzc2VzIGNhbiBzdGlsbCB1c2UgbGR4L3N0eApp bnN0cnVjdGlvbnMgdG8gc2tpcCBhbiBhZGRpLmQgaW5zdHJ1Y3Rpb24uCgpnY2MvQ2hhbmdlTG9n OgoKCSogY29uZmlnL2xvb25nYXJjaC9sb29uZ2FyY2gubWQgKHVuc3BlYyk6IEFkZAoJVU5TUEVD X0xBX1BDUkVMXzY0X1BBUlQxIGFuZCBVTlNQRUNfTEFfUENSRUxfNjRfUEFSVDIuCgkobGFfcGNy ZWw2NF90d29fcGFydHMpOiBOZXcgZGVmaW5lX2luc24uCgkqIGNvbmZpZy9sb29uZ2FyY2gvbG9v bmdhcmNoLmNjIChsb29uZ2FyY2hfdGxzX3N5bWJvbCk6IEZpeCBhCgl0eXBvIGluIHRoZSBjb21t ZW50LgoJKGxvb25nYXJjaF9jYWxsX3Rsc19nZXRfYWRkcik6IElmIC1tY21vZGVsPWV4dHJlbWUK CS1tZXhwbGljaXQtcmVsb2NzPXthbHdheXMsYXV0b30sIHVzZSBsYV9wY3JlbDY0X3R3b19wYXJ0 cyBmb3IKCWFkZHJlc3NpbmcgdGhlIFRMUyBzeW1ib2wgYW5kIF9fdGxzX2dldF9hZGRyLiAgRW1p dCBhbiBSRUdfRVFVQUwKCW5vdGUgdG8gYWxsb3cgQ1NFIGFkZHJlc3NpbmcgX190bHNfZ2V0X2Fk ZHIuCgkobG9vbmdhcmNoX2xlZ2l0aW1pemVfdGxzX2FkZHJlc3MpOiBJZiAtbWNtb2RlbD1leHRy ZW1lCgktbWV4cGxpY2l0LXJlbG9jcz17YWx3YXlzLGF1dG99LCBhZGRyZXNzIFRMUyBJRSBzeW1i b2xzIHdpdGgKCWxhX3BjcmVsNjRfdHdvX3BhcnRzLgoJKGxvb25nYXJjaF9zcGxpdF9zeW1ib2wp OiBJZiAtbWNtb2RlbD1leHRyZW1lCgktbWV4cGxpY2l0LXJlbG9jcz17YWx3YXlzLGF1dG99LCBh ZGRyZXNzIHN5bWJvbHMgd2l0aAoJbGFfcGNyZWw2NF90d29fcGFydHMuCgkobG9vbmdhcmNoX291 dHB1dF9tb190aHVuayk6IENsZWFuIHVwIHVucmVhY2hhYmxlIGNvZGUuICBJZgoJLW1jbW9kZWw9 ZXh0cmVtZSAtbWV4cGxpY2l0LXJlbG9jcz17YWx3YXlzLGF1dG99LCBhZGRyZXNzIHRoZSBNSQoJ dGh1bmtzIHdpdGggbGFfcGNyZWw2NF90d29fcGFydHMuCgpnY2MvdGVzdHN1aXRlL0NoYW5nZUxv ZzoKCgkqIGdjYy50YXJnZXQvbG9vbmdhcmNoL2Z1bmMtY2FsbC1leHRyZW1lLTEuYyAoZGctb3B0 aW9ucyk6CglVc2UgLU8yIGluc3RlYWQgb2YgLU8wIHRvIGVuc3VyZSB0aGUgcGNhbGF1MTJpL2Fk ZGkvbHUzMmkvbHU1MmkKCWluc3RydWN0aW9uIHNlcXVlbmNlcyBhcmUgbm90IHJlb3JkZXJlZCBi eSB0aGUgY29tcGlsZXIuCgkoTk9JUEEpOiBEaXNhbGxvdyBpbnRlcnByb2NlZHVyYWwgb3B0aW1p emF0aW9ucy4KCSogZ2NjLnRhcmdldC9sb29uZ2FyY2gvZnVuYy1jYWxsLWV4dHJlbWUtMi5jOiBS ZW1vdmUgdGhlIGNvbnRlbnQKCWR1cGxpY2F0ZWQgZnJvbSBmdW5jLWNhbGwtZXh0cmVtZS0xLmMs IGluY2x1ZGUgaXQgaW5zdGVhZC4KCShkZy1vcHRpb25zKTogTGlrZXdpc2UuCgkqIGdjYy50YXJn ZXQvbG9vbmdhcmNoL2Z1bmMtY2FsbC1leHRyZW1lLTMuYyAoZGctb3B0aW9ucyk6CglMaWtld2lz ZS4KCSogZ2NjLnRhcmdldC9sb29uZ2FyY2gvZnVuYy1jYWxsLWV4dHJlbWUtNC5jIChkZy1vcHRp b25zKToKCUxpa2V3aXNlLgoJKiBnY2MudGFyZ2V0L2xvb25nYXJjaC9jbW9kZWwtZXh0cmVtZS0x LmM6IE5ldyB0ZXN0LgoJKiBnY2MudGFyZ2V0L2xvb25nYXJjaC9jbW9kZWwtZXh0cmVtZS0yLmM6 IE5ldyB0ZXN0LgoJKiBnKysudGFyZ2V0L2xvb25nYXJjaC9jbW9kZWwtZXh0cmVtZS1taS10aHVu ay0xLkM6IE5ldyB0ZXN0LgoJKiBnKysudGFyZ2V0L2xvb25nYXJjaC9jbW9kZWwtZXh0cmVtZS1t aS10aHVuay0yLkM6IE5ldyB0ZXN0LgoJKiBnKysudGFyZ2V0L2xvb25nYXJjaC9jbW9kZWwtZXh0 cmVtZS1taS10aHVuay0zLkM6IE5ldyB0ZXN0LgoJKiBnY2MudGFyZ2V0L2xvb25nYXJjaC9leHBs aWNpdC1yZWxvY3MtZXh0cmVtZS1hdXRvLXRscy1sZC1nZC5jOgoJRXNjYXBlIFtdIHRvIGF2b2lk IGFuIEVSUk9SIGluIERlamFHTlUuCi0tLQogZ2NjL2NvbmZpZy9sb29uZ2FyY2gvbG9vbmdhcmNo LmNjICAgICAgICAgICAgIHwgMTMzICsrKysrKysrKystLS0tLS0tLQogZ2NjL2NvbmZpZy9sb29u Z2FyY2gvbG9vbmdhcmNoLm1kICAgICAgICAgICAgIHwgIDIwICsrKwogLi4uL2xvb25nYXJjaC9j bW9kZWwtZXh0cmVtZS1taS10aHVuay0xLkMgICAgIHwgIDExICsrCiAuLi4vbG9vbmdhcmNoL2Nt b2RlbC1leHRyZW1lLW1pLXRodW5rLTIuQyAgICAgfCAgIDYgKwogLi4uL2xvb25nYXJjaC9jbW9k ZWwtZXh0cmVtZS1taS10aHVuay0zLkMgICAgIHwgICA2ICsKIC4uLi9nY2MudGFyZ2V0L2xvb25n YXJjaC9jbW9kZWwtZXh0cmVtZS0xLmMgICB8ICAxOCArKysKIC4uLi9nY2MudGFyZ2V0L2xvb25n YXJjaC9jbW9kZWwtZXh0cmVtZS0yLmMgICB8ICAgNyArCiAuLi4vZXhwbGljaXQtcmVsb2NzLWV4 dHJlbWUtYXV0by10bHMtbGQtZ2QuYyAgfCAgIDIgKy0KIC4uLi9sb29uZ2FyY2gvZnVuYy1jYWxs LWV4dHJlbWUtMS5jICAgICAgICAgICB8ICAxNCArLQogLi4uL2xvb25nYXJjaC9mdW5jLWNhbGwt ZXh0cmVtZS0yLmMgICAgICAgICAgIHwgIDI5ICstLS0KIC4uLi9sb29uZ2FyY2gvZnVuYy1jYWxs LWV4dHJlbWUtMy5jICAgICAgICAgICB8ICAgMiArLQogLi4uL2xvb25nYXJjaC9mdW5jLWNhbGwt ZXh0cmVtZS00LmMgICAgICAgICAgIHwgICAyICstCiAxMiBmaWxlcyBjaGFuZ2VkLCAxNTggaW5z ZXJ0aW9ucygrKSwgOTIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3Rz dWl0ZS9nKysudGFyZ2V0L2xvb25nYXJjaC9jbW9kZWwtZXh0cmVtZS1taS10aHVuay0xLkMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy50YXJnZXQvbG9vbmdhcmNoL2Ntb2Rl bC1leHRyZW1lLW1pLXRodW5rLTIuQwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUv ZysrLnRhcmdldC9sb29uZ2FyY2gvY21vZGVsLWV4dHJlbWUtbWktdGh1bmstMy5DCiBjcmVhdGUg bW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2xvb25nYXJjaC9jbW9kZWwtZXh0 cmVtZS0xLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvbG9v bmdhcmNoL2Ntb2RlbC1leHRyZW1lLTIuYwoKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbG9vbmdh cmNoL2xvb25nYXJjaC5jYyBiL2djYy9jb25maWcvbG9vbmdhcmNoL2xvb25nYXJjaC5jYwppbmRl eCA0ODE5MDMxNDdiOC4uZmQyMjJjYmZjMzEgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvbG9vbmdh cmNoL2xvb25nYXJjaC5jYworKysgYi9nY2MvY29uZmlnL2xvb25nYXJjaC9sb29uZ2FyY2guY2MK QEAgLTI3MzcsNyArMjczNyw3IEBAIGxvb25nYXJjaF9hZGRfb2Zmc2V0IChydHggdGVtcCwgcnR4 IHJlZywgSE9TVF9XSURFX0lOVCBvZmZzZXQpCiAgIHJldHVybiBwbHVzX2NvbnN0YW50IChQbW9k ZSwgcmVnLCBvZmZzZXQpOwogfQogCi0vKiBUaGUgX190bHNfZ2V0X2F0dHIgc3ltYm9sLiAgKi8K Ky8qIFRoZSBfX3Rsc19nZXRfYWRkciBzeW1ib2wuICAqLwogc3RhdGljIEdUWSAoKCkpIHJ0eCBs b29uZ2FyY2hfdGxzX3N5bWJvbDsKIAogLyogTG9hZCBhbiBlbnRyeSBmb3IgYSBUTFMgYWNjZXNz LiAgKi8KQEAgLTI3NzcsMjAgKzI3NzcsMjIgQEAgbG9vbmdhcmNoX2NhbGxfdGxzX2dldF9hZGRy IChydHggc3ltLCBlbnVtIGxvb25nYXJjaF9zeW1ib2xfdHlwZSB0eXBlLCBydHggdjApCiAKICAg aWYgKGxvb25nYXJjaF9leHBsaWNpdF9yZWxvY3NfcCAodHlwZSkpCiAgICAgewotICAgICAgLyog U3BsaXQgdGxzIHN5bWJvbCB0byBoaWdoIGFuZCBsb3cuICAqLwotICAgICAgcnR4IGhpZ2ggPSBn ZW5fcnR4X0hJR0ggKFBtb2RlLCBjb3B5X3J0eCAobG9jKSk7Ci0gICAgICBoaWdoID0gbG9vbmdh cmNoX2ZvcmNlX3RlbXBvcmFyeSAodG1wLCBoaWdoKTsKLQogICAgICAgaWYgKFRBUkdFVF9DTU9E RUxfRVhUUkVNRSkKIAl7Ci0JICBydHggdG1wMSA9IGdlbl9yZWdfcnR4IChQbW9kZSk7Ci0JICBl bWl0X2luc24gKGdlbl90bHNfbG93IChQbW9kZSwgdG1wMSwgZ2VuX3J0eF9SRUcgKFBtb2RlLCAw KSwgbG9jKSk7Ci0JICBlbWl0X2luc24gKGdlbl9sdWlfaF9sbzIwICh0bXAxLCB0bXAxLCBsb2Mp KTsKLQkgIGVtaXRfaW5zbiAoZ2VuX2x1aV9oX2hpMTIgKHRtcDEsIHRtcDEsIGxvYykpOwotCSAg ZW1pdF9tb3ZlX2luc24gKGEwLCBnZW5fcnR4X1BMVVMgKFBtb2RlLCBoaWdoLCB0bXAxKSk7CisJ ICBydHggcGFydDEgPSBnZW5fcmVnX3J0eCAoUG1vZGUpOworCSAgcnR4IHBhcnQyID0gZ2VuX3Jl Z19ydHggKFBtb2RlKTsKKworCSAgZW1pdF9pbnNuIChnZW5fbGFfcGNyZWw2NF90d29fcGFydHMg KHBhcnQxLCBwYXJ0MiwgbG9jKSk7CisJICBlbWl0X21vdmVfaW5zbiAoYTAsIGdlbl9ydHhfUExV UyAoUG1vZGUsIHBhcnQxLCBwYXJ0MikpOwogCX0KICAgICAgIGVsc2UKLQllbWl0X2luc24gKGdl bl90bHNfbG93IChQbW9kZSwgYTAsIGhpZ2gsIGxvYykpOworCXsKKwkgIC8qIFNwbGl0IHRscyBz eW1ib2wgdG8gaGlnaCBhbmQgbG93LiAgKi8KKwkgIHJ0eCBoaWdoID0gZ2VuX3J0eF9ISUdIIChQ bW9kZSwgY29weV9ydHggKGxvYykpOworCisJICBoaWdoID0gbG9vbmdhcmNoX2ZvcmNlX3RlbXBv cmFyeSAodG1wLCBoaWdoKTsKKwkgIGVtaXRfaW5zbiAoZ2VuX3Rsc19sb3cgKFBtb2RlLCBhMCwg aGlnaCwgbG9jKSk7CisJfQogICAgIH0KICAgZWxzZQogICAgIGVtaXRfaW5zbiAobG9vbmdhcmNo X2xvYWRfdGxzIChhMCwgbG9jLCB0eXBlKSk7CkBAIC0yODcwLDIwICsyODcyLDMwIEBAIGxvb25n YXJjaF9jYWxsX3Rsc19nZXRfYWRkciAocnR4IHN5bSwgZW51bSBsb29uZ2FyY2hfc3ltYm9sX3R5 cGUgdHlwZSwgcnR4IHYwKQogCSAgICB7CiAJICAgICAgaWYgKGxvb25nYXJjaF9leHBsaWNpdF9y ZWxvY3NfcCAoU1lNQk9MX0dPVF9ESVNQKSkKIAkJewotCQkgIHJ0eCB0bXAxID0gZ2VuX3JlZ19y dHggKFBtb2RlKTsKLQkJICBydHggaGlnaCA9IGdlbl9yZWdfcnR4IChQbW9kZSk7CisJCSAgZ2Nj X2Fzc2VydCAobGFfb3B0X2V4cGxpY2l0X3JlbG9jcyAhPQorCQkJICAgICAgRVhQTElDSVRfUkVM T0NTX05PTkUpOwogCi0JCSAgbG9vbmdhcmNoX2VtaXRfbW92ZSAoaGlnaCwKLQkJCQkgICAgICAg Z2VuX3J0eF9ISUdIIChQbW9kZSwgbG9vbmdhcmNoX3Rsc19zeW1ib2wpKTsKLQkJICBsb29uZ2Fy Y2hfZW1pdF9tb3ZlICh0bXAxLCBnZW5fcnR4X0xPX1NVTSAoUG1vZGUsCi0JCQkJCQkJICAgICBn ZW5fcnR4X1JFRyAoUG1vZGUsIDApLAotCQkJCQkJCSAgICAgbG9vbmdhcmNoX3Rsc19zeW1ib2wp KTsKLQkJICBlbWl0X2luc24gKGdlbl9sdWlfaF9sbzIwICh0bXAxLCB0bXAxLCBsb29uZ2FyY2hf dGxzX3N5bWJvbCkpOwotCQkgIGVtaXRfaW5zbiAoZ2VuX2x1aV9oX2hpMTIgKHRtcDEsIHRtcDEs IGxvb25nYXJjaF90bHNfc3ltYm9sKSk7Ci0JCSAgbG9vbmdhcmNoX2VtaXRfbW92ZSAoZGVzdCwK LQkJCQkgICAgICAgZ2VuX3J0eF9NRU0gKFBtb2RlLAotCQkJCQkJICAgIGdlbl9ydHhfUExVUyAo UG1vZGUsCi0JCQkJCQkJCSAgaGlnaCwgdG1wMSkpKTsKKwkJICBydHggcGFydDEgPSBnZW5fcmVn X3J0eCAoUG1vZGUpOworCQkgIHJ0eCBwYXJ0MiA9IGdlbl9yZWdfcnR4IChQbW9kZSk7CisKKwkJ ICBlbWl0X2luc24gKAorCQkgICAgZ2VuX2xhX3BjcmVsNjRfdHdvX3BhcnRzIChwYXJ0MSwgcGFy dDIsCisJCQkJCSAgICAgIGxvb25nYXJjaF90bHNfc3ltYm9sKSk7CisJCSAgbG9vbmdhcmNoX2Vt aXRfbW92ZSAoCisJCSAgICBkZXN0LAorCQkgICAgZ2VuX3J0eF9NRU0gKFBtb2RlLCBnZW5fcnR4 X1BMVVMgKFBtb2RlLAorCQkJCQkJICAgICAgcGFydDEsCisJCQkJCQkgICAgICBwYXJ0MikpKTsK KworCQkgIC8qIFB1dCBhbiBSRUdfRVFVQUwgbm90ZSBoZXJlIHRvIGFsbG93IENTRSAoc3Rvcmlu ZworCQkgICAgIHBhcnQxICsgcGFydDIsIGkuZS4gdGhlIGFkZHJlc3Mgb2YgdGxzX2dldF9hZGRy IGludG8KKwkJICAgICBhIHNhdmVkIHJlZ2lzdGVyIGFuZCB1c2UgaXQgZm9yIG11bHRpcGxlIFRM UworCQkgICAgIGFjY2Vzc2VzKS4gICovCisJCSAgcnR4IHN1bSA9IGdlbl9ydHhfVU5TUEVDICgK KwkJICAgIFBtb2RlLCBnZW5fcnR2ZWMgKDEsIGxvb25nYXJjaF90bHNfc3ltYm9sKSwKKwkJICAg IFVOU1BFQ19BRERSRVNTX0ZJUlNUCisJCSAgICArIGxvb25nYXJjaF9jbGFzc2lmeV9zeW1ib2wg KGxvb25nYXJjaF90bHNfc3ltYm9sKSk7CisJCSAgc2V0X3VuaXF1ZV9yZWdfbm90ZSAoZ2V0X2xh c3RfaW5zbiAoKSwgUkVHX0VRVUFMLCBzdW0pOwogCQl9CiAJICAgICAgZWxzZQogCSAgICAgICBl bWl0X2luc24gKGdlbl9tb3ZkaV9zeW1ib2xpY19vZmY2NCAoZGVzdCwgbG9vbmdhcmNoX3Rsc19z eW1ib2wsCkBAIC0yOTQ2LDI0ICsyOTU4LDMwIEBAIGxvb25nYXJjaF9sZWdpdGltaXplX3Rsc19h ZGRyZXNzIChydHggbG9jKQogCSAgZGVzdCA9IGdlbl9yZWdfcnR4IChQbW9kZSk7CiAJICBpZiAo bG9vbmdhcmNoX2V4cGxpY2l0X3JlbG9jc19wIChTWU1CT0xfVExTX0lFKSkKIAkgICAgewotCSAg ICAgIHRtcDMgPSBnZW5fcmVnX3J0eCAoUG1vZGUpOwotCSAgICAgIHJ0eCBoaWdoID0gZ2VuX3J0 eF9ISUdIIChQbW9kZSwgY29weV9ydHggKHRtcDIpKTsKLQkgICAgICBoaWdoID0gbG9vbmdhcmNo X2ZvcmNlX3RlbXBvcmFyeSAodG1wMywgaGlnaCk7Ci0KIAkgICAgICBpZiAoVEFSR0VUX0NNT0RF TF9FWFRSRU1FKQogCQl7Ci0JCSAgcnR4IHRtcDMgPSBnZW5fcmVnX3J0eCAoUG1vZGUpOwotCQkg IGVtaXRfaW5zbiAoZ2VuX3Rsc19sb3cgKFBtb2RlLCB0bXAzLAotCQkJCQkgIGdlbl9ydHhfUkVH IChQbW9kZSwgMCksIHRtcDIpKTsKLQkJICBlbWl0X2luc24gKGdlbl9sdWlfaF9sbzIwICh0bXAz LCB0bXAzLCB0bXAyKSk7Ci0JCSAgZW1pdF9pbnNuIChnZW5fbHVpX2hfaGkxMiAodG1wMywgdG1w MywgdG1wMikpOworCQkgIGdjY19hc3NlcnQgKGxhX29wdF9leHBsaWNpdF9yZWxvY3MKKwkJCSAg ICAgICE9IEVYUExJQ0lUX1JFTE9DU19OT05FKTsKKworCQkgIHJ0eCBwYXJ0MSA9IGdlbl9yZWdf cnR4IChQbW9kZSk7CisJCSAgcnR4IHBhcnQyID0gZ2VuX3JlZ19ydHggKFBtb2RlKTsKKworCQkg IGVtaXRfaW5zbiAoZ2VuX2xhX3BjcmVsNjRfdHdvX3BhcnRzIChwYXJ0MSwgcGFydDIsCisJCQkJ CQkgICAgICAgdG1wMikpOwogCQkgIGVtaXRfbW92ZV9pbnNuICh0bXAxLAogCQkJCSAgZ2VuX3J0 eF9NRU0gKFBtb2RlLAogCQkJCQkgICAgICAgZ2VuX3J0eF9QTFVTIChQbW9kZSwKLQkJCQkJCQkg ICAgIGhpZ2gsIHRtcDMpKSk7CisJCQkJCQkJICAgICBwYXJ0MSwKKwkJCQkJCQkgICAgIHBhcnQy KSkpOwogCQl9CiAJICAgICAgZWxzZQotCQllbWl0X2luc24gKGdlbl9sZF9mcm9tX2dvdCAoUG1v ZGUsIHRtcDEsIGhpZ2gsIHRtcDIpKTsKKwkJeworCQkgIHRtcDMgPSBnZW5fcmVnX3J0eCAoUG1v ZGUpOworCQkgIHJ0eCBoaWdoID0gZ2VuX3J0eF9ISUdIIChQbW9kZSwgY29weV9ydHggKHRtcDIp KTsKKworCQkgIGhpZ2ggPSBsb29uZ2FyY2hfZm9yY2VfdGVtcG9yYXJ5ICh0bXAzLCBoaWdoKTsK KwkJICBlbWl0X2luc24gKGdlbl9sZF9mcm9tX2dvdCAoUG1vZGUsIHRtcDEsIGhpZ2gsIHRtcDIp KTsKKwkJfQogCSAgICB9CiAJICBlbHNlCiAJICAgIGVtaXRfaW5zbiAobG9vbmdhcmNoX2xvYWRf dGxzICh0bXAxLCB0bXAyLCBTWU1CT0xfVExTX0lFKSk7CkBAIC0zMTQyLDI0ICszMTYwLDIzIEBA IGxvb25nYXJjaF9zcGxpdF9zeW1ib2wgKHJ0eCB0ZW1wLCBydHggYWRkciwgbWFjaGluZV9tb2Rl IG1vZGUsIHJ0eCAqbG93X291dCkKICAgICAgIHx8ICFsb29uZ2FyY2hfc3BsaXRfc3ltYm9sX3R5 cGUgKHN5bWJvbF90eXBlKSkKICAgICByZXR1cm4gZmFsc2U7CiAKLSAgcnR4IGhpZ2gsIHRlbXAx ID0gTlVMTDsKKyAgcnR4IGhpZ2g7CiAKICAgaWYgKHRlbXAgPT0gTlVMTCkKICAgICB0ZW1wID0g Z2VuX3JlZ19ydHggKFBtb2RlKTsKIAotICAvKiBHZXQgdGhlIDEyLTMxIGJpdHMgb2YgdGhlIGFk ZHJlc3MuICAqLwotICBoaWdoID0gZ2VuX3J0eF9ISUdIIChQbW9kZSwgY29weV9ydHggKGFkZHIp KTsKLSAgaGlnaCA9IGxvb25nYXJjaF9mb3JjZV90ZW1wb3JhcnkgKHRlbXAsIGhpZ2gpOwotCiAg IGlmIChsb29uZ2FyY2hfc3ltYm9sX2V4dHJlbWVfcCAoc3ltYm9sX3R5cGUpICYmIGNhbl9jcmVh dGVfcHNldWRvX3AgKCkpCiAgICAgewogICAgICAgZ2NjX2Fzc2VydCAobGFfb3B0X2V4cGxpY2l0 X3JlbG9jcyAhPSBFWFBMSUNJVF9SRUxPQ1NfTk9ORSk7CiAKLSAgICAgIHRlbXAxID0gZ2VuX3Jl Z19ydHggKFBtb2RlKTsKLSAgICAgIGVtaXRfbW92ZV9pbnNuICh0ZW1wMSwgZ2VuX3J0eF9MT19T VU0gKFBtb2RlLCBnZW5fcnR4X1JFRyAoUG1vZGUsIDApLAotCQkJCQkgICAgIGFkZHIpKTsKLSAg ICAgIGVtaXRfaW5zbiAoZ2VuX2x1aV9oX2xvMjAgKHRlbXAxLCB0ZW1wMSwgYWRkcikpOwotICAg ICAgZW1pdF9pbnNuIChnZW5fbHVpX2hfaGkxMiAodGVtcDEsIHRlbXAxLCBhZGRyKSk7CisgICAg ICBoaWdoID0gZ2VuX3JlZ19ydHggKFBtb2RlKTsKKyAgICAgIGVtaXRfaW5zbiAoZ2VuX2xhX3Bj cmVsNjRfdHdvX3BhcnRzIChoaWdoLCB0ZW1wLCBhZGRyKSk7CisgICAgfQorICBlbHNlCisgICAg eworICAgICAgLyogR2V0IHRoZSAxMi0zMSBiaXRzIG9mIHRoZSBhZGRyZXNzLiAgKi8KKyAgICAg IGhpZ2ggPSBnZW5fcnR4X0hJR0ggKFBtb2RlLCBjb3B5X3J0eCAoYWRkcikpOworICAgICAgaGln aCA9IGxvb25nYXJjaF9mb3JjZV90ZW1wb3JhcnkgKHRlbXAsIGhpZ2gpOwogICAgIH0KIAogICBp ZiAobG93X291dCkKQEAgLTMxNjgsNyArMzE4NSw3IEBAIGxvb25nYXJjaF9zcGxpdF9zeW1ib2wg KHJ0eCB0ZW1wLCBydHggYWRkciwgbWFjaGluZV9tb2RlIG1vZGUsIHJ0eCAqbG93X291dCkKICAg ICAgIGNhc2UgU1lNQk9MX1BDUkVMNjQ6CiAJaWYgKGNhbl9jcmVhdGVfcHNldWRvX3AgKCkpCiAJ ICB7Ci0JICAgICpsb3dfb3V0ID0gZ2VuX3J0eF9QTFVTIChQbW9kZSwgaGlnaCwgdGVtcDEpOwor CSAgICAqbG93X291dCA9IGdlbl9ydHhfUExVUyAoUG1vZGUsIGhpZ2gsIHRlbXApOwogCSAgICBi cmVhazsKIAkgIH0KIAkvKiBmYWxsIHRocm91Z2ggKi8KQEAgLTMxODAsNyArMzE5Nyw4IEBAIGxv b25nYXJjaF9zcGxpdF9zeW1ib2wgKHJ0eCB0ZW1wLCBydHggYWRkciwgbWFjaGluZV9tb2RlIG1v ZGUsIHJ0eCAqbG93X291dCkKIAkvKiBTWU1CT0xfR09UX0RJU1Agc3ltYm9scyBhcmUgbG9hZGVk IGZyb20gdGhlIEdPVC4gICovCiAJewogCSAgaWYgKFRBUkdFVF9DTU9ERUxfRVhUUkVNRSAmJiBj YW5fY3JlYXRlX3BzZXVkb19wICgpKQotCSAgICAqbG93X291dCA9IGdlbl9ydHhfTUVNIChQbW9k ZSwgZ2VuX3J0eF9QTFVTIChQbW9kZSwgaGlnaCwgdGVtcDEpKTsKKwkgICAgKmxvd19vdXQgPSBn ZW5fcnR4X01FTSAoUG1vZGUsIGdlbl9ydHhfUExVUyAoUG1vZGUsIGhpZ2gsCisJCQkJCQkJIHRl bXApKTsKIAkgIGVsc2UKIAkgICAgewogCSAgICAgIHJ0eCBsb3cgPSBnZW5fcnR4X0xPX1NVTSAo UG1vZGUsIGhpZ2gsIGFkZHIpOwpAQCAtNzQ1MCwyMSArNzQ2OCwyNCBAQCBsb29uZ2FyY2hfb3V0 cHV0X21pX3RodW5rIChGSUxFICpmaWxlLCB0cmVlIHRodW5rX2ZuZGVjbCBBVFRSSUJVVEVfVU5V U0VELAogICAgICBhbGxvd2VkLCBvdGhlcndpc2UgbG9hZCB0aGUgYWRkcmVzcyBpbnRvIGEgcmVn aXN0ZXIgZmlyc3QuICAqLwogICBpZiAodXNlX3NpYmNhbGxfcCkKICAgICB7Ci0gICAgICBpZiAo VEFSR0VUX0NNT0RFTF9FWFRSRU1FKQotCXsKLQkgIGVtaXRfaW5zbiAoZ2VuX21vdmRpX3N5bWJv bGljX29mZjY0ICh0ZW1wMSwgZm5hZGRyLCB0ZW1wMikpOwotCSAgaW5zbiA9IGVtaXRfY2FsbF9p bnNuIChnZW5fc2liY2FsbF9pbnRlcm5hbCAodGVtcDEsIGNvbnN0MF9ydHgpKTsKLQl9Ci0gICAg ICBlbHNlCi0JaW5zbiA9IGVtaXRfY2FsbF9pbnNuIChnZW5fc2liY2FsbF9pbnRlcm5hbCAoZm5h ZGRyLCBjb25zdDBfcnR4KSk7CisgICAgICAvKiBJZiBUQVJHRVRfQ01PREVMX0VYVFJFTUUsIHdl IGNhbm5vdCBkbyBhIGRpcmVjdCBqdW1wIGF0IGFsbAorCSBhbmQgY29uc3RfY2FsbF9pbnNuX29w ZXJhbmQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UuICAqLworICAgICAgZ2NjX2Fzc2VydCAo IVRBUkdFVF9DTU9ERUxfRVhUUkVNRSk7CisKKyAgICAgIGluc24gPSBlbWl0X2NhbGxfaW5zbiAo Z2VuX3NpYmNhbGxfaW50ZXJuYWwgKGZuYWRkciwgY29uc3QwX3J0eCkpOwogICAgICAgU0lCTElO R19DQUxMX1AgKGluc24pID0gMTsKICAgICB9CiAgIGVsc2UKICAgICB7Ci0gICAgICBpZiAoVEFS R0VUX0NNT0RFTF9FWFRSRU1FKQorICAgICAgaWYgKCFUQVJHRVRfQ01PREVMX0VYVFJFTUUpCisJ bG9vbmdhcmNoX2VtaXRfbW92ZSAodGVtcDEsIGZuYWRkcik7CisgICAgICBlbHNlIGlmIChsYV9v cHRfZXhwbGljaXRfcmVsb2NzID09IEVYUExJQ0lUX1JFTE9DU19OT05FKQogCWVtaXRfaW5zbiAo Z2VuX21vdmRpX3N5bWJvbGljX29mZjY0ICh0ZW1wMSwgZm5hZGRyLCB0ZW1wMikpOwogICAgICAg ZWxzZQotCWxvb25nYXJjaF9lbWl0X21vdmUgKHRlbXAxLCBmbmFkZHIpOworCXsKKwkgIGVtaXRf aW5zbiAoZ2VuX2xhX3BjcmVsNjRfdHdvX3BhcnRzICh0ZW1wMSwgdGVtcDIsIGZuYWRkcikpOwor CSAgZW1pdF9tb3ZlX2luc24gKHRlbXAxLCBnZW5fcnR4X1BMVVMgKFBtb2RlLCB0ZW1wMSwgdGVt cDIpKTsKKwl9CiAKICAgICAgIGVtaXRfanVtcF9pbnNuIChnZW5faW5kaXJlY3RfanVtcCAodGVt cDEpKTsKICAgICB9CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2xvb25nYXJjaC9sb29uZ2FyY2gu bWQgYi9nY2MvY29uZmlnL2xvb25nYXJjaC9sb29uZ2FyY2gubWQKaW5kZXggNWEyYjE4MTcxNmEu LmYyN2EyNjM4NDhkIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2xvb25nYXJjaC9sb29uZ2FyY2gu bWQKKysrIGIvZ2NjL2NvbmZpZy9sb29uZ2FyY2gvbG9vbmdhcmNoLm1kCkBAIC04NCw2ICs4NCw4 IEBAIChkZWZpbmVfY19lbnVtICJ1bnNwZWMiIFsKICAgVU5TUEVDX0NBTExfVkFMVUVfTVVMVElQ TEVfSU5URVJOQUxfMQogCiAgIFVOU1BFQ19MT0FEX1NZTUJPTF9PRkZTRVQ2NAorICBVTlNQRUNf TEFfUENSRUxfNjRfUEFSVDEKKyAgVU5TUEVDX0xBX1BDUkVMXzY0X1BBUlQyCiBdKQogCiAoZGVm aW5lX2NfZW51bSAidW5zcGVjdiIgWwpAQCAtMjIyNCw2ICsyMjI2LDI0IEBAIChkZWZpbmVfaW5z bl9hbmRfc3BsaXQgIm1vdmRpX3N5bWJvbGljX29mZjY0IgogIFsoc2V0X2F0dHIgIm1vZGUiICJE SSIpCiAgIChzZXRfYXR0ciAibGVuZ3RoIiAiNSIpXSkKIAorOzsgVGhlIDY0LWJpdCBQQy1yZWxh dGl2ZSBwYXJ0IG9mIGFkZHJlc3MgbG9hZGluZy4KKzs7IE5vdGUgdGhhdCB0aGUgcHNBQkkgZG9l cyBub3QgYWxsb3cgc3BsaXR0aW5nIGl0LgorKGRlZmluZV9pbnNuICJsYV9wY3JlbDY0X3R3b19w YXJ0cyIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj1y IikKKwkodW5zcGVjOkRJIFsobWF0Y2hfb3BlcmFuZDpESSAyICIiKSAocGMpXSBVTlNQRUNfTEFf UENSRUxfNjRfUEFSVDEpKQorICAgKHNldCAobWF0Y2hfb3BlcmFuZDpESSAxICJyZWdpc3Rlcl9v cGVyYW5kIiAiPXIiKQorCSh1bnNwZWM6REkgWyhtYXRjaF9kdXAgMikgKHBjKV0gVU5TUEVDX0xB X1BDUkVMXzY0X1BBUlQyKSldCisgICJUQVJHRVRfQUJJX0xQNjQgJiYgbGFfb3B0X2V4cGxpY2l0 X3JlbG9jcyAhPSBFWFBMSUNJVF9SRUxPQ1NfTk9ORSIKKyAgeworICAgIHJldHVybiAicGNhbGF1 MTJpXHQlMCwlcjJcblx0IgorCSAgICJhZGRpLmRcdCUxLCRyMCwlTDJcblx0IgorCSAgICJsdTMy aS5kXHQlMSwlUjJcblx0IgorCSAgICJsdTUyaS5kXHQlMSwlMSwlSDIiOworICB9CisgIFsoc2V0 X2F0dHIgIm1vdmVfdHlwZSIgIm1vdmUiKQorICAgKHNldF9hdHRyICJtb2RlIiAiREkiKQorICAg KHNldF9hdHRyICJsZW5ndGgiICIxNiIpXSkKKwogOzsgMzItYml0IEludGVnZXIgbW92ZXMKIAog KGRlZmluZV9leHBhbmQgIm1vdnNpIgpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysudGFy Z2V0L2xvb25nYXJjaC9jbW9kZWwtZXh0cmVtZS1taS10aHVuay0xLkMgYi9nY2MvdGVzdHN1aXRl L2crKy50YXJnZXQvbG9vbmdhcmNoL2Ntb2RlbC1leHRyZW1lLW1pLXRodW5rLTEuQwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZmYxZjdjMTY1ZTIKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy50YXJnZXQvbG9vbmdhcmNoL2Ntb2RlbC1leHRyZW1l LW1pLXRodW5rLTEuQwpAQCAtMCwwICsxLDExIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwor LyogeyBkZy1vcHRpb25zICItTzIgLWZuby1pbmxpbmUgLW1hcmNoPWxvb25nYXJjaDY0IC1tYWJp PWxwNjRkIC1PMiAtbWNtb2RlbD1leHRyZW1lIC1mbm8tcGx0IC1tZXhwbGljaXQtcmVsb2NzPWFs d2F5cyAtbWRpcmVjdC1leHRlcm4tYWNjZXNzIiB9ICovCisKK3N0cnVjdCBBIHsKKyAgdmlydHVh bCB+QSgpOworfTsKKworc3RydWN0IEIgOiB2aXJ0dWFsIEEge307Cit2b2lkIHZhcigpIHsgQigp OyB9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicGNhbGF1MTJpXHRcW15cblxd KiVwY19oaTIwXFwoXFwuTFRIVU5LMFxcKVxuXHRhZGRpXFwuZFx0XFteXG5cXSolcGNfbG8xMlxc KFxcXC5MVEhVTkswXFwpXG5cdGx1MzJpXFwuZFx0XFteXG5cXSolcGM2NF9sbzIwXFwoXFwuTFRI VU5LMFxcKVxuXHRsdTUyaVxcLmRcdFxbXlxuXF0qJXBjNjRfaGkxMlxcKFxcLkxUSFVOSzBcXCki IH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysudGFyZ2V0L2xvb25nYXJjaC9j bW9kZWwtZXh0cmVtZS1taS10aHVuay0yLkMgYi9nY2MvdGVzdHN1aXRlL2crKy50YXJnZXQvbG9v bmdhcmNoL2Ntb2RlbC1leHRyZW1lLW1pLXRodW5rLTIuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uYzlhYTE2YjQxMGQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVz dHN1aXRlL2crKy50YXJnZXQvbG9vbmdhcmNoL2Ntb2RlbC1leHRyZW1lLW1pLXRodW5rLTIuQwpA QCAtMCwwICsxLDYgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMg Ii1PMiAtZm5vLWlubGluZSAtbWFyY2g9bG9vbmdhcmNoNjQgLW1hYmk9bHA2NGQgLU8yIC1tY21v ZGVsPWV4dHJlbWUgLWZuby1wbHQgLW1leHBsaWNpdC1yZWxvY3M9YXV0byAtbWRpcmVjdC1leHRl cm4tYWNjZXNzIiB9ICovCisKKyNpbmNsdWRlICJjbW9kZWwtZXh0cmVtZS1taS10aHVuay0xLkMi CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicGNhbGF1MTJpXHRcW15cblxdKiVw Y19oaTIwXFwoXFwuTFRIVU5LMFxcKVxuXHRhZGRpXFwuZFx0XFteXG5cXSolcGNfbG8xMlxcKFxc XC5MVEhVTkswXFwpXG5cdGx1MzJpXFwuZFx0XFteXG5cXSolcGM2NF9sbzIwXFwoXFwuTFRIVU5L MFxcKVxuXHRsdTUyaVxcLmRcdFxbXlxuXF0qJXBjNjRfaGkxMlxcKFxcLkxUSFVOSzBcXCkiIH0g fSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysudGFyZ2V0L2xvb25nYXJjaC9jbW9k ZWwtZXh0cmVtZS1taS10aHVuay0zLkMgYi9nY2MvdGVzdHN1aXRlL2crKy50YXJnZXQvbG9vbmdh cmNoL2Ntb2RlbC1leHRyZW1lLW1pLXRodW5rLTMuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uYWZiODZjOGJkZWUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1 aXRlL2crKy50YXJnZXQvbG9vbmdhcmNoL2Ntb2RlbC1leHRyZW1lLW1pLXRodW5rLTMuQwpAQCAt MCwwICsxLDYgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1P MiAtZm5vLWlubGluZSAtbWFyY2g9bG9vbmdhcmNoNjQgLW1hYmk9bHA2NGQgLU8yIC1tY21vZGVs PWV4dHJlbWUgLWZuby1wbHQgLW1leHBsaWNpdC1yZWxvY3M9bm9uZSAtbWRpcmVjdC1leHRlcm4t YWNjZXNzIiB9ICovCisKKyNpbmNsdWRlICJjbW9kZWwtZXh0cmVtZS1taS10aHVuay0xLkMiCisK Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibGEubG9jYWxcdFxbXlxuXF0qXFwuTFRI VU5LMCIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvbG9vbmdh cmNoL2Ntb2RlbC1leHRyZW1lLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9sb29uZ2Fy Y2gvY21vZGVsLWV4dHJlbWUtMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi41NjRlZTQwMTdmNwotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9sb29uZ2FyY2gvY21vZGVsLWV4dHJlbWUtMS5jCkBAIC0wLDAgKzEsMTggQEAKKy8qIHsg ZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD1sb29uZ2FyY2g2NCAt bWFiaT1scDY0ZCAtTzIgLW1jbW9kZWw9ZXh0cmVtZSAtZm5vLXBsdCAtbWV4cGxpY2l0LXJlbG9j cz1hbHdheXMgLWZkdW1wLXJ0bC1maW5hbCIgfSAqLworCitpbnQgYTsKK2V4dGVybiBpbnQgYjsK K19fdGhyZWFkIGludCBjIF9fYXR0cmlidXRlX18gKCh0bHNfbW9kZWwgKCJsb2NhbC1leGVjIikp KTsKK19fdGhyZWFkIGludCBkIF9fYXR0cmlidXRlX18gKCh0bHNfbW9kZWwgKCJpbml0aWFsLWV4 ZWMiKSkpOworX190aHJlYWQgaW50IGUgX19hdHRyaWJ1dGVfXyAoKHRsc19tb2RlbCAoImxvY2Fs LWR5bmFtaWMiKSkpOworX190aHJlYWQgaW50IGYgX19hdHRyaWJ1dGVfXyAoKHRsc19tb2RlbCAo Imdsb2JhbC1keW5hbWljIikpKTsKKwordm9pZAordGVzdCAodm9pZCkKK3sKKyAgYSA9IGIgKyBj ICsgZCArIGUgKyBmOworfQorCisvKiBhLCBiLCBkLCBlLCBmLCBhbmQgX190bHNfZ2V0X2FkZHIu ICAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAtdGltZXMgImxhX3BjcmVsNjRfdHdv X3BhcnRzIiA2ICJmaW5hbCIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvbG9vbmdhcmNoL2Ntb2RlbC1leHRyZW1lLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9sb29uZ2FyY2gvY21vZGVsLWV4dHJlbWUtMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi5jZTgzNDgwNWYzOAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9sb29uZ2FyY2gvY21vZGVsLWV4dHJlbWUtMi5jCkBAIC0wLDAgKzEs NyBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPWxv b25nYXJjaDY0IC1tYWJpPWxwNjRkIC1PMiAtbWNtb2RlbD1leHRyZW1lIC1mbm8tcGx0IC1tZXhw bGljaXQtcmVsb2NzPWF1dG8gLWZkdW1wLXJ0bC1maW5hbCIgfSAqLworCisjaW5jbHVkZSAiY21v ZGVsLWV4dHJlbWUtMS5jIgorCisvKiBhLCBiLCBkLCBlLCBmLCBhbmQgX190bHNfZ2V0X2FkZHIu ICAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAtdGltZXMgImxhX3BjcmVsNjRfdHdv X3BhcnRzIiA2ICJmaW5hbCIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvbG9vbmdhcmNoL2V4cGxpY2l0LXJlbG9jcy1leHRyZW1lLWF1dG8tdGxzLWxkLWdkLmMg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvbG9vbmdhcmNoL2V4cGxpY2l0LXJlbG9jcy1leHRy ZW1lLWF1dG8tdGxzLWxkLWdkLmMKaW5kZXggMjdiYWY0ODg2ZDYuLjM1YmQ0NTcwYTllIDEwMDY0 NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvbG9vbmdhcmNoL2V4cGxpY2l0LXJlbG9j cy1leHRyZW1lLWF1dG8tdGxzLWxkLWdkLmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2xvb25nYXJjaC9leHBsaWNpdC1yZWxvY3MtZXh0cmVtZS1hdXRvLXRscy1sZC1nZC5jCkBAIC0x LDUgKzEsNSBAQAogLyogeyBkZy1kbyBjb21waWxlIH0gKi8KIC8qIHsgZGctb3B0aW9ucyAiLU8y IC1mUElDIC1tZXhwbGljaXQtcmVsb2NzPWF1dG8gLW1jbW9kZWw9ZXh0cmVtZSAtZm5vLXBsdCIg fSAqLwotLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAibGEudGxzLltsZ11kIiB7 IHRhcmdldCB0bHNfbmF0aXZlIH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItbm90ICJsYS50bHMuXFtsZ1xdZCIgeyB0YXJnZXQgdGxzX25hdGl2ZSB9IH0gfSAqLwogCiAj aW5jbHVkZSAiLi9leHBsaWNpdC1yZWxvY3MtYXV0by10bHMtbGQtZ2QuYyIKZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9sb29uZ2FyY2gvZnVuYy1jYWxsLWV4dHJlbWUtMS5j IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2xvb25nYXJjaC9mdW5jLWNhbGwtZXh0cmVtZS0x LmMKaW5kZXggZGIxZTBmODUzOTYuLmZkYjRjZjFmZjdmIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvbG9vbmdhcmNoL2Z1bmMtY2FsbC1leHRyZW1lLTEuYworKysgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvbG9vbmdhcmNoL2Z1bmMtY2FsbC1leHRyZW1lLTEuYwpAQCAt MSwzMSArMSwzMyBAQAogLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS8qIHsgZGctb3B0aW9ucyAi LW1hYmk9bHA2NGQgLU8wIC1mbm8tcGljIC1mbm8tcGx0IC1tZXhwbGljaXQtcmVsb2NzIC1tY21v ZGVsPWV4dHJlbWUiIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1hYmk9bHA2NGQgLU8yIC1mbm8t cGljIC1mbm8tcGx0IC1tZXhwbGljaXQtcmVsb2NzIC1tY21vZGVsPWV4dHJlbWUiIH0gKi8KIC8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAidGVzdDouKnBjYWxhdTEyaS4qJWdvdF9wY19o aTIwLipcblx0YWRkaVwuZC4qJWdvdF9wY19sbzEyLipcblx0bHUzMmlcLmQuKiVnb3Q2NF9wY19s bzIwLipcblx0bHU1MmlcLmQuKiVnb3Q2NF9wY19oaTEyLipcblx0bGR4XC5kIiB9IH0gKi8KIC8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAidGVzdDE6LipwY2FsYXUxMmkuKiVwY19oaTIw Lipcblx0YWRkaVwuZC4qJXBjX2xvMTIuKlxuXHRsdTMyaVwuZC4qJXBjNjRfbG8yMC4qXG5cdGx1 NTJpXC5kLipwYzY0X2hpMTIuKlxuXHRhZGRcLmQiIH0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyICJ0ZXN0MjouKnBjYWxhdTEyaS4qJXBjX2hpMjAuKlxuXHRhZGRpXC5kLiol cGNfbG8xMi4qXG5cdGx1MzJpXC5kLiolcGM2NF9sbzIwLipcblx0bHU1MmlcLmQuKnBjNjRfaGkx Mi4qXG5cdGFkZFwuZCIgfSB9ICovCiAKKyNkZWZpbmUgTk9JUEEgX19hdHRyaWJ1dGVfXyAoKG5v aXBhKSkKKwogZXh0ZXJuIHZvaWQgZyAodm9pZCk7Ci12b2lkCitOT0lQQSB2b2lkCiBmICh2b2lk KQoge30KIAotc3RhdGljIHZvaWQKK05PSVBBIHN0YXRpYyB2b2lkCiBsICh2b2lkKQoge30KIAot dm9pZAorTk9JUEEgdm9pZAogdGVzdCAodm9pZCkKIHsKICAgZyAoKTsKIH0KIAotdm9pZAorTk9J UEEgdm9pZAogdGVzdDEgKHZvaWQpCiB7CiAgIGYgKCk7CiB9CiAKLXZvaWQKK05PSVBBIHZvaWQK IHRlc3QyICh2b2lkKQogewogICBsICgpOwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2xvb25nYXJjaC9mdW5jLWNhbGwtZXh0cmVtZS0yLmMgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvbG9vbmdhcmNoL2Z1bmMtY2FsbC1leHRyZW1lLTIuYwppbmRleCAyMWJmODFhZTgz Ny4uZGZiYTM4ODJiOTcgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9sb29u Z2FyY2gvZnVuYy1jYWxsLWV4dHJlbWUtMi5jCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9sb29uZ2FyY2gvZnVuYy1jYWxsLWV4dHJlbWUtMi5jCkBAIC0xLDMyICsxLDcgQEAKIC8qIHsg ZGctZG8gY29tcGlsZSB9ICovCi0vKiB7IGRnLW9wdGlvbnMgIi1tYWJpPWxwNjRkIC1PMCAtZnBp YyAtZm5vLXBsdCAtbWV4cGxpY2l0LXJlbG9jcyAtbWNtb2RlbD1leHRyZW1lIiB9ICovCisvKiB7 IGRnLW9wdGlvbnMgIi1tYWJpPWxwNjRkIC1PMiAtZnBpYyAtZm5vLXBsdCAtbWV4cGxpY2l0LXJl bG9jcyAtbWNtb2RlbD1leHRyZW1lIiB9ICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXIgInRlc3Q6LipwY2FsYXUxMmkuKiVnb3RfcGNfaGkyMC4qXG5cdGFkZGlcLmQuKiVnb3RfcGNf bG8xMi4qXG5cdGx1MzJpXC5kLiolZ290NjRfcGNfbG8yMC4qXG5cdGx1NTJpXC5kLiolZ290NjRf cGNfaGkxMi4qXG5cdGxkeFwuZCIgfSB9ICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXIgInRlc3QxOi4qcGNhbGF1MTJpLiolZ290X3BjX2hpMjAuKlxuXHRhZGRpXC5kLiolZ290X3Bj X2xvMTIuKlxuXHRsdTMyaVwuZC4qJWdvdDY0X3BjX2xvMjAuKlxuXHRsdTUyaVwuZC4qJWdvdDY0 X3BjX2hpMTIuKlxuXHRsZHhcLmQiIH0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyICJ0ZXN0MjouKnBjYWxhdTEyaS4qJXBjX2hpMjAuKlxuXHRhZGRpXC5kLiolcGNfbG8xMi4q XG5cdGx1MzJpXC5kLiolcGM2NF9sbzIwLipcblx0bHU1MmlcLmQuKnBjNjRfaGkxMi4qXG5cdGFk ZFwuZCIgfSB9ICovCiAKLWV4dGVybiB2b2lkIGcgKHZvaWQpOwotdm9pZAotZiAodm9pZCkKLXt9 Ci0KLXN0YXRpYyB2b2lkCi1sICh2b2lkKQote30KLQotdm9pZAotdGVzdCAodm9pZCkKLXsKLSAg ZyAoKTsKLX0KLQotdm9pZAotdGVzdDEgKHZvaWQpCi17Ci0gIGYgKCk7Ci19Ci0KLXZvaWQKLXRl c3QyICh2b2lkKQotewotICBsICgpOwotfQorI2luY2x1ZGUgImZ1bmMtY2FsbC1leHRyZW1lLTEu YyIKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9sb29uZ2FyY2gvZnVuYy1j YWxsLWV4dHJlbWUtMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2xvb25nYXJjaC9mdW5j LWNhbGwtZXh0cmVtZS0zLmMKaW5kZXggYTRkYTQ0YjRhM2QuLjFmNTIzNGY4M2QxIDEwMDY0NAot LS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvbG9vbmdhcmNoL2Z1bmMtY2FsbC1leHRyZW1l LTMuYworKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvbG9vbmdhcmNoL2Z1bmMtY2FsbC1l eHRyZW1lLTMuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0vKiB7 IGRnLW9wdGlvbnMgIi1tYWJpPWxwNjRkIC1PMCAtZm5vLXBpYyAtZm5vLXBsdCAtbWV4cGxpY2l0 LXJlbG9jcz1hdXRvIC1tY21vZGVsPWV4dHJlbWUiIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1h Ymk9bHA2NGQgLU8yIC1mbm8tcGljIC1mbm8tcGx0IC1tZXhwbGljaXQtcmVsb2NzPWF1dG8gLW1j bW9kZWw9ZXh0cmVtZSIgfSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ0ZXN0 Oi4qcGNhbGF1MTJpLiolZ290X3BjX2hpMjAuKlxuXHRhZGRpXC5kLiolZ290X3BjX2xvMTIuKlxu XHRsdTMyaVwuZC4qJWdvdDY0X3BjX2xvMjAuKlxuXHRsdTUyaVwuZC4qJWdvdDY0X3BjX2hpMTIu KlxuXHRsZHhcLmQiIH0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ0ZXN0 MTouKnBjYWxhdTEyaS4qJXBjX2hpMjAuKlxuXHRhZGRpXC5kLiolcGNfbG8xMi4qXG5cdGx1MzJp XC5kLiolcGM2NF9sbzIwLipcblx0bHU1MmlcLmQuKnBjNjRfaGkxMi4qXG5cdGFkZFwuZCIgfSB9 ICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInRlc3QyOi4qcGNhbGF1MTJpLiol cGNfaGkyMC4qXG5cdGFkZGlcLmQuKiVwY19sbzEyLipcblx0bHUzMmlcLmQuKiVwYzY0X2xvMjAu KlxuXHRsdTUyaVwuZC4qcGM2NF9oaTEyLipcblx0YWRkXC5kIiB9IH0gKi8KZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9sb29uZ2FyY2gvZnVuYy1jYWxsLWV4dHJlbWUtNC5j IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2xvb25nYXJjaC9mdW5jLWNhbGwtZXh0cmVtZS00 LmMKaW5kZXggMTZiMDBmNGM1ZjIuLmM0MjI4NTAwNjM1IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvbG9vbmdhcmNoL2Z1bmMtY2FsbC1leHRyZW1lLTQuYworKysgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvbG9vbmdhcmNoL2Z1bmMtY2FsbC1leHRyZW1lLTQuYwpAQCAt MSw1ICsxLDUgQEAKIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0vKiB7IGRnLW9wdGlvbnMgIi1t YWJpPWxwNjRkIC1PMCAtZnBpYyAtZm5vLXBsdCAtbWV4cGxpY2l0LXJlbG9jcz1hdXRvIC1tY21v ZGVsPWV4dHJlbWUiIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1hYmk9bHA2NGQgLU8yIC1mcGlj IC1mbm8tcGx0IC1tZXhwbGljaXQtcmVsb2NzPWF1dG8gLW1jbW9kZWw9ZXh0cmVtZSIgfSAqLwog LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ0ZXN0Oi4qcGNhbGF1MTJpLiolZ290X3Bj X2hpMjAuKlxuXHRhZGRpXC5kLiolZ290X3BjX2xvMTIuKlxuXHRsdTMyaVwuZC4qJWdvdDY0X3Bj X2xvMjAuKlxuXHRsdTUyaVwuZC4qJWdvdDY0X3BjX2hpMTIuKlxuXHRsZHhcLmQiIH0gfSAqLwog LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ0ZXN0MTouKnBjYWxhdTEyaS4qJWdvdF9w Y19oaTIwLipcblx0YWRkaVwuZC4qJWdvdF9wY19sbzEyLipcblx0bHUzMmlcLmQuKiVnb3Q2NF9w Y19sbzIwLipcblx0bHU1MmlcLmQuKiVnb3Q2NF9wY19oaTEyLipcblx0bGR4XC5kIiB9IH0gKi8K IC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAidGVzdDI6LipwY2FsYXUxMmkuKiVwY19o aTIwLipcblx0YWRkaVwuZC4qJXBjX2xvMTIuKlxuXHRsdTMyaVwuZC4qJXBjNjRfbG8yMC4qXG5c dGx1NTJpXC5kLipwYzY0X2hpMTIuKlxuXHRhZGRcLmQiIH0gfSAqLwotLSAKMi40My4wCgo= --=-Z7S1tQCm3hvWhOrRrhlM--