This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

c++/2513: internal template template parameter causes "Internal compiler error 980422"



>Number:         2513
>Category:       c++
>Synopsis:       internal template template parameter causes "Internal compiler error 980422"
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Apr 09 06:36:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     ariels@compugen.co.il
>Release:        2.95.3
>Organization:
>Environment:

>Description:
The attached code causes the compiler to fail with "Internal
compiler error".  Compiling the same code (TODAY) on
CodeSourcery's online test compiler also fails.

I am able to simplify the code such that it still fails for
my 2.95.3; however the CodeSourcery compiler manages to
compile the code.

The warning message appears spurious.  It's triggered by
the `Loki' class library, but also appears on successful
compilations.

Here's the output of compilation on 2.95.3:

Reading specs from /usr/local/lib/gcc-lib/mips-sgi-irix6.5/2.95.3/specs
gcc version 2.95.3 20010315 (release)
 /usr/local/lib/gcc-lib/mips-sgi-irix6.5/2.95.3/cpp0 -lang-c++ -v -I/home/ariels/stuff/Loki -D__GNUC__=2 -D__GNUG__=2 -D__GNUC_MINOR__=95 -D__cplusplus -Dunix -Dmips -Dsgi -Dhost_mips -DMIPSEB -D_MIPSEB -DSYSTYPE_SVR4 -D_LONGLONG -D_SVR4_SOURCE -D_MODERN_C -D__DSO__ -D__unix__ -D__mips__ -D__sgi__ -D__host_mips__ -D__MIPSEB__ -D_MIPSEB -D__SYSTYPE_SVR4__ -D_LONGLONG -D_SVR4_SOURCE -D_MODERN_C -D__DSO__ -D__unix -D__mips -D__sgi -D__host_mips -D__MIPSEB -D__SYSTYPE_SVR4 -Asystem(unix) -Asystem(svr4) -Acpu(mips) -Amachine(sgi) -D__EXCEPTIONS -D__CHAR_UNSIGNED__ -D__LANGUAGE_C_PLUS_PLUS -D_LANGUAGE_C_PLUS_PLUS -D__SIZE_TYPE__=unsigned int -D__PTRDIFF_TYPE__=int -D__EXTENSIONS__ -D_SGI_SOURCE -D_MIPS_FPSET=32 -D_MIPS_ISA=_MIPS_ISA_MIPS3 -D_ABIN32=2 -D_MIPS_SIM=_ABIN32 -D_MIPS_SZINT=32 -D_MIPS_SZLONG=32 -D_MIPS_SZPTR=32 -D_COMPILER_VERSION=601 -U__mips -D__mips=3 -D__mips64 ./intN.cc intN.ii
GNU CPP version 2.95.3 20010315 (release) [AL 1.1, MM 40] SGI running IRIX 6.x
#include "..." search starts here:
#include <...> search starts here:
 /home/ariels/stuff/Loki
 /usr/local/lib/gcc-lib/mips-sgi-irix6.5/2.95.3/../../../../include/g++-3
 /usr/local/include
 /usr/local/lib/gcc-lib/mips-sgi-irix6.5/2.95.3/../../../../mips-sgi-irix6.5/include
 /usr/local/lib/gcc-lib/mips-sgi-irix6.5/2.95.3/include
 /usr/include
End of search list.
The following default directories have been omitted from the search path:
End of omitted list.
 /usr/local/lib/gcc-lib/mips-sgi-irix6.5/2.95.3/cc1plus intN.ii -quiet -dumpbase intN.cc -version -o intN.s
GNU C++ version 2.95.3 20010315 (release) (mips-sgi-irix6.5) compiled by GNU C version 2.95.3 20010315 (release).
In file included from /home/ariels/stuff/Loki/Typelist.h:22,
                 from ./intN.cc:10:
/home/ariels/stuff/Loki/TypeManip.h:108: warning: all member functions in class `Loki::Conversion<T,U>' are private
./intN.cc:68: Internal compiler error 980422.
./intN.cc:68: Please submit a full bug report.
./intN.cc:68: See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.




Here's the CodeSourcery output:

      In file included from intN.cc:10:
      /home/ariels/stuff/Loki/Typelist.h:33:44: warning: expected to return to line number 22
      In file included from /home/ariels/stuff/Loki/Typelist.h:22,
                       from intN.cc:10:
      /home/ariels/stuff/Loki/TypeManip.h:98: warning: all member functions in class 
         `Loki::Conversion' are private
      In file included from intN.cc:10:
      /home/ariels/stuff/Loki/Typelist.h:166:44: warning: expected to return to line number 23
      intN.cc:735:19: warning: expected to return to line number 11
      intN.cc:121:19: warning: expected to return to line number 12
      intN.cc: In instantiation of `FindType > > > >, Int::RightSize>':
      intN.cc:68:   instantiated from here
      intN.cc:26: Internal error: Segmentation fault
      Please submit a full bug report, with preprocessed source if appropriate.
      See  for instructions.
>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="intN.ii"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="intN.ii"

