<?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>231695</bug_id>
          
          <creation_ts>2021-10-13 13:04:35 -0700</creation_ts>
          <short_desc>Use a ScrollAnimation for rubber-banding</short_desc>
          <delta_ts>2021-10-13 17:19:45 -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>Scrolling</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>mrobinson</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1803926</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-10-13 13:04:35 -0700</bug_when>
    <thetext>Use a ScrollAnimation for rubber-banding</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803929</commentid>
    <comment_count>1</comment_count>
      <attachid>441124</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-10-13 13:11:26 -0700</bug_when>
    <thetext>Created attachment 441124
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803932</commentid>
    <comment_count>2</comment_count>
      <attachid>441125</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-10-13 13:16:05 -0700</bug_when>
    <thetext>Created attachment 441125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804052</commentid>
    <comment_count>3</comment_count>
      <attachid>441125</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-10-13 16:21:06 -0700</bug_when>
    <thetext>Comment on attachment 441125
Patch

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

&gt; Source/WebCore/platform/mac/ScrollingEffectsController.mm:449
&gt; +    // Just like normal scrolling, prefer vertical rubberbanding

.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804066</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-10-13 16:57:26 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #3)
&gt; &gt; Source/WebCore/platform/mac/ScrollingEffectsController.mm:449
&gt; &gt; +    // Just like normal scrolling, prefer vertical rubberbanding
&gt; 
&gt; .

Next time :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804079</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-13 17:18:08 -0700</bug_when>
    <thetext>Committed r284136 (242956@main): &lt;https://commits.webkit.org/242956@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 441125.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804090</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-13 17:19:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/84224762&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441124</attachid>
            <date>2021-10-13 13:11:26 -0700</date>
            <delta_ts>2021-10-13 13:17:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231695-20211013131125.patch</filename>
            <type>text/plain</type>
            <size>35995</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQ2NmI3M2Q0NGY2NzJm
