<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "http://bugs.gentoo.org/bugzilla.dtd">

<bugzilla version="2.22.7"
          urlbase="http://bugs.gentoo.org/"
          maintainer="bugzilla@gentoo.org"
>

    <bug>
          <bug_id>54569</bug_id>
          
          <creation_ts>2004-06-20 15:49 0000</creation_ts>
          <short_desc>museseq-0.6.2 emerges ok on amd64 but hangs when executed</short_desc>
          <delta_ts>2004-07-11 23:47:45 0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>Gentoo Linux</product>
          <component>Applications</component>
          <version>unspecified</version>
          <rep_platform>AMD64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>fvdpol@gentoo.org</reporter>
          <assigned_to>amd64@gentoo.org</assigned_to>
          <cc>sound@gentoo.org</cc>

      

      
          <long_desc isprivate="0">
            <who>fvdpol@gentoo.org</who>
            <bug_when>2004-06-20 15:49:12 0000</bug_when>
            <thetext>the museseq sequencer emerges fine on both mu x86 and amd64 machines, but when executed on my amd64 machine it hangs.



Reproducible: Always
Steps to Reproduce:
1. muse
2. &lt;hangs...&gt;
3. ps -C muse -l -F
F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN   RSS PSR STIME TTY          TIME CMD
4 D frank    24144 30831  0  77   0 - 13594 down_w 9596   0 Jun20 ?        00:00:00 muse
4 D frank    21678 24974  0  77   0 - 12792 down_w 9448   0 00:31 pts/15   00:00:00 muse

kill -9 fails are killing those processes :-(


Expected Results:  
working application (as it does on x86) 
 

Portage 2.0.51_pre10 (default-amd64-2004.0, gcc-3.3.3, 
glibc-2.3.4.20040605-r0, 2.6.5-gentoo) 
================================================================= 
System uname: 2.6.5-gentoo x86_64 4 
Gentoo Base System version 1.4.16 
ccache version 2.3 [enabled] 
Autoconf: sys-devel/autoconf-2.59-r4 
Automake: sys-devel/automake-1.8.5-r1 
Binutils: sys-devel/binutils-2.15.90.0.1.1-r3 
ACCEPT_KEYWORDS=&quot;amd64 ~amd64&quot; 
AUTOCLEAN=&quot;yes&quot; 
CFLAGS=&quot;-pipe -O2&quot; 
CHOST=&quot;x86_64-pc-linux-gnu&quot; 
COMPILER=&quot;gcc3&quot; 
CONFIG_PROTECT=&quot;/etc /usr/X11R6/lib/X11/xkb /usr/kde/2/share/config /usr/kde/3.2/share/config /usr/kde/3/share/config /usr/share/config /usr/share/texmf/dvipdfm/config/ /usr/share/texmf/dvips/config/ /usr/share/texmf/tex/generic/config/ /usr/share/texmf/tex/platex/config/ /usr/share/texmf/xdvi/ /var/qmail/control&quot; 
CONFIG_PROTECT_MASK=&quot;/etc/gconf /etc/terminfo /etc/env.d&quot; 
CXXFLAGS=&quot;-pipe -O2&quot; 
DISTDIR=&quot;/usr/portage/distfiles&quot; 
FEATURES=&quot;autoaddcvs ccache cvs digest noauto noclean sandbox usersandbox&quot; 
GENTOO_MIRRORS=&quot;http://ftp.easynet.nl/mirror/gentoo/ 
ftp://ftp.snt.utwente.nl/pub/os/linux/gentoo 
ftp://ftp.tiscali.nl/pub/mirror/gentoo&quot; 
MAKEOPTS=&quot;-j2&quot; 
PKGDIR=&quot;/usr/portage/packages&quot; 
PORTAGE_TMPDIR=&quot;/var/tmp&quot; 
PORTDIR=&quot;/usr/portage&quot; 
PORTDIR_OVERLAY=&quot;/usr/local/portage&quot; 
SYNC=&quot;rsync://rsync.nl.gentoo.org/gentoo-portage&quot; 
USE=&quot;X aalib alsa amd64 apm arts audiofile avi berkdb caps cdr crypt cups doc 
dvd dvdr encode esd foomaticdb gd gdbm gif gnome gpm gtk gtk2 guile imlib jack 
jack-tmpfs java jpeg kde ladcca libg++ libwww mbox mikmod motif mpeg mysql 
ncurses nls nogcj oggvorbis opengl oss pam pdflib perl png ppds python qt 
quicktime readline sdl slang slp spell ssl tcltk tcpd tetex truetype xml2 xmms 
xv zlib&quot;</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>morfic@gentoo.org</who>
            <bug_when>2004-06-27 11:42:42 0000</bug_when>
            <thetext>can you try this ebuild: dev.gentoo.org/~morfic/museseq-0.6.2.ebuild with gcc-3.4.0?
it builds and executes on x86 compiled with gcc-3.4.0, im not sure i have a mididevice to play with it (ok, no /dev/sequencer, just verified)
i can edit, save, import, export, but dont know enough about it
let me know how this works in amd64 and the more feedback you can provide the better

thank you in advance for your efforts
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>diemumiee@gmx.de</who>
            <bug_when>2004-06-28 17:25:28 0000</bug_when>
            <thetext>Created an attachment (id=34367)
general int-&gt;void* patch

Just hacked my way through the sources
That patch changes that int usage to store pointers weirdness into proper
void*.
I hope that helps your problems. I haven&apos;t sent that file upstream.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>diemumiee@gmx.de</who>
            <bug_when>2004-06-28 18:27:01 0000</bug_when>
            <thetext>You can use the patch for 0.63 too. 
The only difference between these two source codes is that 
this part of the patch has been applied by the developers.
diff -Nur muse-0.6.2/synti/synth.cpp muse-0.6.2-patched/synti/synth.cpp
--- muse-0.6.2/synti/synth.cpp  2003-10-29 10:06:00.000000000 +0000
+++ muse-0.6.2-patched/synti/synth.cpp  2004-06-28 23:26:35.000000000 +0000
@@ -334,7 +334,7 @@
             nsynthis = list-&gt;count();
             if (debugMsg)
                   printf(&quot;%d soft synth found\n&quot;, nsynthis);
-            synthis  = new (Synth*)[nsynthis];
+            synthis  = new Synth*[nsynthis];
             QFileInfoListIterator it(*list);
             QFileInfo* fi;
             int i = 0;

So remove that one from the patch and you will be fine on that version too</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>diemumiee@gmx.de</who>
            <bug_when>2004-06-28 18:33:03 0000</bug_when>
            <thetext>Oh I seem to have missed some parts of the museseq source code.. by forgetting to add some of its flags. It is a starting point at least :). Have fun.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>lv@gentoo.org</who>
            <bug_when>2004-06-29 05:20:40 0000</bug_when>
            <thetext>it builds, and segfaults right away... instead of waiting for me to press play now. ^_^

#0  0x0000002f3113f8b8 in _int_free () from /lib/libc.so.6
#1  0x0000002f3113e3fa in free () from /lib/libc.so.6
#2  0x0000002f30d84a9e in operator delete(void*) (ptr=0x736000)
    at ../../../../gcc-3.4.1-20040625/libstdc++-v3/libsupc++/del_op.cc:40
#3  0x0000000000471631 in ~Pool (this=0x736000) at memory.cpp:37
#4  0x0000002f31106a15 in exit () from /lib/libc.so.6
#5  0x000000000046ea1a in MidiThread::start() (this=0xa4d350)
    at midithread.cpp:421
#6  0x000000000045f855 in Sequencer::start() (this=0xa4d2e0) at seq.cpp:155
#7  0x0000000000448a4c in MusE::loadProjectFile(QString const&amp;) (
    this=0x8eb310, name=@0x75597fc950) at app.cpp:724
#8  0x000000000044d473 in MusE (this=0x8eb310, argc=1, argv=0x75597fcdc0)
    at app.cpp:641
#9  0x0000000000452e85 in main (argc=1, argv=0x75597fcdb8) at app.cpp:1815
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>lv@gentoo.org</who>
            <bug_when>2004-06-29 06:00:21 0000</bug_when>
            <thetext>also, i cant test museseq 0.6.3 without first fixing the fact that it doesnt compile. :/
this dude needs an amd64 box. :)

