<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>184470</bug_id>
          
          <creation_ts>2018-04-10 14:30:40 -0700</creation_ts>
          <short_desc>Remove block selection code</short_desc>
          <delta_ts>2018-04-12 12:57:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Megan Gardner">megan_gardner</reporter>
          <assigned_to name="Megan Gardner">megan_gardner</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1413404</commentid>
    <comment_count>0</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2018-04-10 14:30:40 -0700</bug_when>
    <thetext>Remove block selection code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413405</commentid>
    <comment_count>1</comment_count>
      <attachid>337636</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2018-04-10 14:32:25 -0700</bug_when>
    <thetext>Created attachment 337636
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413406</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-10 14:34:54 -0700</bug_when>
    <thetext>&lt;rdar://problem/39327273&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413505</commentid>
    <comment_count>3</comment_count>
      <attachid>337636</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-10 18:26:35 -0700</bug_when>
    <thetext>Comment on attachment 337636
Patch

Clearing flags on attachment: 337636

Committed r230508: &lt;https://trac.webkit.org/changeset/230508&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413506</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-10 18:26:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413697</commentid>
    <comment_count>5</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-04-11 09:01:36 -0700</bug_when>
    <thetext>Reverted r230508 for reason:

Breaks internal builds.

Committed r230526: &lt;https://trac.webkit.org/changeset/230526&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414125</commentid>
    <comment_count>6</comment_count>
      <attachid>337819</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2018-04-12 12:08:16 -0700</bug_when>
    <thetext>Created attachment 337819
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414136</commentid>
    <comment_count>7</comment_count>
      <attachid>337819</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-04-12 12:29:44 -0700</bug_when>
    <thetext>Comment on attachment 337819
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=337819&amp;action=review

&gt; Source/WebKit/ChangeLog:-444
&gt; -2018-04-10  Megan Gardner  &lt;megan_gardner@apple.com&gt;

You should just leave the old entries.

&gt; Source/WebKit/ChangeLog:644
&gt; +2018-04-10  Megan Gardner  &lt;megan_gardner@apple.com&gt;

Why is this being added here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414143</commentid>
    <comment_count>8</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2018-04-12 12:57:55 -0700</bug_when>
    <thetext>https://trac.webkit.org/r230591</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337636</attachid>
            <date>2018-04-10 14:32:25 -0700</date>
            <delta_ts>2018-04-12 12:08:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184470-20180410143224.patch</filename>
            <type>text/plain</type>
            <size>38080</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzA0OTQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE4LTA0LTEwICBNZWdhbiBHYXJk
bmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGJsb2NrIHNl
bGVjdGlvbiBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODQ0NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAg
ICAgCisgICAgICAgIFJlbW92ZSBibG9jayBzZWxlY3Rpb24gY29kZSB0aGF0IGlzbid0IHJ1biBh
bmQgaXMgY3VycmVudGx5IG5vdCBldmVuIHVzZWQuCisgICAgICAgIEhhZCB0byBwdXQgdGhpcyBi
YWNrIGluIGZvciBhIGJ1ZyBpbiB0aGUgbWlkLXllYXIgcmVsZWFzZSwgYnV0IHdlJ3JlIHBhc3Qg
dGhhdAorICAgICAgICBzbyBpdCdzIHRpbWUgZm9yIHRoaXMgdG8gZ28gYXdheS4KKworICAgICAg
ICAqIFBsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFn
ZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c3RvcEFz
c2lzdGluZ05vZGUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlkVXBkYXRl
QmxvY2tTZWxlY3Rpb25XaXRoVG91Y2gpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICh0b1NlbGVjdGlvbkhhbmRsZVBv
c2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZGlkVXBkYXRlQmxv
Y2tTZWxlY3Rpb25XaXRoVG91Y2g6d2l0aEZsYWdzOmdyb3dUaHJlc2hvbGQ6c2hyaW5rVGhyZXNo
b2xkOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNoYW5nZVNlbGVjdGlv
bldpdGhUb3VjaEF0OndpdGhTZWxlY3Rpb25Ub3VjaDpiYXNlSXNTdGFydDpdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjaGFuZ2VCbG9ja1NlbGVjdGlvbldpdGhUb3VjaEF0
OndpdGhTZWxlY3Rpb25Ub3VjaDpmb3JIYW5kbGU6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
Ojp1cGRhdGVCbG9ja1NlbGVjdGlvbldpdGhUb3VjaCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlkVXBkYXRlQmxvY2tTZWxlY3Rpb25XaXRoVG91Y2gpOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpyYW5nZUF0
V29yZEJvdW5kYXJ5Rm9yUG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpkaXN0YW5jZUJldHdl
ZW5SZWN0c0ZvclBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6cmVjdHNFc3Nl
bnRpYWxseVRoZVNhbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0Ojp1bmlvbkRPTVJhbmdl
cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OmNvbXB1dGVFZGdlQ2VudGVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZXhwYW5kZWRSYW5nZUZyb21IYW5kbGUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjb250cmFjdGVkUmFuZ2VGcm9tSGFu
ZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29tcHV0ZUV4cGFuZEFu
ZFNocmlua1RocmVzaG9sZHNGb3JIYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpyYW5nZUZvckJsb2NrQXRQb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OnNob3VsZEV4cGFuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNoYW5n
ZUJsb2NrU2VsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBk
YXRlQmxvY2tTZWxlY3Rpb25XaXRoVG91Y2gpOiBEZWxldGVkLgorCiAyMDE4LTA0LTEwICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIExvYWRpbmcgb2YgbXVsdGlw
YXJ0IHJlc3BvbnNlIHdhcyBjYW5jZWxsZWQgYmVjYXVzZSBvZiBjb250ZW50IHBvbGljeSBzZXQg
aW4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCShyZXZpc2lv
biAyMzA0NTUpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAko
d29ya2luZyBjb3B5KQpAQCAtNTQwLDkgKzU0MCw2IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVn
ZXIsIFVJV0tHZXN0dXJlVHkKIEBlbmQKIAogQGludGVyZmFjZSBVSVdLU2VsZWN0aW9uQXNzaXN0
YW50ICgpCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEyMDAwMAotLSAo
dm9pZClibG9ja1NlbGVjdGlvbkNoYW5nZWRXaXRoVG91Y2g6KFVJV0tTZWxlY3Rpb25Ub3VjaCl0
b3VjaCB3aXRoRmxhZ3M6KFVJV0tTZWxlY3Rpb25GbGFncylmbGFncyBncm93VGhyZXNob2xkOihD
R0Zsb2F0KWdyb3cgc2hyaW5rVGhyZXNob2xkOihDR0Zsb2F0KXNocmluazsKLSNlbmRpZgogLSAo
Qk9PTClzaG91bGRIYW5kbGVTaW5nbGVUYXBBdFBvaW50OihDR1BvaW50KXBvaW50OwogLSAodm9p
ZClzZWxlY3Rpb25DaGFuZ2VkV2l0aEdlc3R1cmVBdDooQ0dQb2ludClwb2ludCB3aXRoR2VzdHVy
ZTooVUlXS0dlc3R1cmVUeXBlKWdlc3R1cmVUeXBlIHdpdGhTdGF0ZTooVUlHZXN0dXJlUmVjb2du
aXplclN0YXRlKWdlc3R1cmVTdGF0ZSB3aXRoRmxhZ3M6KFVJV0tTZWxlY3Rpb25GbGFncylmbGFn
czsKIC0gKHZvaWQpc2VsZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaEF0OihDR1BvaW50KXBvaW50IHdp
dGhTZWxlY3Rpb25Ub3VjaDooVUlXS1NlbGVjdGlvblRvdWNoKXRvdWNoIHdpdGhGbGFnczooVUlX
S1NlbGVjdGlvbkZsYWdzKWZsYWdzOwpAQCAtNTkyLDE1ICs1ODksNiBAQCB0eXBlZGVmIE5TX0VO
VU0oTlNJbnRlZ2VyLCBVSVdLR2VzdHVyZVR5CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHksIGFzc2lnbikgVUlUYXBHZXN0dXJlUmVjb2duaXplciAqc2luZ2xlVGFwR2VzdHVyZTsKIEBl
bmQKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMjAwMDAKLXR5cGVk
ZWYgTlNfRU5VTShOU0ludGVnZXIsIFVJV0tIYW5kbGVQb3NpdGlvbikgewotICAgIFVJV0tIYW5k
bGVUb3AgPSAwLAotICAgIFVJV0tIYW5kbGVSaWdodCA9IDEsCi0gICAgVUlXS0hhbmRsZUJvdHRv
bSA9IDIsCi0gICAgVUlXS0hhbmRsZUxlZnQgPSAzLAotfTsKLSNlbmRpZgotCiBAcHJvdG9jb2wg
VUlXS0ludGVyYWN0aW9uVmlld1Byb3RvY29sCiAtICh2b2lkKWNoYW5nZVNlbGVjdGlvbldpdGhH
ZXN0dXJlQXQ6KENHUG9pbnQpcG9pbnQgd2l0aEdlc3R1cmU6KFVJV0tHZXN0dXJlVHlwZSlnZXN0
dXJlVHlwZSB3aXRoU3RhdGU6KFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSlzdGF0ZTsKIC0gKHZv
aWQpY2hhbmdlU2VsZWN0aW9uV2l0aFRvdWNoQXQ6KENHUG9pbnQpcG9pbnQgd2l0aFNlbGVjdGlv
blRvdWNoOihVSVdLU2VsZWN0aW9uVG91Y2gpdG91Y2ggYmFzZUlzU3RhcnQ6KEJPT0wpYmFzZUlz
U3RhcnQgd2l0aEZsYWdzOihVSVdLU2VsZWN0aW9uRmxhZ3MpZmxhZ3M7CkBAIC02MjUsMTAgKzYx
Myw2IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFVJV0tIYW5kbGVQb3MKIC0gKHZvaWQp
X2NhbmNlbExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyOwogCiBAb3B0aW9uYWwKLSNpZiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEIDwgMTIwMDAwCi0tICh2b2lkKWNoYW5nZUJsb2Nr
U2VsZWN0aW9uV2l0aFRvdWNoQXQ6KENHUG9pbnQpcG9pbnQgd2l0aFNlbGVjdGlvblRvdWNoOihV
SVdLU2VsZWN0aW9uVG91Y2gpdG91Y2ggZm9ySGFuZGxlOihVSVdLSGFuZGxlUG9zaXRpb24paGFu
ZGxlOwotI2VuZGlmCi0KIC0gKHZvaWQpY2xlYXJTZWxlY3Rpb247CiAtICh2b2lkKXJlcGxhY2VE
aWN0YXRlZFRleHQ6KE5TU3RyaW5nICopb2xkVGV4dCB3aXRoVGV4dDooTlNTdHJpbmcgKiluZXdU
ZXh0OwogLSAodm9pZClyZXF1ZXN0RGljdGF0aW9uQ29udGV4dDoodm9pZCAoXikoTlNTdHJpbmcg
KnNlbGVjdGVkVGV4dCwgTlNTdHJpbmcgKnByZWZpeFRleHQsIE5TU3RyaW5nICpwb3N0Zml4VGV4
dCkpY29tcGxldGlvbkhhbmRsZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oCShyZXZpc2lvbiAyMzA0NTUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5NSw5ICsyOTUsNiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQm
LCBib29sIGlzQ2hhckV2ZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uSW5mb3Jt
YXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKSA9IDA7Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA8
IDEyMDAwMAotICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGVCbG9ja1NlbGVjdGlvbldpdGhUb3Vj
aCh1aW50MzJfdCB0b3VjaCwgdWludDMyX3QgZmxhZ3MsIGZsb2F0IGdyb3dUaHJlc2hvbGQsIGZs
b2F0IHNocmlua1RocmVzaG9sZCkgPSAwOwotI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHNob3dQ
bGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBlbGVtZW50UmVjdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRG91YmxlVGFwR2Vz
dHVyZXNEdXJpbmdUYXBJZk5lY2Vzc2FyeSh1aW50NjRfdCByZXF1ZXN0SUQpID0gMDsKICAgICB2
aXJ0dWFsIGRvdWJsZSBtaW5pbXVtWm9vbVNjYWxlKCkgY29uc3QgPSAwOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDIzMDQ1NSkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NTQs
OSArNTU0LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVy
ZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lz
dGVkTm9kZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVp
bnQzMl90LCB1aW50MzJfdCwgdWludDMyX3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAg
ICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCBXVEY6OkZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBzZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCB0bywgdWludDMyX3Qg
Z2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMyX3QsIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExP
V0VEIDwgMTIwMDAwCi0gICAgdm9pZCB1cGRhdGVCbG9ja1NlbGVjdGlvbldpdGhUb3VjaChjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCwgdWludDMyX3QgdG91Y2gsIHVpbnQzMl90IGhhbmRsZVBvc2l0
aW9uKTsKLSNlbmRpZgogICAgIHZvaWQgZXh0ZW5kU2VsZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFu
dWxhcml0eSk7CiAgICAgdm9pZCBzZWxlY3RXb3JkQmFja3dhcmQoKTsKICAgICB2b2lkIG1vdmVT
ZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJik7CkBAIC01ODEsOSArNTc4LDYgQEAgcHVibGljOgogICAgIHZv
aWQgc3RvcEludGVyYWN0aW9uKCk7CiAgICAgdm9pZCBwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVp
bnQzMl90IGFjdGlvbik7CiAgICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoY29uc3QgU2hhcmVk
TWVtb3J5OjpIYW5kbGUmIGltYWdlSGFuZGxlLCB1aW50NjRfdCBpbWFnZVNpemUpOwotI2lmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMjAwMDAKLSAgICB2b2lkIGRpZFVwZGF0
ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoKHVpbnQzMl90IHRvdWNoLCB1aW50MzJfdCBmbGFncywg
ZmxvYXQgZ3Jvd1RocmVzaG9sZCwgZmxvYXQgc2hyaW5rVGhyZXNob2xkKTsKLSNlbmRpZgogICAg
IHZvaWQgZm9jdXNOZXh0QXNzaXN0ZWROb2RlKGJvb2wgaXNGb3J3YXJkLCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmID0gW10gKGF1dG8pIHsgfSk7CiAgICAgdm9p
ZCBzZXRBc3Npc3RlZE5vZGVWYWx1ZShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEFzc2lz
dGVkTm9kZVZhbHVlQXNOdW1iZXIoZG91YmxlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIzMDQ1NSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtMTg0LDkgKzE4NCw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAg
ICAgU2VsZWN0aW9uQ29udGV4dENhbGxiYWNrKFN0cmluZyBzZWxlY3RlZFRleHQsIFN0cmluZyBi
ZWZvcmVUZXh0LCBTdHJpbmcgYWZ0ZXJUZXh0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKICAgICBJbnRlcnByZXRLZXlFdmVudChzdHJ1Y3QgV2ViS2l0OjpFZGl0b3JTdGF0ZSBzdGF0
ZSwgYm9vbCBpc0NoYXJFdmVudCkgLT4gKGJvb2wgaGFuZGxlZCkKICAgICBEaWRSZWNlaXZlUG9z
aXRpb25JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbiBpbmZvcm1hdGlvbikKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VE
IDwgMTIwMDAwCi0gICAgRGlkVXBkYXRlQmxvY2tTZWxlY3Rpb25XaXRoVG91Y2godWludDMyX3Qg
dG91Y2gsIHVpbnQzMl90IGZsYWdzLCBmbG9hdCBncm93VGhyZXNob2xkLCBmbG9hdCBzaHJpbmtU
aHJlc2hvbGQpCi0jZW5kaWYKICAgICBTYXZlSW1hZ2VUb0xpYnJhcnkoV2ViS2l0OjpTaGFyZWRN
ZW1vcnk6OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IHNpemUpCiAgICAgU2hvd1BsYXliYWNrVGFy
Z2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIFdlYkNvcmU6OkludFJlY3QgZWxlbWVudFJlY3QpCiAg
ICAgQ29tbWl0UG90ZW50aWFsVGFwRmFpbGVkKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCShyZXZpc2lvbiAyMzA0NTUpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAkod29ya2luZyBj
b3B5KQpAQCAtMTMyLDkgKzEzMiw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpbnRlcnByZXRLZXlF
dmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzYXZlSW1h
Z2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7Ci0jaWYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEyMDAwMAotICAgIHZvaWQgZGlkVXBk
YXRlQmxvY2tTZWxlY3Rpb25XaXRoVG91Y2godWludDMyX3QgdG91Y2gsIHVpbnQzMl90IGZsYWdz
LCBmbG9hdCBncm93VGhyZXNob2xkLCBmbG9hdCBzaHJpbmtUaHJlc2hvbGQpIG92ZXJyaWRlOwot
I2VuZGlmCiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QpIG92ZXJyaWRlOwogCiAgICAgYm9v
bCBoYW5kbGVSdW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIEFQSTo6
T3BlblBhbmVsUGFyYW1ldGVycyosIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSBv
dmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MubW0JKHJldmlzaW9uIDIzMDQ1NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTYxLDE0ICs1
NjEsNiBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzdG9wQXNzaXN0aW5nTm9kZSgpCiB7CiAgICAg
W21fY29udGVudFZpZXcgX3N0b3BBc3Npc3RpbmdOb2RlXTsKIH0KLSAgICAKLSNpZiBfX0lQSE9O
RV9PU19WRVJTSU9OX01BWF9BTExPV0VEIDwgMTIwMDAwCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpk
aWRVcGRhdGVCbG9ja1NlbGVjdGlvbldpdGhUb3VjaCh1aW50MzJfdCB0b3VjaCwgdWludDMyX3Qg
ZmxhZ3MsIGZsb2F0IGdyb3dUaHJlc2hvbGQsIGZsb2F0IHNocmlua1RocmVzaG9sZCkKLXsKLSAg
ICBbbV9jb250ZW50VmlldyBfZGlkVXBkYXRlQmxvY2tTZWxlY3Rpb25XaXRoVG91Y2g6KFNlbGVj
dGlvblRvdWNoKXRvdWNoIHdpdGhGbGFnczooU2VsZWN0aW9uRmxhZ3MpZmxhZ3MgZ3Jvd1RocmVz
aG9sZDpncm93VGhyZXNob2xkIHNocmlua1RocmVzaG9sZDpzaHJpbmtUaHJlc2hvbGRdOwotfQot
I2VuZGlmCi0gICAgCiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNob3dQbGF5YmFja1RhcmdldFBp
Y2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCkKIHsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLmgJKHJldmlzaW9uIDIzMDQ1NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzE2LDkg
KzMxNiw2IEBAIEZPUl9FQUNIX1dLQ09OVEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0sKIC0gKHZv
aWQpX2RpZEVuZFNjcm9sbGluZ09yWm9vbWluZzsKIC0gKHZvaWQpX292ZXJmbG93U2Nyb2xsaW5n
V2lsbEJlZ2luOwogLSAodm9pZClfb3ZlcmZsb3dTY3JvbGxpbmdEaWRFbmQ7Ci0jaWYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEyMDAwMAotLSAodm9pZClfZGlkVXBkYXRlQmxv
Y2tTZWxlY3Rpb25XaXRoVG91Y2g6KFdlYktpdDo6U2VsZWN0aW9uVG91Y2gpdG91Y2ggd2l0aEZs
YWdzOihXZWJLaXQ6OlNlbGVjdGlvbkZsYWdzKWZsYWdzIGdyb3dUaHJlc2hvbGQ6KENHRmxvYXQp
Z3Jvd1RocmVzaG9sZCBzaHJpbmtUaHJlc2hvbGQ6KENHRmxvYXQpc2hyaW5rVGhyZXNob2xkOwot
I2VuZGlmCiAtICh2b2lkKV9zaG93UGxheWJhY2tUYXJnZXRQaWNrZXI6KEJPT0wpaGFzVmlkZW8g
ZnJvbVJlY3Q6KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKWVsZW1lbnRSZWN0OwogLSAodm9pZClf
c2hvd1J1bk9wZW5QYW5lbDooQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzKilwYXJhbWV0ZXJzIHJl
c3VsdExpc3RlbmVyOihXZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKWxp
c3RlbmVyOwogLSAodm9pZClhY2Nlc3NvcnlEb25lOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCShyZXZp
c2lvbiAyMzA0NTUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNjM0LDIyICsyNjM0LDYgQEAgc3Rh
dGljIGlubGluZSBVSVdLU2VsZWN0aW9uRmxhZ3MgdG9VSVdLUwogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxVSVdLU2VsZWN0aW9uRmxhZ3M+KHVpRmxhZ3MpOwogfQogCi0jaWYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEyMDAwMAotc3RhdGljIGlubGluZSBTZWxlY3Rpb25IYW5k
bGVQb3NpdGlvbiB0b1NlbGVjdGlvbkhhbmRsZVBvc2l0aW9uKFVJV0tIYW5kbGVQb3NpdGlvbiBw
b3NpdGlvbikKLXsKLSAgICBzd2l0Y2ggKHBvc2l0aW9uKSB7Ci0gICAgY2FzZSBVSVdLSGFuZGxl
VG9wOgotICAgICAgICByZXR1cm4gU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OlRvcDsKLSAgICBj
YXNlIFVJV0tIYW5kbGVSaWdodDoKLSAgICAgICAgcmV0dXJuIFNlbGVjdGlvbkhhbmRsZVBvc2l0
aW9uOjpSaWdodDsKLSAgICBjYXNlIFVJV0tIYW5kbGVCb3R0b206Ci0gICAgICAgIHJldHVybiBT
ZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6Qm90dG9tOwotICAgIGNhc2UgVUlXS0hhbmRsZUxlZnQ6
Ci0gICAgICAgIHJldHVybiBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6TGVmdDsKLSAgICB9Ci19
Ci0jZW5kaWYKLQogc3RhdGljIGlubGluZSBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgdG9XS1Rl
eHRHcmFudWxhcml0eShVSVRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKIHsKICAgICBzd2l0
Y2ggKGdyYW51bGFyaXR5KSB7CkBAIC0yNzA4LDE1ICsyNjkyLDYgQEAgc3RhdGljIHZvaWQgc2Vs
ZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaChXSwogICAgICAgICBbKFVJV0tUZXh0SW50ZXJhY3Rpb25B
c3Npc3RhbnQgKilbdmlldyBpbnRlcmFjdGlvbkFzc2lzdGFudF0gc2VsZWN0aW9uQ2hhbmdlZFdp
dGhUb3VjaEF0OihDR1BvaW50KXBvaW50IHdpdGhTZWxlY3Rpb25Ub3VjaDp0b1VJV0tTZWxlY3Rp
b25Ub3VjaCgoU2VsZWN0aW9uVG91Y2gpdG91Y2gpIHdpdGhGbGFnczpzdGF0aWNfY2FzdDxVSVdL
U2VsZWN0aW9uRmxhZ3M+KGZsYWdzKV07CiB9CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01B
WF9BTExPV0VEIDwgMTIwMDAwCi0tICh2b2lkKV9kaWRVcGRhdGVCbG9ja1NlbGVjdGlvbldpdGhU
b3VjaDooU2VsZWN0aW9uVG91Y2gpdG91Y2ggd2l0aEZsYWdzOihTZWxlY3Rpb25GbGFncylmbGFn
cyBncm93VGhyZXNob2xkOihDR0Zsb2F0KWdyb3dUaHJlc2hvbGQgc2hyaW5rVGhyZXNob2xkOihD
R0Zsb2F0KXNocmlua1RocmVzaG9sZAotewotICAgIFtfd2ViU2VsZWN0aW9uQXNzaXN0YW50IGJs
b2NrU2VsZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaDp0b1VJV0tTZWxlY3Rpb25Ub3VjaCh0b3VjaCkg
d2l0aEZsYWdzOnRvVUlXS1NlbGVjdGlvbkZsYWdzKGZsYWdzKSBncm93VGhyZXNob2xkOmdyb3dU
aHJlc2hvbGQgc2hyaW5rVGhyZXNob2xkOnNocmlua1RocmVzaG9sZF07Ci0gICAgaWYgKHRvdWNo
ICE9IFNlbGVjdGlvblRvdWNoOjpTdGFydGVkICYmIHRvdWNoICE9IFNlbGVjdGlvblRvdWNoOjpN
b3ZlZCkKLSAgICAgICAgX3VzaW5nR2VzdHVyZUZvclNlbGVjdGlvbiA9IE5POwotfQotI2VuZGlm
Ci0KIC0gKEJPT0wpX2lzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlCiB7CiAgICAgcmV0dXJu
IF90ZXh0U2VsZWN0aW9uQXNzaXN0YW50ICE9IG5pbDsKQEAgLTI3MzcsMTMgKzI3MTIsNiBAQCAt
ICh2b2lkKWNoYW5nZVNlbGVjdGlvbldpdGhHZXN0dXJlQXQ6KENHCiAgICAgfSk7CiB9CiAKLSNp
ZiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEIDwgMTIwMDAwCi0tICh2b2lkKWNoYW5n
ZVNlbGVjdGlvbldpdGhUb3VjaEF0OihDR1BvaW50KXBvaW50IHdpdGhTZWxlY3Rpb25Ub3VjaDoo
VUlXS1NlbGVjdGlvblRvdWNoKXRvdWNoIGJhc2VJc1N0YXJ0OihCT09MKWJhc2VJc1N0YXJ0Ci17
Ci0gICAgW3NlbGYgY2hhbmdlU2VsZWN0aW9uV2l0aFRvdWNoQXQ6cG9pbnQgd2l0aFNlbGVjdGlv
blRvdWNoOnRvdWNoIGJhc2VJc1N0YXJ0OmJhc2VJc1N0YXJ0IHdpdGhGbGFnczpVSVdLTm9uZV07
Ci19Ci0jZW5kaWYKLQogLSAodm9pZCljaGFuZ2VTZWxlY3Rpb25XaXRoVG91Y2hBdDooQ0dQb2lu
dClwb2ludCB3aXRoU2VsZWN0aW9uVG91Y2g6KFVJV0tTZWxlY3Rpb25Ub3VjaCl0b3VjaCBiYXNl
SXNTdGFydDooQk9PTCliYXNlSXNTdGFydCB3aXRoRmxhZ3M6KFVJV0tTZWxlY3Rpb25GbGFncylm
bGFncwogewogICAgIF91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBZRVM7CkBAIC0yNzY0LDE5
ICsyNzMyLDYgQEAgLSAodm9pZCljaGFuZ2VTZWxlY3Rpb25XaXRoVG91Y2hlc0Zyb206KAogICAg
IH0pOwogfQogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEyMDAwMAot
LSAodm9pZCljaGFuZ2VCbG9ja1NlbGVjdGlvbldpdGhUb3VjaEF0OihDR1BvaW50KXBvaW50IHdp
dGhTZWxlY3Rpb25Ub3VjaDooVUlXS1NlbGVjdGlvblRvdWNoKXRvdWNoIGZvckhhbmRsZTooVUlX
S0hhbmRsZVBvc2l0aW9uKWhhbmRsZQotewotICAgIC8vIFRoaXMgd2FzIG9ubHkgcmVhZGRlZCB0
byBhdm9pZCBhIGNyYXNoIGR1ZSB0byBpbmNvbXBhdGliaWxpdGllcyB3aXRoIGNlcnRhaW4gdmVy
c2lvbiBvZiBVSUtpdC4KLSAgICAvLyBUaGlzIHNob3VsZCBiZSByZW1vdmVkIEFTQVAuCi0gICAg
Ly8gVGhlIHNlbGVjdGlvbiB3aWxsIGJlIHByb3Blcmx5IHVwZGF0ZWQgd2l0aCB0aGUgbmV4dCB1
cGRhdGUsIHNlbGVjdGlvbiBzdGlsbCBmdW5jdGlvbnMKLSAgICAvLyB3aXRob3V0IHRoaXMgZnVu
Y3Rpb24gZG9pbmcgYW55dGhpbmcuCi0gICAgCi0gICAgX3VzaW5nR2VzdHVyZUZvclNlbGVjdGlv
biA9IFlFUzsKLSAgICBfcGFnZS0+dXBkYXRlQmxvY2tTZWxlY3Rpb25XaXRoVG91Y2goV2ViQ29y
ZTo6SW50UG9pbnQocG9pbnQpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odG9TZWxlY3Rpb25Ub3Vj
aCh0b3VjaCkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odG9TZWxlY3Rpb25IYW5kbGVQb3NpdGlv
bihoYW5kbGUpKSk7Ci19Ci0jZW5kaWYKLQogLSAodm9pZCltb3ZlQnlPZmZzZXQ6KE5TSW50ZWdl
cilvZmZzZXQKIHsKICAgICBpZiAoIW9mZnNldCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQkocmV2aXNpb24gMjMwNDU1KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQkod29ya2luZyBjb3B5
KQpAQCAtNjczLDE4ICs2NzMsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZUltYWdlVG9MaWJy
YXJ5KGNvCiAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBpbWFnZVNpemUp
OwogICAgIG1fcGFnZUNsaWVudC5zYXZlSW1hZ2VUb0xpYnJhcnkoV1RGTW92ZShidWZmZXIpKTsK
IH0KLSAgICAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEIDwgMTIwMDAwCi12
b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQmxvY2tTZWxlY3Rpb25XaXRoVG91Y2goY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IHRvdWNoLCB1aW50MzJfdCBoYW5kbGVQb3Np
dGlvbikKLXsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUJs
b2NrU2VsZWN0aW9uV2l0aFRvdWNoKHBvaW50LCB0b3VjaCwgaGFuZGxlUG9zaXRpb24pLCBtX3Bh
Z2VJRCk7Ci19Ci0gICAgCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkVXBkYXRlQmxvY2tTZWxlY3Rp
b25XaXRoVG91Y2godWludDMyX3QgdG91Y2gsIHVpbnQzMl90IGZsYWdzLCBmbG9hdCBncm93VGhy
ZXNob2xkLCBmbG9hdCBzaHJpbmtUaHJlc2hvbGQpCi17Ci0gICAgbV9wYWdlQ2xpZW50LmRpZFVw
ZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoKHRvdWNoLCBmbGFncywgZ3Jvd1RocmVzaG9sZCwg
c2hyaW5rVGhyZXNob2xkKTsKLX0KLSNlbmRpZgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbGlj
YXRpb25EaWRFbnRlckJhY2tncm91bmQoKQogewpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjMwNDU1KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01ODAsOSAr
NTgwLDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVxdWVzdEFzc2lzdGVkTm9kZUluZm9ybWF0aW9u
KENhbGxiYWNrSUQpOwogICAgIHZvaWQgc2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVp
bnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwg
Q2FsbGJhY2tJRCk7CiAgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQsIENh
bGxiYWNrSUQpOwotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMjAwMDAK
LSAgICB2b2lkIHVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiwgdWludDMyX3QgdG91Y2gsIHVpbnQzMl90IGhhbmRsZVBvc2l0aW9uKTsKLSNlbmRp
ZgogICAgIHZvaWQgc2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IGZyb20sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0bywgdWludDMyX3QgZ2VzdHVyZVR5cGUs
IHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBleHRlbmRTZWxl
Y3Rpb24odWludDMyX3QgZ3JhbnVsYXJpdHkpOwogICAgIHZvaWQgc2VsZWN0V29yZEJhY2t3YXJk
KCk7CkBAIC0xMTA0LDEyICsxMTAxLDYgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyB2b2lkIGNv
bnZlcnRTZWxlY3Rpb25SZWN0c1RvUm9vdFZpZXcoV2ViQ29yZTo6RnJhbWVWaWV3KiwgVmVjdG9y
PFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+Jik7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBy
YW5nZUZvcldlYlNlbGVjdGlvbkF0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBj
b25zdCBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24mLCBTZWxlY3Rpb25GbGFncyYpOwotI2lmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMjAwMDAKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6UmFuZ2U+IHJhbmdlRm9yQmxvY2tBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7
Ci0gICAgdm9pZCBjb21wdXRlRXhwYW5kQW5kU2hyaW5rVGhyZXNob2xkc0ZvckhhbmRsZShjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYsIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uLCBmbG9hdCYgZ3Jv
d1RocmVzaG9sZCwgZmxvYXQmIHNocmlua1RocmVzaG9sZCk7Ci0gICAgUmVmPFdlYkNvcmU6OlJh
bmdlPiBleHBhbmRlZFJhbmdlRnJvbUhhbmRsZShXZWJDb3JlOjpSYW5nZSYsIFNlbGVjdGlvbkhh
bmRsZVBvc2l0aW9uKTsKLSAgICBSZWY8V2ViQ29yZTo6UmFuZ2U+IGNvbnRyYWN0ZWRSYW5nZUZy
b21IYW5kbGUoV2ViQ29yZTo6UmFuZ2UmIGN1cnJlbnRSYW5nZSwgU2VsZWN0aW9uSGFuZGxlUG9z
aXRpb24sIFNlbGVjdGlvbkZsYWdzJik7Ci0jZW5kaWYKICAgICB2b2lkIGdldEFzc2lzdGVkTm9k
ZUluZm9ybWF0aW9uKEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uJik7CiAgICAgdm9pZCBwbGF0Zm9y
bUluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCk7CiAgICAgdm9pZCBoYW5kbGVTeW50aGV0aWNDbGlj
ayhXZWJDb3JlOjpOb2RlKiBub2RlUmVzcG9uZGluZ1RvQ2xpY2ssIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UG9pbnQmIGxvY2F0aW9uKTsKQEAgLTExMTgsOSArMTEwOSw2IEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZXNldFRleHRBdXRvc2l6aW5nKCk7CiAgICAgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9u
IHZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQb2ludChjb25zdCBXZWJDb3JlOjpGcmFt
ZSYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lz
dGVkTm9kZSk7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiByYW5nZUZvckdyYW51bGFyaXR5
QXRQb2ludChXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMy
X3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUpOwotI2lm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMjAwMDAKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6UmFuZ2U+IGNoYW5nZUJsb2NrU2VsZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb24sIGZsb2F0JiBncm93VGhyZXNob2xkLCBmbG9hdCYg
c2hyaW5rVGhyZXNob2xkLCBTZWxlY3Rpb25GbGFncyYpOwotI2VuZGlmCiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4J
KHJldmlzaW9uIDIzMDQ1NSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTU3LDkgKzU3LDYgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgQmx1ckFzc2lzdGVkTm9kZSgpCiAg
ICAgU2VsZWN0V2l0aEdlc3R1cmUoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdy
YW51bGFyaXR5LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBi
b29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKICAgICBVcGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2lu
dCBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA8
IDEyMDAwMAotICAgIFVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoKFdlYkNvcmU6OkludFBv
aW50IHBvaW50LCB1aW50MzJfdCB0b3VjaCwgdWludDMyX3QgaGFuZGxlUG9zaXRpb24pCi0jZW5k
aWYKICAgICBTZWxlY3RXaXRoVHdvVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBXZWJD
b3JlOjpJbnRQb2ludCB0bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVT
dGF0ZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgRXh0ZW5kU2VsZWN0aW9u
KHVpbnQzMl90IGdyYW51bGFyaXR5KQogICAgIFNlbGVjdFdvcmRCYWNrd2FyZCgpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQkocmV2aXNpb24gMjMwNDU1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwNzUsMzY0ICsxMDc1LDYgQEAg
UmVmUHRyPFJhbmdlPiBXZWJQYWdlOjpyYW5nZUZvcldlYlNlbGVjdAogICAgIHJldHVybiByYW5n
ZS0+Y29sbGFwc2VkKCkgPyBudWxscHRyIDogcmFuZ2U7CiB9CiAKLSNpZiBfX0lQSE9ORV9PU19W
RVJTSU9OX01BWF9BTExPV0VEIDwgMTIwMDAwCi1zdGF0aWMgYm9vbCBjYW5TaHJpbmtUb1RleHRT
ZWxlY3Rpb24oUmFuZ2UmIHJhbmdlKQotewotICAgIGlmIChyYW5nZS5zdGFydENvbnRhaW5lcigp
LmlzVGV4dE5vZGUoKSAmJiByYW5nZS5lbmRDb250YWluZXIoKS5pc1RleHROb2RlKCkpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBjYW5TaHJpbmtUb1RleHRTZWxlY3Rpb24ocmFu
Z2UuY29tbW9uQW5jZXN0b3JDb250YWluZXIoKSk7Ci19Ci1zdGF0aWMgY29uc3QgaW50IG1heEhp
dFRlc3RzID0gMTA7Ci0KLXN0YXRpYyBpbmxpbmUgZmxvYXQgZGlzdGFuY2VCZXR3ZWVuUmVjdHNG
b3JQb3NpdGlvbihJbnRSZWN0JiBmaXJzdCwgSW50UmVjdCYgc2Vjb25kLCBTZWxlY3Rpb25IYW5k
bGVQb3NpdGlvbiBoYW5kbGVQb3NpdGlvbikKLXsKLSAgICBzd2l0Y2ggKGhhbmRsZVBvc2l0aW9u
KSB7Ci0gICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6VG9wOgotICAgICAgICByZXR1
cm4gYWJzKGZpcnN0LnkoKSAtIHNlY29uZC55KCkpOwotICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxl
UG9zaXRpb246OlJpZ2h0OgotICAgICAgICByZXR1cm4gYWJzKGZpcnN0Lm1heFgoKSAtIHNlY29u
ZC5tYXhYKCkpOwotICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OkJvdHRvbToKLSAg
ICAgICAgcmV0dXJuIGFicyhmaXJzdC5tYXhZKCkgLSBzZWNvbmQubWF4WSgpKTsKLSAgICBjYXNl
IFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpMZWZ0OgotICAgICAgICByZXR1cm4gYWJzKGZpcnN0
LngoKSAtIHNlY29uZC54KCkpOwotICAgIH0KLX0KLQotc3RhdGljIGlubGluZSBib29sIHJlY3Rz
RXNzZW50aWFsbHlUaGVTYW1lKEludFJlY3QmIGZpcnN0LCBJbnRSZWN0JiBzZWNvbmQsIGZsb2F0
IGFsbG93YWJsZVBlcmNlbnREaWZmZXJlbmNlKQotewotICAgIGNvbnN0IGZsb2F0IG1pbk1hZ25p
dHVkZVJhdGlvID0gMS4wIC0gYWxsb3dhYmxlUGVyY2VudERpZmZlcmVuY2U7Ci0gICAgY29uc3Qg
ZmxvYXQgbWF4RGlzcGxhY2VtZW50UmF0aW8gPSBhbGxvd2FibGVQZXJjZW50RGlmZmVyZW5jZTsK
LSAgICAKLSAgICBmbG9hdCB4T3JpZ2luU2hpZnRSYXRpbyA9IGFicyhmaXJzdC54KCkgLSBzZWNv
bmQueCgpKSAvIHN0ZDo6bWluKGZpcnN0LndpZHRoKCksIHNlY29uZC53aWR0aCgpKTsKLSAgICBm
bG9hdCB5T3JpZ2luU2hpZnRSYXRpbyA9IGFicyhmaXJzdC55KCkgLSBzZWNvbmQueSgpKSAvIHN0
ZDo6bWluKGZpcnN0LmhlaWdodCgpLCBzZWNvbmQuaGVpZ2h0KCkpOwotICAgIAotICAgIGZsb2F0
IHdpZHRoUmF0aW8gPSBzdGQ6Om1pbihmaXJzdC53aWR0aCgpIC8gc2Vjb25kLndpZHRoKCksIHNl
Y29uZC53aWR0aCgpIC8gZmlyc3Qud2lkdGgoKSk7Ci0gICAgZmxvYXQgaGVpZ2h0UmF0aW8gPSBz
dGQ6Om1pbihmaXJzdC5oZWlnaHQoKSAvIHNlY29uZC5oZWlnaHQoKSwgc2Vjb25kLmhlaWdodCgp
IC8gZmlyc3QuaGVpZ2h0KCkpOwotICAgIHJldHVybiAoKHdpZHRoUmF0aW8gPiBtaW5NYWduaXR1
ZGVSYXRpbyAmJiB4T3JpZ2luU2hpZnRSYXRpbyA8IG1heERpc3BsYWNlbWVudFJhdGlvKSAmJiAo
aGVpZ2h0UmF0aW8gPiBtaW5NYWduaXR1ZGVSYXRpbyAmJiB5T3JpZ2luU2hpZnRSYXRpbyA8IG1h
eERpc3BsYWNlbWVudFJhdGlvKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgUmVmUHRyPFJhbmdlPiB1
bmlvbkRPTVJhbmdlcyhSYW5nZSogcmFuZ2VBLCBSYW5nZSogcmFuZ2VCKQotewotICAgIGlmICgh
cmFuZ2VCKQotICAgICAgICByZXR1cm4gcmFuZ2VBOwotICAgIGlmICghcmFuZ2VBKQotICAgICAg
ICByZXR1cm4gcmFuZ2VCOwotICAgIAotICAgIGF1dG8gc3RhcnRUb1N0YXJ0Q29tcGFyaXNvbiA9
IHJhbmdlQS0+Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKFJhbmdlOjpTVEFSVF9UT19TVEFSVCwgKnJh
bmdlQik7Ci0gICAgaWYgKHN0YXJ0VG9TdGFydENvbXBhcmlzb24uaGFzRXhjZXB0aW9uKCkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAotICAgIGF1dG8gZW5kVG9FbmRDb21wYXJpc29u
ID0gcmFuZ2VBLT5jb21wYXJlQm91bmRhcnlQb2ludHMoUmFuZ2U6OkVORF9UT19FTkQsICpyYW5n
ZUIpOwotICAgIGlmIChlbmRUb0VuZENvbXBhcmlzb24uaGFzRXhjZXB0aW9uKCkpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIAotICAgIGF1dG8qIHN0YXJ0ID0gc3RhcnRUb1N0YXJ0Q29t
cGFyaXNvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKSA8PSAwID8gcmFuZ2VBIDogcmFuZ2VCOwotICAg
IGF1dG8qIGVuZCA9IGVuZFRvRW5kQ29tcGFyaXNvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKSA8PSAw
ID8gcmFuZ2VCIDogcmFuZ2VBOwotICAgIAotICAgIHJldHVybiBSYW5nZTo6Y3JlYXRlKHJhbmdl
QS0+b3duZXJEb2N1bWVudCgpLCAmc3RhcnQtPnN0YXJ0Q29udGFpbmVyKCksIHN0YXJ0LT5zdGFy
dE9mZnNldCgpLCAmZW5kLT5lbmRDb250YWluZXIoKSwgZW5kLT5lbmRPZmZzZXQoKSk7Ci19Ci0K
LXN0YXRpYyBpbmxpbmUgSW50UG9pbnQgY29tcHV0ZUVkZ2VDZW50ZXIoY29uc3QgSW50UmVjdCYg
Ym94LCBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbiBoYW5kbGVQb3NpdGlvbikKLXsKLSAgICBzd2l0
Y2ggKGhhbmRsZVBvc2l0aW9uKSB7Ci0gICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6
VG9wOgotICAgICAgICByZXR1cm4gSW50UG9pbnQoYm94LngoKSArIGJveC53aWR0aCgpIC8gMiwg
Ym94LnkoKSk7Ci0gICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6UmlnaHQ6Ci0gICAg
ICAgIHJldHVybiBJbnRQb2ludChib3gubWF4WCgpLCBib3gueSgpICsgYm94LmhlaWdodCgpIC8g
Mik7Ci0gICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6Qm90dG9tOgotICAgICAgICBy
ZXR1cm4gSW50UG9pbnQoYm94LngoKSArIGJveC53aWR0aCgpIC8gMiwgYm94Lm1heFkoKSk7Ci0g
ICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6TGVmdDoKLSAgICAgICAgcmV0dXJuIElu
dFBvaW50KGJveC54KCksIGJveC55KCkgKyBib3guaGVpZ2h0KCkgLyAyKTsKLSAgICB9Ci19Ci0K
LVJlZjxSYW5nZT4gV2ViUGFnZTo6ZXhwYW5kZWRSYW5nZUZyb21IYW5kbGUoUmFuZ2UmIGN1cnJl
bnRSYW5nZSwgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb24gaGFuZGxlUG9zaXRpb24pCi17Ci0gICAg
SW50UmVjdCBjdXJyZW50Qm94ID0gc2VsZWN0aW9uQm94Rm9yUmFuZ2UoJmN1cnJlbnRSYW5nZSk7
Ci0gICAgSW50UG9pbnQgZWRnZUNlbnRlciA9IGNvbXB1dGVFZGdlQ2VudGVyKGN1cnJlbnRCb3gs
IGhhbmRsZVBvc2l0aW9uKTsKLSAgICBzdGF0aWMgY29uc3QgZmxvYXQgbWF4RGlzdGFuY2UgPSAx
MDAwOwotICAgIGNvbnN0IGZsb2F0IG11bHRpcGxlID0gcG93ZihtYXhEaXN0YW5jZSwgMS4wIC8g
KG1heEhpdFRlc3RzIC0gMSkpOwotICAgIGZsb2F0IGRpc3RhbmNlID0gMTsKLSAgICAKLSAgICBS
ZWZQdHI8UmFuZ2U+IGJlc3RSYW5nZTsKLSAgICBJbnRSZWN0IGJlc3RSZWN0OwotICAgIAotICAg
IHdoaWxlIChkaXN0YW5jZSA8IG1heERpc3RhbmNlKSB7Ci0gICAgICAgIGlmIChiZXN0UmFuZ2Up
IHsKLSAgICAgICAgICAgIGlmIChkaXN0YW5jZUJldHdlZW5SZWN0c0ZvclBvc2l0aW9uKGJlc3RS
ZWN0LCBjdXJyZW50Qm94LCBoYW5kbGVQb3NpdGlvbikgPCBkaXN0YW5jZSkgewotICAgICAgICAg
ICAgICAgIC8vIEJyZWFrIGVhcmx5LCB3ZSdyZSB1bmxpa2VseSB0byBkbyBhbnkgYmV0dGVyLgot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICBJbnRQb2ludCB0ZXN0UG9pbnQgPSBlZGdlQ2VudGVyOwotICAgICAgICBzd2l0
Y2ggKGhhbmRsZVBvc2l0aW9uKSB7Ci0gICAgICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRp
b246OlRvcDoKLSAgICAgICAgICAgIHRlc3RQb2ludC5tb3ZlKDAsIC1kaXN0YW5jZSk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6Umln
aHQ6Ci0gICAgICAgICAgICB0ZXN0UG9pbnQubW92ZShkaXN0YW5jZSwgMCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6Qm90dG9tOgot
ICAgICAgICAgICAgdGVzdFBvaW50Lm1vdmUoMCwgZGlzdGFuY2UpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OkxlZnQ6Ci0gICAgICAg
ICAgICB0ZXN0UG9pbnQubW92ZSgtZGlzdGFuY2UsIDApOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGRpc3RhbmNlID0gY2VpbGYoZGlzdGFuY2UgKiBt
dWx0aXBsZSk7Ci0gICAgICAgIAotICAgICAgICBSZWZQdHI8UmFuZ2U+IG5ld1JhbmdlOwotICAg
ICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlQXRQb3NpdGlvbiA9IHJhbmdlRm9yQmxvY2tBdFBvaW50
KHRlc3RQb2ludCk7Ci0gICAgICAgIGlmICghcmFuZ2VBdFBvc2l0aW9uIHx8ICZjdXJyZW50UmFu
Z2Uub3duZXJEb2N1bWVudCgpICE9ICZyYW5nZUF0UG9zaXRpb24tPm93bmVyRG9jdW1lbnQoKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAgICAgICAgaWYgKHJhbmdlQXRQb3Np
dGlvbi0+Y29udGFpbnMoY3VycmVudFJhbmdlKSkKLSAgICAgICAgICAgIG5ld1JhbmdlID0gcmFu
Z2VBdFBvc2l0aW9uOwotICAgICAgICBlbHNlIGlmIChjdXJyZW50UmFuZ2UuY29udGFpbnMoKnJh
bmdlQXRQb3NpdGlvbi5nZXQoKSkpCi0gICAgICAgICAgICBuZXdSYW5nZSA9ICZjdXJyZW50UmFu
Z2U7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5ld1JhbmdlID0gdW5pb25ET01SYW5nZXMo
JmN1cnJlbnRSYW5nZSwgcmFuZ2VBdFBvc2l0aW9uLmdldCgpKTsKLSAgICAgICAgCi0gICAgICAg
IEludFJlY3QgY29weVJlY3QgPSBzZWxlY3Rpb25Cb3hGb3JSYW5nZShuZXdSYW5nZS5nZXQoKSk7
Ci0gICAgICAgIAotICAgICAgICAvLyBJcyBpdCBkaWZmZXJlbnQgYW5kIGJpZ2dlciB0aGFuIHRo
ZSBjdXJyZW50PwotICAgICAgICBib29sIGlzQmV0dGVyQ2hvaWNlID0gIShyZWN0c0Vzc2VudGlh
bGx5VGhlU2FtZShjb3B5UmVjdCwgY3VycmVudEJveCwgLjA1KSk7Ci0gICAgICAgIGlmIChpc0Jl
dHRlckNob2ljZSkgewotICAgICAgICAgICAgc3dpdGNoIChoYW5kbGVQb3NpdGlvbikgewotICAg
ICAgICAgICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6VG9wOgotICAgICAgICAgICAg
Y2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6Qm90dG9tOgotICAgICAgICAgICAgICAgIGlz
QmV0dGVyQ2hvaWNlID0gKGNvcHlSZWN0LmhlaWdodCgpID4gY3VycmVudEJveC5oZWlnaHQoKSk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFNlbGVjdGlvbkhhbmRs
ZVBvc2l0aW9uOjpSaWdodDoKLSAgICAgICAgICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRp
b246OkxlZnQ6Ci0gICAgICAgICAgICAgICAgaXNCZXR0ZXJDaG9pY2UgPSAoY29weVJlY3Qud2lk
dGgoKSA+IGN1cnJlbnRCb3gud2lkdGgoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYg
KGJlc3RSYW5nZSAmJiBpc0JldHRlckNob2ljZSkgewotICAgICAgICAgICAgLy8gRnVydGhlcm9y
ZSwgaXMgaXQgc21hbGxlciB0aGFuIHRoZSBiZXN0IHdlJ3ZlIGZvdW5kIHNvIGZhcj8KLSAgICAg
ICAgICAgIHN3aXRjaCAoaGFuZGxlUG9zaXRpb24pIHsKLSAgICAgICAgICAgIGNhc2UgU2VsZWN0
aW9uSGFuZGxlUG9zaXRpb246OlRvcDoKLSAgICAgICAgICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxl
UG9zaXRpb246OkJvdHRvbToKLSAgICAgICAgICAgICAgICBpc0JldHRlckNob2ljZSA9IChjb3B5
UmVjdC5oZWlnaHQoKSA8IGJlc3RSZWN0LmhlaWdodCgpKTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OlJpZ2h0OgotICAg
ICAgICAgICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6TGVmdDoKLSAgICAgICAgICAg
ICAgICBpc0JldHRlckNob2ljZSA9IChjb3B5UmVjdC53aWR0aCgpIDwgYmVzdFJlY3Qud2lkdGgo
KSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIGlmIChpc0JldHRlckNob2ljZSkgewotICAgICAgICAgICAgYmVzdFJh
bmdlID0gbmV3UmFuZ2U7Ci0gICAgICAgICAgICBiZXN0UmVjdCA9IGNvcHlSZWN0OwotICAgICAg
ICB9Ci0gICAgfQotICAgIAotICAgIGlmIChiZXN0UmFuZ2UpCi0gICAgICAgIHJldHVybiBiZXN0
UmFuZ2UucmVsZWFzZU5vbk51bGwoKTsKLSAgICAKLSAgICByZXR1cm4gY3VycmVudFJhbmdlOwot
fQotCi1SZWY8UmFuZ2U+IFdlYlBhZ2U6OmNvbnRyYWN0ZWRSYW5nZUZyb21IYW5kbGUoUmFuZ2Um
IGN1cnJlbnRSYW5nZSwgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb24gaGFuZGxlUG9zaXRpb24sIFNl
bGVjdGlvbkZsYWdzJiBmbGFncykKLXsKLSAgICAvLyBTaHJpbmtpbmcgd2l0aCBhIGJhc2UgYW5k
IGV4dGVudCB3aWxsIGFsd2F5cyBnaXZlIGJldHRlciByZXN1bHRzLiBJZiB3ZSBvbmx5IGhhdmUg
YSBzaW5nbGUgZWxlbWVudCwKLSAgICAvLyBzZWUgaWYgd2UgY2FuIGJyZWFrIHRoYXQgZG93biB0
byBhIGJhc2UgYW5kIGV4dGVudC4gU2hyaW5raW5nIGJhc2UgYW5kIGV4dGVudCBpcyBjb21wYXJh
dGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZC4KLSAgICAvLyBTaHJpbmtpbmcgZG93biB0byBhbm90aGVy
IGVsZW1lbnQgaXMgdW5saWtlbHkgdG8gbW92ZSBqdXN0IG9uZSBlZGdlLCBidXQgd2UgY2FuIHRy
eSB0aGF0IGFzIGEgZmFsbGJhY2suCi0gICAgCi0gICAgSW50UmVjdCBjdXJyZW50Qm94ID0gc2Vs
ZWN0aW9uQm94Rm9yUmFuZ2UoJmN1cnJlbnRSYW5nZSk7Ci0gICAgSW50UG9pbnQgZWRnZUNlbnRl
ciA9IGNvbXB1dGVFZGdlQ2VudGVyKGN1cnJlbnRCb3gsIGhhbmRsZVBvc2l0aW9uKTsKLSAgICAK
LSAgICBmbG9hdCBtYXhEaXN0YW5jZTsKLSAgICAKLSAgICBzd2l0Y2ggKGhhbmRsZVBvc2l0aW9u
KSB7Ci0gICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6VG9wOgotICAgIGNhc2UgU2Vs
ZWN0aW9uSGFuZGxlUG9zaXRpb246OkJvdHRvbToKLSAgICAgICAgbWF4RGlzdGFuY2UgPSBjdXJy
ZW50Qm94LmhlaWdodCgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlbGVjdGlvbkhhbmRs
ZVBvc2l0aW9uOjpSaWdodDoKLSAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpMZWZ0
OgotICAgICAgICBtYXhEaXN0YW5jZSA9IGN1cnJlbnRCb3gud2lkdGgoKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotICAgIAotICAgIGNvbnN0IGZsb2F0IG11bHRpcGxlID0gcG93ZihtYXhEaXN0
YW5jZSAtIDEsIDEuMCAvIChtYXhIaXRUZXN0cyAtIDEpKTsKLSAgICBmbG9hdCBkaXN0YW5jZSA9
IDE7Ci0gICAgUmVmUHRyPFJhbmdlPiBiZXN0UmFuZ2U7Ci0gICAgSW50UmVjdCBiZXN0UmVjdDsK
LSAgICAKLSAgICB3aGlsZSAoZGlzdGFuY2UgPCBtYXhEaXN0YW5jZSkgewotICAgICAgICBpZiAo
YmVzdFJhbmdlKSB7Ci0gICAgICAgICAgICBmbG9hdCBzaHJhbmtEaXN0YW5jZTsKLSAgICAgICAg
ICAgIHN3aXRjaCAoaGFuZGxlUG9zaXRpb24pIHsKLSAgICAgICAgICAgIGNhc2UgU2VsZWN0aW9u
SGFuZGxlUG9zaXRpb246OlRvcDoKLSAgICAgICAgICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9z
aXRpb246OkJvdHRvbToKLSAgICAgICAgICAgICAgICBzaHJhbmtEaXN0YW5jZSA9IGFicyhjdXJy
ZW50Qm94LmhlaWdodCgpIC0gYmVzdFJlY3QuaGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6UmlnaHQ6Ci0g
ICAgICAgICAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpMZWZ0OgotICAgICAgICAg
ICAgICAgIHNocmFua0Rpc3RhbmNlID0gYWJzKGN1cnJlbnRCb3gud2lkdGgoKSAtIGJlc3RSZWN0
LndpZHRoKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaWYgKHNocmFua0Rpc3RhbmNlID4gZGlzdGFuY2UpIHsKLSAgICAgICAgICAgICAgICAv
LyBDZXJ0YWlubHkgbm90IGdvaW5nIHRvIGRvIGFueSBiZXR0ZXIgdGhhbiB0aGF0LgotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBJbnRQb2ludCB0ZXN0UG9pbnQgPSBlZGdlQ2VudGVyOwotICAgICAgICBzd2l0Y2ggKGhh
bmRsZVBvc2l0aW9uKSB7Ci0gICAgICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OlRv
cDoKLSAgICAgICAgICAgIHRlc3RQb2ludC5tb3ZlKDAsIGRpc3RhbmNlKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpSaWdodDoKLSAg
ICAgICAgICAgIHRlc3RQb2ludC5tb3ZlKC1kaXN0YW5jZSwgMCk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6Qm90dG9tOgotICAgICAg
ICAgICAgdGVzdFBvaW50Lm1vdmUoMCwgLWRpc3RhbmNlKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpMZWZ0OgotICAgICAgICAgICAg
dGVzdFBvaW50Lm1vdmUoZGlzdGFuY2UsIDApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIGRpc3RhbmNlICo9IG11bHRpcGxlOwotICAgICAgICAKLSAg
ICAgICAgUmVmUHRyPFJhbmdlPiBuZXdSYW5nZSA9IHJhbmdlRm9yQmxvY2tBdFBvaW50KHRlc3RQ
b2ludCk7Ci0gICAgICAgIGlmICghbmV3UmFuZ2UgfHwgJm5ld1JhbmdlLT5vd25lckRvY3VtZW50
KCkgIT0gJmN1cnJlbnRSYW5nZS5vd25lckRvY3VtZW50KCkpCi0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgCi0gICAgICAgIGlmIChoYW5kbGVQb3NpdGlvbiA9PSBTZWxlY3Rpb25IYW5k
bGVQb3NpdGlvbjo6VG9wIHx8IGhhbmRsZVBvc2l0aW9uID09IFNlbGVjdGlvbkhhbmRsZVBvc2l0
aW9uOjpMZWZ0KQotICAgICAgICAgICAgbmV3UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5ld1Jhbmdl
LT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCksIG5ld1JhbmdlLT5lbmRQb3NpdGlvbigpLCBj
dXJyZW50UmFuZ2UuZW5kUG9zaXRpb24oKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5l
d1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShuZXdSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVu
dCgpLCBjdXJyZW50UmFuZ2Uuc3RhcnRQb3NpdGlvbigpLCBuZXdSYW5nZS0+c3RhcnRQb3NpdGlv
bigpKTsKLSAgICAgICAgCi0gICAgICAgIEludFJlY3QgY29weVJlY3QgPSBzZWxlY3Rpb25Cb3hG
b3JSYW5nZShuZXdSYW5nZS5nZXQoKSk7Ci0gICAgICAgIGlmIChjb3B5UmVjdC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgIC8vIElmIHRoZSBuZXcgcmFuZ2UgaXMgYW4gZW1wdHkgcmVjdGFuZ2xl
LCB3ZSB0cnkgdGhlIGJsb2NrIGF0IHRoZSBjdXJyZW50IHBvaW50Ci0gICAgICAgICAgICAvLyBh
bmQgc2VlIGlmIHRoYXQgaGFzIGEgcmVjdGFuZ2xlIHRoYXQgaXMgYSBiZXR0ZXIgY2hvaWNlLgot
ICAgICAgICAgICAgbmV3UmFuZ2UgPSByYW5nZUZvckJsb2NrQXRQb2ludCh0ZXN0UG9pbnQpOwot
ICAgICAgICAgICAgY29weVJlY3QgPSBzZWxlY3Rpb25Cb3hGb3JSYW5nZShuZXdSYW5nZS5nZXQo
KSk7Ci0gICAgICAgIH0KLSAgICAgICAgYm9vbCBpc0JldHRlckNob2ljZTsKLSAgICAgICAgc3dp
dGNoIChoYW5kbGVQb3NpdGlvbikgewotICAgICAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0
aW9uOjpUb3A6Ci0gICAgICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OkJvdHRvbToK
LSAgICAgICAgICAgIGlzQmV0dGVyQ2hvaWNlID0gKGNvcHlSZWN0LmhlaWdodCgpIDwgY3VycmVu
dEJveC5oZWlnaHQoKSk7Ci0gICAgICAgICAgICBpZiAoY29weVJlY3QuaGVpZ2h0KCkgPT0gY3Vy
cmVudEJveC5oZWlnaHQoKSkKLSAgICAgICAgICAgICAgICBpc0JldHRlckNob2ljZSA9IGNhblNo
cmlua1RvVGV4dFNlbGVjdGlvbigqbmV3UmFuZ2UuZ2V0KCkpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OkxlZnQ6Ci0gICAgICAgIGNh
c2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OlJpZ2h0OgotICAgICAgICAgICAgaXNCZXR0ZXJD
aG9pY2UgPSAoY29weVJlY3Qud2lkdGgoKSA+IGJlc3RSZWN0LndpZHRoKCkpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlzQmV0dGVyQ2hvaWNlID0g
aXNCZXR0ZXJDaG9pY2UgJiYgIWFyZVJhbmdlc0VxdWFsKG5ld1JhbmdlLmdldCgpLCAmY3VycmVu
dFJhbmdlKTsKLSAgICAgICAgaWYgKGJlc3RSYW5nZSAmJiBpc0JldHRlckNob2ljZSkgewotICAg
ICAgICAgICAgc3dpdGNoIChoYW5kbGVQb3NpdGlvbikgewotICAgICAgICAgICAgY2FzZSBTZWxl
Y3Rpb25IYW5kbGVQb3NpdGlvbjo6VG9wOgotICAgICAgICAgICAgY2FzZSBTZWxlY3Rpb25IYW5k
bGVQb3NpdGlvbjo6Qm90dG9tOgotICAgICAgICAgICAgICAgIGlzQmV0dGVyQ2hvaWNlID0gKGNv
cHlSZWN0LmhlaWdodCgpID4gYmVzdFJlY3QuaGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6TGVmdDoKLSAg
ICAgICAgICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OlJpZ2h0OgotICAgICAgICAg
ICAgICAgIGlzQmV0dGVyQ2hvaWNlID0gKGNvcHlSZWN0LndpZHRoKCkgPiBiZXN0UmVjdC53aWR0
aCgpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgICAgICBpZiAoaXNCZXR0ZXJDaG9pY2UpIHsKLSAgICAgICAgICAgIGJlc3RSYW5nZSA9IG5l
d1JhbmdlOwotICAgICAgICAgICAgYmVzdFJlY3QgPSBjb3B5UmVjdDsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICB9Ci0gICAgCi0gICAgaWYgKCFiZXN0UmFuZ2UpCi0gICAgICAgIGJlc3RSYW5n
ZSA9ICZjdXJyZW50UmFuZ2U7Ci0gICAgCi0gICAgLy8gSWYgd2UgY2FuIHNocmluayBkb3duIHRv
IHRleHQgb25seSwgdGhlIG9ubHkgcmVhc29uIHdlIHdvdWxkbid0IGlzIHRoYXQKLSAgICAvLyB0
aGVyZSBhcmUgbXVsdGlwbGUgc3ViLWVsZW1lbnQgYmxvY2tzIGJlbmVhdGggdXMuIElmIHdlIGRp
ZG4ndCBmaW5kCi0gICAgLy8gbXVsdGlwbGUgc3ViLWVsZW1lbnQgYmxvY2tzLCBkb24ndCBzaHJp
bmsgdG8gYSBzdWItZWxlbWVudCBibG9jay4KLSAgICAKLSAgICBpZiAoY2FuU2hyaW5rVG9UZXh0
U2VsZWN0aW9uKCpiZXN0UmFuZ2UuZ2V0KCkpKQotICAgICAgICBmbGFncyA9IE5vbmU7Ci0gICAg
Ci0gICAgcmV0dXJuIGJlc3RSYW5nZS5yZWxlYXNlTm9uTnVsbCgpOwotfQotCi12b2lkIFdlYlBh
Z2U6OmNvbXB1dGVFeHBhbmRBbmRTaHJpbmtUaHJlc2hvbGRzRm9ySGFuZGxlKGNvbnN0IEludFBv
aW50JiBwb2ludCwgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb24gaGFuZGxlUG9zaXRpb24sIGZsb2F0
JiBncm93VGhyZXNob2xkLCBmbG9hdCYgc2hyaW5rVGhyZXNob2xkKQotewotICAgIEZyYW1lJiBm
cmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0g
ICAgUmVmUHRyPFJhbmdlPiBjdXJyZW50UmFuZ2UgPSBtX2N1cnJlbnRCbG9ja1NlbGVjdGlvbiA/
IG1fY3VycmVudEJsb2NrU2VsZWN0aW9uLmdldCgpIDogZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0
aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKTsKLSAgICAKLSAgICBpZiAoIWN1cnJlbnRSYW5nZSkK
LSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIFJlZjxSYW5nZT4gZXhwYW5kZWRSYW5nZSA9IGV4
cGFuZGVkUmFuZ2VGcm9tSGFuZGxlKCpjdXJyZW50UmFuZ2UsIGhhbmRsZVBvc2l0aW9uKTsKLSAg
ICBTZWxlY3Rpb25GbGFncyBmbGFnczsKLSAgICBSZWZQdHI8UmFuZ2U+IGNvbnRyYWN0ZWRSYW5n
ZSA9IGNvbnRyYWN0ZWRSYW5nZUZyb21IYW5kbGUoKmN1cnJlbnRSYW5nZSwgaGFuZGxlUG9zaXRp
b24sIGZsYWdzKTsKLSAgICAKLSAgICBJbnRSZWN0IGN1cnJlbnRCb3VuZHMgPSBzZWxlY3Rpb25C
b3hGb3JSYW5nZShjdXJyZW50UmFuZ2UuZ2V0KCkpOwotICAgIEludFJlY3QgZXhwYW5kZWRCb3Vu
ZHMgPSBzZWxlY3Rpb25Cb3hGb3JSYW5nZShleHBhbmRlZFJhbmdlLnB0cigpKTsKLSAgICBJbnRS
ZWN0IGNvbnRyYWN0ZWRCb3VuZHMgPSBzZWxlY3Rpb25Cb3hGb3JSYW5nZShjb250cmFjdGVkUmFu
Z2UuZ2V0KCkpOwotICAgIAotICAgIGZsb2F0IGN1cnJlbnQ7Ci0gICAgZmxvYXQgZXhwYW5kZWQ7
Ci0gICAgZmxvYXQgY29udHJhY3RlZDsKLSAgICBmbG9hdCBtYXhUaHJlc2hvbGQ7Ci0gICAgZmxv
YXQgbWluVGhyZXNob2xkOwotICAgIAotICAgIHN3aXRjaCAoaGFuZGxlUG9zaXRpb24pIHsKLSAg
ICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpUb3A6IHsKLSAgICAgICAgY3VycmVudCA9
IGN1cnJlbnRCb3VuZHMueSgpOwotICAgICAgICBleHBhbmRlZCA9IGV4cGFuZGVkQm91bmRzLnko
KTsKLSAgICAgICAgY29udHJhY3RlZCA9IGNvbnRyYWN0ZWRCb3VuZHMueSgpOwotICAgICAgICBt
YXhUaHJlc2hvbGQgPSBGTFRfTUlOOwotICAgICAgICBtaW5UaHJlc2hvbGQgPSBGTFRfTUFYOwot
ICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6
UmlnaHQ6IHsKLSAgICAgICAgY3VycmVudCA9IGN1cnJlbnRCb3VuZHMubWF4WCgpOwotICAgICAg
ICBleHBhbmRlZCA9IGV4cGFuZGVkQm91bmRzLm1heFgoKTsKLSAgICAgICAgY29udHJhY3RlZCA9
IGNvbnRyYWN0ZWRCb3VuZHMubWF4WCgpOwotICAgICAgICBtYXhUaHJlc2hvbGQgPSBGTFRfTUFY
OwotICAgICAgICBtaW5UaHJlc2hvbGQgPSBGTFRfTUlOOwotICAgICAgICBicmVhazsKLSAgICB9
Ci0gICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6Qm90dG9tOiB7Ci0gICAgICAgIGN1
cnJlbnQgPSBjdXJyZW50Qm91bmRzLm1heFkoKTsKLSAgICAgICAgZXhwYW5kZWQgPSBleHBhbmRl
ZEJvdW5kcy5tYXhZKCk7Ci0gICAgICAgIGNvbnRyYWN0ZWQgPSBjb250cmFjdGVkQm91bmRzLm1h
eFkoKTsKLSAgICAgICAgbWF4VGhyZXNob2xkID0gRkxUX01BWDsKLSAgICAgICAgbWluVGhyZXNo
b2xkID0gRkxUX01JTjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgU2VsZWN0aW9u
SGFuZGxlUG9zaXRpb246OkxlZnQ6IHsKLSAgICAgICAgY3VycmVudCA9IGN1cnJlbnRCb3VuZHMu
eCgpOwotICAgICAgICBleHBhbmRlZCA9IGV4cGFuZGVkQm91bmRzLngoKTsKLSAgICAgICAgY29u
dHJhY3RlZCA9IGNvbnRyYWN0ZWRCb3VuZHMueCgpOwotICAgICAgICBtYXhUaHJlc2hvbGQgPSBG
TFRfTUlOOwotICAgICAgICBtaW5UaHJlc2hvbGQgPSBGTFRfTUFYOwotICAgICAgICBicmVhazsK
LSAgICB9Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBjb25zdCBmbG9hdCBmcmFjdGlvblRvR3Jv
dyA9IDAuMzsKLSAgICAKLSAgICBncm93VGhyZXNob2xkID0gY3VycmVudCArIChleHBhbmRlZCAt
IGN1cnJlbnQpICogZnJhY3Rpb25Ub0dyb3c7Ci0gICAgc2hyaW5rVGhyZXNob2xkID0gY3VycmVu
dCArIChjb250cmFjdGVkIC0gY3VycmVudCkgKiAoMSAtIGZyYWN0aW9uVG9Hcm93KTsKLSAgICBp
ZiAoYXJlUmFuZ2VzRXF1YWwoZXhwYW5kZWRSYW5nZS5wdHIoKSwgY3VycmVudFJhbmdlLmdldCgp
KSkKLSAgICAgICAgZ3Jvd1RocmVzaG9sZCA9IG1heFRocmVzaG9sZDsKLSAgICAKLX0KLSNlbmRp
ZgotCiB2b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IEludFBvaW50JiBwb2lu
dCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBn
ZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CkBAIC0xNjQ3LDg5ICsxMjg5LDYgQEAgc3RhdGlj
IFJlZlB0cjxSYW5nZT4gcmFuZ2VBdFdvcmRCb3VuZGFyeQogCiAgICAgcmV0dXJuIChiYXNlIDwg
ZXh0ZW50KSA/IFJhbmdlOjpjcmVhdGUoKmZyYW1lLT5kb2N1bWVudCgpLCBiYXNlLCBleHRlbnQp
IDogUmFuZ2U6OmNyZWF0ZSgqZnJhbWUtPmRvY3VtZW50KCksIGV4dGVudCwgYmFzZSk7CiB9Ci0g
ICAgCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEyMDAwMAotCi1SZWZQ
dHI8UmFuZ2U+IFdlYlBhZ2U6OnJhbmdlRm9yQmxvY2tBdFBvaW50KGNvbnN0IEludFBvaW50JiBw
b2ludCkKLXsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCku
ZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQoKHBvaW50KSwgSGl0VGVzdFJlcXVl
c3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpE
aXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQgfCBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xp
cHBpbmcpOwotCi0gICAgTm9kZSogY3VycmVudE5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7Ci0g
ICAgUmVmUHRyPFJhbmdlPiByYW5nZTsKLQotICAgIGlmIChjdXJyZW50Tm9kZS0+aXNUZXh0Tm9k
ZSgpKSB7Ci0gICAgICAgIHJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkudmlzaWJsZVBvc2l0
aW9uRm9yUG9pbnQocG9pbnQpLCBQYXJhZ3JhcGhHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2Fy
ZCk7Ci0gICAgICAgIGlmIChyYW5nZSAmJiAhcmFuZ2UtPmNvbGxhcHNlZCgpKQotICAgICAgICAg
ICAgcmV0dXJuIHJhbmdlOwotICAgIH0KLQotICAgIGlmICghY3VycmVudE5vZGUtPmlzRWxlbWVu
dE5vZGUoKSkKLSAgICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS0+cGFyZW50RWxlbWVu
dCgpOwotCi0gICAgaWYgKCFjdXJyZW50Tm9kZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICByYW5nZSA9IFJhbmdlOjpjcmVhdGUoY3VycmVudE5vZGUtPmRvY3VtZW50KCkpOwotICAg
IHJhbmdlLT5zZWxlY3ROb2RlQ29udGVudHMoKmN1cnJlbnROb2RlKTsKLSAgICByZXR1cm4gcmFu
Z2U7Ci19Ci0gICAgCi1zdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkRXhwYW5kKFNlbGVjdGlvbkhh
bmRsZVBvc2l0aW9uIGhhbmRsZVBvc2l0aW9uLCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJ
bnRQb2ludCYgcG9pbnQpCi17Ci0gICAgc3dpdGNoIChoYW5kbGVQb3NpdGlvbikgewotICAgIGNh
c2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OlRvcDoKLSAgICAgICAgcmV0dXJuIChwb2ludC55
KCkgPCByZWN0LnkoKSk7Ci0gICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6TGVmdDoK
LSAgICAgICAgcmV0dXJuIChwb2ludC54KCkgPCByZWN0LngoKSk7Ci0gICAgY2FzZSBTZWxlY3Rp
b25IYW5kbGVQb3NpdGlvbjo6UmlnaHQ6Ci0gICAgICAgIHJldHVybiAocG9pbnQueCgpID4gcmVj
dC5tYXhYKCkpOwotICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OkJvdHRvbToKLSAg
ICAgICAgcmV0dXJuIChwb2ludC55KCkgPiByZWN0Lm1heFkoKSk7Ci0gICAgfQotfQotCi1SZWZQ
dHI8V2ViQ29yZTo6UmFuZ2U+IFdlYlBhZ2U6OmNoYW5nZUJsb2NrU2VsZWN0aW9uKGNvbnN0IElu
dFBvaW50JiBwb2ludCwgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb24gaGFuZGxlUG9zaXRpb24sIGZs
b2F0JiBncm93VGhyZXNob2xkLCBmbG9hdCYgc2hyaW5rVGhyZXNob2xkLCBTZWxlY3Rpb25GbGFn
cyYgZmxhZ3MpCi17Ci0gICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBSZWZQdHI8UmFuZ2U+IGN1cnJlbnRSYW5nZSA9
IG1fY3VycmVudEJsb2NrU2VsZWN0aW9uID8gbV9jdXJyZW50QmxvY2tTZWxlY3Rpb24uZ2V0KCkg
OiBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOwotICAg
IGlmICghY3VycmVudFJhbmdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBSZWZQdHI8
UmFuZ2U+IG5ld1JhbmdlID0gc2hvdWxkRXhwYW5kKGhhbmRsZVBvc2l0aW9uLCBzZWxlY3Rpb25C
b3hGb3JSYW5nZShjdXJyZW50UmFuZ2UuZ2V0KCkpLCBwb2ludCkgPyBleHBhbmRlZFJhbmdlRnJv
bUhhbmRsZSgqY3VycmVudFJhbmdlLCBoYW5kbGVQb3NpdGlvbikgOiBjb250cmFjdGVkUmFuZ2VG
cm9tSGFuZGxlKCpjdXJyZW50UmFuZ2UsIGhhbmRsZVBvc2l0aW9uLCBmbGFncyk7Ci0gICAgCi0g
ICAgaWYgKG5ld1JhbmdlKSB7Ci0gICAgICAgIG1fY3VycmVudEJsb2NrU2VsZWN0aW9uID0gbmV3
UmFuZ2U7Ci0gICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UobmV3UmFu
Z2UuZ2V0KCksIFZQX0RFRkFVTFRfQUZGSU5JVFksIHRydWUsIFVzZXJUcmlnZ2VyZWQpOwotICAg
IH0KLSAgICAKLSAgICBjb21wdXRlRXhwYW5kQW5kU2hyaW5rVGhyZXNob2xkc0ZvckhhbmRsZShw
b2ludCwgaGFuZGxlUG9zaXRpb24sIGdyb3dUaHJlc2hvbGQsIHNocmlua1RocmVzaG9sZCk7Ci0g
ICAgcmV0dXJuIG5ld1JhbmdlOwotfQotCi12b2lkIFdlYlBhZ2U6OnVwZGF0ZUJsb2NrU2VsZWN0
aW9uV2l0aFRvdWNoKGNvbnN0IEludFBvaW50JiBwb2ludCwgdWludDMyX3QgdG91Y2gsIHVpbnQz
Ml90IGhhbmRsZVBvc2l0aW9uKQotewotICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgSW50UG9pbnQgYWRqdXN0ZWRQ
b2ludCA9IGZyYW1lLnZpZXcoKS0+cm9vdFZpZXdUb0NvbnRlbnRzKHBvaW50KTsKLSAgICAKLSAg
ICBmbG9hdCBncm93VGhyZXNob2xkID0gMDsKLSAgICBmbG9hdCBzaHJpbmtUaHJlc2hvbGQgPSAw
OwotICAgIFNlbGVjdGlvbkZsYWdzIGZsYWdzID0gTm9uZTsKLSAgICAKLSAgICBzd2l0Y2ggKHN0
YXRpY19jYXN0PFNlbGVjdGlvblRvdWNoPih0b3VjaCkpIHsKLSAgICBjYXNlIFNlbGVjdGlvblRv
dWNoOjpTdGFydGVkOgotICAgICAgICBjb21wdXRlRXhwYW5kQW5kU2hyaW5rVGhyZXNob2xkc0Zv
ckhhbmRsZShhZGp1c3RlZFBvaW50LCBzdGF0aWNfY2FzdDxTZWxlY3Rpb25IYW5kbGVQb3NpdGlv
bj4oaGFuZGxlUG9zaXRpb24pLCBncm93VGhyZXNob2xkLCBzaHJpbmtUaHJlc2hvbGQpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFNlbGVjdGlvblRvdWNoOjpFbmRlZDoKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBTZWxlY3Rpb25Ub3VjaDo6TW92ZWQ6Ci0gICAgICAgIGNoYW5nZUJsb2Nr
U2VsZWN0aW9uKGFkanVzdGVkUG9pbnQsIHN0YXRpY19jYXN0PFNlbGVjdGlvbkhhbmRsZVBvc2l0
aW9uPihoYW5kbGVQb3NpdGlvbiksIGdyb3dUaHJlc2hvbGQsIHNocmlua1RocmVzaG9sZCwgZmxh
Z3MpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkVXBkYXRlQmxvY2tT
ZWxlY3Rpb25XaXRoVG91Y2godG91Y2gsIHN0YXRpY19jYXN0PHVpbnQzMl90PihmbGFncyksIGdy
b3dUaHJlc2hvbGQsIHNocmlua1RocmVzaG9sZCkpOwotfQotI2VuZGlmCiAKIHZvaWQgV2ViUGFn
ZTo6Y2xlYXJTZWxlY3Rpb24oKXsKICAgICBtX2N1cnJlbnRCbG9ja1NlbGVjdGlvbiA9IG51bGxw
dHI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337819</attachid>
            <date>2018-04-12 12:08:16 -0700</date>
            <delta_ts>2018-04-12 12:29:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184470-20180412120815.patch</filename>
            <type>text/plain</type>
            <size>42628</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzA1ODgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE4LTA0LTEwICBNZWdhbiBHYXJk
bmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGJsb2NrIHNl
bGVjdGlvbiBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODQ0NzAKKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisgICAg
ICAgIAorICAgICAgICBSZW1vdmUgYmxvY2sgc2VsZWN0aW9uIGNvZGUgdGhhdCBpc24ndCBydW4g
YW5kIGlzIGN1cnJlbnRseSBub3QgZXZlbiB1c2VkLgorICAgICAgICBIYWQgdG8gcHV0IHRoaXMg
YmFjayBpbiBmb3IgYSBidWcgaW4gdGhlIG1pZC15ZWFyIHJlbGVhc2UsIGJ1dCB3ZSdyZSBwYXN0
IHRoYXQKKyAgICAgICAgc28gaXQncyB0aW1lIGZvciB0aGlzIHRvIGdvIGF3YXkuCisKKyAgICAg
ICAgKiBQbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmg6CisgICAgICAgICogVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnN0b3BB
c3Npc3RpbmdOb2RlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZFVwZGF0
ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAodG9TZWxlY3Rpb25IYW5kbGVQ
b3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RpZFVwZGF0ZUJs
b2NrU2VsZWN0aW9uV2l0aFRvdWNoOndpdGhGbGFnczpncm93VGhyZXNob2xkOnNocmlua1RocmVz
aG9sZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjaGFuZ2VTZWxlY3Rp
b25XaXRoVG91Y2hBdDp3aXRoU2VsZWN0aW9uVG91Y2g6YmFzZUlzU3RhcnQ6XSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2hhbmdlQmxvY2tTZWxlY3Rpb25XaXRoVG91Y2hB
dDp3aXRoU2VsZWN0aW9uVG91Y2g6Zm9ySGFuZGxlOl0pOiBEZWxldGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6dXBkYXRlQmxvY2tTZWxlY3Rpb25XaXRoVG91Y2gpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpZFVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6cmFuZ2VB
dFdvcmRCb3VuZGFyeUZvclBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6ZGlzdGFuY2VCZXR3
ZWVuUmVjdHNGb3JQb3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OnJlY3RzRXNz
ZW50aWFsbHlUaGVTYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6dW5pb25ET01SYW5n
ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0Ojpjb21wdXRlRWRnZUNlbnRlcik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmV4cGFuZGVkUmFuZ2VGcm9tSGFuZGxlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29udHJhY3RlZFJhbmdlRnJvbUhh
bmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNvbXB1dGVFeHBhbmRB
bmRTaHJpbmtUaHJlc2hvbGRzRm9ySGFuZGxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cmFuZ2VGb3JCbG9ja0F0UG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpzaG91bGRFeHBhbmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjaGFu
Z2VCbG9ja1NlbGVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVw
ZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoKTogRGVsZXRlZC4KKyAgICAgICAgCiAyMDE4LTA0
LTEyICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAg
RG9uJ3QgaGF2ZSBzZWxlY3Rpb25zIGdldCBzdHVjayBpbiBlZGl0YWJsZSBlbGVtZW50cwpAQCAt
NDQxLDUxICs0ODYsNiBAQAogICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybVVzZXJB
Z2VudCBjb25zdCk6CiAgICAgICAgIFVzZSBXZWJDb3JlOjpzdGFuZGFyZFVzZXJBZ2VudEZvclVS
TC4KIAotMjAxOC0wNC0xMCAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29t
PgotCi0gICAgICAgIFJlbW92ZSBibG9jayBzZWxlY3Rpb24gY29kZQotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0NDcwCi0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgotICAgICAgICAKLSAgICAgICAgUmVtb3ZlIGJsb2NrIHNl
bGVjdGlvbiBjb2RlIHRoYXQgaXNuJ3QgcnVuIGFuZCBpcyBjdXJyZW50bHkgbm90IGV2ZW4gdXNl
ZC4KLSAgICAgICAgSGFkIHRvIHB1dCB0aGlzIGJhY2sgaW4gZm9yIGEgYnVnIGluIHRoZSBtaWQt
eWVhciByZWxlYXNlLCBidXQgd2UncmUgcGFzdCB0aGF0Ci0gICAgICAgIHNvIGl0J3MgdGltZSBm
b3IgdGhpcyB0byBnbyBhd2F5LgotCi0gICAgICAgICogUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQ
SS5oOgotICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6Ci0gICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oOgotICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW46Ci0gICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgot
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06Ci0gICAgICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzdG9wQXNzaXN0aW5nTm9kZSk6Ci0gICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRVcGRhdGVCbG9ja1NlbGVjdGlvbldpdGhUb3VjaCk6IERl
bGV0ZWQuCi0gICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aDoKLSAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToK
LSAgICAgICAgKHRvU2VsZWN0aW9uSGFuZGxlUG9zaXRpb24pOiBEZWxldGVkLgotICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IF9kaWRVcGRhdGVCbG9ja1NlbGVjdGlvbldpdGhUb3VjaDp3aXRoRmxh
Z3M6Z3Jvd1RocmVzaG9sZDpzaHJpbmtUaHJlc2hvbGQ6XSk6IERlbGV0ZWQuCi0gICAgICAgICgt
W1dLQ29udGVudFZpZXcgY2hhbmdlU2VsZWN0aW9uV2l0aFRvdWNoQXQ6d2l0aFNlbGVjdGlvblRv
dWNoOmJhc2VJc1N0YXJ0Ol0pOiBEZWxldGVkLgotICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNo
YW5nZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoQXQ6d2l0aFNlbGVjdGlvblRvdWNoOmZvckhhbmRs
ZTpdKTogRGVsZXRlZC4KLSAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bToKLSAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlSW1hZ2VUb0xpYnJhcnkpOgot
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRv
dWNoKTogRGVsZXRlZC4KLSAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRVcGRhdGVC
bG9ja1NlbGVjdGlvbldpdGhUb3VjaCk6IERlbGV0ZWQuCi0gICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKLSAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbjoKLSAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW06Ci0gICAgICAgIChXZWJLaXQ6OnJhbmdlQXRXb3JkQm91bmRhcnlGb3JQb3NpdGlvbik6Ci0g
ICAgICAgIChXZWJLaXQ6OmRpc3RhbmNlQmV0d2VlblJlY3RzRm9yUG9zaXRpb24pOiBEZWxldGVk
LgotICAgICAgICAoV2ViS2l0OjpyZWN0c0Vzc2VudGlhbGx5VGhlU2FtZSk6IERlbGV0ZWQuCi0g
ICAgICAgIChXZWJLaXQ6OnVuaW9uRE9NUmFuZ2VzKTogRGVsZXRlZC4KLSAgICAgICAgKFdlYktp
dDo6Y29tcHV0ZUVkZ2VDZW50ZXIpOiBEZWxldGVkLgotICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpleHBhbmRlZFJhbmdlRnJvbUhhbmRsZSk6IERlbGV0ZWQuCi0gICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmNvbnRyYWN0ZWRSYW5nZUZyb21IYW5kbGUpOiBEZWxldGVkLgotICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpjb21wdXRlRXhwYW5kQW5kU2hyaW5rVGhyZXNob2xkc0ZvckhhbmRsZSk6
IERlbGV0ZWQuCi0gICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJhbmdlRm9yQmxvY2tBdFBvaW50
KTogRGVsZXRlZC4KLSAgICAgICAgKFdlYktpdDo6c2hvdWxkRXhwYW5kKTogRGVsZXRlZC4KLSAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2hhbmdlQmxvY2tTZWxlY3Rpb24pOiBEZWxldGVkLgot
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVCbG9ja1NlbGVjdGlvbldpdGhUb3VjaCk6
IERlbGV0ZWQuCi0KIDIwMTgtMDQtMTAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0V4dHJhIHpvb20gbW9kZV0gQWRkIGEgbWVjaGFuaXNtIHRvIHpv
b20gdG8gZml4ZWQgc2NhbGVzIHdoZW4gZG91YmxlIHRhcHBpbmcgaW4gZXh0cmEgem9vbSBtb2Rl
CkBAIC02NDEsNiArNjQxLDUwIEBACiAgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
Y3BwOgogICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b24pOgogCisyMDE4LTA0LTEwICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVtb3ZlIGJsb2NrIHNlbGVjdGlvbiBjb2RlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ0NzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFJlbW92ZSBibG9jayBz
ZWxlY3Rpb24gY29kZSB0aGF0IGlzbid0IHJ1biBhbmQgaXMgY3VycmVudGx5IG5vdCBldmVuIHVz
ZWQuCisgICAgICAgIEhhZCB0byBwdXQgdGhpcyBiYWNrIGluIGZvciBhIGJ1ZyBpbiB0aGUgbWlk
LXllYXIgcmVsZWFzZSwgYnV0IHdlJ3JlIHBhc3QgdGhhdAorICAgICAgICBzbyBpdCdzIHRpbWUg
Zm9yIHRoaXMgdG8gZ28gYXdheS4KKworICAgICAgICAqIFBsYXRmb3JtL3NwaS9pb3MvVUlLaXRT
UEkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c3RvcEFzc2lzdGluZ05vZGUpOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlkVXBkYXRlQmxvY2tTZWxlY3Rpb25XaXRoVG91Y2gpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06
CisgICAgICAgICh0b1NlbGVjdGlvbkhhbmRsZVBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfZGlkVXBkYXRlQmxvY2tTZWxlY3Rpb25XaXRoVG91Y2g6d2l0aEZs
YWdzOmdyb3dUaHJlc2hvbGQ6c2hyaW5rVGhyZXNob2xkOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IGNoYW5nZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoQXQ6d2l0aFNlbGVj
dGlvblRvdWNoOmZvckhhbmRsZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZl
SW1hZ2VUb0xpYnJhcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZUJs
b2NrU2VsZWN0aW9uV2l0aFRvdWNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkaWRVcGRhdGVCbG9ja1NlbGVjdGlvbldpdGhUb3VjaCk6IERlbGV0ZWQuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OnJhbmdlQXRXb3JkQm91bmRh
cnlGb3JQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OmRpc3RhbmNlQmV0d2VlblJlY3RzRm9y
UG9zaXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpyZWN0c0Vzc2VudGlhbGx5VGhl
U2FtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OnVuaW9uRE9NUmFuZ2VzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6Y29tcHV0ZUVkZ2VDZW50ZXIpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpleHBhbmRlZFJhbmdlRnJvbUhhbmRsZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNvbnRyYWN0ZWRSYW5nZUZyb21IYW5kbGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjb21wdXRlRXhwYW5kQW5kU2hyaW5rVGhy
ZXNob2xkc0ZvckhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJh
bmdlRm9yQmxvY2tBdFBvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6c2hvdWxkRXhw
YW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2hhbmdlQmxvY2tTZWxl
Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVCbG9ja1Nl
bGVjdGlvbldpdGhUb3VjaCk6IERlbGV0ZWQuCisKIDIwMTgtMDQtMTAgIFNpaHVpIExpdSAgPHNp
aHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgTG9hZGluZyBvZiBtdWx0aXBhcnQgcmVzcG9u
c2Ugd2FzIGNhbmNlbGxlZCBiZWNhdXNlIG9mIGNvbnRlbnQgcG9saWN5IHNldCBpbiBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZQpJbmRleDogU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgJKHJldmlzaW9uIDIzMDU4OCkK
KysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NDAsOSArNTQwLDYgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVUlXS0dl
c3R1cmVUeQogQGVuZAogCiBAaW50ZXJmYWNlIFVJV0tTZWxlY3Rpb25Bc3Npc3RhbnQgKCkKLSNp
ZiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEIDwgMTIwMDAwCi0tICh2b2lkKWJsb2Nr
U2VsZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaDooVUlXS1NlbGVjdGlvblRvdWNoKXRvdWNoIHdpdGhG
bGFnczooVUlXS1NlbGVjdGlvbkZsYWdzKWZsYWdzIGdyb3dUaHJlc2hvbGQ6KENHRmxvYXQpZ3Jv
dyBzaHJpbmtUaHJlc2hvbGQ6KENHRmxvYXQpc2hyaW5rOwotI2VuZGlmCiAtIChCT09MKXNob3Vs
ZEhhbmRsZVNpbmdsZVRhcEF0UG9pbnQ6KENHUG9pbnQpcG9pbnQ7CiAtICh2b2lkKXNlbGVjdGlv
bkNoYW5nZWRXaXRoR2VzdHVyZUF0OihDR1BvaW50KXBvaW50IHdpdGhHZXN0dXJlOihVSVdLR2Vz
dHVyZVR5cGUpZ2VzdHVyZVR5cGUgd2l0aFN0YXRlOihVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUp
Z2VzdHVyZVN0YXRlIHdpdGhGbGFnczooVUlXS1NlbGVjdGlvbkZsYWdzKWZsYWdzOwogLSAodm9p
ZClzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoQXQ6KENHUG9pbnQpcG9pbnQgd2l0aFNlbGVjdGlv
blRvdWNoOihVSVdLU2VsZWN0aW9uVG91Y2gpdG91Y2ggd2l0aEZsYWdzOihVSVdLU2VsZWN0aW9u
RmxhZ3MpZmxhZ3M7CkBAIC01OTIsMTUgKzU4OSw2IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVn
ZXIsIFVJV0tHZXN0dXJlVHkKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgYXNzaWdu
KSBVSVRhcEdlc3R1cmVSZWNvZ25pemVyICpzaW5nbGVUYXBHZXN0dXJlOwogQGVuZAogCi0jaWYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEyMDAwMAotdHlwZWRlZiBOU19FTlVN
KE5TSW50ZWdlciwgVUlXS0hhbmRsZVBvc2l0aW9uKSB7Ci0gICAgVUlXS0hhbmRsZVRvcCA9IDAs
Ci0gICAgVUlXS0hhbmRsZVJpZ2h0ID0gMSwKLSAgICBVSVdLSGFuZGxlQm90dG9tID0gMiwKLSAg
ICBVSVdLSGFuZGxlTGVmdCA9IDMsCi19OwotI2VuZGlmCi0KIEBwcm90b2NvbCBVSVdLSW50ZXJh
Y3Rpb25WaWV3UHJvdG9jb2wKIC0gKHZvaWQpY2hhbmdlU2VsZWN0aW9uV2l0aEdlc3R1cmVBdDoo
Q0dQb2ludClwb2ludCB3aXRoR2VzdHVyZTooVUlXS0dlc3R1cmVUeXBlKWdlc3R1cmVUeXBlIHdp
dGhTdGF0ZTooVUlHZXN0dXJlUmVjb2duaXplclN0YXRlKXN0YXRlOwogLSAodm9pZCljaGFuZ2VT
ZWxlY3Rpb25XaXRoVG91Y2hBdDooQ0dQb2ludClwb2ludCB3aXRoU2VsZWN0aW9uVG91Y2g6KFVJ
V0tTZWxlY3Rpb25Ub3VjaCl0b3VjaCBiYXNlSXNTdGFydDooQk9PTCliYXNlSXNTdGFydCB3aXRo
RmxhZ3M6KFVJV0tTZWxlY3Rpb25GbGFncylmbGFnczsKQEAgLTYyNSwxMCArNjEzLDYgQEAgdHlw
ZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVUlXS0hhbmRsZVBvcwogLSAodm9pZClfY2FuY2VsTG9u
Z1ByZXNzR2VzdHVyZVJlY29nbml6ZXI7CiAKIEBvcHRpb25hbAotI2lmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUFYX0FMTE9XRUQgPCAxMjAwMDAKLS0gKHZvaWQpY2hhbmdlQmxvY2tTZWxlY3Rpb25X
aXRoVG91Y2hBdDooQ0dQb2ludClwb2ludCB3aXRoU2VsZWN0aW9uVG91Y2g6KFVJV0tTZWxlY3Rp
b25Ub3VjaCl0b3VjaCBmb3JIYW5kbGU6KFVJV0tIYW5kbGVQb3NpdGlvbiloYW5kbGU7Ci0jZW5k
aWYKLQogLSAodm9pZCljbGVhclNlbGVjdGlvbjsKIC0gKHZvaWQpcmVwbGFjZURpY3RhdGVkVGV4
dDooTlNTdHJpbmcgKilvbGRUZXh0IHdpdGhUZXh0OihOU1N0cmluZyAqKW5ld1RleHQ7CiAtICh2
b2lkKXJlcXVlc3REaWN0YXRpb25Db250ZXh0Oih2b2lkICheKShOU1N0cmluZyAqc2VsZWN0ZWRU
ZXh0LCBOU1N0cmluZyAqcHJlZml4VGV4dCwgTlNTdHJpbmcgKnBvc3RmaXhUZXh0KSljb21wbGV0
aW9uSGFuZGxlcjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHJldmlz
aW9uIDIzMDU4OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjk1LDkgKzI5NSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
aW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXND
aGFyRXZlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENo
YW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYpID0gMDsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEIDwgMTIwMDAwCi0g
ICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoKHVpbnQzMl90
IHRvdWNoLCB1aW50MzJfdCBmbGFncywgZmxvYXQgZ3Jvd1RocmVzaG9sZCwgZmxvYXQgc2hyaW5r
VGhyZXNob2xkKSA9IDA7Ci0jZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFy
Z2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRS
ZWN0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVEb3VibGVUYXBHZXN0dXJlc0R1cmlu
Z1RhcElmTmVjZXNzYXJ5KHVpbnQ2NF90IHJlcXVlc3RJRCkgPSAwOwogICAgIHZpcnR1YWwgZG91
YmxlIG1pbmltdW1ab29tU2NhbGUoKSBjb25zdCA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjMwNTg4KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1NCw5ICs1NTQsNiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWlu
dDMyX3QgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVp
bnQzMl90LCB1aW50MzJfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgdXBk
YXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQsIHVpbnQzMl90
IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3QsIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmKTsKICAgICB2b2lkIHNlbGVjdFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50IGZyb20sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHRvLCB1aW50MzJfdCBnZXN0dXJlVHlw
ZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYpOwotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMjAw
MDAKLSAgICB2b2lkIHVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50LCB1aW50MzJfdCB0b3VjaCwgdWludDMyX3QgaGFuZGxlUG9zaXRpb24pOwotI2Vu
ZGlmCiAgICAgdm9pZCBleHRlbmRTZWxlY3Rpb24oV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5KTsK
ICAgICB2b2lkIHNlbGVjdFdvcmRCYWNrd2FyZCgpOwogICAgIHZvaWQgbW92ZVNlbGVjdGlvbkJ5
T2Zmc2V0KGludDMyX3Qgb2Zmc2V0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmKTsKQEAgLTU4MSw5ICs1NzgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wSW50
ZXJhY3Rpb24oKTsKICAgICB2b2lkIHBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0
aW9uKTsKICAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShjb25zdCBTaGFyZWRNZW1vcnk6Okhh
bmRsZSYgaW1hZ2VIYW5kbGUsIHVpbnQ2NF90IGltYWdlU2l6ZSk7Ci0jaWYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEyMDAwMAotICAgIHZvaWQgZGlkVXBkYXRlQmxvY2tTZWxl
Y3Rpb25XaXRoVG91Y2godWludDMyX3QgdG91Y2gsIHVpbnQzMl90IGZsYWdzLCBmbG9hdCBncm93
VGhyZXNob2xkLCBmbG9hdCBzaHJpbmtUaHJlc2hvbGQpOwotI2VuZGlmCiAgICAgdm9pZCBmb2N1
c05leHRBc3Npc3RlZE5vZGUoYm9vbCBpc0ZvcndhcmQsIFdURjo6RnVuY3Rpb248dm9pZCAoQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYgPSBbXSAoYXV0bykgeyB9KTsKICAgICB2b2lkIHNldEFzc2lz
dGVkTm9kZVZhbHVlKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0QXNzaXN0ZWROb2RlVmFs
dWVBc051bWJlcihkb3VibGUpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjMwNTg4KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBA
IC0xODQsOSArMTg0LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBTZWxlY3Rp
b25Db250ZXh0Q2FsbGJhY2soU3RyaW5nIHNlbGVjdGVkVGV4dCwgU3RyaW5nIGJlZm9yZVRleHQs
IFN0cmluZyBhZnRlclRleHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIElu
dGVycHJldEtleUV2ZW50KHN0cnVjdCBXZWJLaXQ6OkVkaXRvclN0YXRlIHN0YXRlLCBib29sIGlz
Q2hhckV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKQogICAgIERpZFJlY2VpdmVQb3NpdGlvbkluZm9y
bWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIGlu
Zm9ybWF0aW9uKQotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMjAwMDAK
LSAgICBEaWRVcGRhdGVCbG9ja1NlbGVjdGlvbldpdGhUb3VjaCh1aW50MzJfdCB0b3VjaCwgdWlu
dDMyX3QgZmxhZ3MsIGZsb2F0IGdyb3dUaHJlc2hvbGQsIGZsb2F0IHNocmlua1RocmVzaG9sZCkK
LSNlbmRpZgogICAgIFNhdmVJbWFnZVRvTGlicmFyeShXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFu
ZGxlIGhhbmRsZSwgdWludDY0X3Qgc2l6ZSkKICAgICBTaG93UGxheWJhY2tUYXJnZXRQaWNrZXIo
Ym9vbCBoYXNWaWRlbywgV2ViQ29yZTo6SW50UmVjdCBlbGVtZW50UmVjdCkKICAgICBDb21taXRQ
b3RlbnRpYWxUYXBGYWlsZWQoKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgJKHJldmlzaW9uIDIzMDU4OCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzIsOSArMTMyLDYgQEAgcHJpdmF0ZToKICAgICBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0
IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSBvdmVycmlkZTsKICAg
ICB2b2lkIHBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZv
cm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKICAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFy
eShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKLSNpZiBfX0lQSE9ORV9P
U19WRVJTSU9OX01BWF9BTExPV0VEIDwgMTIwMDAwCi0gICAgdm9pZCBkaWRVcGRhdGVCbG9ja1Nl
bGVjdGlvbldpdGhUb3VjaCh1aW50MzJfdCB0b3VjaCwgdWludDMyX3QgZmxhZ3MsIGZsb2F0IGdy
b3dUaHJlc2hvbGQsIGZsb2F0IHNocmlua1RocmVzaG9sZCkgb3ZlcnJpZGU7Ci0jZW5kaWYKICAg
ICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCkgb3ZlcnJpZGU7CiAKICAgICBib29sIGhhbmRsZVJ1
bk9wZW5QYW5lbChXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJOjpPcGVuUGFuZWxQ
YXJhbWV0ZXJzKiwgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSopIG92ZXJyaWRlOwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5tbQkocmV2aXNpb24gMjMwNTg4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NjEsMTQgKzU2MSw2IEBAIHZv
aWQgUGFnZUNsaWVudEltcGw6OnN0b3BBc3Npc3RpbmdOb2RlKCkKIHsKICAgICBbbV9jb250ZW50
VmlldyBfc3RvcEFzc2lzdGluZ05vZGVdOwogfQotICAgIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUFYX0FMTE9XRUQgPCAxMjAwMDAKLXZvaWQgUGFnZUNsaWVudEltcGw6OmRpZFVwZGF0ZUJs
b2NrU2VsZWN0aW9uV2l0aFRvdWNoKHVpbnQzMl90IHRvdWNoLCB1aW50MzJfdCBmbGFncywgZmxv
YXQgZ3Jvd1RocmVzaG9sZCwgZmxvYXQgc2hyaW5rVGhyZXNob2xkKQotewotICAgIFttX2NvbnRl
bnRWaWV3IF9kaWRVcGRhdGVCbG9ja1NlbGVjdGlvbldpdGhUb3VjaDooU2VsZWN0aW9uVG91Y2gp
dG91Y2ggd2l0aEZsYWdzOihTZWxlY3Rpb25GbGFncylmbGFncyBncm93VGhyZXNob2xkOmdyb3dU
aHJlc2hvbGQgc2hyaW5rVGhyZXNob2xkOnNocmlua1RocmVzaG9sZF07Ci19Ci0jZW5kaWYKLSAg
ICAKIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wg
aGFzVmlkZW8sIGNvbnN0IEludFJlY3QmIGVsZW1lbnRSZWN0KQogewpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aAkocmV2aXNpb24gMjMwNTg4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTAsOSArMzEwLDYgQEAg
Rk9SX0VBQ0hfV0tDT05URU5UVklFV19BQ1RJT04oREVDTEFSRV9XSwogLSAodm9pZClfZGlkRW5k
U2Nyb2xsaW5nT3Jab29taW5nOwogLSAodm9pZClfb3ZlcmZsb3dTY3JvbGxpbmdXaWxsQmVnaW47
CiAtICh2b2lkKV9vdmVyZmxvd1Njcm9sbGluZ0RpZEVuZDsKLSNpZiBfX0lQSE9ORV9PU19WRVJT
SU9OX01BWF9BTExPV0VEIDwgMTIwMDAwCi0tICh2b2lkKV9kaWRVcGRhdGVCbG9ja1NlbGVjdGlv
bldpdGhUb3VjaDooV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaCl0b3VjaCB3aXRoRmxhZ3M6KFdlYktp
dDo6U2VsZWN0aW9uRmxhZ3MpZmxhZ3MgZ3Jvd1RocmVzaG9sZDooQ0dGbG9hdClncm93VGhyZXNo
b2xkIHNocmlua1RocmVzaG9sZDooQ0dGbG9hdClzaHJpbmtUaHJlc2hvbGQ7Ci0jZW5kaWYKIC0g
KHZvaWQpX3Nob3dQbGF5YmFja1RhcmdldFBpY2tlcjooQk9PTCloYXNWaWRlbyBmcm9tUmVjdDoo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYpZWxlbWVudFJlY3Q7CiAtICh2b2lkKV9zaG93UnVuT3Bl
blBhbmVsOihBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnMqKXBhcmFtZXRlcnMgcmVzdWx0TGlzdGVu
ZXI6KFdlYktpdDo6V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSopbGlzdGVuZXI7CiAt
ICh2b2lkKWFjY2Vzc29yeURvbmU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHJldmlzaW9uIDIzMDU4
OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2MzUsMjIgKzI2MzUsNiBAQCBzdGF0aWMgaW5saW5l
IFVJV0tTZWxlY3Rpb25GbGFncyB0b1VJV0tTCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFVJV0tT
ZWxlY3Rpb25GbGFncz4odWlGbGFncyk7CiB9CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01B
WF9BTExPV0VEIDwgMTIwMDAwCi1zdGF0aWMgaW5saW5lIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9u
IHRvU2VsZWN0aW9uSGFuZGxlUG9zaXRpb24oVUlXS0hhbmRsZVBvc2l0aW9uIHBvc2l0aW9uKQot
ewotICAgIHN3aXRjaCAocG9zaXRpb24pIHsKLSAgICBjYXNlIFVJV0tIYW5kbGVUb3A6Ci0gICAg
ICAgIHJldHVybiBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6VG9wOwotICAgIGNhc2UgVUlXS0hh
bmRsZVJpZ2h0OgotICAgICAgICByZXR1cm4gU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OlJpZ2h0
OwotICAgIGNhc2UgVUlXS0hhbmRsZUJvdHRvbToKLSAgICAgICAgcmV0dXJuIFNlbGVjdGlvbkhh
bmRsZVBvc2l0aW9uOjpCb3R0b207Ci0gICAgY2FzZSBVSVdLSGFuZGxlTGVmdDoKLSAgICAgICAg
cmV0dXJuIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpMZWZ0OwotICAgIH0KLX0KLSNlbmRpZgot
CiBzdGF0aWMgaW5saW5lIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSB0b1dLVGV4dEdyYW51bGFy
aXR5KFVJVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQogewogICAgIHN3aXRjaCAoZ3JhbnVs
YXJpdHkpIHsKQEAgLTI3MDksMTUgKzI2OTMsNiBAQCBzdGF0aWMgdm9pZCBzZWxlY3Rpb25DaGFu
Z2VkV2l0aFRvdWNoKFdLCiAgICAgICAgIFsoVUlXS1RleHRJbnRlcmFjdGlvbkFzc2lzdGFudCAq
KVt2aWV3IGludGVyYWN0aW9uQXNzaXN0YW50XSBzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoQXQ6
KENHUG9pbnQpcG9pbnQgd2l0aFNlbGVjdGlvblRvdWNoOnRvVUlXS1NlbGVjdGlvblRvdWNoKChT
ZWxlY3Rpb25Ub3VjaCl0b3VjaCkgd2l0aEZsYWdzOnN0YXRpY19jYXN0PFVJV0tTZWxlY3Rpb25G
bGFncz4oZmxhZ3MpXTsKIH0KIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQg
PCAxMjAwMDAKLS0gKHZvaWQpX2RpZFVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoOihTZWxl
Y3Rpb25Ub3VjaCl0b3VjaCB3aXRoRmxhZ3M6KFNlbGVjdGlvbkZsYWdzKWZsYWdzIGdyb3dUaHJl
c2hvbGQ6KENHRmxvYXQpZ3Jvd1RocmVzaG9sZCBzaHJpbmtUaHJlc2hvbGQ6KENHRmxvYXQpc2hy
aW5rVGhyZXNob2xkCi17Ci0gICAgW193ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgYmxvY2tTZWxlY3Rp
b25DaGFuZ2VkV2l0aFRvdWNoOnRvVUlXS1NlbGVjdGlvblRvdWNoKHRvdWNoKSB3aXRoRmxhZ3M6
dG9VSVdLU2VsZWN0aW9uRmxhZ3MoZmxhZ3MpIGdyb3dUaHJlc2hvbGQ6Z3Jvd1RocmVzaG9sZCBz
aHJpbmtUaHJlc2hvbGQ6c2hyaW5rVGhyZXNob2xkXTsKLSAgICBpZiAodG91Y2ggIT0gU2VsZWN0
aW9uVG91Y2g6OlN0YXJ0ZWQgJiYgdG91Y2ggIT0gU2VsZWN0aW9uVG91Y2g6Ok1vdmVkKQotICAg
ICAgICBfdXNpbmdHZXN0dXJlRm9yU2VsZWN0aW9uID0gTk87Ci19Ci0jZW5kaWYKLQogLSAoQk9P
TClfaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUKIHsKICAgICByZXR1cm4gaGFzQXNzaXN0
ZWROb2RlKF9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbik7CkBAIC0yNzY1LDE5ICsyNzQwLDYgQEAg
LSAodm9pZCljaGFuZ2VTZWxlY3Rpb25XaXRoVG91Y2hlc0Zyb206KAogICAgIH0pOwogfQogCi0j
aWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEyMDAwMAotLSAodm9pZCljaGFu
Z2VCbG9ja1NlbGVjdGlvbldpdGhUb3VjaEF0OihDR1BvaW50KXBvaW50IHdpdGhTZWxlY3Rpb25U
b3VjaDooVUlXS1NlbGVjdGlvblRvdWNoKXRvdWNoIGZvckhhbmRsZTooVUlXS0hhbmRsZVBvc2l0
aW9uKWhhbmRsZQotewotICAgIC8vIFRoaXMgd2FzIG9ubHkgcmVhZGRlZCB0byBhdm9pZCBhIGNy
YXNoIGR1ZSB0byBpbmNvbXBhdGliaWxpdGllcyB3aXRoIGNlcnRhaW4gdmVyc2lvbiBvZiBVSUtp
dC4KLSAgICAvLyBUaGlzIHNob3VsZCBiZSByZW1vdmVkIEFTQVAuCi0gICAgLy8gVGhlIHNlbGVj
dGlvbiB3aWxsIGJlIHByb3Blcmx5IHVwZGF0ZWQgd2l0aCB0aGUgbmV4dCB1cGRhdGUsIHNlbGVj
dGlvbiBzdGlsbCBmdW5jdGlvbnMKLSAgICAvLyB3aXRob3V0IHRoaXMgZnVuY3Rpb24gZG9pbmcg
YW55dGhpbmcuCi0gICAgCi0gICAgX3VzaW5nR2VzdHVyZUZvclNlbGVjdGlvbiA9IFlFUzsKLSAg
ICBfcGFnZS0+dXBkYXRlQmxvY2tTZWxlY3Rpb25XaXRoVG91Y2goV2ViQ29yZTo6SW50UG9pbnQo
cG9pbnQpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odG9TZWxlY3Rpb25Ub3VjaCh0b3VjaCkpLCBz
dGF0aWNfY2FzdDx1aW50MzJfdD4odG9TZWxlY3Rpb25IYW5kbGVQb3NpdGlvbihoYW5kbGUpKSk7
Ci19Ci0jZW5kaWYKLQogLSAodm9pZCltb3ZlQnlPZmZzZXQ6KE5TSW50ZWdlcilvZmZzZXQKIHsK
ICAgICBpZiAoIW9mZnNldCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbQkocmV2aXNpb24gMjMwNTg4KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjczLDE4
ICs2NzMsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KGNvCiAgICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBpbWFnZVNpemUpOwogICAgIG1fcGFn
ZUNsaWVudC5zYXZlSW1hZ2VUb0xpYnJhcnkoV1RGTW92ZShidWZmZXIpKTsKIH0KLSAgICAKLSNp
ZiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VEIDwgMTIwMDAwCi12b2lkIFdlYlBhZ2VQ
cm94eTo6dXBkYXRlQmxvY2tTZWxlY3Rpb25XaXRoVG91Y2goY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQgcG9pbnQsIHVpbnQzMl90IHRvdWNoLCB1aW50MzJfdCBoYW5kbGVQb3NpdGlvbikKLXsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUJsb2NrU2VsZWN0aW9u
V2l0aFRvdWNoKHBvaW50LCB0b3VjaCwgaGFuZGxlUG9zaXRpb24pLCBtX3BhZ2VJRCk7Ci19Ci0g
ICAgCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkVXBkYXRlQmxvY2tTZWxlY3Rpb25XaXRoVG91Y2go
dWludDMyX3QgdG91Y2gsIHVpbnQzMl90IGZsYWdzLCBmbG9hdCBncm93VGhyZXNob2xkLCBmbG9h
dCBzaHJpbmtUaHJlc2hvbGQpCi17Ci0gICAgbV9wYWdlQ2xpZW50LmRpZFVwZGF0ZUJsb2NrU2Vs
ZWN0aW9uV2l0aFRvdWNoKHRvdWNoLCBmbGFncywgZ3Jvd1RocmVzaG9sZCwgc2hyaW5rVGhyZXNo
b2xkKTsKLX0KLSNlbmRpZgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbGljYXRpb25EaWRFbnRl
ckJhY2tncm91bmQoKQogewpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAkocmV2aXNpb24gMjMwNTg4KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01ODAsOSArNTgwLDYgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVxdWVzdEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uKENhbGxiYWNrSUQp
OwogICAgIHZvaWQgc2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1
aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1
cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgQ2FsbGJhY2tJRCk7
CiAgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYsIHVpbnQzMl90IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQsIENhbGxiYWNrSUQpOwot
I2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMjAwMDAKLSAgICB2b2lkIHVw
ZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWlu
dDMyX3QgdG91Y2gsIHVpbnQzMl90IGhhbmRsZVBvc2l0aW9uKTsKLSNlbmRpZgogICAgIHZvaWQg
c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGZyb20sIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiB0bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdl
c3R1cmVTdGF0ZSwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBleHRlbmRTZWxlY3Rpb24odWludDMy
X3QgZ3JhbnVsYXJpdHkpOwogICAgIHZvaWQgc2VsZWN0V29yZEJhY2t3YXJkKCk7CkBAIC0xMTA3
LDEyICsxMTA0LDYgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRTZWxlY3Rp
b25SZWN0c1RvUm9vdFZpZXcoV2ViQ29yZTo6RnJhbWVWaWV3KiwgVmVjdG9yPFdlYkNvcmU6OlNl
bGVjdGlvblJlY3Q+Jik7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiByYW5nZUZvcldlYlNl
bGVjdGlvbkF0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBXZWJDb3Jl
OjpWaXNpYmxlUG9zaXRpb24mLCBTZWxlY3Rpb25GbGFncyYpOwotI2lmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUFYX0FMTE9XRUQgPCAxMjAwMDAKLSAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IHJh
bmdlRm9yQmxvY2tBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7Ci0gICAgdm9pZCBj
b21wdXRlRXhwYW5kQW5kU2hyaW5rVGhyZXNob2xkc0ZvckhhbmRsZShjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYsIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uLCBmbG9hdCYgZ3Jvd1RocmVzaG9sZCwg
ZmxvYXQmIHNocmlua1RocmVzaG9sZCk7Ci0gICAgUmVmPFdlYkNvcmU6OlJhbmdlPiBleHBhbmRl
ZFJhbmdlRnJvbUhhbmRsZShXZWJDb3JlOjpSYW5nZSYsIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9u
KTsKLSAgICBSZWY8V2ViQ29yZTo6UmFuZ2U+IGNvbnRyYWN0ZWRSYW5nZUZyb21IYW5kbGUoV2Vi
Q29yZTo6UmFuZ2UmIGN1cnJlbnRSYW5nZSwgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb24sIFNlbGVj
dGlvbkZsYWdzJik7Ci0jZW5kaWYKICAgICB2b2lkIGdldEFzc2lzdGVkTm9kZUluZm9ybWF0aW9u
KEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVB
Y2Nlc3NpYmlsaXR5KCk7CiAgICAgdm9pZCBoYW5kbGVTeW50aGV0aWNDbGljayhXZWJDb3JlOjpO
b2RlKiBub2RlUmVzcG9uZGluZ1RvQ2xpY2ssIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGxv
Y2F0aW9uKTsKQEAgLTExMjEsOSArMTExMiw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNldFRl
eHRBdXRvc2l6aW5nKCk7CiAgICAgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3Np
dGlvbkluRm9jdXNlZE5vZGVGb3JQb2ludChjb25zdCBXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSk7CiAg
ICAgUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiByYW5nZUZvckdyYW51bGFyaXR5QXRQb2ludChXZWJD
b3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJp
dHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUpOwotI2lmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMjAwMDAKLSAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+
IGNoYW5nZUJsb2NrU2VsZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgU2VsZWN0aW9u
SGFuZGxlUG9zaXRpb24sIGZsb2F0JiBncm93VGhyZXNob2xkLCBmbG9hdCYgc2hyaW5rVGhyZXNo
b2xkLCBTZWxlY3Rpb25GbGFncyYpOwotI2VuZGlmCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElP
UykgJiYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIz
MDU4OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTU3LDkgKzU3LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgQmx1ckFzc2lzdGVkTm9kZSgpCiAgICAgU2VsZWN0V2l0
aEdlc3R1cmUoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1
aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50ZXJh
Y3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAg
ICBVcGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWlu
dDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEyMDAwMAotICAg
IFVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1
aW50MzJfdCB0b3VjaCwgdWludDMyX3QgaGFuZGxlUG9zaXRpb24pCi0jZW5kaWYKICAgICBTZWxl
Y3RXaXRoVHdvVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBXZWJDb3JlOjpJbnRQb2lu
dCB0bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgRXh0ZW5kU2VsZWN0aW9uKHVpbnQzMl90IGdy
YW51bGFyaXR5KQogICAgIFNlbGVjdFdvcmRCYWNrd2FyZCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkocmV2aXNpb24g
MjMwNTg4KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwNzUsMzY0ICsxMDc1LDYgQEAgUmVmUHRyPFJhbmdl
PiBXZWJQYWdlOjpyYW5nZUZvcldlYlNlbGVjdAogICAgIHJldHVybiByYW5nZS0+Y29sbGFwc2Vk
KCkgPyBudWxscHRyIDogcmFuZ2U7CiB9CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9B
TExPV0VEIDwgMTIwMDAwCi1zdGF0aWMgYm9vbCBjYW5TaHJpbmtUb1RleHRTZWxlY3Rpb24oUmFu
Z2UmIHJhbmdlKQotewotICAgIGlmIChyYW5nZS5zdGFydENvbnRhaW5lcigpLmlzVGV4dE5vZGUo
KSAmJiByYW5nZS5lbmRDb250YWluZXIoKS5pc1RleHROb2RlKCkpCi0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIHJldHVybiBjYW5TaHJpbmtUb1RleHRTZWxlY3Rpb24ocmFuZ2UuY29tbW9uQW5j
ZXN0b3JDb250YWluZXIoKSk7Ci19Ci1zdGF0aWMgY29uc3QgaW50IG1heEhpdFRlc3RzID0gMTA7
Ci0KLXN0YXRpYyBpbmxpbmUgZmxvYXQgZGlzdGFuY2VCZXR3ZWVuUmVjdHNGb3JQb3NpdGlvbihJ
bnRSZWN0JiBmaXJzdCwgSW50UmVjdCYgc2Vjb25kLCBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbiBo
YW5kbGVQb3NpdGlvbikKLXsKLSAgICBzd2l0Y2ggKGhhbmRsZVBvc2l0aW9uKSB7Ci0gICAgY2Fz
ZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6VG9wOgotICAgICAgICByZXR1cm4gYWJzKGZpcnN0
LnkoKSAtIHNlY29uZC55KCkpOwotICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OlJp
Z2h0OgotICAgICAgICByZXR1cm4gYWJzKGZpcnN0Lm1heFgoKSAtIHNlY29uZC5tYXhYKCkpOwot
ICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OkJvdHRvbToKLSAgICAgICAgcmV0dXJu
IGFicyhmaXJzdC5tYXhZKCkgLSBzZWNvbmQubWF4WSgpKTsKLSAgICBjYXNlIFNlbGVjdGlvbkhh
bmRsZVBvc2l0aW9uOjpMZWZ0OgotICAgICAgICByZXR1cm4gYWJzKGZpcnN0LngoKSAtIHNlY29u
ZC54KCkpOwotICAgIH0KLX0KLQotc3RhdGljIGlubGluZSBib29sIHJlY3RzRXNzZW50aWFsbHlU
aGVTYW1lKEludFJlY3QmIGZpcnN0LCBJbnRSZWN0JiBzZWNvbmQsIGZsb2F0IGFsbG93YWJsZVBl
cmNlbnREaWZmZXJlbmNlKQotewotICAgIGNvbnN0IGZsb2F0IG1pbk1hZ25pdHVkZVJhdGlvID0g
MS4wIC0gYWxsb3dhYmxlUGVyY2VudERpZmZlcmVuY2U7Ci0gICAgY29uc3QgZmxvYXQgbWF4RGlz
cGxhY2VtZW50UmF0aW8gPSBhbGxvd2FibGVQZXJjZW50RGlmZmVyZW5jZTsKLSAgICAKLSAgICBm
bG9hdCB4T3JpZ2luU2hpZnRSYXRpbyA9IGFicyhmaXJzdC54KCkgLSBzZWNvbmQueCgpKSAvIHN0
ZDo6bWluKGZpcnN0LndpZHRoKCksIHNlY29uZC53aWR0aCgpKTsKLSAgICBmbG9hdCB5T3JpZ2lu
U2hpZnRSYXRpbyA9IGFicyhmaXJzdC55KCkgLSBzZWNvbmQueSgpKSAvIHN0ZDo6bWluKGZpcnN0
LmhlaWdodCgpLCBzZWNvbmQuaGVpZ2h0KCkpOwotICAgIAotICAgIGZsb2F0IHdpZHRoUmF0aW8g
PSBzdGQ6Om1pbihmaXJzdC53aWR0aCgpIC8gc2Vjb25kLndpZHRoKCksIHNlY29uZC53aWR0aCgp
IC8gZmlyc3Qud2lkdGgoKSk7Ci0gICAgZmxvYXQgaGVpZ2h0UmF0aW8gPSBzdGQ6Om1pbihmaXJz
dC5oZWlnaHQoKSAvIHNlY29uZC5oZWlnaHQoKSwgc2Vjb25kLmhlaWdodCgpIC8gZmlyc3QuaGVp
Z2h0KCkpOwotICAgIHJldHVybiAoKHdpZHRoUmF0aW8gPiBtaW5NYWduaXR1ZGVSYXRpbyAmJiB4
T3JpZ2luU2hpZnRSYXRpbyA8IG1heERpc3BsYWNlbWVudFJhdGlvKSAmJiAoaGVpZ2h0UmF0aW8g
PiBtaW5NYWduaXR1ZGVSYXRpbyAmJiB5T3JpZ2luU2hpZnRSYXRpbyA8IG1heERpc3BsYWNlbWVu
dFJhdGlvKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgUmVmUHRyPFJhbmdlPiB1bmlvbkRPTVJhbmdl
cyhSYW5nZSogcmFuZ2VBLCBSYW5nZSogcmFuZ2VCKQotewotICAgIGlmICghcmFuZ2VCKQotICAg
ICAgICByZXR1cm4gcmFuZ2VBOwotICAgIGlmICghcmFuZ2VBKQotICAgICAgICByZXR1cm4gcmFu
Z2VCOwotICAgIAotICAgIGF1dG8gc3RhcnRUb1N0YXJ0Q29tcGFyaXNvbiA9IHJhbmdlQS0+Y29t
cGFyZUJvdW5kYXJ5UG9pbnRzKFJhbmdlOjpTVEFSVF9UT19TVEFSVCwgKnJhbmdlQik7Ci0gICAg
aWYgKHN0YXJ0VG9TdGFydENvbXBhcmlzb24uaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIAotICAgIGF1dG8gZW5kVG9FbmRDb21wYXJpc29uID0gcmFuZ2VBLT5j
b21wYXJlQm91bmRhcnlQb2ludHMoUmFuZ2U6OkVORF9UT19FTkQsICpyYW5nZUIpOwotICAgIGlm
IChlbmRUb0VuZENvbXBhcmlzb24uaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIAotICAgIGF1dG8qIHN0YXJ0ID0gc3RhcnRUb1N0YXJ0Q29tcGFyaXNvbi5yZWxl
YXNlUmV0dXJuVmFsdWUoKSA8PSAwID8gcmFuZ2VBIDogcmFuZ2VCOwotICAgIGF1dG8qIGVuZCA9
IGVuZFRvRW5kQ29tcGFyaXNvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKSA8PSAwID8gcmFuZ2VCIDog
cmFuZ2VBOwotICAgIAotICAgIHJldHVybiBSYW5nZTo6Y3JlYXRlKHJhbmdlQS0+b3duZXJEb2N1
bWVudCgpLCAmc3RhcnQtPnN0YXJ0Q29udGFpbmVyKCksIHN0YXJ0LT5zdGFydE9mZnNldCgpLCAm
ZW5kLT5lbmRDb250YWluZXIoKSwgZW5kLT5lbmRPZmZzZXQoKSk7Ci19Ci0KLXN0YXRpYyBpbmxp
bmUgSW50UG9pbnQgY29tcHV0ZUVkZ2VDZW50ZXIoY29uc3QgSW50UmVjdCYgYm94LCBTZWxlY3Rp
b25IYW5kbGVQb3NpdGlvbiBoYW5kbGVQb3NpdGlvbikKLXsKLSAgICBzd2l0Y2ggKGhhbmRsZVBv
c2l0aW9uKSB7Ci0gICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6VG9wOgotICAgICAg
ICByZXR1cm4gSW50UG9pbnQoYm94LngoKSArIGJveC53aWR0aCgpIC8gMiwgYm94LnkoKSk7Ci0g
ICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6UmlnaHQ6Ci0gICAgICAgIHJldHVybiBJ
bnRQb2ludChib3gubWF4WCgpLCBib3gueSgpICsgYm94LmhlaWdodCgpIC8gMik7Ci0gICAgY2Fz
ZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6Qm90dG9tOgotICAgICAgICByZXR1cm4gSW50UG9p
bnQoYm94LngoKSArIGJveC53aWR0aCgpIC8gMiwgYm94Lm1heFkoKSk7Ci0gICAgY2FzZSBTZWxl
Y3Rpb25IYW5kbGVQb3NpdGlvbjo6TGVmdDoKLSAgICAgICAgcmV0dXJuIEludFBvaW50KGJveC54
KCksIGJveC55KCkgKyBib3guaGVpZ2h0KCkgLyAyKTsKLSAgICB9Ci19Ci0KLVJlZjxSYW5nZT4g
V2ViUGFnZTo6ZXhwYW5kZWRSYW5nZUZyb21IYW5kbGUoUmFuZ2UmIGN1cnJlbnRSYW5nZSwgU2Vs
ZWN0aW9uSGFuZGxlUG9zaXRpb24gaGFuZGxlUG9zaXRpb24pCi17Ci0gICAgSW50UmVjdCBjdXJy
ZW50Qm94ID0gc2VsZWN0aW9uQm94Rm9yUmFuZ2UoJmN1cnJlbnRSYW5nZSk7Ci0gICAgSW50UG9p
bnQgZWRnZUNlbnRlciA9IGNvbXB1dGVFZGdlQ2VudGVyKGN1cnJlbnRCb3gsIGhhbmRsZVBvc2l0
aW9uKTsKLSAgICBzdGF0aWMgY29uc3QgZmxvYXQgbWF4RGlzdGFuY2UgPSAxMDAwOwotICAgIGNv
bnN0IGZsb2F0IG11bHRpcGxlID0gcG93ZihtYXhEaXN0YW5jZSwgMS4wIC8gKG1heEhpdFRlc3Rz
IC0gMSkpOwotICAgIGZsb2F0IGRpc3RhbmNlID0gMTsKLSAgICAKLSAgICBSZWZQdHI8UmFuZ2U+
IGJlc3RSYW5nZTsKLSAgICBJbnRSZWN0IGJlc3RSZWN0OwotICAgIAotICAgIHdoaWxlIChkaXN0
YW5jZSA8IG1heERpc3RhbmNlKSB7Ci0gICAgICAgIGlmIChiZXN0UmFuZ2UpIHsKLSAgICAgICAg
ICAgIGlmIChkaXN0YW5jZUJldHdlZW5SZWN0c0ZvclBvc2l0aW9uKGJlc3RSZWN0LCBjdXJyZW50
Qm94LCBoYW5kbGVQb3NpdGlvbikgPCBkaXN0YW5jZSkgewotICAgICAgICAgICAgICAgIC8vIEJy
ZWFrIGVhcmx5LCB3ZSdyZSB1bmxpa2VseSB0byBkbyBhbnkgYmV0dGVyLgotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBJ
bnRQb2ludCB0ZXN0UG9pbnQgPSBlZGdlQ2VudGVyOwotICAgICAgICBzd2l0Y2ggKGhhbmRsZVBv
c2l0aW9uKSB7Ci0gICAgICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OlRvcDoKLSAg
ICAgICAgICAgIHRlc3RQb2ludC5tb3ZlKDAsIC1kaXN0YW5jZSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6UmlnaHQ6Ci0gICAgICAg
ICAgICB0ZXN0UG9pbnQubW92ZShkaXN0YW5jZSwgMCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6Qm90dG9tOgotICAgICAgICAgICAg
dGVzdFBvaW50Lm1vdmUoMCwgZGlzdGFuY2UpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OkxlZnQ6Ci0gICAgICAgICAgICB0ZXN0UG9p
bnQubW92ZSgtZGlzdGFuY2UsIDApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIGRpc3RhbmNlID0gY2VpbGYoZGlzdGFuY2UgKiBtdWx0aXBsZSk7Ci0g
ICAgICAgIAotICAgICAgICBSZWZQdHI8UmFuZ2U+IG5ld1JhbmdlOwotICAgICAgICBSZWZQdHI8
UmFuZ2U+IHJhbmdlQXRQb3NpdGlvbiA9IHJhbmdlRm9yQmxvY2tBdFBvaW50KHRlc3RQb2ludCk7
Ci0gICAgICAgIGlmICghcmFuZ2VBdFBvc2l0aW9uIHx8ICZjdXJyZW50UmFuZ2Uub3duZXJEb2N1
bWVudCgpICE9ICZyYW5nZUF0UG9zaXRpb24tPm93bmVyRG9jdW1lbnQoKSkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAKLSAgICAgICAgaWYgKHJhbmdlQXRQb3NpdGlvbi0+Y29udGFp
bnMoY3VycmVudFJhbmdlKSkKLSAgICAgICAgICAgIG5ld1JhbmdlID0gcmFuZ2VBdFBvc2l0aW9u
OwotICAgICAgICBlbHNlIGlmIChjdXJyZW50UmFuZ2UuY29udGFpbnMoKnJhbmdlQXRQb3NpdGlv
bi5nZXQoKSkpCi0gICAgICAgICAgICBuZXdSYW5nZSA9ICZjdXJyZW50UmFuZ2U7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIG5ld1JhbmdlID0gdW5pb25ET01SYW5nZXMoJmN1cnJlbnRSYW5n
ZSwgcmFuZ2VBdFBvc2l0aW9uLmdldCgpKTsKLSAgICAgICAgCi0gICAgICAgIEludFJlY3QgY29w
eVJlY3QgPSBzZWxlY3Rpb25Cb3hGb3JSYW5nZShuZXdSYW5nZS5nZXQoKSk7Ci0gICAgICAgIAot
ICAgICAgICAvLyBJcyBpdCBkaWZmZXJlbnQgYW5kIGJpZ2dlciB0aGFuIHRoZSBjdXJyZW50Pwot
ICAgICAgICBib29sIGlzQmV0dGVyQ2hvaWNlID0gIShyZWN0c0Vzc2VudGlhbGx5VGhlU2FtZShj
b3B5UmVjdCwgY3VycmVudEJveCwgLjA1KSk7Ci0gICAgICAgIGlmIChpc0JldHRlckNob2ljZSkg
ewotICAgICAgICAgICAgc3dpdGNoIChoYW5kbGVQb3NpdGlvbikgewotICAgICAgICAgICAgY2Fz
ZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6VG9wOgotICAgICAgICAgICAgY2FzZSBTZWxlY3Rp
b25IYW5kbGVQb3NpdGlvbjo6Qm90dG9tOgotICAgICAgICAgICAgICAgIGlzQmV0dGVyQ2hvaWNl
ID0gKGNvcHlSZWN0LmhlaWdodCgpID4gY3VycmVudEJveC5oZWlnaHQoKSk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpS
aWdodDoKLSAgICAgICAgICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OkxlZnQ6Ci0g
ICAgICAgICAgICAgICAgaXNCZXR0ZXJDaG9pY2UgPSAoY29weVJlY3Qud2lkdGgoKSA+IGN1cnJl
bnRCb3gud2lkdGgoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKGJlc3RSYW5nZSAm
JiBpc0JldHRlckNob2ljZSkgewotICAgICAgICAgICAgLy8gRnVydGhlcm9yZSwgaXMgaXQgc21h
bGxlciB0aGFuIHRoZSBiZXN0IHdlJ3ZlIGZvdW5kIHNvIGZhcj8KLSAgICAgICAgICAgIHN3aXRj
aCAoaGFuZGxlUG9zaXRpb24pIHsKLSAgICAgICAgICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9z
aXRpb246OlRvcDoKLSAgICAgICAgICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OkJv
dHRvbToKLSAgICAgICAgICAgICAgICBpc0JldHRlckNob2ljZSA9IChjb3B5UmVjdC5oZWlnaHQo
KSA8IGJlc3RSZWN0LmhlaWdodCgpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OlJpZ2h0OgotICAgICAgICAgICAgY2Fz
ZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6TGVmdDoKLSAgICAgICAgICAgICAgICBpc0JldHRl
ckNob2ljZSA9IChjb3B5UmVjdC53aWR0aCgpIDwgYmVzdFJlY3Qud2lkdGgoKSk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIGlmIChpc0JldHRlckNob2ljZSkgewotICAgICAgICAgICAgYmVzdFJhbmdlID0gbmV3UmFu
Z2U7Ci0gICAgICAgICAgICBiZXN0UmVjdCA9IGNvcHlSZWN0OwotICAgICAgICB9Ci0gICAgfQot
ICAgIAotICAgIGlmIChiZXN0UmFuZ2UpCi0gICAgICAgIHJldHVybiBiZXN0UmFuZ2UucmVsZWFz
ZU5vbk51bGwoKTsKLSAgICAKLSAgICByZXR1cm4gY3VycmVudFJhbmdlOwotfQotCi1SZWY8UmFu
Z2U+IFdlYlBhZ2U6OmNvbnRyYWN0ZWRSYW5nZUZyb21IYW5kbGUoUmFuZ2UmIGN1cnJlbnRSYW5n
ZSwgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb24gaGFuZGxlUG9zaXRpb24sIFNlbGVjdGlvbkZsYWdz
JiBmbGFncykKLXsKLSAgICAvLyBTaHJpbmtpbmcgd2l0aCBhIGJhc2UgYW5kIGV4dGVudCB3aWxs
IGFsd2F5cyBnaXZlIGJldHRlciByZXN1bHRzLiBJZiB3ZSBvbmx5IGhhdmUgYSBzaW5nbGUgZWxl
bWVudCwKLSAgICAvLyBzZWUgaWYgd2UgY2FuIGJyZWFrIHRoYXQgZG93biB0byBhIGJhc2UgYW5k
IGV4dGVudC4gU2hyaW5raW5nIGJhc2UgYW5kIGV4dGVudCBpcyBjb21wYXJhdGl2ZWx5IHN0cmFp
Z2h0Zm9yd2FyZC4KLSAgICAvLyBTaHJpbmtpbmcgZG93biB0byBhbm90aGVyIGVsZW1lbnQgaXMg
dW5saWtlbHkgdG8gbW92ZSBqdXN0IG9uZSBlZGdlLCBidXQgd2UgY2FuIHRyeSB0aGF0IGFzIGEg
ZmFsbGJhY2suCi0gICAgCi0gICAgSW50UmVjdCBjdXJyZW50Qm94ID0gc2VsZWN0aW9uQm94Rm9y
UmFuZ2UoJmN1cnJlbnRSYW5nZSk7Ci0gICAgSW50UG9pbnQgZWRnZUNlbnRlciA9IGNvbXB1dGVF
ZGdlQ2VudGVyKGN1cnJlbnRCb3gsIGhhbmRsZVBvc2l0aW9uKTsKLSAgICAKLSAgICBmbG9hdCBt
YXhEaXN0YW5jZTsKLSAgICAKLSAgICBzd2l0Y2ggKGhhbmRsZVBvc2l0aW9uKSB7Ci0gICAgY2Fz
ZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6VG9wOgotICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxl
UG9zaXRpb246OkJvdHRvbToKLSAgICAgICAgbWF4RGlzdGFuY2UgPSBjdXJyZW50Qm94LmhlaWdo
dCgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpS
aWdodDoKLSAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpMZWZ0OgotICAgICAgICBt
YXhEaXN0YW5jZSA9IGN1cnJlbnRCb3gud2lkdGgoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQot
ICAgIAotICAgIGNvbnN0IGZsb2F0IG11bHRpcGxlID0gcG93ZihtYXhEaXN0YW5jZSAtIDEsIDEu
MCAvIChtYXhIaXRUZXN0cyAtIDEpKTsKLSAgICBmbG9hdCBkaXN0YW5jZSA9IDE7Ci0gICAgUmVm
UHRyPFJhbmdlPiBiZXN0UmFuZ2U7Ci0gICAgSW50UmVjdCBiZXN0UmVjdDsKLSAgICAKLSAgICB3
aGlsZSAoZGlzdGFuY2UgPCBtYXhEaXN0YW5jZSkgewotICAgICAgICBpZiAoYmVzdFJhbmdlKSB7
Ci0gICAgICAgICAgICBmbG9hdCBzaHJhbmtEaXN0YW5jZTsKLSAgICAgICAgICAgIHN3aXRjaCAo
aGFuZGxlUG9zaXRpb24pIHsKLSAgICAgICAgICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRp
b246OlRvcDoKLSAgICAgICAgICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OkJvdHRv
bToKLSAgICAgICAgICAgICAgICBzaHJhbmtEaXN0YW5jZSA9IGFicyhjdXJyZW50Qm94LmhlaWdo
dCgpIC0gYmVzdFJlY3QuaGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6UmlnaHQ6Ci0gICAgICAgICAgICBj
YXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpMZWZ0OgotICAgICAgICAgICAgICAgIHNocmFu
a0Rpc3RhbmNlID0gYWJzKGN1cnJlbnRCb3gud2lkdGgoKSAtIGJlc3RSZWN0LndpZHRoKCkpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHNo
cmFua0Rpc3RhbmNlID4gZGlzdGFuY2UpIHsKLSAgICAgICAgICAgICAgICAvLyBDZXJ0YWlubHkg
bm90IGdvaW5nIHRvIGRvIGFueSBiZXR0ZXIgdGhhbiB0aGF0LgotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBJbnRQb2lu
dCB0ZXN0UG9pbnQgPSBlZGdlQ2VudGVyOwotICAgICAgICBzd2l0Y2ggKGhhbmRsZVBvc2l0aW9u
KSB7Ci0gICAgICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OlRvcDoKLSAgICAgICAg
ICAgIHRlc3RQb2ludC5tb3ZlKDAsIGRpc3RhbmNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpSaWdodDoKLSAgICAgICAgICAgIHRl
c3RQb2ludC5tb3ZlKC1kaXN0YW5jZSwgMCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6Qm90dG9tOgotICAgICAgICAgICAgdGVzdFBv
aW50Lm1vdmUoMCwgLWRpc3RhbmNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpMZWZ0OgotICAgICAgICAgICAgdGVzdFBvaW50Lm1v
dmUoZGlzdGFuY2UsIDApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
Ci0gICAgICAgIGRpc3RhbmNlICo9IG11bHRpcGxlOwotICAgICAgICAKLSAgICAgICAgUmVmUHRy
PFJhbmdlPiBuZXdSYW5nZSA9IHJhbmdlRm9yQmxvY2tBdFBvaW50KHRlc3RQb2ludCk7Ci0gICAg
ICAgIGlmICghbmV3UmFuZ2UgfHwgJm5ld1JhbmdlLT5vd25lckRvY3VtZW50KCkgIT0gJmN1cnJl
bnRSYW5nZS5vd25lckRvY3VtZW50KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
Ci0gICAgICAgIGlmIChoYW5kbGVQb3NpdGlvbiA9PSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6
VG9wIHx8IGhhbmRsZVBvc2l0aW9uID09IFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpMZWZ0KQot
ICAgICAgICAgICAgbmV3UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5ld1JhbmdlLT5zdGFydENvbnRh
aW5lcigpLmRvY3VtZW50KCksIG5ld1JhbmdlLT5lbmRQb3NpdGlvbigpLCBjdXJyZW50UmFuZ2Uu
ZW5kUG9zaXRpb24oKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5ld1JhbmdlID0gUmFu
Z2U6OmNyZWF0ZShuZXdSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLCBjdXJyZW50
UmFuZ2Uuc3RhcnRQb3NpdGlvbigpLCBuZXdSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKLSAgICAg
ICAgCi0gICAgICAgIEludFJlY3QgY29weVJlY3QgPSBzZWxlY3Rpb25Cb3hGb3JSYW5nZShuZXdS
YW5nZS5nZXQoKSk7Ci0gICAgICAgIGlmIChjb3B5UmVjdC5pc0VtcHR5KCkpIHsKLSAgICAgICAg
ICAgIC8vIElmIHRoZSBuZXcgcmFuZ2UgaXMgYW4gZW1wdHkgcmVjdGFuZ2xlLCB3ZSB0cnkgdGhl
IGJsb2NrIGF0IHRoZSBjdXJyZW50IHBvaW50Ci0gICAgICAgICAgICAvLyBhbmQgc2VlIGlmIHRo
YXQgaGFzIGEgcmVjdGFuZ2xlIHRoYXQgaXMgYSBiZXR0ZXIgY2hvaWNlLgotICAgICAgICAgICAg
bmV3UmFuZ2UgPSByYW5nZUZvckJsb2NrQXRQb2ludCh0ZXN0UG9pbnQpOwotICAgICAgICAgICAg
Y29weVJlY3QgPSBzZWxlY3Rpb25Cb3hGb3JSYW5nZShuZXdSYW5nZS5nZXQoKSk7Ci0gICAgICAg
IH0KLSAgICAgICAgYm9vbCBpc0JldHRlckNob2ljZTsKLSAgICAgICAgc3dpdGNoIChoYW5kbGVQ
b3NpdGlvbikgewotICAgICAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpUb3A6Ci0g
ICAgICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OkJvdHRvbToKLSAgICAgICAgICAg
IGlzQmV0dGVyQ2hvaWNlID0gKGNvcHlSZWN0LmhlaWdodCgpIDwgY3VycmVudEJveC5oZWlnaHQo
KSk7Ci0gICAgICAgICAgICBpZiAoY29weVJlY3QuaGVpZ2h0KCkgPT0gY3VycmVudEJveC5oZWln
aHQoKSkKLSAgICAgICAgICAgICAgICBpc0JldHRlckNob2ljZSA9IGNhblNocmlua1RvVGV4dFNl
bGVjdGlvbigqbmV3UmFuZ2UuZ2V0KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OkxlZnQ6Ci0gICAgICAgIGNhc2UgU2VsZWN0aW9u
SGFuZGxlUG9zaXRpb246OlJpZ2h0OgotICAgICAgICAgICAgaXNCZXR0ZXJDaG9pY2UgPSAoY29w
eVJlY3Qud2lkdGgoKSA+IGJlc3RSZWN0LndpZHRoKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlzQmV0dGVyQ2hvaWNlID0gaXNCZXR0ZXJDaG9p
Y2UgJiYgIWFyZVJhbmdlc0VxdWFsKG5ld1JhbmdlLmdldCgpLCAmY3VycmVudFJhbmdlKTsKLSAg
ICAgICAgaWYgKGJlc3RSYW5nZSAmJiBpc0JldHRlckNob2ljZSkgewotICAgICAgICAgICAgc3dp
dGNoIChoYW5kbGVQb3NpdGlvbikgewotICAgICAgICAgICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQ
b3NpdGlvbjo6VG9wOgotICAgICAgICAgICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6
Qm90dG9tOgotICAgICAgICAgICAgICAgIGlzQmV0dGVyQ2hvaWNlID0gKGNvcHlSZWN0LmhlaWdo
dCgpID4gYmVzdFJlY3QuaGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6TGVmdDoKLSAgICAgICAgICAgIGNh
c2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OlJpZ2h0OgotICAgICAgICAgICAgICAgIGlzQmV0
dGVyQ2hvaWNlID0gKGNvcHlSZWN0LndpZHRoKCkgPiBiZXN0UmVjdC53aWR0aCgpKTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAo
aXNCZXR0ZXJDaG9pY2UpIHsKLSAgICAgICAgICAgIGJlc3RSYW5nZSA9IG5ld1JhbmdlOwotICAg
ICAgICAgICAgYmVzdFJlY3QgPSBjb3B5UmVjdDsKLSAgICAgICAgfQotICAgICAgICAKLSAgICB9
Ci0gICAgCi0gICAgaWYgKCFiZXN0UmFuZ2UpCi0gICAgICAgIGJlc3RSYW5nZSA9ICZjdXJyZW50
UmFuZ2U7Ci0gICAgCi0gICAgLy8gSWYgd2UgY2FuIHNocmluayBkb3duIHRvIHRleHQgb25seSwg
dGhlIG9ubHkgcmVhc29uIHdlIHdvdWxkbid0IGlzIHRoYXQKLSAgICAvLyB0aGVyZSBhcmUgbXVs
dGlwbGUgc3ViLWVsZW1lbnQgYmxvY2tzIGJlbmVhdGggdXMuIElmIHdlIGRpZG4ndCBmaW5kCi0g
ICAgLy8gbXVsdGlwbGUgc3ViLWVsZW1lbnQgYmxvY2tzLCBkb24ndCBzaHJpbmsgdG8gYSBzdWIt
ZWxlbWVudCBibG9jay4KLSAgICAKLSAgICBpZiAoY2FuU2hyaW5rVG9UZXh0U2VsZWN0aW9uKCpi
ZXN0UmFuZ2UuZ2V0KCkpKQotICAgICAgICBmbGFncyA9IE5vbmU7Ci0gICAgCi0gICAgcmV0dXJu
IGJlc3RSYW5nZS5yZWxlYXNlTm9uTnVsbCgpOwotfQotCi12b2lkIFdlYlBhZ2U6OmNvbXB1dGVF
eHBhbmRBbmRTaHJpbmtUaHJlc2hvbGRzRm9ySGFuZGxlKGNvbnN0IEludFBvaW50JiBwb2ludCwg
U2VsZWN0aW9uSGFuZGxlUG9zaXRpb24gaGFuZGxlUG9zaXRpb24sIGZsb2F0JiBncm93VGhyZXNo
b2xkLCBmbG9hdCYgc2hyaW5rVGhyZXNob2xkKQotewotICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgUmVmUHRyPFJh
bmdlPiBjdXJyZW50UmFuZ2UgPSBtX2N1cnJlbnRCbG9ja1NlbGVjdGlvbiA/IG1fY3VycmVudEJs
b2NrU2VsZWN0aW9uLmdldCgpIDogZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudG9Ob3Jt
YWxpemVkUmFuZ2UoKTsKLSAgICAKLSAgICBpZiAoIWN1cnJlbnRSYW5nZSkKLSAgICAgICAgcmV0
dXJuOwotICAgIAotICAgIFJlZjxSYW5nZT4gZXhwYW5kZWRSYW5nZSA9IGV4cGFuZGVkUmFuZ2VG
cm9tSGFuZGxlKCpjdXJyZW50UmFuZ2UsIGhhbmRsZVBvc2l0aW9uKTsKLSAgICBTZWxlY3Rpb25G
bGFncyBmbGFnczsKLSAgICBSZWZQdHI8UmFuZ2U+IGNvbnRyYWN0ZWRSYW5nZSA9IGNvbnRyYWN0
ZWRSYW5nZUZyb21IYW5kbGUoKmN1cnJlbnRSYW5nZSwgaGFuZGxlUG9zaXRpb24sIGZsYWdzKTsK
LSAgICAKLSAgICBJbnRSZWN0IGN1cnJlbnRCb3VuZHMgPSBzZWxlY3Rpb25Cb3hGb3JSYW5nZShj
dXJyZW50UmFuZ2UuZ2V0KCkpOwotICAgIEludFJlY3QgZXhwYW5kZWRCb3VuZHMgPSBzZWxlY3Rp
b25Cb3hGb3JSYW5nZShleHBhbmRlZFJhbmdlLnB0cigpKTsKLSAgICBJbnRSZWN0IGNvbnRyYWN0
ZWRCb3VuZHMgPSBzZWxlY3Rpb25Cb3hGb3JSYW5nZShjb250cmFjdGVkUmFuZ2UuZ2V0KCkpOwot
ICAgIAotICAgIGZsb2F0IGN1cnJlbnQ7Ci0gICAgZmxvYXQgZXhwYW5kZWQ7Ci0gICAgZmxvYXQg
Y29udHJhY3RlZDsKLSAgICBmbG9hdCBtYXhUaHJlc2hvbGQ7Ci0gICAgZmxvYXQgbWluVGhyZXNo
b2xkOwotICAgIAotICAgIHN3aXRjaCAoaGFuZGxlUG9zaXRpb24pIHsKLSAgICBjYXNlIFNlbGVj
dGlvbkhhbmRsZVBvc2l0aW9uOjpUb3A6IHsKLSAgICAgICAgY3VycmVudCA9IGN1cnJlbnRCb3Vu
ZHMueSgpOwotICAgICAgICBleHBhbmRlZCA9IGV4cGFuZGVkQm91bmRzLnkoKTsKLSAgICAgICAg
Y29udHJhY3RlZCA9IGNvbnRyYWN0ZWRCb3VuZHMueSgpOwotICAgICAgICBtYXhUaHJlc2hvbGQg
PSBGTFRfTUlOOwotICAgICAgICBtaW5UaHJlc2hvbGQgPSBGTFRfTUFYOwotICAgICAgICBicmVh
azsKLSAgICB9Ci0gICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6UmlnaHQ6IHsKLSAg
ICAgICAgY3VycmVudCA9IGN1cnJlbnRCb3VuZHMubWF4WCgpOwotICAgICAgICBleHBhbmRlZCA9
IGV4cGFuZGVkQm91bmRzLm1heFgoKTsKLSAgICAgICAgY29udHJhY3RlZCA9IGNvbnRyYWN0ZWRC
b3VuZHMubWF4WCgpOwotICAgICAgICBtYXhUaHJlc2hvbGQgPSBGTFRfTUFYOwotICAgICAgICBt
aW5UaHJlc2hvbGQgPSBGTFRfTUlOOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBT
ZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6Qm90dG9tOiB7Ci0gICAgICAgIGN1cnJlbnQgPSBjdXJy
ZW50Qm91bmRzLm1heFkoKTsKLSAgICAgICAgZXhwYW5kZWQgPSBleHBhbmRlZEJvdW5kcy5tYXhZ
KCk7Ci0gICAgICAgIGNvbnRyYWN0ZWQgPSBjb250cmFjdGVkQm91bmRzLm1heFkoKTsKLSAgICAg
ICAgbWF4VGhyZXNob2xkID0gRkxUX01BWDsKLSAgICAgICAgbWluVGhyZXNob2xkID0gRkxUX01J
TjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRp
b246OkxlZnQ6IHsKLSAgICAgICAgY3VycmVudCA9IGN1cnJlbnRCb3VuZHMueCgpOwotICAgICAg
ICBleHBhbmRlZCA9IGV4cGFuZGVkQm91bmRzLngoKTsKLSAgICAgICAgY29udHJhY3RlZCA9IGNv
bnRyYWN0ZWRCb3VuZHMueCgpOwotICAgICAgICBtYXhUaHJlc2hvbGQgPSBGTFRfTUlOOwotICAg
ICAgICBtaW5UaHJlc2hvbGQgPSBGTFRfTUFYOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAg
fQotICAgIAotICAgIHN0YXRpYyBjb25zdCBmbG9hdCBmcmFjdGlvblRvR3JvdyA9IDAuMzsKLSAg
ICAKLSAgICBncm93VGhyZXNob2xkID0gY3VycmVudCArIChleHBhbmRlZCAtIGN1cnJlbnQpICog
ZnJhY3Rpb25Ub0dyb3c7Ci0gICAgc2hyaW5rVGhyZXNob2xkID0gY3VycmVudCArIChjb250cmFj
dGVkIC0gY3VycmVudCkgKiAoMSAtIGZyYWN0aW9uVG9Hcm93KTsKLSAgICBpZiAoYXJlUmFuZ2Vz
RXF1YWwoZXhwYW5kZWRSYW5nZS5wdHIoKSwgY3VycmVudFJhbmdlLmdldCgpKSkKLSAgICAgICAg
Z3Jvd1RocmVzaG9sZCA9IG1heFRocmVzaG9sZDsKLSAgICAKLX0KLSNlbmRpZgotCiB2b2lkIFdl
YlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IEludFBvaW50JiBwb2ludCwgdWludDMyX3Qg
Z3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUs
IGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKIHsKICAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNl
ZE9yTWFpbkZyYW1lKCk7CkBAIC0xNjQ3LDg5ICsxMjg5LDYgQEAgc3RhdGljIFJlZlB0cjxSYW5n
ZT4gcmFuZ2VBdFdvcmRCb3VuZGFyeQogCiAgICAgcmV0dXJuIChiYXNlIDwgZXh0ZW50KSA/IFJh
bmdlOjpjcmVhdGUoKmZyYW1lLT5kb2N1bWVudCgpLCBiYXNlLCBleHRlbnQpIDogUmFuZ2U6OmNy
ZWF0ZSgqZnJhbWUtPmRvY3VtZW50KCksIGV4dGVudCwgYmFzZSk7CiB9Ci0gICAgCi0jaWYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEyMDAwMAotCi1SZWZQdHI8UmFuZ2U+IFdl
YlBhZ2U6OnJhbmdlRm9yQmxvY2tBdFBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCkKLXsKLSAg
ICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVy
KCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQoKHBvaW50KSwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5
IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJB
Z2VudFNoYWRvd0NvbnRlbnQgfCBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcpOwotCi0g
ICAgTm9kZSogY3VycmVudE5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7Ci0gICAgUmVmUHRyPFJh
bmdlPiByYW5nZTsKLQotICAgIGlmIChjdXJyZW50Tm9kZS0+aXNUZXh0Tm9kZSgpKSB7Ci0gICAg
ICAgIHJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkudmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQo
cG9pbnQpLCBQYXJhZ3JhcGhHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7Ci0gICAgICAg
IGlmIChyYW5nZSAmJiAhcmFuZ2UtPmNvbGxhcHNlZCgpKQotICAgICAgICAgICAgcmV0dXJuIHJh
bmdlOwotICAgIH0KLQotICAgIGlmICghY3VycmVudE5vZGUtPmlzRWxlbWVudE5vZGUoKSkKLSAg
ICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS0+cGFyZW50RWxlbWVudCgpOwotCi0gICAg
aWYgKCFjdXJyZW50Tm9kZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByYW5nZSA9
IFJhbmdlOjpjcmVhdGUoY3VycmVudE5vZGUtPmRvY3VtZW50KCkpOwotICAgIHJhbmdlLT5zZWxl
Y3ROb2RlQ29udGVudHMoKmN1cnJlbnROb2RlKTsKLSAgICByZXR1cm4gcmFuZ2U7Ci19Ci0gICAg
Ci1zdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkRXhwYW5kKFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9u
IGhhbmRsZVBvc2l0aW9uLCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRQb2ludCYgcG9p
bnQpCi17Ci0gICAgc3dpdGNoIChoYW5kbGVQb3NpdGlvbikgewotICAgIGNhc2UgU2VsZWN0aW9u
SGFuZGxlUG9zaXRpb246OlRvcDoKLSAgICAgICAgcmV0dXJuIChwb2ludC55KCkgPCByZWN0Lnko
KSk7Ci0gICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6TGVmdDoKLSAgICAgICAgcmV0
dXJuIChwb2ludC54KCkgPCByZWN0LngoKSk7Ci0gICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3Np
dGlvbjo6UmlnaHQ6Ci0gICAgICAgIHJldHVybiAocG9pbnQueCgpID4gcmVjdC5tYXhYKCkpOwot
ICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OkJvdHRvbToKLSAgICAgICAgcmV0dXJu
IChwb2ludC55KCkgPiByZWN0Lm1heFkoKSk7Ci0gICAgfQotfQotCi1SZWZQdHI8V2ViQ29yZTo6
UmFuZ2U+IFdlYlBhZ2U6OmNoYW5nZUJsb2NrU2VsZWN0aW9uKGNvbnN0IEludFBvaW50JiBwb2lu
dCwgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb24gaGFuZGxlUG9zaXRpb24sIGZsb2F0JiBncm93VGhy
ZXNob2xkLCBmbG9hdCYgc2hyaW5rVGhyZXNob2xkLCBTZWxlY3Rpb25GbGFncyYgZmxhZ3MpCi17
Ci0gICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKLSAgICBSZWZQdHI8UmFuZ2U+IGN1cnJlbnRSYW5nZSA9IG1fY3VycmVudEJs
b2NrU2VsZWN0aW9uID8gbV9jdXJyZW50QmxvY2tTZWxlY3Rpb24uZ2V0KCkgOiBmcmFtZS5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOwotICAgIGlmICghY3VycmVu
dFJhbmdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBSZWZQdHI8UmFuZ2U+IG5ld1Jh
bmdlID0gc2hvdWxkRXhwYW5kKGhhbmRsZVBvc2l0aW9uLCBzZWxlY3Rpb25Cb3hGb3JSYW5nZShj
dXJyZW50UmFuZ2UuZ2V0KCkpLCBwb2ludCkgPyBleHBhbmRlZFJhbmdlRnJvbUhhbmRsZSgqY3Vy
cmVudFJhbmdlLCBoYW5kbGVQb3NpdGlvbikgOiBjb250cmFjdGVkUmFuZ2VGcm9tSGFuZGxlKCpj
dXJyZW50UmFuZ2UsIGhhbmRsZVBvc2l0aW9uLCBmbGFncyk7Ci0gICAgCi0gICAgaWYgKG5ld1Jh
bmdlKSB7Ci0gICAgICAgIG1fY3VycmVudEJsb2NrU2VsZWN0aW9uID0gbmV3UmFuZ2U7Ci0gICAg
ICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UobmV3UmFuZ2UuZ2V0KCksIFZQ
X0RFRkFVTFRfQUZGSU5JVFksIHRydWUsIFVzZXJUcmlnZ2VyZWQpOwotICAgIH0KLSAgICAKLSAg
ICBjb21wdXRlRXhwYW5kQW5kU2hyaW5rVGhyZXNob2xkc0ZvckhhbmRsZShwb2ludCwgaGFuZGxl
UG9zaXRpb24sIGdyb3dUaHJlc2hvbGQsIHNocmlua1RocmVzaG9sZCk7Ci0gICAgcmV0dXJuIG5l
d1JhbmdlOwotfQotCi12b2lkIFdlYlBhZ2U6OnVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNo
KGNvbnN0IEludFBvaW50JiBwb2ludCwgdWludDMyX3QgdG91Y2gsIHVpbnQzMl90IGhhbmRsZVBv
c2l0aW9uKQotewotICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCku
Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgSW50UG9pbnQgYWRqdXN0ZWRQb2ludCA9IGZyYW1l
LnZpZXcoKS0+cm9vdFZpZXdUb0NvbnRlbnRzKHBvaW50KTsKLSAgICAKLSAgICBmbG9hdCBncm93
VGhyZXNob2xkID0gMDsKLSAgICBmbG9hdCBzaHJpbmtUaHJlc2hvbGQgPSAwOwotICAgIFNlbGVj
dGlvbkZsYWdzIGZsYWdzID0gTm9uZTsKLSAgICAKLSAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PFNl
bGVjdGlvblRvdWNoPih0b3VjaCkpIHsKLSAgICBjYXNlIFNlbGVjdGlvblRvdWNoOjpTdGFydGVk
OgotICAgICAgICBjb21wdXRlRXhwYW5kQW5kU2hyaW5rVGhyZXNob2xkc0ZvckhhbmRsZShhZGp1
c3RlZFBvaW50LCBzdGF0aWNfY2FzdDxTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbj4oaGFuZGxlUG9z
aXRpb24pLCBncm93VGhyZXNob2xkLCBzaHJpbmtUaHJlc2hvbGQpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIFNlbGVjdGlvblRvdWNoOjpFbmRlZDoKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBTZWxlY3Rpb25Ub3VjaDo6TW92ZWQ6Ci0gICAgICAgIGNoYW5nZUJsb2NrU2VsZWN0aW9uKGFk
anVzdGVkUG9pbnQsIHN0YXRpY19jYXN0PFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uPihoYW5kbGVQ
b3NpdGlvbiksIGdyb3dUaHJlc2hvbGQsIHNocmlua1RocmVzaG9sZCwgZmxhZ3MpOwotICAgICAg
ICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkVXBkYXRlQmxvY2tTZWxlY3Rpb25XaXRo
VG91Y2godG91Y2gsIHN0YXRpY19jYXN0PHVpbnQzMl90PihmbGFncyksIGdyb3dUaHJlc2hvbGQs
IHNocmlua1RocmVzaG9sZCkpOwotfQotI2VuZGlmCiAKIHZvaWQgV2ViUGFnZTo6Y2xlYXJTZWxl
Y3Rpb24oKXsKICAgICBtX2N1cnJlbnRCbG9ja1NlbGVjdGlvbiA9IG51bGxwdHI7Cg==
</data>
<flag name="review"
          id="356171"
          type_id="1"
          status="+"
          setter="timothy"
    />
    <flag name="commit-queue"
          id="356173"
          type_id="3"
          status="-"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>