ZDg0ZGVmM2M0MTQ1ODgyMDYxNzNhOWQ1MC4uZWU2OWNkYmU1YzU5Nzc0ZmQ2ODc4ODI0ZjNhODQ5
YTJhY2RlYmU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIxLTEwLTEzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBhIFNjcm9s
bEFuaW1hdGlvbiBmb3IgcnViYmVyLWJhbmRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTY5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZSBhbmltYXRpb24gdGhhdCBydW5zIHdoZW4gcnViYmVy
LWJhbmRpbmcgKHdoZW4geW91IG1vbWVudHVtLXNjcm9sbCBpbnRvIGFuIGVkZ2UsCisgICAgICAg
IG9yIHN0cmV0Y2ggYW5kIHJlbGVhc2UpIHdhcyBjb2RlIGluIHVwZGF0ZVJ1YmJlckJhbmRBbmlt
YXRpbmdTdGF0ZSgpLiBSZXBhY2thZ2UKKyAgICAgICAgdGhhdCBjb2RlIGFzIGEgU2Nyb2xsQW5p
bWF0aW9uIHN1YmNsYXNzLCB3aGljaCBhbGxvd3MgaXQgdG8gc2hhcmUgY29kZSB3aXRoIG90aGVy
CisgICAgICAgIHR5cGVzIG9mIHNjcm9sbCBhbmltYXRpb24uCisKKyAgICAgICAgU2Nyb2xsQW5p
bWF0aW9uUnViYmVyQmFuZCBuZWVkcyB0byBkbyBub24tY2xhbXBlZCBzY3JvbGxzLCBzbyBhZGQg
YSB3YXkgZm9yIFNjcm9sbEFuaW1hdGlvbnMKKyAgICAgICAgdG8gc3RhdGUgdGhhdCB0aGV5IGFs
bG93IHRoaXMuCisgICAgICAgIAorICAgICAgICBTdGFuZGFyZGl6ZSB0aGUgY2FwaXRhbGl6YXRp
b24gb2YgUnViYmVyQmFuZC4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpzY3JvbGxUbyk6CisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaDoKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVNYWM6OndpbGxEb1Byb2dyYW1tYXRpY1Njcm9sbCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpkaWRTdG9wUnViYmVyQmFu
ZEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTWFjOjpkaWRTdG9wUnViYmVyYmFuZFNuYXBBbmltYXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbjo6Y2xhbXBpbmcgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdGFydE1vbWVudHVtU2Nyb2xsV2l0
aEluaXRpYWxWZWxvY2l0eSk6IE5lZWQgdG8gYmUgc3VyZQorICAgICAgICB0byBzdG9wKCkgYW55
IGV4aXN0aW5nIGFuaW1hdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyOjpzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnNjcm9sbEFuaW1hdGlvbldpbGxTdGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c2Nyb2xsQW5pbWF0
aW9uRGlkRW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXJDbGllbnQ6
OndpbGxTdGFydFJ1YmJlckJhbmRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXJDbGllbnQ6OmRpZFN0b3BSdWJiZXJCYW5kQW5pbWF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyQ2xpZW50Ojp3aWxs
U3RhcnRSdWJiZXJCYW5kU25hcEFuaW1hdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlckNsaWVudDo6ZGlkU3RvcFJ1YmJlcmJhbmRTbmFw
QW5pbWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0
aW9uUnViYmVyQmFuZC5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5p
bWF0aW9uUnViYmVyQmFuZC5tbTogQWRkZWQuCisgICAgICAgIChlbGFzdGljRGVsdGFGb3JUaW1l
RGVsdGEpOgorICAgICAgICAoV2ViQ29yZTo6cm91bmRUb3dhcmRaZXJvKToKKyAgICAgICAgKFdl
YkNvcmU6OnJvdW5kVG9EZXZpY2VQaXhlbFRvd2FyZFplcm8pOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0aW9uUnViYmVyQmFuZDo6U2Nyb2xsQW5pbWF0aW9uUnViYmVyQmFuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25SdWJiZXJCYW5kOjpzdGFydFJ1YmJlckJh
bmRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uUnViYmVyQmFu
ZDo6cmV0YXJnZXRBY3RpdmVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5p
bWF0aW9uUnViYmVyQmFuZDo6dXBkYXRlU2Nyb2xsRXh0ZW50cyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRpb25SdWJiZXJCYW5kOjpzZXJ2aWNlQW5pbWF0aW9uKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW06CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6aGFuZGxlV2hlZWxFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6dXBkYXRlUnViYmVy
QmFuZEFuaW1hdGluZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyOjpzdG9wUnViYmVyQmFuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlcjo6c3RhcnRSdWJiZXJCYW5kQW5pbWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdG9wUnViYmVyQmFuZEFuaW1h
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6d2ls
bFN0YXJ0UnViYmVyQmFuZEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlcjo6ZGlkU3RvcFJ1YmJlckJhbmRBbmltYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0YXJ0UnViYmVyQmFuZEFuaW1h
dGlvbklmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmVsYXN0aWNEZWx0YUZvclRpbWVE
ZWx0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpyb3VuZFRvd2FyZFplcm8pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6cm91bmRUb0RldmljZVBpeGVsVG93YXJkWmVybyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c3Rv
cFJ1YmJlcmJhbmRpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXI6OnN0YXJ0UnViYmVyYmFuZEFuaW1hdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c3RvcFJ1YmJlcmJhbmRB
bmltYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXI6OnN0YXJ0UnViYmVyYmFuZEFuaW1hdGlvbklmTmVjZXNzYXJ5KTogRGVsZXRlZC4K
KwogMjAyMS0xMC0xMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbV0sxXSBUZXN0cyBmb3Igc21vb3RoIHNjcm9sbGluZyBvZiBhIHdpbmRvdyBmYWls
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCBhNGMwYTc2MjdjMzc4MWRmY2QwNDkwNmZjNTIz
MzA5YzkwNzMwYzJjLi43NjA0MWZjZTY2Y2I5NGRhNmQ1NWIwNGI5MzkzOGU3M2JmOGZjOThjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTQ5MSwxMCArNDkxLDExIEBAIHBsYXRmb3JtL21h
Yy9Qb3dlck9ic2VydmVyTWFjLmNwcAogcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbQog
cGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5tbQogcGxhdGZvcm0vbWFjL1Njcm9sbEFu
aW1hdG9yTWFjLm1tIEBuby11bmlmeQotcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyLm1tCitwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0aW9uUnViYmVyQmFuZC5tbQogcGxh
dGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0KIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJzQ29udHJv
bGxlck1hYy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbSBA
bm8tdW5pZnkKK3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5tbQogcGxh
dGZvcm0vbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbQogcGxhdGZvcm0vbWFj
L1NlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMubW0KIHBsYXRmb3JtL21hYy9TdHJpbmdVdGls
aXRpZXMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA3NTE5NzRhMmI3ZmYzNzZlMDVmYzExM2JlN2QzNjcxN2U3YzkxYTc1Li44
ZmRhMzQ3NjYyOTAxYzdiMzEzZTlhY2M0ZmY5NGVkMzJlOTIyNzhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MjE0LDYgKzYy
MTQsOCBAQAogCQkwRjM2RTczODFCRDE4NEI5MDAyREI4OTEgLyogTGF5b3V0U2l6ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXlvdXRTaXplLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzN0YwODMyMjAyQUM4RjAwQTg5QzBCIC8qIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjM3RjA4NDIyMDJBQ0I3MDBBODlDMEIgLyogU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGMzgxODZBMjcwOEQyMDEwMDQxNEYzMiAvKiBTY3JvbGxBbmltYXRpb25SdWJiZXJCYW5kLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsQW5pbWF0aW9uUnViYmVyQmFuZC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzODE4NkMyNzA4RDIwMjAwNDE0RjMyIC8qIFNj
cm9sbEFuaW1hdGlvblJ1YmJlckJhbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsQW5pbWF0aW9u
UnViYmVyQmFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNERDQ0RDEyRjVF
QTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTaGFkb3dCbHVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEYzREQ0NEUxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2hhZG93Qmx1ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjNGMEU1NzE1NzAzMEMzMDA2REE1N0YgLyogUmVuZGVyR2VvbWV0cnlNYXAuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyR2VvbWV0cnlNYXAuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjIzNTIsNiArMjIzNTQsOCBAQAogCQkJ
CTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcxQyAvKiBQb3dlck9ic2VydmVyTWFjLmNwcCAqLywKIAkJ
CQk0NkRCQjY0RTFBQjhDOTZGMDBEOUE4MTMgLyogUG93ZXJPYnNlcnZlck1hYy5oICovLAogCQkJ
CTAwODFGRUZFMTZCMEEyQjYwMDhBQUE3QSAvKiBQdWJsaWNTdWZmaXhNYWMubW0gKi8sCisJCQkJ
MEYzODE4NkMyNzA4RDIwMjAwNDE0RjMyIC8qIFNjcm9sbEFuaW1hdGlvblJ1YmJlckJhbmQuaCAq
LywKKwkJCQkwRjM4MTg2QTI3MDhEMjAxMDA0MTRGMzIgLyogU2Nyb2xsQW5pbWF0aW9uUnViYmVy
QmFuZC5tbSAqLywKIAkJCQlCQ0FFMUZBNTEyOTM5REI3MDA0Q0IwMjYgLyogU2Nyb2xsQW5pbWF0
b3JNYWMuaCAqLywKIAkJCQlCQzUxMTU2RDEyQjE3NDlDMDBDOTY3NTQgLyogU2Nyb2xsQW5pbWF0
b3JNYWMubW0gKi8sCiAJCQkJMEYwMjI0NTQyNkYxNUQ3NTAwMDI2NUMzIC8qIFNjcm9sbGJhcnND
b250cm9sbGVyTWFjLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVNYWMuaAppbmRleCAxMTAxMjg1YTJlN2M5NGJhMTJhM2Y0NGQzZGUzOGI4Y2MxOGZiN2I1
Li41ZDg5MTVjYjM0NTRhYWVmMDE2MDMxZjA2Y2Q0NjNhMDRjZDgxMDkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmgKQEAgLTg3LDcgKzg3LDcgQEAg
cHJpdmF0ZToKIAogICAgIGJvb2wgc2hvdWxkUnViYmVyQmFuZE9uU2lkZShCb3hTaWRlKSBjb25z
dCBmaW5hbDsKICAgICB2b2lkIGltbWVkaWF0ZVNjcm9sbEJ5KGNvbnN0IEZsb2F0U2l6ZSYsIFNj
cm9sbENsYW1waW5nID0gU2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQpIGZpbmFsOwotICAgIHZvaWQg
ZGlkU3RvcFJ1YmJlcmJhbmRTbmFwQW5pbWF0aW9uKCkgZmluYWw7CisgICAgdm9pZCBkaWRTdG9w
UnViYmVyQmFuZEFuaW1hdGlvbigpIGZpbmFsOwogICAgIHZvaWQgcnViYmVyQmFuZGluZ1N0YXRl
Q2hhbmdlZChib29sKSBmaW5hbDsKICAgICB2b2lkIGFkanVzdFNjcm9sbFBvc2l0aW9uVG9Cb3Vu
ZHNJZk5lY2Vzc2FyeSgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlTWFjLm1tCmluZGV4IGIzY2Q4MTA4MDMxOTc3ODA4ZTk5ZTg1ZTZmNGZkZjFj
OWNhMjY2NjIuLjJiNzBlYTZjOTBhMzA0ODZmODkwOTcyNGI5NTU1OTVmOTc4ZDU0YzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCkBAIC0xMzEs
NyArMTMxLDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjp3
aWxsRG9Qcm9ncmFtbWF0aWNTY3JvbGwoY29uc3QgRmxvYXQKIHsKICAgICBpZiAoc2Nyb2xsUG9z
aXRpb25Jc05vdFJ1YmJlcmJhbmRpbmdFZGdlKHRhcmdldFBvc2l0aW9uKSkgewogICAgICAgICBM
T0coU2Nyb2xsaW5nLCAiU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6d2ls
bERvUHJvZ3JhbW1hdGljU2Nyb2xsKCkgLSBzY3JvbGxpbmcgYXdheSBmcm9tIHJ1YmJlcmJhbmRp
bmcgZWRnZSBzbyBzdG9wcGluZyBydWJiZXJiYW5kaW5nIik7Ci0gICAgICAgIG1fc2Nyb2xsQ29u
dHJvbGxlci5zdG9wUnViYmVyYmFuZGluZygpOworICAgICAgICBtX3Njcm9sbENvbnRyb2xsZXIu
c3RvcFJ1YmJlckJhbmRpbmcoKTsKICAgICB9CiB9CiAKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lk
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmltbWVkaWF0ZVNjcm9sbEJ5
KGNvbnN0IEZsb2F0U2l6ZSYgZAogICAgIHNjcm9sbGluZ05vZGUoKS5zY3JvbGxCeShkZWx0YSwg
Y2xhbXBpbmcpOwogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVN
YWM6OmRpZFN0b3BSdWJiZXJiYW5kU25hcEFuaW1hdGlvbigpCit2b2lkIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmRpZFN0b3BSdWJiZXJCYW5kQW5pbWF0aW9uKCkKIHsK
ICAgICAvLyBTaW5jZSB0aGUgcnViYmVyYmFuZCB0aW1lciBoYXMgc3RvcHBlZCwgdG90YWxDb250
ZW50c1NpemVGb3JSdWJiZXJCYW5kIGNhbiBiZSBzeW5jaHJvbml6ZWQgd2l0aCB0b3RhbENvbnRl
bnRzU2l6ZS4KICAgICBzY3JvbGxpbmdOb2RlKCkuc2V0VG90YWxDb250ZW50c1NpemVGb3JSdWJi
ZXJCYW5kKHRvdGFsQ29udGVudHNTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvbi5jcHAKaW5kZXggM2MyOTU5Y2ZhYWEyNDA3ZGE1N2VkYTU1MjFmODY2NjRi
NjIzYTUzYS4uYTY0MjViZmQ0YjViOTZhMzY4OTYzNjRmODBhZjU4NjIxMDZhNTY0YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uY3BwCkBAIC0zNiw2ICszNiw3
IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFNjcm9sbEFuaW1hdGlv
bjo6VHlwZSBhbmltYXRpb25UeXBlKQogICAgIGNhc2UgU2Nyb2xsQW5pbWF0aW9uOjpUeXBlOjpT
bW9vdGg6IHRzIDw8ICJzbW9vdGgiOyBicmVhazsKICAgICBjYXNlIFNjcm9sbEFuaW1hdGlvbjo6
VHlwZTo6S2luZXRpYzogdHMgPDwgImtpbmV0aWMiOyBicmVhazsKICAgICBjYXNlIFNjcm9sbEFu
aW1hdGlvbjo6VHlwZTo6TW9tZW50dW06IHRzIDw8ICJtb21lbnR1bSI7IGJyZWFrOworICAgIGNh
c2UgU2Nyb2xsQW5pbWF0aW9uOjpUeXBlOjpSdWJiZXJCYW5kOiB0cyA8PCAicnViYmVyLWJhbmQi
OyBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIHRzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRpb24uaAppbmRleCBlYWZiZGM5MjI5YTA2YjM1NDViODc3YWJlNTFlMGU5
MGMzNmRlZjM4Li4yMzhmMjUwYzk4NWVkZDg4Y2VmYjNjZGExNzk2MjYxNjUyODYwOTgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaApAQCAtNTQsNiArNTQsNyBA
QCBwdWJsaWM6CiAgICAgICAgIFNtb290aCwKICAgICAgICAgS2luZXRpYywKICAgICAgICAgTW9t
ZW50dW0sCisgICAgICAgIFJ1YmJlckJhbmQsCiAgICAgfTsKIAogICAgIFNjcm9sbEFuaW1hdGlv
bihUeXBlIGFuaW1hdGlvblR5cGUsIFNjcm9sbEFuaW1hdGlvbkNsaWVudCYgY2xpZW50KQpAQCAt
NjQsNiArNjUsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV9hbmltYXRpb25UeXBlOyB9CiAKKyAgICB2aXJ0dWFsIFNjcm9sbENsYW1waW5nIGNsYW1w
aW5nKCkgY29uc3QgeyByZXR1cm4gU2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQ7IH0KKwogICAgIHZp
cnR1YWwgYm9vbCByZXRhcmdldEFjdGl2ZUFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdE
ZXN0aW5hdGlvbk9mZnNldCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkKICAgICB7CkBA
IC03NSw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2Nyb2xsRXh0
ZW50cygpIHsgfTsKICAgICAKICAgICBGbG9hdFBvaW50IGN1cnJlbnRPZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX2N1cnJlbnRPZmZzZXQ7IH0KLSAgICAKKwogICAgIHZpcnR1YWwgdm9pZCBzZXJ2
aWNlQW5pbWF0aW9uKE1vbm90b25pY1RpbWUpID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3Bw
CmluZGV4IDlkMDAwYWIxMzA2OWEyNWYzMWQxZWJlNzIzZDNhMmY4ODFhMWI2NzEuLjEzZGE4ZmZk
MjkwYTljYzY5ZWYwYzQxYzcyMjMwY2YwMzUwOWQ1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2
ZW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0uaCIKKyNpbmNsdWRlICJT
Y3JvbGxBbmltYXRpb25SdWJiZXJCYW5kLmgiCiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0aW9uU21v
b3RoLmgiCiAjaW5jbHVkZSAiU2Nyb2xsRXh0ZW50cy5oIgogI2luY2x1ZGUgIlNjcm9sbGFibGVB
cmVhLmgiCkBAIC01OCw3ICs1OSw3IEBAIHZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6
OmFuaW1hdGlvbkNhbGxiYWNrKE1vbm90b25pY1RpbWUgY3VycmVudFRpbWUpCiAgICAgICAgICAg
ICBtX2N1cnJlbnRBbmltYXRpb24gPSBudWxscHRyOwogICAgIH0KIAotICAgIHVwZGF0ZVJ1YmJl
ckJhbmRBbmltYXRpbmdTdGF0ZShjdXJyZW50VGltZSk7CisgICAgdXBkYXRlUnViYmVyQmFuZEFu
aW1hdGluZ1N0YXRlKCk7CiAgICAgdXBkYXRlS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRpbmdTdGF0
ZShjdXJyZW50VGltZSk7CiAgICAgCiAgICAgc3RhcnRPclN0b3BBbmltYXRpb25DYWxsYmFja3Mo
KTsKQEAgLTEyNSw5ICsxMjYsOCBAQCB2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpz
dG9wQW5pbWF0ZWRTY3JvbGwoKQogYm9vbCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c3Rh
cnRNb21lbnR1bVNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkoY29uc3QgRmxvYXRQb2ludCYgaW5p
dGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHksIGNvbnN0IEZsb2F0
U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGdW5jdGlvbjxGbG9hdFBvaW50KGNvbnN0IEZsb2F0
UG9pbnQmKT4mIGRlc3RpbmF0aW9uTW9kaWZpZXIpCiB7CiAgICAgaWYgKG1fY3VycmVudEFuaW1h
dGlvbikgewotICAgICAgICBpZiAoaXM8U2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0+KG1fY3VycmVu
dEFuaW1hdGlvbi5nZXQoKSkpCi0gICAgICAgICAgICBtX2N1cnJlbnRBbmltYXRpb24tPnN0b3Ao
KTsKLSAgICAgICAgZWxzZQorICAgICAgICBtX2N1cnJlbnRBbmltYXRpb24tPnN0b3AoKTsKKyAg
ICAgICAgaWYgKCFpczxTY3JvbGxBbmltYXRpb25Nb21lbnR1bT4obV9jdXJyZW50QW5pbWF0aW9u
LmdldCgpKSkKICAgICAgICAgICAgIG1fY3VycmVudEFuaW1hdGlvbiA9IG51bGxwdHI7CiAgICAg
fQogCkBAIC00MjksMjAgKzQyOSwyNiBAQCB2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
Ojp1cGRhdGVLZXlib2FyZFNjcm9sbGluZ0FuaW1hdGluZ1N0YXRlKE1vbm90b25pYwogICAgIG1f
Y2xpZW50LmtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IoKS0+dXBkYXRlS2V5Ym9hcmRTY3JvbGxQ
b3NpdGlvbihjdXJyZW50VGltZSk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xs
ZXI6OnNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZShTY3JvbGxBbmltYXRpb24mIGFuaW1hdGlvbiwg
Y29uc3QgRmxvYXRQb2ludCYgY3VycmVudE9mZnNldCkKK3ZvaWQgU2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXI6OnNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZShTY3JvbGxBbmltYXRpb24mIGFuaW1h
dGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsT2Zmc2V0KQogewotICAgIGF1dG8gc2Nyb2xs
RGVsdGEgPSBjdXJyZW50T2Zmc2V0IC0gbV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCk7CisgICAgTE9H
X1dJVEhfU1RSRUFNKFNjcm9sbEFuaW1hdGlvbnMsIHN0cmVhbSA8PCAiU2Nyb2xsaW5nRWZmZWN0
c0NvbnRyb2xsZXIgIiA8PCB0aGlzIDw8ICIgc2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlICIgPDwg
YW5pbWF0aW9uIDw8ICIgKG1haW4gdGhyZWFkICIgPDwgaXNNYWluVGhyZWFkKCkgPDwgIikgc2Ny
b2xsaW5nIHRvICIgPDwgc2Nyb2xsT2Zmc2V0KTsKIAotICAgIExPR19XSVRIX1NUUkVBTShTY3Jv
bGxBbmltYXRpb25zLCBzdHJlYW0gPDwgIlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyICIgPDwg
dGhpcyA8PCAiIHNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZSAiIDw8IGFuaW1hdGlvbiA8PCAiICht
YWluIHRocmVhZCAiIDw8IGlzTWFpblRocmVhZCgpIDw8ICIpIHNjcm9sbGluZyBieSAiIDw8IHNj
cm9sbERlbHRhKTsKLSAgICBVTlVTRURfUEFSQU0oYW5pbWF0aW9uKTsKKyAgICBhdXRvIGN1cnJl
bnRPZmZzZXQgPSBtX2NsaWVudC5zY3JvbGxPZmZzZXQoKTsKKyAgICBhdXRvIHNjcm9sbERlbHRh
ID0gc2Nyb2xsT2Zmc2V0IC0gY3VycmVudE9mZnNldDsKIAotICAgIG1fY2xpZW50LmltbWVkaWF0
ZVNjcm9sbEJ5KHNjcm9sbERlbHRhKTsKKyAgICBtX2NsaWVudC5pbW1lZGlhdGVTY3JvbGxCeShz
Y3JvbGxEZWx0YSwgYW5pbWF0aW9uLmNsYW1waW5nKCkpOwogfQogCiB2b2lkIFNjcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyOjpzY3JvbGxBbmltYXRpb25XaWxsU3RhcnQoU2Nyb2xsQW5pbWF0aW9u
JiBhbmltYXRpb24pCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbEFuaW1hdGlvbnMsIHN0
cmVhbSA8PCAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIgIiA8PCB0aGlzIDw8ICIgc2Nyb2xs
QW5pbWF0aW9uV2lsbFN0YXJ0ICIgPDwgYW5pbWF0aW9uKTsKKworI2lmIEhBVkUoUlVCQkVSX0JB
TkRJTkcpCisgICAgaWYgKGlzPFNjcm9sbEFuaW1hdGlvblJ1YmJlckJhbmQ+KGFuaW1hdGlvbikp
CisgICAgICAgIHdpbGxTdGFydFJ1YmJlckJhbmRBbmltYXRpb24oKTsKKyNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKGFuaW1hdGlvbik7CisjZW5kaWYKIAogICAgIHN0YXJ0T3JTdG9wQW5pbWF0aW9u
Q2FsbGJhY2tzKCk7CiB9CkBAIC00NTAsMTMgKzQ1NiwxOSBAQCB2b2lkIFNjcm9sbGluZ0VmZmVj
dHNDb250cm9sbGVyOjpzY3JvbGxBbmltYXRpb25XaWxsU3RhcnQoU2Nyb2xsQW5pbWF0aW9uJiBh
bmltYQogdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c2Nyb2xsQW5pbWF0aW9uRGlk
RW5kKFNjcm9sbEFuaW1hdGlvbiYgYW5pbWF0aW9uKQogewogICAgIExPR19XSVRIX1NUUkVBTShT
Y3JvbGxBbmltYXRpb25zLCBzdHJlYW0gPDwgIlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyICIg
PDwgdGhpcyA8PCAiIHNjcm9sbEFuaW1hdGlvbkRpZEVuZCAiIDw8IGFuaW1hdGlvbik7Ci0gICAg
VU5VU0VEX1BBUkFNKGFuaW1hdGlvbik7CiAKICAgICBpZiAodXNlc1Njcm9sbFNuYXAoKSAmJiBt
X2lzQW5pbWF0aW5nU2Nyb2xsU25hcCkgewogICAgICAgICBtX3Njcm9sbFNuYXBTdGF0ZS0+dHJh
bnNpdGlvblRvRGVzdGluYXRpb25SZWFjaGVkU3RhdGUoKTsKICAgICAgICAgc3RvcFNjcm9sbFNu
YXBBbmltYXRpb24oKTsKICAgICB9CiAKKyNpZiBIQVZFKFJVQkJFUl9CQU5ESU5HKQorICAgIGlm
IChpczxTY3JvbGxBbmltYXRpb25SdWJiZXJCYW5kPihhbmltYXRpb24pKQorICAgICAgICBkaWRT
dG9wUnViYmVyQmFuZEFuaW1hdGlvbigpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYW5pbWF0
aW9uKTsKKyNlbmRpZgorCiAgICAgLy8gRklYTUU6IE5lZWQgdG8gdHJhY2sgc3RhdGUgYmV0dGVy
IGFuZCBvbmx5IGNhbGwgdGhpcyB3aGVuIHRoZSBydW5uaW5nIGFuaW1hdGlvbiBpcyBmb3IgQ1NT
IHNtb290aCBzY3JvbGxpbmcuIENhbGxpbmcgc2hvdWxkIGJlIGhhcm1sZXNzLCB0aG91Z2guCiAg
ICAgbV9jbGllbnQuZGlkU3RvcEFuaW1hdGVkU2Nyb2xsKCk7CiAgICAgc3RhcnRPclN0b3BBbmlt
YXRpb25DYWxsYmFja3MoKTsKQEAgLTQ4Miw3ICs0OTQsNyBAQCB2b2lkIFNjcm9sbGluZ0VmZmVj
dHNDb250cm9sbGVyOjpzY3JvbGxQb3NpdGlvbkNoYW5nZWQoKQogewogfQogCi12b2lkIFNjcm9s
bGluZ0VmZmVjdHNDb250cm9sbGVyOjp1cGRhdGVSdWJiZXJCYW5kQW5pbWF0aW5nU3RhdGUoTW9u
b3RvbmljVGltZSkKK3ZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnVwZGF0ZVJ1YmJl
ckJhbmRBbmltYXRpbmdTdGF0ZSgpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCmluZGV4IDc4YjkzYjAxYjk0OGRh
OGMxNTM5NWM1MjMzYzdiZTQ4NjllYmExNWMuLjdjMzcwMzEyM2JhNmQ0YzZlMzc1YWE2ZTU0N2Uw
NTc0N2RkZWEzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXIuaApAQCAtMTAwLDggKzEwMCw4IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRSdWJiZXJCYW5kT25TaWRlKEJveFNpZGUpIGNvbnN0ID0gMDsK
IAotICAgIHZpcnR1YWwgdm9pZCB3aWxsU3RhcnRSdWJiZXJCYW5kU25hcEFuaW1hdGlvbigpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBkaWRTdG9wUnViYmVyYmFuZFNuYXBBbmltYXRpb24oKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgd2lsbFN0YXJ0UnViYmVyQmFuZEFuaW1hdGlvbigpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBkaWRTdG9wUnViYmVyQmFuZEFuaW1hdGlvbigpIHsgfQogCiAgICAgdmly
dHVhbCB2b2lkIHJ1YmJlckJhbmRpbmdTdGF0ZUNoYW5nZWQoYm9vbCkgeyB9CiAjZW5kaWYKQEAg
LTE3NCwxMyArMTc0LDEzIEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgaGFuZGxl
ZC4KICAgICBib29sIHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmKTsKIAotICAgIHZvaWQgc3RvcFJ1YmJlcmJhbmRpbmcoKTsKKyAgICB2b2lk
IHN0b3BSdWJiZXJCYW5kaW5nKCk7CiAgICAgYm9vbCBpc1J1YmJlckJhbmRJblByb2dyZXNzKCkg
Y29uc3Q7CiAgICAgUmVjdEVkZ2VzPGJvb2w+IHJ1YmJlckJhbmRpbmdFZGdlcygpIGNvbnN0IHsg
cmV0dXJuIG1fcnViYmVyQmFuZGluZ0VkZ2VzOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICB2
b2lkIHVwZGF0ZVJ1YmJlckJhbmRBbmltYXRpbmdTdGF0ZShNb25vdG9uaWNUaW1lKTsKKyAgICB2
b2lkIHVwZGF0ZVJ1YmJlckJhbmRBbmltYXRpbmdTdGF0ZSgpOwogICAgIHZvaWQgdXBkYXRlS2V5
Ym9hcmRTY3JvbGxpbmdBbmltYXRpbmdTdGF0ZShNb25vdG9uaWNUaW1lKTsKIAogICAgIHZvaWQg
c2V0SXNBbmltYXRpbmdSdWJiZXJCYW5kKGJvb2wpOwpAQCAtMjAwLDkgKzIwMCwxMyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbW9kaWZ5U2Nyb2xsRGVsdGFGb3JTdHJldGNoaW5nKGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYsIEZsb2F0U2l6ZSYsIGJvb2wgaXNIb3Jpem9udGFsbHlTdHJldGNoZWQs
IGJvb2wgaXNWZXJ0aWNhbGx5U3RyZXRjaGVkKTsKICAgICBib29sIGFwcGx5U2Nyb2xsRGVsdGFX
aXRoU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBGbG9hdFNpemUsIGJvb2wg
aXNIb3Jpem9udGFsbHlTdHJldGNoZWQsIGJvb2wgaXNWZXJ0aWNhbGx5U3RyZXRjaGVkKTsKIAot
ICAgIHZvaWQgc3RhcnRSdWJiZXJiYW5kQW5pbWF0aW9uSWZOZWNlc3NhcnkoKTsKLSAgICB2b2lk
IHN0YXJ0UnViYmVyYmFuZEFuaW1hdGlvbigpOwotICAgIHZvaWQgc3RvcFJ1YmJlcmJhbmRBbmlt
YXRpb24oKTsKKyAgICB2b2lkIHN0YXJ0UnViYmVyQmFuZEFuaW1hdGlvbklmTmVjZXNzYXJ5KCk7
CisKKyAgICB2b2lkIHN0YXJ0UnViYmVyQmFuZEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiB0
YXJnZXRPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5LCBjb25zdCBGbG9h
dFNpemUmIGluaXRpYWxPdmVyc2Nyb2xsKTsKKyAgICB2b2lkIHN0b3BSdWJiZXJCYW5kQW5pbWF0
aW9uKCk7CisKKyAgICB2b2lkIHdpbGxTdGFydFJ1YmJlckJhbmRBbmltYXRpb24oKTsKKyAgICB2
b2lkIGRpZFN0b3BSdWJiZXJCYW5kQW5pbWF0aW9uKCk7CiAKICAgICBib29sIHNob3VsZFJ1YmJl
ckJhbmRPblNpZGUoQm94U2lkZSkgY29uc3Q7CiAgICAgYm9vbCBpc1J1YmJlckJhbmRJblByb2dy
ZXNzSW50ZXJuYWwoKSBjb25zdDsKQEAgLTI1NCwxMCArMjU4LDYgQEAgcHJpdmF0ZToKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXJUaW1lcj4gbV9zdGF0ZWxl
c3NTbmFwVHJhbnNpdGlvblRpbWVyOwogCiAjaWYgSEFWRShSVUJCRVJfQkFORElORykKLSAgICAv
LyBSdWJiZXIgYmFuZCBzdGF0ZS4KLSAgICBNb25vdG9uaWNUaW1lIG1fc3RhcnRUaW1lOwotICAg
IEZsb2F0U2l6ZSBtX3N0YXJ0U3RyZXRjaDsKLSAgICBGbG9hdFNpemUgbV9vcmlnVmVsb2NpdHk7
CiAgICAgUmVjdEVkZ2VzPGJvb2w+IG1fcnViYmVyQmFuZGluZ0VkZ2VzOwogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRpb25SdWJi
ZXJCYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0aW9uUnVi
YmVyQmFuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlZjcxMzk3OTkwNjNmZTQyYmFmYTdlYmY0MGE2MjUwODRm
OWM0ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Ny
b2xsQW5pbWF0aW9uUnViYmVyQmFuZC5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAq
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTY3JvbGxBbmltYXRpb24uaCIKKworI2lmIEhBVkUo
UlVCQkVSX0JBTkRJTkcpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2Nyb2xsQW5p
bWF0aW9uUnViYmVyQmFuZCBmaW5hbDogcHVibGljIFNjcm9sbEFuaW1hdGlvbiB7CitwdWJsaWM6
CisgICAgU2Nyb2xsQW5pbWF0aW9uUnViYmVyQmFuZChTY3JvbGxBbmltYXRpb25DbGllbnQmKTsK
KyAgICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRpb25SdWJiZXJCYW5kKCk7CisKKyAgICAvLyB0YXJn
ZXRPZmZzZXQgaXMgdGhlIHNjcm9sbCBvZmZzZXQgd2hlbiB0aGUgYW5pbWF0aW9uIGhhcyBmaW5p
c2hlZCAoaS5lLiBzY3JvbGxlZCB0byBhbiBlZGdlKS4KKyAgICBib29sIHN0YXJ0UnViYmVyQmFu
ZEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRPZmZzZXQsIGNvbnN0IEZsb2F0U2l6
ZSYgaW5pdGlhbFZlbG9jaXR5LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxPdmVyc2Nyb2xsKTsK
KworcHJpdmF0ZToKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbEV4dGVudHMoKSBmaW5hbDsKKyAgICB2
b2lkIHNlcnZpY2VBbmltYXRpb24oTW9ub3RvbmljVGltZSkgZmluYWw7CisgICAgYm9vbCByZXRh
cmdldEFjdGl2ZUFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JikgZmluYWw7CisgICAgU2Nyb2xs
Q2xhbXBpbmcgY2xhbXBpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiBTY3JvbGxDbGFtcGluZzo6
VW5jbGFtcGVkOyB9CisKKyAgICBib29sIGFuaW1hdGVTY3JvbGwoTW9ub3RvbmljVGltZSk7CisK
KyAgICBGbG9hdFBvaW50IG1fdGFyZ2V0T2Zmc2V0OworICAgIEZsb2F0U2l6ZSBtX2luaXRpYWxW
ZWxvY2l0eTsKKyAgICBGbG9hdFNpemUgbV9pbml0aWFsT3ZlcnNjcm9sbDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19TQ1JPTExfQU5JTUFU
SU9OKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblJ1YmJlckJhbmQsIHR5cGUoKSA9PSBXZWJDb3Jl
OjpTY3JvbGxBbmltYXRpb246OlR5cGU6OlJ1YmJlckJhbmQpCisKKyNlbmRpZiAvLyBIQVZFKFJV
QkJFUl9CQU5ESU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbEFuaW1hdGlvblJ1YmJlckJhbmQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2Nyb2xsQW5pbWF0aW9uUnViYmVyQmFuZC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iN2VkMWYzMzZjYzkyMmY3
MzkxMjhiMWJiOTQ2YWFiZWMyNjU1YjllCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdGlvblJ1YmJlckJhbmQubW0KQEAgLTAsMCArMSwx
MDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJTY3JvbGxB
bmltYXRpb25SdWJiZXJCYW5kLmgiCisKKyNpZiBIQVZFKFJVQkJFUl9CQU5ESU5HKQorCisjaW1w
b3J0ICJGbG9hdFBvaW50LmgiCisjaW1wb3J0ICJHZW9tZXRyeVV0aWxpdGllcy5oIgorI2ltcG9y
dCA8cGFsL3NwaS9tYWMvTlNTY3JvbGxWaWV3U1BJLmg+CisKK3N0YXRpYyBmbG9hdCBlbGFzdGlj
RGVsdGFGb3JUaW1lRGVsdGEoZmxvYXQgaW5pdGlhbFBvc2l0aW9uLCBmbG9hdCBpbml0aWFsVmVs
b2NpdHksIFNlY29uZHMgZWxhcHNlZFRpbWUpCit7CisgICAgcmV0dXJuIF9OU0VsYXN0aWNEZWx0
YUZvclRpbWVEZWx0YShpbml0aWFsUG9zaXRpb24sIGluaXRpYWxWZWxvY2l0eSwgZWxhcHNlZFRp
bWUuc2Vjb25kcygpKTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgaW5saW5l
IGZsb2F0IHJvdW5kVG93YXJkWmVybyhmbG9hdCBudW0pCit7CisgICAgcmV0dXJuIG51bSA+IDAg
PyBjZWlsZihudW0gLSAwLjVmKSA6IGZsb29yZihudW0gKyAwLjVmKTsKK30KKworc3RhdGljIGlu
bGluZSBmbG9hdCByb3VuZFRvRGV2aWNlUGl4ZWxUb3dhcmRaZXJvKGZsb2F0IG51bSkKK3sKKyAg
ICBmbG9hdCByb3VuZGVkTnVtID0gcm91bmRmKG51bSk7CisgICAgaWYgKGZhYnMobnVtIC0gcm91
bmRlZE51bSkgPCAwLjEyNSkKKyAgICAgICAgbnVtID0gcm91bmRlZE51bTsKKworICAgIHJldHVy
biByb3VuZFRvd2FyZFplcm8obnVtKTsKK30KKworU2Nyb2xsQW5pbWF0aW9uUnViYmVyQmFuZDo6
U2Nyb2xsQW5pbWF0aW9uUnViYmVyQmFuZChTY3JvbGxBbmltYXRpb25DbGllbnQmIGNsaWVudCkK
KyAgICA6IFNjcm9sbEFuaW1hdGlvbihUeXBlOjpSdWJiZXJCYW5kLCBjbGllbnQpCit7Cit9CisK
K1Njcm9sbEFuaW1hdGlvblJ1YmJlckJhbmQ6On5TY3JvbGxBbmltYXRpb25SdWJiZXJCYW5kKCkg
PSBkZWZhdWx0OworCitib29sIFNjcm9sbEFuaW1hdGlvblJ1YmJlckJhbmQ6OnN0YXJ0UnViYmVy
QmFuZEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRPZmZzZXQsIGNvbnN0IEZsb2F0
U2l6ZSYgaW5pdGlhbFZlbG9jaXR5LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxPdmVyc2Nyb2xs
KQoreworICAgIG1fdGFyZ2V0T2Zmc2V0ID0gdGFyZ2V0T2Zmc2V0OworICAgIG1faW5pdGlhbFZl
bG9jaXR5ID0gaW5pdGlhbFZlbG9jaXR5OworICAgIG1faW5pdGlhbE92ZXJzY3JvbGwgPSBpbml0
aWFsT3ZlcnNjcm9sbDsKKworICAgIGRpZFN0YXJ0KE1vbm90b25pY1RpbWU6Om5vdygpKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBTY3JvbGxBbmltYXRpb25SdWJiZXJCYW5kOjpyZXRh
cmdldEFjdGl2ZUFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JikKK3sKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK3ZvaWQgU2Nyb2xsQW5pbWF0aW9uUnViYmVyQmFuZDo6dXBkYXRlU2Nyb2xsRXh0
ZW50cygpCit7CisgICAgLy8gRklYTUU6IElmIHdlJ3JlIHJ1YmJlcmJhbmRpbmcgYXQgdGhlIGJv
dHRvbSBhbmQgdGhlIGNvbnRlbnQgc2l6ZSBjaGFuZ2VzIHdlIHNob3VsZCBmaXggdXAgbV90YXJn
ZXRPZmZzZXQuCit9CisKK3ZvaWQgU2Nyb2xsQW5pbWF0aW9uUnViYmVyQmFuZDo6c2VydmljZUFu
aW1hdGlvbihNb25vdG9uaWNUaW1lIGN1cnJlbnRUaW1lKQoreworICAgIGF1dG8gZWxhcHNlZFRp
bWUgPSB0aW1lU2luY2VTdGFydChjdXJyZW50VGltZSk7CisKKyAgICAvLyBUaGlzIGlzIHZlcnkg
c2ltaWxhciB0byBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IgbG9naWMsIGJ1dCBJIHdhc24n
dCBhYmxlIHRvIGdldCB0byBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IgdG8KKyAgICAvLyBn
aXZlIHRoZSBjb3JyZWN0IGJlaGF2aW9yIHdoZW4gc3RhcnRpbmcgYSBydWJiZXJiYW5kIHdpdGgg
aW5pdGlhbCB2ZWxvY2l0eSAoaS5lLiBib3VuY2luZykuCisKKyAgICBhdXRvIHJ1YmJlckJhbmRP
ZmZzZXQgPSBGbG9hdFNpemUgeworICAgICAgICByb3VuZFRvRGV2aWNlUGl4ZWxUb3dhcmRaZXJv
KGVsYXN0aWNEZWx0YUZvclRpbWVEZWx0YShtX2luaXRpYWxPdmVyc2Nyb2xsLndpZHRoKCksIC1t
X2luaXRpYWxWZWxvY2l0eS53aWR0aCgpLCBlbGFwc2VkVGltZSkpLAorICAgICAgICByb3VuZFRv
RGV2aWNlUGl4ZWxUb3dhcmRaZXJvKGVsYXN0aWNEZWx0YUZvclRpbWVEZWx0YShtX2luaXRpYWxP
dmVyc2Nyb2xsLmhlaWdodCgpLCAtbV9pbml0aWFsVmVsb2NpdHkuaGVpZ2h0KCksIGVsYXBzZWRU
aW1lKSkKKyAgICB9OworCisgICAgYm9vbCBhbmltYXRpb25Db21wbGV0ZSA9IHJ1YmJlckJhbmRP
ZmZzZXQuaXNaZXJvKCk7CisgICAgbV9jdXJyZW50T2Zmc2V0ID0gbV90YXJnZXRPZmZzZXQgKyBy
dWJiZXJCYW5kT2Zmc2V0OworCisgICAgbV9jbGllbnQuc2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRl
KCp0aGlzLCBtX2N1cnJlbnRPZmZzZXQpOworCisgICAgaWYgKGFuaW1hdGlvbkNvbXBsZXRlKQor
ICAgICAgICBkaWRFbmQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gSEFWRShSVUJCRVJfQkFORElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5tbQppbmRleCBiODdjMmUxNzZm
ODYxNDE0OGQ0NjRmZDQxYjdmMTVjZTNiYjFjZWEwLi43YTdlNDdmMzI2N2VmYzg5NDQ1YWNkOGEz
Yzg1NmVkMmMxN2M4YzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgorI2lt
cG9ydCAiU2Nyb2xsQW5pbWF0aW9uUnViYmVyQmFuZC5oIgogI2ltcG9ydCAiU2Nyb2xsRXh0ZW50
cy5oIgogI2ltcG9ydCAiV2hlZWxFdmVudFRlc3RNb25pdG9yLmgiCiAjaW1wb3J0IDxwYWwvc3Bp
L21hYy9OU1Njcm9sbFZpZXdTUEkuaD4KQEAgLTQzLDExICs0NCw2IEBAIHN0YXRpYyBjb25zdCBT
ZWNvbmRzIHNjcm9sbFZlbG9jaXR5WmVyb2luZ1RpbWVvdXQgPSAxMDBfbXM7CiBzdGF0aWMgY29u
c3QgZmxvYXQgcnViYmVyYmFuZERpcmVjdGlvbkxvY2tTdHJldGNoUmF0aW8gPSAxOwogc3RhdGlj
IGNvbnN0IGZsb2F0IHJ1YmJlcmJhbmRNaW5pbXVtUmVxdWlyZWREZWx0YUJlZm9yZVN0cmV0Y2gg
PSAxMDsKIAotc3RhdGljIGZsb2F0IGVsYXN0aWNEZWx0YUZvclRpbWVEZWx0YShmbG9hdCBpbml0
aWFsUG9zaXRpb24sIGZsb2F0IGluaXRpYWxWZWxvY2l0eSwgU2Vjb25kcyBlbGFwc2VkVGltZSkK
LXsKLSAgICByZXR1cm4gX05TRWxhc3RpY0RlbHRhRm9yVGltZURlbHRhKGluaXRpYWxQb3NpdGlv
biwgaW5pdGlhbFZlbG9jaXR5LCBlbGFwc2VkVGltZS5zZWNvbmRzKCkpOwotfQotCiBzdGF0aWMg
ZmxvYXQgZWxhc3RpY0RlbHRhRm9yUmVib3VuZERlbHRhKGZsb2F0IGRlbHRhKQogewogICAgIHJl
dHVybiBfTlNFbGFzdGljRGVsdGFGb3JSZWJvdW5kRGVsdGEoZGVsdGEpOwpAQCAtMTQyLDE0ICsx
MzgsMTQgQEAgYm9vbCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6aGFuZGxlV2hlZWxFdmVu
dChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWUKICAgICAgICAgbV9zdHJldGNoU2Nyb2xs
Rm9yY2Uuc2V0SGVpZ2h0KHJlYm91bmREZWx0YUZvckVsYXN0aWNEZWx0YShzdHJldGNoQW1vdW50
LmhlaWdodCgpKSk7CiAgICAgICAgIG1fdW5hcHBsaWVkT3ZlcnNjcm9sbERlbHRhID0geyB9Owog
Ci0gICAgICAgIHN0b3BSdWJiZXJiYW5kQW5pbWF0aW9uKCk7CisgICAgICAgIHN0b3BSdWJiZXJC
YW5kQW5pbWF0aW9uKCk7CiAgICAgICAgIHVwZGF0ZVJ1YmJlckJhbmRpbmdTdGF0ZSgpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAod2hlZWxFdmVudC5waGFzZSgpID09
IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpFbmRlZCkgewogICAgICAgICAvLyBGSVhNRTogVGhp
cyB0cmlnZ2VycyB0aGUgcnViYmVyYmFuZCB0aW1lciBldmVuIHdoZW4gd2UgZG9uJ3Qgc3RhcnQg
cnViYmVyYmFuZGluZy4KLSAgICAgICAgc3RhcnRSdWJiZXJiYW5kQW5pbWF0aW9uSWZOZWNlc3Nh
cnkoKTsKKyAgICAgICAgc3RhcnRSdWJiZXJCYW5kQW5pbWF0aW9uSWZOZWNlc3NhcnkoKTsKICAg
ICAgICAgdXBkYXRlUnViYmVyQmFuZGluZ1N0YXRlKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KQEAgLTIxMyw3ICsyMDksNyBAQCBib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
OjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZQogICAgICAg
ICAgICAgICAgIGlmIChjYW5TdGFydEFuaW1hdGlvbiAmJiBtX2xhc3RNb21lbnR1bVNjcm9sbFRp
bWVzdGFtcCkgewogICAgICAgICAgICAgICAgICAgICBtX2lnbm9yZU1vbWVudHVtU2Nyb2xscyA9
IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIG1fbW9tZW50dW1TY3JvbGxJblByb2dyZXNzID0g
ZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXJ0UnViYmVyYmFuZEFuaW1hdGlvbklmTmVj
ZXNzYXJ5KCk7CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0UnViYmVyQmFuZEFuaW1hdGlvbklm
TmVjZXNzYXJ5KCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgewpAQCAtMzQ2LDIxICszNDIsNyBAQCBGbG9hdFNpemUgU2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXI6OndoZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IFBsYQogICAg
IHJldHVybiBkZWx0YUFsaWduZWRUb0RvbWluYW50QXhpcyh3aGVlbEV2ZW50LmRlbHRhKCkpOwog
fQogCi1zdGF0aWMgaW5saW5lIGZsb2F0IHJvdW5kVG93YXJkWmVybyhmbG9hdCBudW0pCi17Ci0g
ICAgcmV0dXJuIG51bSA+IDAgPyBjZWlsZihudW0gLSAwLjVmKSA6IGZsb29yZihudW0gKyAwLjVm
KTsKLX0KLQotc3RhdGljIGlubGluZSBmbG9hdCByb3VuZFRvRGV2aWNlUGl4ZWxUb3dhcmRaZXJv
KGZsb2F0IG51bSkKLXsKLSAgICBmbG9hdCByb3VuZGVkTnVtID0gcm91bmRmKG51bSk7Ci0gICAg
aWYgKGZhYnMobnVtIC0gcm91bmRlZE51bSkgPCAwLjEyNSkKLSAgICAgICAgbnVtID0gcm91bmRl
ZE51bTsKLQotICAgIHJldHVybiByb3VuZFRvd2FyZFplcm8obnVtKTsKLX0KLQotdm9pZCBTY3Jv
bGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6dXBkYXRlUnViYmVyQmFuZEFuaW1hdGluZ1N0YXRlKE1v
bm90b25pY1RpbWUgY3VycmVudFRpbWUpCit2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
Ojp1cGRhdGVSdWJiZXJCYW5kQW5pbWF0aW5nU3RhdGUoKQogewogICAgIGlmICghbV9pc0FuaW1h
dGluZ1J1YmJlckJhbmQpCiAgICAgICAgIHJldHVybjsKQEAgLTM2OCw2MCArMzUwLDEwIEBAIHZv
aWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnVwZGF0ZVJ1YmJlckJhbmRBbmltYXRpbmdT
dGF0ZShNb25vdG9uaWNUaW1lIGN1CiAgICAgaWYgKGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGlmICghbV9tb21lbnR1bVNjcm9sbEluUHJvZ3Jl
c3MgfHwgbV9pZ25vcmVNb21lbnR1bVNjcm9sbHMpIHsKLSAgICAgICAgYXV0byB0aW1lRGVsdGEg
PSBjdXJyZW50VGltZSAtIG1fc3RhcnRUaW1lOwotCi0gICAgICAgIGlmIChtX3N0YXJ0U3RyZXRj
aC5pc1plcm8oKSkgewotICAgICAgICAgICAgbV9zdGFydFN0cmV0Y2ggPSBtX2NsaWVudC5zdHJl
dGNoQW1vdW50KCk7Ci0gICAgICAgICAgICBpZiAobV9zdGFydFN0cmV0Y2guaXNaZXJvKCkpIHsK
LSAgICAgICAgICAgICAgICBzdG9wUnViYmVyYmFuZGluZygpOwotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbV9vcmlnVmVsb2NpdHkgPSBtX21v
bWVudHVtVmVsb2NpdHk7Ci0KLSAgICAgICAgICAgIC8vIEp1c3QgbGlrZSBub3JtYWwgc2Nyb2xs
aW5nLCBwcmVmZXIgdmVydGljYWwgcnViYmVyYmFuZGluZwotICAgICAgICAgICAgaWYgKGZhYnNm
KG1fb3JpZ1ZlbG9jaXR5LmhlaWdodCgpKSA+PSBmYWJzZihtX29yaWdWZWxvY2l0eS53aWR0aCgp
KSkKLSAgICAgICAgICAgICAgICBtX29yaWdWZWxvY2l0eS5zZXRXaWR0aCgwKTsKLQotICAgICAg
ICAgICAgLy8gRG9uJ3QgcnViYmVyLWJhbmQgaG9yaXpvbnRhbGx5IGlmIGl0J3Mgbm90IHBvc3Np
YmxlIHRvIHNjcm9sbCBob3Jpem9udGFsbHkKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuYWxs
b3dzSG9yaXpvbnRhbFNjcm9sbGluZygpKQotICAgICAgICAgICAgICAgIG1fb3JpZ1ZlbG9jaXR5
LnNldFdpZHRoKDApOwotCi0gICAgICAgICAgICAvLyBEb24ndCBydWJiZXItYmFuZCB2ZXJ0aWNh
bGx5IGlmIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHNjcm9sbCB2ZXJ0aWNhbGx5Ci0gICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LmFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkpCi0gICAgICAgICAgICAg
ICAgbV9vcmlnVmVsb2NpdHkuc2V0SGVpZ2h0KDApOwotCi0gICAgICAgICAgICBMT0dfV0lUSF9T
VFJFQU0oU2Nyb2xsQW5pbWF0aW9ucywgc3RyZWFtIDw8ICJTY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlcjo6dXBkYXRlUnViYmVyQmFuZEFuaW1hdGluZ1N0YXRlKCkgLSBzdGFydGluZyBydWJiYmVy
YmFuZCB3aXRoIG1fb3JpZ1ZlbG9jaXR5IiA8PCBtX29yaWdWZWxvY2l0eSA8PCAiIG1fc3RhcnRT
dHJldGNoICIgPDwgbV9zdGFydFN0cmV0Y2gpOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBy
dWJiZXJCYW5kRGVsdGEgPSBGbG9hdFNpemUgewotICAgICAgICAgICAgcm91bmRUb0RldmljZVBp
eGVsVG93YXJkWmVybyhlbGFzdGljRGVsdGFGb3JUaW1lRGVsdGEobV9zdGFydFN0cmV0Y2gud2lk
dGgoKSwgLW1fb3JpZ1ZlbG9jaXR5LndpZHRoKCksIHRpbWVEZWx0YSkpLAotICAgICAgICAgICAg
cm91bmRUb0RldmljZVBpeGVsVG93YXJkWmVybyhlbGFzdGljRGVsdGFGb3JUaW1lRGVsdGEobV9z
dGFydFN0cmV0Y2guaGVpZ2h0KCksIC1tX29yaWdWZWxvY2l0eS5oZWlnaHQoKSwgdGltZURlbHRh
KSkKLSAgICAgICAgfTsKLQotICAgICAgICBpZiAoZmFicyhydWJiZXJCYW5kRGVsdGEud2lkdGgo
KSkgPj0gMSB8fCBmYWJzKHJ1YmJlckJhbmREZWx0YS5oZWlnaHQoKSkgPj0gMSkgewotICAgICAg
ICAgICAgYXV0byBzdHJldGNoRGVsdGEgPSBydWJiZXJCYW5kRGVsdGEgLSBGbG9hdFNpemUobV9j
bGllbnQuc3RyZXRjaEFtb3VudCgpKTsKLQotICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFNj
cm9sbEFuaW1hdGlvbnMsIHN0cmVhbSA8PCAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnVw
ZGF0ZVJ1YmJlckJhbmRBbmltYXRpbmdTdGF0ZSgpIC0gcnViYmVyQmFuZERlbHRhICIgPDwgcnVi
YmVyQmFuZERlbHRhIDw8ICIgc3RyZXRjaGVkICIgPDwgbV9jbGllbnQuc3RyZXRjaEFtb3VudCgp
IDw8ICIgbW92aW5nIGJ5ICIgPDwgc3RyZXRjaERlbHRhKTsKLQotICAgICAgICAgICAgbV9jbGll
bnQuaW1tZWRpYXRlU2Nyb2xsQnkoc3RyZXRjaERlbHRhLCBTY3JvbGxDbGFtcGluZzo6VW5jbGFt
cGVkKTsKLQotICAgICAgICAgICAgRmxvYXRTaXplIG5ld1N0cmV0Y2ggPSBtX2NsaWVudC5zdHJl
dGNoQW1vdW50KCk7Ci0KLSAgICAgICAgICAgIG1fc3RyZXRjaFNjcm9sbEZvcmNlLnNldFdpZHRo
KHJlYm91bmREZWx0YUZvckVsYXN0aWNEZWx0YShuZXdTdHJldGNoLndpZHRoKCkpKTsKLSAgICAg
ICAgICAgIG1fc3RyZXRjaFNjcm9sbEZvcmNlLnNldEhlaWdodChyZWJvdW5kRGVsdGFGb3JFbGFz
dGljRGVsdGEobmV3U3RyZXRjaC5oZWlnaHQoKSkpOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbEFuaW1hdGlvbnMsIHN0cmVhbSA8PCAiU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXI6OnVwZGF0ZVJ1YmJlckJhbmRBbmltYXRpbmdTdGF0ZSgpIC0g
cnViYmVyIGJhbmQgY29tcGxldGUiKTsKLSAgICAgICAgICAgIG1fY2xpZW50LmFkanVzdFNjcm9s
bFBvc2l0aW9uVG9Cb3VuZHNJZk5lY2Vzc2FyeSgpOwotICAgICAgICAgICAgc3RvcFJ1YmJlcmJh
bmRpbmcoKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7CisgICAgaWYgKG1fbW9tZW50dW1TY3Jv
bGxJblByb2dyZXNzICYmICFtX2lnbm9yZU1vbWVudHVtU2Nyb2xscykgewogICAgICAgICBMT0df
V0lUSF9TVFJFQU0oU2Nyb2xsQW5pbWF0aW9ucywgc3RyZWFtIDw8ICJTY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlcjo6dXBkYXRlUnViYmVyQmFuZEFuaW1hdGluZ1N0YXRlKCkgLSBub3QgYW5pbWF0
aW5nLCBtb21lbnR1bVNjcm9sbEluUHJvZ3Jlc3MgIiA8PCBtX21vbWVudHVtU2Nyb2xsSW5Qcm9n
cmVzcyA8PCAiIGlnbm9yZU1vbWVudHVtU2Nyb2xscyAiIDw8IG1faWdub3JlTW9tZW50dW1TY3Jv
bGxzKTsKLSAgICAgICAgbV9zdGFydFRpbWUgPSBjdXJyZW50VGltZTsKLSAgICAgICAgbV9zdGFy
dFN0cmV0Y2ggPSB7IH07CiAgICAgICAgIGlmICghaXNSdWJiZXJCYW5kSW5Qcm9ncmVzc0ludGVy
bmFsKCkpCi0gICAgICAgICAgICBzdG9wUnViYmVyYmFuZEFuaW1hdGlvbigpOworICAgICAgICAg
ICAgc3RvcFJ1YmJlckJhbmRBbmltYXRpb24oKTsKICAgICB9CiAKICAgICB1cGRhdGVSdWJiZXJC
YW5kaW5nU3RhdGUoKTsKQEAgLTQ1MywzNSArMzg1LDQ1IEBAIGJvb2wgU2Nyb2xsaW5nRWZmZWN0
c0NvbnRyb2xsZXI6OmlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBjb25zdAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c3RvcFJ1YmJlcmJh
bmRpbmcoKQordm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c3RvcFJ1YmJlckJhbmRp
bmcoKQogewotICAgIHN0b3BSdWJiZXJiYW5kQW5pbWF0aW9uKCk7Ci0gICAgbV9zdHJldGNoU2Ny
b2xsRm9yY2UgPSB7IH07Ci0gICAgbV9zdGFydFRpbWUgPSB7IH07Ci0gICAgbV9zdGFydFN0cmV0
Y2ggPSB7IH07Ci0gICAgbV9vcmlnVmVsb2NpdHkgPSB7IH07CisgICAgc3RvcFJ1YmJlckJhbmRB
bmltYXRpb24oKTsKICAgICB1cGRhdGVSdWJiZXJCYW5kaW5nU3RhdGUoKTsKIH0KIAotdm9pZCBT
Y3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c3RhcnRSdWJiZXJiYW5kQW5pbWF0aW9uKCkKK3Zv
aWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0YXJ0UnViYmVyQmFuZEFuaW1hdGlvbihj
b25zdCBGbG9hdFBvaW50JiB0YXJnZXRPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZl
bG9jaXR5LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxPdmVyc2Nyb2xsKQogewotICAgIG1fY2xp
ZW50LndpbGxTdGFydFJ1YmJlckJhbmRTbmFwQW5pbWF0aW9uKCk7CisgICAgaWYgKG1fY3VycmVu
dEFuaW1hdGlvbikKKyAgICAgICAgbV9jdXJyZW50QW5pbWF0aW9uLT5zdG9wKCk7CiAKLSAgICBz
ZXRJc0FuaW1hdGluZ1J1YmJlckJhbmQodHJ1ZSk7Ci0KLSAgICBtX2NsaWVudC5kZWZlcldoZWVs
RXZlbnRUZXN0Q29tcGxldGlvbkZvclJlYXNvbihyZWludGVycHJldF9jYXN0PFdoZWVsRXZlbnRU
ZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyPih0aGlzKSwgV2hlZWxFdmVudFRl
c3RNb25pdG9yOjpSdWJiZXJiYW5kSW5Qcm9ncmVzcyk7CisgICAgbV9jdXJyZW50QW5pbWF0aW9u
ID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25SdWJiZXJCYW5kPigqdGhpcyk7CisgICAgTE9H
X1dJVEhfU1RSRUFNKFNjcm9sbEFuaW1hdGlvbnMsIHN0cmVhbSA8PCAiU2Nyb2xsaW5nRWZmZWN0
c0NvbnRyb2xsZXI6OnN0YXJ0UnViYmVyQmFuZEFuaW1hdGlvbigpIC0gc3RhcnRpbmcgcnViYmJl
cmJhbmQgd2l0aCB0YXJnZXRPZmZzZXQgIiA8PCB0YXJnZXRPZmZzZXQgPDwgIiBpbml0aWFsVmVs
b2NpdHkgIiA8PCBpbml0aWFsVmVsb2NpdHkgPDwgIiBpbml0aWFsT3ZlcnNjcm9sbCAiIDw8IGlu
aXRpYWxPdmVyc2Nyb2xsKTsKKyAgICBkb3duY2FzdDxTY3JvbGxBbmltYXRpb25SdWJiZXJCYW5k
PigqbV9jdXJyZW50QW5pbWF0aW9uKS5zdGFydFJ1YmJlckJhbmRBbmltYXRpb24odGFyZ2V0T2Zm
c2V0LCBpbml0aWFsVmVsb2NpdHksIGluaXRpYWxPdmVyc2Nyb2xsKTsKIH0KIAotdm9pZCBTY3Jv
bGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c3RvcFJ1YmJlcmJhbmRBbmltYXRpb24oKQordm9pZCBT
Y3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c3RvcFJ1YmJlckJhbmRBbmltYXRpb24oKQogewot
ICAgIG1fY2xpZW50LmRpZFN0b3BSdWJiZXJiYW5kU25hcEFuaW1hdGlvbigpOworICAgIGlmICht
X2lzQW5pbWF0aW5nUnViYmVyQmFuZCkKKyAgICAgICAgc3RvcEFuaW1hdGVkU2Nyb2xsKCk7CiAK
LSAgICBzZXRJc0FuaW1hdGluZ1J1YmJlckJhbmQoZmFsc2UpOworICAgIG1fc3RyZXRjaFNjcm9s
bEZvcmNlID0geyB9OworfQorCit2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aWxs
U3RhcnRSdWJiZXJCYW5kQW5pbWF0aW9uKCkKK3sKKyAgICBtX2lzQW5pbWF0aW5nUnViYmVyQmFu
ZCA9IHRydWU7CisgICAgbV9jbGllbnQud2lsbFN0YXJ0UnViYmVyQmFuZEFuaW1hdGlvbigpOwor
ICAgIG1fY2xpZW50LmRlZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uKHJlaW50
ZXJwcmV0X2Nhc3Q8V2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZp
ZXI+KHRoaXMpLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlJ1YmJlcmJhbmRJblByb2dyZXNzKTsK
K30KIAordm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6ZGlkU3RvcFJ1YmJlckJhbmRB
bmltYXRpb24oKQoreworICAgIG1faXNBbmltYXRpbmdSdWJiZXJCYW5kID0gZmFsc2U7CisgICAg
bV9jbGllbnQuZGlkU3RvcFJ1YmJlckJhbmRBbmltYXRpb24oKTsKICAgICBtX2NsaWVudC5yZW1v
dmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJlYXNvbihyZWludGVycHJldF9j
YXN0PFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyPih0aGlz
KSwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpSdWJiZXJiYW5kSW5Qcm9ncmVzcyk7CiB9CiAKLXZv
aWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0YXJ0UnViYmVyYmFuZEFuaW1hdGlvbklm
TmVjZXNzYXJ5KCkKK3ZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0YXJ0UnViYmVy
QmFuZEFuaW1hdGlvbklmTmVjZXNzYXJ5KCkKIHsKICAgICBhdXRvIHRpbWVEZWx0YSA9IFdhbGxU
aW1lOjpub3coKSAtIG1fbGFzdE1vbWVudHVtU2Nyb2xsVGltZXN0YW1wOwogICAgIGlmIChtX2xh
c3RNb21lbnR1bVNjcm9sbFRpbWVzdGFtcCAmJiB0aW1lRGVsdGEgPj0gc2Nyb2xsVmVsb2NpdHla
ZXJvaW5nVGltZW91dCkKQEAgLTQ5MCwxMSArNDMyLDMzIEBAIHZvaWQgU2Nyb2xsaW5nRWZmZWN0
c0NvbnRyb2xsZXI6OnN0YXJ0UnViYmVyYmFuZEFuaW1hdGlvbklmTmVjZXNzYXJ5KCkKICAgICBp
ZiAobV9pc0FuaW1hdGluZ1J1YmJlckJhbmQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc3Rh
cnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7Ci0gICAgbV9zdGFydFN0cmV0Y2ggPSB7IH07
Ci0gICAgbV9vcmlnVmVsb2NpdHkgPSB7IH07CisgICAgYXV0byBleHRlbnRzID0gbV9jbGllbnQu
c2Nyb2xsRXh0ZW50cygpOworICAgIGF1dG8gdGFyZ2V0T2Zmc2V0ID0gbV9jbGllbnQuc2Nyb2xs
T2Zmc2V0KCk7CisgICAgYXV0byBjb250cmFpbmVkT2Zmc2V0ID0gdGFyZ2V0T2Zmc2V0LmNvbnN0
cmFpbmVkQmV0d2VlbihleHRlbnRzLm1pbmltdW1TY3JvbGxPZmZzZXQoKSwgZXh0ZW50cy5tYXhp
bXVtU2Nyb2xsT2Zmc2V0KCkpOworICAgIGJvb2wgd2lsbE92ZXJzY3JvbGwgPSB0YXJnZXRPZmZz
ZXQgIT0gY29udHJhaW5lZE9mZnNldDsKKworICAgIGF1dG8gc3RyZXRjaEFtb3VudCA9IG1fY2xp
ZW50LnN0cmV0Y2hBbW91bnQoKTsKKworICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxBbmltYXRp
b25zLCBzdHJlYW0gPDwgIlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdGFydFJ1YmJlckJh
bmRBbmltYXRpb25JZk5lY2Vzc2FyeSgpIC0gcnViYmVyQmFuZEFuaW1hdGlvblJ1bm5pbmcgIiA8
PCBtX2lzQW5pbWF0aW5nUnViYmVyQmFuZCA8PCAiIHN0cmV0Y2hBbW91bnQgIiA8PCBzdHJldGNo
QW1vdW50IDw8ICIgdGFyZ2V0T2Zmc2V0ICIgPDwgdGFyZ2V0T2Zmc2V0KTsKKworICAgIGlmIChz
dHJldGNoQW1vdW50LmlzWmVybygpICYmICF3aWxsT3ZlcnNjcm9sbCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byBpbml0aWFsVmVsb2NpdHkgPSBtX21vbWVudHVtVmVsb2NpdHk7CisKKyAg
ICAvLyBKdXN0IGxpa2Ugbm9ybWFsIHNjcm9sbGluZywgcHJlZmVyIHZlcnRpY2FsIHJ1YmJlcmJh
bmRpbmcKKyAgICBpZiAoZmFic2YoaW5pdGlhbFZlbG9jaXR5LmhlaWdodCgpKSA+PSBmYWJzZihp
bml0aWFsVmVsb2NpdHkud2lkdGgoKSkpCisgICAgICAgIGluaXRpYWxWZWxvY2l0eS5zZXRXaWR0
aCgwKTsKKworICAgIC8vIERvbid0IHJ1YmJlci1iYW5kIGhvcml6b250YWxseSBpZiBpdCdzIG5v
dCBwb3NzaWJsZSB0byBzY3JvbGwgaG9yaXpvbnRhbGx5CisgICAgaWYgKCFtX2NsaWVudC5hbGxv
d3NIb3Jpem9udGFsU2Nyb2xsaW5nKCkpCisgICAgICAgIGluaXRpYWxWZWxvY2l0eS5zZXRXaWR0
aCgwKTsKKworICAgIC8vIERvbid0IHJ1YmJlci1iYW5kIHZlcnRpY2FsbHkgaWYgaXQncyBub3Qg
cG9zc2libGUgdG8gc2Nyb2xsIHZlcnRpY2FsbHkKKyAgICBpZiAoIW1fY2xpZW50LmFsbG93c1Zl
cnRpY2FsU2Nyb2xsaW5nKCkpCisgICAgICAgIGluaXRpYWxWZWxvY2l0eS5zZXRIZWlnaHQoMCk7
CiAKLSAgICBzdGFydFJ1YmJlcmJhbmRBbmltYXRpb24oKTsKKyAgICBzdGFydFJ1YmJlckJhbmRB
bmltYXRpb24oY29udHJhaW5lZE9mZnNldCwgaW5pdGlhbFZlbG9jaXR5LCBzdHJldGNoQW1vdW50
KTsKIH0KIAogYm9vbCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c2hvdWxkUnViYmVyQmFu
ZE9uU2lkZShCb3hTaWRlIHNpZGUpIGNvbnN0Cg==
</data>
<flag name="commit-queue"
          id="465265"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441125</attachid>
            <date>2021-10-13 13:16:05 -0700</date>
            <delta_ts>2021-10-13 17:18:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231695-20211013131604.patch</filename>
            <type>text/plain</type>
            <size>36014</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQ2NmI3M2Q0NGY2NzJm