g++ -DHAVE_CONFIG_H -I. -I. -I.. -g -fno-exceptions -Wall -W -D_GNU_SOURCE -D_REENTRANT -DQT_CLEAN_NAMESPACE -DQT_NO_COMPAT -I.. -I../widgets -I/usr/qt/3/include -O2 -march=athlon64 -g3 -pipe -MT libdriver_la-mididev.lo -MD -MP -MF .deps/libdriver_la-mididev.Tpo -c mididev.cpp -o libdriver_la-mididev.o &gt;/dev/null 2&gt;&amp;1
alsaaudio.cpp: In function `void setParams(snd_pcm_t*, bool)&apos;:
alsaaudio.cpp:104: error: invalid conversion from `unsigned int*&apos; to `unsigned int&apos;
alsaaudio.cpp:104: error:   initializing argument 3 of `unsigned int snd_pcm_hw_params_set_rate_near(snd_pcm_t*, snd_pcm_hw_params_t*, unsigned int, int*)&apos;
alsaaudio.cpp:120: error: invalid conversion from `snd_pcm_uframes_t*&apos; to `snd_pcm_uframes_t&apos;
alsaaudio.cpp:120: error:   initializing argument 3 of `snd_pcm_uframes_t snd_pcm_hw_params_set_buffer_size_near(snd_pcm_t*, snd_pcm_hw_params_t*, snd_pcm_uframes_t)&apos;
alsaaudio.cpp:126: warning: int format, different type arg (arg 3)
alsaaudio.cpp:131: error: invalid conversion from `snd_pcm_uframes_t*&apos; to `snd_pcm_uframes_t&apos;
alsaaudio.cpp:131: error:   initializing argument 3 of `snd_pcm_uframes_t snd_pcm_hw_params_set_period_size_near(snd_pcm_t*, snd_pcm_hw_params_t*, snd_pcm_uframes_t, int*)&apos;
alsaaudio.cpp:137: warning: int format, different type arg (arg 3)
alsaaudio.cpp: In member function `virtual void AlsaAudioDevice::write(int, long unsigned int, float**)&apos;:
alsaaudio.cpp:290: warning: cast from pointer to integer of different size
alsaaudio.cpp:290: warning: cast from pointer to integer of different size
make[3]: *** [libdriver_la-alsaaudio.lo] Error 1
make[3]: *** Waiting for unfinished jobs....
mv -f .libs/libdriver_la-mididev.lo libdriver_la-mididev.lo
make[3]: Leaving directory `/var/tmp/portage/museseq-0.6.3/work/muse-0.6.3/driver&apos;
make[2]: *** [all] Error 2
make[2]: Leaving directory `/var/tmp/portage/museseq-0.6.3/work/muse-0.6.3/driver&apos;
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/var/tmp/portage/museseq-0.6.3/work/muse-0.6.3&apos;
make: *** [all] Error 2

!!! ERROR: media-sound/museseq-0.6.3 failed.
!!! Function src_compile, Line 65, Exitcode 2
!!! (no error message)

*sigh*... pointers and ints :/</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>diemumiee@gmx.de</who>
            <bug_when>2004-06-29 06:28:31 0000</bug_when>
            <thetext>I get this one:

#0  0x0000002a97ca38b8 in _int_free () from /lib/libc.so.6
#1  0x0000002a97ca23fa in free () from /lib/libc.so.6
#2  0x0000002a978e8b5e in operator delete(void*) () from /usr/lib/gcc-lib/x86_64-pc-linux-gnu/3.4.0/libstdc++.so.6
#3  0x0000000000470681 in ~Pool (this=0x72f7e0) at memory.cpp:37
#4  0x0000002a97c6aa15 in exit () from /lib/libc.so.6
#5  0x000000000043c9ef in std::_Rb_tree&lt;int, std::pair&lt;int const, MidiPlayEvent&gt;, std::_Select1st&lt;std::pair&lt;int const, MidiPlayEvent&gt; &gt;, std::less&lt;int&gt;, RTalloc&lt;MidiPlayEvent&gt; &gt;::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair&lt;int const, MidiPlayEvent&gt; const&amp;) (this=0x72f7e0, __x=0x72f7f0, __p=0x0, __v=@0x1010) at memory.h:54
#6  0x000000000043ca27 in std::_Rb_tree&lt;int, std::pair&lt;int const, MidiPlayEvent&gt;, std::_Select1st&lt;std::pair&lt;int const, MidiPlayEvent&gt; &gt;, std::less&lt;int&gt;, RTalloc&lt;MidiPlayEvent&gt; &gt;::insert_equal(std::pair&lt;int const, MidiPlayEvent&gt; const&amp;) (this=0x72f7e0,
    __v=@0x1010) at stl_tree.h:808
#7  0x000000000046f8f3 in MidiThread::nextEvents(int, int) (this=0x940220, stick=0, etick=38) at stl_multimap.h:349
#8  0x000000000046ffb0 in MidiThread::processTimerTick() (this=0x940220) at midithread.cpp:1172
#9  0x0000000000428516 in Thread::loop() (this=0x940270) at stl_list.h:134
#10 0x0000000000428599 in loop (mops=0x72f7e0) at thread.cpp:34
#11 0x0000002a97582e12 in pthread_start_thread () from /lib/libpthread.so.0
#12 0x0000002a97582eb3 in pthread_start_thread_event () from /lib/libpthread.so.0
#13 0x0000002a97cef793 in thread_start () from /lib/libc.so.6

</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>diemumiee@gmx.de</who>
            <bug_when>2004-06-29 12:49:42 0000</bug_when>
            <thetext>Created an attachment (id=34440)
Memory patch 

Fixes the pool alocator in memory.cpp memory.h</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>diemumiee@gmx.de</who>
            <bug_when>2004-06-29 12:50:31 0000</bug_when>
            <thetext>It plays midi-files with both patches applied.. </thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>lv@gentoo.org</who>
            <bug_when>2004-06-29 13:45:51 0000</bug_when>
            <thetext>yaaaay! no more segfaults. =D

eradicator/fvdpol - i&apos;d suggest rolling these into two patches. the &quot;synthis  = new Synth*[nsynthis];&quot; part should be applied unconditionally, and everything else when on 64bit. plus this allows us to not apply the synthis part for 0.6.3, which apparently already has this.

should this bug be closed or kept open for fixing the further issues present in 0.6.3 with alsa?

Andreas - you rock :)</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>diemumiee@gmx.de</who>
            <bug_when>2004-06-29 14:36:35 0000</bug_when>
            <thetext>Created an attachment (id=34448)
new int-&gt;void* patch

i accidently used long in the signal name. 
this patch uses correct SIGNAL expressions. 
should fix a lot of badness (hopefully)
*compiling*</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>fvdpol@gentoo.org</who>
            <bug_when>2004-07-11 15:33:55 0000</bug_when>
            <thetext>Andreas, thanks for your big help here!

I found another bug in the event routing for tracks that were using the drummap. The applications seems to be working now, both on ~x86 and ~amd64; I did some extensive testing with playback and recording using hardware MIDI i/o (USB Midisport 4x4 + some gear) and alsaseq/jack softsynths. 

Travis, can you confirm if it now works for you too?

</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>lv@gentoo.org</who>
            <bug_when>2004-07-11 19:25:06 0000</bug_when>
            <thetext>good to go. :)</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>fvdpol@gentoo.org</who>
            <bug_when>2004-07-11 23:47:45 0000</bug_when>
            <thetext>Thanks for testing</thetext>
          </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34367</attachid>
            <date>2004-06-28 17:25 0000</date>
            <desc>general int-&gt;void* patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <data encoding="base64">ZGlmZiAtTnVyIG11c2UtMC42LjIvYXBwLmNwcCBtdXNlLTAuNi4yLXBhdGNoZWQvYXBwLmNwcAot
LS0gbXVzZS0wLjYuMi9hcHAuY3BwCTIwMDMtMTEtMDEgMTk6NDk6MDYuMDAwMDAwMDAwICswMDAw
CisrKyBtdXNlLTAuNi4yLXBhdGNoZWQvYXBwLmNwcAkyMDA0LTA2LTI5IDAwOjA1OjM1LjcxMjUy
NTM4MSArMDAwMApAQCAtMTE5MCw3ICsxMTkwLDcgQEAKICAgICAgICAgICAgIHNvbmctPnNldE5h
bWUocHJvamVjdC5iYXNlTmFtZSgpKTsKICAgICAgIHNldENhcHRpb24oUVN0cmluZygiTXVzRTog
U29uZzogIikgKyBwcm9qZWN0LmJhc2VOYW1lKCkpOwogICAgICAgYXJyYW5nZXItPnJlc2V0KCk7
Ci0gICAgICBhcnJhbmdlci0+c2V0TW9kZShpbnQoc29uZy0+bXR5cGUoKSkpOworICAgICAgYXJy
YW5nZXItPnNldE1vZGUobG9uZyhzb25nLT5tdHlwZSgpKSk7CiAgICAgICBuZXdTb25nRmxhZyA9
IHRydWU7CiAgICAgICBzb25nLT5kaXJ0eSA9IGZhbHNlOwogCkBAIC0xMjU3LDggKzEyNTcsOCBA
QAogICAgICAgewogICAgICAgUGlhbm9Sb2xsKiBwaWFub3JvbGwgPSBuZXcgUGlhbm9Sb2xsKHBs
LCB0aGlzKTsKICAgICAgIHBpYW5vcm9sbC0+c2hvdygpOwotICAgICAgdG9wbGV2ZWxzLnB1c2hf
YmFjayhUb3BsZXZlbChUb3BsZXZlbDo6UElBTk9fUk9MTCwgaW50KHBpYW5vcm9sbCksIHBpYW5v
cm9sbCkpOwotICAgICAgY29ubmVjdChwaWFub3JvbGwsIFNJR05BTChkZWxldGVkKGludCkpLCBT
TE9UKHRvcGxldmVsRGVsZXRlZChpbnQpKSk7CisgICAgICB0b3BsZXZlbHMucHVzaF9iYWNrKFRv
cGxldmVsKCBUb3BsZXZlbDo6UElBTk9fUk9MTCwgcGlhbm9yb2xsLCBwaWFub3JvbGwpKTsKKyAg
ICAgIGNvbm5lY3QocGlhbm9yb2xsLCBTSUdOQUwoZGVsZXRlZCh2b2lkKikpLCBTTE9UKHRvcGxl
dmVsRGVsZXRlZChsb25nKSkpOwogICAgICAgfQogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTI3Nyw4ICsxMjc3LDggQEAK
ICAgICAgIHsKICAgICAgIFNjb3JlKiBzY29yZUVkaXRvciA9IG5ldyBTY29yZShwbCk7CiAgICAg
ICBzY29yZUVkaXRvci0+c2hvdygpOwotICAgICAgdG9wbGV2ZWxzLnB1c2hfYmFjayhUb3BsZXZl
bChUb3BsZXZlbDo6Tk9URU4sIGludChzY29yZUVkaXRvciksIHNjb3JlRWRpdG9yKSk7Ci0gICAg
ICBjb25uZWN0KHNjb3JlRWRpdG9yLCBTSUdOQUwoZGVsZXRlZChpbnQpKSwgU0xPVCh0b3BsZXZl
bERlbGV0ZWQoaW50KSkpOworICAgICAgdG9wbGV2ZWxzLnB1c2hfYmFjayhUb3BsZXZlbChUb3Bs
ZXZlbDo6Tk9URU4sIHNjb3JlRWRpdG9yLCBzY29yZUVkaXRvcikpOworICAgICAgY29ubmVjdChz
Y29yZUVkaXRvciwgU0lHTkFMKGRlbGV0ZWQodm9pZCopKSwgU0xPVCh0b3BsZXZlbERlbGV0ZWQo
bG9uZykpKTsKICAgICAgIH0KIAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTEyOTcsOCArMTI5Nyw4IEBACiAgICAgICB7CiAg
ICAgICBMaXN0RWRpdCogbGlzdEVkaXRvciA9IG5ldyBMaXN0RWRpdChwbCk7CiAgICAgICBsaXN0
RWRpdG9yLT5zaG93KCk7Ci0gICAgICB0b3BsZXZlbHMucHVzaF9iYWNrKFRvcGxldmVsKFRvcGxl
dmVsOjpMSVNURSwgaW50KGxpc3RFZGl0b3IpLCBsaXN0RWRpdG9yKSk7Ci0gICAgICBjb25uZWN0
KGxpc3RFZGl0b3IsIFNJR05BTChkZWxldGVkKGludCkpLCBTTE9UKHRvcGxldmVsRGVsZXRlZChp
bnQpKSk7CisgICAgICB0b3BsZXZlbHMucHVzaF9iYWNrKFRvcGxldmVsKFRvcGxldmVsOjpMSVNU
RSwgbGlzdEVkaXRvciwgbGlzdEVkaXRvcikpOworICAgICAgY29ubmVjdChsaXN0RWRpdG9yLCBT
SUdOQUwoZGVsZXRlZCh2b2lkKikpLCBTTE9UKHRvcGxldmVsRGVsZXRlZChsb25nKSkpOwogICAg
ICAgfQogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpAQCAtMTMwOSw4ICsxMzA5LDggQEAKICAgICAgIHsKICAgICAgIE1hc3RlckVk
aXQqIG1hc3RlckVkaXRvciA9IG5ldyBNYXN0ZXJFZGl0KCk7CiAgICAgICBtYXN0ZXJFZGl0b3It
PnNob3coKTsKLSAgICAgIHRvcGxldmVscy5wdXNoX2JhY2soVG9wbGV2ZWwoVG9wbGV2ZWw6Ok1B
U1RFUiwgaW50KG1hc3RlckVkaXRvciksIG1hc3RlckVkaXRvcikpOwotICAgICAgY29ubmVjdCht
YXN0ZXJFZGl0b3IsIFNJR05BTChkZWxldGVkKGludCkpLCBTTE9UKHRvcGxldmVsRGVsZXRlZChp
bnQpKSk7CisgICAgICB0b3BsZXZlbHMucHVzaF9iYWNrKFRvcGxldmVsKFRvcGxldmVsOjpNQVNU
RVIsIG1hc3RlckVkaXRvciwgbWFzdGVyRWRpdG9yKSk7CisgICAgICBjb25uZWN0KG1hc3RlckVk
aXRvciwgU0lHTkFMKGRlbGV0ZWQodm9pZCopKSwgU0xPVCh0b3BsZXZlbERlbGV0ZWQobG9uZykp
KTsKICAgICAgIH0KIAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KQEAgLTEzMjEsOCArMTMyMSw4IEBACiAgICAgICB7CiAgICAgICBM
TWFzdGVyKiBsbWFzdGVyID0gbmV3IExNYXN0ZXIoKTsKICAgICAgIGxtYXN0ZXItPnNob3coKTsK
LSAgICAgIHRvcGxldmVscy5wdXNoX2JhY2soVG9wbGV2ZWwoVG9wbGV2ZWw6OkxNQVNURVIsIGlu
dChsbWFzdGVyKSwgbG1hc3RlcikpOwotICAgICAgY29ubmVjdChsbWFzdGVyLCBTSUdOQUwoZGVs
ZXRlZChpbnQpKSwgU0xPVCh0b3BsZXZlbERlbGV0ZWQoaW50KSkpOworICAgICAgdG9wbGV2ZWxz
LnB1c2hfYmFjayhUb3BsZXZlbChUb3BsZXZlbDo6TE1BU1RFUiwgbG1hc3RlciwgbG1hc3Rlcikp
OworICAgICAgY29ubmVjdChsbWFzdGVyLCBTSUdOQUwoZGVsZXRlZCh2b2lkKikpLCBTTE9UKHRv
cGxldmVsRGVsZXRlZChsb25nKSkpOwogICAgICAgfQogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTM0MSw4ICsxMzQxLDgg
QEAKICAgICAgIHsKICAgICAgIERydW1FZGl0KiBkcnVtRWRpdG9yID0gbmV3IERydW1FZGl0KHBs
LCB0aGlzKTsKICAgICAgIGRydW1FZGl0b3ItPnNob3coKTsKLSAgICAgIHRvcGxldmVscy5wdXNo
X2JhY2soVG9wbGV2ZWwoVG9wbGV2ZWw6OkRSVU0sIGludChkcnVtRWRpdG9yKSwgZHJ1bUVkaXRv
cikpOwotICAgICAgY29ubmVjdChkcnVtRWRpdG9yLCBTSUdOQUwoZGVsZXRlZChpbnQpKSwgU0xP
VCh0b3BsZXZlbERlbGV0ZWQoaW50KSkpOworICAgICAgdG9wbGV2ZWxzLnB1c2hfYmFjayhUb3Bs
ZXZlbChUb3BsZXZlbDo6RFJVTSwgZHJ1bUVkaXRvciwgZHJ1bUVkaXRvcikpOworICAgICAgY29u
bmVjdChkcnVtRWRpdG9yLCBTSUdOQUwoZGVsZXRlZCh2b2lkKikpLCBTTE9UKHRvcGxldmVsRGVs
ZXRlZChsb25nKSkpOwogICAgICAgfQogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTM2Myw4ICsxMzYzLDggQEAKICAgICAg
IHsKICAgICAgIFdhdmVFZGl0KiB3YXZlRWRpdG9yID0gbmV3IFdhdmVFZGl0KHBsKTsKICAgICAg
IHdhdmVFZGl0b3ItPnNob3coKTsKLSAgICAgIHRvcGxldmVscy5wdXNoX2JhY2soVG9wbGV2ZWwo
VG9wbGV2ZWw6OldBVkUsIGludCh3YXZlRWRpdG9yKSwgd2F2ZUVkaXRvcikpOwotICAgICAgY29u
bmVjdCh3YXZlRWRpdG9yLCBTSUdOQUwoZGVsZXRlZChpbnQpKSwgU0xPVCh0b3BsZXZlbERlbGV0
ZWQoaW50KSkpOworICAgICAgdG9wbGV2ZWxzLnB1c2hfYmFjayhUb3BsZXZlbChUb3BsZXZlbDo6
V0FWRSwgd2F2ZUVkaXRvciwgd2F2ZUVkaXRvcikpOworICAgICAgY29ubmVjdCh3YXZlRWRpdG9y
LCBTSUdOQUwoZGVsZXRlZCh2b2lkKikpLCBTTE9UKHRvcGxldmVsRGVsZXRlZChsb25nKSkpOwog
ICAgICAgfQogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQpAQCAtMTM3NSwxMCArMTM3NSwxMCBAQAogICAgICAgewogICAgICAgaWYg
KG1pZGlNaXhlciA9PSAwKSB7CiAgICAgICAgICAgICBtaWRpTWl4ZXIgPSBuZXcgTWl4ZXIoKTsK
LSAgICAgICAgICAgIHRvcGxldmVscy5wdXNoX2JhY2soVG9wbGV2ZWwoVG9wbGV2ZWw6Ok1fTUlY
RVIsIGludChtaWRpTWl4ZXIpLCBtaWRpTWl4ZXIpKTsKKyAgICAgICAgICAgIHRvcGxldmVscy5w
dXNoX2JhY2soVG9wbGV2ZWwoVG9wbGV2ZWw6Ok1fTUlYRVIsIG1pZGlNaXhlciwgbWlkaU1peGVy
KSk7CiAgICAgICAgICAgICBjb25uZWN0KG1pZGlNaXhlciwgU0lHTkFMKGN0cmxDaGFuZ2VkKGlu
dCxpbnQsaW50LGludCkpLCBzb25nLCBTTE9UKGN0cmxDaGFuZ2VkKGludCxpbnQsaW50LGludCkp
KTsKICAgICAgICAgICAgIGNvbm5lY3QobWlkaU1peGVyLCBTSUdOQUwobWFzdGVyVm9sQ2hhbmdl
ZChpbnQpKSwgc29uZywgU0xPVChtYXN0ZXJWb2xDaGFuZ2VkKGludCkpKTsKLSAgICAgICAgICAg
IGNvbm5lY3QobWlkaU1peGVyLCBTSUdOQUwoZGVsZXRlZChpbnQpKSwgU0xPVCh0b3BsZXZlbERl
bGV0ZWQoaW50KSkpOworICAgICAgICAgICAgY29ubmVjdChtaWRpTWl4ZXIsIFNJR05BTChkZWxl
dGVkKHZvaWQqKSksIFNMT1QodG9wbGV2ZWxEZWxldGVkKGxvbmcpKSk7CiAgICAgICAgICAgICB9
CiAgICAgICBtaWRpTWl4ZXItPnNob3coKTsKICAgICAgIG1lbnVfZnVuY3Rpb25zLT5zZXRJdGVt
Q2hlY2tlZChtaWRpZDEsIHRydWUpOwpAQCAtMTQwMSw4ICsxNDAxLDggQEAKICAgICAgIHsKICAg
ICAgIGlmIChtYXJrZXJWaWV3ID09IDApIHsKICAgICAgICAgICAgIG1hcmtlclZpZXcgPSBuZXcg
TWFya2VyVmlldyh0aGlzKTsKLSAgICAgICAgICAgIHRvcGxldmVscy5wdXNoX2JhY2soVG9wbGV2
ZWwoVG9wbGV2ZWw6Ok1BUktFUiwgaW50KG1hcmtlclZpZXcpLCBtYXJrZXJWaWV3KSk7Ci0vLyAg
ICAgICAgICAgIGNvbm5lY3QobWFya2VyVmlldywgU0lHTkFMKGRlbGV0ZWQoaW50KSksIFNMT1Qo
dG9wbGV2ZWxEZWxldGVkKGludCkpKTsKKyAgICAgICAgICAgIHRvcGxldmVscy5wdXNoX2JhY2so
VG9wbGV2ZWwoVG9wbGV2ZWw6Ok1BUktFUiwgbWFya2VyVmlldywgbWFya2VyVmlldykpOworLy8g
ICAgICAgICAgICBjb25uZWN0KG1hcmtlclZpZXcsIFNJR05BTChkZWxldGVkKHZvaWQqKSksIFNM
T1QodG9wbGV2ZWxEZWxldGVkKGxvbmcpKSk7CiAgICAgICAgICAgICB9CiAgICAgICBtYXJrZXJW
aWV3LT5zaG93KCk7CiAgICAgICB9CkBAIC0xNDE1LDggKzE0MTUsOCBAQAogICAgICAgewogICAg
ICAgaWYgKGF1ZGlvTWl4ZXIgPT0gMCkgewogICAgICAgICAgICAgYXVkaW9NaXhlciA9IG5ldyBB
dWRpb01peGVyQXBwKCk7Ci0gICAgICAgICAgICB0b3BsZXZlbHMucHVzaF9iYWNrKFRvcGxldmVs
KFRvcGxldmVsOjpBX01JWEVSLCBpbnQoYXVkaW9NaXhlciksIGF1ZGlvTWl4ZXIpKTsKLSAgICAg
ICAgICAgIGNvbm5lY3QoYXVkaW9NaXhlciwgU0lHTkFMKGRlbGV0ZWQoaW50KSksIFNMT1QodG9w
bGV2ZWxEZWxldGVkKGludCkpKTsKKyAgICAgICAgICAgIHRvcGxldmVscy5wdXNoX2JhY2soVG9w
bGV2ZWwoVG9wbGV2ZWw6OkFfTUlYRVIsIGF1ZGlvTWl4ZXIsIGF1ZGlvTWl4ZXIpKTsKKyAgICAg
ICAgICAgIGNvbm5lY3QoYXVkaW9NaXhlciwgU0lHTkFMKGRlbGV0ZWQodm9pZCopKSwgU0xPVCh0
b3BsZXZlbERlbGV0ZWQobG9uZykpKTsKICAgICAgICAgICAgIH0KICAgICAgIGF1ZGlvTWl4ZXIt
PnNob3coKTsKICAgICAgIG1lbnVfYXVkaW8tPnNldEl0ZW1DaGVja2VkKGFpZDEsIHRydWUpOwpA
QCAtMTQzMCw4ICsxNDMwLDggQEAKICAgICAgIHsKICAgICAgIGlmIChjbGlwTGlzdEVkaXQgPT0g
MCkgewogICAgICAgICAgICAgY2xpcExpc3RFZGl0ID0gbmV3IENsaXBMaXN0RWRpdCgpOwotICAg
ICAgICAgICAgdG9wbGV2ZWxzLnB1c2hfYmFjayhUb3BsZXZlbChUb3BsZXZlbDo6Q0xJUExJU1Qs
IGludChjbGlwTGlzdEVkaXQpLCBjbGlwTGlzdEVkaXQpKTsKLSAgICAgICAgICAgIGNvbm5lY3Qo
Y2xpcExpc3RFZGl0LCBTSUdOQUwoZGVsZXRlZChpbnQpKSwgU0xPVCh0b3BsZXZlbERlbGV0ZWQo
aW50KSkpOworICAgICAgICAgICAgdG9wbGV2ZWxzLnB1c2hfYmFjayhUb3BsZXZlbChUb3BsZXZl
bDo6Q0xJUExJU1QsIGNsaXBMaXN0RWRpdCwgY2xpcExpc3RFZGl0KSk7CisgICAgICAgICAgICBj
b25uZWN0KGNsaXBMaXN0RWRpdCwgU0lHTkFMKGRlbGV0ZWQodm9pZCopKSwgU0xPVCh0b3BsZXZl
bERlbGV0ZWQobG9uZykpKTsKICAgICAgICAgICAgIH0KICAgICAgIGNsaXBMaXN0RWRpdC0+c2hv
dygpOwogICAgICAgbWVudV9hdWRpby0+c2V0SXRlbUNoZWNrZWQoYWlkMiwgdHJ1ZSk7CkBAIC0x
NDc2LDEwICsxNDc2LDEwIEBACiAvLyAgIHRvcGxldmVsRGVsZXRlZAogLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotdm9pZCBNdXNF
Ojp0b3BsZXZlbERlbGV0ZWQoaW50IHRsKQordm9pZCBNdXNFOjp0b3BsZXZlbERlbGV0ZWQodm9p
ZCogdGwpCiAgICAgICB7CiAgICAgICBmb3IgKGlUb3BsZXZlbCBpID0gdG9wbGV2ZWxzLmJlZ2lu
KCk7IGkgIT0gdG9wbGV2ZWxzLmVuZCgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChpLT5vYmpl
Y3QoKSA9PSB0bCkgeworICAgICAgICAgICAgaWYgKCBpLT5vYmplY3QoKSA9PSB0bCApIHsKICAg
ICAgICAgICAgICAgICAgIHN3aXRjaChpLT50eXBlKCkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgVG9wbGV2ZWw6Ok1fTUlYRVI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtZW51X2Z1bmN0aW9ucy0+c2V0SXRlbUNoZWNrZWQobWlkaWQxLCBmYWxzZSk7CkBAIC0yMTU2
LDcgKzIxNTYsNyBAQAogICAgICAgICAgICAgVG9wbGV2ZWwgdGwgPSAqaTsKICAgICAgICAgICAg
IGlmICh0bC50eXBlKCkgPT0gVG9wbGV2ZWw6OldBVkUpIHsKICAgICAgICAgICAgICAgICAgIFRv
cFdpbiogb2JqID0gdGwuY29iamVjdCgpOwotICAgICAgICAgICAgICAgICAgKChXYXZlRWRpdCop
KG9iaikpLT5zZXRCZyhXYXZlRWRpdDo6Y29uZmlnQmcoKSk7CisgICAgICAgICAgICAgICAgICBy
ZWludGVycHJldF9jYXN0PFdhdmVFZGl0Kj4ob2JqKS0+c2V0QmcoV2F2ZUVkaXQ6OmNvbmZpZ0Jn
KCkpOwogICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgfQpAQCAtMjU5
Myw3ICsyNTkzLDcgQEAKIGFnYWluOgogICAgICAgZm9yIChpVG9wbGV2ZWwgaSA9IHRvcGxldmVs
cy5iZWdpbigpOyBpICE9IHRvcGxldmVscy5lbmQoKTsgKytpKSB7CiAgICAgICAgICAgICBUb3Bs
ZXZlbCB0bCA9ICppOwotICAgICAgICAgICAgaW50IG9iaiA9IHRsLm9iamVjdCgpOworICAgICAg
ICAgICAgdm9pZCogb2JqID0gdGwub2JqZWN0KCk7CiAgICAgICAgICAgICBzd2l0Y2ggKHRsLnR5
cGUoKSkgewogICAgICAgICAgICAgICAgICAgY2FzZSBUb3BsZXZlbDo6QV9NSVhFUjoKICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBhdWRpb01peGVyOwpAQCAtMjYxMSw3ICsyNjExLDcg
QEAKICAgICAgICAgICAgICAgICAgIGNhc2UgVG9wbGV2ZWw6OldBVkU6CiAgICAgICAgICAgICAg
ICAgICBjYXNlIFRvcGxldmVsOjpMTUFTVEVSOgogICAgICAgICAgICAgICAgICAgY2FzZSBUb3Bs
ZXZlbDo6TUlYRE9XTjoKLSAgICAgICAgICAgICAgICAgICAgICAgICgoUVdpZGdldCopKG9iaikp
LT5jbG9zZSh0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
UVdpZGdldCo+KG9iaiktPmNsb3NlKHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgZ290
byBhZ2FpbjsKICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KZGlmZiAtTnVyIG11
c2UtMC42LjIvYXBwLmggbXVzZS0wLjYuMi1wYXRjaGVkL2FwcC5oCi0tLSBtdXNlLTAuNi4yL2Fw
cC5oCTIwMDMtMTAtMzAgMTI6MTE6NTAuMDAwMDAwMDAwICswMDAwCisrKyBtdXNlLTAuNi4yLXBh
dGNoZWQvYXBwLmgJMjAwNC0wNi0yOCAyMzo1Mjo1NC4zNTgzNTU4MDYgKzAwMDAKQEAgLTIyNyw3
ICsyMjcsNyBAQAogICAgICAgdm9pZCBjdHJsQ2hhbmdlZCgpOwogICAgICAgdm9pZCBsb2FkUHJv
amVjdEZpbGUoY29uc3QgUVN0cmluZyYpOwogICAgICAgdm9pZCBzdGFydEF1ZGlvTWl4ZXIoKTsK
LSAgICAgIHZvaWQgdG9wbGV2ZWxEZWxldGVkKGludCB0bCk7CisgICAgICB2b2lkIHRvcGxldmVs
RGVsZXRlZCh2b2lkKiB0bCk7CiAgICAgICB2b2lkIGxvYWRUaGVtZShRU3RyaW5nKTsKICAgICAg
IHZvaWQgc2V0VHJhbnNwb3J0SGFuZGxlQ29sb3IoUUNvbG9yKTsKICAgICAgIHZvaWQgc2V0Qmln
VGltZUZvcmVncm91bmRDb2xvcihRQ29sb3IpOwpkaWZmIC1OdXIgbXVzZS0wLjYuMi9jbGlwbGlz
dC9jbGlwbGlzdC5jcHAgbXVzZS0wLjYuMi1wYXRjaGVkL2NsaXBsaXN0L2NsaXBsaXN0LmNwcAot
LS0gbXVzZS0wLjYuMi9jbGlwbGlzdC9jbGlwbGlzdC5jcHAJMjAwMy0xMC0yOSAxMDowNjozNy4w
MDAwMDAwMDAgKzAwMDAKKysrIG11c2UtMC42LjItcGF0Y2hlZC9jbGlwbGlzdC9jbGlwbGlzdC5j
cHAJMjAwNC0wNi0yOSAwMDoxMzo1OS43NjcxNDk2MjAgKzAwMDAKQEAgLTE4NCw3ICsxODQsNyBA
QAogCiB2b2lkIENsaXBMaXN0RWRpdDo6Y2xvc2VFdmVudChRQ2xvc2VFdmVudCogZSkKICAgICAg
IHsKLSAgICAgIGVtaXQgZGVsZXRlZCgoaW50KXRoaXMpOworICAgICAgZW1pdCBkZWxldGVkKHRo
aXMpOwogICAgICAgZS0+YWNjZXB0KCk7CiAgICAgICB9CiAKZGlmZiAtTnVyIG11c2UtMC42LjIv
Y2xpcGxpc3QvY2xpcGxpc3QuaCBtdXNlLTAuNi4yLXBhdGNoZWQvY2xpcGxpc3QvY2xpcGxpc3Qu
aAotLS0gbXVzZS0wLjYuMi9jbGlwbGlzdC9jbGlwbGlzdC5oCTIwMDMtMTAtMjkgMTA6MDY6MzYu
MDAwMDAwMDAwICswMDAwCisrKyBtdXNlLTAuNi4yLXBhdGNoZWQvY2xpcGxpc3QvY2xpcGxpc3Qu
aAkyMDA0LTA2LTI5IDAwOjE0OjExLjA4MDMxMTEzMyArMDAwMApAQCAtMzcsNyArMzcsNyBAQAog
ICAgICAgdm9pZCBjbGlja2VkKFFMaXN0Vmlld0l0ZW0qKTsKIAogICAgc2lnbmFsczoKLSAgICAg
IHZvaWQgZGVsZXRlZChpbnQpOworICAgICAgdm9pZCBkZWxldGVkKHZvaWQqKTsKIAogICAgcHVi
bGljOgogICAgICAgQ2xpcExpc3RFZGl0KCk7CmRpZmYgLU51ciBtdXNlLTAuNi4yL2NvYmplY3Qu
aCBtdXNlLTAuNi4yLXBhdGNoZWQvY29iamVjdC5oCi0tLSBtdXNlLTAuNi4yL2NvYmplY3QuaAky
MDAzLTEwLTI5IDEwOjA1OjEwLjAwMDAwMDAwMCArMDAwMAorKysgbXVzZS0wLjYuMi1wYXRjaGVk
L2NvYmplY3QuaAkyMDA0LTA2LTI5IDAwOjAyOjMwLjE4NzQwMzU0MCArMDAwMApAQCAtNDQsMTgg
KzQ0LDE2IEBACiAgICAgICAgICAsIE1fUEFUQ0hCQVkKICNlbmRpZiAvKiBQQVRDSEJBWSAqLwog
ICAgICAgICAgfTsKLSAgICAgIFRvcGxldmVsKFRvcGxldmVsVHlwZSB0LCBpbnQgb2JqLCBUb3BX
aW4qIGNvYmopIHsKLSAgICAgICAgICAgIF90eXBlID0gdDsKLSAgICAgICAgICAgIF9vYmplY3Qg
PSBvYmo7Ci0gICAgICAgICAgICBfY29iamVjdCA9IGNvYmo7Ci0gICAgICAgICAgICB9CisJICAv
LyBSZXRoaW5rIHRoYXQgOiBzYXZpbmcgdm9pZCpfb2JqZWN0ICggZm9ybWVybHkgaW50KSBhbmQg
VG9wV2luKiBfY29iamVjdCBtYWtlcyBubyBzZW5zZSEKKyAgICAgIFRvcGxldmVsKFRvcGxldmVs
VHlwZSB0LCB2b2lkICogb2JqLCBUb3BXaW4qIGNvYmopCisJICA6IF90eXBlKHQpLCBfb2JqZWN0
KG9iaiksIF9jb2JqZWN0KGNvYmopeyB9CiAgICAgICBUb3BsZXZlbFR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIF90eXBlOyB9Ci0gICAgICBpbnQgb2JqZWN0KCkgICAgICAgIGNvbnN0IHsgcmV0
dXJuIF9vYmplY3Q7IH0KKyAgICAgIHZvaWQqIG9iamVjdCgpICAgICAgICBjb25zdCB7IHJldHVy
biBfb2JqZWN0OyB9CiAgICAgICBUb3BXaW4qIGNvYmplY3QoKSAgIGNvbnN0IHsgcmV0dXJuIF9j
b2JqZWN0OyB9CiAKICAgIHByaXZhdGU6CiAgICAgICBUb3BsZXZlbFR5cGUgX3R5cGU7Ci0gICAg
ICBpbnQgX29iamVjdDsKKyAgICAgIHZvaWQqIF9vYmplY3Q7CiAgICAgICBUb3BXaW4qIF9jb2Jq
ZWN0OwogICAgICAgfTsKIApkaWZmIC1OdXIgbXVzZS0wLjYuMi9saXN0ZS9saXN0ZWRpdC5jcHAg
bXVzZS0wLjYuMi1wYXRjaGVkL2xpc3RlL2xpc3RlZGl0LmNwcAotLS0gbXVzZS0wLjYuMi9saXN0
ZS9saXN0ZWRpdC5jcHAJMjAwMy0xMC0yOSAxMDowNToyMi4wMDAwMDAwMDAgKzAwMDAKKysrIG11
c2UtMC42LjItcGF0Y2hlZC9saXN0ZS9saXN0ZWRpdC5jcHAJMjAwNC0wNi0yOCAyMzozNzoxMy4w
MDAwMDAwMDAgKzAwMDAKQEAgLTEzOSw3ICsxMzksNyBAQAogCiB2b2lkIExpc3RFZGl0OjpjbG9z
ZUV2ZW50KFFDbG9zZUV2ZW50KiBlKQogICAgICAgewotICAgICAgZW1pdCBkZWxldGVkKChpbnQp
dGhpcyk7CisgICAgICBlbWl0IGRlbGV0ZWQodGhpcyk7CiAgICAgICBlLT5hY2NlcHQoKTsKICAg
ICAgIH0KIApkaWZmIC1OdXIgbXVzZS0wLjYuMi9saXN0ZS9saXN0ZWRpdC5oIG11c2UtMC42LjIt
cGF0Y2hlZC9saXN0ZS9saXN0ZWRpdC5oCi0tLSBtdXNlLTAuNi4yL2xpc3RlL2xpc3RlZGl0LmgJ
MjAwMy0xMC0yOSAxMDowNToyMi4wMDAwMDAwMDAgKzAwMDAKKysrIG11c2UtMC42LjItcGF0Y2hl
ZC9saXN0ZS9saXN0ZWRpdC5oCTIwMDQtMDYtMjggMjM6Mzc6MjMuMDAwMDAwMDAwICswMDAwCkBA
IC01OCw3ICs1OCw3IEBACiAgICAgICB2b2lkIHNvbmdDaGFuZ2VkKGludCk7CiAKICAgIHNpZ25h
bHM6Ci0gICAgICB2b2lkIGRlbGV0ZWQoaW50KTsKKyAgICAgIHZvaWQgZGVsZXRlZCh2b2lkKik7
CiAKICAgIHB1YmxpYzoKICAgICAgIExpc3RFZGl0KFBhcnRMaXN0Kik7CmRpZmYgLU51ciBtdXNl
LTAuNi4yL21hcmtlci9tYXJrZXJ2aWV3LmNwcCBtdXNlLTAuNi4yLXBhdGNoZWQvbWFya2VyL21h
cmtlcnZpZXcuY3BwCi0tLSBtdXNlLTAuNi4yL21hcmtlci9tYXJrZXJ2aWV3LmNwcAkyMDAzLTEw
LTI5IDEwOjA2OjEzLjAwMDAwMDAwMCArMDAwMAorKysgbXVzZS0wLjYuMi1wYXRjaGVkL21hcmtl
ci9tYXJrZXJ2aWV3LmNwcAkyMDA0LTA2LTI4IDIzOjQwOjQ1Ljc3NjE4NjkyNiArMDAwMApAQCAt
MTM2LDcgKzEzNiw3IEBACiAKIHZvaWQgTWFya2VyVmlldzo6Y2xvc2VFdmVudChRQ2xvc2VFdmVu
dCogZSkKICAgICAgIHsKLSAgICAgIGVtaXQgZGVsZXRlZCgoaW50KXRoaXMpOworICAgICAgZW1p
dCBkZWxldGVkKHRoaXMpOwogICAgICAgZS0+YWNjZXB0KCk7CiAgICAgICB9CiAKZGlmZiAtTnVy
IG11c2UtMC42LjIvbWFya2VyL21hcmtlcnZpZXcuaCBtdXNlLTAuNi4yLXBhdGNoZWQvbWFya2Vy
L21hcmtlcnZpZXcuaAotLS0gbXVzZS0wLjYuMi9tYXJrZXIvbWFya2Vydmlldy5oCTIwMDMtMTAt
MjkgMTA6MDY6MTMuMDAwMDAwMDAwICswMDAwCisrKyBtdXNlLTAuNi4yLXBhdGNoZWQvbWFya2Vy
L21hcmtlcnZpZXcuaAkyMDA0LTA2LTI4IDIzOjQ0OjUxLjc3NTkxNDM3OSArMDAwMApAQCAtNjcs
NyArNjcsNyBAQAogICAgICAgdm9pZCBzb25nQ2hhbmdlZChpbnQpOwogCiAgICBzaWduYWxzOgot
ICAgICAgdm9pZCBkZWxldGVkKGludCk7CisgICAgICB2b2lkIGRlbGV0ZWQodm9pZCopOwogCiAg
ICBwdWJsaWM6CiAgICAgICBNYXJrZXJWaWV3KFFXaWRnZXQqIHBhcmVudCk7CmRpZmYgLU51ciBt
dXNlLTAuNi4yL21hc3Rlci9sbWFzdGVyLmNwcCBtdXNlLTAuNi4yLXBhdGNoZWQvbWFzdGVyL2xt
YXN0ZXIuY3BwCi0tLSBtdXNlLTAuNi4yL21hc3Rlci9sbWFzdGVyLmNwcAkyMDAzLTEwLTI5IDEw
OjA2OjEzLjAwMDAwMDAwMCArMDAwMAorKysgbXVzZS0wLjYuMi1wYXRjaGVkL21hc3Rlci9sbWFz
dGVyLmNwcAkyMDA0LTA2LTI5IDAwOjEyOjE0LjU4MjI0MDg3OCArMDAwMApAQCAtMjYsNyArMjYs
NyBAQAogCiB2b2lkIExNYXN0ZXI6OmNsb3NlRXZlbnQoUUNsb3NlRXZlbnQqIGUpCiAgICAgICB7
Ci0gICAgICBlbWl0IGRlbGV0ZWQoKGludCl0aGlzKTsKKyAgICAgIGVtaXQgZGVsZXRlZCh0aGlz
KTsKICAgICAgIGUtPmFjY2VwdCgpOwogICAgICAgfQogCmRpZmYgLU51ciBtdXNlLTAuNi4yL21h
c3Rlci9sbWFzdGVyLmggbXVzZS0wLjYuMi1wYXRjaGVkL21hc3Rlci9sbWFzdGVyLmgKLS0tIG11
c2UtMC42LjIvbWFzdGVyL2xtYXN0ZXIuaAkyMDAzLTEwLTI5IDEwOjA2OjEzLjAwMDAwMDAwMCAr
MDAwMAorKysgbXVzZS0wLjYuMi1wYXRjaGVkL21hc3Rlci9sbWFzdGVyLmgJMjAwNC0wNi0yOSAw
MDoxMjozMi4xMjczOTE1NDMgKzAwMDAKQEAgLTQxLDcgKzQxLDcgQEAKICAgICAgIHZvaWQgc29u
Z0NoYW5nZWQoaW50KTsKIAogICAgc2lnbmFsczoKLSAgICAgIHZvaWQgZGVsZXRlZChpbnQpOwor
ICAgICAgdm9pZCBkZWxldGVkKHZvaWQqKTsKIAogICAgcHVibGljOgogICAgICAgTE1hc3Rlcigp
OwpkaWZmIC1OdXIgbXVzZS0wLjYuMi9tYXN0ZXIvbWFzdGVyZWRpdC5jcHAgbXVzZS0wLjYuMi1w
YXRjaGVkL21hc3Rlci9tYXN0ZXJlZGl0LmNwcAotLS0gbXVzZS0wLjYuMi9tYXN0ZXIvbWFzdGVy
ZWRpdC5jcHAJMjAwMy0xMC0yOSAxMDowNjoxNC4wMDAwMDAwMDAgKzAwMDAKKysrIG11c2UtMC42
LjItcGF0Y2hlZC9tYXN0ZXIvbWFzdGVyZWRpdC5jcHAJMjAwNC0wNi0yOSAwMDoxMjo0Mi4zMzk3
MzIwMTEgKzAwMDAKQEAgLTQ5LDcgKzQ5LDcgQEAKIAogdm9pZCBNYXN0ZXJFZGl0OjpjbG9zZUV2
ZW50KFFDbG9zZUV2ZW50KiBlKQogICAgICAgewotICAgICAgZW1pdCBkZWxldGVkKChpbnQpdGhp
cyk7CisgICAgICBlbWl0IGRlbGV0ZWQodGhpcyk7CiAgICAgICBlLT5hY2NlcHQoKTsKICAgICAg
IH0KIApkaWZmIC1OdXIgbXVzZS0wLjYuMi9tYXN0ZXIvbWFzdGVyZWRpdC5oIG11c2UtMC42LjIt
cGF0Y2hlZC9tYXN0ZXIvbWFzdGVyZWRpdC5oCi0tLSBtdXNlLTAuNi4yL21hc3Rlci9tYXN0ZXJl
ZGl0LmgJMjAwMy0xMC0yOSAxMDowNjoxMy4wMDAwMDAwMDAgKzAwMDAKKysrIG11c2UtMC42LjIt
cGF0Y2hlZC9tYXN0ZXIvbWFzdGVyZWRpdC5oCTIwMDQtMDYtMjkgMDA6MTI6NTkuMzgyOTYyNDI2
ICswMDAwCkBAIC01OSw3ICs1OSw3IEBACiAvLyAgICAgIHZvaWQgdGVtcG9DaGFuZ2VkKGRvdWJs
ZSk7CiAKICAgIHNpZ25hbHM6Ci0gICAgICB2b2lkIGRlbGV0ZWQoaW50KTsKKyAgICAgIHZvaWQg
ZGVsZXRlZCh2b2lkKik7CiAKICAgIHB1YmxpYzoKICAgICAgIE1hc3RlckVkaXQoKTsKZGlmZiAt
TnVyIG11c2UtMC42LjIvbWVtb3J5LmggbXVzZS0wLjYuMi1wYXRjaGVkL21lbW9yeS5oCi0tLSBt
dXNlLTAuNi4yL21lbW9yeS5oCTIwMDMtMTAtMjkgMTA6MDU6MTguMDAwMDAwMDAwICswMDAwCisr
KyBtdXNlLTAuNi4yLXBhdGNoZWQvbWVtb3J5LmgJMjAwNC0wNi0yOCAyMzozMDowMS45MDY0OTYx
OTAgKzAwMDAKQEAgLTUwLDcgKzUwLDcgQEAKICAgICAgIHsKICAgICAgIGludCBpZHggPSAoKG4g
KyBzaXplb2YoaW50KSAtIDEpIC8gc2l6ZW9mKGludCkpIC0gMTsKICAgICAgIGlmIChpZHggPj0g
ZGltZW5zaW9uKSB7Ci0gICAgICAgICAgICBwcmludGYoInBhbmljOiBhbGxvYyAlZFxuIiwgbik7
CisgICAgICAgICAgICBwcmludGYoInBhbmljOiBhbGxvYyAlbHVcbiIsIG4pOwogICAgICAgICAg
ICAgZXhpdCgtMSk7CiAgICAgICAgICAgICB9CiAgICAgICBpZiAoaGVhZFtpZHhdID09IDApCkBA
IC02OCw3ICs2OCw3IEBACiAgICAgICB7CiAgICAgICBpbnQgaWR4ID0gKChuICsgc2l6ZW9mKGlu
dCkgLSAxKSAvIHNpemVvZihpbnQpKSAtIDE7CiAgICAgICBpZiAoaWR4ID49IGRpbWVuc2lvbikg
ewotICAgICAgICAgICAgcHJpbnRmKCJwYW5pYzogYWxsb2MgJWRcbiIsIG4pOworICAgICAgICAg
ICAgcHJpbnRmKCJwYW5pYzogYWxsb2MgJWx1XG4iLCBuKTsKICAgICAgICAgICAgIGV4aXQoLTEp
OwogICAgICAgICAgICAgfQogICAgICAgVmVyd2VpcyogcCA9IHN0YXRpY19jYXN0PFZlcndlaXMq
PihiKTsKZGlmZiAtTnVyIG11c2UtMC42LjIvbWlkaS5jcHAgbXVzZS0wLjYuMi1wYXRjaGVkL21p
ZGkuY3BwCi0tLSBtdXNlLTAuNi4yL21pZGkuY3BwCTIwMDMtMTEtMDEgMTg6MTI6NTIuMDAwMDAw
MDAwICswMDAwCisrKyBtdXNlLTAuNi4yLXBhdGNoZWQvbWlkaS5jcHAJMjAwNC0wNi0yOCAyMzo0
ODo1Ny40NDk4MjY3NjIgKzAwMDAKQEAgLTUyMiw5ICs1MjIsOSBAQAogICAgICAgICAgICAgTWlk
aUV2ZW50KiBldmVudCA9IHJlYWRFdmVudCh0cmFjayk7CiAgICAgICAgICAgICBpZiAoZXZlbnQg
PT0gMCkKICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKGludChldmVu
dCkgPT0gLTEpCisgICAgICAgICAgICBpZiAobG9uZyhldmVudCkgPT0gLTEpCiAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChpbnQoZXZlbnQpID09IC0yKSAgICAg
ICAgIC8vIGVycm9yCisgICAgICAgICAgICBpZiAobG9uZyhldmVudCkgPT0gLTIpICAgICAgICAg
Ly8gZXJyb3IKICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgaWYg
KGxhc3RjaGFuID09IC0xKSB7CiAgICAgICAgICAgICAgICAgICBlbC0+YWRkKGV2ZW50KTsgICAg
ICAgICAvLyBrYW5uIGtlaW4gY2hhbm5lbCBldmVudCBzZWluCmRpZmYgLU51ciBtdXNlLTAuNi4y
L21pZGllZGl0L2RydW1lZGl0LmNwcCBtdXNlLTAuNi4yLXBhdGNoZWQvbWlkaWVkaXQvZHJ1bWVk
aXQuY3BwCi0tLSBtdXNlLTAuNi4yL21pZGllZGl0L2RydW1lZGl0LmNwcAkyMDAzLTEwLTI5IDEw
OjA2OjA4LjAwMDAwMDAwMCArMDAwMAorKysgbXVzZS0wLjYuMi1wYXRjaGVkL21pZGllZGl0L2Ry
dW1lZGl0LmNwcAkyMDA0LTA2LTI4IDIzOjMzOjI2LjAwMDAwMDAwMCArMDAwMApAQCAtMTMzLDcg
KzEzMyw3IEBACiAgICAgICBfZGxpc3RXaWR0aEluaXQgPSAqaXQ7IC8vVGhlcmUgYXJlIG9ubHkg
MiB2YWx1ZXMgc3RvcmVkIGluIHRoZSBzaXplbGlzdCwgc2l6ZSBvZiBkbGlzdCB3aWRnZXQgYW5k
IGRjYW52YXMgd2lkZ2V0IAogICAgICAgaXQrKzsgCiAgICAgICBfZGNhbnZhc1dpZHRoSW5pdCA9
ICppdDsgCi0gICAgICBlbWl0IGRlbGV0ZWQoKGludCl0aGlzKTsKKyAgICAgIGVtaXQgZGVsZXRl
ZCh0aGlzKTsKICAgICAgIGUtPmFjY2VwdCgpOwogICAgICAgfQogCmRpZmYgLU51ciBtdXNlLTAu
Ni4yL21pZGllZGl0L2RydW1lZGl0LmggbXVzZS0wLjYuMi1wYXRjaGVkL21pZGllZGl0L2RydW1l
ZGl0LmgKLS0tIG11c2UtMC42LjIvbWlkaWVkaXQvZHJ1bWVkaXQuaAkyMDAzLTEwLTI5IDEwOjA2
OjEwLjAwMDAwMDAwMCArMDAwMAorKysgbXVzZS0wLjYuMi1wYXRjaGVkL21pZGllZGl0L2RydW1l
ZGl0LmgJMjAwNC0wNi0yOCAyMzozMzozOS4wMDAwMDAwMDAgKzAwMDAKQEAgLTEyMCw3ICsxMjAs
NyBAQAogICAgICAgdm9pZCBkbGlzdFNlbGVjdGlvbkNoYW5nZWQoRHJ1bU1hcCopOyAvLyBjYWxs
ZWQgYnkgZGxpc3QKIAogICAgc2lnbmFsczoKLSAgICAgIHZvaWQgZGVsZXRlZChpbnQpOworICAg
ICAgdm9pZCBkZWxldGVkKHZvaWQqKTsKICAgICAgIHZvaWQga2V5RmlsdGVyQ2hhbmdlZChpbnQp
OwogCiAgICBwdWJsaWM6CmRpZmYgLU51ciBtdXNlLTAuNi4yL21pZGllZGl0L3BpYW5vcm9sbC5j
cHAgbXVzZS0wLjYuMi1wYXRjaGVkL21pZGllZGl0L3BpYW5vcm9sbC5jcHAKLS0tIG11c2UtMC42
LjIvbWlkaWVkaXQvcGlhbm9yb2xsLmNwcAkyMDAzLTEwLTI5IDEwOjA2OjA5LjAwMDAwMDAwMCAr
MDAwMAorKysgbXVzZS0wLjYuMi1wYXRjaGVkL21pZGllZGl0L3BpYW5vcm9sbC5jcHAJMjAwNC0w
Ni0yOCAyMzozMDo1Ni4wMzc1NzA5MDkgKzAwMDAKQEAgLTQ0Niw3ICs0NDYsNyBAQAogCiB2b2lk
IFBpYW5vUm9sbDo6Y2xvc2VFdmVudChRQ2xvc2VFdmVudCogZSkKICAgICAgIHsKLSAgICAgIGVt
aXQgZGVsZXRlZCgoaW50KXRoaXMpOworICAgICAgZW1pdCBkZWxldGVkKHRoaXMpOwogICAgICAg
ZS0+YWNjZXB0KCk7CiAgICAgICB9CiAKZGlmZiAtTnVyIG11c2UtMC42LjIvbWlkaWVkaXQvcGlh
bm9yb2xsLmggbXVzZS0wLjYuMi1wYXRjaGVkL21pZGllZGl0L3BpYW5vcm9sbC5oCi0tLSBtdXNl
LTAuNi4yL21pZGllZGl0L3BpYW5vcm9sbC5oCTIwMDMtMTAtMjkgMTA6MDY6MDcuMDAwMDAwMDAw
ICswMDAwCisrKyBtdXNlLTAuNi4yLXBhdGNoZWQvbWlkaWVkaXQvcGlhbm9yb2xsLmgJMjAwNC0w
Ni0yOCAyMzozMjozNC43MzczMDEwNDIgKzAwMDAKQEAgLTEwOCw3ICsxMDgsNyBAQAogICAgICAg
dm9pZCBzb25nQ2hhbmdlZDEoaW50KTsKIAogICAgc2lnbmFsczoKLSAgICAgIHZvaWQgZGVsZXRl
ZChpbnQpOworICAgICAgdm9pZCBkZWxldGVkKHZvaWQgKik7CiAKICAgIHB1YmxpYzoKICAgICAg
IFBpYW5vUm9sbChQYXJ0TGlzdCosIFFXaWRnZXQqIHBhcmVudCA9IDAsIGNvbnN0IGNoYXIqIG5h
bWUgPSAwKTsKZGlmZiAtTnVyIG11c2UtMC42LjIvbWl4ZXIvYW1peGVyLmNwcCBtdXNlLTAuNi4y
LXBhdGNoZWQvbWl4ZXIvYW1peGVyLmNwcAotLS0gbXVzZS0wLjYuMi9taXhlci9hbWl4ZXIuY3Bw
CTIwMDMtMTAtMjkgMTA6MDU6MjMuMDAwMDAwMDAwICswMDAwCisrKyBtdXNlLTAuNi4yLXBhdGNo
ZWQvbWl4ZXIvYW1peGVyLmNwcAkyMDA0LTA2LTI4IDIzOjU0OjU5LjAwMDAwMDAwMCArMDAwMApA
QCAtNzUzLDcgKzc1Myw3IEBACiAKIHZvaWQgQXVkaW9NaXhlckFwcDo6Y2xvc2VFdmVudChRQ2xv
c2VFdmVudCogZSkKICAgICAgIHsKLSAgICAgIGVtaXQgZGVsZXRlZCgoaW50KXRoaXMpOworICAg
ICAgZW1pdCBkZWxldGVkKHRoaXMpOwogICAgICAgZS0+YWNjZXB0KCk7CiAgICAgICB9CiAKZGlm
ZiAtTnVyIG11c2UtMC42LjIvbWl4ZXIvYW1peGVyLmggbXVzZS0wLjYuMi1wYXRjaGVkL21peGVy
L2FtaXhlci5oCi0tLSBtdXNlLTAuNi4yL21peGVyL2FtaXhlci5oCTIwMDMtMTAtMjkgMTA6MDU6
MjQuMDAwMDAwMDAwICswMDAwCisrKyBtdXNlLTAuNi4yLXBhdGNoZWQvbWl4ZXIvYW1peGVyLmgJ
MjAwNC0wNi0yOCAyMzo1NToxMS4zMTYwMjA5MzAgKzAwMDAKQEAgLTk0LDcgKzk0LDcgQEAKICAg
ICAgIHZvaWQgdXBkYXRlT3V0cHV0Um91dGUoKTsKIAogICAgc2lnbmFsczoKLSAgICAgIHZvaWQg
ZGVsZXRlZChpbnQpOworICAgICAgdm9pZCBkZWxldGVkKHZvaWQqKTsKIAogICAgcHJpdmF0ZSBz
bG90czoKICAgICAgIHZvaWQgaGVhcnRCZWF0KCk7CmRpZmYgLU51ciBtdXNlLTAuNi4yL21peGVy
L21peGVyLmNwcCBtdXNlLTAuNi4yLXBhdGNoZWQvbWl4ZXIvbWl4ZXIuY3BwCi0tLSBtdXNlLTAu
Ni4yL21peGVyL21peGVyLmNwcAkyMDAzLTEwLTI5IDEwOjA1OjI0LjAwMDAwMDAwMCArMDAwMAor
KysgbXVzZS0wLjYuMi1wYXRjaGVkL21peGVyL21peGVyLmNwcAkyMDA0LTA2LTI5IDAwOjEzOjQw
LjU4ODI2NjMzNSArMDAwMApAQCAtMjI2LDcgKzIyNiw3IEBACiAKIHZvaWQgTWl4ZXI6OmNsb3Nl
RXZlbnQoUUNsb3NlRXZlbnQqIGUpCiAgICAgICB7Ci0gICAgICBlbWl0IGRlbGV0ZWQoKGludCl0
aGlzKTsKKyAgICAgIGVtaXQgZGVsZXRlZCh0aGlzKTsKICAgICAgIGUtPmFjY2VwdCgpOwogICAg
ICAgfQogCmRpZmYgLU51ciBtdXNlLTAuNi4yL21peGVyL21peGVyLmggbXVzZS0wLjYuMi1wYXRj
aGVkL21peGVyL21peGVyLmgKLS0tIG11c2UtMC42LjIvbWl4ZXIvbWl4ZXIuaAkyMDAzLTEwLTI5
IDEwOjA1OjIzLjAwMDAwMDAwMCArMDAwMAorKysgbXVzZS0wLjYuMi1wYXRjaGVkL21peGVyL21p
eGVyLmgJMjAwNC0wNi0yOSAwMDoxMzo1Mi42ODEzMDExMjggKzAwMDAKQEAgLTYwLDcgKzYwLDcg
QEAKICAgICAgIHZvaWQgbWFzdGVyQ2hhbmdlZChpbnQgdmFsKTsKIAogICAgc2lnbmFsczoKLSAg
ICAgIHZvaWQgZGVsZXRlZChpbnQpOworICAgICAgdm9pZCBkZWxldGVkKHZvaWQqKTsKICAgICAg
IHZvaWQgY3RybENoYW5nZWQoaW50IHBvcnQsIGludCBjaGFuLCBpbnQgY3RybCwgaW50IHZhbCk7
CiAgICAgICB2b2lkIG1hc3RlclZvbENoYW5nZWQoaW50IHZhbCk7CiAKZGlmZiAtTnVyIG11c2Ut
MC42LjIvc2NvcmUvc2NvcmUuY3BwIG11c2UtMC42LjItcGF0Y2hlZC9zY29yZS9zY29yZS5jcHAK
LS0tIG11c2UtMC42LjIvc2NvcmUvc2NvcmUuY3BwCTIwMDMtMTAtMjkgMTA6MDU6MjYuMDAwMDAw
MDAwICswMDAwCisrKyBtdXNlLTAuNi4yLXBhdGNoZWQvc2NvcmUvc2NvcmUuY3BwCTIwMDQtMDYt
MjggMjM6NDA6MzIuNTY4NDYwMzQ2ICswMDAwCkBAIC0zNjAsNyArMzYwLDcgQEAKIAogdm9pZCBT
Y29yZTo6Y2xvc2VFdmVudChRQ2xvc2VFdmVudCogZSkKICAgICAgIHsKLSAgICAgIGVtaXQgZGVs
ZXRlZCgoaW50KXRoaXMpOworICAgICAgZW1pdCBkZWxldGVkKHRoaXMpOwogICAgICAgZS0+YWNj
ZXB0KCk7CiAgICAgICB9CiAKZGlmZiAtTnVyIG11c2UtMC42LjIvc2NvcmUvc2NvcmUuaCBtdXNl
LTAuNi4yLXBhdGNoZWQvc2NvcmUvc2NvcmUuaAotLS0gbXVzZS0wLjYuMi9zY29yZS9zY29yZS5o
CTIwMDMtMTAtMjkgMTA6MDU6MjQuMDAwMDAwMDAwICswMDAwCisrKyBtdXNlLTAuNi4yLXBhdGNo
ZWQvc2NvcmUvc2NvcmUuaAkyMDA0LTA2LTI4IDIzOjQxOjE1LjAzNzE1MTY5OSArMDAwMApAQCAt
OTEsNyArOTEsNyBAQAogICAgc2lnbmFsczoKICAgICAgIHZvaWQgcmFzdGVyQ2hhbmdlZChpbnQp
OwogICAgICAgdm9pZCBxdWFudENoYW5nZWQoaW50KTsKLSAgICAgIHZvaWQgZGVsZXRlZChpbnQp
OworICAgICAgdm9pZCBkZWxldGVkKHZvaWQqKTsKIAogICAgcHVibGljOgogICAgICAgU2NvcmUo
UGFydExpc3QqKTsKZGlmZiAtTnVyIG11c2UtMC42LjIvc3ludGkvc3ludGguY3BwIG11c2UtMC42
LjItcGF0Y2hlZC9zeW50aS9zeW50aC5jcHAKLS0tIG11c2UtMC42LjIvc3ludGkvc3ludGguY3Bw
CTIwMDMtMTAtMjkgMTA6MDY6MDAuMDAwMDAwMDAwICswMDAwCisrKyBtdXNlLTAuNi4yLXBhdGNo
ZWQvc3ludGkvc3ludGguY3BwCTIwMDQtMDYtMjggMjM6MjY6MzUuMDAwMDAwMDAwICswMDAwCkBA
IC0zMzQsNyArMzM0LDcgQEAKICAgICAgICAgICAgIG5zeW50aGlzID0gbGlzdC0+Y291bnQoKTsK
ICAgICAgICAgICAgIGlmIChkZWJ1Z01zZykKICAgICAgICAgICAgICAgICAgIHByaW50ZigiJWQg
c29mdCBzeW50aCBmb3VuZFxuIiwgbnN5bnRoaXMpOwotICAgICAgICAgICAgc3ludGhpcyAgPSBu
ZXcgKFN5bnRoKilbbnN5bnRoaXNdOworICAgICAgICAgICAgc3ludGhpcyAgPSBuZXcgU3ludGgq
W25zeW50aGlzXTsKICAgICAgICAgICAgIFFGaWxlSW5mb0xpc3RJdGVyYXRvciBpdCgqbGlzdCk7
CiAgICAgICAgICAgICBRRmlsZUluZm8qIGZpOwogICAgICAgICAgICAgaW50IGkgPSAwOwpkaWZm
IC1OdXIgbXVzZS0wLjYuMi90cmFjay5jcHAgbXVzZS0wLjYuMi1wYXRjaGVkL3RyYWNrLmNwcAot
LS0gbXVzZS0wLjYuMi90cmFjay5jcHAJMjAwMy0xMC0yOSAyMjoxNDoxMi4wMDAwMDAwMDAgKzAw
MDAKKysrIG11c2UtMC42LjItcGF0Y2hlZC90cmFjay5jcHAJMjAwNC0wNi0yOCAyMzo0OTo0OC4w
MDAwMDAwMDAgKzAwMDAKQEAgLTk1LDcgKzk1LDcgQEAKIAogdm9pZCBUcmFjazo6ZHVtcCgpIGNv
bnN0CiAgICAgICB7Ci0gICAgICBwcmludGYoIlRyYWNrIDwlcz46IHR5cCAlZCwgcGFydHMgJWQg
c2VsICVkXG4iLAorICAgICAgcHJpbnRmKCJUcmFjayA8JXM+OiB0eXAgJWQsIHBhcnRzICVsdSBz
ZWwgJWRcbiIsCiAgICAgICAgICBfbmFtZS5sYXRpbjEoKSwgX3R5cGUsIF9wYXJ0cy5zaXplKCks
IF9zZWxlY3RlZCk7CiAgICAgICB9CiAKZGlmZiAtTnVyIG11c2UtMC42LjIvd2F2ZWVkaXQvd2F2
ZWVkaXQuY3BwIG11c2UtMC42LjItcGF0Y2hlZC93YXZlZWRpdC93YXZlZWRpdC5jcHAKLS0tIG11
c2UtMC42LjIvd2F2ZWVkaXQvd2F2ZWVkaXQuY3BwCTIwMDMtMTAtMjkgMTA6MDY6MTQuMDAwMDAw
MDAwICswMDAwCisrKyBtdXNlLTAuNi4yLXBhdGNoZWQvd2F2ZWVkaXQvd2F2ZWVkaXQuY3BwCTIw
MDQtMDYtMjkgMDA6MTM6MTcuMjM2MDYxMjEyICswMDAwCkBAIC01Nyw3ICs1Nyw3IEBACiAKIHZv
aWQgV2F2ZUVkaXQ6OmNsb3NlRXZlbnQoUUNsb3NlRXZlbnQqIGUpCiAgICAgICB7Ci0gICAgICBl
bWl0IGRlbGV0ZWQoKGludCl0aGlzKTsKKyAgICAgIGVtaXQgZGVsZXRlZCh0aGlzKTsKICAgICAg
IGUtPmFjY2VwdCgpOwogICAgICAgfQogCmRpZmYgLU51ciBtdXNlLTAuNi4yL3dhdmVlZGl0L3dh
dmVlZGl0LmggbXVzZS0wLjYuMi1wYXRjaGVkL3dhdmVlZGl0L3dhdmVlZGl0LmgKLS0tIG11c2Ut
MC42LjIvd2F2ZWVkaXQvd2F2ZWVkaXQuaAkyMDAzLTEwLTI5IDEwOjA2OjE0LjAwMDAwMDAwMCAr
MDAwMAorKysgbXVzZS0wLjYuMi1wYXRjaGVkL3dhdmVlZGl0L3dhdmVlZGl0LmgJMjAwNC0wNi0y
OSAwMDoxMzozMC40MzY5MTU5OTcgKzAwMDAKQEAgLTQ4LDcgKzQ4LDcgQEAKICAgICAgIHZvaWQg
c29sb0NoYW5nZWQoYm9vbCBmbGFnKTsKIAogICAgc2lnbmFsczoKLSAgICAgIHZvaWQgZGVsZXRl
ZChpbnQpOworICAgICAgdm9pZCBkZWxldGVkKHZvaWQqKTsKIAogICAgcHVibGljOgogICAgICAg
V2F2ZUVkaXQoUGFydExpc3QqKTsKCg==
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34440</attachid>
            <date>2004-06-29 12:49 0000</date>
            <desc>Memory patch </desc>
            <filename>museseq-0.6.2-memory.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">ZGlmZiAtTmF1ciBtdXNlLTAuNi4yL21lbW9yeS5jcHAgbXVzZS0wLjYuMi1wYXRjaGVkL21lbW9y
eS5jcHAKLS0tIG11c2UtMC42LjIvbWVtb3J5LmNwcAkyMDAzLTEwLTI5IDEwOjA0OjU5LjAwMDAw
MDAwMCArMDAwMAorKysgbXVzZS0wLjYuMi1wYXRjaGVkL21lbW9yeS5jcHAJMjAwNC0wNi0yOSAx
ODo1MjoxNi42MzQzMTQzMzMgKzAwMDAKQEAgLTQ1LDcgKzQ1LDcgQEAKIAogdm9pZCBQb29sOjpn
cm93KGludCBpZHgpCiAgICAgICB7Ci0gICAgICBpbnQgZXNpemUgPSAoaWR4KzEpICogc2l6ZW9m
KGludCk7CisgICAgICBpbnQgZXNpemUgPSAoaWR4KzEpICogc2l6ZW9mKHZvaWQqKTsgLy9qdXN0
IGd1ZXNzaW5nIGhlcmUKIAogICAgICAgQ2h1bmsqIG4gICAgPSBuZXcgQ2h1bms7CiAgICAgICBu
LT5uZXh0ICAgICA9IGNodW5rc1tpZHhdOwpkaWZmIC1OYXVyIG11c2UtMC42LjIvbWVtb3J5Lmgg
bXVzZS0wLjYuMi1wYXRjaGVkL21lbW9yeS5oCi0tLSBtdXNlLTAuNi4yL21lbW9yeS5oCTIwMDQt
MDYtMjkgMTg6NTQ6NTMuNDE2ODE2OTM5ICswMDAwCisrKyBtdXNlLTAuNi4yLXBhdGNoZWQvbWVt
b3J5LmgJMjAwNC0wNi0yOSAxODo1Mzo1NS41NjcyMjUwODUgKzAwMDAKQEAgLTI0LDExICsyNCwx
MSBAQAogICAgICAgICAgICAgVmVyd2VpcyogbmV4dDsKICAgICAgICAgICAgIH07CiAgICAgICBz
dHJ1Y3QgQ2h1bmsgewotICAgICAgICAgICAgZW51bSB7IHNpemUgPSA0ICogMTAyNCB9OworICAg
ICAgICAgICAgZW51bSB7IHNpemUgPSBzaXplb2Yodm9pZCopICogMTAyNCB9OwogICAgICAgICAg
ICAgQ2h1bmsqIG5leHQ7CiAgICAgICAgICAgICBjaGFyIG1lbVtzaXplXTsKICAgICAgICAgICAg
IH07Ci0gICAgICBlbnVtIHsgZGltZW5zaW9uID0gOCB9OworICAgICAgZW51bSB7IGRpbWVuc2lv
biA9IDQqc2l6ZW9mKHZvaWQqKSB9OyAvL21heWJlIDIqc2l6ZW9mKHZvaWQqKSB3YXMgbWVhbnQg
Li4gbm9ib2R5IGtub3dzCiAgICAgICBDaHVuayogY2h1bmtzW2RpbWVuc2lvbl07CiAgICAgICBW
ZXJ3ZWlzKiBoZWFkW2RpbWVuc2lvbl07CiAgICAgICBQb29sKFBvb2wmKTsKQEAgLTQ4LDEwICs0
OCwxMCBAQAogCiBpbmxpbmUgdm9pZCogUG9vbDo6YWxsb2Moc2l6ZV90IG4pCiAgICAgICB7Ci0g
ICAgICBpbnQgaWR4ID0gKChuICsgc2l6ZW9mKGludCkgLSAxKSAvIHNpemVvZihpbnQpKSAtIDE7
CisgICAgICBpbnQgaWR4ID0gKChuICsgc2l6ZW9mKHZvaWQqKSAtIDEpIC8gc2l6ZW9mKHZvaWQq
KSkgLSAxOyAvLyB3aGF0IGRvZXMgdGhhdCBmb3JtdWxhciBtZWFuPwogICAgICAgaWYgKGlkeCA+
PSBkaW1lbnNpb24pIHsKLSAgICAgICAgICAgIHByaW50ZigicGFuaWM6IGFsbG9jICVsdVxuIiwg
bik7Ci0gICAgICAgICAgICBleGl0KC0xKTsKKwkJICBwcmludGYoIlVzaW5nIHN0ZC1hbGxvY2F0
b3IgJWx1IGNoYXJhY3RlcnMgcmVxdWVzdGVkIixuKTsKKwkJICByZXR1cm4gOjpvcGVyYXRvciBu
ZXcobik7CiAgICAgICAgICAgICB9CiAgICAgICBpZiAoaGVhZFtpZHhdID09IDApCiAgICAgICAg
ICAgICBncm93KGlkeCk7CkBAIC02NiwxMCArNjYsMTAgQEAKIAogaW5saW5lIHZvaWQgUG9vbDo6
ZnJlZSh2b2lkKiBiLCBzaXplX3QgbikKICAgICAgIHsKLSAgICAgIGludCBpZHggPSAoKG4gKyBz
aXplb2YoaW50KSAtIDEpIC8gc2l6ZW9mKGludCkpIC0gMTsKKyAgICAgIGludCBpZHggPSAoKG4g
KyBzaXplb2Yodm9pZCopIC0gMSkgLyBzaXplb2Yodm9pZCopKSAtIDE7CiAgICAgICBpZiAoaWR4
ID49IGRpbWVuc2lvbikgewotICAgICAgICAgICAgcHJpbnRmKCJwYW5pYzogYWxsb2MgJWx1XG4i
LCBuKTsKLSAgICAgICAgICAgIGV4aXQoLTEpOworCQkgIHByaW50ZigiVXNpbmcgc3RkLWRlYWxs
b2NhdG9yICVsdSBjaGFyYWN0ZXJzIHRvIGJlIGZyZWVkIixuKTsKKwkJICByZXR1cm4gOjpvcGVy
YXRvciBkZWxldGUoYik7CiAgICAgICAgICAgICB9CiAgICAgICBWZXJ3ZWlzKiBwID0gc3RhdGlj
X2Nhc3Q8VmVyd2Vpcyo+KGIpOwogICAgICAgcC0+bmV4dCA9IGhlYWRbaWR4XTsKCg==
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34448</attachid>
            <date>2004-06-29 14:36 0000</date>
            <desc>new int-&gt;void* patch</desc>
            <filename>museseq-0.6.2-amd64.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">ZGlmZiAtTnVyIG11c2UtMC42LjIvYXBwLmNwcCBtdXNlLTAuNi4yLXBhdGNoZWQvYXBwLmNwcAot
LS0gbXVzZS0wLjYuMi9hcHAuY3BwCTIwMDMtMTEtMDEgMTk6NDk6MDYuMDAwMDAwMDAwICswMDAw
CisrKyBtdXNlLTAuNi4yLXBhdGNoZWQvYXBwLmNwcAkyMDA0LTA2LTI5IDAwOjA1OjM1LjcxMjUy
NTM4MSArMDAwMApAQCAtMTE5MCw3ICsxMTkwLDcgQEAKICAgICAgICAgICAgIHNvbmctPnNldE5h
bWUocHJvamVjdC5iYXNlTmFtZSgpKTsKICAgICAgIHNldENhcHRpb24oUVN0cmluZygiTXVzRTog
U29uZzogIikgKyBwcm9qZWN0LmJhc2VOYW1lKCkpOwogICAgICAgYXJyYW5nZXItPnJlc2V0KCk7
Ci0gICAgICBhcnJhbmdlci0+c2V0TW9kZShpbnQoc29uZy0+bXR5cGUoKSkpOworICAgICAgYXJy
YW5nZXItPnNldE1vZGUobG9uZyhzb25nLT5tdHlwZSgpKSk7CiAgICAgICBuZXdTb25nRmxhZyA9
IHRydWU7CiAgICAgICBzb25nLT5kaXJ0eSA9IGZhbHNlOwogCkBAIC0xMjU3LDggKzEyNTcsOCBA
QAogICAgICAgewogICAgICAgUGlhbm9Sb2xsKiBwaWFub3JvbGwgPSBuZXcgUGlhbm9Sb2xsKHBs
LCB0aGlzKTsKICAgICAgIHBpYW5vcm9sbC0+c2hvdygpOwotICAgICAgdG9wbGV2ZWxzLnB1c2hf
YmFjayhUb3BsZXZlbChUb3BsZXZlbDo6UElBTk9fUk9MTCwgaW50KHBpYW5vcm9sbCksIHBpYW5v
cm9sbCkpOwotICAgICAgY29ubmVjdChwaWFub3JvbGwsIFNJR05BTChkZWxldGVkKGludCkpLCBT
TE9UKHRvcGxldmVsRGVsZXRlZChpbnQpKSk7CisgICAgICB0b3BsZXZlbHMucHVzaF9iYWNrKFRv
cGxldmVsKCBUb3BsZXZlbDo6UElBTk9fUk9MTCwgcGlhbm9yb2xsLCBwaWFub3JvbGwpKTsKKyAg
ICAgIGNvbm5lY3QocGlhbm9yb2xsLCBTSUdOQUwoZGVsZXRlZCh2b2lkKikpLCBTTE9UKHRvcGxl
dmVsRGVsZXRlZCh2b2lkKikpKTsKICAgICAgIH0KIAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTEyNzcsOCArMTI3Nyw4IEBA
CiAgICAgICB7CiAgICAgICBTY29yZSogc2NvcmVFZGl0b3IgPSBuZXcgU2NvcmUocGwpOwogICAg
ICAgc2NvcmVFZGl0b3ItPnNob3coKTsKLSAgICAgIHRvcGxldmVscy5wdXNoX2JhY2soVG9wbGV2
ZWwoVG9wbGV2ZWw6Ok5PVEVOLCBpbnQoc2NvcmVFZGl0b3IpLCBzY29yZUVkaXRvcikpOwotICAg
ICAgY29ubmVjdChzY29yZUVkaXRvciwgU0lHTkFMKGRlbGV0ZWQoaW50KSksIFNMT1QodG9wbGV2
ZWxEZWxldGVkKGludCkpKTsKKyAgICAgIHRvcGxldmVscy5wdXNoX2JhY2soVG9wbGV2ZWwoVG9w
bGV2ZWw6Ok5PVEVOLCBzY29yZUVkaXRvciwgc2NvcmVFZGl0b3IpKTsKKyAgICAgIGNvbm5lY3Qo
c2NvcmVFZGl0b3IsIFNJR05BTChkZWxldGVkKHZvaWQqKSksIFNMT1QodG9wbGV2ZWxEZWxldGVk
KHZvaWQqKSkpOwogICAgICAgfQogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTI5Nyw4ICsxMjk3LDggQEAKICAgICAgIHsK
ICAgICAgIExpc3RFZGl0KiBsaXN0RWRpdG9yID0gbmV3IExpc3RFZGl0KHBsKTsKICAgICAgIGxp
c3RFZGl0b3ItPnNob3coKTsKLSAgICAgIHRvcGxldmVscy5wdXNoX2JhY2soVG9wbGV2ZWwoVG9w
bGV2ZWw6OkxJU1RFLCBpbnQobGlzdEVkaXRvciksIGxpc3RFZGl0b3IpKTsKLSAgICAgIGNvbm5l
Y3QobGlzdEVkaXRvciwgU0lHTkFMKGRlbGV0ZWQoaW50KSksIFNMT1QodG9wbGV2ZWxEZWxldGVk
KGludCkpKTsKKyAgICAgIHRvcGxldmVscy5wdXNoX2JhY2soVG9wbGV2ZWwoVG9wbGV2ZWw6OkxJ
U1RFLCBsaXN0RWRpdG9yLCBsaXN0RWRpdG9yKSk7CisgICAgICBjb25uZWN0KGxpc3RFZGl0b3Is
IFNJR05BTChkZWxldGVkKHZvaWQqKSksIFNMT1QodG9wbGV2ZWxEZWxldGVkKHZvaWQqKSkpOwog
ICAgICAgfQogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQpAQCAtMTMwOSw4ICsxMzA5LDggQEAKICAgICAgIHsKICAgICAgIE1hc3Rl
ckVkaXQqIG1hc3RlckVkaXRvciA9IG5ldyBNYXN0ZXJFZGl0KCk7CiAgICAgICBtYXN0ZXJFZGl0
b3ItPnNob3coKTsKLSAgICAgIHRvcGxldmVscy5wdXNoX2JhY2soVG9wbGV2ZWwoVG9wbGV2ZWw6
Ok1BU1RFUiwgaW50KG1hc3RlckVkaXRvciksIG1hc3RlckVkaXRvcikpOwotICAgICAgY29ubmVj
dChtYXN0ZXJFZGl0b3IsIFNJR05BTChkZWxldGVkKGludCkpLCBTTE9UKHRvcGxldmVsRGVsZXRl
ZChpbnQpKSk7CisgICAgICB0b3BsZXZlbHMucHVzaF9iYWNrKFRvcGxldmVsKFRvcGxldmVsOjpN
QVNURVIsIG1hc3RlckVkaXRvciwgbWFzdGVyRWRpdG9yKSk7CisgICAgICBjb25uZWN0KG1hc3Rl
ckVkaXRvciwgU0lHTkFMKGRlbGV0ZWQodm9pZCopKSwgU0xPVCh0b3BsZXZlbERlbGV0ZWQodm9p
ZCopKSk7CiAgICAgICB9CiAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMzIxLDggKzEzMjEsOCBAQAogICAgICAgewogICAg
ICAgTE1hc3RlciogbG1hc3RlciA9IG5ldyBMTWFzdGVyKCk7CiAgICAgICBsbWFzdGVyLT5zaG93
KCk7Ci0gICAgICB0b3BsZXZlbHMucHVzaF9iYWNrKFRvcGxldmVsKFRvcGxldmVsOjpMTUFTVEVS
LCBpbnQobG1hc3RlciksIGxtYXN0ZXIpKTsKLSAgICAgIGNvbm5lY3QobG1hc3RlciwgU0lHTkFM
KGRlbGV0ZWQoaW50KSksIFNMT1QodG9wbGV2ZWxEZWxldGVkKGludCkpKTsKKyAgICAgIHRvcGxl
dmVscy5wdXNoX2JhY2soVG9wbGV2ZWwoVG9wbGV2ZWw6OkxNQVNURVIsIGxtYXN0ZXIsIGxtYXN0
ZXIpKTsKKyAgICAgIGNvbm5lY3QobG1hc3RlciwgU0lHTkFMKGRlbGV0ZWQodm9pZCopKSwgU0xP
VCh0b3BsZXZlbERlbGV0ZWQodm9pZCopKSk7CiAgICAgICB9CiAKIC8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMzQxLDggKzEz
NDEsOCBAQAogICAgICAgewogICAgICAgRHJ1bUVkaXQqIGRydW1FZGl0b3IgPSBuZXcgRHJ1bUVk
aXQocGwsIHRoaXMpOwogICAgICAgZHJ1bUVkaXRvci0+c2hvdygpOwotICAgICAgdG9wbGV2ZWxz
LnB1c2hfYmFjayhUb3BsZXZlbChUb3BsZXZlbDo6RFJVTSwgaW50KGRydW1FZGl0b3IpLCBkcnVt
RWRpdG9yKSk7Ci0gICAgICBjb25uZWN0KGRydW1FZGl0b3IsIFNJR05BTChkZWxldGVkKGludCkp
LCBTTE9UKHRvcGxldmVsRGVsZXRlZChpbnQpKSk7CisgICAgICB0b3BsZXZlbHMucHVzaF9iYWNr
KFRvcGxldmVsKFRvcGxldmVsOjpEUlVNLCBkcnVtRWRpdG9yLCBkcnVtRWRpdG9yKSk7CisgICAg
ICBjb25uZWN0KGRydW1FZGl0b3IsIFNJR05BTChkZWxldGVkKHZvaWQqKSksIFNMT1QodG9wbGV2
ZWxEZWxldGVkKHZvaWQqKSkpOwogICAgICAgfQogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTM2Myw4ICsxMzYzLDggQEAK
ICAgICAgIHsKICAgICAgIFdhdmVFZGl0KiB3YXZlRWRpdG9yID0gbmV3IFdhdmVFZGl0KHBsKTsK
ICAgICAgIHdhdmVFZGl0b3ItPnNob3coKTsKLSAgICAgIHRvcGxldmVscy5wdXNoX2JhY2soVG9w
bGV2ZWwoVG9wbGV2ZWw6OldBVkUsIGludCh3YXZlRWRpdG9yKSwgd2F2ZUVkaXRvcikpOwotICAg
ICAgY29ubmVjdCh3YXZlRWRpdG9yLCBTSUdOQUwoZGVsZXRlZChpbnQpKSwgU0xPVCh0b3BsZXZl
bERlbGV0ZWQoaW50KSkpOworICAgICAgdG9wbGV2ZWxzLnB1c2hfYmFjayhUb3BsZXZlbChUb3Bs
ZXZlbDo6V0FWRSwgd2F2ZUVkaXRvciwgd2F2ZUVkaXRvcikpOworICAgICAgY29ubmVjdCh3YXZl
RWRpdG9yLCBTSUdOQUwoZGVsZXRlZCh2b2lkKikpLCBTTE9UKHRvcGxldmVsRGVsZXRlZCh2b2lk
KikpKTsKICAgICAgIH0KIAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTEzNzUsMTAgKzEzNzUsMTAgQEAKICAgICAgIHsKICAg
ICAgIGlmIChtaWRpTWl4ZXIgPT0gMCkgewogICAgICAgICAgICAgbWlkaU1peGVyID0gbmV3IE1p
eGVyKCk7Ci0gICAgICAgICAgICB0b3BsZXZlbHMucHVzaF9iYWNrKFRvcGxldmVsKFRvcGxldmVs
OjpNX01JWEVSLCBpbnQobWlkaU1peGVyKSwgbWlkaU1peGVyKSk7CisgICAgICAgICAgICB0b3Bs
ZXZlbHMucHVzaF9iYWNrKFRvcGxldmVsKFRvcGxldmVsOjpNX01JWEVSLCBtaWRpTWl4ZXIsIG1p
ZGlNaXhlcikpOwogICAgICAgICAgICAgY29ubmVjdChtaWRpTWl4ZXIsIFNJR05BTChjdHJsQ2hh
bmdlZChpbnQsaW50LGludCxpbnQpKSwgc29uZywgU0xPVChjdHJsQ2hhbmdlZChpbnQsaW50LGlu
dCxpbnQpKSk7CiAgICAgICAgICAgICBjb25uZWN0KG1pZGlNaXhlciwgU0lHTkFMKG1hc3RlclZv
bENoYW5nZWQoaW50KSksIHNvbmcsIFNMT1QobWFzdGVyVm9sQ2hhbmdlZChpbnQpKSk7Ci0gICAg
ICAgICAgICBjb25uZWN0KG1pZGlNaXhlciwgU0lHTkFMKGRlbGV0ZWQoaW50KSksIFNMT1QodG9w
bGV2ZWxEZWxldGVkKGludCkpKTsKKyAgICAgICAgICAgIGNvbm5lY3QobWlkaU1peGVyLCBTSUdO
QUwoZGVsZXRlZCh2b2lkKikpLCBTTE9UKHRvcGxldmVsRGVsZXRlZCh2b2lkKikpKTsKICAgICAg
ICAgICAgIH0KICAgICAgIG1pZGlNaXhlci0+c2hvdygpOwogICAgICAgbWVudV9mdW5jdGlvbnMt
PnNldEl0ZW1DaGVja2VkKG1pZGlkMSwgdHJ1ZSk7CkBAIC0xNDAxLDggKzE0MDEsOCBAQAogICAg
ICAgewogICAgICAgaWYgKG1hcmtlclZpZXcgPT0gMCkgewogICAgICAgICAgICAgbWFya2VyVmll
dyA9IG5ldyBNYXJrZXJWaWV3KHRoaXMpOwotICAgICAgICAgICAgdG9wbGV2ZWxzLnB1c2hfYmFj
ayhUb3BsZXZlbChUb3BsZXZlbDo6TUFSS0VSLCBpbnQobWFya2VyVmlldyksIG1hcmtlclZpZXcp
KTsKLS8vICAgICAgICAgICAgY29ubmVjdChtYXJrZXJWaWV3LCBTSUdOQUwoZGVsZXRlZChpbnQp
KSwgU0xPVCh0b3BsZXZlbERlbGV0ZWQoaW50KSkpOworICAgICAgICAgICAgdG9wbGV2ZWxzLnB1
c2hfYmFjayhUb3BsZXZlbChUb3BsZXZlbDo6TUFSS0VSLCBtYXJrZXJWaWV3LCBtYXJrZXJWaWV3
KSk7CisvLyAgICAgICAgICAgIGNvbm5lY3QobWFya2VyVmlldywgU0lHTkFMKGRlbGV0ZWQodm9p
ZCopKSwgU0xPVCh0b3BsZXZlbERlbGV0ZWQodm9pZCopKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICBtYXJrZXJWaWV3LT5zaG93KCk7CiAgICAgICB9CkBAIC0xNDE1LDggKzE0MTUsOCBAQAogICAg
ICAgewogICAgICAgaWYgKGF1ZGlvTWl4ZXIgPT0gMCkgewogICAgICAgICAgICAgYXVkaW9NaXhl
ciA9IG5ldyBBdWRpb01peGVyQXBwKCk7Ci0gICAgICAgICAgICB0b3BsZXZlbHMucHVzaF9iYWNr
KFRvcGxldmVsKFRvcGxldmVsOjpBX01JWEVSLCBpbnQoYXVkaW9NaXhlciksIGF1ZGlvTWl4ZXIp
KTsKLSAgICAgICAgICAgIGNvbm5lY3QoYXVkaW9NaXhlciwgU0lHTkFMKGRlbGV0ZWQoaW50KSks
IFNMT1QodG9wbGV2ZWxEZWxldGVkKGludCkpKTsKKyAgICAgICAgICAgIHRvcGxldmVscy5wdXNo
X2JhY2soVG9wbGV2ZWwoVG9wbGV2ZWw6OkFfTUlYRVIsIGF1ZGlvTWl4ZXIsIGF1ZGlvTWl4ZXIp
KTsKKyAgICAgICAgICAgIGNvbm5lY3QoYXVkaW9NaXhlciwgU0lHTkFMKGRlbGV0ZWQodm9pZCop
KSwgU0xPVCh0b3BsZXZlbERlbGV0ZWQodm9pZCopKSk7CiAgICAgICAgICAgICB9CiAgICAgICBh
dWRpb01peGVyLT5zaG93KCk7CiAgICAgICBtZW51X2F1ZGlvLT5zZXRJdGVtQ2hlY2tlZChhaWQx
LCB0cnVlKTsKQEAgLTE0MzAsOCArMTQzMCw4IEBACiAgICAgICB7CiAgICAgICBpZiAoY2xpcExp
c3RFZGl0ID09IDApIHsKICAgICAgICAgICAgIGNsaXBMaXN0RWRpdCA9IG5ldyBDbGlwTGlzdEVk
aXQoKTsKLSAgICAgICAgICAgIHRvcGxldmVscy5wdXNoX2JhY2soVG9wbGV2ZWwoVG9wbGV2ZWw6
OkNMSVBMSVNULCBpbnQoY2xpcExpc3RFZGl0KSwgY2xpcExpc3RFZGl0KSk7Ci0gICAgICAgICAg
ICBjb25uZWN0KGNsaXBMaXN0RWRpdCwgU0lHTkFMKGRlbGV0ZWQoaW50KSksIFNMT1QodG9wbGV2
ZWxEZWxldGVkKGludCkpKTsKKyAgICAgICAgICAgIHRvcGxldmVscy5wdXNoX2JhY2soVG9wbGV2
ZWwoVG9wbGV2ZWw6OkNMSVBMSVNULCBjbGlwTGlzdEVkaXQsIGNsaXBMaXN0RWRpdCkpOworICAg
ICAgICAgICAgY29ubmVjdChjbGlwTGlzdEVkaXQsIFNJR05BTChkZWxldGVkKHZvaWQqKSksIFNM
T1QodG9wbGV2ZWxEZWxldGVkKHZvaWQqKSkpOwogICAgICAgICAgICAgfQogICAgICAgY2xpcExp
c3RFZGl0LT5zaG93KCk7CiAgICAgICBtZW51X2F1ZGlvLT5zZXRJdGVtQ2hlY2tlZChhaWQyLCB0
cnVlKTsKQEAgLTE0NzYsMTAgKzE0NzYsMTAgQEAKIC8vICAgdG9wbGV2ZWxEZWxldGVkCiAvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci12b2lkIE11c0U6OnRvcGxldmVsRGVsZXRlZChpbnQgdGwpCit2b2lkIE11c0U6OnRvcGxldmVs
RGVsZXRlZCh2b2lkKiB0bCkKICAgICAgIHsKICAgICAgIGZvciAoaVRvcGxldmVsIGkgPSB0b3Bs
ZXZlbHMuYmVnaW4oKTsgaSAhPSB0b3BsZXZlbHMuZW5kKCk7ICsraSkgewotICAgICAgICAgICAg
aWYgKGktPm9iamVjdCgpID09IHRsKSB7CisgICAgICAgICAgICBpZiAoIGktPm9iamVjdCgpID09
IHRsICkgewogICAgICAgICAgICAgICAgICAgc3dpdGNoKGktPnR5cGUoKSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBUb3BsZXZlbDo6TV9NSVhFUjoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1lbnVfZnVuY3Rpb25zLT5zZXRJdGVtQ2hlY2tlZChtaWRpZDEsIGZhbHNl
KTsKQEAgLTIxNTYsNyArMjE1Niw3IEBACiAgICAgICAgICAgICBUb3BsZXZlbCB0bCA9ICppOwog
ICAgICAgICAgICAgaWYgKHRsLnR5cGUoKSA9PSBUb3BsZXZlbDo6V0FWRSkgewogICAgICAgICAg
ICAgICAgICAgVG9wV2luKiBvYmogPSB0bC5jb2JqZWN0KCk7Ci0gICAgICAgICAgICAgICAgICAo
KFdhdmVFZGl0Kikob2JqKSktPnNldEJnKFdhdmVFZGl0Ojpjb25maWdCZygpKTsKKyAgICAgICAg
ICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8V2F2ZUVkaXQqPihvYmopLT5zZXRCZyhXYXZlRWRp
dDo6Y29uZmlnQmcoKSk7CiAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAg
ICB9CkBAIC0yNTkzLDcgKzI1OTMsNyBAQAogYWdhaW46CiAgICAgICBmb3IgKGlUb3BsZXZlbCBp
ID0gdG9wbGV2ZWxzLmJlZ2luKCk7IGkgIT0gdG9wbGV2ZWxzLmVuZCgpOyArK2kpIHsKICAgICAg
ICAgICAgIFRvcGxldmVsIHRsID0gKmk7Ci0gICAgICAgICAgICBpbnQgb2JqID0gdGwub2JqZWN0
KCk7CisgICAgICAgICAgICB2b2lkKiBvYmogPSB0bC5vYmplY3QoKTsKICAgICAgICAgICAgIHN3
aXRjaCAodGwudHlwZSgpKSB7CiAgICAgICAgICAgICAgICAgICBjYXNlIFRvcGxldmVsOjpBX01J
WEVSOgogICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGF1ZGlvTWl4ZXI7CkBAIC0yNjEx
LDcgKzI2MTEsNyBAQAogICAgICAgICAgICAgICAgICAgY2FzZSBUb3BsZXZlbDo6V0FWRToKICAg
ICAgICAgICAgICAgICAgIGNhc2UgVG9wbGV2ZWw6OkxNQVNURVI6CiAgICAgICAgICAgICAgICAg
ICBjYXNlIFRvcGxldmVsOjpNSVhET1dOOgotICAgICAgICAgICAgICAgICAgICAgICAgKChRV2lk
Z2V0Kikob2JqKSktPmNsb3NlKHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDxRV2lkZ2V0Kj4ob2JqKS0+Y2xvc2UodHJ1ZSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBnb3RvIGFnYWluOwogICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpk
aWZmIC1OdXIgbXVzZS0wLjYuMi9hcHAuaCBtdXNlLTAuNi4yLXBhdGNoZWQvYXBwLmgKLS0tIG11
c2UtMC42LjIvYXBwLmgJMjAwMy0xMC0zMCAxMjoxMTo1MC4wMDAwMDAwMDAgKzAwMDAKKysrIG11
c2UtMC42LjItcGF0Y2hlZC9hcHAuaAkyMDA0LTA2LTI4IDIzOjUyOjU0LjM1ODM1NTgwNiArMDAw
MApAQCAtMjI3LDcgKzIyNyw3IEBACiAgICAgICB2b2lkIGN0cmxDaGFuZ2VkKCk7CiAgICAgICB2
b2lkIGxvYWRQcm9qZWN0RmlsZShjb25zdCBRU3RyaW5nJik7CiAgICAgICB2b2lkIHN0YXJ0QXVk
aW9NaXhlcigpOwotICAgICAgdm9pZCB0b3BsZXZlbERlbGV0ZWQoaW50IHRsKTsKKyAgICAgIHZv
aWQgdG9wbGV2ZWxEZWxldGVkKHZvaWQqIHRsKTsKICAgICAgIHZvaWQgbG9hZFRoZW1lKFFTdHJp
bmcpOwogICAgICAgdm9pZCBzZXRUcmFuc3BvcnRIYW5kbGVDb2xvcihRQ29sb3IpOwogICAgICAg
dm9pZCBzZXRCaWdUaW1lRm9yZWdyb3VuZENvbG9yKFFDb2xvcik7CmRpZmYgLU51ciBtdXNlLTAu
Ni4yL2NsaXBsaXN0L2NsaXBsaXN0LmNwcCBtdXNlLTAuNi4yLXBhdGNoZWQvY2xpcGxpc3QvY2xp
cGxpc3QuY3BwCi0tLSBtdXNlLTAuNi4yL2NsaXBsaXN0L2NsaXBsaXN0LmNwcAkyMDAzLTEwLTI5
IDEwOjA2OjM3LjAwMDAwMDAwMCArMDAwMAorKysgbXVzZS0wLjYuMi1wYXRjaGVkL2NsaXBsaXN0
L2NsaXBsaXN0LmNwcAkyMDA0LTA2LTI5IDAwOjEzOjU5Ljc2NzE0OTYyMCArMDAwMApAQCAtMTg0
LDcgKzE4NCw3IEBACiAKIHZvaWQgQ2xpcExpc3RFZGl0OjpjbG9zZUV2ZW50KFFDbG9zZUV2ZW50
KiBlKQogICAgICAgewotICAgICAgZW1pdCBkZWxldGVkKChpbnQpdGhpcyk7CisgICAgICBlbWl0
IGRlbGV0ZWQodGhpcyk7CiAgICAgICBlLT5hY2NlcHQoKTsKICAgICAgIH0KIApkaWZmIC1OdXIg
bXVzZS0wLjYuMi9jbGlwbGlzdC9jbGlwbGlzdC5oIG11c2UtMC42LjItcGF0Y2hlZC9jbGlwbGlz
dC9jbGlwbGlzdC5oCi0tLSBtdXNlLTAuNi4yL2NsaXBsaXN0L2NsaXBsaXN0LmgJMjAwMy0xMC0y
OSAxMDowNjozNi4wMDAwMDAwMDAgKzAwMDAKKysrIG11c2UtMC42LjItcGF0Y2hlZC9jbGlwbGlz
dC9jbGlwbGlzdC5oCTIwMDQtMDYtMjkgMDA6MTQ6MTEuMDgwMzExMTMzICswMDAwCkBAIC0zNyw3
ICszNyw3IEBACiAgICAgICB2b2lkIGNsaWNrZWQoUUxpc3RWaWV3SXRlbSopOwogCiAgICBzaWdu
YWxzOgotICAgICAgdm9pZCBkZWxldGVkKGludCk7CisgICAgICB2b2lkIGRlbGV0ZWQodm9pZCop
OwogCiAgICBwdWJsaWM6CiAgICAgICBDbGlwTGlzdEVkaXQoKTsKZGlmZiAtTnVyIG11c2UtMC42
LjIvY29iamVjdC5oIG11c2UtMC42LjItcGF0Y2hlZC9jb2JqZWN0LmgKLS0tIG11c2UtMC42LjIv
Y29iamVjdC5oCTIwMDMtMTAtMjkgMTA6MDU6MTAuMDAwMDAwMDAwICswMDAwCisrKyBtdXNlLTAu
Ni4yLXBhdGNoZWQvY29iamVjdC5oCTIwMDQtMDYtMjkgMDA6MDI6MzAuMTg3NDAzNTQwICswMDAw
CkBAIC00NCwxOCArNDQsMTYgQEAKICAgICAgICAgICwgTV9QQVRDSEJBWQogI2VuZGlmIC8qIFBB
VENIQkFZICovCiAgICAgICAgICB9OwotICAgICAgVG9wbGV2ZWwoVG9wbGV2ZWxUeXBlIHQsIGlu
dCBvYmosIFRvcFdpbiogY29iaikgewotICAgICAgICAgICAgX3R5cGUgPSB0OwotICAgICAgICAg
ICAgX29iamVjdCA9IG9iajsKLSAgICAgICAgICAgIF9jb2JqZWN0ID0gY29iajsKLSAgICAgICAg
ICAgIH0KKwkgIC8vIFJldGhpbmsgdGhhdCA6IHNhdmluZyB2b2lkKl9vYmplY3QgKCBmb3JtZXJs
eSBpbnQpIGFuZCBUb3BXaW4qIF9jb2JqZWN0IG1ha2VzIG5vIHNlbnNlIQorICAgICAgVG9wbGV2
ZWwoVG9wbGV2ZWxUeXBlIHQsIHZvaWQgKiBvYmosIFRvcFdpbiogY29iaikKKwkgIDogX3R5cGUo
dCksIF9vYmplY3Qob2JqKSwgX2NvYmplY3QoY29iail7IH0KICAgICAgIFRvcGxldmVsVHlwZSB0
eXBlKCkgY29uc3QgeyByZXR1cm4gX3R5cGU7IH0KLSAgICAgIGludCBvYmplY3QoKSAgICAgICAg
Y29uc3QgeyByZXR1cm4gX29iamVjdDsgfQorICAgICAgdm9pZCogb2JqZWN0KCkgICAgICAgIGNv
bnN0IHsgcmV0dXJuIF9vYmplY3Q7IH0KICAgICAgIFRvcFdpbiogY29iamVjdCgpICAgY29uc3Qg
eyByZXR1cm4gX2NvYmplY3Q7IH0KIAogICAgcHJpdmF0ZToKICAgICAgIFRvcGxldmVsVHlwZSBf
dHlwZTsKLSAgICAgIGludCBfb2JqZWN0OworICAgICAgdm9pZCogX29iamVjdDsKICAgICAgIFRv
cFdpbiogX2NvYmplY3Q7CiAgICAgICB9OwogCmRpZmYgLU51ciBtdXNlLTAuNi4yL2xpc3RlL2xp
c3RlZGl0LmNwcCBtdXNlLTAuNi4yLXBhdGNoZWQvbGlzdGUvbGlzdGVkaXQuY3BwCi0tLSBtdXNl
LTAuNi4yL2xpc3RlL2xpc3RlZGl0LmNwcAkyMDAzLTEwLTI5IDEwOjA1OjIyLjAwMDAwMDAwMCAr
MDAwMAorKysgbXVzZS0wLjYuMi1wYXRjaGVkL2xpc3RlL2xpc3RlZGl0LmNwcAkyMDA0LTA2LTI4
IDIzOjM3OjEzLjAwMDAwMDAwMCArMDAwMApAQCAtMTM5LDcgKzEzOSw3IEBACiAKIHZvaWQgTGlz
dEVkaXQ6OmNsb3NlRXZlbnQoUUNsb3NlRXZlbnQqIGUpCiAgICAgICB7Ci0gICAgICBlbWl0IGRl
bGV0ZWQoKGludCl0aGlzKTsKKyAgICAgIGVtaXQgZGVsZXRlZCh0aGlzKTsKICAgICAgIGUtPmFj
Y2VwdCgpOwogICAgICAgfQogCmRpZmYgLU51ciBtdXNlLTAuNi4yL2xpc3RlL2xpc3RlZGl0Lmgg
bXVzZS0wLjYuMi1wYXRjaGVkL2xpc3RlL2xpc3RlZGl0LmgKLS0tIG11c2UtMC42LjIvbGlzdGUv
bGlzdGVkaXQuaAkyMDAzLTEwLTI5IDEwOjA1OjIyLjAwMDAwMDAwMCArMDAwMAorKysgbXVzZS0w
LjYuMi1wYXRjaGVkL2xpc3RlL2xpc3RlZGl0LmgJMjAwNC0wNi0yOCAyMzozNzoyMy4wMDAwMDAw
MDAgKzAwMDAKQEAgLTU4LDcgKzU4LDcgQEAKICAgICAgIHZvaWQgc29uZ0NoYW5nZWQoaW50KTsK
IAogICAgc2lnbmFsczoKLSAgICAgIHZvaWQgZGVsZXRlZChpbnQpOworICAgICAgdm9pZCBkZWxl
dGVkKHZvaWQqKTsKIAogICAgcHVibGljOgogICAgICAgTGlzdEVkaXQoUGFydExpc3QqKTsKZGlm
ZiAtTnVyIG11c2UtMC42LjIvbWFya2VyL21hcmtlcnZpZXcuY3BwIG11c2UtMC42LjItcGF0Y2hl
ZC9tYXJrZXIvbWFya2Vydmlldy5jcHAKLS0tIG11c2UtMC42LjIvbWFya2VyL21hcmtlcnZpZXcu
Y3BwCTIwMDMtMTAtMjkgMTA6MDY6MTMuMDAwMDAwMDAwICswMDAwCisrKyBtdXNlLTAuNi4yLXBh
dGNoZWQvbWFya2VyL21hcmtlcnZpZXcuY3BwCTIwMDQtMDYtMjggMjM6NDA6NDUuNzc2MTg2OTI2
ICswMDAwCkBAIC0xMzYsNyArMTM2LDcgQEAKIAogdm9pZCBNYXJrZXJWaWV3OjpjbG9zZUV2ZW50
KFFDbG9zZUV2ZW50KiBlKQogICAgICAgewotICAgICAgZW1pdCBkZWxldGVkKChpbnQpdGhpcyk7
CisgICAgICBlbWl0IGRlbGV0ZWQodGhpcyk7CiAgICAgICBlLT5hY2NlcHQoKTsKICAgICAgIH0K
IApkaWZmIC1OdXIgbXVzZS0wLjYuMi9tYXJrZXIvbWFya2Vydmlldy5oIG11c2UtMC42LjItcGF0
Y2hlZC9tYXJrZXIvbWFya2Vydmlldy5oCi0tLSBtdXNlLTAuNi4yL21hcmtlci9tYXJrZXJ2aWV3
LmgJMjAwMy0xMC0yOSAxMDowNjoxMy4wMDAwMDAwMDAgKzAwMDAKKysrIG11c2UtMC42LjItcGF0
Y2hlZC9tYXJrZXIvbWFya2Vydmlldy5oCTIwMDQtMDYtMjggMjM6NDQ6NTEuNzc1OTE0Mzc5ICsw
MDAwCkBAIC02Nyw3ICs2Nyw3IEBACiAgICAgICB2b2lkIHNvbmdDaGFuZ2VkKGludCk7CiAKICAg
IHNpZ25hbHM6Ci0gICAgICB2b2lkIGRlbGV0ZWQoaW50KTsKKyAgICAgIHZvaWQgZGVsZXRlZCh2
b2lkKik7CiAKICAgIHB1YmxpYzoKICAgICAgIE1hcmtlclZpZXcoUVdpZGdldCogcGFyZW50KTsK
ZGlmZiAtTnVyIG11c2UtMC42LjIvbWFzdGVyL2xtYXN0ZXIuY3BwIG11c2UtMC42LjItcGF0Y2hl
ZC9tYXN0ZXIvbG1hc3Rlci5jcHAKLS0tIG11c2UtMC42LjIvbWFzdGVyL2xtYXN0ZXIuY3BwCTIw
MDMtMTAtMjkgMTA6MDY6MTMuMDAwMDAwMDAwICswMDAwCisrKyBtdXNlLTAuNi4yLXBhdGNoZWQv
bWFzdGVyL2xtYXN0ZXIuY3BwCTIwMDQtMDYtMjkgMDA6MTI6MTQuNTgyMjQwODc4ICswMDAwCkBA
IC0yNiw3ICsyNiw3IEBACiAKIHZvaWQgTE1hc3Rlcjo6Y2xvc2VFdmVudChRQ2xvc2VFdmVudCog
ZSkKICAgICAgIHsKLSAgICAgIGVtaXQgZGVsZXRlZCgoaW50KXRoaXMpOworICAgICAgZW1pdCBk
ZWxldGVkKHRoaXMpOwogICAgICAgZS0+YWNjZXB0KCk7CiAgICAgICB9CiAKZGlmZiAtTnVyIG11
c2UtMC42LjIvbWFzdGVyL2xtYXN0ZXIuaCBtdXNlLTAuNi4yLXBhdGNoZWQvbWFzdGVyL2xtYXN0
ZXIuaAotLS0gbXVzZS0wLjYuMi9tYXN0ZXIvbG1hc3Rlci5oCTIwMDMtMTAtMjkgMTA6MDY6MTMu
MDAwMDAwMDAwICswMDAwCisrKyBtdXNlLTAuNi4yLXBhdGNoZWQvbWFzdGVyL2xtYXN0ZXIuaAky
MDA0LTA2LTI5IDAwOjEyOjMyLjEyNzM5MTU0MyArMDAwMApAQCAtNDEsNyArNDEsNyBAQAogICAg
ICAgdm9pZCBzb25nQ2hhbmdlZChpbnQpOwogCiAgICBzaWduYWxzOgotICAgICAgdm9pZCBkZWxl
dGVkKGludCk7CisgICAgICB2b2lkIGRlbGV0ZWQodm9pZCopOwogCiAgICBwdWJsaWM6CiAgICAg
ICBMTWFzdGVyKCk7CmRpZmYgLU51ciBtdXNlLTAuNi4yL21hc3Rlci9tYXN0ZXJlZGl0LmNwcCBt
dXNlLTAuNi4yLXBhdGNoZWQvbWFzdGVyL21hc3RlcmVkaXQuY3BwCi0tLSBtdXNlLTAuNi4yL21h
c3Rlci9tYXN0ZXJlZGl0LmNwcAkyMDAzLTEwLTI5IDEwOjA2OjE0LjAwMDAwMDAwMCArMDAwMAor
KysgbXVzZS0wLjYuMi1wYXRjaGVkL21hc3Rlci9tYXN0ZXJlZGl0LmNwcAkyMDA0LTA2LTI5IDAw
OjEyOjQyLjMzOTczMjAxMSArMDAwMApAQCAtNDksNyArNDksNyBAQAogCiB2b2lkIE1hc3RlckVk
aXQ6OmNsb3NlRXZlbnQoUUNsb3NlRXZlbnQqIGUpCiAgICAgICB7Ci0gICAgICBlbWl0IGRlbGV0
ZWQoKGludCl0aGlzKTsKKyAgICAgIGVtaXQgZGVsZXRlZCh0aGlzKTsKICAgICAgIGUtPmFjY2Vw
dCgpOwogICAgICAgfQogCmRpZmYgLU51ciBtdXNlLTAuNi4yL21hc3Rlci9tYXN0ZXJlZGl0Lmgg
bXVzZS0wLjYuMi1wYXRjaGVkL21hc3Rlci9tYXN0ZXJlZGl0LmgKLS0tIG11c2UtMC42LjIvbWFz
dGVyL21hc3RlcmVkaXQuaAkyMDAzLTEwLTI5IDEwOjA2OjEzLjAwMDAwMDAwMCArMDAwMAorKysg
bXVzZS0wLjYuMi1wYXRjaGVkL21hc3Rlci9tYXN0ZXJlZGl0LmgJMjAwNC0wNi0yOSAwMDoxMjo1
OS4zODI5NjI0MjYgKzAwMDAKQEAgLTU5LDcgKzU5LDcgQEAKIC8vICAgICAgdm9pZCB0ZW1wb0No
YW5nZWQoZG91YmxlKTsKIAogICAgc2lnbmFsczoKLSAgICAgIHZvaWQgZGVsZXRlZChpbnQpOwor
ICAgICAgdm9pZCBkZWxldGVkKHZvaWQqKTsKIAogICAgcHVibGljOgogICAgICAgTWFzdGVyRWRp
dCgpOwpkaWZmIC1OdXIgbXVzZS0wLjYuMi9tZW1vcnkuaCBtdXNlLTAuNi4yLXBhdGNoZWQvbWVt
b3J5LmgKLS0tIG11c2UtMC42LjIvbWVtb3J5LmgJMjAwMy0xMC0yOSAxMDowNToxOC4wMDAwMDAw
MDAgKzAwMDAKKysrIG11c2UtMC42LjItcGF0Y2hlZC9tZW1vcnkuaAkyMDA0LTA2LTI4IDIzOjMw
OjAxLjkwNjQ5NjE5MCArMDAwMApAQCAtNTAsNyArNTAsNyBAQAogICAgICAgewogICAgICAgaW50
IGlkeCA9ICgobiArIHNpemVvZihpbnQpIC0gMSkgLyBzaXplb2YoaW50KSkgLSAxOwogICAgICAg
aWYgKGlkeCA+PSBkaW1lbnNpb24pIHsKLSAgICAgICAgICAgIHByaW50ZigicGFuaWM6IGFsbG9j
ICVkXG4iLCBuKTsKKyAgICAgICAgICAgIHByaW50ZigicGFuaWM6IGFsbG9jICVsdVxuIiwgbik7
CiAgICAgICAgICAgICBleGl0KC0xKTsKICAgICAgICAgICAgIH0KICAgICAgIGlmIChoZWFkW2lk
eF0gPT0gMCkKQEAgLTY4LDcgKzY4LDcgQEAKICAgICAgIHsKICAgICAgIGludCBpZHggPSAoKG4g
KyBzaXplb2YoaW50KSAtIDEpIC8gc2l6ZW9mKGludCkpIC0gMTsKICAgICAgIGlmIChpZHggPj0g
ZGltZW5zaW9uKSB7Ci0gICAgICAgICAgICBwcmludGYoInBhbmljOiBhbGxvYyAlZFxuIiwgbik7
CisgICAgICAgICAgICBwcmludGYoInBhbmljOiBhbGxvYyAlbHVcbiIsIG4pOwogICAgICAgICAg
ICAgZXhpdCgtMSk7CiAgICAgICAgICAgICB9CiAgICAgICBWZXJ3ZWlzKiBwID0gc3RhdGljX2Nh
c3Q8VmVyd2Vpcyo+KGIpOwpkaWZmIC1OdXIgbXVzZS0wLjYuMi9taWRpLmNwcCBtdXNlLTAuNi4y
LXBhdGNoZWQvbWlkaS5jcHAKLS0tIG11c2UtMC42LjIvbWlkaS5jcHAJMjAwMy0xMS0wMSAxODox
Mjo1Mi4wMDAwMDAwMDAgKzAwMDAKKysrIG11c2UtMC42LjItcGF0Y2hlZC9taWRpLmNwcAkyMDA0
LTA2LTI4IDIzOjQ4OjU3LjQ0OTgyNjc2MiArMDAwMApAQCAtNTIyLDkgKzUyMiw5IEBACiAgICAg
ICAgICAgICBNaWRpRXZlbnQqIGV2ZW50ID0gcmVhZEV2ZW50KHRyYWNrKTsKICAgICAgICAgICAg
IGlmIChldmVudCA9PSAwKQogICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBp
ZiAoaW50KGV2ZW50KSA9PSAtMSkKKyAgICAgICAgICAgIGlmIChsb25nKGV2ZW50KSA9PSAtMSkK
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKGludChldmVudCkg
PT0gLTIpICAgICAgICAgLy8gZXJyb3IKKyAgICAgICAgICAgIGlmIChsb25nKGV2ZW50KSA9PSAt
MikgICAgICAgICAvLyBlcnJvcgogICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICBpZiAobGFzdGNoYW4gPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgIGVsLT5hZGQo
ZXZlbnQpOyAgICAgICAgIC8vIGthbm4ga2VpbiBjaGFubmVsIGV2ZW50IHNlaW4KZGlmZiAtTnVy
IG11c2UtMC42LjIvbWlkaWVkaXQvZHJ1bWVkaXQuY3BwIG11c2UtMC42LjItcGF0Y2hlZC9taWRp
ZWRpdC9kcnVtZWRpdC5jcHAKLS0tIG11c2UtMC42LjIvbWlkaWVkaXQvZHJ1bWVkaXQuY3BwCTIw
MDMtMTAtMjkgMTA6MDY6MDguMDAwMDAwMDAwICswMDAwCisrKyBtdXNlLTAuNi4yLXBhdGNoZWQv
bWlkaWVkaXQvZHJ1bWVkaXQuY3BwCTIwMDQtMDYtMjggMjM6MzM6MjYuMDAwMDAwMDAwICswMDAw
CkBAIC0xMzMsNyArMTMzLDcgQEAKICAgICAgIF9kbGlzdFdpZHRoSW5pdCA9ICppdDsgLy9UaGVy
ZSBhcmUgb25seSAyIHZhbHVlcyBzdG9yZWQgaW4gdGhlIHNpemVsaXN0LCBzaXplIG9mIGRsaXN0
IHdpZGdldCBhbmQgZGNhbnZhcyB3aWRnZXQgCiAgICAgICBpdCsrOyAKICAgICAgIF9kY2FudmFz
V2lkdGhJbml0ID0gKml0OyAKLSAgICAgIGVtaXQgZGVsZXRlZCgoaW50KXRoaXMpOworICAgICAg
ZW1pdCBkZWxldGVkKHRoaXMpOwogICAgICAgZS0+YWNjZXB0KCk7CiAgICAgICB9CiAKZGlmZiAt
TnVyIG11c2UtMC42LjIvbWlkaWVkaXQvZHJ1bWVkaXQuaCBtdXNlLTAuNi4yLXBhdGNoZWQvbWlk
aWVkaXQvZHJ1bWVkaXQuaAotLS0gbXVzZS0wLjYuMi9taWRpZWRpdC9kcnVtZWRpdC5oCTIwMDMt
MTAtMjkgMTA6MDY6MTAuMDAwMDAwMDAwICswMDAwCisrKyBtdXNlLTAuNi4yLXBhdGNoZWQvbWlk
aWVkaXQvZHJ1bWVkaXQuaAkyMDA0LTA2LTI4IDIzOjMzOjM5LjAwMDAwMDAwMCArMDAwMApAQCAt
MTIwLDcgKzEyMCw3IEBACiAgICAgICB2b2lkIGRsaXN0U2VsZWN0aW9uQ2hhbmdlZChEcnVtTWFw
Kik7IC8vIGNhbGxlZCBieSBkbGlzdAogCiAgICBzaWduYWxzOgotICAgICAgdm9pZCBkZWxldGVk
KGludCk7CisgICAgICB2b2lkIGRlbGV0ZWQodm9pZCopOwogICAgICAgdm9pZCBrZXlGaWx0ZXJD
aGFuZ2VkKGludCk7CiAKICAgIHB1YmxpYzoKZGlmZiAtTnVyIG11c2UtMC42LjIvbWlkaWVkaXQv
cGlhbm9yb2xsLmNwcCBtdXNlLTAuNi4yLXBhdGNoZWQvbWlkaWVkaXQvcGlhbm9yb2xsLmNwcAot
LS0gbXVzZS0wLjYuMi9taWRpZWRpdC9waWFub3JvbGwuY3BwCTIwMDMtMTAtMjkgMTA6MDY6MDku
MDAwMDAwMDAwICswMDAwCisrKyBtdXNlLTAuNi4yLXBhdGNoZWQvbWlkaWVkaXQvcGlhbm9yb2xs
LmNwcAkyMDA0LTA2LTI4IDIzOjMwOjU2LjAzNzU3MDkwOSArMDAwMApAQCAtNDQ2LDcgKzQ0Niw3
IEBACiAKIHZvaWQgUGlhbm9Sb2xsOjpjbG9zZUV2ZW50KFFDbG9zZUV2ZW50KiBlKQogICAgICAg
ewotICAgICAgZW1pdCBkZWxldGVkKChpbnQpdGhpcyk7CisgICAgICBlbWl0IGRlbGV0ZWQodGhp
cyk7CiAgICAgICBlLT5hY2NlcHQoKTsKICAgICAgIH0KIApkaWZmIC1OdXIgbXVzZS0wLjYuMi9t
aWRpZWRpdC9waWFub3JvbGwuaCBtdXNlLTAuNi4yLXBhdGNoZWQvbWlkaWVkaXQvcGlhbm9yb2xs
LmgKLS0tIG11c2UtMC42LjIvbWlkaWVkaXQvcGlhbm9yb2xsLmgJMjAwMy0xMC0yOSAxMDowNjow
Ny4wMDAwMDAwMDAgKzAwMDAKKysrIG11c2UtMC42LjItcGF0Y2hlZC9taWRpZWRpdC9waWFub3Jv
bGwuaAkyMDA0LTA2LTI4IDIzOjMyOjM0LjczNzMwMTA0MiArMDAwMApAQCAtMTA4LDcgKzEwOCw3
IEBACiAgICAgICB2b2lkIHNvbmdDaGFuZ2VkMShpbnQpOwogCiAgICBzaWduYWxzOgotICAgICAg
dm9pZCBkZWxldGVkKGludCk7CisgICAgICB2b2lkIGRlbGV0ZWQodm9pZCAqKTsKIAogICAgcHVi
bGljOgogICAgICAgUGlhbm9Sb2xsKFBhcnRMaXN0KiwgUVdpZGdldCogcGFyZW50ID0gMCwgY29u
c3QgY2hhciogbmFtZSA9IDApOwpkaWZmIC1OdXIgbXVzZS0wLjYuMi9taXhlci9hbWl4ZXIuY3Bw
IG11c2UtMC42LjItcGF0Y2hlZC9taXhlci9hbWl4ZXIuY3BwCi0tLSBtdXNlLTAuNi4yL21peGVy
L2FtaXhlci5jcHAJMjAwMy0xMC0yOSAxMDowNToyMy4wMDAwMDAwMDAgKzAwMDAKKysrIG11c2Ut
MC42LjItcGF0Y2hlZC9taXhlci9hbWl4ZXIuY3BwCTIwMDQtMDYtMjggMjM6NTQ6NTkuMDAwMDAw
MDAwICswMDAwCkBAIC03NTMsNyArNzUzLDcgQEAKIAogdm9pZCBBdWRpb01peGVyQXBwOjpjbG9z
ZUV2ZW50KFFDbG9zZUV2ZW50KiBlKQogICAgICAgewotICAgICAgZW1pdCBkZWxldGVkKChpbnQp
dGhpcyk7CisgICAgICBlbWl0IGRlbGV0ZWQodGhpcyk7CiAgICAgICBlLT5hY2NlcHQoKTsKICAg
ICAgIH0KIApkaWZmIC1OdXIgbXVzZS0wLjYuMi9taXhlci9hbWl4ZXIuaCBtdXNlLTAuNi4yLXBh
dGNoZWQvbWl4ZXIvYW1peGVyLmgKLS0tIG11c2UtMC42LjIvbWl4ZXIvYW1peGVyLmgJMjAwMy0x
MC0yOSAxMDowNToyNC4wMDAwMDAwMDAgKzAwMDAKKysrIG11c2UtMC42LjItcGF0Y2hlZC9taXhl
ci9hbWl4ZXIuaAkyMDA0LTA2LTI4IDIzOjU1OjExLjMxNjAyMDkzMCArMDAwMApAQCAtOTQsNyAr
OTQsNyBAQAogICAgICAgdm9pZCB1cGRhdGVPdXRwdXRSb3V0ZSgpOwogCiAgICBzaWduYWxzOgot
ICAgICAgdm9pZCBkZWxldGVkKGludCk7CisgICAgICB2b2lkIGRlbGV0ZWQodm9pZCopOwogCiAg
ICBwcml2YXRlIHNsb3RzOgogICAgICAgdm9pZCBoZWFydEJlYXQoKTsKZGlmZiAtTnVyIG11c2Ut
MC42LjIvbWl4ZXIvbWl4ZXIuY3BwIG11c2UtMC42LjItcGF0Y2hlZC9taXhlci9taXhlci5jcHAK
LS0tIG11c2UtMC42LjIvbWl4ZXIvbWl4ZXIuY3BwCTIwMDMtMTAtMjkgMTA6MDU6MjQuMDAwMDAw
MDAwICswMDAwCisrKyBtdXNlLTAuNi4yLXBhdGNoZWQvbWl4ZXIvbWl4ZXIuY3BwCTIwMDQtMDYt
MjkgMDA6MTM6NDAuNTg4MjY2MzM1ICswMDAwCkBAIC0yMjYsNyArMjI2LDcgQEAKIAogdm9pZCBN
aXhlcjo6Y2xvc2VFdmVudChRQ2xvc2VFdmVudCogZSkKICAgICAgIHsKLSAgICAgIGVtaXQgZGVs
ZXRlZCgoaW50KXRoaXMpOworICAgICAgZW1pdCBkZWxldGVkKHRoaXMpOwogICAgICAgZS0+YWNj
ZXB0KCk7CiAgICAgICB9CiAKZGlmZiAtTnVyIG11c2UtMC42LjIvbWl4ZXIvbWl4ZXIuaCBtdXNl
LTAuNi4yLXBhdGNoZWQvbWl4ZXIvbWl4ZXIuaAotLS0gbXVzZS0wLjYuMi9taXhlci9taXhlci5o
CTIwMDMtMTAtMjkgMTA6MDU6MjMuMDAwMDAwMDAwICswMDAwCisrKyBtdXNlLTAuNi4yLXBhdGNo
ZWQvbWl4ZXIvbWl4ZXIuaAkyMDA0LTA2LTI5IDAwOjEzOjUyLjY4MTMwMTEyOCArMDAwMApAQCAt
NjAsNyArNjAsNyBAQAogICAgICAgdm9pZCBtYXN0ZXJDaGFuZ2VkKGludCB2YWwpOwogCiAgICBz
aWduYWxzOgotICAgICAgdm9pZCBkZWxldGVkKGludCk7CisgICAgICB2b2lkIGRlbGV0ZWQodm9p
ZCopOwogICAgICAgdm9pZCBjdHJsQ2hhbmdlZChpbnQgcG9ydCwgaW50IGNoYW4sIGludCBjdHJs
LCBpbnQgdmFsKTsKICAgICAgIHZvaWQgbWFzdGVyVm9sQ2hhbmdlZChpbnQgdmFsKTsKIApkaWZm
IC1OdXIgbXVzZS0wLjYuMi9zY29yZS9zY29yZS5jcHAgbXVzZS0wLjYuMi1wYXRjaGVkL3Njb3Jl
L3Njb3JlLmNwcAotLS0gbXVzZS0wLjYuMi9zY29yZS9zY29yZS5jcHAJMjAwMy0xMC0yOSAxMDow
NToyNi4wMDAwMDAwMDAgKzAwMDAKKysrIG11c2UtMC42LjItcGF0Y2hlZC9zY29yZS9zY29yZS5j
cHAJMjAwNC0wNi0yOCAyMzo0MDozMi41Njg0NjAzNDYgKzAwMDAKQEAgLTM2MCw3ICszNjAsNyBA
QAogCiB2b2lkIFNjb3JlOjpjbG9zZUV2ZW50KFFDbG9zZUV2ZW50KiBlKQogICAgICAgewotICAg
ICAgZW1pdCBkZWxldGVkKChpbnQpdGhpcyk7CisgICAgICBlbWl0IGRlbGV0ZWQodGhpcyk7CiAg
ICAgICBlLT5hY2NlcHQoKTsKICAgICAgIH0KIApkaWZmIC1OdXIgbXVzZS0wLjYuMi9zY29yZS9z
Y29yZS5oIG11c2UtMC42LjItcGF0Y2hlZC9zY29yZS9zY29yZS5oCi0tLSBtdXNlLTAuNi4yL3Nj
b3JlL3Njb3JlLmgJMjAwMy0xMC0yOSAxMDowNToyNC4wMDAwMDAwMDAgKzAwMDAKKysrIG11c2Ut
MC42LjItcGF0Y2hlZC9zY29yZS9zY29yZS5oCTIwMDQtMDYtMjggMjM6NDE6MTUuMDM3MTUxNjk5
ICswMDAwCkBAIC05MSw3ICs5MSw3IEBACiAgICBzaWduYWxzOgogICAgICAgdm9pZCByYXN0ZXJD
aGFuZ2VkKGludCk7CiAgICAgICB2b2lkIHF1YW50Q2hhbmdlZChpbnQpOwotICAgICAgdm9pZCBk
ZWxldGVkKGludCk7CisgICAgICB2b2lkIGRlbGV0ZWQodm9pZCopOwogCiAgICBwdWJsaWM6CiAg
ICAgICBTY29yZShQYXJ0TGlzdCopOwpkaWZmIC1OdXIgbXVzZS0wLjYuMi9zeW50aS9zeW50aC5j
cHAgbXVzZS0wLjYuMi1wYXRjaGVkL3N5bnRpL3N5bnRoLmNwcAotLS0gbXVzZS0wLjYuMi9zeW50
aS9zeW50aC5jcHAJMjAwMy0xMC0yOSAxMDowNjowMC4wMDAwMDAwMDAgKzAwMDAKKysrIG11c2Ut
MC42LjItcGF0Y2hlZC9zeW50aS9zeW50aC5jcHAJMjAwNC0wNi0yOCAyMzoyNjozNS4wMDAwMDAw
MDAgKzAwMDAKQEAgLTMzNCw3ICszMzQsNyBAQAogICAgICAgICAgICAgbnN5bnRoaXMgPSBsaXN0
LT5jb3VudCgpOwogICAgICAgICAgICAgaWYgKGRlYnVnTXNnKQogICAgICAgICAgICAgICAgICAg
cHJpbnRmKCIlZCBzb2Z0IHN5bnRoIGZvdW5kXG4iLCBuc3ludGhpcyk7Ci0gICAgICAgICAgICBz
eW50aGlzICA9IG5ldyAoU3ludGgqKVtuc3ludGhpc107CisgICAgICAgICAgICBzeW50aGlzICA9
IG5ldyBTeW50aCpbbnN5bnRoaXNdOwogICAgICAgICAgICAgUUZpbGVJbmZvTGlzdEl0ZXJhdG9y
IGl0KCpsaXN0KTsKICAgICAgICAgICAgIFFGaWxlSW5mbyogZmk7CiAgICAgICAgICAgICBpbnQg
aSA9IDA7CmRpZmYgLU51ciBtdXNlLTAuNi4yL3RyYWNrLmNwcCBtdXNlLTAuNi4yLXBhdGNoZWQv
dHJhY2suY3BwCi0tLSBtdXNlLTAuNi4yL3RyYWNrLmNwcAkyMDAzLTEwLTI5IDIyOjE0OjEyLjAw
MDAwMDAwMCArMDAwMAorKysgbXVzZS0wLjYuMi1wYXRjaGVkL3RyYWNrLmNwcAkyMDA0LTA2LTI4
IDIzOjQ5OjQ4LjAwMDAwMDAwMCArMDAwMApAQCAtOTUsNyArOTUsNyBAQAogCiB2b2lkIFRyYWNr
OjpkdW1wKCkgY29uc3QKICAgICAgIHsKLSAgICAgIHByaW50ZigiVHJhY2sgPCVzPjogdHlwICVk
LCBwYXJ0cyAlZCBzZWwgJWRcbiIsCisgICAgICBwcmludGYoIlRyYWNrIDwlcz46IHR5cCAlZCwg
cGFydHMgJWx1IHNlbCAlZFxuIiwKICAgICAgICAgIF9uYW1lLmxhdGluMSgpLCBfdHlwZSwgX3Bh
cnRzLnNpemUoKSwgX3NlbGVjdGVkKTsKICAgICAgIH0KIApkaWZmIC1OdXIgbXVzZS0wLjYuMi93
YXZlZWRpdC93YXZlZWRpdC5jcHAgbXVzZS0wLjYuMi1wYXRjaGVkL3dhdmVlZGl0L3dhdmVlZGl0
LmNwcAotLS0gbXVzZS0wLjYuMi93YXZlZWRpdC93YXZlZWRpdC5jcHAJMjAwMy0xMC0yOSAxMDow
NjoxNC4wMDAwMDAwMDAgKzAwMDAKKysrIG11c2UtMC42LjItcGF0Y2hlZC93YXZlZWRpdC93YXZl
ZWRpdC5jcHAJMjAwNC0wNi0yOSAwMDoxMzoxNy4yMzYwNjEyMTIgKzAwMDAKQEAgLTU3LDcgKzU3
LDcgQEAKIAogdm9pZCBXYXZlRWRpdDo6Y2xvc2VFdmVudChRQ2xvc2VFdmVudCogZSkKICAgICAg
IHsKLSAgICAgIGVtaXQgZGVsZXRlZCgoaW50KXRoaXMpOworICAgICAgZW1pdCBkZWxldGVkKHRo
aXMpOwogICAgICAgZS0+YWNjZXB0KCk7CiAgICAgICB9CiAKZGlmZiAtTnVyIG11c2UtMC42LjIv
d2F2ZWVkaXQvd2F2ZWVkaXQuaCBtdXNlLTAuNi4yLXBhdGNoZWQvd2F2ZWVkaXQvd2F2ZWVkaXQu
aAotLS0gbXVzZS0wLjYuMi93YXZlZWRpdC93YXZlZWRpdC5oCTIwMDMtMTAtMjkgMTA6MDY6MTQu
MDAwMDAwMDAwICswMDAwCisrKyBtdXNlLTAuNi4yLXBhdGNoZWQvd2F2ZWVkaXQvd2F2ZWVkaXQu
aAkyMDA0LTA2LTI5IDAwOjEzOjMwLjQzNjkxNTk5NyArMDAwMApAQCAtNDgsNyArNDgsNyBAQAog
ICAgICAgdm9pZCBzb2xvQ2hhbmdlZChib29sIGZsYWcpOwogCiAgICBzaWduYWxzOgotICAgICAg
dm9pZCBkZWxldGVkKGludCk7CisgICAgICB2b2lkIGRlbGV0ZWQodm9pZCopOwogCiAgICBwdWJs
aWM6CiAgICAgICBXYXZlRWRpdChQYXJ0TGlzdCopOwoK
</data>        

          </attachment>
    </bug>

</bugzilla>