<?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>216264</bug_id>
          
          <creation_ts>2020-09-07 23:35:10 -0700</creation_ts>
          <short_desc>Having an iframe as a descendent node shouldn&apos;t require ElementRareData</short_desc>
          <delta_ts>2020-09-08 23:58:40 -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>DOM</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>
          <dependson>216208</dependson>
    
    <dependson>216225</dependson>
          <blocked>216305</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1686495</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-07 23:35:10 -0700</bug_when>
    <thetext>ElementRareData is a pretty big data structure. Don&apos;t force its existence on every ancestor of an iframe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686500</commentid>
    <comment_count>1</comment_count>
      <attachid>408215</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-08 00:21:42 -0700</bug_when>
    <thetext>Created attachment 408215
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686784</commentid>
    <comment_count>2</comment_count>
      <attachid>408278</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-08 15:58:02 -0700</bug_when>
    <thetext>Created attachment 408278
Fixed tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686786</commentid>
    <comment_count>3</comment_count>
      <attachid>408279</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-08 15:59:05 -0700</bug_when>
    <thetext>Created attachment 408279
Fixed tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686826</commentid>
    <comment_count>4</comment_count>
      <attachid>408279</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-08 17:14:10 -0700</bug_when>
    <thetext>Comment on attachment 408279
Fixed tests

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Store the number of connected frames in the descendent nodes direclty in Node using CompactUniquePtrTuple

typo: &quot;directly&quot;

&gt; Source/WebCore/dom/Node.h:540
&gt; +        IsEditingText = 1 &lt;&lt; 15, // Text
&gt; +        HasFocusWithin = 1 &lt;&lt; 16, // Element

Can’t these share a bit, since Text and Element are mutually exclusive?

&gt; Source/WebCore/dom/Node.h:576
&gt; +        uint16_t connectedSubframeCount : 10; // Must fit Page::maxNumberOfFrames.

Can we use a static_assert to make this more than just a comment?

&gt; Source/WebCore/dom/NodeRareData.cpp:39
&gt; +    uint32_t m_tabInex;

Typo here: m_tabIndex.

Maybe this &quot;same size&quot; struct should not bother using &quot;m_&quot; prefixes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686827</commentid>
    <comment_count>5</comment_count>
      <attachid>408279</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-08 17:14:32 -0700</bug_when>
    <thetext>Comment on attachment 408279
Fixed tests

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Having an iframe as a descendent node shouldn&apos;t require ElementRareData

Should we make this directly testable using Internals?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686868</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-08 18:50:12 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Comment on attachment 408279 [details]
&gt; Fixed tests
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=408279&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        Store the number of connected frames in the descendent nodes direclty in Node using CompactUniquePtrTuple
&gt; 
&gt; typo: &quot;directly&quot;

Fixed.

&gt; &gt; Source/WebCore/dom/Node.h:540
&gt; &gt; +        IsEditingText = 1 &lt;&lt; 15, // Text
&gt; &gt; +        HasFocusWithin = 1 &lt;&lt; 16, // Element
&gt; 
&gt; Can’t these share a bit, since Text and Element are mutually exclusive?

In theory yes but this complicates the matter a bit because CSS JIT also checks this flag. We can consider in the future but we have plenty of bits available now so I don&apos;t think we have to worry about it for now.

&gt; &gt; Source/WebCore/dom/Node.h:576
&gt; &gt; +        uint16_t connectedSubframeCount : 10; // Must fit Page::maxNumberOfFrames.
&gt; 
&gt; Can we use a static_assert to make this more than just a comment?

Good point. Replaced this with static_assert in Node.cpp above Node::incrementConnectedSubframeCount:
static_assert(RareDataBitFields {Page::maxNumberOfFrames}.connectedSubframeCount == Page::maxNumberOfFrames, &quot;connectedSubframeCount must fit Page::maxNumberOfFrames&quot;);

&gt; &gt; Source/WebCore/dom/NodeRareData.cpp:39
&gt; &gt; +    uint32_t m_tabInex;
&gt; 
&gt; Typo here: m_tabIndex.
&gt; 
&gt; Maybe this &quot;same size&quot; struct should not bother using &quot;m_&quot; prefixes?

Hm... I&apos;d use m_* for now since that&apos;s what the other members do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686876</commentid>
    <comment_count>7</comment_count>
      <attachid>408302</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-08 19:12:47 -0700</bug_when>
    <thetext>Created attachment 408302
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686877</commentid>
    <comment_count>8</comment_count>
      <attachid>408302</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-08 19:13:22 -0700</bug_when>
    <thetext>Comment on attachment 408302
Patch for landing

Wait for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686893</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-08 20:32:13 -0700</bug_when>
    <thetext>Committed r266769: &lt;https://trac.webkit.org/changeset/266769&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686894</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-08 20:33:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/68547479&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408215</attachid>
            <date>2020-09-08 00:21:42 -0700</date>
            <delta_ts>2020-09-08 15:58:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216264-20200908002142.patch</filename>
            <type>text/plain</type>
            <size>22787</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NjcxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBACisyMDIwLTA5LTA4ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEhhdmluZyBhbiBpZnJhbWUgYXMg