IyAxICIuL2ludE4uY2MiCiAKCgogCgoKCnN0YXRpYyBjaGFyIHJjc2lkW109IiRJZCQiOwoKIyAx
ICIvaG9tZS9hcmllbHMvc3R1ZmYvTG9raS9UeXBlbGlzdC5oIiAxCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAoKIAoKCgoKIyAxICIvaG9tZS9hcmllbHMvc3R1ZmYvTG9raS9OdWxsVHlwZS5o
IiAxCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKIAoKCgoKbmFtZXNwYWNlIExva2kKewog
CiAKIAogCiAKCiAgICBjbGFzcyBOdWxsVHlwZSB7fTsKfQoKCiMgMjEgIi9ob21lL2FyaWVscy9z
dHVmZi9Mb2tpL1R5cGVsaXN0LmgiIDIKCiMgMSAiL2hvbWUvYXJpZWxzL3N0dWZmL0xva2kvVHlw
ZU1hbmlwLmgiIDEKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCgogCgoKCgpuYW1lc3BhY2Ug
TG9raQp7CiAKIAogCiAKIAogCgogICAgdGVtcGxhdGUgPGludCB2PgogICAgc3RydWN0IEludDJU
eXBlCiAgICB7CiAgICAgICAgZW51bSB7IHZhbHVlID0gdiB9OwogICAgfTsKICAgIAogCiAKIAog
CiAKIAoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgc3RydWN0IFR5cGUyVHlwZQogICAg
ewogICAgICAgIHR5cGVkZWYgVCBPcmlnaW5hbFR5cGU7CiAgICB9OwogICAgCiAKIAogCiAKIAog
CiAKIAogCgogICAgdGVtcGxhdGUgPGJvb2wgZmxhZywgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4K
ICAgIHN0cnVjdCBTZWxlY3QKICAgIHsKICAgICAgICB0eXBlZGVmIFQgUmVzdWx0OwogICAgfTsK
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgogICAgc3RydWN0IFNlbGVjdDxm
YWxzZSwgVCwgVT4KICAgIHsKICAgICAgICB0eXBlZGVmIFUgUmVzdWx0OwogICAgfTsKICAgIAog
CiAKIAoKICAgIG5hbWVzcGFjZSBQcml2YXRlCiAgICB7CiAgICAgICAgdHlwZWRlZiBjaGFyIFNt
YWxsOwogICAgICAgIGNsYXNzIEJpZyB7IGNoYXIgZHVtbXlbMl07IH07CiAgICB9CgogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAoKICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgog
ICAgY2xhc3MgQ29udmVyc2lvbgogICAgewogICAgICAgIHN0YXRpYyBQcml2YXRlOjpCaWcgVGVz
dCguLi4pOwogICAgICAgIHN0YXRpYyBQcml2YXRlOjpTbWFsbCBUZXN0KFUpOwogICAgICAgIHN0
YXRpYyBUIE1ha2VUKCk7CgogICAgcHVibGljOgogICAgICAgIGVudW0geyBleGlzdHMgPSBzaXpl
b2YoVGVzdChNYWtlVCgpKSkgPT0gc2l6ZW9mKFByaXZhdGU6OlNtYWxsKSB9OwogICAgICAgIGVu
dW0geyBleGlzdHMyV2F5ID0gZXhpc3RzICYmIAogICAgICAgICAgICBDb252ZXJzaW9uPFUsIFQ+
OjpleGlzdHMgfTsKICAgICAgICBlbnVtIHsgc2FtZVR5cGUgPSBmYWxzZSB9OwogICAgfTsKICAg
IAogICAgdGVtcGxhdGUgPGNsYXNzIFQ+CiAgICBjbGFzcyBDb252ZXJzaW9uPFQsIFQ+ICAgIAog
ICAgewogICAgcHVibGljOgogICAgICAgIGVudW0geyBleGlzdHMgPSAxLCBleGlzdHMyV2F5ID0g
MSxzYW1lVHlwZSA9IDEgfTsKICAgIH07CiAgICAKICAgIHRlbXBsYXRlIDxjbGFzcyBUPgogICAg
Y2xhc3MgQ29udmVyc2lvbjx2b2lkLCBUPiAgICAKICAgIHsKICAgIHB1YmxpYzoKICAgICAgICBl
bnVtIHsgZXhpc3RzID0gMSwgZXhpc3RzMldheSA9IDAsc2FtZVR5cGUgPSAwIH07CiAgICB9Owog
ICAgCiAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KICAgIGNsYXNzIENvbnZlcnNpb248VCwgdm9pZD4g
ICAgCiAgICB7CiAgICBwdWJsaWM6CiAgICAgICAgZW51bSB7IGV4aXN0cyA9IDEsIGV4aXN0czJX
YXkgPSAwLHNhbWVUeXBlID0gMCB9OwogICAgfTsKICAgIAogICAgdGVtcGxhdGUgPD4KICAgIGNs
YXNzIENvbnZlcnNpb248dm9pZCwgdm9pZD4gICAgCiAgICB7CiAgICBwdWJsaWM6CiAgICAgICAg
ZW51bSB7IGV4aXN0cyA9IDEsIGV4aXN0czJXYXkgPSAxLHNhbWVUeXBlID0gMSB9OwogICAgfTsg
ICAgCn0KCiAKIAogCiAKIAogCiAKIAoKCgoKCiAKIAogCiAKIAogCiAKCgoKCgoKCiMgMjIgIi9o
b21lL2FyaWVscy9zdHVmZi9Mb2tpL1R5cGVsaXN0LmgiIDIKCgogCiAKIAogCiAKIAogCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAyOTQgIi9ob21lL2FyaWVscy9zdHVmZi9Mb2tpL1R5cGVs
aXN0LmgiCgoKIyAzMDUgIi9ob21lL2FyaWVscy9zdHVmZi9Mb2tpL1R5cGVsaXN0LmgiCgoKIyAz
MTYgIi9ob21lL2FyaWVscy9zdHVmZi9Mb2tpL1R5cGVsaXN0LmgiCgoKIyAzMjcgIi9ob21lL2Fy
aWVscy9zdHVmZi9Mb2tpL1R5cGVsaXN0LmgiCgoKIyAzMzggIi9ob21lL2FyaWVscy9zdHVmZi9M
b2tpL1R5cGVsaXN0LmgiCgoKIyAzNDkgIi9ob21lL2FyaWVscy9zdHVmZi9Mb2tpL1R5cGVsaXN0
LmgiCgpuYW1lc3BhY2UgTG9raQp7CiAKIAogCiAKIAogCiAKIAoKICAgIHRlbXBsYXRlIDxjbGFz
cyBULCBjbGFzcyBVPgogICAgc3RydWN0IFR5cGVsaXN0CiAgICB7CiAgICAgICB0eXBlZGVmIFQg
SGVhZDsKICAgICAgIHR5cGVkZWYgVSBUYWlsOwogICAgfTsKCiAgICBuYW1lc3BhY2UgVEwKICAg
IHsKIAogCiAKIAogCiAKIAogCgogICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUTGlzdD4gc3RydWN0
IExlbmd0aDsKICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgTGVuZ3RoPE51bGxUeXBlPgogICAg
ICAgIHsKICAgICAgICAgICAgZW51bSB7IHZhbHVlID0gMCB9OwogICAgICAgIH07CiAgICAgICAg
CiAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+CiAgICAgICAgc3RydWN0IExlbmd0
aDwgVHlwZWxpc3Q8VCwgVT4gPgogICAgICAgIHsKICAgICAgICAgICAgZW51bSB7IHZhbHVlID0g
MSArIExlbmd0aDxVPjo6dmFsdWUgfTsKICAgICAgICB9OwoKIAogCiAKIAogCiAKIAogCiAKCiAg
ICAgICAgdGVtcGxhdGUgPGNsYXNzIFRMaXN0LCB1bnNpZ25lZCBpbnQgaW5kZXg+IHN0cnVjdCBU
eXBlQXQ7CiAgICAgICAgCiAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEhlYWQsIGNsYXNzIFRhaWw+
CiAgICAgICAgc3RydWN0IFR5cGVBdDxUeXBlbGlzdDxIZWFkLCBUYWlsPiwgMD4KICAgICAgICB7
CiAgICAgICAgICAgIHR5cGVkZWYgSGVhZCBSZXN1bHQ7CiAgICAgICAgfTsKCiAgICAgICAgdGVt
cGxhdGUgPGNsYXNzIEhlYWQsIGNsYXNzIFRhaWwsIHVuc2lnbmVkIGludCBpPgogICAgICAgIHN0
cnVjdCBUeXBlQXQ8VHlwZWxpc3Q8SGVhZCwgVGFpbD4sIGk+CiAgICAgICAgewogICAgICAgICAg
ICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVBdDxUYWlsLCBpIC0gMT46OlJlc3VsdCBSZXN1bHQ7CiAg
ICAgICAgfTsKCiAKIAogCiAKIAogCiAKIAogCiAKIAoKICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VExpc3QsIHVuc2lnbmVkIGludCBpbmRleCwKICAgICAgICAgICAgdHlwZW5hbWUgRGVmYXVsdFR5
cGUgPSBOdWxsVHlwZT4KICAgICAgICBzdHJ1Y3QgVHlwZUF0Tm9uU3RyaWN0CiAgICAgICAgewog
ICAgICAgICAgICB0eXBlZGVmIERlZmF1bHRUeXBlIFJlc3VsdDsKICAgICAgICB9OwogICAgICAg
IAogICAgICAgIHRlbXBsYXRlIDxjbGFzcyBIZWFkLCBjbGFzcyBUYWlsLCB0eXBlbmFtZSBEZWZh
dWx0VHlwZT4KICAgICAgICBzdHJ1Y3QgVHlwZUF0Tm9uU3RyaWN0PFR5cGVsaXN0PEhlYWQsIFRh
aWw+LCAwLCBEZWZhdWx0VHlwZT4KICAgICAgICB7CiAgICAgICAgICAgIHR5cGVkZWYgSGVhZCBS
ZXN1bHQ7CiAgICAgICAgfTsKICAgICAgICAKICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSGVhZCwg
Y2xhc3MgVGFpbCwgdW5zaWduZWQgaW50IGksIHR5cGVuYW1lIERlZmF1bHRUeXBlPgogICAgICAg
IHN0cnVjdCBUeXBlQXROb25TdHJpY3Q8VHlwZWxpc3Q8SGVhZCwgVGFpbD4sIGksIERlZmF1bHRU
eXBlPgogICAgICAgIHsKICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSAKICAgICAgICAgICAg
ICAgIFR5cGVBdE5vblN0cmljdDxUYWlsLCBpIC0gMSwgRGVmYXVsdFR5cGU+OjpSZXN1bHQgUmVz
dWx0OwogICAgICAgIH07CgogCiAKIAogCiAKIAogCgogICAgICAgIHRlbXBsYXRlIDxjbGFzcyBU
TGlzdCwgY2xhc3MgVD4gc3RydWN0IEluZGV4T2Y7CiAgICAgICAgCiAgICAgICAgdGVtcGxhdGUg
PGNsYXNzIFQ+CiAgICAgICAgc3RydWN0IEluZGV4T2Y8TnVsbFR5cGUsIFQ+CiAgICAgICAgewog
ICAgICAgICAgICBlbnVtIHsgdmFsdWUgPSAtMSB9OwogICAgICAgIH07CiAgICAgICAgCiAgICAg
ICAgdGVtcGxhdGUgPGNsYXNzIFRhaWwsIGNsYXNzIFQ+CiAgICAgICAgc3RydWN0IEluZGV4T2Y8
VHlwZWxpc3Q8VCwgVGFpbD4sIFQ+CiAgICAgICAgewogICAgICAgICAgICBlbnVtIHsgdmFsdWUg
PSAwIH07CiAgICAgICAgfTsKICAgICAgICAKICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSGVhZCwg
Y2xhc3MgVGFpbCwgY2xhc3MgVD4KICAgICAgICBzdHJ1Y3QgSW5kZXhPZjxUeXBlbGlzdDxIZWFk
LCBUYWlsPiwgVD4KICAgICAgICB7CiAgICAgICAgcHJpdmF0ZToKICAgICAgICAgICAgZW51bSB7
IHRlbXAgPSBJbmRleE9mPFRhaWwsIFQ+Ojp2YWx1ZSB9OwogICAgICAgIHB1YmxpYzoKICAgICAg
ICAgICAgZW51bSB7IHZhbHVlID0gdGVtcCA9PSAtMSA/IC0xIDogMSArIHRlbXAgfTsKICAgICAg
ICB9OwoKIAogCiAKIAogCiAKIAoKICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVExpc3QsIGNsYXNz
IFQ+IHN0cnVjdCBBcHBlbmQ7CiAgICAgICAgCiAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IEFw
cGVuZDxOdWxsVHlwZSwgTnVsbFR5cGU+CiAgICAgICAgewogICAgICAgICAgICB0eXBlZGVmIE51
bGxUeXBlIFJlc3VsdDsKICAgICAgICB9OwogICAgICAgIAogICAgICAgIHRlbXBsYXRlIDxjbGFz
cyBUPiBzdHJ1Y3QgQXBwZW5kPE51bGxUeXBlLCBUPgogICAgICAgIHsKICAgICAgICAgICAgdHlw
ZWRlZiA6Okxva2k6OlR5cGVsaXN0PCBUICwgOjpMb2tpOjpOdWxsVHlwZT4gIFJlc3VsdDsKICAg
ICAgICB9OwogICAgICAgIAogICAgICAgIHRlbXBsYXRlIDxjbGFzcyBIZWFkLCBjbGFzcyBUYWls
PgogICAgICAgIHN0cnVjdCBBcHBlbmQ8TnVsbFR5cGUsIFR5cGVsaXN0PEhlYWQsIFRhaWw+ID4K
ICAgICAgICB7CiAgICAgICAgICAgIHR5cGVkZWYgVHlwZWxpc3Q8SGVhZCwgVGFpbD4gUmVzdWx0
OwogICAgICAgIH07CiAgICAgICAgCiAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEhlYWQsIGNsYXNz
IFRhaWwsIGNsYXNzIFQ+CiAgICAgICAgc3RydWN0IEFwcGVuZDxUeXBlbGlzdDxIZWFkLCBUYWls
PiwgVD4KICAgICAgICB7CiAgICAgICAgICAgIHR5cGVkZWYgVHlwZWxpc3Q8SGVhZCwgCiAgICAg
ICAgICAgICAgICAgICAgdHlwZW5hbWUgQXBwZW5kPFRhaWwsIFQ+OjpSZXN1bHQ+CiAgICAgICAg
ICAgICAgICBSZXN1bHQ7CiAgICAgICAgfTsKICAgICAgICAKIAogCiAKIAogCiAKIAoKICAgICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVExpc3QsIGNsYXNzIFQ+IHN0cnVjdCBFcmFzZTsKICAgICAgICAK
ICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgIHN0cnVjdCBFcmFzZTxOdWxsVHlwZSwgVD4KICAgICAgICB7CiAgICAgICAgICAgIHR5cGVk
ZWYgTnVsbFR5cGUgUmVzdWx0OwogICAgICAgIH07CiAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQs
IGNsYXNzIFRhaWw+ICAgICAgICAgICAgICAKICAgICAgICBzdHJ1Y3QgRXJhc2U8VHlwZWxpc3Q8
VCwgVGFpbD4sIFQ+CiAgICAgICAgewogICAgICAgICAgICB0eXBlZGVmIFRhaWwgUmVzdWx0Owog
ICAgICAgIH07CiAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEhlYWQsIGNsYXNzIFRhaWwsIGNsYXNz
IFQ+ICAKICAgICAgICBzdHJ1Y3QgRXJhc2U8VHlwZWxpc3Q8SGVhZCwgVGFpbD4sIFQ+CiAgICAg
ICAgewogICAgICAgICAgICB0eXBlZGVmIFR5cGVsaXN0PEhlYWQsIAogICAgICAgICAgICAgICAg
ICAgIHR5cGVuYW1lIEVyYXNlPFRhaWwsIFQ+OjpSZXN1bHQ+CiAgICAgICAgICAgICAgICBSZXN1
bHQ7CiAgICAgICAgfTsKCiAKIAogCiAKIAogCiAKCiAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFRM
aXN0LCBjbGFzcyBUPiBzdHJ1Y3QgRXJhc2VBbGw7CiAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+
CiAgICAgICAgc3RydWN0IEVyYXNlQWxsPE51bGxUeXBlLCBUPgogICAgICAgIHsKICAgICAgICAg
ICAgdHlwZWRlZiBOdWxsVHlwZSBSZXN1bHQ7CiAgICAgICAgfTsKICAgICAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVCwgY2xhc3MgVGFpbD4KICAgICAgICBzdHJ1Y3QgRXJhc2VBbGw8VHlwZWxpc3Q8VCwg
VGFpbD4sIFQ+CiAgICAgICAgewogICAgICAgICAgICAgCiAgICAgICAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgRXJhc2VBbGw8VGFpbCwgVD46OlJlc3VsdCBSZXN1bHQ7CiAgICAgICAgfTsKICAgICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgSGVhZCwgY2xhc3MgVGFpbCwgY2xhc3MgVD4KICAgICAgICBzdHJ1
Y3QgRXJhc2VBbGw8VHlwZWxpc3Q8SGVhZCwgVGFpbD4sIFQ+CiAgICAgICAgewogICAgICAgICAg
ICAgCiAgICAgICAgICAgIHR5cGVkZWYgVHlwZWxpc3Q8SGVhZCwgCiAgICAgICAgICAgICAgICAg
ICAgdHlwZW5hbWUgRXJhc2VBbGw8VGFpbCwgVD46OlJlc3VsdD4KICAgICAgICAgICAgICAgIFJl
c3VsdDsKICAgICAgICB9OwoKIAogCiAKIAogCiAKCiAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFRM
aXN0PiBzdHJ1Y3QgTm9EdXBsaWNhdGVzOwogICAgICAgIAogICAgICAgIHRlbXBsYXRlIDw+IHN0
cnVjdCBOb0R1cGxpY2F0ZXM8TnVsbFR5cGU+CiAgICAgICAgewogICAgICAgICAgICB0eXBlZGVm
IE51bGxUeXBlIFJlc3VsdDsKICAgICAgICB9OwoKICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSGVh
ZCwgY2xhc3MgVGFpbD4KICAgICAgICBzdHJ1Y3QgTm9EdXBsaWNhdGVzPCBUeXBlbGlzdDxIZWFk
LCBUYWlsPiA+CiAgICAgICAgewogICAgICAgIHByaXZhdGU6CiAgICAgICAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgTm9EdXBsaWNhdGVzPFRhaWw+OjpSZXN1bHQgTDE7CiAgICAgICAgICAgIHR5cGVk
ZWYgdHlwZW5hbWUgRXJhc2U8TDEsIEhlYWQ+OjpSZXN1bHQgTDI7CiAgICAgICAgcHVibGljOgog
ICAgICAgICAgICB0eXBlZGVmIFR5cGVsaXN0PEhlYWQsIEwyPiBSZXN1bHQ7CiAgICAgICAgfTsK
CiAKIAogCiAKIAogCiAKCiAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFRMaXN0LCBjbGFzcyBULCBj
bGFzcyBVPiBzdHJ1Y3QgUmVwbGFjZTsKICAgICAgICAKICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VCwgY2xhc3MgVT4KICAgICAgICBzdHJ1Y3QgUmVwbGFjZTxOdWxsVHlwZSwgVCwgVT4KICAgICAg
ICB7CiAgICAgICAgICAgIHR5cGVkZWYgTnVsbFR5cGUgUmVzdWx0OwogICAgICAgIH07CgogICAg
ICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBUYWlsLCBjbGFzcyBVPgogICAgICAgIHN0cnVj
dCBSZXBsYWNlPFR5cGVsaXN0PFQsIFRhaWw+LCBULCBVPgogICAgICAgIHsKICAgICAgICAgICAg
dHlwZWRlZiBUeXBlbGlzdDxVLCBUYWlsPiBSZXN1bHQ7CiAgICAgICAgfTsKCiAgICAgICAgdGVt
cGxhdGUgPGNsYXNzIEhlYWQsIGNsYXNzIFRhaWwsIGNsYXNzIFQsIGNsYXNzIFU+CiAgICAgICAg
c3RydWN0IFJlcGxhY2U8VHlwZWxpc3Q8SGVhZCwgVGFpbD4sIFQsIFU+CiAgICAgICAgewogICAg
ICAgICAgICB0eXBlZGVmIFR5cGVsaXN0PEhlYWQsCiAgICAgICAgICAgICAgICAgICAgdHlwZW5h
bWUgUmVwbGFjZTxUYWlsLCBULCBVPjo6UmVzdWx0PgogICAgICAgICAgICAgICAgUmVzdWx0Owog
ICAgICAgIH07CgogCiAKIAogCiAKIAogCgogICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUTGlzdCwg
Y2xhc3MgVCwgY2xhc3MgVT4gc3RydWN0IFJlcGxhY2VBbGw7CiAgICAgICAgCiAgICAgICAgdGVt
cGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+CiAgICAgICAgc3RydWN0IFJlcGxhY2VBbGw8TnVsbFR5
cGUsIFQsIFU+CiAgICAgICAgewogICAgICAgICAgICB0eXBlZGVmIE51bGxUeXBlIFJlc3VsdDsK
ICAgICAgICB9OwogICAgICAgIAogICAgICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBUYWls
LCBjbGFzcyBVPgogICAgICAgIHN0cnVjdCBSZXBsYWNlQWxsPFR5cGVsaXN0PFQsIFRhaWw+LCBU
LCBVPgogICAgICAgIHsKICAgICAgICAgICAgdHlwZWRlZiBUeXBlbGlzdDxVLCB0eXBlbmFtZSBS
ZXBsYWNlQWxsPFRhaWwsIFQsIFU+OjpSZXN1bHQ+IFJlc3VsdDsKICAgICAgICB9OwogICAgICAg
IAogICAgICAgIHRlbXBsYXRlIDxjbGFzcyBIZWFkLCBjbGFzcyBUYWlsLCBjbGFzcyBULCBjbGFz
cyBVPgogICAgICAgIHN0cnVjdCBSZXBsYWNlQWxsPFR5cGVsaXN0PEhlYWQsIFRhaWw+LCBULCBV
PgogICAgICAgIHsKICAgICAgICAgICAgdHlwZWRlZiBUeXBlbGlzdDxIZWFkLAogICAgICAgICAg
ICAgICAgICAgIHR5cGVuYW1lIFJlcGxhY2VBbGw8VGFpbCwgVCwgVT46OlJlc3VsdD4KICAgICAg
ICAgICAgICAgIFJlc3VsdDsKICAgICAgICB9OwoKIAogCiAKIAogCiAKIAoKICAgICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVExpc3Q+IHN0cnVjdCBSZXZlcnNlOwogICAgICAgIAogICAgICAgIHRlbXBs
YXRlIDxjbGFzcyBUPgogICAgICAgIHN0cnVjdCBSZXZlcnNlPCA6Okxva2k6OlR5cGVsaXN0PCBU
ICwgOjpMb2tpOjpOdWxsVHlwZT4gID4KICAgICAgICB7CiAgICAgICAgICAgIHR5cGVkZWYgOjpM
b2tpOjpUeXBlbGlzdDwgVCAsIDo6TG9raTo6TnVsbFR5cGU+ICBSZXN1bHQ7CiAgICAgICAgfTsK
ICAgICAgICAKICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSGVhZCwgY2xhc3MgVGFpbD4KICAgICAg
ICBzdHJ1Y3QgUmV2ZXJzZTwgVHlwZWxpc3Q8SGVhZCwgVGFpbD4gPgogICAgICAgIHsKICAgICAg
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBcHBlbmQ8CiAgICAgICAgICAgICAgICB0eXBlbmFtZSBS
ZXZlcnNlPFRhaWw+OjpSZXN1bHQsIEhlYWQ+OjpSZXN1bHQgUmVzdWx0OwogICAgICAgIH07Cgog
CiAKIAogCiAKIAogCgogICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUTGlzdCwgY2xhc3MgVD4gc3Ry
dWN0IE1vc3REZXJpdmVkOwogICAgICAgIAogICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgogICAg
ICAgIHN0cnVjdCBNb3N0RGVyaXZlZDxOdWxsVHlwZSwgVD4KICAgICAgICB7CiAgICAgICAgICAg
IHR5cGVkZWYgVCBSZXN1bHQ7CiAgICAgICAgfTsKICAgICAgICAKICAgICAgICB0ZW1wbGF0ZSA8
Y2xhc3MgSGVhZCwgY2xhc3MgVGFpbCwgY2xhc3MgVD4KICAgICAgICBzdHJ1Y3QgTW9zdERlcml2
ZWQ8VHlwZWxpc3Q8SGVhZCwgVGFpbD4sIFQ+CiAgICAgICAgewogICAgICAgIHByaXZhdGU6CiAg
ICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgTW9zdERlcml2ZWQ8VGFpbCwgVD46OlJlc3VsdCBD
YW5kaWRhdGU7CiAgICAgICAgcHVibGljOgogICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFNl
bGVjdDwKICAgICAgICAgICAgICAgICg6Okxva2k6OkNvbnZlcnNpb248Y29uc3QgICBIZWFkICos
IGNvbnN0ICBDYW5kaWRhdGUgKj46OmV4aXN0cyAmJiAhOjpMb2tpOjpDb252ZXJzaW9uPGNvbnN0
ICBDYW5kaWRhdGUgKiwgY29uc3Qgdm9pZCo+OjpzYW1lVHlwZSkgLAogICAgICAgICAgICAgICAg
ICAgIEhlYWQsIENhbmRpZGF0ZT46OlJlc3VsdCBSZXN1bHQ7CiAgICAgICAgfTsKCiAKIAogCiAK
IAogCiAKCiAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFRMaXN0PiBzdHJ1Y3QgRGVyaXZlZFRvRnJv
bnQ7CiAgICAgICAgCiAgICAgICAgdGVtcGxhdGUgPD4KICAgICAgICBzdHJ1Y3QgRGVyaXZlZFRv
RnJvbnQ8TnVsbFR5cGU+CiAgICAgICAgewogICAgICAgICAgICB0eXBlZGVmIE51bGxUeXBlIFJl
c3VsdDsKICAgICAgICB9OwogICAgICAgIAogICAgICAgIHRlbXBsYXRlIDxjbGFzcyBIZWFkLCBj
bGFzcyBUYWlsPgogICAgICAgIHN0cnVjdCBEZXJpdmVkVG9Gcm9udDwgVHlwZWxpc3Q8SGVhZCwg
VGFpbD4gPgogICAgICAgIHsKICAgICAgICBwcml2YXRlOgogICAgICAgICAgICB0eXBlZGVmIHR5
cGVuYW1lIE1vc3REZXJpdmVkPFRhaWwsIEhlYWQ+OjpSZXN1bHQKICAgICAgICAgICAgICAgIFRo
ZU1vc3REZXJpdmVkOwogICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFJlcGxhY2U8VGFpbCwg
CiAgICAgICAgICAgICAgICBUaGVNb3N0RGVyaXZlZCwgSGVhZD46OlJlc3VsdCBMOwogICAgICAg
IHB1YmxpYzoKICAgICAgICAgICAgdHlwZWRlZiBUeXBlbGlzdDxUaGVNb3N0RGVyaXZlZCwgTD4g
UmVzdWx0OwogICAgICAgIH07CiAgICAgICAgCiAgICB9ICAgIAp9ICAgIAoKCiMgMTAgIi4vaW50
Ti5jYyIgMgoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL21pcHMtc2dpLWlyaXg2LjUvMi45
NS4zL2luY2x1ZGUvbGltaXRzLmgiIDEgMwogCgoKIAoKCgoKCiAKIyAxICIvdXNyL2xvY2FsL2xp
Yi9nY2MtbGliL21pcHMtc2dpLWlyaXg2LjUvMi45NS4zL2luY2x1ZGUvc3lzbGltaXRzLmgiIDEg
MwogCgoKCgoKCgoKCgoKCgoKCgogCiAKCiAKIAogCgoKCiNpZGVudCAgIiRSZXZpc2lvbjogNy40
MSAkIgojIDEgIi91c3IvaW5jbHVkZS9zdGFuZGFyZHMuaCIgMSAzCgoKIAoKCgoKCgoKCgoKCgoK
CgojaWRlbnQgICIkSWQ6IHN0YW5kYXJkcy5oLHYgMS4xOSAxOTk3LzEyLzE1IDIxOjMwOjI1IGpw
aCBFeHAgJCIKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgogCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoK
IAoKCgoKCiMgMjggIi91c3IvbG9jYWwvbGliL2djYy1saWIvbWlwcy1zZ2ktaXJpeDYuNS8yLjk1
LjMvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9zZ2lkZWZzLmgi
IDEgMwogCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICJDIiB7CgoKI2lkZW50ICAiJFJldmlzaW9uOiAx
LjExICQiCgogCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoKCgoKCgoKCgogCgoKCgoKCgkJIAoK
CiAKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoK
CgoKCgoKCiAKCgoKCgoKCgoKCgp0eXBlZGVmIGludCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWdu
ZWQgIF9fdWludDMyX3Q7CgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgkgCnR5cGVkZWYgbG9uZyBsb25nIF9faW50NjRfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25n
IGxvbmcgIF9fdWludDY0X3Q7CgojIDIxNCAiL3Vzci9pbmNsdWRlL3NnaWRlZnMuaCIgMwoKCgoK
CnR5cGVkZWYgX19pbnQzMl90IF9fcHNpbnRfdDsKdHlwZWRlZiBfX3VpbnQzMl90IF9fcHN1bnNp
Z25lZF90OwoKCgoKCgoKIAoKCgoKCgoKCgoKCiAKdHlwZWRlZiBfX2ludDMyX3QgX19zY2ludF90
Owp0eXBlZGVmIF9fdWludDMyX3QgX19zY3Vuc2lnbmVkX3Q7CgoKCgoKCn0KCgoKIyAyOSAiL3Vz
ci9sb2NhbC9saWIvZ2NjLWxpYi9taXBzLXNnaS1pcml4Ni41LzIuOTUuMy9pbmNsdWRlL3N5c2xp
bWl0cy5oIiAyIDMKCgoKZXh0ZXJuICJDIiB7CgogCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoK
CgoKCgoKCgoKCgoKCgoJCQkJIAoKCgoKCQkJCSAKCgoKCgoKCgoKCgp0eXBlZGVmIHVuaW9uIF9o
X3ZhbCB7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgaVsyXTsKCgoKCiAgICAgICAgZG91YmxlIGQ7
Cn0gX2hfdmFsOwoKZXh0ZXJuIGNvbnN0IF9oX3ZhbCBfX2h1Z2VfdmFsOwoKCgoKCgp9CgoKIyAx
MSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9taXBzLXNnaS1pcml4Ni41LzIuOTUuMy9pbmNsdWRl
L2xpbWl0cy5oIiAyIDMKCgoKCgogCgoKCiAKCgoKIAoKCgoKIAoKCgoKCiAKCgoKIAoKCgoKCgoK
CgoKCgogCgogCgoKCgogCgoKCiAKCgoKCgoKCgogCgoKCiAKCgoKCgoKCgoKCgoKCiAKCgoKCiAK
CgoKCgoKCgogCgoKCgoKCiAKCgoKCgoKCgoKIyAxMSAiLi9pbnROLmNjIiAyCgoKdXNpbmcgbmFt
ZXNwYWNlIExva2k7CgpjbGFzcyBOb1R5cGVGb3VuZDsJCSAKCiAKdGVtcGxhdGUgPGNsYXNzIFRM
LCB0ZW1wbGF0ZTxjbGFzcz4gY2xhc3MgUHJlZD4Kc3RydWN0IEZpbmRUeXBlOwoKdGVtcGxhdGUg
PGNsYXNzIEgsIGNsYXNzIFQsIHRlbXBsYXRlPGNsYXNzPiBjbGFzcyBQcmVkPgpzdHJ1Y3QgRmlu
ZFR5cGU8IFR5cGVsaXN0PEgsIFQ+LCBQcmVkID4gewogIHR5cGVkZWYgdHlwZW5hbWUgU2VsZWN0
PCBQcmVkPEg+OjpWYWx1ZSA9PSAxLAoJCQkgICBILAoJCQkgICB0eXBlbmFtZSBGaW5kVHlwZTxU
LCBQcmVkPjo6UmVzdWx0CiAgPjo6UmVzdWx0IFJlc3VsdDsKfTsKCnRlbXBsYXRlIDx0ZW1wbGF0
ZTxjbGFzcz4gY2xhc3MgUHJlZD4Kc3RydWN0IEZpbmRUeXBlPCBOdWxsVHlwZSwgUHJlZD4gewog
IHR5cGVkZWYgTm9UeXBlRm91bmQgUmVzdWx0OwkgCn07CgoKIAp0ZW1wbGF0ZSA8Y2xhc3MgVEws
IGludCBiaXRzPgpzdHJ1Y3QgU2VsZWN0SW50OwkJIAoKdGVtcGxhdGUgPGludCBiaXRzPgpzdHJ1
Y3QgU2VsZWN0SW50PE51bGxUeXBlLCBiaXRzPiB7CiAgdHlwZWRlZiBOb1R5cGVGb3VuZCBSZXN1
bHQ7ICAKfTsKCnRlbXBsYXRlIDxjbGFzcyBIZWFkLCBjbGFzcyBUYWlsLCBpbnQgYml0cz4Kc3Ry
dWN0IFNlbGVjdEludDwgVHlwZWxpc3Q8SGVhZCwgVGFpbD4sIGJpdHMgPiB7CiAgdHlwZWRlZiB0
eXBlbmFtZSBTZWxlY3Q8IHNpemVvZihIZWFkKSAqIDggID09IGJpdHMsCgkJCSAgIEhlYWQsCgkJ
CSAgIHR5cGVuYW1lIFNlbGVjdEludDxUYWlsLCBiaXRzPjo6UmVzdWx0ID46OlJlc3VsdAogIFJl
c3VsdDsKfTsKIAoKCnRlbXBsYXRlIDxpbnQgYml0cz4KY2xhc3MgSW50IHsKCiAgIAogIHR5cGVk
ZWYgdHlwZW5hbWUgOjpMb2tpOjpUeXBlbGlzdDwgc2lnbmVkIGNoYXIgLCA6Okxva2k6OlR5cGVs
aXN0PCAgIHNob3J0ICAsIDo6TG9raTo6VHlwZWxpc3Q8ICAgICBpbnQgICAsIDo6TG9raTo6VHlw
ZWxpc3Q8ICAgICAgIGxvbmcgICAgLCA6Okxva2k6OlR5cGVsaXN0PCAgICAgICAgIGxvbmcgbG9u
ZyAgICAgLCA6Okxva2k6Ok51bGxUeXBlPiAgPiAgPiAgPiAgPiAKICAgIFNpZ25lZEludHM7Cgog
ICAKICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogIHN0cnVjdCBSaWdodFNpemUgewogICAgZW51bSB7
IFZhbHVlID0gKHNpemVvZihUKSogOCAgPT0gYml0cykgfTsKICB9OwoKcHVibGljOgogIHR5cGVk
ZWYgdHlwZW5hbWUgRmluZFR5cGU8U2lnbmVkSW50cywgUmlnaHRTaXplPjo6UmVzdWx0IHR5cGU7
Cn07CgoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL21pcHMtc2dpLWlyaXg2LjUvMi45NS4z
Ly4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvaW9zdHJlYW0iIDEgMwogCiAKCgoKIyAxICIvdXNy
L2xvY2FsL2xpYi9nY2MtbGliL21pcHMtc2dpLWlyaXg2LjUvMi45NS4zLy4uLy4uLy4uLy4uL2lu
Y2x1ZGUvZysrLTMvaW9zdHJlYW0uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNw
cmFnbWEgaW50ZXJmYWNlCgoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9taXBzLXNnaS1p
cml4Ni41LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0cmVhbWJ1Zi5oIiAxIDMK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNwcmFnbWEgaW50ZXJmYWNlCgoKICAgCgoKCmV4
dGVybiAiQyIgewojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvbWlwcy1zZ2ktaXJpeDYuNS8y
Ljk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9saWJpby5oIiAxIDMKIAoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL21pcHMtc2dpLWly
aXg2LjUvMi45NS4zLy4uLy4uLy4uLy4uL21pcHMtc2dpLWlyaXg2LjUvaW5jbHVkZS9fR19jb25m
aWcuaCIgMSAzCiAgCgoKCgoKCgoKCnR5cGVkZWYgICAgICAgICAgaW50ICAgX0dfaW50OF90IF9f
YXR0cmlidXRlX18oKF9fbW9kZV9fKF9fUUlfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgIF9H
X3VpbnQ4X3QgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX19RSV9fKSkpOwp0eXBlZGVmICAgICAg
ICAgIGludCAgX0dfaW50MTZfdCBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX0hJX18pKSk7CnR5
cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18oKF9fbW9kZV9fKF9f
SElfXykpKTsKdHlwZWRlZiAgICAgICAgICBpbnQgIF9HX2ludDMyX3QgX19hdHRyaWJ1dGVfXygo
X19tb2RlX18oX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MzJfdCBfX2F0
dHJpYnV0ZV9fKChfX21vZGVfXyhfX1NJX18pKSk7CnR5cGVkZWYgICAgICAgICAgaW50ICBfR19p
bnQ2NF90IF9fYXR0cmlidXRlX18oKF9fbW9kZV9fKF9fRElfXykpKTsKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgX0dfdWludDY0X3QgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX19ESV9fKSkpOwoKX19l
eHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgbG9uZyBfR19sbG9uZzsKX19leHRlbnNpb25fXyB0eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBfR191bGxvbmc7CgoKCgoKCgoKdHlwZWRlZiBsb25nIF9H
X2Nsb2NrX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfR19kZXZfdDsKdHlwZWRlZiBfR19sbG9u
ZyBfR19mcG9zX3Q7CnR5cGVkZWYgbG9uZyBfR19naWRfdDsKdHlwZWRlZiBfR191bGxvbmcgX0df
aW5vX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfR19tb2RlX3Q7CnR5cGVkZWYgdW5zaWduZWQg
bG9uZyBfR19ubGlua190Owp0eXBlZGVmIF9HX2xsb25nIF9HX29mZl90Owp0eXBlZGVmIGxvbmcg
X0dfcGlkX3Q7CgoKCnR5cGVkZWYgaW50ICBfR19wdHJkaWZmX3Q7CnR5cGVkZWYgaW50ICAgX0df
c2lnc2V0X3Q7CgoKCnR5cGVkZWYgdW5zaWduZWQgaW50ICBfR19zaXplX3Q7CnR5cGVkZWYgbG9u
ZyBfR190aW1lX3Q7CnR5cGVkZWYgbG9uZyBfR191aWRfdDsKdHlwZWRlZiBsb25nIF9HX3djaGFy
X3Q7CgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgaW50IF9HX3NzaXplX3Q7CnR5cGVkZWYgdW5zaWdu
ZWQgaW50IF9HX3dpbnRfdDsKdHlwZWRlZiBjaGFyICogX0dfdmFfbGlzdDsKCgoKCgoKCgoKCgoK
CgoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvbWlwcy1zZ2ktaXJpeDYuNS8yLjk1LjMv
aW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xvY2FsL2xpYi9nY2Mt
bGliL21pcHMtc2dpLWlyaXg2LjUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAK
CgoKCgogCgoKIyA2MSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9taXBzLXNnaS1pcml4Ni41LzIu
OTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CgoKCiAKCiAKCiMgMTMxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL21pcHMtc2dpLWlyaXg2LjUv
Mi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgojIDE5MCAiL3Vzci9sb2NhbC9saWIv
Z2NjLWxpYi9taXBzLXNnaS1pcml4Ni41LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAK
CgoKCiAKCiMgMjcxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL21pcHMtc2dpLWlyaXg2LjUvMi45
NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgojIDI4MyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9t
aXBzLXNnaS1pcml4Ni41LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKIyAzMTcg
Ii91c3IvbG9jYWwvbGliL2djYy1saWIvbWlwcy1zZ2ktaXJpeDYuNS8yLjk1LjMvaW5jbHVkZS9z
dGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDg2ICIvdXNyL2xvY2FsL2xp
Yi9nY2MtbGliL21pcHMtc2dpLWlyaXg2LjUvMi45NS4zLy4uLy4uLy4uLy4uL21pcHMtc2dpLWly
aXg2LjUvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCgoKIyAzMCAiL3Vzci9sb2NhbC9saWIvZ2Nj
LWxpYi9taXBzLXNnaS1pcml4Ni41LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2xp
YmlvLmgiIDIgMwoKCgoKCgoKCgoKCgoKCgoKCiMgNTUgIi91c3IvbG9jYWwvbGliL2djYy1saWIv
bWlwcy1zZ2ktaXJpeDYuNS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9saWJpby5o
IiAzCgoKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAzCgoKIAoKCgoKCgoKCgoK
CgoKCgoKCgojaWRlbnQgICIkUmV2aXNpb246IDEuMyAkIgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoK
CgoKCgoKIyA1OSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9taXBzLXNnaS1pcml4Ni41LzIuOTUu
My8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2xpYmlvLmgiIDIgMwoKCgoKCgoKCgoKCgoKCgoK
CgogCgoKCgoKCgoKCgoKCgoKCiMgMTA0ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL21pcHMtc2dp
LWlyaXg2LjUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvbGliaW8uaCIgMwoKCgoK
CgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCnN0
cnVjdCBfSU9fanVtcF90OyAgc3RydWN0IF9JT19GSUxFOwoKIAojIDE3NSAiL3Vzci9sb2NhbC9s
aWIvZ2NjLWxpYi9taXBzLXNnaS1pcml4Ni41LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2cr
Ky0zL2xpYmlvLmgiIDMKCgoKCgoKCgoKICAgIHR5cGVkZWYgdm9pZCBfSU9fbG9ja190OwoKCgoK
CiAKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBzdHJ1Y3QgX0lPX21hcmtlciAqX25leHQ7CiAgc3Ry
dWN0IF9JT19GSUxFICpfc2J1ZjsKICAgCgogICAKICBpbnQgX3BvczsKIyAyMDggIi91c3IvbG9j
YWwvbGliL2djYy1saWIvbWlwcy1zZ2ktaXJpeDYuNS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVk
ZS9nKystMy9saWJpby5oIiAzCgp9OwoKc3RydWN0IF9JT19GSUxFIHsKICBpbnQgX2ZsYWdzOwkJ
IAoKCiAgIAogICAKICBjaGFyKiBfSU9fcmVhZF9wdHI7CSAKICBjaGFyKiBfSU9fcmVhZF9lbmQ7
CSAKICBjaGFyKiBfSU9fcmVhZF9iYXNlOwkgCiAgY2hhciogX0lPX3dyaXRlX2Jhc2U7CSAKICBj
aGFyKiBfSU9fd3JpdGVfcHRyOwkgCiAgY2hhciogX0lPX3dyaXRlX2VuZDsJIAogIGNoYXIqIF9J
T19idWZfYmFzZTsJIAogIGNoYXIqIF9JT19idWZfZW5kOwkgCiAgIAogIGNoYXIgKl9JT19zYXZl
X2Jhc2U7ICAKICBjaGFyICpfSU9fYmFja3VwX2Jhc2U7ICAgCiAgY2hhciAqX0lPX3NhdmVfZW5k
OyAgCgogIHN0cnVjdCBfSU9fbWFya2VyICpfbWFya2VyczsKCiAgc3RydWN0IF9JT19GSUxFICpf
Y2hhaW47CgogIGludCBfZmlsZW5vOwogIGludCBfYmxrc2l6ZTsKCgoKICBfR19vZmZfdCAgX29m
ZnNldDsKCgoKICAgCiAgdW5zaWduZWQgc2hvcnQgX2N1cl9jb2x1bW47CiAgY2hhciBfdW51c2Vk
OwogIGNoYXIgX3Nob3J0YnVmWzFdOwoKICAgCgoKCgoKCgoKfTsKCgoKCgoKCgoKCgpzdHJ1Y3Qg
X0lPX0ZJTEVfcGx1czsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT19zdGRpbl8sIF9J
T19zdGRvdXRfLCBfSU9fc3RkZXJyXzsKCgoKCgogCnR5cGVkZWYgc3RydWN0CnsKICBfR19zc2l6
ZV90ICAoKnJlYWQpICAoc3RydWN0IF9JT19GSUxFICosIHZvaWQgKiwgX0dfc3NpemVfdCApICA7
CiAgX0dfc3NpemVfdCAgKCp3cml0ZSkgIChzdHJ1Y3QgX0lPX0ZJTEUgKiwgY29uc3Qgdm9pZCAq
LCBfR19zc2l6ZV90ICkgIDsKICBfR19vZmZfdCAgKCpzZWVrKSAgKHN0cnVjdCBfSU9fRklMRSAq
LCBfR19vZmZfdCAsIGludCkgIDsKICBpbnQgKCpjbG9zZSkgIChzdHJ1Y3QgX0lPX0ZJTEUgKikg
IDsKfSBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190OwoKIApzdHJ1Y3QgX0lPX2Nvb2tpZV9maWxl
CnsKICBzdHJ1Y3QgX0lPX0ZJTEUgZmlsZTsKICBjb25zdCB2b2lkICp2dGFibGU7CiAgdm9pZCAq
Y29va2llOwogIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgaW9fZnVuY3Rpb25zOwp9OwoKCgpl
eHRlcm4gIkMiIHsKCgpleHRlcm4gaW50IF9fdW5kZXJmbG93ICAoX0lPX0ZJTEUgKikgIDsKZXh0
ZXJuIGludCBfX3VmbG93ICAoX0lPX0ZJTEUgKikgIDsKZXh0ZXJuIGludCBfX292ZXJmbG93ICAo
X0lPX0ZJTEUgKiwgaW50KSAgOwoKCgoKCgoKCgoKCgoKCgoKCmV4dGVybiBpbnQgX0lPX2dldGMg
IChfSU9fRklMRSAqX19mcCkgIDsKZXh0ZXJuIGludCBfSU9fcHV0YyAgKGludCBfX2MsIF9JT19G
SUxFICpfX2ZwKSAgOwpleHRlcm4gaW50IF9JT19mZW9mICAoX0lPX0ZJTEUgKl9fZnApICA7CmV4
dGVybiBpbnQgX0lPX2ZlcnJvciAgKF9JT19GSUxFICpfX2ZwKSAgOwoKZXh0ZXJuIGludCBfSU9f
cGVla2NfbG9ja2VkICAoX0lPX0ZJTEUgKl9fZnApICA7CgogCgoKCmV4dGVybiB2b2lkIF9JT19m
bG9ja2ZpbGUgIChfSU9fRklMRSAqKSAgOwpleHRlcm4gdm9pZCBfSU9fZnVubG9ja2ZpbGUgIChf
SU9fRklMRSAqKSAgOwpleHRlcm4gaW50IF9JT19mdHJ5bG9ja2ZpbGUgIChfSU9fRklMRSAqKSAg
OwoKCgoKCgoKCgoKCgoKZXh0ZXJuIGludCBfSU9fdmZzY2FuZiAgKF9JT19GSUxFICosIGNvbnN0
IGNoYXIgKiwgX0dfdmFfbGlzdCAsIGludCAqKSAgOwpleHRlcm4gaW50IF9JT192ZnByaW50ZiAg
KF9JT19GSUxFICosIGNvbnN0IGNoYXIgKiwgX0dfdmFfbGlzdCApICA7CmV4dGVybiBfR19zc2l6
ZV90ICBfSU9fcGFkbiAgKF9JT19GSUxFICosIGludCwgX0dfc3NpemVfdCApICA7CmV4dGVybiBf
R19zaXplX3QgIF9JT19zZ2V0biAgKF9JT19GSUxFICosIHZvaWQgKiwgX0dfc2l6ZV90ICkgIDsK
CgoKCgpleHRlcm4gX0dfb2ZmX3QgIF9JT19zZWVrb2ZmICAoX0lPX0ZJTEUgKiwgX0dfb2ZmX3Qg
LCBpbnQsIGludCkgIDsKZXh0ZXJuIF9HX29mZl90ICBfSU9fc2Vla3BvcyAgKF9JT19GSUxFICos
IF9HX29mZl90ICwgaW50KSAgOwoKCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVhICAo
X0lPX0ZJTEUgKikgIDsKCgp9CgoKCiMgMzYgIi91c3IvbG9jYWwvbGliL2djYy1saWIvbWlwcy1z
Z2ktaXJpeDYuNS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdHJlYW1idWYuaCIg
MiAzCgp9CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gIkMrKyIgewpjbGFzcyBp
c3RyZWFtOyAgCmNsYXNzIG9zdHJlYW07IGNsYXNzIHN0cmVhbWJ1ZjsKCiAKCgoKCgoKCnR5cGVk
ZWYgX0dfb2ZmX3QgIHN0cmVhbW9mZjsKdHlwZWRlZiBfR19vZmZfdCAgc3RyZWFtcG9zOwoKdHlw
ZWRlZiBfR19zc2l6ZV90ICBzdHJlYW1zaXplOwoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fZm10
ZmxhZ3M7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX2lvc3RhdGU7CgpzdHJ1Y3QgX2lvc19maWVs
ZHMKeyAgCiAgICBzdHJlYW1idWYgKl9zdHJidWY7CiAgICBvc3RyZWFtKiBfdGllOwogICAgaW50
IF93aWR0aDsKICAgIF9fZm10ZmxhZ3MgX2ZsYWdzOwogICAgc2hvcnQgIF9maWxsOwogICAgX19p
b3N0YXRlIF9zdGF0ZTsKICAgIF9faW9zdGF0ZSBfZXhjZXB0aW9uczsKICAgIGludCBfcHJlY2lz
aW9uOwoKICAgIHZvaWQgKl9hcnJheXM7ICAKfTsKCgoKCgoKCgoKCgoKCgoKIyAxMjQgIi91c3Iv
bG9jYWwvbGliL2djYy1saWIvbWlwcy1zZ2ktaXJpeDYuNS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5j
bHVkZS9nKystMy9zdHJlYW1idWYuaCIgMwoKCmNsYXNzIGlvcyA6IHB1YmxpYyBfaW9zX2ZpZWxk
cyB7CiAgaW9zJiBvcGVyYXRvcj0oaW9zJik7ICAgCiAgaW9zIChjb25zdCBpb3MmKTsgIAogIHB1
YmxpYzoKICAgIHR5cGVkZWYgX19mbXRmbGFncyBmbXRmbGFnczsKICAgIHR5cGVkZWYgaW50IGlv
c3RhdGU7CiAgICB0eXBlZGVmIGludCBvcGVubW9kZTsKICAgIHR5cGVkZWYgX0dfc3NpemVfdCAg
c3RyZWFtc2l6ZTsKICAgIGVudW0gaW9fc3RhdGUgewoJZ29vZGJpdCA9IDAgLAoJZW9mYml0ID0g
MSAsCglmYWlsYml0ID0gMiAsCgliYWRiaXQgPSA0ICB9OwogICAgZW51bSBvcGVuX21vZGUgewoJ
aW4gPSAxICwKCW91dCA9IDIgLAoJYXRlID0gNCAsCglhcHAgPSA4ICwKCXRydW5jID0gMTYgLAoJ
bm9jcmVhdGUgPSAzMiAsCglub3JlcGxhY2UgPSA2NCAsCgliaW4gPSAxMjggLCAgCgliaW5hcnkg
PSAxMjggIH07CiAgICBlbnVtIHNlZWtfZGlyIHsgYmVnLCBjdXIsIGVuZH07CiAgICB0eXBlZGVm
IGVudW0gc2Vla19kaXIgc2Vla2RpcjsKICAgICAKICAgIGVudW0geyBza2lwd3M9IDAxICwKCSAg
IGxlZnQ9IDAyICwgcmlnaHQ9IDA0ICwgaW50ZXJuYWw9IDAxMCAsCgkgICBkZWM9IDAyMCAsIG9j
dD0gMDQwICwgaGV4PSAwMTAwICwKCSAgIHNob3diYXNlPSAwMjAwICwgc2hvd3BvaW50PSAwNDAw
ICwKCSAgIHVwcGVyY2FzZT0gMDEwMDAgLCBzaG93cG9zPSAwMjAwMCAsCgkgICBzY2llbnRpZmlj
PSAwNDAwMCAsIGZpeGVkPSAwMTAwMDAgLAoJICAgdW5pdGJ1Zj0gMDIwMDAwICwgc3RkaW89IDA0
MDAwMCAKCgoKCSAgIH07CiAgICBlbnVtIHsgIAoJYmFzZWZpZWxkPWRlYytvY3QraGV4LAoJZmxv
YXRmaWVsZCA9IHNjaWVudGlmaWMrZml4ZWQsCglhZGp1c3RmaWVsZCA9IGxlZnQrcmlnaHQraW50
ZXJuYWwKICAgIH07CgojIDE3NyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9taXBzLXNnaS1pcml4
Ni41LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0cmVhbWJ1Zi5oIiAzCgoKICAg
IG9zdHJlYW0qIHRpZSgpIGNvbnN0IHsgcmV0dXJuIF90aWU7IH0KICAgIG9zdHJlYW0qIHRpZShv
c3RyZWFtKiB2YWwpIHsgb3N0cmVhbSogc2F2ZT1fdGllOyBfdGllPXZhbDsgcmV0dXJuIHNhdmU7
IH0KCiAgICAgCiAgICBzaG9ydCAgZmlsbCgpIGNvbnN0IHsgcmV0dXJuIF9maWxsOyB9CiAgICBz
aG9ydCAgZmlsbChzaG9ydCAgbmV3ZikKCXtzaG9ydCAgb2xkZiA9IF9maWxsOyBfZmlsbCA9IG5l
d2Y7IHJldHVybiBvbGRmO30KICAgIGZtdGZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gX2Zs
YWdzOyB9CiAgICBmbXRmbGFncyBmbGFncyhmbXRmbGFncyBuZXdfdmFsKSB7CglmbXRmbGFncyBv
bGRfdmFsID0gX2ZsYWdzOyBfZmxhZ3MgPSBuZXdfdmFsOyByZXR1cm4gb2xkX3ZhbDsgfQogICAg
aW50IHByZWNpc2lvbigpIGNvbnN0IHsgcmV0dXJuIF9wcmVjaXNpb247IH0KICAgIGludCBwcmVj
aXNpb24oaW50IG5ld3ApIHsKCXVuc2lnbmVkIHNob3J0IG9sZHAgPSBfcHJlY2lzaW9uOyBfcHJl
Y2lzaW9uID0gKHVuc2lnbmVkIHNob3J0KW5ld3A7CglyZXR1cm4gb2xkcDsgfQogICAgZm10Zmxh
Z3Mgc2V0ZihmbXRmbGFncyB2YWwpIHsKCWZtdGZsYWdzIG9sZGJpdHMgPSBfZmxhZ3M7CglfZmxh
Z3MgfD0gdmFsOyByZXR1cm4gb2xkYml0czsgfQogICAgZm10ZmxhZ3Mgc2V0ZihmbXRmbGFncyB2
YWwsIGZtdGZsYWdzIG1hc2spIHsKCWZtdGZsYWdzIG9sZGJpdHMgPSBfZmxhZ3M7CglfZmxhZ3Mg
PSAoX2ZsYWdzICYgfm1hc2spIHwgKHZhbCAmIG1hc2spOyByZXR1cm4gb2xkYml0czsgfQogICAg
Zm10ZmxhZ3MgdW5zZXRmKGZtdGZsYWdzIG1hc2spIHsKCWZtdGZsYWdzIG9sZGJpdHMgPSBfZmxh
Z3M7CglfZmxhZ3MgJj0gfm1hc2s7IHJldHVybiBvbGRiaXRzOyB9CiAgICBpbnQgd2lkdGgoKSBj
b25zdCB7IHJldHVybiBfd2lkdGg7IH0KICAgIGludCB3aWR0aChpbnQgdmFsKSB7IGludCBzYXZl
ID0gX3dpZHRoOyBfd2lkdGggPSB2YWw7IHJldHVybiBzYXZlOyB9CgoKCgogICAgdm9pZCBfdGhy
b3dfZmFpbHVyZSgpIGNvbnN0IHsgfQoKICAgIHZvaWQgY2xlYXIoaW9zdGF0ZSBzdGF0ZSA9IDAp
IHsKCV9zdGF0ZSA9IF9zdHJidWYgPyBzdGF0ZSA6IHN0YXRlfGJhZGJpdDsKCWlmIChfc3RhdGUg
JiBfZXhjZXB0aW9ucykgX3Rocm93X2ZhaWx1cmUoKTsgfQogICAgdm9pZCBzZXQoaW9zdGF0ZSBm
bGFnKSB7IF9zdGF0ZSB8PSBmbGFnOwoJaWYgKF9zdGF0ZSAmIF9leGNlcHRpb25zKSBfdGhyb3df
ZmFpbHVyZSgpOyB9CiAgICB2b2lkIHNldHN0YXRlKGlvc3RhdGUgZmxhZykgeyBfc3RhdGUgfD0g
ZmxhZzsgIAoJaWYgKF9zdGF0ZSAmIF9leGNlcHRpb25zKSBfdGhyb3dfZmFpbHVyZSgpOyB9CiAg
ICBpbnQgZ29vZCgpIGNvbnN0IHsgcmV0dXJuIF9zdGF0ZSA9PSAwOyB9CiAgICBpbnQgZW9mKCkg
Y29uc3QgeyByZXR1cm4gX3N0YXRlICYgaW9zOjplb2ZiaXQ7IH0KICAgIGludCBmYWlsKCkgY29u
c3QgeyByZXR1cm4gX3N0YXRlICYgKGlvczo6YmFkYml0fGlvczo6ZmFpbGJpdCk7IH0KICAgIGlu
dCBiYWQoKSBjb25zdCB7IHJldHVybiBfc3RhdGUgJiBpb3M6OmJhZGJpdDsgfQogICAgaW9zdGF0
ZSByZHN0YXRlKCkgY29uc3QgeyByZXR1cm4gX3N0YXRlOyB9CiAgICBvcGVyYXRvciB2b2lkKigp
IGNvbnN0IHsgcmV0dXJuIGZhaWwoKSA/ICh2b2lkKikwIDogKHZvaWQqKSgtMSk7IH0KICAgIGlu
dCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBmYWlsKCk7IH0KICAgIGlvc3RhdGUgZXhjZXB0
aW9ucygpIGNvbnN0IHsgcmV0dXJuIF9leGNlcHRpb25zOyB9CiAgICB2b2lkIGV4Y2VwdGlvbnMo
aW9zdGF0ZSBlbmFibGUpIHsKCV9leGNlcHRpb25zID0gZW5hYmxlOwoJaWYgKF9zdGF0ZSAmIF9l
eGNlcHRpb25zKSBfdGhyb3dfZmFpbHVyZSgpOyB9CgogICAgc3RyZWFtYnVmKiByZGJ1ZigpIGNv
bnN0IHsgcmV0dXJuIF9zdHJidWY7IH0KICAgIHN0cmVhbWJ1ZiogcmRidWYoc3RyZWFtYnVmICpf
cykgewogICAgICBzdHJlYW1idWYgKl9vbGQgPSBfc3RyYnVmOyBfc3RyYnVmID0gX3M7IGNsZWFy
ICgpOyByZXR1cm4gX29sZDsgfQoKICAgIHN0YXRpYyBpbnQgc3luY193aXRoX3N0ZGlvKGludCBv
bik7CiAgICBzdGF0aWMgdm9pZCBzeW5jX3dpdGhfc3RkaW8oKSB7IHN5bmNfd2l0aF9zdGRpbygx
KTsgfQogICAgc3RhdGljIGZtdGZsYWdzIGJpdGFsbG9jKCk7CiAgICBzdGF0aWMgaW50IHhhbGxv
YygpOwogICAgdm9pZComIHB3b3JkKGludCk7CiAgICB2b2lkKiBwd29yZChpbnQpIGNvbnN0Owog
ICAgbG9uZyYgaXdvcmQoaW50KTsKICAgIGxvbmcgaXdvcmQoaW50KSBjb25zdDsKCgoKCgoKCgoK
ICAgICAKICAgIGNsYXNzIEluaXQgewogICAgcHVibGljOgogICAgICBJbml0ICgpIHsgfQogICAg
fTsKCiAgcHJvdGVjdGVkOgogICAgaW5saW5lIGlvcyhzdHJlYW1idWYqIHNiID0gMCwgb3N0cmVh
bSogdGllX3RvID0gMCk7CiAgICBpbmxpbmUgdmlydHVhbCB+aW9zKCk7CiAgICBpbmxpbmUgdm9p
ZCBpbml0KHN0cmVhbWJ1Ziogc2IsIG9zdHJlYW0qIHRpZSA9IDApOwp9OwoKCgoKdHlwZWRlZiBp
b3M6OnNlZWtfZGlyIF9zZWVrX2RpcjsKCgogCiAKIAogCiAKCiAKIApjbGFzcyBzdHJlYW1tYXJr
ZXIgOiBwcml2YXRlIF9JT19tYXJrZXIgewogICAgZnJpZW5kIGNsYXNzIHN0cmVhbWJ1ZjsKICAg
IHZvaWQgc2V0X29mZnNldChpbnQgb2Zmc2V0KSB7IF9wb3MgPSBvZmZzZXQ7IH0KICBwdWJsaWM6
CiAgICBzdHJlYW1tYXJrZXIoc3RyZWFtYnVmICpzYik7CiAgICB+c3RyZWFtbWFya2VyKCk7CiAg
ICBpbnQgc2F2aW5nKCkgeyByZXR1cm4gIDE7IH0KICAgIGludCBkZWx0YShzdHJlYW1tYXJrZXIm
KTsKICAgIGludCBkZWx0YSgpOwp9OwoKc3RydWN0IHN0cmVhbWJ1ZiA6IHB1YmxpYyBfSU9fRklM
RSB7ICAKICAgIGZyaWVuZCBjbGFzcyBpb3M7CiAgICBmcmllbmQgY2xhc3MgaXN0cmVhbTsKICAg
IGZyaWVuZCBjbGFzcyBvc3RyZWFtOwogICAgZnJpZW5kIGNsYXNzIHN0cmVhbW1hcmtlcjsKICAg
IGNvbnN0IHZvaWQgKiZfdnRhYmxlKCkgeyByZXR1cm4gKihjb25zdCB2b2lkKiopKChfSU9fRklM
RSopdGhpcyArIDEpOyB9CiAgcHJvdGVjdGVkOgogICAgc3RhdGljIHN0cmVhbWJ1ZiogX2xpc3Rf
YWxsOyAgCiAgICBfSU9fRklMRSomIHhjaGFpbigpIHsgcmV0dXJuIF9jaGFpbjsgfQogICAgdm9p
ZCBfdW5fbGluaygpOwogICAgdm9pZCBfbGlua19pbigpOwogICAgY2hhciogZ3B0cigpIGNvbnN0
CiAgICAgIHsgcmV0dXJuIF9mbGFncyAgJiAweDEwMCAgPyBfSU9fc2F2ZV9iYXNlIDogX0lPX3Jl
YWRfcHRyOyB9CiAgICBjaGFyKiBwcHRyKCkgY29uc3QgeyByZXR1cm4gX0lPX3dyaXRlX3B0cjsg
fQogICAgY2hhciogZWdwdHIoKSBjb25zdAogICAgICB7IHJldHVybiBfZmxhZ3MgICYgMHgxMDAg
ID8gX0lPX3NhdmVfZW5kIDogX0lPX3JlYWRfZW5kOyB9CiAgICBjaGFyKiBlcHB0cigpIGNvbnN0
IHsgcmV0dXJuIF9JT193cml0ZV9lbmQ7IH0KICAgIGNoYXIqIHBiYXNlKCkgY29uc3QgeyByZXR1
cm4gX0lPX3dyaXRlX2Jhc2U7IH0KICAgIGNoYXIqIGViYWNrKCkgY29uc3QKICAgICAgeyByZXR1
cm4gX2ZsYWdzICAmIDB4MTAwICA/IF9JT19zYXZlX2Jhc2UgOiBfSU9fcmVhZF9iYXNlO30KICAg
IGNoYXIqIGJhc2UoKSBjb25zdCB7IHJldHVybiBfSU9fYnVmX2Jhc2U7IH0KICAgIGNoYXIqIGVi
dWYoKSBjb25zdCB7IHJldHVybiBfSU9fYnVmX2VuZDsgfQogICAgaW50IGJsZW4oKSBjb25zdCB7
IHJldHVybiBfSU9fYnVmX2VuZCAtIF9JT19idWZfYmFzZTsgfQogICAgdm9pZCB4cHV0X2NoYXIo
Y2hhciBjKSB7ICpfSU9fd3JpdGVfcHRyKysgPSBjOyB9CiAgICBpbnQgeGZsYWdzKCkgeyByZXR1
cm4gX2ZsYWdzIDsgfQogICAgaW50IHhmbGFncyhpbnQgZikge2ludCBmbCA9IF9mbGFncyA7IF9m
bGFncyAgPSBmOyByZXR1cm4gZmw7fQogICAgdm9pZCB4c2V0ZmxhZ3MoaW50IGYpIHsgX2ZsYWdz
ICB8PSBmOyB9CiAgICB2b2lkIHhzZXRmbGFncyhpbnQgZiwgaW50IG1hc2spCiAgICAgIHsgX2Zs
YWdzICA9IChfZmxhZ3MgICYgfm1hc2spIHwgKGYgJiBtYXNrKTsgfQogICAgdm9pZCBnYnVtcChp
bnQgbikKICAgICAgeyBfZmxhZ3MgICYgMHgxMDAgID8gKF9JT19zYXZlX2Jhc2UrPW4pOihfSU9f
cmVhZF9wdHIrPW4pO30KICAgIHZvaWQgcGJ1bXAoaW50IG4pIHsgX0lPX3dyaXRlX3B0ciArPSBu
OyB9CiAgICB2b2lkIHNldGIoY2hhciogYiwgY2hhciogZWIsIGludCBhPTApOwogICAgdm9pZCBz
ZXRwKGNoYXIqIHAsIGNoYXIqIGVwKQogICAgICB7IF9JT193cml0ZV9iYXNlPV9JT193cml0ZV9w
dHI9cDsgX0lPX3dyaXRlX2VuZD1lcDsgfQogICAgdm9pZCBzZXRnKGNoYXIqIGViLCBjaGFyKiBn
LCBjaGFyICplZykgewogICAgICBpZiAoX2ZsYWdzICAmIDB4MTAwICkgX0lPX2ZyZWVfYmFja3Vw
X2FyZWEodGhpcyk7IAogICAgICBfSU9fcmVhZF9iYXNlID0gZWI7IF9JT19yZWFkX3B0ciA9IGc7
IF9JT19yZWFkX2VuZCA9IGVnOyB9CiAgICBjaGFyICpzaG9ydGJ1ZigpIHsgcmV0dXJuIF9zaG9y
dGJ1ZjsgfQoKICAgIGludCBpbl9iYWNrdXAoKSB7IHJldHVybiBfZmxhZ3MgJiAweDEwMCA7IH0K
ICAgICAKICAgIGNoYXIgKkdiYXNlKCkgeyByZXR1cm4gaW5fYmFja3VwKCkgPyBfSU9fc2F2ZV9i
YXNlIDogX0lPX3JlYWRfYmFzZTsgfQogICAgIAogICAgY2hhciAqZUdwdHIoKSB7IHJldHVybiBp
bl9iYWNrdXAoKSA/IF9JT19zYXZlX2VuZCA6IF9JT19yZWFkX2VuZDsgfQogICAgIAogICAgY2hh
ciAqQmJhc2UoKSB7IHJldHVybiBpbl9iYWNrdXAoKSA/IF9JT19yZWFkX2Jhc2UgOiBfSU9fc2F2
ZV9iYXNlOyB9CiAgICBjaGFyICpCcHRyKCkgeyByZXR1cm4gX0lPX2JhY2t1cF9iYXNlOyB9CiAg
ICAgCiAgICBjaGFyICplQnB0cigpIHsgcmV0dXJuIGluX2JhY2t1cCgpID8gX0lPX3JlYWRfZW5k
IDogX0lPX3NhdmVfZW5kOyB9CiAgICBjaGFyICpOYmFzZSgpIHsgcmV0dXJuIF9JT19zYXZlX2Jh
c2U7IH0KICAgIGNoYXIgKmVOcHRyKCkgeyByZXR1cm4gX0lPX3NhdmVfZW5kOyB9CiAgICBpbnQg
aGF2ZV9iYWNrdXAoKSB7IHJldHVybiBfSU9fc2F2ZV9iYXNlICE9IF9fbnVsbCA7IH0KICAgIGlu
dCBoYXZlX21hcmtlcnMoKSB7IHJldHVybiBfbWFya2VycyAhPSBfX251bGwgOyB9CiAgICB2b2lk
IGZyZWVfYmFja3VwX2FyZWEoKTsKICAgIHZvaWQgdW5zYXZlX21hcmtlcnMoKTsgIAogICAgaW50
IHB1dF9tb2RlKCkgeyByZXR1cm4gX2ZsYWdzICYgMHg4MDAgOyB9CiAgICBpbnQgc3dpdGNoX3Rv
X2dldF9tb2RlKCk7CiAgICAKICAgIHN0cmVhbWJ1ZihpbnQgZmxhZ3M9MCk7CiAgcHVibGljOgog
ICAgc3RhdGljIGludCBmbHVzaF9hbGwoKTsKICAgIHN0YXRpYyB2b2lkIGZsdXNoX2FsbF9saW5l
YnVmZmVyZWQoKTsgIAogICAgdmlydHVhbCB+c3RyZWFtYnVmKCk7CiAgICB2aXJ0dWFsIGludCBv
dmVyZmxvdyhpbnQgYyA9ICgtMSkgKTsgIAogICAgdmlydHVhbCBpbnQgdW5kZXJmbG93KCk7ICAK
ICAgIHZpcnR1YWwgaW50IHVmbG93KCk7ICAKICAgIHZpcnR1YWwgaW50IHBiYWNrZmFpbChpbnQg
Yyk7CiAKICAgIHZpcnR1YWwgc3RyZWFtc2l6ZSB4c3B1dG4oY29uc3QgY2hhciogcywgc3RyZWFt
c2l6ZSBuKTsKICAgIHZpcnR1YWwgc3RyZWFtc2l6ZSB4c2dldG4oY2hhciogcywgc3RyZWFtc2l6
ZSBuKTsKICAgIHZpcnR1YWwgc3RyZWFtcG9zIHNlZWtvZmYoc3RyZWFtb2ZmLCBfc2Vla19kaXIs
IGludCBtb2RlPWlvczo6aW58aW9zOjpvdXQpOwogICAgdmlydHVhbCBzdHJlYW1wb3Mgc2Vla3Bv
cyhzdHJlYW1wb3MgcG9zLCBpbnQgbW9kZSA9IGlvczo6aW58aW9zOjpvdXQpOwoKICAgIHN0cmVh
bXBvcyBwdWJzZWVrb2ZmKHN0cmVhbW9mZiBvLCBfc2Vla19kaXIgZCwgaW50IG1vZGU9aW9zOjpp
bnxpb3M6Om91dCkKICAgICAgeyByZXR1cm4gX0lPX3NlZWtvZmYgKHRoaXMsIG8sIGQsIG1vZGUp
OyB9CiAgICBzdHJlYW1wb3MgcHVic2Vla3BvcyhzdHJlYW1wb3MgcG9zLCBpbnQgbW9kZSA9IGlv
czo6aW58aW9zOjpvdXQpCiAgICAgIHsgcmV0dXJuIF9JT19zZWVrcG9zICh0aGlzLCBwb3MsIG1v
ZGUpOyB9CiAgICBzdHJlYW1wb3Mgc3NlZWtvZmYoc3RyZWFtb2ZmLCBfc2Vla19kaXIsIGludCBt
b2RlPWlvczo6aW58aW9zOjpvdXQpOwogICAgc3RyZWFtcG9zIHNzZWVrcG9zKHN0cmVhbXBvcyBw
b3MsIGludCBtb2RlID0gaW9zOjppbnxpb3M6Om91dCk7CiAgICB2aXJ0dWFsIHN0cmVhbWJ1Ziog
c2V0YnVmKGNoYXIqIHAsIGludCBsZW4pOwogICAgdmlydHVhbCBpbnQgc3luYygpOwogICAgdmly
dHVhbCBpbnQgZG9hbGxvY2F0ZSgpOwoKICAgIGludCBzZWVrbWFyayhzdHJlYW1tYXJrZXImIG1h
cmssIGludCBkZWx0YSA9IDApOwogICAgaW50IHNwdXRiYWNrYyhjaGFyIGMpOwogICAgaW50IHN1
bmdldGMoKTsKICAgIGludCB1bmJ1ZmZlcmVkKCkgeyByZXR1cm4gX2ZsYWdzICYgMiAgPyAxIDog
MDsgfQogICAgaW50IGxpbmVidWZmZXJlZCgpIHsgcmV0dXJuIF9mbGFncyAmIDB4MjAwICA/IDEg
OiAwOyB9CiAgICB2b2lkIHVuYnVmZmVyZWQoaW50IGkpCgl7IGlmIChpKSBfZmxhZ3MgfD0gMiA7
IGVsc2UgX2ZsYWdzICY9IH4yIDsgfQogICAgdm9pZCBsaW5lYnVmZmVyZWQoaW50IGkpCgl7IGlm
IChpKSBfZmxhZ3MgfD0gMHgyMDAgOyBlbHNlIF9mbGFncyAmPSB+MHgyMDAgOyB9CiAgICBpbnQg
YWxsb2NhdGUoKSB7ICAKCWlmIChiYXNlKCkgfHwgdW5idWZmZXJlZCgpKSByZXR1cm4gMDsKCWVs
c2UgcmV0dXJuIGRvYWxsb2NhdGUoKTsgfQogICAgIAogICAgdm9pZCBhbGxvY2J1ZigpIHsgaWYg
KGJhc2UoKSA9PSBfX251bGwgKSBkb2FsbG9jYnVmKCk7IH0KICAgIHZvaWQgZG9hbGxvY2J1Zigp
OwogICAgaW50IGluX2F2YWlsKCkgeyByZXR1cm4gX0lPX3JlYWRfZW5kIC0gX0lPX3JlYWRfcHRy
OyB9CiAgICBpbnQgb3V0X3dhaXRpbmcoKSB7IHJldHVybiBfSU9fd3JpdGVfcHRyIC0gX0lPX3dy
aXRlX2Jhc2U7IH0KICAgIHN0cmVhbXNpemUgc3B1dG4oY29uc3QgY2hhciogcywgc3RyZWFtc2l6
ZSBuKSB7IHJldHVybiB4c3B1dG4ocywgbik7IH0KICAgIHN0cmVhbXNpemUgcGFkbihjaGFyIHBh
ZCwgc3RyZWFtc2l6ZSBuKSB7IHJldHVybiBfSU9fcGFkbih0aGlzLCBwYWQsIG4pOyB9CiAgICBz
dHJlYW1zaXplIHNnZXRuKGNoYXIqIHMsIHN0cmVhbXNpemUgbikgeyByZXR1cm4gX0lPX3NnZXRu
KHRoaXMsIHMsIG4pOyB9CiAgICBpbnQgaWdub3JlKGludCk7CiAgICBpbnQgZ2V0X2NvbHVtbigp
OwogICAgaW50IHNldF9jb2x1bW4oaW50KTsKICAgIGxvbmcgc2dldGxpbmUoY2hhciogYnVmLCBf
R19zaXplX3QgIG4sIGNoYXIgZGVsaW0sIGludCBwdXRiYWNrX2RlbGltKTsKICAgIGludCBzcHV0
YyhpbnQgYykgeyByZXR1cm4gX0lPX3B1dGMoYywgdGhpcyk7IH0KICAgIGludCBzYnVtcGMoKSB7
IHJldHVybiBfSU9fZ2V0Yyh0aGlzKTsgfQogICAgaW50IHNnZXRjKCkgeyByZXR1cm4gKCggIHRo
aXMgICktPl9JT19yZWFkX3B0ciA+PSAoICB0aGlzICApLT5fSU9fcmVhZF9lbmQgJiYgX191bmRl
cmZsb3cgKCAgdGhpcyAgKSA9PSAoLTEpICA/ICgtMSkgIDogKih1bnNpZ25lZCBjaGFyICopICgg
IHRoaXMgICktPl9JT19yZWFkX3B0cikgIDsgfQogICAgaW50IHNuZXh0YygpIHsKCWlmIChfSU9f
cmVhZF9wdHIgPj0gX0lPX3JlYWRfZW5kICYmIF9fdW5kZXJmbG93KHRoaXMpID09ICgtMSkgKQoJ
ICByZXR1cm4gKC0xKSA7CgllbHNlIHJldHVybiBfSU9fcmVhZF9wdHIrKywgc2dldGMoKTsgfQog
ICAgdm9pZCBzdG9zc2MoKSB7IGlmIChfSU9fcmVhZF9wdHIgPCBfSU9fcmVhZF9lbmQpIF9JT19y
ZWFkX3B0cisrOyB9CiAgICBpbnQgdnNjYW4oY2hhciBjb25zdCAqZm10MCwgX0dfdmFfbGlzdCAg
YXAsIGlvcyogc3RyZWFtID0gX19udWxsICk7CiAgICBpbnQgc2NhbihjaGFyIGNvbnN0ICpmbXQw
IC4uLik7CiAgICBpbnQgdmZvcm0oY2hhciBjb25zdCAqZm10MCwgX0dfdmFfbGlzdCAgYXApOwog
ICAgaW50IGZvcm0oY2hhciBjb25zdCAqZm10MCAuLi4pOwoKCgoKICAgIHZpcnR1YWwgc3RyZWFt
c2l6ZSBzeXNfcmVhZChjaGFyKiBidWYsIHN0cmVhbXNpemUgc2l6ZSk7CiAgICB2aXJ0dWFsIHN0
cmVhbXNpemUgc3lzX3dyaXRlKGNvbnN0IGNoYXIqLCBzdHJlYW1zaXplKTsKICAgIHZpcnR1YWwg
c3RyZWFtcG9zIHN5c19zZWVrKHN0cmVhbW9mZiwgX3NlZWtfZGlyKTsKICAgIHZpcnR1YWwgaW50
IHN5c19jbG9zZSgpOwogICAgdmlydHVhbCBpbnQgc3lzX3N0YXQodm9pZCopOyAgCgoKCgp9OwoK
IAogCgpjbGFzcyBmaWxlYnVmIDogcHVibGljIHN0cmVhbWJ1ZiB7CiAgcHJvdGVjdGVkOgogICAg
dm9pZCBpbml0KCk7CiAgcHVibGljOgogICAgc3RhdGljIGNvbnN0IGludCBvcGVucHJvdDsgIAog
ICAgZmlsZWJ1ZigpOwogICAgZmlsZWJ1ZihpbnQgZmQpOwogICAgZmlsZWJ1ZihpbnQgZmQsIGNo
YXIqIHAsIGludCBsZW4pOwoKCgogICAgfmZpbGVidWYoKTsKICAgIGZpbGVidWYqIGF0dGFjaChp
bnQgZmQpOwogICAgZmlsZWJ1Ziogb3Blbihjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hh
ciAqbW9kZSk7CiAgICBmaWxlYnVmKiBvcGVuKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpb3M6Om9w
ZW5tb2RlIG1vZGUsIGludCBwcm90ID0gMDY2NCk7CiAgICB2aXJ0dWFsIGludCB1bmRlcmZsb3co
KTsKICAgIHZpcnR1YWwgaW50IG92ZXJmbG93KGludCBjID0gKC0xKSApOwogICAgaW50IGlzX29w
ZW4oKSBjb25zdCB7IHJldHVybiBfZmlsZW5vID49IDA7IH0KICAgIGludCBmZCgpIGNvbnN0IHsg
cmV0dXJuIGlzX29wZW4oKSA/IF9maWxlbm8gOiAoLTEpIDsgfQogICAgZmlsZWJ1ZiogY2xvc2Uo
KTsKICAgIHZpcnR1YWwgaW50IGRvYWxsb2NhdGUoKTsKICAgIHZpcnR1YWwgc3RyZWFtcG9zIHNl
ZWtvZmYoc3RyZWFtb2ZmLCBfc2Vla19kaXIsIGludCBtb2RlPWlvczo6aW58aW9zOjpvdXQpOwog
ICAgdmlydHVhbCBzdHJlYW1idWYqIHNldGJ1ZihjaGFyKiBwLCBpbnQgbGVuKTsKICAgIHN0cmVh
bXNpemUgeHNwdXRuKGNvbnN0IGNoYXIqIHMsIHN0cmVhbXNpemUgbik7CiAgICBzdHJlYW1zaXpl
IHhzZ2V0bihjaGFyKiBzLCBzdHJlYW1zaXplIG4pOwogICAgdmlydHVhbCBpbnQgc3luYygpOwog
IHByb3RlY3RlZDogIAogCiAgICBpbnQgaXNfcmVhZGluZygpIHsgcmV0dXJuIGViYWNrKCkgIT0g
ZWdwdHIoKTsgfQogICAgY2hhciogY3VyX3B0cigpIHsgcmV0dXJuIGlzX3JlYWRpbmcoKSA/ICBn
cHRyKCkgOiBwcHRyKCk7IH0KICAgICAKICAgIGNoYXIqIGZpbGVfcHRyKCkgeyByZXR1cm4gZUdw
dHIoKTsgfQogICAgIAogICAgdmlydHVhbCBzdHJlYW1zaXplIHN5c19yZWFkKGNoYXIqIGJ1Ziwg
c3RyZWFtc2l6ZSBzaXplKTsKICAgIHZpcnR1YWwgc3RyZWFtcG9zIHN5c19zZWVrKHN0cmVhbW9m
ZiwgX3NlZWtfZGlyKTsKICAgIHZpcnR1YWwgc3RyZWFtc2l6ZSBzeXNfd3JpdGUoY29uc3QgY2hh
ciosIHN0cmVhbXNpemUpOwogICAgdmlydHVhbCBpbnQgc3lzX3N0YXQodm9pZCopOyAgCiAgICB2
aXJ0dWFsIGludCBzeXNfY2xvc2UoKTsKCgoKCn07CgppbmxpbmUgdm9pZCBpb3M6OmluaXQoc3Ry
ZWFtYnVmKiBzYiwgb3N0cmVhbSogdGllX3RvKSB7CgkJX3N0YXRlID0gc2IgPyBpb3M6Omdvb2Ri
aXQgOiBpb3M6OmJhZGJpdDsgX2V4Y2VwdGlvbnM9MDsKCQlfc3RyYnVmPXNiOyBfdGllID0gdGll
X3RvOyBfd2lkdGg9MDsgX2ZpbGw9JyAnOwoKCQlfZmxhZ3M9aW9zOjpza2lwd3N8aW9zOjpkZWM7
CgoKCgkJX3ByZWNpc2lvbj02OyBfYXJyYXlzID0gMDsgfQoKaW5saW5lIGlvczo6aW9zKHN0cmVh
bWJ1Ziogc2IsIG9zdHJlYW0qIHRpZV90bykgeyBpbml0KHNiLCB0aWVfdG8pOyB9CgppbmxpbmUg
aW9zOjp+aW9zKCkgewoKCgogICAgIAogICAgIAogICAgb3BlcmF0b3IgZGVsZXRlW10gKF9hcnJh
eXMpOwp9Cn0gIAoKIyAzMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9taXBzLXNnaS1pcml4Ni41
LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2lvc3RyZWFtLmgiIDIgMwoKCmV4dGVy
biAiQysrIiB7CmNsYXNzIGlzdHJlYW07IGNsYXNzIG9zdHJlYW07CnR5cGVkZWYgaW9zJiAoKl9f
bWFuaXApKGlvcyYpOwp0eXBlZGVmIGlzdHJlYW0mICgqX19pbWFuaXApKGlzdHJlYW0mKTsKdHlw
ZWRlZiBvc3RyZWFtJiAoKl9fb21hbmlwKShvc3RyZWFtJik7CgpleHRlcm4gaXN0cmVhbSYgd3Mo
aXN0cmVhbSYgaW5zKTsKZXh0ZXJuIG9zdHJlYW0mIGZsdXNoKG9zdHJlYW0mIG91dHMpOwpleHRl
cm4gb3N0cmVhbSYgZW5kbChvc3RyZWFtJiBvdXRzKTsKZXh0ZXJuIG9zdHJlYW0mIGVuZHMob3N0
cmVhbSYgb3V0cyk7CgpjbGFzcyBvc3RyZWFtIDogdmlydHVhbCBwdWJsaWMgaW9zCnsKICAgICAK
ICAgIHZvaWQgZG9fb3NmeCgpOwogIHB1YmxpYzoKICAgIG9zdHJlYW0oKSB7IH0KICAgIG9zdHJl
YW0oc3RyZWFtYnVmKiBzYiwgb3N0cmVhbSogdGllZD0gX19udWxsICk7CiAgICBpbnQgb3BmeCgp
IHsKCWlmICghZ29vZCgpKSByZXR1cm4gMDsKCWVsc2UgeyBpZiAoX3RpZSkgX3RpZS0+Zmx1c2go
KTsgIDsgcmV0dXJuIDE7fSB9CiAgICB2b2lkIG9zZngoKSB7ICA7CgkJICBpZiAoZmxhZ3MoKSAm
IChpb3M6OnVuaXRidWZ8aW9zOjpzdGRpbykpCgkJICAgICAgZG9fb3NmeCgpOyB9CiAgICBvc3Ry
ZWFtJiBmbHVzaCgpOwogICAgb3N0cmVhbSYgcHV0KGNoYXIgYykgeyBfc3RyYnVmLT5zcHV0Yyhj
KTsgcmV0dXJuICp0aGlzOyB9CgoKCgoKICAgIG9zdHJlYW0mIHdyaXRlKGNvbnN0IGNoYXIgKnMs
IHN0cmVhbXNpemUgbik7CiAgICBvc3RyZWFtJiB3cml0ZShjb25zdCB1bnNpZ25lZCBjaGFyICpz
LCBzdHJlYW1zaXplIG4pCiAgICAgIHsgcmV0dXJuIHdyaXRlKChjb25zdCBjaGFyKilzLCBuKTt9
CiAgICBvc3RyZWFtJiB3cml0ZShjb25zdCBzaWduZWQgY2hhciAqcywgc3RyZWFtc2l6ZSBuKQog
ICAgICB7IHJldHVybiB3cml0ZSgoY29uc3QgY2hhciopcywgbik7fQogICAgb3N0cmVhbSYgd3Jp
dGUoY29uc3Qgdm9pZCAqcywgc3RyZWFtc2l6ZSBuKQogICAgICB7IHJldHVybiB3cml0ZSgoY29u
c3QgY2hhciopcywgbik7fQogICAgb3N0cmVhbSYgc2Vla3Aoc3RyZWFtcG9zKTsKICAgIG9zdHJl
YW0mIHNlZWtwKHN0cmVhbW9mZiwgX3NlZWtfZGlyKTsKICAgIHN0cmVhbXBvcyB0ZWxscCgpOwog
ICAgb3N0cmVhbSYgZm9ybShjb25zdCBjaGFyICpmb3JtYXQgLi4uKTsKICAgIG9zdHJlYW0mIHZm
b3JtKGNvbnN0IGNoYXIgKmZvcm1hdCwgX0dfdmFfbGlzdCAgYXJncyk7CgogICAgb3N0cmVhbSYg
b3BlcmF0b3I8PChjaGFyIGMpOwogICAgb3N0cmVhbSYgb3BlcmF0b3I8PCh1bnNpZ25lZCBjaGFy
IGMpIHsgcmV0dXJuICgqdGhpcykgPDwgKGNoYXIpYzsgfQogICAgb3N0cmVhbSYgb3BlcmF0b3I8
PChzaWduZWQgY2hhciBjKSB7IHJldHVybiAoKnRoaXMpIDw8IChjaGFyKWM7IH0KICAgIG9zdHJl
YW0mIG9wZXJhdG9yPDwoY29uc3QgY2hhciAqcyk7CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGNv
bnN0IHVuc2lnbmVkIGNoYXIgKnMpCgl7IHJldHVybiAoKnRoaXMpIDw8IChjb25zdCBjaGFyKilz
OyB9CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IHNpZ25lZCBjaGFyICpzKQoJeyByZXR1
cm4gKCp0aGlzKSA8PCAoY29uc3QgY2hhciopczsgfQogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChj
b25zdCB2b2lkICpwKTsKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoaW50IG4pOwogICAgb3N0cmVh
bSYgb3BlcmF0b3I8PCh1bnNpZ25lZCBpbnQgbik7CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGxv
bmcgbik7CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KHVuc2lnbmVkIGxvbmcgbik7CgogICAgX19l
eHRlbnNpb25fXyBvc3RyZWFtJiBvcGVyYXRvcjw8KGxvbmcgbG9uZyBuKTsKICAgIF9fZXh0ZW5z
aW9uX18gb3N0cmVhbSYgb3BlcmF0b3I8PCh1bnNpZ25lZCBsb25nIGxvbmcgbik7CgogICAgb3N0
cmVhbSYgb3BlcmF0b3I8PChzaG9ydCBuKSB7cmV0dXJuIG9wZXJhdG9yPDwoKGludCluKTt9CiAg
ICBvc3RyZWFtJiBvcGVyYXRvcjw8KHVuc2lnbmVkIHNob3J0IG4pIHtyZXR1cm4gb3BlcmF0b3I8
PCgodW5zaWduZWQgaW50KW4pO30KCiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGJvb2wgYikgeyBy
ZXR1cm4gb3BlcmF0b3I8PCgoaW50KWIpOyB9CgogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChkb3Vi
bGUgbik7CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGZsb2F0IG4pIHsgcmV0dXJuIG9wZXJhdG9y
PDwoKGRvdWJsZSluKTsgfQoKCgogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChsb25nIGRvdWJsZSBu
KSB7IHJldHVybiBvcGVyYXRvcjw8KChkb3VibGUpbik7IH0KCiAgICBvc3RyZWFtJiBvcGVyYXRv
cjw8KF9fb21hbmlwIGZ1bmMpIHsgcmV0dXJuICgqZnVuYykoKnRoaXMpOyB9CiAgICBvc3RyZWFt
JiBvcGVyYXRvcjw8KF9fbWFuaXAgZnVuYykgeygqZnVuYykoKnRoaXMpOyByZXR1cm4gKnRoaXM7
fQogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChzdHJlYW1idWYqKTsKCgoKfTsKCmNsYXNzIGlzdHJl
YW0gOiB2aXJ0dWFsIHB1YmxpYyBpb3MKewogICAgIApwcm90ZWN0ZWQ6CiAgICBfR19zaXplX3Qg
IF9nY291bnQ7CgogICAgaW50IF9za2lwX3dzKCk7CiAgcHVibGljOgogICAgaXN0cmVhbSgpOiBf
Z2NvdW50ICgwKSB7IH0KICAgIGlzdHJlYW0oc3RyZWFtYnVmKiBzYiwgb3N0cmVhbSp0aWVkPSBf
X251bGwgKTsKICAgIGlzdHJlYW0mIGdldChjaGFyKiBwdHIsIGludCBsZW4sIGNoYXIgZGVsaW0g
PSAnXG4nKTsKICAgIGlzdHJlYW0mIGdldCh1bnNpZ25lZCBjaGFyKiBwdHIsIGludCBsZW4sIGNo
YXIgZGVsaW0gPSAnXG4nKQoJeyByZXR1cm4gZ2V0KChjaGFyKilwdHIsIGxlbiwgZGVsaW0pOyB9
CiAgICBpc3RyZWFtJiBnZXQoY2hhciYgYyk7CiAgICBpc3RyZWFtJiBnZXQodW5zaWduZWQgY2hh
ciYgYykgeyByZXR1cm4gZ2V0KChjaGFyJiljKTsgfQogICAgaXN0cmVhbSYgZ2V0bGluZShjaGFy
KiBwdHIsIGludCBsZW4sIGNoYXIgZGVsaW0gPSAnXG4nKTsKICAgIGlzdHJlYW0mIGdldGxpbmUo
dW5zaWduZWQgY2hhciogcHRyLCBpbnQgbGVuLCBjaGFyIGRlbGltID0gJ1xuJykKCXsgcmV0dXJu
IGdldGxpbmUoKGNoYXIqKXB0ciwgbGVuLCBkZWxpbSk7IH0KICAgIGlzdHJlYW0mIGdldChzaWdu
ZWQgY2hhciYgYykgIHsgcmV0dXJuIGdldCgoY2hhciYpYyk7IH0KICAgIGlzdHJlYW0mIGdldChz
aWduZWQgY2hhciogcHRyLCBpbnQgbGVuLCBjaGFyIGRlbGltID0gJ1xuJykKCXsgcmV0dXJuIGdl
dCgoY2hhciopcHRyLCBsZW4sIGRlbGltKTsgfQogICAgaXN0cmVhbSYgZ2V0bGluZShzaWduZWQg
Y2hhciogcHRyLCBpbnQgbGVuLCBjaGFyIGRlbGltID0gJ1xuJykKCXsgcmV0dXJuIGdldGxpbmUo
KGNoYXIqKXB0ciwgbGVuLCBkZWxpbSk7IH0KICAgIGlzdHJlYW0mIHJlYWQoY2hhciAqcHRyLCBz
dHJlYW1zaXplIG4pOwogICAgaXN0cmVhbSYgcmVhZCh1bnNpZ25lZCBjaGFyICpwdHIsIHN0cmVh
bXNpemUgbikKICAgICAgeyByZXR1cm4gcmVhZCgoY2hhciopcHRyLCBuKTsgfQogICAgaXN0cmVh
bSYgcmVhZChzaWduZWQgY2hhciAqcHRyLCBzdHJlYW1zaXplIG4pCiAgICAgIHsgcmV0dXJuIHJl
YWQoKGNoYXIqKXB0ciwgbik7IH0KICAgIGlzdHJlYW0mIHJlYWQodm9pZCAqcHRyLCBzdHJlYW1z
aXplIG4pCiAgICAgIHsgcmV0dXJuIHJlYWQoKGNoYXIqKXB0ciwgbik7IH0KICAgIGlzdHJlYW0m
IGdldChzdHJlYW1idWYmIHNiLCBjaGFyIGRlbGltID0gJ1xuJyk7CiAgICBpc3RyZWFtJiBnZXRz
KGNoYXIgKipzLCBjaGFyIGRlbGltID0gJ1xuJyk7CiAgICBpbnQgaXBmeChpbnQgbmVlZCA9IDAp
IHsKCWlmICghZ29vZCgpKSB7IHNldChpb3M6OmZhaWxiaXQpOyByZXR1cm4gMDsgfQoJZWxzZSB7
CgkgICA7CgkgIGlmIChfdGllICYmIChuZWVkID09IDAgfHwgcmRidWYoKS0+aW5fYXZhaWwoKSA8
IG5lZWQpKSBfdGllLT5mbHVzaCgpOwoJICBpZiAoIW5lZWQgJiYgKGZsYWdzKCkgJiBpb3M6OnNr
aXB3cykpIHJldHVybiBfc2tpcF93cygpOwoJICBlbHNlIHJldHVybiAxOwoJfQogICAgfQogICAg
aW50IGlwZngwKCkgeyAgCglpZiAoIWdvb2QoKSkgeyBzZXQoaW9zOjpmYWlsYml0KTsgcmV0dXJu
IDA7IH0KCWVsc2UgewoJICAgOwoJICBpZiAoX3RpZSkgX3RpZS0+Zmx1c2goKTsKCSAgaWYgKGZs
YWdzKCkgJiBpb3M6OnNraXB3cykgcmV0dXJuIF9za2lwX3dzKCk7CgkgIGVsc2UgcmV0dXJuIDE7
Cgl9CiAgICB9CiAgICBpbnQgaXBmeDEoKSB7ICAKCWlmICghZ29vZCgpKSB7IHNldChpb3M6OmZh
aWxiaXQpOyByZXR1cm4gMDsgfQoJZWxzZSB7CgkgICA7CgkgIGlmIChfdGllICYmIHJkYnVmKCkt
PmluX2F2YWlsKCkgPT0gMCkgX3RpZS0+Zmx1c2goKTsKCSAgcmV0dXJuIDE7Cgl9CiAgICB9CiAg
ICB2b2lkIGlzZngoKSB7ICA7IH0KICAgIGludCBnZXQoKSB7IGlmICghaXBmeDEoKSkgcmV0dXJu
ICgtMSkgOwoJCWVsc2UgeyBpbnQgY2ggPSBfc3RyYnVmLT5zYnVtcGMoKTsKCQkgICAgICAgaWYg
KGNoID09ICgtMSkgKSBzZXQoaW9zOjplb2ZiaXQpOwoJCSAgICAgICBpc2Z4KCk7CgkJICAgICAg
IHJldHVybiBjaDsKCQkgICAgIH0gfQogICAgaW50IHBlZWsoKTsKICAgIF9HX3NpemVfdCAgZ2Nv
dW50KCkgeyByZXR1cm4gX2djb3VudDsgfQogICAgaXN0cmVhbSYgaWdub3JlKGludCBuPTEsIGlu
dCBkZWxpbSA9ICgtMSkgKTsKICAgIGludCBzeW5jICgpOwogICAgaXN0cmVhbSYgc2Vla2coc3Ry
ZWFtcG9zKTsKICAgIGlzdHJlYW0mIHNlZWtnKHN0cmVhbW9mZiwgX3NlZWtfZGlyKTsKICAgIHN0
cmVhbXBvcyB0ZWxsZygpOwogICAgaXN0cmVhbSYgcHV0YmFjayhjaGFyIGNoKSB7CglpZiAoZ29v
ZCgpICYmIF9zdHJidWYtPnNwdXRiYWNrYyhjaCkgPT0gKC0xKSApIGNsZWFyKGlvczo6YmFkYml0
KTsKCXJldHVybiAqdGhpczt9CiAgICBpc3RyZWFtJiB1bmdldCgpIHsKCWlmIChnb29kKCkgJiYg
X3N0cmJ1Zi0+c3VuZ2V0YygpID09ICgtMSkgKSBjbGVhcihpb3M6OmJhZGJpdCk7CglyZXR1cm4g
KnRoaXM7fQogICAgaXN0cmVhbSYgc2Nhbihjb25zdCBjaGFyICpmb3JtYXQgLi4uKTsKICAgIGlz
dHJlYW0mIHZzY2FuKGNvbnN0IGNoYXIgKmZvcm1hdCwgX0dfdmFfbGlzdCAgYXJncyk7CgoKCgoK
CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KGNoYXIqKTsKICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4o
dW5zaWduZWQgY2hhciogcCkgeyByZXR1cm4gb3BlcmF0b3I+PigoY2hhciopcCk7IH0KICAgIGlz
dHJlYW0mIG9wZXJhdG9yPj4oc2lnbmVkIGNoYXIqcCkgeyByZXR1cm4gb3BlcmF0b3I+PigoY2hh
ciopcCk7IH0KICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oY2hhciYgYyk7CiAgICBpc3RyZWFtJiBv
cGVyYXRvcj4+KHVuc2lnbmVkIGNoYXImIGMpIHtyZXR1cm4gb3BlcmF0b3I+PigoY2hhciYpYyk7
fQogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihzaWduZWQgY2hhciYgYykge3JldHVybiBvcGVyYXRv
cj4+KChjaGFyJiljKTt9CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KGludCYpOwogICAgaXN0cmVh
bSYgb3BlcmF0b3I+Pihsb25nJik7CgogICAgX19leHRlbnNpb25fXyBpc3RyZWFtJiBvcGVyYXRv
cj4+KGxvbmcgbG9uZyYpOwogICAgX19leHRlbnNpb25fXyBpc3RyZWFtJiBvcGVyYXRvcj4+KHVu
c2lnbmVkIGxvbmcgbG9uZyYpOwoKICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oc2hvcnQmKTsKICAg
IGlzdHJlYW0mIG9wZXJhdG9yPj4odW5zaWduZWQgaW50Jik7CiAgICBpc3RyZWFtJiBvcGVyYXRv
cj4+KHVuc2lnbmVkIGxvbmcmKTsKICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4odW5zaWduZWQgc2hv
cnQmKTsKCiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KGJvb2wmKTsKCiAgICBpc3RyZWFtJiBvcGVy
YXRvcj4+KGZsb2F0Jik7CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KGRvdWJsZSYpOwogICAgaXN0
cmVhbSYgb3BlcmF0b3I+Pihsb25nIGRvdWJsZSYpOwogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pigg
X19tYW5pcCBmdW5jKSB7KCpmdW5jKSgqdGhpcyk7IHJldHVybiAqdGhpczt9CiAgICBpc3RyZWFt
JiBvcGVyYXRvcj4+KF9faW1hbmlwIGZ1bmMpIHsgcmV0dXJuICgqZnVuYykoKnRoaXMpOyB9CiAg
ICBpc3RyZWFtJiBvcGVyYXRvcj4+KHN0cmVhbWJ1ZiopOwp9OwoKY2xhc3MgaW9zdHJlYW0gOiBw
dWJsaWMgaXN0cmVhbSwgcHVibGljIG9zdHJlYW0KewogIHB1YmxpYzoKICAgIGlvc3RyZWFtKCkg
eyB9CiAgICBpb3N0cmVhbShzdHJlYW1idWYqIHNiLCBvc3RyZWFtKnRpZWQ9IF9fbnVsbCApOwp9
OwoKY2xhc3MgX0lPX2lzdHJlYW1fd2l0aGFzc2lnbiA6IHB1YmxpYyBpc3RyZWFtIHsKcHVibGlj
OgogIF9JT19pc3RyZWFtX3dpdGhhc3NpZ24mIG9wZXJhdG9yPShpc3RyZWFtJik7CiAgX0lPX2lz
dHJlYW1fd2l0aGFzc2lnbiYgb3BlcmF0b3I9KF9JT19pc3RyZWFtX3dpdGhhc3NpZ24mIHJocykK
ICAgIHsgcmV0dXJuIG9wZXJhdG9yPSAoc3RhdGljX2Nhc3Q8aXN0cmVhbSY+IChyaHMpKTsgfQp9
OwoKY2xhc3MgX0lPX29zdHJlYW1fd2l0aGFzc2lnbiA6IHB1YmxpYyBvc3RyZWFtIHsKcHVibGlj
OgogIF9JT19vc3RyZWFtX3dpdGhhc3NpZ24mIG9wZXJhdG9yPShvc3RyZWFtJik7CiAgX0lPX29z
dHJlYW1fd2l0aGFzc2lnbiYgb3BlcmF0b3I9KF9JT19vc3RyZWFtX3dpdGhhc3NpZ24mIHJocykK
ICAgIHsgcmV0dXJuIG9wZXJhdG9yPSAoc3RhdGljX2Nhc3Q8b3N0cmVhbSY+IChyaHMpKTsgfQp9
OwoKZXh0ZXJuIF9JT19pc3RyZWFtX3dpdGhhc3NpZ24gY2luOwogCmV4dGVybiBfSU9fb3N0cmVh
bV93aXRoYXNzaWduIGNvdXQsIGNlcnI7CgpleHRlcm4gX0lPX29zdHJlYW1fd2l0aGFzc2lnbiBj
bG9nCgoKCjsKCmV4dGVybiBpc3RyZWFtJiBsb2NrKGlzdHJlYW0mIGlucyk7CmV4dGVybiBpc3Ry
ZWFtJiB1bmxvY2soaXN0cmVhbSYgaW5zKTsKZXh0ZXJuIG9zdHJlYW0mIGxvY2sob3N0cmVhbSYg
b3V0cyk7CmV4dGVybiBvc3RyZWFtJiB1bmxvY2sob3N0cmVhbSYgb3V0cyk7CgpzdHJ1Y3QgSW9z
dHJlYW1faW5pdCB7IH0gOyAgIAoKaW5saW5lIGlvcyYgZGVjKGlvcyYgaSkKeyBpLnNldGYoaW9z
OjpkZWMsIGlvczo6ZGVjfGlvczo6aGV4fGlvczo6b2N0KTsgcmV0dXJuIGk7IH0KaW5saW5lIGlv
cyYgaGV4KGlvcyYgaSkKeyBpLnNldGYoaW9zOjpoZXgsIGlvczo6ZGVjfGlvczo6aGV4fGlvczo6
b2N0KTsgcmV0dXJuIGk7IH0KaW5saW5lIGlvcyYgb2N0KGlvcyYgaSkKeyBpLnNldGYoaW9zOjpv
Y3QsIGlvczo6ZGVjfGlvczo6aGV4fGlvczo6b2N0KTsgcmV0dXJuIGk7IH0KfSAgCgoKIyA2ICIv
dXNyL2xvY2FsL2xpYi9nY2MtbGliL21pcHMtc2dpLWlyaXg2LjUvMi45NS4zLy4uLy4uLy4uLy4u
L2luY2x1ZGUvZysrLTMvaW9zdHJlYW0iIDIgMwoKCiMgNzIgIi4vaW50Ti5jYyIgMgoKCmludCBt
YWluKCkKewogICAKICBJbnQ8MTY+Ojp0eXBlIGkyOwogIEludDwzMj46OnR5cGUgaTQ7CiAgSW50
PDY0Pjo6dHlwZSBpODsKCiAgaTIgPSAyOwogIGk0ID0gNDsKICBpOCA9IDg7CgogIGNvdXQgPDwg
InNpemVvZiBpMiA9ICIgPDwgc2l6ZW9mIGkyIDw8CiAgICAiOyBzaXplb2YgaTQgPSAiIDw8IHNp
emVvZiBpNCA8PAogICAgIjsgc2l6ZW9mIGk4ID0gIiA8PCBzaXplb2YgaTggPDwgZW5kbDsKfQo=


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]