ZDg0ZGVmM2M0MTQ1ODgyMDYxNzNhOWQ1MC4uZWU2OWNkYmU1YzU5Nzc0ZmQ2ODc4ODI0ZjNhODQ5
YTJhY2RlYmU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIxLTEwLTEzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBhIFNjcm9s
bEFuaW1hdGlvbiBmb3IgcnViYmVyLWJhbmRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTY5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZSBhbmltYXRpb24gdGhhdCBydW5zIHdoZW4gcnViYmVy
LWJhbmRpbmcgKHdoZW4geW91IG1vbWVudHVtLXNjcm9sbCBpbnRvIGFuIGVkZ2UsCisgICAgICAg
IG9yIHN0cmV0Y2ggYW5kIHJlbGVhc2UpIHdhcyBjb2RlIGluIHVwZGF0ZVJ1YmJlckJhbmRBbmlt
YXRpbmdTdGF0ZSgpLiBSZXBhY2thZ2UKKyAgICAgICAgdGhhdCBjb2RlIGFzIGEgU2Nyb2xsQW5p
bWF0aW9uIHN1YmNsYXNzLCB3aGljaCBhbGxvd3MgaXQgdG8gc2hhcmUgY29kZSB3aXRoIG90aGVy
CisgICAgICAgIHR5cGVzIG9mIHNjcm9sbCBhbmltYXRpb24uCisKKyAgICAgICAgU2Nyb2xsQW5p
bWF0aW9uUnViYmVyQmFuZCBuZWVkcyB0byBkbyBub24tY2xhbXBlZCBzY3JvbGxzLCBzbyBhZGQg
YSB3YXkgZm9yIFNjcm9sbEFuaW1hdGlvbnMKKyAgICAgICAgdG8gc3RhdGUgdGhhdCB0aGV5IGFs
bG93IHRoaXMuCisgICAgICAgIAorICAgICAgICBTdGFuZGFyZGl6ZSB0aGUgY2FwaXRhbGl6YXRp
b24gb2YgUnViYmVyQmFuZC4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpzY3JvbGxUbyk6CisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaDoKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVNYWM6OndpbGxEb1Byb2dyYW1tYXRpY1Njcm9sbCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpkaWRTdG9wUnViYmVyQmFu
ZEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTWFjOjpkaWRTdG9wUnViYmVyYmFuZFNuYXBBbmltYXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbjo6Y2xhbXBpbmcgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdGFydE1vbWVudHVtU2Nyb2xsV2l0
aEluaXRpYWxWZWxvY2l0eSk6IE5lZWQgdG8gYmUgc3VyZQorICAgICAgICB0byBzdG9wKCkgYW55
IGV4aXN0aW5nIGFuaW1hdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyOjpzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnNjcm9sbEFuaW1hdGlvbldpbGxTdGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c2Nyb2xsQW5pbWF0
aW9uRGlkRW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXJDbGllbnQ6
OndpbGxTdGFydFJ1YmJlckJhbmRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXJDbGllbnQ6OmRpZFN0b3BSdWJiZXJCYW5kQW5pbWF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyQ2xpZW50Ojp3aWxs
U3RhcnRSdWJiZXJCYW5kU25hcEFuaW1hdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlckNsaWVudDo6ZGlkU3RvcFJ1YmJlcmJhbmRTbmFw
QW5pbWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0
aW9uUnViYmVyQmFuZC5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5p
bWF0aW9uUnViYmVyQmFuZC5tbTogQWRkZWQuCisgICAgICAgIChlbGFzdGljRGVsdGFGb3JUaW1l
RGVsdGEpOgorICAgICAgICAoV2ViQ29yZTo6cm91bmRUb3dhcmRaZXJvKToKKyAgICAgICAgKFdl
YkNvcmU6OnJvdW5kVG9EZXZpY2VQaXhlbFRvd2FyZFplcm8pOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0aW9uUnViYmVyQmFuZDo6U2Nyb2xsQW5pbWF0aW9uUnViYmVyQmFuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25SdWJiZXJCYW5kOjpzdGFydFJ1YmJlckJh
bmRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uUnViYmVyQmFu
ZDo6cmV0YXJnZXRBY3RpdmVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5p
bWF0aW9uUnViYmVyQmFuZDo6dXBkYXRlU2Nyb2xsRXh0ZW50cyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRpb25SdWJiZXJCYW5kOjpzZXJ2aWNlQW5pbWF0aW9uKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW06CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6aGFuZGxlV2hlZWxFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6dXBkYXRlUnViYmVy
QmFuZEFuaW1hdGluZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyOjpzdG9wUnViYmVyQmFuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlcjo6c3RhcnRSdWJiZXJCYW5kQW5pbWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdG9wUnViYmVyQmFuZEFuaW1h
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6d2ls
bFN0YXJ0UnViYmVyQmFuZEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlcjo6ZGlkU3RvcFJ1YmJlckJhbmRBbmltYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0YXJ0UnViYmVyQmFuZEFuaW1h
dGlvbklmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmVsYXN0aWNEZWx0YUZvclRpbWVE
ZWx0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpyb3VuZFRvd2FyZFplcm8pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6cm91bmRUb0RldmljZVBpeGVsVG93YXJkWmVybyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c3Rv
cFJ1YmJlcmJhbmRpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXI6OnN0YXJ0UnViYmVyYmFuZEFuaW1hdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c3RvcFJ1YmJlcmJhbmRB
bmltYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXI6OnN0YXJ0UnViYmVyYmFuZEFuaW1hdGlvbklmTmVjZXNzYXJ5KTogRGVsZXRlZC4K
KwogMjAyMS0xMC0xMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbV0sxXSBUZXN0cyBmb3Igc21vb3RoIHNjcm9sbGluZyBvZiBhIHdpbmRvdyBmYWls
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCBhNGMwYTc2MjdjMzc4MWRmY2QwNDkwNmZjNTIz
MzA5YzkwNzMwYzJjLi43NjA0MWZjZTY2Y2I5NGRhNmQ1NWIwNGI5MzkzOGU3M2JmOGZjOThjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTQ5MSwxMCArNDkxLDExIEBAIHBsYXRmb3JtL21h
Yy9Qb3dlck9ic2VydmVyTWFjLmNwcAogcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbQog
cGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5tbQogcGxhdGZvcm0vbWFjL1Njcm9sbEFu
aW1hdG9yTWFjLm1tIEBuby11bmlmeQotcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyLm1tCitwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0aW9uUnViYmVyQmFuZC5tbQogcGxh
dGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0KIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJzQ29udHJv
bGxlck1hYy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbSBA
bm8tdW5pZnkKK3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5tbQogcGxh
dGZvcm0vbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbQogcGxhdGZvcm0vbWFj
L1NlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMubW0KIHBsYXRmb3JtL21hYy9TdHJpbmdVdGls
aXRpZXMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA3NTE5NzRhMmI3ZmYzNzZlMDVmYzExM2JlN2QzNjcxN2U3YzkxYTc1Li44
ZmRhMzQ3NjYyOTAxYzdiMzEzZTlhY2M0ZmY5NGVkMzJlOTIyNzhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MjE0LDYgKzYy
MTQsOCBAQAogCQkwRjM2RTczODFCRDE4NEI5MDAyREI4OTEgLyogTGF5b3V0U2l6ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXlvdXRTaXplLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzN0YwODMyMjAyQUM4RjAwQTg5QzBCIC8qIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjM3RjA4NDIyMDJBQ0I3MDBBODlDMEIgLyogU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGMzgxODZBMjcwOEQyMDEwMDQxNEYzMiAvKiBTY3JvbGxBbmltYXRpb25SdWJiZXJCYW5kLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsQW5pbWF0aW9uUnViYmVyQmFuZC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzODE4NkMyNzA4RDIwMjAwNDE0RjMyIC8qIFNj
cm9sbEFuaW1hdGlvblJ1YmJlckJhbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsQW5pbWF0aW9u
UnViYmVyQmFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNERDQ0RDEyRjVF
QTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTaGFkb3dCbHVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEYzREQ0NEUxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2hhZG93Qmx1ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjNGMEU1NzE1NzAzMEMzMDA2REE1N0YgLyogUmVuZGVyR2VvbWV0cnlNYXAuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyR2VvbWV0cnlNYXAuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjIzNTIsNiArMjIzNTQsOCBAQAogCQkJ
CTQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcxQyAvKiBQb3dlck9ic2VydmVyTWFjLmNwcCAqLywKIAkJ
CQk0NkRCQjY0RTFBQjhDOTZGMDBEOUE4MTMgLyogUG93ZXJPYnNlcnZlck1hYy5oICovLAogCQkJ
CTAwODFGRUZFMTZCMEEyQjYwMDhBQUE3QSAvKiBQdWJsaWNTdWZmaXhNYWMubW0gKi8sCisJCQkJ
MEYzODE4NkMyNzA4RDIwMjAwNDE0RjMyIC8qIFNjcm9sbEFuaW1hdGlvblJ1YmJlckJhbmQuaCAq
LywKKwkJCQkwRjM4MTg2QTI3MDhEMjAxMDA0MTRGMzIgLyogU2Nyb2xsQW5pbWF0aW9uUnViYmVy
QmFuZC5tbSAqLywKIAkJCQlCQ0FFMUZBNTEyOTM5REI3MDA0Q0IwMjYgLyogU2Nyb2xsQW5pbWF0
b3JNYWMuaCAqLywKIAkJCQlCQzUxMTU2RDEyQjE3NDlDMDBDOTY3NTQgLyogU2Nyb2xsQW5pbWF0
b3JNYWMubW0gKi8sCiAJCQkJMEYwMjI0NTQyNkYxNUQ3NTAwMDI2NUMzIC8qIFNjcm9sbGJhcnND
b250cm9sbGVyTWFjLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVNYWMuaAppbmRleCAxMTAxMjg1YTJlN2M5NGJhMTJhM2Y0NGQzZGUzOGI4Y2MxOGZiN2I1
Li41ZDg5MTVjYjM0NTRhYWVmMDE2MDMxZjA2Y2Q0NjNhMDRjZDgxMDkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmgKQEAgLTg3LDcgKzg3LDcgQEAg
cHJpdmF0ZToKIAogICAgIGJvb2wgc2hvdWxkUnViYmVyQmFuZE9uU2lkZShCb3hTaWRlKSBjb25z
dCBmaW5hbDsKICAgICB2b2lkIGltbWVkaWF0ZVNjcm9sbEJ5KGNvbnN0IEZsb2F0U2l6ZSYsIFNj
cm9sbENsYW1waW5nID0gU2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQpIGZpbmFsOwotICAgIHZvaWQg
ZGlkU3RvcFJ1YmJlcmJhbmRTbmFwQW5pbWF0aW9uKCkgZmluYWw7CisgICAgdm9pZCBkaWRTdG9w
UnViYmVyQmFuZEFuaW1hdGlvbigpIGZpbmFsOwogICAgIHZvaWQgcnViYmVyQmFuZGluZ1N0YXRl
Q2hhbmdlZChib29sKSBmaW5hbDsKICAgICB2b2lkIGFkanVzdFNjcm9sbFBvc2l0aW9uVG9Cb3Vu
ZHNJZk5lY2Vzc2FyeSgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlTWFjLm1tCmluZGV4IGIzY2Q4MTA4MDMxOTc3ODA4ZTk5ZTg1ZTZmNGZkZjFj
OWNhMjY2NjIuLjJiNzBlYTZjOTBhMzA0ODZmODkwOTcyNGI5NTU1OTVmOTc4ZDU0YzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCkBAIC0xMzEs
NyArMTMxLDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjp3
aWxsRG9Qcm9ncmFtbWF0aWNTY3JvbGwoY29uc3QgRmxvYXQKIHsKICAgICBpZiAoc2Nyb2xsUG9z
aXRpb25Jc05vdFJ1YmJlcmJhbmRpbmdFZGdlKHRhcmdldFBvc2l0aW9uKSkgewogICAgICAgICBM
T0coU2Nyb2xsaW5nLCAiU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6d2ls
bERvUHJvZ3JhbW1hdGljU2Nyb2xsKCkgLSBzY3JvbGxpbmcgYXdheSBmcm9tIHJ1YmJlcmJhbmRp
bmcgZWRnZSBzbyBzdG9wcGluZyBydWJiZXJiYW5kaW5nIik7Ci0gICAgICAgIG1fc2Nyb2xsQ29u
dHJvbGxlci5zdG9wUnViYmVyYmFuZGluZygpOworICAgICAgICBtX3Njcm9sbENvbnRyb2xsZXIu
c3RvcFJ1YmJlckJhbmRpbmcoKTsKICAgICB9CiB9CiAKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lk
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmltbWVkaWF0ZVNjcm9sbEJ5
KGNvbnN0IEZsb2F0U2l6ZSYgZAogICAgIHNjcm9sbGluZ05vZGUoKS5zY3JvbGxCeShkZWx0YSwg
Y2xhbXBpbmcpOwogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVN
YWM6OmRpZFN0b3BSdWJiZXJiYW5kU25hcEFuaW1hdGlvbigpCit2b2lkIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmRpZFN0b3BSdWJiZXJCYW5kQW5pbWF0aW9uKCkKIHsK
ICAgICAvLyBTaW5jZSB0aGUgcnViYmVyYmFuZCB0aW1lciBoYXMgc3RvcHBlZCwgdG90YWxDb250
ZW50c1NpemVGb3JSdWJiZXJCYW5kIGNhbiBiZSBzeW5jaHJvbml6ZWQgd2l0aCB0b3RhbENvbnRl
bnRzU2l6ZS4KICAgICBzY3JvbGxpbmdOb2RlKCkuc2V0VG90YWxDb250ZW50c1NpemVGb3JSdWJi
ZXJCYW5kKHRvdGFsQ29udGVudHNTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvbi5jcHAKaW5kZXggM2MyOTU5Y2ZhYWEyNDA3ZGE1N2VkYTU1MjFmODY2NjRi
NjIzYTUzYS4uYTY0MjViZmQ0YjViOTZhMzY4OTYzNjRmODBhZjU4NjIxMDZhNTY0YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uY3BwCkBAIC0zNiw2ICszNiw3
IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFNjcm9sbEFuaW1hdGlv
bjo6VHlwZSBhbmltYXRpb25UeXBlKQogICAgIGNhc2UgU2Nyb2xsQW5pbWF0aW9uOjpUeXBlOjpT
bW9vdGg6IHRzIDw8ICJzbW9vdGgiOyBicmVhazsKICAgICBjYXNlIFNjcm9sbEFuaW1hdGlvbjo6
VHlwZTo6S2luZXRpYzogdHMgPDwgImtpbmV0aWMiOyBicmVhazsKICAgICBjYXNlIFNjcm9sbEFu
aW1hdGlvbjo6VHlwZTo6TW9tZW50dW06IHRzIDw8ICJtb21lbnR1bSI7IGJyZWFrOworICAgIGNh
c2UgU2Nyb2xsQW5pbWF0aW9uOjpUeXBlOjpSdWJiZXJCYW5kOiB0cyA8PCAicnViYmVyLWJhbmQi
OyBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIHRzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRpb24uaAppbmRleCBlYWZiZGM5MjI5YTA2YjM1NDViODc3YWJlNTFlMGU5
MGMzNmRlZjM4Li4yMzhmMjUwYzk4NWVkZDg4Y2VmYjNjZGExNzk2MjYxNjUyODYwOTgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaApAQCAtNTQsNiArNTQsNyBA
QCBwdWJsaWM6CiAgICAgICAgIFNtb290aCwKICAgICAgICAgS2luZXRpYywKICAgICAgICAgTW9t
ZW50dW0sCisgICAgICAgIFJ1YmJlckJhbmQsCiAgICAgfTsKIAogICAgIFNjcm9sbEFuaW1hdGlv
bihUeXBlIGFuaW1hdGlvblR5cGUsIFNjcm9sbEFuaW1hdGlvbkNsaWVudCYgY2xpZW50KQpAQCAt
NjQsNiArNjUsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV9hbmltYXRpb25UeXBlOyB9CiAKKyAgICB2aXJ0dWFsIFNjcm9sbENsYW1waW5nIGNsYW1w
aW5nKCkgY29uc3QgeyByZXR1cm4gU2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQ7IH0KKwogICAgIHZp
cnR1YWwgYm9vbCByZXRhcmdldEFjdGl2ZUFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdE
ZXN0aW5hdGlvbk9mZnNldCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkKICAgICB7CkBA
IC03NSw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2Nyb2xsRXh0
ZW50cygpIHsgfTsKICAgICAKICAgICBGbG9hdFBvaW50IGN1cnJlbnRPZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX2N1cnJlbnRPZmZzZXQ7IH0KLSAgICAKKwogICAgIHZpcnR1YWwgdm9pZCBzZXJ2
aWNlQW5pbWF0aW9uKE1vbm90b25pY1RpbWUpID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3Bw
CmluZGV4IDlkMDAwYWIxMzA2OWEyNWYzMWQxZWJlNzIzZDNhMmY4ODFhMWI2NzEuLjM2YWNkNDYx
ZmVlZTA2YTA2YjlhZTU3YzA2Y2Y4ODBmYjM5MWE0NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAKQEAgLTQxLDYg
KzQxLDEwIEBACiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oIgogI2VuZGlmCiAK
KyNpZiBIQVZFKFJVQkJFUl9CQU5ESU5HKQorI2luY2x1ZGUgIlNjcm9sbEFuaW1hdGlvblJ1YmJl
ckJhbmQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNjcm9sbGluZ0VmZmVj
dHNDb250cm9sbGVyOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcihTY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlckNsaWVudCYgY2xpZW50KQpAQCAtNTgsNyArNjIsNyBAQCB2b2lkIFNjcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyOjphbmltYXRpb25DYWxsYmFjayhNb25vdG9uaWNUaW1lIGN1cnJl
bnRUaW1lKQogICAgICAgICAgICAgbV9jdXJyZW50QW5pbWF0aW9uID0gbnVsbHB0cjsKICAgICB9
CiAKLSAgICB1cGRhdGVSdWJiZXJCYW5kQW5pbWF0aW5nU3RhdGUoY3VycmVudFRpbWUpOworICAg
IHVwZGF0ZVJ1YmJlckJhbmRBbmltYXRpbmdTdGF0ZSgpOwogICAgIHVwZGF0ZUtleWJvYXJkU2Ny
b2xsaW5nQW5pbWF0aW5nU3RhdGUoY3VycmVudFRpbWUpOwogICAgIAogICAgIHN0YXJ0T3JTdG9w
QW5pbWF0aW9uQ2FsbGJhY2tzKCk7CkBAIC0xMjUsOSArMTI5LDggQEAgdm9pZCBTY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlcjo6c3RvcEFuaW1hdGVkU2Nyb2xsKCkKIGJvb2wgU2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXI6OnN0YXJ0TW9tZW50dW1TY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KGNv
bnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZl
bG9jaXR5LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRnVuY3Rpb248Rmxv
YXRQb2ludChjb25zdCBGbG9hdFBvaW50Jik+JiBkZXN0aW5hdGlvbk1vZGlmaWVyKQogewogICAg
IGlmIChtX2N1cnJlbnRBbmltYXRpb24pIHsKLSAgICAgICAgaWYgKGlzPFNjcm9sbEFuaW1hdGlv
bk1vbWVudHVtPihtX2N1cnJlbnRBbmltYXRpb24uZ2V0KCkpKQotICAgICAgICAgICAgbV9jdXJy
ZW50QW5pbWF0aW9uLT5zdG9wKCk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgbV9jdXJyZW50QW5p
bWF0aW9uLT5zdG9wKCk7CisgICAgICAgIGlmICghaXM8U2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0+
KG1fY3VycmVudEFuaW1hdGlvbi5nZXQoKSkpCiAgICAgICAgICAgICBtX2N1cnJlbnRBbmltYXRp
b24gPSBudWxscHRyOwogICAgIH0KIApAQCAtNDI5LDIwICs0MzIsMjYgQEAgdm9pZCBTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlcjo6dXBkYXRlS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRpbmdTdGF0
ZShNb25vdG9uaWMKICAgICBtX2NsaWVudC5rZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yKCktPnVw
ZGF0ZUtleWJvYXJkU2Nyb2xsUG9zaXRpb24oY3VycmVudFRpbWUpOwogfQogCi12b2lkIFNjcm9s
bGluZ0VmZmVjdHNDb250cm9sbGVyOjpzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5p
bWF0aW9uJiBhbmltYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIGN1cnJlbnRPZmZzZXQpCit2b2lk
IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Ny
b2xsQW5pbWF0aW9uJiBhbmltYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbE9mZnNldCkK
IHsKLSAgICBhdXRvIHNjcm9sbERlbHRhID0gY3VycmVudE9mZnNldCAtIG1fY2xpZW50LnNjcm9s
bE9mZnNldCgpOworICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxBbmltYXRpb25zLCBzdHJlYW0g
PDwgIlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyICIgPDwgdGhpcyA8PCAiIHNjcm9sbEFuaW1h
dGlvbkRpZFVwZGF0ZSAiIDw8IGFuaW1hdGlvbiA8PCAiIChtYWluIHRocmVhZCAiIDw8IGlzTWFp
blRocmVhZCgpIDw8ICIpIHNjcm9sbGluZyB0byAiIDw8IHNjcm9sbE9mZnNldCk7CiAKLSAgICBM
T0dfV0lUSF9TVFJFQU0oU2Nyb2xsQW5pbWF0aW9ucywgc3RyZWFtIDw8ICJTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlciAiIDw8IHRoaXMgPDwgIiBzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUgIiA8
PCBhbmltYXRpb24gPDwgIiAobWFpbiB0aHJlYWQgIiA8PCBpc01haW5UaHJlYWQoKSA8PCAiKSBz
Y3JvbGxpbmcgYnkgIiA8PCBzY3JvbGxEZWx0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGFuaW1hdGlv
bik7CisgICAgYXV0byBjdXJyZW50T2Zmc2V0ID0gbV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCk7Cisg
ICAgYXV0byBzY3JvbGxEZWx0YSA9IHNjcm9sbE9mZnNldCAtIGN1cnJlbnRPZmZzZXQ7CiAKLSAg
ICBtX2NsaWVudC5pbW1lZGlhdGVTY3JvbGxCeShzY3JvbGxEZWx0YSk7CisgICAgbV9jbGllbnQu
aW1tZWRpYXRlU2Nyb2xsQnkoc2Nyb2xsRGVsdGEsIGFuaW1hdGlvbi5jbGFtcGluZygpKTsKIH0K
IAogdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c2Nyb2xsQW5pbWF0aW9uV2lsbFN0
YXJ0KFNjcm9sbEFuaW1hdGlvbiYgYW5pbWF0aW9uKQogewogICAgIExPR19XSVRIX1NUUkVBTShT
Y3JvbGxBbmltYXRpb25zLCBzdHJlYW0gPDwgIlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyICIg
PDwgdGhpcyA8PCAiIHNjcm9sbEFuaW1hdGlvbldpbGxTdGFydCAiIDw8IGFuaW1hdGlvbik7CisK
KyNpZiBIQVZFKFJVQkJFUl9CQU5ESU5HKQorICAgIGlmIChpczxTY3JvbGxBbmltYXRpb25SdWJi
ZXJCYW5kPihhbmltYXRpb24pKQorICAgICAgICB3aWxsU3RhcnRSdWJiZXJCYW5kQW5pbWF0aW9u
KCk7CisjZWxzZQogICAgIFVOVVNFRF9QQVJBTShhbmltYXRpb24pOworI2VuZGlmCiAKICAgICBz
dGFydE9yU3RvcEFuaW1hdGlvbkNhbGxiYWNrcygpOwogfQpAQCAtNDUwLDEzICs0NTksMTkgQEAg
dm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c2Nyb2xsQW5pbWF0aW9uV2lsbFN0YXJ0
KFNjcm9sbEFuaW1hdGlvbiYgYW5pbWEKIHZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6
OnNjcm9sbEFuaW1hdGlvbkRpZEVuZChTY3JvbGxBbmltYXRpb24mIGFuaW1hdGlvbikKIHsKICAg
ICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsQW5pbWF0aW9ucywgc3RyZWFtIDw8ICJTY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlciAiIDw8IHRoaXMgPDwgIiBzY3JvbGxBbmltYXRpb25EaWRFbmQgIiA8
PCBhbmltYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShhbmltYXRpb24pOwogCiAgICAgaWYgKHVz
ZXNTY3JvbGxTbmFwKCkgJiYgbV9pc0FuaW1hdGluZ1Njcm9sbFNuYXApIHsKICAgICAgICAgbV9z
Y3JvbGxTbmFwU3RhdGUtPnRyYW5zaXRpb25Ub0Rlc3RpbmF0aW9uUmVhY2hlZFN0YXRlKCk7CiAg
ICAgICAgIHN0b3BTY3JvbGxTbmFwQW5pbWF0aW9uKCk7CiAgICAgfQogCisjaWYgSEFWRShSVUJC
RVJfQkFORElORykKKyAgICBpZiAoaXM8U2Nyb2xsQW5pbWF0aW9uUnViYmVyQmFuZD4oYW5pbWF0
aW9uKSkKKyAgICAgICAgZGlkU3RvcFJ1YmJlckJhbmRBbmltYXRpb24oKTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKGFuaW1hdGlvbik7CisjZW5kaWYKKwogICAgIC8vIEZJWE1FOiBOZWVkIHRv
IHRyYWNrIHN0YXRlIGJldHRlciBhbmQgb25seSBjYWxsIHRoaXMgd2hlbiB0aGUgcnVubmluZyBh
bmltYXRpb24gaXMgZm9yIENTUyBzbW9vdGggc2Nyb2xsaW5nLiBDYWxsaW5nIHNob3VsZCBiZSBo
YXJtbGVzcywgdGhvdWdoLgogICAgIG1fY2xpZW50LmRpZFN0b3BBbmltYXRlZFNjcm9sbCgpOwog
ICAgIHN0YXJ0T3JTdG9wQW5pbWF0aW9uQ2FsbGJhY2tzKCk7CkBAIC00ODIsNyArNDk3LDcgQEAg
dm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCkK
IHsKIH0KIAotdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6dXBkYXRlUnViYmVyQmFu
ZEFuaW1hdGluZ1N0YXRlKE1vbm90b25pY1RpbWUpCit2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyOjp1cGRhdGVSdWJiZXJCYW5kQW5pbWF0aW5nU3RhdGUoKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaApp
bmRleCA3OGI5M2IwMWI5NDhkYThjMTUzOTVjNTIzM2M3YmU0ODY5ZWJhMTVjLi43YzM3MDMxMjNi
YTZkNGM2ZTM3NWFhNmU1NDdlMDU3NDdkZGVhM2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgKQEAgLTEwMCw4ICsxMDAs
OCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUnViYmVyQmFuZE9uU2lkZShC
b3hTaWRlKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFN0YXJ0UnViYmVyQmFu
ZFNuYXBBbmltYXRpb24oKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcFJ1YmJlcmJhbmRT
bmFwQW5pbWF0aW9uKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHdpbGxTdGFydFJ1YmJlckJhbmRB
bmltYXRpb24oKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcFJ1YmJlckJhbmRBbmltYXRp
b24oKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBydWJiZXJCYW5kaW5nU3RhdGVDaGFuZ2VkKGJv
b2wpIHsgfQogI2VuZGlmCkBAIC0xNzQsMTMgKzE3NCwxMyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0
dXJucyB0cnVlIGlmIGhhbmRsZWQuCiAgICAgYm9vbCBwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9s
bFNuYXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAKLSAgICB2b2lkIHN0b3BSdWJiZXJi
YW5kaW5nKCk7CisgICAgdm9pZCBzdG9wUnViYmVyQmFuZGluZygpOwogICAgIGJvb2wgaXNSdWJi
ZXJCYW5kSW5Qcm9ncmVzcygpIGNvbnN0OwogICAgIFJlY3RFZGdlczxib29sPiBydWJiZXJCYW5k
aW5nRWRnZXMoKSBjb25zdCB7IHJldHVybiBtX3J1YmJlckJhbmRpbmdFZGdlczsgfQogI2VuZGlm
CiAKIHByaXZhdGU6Ci0gICAgdm9pZCB1cGRhdGVSdWJiZXJCYW5kQW5pbWF0aW5nU3RhdGUoTW9u
b3RvbmljVGltZSk7CisgICAgdm9pZCB1cGRhdGVSdWJiZXJCYW5kQW5pbWF0aW5nU3RhdGUoKTsK
ICAgICB2b2lkIHVwZGF0ZUtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0aW5nU3RhdGUoTW9ub3Rvbmlj
VGltZSk7CiAKICAgICB2b2lkIHNldElzQW5pbWF0aW5nUnViYmVyQmFuZChib29sKTsKQEAgLTIw
MCw5ICsyMDAsMTMgQEAgcHJpdmF0ZToKICAgICBib29sIG1vZGlmeVNjcm9sbERlbHRhRm9yU3Ry
ZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBGbG9hdFNpemUmLCBib29sIGlzSG9y
aXpvbnRhbGx5U3RyZXRjaGVkLCBib29sIGlzVmVydGljYWxseVN0cmV0Y2hlZCk7CiAgICAgYm9v
bCBhcHBseVNjcm9sbERlbHRhV2l0aFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
JiwgRmxvYXRTaXplLCBib29sIGlzSG9yaXpvbnRhbGx5U3RyZXRjaGVkLCBib29sIGlzVmVydGlj
YWxseVN0cmV0Y2hlZCk7CiAKLSAgICB2b2lkIHN0YXJ0UnViYmVyYmFuZEFuaW1hdGlvbklmTmVj
ZXNzYXJ5KCk7Ci0gICAgdm9pZCBzdGFydFJ1YmJlcmJhbmRBbmltYXRpb24oKTsKLSAgICB2b2lk
IHN0b3BSdWJiZXJiYW5kQW5pbWF0aW9uKCk7CisgICAgdm9pZCBzdGFydFJ1YmJlckJhbmRBbmlt
YXRpb25JZk5lY2Vzc2FyeSgpOworCisgICAgdm9pZCBzdGFydFJ1YmJlckJhbmRBbmltYXRpb24o
Y29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0T2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxW
ZWxvY2l0eSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsT3ZlcnNjcm9sbCk7CisgICAgdm9pZCBz
dG9wUnViYmVyQmFuZEFuaW1hdGlvbigpOworCisgICAgdm9pZCB3aWxsU3RhcnRSdWJiZXJCYW5k
QW5pbWF0aW9uKCk7CisgICAgdm9pZCBkaWRTdG9wUnViYmVyQmFuZEFuaW1hdGlvbigpOwogCiAg
ICAgYm9vbCBzaG91bGRSdWJiZXJCYW5kT25TaWRlKEJveFNpZGUpIGNvbnN0OwogICAgIGJvb2wg
aXNSdWJiZXJCYW5kSW5Qcm9ncmVzc0ludGVybmFsKCkgY29uc3Q7CkBAIC0yNTQsMTAgKzI1OCw2
IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyVGltZXI+IG1fc3RhdGVsZXNzU25hcFRyYW5zaXRpb25UaW1lcjsKIAogI2lmIEhBVkUoUlVC
QkVSX0JBTkRJTkcpCi0gICAgLy8gUnViYmVyIGJhbmQgc3RhdGUuCi0gICAgTW9ub3RvbmljVGlt
ZSBtX3N0YXJ0VGltZTsKLSAgICBGbG9hdFNpemUgbV9zdGFydFN0cmV0Y2g7Ci0gICAgRmxvYXRT
aXplIG1fb3JpZ1ZlbG9jaXR5OwogICAgIFJlY3RFZGdlczxib29sPiBtX3J1YmJlckJhbmRpbmdF
ZGdlczsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2Nyb2xsQW5pbWF0aW9uUnViYmVyQmFuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Njcm9sbEFuaW1hdGlvblJ1YmJlckJhbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZWY3MTM5Nzk5MDYzZmU0
MmJhZmE3ZWJmNDBhNjI1MDg0ZjljNGYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdGlvblJ1YmJlckJhbmQuaApAQCAtMCwwICsxLDU4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0
aW9uLmgiCisKKyNpZiBIQVZFKFJVQkJFUl9CQU5ESU5HKQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFNjcm9sbEFuaW1hdGlvblJ1YmJlckJhbmQgZmluYWw6IHB1YmxpYyBTY3JvbGxB
bmltYXRpb24geworcHVibGljOgorICAgIFNjcm9sbEFuaW1hdGlvblJ1YmJlckJhbmQoU2Nyb2xs
QW5pbWF0aW9uQ2xpZW50Jik7CisgICAgdmlydHVhbCB+U2Nyb2xsQW5pbWF0aW9uUnViYmVyQmFu
ZCgpOworCisgICAgLy8gdGFyZ2V0T2Zmc2V0IGlzIHRoZSBzY3JvbGwgb2Zmc2V0IHdoZW4gdGhl
IGFuaW1hdGlvbiBoYXMgZmluaXNoZWQgKGkuZS4gc2Nyb2xsZWQgdG8gYW4gZWRnZSkuCisgICAg
Ym9vbCBzdGFydFJ1YmJlckJhbmRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0T2Zm
c2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSwgY29uc3QgRmxvYXRTaXplJiBp
bml0aWFsT3ZlcnNjcm9sbCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCB1cGRhdGVTY3JvbGxFeHRl
bnRzKCkgZmluYWw7CisgICAgdm9pZCBzZXJ2aWNlQW5pbWF0aW9uKE1vbm90b25pY1RpbWUpIGZp
bmFsOworICAgIGJvb2wgcmV0YXJnZXRBY3RpdmVBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYp
IGZpbmFsOworICAgIFNjcm9sbENsYW1waW5nIGNsYW1waW5nKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gU2Nyb2xsQ2xhbXBpbmc6OlVuY2xhbXBlZDsgfQorCisgICAgYm9vbCBhbmltYXRlU2Nyb2xs
KE1vbm90b25pY1RpbWUpOworCisgICAgRmxvYXRQb2ludCBtX3RhcmdldE9mZnNldDsKKyAgICBG
bG9hdFNpemUgbV9pbml0aWFsVmVsb2NpdHk7CisgICAgRmxvYXRTaXplIG1faW5pdGlhbE92ZXJz
Y3JvbGw7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfU0NST0xMX0FOSU1BVElPTihXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25SdWJiZXJCYW5k
LCB0eXBlKCkgPT0gV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uOjpUeXBlOjpSdWJiZXJCYW5kKQor
CisjZW5kaWYgLy8gSEFWRShSVUJCRVJfQkFORElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRpb25SdWJiZXJCYW5kLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdGlvblJ1YmJlckJhbmQubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjdlZDFmMzM2Y2M5MjJmNzM5MTI4YjFiYjk0NmFhYmVjMjY1NWI5ZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRpb25SdWJiZXJC
YW5kLm1tCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5o
IgorI2ltcG9ydCAiU2Nyb2xsQW5pbWF0aW9uUnViYmVyQmFuZC5oIgorCisjaWYgSEFWRShSVUJC
RVJfQkFORElORykKKworI2ltcG9ydCAiRmxvYXRQb2ludC5oIgorI2ltcG9ydCAiR2VvbWV0cnlV
dGlsaXRpZXMuaCIKKyNpbXBvcnQgPHBhbC9zcGkvbWFjL05TU2Nyb2xsVmlld1NQSS5oPgorCitz
dGF0aWMgZmxvYXQgZWxhc3RpY0RlbHRhRm9yVGltZURlbHRhKGZsb2F0IGluaXRpYWxQb3NpdGlv
biwgZmxvYXQgaW5pdGlhbFZlbG9jaXR5LCBTZWNvbmRzIGVsYXBzZWRUaW1lKQoreworICAgIHJl
dHVybiBfTlNFbGFzdGljRGVsdGFGb3JUaW1lRGVsdGEoaW5pdGlhbFBvc2l0aW9uLCBpbml0aWFs
VmVsb2NpdHksIGVsYXBzZWRUaW1lLnNlY29uZHMoKSk7Cit9CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RhdGljIGlubGluZSBmbG9hdCByb3VuZFRvd2FyZFplcm8oZmxvYXQgbnVtKQorewor
ICAgIHJldHVybiBudW0gPiAwID8gY2VpbGYobnVtIC0gMC41ZikgOiBmbG9vcmYobnVtICsgMC41
Zik7Cit9CisKK3N0YXRpYyBpbmxpbmUgZmxvYXQgcm91bmRUb0RldmljZVBpeGVsVG93YXJkWmVy
byhmbG9hdCBudW0pCit7CisgICAgZmxvYXQgcm91bmRlZE51bSA9IHJvdW5kZihudW0pOworICAg
IGlmIChmYWJzKG51bSAtIHJvdW5kZWROdW0pIDwgMC4xMjUpCisgICAgICAgIG51bSA9IHJvdW5k
ZWROdW07CisKKyAgICByZXR1cm4gcm91bmRUb3dhcmRaZXJvKG51bSk7Cit9CisKK1Njcm9sbEFu
aW1hdGlvblJ1YmJlckJhbmQ6OlNjcm9sbEFuaW1hdGlvblJ1YmJlckJhbmQoU2Nyb2xsQW5pbWF0
aW9uQ2xpZW50JiBjbGllbnQpCisgICAgOiBTY3JvbGxBbmltYXRpb24oVHlwZTo6UnViYmVyQmFu
ZCwgY2xpZW50KQoreworfQorCitTY3JvbGxBbmltYXRpb25SdWJiZXJCYW5kOjp+U2Nyb2xsQW5p
bWF0aW9uUnViYmVyQmFuZCgpID0gZGVmYXVsdDsKKworYm9vbCBTY3JvbGxBbmltYXRpb25SdWJi
ZXJCYW5kOjpzdGFydFJ1YmJlckJhbmRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0
T2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSwgY29uc3QgRmxvYXRTaXpl
JiBpbml0aWFsT3ZlcnNjcm9sbCkKK3sKKyAgICBtX3RhcmdldE9mZnNldCA9IHRhcmdldE9mZnNl
dDsKKyAgICBtX2luaXRpYWxWZWxvY2l0eSA9IGluaXRpYWxWZWxvY2l0eTsKKyAgICBtX2luaXRp
YWxPdmVyc2Nyb2xsID0gaW5pdGlhbE92ZXJzY3JvbGw7CisKKyAgICBkaWRTdGFydChNb25vdG9u
aWNUaW1lOjpub3coKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU2Nyb2xsQW5pbWF0
aW9uUnViYmVyQmFuZDo6cmV0YXJnZXRBY3RpdmVBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYp
Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFNjcm9sbEFuaW1hdGlvblJ1YmJlckJh
bmQ6OnVwZGF0ZVNjcm9sbEV4dGVudHMoKQoreworICAgIC8vIEZJWE1FOiBJZiB3ZSdyZSBydWJi
ZXJiYW5kaW5nIGF0IHRoZSBib3R0b20gYW5kIHRoZSBjb250ZW50IHNpemUgY2hhbmdlcyB3ZSBz
aG91bGQgZml4IHVwIG1fdGFyZ2V0T2Zmc2V0LgorfQorCit2b2lkIFNjcm9sbEFuaW1hdGlvblJ1
YmJlckJhbmQ6OnNlcnZpY2VBbmltYXRpb24oTW9ub3RvbmljVGltZSBjdXJyZW50VGltZSkKK3sK
KyAgICBhdXRvIGVsYXBzZWRUaW1lID0gdGltZVNpbmNlU3RhcnQoY3VycmVudFRpbWUpOworCisg
ICAgLy8gVGhpcyBpcyB2ZXJ5IHNpbWlsYXIgdG8gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
IGxvZ2ljLCBidXQgSSB3YXNuJ3QgYWJsZSB0byBnZXQgdG8gU2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yIHRvCisgICAgLy8gZ2l2ZSB0aGUgY29ycmVjdCBiZWhhdmlvciB3aGVuIHN0YXJ0aW5n
IGEgcnViYmVyYmFuZCB3aXRoIGluaXRpYWwgdmVsb2NpdHkgKGkuZS4gYm91bmNpbmcpLgorCisg
ICAgYXV0byBydWJiZXJCYW5kT2Zmc2V0ID0gRmxvYXRTaXplIHsKKyAgICAgICAgcm91bmRUb0Rl
dmljZVBpeGVsVG93YXJkWmVybyhlbGFzdGljRGVsdGFGb3JUaW1lRGVsdGEobV9pbml0aWFsT3Zl
cnNjcm9sbC53aWR0aCgpLCAtbV9pbml0aWFsVmVsb2NpdHkud2lkdGgoKSwgZWxhcHNlZFRpbWUp
KSwKKyAgICAgICAgcm91bmRUb0RldmljZVBpeGVsVG93YXJkWmVybyhlbGFzdGljRGVsdGFGb3JU
aW1lRGVsdGEobV9pbml0aWFsT3ZlcnNjcm9sbC5oZWlnaHQoKSwgLW1faW5pdGlhbFZlbG9jaXR5
LmhlaWdodCgpLCBlbGFwc2VkVGltZSkpCisgICAgfTsKKworICAgIGJvb2wgYW5pbWF0aW9uQ29t
cGxldGUgPSBydWJiZXJCYW5kT2Zmc2V0LmlzWmVybygpOworICAgIG1fY3VycmVudE9mZnNldCA9
IG1fdGFyZ2V0T2Zmc2V0ICsgcnViYmVyQmFuZE9mZnNldDsKKworICAgIG1fY2xpZW50LnNjcm9s
bEFuaW1hdGlvbkRpZFVwZGF0ZSgqdGhpcywgbV9jdXJyZW50T2Zmc2V0KTsKKworICAgIGlmIChh
bmltYXRpb25Db21wbGV0ZSkKKyAgICAgICAgZGlkRW5kKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEhBVkUoUlVCQkVSX0JBTkRJTkcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIu
bW0KaW5kZXggYjg3YzJlMTc2Zjg2MTQxNDhkNDY0ZmQ0MWI3ZjE1Y2UzYmIxY2VhMC4uN2E3ZTQ3
ZjMyNjdlZmM4OTQ0NWFjZDhhM2M4NTZlZDJjMTdjOGMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5tbQpA
QCAtMjgsNiArMjgsNyBAQAogCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJQbGF0Zm9y
bVdoZWVsRXZlbnQuaCIKKyNpbXBvcnQgIlNjcm9sbEFuaW1hdGlvblJ1YmJlckJhbmQuaCIKICNp
bXBvcnQgIlNjcm9sbEV4dGVudHMuaCIKICNpbXBvcnQgIldoZWVsRXZlbnRUZXN0TW9uaXRvci5o
IgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNTY3JvbGxWaWV3U1BJLmg+CkBAIC00MywxMSArNDQs
NiBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyBzY3JvbGxWZWxvY2l0eVplcm9pbmdUaW1lb3V0ID0g
MTAwX21zOwogc3RhdGljIGNvbnN0IGZsb2F0IHJ1YmJlcmJhbmREaXJlY3Rpb25Mb2NrU3RyZXRj
aFJhdGlvID0gMTsKIHN0YXRpYyBjb25zdCBmbG9hdCBydWJiZXJiYW5kTWluaW11bVJlcXVpcmVk
RGVsdGFCZWZvcmVTdHJldGNoID0gMTA7CiAKLXN0YXRpYyBmbG9hdCBlbGFzdGljRGVsdGFGb3JU
aW1lRGVsdGEoZmxvYXQgaW5pdGlhbFBvc2l0aW9uLCBmbG9hdCBpbml0aWFsVmVsb2NpdHksIFNl
Y29uZHMgZWxhcHNlZFRpbWUpCi17Ci0gICAgcmV0dXJuIF9OU0VsYXN0aWNEZWx0YUZvclRpbWVE
ZWx0YShpbml0aWFsUG9zaXRpb24sIGluaXRpYWxWZWxvY2l0eSwgZWxhcHNlZFRpbWUuc2Vjb25k
cygpKTsKLX0KLQogc3RhdGljIGZsb2F0IGVsYXN0aWNEZWx0YUZvclJlYm91bmREZWx0YShmbG9h
dCBkZWx0YSkKIHsKICAgICByZXR1cm4gX05TRWxhc3RpY0RlbHRhRm9yUmVib3VuZERlbHRhKGRl
bHRhKTsKQEAgLTE0MiwxNCArMTM4LDE0IEBAIGJvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xs
ZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlCiAgICAg
ICAgIG1fc3RyZXRjaFNjcm9sbEZvcmNlLnNldEhlaWdodChyZWJvdW5kRGVsdGFGb3JFbGFzdGlj
RGVsdGEoc3RyZXRjaEFtb3VudC5oZWlnaHQoKSkpOwogICAgICAgICBtX3VuYXBwbGllZE92ZXJz
Y3JvbGxEZWx0YSA9IHsgfTsKIAotICAgICAgICBzdG9wUnViYmVyYmFuZEFuaW1hdGlvbigpOwor
ICAgICAgICBzdG9wUnViYmVyQmFuZEFuaW1hdGlvbigpOwogICAgICAgICB1cGRhdGVSdWJiZXJC
YW5kaW5nU3RhdGUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgaWYgKHdo
ZWVsRXZlbnQucGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6RW5kZWQpIHsKICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgdHJpZ2dlcnMgdGhlIHJ1YmJlcmJhbmQgdGltZXIgZXZlbiB3
aGVuIHdlIGRvbid0IHN0YXJ0IHJ1YmJlcmJhbmRpbmcuCi0gICAgICAgIHN0YXJ0UnViYmVyYmFu
ZEFuaW1hdGlvbklmTmVjZXNzYXJ5KCk7CisgICAgICAgIHN0YXJ0UnViYmVyQmFuZEFuaW1hdGlv
bklmTmVjZXNzYXJ5KCk7CiAgICAgICAgIHVwZGF0ZVJ1YmJlckJhbmRpbmdTdGF0ZSgpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yMTMsNyArMjA5LDcgQEAgYm9vbCBTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIHdoZWUKICAgICAgICAgICAgICAgICBpZiAoY2FuU3RhcnRBbmltYXRpb24gJiYgbV9s
YXN0TW9tZW50dW1TY3JvbGxUaW1lc3RhbXApIHsKICAgICAgICAgICAgICAgICAgICAgbV9pZ25v
cmVNb21lbnR1bVNjcm9sbHMgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBtX21vbWVudHVt
U2Nyb2xsSW5Qcm9ncmVzcyA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBzdGFydFJ1YmJl
cmJhbmRBbmltYXRpb25JZk5lY2Vzc2FyeSgpOworICAgICAgICAgICAgICAgICAgICBzdGFydFJ1
YmJlckJhbmRBbmltYXRpb25JZk5lY2Vzc2FyeSgpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKQEAgLTM0NiwyMSArMzQyLDcgQEAgRmxvYXRTaXpl
IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0
aWNhbChjb25zdCBQbGEKICAgICByZXR1cm4gZGVsdGFBbGlnbmVkVG9Eb21pbmFudEF4aXMod2hl
ZWxFdmVudC5kZWx0YSgpKTsKIH0KIAotc3RhdGljIGlubGluZSBmbG9hdCByb3VuZFRvd2FyZFpl
cm8oZmxvYXQgbnVtKQotewotICAgIHJldHVybiBudW0gPiAwID8gY2VpbGYobnVtIC0gMC41Zikg
OiBmbG9vcmYobnVtICsgMC41Zik7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgZmxvYXQgcm91bmRUb0Rl
dmljZVBpeGVsVG93YXJkWmVybyhmbG9hdCBudW0pCi17Ci0gICAgZmxvYXQgcm91bmRlZE51bSA9
IHJvdW5kZihudW0pOwotICAgIGlmIChmYWJzKG51bSAtIHJvdW5kZWROdW0pIDwgMC4xMjUpCi0g
ICAgICAgIG51bSA9IHJvdW5kZWROdW07Ci0KLSAgICByZXR1cm4gcm91bmRUb3dhcmRaZXJvKG51
bSk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnVwZGF0ZVJ1YmJlckJh
bmRBbmltYXRpbmdTdGF0ZShNb25vdG9uaWNUaW1lIGN1cnJlbnRUaW1lKQordm9pZCBTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlcjo6dXBkYXRlUnViYmVyQmFuZEFuaW1hdGluZ1N0YXRlKCkKIHsK
ICAgICBpZiAoIW1faXNBbmltYXRpbmdSdWJiZXJCYW5kKQogICAgICAgICByZXR1cm47CkBAIC0z
NjgsNjAgKzM1MCwxMCBAQCB2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp1cGRhdGVS
dWJiZXJCYW5kQW5pbWF0aW5nU3RhdGUoTW9ub3RvbmljVGltZSBjdQogICAgIGlmIChpc1Njcm9s
bFNuYXBJblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpZiAoIW1fbW9t
ZW50dW1TY3JvbGxJblByb2dyZXNzIHx8IG1faWdub3JlTW9tZW50dW1TY3JvbGxzKSB7Ci0gICAg
ICAgIGF1dG8gdGltZURlbHRhID0gY3VycmVudFRpbWUgLSBtX3N0YXJ0VGltZTsKLQotICAgICAg
ICBpZiAobV9zdGFydFN0cmV0Y2guaXNaZXJvKCkpIHsKLSAgICAgICAgICAgIG1fc3RhcnRTdHJl
dGNoID0gbV9jbGllbnQuc3RyZXRjaEFtb3VudCgpOwotICAgICAgICAgICAgaWYgKG1fc3RhcnRT
dHJldGNoLmlzWmVybygpKSB7Ci0gICAgICAgICAgICAgICAgc3RvcFJ1YmJlcmJhbmRpbmcoKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG1f
b3JpZ1ZlbG9jaXR5ID0gbV9tb21lbnR1bVZlbG9jaXR5OwotCi0gICAgICAgICAgICAvLyBKdXN0
IGxpa2Ugbm9ybWFsIHNjcm9sbGluZywgcHJlZmVyIHZlcnRpY2FsIHJ1YmJlcmJhbmRpbmcKLSAg
ICAgICAgICAgIGlmIChmYWJzZihtX29yaWdWZWxvY2l0eS5oZWlnaHQoKSkgPj0gZmFic2YobV9v
cmlnVmVsb2NpdHkud2lkdGgoKSkpCi0gICAgICAgICAgICAgICAgbV9vcmlnVmVsb2NpdHkuc2V0
V2lkdGgoMCk7Ci0KLSAgICAgICAgICAgIC8vIERvbid0IHJ1YmJlci1iYW5kIGhvcml6b250YWxs
eSBpZiBpdCdzIG5vdCBwb3NzaWJsZSB0byBzY3JvbGwgaG9yaXpvbnRhbGx5Ci0gICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LmFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKSkKLSAgICAgICAgICAg
ICAgICBtX29yaWdWZWxvY2l0eS5zZXRXaWR0aCgwKTsKLQotICAgICAgICAgICAgLy8gRG9uJ3Qg
cnViYmVyLWJhbmQgdmVydGljYWxseSBpZiBpdCdzIG5vdCBwb3NzaWJsZSB0byBzY3JvbGwgdmVy
dGljYWxseQotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5hbGxvd3NWZXJ0aWNhbFNjcm9sbGlu
ZygpKQotICAgICAgICAgICAgICAgIG1fb3JpZ1ZlbG9jaXR5LnNldEhlaWdodCgwKTsKLQotICAg
ICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbEFuaW1hdGlvbnMsIHN0cmVhbSA8PCAiU2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnVwZGF0ZVJ1YmJlckJhbmRBbmltYXRpbmdTdGF0ZSgp
IC0gc3RhcnRpbmcgcnViYmJlcmJhbmQgd2l0aCBtX29yaWdWZWxvY2l0eSIgPDwgbV9vcmlnVmVs
b2NpdHkgPDwgIiBtX3N0YXJ0U3RyZXRjaCAiIDw8IG1fc3RhcnRTdHJldGNoKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGF1dG8gcnViYmVyQmFuZERlbHRhID0gRmxvYXRTaXplIHsKLSAgICAgICAg
ICAgIHJvdW5kVG9EZXZpY2VQaXhlbFRvd2FyZFplcm8oZWxhc3RpY0RlbHRhRm9yVGltZURlbHRh
KG1fc3RhcnRTdHJldGNoLndpZHRoKCksIC1tX29yaWdWZWxvY2l0eS53aWR0aCgpLCB0aW1lRGVs
dGEpKSwKLSAgICAgICAgICAgIHJvdW5kVG9EZXZpY2VQaXhlbFRvd2FyZFplcm8oZWxhc3RpY0Rl
bHRhRm9yVGltZURlbHRhKG1fc3RhcnRTdHJldGNoLmhlaWdodCgpLCAtbV9vcmlnVmVsb2NpdHku
aGVpZ2h0KCksIHRpbWVEZWx0YSkpCi0gICAgICAgIH07Ci0KLSAgICAgICAgaWYgKGZhYnMocnVi
YmVyQmFuZERlbHRhLndpZHRoKCkpID49IDEgfHwgZmFicyhydWJiZXJCYW5kRGVsdGEuaGVpZ2h0
KCkpID49IDEpIHsKLSAgICAgICAgICAgIGF1dG8gc3RyZXRjaERlbHRhID0gcnViYmVyQmFuZERl
bHRhIC0gRmxvYXRTaXplKG1fY2xpZW50LnN0cmV0Y2hBbW91bnQoKSk7Ci0KLSAgICAgICAgICAg
IExPR19XSVRIX1NUUkVBTShTY3JvbGxBbmltYXRpb25zLCBzdHJlYW0gPDwgIlNjcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyOjp1cGRhdGVSdWJiZXJCYW5kQW5pbWF0aW5nU3RhdGUoKSAtIHJ1YmJl
ckJhbmREZWx0YSAiIDw8IHJ1YmJlckJhbmREZWx0YSA8PCAiIHN0cmV0Y2hlZCAiIDw8IG1fY2xp
ZW50LnN0cmV0Y2hBbW91bnQoKSA8PCAiIG1vdmluZyBieSAiIDw8IHN0cmV0Y2hEZWx0YSk7Ci0K
LSAgICAgICAgICAgIG1fY2xpZW50LmltbWVkaWF0ZVNjcm9sbEJ5KHN0cmV0Y2hEZWx0YSwgU2Ny
b2xsQ2xhbXBpbmc6OlVuY2xhbXBlZCk7Ci0KLSAgICAgICAgICAgIEZsb2F0U2l6ZSBuZXdTdHJl
dGNoID0gbV9jbGllbnQuc3RyZXRjaEFtb3VudCgpOwotCi0gICAgICAgICAgICBtX3N0cmV0Y2hT
Y3JvbGxGb3JjZS5zZXRXaWR0aChyZWJvdW5kRGVsdGFGb3JFbGFzdGljRGVsdGEobmV3U3RyZXRj
aC53aWR0aCgpKSk7Ci0gICAgICAgICAgICBtX3N0cmV0Y2hTY3JvbGxGb3JjZS5zZXRIZWlnaHQo
cmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRhKG5ld1N0cmV0Y2guaGVpZ2h0KCkpKTsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxBbmltYXRpb25z
LCBzdHJlYW0gPDwgIlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp1cGRhdGVSdWJiZXJCYW5k
QW5pbWF0aW5nU3RhdGUoKSAtIHJ1YmJlciBiYW5kIGNvbXBsZXRlIik7Ci0gICAgICAgICAgICBt
X2NsaWVudC5hZGp1c3RTY3JvbGxQb3NpdGlvblRvQm91bmRzSWZOZWNlc3NhcnkoKTsKLSAgICAg
ICAgICAgIHN0b3BSdWJiZXJiYW5kaW5nKCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgeworICAg
IGlmIChtX21vbWVudHVtU2Nyb2xsSW5Qcm9ncmVzcyAmJiAhbV9pZ25vcmVNb21lbnR1bVNjcm9s
bHMpIHsKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbEFuaW1hdGlvbnMsIHN0cmVhbSA8
PCAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnVwZGF0ZVJ1YmJlckJhbmRBbmltYXRpbmdT
dGF0ZSgpIC0gbm90IGFuaW1hdGluZywgbW9tZW50dW1TY3JvbGxJblByb2dyZXNzICIgPDwgbV9t
b21lbnR1bVNjcm9sbEluUHJvZ3Jlc3MgPDwgIiBpZ25vcmVNb21lbnR1bVNjcm9sbHMgIiA8PCBt
X2lnbm9yZU1vbWVudHVtU2Nyb2xscyk7Ci0gICAgICAgIG1fc3RhcnRUaW1lID0gY3VycmVudFRp
bWU7Ci0gICAgICAgIG1fc3RhcnRTdHJldGNoID0geyB9OwogICAgICAgICBpZiAoIWlzUnViYmVy
QmFuZEluUHJvZ3Jlc3NJbnRlcm5hbCgpKQotICAgICAgICAgICAgc3RvcFJ1YmJlcmJhbmRBbmlt
YXRpb24oKTsKKyAgICAgICAgICAgIHN0b3BSdWJiZXJCYW5kQW5pbWF0aW9uKCk7CiAgICAgfQog
CiAgICAgdXBkYXRlUnViYmVyQmFuZGluZ1N0YXRlKCk7CkBAIC00NTMsMzUgKzM4NSw0NSBAQCBi
b29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjppc1Njcm9sbFNuYXBJblByb2dyZXNzKCkg
Y29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRy
b2xsZXI6OnN0b3BSdWJiZXJiYW5kaW5nKCkKK3ZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xs
ZXI6OnN0b3BSdWJiZXJCYW5kaW5nKCkKIHsKLSAgICBzdG9wUnViYmVyYmFuZEFuaW1hdGlvbigp
OwotICAgIG1fc3RyZXRjaFNjcm9sbEZvcmNlID0geyB9OwotICAgIG1fc3RhcnRUaW1lID0geyB9
OwotICAgIG1fc3RhcnRTdHJldGNoID0geyB9OwotICAgIG1fb3JpZ1ZlbG9jaXR5ID0geyB9Owor
ICAgIHN0b3BSdWJiZXJCYW5kQW5pbWF0aW9uKCk7CiAgICAgdXBkYXRlUnViYmVyQmFuZGluZ1N0
YXRlKCk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0YXJ0UnViYmVy
YmFuZEFuaW1hdGlvbigpCit2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdGFydFJ1
YmJlckJhbmRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0T2Zmc2V0LCBjb25zdCBG
bG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsT3ZlcnNj
cm9sbCkKIHsKLSAgICBtX2NsaWVudC53aWxsU3RhcnRSdWJiZXJCYW5kU25hcEFuaW1hdGlvbigp
OworICAgIGlmIChtX2N1cnJlbnRBbmltYXRpb24pCisgICAgICAgIG1fY3VycmVudEFuaW1hdGlv
bi0+c3RvcCgpOwogCi0gICAgc2V0SXNBbmltYXRpbmdSdWJiZXJCYW5kKHRydWUpOwotCi0gICAg
bV9jbGllbnQuZGVmZXJXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25Gb3JSZWFzb24ocmVpbnRlcnBy
ZXRfY2FzdDxXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllcj4o
dGhpcyksIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6UnViYmVyYmFuZEluUHJvZ3Jlc3MpOworICAg
IG1fY3VycmVudEFuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uUnViYmVyQmFu
ZD4oKnRoaXMpOworICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxBbmltYXRpb25zLCBzdHJlYW0g
PDwgIlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdGFydFJ1YmJlckJhbmRBbmltYXRpb24o
KSAtIHN0YXJ0aW5nIHJ1YmJiZXJiYW5kIHdpdGggdGFyZ2V0T2Zmc2V0ICIgPDwgdGFyZ2V0T2Zm
c2V0IDw8ICIgaW5pdGlhbFZlbG9jaXR5ICIgPDwgaW5pdGlhbFZlbG9jaXR5IDw8ICIgaW5pdGlh
bE92ZXJzY3JvbGwgIiA8PCBpbml0aWFsT3ZlcnNjcm9sbCk7CisgICAgZG93bmNhc3Q8U2Nyb2xs
QW5pbWF0aW9uUnViYmVyQmFuZD4oKm1fY3VycmVudEFuaW1hdGlvbikuc3RhcnRSdWJiZXJCYW5k
QW5pbWF0aW9uKHRhcmdldE9mZnNldCwgaW5pdGlhbFZlbG9jaXR5LCBpbml0aWFsT3ZlcnNjcm9s
bCk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0b3BSdWJiZXJiYW5k
QW5pbWF0aW9uKCkKK3ZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0b3BSdWJiZXJC
YW5kQW5pbWF0aW9uKCkKIHsKLSAgICBtX2NsaWVudC5kaWRTdG9wUnViYmVyYmFuZFNuYXBBbmlt
YXRpb24oKTsKKyAgICBpZiAobV9pc0FuaW1hdGluZ1J1YmJlckJhbmQpCisgICAgICAgIHN0b3BB
bmltYXRlZFNjcm9sbCgpOwogCi0gICAgc2V0SXNBbmltYXRpbmdSdWJiZXJCYW5kKGZhbHNlKTsK
KyAgICBtX3N0cmV0Y2hTY3JvbGxGb3JjZSA9IHsgfTsKK30KKwordm9pZCBTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlcjo6d2lsbFN0YXJ0UnViYmVyQmFuZEFuaW1hdGlvbigpCit7CisgICAgbV9p
c0FuaW1hdGluZ1J1YmJlckJhbmQgPSB0cnVlOworICAgIG1fY2xpZW50LndpbGxTdGFydFJ1YmJl
ckJhbmRBbmltYXRpb24oKTsKKyAgICBtX2NsaWVudC5kZWZlcldoZWVsRXZlbnRUZXN0Q29tcGxl
dGlvbkZvclJlYXNvbihyZWludGVycHJldF9jYXN0PFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Ny
b2xsYWJsZUFyZWFJZGVudGlmaWVyPih0aGlzKSwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpSdWJi
ZXJiYW5kSW5Qcm9ncmVzcyk7Cit9CiAKK3ZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6
OmRpZFN0b3BSdWJiZXJCYW5kQW5pbWF0aW9uKCkKK3sKKyAgICBtX2lzQW5pbWF0aW5nUnViYmVy
QmFuZCA9IGZhbHNlOworICAgIG1fY2xpZW50LmRpZFN0b3BSdWJiZXJCYW5kQW5pbWF0aW9uKCk7
CiAgICAgbV9jbGllbnQucmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JS
ZWFzb24ocmVpbnRlcnByZXRfY2FzdDxXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVB
cmVhSWRlbnRpZmllcj4odGhpcyksIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6UnViYmVyYmFuZElu
UHJvZ3Jlc3MpOwogfQogCi12b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdGFydFJ1
YmJlcmJhbmRBbmltYXRpb25JZk5lY2Vzc2FyeSgpCit2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyOjpzdGFydFJ1YmJlckJhbmRBbmltYXRpb25JZk5lY2Vzc2FyeSgpCiB7CiAgICAgYXV0
byB0aW1lRGVsdGEgPSBXYWxsVGltZTo6bm93KCkgLSBtX2xhc3RNb21lbnR1bVNjcm9sbFRpbWVz
dGFtcDsKICAgICBpZiAobV9sYXN0TW9tZW50dW1TY3JvbGxUaW1lc3RhbXAgJiYgdGltZURlbHRh
ID49IHNjcm9sbFZlbG9jaXR5WmVyb2luZ1RpbWVvdXQpCkBAIC00OTAsMTEgKzQzMiwzMyBAQCB2
b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdGFydFJ1YmJlcmJhbmRBbmltYXRpb25J
Zk5lY2Vzc2FyeSgpCiAgICAgaWYgKG1faXNBbmltYXRpbmdSdWJiZXJCYW5kKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3N0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotICAgIG1f
c3RhcnRTdHJldGNoID0geyB9OwotICAgIG1fb3JpZ1ZlbG9jaXR5ID0geyB9OworICAgIGF1dG8g
ZXh0ZW50cyA9IG1fY2xpZW50LnNjcm9sbEV4dGVudHMoKTsKKyAgICBhdXRvIHRhcmdldE9mZnNl
dCA9IG1fY2xpZW50LnNjcm9sbE9mZnNldCgpOworICAgIGF1dG8gY29udHJhaW5lZE9mZnNldCA9
IHRhcmdldE9mZnNldC5jb25zdHJhaW5lZEJldHdlZW4oZXh0ZW50cy5taW5pbXVtU2Nyb2xsT2Zm
c2V0KCksIGV4dGVudHMubWF4aW11bVNjcm9sbE9mZnNldCgpKTsKKyAgICBib29sIHdpbGxPdmVy
c2Nyb2xsID0gdGFyZ2V0T2Zmc2V0ICE9IGNvbnRyYWluZWRPZmZzZXQ7CisKKyAgICBhdXRvIHN0
cmV0Y2hBbW91bnQgPSBtX2NsaWVudC5zdHJldGNoQW1vdW50KCk7CisKKyAgICBMT0dfV0lUSF9T
VFJFQU0oU2Nyb2xsQW5pbWF0aW9ucywgc3RyZWFtIDw8ICJTY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlcjo6c3RhcnRSdWJiZXJCYW5kQW5pbWF0aW9uSWZOZWNlc3NhcnkoKSAtIHJ1YmJlckJhbmRB
bmltYXRpb25SdW5uaW5nICIgPDwgbV9pc0FuaW1hdGluZ1J1YmJlckJhbmQgPDwgIiBzdHJldGNo
QW1vdW50ICIgPDwgc3RyZXRjaEFtb3VudCA8PCAiIHRhcmdldE9mZnNldCAiIDw8IHRhcmdldE9m
ZnNldCk7CisKKyAgICBpZiAoc3RyZXRjaEFtb3VudC5pc1plcm8oKSAmJiAhd2lsbE92ZXJzY3Jv
bGwpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaW5pdGlhbFZlbG9jaXR5ID0gbV9tb21l
bnR1bVZlbG9jaXR5OworCisgICAgLy8gSnVzdCBsaWtlIG5vcm1hbCBzY3JvbGxpbmcsIHByZWZl
ciB2ZXJ0aWNhbCBydWJiZXJiYW5kaW5nCisgICAgaWYgKGZhYnNmKGluaXRpYWxWZWxvY2l0eS5o
ZWlnaHQoKSkgPj0gZmFic2YoaW5pdGlhbFZlbG9jaXR5LndpZHRoKCkpKQorICAgICAgICBpbml0
aWFsVmVsb2NpdHkuc2V0V2lkdGgoMCk7CisKKyAgICAvLyBEb24ndCBydWJiZXItYmFuZCBob3Jp
em9udGFsbHkgaWYgaXQncyBub3QgcG9zc2libGUgdG8gc2Nyb2xsIGhvcml6b250YWxseQorICAg
IGlmICghbV9jbGllbnQuYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpKQorICAgICAgICBpbml0
aWFsVmVsb2NpdHkuc2V0V2lkdGgoMCk7CisKKyAgICAvLyBEb24ndCBydWJiZXItYmFuZCB2ZXJ0
aWNhbGx5IGlmIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHNjcm9sbCB2ZXJ0aWNhbGx5CisgICAgaWYg
KCFtX2NsaWVudC5hbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygpKQorICAgICAgICBpbml0aWFsVmVs
b2NpdHkuc2V0SGVpZ2h0KDApOwogCi0gICAgc3RhcnRSdWJiZXJiYW5kQW5pbWF0aW9uKCk7Cisg
ICAgc3RhcnRSdWJiZXJCYW5kQW5pbWF0aW9uKGNvbnRyYWluZWRPZmZzZXQsIGluaXRpYWxWZWxv
Y2l0eSwgc3RyZXRjaEFtb3VudCk7CiB9CiAKIGJvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xs
ZXI6OnNob3VsZFJ1YmJlckJhbmRPblNpZGUoQm94U2lkZSBzaWRlKSBjb25zdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>