Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 9 Feb 1999 13:46:58 -0500 (EST)
From:      Larry Lile <lile@stdio.com>
To:        Julian Elischer <julian@whistle.com>
Cc:        hackers@FreeBSD.ORG
Subject:   Re: Why did this panic?
Message-ID:  <Pine.BSF.4.05.9902091338150.14147-300000@heathers.stdio.com>
In-Reply-To: <Pine.BSF.3.95.990209103135.5802D-100000@current1.whistle.com>

next in thread | previous in thread | raw e-mail | index | archive | help
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--0-1628243425-918586018=:14147
Content-Type: TEXT/PLAIN; charset=X-UNKNOWN
Content-Transfer-Encoding: QUOTED-PRINTABLE


It looks like Jan 20 21:15 (EST) judging from the CVS directory and=20
sounds about right as I recall.

drwxr-xr-x 2 root wheel 512 Jan 20 21:15 CVS

I included the kernel config for you, the problem is that I am
working on token-ring drivers and my code could easily be wrong.
The funny thing is, I only see the problem with high mtu's
like 4K.  No problems at 1500.  Also, I have an fxp interface
in the machine (in reference to the last thread).

I have also included the source to the oltr driver in-case you
want to look at the code where I allocate the mubfs...  Things
appeared to start to go wrong in ReceiveFrameCompleted.
The tok (IBM) driver is compiled in but the interface was down.

Larry Lile
lile@stdio.com


On Tue, 9 Feb 1999, Julian Elischer wrote:

> ah yes that's what I want..
> mclfree is garbage....
> exactly liek we saw on our mystery crash
>=20
> This indicates that an mbuf cluster was used after it was freed,
> or it was allocated to two differnt users.
>=20
>=20
> that's exactly what we saw.
>=20
> What version EXACTLY (date etc) of FreeBSD?
>=20
>=20
> tell me..
> what protocols are compiled in?=20
> and what netowrking drivers and=20
> what machines are on your nets (specifically, do you have MACS
> and the netatalk code compiled in?
>=20
>=20
> On Tue, 9 Feb 1999, Larry Lile wrote:
>=20
> >=20
> > Is this what you were looking for?
> >=20
> > (kgdb) print *m0
> > $4 =3D {m_hdr =3D {mh_next =3D 0x0, mh_nextpkt =3D 0x0, mh_data =3D 0xf=
0756a20 "(rc=3D",=20
> >     mh_len =3D 40, mh_type =3D 1, mh_flags =3D 2}, M_dat =3D {MH =3D {M=
H_pkthdr =3D {
> >         rcvif =3D 0x0, len =3D 1492, header =3D 0x4000000}, MH_dat =3D =
{MH_ext =3D {
> >           ext_buf =3D 0x3d637228 <Address 0x3d637228 out of bounds>,=20
> >           ext_free =3D 0, ext_size =3D 2048, ext_ref =3D 0},=20
> >         MH_databuf =3D "(rc=3D\000\000\000\000\000\b\000\000\000\000\00=
0\000E\b\005=D41=BA@\000@\006=EF_\n\000\000\001\n\000\000\002\000\024\004\r=
\t\211=F4=BE\013=F8=B6\002P\020D\020Z=B2\000\000sap f4 ui/C len=3D\020@\020=
\000Z=B1=C5=EC\000\000\203/=C3=AD=AA=AA\003\000\000\000\b\000le"}},=20
> >     M_databuf =3D "\000\000\000\000=D4\005\000\000\000\000\000\004(rc=
=3D\000\000\000\000\000\b\000\000\000\000\000\000E\b\005=D41=BA@\000@\006=
=EF_\n\000\000\001\n\000\000\002\000\024\004\r\t\211=F4=BE\013=F8=B6\002P\0=
20D\020Z=B2\000\000sap f4 ui/C len=3D\020@\020\000Z=B1=C5=EC\000\000\203/=
=C3=AD=AA=AA\003\000\000\000\b\000le"}}
> >=20
> > (kgdb) print m0.M_dat.MH.MH_dat.MH_ext
> > $6 =3D {ext_buf =3D 0x3d637228 <Address 0x3d637228 out of bounds>, ext_=
free =3D 0,=20
> >   ext_size =3D 2048, ext_ref =3D 0}
> >=20
> > (kgdb) print ((union mcluster *)(m0.M_dat.MH.MH_dat.MH_ext.ext_buf))->m=
cl_next
> > Cannot access memory at address 0x3d637228.
> >=20
> > or more to the point:
> >=20
> > (kgdb) print mclfree
> > $8 =3D (union mcluster *) 0x3d637228
>=20
> *blam*
> Somethings not freeing mbuf clusters correctly.
>=20
> > (kgdb) print *mclfree
> > Cannot access memory at address 0x3d637228.
> > (kgdb)=20
> >=20
> > Or am I misenterpreting MCLGET/MCLALLOC?
> >=20
> > I must have missed the messages about this, was it fixed?
> >=20
> > Larry Lile
> > lile@stdio.com
> >=20
> > On Tue, 9 Feb 1999, Julian Elischer wrote:
> >=20
> > > I think We saw this last week..
> > > it crashed on MCLGET..
> > > what is the pointer to the next free mbuf cluster?
> > > (not the next mbuf) (check the MCLGET macro to see what I mean)
> > >=20
> > >=20
> > > On Tue, 9 Feb 1999, Larry Lile wrote:
> > >=20
> > > >=20
> > > > I am working on improving the mtu sizes (above 1500) for the Olicom=
=20
> > > > token ring driver but I just ran across this panic that I really
> > > > don't understand.  Any ideas?=20
> > > >=20
> > > > Larry Lile
> > > > lile@stdio.com
> > > >=20
> > > >=20
> > > > Fatal trap 12: page fault while in kernel mode
> > > > fault virtual address=09=3D 0xf07eddc2
> > > > fault code=09=09=3D supervisor write, page not present
> > > > instruction pointer=09=3D 0x8:0xf02096ff
> > > > stack pointer=09        =3D 0x10:0xf6829cdc
> > > > frame pointer=09        =3D 0x10:0xf6829d14
> > > > code segment=09=09=3D base 0x0, limit 0xfffff, type 0x1b
> > > > =09=09=09=3D DPL 0, pres 1, def32 1, gran 1
> > > > processor eflags=09=3D interrupt enabled, resume, IOPL =3D 0
> > > > current process=09=09=3D 352 (ftpd)
> > > > interrupt mask=09=09=3D net=20
> > > > trap number=09=09=3D 12
> > > > panic: page fault
> > > >=20
> > > > syncing disks... 7 7 done
> > > >=20
> > > > dumping to dev 20419, offset 761856
> > > > dump 128 127 126 125 124 123 122 121 120 119 118 117 116 115 114 11=
3 112 111 110 109 108 107 106 105 104 103 102 101 100 99 98 97 96 95 94 93 =
92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 =
67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 =
42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 =
17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1=20
> > > > ---
> > > > #0  boot (howto=3D256) at ../../kern/kern_shutdown.c:285
> > > > 285=09=09=09dumppcb.pcb_cr3 =3D rcr3();
> > > > (kgdb) bt
> > > > #0  boot (howto=3D256) at ../../kern/kern_shutdown.c:285
> > > > #1  0xf013f55d in panic (fmt=3D0xf023f25b "page fault")
> > > >     at ../../kern/kern_shutdown.c:446
> > > > #2  0xf02024da in trap_fatal (frame=3D0xf6829ca0, eva=3D4034846146)
> > > >     at ../../i386/i386/trap.c:942
> > > > #3  0xf0202193 in trap_pfault (frame=3D0xf6829ca0, usermode=3D0, ev=
a=3D4034846146)
> > > >     at ../../i386/i386/trap.c:835
> > > > #4  0xf0201daa in trap (frame=3D{tf_es =3D 16, tf_ds =3D 16, tf_edi=
 =3D -260740608,=20
> > > >       tf_esi =3D -260740576, tf_ebp =3D -159212268, tf_isp =3D -159=
212344,=20
> > > >       tf_ebx =3D -1073314688, tf_edx =3D 630210, tf_ecx =3D -265747=
636,=20
> > > >       tf_eax =3D -260751360, tf_trapno =3D 12, tf_err =3D 2, tf_eip=
 =3D -266299649,=20
> > > >       tf_cs =3D 8, tf_eflags =3D 66066, tf_esp =3D -250238026, tf_s=
s =3D -250238028})
> > > >     at ../../i386/i386/trap.c:437
> > > > #5  0xf02096ff in DriverReceiveFrameCompleted (DriverHandle=3D0x1,=
=20
> > > >     ByteCount=3D1514, FragmentCount=3D1, FragmentHandle=3D0x9, Rece=
iveStatus=3D0)
> > > >     at ../../i386/isa/if_oltr.c:1236
> > > > #6  0xf0210acc in ReturnCompletedBuffers ()
> > > > #7  0x631000 in ?? ()
> > > > #8  0xecc5b15a in ?? ()
> > > > Cannot access memory at address 0x104018.
> > > > (kgdb) up 5
> > > > #5  0xf02096ff in DriverReceiveFrameCompleted (DriverHandle=3D0x1,=
=20
> > > >     ByteCount=3D1514, FragmentCount=3D1, FragmentHandle=3D0x9, Rece=
iveStatus=3D0)
> > > >     at ../../i386/isa/if_oltr.c:1236
> > > > 1236=09                MCLGET(m0, M_DONTWAIT);
> > > > (kgdb) print m0
> > > > $1 =3D (struct mbuf *) 0xf0756a00
> > > > (kgdb) list
> > > > 1231=09            if (m0 =3D=3D NULL) {
> > > > 1232=09                ifp->if_ierrors++;
> > > > 1233=09                goto out;
> > > > 1234=09            }
> > > > 1235=09            if (ByteCount + 2 > MHLEN) {
> > > > 1236=09                MCLGET(m0, M_DONTWAIT);
> > > > 1237=09                mbuf_size =3D MCLBYTES;
> > > > 1238=09                if ((m0->m_flags & M_EXT) =3D=3D 0) {
> > > > 1239=09                    m_freem(m0);
> > > > 1240=09                    ifp->if_ierrors++;
> > > > (kgdb) print mbstat
> > > > $3 =3D {m_mbufs =3D 128, m_clusters =3D 100, m_spare =3D 0, m_clfre=
e =3D 27,=20
> > > >   m_drops =3D 0, m_wait =3D 0, m_drain =3D 0, m_mtypes =3D {65453, =
79, 4,=20
> > > >     0 <repeats 253 times>}, m_mcfail =3D 0, m_mpfail =3D 0, m_msize=
 =3D 128,=20
> > > >   m_mclbytes =3D 2048, m_minclsize =3D 204, m_mlen =3D 108, m_mhlen=
 =3D 96}
> > > > (kgdb) print *m0
> > > > $4 =3D {m_hdr =3D {mh_next =3D 0x0, mh_nextpkt =3D 0x0, mh_data =3D=
 0xf0756a20 "(rc=3D",=20
> > > >     mh_len =3D 40, mh_type =3D 1, mh_flags =3D 2}, M_dat =3D {MH =
=3D {MH_pkthdr =3D {
> > > >         rcvif =3D 0x0, len =3D 1492, header =3D 0x4000000}, MH_dat =
=3D {MH_ext =3D {
> > > >           ext_buf =3D 0x3d637228 <Address 0x3d637228 out of bounds>=
,=20
> > > >           ext_free =3D 0, ext_size =3D 2048, ext_ref =3D 0},=20
> > > >         MH_databuf =3D "(rc=3D\000\000\000\000\000\b\000\000\000\00=
0\000\000E\b\005=D41=BA@\000@\006=EF_\n\000\000\001\n\000\000\002\000\024\0=
04\r\t\211=F4=BE\013=F8=B6\002P\020D\020Z=B2\000\000sap f4 ui/C len=3D\020@=
\020\000Z=B1=C5=EC\000\000\203/=C3=AD=AA=AA\003\000\000\000\b\000le"}},=20
> > > >     M_databuf =3D "\000\000\000\000=D4\005\000\000\000\000\000\004(=
rc=3D\000\000\000\000\000\b\000\000\000\000\000\000E\b\005=D41=BA@\000@\006=
=EF_\n\000\000\001\n\000\000\002\000\024\004\r\t\211=F4=BE\013=F8=B6\002P\0=
20D\020Z=B2\000\000sap f4 ui/C len=3D\020@\020\000Z=B1=C5=EC\000\000\203/=
=C3=AD=AA=AA\003\000\000\000\b\000le"}}
> > > > (kgdb)
> > > >=20
> > > >=20
> > > > To Unsubscribe: send mail to majordomo@FreeBSD.org
> > > > with "unsubscribe freebsd-hackers" in the body of the message
> > > >=20
> > >=20
> > >=20
> > > To Unsubscribe: send mail to majordomo@FreeBSD.org
> > > with "unsubscribe freebsd-hackers" in the body of the message
> > >=20
> >=20
> >=20
>=20

--0-1628243425-918586018=:14147
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="if_oltr.c"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.BSF.4.05.9902091346580.14147@heathers.stdio.com>
Content-Description: 
Content-Disposition: attachment; filename="if_oltr.c"

LyogDQogKiBDb3B5cmlnaHQgKGMpIDE5OTgsIExhcnJ5IExpbGUNCiAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuDQogKg0KICogRm9yIGxhdGVzdCBzb3VyY2Vz
IGFuZCBpbmZvcm1hdGlvbiBvbiB0aGlzIGRyaXZlciwgcGxlYXNlDQogKiBn
byB0byBodHRwOi8vYW5hcmNoeS5zdGRpby5jb20uDQogKg0KICogUXVlc3Rp
b25zLCBjb21tZW50cyBvciBzdWdnZXN0aW9ucyBzaG91bGQgYmUgZGlyZWN0
ZWQgdG8NCiAqIExhcnJ5IExpbGUgPGxpbGVAc3RkaW8uY29tPi4NCiAqDQog
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCiAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucw0KICogYXJlIG1ldDoNCiAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQog
KiAgICBub3RpY2UgdW5tb2RpZmllZCwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMsIGFuZCB0aGUgZm9sbG93aW5nDQogKiAgICBkaXNjbGFpbWVyLg0KICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUNCiAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQogKg0K
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFO
RCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORA0KICogQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFDQogKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RQ0KICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
QVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUNCiAqIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMDQogKiBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUw0KICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pDQogKiBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVA0KICogTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWQ0KICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRg0K
ICogU1VDSCBEQU1BR0UuDQogKg0KICogJElkOiBpZl9vbHRyLmMsdiAxLjE1
IDE5OTkvMDIvMDggMjM6Mzc6NDUgbGlsZSBFeHAgbGlsZSAkDQogKi8NCg0K
DQojaW5jbHVkZSAicGNpLmgiDQojaW5jbHVkZSAib2x0ci5oIg0KI2luY2x1
ZGUgIm9wdF9pbmV0LmgiDQojaW5jbHVkZSAiYnBmaWx0ZXIuaCINCg0KI2lm
IChOT0xUUiArIE5QQ0kpID4gMA0KDQovKiNkZWZpbmUgVFJsbGRJbmxpbmVJ
TyovDQoNCiNkZWZpbmUgSVNBX0FEQVBURVJTICAoT0NfMzExNSB8IE9DXzMx
MTcgfCBPQ18zMTE4KQ0KI2RlZmluZSBQQ0lfQURBUFRFUlMgIChPQ18zMTMz
IHwgT0NfMzEzNiB8IE9DXzMxMzcgfCBcDQogICAgICAgICAgICAgICAgICAg
ICAgIE9DXzMxMzkgfCBPQ18zMTQwIHwgT0NfMzE0MSB8IFwNCiAgICAgICAg
ICAgICAgICAgICAgICAgT0NfMzI1MCB8IE9DXzM1NDAgKQ0KDQojZGVmaW5l
IFBDSV9WRU5ET1JfT0xJQ09NIDB4MTA4RA0KDQpjaGFyICpBZGFwdGVyTmFt
ZVtdID0gew0KICAgLyogIDAgKi8gIk9saWNvbSBYVCBBZGFwdGVyIFt1bnN1
cHBvcnRlZF0iLA0KICAgLyogIDEgKi8gIk9saWNvbSBPQy0zMTE1IiwNCiAg
IC8qICAyICovICJPbGljb20gSVNBIDE2LzQgQWRhcHRlciAoT0MtMzExNyki
LA0KICAgLyogIDMgKi8gIk9saWNvbSBJU0EgMTYvNCBBZGFwdGVyIChPQy0z
MTE4KSIsDQogICAvKiAgNCAqLyAiT2xpY29tIE1DQSAxNi80IEFkYXB0ZXIg
KE9DLTMxMjkpIFt1bnN1cHBvcnRlZF0iLA0KICAgLyogIDUgKi8gIk9saWNv
bSBNQ0EgMTYvNCBBZGFwdGVyIChPQy0zMTI5KSBbdW5zdXBwb3J0ZWRdIiwN
CiAgIC8qICA2ICovICJPbGljb20gTUNBIDE2LzQgQWRhcHRlciAoT0MtMzEy
OSkgW3Vuc3VwcG9ydGVkXSIsDQogICAvKiAgNyAqLyAiT2xpY29tIEVJU0Eg
MTYvNCBBZGFwdGVyIChPQy0zMTMzKSIsDQogICAvKiAgOCAqLyAiT2xpY29t
IEVJU0EgMTYvNCBBZGFwdGVyIChPQy0zMTMzKSIsDQogICAvKiAgOSAqLyAi
T2xpY29tIEVJU0EgMTYvNCBTZXJ2ZXIgQWRhcHRlciAoT0MtMzEzNSkiLA0K
ICAgLyogMTAgKi8gIk9saWNvbSBQQ0kgMTYvNCBBZGFwdGVyIChPQy0zMTM2
KSIsDQogICAvKiAxMSAqLyAiT2xpY29tIFBDSSAxNi80IEFkYXB0ZXIgKE9D
LTMxMzYpIiwNCiAgIC8qIDEyICovICJPbGljb20gUENJL0lJIDE2LzQgQWRh
cHRlciAoT0MtMzEzNykiLA0KICAgLyogMTMgKi8gIk9saWNvbSBQQ0kgMTYv
NCBBZGFwdGVyIChPQy0zMTM5KSIsDQogICAvKiAxNCAqLyAiT2xpY29tIFJh
cGlkRmlyZSAzMTQwIDE2LzQgUENJIEFkYXB0ZXIgKE9DLTMxNDApIiwNCiAg
IC8qIDE1ICovICJPbGljb20gUmFwaWRGaXJlIDMxNDEgRmliZXIgQWRhcHRl
ciAoT0MtMzE0MSkiLA0KICAgLyogMTYgKi8gIk9saWNvbSBQQ01DSUEgMTYv
NCBBZGFwdGVyIChPQy0zMjIwKSBbdW5zdXBwb3J0ZWRdIiwNCiAgIC8qIDE3
ICovICJPbGljb20gUENNQ0lBIDE2LzQgQWRhcHRlciAoT0MtMzEyMSwgT0Mt
MzIzMCwgT0MtMzIzMikgW3Vuc3VwcG9ydGVkXSIsDQogICAvKiAxOCAqLyAi
T2xpY29tIFBDTUNJQSAxNi80IEFkYXB0ZXIgKE9DLTMyNTApIiwNCiAgIC8q
IDE5ICovICJPbGljb20gUmFwaWRGaXJlIDM1NDAgNC8xNi8xMDAgQWRhcHRl
ciAoT0MtMzU0MCkiDQp9Ow0KDQojaW5jbHVkZSA8c3lzL3BhcmFtLmg+DQoj
aW5jbHVkZSA8c3lzL3N5c3RtLmg+DQojaW5jbHVkZSA8c3lzL3Byb2MuaD4N
CiNpbmNsdWRlIDxzeXMvc29ja2lvLmg+DQojaW5jbHVkZSA8c3lzL21hbGxv
Yy5oPg0KI2luY2x1ZGUgPHN5cy9tYnVmLmg+DQojaW5jbHVkZSA8c3lzL3Nv
Y2tldC5oPg0KI2luY2x1ZGUgPHN5cy9zeXNsb2cuaD4NCiNpbmNsdWRlIDxz
eXMva2VybmVsLmg+DQojaW5jbHVkZSA8c3lzL2ludGVycnVwdC5oPg0KDQoj
aW5jbHVkZSA8bmV0L2V0aGVybmV0Lmg+DQojaW5jbHVkZSA8bmV0L2lmLmg+
DQojaW5jbHVkZSA8bmV0L2lmX2FycC5oPg0KI2luY2x1ZGUgPG5ldC9pc284
ODAyNS5oPg0KI2luY2x1ZGUgPG5ldC9pZl9tZWRpYS5oPg0KDQojaWYgTkJQ
RklMVEVSID4gMA0KI2luY2x1ZGUgPG5ldC9icGYuaD4NCiNlbmRpZg0KIA0K
I2lmIE5QTlAgPiAwDQojaW5jbHVkZSA8aTM4Ni9pc2EvcG5wLmg+DQojZW5k
aWYNCg0KI2luY2x1ZGUgPG1hY2hpbmUvY2xvY2suaD4NCiNpbmNsdWRlIDxt
YWNoaW5lL21kX3Zhci5oPg0KI2luY2x1ZGUgPGkzODYvaXNhL2lzYV9kZXZp
Y2UuaD4NCg0KI2lmIE5QQ0kgPiAwDQojaW5jbHVkZSA8cGNpL3BjaXZhci5o
Pg0KI2luY2x1ZGUgPHBjaS9wY2lyZWcuaD4NCiNlbmRpZg0KDQojaWZuZGVm
IFRSTExEX1NQRUVEX0FVVE8NCiNkZWZpbmUgVFJMTERfU1BFRURfQVVUTyAw
DQojZW5kaWYNCg0Kdm9pZCAqb2x0cl9tYWxsb2Moc3NpemVfdCwgVFJsbGRB
ZGFwdGVyQ29uZmlnX3QgKik7DQoNCi8qDQogKiBHbHVlIGZ1bmN0aW9ucyBw
cm90b3R5cGVzIGZvciBQTVcga2l0IElPDQogKi8NCg0KI2lmbmRlZiBUUmxs
ZElubGluZUlPDQpzdGF0aWMgdm9pZCBEcml2ZXJPdXRCeXRlICAgICAgICAg
ICBfX1AoKHVuc2lnbmVkIHNob3J0LCB1bnNpZ25lZCBjaGFyKSk7DQpzdGF0
aWMgdm9pZCBEcml2ZXJPdXRXb3JkICAgICAgICAgICBfX1AoKHVuc2lnbmVk
IHNob3J0LCB1bnNpZ25lZCBzaG9ydCkpOw0Kc3RhdGljIHZvaWQgRHJpdmVy
T3V0RHdvcmQgICAgICAgICAgX19QKCh1bnNpZ25lZCBzaG9ydCwgdW5zaWdu
ZWQgbG9uZykpOw0Kc3RhdGljIHZvaWQgRHJpdmVyUmVwT3V0Qnl0ZSAgICAg
ICAgX19QKCh1bnNpZ25lZCBzaG9ydCwgdW5zaWduZWQgY2hhciAgKiwgaW50
KSk7DQpzdGF0aWMgdm9pZCBEcml2ZXJSZXBPdXRXb3JkICAgICAgICBfX1Ao
KHVuc2lnbmVkIHNob3J0LCB1bnNpZ25lZCBzaG9ydCAqLCBpbnQpKTsNCnN0
YXRpYyB2b2lkIERyaXZlclJlcE91dER3b3JkICAgICAgIF9fUCgodW5zaWdu
ZWQgc2hvcnQsIHVuc2lnbmVkIGxvbmcgICosIGludCkpOw0Kc3RhdGljIHVu
c2lnbmVkIGNoYXIgIERyaXZlckluQnl0ZSAgX19QKCh1bnNpZ25lZCBzaG9y
dCkpOw0Kc3RhdGljIHVuc2lnbmVkIHNob3J0IERyaXZlckluV29yZCAgX19Q
KCh1bnNpZ25lZCBzaG9ydCkpOw0Kc3RhdGljIHVuc2lnbmVkIGxvbmcgIERy
aXZlckluRHdvcmQgX19QKCh1bnNpZ25lZCBzaG9ydCkpOw0Kc3RhdGljIHZv
aWQgRHJpdmVyUmVwSW5CeXRlICAgICAgICAgX19QKCh1bnNpZ25lZCBzaG9y
dCwgdW5zaWduZWQgY2hhciAgKiwgaW50KSk7DQpzdGF0aWMgdm9pZCBEcml2
ZXJSZXBJbldvcmQgICAgICAgICBfX1AoKHVuc2lnbmVkIHNob3J0LCB1bnNp
Z25lZCBzaG9ydCAqLCBpbnQpKTsNCnN0YXRpYyB2b2lkIERyaXZlclJlcElu
RHdvcmQgICAgICAgIF9fUCgodW5zaWduZWQgc2hvcnQsIHVuc2lnbmVkIGxv
bmcgICosIGludCkpOw0KI2VuZGlmIC8qVFJsbGRJbmxpbmVJTyovDQpzdGF0
aWMgdm9pZCBEcml2ZXJTdXNwZW5kICAgICAgICAgICAgICAgIF9fUCgodW5z
aWduZWQgc2hvcnQpKTsNCnN0YXRpYyB2b2lkIERyaXZlclN0YXR1cyAgICAg
ICAgICAgICAgICAgX19QKCh2b2lkICosIFRSbGxkU3RhdHVzX3QgKikpOw0K
c3RhdGljIHZvaWQgRHJpdmVyQ2xvc2VDb21wbGV0ZWQgICAgICAgICBfX1Ao
KHZvaWQgKikpOw0Kc3RhdGljIHZvaWQgRHJpdmVyU3RhdGlzdGljcyAgICAg
ICAgICAgICBfX1AoKHZvaWQgKiwgVFJsbGRTdGF0aXN0aWNzX3QgKikpOw0K
c3RhdGljIHZvaWQgRHJpdmVyVHJhbnNtaXRGcmFtZUNvbXBsZXRlZCBfX1Ao
KHZvaWQgKiwgdm9pZCAqLCBpbnQpKTsNCnN0YXRpYyB2b2lkIERyaXZlclJl
Y2VpdmVGcmFtZUNvbXBsZXRlZCAgX19QKCh2b2lkICosIGludCwgaW50LCB2
b2lkICosIGludCkpOw0KDQp0eXBlZGVmIHN0cnVjdCB0eF9idWYgew0KICAg
IGludCBpbmRleDsNCiAgICBjaGFyICpidWY7DQp9IHR4X2J1Zl90Ow0KDQp0
eXBlZGVmIHN0cnVjdCByeF9idWYgew0KICAgIGludCAgICAgIGluZGV4Ow0K
ICAgIGNoYXIgICAgICpidWY7DQp9IHJ4X2J1Zl90Ow0KDQojaWZuZGVmIEVY
VFJBX09MVFINCiNpZiBOUENJID4gMA0KI2RlZmluZSBFWFRSQV9PTFRSCTgN
CiNlbHNlIA0KI2RlZmluZSBFWFRSQV9PTFRSCTANCiNlbmRpZiAvKiBOUENJ
ICovDQojZW5kaWYgLyogRVhUUkFfT0xUUiAqLw0KDQojaWZuZGVmIE9MVFJf
UFJPTUlTQ19NT0RFDQojZGVmaW5lIE9MVFJfUFJPTUlTQ19NT0RFIChUUkxM
RF9QUk9NX0xMQykNCiNlbmRpZg0KDQojZGVmaW5lIEFMTF9PUFRJT05TIChJ
Rk1fVE9LX0VUUiB8IElGTV9UT0tfU1JDUlQgfCBJRk1fVE9LX0FMTFIgfCBJ
Rk1fVE9LX0RUUiB8IElGTV9UT0tfQ0xBU1NJQyB8IElGTV9UT0tfQVVUTykN
Cg0KLyogTGlzdCBzaXplcyBNVVNUIGJlIGEgcG93ZXIgb2YgMiAqLw0KI2Rl
ZmluZSBUWF9MSVNUX1NJWkUgICAgMTYNCiNkZWZpbmUgUlhfTElTVF9TSVpF
ICAgIDE2IA0KI2RlZmluZSBUWF9MSVNUX01BU0sgICAgKFRYX0xJU1RfU0la
RSAtIDEpDQojZGVmaW5lIFJYX0xJU1RfTUFTSyAgICAoUlhfTElTVF9TSVpF
IC0gMSkNCiNkZWZpbmUgUlhfQlVGRkVSX0xFTiAgICg4KjEwMjQpDQojZGVm
aW5lIFRYX0JVRkZFUl9MRU4gICAoOCoxMDI0KQ0KDQpzdHJ1Y3Qgb2x0cl9z
b2Z0YyB7DQogICAgc3RydWN0IGFycGNvbSBhcnBjb207DQogICAgc3RydWN0
IGlmbWVkaWEgaWZtZWRpYTsNCiAgICBUUmxsZEFkYXB0ZXJDb25maWdfdCAq
Y29uZmlnOw0KICAgIFRSbGxkQWRhcHRlcl90ICpUUmxsZEFkYXB0ZXI7DQog
ICAgaW50IHVuaXQ7DQogICAgdV9zaG9ydCBQcm9taXNjTW9kZTsNCiAgICB1
X3Nob3J0IEFkYXB0ZXJNb2RlOw0KICAgIGludCBod19zdGF0ZTsNCiNkZWZp
bmUgSFdfVU5LTk9XTiAgICAgIDAgIC8qIGluaXRpYWwvYWJzZW50IHN0YXRl
ICovDQojZGVmaW5lIEhXX0ZPVU5EICAgICAgICAxICAvKiBmb3VuZCwgbm90
IGluaXRpYWxpemVkICovDQojZGVmaW5lIEhXX0JBRCAgICAgICAgICAyICAv
KiBmYXRhbCBlcnJvciAqLw0KI2RlZmluZSBIV19GQUlMRUQgICAgICAgMyAg
LyogY2xvc2VkIGVnLiBieSByZW1vdmUsIGFsbG93IG1hbnVhbCByZW9wZW4g
Ki8NCiNkZWZpbmUgSFdfTE9BRElORyAgICAgIDQNCiNkZWZpbmUgSFdfQ0xP
U0lORyAgICAgIDUNCiNkZWZpbmUgSFdfQ0xPU0lORzIgICAgIDYNCiNkZWZp
bmUgSFdfQ0xPU0VEICAgICAgIDcNCiNkZWZpbmUgSFdfT1BFTklORyAgICAg
IDgNCiNkZWZpbmUgSFdfT1BFTiAgICAgICAgIDkNCiNkZWZpbmUgSFdfRVJS
T1IgICAgICAgIDEwIC8qIHRlbXBvcmFyeSBlcnJvciAqLw0KDQogICAgdV9s
b25nIEdyb3VwQWRkcmVzczsNCiAgICB1X2xvbmcgRnVuY3Rpb25hbEFkZHJl
c3M7DQogICAgaW50IHBvbGxfYWRhcHRlcjsgDQoNCiAgICBpbnQgdHhfbmV4
dDsNCiAgICBpbnQgdHhfYXZhaWw7DQogICAgdHhfYnVmX3QgdHhfYnVmZmVy
W1RYX0xJU1RfU0laRV07DQoNCiAgICBpbnQgcnhfbmV4dDsNCiAgICBpbnQg
cnhfYXZhaWw7DQogICAgcnhfYnVmX3QgcnhfYnVmZmVyW1JYX0xJU1RfU0la
RV07DQoNCiAgICBzdHJ1Y3QgY2FsbG91dF9oYW5kbGUgb2x0cl9jaDsNCiAg
ICBzdHJ1Y3QgY2FsbG91dF9oYW5kbGUgcG9sbF9jaDsNCg0KfTsNCg0Kc3Rh
dGljIHN0cnVjdCBvbHRyX3NvZnRjIG9sdHJfc29mdGNbTk9MVFIgKyBFWFRS
QV9PTFRSXTsNCg0KLyoNCiAqIERyaXZlciBmdW5jdGlvbiBwcm90b3R5cGVz
DQogKi8NCg0Kc3RhdGljIGludCAgb2x0cl9wcm9iZSAgIF9fUCgoc3RydWN0
IGlzYV9kZXZpY2UgKikpOw0Kc3RhdGljIGludCAgb2x0cl9hdHRhY2ggIF9f
UCgoc3RydWN0IGlzYV9kZXZpY2UgKikpOyAgDQpzdGF0aWMgdm9pZCBvbHRy
X2luaXQgICAgX19QKChzdHJ1Y3Qgb2x0cl9zb2Z0YyAqKSk7DQpzdGF0aWMg
dm9pZCBvbHRyX2ludHIgICAgX19QKChpbnQpKTsNCnN0YXRpYyB2b2lkIG9s
dHJfc3RhcnQgICBfX1AoKHN0cnVjdCBpZm5ldCAqKSk7DQpzdGF0aWMgdm9p
ZCBvbHRyX3N0b3AgICAgX19QKChzdHJ1Y3Qgb2x0cl9zb2Z0YyAqKSk7DQpz
dGF0aWMgaW50ICBvbHRyX2lvY3RsICAgX19QKChzdHJ1Y3QgaWZuZXQgKiwg
dV9sb25nLCBjYWRkcl90KSk7DQoNCnN0YXRpYyBpbnQgb2x0cl9hdHRhY2hf
Y29tbW9uICAgX19QKChzdHJ1Y3Qgb2x0cl9zb2Z0YyAqKSk7DQoNCnZvaWQg
b2x0cl90aW1lb3V0IF9fUCgodm9pZCAqKSk7DQp2b2lkIGFkYXB0ZXJfcG9s
bCBfX1AoKHZvaWQgKikpOw0KDQpzdHJ1Y3QgaXNhX2RyaXZlciBvbHRyZHJp
dmVyID0gew0KICAgIG9sdHJfcHJvYmUsDQogICAgb2x0cl9hdHRhY2gsDQog
ICAgIm9sdHIiLA0KICAgIDANCn07DQoNCmludCBpc2FfY2FyZHMgPSAwOw0K
DQojaWYgTlBDSSA+IDANCnN0YXRpYyB1X2xvbmcgb2x0cl9jb3VudCA9IE5P
TFRSOw0Kc3RhdGljIGNvbnN0IGNoYXIgKm9sdHJfcGNpX3Byb2JlCV9fUCgo
cGNpY2lfdCwgcGNpZGlfdCkpOw0Kc3RhdGljIHZvaWQgb2x0cl9wY2lfYXR0
YWNoCQlfX1AoKHBjaWNpX3QsIGludCkpOw0Kc3RhdGljIHZvaWQgb2x0cl9w
Y2lfaW50ciAgICAJCV9fUCgodm9pZCAqKSk7DQpzdGF0aWMgdm9pZCBvbHRy
X3BjaV9zaHV0ZG93bgkJX19QKChpbnQsIHZvaWQgKikpOw0KDQpzdGF0aWMg
c3RydWN0IHBjaV9kZXZpY2Ugb2x0cl9kZXZpY2UgPSB7DQogICAgIm9sdHIi
LA0KICAgIG9sdHJfcGNpX3Byb2JlLA0KICAgIG9sdHJfcGNpX2F0dGFjaCwN
CiAgICAmb2x0cl9jb3VudCwNCiAgICBOVUxMDQp9Ow0KDQpEQVRBX1NFVChw
Y2lkZXZpY2Vfc2V0LCBvbHRyX2RldmljZSk7DQppbnQgcGNpX2NhcmRzID0g
MDsNCiNlbmRpZiAvKiBOUENJICovDQoNCnN0YXRpYyBpbnQgIG9sdHJfaWZt
ZWRpYV91cGQJX19QKChzdHJ1Y3QgaWZuZXQgKikpOw0Kc3RhdGljIHZvaWQg
b2x0cl9pZm1lZGlhX3N0cyAgICBfX1AoKHN0cnVjdCBpZm5ldCAqLCBzdHJ1
Y3QgaWZtZWRpYXJlcSAqKSk7DQoNCnN0YXRpYyBUUmxsZERyaXZlcl90IG9s
dHJMbGREcml2ZXIgPSB7DQogICAgVFJMTERfVkVSU0lPTiwNCiNpZm5kZWYg
VFJsbGRJbmxpbmVJTw0KICAgIERyaXZlck91dEJ5dGUsDQogICAgRHJpdmVy
T3V0V29yZCwNCiAgICBEcml2ZXJPdXREd29yZCwNCiAgICBEcml2ZXJSZXBP
dXRCeXRlLA0KICAgIERyaXZlclJlcE91dFdvcmQsDQogICAgRHJpdmVyUmVw
T3V0RHdvcmQsDQogICAgRHJpdmVySW5CeXRlLA0KICAgIERyaXZlckluV29y
ZCwNCiAgICBEcml2ZXJJbkR3b3JkLA0KICAgIERyaXZlclJlcEluQnl0ZSwN
CiAgICBEcml2ZXJSZXBJbldvcmQsDQogICAgRHJpdmVyUmVwSW5Ed29yZCwN
CiNlbmRpZiAvKlRSbGxkSW5saW5lSU8qLw0KICAgIERyaXZlclN1c3BlbmQs
DQogICAgRHJpdmVyU3RhdHVzLA0KICAgIERyaXZlckNsb3NlQ29tcGxldGVk
LA0KICAgIERyaXZlclN0YXRpc3RpY3MsDQogICAgRHJpdmVyVHJhbnNtaXRG
cmFtZUNvbXBsZXRlZCwNCiAgICBEcml2ZXJSZWNlaXZlRnJhbWVDb21wbGV0
ZWQsDQp9Ow0KDQpUUmxsZEFkYXB0ZXJDb25maWdfdCBvbHRyX2NvbmZpZ1tO
T0xUUiArIEVYVFJBX09MVFJdOw0KDQp2b2lkICoNCm9sdHJfbWFsbG9jKFNp
emUsIEFkYXB0ZXIpDQogICAgc3NpemVfdCBTaXplOw0KICAgIFRSbGxkQWRh
cHRlckNvbmZpZ190ICpBZGFwdGVyOw0Kew0KDQogICAgLyogSWYgdGhlIGFk
YXB0ZXIgbmVlZHMgbWVtb3J5IGJlbG93IDE2TSBmb3IgRE1BIHRoZW4gdXNl
IGNvbnRpZ21hbGxvYyAqLw0KICAgIGlmIChBZGFwdGVyLT5tb2RlICYgVFJM
TERfTU9ERV8xNk0pICAvKiBBZGFwdGVyIHVzaW5nIElTQSBETUEgYnVmZmVy
IGJlbG93IDE2TSAqLw0KICAgICAgICByZXR1cm4oY29udGlnbWFsbG9jKFNp
emUsIE1fREVWQlVGLCBNX05PV0FJVCwgMHVsLCAweGZmZmZmZnVsLCAxdWws
IDB4MTAwMDB1bCkpOw0KICAgIGVsc2UNCiAgICAgICAgcmV0dXJuKG1hbGxv
YyhTaXplLCBNX0RFVkJVRiwgTV9OT1dBSVQpKTsNCn0NCiAgICANCi8qDQog
KiBEcml2ZXIgRnVuY3Rpb25zIA0KICovDQoNCnN0YXRpYyBpbnQNCm9sdHJf
cHJvYmUoaXMpDQogICAgc3RydWN0IGlzYV9kZXZpY2UgKmlzOw0Kew0KICAg
IHN0YXRpYyBpbnQgZmluZF9jb21wbGV0ZWQgPSAwLCBhc3NpZ25lZFtOT0xU
Ul07DQogICAgc3RydWN0IG9sdHJfc29mdGMgKnNjID0gJm9sdHJfc29mdGNb
aXMtPmlkX3VuaXRdOw0KICAgIGludCBpOw0KDQogICAgcHJpbnRmKCJvbHRy
JWQ6IG9sdHJfcHJvYmVcbiIsIGlzLT5pZF91bml0KTsNCg0KICAgIC8qIE1h
a2UgbGlmZSBlYXN5LCB1c2UgdGhlIE9saWNvbSBzdXBwbGllZCBmaW5kIGZ1
bmN0aW9uIG9uIHRoZSBmaXJzdCBwcm9iZQ0KICAgICAqIHRvIHByb2JlIGFs
bCBvZiB0aGUgSVNBIGFkYXB0ZXJzLiAgVGhlbiBnaXZlIHRoZW0gdG8gZWFj
aCB1bml0IGFzIHJlcXVlc3RlZC4NCiAgICAgKiBUcnkgdG8gbWF0Y2ggdGhl
IGFkYXB0ZXJzIHRvIHVuaXRzIGJhc2VkIG9uIHRoZSBpb2Jhc2UsIGJ1dCBp
ZiBpb2Jhc2U/IHRoZW4NCiAgICAgKiBqdXN0IGdpdmUgb3V0IHRoZSBuZXh0
IGF2YWlsYWJsZSBhZGFwdGVyLg0KICAgICAqLw0KICAgIGlmICghZmluZF9j
b21wbGV0ZWQpIHsNCiAgICAgICAgaXNhX2NhcmRzID0gVFJsbGRGaW5kKCZv
bHRyTGxkRHJpdmVyLCAmb2x0cl9jb25maWdbMF0sIElTQV9BREFQVEVSUywg
Tk9MVFIpOw0KICAgICAgICAvKmZvciAoaSA9IDA7IGkgPCBpc2FfY2FyZHM7
IGkrKykgew0KICAgICAgICAgICAgcHJpbnRmKCJUUmxsZEZpbmQ6IGNhcmQg
JWQgLSAlcyBNQUMgJTZEXG4iLCBpICsgMSwgQWRhcHRlck5hbWVbb2x0cl9j
b25maWdbaV0udHlwZV0sIG9sdHJfY29uZmlnW2ldLm1hY2FkZHJlc3MsICI6
Iik7DQogICAgICAgIH0qLw0KICAgICAgICBmb3IgKGkgPSAwOyBpIDwgTk9M
VFI7IGkrKykNCiAgICAgICAgICAgIGFzc2lnbmVkW2ldID0gMDsNCiAgICAg
ICAgZmluZF9jb21wbGV0ZWQgPSAxOw0KICAgIH0NCg0KICAgIHNjLT51bml0
ID0gaXMtPmlkX3VuaXQ7DQogICAgc2MtPmh3X3N0YXRlID0gSFdfVU5LTk9X
TjsNCg0KICAgIGlmIChmaW5kX2NvbXBsZXRlZCAmJiAoKGlzYV9jYXJkcyA9
PSAwKSB8fCAoaXMtPmlkX3VuaXQgPiBpc2FfY2FyZHMpKSkgDQogICAgICAg
IHJldHVybigwKTsNCg0KICAgIGlmICgoKGlzLT5pZF9pb2Jhc2UgPCAweGEw
MCkgfHwgKGlzLT5pZF9pb2Jhc2UgPiAweGJlMCkpICYmIChpcy0+aWRfaW9i
YXNlICE9IDB4ZmZmZmZmZmYpKSB7DQogICAgICAgIHByaW50Zigib2x0ciVk
OiBwb3J0IGFkZHJlc3MgaW1wb3NzaWJsZSAoMHglWClcbiIsIGlzLT5pZF91
bml0LCBpcy0+aWRfaW9iYXNlKTsNCiAgICAgICAgcmV0dXJuKDApOw0KICAg
IH0NCg0KICAgIC8qIEF1dG8gYXNzaWduIGxvd2VzdCBhdmFpbGFibGUgY2Fy
ZCBub3QgYWxyZWFkeSBpbiB1c2UgKi8NCiAgICBpZiAoaXMtPmlkX2lvYmFz
ZSA9PSAweGZmZmZmZmZmKSB7DQogICAgICAgIHByaW50Zigib2x0ciVkOiBh
dXRvIGFzc2lnbmluZyBjYXJkLlxuIiwgaXMtPmlkX3VuaXQpOw0KICAgICAg
ICBmb3IgKGkgPSAwOyBhc3NpZ25lZFtpXTsgaSsrKTsNCiAgICAgICAgYXNz
aWduZWRbaV0gPSAxOw0KICAgICAgICBzYy0+Y29uZmlnID0gJm9sdHJfY29u
ZmlnW2ldOw0KICAgICAgICBpcy0+aWRfaW9iYXNlID0gc2MtPmNvbmZpZy0+
aW9iYXNlMDsgICAgICAgICAgICAgICAgICAgICAgICAvKiBDbGFpbSBvdXIg
cG9ydCBzcGFjZSAqLw0KICAgICAgICBpZiAoIWlzLT5pZF9pcnEpIA0KICAg
ICAgICAgICAgaXMtPmlkX2lycSA9ICgxIDw8IHNjLT5jb25maWctPmludGVy
cnVwdGxldmVsKTsgICAgICAgICAvKiBDbGFpbSBvdXIgaW50ZXJydXB0ICov
DQogICAgICAgIGlzLT5pZF9pbnRyID0gKGludGhhbmQyX3QgKilvbHRyX2lu
dHI7DQogICAgICAgIHJlZ2lzdGVyX2ludHIoZmZzKGlzLT5pZF9pcnEpIC0g
MSwgaXMtPmlkX2lkLCBpcy0+aWRfcmlfZmxhZ3MsIGlzLT5pZF9pbnRyLCAm
bmV0X2ltYXNrLCBpcy0+aWRfdW5pdCk7DQogICAgICAgIGlmICgoaXMtPmlk
X2RycSA9PSAweGZmZmZmZmZmKSAmJiAoc2MtPmNvbmZpZy0+ZG1hbGV2ZWwg
IT0gVFJMTERfRE1BX1BJTykpDQogICAgICAgICAgICBpcy0+aWRfZHJxID0g
c2MtPmNvbmZpZy0+ZG1hbGV2ZWw7ICAgICAgICAgICAgICAgICAgICAgIC8q
IENsYWltIG91ciBkbWEgY2hhbm5lbCAqLw0KICAgICAgICBwcmludGYoIm9s
dHIlZDogPCVzPiBbJTZEXVxuIiwgaXMtPmlkX3VuaXQsIEFkYXB0ZXJOYW1l
W3NjLT5jb25maWctPnR5cGVdLCBzYy0+Y29uZmlnLT5tYWNhZGRyZXNzLCAi
OiIpOw0KICAgICAgICBzYy0+aHdfc3RhdGUgPSBIV19GT1VORDsNCiAgICAg
ICAgcmV0dXJuKDEpOw0KICAgIH0gZWxzZSB7DQogICAgLyogQXNzaWduIGJh
c2VkIG9uIGlvYmFzZSBhZGRyZXNzIHByb3ZpZGVkIGluIGtlcm5lbCBjb25m
aWcgKi8NCiAgICAgICAgZm9yIChpID0gMDsgaSA8IE5PTFRSOyBpKyspIHsN
CiAgICAgICAgICAgIGlmIChpcy0+aWRfaW9iYXNlID09IG9sdHJfY29uZmln
W2ldLmlvYmFzZTApIHsNCiAgICAgICAgICAgICAgICBpZiAoYXNzaWduZWRb
aV0pIHsNCiAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJvbHRyJWQ6IGFk
YXB0ZXIgKDB4JVgpIGFscmVhZHkgYXNzaWduZWQuXG4iLCBpcy0+aWRfdW5p
dCwgaXMtPmlkX2lvYmFzZSk7DQogICAgICAgICAgICAgICAgICAgIHJldHVy
bigwKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgYXNz
aWduZWRbaV0gPSAxOw0KICAgICAgICAgICAgICAgIHNjLT5jb25maWcgPSAm
b2x0cl9jb25maWdbaV07DQogICAgICAgICAgICAgICAgaWYgKGlzLT5pZF9p
cnEgPT0gMCkNCiAgICAgICAgICAgICAgICAgICAgaXMtPmlkX2lycSA9ICgx
IDw8IHNjLT5jb25maWctPmludGVycnVwdGxldmVsKTsgICAgICAgICAvKiBD
bGFpbSBvdXIgaW50ZXJydXB0ICovDQogICAgICAgICAgICAgICAgaXMtPmlk
X2ludHIgPSAoaW50aGFuZDJfdCAqKW9sdHJfaW50cjsNCiAgICAgICAgICAg
ICAgICByZWdpc3Rlcl9pbnRyKGZmcyhpcy0+aWRfaXJxKSAtIDEsIGlzLT5p
ZF9pZCwgaXMtPmlkX3JpX2ZsYWdzLCBpcy0+aWRfaW50ciwgJm5ldF9pbWFz
aywgaXMtPmlkX3VuaXQpOw0KICAgICAgICAgICAgICAgIGlmICgoaXMtPmlk
X2RycSA9PSAweGZmZmZmZmZmKSAmJiAoc2MtPmNvbmZpZy0+ZG1hbGV2ZWwg
IT0gVFJMTERfRE1BX1BJTykpDQogICAgICAgICAgICAgICAgICAgIGlzLT5p
ZF9kcnEgPSBzYy0+Y29uZmlnLT5kbWFsZXZlbDsgICAgICAgICAgICAgICAg
ICAgICAgLyogQ2xhaW0gb3VyIGRtYSBjaGFubmVsICovDQogICAgICAgICAg
ICAgICAgcHJpbnRmKCJvbHRyJWQ6IDwlcz4gWyU2RF1cbiIsIGlzLT5pZF91
bml0LCBBZGFwdGVyTmFtZVtzYy0+Y29uZmlnLT50eXBlXSwgc2MtPmNvbmZp
Zy0+bWFjYWRkcmVzcywgIjoiKTsNCiAgICAgICAgICAgICAgICBzYy0+aHdf
c3RhdGUgPSBIV19GT1VORDsNCiAgICAgICAgICAgICAgICByZXR1cm4oMSk7
DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQogICAgcmV0dXJu
KDApOyAvKiBDYXJkIHdhcyBub3QgZm91bmQgKi8NCn0NCg0KI2lmIE5QQ0kg
PiAwDQpzdGF0aWMgY29uc3QgY2hhciAqDQpvbHRyX3BjaV9wcm9iZShjb25m
aWdfaWQsIGRldmljZV9pZCkNCiAgICBwY2ljaV90IGNvbmZpZ19pZDsNCiAg
ICBwY2lkaV90IGRldmljZV9pZDsNCnsNCiAgICB1X2NoYXIgUENJQ29uZmln
dXJhdGlvblNwYWNlWzY0XTsNCiAgICB1X2xvbmcgY29tbWFuZDsNCiAgICBp
bnQgaSwgaiwgcmM7DQoNCiAgICBwcmludGYoIm9sdHI6IG9sdHJfcGNpX3By
b2JlXG4iKTsNCg0KICAgIGogPSBOT0xUUiArIHBjaV9jYXJkczsNCg0KICAg
IGlmIChwY2lfY2FyZHMgPT0gRVhUUkFfT0xUUikNCiAgICAgICAgcmV0dXJu
KE5VTEwpOw0KDQogICAgaWYgKCgoZGV2aWNlX2lkICYgMHhmZmZmKSA9PSBQ
Q0lfVkVORE9SX09MSUNPTSkgJiYgDQogICAgICAgICAgKCgoKGRldmljZV9p
ZCA+PiAxNikgJiAweGZmZmYpID09IDB4MDAwMSkgfHwgDQogICAgICAgICAg
ICgoKGRldmljZV9pZCA+PiAxNikgJiAweGZmZmYpID09IDB4MDAwNCkgfHwg
DQogICAgICAgICAgICgoKGRldmljZV9pZCA+PiAxNikgJiAweGZmZmYpID09
IDB4MDAwNSkgfHwgDQogICAgICAgICAgICgoKGRldmljZV9pZCA+PiAxNikg
JiAweGZmZmYpID09IDB4MDAwNykgfHwgDQogICAgICAgICAgICgoKGRldmlj
ZV9pZCA+PiAxNikgJiAweGZmZmYpID09IDB4MDAwOCkpKSB7DQoNCiAgICAg
ICAgZm9yIChpID0gMDsgaSA8IDY0OyBpKyspDQogICAgICAgICAgICBQQ0lD
b25maWd1cmF0aW9uU3BhY2VbaV0gPSBwY2lfY2ZncmVhZChjb25maWdfaWQs
IGksIC8qYnl0ZXMqLzEpOw0KDQogICAgICAgIHJjID0gVFJsbGRQQ0lDb25m
aWcoJm9sdHJMbGREcml2ZXIsICZvbHRyX2NvbmZpZ1tqXSwgUENJQ29uZmln
dXJhdGlvblNwYWNlKTsNCg0KICAgICAgICBpZiAoKHJjID09IFRSTExEX1BD
SUNPTkZJR19PSykgfHwgKHJjID09IFRSTExEX1BDSUNPTkZJR19TRVRfQ09N
TUFORCkpIHsNCiAgICAgICAgICAgIGlmIChyYyA9PSBUUkxMRF9QQ0lDT05G
SUdfU0VUX0NPTU1BTkQpIHsNCiAgICAgICAgICAgICAgICBwcmludGYoIm9s
dHI6IHNldHRpbmcgYnVzLW1hc3RlciBtb2RlXG4iKTsNCiAgICAgICAgICAg
ICAgICBjb21tYW5kID0gcGNpX2NvbmZfcmVhZChjb25maWdfaWQsIFBDSVJf
Q09NTUFORCk7DQogICAgICAgICAgICAgICAgcGNpX2NvbmZfd3JpdGUoY29u
ZmlnX2lkLCBQQ0lSX0NPTU1BTkQsIChjb21tYW5kIHwgUENJTV9DTURfQlVT
TUFTVEVSRU4pKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHBjaV9j
YXJkcysrOw0KICAgICAgICAgICAgcmV0dXJuIChBZGFwdGVyTmFtZVtvbHRy
X2NvbmZpZ1tqXS50eXBlXSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAg
ICAgICBpZiAocmMgPT0gVFJMTERfUENJQ09ORklHX0ZBSUwpDQogICAgICAg
ICAgICAgICAgcHJpbnRmKCJvbHRyOiBUUmxsZFBDSUNvbmZpZyBmYWlsZWQh
XG4iKTsNCiAgICAgICAgICAgIGlmIChyYyA9PSBUUkxMRF9QQ0lDT05GSUdf
VkVSU0lPTikNCiAgICAgICAgICAgICAgICBwcmludGYoIm9sdHI6IHdyb25n
IExMRCB2ZXJzaW9uXG4iKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICByZXR1
cm4oTlVMTCk7DQp9DQojZW5kaWYgLyogTlBDSSAqLw0KDQpzdGF0aWMgaW50
DQpvbHRyX2F0dGFjaChpcykNCiAgICBzdHJ1Y3QgaXNhX2RldmljZSAqaXM7
DQp7DQogICAgc3RydWN0IG9sdHJfc29mdGMgKnNjID0gJm9sdHJfc29mdGNb
aXMtPmlkX3VuaXRdOw0KICAgIGludCByYzsNCg0KICAgIHNjLT51bml0ID0g
aXMtPmlkX3VuaXQ7DQoNCiAgICBpZiAoIW9sdHJfYXR0YWNoX2NvbW1vbihz
YykpDQogICAgICAgIHJldHVybigwKTsNCg0KICAgIC8qIElmIHRoZSBrZXJu
ZWwgY29uZmlnIGRvZXMgbm90IG1hdGNoIHRoZSBjdXJyZW50IGNhcmQgY29u
ZmlndXJhdGlvbiB0aGVuDQogICAgICogYWRqdXN0IHRoZSBjYXJkIHNldHRp
bmdzIHRvIG1hdGNoIHRoZSBrZXJuZWwuDQogICAgICovDQogICAgaWYgKChm
ZnMoaXMtPmlkX2lycSkgLSAxKSAhPSBzYy0+Y29uZmlnLT5pbnRlcnJ1cHRs
ZXZlbCkgew0KICAgICAgICByYyA9IFRSbGxkU2V0SW50ZXJydXB0KHNjLT5U
UmxsZEFkYXB0ZXIsIGlzLT5pZF9pcnEpOyANCiAgICAgICAgaWYgKHJjICE9
IFRSTExEX0NPTkZJR19PSykgeyAgDQogICAgICAgICAgICBwcmludGYoIm9s
dHIlZDogVW5hYmxlIHRvIGNoYW5nZSBhZGFwdGVyIGludGVycnVwdCBsZXZl
bCAoJXgpXG4iLCBzYy0+dW5pdCwgcmMpOw0KICAgICAgICAgICAgcmV0dXJu
KDApOw0KICAgICAgICB9DQogICAgfSAgIA0KICAgICAgICANCiAgICAvKiBT
ZXQgZG1hIGxldmVsLCBmYWxsIGJhY2sgdG8gcGlvIGlmIHBvc3NpYmxlLiAo
Zm9sbG93aW5nIFNDTyBkcml2ZXIgZXhhbXBsZSkgKi8NCiAgICBpZiAoaXMt
PmlkX2RycSAhPSBzYy0+Y29uZmlnLT5kbWFsZXZlbCkgew0KICAgICAgICBy
YyA9IFRSbGxkU2V0RE1BKHNjLT5UUmxsZEFkYXB0ZXIsIGlzLT5pZF9kcnEs
ICZzYy0+Y29uZmlnLT5tb2RlKTsNCiAgICAgICAgaWYgKHJjICE9IFRSTExE
X0NPTkZJR19PSykgew0KICAgICAgICAgICAgaWYgKChzYy0+Y29uZmlnLT5k
bWFsZXZlbCAhPSBUUkxMRF9ETUFfUElPKSAmJg0KICAgICAgICAgICAgICAg
IChUUmxsZFNldERNQShzYy0+VFJsbGRBZGFwdGVyLCBUUkxMRF9ETUFfUElP
LCAmc2MtPmNvbmZpZy0+bW9kZSkgIT0gVFJMTERfQ09ORklHX09LKSkgew0K
ICAgICAgICAgICAgICAgIHByaW50Zigib2x0ciVkOiB1bmFibGUgdG8gY2hh
bmdlIGRtYSBsZXZlbCBmcm9tICVkIHRvICVkICgleClcbiIsIHNjLT51bml0
LA0KICAgICAgICAgICAgICAgICAgICAgICAgc2MtPmNvbmZpZy0+ZG1hbGV2
ZWwsIGlzLT5pZF9kcnEsIHJjKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIHByaW50Zigib2x0ciVkOiBVbmFibGUgdG8gY2hhbmdlIGFkYXB0ZXIg
ZG1hIGxldmVsLCB1c2luZyBQSU8gbW9kZSAoJXgpXG4iLCBzYy0+dW5pdCwg
cmMpOw0KICAgICAgICAgICAgc2MtPmNvbmZpZy0+ZG1hbGV2ZWwgPSBUUkxM
RF9ETUFfUElPOw0KICAgICAgICAgICAgcmMgPSBUUmxsZFNldERNQShzYy0+
VFJsbGRBZGFwdGVyLCBpcy0+aWRfZHJxLCAmc2MtPmNvbmZpZy0+bW9kZSk7
DQogICAgICAgIH0NCiAgICAgICAgaXMtPmlkX2lycSA9IHNjLT5jb25maWct
PmRtYWxldmVsOw0KICAgIH0NCiAgICByZXR1cm4oMSk7DQp9DQoNCiNpZiBO
UENJID4gMA0Kc3RhdGljIHZvaWQNCm9sdHJfcGNpX2F0dGFjaChjb25maWdf
aWQsIHVuaXQpDQogICAgcGNpY2lfdCBjb25maWdfaWQ7DQogICAgaW50IHVu
aXQ7DQp7DQogICAgc3RydWN0IG9sdHJfc29mdGMgKnNjID0gJm9sdHJfc29m
dGNbdW5pdF07DQoNCiAgICBzYy0+dW5pdCA9IHVuaXQ7DQogICAgc2MtPmNv
bmZpZyA9ICZvbHRyX2NvbmZpZ1t1bml0XTsNCiAgICBzYy0+aHdfc3RhdGUg
PSBIV19GT1VORDsNCg0KICAgIHByaW50Zigib2x0ciVkOiBtYWMgYWRkcmVz
cyBbJTZEXVxuIiwgc2MtPnVuaXQsIHNjLT5jb25maWctPm1hY2FkZHJlc3Ms
ICI6Iik7DQoNCiAgICBpZiAoIW9sdHJfYXR0YWNoX2NvbW1vbihzYykpDQog
ICAgICAgIHJldHVybjsNCg0KICAgIC8qIE1hcCBvdXIgaW50ZXJydXB0ICov
DQogICAgaWYgKCFwY2lfbWFwX2ludChjb25maWdfaWQsIG9sdHJfcGNpX2lu
dHIsIHNjLCAmbmV0X2ltYXNrKSkgew0KICAgICAgICBwcmludGYoIm9sdHIl
ZDogY291bGRuJ3QgbWFwIGludGVycnVwdFxuIiwgdW5pdCk7DQogICAgICAg
IHJldHVybjsNCiAgICB9DQp9DQojZW5kaWYgLyogTlBDSSAqLw0KDQpzdGF0
aWMgaW50DQpvbHRyX2F0dGFjaF9jb21tb24oc2MpDQogICAgc3RydWN0IG9s
dHJfc29mdGMgKnNjOw0Kew0KICAgIHN0cnVjdCBpZm5ldCAqaWZwID0gJnNj
LT5hcnBjb20uYWNfaWY7DQogICAgdV9pbnQgIGJ1ZnNpemU7DQogICAgaW50
ICAgIHJjLCBpLCBqOw0KICANCiAgICAvKnByaW50Zigib2x0ciVkOiBhdHRh
Y2hfY29tbW9uIGNhbGxlZFxuIiwgc2MtPnVuaXQpOyovDQoNCiAgICAvKiBB
bGxvY2F0ZSBhZGFwdGVyIG1lbW9yeSBidWZmZXIgKi8NCiAgICBidWZzaXpl
ID0gVFJsbGRBZGFwdGVyU2l6ZSgpOw0KICAgIHNjLT5UUmxsZEFkYXB0ZXIg
PSAoVFJsbGRBZGFwdGVyX3QgKilvbHRyX21hbGxvYyhidWZzaXplLCBzYy0+
Y29uZmlnKTsNCiAgICBpZiAoc2MtPlRSbGxkQWRhcHRlciA9PSBOVUxMKSB7
DQogICAgICAgIHByaW50Zigib2x0ciVkOiBVbmFibGUgdG8gYWxsb2NhdGUg
YWRhcHRlciBtZW1vcnkgYmxvY2sgKCVkIGJ5dGVzKVxuIiwgc2MtPnVuaXQs
IGJ1ZnNpemUpOw0KICAgIH0gDQogICAgLypwcmludGYoIm9sdHIlZDogQWRh
cHRlciBtZW1vcnkgYmxvY2sgKCVwICVkIGJ5dGVzKVxuIiwgc2MtPnVuaXQs
IHNjLT5UUmxsZEFkYXB0ZXIsIGJ1ZnNpemUpOyovDQoNCiAgICAvKiBTZXR1
cCB0cmFuc21pdCBwb29sICovDQogICAgZm9yIChpID0gMDsgaSA8IFRYX0xJ
U1RfU0laRTsgaSsrKSB7DQogICAgICAgIHNjLT50eF9idWZmZXJbaV0uaW5k
ZXggPSBpOw0KICAgICAgICBzYy0+dHhfYnVmZmVyW2ldLmJ1ZiA9IChjaGFy
ICopb2x0cl9tYWxsb2MoVFhfQlVGRkVSX0xFTiwgc2MtPmNvbmZpZyk7DQog
ICAgICAgIC8qIElmIHdlIGhhdmUgYSBmYWlsdXJlIHRoZW4gZnJlZSBldmVy
eXRoaW5nIGFuZCBnZXQgb3V0ICovDQogICAgICAgIGlmICghc2MtPnR4X2J1
ZmZlcltpXS5idWYpIHsNCiAgICAgICAgICAgIHByaW50Zigib2x0ciVkOiBV
bmFibGUgdG8gYWxsb2NhdGUgdHJhbnNtaXQgYnVmZmVycy5cbiIsIHNjLT51
bml0KTsNCiAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBpOyBqKyspDQog
ICAgICAgICAgICAgICAgZnJlZShzYy0+dHhfYnVmZmVyW2pdLmJ1ZiwgTV9E
RVZCVUYpOw0KICAgICAgICAgICAgcmV0dXJuKDApOw0KICAgICAgICB9DQog
ICAgfQ0KICAgIHNjLT50eF9uZXh0ID0gMDsNCiAgICBzYy0+dHhfYXZhaWwg
PSBUWF9MSVNUX1NJWkU7DQoNCiAgICAvKiBTZXR1cCByZWNlaXZlIHBvb2wg
Ki8NCiAgICBmb3IgKGkgPSAwOyBpIDwgUlhfTElTVF9TSVpFOyBpKyspIHsN
CiAgICAgICAgc2MtPnJ4X2J1ZmZlcltpXS5pbmRleCA9IGk7DQogICAgICAg
IHNjLT5yeF9idWZmZXJbaV0uYnVmID0gKGNoYXIgKilvbHRyX21hbGxvYyhS
WF9CVUZGRVJfTEVOLCBzYy0+Y29uZmlnKTsNCiAgICAgICAgLyogSWYgd2Ug
aGF2ZSBhIGZhaWx1cmUgdGhlbiBmcmVlIGV2ZXJ5dGhpbmcgYW5kIGdldCBv
dXQgKi8NCiAgICAgICAgaWYgKCFzYy0+cnhfYnVmZmVyW2ldLmJ1ZikgeyAg
ICAgICAgICANCiAgICAgICAgICAgIHByaW50Zigib2x0ciVkOiBVbmFibGUg
dG8gYWxsb2NhdGUgcmVjZWl2ZSBidWZmZXJzLlxuIiwgc2MtPnVuaXQpOw0K
ICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGk7IGorKykNCiAgICAgICAg
ICAgICAgICBmcmVlKHNjLT5yeF9idWZmZXJbal0uYnVmLCBNX0RFVkJVRik7
DQogICAgICAgICAgICByZXR1cm4oMCk7DQogICAgICAgIH0NCiAgICB9ICAg
DQogICAgc2MtPnJ4X25leHQgPSAwOw0KICAgIHNjLT5yeF9hdmFpbCA9IFJY
X0xJU1RfU0laRTsgDQogICAgLypwcmludGYoIm9sdHIlZDogQWxsb2NhdGVk
IHJlY2VpdmUgYnVmZmVyc1xuIiwgc2MtPnVuaXQpOyAqLw0KICAgIA0KICAg
IC8qIFNldCB1cCBhZGFwdGVyIHBvbGxpbmcgbWVjaGFuaXNtICovDQogICAg
c2MtPnBvbGxfYWRhcHRlciA9IDE7DQogICAgY2FsbG91dF9oYW5kbGVfaW5p
dCgmc2MtPnBvbGxfY2gpOw0KICAgIHNjLT5wb2xsX2NoID0gdGltZW91dChh
ZGFwdGVyX3BvbGwsICh2b2lkICopc2MtPnVuaXQsICgxKmh6KS8xMDAwKTsN
CiAgICBjYWxsb3V0X2hhbmRsZV9pbml0KCZzYy0+b2x0cl9jaCk7DQoNCiAg
ICAvKiBJbml0aWFsaXplIGFkYXB0ZXIgKi8NCiAgICByYyA9IFRSbGxkQWRh
cHRlckluaXQoJm9sdHJMbGREcml2ZXIsIHNjLT5UUmxsZEFkYXB0ZXIsIGt2
dG9wKHNjLT5UUmxsZEFkYXB0ZXIpLCANCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHZvaWQgKilzYy0+dW5pdCwgc2MtPmNvbmZpZyk7DQogICAgaWYg
KHJjICE9IFRSTExEX0lOSVRfT0spIHsNCiAgICAgICAgc3dpdGNoIChyYykg
ew0KICAgICAgICAgICAgY2FzZSBUUkxMRF9JTklUX05PVF9GT1VORDoNCiAg
ICAgICAgICAgICAgICBwcmludGYoIm9sdHIlZDogQWRhcHRlciBub3QgZm91
bmQgb3IgbWFsZnVuY3Rpb25pbmcuXG4iLCBzYy0+dW5pdCk7DQogICAgICAg
ICAgICAgICAgc2MtPmh3X3N0YXRlID0gSFdfQkFEOw0KICAgICAgICAgICAg
ICAgIHJldHVybigwKTsNCiAgICAgICAgICAgIGNhc2UgVFJMTERfSU5JVF9V
TlNVUFBPUlRFRDoNCiAgICAgICAgICAgICAgICBwcmludGYoIm9sdHIlZDog
QWRhcHRlciBub3Qgc3VwcG9ydGVkIGJ5IGxvdyBsZXZlbCBkcml2ZXIuXG4i
LCBzYy0+dW5pdCk7DQogICAgICAgICAgICAgICAgc2MtPmh3X3N0YXRlID0g
SFdfVU5LTk9XTjsNCiAgICAgICAgICAgICAgICByZXR1cm4oMCk7DQogICAg
ICAgICAgICBjYXNlIFRSTExEX0lOSVRfUEhZUzE2Og0KICAgICAgICAgICAg
ICAgIHByaW50Zigib2x0ciVkOiBBZGFwdGVyIG1lbW9yeSBibG9jayBhYm92
ZSAxNk0sIG11c3QgYmUgYmVsb3cgMTZNLlxuIiwgc2MtPnVuaXQpOw0KICAg
ICAgICAgICAgICAgIHJldHVybigwKTsNCiAgICAgICAgICAgIGNhc2UgVFJM
TERfSU5JVF9WRVJTSU9OOg0KICAgICAgICAgICAgICAgIHByaW50Zigib2x0
ciVkOiBMb3cgbGV2ZWwgZHJpdmVyIHZlcnNpb24gbWlzbWF0Y2guXG4iLCBz
Yy0+dW5pdCk7DQogICAgICAgICAgICAgICAgcmV0dXJuKDApOw0KICAgICAg
ICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICBwcmludGYoIm9sdHIl
ZDogVW5rbm93biBpbml0aWxpemF0aW9uIGVycm9yIG9jY291cmVkICgleCku
XG4iLCBzYy0+dW5pdCwgcmMpOw0KICAgICAgICAgICAgICAgIHJldHVybigw
KTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8qIERvd25sb2FkIEFkYXB0
ZXIgTWljcm9jb2RlICovDQogICAgLypwcmludGYoIm9sdHIlZDogRG93bmxv
YWRpbmcgYWRhcHRlciBtaWNyb2NvZGUuLi4iLCBzYy0+dW5pdCk7Ki8NCiAg
ICBzYy0+aHdfc3RhdGUgPSBIV19MT0FESU5HOw0KICAgIHN3aXRjaChzYy0+
Y29uZmlnLT5tYWN0eXBlKSB7DQogICAgICAgIGNhc2UgVFJMTERfTUFDX1RN
UzogICAgICAgICAgIC8qIFRNUyBtaWNyb2NvZGUgKi8NCiAgICAgICAgICAg
IHJjID0gVFJsbGREb3dubG9hZChzYy0+VFJsbGRBZGFwdGVyLCBUUmxsZE1h
Y0NvZGUpOw0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIGNhc2UgVFJM
TERfTUFDX0hBV0tFWUU6ICAgICAgICAvKiBIYXdrZXllIG1pY3JvY29kZSAq
Lw0KICAgICAgICAgICAgcmMgPSBUUmxsZERvd25sb2FkKHNjLT5UUmxsZEFk
YXB0ZXIsIFRSbGxkSGF3a2V5ZU1hYyk7DQogICAgICAgICAgICBicmVhazsN
CiAgICAgICAgY2FzZSBUUkxMRF9NQUNfQlVMTFNFWUU6ICAgICAgLyogQnVs
bHNleWUgbWljcm9jb2RlICovDQogICAgICAgICAgICByYyA9IFRSbGxkRG93
bmxvYWQoc2MtPlRSbGxkQWRhcHRlciwgVFJsbGRCdWxsc2V5ZU1hYyk7DQog
ICAgICAgICAgICBicmVhazsNCiAgICAgICAgZGVmYXVsdDoNCiAgICAgICAg
ICAgIHByaW50Zigib2x0ciVkOiB1bmtub3duIG1hY3R5cGUgJWRcbiIsIHNj
LT51bml0LCBzYy0+Y29uZmlnLT5tYWN0eXBlKTsNCiAgICAgICAgICAgIHJl
dHVybigwKTsNCiAgICB9DQogICAgLyppZiAocmMgPT0gVFJMTERfRE9XTkxP
QURfT0spIA0KICAgICAgICBwcmludGYoImRvbmVcbiIpOyovDQogICAgaWYg
KChyYyA9PSBUUkxMRF9ET1dOTE9BRF9FUlJPUikgfHwgKHJjID09IFRSTExE
X1NUQVRFKSkgew0KICAgICAgICBwcmludGYoIm9sdHIlZDogQWRhcHRlciBt
aWNyb2NvZGUgZG93bmxvYWQgZmFpbGVkISAocmMgPSAleClcbiIsIHNjLT51
bml0LCByYyk7DQogICAgICAgIHNjLT5od19zdGF0ZSA9IEhXX0JBRDsNCiAg
ICAgICAgcmV0dXJuKDApOyAgICAgDQogICAgfQ0KDQogICAgVFJsbGRTZXRT
cGVlZChzYy0+VFJsbGRBZGFwdGVyLCBUUkxMRF9TUEVFRF9BVVRPKTsNCg0K
ICAgIHNjLT5Qcm9taXNjTW9kZSA9IDA7DQogICAgc2MtPkFkYXB0ZXJNb2Rl
ID0gMDsNCg0KICAgIC8qIERvIHRoZSBpZm5ldCBpbml0aWFsaXphdGlvbiAq
Lw0KICAgIGlmcC0+aWZfc29mdGMgICA9IHNjOw0KICAgIGlmcC0+aWZfdW5p
dCAgICA9IHNjLT51bml0Ow0KICAgIGlmcC0+aWZfbmFtZSAgICA9ICJvbHRy
IjsNCiAgICBpZnAtPmlmX291dHB1dCAgPSBpc284ODAyNV9vdXRwdXQ7DQog
ICAgaWZwLT5pZl9pbml0ICAgID0gKGlmX2luaXRfZl90ICopb2x0cl9pbml0
Ow0KICAgIGlmcC0+aWZfc3RhcnQgICA9IG9sdHJfc3RhcnQ7DQogICAgaWZw
LT5pZl9pb2N0bCAgID0gb2x0cl9pb2N0bDsNCiAgICBpZnAtPmlmX2ZsYWdz
ICAgPSBJRkZfQlJPQURDQVNUIHwgSUZGX01VTFRJQ0FTVCB8IElGRl9TSU1Q
TEVYOw0KICAgIGJjb3B5KHNjLT5jb25maWctPm1hY2FkZHJlc3MsIHNjLT5h
cnBjb20uYWNfZW5hZGRyLCBzaXplb2Yoc2MtPmNvbmZpZy0+bWFjYWRkcmVz
cykpOw0KDQogICAgLyogU2V0IHVwIGNvbW1vbiBpZm1lZGlhIG9wdGlvbnMg
Ki8NCiAgICBpZm1lZGlhX2luaXQoJnNjLT5pZm1lZGlhLCAwLCBvbHRyX2lm
bWVkaWFfdXBkLCBvbHRyX2lmbWVkaWFfc3RzKTsNCg0KICAgIGlmbWVkaWFf
YWRkKCZzYy0+aWZtZWRpYSwgSUZNX1RPS0VOIHwgSUZNX0FVVE8sIDAgLCBO
VUxMKTsNCiAgICBpZm1lZGlhX2FkZCgmc2MtPmlmbWVkaWEsIElGTV9UT0tF
TiB8IElGTV9UT0tfVVRQNCwgMCAsIE5VTEwpOw0KICAgIGlmbWVkaWFfYWRk
KCZzYy0+aWZtZWRpYSwgSUZNX1RPS0VOIHwgSUZNX1RPS19VVFAxNiwgMCAs
IE5VTEwpOw0KICAgIA0KICAgIGlmbWVkaWFfc2V0KCZzYy0+aWZtZWRpYSwg
SUZNX1RPS0VOIHwgSUZNX0FVVE8pOw0KDQogICAgaWZfYXR0YWNoKGlmcCk7
DQogICAgaXNvODgwMjVfaWZhdHRhY2goaWZwKTsNCg0KI2lmIE5CUEZJTFRF
UiA+IDANCiAgICBicGZhdHRhY2goaWZwLCBETFRfSUVFRTgwMiwgc2l6ZW9m
KHN0cnVjdCBpc284ODAyNV9oZWFkZXIpKTsNCiNlbmRpZg0KDQogICAgcmV0
dXJuKDEpOw0KfQ0KDQojaWYgTlBDSSA+IDANCnN0YXRpYyB2b2lkDQpvbHRy
X3BjaV9zaHV0ZG93bihob3d0bywgc2MpDQogICAgaW50IGhvd3RvOw0KICAg
IHZvaWQgKnNjOw0Kew0KICAgIHByaW50Zigib2x0cjogb2x0cl9wY2lfc2h1
dGRvd24gY2FsbGVkXG4iKTsNCn0NCiNlbmRpZiAvKiBOUENJICovDQoNCnN0
YXRpYyBpbnQNCm9sdHJfaWZtZWRpYV91cGQoaWZwKQ0KICAgIHN0cnVjdCBp
Zm5ldCAqaWZwOw0Kew0KICAgIHN0cnVjdCBvbHRyX3NvZnRjICpzYyA9IGlm
cC0+aWZfc29mdGM7DQogICAgc3RydWN0IGlmbWVkaWEgKmlmbSAgID0gJnNj
LT5pZm1lZGlhOw0KDQogICAgaWYgKElGTV9UWVBFKGlmbS0+aWZtX21lZGlh
KSAhPSBJRk1fVE9LRU4pDQogICAgICAgIHJldHVybihFSU5WQUwpOw0KICAg
IA0KICAgIHN3aXRjaChJRk1fU1VCVFlQRShpZm0tPmlmbV9tZWRpYSkpIHsN
CiAgICAgICAgY2FzZSBJRk1fQVVUTzoNCiAgICAgICAgICAgIFRSbGxkU2V0
U3BlZWQoc2MtPlRSbGxkQWRhcHRlciwgVFJMTERfU1BFRURfQVVUTyk7DQog
ICAgICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSBJRk1fVE9LX1VUUDQ6
DQogICAgICAgICAgICBUUmxsZFNldFNwZWVkKHNjLT5UUmxsZEFkYXB0ZXIs
IFRSTExEX1NQRUVEXzRNQlBTKTsNCiAgICAgICAgICAgIGJyZWFrOw0KICAg
ICAgICBjYXNlIElGTV9UT0tfVVRQMTY6DQogICAgICAgICAgICBUUmxsZFNl
dFNwZWVkKHNjLT5UUmxsZEFkYXB0ZXIsIFRSTExEX1NQRUVEXzE2TUJQUyk7
DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgZGVmYXVsdDoNCiAgICAg
ICAgICAgIHJldHVybihFSU5WQUwpOw0KICAgIH0NCg0KICAgIGlmIChJRk1f
VFlQRV9PUFRJT05TKGlmbS0+aWZtX21lZGlhKSAmIElGTV9UT0tfRVRSKQ0K
ICAgICAgICBwcmludGYoIm9sdHIlZDogRVRSIG5vdCBpbXBsZW1lbnRlZFxu
Iiwgc2MtPnVuaXQpOw0KICAgIGlmIChJRk1fVFlQRV9PUFRJT05TKGlmbS0+
aWZtX21lZGlhKSAmIElGTV9UT0tfU1JDUlQpDQogICAgICAgIHByaW50Zigi
b2x0ciVkOiBzb3VyY2Utcm91dGluZyBub3QgaW1wbGVtZW50ZWRcbiIsIHNj
LT51bml0KTsNCiAgICBpZiAoSUZNX1RZUEVfT1BUSU9OUyhpZm0tPmlmbV9t
ZWRpYSkgJiBJRk1fVE9LX0FMTFIpDQogICAgICAgIHByaW50Zigib2x0ciVk
OiBhbGwgc291cmNlIHJvdXRlcyBub3QgaW1wbGVtZW50ZWRcbiIsIHNjLT51
bml0KTsNCiAgICBpZiAoSUZNX1RZUEVfT1BUSU9OUyhpZm0tPmlmbV9tZWRp
YSkgJiBJRk1fVE9LX0RUUikgew0KICAgICAgICBzYy0+QWRhcHRlck1vZGUg
fD0gVFJMTERfTU9ERV9GT1JDRV9UWEk7DQogICAgICAgIHNjLT5BZGFwdGVy
TW9kZSAmPSB+VFJMTERfTU9ERV9GT1JDRV9US1A7DQogICAgfQ0KICAgIGlm
IChJRk1fVFlQRV9PUFRJT05TKGlmbS0+aWZtX21lZGlhKSAmIElGTV9UT0tf
Q0xBU1NJQykgew0KICAgICAgICBzYy0+QWRhcHRlck1vZGUgfD0gVFJMTERf
TU9ERV9GT1JDRV9US1A7DQogICAgICAgIHNjLT5BZGFwdGVyTW9kZSAmPSB+
VFJMTERfTU9ERV9GT1JDRV9UWEk7DQogICAgfQ0KICAgIGlmIChJRk1fVFlQ
RV9PUFRJT05TKGlmbS0+aWZtX21lZGlhKSAmIElGTV9UT0tfQVVUTykNCiAg
ICAgICAgc2MtPkFkYXB0ZXJNb2RlICY9IH4oVFJMTERfTU9ERV9GT1JDRV9U
WEkgfCBUUkxMRF9NT0RFX0ZPUkNFX1RLUCk7DQoNCiAgICBpZiAoSUZNX1RZ
UEVfT1BUSU9OUyhpZm0tPmlmbV9tZWRpYSkgJiB+QUxMX09QVElPTlMpDQog
ICAgICAgIHJldHVybihFSU5WQUwpOw0KDQogICAgcmV0dXJuKDApOw0KfQ0K
DQpzdGF0aWMgdm9pZA0Kb2x0cl9pZm1lZGlhX3N0cyhpZnAsIGlmbXIpDQog
ICAgc3RydWN0IGlmbmV0ICppZnA7DQogICAgc3RydWN0IGlmbWVkaWFyZXEg
KmlmbXI7DQp7DQogICAgc3RydWN0IG9sdHJfc29mdGMgKnNjID0gaWZwLT5p
Zl9zb2Z0YzsNCiAgICBzdHJ1Y3QgaWZtZWRpYSAqaWZtID0gJnNjLT5pZm1l
ZGlhOw0KDQogICAgaWZtci0+aWZtX2FjdGl2ZSA9IElGTV9UWVBFKGlmbS0+
aWZtX21lZGlhKXxJRk1fU1VCVFlQRShpZm0tPmlmbV9tZWRpYSl8SUZNX1RZ
UEVfT1BUSU9OUyhpZm0tPmlmbV9tZWRpYSk7DQoNCiAgICByZXR1cm47DQp9
DQoNCnZvaWQNCm9sdHJfdGltZW91dCh0b2tlbikNCiAgICB2b2lkICp0b2tl
bjsNCnsNCiAgICBzdHJ1Y3Qgb2x0cl9zb2Z0YyAqc2MgPSAmb2x0cl9zb2Z0
Y1soaW50KXRva2VuXTsNCiAgICBpbnQgdW5pdCA9IChpbnQpdG9rZW4sIHM7
DQoNCiAgICBzID0gc3BsaW1wKCk7DQoNCiAgICBwcmludGYoIm9sdHIlZDog
YWRhcHRlciB0aW1lZCBvdXQgKCV4KVxuIiwgdW5pdCwgc2MtPmh3X3N0YXRl
KTsNCg0KICAgIHNwbHgocyk7DQp9DQoNCg0Kdm9pZA0KYWRhcHRlcl9wb2xs
KHRva2VuKQ0KICAgIHZvaWQgKnRva2VuOw0Kew0KICAgIGludCB1bml0ID0g
KGludCl0b2tlbiwgcG9sbF90aW1lb3V0ID0gMCwgczsNCiAgICBzdHJ1Y3Qg
b2x0cl9zb2Z0YyAqc2MgPSAmb2x0cl9zb2Z0Y1t1bml0XTsNCiNpZiAwDQog
ICAgc3RhdGljIGludCByeF9idWZmZXJzID0gMCwgdHhfYnVmZmVycyA9IDAs
IHJjOyANCiNlbmRpZg0KICAgIA0KICAgIHMgPSBzcGxpbXAoKTsNCg0KICAg
IC8qIENoZWNrIHRvIG1ha2Ugc3VyZSB3ZSBhcmUgbm90IHBvbGxpbmcgYSBk
ZWFkIGNhcmQgKi8NCiAgICBpZiAoKHNjLT5od19zdGF0ZSA9PSBIV19CQUQp
IHx8IChzYy0+aHdfc3RhdGUgPT0gSFdfVU5LTk9XTikpIHsNCiAgICAgICAg
c2MtPnBvbGxfYWRhcHRlciA9IC0xOw0KICAgICAgICBzcGx4KHMpOw0KICAg
ICAgICByZXR1cm47DQogICAgfQ0KDQogICAgLypwcmludGYoIm9sdHIlZDog
YWRhcHRlciBwb2xsLlxuIiwgdW5pdCk7Ki8NCiAgICANCiAgICAvKiBJZiB0
aGUgYWRhcHRlciBpcyB0byBiZSBwb2xsZWQgYWdhaW4sIHRoZW4gc2V0IHVw
DQogICAgICogbmV4dCB0aW1lb3V0IHBvbGwgDQogICAgICovDQogICAgaWYg
KHNjLT5wb2xsX2FkYXB0ZXIpIHsNCiAgICAgICAgcG9sbF90aW1lb3V0ID0g
VFJsbGRQb2xsKHNjLT5UUmxsZEFkYXB0ZXIpOw0KICAgICAgICBzYy0+cG9s
bF9jaCA9IHRpbWVvdXQoYWRhcHRlcl9wb2xsLCAodm9pZCAqKXVuaXQsIChw
b2xsX3RpbWVvdXQgKiBoeikvMTAwMCk7DQogICAgfQ0KI2lmIDANCiAgICBy
YyA9IFRSbGxkUmVjZWl2ZUZyZWUoc2MtPlRSbGxkQWRhcHRlcik7DQogICAg
aWYgKHJ4X2J1ZmZlcnMgIT0gcmMpIHsNCiAgICAgICAgcHJpbnRmKCJvbHRy
JWQ6ICVkIHJlY2VpdmUgYnVmZmVycyBhdmFpbGFibGVcbiIsIHNjLT51bml0
LCByYyk7DQogICAgICAgIHJ4X2J1ZmZlcnMgPSByYzsNCiAgICB9IA0KICAg
IHJjID0gVFJsbGRUcmFuc21pdEZyZWUoc2MtPlRSbGxkQWRhcHRlcik7DQog
ICAgaWYgKHR4X2J1ZmZlcnMgIT0gcmMpIHsNCiAgICAgICAgcHJpbnRmKCJv
bHRyJWQ6ICVkIHRyYW5zbWl0IGJ1ZmZlcnMgYXZhaWxhYmxlXG4iLCBzYy0+
dW5pdCwgcmMpOw0KICAgICAgICB0eF9idWZmZXJzID0gcmM7DQogICAgfSAN
CiNlbmRpZg0KDQogICAgc3BseChzKTsgICAgICAgICAgICANCn0NCg0Kc3Rh
dGljIHZvaWQgDQpvbHRyX2luaXQoc2MpDQogICAgc3RydWN0IG9sdHJfc29m
dGMgKnNjOw0Kew0KICAgIHN0cnVjdCBpZm5ldCAqaWZwID0gJnNjLT5hcnBj
b20uYWNfaWY7DQogICAgaW50IGksIHJjOw0KDQogICAgLypwcmludGYoIm9s
dHIlZDogb2x0cl9pbml0XG4iLCBzYy0+dW5pdCk7Ki8NCiAgICANCiAgICAv
KiANCiAgICAgKiBBZGFwdGVyIHNob3VsZCBiZSBmcmVzaGx5IGRvd25sb2Fk
ZWQgb3IgcHJldmlvdXNseSBjbG9zZWQgYmVmb3JlDQogICAgICogYnJpbmdp
bmcgaXQgYmFjayBvbiBsaW5lLg0KICAgICAqLw0KICAgIGlmICgoc2MtPmh3
X3N0YXRlICE9IEhXX0NMT1NFRCkgJiYgKHNjLT5od19zdGF0ZSAhPSBIV19M
T0FESU5HKSAmJiAoc2MtPmh3X3N0YXRlICE9IEhXX0NMT1NJTkcyKSkgew0K
ICAgICAgICBwcmludGYoIm9sdHIlZDogYWRhcHRlciBub3QgcmVhZHkgdG8g
YmUgb3BlbmVkICglZCkuXG4iLCBzYy0+dW5pdCwgc2MtPmh3X3N0YXRlKTsN
CiAgICAgICAgcmV0dXJuOw0KICAgIH0NCg0KICAgIC8qIEFsbG9jYXRlIGFu
ZCBzZXQgdXAgdGhlIERNQSBjaGFubmVsICovDQogICAgaWYgKHNjLT5jb25m
aWctPmRtYWxldmVsICE9IFRSTExEX0RNQV9QSU8pIHsNCiAgICAgICAgcmMg
PSBpc2FfZG1hX2FjcXVpcmUoc2MtPmNvbmZpZy0+ZG1hbGV2ZWwpOw0KICAg
ICAgICBpc2FfZG1hY2FzY2FkZShzYy0+Y29uZmlnLT5kbWFsZXZlbCk7DQog
ICAgfQ0KDQogICAgLyogT3BlbiB0aGUgYWRhcHRlciAqLw0KICAgIHNjLT5o
d19zdGF0ZSA9IEhXX09QRU5JTkc7DQogICAgcmMgPSBUUmxsZE9wZW4oc2Mt
PlRSbGxkQWRhcHRlciwgc2MtPmFycGNvbS5hY19lbmFkZHIsIHNjLT5Hcm91
cEFkZHJlc3MsIA0KICAgICAgICAgICAgICAgICAgIHNjLT5GdW5jdGlvbmFs
QWRkcmVzcywgaWZwLT5pZl9tdHUgKyA1Miwgc2MtPkFkYXB0ZXJNb2RlKTsN
CiAgICBpZiAocmMgIT0gVFJMTERfT1BFTl9PSykgew0KICAgICAgICBwcmlu
dGYoIm9sdHIlZDogQWRhcHRlciBmYWlsZWQgdG8gb3BlbiAocmMgPSAleClc
biIsIHNjLT51bml0LCByYyk7DQogICAgICAgIHNjLT5od19zdGF0ZSA9IEhX
X0ZBSUxFRDsNCiAgICB9IGVsc2Ugew0KICAgICAgICAvKnByaW50Zigib2x0
ciVkOiBhZGFwdGVyIG9wZW5pbmcuLi5cbiIsIHNjLT51bml0KTsqLw0KICAg
ICAgICAvKmlmcC0+aWZfZmxhZ3MgfD0gKElGRl9VUCB8IElGRl9SVU5OSU5H
KTsqLw0KICAgICAgICBpZnAtPmlmX2ZsYWdzICY9IH5JRkZfT0FDVElWRTsN
CiAgICB9DQogICAgc2MtPm9sdHJfY2ggPSB0aW1lb3V0KG9sdHJfdGltZW91
dCwgKHZvaWQgKilzYy0+dW5pdCwgMzAqaHopOw0KICAgIHRzbGVlcCgodm9p
ZCAqKXNjLT51bml0LCAxLCAib2x0cm9wIiwgMzAqaHopOw0KDQogICAgLyog
R2l2ZSB0aGUgdHJhbnNtaXQgYnVmZmVycyB0byB0aGUgYWRhcHRlciAqLw0K
ICAgIGZvciAoaSA9IDA7IGkgPCBSWF9MSVNUX1NJWkU7IGkrKykgeyANCiAg
ICAgICAgcmMgPSBUUmxsZFJlY2VpdmVGcmFnbWVudChzYy0+VFJsbGRBZGFw
dGVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lk
ICopc2MtPnJ4X2J1ZmZlcltzYy0+cnhfbmV4dCAmIFJYX0xJU1RfTUFTS10u
YnVmLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt2dG9w
KHNjLT5yeF9idWZmZXJbc2MtPnJ4X25leHQgJiBSWF9MSVNUX01BU0tdLmJ1
ZiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlhfQlVG
RkVSX0xFTiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
dm9pZCAqKXNjLT5yeF9idWZmZXJbc2MtPnJ4X25leHQgJiBSWF9MSVNUX01B
U0tdLmluZGV4KTsNCiAgICAgICAgaWYgKHJjICE9IFRSTExEX1JFQ0VJVkVf
T0spIHsNCiAgICAgICAgICAgIHByaW50Zigib2x0ciVkOiBBZGFwdGVyIHJl
ZnVzZWQgZnJhZ21lbnQgJWQgKHJjID0gJWQpLlxuIiwgc2MtPnVuaXQsIGks
IHJjKTsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9ICBlbHNlIHsN
CiAgICAgICAgICAgIHNjLT5yeF9hdmFpbC0tOw0KICAgICAgICB9DQogICAg
ICAgIHNjLT5yeF9uZXh0Kys7DQogICAgfQ0KICAgIA0KICAgIHJldHVybjsN
Cn0NCiAgICANCnN0YXRpYyB2b2lkDQpvbHRyX2ludHIodW5pdCkNCiAgICBp
bnQgdW5pdDsNCnsNCiAgICBzdHJ1Y3Qgb2x0cl9zb2Z0YyAqc2MgPSAmb2x0
cl9zb2Z0Y1t1bml0XTsNCiAgICBpbnQgcmM7DQoNCiAgICAvKnByaW50Zigi
b2x0ciVkOiBvbHRyX2ludHJcbiIsIHVuaXQpOyovIC8qIFRvbyBub2lzeSAq
Lw0KICAgIHJjPSBUUmxsZEludGVycnVwdFNlcnZpY2Uoc2MtPlRSbGxkQWRh
cHRlcik7DQogICAgaWYgKHJjID09IFRSTExEX05PX0lOVEVSUlVQVCkgDQog
ICAgICAgIHByaW50Zigib2x0ciVkOiBpbnRlcnJ1cHQgbm90IHNlcnZpY2Vk
LlxuIiwgdW5pdCk7DQp9DQoNCiNpZiBOUENJID4gMA0Kc3RhdGljIHZvaWQN
Cm9sdHJfcGNpX2ludHIocHNjKQ0KICAgIHZvaWQgKnBzYzsNCnsNCiAgICBz
dHJ1Y3Qgb2x0cl9zb2Z0YyAqc2MgPSAoc3RydWN0IG9sdHJfc29mdGMgKilw
c2M7DQogICAgaW50IHJjID0gMDsNCg0KICAgIC8qcHJpbnRmKCJvbHRyJWQ6
IG9sdHJfcGNpX2ludHJcbiIsIHNjLT51bml0KTsqLyAvKiBUb28gbm9pc3kg
Ki8NCiAgICByYyA9IFRSbGxkSW50ZXJydXB0U2VydmljZShzYy0+VFJsbGRB
ZGFwdGVyKTsNCiAgICBpZiAocmMgPT0gVFJMTERfTk9fSU5URVJSVVBUKQ0K
ICAgICAgICBwcmludGYoIm9sdHIlZDogcGNpIGludGVycnVwdCBub3Qgc2Vy
dmljZWQuXG4iLCBzYy0+dW5pdCk7DQp9DQojZW5kaWYgLyogTlBDSSAqLw0K
DQpzdGF0aWMgdm9pZCANCm9sdHJfc3RhcnQoaWZwKQ0KICAgIHN0cnVjdCBp
Zm5ldCAqaWZwOw0Kew0KICAgIHN0cnVjdCBvbHRyX3NvZnRjICpzYyA9ICZv
bHRyX3NvZnRjW2lmcC0+aWZfdW5pdF07DQogICAgc3RydWN0IG1idWYgKm0w
LCAqbTsNCiAgICBzdHJ1Y3QgaXNvODgwMjVfaGVhZGVyICp0aDsNCiAgICBU
UmxsZFRyYW5zbWl0X3QgZnJhbWU7DQogICAgaW50ICBsZW4sIGksIHJjOw0K
DQogICAgLypwcmludGYoIm9sdHIlZDogb2x0cl9zdGFydFxuIiwgc2MtPnVu
aXQpOyovDQoNCm91dGxvb3A6DQoNCiAgICAvKiBDaGVjayB0byBzZWUgaWYg
d2UgaGF2ZSBlbm91Z2ggcm9vbSB0byB0cmFuc21pdCAqLw0KICAgIGlmIChz
Yy0+dHhfYXZhaWwgPD0gMCkgew0KICAgICAgICAvKiBObyBmcmVlIGJ1ZmZl
cnMsIGhvbGQgb2ZmIHRoZSB1cHBlciBsYXllcnMgKi8NCiAgICAgICAgLypw
cmludGYoIm9sdHIlZDogdHJhbnNtaXQgcXVldWUgZnVsbC5cbiIsIHNjLT51
bml0KTsqLw0KICAgICAgICBpZnAtPmlmX2ZsYWdzIHw9IElGRl9PQUNUSVZF
Ow0KICAgICAgICByZXR1cm47DQogICAgfQ0KICAgIElGX0RFUVVFVUUoJmlm
cC0+aWZfc25kLCBtKTsNCiAgICBpZiAobSA9PSAwKSB7DQogICAgICAgIC8q
cHJpbnRmKCJvbHRyJWQ6IG9sdHJfc3RhcnQgTlVMTCBwYWNrZXQgZGVxdWV1
ZWQuXG4iLCBzYy0+dW5pdCk7Ki8NCiAgICAgICAgaWZwLT5pZl9mbGFncyAm
PSB+SUZGX09BQ1RJVkU7DQogICAgICAgIHJldHVybjsNCiAgICB9DQoNCiAg
ICB0aCA9IG10b2QobSwgc3RydWN0IGlzbzg4MDI1X2hlYWRlciAqKTsNCiAg
ICB0aC0+YWMgPSAweDEwOw0KICAgIHRoLT5mYyA9IDB4NDA7DQogICAgDQog
ICAgLyogS2VlcCBhIHBvaW50ZXIgdG8gdGhlIGhlYWQgb2YgdGhlIHBhY2tl
dCAqLw0KICAgIG0wID0gbTsNCg0KICAgIGkgPSAoc2MtPnR4X25leHQgJiBU
WF9MSVNUX01BU0spOyAvKiBKdXN0IHRvIHNob3J0ZW4gdGhpbmcgdXAgKi8N
Cg0KICAgIGZvciAobGVuID0gMDsgbSAhPSAwOyBtID0gbS0+bV9uZXh0KSB7
DQogICAgICAgIGZyYW1lLlRyYW5zbWl0RnJhZ21lbnRbMF0uVmlydHVhbEFk
ZHJlc3MgPSBzYy0+dHhfYnVmZmVyW2ldLmJ1ZjsNCiAgICAgICAgZnJhbWUu
VHJhbnNtaXRGcmFnbWVudFswXS5QaHlzaWNhbEFkZHJlc3MgPSBrdnRvcChz
Yy0+dHhfYnVmZmVyW2ldLmJ1Zik7DQogICAgICAgIGJjb3B5KG10b2QobSwg
Y2FkZHJfdCksIHNjLT50eF9idWZmZXJbaV0uYnVmICsgbGVuLCBtLT5tX2xl
bik7DQogICAgICAgIGxlbiArPSBtLT5tX2xlbjsNCiAgICB9DQogICAgZnJh
bWUuRnJhZ21lbnRDb3VudCA9IDE7DQogICAgZnJhbWUuVHJhbnNtaXRGcmFn
bWVudFswXS5jb3VudCA9IGxlbjsNCg0KICAgIHJjID0gVFJsbGRUcmFuc21p
dEZyYW1lKHNjLT5UUmxsZEFkYXB0ZXIsICZmcmFtZSwgKHZvaWQgKilzYy0+
dHhfYnVmZmVyW2ldLmluZGV4KTsNCiAgICBpZiAocmMgIT0gVFJMTERfVFJB
TlNNSVRfT0spIHsNCiAgICAgICAgcHJpbnRmKCJvbHRyJWQ6IFRSbGxkVHJh
bnNtaXRGcmFtZSByZXR1cm5lZCAoJXgpXG4iLCBzYy0+dW5pdCwgcmMpOw0K
ICAgICAgICBpZnAtPmlmX29lcnJvcnMrKzsNCiAgICAgICAgZ290byBiYWQ7
DQogICAgfQ0KDQogICAgc2MtPnR4X25leHQrKzsNCiAgICBzYy0+dHhfYXZh
aWwtLTsNCg0KI2lmIE5CUEZJTFRFUiA+IDANCiAgICBpZiAoaWZwLT5pZl9i
cGYpDQogICAgICAgIGJwZl9tdGFwKGlmcCwgbTApOw0KI2VuZGlmDQoNCmJh
ZDoNCiAgICBtX2ZyZWVtKG0wKTsNCiAgICBnb3RvIG91dGxvb3A7DQogICAg
cmV0dXJuOw0KfQ0KDQpzdGF0aWMgdm9pZA0Kb2x0cl9zdG9wKHNjKQ0KICAg
IHN0cnVjdCBvbHRyX3NvZnRjICpzYzsNCnsNCiAgICBzdHJ1Y3QgaWZuZXQg
KmlmcCA9ICZzYy0+YXJwY29tLmFjX2lmOw0KICAgIHByaW50Zigib2x0ciVk
OiBvdGxyX3N0b3BcbiIsIHNjLT51bml0KTsNCiAgICBpZnAtPmlmX2ZsYWdz
ICY9IH4oSUZGX1VQIHwgSUZGX1JVTk5JTkcgfCBJRkZfT0FDVElWRSk7DQog
ICAgc2MtPmh3X3N0YXRlID0gSFdfQ0xPU0lORzsNCiAgICBUUmxsZENsb3Nl
KHNjLT5UUmxsZEFkYXB0ZXIsIDApOw0KICAgIHNjLT5vbHRyX2NoID0gdGlt
ZW91dChvbHRyX3RpbWVvdXQsICh2b2lkICopc2MtPnVuaXQsIDMwKmh6KTsN
CiAgICB0c2xlZXAoKHZvaWQgKilzYy0+dW5pdCwgMSwgIm9sdHJjbCIsIDMw
Kmh6KTsNCn0NCg0Kc3RhdGljIGludA0Kb2x0cl9pb2N0bChpZnAsIGNtZCwg
ZGF0YSkNCiAgICBzdHJ1Y3QgaWZuZXQgKmlmcDsNCiAgICB1X2xvbmcgY21k
Ow0KICAgIGNhZGRyX3QgZGF0YTsNCnsNCiAgICBzdHJ1Y3Qgb2x0cl9zb2Z0
YyAqc2MgPSAmb2x0cl9zb2Z0Y1tpZnAtPmlmX3VuaXRdOw0KICAgIHN0cnVj
dCBpZnJlcSAqaWZyID0gKHN0cnVjdCBpZnJlcSAqKWRhdGE7DQogICAgaW50
IGVycm9yID0gMCwgczsNCg0KICAgIC8qcHJpbnRmKCJvbHRyJWQ6IG9sdHJf
aW9jdGxcbiIsIGlmcC0+aWZfdW5pdCk7Ki8NCg0KICAgIHMgPSBzcGxpbXAo
KTsNCg0KICAgIHN3aXRjaCAoY21kKSB7DQogICANCiAgICAgICAgY2FzZSBT
SU9DU0lGQUREUjoNCiAgICAgICAgY2FzZSBTSU9DR0lGQUREUjoNCiAgICAg
ICAgY2FzZSBTSU9DU0lGTVRVOg0KICAgICAgICAgICAgZXJyb3IgPSBpc284
ODAyNV9pb2N0bChpZnAsIGNtZCwgZGF0YSk7DQogICAgICAgICAgICBicmVh
azsNCg0KICAgICAgICBjYXNlIFNJT0NTSUZGTEFHUzoNCiAgICAgICAgICAg
IC8qDQogICAgICAgICAgICAgKiBJZiB0aGUgaW50ZXJmYWNlIGlzIG1hcmtl
ZCB1cCBhbmQgc3RvcHBlZCwgdGhlbiBzdGFydCBpdC4NCiAgICAgICAgICAg
ICAqIElmIGl0IGlzIG1hcmtlZCBkb3duIGFuZCBydW5uaW5nLCB0aGVuIHN0
b3AgaXQuDQogICAgICAgICAgICAgKi8NCiAgICAgICAgICAgIGlmIChpZnAt
PmlmX2ZsYWdzICYgSUZGX1VQKSB7DQogICAgICAgICAgICAgICAgICAgIGlm
ICgoaWZwLT5pZl9mbGFncyAmIElGRl9SVU5OSU5HKSA9PSAwKQ0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9sdHJfaW5pdChzYyk7DQogICAgICAg
ICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBpZiAoaWZwLT5p
Zl9mbGFncyAmIElGRl9SVU5OSU5HKSB7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb2x0cl9zdG9wKHNjKTsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZnAtPmlmX2ZsYWdzICY9IH5JRkZfUlVOTklORzsNCiAgICAg
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAg
ICBpZiAoKGlmcC0+aWZfZmxhZ3MgJiBJRkZfUFJPTUlTQykgIT0gc2MtPlBy
b21pc2NNb2RlKSB7DQogICAgICAgICAgICAgICAgaWYgKGlmcC0+aWZfZmxh
Z3MgJiBJRkZfUFJPTUlTQykNCiAgICAgICAgICAgICAgICAgICAgVFJsbGRT
ZXRQcm9taXNjdW91c01vZGUoc2MtPlRSbGxkQWRhcHRlciwgT0xUUl9QUk9N
SVNDX01PREUpOw0KICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAg
ICAgICAgICAgVFJsbGRTZXRQcm9taXNjdW91c01vZGUoc2MtPlRSbGxkQWRh
cHRlciwgMCk7DQogICAgICAgICAgICAgICAgc2MtPlByb21pc2NNb2RlID0g
KGlmcC0+aWZfZmxhZ3MgJiBJRkZfUFJPTUlTQyk7DQogICAgICAgICAgICB9
DQogICAgICAgICAgICANCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICBj
YXNlIFNJT0NHSUZNRURJQToNCiAgICAgICAgY2FzZSBTSU9DU0lGTUVESUE6
DQogICAgICAgICAgICBlcnJvciA9IGlmbWVkaWFfaW9jdGwoaWZwLCBpZnIs
ICZzYy0+aWZtZWRpYSwgY21kKTsNCiAgICAgICAgICAgIGJyZWFrOw0KICAg
ICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgZXJyb3IgPSBFSU5WQUw7DQog
ICAgfQ0KICAgIHNwbHgocyk7DQogICAgcmV0dXJuKGVycm9yKTsNCn0NCg0K
LyoNCiAqIFBNVyBDYWxsYmFjayBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICovDQoN
CnN0YXRpYyB2b2lkDQpEcml2ZXJTdXNwZW5kKE1pY3JvU2Vjb25kcykNCiAg
ICB1bnNpZ25lZCBzaG9ydCBNaWNyb1NlY29uZHM7DQp7DQogICAgREVMQVko
TWljcm9TZWNvbmRzKTsNCn0NCg0KDQpzdGF0aWMgdm9pZA0KRHJpdmVyU3Rh
dHVzKERyaXZlckhhbmRsZSwgU3RhdHVzKQ0KICAgIHZvaWQgKkRyaXZlckhh
bmRsZTsNCiAgICBUUmxsZFN0YXR1c190ICpTdGF0dXM7DQp7DQogICAgc3Ry
dWN0IG9sdHJfc29mdGMgKnNjID0gJm9sdHJfc29mdGNbKGludClEcml2ZXJI
YW5kbGVdOw0KICAgIHN0cnVjdCBpZm5ldCAqaWZwID0gJnNjLT5hcnBjb20u
YWNfaWY7DQoNCiAgICBzd2l0Y2ggKFN0YXR1cy0+VHlwZSkgew0KICAgICAg
ICBjYXNlIFRSTExEX1NUU19PTl9XSVJFOg0KICAgICAgICAgICAgaWYgKHNj
LT5od19zdGF0ZSA9PSBIV19PUEVOSU5HKSB7DQogICAgICAgICAgICAgICAg
c2MtPmh3X3N0YXRlID0gSFdfT1BFTjsNCiAgICAgICAgICAgICAgICBpZnAt
PmlmX2ZsYWdzIHw9IChJRkZfVVAgfCBJRkZfUlVOTklORyk7DQogICAgICAg
ICAgICAgICAgLypwcmludGYoIm9sdHIlZDogQWRhcHRlciBpbnNlcnRlZC5c
biIsIHNjLT51bml0KTsqLw0KICAgICAgICAgICAgICAgIHVudGltZW91dChv
bHRyX3RpbWVvdXQsICh2b2lkICopc2MtPnVuaXQsIHNjLT5vbHRyX2NoKTsN
CiAgICAgICAgICAgICAgICB3YWtldXBfb25lKCh2b2lkICopc2MtPnVuaXQp
Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAg
IGNhc2UgVFJMTERfU1RTX1NFTEZURVNUX1NUQVRVUzoNCiAgICAgICAgICAg
IGlmIChTdGF0dXMtPlNwZWNpZmljYXRpb24uU2VsZnRlc3RTdGF0dXMgPT0g
VFJMTERfU1RfT0spIHsNCiAgICAgICAgICAgICAgICBwcmludGYoIm9sdHIl
ZDogYWRhcHRlciBzdGF0dXMgZ29vZC4gKGNsb3NlIGNvbXBsZXRlZC9zZWxm
LXRlc3QpXG4iLCBzYy0+dW5pdCk7DQogICAgICAgICAgICAgICAgaWYgKChz
Yy0+aHdfc3RhdGUgPT0gSFdfTE9BRElORykgfHwgKHNjLT5od19zdGF0ZSA9
PSBIV19DTE9TSU5HKSB8fCAoc2MtPmh3X3N0YXRlID09IEhXX0NMT1NJTkcy
KSkgew0KICAgICAgICAgICAgICAgICAgICBzYy0+aHdfc3RhdGUgPSBIV19D
TE9TRUQ7DQogICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAg
ICAgcHJpbnRmKCJvbHRyJWQ6IFNlbGYgdGVzdCBmYWlsZWQ6ICIsIHNjLT51
bml0KTsNCiAgICAgICAgICAgICAgICBzd2l0Y2ggKFN0YXR1cy0+U3BlY2lm
aWNhdGlvbi5TZWxmdGVzdFN0YXR1cykgew0KICAgICAgICAgICAgICAgICAg
ICBjYXNlIFRSTExEX1NUX0VSUk9SICsgMDogcHJpbnRmKCJJbml0aWFsIFRl
c3QgRXJyb3JcbiIpOyBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBUUkxMRF9TVF9FUlJPUiArIDE6IHByaW50ZigiQWRhcHRlciBTb2Z0d2Fy
ZSBDaGVja3N1bSBFcnJvclxuIik7IGJyZWFrOw0KICAgICAgICAgICAgICAg
ICAgICBjYXNlIFRSTExEX1NUX0VSUk9SICsgMjogcHJpbnRmKCJBZGFwdGVy
IFJBTSBFcnJvclxuIik7IGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICBj
YXNlIFRSTExEX1NUX0VSUk9SICsgNDogcHJpbnRmKCJJbnN0cnVjdGlvbiBU
ZXN0IEVycm9yXG4iKTsgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgIGNh
c2UgVFJMTERfU1RfRVJST1IgKyA1OiBwcmludGYoIlByb3RvY29sIEhhbmRs
ZXIvUkkgSHcgRXJyb3JcbiIpOyBicmVhazsNCiAgICAgICAgICAgICAgICAg
ICAgY2FzZSBUUkxMRF9TVF9FUlJPUiArIDY6IHByaW50ZigiU3lzdGVtIElu
dGVyZmFjZSBSZWdpc3RlciBFcnJvclxuIik7IGJyZWFrOw0KICAgICAgICAg
ICAgICAgICAgICBjYXNlIFRSTExEX1NUX1RJTUVPVVQ6ICAgcHJpbnRmKCJT
ZWxmdGVzdCBkaWQgbm90IGNvbXBsZXRlXG4iKTsgYnJlYWs7DQogICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6IHByaW50ZigiVW5rbm93biBlcnJvciAo
JXgpXG4iLCBTdGF0dXMtPlNwZWNpZmljYXRpb24uU2VsZnRlc3RTdGF0dXMp
Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIGJyZWFrOw0KICAgICAgICBjYXNlIFRSTExEX1NUU19JTklUX1NUQVRV
UzoNCiAgICAgICAgICAgIHByaW50Zigib2x0ciVkOiBBZGFwdGVyIGluaXRp
YWxpemF0aW9uIGZhaWxlZDogIiwgc2MtPnVuaXQpOw0KICAgICAgICAgICAg
c3dpdGNoKFN0YXR1cy0+U3BlY2lmaWNhdGlvbi5Jbml0U3RhdHVzKSB7DQog
ICAgICAgICAgICAgICAgY2FzZSBUUkxMRF9JTklUX0VSUk9SICsgMHgwMTog
cHJpbnRmKCJJbnZhbGlkIGluaXQgYmxvY2sgKExMRCBlcnJvcilcbiIpOyBi
cmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIFRSTExEX0lOSVRfRVJST1Ig
KyAweDAyOiBwcmludGYoIkludmFsaWQgb3B0aW9ucyAoTExEIGVycm9yKVxu
Iik7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgVFJMTERfSU5JVF9F
UlJPUiArIDB4MDM6IHByaW50ZigiSW52YWxpZCByY3YgYnVyc3QgKExMRCBl
cnJvcilcbiIpOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIFRSTExE
X0lOSVRfRVJST1IgKyAweDA0OiBwcmludGYoIkludmFsaWQgeG10IGJ1cnN0
IChMTEQgZXJyb3IpXG4iKTsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2Fz
ZSBUUkxMRF9JTklUX0VSUk9SICsgMHgwNTogcHJpbnRmKCJJbnZhbGlkIERN
QSB0aHJlc2hvbGQgKExMRCBlcnJvcilcbiIpOyBicmVhazsNCiAgICAgICAg
ICAgICAgICBjYXNlIFRSTExEX0lOSVRfRVJST1IgKyAweDA2OiBwcmludGYo
IkludmFsaWQgc2NiIGFkZHJcbiIpOyBicmVhazsNCiAgICAgICAgICAgICAg
ICBjYXNlIFRSTExEX0lOSVRfRVJST1IgKyAweDA3OiBwcmludGYoIkludmFs
aWQgc3NiIGFkZHJcbiIpOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNl
IFRSTExEX0lOSVRfRVJST1IgKyAweDA4OiBwcmludGYoIkRJTyBwYXJpdHkg
ZXJyb3IgKEhXIGVycm9yKVxuIik7IGJyZWFrOw0KICAgICAgICAgICAgICAg
IGNhc2UgVFJMTERfSU5JVF9FUlJPUiArIDB4MDk6IHByaW50ZigiRE1BIHRp
bWVvdXQgKE1heSBiZSBpbnRlcnJ1cHQgZmFpbGluZyBpZiBQSU8gbW9kZSBv
ciBQQ0kyKVxuIik7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgVFJM
TERfSU5JVF9FUlJPUiArIDB4MEE6IHByaW50ZigiRE1BIHBhcml0eSBlcnJv
ciAoSFcgZXJyb3IpXG4iKTsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2Fz
ZSBUUkxMRF9JTklUX0VSUk9SICsgMHgwQjogcHJpbnRmKCJETUEgYnVzIGVy
cm9yIChIVyBlcnJvcilcbiIpOyBicmVhazsNCiAgICAgICAgICAgICAgICBj
YXNlIFRSTExEX0lOSVRfRVJST1IgKyAweDBDOiBwcmludGYoIkRNQSBkYXRh
IGVycm9yXG4iKTsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSBUUkxM
RF9JTklUX0VSUk9SICsgMHgwRDogcHJpbnRmKCJBZGFwdGVyIENoZWNrXG4i
KTsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSBUUkxMRF9JTklUX1RJ
TUVPVVQ6ICAgICAgcHJpbnRmKCJBZGFwdGVyIGluaXRpYWxpemF0aW9uIGRp
ZCBub3QgY29tcGxldGVcbiIpOyBicmVhazsNCiAgICAgICAgICAgICAgICBj
YXNlIFRSTExEX0lOSVRfRE1BX0VSUk9SOiAgICBwcmludGYoIkFkYXB0ZXIg
Y2Fubm90IGFjY2VzcyBzeXN0ZW0gbWVtb3J5XG4iKTsgYnJlYWs7DQogICAg
ICAgICAgICAgICAgY2FzZSBUUkxMRF9JTklUX0lOVFJfRVJST1I6ICAgcHJp
bnRmKCJBZGFwdGVyIGNhbm5vdCBpbnRlcnJ1cHRcbiIpOyBicmVhazsNCiAg
ICAgICAgICAgICAgICBjYXNlIFRSTExEX09QRU5fVElNRU9VVDogICAgICBw
cmludGYoIkFkYXB0ZXIgZGlkIG5vdCBjb21wbGV0ZSBvcGVuIHdpdGhpbiAz
MCBzZWNvbmRzXG4iKTsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSBU
UkxMRF9PUEVOX0VSUk9SICsgMHgwMTogcHJpbnRmKCJJbnZhbGlkIG9wZW4g
b3B0aW9ucyAoTExEIGVycm9yKVxuIik7IGJyZWFrOw0KICAgICAgICAgICAg
ICAgIGNhc2UgVFJMTERfT1BFTl9FUlJPUiArIDB4MDQ6IHByaW50ZigiVHhC
dWZmZXIgY291bnQgZXJyb3IgKExMRCBlcnJvcilcbiIpOyBicmVhazsNCiAg
ICAgICAgICAgICAgICBjYXNlIFRSTExEX09QRU5fRVJST1IgKyAweDEwOiBw
cmludGYoIkJ1ZmZlciBzaXplIGVycm9yIChMTEQgZXJyb3IpXG4iKTsgYnJl
YWs7DQogICAgICAgICAgICAgICAgY2FzZSBUUkxMRF9PUEVOX0VSUk9SICsg
MHgyMDogcHJpbnRmKCJMaXN0IHNpemUgZXJyb3IgKExMRCBlcnJvcilcbiIp
OyBicmVhazsNCiAgICAgICAgICAgICAgICBkZWZhdWx0OiANCiAgICAgICAg
ICAgICAgICAgICAgaWYgKFN0YXR1cy0+U3BlY2lmaWNhdGlvbi5Jbml0U3Rh
dHVzICYgMHg3MDApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRj
aCAoU3RhdHVzLT5TcGVjaWZpY2F0aW9uLkluaXRTdGF0dXMgJiAweDcwRikg
ew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVFJMTERfT1BF
Tl9SRVBFQVQgKyAweDAxOiBwcmludGYoIkxvYmUgbWVkaWEgdGVzdCAtICIp
OyBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFRS
TExEX09QRU5fUkVQRUFUICsgMHgwMjogcHJpbnRmKCJQaHlzaWNhbCBpbnNl
cnRpb24gLSAiKTsgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBUUkxMRF9PUEVOX1JFUEVBVCArIDB4MDM6IHByaW50ZigiQWRk
cmVzcyB2ZXJpZmljYXRpb24gLSAiKTsgYnJlYWs7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBUUkxMRF9PUEVOX1JFUEVBVCArIDB4MDQ6
IHByaW50ZigiUGFydGljaXBhdGlvbiBpbiByaW5nIHBvbGwgLSAiKTsgYnJl
YWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBUUkxMRF9P
UEVOX1JFUEVBVCArIDB4MDU6IHByaW50ZigiUmVxdWVzdCBpbml0aWFsaXph
dGlvbiAtICIpOyBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIFRSTExEX09QRU5fUkVQRUFUICsgMHgwOTogcHJpbnRmKCJSZXF1
ZXN0IHJlZ2lzdHJhdGlvbiAoVFhJKSAtICIpOyBicmVhazsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlIFRSTExEX09QRU5fUkVQRUFUICsg
MHgwQTogcHJpbnRmKCJMb2JlIG1lZGlhIHRlc3QgKFRYSSkgLSAiKTsgYnJl
YWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogICAg
ICAgICAgICAgICAgICAgICAgIHByaW50ZigiVW5rbm93biBwaGFzZSAoJXgp
IC0gIiwgU3RhdHVzLT5TcGVjaWZpY2F0aW9uLkluaXRTdGF0dXMgJiAweDAw
Rik7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAg
ICAgICAgICAgICBzd2l0Y2ggKFN0YXR1cy0+U3BlY2lmaWNhdGlvbi5Jbml0
U3RhdHVzICYgMHg3RjApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIFRSTExEX09QRU5fUkVQRUFUICsgMHgxMDogcHJpbnRmKCJGdW5j
dGlvbiBmYWlsdXJlIChObyBjYWJsZT8pXG4iKTsgYnJlYWs7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBUUkxMRF9PUEVOX1JFUEVBVCAr
IDB4MjA6IHByaW50ZigiU2lnbmFsIGxvc3NcbiIpOyBicmVhazsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFRSTExEX09QRU5fUkVQRUFU
ICsgMHg1MDogcHJpbnRmKCJUaW1lb3V0XG4iKTsgYnJlYWs7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBUUkxMRF9PUEVOX1JFUEVBVCAr
IDB4NjA6IHByaW50ZigiUmluZyBmYWlsdXJlIChUS1ApIC8gUHJvdG9jb2wg
ZXJyb3IgKFRYSSlcbiIpOyBicmVhazsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlIFRSTExEX09QRU5fUkVQRUFUICsgMHg3MDogcHJpbnRm
KCJSaW5nIGJlYWNvbmluZ1xuIik7IGJyZWFrOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgVFJMTERfT1BFTl9SRVBFQVQgKyAweDgwOiBw
cmludGYoIkR1cGxpY2F0ZSBub2RlIGFkZHJlc3MgKFRLUCkgLyBJbnNlcnQg
ZGVuaWVkIChUWEkpXG4iKTsgYnJlYWs7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBUUkxMRF9PUEVOX1JFUEVBVCArIDB4OTA6IHByaW50
ZigiUmVxdWVzdCBpbml0aWFsaXphdGlvbiAoVEtQKVxuIik7IGJyZWFrOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVFJMTERfT1BFTl9S
RVBFQVQgKyAweGEwOiBwcmludGYoIlJlbW92ZSByZWNlaXZlZFxuIik7IGJy
ZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVFJMTERf
T1BFTl9SRVBFQVQgKyAweGIwOiBwcmludGYoIkMtcG9ydCBhZGRyZXNzIGNo
YW5nZWQgKFRYSSlcbiIpOyBicmVhazsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRm
KCJVbmtub3duIHR5cGUgKCV4KVxuIiwgU3RhdHVzLT5TcGVjaWZpY2F0aW9u
LkluaXRTdGF0dXMgJiAweDBGMCk7DQogICAgICAgICAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAg
ICAgICAgICAgICAgICBwcmludGYoIlVua25vd24gZXJyb3IgKCV4KVxuIiwg
U3RhdHVzLT5TcGVjaWZpY2F0aW9uLkluaXRTdGF0dXMpOyANCiAgICAgICAg
ICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgYnJl
YWs7DQogICAgICAgIGNhc2UgVFJMTERfU1RTX1JJTkdfU1RBVFVTOg0KICAg
ICAgICAgICAgaWYgKFN0YXR1cy0+U3BlY2lmaWNhdGlvbi5SaW5nU3RhdHVz
ICE9IDApIHsNCiAgICAgICAgICAgICAgICBwcmludGYoIm9sdHIlZDogUmlu
ZyBzdGF0dXMgY2hhbmdlOiAiLCBzYy0+dW5pdCk7DQogICAgICAgICAgICAg
ICAgaWYgKFN0YXR1cy0+U3BlY2lmaWNhdGlvbi5SaW5nU3RhdHVzICYgVFJM
TERfUlNfSEFSRF9FUlJPUikgICAgICAgICBwcmludGYoIltIYXJkIGVycm9y
XSAiKTsNCiAgICAgICAgICAgICAgICBpZiAoU3RhdHVzLT5TcGVjaWZpY2F0
aW9uLlJpbmdTdGF0dXMgJiBUUkxMRF9SU19TT0ZUX0VSUk9SKSAgICAgICAg
IHByaW50ZigiW1NvZnQgZXJyb3JdICIpOw0KICAgICAgICAgICAgICAgIGlm
IChTdGF0dXMtPlNwZWNpZmljYXRpb24uUmluZ1N0YXR1cyAmIFRSTExEX1JT
X1RSQU5TTUlUX0JFQUNPTikgICAgcHJpbnRmKCJbVHJhbnNtaXQgYmVhY29u
XSAiKTsNCiAgICAgICAgICAgICAgICBpZiAoU3RhdHVzLT5TcGVjaWZpY2F0
aW9uLlJpbmdTdGF0dXMgJiBUUkxMRF9SU19MT0JFX1dJUkVfRkFVTFQpICAg
IHByaW50ZigiW1dpcmUgZmF1bHRdICIpOw0KICAgICAgICAgICAgICAgIGlm
IChTdGF0dXMtPlNwZWNpZmljYXRpb24uUmluZ1N0YXR1cyAmIFRSTExEX1JT
X0FVVE9fUkVNT1ZBTF9FUlJPUikgcHJpbnRmKCJbQXV0byByZW1vdmFsXSAi
KTsNCiAgICAgICAgICAgICAgICBpZiAoU3RhdHVzLT5TcGVjaWZpY2F0aW9u
LlJpbmdTdGF0dXMgJiBUUkxMRF9SU19SRU1PVkVfUkVDRUlWRUQpICAgIHBy
aW50ZigiW1JlbW92ZSByZWNlaXZlZF0gIik7DQogICAgICAgICAgICAgICAg
aWYgKFN0YXR1cy0+U3BlY2lmaWNhdGlvbi5SaW5nU3RhdHVzICYgVFJMTERf
UlNfQ09VTlRFUl9PVkVSRkxPVykgICBwcmludGYoIltDb3VudGVyIG92ZXJm
bG93XSAiKTsNCiAgICAgICAgICAgICAgICBpZiAoU3RhdHVzLT5TcGVjaWZp
Y2F0aW9uLlJpbmdTdGF0dXMgJiBUUkxMRF9SU19TSU5HTEVfU1RBVElPTikg
ICAgIHByaW50ZigiW1NpbmdsZSBzdGF0aW9uXSAiKTsNCiAgICAgICAgICAg
ICAgICBpZiAoU3RhdHVzLT5TcGVjaWZpY2F0aW9uLlJpbmdTdGF0dXMgJiBU
UkxMRF9SU19SSU5HX1JFQ09WRVJZKSAgICAgIHByaW50ZigiW1JpbmcgcmVj
b3ZlcnldICIpOw0KICAgICAgICAgICAgICAgIHByaW50ZigiXG4iKTsNCiAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICBjYXNl
IFRSTExEX1NUU19BREFQVEVSX0NIRUNLOg0KICAgICAgICAgICAgcHJpbnRm
KCJvbHRyJWQ6IEFkYXB0ZXIgY2hlY2sgKCV4ICV4ICV4ICV4KVxuIiwgc2Mt
PnVuaXQsIFN0YXR1cy0+U3BlY2lmaWNhdGlvbi5BZGFwdGVyQ2hlY2tbMF0s
IA0KICAgICAgICAgICAgICAgICAgICBTdGF0dXMtPlNwZWNpZmljYXRpb24u
QWRhcHRlckNoZWNrWzFdLCBTdGF0dXMtPlNwZWNpZmljYXRpb24uQWRhcHRl
ckNoZWNrWzJdLCANCiAgICAgICAgICAgICAgICAgICAgU3RhdHVzLT5TcGVj
aWZpY2F0aW9uLkFkYXB0ZXJDaGVja1szXSk7IA0KICAgICAgICAgICAgYnJl
YWs7DQogICAgICAgIGNhc2UgVFJMTERfU1RTX1BST01JU0NVT1VTX1NUT1BQ
RUQ6DQogICAgICAgICAgICBwcmludGYoIm9sdHIlZDogUHJvbWlzY3VvdXMg
bW9kZSBzdG9wcGVkOiAiLCBzYy0+dW5pdCk7DQogICAgICAgICAgICBzd2l0
Y2goU3RhdHVzLT5TcGVjaWZpY2F0aW9uLlByb21SZW1vdmVkQ2F1c2UpIHsN
CiAgICAgICAgICAgICAgICBjYXNlIFRSTExEX1BST01fUkVNT1ZFX1JFQ0VJ
VkVEOiBwcmludGYoIlJlbW92ZSByZWNlaXZlZFxuIik7IGJyZWFrOw0KICAg
ICAgICAgICAgICAgIGNhc2UgVFJMTERfUFJPTV9QT0xMX0ZBSUxVUkU6ICAg
IHByaW50ZigiUG9sbCBmYWlsdXJlXG4iKTsgYnJlYWs7DQogICAgICAgICAg
ICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRm
KCJVbmtub3duICgleClcbiIsIFN0YXR1cy0+U3BlY2lmaWNhdGlvbi5Qcm9t
UmVtb3ZlZENhdXNlKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGJy
ZWFrOw0KICAgICAgICBjYXNlIFRSTExEX1NUU19MTERfRVJST1I6DQogICAg
ICAgICAgICBwcmludGYoIm9sdHIlZDogTExEIGVycm9yICgleCAleCAleCAl
eCkgIiwgc2MtPnVuaXQsIFN0YXR1cy0+U3BlY2lmaWNhdGlvbi5JbnRlcm5h
bEVycm9yWzBdLCANCiAgICAgICAgICAgICAgICAgICAgU3RhdHVzLT5TcGVj
aWZpY2F0aW9uLkludGVybmFsRXJyb3JbMV0sIFN0YXR1cy0+U3BlY2lmaWNh
dGlvbi5JbnRlcm5hbEVycm9yWzJdLCANCiAgICAgICAgICAgICAgICAgICAg
U3RhdHVzLT5TcGVjaWZpY2F0aW9uLkludGVybmFsRXJyb3JbM10pOw0KICAg
ICAgICAgICAgYnJlYWs7DQogICAgICAgIGNhc2UgVFJMTERfU1RTX0FEQVBU
RVJfVElNRU9VVDoNCiAgICAgICAgICAgIHByaW50Zigib2x0ciVkOiBBZGFw
dGVyIG9wZXJhdGlvbiB0aW1lZCBvdXQ6ICIsIHNjLT51bml0KTsNCiAgICAg
ICAgICAgIHN3aXRjaChTdGF0dXMtPlNwZWNpZmljYXRpb24uQWRhcHRlclRp
bWVvdXQpIHsNCiAgICAgICAgICAgICAgICBjYXNlIFRSTExEX0NPTU1BTkRf
VElNRU9VVDogICBwcmludGYoIkNvbW1hbmRcbiIpOw0KICAgICAgICAgICAg
ICAgIGNhc2UgVFJMTERfVFJBTlNNSVRfVElNRU9VVDogIHByaW50ZigiVHJh
bnNtaXRcbiIpOw0KICAgICAgICAgICAgICAgIGNhc2UgVFJMTERfSU5URVJS
VVBUX1RJTUVPVVQ6IHByaW50ZigiSW50ZXJydXB0XG4iKTsNCiAgICAgICAg
ICAgICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgICAgICBwcmludGYo
IlVua25vd24gKCV4KVxuIiwgU3RhdHVzLT5TcGVjaWZpY2F0aW9uLkFkYXB0
ZXJUaW1lb3V0KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGJyZWFr
Ow0KICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgcHJpbnRmKCJvbHRy
JWQ6IFVua25vd24gc3RhdHVzIHR5cGUgKCV4KVxuIiwgc2MtPnVuaXQsIFN0
YXR1cy0+VHlwZSk7DQoNCiAgICB9DQogICAgaWYgKFN0YXR1cy0+Q2xvc2Vk
KSB7DQogICAgICAgIGlmIChzYy0+aHdfc3RhdGUgPiBIV19CQUQpIHsNCiAg
ICAgICAgICAgIHNjLT5od19zdGF0ZSA9IEhXX0ZBSUxFRDsNCiAgICAgICAg
ICAgIHByaW50Zigib2x0ciVkOiBjbG9zaW5nIGFkYXB0ZXIgZHVlIHRvIGZh
aWx1cmUuXG4iLCBzYy0+dW5pdCk7DQogICAgICAgICAgICBvbHRyX3N0b3Ao
c2MpOw0KICAgICAgICB9DQogICAgfQ0KfQ0KDQpzdGF0aWMgdm9pZA0KRHJp
dmVyQ2xvc2VDb21wbGV0ZWQoRHJpdmVySGFuZGxlKQ0KICAgIHZvaWQgKkRy
aXZlckhhbmRsZTsNCnsNCiAgICBzdHJ1Y3Qgb2x0cl9zb2Z0YyAqc2MgPSAm
b2x0cl9zb2Z0Y1soaW50KURyaXZlckhhbmRsZV07DQoNCiAgICBwcmludGYo
Im9sdHIlZDogRHJpdmVyQ2xvc2VDb21wbGV0ZWRcbiIsIHNjLT51bml0KTsN
Cg0KICAgIHVudGltZW91dChvbHRyX3RpbWVvdXQsICh2b2lkICopc2MtPnVu
aXQsIHNjLT5vbHRyX2NoKTsNCiAgICB3YWtldXBfb25lKCh2b2lkICopc2Mt
PnVuaXQpOw0KDQogICAgaWYgKChzYy0+aHdfc3RhdGUgIT0gSFdfQ0xPU0lO
RykgJiYgKHNjLT5od19zdGF0ZSAhPSBIV19DTE9TSU5HMikgJiYgKHNjLT5o
d19zdGF0ZSAhPSBIV19DTE9TRUQpKSB7DQogICAgICAgIHByaW50Zigib2x0
ciVkOiBhZGFwdGVyIGNsb3NlIGNvbXBsZXRlIGNhbGxlZCBpbiB3cm9uZyBz
dGF0ZSAoJWQpXG4iLCBzYy0+dW5pdCwgc2MtPmh3X3N0YXRlKTsNCiAgICAg
ICAgcmV0dXJuOw0KICAgIH0NCiAgICBzYy0+aHdfc3RhdGUgPSBIV19DTE9T
SU5HMjsNCiAgICBpZiAoc2MtPmNvbmZpZy0+ZG1hbGV2ZWwgIT0gVFJMTERf
RE1BX1BJTykNCiAgICAgICAgaXNhX2RtYV9yZWxlYXNlKHNjLT5jb25maWct
PmRtYWxldmVsKTsNCiAgICANCn0NCg0Kc3RhdGljIHZvaWQNCkRyaXZlclN0
YXRpc3RpY3MoRHJpdmVySGFuZGxlLCBTdGF0aXN0aWNzKQ0KICAgIHZvaWQg
KkRyaXZlckhhbmRsZTsNCiAgICBUUmxsZFN0YXRpc3RpY3NfdCAqU3RhdGlz
dGljczsNCnsNCiAgICBwcmludGYoIm9sdHI6IERyaXZlclN0YXRpc3RpY3Nc
biIpOw0KfQ0KDQpzdGF0aWMgdm9pZA0KRHJpdmVyVHJhbnNtaXRGcmFtZUNv
bXBsZXRlZChEcml2ZXJIYW5kbGUsIEZyYW1lSGFuZGxlLCBUcmFuc21pdFN0
YXR1cykNCiAgICB2b2lkICpEcml2ZXJIYW5kbGU7DQogICAgdm9pZCAqRnJh
bWVIYW5kbGU7DQogICAgaW50IFRyYW5zbWl0U3RhdHVzOw0Kew0KICAgIGlu
dCBmcmFtZSA9IChpbnQpRnJhbWVIYW5kbGU7DQogICAgc3RydWN0IG9sdHJf
c29mdGMgKnNjID0gJm9sdHJfc29mdGNbKGludClEcml2ZXJIYW5kbGVdOw0K
ICAgIHN0cnVjdCBpZm5ldCAqaWZwID0gJnNjLT5hcnBjb20uYWNfaWY7DQoN
CiAgICBpZiAoaWZwLT5pZl9mbGFncyAmIElGRl9PQUNUSVZFKQ0KICAgICAg
ICBpZnAtPmlmX2ZsYWdzICY9IH4oSUZGX09BQ1RJVkUpOw0KDQogICAgLypw
cmludGYoIm9sdHIlZDogdHJhbnNtaXQgY29tcGxldGUgZnJhbWUgJWRcbiIs
IHNjLT51bml0LCBmcmFtZSk7Ki8NCiAgICBpZiAoVHJhbnNtaXRTdGF0dXMg
PT0gVFJMTERfVFJBTlNNSVRfT0spIHsNCiAgICAgICAgaWZwLT5pZl9vcGFj
a2V0cysrOw0KICAgIH0gZWxzZSB7DQogICAgICAgIHByaW50Zigib2x0ciVk
OiBEcml2ZXJUcmFuc21pdEZyYW1lQ29tcGxldGVkIChGcmFtZSAlZCBzdGF0
dXMgJXgpXG4iLCBzYy0+dW5pdCwgZnJhbWUsIFRyYW5zbWl0U3RhdHVzKTsN
CiAgICAgICAgaWZwLT5pZl9vZXJyb3JzKys7DQogICAgfQ0KICAgIGlmICgo
ZnJhbWUgPCAwKSB8fCAoZnJhbWUgPiBUWF9MSVNUX1NJWkUpKSB7DQogICAg
ICAgIHByaW50Zigib2x0ciVkOiBib2d1cyB0cmFuc21pdCBidWZmZXIuICgl
ZClcbiIsIHNjLT51bml0LCBmcmFtZSk7DQogICAgICAgIHJldHVybjsNCiAg
ICB9DQoNCiAgICBzYy0+dHhfYXZhaWwrKzsNCg0KfQ0KDQpzdGF0aWMgdm9p
ZA0KRHJpdmVyUmVjZWl2ZUZyYW1lQ29tcGxldGVkKERyaXZlckhhbmRsZSwg
Qnl0ZUNvdW50LCBGcmFnbWVudENvdW50LCBGcmFnbWVudEhhbmRsZSwgUmVj
ZWl2ZVN0YXR1cykNCiAgICB2b2lkICpEcml2ZXJIYW5kbGU7DQogICAgaW50
IEJ5dGVDb3VudDsNCiAgICBpbnQgRnJhZ21lbnRDb3VudDsNCiAgICB2b2lk
ICpGcmFnbWVudEhhbmRsZTsNCiAgICBpbnQgUmVjZWl2ZVN0YXR1czsNCnsN
CiAgICBzdHJ1Y3Qgb2x0cl9zb2Z0YyAqc2MgPSAmb2x0cl9zb2Z0Y1soaW50
KURyaXZlckhhbmRsZV07DQogICAgc3RydWN0IGlmbmV0ICppZnAgPSAmc2Mt
PmFycGNvbS5hY19pZjsNCiAgICBzdHJ1Y3QgaXNvODgwMjVfaGVhZGVyICp0
aDsNCiAgICBzdHJ1Y3QgbWJ1ZiAqbTAsICptMSwgKm07DQogICAgaW50IGog
PSAoaW50KUZyYWdtZW50SGFuZGxlLCByYywgZnJhbWVfbGVuID0gQnl0ZUNv
dW50LCBtYWNfaGRyX2xlbjsNCiAgICBpbnQgbWJ1Zl9vZmZzZXQsIG1idWZf
c2l6ZSwgZnJhZ19vZmZzZXQsIGxlbmd0aDsNCiAgICBjaGFyICpmcmFnID0g
c2MtPnJ4X2J1ZmZlcltqXS5idWY7DQoNCiAgICAvKnByaW50Zigib2x0ciVk
OiBSZWNlaXZlRnJhbWVDb21wbGV0ZWQgKFNpemUgJWQgQ291bnQgJWQgU3Rh
cnQgJWQpXG4iLCBzYy0+dW5pdCwgQnl0ZUNvdW50LCBGcmFnbWVudENvdW50
LCBqKTsqLw0KDQogICAgaWYgKHNjLT5od19zdGF0ZSA+PSAgSFdfT1BFTikg
eyAgICAgICAgICAgICAvKiBIYXJkd2FyZSBvcGVyYXRpbmcgbm9ybWFsbHkg
Ki8NCiAgICAgICAgaWYgKGZyYWcgIT0gc2MtPnJ4X2J1ZmZlcltzYy0+cnhf
bmV4dCAmIFJYX0xJU1RfTUFTS10uYnVmKSB7DQogICAgICAgICAgICBwcmlu
dGYoIm9sdHIlZDogcmluZyBidWZmZXIgcG9pbnRlciBibG93blxuIiwgc2Mt
PnVuaXQpOw0KICAgICAgICAgICAgb2x0cl9zdG9wKHNjKTsNCiAgICAgICAg
ICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoUmVjZWl2ZVN0
YXR1cyA9PSBUUkxMRF9SQ1ZfT0spIHsgICAgLyogUmVjZWl2ZSBnb29kIGZy
YW1lICovDQogICAgICAgICAgICBNR0VUSERSKG0wLCBNX0RPTlRXQUlULCBN
VF9EQVRBKTsNCiAgICAgICAgICAgIG1idWZfc2l6ZSA9IE1ITEVOOw0KICAg
ICAgICAgICAgaWYgKG0wID09IE5VTEwpIHsNCiAgICAgICAgICAgICAgICBp
ZnAtPmlmX2llcnJvcnMrKzsNCiAgICAgICAgICAgICAgICBnb3RvIG91dDsN
CiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChCeXRlQ291bnQgKyAy
ID4gTUhMRU4pIHsNCiAgICAgICAgICAgICAgICBNQ0xHRVQobTAsIE1fRE9O
VFdBSVQpOw0KICAgICAgICAgICAgICAgIG1idWZfc2l6ZSA9IE1DTEJZVEVT
Ow0KICAgICAgICAgICAgICAgIGlmICgobTAtPm1fZmxhZ3MgJiBNX0VYVCkg
PT0gMCkgew0KICAgICAgICAgICAgICAgICAgICBtX2ZyZWVtKG0wKTsNCiAg
ICAgICAgICAgICAgICAgICAgaWZwLT5pZl9pZXJyb3JzKys7DQogICAgICAg
ICAgICAgICAgICAgIGdvdG8gb3V0Ow0KICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgIH0NCg0KICAgICAgICAgICAgbTAtPm1fcGt0aGRyLnJjdmlm
ID0gJnNjLT5hcnBjb20uYWNfaWY7DQogICAgICAgICAgICBtMC0+bV9wa3Ro
ZHIubGVuID0gQnl0ZUNvdW50Ow0KICAgICAgICAgICAgbTAtPm1fbGVuID0g
MDsNCiAgICAgICAgICAgIG0wLT5tX2RhdGEgKz0gMjsNCiAgICAgICAgICAg
IHRoID0gbXRvZChtMCwgc3RydWN0IGlzbzg4MDI1X2hlYWRlciAqKTsNCg0K
ICAgICAgICAgICAgbSA9IG0wOyBtYnVmX29mZnNldCA9IDA7IGZyYWdfb2Zm
c2V0ID0gMDsNCiAgICAgICAgICAgIHdoaWxlIChmcmFtZV9sZW4gPiAwKSB7
DQogICAgICAgICAgICAgICAgbGVuZ3RoID0gKFJYX0JVRkZFUl9MRU4gLSBm
cmFnX29mZnNldCkgPiAobWJ1Zl9zaXplIC0gbWJ1Zl9vZmZzZXQpID8gKG1i
dWZfc2l6ZSAtIG1idWZfb2Zmc2V0KSA6DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKFJYX0JVRkZFUl9MRU4gLSBmcmFnX29m
ZnNldCk7DQogICAgICAgICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoID4gZnJh
bWVfbGVuID8gZnJhbWVfbGVuIDogbGVuZ3RoOw0KICAgICAgICAgICAgICAg
IGJjb3B5KGZyYWcgKyBmcmFnX29mZnNldCwgbXRvZChtLCBjaGFyICopICsg
bWJ1Zl9vZmZzZXQsIGxlbmd0aCk7DQogICAgICAgICAgICAgICAgbS0+bV9s
ZW4gKz0gbGVuZ3RoOw0KICAgICAgICAgICAgICAgIG1idWZfb2Zmc2V0ICs9
IGxlbmd0aDsNCiAgICAgICAgICAgICAgICBmcmFnX29mZnNldCArPSBsZW5n
dGg7DQogICAgICAgICAgICAgICAgZnJhbWVfbGVuIC09IGxlbmd0aDsNCiAg
ICAgICAgICAgICAgICBpZiAoZnJhZ19vZmZzZXQgPT0gUlhfQlVGRkVSX0xF
Tikgew0KICAgICAgICAgICAgICAgICAgICBmcmFnID0gc2MtPnJ4X2J1ZmZl
clsrK2pdLmJ1ZjsNCiAgICAgICAgICAgICAgICAgICAgZnJhZ19vZmZzZXQg
PSAwOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAo
KG1idWZfb2Zmc2V0ID09IG1idWZfc2l6ZSkgJiYgKGZyYW1lX2xlbiA+IDAp
KSB7DQogICAgICAgICAgICAgICAgICAgIE1HRVQobTEsIE1fRE9OVFdBSVQs
IE1UX0RBVEEpOw0KICAgICAgICAgICAgICAgICAgICBtYnVmX3NpemUgPSBN
SExFTjsNCiAgICAgICAgICAgICAgICAgICAgaWYgKG0xID09IE5VTEwpIHsN
CiAgICAgICAgICAgICAgICAgICAgICAgIGlmcC0+aWZfaWVycm9ycysrOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgbV9mcmVlbShtMCk7DQogICAgICAg
ICAgICAgICAgICAgICAgICBnb3RvIG91dDsNCiAgICAgICAgICAgICAgICAg
ICAgfSAgDQogICAgICAgICAgICAgICAgICAgIGlmIChmcmFtZV9sZW4gPiBN
SExFTikgew0KICAgICAgICAgICAgICAgICAgICAgICAgTUNMR0VUKG0xLCBN
X0RPTlRXQUlUKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIG1idWZfc2l6
ZSA9IE1DTEJZVEVTOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCht
MS0+bV9mbGFncyAmIE1fRVhUKSA9PSAwKSB7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9mcmVlbShtMCk7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9mcmVlbShtMSk7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWZwLT5pZl9pZXJyb3JzKys7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ290byBvdXQ7DQogICAgICAgICAgICAgICAgICAgICAgICB9
DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAg
bS0+bV9uZXh0ID0gbTE7DQogICAgICAgICAgICAgICAgICAgIG0gPSBtMTsN
CiAgICAgICAgICAgICAgICAgICAgbWJ1Zl9vZmZzZXQgPSAwOw0KICAgICAg
ICAgICAgICAgICAgICBtLT5tX2xlbiA9IDA7DQogICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWZwLT5pZl9pcGFja2V0
cysrOw0KICAgICAgICANCiNpZiBOQlBGSUxURVIgPiAwDQogICAgICAgICAg
ICBpZiAoaWZwLT5pZl9icGYpDQogICAgICAgICAgICAgICAgYnBmX210YXAo
aWZwLCBtMCk7DQojZW5kaWYNCg0KICAgICAgICAgICAgaWYgKGlmcC0+aWZf
ZmxhZ3MgJiBJRkZfUFJPTUlTQykNCiAgICAgICAgICAgICAgICBpZiAoYmNt
cCh0aC0+aXNvODgwMjVfZGhvc3QsIGV0aGVyYnJvYWRjYXN0YWRkciwgc2l6
ZW9mKHRoLT5pc284ODAyNV9kaG9zdCkpICE9IDApIHsNCiAgICAgICAgICAg
ICAgICAgICAgaWYgKCgodGgtPmlzbzg4MDI1X2Rob3N0WzBdICYgMHg3Zikg
IT0gc2MtPmFycGNvbS5hY19lbmFkZHJbMF0pIHx8DQogICAgICAgICAgICAg
ICAgICAgICAgICAoYmNtcCh0aC0+aXNvODgwMjVfZGhvc3QgKyAxLCBzYy0+
YXJwY29tLmFjX2VuYWRkciArIDEsIElTTzg4MDI1X0FERFJfTEVOIC0gMSkp
KSB7DQoJICAgICAgICAgICAgICAgIG1fZnJlZW0obTApOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgZ290byBvdXQ7DQogICAgICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgbWFjX2hkcl9sZW4g
PSBJU084ODAyNV9IRFJfTEVOOw0KICAgICAgICAgICAgaWYgKHRoLT5pc284
ODAyNV9zaG9zdFswXSAmIDB4ODApIC8qIENoZWNrIGZvciBzb3VyY2Ugcm91
dGluZyBpbmZvICovDQogICAgICAgICAgICAgICAgbWFjX2hkcl9sZW4gKz0g
IChudG9ocyh0aC0+cmNmKSAmIDB4MWYwMCkgPj4gODsNCiAgICAgICAgICAg
IA0KICAgICAgICAgICAgbTAtPm1fcGt0aGRyLmxlbiAtPSBtYWNfaGRyX2xl
bjsNCiAgICAgICAgICAgIG0wLT5tX2xlbiAtPSBtYWNfaGRyX2xlbjsNCiAg
ICAgICAgICAgIG0wLT5tX2RhdGEgKz0gbWFjX2hkcl9sZW47DQoNCiAgICAg
ICAgICAgIGlzbzg4MDI1X2lucHV0KCZzYy0+YXJwY29tLmFjX2lmLCB0aCwg
bTApOw0KDQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBpZiAoUmVj
ZWl2ZVN0YXR1cyAhPSBUUkxMRF9SQ1ZfTk9fREFUQSkgew0KICAgICAgICAg
ICAgICAgIHByaW50Zigib2x0ciVkOiByZWNlaXZlIGVycm9yLiAoUmVjZWl2
ZVN0YXR1cz0lZClcbiIsIHNjLT51bml0LCBSZWNlaXZlU3RhdHVzKTsNCiAg
ICAgICAgICAgICAgICBpZnAtPmlmX2llcnJvcnMrKzsNCiAgICAgICAgICAg
IH0NCiAgICAgICAgfQ0Kb3V0Og0KICAgICAgICB3aGlsZSAoRnJhZ21lbnRD
b3VudCA+IDApIHsNCiAgICAgICAgICAgIHJjID0gVFJsbGRSZWNlaXZlRnJh
Z21lbnQoc2MtPlRSbGxkQWRhcHRlciwgDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHZvaWQgKilzYy0+cnhfYnVmZmVyW3NjLT5y
eF9uZXh0ICYgUlhfTElTVF9NQVNLXS5idWYsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAga3Z0b3Aoc2MtPnJ4X2J1ZmZlcltzYy0+
cnhfbmV4dCAmIFJYX0xJU1RfTUFTS10uYnVmKSwNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSWF9CVUZGRVJfTEVOLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopc2MtPnJ4
X2J1ZmZlcltzYy0+cnhfbmV4dCAmIFJYX0xJU1RfTUFTS10uaW5kZXgpOw0K
ICAgICAgICAgICAgaWYgKHJjID09IFRSTExEX1JFQ0VJVkVfT0spIHsNCiAg
ICAgICAgICAgICAgICBzYy0+cnhfbmV4dCsrOw0KICAgICAgICAgICAgICAg
IEZyYWdtZW50Q291bnQtLTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAg
ICAgICAgICAgICAgcHJpbnRmKCJvbHRyJWQ6IEFkYXB0ZXIgcmVmdXNlZCBm
cmFnbWVudCAoJWQpLlxuIiwgc2MtPnVuaXQsIHNjLT5yeF9uZXh0IC0gMSk7
DQogICAgICAgICAgICAgICAgc2MtPnJ4X2F2YWlsICs9IEZyYWdtZW50Q291
bnQ7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICB9DQog
ICAgICAgIH0NCiAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIEhhcmR3YXJlIGJlaW5nIGNsb3NlZCAqLw0KICAg
ICAgICBpZiAoZnJhZyAhPSBzYy0+cnhfYnVmZmVyW3NjLT5yeF9uZXh0Kysg
JiBSWF9MSVNUX01BU0tdLmJ1Zikgew0KICAgICAgICAgICAgcHJpbnRmKCJv
bHRyJWQ6IHJpbmcgYnVmZmVyIHBvaW50ZXIgYmxvd25cbiIsIHNjLT51bml0
KTsgIA0KICAgICAgICB9ICAgICAgICAgICANCiAgICAgICAgc2MtPnJ4X2F2
YWlsICs9IEZyYWdtZW50Q291bnQ7DQogICAgfQ0KICAgIA0KfQ0KDQoNCi8q
DQogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFBNVyBHbHVlIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAqLw0KDQojaWZuZGVm
IFRSbGxkSW5saW5lSU8NCg0Kc3RhdGljIHZvaWQgDQpEcml2ZXJPdXRCeXRl
KElPQWRkcmVzcywgdmFsdWUpDQogICAgdW5zaWduZWQgc2hvcnQgSU9BZGRy
ZXNzOw0KICAgIHVuc2lnbmVkIGNoYXIgdmFsdWU7DQp7DQogICAgb3V0YihJ
T0FkZHJlc3MsIHZhbHVlKTsNCn0NCg0Kc3RhdGljIHZvaWQNCkRyaXZlck91
dFdvcmQoSU9BZGRyZXNzLCB2YWx1ZSkNCiAgICB1bnNpZ25lZCBzaG9ydCBJ
T0FkZHJlc3M7DQogICAgdW5zaWduZWQgc2hvcnQgdmFsdWU7DQp7DQogICAg
b3V0dyhJT0FkZHJlc3MsIHZhbHVlKTsNCn0NCg0Kc3RhdGljIHZvaWQNCkRy
aXZlck91dER3b3JkKElPQWRkcmVzcywgdmFsdWUpDQogICAgdW5zaWduZWQg
c2hvcnQgSU9BZGRyZXNzOw0KICAgIHVuc2lnbmVkIGxvbmcgdmFsdWU7DQp7
DQogICAgb3V0bChJT0FkZHJlc3MsIHZhbHVlKTsNCn0NCg0Kc3RhdGljIHZv
aWQNCkRyaXZlclJlcE91dEJ5dGUoSU9BZGRyZXNzLCBEYXRhUG9pbnRlciwg
Qnl0ZUNvdW50KQ0KICAgIHVuc2lnbmVkIHNob3J0IElPQWRkcmVzczsNCiAg
ICB1bnNpZ25lZCBjaGFyICAqRGF0YVBvaW50ZXI7DQogICAgaW50IEJ5dGVD
b3VudDsNCnsNCiAgICBvdXRzYihJT0FkZHJlc3MsICh2b2lkICopRGF0YVBv
aW50ZXIsIEJ5dGVDb3VudCk7DQp9DQoNCnN0YXRpYyB2b2lkDQpEcml2ZXJS
ZXBPdXRXb3JkKElPQWRkcmVzcywgRGF0YVBvaW50ZXIsIFdvcmRDb3VudCkN
CiAgICB1bnNpZ25lZCBzaG9ydCBJT0FkZHJlc3M7DQogICAgdW5zaWduZWQg
c2hvcnQgKkRhdGFQb2ludGVyOw0KICAgIGludCBXb3JkQ291bnQ7DQp7DQog
ICAgb3V0c3coSU9BZGRyZXNzLCAodm9pZCAqKURhdGFQb2ludGVyLCBXb3Jk
Q291bnQpOw0KfQ0KDQpzdGF0aWMgdm9pZA0KRHJpdmVyUmVwT3V0RHdvcmQo
SU9BZGRyZXNzLCBEYXRhUG9pbnRlciwgRFdvcmRDb3VudCkNCiAgICB1bnNp
Z25lZCBzaG9ydCBJT0FkZHJlc3M7DQogICAgdW5zaWduZWQgbG9uZyAgKkRh
dGFQb2ludGVyOw0KICAgIGludCBEV29yZENvdW50Ow0Kew0KICAgIG91dHNs
KElPQWRkcmVzcywgKHZvaWQgKilEYXRhUG9pbnRlciwgRFdvcmRDb3VudCk7
DQp9DQoNCnN0YXRpYyB1bnNpZ25lZCBjaGFyDQpEcml2ZXJJbkJ5dGUoSU9B
ZGRyZXNzKQ0KICAgIHVuc2lnbmVkIHNob3J0IElPQWRkcmVzczsNCnsNCiAg
ICByZXR1cm4oaW5iKElPQWRkcmVzcykpOw0KfQ0KDQpzdGF0aWMgdW5zaWdu
ZWQgc2hvcnQNCkRyaXZlckluV29yZChJT0FkZHJlc3MpDQogICAgdW5zaWdu
ZWQgc2hvcnQgSU9BZGRyZXNzOw0Kew0KICAgcmV0dXJuKGludyhJT0FkZHJl
c3MpKTsNCn0NCg0Kc3RhdGljIHVuc2lnbmVkIGxvbmcNCkRyaXZlckluRHdv
cmQoSU9BZGRyZXNzKQ0KICAgIHVuc2lnbmVkIHNob3J0IElPQWRkcmVzczsN
CnsNCiAgICByZXR1cm4oaW5sKElPQWRkcmVzcykpOw0KfQ0KDQpzdGF0aWMg
dm9pZA0KRHJpdmVyUmVwSW5CeXRlKElPQWRkcmVzcywgRGF0YVBvaW50ZXIs
IEJ5dGVDb3VudCkNCiAgICB1bnNpZ25lZCBzaG9ydCBJT0FkZHJlc3M7DQog
ICAgdW5zaWduZWQgY2hhciAgKkRhdGFQb2ludGVyOw0KICAgIGludCBCeXRl
Q291bnQ7DQp7DQogICAgaW5zYihJT0FkZHJlc3MsICh2b2lkICopRGF0YVBv
aW50ZXIsIEJ5dGVDb3VudCk7DQp9DQoNCnN0YXRpYyB2b2lkDQpEcml2ZXJS
ZXBJbldvcmQoSU9BZGRyZXNzLCBEYXRhUG9pbnRlciwgV29yZENvdW50KQ0K
ICAgIHVuc2lnbmVkIHNob3J0IElPQWRkcmVzczsNCiAgICB1bnNpZ25lZCBz
aG9ydCAqRGF0YVBvaW50ZXI7DQogICAgaW50IFdvcmRDb3VudDsNCnsNCiAg
ICBpbnN3KElPQWRkcmVzcywgKHZvaWQgKilEYXRhUG9pbnRlciwgV29yZENv
dW50KTsNCn0NCnN0YXRpYyB2b2lkDQpEcml2ZXJSZXBJbkR3b3JkKElPQWRk
cmVzcywgRGF0YVBvaW50ZXIsIERXb3JkQ291bnQpDQogICAgdW5zaWduZWQg
c2hvcnQgSU9BZGRyZXNzOw0KICAgIHVuc2lnbmVkIGxvbmcgICpEYXRhUG9p
bnRlcjsNCiAgICBpbnQgRFdvcmRDb3VudDsNCnsNCiAgICBpbnNsKElPQWRk
cmVzcywgKHZvaWQgKilEYXRhUG9pbnRlciwgRFdvcmRDb3VudCk7DQp9DQoj
ZW5kaWYgLyogVFJsbGRJbmxpbmVJTyAqLw0KDQojZW5kaWYgLyogTk9MVFIg
Ki8NCg==
--0-1628243425-918586018=:14147
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=anarchy
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.BSF.4.05.9902091346581.14147@heathers.stdio.com>
Content-Description: 
Content-Disposition: attachment; filename=anarchy

Iw0KIyBHRU5FUklDIC0tIEdlbmVyaWMgbWFjaGluZSB3aXRoIFdEL0FIeC9O
Q1IvQlR4IGZhbWlseSBkaXNrcw0KIw0KIyBGb3IgbW9yZSBpbmZvcm1hdGlv
biByZWFkIHRoZSBoYW5kYm9vayBwYXJ0IFN5c3RlbSBBZG1pbmlzdHJhdGlv
biAtPiANCiMgQ29uZmlndXJpbmcgdGhlIEZyZWVCU0QgS2VybmVsIC0+IFRo
ZSBDb25maWd1cmF0aW9uIEZpbGUuIA0KIyBUaGUgaGFuZGJvb2sgaXMgYXZh
aWxhYmxlIGluIC91c3Ivc2hhcmUvZG9jL2hhbmRib29rIG9yIG9ubGluZSBh
cw0KIyBsYXRlc3QgdmVyc2lvbiBmcm9tIHRoZSBGcmVlQlNEIFdvcmxkIFdp
ZGUgV2ViIHNlcnZlciANCiMgPFVSTDpodHRwOi8vd3d3LkZyZWVCU0QuT1JH
Lz4NCiMNCiMgQW4gZXhoYXVzdGl2ZSBsaXN0IG9mIG9wdGlvbnMgYW5kIG1v
cmUgZGV0YWlsZWQgZXhwbGFuYXRpb25zIG9mIHRoZSANCiMgZGV2aWNlIGxp
bmVzIGlzIHByZXNlbnQgaW4gdGhlIC4vTElOVCBjb25maWd1cmF0aW9uIGZp
bGUuIElmIHlvdSBhcmUgDQojIGluIGRvdWJ0IGFzIHRvIHRoZSBwdXJwb3Nl
IG9yIG5lY2Vzc2l0eSBvZiBhIGxpbmUsIGNoZWNrIGZpcnN0IGluIExJTlQu
DQojDQojCSRJZDogR0VORVJJQyx2IDEuMTE4IDE5OTgvMDkvMTggMDA6NDY6
NDAgbWphY29iIEV4cCAkDQoNCm1hY2hpbmUJCSJpMzg2Ig0KI2NwdQkJIkkz
ODZfQ1BVIg0KY3B1CQkiSTQ4Nl9DUFUiDQpjcHUJCSJJNTg2X0NQVSINCiNj
cHUJCSJJNjg2X0NQVSINCmlkZW50CQlhbmFyY2h5DQptYXh1c2VycwkzMg0K
DQpvcHRpb25zCQkiTUFYTUVNPSgxMjgqMTAyNCkiDQpvcHRpb25zICAgICAg
ICAgTk1CQ0xVU1RFUlM9NDA5Ng0KDQpvcHRpb25zCQlNQVRIX0VNVUxBVEUJ
CSNTdXBwb3J0IGZvciB4ODcgZW11bGF0aW9uDQpvcHRpb25zCQlJTkVUCQkJ
I0ludGVyTkVUd29ya2luZw0Kb3B0aW9ucwkJRkZTCQkJI0JlcmtlbGV5IEZh
c3QgRmlsZXN5c3RlbQ0Kb3B0aW9ucwkJTkZTCQkJI05ldHdvcmsgRmlsZXN5
c3RlbQ0Kb3B0aW9ucwkJTVNET1NGUwkJCSNNU0RPUyBGaWxlc3lzdGVtDQpv
cHRpb25zCQkiQ0Q5NjYwIgkJI0lTTyA5NjYwIEZpbGVzeXN0ZW0NCm9wdGlv
bnMJCSJDRDk2NjBfUk9PVCIJCSNDRC1ST00gdXNhYmxlIGFzIHJvb3QgZGV2
aWNlDQpvcHRpb25zCQlGRlNfUk9PVAkJI0ZGUyB1c2FibGUgYXMgcm9vdCBk
ZXZpY2UgW2tlZXAgdGhpcyFdDQpvcHRpb25zCQlORlNfUk9PVAkJI05GUyB1
c2FibGUgYXMgcm9vdCBkZXZpY2UNCm9wdGlvbnMJCVBST0NGUwkJCSNQcm9j
ZXNzIGZpbGVzeXN0ZW0NCm9wdGlvbnMJCSJDT01QQVRfNDMiCQkjQ29tcGF0
aWJsZSB3aXRoIEJTRCA0LjMgW0tFRVAgVEhJUyFdDQpvcHRpb25zCQlTQ1NJ
X0RFTEFZPTgwMDAgCSNCZSBwZXNzaW1pc3RpYyBhYm91dCBKb2UgU0NTSSBk
ZXZpY2UNCm9wdGlvbnMJCVVDT05TT0xFCQkjQWxsb3cgdXNlcnMgdG8gZ3Jh
YiB0aGUgY29uc29sZQ0Kb3B0aW9ucwkJRkFJTFNBRkUJCSNCZSBjb25zZXJ2
YXRpdmUNCm9wdGlvbnMJCVVTRVJDT05GSUcJCSNib290IC1jIGVkaXRvcg0K
b3B0aW9ucwkJVklTVUFMX1VTRVJDT05GSUcJI3Zpc3VhbCBib290IC1jIGVk
aXRvcg0KDQpvcHRpb25zICAgICAgICAgU09GVFVQREFURVMNCg0Kb3B0aW9u
cwkJRERCDQpvcHRpb25zCQlEREJfVU5BVFRFTkRFRA0KDQpjb25maWcJCWtl
cm5lbAlyb290IG9uIGRhMA0KDQpjb250cm9sbGVyCWlzYTANCiNjb250cm9s
bGVyCWVpc2EwDQpjb250cm9sbGVyCXBjaTANCg0KY29udHJvbGxlciAgICAg
IHBucDANCg0KI2NvbnRyb2xsZXIgICAgICBzbmQwDQojZGV2aWNlIHNiMCAg
ICAgIGF0IGlzYT8gcG9ydCAweDIyMCBpcnEgNSBkcnEgMSB2ZWN0b3Igc2Jp
bnRyDQojZGV2aWNlIHNieHZpMCAgIGF0IGlzYT8gZHJxIDUNCiNkZXZpY2Ug
c2JtaWRpMCAgYXQgaXNhPyBwb3J0IDB4MzMwDQoNCmNvbnRyb2xsZXIJZmRj
MAlhdCBpc2E/IHBvcnQgIklPX0ZEMSIgYmlvIGlycSA2IGRycSAyIHZlY3Rv
ciBmZGludHINCmRpc2sJCWZkMAlhdCBmZGMwIGRyaXZlIDANCiNkaXNrCQlm
ZDEJYXQgZmRjMCBkcml2ZSAxDQojIFVubGVzcyB5b3Uga25vdyB2ZXJ5IHdl
bGwgd2hhdCB5b3UncmUgZG9pbmcsIGxlYXZlIGZ0MCBhdCBkcml2ZSAyLCBv
cg0KIyByZW1vdmUgdGhlIGxpbmUgZW50aXJlbHkgaWYgeW91IGRvbid0IG5l
ZWQgaXQuICBUcnlpbmcgdG8gY29uZmlndXJlDQojIGl0IG9uIGFub3RoZXIg
dW5pdCBtaWdodCBjYXVzZSBzdXJwcmlzZXMsIHNlZSBQUiBrZXJuLzcxNzYu
DQojdGFwZQkJZnQwCWF0IGZkYzAgZHJpdmUgMg0KDQojb3B0aW9ucwkJIkNN
RDY0MCIJIyB3b3JrIGFyb3VuZCBDTUQ2NDAgY2hpcCBkZWZpY2llbmN5DQoj
Y29udHJvbGxlcgl3ZGMwCWF0IGlzYT8gcG9ydCAiSU9fV0QxIiBiaW8gaXJx
IDE0IHZlY3RvciB3ZGludHINCiNkaXNrCQl3ZDAJYXQgd2RjMCBkcml2ZSAw
DQojZGlzawkJd2QxCWF0IHdkYzAgZHJpdmUgMQ0KDQojY29udHJvbGxlcgl3
ZGMxCWF0IGlzYT8gcG9ydCAiSU9fV0QyIiBiaW8gaXJxIDE1IHZlY3RvciB3
ZGludHINCiNkaXNrCQl3ZDIJYXQgd2RjMSBkcml2ZSAwDQojZGlzawkJd2Qz
CWF0IHdkYzEgZHJpdmUgMQ0KDQojb3B0aW9ucwkJQVRBUEkJCSNFbmFibGUg
QVRBUEkgc3VwcG9ydCBmb3IgSURFIGJ1cw0KI29wdGlvbnMJCUFUQVBJX1NU
QVRJQwkjRG9uJ3QgZG8gaXQgYXMgYW4gTEtNDQojZGV2aWNlCQl3Y2QwCQkj
SURFIENELVJPTQ0KI2RldmljZQkJd2ZkMAkJI0lERSBGbG9wcHkgKGUuZy4g
TFMtMTIwKQ0KDQojIEEgc2luZ2xlIGVudHJ5IGZvciBhbnkgb2YgdGhlc2Ug
Y29udHJvbGxlcnMgKG5jciwgYWhiLCBhaGMsIGFtZCkgaXMNCiMgc3VmZmlj
aWVudCBmb3IgYW55IG51bWJlciBvZiBpbnN0YWxsZWQgZGV2aWNlcy4NCmNv
bnRyb2xsZXIJbmNyMA0KI2NvbnRyb2xsZXIJYW1kMA0KI2NvbnRyb2xsZXIJ
YWhiMA0KI2NvbnRyb2xsZXIJYWhjMA0KI2NvbnRyb2xsZXIJaXNwMA0KDQoj
IFRoaXMgY29udHJvbGxlciBvZmZlcnMgYSBudW1iZXIgb2YgY29uZmlndXJh
dGlvbiBvcHRpb25zLCB0b28gbWFueSB0bw0KIyBkb2N1bWVudCBoZXJlICAt
IHNlZSB0aGUgTElOVCBmaWxlIGluIHRoaXMgZGlyZWN0b3J5IGFuZCBsb29r
IHVwIHRoZQ0KIyBkcHQwIGVudHJ5IHRoZXJlIGZvciBtdWNoIGZ1bGxlciBk
b2N1bWVudGF0aW9uIG9uIHRoaXMuICBUaGUgb3B0aW9ucw0KIyBsaW5lIGZv
bGxvd2luZyBkcHQwIGhlcmUgaXMgYWxzbyBjdXJyZW50bHkgYSAqcmVxdWly
ZWQqIG9wdGlvbiBmb3IgaXQuDQojIGNvbnRyb2xsZXIgICAgICBkcHQwDQoj
IG9wdGlvbnMgRFBUX01FQVNVUkVfUEVSRk9STUFOQ0UNCg0KI2NvbnRyb2xs
ZXIJYWR2MAlhdCBpc2E/IHBvcnQgPyBjYW0gaXJxID8NCiNjb250cm9sbGVy
CWJ0MAlhdCBpc2E/IHBvcnQgPyBjYW0gaXJxID8NCiNjb250cm9sbGVyCWFo
YTAJYXQgaXNhPyBwb3J0ID8gY2FtIGlycSA/DQojY29udHJvbGxlcgl1aGEw
CWF0IGlzYT8gcG9ydCAiSU9fVUhBMCIgYmlvIGlycSA/IGRycSA1IHZlY3Rv
ciB1aGFpbnRyDQojY29udHJvbGxlcglhaWMwCWF0IGlzYT8gcG9ydCAweDM0
MCBiaW8gaXJxIDExIHZlY3RvciBhaWNpbnRyDQojY29udHJvbGxlcgluY2Ew
CWF0IGlzYT8gcG9ydCAweDFmODggYmlvIGlycSAxMCB2ZWN0b3IgbmNhaW50
cg0KI2NvbnRyb2xsZXIJbmNhMQlhdCBpc2E/IHBvcnQgMHgzNTAgYmlvIGly
cSA1IHZlY3RvciBuY2FpbnRyDQojY29udHJvbGxlcglzZWEwCWF0IGlzYT8g
YmlvIGlycSA1IGlvbWVtIDB4YzgwMDAgaW9zaXogMHgyMDAwIHZlY3RvciBz
ZWFpbnRyDQoNCmNvbnRyb2xsZXIJc2NidXMwDQoNCmRldmljZQkJZGEwDQoN
CmRldmljZSAgICAgICAgICBvZDAgICAgICNTZWUgTElOVCBmb3IgcG9zc2li
bGUgYG9kJyBvcHRpb25zLg0KI29wdGlvbnMgICAgICAgICBPRF9CT0dVU19O
T1RfUkVBRFkgICAgICANCg0KZGV2aWNlCQlzYTANCg0KZGV2aWNlCQlwYXNz
MA0KDQpkZXZpY2UJCWNkMAkjT25seSBuZWVkIG9uZSBvZiB0aGVzZSwgdGhl
IGNvZGUgZHluYW1pY2FsbHkgZ3Jvd3MNCg0KI2RldmljZQkJd3QwCWF0IGlz
YT8gcG9ydCAweDMwMCBiaW8gaXJxIDUgZHJxIDEgdmVjdG9yIHd0aW50cg0K
I2RldmljZQkJbWNkMAlhdCBpc2E/IHBvcnQgMHgzMDAgYmlvIGlycSAxMCB2
ZWN0b3IgbWNkaW50cg0KDQojY29udHJvbGxlcgltYXRjZDAJYXQgaXNhPyBw
b3J0IDB4MjMwIGJpbw0KDQojZGV2aWNlCQlzY2QwCWF0IGlzYT8gcG9ydCAw
eDIzMCBiaW8NCg0KIyBhdGtiZGMwIGNvbnRyb2xscyBib3RoIHRoZSBrZXli
b2FyZCBhbmQgdGhlIFBTLzIgbW91c2UNCmNvbnRyb2xsZXIJYXRrYmRjMAlh
dCBpc2E/IHBvcnQgSU9fS0JEIHR0eQ0KZGV2aWNlCQlhdGtiZDAJYXQgaXNh
PyB0dHkgaXJxIDENCmRldmljZQkJcHNtMAlhdCBpc2E/IHR0eSBpcnEgMTIN
Cg0KZGV2aWNlCQl2Z2EwCWF0IGlzYT8gcG9ydCA/IGNvbmZsaWN0cw0KDQoj
IHNwbGFzaCBzY3JlZW4vc2NyZWVuIHNhdmVyDQpwc2V1ZG8tZGV2aWNlCXNw
bGFzaA0KDQojIHN5c2NvbnMgaXMgdGhlIGRlZmF1bHQgY29uc29sZSBkcml2
ZXIsIHJlc2VtYmxpbmcgYW4gU0NPIGNvbnNvbGUNCmRldmljZQkJc2MwCWF0
IGlzYT8gdHR5DQojIEVuYWJsZSB0aGlzIGFuZCBQQ1ZUX0ZSRUVCU0QgZm9y
IHBjdnQgdnQyMjAgY29tcGF0aWJsZSBjb25zb2xlIGRyaXZlcg0KI2Rldmlj
ZQkJdnQwCWF0IGlzYT8gdHR5DQpvcHRpb25zCQlYU0VSVkVSCQkJIyBzdXBw
b3J0IGZvciBYIHNlcnZlcg0KI29wdGlvbnMJCUZBVF9DVVJTT1IJCSMgc3Rh
cnQgd2l0aCBibG9jayBjdXJzb3INCiMgSWYgeW91IGhhdmUgYSBUaGlua1BB
RCwgdW5jb21tZW50IHRoaXMgYWxvbmcgd2l0aCB0aGUgcmVzdCBvZiB0aGUg
UENWVCBsaW5lcw0KI29wdGlvbnMJCVBDVlRfU0NBTlNFVD0yCQkjIElCTSBr
ZXlib2FyZHMgYXJlIG5vbi1zdGQNCg0KZGV2aWNlCQlucHgwCWF0IGlzYT8g
cG9ydCAiSU9fTlBYIiBpcnEgMTMgdmVjdG9yIG5weGludHINCg0KIw0KIyBM
YXB0b3Agc3VwcG9ydCAoc2VlIExJTlQgZm9yIG1vcmUgb3B0aW9ucykNCiMN
CiNkZXZpY2UJCWFwbTAgICAgYXQgaXNhPwlkaXNhYmxlCWZsYWdzIDB4MzEg
IyBBZHZhbmNlZCBQb3dlciBNYW5hZ2VtZW50DQoNCiMgUENDQVJEIChQQ01D
SUEpIHN1cHBvcnQNCiNjb250cm9sbGVyCWNhcmQwDQojZGV2aWNlCQlwY2lj
MAlhdCBjYXJkPw0KI2RldmljZQkJcGNpYzEJYXQgY2FyZD8NCg0KZGV2aWNl
CQlzaW8wCWF0IGlzYT8gcG9ydCAiSU9fQ09NMSIgZmxhZ3MgMHgxMCB0dHkg
aXJxIDQgdmVjdG9yIHNpb2ludHINCmRldmljZQkJc2lvMQlhdCBpc2E/IHBv
cnQgIklPX0NPTTIiIHR0eSBpcnEgMyB2ZWN0b3Igc2lvaW50cg0KZGV2aWNl
CQlzaW8yCWF0IGlzYT8gZGlzYWJsZSBwb3J0ICJJT19DT00zIiB0dHkgaXJx
IDUgdmVjdG9yIHNpb2ludHINCmRldmljZQkJc2lvMwlhdCBpc2E/IGRpc2Fi
bGUgcG9ydCAiSU9fQ09NNCIgdHR5IGlycSA5IHZlY3RvciBzaW9pbnRyDQoN
CiNkZXZpY2UJCWxwdDAJYXQgaXNhPyBwb3J0PyB0dHkgaXJxIDcgdmVjdG9y
IGxwdGludHINCiNkZXZpY2UJCWxwdDEJYXQgaXNhPyBwb3J0PyB0dHkNCiNk
ZXZpY2UJCW1zZTAJYXQgaXNhPyBwb3J0IDB4MjNjIHR0eSBpcnEgNSB2ZWN0
b3IgbXNlaW50cg0KDQojZGV2aWNlCQlwc20wCWF0IGlzYT8gcG9ydCAiSU9f
S0JEIiBjb25mbGljdHMgdHR5IGlycSAxMiB2ZWN0b3IgcHNtaW50cg0KDQoj
IE9yZGVyIGlzIGltcG9ydGFudCBoZXJlIGR1ZSB0byBpbnRydXNpdmUgcHJv
YmVzLCBkbyAqbm90KiBhbHBoYWJldGl6ZQ0KIyB0aGlzIGxpc3Qgb2YgbmV0
d29yayBpbnRlcmZhY2VzIHVudGlsIHRoZSBwcm9iZXMgaGF2ZSBiZWVuIGZp
eGVkLg0KIyBSaWdodCBub3cgaXQgYXBwZWFycyB0aGF0IHRoZSBpZTAgbXVz
dCBiZSBwcm9iZWQgYmVmb3JlIGVwMC4gU2VlDQojIHJldmlzaW9uIDEuMjAg
b2YgdGhpcyBmaWxlLg0KI2RldmljZSBkZTANCmRldmljZSBmeHAwDQojZGV2
aWNlIHRsMA0KI2RldmljZSB0eDANCiNkZXZpY2UgdngwDQojZGV2aWNlIHhs
MA0KDQpkZXZpY2Ugb2x0cjAgYXQgaXNhPyANCmRldmljZSB0b2swIGF0IGlz
YT8gcG9ydCAweGEyMCBuZXQgaXJxIDcgaW9tZW0gMHhkODAwMA0KI2Rldmlj
ZSBlZDAgYXQgaXNhPyBwb3J0IDB4MjgwIG5ldCBpcnEgMTAgaW9tZW0gMHhk
ODAwMCB2ZWN0b3IgZWRpbnRyDQojZGV2aWNlIGllMCBhdCBpc2E/IHBvcnQg
MHgzMDAgbmV0IGlycSAxMCBpb21lbSAweGQwMDAwIHZlY3RvciBpZWludHIN
CiNkZXZpY2UgZXAwIGF0IGlzYT8gcG9ydCAweDMwMCBuZXQgaXJxIDEwIHZl
Y3RvciBlcGludHINCiNkZXZpY2UgZXgwIGF0IGlzYT8gcG9ydD8gbmV0IGly
cT8gdmVjdG9yIGV4aW50cg0KI2RldmljZSBmZTAgYXQgaXNhPyBwb3J0IDB4
MzAwIG5ldCBpcnEgPyB2ZWN0b3IgZmVpbnRyDQojZGV2aWNlIGxlMCBhdCBp
c2E/IHBvcnQgMHgzMDAgbmV0IGlycSA1IGlvbWVtIDB4ZDAwMDAgdmVjdG9y
IGxlX2ludHINCiNkZXZpY2UgbG5jMCBhdCBpc2E/IHBvcnQgMHgyODAgbmV0
IGlycSAxMCBkcnEgMCB2ZWN0b3IgbG5jaW50cg0KI2RldmljZSB6ZTAgYXQg
aXNhPyBwb3J0IDB4MzAwIG5ldCBpcnEgMTAgaW9tZW0gMHhkODAwMCB2ZWN0
b3IgemVpbnRyDQojZGV2aWNlIHpwMCBhdCBpc2E/IHBvcnQgMHgzMDAgbmV0
IGlycSAxMCBpb21lbSAweGQ4MDAwIHZlY3RvciB6cGludHINCiNkZXZpY2Ug
Y3MwIGF0IGlzYT8gcG9ydCAweDMwMCBuZXQgaXJxID8gdmVjdG9yIGNzaW50
cg0KDQpwc2V1ZG8tZGV2aWNlCWxvb3ANCnBzZXVkby1kZXZpY2UJZXRoZXIN
CnBzZXVkby1kZXZpY2UJdG9rZW4NCiNwc2V1ZG8tZGV2aWNlCXNsCTENCiNw
c2V1ZG8tZGV2aWNlCXBwcAkxDQojcHNldWRvLWRldmljZQl0dW4JMQ0KcHNl
dWRvLWRldmljZSAgIGJwZmlsdGVyIDQNCnBzZXVkby1kZXZpY2UJcHR5CTY0
DQpwc2V1ZG8tZGV2aWNlICAgc25wICAgICA0DQpwc2V1ZG8tZGV2aWNlCWd6
aXAJCSMgRXhlYyBnemlwcGVkIGEub3V0J3MNCg0KIyBLVFJBQ0UgZW5hYmxl
cyB0aGUgc3lzdGVtLWNhbGwgdHJhY2luZyBmYWNpbGl0eSBrdHJhY2UoMiku
DQojIFRoaXMgYWRkcyA0IEtCIGJsb2F0IHRvIHlvdXIga2VybmVsLCBhbmQg
c2xpZ2h0bHkgaW5jcmVhc2VzDQojIHRoZSBjb3N0cyBvZiBlYWNoIHN5c2Nh
bGwuDQpvcHRpb25zCQlLVFJBQ0UJCSNrZXJuZWwgdHJhY2luZw0KDQojIFRo
aXMgcHJvdmlkZXMgc3VwcG9ydCBmb3IgU3lzdGVtIFYgc2hhcmVkIG1lbW9y
eS4NCiMNCm9wdGlvbnMJCVNZU1ZTSE0NCm9wdGlvbnMgICAgICAgICBTWVNW
U0VNDQpvcHRpb25zICAgICAgICAgU1lTVk1TRw0K
--0-1628243425-918586018=:14147--

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.05.9902091338150.14147-300000>