YSBkZXNjZW5kZW50IG5vZGUgc2hvdWxkbid0IHJlcXVpcmUgRWxlbWVudFJhcmVEYXRhCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYyNjQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdG9yZSB0aGUgbnVt
YmVyIG9mIGNvbm5lY3RlZCBmcmFtZXMgaW4gdGhlIGRlc2NlbmRlbnQgbm9kZXMgZGlyZWNsdHkg
aW4gTm9kZSB1c2luZyBDb21wYWN0VW5pcXVlUHRyVHVwbGUKKyAgICAgICAgaW4gdGhlIHNhbWUg
c3BhY2UgYXMgd2hlcmUgd2Ugc3RvcmUgdGhlIE5vZGVSYXJlRGF0YSBwb2ludGVyLiBUaGlzIGF2
b2lkcyBjcmVhdGluZyBFbGVtZW50UmFyZURhdGEgb24gZXZlcnkKKyAgICAgICAgYW5jZXN0b3Ig
ZWxlbWVudCBhbmQgc2hhZG93IGhvc3QgLyBkb2N1bWVudCBvZiBhbiBpZnJhbWUuCisKKyAgICAg
ICAgQWxzbyBtb3ZlZCBUYWJJbmRleFN0YXRlIHRoZXJlIHRvIHNpbXBseSBOb2RlRmxhZ3MsIGFu
ZCBjcmVhdGVkIEN1c3RvbUVsZW1lbnRTdGF0ZSB0byByZXBsYWNlIHRoZSBleGlzdGluZworICAg
ICAgICBmbGFncyBpbiBOb2RlRmxhZ3MgdG8gbWF0Y2ggdGhlIGxhdGVzdCB0ZXJtaW5vbG9neSB1
c2VkIGluIHRoZSBzcGVjaWZpY2F0aW9uOgorICAgICAgICBodHRwczovL2RvbS5zcGVjLndoYXR3
Zy5vcmcvI2NvbmNlcHQtZWxlbWVudC1jdXN0b20tZWxlbWVudC1zdGF0ZQorCisgICAgICAgIEN1
c3RvbUVsZW1lbnRTdGF0ZSBoYXMgZm91ciBzdGF0ZXM6ICJ1bmN1c3RvbWl6ZWQiIChkZWZhdWx0
OyBidWlsdGluIGVsZW1lbnRzKSwgInVuZGVmaW5lZCIgKGkuZS4gZWxlbWVudCBoYXMKKyAgICAg
ICAgYSB2YWxpZCBjdXN0b20gZWxlbWVudCBidXQgaXQgaGFzbid0IGJlZW4gZGVmaW5lZCBvciB1
cGdyYWRlZCB5ZXQpLCAiY3VzdG9tIiAoYSB2YWxpZCBjdXN0b20gZWxlbWVudCBpbnN0YW5jZSks
CisgICAgICAgIGFuZCAiZmFpbGVkIiAodXBncmFkaW5nIGhhcyByZXN1bHRlZCBpbiBhbiBlcnJv
cikuIEJlZm9yZSB0aGlzIHBhdGNoLCAidW5jdXN0b21pemVkIiBtZWFudCB0aGF0IG5laXRoZXIK
KyAgICAgICAgSXNDdXN0b21FbGVtZW50IG5vciBJc0VkaXRpbmdUZXh0T3JVbmRlZmluZWRDdXN0
b21FbGVtZW50RmxhZyBpcyBzZXQsICJ1bmRlZmluZWQiIGhhZCBJc0N1c3RvbUVsZW1lbnQKKyAg
ICAgICAgYW5kIElzRWRpdGluZ1RleHRPclVuZGVmaW5lZEN1c3RvbUVsZW1lbnRGbGFnIHNldCwg
YW5kICJjdXN0b20iIGhhZCBJc0N1c3RvbUVsZW1lbnQgc2V0IGJ1dAorICAgICAgICBJc0VkaXRp
bmdUZXh0T3JVbmRlZmluZWRDdXN0b21FbGVtZW50RmxhZyB1bnNldCB3aGVyZWFzICJmYWlsZWQi
IGhhZCB0aGUgb3Bwb3NpdGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoZXJlIHNo
b3VsZCBiZSBubyBvYnNlcnZhYmxlIGJlaGF2aW9yYWwgY2hhbmdlLgorCisgICAgICAgICogY3Nz
aml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21w
aWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRJc050aENoaWxkKTog
TWFzayBvdXQgdGhlIGJpdHMgc3RvcmVkIGluCisgICAgICAgIHRoZSBwb2ludGVyIGluIHRoZSA2
NC1iaXQgYXJjaGl0ZWN0dXJlLiBJbiB0aGUgMzItYml0IGFyY2hpdGVjdHVyZSwgdGhlIHBvaW50
ZXIgaXMgdGhlIGZpcnN0IGNvbXBvbmVudAorICAgICAgICB3aXRob3V0IGFueSBleHRyYSBiaXRz
IHN0b3JlZCBpbiBpdC4KKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpzZXRUYWJJbmRleFN0YXRlKTogTW92ZWQgZnJvbSBOb2RlLmguIFVwZGF0ZWQg
dG8gdXNlIHRoZSBuZXdseSBpbnRyb2R1Y2VkIGJpdGZpZWxkcy4KKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OnNldEN1c3RvbUVsZW1lbnRTdGF0ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6c2V0SXNEZWZpbmVkQ3VzdG9tRWxlbWVudCk6IE5vdyB1cGRhdGVzIEN1c3RvbUVs
ZW1lbnRTdGF0ZSBpbiB0aGUgbmV3bHkgYWRkZWQgYml0ZmllbGRzLgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6c2V0SXNGYWlsZWRDdXN0b21FbGVtZW50V2l0aG91dENsZWFyaW5nUmVhY3Rp
b25RdWV1ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0SXNDdXN0b21F
bGVtZW50VXBncmFkZUNhbmRpZGF0ZSk6IERpdHRvLgorICAgICAgICAqIGRvbS9FbGVtZW50UmFy
ZURhdGEuY3BwOgorICAgICAgICAqIGRvbS9FbGVtZW50UmFyZURhdGEuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnRSYXJlRGF0YSk6IE1vdmVkIG1fdW51c3VhbFRhYkluZGV4IGFuZCBtX2No
aWxkSW5kZXggdG8gTm9kZVJhcmVEYXRhIGZvciBiZXR0ZXIgcGFja2luZy4KKyAgICAgICAgKiBk
b20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjptYXRlcmlhbGl6ZVJhcmVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmNsZWFyUmFyZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6Y29ubmVjdGVkU3ViZnJhbWVDb3VudCBjb25zdCk6IE1vdmVkIHRvIHRoZSBo
ZWFkZXIgZmlsZS4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmluY3JlbWVudENvbm5lY3RlZFN1
YmZyYW1lQ291bnQpOiBOb3cgdXBkYXRlcyB0aGUgbmV3bHkgYWRkZWQgYml0ZmllbGRzLgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGVjcmVtZW50Q29ubmVjdGVkU3ViZnJhbWVDb3VudCk6IERp
dHRvLgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc1Vu
ZGVmaW5lZEN1c3RvbUVsZW1lbnQgY29uc3QpOiBOb3cgdXNlcyBDdXN0b21FbGVtZW50U3RhdGUg
aW4gdGhlIG5ld2x5IGFkZGVkIGJpdGZpZWxkcy4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Omlz
Q3VzdG9tRWxlbWVudFVwZ3JhZGVDYW5kaWRhdGUgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OmlzRGVmaW5lZEN1c3RvbUVsZW1lbnQgY29uc3QpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OmlzRmFpbGVkQ3VzdG9tRWxlbWVudCBjb25zdCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNFZGl0aW5nVGV4dCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpjb25uZWN0ZWRTdWJmcmFtZUNvdW50IGNvbnN0KTogTW92ZWQgaGVyZSBm
cm9tIGNwcCBmaWxlLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmFyZURhdGFNZW1vcnlPZmZz
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmFyZURhdGFQb2ludGVyTWFzayk6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Q3VzdG9tRWxlbWVudFN0YXRlKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpOb2RlOjpSYXJlRGF0YUJpdEZpZWxkcyk6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6cmFyZURhdGFCaXRmaWVsZHMgY29uc3QpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OnNldFJhcmVEYXRhQml0ZmllbGRzKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjp0YWJJbmRleFN0YXRlIGNvbnN0KTogVXBkYXRlZCB0byB1c2UgcmFy
ZURhdGFCaXRmaWVsZHMuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRUYWJJbmRleFN0YXRl
KTogTW92ZWQgdG8gRWxlbWVudC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpjdXN0b21F
bGVtZW50U3RhdGUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Omhhc1Jh
cmVEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJhcmVEYXRhIGNvbnN0KToK
KyAgICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmNwcDoKKyAgICAgICAgKiBkb20vTm9kZVJhcmVE
YXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OlVzZVR5cGUpOiBSZW1vdmVk
IENvbm5lY3RlZEZyYW1lQ291bnQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6Ok5v
ZGVSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OnVzZVR5cGVzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Y29ubmVjdGVkU3ViZnJhbWVD
b3VudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6Omlu
Y3JlbWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZVJhcmVEYXRhOjpkZWNyZW1lbnRDb25uZWN0ZWRTdWJmcmFtZUNvdW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YSk6IE1vdmVkIG1fdW51c3VhbFRhYklu
ZGV4IGFuZCBtX2NoaWxkSW5kZXggaGVyZSBmb3IgYmV0dGVyIHBhY2tpbmcgaW4gNjQtYml0IGFy
Y2hpdGVjdHVyZS4KKwogMjAyMC0wOS0wNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBNb3ZlIGFsbCByZW1haW5pbmcgZmxhZ3MgZnJvbSBFbGVtZW50UmFyZURh
dGEgdG8gTm9kZSB0byByZWR1Y2UgdGhlIGZyZXF1ZW5jeQpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcAkocmV2aXNpb24gMjY2NzEzKQorKysgU291cmNl
L1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NTgxLDcgKzM1ODEsNyBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVt
CiAKICAgICAgICAgTG9jYWxSZWdpc3RlciBlbGVtZW50UmFyZURhdGEobV9yZWdpc3RlckFsbG9j
YXRvcik7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxvYWRQdHIoQXNzZW1ibGVyOjpBZGRyZXNzKHBy
ZXZpb3VzU2libGluZywgTm9kZTo6cmFyZURhdGFNZW1vcnlPZmZzZXQoKSksIGVsZW1lbnRSYXJl
RGF0YSk7Ci0KKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kUHRyKEFzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihOb2RlOjpyYXJlRGF0YVBvaW50ZXJNYXNrKCkpLCBlbGVtZW50UmFyZURhdGEpOwogICAg
ICAgICBub0NhY2hlZENoaWxkSW5kZXhDYXNlcy5hcHBlbmQobV9hc3NlbWJsZXIuYnJhbmNoVGVz
dFB0cihBc3NlbWJsZXI6Olplcm8sIGVsZW1lbnRSYXJlRGF0YSkpOwogICAgICAgICB7CiAgICAg
ICAgICAgICBMb2NhbFJlZ2lzdGVyIGNhY2hlZENoaWxkSW5kZXgobV9yZWdpc3RlckFsbG9jYXRv
cik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyNjY3MTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MSw2ICsyNDEs
MTMgQEAgaW5saW5lIEVsZW1lbnRSYXJlRGF0YSYgRWxlbWVudDo6ZW5zdXJlRQogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxFbGVtZW50UmFyZURhdGEmPihlbnN1cmVSYXJlRGF0YSgpKTsKIH0KIAor
aW5saW5lIHZvaWQgTm9kZTo6c2V0VGFiSW5kZXhTdGF0ZShUYWJJbmRleFN0YXRlIHN0YXRlKQor
eworICAgIGF1dG8gYml0ZmllbGRzID0gcmFyZURhdGFCaXRmaWVsZHMoKTsKKyAgICBiaXRmaWVs
ZHMudGFiSW5kZXhTdGF0ZSA9IHN0YXRpY19jYXN0PHVpbnQxNl90PihzdGF0ZSk7CisgICAgc2V0
UmFyZURhdGFCaXRmaWVsZHMoYml0ZmllbGRzKTsKK30KKwogdm9pZCBFbGVtZW50OjpzZXRUYWJJ
bmRleEV4cGxpY2l0bHkoT3B0aW9uYWw8aW50PiB0YWJJbmRleCkKIHsKICAgICBpZiAoIXRhYklu
ZGV4KSB7CkBAIC0yNDIyLDEwICsyNDI5LDE2IEBAIFNoYWRvd1Jvb3QmIEVsZW1lbnQ6OmVuc3Vy
ZVVzZXJBZ2VudFNoYWQKICAgICByZXR1cm4gc2hhZG93OwogfQogCitpbmxpbmUgdm9pZCBOb2Rl
OjpzZXRDdXN0b21FbGVtZW50U3RhdGUoQ3VzdG9tRWxlbWVudFN0YXRlIHN0YXRlKQoreworICAg
IGF1dG8gYml0ZmllbGRzID0gcmFyZURhdGFCaXRmaWVsZHMoKTsKKyAgICBiaXRmaWVsZHMuY3Vz
dG9tRWxlbWVudFN0YXRlID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHN0YXRlKTsKKyAgICBzZXRS
YXJlRGF0YUJpdGZpZWxkcyhiaXRmaWVsZHMpOworfQorCiB2b2lkIEVsZW1lbnQ6OnNldElzRGVm
aW5lZEN1c3RvbUVsZW1lbnQoSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlJiBlbGVtZW50SW50ZXJm
YWNlKQogewotICAgIGNsZWFyRmxhZyhJc0VkaXRpbmdUZXh0T3JVbmRlZmluZWRDdXN0b21FbGVt
ZW50RmxhZyk7Ci0gICAgc2V0RmxhZyhJc0N1c3RvbUVsZW1lbnQpOworICAgIHNldEN1c3RvbUVs
ZW1lbnRTdGF0ZShDdXN0b21FbGVtZW50U3RhdGU6OkN1c3RvbSk7CiAgICAgYXV0byYgZGF0YSA9
IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGlmICghZGF0YS5jdXN0b21FbGVtZW50UmVh
Y3Rpb25RdWV1ZSgpKQogICAgICAgICBkYXRhLnNldEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVl
KG1ha2VVbmlxdWU8Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU+KGVsZW1lbnRJbnRlcmZhY2Up
KTsKQEAgLTI0NDIsOCArMjQ1NSw4IEBAIHZvaWQgRWxlbWVudDo6c2V0SXNGYWlsZWRDdXN0b21F
bGVtZW50KCkKIHZvaWQgRWxlbWVudDo6c2V0SXNGYWlsZWRDdXN0b21FbGVtZW50V2l0aG91dENs
ZWFyaW5nUmVhY3Rpb25RdWV1ZSgpCiB7CiAgICAgQVNTRVJUKGlzVW5kZWZpbmVkQ3VzdG9tRWxl
bWVudCgpKTsKLSAgICBBU1NFUlQoZ2V0RmxhZyhJc0VkaXRpbmdUZXh0T3JVbmRlZmluZWRDdXN0
b21FbGVtZW50RmxhZykpOwotICAgIGNsZWFyRmxhZyhJc0N1c3RvbUVsZW1lbnQpOworICAgIEFT
U0VSVChjdXN0b21FbGVtZW50U3RhdGUoKSA9PSBDdXN0b21FbGVtZW50U3RhdGU6OlVuZGVmaW5l
ZCk7CisgICAgc2V0Q3VzdG9tRWxlbWVudFN0YXRlKEN1c3RvbUVsZW1lbnRTdGF0ZTo6RmFpbGVk
KTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZUN1c3RvbUVsZW1lbnRT
dGF0ZSgqdGhpcyk7CiB9CiAKQEAgLTI0NTksOSArMjQ3Miw4IEBAIHZvaWQgRWxlbWVudDo6Y2xl
YXJSZWFjdGlvblF1ZXVlRnJvbUZhaWwKIAogdm9pZCBFbGVtZW50OjpzZXRJc0N1c3RvbUVsZW1l
bnRVcGdyYWRlQ2FuZGlkYXRlKCkKIHsKLSAgICBBU1NFUlQoIWdldEZsYWcoSXNDdXN0b21FbGVt
ZW50KSk7Ci0gICAgc2V0RmxhZyhJc0N1c3RvbUVsZW1lbnQpOwotICAgIHNldEZsYWcoSXNFZGl0
aW5nVGV4dE9yVW5kZWZpbmVkQ3VzdG9tRWxlbWVudEZsYWcpOworICAgIEFTU0VSVChjdXN0b21F
bGVtZW50U3RhdGUoKSA9PSBDdXN0b21FbGVtZW50U3RhdGU6OlVuY3VzdG9taXplZCk7CisgICAg
c2V0Q3VzdG9tRWxlbWVudFN0YXRlKEN1c3RvbUVsZW1lbnRTdGF0ZTo6VW5kZWZpbmVkKTsKICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZUN1c3RvbUVsZW1lbnRTdGF0ZSgq
dGhpcyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuY3BwCShy
ZXZpc2lvbiAyNjY3MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdHJ1Y3QgU2FtZVNpemVBc0VsZW1lbnRSYXJlRGF0YSA6IE5vZGVSYXJlRGF0YSB7Ci0gICAg
aW50IHRhYkluZGV4OwotICAgIHVuc2lnbmVkIHNob3J0IGNoaWxkSW5kZXg7CiAgICAgTGF5b3V0
U2l6ZSBzaXplRm9yUmVzaXppbmc7CiAgICAgSW50UG9pbnQgc2F2ZWRMYXllclNjcm9sbFBvc2l0
aW9uOwogICAgIHZvaWQqIHBvaW50ZXJzWzExXTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50UmFyZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dFJhcmVEYXRhLmgJKHJldmlzaW9uIDI2NjcxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50UmFyZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMTU4LDkgKzE1OCw2IEBAIHB1YmxpYzoK
ICNlbmRpZgogCiBwcml2YXRlOgotICAgIGludCBtX3VudXN1YWxUYWJJbmRleCB7IDAgfTsKLSAg
ICB1bnNpZ25lZCBzaG9ydCBtX2NoaWxkSW5kZXggeyAwIH07Ci0KICAgICBMYXlvdXRTaXplIG1f
bWluaW11bVNpemVGb3JSZXNpemluZzsKICAgICBJbnRQb2ludCBtX3NhdmVkTGF5ZXJTY3JvbGxQ
b3NpdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IG1fY29tcHV0ZWRTdHls
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDI2NjcxNCkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEzLDkgKzQxMyw5IEBAIHZvaWQg
Tm9kZTo6d2lsbEJlRGVsZXRlZEZyb20oRG9jdW1lbnQmIGQKIHZvaWQgTm9kZTo6bWF0ZXJpYWxp
emVSYXJlRGF0YSgpCiB7CiAgICAgaWYgKGlzPEVsZW1lbnQ+KCp0aGlzKSkKLSAgICAgICAgbV9y
YXJlRGF0YSA9IHN0ZDo6dW5pcXVlX3B0cjxOb2RlUmFyZURhdGEsIE5vZGVSYXJlRGF0YURlbGV0
ZXI+KG5ldyBFbGVtZW50UmFyZURhdGEpOworICAgICAgICBtX3JhcmVEYXRhV2l0aEJpdGZpZWxk
cy5zZXRQb2ludGVyKHN0ZDo6dW5pcXVlX3B0cjxOb2RlUmFyZURhdGEsIE5vZGVSYXJlRGF0YURl
bGV0ZXI+KG5ldyBFbGVtZW50UmFyZURhdGEpKTsKICAgICBlbHNlCi0gICAgICAgIG1fcmFyZURh
dGEgPSBzdGQ6OnVuaXF1ZV9wdHI8Tm9kZVJhcmVEYXRhLCBOb2RlUmFyZURhdGFEZWxldGVyPihu
ZXcgTm9kZVJhcmVEYXRhKTsKKyAgICAgICAgbV9yYXJlRGF0YVdpdGhCaXRmaWVsZHMuc2V0UG9p
bnRlcihzdGQ6OnVuaXF1ZV9wdHI8Tm9kZVJhcmVEYXRhLCBOb2RlUmFyZURhdGFEZWxldGVyPihu
ZXcgTm9kZVJhcmVEYXRhKSk7CiB9CiAKIGlubGluZSB2b2lkIE5vZGU6Ok5vZGVSYXJlRGF0YURl
bGV0ZXI6Om9wZXJhdG9yKCkoTm9kZVJhcmVEYXRhKiByYXJlRGF0YSkgY29uc3QKQEAgLTQzMSw3
ICs0MzEsNyBAQCB2b2lkIE5vZGU6OmNsZWFyUmFyZURhdGEoKQogICAgIEFTU0VSVChoYXNSYXJl
RGF0YSgpKTsKICAgICBBU1NFUlQoIXRyYW5zaWVudE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgp
IHx8IHRyYW5zaWVudE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpLT5pc0VtcHR5KCkpOwogCi0g
ICAgbV9yYXJlRGF0YSA9IG51bGxwdHI7CisgICAgbV9yYXJlRGF0YVdpdGhCaXRmaWVsZHMuc2V0
UG9pbnRlcihudWxscHRyKTsKIH0KIAogYm9vbCBOb2RlOjppc05vZGUoKSBjb25zdApAQCAtMjU3
MywyMyArMjU3MywyMiBAQCB2b2lkIE5vZGU6OnJlbW92ZWRMYXN0UmVmKCkKICAgICBkZWxldGUg
dGhpczsKIH0KIAotdW5zaWduZWQgTm9kZTo6Y29ubmVjdGVkU3ViZnJhbWVDb3VudCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyByYXJlRGF0YSgpLT5jb25uZWN0ZWRTdWJm
cmFtZUNvdW50KCkgOiAwOwotfQotCiB2b2lkIE5vZGU6OmluY3JlbWVudENvbm5lY3RlZFN1YmZy
YW1lQ291bnQodW5zaWduZWQgYW1vdW50KQogewogICAgIEFTU0VSVChpc0NvbnRhaW5lck5vZGUo
KSk7Ci0gICAgZW5zdXJlUmFyZURhdGEoKS5pbmNyZW1lbnRDb25uZWN0ZWRTdWJmcmFtZUNvdW50
KGFtb3VudCk7CisgICAgYXV0byBiaXRmaWVsZHMgPSByYXJlRGF0YUJpdGZpZWxkcygpOworICAg
IGJpdGZpZWxkcy5jb25uZWN0ZWRTdWJmcmFtZUNvdW50ICs9IGFtb3VudDsKKyAgICBSRUxFQVNF
X0FTU0VSVChiaXRmaWVsZHMuY29ubmVjdGVkU3ViZnJhbWVDb3VudCA9PSByYXJlRGF0YUJpdGZp
ZWxkcygpLmNvbm5lY3RlZFN1YmZyYW1lQ291bnQgKyBhbW91bnQpOworICAgIHNldFJhcmVEYXRh
Qml0ZmllbGRzKGJpdGZpZWxkcyk7CiB9CiAKIHZvaWQgTm9kZTo6ZGVjcmVtZW50Q29ubmVjdGVk
U3ViZnJhbWVDb3VudCh1bnNpZ25lZCBhbW91bnQpCiB7Ci0gICAgQVNTRVJUKHJhcmVEYXRhKCkp
OwotICAgIGlmICghaGFzUmFyZURhdGEoKSkKLSAgICAgICAgcmV0dXJuOyAvLyBEZWZlbmQgYWdh
aW5zdCB0eXBlIGNvbmZ1c2lvbiB3aGVuIHRoZSBhYm92ZSBhc3NlcnRpb24gZmFpbHMuIFNlZSB3
ZWJraXQub3JnL2IvMjAwMzAwLgotICAgIHJhcmVEYXRhKCktPmRlY3JlbWVudENvbm5lY3RlZFN1
YmZyYW1lQ291bnQoYW1vdW50KTsKKyAgICBBU1NFUlQoaXNDb250YWluZXJOb2RlKCkpOworICAg
IGF1dG8gYml0ZmllbGRzID0gcmFyZURhdGFCaXRmaWVsZHMoKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChhbW91bnQgPD0gYml0ZmllbGRzLmNvbm5lY3RlZFN1YmZyYW1lQ291bnQpOworICAgIGJpdGZp
ZWxkcy5jb25uZWN0ZWRTdWJmcmFtZUNvdW50IC09IGFtb3VudDsKKyAgICBzZXRSYXJlRGF0YUJp
dGZpZWxkcyhiaXRmaWVsZHMpOwogfQogCiB2b2lkIE5vZGU6OnVwZGF0ZUFuY2VzdG9yQ29ubmVj
dGVkU3ViZnJhbWVDb3VudEZvclJlbW92YWwoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCShyZXZp
c2lvbiAyNjY3MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiU3R5bGVWYWxpZGl0eS5oIgogI2luY2x1ZGUg
IlRyZWVTY29wZS5oIgogI2luY2x1ZGUgPHd0Zi9Db21wYWN0UG9pbnRlclR1cGxlLmg+CisjaW5j
bHVkZSA8d3RmL0NvbXBhY3RVbmlxdWVQdHJUdXBsZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNl
dC5oPgpAQCAtMjI5LDEwICsyMzAsMTAgQEAgcHVibGljOgogICAgIEhUTUxTbG90RWxlbWVudCog
YXNzaWduZWRTbG90KCkgY29uc3Q7CiAgICAgSFRNTFNsb3RFbGVtZW50KiBhc3NpZ25lZFNsb3RG
b3JCaW5kaW5ncygpIGNvbnN0OwogCi0gICAgYm9vbCBpc1VuZGVmaW5lZEN1c3RvbUVsZW1lbnQo
KSBjb25zdCB7IHJldHVybiBpc0VsZW1lbnROb2RlKCkgJiYgZ2V0RmxhZyhJc0VkaXRpbmdUZXh0
T3JVbmRlZmluZWRDdXN0b21FbGVtZW50RmxhZyk7IH0KLSAgICBib29sIGlzQ3VzdG9tRWxlbWVu
dFVwZ3JhZGVDYW5kaWRhdGUoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzQ3VzdG9tRWxlbWVu
dCkgJiYgZ2V0RmxhZyhJc0VkaXRpbmdUZXh0T3JVbmRlZmluZWRDdXN0b21FbGVtZW50RmxhZyk7
IH0KLSAgICBib29sIGlzRGVmaW5lZEN1c3RvbUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBnZXRG
bGFnKElzQ3VzdG9tRWxlbWVudCkgJiYgIWdldEZsYWcoSXNFZGl0aW5nVGV4dE9yVW5kZWZpbmVk
Q3VzdG9tRWxlbWVudEZsYWcpOyB9Ci0gICAgYm9vbCBpc0ZhaWxlZEN1c3RvbUVsZW1lbnQoKSBj
b25zdCB7IHJldHVybiBpc0VsZW1lbnROb2RlKCkgJiYgIWdldEZsYWcoSXNDdXN0b21FbGVtZW50
KSAmJiBnZXRGbGFnKElzRWRpdGluZ1RleHRPclVuZGVmaW5lZEN1c3RvbUVsZW1lbnRGbGFnKTsg
fQorICAgIGJvb2wgaXNVbmRlZmluZWRDdXN0b21FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gY3Vz
dG9tRWxlbWVudFN0YXRlKCkgPT0gQ3VzdG9tRWxlbWVudFN0YXRlOjpVbmRlZmluZWQgfHwgY3Vz
dG9tRWxlbWVudFN0YXRlKCkgPT0gQ3VzdG9tRWxlbWVudFN0YXRlOjpGYWlsZWQ7IH0KKyAgICBi
b29sIGlzQ3VzdG9tRWxlbWVudFVwZ3JhZGVDYW5kaWRhdGUoKSBjb25zdCB7IHJldHVybiBjdXN0
b21FbGVtZW50U3RhdGUoKSA9PSBDdXN0b21FbGVtZW50U3RhdGU6OlVuZGVmaW5lZDsgfQorICAg
IGJvb2wgaXNEZWZpbmVkQ3VzdG9tRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGN1c3RvbUVsZW1l
bnRTdGF0ZSgpID09IEN1c3RvbUVsZW1lbnRTdGF0ZTo6Q3VzdG9tOyB9CisgICAgYm9vbCBpc0Zh
aWxlZEN1c3RvbUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBjdXN0b21FbGVtZW50U3RhdGUoKSA9
PSBDdXN0b21FbGVtZW50U3RhdGU6OkZhaWxlZDsgfQogCiAgICAgLy8gUmV0dXJucyBudWxsLCBh
IGNoaWxkIG9mIFNoYWRvd1Jvb3QsIG9yIGEgbGVnYWN5IHNoYWRvdyByb290LgogICAgIE5vZGUq
IG5vbkJvdW5kYXJ5U2hhZG93VHJlZVJvb3ROb2RlKCk7CkBAIC0yOTYsNyArMjk3LDcgQEAgcHVi
bGljOgogICAgIFN0eWxlOjpWYWxpZGl0eSBzdHlsZVZhbGlkaXR5KCkgY29uc3QgeyByZXR1cm4g
c3R5bGVCaXRmaWVsZHMoKS5zdHlsZVZhbGlkaXR5KCk7IH0KICAgICBib29sIHN0eWxlUmVzb2x1
dGlvblNob3VsZFJlY29tcG9zaXRlTGF5ZXIoKSBjb25zdCB7IHJldHVybiBoYXNTdHlsZUZsYWco
Tm9kZVN0eWxlRmxhZzo6U3R5bGVSZXNvbHV0aW9uU2hvdWxkUmVjb21wb3NpdGVMYXllcik7IH0K
ICAgICBib29sIGNoaWxkTmVlZHNTdHlsZVJlY2FsYygpIGNvbnN0IHsgcmV0dXJuIGhhc1N0eWxl
RmxhZyhOb2RlU3R5bGVGbGFnOjpEZXNjZW5kYW50TmVlZHNTdHlsZVJlc29sdXRpb24pOyB9Ci0g
ICAgYm9vbCBpc0VkaXRpbmdUZXh0KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc1RleHRGbGFn
KSAmJiBnZXRGbGFnKElzRWRpdGluZ1RleHRPclVuZGVmaW5lZEN1c3RvbUVsZW1lbnRGbGFnKTsg
fQorICAgIGJvb2wgaXNFZGl0aW5nVGV4dCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNUZXh0
RmxhZykgJiYgZ2V0RmxhZyhJc0VkaXRpbmdUZXh0KTsgfQogCiAgICAgdm9pZCBzZXRDaGlsZE5l
ZWRzU3R5bGVSZWNhbGMoKSB7IHNldFN0eWxlRmxhZyhOb2RlU3R5bGVGbGFnOjpEZXNjZW5kYW50
TmVlZHNTdHlsZVJlc29sdXRpb24pOyB9CiAgICAgdm9pZCBjbGVhckNoaWxkTmVlZHNTdHlsZVJl
Y2FsYygpOwpAQCAtNDkxLDcgKzQ5Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVucmVnaXN0ZXJU
cmFuc2llbnRNdXRhdGlvbk9ic2VydmVyKE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24mKTsK
ICAgICB2b2lkIG5vdGlmeU11dGF0aW9uT2JzZXJ2ZXJzTm9kZVdpbGxEZXRhY2goKTsKIAotICAg
IHVuc2lnbmVkIGNvbm5lY3RlZFN1YmZyYW1lQ291bnQoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBj
b25uZWN0ZWRTdWJmcmFtZUNvdW50KCkgY29uc3QgeyByZXR1cm4gcmFyZURhdGFCaXRmaWVsZHMo
KS5jb25uZWN0ZWRTdWJmcmFtZUNvdW50OyB9CiAgICAgdm9pZCBpbmNyZW1lbnRDb25uZWN0ZWRT
dWJmcmFtZUNvdW50KHVuc2lnbmVkIGFtb3VudCA9IDEpOwogICAgIHZvaWQgZGVjcmVtZW50Q29u
bmVjdGVkU3ViZnJhbWVDb3VudCh1bnNpZ25lZCBhbW91bnQgPSAxKTsKICAgICB2b2lkIHVwZGF0
ZUFuY2VzdG9yQ29ubmVjdGVkU3ViZnJhbWVDb3VudEZvclJlbW92YWwoKSBjb25zdDsKQEAgLTQ5
OSw3ICs1MDAsMTIgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKEpJVCkKICAgICBzdGF0aWMgcHRy
ZGlmZl90IG5vZGVGbGFnc01lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihO
b2RlLCBtX25vZGVGbGFncyk7IH0KLSAgICBzdGF0aWMgcHRyZGlmZl90IHJhcmVEYXRhTWVtb3J5
T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE5vZGUsIG1fcmFyZURhdGEpOyB9Cisg
ICAgc3RhdGljIHB0cmRpZmZfdCByYXJlRGF0YU1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihOb2RlLCBtX3JhcmVEYXRhV2l0aEJpdGZpZWxkcyk7IH0KKyNpZiBDUFUoQURE
UkVTUzY0KQorICAgIHN0YXRpYyB1aW50NjRfdCByYXJlRGF0YVBvaW50ZXJNYXNrKCkgeyByZXR1
cm4gQ29tcGFjdFBvaW50ZXJUdXBsZTxOb2RlUmFyZURhdGEqLCB1aW50MTZfdD46OnBvaW50ZXJN
YXNrOyB9CisjZWxzZQorICAgIHN0YXRpYyB1aW50MzJfdCByYXJlRGF0YVBvaW50ZXJNYXNrKCkg
eyByZXR1cm4gLTE7IH0KKyNlbmRpZgogICAgIHN0YXRpYyBpbnQzMl90IGZsYWdJc1RleHQoKSB7
IHJldHVybiBJc1RleHRGbGFnOyB9CiAgICAgc3RhdGljIGludDMyX3QgZmxhZ0lzQ29udGFpbmVy
KCkgeyByZXR1cm4gSXNDb250YWluZXJGbGFnOyB9CiAgICAgc3RhdGljIGludDMyX3QgZmxhZ0lz
RWxlbWVudCgpIHsgcmV0dXJuIElzRWxlbWVudEZsYWc7IH0KQEAgLTUyNiwxMiArNTMyLDEyIEBA
IHByb3RlY3RlZDoKICAgICAgICAgSGFzRXZlbnRUYXJnZXREYXRhRmxhZyA9IDEgPDwgMTEsCiAg
ICAgICAgIC8vIFVudXNlZEZsYWcgPSAxIDw8IDEyLAogICAgICAgICAvLyBVbnVzZWRGbGFnID0g
MSA8PCAxMywKKyAgICAgICAgLy8gVW51c2VkRmxhZyA9IDEgPDwgMTQsCiAKICAgICAgICAgLy8g
VGhlc2UgYml0cyBhcmUgdXNlZCBieSBkZXJpdmVkIGNsYXNzZXMsIHB1bGxlZCB1cCBoZXJlIHNv
IHRoZXkgY2FuCiAgICAgICAgIC8vIGJlIHN0b3JlZCBpbiB0aGUgc2FtZSBtZW1vcnkgd29yZCBh
cyB0aGUgTm9kZSBiaXRzIGFib3ZlLgotICAgICAgICBJc0VkaXRpbmdUZXh0T3JVbmRlZmluZWRD
dXN0b21FbGVtZW50RmxhZyA9IDEgPDwgMTQsIC8vIFRleHQgYW5kIEVsZW1lbnQKLSAgICAgICAg
SXNDdXN0b21FbGVtZW50ID0gMSA8PCAxNSwgLy8gRWxlbWVudAotICAgICAgICBIYXNGb2N1c1dp
dGhpbiA9IDEgPDwgMTYsCisgICAgICAgIElzRWRpdGluZ1RleHQgPSAxIDw8IDE1LCAvLyBUZXh0
CisgICAgICAgIEhhc0ZvY3VzV2l0aGluID0gMSA8PCAxNiwgLy8gRWxlbWVudAogICAgICAgICBJ
c0xpbmtGbGFnID0gMSA8PCAxNywKICAgICAgICAgSXNVc2VyQWN0aW9uRWxlbWVudCA9IDEgPDwg
MTgsCiAgICAgICAgIElzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWRGbGFnID0gMSA8PCAxOSwKQEAg
LTU0NywxNCArNTUzLDExIEBAIHByb3RlY3RlZDoKICAgICAgICAgQ29udGFpbnNGdWxsU2NyZWVu
RWxlbWVudEZsYWcgPSAxIDw8IDI2LAogI2VuZGlmCiAKLSAgICAgICAgLy8gQml0cyAyNy0yOSBh
cmUgZnJlZS4KLSAgICAgICAgLy8gQml0cyAzMC0zMTogVGFiSW5kZXhTdGF0ZQorICAgICAgICAv
LyBCaXRzIDI3LTMxIGFyZSBmcmVlLgogCiAgICAgICAgIERlZmF1bHROb2RlRmxhZ3MgPSBJc1Bh
cnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZwogICAgIH07CiAKLSAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIHNfdGFiSW5kZXhTdGF0ZUJpdE9mZnNldCA9IDMwOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludDMyX3Qgc190YWJJbmRleFN0YXRlQml0TWFzayA9IDNVIDw8IHNfdGFiSW5kZXhT
dGF0ZUJpdE9mZnNldDsKICAgICBlbnVtIGNsYXNzIFRhYkluZGV4U3RhdGUgOiB1aW50OF90IHsK
ICAgICAgICAgTm90U2V0ID0gMCwKICAgICAgICAgWmVybyA9IDEsCkBAIC01NjIsMTMgKzU2NSwz
MiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEluUmFyZURhdGEgPSAzLAogICAgIH07CiAKKyAgICBl
bnVtIGNsYXNzIEN1c3RvbUVsZW1lbnRTdGF0ZSA6IHVpbnQ4X3QgeworICAgICAgICBVbmN1c3Rv
bWl6ZWQgPSAwLAorICAgICAgICBVbmRlZmluZWQgPSAxLAorICAgICAgICBDdXN0b20gPSAyLAor
ICAgICAgICBGYWlsZWQgPSAzLAorICAgIH07CisKKyAgICBzdHJ1Y3QgUmFyZURhdGFCaXRGaWVs
ZHMgeworICAgICAgICB1aW50MTZfdCBjb25uZWN0ZWRTdWJmcmFtZUNvdW50IDogMTA7IC8vIE11
c3QgZml0IFBhZ2U6Om1heE51bWJlck9mRnJhbWVzLgorICAgICAgICB1aW50MTZfdCB0YWJJbmRl
eFN0YXRlIDogMjsKKyAgICAgICAgdWludDE2X3QgY3VzdG9tRWxlbWVudFN0YXRlIDogMjsKKyAg
ICB9OworCiAgICAgYm9vbCBnZXRGbGFnKE5vZGVGbGFncyBtYXNrKSBjb25zdCB7IHJldHVybiBt
X25vZGVGbGFncyAmIG1hc2s7IH0KICAgICB2b2lkIHNldEZsYWcoYm9vbCBmLCBOb2RlRmxhZ3Mg
bWFzaykgY29uc3QgeyBtX25vZGVGbGFncyA9IChtX25vZGVGbGFncyAmIH5tYXNrKSB8ICgtKGlu
dDMyX3QpZiAmIG1hc2spOyB9IAogICAgIHZvaWQgc2V0RmxhZyhOb2RlRmxhZ3MgbWFzaykgY29u
c3QgeyBtX25vZGVGbGFncyB8PSBtYXNrOyB9IAogICAgIHZvaWQgY2xlYXJGbGFnKE5vZGVGbGFn
cyBtYXNrKSBjb25zdCB7IG1fbm9kZUZsYWdzICY9IH5tYXNrOyB9CiAKLSAgICBUYWJJbmRleFN0
YXRlIHRhYkluZGV4U3RhdGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUYWJJbmRleFN0
YXRlPigobV9ub2RlRmxhZ3MgJiBzX3RhYkluZGV4U3RhdGVCaXRNYXNrKSA+PiBzX3RhYkluZGV4
U3RhdGVCaXRPZmZzZXQpOyB9Ci0gICAgdm9pZCBzZXRUYWJJbmRleFN0YXRlKFRhYkluZGV4U3Rh
dGUgc3RhdGUpIHsgbV9ub2RlRmxhZ3MgPSAobV9ub2RlRmxhZ3MgJiB+c190YWJJbmRleFN0YXRl
Qml0TWFzaykgfCAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHN0YXRlKSA8PCBzX3RhYkluZGV4U3Rh
dGVCaXRPZmZzZXQpOyB9CisgICAgUmFyZURhdGFCaXRGaWVsZHMgcmFyZURhdGFCaXRmaWVsZHMo
KSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8UmFyZURhdGFCaXRGaWVsZHM+KG1fcmFyZURh
dGFXaXRoQml0ZmllbGRzLnR5cGUoKSk7IH0KKyAgICB2b2lkIHNldFJhcmVEYXRhQml0ZmllbGRz
KFJhcmVEYXRhQml0RmllbGRzIGJpdGZpZWxkcykgeyBtX3JhcmVEYXRhV2l0aEJpdGZpZWxkcy5z
ZXRUeXBlKGJpdHdpc2VfY2FzdDx1aW50MTZfdD4oYml0ZmllbGRzKSk7IH0KKworICAgIFRhYklu
ZGV4U3RhdGUgdGFiSW5kZXhTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRhYklu
ZGV4U3RhdGU+KHJhcmVEYXRhQml0ZmllbGRzKCkudGFiSW5kZXhTdGF0ZSk7IH0KKyAgICB2b2lk
IHNldFRhYkluZGV4U3RhdGUoVGFiSW5kZXhTdGF0ZSk7CisKKyAgICBDdXN0b21FbGVtZW50U3Rh
dGUgY3VzdG9tRWxlbWVudFN0YXRlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q3VzdG9t
RWxlbWVudFN0YXRlPihyYXJlRGF0YUJpdGZpZWxkcygpLmN1c3RvbUVsZW1lbnRTdGF0ZSk7IH0K
KyAgICB2b2lkIHNldEN1c3RvbUVsZW1lbnRTdGF0ZShDdXN0b21FbGVtZW50U3RhdGUpOwogCiAg
ICAgYm9vbCBpc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkKCkgY29uc3QgeyByZXR1cm4gZ2V0Rmxh
ZyhJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZyk7IH0KICAgICB2b2lkIHNldElzUGFyc2lu
Z0NoaWxkcmVuRmluaXNoZWQoKSB7IHNldEZsYWcoSXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZEZs
YWcpOyB9CkBAIC01ODYsNyArNjA4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBDcmVhdGVTVkdF
bGVtZW50ID0gQ3JlYXRlRWxlbWVudCB8IElzU1ZHRmxhZyB8IEhhc0N1c3RvbVN0eWxlUmVzb2x2
ZUNhbGxiYWNrc0ZsYWcsCiAgICAgICAgIENyZWF0ZU1hdGhNTEVsZW1lbnQgPSBDcmVhdGVFbGVt
ZW50IHwgSXNNYXRoTUxGbGFnLAogICAgICAgICBDcmVhdGVEb2N1bWVudCA9IENyZWF0ZUNvbnRh
aW5lciB8IElzRG9jdW1lbnROb2RlRmxhZyB8IElzQ29ubmVjdGVkRmxhZywKLSAgICAgICAgQ3Jl
YXRlRWRpdGluZ1RleHQgPSBDcmVhdGVUZXh0IHwgSXNFZGl0aW5nVGV4dE9yVW5kZWZpbmVkQ3Vz
dG9tRWxlbWVudEZsYWcsCisgICAgICAgIENyZWF0ZUVkaXRpbmdUZXh0ID0gQ3JlYXRlVGV4dCB8
IElzRWRpdGluZ1RleHQsCiAgICAgfTsKICAgICBOb2RlKERvY3VtZW50JiwgQ29uc3RydWN0aW9u
VHlwZSk7CiAKQEAgLTY0OCw4ICs2NzAsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZv
aWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdCB7
IH0KIAotICAgIGJvb2wgaGFzUmFyZURhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fcmFyZURhdGE7
IH0KLSAgICBOb2RlUmFyZURhdGEqIHJhcmVEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlRGF0
YS5nZXQoKTsgfQorICAgIGJvb2wgaGFzUmFyZURhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fcmFy
ZURhdGFXaXRoQml0ZmllbGRzLnBvaW50ZXIoKTsgfQorICAgIE5vZGVSYXJlRGF0YSogcmFyZURh
dGEoKSBjb25zdCB7IHJldHVybiBtX3JhcmVEYXRhV2l0aEJpdGZpZWxkcy5wb2ludGVyKCk7IH0K
ICAgICBOb2RlUmFyZURhdGEmIGVuc3VyZVJhcmVEYXRhKCk7CiAgICAgdm9pZCBjbGVhclJhcmVE
YXRhKCk7CiAKQEAgLTcwNSw3ICs3MjcsNyBAQCBwcml2YXRlOgogICAgIE5vZGUqIG1fcHJldmlv
dXMgeyBudWxscHRyIH07CiAgICAgTm9kZSogbV9uZXh0IHsgbnVsbHB0ciB9OwogICAgIENvbXBh
Y3RQb2ludGVyVHVwbGU8UmVuZGVyT2JqZWN0KiwgdWludDE2X3Q+IG1fcmVuZGVyZXJXaXRoU3R5
bGVGbGFnczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Tm9kZVJhcmVEYXRhLCBOb2RlUmFyZURhdGFE
ZWxldGVyPiBtX3JhcmVEYXRhOworICAgIENvbXBhY3RVbmlxdWVQdHJUdXBsZTxOb2RlUmFyZURh
dGEsIHVpbnQxNl90LCBOb2RlUmFyZURhdGFEZWxldGVyPiBtX3JhcmVEYXRhV2l0aEJpdGZpZWxk
czsKIH07CiAKIGJvb2wgY29ubmVjdGVkSW5TYW1lVHJlZVNjb3BlKGNvbnN0IE5vZGUqLCBjb25z
dCBOb2RlKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmNwcAkocmV2aXNpb24g
MjY2NzEzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDcgKzM2LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFNh
bWVTaXplQXNOb2RlUmFyZURhdGEgewotICAgIHVuc2lnbmVkIG1fZnJhbWVDb3VudEFuZElzRWxl
bWVudFJhcmVEYXRhRmxhZzsKKyAgICB1aW50MzJfdCBtX3RhYkluZXg7CisgICAgdWludDMyX3Qg
bV9jaGlsZEluZGV4QW5kSXNFbGVtZW50UmFyZURhdGFGbGFnOwogICAgIHZvaWQqIG1fcG9pbnRl
clsyXTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgJKHJldmlzaW9uIDI2
NjcxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtMjQ1LDMzICsyNDUsMzEgQEAgY2xhc3MgTm9kZVJhcmVEYXRhIHsKIHB1YmxpYzoKICNp
ZiBkZWZpbmVkKERVTVBfTk9ERV9TVEFUSVNUSUNTKSAmJiBEVU1QX05PREVfU1RBVElTVElDUwog
ICAgIGVudW0gY2xhc3MgVXNlVHlwZSA6IHVpbnQzMl90IHsKLSAgICAgICAgQ29ubmVjdGVkRnJh
bWVDb3VudCA9IDEgPDwgMCwKLSAgICAgICAgTm9kZUxpc3QgPSAxIDw8IDEsCi0gICAgICAgIE11
dGF0aW9uT2JzZXJ2ZXIgPSAxIDw8IDIsCi0gICAgICAgIFRhYkluZGV4ID0gMSA8PCAzLAotICAg
ICAgICBNaW5pbXVtU2l6ZSA9IDEgPDwgNCwKLSAgICAgICAgU2Nyb2xsaW5nUG9zaXRpb24gPSAx
IDw8IDUsCi0gICAgICAgIENvbXB1dGVkU3R5bGUgPSAxIDw8IDYsCi0gICAgICAgIERhdGFzZXQg
PSAxIDw8IDcsCi0gICAgICAgIENsYXNzTGlzdCA9IDEgPDwgOCwKLSAgICAgICAgU2hhZG93Um9v
dCA9IDEgPDwgOSwKLSAgICAgICAgQ3VzdG9tRWxlbWVudFF1ZXVlID0gMSA8PCAxMCwKLSAgICAg
ICAgQXR0cmlidXRlTWFwID0gMSA8PCAxMSwKLSAgICAgICAgSW50ZXJhY3Rpb25PYnNlcnZlciA9
IDEgPDwgMTIsCi0gICAgICAgIFJlc2l6ZU9ic2VydmVyID0gMSA8PCAxMywKLSAgICAgICAgQW5p
bWF0aW9ucyA9IDEgPDwgMTQsCi0gICAgICAgIFBzZXVkb0VsZW1lbnRzID0gMSA8PCAxNSwKLSAg
ICAgICAgU3R5bGVNYXAgPSAxIDw8IDE2LAotICAgICAgICBQYXJ0TGlzdCA9IDEgPDwgMTcsCi0g
ICAgICAgIFBhcnROYW1lcyA9IDEgPDwgMTgsCisgICAgICAgIE5vZGVMaXN0ID0gMSA8PCAwLAor
ICAgICAgICBNdXRhdGlvbk9ic2VydmVyID0gMSA8PCAxLAorICAgICAgICBUYWJJbmRleCA9IDEg
PDwgMiwKKyAgICAgICAgTWluaW11bVNpemUgPSAxIDw8IDMsCisgICAgICAgIFNjcm9sbGluZ1Bv
c2l0aW9uID0gMSA8PCA0LAorICAgICAgICBDb21wdXRlZFN0eWxlID0gMSA8PCA1LAorICAgICAg
ICBEYXRhc2V0ID0gMSA8PCA2LAorICAgICAgICBDbGFzc0xpc3QgPSAxIDw8IDcsCisgICAgICAg
IFNoYWRvd1Jvb3QgPSAxIDw8IDgsCisgICAgICAgIEN1c3RvbUVsZW1lbnRRdWV1ZSA9IDEgPDwg
OSwKKyAgICAgICAgQXR0cmlidXRlTWFwID0gMSA8PCAxMCwKKyAgICAgICAgSW50ZXJhY3Rpb25P
YnNlcnZlciA9IDEgPDwgMTEsCisgICAgICAgIFJlc2l6ZU9ic2VydmVyID0gMSA8PCAxMiwKKyAg
ICAgICAgQW5pbWF0aW9ucyA9IDEgPDwgMTMsCisgICAgICAgIFBzZXVkb0VsZW1lbnRzID0gMSA8
PCAxNCwKKyAgICAgICAgU3R5bGVNYXAgPSAxIDw8IDE1LAorICAgICAgICBQYXJ0TGlzdCA9IDEg
PDwgMTYsCisgICAgICAgIFBhcnROYW1lcyA9IDEgPDwgMTcsCiAgICAgfTsKICNlbmRpZgogCiAg
ICAgZW51bSBjbGFzcyBUeXBlIHsgRWxlbWVudCwgTm9kZSB9OwogCiAgICAgTm9kZVJhcmVEYXRh
KFR5cGUgdHlwZSA9IFR5cGU6Ok5vZGUpCi0gICAgICAgIDogbV9jb25uZWN0ZWRGcmFtZUNvdW50
KDApCi0gICAgICAgICwgbV9pc0VsZW1lbnRSYXJlRGF0YSh0eXBlID09IFR5cGU6OkVsZW1lbnQp
CisgICAgICAgIDogbV9pc0VsZW1lbnRSYXJlRGF0YSh0eXBlID09IFR5cGU6OkVsZW1lbnQpCiAg
ICAgewogICAgIH0KIApAQCAtMjk0LDI0ICsyOTIsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gKm1fbXV0YXRpb25PYnNlcnZlckRhdGE7CiAgICAgfQogCi0gICAgdW5zaWduZWQgY29ubmVj
dGVkU3ViZnJhbWVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGVkRnJhbWVDb3VudDsg
fQotICAgIHZvaWQgaW5jcmVtZW50Q29ubmVjdGVkU3ViZnJhbWVDb3VudCh1bnNpZ25lZCBhbW91
bnQpCi0gICAgewotICAgICAgICBtX2Nvbm5lY3RlZEZyYW1lQ291bnQgKz0gYW1vdW50OwotICAg
IH0KLSAgICB2b2lkIGRlY3JlbWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQodW5zaWduZWQgYW1v
dW50KQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fY29ubmVjdGVkRnJhbWVDb3VudCk7Ci0gICAg
ICAgIEFTU0VSVChhbW91bnQgPD0gbV9jb25uZWN0ZWRGcmFtZUNvdW50KTsKLSAgICAgICAgbV9j
b25uZWN0ZWRGcmFtZUNvdW50IC09IGFtb3VudDsKLSAgICB9Ci0KICNpZiBEVU1QX05PREVfU1RB
VElTVElDUwogICAgIE9wdGlvblNldDxVc2VUeXBlPiB1c2VUeXBlcygpIGNvbnN0CiAgICAgewog
ICAgICAgICBPcHRpb25TZXQ8VXNlVHlwZT4gcmVzdWx0OwotICAgICAgICBpZiAobV9jb25uZWN0
ZWRGcmFtZUNvdW50KQotICAgICAgICAgICAgcmVzdWx0LmFkZChVc2VUeXBlOjpDb25uZWN0ZWRG
cmFtZUNvdW50KTsKICAgICAgICAgaWYgKG1fbm9kZUxpc3RzKQogICAgICAgICAgICAgcmVzdWx0
LmFkZChVc2VUeXBlOjpOb2RlTGlzdCk7CiAgICAgICAgIGlmIChtX211dGF0aW9uT2JzZXJ2ZXJE
YXRhKQpAQCAtMzIwLDkgKzMwNCwxMyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAKK3Byb3Rl
Y3RlZDoKKyAgICAvLyBVc2VkIGJ5IEVsZW1lbnRSYXJlRGF0YS4gRGVmaW5lZCBoZXJlIGZvciBi
ZXR0ZXIgcGFja2luZyBpbiA2NC1iaXQuCisgICAgaW50IG1fdW51c3VhbFRhYkluZGV4IHsgMCB9
OworICAgIHVuc2lnbmVkIHNob3J0IG1fY2hpbGRJbmRleCB7IDAgfTsKKwogcHJpdmF0ZToKLSAg
ICB1bnNpZ25lZCBtX2Nvbm5lY3RlZEZyYW1lQ291bnQgOiAzMTsgLy8gTXVzdCBmaXQgUGFnZTo6
bWF4TnVtYmVyT2ZGcmFtZXMuCi0gICAgdW5zaWduZWQgbV9pc0VsZW1lbnRSYXJlRGF0YSA6IDE7
CisgICAgYm9vbCBtX2lzRWxlbWVudFJhcmVEYXRhOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPE5v
ZGVMaXN0c05vZGVEYXRhPiBtX25vZGVMaXN0czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Tm9kZU11
dGF0aW9uT2JzZXJ2ZXJEYXRhPiBtX211dGF0aW9uT2JzZXJ2ZXJEYXRhOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408278</attachid>
            <date>2020-09-08 15:58:02 -0700</date>
            <delta_ts>2020-09-08 15:59:03 -0700</delta_ts>
            <desc>Fixed tests</desc>
            <filename>bug-216264-20200908155801.patch</filename>
            <type>text/plain</type>
            <size>25041</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NjcxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBACisyMDIwLTA5LTA4ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEhhdmluZyBhbiBpZnJhbWUgYXMg
YSBkZXNjZW5kZW50IG5vZGUgc2hvdWxkbid0IHJlcXVpcmUgRWxlbWVudFJhcmVEYXRhCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYyNjQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdG9yZSB0aGUgbnVt
YmVyIG9mIGNvbm5lY3RlZCBmcmFtZXMgaW4gdGhlIGRlc2NlbmRlbnQgbm9kZXMgZGlyZWNsdHkg
aW4gTm9kZSB1c2luZyBDb21wYWN0VW5pcXVlUHRyVHVwbGUKKyAgICAgICAgaW4gdGhlIHNhbWUg
c3BhY2UgYXMgd2hlcmUgd2Ugc3RvcmUgdGhlIE5vZGVSYXJlRGF0YSBwb2ludGVyLiBUaGlzIGF2
b2lkcyBjcmVhdGluZyBFbGVtZW50UmFyZURhdGEgb24gZXZlcnkKKyAgICAgICAgYW5jZXN0b3Ig
ZWxlbWVudCBhbmQgc2hhZG93IGhvc3QgLyBkb2N1bWVudCBvZiBhbiBpZnJhbWUuCisKKyAgICAg
ICAgQWxzbyBtb3ZlZCBUYWJJbmRleFN0YXRlIHRoZXJlIHRvIHNpbXBseSBOb2RlRmxhZ3MsIGFu
ZCBjcmVhdGVkIEN1c3RvbUVsZW1lbnRTdGF0ZSB0byByZXBsYWNlIHRoZSBleGlzdGluZworICAg
ICAgICBmbGFncyBpbiBOb2RlRmxhZ3MgdG8gbWF0Y2ggdGhlIGxhdGVzdCB0ZXJtaW5vbG9neSB1
c2VkIGluIHRoZSBzcGVjaWZpY2F0aW9uOgorICAgICAgICBodHRwczovL2RvbS5zcGVjLndoYXR3
Zy5vcmcvI2NvbmNlcHQtZWxlbWVudC1jdXN0b20tZWxlbWVudC1zdGF0ZQorCisgICAgICAgIEN1
c3RvbUVsZW1lbnRTdGF0ZSBoYXMgZm91ciBzdGF0ZXM6ICJ1bmN1c3RvbWl6ZWQiIChkZWZhdWx0
OyBidWlsdGluIGVsZW1lbnRzKSwgInVuZGVmaW5lZCIgKGkuZS4gZWxlbWVudCBoYXMKKyAgICAg
ICAgYSB2YWxpZCBjdXN0b20gZWxlbWVudCBidXQgaXQgaGFzbid0IGJlZW4gZGVmaW5lZCBvciB1
cGdyYWRlZCB5ZXQpLCAiY3VzdG9tIiAoYSB2YWxpZCBjdXN0b20gZWxlbWVudCBpbnN0YW5jZSks
CisgICAgICAgIGFuZCAiZmFpbGVkIiAodXBncmFkaW5nIGhhcyByZXN1bHRlZCBpbiBhbiBlcnJv
cikuIEJlZm9yZSB0aGlzIHBhdGNoLCAidW5jdXN0b21pemVkIiBtZWFudCB0aGF0IG5laXRoZXIK
KyAgICAgICAgSXNDdXN0b21FbGVtZW50IG5vciBJc0VkaXRpbmdUZXh0T3JVbmRlZmluZWRDdXN0
b21FbGVtZW50RmxhZyBpcyBzZXQsICJ1bmRlZmluZWQiIGhhZCBJc0N1c3RvbUVsZW1lbnQKKyAg
ICAgICAgYW5kIElzRWRpdGluZ1RleHRPclVuZGVmaW5lZEN1c3RvbUVsZW1lbnRGbGFnIHNldCwg
YW5kICJjdXN0b20iIGhhZCBJc0N1c3RvbUVsZW1lbnQgc2V0IGJ1dAorICAgICAgICBJc0VkaXRp
bmdUZXh0T3JVbmRlZmluZWRDdXN0b21FbGVtZW50RmxhZyB1bnNldCB3aGVyZWFzICJmYWlsZWQi
IGhhZCB0aGUgb3Bwb3NpdGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoZXJlIHNo
b3VsZCBiZSBubyBvYnNlcnZhYmxlIGJlaGF2aW9yYWwgY2hhbmdlLgorCisgICAgICAgICogY3Nz
aml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21w
aWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRJc050aENoaWxkKTog
TWFzayBvdXQgdGhlIGJpdHMgc3RvcmVkIGluCisgICAgICAgIHRoZSBwb2ludGVyIGluIHRoZSA2
NC1iaXQgYXJjaGl0ZWN0dXJlLiBJbiB0aGUgMzItYml0IGFyY2hpdGVjdHVyZSwgdGhlIHBvaW50
ZXIgaXMgdGhlIGZpcnN0IGNvbXBvbmVudAorICAgICAgICB3aXRob3V0IGFueSBleHRyYSBiaXRz
IHN0b3JlZCBpbiBpdC4KKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpzZXRUYWJJbmRleFN0YXRlKTogTW92ZWQgZnJvbSBOb2RlLmguIFVwZGF0ZWQg
dG8gdXNlIHRoZSBuZXdseSBpbnRyb2R1Y2VkIGJpdGZpZWxkcy4KKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OnNldEN1c3RvbUVsZW1lbnRTdGF0ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6c2V0SXNEZWZpbmVkQ3VzdG9tRWxlbWVudCk6IE5vdyB1cGRhdGVzIEN1c3RvbUVs
ZW1lbnRTdGF0ZSBpbiB0aGUgbmV3bHkgYWRkZWQgYml0ZmllbGRzLgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6c2V0SXNGYWlsZWRDdXN0b21FbGVtZW50V2l0aG91dENsZWFyaW5nUmVhY3Rp
b25RdWV1ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0SXNDdXN0b21F
bGVtZW50VXBncmFkZUNhbmRpZGF0ZSk6IERpdHRvLgorICAgICAgICAqIGRvbS9FbGVtZW50UmFy
ZURhdGEuY3BwOgorICAgICAgICAqIGRvbS9FbGVtZW50UmFyZURhdGEuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnRSYXJlRGF0YSk6IE1vdmVkIG1fdW51c3VhbFRhYkluZGV4IGFuZCBtX2No
aWxkSW5kZXggdG8gTm9kZVJhcmVEYXRhIGZvciBiZXR0ZXIgcGFja2luZy4KKyAgICAgICAgKiBk
b20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjptYXRlcmlhbGl6ZVJhcmVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmNsZWFyUmFyZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6Y29ubmVjdGVkU3ViZnJhbWVDb3VudCBjb25zdCk6IE1vdmVkIHRvIHRoZSBo
ZWFkZXIgZmlsZS4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmluY3JlbWVudENvbm5lY3RlZFN1
YmZyYW1lQ291bnQpOiBOb3cgdXBkYXRlcyB0aGUgbmV3bHkgYWRkZWQgYml0ZmllbGRzLgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGVjcmVtZW50Q29ubmVjdGVkU3ViZnJhbWVDb3VudCk6IERp
dHRvLgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc1Vu
ZGVmaW5lZEN1c3RvbUVsZW1lbnQgY29uc3QpOiBOb3cgdXNlcyBDdXN0b21FbGVtZW50U3RhdGUg
aW4gdGhlIG5ld2x5IGFkZGVkIGJpdGZpZWxkcy4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Omlz
Q3VzdG9tRWxlbWVudFVwZ3JhZGVDYW5kaWRhdGUgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OmlzRGVmaW5lZEN1c3RvbUVsZW1lbnQgY29uc3QpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OmlzRmFpbGVkQ3VzdG9tRWxlbWVudCBjb25zdCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNFZGl0aW5nVGV4dCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpjb25uZWN0ZWRTdWJmcmFtZUNvdW50IGNvbnN0KTogTW92ZWQgaGVyZSBm
cm9tIGNwcCBmaWxlLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmFyZURhdGFNZW1vcnlPZmZz
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmFyZURhdGFQb2ludGVyTWFzayk6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Q3VzdG9tRWxlbWVudFN0YXRlKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpOb2RlOjpSYXJlRGF0YUJpdEZpZWxkcyk6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6cmFyZURhdGFCaXRmaWVsZHMgY29uc3QpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OnNldFJhcmVEYXRhQml0ZmllbGRzKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjp0YWJJbmRleFN0YXRlIGNvbnN0KTogVXBkYXRlZCB0byB1c2UgcmFy
ZURhdGFCaXRmaWVsZHMuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRUYWJJbmRleFN0YXRl
KTogTW92ZWQgdG8gRWxlbWVudC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpjdXN0b21F
bGVtZW50U3RhdGUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Omhhc1Jh
cmVEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJhcmVEYXRhIGNvbnN0KToK
KyAgICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmNwcDoKKyAgICAgICAgKiBkb20vTm9kZVJhcmVE
YXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OlVzZVR5cGUpOiBSZW1vdmVk
IENvbm5lY3RlZEZyYW1lQ291bnQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6Ok5v
ZGVSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OnVzZVR5cGVzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Y29ubmVjdGVkU3ViZnJhbWVD
b3VudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6Omlu
Y3JlbWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZVJhcmVEYXRhOjpkZWNyZW1lbnRDb25uZWN0ZWRTdWJmcmFtZUNvdW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YSk6IE1vdmVkIG1fdW51c3VhbFRhYklu
ZGV4IGFuZCBtX2NoaWxkSW5kZXggaGVyZSBmb3IgYmV0dGVyIHBhY2tpbmcgaW4gNjQtYml0IGFy
Y2hpdGVjdHVyZS4KKwogMjAyMC0wOS0wNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBNb3ZlIGFsbCByZW1haW5pbmcgZmxhZ3MgZnJvbSBFbGVtZW50UmFyZURh
dGEgdG8gTm9kZSB0byByZWR1Y2UgdGhlIGZyZXF1ZW5jeQpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcAkocmV2aXNpb24gMjY2NzEzKQorKysgU291cmNl
L1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NTgyLDYgKzM1ODIsMTAgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxl
bQogICAgICAgICBMb2NhbFJlZ2lzdGVyIGVsZW1lbnRSYXJlRGF0YShtX3JlZ2lzdGVyQWxsb2Nh
dG9yKTsKICAgICAgICAgbV9hc3NlbWJsZXIubG9hZFB0cihBc3NlbWJsZXI6OkFkZHJlc3MocHJl
dmlvdXNTaWJsaW5nLCBOb2RlOjpyYXJlRGF0YU1lbW9yeU9mZnNldCgpKSwgZWxlbWVudFJhcmVE
YXRhKTsKIAorICAgICAgICBMb2NhbFJlZ2lzdGVyIHJhcmVEYXRhUG9pbnRlck1hc2sobV9yZWdp
c3RlckFsbG9jYXRvcik7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmUoQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKE5vZGU6OnJhcmVEYXRhUG9pbnRlck1hc2soKSksIHJhcmVEYXRhUG9pbnRlck1h
c2spOworICAgICAgICBtX2Fzc2VtYmxlci5hbmRQdHIocmFyZURhdGFQb2ludGVyTWFzaywgZWxl
bWVudFJhcmVEYXRhKTsKKwogICAgICAgICBub0NhY2hlZENoaWxkSW5kZXhDYXNlcy5hcHBlbmQo
bV9hc3NlbWJsZXIuYnJhbmNoVGVzdFB0cihBc3NlbWJsZXI6Olplcm8sIGVsZW1lbnRSYXJlRGF0
YSkpOwogICAgICAgICB7CiAgICAgICAgICAgICBMb2NhbFJlZ2lzdGVyIGNhY2hlZENoaWxkSW5k
ZXgobV9yZWdpc3RlckFsbG9jYXRvcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZp
c2lvbiAyNjY3MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI0MSw2ICsyNDEsMTMgQEAgaW5saW5lIEVsZW1lbnRSYXJlRGF0YSYgRWxlbWVu
dDo6ZW5zdXJlRQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50UmFyZURhdGEmPihlbnN1
cmVSYXJlRGF0YSgpKTsKIH0KIAoraW5saW5lIHZvaWQgTm9kZTo6c2V0VGFiSW5kZXhTdGF0ZShU
YWJJbmRleFN0YXRlIHN0YXRlKQoreworICAgIGF1dG8gYml0ZmllbGRzID0gcmFyZURhdGFCaXRm
aWVsZHMoKTsKKyAgICBiaXRmaWVsZHMudGFiSW5kZXhTdGF0ZSA9IHN0YXRpY19jYXN0PHVpbnQx
Nl90PihzdGF0ZSk7CisgICAgc2V0UmFyZURhdGFCaXRmaWVsZHMoYml0ZmllbGRzKTsKK30KKwog
dm9pZCBFbGVtZW50OjpzZXRUYWJJbmRleEV4cGxpY2l0bHkoT3B0aW9uYWw8aW50PiB0YWJJbmRl
eCkKIHsKICAgICBpZiAoIXRhYkluZGV4KSB7CkBAIC0yNDIyLDEwICsyNDI5LDE2IEBAIFNoYWRv
d1Jvb3QmIEVsZW1lbnQ6OmVuc3VyZVVzZXJBZ2VudFNoYWQKICAgICByZXR1cm4gc2hhZG93Owog
fQogCitpbmxpbmUgdm9pZCBOb2RlOjpzZXRDdXN0b21FbGVtZW50U3RhdGUoQ3VzdG9tRWxlbWVu
dFN0YXRlIHN0YXRlKQoreworICAgIGF1dG8gYml0ZmllbGRzID0gcmFyZURhdGFCaXRmaWVsZHMo
KTsKKyAgICBiaXRmaWVsZHMuY3VzdG9tRWxlbWVudFN0YXRlID0gc3RhdGljX2Nhc3Q8dWludDE2
X3Q+KHN0YXRlKTsKKyAgICBzZXRSYXJlRGF0YUJpdGZpZWxkcyhiaXRmaWVsZHMpOworfQorCiB2
b2lkIEVsZW1lbnQ6OnNldElzRGVmaW5lZEN1c3RvbUVsZW1lbnQoSlNDdXN0b21FbGVtZW50SW50
ZXJmYWNlJiBlbGVtZW50SW50ZXJmYWNlKQogewotICAgIGNsZWFyRmxhZyhJc0VkaXRpbmdUZXh0
T3JVbmRlZmluZWRDdXN0b21FbGVtZW50RmxhZyk7Ci0gICAgc2V0RmxhZyhJc0N1c3RvbUVsZW1l
bnQpOworICAgIHNldEN1c3RvbUVsZW1lbnRTdGF0ZShDdXN0b21FbGVtZW50U3RhdGU6OkN1c3Rv
bSk7CiAgICAgYXV0byYgZGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGlmICgh
ZGF0YS5jdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZSgpKQogICAgICAgICBkYXRhLnNldEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblF1ZXVlKG1ha2VVbmlxdWU8Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVl
dWU+KGVsZW1lbnRJbnRlcmZhY2UpKTsKQEAgLTI0NDIsOCArMjQ1NSw4IEBAIHZvaWQgRWxlbWVu
dDo6c2V0SXNGYWlsZWRDdXN0b21FbGVtZW50KCkKIHZvaWQgRWxlbWVudDo6c2V0SXNGYWlsZWRD
dXN0b21FbGVtZW50V2l0aG91dENsZWFyaW5nUmVhY3Rpb25RdWV1ZSgpCiB7CiAgICAgQVNTRVJU
KGlzVW5kZWZpbmVkQ3VzdG9tRWxlbWVudCgpKTsKLSAgICBBU1NFUlQoZ2V0RmxhZyhJc0VkaXRp
bmdUZXh0T3JVbmRlZmluZWRDdXN0b21FbGVtZW50RmxhZykpOwotICAgIGNsZWFyRmxhZyhJc0N1
c3RvbUVsZW1lbnQpOworICAgIEFTU0VSVChjdXN0b21FbGVtZW50U3RhdGUoKSA9PSBDdXN0b21F
bGVtZW50U3RhdGU6OlVuZGVmaW5lZCk7CisgICAgc2V0Q3VzdG9tRWxlbWVudFN0YXRlKEN1c3Rv
bUVsZW1lbnRTdGF0ZTo6RmFpbGVkKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENoYW5nZUN1c3RvbUVsZW1lbnRTdGF0ZSgqdGhpcyk7CiB9CiAKQEAgLTI0NTksOSArMjQ3Miw4
IEBAIHZvaWQgRWxlbWVudDo6Y2xlYXJSZWFjdGlvblF1ZXVlRnJvbUZhaWwKIAogdm9pZCBFbGVt
ZW50OjpzZXRJc0N1c3RvbUVsZW1lbnRVcGdyYWRlQ2FuZGlkYXRlKCkKIHsKLSAgICBBU1NFUlQo
IWdldEZsYWcoSXNDdXN0b21FbGVtZW50KSk7Ci0gICAgc2V0RmxhZyhJc0N1c3RvbUVsZW1lbnQp
OwotICAgIHNldEZsYWcoSXNFZGl0aW5nVGV4dE9yVW5kZWZpbmVkQ3VzdG9tRWxlbWVudEZsYWcp
OworICAgIEFTU0VSVChjdXN0b21FbGVtZW50U3RhdGUoKSA9PSBDdXN0b21FbGVtZW50U3RhdGU6
OlVuY3VzdG9taXplZCk7CisgICAgc2V0Q3VzdG9tRWxlbWVudFN0YXRlKEN1c3RvbUVsZW1lbnRT
dGF0ZTo6VW5kZWZpbmVkKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5n
ZUN1c3RvbUVsZW1lbnRTdGF0ZSgqdGhpcyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50UmFyZURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50UmFyZURhdGEuY3BwCShyZXZpc2lvbiAyNjY3MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudFJhcmVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsNiBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU2FtZVNpemVBc0VsZW1lbnRSYXJlRGF0YSA6
IE5vZGVSYXJlRGF0YSB7Ci0gICAgaW50IHRhYkluZGV4OwotICAgIHVuc2lnbmVkIHNob3J0IGNo
aWxkSW5kZXg7CiAgICAgTGF5b3V0U2l6ZSBzaXplRm9yUmVzaXppbmc7CiAgICAgSW50UG9pbnQg
c2F2ZWRMYXllclNjcm9sbFBvc2l0aW9uOwogICAgIHZvaWQqIHBvaW50ZXJzWzExXTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgJKHJldmlzaW9uIDI2NjcxNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMTU4
LDkgKzE1OCw2IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGludCBtX3VudXN1
YWxUYWJJbmRleCB7IDAgfTsKLSAgICB1bnNpZ25lZCBzaG9ydCBtX2NoaWxkSW5kZXggeyAwIH07
Ci0KICAgICBMYXlvdXRTaXplIG1fbWluaW11bVNpemVGb3JSZXNpemluZzsKICAgICBJbnRQb2lu
dCBtX3NhdmVkTGF5ZXJTY3JvbGxQb3NpdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IG1fY29tcHV0ZWRTdHlsZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDI2
NjcxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDEzLDkgKzQxMyw5IEBAIHZvaWQgTm9kZTo6d2lsbEJlRGVsZXRlZEZyb20oRG9jdW1lbnQmIGQK
IHZvaWQgTm9kZTo6bWF0ZXJpYWxpemVSYXJlRGF0YSgpCiB7CiAgICAgaWYgKGlzPEVsZW1lbnQ+
KCp0aGlzKSkKLSAgICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6dW5pcXVlX3B0cjxOb2RlUmFyZURh
dGEsIE5vZGVSYXJlRGF0YURlbGV0ZXI+KG5ldyBFbGVtZW50UmFyZURhdGEpOworICAgICAgICBt
X3JhcmVEYXRhV2l0aEJpdGZpZWxkcy5zZXRQb2ludGVyKHN0ZDo6dW5pcXVlX3B0cjxOb2RlUmFy
ZURhdGEsIE5vZGVSYXJlRGF0YURlbGV0ZXI+KG5ldyBFbGVtZW50UmFyZURhdGEpKTsKICAgICBl
bHNlCi0gICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6OnVuaXF1ZV9wdHI8Tm9kZVJhcmVEYXRhLCBO
b2RlUmFyZURhdGFEZWxldGVyPihuZXcgTm9kZVJhcmVEYXRhKTsKKyAgICAgICAgbV9yYXJlRGF0
YVdpdGhCaXRmaWVsZHMuc2V0UG9pbnRlcihzdGQ6OnVuaXF1ZV9wdHI8Tm9kZVJhcmVEYXRhLCBO
b2RlUmFyZURhdGFEZWxldGVyPihuZXcgTm9kZVJhcmVEYXRhKSk7CiB9CiAKIGlubGluZSB2b2lk
IE5vZGU6Ok5vZGVSYXJlRGF0YURlbGV0ZXI6Om9wZXJhdG9yKCkoTm9kZVJhcmVEYXRhKiByYXJl
RGF0YSkgY29uc3QKQEAgLTQzMSw3ICs0MzEsNyBAQCB2b2lkIE5vZGU6OmNsZWFyUmFyZURhdGEo
KQogICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKICAgICBBU1NFUlQoIXRyYW5zaWVudE11dGF0
aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpIHx8IHRyYW5zaWVudE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3Ry
eSgpLT5pc0VtcHR5KCkpOwogCi0gICAgbV9yYXJlRGF0YSA9IG51bGxwdHI7CisgICAgbV9yYXJl
RGF0YVdpdGhCaXRmaWVsZHMuc2V0UG9pbnRlcihudWxscHRyKTsKIH0KIAogYm9vbCBOb2RlOjpp
c05vZGUoKSBjb25zdApAQCAtMjU3MywyMyArMjU3MywyMiBAQCB2b2lkIE5vZGU6OnJlbW92ZWRM
YXN0UmVmKCkKICAgICBkZWxldGUgdGhpczsKIH0KIAotdW5zaWduZWQgTm9kZTo6Y29ubmVjdGVk
U3ViZnJhbWVDb3VudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyByYXJl
RGF0YSgpLT5jb25uZWN0ZWRTdWJmcmFtZUNvdW50KCkgOiAwOwotfQotCiB2b2lkIE5vZGU6Omlu
Y3JlbWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQodW5zaWduZWQgYW1vdW50KQogewogICAgIEFT
U0VSVChpc0NvbnRhaW5lck5vZGUoKSk7Ci0gICAgZW5zdXJlUmFyZURhdGEoKS5pbmNyZW1lbnRD
b25uZWN0ZWRTdWJmcmFtZUNvdW50KGFtb3VudCk7CisgICAgYXV0byBiaXRmaWVsZHMgPSByYXJl
RGF0YUJpdGZpZWxkcygpOworICAgIGJpdGZpZWxkcy5jb25uZWN0ZWRTdWJmcmFtZUNvdW50ICs9
IGFtb3VudDsKKyAgICBSRUxFQVNFX0FTU0VSVChiaXRmaWVsZHMuY29ubmVjdGVkU3ViZnJhbWVD
b3VudCA9PSByYXJlRGF0YUJpdGZpZWxkcygpLmNvbm5lY3RlZFN1YmZyYW1lQ291bnQgKyBhbW91
bnQpOworICAgIHNldFJhcmVEYXRhQml0ZmllbGRzKGJpdGZpZWxkcyk7CiB9CiAKIHZvaWQgTm9k
ZTo6ZGVjcmVtZW50Q29ubmVjdGVkU3ViZnJhbWVDb3VudCh1bnNpZ25lZCBhbW91bnQpCiB7Ci0g
ICAgQVNTRVJUKHJhcmVEYXRhKCkpOwotICAgIGlmICghaGFzUmFyZURhdGEoKSkKLSAgICAgICAg
cmV0dXJuOyAvLyBEZWZlbmQgYWdhaW5zdCB0eXBlIGNvbmZ1c2lvbiB3aGVuIHRoZSBhYm92ZSBh
c3NlcnRpb24gZmFpbHMuIFNlZSB3ZWJraXQub3JnL2IvMjAwMzAwLgotICAgIHJhcmVEYXRhKCkt
PmRlY3JlbWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQoYW1vdW50KTsKKyAgICBBU1NFUlQoaXND
b250YWluZXJOb2RlKCkpOworICAgIGF1dG8gYml0ZmllbGRzID0gcmFyZURhdGFCaXRmaWVsZHMo
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChhbW91bnQgPD0gYml0ZmllbGRzLmNvbm5lY3RlZFN1YmZy
YW1lQ291bnQpOworICAgIGJpdGZpZWxkcy5jb25uZWN0ZWRTdWJmcmFtZUNvdW50IC09IGFtb3Vu
dDsKKyAgICBzZXRSYXJlRGF0YUJpdGZpZWxkcyhiaXRmaWVsZHMpOwogfQogCiB2b2lkIE5vZGU6
OnVwZGF0ZUFuY2VzdG9yQ29ubmVjdGVkU3ViZnJhbWVDb3VudEZvclJlbW92YWwoKSBjb25zdApJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiAyNjY3MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiU3R5bGVW
YWxpZGl0eS5oIgogI2luY2x1ZGUgIlRyZWVTY29wZS5oIgogI2luY2x1ZGUgPHd0Zi9Db21wYWN0
UG9pbnRlclR1cGxlLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBhY3RVbmlxdWVQdHJUdXBsZS5oPgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogI2lu
Y2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtMjI5LDEwICsyMzAsMTAgQEAgcHVibGljOgog
ICAgIEhUTUxTbG90RWxlbWVudCogYXNzaWduZWRTbG90KCkgY29uc3Q7CiAgICAgSFRNTFNsb3RF
bGVtZW50KiBhc3NpZ25lZFNsb3RGb3JCaW5kaW5ncygpIGNvbnN0OwogCi0gICAgYm9vbCBpc1Vu
ZGVmaW5lZEN1c3RvbUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBpc0VsZW1lbnROb2RlKCkgJiYg
Z2V0RmxhZyhJc0VkaXRpbmdUZXh0T3JVbmRlZmluZWRDdXN0b21FbGVtZW50RmxhZyk7IH0KLSAg
ICBib29sIGlzQ3VzdG9tRWxlbWVudFVwZ3JhZGVDYW5kaWRhdGUoKSBjb25zdCB7IHJldHVybiBn
ZXRGbGFnKElzQ3VzdG9tRWxlbWVudCkgJiYgZ2V0RmxhZyhJc0VkaXRpbmdUZXh0T3JVbmRlZmlu
ZWRDdXN0b21FbGVtZW50RmxhZyk7IH0KLSAgICBib29sIGlzRGVmaW5lZEN1c3RvbUVsZW1lbnQo
KSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzQ3VzdG9tRWxlbWVudCkgJiYgIWdldEZsYWcoSXNF
ZGl0aW5nVGV4dE9yVW5kZWZpbmVkQ3VzdG9tRWxlbWVudEZsYWcpOyB9Ci0gICAgYm9vbCBpc0Zh
aWxlZEN1c3RvbUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBpc0VsZW1lbnROb2RlKCkgJiYgIWdl
dEZsYWcoSXNDdXN0b21FbGVtZW50KSAmJiBnZXRGbGFnKElzRWRpdGluZ1RleHRPclVuZGVmaW5l
ZEN1c3RvbUVsZW1lbnRGbGFnKTsgfQorICAgIGJvb2wgaXNVbmRlZmluZWRDdXN0b21FbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gY3VzdG9tRWxlbWVudFN0YXRlKCkgPT0gQ3VzdG9tRWxlbWVudFN0
YXRlOjpVbmRlZmluZWQgfHwgY3VzdG9tRWxlbWVudFN0YXRlKCkgPT0gQ3VzdG9tRWxlbWVudFN0
YXRlOjpGYWlsZWQ7IH0KKyAgICBib29sIGlzQ3VzdG9tRWxlbWVudFVwZ3JhZGVDYW5kaWRhdGUo
KSBjb25zdCB7IHJldHVybiBjdXN0b21FbGVtZW50U3RhdGUoKSA9PSBDdXN0b21FbGVtZW50U3Rh
dGU6OlVuZGVmaW5lZDsgfQorICAgIGJvb2wgaXNEZWZpbmVkQ3VzdG9tRWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIGN1c3RvbUVsZW1lbnRTdGF0ZSgpID09IEN1c3RvbUVsZW1lbnRTdGF0ZTo6Q3Vz
dG9tOyB9CisgICAgYm9vbCBpc0ZhaWxlZEN1c3RvbUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBj
dXN0b21FbGVtZW50U3RhdGUoKSA9PSBDdXN0b21FbGVtZW50U3RhdGU6OkZhaWxlZDsgfQogCiAg
ICAgLy8gUmV0dXJucyBudWxsLCBhIGNoaWxkIG9mIFNoYWRvd1Jvb3QsIG9yIGEgbGVnYWN5IHNo
YWRvdyByb290LgogICAgIE5vZGUqIG5vbkJvdW5kYXJ5U2hhZG93VHJlZVJvb3ROb2RlKCk7CkBA
IC0yOTYsNyArMjk3LDcgQEAgcHVibGljOgogICAgIFN0eWxlOjpWYWxpZGl0eSBzdHlsZVZhbGlk
aXR5KCkgY29uc3QgeyByZXR1cm4gc3R5bGVCaXRmaWVsZHMoKS5zdHlsZVZhbGlkaXR5KCk7IH0K
ICAgICBib29sIHN0eWxlUmVzb2x1dGlvblNob3VsZFJlY29tcG9zaXRlTGF5ZXIoKSBjb25zdCB7
IHJldHVybiBoYXNTdHlsZUZsYWcoTm9kZVN0eWxlRmxhZzo6U3R5bGVSZXNvbHV0aW9uU2hvdWxk
UmVjb21wb3NpdGVMYXllcik7IH0KICAgICBib29sIGNoaWxkTmVlZHNTdHlsZVJlY2FsYygpIGNv
bnN0IHsgcmV0dXJuIGhhc1N0eWxlRmxhZyhOb2RlU3R5bGVGbGFnOjpEZXNjZW5kYW50TmVlZHNT
dHlsZVJlc29sdXRpb24pOyB9Ci0gICAgYm9vbCBpc0VkaXRpbmdUZXh0KCkgY29uc3QgeyByZXR1
cm4gZ2V0RmxhZyhJc1RleHRGbGFnKSAmJiBnZXRGbGFnKElzRWRpdGluZ1RleHRPclVuZGVmaW5l
ZEN1c3RvbUVsZW1lbnRGbGFnKTsgfQorICAgIGJvb2wgaXNFZGl0aW5nVGV4dCgpIGNvbnN0IHsg
cmV0dXJuIGdldEZsYWcoSXNUZXh0RmxhZykgJiYgZ2V0RmxhZyhJc0VkaXRpbmdUZXh0KTsgfQog
CiAgICAgdm9pZCBzZXRDaGlsZE5lZWRzU3R5bGVSZWNhbGMoKSB7IHNldFN0eWxlRmxhZyhOb2Rl
U3R5bGVGbGFnOjpEZXNjZW5kYW50TmVlZHNTdHlsZVJlc29sdXRpb24pOyB9CiAgICAgdm9pZCBj
bGVhckNoaWxkTmVlZHNTdHlsZVJlY2FsYygpOwpAQCAtNDkxLDcgKzQ5Miw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHVucmVnaXN0ZXJUcmFuc2llbnRNdXRhdGlvbk9ic2VydmVyKE11dGF0aW9uT2Jz
ZXJ2ZXJSZWdpc3RyYXRpb24mKTsKICAgICB2b2lkIG5vdGlmeU11dGF0aW9uT2JzZXJ2ZXJzTm9k
ZVdpbGxEZXRhY2goKTsKIAotICAgIHVuc2lnbmVkIGNvbm5lY3RlZFN1YmZyYW1lQ291bnQoKSBj
b25zdDsKKyAgICB1bnNpZ25lZCBjb25uZWN0ZWRTdWJmcmFtZUNvdW50KCkgY29uc3QgeyByZXR1
cm4gcmFyZURhdGFCaXRmaWVsZHMoKS5jb25uZWN0ZWRTdWJmcmFtZUNvdW50OyB9CiAgICAgdm9p
ZCBpbmNyZW1lbnRDb25uZWN0ZWRTdWJmcmFtZUNvdW50KHVuc2lnbmVkIGFtb3VudCA9IDEpOwog
ICAgIHZvaWQgZGVjcmVtZW50Q29ubmVjdGVkU3ViZnJhbWVDb3VudCh1bnNpZ25lZCBhbW91bnQg
PSAxKTsKICAgICB2b2lkIHVwZGF0ZUFuY2VzdG9yQ29ubmVjdGVkU3ViZnJhbWVDb3VudEZvclJl
bW92YWwoKSBjb25zdDsKQEAgLTQ5OSw3ICs1MDAsMTIgQEAgcHVibGljOgogCiAjaWYgRU5BQkxF
KEpJVCkKICAgICBzdGF0aWMgcHRyZGlmZl90IG5vZGVGbGFnc01lbW9yeU9mZnNldCgpIHsgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihOb2RlLCBtX25vZGVGbGFncyk7IH0KLSAgICBzdGF0aWMgcHRy
ZGlmZl90IHJhcmVEYXRhTWVtb3J5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE5v
ZGUsIG1fcmFyZURhdGEpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCByYXJlRGF0YU1lbW9yeU9m
ZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihOb2RlLCBtX3JhcmVEYXRhV2l0aEJpdGZp
ZWxkcyk7IH0KKyNpZiBDUFUoQUREUkVTUzY0KQorICAgIHN0YXRpYyB1aW50NjRfdCByYXJlRGF0
YVBvaW50ZXJNYXNrKCkgeyByZXR1cm4gQ29tcGFjdFBvaW50ZXJUdXBsZTxOb2RlUmFyZURhdGEq
LCB1aW50MTZfdD46OnBvaW50ZXJNYXNrOyB9CisjZWxzZQorICAgIHN0YXRpYyB1aW50MzJfdCBy
YXJlRGF0YVBvaW50ZXJNYXNrKCkgeyByZXR1cm4gLTE7IH0KKyNlbmRpZgogICAgIHN0YXRpYyBp
bnQzMl90IGZsYWdJc1RleHQoKSB7IHJldHVybiBJc1RleHRGbGFnOyB9CiAgICAgc3RhdGljIGlu
dDMyX3QgZmxhZ0lzQ29udGFpbmVyKCkgeyByZXR1cm4gSXNDb250YWluZXJGbGFnOyB9CiAgICAg
c3RhdGljIGludDMyX3QgZmxhZ0lzRWxlbWVudCgpIHsgcmV0dXJuIElzRWxlbWVudEZsYWc7IH0K
QEAgLTUyNiwxMiArNTMyLDEyIEBAIHByb3RlY3RlZDoKICAgICAgICAgSGFzRXZlbnRUYXJnZXRE
YXRhRmxhZyA9IDEgPDwgMTEsCiAgICAgICAgIC8vIFVudXNlZEZsYWcgPSAxIDw8IDEyLAogICAg
ICAgICAvLyBVbnVzZWRGbGFnID0gMSA8PCAxMywKKyAgICAgICAgLy8gVW51c2VkRmxhZyA9IDEg
PDwgMTQsCiAKICAgICAgICAgLy8gVGhlc2UgYml0cyBhcmUgdXNlZCBieSBkZXJpdmVkIGNsYXNz
ZXMsIHB1bGxlZCB1cCBoZXJlIHNvIHRoZXkgY2FuCiAgICAgICAgIC8vIGJlIHN0b3JlZCBpbiB0
aGUgc2FtZSBtZW1vcnkgd29yZCBhcyB0aGUgTm9kZSBiaXRzIGFib3ZlLgotICAgICAgICBJc0Vk
aXRpbmdUZXh0T3JVbmRlZmluZWRDdXN0b21FbGVtZW50RmxhZyA9IDEgPDwgMTQsIC8vIFRleHQg
YW5kIEVsZW1lbnQKLSAgICAgICAgSXNDdXN0b21FbGVtZW50ID0gMSA8PCAxNSwgLy8gRWxlbWVu
dAotICAgICAgICBIYXNGb2N1c1dpdGhpbiA9IDEgPDwgMTYsCisgICAgICAgIElzRWRpdGluZ1Rl
eHQgPSAxIDw8IDE1LCAvLyBUZXh0CisgICAgICAgIEhhc0ZvY3VzV2l0aGluID0gMSA8PCAxNiwg
Ly8gRWxlbWVudAogICAgICAgICBJc0xpbmtGbGFnID0gMSA8PCAxNywKICAgICAgICAgSXNVc2Vy
QWN0aW9uRWxlbWVudCA9IDEgPDwgMTgsCiAgICAgICAgIElzUGFyc2luZ0NoaWxkcmVuRmluaXNo
ZWRGbGFnID0gMSA8PCAxOSwKQEAgLTU0NywxNCArNTUzLDExIEBAIHByb3RlY3RlZDoKICAgICAg
ICAgQ29udGFpbnNGdWxsU2NyZWVuRWxlbWVudEZsYWcgPSAxIDw8IDI2LAogI2VuZGlmCiAKLSAg
ICAgICAgLy8gQml0cyAyNy0yOSBhcmUgZnJlZS4KLSAgICAgICAgLy8gQml0cyAzMC0zMTogVGFi
SW5kZXhTdGF0ZQorICAgICAgICAvLyBCaXRzIDI3LTMxIGFyZSBmcmVlLgogCiAgICAgICAgIERl
ZmF1bHROb2RlRmxhZ3MgPSBJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZwogICAgIH07CiAK
LSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHNfdGFiSW5kZXhTdGF0ZUJpdE9mZnNldCA9
IDMwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc190YWJJbmRleFN0YXRlQml0TWFz
ayA9IDNVIDw8IHNfdGFiSW5kZXhTdGF0ZUJpdE9mZnNldDsKICAgICBlbnVtIGNsYXNzIFRhYklu
ZGV4U3RhdGUgOiB1aW50OF90IHsKICAgICAgICAgTm90U2V0ID0gMCwKICAgICAgICAgWmVybyA9
IDEsCkBAIC01NjIsMTMgKzU2NSwzMiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEluUmFyZURhdGEg
PSAzLAogICAgIH07CiAKKyAgICBlbnVtIGNsYXNzIEN1c3RvbUVsZW1lbnRTdGF0ZSA6IHVpbnQ4
X3QgeworICAgICAgICBVbmN1c3RvbWl6ZWQgPSAwLAorICAgICAgICBVbmRlZmluZWQgPSAxLAor
ICAgICAgICBDdXN0b20gPSAyLAorICAgICAgICBGYWlsZWQgPSAzLAorICAgIH07CisKKyAgICBz
dHJ1Y3QgUmFyZURhdGFCaXRGaWVsZHMgeworICAgICAgICB1aW50MTZfdCBjb25uZWN0ZWRTdWJm
cmFtZUNvdW50IDogMTA7IC8vIE11c3QgZml0IFBhZ2U6Om1heE51bWJlck9mRnJhbWVzLgorICAg
ICAgICB1aW50MTZfdCB0YWJJbmRleFN0YXRlIDogMjsKKyAgICAgICAgdWludDE2X3QgY3VzdG9t
RWxlbWVudFN0YXRlIDogMjsKKyAgICB9OworCiAgICAgYm9vbCBnZXRGbGFnKE5vZGVGbGFncyBt
YXNrKSBjb25zdCB7IHJldHVybiBtX25vZGVGbGFncyAmIG1hc2s7IH0KICAgICB2b2lkIHNldEZs
YWcoYm9vbCBmLCBOb2RlRmxhZ3MgbWFzaykgY29uc3QgeyBtX25vZGVGbGFncyA9IChtX25vZGVG
bGFncyAmIH5tYXNrKSB8ICgtKGludDMyX3QpZiAmIG1hc2spOyB9IAogICAgIHZvaWQgc2V0Rmxh
ZyhOb2RlRmxhZ3MgbWFzaykgY29uc3QgeyBtX25vZGVGbGFncyB8PSBtYXNrOyB9IAogICAgIHZv
aWQgY2xlYXJGbGFnKE5vZGVGbGFncyBtYXNrKSBjb25zdCB7IG1fbm9kZUZsYWdzICY9IH5tYXNr
OyB9CiAKLSAgICBUYWJJbmRleFN0YXRlIHRhYkluZGV4U3RhdGUoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxUYWJJbmRleFN0YXRlPigobV9ub2RlRmxhZ3MgJiBzX3RhYkluZGV4U3RhdGVC
aXRNYXNrKSA+PiBzX3RhYkluZGV4U3RhdGVCaXRPZmZzZXQpOyB9Ci0gICAgdm9pZCBzZXRUYWJJ
bmRleFN0YXRlKFRhYkluZGV4U3RhdGUgc3RhdGUpIHsgbV9ub2RlRmxhZ3MgPSAobV9ub2RlRmxh
Z3MgJiB+c190YWJJbmRleFN0YXRlQml0TWFzaykgfCAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHN0
YXRlKSA8PCBzX3RhYkluZGV4U3RhdGVCaXRPZmZzZXQpOyB9CisgICAgUmFyZURhdGFCaXRGaWVs
ZHMgcmFyZURhdGFCaXRmaWVsZHMoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8UmFyZURh
dGFCaXRGaWVsZHM+KG1fcmFyZURhdGFXaXRoQml0ZmllbGRzLnR5cGUoKSk7IH0KKyAgICB2b2lk
IHNldFJhcmVEYXRhQml0ZmllbGRzKFJhcmVEYXRhQml0RmllbGRzIGJpdGZpZWxkcykgeyBtX3Jh
cmVEYXRhV2l0aEJpdGZpZWxkcy5zZXRUeXBlKGJpdHdpc2VfY2FzdDx1aW50MTZfdD4oYml0Zmll
bGRzKSk7IH0KKworICAgIFRhYkluZGV4U3RhdGUgdGFiSW5kZXhTdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFRhYkluZGV4U3RhdGU+KHJhcmVEYXRhQml0ZmllbGRzKCkudGFiSW5k
ZXhTdGF0ZSk7IH0KKyAgICB2b2lkIHNldFRhYkluZGV4U3RhdGUoVGFiSW5kZXhTdGF0ZSk7CisK
KyAgICBDdXN0b21FbGVtZW50U3RhdGUgY3VzdG9tRWxlbWVudFN0YXRlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8Q3VzdG9tRWxlbWVudFN0YXRlPihyYXJlRGF0YUJpdGZpZWxkcygpLmN1
c3RvbUVsZW1lbnRTdGF0ZSk7IH0KKyAgICB2b2lkIHNldEN1c3RvbUVsZW1lbnRTdGF0ZShDdXN0
b21FbGVtZW50U3RhdGUpOwogCiAgICAgYm9vbCBpc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkKCkg
Y29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZyk7IH0K
ICAgICB2b2lkIHNldElzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWQoKSB7IHNldEZsYWcoSXNQYXJz
aW5nQ2hpbGRyZW5GaW5pc2hlZEZsYWcpOyB9CkBAIC01ODYsNyArNjA4LDcgQEAgcHJvdGVjdGVk
OgogICAgICAgICBDcmVhdGVTVkdFbGVtZW50ID0gQ3JlYXRlRWxlbWVudCB8IElzU1ZHRmxhZyB8
IEhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrc0ZsYWcsCiAgICAgICAgIENyZWF0ZU1hdGhN
TEVsZW1lbnQgPSBDcmVhdGVFbGVtZW50IHwgSXNNYXRoTUxGbGFnLAogICAgICAgICBDcmVhdGVE
b2N1bWVudCA9IENyZWF0ZUNvbnRhaW5lciB8IElzRG9jdW1lbnROb2RlRmxhZyB8IElzQ29ubmVj
dGVkRmxhZywKLSAgICAgICAgQ3JlYXRlRWRpdGluZ1RleHQgPSBDcmVhdGVUZXh0IHwgSXNFZGl0
aW5nVGV4dE9yVW5kZWZpbmVkQ3VzdG9tRWxlbWVudEZsYWcsCisgICAgICAgIENyZWF0ZUVkaXRp
bmdUZXh0ID0gQ3JlYXRlVGV4dCB8IElzRWRpdGluZ1RleHQsCiAgICAgfTsKICAgICBOb2RlKERv
Y3VtZW50JiwgQ29uc3RydWN0aW9uVHlwZSk7CiAKQEAgLTY0OCw4ICs2NzAsOCBAQCBwcm90ZWN0
ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RI
YXNoU2V0PFVSTD4mKSBjb25zdCB7IH0KIAotICAgIGJvb2wgaGFzUmFyZURhdGEoKSBjb25zdCB7
IHJldHVybiAhIW1fcmFyZURhdGE7IH0KLSAgICBOb2RlUmFyZURhdGEqIHJhcmVEYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9yYXJlRGF0YS5nZXQoKTsgfQorICAgIGJvb2wgaGFzUmFyZURhdGEoKSBj
b25zdCB7IHJldHVybiAhIW1fcmFyZURhdGFXaXRoQml0ZmllbGRzLnBvaW50ZXIoKTsgfQorICAg
IE5vZGVSYXJlRGF0YSogcmFyZURhdGEoKSBjb25zdCB7IHJldHVybiBtX3JhcmVEYXRhV2l0aEJp
dGZpZWxkcy5wb2ludGVyKCk7IH0KICAgICBOb2RlUmFyZURhdGEmIGVuc3VyZVJhcmVEYXRhKCk7
CiAgICAgdm9pZCBjbGVhclJhcmVEYXRhKCk7CiAKQEAgLTcwNSw3ICs3MjcsNyBAQCBwcml2YXRl
OgogICAgIE5vZGUqIG1fcHJldmlvdXMgeyBudWxscHRyIH07CiAgICAgTm9kZSogbV9uZXh0IHsg
bnVsbHB0ciB9OwogICAgIENvbXBhY3RQb2ludGVyVHVwbGU8UmVuZGVyT2JqZWN0KiwgdWludDE2
X3Q+IG1fcmVuZGVyZXJXaXRoU3R5bGVGbGFnczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Tm9kZVJh
cmVEYXRhLCBOb2RlUmFyZURhdGFEZWxldGVyPiBtX3JhcmVEYXRhOworICAgIENvbXBhY3RVbmlx
dWVQdHJUdXBsZTxOb2RlUmFyZURhdGEsIHVpbnQxNl90LCBOb2RlUmFyZURhdGFEZWxldGVyPiBt
X3JhcmVEYXRhV2l0aEJpdGZpZWxkczsKIH07CiAKIGJvb2wgY29ubmVjdGVkSW5TYW1lVHJlZVNj
b3BlKGNvbnN0IE5vZGUqLCBjb25zdCBOb2RlKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZVJhcmVEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJh
cmVEYXRhLmNwcAkocmV2aXNpb24gMjY2NzEzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
YXJlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDggQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RydWN0IFNhbWVTaXplQXNOb2RlUmFyZURhdGEgewotICAgIHVuc2lnbmVk
IG1fZnJhbWVDb3VudEFuZElzRWxlbWVudFJhcmVEYXRhRmxhZzsKKyAgICB1aW50MzJfdCBtX3Rh
YkluZXg7CisgICAgdWludDMyX3QgbV9jaGlsZEluZGV4QW5kSXNFbGVtZW50UmFyZURhdGFGbGFn
OwogICAgIHZvaWQqIG1fcG9pbnRlclsyXTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlUmFyZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJh
cmVEYXRhLmgJKHJldmlzaW9uIDI2NjcxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFy
ZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDMzICsyNDUsMzEgQEAgY2xhc3MgTm9kZVJh
cmVEYXRhIHsKIHB1YmxpYzoKICNpZiBkZWZpbmVkKERVTVBfTk9ERV9TVEFUSVNUSUNTKSAmJiBE
VU1QX05PREVfU1RBVElTVElDUwogICAgIGVudW0gY2xhc3MgVXNlVHlwZSA6IHVpbnQzMl90IHsK
LSAgICAgICAgQ29ubmVjdGVkRnJhbWVDb3VudCA9IDEgPDwgMCwKLSAgICAgICAgTm9kZUxpc3Qg
PSAxIDw8IDEsCi0gICAgICAgIE11dGF0aW9uT2JzZXJ2ZXIgPSAxIDw8IDIsCi0gICAgICAgIFRh
YkluZGV4ID0gMSA8PCAzLAotICAgICAgICBNaW5pbXVtU2l6ZSA9IDEgPDwgNCwKLSAgICAgICAg
U2Nyb2xsaW5nUG9zaXRpb24gPSAxIDw8IDUsCi0gICAgICAgIENvbXB1dGVkU3R5bGUgPSAxIDw8
IDYsCi0gICAgICAgIERhdGFzZXQgPSAxIDw8IDcsCi0gICAgICAgIENsYXNzTGlzdCA9IDEgPDwg
OCwKLSAgICAgICAgU2hhZG93Um9vdCA9IDEgPDwgOSwKLSAgICAgICAgQ3VzdG9tRWxlbWVudFF1
ZXVlID0gMSA8PCAxMCwKLSAgICAgICAgQXR0cmlidXRlTWFwID0gMSA8PCAxMSwKLSAgICAgICAg
SW50ZXJhY3Rpb25PYnNlcnZlciA9IDEgPDwgMTIsCi0gICAgICAgIFJlc2l6ZU9ic2VydmVyID0g
MSA8PCAxMywKLSAgICAgICAgQW5pbWF0aW9ucyA9IDEgPDwgMTQsCi0gICAgICAgIFBzZXVkb0Vs
ZW1lbnRzID0gMSA8PCAxNSwKLSAgICAgICAgU3R5bGVNYXAgPSAxIDw8IDE2LAotICAgICAgICBQ
YXJ0TGlzdCA9IDEgPDwgMTcsCi0gICAgICAgIFBhcnROYW1lcyA9IDEgPDwgMTgsCisgICAgICAg
IE5vZGVMaXN0ID0gMSA8PCAwLAorICAgICAgICBNdXRhdGlvbk9ic2VydmVyID0gMSA8PCAxLAor
ICAgICAgICBUYWJJbmRleCA9IDEgPDwgMiwKKyAgICAgICAgTWluaW11bVNpemUgPSAxIDw8IDMs
CisgICAgICAgIFNjcm9sbGluZ1Bvc2l0aW9uID0gMSA8PCA0LAorICAgICAgICBDb21wdXRlZFN0
eWxlID0gMSA8PCA1LAorICAgICAgICBEYXRhc2V0ID0gMSA8PCA2LAorICAgICAgICBDbGFzc0xp
c3QgPSAxIDw8IDcsCisgICAgICAgIFNoYWRvd1Jvb3QgPSAxIDw8IDgsCisgICAgICAgIEN1c3Rv
bUVsZW1lbnRRdWV1ZSA9IDEgPDwgOSwKKyAgICAgICAgQXR0cmlidXRlTWFwID0gMSA8PCAxMCwK
KyAgICAgICAgSW50ZXJhY3Rpb25PYnNlcnZlciA9IDEgPDwgMTEsCisgICAgICAgIFJlc2l6ZU9i
c2VydmVyID0gMSA8PCAxMiwKKyAgICAgICAgQW5pbWF0aW9ucyA9IDEgPDwgMTMsCisgICAgICAg
IFBzZXVkb0VsZW1lbnRzID0gMSA8PCAxNCwKKyAgICAgICAgU3R5bGVNYXAgPSAxIDw8IDE1LAor
ICAgICAgICBQYXJ0TGlzdCA9IDEgPDwgMTYsCisgICAgICAgIFBhcnROYW1lcyA9IDEgPDwgMTcs
CiAgICAgfTsKICNlbmRpZgogCiAgICAgZW51bSBjbGFzcyBUeXBlIHsgRWxlbWVudCwgTm9kZSB9
OwogCiAgICAgTm9kZVJhcmVEYXRhKFR5cGUgdHlwZSA9IFR5cGU6Ok5vZGUpCi0gICAgICAgIDog
bV9jb25uZWN0ZWRGcmFtZUNvdW50KDApCi0gICAgICAgICwgbV9pc0VsZW1lbnRSYXJlRGF0YSh0
eXBlID09IFR5cGU6OkVsZW1lbnQpCisgICAgICAgIDogbV9pc0VsZW1lbnRSYXJlRGF0YSh0eXBl
ID09IFR5cGU6OkVsZW1lbnQpCiAgICAgewogICAgIH0KIApAQCAtMjk0LDI0ICsyOTIsMTAgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gKm1fbXV0YXRpb25PYnNlcnZlckRhdGE7CiAgICAgfQog
Ci0gICAgdW5zaWduZWQgY29ubmVjdGVkU3ViZnJhbWVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29ubmVjdGVkRnJhbWVDb3VudDsgfQotICAgIHZvaWQgaW5jcmVtZW50Q29ubmVjdGVkU3ViZnJh
bWVDb3VudCh1bnNpZ25lZCBhbW91bnQpCi0gICAgewotICAgICAgICBtX2Nvbm5lY3RlZEZyYW1l
Q291bnQgKz0gYW1vdW50OwotICAgIH0KLSAgICB2b2lkIGRlY3JlbWVudENvbm5lY3RlZFN1YmZy
YW1lQ291bnQodW5zaWduZWQgYW1vdW50KQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fY29ubmVj
dGVkRnJhbWVDb3VudCk7Ci0gICAgICAgIEFTU0VSVChhbW91bnQgPD0gbV9jb25uZWN0ZWRGcmFt
ZUNvdW50KTsKLSAgICAgICAgbV9jb25uZWN0ZWRGcmFtZUNvdW50IC09IGFtb3VudDsKLSAgICB9
Ci0KICNpZiBEVU1QX05PREVfU1RBVElTVElDUwogICAgIE9wdGlvblNldDxVc2VUeXBlPiB1c2VU
eXBlcygpIGNvbnN0CiAgICAgewogICAgICAgICBPcHRpb25TZXQ8VXNlVHlwZT4gcmVzdWx0Owot
ICAgICAgICBpZiAobV9jb25uZWN0ZWRGcmFtZUNvdW50KQotICAgICAgICAgICAgcmVzdWx0LmFk
ZChVc2VUeXBlOjpDb25uZWN0ZWRGcmFtZUNvdW50KTsKICAgICAgICAgaWYgKG1fbm9kZUxpc3Rz
KQogICAgICAgICAgICAgcmVzdWx0LmFkZChVc2VUeXBlOjpOb2RlTGlzdCk7CiAgICAgICAgIGlm
IChtX211dGF0aW9uT2JzZXJ2ZXJEYXRhKQpAQCAtMzIwLDkgKzMwNCwxMyBAQCBwdWJsaWM6CiAg
ICAgfQogI2VuZGlmCiAKK3Byb3RlY3RlZDoKKyAgICAvLyBVc2VkIGJ5IEVsZW1lbnRSYXJlRGF0
YS4gRGVmaW5lZCBoZXJlIGZvciBiZXR0ZXIgcGFja2luZyBpbiA2NC1iaXQuCisgICAgaW50IG1f
dW51c3VhbFRhYkluZGV4IHsgMCB9OworICAgIHVuc2lnbmVkIHNob3J0IG1fY2hpbGRJbmRleCB7
IDAgfTsKKwogcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtX2Nvbm5lY3RlZEZyYW1lQ291bnQgOiAz
MTsgLy8gTXVzdCBmaXQgUGFnZTo6bWF4TnVtYmVyT2ZGcmFtZXMuCi0gICAgdW5zaWduZWQgbV9p
c0VsZW1lbnRSYXJlRGF0YSA6IDE7CisgICAgYm9vbCBtX2lzRWxlbWVudFJhcmVEYXRhOwogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPE5vZGVMaXN0c05vZGVEYXRhPiBtX25vZGVMaXN0czsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8Tm9kZU11dGF0aW9uT2JzZXJ2ZXJEYXRhPiBtX211dGF0aW9uT2JzZXJ2
ZXJEYXRhOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3hjc2hhcmVkZGF0
YS94Y3NjaGVtZXMvV2ViS2l0Lnhjc2NoZW1lCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1dlYktpdC54Y3NjaGVtZQko
cmV2aXNpb24gMjY2NzEzKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3hjc2hh
cmVkZGF0YS94Y3NjaGVtZXMvV2ViS2l0Lnhjc2NoZW1lCSh3b3JraW5nIGNvcHkpCkBAIC04LDcg
KzgsNyBAQAogICAgICAgPEJ1aWxkQWN0aW9uRW50cmllcz4KICAgICAgICAgIDxCdWlsZEFjdGlv
bkVudHJ5CiAgICAgICAgICAgICBidWlsZEZvclRlc3RpbmcgPSAiWUVTIgotICAgICAgICAgICAg
YnVpbGRGb3JSdW5uaW5nID0gIllFUyIKKyAgICAgICAgICAgIGJ1aWxkRm9yUnVubmluZyA9ICJO
TyIKICAgICAgICAgICAgIGJ1aWxkRm9yUHJvZmlsaW5nID0gIllFUyIKICAgICAgICAgICAgIGJ1
aWxkRm9yQXJjaGl2aW5nID0gIllFUyIKICAgICAgICAgICAgIGJ1aWxkRm9yQW5hbHl6aW5nID0g
IllFUyI+CkBAIC0zMSw3ICszMSw3IEBACiAgICAgICA8L1Rlc3RhYmxlcz4KICAgIDwvVGVzdEFj
dGlvbj4KICAgIDxMYXVuY2hBY3Rpb24KLSAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxl
YXNlIgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIkRlYnVnIgogICAgICAgc2VsZWN0ZWRE
ZWJ1Z2dlcklkZW50aWZpZXIgPSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkRlYnVnZ2VyLkxM
REIiCiAgICAgICBzZWxlY3RlZExhdW5jaGVySWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZv
dW5kYXRpb24uTGF1bmNoZXIuTExEQiIKICAgICAgIGxhdW5jaFN0eWxlID0gIjAiCkBAIC00MCw2
ICs0MCwyOSBAQAogICAgICAgZGVidWdEb2N1bWVudFZlcnNpb25pbmcgPSAiWUVTIgogICAgICAg
ZGVidWdTZXJ2aWNlRXh0ZW5zaW9uID0gImludGVybmFsIgogICAgICAgYWxsb3dMb2NhdGlvblNp
bXVsYXRpb24gPSAiWUVTIj4KKyAgICAgIDxCdWlsZGFibGVQcm9kdWN0UnVubmFibGUKKyAgICAg
ICAgIHJ1bm5hYmxlRGVidWdnaW5nTW9kZSA9ICIwIj4KKyAgICAgICAgIDxCdWlsZGFibGVSZWZl
cmVuY2UKKyAgICAgICAgICAgIEJ1aWxkYWJsZUlkZW50aWZpZXIgPSAicHJpbWFyeSIKKyAgICAg
ICAgICAgIEJsdWVwcmludElkZW50aWZpZXIgPSAiOTM0MDk5NEEwODU0MENBRTAwN0YzQkM4Igor
ICAgICAgICAgICAgQnVpbGRhYmxlTmFtZSA9ICJEdW1wUmVuZGVyVHJlZSIKKyAgICAgICAgICAg
IEJsdWVwcmludE5hbWUgPSAiRHVtcFJlbmRlclRyZWUiCisgICAgICAgICAgICBSZWZlcmVuY2Vk
Q29udGFpbmVyID0gImNvbnRhaW5lcjouLi8uLi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS54Y29kZXByb2oiPgorICAgICAgICAgPC9CdWlsZGFibGVSZWZlcmVuY2U+CisgICAg
ICA8L0J1aWxkYWJsZVByb2R1Y3RSdW5uYWJsZT4KKyAgICAgIDxDb21tYW5kTGluZUFyZ3VtZW50
cz4KKyAgICAgICAgIDxDb21tYW5kTGluZUFyZ3VtZW50CisgICAgICAgICAgICBhcmd1bWVudCA9
ICIuLi8uLi9MYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9udGgtY2hpbGQtb2YtcmVnaXN0ZXIt
cmVxdWlyZW1lbnQuaHRtbCIKKyAgICAgICAgICAgIGlzRW5hYmxlZCA9ICJZRVMiPgorICAgICAg
ICAgPC9Db21tYW5kTGluZUFyZ3VtZW50PgorICAgICAgPC9Db21tYW5kTGluZUFyZ3VtZW50cz4K
KyAgICAgIDxFbnZpcm9ubWVudFZhcmlhYmxlcz4KKyAgICAgICAgIDxFbnZpcm9ubWVudFZhcmlh
YmxlCisgICAgICAgICAgICBrZXkgPSAiT1NfQUNUSVZJVFlfTU9ERSIKKyAgICAgICAgICAgIHZh
bHVlID0gImRpc2FibGUiCisgICAgICAgICAgICBpc0VuYWJsZWQgPSAiWUVTIj4KKyAgICAgICAg
IDwvRW52aXJvbm1lbnRWYXJpYWJsZT4KKyAgICAgIDwvRW52aXJvbm1lbnRWYXJpYWJsZXM+CiAg
ICA8L0xhdW5jaEFjdGlvbj4KICAgIDxQcm9maWxlQWN0aW9uCiAgICAgICBidWlsZENvbmZpZ3Vy
YXRpb24gPSAiUmVsZWFzZSIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408279</attachid>
            <date>2020-09-08 15:59:05 -0700</date>
            <delta_ts>2020-09-08 19:12:45 -0700</delta_ts>
            <desc>Fixed tests</desc>
            <filename>bug-216264-20200908155904.patch</filename>
            <type>text/plain</type>
            <size>22922</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NjcxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBACisyMDIwLTA5LTA4ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEhhdmluZyBhbiBpZnJhbWUgYXMg
YSBkZXNjZW5kZW50IG5vZGUgc2hvdWxkbid0IHJlcXVpcmUgRWxlbWVudFJhcmVEYXRhCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYyNjQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdG9yZSB0aGUgbnVt
YmVyIG9mIGNvbm5lY3RlZCBmcmFtZXMgaW4gdGhlIGRlc2NlbmRlbnQgbm9kZXMgZGlyZWNsdHkg
aW4gTm9kZSB1c2luZyBDb21wYWN0VW5pcXVlUHRyVHVwbGUKKyAgICAgICAgaW4gdGhlIHNhbWUg
c3BhY2UgYXMgd2hlcmUgd2Ugc3RvcmUgdGhlIE5vZGVSYXJlRGF0YSBwb2ludGVyLiBUaGlzIGF2
b2lkcyBjcmVhdGluZyBFbGVtZW50UmFyZURhdGEgb24gZXZlcnkKKyAgICAgICAgYW5jZXN0b3Ig
ZWxlbWVudCBhbmQgc2hhZG93IGhvc3QgLyBkb2N1bWVudCBvZiBhbiBpZnJhbWUuCisKKyAgICAg
ICAgQWxzbyBtb3ZlZCBUYWJJbmRleFN0YXRlIHRoZXJlIHRvIHNpbXBseSBOb2RlRmxhZ3MsIGFu
ZCBjcmVhdGVkIEN1c3RvbUVsZW1lbnRTdGF0ZSB0byByZXBsYWNlIHRoZSBleGlzdGluZworICAg
ICAgICBmbGFncyBpbiBOb2RlRmxhZ3MgdG8gbWF0Y2ggdGhlIGxhdGVzdCB0ZXJtaW5vbG9neSB1
c2VkIGluIHRoZSBzcGVjaWZpY2F0aW9uOgorICAgICAgICBodHRwczovL2RvbS5zcGVjLndoYXR3
Zy5vcmcvI2NvbmNlcHQtZWxlbWVudC1jdXN0b20tZWxlbWVudC1zdGF0ZQorCisgICAgICAgIEN1
c3RvbUVsZW1lbnRTdGF0ZSBoYXMgZm91ciBzdGF0ZXM6ICJ1bmN1c3RvbWl6ZWQiIChkZWZhdWx0
OyBidWlsdGluIGVsZW1lbnRzKSwgInVuZGVmaW5lZCIgKGkuZS4gZWxlbWVudCBoYXMKKyAgICAg
ICAgYSB2YWxpZCBjdXN0b20gZWxlbWVudCBidXQgaXQgaGFzbid0IGJlZW4gZGVmaW5lZCBvciB1
cGdyYWRlZCB5ZXQpLCAiY3VzdG9tIiAoYSB2YWxpZCBjdXN0b20gZWxlbWVudCBpbnN0YW5jZSks
CisgICAgICAgIGFuZCAiZmFpbGVkIiAodXBncmFkaW5nIGhhcyByZXN1bHRlZCBpbiBhbiBlcnJv
cikuIEJlZm9yZSB0aGlzIHBhdGNoLCAidW5jdXN0b21pemVkIiBtZWFudCB0aGF0IG5laXRoZXIK
KyAgICAgICAgSXNDdXN0b21FbGVtZW50IG5vciBJc0VkaXRpbmdUZXh0T3JVbmRlZmluZWRDdXN0
b21FbGVtZW50RmxhZyBpcyBzZXQsICJ1bmRlZmluZWQiIGhhZCBJc0N1c3RvbUVsZW1lbnQKKyAg
ICAgICAgYW5kIElzRWRpdGluZ1RleHRPclVuZGVmaW5lZEN1c3RvbUVsZW1lbnRGbGFnIHNldCwg
YW5kICJjdXN0b20iIGhhZCBJc0N1c3RvbUVsZW1lbnQgc2V0IGJ1dAorICAgICAgICBJc0VkaXRp
bmdUZXh0T3JVbmRlZmluZWRDdXN0b21FbGVtZW50RmxhZyB1bnNldCB3aGVyZWFzICJmYWlsZWQi
IGhhZCB0aGUgb3Bwb3NpdGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoZXJlIHNo
b3VsZCBiZSBubyBvYnNlcnZhYmxlIGJlaGF2aW9yYWwgY2hhbmdlLgorCisgICAgICAgICogY3Nz
aml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21w
aWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRJc050aENoaWxkKTog
TWFzayBvdXQgdGhlIGJpdHMgc3RvcmVkIGluCisgICAgICAgIHRoZSBwb2ludGVyIGluIHRoZSA2
NC1iaXQgYXJjaGl0ZWN0dXJlLiBJbiB0aGUgMzItYml0IGFyY2hpdGVjdHVyZSwgdGhlIHBvaW50
ZXIgaXMgdGhlIGZpcnN0IGNvbXBvbmVudAorICAgICAgICB3aXRob3V0IGFueSBleHRyYSBiaXRz
IHN0b3JlZCBpbiBpdC4KKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpzZXRUYWJJbmRleFN0YXRlKTogTW92ZWQgZnJvbSBOb2RlLmguIFVwZGF0ZWQg
dG8gdXNlIHRoZSBuZXdseSBpbnRyb2R1Y2VkIGJpdGZpZWxkcy4KKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OnNldEN1c3RvbUVsZW1lbnRTdGF0ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6c2V0SXNEZWZpbmVkQ3VzdG9tRWxlbWVudCk6IE5vdyB1cGRhdGVzIEN1c3RvbUVs
ZW1lbnRTdGF0ZSBpbiB0aGUgbmV3bHkgYWRkZWQgYml0ZmllbGRzLgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6c2V0SXNGYWlsZWRDdXN0b21FbGVtZW50V2l0aG91dENsZWFyaW5nUmVhY3Rp
b25RdWV1ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0SXNDdXN0b21F
bGVtZW50VXBncmFkZUNhbmRpZGF0ZSk6IERpdHRvLgorICAgICAgICAqIGRvbS9FbGVtZW50UmFy
ZURhdGEuY3BwOgorICAgICAgICAqIGRvbS9FbGVtZW50UmFyZURhdGEuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnRSYXJlRGF0YSk6IE1vdmVkIG1fdW51c3VhbFRhYkluZGV4IGFuZCBtX2No
aWxkSW5kZXggdG8gTm9kZVJhcmVEYXRhIGZvciBiZXR0ZXIgcGFja2luZy4KKyAgICAgICAgKiBk
b20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjptYXRlcmlhbGl6ZVJhcmVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmNsZWFyUmFyZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6Y29ubmVjdGVkU3ViZnJhbWVDb3VudCBjb25zdCk6IE1vdmVkIHRvIHRoZSBo
ZWFkZXIgZmlsZS4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmluY3JlbWVudENvbm5lY3RlZFN1
YmZyYW1lQ291bnQpOiBOb3cgdXBkYXRlcyB0aGUgbmV3bHkgYWRkZWQgYml0ZmllbGRzLgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGVjcmVtZW50Q29ubmVjdGVkU3ViZnJhbWVDb3VudCk6IERp
dHRvLgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc1Vu
ZGVmaW5lZEN1c3RvbUVsZW1lbnQgY29uc3QpOiBOb3cgdXNlcyBDdXN0b21FbGVtZW50U3RhdGUg
aW4gdGhlIG5ld2x5IGFkZGVkIGJpdGZpZWxkcy4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Omlz
Q3VzdG9tRWxlbWVudFVwZ3JhZGVDYW5kaWRhdGUgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OmlzRGVmaW5lZEN1c3RvbUVsZW1lbnQgY29uc3QpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OmlzRmFpbGVkQ3VzdG9tRWxlbWVudCBjb25zdCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNFZGl0aW5nVGV4dCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpjb25uZWN0ZWRTdWJmcmFtZUNvdW50IGNvbnN0KTogTW92ZWQgaGVyZSBm
cm9tIGNwcCBmaWxlLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmFyZURhdGFNZW1vcnlPZmZz
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmFyZURhdGFQb2ludGVyTWFzayk6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Q3VzdG9tRWxlbWVudFN0YXRlKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpOb2RlOjpSYXJlRGF0YUJpdEZpZWxkcyk6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6cmFyZURhdGFCaXRmaWVsZHMgY29uc3QpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OnNldFJhcmVEYXRhQml0ZmllbGRzKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjp0YWJJbmRleFN0YXRlIGNvbnN0KTogVXBkYXRlZCB0byB1c2UgcmFy
ZURhdGFCaXRmaWVsZHMuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRUYWJJbmRleFN0YXRl
KTogTW92ZWQgdG8gRWxlbWVudC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpjdXN0b21F
bGVtZW50U3RhdGUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Omhhc1Jh
cmVEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJhcmVEYXRhIGNvbnN0KToK
KyAgICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmNwcDoKKyAgICAgICAgKiBkb20vTm9kZVJhcmVE
YXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OlVzZVR5cGUpOiBSZW1vdmVk
IENvbm5lY3RlZEZyYW1lQ291bnQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6Ok5v
ZGVSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OnVzZVR5cGVzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Y29ubmVjdGVkU3ViZnJhbWVD
b3VudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6Omlu
Y3JlbWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZVJhcmVEYXRhOjpkZWNyZW1lbnRDb25uZWN0ZWRTdWJmcmFtZUNvdW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YSk6IE1vdmVkIG1fdW51c3VhbFRhYklu
ZGV4IGFuZCBtX2NoaWxkSW5kZXggaGVyZSBmb3IgYmV0dGVyIHBhY2tpbmcgaW4gNjQtYml0IGFy
Y2hpdGVjdHVyZS4KKwogMjAyMC0wOS0wNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBNb3ZlIGFsbCByZW1haW5pbmcgZmxhZ3MgZnJvbSBFbGVtZW50UmFyZURh
dGEgdG8gTm9kZSB0byByZWR1Y2UgdGhlIGZyZXF1ZW5jeQpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcAkocmV2aXNpb24gMjY2NzEzKQorKysgU291cmNl
L1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NTgyLDYgKzM1ODIsMTAgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxl
bQogICAgICAgICBMb2NhbFJlZ2lzdGVyIGVsZW1lbnRSYXJlRGF0YShtX3JlZ2lzdGVyQWxsb2Nh
dG9yKTsKICAgICAgICAgbV9hc3NlbWJsZXIubG9hZFB0cihBc3NlbWJsZXI6OkFkZHJlc3MocHJl
dmlvdXNTaWJsaW5nLCBOb2RlOjpyYXJlRGF0YU1lbW9yeU9mZnNldCgpKSwgZWxlbWVudFJhcmVE
YXRhKTsKIAorICAgICAgICBMb2NhbFJlZ2lzdGVyIHJhcmVEYXRhUG9pbnRlck1hc2sobV9yZWdp
c3RlckFsbG9jYXRvcik7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmUoQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKE5vZGU6OnJhcmVEYXRhUG9pbnRlck1hc2soKSksIHJhcmVEYXRhUG9pbnRlck1h
c2spOworICAgICAgICBtX2Fzc2VtYmxlci5hbmRQdHIocmFyZURhdGFQb2ludGVyTWFzaywgZWxl
bWVudFJhcmVEYXRhKTsKKwogICAgICAgICBub0NhY2hlZENoaWxkSW5kZXhDYXNlcy5hcHBlbmQo
bV9hc3NlbWJsZXIuYnJhbmNoVGVzdFB0cihBc3NlbWJsZXI6Olplcm8sIGVsZW1lbnRSYXJlRGF0
YSkpOwogICAgICAgICB7CiAgICAgICAgICAgICBMb2NhbFJlZ2lzdGVyIGNhY2hlZENoaWxkSW5k
ZXgobV9yZWdpc3RlckFsbG9jYXRvcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZp
c2lvbiAyNjY3MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI0MSw2ICsyNDEsMTMgQEAgaW5saW5lIEVsZW1lbnRSYXJlRGF0YSYgRWxlbWVu
dDo6ZW5zdXJlRQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50UmFyZURhdGEmPihlbnN1
cmVSYXJlRGF0YSgpKTsKIH0KIAoraW5saW5lIHZvaWQgTm9kZTo6c2V0VGFiSW5kZXhTdGF0ZShU
YWJJbmRleFN0YXRlIHN0YXRlKQoreworICAgIGF1dG8gYml0ZmllbGRzID0gcmFyZURhdGFCaXRm
aWVsZHMoKTsKKyAgICBiaXRmaWVsZHMudGFiSW5kZXhTdGF0ZSA9IHN0YXRpY19jYXN0PHVpbnQx
Nl90PihzdGF0ZSk7CisgICAgc2V0UmFyZURhdGFCaXRmaWVsZHMoYml0ZmllbGRzKTsKK30KKwog
dm9pZCBFbGVtZW50OjpzZXRUYWJJbmRleEV4cGxpY2l0bHkoT3B0aW9uYWw8aW50PiB0YWJJbmRl
eCkKIHsKICAgICBpZiAoIXRhYkluZGV4KSB7CkBAIC0yNDIyLDEwICsyNDI5LDE2IEBAIFNoYWRv
d1Jvb3QmIEVsZW1lbnQ6OmVuc3VyZVVzZXJBZ2VudFNoYWQKICAgICByZXR1cm4gc2hhZG93Owog
fQogCitpbmxpbmUgdm9pZCBOb2RlOjpzZXRDdXN0b21FbGVtZW50U3RhdGUoQ3VzdG9tRWxlbWVu
dFN0YXRlIHN0YXRlKQoreworICAgIGF1dG8gYml0ZmllbGRzID0gcmFyZURhdGFCaXRmaWVsZHMo
KTsKKyAgICBiaXRmaWVsZHMuY3VzdG9tRWxlbWVudFN0YXRlID0gc3RhdGljX2Nhc3Q8dWludDE2
X3Q+KHN0YXRlKTsKKyAgICBzZXRSYXJlRGF0YUJpdGZpZWxkcyhiaXRmaWVsZHMpOworfQorCiB2
b2lkIEVsZW1lbnQ6OnNldElzRGVmaW5lZEN1c3RvbUVsZW1lbnQoSlNDdXN0b21FbGVtZW50SW50
ZXJmYWNlJiBlbGVtZW50SW50ZXJmYWNlKQogewotICAgIGNsZWFyRmxhZyhJc0VkaXRpbmdUZXh0
T3JVbmRlZmluZWRDdXN0b21FbGVtZW50RmxhZyk7Ci0gICAgc2V0RmxhZyhJc0N1c3RvbUVsZW1l
bnQpOworICAgIHNldEN1c3RvbUVsZW1lbnRTdGF0ZShDdXN0b21FbGVtZW50U3RhdGU6OkN1c3Rv
bSk7CiAgICAgYXV0byYgZGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGlmICgh
ZGF0YS5jdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZSgpKQogICAgICAgICBkYXRhLnNldEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblF1ZXVlKG1ha2VVbmlxdWU8Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVl
dWU+KGVsZW1lbnRJbnRlcmZhY2UpKTsKQEAgLTI0NDIsOCArMjQ1NSw4IEBAIHZvaWQgRWxlbWVu
dDo6c2V0SXNGYWlsZWRDdXN0b21FbGVtZW50KCkKIHZvaWQgRWxlbWVudDo6c2V0SXNGYWlsZWRD
dXN0b21FbGVtZW50V2l0aG91dENsZWFyaW5nUmVhY3Rpb25RdWV1ZSgpCiB7CiAgICAgQVNTRVJU
KGlzVW5kZWZpbmVkQ3VzdG9tRWxlbWVudCgpKTsKLSAgICBBU1NFUlQoZ2V0RmxhZyhJc0VkaXRp
bmdUZXh0T3JVbmRlZmluZWRDdXN0b21FbGVtZW50RmxhZykpOwotICAgIGNsZWFyRmxhZyhJc0N1
c3RvbUVsZW1lbnQpOworICAgIEFTU0VSVChjdXN0b21FbGVtZW50U3RhdGUoKSA9PSBDdXN0b21F
bGVtZW50U3RhdGU6OlVuZGVmaW5lZCk7CisgICAgc2V0Q3VzdG9tRWxlbWVudFN0YXRlKEN1c3Rv
bUVsZW1lbnRTdGF0ZTo6RmFpbGVkKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENoYW5nZUN1c3RvbUVsZW1lbnRTdGF0ZSgqdGhpcyk7CiB9CiAKQEAgLTI0NTksOSArMjQ3Miw4
IEBAIHZvaWQgRWxlbWVudDo6Y2xlYXJSZWFjdGlvblF1ZXVlRnJvbUZhaWwKIAogdm9pZCBFbGVt
ZW50OjpzZXRJc0N1c3RvbUVsZW1lbnRVcGdyYWRlQ2FuZGlkYXRlKCkKIHsKLSAgICBBU1NFUlQo
IWdldEZsYWcoSXNDdXN0b21FbGVtZW50KSk7Ci0gICAgc2V0RmxhZyhJc0N1c3RvbUVsZW1lbnQp
OwotICAgIHNldEZsYWcoSXNFZGl0aW5nVGV4dE9yVW5kZWZpbmVkQ3VzdG9tRWxlbWVudEZsYWcp
OworICAgIEFTU0VSVChjdXN0b21FbGVtZW50U3RhdGUoKSA9PSBDdXN0b21FbGVtZW50U3RhdGU6
OlVuY3VzdG9taXplZCk7CisgICAgc2V0Q3VzdG9tRWxlbWVudFN0YXRlKEN1c3RvbUVsZW1lbnRT
dGF0ZTo6VW5kZWZpbmVkKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5n
ZUN1c3RvbUVsZW1lbnRTdGF0ZSgqdGhpcyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50UmFyZURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50UmFyZURhdGEuY3BwCShyZXZpc2lvbiAyNjY3MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudFJhcmVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsNiBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU2FtZVNpemVBc0VsZW1lbnRSYXJlRGF0YSA6
IE5vZGVSYXJlRGF0YSB7Ci0gICAgaW50IHRhYkluZGV4OwotICAgIHVuc2lnbmVkIHNob3J0IGNo
aWxkSW5kZXg7CiAgICAgTGF5b3V0U2l6ZSBzaXplRm9yUmVzaXppbmc7CiAgICAgSW50UG9pbnQg
c2F2ZWRMYXllclNjcm9sbFBvc2l0aW9uOwogICAgIHZvaWQqIHBvaW50ZXJzWzExXTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgJKHJldmlzaW9uIDI2NjcxNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMTU4
LDkgKzE1OCw2IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGludCBtX3VudXN1
YWxUYWJJbmRleCB7IDAgfTsKLSAgICB1bnNpZ25lZCBzaG9ydCBtX2NoaWxkSW5kZXggeyAwIH07
Ci0KICAgICBMYXlvdXRTaXplIG1fbWluaW11bVNpemVGb3JSZXNpemluZzsKICAgICBJbnRQb2lu
dCBtX3NhdmVkTGF5ZXJTY3JvbGxQb3NpdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IG1fY29tcHV0ZWRTdHlsZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDI2
NjcxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDEzLDkgKzQxMyw5IEBAIHZvaWQgTm9kZTo6d2lsbEJlRGVsZXRlZEZyb20oRG9jdW1lbnQmIGQK
IHZvaWQgTm9kZTo6bWF0ZXJpYWxpemVSYXJlRGF0YSgpCiB7CiAgICAgaWYgKGlzPEVsZW1lbnQ+
KCp0aGlzKSkKLSAgICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6dW5pcXVlX3B0cjxOb2RlUmFyZURh
dGEsIE5vZGVSYXJlRGF0YURlbGV0ZXI+KG5ldyBFbGVtZW50UmFyZURhdGEpOworICAgICAgICBt
X3JhcmVEYXRhV2l0aEJpdGZpZWxkcy5zZXRQb2ludGVyKHN0ZDo6dW5pcXVlX3B0cjxOb2RlUmFy
ZURhdGEsIE5vZGVSYXJlRGF0YURlbGV0ZXI+KG5ldyBFbGVtZW50UmFyZURhdGEpKTsKICAgICBl
bHNlCi0gICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6OnVuaXF1ZV9wdHI8Tm9kZVJhcmVEYXRhLCBO
b2RlUmFyZURhdGFEZWxldGVyPihuZXcgTm9kZVJhcmVEYXRhKTsKKyAgICAgICAgbV9yYXJlRGF0
YVdpdGhCaXRmaWVsZHMuc2V0UG9pbnRlcihzdGQ6OnVuaXF1ZV9wdHI8Tm9kZVJhcmVEYXRhLCBO
b2RlUmFyZURhdGFEZWxldGVyPihuZXcgTm9kZVJhcmVEYXRhKSk7CiB9CiAKIGlubGluZSB2b2lk
IE5vZGU6Ok5vZGVSYXJlRGF0YURlbGV0ZXI6Om9wZXJhdG9yKCkoTm9kZVJhcmVEYXRhKiByYXJl
RGF0YSkgY29uc3QKQEAgLTQzMSw3ICs0MzEsNyBAQCB2b2lkIE5vZGU6OmNsZWFyUmFyZURhdGEo
KQogICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKICAgICBBU1NFUlQoIXRyYW5zaWVudE11dGF0
aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpIHx8IHRyYW5zaWVudE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3Ry
eSgpLT5pc0VtcHR5KCkpOwogCi0gICAgbV9yYXJlRGF0YSA9IG51bGxwdHI7CisgICAgbV9yYXJl
RGF0YVdpdGhCaXRmaWVsZHMuc2V0UG9pbnRlcihudWxscHRyKTsKIH0KIAogYm9vbCBOb2RlOjpp
c05vZGUoKSBjb25zdApAQCAtMjU3MywyMyArMjU3MywyMiBAQCB2b2lkIE5vZGU6OnJlbW92ZWRM
YXN0UmVmKCkKICAgICBkZWxldGUgdGhpczsKIH0KIAotdW5zaWduZWQgTm9kZTo6Y29ubmVjdGVk
U3ViZnJhbWVDb3VudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyByYXJl
RGF0YSgpLT5jb25uZWN0ZWRTdWJmcmFtZUNvdW50KCkgOiAwOwotfQotCiB2b2lkIE5vZGU6Omlu
Y3JlbWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQodW5zaWduZWQgYW1vdW50KQogewogICAgIEFT
U0VSVChpc0NvbnRhaW5lck5vZGUoKSk7Ci0gICAgZW5zdXJlUmFyZURhdGEoKS5pbmNyZW1lbnRD
b25uZWN0ZWRTdWJmcmFtZUNvdW50KGFtb3VudCk7CisgICAgYXV0byBiaXRmaWVsZHMgPSByYXJl
RGF0YUJpdGZpZWxkcygpOworICAgIGJpdGZpZWxkcy5jb25uZWN0ZWRTdWJmcmFtZUNvdW50ICs9
IGFtb3VudDsKKyAgICBSRUxFQVNFX0FTU0VSVChiaXRmaWVsZHMuY29ubmVjdGVkU3ViZnJhbWVD
b3VudCA9PSByYXJlRGF0YUJpdGZpZWxkcygpLmNvbm5lY3RlZFN1YmZyYW1lQ291bnQgKyBhbW91
bnQpOworICAgIHNldFJhcmVEYXRhQml0ZmllbGRzKGJpdGZpZWxkcyk7CiB9CiAKIHZvaWQgTm9k
ZTo6ZGVjcmVtZW50Q29ubmVjdGVkU3ViZnJhbWVDb3VudCh1bnNpZ25lZCBhbW91bnQpCiB7Ci0g
ICAgQVNTRVJUKHJhcmVEYXRhKCkpOwotICAgIGlmICghaGFzUmFyZURhdGEoKSkKLSAgICAgICAg
cmV0dXJuOyAvLyBEZWZlbmQgYWdhaW5zdCB0eXBlIGNvbmZ1c2lvbiB3aGVuIHRoZSBhYm92ZSBh
c3NlcnRpb24gZmFpbHMuIFNlZSB3ZWJraXQub3JnL2IvMjAwMzAwLgotICAgIHJhcmVEYXRhKCkt
PmRlY3JlbWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQoYW1vdW50KTsKKyAgICBBU1NFUlQoaXND
b250YWluZXJOb2RlKCkpOworICAgIGF1dG8gYml0ZmllbGRzID0gcmFyZURhdGFCaXRmaWVsZHMo
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChhbW91bnQgPD0gYml0ZmllbGRzLmNvbm5lY3RlZFN1YmZy
YW1lQ291bnQpOworICAgIGJpdGZpZWxkcy5jb25uZWN0ZWRTdWJmcmFtZUNvdW50IC09IGFtb3Vu
dDsKKyAgICBzZXRSYXJlRGF0YUJpdGZpZWxkcyhiaXRmaWVsZHMpOwogfQogCiB2b2lkIE5vZGU6
OnVwZGF0ZUFuY2VzdG9yQ29ubmVjdGVkU3ViZnJhbWVDb3VudEZvclJlbW92YWwoKSBjb25zdApJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiAyNjY3MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiU3R5bGVW
YWxpZGl0eS5oIgogI2luY2x1ZGUgIlRyZWVTY29wZS5oIgogI2luY2x1ZGUgPHd0Zi9Db21wYWN0
UG9pbnRlclR1cGxlLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBhY3RVbmlxdWVQdHJUdXBsZS5oPgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogI2lu
Y2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtMjI5LDEwICsyMzAsMTAgQEAgcHVibGljOgog
ICAgIEhUTUxTbG90RWxlbWVudCogYXNzaWduZWRTbG90KCkgY29uc3Q7CiAgICAgSFRNTFNsb3RF
bGVtZW50KiBhc3NpZ25lZFNsb3RGb3JCaW5kaW5ncygpIGNvbnN0OwogCi0gICAgYm9vbCBpc1Vu
ZGVmaW5lZEN1c3RvbUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBpc0VsZW1lbnROb2RlKCkgJiYg
Z2V0RmxhZyhJc0VkaXRpbmdUZXh0T3JVbmRlZmluZWRDdXN0b21FbGVtZW50RmxhZyk7IH0KLSAg
ICBib29sIGlzQ3VzdG9tRWxlbWVudFVwZ3JhZGVDYW5kaWRhdGUoKSBjb25zdCB7IHJldHVybiBn
ZXRGbGFnKElzQ3VzdG9tRWxlbWVudCkgJiYgZ2V0RmxhZyhJc0VkaXRpbmdUZXh0T3JVbmRlZmlu
ZWRDdXN0b21FbGVtZW50RmxhZyk7IH0KLSAgICBib29sIGlzRGVmaW5lZEN1c3RvbUVsZW1lbnQo
KSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzQ3VzdG9tRWxlbWVudCkgJiYgIWdldEZsYWcoSXNF
ZGl0aW5nVGV4dE9yVW5kZWZpbmVkQ3VzdG9tRWxlbWVudEZsYWcpOyB9Ci0gICAgYm9vbCBpc0Zh
aWxlZEN1c3RvbUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBpc0VsZW1lbnROb2RlKCkgJiYgIWdl
dEZsYWcoSXNDdXN0b21FbGVtZW50KSAmJiBnZXRGbGFnKElzRWRpdGluZ1RleHRPclVuZGVmaW5l
ZEN1c3RvbUVsZW1lbnRGbGFnKTsgfQorICAgIGJvb2wgaXNVbmRlZmluZWRDdXN0b21FbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gY3VzdG9tRWxlbWVudFN0YXRlKCkgPT0gQ3VzdG9tRWxlbWVudFN0
YXRlOjpVbmRlZmluZWQgfHwgY3VzdG9tRWxlbWVudFN0YXRlKCkgPT0gQ3VzdG9tRWxlbWVudFN0
YXRlOjpGYWlsZWQ7IH0KKyAgICBib29sIGlzQ3VzdG9tRWxlbWVudFVwZ3JhZGVDYW5kaWRhdGUo
KSBjb25zdCB7IHJldHVybiBjdXN0b21FbGVtZW50U3RhdGUoKSA9PSBDdXN0b21FbGVtZW50U3Rh
dGU6OlVuZGVmaW5lZDsgfQorICAgIGJvb2wgaXNEZWZpbmVkQ3VzdG9tRWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIGN1c3RvbUVsZW1lbnRTdGF0ZSgpID09IEN1c3RvbUVsZW1lbnRTdGF0ZTo6Q3Vz
dG9tOyB9CisgICAgYm9vbCBpc0ZhaWxlZEN1c3RvbUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBj
dXN0b21FbGVtZW50U3RhdGUoKSA9PSBDdXN0b21FbGVtZW50U3RhdGU6OkZhaWxlZDsgfQogCiAg
ICAgLy8gUmV0dXJucyBudWxsLCBhIGNoaWxkIG9mIFNoYWRvd1Jvb3QsIG9yIGEgbGVnYWN5IHNo
YWRvdyByb290LgogICAgIE5vZGUqIG5vbkJvdW5kYXJ5U2hhZG93VHJlZVJvb3ROb2RlKCk7CkBA
IC0yOTYsNyArMjk3LDcgQEAgcHVibGljOgogICAgIFN0eWxlOjpWYWxpZGl0eSBzdHlsZVZhbGlk
aXR5KCkgY29uc3QgeyByZXR1cm4gc3R5bGVCaXRmaWVsZHMoKS5zdHlsZVZhbGlkaXR5KCk7IH0K
ICAgICBib29sIHN0eWxlUmVzb2x1dGlvblNob3VsZFJlY29tcG9zaXRlTGF5ZXIoKSBjb25zdCB7
IHJldHVybiBoYXNTdHlsZUZsYWcoTm9kZVN0eWxlRmxhZzo6U3R5bGVSZXNvbHV0aW9uU2hvdWxk
UmVjb21wb3NpdGVMYXllcik7IH0KICAgICBib29sIGNoaWxkTmVlZHNTdHlsZVJlY2FsYygpIGNv
bnN0IHsgcmV0dXJuIGhhc1N0eWxlRmxhZyhOb2RlU3R5bGVGbGFnOjpEZXNjZW5kYW50TmVlZHNT
dHlsZVJlc29sdXRpb24pOyB9Ci0gICAgYm9vbCBpc0VkaXRpbmdUZXh0KCkgY29uc3QgeyByZXR1
cm4gZ2V0RmxhZyhJc1RleHRGbGFnKSAmJiBnZXRGbGFnKElzRWRpdGluZ1RleHRPclVuZGVmaW5l
ZEN1c3RvbUVsZW1lbnRGbGFnKTsgfQorICAgIGJvb2wgaXNFZGl0aW5nVGV4dCgpIGNvbnN0IHsg
cmV0dXJuIGdldEZsYWcoSXNUZXh0RmxhZykgJiYgZ2V0RmxhZyhJc0VkaXRpbmdUZXh0KTsgfQog
CiAgICAgdm9pZCBzZXRDaGlsZE5lZWRzU3R5bGVSZWNhbGMoKSB7IHNldFN0eWxlRmxhZyhOb2Rl
U3R5bGVGbGFnOjpEZXNjZW5kYW50TmVlZHNTdHlsZVJlc29sdXRpb24pOyB9CiAgICAgdm9pZCBj
bGVhckNoaWxkTmVlZHNTdHlsZVJlY2FsYygpOwpAQCAtNDkxLDcgKzQ5Miw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHVucmVnaXN0ZXJUcmFuc2llbnRNdXRhdGlvbk9ic2VydmVyKE11dGF0aW9uT2Jz
ZXJ2ZXJSZWdpc3RyYXRpb24mKTsKICAgICB2b2lkIG5vdGlmeU11dGF0aW9uT2JzZXJ2ZXJzTm9k
ZVdpbGxEZXRhY2goKTsKIAotICAgIHVuc2lnbmVkIGNvbm5lY3RlZFN1YmZyYW1lQ291bnQoKSBj
b25zdDsKKyAgICB1bnNpZ25lZCBjb25uZWN0ZWRTdWJmcmFtZUNvdW50KCkgY29uc3QgeyByZXR1
cm4gcmFyZURhdGFCaXRmaWVsZHMoKS5jb25uZWN0ZWRTdWJmcmFtZUNvdW50OyB9CiAgICAgdm9p
ZCBpbmNyZW1lbnRDb25uZWN0ZWRTdWJmcmFtZUNvdW50KHVuc2lnbmVkIGFtb3VudCA9IDEpOwog
ICAgIHZvaWQgZGVjcmVtZW50Q29ubmVjdGVkU3ViZnJhbWVDb3VudCh1bnNpZ25lZCBhbW91bnQg
PSAxKTsKICAgICB2b2lkIHVwZGF0ZUFuY2VzdG9yQ29ubmVjdGVkU3ViZnJhbWVDb3VudEZvclJl
bW92YWwoKSBjb25zdDsKQEAgLTQ5OSw3ICs1MDAsMTIgQEAgcHVibGljOgogCiAjaWYgRU5BQkxF
KEpJVCkKICAgICBzdGF0aWMgcHRyZGlmZl90IG5vZGVGbGFnc01lbW9yeU9mZnNldCgpIHsgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihOb2RlLCBtX25vZGVGbGFncyk7IH0KLSAgICBzdGF0aWMgcHRy
ZGlmZl90IHJhcmVEYXRhTWVtb3J5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE5v
ZGUsIG1fcmFyZURhdGEpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCByYXJlRGF0YU1lbW9yeU9m
ZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihOb2RlLCBtX3JhcmVEYXRhV2l0aEJpdGZp
ZWxkcyk7IH0KKyNpZiBDUFUoQUREUkVTUzY0KQorICAgIHN0YXRpYyB1aW50NjRfdCByYXJlRGF0
YVBvaW50ZXJNYXNrKCkgeyByZXR1cm4gQ29tcGFjdFBvaW50ZXJUdXBsZTxOb2RlUmFyZURhdGEq
LCB1aW50MTZfdD46OnBvaW50ZXJNYXNrOyB9CisjZWxzZQorICAgIHN0YXRpYyB1aW50MzJfdCBy
YXJlRGF0YVBvaW50ZXJNYXNrKCkgeyByZXR1cm4gLTE7IH0KKyNlbmRpZgogICAgIHN0YXRpYyBp
bnQzMl90IGZsYWdJc1RleHQoKSB7IHJldHVybiBJc1RleHRGbGFnOyB9CiAgICAgc3RhdGljIGlu
dDMyX3QgZmxhZ0lzQ29udGFpbmVyKCkgeyByZXR1cm4gSXNDb250YWluZXJGbGFnOyB9CiAgICAg
c3RhdGljIGludDMyX3QgZmxhZ0lzRWxlbWVudCgpIHsgcmV0dXJuIElzRWxlbWVudEZsYWc7IH0K
QEAgLTUyNiwxMiArNTMyLDEyIEBAIHByb3RlY3RlZDoKICAgICAgICAgSGFzRXZlbnRUYXJnZXRE
YXRhRmxhZyA9IDEgPDwgMTEsCiAgICAgICAgIC8vIFVudXNlZEZsYWcgPSAxIDw8IDEyLAogICAg
ICAgICAvLyBVbnVzZWRGbGFnID0gMSA8PCAxMywKKyAgICAgICAgLy8gVW51c2VkRmxhZyA9IDEg
PDwgMTQsCiAKICAgICAgICAgLy8gVGhlc2UgYml0cyBhcmUgdXNlZCBieSBkZXJpdmVkIGNsYXNz
ZXMsIHB1bGxlZCB1cCBoZXJlIHNvIHRoZXkgY2FuCiAgICAgICAgIC8vIGJlIHN0b3JlZCBpbiB0
aGUgc2FtZSBtZW1vcnkgd29yZCBhcyB0aGUgTm9kZSBiaXRzIGFib3ZlLgotICAgICAgICBJc0Vk
aXRpbmdUZXh0T3JVbmRlZmluZWRDdXN0b21FbGVtZW50RmxhZyA9IDEgPDwgMTQsIC8vIFRleHQg
YW5kIEVsZW1lbnQKLSAgICAgICAgSXNDdXN0b21FbGVtZW50ID0gMSA8PCAxNSwgLy8gRWxlbWVu
dAotICAgICAgICBIYXNGb2N1c1dpdGhpbiA9IDEgPDwgMTYsCisgICAgICAgIElzRWRpdGluZ1Rl
eHQgPSAxIDw8IDE1LCAvLyBUZXh0CisgICAgICAgIEhhc0ZvY3VzV2l0aGluID0gMSA8PCAxNiwg
Ly8gRWxlbWVudAogICAgICAgICBJc0xpbmtGbGFnID0gMSA8PCAxNywKICAgICAgICAgSXNVc2Vy
QWN0aW9uRWxlbWVudCA9IDEgPDwgMTgsCiAgICAgICAgIElzUGFyc2luZ0NoaWxkcmVuRmluaXNo
ZWRGbGFnID0gMSA8PCAxOSwKQEAgLTU0NywxNCArNTUzLDExIEBAIHByb3RlY3RlZDoKICAgICAg
ICAgQ29udGFpbnNGdWxsU2NyZWVuRWxlbWVudEZsYWcgPSAxIDw8IDI2LAogI2VuZGlmCiAKLSAg
ICAgICAgLy8gQml0cyAyNy0yOSBhcmUgZnJlZS4KLSAgICAgICAgLy8gQml0cyAzMC0zMTogVGFi
SW5kZXhTdGF0ZQorICAgICAgICAvLyBCaXRzIDI3LTMxIGFyZSBmcmVlLgogCiAgICAgICAgIERl
ZmF1bHROb2RlRmxhZ3MgPSBJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZwogICAgIH07CiAK
LSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHNfdGFiSW5kZXhTdGF0ZUJpdE9mZnNldCA9
IDMwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc190YWJJbmRleFN0YXRlQml0TWFz
ayA9IDNVIDw8IHNfdGFiSW5kZXhTdGF0ZUJpdE9mZnNldDsKICAgICBlbnVtIGNsYXNzIFRhYklu
ZGV4U3RhdGUgOiB1aW50OF90IHsKICAgICAgICAgTm90U2V0ID0gMCwKICAgICAgICAgWmVybyA9
IDEsCkBAIC01NjIsMTMgKzU2NSwzMiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEluUmFyZURhdGEg
PSAzLAogICAgIH07CiAKKyAgICBlbnVtIGNsYXNzIEN1c3RvbUVsZW1lbnRTdGF0ZSA6IHVpbnQ4
X3QgeworICAgICAgICBVbmN1c3RvbWl6ZWQgPSAwLAorICAgICAgICBVbmRlZmluZWQgPSAxLAor
ICAgICAgICBDdXN0b20gPSAyLAorICAgICAgICBGYWlsZWQgPSAzLAorICAgIH07CisKKyAgICBz
dHJ1Y3QgUmFyZURhdGFCaXRGaWVsZHMgeworICAgICAgICB1aW50MTZfdCBjb25uZWN0ZWRTdWJm
cmFtZUNvdW50IDogMTA7IC8vIE11c3QgZml0IFBhZ2U6Om1heE51bWJlck9mRnJhbWVzLgorICAg
ICAgICB1aW50MTZfdCB0YWJJbmRleFN0YXRlIDogMjsKKyAgICAgICAgdWludDE2X3QgY3VzdG9t
RWxlbWVudFN0YXRlIDogMjsKKyAgICB9OworCiAgICAgYm9vbCBnZXRGbGFnKE5vZGVGbGFncyBt
YXNrKSBjb25zdCB7IHJldHVybiBtX25vZGVGbGFncyAmIG1hc2s7IH0KICAgICB2b2lkIHNldEZs
YWcoYm9vbCBmLCBOb2RlRmxhZ3MgbWFzaykgY29uc3QgeyBtX25vZGVGbGFncyA9IChtX25vZGVG
bGFncyAmIH5tYXNrKSB8ICgtKGludDMyX3QpZiAmIG1hc2spOyB9IAogICAgIHZvaWQgc2V0Rmxh
ZyhOb2RlRmxhZ3MgbWFzaykgY29uc3QgeyBtX25vZGVGbGFncyB8PSBtYXNrOyB9IAogICAgIHZv
aWQgY2xlYXJGbGFnKE5vZGVGbGFncyBtYXNrKSBjb25zdCB7IG1fbm9kZUZsYWdzICY9IH5tYXNr
OyB9CiAKLSAgICBUYWJJbmRleFN0YXRlIHRhYkluZGV4U3RhdGUoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxUYWJJbmRleFN0YXRlPigobV9ub2RlRmxhZ3MgJiBzX3RhYkluZGV4U3RhdGVC
aXRNYXNrKSA+PiBzX3RhYkluZGV4U3RhdGVCaXRPZmZzZXQpOyB9Ci0gICAgdm9pZCBzZXRUYWJJ
bmRleFN0YXRlKFRhYkluZGV4U3RhdGUgc3RhdGUpIHsgbV9ub2RlRmxhZ3MgPSAobV9ub2RlRmxh
Z3MgJiB+c190YWJJbmRleFN0YXRlQml0TWFzaykgfCAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHN0
YXRlKSA8PCBzX3RhYkluZGV4U3RhdGVCaXRPZmZzZXQpOyB9CisgICAgUmFyZURhdGFCaXRGaWVs
ZHMgcmFyZURhdGFCaXRmaWVsZHMoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8UmFyZURh
dGFCaXRGaWVsZHM+KG1fcmFyZURhdGFXaXRoQml0ZmllbGRzLnR5cGUoKSk7IH0KKyAgICB2b2lk
IHNldFJhcmVEYXRhQml0ZmllbGRzKFJhcmVEYXRhQml0RmllbGRzIGJpdGZpZWxkcykgeyBtX3Jh
cmVEYXRhV2l0aEJpdGZpZWxkcy5zZXRUeXBlKGJpdHdpc2VfY2FzdDx1aW50MTZfdD4oYml0Zmll
bGRzKSk7IH0KKworICAgIFRhYkluZGV4U3RhdGUgdGFiSW5kZXhTdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFRhYkluZGV4U3RhdGU+KHJhcmVEYXRhQml0ZmllbGRzKCkudGFiSW5k
ZXhTdGF0ZSk7IH0KKyAgICB2b2lkIHNldFRhYkluZGV4U3RhdGUoVGFiSW5kZXhTdGF0ZSk7CisK
KyAgICBDdXN0b21FbGVtZW50U3RhdGUgY3VzdG9tRWxlbWVudFN0YXRlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8Q3VzdG9tRWxlbWVudFN0YXRlPihyYXJlRGF0YUJpdGZpZWxkcygpLmN1
c3RvbUVsZW1lbnRTdGF0ZSk7IH0KKyAgICB2b2lkIHNldEN1c3RvbUVsZW1lbnRTdGF0ZShDdXN0
b21FbGVtZW50U3RhdGUpOwogCiAgICAgYm9vbCBpc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkKCkg
Y29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZyk7IH0K
ICAgICB2b2lkIHNldElzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWQoKSB7IHNldEZsYWcoSXNQYXJz
aW5nQ2hpbGRyZW5GaW5pc2hlZEZsYWcpOyB9CkBAIC01ODYsNyArNjA4LDcgQEAgcHJvdGVjdGVk
OgogICAgICAgICBDcmVhdGVTVkdFbGVtZW50ID0gQ3JlYXRlRWxlbWVudCB8IElzU1ZHRmxhZyB8
IEhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrc0ZsYWcsCiAgICAgICAgIENyZWF0ZU1hdGhN
TEVsZW1lbnQgPSBDcmVhdGVFbGVtZW50IHwgSXNNYXRoTUxGbGFnLAogICAgICAgICBDcmVhdGVE
b2N1bWVudCA9IENyZWF0ZUNvbnRhaW5lciB8IElzRG9jdW1lbnROb2RlRmxhZyB8IElzQ29ubmVj
dGVkRmxhZywKLSAgICAgICAgQ3JlYXRlRWRpdGluZ1RleHQgPSBDcmVhdGVUZXh0IHwgSXNFZGl0
aW5nVGV4dE9yVW5kZWZpbmVkQ3VzdG9tRWxlbWVudEZsYWcsCisgICAgICAgIENyZWF0ZUVkaXRp
bmdUZXh0ID0gQ3JlYXRlVGV4dCB8IElzRWRpdGluZ1RleHQsCiAgICAgfTsKICAgICBOb2RlKERv
Y3VtZW50JiwgQ29uc3RydWN0aW9uVHlwZSk7CiAKQEAgLTY0OCw4ICs2NzAsOCBAQCBwcm90ZWN0
ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RI
YXNoU2V0PFVSTD4mKSBjb25zdCB7IH0KIAotICAgIGJvb2wgaGFzUmFyZURhdGEoKSBjb25zdCB7
IHJldHVybiAhIW1fcmFyZURhdGE7IH0KLSAgICBOb2RlUmFyZURhdGEqIHJhcmVEYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9yYXJlRGF0YS5nZXQoKTsgfQorICAgIGJvb2wgaGFzUmFyZURhdGEoKSBj
b25zdCB7IHJldHVybiAhIW1fcmFyZURhdGFXaXRoQml0ZmllbGRzLnBvaW50ZXIoKTsgfQorICAg
IE5vZGVSYXJlRGF0YSogcmFyZURhdGEoKSBjb25zdCB7IHJldHVybiBtX3JhcmVEYXRhV2l0aEJp
dGZpZWxkcy5wb2ludGVyKCk7IH0KICAgICBOb2RlUmFyZURhdGEmIGVuc3VyZVJhcmVEYXRhKCk7
CiAgICAgdm9pZCBjbGVhclJhcmVEYXRhKCk7CiAKQEAgLTcwNSw3ICs3MjcsNyBAQCBwcml2YXRl
OgogICAgIE5vZGUqIG1fcHJldmlvdXMgeyBudWxscHRyIH07CiAgICAgTm9kZSogbV9uZXh0IHsg
bnVsbHB0ciB9OwogICAgIENvbXBhY3RQb2ludGVyVHVwbGU8UmVuZGVyT2JqZWN0KiwgdWludDE2
X3Q+IG1fcmVuZGVyZXJXaXRoU3R5bGVGbGFnczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Tm9kZVJh
cmVEYXRhLCBOb2RlUmFyZURhdGFEZWxldGVyPiBtX3JhcmVEYXRhOworICAgIENvbXBhY3RVbmlx
dWVQdHJUdXBsZTxOb2RlUmFyZURhdGEsIHVpbnQxNl90LCBOb2RlUmFyZURhdGFEZWxldGVyPiBt
X3JhcmVEYXRhV2l0aEJpdGZpZWxkczsKIH07CiAKIGJvb2wgY29ubmVjdGVkSW5TYW1lVHJlZVNj
b3BlKGNvbnN0IE5vZGUqLCBjb25zdCBOb2RlKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZVJhcmVEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJh
cmVEYXRhLmNwcAkocmV2aXNpb24gMjY2NzEzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
YXJlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDggQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RydWN0IFNhbWVTaXplQXNOb2RlUmFyZURhdGEgewotICAgIHVuc2lnbmVk
IG1fZnJhbWVDb3VudEFuZElzRWxlbWVudFJhcmVEYXRhRmxhZzsKKyAgICB1aW50MzJfdCBtX3Rh
YkluZXg7CisgICAgdWludDMyX3QgbV9jaGlsZEluZGV4QW5kSXNFbGVtZW50UmFyZURhdGFGbGFn
OwogICAgIHZvaWQqIG1fcG9pbnRlclsyXTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlUmFyZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJh
cmVEYXRhLmgJKHJldmlzaW9uIDI2NjcxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFy
ZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDMzICsyNDUsMzEgQEAgY2xhc3MgTm9kZVJh
cmVEYXRhIHsKIHB1YmxpYzoKICNpZiBkZWZpbmVkKERVTVBfTk9ERV9TVEFUSVNUSUNTKSAmJiBE
VU1QX05PREVfU1RBVElTVElDUwogICAgIGVudW0gY2xhc3MgVXNlVHlwZSA6IHVpbnQzMl90IHsK
LSAgICAgICAgQ29ubmVjdGVkRnJhbWVDb3VudCA9IDEgPDwgMCwKLSAgICAgICAgTm9kZUxpc3Qg
PSAxIDw8IDEsCi0gICAgICAgIE11dGF0aW9uT2JzZXJ2ZXIgPSAxIDw8IDIsCi0gICAgICAgIFRh
YkluZGV4ID0gMSA8PCAzLAotICAgICAgICBNaW5pbXVtU2l6ZSA9IDEgPDwgNCwKLSAgICAgICAg
U2Nyb2xsaW5nUG9zaXRpb24gPSAxIDw8IDUsCi0gICAgICAgIENvbXB1dGVkU3R5bGUgPSAxIDw8
IDYsCi0gICAgICAgIERhdGFzZXQgPSAxIDw8IDcsCi0gICAgICAgIENsYXNzTGlzdCA9IDEgPDwg
OCwKLSAgICAgICAgU2hhZG93Um9vdCA9IDEgPDwgOSwKLSAgICAgICAgQ3VzdG9tRWxlbWVudFF1
ZXVlID0gMSA8PCAxMCwKLSAgICAgICAgQXR0cmlidXRlTWFwID0gMSA8PCAxMSwKLSAgICAgICAg
SW50ZXJhY3Rpb25PYnNlcnZlciA9IDEgPDwgMTIsCi0gICAgICAgIFJlc2l6ZU9ic2VydmVyID0g
MSA8PCAxMywKLSAgICAgICAgQW5pbWF0aW9ucyA9IDEgPDwgMTQsCi0gICAgICAgIFBzZXVkb0Vs
ZW1lbnRzID0gMSA8PCAxNSwKLSAgICAgICAgU3R5bGVNYXAgPSAxIDw8IDE2LAotICAgICAgICBQ
YXJ0TGlzdCA9IDEgPDwgMTcsCi0gICAgICAgIFBhcnROYW1lcyA9IDEgPDwgMTgsCisgICAgICAg
IE5vZGVMaXN0ID0gMSA8PCAwLAorICAgICAgICBNdXRhdGlvbk9ic2VydmVyID0gMSA8PCAxLAor
ICAgICAgICBUYWJJbmRleCA9IDEgPDwgMiwKKyAgICAgICAgTWluaW11bVNpemUgPSAxIDw8IDMs
CisgICAgICAgIFNjcm9sbGluZ1Bvc2l0aW9uID0gMSA8PCA0LAorICAgICAgICBDb21wdXRlZFN0
eWxlID0gMSA8PCA1LAorICAgICAgICBEYXRhc2V0ID0gMSA8PCA2LAorICAgICAgICBDbGFzc0xp
c3QgPSAxIDw8IDcsCisgICAgICAgIFNoYWRvd1Jvb3QgPSAxIDw8IDgsCisgICAgICAgIEN1c3Rv
bUVsZW1lbnRRdWV1ZSA9IDEgPDwgOSwKKyAgICAgICAgQXR0cmlidXRlTWFwID0gMSA8PCAxMCwK
KyAgICAgICAgSW50ZXJhY3Rpb25PYnNlcnZlciA9IDEgPDwgMTEsCisgICAgICAgIFJlc2l6ZU9i
c2VydmVyID0gMSA8PCAxMiwKKyAgICAgICAgQW5pbWF0aW9ucyA9IDEgPDwgMTMsCisgICAgICAg
IFBzZXVkb0VsZW1lbnRzID0gMSA8PCAxNCwKKyAgICAgICAgU3R5bGVNYXAgPSAxIDw8IDE1LAor
ICAgICAgICBQYXJ0TGlzdCA9IDEgPDwgMTYsCisgICAgICAgIFBhcnROYW1lcyA9IDEgPDwgMTcs
CiAgICAgfTsKICNlbmRpZgogCiAgICAgZW51bSBjbGFzcyBUeXBlIHsgRWxlbWVudCwgTm9kZSB9
OwogCiAgICAgTm9kZVJhcmVEYXRhKFR5cGUgdHlwZSA9IFR5cGU6Ok5vZGUpCi0gICAgICAgIDog
bV9jb25uZWN0ZWRGcmFtZUNvdW50KDApCi0gICAgICAgICwgbV9pc0VsZW1lbnRSYXJlRGF0YSh0
eXBlID09IFR5cGU6OkVsZW1lbnQpCisgICAgICAgIDogbV9pc0VsZW1lbnRSYXJlRGF0YSh0eXBl
ID09IFR5cGU6OkVsZW1lbnQpCiAgICAgewogICAgIH0KIApAQCAtMjk0LDI0ICsyOTIsMTAgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gKm1fbXV0YXRpb25PYnNlcnZlckRhdGE7CiAgICAgfQog
Ci0gICAgdW5zaWduZWQgY29ubmVjdGVkU3ViZnJhbWVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29ubmVjdGVkRnJhbWVDb3VudDsgfQotICAgIHZvaWQgaW5jcmVtZW50Q29ubmVjdGVkU3ViZnJh
bWVDb3VudCh1bnNpZ25lZCBhbW91bnQpCi0gICAgewotICAgICAgICBtX2Nvbm5lY3RlZEZyYW1l
Q291bnQgKz0gYW1vdW50OwotICAgIH0KLSAgICB2b2lkIGRlY3JlbWVudENvbm5lY3RlZFN1YmZy
YW1lQ291bnQodW5zaWduZWQgYW1vdW50KQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fY29ubmVj
dGVkRnJhbWVDb3VudCk7Ci0gICAgICAgIEFTU0VSVChhbW91bnQgPD0gbV9jb25uZWN0ZWRGcmFt
ZUNvdW50KTsKLSAgICAgICAgbV9jb25uZWN0ZWRGcmFtZUNvdW50IC09IGFtb3VudDsKLSAgICB9
Ci0KICNpZiBEVU1QX05PREVfU1RBVElTVElDUwogICAgIE9wdGlvblNldDxVc2VUeXBlPiB1c2VU
eXBlcygpIGNvbnN0CiAgICAgewogICAgICAgICBPcHRpb25TZXQ8VXNlVHlwZT4gcmVzdWx0Owot
ICAgICAgICBpZiAobV9jb25uZWN0ZWRGcmFtZUNvdW50KQotICAgICAgICAgICAgcmVzdWx0LmFk
ZChVc2VUeXBlOjpDb25uZWN0ZWRGcmFtZUNvdW50KTsKICAgICAgICAgaWYgKG1fbm9kZUxpc3Rz
KQogICAgICAgICAgICAgcmVzdWx0LmFkZChVc2VUeXBlOjpOb2RlTGlzdCk7CiAgICAgICAgIGlm
IChtX211dGF0aW9uT2JzZXJ2ZXJEYXRhKQpAQCAtMzIwLDkgKzMwNCwxMyBAQCBwdWJsaWM6CiAg
ICAgfQogI2VuZGlmCiAKK3Byb3RlY3RlZDoKKyAgICAvLyBVc2VkIGJ5IEVsZW1lbnRSYXJlRGF0
YS4gRGVmaW5lZCBoZXJlIGZvciBiZXR0ZXIgcGFja2luZyBpbiA2NC1iaXQuCisgICAgaW50IG1f
dW51c3VhbFRhYkluZGV4IHsgMCB9OworICAgIHVuc2lnbmVkIHNob3J0IG1fY2hpbGRJbmRleCB7
IDAgfTsKKwogcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtX2Nvbm5lY3RlZEZyYW1lQ291bnQgOiAz
MTsgLy8gTXVzdCBmaXQgUGFnZTo6bWF4TnVtYmVyT2ZGcmFtZXMuCi0gICAgdW5zaWduZWQgbV9p
c0VsZW1lbnRSYXJlRGF0YSA6IDE7CisgICAgYm9vbCBtX2lzRWxlbWVudFJhcmVEYXRhOwogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPE5vZGVMaXN0c05vZGVEYXRhPiBtX25vZGVMaXN0czsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8Tm9kZU11dGF0aW9uT2JzZXJ2ZXJEYXRhPiBtX211dGF0aW9uT2JzZXJ2
ZXJEYXRhOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408302</attachid>
            <date>2020-09-08 19:12:47 -0700</date>
            <delta_ts>2020-09-08 19:13:22 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-216264-20200908191246.patch</filename>
            <type>text/plain</type>
            <size>23067</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NjcxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBACisyMDIwLTA5LTA4ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEhhdmluZyBhbiBpZnJhbWUgYXMg
YSBkZXNjZW5kZW50IG5vZGUgc2hvdWxkbid0IHJlcXVpcmUgRWxlbWVudFJhcmVEYXRhCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYyNjQKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBTdG9yZSB0aGUgbnVtYmVy
IG9mIGNvbm5lY3RlZCBmcmFtZXMgaW4gdGhlIGRlc2NlbmRlbnQgbm9kZXMgZGlyZWN0bHkgaW4g
Tm9kZSB1c2luZyBDb21wYWN0VW5pcXVlUHRyVHVwbGUKKyAgICAgICAgaW4gdGhlIHNhbWUgc3Bh
Y2UgYXMgd2hlcmUgd2Ugc3RvcmUgdGhlIE5vZGVSYXJlRGF0YSBwb2ludGVyLiBUaGlzIGF2b2lk
cyBjcmVhdGluZyBFbGVtZW50UmFyZURhdGEgb24gZXZlcnkKKyAgICAgICAgYW5jZXN0b3IgZWxl
bWVudCBhbmQgc2hhZG93IGhvc3QgLyBkb2N1bWVudCBvZiBhbiBpZnJhbWUuCisKKyAgICAgICAg
QWxzbyBtb3ZlZCBUYWJJbmRleFN0YXRlIHRoZXJlIHRvIHNpbXBseSBOb2RlRmxhZ3MsIGFuZCBj
cmVhdGVkIEN1c3RvbUVsZW1lbnRTdGF0ZSB0byByZXBsYWNlIHRoZSBleGlzdGluZworICAgICAg
ICBmbGFncyBpbiBOb2RlRmxhZ3MgdG8gbWF0Y2ggdGhlIGxhdGVzdCB0ZXJtaW5vbG9neSB1c2Vk
IGluIHRoZSBzcGVjaWZpY2F0aW9uOgorICAgICAgICBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5v
cmcvI2NvbmNlcHQtZWxlbWVudC1jdXN0b20tZWxlbWVudC1zdGF0ZQorCisgICAgICAgIEN1c3Rv
bUVsZW1lbnRTdGF0ZSBoYXMgZm91ciBzdGF0ZXM6ICJ1bmN1c3RvbWl6ZWQiIChkZWZhdWx0OyBi
dWlsdGluIGVsZW1lbnRzKSwgInVuZGVmaW5lZCIgKGkuZS4gZWxlbWVudCBoYXMKKyAgICAgICAg
YSB2YWxpZCBjdXN0b20gZWxlbWVudCBidXQgaXQgaGFzbid0IGJlZW4gZGVmaW5lZCBvciB1cGdy
YWRlZCB5ZXQpLCAiY3VzdG9tIiAoYSB2YWxpZCBjdXN0b20gZWxlbWVudCBpbnN0YW5jZSksCisg
ICAgICAgIGFuZCAiZmFpbGVkIiAodXBncmFkaW5nIGhhcyByZXN1bHRlZCBpbiBhbiBlcnJvciku
IEJlZm9yZSB0aGlzIHBhdGNoLCAidW5jdXN0b21pemVkIiBtZWFudCB0aGF0IG5laXRoZXIKKyAg
ICAgICAgSXNDdXN0b21FbGVtZW50IG5vciBJc0VkaXRpbmdUZXh0T3JVbmRlZmluZWRDdXN0b21F
bGVtZW50RmxhZyBpcyBzZXQsICJ1bmRlZmluZWQiIGhhZCBJc0N1c3RvbUVsZW1lbnQKKyAgICAg
ICAgYW5kIElzRWRpdGluZ1RleHRPclVuZGVmaW5lZEN1c3RvbUVsZW1lbnRGbGFnIHNldCwgYW5k
ICJjdXN0b20iIGhhZCBJc0N1c3RvbUVsZW1lbnQgc2V0IGJ1dAorICAgICAgICBJc0VkaXRpbmdU
ZXh0T3JVbmRlZmluZWRDdXN0b21FbGVtZW50RmxhZyB1bnNldCB3aGVyZWFzICJmYWlsZWQiIGhh
ZCB0aGUgb3Bwb3NpdGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoZXJlIHNob3Vs
ZCBiZSBubyBvYnNlcnZhYmxlIGJlaGF2aW9yYWwgY2hhbmdlLgorCisgICAgICAgICogY3Nzaml0
L1NlbGVjdG9yQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxl
cjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRJc050aENoaWxkKTogTWFz
ayBvdXQgdGhlIGJpdHMgc3RvcmVkIGluCisgICAgICAgIHRoZSBwb2ludGVyIGluIHRoZSA2NC1i
aXQgYXJjaGl0ZWN0dXJlLiBJbiB0aGUgMzItYml0IGFyY2hpdGVjdHVyZSwgdGhlIHBvaW50ZXIg
aXMgdGhlIGZpcnN0IGNvbXBvbmVudAorICAgICAgICB3aXRob3V0IGFueSBleHRyYSBiaXRzIHN0
b3JlZCBpbiBpdC4KKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjpzZXRUYWJJbmRleFN0YXRlKTogTW92ZWQgZnJvbSBOb2RlLmguIFVwZGF0ZWQgdG8g
dXNlIHRoZSBuZXdseSBpbnRyb2R1Y2VkIGJpdGZpZWxkcy4KKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGU6OnNldEN1c3RvbUVsZW1lbnRTdGF0ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6c2V0SXNEZWZpbmVkQ3VzdG9tRWxlbWVudCk6IE5vdyB1cGRhdGVzIEN1c3RvbUVsZW1l
bnRTdGF0ZSBpbiB0aGUgbmV3bHkgYWRkZWQgYml0ZmllbGRzLgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6c2V0SXNGYWlsZWRDdXN0b21FbGVtZW50V2l0aG91dENsZWFyaW5nUmVhY3Rpb25R
dWV1ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0SXNDdXN0b21FbGVt
ZW50VXBncmFkZUNhbmRpZGF0ZSk6IERpdHRvLgorICAgICAgICAqIGRvbS9FbGVtZW50UmFyZURh
dGEuY3BwOgorICAgICAgICAqIGRvbS9FbGVtZW50UmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRSYXJlRGF0YSk6IE1vdmVkIG1fdW51c3VhbFRhYkluZGV4IGFuZCBtX2NoaWxk
SW5kZXggdG8gTm9kZVJhcmVEYXRhIGZvciBiZXR0ZXIgcGFja2luZy4KKyAgICAgICAgKiBkb20v
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjptYXRlcmlhbGl6ZVJhcmVEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmNsZWFyUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6Y29ubmVjdGVkU3ViZnJhbWVDb3VudCBjb25zdCk6IE1vdmVkIHRvIHRoZSBoZWFk
ZXIgZmlsZS4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmluY3JlbWVudENvbm5lY3RlZFN1YmZy
YW1lQ291bnQpOiBOb3cgdXBkYXRlcyB0aGUgbmV3bHkgYWRkZWQgYml0ZmllbGRzLgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6ZGVjcmVtZW50Q29ubmVjdGVkU3ViZnJhbWVDb3VudCk6IERpdHRv
LgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc1VuZGVm
aW5lZEN1c3RvbUVsZW1lbnQgY29uc3QpOiBOb3cgdXNlcyBDdXN0b21FbGVtZW50U3RhdGUgaW4g
dGhlIG5ld2x5IGFkZGVkIGJpdGZpZWxkcy4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzQ3Vz
dG9tRWxlbWVudFVwZ3JhZGVDYW5kaWRhdGUgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OmlzRGVmaW5lZEN1c3RvbUVsZW1lbnQgY29uc3QpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6OmlzRmFpbGVkQ3VzdG9tRWxlbWVudCBjb25zdCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNFZGl0aW5nVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpjb25uZWN0ZWRTdWJmcmFtZUNvdW50IGNvbnN0KTogTW92ZWQgaGVyZSBmcm9t
IGNwcCBmaWxlLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmFyZURhdGFNZW1vcnlPZmZzZXQp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmFyZURhdGFQb2ludGVyTWFzayk6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Q3VzdG9tRWxlbWVudFN0YXRlKTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjpSYXJlRGF0YUJpdEZpZWxkcyk6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6cmFyZURhdGFCaXRmaWVsZHMgY29uc3QpOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6OnNldFJhcmVEYXRhQml0ZmllbGRzKTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjp0YWJJbmRleFN0YXRlIGNvbnN0KTogVXBkYXRlZCB0byB1c2UgcmFyZURh
dGFCaXRmaWVsZHMuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRUYWJJbmRleFN0YXRlKTog
TW92ZWQgdG8gRWxlbWVudC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpjdXN0b21FbGVt
ZW50U3RhdGUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Omhhc1JhcmVE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJhcmVEYXRhIGNvbnN0KToKKyAg
ICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmNwcDoKKyAgICAgICAgKiBkb20vTm9kZVJhcmVEYXRh
Lmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OlVzZVR5cGUpOiBSZW1vdmVkIENv
bm5lY3RlZEZyYW1lQ291bnQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6Ok5vZGVS
YXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OnVzZVR5cGVzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Y29ubmVjdGVkU3ViZnJhbWVDb3Vu
dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OmluY3Jl
bWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZVJhcmVEYXRhOjpkZWNyZW1lbnRDb25uZWN0ZWRTdWJmcmFtZUNvdW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YSk6IE1vdmVkIG1fdW51c3VhbFRhYkluZGV4
IGFuZCBtX2NoaWxkSW5kZXggaGVyZSBmb3IgYmV0dGVyIHBhY2tpbmcgaW4gNjQtYml0IGFyY2hp
dGVjdHVyZS4KKwogMjAyMC0wOS0wNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBNb3ZlIGFsbCByZW1haW5pbmcgZmxhZ3MgZnJvbSBFbGVtZW50UmFyZURhdGEg
dG8gTm9kZSB0byByZWR1Y2UgdGhlIGZyZXF1ZW5jeQpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
aml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
c2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcAkocmV2aXNpb24gMjY2NzEzKQorKysgU291cmNlL1dl
YkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTgy
LDYgKzM1ODIsMTAgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbQog
ICAgICAgICBMb2NhbFJlZ2lzdGVyIGVsZW1lbnRSYXJlRGF0YShtX3JlZ2lzdGVyQWxsb2NhdG9y
KTsKICAgICAgICAgbV9hc3NlbWJsZXIubG9hZFB0cihBc3NlbWJsZXI6OkFkZHJlc3MocHJldmlv
dXNTaWJsaW5nLCBOb2RlOjpyYXJlRGF0YU1lbW9yeU9mZnNldCgpKSwgZWxlbWVudFJhcmVEYXRh
KTsKIAorICAgICAgICBMb2NhbFJlZ2lzdGVyIHJhcmVEYXRhUG9pbnRlck1hc2sobV9yZWdpc3Rl
ckFsbG9jYXRvcik7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmUoQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKE5vZGU6OnJhcmVEYXRhUG9pbnRlck1hc2soKSksIHJhcmVEYXRhUG9pbnRlck1hc2sp
OworICAgICAgICBtX2Fzc2VtYmxlci5hbmRQdHIocmFyZURhdGFQb2ludGVyTWFzaywgZWxlbWVu
dFJhcmVEYXRhKTsKKwogICAgICAgICBub0NhY2hlZENoaWxkSW5kZXhDYXNlcy5hcHBlbmQobV9h
c3NlbWJsZXIuYnJhbmNoVGVzdFB0cihBc3NlbWJsZXI6Olplcm8sIGVsZW1lbnRSYXJlRGF0YSkp
OwogICAgICAgICB7CiAgICAgICAgICAgICBMb2NhbFJlZ2lzdGVyIGNhY2hlZENoaWxkSW5kZXgo
bV9yZWdpc3RlckFsbG9jYXRvcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lv
biAyNjY3MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI0MSw2ICsyNDEsMTMgQEAgaW5saW5lIEVsZW1lbnRSYXJlRGF0YSYgRWxlbWVudDo6
ZW5zdXJlRQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50UmFyZURhdGEmPihlbnN1cmVS
YXJlRGF0YSgpKTsKIH0KIAoraW5saW5lIHZvaWQgTm9kZTo6c2V0VGFiSW5kZXhTdGF0ZShUYWJJ
bmRleFN0YXRlIHN0YXRlKQoreworICAgIGF1dG8gYml0ZmllbGRzID0gcmFyZURhdGFCaXRmaWVs
ZHMoKTsKKyAgICBiaXRmaWVsZHMudGFiSW5kZXhTdGF0ZSA9IHN0YXRpY19jYXN0PHVpbnQxNl90
PihzdGF0ZSk7CisgICAgc2V0UmFyZURhdGFCaXRmaWVsZHMoYml0ZmllbGRzKTsKK30KKwogdm9p
ZCBFbGVtZW50OjpzZXRUYWJJbmRleEV4cGxpY2l0bHkoT3B0aW9uYWw8aW50PiB0YWJJbmRleCkK
IHsKICAgICBpZiAoIXRhYkluZGV4KSB7CkBAIC0yNDIyLDEwICsyNDI5LDE2IEBAIFNoYWRvd1Jv
b3QmIEVsZW1lbnQ6OmVuc3VyZVVzZXJBZ2VudFNoYWQKICAgICByZXR1cm4gc2hhZG93OwogfQog
CitpbmxpbmUgdm9pZCBOb2RlOjpzZXRDdXN0b21FbGVtZW50U3RhdGUoQ3VzdG9tRWxlbWVudFN0
YXRlIHN0YXRlKQoreworICAgIGF1dG8gYml0ZmllbGRzID0gcmFyZURhdGFCaXRmaWVsZHMoKTsK
KyAgICBiaXRmaWVsZHMuY3VzdG9tRWxlbWVudFN0YXRlID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+
KHN0YXRlKTsKKyAgICBzZXRSYXJlRGF0YUJpdGZpZWxkcyhiaXRmaWVsZHMpOworfQorCiB2b2lk
IEVsZW1lbnQ6OnNldElzRGVmaW5lZEN1c3RvbUVsZW1lbnQoSlNDdXN0b21FbGVtZW50SW50ZXJm
YWNlJiBlbGVtZW50SW50ZXJmYWNlKQogewotICAgIGNsZWFyRmxhZyhJc0VkaXRpbmdUZXh0T3JV
bmRlZmluZWRDdXN0b21FbGVtZW50RmxhZyk7Ci0gICAgc2V0RmxhZyhJc0N1c3RvbUVsZW1lbnQp
OworICAgIHNldEN1c3RvbUVsZW1lbnRTdGF0ZShDdXN0b21FbGVtZW50U3RhdGU6OkN1c3RvbSk7
CiAgICAgYXV0byYgZGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGlmICghZGF0
YS5jdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZSgpKQogICAgICAgICBkYXRhLnNldEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblF1ZXVlKG1ha2VVbmlxdWU8Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU+
KGVsZW1lbnRJbnRlcmZhY2UpKTsKQEAgLTI0NDIsOCArMjQ1NSw4IEBAIHZvaWQgRWxlbWVudDo6
c2V0SXNGYWlsZWRDdXN0b21FbGVtZW50KCkKIHZvaWQgRWxlbWVudDo6c2V0SXNGYWlsZWRDdXN0
b21FbGVtZW50V2l0aG91dENsZWFyaW5nUmVhY3Rpb25RdWV1ZSgpCiB7CiAgICAgQVNTRVJUKGlz
VW5kZWZpbmVkQ3VzdG9tRWxlbWVudCgpKTsKLSAgICBBU1NFUlQoZ2V0RmxhZyhJc0VkaXRpbmdU
ZXh0T3JVbmRlZmluZWRDdXN0b21FbGVtZW50RmxhZykpOwotICAgIGNsZWFyRmxhZyhJc0N1c3Rv
bUVsZW1lbnQpOworICAgIEFTU0VSVChjdXN0b21FbGVtZW50U3RhdGUoKSA9PSBDdXN0b21FbGVt
ZW50U3RhdGU6OlVuZGVmaW5lZCk7CisgICAgc2V0Q3VzdG9tRWxlbWVudFN0YXRlKEN1c3RvbUVs
ZW1lbnRTdGF0ZTo6RmFpbGVkKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENo
YW5nZUN1c3RvbUVsZW1lbnRTdGF0ZSgqdGhpcyk7CiB9CiAKQEAgLTI0NTksOSArMjQ3Miw4IEBA
IHZvaWQgRWxlbWVudDo6Y2xlYXJSZWFjdGlvblF1ZXVlRnJvbUZhaWwKIAogdm9pZCBFbGVtZW50
OjpzZXRJc0N1c3RvbUVsZW1lbnRVcGdyYWRlQ2FuZGlkYXRlKCkKIHsKLSAgICBBU1NFUlQoIWdl
dEZsYWcoSXNDdXN0b21FbGVtZW50KSk7Ci0gICAgc2V0RmxhZyhJc0N1c3RvbUVsZW1lbnQpOwot
ICAgIHNldEZsYWcoSXNFZGl0aW5nVGV4dE9yVW5kZWZpbmVkQ3VzdG9tRWxlbWVudEZsYWcpOwor
ICAgIEFTU0VSVChjdXN0b21FbGVtZW50U3RhdGUoKSA9PSBDdXN0b21FbGVtZW50U3RhdGU6OlVu
Y3VzdG9taXplZCk7CisgICAgc2V0Q3VzdG9tRWxlbWVudFN0YXRlKEN1c3RvbUVsZW1lbnRTdGF0
ZTo6VW5kZWZpbmVkKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZUN1
c3RvbUVsZW1lbnRTdGF0ZSgqdGhpcyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50UmFyZURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50UmFyZURhdGEuY3BwCShyZXZpc2lvbiAyNjY3MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudFJhcmVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsNiBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU2FtZVNpemVBc0VsZW1lbnRSYXJlRGF0YSA6IE5v
ZGVSYXJlRGF0YSB7Ci0gICAgaW50IHRhYkluZGV4OwotICAgIHVuc2lnbmVkIHNob3J0IGNoaWxk
SW5kZXg7CiAgICAgTGF5b3V0U2l6ZSBzaXplRm9yUmVzaXppbmc7CiAgICAgSW50UG9pbnQgc2F2
ZWRMYXllclNjcm9sbFBvc2l0aW9uOwogICAgIHZvaWQqIHBvaW50ZXJzWzExXTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgJKHJldmlzaW9uIDI2NjcxNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMTU4LDkg
KzE1OCw2IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGludCBtX3VudXN1YWxU
YWJJbmRleCB7IDAgfTsKLSAgICB1bnNpZ25lZCBzaG9ydCBtX2NoaWxkSW5kZXggeyAwIH07Ci0K
ICAgICBMYXlvdXRTaXplIG1fbWluaW11bVNpemVGb3JSZXNpemluZzsKICAgICBJbnRQb2ludCBt
X3NhdmVkTGF5ZXJTY3JvbGxQb3NpdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IG1fY29tcHV0ZWRTdHlsZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDI2Njcx
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEz
LDkgKzQxMyw5IEBAIHZvaWQgTm9kZTo6d2lsbEJlRGVsZXRlZEZyb20oRG9jdW1lbnQmIGQKIHZv
aWQgTm9kZTo6bWF0ZXJpYWxpemVSYXJlRGF0YSgpCiB7CiAgICAgaWYgKGlzPEVsZW1lbnQ+KCp0
aGlzKSkKLSAgICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6dW5pcXVlX3B0cjxOb2RlUmFyZURhdGEs
IE5vZGVSYXJlRGF0YURlbGV0ZXI+KG5ldyBFbGVtZW50UmFyZURhdGEpOworICAgICAgICBtX3Jh
cmVEYXRhV2l0aEJpdGZpZWxkcy5zZXRQb2ludGVyKHN0ZDo6dW5pcXVlX3B0cjxOb2RlUmFyZURh
dGEsIE5vZGVSYXJlRGF0YURlbGV0ZXI+KG5ldyBFbGVtZW50UmFyZURhdGEpKTsKICAgICBlbHNl
Ci0gICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6OnVuaXF1ZV9wdHI8Tm9kZVJhcmVEYXRhLCBOb2Rl
UmFyZURhdGFEZWxldGVyPihuZXcgTm9kZVJhcmVEYXRhKTsKKyAgICAgICAgbV9yYXJlRGF0YVdp
dGhCaXRmaWVsZHMuc2V0UG9pbnRlcihzdGQ6OnVuaXF1ZV9wdHI8Tm9kZVJhcmVEYXRhLCBOb2Rl
UmFyZURhdGFEZWxldGVyPihuZXcgTm9kZVJhcmVEYXRhKSk7CiB9CiAKIGlubGluZSB2b2lkIE5v
ZGU6Ok5vZGVSYXJlRGF0YURlbGV0ZXI6Om9wZXJhdG9yKCkoTm9kZVJhcmVEYXRhKiByYXJlRGF0
YSkgY29uc3QKQEAgLTQzMSw3ICs0MzEsNyBAQCB2b2lkIE5vZGU6OmNsZWFyUmFyZURhdGEoKQog
ICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKICAgICBBU1NFUlQoIXRyYW5zaWVudE11dGF0aW9u
T2JzZXJ2ZXJSZWdpc3RyeSgpIHx8IHRyYW5zaWVudE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgp
LT5pc0VtcHR5KCkpOwogCi0gICAgbV9yYXJlRGF0YSA9IG51bGxwdHI7CisgICAgbV9yYXJlRGF0
YVdpdGhCaXRmaWVsZHMuc2V0UG9pbnRlcihudWxscHRyKTsKIH0KIAogYm9vbCBOb2RlOjppc05v
ZGUoKSBjb25zdApAQCAtMjU3MywyMyArMjU3MywyNCBAQCB2b2lkIE5vZGU6OnJlbW92ZWRMYXN0
UmVmKCkKICAgICBkZWxldGUgdGhpczsKIH0KIAotdW5zaWduZWQgTm9kZTo6Y29ubmVjdGVkU3Vi
ZnJhbWVDb3VudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyByYXJlRGF0
YSgpLT5jb25uZWN0ZWRTdWJmcmFtZUNvdW50KCkgOiAwOwotfQotCiB2b2lkIE5vZGU6OmluY3Jl
bWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQodW5zaWduZWQgYW1vdW50KQogeworICAgIHN0YXRp
Y19hc3NlcnQoUmFyZURhdGFCaXRGaWVsZHMgeyBQYWdlOjptYXhOdW1iZXJPZkZyYW1lcywgMCwg
MCB9LmNvbm5lY3RlZFN1YmZyYW1lQ291bnQgPT0gUGFnZTo6bWF4TnVtYmVyT2ZGcmFtZXMsICJj
b25uZWN0ZWRTdWJmcmFtZUNvdW50IG11c3QgZml0IFBhZ2U6Om1heE51bWJlck9mRnJhbWVzIik7
CisKICAgICBBU1NFUlQoaXNDb250YWluZXJOb2RlKCkpOwotICAgIGVuc3VyZVJhcmVEYXRhKCku
aW5jcmVtZW50Q29ubmVjdGVkU3ViZnJhbWVDb3VudChhbW91bnQpOworICAgIGF1dG8gYml0Zmll
bGRzID0gcmFyZURhdGFCaXRmaWVsZHMoKTsKKyAgICBiaXRmaWVsZHMuY29ubmVjdGVkU3ViZnJh
bWVDb3VudCArPSBhbW91bnQ7CisgICAgUkVMRUFTRV9BU1NFUlQoYml0ZmllbGRzLmNvbm5lY3Rl
ZFN1YmZyYW1lQ291bnQgPT0gcmFyZURhdGFCaXRmaWVsZHMoKS5jb25uZWN0ZWRTdWJmcmFtZUNv
dW50ICsgYW1vdW50KTsKKyAgICBzZXRSYXJlRGF0YUJpdGZpZWxkcyhiaXRmaWVsZHMpOwogfQog
CiB2b2lkIE5vZGU6OmRlY3JlbWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQodW5zaWduZWQgYW1v
dW50KQogewotICAgIEFTU0VSVChyYXJlRGF0YSgpKTsKLSAgICBpZiAoIWhhc1JhcmVEYXRhKCkp
Ci0gICAgICAgIHJldHVybjsgLy8gRGVmZW5kIGFnYWluc3QgdHlwZSBjb25mdXNpb24gd2hlbiB0
aGUgYWJvdmUgYXNzZXJ0aW9uIGZhaWxzLiBTZWUgd2Via2l0Lm9yZy9iLzIwMDMwMC4KLSAgICBy
YXJlRGF0YSgpLT5kZWNyZW1lbnRDb25uZWN0ZWRTdWJmcmFtZUNvdW50KGFtb3VudCk7CisgICAg
QVNTRVJUKGlzQ29udGFpbmVyTm9kZSgpKTsKKyAgICBhdXRvIGJpdGZpZWxkcyA9IHJhcmVEYXRh
Qml0ZmllbGRzKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoYW1vdW50IDw9IGJpdGZpZWxkcy5jb25u
ZWN0ZWRTdWJmcmFtZUNvdW50KTsKKyAgICBiaXRmaWVsZHMuY29ubmVjdGVkU3ViZnJhbWVDb3Vu
dCAtPSBhbW91bnQ7CisgICAgc2V0UmFyZURhdGFCaXRmaWVsZHMoYml0ZmllbGRzKTsKIH0KIAog
dm9pZCBOb2RlOjp1cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1YmZyYW1lQ291bnRGb3JSZW1vdmFs
KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAkocmV2aXNpb24gMjY2NzE0KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgIlN0eWxlVmFsaWRpdHkuaCIKICNpbmNsdWRlICJUcmVlU2NvcGUuaCIKICNpbmNsdWRlIDx3
dGYvQ29tcGFjdFBvaW50ZXJUdXBsZS5oPgorI2luY2x1ZGUgPHd0Zi9Db21wYWN0VW5pcXVlUHRy
VHVwbGUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2MuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KQEAgLTIyOSwxMCArMjMwLDEwIEBA
IHB1YmxpYzoKICAgICBIVE1MU2xvdEVsZW1lbnQqIGFzc2lnbmVkU2xvdCgpIGNvbnN0OwogICAg
IEhUTUxTbG90RWxlbWVudCogYXNzaWduZWRTbG90Rm9yQmluZGluZ3MoKSBjb25zdDsKIAotICAg
IGJvb2wgaXNVbmRlZmluZWRDdXN0b21FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gaXNFbGVtZW50
Tm9kZSgpICYmIGdldEZsYWcoSXNFZGl0aW5nVGV4dE9yVW5kZWZpbmVkQ3VzdG9tRWxlbWVudEZs
YWcpOyB9Ci0gICAgYm9vbCBpc0N1c3RvbUVsZW1lbnRVcGdyYWRlQ2FuZGlkYXRlKCkgY29uc3Qg
eyByZXR1cm4gZ2V0RmxhZyhJc0N1c3RvbUVsZW1lbnQpICYmIGdldEZsYWcoSXNFZGl0aW5nVGV4
dE9yVW5kZWZpbmVkQ3VzdG9tRWxlbWVudEZsYWcpOyB9Ci0gICAgYm9vbCBpc0RlZmluZWRDdXN0
b21FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc0N1c3RvbUVsZW1lbnQpICYmICFn
ZXRGbGFnKElzRWRpdGluZ1RleHRPclVuZGVmaW5lZEN1c3RvbUVsZW1lbnRGbGFnKTsgfQotICAg
IGJvb2wgaXNGYWlsZWRDdXN0b21FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gaXNFbGVtZW50Tm9k
ZSgpICYmICFnZXRGbGFnKElzQ3VzdG9tRWxlbWVudCkgJiYgZ2V0RmxhZyhJc0VkaXRpbmdUZXh0
T3JVbmRlZmluZWRDdXN0b21FbGVtZW50RmxhZyk7IH0KKyAgICBib29sIGlzVW5kZWZpbmVkQ3Vz
dG9tRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGN1c3RvbUVsZW1lbnRTdGF0ZSgpID09IEN1c3Rv
bUVsZW1lbnRTdGF0ZTo6VW5kZWZpbmVkIHx8IGN1c3RvbUVsZW1lbnRTdGF0ZSgpID09IEN1c3Rv
bUVsZW1lbnRTdGF0ZTo6RmFpbGVkOyB9CisgICAgYm9vbCBpc0N1c3RvbUVsZW1lbnRVcGdyYWRl
Q2FuZGlkYXRlKCkgY29uc3QgeyByZXR1cm4gY3VzdG9tRWxlbWVudFN0YXRlKCkgPT0gQ3VzdG9t
RWxlbWVudFN0YXRlOjpVbmRlZmluZWQ7IH0KKyAgICBib29sIGlzRGVmaW5lZEN1c3RvbUVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiBjdXN0b21FbGVtZW50U3RhdGUoKSA9PSBDdXN0b21FbGVtZW50
U3RhdGU6OkN1c3RvbTsgfQorICAgIGJvb2wgaXNGYWlsZWRDdXN0b21FbGVtZW50KCkgY29uc3Qg
eyByZXR1cm4gY3VzdG9tRWxlbWVudFN0YXRlKCkgPT0gQ3VzdG9tRWxlbWVudFN0YXRlOjpGYWls
ZWQ7IH0KIAogICAgIC8vIFJldHVybnMgbnVsbCwgYSBjaGlsZCBvZiBTaGFkb3dSb290LCBvciBh
IGxlZ2FjeSBzaGFkb3cgcm9vdC4KICAgICBOb2RlKiBub25Cb3VuZGFyeVNoYWRvd1RyZWVSb290
Tm9kZSgpOwpAQCAtMjk2LDcgKzI5Nyw3IEBAIHB1YmxpYzoKICAgICBTdHlsZTo6VmFsaWRpdHkg
c3R5bGVWYWxpZGl0eSgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlQml0ZmllbGRzKCkuc3R5bGVWYWxp
ZGl0eSgpOyB9CiAgICAgYm9vbCBzdHlsZVJlc29sdXRpb25TaG91bGRSZWNvbXBvc2l0ZUxheWVy
KCkgY29uc3QgeyByZXR1cm4gaGFzU3R5bGVGbGFnKE5vZGVTdHlsZUZsYWc6OlN0eWxlUmVzb2x1
dGlvblNob3VsZFJlY29tcG9zaXRlTGF5ZXIpOyB9CiAgICAgYm9vbCBjaGlsZE5lZWRzU3R5bGVS
ZWNhbGMoKSBjb25zdCB7IHJldHVybiBoYXNTdHlsZUZsYWcoTm9kZVN0eWxlRmxhZzo6RGVzY2Vu
ZGFudE5lZWRzU3R5bGVSZXNvbHV0aW9uKTsgfQotICAgIGJvb2wgaXNFZGl0aW5nVGV4dCgpIGNv
bnN0IHsgcmV0dXJuIGdldEZsYWcoSXNUZXh0RmxhZykgJiYgZ2V0RmxhZyhJc0VkaXRpbmdUZXh0
T3JVbmRlZmluZWRDdXN0b21FbGVtZW50RmxhZyk7IH0KKyAgICBib29sIGlzRWRpdGluZ1RleHQo
KSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzVGV4dEZsYWcpICYmIGdldEZsYWcoSXNFZGl0aW5n
VGV4dCk7IH0KIAogICAgIHZvaWQgc2V0Q2hpbGROZWVkc1N0eWxlUmVjYWxjKCkgeyBzZXRTdHls
ZUZsYWcoTm9kZVN0eWxlRmxhZzo6RGVzY2VuZGFudE5lZWRzU3R5bGVSZXNvbHV0aW9uKTsgfQog
ICAgIHZvaWQgY2xlYXJDaGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsKQEAgLTQ5MSw3ICs0OTIsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCB1bnJlZ2lzdGVyVHJhbnNpZW50TXV0YXRpb25PYnNlcnZlcihN
dXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uJik7CiAgICAgdm9pZCBub3RpZnlNdXRhdGlvbk9i
c2VydmVyc05vZGVXaWxsRGV0YWNoKCk7CiAKLSAgICB1bnNpZ25lZCBjb25uZWN0ZWRTdWJmcmFt
ZUNvdW50KCkgY29uc3Q7CisgICAgdW5zaWduZWQgY29ubmVjdGVkU3ViZnJhbWVDb3VudCgpIGNv
bnN0IHsgcmV0dXJuIHJhcmVEYXRhQml0ZmllbGRzKCkuY29ubmVjdGVkU3ViZnJhbWVDb3VudDsg
fQogICAgIHZvaWQgaW5jcmVtZW50Q29ubmVjdGVkU3ViZnJhbWVDb3VudCh1bnNpZ25lZCBhbW91
bnQgPSAxKTsKICAgICB2b2lkIGRlY3JlbWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQodW5zaWdu
ZWQgYW1vdW50ID0gMSk7CiAgICAgdm9pZCB1cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1YmZyYW1l
Q291bnRGb3JSZW1vdmFsKCkgY29uc3Q7CkBAIC00OTksNyArNTAwLDEyIEBAIHB1YmxpYzoKIAog
I2lmIEVOQUJMRShKSVQpCiAgICAgc3RhdGljIHB0cmRpZmZfdCBub2RlRmxhZ3NNZW1vcnlPZmZz
ZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTm9kZSwgbV9ub2RlRmxhZ3MpOyB9Ci0gICAg
c3RhdGljIHB0cmRpZmZfdCByYXJlRGF0YU1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihOb2RlLCBtX3JhcmVEYXRhKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3QgcmFyZURh
dGFNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTm9kZSwgbV9yYXJlRGF0
YVdpdGhCaXRmaWVsZHMpOyB9CisjaWYgQ1BVKEFERFJFU1M2NCkKKyAgICBzdGF0aWMgdWludDY0
X3QgcmFyZURhdGFQb2ludGVyTWFzaygpIHsgcmV0dXJuIENvbXBhY3RQb2ludGVyVHVwbGU8Tm9k
ZVJhcmVEYXRhKiwgdWludDE2X3Q+Ojpwb2ludGVyTWFzazsgfQorI2Vsc2UKKyAgICBzdGF0aWMg
dWludDMyX3QgcmFyZURhdGFQb2ludGVyTWFzaygpIHsgcmV0dXJuIC0xOyB9CisjZW5kaWYKICAg
ICBzdGF0aWMgaW50MzJfdCBmbGFnSXNUZXh0KCkgeyByZXR1cm4gSXNUZXh0RmxhZzsgfQogICAg
IHN0YXRpYyBpbnQzMl90IGZsYWdJc0NvbnRhaW5lcigpIHsgcmV0dXJuIElzQ29udGFpbmVyRmxh
ZzsgfQogICAgIHN0YXRpYyBpbnQzMl90IGZsYWdJc0VsZW1lbnQoKSB7IHJldHVybiBJc0VsZW1l
bnRGbGFnOyB9CkBAIC01MjYsMTIgKzUzMiwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEhhc0V2
ZW50VGFyZ2V0RGF0YUZsYWcgPSAxIDw8IDExLAogICAgICAgICAvLyBVbnVzZWRGbGFnID0gMSA8
PCAxMiwKICAgICAgICAgLy8gVW51c2VkRmxhZyA9IDEgPDwgMTMsCisgICAgICAgIC8vIFVudXNl
ZEZsYWcgPSAxIDw8IDE0LAogCiAgICAgICAgIC8vIFRoZXNlIGJpdHMgYXJlIHVzZWQgYnkgZGVy
aXZlZCBjbGFzc2VzLCBwdWxsZWQgdXAgaGVyZSBzbyB0aGV5IGNhbgogICAgICAgICAvLyBiZSBz
dG9yZWQgaW4gdGhlIHNhbWUgbWVtb3J5IHdvcmQgYXMgdGhlIE5vZGUgYml0cyBhYm92ZS4KLSAg
ICAgICAgSXNFZGl0aW5nVGV4dE9yVW5kZWZpbmVkQ3VzdG9tRWxlbWVudEZsYWcgPSAxIDw8IDE0
LCAvLyBUZXh0IGFuZCBFbGVtZW50Ci0gICAgICAgIElzQ3VzdG9tRWxlbWVudCA9IDEgPDwgMTUs
IC8vIEVsZW1lbnQKLSAgICAgICAgSGFzRm9jdXNXaXRoaW4gPSAxIDw8IDE2LAorICAgICAgICBJ
c0VkaXRpbmdUZXh0ID0gMSA8PCAxNSwgLy8gVGV4dAorICAgICAgICBIYXNGb2N1c1dpdGhpbiA9
IDEgPDwgMTYsIC8vIEVsZW1lbnQKICAgICAgICAgSXNMaW5rRmxhZyA9IDEgPDwgMTcsCiAgICAg
ICAgIElzVXNlckFjdGlvbkVsZW1lbnQgPSAxIDw8IDE4LAogICAgICAgICBJc1BhcnNpbmdDaGls
ZHJlbkZpbmlzaGVkRmxhZyA9IDEgPDwgMTksCkBAIC01NDcsMTQgKzU1MywxMSBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnRGbGFnID0gMSA8PCAyNiwKICNl
bmRpZgogCi0gICAgICAgIC8vIEJpdHMgMjctMjkgYXJlIGZyZWUuCi0gICAgICAgIC8vIEJpdHMg
MzAtMzE6IFRhYkluZGV4U3RhdGUKKyAgICAgICAgLy8gQml0cyAyNy0zMSBhcmUgZnJlZS4KIAog
ICAgICAgICBEZWZhdWx0Tm9kZUZsYWdzID0gSXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZEZsYWcK
ICAgICB9OwogCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzX3RhYkluZGV4U3RhdGVC
aXRPZmZzZXQgPSAzMDsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHNfdGFiSW5kZXhT
dGF0ZUJpdE1hc2sgPSAzVSA8PCBzX3RhYkluZGV4U3RhdGVCaXRPZmZzZXQ7CiAgICAgZW51bSBj
bGFzcyBUYWJJbmRleFN0YXRlIDogdWludDhfdCB7CiAgICAgICAgIE5vdFNldCA9IDAsCiAgICAg
ICAgIFplcm8gPSAxLApAQCAtNTYyLDEzICs1NjUsMzIgQEAgcHJvdGVjdGVkOgogICAgICAgICBJ
blJhcmVEYXRhID0gMywKICAgICB9OwogCisgICAgZW51bSBjbGFzcyBDdXN0b21FbGVtZW50U3Rh
dGUgOiB1aW50OF90IHsKKyAgICAgICAgVW5jdXN0b21pemVkID0gMCwKKyAgICAgICAgVW5kZWZp
bmVkID0gMSwKKyAgICAgICAgQ3VzdG9tID0gMiwKKyAgICAgICAgRmFpbGVkID0gMywKKyAgICB9
OworCisgICAgc3RydWN0IFJhcmVEYXRhQml0RmllbGRzIHsKKyAgICAgICAgdWludDE2X3QgY29u
bmVjdGVkU3ViZnJhbWVDb3VudCA6IDEwOworICAgICAgICB1aW50MTZfdCB0YWJJbmRleFN0YXRl
IDogMjsKKyAgICAgICAgdWludDE2X3QgY3VzdG9tRWxlbWVudFN0YXRlIDogMjsKKyAgICB9Owor
CiAgICAgYm9vbCBnZXRGbGFnKE5vZGVGbGFncyBtYXNrKSBjb25zdCB7IHJldHVybiBtX25vZGVG
bGFncyAmIG1hc2s7IH0KICAgICB2b2lkIHNldEZsYWcoYm9vbCBmLCBOb2RlRmxhZ3MgbWFzaykg
Y29uc3QgeyBtX25vZGVGbGFncyA9IChtX25vZGVGbGFncyAmIH5tYXNrKSB8ICgtKGludDMyX3Qp
ZiAmIG1hc2spOyB9IAogICAgIHZvaWQgc2V0RmxhZyhOb2RlRmxhZ3MgbWFzaykgY29uc3QgeyBt
X25vZGVGbGFncyB8PSBtYXNrOyB9IAogICAgIHZvaWQgY2xlYXJGbGFnKE5vZGVGbGFncyBtYXNr
KSBjb25zdCB7IG1fbm9kZUZsYWdzICY9IH5tYXNrOyB9CiAKLSAgICBUYWJJbmRleFN0YXRlIHRh
YkluZGV4U3RhdGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUYWJJbmRleFN0YXRlPigo
bV9ub2RlRmxhZ3MgJiBzX3RhYkluZGV4U3RhdGVCaXRNYXNrKSA+PiBzX3RhYkluZGV4U3RhdGVC
aXRPZmZzZXQpOyB9Ci0gICAgdm9pZCBzZXRUYWJJbmRleFN0YXRlKFRhYkluZGV4U3RhdGUgc3Rh
dGUpIHsgbV9ub2RlRmxhZ3MgPSAobV9ub2RlRmxhZ3MgJiB+c190YWJJbmRleFN0YXRlQml0TWFz
aykgfCAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHN0YXRlKSA8PCBzX3RhYkluZGV4U3RhdGVCaXRP
ZmZzZXQpOyB9CisgICAgUmFyZURhdGFCaXRGaWVsZHMgcmFyZURhdGFCaXRmaWVsZHMoKSBjb25z
dCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8UmFyZURhdGFCaXRGaWVsZHM+KG1fcmFyZURhdGFXaXRo
Qml0ZmllbGRzLnR5cGUoKSk7IH0KKyAgICB2b2lkIHNldFJhcmVEYXRhQml0ZmllbGRzKFJhcmVE
YXRhQml0RmllbGRzIGJpdGZpZWxkcykgeyBtX3JhcmVEYXRhV2l0aEJpdGZpZWxkcy5zZXRUeXBl
KGJpdHdpc2VfY2FzdDx1aW50MTZfdD4oYml0ZmllbGRzKSk7IH0KKworICAgIFRhYkluZGV4U3Rh
dGUgdGFiSW5kZXhTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRhYkluZGV4U3Rh
dGU+KHJhcmVEYXRhQml0ZmllbGRzKCkudGFiSW5kZXhTdGF0ZSk7IH0KKyAgICB2b2lkIHNldFRh
YkluZGV4U3RhdGUoVGFiSW5kZXhTdGF0ZSk7CisKKyAgICBDdXN0b21FbGVtZW50U3RhdGUgY3Vz
dG9tRWxlbWVudFN0YXRlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q3VzdG9tRWxlbWVu
dFN0YXRlPihyYXJlRGF0YUJpdGZpZWxkcygpLmN1c3RvbUVsZW1lbnRTdGF0ZSk7IH0KKyAgICB2
b2lkIHNldEN1c3RvbUVsZW1lbnRTdGF0ZShDdXN0b21FbGVtZW50U3RhdGUpOwogCiAgICAgYm9v
bCBpc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc1Bh
cnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZyk7IH0KICAgICB2b2lkIHNldElzUGFyc2luZ0NoaWxk
cmVuRmluaXNoZWQoKSB7IHNldEZsYWcoSXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZEZsYWcpOyB9
CkBAIC01ODYsNyArNjA4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBDcmVhdGVTVkdFbGVtZW50
ID0gQ3JlYXRlRWxlbWVudCB8IElzU1ZHRmxhZyB8IEhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxi
YWNrc0ZsYWcsCiAgICAgICAgIENyZWF0ZU1hdGhNTEVsZW1lbnQgPSBDcmVhdGVFbGVtZW50IHwg
SXNNYXRoTUxGbGFnLAogICAgICAgICBDcmVhdGVEb2N1bWVudCA9IENyZWF0ZUNvbnRhaW5lciB8
IElzRG9jdW1lbnROb2RlRmxhZyB8IElzQ29ubmVjdGVkRmxhZywKLSAgICAgICAgQ3JlYXRlRWRp
dGluZ1RleHQgPSBDcmVhdGVUZXh0IHwgSXNFZGl0aW5nVGV4dE9yVW5kZWZpbmVkQ3VzdG9tRWxl
bWVudEZsYWcsCisgICAgICAgIENyZWF0ZUVkaXRpbmdUZXh0ID0gQ3JlYXRlVGV4dCB8IElzRWRp
dGluZ1RleHQsCiAgICAgfTsKICAgICBOb2RlKERvY3VtZW50JiwgQ29uc3RydWN0aW9uVHlwZSk7
CiAKQEAgLTY0OCw4ICs2NzAsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRk
U3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdCB7IH0KIAot
ICAgIGJvb2wgaGFzUmFyZURhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fcmFyZURhdGE7IH0KLSAg
ICBOb2RlUmFyZURhdGEqIHJhcmVEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlRGF0YS5nZXQo
KTsgfQorICAgIGJvb2wgaGFzUmFyZURhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fcmFyZURhdGFX
aXRoQml0ZmllbGRzLnBvaW50ZXIoKTsgfQorICAgIE5vZGVSYXJlRGF0YSogcmFyZURhdGEoKSBj
b25zdCB7IHJldHVybiBtX3JhcmVEYXRhV2l0aEJpdGZpZWxkcy5wb2ludGVyKCk7IH0KICAgICBO
b2RlUmFyZURhdGEmIGVuc3VyZVJhcmVEYXRhKCk7CiAgICAgdm9pZCBjbGVhclJhcmVEYXRhKCk7
CiAKQEAgLTcwNSw3ICs3MjcsNyBAQCBwcml2YXRlOgogICAgIE5vZGUqIG1fcHJldmlvdXMgeyBu
dWxscHRyIH07CiAgICAgTm9kZSogbV9uZXh0IHsgbnVsbHB0ciB9OwogICAgIENvbXBhY3RQb2lu
dGVyVHVwbGU8UmVuZGVyT2JqZWN0KiwgdWludDE2X3Q+IG1fcmVuZGVyZXJXaXRoU3R5bGVGbGFn
czsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Tm9kZVJhcmVEYXRhLCBOb2RlUmFyZURhdGFEZWxldGVy
PiBtX3JhcmVEYXRhOworICAgIENvbXBhY3RVbmlxdWVQdHJUdXBsZTxOb2RlUmFyZURhdGEsIHVp
bnQxNl90LCBOb2RlUmFyZURhdGFEZWxldGVyPiBtX3JhcmVEYXRhV2l0aEJpdGZpZWxkczsKIH07
CiAKIGJvb2wgY29ubmVjdGVkSW5TYW1lVHJlZVNjb3BlKGNvbnN0IE5vZGUqLCBjb25zdCBOb2Rl
Kik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmNwcAkocmV2aXNpb24gMjY2NzEz
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDcgKzM2LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFNhbWVTaXpl
QXNOb2RlUmFyZURhdGEgewotICAgIHVuc2lnbmVkIG1fZnJhbWVDb3VudEFuZElzRWxlbWVudFJh
cmVEYXRhRmxhZzsKKyAgICB1aW50MzJfdCBtX3RhYkluZGV4OworICAgIHVpbnQzMl90IG1fY2hp
bGRJbmRleEFuZElzRWxlbWVudFJhcmVEYXRhRmxhZzsKICAgICB2b2lkKiBtX3BvaW50ZXJbMl07
CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCShyZXZpc2lvbiAyNjY3MTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI0NSwzMyArMjQ1LDMxIEBAIGNsYXNzIE5vZGVSYXJlRGF0YSB7CiBwdWJsaWM6CiAjaWYgZGVm
aW5lZChEVU1QX05PREVfU1RBVElTVElDUykgJiYgRFVNUF9OT0RFX1NUQVRJU1RJQ1MKICAgICBl
bnVtIGNsYXNzIFVzZVR5cGUgOiB1aW50MzJfdCB7Ci0gICAgICAgIENvbm5lY3RlZEZyYW1lQ291
bnQgPSAxIDw8IDAsCi0gICAgICAgIE5vZGVMaXN0ID0gMSA8PCAxLAotICAgICAgICBNdXRhdGlv
bk9ic2VydmVyID0gMSA8PCAyLAotICAgICAgICBUYWJJbmRleCA9IDEgPDwgMywKLSAgICAgICAg
TWluaW11bVNpemUgPSAxIDw8IDQsCi0gICAgICAgIFNjcm9sbGluZ1Bvc2l0aW9uID0gMSA8PCA1
LAotICAgICAgICBDb21wdXRlZFN0eWxlID0gMSA8PCA2LAotICAgICAgICBEYXRhc2V0ID0gMSA8
PCA3LAotICAgICAgICBDbGFzc0xpc3QgPSAxIDw8IDgsCi0gICAgICAgIFNoYWRvd1Jvb3QgPSAx
IDw8IDksCi0gICAgICAgIEN1c3RvbUVsZW1lbnRRdWV1ZSA9IDEgPDwgMTAsCi0gICAgICAgIEF0
dHJpYnV0ZU1hcCA9IDEgPDwgMTEsCi0gICAgICAgIEludGVyYWN0aW9uT2JzZXJ2ZXIgPSAxIDw8
IDEyLAotICAgICAgICBSZXNpemVPYnNlcnZlciA9IDEgPDwgMTMsCi0gICAgICAgIEFuaW1hdGlv
bnMgPSAxIDw8IDE0LAotICAgICAgICBQc2V1ZG9FbGVtZW50cyA9IDEgPDwgMTUsCi0gICAgICAg
IFN0eWxlTWFwID0gMSA8PCAxNiwKLSAgICAgICAgUGFydExpc3QgPSAxIDw8IDE3LAotICAgICAg
ICBQYXJ0TmFtZXMgPSAxIDw8IDE4LAorICAgICAgICBOb2RlTGlzdCA9IDEgPDwgMCwKKyAgICAg
ICAgTXV0YXRpb25PYnNlcnZlciA9IDEgPDwgMSwKKyAgICAgICAgVGFiSW5kZXggPSAxIDw8IDIs
CisgICAgICAgIE1pbmltdW1TaXplID0gMSA8PCAzLAorICAgICAgICBTY3JvbGxpbmdQb3NpdGlv
biA9IDEgPDwgNCwKKyAgICAgICAgQ29tcHV0ZWRTdHlsZSA9IDEgPDwgNSwKKyAgICAgICAgRGF0
YXNldCA9IDEgPDwgNiwKKyAgICAgICAgQ2xhc3NMaXN0ID0gMSA8PCA3LAorICAgICAgICBTaGFk
b3dSb290ID0gMSA8PCA4LAorICAgICAgICBDdXN0b21FbGVtZW50UXVldWUgPSAxIDw8IDksCisg
ICAgICAgIEF0dHJpYnV0ZU1hcCA9IDEgPDwgMTAsCisgICAgICAgIEludGVyYWN0aW9uT2JzZXJ2
ZXIgPSAxIDw8IDExLAorICAgICAgICBSZXNpemVPYnNlcnZlciA9IDEgPDwgMTIsCisgICAgICAg
IEFuaW1hdGlvbnMgPSAxIDw8IDEzLAorICAgICAgICBQc2V1ZG9FbGVtZW50cyA9IDEgPDwgMTQs
CisgICAgICAgIFN0eWxlTWFwID0gMSA8PCAxNSwKKyAgICAgICAgUGFydExpc3QgPSAxIDw8IDE2
LAorICAgICAgICBQYXJ0TmFtZXMgPSAxIDw8IDE3LAogICAgIH07CiAjZW5kaWYKIAogICAgIGVu
dW0gY2xhc3MgVHlwZSB7IEVsZW1lbnQsIE5vZGUgfTsKIAogICAgIE5vZGVSYXJlRGF0YShUeXBl
IHR5cGUgPSBUeXBlOjpOb2RlKQotICAgICAgICA6IG1fY29ubmVjdGVkRnJhbWVDb3VudCgwKQot
ICAgICAgICAsIG1faXNFbGVtZW50UmFyZURhdGEodHlwZSA9PSBUeXBlOjpFbGVtZW50KQorICAg
ICAgICA6IG1faXNFbGVtZW50UmFyZURhdGEodHlwZSA9PSBUeXBlOjpFbGVtZW50KQogICAgIHsK
ICAgICB9CiAKQEAgLTI5NCwyNCArMjkyLDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICpt
X211dGF0aW9uT2JzZXJ2ZXJEYXRhOwogICAgIH0KIAotICAgIHVuc2lnbmVkIGNvbm5lY3RlZFN1
YmZyYW1lQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3RlZEZyYW1lQ291bnQ7IH0KLSAg
ICB2b2lkIGluY3JlbWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQodW5zaWduZWQgYW1vdW50KQot
ICAgIHsKLSAgICAgICAgbV9jb25uZWN0ZWRGcmFtZUNvdW50ICs9IGFtb3VudDsKLSAgICB9Ci0g
ICAgdm9pZCBkZWNyZW1lbnRDb25uZWN0ZWRTdWJmcmFtZUNvdW50KHVuc2lnbmVkIGFtb3VudCkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2Nvbm5lY3RlZEZyYW1lQ291bnQpOwotICAgICAgICBB
U1NFUlQoYW1vdW50IDw9IG1fY29ubmVjdGVkRnJhbWVDb3VudCk7Ci0gICAgICAgIG1fY29ubmVj
dGVkRnJhbWVDb3VudCAtPSBhbW91bnQ7Ci0gICAgfQotCiAjaWYgRFVNUF9OT0RFX1NUQVRJU1RJ
Q1MKICAgICBPcHRpb25TZXQ8VXNlVHlwZT4gdXNlVHlwZXMoKSBjb25zdAogICAgIHsKICAgICAg
ICAgT3B0aW9uU2V0PFVzZVR5cGU+IHJlc3VsdDsKLSAgICAgICAgaWYgKG1fY29ubmVjdGVkRnJh
bWVDb3VudCkKLSAgICAgICAgICAgIHJlc3VsdC5hZGQoVXNlVHlwZTo6Q29ubmVjdGVkRnJhbWVD
b3VudCk7CiAgICAgICAgIGlmIChtX25vZGVMaXN0cykKICAgICAgICAgICAgIHJlc3VsdC5hZGQo
VXNlVHlwZTo6Tm9kZUxpc3QpOwogICAgICAgICBpZiAobV9tdXRhdGlvbk9ic2VydmVyRGF0YSkK
QEAgLTMyMCw5ICszMDQsMTMgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogCitwcm90ZWN0ZWQ6
CisgICAgLy8gVXNlZCBieSBFbGVtZW50UmFyZURhdGEuIERlZmluZWQgaGVyZSBmb3IgYmV0dGVy
IHBhY2tpbmcgaW4gNjQtYml0LgorICAgIGludCBtX3VudXN1YWxUYWJJbmRleCB7IDAgfTsKKyAg
ICB1bnNpZ25lZCBzaG9ydCBtX2NoaWxkSW5kZXggeyAwIH07CisKIHByaXZhdGU6Ci0gICAgdW5z
aWduZWQgbV9jb25uZWN0ZWRGcmFtZUNvdW50IDogMzE7IC8vIE11c3QgZml0IFBhZ2U6Om1heE51
bWJlck9mRnJhbWVzLgotICAgIHVuc2lnbmVkIG1faXNFbGVtZW50UmFyZURhdGEgOiAxOworICAg
IGJvb2wgbV9pc0VsZW1lbnRSYXJlRGF0YTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxOb2RlTGlz
dHNOb2RlRGF0YT4gbV9ub2RlTGlzdHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5vZGVNdXRhdGlv
bk9ic2VydmVyRGF0YT4gbV9tdXRhdGlvbk9ic2VydmVyRGF0YTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>